about summary refs log tree commit diff
path: root/pkgs/development/python-modules
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules')
-rw-r--r--pkgs/development/python-modules/3to2/default.nix9
-rw-r--r--pkgs/development/python-modules/a2wsgi/default.nix21
-rw-r--r--pkgs/development/python-modules/aadict/default.nix41
-rw-r--r--pkgs/development/python-modules/aafigure/default.nix7
-rw-r--r--pkgs/development/python-modules/aardwolf/default.nix53
-rw-r--r--pkgs/development/python-modules/abjad/default.nix38
-rw-r--r--pkgs/development/python-modules/about-time/default.nix13
-rw-r--r--pkgs/development/python-modules/absl-py/default.nix25
-rw-r--r--pkgs/development/python-modules/accelerate/default.nix167
-rw-r--r--pkgs/development/python-modules/accessible-pygments/default.nix35
-rw-r--r--pkgs/development/python-modules/accupy/default.nix63
-rw-r--r--pkgs/development/python-modules/acme-tiny/default.nix36
-rw-r--r--pkgs/development/python-modules/acme/default.nix40
-rw-r--r--pkgs/development/python-modules/acoustics/default.nix33
-rw-r--r--pkgs/development/python-modules/acquire/default.nix47
-rw-r--r--pkgs/development/python-modules/actdiag/default.nix39
-rw-r--r--pkgs/development/python-modules/actdiag/fix_test_generate.patch22
-rw-r--r--pkgs/development/python-modules/acunetix/default.nix17
-rw-r--r--pkgs/development/python-modules/adafruit-io/default.nix33
-rw-r--r--pkgs/development/python-modules/adafruit-platformdetect/default.nix25
-rw-r--r--pkgs/development/python-modules/adafruit-pureio/default.nix19
-rw-r--r--pkgs/development/python-modules/adal/default.nix30
-rw-r--r--pkgs/development/python-modules/adax-local/default.nix19
-rw-r--r--pkgs/development/python-modules/adax/default.nix17
-rw-r--r--pkgs/development/python-modules/adb-enhanced/default.nix34
-rw-r--r--pkgs/development/python-modules/adb-homeassistant/default.nix25
-rw-r--r--pkgs/development/python-modules/adb-shell/default.nix36
-rw-r--r--pkgs/development/python-modules/adblock/default.nix62
-rw-r--r--pkgs/development/python-modules/add-trailing-comma/default.nix27
-rw-r--r--pkgs/development/python-modules/addict/default.nix9
-rw-r--r--pkgs/development/python-modules/adext/default.nix39
-rw-r--r--pkgs/development/python-modules/adguardhome/default.nix44
-rw-r--r--pkgs/development/python-modules/adjusttext/default.nix27
-rw-r--r--pkgs/development/python-modules/adlfs/default.nix4
-rw-r--r--pkgs/development/python-modules/advantage-air/default.nix19
-rw-r--r--pkgs/development/python-modules/advocate/default.nix23
-rw-r--r--pkgs/development/python-modules/aeidon/default.nix52
-rw-r--r--pkgs/development/python-modules/aemet-opendata/default.nix37
-rw-r--r--pkgs/development/python-modules/aenum/default.nix57
-rw-r--r--pkgs/development/python-modules/aeppl/default.nix42
-rw-r--r--pkgs/development/python-modules/aerosandbox/default.nix52
-rw-r--r--pkgs/development/python-modules/aesara/default.nix73
-rw-r--r--pkgs/development/python-modules/aesedb/default.nix29
-rw-r--r--pkgs/development/python-modules/aetcd/default.nix27
-rw-r--r--pkgs/development/python-modules/afdko/default.nix114
-rw-r--r--pkgs/development/python-modules/affine/default.nix24
-rw-r--r--pkgs/development/python-modules/afsapi/default.nix31
-rw-r--r--pkgs/development/python-modules/agate-dbf/default.nix41
-rw-r--r--pkgs/development/python-modules/agate-excel/default.nix29
-rw-r--r--pkgs/development/python-modules/agate-sql/default.nix34
-rw-r--r--pkgs/development/python-modules/agate/default.nix57
-rw-r--r--pkgs/development/python-modules/agent-py/default.nix17
-rw-r--r--pkgs/development/python-modules/aggdraw/default.nix27
-rw-r--r--pkgs/development/python-modules/ago/default.nix25
-rw-r--r--pkgs/development/python-modules/ahocorasick-rs/default.nix52
-rw-r--r--pkgs/development/python-modules/aigpy/default.nix32
-rw-r--r--pkgs/development/python-modules/ailment/default.nix6
-rw-r--r--pkgs/development/python-modules/aio-geojson-client/default.nix33
-rw-r--r--pkgs/development/python-modules/aio-geojson-generic-client/default.nix31
-rw-r--r--pkgs/development/python-modules/aio-geojson-geonetnz-quakes/default.nix31
-rw-r--r--pkgs/development/python-modules/aio-geojson-geonetnz-volcano/default.nix35
-rw-r--r--pkgs/development/python-modules/aio-geojson-nsw-rfs-incidents/default.nix31
-rw-r--r--pkgs/development/python-modules/aio-geojson-usgs-earthquakes/default.nix35
-rw-r--r--pkgs/development/python-modules/aio-georss-client/default.nix45
-rw-r--r--pkgs/development/python-modules/aio-georss-gdacs/default.nix39
-rw-r--r--pkgs/development/python-modules/aio-pika/default.nix4
-rw-r--r--pkgs/development/python-modules/aioairq/default.nix42
-rw-r--r--pkgs/development/python-modules/aioairzone-cloud/default.nix6
-rw-r--r--pkgs/development/python-modules/aioairzone/default.nix32
-rw-r--r--pkgs/development/python-modules/aioaladdinconnect/default.nix41
-rw-r--r--pkgs/development/python-modules/aioambient/default.nix45
-rw-r--r--pkgs/development/python-modules/aioamqp/default.nix30
-rw-r--r--pkgs/development/python-modules/aioapcaccess/default.nix21
-rw-r--r--pkgs/development/python-modules/aioapns/default.nix33
-rw-r--r--pkgs/development/python-modules/aioaquacell/default.nix48
-rw-r--r--pkgs/development/python-modules/aioaseko/default.nix41
-rw-r--r--pkgs/development/python-modules/aioautomower/default.nix52
-rw-r--r--pkgs/development/python-modules/aioazuredevops/default.nix79
-rw-r--r--pkgs/development/python-modules/aiobafi6/default.nix27
-rw-r--r--pkgs/development/python-modules/aiobiketrax/default.nix53
-rw-r--r--pkgs/development/python-modules/aioblescan/default.nix19
-rw-r--r--pkgs/development/python-modules/aioboto3/default.nix63
-rw-r--r--pkgs/development/python-modules/aiobotocore/default.nix83
-rw-r--r--pkgs/development/python-modules/aiobroadlink/default.nix19
-rw-r--r--pkgs/development/python-modules/aiocache/default.nix90
-rw-r--r--pkgs/development/python-modules/aiocoap/default.nix109
-rw-r--r--pkgs/development/python-modules/aiocomelit/default.nix31
-rw-r--r--pkgs/development/python-modules/aioconsole/default.nix41
-rw-r--r--pkgs/development/python-modules/aiocontextvars/default.nix25
-rw-r--r--pkgs/development/python-modules/aiocron/default.nix21
-rw-r--r--pkgs/development/python-modules/aiocurrencylayer/default.nix31
-rw-r--r--pkgs/development/python-modules/aiodhcpwatcher/default.nix38
-rw-r--r--pkgs/development/python-modules/aiodns/default.nix32
-rw-r--r--pkgs/development/python-modules/aiodocker/default.nix13
-rw-r--r--pkgs/development/python-modules/aioecowitt/default.nix27
-rw-r--r--pkgs/development/python-modules/aioelectricitymaps/default.nix33
-rw-r--r--pkgs/development/python-modules/aioemonitor/default.nix21
-rw-r--r--pkgs/development/python-modules/aioesphomeapi/default.nix64
-rw-r--r--pkgs/development/python-modules/aioextensions/default.nix15
-rw-r--r--pkgs/development/python-modules/aiofile/default.nix36
-rw-r--r--pkgs/development/python-modules/aiofiles/default.nix27
-rw-r--r--pkgs/development/python-modules/aioflo/default.nix35
-rw-r--r--pkgs/development/python-modules/aioftp/default.nix43
-rw-r--r--pkgs/development/python-modules/aiogithubapi/default.nix54
-rw-r--r--pkgs/development/python-modules/aiogram/default.nix36
-rw-r--r--pkgs/development/python-modules/aioguardian/default.nix41
-rw-r--r--pkgs/development/python-modules/aiohappyeyeballs/default.nix60
-rw-r--r--pkgs/development/python-modules/aioharmony/default.nix15
-rw-r--r--pkgs/development/python-modules/aiohasupervisor/default.nix64
-rw-r--r--pkgs/development/python-modules/aiohomekit/default.nix55
-rw-r--r--pkgs/development/python-modules/aiohttp-apispec/default.nix31
-rw-r--r--pkgs/development/python-modules/aiohttp-basicauth/default.nix19
-rw-r--r--pkgs/development/python-modules/aiohttp-client-cache/default.nix90
-rw-r--r--pkgs/development/python-modules/aiohttp-cors/default.nix12
-rw-r--r--pkgs/development/python-modules/aiohttp-fast-url-dispatcher/default.nix54
-rw-r--r--pkgs/development/python-modules/aiohttp-fast-zlib/default.nix48
-rw-r--r--pkgs/development/python-modules/aiohttp-jinja2/default.nix38
-rw-r--r--pkgs/development/python-modules/aiohttp-middlewares/default.nix54
-rw-r--r--pkgs/development/python-modules/aiohttp-oauthlib/default.nix19
-rw-r--r--pkgs/development/python-modules/aiohttp-openmetrics/default.nix26
-rw-r--r--pkgs/development/python-modules/aiohttp-remotes/default.nix42
-rw-r--r--pkgs/development/python-modules/aiohttp-retry/default.nix27
-rw-r--r--pkgs/development/python-modules/aiohttp-session/default.nix54
-rw-r--r--pkgs/development/python-modules/aiohttp-socks/default.nix41
-rw-r--r--pkgs/development/python-modules/aiohttp-sse-client2/default.nix57
-rw-r--r--pkgs/development/python-modules/aiohttp-swagger/default.nix26
-rw-r--r--pkgs/development/python-modules/aiohttp-wsgi/default.nix21
-rw-r--r--pkgs/development/python-modules/aiohttp-zlib-ng/default.nix33
-rw-r--r--pkgs/development/python-modules/aiohttp/default.nix146
-rw-r--r--pkgs/development/python-modules/aiohue/default.nix40
-rw-r--r--pkgs/development/python-modules/aiohwenergy/default.nix20
-rw-r--r--pkgs/development/python-modules/aioimaplib/default.nix56
-rw-r--r--pkgs/development/python-modules/aioinflux/default.nix24
-rw-r--r--pkgs/development/python-modules/aioitertools/default.nix47
-rw-r--r--pkgs/development/python-modules/aiojellyfin/default.nix53
-rw-r--r--pkgs/development/python-modules/aiojobs/default.nix44
-rw-r--r--pkgs/development/python-modules/aiokafka/default.nix71
-rw-r--r--pkgs/development/python-modules/aiokef/default.nix19
-rw-r--r--pkgs/development/python-modules/aiolifx-connection/default.nix19
-rw-r--r--pkgs/development/python-modules/aiolifx-effects/default.nix19
-rw-r--r--pkgs/development/python-modules/aiolifx-themes/default.nix14
-rw-r--r--pkgs/development/python-modules/aiolifx/default.nix8
-rw-r--r--pkgs/development/python-modules/aiolimiter/default.nix31
-rw-r--r--pkgs/development/python-modules/aiolip/default.nix24
-rw-r--r--pkgs/development/python-modules/aiolivisi/default.nix20
-rw-r--r--pkgs/development/python-modules/aiolookin/default.nix27
-rw-r--r--pkgs/development/python-modules/aiolyric/default.nix17
-rw-r--r--pkgs/development/python-modules/aiomcache/default.nix42
-rw-r--r--pkgs/development/python-modules/aiomealie/default.nix58
-rw-r--r--pkgs/development/python-modules/aiomisc-pytest/default.nix42
-rw-r--r--pkgs/development/python-modules/aiomisc/default.nix6
-rw-r--r--pkgs/development/python-modules/aiomodernforms/default.nix19
-rw-r--r--pkgs/development/python-modules/aiomqtt/default.nix38
-rw-r--r--pkgs/development/python-modules/aiomultiprocess/default.nix2
-rw-r--r--pkgs/development/python-modules/aiomusiccast/default.nix23
-rw-r--r--pkgs/development/python-modules/aiomysensors/default.nix62
-rw-r--r--pkgs/development/python-modules/aiomysql/default.nix33
-rw-r--r--pkgs/development/python-modules/aionanoleaf/default.nix19
-rw-r--r--pkgs/development/python-modules/aionotion/default.nix49
-rw-r--r--pkgs/development/python-modules/aionut/default.nix6
-rw-r--r--pkgs/development/python-modules/aiooncue/default.nix19
-rw-r--r--pkgs/development/python-modules/aioopenexchangerates/default.nix19
-rw-r--r--pkgs/development/python-modules/aioopenssl/default.nix19
-rw-r--r--pkgs/development/python-modules/aiooss2/default.nix2
-rw-r--r--pkgs/development/python-modules/aiooui/default.nix27
-rw-r--r--pkgs/development/python-modules/aiopg/default.nix17
-rw-r--r--pkgs/development/python-modules/aiopinboard/default.nix36
-rw-r--r--pkgs/development/python-modules/aioprocessing/default.nix19
-rw-r--r--pkgs/development/python-modules/aioprometheus/default.nix43
-rw-r--r--pkgs/development/python-modules/aiopulse/default.nix29
-rw-r--r--pkgs/development/python-modules/aiopurpleair/default.nix33
-rw-r--r--pkgs/development/python-modules/aiopvpc/default.nix36
-rw-r--r--pkgs/development/python-modules/aiopyarr/default.nix25
-rw-r--r--pkgs/development/python-modules/aiopylgtv/default.nix15
-rw-r--r--pkgs/development/python-modules/aioqsw/default.nix28
-rw-r--r--pkgs/development/python-modules/aioquic/default.nix55
-rw-r--r--pkgs/development/python-modules/aioraven/default.nix35
-rw-r--r--pkgs/development/python-modules/aiorecollect/default.nix34
-rw-r--r--pkgs/development/python-modules/aioredis/default.nix19
-rw-r--r--pkgs/development/python-modules/aioresponses/default.nix41
-rw-r--r--pkgs/development/python-modules/aioridwell/default.nix41
-rw-r--r--pkgs/development/python-modules/aiormq/default.nix41
-rw-r--r--pkgs/development/python-modules/aiorpcx/default.nix15
-rw-r--r--pkgs/development/python-modules/aiortm/default.nix17
-rw-r--r--pkgs/development/python-modules/aiortsp/default.nix43
-rw-r--r--pkgs/development/python-modules/aioruckus/default.nix50
-rw-r--r--pkgs/development/python-modules/aiorun/default.nix40
-rw-r--r--pkgs/development/python-modules/aiorussound/default.nix53
-rw-r--r--pkgs/development/python-modules/aioruuvigateway/default.nix29
-rw-r--r--pkgs/development/python-modules/aiorwlock/default.nix12
-rw-r--r--pkgs/development/python-modules/aiosasl/default.nix26
-rw-r--r--pkgs/development/python-modules/aiosenz/default.nix24
-rw-r--r--pkgs/development/python-modules/aioserial/default.nix15
-rw-r--r--pkgs/development/python-modules/aioshelly/default.nix47
-rw-r--r--pkgs/development/python-modules/aioshutil/default.nix45
-rw-r--r--pkgs/development/python-modules/aiosignal/default.nix23
-rw-r--r--pkgs/development/python-modules/aioskybell/default.nix33
-rw-r--r--pkgs/development/python-modules/aioslimproto/default.nix25
-rw-r--r--pkgs/development/python-modules/aiosmb/default.nix48
-rw-r--r--pkgs/development/python-modules/aiosmtpd/default.nix47
-rw-r--r--pkgs/development/python-modules/aiosmtplib/default.nix35
-rw-r--r--pkgs/development/python-modules/aiosolaredge/default.nix49
-rw-r--r--pkgs/development/python-modules/aiosomecomfort/default.nix23
-rw-r--r--pkgs/development/python-modules/aiosonic/default.nix147
-rw-r--r--pkgs/development/python-modules/aiosql/default.nix35
-rw-r--r--pkgs/development/python-modules/aiosqlite/default.nix37
-rw-r--r--pkgs/development/python-modules/aiosteamist/default.nix55
-rw-r--r--pkgs/development/python-modules/aiostream/default.nix38
-rw-r--r--pkgs/development/python-modules/aiostreammagic/default.nix52
-rw-r--r--pkgs/development/python-modules/aioswitcher/default.nix76
-rw-r--r--pkgs/development/python-modules/aiosyncthing/default.nix25
-rw-r--r--pkgs/development/python-modules/aiotankerkoenig/default.nix39
-rw-r--r--pkgs/development/python-modules/aiotractive/default.nix27
-rw-r--r--pkgs/development/python-modules/aiounifi/default.nix6
-rw-r--r--pkgs/development/python-modules/aiounittest/default.nix32
-rw-r--r--pkgs/development/python-modules/aiovlc/default.nix45
-rw-r--r--pkgs/development/python-modules/aiovodafone/default.nix4
-rw-r--r--pkgs/development/python-modules/aiowaqi/default.nix43
-rw-r--r--pkgs/development/python-modules/aiowatttime/default.nix33
-rw-r--r--pkgs/development/python-modules/aiowebostv/default.nix29
-rw-r--r--pkgs/development/python-modules/aioweenect/default.nix47
-rw-r--r--pkgs/development/python-modules/aiowithings/default.nix58
-rw-r--r--pkgs/development/python-modules/aioxmpp/default.nix69
-rw-r--r--pkgs/development/python-modules/aioymaps/default.nix24
-rw-r--r--pkgs/development/python-modules/aiozoneinfo/default.nix49
-rw-r--r--pkgs/development/python-modules/airgradient/default.nix58
-rw-r--r--pkgs/development/python-modules/airium/default.nix17
-rw-r--r--pkgs/development/python-modules/airly/default.nix17
-rw-r--r--pkgs/development/python-modules/airthings-ble/default.nix6
-rw-r--r--pkgs/development/python-modules/airthings-cloud/default.nix17
-rw-r--r--pkgs/development/python-modules/airtouch4pyapi/default.nix15
-rw-r--r--pkgs/development/python-modules/airtouch5py/default.nix6
-rw-r--r--pkgs/development/python-modules/ajpy/default.nix6
-rw-r--r--pkgs/development/python-modules/alabaster/default.nix13
-rw-r--r--pkgs/development/python-modules/aladdin-connect/default.nix19
-rw-r--r--pkgs/development/python-modules/alarmdecoder/default.nix21
-rw-r--r--pkgs/development/python-modules/albucore/default.nix48
-rw-r--r--pkgs/development/python-modules/albumentations/default.nix75
-rw-r--r--pkgs/development/python-modules/ale-py/cmake-pybind11.patch18
-rw-r--r--pkgs/development/python-modules/ale-py/default.nix122
-rw-r--r--pkgs/development/python-modules/ale-py/patch-sha-check-in-setup.patch17
-rw-r--r--pkgs/development/python-modules/alectryon/default.nix14
-rw-r--r--pkgs/development/python-modules/alembic/default.nix71
-rw-r--r--pkgs/development/python-modules/alexapy/default.nix47
-rw-r--r--pkgs/development/python-modules/algebraic-data-types/default.nix19
-rw-r--r--pkgs/development/python-modules/alive-progress/default.nix29
-rw-r--r--pkgs/development/python-modules/aliyun-python-sdk-cdn/default.nix19
-rw-r--r--pkgs/development/python-modules/aliyun-python-sdk-config/default.nix23
-rw-r--r--pkgs/development/python-modules/aliyun-python-sdk-core/default.nix6
-rw-r--r--pkgs/development/python-modules/aliyun-python-sdk-dbfs/default.nix19
-rw-r--r--pkgs/development/python-modules/aliyun-python-sdk-iot/default.nix19
-rw-r--r--pkgs/development/python-modules/aliyun-python-sdk-kms/default.nix28
-rw-r--r--pkgs/development/python-modules/aliyun-python-sdk-sts/default.nix19
-rw-r--r--pkgs/development/python-modules/allpairspy/default.nix23
-rw-r--r--pkgs/development/python-modules/allure-behave/default.nix25
-rw-r--r--pkgs/development/python-modules/allure-pytest/default.nix35
-rw-r--r--pkgs/development/python-modules/allure-python-commons-test/default.nix37
-rw-r--r--pkgs/development/python-modules/allure-python-commons/default.nix41
-rw-r--r--pkgs/development/python-modules/alpha-vantage/default.nix60
-rw-r--r--pkgs/development/python-modules/altair/default.nix59
-rw-r--r--pkgs/development/python-modules/altgraph/default.nix18
-rw-r--r--pkgs/development/python-modules/amaranth-boards/default.nix39
-rw-r--r--pkgs/development/python-modules/amaranth-soc/default.nix30
-rw-r--r--pkgs/development/python-modules/amaranth/default.nix61
-rw-r--r--pkgs/development/python-modules/amarna/default.nix23
-rw-r--r--pkgs/development/python-modules/amazon-ion/default.nix31
-rw-r--r--pkgs/development/python-modules/amazon-kclpy/default.nix45
-rw-r--r--pkgs/development/python-modules/ambee/default.nix34
-rw-r--r--pkgs/development/python-modules/amberelectric/default.nix31
-rw-r--r--pkgs/development/python-modules/ambiclimate/default.nix35
-rw-r--r--pkgs/development/python-modules/amcrest/default.nix49
-rw-r--r--pkgs/development/python-modules/amiibo-py/default.nix15
-rw-r--r--pkgs/development/python-modules/amply/default.nix15
-rw-r--r--pkgs/development/python-modules/amqp/default.nix25
-rw-r--r--pkgs/development/python-modules/amqplib/default.nix7
-rw-r--r--pkgs/development/python-modules/amqtt/default.nix45
-rw-r--r--pkgs/development/python-modules/anchor-kr/default.nix5
-rw-r--r--pkgs/development/python-modules/ancp-bids/default.nix29
-rw-r--r--pkgs/development/python-modules/androguard/default.nix116
-rw-r--r--pkgs/development/python-modules/androguard/drop-removed-networkx-formats.patch14
-rw-r--r--pkgs/development/python-modules/androguard/fix-tests.patch13
-rw-r--r--pkgs/development/python-modules/android-backup/default.nix17
-rw-r--r--pkgs/development/python-modules/androidtv/default.nix33
-rw-r--r--pkgs/development/python-modules/androidtvremote2/default.nix35
-rw-r--r--pkgs/development/python-modules/anel-pwrctrl-homeassistant/default.nix6
-rw-r--r--pkgs/development/python-modules/angr/default.nix23
-rw-r--r--pkgs/development/python-modules/angrcli/default.nix31
-rw-r--r--pkgs/development/python-modules/angrop/default.nix4
-rw-r--r--pkgs/development/python-modules/aniso8601/default.nix23
-rw-r--r--pkgs/development/python-modules/anitopy/default.nix5
-rw-r--r--pkgs/development/python-modules/annexremote/default.nix23
-rw-r--r--pkgs/development/python-modules/annotated-types/default.nix33
-rw-r--r--pkgs/development/python-modules/annoy/default.nix46
-rw-r--r--pkgs/development/python-modules/anonip/default.nix26
-rw-r--r--pkgs/development/python-modules/anova-wifi/default.nix13
-rw-r--r--pkgs/development/python-modules/ansi/default.nix19
-rw-r--r--pkgs/development/python-modules/ansi2html/default.nix23
-rw-r--r--pkgs/development/python-modules/ansi2image/default.nix27
-rw-r--r--pkgs/development/python-modules/ansible-builder/default.nix28
-rw-r--r--pkgs/development/python-modules/ansible-compat/default.nix52
-rw-r--r--pkgs/development/python-modules/ansible-kernel/default.nix78
-rw-r--r--pkgs/development/python-modules/ansible-navigator/default.nix47
-rw-r--r--pkgs/development/python-modules/ansible-pylibssh/default.nix4
-rw-r--r--pkgs/development/python-modules/ansible-runner/default.nix116
-rw-r--r--pkgs/development/python-modules/ansible-vault-rw/default.nix36
-rw-r--r--pkgs/development/python-modules/ansible/core.nix123
-rw-r--r--pkgs/development/python-modules/ansible/default.nix109
-rw-r--r--pkgs/development/python-modules/ansicolor/default.nix4
-rw-r--r--pkgs/development/python-modules/ansicolors/default.nix7
-rw-r--r--pkgs/development/python-modules/ansiconv/default.nix10
-rw-r--r--pkgs/development/python-modules/ansimarkup/default.nix26
-rw-r--r--pkgs/development/python-modules/ansitable/default.nix44
-rw-r--r--pkgs/development/python-modules/ansiwrap/default.nix42
-rw-r--r--pkgs/development/python-modules/anthemav/default.nix21
-rw-r--r--pkgs/development/python-modules/anthropic/default.nix7
-rw-r--r--pkgs/development/python-modules/antlr4-python3-runtime/default.nix15
-rw-r--r--pkgs/development/python-modules/anyascii/default.nix15
-rw-r--r--pkgs/development/python-modules/anybadge/default.nix23
-rw-r--r--pkgs/development/python-modules/anyconfig/default.nix19
-rw-r--r--pkgs/development/python-modules/anyio/default.nix107
-rw-r--r--pkgs/development/python-modules/anyqt/default.nix18
-rw-r--r--pkgs/development/python-modules/anysqlite/default.nix27
-rw-r--r--pkgs/development/python-modules/anytree/default.nix39
-rw-r--r--pkgs/development/python-modules/anywidget/default.nix34
-rw-r--r--pkgs/development/python-modules/aocd-example-parser/default.nix15
-rw-r--r--pkgs/development/python-modules/aocd/default.nix52
-rw-r--r--pkgs/development/python-modules/apache-beam/default.nix103
-rw-r--r--pkgs/development/python-modules/apcaccess/default.nix17
-rw-r--r--pkgs/development/python-modules/apeye-core/default.nix40
-rw-r--r--pkgs/development/python-modules/apipkg/default.nix33
-rw-r--r--pkgs/development/python-modules/apischema/default.nix23
-rw-r--r--pkgs/development/python-modules/apispec-webframeworks/default.nix41
-rw-r--r--pkgs/development/python-modules/apispec/default.nix50
-rw-r--r--pkgs/development/python-modules/apkinspector/default.nix4
-rw-r--r--pkgs/development/python-modules/apkit/default.nix11
-rw-r--r--pkgs/development/python-modules/aplpy/default.nix57
-rw-r--r--pkgs/development/python-modules/app-model/default.nix41
-rw-r--r--pkgs/development/python-modules/appdirs/default.nix9
-rw-r--r--pkgs/development/python-modules/apple-weatherkit/default.nix25
-rw-r--r--pkgs/development/python-modules/applicationinsights/default.nix11
-rw-r--r--pkgs/development/python-modules/appnope/default.nix13
-rw-r--r--pkgs/development/python-modules/apprise/default.nix81
-rw-r--r--pkgs/development/python-modules/approval-utilities/default.nix17
-rw-r--r--pkgs/development/python-modules/approvaltests/default.nix47
-rw-r--r--pkgs/development/python-modules/appthreat-vulnerability-db/default.nix23
-rw-r--r--pkgs/development/python-modules/apptools/default.nix73
-rw-r--r--pkgs/development/python-modules/apricot-select/default.nix70
-rw-r--r--pkgs/development/python-modules/aprslib/default.nix15
-rw-r--r--pkgs/development/python-modules/apscheduler/default.nix70
-rw-r--r--pkgs/development/python-modules/apsw/default.nix27
-rw-r--r--pkgs/development/python-modules/apsystems-ez1/default.nix41
-rw-r--r--pkgs/development/python-modules/apycula/default.nix8
-rw-r--r--pkgs/development/python-modules/aqipy-atmotech/default.nix19
-rw-r--r--pkgs/development/python-modules/aqualogic/default.nix19
-rw-r--r--pkgs/development/python-modules/arabic-reshaper/default.nix25
-rw-r--r--pkgs/development/python-modules/aranet4/default.nix4
-rw-r--r--pkgs/development/python-modules/arc4/default.nix19
-rw-r--r--pkgs/development/python-modules/arcam-fmj/default.nix35
-rw-r--r--pkgs/development/python-modules/archinfo/default.nix4
-rw-r--r--pkgs/development/python-modules/archspec/default.nix40
-rw-r--r--pkgs/development/python-modules/area/default.nix8
-rw-r--r--pkgs/development/python-modules/arelle/default.nix64
-rw-r--r--pkgs/development/python-modules/aresponses/default.nix49
-rw-r--r--pkgs/development/python-modules/argcomplete/default.nix21
-rw-r--r--pkgs/development/python-modules/argh/default.nix26
-rw-r--r--pkgs/development/python-modules/argilla/default.nix277
-rw-r--r--pkgs/development/python-modules/argon2-cffi-bindings/default.nix19
-rw-r--r--pkgs/development/python-modules/argon2-cffi/default.nix34
-rw-r--r--pkgs/development/python-modules/argos-translate-files/default.nix13
-rw-r--r--pkgs/development/python-modules/argostranslate/default.nix25
-rw-r--r--pkgs/development/python-modules/argparse-addons/default.nix11
-rw-r--r--pkgs/development/python-modules/argparse-dataclass/default.nix25
-rw-r--r--pkgs/development/python-modules/argparse-manpage/default.nix37
-rw-r--r--pkgs/development/python-modules/args/default.nix6
-rw-r--r--pkgs/development/python-modules/aria2p/default.nix50
-rw-r--r--pkgs/development/python-modules/ariadne/default.nix49
-rw-r--r--pkgs/development/python-modules/arnparse/default.nix19
-rw-r--r--pkgs/development/python-modules/arpeggio/default.nix9
-rw-r--r--pkgs/development/python-modules/arpy/default.nix15
-rw-r--r--pkgs/development/python-modules/array-api-compat/default.nix59
-rw-r--r--pkgs/development/python-modules/array-api-strict/default.nix46
-rw-r--r--pkgs/development/python-modules/array-record/default.nix57
-rw-r--r--pkgs/development/python-modules/arrayqueues/default.nix14
-rw-r--r--pkgs/development/python-modules/arris-tg2492lg/default.nix29
-rw-r--r--pkgs/development/python-modules/arrow/default.nix31
-rw-r--r--pkgs/development/python-modules/arsenic/default.nix2
-rw-r--r--pkgs/development/python-modules/art/default.nix18
-rw-r--r--pkgs/development/python-modules/arviz/default.nix100
-rw-r--r--pkgs/development/python-modules/arxiv2bib/default.nix21
-rw-r--r--pkgs/development/python-modules/asana/default.nix51
-rw-r--r--pkgs/development/python-modules/ascii-magic/default.nix23
-rw-r--r--pkgs/development/python-modules/asciimatics/default.nix29
-rw-r--r--pkgs/development/python-modules/asciitree/default.nix24
-rw-r--r--pkgs/development/python-modules/asdf-astropy/default.nix68
-rw-r--r--pkgs/development/python-modules/asdf-coordinates-schemas/default.nix48
-rw-r--r--pkgs/development/python-modules/asdf-standard/default.nix25
-rw-r--r--pkgs/development/python-modules/asdf-transform-schemas/default.nix29
-rw-r--r--pkgs/development/python-modules/asdf-wcs-schemas/default.nix56
-rw-r--r--pkgs/development/python-modules/asdf/default.nix101
-rw-r--r--pkgs/development/python-modules/ase/default.nix75
-rw-r--r--pkgs/development/python-modules/asf-search/default.nix11
-rw-r--r--pkgs/development/python-modules/asgi-csrf/default.nix27
-rw-r--r--pkgs/development/python-modules/asgi-lifespan/default.nix23
-rw-r--r--pkgs/development/python-modules/asgi-logger/default.nix23
-rw-r--r--pkgs/development/python-modules/asgineer/default.nix14
-rw-r--r--pkgs/development/python-modules/asgiref/default.nix31
-rw-r--r--pkgs/development/python-modules/asks/default.nix25
-rw-r--r--pkgs/development/python-modules/asmog/default.nix13
-rw-r--r--pkgs/development/python-modules/asn1/default.nix38
-rw-r--r--pkgs/development/python-modules/asn1ate/default.nix9
-rw-r--r--pkgs/development/python-modules/asn1crypto/default.nix47
-rw-r--r--pkgs/development/python-modules/asn1tools/default.nix41
-rw-r--r--pkgs/development/python-modules/aspectlib/default.nix33
-rw-r--r--pkgs/development/python-modules/aspell-python/default.nix40
-rw-r--r--pkgs/development/python-modules/aspy-refactor-imports/default.nix25
-rw-r--r--pkgs/development/python-modules/aspy-yaml/default.nix9
-rw-r--r--pkgs/development/python-modules/assay/default.nix14
-rw-r--r--pkgs/development/python-modules/assertpy/default.nix17
-rw-r--r--pkgs/development/python-modules/asterisk-mbox/default.nix23
-rw-r--r--pkgs/development/python-modules/asteroid-filterbanks/default.nix31
-rw-r--r--pkgs/development/python-modules/asteval/default.nix8
-rw-r--r--pkgs/development/python-modules/astor/default.nix13
-rw-r--r--pkgs/development/python-modules/astral/default.nix31
-rw-r--r--pkgs/development/python-modules/astroid/default.nix33
-rw-r--r--pkgs/development/python-modules/astropy-extension-helpers/default.nix37
-rw-r--r--pkgs/development/python-modules/astropy-healpix/default.nix36
-rw-r--r--pkgs/development/python-modules/astropy-helpers/default.nix13
-rw-r--r--pkgs/development/python-modules/astropy-iers-data/default.nix21
-rw-r--r--pkgs/development/python-modules/astropy/default.nix78
-rw-r--r--pkgs/development/python-modules/astroquery/default.nix56
-rw-r--r--pkgs/development/python-modules/asttokens/default.nix23
-rw-r--r--pkgs/development/python-modules/astunparse/default.nix20
-rw-r--r--pkgs/development/python-modules/asyauth/default.nix32
-rw-r--r--pkgs/development/python-modules/async-dns/default.nix17
-rw-r--r--pkgs/development/python-modules/async-generator/default.nix26
-rw-r--r--pkgs/development/python-modules/async-interrupt/default.nix38
-rw-r--r--pkgs/development/python-modules/async-lru/default.nix19
-rw-r--r--pkgs/development/python-modules/async-modbus/default.nix29
-rw-r--r--pkgs/development/python-modules/async-stagger/default.nix19
-rw-r--r--pkgs/development/python-modules/async-timeout/default.nix15
-rw-r--r--pkgs/development/python-modules/async-tkinter-loop/default.nix25
-rw-r--r--pkgs/development/python-modules/async-upnp-client/default.nix53
-rw-r--r--pkgs/development/python-modules/asyncarve/default.nix42
-rw-r--r--pkgs/development/python-modules/asyncclick/default.nix36
-rw-r--r--pkgs/development/python-modules/asynccmd/default.nix11
-rw-r--r--pkgs/development/python-modules/asyncinotify/default.nix35
-rw-r--r--pkgs/development/python-modules/asyncio-dgram/default.nix39
-rw-r--r--pkgs/development/python-modules/asyncio-mqtt/default.nix76
-rw-r--r--pkgs/development/python-modules/asyncio-rlock/default.nix8
-rw-r--r--pkgs/development/python-modules/asyncio-throttle/default.nix13
-rw-r--r--pkgs/development/python-modules/asyncmy/default.nix19
-rw-r--r--pkgs/development/python-modules/asyncpg/default.nix27
-rw-r--r--pkgs/development/python-modules/asyncserial/default.nix13
-rw-r--r--pkgs/development/python-modules/asyncsleepiq/default.nix25
-rw-r--r--pkgs/development/python-modules/asyncssh/default.nix84
-rw-r--r--pkgs/development/python-modules/asyncstdlib/default.nix4
-rw-r--r--pkgs/development/python-modules/asynctest/default.nix9
-rw-r--r--pkgs/development/python-modules/asyncua/default.nix58
-rw-r--r--pkgs/development/python-modules/asyncwhois/default.nix47
-rw-r--r--pkgs/development/python-modules/asysocks/default.nix30
-rw-r--r--pkgs/development/python-modules/atc-ble/default.nix40
-rw-r--r--pkgs/development/python-modules/atenpdu/default.nix30
-rw-r--r--pkgs/development/python-modules/atlassian-python-api/default.nix41
-rw-r--r--pkgs/development/python-modules/atom/default.nix36
-rw-r--r--pkgs/development/python-modules/atomiclong/default.nix25
-rw-r--r--pkgs/development/python-modules/atomicwrites-homeassistant/default.nix17
-rw-r--r--pkgs/development/python-modules/atomicwrites/default.nix7
-rw-r--r--pkgs/development/python-modules/atomman/default.nix71
-rw-r--r--pkgs/development/python-modules/atpublic/default.nix52
-rw-r--r--pkgs/development/python-modules/atsim-potentials/default.nix55
-rw-r--r--pkgs/development/python-modules/attacut/default.nix73
-rw-r--r--pkgs/development/python-modules/attr/default.nix35
-rw-r--r--pkgs/development/python-modules/attrdict/default.nix5
-rw-r--r--pkgs/development/python-modules/attrs/default.nix23
-rw-r--r--pkgs/development/python-modules/attrs/tests.nix9
-rw-r--r--pkgs/development/python-modules/aubio/default.nix58
-rw-r--r--pkgs/development/python-modules/audible/default.nix35
-rw-r--r--pkgs/development/python-modules/audio-metadata/default.nix2
-rw-r--r--pkgs/development/python-modules/audioread/default.nix13
-rw-r--r--pkgs/development/python-modules/audiotools/default.nix24
-rw-r--r--pkgs/development/python-modules/auditok/default.nix33
-rw-r--r--pkgs/development/python-modules/auditwheel/default.nix63
-rw-r--r--pkgs/development/python-modules/augeas/default.nix63
-rw-r--r--pkgs/development/python-modules/augmax/default.nix32
-rw-r--r--pkgs/development/python-modules/auroranoaa/default.nix11
-rw-r--r--pkgs/development/python-modules/aurorapy/default.nix27
-rw-r--r--pkgs/development/python-modules/autarco/default.nix56
-rw-r--r--pkgs/development/python-modules/auth0-python/default.nix49
-rw-r--r--pkgs/development/python-modules/authcaptureproxy/default.nix46
-rw-r--r--pkgs/development/python-modules/authheaders/default.nix43
-rw-r--r--pkgs/development/python-modules/authlib/default.nix50
-rw-r--r--pkgs/development/python-modules/authres/default.nix7
-rw-r--r--pkgs/development/python-modules/autobahn/default.nix177
-rw-r--r--pkgs/development/python-modules/autocommand/default.nix27
-rw-r--r--pkgs/development/python-modules/autofaiss/default.nix31
-rw-r--r--pkgs/development/python-modules/autoflake/default.nix34
-rw-r--r--pkgs/development/python-modules/autograd-gamma/default.nix9
-rw-r--r--pkgs/development/python-modules/autograd/default.nix17
-rw-r--r--pkgs/development/python-modules/autoit-ripper/default.nix25
-rw-r--r--pkgs/development/python-modules/autologging/default.nix6
-rw-r--r--pkgs/development/python-modules/automat/default.nix98
-rw-r--r--pkgs/development/python-modules/automate-home/default.nix57
-rw-r--r--pkgs/development/python-modules/automx2/default.nix37
-rw-r--r--pkgs/development/python-modules/autopage/default.nix13
-rw-r--r--pkgs/development/python-modules/autopep8/default.nix32
-rw-r--r--pkgs/development/python-modules/autoslot/default.nix25
-rw-r--r--pkgs/development/python-modules/autotrash/default.nix33
-rw-r--r--pkgs/development/python-modules/av/default.nix120
-rw-r--r--pkgs/development/python-modules/av/test-samples.toml17
-rwxr-xr-xpkgs/development/python-modules/av/update-test-samples.bash44
-rw-r--r--pkgs/development/python-modules/avea/default.nix13
-rw-r--r--pkgs/development/python-modules/avidtools/default.nix27
-rw-r--r--pkgs/development/python-modules/avion/default.nix17
-rw-r--r--pkgs/development/python-modules/avro-python3/default.nix23
-rw-r--r--pkgs/development/python-modules/avro/default.nix32
-rw-r--r--pkgs/development/python-modules/avro3k/default.nix18
-rw-r--r--pkgs/development/python-modules/avwx-engine/default.nix82
-rw-r--r--pkgs/development/python-modules/aw-client/default.nix39
-rw-r--r--pkgs/development/python-modules/aw-core/default.nix43
-rw-r--r--pkgs/development/python-modules/awacs/default.nix21
-rw-r--r--pkgs/development/python-modules/awesome-slugify/default.nix14
-rw-r--r--pkgs/development/python-modules/awesomeversion/default.nix27
-rw-r--r--pkgs/development/python-modules/awkward-cpp/default.nix45
-rw-r--r--pkgs/development/python-modules/awkward/default.nix126
-rw-r--r--pkgs/development/python-modules/aws-adfs/default.nix48
-rw-r--r--pkgs/development/python-modules/aws-encryption-sdk/default.nix41
-rw-r--r--pkgs/development/python-modules/aws-lambda-builders/default.nix39
-rw-r--r--pkgs/development/python-modules/aws-request-signer/default.nix43
-rw-r--r--pkgs/development/python-modules/aws-sam-translator/default.nix39
-rw-r--r--pkgs/development/python-modules/aws-secretsmanager-caching/default.nix39
-rw-r--r--pkgs/development/python-modules/aws-xray-sdk/default.nix59
-rw-r--r--pkgs/development/python-modules/awscrt/default.nix38
-rw-r--r--pkgs/development/python-modules/awsiotpythonsdk/default.nix19
-rw-r--r--pkgs/development/python-modules/awsiotsdk/default.nix51
-rw-r--r--pkgs/development/python-modules/awsipranges/default.nix23
-rw-r--r--pkgs/development/python-modules/awslambdaric/default.nix73
-rw-r--r--pkgs/development/python-modules/awswrangler/default.nix17
-rw-r--r--pkgs/development/python-modules/ax-platform/default.nix (renamed from pkgs/development/python-modules/ax/default.nix)58
-rw-r--r--pkgs/development/python-modules/axis/default.nix4
-rw-r--r--pkgs/development/python-modules/axisregistry/default.nix51
-rw-r--r--pkgs/development/python-modules/ayla-iot-unofficial/default.nix52
-rw-r--r--pkgs/development/python-modules/azure-appconfiguration/default.nix6
-rw-r--r--pkgs/development/python-modules/azure-applicationinsights/default.nix11
-rw-r--r--pkgs/development/python-modules/azure-batch/default.nix23
-rw-r--r--pkgs/development/python-modules/azure-common/default.nix26
-rw-r--r--pkgs/development/python-modules/azure-containerregistry/default.nix17
-rw-r--r--pkgs/development/python-modules/azure-core/default.nix65
-rw-r--r--pkgs/development/python-modules/azure-cosmos/default.nix6
-rw-r--r--pkgs/development/python-modules/azure-cosmosdb-nspkg/default.nix13
-rw-r--r--pkgs/development/python-modules/azure-cosmosdb-table/default.nix23
-rw-r--r--pkgs/development/python-modules/azure-data-tables/default.nix23
-rw-r--r--pkgs/development/python-modules/azure-datalake-store/default.nix19
-rw-r--r--pkgs/development/python-modules/azure-eventgrid/default.nix31
-rw-r--r--pkgs/development/python-modules/azure-eventhub/default.nix23
-rw-r--r--pkgs/development/python-modules/azure-functions-devops-build/default.nix19
-rw-r--r--pkgs/development/python-modules/azure-graphrbac/default.nix13
-rw-r--r--pkgs/development/python-modules/azure-identity/default.nix25
-rw-r--r--pkgs/development/python-modules/azure-keyvault-administration/default.nix31
-rw-r--r--pkgs/development/python-modules/azure-keyvault-certificates/default.nix33
-rw-r--r--pkgs/development/python-modules/azure-keyvault-keys/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-keyvault-nspkg/default.nix19
-rw-r--r--pkgs/development/python-modules/azure-keyvault-secrets/default.nix27
-rw-r--r--pkgs/development/python-modules/azure-keyvault/default.nix17
-rw-r--r--pkgs/development/python-modules/azure-loganalytics/default.nix15
-rw-r--r--pkgs/development/python-modules/azure-mgmt-advisor/default.nix23
-rw-r--r--pkgs/development/python-modules/azure-mgmt-apimanagement/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-appconfiguration/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-appcontainers/default.nix29
-rw-r--r--pkgs/development/python-modules/azure-mgmt-applicationinsights/default.nix27
-rw-r--r--pkgs/development/python-modules/azure-mgmt-authorization/default.nix23
-rw-r--r--pkgs/development/python-modules/azure-mgmt-batch/default.nix25
-rw-r--r--pkgs/development/python-modules/azure-mgmt-batchai/default.nix17
-rw-r--r--pkgs/development/python-modules/azure-mgmt-billing/default.nix17
-rw-r--r--pkgs/development/python-modules/azure-mgmt-botservice/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-cdn/default.nix19
-rw-r--r--pkgs/development/python-modules/azure-mgmt-cognitiveservices/default.nix15
-rw-r--r--pkgs/development/python-modules/azure-mgmt-commerce/default.nix26
-rw-r--r--pkgs/development/python-modules/azure-mgmt-common/default.nix24
-rw-r--r--pkgs/development/python-modules/azure-mgmt-compute/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-consumption/default.nix24
-rw-r--r--pkgs/development/python-modules/azure-mgmt-containerinstance/default.nix22
-rw-r--r--pkgs/development/python-modules/azure-mgmt-containerregistry/default.nix17
-rw-r--r--pkgs/development/python-modules/azure-mgmt-containerservice/default.nix35
-rw-r--r--pkgs/development/python-modules/azure-mgmt-core/default.nix18
-rw-r--r--pkgs/development/python-modules/azure-mgmt-cosmosdb/default.nix33
-rw-r--r--pkgs/development/python-modules/azure-mgmt-databoxedge/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-datafactory/default.nix29
-rw-r--r--pkgs/development/python-modules/azure-mgmt-datalake-analytics/default.nix13
-rw-r--r--pkgs/development/python-modules/azure-mgmt-datalake-nspkg/default.nix13
-rw-r--r--pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix19
-rw-r--r--pkgs/development/python-modules/azure-mgmt-datamigration/default.nix27
-rw-r--r--pkgs/development/python-modules/azure-mgmt-deploymentmanager/default.nix3
-rw-r--r--pkgs/development/python-modules/azure-mgmt-devspaces/default.nix13
-rw-r--r--pkgs/development/python-modules/azure-mgmt-devtestlabs/default.nix27
-rw-r--r--pkgs/development/python-modules/azure-mgmt-dns/default.nix21
-rw-r--r--pkgs/development/python-modules/azure-mgmt-eventgrid/default.nix21
-rw-r--r--pkgs/development/python-modules/azure-mgmt-eventhub/default.nix17
-rw-r--r--pkgs/development/python-modules/azure-mgmt-extendedlocation/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-hanaonazure/default.nix23
-rw-r--r--pkgs/development/python-modules/azure-mgmt-hdinsight/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-imagebuilder/default.nix27
-rw-r--r--pkgs/development/python-modules/azure-mgmt-iotcentral/default.nix23
-rw-r--r--pkgs/development/python-modules/azure-mgmt-iothub/default.nix25
-rw-r--r--pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix21
-rw-r--r--pkgs/development/python-modules/azure-mgmt-keyvault/default.nix34
-rw-r--r--pkgs/development/python-modules/azure-mgmt-kusto/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-loganalytics/default.nix15
-rw-r--r--pkgs/development/python-modules/azure-mgmt-logic/default.nix21
-rw-r--r--pkgs/development/python-modules/azure-mgmt-machinelearningcompute/default.nix15
-rw-r--r--pkgs/development/python-modules/azure-mgmt-managedservices/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-managementgroups/default.nix23
-rw-r--r--pkgs/development/python-modules/azure-mgmt-managementpartner/default.nix15
-rw-r--r--pkgs/development/python-modules/azure-mgmt-maps/default.nix31
-rw-r--r--pkgs/development/python-modules/azure-mgmt-marketplaceordering/default.nix23
-rw-r--r--pkgs/development/python-modules/azure-mgmt-media/default.nix21
-rw-r--r--pkgs/development/python-modules/azure-mgmt-monitor/default.nix25
-rw-r--r--pkgs/development/python-modules/azure-mgmt-msi/default.nix15
-rw-r--r--pkgs/development/python-modules/azure-mgmt-netapp/default.nix28
-rw-r--r--pkgs/development/python-modules/azure-mgmt-network/default.nix38
-rw-r--r--pkgs/development/python-modules/azure-mgmt-notificationhubs/default.nix17
-rw-r--r--pkgs/development/python-modules/azure-mgmt-nspkg/default.nix14
-rw-r--r--pkgs/development/python-modules/azure-mgmt-policyinsights/default.nix23
-rw-r--r--pkgs/development/python-modules/azure-mgmt-powerbiembedded/default.nix39
-rw-r--r--pkgs/development/python-modules/azure-mgmt-privatedns/default.nix42
-rw-r--r--pkgs/development/python-modules/azure-mgmt-rdbms/default.nix23
-rw-r--r--pkgs/development/python-modules/azure-mgmt-recoveryservices/default.nix29
-rw-r--r--pkgs/development/python-modules/azure-mgmt-redhatopenshift/default.nix31
-rw-r--r--pkgs/development/python-modules/azure-mgmt-redis/default.nix29
-rw-r--r--pkgs/development/python-modules/azure-mgmt-relay/default.nix24
-rw-r--r--pkgs/development/python-modules/azure-mgmt-reservations/default.nix17
-rw-r--r--pkgs/development/python-modules/azure-mgmt-resource/default.nix40
-rw-r--r--pkgs/development/python-modules/azure-mgmt-scheduler/default.nix15
-rw-r--r--pkgs/development/python-modules/azure-mgmt-search/default.nix25
-rw-r--r--pkgs/development/python-modules/azure-mgmt-security/default.nix31
-rw-r--r--pkgs/development/python-modules/azure-mgmt-servicebus/default.nix17
-rw-r--r--pkgs/development/python-modules/azure-mgmt-servicefabric/default.nix25
-rw-r--r--pkgs/development/python-modules/azure-mgmt-servicefabricmanagedclusters/default.nix39
-rw-r--r--pkgs/development/python-modules/azure-mgmt-servicelinker/default.nix15
-rw-r--r--pkgs/development/python-modules/azure-mgmt-signalr/default.nix17
-rw-r--r--pkgs/development/python-modules/azure-mgmt-sql/default.nix23
-rw-r--r--pkgs/development/python-modules/azure-mgmt-sqlvirtualmachine/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-storage/default.nix42
-rw-r--r--pkgs/development/python-modules/azure-mgmt-subscription/default.nix23
-rw-r--r--pkgs/development/python-modules/azure-mgmt-synapse/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-mgmt-trafficmanager/default.nix23
-rw-r--r--pkgs/development/python-modules/azure-mgmt-web/default.nix19
-rw-r--r--pkgs/development/python-modules/azure-monitor-ingestion/default.nix25
-rw-r--r--pkgs/development/python-modules/azure-monitor-query/default.nix42
-rw-r--r--pkgs/development/python-modules/azure-multiapi-storage/default.nix8
-rw-r--r--pkgs/development/python-modules/azure-nspkg/default.nix12
-rw-r--r--pkgs/development/python-modules/azure-search-documents/default.nix45
-rw-r--r--pkgs/development/python-modules/azure-servicebus/default.nix29
-rw-r--r--pkgs/development/python-modules/azure-servicefabric/default.nix11
-rw-r--r--pkgs/development/python-modules/azure-servicemanagement-legacy/default.nix16
-rw-r--r--pkgs/development/python-modules/azure-storage-blob/default.nix26
-rw-r--r--pkgs/development/python-modules/azure-storage-common/default.nix19
-rw-r--r--pkgs/development/python-modules/azure-storage-file-share/default.nix40
-rw-r--r--pkgs/development/python-modules/azure-storage-file/default.nix15
-rw-r--r--pkgs/development/python-modules/azure-storage-nspkg/default.nix13
-rw-r--r--pkgs/development/python-modules/azure-storage-queue/default.nix40
-rw-r--r--pkgs/development/python-modules/azure-synapse-accesscontrol/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-synapse-artifacts/default.nix27
-rw-r--r--pkgs/development/python-modules/azure-synapse-managedprivateendpoints/default.nix2
-rw-r--r--pkgs/development/python-modules/azure-synapse-spark/default.nix2
-rw-r--r--pkgs/development/python-modules/b2sdk/default.nix12
-rw-r--r--pkgs/development/python-modules/babel/default.nix62
-rw-r--r--pkgs/development/python-modules/babelfish/default.nix25
-rw-r--r--pkgs/development/python-modules/babelfont/default.nix57
-rw-r--r--pkgs/development/python-modules/babelgladeextractor/default.nix17
-rw-r--r--pkgs/development/python-modules/backcall/default.nix10
-rw-r--r--pkgs/development/python-modules/backoff/default.nix23
-rw-r--r--pkgs/development/python-modules/backports-cached-property/default.nix25
-rw-r--r--pkgs/development/python-modules/backports-datetime-fromisoformat/default.nix33
-rw-r--r--pkgs/development/python-modules/backports-entry-points-selectable/default.nix23
-rw-r--r--pkgs/development/python-modules/backports-shutil-get-terminal-size/default.nix62
-rw-r--r--pkgs/development/python-modules/backports-shutil-which/default.nix7
-rw-r--r--pkgs/development/python-modules/backports-strenum/default.nix32
-rw-r--r--pkgs/development/python-modules/backports-tarfile/default.nix65
-rw-r--r--pkgs/development/python-modules/backports-zoneinfo/default.nix31
-rw-r--r--pkgs/development/python-modules/bacpypes/default.nix27
-rw-r--r--pkgs/development/python-modules/bagit/default.nix20
-rw-r--r--pkgs/development/python-modules/bambi/default.nix37
-rw-r--r--pkgs/development/python-modules/banal/default.nix11
-rw-r--r--pkgs/development/python-modules/bandcamp-api/default.nix17
-rw-r--r--pkgs/development/python-modules/bandit/default.nix31
-rw-r--r--pkgs/development/python-modules/bangla/default.nix7
-rw-r--r--pkgs/development/python-modules/bap/default.nix15
-rw-r--r--pkgs/development/python-modules/barectf/default.nix33
-rw-r--r--pkgs/development/python-modules/baron/default.nix9
-rw-r--r--pkgs/development/python-modules/base2048/default.nix44
-rw-r--r--pkgs/development/python-modules/base36/default.nix9
-rw-r--r--pkgs/development/python-modules/base58/default.nix13
-rw-r--r--pkgs/development/python-modules/base58check/default.nix19
-rw-r--r--pkgs/development/python-modules/base64io/default.nix27
-rw-r--r--pkgs/development/python-modules/baseline/default.nix8
-rw-r--r--pkgs/development/python-modules/baselines/default.nix35
-rw-r--r--pkgs/development/python-modules/basemap-data/default.nix26
-rw-r--r--pkgs/development/python-modules/basemap/default.nix37
-rw-r--r--pkgs/development/python-modules/bases/default.nix23
-rw-r--r--pkgs/development/python-modules/bash-kernel/default.nix42
-rw-r--r--pkgs/development/python-modules/bash-kernel/test.ipynb26
-rw-r--r--pkgs/development/python-modules/bashlex/default.nix15
-rw-r--r--pkgs/development/python-modules/basiciw/default.nix15
-rw-r--r--pkgs/development/python-modules/batchgenerators/default.nix43
-rw-r--r--pkgs/development/python-modules/batchspawner/default.nix36
-rw-r--r--pkgs/development/python-modules/baycomp/default.nix18
-rw-r--r--pkgs/development/python-modules/bayesian-optimization/default.nix46
-rw-r--r--pkgs/development/python-modules/bayespy/default.nix46
-rw-r--r--pkgs/development/python-modules/bbox/default.nix31
-rw-r--r--pkgs/development/python-modules/bc-detect-secrets/default.nix50
-rw-r--r--pkgs/development/python-modules/bc-jsonpath-ng/default.nix23
-rw-r--r--pkgs/development/python-modules/bc-python-hcl2/default.nix28
-rw-r--r--pkgs/development/python-modules/bcdoc/default.nix13
-rw-r--r--pkgs/development/python-modules/bcf/default.nix27
-rw-r--r--pkgs/development/python-modules/bcg/default.nix33
-rw-r--r--pkgs/development/python-modules/bch/default.nix15
-rw-r--r--pkgs/development/python-modules/bcrypt/3.nix34
-rw-r--r--pkgs/development/python-modules/bcrypt/default.nix59
-rw-r--r--pkgs/development/python-modules/bdffont/default.nix44
-rw-r--r--pkgs/development/python-modules/beaker/default.nix93
-rw-r--r--pkgs/development/python-modules/beancount-black/default.nix35
-rw-r--r--pkgs/development/python-modules/beancount-docverif/default.nix46
-rw-r--r--pkgs/development/python-modules/beancount-parser/default.nix35
-rw-r--r--pkgs/development/python-modules/beancount/default.nix41
-rw-r--r--pkgs/development/python-modules/beanhub-cli/default.nix75
-rw-r--r--pkgs/development/python-modules/beanhub-extract/default.nix48
-rw-r--r--pkgs/development/python-modules/beanhub-forms/default.nix52
-rw-r--r--pkgs/development/python-modules/beanhub-import/default.nix54
-rw-r--r--pkgs/development/python-modules/beanstalkc/default.nix8
-rw-r--r--pkgs/development/python-modules/beartype/default.nix23
-rw-r--r--pkgs/development/python-modules/beautiful-date/default.nix23
-rw-r--r--pkgs/development/python-modules/beautifulsoup4/default.nix60
-rw-r--r--pkgs/development/python-modules/beautifultable/default.nix29
-rw-r--r--pkgs/development/python-modules/beautysh/default.nix33
-rw-r--r--pkgs/development/python-modules/bech32/default.nix10
-rw-r--r--pkgs/development/python-modules/before-after/default.nix10
-rw-r--r--pkgs/development/python-modules/behave/default.nix68
-rw-r--r--pkgs/development/python-modules/bellows/default.nix55
-rw-r--r--pkgs/development/python-modules/bencode-py/default.nix15
-rw-r--r--pkgs/development/python-modules/bencoder/default.nix10
-rw-r--r--pkgs/development/python-modules/beniget/default.nix34
-rw-r--r--pkgs/development/python-modules/bentoml/default.nix240
-rw-r--r--pkgs/development/python-modules/berkeleydb/default.nix38
-rw-r--r--pkgs/development/python-modules/bespon/default.nix12
-rw-r--r--pkgs/development/python-modules/betacode/default.nix10
-rw-r--r--pkgs/development/python-modules/betamax-matchers/default.nix38
-rw-r--r--pkgs/development/python-modules/betamax-serializers/default.nix16
-rw-r--r--pkgs/development/python-modules/betamax/default.nix11
-rw-r--r--pkgs/development/python-modules/betterproto/default.nix1
-rw-r--r--pkgs/development/python-modules/beziers/default.nix32
-rw-r--r--pkgs/development/python-modules/bibtexparser/default.nix30
-rw-r--r--pkgs/development/python-modules/bidict/default.nix28
-rw-r--r--pkgs/development/python-modules/bids-validator/default.nix30
-rw-r--r--pkgs/development/python-modules/biliass/default.nix35
-rw-r--r--pkgs/development/python-modules/bilibili-api-python/default.nix76
-rw-r--r--pkgs/development/python-modules/billiard/default.nix45
-rw-r--r--pkgs/development/python-modules/bimmer-connected/default.nix52
-rw-r--r--pkgs/development/python-modules/binance-connector/default.nix60
-rw-r--r--pkgs/development/python-modules/binary/default.nix25
-rw-r--r--pkgs/development/python-modules/binary2strings/default.nix27
-rw-r--r--pkgs/development/python-modules/binaryornot/default.nix8
-rw-r--r--pkgs/development/python-modules/bincopy/default.nix24
-rw-r--r--pkgs/development/python-modules/bindep/default.nix36
-rw-r--r--pkgs/development/python-modules/binho-host-adapter/default.nix9
-rw-r--r--pkgs/development/python-modules/binwalk/default.nix100
-rw-r--r--pkgs/development/python-modules/biom-format/default.nix61
-rw-r--r--pkgs/development/python-modules/biopandas/default.nix75
-rw-r--r--pkgs/development/python-modules/biopython/close_parser_on_time.patch18
-rw-r--r--pkgs/development/python-modules/biopython/default.nix27
-rw-r--r--pkgs/development/python-modules/bip-utils/default.nix46
-rw-r--r--pkgs/development/python-modules/bip32/default.nix35
-rw-r--r--pkgs/development/python-modules/biplist/default.nix13
-rw-r--r--pkgs/development/python-modules/birch/default.nix33
-rw-r--r--pkgs/development/python-modules/bitarray/default.nix15
-rw-r--r--pkgs/development/python-modules/bitbox02/default.nix40
-rw-r--r--pkgs/development/python-modules/bitcoin-utils-fork-minimal/default.nix17
-rw-r--r--pkgs/development/python-modules/bitcoinlib/default.nix14
-rw-r--r--pkgs/development/python-modules/bitcoinrpc/default.nix25
-rw-r--r--pkgs/development/python-modules/bite-parser/default.nix19
-rw-r--r--pkgs/development/python-modules/bitlist/default.nix37
-rw-r--r--pkgs/development/python-modules/bitmath/default.nix15
-rw-r--r--pkgs/development/python-modules/bitsandbytes/default.nix86
-rw-r--r--pkgs/development/python-modules/bitstring/default.nix39
-rw-r--r--pkgs/development/python-modules/bitstruct/default.nix13
-rw-r--r--pkgs/development/python-modules/bitvavo-aio/default.nix15
-rw-r--r--pkgs/development/python-modules/bitvector-for-humans/default.nix41
-rw-r--r--pkgs/development/python-modules/bizkaibus/default.nix15
-rw-r--r--pkgs/development/python-modules/bjoern/default.nix10
-rw-r--r--pkgs/development/python-modules/bkcharts/default.nix17
-rw-r--r--pkgs/development/python-modules/black-macchiato/default.nix21
-rw-r--r--pkgs/development/python-modules/black/default.nix137
-rw-r--r--pkgs/development/python-modules/blacken-docs/default.nix42
-rw-r--r--pkgs/development/python-modules/blackjax/default.nix76
-rw-r--r--pkgs/development/python-modules/blackrenderer/default.nix61
-rw-r--r--pkgs/development/python-modules/bleach-allowlist/default.nix13
-rw-r--r--pkgs/development/python-modules/bleach/default.nix41
-rw-r--r--pkgs/development/python-modules/bleak-esphome/default.nix33
-rw-r--r--pkgs/development/python-modules/bleak/default.nix35
-rw-r--r--pkgs/development/python-modules/blebox-uniapi/default.nix35
-rw-r--r--pkgs/development/python-modules/bless/default.nix31
-rw-r--r--pkgs/development/python-modules/blessed/default.nix24
-rw-r--r--pkgs/development/python-modules/blessings/default.nix35
-rw-r--r--pkgs/development/python-modules/blinker/default.nix31
-rw-r--r--pkgs/development/python-modules/blinkpy/default.nix44
-rw-r--r--pkgs/development/python-modules/blinkstick/default.nix12
-rw-r--r--pkgs/development/python-modules/blis/default.nix64
-rw-r--r--pkgs/development/python-modules/blobfile/default.nix21
-rw-r--r--pkgs/development/python-modules/block-io/default.nix36
-rw-r--r--pkgs/development/python-modules/blockchain/default.nix13
-rw-r--r--pkgs/development/python-modules/blockdiag/default.nix59
-rw-r--r--pkgs/development/python-modules/blockfrost-python/default.nix13
-rw-r--r--pkgs/development/python-modules/blocksat-cli/default.nix55
-rw-r--r--pkgs/development/python-modules/bloodhound-py/default.nix25
-rw-r--r--pkgs/development/python-modules/bloodyad/default.nix47
-rw-r--r--pkgs/development/python-modules/blosc2/default.nix49
-rw-r--r--pkgs/development/python-modules/bluecurrent-api/default.nix25
-rw-r--r--pkgs/development/python-modules/bluemaestro-ble/default.nix31
-rw-r--r--pkgs/development/python-modules/bluepy-devices/default.nix11
-rw-r--r--pkgs/development/python-modules/bluepy/default.nix11
-rw-r--r--pkgs/development/python-modules/bluetooth-adapters/default.nix51
-rw-r--r--pkgs/development/python-modules/bluetooth-auto-recovery/default.nix4
-rw-r--r--pkgs/development/python-modules/bluetooth-data-tools/default.nix48
-rw-r--r--pkgs/development/python-modules/bluetooth-sensor-state-data/default.nix54
-rw-r--r--pkgs/development/python-modules/blurhash-python/default.nix23
-rw-r--r--pkgs/development/python-modules/blurhash/default.nix13
-rw-r--r--pkgs/development/python-modules/bme280spi/default.nix15
-rw-r--r--pkgs/development/python-modules/bme680/default.nix43
-rw-r--r--pkgs/development/python-modules/bnnumerizer/default.nix7
-rw-r--r--pkgs/development/python-modules/bnunicodenormalizer/default.nix13
-rw-r--r--pkgs/development/python-modules/boa-api/default.nix13
-rw-r--r--pkgs/development/python-modules/boiboite-opener-framework/default.nix37
-rw-r--r--pkgs/development/python-modules/boilerpy3/default.nix10
-rw-r--r--pkgs/development/python-modules/bokeh/default.nix109
-rw-r--r--pkgs/development/python-modules/bokeh/hardcode-nodejs-npmjs-paths.patch11
-rw-r--r--pkgs/development/python-modules/boltons/default.nix19
-rw-r--r--pkgs/development/python-modules/boltztrap2/default.nix44
-rw-r--r--pkgs/development/python-modules/bond-api/default.nix25
-rw-r--r--pkgs/development/python-modules/bond-async/default.nix23
-rw-r--r--pkgs/development/python-modules/bonsai/default.nix35
-rw-r--r--pkgs/development/python-modules/boolean-py/default.nix21
-rw-r--r--pkgs/development/python-modules/booleanoperations/default.nix14
-rw-r--r--pkgs/development/python-modules/boost-histogram/default.nix31
-rw-r--r--pkgs/development/python-modules/bootstrap/build/default.nix67
-rw-r--r--pkgs/development/python-modules/bootstrap/flit-core/default.nix15
-rw-r--r--pkgs/development/python-modules/bootstrap/installer/default.nix17
-rw-r--r--pkgs/development/python-modules/bootstrap/packaging/default.nix11
-rw-r--r--pkgs/development/python-modules/borb/default.nix70
-rw-r--r--pkgs/development/python-modules/bork/default.nix59
-rw-r--r--pkgs/development/python-modules/bork/tests.nix28
-rw-r--r--pkgs/development/python-modules/boschshcpy/default.nix27
-rw-r--r--pkgs/development/python-modules/boto/0005-Don-t-mock-list-subclass.patch21
-rw-r--r--pkgs/development/python-modules/boto/bug-953970_python3.8-compat.patch53
-rw-r--r--pkgs/development/python-modules/boto/default.nix57
-rw-r--r--pkgs/development/python-modules/boto3-stubs/default.nix25
-rw-r--r--pkgs/development/python-modules/boto3/default.nix39
-rw-r--r--pkgs/development/python-modules/botocore-stubs/default.nix27
-rw-r--r--pkgs/development/python-modules/botocore/default.nix43
-rw-r--r--pkgs/development/python-modules/botorch/default.nix63
-rw-r--r--pkgs/development/python-modules/bottle/default.nix51
-rw-r--r--pkgs/development/python-modules/bottleneck/default.nix44
-rw-r--r--pkgs/development/python-modules/bottombar/default.nix17
-rw-r--r--pkgs/development/python-modules/boxx/default.nix43
-rw-r--r--pkgs/development/python-modules/bpemb/default.nix31
-rw-r--r--pkgs/development/python-modules/bpycv/default.nix56
-rw-r--r--pkgs/development/python-modules/bpylist2/default.nix39
-rw-r--r--pkgs/development/python-modules/bpython/default.nix49
-rw-r--r--pkgs/development/python-modules/bqplot/default.nix25
-rw-r--r--pkgs/development/python-modules/bqscales/default.nix23
-rw-r--r--pkgs/development/python-modules/braceexpand/default.nix25
-rw-r--r--pkgs/development/python-modules/bracex/default.nix23
-rw-r--r--pkgs/development/python-modules/brainflow/default.nix39
-rw-r--r--pkgs/development/python-modules/braintree/default.nix53
-rw-r--r--pkgs/development/python-modules/branca/default.nix35
-rw-r--r--pkgs/development/python-modules/bravado-core/default.nix56
-rw-r--r--pkgs/development/python-modules/bravia-tv/default.nix11
-rw-r--r--pkgs/development/python-modules/breathe/default.nix57
-rw-r--r--pkgs/development/python-modules/breezy/default.nix101
-rw-r--r--pkgs/development/python-modules/brelpy/default.nix20
-rw-r--r--pkgs/development/python-modules/brian2/default.nix42
-rw-r--r--pkgs/development/python-modules/bring-api/default.nix6
-rw-r--r--pkgs/development/python-modules/broadbean/default.nix28
-rw-r--r--pkgs/development/python-modules/brother-ql/default.nix55
-rw-r--r--pkgs/development/python-modules/brother/default.nix43
-rw-r--r--pkgs/development/python-modules/brotli-asgi/default.nix27
-rw-r--r--pkgs/development/python-modules/brotli/default.nix21
-rw-r--r--pkgs/development/python-modules/brotlicffi/default.nix25
-rw-r--r--pkgs/development/python-modules/brotlipy/default.nix28
-rw-r--r--pkgs/development/python-modules/brottsplatskartan/default.nix15
-rw-r--r--pkgs/development/python-modules/browser-cookie3/default.nix23
-rw-r--r--pkgs/development/python-modules/brunt/default.nix19
-rw-r--r--pkgs/development/python-modules/bsddb3/default.nix34
-rw-r--r--pkgs/development/python-modules/bsdiff4/default.nix13
-rw-r--r--pkgs/development/python-modules/bson/default.nix11
-rw-r--r--pkgs/development/python-modules/bsuite/default.nix2
-rw-r--r--pkgs/development/python-modules/bt-proximity/default.nix13
-rw-r--r--pkgs/development/python-modules/btchip-python/default.nix23
-rw-r--r--pkgs/development/python-modules/btest/default.nix11
-rw-r--r--pkgs/development/python-modules/bthome-ble/default.nix53
-rw-r--r--pkgs/development/python-modules/bthomehub5-devicelist/default.nix40
-rw-r--r--pkgs/development/python-modules/btrees/default.nix25
-rw-r--r--pkgs/development/python-modules/btrfs/default.nix16
-rw-r--r--pkgs/development/python-modules/btrfsutil/default.nix12
-rw-r--r--pkgs/development/python-modules/btsmarthub-devicelist/default.nix10
-rw-r--r--pkgs/development/python-modules/btsocket/default.nix25
-rw-r--r--pkgs/development/python-modules/bubop/default.nix23
-rw-r--r--pkgs/development/python-modules/bucketstore/default.nix37
-rw-r--r--pkgs/development/python-modules/bugsnag/default.nix29
-rw-r--r--pkgs/development/python-modules/bugwarrior/default.nix46
-rw-r--r--pkgs/development/python-modules/bugz/default.nix8
-rw-r--r--pkgs/development/python-modules/bugzilla/default.nix16
-rw-r--r--pkgs/development/python-modules/buienradar/default.nix34
-rw-r--r--pkgs/development/python-modules/build/default.nix79
-rw-r--r--pkgs/development/python-modules/buildcatrust/default.nix19
-rw-r--r--pkgs/development/python-modules/buildout/default.nix15
-rw-r--r--pkgs/development/python-modules/bump2version/default.nix52
-rw-r--r--pkgs/development/python-modules/bumpfontversion/default.nix53
-rw-r--r--pkgs/development/python-modules/bumps/default.nix17
-rw-r--r--pkgs/development/python-modules/bunch/default.nix15
-rw-r--r--pkgs/development/python-modules/bundlewrap-keepass/default.nix24
-rw-r--r--pkgs/development/python-modules/bundlewrap-pass/default.nix24
-rw-r--r--pkgs/development/python-modules/bundlewrap-teamvault/default.nix29
-rw-r--r--pkgs/development/python-modules/bundlewrap/default.nix54
-rw-r--r--pkgs/development/python-modules/busylight-for-humans/default.nix67
-rw-r--r--pkgs/development/python-modules/busypie/default.nix23
-rw-r--r--pkgs/development/python-modules/bwapy/default.nix22
-rw-r--r--pkgs/development/python-modules/bx-py-utils/default.nix53
-rw-r--r--pkgs/development/python-modules/bx-python/default.nix59
-rw-r--r--pkgs/development/python-modules/bytecode/default.nix21
-rw-r--r--pkgs/development/python-modules/bytewax/default.nix74
-rw-r--r--pkgs/development/python-modules/bz2file/default.nix7
-rw-r--r--pkgs/development/python-modules/cachecontrol/default.nix41
-rw-r--r--pkgs/development/python-modules/cached-ipaddress/default.nix43
-rw-r--r--pkgs/development/python-modules/cached-property/default.nix21
-rw-r--r--pkgs/development/python-modules/cachelib/default.nix13
-rw-r--r--pkgs/development/python-modules/cachetools/default.nix29
-rw-r--r--pkgs/development/python-modules/cachey/default.nix27
-rw-r--r--pkgs/development/python-modules/cachier/default.nix46
-rw-r--r--pkgs/development/python-modules/cachy/default.nix11
-rw-r--r--pkgs/development/python-modules/cadquery/default.nix100
-rw-r--r--pkgs/development/python-modules/caio/default.nix35
-rw-r--r--pkgs/development/python-modules/cairocffi/default.nix55
-rw-r--r--pkgs/development/python-modules/cairocffi/dlopen-paths.patch31
-rw-r--r--pkgs/development/python-modules/cairosvg/default.nix35
-rw-r--r--pkgs/development/python-modules/caldav/default.nix42
-rw-r--r--pkgs/development/python-modules/callee/default.nix13
-rw-r--r--pkgs/development/python-modules/calmjs-parse/default.nix17
-rw-r--r--pkgs/development/python-modules/calmjs-types/default.nix11
-rw-r--r--pkgs/development/python-modules/calmjs/default.nix19
-rw-r--r--pkgs/development/python-modules/calver/default.nix15
-rw-r--r--pkgs/development/python-modules/calysto-scheme/default.nix19
-rw-r--r--pkgs/development/python-modules/calysto/default.nix17
-rw-r--r--pkgs/development/python-modules/camel-converter/default.nix11
-rw-r--r--pkgs/development/python-modules/camelot/default.nix37
-rw-r--r--pkgs/development/python-modules/canals/default.nix35
-rw-r--r--pkgs/development/python-modules/canmatrix/default.nix87
-rw-r--r--pkgs/development/python-modules/canonicaljson/default.nix32
-rw-r--r--pkgs/development/python-modules/canopen/default.nix35
-rw-r--r--pkgs/development/python-modules/cantools/default.nix41
-rw-r--r--pkgs/development/python-modules/capstone/4.nix35
-rw-r--r--pkgs/development/python-modules/capstone/default.nix36
-rw-r--r--pkgs/development/python-modules/captcha/default.nix31
-rw-r--r--pkgs/development/python-modules/capturer/default.nix11
-rw-r--r--pkgs/development/python-modules/carbon/default.nix54
-rw-r--r--pkgs/development/python-modules/cart/default.nix29
-rw-r--r--pkgs/development/python-modules/cartopy/default.nix70
-rw-r--r--pkgs/development/python-modules/casa-formats-io/default.nix51
-rw-r--r--pkgs/development/python-modules/casbin/default.nix37
-rw-r--r--pkgs/development/python-modules/case/default.nix51
-rw-r--r--pkgs/development/python-modules/cashaddress/default.nix25
-rw-r--r--pkgs/development/python-modules/cashews/default.nix70
-rw-r--r--pkgs/development/python-modules/cassandra-driver/default.nix147
-rw-r--r--pkgs/development/python-modules/castepxbin/default.nix27
-rw-r--r--pkgs/development/python-modules/casttube/default.nix7
-rw-r--r--pkgs/development/python-modules/catalogue/default.nix30
-rw-r--r--pkgs/development/python-modules/catboost/default.nix34
-rw-r--r--pkgs/development/python-modules/catkin-pkg/default.nix12
-rw-r--r--pkgs/development/python-modules/catppuccin/default.nix32
-rw-r--r--pkgs/development/python-modules/cattrs/default.nix58
-rw-r--r--pkgs/development/python-modules/causal-conv1d/default.nix69
-rw-r--r--pkgs/development/python-modules/cbor/default.nix6
-rw-r--r--pkgs/development/python-modules/cbor2/default.nix36
-rw-r--r--pkgs/development/python-modules/cccolutils/default.nix31
-rw-r--r--pkgs/development/python-modules/celery-redbeat/default.nix25
-rw-r--r--pkgs/development/python-modules/celery-singleton/default.nix36
-rw-r--r--pkgs/development/python-modules/celery-types/default.nix22
-rw-r--r--pkgs/development/python-modules/celery/default.nix127
-rw-r--r--pkgs/development/python-modules/cement/default.nix13
-rw-r--r--pkgs/development/python-modules/cemm/default.nix40
-rw-r--r--pkgs/development/python-modules/censys/default.nix41
-rw-r--r--pkgs/development/python-modules/cepa/default.nix48
-rw-r--r--pkgs/development/python-modules/cerberus/default.nix23
-rw-r--r--pkgs/development/python-modules/cert-chain-resolver/default.nix25
-rw-r--r--pkgs/development/python-modules/certauth/default.nix29
-rw-r--r--pkgs/development/python-modules/certbot-dns-cloudflare/default.nix17
-rw-r--r--pkgs/development/python-modules/certbot-dns-google/default.nix19
-rw-r--r--pkgs/development/python-modules/certbot-dns-inwx/default.nix16
-rw-r--r--pkgs/development/python-modules/certbot-dns-ovh/default.nix17
-rw-r--r--pkgs/development/python-modules/certbot-dns-rfc2136/default.nix17
-rw-r--r--pkgs/development/python-modules/certbot-dns-route53/default.nix17
-rw-r--r--pkgs/development/python-modules/certbot/default.nix70
-rw-r--r--pkgs/development/python-modules/certifi/default.nix31
-rw-r--r--pkgs/development/python-modules/certipy-ad/default.nix43
-rw-r--r--pkgs/development/python-modules/certipy/default.nix12
-rw-r--r--pkgs/development/python-modules/certomancer/default.nix92
-rw-r--r--pkgs/development/python-modules/certvalidator/default.nix15
-rw-r--r--pkgs/development/python-modules/cexprtk/default.nix9
-rw-r--r--pkgs/development/python-modules/cf-xarray/default.nix68
-rw-r--r--pkgs/development/python-modules/cffconvert/default.nix37
-rw-r--r--pkgs/development/python-modules/cffi/default.nix142
-rw-r--r--pkgs/development/python-modules/cffsubr/default.nix68
-rw-r--r--pkgs/development/python-modules/cfgv/default.nix19
-rw-r--r--pkgs/development/python-modules/cfn-flip/default.nix30
-rw-r--r--pkgs/development/python-modules/cfn-lint/default.nix46
-rw-r--r--pkgs/development/python-modules/cfscrape/default.nix13
-rw-r--r--pkgs/development/python-modules/cftime/default.nix33
-rw-r--r--pkgs/development/python-modules/cgen/default.nix19
-rw-r--r--pkgs/development/python-modules/cgroup-utils/default.nix41
-rw-r--r--pkgs/development/python-modules/chacha20poly1305-reuseable/default.nix53
-rw-r--r--pkgs/development/python-modules/chacha20poly1305/default.nix15
-rw-r--r--pkgs/development/python-modules/chai/default.nix14
-rw-r--r--pkgs/development/python-modules/chainer/default.nix43
-rw-r--r--pkgs/development/python-modules/chainmap/default.nix6
-rw-r--r--pkgs/development/python-modules/chainstream/default.nix15
-rw-r--r--pkgs/development/python-modules/chalice/default.nix51
-rw-r--r--pkgs/development/python-modules/chameleon/default.nix36
-rw-r--r--pkgs/development/python-modules/changefinder/default.nix46
-rw-r--r--pkgs/development/python-modules/changefinder/fix_test_invocation.patch13
-rw-r--r--pkgs/development/python-modules/channels-redis/default.nix31
-rw-r--r--pkgs/development/python-modules/channels/default.nix53
-rw-r--r--pkgs/development/python-modules/character-encoding-utils/default.nix37
-rw-r--r--pkgs/development/python-modules/characteristic/default.nix7
-rw-r--r--pkgs/development/python-modules/chardet/default.nix19
-rw-r--r--pkgs/development/python-modules/charset-normalizer/default.nix27
-rw-r--r--pkgs/development/python-modules/chart-studio/default.nix58
-rw-r--r--pkgs/development/python-modules/chat-downloader/default.nix23
-rw-r--r--pkgs/development/python-modules/check-manifest/default.nix35
-rw-r--r--pkgs/development/python-modules/checkdmarc/default.nix51
-rw-r--r--pkgs/development/python-modules/checksumdir/default.nix15
-rw-r--r--pkgs/development/python-modules/cheetah3/default.nix15
-rw-r--r--pkgs/development/python-modules/cheroot/default.nix67
-rw-r--r--pkgs/development/python-modules/cherrypy-cors/default.nix23
-rw-r--r--pkgs/development/python-modules/cherrypy/default.nix143
-rw-r--r--pkgs/development/python-modules/chess/default.nix17
-rw-r--r--pkgs/development/python-modules/chevron/default.nix11
-rw-r--r--pkgs/development/python-modules/chex/default.nix39
-rw-r--r--pkgs/development/python-modules/chirpstack-api/default.nix17
-rw-r--r--pkgs/development/python-modules/chispa/default.nix21
-rw-r--r--pkgs/development/python-modules/chroma-hnswlib/default.nix31
-rw-r--r--pkgs/development/python-modules/chromadb/default.nix52
-rw-r--r--pkgs/development/python-modules/chromaprint/default.nix16
-rw-r--r--pkgs/development/python-modules/ci-info/default.nix16
-rw-r--r--pkgs/development/python-modules/ci-py/default.nix19
-rw-r--r--pkgs/development/python-modules/cinemagoer/default.nix15
-rw-r--r--pkgs/development/python-modules/circuit-webhook/default.nix13
-rw-r--r--pkgs/development/python-modules/circuitbreaker/default.nix19
-rw-r--r--pkgs/development/python-modules/circus/default.nix81
-rw-r--r--pkgs/development/python-modules/cirq-aqt/default.nix22
-rw-r--r--pkgs/development/python-modules/cirq-core/default.nix121
-rw-r--r--pkgs/development/python-modules/cirq-ft/default.nix47
-rw-r--r--pkgs/development/python-modules/cirq-google/default.nix24
-rw-r--r--pkgs/development/python-modules/cirq-ionq/default.nix22
-rw-r--r--pkgs/development/python-modules/cirq-pasqal/default.nix22
-rw-r--r--pkgs/development/python-modules/cirq-rigetti/default.nix92
-rw-r--r--pkgs/development/python-modules/cirq-web/default.nix20
-rw-r--r--pkgs/development/python-modules/cirq/default.nix34
-rw-r--r--pkgs/development/python-modules/ciscoconfparse/default.nix53
-rw-r--r--pkgs/development/python-modules/ciscomobilityexpress/default.nix15
-rw-r--r--pkgs/development/python-modules/ciso8601/default.nix21
-rw-r--r--pkgs/development/python-modules/citeproc-py/default.nix40
-rw-r--r--pkgs/development/python-modules/cjkwrap/default.nix8
-rw-r--r--pkgs/development/python-modules/ckcc-protocol/default.nix21
-rw-r--r--pkgs/development/python-modules/clarabel/default.nix31
-rw-r--r--pkgs/development/python-modules/clarifai-grpc/default.nix4
-rw-r--r--pkgs/development/python-modules/clarifai/default.nix24
-rw-r--r--pkgs/development/python-modules/claripy/default.nix8
-rw-r--r--pkgs/development/python-modules/class-doc/default.nix31
-rw-r--r--pkgs/development/python-modules/classify-imports/default.nix19
-rw-r--r--pkgs/development/python-modules/cld2-cffi/default.nix26
-rw-r--r--pkgs/development/python-modules/cle/default.nix12
-rw-r--r--pkgs/development/python-modules/clean-fid/default.nix27
-rw-r--r--pkgs/development/python-modules/cleanlab/default.nix86
-rw-r--r--pkgs/development/python-modules/cleanvision/default.nix79
-rw-r--r--pkgs/development/python-modules/cleo/default.nix23
-rw-r--r--pkgs/development/python-modules/clevercsv/default.nix39
-rw-r--r--pkgs/development/python-modules/clf/default.nix16
-rw-r--r--pkgs/development/python-modules/cli-helpers/default.nix23
-rw-r--r--pkgs/development/python-modules/cli-ui/default.nix45
-rw-r--r--pkgs/development/python-modules/cliche/default.nix13
-rw-r--r--pkgs/development/python-modules/click-aliases/default.nix25
-rw-r--r--pkgs/development/python-modules/click-command-tree/default.nix23
-rw-r--r--pkgs/development/python-modules/click-completion/default.nix23
-rw-r--r--pkgs/development/python-modules/click-configfile/default.nix25
-rw-r--r--pkgs/development/python-modules/click-datetime/default.nix10
-rw-r--r--pkgs/development/python-modules/click-default-group/default.nix31
-rw-r--r--pkgs/development/python-modules/click-didyoumean/default.nix27
-rw-r--r--pkgs/development/python-modules/click-help-colors/default.nix25
-rw-r--r--pkgs/development/python-modules/click-log/default.nix9
-rw-r--r--pkgs/development/python-modules/click-odoo-contrib/default.nix23
-rw-r--r--pkgs/development/python-modules/click-odoo/default.nix21
-rw-r--r--pkgs/development/python-modules/click-option-group/default.nix25
-rw-r--r--pkgs/development/python-modules/click-plugins/default.nix18
-rw-r--r--pkgs/development/python-modules/click-repl/default.nix31
-rw-r--r--pkgs/development/python-modules/click-shell/default.nix23
-rw-r--r--pkgs/development/python-modules/click-spinner/default.nix38
-rw-r--r--pkgs/development/python-modules/click-threading/default.nix15
-rw-r--r--pkgs/development/python-modules/click/default.nix39
-rw-r--r--pkgs/development/python-modules/clickclick/default.nix29
-rw-r--r--pkgs/development/python-modules/clickgen/default.nix37
-rw-r--r--pkgs/development/python-modules/clickhouse-cityhash/default.nix17
-rw-r--r--pkgs/development/python-modules/clickhouse-cli/default.nix27
-rw-r--r--pkgs/development/python-modules/clickhouse-connect/default.nix48
-rw-r--r--pkgs/development/python-modules/clickhouse-driver/default.nix31
-rw-r--r--pkgs/development/python-modules/cliff/default.nix52
-rw-r--r--pkgs/development/python-modules/cliff/tests.nix11
-rw-r--r--pkgs/development/python-modules/clifford/default.nix31
-rw-r--r--pkgs/development/python-modules/cligj/default.nix18
-rw-r--r--pkgs/development/python-modules/clikit/default.nix61
-rw-r--r--pkgs/development/python-modules/clint/default.nix35
-rw-r--r--pkgs/development/python-modules/clintermission/default.nix21
-rw-r--r--pkgs/development/python-modules/clip-anytorch/default.nix58
-rw-r--r--pkgs/development/python-modules/clip/default.nix17
-rw-r--r--pkgs/development/python-modules/clize/default.nix52
-rw-r--r--pkgs/development/python-modules/clldutils/default.nix41
-rw-r--r--pkgs/development/python-modules/cloudevents/default.nix29
-rw-r--r--pkgs/development/python-modules/cloudflare/default.nix35
-rw-r--r--pkgs/development/python-modules/cloudpathlib/default.nix59
-rw-r--r--pkgs/development/python-modules/cloudpickle/default.nix33
-rw-r--r--pkgs/development/python-modules/cloudscraper/default.nix19
-rw-r--r--pkgs/development/python-modules/cloudsmith-api/default.nix23
-rw-r--r--pkgs/development/python-modules/cloudsplaining/default.nix67
-rw-r--r--pkgs/development/python-modules/cloup/default.nix37
-rw-r--r--pkgs/development/python-modules/clr-loader/default.nix42
-rw-r--r--pkgs/development/python-modules/clr-loader/deps.nix39
-rw-r--r--pkgs/development/python-modules/cltk/default.nix92
-rw-r--r--pkgs/development/python-modules/clustershell/default.nix96
-rw-r--r--pkgs/development/python-modules/cma/default.nix33
-rw-r--r--pkgs/development/python-modules/cmaes/default.nix33
-rw-r--r--pkgs/development/python-modules/cmake/default.nix17
-rw-r--r--pkgs/development/python-modules/cmarkgfm/default.nix29
-rw-r--r--pkgs/development/python-modules/cmd2-ext-test/default.nix31
-rw-r--r--pkgs/development/python-modules/cmd2/default.nix83
-rw-r--r--pkgs/development/python-modules/cmdline/default.nix7
-rw-r--r--pkgs/development/python-modules/cmdstanpy/default.nix60
-rw-r--r--pkgs/development/python-modules/cmigemo/default.nix14
-rw-r--r--pkgs/development/python-modules/cmsdials/default.nix53
-rw-r--r--pkgs/development/python-modules/cmsis-pack-manager/default.nix58
-rw-r--r--pkgs/development/python-modules/cmsis-svd/default.nix45
-rw-r--r--pkgs/development/python-modules/cnvkit/default.nix50
-rw-r--r--pkgs/development/python-modules/co2signal/default.nix11
-rw-r--r--pkgs/development/python-modules/coapthon3/default.nix10
-rw-r--r--pkgs/development/python-modules/cobs/default.nix9
-rw-r--r--pkgs/development/python-modules/cock/default.nix15
-rw-r--r--pkgs/development/python-modules/coconut/default.nix47
-rw-r--r--pkgs/development/python-modules/cocotb-bus/default.nix7
-rw-r--r--pkgs/development/python-modules/cocotb/default.nix66
-rw-r--r--pkgs/development/python-modules/codecov/default.nix17
-rw-r--r--pkgs/development/python-modules/codepy/default.nix21
-rw-r--r--pkgs/development/python-modules/coffea/default.nix105
-rw-r--r--pkgs/development/python-modules/cogapp/default.nix17
-rw-r--r--pkgs/development/python-modules/cohere/default.nix62
-rw-r--r--pkgs/development/python-modules/coincurve/default.nix79
-rw-r--r--pkgs/development/python-modules/coinmetrics-api-client/default.nix47
-rw-r--r--pkgs/development/python-modules/colander/default.nix27
-rw-r--r--pkgs/development/python-modules/colanderalchemy/default.nix16
-rw-r--r--pkgs/development/python-modules/colbert-ai/default.nix69
-rw-r--r--pkgs/development/python-modules/collections-extended/default.nix25
-rw-r--r--pkgs/development/python-modules/collidoscope/default.nix29
-rw-r--r--pkgs/development/python-modules/color-operations/default.nix58
-rw-r--r--pkgs/development/python-modules/colorama/default.nix10
-rw-r--r--pkgs/development/python-modules/colorcet/default.nix29
-rw-r--r--pkgs/development/python-modules/colorclass/default.nix6
-rw-r--r--pkgs/development/python-modules/colored-traceback/default.nix20
-rw-r--r--pkgs/development/python-modules/colored/default.nix29
-rw-r--r--pkgs/development/python-modules/coloredlogs/default.nix27
-rw-r--r--pkgs/development/python-modules/colorful/default.nix19
-rw-r--r--pkgs/development/python-modules/colorlog/default.nix23
-rw-r--r--pkgs/development/python-modules/colorlover/default.nix9
-rw-r--r--pkgs/development/python-modules/colormath/default.nix31
-rw-r--r--pkgs/development/python-modules/colorspacious/default.nix12
-rw-r--r--pkgs/development/python-modules/colorthief/default.nix13
-rw-r--r--pkgs/development/python-modules/colorzero/default.nix24
-rw-r--r--pkgs/development/python-modules/colour/default.nix17
-rw-r--r--pkgs/development/python-modules/colout/default.nix23
-rw-r--r--pkgs/development/python-modules/cometblue-lite/default.nix17
-rw-r--r--pkgs/development/python-modules/comicon/default.nix36
-rw-r--r--pkgs/development/python-modules/comm/default.nix28
-rw-r--r--pkgs/development/python-modules/command-runner/default.nix35
-rw-r--r--pkgs/development/python-modules/commandlines/default.nix14
-rw-r--r--pkgs/development/python-modules/commandparse/default.nix15
-rw-r--r--pkgs/development/python-modules/commentjson/default.nix16
-rw-r--r--pkgs/development/python-modules/commitizen/default.nix137
-rw-r--r--pkgs/development/python-modules/commoncode/default.nix91
-rw-r--r--pkgs/development/python-modules/commonmark/default.nix11
-rw-r--r--pkgs/development/python-modules/compiledb/default.nix31
-rw-r--r--pkgs/development/python-modules/complycube/default.nix21
-rw-r--r--pkgs/development/python-modules/compreffor/default.nix33
-rw-r--r--pkgs/development/python-modules/compressai/default.nix37
-rw-r--r--pkgs/development/python-modules/compressed-rtf/default.nix29
-rw-r--r--pkgs/development/python-modules/concurrent-log-handler/default.nix23
-rw-r--r--pkgs/development/python-modules/conda-libmamba-solver/default.nix10
-rw-r--r--pkgs/development/python-modules/conda-package-handling/default.nix6
-rw-r--r--pkgs/development/python-modules/conda-package-streaming/default.nix8
-rw-r--r--pkgs/development/python-modules/conda/default.nix10
-rw-r--r--pkgs/development/python-modules/confection/default.nix29
-rw-r--r--pkgs/development/python-modules/configargparse/default.nix25
-rw-r--r--pkgs/development/python-modules/configclass/default.nix13
-rw-r--r--pkgs/development/python-modules/confight/default.nix19
-rw-r--r--pkgs/development/python-modules/configobj/default.nix33
-rw-r--r--pkgs/development/python-modules/configparser/default.nix25
-rw-r--r--pkgs/development/python-modules/configshell/default.nix19
-rw-r--r--pkgs/development/python-modules/configupdater/default.nix20
-rw-r--r--pkgs/development/python-modules/confluent-kafka/default.nix49
-rw-r--r--pkgs/development/python-modules/confusable-homoglyphs/default.nix54
-rw-r--r--pkgs/development/python-modules/confuse/default.nix31
-rw-r--r--pkgs/development/python-modules/connect-box/default.nix37
-rw-r--r--pkgs/development/python-modules/connection-pool/default.nix9
-rw-r--r--pkgs/development/python-modules/connexion/default.nix76
-rw-r--r--pkgs/development/python-modules/connio/default.nix18
-rw-r--r--pkgs/development/python-modules/cons/default.nix23
-rw-r--r--pkgs/development/python-modules/consolekit/default.nix42
-rw-r--r--pkgs/development/python-modules/consonance/default.nix35
-rw-r--r--pkgs/development/python-modules/constantly/default.nix33
-rw-r--r--pkgs/development/python-modules/construct-classes/default.nix32
-rw-r--r--pkgs/development/python-modules/construct-typing/default.nix62
-rw-r--r--pkgs/development/python-modules/construct/default.nix39
-rw-r--r--pkgs/development/python-modules/consul/default.nix16
-rw-r--r--pkgs/development/python-modules/container-inspector/default.nix47
-rw-r--r--pkgs/development/python-modules/contexter/default.nix9
-rw-r--r--pkgs/development/python-modules/contextlib2/default.nix44
-rw-r--r--pkgs/development/python-modules/contexttimer/default.nix20
-rw-r--r--pkgs/development/python-modules/contourpy/default.nix129
-rw-r--r--pkgs/development/python-modules/controku/default.nix57
-rw-r--r--pkgs/development/python-modules/convertdate/default.nix23
-rw-r--r--pkgs/development/python-modules/convertertools/default.nix51
-rw-r--r--pkgs/development/python-modules/conway-polynomials/default.nix18
-rw-r--r--pkgs/development/python-modules/cookiecutter/default.nix66
-rw-r--r--pkgs/development/python-modules/cookies/default.nix15
-rw-r--r--pkgs/development/python-modules/coordinates/default.nix28
-rw-r--r--pkgs/development/python-modules/coqpit/default.nix23
-rw-r--r--pkgs/development/python-modules/coreapi/default.nix2
-rw-r--r--pkgs/development/python-modules/coredis/default.nix29
-rw-r--r--pkgs/development/python-modules/coreschema/default.nix2
-rw-r--r--pkgs/development/python-modules/corner/default.nix106
-rw-r--r--pkgs/development/python-modules/cornice/default.nix45
-rw-r--r--pkgs/development/python-modules/correctionlib/default.nix76
-rw-r--r--pkgs/development/python-modules/corsair-scan/default.nix27
-rw-r--r--pkgs/development/python-modules/cose/default.nix23
-rw-r--r--pkgs/development/python-modules/cot/default.nix55
-rw-r--r--pkgs/development/python-modules/courlan/default.nix58
-rw-r--r--pkgs/development/python-modules/cov-core/default.nix18
-rw-r--r--pkgs/development/python-modules/coverage/default.nix21
-rw-r--r--pkgs/development/python-modules/coveralls/default.nix86
-rw-r--r--pkgs/development/python-modules/cpe/default.nix37
-rw-r--r--pkgs/development/python-modules/cppe/default.nix42
-rw-r--r--pkgs/development/python-modules/cppheaderparser/default.nix9
-rw-r--r--pkgs/development/python-modules/cppy/default.nix17
-rw-r--r--pkgs/development/python-modules/cpufeature/default.nix34
-rw-r--r--pkgs/development/python-modules/cpyparsing/default.nix35
-rw-r--r--pkgs/development/python-modules/craft-application-1/default.nix84
-rw-r--r--pkgs/development/python-modules/craft-application/default.nix48
-rw-r--r--pkgs/development/python-modules/craft-archives/default.nix40
-rw-r--r--pkgs/development/python-modules/craft-cli/default.nix46
-rw-r--r--pkgs/development/python-modules/craft-grammar/default.nix34
-rw-r--r--pkgs/development/python-modules/craft-parts/default.nix112
-rw-r--r--pkgs/development/python-modules/craft-platforms/default.nix62
-rw-r--r--pkgs/development/python-modules/craft-providers/default.nix51
-rw-r--r--pkgs/development/python-modules/craft-store/default.nix12
-rw-r--r--pkgs/development/python-modules/cram/default.nix13
-rw-r--r--pkgs/development/python-modules/cramjam/default.nix41
-rw-r--r--pkgs/development/python-modules/crashtest/default.nix9
-rw-r--r--pkgs/development/python-modules/crate/default.nix31
-rw-r--r--pkgs/development/python-modules/crayons/default.nix7
-rw-r--r--pkgs/development/python-modules/crc16/default.nix25
-rw-r--r--pkgs/development/python-modules/crc32c/default.nix17
-rw-r--r--pkgs/development/python-modules/crccheck/default.nix20
-rw-r--r--pkgs/development/python-modules/crcmod/default.nix6
-rw-r--r--pkgs/development/python-modules/credstash/default.nix4
-rw-r--r--pkgs/development/python-modules/criticality-score/default.nix15
-rw-r--r--pkgs/development/python-modules/cron-descriptor/default.nix30
-rw-r--r--pkgs/development/python-modules/croniter/default.nix33
-rw-r--r--pkgs/development/python-modules/cronsim/default.nix19
-rw-r--r--pkgs/development/python-modules/crontab/default.nix25
-rw-r--r--pkgs/development/python-modules/crossandra/default.nix39
-rw-r--r--pkgs/development/python-modules/crossplane/default.nix19
-rw-r--r--pkgs/development/python-modules/crownstone-cloud/default.nix57
-rw-r--r--pkgs/development/python-modules/crownstone-core/default.nix25
-rw-r--r--pkgs/development/python-modules/crownstone-sse/default.nix37
-rw-r--r--pkgs/development/python-modules/crownstone-uart/default.nix17
-rw-r--r--pkgs/development/python-modules/cryptacular/default.nix27
-rw-r--r--pkgs/development/python-modules/cryptg/default.nix25
-rw-r--r--pkgs/development/python-modules/cryptodatahub/default.nix49
-rw-r--r--pkgs/development/python-modules/cryptography/default.nix113
-rw-r--r--pkgs/development/python-modules/cryptography/vectors.nix26
-rw-r--r--pkgs/development/python-modules/cryptolyzer/default.nix48
-rw-r--r--pkgs/development/python-modules/cryptoparser/default.nix42
-rw-r--r--pkgs/development/python-modules/crysp/default.nix23
-rw-r--r--pkgs/development/python-modules/crytic-compile/default.nix28
-rw-r--r--pkgs/development/python-modules/cson/default.nix11
-rw-r--r--pkgs/development/python-modules/csrmesh/default.nix11
-rw-r--r--pkgs/development/python-modules/css-html-js-minify/default.nix32
-rw-r--r--pkgs/development/python-modules/css-inline/Cargo.lock683
-rw-r--r--pkgs/development/python-modules/css-inline/default.nix56
-rw-r--r--pkgs/development/python-modules/css-parser/default.nix13
-rw-r--r--pkgs/development/python-modules/cssbeautifier/default.nix25
-rw-r--r--pkgs/development/python-modules/csscompressor/default.nix10
-rw-r--r--pkgs/development/python-modules/cssmin/default.nix8
-rw-r--r--pkgs/development/python-modules/cssselect/default.nix25
-rw-r--r--pkgs/development/python-modules/cssselect2/default.nix28
-rw-r--r--pkgs/development/python-modules/cssutils/default.nix42
-rw-r--r--pkgs/development/python-modules/cstruct/default.nix17
-rw-r--r--pkgs/development/python-modules/csv2md/default.nix28
-rw-r--r--pkgs/development/python-modules/csvw/default.nix53
-rw-r--r--pkgs/development/python-modules/ctap-keyring-device/default.nix25
-rw-r--r--pkgs/development/python-modules/ctranslate2/default.nix45
-rw-r--r--pkgs/development/python-modules/ctypesgen/default.nix45
-rw-r--r--pkgs/development/python-modules/cu2qu/default.nix37
-rw-r--r--pkgs/development/python-modules/cucumber-tag-expressions/default.nix23
-rw-r--r--pkgs/development/python-modules/cufflinks/default.nix55
-rw-r--r--pkgs/development/python-modules/cupy/default.nix70
-rw-r--r--pkgs/development/python-modules/curio-compat/default.nix38
-rw-r--r--pkgs/development/python-modules/curio/default.nix42
-rw-r--r--pkgs/development/python-modules/curl-cffi/default.nix42
-rw-r--r--pkgs/development/python-modules/curl-cffi/use-system-libs.patch23
-rw-r--r--pkgs/development/python-modules/curlify/default.nix11
-rw-r--r--pkgs/development/python-modules/curtsies/default.nix33
-rw-r--r--pkgs/development/python-modules/curve25519-donna/default.nix8
-rw-r--r--pkgs/development/python-modules/curvefitgui/default.nix47
-rw-r--r--pkgs/development/python-modules/customtkinter/0001-Add-Missing-Cfg-Packages.patch15
-rw-r--r--pkgs/development/python-modules/customtkinter/default.nix60
-rw-r--r--pkgs/development/python-modules/cvelib/default.nix49
-rw-r--r--pkgs/development/python-modules/cvss/default.nix31
-rw-r--r--pkgs/development/python-modules/cvxopt/default.nix83
-rw-r--r--pkgs/development/python-modules/cvxpy/default.nix103
-rw-r--r--pkgs/development/python-modules/cwcwidth/default.nix16
-rw-r--r--pkgs/development/python-modules/cwl-upgrader/default.nix29
-rw-r--r--pkgs/development/python-modules/cwl-utils/default.nix4
-rw-r--r--pkgs/development/python-modules/cwlformat/default.nix27
-rw-r--r--pkgs/development/python-modules/cx-freeze/default.nix63
-rw-r--r--pkgs/development/python-modules/cx-oracle/default.nix7
-rw-r--r--pkgs/development/python-modules/cxxfilt/default.nix31
-rw-r--r--pkgs/development/python-modules/cxxheaderparser/default.nix39
-rw-r--r--pkgs/development/python-modules/cybox/default.nix56
-rw-r--r--pkgs/development/python-modules/cycler/default.nix21
-rw-r--r--pkgs/development/python-modules/cyclonedx-python-lib/default.nix84
-rw-r--r--pkgs/development/python-modules/cyclopts/default.nix64
-rw-r--r--pkgs/development/python-modules/cymem/default.nix23
-rw-r--r--pkgs/development/python-modules/cypari2/default.nix36
-rw-r--r--pkgs/development/python-modules/cypherpunkpay/default.nix56
-rw-r--r--pkgs/development/python-modules/cyrtranslit/default.nix35
-rw-r--r--pkgs/development/python-modules/cysignals/default.nix41
-rw-r--r--pkgs/development/python-modules/cython-test-exception-raiser/default.nix24
-rw-r--r--pkgs/development/python-modules/cython/0.nix58
-rw-r--r--pkgs/development/python-modules/cython/default.nix69
-rw-r--r--pkgs/development/python-modules/cytoolz/default.nix21
-rw-r--r--pkgs/development/python-modules/dacite/default.nix23
-rw-r--r--pkgs/development/python-modules/daemonize/default.nix8
-rw-r--r--pkgs/development/python-modules/daemonocle/default.nix23
-rw-r--r--pkgs/development/python-modules/daff/default.nix13
-rw-r--r--pkgs/development/python-modules/dahlia/default.nix31
-rw-r--r--pkgs/development/python-modules/daiquiri/default.nix25
-rw-r--r--pkgs/development/python-modules/dalle-mini/default.nix29
-rw-r--r--pkgs/development/python-modules/daphne/default.nix73
-rw-r--r--pkgs/development/python-modules/daqp/default.nix31
-rw-r--r--pkgs/development/python-modules/darkdetect/default.nix29
-rw-r--r--pkgs/development/python-modules/dasbus/default.nix32
-rw-r--r--pkgs/development/python-modules/dash-bootstrap-components/default.nix39
-rw-r--r--pkgs/development/python-modules/dash-core-components/default.nix9
-rw-r--r--pkgs/development/python-modules/dash-html-components/default.nix7
-rw-r--r--pkgs/development/python-modules/dash-renderer/default.nix7
-rw-r--r--pkgs/development/python-modules/dash-table/default.nix9
-rw-r--r--pkgs/development/python-modules/dash/default.nix113
-rw-r--r--pkgs/development/python-modules/dashing/default.nix15
-rw-r--r--pkgs/development/python-modules/dask-awkward/default.nix78
-rw-r--r--pkgs/development/python-modules/dask-expr/default.nix31
-rw-r--r--pkgs/development/python-modules/dask-gateway-server/default.nix49
-rw-r--r--pkgs/development/python-modules/dask-gateway/default.nix19
-rw-r--r--pkgs/development/python-modules/dask-glm/default.nix39
-rw-r--r--pkgs/development/python-modules/dask-histogram/default.nix45
-rw-r--r--pkgs/development/python-modules/dask-image/default.nix62
-rw-r--r--pkgs/development/python-modules/dask-jobqueue/default.nix145
-rw-r--r--pkgs/development/python-modules/dask-ml/default.nix85
-rw-r--r--pkgs/development/python-modules/dask-mpi/default.nix23
-rw-r--r--pkgs/development/python-modules/dask-yarn/default.nix60
-rw-r--r--pkgs/development/python-modules/dask/default.nix368
-rw-r--r--pkgs/development/python-modules/databases/default.nix75
-rw-r--r--pkgs/development/python-modules/databricks-cli/default.nix35
-rw-r--r--pkgs/development/python-modules/databricks-connect/default.nix43
-rw-r--r--pkgs/development/python-modules/databricks-sql-connector/default.nix68
-rw-r--r--pkgs/development/python-modules/dataclass-factory/default.nix19
-rw-r--r--pkgs/development/python-modules/dataclass-wizard/default.nix62
-rw-r--r--pkgs/development/python-modules/dataclasses-json/default.nix41
-rw-r--r--pkgs/development/python-modules/dataclasses-serialization/default.nix21
-rw-r--r--pkgs/development/python-modules/datadiff/default.nix15
-rw-r--r--pkgs/development/python-modules/datadog/default.nix48
-rw-r--r--pkgs/development/python-modules/datafusion/default.nix63
-rw-r--r--pkgs/development/python-modules/datalad-gooey/default.nix64
-rw-r--r--pkgs/development/python-modules/datalad-next/default.nix115
-rw-r--r--pkgs/development/python-modules/datalad/default.nix242
-rw-r--r--pkgs/development/python-modules/datamodeldict/default.nix21
-rw-r--r--pkgs/development/python-modules/datapoint/default.nix27
-rw-r--r--pkgs/development/python-modules/dataprep-ml/default.nix43
-rw-r--r--pkgs/development/python-modules/dataproperty/default.nix29
-rw-r--r--pkgs/development/python-modules/datasalad/default.nix46
-rw-r--r--pkgs/development/python-modules/dataset/default.nix19
-rw-r--r--pkgs/development/python-modules/datasets/default.nix52
-rw-r--r--pkgs/development/python-modules/datasette-publish-fly/default.nix25
-rw-r--r--pkgs/development/python-modules/datasette-template-sql/default.nix20
-rw-r--r--pkgs/development/python-modules/datasette/default.nix64
-rw-r--r--pkgs/development/python-modules/datashader/default.nix63
-rw-r--r--pkgs/development/python-modules/datashape/default.nix66
-rw-r--r--pkgs/development/python-modules/datashaper/default.nix49
-rw-r--r--pkgs/development/python-modules/datatable/default.nix41
-rw-r--r--pkgs/development/python-modules/datauri/default.nix38
-rw-r--r--pkgs/development/python-modules/datefinder/default.nix19
-rw-r--r--pkgs/development/python-modules/dateparser/default.nix48
-rw-r--r--pkgs/development/python-modules/datetime/default.nix17
-rw-r--r--pkgs/development/python-modules/dateutils/default.nix12
-rw-r--r--pkgs/development/python-modules/datrie/default.nix17
-rw-r--r--pkgs/development/python-modules/dawg-python/default.nix9
-rw-r--r--pkgs/development/python-modules/dazl/default.nix52
-rw-r--r--pkgs/development/python-modules/db-dtypes/default.nix41
-rw-r--r--pkgs/development/python-modules/dbf/default.nix23
-rw-r--r--pkgs/development/python-modules/dbfread/default.nix32
-rw-r--r--pkgs/development/python-modules/dbglib/default.nix19
-rw-r--r--pkgs/development/python-modules/dbt-adapters/default.nix52
-rw-r--r--pkgs/development/python-modules/dbt-bigquery/default.nix46
-rw-r--r--pkgs/development/python-modules/dbt-common/default.nix74
-rw-r--r--pkgs/development/python-modules/dbt-core/default.nix81
-rw-r--r--pkgs/development/python-modules/dbt-core/with-adapters.nix28
-rw-r--r--pkgs/development/python-modules/dbt-extractor/default.nix30
-rw-r--r--pkgs/development/python-modules/dbt-postgres/default.nix44
-rw-r--r--pkgs/development/python-modules/dbt-redshift/default.nix47
-rw-r--r--pkgs/development/python-modules/dbt-semantic-interfaces/default.nix48
-rw-r--r--pkgs/development/python-modules/dbt-snowflake/default.nix37
-rw-r--r--pkgs/development/python-modules/dbus-client-gen/default.nix9
-rw-r--r--pkgs/development/python-modules/dbus-deviation/default.nix21
-rw-r--r--pkgs/development/python-modules/dbus-fast/default.nix103
-rw-r--r--pkgs/development/python-modules/dbus-next/default.nix28
-rw-r--r--pkgs/development/python-modules/dbus-python-client-gen/default.nix21
-rw-r--r--pkgs/development/python-modules/dbus-python/default.nix155
-rw-r--r--pkgs/development/python-modules/dbus-python/fix-includedir.patch8
-rw-r--r--pkgs/development/python-modules/dbus-signature-pyparsing/default.nix17
-rw-r--r--pkgs/development/python-modules/dbutils/default.nix35
-rw-r--r--pkgs/development/python-modules/dcmstack/default.nix36
-rw-r--r--pkgs/development/python-modules/dctorch/default.nix23
-rw-r--r--pkgs/development/python-modules/ddt/default.nix35
-rw-r--r--pkgs/development/python-modules/deal-solver/default.nix21
-rw-r--r--pkgs/development/python-modules/deal/default.nix41
-rw-r--r--pkgs/development/python-modules/deap/default.nix25
-rw-r--r--pkgs/development/python-modules/debian-inspector/default.nix41
-rw-r--r--pkgs/development/python-modules/debian/default.nix19
-rw-r--r--pkgs/development/python-modules/debianbts/default.nix25
-rw-r--r--pkgs/development/python-modules/debtcollector/default.nix31
-rw-r--r--pkgs/development/python-modules/debtcollector/tests.nix7
-rw-r--r--pkgs/development/python-modules/debts/default.nix17
-rw-r--r--pkgs/development/python-modules/debuglater/default.nix31
-rw-r--r--pkgs/development/python-modules/debugpy/default.nix187
-rw-r--r--pkgs/development/python-modules/decli/default.nix25
-rw-r--r--pkgs/development/python-modules/decopatch/default.nix25
-rw-r--r--pkgs/development/python-modules/decorator/default.nix23
-rw-r--r--pkgs/development/python-modules/deebot-client/default.nix17
-rw-r--r--pkgs/development/python-modules/deemix/default.nix27
-rw-r--r--pkgs/development/python-modules/deep-chainmap/default.nix9
-rw-r--r--pkgs/development/python-modules/deep-translator/default.nix23
-rw-r--r--pkgs/development/python-modules/deepdiff/default.nix40
-rw-r--r--pkgs/development/python-modules/deepdish/default.nix19
-rw-r--r--pkgs/development/python-modules/deepl/default.nix27
-rw-r--r--pkgs/development/python-modules/deepmerge/default.nix27
-rw-r--r--pkgs/development/python-modules/deeptoolsintervals/default.nix18
-rw-r--r--pkgs/development/python-modules/deepwave/default.nix26
-rw-r--r--pkgs/development/python-modules/deezer-py/default.nix13
-rw-r--r--pkgs/development/python-modules/deezer-python/default.nix47
-rw-r--r--pkgs/development/python-modules/defang/default.nix25
-rw-r--r--pkgs/development/python-modules/defcon/default.nix35
-rw-r--r--pkgs/development/python-modules/deform/default.nix36
-rw-r--r--pkgs/development/python-modules/defusedcsv/default.nix21
-rw-r--r--pkgs/development/python-modules/defusedxml/default.nix30
-rw-r--r--pkgs/development/python-modules/dehinter/default.nix20
-rw-r--r--pkgs/development/python-modules/deid/default.nix23
-rw-r--r--pkgs/development/python-modules/dek/default.nix33
-rw-r--r--pkgs/development/python-modules/delegator-py/default.nix11
-rw-r--r--pkgs/development/python-modules/delorean/default.nix21
-rw-r--r--pkgs/development/python-modules/deltachat-rpc-client/default.nix38
-rw-r--r--pkgs/development/python-modules/deltachat/default.nix32
-rw-r--r--pkgs/development/python-modules/deltachat2/default.nix41
-rw-r--r--pkgs/development/python-modules/deltachat2/paths.patch13
-rw-r--r--pkgs/development/python-modules/deltalake/default.nix86
-rw-r--r--pkgs/development/python-modules/deluge-client/default.nix19
-rw-r--r--pkgs/development/python-modules/demes/default.nix33
-rw-r--r--pkgs/development/python-modules/demesdraw/default.nix37
-rw-r--r--pkgs/development/python-modules/demetriek/default.nix44
-rw-r--r--pkgs/development/python-modules/demjson3/default.nix15
-rw-r--r--pkgs/development/python-modules/demoji/default.nix31
-rw-r--r--pkgs/development/python-modules/dendropy/default.nix76
-rw-r--r--pkgs/development/python-modules/denonavr/default.nix47
-rw-r--r--pkgs/development/python-modules/dep-logic/default.nix37
-rw-r--r--pkgs/development/python-modules/dependency-injector/default.nix83
-rw-r--r--pkgs/development/python-modules/deploykit/default.nix34
-rw-r--r--pkgs/development/python-modules/deprecat/default.nix35
-rw-r--r--pkgs/development/python-modules/deprecated/default.nix30
-rw-r--r--pkgs/development/python-modules/deprecation-alias/default.nix39
-rw-r--r--pkgs/development/python-modules/deprecation/default.nix15
-rw-r--r--pkgs/development/python-modules/derpconf/default.nix21
-rw-r--r--pkgs/development/python-modules/desktop-entry-lib/default.nix13
-rw-r--r--pkgs/development/python-modules/desktop-notifier/default.nix50
-rw-r--r--pkgs/development/python-modules/detect-secrets/default.nix41
-rw-r--r--pkgs/development/python-modules/detectron2/default.nix153
-rw-r--r--pkgs/development/python-modules/devgoldyutils/default.nix30
-rw-r--r--pkgs/development/python-modules/devialet/default.nix25
-rw-r--r--pkgs/development/python-modules/devito/default.nix172
-rw-r--r--pkgs/development/python-modules/devolo-home-control-api/default.nix25
-rw-r--r--pkgs/development/python-modules/devolo-plc-api/default.nix37
-rw-r--r--pkgs/development/python-modules/devpi-common/default.nix47
-rw-r--r--pkgs/development/python-modules/devtools/default.nix29
-rw-r--r--pkgs/development/python-modules/dfdiskcache/default.nix17
-rw-r--r--pkgs/development/python-modules/diagrams/default.nix36
-rw-r--r--pkgs/development/python-modules/diceware/default.nix25
-rw-r--r--pkgs/development/python-modules/dicom-numpy/default.nix23
-rw-r--r--pkgs/development/python-modules/dicom2nifti/default.nix47
-rw-r--r--pkgs/development/python-modules/dicomweb-client/default.nix27
-rw-r--r--pkgs/development/python-modules/dict2xml/default.nix19
-rw-r--r--pkgs/development/python-modules/dictdiffer/default.nix25
-rw-r--r--pkgs/development/python-modules/dictionaries/default.nix7
-rw-r--r--pkgs/development/python-modules/dicttoxml/default.nix7
-rw-r--r--pkgs/development/python-modules/dicttoxml2/default.nix15
-rw-r--r--pkgs/development/python-modules/diff-cover/default.nix47
-rw-r--r--pkgs/development/python-modules/diff-match-patch/default.nix21
-rw-r--r--pkgs/development/python-modules/diffenator2/default.nix95
-rw-r--r--pkgs/development/python-modules/diffimg/default.nix37
-rw-r--r--pkgs/development/python-modules/diffsync/default.nix25
-rw-r--r--pkgs/development/python-modules/diffusers/default.nix176
-rw-r--r--pkgs/development/python-modules/digi-xbee/default.nix14
-rw-r--r--pkgs/development/python-modules/dill/default.nix25
-rw-r--r--pkgs/development/python-modules/dinghy/default.nix48
-rw-r--r--pkgs/development/python-modules/dingz/default.nix19
-rw-r--r--pkgs/development/python-modules/dio-chacon-wifi-api/default.nix48
-rw-r--r--pkgs/development/python-modules/diofant/default.nix35
-rw-r--r--pkgs/development/python-modules/dipy/default.nix23
-rw-r--r--pkgs/development/python-modules/directv/default.nix17
-rw-r--r--pkgs/development/python-modules/dirigera/default.nix4
-rw-r--r--pkgs/development/python-modules/dirty-equals/default.nix34
-rw-r--r--pkgs/development/python-modules/dirtyjson/default.nix30
-rw-r--r--pkgs/development/python-modules/discid/default.nix16
-rw-r--r--pkgs/development/python-modules/discogs-client/default.nix25
-rw-r--r--pkgs/development/python-modules/discordpy/default.nix71
-rw-r--r--pkgs/development/python-modules/discovery30303/default.nix53
-rw-r--r--pkgs/development/python-modules/discum/default.nix59
-rw-r--r--pkgs/development/python-modules/diskcache/default.nix25
-rw-r--r--pkgs/development/python-modules/dissect-archive/default.nix45
-rw-r--r--pkgs/development/python-modules/dissect-btrfs/default.nix35
-rw-r--r--pkgs/development/python-modules/dissect-cim/default.nix39
-rw-r--r--pkgs/development/python-modules/dissect-clfs/default.nix35
-rw-r--r--pkgs/development/python-modules/dissect-cobaltstrike/default.nix46
-rw-r--r--pkgs/development/python-modules/dissect-cstruct/default.nix29
-rw-r--r--pkgs/development/python-modules/dissect-esedb/default.nix31
-rw-r--r--pkgs/development/python-modules/dissect-etl/default.nix39
-rw-r--r--pkgs/development/python-modules/dissect-eventlog/default.nix33
-rw-r--r--pkgs/development/python-modules/dissect-evidence/default.nix37
-rw-r--r--pkgs/development/python-modules/dissect-executable/default.nix29
-rw-r--r--pkgs/development/python-modules/dissect-extfs/default.nix33
-rw-r--r--pkgs/development/python-modules/dissect-fat/default.nix31
-rw-r--r--pkgs/development/python-modules/dissect-ffs/default.nix39
-rw-r--r--pkgs/development/python-modules/dissect-hypervisor/default.nix41
-rw-r--r--pkgs/development/python-modules/dissect-jffs/default.nix25
-rw-r--r--pkgs/development/python-modules/dissect-ntfs/default.nix39
-rw-r--r--pkgs/development/python-modules/dissect-ole/default.nix33
-rw-r--r--pkgs/development/python-modules/dissect-regf/default.nix33
-rw-r--r--pkgs/development/python-modules/dissect-shellitem/default.nix39
-rw-r--r--pkgs/development/python-modules/dissect-sql/default.nix39
-rw-r--r--pkgs/development/python-modules/dissect-squashfs/default.nix37
-rw-r--r--pkgs/development/python-modules/dissect-target/default.nix167
-rw-r--r--pkgs/development/python-modules/dissect-thumbcache/default.nix35
-rw-r--r--pkgs/development/python-modules/dissect-util/default.nix27
-rw-r--r--pkgs/development/python-modules/dissect-vmfs/default.nix33
-rw-r--r--pkgs/development/python-modules/dissect-volume/default.nix33
-rw-r--r--pkgs/development/python-modules/dissect-xfs/default.nix39
-rw-r--r--pkgs/development/python-modules/dissect/default.nix81
-rw-r--r--pkgs/development/python-modules/dissononce/default.nix16
-rw-r--r--pkgs/development/python-modules/dist-meta/default.nix41
-rw-r--r--pkgs/development/python-modules/distlib/default.nix15
-rw-r--r--pkgs/development/python-modules/distorm3/default.nix33
-rw-r--r--pkgs/development/python-modules/distrax/default.nix27
-rw-r--r--pkgs/development/python-modules/distributed/default.nix80
-rw-r--r--pkgs/development/python-modules/distro/default.nix17
-rw-r--r--pkgs/development/python-modules/distutils-cfg/default.nix38
-rw-r--r--pkgs/development/python-modules/distutils-extra/default.nix11
-rw-r--r--pkgs/development/python-modules/distutils/default.nix54
-rw-r--r--pkgs/development/python-modules/dj-database-url/default.nix36
-rw-r--r--pkgs/development/python-modules/dj-email-url/default.nix13
-rw-r--r--pkgs/development/python-modules/dj-rest-auth/default.nix69
-rw-r--r--pkgs/development/python-modules/dj-search-url/default.nix8
-rw-r--r--pkgs/development/python-modules/dj-static/default.nix23
-rw-r--r--pkgs/development/python-modules/django-admin-datta/default.nix19
-rw-r--r--pkgs/development/python-modules/django-admin-sortable2/default.nix42
-rw-r--r--pkgs/development/python-modules/django-allauth-2fa/default.nix28
-rw-r--r--pkgs/development/python-modules/django-allauth/default.nix72
-rw-r--r--pkgs/development/python-modules/django-annoying/default.nix19
-rw-r--r--pkgs/development/python-modules/django-anymail/default.nix47
-rw-r--r--pkgs/development/python-modules/django-appconf/default.nix36
-rw-r--r--pkgs/development/python-modules/django-auditlog/default.nix37
-rw-r--r--pkgs/development/python-modules/django-auth-ldap/default.nix39
-rw-r--r--pkgs/development/python-modules/django-autocomplete-light/default.nix37
-rw-r--r--pkgs/development/python-modules/django-bootstrap3/default.nix37
-rw-r--r--pkgs/development/python-modules/django-bootstrap4/default.nix41
-rw-r--r--pkgs/development/python-modules/django-bootstrap5/default.nix59
-rw-r--r--pkgs/development/python-modules/django-cachalot/default.nix27
-rw-r--r--pkgs/development/python-modules/django-cache-url/default.nix9
-rw-r--r--pkgs/development/python-modules/django-cacheops/default.nix40
-rw-r--r--pkgs/development/python-modules/django-celery-beat/default.nix53
-rw-r--r--pkgs/development/python-modules/django-celery-email/default.nix20
-rw-r--r--pkgs/development/python-modules/django-celery-results/default.nix15
-rw-r--r--pkgs/development/python-modules/django-ckeditor/default.nix41
-rw-r--r--pkgs/development/python-modules/django-classy-tags/default.nix21
-rw-r--r--pkgs/development/python-modules/django-cleanup/default.nix15
-rw-r--r--pkgs/development/python-modules/django-colorful/default.nix10
-rw-r--r--pkgs/development/python-modules/django-compression-middleware/default.nix13
-rw-r--r--pkgs/development/python-modules/django-compressor/default.nix47
-rw-r--r--pkgs/development/python-modules/django-configurations/default.nix47
-rw-r--r--pkgs/development/python-modules/django-context-decorator/default.nix21
-rw-r--r--pkgs/development/python-modules/django-contrib-comments/default.nix12
-rw-r--r--pkgs/development/python-modules/django-cors-headers/default.nix32
-rw-r--r--pkgs/development/python-modules/django-countries/default.nix39
-rw-r--r--pkgs/development/python-modules/django-crispy-bootstrap3/default.nix45
-rw-r--r--pkgs/development/python-modules/django-crispy-bootstrap4/default.nix27
-rw-r--r--pkgs/development/python-modules/django-crispy-bootstrap5/default.nix27
-rw-r--r--pkgs/development/python-modules/django-crispy-forms/default.nix21
-rw-r--r--pkgs/development/python-modules/django-crontab/default.nix52
-rw-r--r--pkgs/development/python-modules/django-cryptography/default.nix26
-rw-r--r--pkgs/development/python-modules/django-csp/default.nix31
-rw-r--r--pkgs/development/python-modules/django-currentuser/default.nix19
-rw-r--r--pkgs/development/python-modules/django-debug-toolbar/default.nix37
-rw-r--r--pkgs/development/python-modules/django-dynamic-preferences/default.nix37
-rw-r--r--pkgs/development/python-modules/django-encrypted-model-fields/default.nix22
-rw-r--r--pkgs/development/python-modules/django-environ/default.nix17
-rw-r--r--pkgs/development/python-modules/django-extensions/default.nix69
-rw-r--r--pkgs/development/python-modules/django-filter/default.nix33
-rw-r--r--pkgs/development/python-modules/django-formset-js-improved/default.nix25
-rw-r--r--pkgs/development/python-modules/django-formtools/default.nix34
-rw-r--r--pkgs/development/python-modules/django-google-analytics-app/default.nix27
-rw-r--r--pkgs/development/python-modules/django-graphiql-debug-toolbar/default.nix62
-rw-r--r--pkgs/development/python-modules/django-gravatar2/default.nix6
-rw-r--r--pkgs/development/python-modules/django-guardian/default.nix24
-rw-r--r--pkgs/development/python-modules/django-haystack/default.nix69
-rw-r--r--pkgs/development/python-modules/django-hcaptcha/default.nix13
-rw-r--r--pkgs/development/python-modules/django-health-check/default.nix34
-rw-r--r--pkgs/development/python-modules/django-hierarkey/default.nix45
-rw-r--r--pkgs/development/python-modules/django-hijack/default.nix69
-rw-r--r--pkgs/development/python-modules/django-hijack/package-lock.json7875
-rw-r--r--pkgs/development/python-modules/django-i18nfield/default.nix21
-rw-r--r--pkgs/development/python-modules/django-import-export/default.nix57
-rw-r--r--pkgs/development/python-modules/django-ipware/default.nix22
-rw-r--r--pkgs/development/python-modules/django-jinja2/default.nix15
-rw-r--r--pkgs/development/python-modules/django-jquery-js/default.nix17
-rw-r--r--pkgs/development/python-modules/django-js-asset/default.nix25
-rw-r--r--pkgs/development/python-modules/django-js-reverse/default.nix28
-rw-r--r--pkgs/development/python-modules/django-leaflet/default.nix29
-rw-r--r--pkgs/development/python-modules/django-libsass/default.nix29
-rw-r--r--pkgs/development/python-modules/django-localflavor/default.nix29
-rw-r--r--pkgs/development/python-modules/django-logentry-admin/default.nix15
-rw-r--r--pkgs/development/python-modules/django-login-required-middleware/default.nix31
-rw-r--r--pkgs/development/python-modules/django-mailman3/default.nix62
-rw-r--r--pkgs/development/python-modules/django-maintenance-mode/default.nix25
-rw-r--r--pkgs/development/python-modules/django-markdownx/default.nix25
-rw-r--r--pkgs/development/python-modules/django-markup/default.nix58
-rw-r--r--pkgs/development/python-modules/django-mdeditor/default.nix9
-rw-r--r--pkgs/development/python-modules/django-model-utils/default.nix31
-rw-r--r--pkgs/development/python-modules/django-modelcluster/default.nix36
-rw-r--r--pkgs/development/python-modules/django-modeltranslation/default.nix39
-rw-r--r--pkgs/development/python-modules/django-mptt/default.nix17
-rw-r--r--pkgs/development/python-modules/django-multiselectfield/default.nix9
-rw-r--r--pkgs/development/python-modules/django-mysql/default.nix54
-rw-r--r--pkgs/development/python-modules/django-ninja/default.nix32
-rw-r--r--pkgs/development/python-modules/django-nose/default.nix29
-rw-r--r--pkgs/development/python-modules/django-oauth-toolkit/default.nix38
-rw-r--r--pkgs/development/python-modules/django-otp-webauthn/default.nix44
-rw-r--r--pkgs/development/python-modules/django-otp/default.nix37
-rw-r--r--pkgs/development/python-modules/django-paintstore/default.nix6
-rw-r--r--pkgs/development/python-modules/django-parler/default.nix19
-rw-r--r--pkgs/development/python-modules/django-pattern-library/default.nix38
-rw-r--r--pkgs/development/python-modules/django-payments/default.nix62
-rw-r--r--pkgs/development/python-modules/django-pglocks/default.nix15
-rw-r--r--pkgs/development/python-modules/django-phonenumber-field/default.nix55
-rw-r--r--pkgs/development/python-modules/django-picklefield/default.nix20
-rw-r--r--pkgs/development/python-modules/django-polymorphic/default.nix11
-rw-r--r--pkgs/development/python-modules/django-postgresql-netfields/default.nix35
-rw-r--r--pkgs/development/python-modules/django-prometheus/default.nix27
-rw-r--r--pkgs/development/python-modules/django-pwa/default.nix29
-rw-r--r--pkgs/development/python-modules/django-q/default.nix51
-rw-r--r--pkgs/development/python-modules/django-ranged-response/default.nix9
-rw-r--r--pkgs/development/python-modules/django-raster/default.nix30
-rw-r--r--pkgs/development/python-modules/django-ratelimit/default.nix56
-rw-r--r--pkgs/development/python-modules/django-redis/default.nix51
-rw-r--r--pkgs/development/python-modules/django-rest-auth/default.nix21
-rw-r--r--pkgs/development/python-modules/django-rest-polymorphic/default.nix25
-rw-r--r--pkgs/development/python-modules/django-rest-registration/default.nix21
-rw-r--r--pkgs/development/python-modules/django-reversion/default.nix31
-rw-r--r--pkgs/development/python-modules/django-rosetta/default.nix20
-rw-r--r--pkgs/development/python-modules/django-rq/default.nix21
-rw-r--r--pkgs/development/python-modules/django-scheduler/default.nix27
-rw-r--r--pkgs/development/python-modules/django-scim2/default.nix51
-rw-r--r--pkgs/development/python-modules/django-scopes/default.nix17
-rw-r--r--pkgs/development/python-modules/django-sekizai/default.nix19
-rw-r--r--pkgs/development/python-modules/django-sesame/default.nix26
-rw-r--r--pkgs/development/python-modules/django-shortuuidfield/default.nix17
-rw-r--r--pkgs/development/python-modules/django-silk/default.nix62
-rw-r--r--pkgs/development/python-modules/django-simple-captcha/default.nix30
-rw-r--r--pkgs/development/python-modules/django-simple-history/default.nix42
-rw-r--r--pkgs/development/python-modules/django-sites/default.nix21
-rw-r--r--pkgs/development/python-modules/django-soft-delete/default.nix31
-rw-r--r--pkgs/development/python-modules/django-sr/default.nix21
-rw-r--r--pkgs/development/python-modules/django-statici18n/default.nix43
-rw-r--r--pkgs/development/python-modules/django-storages/default.nix77
-rw-r--r--pkgs/development/python-modules/django-stubs-ext/default.nix45
-rw-r--r--pkgs/development/python-modules/django-stubs/default.nix50
-rw-r--r--pkgs/development/python-modules/django-tables2/default.nix49
-rw-r--r--pkgs/development/python-modules/django-tagging/default.nix8
-rw-r--r--pkgs/development/python-modules/django-taggit/default.nix27
-rw-r--r--pkgs/development/python-modules/django-timezone-field/default.nix62
-rw-r--r--pkgs/development/python-modules/django-treebeard/default.nix23
-rw-r--r--pkgs/development/python-modules/django-two-factor-auth/default.nix51
-rw-r--r--pkgs/development/python-modules/django-types/default.nix21
-rw-r--r--pkgs/development/python-modules/django-versatileimagefield/default.nix19
-rw-r--r--pkgs/development/python-modules/django-vite/default.nix23
-rw-r--r--pkgs/development/python-modules/django-webpack-loader/default.nix4
-rw-r--r--pkgs/development/python-modules/django-webpush/default.nix27
-rw-r--r--pkgs/development/python-modules/django-widget-tweaks/default.nix23
-rw-r--r--pkgs/development/python-modules/django/3.nix47
-rw-r--r--pkgs/development/python-modules/django/4.nix173
-rw-r--r--pkgs/development/python-modules/django/5.nix169
-rw-r--r--pkgs/development/python-modules/djangoql/default.nix10
-rw-r--r--pkgs/development/python-modules/djangorestframework-camel-case/default.nix21
-rw-r--r--pkgs/development/python-modules/djangorestframework-dataclasses/default.nix23
-rw-r--r--pkgs/development/python-modules/djangorestframework-guardian/default.nix15
-rw-r--r--pkgs/development/python-modules/djangorestframework-guardian2/default.nix11
-rw-r--r--pkgs/development/python-modules/djangorestframework-recursive/default.nix19
-rw-r--r--pkgs/development/python-modules/djangorestframework-simplejwt/default.nix37
-rw-r--r--pkgs/development/python-modules/djangorestframework-stubs/default.nix58
-rw-r--r--pkgs/development/python-modules/djangorestframework/default.nix75
-rw-r--r--pkgs/development/python-modules/djmail/default.nix17
-rw-r--r--pkgs/development/python-modules/dkimpy/default.nix26
-rw-r--r--pkgs/development/python-modules/dlib/build-cores.patch8
-rw-r--r--pkgs/development/python-modules/dlib/default.nix30
-rw-r--r--pkgs/development/python-modules/dlinfo/default.nix23
-rw-r--r--pkgs/development/python-modules/dllogger/default.nix15
-rw-r--r--pkgs/development/python-modules/dlms-cosem/default.nix39
-rw-r--r--pkgs/development/python-modules/dlx/default.nix9
-rw-r--r--pkgs/development/python-modules/dm-control/default.nix93
-rw-r--r--pkgs/development/python-modules/dm-env/default.nix23
-rw-r--r--pkgs/development/python-modules/dm-haiku/default.nix199
-rw-r--r--pkgs/development/python-modules/dm-sonnet/default.nix37
-rw-r--r--pkgs/development/python-modules/dm-tree/0003-don-t-configure-apple.patch21
-rw-r--r--pkgs/development/python-modules/dm-tree/cmake.patch141
-rw-r--r--pkgs/development/python-modules/dm-tree/default.nix68
-rw-r--r--pkgs/development/python-modules/dmenu/default.nix9
-rw-r--r--pkgs/development/python-modules/dnachisel/default.nix33
-rw-r--r--pkgs/development/python-modules/dnf-plugins-core/default.nix46
-rw-r--r--pkgs/development/python-modules/dnf4/default.nix41
-rw-r--r--pkgs/development/python-modules/dnf4/wrapper.nix38
-rw-r--r--pkgs/development/python-modules/dnfile/default.nix33
-rw-r--r--pkgs/development/python-modules/dns-lexicon/default.nix81
-rw-r--r--pkgs/development/python-modules/dnslib/default.nix21
-rw-r--r--pkgs/development/python-modules/dnspython/default.nix71
-rw-r--r--pkgs/development/python-modules/doc8/default.nix43
-rw-r--r--pkgs/development/python-modules/docformatter/default.nix35
-rw-r--r--pkgs/development/python-modules/docker-py/default.nix29
-rw-r--r--pkgs/development/python-modules/docker-pycreds/default.nix9
-rw-r--r--pkgs/development/python-modules/docker/default.nix82
-rw-r--r--pkgs/development/python-modules/dockerfile-parse/default.nix19
-rw-r--r--pkgs/development/python-modules/dockerpty/default.nix7
-rw-r--r--pkgs/development/python-modules/dockerspawner/default.nix27
-rw-r--r--pkgs/development/python-modules/docloud/default.nix13
-rw-r--r--pkgs/development/python-modules/docopt-ng/default.nix13
-rw-r--r--pkgs/development/python-modules/docopt/default.nix6
-rw-r--r--pkgs/development/python-modules/docplex/default.nix29
-rw-r--r--pkgs/development/python-modules/docrep/default.nix13
-rw-r--r--pkgs/development/python-modules/docstr-coverage/default.nix32
-rw-r--r--pkgs/development/python-modules/docstring-parser/default.nix25
-rw-r--r--pkgs/development/python-modules/docstring-to-markdown/default.nix19
-rw-r--r--pkgs/development/python-modules/doctest-ignore-unicode/default.nix20
-rw-r--r--pkgs/development/python-modules/docutils/default.nix92
-rw-r--r--pkgs/development/python-modules/docx2python/default.nix35
-rw-r--r--pkgs/development/python-modules/docx2txt/default.nix13
-rw-r--r--pkgs/development/python-modules/dodgy/default.nix36
-rw-r--r--pkgs/development/python-modules/dogpile-cache/default.nix33
-rw-r--r--pkgs/development/python-modules/dogtag-pki/default.nix29
-rw-r--r--pkgs/development/python-modules/dogtail/default.nix55
-rw-r--r--pkgs/development/python-modules/dohq-artifactory/default.nix57
-rw-r--r--pkgs/development/python-modules/doit-py/default.nix19
-rw-r--r--pkgs/development/python-modules/doit/default.nix129
-rw-r--r--pkgs/development/python-modules/dokuwiki/default.nix13
-rw-r--r--pkgs/development/python-modules/dom-toml/default.nix38
-rw-r--r--pkgs/development/python-modules/domdf-python-tools/default.nix40
-rw-r--r--pkgs/development/python-modules/domeneshop/default.nix23
-rw-r--r--pkgs/development/python-modules/dominate/default.nix27
-rw-r--r--pkgs/development/python-modules/doorbirdpy/default.nix37
-rw-r--r--pkgs/development/python-modules/dopy/default.nix14
-rw-r--r--pkgs/development/python-modules/dot2tex/default.nix29
-rw-r--r--pkgs/development/python-modules/dotmap/default.nix23
-rw-r--r--pkgs/development/python-modules/dotty-dict/default.nix9
-rw-r--r--pkgs/development/python-modules/dotwiz/default.nix25
-rw-r--r--pkgs/development/python-modules/downloader-cli/default.nix19
-rw-r--r--pkgs/development/python-modules/dparse/default.nix37
-rw-r--r--pkgs/development/python-modules/dparse2/default.nix25
-rw-r--r--pkgs/development/python-modules/dpath/default.nix31
-rw-r--r--pkgs/development/python-modules/dpcontracts/default.nix9
-rw-r--r--pkgs/development/python-modules/dpkt/default.nix7
-rw-r--r--pkgs/development/python-modules/dploot/default.nix6
-rw-r--r--pkgs/development/python-modules/drafthorse/default.nix40
-rw-r--r--pkgs/development/python-modules/draftjs-exporter/default.nix20
-rw-r--r--pkgs/development/python-modules/dragonfly/default.nix47
-rw-r--r--pkgs/development/python-modules/dramatiq/default.nix112
-rw-r--r--pkgs/development/python-modules/drawille/default.nix11
-rw-r--r--pkgs/development/python-modules/drawilleplot/default.nix15
-rw-r--r--pkgs/development/python-modules/drawsvg/default.nix4
-rw-r--r--pkgs/development/python-modules/dremel3dpy/default.nix31
-rw-r--r--pkgs/development/python-modules/drf-jwt/default.nix14
-rw-r--r--pkgs/development/python-modules/drf-nested-routers/default.nix27
-rw-r--r--pkgs/development/python-modules/drf-spectacular-sidecar/default.nix15
-rw-r--r--pkgs/development/python-modules/drf-spectacular/default.nix76
-rw-r--r--pkgs/development/python-modules/drf-ujson2/default.nix31
-rw-r--r--pkgs/development/python-modules/drf-writable-nested/default.nix15
-rw-r--r--pkgs/development/python-modules/drf-yasg/default.nix31
-rw-r--r--pkgs/development/python-modules/drivelib/default.nix44
-rw-r--r--pkgs/development/python-modules/drms/default.nix37
-rw-r--r--pkgs/development/python-modules/dronecan/default.nix19
-rw-r--r--pkgs/development/python-modules/dropbox/default.nix61
-rw-r--r--pkgs/development/python-modules/ds-store/default.nix31
-rw-r--r--pkgs/development/python-modules/ds4drv/default.nix25
-rw-r--r--pkgs/development/python-modules/dscribe/default.nix46
-rw-r--r--pkgs/development/python-modules/dsinternals/default.nix27
-rw-r--r--pkgs/development/python-modules/dsl2html/default.nix13
-rw-r--r--pkgs/development/python-modules/dsmr-parser/default.nix52
-rw-r--r--pkgs/development/python-modules/dtlssocket/default.nix34
-rw-r--r--pkgs/development/python-modules/dtschema/default.nix42
-rw-r--r--pkgs/development/python-modules/dtw-python/default.nix31
-rw-r--r--pkgs/development/python-modules/ducc0/default.nix2
-rw-r--r--pkgs/development/python-modules/duckdb-engine/default.nix62
-rw-r--r--pkgs/development/python-modules/duckdb/default.nix70
-rw-r--r--pkgs/development/python-modules/duckduckgo-search/default.nix62
-rw-r--r--pkgs/development/python-modules/duct-py/default.nix15
-rw-r--r--pkgs/development/python-modules/duden/default.nix30
-rw-r--r--pkgs/development/python-modules/duecredit/default.nix51
-rw-r--r--pkgs/development/python-modules/duet/default.nix31
-rw-r--r--pkgs/development/python-modules/dufte/default.nix31
-rw-r--r--pkgs/development/python-modules/dugong/default.nix24
-rw-r--r--pkgs/development/python-modules/dukpy/default.nix53
-rw-r--r--pkgs/development/python-modules/dulwich/default.nix117
-rw-r--r--pkgs/development/python-modules/dunamai/default.nix39
-rw-r--r--pkgs/development/python-modules/dungeon-eos/default.nix8
-rw-r--r--pkgs/development/python-modules/duo-client/default.nix35
-rw-r--r--pkgs/development/python-modules/durus/default.nix8
-rw-r--r--pkgs/development/python-modules/dvc-azure/default.nix23
-rw-r--r--pkgs/development/python-modules/dvc-data/default.nix39
-rw-r--r--pkgs/development/python-modules/dvc-gdrive/default.nix21
-rw-r--r--pkgs/development/python-modules/dvc-gs/default.nix19
-rw-r--r--pkgs/development/python-modules/dvc-hdfs/default.nix21
-rw-r--r--pkgs/development/python-modules/dvc-http/default.nix28
-rw-r--r--pkgs/development/python-modules/dvc-objects/default.nix39
-rw-r--r--pkgs/development/python-modules/dvc-render/default.nix2
-rw-r--r--pkgs/development/python-modules/dvc-s3/default.nix44
-rw-r--r--pkgs/development/python-modules/dvc-ssh/default.nix17
-rw-r--r--pkgs/development/python-modules/dvc-studio-client/default.nix39
-rw-r--r--pkgs/development/python-modules/dvc-task/default.nix46
-rw-r--r--pkgs/development/python-modules/dvc/default.nix6
-rw-r--r--pkgs/development/python-modules/dvclive/default.nix105
-rw-r--r--pkgs/development/python-modules/dwdwfsapi/default.nix29
-rw-r--r--pkgs/development/python-modules/dyn/default.nix32
-rw-r--r--pkgs/development/python-modules/dynalite-devices/default.nix29
-rw-r--r--pkgs/development/python-modules/dynalite-panel/default.nix16
-rw-r--r--pkgs/development/python-modules/dynd/default.nix20
-rw-r--r--pkgs/development/python-modules/e3-core/0001-use-distro-over-ld.patch42
-rw-r--r--pkgs/development/python-modules/e3-core/default.nix97
-rw-r--r--pkgs/development/python-modules/e3-testsuite/default.nix27
-rw-r--r--pkgs/development/python-modules/eagle100/default.nix19
-rw-r--r--pkgs/development/python-modules/easy-thumbnails/default.nix24
-rw-r--r--pkgs/development/python-modules/easydict/default.nix11
-rw-r--r--pkgs/development/python-modules/easyenergy/default.nix35
-rw-r--r--pkgs/development/python-modules/easygui/default.nix13
-rw-r--r--pkgs/development/python-modules/easyocr/default.nix47
-rw-r--r--pkgs/development/python-modules/easyprocess/default.nix6
-rw-r--r--pkgs/development/python-modules/easywatch/default.nix10
-rw-r--r--pkgs/development/python-modules/ebaysdk/default.nix11
-rw-r--r--pkgs/development/python-modules/ebcdic/default.nix25
-rw-r--r--pkgs/development/python-modules/ebooklib/default.nix11
-rw-r--r--pkgs/development/python-modules/ecdsa/default.nix16
-rw-r--r--pkgs/development/python-modules/echo/default.nix43
-rw-r--r--pkgs/development/python-modules/ecoaliface/default.nix13
-rw-r--r--pkgs/development/python-modules/ecos/default.nix44
-rw-r--r--pkgs/development/python-modules/ecpy/default.nix8
-rw-r--r--pkgs/development/python-modules/ecs-logging/default.nix24
-rw-r--r--pkgs/development/python-modules/ed25519-blake2b/default.nix24
-rw-r--r--pkgs/development/python-modules/ed25519/default.nix5
-rw-r--r--pkgs/development/python-modules/edalize/default.nix35
-rw-r--r--pkgs/development/python-modules/editables/default.nix28
-rw-r--r--pkgs/development/python-modules/editdistance-s/default.nix11
-rw-r--r--pkgs/development/python-modules/editdistance/default.nix27
-rw-r--r--pkgs/development/python-modules/editdistpy/default.nix48
-rw-r--r--pkgs/development/python-modules/editor/default.nix27
-rw-r--r--pkgs/development/python-modules/editorconfig/default.nix19
-rw-r--r--pkgs/development/python-modules/edk2-pytool-library/default.nix41
-rw-r--r--pkgs/development/python-modules/edlib/default.nix14
-rw-r--r--pkgs/development/python-modules/eduvpn-common/default.nix16
-rw-r--r--pkgs/development/python-modules/eduvpn-common/use-nix-lib.patch23
-rw-r--r--pkgs/development/python-modules/edward/default.nix22
-rw-r--r--pkgs/development/python-modules/effdet/default.nix21
-rw-r--r--pkgs/development/python-modules/effect/default.nix31
-rw-r--r--pkgs/development/python-modules/eggdeps/default.nix19
-rw-r--r--pkgs/development/python-modules/eigenpy/default.nix15
-rw-r--r--pkgs/development/python-modules/einops/default.nix38
-rw-r--r--pkgs/development/python-modules/eiswarnung/default.nix43
-rw-r--r--pkgs/development/python-modules/elastic-apm/default.nix8
-rw-r--r--pkgs/development/python-modules/elastic-transport/default.nix48
-rw-r--r--pkgs/development/python-modules/elasticsearch-dsl/default.nix23
-rw-r--r--pkgs/development/python-modules/elasticsearch/default.nix39
-rw-r--r--pkgs/development/python-modules/elasticsearch8/default.nix42
-rw-r--r--pkgs/development/python-modules/elegy/default.nix57
-rw-r--r--pkgs/development/python-modules/elementpath/default.nix6
-rw-r--r--pkgs/development/python-modules/elevate/default.nix18
-rw-r--r--pkgs/development/python-modules/elevenlabs/default.nix49
-rw-r--r--pkgs/development/python-modules/elgato/default.nix33
-rw-r--r--pkgs/development/python-modules/eliot/default.nix83
-rw-r--r--pkgs/development/python-modules/eliqonline/default.nix19
-rw-r--r--pkgs/development/python-modules/elkm1-lib/default.nix1
-rw-r--r--pkgs/development/python-modules/elmax-api/default.nix28
-rw-r--r--pkgs/development/python-modules/elmax/default.nix21
-rw-r--r--pkgs/development/python-modules/email-validator/default.nix29
-rw-r--r--pkgs/development/python-modules/emailthreads/default.nix9
-rw-r--r--pkgs/development/python-modules/embedding-reader/default.nix26
-rw-r--r--pkgs/development/python-modules/emborg/default.nix56
-rw-r--r--pkgs/development/python-modules/embrace/default.nix27
-rw-r--r--pkgs/development/python-modules/emcee/default.nix37
-rw-r--r--pkgs/development/python-modules/emoji/default.nix37
-rw-r--r--pkgs/development/python-modules/empty-files/default.nix15
-rw-r--r--pkgs/development/python-modules/empy/default.nix10
-rw-r--r--pkgs/development/python-modules/emulated-roku/default.nix19
-rw-r--r--pkgs/development/python-modules/emv/default.nix61
-rw-r--r--pkgs/development/python-modules/enaml/default.nix29
-rw-r--r--pkgs/development/python-modules/enamlx/default.nix17
-rw-r--r--pkgs/development/python-modules/encodec/default.nix17
-rw-r--r--pkgs/development/python-modules/energyflip-client/default.nix23
-rw-r--r--pkgs/development/python-modules/energyflow/default.nix25
-rw-r--r--pkgs/development/python-modules/energyzero/default.nix43
-rw-r--r--pkgs/development/python-modules/enlighten/default.nix51
-rw-r--r--pkgs/development/python-modules/enocean/default.nix48
-rw-r--r--pkgs/development/python-modules/enochecker-core/default.nix14
-rw-r--r--pkgs/development/python-modules/enrich/default.nix17
-rw-r--r--pkgs/development/python-modules/enterpriseattack/default.nix23
-rw-r--r--pkgs/development/python-modules/entrance/default.nix54
-rw-r--r--pkgs/development/python-modules/entry-points-txt/default.nix28
-rw-r--r--pkgs/development/python-modules/entrypoint2/default.nix19
-rw-r--r--pkgs/development/python-modules/entrypoints/default.nix24
-rw-r--r--pkgs/development/python-modules/enturclient/default.nix23
-rw-r--r--pkgs/development/python-modules/enum-compat/default.nix7
-rw-r--r--pkgs/development/python-modules/enum34/default.nix43
-rw-r--r--pkgs/development/python-modules/env-canada/default.nix45
-rw-r--r--pkgs/development/python-modules/environmental-override/default.nix7
-rw-r--r--pkgs/development/python-modules/environs/default.nix31
-rw-r--r--pkgs/development/python-modules/envisage/default.nix53
-rw-r--r--pkgs/development/python-modules/envoy-reader/default.nix42
-rw-r--r--pkgs/development/python-modules/envoy-utils/default.nix15
-rw-r--r--pkgs/development/python-modules/envs/default.nix50
-rw-r--r--pkgs/development/python-modules/enzyme/default.nix17
-rw-r--r--pkgs/development/python-modules/epc/default.nix10
-rw-r--r--pkgs/development/python-modules/ephem/default.nix15
-rw-r--r--pkgs/development/python-modules/ephemeral-port-reserve/default.nix21
-rw-r--r--pkgs/development/python-modules/epicstore-api/default.nix40
-rw-r--r--pkgs/development/python-modules/epion/default.nix25
-rw-r--r--pkgs/development/python-modules/epitran/default.nix1
-rw-r--r--pkgs/development/python-modules/epson-projector/default.nix13
-rw-r--r--pkgs/development/python-modules/eq3btsmart/default.nix47
-rw-r--r--pkgs/development/python-modules/equinox/default.nix57
-rw-r--r--pkgs/development/python-modules/eradicate/default.nix23
-rw-r--r--pkgs/development/python-modules/es-client/default.nix11
-rw-r--r--pkgs/development/python-modules/escapism/default.nix7
-rw-r--r--pkgs/development/python-modules/esig/default.nix35
-rw-r--r--pkgs/development/python-modules/espeak-phonemizer/default.nix17
-rw-r--r--pkgs/development/python-modules/esper/default.nix33
-rw-r--r--pkgs/development/python-modules/esphome-dashboard-api/default.nix21
-rw-r--r--pkgs/development/python-modules/esprima/default.nix23
-rw-r--r--pkgs/development/python-modules/essentials-openapi/default.nix23
-rw-r--r--pkgs/development/python-modules/essentials/default.nix14
-rw-r--r--pkgs/development/python-modules/et-xmlfile/default.nix21
-rw-r--r--pkgs/development/python-modules/etcd/default.nix23
-rw-r--r--pkgs/development/python-modules/etcd3/default.nix31
-rw-r--r--pkgs/development/python-modules/ete3/default.nix32
-rw-r--r--pkgs/development/python-modules/etebase/default.nix63
-rw-r--r--pkgs/development/python-modules/etelemetry/default.nix21
-rw-r--r--pkgs/development/python-modules/eternalegypt/default.nix17
-rw-r--r--pkgs/development/python-modules/etesync/default.nix36
-rw-r--r--pkgs/development/python-modules/eth-abi/default.nix23
-rw-r--r--pkgs/development/python-modules/eth-account/default.nix29
-rw-r--r--pkgs/development/python-modules/eth-hash/default.nix47
-rw-r--r--pkgs/development/python-modules/eth-keyfile/default.nix27
-rw-r--r--pkgs/development/python-modules/eth-keys/default.nix55
-rw-r--r--pkgs/development/python-modules/eth-rlp/default.nix29
-rw-r--r--pkgs/development/python-modules/eth-typing/default.nix27
-rw-r--r--pkgs/development/python-modules/eth-utils/default.nix38
-rw-r--r--pkgs/development/python-modules/ethtool/default.nix57
-rw-r--r--pkgs/development/python-modules/etils/default.nix96
-rw-r--r--pkgs/development/python-modules/etuples/default.nix23
-rw-r--r--pkgs/development/python-modules/euclid3/default.nix18
-rw-r--r--pkgs/development/python-modules/eufylife-ble-client/default.nix25
-rw-r--r--pkgs/development/python-modules/eval-type-backport/default.nix19
-rw-r--r--pkgs/development/python-modules/evaluate/default.nix62
-rw-r--r--pkgs/development/python-modules/evdev/default.nix31
-rw-r--r--pkgs/development/python-modules/eve/default.nix25
-rw-r--r--pkgs/development/python-modules/eventkit/default.nix16
-rw-r--r--pkgs/development/python-modules/eventlet/default.nix42
-rw-r--r--pkgs/development/python-modules/events/default.nix25
-rw-r--r--pkgs/development/python-modules/evernote/default.nix20
-rw-r--r--pkgs/development/python-modules/evohome-async/default.nix29
-rw-r--r--pkgs/development/python-modules/evolutionhttp/default.nix48
-rw-r--r--pkgs/development/python-modules/evosax/default.nix84
-rw-r--r--pkgs/development/python-modules/evtx/default.nix35
-rw-r--r--pkgs/development/python-modules/ewmh/default.nix9
-rw-r--r--pkgs/development/python-modules/exceptiongroup/default.nix43
-rw-r--r--pkgs/development/python-modules/exchangelib/default.nix8
-rw-r--r--pkgs/development/python-modules/exdown/default.nix27
-rw-r--r--pkgs/development/python-modules/execnb/default.nix37
-rw-r--r--pkgs/development/python-modules/execnet/default.nix57
-rw-r--r--pkgs/development/python-modules/executing/default.nix49
-rw-r--r--pkgs/development/python-modules/executing/get_iter.patch192
-rw-r--r--pkgs/development/python-modules/executor/default.nix27
-rw-r--r--pkgs/development/python-modules/exif/default.nix23
-rw-r--r--pkgs/development/python-modules/exifread/default.nix14
-rw-r--r--pkgs/development/python-modules/exitcode/default.nix19
-rw-r--r--pkgs/development/python-modules/exiv2/default.nix64
-rw-r--r--pkgs/development/python-modules/expandvars/default.nix30
-rw-r--r--pkgs/development/python-modules/expects/default.nix7
-rw-r--r--pkgs/development/python-modules/expecttest/default.nix36
-rw-r--r--pkgs/development/python-modules/experiment-utilities/default.nix41
-rw-r--r--pkgs/development/python-modules/expiring-dict/default.nix19
-rw-r--r--pkgs/development/python-modules/expiringdict/default.nix52
-rw-r--r--pkgs/development/python-modules/explorerscript/default.nix35
-rw-r--r--pkgs/development/python-modules/exrex/default.nix19
-rw-r--r--pkgs/development/python-modules/extension-helpers/default.nix55
-rw-r--r--pkgs/development/python-modules/extract-msg/default.nix6
-rw-r--r--pkgs/development/python-modules/extractcode/7z.nix26
-rw-r--r--pkgs/development/python-modules/extractcode/default.nix33
-rw-r--r--pkgs/development/python-modules/extractcode/libarchive.nix40
-rw-r--r--pkgs/development/python-modules/extras/default.nix7
-rw-r--r--pkgs/development/python-modules/extruct/default.nix44
-rw-r--r--pkgs/development/python-modules/eyed3/default.nix26
-rw-r--r--pkgs/development/python-modules/ezdxf/default.nix69
-rw-r--r--pkgs/development/python-modules/ezyrb/default.nix32
-rw-r--r--pkgs/development/python-modules/f5-icontrol-rest/default.nix15
-rw-r--r--pkgs/development/python-modules/f5-sdk/default.nix13
-rw-r--r--pkgs/development/python-modules/f90nml/default.nix22
-rw-r--r--pkgs/development/python-modules/faadelays/default.nix25
-rw-r--r--pkgs/development/python-modules/fabric/default.nix36
-rw-r--r--pkgs/development/python-modules/fabulous/default.nix32
-rw-r--r--pkgs/development/python-modules/face-recognition/default.nix31
-rw-r--r--pkgs/development/python-modules/face-recognition/models.nix19
-rw-r--r--pkgs/development/python-modules/face/default.nix27
-rw-r--r--pkgs/development/python-modules/facebook-sdk/default.nix13
-rw-r--r--pkgs/development/python-modules/facedancer/default.nix14
-rw-r--r--pkgs/development/python-modules/facenet-pytorch/default.nix18
-rw-r--r--pkgs/development/python-modules/factory-boy/default.nix37
-rw-r--r--pkgs/development/python-modules/fairscale/default.nix41
-rw-r--r--pkgs/development/python-modules/fairseq/default.nix65
-rw-r--r--pkgs/development/python-modules/faiss/default.nix55
-rw-r--r--pkgs/development/python-modules/faiss/pytest.nix40
-rw-r--r--pkgs/development/python-modules/fake-useragent/default.nix39
-rw-r--r--pkgs/development/python-modules/faker/default.nix35
-rw-r--r--pkgs/development/python-modules/fakeredis/default.nix67
-rw-r--r--pkgs/development/python-modules/falcon/default.nix84
-rw-r--r--pkgs/development/python-modules/faraday-agent-parameters-types/default.nix33
-rw-r--r--pkgs/development/python-modules/faraday-plugins/default.nix59
-rw-r--r--pkgs/development/python-modules/farama-notifications/default.nix10
-rw-r--r--pkgs/development/python-modules/fast-histogram/default.nix25
-rw-r--r--pkgs/development/python-modules/fastai/default.nix38
-rw-r--r--pkgs/development/python-modules/fastapi-cli/default.nix64
-rw-r--r--pkgs/development/python-modules/fastapi-mail/default.nix56
-rw-r--r--pkgs/development/python-modules/fastapi-sso/default.nix4
-rw-r--r--pkgs/development/python-modules/fastapi/default.nix134
-rw-r--r--pkgs/development/python-modules/fastavro/default.nix59
-rw-r--r--pkgs/development/python-modules/fastbencode/default.nix35
-rw-r--r--pkgs/development/python-modules/fastcache/default.nix7
-rw-r--r--pkgs/development/python-modules/fastcore/default.nix31
-rw-r--r--pkgs/development/python-modules/fastdiff/default.nix33
-rw-r--r--pkgs/development/python-modules/fastdownload/default.nix20
-rw-r--r--pkgs/development/python-modules/fastdtw/default.nix28
-rw-r--r--pkgs/development/python-modules/fastecdsa/default.nix25
-rw-r--r--pkgs/development/python-modules/fastembed/default.nix74
-rw-r--r--pkgs/development/python-modules/fasteners/default.nix33
-rw-r--r--pkgs/development/python-modules/fastentrypoints/default.nix6
-rw-r--r--pkgs/development/python-modules/faster-fifo/default.nix46
-rw-r--r--pkgs/development/python-modules/faster-whisper/default.nix49
-rw-r--r--pkgs/development/python-modules/fastimport/default.nix11
-rw-r--r--pkgs/development/python-modules/fastjsonschema/default.nix43
-rw-r--r--pkgs/development/python-modules/fastnumbers/default.nix37
-rw-r--r--pkgs/development/python-modules/fastparquet/default.nix79
-rw-r--r--pkgs/development/python-modules/fastpbkdf2/default.nix22
-rw-r--r--pkgs/development/python-modules/fastprogress/default.nix12
-rw-r--r--pkgs/development/python-modules/fastrlock/default.nix25
-rw-r--r--pkgs/development/python-modules/fasttext-predict/default.nix22
-rw-r--r--pkgs/development/python-modules/fasttext/default.nix10
-rw-r--r--pkgs/development/python-modules/faust-cchardet/default.nix33
-rw-r--r--pkgs/development/python-modules/favicon/default.nix22
-rw-r--r--pkgs/development/python-modules/fb-re2/default.nix11
-rw-r--r--pkgs/development/python-modules/fe25519/default.nix29
-rw-r--r--pkgs/development/python-modules/feather-format/default.nix32
-rw-r--r--pkgs/development/python-modules/feedfinder2/default.nix21
-rw-r--r--pkgs/development/python-modules/feedgen/default.nix22
-rw-r--r--pkgs/development/python-modules/feedgenerator/default.nix29
-rw-r--r--pkgs/development/python-modules/feedparser/default.nix27
-rw-r--r--pkgs/development/python-modules/fenics/default.nix92
-rw-r--r--pkgs/development/python-modules/ffcv/default.nix116
-rw-r--r--pkgs/development/python-modules/ffmpeg-progress-yield/default.nix30
-rw-r--r--pkgs/development/python-modules/ffmpeg-python/default.nix84
-rw-r--r--pkgs/development/python-modules/ffmpeg-python/ffmpeg-location.patch56
-rw-r--r--pkgs/development/python-modules/ffmpy/default.nix43
-rw-r--r--pkgs/development/python-modules/fhir-py/default.nix43
-rw-r--r--pkgs/development/python-modules/fiblary3-fork/default.nix29
-rw-r--r--pkgs/development/python-modules/fickling/default.nix53
-rw-r--r--pkgs/development/python-modules/fido2/default.nix50
-rw-r--r--pkgs/development/python-modules/fields/default.nix6
-rw-r--r--pkgs/development/python-modules/file-read-backwards/default.nix29
-rw-r--r--pkgs/development/python-modules/filebrowser-safe/default.nix18
-rw-r--r--pkgs/development/python-modules/filebytes/default.nix8
-rw-r--r--pkgs/development/python-modules/filecheck/default.nix23
-rw-r--r--pkgs/development/python-modules/filedate/default.nix59
-rw-r--r--pkgs/development/python-modules/filedepot/default.nix37
-rw-r--r--pkgs/development/python-modules/filelock/default.nix23
-rw-r--r--pkgs/development/python-modules/filetype/default.nix19
-rw-r--r--pkgs/development/python-modules/filterpy/default.nix21
-rw-r--r--pkgs/development/python-modules/finalfusion/default.nix27
-rw-r--r--pkgs/development/python-modules/find-libpython/default.nix27
-rw-r--r--pkgs/development/python-modules/findimports/default.nix30
-rw-r--r--pkgs/development/python-modules/findpython/default.nix39
-rw-r--r--pkgs/development/python-modules/finetuning-scheduler/default.nix63
-rw-r--r--pkgs/development/python-modules/fingerprints/default.nix35
-rw-r--r--pkgs/development/python-modules/finitude/default.nix25
-rw-r--r--pkgs/development/python-modules/fints/default.nix56
-rw-r--r--pkgs/development/python-modules/finvizfinance/default.nix42
-rw-r--r--pkgs/development/python-modules/fiona/default.nix87
-rw-r--r--pkgs/development/python-modules/fipy/default.nix63
-rw-r--r--pkgs/development/python-modules/fire/default.nix46
-rw-r--r--pkgs/development/python-modules/firebase-messaging/default.nix53
-rw-r--r--pkgs/development/python-modules/fireflyalgorithm/default.nix37
-rw-r--r--pkgs/development/python-modules/firetv/default.nix19
-rw-r--r--pkgs/development/python-modules/first/default.nix15
-rw-r--r--pkgs/development/python-modules/fissix/default.nix45
-rw-r--r--pkgs/development/python-modules/fitbit/default.nix27
-rw-r--r--pkgs/development/python-modules/fivem-api/default.nix25
-rw-r--r--pkgs/development/python-modules/fixerio/default.nix19
-rw-r--r--pkgs/development/python-modules/fixtures/default.nix25
-rw-r--r--pkgs/development/python-modules/fjaraskupan/default.nix29
-rw-r--r--pkgs/development/python-modules/flake8-blind-except/default.nix21
-rw-r--r--pkgs/development/python-modules/flake8-bugbear/default.nix23
-rw-r--r--pkgs/development/python-modules/flake8-debugger/default.nix23
-rw-r--r--pkgs/development/python-modules/flake8-docstrings/default.nix17
-rw-r--r--pkgs/development/python-modules/flake8-future-import/default.nix51
-rw-r--r--pkgs/development/python-modules/flake8-import-order/default.nix32
-rw-r--r--pkgs/development/python-modules/flake8-length/default.nix35
-rw-r--r--pkgs/development/python-modules/flake8-polyfill/default.nix32
-rw-r--r--pkgs/development/python-modules/flake8/default.nix36
-rw-r--r--pkgs/development/python-modules/flaky/default.nix18
-rw-r--r--pkgs/development/python-modules/flametree/default.nix17
-rw-r--r--pkgs/development/python-modules/flammkuchen/default.nix23
-rw-r--r--pkgs/development/python-modules/flasgger/default.nix37
-rw-r--r--pkgs/development/python-modules/flashtext/default.nix7
-rw-r--r--pkgs/development/python-modules/flask-admin/default.nix51
-rw-r--r--pkgs/development/python-modules/flask-api/default.nix39
-rw-r--r--pkgs/development/python-modules/flask-appbuilder/default.nix61
-rw-r--r--pkgs/development/python-modules/flask-assets/default.nix28
-rw-r--r--pkgs/development/python-modules/flask-babel/default.nix38
-rw-r--r--pkgs/development/python-modules/flask-babelex/default.nix23
-rw-r--r--pkgs/development/python-modules/flask-bcrypt/default.nix17
-rw-r--r--pkgs/development/python-modules/flask-bootstrap/default.nix19
-rw-r--r--pkgs/development/python-modules/flask-caching/default.nix57
-rw-r--r--pkgs/development/python-modules/flask-common/default.nix24
-rw-r--r--pkgs/development/python-modules/flask-compress/default.nix60
-rw-r--r--pkgs/development/python-modules/flask-cors/default.nix37
-rw-r--r--pkgs/development/python-modules/flask-dramatiq/default.nix43
-rw-r--r--pkgs/development/python-modules/flask-elastic/default.nix14
-rw-r--r--pkgs/development/python-modules/flask-expects-json/default.nix25
-rw-r--r--pkgs/development/python-modules/flask-gravatar/default.nix44
-rw-r--r--pkgs/development/python-modules/flask-httpauth/default.nix33
-rw-r--r--pkgs/development/python-modules/flask-jwt-extended/default.nix32
-rw-r--r--pkgs/development/python-modules/flask-limiter/default.nix66
-rw-r--r--pkgs/development/python-modules/flask-login/default.nix56
-rw-r--r--pkgs/development/python-modules/flask-mail/default.nix46
-rw-r--r--pkgs/development/python-modules/flask-mailman/default.nix36
-rw-r--r--pkgs/development/python-modules/flask-marshmallow/default.nix33
-rw-r--r--pkgs/development/python-modules/flask-migrate/default.nix29
-rw-r--r--pkgs/development/python-modules/flask-mongoengine/default.nix41
-rw-r--r--pkgs/development/python-modules/flask-mysqldb/default.nix29
-rw-r--r--pkgs/development/python-modules/flask-openid/default.nix25
-rw-r--r--pkgs/development/python-modules/flask-paginate/default.nix2
-rw-r--r--pkgs/development/python-modules/flask-paranoid/default.nix19
-rw-r--r--pkgs/development/python-modules/flask-principal/default.nix36
-rw-r--r--pkgs/development/python-modules/flask-pymongo/default.nix23
-rw-r--r--pkgs/development/python-modules/flask-restful/default.nix50
-rw-r--r--pkgs/development/python-modules/flask-restful/fix-test-inputs.patch173
-rw-r--r--pkgs/development/python-modules/flask-restx/default.nix67
-rw-r--r--pkgs/development/python-modules/flask-reverse-proxy-fix/default.nix11
-rw-r--r--pkgs/development/python-modules/flask-script/default.nix8
-rw-r--r--pkgs/development/python-modules/flask-seasurf/default.nix13
-rw-r--r--pkgs/development/python-modules/flask-security-too/default.nix132
-rw-r--r--pkgs/development/python-modules/flask-security/default.nix144
-rw-r--r--pkgs/development/python-modules/flask-session-captcha/default.nix2
-rw-r--r--pkgs/development/python-modules/flask-session/default.nix74
-rw-r--r--pkgs/development/python-modules/flask-silk/default.nix13
-rw-r--r--pkgs/development/python-modules/flask-sock/default.nix29
-rw-r--r--pkgs/development/python-modules/flask-socketio/default.nix35
-rw-r--r--pkgs/development/python-modules/flask-sockets/default.nix17
-rw-r--r--pkgs/development/python-modules/flask-sqlalchemy-lite/default.nix45
-rw-r--r--pkgs/development/python-modules/flask-sqlalchemy/default.nix32
-rw-r--r--pkgs/development/python-modules/flask-sslify/default.nix9
-rw-r--r--pkgs/development/python-modules/flask-swagger-ui/default.nix13
-rw-r--r--pkgs/development/python-modules/flask-swagger/default.nix9
-rw-r--r--pkgs/development/python-modules/flask-talisman/default.nix25
-rw-r--r--pkgs/development/python-modules/flask-testing/default.nix27
-rw-r--r--pkgs/development/python-modules/flask-themes2/default.nix27
-rw-r--r--pkgs/development/python-modules/flask-versioned/default.nix9
-rw-r--r--pkgs/development/python-modules/flask-wtf/default.nix37
-rw-r--r--pkgs/development/python-modules/flask/default.nix91
-rw-r--r--pkgs/development/python-modules/flatbuffers/default.nix7
-rw-r--r--pkgs/development/python-modules/flatdict/default.nix11
-rw-r--r--pkgs/development/python-modules/flatten-dict/default.nix31
-rw-r--r--pkgs/development/python-modules/flax/default.nix85
-rw-r--r--pkgs/development/python-modules/fleep/default.nix15
-rw-r--r--pkgs/development/python-modules/flet-core/default.nix28
-rw-r--r--pkgs/development/python-modules/flet-runtime/default.nix27
-rw-r--r--pkgs/development/python-modules/flet/default.nix54
-rw-r--r--pkgs/development/python-modules/flexcache/default.nix55
-rw-r--r--pkgs/development/python-modules/flexit-bacnet/default.nix34
-rw-r--r--pkgs/development/python-modules/flexmock/default.nix31
-rw-r--r--pkgs/development/python-modules/flexparser/default.nix55
-rw-r--r--pkgs/development/python-modules/flickrapi/default.nix43
-rw-r--r--pkgs/development/python-modules/flipr-api/default.nix43
-rw-r--r--pkgs/development/python-modules/flit-core/default.nix7
-rw-r--r--pkgs/development/python-modules/flit-gettext/default.nix79
-rw-r--r--pkgs/development/python-modules/flit-gettext/msgfmt-path.patch13
-rw-r--r--pkgs/development/python-modules/flit-scm/default.nix30
-rw-r--r--pkgs/development/python-modules/flit/default.nix33
-rw-r--r--pkgs/development/python-modules/floret/default.nix25
-rw-r--r--pkgs/development/python-modules/flow-record/default.nix53
-rw-r--r--pkgs/development/python-modules/flower/default.nix29
-rw-r--r--pkgs/development/python-modules/flowlogs-reader/default.nix27
-rw-r--r--pkgs/development/python-modules/flowmc/default.nix60
-rw-r--r--pkgs/development/python-modules/fluent-logger/default.nix37
-rw-r--r--pkgs/development/python-modules/flufl/bounce.nix40
-rw-r--r--pkgs/development/python-modules/flufl/i18n.nix25
-rw-r--r--pkgs/development/python-modules/flufl/lock.nix47
-rw-r--r--pkgs/development/python-modules/flux-led/default.nix27
-rw-r--r--pkgs/development/python-modules/flyingsquid/default.nix13
-rw-r--r--pkgs/development/python-modules/fn/default.nix15
-rw-r--r--pkgs/development/python-modules/fnv-hash-fast/default.nix46
-rw-r--r--pkgs/development/python-modules/fnvhash/default.nix9
-rw-r--r--pkgs/development/python-modules/folium/default.nix50
-rw-r--r--pkgs/development/python-modules/font-v/default.nix16
-rw-r--r--pkgs/development/python-modules/fontawesomefree/default.nix20
-rw-r--r--pkgs/development/python-modules/fontbakery/default.nix139
-rw-r--r--pkgs/development/python-modules/fontbakery/tests.nix9
-rw-r--r--pkgs/development/python-modules/fontfeatures/default.nix26
-rw-r--r--pkgs/development/python-modules/fontmake/default.nix69
-rw-r--r--pkgs/development/python-modules/fontmath/default.nix29
-rw-r--r--pkgs/development/python-modules/fontparts/default.nix54
-rw-r--r--pkgs/development/python-modules/fontpens/default.nix39
-rw-r--r--pkgs/development/python-modules/fonttools/default.nix131
-rw-r--r--pkgs/development/python-modules/foobot-async/default.nix30
-rw-r--r--pkgs/development/python-modules/foolscap/default.nix47
-rw-r--r--pkgs/development/python-modules/forbiddenfruit/default.nix37
-rw-r--r--pkgs/development/python-modules/fordpass/default.nix15
-rw-r--r--pkgs/development/python-modules/forecast-solar/default.nix30
-rw-r--r--pkgs/development/python-modules/formbox/default.nix21
-rw-r--r--pkgs/development/python-modules/formencode/default.nix23
-rw-r--r--pkgs/development/python-modules/formulae/default.nix30
-rw-r--r--pkgs/development/python-modules/formulaic/default.nix48
-rw-r--r--pkgs/development/python-modules/fortiosapi/default.nix25
-rw-r--r--pkgs/development/python-modules/fountains/default.nix23
-rw-r--r--pkgs/development/python-modules/foxdot/default.nix18
-rw-r--r--pkgs/development/python-modules/fpdf/default.nix6
-rw-r--r--pkgs/development/python-modules/fpdf2/default.nix32
-rw-r--r--pkgs/development/python-modules/fpylll/default.nix50
-rw-r--r--pkgs/development/python-modules/fpyutils/default.nix33
-rw-r--r--pkgs/development/python-modules/fqdn/default.nix19
-rw-r--r--pkgs/development/python-modules/free-proxy/default.nix37
-rw-r--r--pkgs/development/python-modules/freebox-api/default.nix31
-rw-r--r--pkgs/development/python-modules/freenub/default.nix60
-rw-r--r--pkgs/development/python-modules/freertos-gdb/default.nix23
-rw-r--r--pkgs/development/python-modules/freesasa/default.nix47
-rw-r--r--pkgs/development/python-modules/freetype-py/default.nix23
-rw-r--r--pkgs/development/python-modules/freezegun/default.nix41
-rw-r--r--pkgs/development/python-modules/frelatage/default.nix29
-rw-r--r--pkgs/development/python-modules/freud/default.nix103
-rw-r--r--pkgs/development/python-modules/frida-python/default.nix43
-rw-r--r--pkgs/development/python-modules/frigidaire/default.nix33
-rw-r--r--pkgs/development/python-modules/frilouz/default.nix11
-rw-r--r--pkgs/development/python-modules/fritzconnection/default.nix36
-rw-r--r--pkgs/development/python-modules/frozendict/default.nix30
-rw-r--r--pkgs/development/python-modules/frozenlist/default.nix29
-rw-r--r--pkgs/development/python-modules/frozenlist2/default.nix15
-rw-r--r--pkgs/development/python-modules/fs-s3fs/default.nix17
-rw-r--r--pkgs/development/python-modules/fs/default.nix83
-rw-r--r--pkgs/development/python-modules/fschat/default.nix71
-rw-r--r--pkgs/development/python-modules/fsspec-xrootd/default.nix54
-rw-r--r--pkgs/development/python-modules/fsspec/default.nix174
-rw-r--r--pkgs/development/python-modules/fst-pso/default.nix17
-rw-r--r--pkgs/development/python-modules/ftfy/default.nix40
-rw-r--r--pkgs/development/python-modules/ftputil/default.nix20
-rw-r--r--pkgs/development/python-modules/fugashi/default.nix37
-rw-r--r--pkgs/development/python-modules/func-timeout/default.nix15
-rw-r--r--pkgs/development/python-modules/funcparserlib/default.nix24
-rw-r--r--pkgs/development/python-modules/funcsigs/default.nix10
-rw-r--r--pkgs/development/python-modules/functiontrace/default.nix13
-rw-r--r--pkgs/development/python-modules/functools32/default.nix22
-rw-r--r--pkgs/development/python-modules/funcy/default.nix12
-rw-r--r--pkgs/development/python-modules/funsor/default.nix83
-rw-r--r--pkgs/development/python-modules/funsor/patch-makefile-for-tests.patch27
-rw-r--r--pkgs/development/python-modules/furl/default.nix21
-rw-r--r--pkgs/development/python-modules/furo/default.nix33
-rw-r--r--pkgs/development/python-modules/fuse-python/default.nix11
-rw-r--r--pkgs/development/python-modules/fusepy/default.nix14
-rw-r--r--pkgs/development/python-modules/future-fstrings/default.nix9
-rw-r--r--pkgs/development/python-modules/future-typing/default.nix9
-rw-r--r--pkgs/development/python-modules/future/default.nix15
-rw-r--r--pkgs/development/python-modules/fuzzyfinder/default.nix29
-rw-r--r--pkgs/development/python-modules/fuzzytm/default.nix34
-rw-r--r--pkgs/development/python-modules/fuzzywuzzy/default.nix16
-rw-r--r--pkgs/development/python-modules/fvcore/default.nix43
-rw-r--r--pkgs/development/python-modules/fvs/default.nix15
-rw-r--r--pkgs/development/python-modules/fx2/default.nix27
-rw-r--r--pkgs/development/python-modules/fyta-cli/default.nix26
-rw-r--r--pkgs/development/python-modules/g2pkk/default.nix16
-rw-r--r--pkgs/development/python-modules/galois/default.nix40
-rw-r--r--pkgs/development/python-modules/gamble/default.nix36
-rw-r--r--pkgs/development/python-modules/gaphas/default.nix35
-rw-r--r--pkgs/development/python-modules/gardena-bluetooth/default.nix41
-rw-r--r--pkgs/development/python-modules/garminconnect-aio/default.nix19
-rw-r--r--pkgs/development/python-modules/garminconnect/default.nix4
-rw-r--r--pkgs/development/python-modules/garth/default.nix37
-rw-r--r--pkgs/development/python-modules/gassist-text/default.nix35
-rw-r--r--pkgs/development/python-modules/gast/default.nix39
-rw-r--r--pkgs/development/python-modules/gatt/default.nix13
-rw-r--r--pkgs/development/python-modules/gattlib/default.nix37
-rw-r--r--pkgs/development/python-modules/gawd/default.nix23
-rw-r--r--pkgs/development/python-modules/gb-io/default.nix23
-rw-r--r--pkgs/development/python-modules/gbinder-python/default.nix17
-rw-r--r--pkgs/development/python-modules/gbulb/default.nix40
-rw-r--r--pkgs/development/python-modules/gcal-sync/default.nix37
-rw-r--r--pkgs/development/python-modules/gcodepy/default.nix17
-rw-r--r--pkgs/development/python-modules/gcovr/default.nix29
-rw-r--r--pkgs/development/python-modules/gcs-oauth2-boto-plugin/default.nix66
-rw-r--r--pkgs/development/python-modules/gcsa/default.nix30
-rw-r--r--pkgs/development/python-modules/gcsfs/default.nix45
-rw-r--r--pkgs/development/python-modules/gdata/default.nix8
-rw-r--r--pkgs/development/python-modules/gdb-pt-dump/default.nix9
-rw-r--r--pkgs/development/python-modules/gdown/default.nix37
-rw-r--r--pkgs/development/python-modules/ge25519/default.nix31
-rw-r--r--pkgs/development/python-modules/geeknote/default.nix39
-rw-r--r--pkgs/development/python-modules/gehomesdk/default.nix43
-rw-r--r--pkgs/development/python-modules/gekitchen/default.nix33
-rw-r--r--pkgs/development/python-modules/gekko/default.nix4
-rw-r--r--pkgs/development/python-modules/gemfileparser/default.nix37
-rw-r--r--pkgs/development/python-modules/gemfileparser2/default.nix46
-rw-r--r--pkgs/development/python-modules/genanki/default.nix23
-rw-r--r--pkgs/development/python-modules/generic/default.nix27
-rw-r--r--pkgs/development/python-modules/genie-partner-sdk/default.nix38
-rw-r--r--pkgs/development/python-modules/geniushub-client/default.nix25
-rw-r--r--pkgs/development/python-modules/genome-collector/default.nix13
-rw-r--r--pkgs/development/python-modules/genpy/default.nix11
-rw-r--r--pkgs/development/python-modules/genshi/default.nix18
-rw-r--r--pkgs/development/python-modules/gensim/default.nix45
-rw-r--r--pkgs/development/python-modules/gentools/default.nix33
-rw-r--r--pkgs/development/python-modules/genzshcomp/default.nix10
-rw-r--r--pkgs/development/python-modules/geoalchemy2/default.nix31
-rw-r--r--pkgs/development/python-modules/geocachingapi/default.nix25
-rw-r--r--pkgs/development/python-modules/geocoder/default.nix29
-rw-r--r--pkgs/development/python-modules/geodatasets/default.nix54
-rw-r--r--pkgs/development/python-modules/geographiclib/default.nix17
-rw-r--r--pkgs/development/python-modules/geoip/default.nix19
-rw-r--r--pkgs/development/python-modules/geoip2/default.nix47
-rw-r--r--pkgs/development/python-modules/geojson-client/default.nix27
-rw-r--r--pkgs/development/python-modules/geojson/default.nix25
-rw-r--r--pkgs/development/python-modules/geomet/default.nix27
-rw-r--r--pkgs/development/python-modules/geometric/default.nix32
-rw-r--r--pkgs/development/python-modules/geopandas/default.nix80
-rw-r--r--pkgs/development/python-modules/geoparquet/default.nix47
-rw-r--r--pkgs/development/python-modules/geopy/default.nix27
-rw-r--r--pkgs/development/python-modules/georss-client/default.nix33
-rw-r--r--pkgs/development/python-modules/georss-generic-client/default.nix21
-rw-r--r--pkgs/development/python-modules/georss-ign-sismologia-client/default.nix29
-rw-r--r--pkgs/development/python-modules/georss-ingv-centro-nazionale-terremoti-client/default.nix31
-rw-r--r--pkgs/development/python-modules/georss-nrcan-earthquakes-client/default.nix25
-rw-r--r--pkgs/development/python-modules/georss-qld-bushfire-alert-client/default.nix35
-rw-r--r--pkgs/development/python-modules/georss-tfs-incidents-client/default.nix25
-rw-r--r--pkgs/development/python-modules/georss-wa-dfes-client/default.nix27
-rw-r--r--pkgs/development/python-modules/gerbonara/default.nix29
-rw-r--r--pkgs/development/python-modules/get-video-properties/default.nix10
-rw-r--r--pkgs/development/python-modules/getjump/default.nix29
-rw-r--r--pkgs/development/python-modules/getkey/default.nix11
-rw-r--r--pkgs/development/python-modules/getmac/default.nix25
-rw-r--r--pkgs/development/python-modules/gevent-socketio/default.nix34
-rw-r--r--pkgs/development/python-modules/gevent-websocket/default.nix19
-rw-r--r--pkgs/development/python-modules/gevent/default.nix56
-rw-r--r--pkgs/development/python-modules/geventhttpclient/default.nix67
-rw-r--r--pkgs/development/python-modules/gfal2-python/default.nix28
-rw-r--r--pkgs/development/python-modules/gfal2-util/default.nix146
-rw-r--r--pkgs/development/python-modules/gfal2-util/fetchgfal2.nix73
-rw-r--r--pkgs/development/python-modules/gflags/default.nix10
-rw-r--r--pkgs/development/python-modules/gflanguages/default.nix35
-rw-r--r--pkgs/development/python-modules/gfsubsets/default.nix25
-rw-r--r--pkgs/development/python-modules/gftools/default.nix207
-rw-r--r--pkgs/development/python-modules/gguf/default.nix34
-rw-r--r--pkgs/development/python-modules/ghapi/default.nix30
-rw-r--r--pkgs/development/python-modules/ghdiff/default.nix19
-rw-r--r--pkgs/development/python-modules/ghp-import/default.nix19
-rw-r--r--pkgs/development/python-modules/ghrepo-stats/default.nix19
-rw-r--r--pkgs/development/python-modules/gibberish-detector/default.nix15
-rw-r--r--pkgs/development/python-modules/gidgethub/default.nix36
-rw-r--r--pkgs/development/python-modules/gin-config/default.nix21
-rw-r--r--pkgs/development/python-modules/gios/default.nix33
-rw-r--r--pkgs/development/python-modules/gipc/default.nix54
-rw-r--r--pkgs/development/python-modules/gistyc/default.nix19
-rw-r--r--pkgs/development/python-modules/git-annex-adapter/default.nix36
-rw-r--r--pkgs/development/python-modules/git-filter-repo/default.nix56
-rw-r--r--pkgs/development/python-modules/git-find-repos/default.nix28
-rw-r--r--pkgs/development/python-modules/git-revise/default.nix21
-rw-r--r--pkgs/development/python-modules/git-sweep/default.nix21
-rw-r--r--pkgs/development/python-modules/git-url-parse/default.nix23
-rw-r--r--pkgs/development/python-modules/git-versioner/default.nix18
-rw-r--r--pkgs/development/python-modules/gitdb/default.nix35
-rw-r--r--pkgs/development/python-modules/github-to-sqlite/default.nix23
-rw-r--r--pkgs/development/python-modules/github-webhook/default.nix16
-rw-r--r--pkgs/development/python-modules/github3-py/default.nix36
-rw-r--r--pkgs/development/python-modules/githubkit/default.nix12
-rw-r--r--pkgs/development/python-modules/gitignore-parser/default.nix27
-rw-r--r--pkgs/development/python-modules/gitlike-commands/default.nix19
-rw-r--r--pkgs/development/python-modules/gitpython/default.nix26
-rw-r--r--pkgs/development/python-modules/glad/default.nix8
-rw-r--r--pkgs/development/python-modules/glad2/default.nix13
-rw-r--r--pkgs/development/python-modules/glances-api/default.nix4
-rw-r--r--pkgs/development/python-modules/glcontext/default.nix38
-rw-r--r--pkgs/development/python-modules/glean-parser/default.nix57
-rw-r--r--pkgs/development/python-modules/glean-sdk/default.nix81
-rw-r--r--pkgs/development/python-modules/glfw/default.nix19
-rw-r--r--pkgs/development/python-modules/glob2/default.nix15
-rw-r--r--pkgs/development/python-modules/globre/default.nix29
-rw-r--r--pkgs/development/python-modules/globus-sdk/default.nix59
-rw-r--r--pkgs/development/python-modules/glom/default.nix41
-rw-r--r--pkgs/development/python-modules/glueviz/default.nix96
-rw-r--r--pkgs/development/python-modules/glymur/default.nix74
-rw-r--r--pkgs/development/python-modules/glymur/set-lib-paths.patch16
-rw-r--r--pkgs/development/python-modules/glyphsets/default.nix52
-rw-r--r--pkgs/development/python-modules/glyphslib/default.nix33
-rw-r--r--pkgs/development/python-modules/glyphtools/default.nix24
-rw-r--r--pkgs/development/python-modules/gmpy/default.nix31
-rw-r--r--pkgs/development/python-modules/gmpy2/default.nix84
-rw-r--r--pkgs/development/python-modules/gmqtt/default.nix41
-rw-r--r--pkgs/development/python-modules/gntp/default.nix11
-rw-r--r--pkgs/development/python-modules/gnureadline/default.nix18
-rw-r--r--pkgs/development/python-modules/goalzero/default.nix19
-rw-r--r--pkgs/development/python-modules/gocardless-pro/default.nix29
-rw-r--r--pkgs/development/python-modules/goobook/default.nix25
-rw-r--r--pkgs/development/python-modules/goocalendar/default.nix31
-rw-r--r--pkgs/development/python-modules/goodwe/default.nix4
-rw-r--r--pkgs/development/python-modules/google-ai-generativelanguage/default.nix4
-rw-r--r--pkgs/development/python-modules/google-api-core/default.nix55
-rw-r--r--pkgs/development/python-modules/google-api-python-client/default.nix8
-rw-r--r--pkgs/development/python-modules/google-auth-httplib2/default.nix23
-rw-r--r--pkgs/development/python-modules/google-auth-oauthlib/default.nix64
-rw-r--r--pkgs/development/python-modules/google-auth/default.nix99
-rw-r--r--pkgs/development/python-modules/google-cloud-access-context-manager/default.nix32
-rw-r--r--pkgs/development/python-modules/google-cloud-appengine-logging/default.nix38
-rw-r--r--pkgs/development/python-modules/google-cloud-artifact-registry/default.nix40
-rw-r--r--pkgs/development/python-modules/google-cloud-asset/default.nix11
-rw-r--r--pkgs/development/python-modules/google-cloud-audit-log/default.nix38
-rw-r--r--pkgs/development/python-modules/google-cloud-automl/default.nix60
-rw-r--r--pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix9
-rw-r--r--pkgs/development/python-modules/google-cloud-bigquery-logging/default.nix38
-rw-r--r--pkgs/development/python-modules/google-cloud-bigquery-storage/default.nix55
-rw-r--r--pkgs/development/python-modules/google-cloud-bigquery/default.nix10
-rw-r--r--pkgs/development/python-modules/google-cloud-bigtable/default.nix9
-rw-r--r--pkgs/development/python-modules/google-cloud-compute/default.nix36
-rw-r--r--pkgs/development/python-modules/google-cloud-container/default.nix38
-rw-r--r--pkgs/development/python-modules/google-cloud-core/default.nix29
-rw-r--r--pkgs/development/python-modules/google-cloud-datacatalog/default.nix44
-rw-r--r--pkgs/development/python-modules/google-cloud-dataproc/default.nix42
-rw-r--r--pkgs/development/python-modules/google-cloud-datastore/default.nix49
-rw-r--r--pkgs/development/python-modules/google-cloud-dlp/default.nix46
-rw-r--r--pkgs/development/python-modules/google-cloud-dns/default.nix23
-rw-r--r--pkgs/development/python-modules/google-cloud-error-reporting/default.nix33
-rw-r--r--pkgs/development/python-modules/google-cloud-firestore/default.nix44
-rw-r--r--pkgs/development/python-modules/google-cloud-iam-logging/default.nix38
-rw-r--r--pkgs/development/python-modules/google-cloud-iam/default.nix30
-rw-r--r--pkgs/development/python-modules/google-cloud-iot/default.nix27
-rw-r--r--pkgs/development/python-modules/google-cloud-kms/default.nix35
-rw-r--r--pkgs/development/python-modules/google-cloud-language/default.nix36
-rw-r--r--pkgs/development/python-modules/google-cloud-logging/default.nix58
-rw-r--r--pkgs/development/python-modules/google-cloud-monitoring/default.nix13
-rw-r--r--pkgs/development/python-modules/google-cloud-netapp/default.nix38
-rw-r--r--pkgs/development/python-modules/google-cloud-network-connectivity/default.nix56
-rw-r--r--pkgs/development/python-modules/google-cloud-org-policy/default.nix38
-rw-r--r--pkgs/development/python-modules/google-cloud-os-config/default.nix40
-rw-r--r--pkgs/development/python-modules/google-cloud-pubsub/default.nix11
-rw-r--r--pkgs/development/python-modules/google-cloud-redis/default.nix40
-rw-r--r--pkgs/development/python-modules/google-cloud-resource-manager/default.nix42
-rw-r--r--pkgs/development/python-modules/google-cloud-runtimeconfig/default.nix27
-rw-r--r--pkgs/development/python-modules/google-cloud-secret-manager/default.nix7
-rw-r--r--pkgs/development/python-modules/google-cloud-securitycenter/default.nix9
-rw-r--r--pkgs/development/python-modules/google-cloud-shell/default.nix38
-rw-r--r--pkgs/development/python-modules/google-cloud-spanner/default.nix22
-rw-r--r--pkgs/development/python-modules/google-cloud-speech/default.nix38
-rw-r--r--pkgs/development/python-modules/google-cloud-storage/default.nix51
-rw-r--r--pkgs/development/python-modules/google-cloud-tasks/default.nix40
-rw-r--r--pkgs/development/python-modules/google-cloud-testutils/default.nix23
-rw-r--r--pkgs/development/python-modules/google-cloud-texttospeech/default.nix40
-rw-r--r--pkgs/development/python-modules/google-cloud-trace/default.nix42
-rw-r--r--pkgs/development/python-modules/google-cloud-translate/default.nix44
-rw-r--r--pkgs/development/python-modules/google-cloud-videointelligence/default.nix40
-rw-r--r--pkgs/development/python-modules/google-cloud-vision/default.nix38
-rw-r--r--pkgs/development/python-modules/google-cloud-vpc-access/default.nix38
-rw-r--r--pkgs/development/python-modules/google-cloud-webrisk/default.nix38
-rw-r--r--pkgs/development/python-modules/google-cloud-websecurityscanner/default.nix38
-rw-r--r--pkgs/development/python-modules/google-cloud-workflows/default.nix36
-rw-r--r--pkgs/development/python-modules/google-cloud-workstations/default.nix40
-rw-r--r--pkgs/development/python-modules/google-crc32c/default.nix14
-rw-r--r--pkgs/development/python-modules/google-generativeai/default.nix6
-rw-r--r--pkgs/development/python-modules/google-i18n-address/default.nix41
-rw-r--r--pkgs/development/python-modules/google-nest-sdm/default.nix45
-rw-r--r--pkgs/development/python-modules/google-pasta/default.nix21
-rw-r--r--pkgs/development/python-modules/google-re2/default.nix40
-rw-r--r--pkgs/development/python-modules/google-reauth/default.nix21
-rw-r--r--pkgs/development/python-modules/google-resumable-media/default.nix39
-rw-r--r--pkgs/development/python-modules/google-search-results/default.nix19
-rw-r--r--pkgs/development/python-modules/google/default.nix19
-rw-r--r--pkgs/development/python-modules/googleapis-common-protos/default.nix23
-rw-r--r--pkgs/development/python-modules/googlemaps/default.nix25
-rw-r--r--pkgs/development/python-modules/googletrans/default.nix7
-rw-r--r--pkgs/development/python-modules/gophish/default.nix63
-rw-r--r--pkgs/development/python-modules/gotailwind/default.nix59
-rw-r--r--pkgs/development/python-modules/gotenberg-client/default.nix33
-rw-r--r--pkgs/development/python-modules/govee-ble/default.nix4
-rw-r--r--pkgs/development/python-modules/govee-led-wez/default.nix31
-rw-r--r--pkgs/development/python-modules/govee-local-api/default.nix10
-rw-r--r--pkgs/development/python-modules/goveelights/default.nix19
-rw-r--r--pkgs/development/python-modules/gpapi/default.nix26
-rw-r--r--pkgs/development/python-modules/gpaw/default.nix77
-rw-r--r--pkgs/development/python-modules/gphoto2/default.nix22
-rw-r--r--pkgs/development/python-modules/gpib-ctypes/default.nix21
-rw-r--r--pkgs/development/python-modules/gpiozero/default.nix37
-rw-r--r--pkgs/development/python-modules/gplaycli/default.nix41
-rw-r--r--pkgs/development/python-modules/gprof2dot/default.nix25
-rw-r--r--pkgs/development/python-modules/gps3/default.nix7
-rw-r--r--pkgs/development/python-modules/gpsoauth/default.nix25
-rw-r--r--pkgs/development/python-modules/gpt-2-simple/default.nix34
-rw-r--r--pkgs/development/python-modules/gptcache/default.nix25
-rw-r--r--pkgs/development/python-modules/gpuctypes/default.nix128
-rw-r--r--pkgs/development/python-modules/gpuctypes/fix-dlopen-cuda.patch32
-rw-r--r--pkgs/development/python-modules/gpustat/default.nix33
-rw-r--r--pkgs/development/python-modules/gpxpy/default.nix9
-rw-r--r--pkgs/development/python-modules/gpy/default.nix47
-rw-r--r--pkgs/development/python-modules/gpytorch/default.nix44
-rw-r--r--pkgs/development/python-modules/gql/default.nix75
-rw-r--r--pkgs/development/python-modules/grad-cam/default.nix56
-rw-r--r--pkgs/development/python-modules/gradient-statsd/default.nix27
-rw-r--r--pkgs/development/python-modules/gradient-utils/default.nix31
-rw-r--r--pkgs/development/python-modules/gradient/default.nix45
-rw-r--r--pkgs/development/python-modules/gradio-pdf/default.nix33
-rw-r--r--pkgs/development/python-modules/gradio/client.nix76
-rw-r--r--pkgs/development/python-modules/gradio/default.nix240
-rw-r--r--pkgs/development/python-modules/grafanalib/default.nix32
-rw-r--r--pkgs/development/python-modules/grammalecte/default.nix13
-rw-r--r--pkgs/development/python-modules/grandalf/default.nix27
-rw-r--r--pkgs/development/python-modules/graph-tool/default.nix93
-rw-r--r--pkgs/development/python-modules/grapheme/default.nix13
-rw-r--r--pkgs/development/python-modules/graphene-django/default.nix61
-rw-r--r--pkgs/development/python-modules/graphene/default.nix46
-rw-r--r--pkgs/development/python-modules/graphite-web/default.nix52
-rw-r--r--pkgs/development/python-modules/graphlib-backport/default.nix11
-rw-r--r--pkgs/development/python-modules/graphql-core/default.nix21
-rw-r--r--pkgs/development/python-modules/graphql-relay/default.nix41
-rw-r--r--pkgs/development/python-modules/graphql-server-core/default.nix21
-rw-r--r--pkgs/development/python-modules/graphql-subscription-manager/default.nix17
-rw-r--r--pkgs/development/python-modules/graphqlclient/default.nix13
-rw-r--r--pkgs/development/python-modules/graphrag/default.nix117
-rw-r--r--pkgs/development/python-modules/graphtage/default.nix59
-rw-r--r--pkgs/development/python-modules/graphviz/default.nix41
-rw-r--r--pkgs/development/python-modules/grappelli-safe/default.nix21
-rw-r--r--pkgs/development/python-modules/graspologic-native/Cargo.lock652
-rw-r--r--pkgs/development/python-modules/graspologic-native/default.nix50
-rw-r--r--pkgs/development/python-modules/graspologic/default.nix92
-rw-r--r--pkgs/development/python-modules/great-tables/default.nix89
-rw-r--r--pkgs/development/python-modules/greatfet/default.nix61
-rw-r--r--pkgs/development/python-modules/greeclimate/default.nix51
-rw-r--r--pkgs/development/python-modules/greek-accentuation/default.nix19
-rw-r--r--pkgs/development/python-modules/green/default.nix29
-rw-r--r--pkgs/development/python-modules/greeneye-monitor/default.nix29
-rw-r--r--pkgs/development/python-modules/greenlet/default.nix106
-rw-r--r--pkgs/development/python-modules/greenlet/python-3.13-compat.patch313
-rw-r--r--pkgs/development/python-modules/gremlinpython/default.nix60
-rw-r--r--pkgs/development/python-modules/grep-ast/default.nix41
-rw-r--r--pkgs/development/python-modules/grequests/default.nix19
-rw-r--r--pkgs/development/python-modules/greynoise/default.nix39
-rw-r--r--pkgs/development/python-modules/gridnet/default.nix33
-rw-r--r--pkgs/development/python-modules/griffe/default.nix10
-rw-r--r--pkgs/development/python-modules/grip/default.nix48
-rw-r--r--pkgs/development/python-modules/groestlcoin-hash/default.nix11
-rw-r--r--pkgs/development/python-modules/growattserver/default.nix25
-rw-r--r--pkgs/development/python-modules/grpc-google-iam-v1/default.nix25
-rw-r--r--pkgs/development/python-modules/grpc-interceptor/default.nix27
-rw-r--r--pkgs/development/python-modules/grpcio-channelz/default.nix30
-rw-r--r--pkgs/development/python-modules/grpcio-gcp/default.nix9
-rw-r--r--pkgs/development/python-modules/grpcio-health-checking/default.nix26
-rw-r--r--pkgs/development/python-modules/grpcio-reflection/default.nix30
-rw-r--r--pkgs/development/python-modules/grpcio-status/default.nix26
-rw-r--r--pkgs/development/python-modules/grpcio-testing/default.nix35
-rw-r--r--pkgs/development/python-modules/grpcio-tools/default.nix43
-rw-r--r--pkgs/development/python-modules/grpcio/default.nix82
-rw-r--r--pkgs/development/python-modules/gruut-ipa/default.nix23
-rw-r--r--pkgs/development/python-modules/gruut/default.nix99
-rw-r--r--pkgs/development/python-modules/gruut/language-pack.nix20
-rw-r--r--pkgs/development/python-modules/gsd/default.nix44
-rw-r--r--pkgs/development/python-modules/gsm0338/default.nix21
-rw-r--r--pkgs/development/python-modules/gspread/default.nix35
-rw-r--r--pkgs/development/python-modules/gssapi/default.nix83
-rw-r--r--pkgs/development/python-modules/gst-python/default.nix38
-rw-r--r--pkgs/development/python-modules/gstools/default.nix64
-rw-r--r--pkgs/development/python-modules/gtfs-realtime-bindings/default.nix21
-rw-r--r--pkgs/development/python-modules/gto/default.nix47
-rw-r--r--pkgs/development/python-modules/gtts-token/default.nix16
-rw-r--r--pkgs/development/python-modules/gtts/default.nix47
-rw-r--r--pkgs/development/python-modules/gudhi/default.nix76
-rw-r--r--pkgs/development/python-modules/guessit/default.nix35
-rw-r--r--pkgs/development/python-modules/guestfs/default.nix13
-rw-r--r--pkgs/development/python-modules/guidance/default.nix58
-rw-r--r--pkgs/development/python-modules/gumath/default.nix33
-rw-r--r--pkgs/development/python-modules/gunicorn/default.nix88
-rw-r--r--pkgs/development/python-modules/guppy3/default.nix17
-rw-r--r--pkgs/development/python-modules/gurobipy/default.nix14
-rw-r--r--pkgs/development/python-modules/guzzle-sphinx-theme/default.nix19
-rw-r--r--pkgs/development/python-modules/gviz-api/default.nix11
-rw-r--r--pkgs/development/python-modules/gvm-tools/default.nix41
-rw-r--r--pkgs/development/python-modules/gwcs/default.nix60
-rw-r--r--pkgs/development/python-modules/gym-notices/default.nix8
-rw-r--r--pkgs/development/python-modules/gym/default.nix19
-rw-r--r--pkgs/development/python-modules/gymnasium/default.nix51
-rw-r--r--pkgs/development/python-modules/gyp/default.nix26
-rw-r--r--pkgs/development/python-modules/h11/default.nix19
-rw-r--r--pkgs/development/python-modules/h2/default.nix21
-rw-r--r--pkgs/development/python-modules/h3/default.nix46
-rw-r--r--pkgs/development/python-modules/h5io/default.nix23
-rw-r--r--pkgs/development/python-modules/h5netcdf/default.nix29
-rw-r--r--pkgs/development/python-modules/h5py/default.nix94
-rw-r--r--pkgs/development/python-modules/h5py/mpi4py-requirement.patch13
-rw-r--r--pkgs/development/python-modules/ha-ffmpeg/default.nix21
-rw-r--r--pkgs/development/python-modules/ha-mqtt-discoverable/default.nix39
-rw-r--r--pkgs/development/python-modules/ha-philipsjs/default.nix40
-rw-r--r--pkgs/development/python-modules/habanero/default.nix43
-rw-r--r--pkgs/development/python-modules/habitipy/default.nix45
-rw-r--r--pkgs/development/python-modules/habluetooth/default.nix54
-rw-r--r--pkgs/development/python-modules/hachoir/default.nix25
-rw-r--r--pkgs/development/python-modules/hacking/default.nix45
-rw-r--r--pkgs/development/python-modules/hahomematic/default.nix46
-rw-r--r--pkgs/development/python-modules/hakuin/default.nix42
-rw-r--r--pkgs/development/python-modules/halo/default.nix30
-rw-r--r--pkgs/development/python-modules/halohome/default.nix19
-rw-r--r--pkgs/development/python-modules/handout/default.nix14
-rw-r--r--pkgs/development/python-modules/handy-archives/default.nix32
-rw-r--r--pkgs/development/python-modules/hankel/default.nix49
-rw-r--r--pkgs/development/python-modules/hap-python/default.nix38
-rw-r--r--pkgs/development/python-modules/hass-client/default.nix56
-rw-r--r--pkgs/development/python-modules/hass-nabucasa/default.nix6
-rw-r--r--pkgs/development/python-modules/hass-splunk/default.nix36
-rw-r--r--pkgs/development/python-modules/hassil/default.nix44
-rw-r--r--pkgs/development/python-modules/hatasmota/default.nix27
-rw-r--r--pkgs/development/python-modules/hatch-fancy-pypi-readme/default.nix40
-rw-r--r--pkgs/development/python-modules/hatch-jupyter-builder/default.nix33
-rw-r--r--pkgs/development/python-modules/hatch-nodejs-version/default.nix25
-rw-r--r--pkgs/development/python-modules/hatch-odoo/default.nix40
-rw-r--r--pkgs/development/python-modules/hatch-regex-commit/default.nix45
-rw-r--r--pkgs/development/python-modules/hatch-requirements-txt/default.nix24
-rw-r--r--pkgs/development/python-modules/hatch-vcs/default.nix32
-rw-r--r--pkgs/development/python-modules/hatchling/default.nix46
-rw-r--r--pkgs/development/python-modules/haversine/default.nix23
-rw-r--r--pkgs/development/python-modules/hawkauthlib/default.nix37
-rw-r--r--pkgs/development/python-modules/haystack-ai/default.nix (renamed from pkgs/development/python-modules/farm-haystack/default.nix)226
-rw-r--r--pkgs/development/python-modules/hcloud/default.nix33
-rw-r--r--pkgs/development/python-modules/hcs-utils/default.nix43
-rw-r--r--pkgs/development/python-modules/hdate/default.nix53
-rw-r--r--pkgs/development/python-modules/hdbscan/default.nix41
-rw-r--r--pkgs/development/python-modules/hdf5plugin/default.nix29
-rw-r--r--pkgs/development/python-modules/hdfs/default.nix37
-rw-r--r--pkgs/development/python-modules/hdmedians/default.nix52
-rw-r--r--pkgs/development/python-modules/hdmedians/replace-nose.patch91
-rw-r--r--pkgs/development/python-modules/headerparser/default.nix27
-rw-r--r--pkgs/development/python-modules/heapdict/default.nix9
-rw-r--r--pkgs/development/python-modules/heatmiserv3/default.nix46
-rw-r--r--pkgs/development/python-modules/heatshrink2/default.nix13
-rw-r--r--pkgs/development/python-modules/heatzypy/default.nix5
-rw-r--r--pkgs/development/python-modules/help2man/default.nix27
-rw-r--r--pkgs/development/python-modules/helpdev/default.nix12
-rw-r--r--pkgs/development/python-modules/helper/default.nix17
-rw-r--r--pkgs/development/python-modules/hepunits/default.nix22
-rw-r--r--pkgs/development/python-modules/here-routing/default.nix37
-rw-r--r--pkgs/development/python-modules/here-transit/default.nix39
-rw-r--r--pkgs/development/python-modules/herepy/default.nix33
-rw-r--r--pkgs/development/python-modules/hetzner/default.nix7
-rw-r--r--pkgs/development/python-modules/heudiconv/default.nix62
-rw-r--r--pkgs/development/python-modules/hexbytes/default.nix25
-rw-r--r--pkgs/development/python-modules/hexdump/default.nix11
-rw-r--r--pkgs/development/python-modules/hfst/default.nix25
-rw-r--r--pkgs/development/python-modules/hg-commitsigs/default.nix9
-rw-r--r--pkgs/development/python-modules/hg-evolve/default.nix22
-rw-r--r--pkgs/development/python-modules/hg-git/default.nix34
-rw-r--r--pkgs/development/python-modules/hickle/default.nix20
-rw-r--r--pkgs/development/python-modules/hid-parser/default.nix17
-rw-r--r--pkgs/development/python-modules/hid/default.nix27
-rw-r--r--pkgs/development/python-modules/hidapi/default.nix55
-rw-r--r--pkgs/development/python-modules/hieroglyph/default.nix9
-rw-r--r--pkgs/development/python-modules/highdicom/default.nix29
-rw-r--r--pkgs/development/python-modules/highspy/default.nix45
-rw-r--r--pkgs/development/python-modules/hijri-converter/default.nix19
-rw-r--r--pkgs/development/python-modules/hikari-crescent/default.nix59
-rw-r--r--pkgs/development/python-modules/hikari-lightbulb/default.nix48
-rw-r--r--pkgs/development/python-modules/hikari/default.nix52
-rw-r--r--pkgs/development/python-modules/hikvision/default.nix34
-rw-r--r--pkgs/development/python-modules/hiredis/default.nix24
-rw-r--r--pkgs/development/python-modules/hiro/default.nix13
-rw-r--r--pkgs/development/python-modules/hishel/default.nix4
-rw-r--r--pkgs/development/python-modules/hist/default.nix27
-rw-r--r--pkgs/development/python-modules/histoprint/default.nix23
-rw-r--r--pkgs/development/python-modules/hiyapyco/default.nix21
-rw-r--r--pkgs/development/python-modules/hjson/default.nix37
-rw-r--r--pkgs/development/python-modules/hkavr/default.nix19
-rw-r--r--pkgs/development/python-modules/hkdf/default.nix34
-rw-r--r--pkgs/development/python-modules/hledger-utils/default.nix41
-rw-r--r--pkgs/development/python-modules/hlk-sw16/default.nix7
-rw-r--r--pkgs/development/python-modules/hmmlearn/default.nix29
-rw-r--r--pkgs/development/python-modules/hnswlib/default.nix21
-rw-r--r--pkgs/development/python-modules/hocr-tools/default.nix21
-rw-r--r--pkgs/development/python-modules/hole/default.nix19
-rw-r--r--pkgs/development/python-modules/holidays/default.nix4
-rw-r--r--pkgs/development/python-modules/hologram/default.nix40
-rw-r--r--pkgs/development/python-modules/holoviews/default.nix49
-rw-r--r--pkgs/development/python-modules/home-assistant-bluetooth/default.nix49
-rw-r--r--pkgs/development/python-modules/home-assistant-chip-clusters/default.nix15
-rw-r--r--pkgs/development/python-modules/home-assistant-chip-core/default.nix102
-rw-r--r--pkgs/development/python-modules/homeconnect/default.nix35
-rw-r--r--pkgs/development/python-modules/homematicip/default.nix113
-rw-r--r--pkgs/development/python-modules/homepluscontrol/default.nix19
-rw-r--r--pkgs/development/python-modules/homf/default.nix55
-rw-r--r--pkgs/development/python-modules/homf/tests.nix43
-rw-r--r--pkgs/development/python-modules/hoomd-blue/default.nix64
-rw-r--r--pkgs/development/python-modules/hopcroftkarp/default.nix7
-rw-r--r--pkgs/development/python-modules/horizon-eda/default.nix32
-rw-r--r--pkgs/development/python-modules/howdoi/default.nix76
-rw-r--r--pkgs/development/python-modules/hpack/default.nix15
-rw-r--r--pkgs/development/python-modules/hpccm/default.nix45
-rw-r--r--pkgs/development/python-modules/hs-dbus-signature/default.nix13
-rw-r--r--pkgs/development/python-modules/hsaudiotag3k/default.nix12
-rw-r--r--pkgs/development/python-modules/hsh/default.nix31
-rw-r--r--pkgs/development/python-modules/hsluv/default.nix15
-rw-r--r--pkgs/development/python-modules/hstspreload/default.nix6
-rw-r--r--pkgs/development/python-modules/html-sanitizer/default.nix39
-rw-r--r--pkgs/development/python-modules/html-table-parser-python3/default.nix33
-rw-r--r--pkgs/development/python-modules/html-tag-names/default.nix13
-rw-r--r--pkgs/development/python-modules/html-text/default.nix40
-rw-r--r--pkgs/development/python-modules/html-void-elements/default.nix13
-rw-r--r--pkgs/development/python-modules/html2image/default.nix31
-rw-r--r--pkgs/development/python-modules/html2text/default.nix24
-rw-r--r--pkgs/development/python-modules/html5-parser/default.nix39
-rw-r--r--pkgs/development/python-modules/html5lib/default.nix24
-rw-r--r--pkgs/development/python-modules/html5tagger/default.nix19
-rw-r--r--pkgs/development/python-modules/htmldate/default.nix19
-rw-r--r--pkgs/development/python-modules/htmllaundry/default.nix31
-rw-r--r--pkgs/development/python-modules/htmllistparse/default.nix30
-rw-r--r--pkgs/development/python-modules/htmlmin/default.nix10
-rw-r--r--pkgs/development/python-modules/htmltools/default.nix49
-rw-r--r--pkgs/development/python-modules/htseq/default.nix74
-rw-r--r--pkgs/development/python-modules/httmock/default.nix13
-rw-r--r--pkgs/development/python-modules/http-ece/default.nix49
-rw-r--r--pkgs/development/python-modules/http-message-signatures/default.nix31
-rw-r--r--pkgs/development/python-modules/http-parser/default.nix36
-rw-r--r--pkgs/development/python-modules/http-sfv/default.nix25
-rw-r--r--pkgs/development/python-modules/httpagentparser/default.nix13
-rw-r--r--pkgs/development/python-modules/httpauth/default.nix14
-rw-r--r--pkgs/development/python-modules/httpbin/default.nix53
-rw-r--r--pkgs/development/python-modules/httpcore/default.nix70
-rw-r--r--pkgs/development/python-modules/httpie-ntlm/default.nix16
-rw-r--r--pkgs/development/python-modules/httpie/default.nix119
-rw-r--r--pkgs/development/python-modules/httplib2/default.nix72
-rw-r--r--pkgs/development/python-modules/httpretty/default.nix30
-rw-r--r--pkgs/development/python-modules/httpserver/default.nix10
-rw-r--r--pkgs/development/python-modules/httpsig/default.nix23
-rw-r--r--pkgs/development/python-modules/httptools/default.nix17
-rw-r--r--pkgs/development/python-modules/httpx-auth/default.nix33
-rw-r--r--pkgs/development/python-modules/httpx-ntlm/default.nix17
-rw-r--r--pkgs/development/python-modules/httpx-socks/default.nix57
-rw-r--r--pkgs/development/python-modules/httpx-ws/default.nix68
-rw-r--r--pkgs/development/python-modules/httpx/default.nix89
-rw-r--r--pkgs/development/python-modules/huawei-lte-api/default.nix34
-rw-r--r--pkgs/development/python-modules/huepy/default.nix33
-rw-r--r--pkgs/development/python-modules/huey/default.nix21
-rw-r--r--pkgs/development/python-modules/hug/default.nix32
-rw-r--r--pkgs/development/python-modules/huggingface-hub/default.nix48
-rw-r--r--pkgs/development/python-modules/huisbaasje-client/default.nix21
-rw-r--r--pkgs/development/python-modules/human-readable/default.nix15
-rw-r--r--pkgs/development/python-modules/humanfriendly/default.nix23
-rw-r--r--pkgs/development/python-modules/humanize/default.nix41
-rw-r--r--pkgs/development/python-modules/humblewx/default.nix11
-rw-r--r--pkgs/development/python-modules/hupper/default.nix19
-rw-r--r--pkgs/development/python-modules/hurry-filesize/default.nix20
-rw-r--r--pkgs/development/python-modules/huum/default.nix27
-rw-r--r--pkgs/development/python-modules/hvac/default.nix29
-rw-r--r--pkgs/development/python-modules/hvplot/default.nix38
-rw-r--r--pkgs/development/python-modules/hwdata/default.nix19
-rw-r--r--pkgs/development/python-modules/hwi/default.nix35
-rw-r--r--pkgs/development/python-modules/hy/default.nix67
-rw-r--r--pkgs/development/python-modules/hydra-check/default.nix22
-rw-r--r--pkgs/development/python-modules/hydra-core/default.nix48
-rw-r--r--pkgs/development/python-modules/hydrawiser/default.nix21
-rw-r--r--pkgs/development/python-modules/hydrus-api/default.nix29
-rw-r--r--pkgs/development/python-modules/hypchat/default.nix18
-rw-r--r--pkgs/development/python-modules/hypercorn/default.nix57
-rw-r--r--pkgs/development/python-modules/hyperframe/default.nix9
-rw-r--r--pkgs/development/python-modules/hyperion-py/default.nix30
-rw-r--r--pkgs/development/python-modules/hyperlink/default.nix18
-rw-r--r--pkgs/development/python-modules/hyperopt/default.nix31
-rw-r--r--pkgs/development/python-modules/hyperpyyaml/default.nix17
-rw-r--r--pkgs/development/python-modules/hyperscan/default.nix30
-rw-r--r--pkgs/development/python-modules/hypothesis-auto/default.nix33
-rw-r--r--pkgs/development/python-modules/hypothesis/default.nix91
-rw-r--r--pkgs/development/python-modules/hypothesmith/default.nix68
-rw-r--r--pkgs/development/python-modules/hypothesmith/remove-black.patch87
-rw-r--r--pkgs/development/python-modules/hyppo/default.nix49
-rw-r--r--pkgs/development/python-modules/hyrule/default.nix34
-rw-r--r--pkgs/development/python-modules/i-pi/default.nix44
-rw-r--r--pkgs/development/python-modules/i2c-tools/default.nix7
-rw-r--r--pkgs/development/python-modules/i2csense/default.nix15
-rw-r--r--pkgs/development/python-modules/i3-py/default.nix10
-rw-r--r--pkgs/development/python-modules/i3ipc/default.nix40
-rw-r--r--pkgs/development/python-modules/iammeter/default.nix13
-rw-r--r--pkgs/development/python-modules/iapws/default.nix11
-rw-r--r--pkgs/development/python-modules/iaqualink/default.nix27
-rw-r--r--pkgs/development/python-modules/ibeacon-ble/default.nix33
-rw-r--r--pkgs/development/python-modules/ibis-framework/default.nix221
-rw-r--r--pkgs/development/python-modules/ibis/default.nix17
-rw-r--r--pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix72
-rw-r--r--pkgs/development/python-modules/ibm-watson/default.nix40
-rw-r--r--pkgs/development/python-modules/ical/default.nix41
-rw-r--r--pkgs/development/python-modules/icalendar/default.nix36
-rw-r--r--pkgs/development/python-modules/icalevents/default.nix40
-rw-r--r--pkgs/development/python-modules/icecream/default.nix41
-rw-r--r--pkgs/development/python-modules/iceportal/default.nix31
-rw-r--r--pkgs/development/python-modules/icmplib/default.nix13
-rw-r--r--pkgs/development/python-modules/icnsutil/default.nix15
-rw-r--r--pkgs/development/python-modules/icoextract/default.nix37
-rw-r--r--pkgs/development/python-modules/icoextract/exe-thumbnailer.thumbnailer3
-rw-r--r--pkgs/development/python-modules/icontract/default.nix47
-rw-r--r--pkgs/development/python-modules/ics/default.nix49
-rw-r--r--pkgs/development/python-modules/id/default.nix2
-rw-r--r--pkgs/development/python-modules/idasen-ha/default.nix41
-rw-r--r--pkgs/development/python-modules/idasen/default.nix33
-rw-r--r--pkgs/development/python-modules/identify/default.nix4
-rw-r--r--pkgs/development/python-modules/idna-ssl/default.nix7
-rw-r--r--pkgs/development/python-modules/idna/default.nix26
-rw-r--r--pkgs/development/python-modules/ifaddr/default.nix13
-rw-r--r--pkgs/development/python-modules/ifcopenshell/default.nix51
-rw-r--r--pkgs/development/python-modules/ignite/default.nix73
-rw-r--r--pkgs/development/python-modules/igraph/default.nix53
-rw-r--r--pkgs/development/python-modules/ihcsdk/default.nix41
-rw-r--r--pkgs/development/python-modules/ihm/default.nix29
-rw-r--r--pkgs/development/python-modules/iisignature/default.nix17
-rw-r--r--pkgs/development/python-modules/ijson/default.nix43
-rw-r--r--pkgs/development/python-modules/ilcli/default.nix34
-rw-r--r--pkgs/development/python-modules/ilua/default.nix25
-rw-r--r--pkgs/development/python-modules/image-diff/default.nix16
-rw-r--r--pkgs/development/python-modules/image-go-nord/default.nix15
-rw-r--r--pkgs/development/python-modules/imagecodecs-lite/default.nix28
-rw-r--r--pkgs/development/python-modules/imagecorruptions/default.nix25
-rw-r--r--pkgs/development/python-modules/imagededup/default.nix41
-rw-r--r--pkgs/development/python-modules/imagehash/default.nix21
-rw-r--r--pkgs/development/python-modules/imageio-ffmpeg/default.nix59
-rw-r--r--pkgs/development/python-modules/imageio-ffmpeg/ffmpeg-path.patch9
-rw-r--r--pkgs/development/python-modules/imageio/default.nix123
-rw-r--r--pkgs/development/python-modules/imagesize/default.nix8
-rw-r--r--pkgs/development/python-modules/imantics/default.nix31
-rw-r--r--pkgs/development/python-modules/imap-tools/default.nix24
-rw-r--r--pkgs/development/python-modules/imapclient/default.nix16
-rw-r--r--pkgs/development/python-modules/imaplib2/default.nix17
-rw-r--r--pkgs/development/python-modules/imbalanced-learn/default.nix47
-rw-r--r--pkgs/development/python-modules/img2pdf/default.nix70
-rw-r--r--pkgs/development/python-modules/imgcat/default.nix33
-rw-r--r--pkgs/development/python-modules/imgdiff/default.nix17
-rw-r--r--pkgs/development/python-modules/imgsize/default.nix7
-rw-r--r--pkgs/development/python-modules/imgtool/default.nix33
-rw-r--r--pkgs/development/python-modules/imgw-pib/default.nix47
-rw-r--r--pkgs/development/python-modules/imia/default.nix19
-rw-r--r--pkgs/development/python-modules/iminuit/default.nix56
-rw-r--r--pkgs/development/python-modules/immutabledict/default.nix27
-rw-r--r--pkgs/development/python-modules/immutables/default.nix21
-rw-r--r--pkgs/development/python-modules/impacket/default.nix56
-rw-r--r--pkgs/development/python-modules/import-expression/default.nix37
-rw-r--r--pkgs/development/python-modules/importlab/default.nix14
-rw-r--r--pkgs/development/python-modules/importlib-metadata/default.nix43
-rw-r--r--pkgs/development/python-modules/importlib-resources/default.nix52
-rw-r--r--pkgs/development/python-modules/importmagic/default.nix12
-rw-r--r--pkgs/development/python-modules/imread/default.nix54
-rw-r--r--pkgs/development/python-modules/imutils/default.nix11
-rw-r--r--pkgs/development/python-modules/in-n-out/default.nix31
-rw-r--r--pkgs/development/python-modules/in-place/default.nix17
-rw-r--r--pkgs/development/python-modules/incomfort-client/default.nix44
-rw-r--r--pkgs/development/python-modules/incremental/default.nix100
-rw-r--r--pkgs/development/python-modules/indexed-bzip2/default.nix18
-rw-r--r--pkgs/development/python-modules/indexed-gzip/default.nix20
-rw-r--r--pkgs/development/python-modules/indexed-zstd/default.nix24
-rw-r--r--pkgs/development/python-modules/inequality/default.nix45
-rw-r--r--pkgs/development/python-modules/infinity/default.nix13
-rw-r--r--pkgs/development/python-modules/inflect/default.nix54
-rw-r--r--pkgs/development/python-modules/inflection/default.nix24
-rw-r--r--pkgs/development/python-modules/influxdb-client/default.nix47
-rw-r--r--pkgs/development/python-modules/influxdb/default.nix53
-rw-r--r--pkgs/development/python-modules/influxdb/remove-nose.patch713
-rw-r--r--pkgs/development/python-modules/influxdb3-python/default.nix7
-rw-r--r--pkgs/development/python-modules/inform/default.nix33
-rw-r--r--pkgs/development/python-modules/iniconfig/default.nix22
-rw-r--r--pkgs/development/python-modules/inifile/default.nix16
-rw-r--r--pkgs/development/python-modules/iniparse/default.nix12
-rw-r--r--pkgs/development/python-modules/injector/default.nix21
-rw-r--r--pkgs/development/python-modules/inkbird-ble/default.nix37
-rw-r--r--pkgs/development/python-modules/inkex/default.nix63
-rw-r--r--pkgs/development/python-modules/inline-snapshot/default.nix73
-rw-r--r--pkgs/development/python-modules/inlinestyler/default.nix45
-rw-r--r--pkgs/development/python-modules/inotify-simple/default.nix8
-rw-r--r--pkgs/development/python-modules/inotify/default.nix13
-rw-r--r--pkgs/development/python-modules/inotifyrecursive/default.nix9
-rw-r--r--pkgs/development/python-modules/inquirer/default.nix58
-rw-r--r--pkgs/development/python-modules/inquirerpy/default.nix29
-rw-r--r--pkgs/development/python-modules/inscriptis/default.nix31
-rw-r--r--pkgs/development/python-modules/insegel/default.nix13
-rw-r--r--pkgs/development/python-modules/insightface/default.nix58
-rw-r--r--pkgs/development/python-modules/installer/default.nix19
-rw-r--r--pkgs/development/python-modules/insteon-frontend-home-assistant/default.nix22
-rw-r--r--pkgs/development/python-modules/instructor/default.nix15
-rw-r--r--pkgs/development/python-modules/intake-parquet/default.nix28
-rw-r--r--pkgs/development/python-modules/intake/default.nix117
-rw-r--r--pkgs/development/python-modules/intbitset/default.nix29
-rw-r--r--pkgs/development/python-modules/intelhex/default.nix9
-rw-r--r--pkgs/development/python-modules/intellifire4py/default.nix35
-rw-r--r--pkgs/development/python-modules/intensity-normalization/default.nix40
-rw-r--r--pkgs/development/python-modules/interegular/default.nix13
-rw-r--r--pkgs/development/python-modules/interface-meta/default.nix21
-rw-r--r--pkgs/development/python-modules/internetarchive/default.nix47
-rw-r--r--pkgs/development/python-modules/interruptingcow/default.nix8
-rw-r--r--pkgs/development/python-modules/intervaltree/default.nix29
-rw-r--r--pkgs/development/python-modules/into-dbus-python/default.nix19
-rw-r--r--pkgs/development/python-modules/invisible-watermark/default.nix111
-rw-r--r--pkgs/development/python-modules/invisible-watermark/tests/cli.nix95
-rw-r--r--pkgs/development/python-modules/invisible-watermark/tests/python/default.nix18
-rw-r--r--pkgs/development/python-modules/invocations/default.nix54
-rw-r--r--pkgs/development/python-modules/invocations/replace-blessings-with-blessed.patch26
-rw-r--r--pkgs/development/python-modules/invoke/default.nix17
-rw-r--r--pkgs/development/python-modules/iocapture/default.nix17
-rw-r--r--pkgs/development/python-modules/iocextract/default.nix27
-rw-r--r--pkgs/development/python-modules/iocsearcher/default.nix48
-rw-r--r--pkgs/development/python-modules/iodata/default.nix39
-rw-r--r--pkgs/development/python-modules/ionhash/default.nix16
-rw-r--r--pkgs/development/python-modules/ionoscloud/default.nix35
-rw-r--r--pkgs/development/python-modules/iopath/default.nix30
-rw-r--r--pkgs/development/python-modules/iotawattpy/default.nix15
-rw-r--r--pkgs/development/python-modules/iottycloud/default.nix41
-rw-r--r--pkgs/development/python-modules/ipaddr/default.nix6
-rw-r--r--pkgs/development/python-modules/ipadic/default.nix21
-rw-r--r--pkgs/development/python-modules/ipdb/default.nix50
-rw-r--r--pkgs/development/python-modules/ipdbplugin/default.nix27
-rw-r--r--pkgs/development/python-modules/ipfshttpclient/default.nix50
-rw-r--r--pkgs/development/python-modules/iptools/default.nix31
-rw-r--r--pkgs/development/python-modules/ipwhl/default.nix17
-rw-r--r--pkgs/development/python-modules/ipwhois/default.nix43
-rw-r--r--pkgs/development/python-modules/ipy/default.nix20
-rw-r--r--pkgs/development/python-modules/ipycanvas/default.nix33
-rw-r--r--pkgs/development/python-modules/ipydatawidgets/default.nix35
-rw-r--r--pkgs/development/python-modules/ipykernel/default.nix61
-rw-r--r--pkgs/development/python-modules/ipykernel/tests.nix79
-rw-r--r--pkgs/development/python-modules/ipymarkup/default.nix9
-rw-r--r--pkgs/development/python-modules/ipympl/default.nix39
-rw-r--r--pkgs/development/python-modules/ipynbname/default.nix22
-rw-r--r--pkgs/development/python-modules/ipyniivue/default.nix17
-rw-r--r--pkgs/development/python-modules/ipyparallel/default.nix43
-rw-r--r--pkgs/development/python-modules/ipytablewidgets/default.nix35
-rw-r--r--pkgs/development/python-modules/ipython-genutils/default.nix40
-rw-r--r--pkgs/development/python-modules/ipython-sql/default.nix27
-rw-r--r--pkgs/development/python-modules/ipython/default.nix141
-rw-r--r--pkgs/development/python-modules/ipyvue/default.nix25
-rw-r--r--pkgs/development/python-modules/ipyvuetify/default.nix39
-rw-r--r--pkgs/development/python-modules/ipywidgets/default.nix41
-rw-r--r--pkgs/development/python-modules/ipyxact/default.nix18
-rw-r--r--pkgs/development/python-modules/irc/default.nix43
-rw-r--r--pkgs/development/python-modules/ircrobots/default.nix23
-rw-r--r--pkgs/development/python-modules/ircstates/default.nix23
-rw-r--r--pkgs/development/python-modules/irctokens/default.nix15
-rw-r--r--pkgs/development/python-modules/isal/default.nix72
-rw-r--r--pkgs/development/python-modules/isal/version.patch16
-rw-r--r--pkgs/development/python-modules/isbnlib/default.nix57
-rw-r--r--pkgs/development/python-modules/islpy/default.nix79
-rw-r--r--pkgs/development/python-modules/ismartgate/default.nix33
-rw-r--r--pkgs/development/python-modules/iso-639/default.nix7
-rw-r--r--pkgs/development/python-modules/iso3166/default.nix19
-rw-r--r--pkgs/development/python-modules/iso4217/default.nix50
-rw-r--r--pkgs/development/python-modules/iso8601/default.nix29
-rw-r--r--pkgs/development/python-modules/isodate/default.nix17
-rw-r--r--pkgs/development/python-modules/isoduration/default.nix25
-rw-r--r--pkgs/development/python-modules/isort/default.nix21
-rw-r--r--pkgs/development/python-modules/isosurfaces/default.nix13
-rw-r--r--pkgs/development/python-modules/isounidecode/default.nix8
-rw-r--r--pkgs/development/python-modules/isoweek/default.nix25
-rw-r--r--pkgs/development/python-modules/israel-rail-api/default.nix41
-rw-r--r--pkgs/development/python-modules/itanium-demangler/default.nix28
-rw-r--r--pkgs/development/python-modules/item-synchronizer/default.nix17
-rw-r--r--pkgs/development/python-modules/itemadapter/default.nix19
-rw-r--r--pkgs/development/python-modules/itemdb/default.nix9
-rw-r--r--pkgs/development/python-modules/itemloaders/default.nix39
-rw-r--r--pkgs/development/python-modules/iterable-io/default.nix37
-rw-r--r--pkgs/development/python-modules/iteration-utilities/default.nix21
-rw-r--r--pkgs/development/python-modules/iterative-telemetry/default.nix39
-rw-r--r--pkgs/development/python-modules/iterfzf/default.nix62
-rw-r--r--pkgs/development/python-modules/iterm2/default.nix14
-rw-r--r--pkgs/development/python-modules/itsdangerous/default.nix29
-rw-r--r--pkgs/development/python-modules/itunespy/default.nix21
-rw-r--r--pkgs/development/python-modules/itypes/default.nix2
-rw-r--r--pkgs/development/python-modules/iwlib/default.nix14
-rw-r--r--pkgs/development/python-modules/ixia/default.nix30
-rw-r--r--pkgs/development/python-modules/j2cli/default.nix27
-rw-r--r--pkgs/development/python-modules/jaconv/default.nix30
-rw-r--r--pkgs/development/python-modules/jaconv/use-pytest.patch34
-rw-r--r--pkgs/development/python-modules/jaeger-client/default.nix17
-rw-r--r--pkgs/development/python-modules/jamo/default.nix17
-rw-r--r--pkgs/development/python-modules/janus/default.nix19
-rw-r--r--pkgs/development/python-modules/jaraco-abode/default.nix58
-rw-r--r--pkgs/development/python-modules/jaraco-classes/default.nix16
-rw-r--r--pkgs/development/python-modules/jaraco-collections/default.nix21
-rw-r--r--pkgs/development/python-modules/jaraco-context/default.nix30
-rw-r--r--pkgs/development/python-modules/jaraco-email/default.nix27
-rw-r--r--pkgs/development/python-modules/jaraco-envs/default.nix48
-rw-r--r--pkgs/development/python-modules/jaraco-functools/default.nix31
-rw-r--r--pkgs/development/python-modules/jaraco-itertools/default.nix17
-rw-r--r--pkgs/development/python-modules/jaraco-logging/default.nix29
-rw-r--r--pkgs/development/python-modules/jaraco-net/default.nix69
-rw-r--r--pkgs/development/python-modules/jaraco-path/default.nix36
-rw-r--r--pkgs/development/python-modules/jaraco-stream/default.nix7
-rw-r--r--pkgs/development/python-modules/jaraco-test/default.nix48
-rw-r--r--pkgs/development/python-modules/jaraco-text/default.nix55
-rw-r--r--pkgs/development/python-modules/jarowinkler/default.nix25
-rw-r--r--pkgs/development/python-modules/javaobj-py3/default.nix13
-rw-r--r--pkgs/development/python-modules/javaproperties/default.nix33
-rw-r--r--pkgs/development/python-modules/jax-jumpy/default.nix11
-rw-r--r--pkgs/development/python-modules/jax/default.nix159
-rw-r--r--pkgs/development/python-modules/jax/test-cuda.nix32
-rw-r--r--pkgs/development/python-modules/jaxlib/bin.nix173
-rw-r--r--pkgs/development/python-modules/jaxlib/default.nix422
-rw-r--r--pkgs/development/python-modules/jaxopt/default.nix79
-rw-r--r--pkgs/development/python-modules/jaxtyping/default.nix67
-rw-r--r--pkgs/development/python-modules/jaydebeapi/default.nix13
-rw-r--r--pkgs/development/python-modules/jc/default.nix47
-rw-r--r--pkgs/development/python-modules/jdatetime/default.nix25
-rw-r--r--pkgs/development/python-modules/jdcal/default.nix11
-rw-r--r--pkgs/development/python-modules/jedi-language-server/default.nix41
-rw-r--r--pkgs/development/python-modules/jedi/default.nix68
-rw-r--r--pkgs/development/python-modules/jeepney/default.nix29
-rw-r--r--pkgs/development/python-modules/jello/default.nix25
-rw-r--r--pkgs/development/python-modules/jellyfin-apiclient-python/default.nix21
-rw-r--r--pkgs/development/python-modules/jellyfish/default.nix34
-rw-r--r--pkgs/development/python-modules/jenkins-job-builder/default.nix35
-rw-r--r--pkgs/development/python-modules/jenkinsapi/default.nix32
-rw-r--r--pkgs/development/python-modules/jieba/default.nix9
-rw-r--r--pkgs/development/python-modules/jinja2-ansible-filters/default.nix11
-rw-r--r--pkgs/development/python-modules/jinja2-git/default.nix23
-rw-r--r--pkgs/development/python-modules/jinja2-pluralize/default.nix21
-rw-r--r--pkgs/development/python-modules/jinja2-time/default.nix29
-rw-r--r--pkgs/development/python-modules/jinja2/default.nix70
-rw-r--r--pkgs/development/python-modules/jira/default.nix51
-rw-r--r--pkgs/development/python-modules/jishaku/default.nix6
-rw-r--r--pkgs/development/python-modules/jiter/Cargo.lock588
-rw-r--r--pkgs/development/python-modules/jiter/default.nix51
-rw-r--r--pkgs/development/python-modules/jiwer/default.nix39
-rw-r--r--pkgs/development/python-modules/jmespath/default.nix13
-rw-r--r--pkgs/development/python-modules/jmp/default.nix23
-rw-r--r--pkgs/development/python-modules/joblib/default.nix80
-rw-r--r--pkgs/development/python-modules/johnnycanencrypt/default.nix62
-rw-r--r--pkgs/development/python-modules/josepy/default.nix29
-rw-r--r--pkgs/development/python-modules/joserfc/default.nix50
-rw-r--r--pkgs/development/python-modules/jplephem/default.nix7
-rw-r--r--pkgs/development/python-modules/jproperties/default.nix27
-rw-r--r--pkgs/development/python-modules/jpylyzer/default.nix47
-rw-r--r--pkgs/development/python-modules/jpype1/default.nix29
-rw-r--r--pkgs/development/python-modules/jq/default.nix29
-rw-r--r--pkgs/development/python-modules/js2py/default.nix21
-rw-r--r--pkgs/development/python-modules/jsbeautifier/default.nix27
-rw-r--r--pkgs/development/python-modules/jschema-to-python/default.nix19
-rw-r--r--pkgs/development/python-modules/jschon/default.nix80
-rw-r--r--pkgs/development/python-modules/jsmin/default.nix25
-rw-r--r--pkgs/development/python-modules/json-home-client/default.nix17
-rw-r--r--pkgs/development/python-modules/json-logging/default.nix54
-rw-r--r--pkgs/development/python-modules/json-merge-patch/default.nix19
-rw-r--r--pkgs/development/python-modules/json-repair/default.nix36
-rw-r--r--pkgs/development/python-modules/json-rpc/default.nix12
-rw-r--r--pkgs/development/python-modules/json-schema-for-humans/default.nix56
-rw-r--r--pkgs/development/python-modules/json-stream-rs-tokenizer/default.nix51
-rw-r--r--pkgs/development/python-modules/json-stream/default.nix41
-rw-r--r--pkgs/development/python-modules/json-tricks/default.nix21
-rw-r--r--pkgs/development/python-modules/json2html/default.nix34
-rw-r--r--pkgs/development/python-modules/json5/default.nix19
-rw-r--r--pkgs/development/python-modules/jsonable/default.nix34
-rw-r--r--pkgs/development/python-modules/jsonargparse/default.nix7
-rw-r--r--pkgs/development/python-modules/jsonconversion/default.nix25
-rw-r--r--pkgs/development/python-modules/jsondate/default.nix7
-rw-r--r--pkgs/development/python-modules/jsondiff/default.nix7
-rw-r--r--pkgs/development/python-modules/jsonfield/default.nix14
-rw-r--r--pkgs/development/python-modules/jsonformatter/default.nix13
-rw-r--r--pkgs/development/python-modules/jsonlines/default.nix27
-rw-r--r--pkgs/development/python-modules/jsonmerge/default.nix13
-rw-r--r--pkgs/development/python-modules/jsonpatch/default.nix31
-rw-r--r--pkgs/development/python-modules/jsonpath-ng/default.nix23
-rw-r--r--pkgs/development/python-modules/jsonpath-rw/default.nix24
-rw-r--r--pkgs/development/python-modules/jsonpath/default.nix25
-rw-r--r--pkgs/development/python-modules/jsonpickle/default.nix32
-rw-r--r--pkgs/development/python-modules/jsonpointer/default.nix12
-rw-r--r--pkgs/development/python-modules/jsonref/default.nix31
-rw-r--r--pkgs/development/python-modules/jsonrpc-async/default.nix27
-rw-r--r--pkgs/development/python-modules/jsonrpc-base/default.nix29
-rw-r--r--pkgs/development/python-modules/jsonrpc-websocket/default.nix31
-rw-r--r--pkgs/development/python-modules/jsonrpclib-pelix/default.nix13
-rw-r--r--pkgs/development/python-modules/jsons/default.nix27
-rw-r--r--pkgs/development/python-modules/jsonschema-path/default.nix38
-rw-r--r--pkgs/development/python-modules/jsonschema-spec/default.nix39
-rw-r--r--pkgs/development/python-modules/jsonschema-specifications/default.nix31
-rw-r--r--pkgs/development/python-modules/jsonschema/default.nix81
-rw-r--r--pkgs/development/python-modules/jsonslicer/default.nix30
-rw-r--r--pkgs/development/python-modules/jsonstreams/default.nix13
-rw-r--r--pkgs/development/python-modules/jsonxs/default.nix31
-rw-r--r--pkgs/development/python-modules/jstyleson/default.nix15
-rw-r--r--pkgs/development/python-modules/jug/default.nix29
-rw-r--r--pkgs/development/python-modules/julius/default.nix17
-rw-r--r--pkgs/development/python-modules/junit-xml/default.nix11
-rw-r--r--pkgs/development/python-modules/junit2html/default.nix26
-rw-r--r--pkgs/development/python-modules/junitparser/default.nix21
-rw-r--r--pkgs/development/python-modules/jupysql-plugin/default.nix48
-rw-r--r--pkgs/development/python-modules/jupysql/default.nix120
-rw-r--r--pkgs/development/python-modules/jupyter-book/default.nix110
-rw-r--r--pkgs/development/python-modules/jupyter-c-kernel/default.nix20
-rw-r--r--pkgs/development/python-modules/jupyter-cache/default.nix35
-rw-r--r--pkgs/development/python-modules/jupyter-client/default.nix42
-rw-r--r--pkgs/development/python-modules/jupyter-collaboration/default.nix49
-rw-r--r--pkgs/development/python-modules/jupyter-console/default.nix47
-rw-r--r--pkgs/development/python-modules/jupyter-contrib-core/default.nix13
-rw-r--r--pkgs/development/python-modules/jupyter-contrib-nbextensions/default.nix58
-rw-r--r--pkgs/development/python-modules/jupyter-core/default.nix34
-rw-r--r--pkgs/development/python-modules/jupyter-events/default.nix52
-rw-r--r--pkgs/development/python-modules/jupyter-highlight-selected-word/default.nix7
-rw-r--r--pkgs/development/python-modules/jupyter-lsp/default.nix22
-rw-r--r--pkgs/development/python-modules/jupyter-nbextensions-configurator/default.nix52
-rw-r--r--pkgs/development/python-modules/jupyter-packaging/default.nix30
-rw-r--r--pkgs/development/python-modules/jupyter-repo2docker/default.nix47
-rw-r--r--pkgs/development/python-modules/jupyter-server-fileid/default.nix39
-rw-r--r--pkgs/development/python-modules/jupyter-server-mathjax/default.nix23
-rw-r--r--pkgs/development/python-modules/jupyter-server-terminals/default.nix103
-rw-r--r--pkgs/development/python-modules/jupyter-server/default.nix109
-rw-r--r--pkgs/development/python-modules/jupyter-sphinx/default.nix39
-rw-r--r--pkgs/development/python-modules/jupyter-telemetry/default.nix22
-rw-r--r--pkgs/development/python-modules/jupyter-ui-poll/default.nix36
-rw-r--r--pkgs/development/python-modules/jupyter-ydoc/default.nix33
-rw-r--r--pkgs/development/python-modules/jupyter/default.nix41
-rw-r--r--pkgs/development/python-modules/jupyterhub-ldapauthenticator/default.nix18
-rw-r--r--pkgs/development/python-modules/jupyterhub-systemdspawner/default.nix35
-rw-r--r--pkgs/development/python-modules/jupyterhub-tmpauthenticator/default.nix19
-rw-r--r--pkgs/development/python-modules/jupyterhub/default.nix242
-rw-r--r--pkgs/development/python-modules/jupyterlab-execute-time/default.nix42
-rw-r--r--pkgs/development/python-modules/jupyterlab-git/default.nix45
-rw-r--r--pkgs/development/python-modules/jupyterlab-lsp/default.nix19
-rw-r--r--pkgs/development/python-modules/jupyterlab-pygments/default.nix19
-rw-r--r--pkgs/development/python-modules/jupyterlab-server/default.nix62
-rw-r--r--pkgs/development/python-modules/jupyterlab-widgets/default.nix17
-rw-r--r--pkgs/development/python-modules/jupyterlab/default.nix53
-rw-r--r--pkgs/development/python-modules/jupytext/default.nix52
-rw-r--r--pkgs/development/python-modules/justbackoff/default.nix19
-rw-r--r--pkgs/development/python-modules/justbases/default.nix11
-rw-r--r--pkgs/development/python-modules/justbytes/default.nix18
-rw-r--r--pkgs/development/python-modules/justext/default.nix25
-rw-r--r--pkgs/development/python-modules/justnimbus/default.nix30
-rw-r--r--pkgs/development/python-modules/jwcrypto/default.nix29
-rw-r--r--pkgs/development/python-modules/jwt/default.nix21
-rw-r--r--pkgs/development/python-modules/jxlpy/default.nix40
-rw-r--r--pkgs/development/python-modules/jxmlease/default.nix17
-rw-r--r--pkgs/development/python-modules/k-diffusion/default.nix49
-rw-r--r--pkgs/development/python-modules/k5test/default.nix34
-rw-r--r--pkgs/development/python-modules/k5test/fix-paths.patch4
-rw-r--r--pkgs/development/python-modules/kaa-base/default.nix16
-rw-r--r--pkgs/development/python-modules/kaa-metadata/default.nix20
-rw-r--r--pkgs/development/python-modules/kafka-python-ng/default.nix56
-rw-r--r--pkgs/development/python-modules/kafka-python/default.nix30
-rw-r--r--pkgs/development/python-modules/kaggle/default.nix45
-rw-r--r--pkgs/development/python-modules/kaitaistruct/default.nix21
-rw-r--r--pkgs/development/python-modules/kajiki/default.nix23
-rw-r--r--pkgs/development/python-modules/kaldi-active-grammar/default.nix49
-rw-r--r--pkgs/development/python-modules/kaldi-active-grammar/fork.nix29
-rw-r--r--pkgs/development/python-modules/kaleido/default.nix118
-rw-r--r--pkgs/development/python-modules/kaleido/tests.nix15
-rw-r--r--pkgs/development/python-modules/kaleido/tests.py11
-rw-r--r--pkgs/development/python-modules/kanidm/default.nix54
-rw-r--r--pkgs/development/python-modules/kaptan/default.nix28
-rw-r--r--pkgs/development/python-modules/karton-asciimagic/default.nix25
-rw-r--r--pkgs/development/python-modules/karton-autoit-ripper/default.nix43
-rw-r--r--pkgs/development/python-modules/karton-classifier/default.nix45
-rw-r--r--pkgs/development/python-modules/karton-config-extractor/default.nix17
-rw-r--r--pkgs/development/python-modules/karton-core/default.nix42
-rw-r--r--pkgs/development/python-modules/karton-dashboard/default.nix27
-rw-r--r--pkgs/development/python-modules/karton-mwdb-reporter/default.nix17
-rw-r--r--pkgs/development/python-modules/karton-yaramatcher/default.nix23
-rw-r--r--pkgs/development/python-modules/kasa-crypt/default.nix35
-rw-r--r--pkgs/development/python-modules/kazoo/default.nix30
-rw-r--r--pkgs/development/python-modules/kbcstorage/default.nix32
-rw-r--r--pkgs/development/python-modules/kconfiglib/default.nix8
-rw-r--r--pkgs/development/python-modules/kde-material-you-colors/default.nix44
-rw-r--r--pkgs/development/python-modules/keba-kecontact/default.nix17
-rw-r--r--pkgs/development/python-modules/keep/default.nix17
-rw-r--r--pkgs/development/python-modules/keepalive/default.nix13
-rw-r--r--pkgs/development/python-modules/keepkey-agent/default.nix26
-rw-r--r--pkgs/development/python-modules/keepkey/default.nix27
-rw-r--r--pkgs/development/python-modules/kegtron-ble/default.nix31
-rw-r--r--pkgs/development/python-modules/keras-applications/default.nix13
-rw-r--r--pkgs/development/python-modules/keras-preprocessing/default.nix21
-rw-r--r--pkgs/development/python-modules/keras/default.nix80
-rw-r--r--pkgs/development/python-modules/kerberos/default.nix13
-rw-r--r--pkgs/development/python-modules/keyboard/default.nix10
-rw-r--r--pkgs/development/python-modules/keyring-pass/default.nix27
-rw-r--r--pkgs/development/python-modules/keyring/default.nix86
-rw-r--r--pkgs/development/python-modules/keyring_24/default.nix81
-rw-r--r--pkgs/development/python-modules/keyrings-alt/default.nix42
-rw-r--r--pkgs/development/python-modules/keyrings-cryptfile/default.nix50
-rw-r--r--pkgs/development/python-modules/keyrings-google-artifactregistry-auth/default.nix25
-rw-r--r--pkgs/development/python-modules/keyrings-passwordstore/default.nix25
-rw-r--r--pkgs/development/python-modules/keystone-engine/default.nix17
-rw-r--r--pkgs/development/python-modules/keystoneauth1/default.nix59
-rw-r--r--pkgs/development/python-modules/keyutils/default.nix19
-rw-r--r--pkgs/development/python-modules/khanaa/default.nix45
-rw-r--r--pkgs/development/python-modules/kinparse/default.nix19
-rw-r--r--pkgs/development/python-modules/kiss-headers/default.nix11
-rw-r--r--pkgs/development/python-modules/kitchen/default.nix15
-rw-r--r--pkgs/development/python-modules/kivy-garden/default.nix11
-rw-r--r--pkgs/development/python-modules/kivy/default.nix87
-rw-r--r--pkgs/development/python-modules/kiwiki-client/default.nix17
-rw-r--r--pkgs/development/python-modules/kiwisolver/default.nix33
-rw-r--r--pkgs/development/python-modules/klaus/default.nix46
-rw-r--r--pkgs/development/python-modules/klein/default.nix58
-rw-r--r--pkgs/development/python-modules/kmapper/default.nix43
-rw-r--r--pkgs/development/python-modules/kml2geojson/default.nix31
-rw-r--r--pkgs/development/python-modules/knack/default.nix41
-rw-r--r--pkgs/development/python-modules/kneed/default.nix32
-rw-r--r--pkgs/development/python-modules/knocki/default.nix60
-rw-r--r--pkgs/development/python-modules/knx-frontend/default.nix23
-rw-r--r--pkgs/development/python-modules/kombu/default.nix110
-rw-r--r--pkgs/development/python-modules/konnected/default.nix13
-rw-r--r--pkgs/development/python-modules/korean-lunar-calendar/default.nix9
-rw-r--r--pkgs/development/python-modules/kornia-rs/default.nix28
-rw-r--r--pkgs/development/python-modules/kornia/default.nix36
-rw-r--r--pkgs/development/python-modules/kotsu/default.nix28
-rw-r--r--pkgs/development/python-modules/krakenex/default.nix23
-rw-r--r--pkgs/development/python-modules/krb5/default.nix48
-rw-r--r--pkgs/development/python-modules/krfzf-py/default.nix15
-rw-r--r--pkgs/development/python-modules/kserve/default.nix99
-rw-r--r--pkgs/development/python-modules/kubernetes/default.nix66
-rw-r--r--pkgs/development/python-modules/kurbopy/default.nix29
-rw-r--r--pkgs/development/python-modules/l18n/default.nix18
-rw-r--r--pkgs/development/python-modules/labelbox/default.nix94
-rw-r--r--pkgs/development/python-modules/labgrid/default.nix85
-rw-r--r--pkgs/development/python-modules/labmath/default.nix13
-rw-r--r--pkgs/development/python-modules/laces/default.nix20
-rw-r--r--pkgs/development/python-modules/lacuscore/default.nix50
-rw-r--r--pkgs/development/python-modules/lakeside/default.nix19
-rw-r--r--pkgs/development/python-modules/lammps/default.nix46
-rw-r--r--pkgs/development/python-modules/lancedb/Cargo.lock7787
-rw-r--r--pkgs/development/python-modules/lancedb/default.nix130
-rw-r--r--pkgs/development/python-modules/langchain-aws/default.nix72
-rw-r--r--pkgs/development/python-modules/langchain-azure-dynamic-sessions/default.nix79
-rw-r--r--pkgs/development/python-modules/langchain-chroma/default.nix51
-rw-r--r--pkgs/development/python-modules/langchain-community/default.nix89
-rw-r--r--pkgs/development/python-modules/langchain-core/default.nix131
-rw-r--r--pkgs/development/python-modules/langchain-huggingface/default.nix85
-rw-r--r--pkgs/development/python-modules/langchain-mongodb/default.nix70
-rw-r--r--pkgs/development/python-modules/langchain-ollama/default.nix68
-rw-r--r--pkgs/development/python-modules/langchain-openai/default.nix101
-rw-r--r--pkgs/development/python-modules/langchain-standard-tests/default.nix56
-rw-r--r--pkgs/development/python-modules/langchain-text-splitters/default.nix68
-rw-r--r--pkgs/development/python-modules/langchain/default.nix120
-rw-r--r--pkgs/development/python-modules/langcodes/default.nix36
-rw-r--r--pkgs/development/python-modules/langdetect/default.nix19
-rw-r--r--pkgs/development/python-modules/langfuse/default.nix62
-rw-r--r--pkgs/development/python-modules/langgraph-checkpoint-postgres/default.nix76
-rw-r--r--pkgs/development/python-modules/langgraph-checkpoint-sqlite/default.nix58
-rw-r--r--pkgs/development/python-modules/langgraph-checkpoint/default.nix61
-rw-r--r--pkgs/development/python-modules/langgraph-cli/default.nix68
-rw-r--r--pkgs/development/python-modules/langgraph-sdk/default.nix64
-rw-r--r--pkgs/development/python-modules/langgraph/default.nix124
-rw-r--r--pkgs/development/python-modules/langid/default.nix20
-rw-r--r--pkgs/development/python-modules/langsmith/default.nix46
-rw-r--r--pkgs/development/python-modules/language-data/default.nix46
-rw-r--r--pkgs/development/python-modules/language-tags/default.nix13
-rw-r--r--pkgs/development/python-modules/lanms-neo/default.nix15
-rw-r--r--pkgs/development/python-modules/lark/default.nix23
-rw-r--r--pkgs/development/python-modules/laspy/default.nix29
-rw-r--r--pkgs/development/python-modules/laszip/default.nix30
-rw-r--r--pkgs/development/python-modules/latex2mathml/default.nix25
-rw-r--r--pkgs/development/python-modules/latex2pydata/default.nix33
-rw-r--r--pkgs/development/python-modules/latexcodec/default.nix11
-rw-r--r--pkgs/development/python-modules/latexify-py/default.nix31
-rw-r--r--pkgs/development/python-modules/latexrestricted/default.nix32
-rw-r--r--pkgs/development/python-modules/launchpadlib/default.nix41
-rw-r--r--pkgs/development/python-modules/laundrify-aio/default.nix31
-rw-r--r--pkgs/development/python-modules/layoutparser/default.nix72
-rw-r--r--pkgs/development/python-modules/lazr-restfulclient/default.nix47
-rw-r--r--pkgs/development/python-modules/lazr-uri/default.nix13
-rw-r--r--pkgs/development/python-modules/lazr/config.nix31
-rw-r--r--pkgs/development/python-modules/lazr/delegates.nix33
-rw-r--r--pkgs/development/python-modules/lazy-import/default.nix44
-rw-r--r--pkgs/development/python-modules/lazy-imports/default.nix18
-rw-r--r--pkgs/development/python-modules/lazy-loader/default.nix29
-rw-r--r--pkgs/development/python-modules/lazy-object-proxy/default.nix22
-rw-r--r--pkgs/development/python-modules/lazy/default.nix7
-rw-r--r--pkgs/development/python-modules/lc7001/default.nix23
-rw-r--r--pkgs/development/python-modules/lcd-i2c/default.nix20
-rw-r--r--pkgs/development/python-modules/lcgit/default.nix32
-rw-r--r--pkgs/development/python-modules/lcn-frontend/default.nix39
-rw-r--r--pkgs/development/python-modules/lcov-cobertura/default.nix13
-rw-r--r--pkgs/development/python-modules/ld2410-ble/default.nix31
-rw-r--r--pkgs/development/python-modules/ldap3-bleeding-edge/default.nix43
-rw-r--r--pkgs/development/python-modules/ldap3/default.nix13
-rw-r--r--pkgs/development/python-modules/ldapdomaindump/default.nix21
-rw-r--r--pkgs/development/python-modules/ldappool/default.nix60
-rw-r--r--pkgs/development/python-modules/ldaptor/default.nix29
-rw-r--r--pkgs/development/python-modules/leanblueprint/default.nix54
-rw-r--r--pkgs/development/python-modules/leather/default.nix19
-rw-r--r--pkgs/development/python-modules/leb128/default.nix20
-rw-r--r--pkgs/development/python-modules/led-ble/default.nix41
-rw-r--r--pkgs/development/python-modules/ledger-agent/default.nix26
-rw-r--r--pkgs/development/python-modules/ledger-bitcoin/default.nix31
-rw-r--r--pkgs/development/python-modules/ledgerblue/default.nix63
-rw-r--r--pkgs/development/python-modules/ledgercomm/default.nix19
-rw-r--r--pkgs/development/python-modules/ledgerwallet/default.nix67
-rw-r--r--pkgs/development/python-modules/legacy-cgi/default.nix36
-rw-r--r--pkgs/development/python-modules/leidenalg/default.nix29
-rw-r--r--pkgs/development/python-modules/leveldb/default.nix20
-rw-r--r--pkgs/development/python-modules/levenshtein/default.nix7
-rw-r--r--pkgs/development/python-modules/lexid/default.nix9
-rw-r--r--pkgs/development/python-modules/lexilang/default.nix27
-rw-r--r--pkgs/development/python-modules/lib4sbom/default.nix67
-rw-r--r--pkgs/development/python-modules/libagent/default.nix64
-rw-r--r--pkgs/development/python-modules/libais/default.nix35
-rw-r--r--pkgs/development/python-modules/libarchive-c/default.nix24
-rw-r--r--pkgs/development/python-modules/libarcus/default.nix20
-rw-r--r--pkgs/development/python-modules/libasyncns/default.nix15
-rw-r--r--pkgs/development/python-modules/libclang/default.nix16
-rw-r--r--pkgs/development/python-modules/libcloud/default.nix21
-rw-r--r--pkgs/development/python-modules/libcst/default.nix111
-rw-r--r--pkgs/development/python-modules/libevdev/default.nix15
-rw-r--r--pkgs/development/python-modules/libgpiod/default.nix7
-rw-r--r--pkgs/development/python-modules/libgpuarray/default.nix88
-rw-r--r--pkgs/development/python-modules/libgravatar/default.nix37
-rw-r--r--pkgs/development/python-modules/libkeepass/default.nix18
-rw-r--r--pkgs/development/python-modules/libknot/default.nix28
-rw-r--r--pkgs/development/python-modules/liblarch/default.nix29
-rw-r--r--pkgs/development/python-modules/liblzfse/default.nix13
-rw-r--r--pkgs/development/python-modules/libmambapy/default.nix9
-rw-r--r--pkgs/development/python-modules/libmr/default.nix14
-rw-r--r--pkgs/development/python-modules/libnacl/default.nix19
-rw-r--r--pkgs/development/python-modules/libpcap/default.nix33
-rw-r--r--pkgs/development/python-modules/libpurecool/default.nix28
-rw-r--r--pkgs/development/python-modules/libpyfoscam/default.nix13
-rw-r--r--pkgs/development/python-modules/libpysal/default.nix87
-rw-r--r--pkgs/development/python-modules/libpyvivotek/default.nix23
-rw-r--r--pkgs/development/python-modules/librespot/default.nix30
-rw-r--r--pkgs/development/python-modules/libretranslate/default.nix65
-rw-r--r--pkgs/development/python-modules/librosa/default.nix128
-rw-r--r--pkgs/development/python-modules/librouteros/default.nix23
-rw-r--r--pkgs/development/python-modules/libsass/default.nix21
-rw-r--r--pkgs/development/python-modules/libsavitar/default.nix16
-rw-r--r--pkgs/development/python-modules/libsixel/default.nix9
-rw-r--r--pkgs/development/python-modules/libsoundtouch/default.nix27
-rw-r--r--pkgs/development/python-modules/libthumbor/default.nix25
-rw-r--r--pkgs/development/python-modules/libtmux/default.nix61
-rw-r--r--pkgs/development/python-modules/libusb1/default.nix22
-rw-r--r--pkgs/development/python-modules/libusbsio/default.nix36
-rw-r--r--pkgs/development/python-modules/libversion/default.nix31
-rw-r--r--pkgs/development/python-modules/libvirt/default.nix31
-rw-r--r--pkgs/development/python-modules/liccheck/default.nix27
-rw-r--r--pkgs/development/python-modules/license-expression/default.nix35
-rw-r--r--pkgs/development/python-modules/life360/default.nix35
-rw-r--r--pkgs/development/python-modules/lifelines/default.nix53
-rw-r--r--pkgs/development/python-modules/lightgbm/default.nix132
-rw-r--r--pkgs/development/python-modules/lightning-utilities/default.nix60
-rw-r--r--pkgs/development/python-modules/lightparam/default.nix14
-rw-r--r--pkgs/development/python-modules/lightwave/default.nix13
-rw-r--r--pkgs/development/python-modules/lightwave2/default.nix19
-rw-r--r--pkgs/development/python-modules/lima/default.nix10
-rw-r--r--pkgs/development/python-modules/lime/default.nix33
-rw-r--r--pkgs/development/python-modules/limiter/default.nix17
-rw-r--r--pkgs/development/python-modules/limitlessled/default.nix6
-rw-r--r--pkgs/development/python-modules/limits/default.nix120
-rw-r--r--pkgs/development/python-modules/limits/only-test-in-memory.patch487
-rw-r--r--pkgs/development/python-modules/limits/remove-fixed-start-from-async-tests.patch87
-rw-r--r--pkgs/development/python-modules/limnoria/default.nix52
-rw-r--r--pkgs/development/python-modules/line-profiler/default.nix31
-rw-r--r--pkgs/development/python-modules/linear-garage-door/default.nix31
-rw-r--r--pkgs/development/python-modules/linear-operator/default.nix35
-rw-r--r--pkgs/development/python-modules/linecache2/default.nix11
-rw-r--r--pkgs/development/python-modules/lineedit/default.nix23
-rw-r--r--pkgs/development/python-modules/linetable/default.nix19
-rw-r--r--pkgs/development/python-modules/lingua/default.nix18
-rw-r--r--pkgs/development/python-modules/lingva/default.nix4
-rw-r--r--pkgs/development/python-modules/linien-client/default.nix23
-rw-r--r--pkgs/development/python-modules/linien-common/default.nix39
-rw-r--r--pkgs/development/python-modules/linien-common/tests.nix33
-rw-r--r--pkgs/development/python-modules/linkify-it-py/default.nix33
-rw-r--r--pkgs/development/python-modules/linknlink/default.nix4
-rw-r--r--pkgs/development/python-modules/linode-api/default.nix36
-rw-r--r--pkgs/development/python-modules/linode-metadata/default.nix44
-rw-r--r--pkgs/development/python-modules/linode/default.nix13
-rw-r--r--pkgs/development/python-modules/linuxfd/default.nix8
-rw-r--r--pkgs/development/python-modules/lion-pytorch/default.nix17
-rw-r--r--pkgs/development/python-modules/liquidctl/default.nix54
-rw-r--r--pkgs/development/python-modules/lit/default.nix21
-rw-r--r--pkgs/development/python-modules/litellm/default.nix90
-rw-r--r--pkgs/development/python-modules/litemapy/default.nix15
-rw-r--r--pkgs/development/python-modules/littleutils/default.nix13
-rw-r--r--pkgs/development/python-modules/livelossplot/default.nix42
-rw-r--r--pkgs/development/python-modules/livereload/default.nix30
-rw-r--r--pkgs/development/python-modules/lizard/default.nix20
-rw-r--r--pkgs/development/python-modules/llama-cloud/default.nix42
-rw-r--r--pkgs/development/python-modules/llama-index-agent-openai/default.nix6
-rw-r--r--pkgs/development/python-modules/llama-index-cli/default.nix4
-rw-r--r--pkgs/development/python-modules/llama-index-core/default.nix38
-rw-r--r--pkgs/development/python-modules/llama-index-embeddings-gemini/default.nix13
-rw-r--r--pkgs/development/python-modules/llama-index-embeddings-google/default.nix6
-rw-r--r--pkgs/development/python-modules/llama-index-embeddings-huggingface/default.nix27
-rw-r--r--pkgs/development/python-modules/llama-index-embeddings-ollama/default.nix29
-rw-r--r--pkgs/development/python-modules/llama-index-embeddings-openai/default.nix4
-rw-r--r--pkgs/development/python-modules/llama-index-graph-stores-nebula/default.nix27
-rw-r--r--pkgs/development/python-modules/llama-index-graph-stores-neo4j/default.nix27
-rw-r--r--pkgs/development/python-modules/llama-index-graph-stores-neptune/default.nix27
-rw-r--r--pkgs/development/python-modules/llama-index-indices-managed-llama-cloud/default.nix10
-rw-r--r--pkgs/development/python-modules/llama-index-legacy/default.nix25
-rw-r--r--pkgs/development/python-modules/llama-index-llms-ollama/default.nix27
-rw-r--r--pkgs/development/python-modules/llama-index-llms-openai-like/default.nix29
-rw-r--r--pkgs/development/python-modules/llama-index-llms-openai/default.nix15
-rw-r--r--pkgs/development/python-modules/llama-index-multi-modal-llms-openai/default.nix4
-rw-r--r--pkgs/development/python-modules/llama-index-program-openai/default.nix37
-rw-r--r--pkgs/development/python-modules/llama-index-question-gen-openai/default.nix29
-rw-r--r--pkgs/development/python-modules/llama-index-readers-database/default.nix30
-rw-r--r--pkgs/development/python-modules/llama-index-readers-file/default.nix6
-rw-r--r--pkgs/development/python-modules/llama-index-readers-json/default.nix29
-rw-r--r--pkgs/development/python-modules/llama-index-readers-llama-parse/default.nix29
-rw-r--r--pkgs/development/python-modules/llama-index-readers-s3/default.nix4
-rw-r--r--pkgs/development/python-modules/llama-index-readers-twitter/default.nix28
-rw-r--r--pkgs/development/python-modules/llama-index-readers-txtai/default.nix29
-rw-r--r--pkgs/development/python-modules/llama-index-readers-weather/default.nix33
-rw-r--r--pkgs/development/python-modules/llama-index-vector-stores-chroma/default.nix27
-rw-r--r--pkgs/development/python-modules/llama-index-vector-stores-google/default.nix29
-rw-r--r--pkgs/development/python-modules/llama-index-vector-stores-postgres/default.nix6
-rw-r--r--pkgs/development/python-modules/llama-index-vector-stores-qdrant/default.nix4
-rw-r--r--pkgs/development/python-modules/llama-index/default.nix44
-rw-r--r--pkgs/development/python-modules/llama-parse/default.nix29
-rw-r--r--pkgs/development/python-modules/llfuse/default.nix47
-rw-r--r--pkgs/development/python-modules/llm/default.nix98
-rw-r--r--pkgs/development/python-modules/llmx/default.nix73
-rw-r--r--pkgs/development/python-modules/llvmlite/default.nix69
-rw-r--r--pkgs/development/python-modules/lm-format-enforcer/default.nix42
-rw-r--r--pkgs/development/python-modules/lmcloud/default.nix22
-rw-r--r--pkgs/development/python-modules/lmdb/default.nix30
-rw-r--r--pkgs/development/python-modules/lmfit/default.nix48
-rw-r--r--pkgs/development/python-modules/lml/default.nix13
-rw-r--r--pkgs/development/python-modules/lmnotify/default.nix19
-rw-r--r--pkgs/development/python-modules/lmtpd/default.nix22
-rw-r--r--pkgs/development/python-modules/lnkparse3/default.nix32
-rw-r--r--pkgs/development/python-modules/loca/default.nix12
-rw-r--r--pkgs/development/python-modules/localimport/default.nix7
-rw-r--r--pkgs/development/python-modules/localstack-client/default.nix33
-rw-r--r--pkgs/development/python-modules/localstack-ext/default.nix36
-rw-r--r--pkgs/development/python-modules/localstack/default.nix68
-rw-r--r--pkgs/development/python-modules/localzone/default.nix37
-rw-r--r--pkgs/development/python-modules/locationsharinglib/default.nix69
-rw-r--r--pkgs/development/python-modules/locket/default.nix13
-rw-r--r--pkgs/development/python-modules/lockfile/default.nix32
-rw-r--r--pkgs/development/python-modules/lockfile/fix-tests.patch28
-rw-r--r--pkgs/development/python-modules/log-symbols/default.nix14
-rw-r--r--pkgs/development/python-modules/logbook/default.nix59
-rw-r--r--pkgs/development/python-modules/logfury/default.nix23
-rw-r--r--pkgs/development/python-modules/logging-journald/default.nix19
-rw-r--r--pkgs/development/python-modules/logi-circle/default.nix21
-rw-r--r--pkgs/development/python-modules/logical-unification/default.nix23
-rw-r--r--pkgs/development/python-modules/logilab/common.nix2
-rw-r--r--pkgs/development/python-modules/logilab/constraint.nix26
-rw-r--r--pkgs/development/python-modules/logmatic-python/default.nix25
-rw-r--r--pkgs/development/python-modules/logster/default.nix7
-rw-r--r--pkgs/development/python-modules/loguru-logging-intercept/default.nix30
-rw-r--r--pkgs/development/python-modules/loguru/default.nix56
-rw-r--r--pkgs/development/python-modules/logutils/default.nix40
-rw-r--r--pkgs/development/python-modules/logzero/default.nix7
-rw-r--r--pkgs/development/python-modules/lomond/default.nix51
-rw-r--r--pkgs/development/python-modules/loompy/default.nix56
-rw-r--r--pkgs/development/python-modules/loopy/default.nix63
-rw-r--r--pkgs/development/python-modules/looseversion/default.nix29
-rw-r--r--pkgs/development/python-modules/loqedapi/default.nix21
-rw-r--r--pkgs/development/python-modules/losant-rest/default.nix38
-rw-r--r--pkgs/development/python-modules/lottie/default.nix30
-rw-r--r--pkgs/development/python-modules/lox/default.nix61
-rw-r--r--pkgs/development/python-modules/lpc-checksum/default.nix17
-rw-r--r--pkgs/development/python-modules/lrcalc-python/default.nix18
-rw-r--r--pkgs/development/python-modules/lru-dict/default.nix25
-rw-r--r--pkgs/development/python-modules/lsassy/default.nix6
-rw-r--r--pkgs/development/python-modules/lsp-tree-sitter/default.nix49
-rw-r--r--pkgs/development/python-modules/lsprotocol/default.nix38
-rw-r--r--pkgs/development/python-modules/ltpycld2/default.nix11
-rw-r--r--pkgs/development/python-modules/lttng/default.nix58
-rw-r--r--pkgs/development/python-modules/luddite/default.nix27
-rw-r--r--pkgs/development/python-modules/luftdaten/default.nix32
-rw-r--r--pkgs/development/python-modules/luhn/default.nix21
-rw-r--r--pkgs/development/python-modules/lunarcalendar/default.nix17
-rw-r--r--pkgs/development/python-modules/lupa/default.nix21
-rw-r--r--pkgs/development/python-modules/lupupy/default.nix25
-rw-r--r--pkgs/development/python-modules/luqum/default.nix37
-rw-r--r--pkgs/development/python-modules/luxor/default.nix23
-rw-r--r--pkgs/development/python-modules/luxtronik/default.nix15
-rw-r--r--pkgs/development/python-modules/lxmf/default.nix29
-rw-r--r--pkgs/development/python-modules/lxml-html-clean/default.nix4
-rw-r--r--pkgs/development/python-modules/lxml-stubs/default.nix23
-rw-r--r--pkgs/development/python-modules/lxml/default.nix39
-rw-r--r--pkgs/development/python-modules/lxml/libxml-2.12.patch94
-rw-r--r--pkgs/development/python-modules/lyricwikia/default.nix23
-rw-r--r--pkgs/development/python-modules/lz4/default.nix23
-rw-r--r--pkgs/development/python-modules/lzallright/default.nix28
-rw-r--r--pkgs/development/python-modules/lzallright/tests.nix6
-rw-r--r--pkgs/development/python-modules/lzstring/default.nix15
-rw-r--r--pkgs/development/python-modules/m2crypto/default.nix56
-rw-r--r--pkgs/development/python-modules/m2r/default.nix22
-rw-r--r--pkgs/development/python-modules/m3u8/default.nix33
-rw-r--r--pkgs/development/python-modules/mac-alias/default.nix13
-rw-r--r--pkgs/development/python-modules/mac-vendor-lookup/default.nix15
-rw-r--r--pkgs/development/python-modules/macaddress/default.nix23
-rw-r--r--pkgs/development/python-modules/macaroonbakery/default.nix6
-rw-r--r--pkgs/development/python-modules/macfsevents/default.nix18
-rw-r--r--pkgs/development/python-modules/macropy/default.nix24
-rw-r--r--pkgs/development/python-modules/maec/default.nix50
-rw-r--r--pkgs/development/python-modules/maestral/default.nix147
-rw-r--r--pkgs/development/python-modules/magic-filter/default.nix21
-rw-r--r--pkgs/development/python-modules/magic-wormhole-mailbox-server/default.nix76
-rw-r--r--pkgs/development/python-modules/magic-wormhole-transit-relay/default.nix50
-rw-r--r--pkgs/development/python-modules/magic-wormhole/default.nix179
-rw-r--r--pkgs/development/python-modules/magic/default.nix11
-rw-r--r--pkgs/development/python-modules/magicgui/default.nix38
-rw-r--r--pkgs/development/python-modules/magika/default.nix39
-rw-r--r--pkgs/development/python-modules/mahotas/default.nix39
-rw-r--r--pkgs/development/python-modules/mail-parser/default.nix17
-rw-r--r--pkgs/development/python-modules/mailcap-fix/default.nix10
-rw-r--r--pkgs/development/python-modules/mailchecker/default.nix4
-rw-r--r--pkgs/development/python-modules/mailchimp/default.nix14
-rw-r--r--pkgs/development/python-modules/mailmanclient/default.nix23
-rw-r--r--pkgs/development/python-modules/mailsuite/default.nix33
-rw-r--r--pkgs/development/python-modules/maison/default.nix33
-rw-r--r--pkgs/development/python-modules/makefun/default.nix25
-rw-r--r--pkgs/development/python-modules/mako/default.nix75
-rw-r--r--pkgs/development/python-modules/malduck/default.nix60
-rw-r--r--pkgs/development/python-modules/mamba-ssm/default.nix77
-rw-r--r--pkgs/development/python-modules/managesieve/default.nix30
-rw-r--r--pkgs/development/python-modules/mando/default.nix31
-rw-r--r--pkgs/development/python-modules/mandown/default.nix44
-rw-r--r--pkgs/development/python-modules/manga-ocr/default.nix2
-rw-r--r--pkgs/development/python-modules/manhole/default.nix25
-rw-r--r--pkgs/development/python-modules/manifest-ml/default.nix65
-rw-r--r--pkgs/development/python-modules/manifestoo-core/default.nix27
-rw-r--r--pkgs/development/python-modules/manifestoo/default.nix49
-rw-r--r--pkgs/development/python-modules/manim-slides/default.nix121
-rw-r--r--pkgs/development/python-modules/manim/default.nix241
-rw-r--r--pkgs/development/python-modules/manimpango/default.nix45
-rw-r--r--pkgs/development/python-modules/manuel/default.nix20
-rw-r--r--pkgs/development/python-modules/manuf/default.nix32
-rw-r--r--pkgs/development/python-modules/mapbox-earcut/default.nix36
-rw-r--r--pkgs/development/python-modules/mapbox/default.nix40
-rw-r--r--pkgs/development/python-modules/mapclassify/default.nix64
-rw-r--r--pkgs/development/python-modules/mariadb/default.nix36
-rw-r--r--pkgs/development/python-modules/marimo/default.nix77
-rw-r--r--pkgs/development/python-modules/marionette-harness/manifestparser.nix9
-rw-r--r--pkgs/development/python-modules/marisa-trie/default.nix36
-rw-r--r--pkgs/development/python-modules/marisa/default.nix14
-rw-r--r--pkgs/development/python-modules/markdown-include/default.nix25
-rw-r--r--pkgs/development/python-modules/markdown-it-py/default.nix81
-rw-r--r--pkgs/development/python-modules/markdown-macros/default.nix23
-rw-r--r--pkgs/development/python-modules/markdown/default.nix37
-rw-r--r--pkgs/development/python-modules/markdown2/default.nix31
-rw-r--r--pkgs/development/python-modules/markdownify/default.nix29
-rw-r--r--pkgs/development/python-modules/markuppy/default.nix8
-rw-r--r--pkgs/development/python-modules/markups/default.nix43
-rw-r--r--pkgs/development/python-modules/markupsafe/default.nix51
-rw-r--r--pkgs/development/python-modules/marshmallow-dataclass/default.nix43
-rw-r--r--pkgs/development/python-modules/marshmallow-enum/default.nix43
-rw-r--r--pkgs/development/python-modules/marshmallow-oneofschema/default.nix31
-rw-r--r--pkgs/development/python-modules/marshmallow-polyfield/default.nix34
-rw-r--r--pkgs/development/python-modules/marshmallow-sqlalchemy/default.nix31
-rw-r--r--pkgs/development/python-modules/marshmallow/default.nix31
-rw-r--r--pkgs/development/python-modules/mashumaro/default.nix65
-rw-r--r--pkgs/development/python-modules/masky/default.nix23
-rw-r--r--pkgs/development/python-modules/mastodon-py/default.nix41
-rw-r--r--pkgs/development/python-modules/mat2/default.nix101
-rw-r--r--pkgs/development/python-modules/matchpy/default.nix33
-rw-r--r--pkgs/development/python-modules/material-color-utilities/default.nix17
-rw-r--r--pkgs/development/python-modules/materialx/default.nix80
-rw-r--r--pkgs/development/python-modules/materialyoucolor/default.nix59
-rw-r--r--pkgs/development/python-modules/mathlibtools/default.nix31
-rw-r--r--pkgs/development/python-modules/mathutils/default.nix33
-rw-r--r--pkgs/development/python-modules/matlink-gpapi/default.nix24
-rw-r--r--pkgs/development/python-modules/matplotlib-inline/default.nix41
-rw-r--r--pkgs/development/python-modules/matplotlib-sixel/default.nix22
-rw-r--r--pkgs/development/python-modules/matplotlib-venn/default.nix40
-rw-r--r--pkgs/development/python-modules/matplotlib/default.nix340
-rw-r--r--pkgs/development/python-modules/matplotx/default.nix30
-rw-r--r--pkgs/development/python-modules/matrix-api-async/default.nix9
-rw-r--r--pkgs/development/python-modules/matrix-client/default.nix15
-rw-r--r--pkgs/development/python-modules/matrix-common/default.nix26
-rw-r--r--pkgs/development/python-modules/matrix-nio/allow-tests-without-olm.patch59
-rw-r--r--pkgs/development/python-modules/matrix-nio/default.nix185
-rw-r--r--pkgs/development/python-modules/mattermostdriver/default.nix20
-rw-r--r--pkgs/development/python-modules/mautrix/default.nix69
-rw-r--r--pkgs/development/python-modules/maxcube-api/default.nix17
-rw-r--r--pkgs/development/python-modules/maxminddb/default.nix35
-rw-r--r--pkgs/development/python-modules/maya/default.nix39
-rw-r--r--pkgs/development/python-modules/mayavi/default.nix72
-rw-r--r--pkgs/development/python-modules/mayim/default.nix70
-rw-r--r--pkgs/development/python-modules/mbddns/default.nix15
-rw-r--r--pkgs/development/python-modules/mbstrdecoder/default.nix33
-rw-r--r--pkgs/development/python-modules/mccabe/default.nix18
-rw-r--r--pkgs/development/python-modules/mcstatus/default.nix27
-rw-r--r--pkgs/development/python-modules/mcuuid/default.nix17
-rw-r--r--pkgs/development/python-modules/md-toc/default.nix33
-rw-r--r--pkgs/development/python-modules/md2gemini/default.nix17
-rw-r--r--pkgs/development/python-modules/md2pdf/default.nix57
-rw-r--r--pkgs/development/python-modules/mdformat-admon/default.nix29
-rw-r--r--pkgs/development/python-modules/mdformat-beautysh/default.nix33
-rw-r--r--pkgs/development/python-modules/mdformat-footnote/default.nix25
-rw-r--r--pkgs/development/python-modules/mdformat-frontmatter/default.nix32
-rw-r--r--pkgs/development/python-modules/mdformat-gfm-alerts/default.nix41
-rw-r--r--pkgs/development/python-modules/mdformat-gfm/default.nix40
-rw-r--r--pkgs/development/python-modules/mdformat-mkdocs/default.nix37
-rw-r--r--pkgs/development/python-modules/mdformat-nix-alejandra/default.nix33
-rw-r--r--pkgs/development/python-modules/mdformat-simple-breaks/default.nix26
-rw-r--r--pkgs/development/python-modules/mdformat-tables/default.nix39
-rw-r--r--pkgs/development/python-modules/mdformat-toc/default.nix37
-rw-r--r--pkgs/development/python-modules/mdformat/default.nix50
-rw-r--r--pkgs/development/python-modules/mdit-py-plugins/default.nix35
-rw-r--r--pkgs/development/python-modules/mdp/default.nix19
-rw-r--r--pkgs/development/python-modules/mdtraj/default.nix82
-rw-r--r--pkgs/development/python-modules/mdurl/default.nix25
-rw-r--r--pkgs/development/python-modules/mdutils/default.nix11
-rw-r--r--pkgs/development/python-modules/mdx-truly-sane-lists/default.nix14
-rw-r--r--pkgs/development/python-modules/measurement/default.nix27
-rw-r--r--pkgs/development/python-modules/meater-python/default.nix19
-rw-r--r--pkgs/development/python-modules/mecab-python3/default.nix40
-rw-r--r--pkgs/development/python-modules/mechanicalsoup/default.nix32
-rw-r--r--pkgs/development/python-modules/mechanize/default.nix46
-rw-r--r--pkgs/development/python-modules/mediafile/default.nix29
-rw-r--r--pkgs/development/python-modules/mediafire-dl/default.nix17
-rw-r--r--pkgs/development/python-modules/mediapy/default.nix31
-rw-r--r--pkgs/development/python-modules/medpy/default.nix33
-rw-r--r--pkgs/development/python-modules/meeko/default.nix33
-rw-r--r--pkgs/development/python-modules/meep/default.nix113
-rw-r--r--pkgs/development/python-modules/meilisearch/default.nix31
-rw-r--r--pkgs/development/python-modules/meinheld/default.nix11
-rw-r--r--pkgs/development/python-modules/meld3/default.nix10
-rw-r--r--pkgs/development/python-modules/memestra/default.nix28
-rw-r--r--pkgs/development/python-modules/memory-allocator/default.nix18
-rw-r--r--pkgs/development/python-modules/memory-profiler/default.nix11
-rw-r--r--pkgs/development/python-modules/memory-tempfile/default.nix42
-rw-r--r--pkgs/development/python-modules/meraki/default.nix21
-rw-r--r--pkgs/development/python-modules/mercadopago/default.nix21
-rw-r--r--pkgs/development/python-modules/mercantile/default.nix16
-rw-r--r--pkgs/development/python-modules/merge3/default.nix25
-rw-r--r--pkgs/development/python-modules/mergedb/default.nix36
-rw-r--r--pkgs/development/python-modules/mergedeep/default.nix10
-rw-r--r--pkgs/development/python-modules/mergedict/default.nix11
-rw-r--r--pkgs/development/python-modules/merkletools/default.nix19
-rw-r--r--pkgs/development/python-modules/meross-iot/default.nix5
-rw-r--r--pkgs/development/python-modules/mesa/default.nix31
-rw-r--r--pkgs/development/python-modules/meshcat/default.nix21
-rw-r--r--pkgs/development/python-modules/meshio/default.nix29
-rw-r--r--pkgs/development/python-modules/meshtastic/default.nix45
-rw-r--r--pkgs/development/python-modules/meson-python/default.nix37
-rw-r--r--pkgs/development/python-modules/mesonpep517/default.nix30
-rw-r--r--pkgs/development/python-modules/messagebird/default.nix27
-rw-r--r--pkgs/development/python-modules/metakernel/default.nix27
-rw-r--r--pkgs/development/python-modules/metar/default.nix19
-rw-r--r--pkgs/development/python-modules/metawear/default.nix33
-rw-r--r--pkgs/development/python-modules/meteoalertapi/default.nix13
-rw-r--r--pkgs/development/python-modules/meteocalc/default.nix19
-rw-r--r--pkgs/development/python-modules/meteofrance-api/default.nix33
-rw-r--r--pkgs/development/python-modules/meteoswiss-async/default.nix52
-rw-r--r--pkgs/development/python-modules/methodtools/default.nix41
-rw-r--r--pkgs/development/python-modules/mezzanine/default.nix41
-rw-r--r--pkgs/development/python-modules/mf2py/default.nix31
-rw-r--r--pkgs/development/python-modules/mhcflurry/default.nix57
-rw-r--r--pkgs/development/python-modules/mhcgnomes/default.nix19
-rw-r--r--pkgs/development/python-modules/miasm/0001-setup.py-use-valid-semver.patch26
-rw-r--r--pkgs/development/python-modules/miasm/0002-core-remove-IDAPython-dependency.patch65
-rw-r--r--pkgs/development/python-modules/miasm/default.nix59
-rw-r--r--pkgs/development/python-modules/miauth/default.nix45
-rw-r--r--pkgs/development/python-modules/micawber/default.nix17
-rw-r--r--pkgs/development/python-modules/micloud/default.nix15
-rw-r--r--pkgs/development/python-modules/microdata/default.nix19
-rw-r--r--pkgs/development/python-modules/microsoft-kiota-abstractions/default.nix4
-rw-r--r--pkgs/development/python-modules/microsoft-kiota-authentication-azure/default.nix6
-rw-r--r--pkgs/development/python-modules/microsoft-kiota-http/default.nix4
-rw-r--r--pkgs/development/python-modules/microsoft-kiota-serialization-form/default.nix6
-rw-r--r--pkgs/development/python-modules/microsoft-kiota-serialization-json/default.nix4
-rw-r--r--pkgs/development/python-modules/midea-beautiful-air/default.nix23
-rw-r--r--pkgs/development/python-modules/midiutil/default.nix8
-rw-r--r--pkgs/development/python-modules/mido/default.nix59
-rw-r--r--pkgs/development/python-modules/migen/default.nix36
-rw-r--r--pkgs/development/python-modules/mike/default.nix31
-rw-r--r--pkgs/development/python-modules/milc/default.nix25
-rw-r--r--pkgs/development/python-modules/milksnake/default.nix14
-rw-r--r--pkgs/development/python-modules/mill-local/default.nix17
-rw-r--r--pkgs/development/python-modules/millheater/default.nix17
-rw-r--r--pkgs/development/python-modules/minari/default.nix106
-rw-r--r--pkgs/development/python-modules/mindsdb-evaluator/default.nix29
-rw-r--r--pkgs/development/python-modules/minexr/default.nix20
-rw-r--r--pkgs/development/python-modules/miniaudio/default.nix45
-rw-r--r--pkgs/development/python-modules/minichain/default.nix25
-rw-r--r--pkgs/development/python-modules/minidb/default.nix29
-rw-r--r--pkgs/development/python-modules/minidump/default.nix27
-rw-r--r--pkgs/development/python-modules/miniful/default.nix17
-rw-r--r--pkgs/development/python-modules/minikanren/default.nix23
-rw-r--r--pkgs/development/python-modules/minikerberos/default.nix25
-rw-r--r--pkgs/development/python-modules/minimal-snowplow-tracker/default.nix20
-rw-r--r--pkgs/development/python-modules/minimock/default.nix21
-rw-r--r--pkgs/development/python-modules/minio/default.nix49
-rw-r--r--pkgs/development/python-modules/miniupnpc/default.nix18
-rw-r--r--pkgs/development/python-modules/mip/default.nix62
-rw-r--r--pkgs/development/python-modules/mir-eval/default.nix21
-rw-r--r--pkgs/development/python-modules/mirakuru/default.nix21
-rw-r--r--pkgs/development/python-modules/misaka/default.nix9
-rw-r--r--pkgs/development/python-modules/misoc/default.nix37
-rw-r--r--pkgs/development/python-modules/mistletoe/default.nix23
-rw-r--r--pkgs/development/python-modules/mistune/default.nix23
-rw-r--r--pkgs/development/python-modules/mitmproxy-macos/default.nix22
-rw-r--r--pkgs/development/python-modules/mitmproxy-rs/Cargo.lock1557
-rw-r--r--pkgs/development/python-modules/mitmproxy-rs/default.nix33
-rw-r--r--pkgs/development/python-modules/mitmproxy/default.nix120
-rw-r--r--pkgs/development/python-modules/mitogen/default.nix4
-rw-r--r--pkgs/development/python-modules/mixbox/default.nix54
-rw-r--r--pkgs/development/python-modules/mixins/default.nix13
-rw-r--r--pkgs/development/python-modules/mixpanel/default.nix30
-rw-r--r--pkgs/development/python-modules/mizani/default.nix53
-rw-r--r--pkgs/development/python-modules/mkdocs-autolinks-plugin/default.nix23
-rw-r--r--pkgs/development/python-modules/mkdocs-autorefs/default.nix37
-rw-r--r--pkgs/development/python-modules/mkdocs-awesome-pages-plugin/default.nix51
-rw-r--r--pkgs/development/python-modules/mkdocs-drawio-exporter/default.nix38
-rw-r--r--pkgs/development/python-modules/mkdocs-exclude/default.nix12
-rw-r--r--pkgs/development/python-modules/mkdocs-get-deps/default.nix43
-rw-r--r--pkgs/development/python-modules/mkdocs-git-authors-plugin/default.nix15
-rw-r--r--pkgs/development/python-modules/mkdocs-git-revision-date-localized-plugin/default.nix28
-rw-r--r--pkgs/development/python-modules/mkdocs-gitlab-plugin/default.nix13
-rw-r--r--pkgs/development/python-modules/mkdocs-jupyter/default.nix59
-rw-r--r--pkgs/development/python-modules/mkdocs-linkcheck/default.nix13
-rw-r--r--pkgs/development/python-modules/mkdocs-macros/default.nix27
-rw-r--r--pkgs/development/python-modules/mkdocs-macros/mkdocs-macros-test.nix10
-rw-r--r--pkgs/development/python-modules/mkdocs-macros/tests.nix13
-rw-r--r--pkgs/development/python-modules/mkdocs-material/default.nix4
-rw-r--r--pkgs/development/python-modules/mkdocs-material/mkdocs-material-extensions.nix13
-rw-r--r--pkgs/development/python-modules/mkdocs-mermaid2-plugin/default.nix31
-rw-r--r--pkgs/development/python-modules/mkdocs-minify-plugin/default.nix19
-rw-r--r--pkgs/development/python-modules/mkdocs-redirects/default.nix24
-rw-r--r--pkgs/development/python-modules/mkdocs-redoc-tag/default.nix25
-rw-r--r--pkgs/development/python-modules/mkdocs-rss-plugin/default.nix8
-rw-r--r--pkgs/development/python-modules/mkdocs-swagger-ui-tag/default.nix28
-rw-r--r--pkgs/development/python-modules/mkdocs/default.nix83
-rw-r--r--pkgs/development/python-modules/mkdocstrings-python/default.nix4
-rw-r--r--pkgs/development/python-modules/mkdocstrings/default.nix4
-rw-r--r--pkgs/development/python-modules/mkl-service/default.nix39
-rw-r--r--pkgs/development/python-modules/mktestdocs/default.nix38
-rw-r--r--pkgs/development/python-modules/ml-collections/default.nix23
-rw-r--r--pkgs/development/python-modules/ml-dtypes/default.nix60
-rw-r--r--pkgs/development/python-modules/mlflow/default.nix94
-rw-r--r--pkgs/development/python-modules/mlrose/default.nix34
-rw-r--r--pkgs/development/python-modules/mlx/default.nix44
-rw-r--r--pkgs/development/python-modules/mlxtend/default.nix41
-rw-r--r--pkgs/development/python-modules/mmcif-pdbx/default.nix25
-rw-r--r--pkgs/development/python-modules/mmcv/default.nix111
-rw-r--r--pkgs/development/python-modules/mmengine/default.nix56
-rw-r--r--pkgs/development/python-modules/mmh3/default.nix15
-rw-r--r--pkgs/development/python-modules/mmpython/default.nix12
-rw-r--r--pkgs/development/python-modules/mmtf-python/default.nix23
-rw-r--r--pkgs/development/python-modules/mne-python/default.nix80
-rw-r--r--pkgs/development/python-modules/mnemonic/default.nix25
-rw-r--r--pkgs/development/python-modules/mnist/default.nix10
-rw-r--r--pkgs/development/python-modules/moat-ble/default.nix31
-rw-r--r--pkgs/development/python-modules/mobi/default.nix31
-rw-r--r--pkgs/development/python-modules/mobly/default.nix45
-rw-r--r--pkgs/development/python-modules/mock-open/default.nix17
-rw-r--r--pkgs/development/python-modules/mock-services/default.nix21
-rw-r--r--pkgs/development/python-modules/mock-ssh-server/default.nix19
-rw-r--r--pkgs/development/python-modules/mock/default.nix21
-rw-r--r--pkgs/development/python-modules/mocket/default.nix129
-rw-r--r--pkgs/development/python-modules/mockfs/default.nix27
-rw-r--r--pkgs/development/python-modules/mockito/default.nix19
-rw-r--r--pkgs/development/python-modules/mockupdb/default.nix29
-rw-r--r--pkgs/development/python-modules/modbus-tk/default.nix38
-rw-r--r--pkgs/development/python-modules/moddb/default.nix22
-rw-r--r--pkgs/development/python-modules/model-bakery/default.nix4
-rw-r--r--pkgs/development/python-modules/model-checker/default.nix47
-rw-r--r--pkgs/development/python-modules/modelcif/default.nix27
-rw-r--r--pkgs/development/python-modules/modeled/default.nix28
-rw-r--r--pkgs/development/python-modules/moderngl-window/default.nix72
-rw-r--r--pkgs/development/python-modules/moderngl/default.nix34
-rw-r--r--pkgs/development/python-modules/modestmaps/default.nix14
-rw-r--r--pkgs/development/python-modules/mohawk/default.nix35
-rw-r--r--pkgs/development/python-modules/molbar/default.nix70
-rw-r--r--pkgs/development/python-modules/molecule/default.nix4
-rw-r--r--pkgs/development/python-modules/molecule/plugins.nix27
-rw-r--r--pkgs/development/python-modules/momepy/default.nix57
-rw-r--r--pkgs/development/python-modules/monai-deploy/default.nix31
-rw-r--r--pkgs/development/python-modules/monai/default.nix52
-rw-r--r--pkgs/development/python-modules/monero/default.nix31
-rw-r--r--pkgs/development/python-modules/mongodict/default.nix10
-rw-r--r--pkgs/development/python-modules/mongoengine/default.nix23
-rw-r--r--pkgs/development/python-modules/mongomock/default.nix29
-rw-r--r--pkgs/development/python-modules/mongoquery/default.nix21
-rw-r--r--pkgs/development/python-modules/monitorcontrol/default.nix29
-rw-r--r--pkgs/development/python-modules/monkeyhex/default.nix11
-rw-r--r--pkgs/development/python-modules/monotonic/default.nix15
-rw-r--r--pkgs/development/python-modules/monty/default.nix41
-rw-r--r--pkgs/development/python-modules/monzopy/default.nix40
-rw-r--r--pkgs/development/python-modules/moonraker-api/default.nix29
-rw-r--r--pkgs/development/python-modules/mopeka-iot-ble/default.nix37
-rw-r--r--pkgs/development/python-modules/more-itertools/default.nix33
-rw-r--r--pkgs/development/python-modules/more-properties/default.nix17
-rw-r--r--pkgs/development/python-modules/morecantile/default.nix60
-rw-r--r--pkgs/development/python-modules/moreorless/default.nix29
-rw-r--r--pkgs/development/python-modules/moretools/default.nix19
-rw-r--r--pkgs/development/python-modules/morfessor/default.nix9
-rw-r--r--pkgs/development/python-modules/morphys/default.nix7
-rw-r--r--pkgs/development/python-modules/mortgage/default.nix39
-rw-r--r--pkgs/development/python-modules/motionblinds/default.nix31
-rw-r--r--pkgs/development/python-modules/motionblindsble/default.nix55
-rw-r--r--pkgs/development/python-modules/motioneye-client/default.nix35
-rw-r--r--pkgs/development/python-modules/motmetrics/default.nix43
-rw-r--r--pkgs/development/python-modules/moto/default.nix113
-rw-r--r--pkgs/development/python-modules/motor/default.nix44
-rw-r--r--pkgs/development/python-modules/mouseinfo/default.nix19
-rw-r--r--pkgs/development/python-modules/moviepy/default.nix110
-rw-r--r--pkgs/development/python-modules/mox3/default.nix38
-rw-r--r--pkgs/development/python-modules/mozart-api/default.nix59
-rw-r--r--pkgs/development/python-modules/mozilla-django-oidc/default.nix54
-rw-r--r--pkgs/development/python-modules/mpd2/default.nix35
-rw-r--r--pkgs/development/python-modules/mpegdash/default.nix36
-rw-r--r--pkgs/development/python-modules/mpi4py/default.nix86
-rw-r--r--pkgs/development/python-modules/mpi4py/tests.patch13
-rw-r--r--pkgs/development/python-modules/mpl-scatter-density/default.nix33
-rw-r--r--pkgs/development/python-modules/mpldatacursor/default.nix9
-rw-r--r--pkgs/development/python-modules/mplfinance/default.nix13
-rw-r--r--pkgs/development/python-modules/mplhep-data/default.nix21
-rw-r--r--pkgs/development/python-modules/mplhep/default.nix67
-rw-r--r--pkgs/development/python-modules/mplleaflet/default.nix16
-rw-r--r--pkgs/development/python-modules/mpmath/default.nix42
-rw-r--r--pkgs/development/python-modules/mpris-server/default.nix23
-rw-r--r--pkgs/development/python-modules/mpv/default.nix23
-rw-r--r--pkgs/development/python-modules/mpyq/default.nix11
-rw-r--r--pkgs/development/python-modules/mqtt2influxdb/default.nix21
-rw-r--r--pkgs/development/python-modules/mrjob/default.nix62
-rw-r--r--pkgs/development/python-modules/mrsqm/default.nix23
-rw-r--r--pkgs/development/python-modules/ms-active-directory/default.nix40
-rw-r--r--pkgs/development/python-modules/ms-cv/default.nix15
-rw-r--r--pkgs/development/python-modules/msal-extensions/default.nix31
-rw-r--r--pkgs/development/python-modules/msal/default.nix34
-rw-r--r--pkgs/development/python-modules/mscerts/default.nix23
-rw-r--r--pkgs/development/python-modules/msg-parser/default.nix27
-rw-r--r--pkgs/development/python-modules/msgpack-numpy/default.nix23
-rw-r--r--pkgs/development/python-modules/msgpack/default.nix29
-rw-r--r--pkgs/development/python-modules/msgraph-core/default.nix51
-rw-r--r--pkgs/development/python-modules/msgraph-sdk/default.nix10
-rw-r--r--pkgs/development/python-modules/msgspec/default.nix21
-rw-r--r--pkgs/development/python-modules/msldap/default.nix43
-rw-r--r--pkgs/development/python-modules/msmart-ng/default.nix60
-rw-r--r--pkgs/development/python-modules/msoffcrypto-tool/default.nix4
-rw-r--r--pkgs/development/python-modules/msprime/default.nix39
-rw-r--r--pkgs/development/python-modules/msrest/default.nix84
-rw-r--r--pkgs/development/python-modules/msrestazure/default.nix37
-rw-r--r--pkgs/development/python-modules/mss/default.nix13
-rw-r--r--pkgs/development/python-modules/mt-940/default.nix25
-rw-r--r--pkgs/development/python-modules/mujoco/default.nix111
-rw-r--r--pkgs/development/python-modules/mujson/default.nix7
-rw-r--r--pkgs/development/python-modules/mullvad-api/default.nix9
-rw-r--r--pkgs/development/python-modules/mullvad-closest/default.nix23
-rw-r--r--pkgs/development/python-modules/mulpyplexer/default.nix7
-rw-r--r--pkgs/development/python-modules/multi-key-dict/default.nix17
-rw-r--r--pkgs/development/python-modules/multidict/default.nix17
-rw-r--r--pkgs/development/python-modules/multimethod/default.nix25
-rw-r--r--pkgs/development/python-modules/multipart/default.nix30
-rw-r--r--pkgs/development/python-modules/multipledispatch/default.nix13
-rw-r--r--pkgs/development/python-modules/multiprocess/default.nix19
-rw-r--r--pkgs/development/python-modules/multiscale-spatial-image/default.nix81
-rw-r--r--pkgs/development/python-modules/multiset/default.nix32
-rw-r--r--pkgs/development/python-modules/multitasking/default.nix9
-rw-r--r--pkgs/development/python-modules/munch/default.nix26
-rw-r--r--pkgs/development/python-modules/mung/default.nix33
-rw-r--r--pkgs/development/python-modules/munkres/default.nix14
-rw-r--r--pkgs/development/python-modules/murmurhash/default.nix19
-rw-r--r--pkgs/development/python-modules/muscima/default.nix23
-rw-r--r--pkgs/development/python-modules/music-tag/default.nix23
-rw-r--r--pkgs/development/python-modules/musicbrainzngs/default.nix12
-rw-r--r--pkgs/development/python-modules/mutag/default.nix39
-rw-r--r--pkgs/development/python-modules/mutagen/default.nix37
-rw-r--r--pkgs/development/python-modules/mutatormath/default.nix22
-rw-r--r--pkgs/development/python-modules/mutesync/default.nix11
-rw-r--r--pkgs/development/python-modules/mutf8/default.nix19
-rw-r--r--pkgs/development/python-modules/mwcli/default.nix21
-rw-r--r--pkgs/development/python-modules/mwclient/default.nix27
-rw-r--r--pkgs/development/python-modules/mwdblib/default.nix29
-rw-r--r--pkgs/development/python-modules/mwoauth/default.nix23
-rw-r--r--pkgs/development/python-modules/mwparserfromhell/default.nix19
-rw-r--r--pkgs/development/python-modules/mwtypes/default.nix54
-rw-r--r--pkgs/development/python-modules/mwxml/default.nix54
-rw-r--r--pkgs/development/python-modules/mxnet/default.nix25
-rw-r--r--pkgs/development/python-modules/myfitnesspal/default.nix45
-rw-r--r--pkgs/development/python-modules/mygpoclient/default.nix41
-rw-r--r--pkgs/development/python-modules/myhdl/default.nix21
-rw-r--r--pkgs/development/python-modules/myhome/default.nix31
-rw-r--r--pkgs/development/python-modules/myjwt/default.nix54
-rw-r--r--pkgs/development/python-modules/mypermobil/default.nix50
-rw-r--r--pkgs/development/python-modules/mypy-boto3-builder/default.nix57
-rw-r--r--pkgs/development/python-modules/mypy-boto3/default.nix1447
-rwxr-xr-xpkgs/development/python-modules/mypy-boto3/update.sh38
-rw-r--r--pkgs/development/python-modules/mypy-protobuf/default.nix58
-rw-r--r--pkgs/development/python-modules/mypy/default.nix157
-rw-r--r--pkgs/development/python-modules/mypy/extensions.nix27
-rw-r--r--pkgs/development/python-modules/mysql-connector/default.nix36
-rw-r--r--pkgs/development/python-modules/mysqlclient/default.nix19
-rw-r--r--pkgs/development/python-modules/myst-docutils/default.nix71
-rw-r--r--pkgs/development/python-modules/myst-nb/default.nix45
-rw-r--r--pkgs/development/python-modules/myst-parser/default.nix76
-rw-r--r--pkgs/development/python-modules/n3fit/default.nix50
-rw-r--r--pkgs/development/python-modules/nad-receiver/default.nix19
-rw-r--r--pkgs/development/python-modules/nagiosplugin/default.nix23
-rw-r--r--pkgs/development/python-modules/naked/default.nix43
-rw-r--r--pkgs/development/python-modules/name-that-hash/default.nix17
-rw-r--r--pkgs/development/python-modules/namedlist/default.nix21
-rw-r--r--pkgs/development/python-modules/nameko/default.nix49
-rw-r--r--pkgs/development/python-modules/nameparser/default.nix21
-rw-r--r--pkgs/development/python-modules/names/default.nix19
-rw-r--r--pkgs/development/python-modules/namex/default.nix36
-rw-r--r--pkgs/development/python-modules/nampa/default.nix25
-rw-r--r--pkgs/development/python-modules/nanobind/default.nix41
-rw-r--r--pkgs/development/python-modules/nanoemoji/default.nix101
-rw-r--r--pkgs/development/python-modules/nanoemoji/fix-test.patch24
-rw-r--r--pkgs/development/python-modules/nanoemoji/test-pythonpath.patch14
-rw-r--r--pkgs/development/python-modules/nanoid/default.nix21
-rw-r--r--pkgs/development/python-modules/nanoleaf/default.nix32
-rw-r--r--pkgs/development/python-modules/nanomsg-python/default.nix19
-rw-r--r--pkgs/development/python-modules/nanotime/default.nix25
-rw-r--r--pkgs/development/python-modules/napalm/default.nix73
-rw-r--r--pkgs/development/python-modules/napalm/hp-procurve.nix39
-rw-r--r--pkgs/development/python-modules/napari-console/default.nix43
-rw-r--r--pkgs/development/python-modules/napari-npe2/default.nix41
-rw-r--r--pkgs/development/python-modules/napari-plugin-engine/default.nix20
-rw-r--r--pkgs/development/python-modules/napari-svg/default.nix25
-rw-r--r--pkgs/development/python-modules/napari/default.nix96
-rw-r--r--pkgs/development/python-modules/nasdaq-data-link/default.nix39
-rw-r--r--pkgs/development/python-modules/natasha/default.nix30
-rw-r--r--pkgs/development/python-modules/nats-py/default.nix13
-rw-r--r--pkgs/development/python-modules/nats-python/default.nix37
-rw-r--r--pkgs/development/python-modules/natsort/default.nix27
-rw-r--r--pkgs/development/python-modules/natural/default.nix32
-rw-r--r--pkgs/development/python-modules/naturalsort/default.nix24
-rw-r--r--pkgs/development/python-modules/navec/default.nix25
-rw-r--r--pkgs/development/python-modules/nbclassic/default.nix71
-rw-r--r--pkgs/development/python-modules/nbclient/default.nix129
-rw-r--r--pkgs/development/python-modules/nbconflux/default.nix45
-rw-r--r--pkgs/development/python-modules/nbconvert/default.nix70
-rw-r--r--pkgs/development/python-modules/nbdev/default.nix45
-rw-r--r--pkgs/development/python-modules/nbdime/749.patch10
-rw-r--r--pkgs/development/python-modules/nbdime/default.nix57
-rw-r--r--pkgs/development/python-modules/nbexec/default.nix42
-rw-r--r--pkgs/development/python-modules/nbformat/default.nix33
-rw-r--r--pkgs/development/python-modules/nbmake/default.nix68
-rw-r--r--pkgs/development/python-modules/nbmerge/default.nix50
-rw-r--r--pkgs/development/python-modules/nbsmoke/default.nix25
-rw-r--r--pkgs/development/python-modules/nbsphinx/default.nix38
-rw-r--r--pkgs/development/python-modules/nbtlib/default.nix27
-rw-r--r--pkgs/development/python-modules/nbval/default.nix45
-rw-r--r--pkgs/development/python-modules/nbxmpp/default.nix43
-rw-r--r--pkgs/development/python-modules/nc-dnsapi/default.nix14
-rw-r--r--pkgs/development/python-modules/ncclient/default.nix25
-rw-r--r--pkgs/development/python-modules/nclib/default.nix13
-rw-r--r--pkgs/development/python-modules/ndeflib/default.nix31
-rw-r--r--pkgs/development/python-modules/ndg-httpsclient/default.nix15
-rw-r--r--pkgs/development/python-modules/ndindex/default.nix41
-rw-r--r--pkgs/development/python-modules/ndjson/default.nix19
-rw-r--r--pkgs/development/python-modules/ndms2-client/default.nix19
-rw-r--r--pkgs/development/python-modules/ndspy/default.nix25
-rw-r--r--pkgs/development/python-modules/ndtypes/default.nix34
-rw-r--r--pkgs/development/python-modules/nebula3-python/default.nix4
-rw-r--r--pkgs/development/python-modules/nemosis/default.nix49
-rw-r--r--pkgs/development/python-modules/nengo/default.nix33
-rw-r--r--pkgs/development/python-modules/neo/default.nix52
-rw-r--r--pkgs/development/python-modules/neo4j/default.nix7
-rw-r--r--pkgs/development/python-modules/neoteroi-mkdocs/default.nix18
-rw-r--r--pkgs/development/python-modules/nessclient/default.nix45
-rw-r--r--pkgs/development/python-modules/nest-asyncio/default.nix25
-rw-r--r--pkgs/development/python-modules/nested-lookup/default.nix19
-rw-r--r--pkgs/development/python-modules/nestedtext/default.nix43
-rw-r--r--pkgs/development/python-modules/netaddr/default.nix31
-rw-r--r--pkgs/development/python-modules/netapp-lib/default.nix15
-rw-r--r--pkgs/development/python-modules/netapp-ontap/default.nix40
-rw-r--r--pkgs/development/python-modules/netbox-reorder-rack/default.nix41
-rw-r--r--pkgs/development/python-modules/netcdf4/default.nix47
-rw-r--r--pkgs/development/python-modules/netdata-pandas/default.nix42
-rw-r--r--pkgs/development/python-modules/netdata/default.nix29
-rw-r--r--pkgs/development/python-modules/netdisco/default.nix15
-rw-r--r--pkgs/development/python-modules/nethsm/default.nix25
-rw-r--r--pkgs/development/python-modules/netifaces/default.nix15
-rw-r--r--pkgs/development/python-modules/netio/default.nix25
-rw-r--r--pkgs/development/python-modules/netmap/default.nix13
-rw-r--r--pkgs/development/python-modules/netmiko/default.nix36
-rw-r--r--pkgs/development/python-modules/nettigo-air-monitor/default.nix12
-rw-r--r--pkgs/development/python-modules/netutils/default.nix6
-rw-r--r--pkgs/development/python-modules/networkx/default.nix52
-rw-r--r--pkgs/development/python-modules/neuralfoil/default.nix39
-rw-r--r--pkgs/development/python-modules/nevow/default.nix8
-rw-r--r--pkgs/development/python-modules/newick/default.nix27
-rw-r--r--pkgs/development/python-modules/newversion/default.nix31
-rw-r--r--pkgs/development/python-modules/nexia/default.nix31
-rw-r--r--pkgs/development/python-modules/nextcloudmonitor/default.nix17
-rw-r--r--pkgs/development/python-modules/nextcord/default.nix29
-rw-r--r--pkgs/development/python-modules/nextdns/default.nix14
-rw-r--r--pkgs/development/python-modules/nexusformat/default.nix53
-rw-r--r--pkgs/development/python-modules/nfcpy/default.nix30
-rw-r--r--pkgs/development/python-modules/nh3/default.nix30
-rw-r--r--pkgs/development/python-modules/niaaml/default.nix47
-rw-r--r--pkgs/development/python-modules/niaarm/default.nix41
-rw-r--r--pkgs/development/python-modules/niaclass/default.nix46
-rw-r--r--pkgs/development/python-modules/nianet/default.nix30
-rw-r--r--pkgs/development/python-modules/niapy/default.nix40
-rw-r--r--pkgs/development/python-modules/nibabel/default.nix65
-rw-r--r--pkgs/development/python-modules/nibe/default.nix54
-rw-r--r--pkgs/development/python-modules/nice-go/default.nix59
-rw-r--r--pkgs/development/python-modules/nidaqmx/default.nix25
-rw-r--r--pkgs/development/python-modules/niko-home-control/default.nix19
-rw-r--r--pkgs/development/python-modules/nikola/default.nix102
-rw-r--r--pkgs/development/python-modules/nilearn/default.nix39
-rw-r--r--pkgs/development/python-modules/niluclient/default.nix15
-rw-r--r--pkgs/development/python-modules/nimfa/default.nix29
-rw-r--r--pkgs/development/python-modules/nine/default.nix8
-rw-r--r--pkgs/development/python-modules/ninebot-ble/default.nix28
-rw-r--r--pkgs/development/python-modules/ninja/default.nix20
-rw-r--r--pkgs/development/python-modules/nipreps-versions/default.nix21
-rw-r--r--pkgs/development/python-modules/nipy/default.nix46
-rw-r--r--pkgs/development/python-modules/nipype/default.nix85
-rw-r--r--pkgs/development/python-modules/nitime/default.nix43
-rw-r--r--pkgs/development/python-modules/nitransforms/default.nix35
-rw-r--r--pkgs/development/python-modules/niworkflows/default.nix67
-rw-r--r--pkgs/development/python-modules/nix-kernel/default.nix30
-rw-r--r--pkgs/development/python-modules/nix-prefetch-github/default.nix41
-rw-r--r--pkgs/development/python-modules/nixpkgs-pytools/default.nix15
-rw-r--r--pkgs/development/python-modules/nixpkgs/default.nix16
-rw-r--r--pkgs/development/python-modules/nkdfu/default.nix15
-rw-r--r--pkgs/development/python-modules/nlpcloud/default.nix17
-rw-r--r--pkgs/development/python-modules/nltk/default.nix28
-rw-r--r--pkgs/development/python-modules/nmapthon2/default.nix24
-rw-r--r--pkgs/development/python-modules/nocasedict/default.nix35
-rw-r--r--pkgs/development/python-modules/nocaselist/default.nix38
-rw-r--r--pkgs/development/python-modules/nocturne/default.nix34
-rw-r--r--pkgs/development/python-modules/node-semver/default.nix23
-rw-r--r--pkgs/development/python-modules/nodeenv/default.nix37
-rw-r--r--pkgs/development/python-modules/nodepy-runtime/default.nix17
-rw-r--r--pkgs/development/python-modules/nodriver/default.nix51
-rw-r--r--pkgs/development/python-modules/noise/default.nix25
-rw-r--r--pkgs/development/python-modules/noiseprotocol/default.nix25
-rw-r--r--pkgs/development/python-modules/nomadnet/default.nix35
-rw-r--r--pkgs/development/python-modules/noneprompt/default.nix39
-rw-r--r--pkgs/development/python-modules/norfair/default.nix47
-rw-r--r--pkgs/development/python-modules/normality/default.nix47
-rw-r--r--pkgs/development/python-modules/nose-cov/default.nix21
-rw-r--r--pkgs/development/python-modules/nose-cprof/default.nix26
-rw-r--r--pkgs/development/python-modules/nose-exclude/default.nix28
-rw-r--r--pkgs/development/python-modules/nose-pattern-exclude/default.nix24
-rw-r--r--pkgs/development/python-modules/nose-randomly/default.nix34
-rw-r--r--pkgs/development/python-modules/nose-timer/default.nix45
-rw-r--r--pkgs/development/python-modules/nose-warnings-filters/default.nix33
-rw-r--r--pkgs/development/python-modules/nose/0001-nose-python-3.12-fixes.patch576
-rw-r--r--pkgs/development/python-modules/nose/default.nix54
-rw-r--r--pkgs/development/python-modules/nose2/default.nix39
-rw-r--r--pkgs/development/python-modules/nose2pytest/default.nix61
-rw-r--r--pkgs/development/python-modules/nose3/default.nix41
-rw-r--r--pkgs/development/python-modules/nosejs/default.nix29
-rw-r--r--pkgs/development/python-modules/nosexcover/default.nix30
-rw-r--r--pkgs/development/python-modules/notebook-shim/default.nix17
-rw-r--r--pkgs/development/python-modules/notebook/default.nix43
-rw-r--r--pkgs/development/python-modules/notedown/default.nix17
-rw-r--r--pkgs/development/python-modules/notifications-android-tv/default.nix39
-rw-r--r--pkgs/development/python-modules/notifications-python-client/default.nix47
-rw-r--r--pkgs/development/python-modules/notify-events/default.nix13
-rw-r--r--pkgs/development/python-modules/notify-py/default.nix118
-rw-r--r--pkgs/development/python-modules/notify2/default.nix18
-rw-r--r--pkgs/development/python-modules/notion-client/default.nix33
-rw-r--r--pkgs/development/python-modules/notmuch/default.nix19
-rw-r--r--pkgs/development/python-modules/notmuch2/default.nix19
-rw-r--r--pkgs/development/python-modules/notobuilder/default.nix71
-rw-r--r--pkgs/development/python-modules/nototools/default.nix47
-rw-r--r--pkgs/development/python-modules/notus-scanner/default.nix7
-rw-r--r--pkgs/development/python-modules/nox/default.nix62
-rw-r--r--pkgs/development/python-modules/nplusone/default.nix31
-rw-r--r--pkgs/development/python-modules/nptyping/default.nix29
-rw-r--r--pkgs/development/python-modules/npyscreen/default.nix10
-rw-r--r--pkgs/development/python-modules/nsapi/default.nix13
-rw-r--r--pkgs/development/python-modules/nsz/default.nix19
-rw-r--r--pkgs/development/python-modules/ntc-templates/default.nix37
-rw-r--r--pkgs/development/python-modules/ntplib/default.nix8
-rw-r--r--pkgs/development/python-modules/nuclear/default.nix50
-rw-r--r--pkgs/development/python-modules/nuheat/default.nix27
-rw-r--r--pkgs/development/python-modules/nuitka/darwin-lto.patch15
-rw-r--r--pkgs/development/python-modules/nuitka/default.nix36
-rw-r--r--pkgs/development/python-modules/nulltype/default.nix17
-rw-r--r--pkgs/development/python-modules/num2words/default.nix23
-rw-r--r--pkgs/development/python-modules/numba-scipy/default.nix23
-rw-r--r--pkgs/development/python-modules/numba/default.nix186
-rw-r--r--pkgs/development/python-modules/numcodecs/default.nix49
-rw-r--r--pkgs/development/python-modules/numdifftools/default.nix18
-rw-r--r--pkgs/development/python-modules/numericalunits/default.nix11
-rw-r--r--pkgs/development/python-modules/numexpr/default.nix63
-rw-r--r--pkgs/development/python-modules/numpy-groupies/default.nix47
-rw-r--r--pkgs/development/python-modules/numpy-stl/default.nix25
-rw-r--r--pkgs/development/python-modules/numpy/1.nix (renamed from pkgs/development/python-modules/numpy/default.nix)164
-rw-r--r--pkgs/development/python-modules/numpy/2.nix183
-rw-r--r--pkgs/development/python-modules/numpydoc/default.nix35
-rw-r--r--pkgs/development/python-modules/numpyro/default.nix109
-rw-r--r--pkgs/development/python-modules/nunavut/default.nix28
-rw-r--r--pkgs/development/python-modules/nutils-poly/default.nix51
-rw-r--r--pkgs/development/python-modules/nutils/default.nix56
-rw-r--r--pkgs/development/python-modules/nvchecker/default.nix57
-rw-r--r--pkgs/development/python-modules/nvdlib/default.nix33
-rw-r--r--pkgs/development/python-modules/nvidia-ml-py/default.nix17
-rw-r--r--pkgs/development/python-modules/nwdiag/default.nix39
-rw-r--r--pkgs/development/python-modules/nwdiag/fix_test_generate.patch22
-rw-r--r--pkgs/development/python-modules/nxt-python/default.nix37
-rw-r--r--pkgs/development/python-modules/oasatelematics/default.nix20
-rw-r--r--pkgs/development/python-modules/oath/default.nix17
-rw-r--r--pkgs/development/python-modules/oauth/default.nix8
-rw-r--r--pkgs/development/python-modules/oauth2/default.nix21
-rw-r--r--pkgs/development/python-modules/oauth2client/default.nix22
-rw-r--r--pkgs/development/python-modules/oauthenticator/default.nix64
-rw-r--r--pkgs/development/python-modules/oauthlib/default.nix50
-rw-r--r--pkgs/development/python-modules/obfsproxy/default.nix25
-rw-r--r--pkgs/development/python-modules/objax/default.nix55
-rw-r--r--pkgs/development/python-modules/objax/replace-deprecated-device_buffers.patch14
-rw-r--r--pkgs/development/python-modules/objexplore/default.nix61
-rw-r--r--pkgs/development/python-modules/objgraph/default.nix34
-rw-r--r--pkgs/development/python-modules/objsize/default.nix29
-rw-r--r--pkgs/development/python-modules/obspy/default.nix54
-rw-r--r--pkgs/development/python-modules/oca-port/default.nix19
-rw-r--r--pkgs/development/python-modules/ochre/default.nix19
-rw-r--r--pkgs/development/python-modules/oci/default.nix38
-rw-r--r--pkgs/development/python-modules/ocifs/default.nix23
-rw-r--r--pkgs/development/python-modules/ocrmypdf/default.nix78
-rw-r--r--pkgs/development/python-modules/ocrmypdf/paths.patch30
-rw-r--r--pkgs/development/python-modules/od/default.nix21
-rw-r--r--pkgs/development/python-modules/oddsprout/default.nix34
-rw-r--r--pkgs/development/python-modules/odfpy/default.nix11
-rw-r--r--pkgs/development/python-modules/odp-amsterdam/default.nix41
-rw-r--r--pkgs/development/python-modules/oelint-parser/default.nix58
-rw-r--r--pkgs/development/python-modules/oemthermostat/default.nix38
-rw-r--r--pkgs/development/python-modules/offtrac/default.nix8
-rw-r--r--pkgs/development/python-modules/ofxclient/default.nix19
-rw-r--r--pkgs/development/python-modules/ofxhome/default.nix34
-rw-r--r--pkgs/development/python-modules/ofxparse/default.nix20
-rw-r--r--pkgs/development/python-modules/ofxtools/default.nix17
-rw-r--r--pkgs/development/python-modules/okonomiyaki/default.nix62
-rw-r--r--pkgs/development/python-modules/okta/default.nix52
-rw-r--r--pkgs/development/python-modules/oldest-supported-numpy/default.nix13
-rw-r--r--pkgs/development/python-modules/olefile/default.nix24
-rw-r--r--pkgs/development/python-modules/oletools/default.nix41
-rw-r--r--pkgs/development/python-modules/ollama/default.nix6
-rw-r--r--pkgs/development/python-modules/ome-zarr/default.nix60
-rw-r--r--pkgs/development/python-modules/omegaconf/default.nix45
-rw-r--r--pkgs/development/python-modules/omemo-dr/default.nix31
-rw-r--r--pkgs/development/python-modules/omnikinverter/default.nix29
-rw-r--r--pkgs/development/python-modules/omnilogic/default.nix17
-rw-r--r--pkgs/development/python-modules/omniorbpy/default.nix58
-rw-r--r--pkgs/development/python-modules/omorfi/default.nix16
-rw-r--r--pkgs/development/python-modules/omrdatasettools/default.nix43
-rw-r--r--pkgs/development/python-modules/oncalendar/default.nix11
-rw-r--r--pkgs/development/python-modules/onecache/default.nix49
-rw-r--r--pkgs/development/python-modules/onetimepad/default.nix9
-rw-r--r--pkgs/development/python-modules/onigurumacffi/default.nix13
-rw-r--r--pkgs/development/python-modules/onkyo-eiscp/default.nix14
-rw-r--r--pkgs/development/python-modules/online-judge-api-client/default.nix45
-rw-r--r--pkgs/development/python-modules/online-judge-tools/default.nix39
-rw-r--r--pkgs/development/python-modules/onlykey-solo-python/default.nix34
-rw-r--r--pkgs/development/python-modules/onnx/1.15.0-CVE-2024-27318.patch360
-rw-r--r--pkgs/development/python-modules/onnx/default.nix111
-rw-r--r--pkgs/development/python-modules/onnxconverter-common/default.nix28
-rw-r--r--pkgs/development/python-modules/onnxmltools/default.nix29
-rw-r--r--pkgs/development/python-modules/onnxruntime-tools/default.nix23
-rw-r--r--pkgs/development/python-modules/onnxruntime/default.nix56
-rw-r--r--pkgs/development/python-modules/onvif-zeep-async/default.nix19
-rw-r--r--pkgs/development/python-modules/onvif-zeep/default.nix23
-rw-r--r--pkgs/development/python-modules/oocsi/default.nix13
-rw-r--r--pkgs/development/python-modules/opcua-widgets/default.nix15
-rw-r--r--pkgs/development/python-modules/open-clip-torch/default.nix107
-rw-r--r--pkgs/development/python-modules/open-garage/default.nix17
-rw-r--r--pkgs/development/python-modules/open-interpreter/default.nix99
-rw-r--r--pkgs/development/python-modules/open-meteo/default.nix31
-rw-r--r--pkgs/development/python-modules/openai-triton/bin.nix82
-rw-r--r--pkgs/development/python-modules/openai-triton/default.nix196
-rw-r--r--pkgs/development/python-modules/openai-whisper/default.nix54
-rw-r--r--pkgs/development/python-modules/openai/default.nix49
-rw-r--r--pkgs/development/python-modules/openaiauth/default.nix25
-rw-r--r--pkgs/development/python-modules/openant/default.nix40
-rw-r--r--pkgs/development/python-modules/openapi-core/default.nix106
-rw-r--r--pkgs/development/python-modules/openapi-schema-validator/default.nix41
-rw-r--r--pkgs/development/python-modules/openapi-spec-validator/default.nix41
-rw-r--r--pkgs/development/python-modules/openapi3/default.nix31
-rw-r--r--pkgs/development/python-modules/openbabel-bindings/default.nix11
-rw-r--r--pkgs/development/python-modules/opencensus-context/default.nix12
-rw-r--r--pkgs/development/python-modules/opencensus-ext-azure/default.nix25
-rw-r--r--pkgs/development/python-modules/opencensus/default.nix22
-rw-r--r--pkgs/development/python-modules/opencontainers/default.nix25
-rw-r--r--pkgs/development/python-modules/openerz-api/default.nix29
-rw-r--r--pkgs/development/python-modules/openevsewifi/default.nix29
-rw-r--r--pkgs/development/python-modules/openhomedevice/default.nix40
-rw-r--r--pkgs/development/python-modules/openidc-client/default.nix9
-rw-r--r--pkgs/development/python-modules/openllm-client/default.nix73
-rw-r--r--pkgs/development/python-modules/openllm-core/default.nix109
-rw-r--r--pkgs/development/python-modules/openllm/default.nix195
-rw-r--r--pkgs/development/python-modules/openpyxl/default.nix79
-rw-r--r--pkgs/development/python-modules/openrazer/common.nix5
-rw-r--r--pkgs/development/python-modules/openrazer/daemon.nix51
-rw-r--r--pkgs/development/python-modules/openrazer/pylib.nix48
-rw-r--r--pkgs/development/python-modules/openrgb-python/default.nix19
-rw-r--r--pkgs/development/python-modules/openrouteservice/default.nix15
-rw-r--r--pkgs/development/python-modules/opensearch-py/default.nix57
-rw-r--r--pkgs/development/python-modules/opensensemap-api/default.nix17
-rw-r--r--pkgs/development/python-modules/opensfm/default.nix96
-rw-r--r--pkgs/development/python-modules/openshift/default.nix23
-rw-r--r--pkgs/development/python-modules/opensimplex/default.nix11
-rw-r--r--pkgs/development/python-modules/openstackdocstheme/default.nix30
-rw-r--r--pkgs/development/python-modules/openstacksdk/default.nix74
-rw-r--r--pkgs/development/python-modules/openstacksdk/tests.nix92
-rw-r--r--pkgs/development/python-modules/openstep-parser/default.nix33
-rw-r--r--pkgs/development/python-modules/openstep-plist/default.nix23
-rw-r--r--pkgs/development/python-modules/opentelemetry-api/default.nix43
-rw-r--r--pkgs/development/python-modules/opentelemetry-exporter-otlp-proto-common/default.nix24
-rw-r--r--pkgs/development/python-modules/opentelemetry-exporter-otlp-proto-grpc/default.nix32
-rw-r--r--pkgs/development/python-modules/opentelemetry-exporter-otlp-proto-http/default.nix32
-rw-r--r--pkgs/development/python-modules/opentelemetry-exporter-otlp/default.nix22
-rw-r--r--pkgs/development/python-modules/opentelemetry-exporter-prometheus/default.nix27
-rw-r--r--pkgs/development/python-modules/opentelemetry-instrumentation-aiohttp-client/default.nix28
-rw-r--r--pkgs/development/python-modules/opentelemetry-instrumentation-asgi/default.nix29
-rw-r--r--pkgs/development/python-modules/opentelemetry-instrumentation-dbapi/default.nix40
-rw-r--r--pkgs/development/python-modules/opentelemetry-instrumentation-django/default.nix30
-rw-r--r--pkgs/development/python-modules/opentelemetry-instrumentation-fastapi/default.nix36
-rw-r--r--pkgs/development/python-modules/opentelemetry-instrumentation-flask/default.nix25
-rw-r--r--pkgs/development/python-modules/opentelemetry-instrumentation-grpc/default.nix44
-rw-r--r--pkgs/development/python-modules/opentelemetry-instrumentation-psycopg2/default.nix42
-rw-r--r--pkgs/development/python-modules/opentelemetry-instrumentation-wsgi/default.nix24
-rw-r--r--pkgs/development/python-modules/opentelemetry-instrumentation/default.nix35
-rw-r--r--pkgs/development/python-modules/opentelemetry-proto/default.nix26
-rw-r--r--pkgs/development/python-modules/opentelemetry-sdk/default.nix32
-rw-r--r--pkgs/development/python-modules/opentelemetry-semantic-conventions/default.nix27
-rw-r--r--pkgs/development/python-modules/opentelemetry-test-utils/default.nix23
-rw-r--r--pkgs/development/python-modules/opentelemetry-util-http/default.nix18
-rw-r--r--pkgs/development/python-modules/opentimestamps/default.nix26
-rw-r--r--pkgs/development/python-modules/opentracing/default.nix23
-rw-r--r--pkgs/development/python-modules/opentsne/default.nix48
-rw-r--r--pkgs/development/python-modules/opentype-feature-freezer/default.nix63
-rw-r--r--pkgs/development/python-modules/opentypespec/default.nix18
-rw-r--r--pkgs/development/python-modules/openusd/default.nix23
-rw-r--r--pkgs/development/python-modules/openvino/default.nix15
-rw-r--r--pkgs/development/python-modules/openwebifpy/default.nix40
-rw-r--r--pkgs/development/python-modules/openwrt-luci-rpc/default.nix19
-rw-r--r--pkgs/development/python-modules/openwrt-ubus-rpc/default.nix27
-rw-r--r--pkgs/development/python-modules/opower/default.nix16
-rw-r--r--pkgs/development/python-modules/opsdroid-get-image-size/default.nix31
-rw-r--r--pkgs/development/python-modules/opt-einsum/default.nix33
-rw-r--r--pkgs/development/python-modules/optax/default.nix52
-rw-r--r--pkgs/development/python-modules/optax/tests.nix17
-rw-r--r--pkgs/development/python-modules/optimum/default.nix75
-rw-r--r--pkgs/development/python-modules/optree/default.nix54
-rw-r--r--pkgs/development/python-modules/optuna/default.nix100
-rw-r--r--pkgs/development/python-modules/opuslib/default.nix19
-rw-r--r--pkgs/development/python-modules/opytimark/default.nix27
-rw-r--r--pkgs/development/python-modules/oracledb/default.nix34
-rw-r--r--pkgs/development/python-modules/oralb-ble/default.nix33
-rw-r--r--pkgs/development/python-modules/orange-canvas-core/default.nix81
-rw-r--r--pkgs/development/python-modules/orange-widget-base/default.nix37
-rw-r--r--pkgs/development/python-modules/orange3/default.nix158
-rw-r--r--pkgs/development/python-modules/oras/default.nix4
-rw-r--r--pkgs/development/python-modules/orbax-checkpoint/default.nix56
-rw-r--r--pkgs/development/python-modules/ordered-set/default.nix27
-rw-r--r--pkgs/development/python-modules/orderedmultidict/default.nix17
-rw-r--r--pkgs/development/python-modules/orderedset/default.nix8
-rw-r--r--pkgs/development/python-modules/orgparse/default.nix11
-rw-r--r--pkgs/development/python-modules/orjson/default.nix84
-rw-r--r--pkgs/development/python-modules/orm/default.nix27
-rw-r--r--pkgs/development/python-modules/ormar/default.nix117
-rw-r--r--pkgs/development/python-modules/orvibo/default.nix7
-rw-r--r--pkgs/development/python-modules/os-client-config/default.nix62
-rw-r--r--pkgs/development/python-modules/os-service-types/default.nix18
-rw-r--r--pkgs/development/python-modules/os-service-types/tests.nix15
-rw-r--r--pkgs/development/python-modules/osc-diagram/default.nix16
-rw-r--r--pkgs/development/python-modules/osc-lib/default.nix41
-rw-r--r--pkgs/development/python-modules/osc-placement/default.nix73
-rw-r--r--pkgs/development/python-modules/osc-sdk-python/default.nix34
-rw-r--r--pkgs/development/python-modules/osc/default.nix44
-rw-r--r--pkgs/development/python-modules/oschmod/default.nix31
-rw-r--r--pkgs/development/python-modules/oscpy/default.nix10
-rw-r--r--pkgs/development/python-modules/oscrypto/default.nix35
-rw-r--r--pkgs/development/python-modules/oscscreen/default.nix12
-rw-r--r--pkgs/development/python-modules/oset/default.nix7
-rw-r--r--pkgs/development/python-modules/oslo-concurrency/default.nix52
-rw-r--r--pkgs/development/python-modules/oslo-config/default.nix38
-rw-r--r--pkgs/development/python-modules/oslo-config/tests.nix21
-rw-r--r--pkgs/development/python-modules/oslo-context/default.nix22
-rw-r--r--pkgs/development/python-modules/oslo-db/default.nix41
-rw-r--r--pkgs/development/python-modules/oslo-i18n/default.nix23
-rw-r--r--pkgs/development/python-modules/oslo-log/default.nix51
-rw-r--r--pkgs/development/python-modules/oslo-serialization/default.nix44
-rw-r--r--pkgs/development/python-modules/oslo-utils/default.nix55
-rw-r--r--pkgs/development/python-modules/oslotest/default.nix21
-rw-r--r--pkgs/development/python-modules/oslotest/tests.nix9
-rw-r--r--pkgs/development/python-modules/osmnx/default.nix62
-rw-r--r--pkgs/development/python-modules/osmpythontools/default.nix25
-rw-r--r--pkgs/development/python-modules/ospd/default.nix33
-rw-r--r--pkgs/development/python-modules/osprofiler/default.nix54
-rw-r--r--pkgs/development/python-modules/osqp/default.nix68
-rw-r--r--pkgs/development/python-modules/oss2/default.nix35
-rw-r--r--pkgs/development/python-modules/ossfs/default.nix23
-rw-r--r--pkgs/development/python-modules/osxphotos/default.nix112
-rw-r--r--pkgs/development/python-modules/ots-python/default.nix27
-rw-r--r--pkgs/development/python-modules/outcome/default.nix27
-rw-r--r--pkgs/development/python-modules/outdated/default.nix40
-rw-r--r--pkgs/development/python-modules/outlines/default.nix52
-rw-r--r--pkgs/development/python-modules/outspin/default.nix32
-rw-r--r--pkgs/development/python-modules/overly/default.nix19
-rw-r--r--pkgs/development/python-modules/overpy/default.nix21
-rw-r--r--pkgs/development/python-modules/overrides/default.nix27
-rw-r--r--pkgs/development/python-modules/ovh/default.nix39
-rw-r--r--pkgs/development/python-modules/ovmfvartool/default.nix12
-rw-r--r--pkgs/development/python-modules/ovoenergy/default.nix10
-rw-r--r--pkgs/development/python-modules/owslib/default.nix56
-rw-r--r--pkgs/development/python-modules/oyaml/default.nix25
-rw-r--r--pkgs/development/python-modules/p1monitor/default.nix33
-rw-r--r--pkgs/development/python-modules/pa-ringbuffer/default.nix6
-rw-r--r--pkgs/development/python-modules/packageurl-python/default.nix32
-rw-r--r--pkgs/development/python-modules/packaging-legacy/default.nix43
-rw-r--r--pkgs/development/python-modules/packaging/default.nix36
-rw-r--r--pkgs/development/python-modules/packbits/default.nix12
-rw-r--r--pkgs/development/python-modules/packet-python/default.nix30
-rw-r--r--pkgs/development/python-modules/packvers/default.nix28
-rw-r--r--pkgs/development/python-modules/pad4pi/default.nix7
-rw-r--r--pkgs/development/python-modules/paddle-bfloat/default.nix19
-rw-r--r--pkgs/development/python-modules/paddle2onnx/default.nix35
-rw-r--r--pkgs/development/python-modules/paddleocr/default.nix67
-rw-r--r--pkgs/development/python-modules/paddlepaddle/default.nix100
-rw-r--r--pkgs/development/python-modules/pagelabels/default.nix13
-rw-r--r--pkgs/development/python-modules/paginate/default.nix33
-rw-r--r--pkgs/development/python-modules/paho-mqtt/1.nix42
-rw-r--r--pkgs/development/python-modules/paho-mqtt/default.nix63
-rw-r--r--pkgs/development/python-modules/paintcompiler/default.nix41
-rw-r--r--pkgs/development/python-modules/palace/default.nix22
-rw-r--r--pkgs/development/python-modules/palettable/default.nix23
-rw-r--r--pkgs/development/python-modules/pallets-sphinx-themes/default.nix17
-rw-r--r--pkgs/development/python-modules/pamela/default.nix12
-rw-r--r--pkgs/development/python-modules/pamqp/default.nix21
-rw-r--r--pkgs/development/python-modules/panacotta/default.nix13
-rw-r--r--pkgs/development/python-modules/panasonic-viera/default.nix25
-rw-r--r--pkgs/development/python-modules/pandantic/default.nix48
-rw-r--r--pkgs/development/python-modules/pandas-datareader/default.nix34
-rw-r--r--pkgs/development/python-modules/pandas-stubs/default.nix111
-rw-r--r--pkgs/development/python-modules/pandas/default.nix491
-rw-r--r--pkgs/development/python-modules/pandoc-attributes/default.nix15
-rw-r--r--pkgs/development/python-modules/pandoc-latex-environment/default.nix42
-rw-r--r--pkgs/development/python-modules/pandoc-xnos/default.nix23
-rw-r--r--pkgs/development/python-modules/pandocfilters/default.nix12
-rw-r--r--pkgs/development/python-modules/panel/default.nix49
-rw-r--r--pkgs/development/python-modules/panflute/default.nix19
-rw-r--r--pkgs/development/python-modules/panphon/default.nix48
-rw-r--r--pkgs/development/python-modules/paperbush/default.nix29
-rw-r--r--pkgs/development/python-modules/papermill/default.nix117
-rw-r--r--pkgs/development/python-modules/papis-python-rofi/default.nix8
-rw-r--r--pkgs/development/python-modules/papis/default.nix81
-rw-r--r--pkgs/development/python-modules/para/default.nix28
-rw-r--r--pkgs/development/python-modules/paragraphs/default.nix42
-rw-r--r--pkgs/development/python-modules/param/default.nix42
-rw-r--r--pkgs/development/python-modules/parameter-expansion-patched/default.nix25
-rw-r--r--pkgs/development/python-modules/parameterized/default.nix29
-rw-r--r--pkgs/development/python-modules/parametrize-from-file/default.nix37
-rw-r--r--pkgs/development/python-modules/paramiko/default.nix45
-rw-r--r--pkgs/development/python-modules/paramz/default.nix48
-rw-r--r--pkgs/development/python-modules/paranoid-crypto/default.nix31
-rw-r--r--pkgs/development/python-modules/parfive/default.nix39
-rw-r--r--pkgs/development/python-modules/parse-type/default.nix21
-rw-r--r--pkgs/development/python-modules/parse/default.nix22
-rw-r--r--pkgs/development/python-modules/parsedatetime/default.nix15
-rw-r--r--pkgs/development/python-modules/parsedmarc/default.nix81
-rw-r--r--pkgs/development/python-modules/parsel/default.nix42
-rw-r--r--pkgs/development/python-modules/parsimonious/default.nix23
-rw-r--r--pkgs/development/python-modules/parsley/default.nix9
-rw-r--r--pkgs/development/python-modules/parso/default.nix20
-rw-r--r--pkgs/development/python-modules/parsy/default.nix19
-rw-r--r--pkgs/development/python-modules/partd/default.nix43
-rw-r--r--pkgs/development/python-modules/particle/default.nix49
-rw-r--r--pkgs/development/python-modules/parts/default.nix21
-rw-r--r--pkgs/development/python-modules/parver/default.nix33
-rw-r--r--pkgs/development/python-modules/pasimple/default.nix17
-rw-r--r--pkgs/development/python-modules/passlib/default.nix48
-rw-r--r--pkgs/development/python-modules/paste/default.nix30
-rw-r--r--pkgs/development/python-modules/pastedeploy/default.nix19
-rw-r--r--pkgs/development/python-modules/pastel/default.nix7
-rw-r--r--pkgs/development/python-modules/pastescript/default.nix45
-rw-r--r--pkgs/development/python-modules/patator/default.nix37
-rw-r--r--pkgs/development/python-modules/patch-ng/default.nix14
-rw-r--r--pkgs/development/python-modules/patch/default.nix10
-rw-r--r--pkgs/development/python-modules/path-and-address/default.nix12
-rw-r--r--pkgs/development/python-modules/path/default.nix27
-rw-r--r--pkgs/development/python-modules/pathable/default.nix25
-rw-r--r--pkgs/development/python-modules/pathlib-abc/default.nix27
-rw-r--r--pkgs/development/python-modules/pathlib/default.nix27
-rw-r--r--pkgs/development/python-modules/pathlib2/default.nix33
-rw-r--r--pkgs/development/python-modules/pathos/default.nix23
-rw-r--r--pkgs/development/python-modules/pathspec/default.nix43
-rw-r--r--pkgs/development/python-modules/pathtools/default.nix12
-rw-r--r--pkgs/development/python-modules/pathvalidate/default.nix19
-rw-r--r--pkgs/development/python-modules/pathy/default.nix39
-rw-r--r--pkgs/development/python-modules/patiencediff/default.nix29
-rw-r--r--pkgs/development/python-modules/patool/default.nix41
-rw-r--r--pkgs/development/python-modules/patrowl4py/default.nix43
-rw-r--r--pkgs/development/python-modules/patsy/default.nix32
-rw-r--r--pkgs/development/python-modules/paver/default.nix46
-rw-r--r--pkgs/development/python-modules/paypal-checkout-serversdk/default.nix21
-rw-r--r--pkgs/development/python-modules/paypalhttp/default.nix30
-rw-r--r--pkgs/development/python-modules/paypalrestsdk/default.nix27
-rw-r--r--pkgs/development/python-modules/pbar/default.nix29
-rw-r--r--pkgs/development/python-modules/pbkdf2/default.nix6
-rw-r--r--pkgs/development/python-modules/pbr/default.nix15
-rw-r--r--pkgs/development/python-modules/pbr/tests.nix21
-rw-r--r--pkgs/development/python-modules/pbs-installer/default.nix35
-rw-r--r--pkgs/development/python-modules/pbxproj/default.nix43
-rw-r--r--pkgs/development/python-modules/pc-ble-driver-py/default.nix32
-rw-r--r--pkgs/development/python-modules/pcapy-ng/default.nix34
-rw-r--r--pkgs/development/python-modules/pcbnewtransition/default.nix34
-rw-r--r--pkgs/development/python-modules/pcffont/default.nix45
-rw-r--r--pkgs/development/python-modules/pcodedmp/default.nix14
-rw-r--r--pkgs/development/python-modules/pcpp/default.nix13
-rw-r--r--pkgs/development/python-modules/pdb2pqr/default.nix37
-rw-r--r--pkgs/development/python-modules/pdbfixer/default.nix21
-rw-r--r--pkgs/development/python-modules/pdf2docx/default.nix40
-rw-r--r--pkgs/development/python-modules/pdf2image/default.nix21
-rw-r--r--pkgs/development/python-modules/pdfkit/default.nix8
-rw-r--r--pkgs/development/python-modules/pdfminer-six/default.nix58
-rw-r--r--pkgs/development/python-modules/pdfminer-six/disable-setuptools-git-versioning.patch6
-rw-r--r--pkgs/development/python-modules/pdfplumber/default.nix43
-rw-r--r--pkgs/development/python-modules/pdfrw/default.nix10
-rw-r--r--pkgs/development/python-modules/pdfrw2/default.nix21
-rw-r--r--pkgs/development/python-modules/pdftotext/default.nix7
-rw-r--r--pkgs/development/python-modules/pdfx/default.nix16
-rw-r--r--pkgs/development/python-modules/pdm-backend/default.nix49
-rw-r--r--pkgs/development/python-modules/pdm-build-locked/default.nix57
-rw-r--r--pkgs/development/python-modules/pdm-pep517/default.nix16
-rw-r--r--pkgs/development/python-modules/pdoc-pyo3-sample-library/default.nix25
-rw-r--r--pkgs/development/python-modules/pdoc/default.nix33
-rw-r--r--pkgs/development/python-modules/pdoc3/default.nix68
-rw-r--r--pkgs/development/python-modules/pdunehd/default.nix15
-rw-r--r--pkgs/development/python-modules/peaqevcore/default.nix4
-rw-r--r--pkgs/development/python-modules/pebble/default.nix23
-rw-r--r--pkgs/development/python-modules/pecan/default.nix39
-rw-r--r--pkgs/development/python-modules/peco/default.nix32
-rw-r--r--pkgs/development/python-modules/peewee-migrate/default.nix43
-rw-r--r--pkgs/development/python-modules/peewee/default.nix57
-rw-r--r--pkgs/development/python-modules/pefile/default.nix39
-rw-r--r--pkgs/development/python-modules/peft/default.nix35
-rw-r--r--pkgs/development/python-modules/pegen/default.nix41
-rw-r--r--pkgs/development/python-modules/pelican/default.nix83
-rw-r--r--pkgs/development/python-modules/pem/default.nix31
-rw-r--r--pkgs/development/python-modules/pencompy/default.nix13
-rw-r--r--pkgs/development/python-modules/pendulum/default.nix84
-rw-r--r--pkgs/development/python-modules/pep440/default.nix25
-rw-r--r--pkgs/development/python-modules/pep517/default.nix42
-rw-r--r--pkgs/development/python-modules/pep8-naming/default.nix27
-rw-r--r--pkgs/development/python-modules/pep8/default.nix10
-rw-r--r--pkgs/development/python-modules/peppercorn/default.nix10
-rw-r--r--pkgs/development/python-modules/percol/default.nix7
-rw-r--r--pkgs/development/python-modules/perfplot/default.nix39
-rw-r--r--pkgs/development/python-modules/periodictable/default.nix27
-rw-r--r--pkgs/development/python-modules/periodiq/default.nix30
-rw-r--r--pkgs/development/python-modules/permissionedforms/default.nix19
-rw-r--r--pkgs/development/python-modules/persim/default.nix39
-rw-r--r--pkgs/development/python-modules/persist-queue/default.nix19
-rw-r--r--pkgs/development/python-modules/persistent/default.nix44
-rw-r--r--pkgs/development/python-modules/persisting-theory/default.nix13
-rw-r--r--pkgs/development/python-modules/pescea/default.nix27
-rw-r--r--pkgs/development/python-modules/pettingzoo/default.nix132
-rw-r--r--pkgs/development/python-modules/pex/default.nix28
-rw-r--r--pkgs/development/python-modules/pexif/default.nix10
-rw-r--r--pkgs/development/python-modules/pexpect/default.nix22
-rw-r--r--pkgs/development/python-modules/pfzy/default.nix19
-rw-r--r--pkgs/development/python-modules/pg8000/default.nix43
-rw-r--r--pkgs/development/python-modules/pgcli/default.nix60
-rw-r--r--pkgs/development/python-modules/pglast/default.nix28
-rw-r--r--pkgs/development/python-modules/pgmpy/default.nix87
-rw-r--r--pkgs/development/python-modules/pgpdump/default.nix8
-rw-r--r--pkgs/development/python-modules/pgpy/default.nix30
-rw-r--r--pkgs/development/python-modules/pgsanity/default.nix17
-rw-r--r--pkgs/development/python-modules/pgspecial/default.nix36
-rw-r--r--pkgs/development/python-modules/pgvector/default.nix37
-rw-r--r--pkgs/development/python-modules/phe/default.nix53
-rw-r--r--pkgs/development/python-modules/phik/default.nix83
-rw-r--r--pkgs/development/python-modules/phone-modem/default.nix15
-rw-r--r--pkgs/development/python-modules/phonemizer/default.nix27
-rw-r--r--pkgs/development/python-modules/phonenumbers/default.nix27
-rw-r--r--pkgs/development/python-modules/phonenumberslite/default.nix14
-rw-r--r--pkgs/development/python-modules/phonopy/default.nix41
-rw-r--r--pkgs/development/python-modules/photutils/default.nix86
-rw-r--r--pkgs/development/python-modules/phply/default.nix35
-rw-r--r--pkgs/development/python-modules/phpserialize/default.nix8
-rw-r--r--pkgs/development/python-modules/phunspell/default.nix53
-rw-r--r--pkgs/development/python-modules/phx-class-registry/default.nix24
-rw-r--r--pkgs/development/python-modules/pi1wire/default.nix13
-rw-r--r--pkgs/development/python-modules/piano-transcription-inference/default.nix24
-rw-r--r--pkgs/development/python-modules/piccata/default.nix19
-rw-r--r--pkgs/development/python-modules/piccolo-theme/default.nix30
-rw-r--r--pkgs/development/python-modules/pick/default.nix4
-rw-r--r--pkgs/development/python-modules/pickleshare/default.nix15
-rw-r--r--pkgs/development/python-modules/picobox/default.nix21
-rw-r--r--pkgs/development/python-modules/picos/default.nix21
-rw-r--r--pkgs/development/python-modules/picosvg/default.nix29
-rw-r--r--pkgs/development/python-modules/pid/default.nix29
-rw-r--r--pkgs/development/python-modules/piep/default.nix29
-rw-r--r--pkgs/development/python-modules/piexif/default.nix8
-rw-r--r--pkgs/development/python-modules/pijuice/default.nix18
-rw-r--r--pkgs/development/python-modules/pika-pool/default.nix20
-rw-r--r--pkgs/development/python-modules/pika/default.nix31
-rw-r--r--pkgs/development/python-modules/pikepdf/default.nix61
-rw-r--r--pkgs/development/python-modules/pikepdf/paths.patch16
-rw-r--r--pkgs/development/python-modules/pilkit/default.nix31
-rw-r--r--pkgs/development/python-modules/pillow-heif/default.nix114
-rw-r--r--pkgs/development/python-modules/pillow-jpls/default.nix71
-rw-r--r--pkgs/development/python-modules/pillow-simd/default.nix86
-rw-r--r--pkgs/development/python-modules/pillow/default.nix104
-rw-r--r--pkgs/development/python-modules/pillow/generic.nix126
-rw-r--r--pkgs/development/python-modules/pillowfight/default.nix10
-rw-r--r--pkgs/development/python-modules/pims/default.nix29
-rw-r--r--pkgs/development/python-modules/pinboard/default.nix8
-rw-r--r--pkgs/development/python-modules/pinecone-client/default.nix49
-rw-r--r--pkgs/development/python-modules/ping3/default.nix1
-rw-r--r--pkgs/development/python-modules/pins/default.nix79
-rw-r--r--pkgs/development/python-modules/pint-pandas/default.nix48
-rw-r--r--pkgs/development/python-modules/pint/default.nix83
-rw-r--r--pkgs/development/python-modules/pip-api/default.nix35
-rw-r--r--pkgs/development/python-modules/pip-chill/default.nix47
-rw-r--r--pkgs/development/python-modules/pip-requirements-parser/default.nix29
-rw-r--r--pkgs/development/python-modules/pip-system-certs/default.nix20
-rw-r--r--pkgs/development/python-modules/pip-tools/default.nix47
-rw-r--r--pkgs/development/python-modules/pip/default.nix72
-rw-r--r--pkgs/development/python-modules/pipdate/default.nix33
-rw-r--r--pkgs/development/python-modules/pipdeptree/default.nix10
-rw-r--r--pkgs/development/python-modules/pipenv-poetry-migrate/default.nix31
-rw-r--r--pkgs/development/python-modules/piper-phonemize/default.nix15
-rw-r--r--pkgs/development/python-modules/pipetools/default.nix32
-rw-r--r--pkgs/development/python-modules/pipx/default.nix60
-rw-r--r--pkgs/development/python-modules/pivy/default.nix39
-rw-r--r--pkgs/development/python-modules/pixcat/default.nix17
-rw-r--r--pkgs/development/python-modules/pixel-font-builder/default.nix59
-rw-r--r--pkgs/development/python-modules/pixel-ring/default.nix15
-rw-r--r--pkgs/development/python-modules/pixelmatch/default.nix50
-rw-r--r--pkgs/development/python-modules/pkce/default.nix9
-rw-r--r--pkgs/development/python-modules/pkg-about/default.nix29
-rw-r--r--pkgs/development/python-modules/pkgconfig/default.nix15
-rw-r--r--pkgs/development/python-modules/pkginfo/default.nix23
-rw-r--r--pkgs/development/python-modules/pkginfo2/default.nix19
-rw-r--r--pkgs/development/python-modules/pkgutil-resolve-name/default.nix24
-rw-r--r--pkgs/development/python-modules/pkuseg/default.nix15
-rw-r--r--pkgs/development/python-modules/pkutils/default.nix56
-rw-r--r--pkgs/development/python-modules/plac/default.nix17
-rw-r--r--pkgs/development/python-modules/plaid-python/default.nix33
-rw-r--r--pkgs/development/python-modules/plantuml-markdown/default.nix36
-rw-r--r--pkgs/development/python-modules/plantuml/default.nix11
-rw-r--r--pkgs/development/python-modules/plasTeX/default.nix42
-rw-r--r--pkgs/development/python-modules/plaster-pastedeploy/default.nix20
-rw-r--r--pkgs/development/python-modules/plaster/default.nix12
-rw-r--r--pkgs/development/python-modules/plastexdepgraph/default.nix38
-rw-r--r--pkgs/development/python-modules/plastexshowmore/default.nix35
-rw-r--r--pkgs/development/python-modules/platformdirs/default.nix35
-rw-r--r--pkgs/development/python-modules/playsound/default.nix7
-rw-r--r--pkgs/development/python-modules/playwright-stealth/default.nix25
-rw-r--r--pkgs/development/python-modules/playwright/default.nix79
-rw-r--r--pkgs/development/python-modules/playwright/driver-location.patch33
-rwxr-xr-xpkgs/development/python-modules/playwright/update.sh97
-rw-r--r--pkgs/development/python-modules/playwrightcapture/default.nix14
-rw-r--r--pkgs/development/python-modules/pleroma-bot/default.nix25
-rw-r--r--pkgs/development/python-modules/plexapi/default.nix29
-rw-r--r--pkgs/development/python-modules/plexauth/default.nix12
-rw-r--r--pkgs/development/python-modules/plexwebsocket/default.nix19
-rw-r--r--pkgs/development/python-modules/plone-testing/default.nix21
-rw-r--r--pkgs/development/python-modules/ploomber-core/default.nix49
-rw-r--r--pkgs/development/python-modules/ploomber-extension/default.nix51
-rw-r--r--pkgs/development/python-modules/plotext/default.nix7
-rw-r--r--pkgs/development/python-modules/plotly/default.nix41
-rw-r--r--pkgs/development/python-modules/plotnine/default.nix18
-rw-r--r--pkgs/development/python-modules/pluggy/default.nix20
-rw-r--r--pkgs/development/python-modules/pluggy/tests.nix7
-rw-r--r--pkgs/development/python-modules/pluginbase/default.nix9
-rw-r--r--pkgs/development/python-modules/plugincode/default.nix30
-rw-r--r--pkgs/development/python-modules/plugnplay/default.nix13
-rw-r--r--pkgs/development/python-modules/plugp100/default.nix49
-rw-r--r--pkgs/development/python-modules/plugwise/default.nix24
-rw-r--r--pkgs/development/python-modules/plum-py/default.nix21
-rw-r--r--pkgs/development/python-modules/plumbum/default.nix27
-rw-r--r--pkgs/development/python-modules/pluthon/default.nix23
-rw-r--r--pkgs/development/python-modules/plux/default.nix36
-rw-r--r--pkgs/development/python-modules/ply/default.nix9
-rw-r--r--pkgs/development/python-modules/plyer/default.nix17
-rw-r--r--pkgs/development/python-modules/plyfile/default.nix34
-rw-r--r--pkgs/development/python-modules/plyplus/default.nix10
-rw-r--r--pkgs/development/python-modules/plyvel/default.nix13
-rw-r--r--pkgs/development/python-modules/pmdarima/default.nix35
-rw-r--r--pkgs/development/python-modules/pmdsky-debug-py/default.nix11
-rw-r--r--pkgs/development/python-modules/pmsensor/default.nix13
-rw-r--r--pkgs/development/python-modules/pmw/default.nix9
-rw-r--r--pkgs/development/python-modules/pnglatex/default.nix10
-rw-r--r--pkgs/development/python-modules/pocket/default.nix14
-rw-r--r--pkgs/development/python-modules/podcastparser/default.nix19
-rw-r--r--pkgs/development/python-modules/podcats/default.nix22
-rw-r--r--pkgs/development/python-modules/podman/default.nix51
-rw-r--r--pkgs/development/python-modules/poetry-core/default.nix35
-rw-r--r--pkgs/development/python-modules/poetry-dynamic-versioning/default.nix33
-rw-r--r--pkgs/development/python-modules/poetry-semver/default.nix11
-rw-r--r--pkgs/development/python-modules/polarizationsolver/default.nix16
-rw-r--r--pkgs/development/python-modules/polars/Cargo.lock2138
-rw-r--r--pkgs/development/python-modules/polars/default.nix90
-rw-r--r--pkgs/development/python-modules/polib/default.nix8
-rw-r--r--pkgs/development/python-modules/policy-sentry/default.nix8
-rw-r--r--pkgs/development/python-modules/policyuniverse/default.nix13
-rw-r--r--pkgs/development/python-modules/polling/default.nix21
-rw-r--r--pkgs/development/python-modules/polygon3/default.nix9
-rw-r--r--pkgs/development/python-modules/polyline/default.nix23
-rw-r--r--pkgs/development/python-modules/polyswarm-api/default.nix6
-rw-r--r--pkgs/development/python-modules/pomegranate/default.nix33
-rw-r--r--pkgs/development/python-modules/pontos/default.nix47
-rw-r--r--pkgs/development/python-modules/pony/default.nix38
-rw-r--r--pkgs/development/python-modules/ponywhoosh/default.nix8
-rw-r--r--pkgs/development/python-modules/pooch/default.nix41
-rw-r--r--pkgs/development/python-modules/pook/default.nix35
-rw-r--r--pkgs/development/python-modules/poolsense/default.nix9
-rw-r--r--pkgs/development/python-modules/poppler-qt5/default.nix43
-rw-r--r--pkgs/development/python-modules/port-for/default.nix17
-rw-r--r--pkgs/development/python-modules/portalocker/default.nix43
-rw-r--r--pkgs/development/python-modules/portend/default.nix18
-rw-r--r--pkgs/development/python-modules/portion/default.nix37
-rw-r--r--pkgs/development/python-modules/portpicker/default.nix27
-rw-r--r--pkgs/development/python-modules/posix-ipc/default.nix15
-rw-r--r--pkgs/development/python-modules/posthog/default.nix35
-rw-r--r--pkgs/development/python-modules/pot/default.nix104
-rw-r--r--pkgs/development/python-modules/potentials/default.nix1
-rw-r--r--pkgs/development/python-modules/potr/default.nix11
-rw-r--r--pkgs/development/python-modules/power/default.nix10
-rw-r--r--pkgs/development/python-modules/powerline-mem-segment/default.nix11
-rw-r--r--pkgs/development/python-modules/powerline/default.nix33
-rw-r--r--pkgs/development/python-modules/pox/default.nix15
-rw-r--r--pkgs/development/python-modules/poyo/default.nix10
-rw-r--r--pkgs/development/python-modules/ppdeep/default.nix7
-rw-r--r--pkgs/development/python-modules/ppft/default.nix27
-rw-r--r--pkgs/development/python-modules/ppk2-api/default.nix40
-rw-r--r--pkgs/development/python-modules/pplpy/default.nix39
-rw-r--r--pkgs/development/python-modules/pprintpp/default.nix37
-rw-r--r--pkgs/development/python-modules/pproxy/default.nix23
-rw-r--r--pkgs/development/python-modules/ppscore/default.nix27
-rw-r--r--pkgs/development/python-modules/pq/default.nix11
-rw-r--r--pkgs/development/python-modules/prance/default.nix60
-rw-r--r--pkgs/development/python-modules/praw/default.nix31
-rw-r--r--pkgs/development/python-modules/prawcore/default.nix39
-rw-r--r--pkgs/development/python-modules/prayer-times-calculator-offline/default.nix34
-rw-r--r--pkgs/development/python-modules/prayer-times-calculator/default.nix45
-rw-r--r--pkgs/development/python-modules/pre-commit-hooks/default.nix31
-rw-r--r--pkgs/development/python-modules/precis-i18n/default.nix15
-rw-r--r--pkgs/development/python-modules/prefixed/default.nix23
-rw-r--r--pkgs/development/python-modules/preggy/default.nix20
-rw-r--r--pkgs/development/python-modules/premailer/default.nix29
-rw-r--r--pkgs/development/python-modules/preprocess-cancellation/default.nix25
-rw-r--r--pkgs/development/python-modules/preshed/default.nix32
-rw-r--r--pkgs/development/python-modules/pretend/default.nix21
-rw-r--r--pkgs/development/python-modules/pretty-errors/default.nix39
-rw-r--r--pkgs/development/python-modules/prettytable/default.nix36
-rw-r--r--pkgs/development/python-modules/primecountpy/default.nix25
-rw-r--r--pkgs/development/python-modules/primepy/default.nix11
-rw-r--r--pkgs/development/python-modules/primer3/default.nix29
-rw-r--r--pkgs/development/python-modules/print-color/default.nix40
-rw-r--r--pkgs/development/python-modules/priority/default.nix19
-rw-r--r--pkgs/development/python-modules/prisma/default.nix46
-rw-r--r--pkgs/development/python-modules/prison/default.nix24
-rw-r--r--pkgs/development/python-modules/private-gpt/default.nix108
-rw-r--r--pkgs/development/python-modules/proboscis/default.nix21
-rw-r--r--pkgs/development/python-modules/process-tests/default.nix21
-rw-r--r--pkgs/development/python-modules/procmon-parser/default.nix21
-rw-r--r--pkgs/development/python-modules/prodict/default.nix17
-rw-r--r--pkgs/development/python-modules/proglog/default.nix7
-rw-r--r--pkgs/development/python-modules/progress/default.nix9
-rw-r--r--pkgs/development/python-modules/progressbar/default.nix6
-rw-r--r--pkgs/development/python-modules/progressbar2/default.nix29
-rw-r--r--pkgs/development/python-modules/progressbar33/default.nix6
-rw-r--r--pkgs/development/python-modules/prometheus-api-client/default.nix40
-rw-r--r--pkgs/development/python-modules/prometheus-async/default.nix65
-rw-r--r--pkgs/development/python-modules/prometheus-client/default.nix34
-rw-r--r--pkgs/development/python-modules/prometheus-fastapi-instrumentator/default.nix56
-rw-r--r--pkgs/development/python-modules/prometheus-flask-exporter/default.nix18
-rw-r--r--pkgs/development/python-modules/prometheus-pandas/default.nix21
-rw-r--r--pkgs/development/python-modules/prometrix/default.nix65
-rw-r--r--pkgs/development/python-modules/promise/default.nix31
-rw-r--r--pkgs/development/python-modules/prompt-toolkit/1.nix30
-rw-r--r--pkgs/development/python-modules/prompt-toolkit/default.nix29
-rw-r--r--pkgs/development/python-modules/prompthub-py/default.nix21
-rw-r--r--pkgs/development/python-modules/property-manager/default.nix22
-rw-r--r--pkgs/development/python-modules/prophet/default.nix38
-rw-r--r--pkgs/development/python-modules/propka/default.nix27
-rw-r--r--pkgs/development/python-modules/protego/default.nix2
-rw-r--r--pkgs/development/python-modules/proto-plus/default.nix23
-rw-r--r--pkgs/development/python-modules/protobuf/3.nix23
-rw-r--r--pkgs/development/python-modules/protobuf/4.nix131
-rw-r--r--pkgs/development/python-modules/protobuf/default.nix134
-rw-r--r--pkgs/development/python-modules/protobuf3-to-dict/default.nix15
-rw-r--r--pkgs/development/python-modules/proton-client/default.nix27
-rw-r--r--pkgs/development/python-modules/proton-core/default.nix42
-rw-r--r--pkgs/development/python-modules/proton-keyring-linux-secretservice/default.nix34
-rw-r--r--pkgs/development/python-modules/proton-keyring-linux/default.nix34
-rw-r--r--pkgs/development/python-modules/proton-vpn-api-core/default.nix61
-rw-r--r--pkgs/development/python-modules/proton-vpn-connection/default.nix38
-rw-r--r--pkgs/development/python-modules/proton-vpn-killswitch-network-manager-wireguard/default.nix67
-rw-r--r--pkgs/development/python-modules/proton-vpn-killswitch-network-manager/default.nix47
-rw-r--r--pkgs/development/python-modules/proton-vpn-killswitch/default.nix34
-rw-r--r--pkgs/development/python-modules/proton-vpn-logger/default.nix32
-rw-r--r--pkgs/development/python-modules/proton-vpn-network-manager-openvpn/default.nix39
-rw-r--r--pkgs/development/python-modules/proton-vpn-network-manager-wireguard/default.nix57
-rw-r--r--pkgs/development/python-modules/proton-vpn-network-manager/default.nix51
-rw-r--r--pkgs/development/python-modules/proton-vpn-session/default.nix42
-rw-r--r--pkgs/development/python-modules/protonup-ng/default.nix19
-rw-r--r--pkgs/development/python-modules/protonvpn-nm-lib/default.nix40
-rw-r--r--pkgs/development/python-modules/prov/default.nix29
-rw-r--r--pkgs/development/python-modules/prox-tv/default.nix44
-rw-r--r--pkgs/development/python-modules/proxmoxer/default.nix41
-rw-r--r--pkgs/development/python-modules/proxy-db/default.nix27
-rw-r--r--pkgs/development/python-modules/proxy-py/default.nix14
-rw-r--r--pkgs/development/python-modules/proxy-tools/default.nix13
-rw-r--r--pkgs/development/python-modules/psautohint/default.nix26
-rw-r--r--pkgs/development/python-modules/pscript/default.nix17
-rw-r--r--pkgs/development/python-modules/psd-tools/default.nix43
-rw-r--r--pkgs/development/python-modules/psrpcore/default.nix2
-rw-r--r--pkgs/development/python-modules/psutil-home-assistant/default.nix20
-rw-r--r--pkgs/development/python-modules/psutil/default.nix42
-rw-r--r--pkgs/development/python-modules/psychrolib/default.nix20
-rw-r--r--pkgs/development/python-modules/psycopg/ctypes.patch20
-rw-r--r--pkgs/development/python-modules/psycopg/default.nix125
-rw-r--r--pkgs/development/python-modules/psycopg2-binary/default.nix13
-rw-r--r--pkgs/development/python-modules/psycopg2/default.nix57
-rw-r--r--pkgs/development/python-modules/psycopg2cffi/default.nix68
-rw-r--r--pkgs/development/python-modules/psygnal/default.nix37
-rw-r--r--pkgs/development/python-modules/ptable/default.nix18
-rw-r--r--pkgs/development/python-modules/ptest/default.nix10
-rw-r--r--pkgs/development/python-modules/ptpython/default.nix37
-rw-r--r--pkgs/development/python-modules/ptyprocess/default.nix37
-rw-r--r--pkgs/development/python-modules/publicsuffix/default.nix2
-rw-r--r--pkgs/development/python-modules/publicsuffix2/default.nix2
-rw-r--r--pkgs/development/python-modules/publicsuffixlist/default.nix7
-rw-r--r--pkgs/development/python-modules/pubnub/default.nix8
-rw-r--r--pkgs/development/python-modules/pubnubsub-handler/default.nix15
-rw-r--r--pkgs/development/python-modules/pudb/default.nix42
-rw-r--r--pkgs/development/python-modules/pueblo/default.nix17
-rw-r--r--pkgs/development/python-modules/pulp/default.nix25
-rw-r--r--pkgs/development/python-modules/pulsar-client/default.nix45
-rw-r--r--pkgs/development/python-modules/pulsar/default.nix27
-rw-r--r--pkgs/development/python-modules/pulsectl-asyncio/default.nix4
-rw-r--r--pkgs/development/python-modules/pulsectl/default.nix25
-rw-r--r--pkgs/development/python-modules/pulumi-aws/default.nix34
-rw-r--r--pkgs/development/python-modules/pulumi/default.nix29
-rw-r--r--pkgs/development/python-modules/pure-cdb/default.nix8
-rw-r--r--pkgs/development/python-modules/pure-eval/default.nix31
-rw-r--r--pkgs/development/python-modules/pure-pcapy3/default.nix15
-rw-r--r--pkgs/development/python-modules/pure-protobuf/default.nix41
-rw-r--r--pkgs/development/python-modules/pure-python-adb-homeassistant/default.nix7
-rw-r--r--pkgs/development/python-modules/pure-python-adb/default.nix28
-rw-r--r--pkgs/development/python-modules/puremagic/default.nix4
-rw-r--r--pkgs/development/python-modules/purepng/default.nix21
-rw-r--r--pkgs/development/python-modules/purl/default.nix25
-rw-r--r--pkgs/development/python-modules/push-receiver/default.nix15
-rw-r--r--pkgs/development/python-modules/pushbullet-py/default.nix51
-rw-r--r--pkgs/development/python-modules/pushover-complete/default.nix22
-rw-r--r--pkgs/development/python-modules/pvextractor/default.nix36
-rw-r--r--pkgs/development/python-modules/pvlib/default.nix57
-rw-r--r--pkgs/development/python-modules/pvo/default.nix33
-rw-r--r--pkgs/development/python-modules/pweave/default.nix34
-rw-r--r--pkgs/development/python-modules/pwinput/default.nix35
-rw-r--r--pkgs/development/python-modules/pwkit/default.nix4
-rw-r--r--pkgs/development/python-modules/pwlf/default.nix23
-rw-r--r--pkgs/development/python-modules/pwndbg/default.nix68
-rw-r--r--pkgs/development/python-modules/pwntools/default.nix94
-rw-r--r--pkgs/development/python-modules/pxml/default.nix37
-rw-r--r--pkgs/development/python-modules/py-air-control-exporter/default.nix29
-rw-r--r--pkgs/development/python-modules/py-air-control/default.nix16
-rw-r--r--pkgs/development/python-modules/py-aosmith/default.nix19
-rw-r--r--pkgs/development/python-modules/py-bip39-bindings/default.nix38
-rw-r--r--pkgs/development/python-modules/py-canary/default.nix35
-rw-r--r--pkgs/development/python-modules/py-ccm15/default.nix45
-rw-r--r--pkgs/development/python-modules/py-cid/default.nix23
-rw-r--r--pkgs/development/python-modules/py-cpuinfo/default.nix35
-rw-r--r--pkgs/development/python-modules/py-deprecate/default.nix18
-rw-r--r--pkgs/development/python-modules/py-desmume/default.nix39
-rw-r--r--pkgs/development/python-modules/py-dmidecode/default.nix25
-rw-r--r--pkgs/development/python-modules/py-dormakaba-dkey/default.nix25
-rw-r--r--pkgs/development/python-modules/py-ecc/default.nix31
-rw-r--r--pkgs/development/python-modules/py-eth-sig-utils/default.nix19
-rw-r--r--pkgs/development/python-modules/py-expression-eval/default.nix3
-rw-r--r--pkgs/development/python-modules/py-libzfs/default.nix34
-rw-r--r--pkgs/development/python-modules/py-lru-cache/default.nix10
-rw-r--r--pkgs/development/python-modules/py-machineid/default.nix31
-rw-r--r--pkgs/development/python-modules/py-madvr2/default.nix41
-rw-r--r--pkgs/development/python-modules/py-multiaddr/default.nix32
-rw-r--r--pkgs/development/python-modules/py-multibase/default.nix25
-rw-r--r--pkgs/development/python-modules/py-multicodec/default.nix25
-rw-r--r--pkgs/development/python-modules/py-multihash/default.nix28
-rw-r--r--pkgs/development/python-modules/py-nextbusnext/default.nix34
-rw-r--r--pkgs/development/python-modules/py-nightscout/default.nix26
-rw-r--r--pkgs/development/python-modules/py-opensonic/default.nix37
-rw-r--r--pkgs/development/python-modules/py-partiql-parser/default.nix25
-rw-r--r--pkgs/development/python-modules/py-pdf-parser/default.nix25
-rw-r--r--pkgs/development/python-modules/py-radix-sr/default.nix16
-rw-r--r--pkgs/development/python-modules/py-scrypt/default.nix11
-rw-r--r--pkgs/development/python-modules/py-serializable/default.nix6
-rw-r--r--pkgs/development/python-modules/py-slvs/default.nix50
-rw-r--r--pkgs/development/python-modules/py-sneakers/default.nix13
-rw-r--r--pkgs/development/python-modules/py-sonic/default.nix9
-rw-r--r--pkgs/development/python-modules/py-sr25519-bindings/default.nix36
-rw-r--r--pkgs/development/python-modules/py-stringmatching/default.nix33
-rw-r--r--pkgs/development/python-modules/py-sucks/default.nix57
-rw-r--r--pkgs/development/python-modules/py-synologydsm-api/default.nix41
-rw-r--r--pkgs/development/python-modules/py-tes/default.nix25
-rw-r--r--pkgs/development/python-modules/py-ubjson/default.nix21
-rw-r--r--pkgs/development/python-modules/py-vapid/default.nix28
-rw-r--r--pkgs/development/python-modules/py-zabbix/default.nix31
-rw-r--r--pkgs/development/python-modules/py/default.nix11
-rw-r--r--pkgs/development/python-modules/py17track/default.nix76
-rw-r--r--pkgs/development/python-modules/py2bit/default.nix11
-rw-r--r--pkgs/development/python-modules/py3buddy/default.nix19
-rw-r--r--pkgs/development/python-modules/py3dns/default.nix8
-rw-r--r--pkgs/development/python-modules/py3exiv2/default.nix25
-rw-r--r--pkgs/development/python-modules/py3langid/default.nix21
-rw-r--r--pkgs/development/python-modules/py3nvml/default.nix18
-rw-r--r--pkgs/development/python-modules/py3rijndael/default.nix13
-rw-r--r--pkgs/development/python-modules/py3status/default.nix55
-rw-r--r--pkgs/development/python-modules/py4j/default.nix8
-rw-r--r--pkgs/development/python-modules/py65/default.nix36
-rw-r--r--pkgs/development/python-modules/pyTelegramBotAPI/default.nix4
-rw-r--r--pkgs/development/python-modules/pyacaia-async/default.nix28
-rw-r--r--pkgs/development/python-modules/pyacoustid/default.nix22
-rw-r--r--pkgs/development/python-modules/pyads/default.nix4
-rw-r--r--pkgs/development/python-modules/pyaehw4a1/default.nix9
-rw-r--r--pkgs/development/python-modules/pyaes/default.nix6
-rw-r--r--pkgs/development/python-modules/pyaftership/default.nix25
-rw-r--r--pkgs/development/python-modules/pyahocorasick/default.nix20
-rw-r--r--pkgs/development/python-modules/pyairnow/default.nix51
-rw-r--r--pkgs/development/python-modules/pyairports/default.nix30
-rw-r--r--pkgs/development/python-modules/pyairvisual/default.nix37
-rw-r--r--pkgs/development/python-modules/pyais/default.nix49
-rw-r--r--pkgs/development/python-modules/pyalgotrade/default.nix43
-rw-r--r--pkgs/development/python-modules/pyamg/default.nix33
-rw-r--r--pkgs/development/python-modules/pyaml-env/default.nix37
-rw-r--r--pkgs/development/python-modules/pyaml/default.nix31
-rw-r--r--pkgs/development/python-modules/pyannotate/default.nix21
-rw-r--r--pkgs/development/python-modules/pyannote-audio/default.nix83
-rw-r--r--pkgs/development/python-modules/pyannote-core/default.nix44
-rw-r--r--pkgs/development/python-modules/pyannote-database/default.nix43
-rw-r--r--pkgs/development/python-modules/pyannote-metrics/default.nix60
-rw-r--r--pkgs/development/python-modules/pyannote-pipeline/default.nix50
-rw-r--r--pkgs/development/python-modules/pyaprilaire/default.nix41
-rw-r--r--pkgs/development/python-modules/pyarlo/default.nix17
-rw-r--r--pkgs/development/python-modules/pyarr/default.nix29
-rw-r--r--pkgs/development/python-modules/pyarrow-hotfix/default.nix19
-rw-r--r--pkgs/development/python-modules/pyarrow/default.nix182
-rw-r--r--pkgs/development/python-modules/pyasn/default.nix13
-rw-r--r--pkgs/development/python-modules/pyasn1-modules/default.nix48
-rw-r--r--pkgs/development/python-modules/pyasn1/default.nix25
-rw-r--r--pkgs/development/python-modules/pyasuswrt/default.nix27
-rw-r--r--pkgs/development/python-modules/pyasyncore/default.nix19
-rw-r--r--pkgs/development/python-modules/pyatag/default.nix21
-rw-r--r--pkgs/development/python-modules/pyatem/default.nix44
-rw-r--r--pkgs/development/python-modules/pyathena/default.nix63
-rw-r--r--pkgs/development/python-modules/pyatmo/default.nix55
-rw-r--r--pkgs/development/python-modules/pyatome/default.nix19
-rw-r--r--pkgs/development/python-modules/pyatspi/default.nix16
-rw-r--r--pkgs/development/python-modules/pyatv/default.nix92
-rw-r--r--pkgs/development/python-modules/pyaudio/default.nix12
-rw-r--r--pkgs/development/python-modules/pyaussiebb/default.nix43
-rw-r--r--pkgs/development/python-modules/pyautogui/default.nix34
-rw-r--r--pkgs/development/python-modules/pyavm/default.nix31
-rw-r--r--pkgs/development/python-modules/pyaxmlparser/default.nix23
-rw-r--r--pkgs/development/python-modules/pybalboa/default.nix23
-rw-r--r--pkgs/development/python-modules/pybars3/default.nix26
-rw-r--r--pkgs/development/python-modules/pybase64/default.nix21
-rw-r--r--pkgs/development/python-modules/pybids/default.nix57
-rw-r--r--pkgs/development/python-modules/pybigwig/default.nix33
-rw-r--r--pkgs/development/python-modules/pybind11/default.nix81
-rw-r--r--pkgs/development/python-modules/pybindgen/default.nix27
-rw-r--r--pkgs/development/python-modules/pyblackbird/default.nix17
-rw-r--r--pkgs/development/python-modules/pybloom-live/default.nix29
-rw-r--r--pkgs/development/python-modules/pyblu/default.nix47
-rw-r--r--pkgs/development/python-modules/pybluez/default.nix24
-rw-r--r--pkgs/development/python-modules/pybox2d/default.nix13
-rw-r--r--pkgs/development/python-modules/pybravia/default.nix31
-rw-r--r--pkgs/development/python-modules/pybrowserid/darwin_fix.patch231
-rw-r--r--pkgs/development/python-modules/pybrowserid/default.nix38
-rw-r--r--pkgs/development/python-modules/pybrowsers/default.nix25
-rw-r--r--pkgs/development/python-modules/pybtex-docutils/default.nix25
-rw-r--r--pkgs/development/python-modules/pybtex/default.nix15
-rw-r--r--pkgs/development/python-modules/pybullet/default.nix25
-rw-r--r--pkgs/development/python-modules/pycairo/default.nix38
-rw-r--r--pkgs/development/python-modules/pycangjie/default.nix36
-rw-r--r--pkgs/development/python-modules/pycapnp/default.nix24
-rw-r--r--pkgs/development/python-modules/pycaption/default.nix35
-rw-r--r--pkgs/development/python-modules/pycardano/default.nix64
-rw-r--r--pkgs/development/python-modules/pycares/default.nix31
-rw-r--r--pkgs/development/python-modules/pycarwings2/default.nix27
-rw-r--r--pkgs/development/python-modules/pycatch22/default.nix29
-rw-r--r--pkgs/development/python-modules/pycategories/default.nix17
-rw-r--r--pkgs/development/python-modules/pycategories/infix.nix9
-rw-r--r--pkgs/development/python-modules/pycddl/default.nix46
-rw-r--r--pkgs/development/python-modules/pycdio/default.nix67
-rw-r--r--pkgs/development/python-modules/pycec/default.nix25
-rw-r--r--pkgs/development/python-modules/pycep-parser/default.nix29
-rw-r--r--pkgs/development/python-modules/pycfdns/default.nix25
-rw-r--r--pkgs/development/python-modules/pycflow2dot/default.nix21
-rw-r--r--pkgs/development/python-modules/pycfmodel/default.nix45
-rw-r--r--pkgs/development/python-modules/pychannels/default.nix9
-rw-r--r--pkgs/development/python-modules/pychart/default.nix9
-rw-r--r--pkgs/development/python-modules/pychm/default.nix10
-rw-r--r--pkgs/development/python-modules/pychromecast/default.nix23
-rw-r--r--pkgs/development/python-modules/pycketcasts/default.nix17
-rw-r--r--pkgs/development/python-modules/pyclimacell/default.nix19
-rw-r--r--pkgs/development/python-modules/pyclip/default.nix33
-rw-r--r--pkgs/development/python-modules/pyclipper/default.nix23
-rw-r--r--pkgs/development/python-modules/pycm/default.nix35
-rw-r--r--pkgs/development/python-modules/pycmarkgfm/default.nix9
-rw-r--r--pkgs/development/python-modules/pycocotools/default.nix15
-rw-r--r--pkgs/development/python-modules/pycodestyle/default.nix29
-rw-r--r--pkgs/development/python-modules/pycognito/default.nix57
-rw-r--r--pkgs/development/python-modules/pycoin/default.nix13
-rw-r--r--pkgs/development/python-modules/pycollada/default.nix15
-rw-r--r--pkgs/development/python-modules/pycomfoconnect/default.nix19
-rw-r--r--pkgs/development/python-modules/pycomm3/default.nix44
-rw-r--r--pkgs/development/python-modules/pycompliance/default.nix33
-rw-r--r--pkgs/development/python-modules/pycomposefile/default.nix37
-rw-r--r--pkgs/development/python-modules/pycontracts/default.nix22
-rw-r--r--pkgs/development/python-modules/pycontrol4/default.nix37
-rw-r--r--pkgs/development/python-modules/pycookiecheat/default.nix58
-rw-r--r--pkgs/development/python-modules/pycoolmasternet-async/default.nix24
-rw-r--r--pkgs/development/python-modules/pycosat/default.nix7
-rw-r--r--pkgs/development/python-modules/pycotap/default.nix6
-rw-r--r--pkgs/development/python-modules/pycountry-convert/default.nix51
-rw-r--r--pkgs/development/python-modules/pycountry/default.nix42
-rw-r--r--pkgs/development/python-modules/pycparser/default.nix18
-rw-r--r--pkgs/development/python-modules/pycrc/default.nix6
-rw-r--r--pkgs/development/python-modules/pycrdt-websocket/default.nix69
-rw-r--r--pkgs/development/python-modules/pycrdt/Cargo.lock305
-rw-r--r--pkgs/development/python-modules/pycrdt/default.nix59
-rw-r--r--pkgs/development/python-modules/pycritty/default.nix10
-rw-r--r--pkgs/development/python-modules/pycron/default.nix37
-rw-r--r--pkgs/development/python-modules/pycrypto/default.nix2
-rw-r--r--pkgs/development/python-modules/pycryptodome/default.nix24
-rw-r--r--pkgs/development/python-modules/pycryptodome/vectors.nix22
-rw-r--r--pkgs/development/python-modules/pycryptodomex/default.nix4
-rw-r--r--pkgs/development/python-modules/pycsdr/default.nix7
-rw-r--r--pkgs/development/python-modules/pyct/default.nix29
-rw-r--r--pkgs/development/python-modules/pyctr/default.nix19
-rw-r--r--pkgs/development/python-modules/pycuda/compyte.nix5
-rw-r--r--pkgs/development/python-modules/pycuda/default.nix50
-rw-r--r--pkgs/development/python-modules/pycups/default.nix15
-rw-r--r--pkgs/development/python-modules/pycurl/default.nix90
-rw-r--r--pkgs/development/python-modules/pycxx/default.nix29
-rw-r--r--pkgs/development/python-modules/pycycling/default.nix33
-rw-r--r--pkgs/development/python-modules/pycyphal/default.nix44
-rw-r--r--pkgs/development/python-modules/pydaikin/default.nix53
-rw-r--r--pkgs/development/python-modules/pydal/default.nix29
-rw-r--r--pkgs/development/python-modules/pydanfossair/default.nix7
-rw-r--r--pkgs/development/python-modules/pydantic-compat/default.nix29
-rw-r--r--pkgs/development/python-modules/pydantic-core/default.nix50
-rw-r--r--pkgs/development/python-modules/pydantic-extra-types/default.nix43
-rw-r--r--pkgs/development/python-modules/pydantic-scim/default.nix21
-rw-r--r--pkgs/development/python-modules/pydantic-settings/default.nix110
-rw-r--r--pkgs/development/python-modules/pydantic-yaml/default.nix (renamed from pkgs/development/python-modules/pydantic-yaml-0/default.nix)51
-rw-r--r--pkgs/development/python-modules/pydantic/1.nix50
-rw-r--r--pkgs/development/python-modules/pydantic/default.nix87
-rw-r--r--pkgs/development/python-modules/pydata-google-auth/default.nix36
-rw-r--r--pkgs/development/python-modules/pydata-sphinx-theme/default.nix31
-rw-r--r--pkgs/development/python-modules/pydateinfer/default.nix19
-rw-r--r--pkgs/development/python-modules/pydbus/default.nix21
-rw-r--r--pkgs/development/python-modules/pydeck/default.nix33
-rw-r--r--pkgs/development/python-modules/pydeconz/default.nix47
-rw-r--r--pkgs/development/python-modules/pydelijn/default.nix21
-rw-r--r--pkgs/development/python-modules/pydenticon/default.nix17
-rw-r--r--pkgs/development/python-modules/pydeps/default.nix33
-rw-r--r--pkgs/development/python-modules/pydes/default.nix9
-rw-r--r--pkgs/development/python-modules/pydevccu/default.nix26
-rw-r--r--pkgs/development/python-modules/pydevd/default.nix101
-rw-r--r--pkgs/development/python-modules/pydevtool/default.nix24
-rw-r--r--pkgs/development/python-modules/pydexcom/default.nix27
-rw-r--r--pkgs/development/python-modules/pydicom-seg/default.nix37
-rw-r--r--pkgs/development/python-modules/pydicom/default.nix57
-rw-r--r--pkgs/development/python-modules/pydigiham/default.nix15
-rw-r--r--pkgs/development/python-modules/pydiscourse/default.nix27
-rw-r--r--pkgs/development/python-modules/pydiscovergy/default.nix49
-rw-r--r--pkgs/development/python-modules/pydispatcher/default.nix14
-rw-r--r--pkgs/development/python-modules/pydmd/default.nix45
-rw-r--r--pkgs/development/python-modules/pydocstyle/default.nix37
-rw-r--r--pkgs/development/python-modules/pydocumentdb/default.nix18
-rw-r--r--pkgs/development/python-modules/pydoe/default.nix15
-rw-r--r--pkgs/development/python-modules/pydoods/default.nix15
-rw-r--r--pkgs/development/python-modules/pydot/default.nix36
-rw-r--r--pkgs/development/python-modules/pydrawise/default.nix4
-rw-r--r--pkgs/development/python-modules/pydrive2/default.nix33
-rw-r--r--pkgs/development/python-modules/pydroid-ipcam/default.nix17
-rw-r--r--pkgs/development/python-modules/pydruid/default.nix35
-rw-r--r--pkgs/development/python-modules/pydsdl/default.nix15
-rw-r--r--pkgs/development/python-modules/pydub/default.nix36
-rw-r--r--pkgs/development/python-modules/pydub/ffmpeg-fix-path.patch28
-rw-r--r--pkgs/development/python-modules/pyduke-energy/default.nix27
-rw-r--r--pkgs/development/python-modules/pyduotecno/default.nix4
-rw-r--r--pkgs/development/python-modules/pydy/default.nix56
-rw-r--r--pkgs/development/python-modules/pydyf/default.nix33
-rw-r--r--pkgs/development/python-modules/pyeapi/default.nix14
-rw-r--r--pkgs/development/python-modules/pyebus/default.nix26
-rw-r--r--pkgs/development/python-modules/pyechonest/default.nix7
-rw-r--r--pkgs/development/python-modules/pyeclib/default.nix54
-rw-r--r--pkgs/development/python-modules/pyecoforest/default.nix38
-rw-r--r--pkgs/development/python-modules/pyeconet/default.nix23
-rw-r--r--pkgs/development/python-modules/pyecotrend-ista/default.nix56
-rw-r--r--pkgs/development/python-modules/pyecowitt/default.nix33
-rw-r--r--pkgs/development/python-modules/pyedimax/default.nix26
-rw-r--r--pkgs/development/python-modules/pyee/default.nix41
-rw-r--r--pkgs/development/python-modules/pyefergy/default.nix51
-rw-r--r--pkgs/development/python-modules/pyegps/default.nix41
-rw-r--r--pkgs/development/python-modules/pyeight/default.nix17
-rw-r--r--pkgs/development/python-modules/pyelectra/default.nix37
-rw-r--r--pkgs/development/python-modules/pyelftools/default.nix47
-rw-r--r--pkgs/development/python-modules/pyemby/default.nix33
-rw-r--r--pkgs/development/python-modules/pyemd/default.nix35
-rw-r--r--pkgs/development/python-modules/pyemoncms/default.nix46
-rw-r--r--pkgs/development/python-modules/pyemvue/default.nix35
-rw-r--r--pkgs/development/python-modules/pyenchant/default.nix43
-rw-r--r--pkgs/development/python-modules/pyenphase/default.nix17
-rw-r--r--pkgs/development/python-modules/pyenvisalink/default.nix23
-rw-r--r--pkgs/development/python-modules/pyephember/default.nix19
-rw-r--r--pkgs/development/python-modules/pyepsg/default.nix10
-rw-r--r--pkgs/development/python-modules/pyerfa/default.nix64
-rw-r--r--pkgs/development/python-modules/pyeverlights/default.nix9
-rw-r--r--pkgs/development/python-modules/pyevilgenius/default.nix17
-rw-r--r--pkgs/development/python-modules/pyevmasm/default.nix11
-rw-r--r--pkgs/development/python-modules/pyevtk/default.nix45
-rw-r--r--pkgs/development/python-modules/pyexcel-io/default.nix17
-rw-r--r--pkgs/development/python-modules/pyexcel-ods/default.nix52
-rw-r--r--pkgs/development/python-modules/pyexcel-xls/default.nix55
-rw-r--r--pkgs/development/python-modules/pyexcel/default.nix23
-rw-r--r--pkgs/development/python-modules/pyexiftool/default.nix28
-rw-r--r--pkgs/development/python-modules/pyexploitdb/default.nix31
-rw-r--r--pkgs/development/python-modules/pyezviz/default.nix38
-rw-r--r--pkgs/development/python-modules/pyface/default.nix25
-rw-r--r--pkgs/development/python-modules/pyfaidx/default.nix47
-rw-r--r--pkgs/development/python-modules/pyfakefs/default.nix69
-rw-r--r--pkgs/development/python-modules/pyfakewebcam/default.nix15
-rw-r--r--pkgs/development/python-modules/pyfantom/default.nix8
-rw-r--r--pkgs/development/python-modules/pyfcm/default.nix30
-rw-r--r--pkgs/development/python-modules/pyfftw/default.nix31
-rw-r--r--pkgs/development/python-modules/pyfido/default.nix9
-rw-r--r--pkgs/development/python-modules/pyfiglet/default.nix10
-rw-r--r--pkgs/development/python-modules/pyfireservicerota/default.nix24
-rw-r--r--pkgs/development/python-modules/pyflakes/default.nix23
-rw-r--r--pkgs/development/python-modules/pyflexit/default.nix9
-rw-r--r--pkgs/development/python-modules/pyflic/default.nix13
-rw-r--r--pkgs/development/python-modules/pyflick/default.nix13
-rw-r--r--pkgs/development/python-modules/pyfluidsynth/default.nix21
-rw-r--r--pkgs/development/python-modules/pyflume/default.nix27
-rw-r--r--pkgs/development/python-modules/pyfma/default.nix39
-rw-r--r--pkgs/development/python-modules/pyfnip/default.nix9
-rw-r--r--pkgs/development/python-modules/pyformlang/default.nix29
-rw-r--r--pkgs/development/python-modules/pyfreedompro/default.nix15
-rw-r--r--pkgs/development/python-modules/pyfribidi/default.nix16
-rw-r--r--pkgs/development/python-modules/pyfritzhome/default.nix33
-rw-r--r--pkgs/development/python-modules/pyfronius/default.nix37
-rw-r--r--pkgs/development/python-modules/pyftgl/default.nix27
-rw-r--r--pkgs/development/python-modules/pyftpdlib/default.nix6
-rw-r--r--pkgs/development/python-modules/pyfttt/default.nix8
-rw-r--r--pkgs/development/python-modules/pyfume/default.nix44
-rw-r--r--pkgs/development/python-modules/pyfunctional/default.nix45
-rw-r--r--pkgs/development/python-modules/pyfuse3/default.nix48
-rw-r--r--pkgs/development/python-modules/pyfwup/default.nix52
-rw-r--r--pkgs/development/python-modules/pyfxa/default.nix43
-rw-r--r--pkgs/development/python-modules/pyfzf/default.nix19
-rw-r--r--pkgs/development/python-modules/pygal/default.nix37
-rw-r--r--pkgs/development/python-modules/pygame-ce/default.nix143
-rw-r--r--pkgs/development/python-modules/pygame-gui/default.nix41
-rw-r--r--pkgs/development/python-modules/pygame-sdl2/default.nix60
-rw-r--r--pkgs/development/python-modules/pygame/default.nix83
-rw-r--r--pkgs/development/python-modules/pygatt/default.nix63
-rw-r--r--pkgs/development/python-modules/pygccxml/default.nix19
-rw-r--r--pkgs/development/python-modules/pygdbmi/default.nix18
-rw-r--r--pkgs/development/python-modules/pygeoip/default.nix24
-rw-r--r--pkgs/development/python-modules/pygeos/default.nix53
-rw-r--r--pkgs/development/python-modules/pygetwindow/default.nix15
-rw-r--r--pkgs/development/python-modules/pygit2/default.nix61
-rw-r--r--pkgs/development/python-modules/pygitguardian/default.nix50
-rw-r--r--pkgs/development/python-modules/pygithub/default.nix37
-rw-r--r--pkgs/development/python-modules/pyglet/default.nix137
-rw-r--r--pkgs/development/python-modules/pyglm/default.nix27
-rw-r--r--pkgs/development/python-modules/pygls/default.nix35
-rw-r--r--pkgs/development/python-modules/pygltflib/default.nix27
-rw-r--r--pkgs/development/python-modules/pygmars/default.nix41
-rw-r--r--pkgs/development/python-modules/pygments-better-html/default.nix17
-rw-r--r--pkgs/development/python-modules/pygments-markdown-lexer/default.nix10
-rw-r--r--pkgs/development/python-modules/pygments-style-github/default.nix9
-rw-r--r--pkgs/development/python-modules/pygments/default.nix55
-rw-r--r--pkgs/development/python-modules/pygmo/default.nix121
-rw-r--r--pkgs/development/python-modules/pygmt/default.nix47
-rw-r--r--pkgs/development/python-modules/pygnmi/default.nix29
-rw-r--r--pkgs/development/python-modules/pygobject-stubs/default.nix1
-rw-r--r--pkgs/development/python-modules/pygobject/3.nix49
-rw-r--r--pkgs/development/python-modules/pygogo/default.nix53
-rw-r--r--pkgs/development/python-modules/pygount/default.nix35
-rw-r--r--pkgs/development/python-modules/pygpgme/default.nix17
-rw-r--r--pkgs/development/python-modules/pygraphviz/default.nix37
-rw-r--r--pkgs/development/python-modules/pygreat/default.nix15
-rw-r--r--pkgs/development/python-modules/pygrok/default.nix12
-rw-r--r--pkgs/development/python-modules/pygsl/default.nix49
-rw-r--r--pkgs/development/python-modules/pygtail/default.nix8
-rw-r--r--pkgs/development/python-modules/pygtfs/default.nix45
-rw-r--r--pkgs/development/python-modules/pygti/default.nix21
-rw-r--r--pkgs/development/python-modules/pygtkspellcheck/default.nix25
-rw-r--r--pkgs/development/python-modules/pygtrie/default.nix7
-rw-r--r--pkgs/development/python-modules/pyhamcrest/default.nix23
-rw-r--r--pkgs/development/python-modules/pyhanko-certvalidator/default.nix39
-rw-r--r--pkgs/development/python-modules/pyhanko/default.nix127
-rw-r--r--pkgs/development/python-modules/pyhaversion/default.nix42
-rw-r--r--pkgs/development/python-modules/pyhcl/default.nix19
-rw-r--r--pkgs/development/python-modules/pyheck/default.nix37
-rw-r--r--pkgs/development/python-modules/pyheif/default.nix43
-rw-r--r--pkgs/development/python-modules/pyheos/default.nix28
-rw-r--r--pkgs/development/python-modules/pyhepmc/default.nix34
-rw-r--r--pkgs/development/python-modules/pyhiveapi/default.nix25
-rw-r--r--pkgs/development/python-modules/pyhocon/default.nix25
-rw-r--r--pkgs/development/python-modules/pyhomematic/default.nix13
-rw-r--r--pkgs/development/python-modules/pyhomepilot/default.nix15
-rw-r--r--pkgs/development/python-modules/pyhomeworks/default.nix28
-rw-r--r--pkgs/development/python-modules/pyhumps/default.nix25
-rw-r--r--pkgs/development/python-modules/pyi2cflash/default.nix13
-rw-r--r--pkgs/development/python-modules/pyialarm/default.nix17
-rw-r--r--pkgs/development/python-modules/pyicloud/default.nix37
-rw-r--r--pkgs/development/python-modules/pyicu/default.nix22
-rw-r--r--pkgs/development/python-modules/pyicumessageformat/default.nix33
-rw-r--r--pkgs/development/python-modules/pyimpfuzzy/default.nix25
-rw-r--r--pkgs/development/python-modules/pyindego/default.nix56
-rw-r--r--pkgs/development/python-modules/pyinfra/default.nix67
-rw-r--r--pkgs/development/python-modules/pyinotify/default.nix12
-rw-r--r--pkgs/development/python-modules/pyinotify/skip-asyncore-python-3.12.patch84
-rw-r--r--pkgs/development/python-modules/pyinputevent/default.nix8
-rw-r--r--pkgs/development/python-modules/pyinstaller-hooks-contrib/default.nix45
-rw-r--r--pkgs/development/python-modules/pyinstaller-versionfile/default.nix23
-rw-r--r--pkgs/development/python-modules/pyinstaller/default.nix67
-rw-r--r--pkgs/development/python-modules/pyinsteon/default.nix48
-rw-r--r--pkgs/development/python-modules/pyinstrument/default.nix22
-rw-r--r--pkgs/development/python-modules/pyintesishome/default.nix19
-rw-r--r--pkgs/development/python-modules/pyipma/default.nix27
-rw-r--r--pkgs/development/python-modules/pyipp/default.nix56
-rw-r--r--pkgs/development/python-modules/pyipv8/default.nix31
-rw-r--r--pkgs/development/python-modules/pyiqvia/default.nix36
-rw-r--r--pkgs/development/python-modules/pyisbn/default.nix29
-rw-r--r--pkgs/development/python-modules/pyisemail/default.nix31
-rw-r--r--pkgs/development/python-modules/pyisy/default.nix23
-rw-r--r--pkgs/development/python-modules/pyixapi/default.nix37
-rw-r--r--pkgs/development/python-modules/pyjet/default.nix35
-rw-r--r--pkgs/development/python-modules/pyjks/default.nix19
-rw-r--r--pkgs/development/python-modules/pyjnius/default.nix19
-rw-r--r--pkgs/development/python-modules/pyjson5/default.nix44
-rw-r--r--pkgs/development/python-modules/pyjsparser/default.nix65
-rw-r--r--pkgs/development/python-modules/pyjwkest/default.nix18
-rw-r--r--pkgs/development/python-modules/pyjwt/default.nix56
-rw-r--r--pkgs/development/python-modules/pykakasi/default.nix61
-rw-r--r--pkgs/development/python-modules/pykaleidescape/default.nix49
-rw-r--r--pkgs/development/python-modules/pykalman/default.nix41
-rw-r--r--pkgs/development/python-modules/pykalman/fix-masked-arrays-not-supported.patch14
-rw-r--r--pkgs/development/python-modules/pykalman/fix-p311-issues.patch13
-rw-r--r--pkgs/development/python-modules/pykcs11/default.nix52
-rw-r--r--pkgs/development/python-modules/pykcs11/tests.nix33
-rw-r--r--pkgs/development/python-modules/pykdl/default.nix79
-rw-r--r--pkgs/development/python-modules/pykdtree/default.nix44
-rw-r--r--pkgs/development/python-modules/pykeepass/default.nix40
-rw-r--r--pkgs/development/python-modules/pykerberos/default.nix14
-rw-r--r--pkgs/development/python-modules/pykeyatome/default.nix27
-rw-r--r--pkgs/development/python-modules/pykira/default.nix13
-rw-r--r--pkgs/development/python-modules/pykka/default.nix33
-rw-r--r--pkgs/development/python-modules/pykmtronic/default.nix16
-rw-r--r--pkgs/development/python-modules/pykodi/default.nix19
-rw-r--r--pkgs/development/python-modules/pykoplenti/default.nix31
-rw-r--r--pkgs/development/python-modules/pykostalpiko/default.nix18
-rw-r--r--pkgs/development/python-modules/pykrakenapi/default.nix14
-rw-r--r--pkgs/development/python-modules/pykulersky/default.nix23
-rw-r--r--pkgs/development/python-modules/pykwalify/default.nix19
-rw-r--r--pkgs/development/python-modules/pykwb/default.nix19
-rw-r--r--pkgs/development/python-modules/pylacrosse/default.nix34
-rw-r--r--pkgs/development/python-modules/pylacus/default.nix29
-rw-r--r--pkgs/development/python-modules/pylama/default.nix143
-rw-r--r--pkgs/development/python-modules/pylance/Cargo.lock6075
-rw-r--r--pkgs/development/python-modules/pylance/default.nix132
-rw-r--r--pkgs/development/python-modules/pylast/default.nix47
-rw-r--r--pkgs/development/python-modules/pylatex/default.nix33
-rw-r--r--pkgs/development/python-modules/pylatexenc/default.nix9
-rw-r--r--pkgs/development/python-modules/pylaunches/default.nix54
-rw-r--r--pkgs/development/python-modules/pyld/default.nix9
-rw-r--r--pkgs/development/python-modules/pylddwrap/default.nix19
-rw-r--r--pkgs/development/python-modules/pyleri/default.nix25
-rw-r--r--pkgs/development/python-modules/pylev/default.nix9
-rw-r--r--pkgs/development/python-modules/pylgnetcast/default.nix19
-rw-r--r--pkgs/development/python-modules/pylibacl/default.nix13
-rw-r--r--pkgs/development/python-modules/pylibconfig2/default.nix7
-rw-r--r--pkgs/development/python-modules/pylibdmtx/default.nix18
-rw-r--r--pkgs/development/python-modules/pylibjpeg-data/default.nix39
-rw-r--r--pkgs/development/python-modules/pylibjpeg-libjpeg/default.nix41
-rw-r--r--pkgs/development/python-modules/pylibjpeg-openjpeg/default.nix77
-rw-r--r--pkgs/development/python-modules/pylibjpeg/default.nix52
-rw-r--r--pkgs/development/python-modules/pyliblo/default.nix15
-rw-r--r--pkgs/development/python-modules/pylibmc/default.nix25
-rw-r--r--pkgs/development/python-modules/pylink-square/default.nix33
-rw-r--r--pkgs/development/python-modules/pylint-celery/default.nix23
-rw-r--r--pkgs/development/python-modules/pylint-django/default.nix41
-rw-r--r--pkgs/development/python-modules/pylint-flask/default.nix31
-rw-r--r--pkgs/development/python-modules/pylint-plugin-utils/default.nix29
-rw-r--r--pkgs/development/python-modules/pylint-venv/default.nix19
-rw-r--r--pkgs/development/python-modules/pylint/default.nix126
-rw-r--r--pkgs/development/python-modules/pylion/default.nix21
-rw-r--r--pkgs/development/python-modules/pylitterbot/default.nix12
-rw-r--r--pkgs/development/python-modules/pylnk3/default.nix24
-rw-r--r--pkgs/development/python-modules/pyloadapi/default.nix63
-rw-r--r--pkgs/development/python-modules/pylpsd/default.nix17
-rw-r--r--pkgs/development/python-modules/pylru/default.nix16
-rw-r--r--pkgs/development/python-modules/pyls-flake8/default.nix20
-rw-r--r--pkgs/development/python-modules/pyls-isort/default.nix26
-rw-r--r--pkgs/development/python-modules/pyls-memestra/default.nix37
-rw-r--r--pkgs/development/python-modules/pyls-spyder/default.nix21
-rw-r--r--pkgs/development/python-modules/pylsp-mypy/default.nix55
-rw-r--r--pkgs/development/python-modules/pylsp-rope/default.nix55
-rw-r--r--pkgs/development/python-modules/pylsqpack/default.nix15
-rw-r--r--pkgs/development/python-modules/pylti/default.nix53
-rw-r--r--pkgs/development/python-modules/pylutron-caseta/default.nix53
-rw-r--r--pkgs/development/python-modules/pylutron/default.nix31
-rw-r--r--pkgs/development/python-modules/pylxd/default.nix43
-rw-r--r--pkgs/development/python-modules/pylyrics/default.nix12
-rw-r--r--pkgs/development/python-modules/pylzma/default.nix6
-rw-r--r--pkgs/development/python-modules/pymacaroons/default.nix8
-rw-r--r--pkgs/development/python-modules/pymailgunner/default.nix19
-rw-r--r--pkgs/development/python-modules/pymanopt/default.nix55
-rw-r--r--pkgs/development/python-modules/pymarshal/default.nix33
-rw-r--r--pkgs/development/python-modules/pymata-express/default.nix15
-rw-r--r--pkgs/development/python-modules/pymatgen/default.nix11
-rw-r--r--pkgs/development/python-modules/pymatreader/default.nix25
-rw-r--r--pkgs/development/python-modules/pymatting/default.nix34
-rw-r--r--pkgs/development/python-modules/pymaven-patch/default.nix27
-rw-r--r--pkgs/development/python-modules/pymavlink/default.nix18
-rw-r--r--pkgs/development/python-modules/pymbolic/default.nix29
-rw-r--r--pkgs/development/python-modules/pymc/default.nix56
-rw-r--r--pkgs/development/python-modules/pymdown-extensions/default.nix66
-rw-r--r--pkgs/development/python-modules/pymdstat/default.nix11
-rw-r--r--pkgs/development/python-modules/pymediainfo/default.nix29
-rw-r--r--pkgs/development/python-modules/pymediaroom/default.nix13
-rw-r--r--pkgs/development/python-modules/pymedio/default.nix29
-rw-r--r--pkgs/development/python-modules/pymee/default.nix40
-rw-r--r--pkgs/development/python-modules/pymeeus/default.nix19
-rw-r--r--pkgs/development/python-modules/pymelcloud/default.nix25
-rw-r--r--pkgs/development/python-modules/pymemcache/default.nix38
-rw-r--r--pkgs/development/python-modules/pymemoize/default.nix10
-rw-r--r--pkgs/development/python-modules/pyment/default.nix6
-rw-r--r--pkgs/development/python-modules/pymeta3/default.nix16
-rw-r--r--pkgs/development/python-modules/pymetar/default.nix19
-rw-r--r--pkgs/development/python-modules/pymeteireann/default.nix15
-rw-r--r--pkgs/development/python-modules/pymeteoclimatic/default.nix29
-rw-r--r--pkgs/development/python-modules/pymetno/default.nix25
-rw-r--r--pkgs/development/python-modules/pymfy/default.nix40
-rw-r--r--pkgs/development/python-modules/pymicro-vad/default.nix42
-rw-r--r--pkgs/development/python-modules/pymicrobot/default.nix23
-rw-r--r--pkgs/development/python-modules/pymiele/default.nix23
-rw-r--r--pkgs/development/python-modules/pymilter/default.nix32
-rw-r--r--pkgs/development/python-modules/pymilvus/default.nix47
-rw-r--r--pkgs/development/python-modules/pymitv/default.nix11
-rw-r--r--pkgs/development/python-modules/pymodbus/default.nix6
-rw-r--r--pkgs/development/python-modules/pymongo-inmemory/default.nix38
-rw-r--r--pkgs/development/python-modules/pymongo/default.nix55
-rw-r--r--pkgs/development/python-modules/pymoo/default.nix63
-rw-r--r--pkgs/development/python-modules/pymorphy2/default.nix17
-rw-r--r--pkgs/development/python-modules/pymorphy2/dicts-ru.nix9
-rw-r--r--pkgs/development/python-modules/pymorphy3/default.nix31
-rw-r--r--pkgs/development/python-modules/pymorphy3/dicts-ru.nix7
-rw-r--r--pkgs/development/python-modules/pymorphy3/dicts-uk.nix7
-rw-r--r--pkgs/development/python-modules/pympler/default.nix49
-rw-r--r--pkgs/development/python-modules/pymsgbox/default.nix9
-rw-r--r--pkgs/development/python-modules/pymssql/default.nix55
-rw-r--r--pkgs/development/python-modules/pymsteams/default.nix33
-rw-r--r--pkgs/development/python-modules/pymumble/default.nix17
-rw-r--r--pkgs/development/python-modules/pymunk/default.nix39
-rw-r--r--pkgs/development/python-modules/pymupdf/default.nix233
-rw-r--r--pkgs/development/python-modules/pymvglive/default.nix7
-rw-r--r--pkgs/development/python-modules/pymysensors/default.nix41
-rw-r--r--pkgs/development/python-modules/pymysql/default.nix19
-rw-r--r--pkgs/development/python-modules/pymysqlsa/default.nix17
-rw-r--r--pkgs/development/python-modules/pymystem3/default.nix25
-rw-r--r--pkgs/development/python-modules/pynac/default.nix10
-rw-r--r--pkgs/development/python-modules/pynacl/default.nix47
-rw-r--r--pkgs/development/python-modules/pynamecheap/default.nix11
-rw-r--r--pkgs/development/python-modules/pynamodb/default.nix43
-rw-r--r--pkgs/development/python-modules/pynanoleaf/default.nix14
-rw-r--r--pkgs/development/python-modules/pync/default.nix25
-rw-r--r--pkgs/development/python-modules/pynecil/default.nix47
-rw-r--r--pkgs/development/python-modules/pynello/default.nix19
-rw-r--r--pkgs/development/python-modules/pynest2d/default.nix22
-rw-r--r--pkgs/development/python-modules/pynetbox/default.nix35
-rw-r--r--pkgs/development/python-modules/pynetdicom/default.nix40
-rw-r--r--pkgs/development/python-modules/pynetgear/default.nix19
-rw-r--r--pkgs/development/python-modules/pyngo/default.nix35
-rw-r--r--pkgs/development/python-modules/pyngrok/default.nix27
-rw-r--r--pkgs/development/python-modules/pynina/default.nix19
-rw-r--r--pkgs/development/python-modules/pynisher/default.nix17
-rw-r--r--pkgs/development/python-modules/pynitrokey/default.nix75
-rw-r--r--pkgs/development/python-modules/pynmea2/default.nix28
-rw-r--r--pkgs/development/python-modules/pynmeagps/default.nix40
-rw-r--r--pkgs/development/python-modules/pynndescent/default.nix45
-rw-r--r--pkgs/development/python-modules/pynose/default.nix30
-rw-r--r--pkgs/development/python-modules/pynotifier/default.nix21
-rw-r--r--pkgs/development/python-modules/pynput/default.nix64
-rw-r--r--pkgs/development/python-modules/pynrrd/default.nix19
-rw-r--r--pkgs/development/python-modules/pynslookup/default.nix39
-rw-r--r--pkgs/development/python-modules/pynuki/default.nix23
-rw-r--r--pkgs/development/python-modules/pynut2/default.nix15
-rw-r--r--pkgs/development/python-modules/pynvim-pp/default.nix27
-rw-r--r--pkgs/development/python-modules/pynvim/default.nix31
-rw-r--r--pkgs/development/python-modules/pynvml/default.nix44
-rw-r--r--pkgs/development/python-modules/pynws/default.nix51
-rw-r--r--pkgs/development/python-modules/pynx584/default.nix42
-rw-r--r--pkgs/development/python-modules/pynzb/default.nix10
-rw-r--r--pkgs/development/python-modules/pyobihai/default.nix23
-rw-r--r--pkgs/development/python-modules/pyocd-pemicro/default.nix19
-rw-r--r--pkgs/development/python-modules/pyocd/default.nix81
-rw-r--r--pkgs/development/python-modules/pyocr/default.nix48
-rw-r--r--pkgs/development/python-modules/pyoctoprintapi/default.nix39
-rw-r--r--pkgs/development/python-modules/pyodbc/default.nix23
-rw-r--r--pkgs/development/python-modules/pyogg/default.nix41
-rw-r--r--pkgs/development/python-modules/pyogrio/default.nix72
-rw-r--r--pkgs/development/python-modules/pyombi/default.nix15
-rw-r--r--pkgs/development/python-modules/pyomo/default.nix38
-rw-r--r--pkgs/development/python-modules/pyopencl/default.nix114
-rw-r--r--pkgs/development/python-modules/pyopengl-accelerate/default.nix16
-rw-r--r--pkgs/development/python-modules/pyopengl/default.nix93
-rw-r--r--pkgs/development/python-modules/pyopengltk/default.nix51
-rw-r--r--pkgs/development/python-modules/pyopenssl/default.nix109
-rw-r--r--pkgs/development/python-modules/pyopenuv/default.nix33
-rw-r--r--pkgs/development/python-modules/pyopenweathermap/default.nix52
-rw-r--r--pkgs/development/python-modules/pyopnsense/default.nix25
-rw-r--r--pkgs/development/python-modules/pyoppleio/default.nix28
-rw-r--r--pkgs/development/python-modules/pyorthanc/default.nix37
-rw-r--r--pkgs/development/python-modules/pyosf/default.nix26
-rw-r--r--pkgs/development/python-modules/pyosmium/default.nix68
-rw-r--r--pkgs/development/python-modules/pyosohotwaterapi/default.nix36
-rw-r--r--pkgs/development/python-modules/pyotgw/default.nix1
-rw-r--r--pkgs/development/python-modules/pyotp/default.nix15
-rw-r--r--pkgs/development/python-modules/pyoutbreaksnearme/default.nix35
-rw-r--r--pkgs/development/python-modules/pyoverkiz/default.nix49
-rw-r--r--pkgs/development/python-modules/pyowm/default.nix2
-rw-r--r--pkgs/development/python-modules/pyownet/default.nix7
-rw-r--r--pkgs/development/python-modules/pypager/default.nix41
-rw-r--r--pkgs/development/python-modules/pypandoc/default.nix32
-rw-r--r--pkgs/development/python-modules/pyparser/default.nix7
-rw-r--r--pkgs/development/python-modules/pyparsing/default.nix27
-rw-r--r--pkgs/development/python-modules/pyparted/default.nix44
-rw-r--r--pkgs/development/python-modules/pypass/default.nix79
-rw-r--r--pkgs/development/python-modules/pypblib/default.nix6
-rw-r--r--pkgs/development/python-modules/pypca/default.nix13
-rw-r--r--pkgs/development/python-modules/pypcap/default.nix13
-rw-r--r--pkgs/development/python-modules/pypck/default.nix43
-rw-r--r--pkgs/development/python-modules/pypdf/default.nix114
-rw-r--r--pkgs/development/python-modules/pypdf2/default.nix38
-rw-r--r--pkgs/development/python-modules/pypdf3/default.nix19
-rw-r--r--pkgs/development/python-modules/pypeg2/default.nix10
-rw-r--r--pkgs/development/python-modules/pypemicro/default.nix16
-rw-r--r--pkgs/development/python-modules/pyperclip/default.nix23
-rw-r--r--pkgs/development/python-modules/pyperf/default.nix37
-rw-r--r--pkgs/development/python-modules/pyperscan/default.nix43
-rw-r--r--pkgs/development/python-modules/pyphen/default.nix37
-rw-r--r--pkgs/development/python-modules/pyphotonfile/default.nix17
-rw-r--r--pkgs/development/python-modules/pypika/default.nix16
-rw-r--r--pkgs/development/python-modules/pypillowfight/default.nix35
-rw-r--r--pkgs/development/python-modules/pypinyin/default.nix23
-rw-r--r--pkgs/development/python-modules/pypiserver/default.nix76
-rw-r--r--pkgs/development/python-modules/pypitoken/default.nix29
-rw-r--r--pkgs/development/python-modules/pyplaato/default.nix17
-rw-r--r--pkgs/development/python-modules/pyplatec/default.nix13
-rw-r--r--pkgs/development/python-modules/pypng/default.nix37
-rw-r--r--pkgs/development/python-modules/pypng/setup-cfg-pngsuite.patch12
-rw-r--r--pkgs/development/python-modules/pypoint/default.nix15
-rw-r--r--pkgs/development/python-modules/pypoolstation/default.nix29
-rw-r--r--pkgs/development/python-modules/pyppeteer/default.nix39
-rw-r--r--pkgs/development/python-modules/pyprecice/default.nix29
-rw-r--r--pkgs/development/python-modules/pypresence/default.nix10
-rw-r--r--pkgs/development/python-modules/pyprind/default.nix12
-rw-r--r--pkgs/development/python-modules/pyprobables/default.nix25
-rw-r--r--pkgs/development/python-modules/pyprof2calltree/default.nix15
-rw-r--r--pkgs/development/python-modules/pyproj/default.nix54
-rw-r--r--pkgs/development/python-modules/pyproject-api/default.nix58
-rw-r--r--pkgs/development/python-modules/pyproject-hooks/default.nix35
-rw-r--r--pkgs/development/python-modules/pyproject-metadata/default.nix46
-rw-r--r--pkgs/development/python-modules/pyproject-parser/default.nix50
-rw-r--r--pkgs/development/python-modules/pyprosegur/default.nix33
-rw-r--r--pkgs/development/python-modules/pyprusalink/default.nix27
-rw-r--r--pkgs/development/python-modules/pypsrp/default.nix59
-rw-r--r--pkgs/development/python-modules/pyptlib/default.nix16
-rw-r--r--pkgs/development/python-modules/pypubsub/default.nix24
-rw-r--r--pkgs/development/python-modules/pypugjs/default.nix42
-rw-r--r--pkgs/development/python-modules/pypykatz/default.nix31
-rw-r--r--pkgs/development/python-modules/pypytools/default.nix33
-rw-r--r--pkgs/development/python-modules/pyqldb/default.nix16
-rw-r--r--pkgs/development/python-modules/pyqrcode/default.nix8
-rw-r--r--pkgs/development/python-modules/pyqt-builder/default.nix30
-rw-r--r--pkgs/development/python-modules/pyqt/5.x.nix256
-rw-r--r--pkgs/development/python-modules/pyqt/6.x.nix164
-rw-r--r--pkgs/development/python-modules/pyqt/pyqt6-sip.nix16
-rw-r--r--pkgs/development/python-modules/pyqt/sip.nix20
-rw-r--r--pkgs/development/python-modules/pyqt3d/default.nix43
-rw-r--r--pkgs/development/python-modules/pyqt5-stubs/default.nix65
-rw-r--r--pkgs/development/python-modules/pyqt6-charts/default.nix36
-rw-r--r--pkgs/development/python-modules/pyqt6-webengine/default.nix44
-rw-r--r--pkgs/development/python-modules/pyqtchart/default.nix43
-rw-r--r--pkgs/development/python-modules/pyqtdarktheme/default.nix45
-rw-r--r--pkgs/development/python-modules/pyqtdatavisualization/default.nix43
-rw-r--r--pkgs/development/python-modules/pyqtgraph/default.nix77
-rw-r--r--pkgs/development/python-modules/pyqtwebengine/default.nix170
-rw-r--r--pkgs/development/python-modules/pyquaternion/default.nix33
-rw-r--r--pkgs/development/python-modules/pyquery/default.nix25
-rw-r--r--pkgs/development/python-modules/pyquil/default.nix24
-rw-r--r--pkgs/development/python-modules/pyqvrpro/default.nix23
-rw-r--r--pkgs/development/python-modules/pyqwikswitch/default.nix12
-rw-r--r--pkgs/development/python-modules/pyrabbit2/default.nix15
-rw-r--r--pkgs/development/python-modules/pyrad/default.nix66
-rw-r--r--pkgs/development/python-modules/pyradiomics/default.nix34
-rw-r--r--pkgs/development/python-modules/pyradios/default.nix15
-rw-r--r--pkgs/development/python-modules/pyrainbird/default.nix59
-rw-r--r--pkgs/development/python-modules/pyramid-beaker/default.nix18
-rw-r--r--pkgs/development/python-modules/pyramid-chameleon/default.nix28
-rw-r--r--pkgs/development/python-modules/pyramid-exclog/default.nix12
-rw-r--r--pkgs/development/python-modules/pyramid-jinja2/default.nix25
-rw-r--r--pkgs/development/python-modules/pyramid-mako/default.nix22
-rw-r--r--pkgs/development/python-modules/pyramid-multiauth/default.nix27
-rw-r--r--pkgs/development/python-modules/pyramid/default.nix37
-rw-r--r--pkgs/development/python-modules/pyrate-limiter/default.nix17
-rw-r--r--pkgs/development/python-modules/pyrdfa3/default.nix25
-rw-r--r--pkgs/development/python-modules/pyre-extensions/default.nix15
-rw-r--r--pkgs/development/python-modules/pyreaderwriterlock/default.nix28
-rw-r--r--pkgs/development/python-modules/pyreadstat/default.nix45
-rw-r--r--pkgs/development/python-modules/pyrect/default.nix16
-rw-r--r--pkgs/development/python-modules/pyregion/default.nix41
-rw-r--r--pkgs/development/python-modules/pyrender/default.nix46
-rw-r--r--pkgs/development/python-modules/pyreqwest-impersonate/default.nix69
-rw-r--r--pkgs/development/python-modules/pyrevolve/default.nix29
-rw-r--r--pkgs/development/python-modules/pyrfc3339/default.nix34
-rw-r--r--pkgs/development/python-modules/pyrfxtrx/default.nix25
-rw-r--r--pkgs/development/python-modules/pyric/default.nix13
-rw-r--r--pkgs/development/python-modules/pyring-buffer/default.nix21
-rw-r--r--pkgs/development/python-modules/pyrisco/default.nix4
-rw-r--r--pkgs/development/python-modules/pyrituals/default.nix17
-rw-r--r--pkgs/development/python-modules/pyrmvtransport/default.nix33
-rw-r--r--pkgs/development/python-modules/pyro-api/default.nix8
-rw-r--r--pkgs/development/python-modules/pyro-ppl/default.nix75
-rw-r--r--pkgs/development/python-modules/pyro4/default.nix31
-rw-r--r--pkgs/development/python-modules/pyro5/default.nix31
-rw-r--r--pkgs/development/python-modules/pyrogram/default.nix17
-rw-r--r--pkgs/development/python-modules/pyroma/default.nix37
-rw-r--r--pkgs/development/python-modules/pyroute2/default.nix31
-rw-r--r--pkgs/development/python-modules/pyrr/default.nix17
-rw-r--r--pkgs/development/python-modules/pyrsistent/default.nix27
-rw-r--r--pkgs/development/python-modules/pyrss2gen/default.nix8
-rw-r--r--pkgs/development/python-modules/pyrtlsdr/default.nix18
-rw-r--r--pkgs/development/python-modules/pyrympro/default.nix39
-rw-r--r--pkgs/development/python-modules/pysabnzbd/default.nix13
-rw-r--r--pkgs/development/python-modules/pysaj/default.nix17
-rw-r--r--pkgs/development/python-modules/pysam/default.nix33
-rw-r--r--pkgs/development/python-modules/pysaml2/default.nix58
-rw-r--r--pkgs/development/python-modules/pysatochip/default.nix29
-rw-r--r--pkgs/development/python-modules/pysbd/default.nix18
-rw-r--r--pkgs/development/python-modules/pysc2/default.nix37
-rw-r--r--pkgs/development/python-modules/pyscaffold/default.nix67
-rw-r--r--pkgs/development/python-modules/pyscaffoldext-cookiecutter/default.nix33
-rw-r--r--pkgs/development/python-modules/pyscaffoldext-custom-extension/default.nix33
-rw-r--r--pkgs/development/python-modules/pyscaffoldext-django/default.nix33
-rw-r--r--pkgs/development/python-modules/pyscaffoldext-dsproject/default.nix33
-rw-r--r--pkgs/development/python-modules/pyscaffoldext-markdown/default.nix35
-rw-r--r--pkgs/development/python-modules/pyscaffoldext-travis/default.nix31
-rw-r--r--pkgs/development/python-modules/pyscard/default.nix72
-rw-r--r--pkgs/development/python-modules/pyscf/default.nix43
-rw-r--r--pkgs/development/python-modules/pyschedule/default.nix13
-rw-r--r--pkgs/development/python-modules/pyschemes/default.nix17
-rw-r--r--pkgs/development/python-modules/pyschlage/default.nix35
-rw-r--r--pkgs/development/python-modules/pyscreenshot/default.nix41
-rw-r--r--pkgs/development/python-modules/pyscreeze/default.nix27
-rw-r--r--pkgs/development/python-modules/pyscrypt/default.nix7
-rw-r--r--pkgs/development/python-modules/pyscss/default.nix21
-rw-r--r--pkgs/development/python-modules/pysdcp/default.nix9
-rw-r--r--pkgs/development/python-modules/pysdl2/default.nix48
-rw-r--r--pkgs/development/python-modules/pysecuritas/default.nix28
-rw-r--r--pkgs/development/python-modules/pysendfile/default.nix6
-rw-r--r--pkgs/development/python-modules/pysensibo/default.nix30
-rw-r--r--pkgs/development/python-modules/pysensors/default.nix13
-rw-r--r--pkgs/development/python-modules/pysequoia/default.nix59
-rw-r--r--pkgs/development/python-modules/pyserial-asyncio-fast/default.nix40
-rw-r--r--pkgs/development/python-modules/pyserial-asyncio/default.nix21
-rw-r--r--pkgs/development/python-modules/pyserial/default.nix25
-rw-r--r--pkgs/development/python-modules/pyseventeentrack/default.nix47
-rw-r--r--pkgs/development/python-modules/pysftp/default.nix14
-rw-r--r--pkgs/development/python-modules/pyshark/default.nix55
-rw-r--r--pkgs/development/python-modules/pyshp/default.nix21
-rw-r--r--pkgs/development/python-modules/pysiaalarm/default.nix27
-rw-r--r--pkgs/development/python-modules/pyside2-tools/default.nix31
-rw-r--r--pkgs/development/python-modules/pyside2/Final-details-to-enable-3.12-wheel-compatibility.patch28
-rw-r--r--pkgs/development/python-modules/pyside2/Modify-sendCommand-signatures.patch41
-rw-r--r--pkgs/development/python-modules/pyside2/Python-3.12-Fix-the-structure-of-class-property.patch37
-rw-r--r--pkgs/development/python-modules/pyside2/Support-running-PySide-on-Python-3.12.patch298
-rw-r--r--pkgs/development/python-modules/pyside2/default.nix96
-rw-r--r--pkgs/development/python-modules/pyside2/nix_compile_cflags.patch23
-rw-r--r--pkgs/development/python-modules/pyside2/shiboken2-clang-Fix-and-simplify-resolveType-helper.patch88
-rw-r--r--pkgs/development/python-modules/pyside2/shiboken2-clang-Fix-build-with-clang-16.patch108
-rw-r--r--pkgs/development/python-modules/pyside2/shiboken2-clang-Fix-clashes-between-type-name-and-enumera.patch92
-rw-r--r--pkgs/development/python-modules/pyside2/shiboken2-clang-Record-scope-resolution-of-arguments-func.patch178
-rw-r--r--pkgs/development/python-modules/pyside2/shiboken2-clang-Remove-typedef-expansion.patch101
-rw-r--r--pkgs/development/python-modules/pyside2/shiboken2-clang-Suppress-class-scope-look-up-for-paramete.patch96
-rw-r--r--pkgs/development/python-modules/pyside2/shiboken2-clang-Write-scope-resolution-for-all-parameters.patch62
-rw-r--r--pkgs/development/python-modules/pyside6/default.nix152
-rw-r--r--pkgs/development/python-modules/pysigma-backend-elasticsearch/default.nix4
-rw-r--r--pkgs/development/python-modules/pysigma-backend-insightidr/default.nix33
-rw-r--r--pkgs/development/python-modules/pysigma-backend-opensearch/default.nix40
-rw-r--r--pkgs/development/python-modules/pysigma-backend-qradar/default.nix32
-rw-r--r--pkgs/development/python-modules/pysigma-backend-splunk/default.nix29
-rw-r--r--pkgs/development/python-modules/pysigma-backend-sqlite/default.nix29
-rw-r--r--pkgs/development/python-modules/pysigma-pipeline-crowdstrike/default.nix38
-rw-r--r--pkgs/development/python-modules/pysigma-pipeline-sysmon/default.nix31
-rw-r--r--pkgs/development/python-modules/pysigma-pipeline-windows/default.nix31
-rw-r--r--pkgs/development/python-modules/pysigma/default.nix7
-rw-r--r--pkgs/development/python-modules/pysignalclirestapi/default.nix17
-rw-r--r--pkgs/development/python-modules/pysigset/default.nix6
-rw-r--r--pkgs/development/python-modules/pysilero-vad/default.nix51
-rw-r--r--pkgs/development/python-modules/pysim/default.nix52
-rw-r--r--pkgs/development/python-modules/pysimplegui/default.nix36
-rw-r--r--pkgs/development/python-modules/pysimplesoap/default.nix73
-rw-r--r--pkgs/development/python-modules/pysingleton/default.nix7
-rw-r--r--pkgs/development/python-modules/pyskyqhub/default.nix19
-rw-r--r--pkgs/development/python-modules/pyskyqremote/default.nix19
-rw-r--r--pkgs/development/python-modules/pyslim/default.nix25
-rw-r--r--pkgs/development/python-modules/pyslurm/default.nix33
-rw-r--r--pkgs/development/python-modules/pysma/default.nix19
-rw-r--r--pkgs/development/python-modules/pysmappee/default.nix25
-rw-r--r--pkgs/development/python-modules/pysmart/default.nix31
-rw-r--r--pkgs/development/python-modules/pysmartapp/default.nix23
-rw-r--r--pkgs/development/python-modules/pysmartdl/default.nix27
-rw-r--r--pkgs/development/python-modules/pysmartthings/default.nix23
-rw-r--r--pkgs/development/python-modules/pysmb/default.nix13
-rw-r--r--pkgs/development/python-modules/pysmbc/default.nix25
-rw-r--r--pkgs/development/python-modules/pysmf/default.nix24
-rw-r--r--pkgs/development/python-modules/pysmi-lextudio/default.nix49
-rw-r--r--pkgs/development/python-modules/pysmi/default.nix55
-rw-r--r--pkgs/development/python-modules/pysml/default.nix41
-rw-r--r--pkgs/development/python-modules/pysmlight/default.nix49
-rw-r--r--pkgs/development/python-modules/pysmt/default.nix23
-rw-r--r--pkgs/development/python-modules/pysnmp-lextudio/default.nix75
-rw-r--r--pkgs/development/python-modules/pysnmp-pyasn1/default.nix25
-rw-r--r--pkgs/development/python-modules/pysnmp-pysmi/default.nix23
-rw-r--r--pkgs/development/python-modules/pysnmp/default.nix78
-rw-r--r--pkgs/development/python-modules/pysnmpcrypto/default.nix35
-rw-r--r--pkgs/development/python-modules/pysnmplib/default.nix25
-rw-r--r--pkgs/development/python-modules/pysnooper/default.nix21
-rw-r--r--pkgs/development/python-modules/pysnooz/default.nix39
-rw-r--r--pkgs/development/python-modules/pysnow/default.nix35
-rw-r--r--pkgs/development/python-modules/pysocks/default.nix10
-rw-r--r--pkgs/development/python-modules/pysol-cards/default.nix13
-rw-r--r--pkgs/development/python-modules/pysolcast/default.nix14
-rw-r--r--pkgs/development/python-modules/pysolr/default.nix10
-rw-r--r--pkgs/development/python-modules/pysoma/default.nix13
-rw-r--r--pkgs/development/python-modules/pysonos/default.nix23
-rw-r--r--pkgs/development/python-modules/pyspark/default.nix44
-rw-r--r--pkgs/development/python-modules/pyspcwebgw/default.nix29
-rw-r--r--pkgs/development/python-modules/pyspeex-noise/default.nix43
-rw-r--r--pkgs/development/python-modules/pyspellchecker/default.nix19
-rw-r--r--pkgs/development/python-modules/pyspf/default.nix7
-rw-r--r--pkgs/development/python-modules/pyspice/default.nix28
-rw-r--r--pkgs/development/python-modules/pyspiflash/default.nix13
-rw-r--r--pkgs/development/python-modules/pyspinel/default.nix19
-rw-r--r--pkgs/development/python-modules/pyspnego/default.nix41
-rw-r--r--pkgs/development/python-modules/pysptk/default.nix36
-rw-r--r--pkgs/development/python-modules/pyspx/default.nix25
-rw-r--r--pkgs/development/python-modules/pysqlcipher3/default.nix11
-rw-r--r--pkgs/development/python-modules/pysqlitecipher/default.nix15
-rw-r--r--pkgs/development/python-modules/pysqueezebox/default.nix39
-rw-r--r--pkgs/development/python-modules/pysrim/default.nix24
-rw-r--r--pkgs/development/python-modules/pysrt/default.nix31
-rw-r--r--pkgs/development/python-modules/pyssim/default.nix16
-rw-r--r--pkgs/development/python-modules/pystac-client/default.nix62
-rw-r--r--pkgs/development/python-modules/pystac/default.nix53
-rw-r--r--pkgs/development/python-modules/pystache/default.nix29
-rw-r--r--pkgs/development/python-modules/pystardict/default.nix23
-rw-r--r--pkgs/development/python-modules/pystatgrab/default.nix46
-rw-r--r--pkgs/development/python-modules/pystemd/default.nix34
-rw-r--r--pkgs/development/python-modules/pystemmer/default.nix31
-rw-r--r--pkgs/development/python-modules/pystray/default.nix56
-rw-r--r--pkgs/development/python-modules/pysubs2/default.nix33
-rw-r--r--pkgs/development/python-modules/pysuez/default.nix23
-rw-r--r--pkgs/development/python-modules/pysvg-py3/default.nix9
-rw-r--r--pkgs/development/python-modules/pysvn/default.nix61
-rw-r--r--pkgs/development/python-modules/pyswitchbee/default.nix29
-rw-r--r--pkgs/development/python-modules/pyswitchbot/default.nix45
-rw-r--r--pkgs/development/python-modules/pysychonaut/default.nix23
-rw-r--r--pkgs/development/python-modules/pysyncobj/default.nix13
-rw-r--r--pkgs/development/python-modules/pysyncthru/default.nix25
-rw-r--r--pkgs/development/python-modules/pytabix/default.nix11
-rw-r--r--pkgs/development/python-modules/pytablewriter/default.nix81
-rw-r--r--pkgs/development/python-modules/pytado/default.nix37
-rw-r--r--pkgs/development/python-modules/pytaglib/default.nix23
-rw-r--r--pkgs/development/python-modules/pytankerkoenig/default.nix7
-rw-r--r--pkgs/development/python-modules/pytap2/default.nix25
-rw-r--r--pkgs/development/python-modules/pytapo/default.nix34
-rw-r--r--pkgs/development/python-modules/pytautulli/default.nix33
-rw-r--r--pkgs/development/python-modules/pyte/default.nix11
-rw-r--r--pkgs/development/python-modules/pytedee-async/default.nix29
-rw-r--r--pkgs/development/python-modules/pytenable/default.nix21
-rw-r--r--pkgs/development/python-modules/pytensor/default.nix81
-rw-r--r--pkgs/development/python-modules/pytesseract/default.nix31
-rw-r--r--pkgs/development/python-modules/pytest-aio/default.nix26
-rw-r--r--pkgs/development/python-modules/pytest-aiohttp/default.nix29
-rw-r--r--pkgs/development/python-modules/pytest-annotate/default.nix27
-rw-r--r--pkgs/development/python-modules/pytest-ansible/default.nix106
-rw-r--r--pkgs/development/python-modules/pytest-arraydiff/default.nix35
-rw-r--r--pkgs/development/python-modules/pytest-astropy-header/default.nix25
-rw-r--r--pkgs/development/python-modules/pytest-astropy/default.nix41
-rw-r--r--pkgs/development/python-modules/pytest-asyncio/default.nix33
-rw-r--r--pkgs/development/python-modules/pytest-asyncio/tests.nix17
-rw-r--r--pkgs/development/python-modules/pytest-base-url/default.nix39
-rw-r--r--pkgs/development/python-modules/pytest-benchmark/default.nix55
-rw-r--r--pkgs/development/python-modules/pytest-black/default.nix22
-rw-r--r--pkgs/development/python-modules/pytest-cases/default.nix29
-rw-r--r--pkgs/development/python-modules/pytest-catchlog/default.nix10
-rw-r--r--pkgs/development/python-modules/pytest-celery/default.nix11
-rw-r--r--pkgs/development/python-modules/pytest-check/default.nix33
-rw-r--r--pkgs/development/python-modules/pytest-cid/default.nix27
-rw-r--r--pkgs/development/python-modules/pytest-click/default.nix21
-rw-r--r--pkgs/development/python-modules/pytest-console-scripts/default.nix33
-rw-r--r--pkgs/development/python-modules/pytest-cov-stub/default.nix22
-rw-r--r--pkgs/development/python-modules/pytest-cov-stub/src/pyproject.toml13
-rw-r--r--pkgs/development/python-modules/pytest-cov-stub/src/pytest_cov/__init__.py0
-rw-r--r--pkgs/development/python-modules/pytest-cov-stub/src/pytest_cov/plugin.py93
-rw-r--r--pkgs/development/python-modules/pytest-cov/default.nix25
-rw-r--r--pkgs/development/python-modules/pytest-cram/default.nix26
-rw-r--r--pkgs/development/python-modules/pytest-datadir/default.nix15
-rw-r--r--pkgs/development/python-modules/pytest-datafiles/default.nix25
-rw-r--r--pkgs/development/python-modules/pytest-dependency/default.nix29
-rw-r--r--pkgs/development/python-modules/pytest-describe/default.nix23
-rw-r--r--pkgs/development/python-modules/pytest-django/default.nix34
-rw-r--r--pkgs/development/python-modules/pytest-docker-tools/default.nix54
-rw-r--r--pkgs/development/python-modules/pytest-doctestplus/default.nix33
-rw-r--r--pkgs/development/python-modules/pytest-dotenv/default.nix10
-rw-r--r--pkgs/development/python-modules/pytest-emoji/default.nix27
-rw-r--r--pkgs/development/python-modules/pytest-env/default.nix23
-rw-r--r--pkgs/development/python-modules/pytest-error-for-skips/default.nix11
-rw-r--r--pkgs/development/python-modules/pytest-examples/default.nix77
-rw-r--r--pkgs/development/python-modules/pytest-expect/default.nix18
-rw-r--r--pkgs/development/python-modules/pytest-factoryboy/default.nix47
-rw-r--r--pkgs/development/python-modules/pytest-filter-subpackage/default.nix37
-rw-r--r--pkgs/development/python-modules/pytest-fixture-config/default.nix37
-rw-r--r--pkgs/development/python-modules/pytest-fixture-config/setuptools-72.0-compat.patch396
-rw-r--r--pkgs/development/python-modules/pytest-flake8/default.nix53
-rw-r--r--pkgs/development/python-modules/pytest-flakes/default.nix10
-rw-r--r--pkgs/development/python-modules/pytest-flask/default.nix41
-rw-r--r--pkgs/development/python-modules/pytest-forked/default.nix49
-rw-r--r--pkgs/development/python-modules/pytest-freezegun/default.nix23
-rw-r--r--pkgs/development/python-modules/pytest-freezer/default.nix37
-rw-r--r--pkgs/development/python-modules/pytest-golden/default.nix37
-rw-r--r--pkgs/development/python-modules/pytest-grpc/default.nix20
-rw-r--r--pkgs/development/python-modules/pytest-harvest/default.nix37
-rw-r--r--pkgs/development/python-modules/pytest-helpers-namespace/default.nix25
-rw-r--r--pkgs/development/python-modules/pytest-html/default.nix35
-rw-r--r--pkgs/development/python-modules/pytest-httpbin/default.nix41
-rw-r--r--pkgs/development/python-modules/pytest-httpserver/default.nix31
-rw-r--r--pkgs/development/python-modules/pytest-httpx/default.nix39
-rw-r--r--pkgs/development/python-modules/pytest-image-diff/default.nix18
-rw-r--r--pkgs/development/python-modules/pytest-instafail/default.nix27
-rw-r--r--pkgs/development/python-modules/pytest-isort/default.nix43
-rw-r--r--pkgs/development/python-modules/pytest-jupyter/default.nix127
-rw-r--r--pkgs/development/python-modules/pytest-lazy-fixture/default.nix23
-rw-r--r--pkgs/development/python-modules/pytest-lazy-fixtures/default.nix32
-rw-r--r--pkgs/development/python-modules/pytest-localserver/default.nix17
-rw-r--r--pkgs/development/python-modules/pytest-logdog/default.nix37
-rw-r--r--pkgs/development/python-modules/pytest-markdown-docs/default.nix43
-rw-r--r--pkgs/development/python-modules/pytest-md-report/default.nix37
-rw-r--r--pkgs/development/python-modules/pytest-metadata/default.nix25
-rw-r--r--pkgs/development/python-modules/pytest-mock/default.nix29
-rw-r--r--pkgs/development/python-modules/pytest-mockito/default.nix25
-rw-r--r--pkgs/development/python-modules/pytest-mockservers/default.nix39
-rw-r--r--pkgs/development/python-modules/pytest-mpi/default.nix56
-rw-r--r--pkgs/development/python-modules/pytest-mpl/default.nix34
-rw-r--r--pkgs/development/python-modules/pytest-mypy-plugins/default.nix47
-rw-r--r--pkgs/development/python-modules/pytest-mypy/default.nix29
-rw-r--r--pkgs/development/python-modules/pytest-notebook/default.nix41
-rw-r--r--pkgs/development/python-modules/pytest-openfiles/default.nix50
-rw-r--r--pkgs/development/python-modules/pytest-order/default.nix42
-rw-r--r--pkgs/development/python-modules/pytest-parallel/default.nix20
-rw-r--r--pkgs/development/python-modules/pytest-param-files/default.nix35
-rw-r--r--pkgs/development/python-modules/pytest-playwright/default.nix43
-rw-r--r--pkgs/development/python-modules/pytest-plt/default.nix11
-rw-r--r--pkgs/development/python-modules/pytest-postgresql/default.nix40
-rw-r--r--pkgs/development/python-modules/pytest-pudb/default.nix13
-rw-r--r--pkgs/development/python-modules/pytest-pylint/default.nix40
-rw-r--r--pkgs/development/python-modules/pytest-pytestrail/default.nix29
-rw-r--r--pkgs/development/python-modules/pytest-qt/default.nix33
-rw-r--r--pkgs/development/python-modules/pytest-quickcheck/default.nix17
-rw-r--r--pkgs/development/python-modules/pytest-raises/default.nix27
-rw-r--r--pkgs/development/python-modules/pytest-raisesregexp/default.nix25
-rw-r--r--pkgs/development/python-modules/pytest-raisin/default.nix19
-rw-r--r--pkgs/development/python-modules/pytest-random-order/default.nix31
-rw-r--r--pkgs/development/python-modules/pytest-randomly/default.nix35
-rw-r--r--pkgs/development/python-modules/pytest-recording/default.nix57
-rw-r--r--pkgs/development/python-modules/pytest-regressions/default.nix62
-rw-r--r--pkgs/development/python-modules/pytest-relaxed/default.nix37
-rw-r--r--pkgs/development/python-modules/pytest-remotedata/default.nix39
-rw-r--r--pkgs/development/python-modules/pytest-repeat/default.nix31
-rw-r--r--pkgs/development/python-modules/pytest-rerunfailures/default.nix35
-rw-r--r--pkgs/development/python-modules/pytest-resource-path/default.nix31
-rw-r--r--pkgs/development/python-modules/pytest-responses/default.nix38
-rw-r--r--pkgs/development/python-modules/pytest-reverse/default.nix19
-rw-r--r--pkgs/development/python-modules/pytest-runner/default.nix39
-rw-r--r--pkgs/development/python-modules/pytest-server-fixtures/default.nix48
-rw-r--r--pkgs/development/python-modules/pytest-services/default.nix34
-rw-r--r--pkgs/development/python-modules/pytest-shutil/default.nix87
-rw-r--r--pkgs/development/python-modules/pytest-snapshot/default.nix37
-rw-r--r--pkgs/development/python-modules/pytest-socket/default.nix28
-rw-r--r--pkgs/development/python-modules/pytest-spec/default.nix32
-rw-r--r--pkgs/development/python-modules/pytest-subprocess/default.nix43
-rw-r--r--pkgs/development/python-modules/pytest-subtesthack/default.nix7
-rw-r--r--pkgs/development/python-modules/pytest-subtests/default.nix35
-rw-r--r--pkgs/development/python-modules/pytest-sugar/default.nix29
-rw-r--r--pkgs/development/python-modules/pytest-tap/default.nix31
-rw-r--r--pkgs/development/python-modules/pytest-test-utils/default.nix42
-rw-r--r--pkgs/development/python-modules/pytest-testinfra/default.nix4
-rw-r--r--pkgs/development/python-modules/pytest-testmon/default.nix32
-rw-r--r--pkgs/development/python-modules/pytest-textual-snapshot/default.nix37
-rw-r--r--pkgs/development/python-modules/pytest-timeout/default.nix25
-rw-r--r--pkgs/development/python-modules/pytest-tornado/default.nix15
-rw-r--r--pkgs/development/python-modules/pytest-tornasync/default.nix16
-rw-r--r--pkgs/development/python-modules/pytest-trio/default.nix12
-rw-r--r--pkgs/development/python-modules/pytest-twisted/default.nix45
-rw-r--r--pkgs/development/python-modules/pytest-unordered/default.nix19
-rw-r--r--pkgs/development/python-modules/pytest-vcr/default.nix15
-rw-r--r--pkgs/development/python-modules/pytest-virtualenv/default.nix52
-rw-r--r--pkgs/development/python-modules/pytest-voluptuous/default.nix35
-rw-r--r--pkgs/development/python-modules/pytest-warnings/default.nix7
-rw-r--r--pkgs/development/python-modules/pytest-watch/default.nix21
-rw-r--r--pkgs/development/python-modules/pytest-xdist/default.nix44
-rw-r--r--pkgs/development/python-modules/pytest-xprocess/default.nix29
-rw-r--r--pkgs/development/python-modules/pytest-xvfb/default.nix25
-rw-r--r--pkgs/development/python-modules/pytest/7.nix204
-rw-r--r--pkgs/development/python-modules/pytest/default.nix82
-rw-r--r--pkgs/development/python-modules/pytest/tests.nix7
-rw-r--r--pkgs/development/python-modules/pytestcache/default.nix9
-rw-r--r--pkgs/development/python-modules/python-aodhclient/default.nix82
-rw-r--r--pkgs/development/python-modules/python-apt/default.nix17
-rw-r--r--pkgs/development/python-modules/python-arango/default.nix53
-rw-r--r--pkgs/development/python-modules/python-awair/default.nix21
-rw-r--r--pkgs/development/python-modules/python-axolotl-curve25519/default.nix6
-rw-r--r--pkgs/development/python-modules/python-axolotl/default.nix15
-rw-r--r--pkgs/development/python-modules/python-barbicanclient/default.nix85
-rw-r--r--pkgs/development/python-modules/python-barcode/default.nix29
-rw-r--r--pkgs/development/python-modules/python-baseconv/default.nix9
-rw-r--r--pkgs/development/python-modules/python-benedict/default.nix71
-rw-r--r--pkgs/development/python-modules/python-bidi/default.nix46
-rw-r--r--pkgs/development/python-modules/python-binance/default.nix33
-rw-r--r--pkgs/development/python-modules/python-box/default.nix66
-rw-r--r--pkgs/development/python-modules/python-bring-api/default.nix25
-rw-r--r--pkgs/development/python-modules/python-bsblan/default.nix69
-rw-r--r--pkgs/development/python-modules/python-calamine/Cargo.lock914
-rw-r--r--pkgs/development/python-modules/python-calamine/default.nix69
-rw-r--r--pkgs/development/python-modules/python-can/default.nix (renamed from pkgs/development/python-modules/can/default.nix)92
-rw-r--r--pkgs/development/python-modules/python-cinderclient/default.nix58
-rw-r--r--pkgs/development/python-modules/python-codon-tables/default.nix7
-rw-r--r--pkgs/development/python-modules/python-constraint/default.nix11
-rw-r--r--pkgs/development/python-modules/python-creole/default.nix54
-rw-r--r--pkgs/development/python-modules/python-crfsuite/default.nix18
-rw-r--r--pkgs/development/python-modules/python-crontab/default.nix35
-rw-r--r--pkgs/development/python-modules/python-csxcad/default.nix26
-rw-r--r--pkgs/development/python-modules/python-ctags3/default.nix11
-rw-r--r--pkgs/development/python-modules/python-daemon/default.nix42
-rw-r--r--pkgs/development/python-modules/python-datemath/default.nix56
-rw-r--r--pkgs/development/python-modules/python-dateutil/default.nix16
-rw-r--r--pkgs/development/python-modules/python-dbusmock/default.nix80
-rw-r--r--pkgs/development/python-modules/python-decouple/default.nix17
-rw-r--r--pkgs/development/python-modules/python-designateclient/default.nix83
-rw-r--r--pkgs/development/python-modules/python-didl-lite/default.nix31
-rw-r--r--pkgs/development/python-modules/python-digitalocean/default.nix5
-rw-r--r--pkgs/development/python-modules/python-djvulibre/default.nix29
-rw-r--r--pkgs/development/python-modules/python-docs-theme/default.nix29
-rw-r--r--pkgs/development/python-modules/python-docx/default.nix43
-rw-r--r--pkgs/development/python-modules/python-doi/default.nix7
-rw-r--r--pkgs/development/python-modules/python-dotenv/default.nix23
-rw-r--r--pkgs/development/python-modules/python-ecobee-api/default.nix32
-rw-r--r--pkgs/development/python-modules/python-editor/default.nix9
-rw-r--r--pkgs/development/python-modules/python-efl/default.nix37
-rw-r--r--pkgs/development/python-modules/python-engineio-v3/default.nix46
-rw-r--r--pkgs/development/python-modules/python-engineio/default.nix63
-rw-r--r--pkgs/development/python-modules/python-escpos/default.nix101
-rw-r--r--pkgs/development/python-modules/python-etcd/default.nix66
-rw-r--r--pkgs/development/python-modules/python-ethtool/default.nix35
-rw-r--r--pkgs/development/python-modules/python-ev3dev2/default.nix11
-rw-r--r--pkgs/development/python-modules/python-family-hub-local/default.nix20
-rw-r--r--pkgs/development/python-modules/python-fedora/default.nix41
-rw-r--r--pkgs/development/python-modules/python-ffmpeg/default.nix30
-rw-r--r--pkgs/development/python-modules/python-flirt/default.nix17
-rw-r--r--pkgs/development/python-modules/python-fluent/fluent-pygments.nix51
-rw-r--r--pkgs/development/python-modules/python-fluent/fluent-runtime.nix61
-rw-r--r--pkgs/development/python-modules/python-fluent/fluent-syntax.nix44
-rw-r--r--pkgs/development/python-modules/python-fontconfig/default.nix31
-rw-r--r--pkgs/development/python-modules/python-frontmatter/default.nix14
-rw-r--r--pkgs/development/python-modules/python-fsutil/default.nix35
-rw-r--r--pkgs/development/python-modules/python-fullykiosk/default.nix23
-rw-r--r--pkgs/development/python-modules/python-fx/default.nix87
-rw-r--r--pkgs/development/python-modules/python-gammu/default.nix25
-rw-r--r--pkgs/development/python-modules/python-gitlab/default.nix56
-rw-r--r--pkgs/development/python-modules/python-glanceclient/default.nix73
-rw-r--r--pkgs/development/python-modules/python-gnupg/default.nix25
-rw-r--r--pkgs/development/python-modules/python-google-nest/default.nix19
-rw-r--r--pkgs/development/python-modules/python-gvm/default.nix43
-rw-r--r--pkgs/development/python-modules/python-hcl2/default.nix44
-rw-r--r--pkgs/development/python-modules/python-heatclient/default.nix66
-rw-r--r--pkgs/development/python-modules/python-hglib/default.nix50
-rw-r--r--pkgs/development/python-modules/python-hl7/default.nix15
-rw-r--r--pkgs/development/python-modules/python-homeassistant-analytics/default.nix7
-rw-r--r--pkgs/development/python-modules/python-homewizard-energy/default.nix41
-rw-r--r--pkgs/development/python-modules/python-hosts/default.nix39
-rw-r--r--pkgs/development/python-modules/python-hpilo/default.nix12
-rw-r--r--pkgs/development/python-modules/python-http-client/default.nix17
-rw-r--r--pkgs/development/python-modules/python-i18n/default.nix13
-rw-r--r--pkgs/development/python-modules/python-idzip/default.nix23
-rw-r--r--pkgs/development/python-modules/python-ipmi/default.nix29
-rw-r--r--pkgs/development/python-modules/python-ipware/default.nix27
-rw-r--r--pkgs/development/python-modules/python-ironicclient/default.nix66
-rw-r--r--pkgs/development/python-modules/python-izone/default.nix29
-rw-r--r--pkgs/development/python-modules/python-jenkins/default.nix58
-rw-r--r--pkgs/development/python-modules/python-jose/default.nix76
-rw-r--r--pkgs/development/python-modules/python-json-logger/default.nix11
-rw-r--r--pkgs/development/python-modules/python-jsonrpc-server/default.nix27
-rw-r--r--pkgs/development/python-modules/python-juicenet/default.nix19
-rw-r--r--pkgs/development/python-modules/python-kasa/default.nix65
-rw-r--r--pkgs/development/python-modules/python-keycloak/default.nix50
-rw-r--r--pkgs/development/python-modules/python-keystoneclient/default.nix44
-rw-r--r--pkgs/development/python-modules/python-ldap-test/default.nix8
-rw-r--r--pkgs/development/python-modules/python-ldap/default.nix43
-rw-r--r--pkgs/development/python-modules/python-libnmap/default.nix20
-rw-r--r--pkgs/development/python-modules/python-linkplay/default.nix55
-rw-r--r--pkgs/development/python-modules/python-linux-procfs/default.nix21
-rw-r--r--pkgs/development/python-modules/python-logging-loki/default.nix49
-rw-r--r--pkgs/development/python-modules/python-logstash/default.nix6
-rw-r--r--pkgs/development/python-modules/python-louvain/default.nix30
-rw-r--r--pkgs/development/python-modules/python-lsp-black/default.nix80
-rw-r--r--pkgs/development/python-modules/python-lsp-jsonrpc/default.nix29
-rw-r--r--pkgs/development/python-modules/python-lsp-ruff/default.nix53
-rw-r--r--pkgs/development/python-modules/python-lsp-server/default.nix112
-rw-r--r--pkgs/development/python-modules/python-ly/default.nix8
-rw-r--r--pkgs/development/python-modules/python-lzf/default.nix24
-rw-r--r--pkgs/development/python-modules/python-lzo/default.nix30
-rw-r--r--pkgs/development/python-modules/python-magic/default.nix25
-rw-r--r--pkgs/development/python-modules/python-magnumclient/default.nix97
-rw-r--r--pkgs/development/python-modules/python-manilaclient/default.nix67
-rw-r--r--pkgs/development/python-modules/python-manilaclient/tests.nix15
-rw-r--r--pkgs/development/python-modules/python-mapnik/default.nix120
-rw-r--r--pkgs/development/python-modules/python-mapnik/python-mapnik_std_optional.patch176
-rw-r--r--pkgs/development/python-modules/python-markdown-math/default.nix11
-rw-r--r--pkgs/development/python-modules/python-matter-server/default.nix99
-rw-r--r--pkgs/development/python-modules/python-matter-server/link-paa-root-certs.patch29
-rw-r--r--pkgs/development/python-modules/python-mbedtls/default.nix27
-rw-r--r--pkgs/development/python-modules/python-memcached/default.nix19
-rw-r--r--pkgs/development/python-modules/python-miio/default.nix64
-rw-r--r--pkgs/development/python-modules/python-mimeparse/default.nix17
-rw-r--r--pkgs/development/python-modules/python-mistralclient/default.nix95
-rw-r--r--pkgs/development/python-modules/python-mnist/default.nix6
-rw-r--r--pkgs/development/python-modules/python-motionmount/default.nix4
-rw-r--r--pkgs/development/python-modules/python-mpv-jsonipc/default.nix17
-rw-r--r--pkgs/development/python-modules/python-multipart/default.nix47
-rw-r--r--pkgs/development/python-modules/python-musicpd/default.nix18
-rw-r--r--pkgs/development/python-modules/python-mystrom/default.nix15
-rw-r--r--pkgs/development/python-modules/python-ndn/default.nix41
-rw-r--r--pkgs/development/python-modules/python-nest/default.nix21
-rw-r--r--pkgs/development/python-modules/python-neutronclient/default.nix98
-rw-r--r--pkgs/development/python-modules/python-nmap/default.nix17
-rw-r--r--pkgs/development/python-modules/python-nomad/default.nix31
-rw-r--r--pkgs/development/python-modules/python-novaclient/default.nix55
-rw-r--r--pkgs/development/python-modules/python-nvd3/default.nix34
-rw-r--r--pkgs/development/python-modules/python-oauth2/default.nix9
-rw-r--r--pkgs/development/python-modules/python-octaviaclient/default.nix89
-rw-r--r--pkgs/development/python-modules/python-olm/default.nix19
-rw-r--r--pkgs/development/python-modules/python-on-whales/default.nix21
-rw-r--r--pkgs/development/python-modules/python-opendata-transport/default.nix23
-rw-r--r--pkgs/development/python-modules/python-openems/default.nix25
-rw-r--r--pkgs/development/python-modules/python-opensky/default.nix37
-rw-r--r--pkgs/development/python-modules/python-openstackclient/default.nix98
-rw-r--r--pkgs/development/python-modules/python-openzwave/default.nix35
-rw-r--r--pkgs/development/python-modules/python-osc/default.nix27
-rw-r--r--pkgs/development/python-modules/python-otbr-api/default.nix31
-rw-r--r--pkgs/development/python-modules/python-owasp-zap-v2-4/default.nix17
-rw-r--r--pkgs/development/python-modules/python-packer/default.nix10
-rw-r--r--pkgs/development/python-modules/python-pae/default.nix23
-rw-r--r--pkgs/development/python-modules/python-pam/default.nix28
-rw-r--r--pkgs/development/python-modules/python-periphery/default.nix8
-rw-r--r--pkgs/development/python-modules/python-picnic-api/default.nix17
-rw-r--r--pkgs/development/python-modules/python-pidfile/default.nix13
-rw-r--r--pkgs/development/python-modules/python-pipedrive/default.nix9
-rw-r--r--pkgs/development/python-modules/python-pkcs11/default.nix15
-rw-r--r--pkgs/development/python-modules/python-pptx/default.nix15
-rw-r--r--pkgs/development/python-modules/python-prctl/default.nix11
-rw-r--r--pkgs/development/python-modules/python-ptrace/default.nix13
-rw-r--r--pkgs/development/python-modules/python-rabbitair/default.nix33
-rw-r--r--pkgs/development/python-modules/python-rapidjson/default.nix53
-rw-r--r--pkgs/development/python-modules/python-redis-lock/default.nix70
-rw-r--r--pkgs/development/python-modules/python-redis-lock/test_signal_expiration_increase_sleep.patch13
-rw-r--r--pkgs/development/python-modules/python-registry/default.nix23
-rw-r--r--pkgs/development/python-modules/python-roborock/default.nix8
-rw-r--r--pkgs/development/python-modules/python-rtmidi/default.nix69
-rw-r--r--pkgs/development/python-modules/python-sat/default.nix32
-rw-r--r--pkgs/development/python-modules/python-secp256k1-cardano/default.nix29
-rw-r--r--pkgs/development/python-modules/python-simple-hipchat/default.nix6
-rw-r--r--pkgs/development/python-modules/python-slugify/default.nix45
-rw-r--r--pkgs/development/python-modules/python-smarttub/default.nix31
-rw-r--r--pkgs/development/python-modules/python-snap7/default.nix17
-rw-r--r--pkgs/development/python-modules/python-snappy/default.nix21
-rw-r--r--pkgs/development/python-modules/python-socketio-v4/default.nix54
-rw-r--r--pkgs/development/python-modules/python-socketio/default.nix53
-rw-r--r--pkgs/development/python-modules/python-socks/default.nix35
-rw-r--r--pkgs/development/python-modules/python-songpal/default.nix23
-rw-r--r--pkgs/development/python-modules/python-sql/default.nix26
-rw-r--r--pkgs/development/python-modules/python-status/default.nix7
-rw-r--r--pkgs/development/python-modules/python-stdnum/default.nix31
-rw-r--r--pkgs/development/python-modules/python-string-utils/default.nix11
-rw-r--r--pkgs/development/python-modules/python-swiftclient/default.nix33
-rw-r--r--pkgs/development/python-modules/python-tado/default.nix34
-rw-r--r--pkgs/development/python-modules/python-tds/default.nix33
-rw-r--r--pkgs/development/python-modules/python-technove/default.nix39
-rw-r--r--pkgs/development/python-modules/python-telegram-bot/default.nix87
-rw-r--r--pkgs/development/python-modules/python-telegram/default.nix52
-rw-r--r--pkgs/development/python-modules/python-toolbox/default.nix13
-rw-r--r--pkgs/development/python-modules/python-troveclient/default.nix87
-rw-r--r--pkgs/development/python-modules/python-trovo/default.nix21
-rw-r--r--pkgs/development/python-modules/python-twitch-client/default.nix29
-rw-r--r--pkgs/development/python-modules/python-twitter/default.nix41
-rw-r--r--pkgs/development/python-modules/python-u2flib-host/default.nix13
-rw-r--r--pkgs/development/python-modules/python-u2flib-server/default.nix34
-rw-r--r--pkgs/development/python-modules/python-uinput/default.nix11
-rw-r--r--pkgs/development/python-modules/python-ulid/default.nix32
-rw-r--r--pkgs/development/python-modules/python-unshare/default.nix14
-rw-r--r--pkgs/development/python-modules/python-utils/default.nix40
-rw-r--r--pkgs/development/python-modules/python-vagrant/default.nix17
-rw-r--r--pkgs/development/python-modules/python-velbus/default.nix19
-rw-r--r--pkgs/development/python-modules/python-vipaccess/default.nix17
-rw-r--r--pkgs/development/python-modules/python-vlc/default.nix25
-rw-r--r--pkgs/development/python-modules/python-watcherclient/default.nix75
-rw-r--r--pkgs/development/python-modules/python-whois/default.nix2
-rw-r--r--pkgs/development/python-modules/python-wifi/default.nix15
-rw-r--r--pkgs/development/python-modules/python-wink/default.nix9
-rw-r--r--pkgs/development/python-modules/python-xapp/default.nix63
-rw-r--r--pkgs/development/python-modules/python-xmp-toolkit/default.nix17
-rw-r--r--pkgs/development/python-modules/python-xz/default.nix20
-rw-r--r--pkgs/development/python-modules/python-yate/default.nix21
-rw-r--r--pkgs/development/python-modules/python-youtube/default.nix28
-rw-r--r--pkgs/development/python-modules/python-zaqarclient/default.nix82
-rw-r--r--pkgs/development/python-modules/python-zbar/default.nix21
-rw-r--r--pkgs/development/python-modules/python-zunclient/default.nix92
-rw-r--r--pkgs/development/python-modules/python3-application/default.nix22
-rw-r--r--pkgs/development/python-modules/python3-eventlib/default.nix18
-rw-r--r--pkgs/development/python-modules/python3-gnutls/default.nix32
-rw-r--r--pkgs/development/python-modules/python3-openid/default.nix8
-rw-r--r--pkgs/development/python-modules/python3-saml/default.nix31
-rw-r--r--pkgs/development/python-modules/pythondialog/default.nix12
-rw-r--r--pkgs/development/python-modules/pythonegardia/default.nix19
-rw-r--r--pkgs/development/python-modules/pythonfinder/default.nix60
-rw-r--r--pkgs/development/python-modules/pythonix/default.nix26
-rw-r--r--pkgs/development/python-modules/pythonnet/default.nix30
-rw-r--r--pkgs/development/python-modules/pythonnet/deps.nix1137
-rw-r--r--pkgs/development/python-modules/pythonocc-core/default.nix56
-rw-r--r--pkgs/development/python-modules/pythran/default.nix58
-rw-r--r--pkgs/development/python-modules/pytibber/default.nix35
-rw-r--r--pkgs/development/python-modules/pytidylib/default.nix9
-rw-r--r--pkgs/development/python-modules/pytikz-allefeld/default.nix29
-rw-r--r--pkgs/development/python-modules/pytile/default.nix33
-rw-r--r--pkgs/development/python-modules/pytimeparse/default.nix28
-rw-r--r--pkgs/development/python-modules/pytimeparse2/default.nix9
-rw-r--r--pkgs/development/python-modules/pytlv/default.nix16
-rw-r--r--pkgs/development/python-modules/pytm/default.nix31
-rw-r--r--pkgs/development/python-modules/pytmx/default.nix21
-rw-r--r--pkgs/development/python-modules/pytomlpp/default.nix25
-rw-r--r--pkgs/development/python-modules/pytomorrowio/default.nix25
-rw-r--r--pkgs/development/python-modules/pytoolconfig/default.nix56
-rw-r--r--pkgs/development/python-modules/pytools/default.nix33
-rw-r--r--pkgs/development/python-modules/pytorch-lightning/default.nix69
-rw-r--r--pkgs/development/python-modules/pytorch-metric-learning/default.nix99
-rw-r--r--pkgs/development/python-modules/pytorch-msssim/default.nix17
-rw-r--r--pkgs/development/python-modules/pytorch-pfn-extras/default.nix152
-rw-r--r--pkgs/development/python-modules/pytouchlinesl/default.nix48
-rw-r--r--pkgs/development/python-modules/pytraccar/default.nix33
-rw-r--r--pkgs/development/python-modules/pytradfri/default.nix30
-rw-r--r--pkgs/development/python-modules/pytrafikverket/default.nix35
-rw-r--r--pkgs/development/python-modules/pytransportnsw/default.nix15
-rw-r--r--pkgs/development/python-modules/pytransportnswv2/default.nix31
-rw-r--r--pkgs/development/python-modules/pytrends/default.nix36
-rw-r--r--pkgs/development/python-modules/pytricia/default.nix9
-rw-r--r--pkgs/development/python-modules/pytrydan/default.nix52
-rw-r--r--pkgs/development/python-modules/pyttsx3/default.nix11
-rw-r--r--pkgs/development/python-modules/pytube/default.nix19
-rw-r--r--pkgs/development/python-modules/pytubefix/default.nix44
-rw-r--r--pkgs/development/python-modules/pytun/default.nix11
-rw-r--r--pkgs/development/python-modules/pyturbojpeg/default.nix51
-rw-r--r--pkgs/development/python-modules/pytweening/default.nix7
-rw-r--r--pkgs/development/python-modules/pytz-deprecation-shim/default.nix36
-rw-r--r--pkgs/development/python-modules/pytz/default.nix20
-rw-r--r--pkgs/development/python-modules/pytzdata/default.nix6
-rw-r--r--pkgs/development/python-modules/pyu2f/default.nix21
-rw-r--r--pkgs/development/python-modules/pyuca/default.nix19
-rw-r--r--pkgs/development/python-modules/pyudev/default.nix36
-rw-r--r--pkgs/development/python-modules/pyunbound/default.nix70
-rw-r--r--pkgs/development/python-modules/pyunifi/default.nix8
-rw-r--r--pkgs/development/python-modules/pyunifiprotect/default.nix113
-rw-r--r--pkgs/development/python-modules/pyunpack/default.nix19
-rw-r--r--pkgs/development/python-modules/pyupdate/default.nix9
-rw-r--r--pkgs/development/python-modules/pyupgrade/default.nix25
-rw-r--r--pkgs/development/python-modules/pyuptimerobot/default.nix25
-rw-r--r--pkgs/development/python-modules/pyusb/default.nix26
-rw-r--r--pkgs/development/python-modules/pyuseragents/default.nix9
-rw-r--r--pkgs/development/python-modules/pyutil/default.nix34
-rw-r--r--pkgs/development/python-modules/pyutilib/default.nix33
-rw-r--r--pkgs/development/python-modules/pyuv/default.nix18
-rw-r--r--pkgs/development/python-modules/pyvcd/default.nix21
-rw-r--r--pkgs/development/python-modules/pyvera/default.nix23
-rw-r--r--pkgs/development/python-modules/pyverilog/default.nix36
-rw-r--r--pkgs/development/python-modules/pyversasense/default.nix29
-rw-r--r--pkgs/development/python-modules/pyvesync/default.nix23
-rw-r--r--pkgs/development/python-modules/pyvex/default.nix43
-rw-r--r--pkgs/development/python-modules/pyvicare-neo/default.nix43
-rw-r--r--pkgs/development/python-modules/pyvicare/default.nix51
-rw-r--r--pkgs/development/python-modules/pyvips/default.nix41
-rw-r--r--pkgs/development/python-modules/pyvirtualdisplay/default.nix7
-rw-r--r--pkgs/development/python-modules/pyvis/default.nix26
-rw-r--r--pkgs/development/python-modules/pyvisa-py/default.nix33
-rw-r--r--pkgs/development/python-modules/pyvisa-sim/default.nix33
-rw-r--r--pkgs/development/python-modules/pyvisa/default.nix29
-rw-r--r--pkgs/development/python-modules/pyvista/default.nix45
-rw-r--r--pkgs/development/python-modules/pyviz-comms/default.nix11
-rw-r--r--pkgs/development/python-modules/pyvizio/default.nix23
-rw-r--r--pkgs/development/python-modules/pyvlx/default.nix35
-rw-r--r--pkgs/development/python-modules/pyvmomi/default.nix23
-rw-r--r--pkgs/development/python-modules/pyvo/default.nix36
-rw-r--r--pkgs/development/python-modules/pyvolumio/default.nix11
-rw-r--r--pkgs/development/python-modules/pyvoro/default.nix7
-rw-r--r--pkgs/development/python-modules/pywal/default.nix9
-rw-r--r--pkgs/development/python-modules/pywatchman/default.nix10
-rw-r--r--pkgs/development/python-modules/pywaterkotte/default.nix29
-rw-r--r--pkgs/development/python-modules/pywavefront/default.nix24
-rw-r--r--pkgs/development/python-modules/pywavelets/default.nix55
-rw-r--r--pkgs/development/python-modules/pywayland/default.nix25
-rw-r--r--pkgs/development/python-modules/pywaze/default.nix6
-rw-r--r--pkgs/development/python-modules/pywbem/default.nix55
-rw-r--r--pkgs/development/python-modules/pyweatherflowrest/default.nix33
-rw-r--r--pkgs/development/python-modules/pyweatherflowudp/default.nix28
-rw-r--r--pkgs/development/python-modules/pywebcopy/default.nix45
-rw-r--r--pkgs/development/python-modules/pywebpush/default.nix35
-rw-r--r--pkgs/development/python-modules/pywebview/default.nix39
-rw-r--r--pkgs/development/python-modules/pywemo/default.nix33
-rw-r--r--pkgs/development/python-modules/pywerview/default.nix45
-rw-r--r--pkgs/development/python-modules/pywfa/default.nix21
-rw-r--r--pkgs/development/python-modules/pywilight/default.nix17
-rw-r--r--pkgs/development/python-modules/pywinrm/default.nix55
-rw-r--r--pkgs/development/python-modules/pywizlight/default.nix27
-rw-r--r--pkgs/development/python-modules/pywlroots/default.nix62
-rw-r--r--pkgs/development/python-modules/pyworld/default.nix19
-rw-r--r--pkgs/development/python-modules/pyws66i/default.nix19
-rw-r--r--pkgs/development/python-modules/pyx/default.nix9
-rw-r--r--pkgs/development/python-modules/pyxattr/default.nix39
-rw-r--r--pkgs/development/python-modules/pyxbe/default.nix19
-rw-r--r--pkgs/development/python-modules/pyxdg/default.nix9
-rw-r--r--pkgs/development/python-modules/pyxeoma/default.nix9
-rw-r--r--pkgs/development/python-modules/pyxiaomigateway/default.nix9
-rw-r--r--pkgs/development/python-modules/pyxl3/default.nix11
-rw-r--r--pkgs/development/python-modules/pyxlsb/default.nix8
-rw-r--r--pkgs/development/python-modules/pyxnat/default.nix53
-rw-r--r--pkgs/development/python-modules/pyyaml-env-tag/default.nix21
-rw-r--r--pkgs/development/python-modules/pyyaml-include/default.nix27
-rw-r--r--pkgs/development/python-modules/pyyaml/default.nix43
-rw-r--r--pkgs/development/python-modules/pyyardian/default.nix23
-rw-r--r--pkgs/development/python-modules/pyzabbix/default.nix23
-rw-r--r--pkgs/development/python-modules/pyzbar/default.nix24
-rw-r--r--pkgs/development/python-modules/pyzerproc/default.nix25
-rw-r--r--pkgs/development/python-modules/pyzipper/default.nix31
-rw-r--r--pkgs/development/python-modules/pyzmq/default.nix78
-rw-r--r--pkgs/development/python-modules/pyzufall/default.nix30
-rw-r--r--pkgs/development/python-modules/pyzx/default.nix66
-rw-r--r--pkgs/development/python-modules/qasync/default.nix17
-rw-r--r--pkgs/development/python-modules/qbittorrent-api/default.nix28
-rw-r--r--pkgs/development/python-modules/qcelemental/default.nix41
-rw-r--r--pkgs/development/python-modules/qcengine/default.nix35
-rw-r--r--pkgs/development/python-modules/qcodes-contrib-drivers/default.nix63
-rw-r--r--pkgs/development/python-modules/qcodes/default.nix170
-rw-r--r--pkgs/development/python-modules/qcs-api-client-common/Cargo.lock3879
-rw-r--r--pkgs/development/python-modules/qcs-api-client-common/default.nix77
-rw-r--r--pkgs/development/python-modules/qcs-api-client/default.nix12
-rw-r--r--pkgs/development/python-modules/qcs-sdk-python/Cargo.lock1586
-rw-r--r--pkgs/development/python-modules/qcs-sdk-python/default.nix28
-rw-r--r--pkgs/development/python-modules/qdarkstyle/default.nix18
-rw-r--r--pkgs/development/python-modules/qdldl/default.nix23
-rw-r--r--pkgs/development/python-modules/qdrant-client/default.nix4
-rw-r--r--pkgs/development/python-modules/qds-sdk/default.nix51
-rw-r--r--pkgs/development/python-modules/qemu/default.nix41
-rw-r--r--pkgs/development/python-modules/qgrid/default.nix42
-rw-r--r--pkgs/development/python-modules/qiling/default.nix38
-rw-r--r--pkgs/development/python-modules/qimage2ndarray/default.nix12
-rw-r--r--pkgs/development/python-modules/qingping-ble/default.nix31
-rw-r--r--pkgs/development/python-modules/qiskit-aer/default.nix52
-rw-r--r--pkgs/development/python-modules/qiskit-finance/default.nix49
-rw-r--r--pkgs/development/python-modules/qiskit-ibmq-provider/default.nix53
-rw-r--r--pkgs/development/python-modules/qiskit-ignis/default.nix69
-rw-r--r--pkgs/development/python-modules/qiskit-machine-learning/default.nix43
-rw-r--r--pkgs/development/python-modules/qiskit-nature/default.nix51
-rw-r--r--pkgs/development/python-modules/qiskit-optimization/default.nix37
-rw-r--r--pkgs/development/python-modules/qiskit-terra/default.nix255
-rw-r--r--pkgs/development/python-modules/qiskit/default.nix42
-rw-r--r--pkgs/development/python-modules/qmk-dotty-dict/default.nix17
-rw-r--r--pkgs/development/python-modules/qnap-qsw/default.nix19
-rw-r--r--pkgs/development/python-modules/qnapstats/default.nix19
-rw-r--r--pkgs/development/python-modules/qpageview/default.nix23
-rw-r--r--pkgs/development/python-modules/qpsolvers/default.nix64
-rw-r--r--pkgs/development/python-modules/qrcode-terminal/default.nix38
-rw-r--r--pkgs/development/python-modules/qrcode/default.nix40
-rw-r--r--pkgs/development/python-modules/qreactor/default.nix27
-rw-r--r--pkgs/development/python-modules/qscintilla-qt5/default.nix74
-rw-r--r--pkgs/development/python-modules/qstylizer/default.nix51
-rw-r--r--pkgs/development/python-modules/qt-material/default.nix17
-rw-r--r--pkgs/development/python-modules/qt5reactor/default.nix15
-rw-r--r--pkgs/development/python-modules/qtawesome/default.nix25
-rw-r--r--pkgs/development/python-modules/qtconsole/default.nix71
-rw-r--r--pkgs/development/python-modules/qtile-extras/default.nix8
-rw-r--r--pkgs/development/python-modules/qtile/default.nix104
-rw-r--r--pkgs/development/python-modules/qtile/wrapper.nix8
-rw-r--r--pkgs/development/python-modules/qtpy/default.nix29
-rw-r--r--pkgs/development/python-modules/quadprog/default.nix23
-rw-r--r--pkgs/development/python-modules/qualysclient/default.nix40
-rw-r--r--pkgs/development/python-modules/quamash/default.nix14
-rw-r--r--pkgs/development/python-modules/quandl/default.nix51
-rw-r--r--pkgs/development/python-modules/quantile-forest/default.nix4
-rw-r--r--pkgs/development/python-modules/quantile-python/default.nix7
-rw-r--r--pkgs/development/python-modules/quantiphy-eval/default.nix19
-rw-r--r--pkgs/development/python-modules/quantiphy/default.nix33
-rw-r--r--pkgs/development/python-modules/quantities/default.nix52
-rw-r--r--pkgs/development/python-modules/quantulum3/default.nix28
-rw-r--r--pkgs/development/python-modules/quantum-gateway/default.nix24
-rw-r--r--pkgs/development/python-modules/quart-cors/default.nix54
-rw-r--r--pkgs/development/python-modules/quart/default.nix101
-rw-r--r--pkgs/development/python-modules/quaternion/default.nix19
-rw-r--r--pkgs/development/python-modules/qudida/default.nix25
-rw-r--r--pkgs/development/python-modules/querystring-parser/default.nix1
-rw-r--r--pkgs/development/python-modules/questionary/default.nix37
-rw-r--r--pkgs/development/python-modules/queuelib/default.nix18
-rw-r--r--pkgs/development/python-modules/quil/default.nix21
-rw-r--r--pkgs/development/python-modules/quixote/default.nix2
-rw-r--r--pkgs/development/python-modules/qutip/default.nix59
-rw-r--r--pkgs/development/python-modules/r2pipe/default.nix46
-rw-r--r--pkgs/development/python-modules/rachiopy/default.nix29
-rw-r--r--pkgs/development/python-modules/radian/default.nix70
-rw-r--r--pkgs/development/python-modules/radicale-infcloud/default.nix12
-rw-r--r--pkgs/development/python-modules/radio-beam/default.nix33
-rw-r--r--pkgs/development/python-modules/radios/default.nix42
-rw-r--r--pkgs/development/python-modules/radiotherm/default.nix13
-rw-r--r--pkgs/development/python-modules/radish-bdd/default.nix43
-rw-r--r--pkgs/development/python-modules/radon/default.nix35
-rw-r--r--pkgs/development/python-modules/railroad-diagrams/default.nix15
-rw-r--r--pkgs/development/python-modules/rainbowstream/default.nix33
-rw-r--r--pkgs/development/python-modules/raincloudy/default.nix58
-rw-r--r--pkgs/development/python-modules/ramlfications/default.nix51
-rw-r--r--pkgs/development/python-modules/random-user-agent/default.nix36
-rw-r--r--pkgs/development/python-modules/random2/default.nix12
-rw-r--r--pkgs/development/python-modules/randomfiletree/default.nix7
-rw-r--r--pkgs/development/python-modules/range-typed-integers/default.nix15
-rw-r--r--pkgs/development/python-modules/rangehttpserver/default.nix25
-rw-r--r--pkgs/development/python-modules/rangeparser/default.nix25
-rw-r--r--pkgs/development/python-modules/rank-bm25/default.nix17
-rw-r--r--pkgs/development/python-modules/rapidfuzz-capi/default.nix7
-rw-r--r--pkgs/development/python-modules/rapidfuzz/default.nix58
-rw-r--r--pkgs/development/python-modules/rapidgzip/default.nix25
-rw-r--r--pkgs/development/python-modules/rapidocr-onnxruntime/default.nix126
-rw-r--r--pkgs/development/python-modules/rapidocr-onnxruntime/setup-py-override-version-checking.patch30
-rw-r--r--pkgs/development/python-modules/rapt-ble/default.nix33
-rw-r--r--pkgs/development/python-modules/rarfile/default.nix56
-rw-r--r--pkgs/development/python-modules/rasterio/default.nix93
-rw-r--r--pkgs/development/python-modules/ratarmount/default.nix45
-rw-r--r--pkgs/development/python-modules/ratarmountcore/default.nix70
-rw-r--r--pkgs/development/python-modules/ratelim/default.nix13
-rw-r--r--pkgs/development/python-modules/ratelimit/default.nix9
-rw-r--r--pkgs/development/python-modules/rauth/default.nix54
-rw-r--r--pkgs/development/python-modules/raven/default.nix16
-rw-r--r--pkgs/development/python-modules/rawkit/default.nix19
-rw-r--r--pkgs/development/python-modules/ray/binary-hashes.nix7
-rw-r--r--pkgs/development/python-modules/ray/default.nix211
-rw-r--r--pkgs/development/python-modules/raylib-python-cffi/default.nix83
-rw-r--r--pkgs/development/python-modules/raylib-python-cffi/fix_macos_raylib.patch11
-rw-r--r--pkgs/development/python-modules/raylib-python-cffi/fix_pyray_builder.patch61
-rw-r--r--pkgs/development/python-modules/razdel/default.nix9
-rw-r--r--pkgs/development/python-modules/rbtools/default.nix28
-rw-r--r--pkgs/development/python-modules/rchitect/default.nix42
-rw-r--r--pkgs/development/python-modules/rcssmin/default.nix15
-rw-r--r--pkgs/development/python-modules/rdflib/default.nix109
-rw-r--r--pkgs/development/python-modules/rdkit/default.nix60
-rw-r--r--pkgs/development/python-modules/re-assert/default.nix13
-rw-r--r--pkgs/development/python-modules/reactivex/default.nix29
-rw-r--r--pkgs/development/python-modules/readabilipy/default.nix33
-rw-r--r--pkgs/development/python-modules/readability-lxml/default.nix29
-rw-r--r--pkgs/development/python-modules/readchar/default.nix21
-rw-r--r--pkgs/development/python-modules/readlike/default.nix14
-rw-r--r--pkgs/development/python-modules/readmdict/default.nix31
-rw-r--r--pkgs/development/python-modules/readme-renderer/default.nix51
-rw-r--r--pkgs/development/python-modules/readme/default.nix20
-rw-r--r--pkgs/development/python-modules/readthedocs-sphinx-ext/default.nix25
-rw-r--r--pkgs/development/python-modules/rebulk/default.nix27
-rw-r--r--pkgs/development/python-modules/recipe-scrapers/default.nix44
-rw-r--r--pkgs/development/python-modules/recline/default.nix25
-rw-r--r--pkgs/development/python-modules/recommonmark/default.nix25
-rw-r--r--pkgs/development/python-modules/reconplogger/default.nix4
-rw-r--r--pkgs/development/python-modules/recordlinkage/default.nix45
-rw-r--r--pkgs/development/python-modules/recurring-ical-events/default.nix49
-rw-r--r--pkgs/development/python-modules/recursive-pth-loader/default.nix13
-rw-r--r--pkgs/development/python-modules/red-black-tree-mod/default.nix20
-rw-r--r--pkgs/development/python-modules/redbaron/default.nix10
-rw-r--r--pkgs/development/python-modules/redis-om/default.nix45
-rw-r--r--pkgs/development/python-modules/redis/default.nix45
-rw-r--r--pkgs/development/python-modules/redshift-connector/default.nix31
-rw-r--r--pkgs/development/python-modules/reedsolo/default.nix21
-rw-r--r--pkgs/development/python-modules/referencing/default.nix46
-rw-r--r--pkgs/development/python-modules/refery/default.nix23
-rw-r--r--pkgs/development/python-modules/reflex-chakra/default.nix41
-rw-r--r--pkgs/development/python-modules/reflex-hosting-cli/default.nix62
-rw-r--r--pkgs/development/python-modules/reflex/default.nix146
-rw-r--r--pkgs/development/python-modules/reflink/default.nix11
-rw-r--r--pkgs/development/python-modules/refoss-ha/default.nix34
-rw-r--r--pkgs/development/python-modules/regenmaschine/default.nix35
-rw-r--r--pkgs/development/python-modules/regex/default.nix19
-rw-r--r--pkgs/development/python-modules/regional/default.nix27
-rw-r--r--pkgs/development/python-modules/regress/default.nix20
-rw-r--r--pkgs/development/python-modules/reikna/default.nix41
-rw-r--r--pkgs/development/python-modules/related/default.nix27
-rw-r--r--pkgs/development/python-modules/relatorio/default.nix34
-rw-r--r--pkgs/development/python-modules/releases/default.nix18
-rw-r--r--pkgs/development/python-modules/remarshal/default.nix43
-rw-r--r--pkgs/development/python-modules/remi/default.nix32
-rw-r--r--pkgs/development/python-modules/remote-pdb/default.nix8
-rw-r--r--pkgs/development/python-modules/remotezip/default.nix28
-rw-r--r--pkgs/development/python-modules/renault-api/default.nix23
-rw-r--r--pkgs/development/python-modules/rencode/default.nix17
-rw-r--r--pkgs/development/python-modules/renson-endura-delta/default.nix29
-rw-r--r--pkgs/development/python-modules/reolink-aio/default.nix37
-rw-r--r--pkgs/development/python-modules/reolink/default.nix27
-rw-r--r--pkgs/development/python-modules/reorder-python-imports/default.nix45
-rw-r--r--pkgs/development/python-modules/reparser/default.nix9
-rw-r--r--pkgs/development/python-modules/repath/default.nix19
-rw-r--r--pkgs/development/python-modules/repeated-test/default.nix25
-rw-r--r--pkgs/development/python-modules/repl-python-wakatime/default.nix52
-rw-r--r--pkgs/development/python-modules/repocheck/default.nix8
-rw-r--r--pkgs/development/python-modules/reportengine/default.nix53
-rw-r--r--pkgs/development/python-modules/reportlab-qrcode/default.nix50
-rw-r--r--pkgs/development/python-modules/reportlab/default.nix48
-rw-r--r--pkgs/development/python-modules/repoze-lru/default.nix25
-rw-r--r--pkgs/development/python-modules/repoze-sphinx-autointerface/default.nix27
-rw-r--r--pkgs/development/python-modules/repoze-who/default.nix34
-rw-r--r--pkgs/development/python-modules/reproject/default.nix52
-rw-r--r--pkgs/development/python-modules/reprshed/default.nix13
-rw-r--r--pkgs/development/python-modules/reptor/default.nix12
-rw-r--r--pkgs/development/python-modules/reqif/default.nix37
-rw-r--r--pkgs/development/python-modules/requests-aws4auth/default.nix47
-rw-r--r--pkgs/development/python-modules/requests-cache/default.nix99
-rw-r--r--pkgs/development/python-modules/requests-credssp/default.nix33
-rw-r--r--pkgs/development/python-modules/requests-download/default.nix9
-rw-r--r--pkgs/development/python-modules/requests-file/default.nix43
-rw-r--r--pkgs/development/python-modules/requests-futures/default.nix21
-rw-r--r--pkgs/development/python-modules/requests-gssapi/default.nix31
-rw-r--r--pkgs/development/python-modules/requests-hawk/default.nix17
-rw-r--r--pkgs/development/python-modules/requests-http-signature/default.nix35
-rw-r--r--pkgs/development/python-modules/requests-kerberos/default.nix51
-rw-r--r--pkgs/development/python-modules/requests-mock/default.nix36
-rw-r--r--pkgs/development/python-modules/requests-ntlm/default.nix23
-rw-r--r--pkgs/development/python-modules/requests-oauthlib/default.nix29
-rw-r--r--pkgs/development/python-modules/requests-pkcs12/default.nix21
-rw-r--r--pkgs/development/python-modules/requests-ratelimiter/default.nix34
-rw-r--r--pkgs/development/python-modules/requests-toolbelt/default.nix25
-rw-r--r--pkgs/development/python-modules/requests-unixsocket/default.nix35
-rw-r--r--pkgs/development/python-modules/requests-wsgi-adapter/default.nix13
-rw-r--r--pkgs/development/python-modules/requests/ca-load-regression.patch126
-rw-r--r--pkgs/development/python-modules/requests/default.nix101
-rw-r--r--pkgs/development/python-modules/requestsexceptions/default.nix9
-rw-r--r--pkgs/development/python-modules/requirements-detector/default.nix45
-rw-r--r--pkgs/development/python-modules/requirements-parser/default.nix6
-rw-r--r--pkgs/development/python-modules/reretry/default.nix8
-rw-r--r--pkgs/development/python-modules/rerun-sdk/default.nix38
-rw-r--r--pkgs/development/python-modules/resampy/default.nix25
-rw-r--r--pkgs/development/python-modules/resend/default.nix35
-rw-r--r--pkgs/development/python-modules/resize-right/default.nix19
-rw-r--r--pkgs/development/python-modules/resolvelib/default.nix23
-rw-r--r--pkgs/development/python-modules/responses/default.nix45
-rw-r--r--pkgs/development/python-modules/respx/default.nix56
-rw-r--r--pkgs/development/python-modules/restfly/default.nix51
-rw-r--r--pkgs/development/python-modules/restrictedpython/default.nix33
-rw-r--r--pkgs/development/python-modules/restructuredtext-lint/default.nix29
-rw-r--r--pkgs/development/python-modules/restview/default.nix27
-rw-r--r--pkgs/development/python-modules/result/default.nix27
-rw-r--r--pkgs/development/python-modules/rethinkdb/default.nix18
-rw-r--r--pkgs/development/python-modules/retry-decorator/default.nix19
-rw-r--r--pkgs/development/python-modules/retry/default.nix21
-rw-r--r--pkgs/development/python-modules/retrying/default.nix21
-rw-r--r--pkgs/development/python-modules/returns/default.nix51
-rw-r--r--pkgs/development/python-modules/reuse/default.nix46
-rw-r--r--pkgs/development/python-modules/rfc3339-validator/default.nix23
-rw-r--r--pkgs/development/python-modules/rfc3339/default.nix7
-rw-r--r--pkgs/development/python-modules/rfc3986-validator/default.nix15
-rw-r--r--pkgs/development/python-modules/rfc3986/default.nix27
-rw-r--r--pkgs/development/python-modules/rfc3987/default.nix6
-rw-r--r--pkgs/development/python-modules/rfc6555/default.nix21
-rw-r--r--pkgs/development/python-modules/rfc7464/default.nix8
-rw-r--r--pkgs/development/python-modules/rfc8785/default.nix40
-rw-r--r--pkgs/development/python-modules/rfcat/default.nix31
-rw-r--r--pkgs/development/python-modules/rflink/default.nix29
-rw-r--r--pkgs/development/python-modules/rich-argparse-plus/default.nix31
-rw-r--r--pkgs/development/python-modules/rich-argparse/default.nix39
-rw-r--r--pkgs/development/python-modules/rich-click/default.nix34
-rw-r--r--pkgs/development/python-modules/rich-pixels/default.nix62
-rw-r--r--pkgs/development/python-modules/rich-rst/default.nix38
-rw-r--r--pkgs/development/python-modules/rich-theme-manager/default.nix34
-rw-r--r--pkgs/development/python-modules/rich/default.nix78
-rw-r--r--pkgs/development/python-modules/riden/default.nix50
-rw-r--r--pkgs/development/python-modules/ring-doorbell/default.nix36
-rw-r--r--pkgs/development/python-modules/rio-tiler/default.nix66
-rw-r--r--pkgs/development/python-modules/rioxarray/default.nix69
-rw-r--r--pkgs/development/python-modules/ripe-atlas-cousteau/default.nix26
-rw-r--r--pkgs/development/python-modules/ripe-atlas-sagan/default.nix37
-rw-r--r--pkgs/development/python-modules/riprova/default.nix13
-rw-r--r--pkgs/development/python-modules/ripser/default.nix37
-rw-r--r--pkgs/development/python-modules/riscof/default.nix20
-rw-r--r--pkgs/development/python-modules/riscv-config/default.nix7
-rw-r--r--pkgs/development/python-modules/riscv-isac/default.nix37
-rw-r--r--pkgs/development/python-modules/rising/default.nix64
-rw-r--r--pkgs/development/python-modules/ritassist/default.nix21
-rw-r--r--pkgs/development/python-modules/rjpl/default.nix19
-rw-r--r--pkgs/development/python-modules/rjsmin/default.nix15
-rw-r--r--pkgs/development/python-modules/rki-covid-parser/default.nix31
-rw-r--r--pkgs/development/python-modules/rkm-codes/default.nix19
-rw-r--r--pkgs/development/python-modules/rlax/default.nix40
-rw-r--r--pkgs/development/python-modules/rlcard/default.nix76
-rw-r--r--pkgs/development/python-modules/rlp/default.nix23
-rw-r--r--pkgs/development/python-modules/rmcl/default.nix21
-rw-r--r--pkgs/development/python-modules/rmrl/default.nix25
-rw-r--r--pkgs/development/python-modules/rmscene/default.nix27
-rw-r--r--pkgs/development/python-modules/rmsd/default.nix14
-rw-r--r--pkgs/development/python-modules/rnc2rng/default.nix13
-rw-r--r--pkgs/development/python-modules/rnginline/default.nix41
-rw-r--r--pkgs/development/python-modules/rns/default.nix37
-rw-r--r--pkgs/development/python-modules/rns/unvendor-esptool.patch263
-rw-r--r--pkgs/development/python-modules/roadlib/default.nix4
-rw-r--r--pkgs/development/python-modules/roadrecon/default.nix41
-rw-r--r--pkgs/development/python-modules/roadtools/default.nix25
-rw-r--r--pkgs/development/python-modules/roadtx/default.nix4
-rw-r--r--pkgs/development/python-modules/robomachine/default.nix30
-rw-r--r--pkgs/development/python-modules/robot-detection/default.nix7
-rw-r--r--pkgs/development/python-modules/robotframework-databaselibrary/default.nix20
-rw-r--r--pkgs/development/python-modules/robotframework-excellib/default.nix17
-rw-r--r--pkgs/development/python-modules/robotframework-pythonlibcore/default.nix41
-rw-r--r--pkgs/development/python-modules/robotframework-requests/default.nix31
-rw-r--r--pkgs/development/python-modules/robotframework-selenium2library/default.nix8
-rw-r--r--pkgs/development/python-modules/robotframework-seleniumlibrary/default.nix43
-rw-r--r--pkgs/development/python-modules/robotframework-sshlibrary/default.nix20
-rw-r--r--pkgs/development/python-modules/robotframework-tools/default.nix21
-rw-r--r--pkgs/development/python-modules/robotframework/default.nix27
-rw-r--r--pkgs/development/python-modules/robotstatuschecker/default.nix19
-rw-r--r--pkgs/development/python-modules/robotsuite/default.nix19
-rw-r--r--pkgs/development/python-modules/rocket-errbot/default.nix22
-rw-r--r--pkgs/development/python-modules/rocketchat-api/default.nix44
-rw-r--r--pkgs/development/python-modules/roku/default.nix16
-rw-r--r--pkgs/development/python-modules/rokuecp/default.nix59
-rw-r--r--pkgs/development/python-modules/rollbar/default.nix32
-rw-r--r--pkgs/development/python-modules/roman/default.nix8
-rw-r--r--pkgs/development/python-modules/ronin/default.nix35
-rw-r--r--pkgs/development/python-modules/roombapy/default.nix37
-rw-r--r--pkgs/development/python-modules/roonapi/default.nix27
-rw-r--r--pkgs/development/python-modules/rope/default.nix27
-rw-r--r--pkgs/development/python-modules/ropgadget/default.nix19
-rw-r--r--pkgs/development/python-modules/ropper/default.nix25
-rw-r--r--pkgs/development/python-modules/rotary-embedding-torch/default.nix33
-rw-r--r--pkgs/development/python-modules/rouge-score/default.nix41
-rw-r--r--pkgs/development/python-modules/routeros-api/default.nix35
-rw-r--r--pkgs/development/python-modules/routes/default.nix24
-rw-r--r--pkgs/development/python-modules/rova/default.nix26
-rw-r--r--pkgs/development/python-modules/rowan/default.nix43
-rw-r--r--pkgs/development/python-modules/rpcq/default.nix35
-rw-r--r--pkgs/development/python-modules/rpdb/default.nix8
-rw-r--r--pkgs/development/python-modules/rpds-py/default.nix39
-rw-r--r--pkgs/development/python-modules/rpi-bad-power/default.nix23
-rw-r--r--pkgs/development/python-modules/rpi-gpio/default.nix6
-rw-r--r--pkgs/development/python-modules/rpi-gpio2/default.nix31
-rw-r--r--pkgs/development/python-modules/rplcd/default.nix6
-rw-r--r--pkgs/development/python-modules/rply/default.nix23
-rw-r--r--pkgs/development/python-modules/rpmfile/default.nix21
-rw-r--r--pkgs/development/python-modules/rpmfluff/default.nix14
-rw-r--r--pkgs/development/python-modules/rpy2/default.nix155
-rw-r--r--pkgs/development/python-modules/rpyc/default.nix35
-rw-r--r--pkgs/development/python-modules/rpyc4/default.nix74
-rw-r--r--pkgs/development/python-modules/rq/default.nix54
-rw-r--r--pkgs/development/python-modules/rsa/default.nix29
-rw-r--r--pkgs/development/python-modules/rsskey/default.nix23
-rw-r--r--pkgs/development/python-modules/rst2ansi/default.nix9
-rw-r--r--pkgs/development/python-modules/rst2pdf/default.nix58
-rw-r--r--pkgs/development/python-modules/rstcheck/default.nix8
-rw-r--r--pkgs/development/python-modules/rstr/default.nix18
-rw-r--r--pkgs/development/python-modules/rtb-data/default.nix31
-rw-r--r--pkgs/development/python-modules/rtfde/default.nix40
-rw-r--r--pkgs/development/python-modules/rtfunicode/default.nix9
-rw-r--r--pkgs/development/python-modules/rtmidi-python/default.nix39
-rw-r--r--pkgs/development/python-modules/rtmixer/default.nix21
-rw-r--r--pkgs/development/python-modules/rtoml/default.nix55
-rw-r--r--pkgs/development/python-modules/rtp/default.nix23
-rw-r--r--pkgs/development/python-modules/rtree/default.nix27
-rw-r--r--pkgs/development/python-modules/rtslib/default.nix18
-rw-r--r--pkgs/development/python-modules/rtsp-to-webrtc/default.nix37
-rw-r--r--pkgs/development/python-modules/ruamel-base/default.nix9
-rw-r--r--pkgs/development/python-modules/ruamel-yaml-clib/default.nix11
-rw-r--r--pkgs/development/python-modules/ruamel-yaml/default.nix24
-rw-r--r--pkgs/development/python-modules/rubicon-objc/default.nix37
-rw-r--r--pkgs/development/python-modules/rubymarshal/default.nix8
-rw-r--r--pkgs/development/python-modules/ruff-api/Cargo.lock2861
-rw-r--r--pkgs/development/python-modules/ruff-api/default.nix61
-rw-r--r--pkgs/development/python-modules/ruffus/default.nix19
-rw-r--r--pkgs/development/python-modules/rules/default.nix34
-rw-r--r--pkgs/development/python-modules/runs/default.nix29
-rw-r--r--pkgs/development/python-modules/rustworkx/default.nix37
-rw-r--r--pkgs/development/python-modules/ruuvitag-ble/default.nix33
-rw-r--r--pkgs/development/python-modules/ruyaml/default.nix35
-rw-r--r--pkgs/development/python-modules/rx/default.nix18
-rw-r--r--pkgs/development/python-modules/rxv/default.nix31
-rw-r--r--pkgs/development/python-modules/ryd-client/default.nix32
-rw-r--r--pkgs/development/python-modules/rzpipe/default.nix13
-rw-r--r--pkgs/development/python-modules/s2clientprotocol/default.nix15
-rw-r--r--pkgs/development/python-modules/s3fs/default.nix33
-rw-r--r--pkgs/development/python-modules/s3transfer/default.nix61
-rw-r--r--pkgs/development/python-modules/sabctools/default.nix16
-rw-r--r--pkgs/development/python-modules/sabyenc/default.nix7
-rw-r--r--pkgs/development/python-modules/sabyenc3/default.nix13
-rw-r--r--pkgs/development/python-modules/sacn/default.nix21
-rw-r--r--pkgs/development/python-modules/sacrebleu/default.nix35
-rw-r--r--pkgs/development/python-modules/sacremoses/default.nix24
-rw-r--r--pkgs/development/python-modules/safe-pysha3/default.nix13
-rw-r--r--pkgs/development/python-modules/safe/default.nix24
-rw-r--r--pkgs/development/python-modules/safeio/default.nix9
-rw-r--r--pkgs/development/python-modules/safetensors/default.nix79
-rw-r--r--pkgs/development/python-modules/safety-schemas/default.nix35
-rw-r--r--pkgs/development/python-modules/safety/default.nix87
-rw-r--r--pkgs/development/python-modules/sagemaker/default.nix71
-rw-r--r--pkgs/development/python-modules/salib/default.nix64
-rw-r--r--pkgs/development/python-modules/salmon-mail/default.nix54
-rw-r--r--pkgs/development/python-modules/samarium/default.nix32
-rw-r--r--pkgs/development/python-modules/sampledata/default.nix31
-rw-r--r--pkgs/development/python-modules/samplerate/default.nix65
-rw-r--r--pkgs/development/python-modules/samsungctl/default.nix15
-rw-r--r--pkgs/development/python-modules/samsungtvws/default.nix39
-rw-r--r--pkgs/development/python-modules/sane/default.nix15
-rw-r--r--pkgs/development/python-modules/saneyaml/default.nix42
-rw-r--r--pkgs/development/python-modules/sanic-auth/default.nix30
-rw-r--r--pkgs/development/python-modules/sanic-routing/default.nix19
-rw-r--r--pkgs/development/python-modules/sanic-testing/default.nix30
-rw-r--r--pkgs/development/python-modules/sanic-testing/tests.nix15
-rw-r--r--pkgs/development/python-modules/sanic/default.nix180
-rw-r--r--pkgs/development/python-modules/sanix/default.nix21
-rw-r--r--pkgs/development/python-modules/sansio-multipart/default.nix9
-rw-r--r--pkgs/development/python-modules/sarge/default.nix17
-rw-r--r--pkgs/development/python-modules/sarif-om/default.nix19
-rw-r--r--pkgs/development/python-modules/sarif-tools/default.nix62
-rw-r--r--pkgs/development/python-modules/sasmodels/default.nix35
-rw-r--r--pkgs/development/python-modules/scalene/01-manifest-no-git.patch23
-rw-r--r--pkgs/development/python-modules/scalene/02-pyproject-unpin-setuptools.patch23
-rw-r--r--pkgs/development/python-modules/scalene/default.nix99
-rw-r--r--pkgs/development/python-modules/scales/default.nix12
-rw-r--r--pkgs/development/python-modules/scancode-toolkit/default.nix144
-rw-r--r--pkgs/development/python-modules/scapy/default.nix99
-rw-r--r--pkgs/development/python-modules/schedule/default.nix24
-rw-r--r--pkgs/development/python-modules/schema-salad/default.nix11
-rw-r--r--pkgs/development/python-modules/schema/default.nix29
-rw-r--r--pkgs/development/python-modules/schemainspect/default.nix49
-rw-r--r--pkgs/development/python-modules/schemdraw/default.nix51
-rw-r--r--pkgs/development/python-modules/schiene/default.nix17
-rw-r--r--pkgs/development/python-modules/schwifty/default.nix60
-rw-r--r--pkgs/development/python-modules/scikit-bio/default.nix85
-rw-r--r--pkgs/development/python-modules/scikit-build-core/default.nix107
-rw-r--r--pkgs/development/python-modules/scikit-build/default.nix73
-rw-r--r--pkgs/development/python-modules/scikit-build/python312-compatibility.patch40
-rw-r--r--pkgs/development/python-modules/scikit-fmm/default.nix36
-rw-r--r--pkgs/development/python-modules/scikit-fuzzy/default.nix64
-rw-r--r--pkgs/development/python-modules/scikit-hep-testdata/default.nix45
-rw-r--r--pkgs/development/python-modules/scikit-image/default.nix119
-rw-r--r--pkgs/development/python-modules/scikit-learn-extra/default.nix39
-rw-r--r--pkgs/development/python-modules/scikit-learn/default.nix106
-rw-r--r--pkgs/development/python-modules/scikit-misc/default.nix46
-rw-r--r--pkgs/development/python-modules/scikit-optimize/default.nix25
-rw-r--r--pkgs/development/python-modules/scikit-posthocs/0001-increased-abs-tolerance-for-wilcoxon-test.patch25
-rw-r--r--pkgs/development/python-modules/scikit-posthocs/0002-Update-test_posthocs.py.patch34
-rw-r--r--pkgs/development/python-modules/scikit-posthocs/default.nix40
-rw-r--r--pkgs/development/python-modules/scikit-rf/default.nix119
-rw-r--r--pkgs/development/python-modules/scikit-survival/default.nix58
-rw-r--r--pkgs/development/python-modules/scikit-tda/default.nix45
-rw-r--r--pkgs/development/python-modules/scikits-odes/default.nix39
-rw-r--r--pkgs/development/python-modules/scikits-samplerate/default.nix44
-rw-r--r--pkgs/development/python-modules/scim2-filter-parser/default.nix37
-rw-r--r--pkgs/development/python-modules/scipy/default.nix192
-rw-r--r--pkgs/development/python-modules/scipy/pocketfft-aligned_alloc.patch30
-rw-r--r--pkgs/development/python-modules/scmrepo/default.nix43
-rw-r--r--pkgs/development/python-modules/scooby/default.nix37
-rw-r--r--pkgs/development/python-modules/scour/default.nix13
-rw-r--r--pkgs/development/python-modules/scp/default.nix19
-rw-r--r--pkgs/development/python-modules/scramp/default.nix48
-rw-r--r--pkgs/development/python-modules/scrap-engine/default.nix11
-rw-r--r--pkgs/development/python-modules/scrapy-deltafetch/default.nix22
-rw-r--r--pkgs/development/python-modules/scrapy-fake-useragent/default.nix36
-rw-r--r--pkgs/development/python-modules/scrapy-splash/default.nix13
-rw-r--r--pkgs/development/python-modules/scrapy/default.nix153
-rw-r--r--pkgs/development/python-modules/screed/default.nix15
-rw-r--r--pkgs/development/python-modules/screeninfo/default.nix31
-rw-r--r--pkgs/development/python-modules/screenlogicpy/default.nix63
-rw-r--r--pkgs/development/python-modules/scripttest/default.nix13
-rw-r--r--pkgs/development/python-modules/scs/default.nix90
-rw-r--r--pkgs/development/python-modules/sdds/default.nix29
-rw-r--r--pkgs/development/python-modules/sdkmanager/default.nix39
-rw-r--r--pkgs/development/python-modules/sdnotify/default.nix9
-rw-r--r--pkgs/development/python-modules/seaborn/default.nix53
-rw-r--r--pkgs/development/python-modules/seabreeze/default.nix68
-rw-r--r--pkgs/development/python-modules/seasonal/default.nix39
-rw-r--r--pkgs/development/python-modules/seatconnect/default.nix31
-rw-r--r--pkgs/development/python-modules/seccomp/default.nix13
-rw-r--r--pkgs/development/python-modules/secp256k1/default.nix22
-rw-r--r--pkgs/development/python-modules/secretstorage/default.nix17
-rw-r--r--pkgs/development/python-modules/sectools/default.nix25
-rw-r--r--pkgs/development/python-modules/secure/default.nix17
-rw-r--r--pkgs/development/python-modules/securetar/default.nix31
-rw-r--r--pkgs/development/python-modules/securityreporter/default.nix37
-rw-r--r--pkgs/development/python-modules/seedir/default.nix42
-rw-r--r--pkgs/development/python-modules/seekpath/default.nix23
-rw-r--r--pkgs/development/python-modules/segments/default.nix27
-rw-r--r--pkgs/development/python-modules/segno/default.nix43
-rw-r--r--pkgs/development/python-modules/segyio/add_missing_cstdint.patch47
-rw-r--r--pkgs/development/python-modules/segyio/default.nix37
-rw-r--r--pkgs/development/python-modules/selectors2/default.nix36
-rw-r--r--pkgs/development/python-modules/selectors2/mapping-import.patch14
-rw-r--r--pkgs/development/python-modules/selenium-wire/default.nix54
-rw-r--r--pkgs/development/python-modules/selenium/default.nix72
-rw-r--r--pkgs/development/python-modules/semantic-version/default.nix26
-rw-r--r--pkgs/development/python-modules/semaphore-bot/default.nix28
-rw-r--r--pkgs/development/python-modules/send2trash/default.nix24
-rw-r--r--pkgs/development/python-modules/sendgrid/default.nix27
-rw-r--r--pkgs/development/python-modules/senf/default.nix37
-rw-r--r--pkgs/development/python-modules/sense-energy/default.nix39
-rw-r--r--pkgs/development/python-modules/sensirion-ble/default.nix27
-rw-r--r--pkgs/development/python-modules/sensor-state-data/default.nix31
-rw-r--r--pkgs/development/python-modules/sensorpro-ble/default.nix31
-rw-r--r--pkgs/development/python-modules/sensorpush-ble/default.nix33
-rw-r--r--pkgs/development/python-modules/sentence-splitter/default.nix29
-rw-r--r--pkgs/development/python-modules/sentence-transformers/default.nix90
-rw-r--r--pkgs/development/python-modules/sentencepiece/default.nix7
-rw-r--r--pkgs/development/python-modules/sentinel/default.nix6
-rw-r--r--pkgs/development/python-modules/sentinels/default.nix21
-rw-r--r--pkgs/development/python-modules/sentry-sdk/1.nix136
-rw-r--r--pkgs/development/python-modules/sentry-sdk/default.nix214
-rw-r--r--pkgs/development/python-modules/sepaxml/default.nix22
-rw-r--r--pkgs/development/python-modules/seqdiag/default.nix38
-rw-r--r--pkgs/development/python-modules/seqdiag/fix_test_generate.patch25
-rw-r--r--pkgs/development/python-modules/seqeval/default.nix21
-rw-r--r--pkgs/development/python-modules/serialio/default.nix19
-rw-r--r--pkgs/development/python-modules/serializable/default.nix19
-rw-r--r--pkgs/development/python-modules/serpent/default.nix30
-rw-r--r--pkgs/development/python-modules/serpy/default.nix21
-rw-r--r--pkgs/development/python-modules/servefile/default.nix19
-rw-r--r--pkgs/development/python-modules/serverfiles/default.nix13
-rw-r--r--pkgs/development/python-modules/serverlessrepo/default.nix27
-rw-r--r--pkgs/development/python-modules/service-identity/default.nix35
-rw-r--r--pkgs/development/python-modules/setproctitle/default.nix28
-rw-r--r--pkgs/development/python-modules/setupmeta/default.nix29
-rw-r--r--pkgs/development/python-modules/setuptools-changelog-shortener/default.nix13
-rw-r--r--pkgs/development/python-modules/setuptools-declarative-requirements/default.nix17
-rw-r--r--pkgs/development/python-modules/setuptools-dso/default.nix18
-rw-r--r--pkgs/development/python-modules/setuptools-generate/default.nix35
-rw-r--r--pkgs/development/python-modules/setuptools-gettext/default.nix41
-rw-r--r--pkgs/development/python-modules/setuptools-git-versioning/default.nix40
-rw-r--r--pkgs/development/python-modules/setuptools-git/default.nix10
-rw-r--r--pkgs/development/python-modules/setuptools-lint/default.nix8
-rw-r--r--pkgs/development/python-modules/setuptools-odoo/default.nix25
-rw-r--r--pkgs/development/python-modules/setuptools-rust/default.nix56
-rw-r--r--pkgs/development/python-modules/setuptools-rust/pyo3-test/default.nix27
-rw-r--r--pkgs/development/python-modules/setuptools-scm-git-archive/default.nix25
-rw-r--r--pkgs/development/python-modules/setuptools-scm/default.nix62
-rw-r--r--pkgs/development/python-modules/setuptools-scm/tests.nix15
-rw-r--r--pkgs/development/python-modules/setuptools-trial/default.nix25
-rw-r--r--pkgs/development/python-modules/setuptools/default.nix30
-rw-r--r--pkgs/development/python-modules/setuptools/setuptools-distutils-C++.patch59
-rw-r--r--pkgs/development/python-modules/setuptools/tag-date.patch7
-rw-r--r--pkgs/development/python-modules/sev-snp-measure/default.nix24
-rw-r--r--pkgs/development/python-modules/seventeentrack/default.nix33
-rw-r--r--pkgs/development/python-modules/sexpdata/default.nix21
-rw-r--r--pkgs/development/python-modules/sfepy/default.nix74
-rw-r--r--pkgs/development/python-modules/sfrbox-api/default.nix56
-rw-r--r--pkgs/development/python-modules/sgmllib3k/default.nix25
-rw-r--r--pkgs/development/python-modules/sgp4/default.nix7
-rw-r--r--pkgs/development/python-modules/sh/default.nix63
-rw-r--r--pkgs/development/python-modules/shamir-mnemonic/default.nix17
-rw-r--r--pkgs/development/python-modules/shap/default.nix145
-rw-r--r--pkgs/development/python-modules/shapely/1.8.nix90
-rw-r--r--pkgs/development/python-modules/shapely/default.nix43
-rw-r--r--pkgs/development/python-modules/shaperglot/default.nix35
-rw-r--r--pkgs/development/python-modules/sharedmem/default.nix7
-rw-r--r--pkgs/development/python-modules/sharkiq/default.nix11
-rw-r--r--pkgs/development/python-modules/sharp-aquos-rc/default.nix11
-rw-r--r--pkgs/development/python-modules/shazamio/default.nix35
-rw-r--r--pkgs/development/python-modules/shellescape/default.nix14
-rw-r--r--pkgs/development/python-modules/shellingham/default.nix23
-rw-r--r--pkgs/development/python-modules/shiboken2/default.nix68
-rw-r--r--pkgs/development/python-modules/shiboken2/nix_compile_cflags.patch30
-rw-r--r--pkgs/development/python-modules/shiboken6/default.nix64
-rw-r--r--pkgs/development/python-modules/shimmy/default.nix100
-rw-r--r--pkgs/development/python-modules/shiny/default.nix77
-rw-r--r--pkgs/development/python-modules/shippai/default.nix6
-rw-r--r--pkgs/development/python-modules/shippinglabel/default.nix45
-rw-r--r--pkgs/development/python-modules/shiv/default.nix29
-rw-r--r--pkgs/development/python-modules/shlib/default.nix23
-rw-r--r--pkgs/development/python-modules/shodan/default.nix30
-rw-r--r--pkgs/development/python-modules/shortuuid/default.nix25
-rw-r--r--pkgs/development/python-modules/should-dsl/default.nix6
-rw-r--r--pkgs/development/python-modules/shouldbe/default.nix30
-rw-r--r--pkgs/development/python-modules/show-in-file-manager/default.nix24
-rw-r--r--pkgs/development/python-modules/showit/default.nix17
-rw-r--r--pkgs/development/python-modules/shtab/default.nix23
-rw-r--r--pkgs/development/python-modules/shutilwhich/default.nix9
-rw-r--r--pkgs/development/python-modules/sievelib/default.nix4
-rw-r--r--pkgs/development/python-modules/signalslot/default.nix24
-rw-r--r--pkgs/development/python-modules/signedjson/default.nix55
-rw-r--r--pkgs/development/python-modules/signify/default.nix39
-rw-r--r--pkgs/development/python-modules/signxml/default.nix37
-rw-r--r--pkgs/development/python-modules/sigparse/default.nix41
-rw-r--r--pkgs/development/python-modules/sigrok/default.nix119
-rw-r--r--pkgs/development/python-modules/sigstore-protobuf-specs/default.nix29
-rw-r--r--pkgs/development/python-modules/sigstore/default.nix4
-rw-r--r--pkgs/development/python-modules/sigtools/default.nix36
-rw-r--r--pkgs/development/python-modules/simanneal/default.nix9
-rw-r--r--pkgs/development/python-modules/simber/default.nix25
-rw-r--r--pkgs/development/python-modules/simpful/default.nix35
-rw-r--r--pkgs/development/python-modules/simple-di/default.nix17
-rw-r--r--pkgs/development/python-modules/simple-parsing/default.nix83
-rw-r--r--pkgs/development/python-modules/simple-rest-client/default.nix29
-rw-r--r--pkgs/development/python-modules/simple-rlp/default.nix7
-rw-r--r--pkgs/development/python-modules/simple-salesforce/default.nix44
-rw-r--r--pkgs/development/python-modules/simple-term-menu/default.nix14
-rw-r--r--pkgs/development/python-modules/simple-websocket-server/default.nix8
-rw-r--r--pkgs/development/python-modules/simple-websocket/default.nix27
-rw-r--r--pkgs/development/python-modules/simpleaudio/default.nix13
-rw-r--r--pkgs/development/python-modules/simpleaudio/python312-fix.patch98
-rw-r--r--pkgs/development/python-modules/simplebayes/default.nix21
-rw-r--r--pkgs/development/python-modules/simpleeval/default.nix27
-rw-r--r--pkgs/development/python-modules/simplefin4py/default.nix52
-rw-r--r--pkgs/development/python-modules/simplefix/default.nix19
-rw-r--r--pkgs/development/python-modules/simplegeneric/default.nix7
-rw-r--r--pkgs/development/python-modules/simplehound/default.nix15
-rw-r--r--pkgs/development/python-modules/simpleitk/default.nix30
-rw-r--r--pkgs/development/python-modules/simplejson/default.nix28
-rw-r--r--pkgs/development/python-modules/simplekml/default.nix9
-rw-r--r--pkgs/development/python-modules/simplekv/default.nix2
-rw-r--r--pkgs/development/python-modules/simplemma/default.nix27
-rw-r--r--pkgs/development/python-modules/simplenote/default.nix18
-rw-r--r--pkgs/development/python-modules/simplepush/default.nix25
-rw-r--r--pkgs/development/python-modules/simplesat/default.nix51
-rw-r--r--pkgs/development/python-modules/simplesqlite/default.nix23
-rw-r--r--pkgs/development/python-modules/simplisafe-python/default.nix46
-rw-r--r--pkgs/development/python-modules/simpy/default.nix22
-rw-r--r--pkgs/development/python-modules/single-source/default.nix44
-rw-r--r--pkgs/development/python-modules/single-version/default.nix14
-rw-r--r--pkgs/development/python-modules/siobrultech-protocols/default.nix17
-rw-r--r--pkgs/development/python-modules/siosocks/default.nix25
-rw-r--r--pkgs/development/python-modules/sip/4.x.nix44
-rw-r--r--pkgs/development/python-modules/sip/default.nix39
-rw-r--r--pkgs/development/python-modules/siphashc/default.nix31
-rw-r--r--pkgs/development/python-modules/sipyco/default.nix25
-rw-r--r--pkgs/development/python-modules/sismic/default.nix59
-rw-r--r--pkgs/development/python-modules/sisyphus-control/default.nix52
-rw-r--r--pkgs/development/python-modules/siuba/default.nix31
-rw-r--r--pkgs/development/python-modules/six/default.nix27
-rw-r--r--pkgs/development/python-modules/sjcl/default.nix18
-rw-r--r--pkgs/development/python-modules/skein/default.nix64
-rw-r--r--pkgs/development/python-modules/skein/skeinjar.nix9
-rw-r--r--pkgs/development/python-modules/skia-pathops/default.nix86
-rw-r--r--pkgs/development/python-modules/skidl/default.nix15
-rw-r--r--pkgs/development/python-modules/skl2onnx/default.nix38
-rw-r--r--pkgs/development/python-modules/sklearn-deap/default.nix31
-rw-r--r--pkgs/development/python-modules/skodaconnect/default.nix29
-rw-r--r--pkgs/development/python-modules/skops/default.nix71
-rw-r--r--pkgs/development/python-modules/skorch/default.nix84
-rw-r--r--pkgs/development/python-modules/skrl/default.nix27
-rw-r--r--pkgs/development/python-modules/skybellpy/default.nix44
-rw-r--r--pkgs/development/python-modules/skyfield/default.nix44
-rw-r--r--pkgs/development/python-modules/skytemple-dtef/default.nix32
-rw-r--r--pkgs/development/python-modules/skytemple-eventserver/default.nix6
-rw-r--r--pkgs/development/python-modules/skytemple-files/default.nix88
-rw-r--r--pkgs/development/python-modules/skytemple-icons/default.nix8
-rw-r--r--pkgs/development/python-modules/skytemple-rust/default.nix35
-rw-r--r--pkgs/development/python-modules/skytemple-ssb-debugger/default.nix66
-rw-r--r--pkgs/development/python-modules/skytemple-ssb-emulator/default.nix51
-rw-r--r--pkgs/development/python-modules/slack-bolt/default.nix84
-rw-r--r--pkgs/development/python-modules/slack-sdk/default.nix54
-rw-r--r--pkgs/development/python-modules/slackclient/default.nix90
-rw-r--r--pkgs/development/python-modules/sleekxmpp/default.nix23
-rw-r--r--pkgs/development/python-modules/sleekxmppfs/default.nix42
-rw-r--r--pkgs/development/python-modules/sleepyq/default.nix11
-rw-r--r--pkgs/development/python-modules/slicedimage/default.nix34
-rw-r--r--pkgs/development/python-modules/slicer/default.nix59
-rw-r--r--pkgs/development/python-modules/slicerator/default.nix15
-rw-r--r--pkgs/development/python-modules/slimit/default.nix23
-rw-r--r--pkgs/development/python-modules/slither-analyzer/default.nix43
-rw-r--r--pkgs/development/python-modules/slixmpp/default.nix31
-rw-r--r--pkgs/development/python-modules/slob/default.nix13
-rw-r--r--pkgs/development/python-modules/slovnet/default.nix21
-rw-r--r--pkgs/development/python-modules/slowapi/default.nix41
-rw-r--r--pkgs/development/python-modules/slpp/default.nix25
-rw-r--r--pkgs/development/python-modules/slugid/default.nix11
-rw-r--r--pkgs/development/python-modules/sly/default.nix27
-rw-r--r--pkgs/development/python-modules/smart-meter-texas/default.nix30
-rw-r--r--pkgs/development/python-modules/smart-open/default.nix86
-rw-r--r--pkgs/development/python-modules/smarthab/default.nix13
-rw-r--r--pkgs/development/python-modules/smartypants/default.nix23
-rw-r--r--pkgs/development/python-modules/smbprotocol/default.nix25
-rw-r--r--pkgs/development/python-modules/smbus-cffi/default.nix23
-rw-r--r--pkgs/development/python-modules/smbus2/default.nix19
-rw-r--r--pkgs/development/python-modules/smdebug-rulesconfig/default.nix6
-rw-r--r--pkgs/development/python-modules/smhi-pkg/default.nix21
-rw-r--r--pkgs/development/python-modules/smmap/default.nix24
-rw-r--r--pkgs/development/python-modules/smpp-pdu/default.nix25
-rw-r--r--pkgs/development/python-modules/smpplib/default.nix27
-rw-r--r--pkgs/development/python-modules/smtpdfix/default.nix33
-rw-r--r--pkgs/development/python-modules/snakebite/default.nix28
-rw-r--r--pkgs/development/python-modules/snakemake-executor-plugin-cluster-generic/default.nix17
-rw-r--r--pkgs/development/python-modules/snakemake-interface-common/default.nix4
-rw-r--r--pkgs/development/python-modules/snakemake-interface-executor-plugins/default.nix23
-rw-r--r--pkgs/development/python-modules/snakemake-interface-report-plugins/default.nix21
-rw-r--r--pkgs/development/python-modules/snakemake-interface-storage-plugins/default.nix26
-rw-r--r--pkgs/development/python-modules/snakemake-storage-plugin-fs/default.nix43
-rw-r--r--pkgs/development/python-modules/snakemake-storage-plugin-s3/default.nix44
-rw-r--r--pkgs/development/python-modules/snakemake-storage-plugin-xrootd/default.nix42
-rw-r--r--pkgs/development/python-modules/snakeviz/default.nix31
-rw-r--r--pkgs/development/python-modules/snap-helpers/default.nix32
-rw-r--r--pkgs/development/python-modules/snapcast/default.nix29
-rw-r--r--pkgs/development/python-modules/snapshottest/default.nix33
-rw-r--r--pkgs/development/python-modules/snaptime/default.nix17
-rw-r--r--pkgs/development/python-modules/sniffio/default.nix23
-rw-r--r--pkgs/development/python-modules/snitun/default.nix100
-rw-r--r--pkgs/development/python-modules/snorkel/default.nix41
-rw-r--r--pkgs/development/python-modules/snowballstemmer/default.nix7
-rw-r--r--pkgs/development/python-modules/snowflake-connector-python/default.nix61
-rw-r--r--pkgs/development/python-modules/snowflake-sqlalchemy/default.nix23
-rw-r--r--pkgs/development/python-modules/snscrape/default.nix53
-rw-r--r--pkgs/development/python-modules/snuggs/default.nix32
-rw-r--r--pkgs/development/python-modules/social-auth-app-django/default.nix31
-rw-r--r--pkgs/development/python-modules/social-auth-core/default.nix51
-rw-r--r--pkgs/development/python-modules/socialscan/default.nix19
-rw-r--r--pkgs/development/python-modules/socid-extractor/default.nix19
-rw-r--r--pkgs/development/python-modules/socketio-client/default.nix19
-rw-r--r--pkgs/development/python-modules/sockio/default.nix17
-rw-r--r--pkgs/development/python-modules/sockjs-tornado/default.nix7
-rw-r--r--pkgs/development/python-modules/sockjs/default.nix11
-rw-r--r--pkgs/development/python-modules/socksio/default.nix22
-rw-r--r--pkgs/development/python-modules/socksipy-branch/default.nix8
-rw-r--r--pkgs/development/python-modules/soco/default.nix4
-rw-r--r--pkgs/development/python-modules/softlayer/default.nix46
-rw-r--r--pkgs/development/python-modules/solaredge/default.nix37
-rw-r--r--pkgs/development/python-modules/solarlog-cli/default.nix52
-rw-r--r--pkgs/development/python-modules/solax/default.nix37
-rw-r--r--pkgs/development/python-modules/solc-select/default.nix11
-rw-r--r--pkgs/development/python-modules/solidpython2/default.nix49
-rw-r--r--pkgs/development/python-modules/solidpython2/difftool_tests.patch35
-rw-r--r--pkgs/development/python-modules/solo-python/default.nix36
-rw-r--r--pkgs/development/python-modules/somajo/default.nix40
-rw-r--r--pkgs/development/python-modules/somfy-mylink-synergy/default.nix9
-rw-r--r--pkgs/development/python-modules/somweb/default.nix41
-rw-r--r--pkgs/development/python-modules/sonarr/default.nix17
-rw-r--r--pkgs/development/python-modules/sonos-websocket/default.nix23
-rw-r--r--pkgs/development/python-modules/sopel/default.nix94
-rw-r--r--pkgs/development/python-modules/sopel/python311-support.patch96
-rw-r--r--pkgs/development/python-modules/sorl-thumbnail/default.nix23
-rw-r--r--pkgs/development/python-modules/sortedcollections/default.nix13
-rw-r--r--pkgs/development/python-modules/sortedcontainers/default.nix19
-rw-r--r--pkgs/development/python-modules/soundcard/default.nix50
-rw-r--r--pkgs/development/python-modules/soundcard/test.nix47
-rw-r--r--pkgs/development/python-modules/soundcloud-v2/default.nix27
-rw-r--r--pkgs/development/python-modules/sounddevice/default.nix29
-rw-r--r--pkgs/development/python-modules/soundfile/default.nix33
-rw-r--r--pkgs/development/python-modules/soupsieve/default.nix18
-rw-r--r--pkgs/development/python-modules/sourmash/default.nix57
-rw-r--r--pkgs/development/python-modules/soxr/default.nix47
-rw-r--r--pkgs/development/python-modules/spacy-alignments/default.nix25
-rw-r--r--pkgs/development/python-modules/spacy-loggers/default.nix12
-rw-r--r--pkgs/development/python-modules/spacy-pkuseg/default.nix22
-rw-r--r--pkgs/development/python-modules/spacy-transformers/annotation-test/default.nix19
-rw-r--r--pkgs/development/python-modules/spacy-transformers/default.nix45
-rw-r--r--pkgs/development/python-modules/spacy/annotation-test/default.nix19
-rw-r--r--pkgs/development/python-modules/spacy/default.nix123
-rw-r--r--pkgs/development/python-modules/spacy/legacy.nix11
-rw-r--r--pkgs/development/python-modules/spacy/lookups-data.nix13
-rw-r--r--pkgs/development/python-modules/spacy/models.nix71
-rw-r--r--pkgs/development/python-modules/spake2/default.nix46
-rw-r--r--pkgs/development/python-modules/spark-parser/default.nix24
-rw-r--r--pkgs/development/python-modules/sparklines/default.nix17
-rw-r--r--pkgs/development/python-modules/sparqlwrapper/default.nix9
-rw-r--r--pkgs/development/python-modules/sparse/default.nix33
-rw-r--r--pkgs/development/python-modules/sparsezoo/default.nix118
-rw-r--r--pkgs/development/python-modules/spatial-image/default.nix29
-rw-r--r--pkgs/development/python-modules/spatialmath-python/default.nix74
-rw-r--r--pkgs/development/python-modules/spdx-lookup/default.nix27
-rw-r--r--pkgs/development/python-modules/spdx-tools/default.nix41
-rw-r--r--pkgs/development/python-modules/spdx/default.nix21
-rw-r--r--pkgs/development/python-modules/speaklater/default.nix8
-rw-r--r--pkgs/development/python-modules/speaklater3/default.nix7
-rw-r--r--pkgs/development/python-modules/spectral-cube/default.nix63
-rw-r--r--pkgs/development/python-modules/spectral-cube/distutils-looseversion.patch152
-rw-r--r--pkgs/development/python-modules/speechbrain/default.nix48
-rw-r--r--pkgs/development/python-modules/speechrecognition/default.nix41
-rw-r--r--pkgs/development/python-modules/speedtest-cli/default.nix12
-rw-r--r--pkgs/development/python-modules/speg/default.nix10
-rw-r--r--pkgs/development/python-modules/spglib/default.nix55
-rw-r--r--pkgs/development/python-modules/sphfile/default.nix13
-rw-r--r--pkgs/development/python-modules/sphinx-argparse/default.nix21
-rw-r--r--pkgs/development/python-modules/sphinx-autoapi/default.nix72
-rw-r--r--pkgs/development/python-modules/sphinx-autobuild/default.nix50
-rw-r--r--pkgs/development/python-modules/sphinx-autodoc-typehints/default.nix33
-rw-r--r--pkgs/development/python-modules/sphinx-automodapi/default.nix25
-rw-r--r--pkgs/development/python-modules/sphinx-basic-ng/default.nix17
-rw-r--r--pkgs/development/python-modules/sphinx-better-theme/default.nix12
-rw-r--r--pkgs/development/python-modules/sphinx-book-theme/default.nix27
-rw-r--r--pkgs/development/python-modules/sphinx-codeautolink/default.nix45
-rw-r--r--pkgs/development/python-modules/sphinx-comments/default.nix13
-rw-r--r--pkgs/development/python-modules/sphinx-copybutton/default.nix15
-rw-r--r--pkgs/development/python-modules/sphinx-design/default.nix23
-rw-r--r--pkgs/development/python-modules/sphinx-external-toc/default.nix23
-rw-r--r--pkgs/development/python-modules/sphinx-fortran/default.nix21
-rw-r--r--pkgs/development/python-modules/sphinx-hoverxref/default.nix49
-rw-r--r--pkgs/development/python-modules/sphinx-inline-tabs/default.nix19
-rw-r--r--pkgs/development/python-modules/sphinx-intl/default.nix29
-rw-r--r--pkgs/development/python-modules/sphinx-issues/default.nix15
-rw-r--r--pkgs/development/python-modules/sphinx-jinja/default.nix10
-rw-r--r--pkgs/development/python-modules/sphinx-jupyterbook-latex/default.nix37
-rw-r--r--pkgs/development/python-modules/sphinx-markdown-parser/default.nix49
-rw-r--r--pkgs/development/python-modules/sphinx-markdown-tables/default.nix11
-rw-r--r--pkgs/development/python-modules/sphinx-material/default.nix47
-rw-r--r--pkgs/development/python-modules/sphinx-mdinclude/default.nix37
-rw-r--r--pkgs/development/python-modules/sphinx-multitoc-numbering/default.nix27
-rw-r--r--pkgs/development/python-modules/sphinx-notfound-page/default.nix47
-rw-r--r--pkgs/development/python-modules/sphinx-prompt/default.nix33
-rw-r--r--pkgs/development/python-modules/sphinx-pytest/default.nix33
-rw-r--r--pkgs/development/python-modules/sphinx-rtd-dark-mode/default.nix39
-rw-r--r--pkgs/development/python-modules/sphinx-rtd-theme/default.nix30
-rw-r--r--pkgs/development/python-modules/sphinx-serve/default.nix7
-rw-r--r--pkgs/development/python-modules/sphinx-sitemap/default.nix23
-rw-r--r--pkgs/development/python-modules/sphinx-tabs/default.nix43
-rw-r--r--pkgs/development/python-modules/sphinx-testing/default.nix30
-rw-r--r--pkgs/development/python-modules/sphinx-thebe/default.nix25
-rw-r--r--pkgs/development/python-modules/sphinx-togglebutton/default.nix21
-rw-r--r--pkgs/development/python-modules/sphinx-version-warning/default.nix39
-rw-r--r--pkgs/development/python-modules/sphinx/default.nix195
-rw-r--r--pkgs/development/python-modules/sphinxawesome-theme/default.nix35
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-actdiag/default.nix19
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-apidoc/default.nix11
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-applehelp/default.nix15
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-asyncio/default.nix19
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-bayesnet/default.nix16
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-bibtex/default.nix25
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-blockdiag/default.nix35
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-confluencebuilder/default.nix39
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-devhelp/default.nix17
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-ditaa/default.nix41
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-excel-table/default.nix16
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-fulltoc/default.nix9
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-htmlhelp/default.nix15
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-httpdomain/default.nix10
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-jquery/default.nix25
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-jsmath/default.nix11
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-katex/default.nix35
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-log-cabinet/default.nix7
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-mscgen/default.nix17
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-newsfeed/default.nix20
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-nwdiag/default.nix19
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-openapi/default.nix24
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-plantuml/default.nix33
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-programoutput/default.nix16
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-qthelp/default.nix17
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-seqdiag/default.nix19
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-serializinghtml/default.nix17
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-spelling/default.nix31
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-tikz/default.nix29
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-wavedrom/default.nix20
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-websupport/default.nix17
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-youtube/default.nix18
-rw-r--r--pkgs/development/python-modules/sphinxemoji/default.nix24
-rw-r--r--pkgs/development/python-modules/sphinxext-opengraph/default.nix31
-rw-r--r--pkgs/development/python-modules/spiderpy/default.nix21
-rw-r--r--pkgs/development/python-modules/spidev/default.nix7
-rw-r--r--pkgs/development/python-modules/spinners/default.nix12
-rw-r--r--pkgs/development/python-modules/splinter/default.nix53
-rw-r--r--pkgs/development/python-modules/spotipy/default.nix23
-rw-r--r--pkgs/development/python-modules/spsdk/default.nix106
-rw-r--r--pkgs/development/python-modules/spur/default.nix19
-rw-r--r--pkgs/development/python-modules/spyder-kernels/default.nix65
-rw-r--r--pkgs/development/python-modules/spyder/default.nix125
-rw-r--r--pkgs/development/python-modules/spyder/dont-clear-pythonpath.patch20
-rw-r--r--pkgs/development/python-modules/spylls/default.nix15
-rw-r--r--pkgs/development/python-modules/spyse-python/default.nix42
-rw-r--r--pkgs/development/python-modules/spython/default.nix33
-rw-r--r--pkgs/development/python-modules/sqids/default.nix25
-rw-r--r--pkgs/development/python-modules/sqlalchemy-citext/default.nix13
-rw-r--r--pkgs/development/python-modules/sqlalchemy-continuum/default.nix72
-rw-r--r--pkgs/development/python-modules/sqlalchemy-file/default.nix78
-rw-r--r--pkgs/development/python-modules/sqlalchemy-i18n/default.nix13
-rw-r--r--pkgs/development/python-modules/sqlalchemy-jsonfield/default.nix32
-rw-r--r--pkgs/development/python-modules/sqlalchemy-migrate/default.nix71
-rw-r--r--pkgs/development/python-modules/sqlalchemy-migrate/python3.11-comp.diff13
-rw-r--r--pkgs/development/python-modules/sqlalchemy-mixins/default.nix32
-rw-r--r--pkgs/development/python-modules/sqlalchemy-utils/default.nix125
-rw-r--r--pkgs/development/python-modules/sqlalchemy-views/default.nix29
-rw-r--r--pkgs/development/python-modules/sqlalchemy/1_4.nix145
-rw-r--r--pkgs/development/python-modules/sqlalchemy/default.nix166
-rw-r--r--pkgs/development/python-modules/sqlbag/default.nix65
-rw-r--r--pkgs/development/python-modules/sqlglot/default.nix25
-rw-r--r--pkgs/development/python-modules/sqlite-anyio/default.nix44
-rw-r--r--pkgs/development/python-modules/sqlite-fts4/default.nix19
-rw-r--r--pkgs/development/python-modules/sqlite-migrate/default.nix33
-rw-r--r--pkgs/development/python-modules/sqlite-utils/default.nix63
-rw-r--r--pkgs/development/python-modules/sqlitedict/default.nix29
-rw-r--r--pkgs/development/python-modules/sqliteschema/default.nix21
-rw-r--r--pkgs/development/python-modules/sqlmap/default.nix4
-rw-r--r--pkgs/development/python-modules/sqlmodel/default.nix21
-rw-r--r--pkgs/development/python-modules/sqlobject/default.nix29
-rw-r--r--pkgs/development/python-modules/sqlparse/default.nix48
-rw-r--r--pkgs/development/python-modules/sqlsoup/default.nix23
-rw-r--r--pkgs/development/python-modules/sqltrie/default.nix30
-rw-r--r--pkgs/development/python-modules/squarify/default.nix11
-rw-r--r--pkgs/development/python-modules/sre-yield/default.nix20
-rw-r--r--pkgs/development/python-modules/srp/default.nix27
-rw-r--r--pkgs/development/python-modules/srpenergy/default.nix25
-rw-r--r--pkgs/development/python-modules/srptools/default.nix27
-rw-r--r--pkgs/development/python-modules/srsly/default.nix35
-rw-r--r--pkgs/development/python-modules/srt/default.nix20
-rw-r--r--pkgs/development/python-modules/srvlookup/default.nix25
-rw-r--r--pkgs/development/python-modules/ssdeep/default.nix29
-rw-r--r--pkgs/development/python-modules/ssdp/default.nix23
-rw-r--r--pkgs/development/python-modules/ssdpy/default.nix15
-rw-r--r--pkgs/development/python-modules/sse-starlette/default.nix4
-rw-r--r--pkgs/development/python-modules/sseclient-py/default.nix23
-rw-r--r--pkgs/development/python-modules/sseclient/default.nix23
-rw-r--r--pkgs/development/python-modules/ssg/default.nix4
-rw-r--r--pkgs/development/python-modules/sshfs/default.nix62
-rw-r--r--pkgs/development/python-modules/sshpubkeys/default.nix14
-rw-r--r--pkgs/development/python-modules/sshtunnel/default.nix18
-rw-r--r--pkgs/development/python-modules/sslib/default.nix9
-rw-r--r--pkgs/development/python-modules/ssort/default.nix45
-rw-r--r--pkgs/development/python-modules/stack-data/default.nix59
-rw-r--r--pkgs/development/python-modules/stamina/default.nix53
-rw-r--r--pkgs/development/python-modules/stanio/default.nix25
-rw-r--r--pkgs/development/python-modules/stanza/default.nix39
-rw-r--r--pkgs/development/python-modules/starkbank-ecdsa/default.nix19
-rw-r--r--pkgs/development/python-modules/starlette-admin/default.nix127
-rw-r--r--pkgs/development/python-modules/starlette-context/default.nix31
-rw-r--r--pkgs/development/python-modules/starlette-wtf/default.nix35
-rw-r--r--pkgs/development/python-modules/starlette/default.nix79
-rw-r--r--pkgs/development/python-modules/starline/default.nix23
-rw-r--r--pkgs/development/python-modules/stashy/default.nix22
-rw-r--r--pkgs/development/python-modules/static3/default.nix29
-rw-r--r--pkgs/development/python-modules/staticjinja/default.nix41
-rw-r--r--pkgs/development/python-modules/staticmap/default.nix18
-rw-r--r--pkgs/development/python-modules/statistics/default.nix13
-rw-r--r--pkgs/development/python-modules/statmake/default.nix60
-rw-r--r--pkgs/development/python-modules/statsd/default.nix37
-rw-r--r--pkgs/development/python-modules/statsmodels/default.nix52
-rw-r--r--pkgs/development/python-modules/std-uritemplate/default.nix4
-rw-r--r--pkgs/development/python-modules/std2/default.nix21
-rw-r--r--pkgs/development/python-modules/stdiomask/default.nix7
-rw-r--r--pkgs/development/python-modules/stdlib-list/default.nix23
-rw-r--r--pkgs/development/python-modules/stdlibs/default.nix25
-rw-r--r--pkgs/development/python-modules/steamodd/default.nix7
-rw-r--r--pkgs/development/python-modules/steamship/default.nix39
-rw-r--r--pkgs/development/python-modules/stem/default.nix28
-rw-r--r--pkgs/development/python-modules/stemming/default.nix11
-rw-r--r--pkgs/development/python-modules/stestr/default.nix29
-rw-r--r--pkgs/development/python-modules/stestr/tests.nix8
-rw-r--r--pkgs/development/python-modules/stevedore/default.nix42
-rw-r--r--pkgs/development/python-modules/stevedore/tests.nix29
-rw-r--r--pkgs/development/python-modules/stickytape/default.nix31
-rw-r--r--pkgs/development/python-modules/stim/default.nix43
-rw-r--r--pkgs/development/python-modules/stix2-validator/default.nix55
-rw-r--r--pkgs/development/python-modules/stm32loader/default.nix47
-rw-r--r--pkgs/development/python-modules/stone/default.nix31
-rw-r--r--pkgs/development/python-modules/stookalert/default.nix13
-rw-r--r--pkgs/development/python-modules/stookwijzer/default.nix41
-rw-r--r--pkgs/development/python-modules/stopit/default.nix9
-rw-r--r--pkgs/development/python-modules/stransi/default.nix25
-rw-r--r--pkgs/development/python-modules/strategies/default.nix21
-rw-r--r--pkgs/development/python-modules/stravalib/default.nix40
-rw-r--r--pkgs/development/python-modules/strawberry-graphql/default.nix138
-rw-r--r--pkgs/development/python-modules/strct/default.nix47
-rw-r--r--pkgs/development/python-modules/streamcontroller-plugin-tools/default.nix33
-rw-r--r--pkgs/development/python-modules/streamdeck/default.nix14
-rw-r--r--pkgs/development/python-modules/streaming-form-data/default.nix20
-rw-r--r--pkgs/development/python-modules/streamlabswater/default.nix15
-rw-r--r--pkgs/development/python-modules/streamlit/default.nix87
-rw-r--r--pkgs/development/python-modules/streamz/default.nix53
-rw-r--r--pkgs/development/python-modules/strenum/default.nix27
-rw-r--r--pkgs/development/python-modules/strict-rfc3339/default.nix6
-rw-r--r--pkgs/development/python-modules/strictyaml/default.nix19
-rw-r--r--pkgs/development/python-modules/stringbrewer/default.nix18
-rw-r--r--pkgs/development/python-modules/stringcase/default.nix5
-rw-r--r--pkgs/development/python-modules/stringly/default.nix15
-rw-r--r--pkgs/development/python-modules/stringparser/default.nix29
-rw-r--r--pkgs/development/python-modules/stripe/default.nix31
-rw-r--r--pkgs/development/python-modules/striprtf/default.nix15
-rw-r--r--pkgs/development/python-modules/strpdatetime/default.nix39
-rw-r--r--pkgs/development/python-modules/strpdatetime/fix-locale.patch10
-rw-r--r--pkgs/development/python-modules/structlog/default.nix37
-rw-r--r--pkgs/development/python-modules/stubserver/default.nix13
-rw-r--r--pkgs/development/python-modules/stumpy/default.nix29
-rw-r--r--pkgs/development/python-modules/stupidartnet/default.nix25
-rw-r--r--pkgs/development/python-modules/stups-cli-support/default.nix32
-rw-r--r--pkgs/development/python-modules/stups-fullstop/default.nix25
-rw-r--r--pkgs/development/python-modules/stups-pierone/default.nix36
-rw-r--r--pkgs/development/python-modules/stups-tokens/default.nix30
-rw-r--r--pkgs/development/python-modules/stups-zign/default.nix32
-rw-r--r--pkgs/development/python-modules/stytra/default.nix64
-rw-r--r--pkgs/development/python-modules/subarulink/default.nix27
-rw-r--r--pkgs/development/python-modules/subliminal/default.nix103
-rw-r--r--pkgs/development/python-modules/subprocess-tee/default.nix36
-rw-r--r--pkgs/development/python-modules/subunit/default.nix42
-rw-r--r--pkgs/development/python-modules/subunit2sql/default.nix23
-rw-r--r--pkgs/development/python-modules/subzerod/default.nix19
-rw-r--r--pkgs/development/python-modules/succulent/default.nix47
-rw-r--r--pkgs/development/python-modules/sudachidict/default.nix19
-rw-r--r--pkgs/development/python-modules/sudachipy/default.nix49
-rw-r--r--pkgs/development/python-modules/suds-community/default.nix14
-rw-r--r--pkgs/development/python-modules/suds/default.nix40
-rw-r--r--pkgs/development/python-modules/summarytools/default.nix32
-rw-r--r--pkgs/development/python-modules/sumo/default.nix45
-rw-r--r--pkgs/development/python-modules/sumtypes/default.nix21
-rw-r--r--pkgs/development/python-modules/sunpy/default.nix85
-rw-r--r--pkgs/development/python-modules/sunwatcher/default.nix15
-rw-r--r--pkgs/development/python-modules/sunweg/default.nix28
-rw-r--r--pkgs/development/python-modules/superqt/default.nix60
-rw-r--r--pkgs/development/python-modules/supervise-api/default.nix28
-rw-r--r--pkgs/development/python-modules/supervisor/default.nix29
-rw-r--r--pkgs/development/python-modules/sure/default.nix45
-rw-r--r--pkgs/development/python-modules/surepy/default.nix41
-rw-r--r--pkgs/development/python-modules/surt/default.nix23
-rw-r--r--pkgs/development/python-modules/survey/default.nix23
-rw-r--r--pkgs/development/python-modules/sv-ttk/default.nix21
-rw-r--r--pkgs/development/python-modules/svg-path/default.nix19
-rw-r--r--pkgs/development/python-modules/svg-py/default.nix27
-rw-r--r--pkgs/development/python-modules/svg2tikz/default.nix39
-rw-r--r--pkgs/development/python-modules/svgelements/default.nix44
-rw-r--r--pkgs/development/python-modules/svglib/default.nix31
-rw-r--r--pkgs/development/python-modules/svgutils/default.nix39
-rw-r--r--pkgs/development/python-modules/svgwrite/default.nix14
-rw-r--r--pkgs/development/python-modules/swagger-spec-validator/default.nix11
-rw-r--r--pkgs/development/python-modules/swagger-ui-bundle/default.nix32
-rw-r--r--pkgs/development/python-modules/swift/default.nix67
-rw-r--r--pkgs/development/python-modules/swifter/default.nix52
-rw-r--r--pkgs/development/python-modules/swisshydrodata/default.nix17
-rw-r--r--pkgs/development/python-modules/switchbot-api/default.nix33
-rw-r--r--pkgs/development/python-modules/swspotify/default.nix28
-rw-r--r--pkgs/development/python-modules/sybil/default.nix23
-rw-r--r--pkgs/development/python-modules/symengine/default.nix56
-rw-r--r--pkgs/development/python-modules/sympy/default.nix28
-rw-r--r--pkgs/development/python-modules/symspellpy/default.nix44
-rw-r--r--pkgs/development/python-modules/syncedlyrics/default.nix33
-rw-r--r--pkgs/development/python-modules/syncer/default.nix9
-rw-r--r--pkgs/development/python-modules/synergy/default.nix25
-rw-r--r--pkgs/development/python-modules/synologydsm-api/default.nix64
-rw-r--r--pkgs/development/python-modules/syrupy/default.nix46
-rw-r--r--pkgs/development/python-modules/syslog-rfc5424-formatter/default.nix13
-rw-r--r--pkgs/development/python-modules/sysrsync/default.nix45
-rw-r--r--pkgs/development/python-modules/systembridge/default.nix11
-rw-r--r--pkgs/development/python-modules/systembridgeconnector/default.nix55
-rw-r--r--pkgs/development/python-modules/systembridgemodels/default.nix42
-rw-r--r--pkgs/development/python-modules/systemd/default.nix29
-rw-r--r--pkgs/development/python-modules/sysv-ipc/default.nix8
-rw-r--r--pkgs/development/python-modules/tabcmd/default.nix15
-rw-r--r--pkgs/development/python-modules/tableaudocumentapi/default.nix42
-rw-r--r--pkgs/development/python-modules/tableauserverclient/default.nix39
-rw-r--r--pkgs/development/python-modules/tabledata/default.nix20
-rw-r--r--pkgs/development/python-modules/tables/default.nix41
-rw-r--r--pkgs/development/python-modules/tablib/default.nix69
-rw-r--r--pkgs/development/python-modules/tabula-py/default.nix47
-rw-r--r--pkgs/development/python-modules/tabulate/default.nix17
-rw-r--r--pkgs/development/python-modules/tabview/default.nix9
-rw-r--r--pkgs/development/python-modules/tadasets/default.nix17
-rw-r--r--pkgs/development/python-modules/tag-expressions/default.nix19
-rw-r--r--pkgs/development/python-modules/tago/default.nix27
-rw-r--r--pkgs/development/python-modules/tagoio-sdk/default.nix33
-rw-r--r--pkgs/development/python-modules/tahoma-api/default.nix9
-rw-r--r--pkgs/development/python-modules/tailer/default.nix9
-rw-r--r--pkgs/development/python-modules/tailscale/default.nix37
-rw-r--r--pkgs/development/python-modules/takethetime/default.nix11
-rw-r--r--pkgs/development/python-modules/tank-utility/default.nix29
-rw-r--r--pkgs/development/python-modules/tappy/default.nix31
-rw-r--r--pkgs/development/python-modules/tasklib/default.nix35
-rw-r--r--pkgs/development/python-modules/taskw-ng/default.nix6
-rw-r--r--pkgs/development/python-modules/taskw/default.nix41
-rw-r--r--pkgs/development/python-modules/tatsu/default.nix35
-rw-r--r--pkgs/development/python-modules/taxi/default.nix19
-rw-r--r--pkgs/development/python-modules/taxii2-client/default.nix43
-rw-r--r--pkgs/development/python-modules/tbats/default.nix23
-rw-r--r--pkgs/development/python-modules/tblib/default.nix17
-rw-r--r--pkgs/development/python-modules/tbm-utils/default.nix10
-rw-r--r--pkgs/development/python-modules/tcolorpy/default.nix26
-rw-r--r--pkgs/development/python-modules/tcxparser/default.nix24
-rw-r--r--pkgs/development/python-modules/tcxreader/default.nix28
-rw-r--r--pkgs/development/python-modules/tdir/default.nix29
-rw-r--r--pkgs/development/python-modules/teamcity-messages/default.nix23
-rw-r--r--pkgs/development/python-modules/telegram-text/default.nix22
-rw-r--r--pkgs/development/python-modules/telegram/default.nix8
-rw-r--r--pkgs/development/python-modules/telegraph/default.nix40
-rw-r--r--pkgs/development/python-modules/telepath/default.nix13
-rw-r--r--pkgs/development/python-modules/telethon-session-sqlalchemy/default.nix12
-rw-r--r--pkgs/development/python-modules/telethon/default.nix29
-rw-r--r--pkgs/development/python-modules/teletype/default.nix21
-rw-r--r--pkgs/development/python-modules/telfhash/default.nix40
-rw-r--r--pkgs/development/python-modules/tellduslive/default.nix40
-rw-r--r--pkgs/development/python-modules/temescal/default.nix19
-rw-r--r--pkgs/development/python-modules/temperusb/default.nix19
-rw-r--r--pkgs/development/python-modules/tempest/default.nix94
-rw-r--r--pkgs/development/python-modules/tempita/default.nix22
-rw-r--r--pkgs/development/python-modules/templateflow/default.nix21
-rw-r--r--pkgs/development/python-modules/tempora/default.nix45
-rw-r--r--pkgs/development/python-modules/tenacity/default.nix29
-rw-r--r--pkgs/development/python-modules/tencentcloud-sdk-python/default.nix11
-rw-r--r--pkgs/development/python-modules/tendo/default.nix21
-rw-r--r--pkgs/development/python-modules/tensorboard-data-server/default.nix7
-rw-r--r--pkgs/development/python-modules/tensorboard-plugin-profile/default.nix21
-rw-r--r--pkgs/development/python-modules/tensorboard-plugin-wit/default.nix7
-rw-r--r--pkgs/development/python-modules/tensorboard/default.nix41
-rw-r--r--pkgs/development/python-modules/tensorboardx/default.nix60
-rw-r--r--pkgs/development/python-modules/tensordict/default.nix100
-rw-r--r--pkgs/development/python-modules/tensorflow-datasets/default.nix97
-rw-r--r--pkgs/development/python-modules/tensorflow-estimator/bin.nix24
-rw-r--r--pkgs/development/python-modules/tensorflow-metadata/default.nix21
-rw-r--r--pkgs/development/python-modules/tensorflow-probability/default.nix101
-rw-r--r--pkgs/development/python-modules/tensorflow/bin.nix145
-rw-r--r--pkgs/development/python-modules/tensorflow/binary-hashes.nix107
-rw-r--r--pkgs/development/python-modules/tensorflow/default.nix620
-rwxr-xr-xpkgs/development/python-modules/tensorflow/prefetcher.sh33
-rw-r--r--pkgs/development/python-modules/tensorly/default.nix27
-rw-r--r--pkgs/development/python-modules/tensorrt/default.nix23
-rw-r--r--pkgs/development/python-modules/tensorstore/default.nix47
-rw-r--r--pkgs/development/python-modules/termcolor/default.nix21
-rw-r--r--pkgs/development/python-modules/termgraph/default.nix13
-rw-r--r--pkgs/development/python-modules/terminado/default.nix27
-rw-r--r--pkgs/development/python-modules/terminaltables/default.nix8
-rw-r--r--pkgs/development/python-modules/terminaltexteffects/default.nix35
-rw-r--r--pkgs/development/python-modules/termplotlib/default.nix23
-rw-r--r--pkgs/development/python-modules/termstyle/default.nix6
-rw-r--r--pkgs/development/python-modules/tern/default.nix45
-rw-r--r--pkgs/development/python-modules/tesla-fleet-api/default.nix29
-rw-r--r--pkgs/development/python-modules/tesla-powerwall/default.nix33
-rw-r--r--pkgs/development/python-modules/tesla-wall-connector/default.nix30
-rw-r--r--pkgs/development/python-modules/teslajsonpy/default.nix4
-rw-r--r--pkgs/development/python-modules/tess/default.nix20
-rw-r--r--pkgs/development/python-modules/tesserocr/default.nix55
-rw-r--r--pkgs/development/python-modules/test-tube/default.nix27
-rw-r--r--pkgs/development/python-modules/testbook/default.nix33
-rw-r--r--pkgs/development/python-modules/testcontainers/default.nix53
-rw-r--r--pkgs/development/python-modules/testfixtures/default.nix35
-rw-r--r--pkgs/development/python-modules/testing-common-database/default.nix14
-rw-r--r--pkgs/development/python-modules/testing-postgresql/default.nix40
-rw-r--r--pkgs/development/python-modules/testpath/default.nix24
-rw-r--r--pkgs/development/python-modules/testrail-api/default.nix48
-rw-r--r--pkgs/development/python-modules/testrepository/default.nix30
-rw-r--r--pkgs/development/python-modules/testresources/default.nix25
-rw-r--r--pkgs/development/python-modules/testscenarios/default.nix24
-rw-r--r--pkgs/development/python-modules/testtools/default.nix39
-rw-r--r--pkgs/development/python-modules/texsoup/default.nix21
-rw-r--r--pkgs/development/python-modules/text-unidecode/default.nix9
-rw-r--r--pkgs/development/python-modules/textacy/default.nix47
-rw-r--r--pkgs/development/python-modules/textdistance/default.nix19
-rw-r--r--pkgs/development/python-modules/textfsm/default.nix20
-rw-r--r--pkgs/development/python-modules/textile/default.nix57
-rw-r--r--pkgs/development/python-modules/textnets/default.nix50
-rw-r--r--pkgs/development/python-modules/textparser/default.nix27
-rw-r--r--pkgs/development/python-modules/texttable/default.nix25
-rw-r--r--pkgs/development/python-modules/textual-dev/default.nix44
-rw-r--r--pkgs/development/python-modules/textual-universal-directorytree/default.nix41
-rw-r--r--pkgs/development/python-modules/textual/default.nix66
-rw-r--r--pkgs/development/python-modules/textwrap3/default.nix13
-rw-r--r--pkgs/development/python-modules/textx/default.nix113
-rw-r--r--pkgs/development/python-modules/textx/tests.nix41
-rw-r--r--pkgs/development/python-modules/tf-keras/default.nix53
-rw-r--r--pkgs/development/python-modules/tf2onnx/default.nix64
-rw-r--r--pkgs/development/python-modules/tflearn/default.nix23
-rw-r--r--pkgs/development/python-modules/tftpy/default.nix9
-rw-r--r--pkgs/development/python-modules/tgcrypto/default.nix21
-rw-r--r--pkgs/development/python-modules/theano-pymc/default.nix50
-rw-r--r--pkgs/development/python-modules/theano/default.nix107
-rw-r--r--pkgs/development/python-modules/thefuzz/default.nix19
-rw-r--r--pkgs/development/python-modules/thelogrus/default.nix25
-rw-r--r--pkgs/development/python-modules/thermobeacon-ble/default.nix35
-rw-r--r--pkgs/development/python-modules/thermopro-ble/default.nix31
-rw-r--r--pkgs/development/python-modules/thespian/default.nix6
-rw-r--r--pkgs/development/python-modules/thinc/default.nix94
-rw-r--r--pkgs/development/python-modules/thinqconnect/default.nix46
-rw-r--r--pkgs/development/python-modules/thorlabspm100/default.nix23
-rw-r--r--pkgs/development/python-modules/threadloop/default.nix17
-rw-r--r--pkgs/development/python-modules/threadpool/default.nix8
-rw-r--r--pkgs/development/python-modules/threadpoolctl/default.nix26
-rw-r--r--pkgs/development/python-modules/threat9-test-bed/default.nix37
-rw-r--r--pkgs/development/python-modules/three-merge/default.nix9
-rw-r--r--pkgs/development/python-modules/thrift/default.nix23
-rw-r--r--pkgs/development/python-modules/thriftpy2/default.nix38
-rw-r--r--pkgs/development/python-modules/throttler/default.nix23
-rw-r--r--pkgs/development/python-modules/thttp/default.nix21
-rw-r--r--pkgs/development/python-modules/tidalapi/default.nix43
-rw-r--r--pkgs/development/python-modules/tidyexc/default.nix19
-rw-r--r--pkgs/development/python-modules/tifffile/default.nix38
-rw-r--r--pkgs/development/python-modules/tika-client/default.nix23
-rw-r--r--pkgs/development/python-modules/tika/default.nix18
-rw-r--r--pkgs/development/python-modules/tiktoken/Cargo.lock189
-rw-r--r--pkgs/development/python-modules/tiktoken/default.nix58
-rw-r--r--pkgs/development/python-modules/tikzplotlib/default.nix21
-rw-r--r--pkgs/development/python-modules/tiledb/default.nix31
-rw-r--r--pkgs/development/python-modules/tilequant/default.nix31
-rw-r--r--pkgs/development/python-modules/tiler/default.nix25
-rw-r--r--pkgs/development/python-modules/tilestache/default.nix33
-rw-r--r--pkgs/development/python-modules/tilt-ble/default.nix31
-rw-r--r--pkgs/development/python-modules/time-machine/default.nix41
-rw-r--r--pkgs/development/python-modules/timeago/default.nix13
-rw-r--r--pkgs/development/python-modules/timecop/default.nix2
-rw-r--r--pkgs/development/python-modules/timelib/default.nix14
-rw-r--r--pkgs/development/python-modules/timeout-decorator/default.nix6
-rw-r--r--pkgs/development/python-modules/timeslot/default.nix21
-rw-r--r--pkgs/development/python-modules/timetagger/default.nix38
-rw-r--r--pkgs/development/python-modules/timezonefinder/default.nix40
-rw-r--r--pkgs/development/python-modules/timing-asgi/default.nix16
-rw-r--r--pkgs/development/python-modules/timm/default.nix55
-rw-r--r--pkgs/development/python-modules/timy/default.nix28
-rw-r--r--pkgs/development/python-modules/tiny-proxy/default.nix25
-rw-r--r--pkgs/development/python-modules/tinycss/default.nix33
-rw-r--r--pkgs/development/python-modules/tinycss2/default.nix25
-rw-r--r--pkgs/development/python-modules/tinydb/default.nix21
-rw-r--r--pkgs/development/python-modules/tinygrad/default.nix203
-rw-r--r--pkgs/development/python-modules/tinygrad/fix-dlopen-cuda.patch49
-rw-r--r--pkgs/development/python-modules/tinyobjloader-py/default.nix9
-rw-r--r--pkgs/development/python-modules/tinyrecord/default.nix19
-rw-r--r--pkgs/development/python-modules/tinysegmenter/default.nix24
-rw-r--r--pkgs/development/python-modules/tinytag/default.nix33
-rw-r--r--pkgs/development/python-modules/tinytuya/default.nix46
-rw-r--r--pkgs/development/python-modules/tissue/default.nix28
-rw-r--r--pkgs/development/python-modules/titlecase/default.nix37
-rw-r--r--pkgs/development/python-modules/tkinter/default.nix38
-rw-r--r--pkgs/development/python-modules/tld/default.nix29
-rw-r--r--pkgs/development/python-modules/tldextract/default.nix33
-rw-r--r--pkgs/development/python-modules/tlds/default.nix26
-rw-r--r--pkgs/development/python-modules/tls-client/default.nix25
-rw-r--r--pkgs/development/python-modules/tls-parser/default.nix19
-rw-r--r--pkgs/development/python-modules/tlsh/default.nix10
-rw-r--r--pkgs/development/python-modules/tlslite-ng/default.nix49
-rw-r--r--pkgs/development/python-modules/tlslite/default.nix10
-rw-r--r--pkgs/development/python-modules/tlv8/default.nix17
-rw-r--r--pkgs/development/python-modules/tmb/default.nix19
-rw-r--r--pkgs/development/python-modules/todoist-api-python/default.nix33
-rw-r--r--pkgs/development/python-modules/todoist/default.nix23
-rw-r--r--pkgs/development/python-modules/toggl-cli/default.nix4
-rw-r--r--pkgs/development/python-modules/token-bucket/default.nix27
-rw-r--r--pkgs/development/python-modules/tokenize-rt/default.nix23
-rw-r--r--pkgs/development/python-modules/tokenizers/Cargo.lock376
-rw-r--r--pkgs/development/python-modules/tokenizers/default.nix114
-rw-r--r--pkgs/development/python-modules/tokenlib/default.nix42
-rw-r--r--pkgs/development/python-modules/tokentrim/default.nix19
-rw-r--r--pkgs/development/python-modules/tololib/default.nix35
-rw-r--r--pkgs/development/python-modules/toml-adapt/default.nix31
-rw-r--r--pkgs/development/python-modules/toml/default.nix8
-rw-r--r--pkgs/development/python-modules/tomli-w/default.nix12
-rw-r--r--pkgs/development/python-modules/tomli/default.nix29
-rw-r--r--pkgs/development/python-modules/tomlkit/default.nix25
-rw-r--r--pkgs/development/python-modules/toolz/default.nix9
-rw-r--r--pkgs/development/python-modules/toonapi/default.nix19
-rw-r--r--pkgs/development/python-modules/toposort/default.nix21
-rw-r--r--pkgs/development/python-modules/torch-audiomentations/default.nix50
-rw-r--r--pkgs/development/python-modules/torch-pitch-shift/default.nix40
-rw-r--r--pkgs/development/python-modules/torch-tb-profiler/default.nix28
-rw-r--r--pkgs/development/python-modules/torch/bin.nix161
-rw-r--r--pkgs/development/python-modules/torch/binary-hashes.nix110
-rw-r--r--pkgs/development/python-modules/torch/default.nix692
-rw-r--r--pkgs/development/python-modules/torch/fix-cmake-cuda-toolkit.patch60
-rw-r--r--pkgs/development/python-modules/torch/mk-runtime-check.nix20
-rw-r--r--pkgs/development/python-modules/torch/mk-torch-compile-check.nix38
-rw-r--r--pkgs/development/python-modules/torch/passthrough-python-lib-rel-path.patch12
-rwxr-xr-xpkgs/development/python-modules/torch/prefetch.sh7
-rw-r--r--pkgs/development/python-modules/torch/tests.nix31
-rw-r--r--pkgs/development/python-modules/torchaudio/bin.nix107
-rw-r--r--pkgs/development/python-modules/torchaudio/binary-hashes.nix110
-rw-r--r--pkgs/development/python-modules/torchaudio/default.nix162
-rwxr-xr-xpkgs/development/python-modules/torchaudio/prefetch.sh7
-rw-r--r--pkgs/development/python-modules/torchcrepe/default.nix51
-rw-r--r--pkgs/development/python-modules/torchdiffeq/default.nix25
-rw-r--r--pkgs/development/python-modules/torchgpipe/default.nix42
-rw-r--r--pkgs/development/python-modules/torchinfo/default.nix30
-rw-r--r--pkgs/development/python-modules/torchio/default.nix61
-rw-r--r--pkgs/development/python-modules/torchlibrosa/default.nix14
-rw-r--r--pkgs/development/python-modules/torchmetrics/default.nix76
-rw-r--r--pkgs/development/python-modules/torchrl/default.nix149
-rw-r--r--pkgs/development/python-modules/torchsde/default.nix35
-rw-r--r--pkgs/development/python-modules/torchsnapshot/default.nix71
-rw-r--r--pkgs/development/python-modules/torchsummary/default.nix34
-rw-r--r--pkgs/development/python-modules/torchvision/bin.nix72
-rw-r--r--pkgs/development/python-modules/torchvision/binary-hashes.nix106
-rw-r--r--pkgs/development/python-modules/torchvision/default.nix88
-rwxr-xr-xpkgs/development/python-modules/torchvision/prefetch.sh11
-rw-r--r--pkgs/development/python-modules/tornado/4.nix17
-rw-r--r--pkgs/development/python-modules/tornado/5.nix17
-rw-r--r--pkgs/development/python-modules/tornado/default.nix52
-rw-r--r--pkgs/development/python-modules/torpy/default.nix25
-rw-r--r--pkgs/development/python-modules/torrent-parser/default.nix37
-rw-r--r--pkgs/development/python-modules/torrequest/default.nix17
-rw-r--r--pkgs/development/python-modules/total-connect-client/default.nix37
-rw-r--r--pkgs/development/python-modules/towncrier/default.nix67
-rw-r--r--pkgs/development/python-modules/tox/default.nix56
-rw-r--r--pkgs/development/python-modules/tplink-omada-client/default.nix28
-rw-r--r--pkgs/development/python-modules/tpm2-pytss/default.nix86
-rw-r--r--pkgs/development/python-modules/tpm2-pytss/pr576-backport.patch117
-rw-r--r--pkgs/development/python-modules/tqdm/default.nix50
-rw-r--r--pkgs/development/python-modules/traceback2/default.nix19
-rw-r--r--pkgs/development/python-modules/tracerite/default.nix29
-rw-r--r--pkgs/development/python-modules/tracing/default.nix12
-rw-r--r--pkgs/development/python-modules/trackpy/default.nix45
-rw-r--r--pkgs/development/python-modules/trafilatura/default.nix81
-rw-r--r--pkgs/development/python-modules/trailrunner/default.nix31
-rw-r--r--pkgs/development/python-modules/trainer/default.nix40
-rw-r--r--pkgs/development/python-modules/traitlets/default.nix33
-rw-r--r--pkgs/development/python-modules/traits/default.nix17
-rw-r--r--pkgs/development/python-modules/traitsui/default.nix23
-rw-r--r--pkgs/development/python-modules/traittypes/default.nix60
-rw-r--r--pkgs/development/python-modules/trampoline/default.nix17
-rw-r--r--pkgs/development/python-modules/transaction/default.nix19
-rw-r--r--pkgs/development/python-modules/transformers/default.nix327
-rw-r--r--pkgs/development/python-modules/transforms3d/default.nix27
-rw-r--r--pkgs/development/python-modules/transitions/default.nix56
-rw-r--r--pkgs/development/python-modules/translate-toolkit/default.nix72
-rw-r--r--pkgs/development/python-modules/translatehtml/default.nix15
-rw-r--r--pkgs/development/python-modules/translatepy/default.nix21
-rw-r--r--pkgs/development/python-modules/translation-finder/default.nix45
-rw-r--r--pkgs/development/python-modules/translation-finder/fix_tests.patch25
-rw-r--r--pkgs/development/python-modules/translationstring/default.nix8
-rw-r--r--pkgs/development/python-modules/translitcodec/default.nix11
-rw-r--r--pkgs/development/python-modules/transmission-rpc/default.nix31
-rw-r--r--pkgs/development/python-modules/transmissionrpc/default.nix9
-rw-r--r--pkgs/development/python-modules/trectools/default.nix27
-rw-r--r--pkgs/development/python-modules/tree-sitter-html/default.nix40
-rw-r--r--pkgs/development/python-modules/tree-sitter-javascript/default.nix40
-rw-r--r--pkgs/development/python-modules/tree-sitter-json/default.nix40
-rw-r--r--pkgs/development/python-modules/tree-sitter-languages/default.nix64
-rw-r--r--pkgs/development/python-modules/tree-sitter-python/default.nix40
-rw-r--r--pkgs/development/python-modules/tree-sitter-rust/default.nix40
-rw-r--r--pkgs/development/python-modules/tree-sitter/0_21.nix48
-rw-r--r--pkgs/development/python-modules/tree-sitter/default.nix46
-rw-r--r--pkgs/development/python-modules/treelib/default.nix17
-rw-r--r--pkgs/development/python-modules/treelog/default.nix15
-rw-r--r--pkgs/development/python-modules/treeo/default.nix29
-rw-r--r--pkgs/development/python-modules/treescope/default.nix65
-rw-r--r--pkgs/development/python-modules/treex/default.nix39
-rw-r--r--pkgs/development/python-modules/treq/default.nix35
-rw-r--r--pkgs/development/python-modules/trezor-agent/default.nix47
-rw-r--r--pkgs/development/python-modules/trezor/default.nix79
-rw-r--r--pkgs/development/python-modules/trfl/default.nix76
-rw-r--r--pkgs/development/python-modules/trimesh/default.nix37
-rw-r--r--pkgs/development/python-modules/trino-python-client/default.nix49
-rw-r--r--pkgs/development/python-modules/trio-asyncio/default.nix68
-rw-r--r--pkgs/development/python-modules/trio-websocket/default.nix69
-rw-r--r--pkgs/development/python-modules/trio/default.nix98
-rw-r--r--pkgs/development/python-modules/triton/0000-dont-download-ptxas.patch (renamed from pkgs/development/python-modules/openai-triton/0000-dont-download-ptxas.patch)0
-rw-r--r--pkgs/development/python-modules/triton/0001-ptxas-disable-version-key-for-non-cuda-targets.patch (renamed from pkgs/development/python-modules/openai-triton/0001-ptxas-disable-version-key-for-non-cuda-targets.patch)0
-rw-r--r--pkgs/development/python-modules/triton/bin.nix97
-rw-r--r--pkgs/development/python-modules/triton/binary-hashes.nix (renamed from pkgs/development/python-modules/openai-triton/binary-hashes.nix)3
-rw-r--r--pkgs/development/python-modules/triton/default.nix229
-rwxr-xr-xpkgs/development/python-modules/triton/prefetch.sh (renamed from pkgs/development/python-modules/openai-triton/prefetch.sh)0
-rw-r--r--pkgs/development/python-modules/tritonclient/default.nix26
-rw-r--r--pkgs/development/python-modules/troposphere/default.nix35
-rw-r--r--pkgs/development/python-modules/trove-classifiers/default.nix30
-rw-r--r--pkgs/development/python-modules/trueskill/default.nix18
-rw-r--r--pkgs/development/python-modules/truncnorm/default.nix44
-rw-r--r--pkgs/development/python-modules/trustme/default.nix28
-rw-r--r--pkgs/development/python-modules/truststore/default.nix43
-rw-r--r--pkgs/development/python-modules/trytond/default.nix114
-rw-r--r--pkgs/development/python-modules/ts1-signatures/default.nix44
-rw-r--r--pkgs/development/python-modules/tsfresh/default.nix49
-rw-r--r--pkgs/development/python-modules/tskit/default.nix44
-rw-r--r--pkgs/development/python-modules/ttach/default.nix13
-rw-r--r--pkgs/development/python-modules/ttfautohint-py/default.nix54
-rw-r--r--pkgs/development/python-modules/ttls/default.nix29
-rw-r--r--pkgs/development/python-modules/ttn-client/default.nix40
-rw-r--r--pkgs/development/python-modules/ttp-templates/default.nix15
-rw-r--r--pkgs/development/python-modules/ttp/default.nix47
-rw-r--r--pkgs/development/python-modules/ttstokenizer/default.nix15
-rw-r--r--pkgs/development/python-modules/tubes/default.nix33
-rw-r--r--pkgs/development/python-modules/tubeup/default.nix31
-rw-r--r--pkgs/development/python-modules/tuf/default.nix35
-rw-r--r--pkgs/development/python-modules/tunigo/default.nix16
-rw-r--r--pkgs/development/python-modules/turnt/default.nix21
-rw-r--r--pkgs/development/python-modules/tuya-device-sharing-sdk/default.nix23
-rw-r--r--pkgs/development/python-modules/tuya-iot-py-sdk/default.nix17
-rw-r--r--pkgs/development/python-modules/tuyaha/default.nix9
-rw-r--r--pkgs/development/python-modules/tvdb-api/default.nix11
-rw-r--r--pkgs/development/python-modules/tweedledum/default.nix28
-rw-r--r--pkgs/development/python-modules/tweepy/default.nix33
-rw-r--r--pkgs/development/python-modules/twentemilieu/default.nix29
-rw-r--r--pkgs/development/python-modules/twiggy/default.nix12
-rw-r--r--pkgs/development/python-modules/twilio/default.nix4
-rw-r--r--pkgs/development/python-modules/twill/default.nix8
-rw-r--r--pkgs/development/python-modules/twine/default.nix33
-rw-r--r--pkgs/development/python-modules/twinkly-client/default.nix19
-rw-r--r--pkgs/development/python-modules/twisted/default.nix272
-rw-r--r--pkgs/development/python-modules/twitch-python/default.nix30
-rw-r--r--pkgs/development/python-modules/twitchapi/default.nix37
-rw-r--r--pkgs/development/python-modules/twitter-common-collections/default.nix25
-rw-r--r--pkgs/development/python-modules/twitter-common-confluence/default.nix25
-rw-r--r--pkgs/development/python-modules/twitter-common-dirutil/default.nix25
-rw-r--r--pkgs/development/python-modules/twitter-common-lang/default.nix22
-rw-r--r--pkgs/development/python-modules/twitter-common-log/default.nix26
-rw-r--r--pkgs/development/python-modules/twitter-common-options/default.nix22
-rw-r--r--pkgs/development/python-modules/twitter/default.nix25
-rw-r--r--pkgs/development/python-modules/twitterapi/default.nix17
-rw-r--r--pkgs/development/python-modules/twofish/default.nix19
-rw-r--r--pkgs/development/python-modules/txaio/default.nix25
-rw-r--r--pkgs/development/python-modules/txamqp/default.nix12
-rw-r--r--pkgs/development/python-modules/txdbus/default.nix13
-rw-r--r--pkgs/development/python-modules/txgithub/default.nix28
-rw-r--r--pkgs/development/python-modules/txi2p-tahoe/default.nix17
-rw-r--r--pkgs/development/python-modules/txredisapi/default.nix27
-rw-r--r--pkgs/development/python-modules/txrequests/default.nix30
-rw-r--r--pkgs/development/python-modules/txtai/default.nix193
-rw-r--r--pkgs/development/python-modules/txtorcon/default.nix53
-rw-r--r--pkgs/development/python-modules/txzmq/default.nix19
-rw-r--r--pkgs/development/python-modules/type-infer/default.nix52
-rw-r--r--pkgs/development/python-modules/typechecks/default.nix7
-rw-r--r--pkgs/development/python-modules/typecode/default.nix51
-rw-r--r--pkgs/development/python-modules/typecode/libmagic.nix23
-rw-r--r--pkgs/development/python-modules/typed-ast/default.nix17
-rw-r--r--pkgs/development/python-modules/typed-settings/default.nix8
-rw-r--r--pkgs/development/python-modules/typeguard/default.nix49
-rw-r--r--pkgs/development/python-modules/typepy/default.nix29
-rw-r--r--pkgs/development/python-modules/typer-shell/default.nix57
-rw-r--r--pkgs/development/python-modules/typer/default.nix67
-rw-r--r--pkgs/development/python-modules/types-aiobotocore-packages/default.nix1466
-rw-r--r--pkgs/development/python-modules/types-aiobotocore/default.nix89
-rwxr-xr-xpkgs/development/python-modules/types-aiobotocore/update.sh57
-rw-r--r--pkgs/development/python-modules/types-appdirs/default.nix13
-rw-r--r--pkgs/development/python-modules/types-awscrt/default.nix10
-rw-r--r--pkgs/development/python-modules/types-beautifulsoup4/default.nix26
-rw-r--r--pkgs/development/python-modules/types-click/default.nix9
-rw-r--r--pkgs/development/python-modules/types-colorama/default.nix13
-rw-r--r--pkgs/development/python-modules/types-dateutil/default.nix17
-rw-r--r--pkgs/development/python-modules/types-decorator/default.nix17
-rw-r--r--pkgs/development/python-modules/types-deprecated/default.nix17
-rw-r--r--pkgs/development/python-modules/types-docopt/default.nix11
-rw-r--r--pkgs/development/python-modules/types-enum34/default.nix11
-rw-r--r--pkgs/development/python-modules/types-freezegun/default.nix11
-rw-r--r--pkgs/development/python-modules/types-futures/default.nix6
-rw-r--r--pkgs/development/python-modules/types-html5lib/default.nix21
-rw-r--r--pkgs/development/python-modules/types-ipaddress/default.nix11
-rw-r--r--pkgs/development/python-modules/types-lxml/default.nix45
-rw-r--r--pkgs/development/python-modules/types-markdown/default.nix21
-rw-r--r--pkgs/development/python-modules/types-mock/default.nix15
-rw-r--r--pkgs/development/python-modules/types-pillow/default.nix15
-rw-r--r--pkgs/development/python-modules/types-protobuf/default.nix21
-rw-r--r--pkgs/development/python-modules/types-psutil/default.nix17
-rw-r--r--pkgs/development/python-modules/types-psycopg2/default.nix19
-rw-r--r--pkgs/development/python-modules/types-pyopenssl/default.nix21
-rw-r--r--pkgs/development/python-modules/types-python-dateutil/default.nix21
-rw-r--r--pkgs/development/python-modules/types-pytz/default.nix21
-rw-r--r--pkgs/development/python-modules/types-pyyaml/default.nix15
-rw-r--r--pkgs/development/python-modules/types-requests/default.nix4
-rw-r--r--pkgs/development/python-modules/types-retry/default.nix11
-rw-r--r--pkgs/development/python-modules/types-s3transfer/default.nix21
-rw-r--r--pkgs/development/python-modules/types-setuptools/default.nix21
-rw-r--r--pkgs/development/python-modules/types-tabulate/default.nix17
-rw-r--r--pkgs/development/python-modules/types-toml/default.nix11
-rw-r--r--pkgs/development/python-modules/types-tqdm/default.nix15
-rw-r--r--pkgs/development/python-modules/types-typed-ast/default.nix11
-rw-r--r--pkgs/development/python-modules/types-ujson/default.nix21
-rw-r--r--pkgs/development/python-modules/types-urllib3/default.nix11
-rw-r--r--pkgs/development/python-modules/typesentry/default.nix17
-rw-r--r--pkgs/development/python-modules/typeshed-client/default.nix6
-rw-r--r--pkgs/development/python-modules/typesystem/default.nix27
-rw-r--r--pkgs/development/python-modules/typical/default.nix2
-rw-r--r--pkgs/development/python-modules/typing-extensions/default.nix31
-rw-r--r--pkgs/development/python-modules/typing-inspect/default.nix21
-rw-r--r--pkgs/development/python-modules/typing-validation/default.nix31
-rw-r--r--pkgs/development/python-modules/typish/default.nix19
-rw-r--r--pkgs/development/python-modules/typogrify/default.nix13
-rw-r--r--pkgs/development/python-modules/tzdata/default.nix31
-rw-r--r--pkgs/development/python-modules/tzlocal/default.nix23
-rw-r--r--pkgs/development/python-modules/u-msgpack-python/default.nix15
-rw-r--r--pkgs/development/python-modules/ua-parser/default.nix25
-rw-r--r--pkgs/development/python-modules/uamqp/default.nix103
-rw-r--r--pkgs/development/python-modules/uarray/default.nix29
-rw-r--r--pkgs/development/python-modules/uart-devices/default.nix19
-rw-r--r--pkgs/development/python-modules/uasiren/default.nix32
-rw-r--r--pkgs/development/python-modules/ubelt/default.nix35
-rw-r--r--pkgs/development/python-modules/uc-micro-py/default.nix27
-rw-r--r--pkgs/development/python-modules/ucsmsdk/default.nix15
-rw-r--r--pkgs/development/python-modules/udatetime/default.nix7
-rw-r--r--pkgs/development/python-modules/ueagle/default.nix15
-rw-r--r--pkgs/development/python-modules/ueberzug/default.nix31
-rw-r--r--pkgs/development/python-modules/ufal-chu-liu-edmonds/default.nix39
-rw-r--r--pkgs/development/python-modules/ufmt/default.nix58
-rw-r--r--pkgs/development/python-modules/ufo2ft/default.nix55
-rw-r--r--pkgs/development/python-modules/ufolib2/default.nix43
-rw-r--r--pkgs/development/python-modules/ufolint/default.nix20
-rw-r--r--pkgs/development/python-modules/ufomerge/default.nix59
-rw-r--r--pkgs/development/python-modules/ufonormalizer/default.nix12
-rw-r--r--pkgs/development/python-modules/ufoprocessor/default.nix16
-rw-r--r--pkgs/development/python-modules/uharfbuzz/default.nix29
-rw-r--r--pkgs/development/python-modules/uhi/default.nix25
-rw-r--r--pkgs/development/python-modules/uiprotect/default.nix101
-rw-r--r--pkgs/development/python-modules/ujson/default.nix27
-rw-r--r--pkgs/development/python-modules/ukkonen/default.nix25
-rw-r--r--pkgs/development/python-modules/ukpostcodeparser/default.nix12
-rw-r--r--pkgs/development/python-modules/ulid-transform/default.nix42
-rw-r--r--pkgs/development/python-modules/ultraheat-api/default.nix19
-rw-r--r--pkgs/development/python-modules/umalqurra/default.nix8
-rw-r--r--pkgs/development/python-modules/umap-learn/default.nix54
-rw-r--r--pkgs/development/python-modules/umodbus/default.nix26
-rw-r--r--pkgs/development/python-modules/unasync/default.nix34
-rw-r--r--pkgs/development/python-modules/uncertainties/default.nix49
-rw-r--r--pkgs/development/python-modules/uncompyle6/default.nix34
-rw-r--r--pkgs/development/python-modules/undefined/default.nix19
-rw-r--r--pkgs/development/python-modules/undetected-chromedriver/default.nix54
-rw-r--r--pkgs/development/python-modules/unearth/default.nix41
-rw-r--r--pkgs/development/python-modules/unicode-rbnf/default.nix29
-rw-r--r--pkgs/development/python-modules/unicode-slugify/default.nix34
-rw-r--r--pkgs/development/python-modules/unicode-slugify/use_pytest_instead_of_nose.patch69
-rw-r--r--pkgs/development/python-modules/unicodecsv/default.nix8
-rw-r--r--pkgs/development/python-modules/unicodedata2/default.nix19
-rw-r--r--pkgs/development/python-modules/unicodeit/default.nix61
-rw-r--r--pkgs/development/python-modules/unicorn/default.nix45
-rw-r--r--pkgs/development/python-modules/unicrypto/default.nix17
-rw-r--r--pkgs/development/python-modules/unicurses/default.nix16
-rw-r--r--pkgs/development/python-modules/unidata-blocks/default.nix43
-rw-r--r--pkgs/development/python-modules/unidecode/default.nix25
-rw-r--r--pkgs/development/python-modules/unidic-lite/default.nix13
-rw-r--r--pkgs/development/python-modules/unidic/default.nix41
-rw-r--r--pkgs/development/python-modules/unidiff/default.nix12
-rw-r--r--pkgs/development/python-modules/unifi-ap/default.nix44
-rw-r--r--pkgs/development/python-modules/unifi-discovery/default.nix55
-rw-r--r--pkgs/development/python-modules/unifi/default.nix14
-rw-r--r--pkgs/development/python-modules/unifiled/default.nix11
-rw-r--r--pkgs/development/python-modules/unify/default.nix31
-rw-r--r--pkgs/development/python-modules/unique-log-filter/default.nix27
-rw-r--r--pkgs/development/python-modules/unittest-data-provider/default.nix9
-rw-r--r--pkgs/development/python-modules/unittest-xml-reporting/default.nix46
-rw-r--r--pkgs/development/python-modules/univers/default.nix60
-rw-r--r--pkgs/development/python-modules/universal-pathlib/default.nix27
-rw-r--r--pkgs/development/python-modules/universal-silabs-flasher/default.nix57
-rw-r--r--pkgs/development/python-modules/unix-ar/default.nix9
-rw-r--r--pkgs/development/python-modules/unpaddedbase64/default.nix14
-rw-r--r--pkgs/development/python-modules/unrardll/default.nix14
-rw-r--r--pkgs/development/python-modules/unrpa/default.nix13
-rw-r--r--pkgs/development/python-modules/unstructured-api-tools/default.nix57
-rw-r--r--pkgs/development/python-modules/unstructured-inference/default.nix73
-rw-r--r--pkgs/development/python-modules/unstructured/default.nix136
-rw-r--r--pkgs/development/python-modules/untangle/default.nix17
-rw-r--r--pkgs/development/python-modules/untokenize/default.nix9
-rw-r--r--pkgs/development/python-modules/uonet-request-signer-hebe/default.nix19
-rw-r--r--pkgs/development/python-modules/upass/default.nix17
-rw-r--r--pkgs/development/python-modules/upb-lib/default.nix29
-rw-r--r--pkgs/development/python-modules/upcloud-api/default.nix26
-rw-r--r--pkgs/development/python-modules/update-checker/default.nix9
-rw-r--r--pkgs/development/python-modules/update-copyright/default.nix9
-rw-r--r--pkgs/development/python-modules/update-dotdee/default.nix31
-rw-r--r--pkgs/development/python-modules/uplc/default.nix38
-rw-r--r--pkgs/development/python-modules/upnpy/default.nix7
-rw-r--r--pkgs/development/python-modules/uproot/default.nix67
-rw-r--r--pkgs/development/python-modules/uptime-kuma-api/default.nix19
-rw-r--r--pkgs/development/python-modules/uptime-kuma-monitor/default.nix17
-rw-r--r--pkgs/development/python-modules/uptime/default.nix25
-rw-r--r--pkgs/development/python-modules/uqbar/default.nix77
-rw-r--r--pkgs/development/python-modules/uranium/default.nix44
-rw-r--r--pkgs/development/python-modules/uri-template/default.nix23
-rw-r--r--pkgs/development/python-modules/uritemplate/default.nix30
-rw-r--r--pkgs/development/python-modules/uritools/default.nix17
-rw-r--r--pkgs/development/python-modules/url-normalize/default.nix33
-rw-r--r--pkgs/development/python-modules/urlextract/default.nix31
-rw-r--r--pkgs/development/python-modules/urlgrabber/default.nix13
-rw-r--r--pkgs/development/python-modules/urllib3/default.nix142
-rw-r--r--pkgs/development/python-modules/urlman/default.nix17
-rw-r--r--pkgs/development/python-modules/urlpy/default.nix25
-rw-r--r--pkgs/development/python-modules/urwid-mitmproxy/default.nix37
-rw-r--r--pkgs/development/python-modules/urwid-readline/default.nix27
-rw-r--r--pkgs/development/python-modules/urwid/default.nix79
-rw-r--r--pkgs/development/python-modules/urwidgets/default.nix31
-rw-r--r--pkgs/development/python-modules/urwidtrees/default.nix31
-rw-r--r--pkgs/development/python-modules/us/default.nix27
-rw-r--r--pkgs/development/python-modules/usb-devices/default.nix25
-rw-r--r--pkgs/development/python-modules/usb-monitor/default.nix32
-rw-r--r--pkgs/development/python-modules/usbtmc/default.nix7
-rw-r--r--pkgs/development/python-modules/user-agents/default.nix9
-rw-r--r--pkgs/development/python-modules/userpath/default.nix30
-rw-r--r--pkgs/development/python-modules/ush/default.nix13
-rw-r--r--pkgs/development/python-modules/usort/default.nix39
-rw-r--r--pkgs/development/python-modules/utils/default.nix11
-rw-r--r--pkgs/development/python-modules/uvcclient/default.nix33
-rw-r--r--pkgs/development/python-modules/uvicorn/default.nix51
-rw-r--r--pkgs/development/python-modules/uvicorn/tests.nix27
-rw-r--r--pkgs/development/python-modules/uvloop/default.nix107
-rw-r--r--pkgs/development/python-modules/uxsim/add-qt-plugin-path-to-env.patch11
-rw-r--r--pkgs/development/python-modules/uxsim/default.nix64
-rw-r--r--pkgs/development/python-modules/vaa/default.nix29
-rw-r--r--pkgs/development/python-modules/vacuum-map-parser-base/default.nix13
-rw-r--r--pkgs/development/python-modules/vacuum-map-parser-roborock/default.nix15
-rw-r--r--pkgs/development/python-modules/validator-collection/default.nix9
-rw-r--r--pkgs/development/python-modules/validators/default.nix38
-rw-r--r--pkgs/development/python-modules/validobj/default.nix20
-rw-r--r--pkgs/development/python-modules/validphys2/default.nix47
-rw-r--r--pkgs/development/python-modules/vallox-websocket-api/default.nix31
-rw-r--r--pkgs/development/python-modules/vapoursynth/default.nix34
-rw-r--r--pkgs/development/python-modules/variants/default.nix23
-rw-r--r--pkgs/development/python-modules/varint/default.nix11
-rw-r--r--pkgs/development/python-modules/vat-moss/default.nix25
-rw-r--r--pkgs/development/python-modules/vcard/default.nix33
-rw-r--r--pkgs/development/python-modules/vcrpy/default.nix31
-rw-r--r--pkgs/development/python-modules/vcver/default.nix13
-rw-r--r--pkgs/development/python-modules/vcversioner/default.nix6
-rw-r--r--pkgs/development/python-modules/vdf/default.nix35
-rw-r--r--pkgs/development/python-modules/vdirsyncer/default.nix55
-rw-r--r--pkgs/development/python-modules/vector/default.nix78
-rw-r--r--pkgs/development/python-modules/vega-datasets/default.nix47
-rw-r--r--pkgs/development/python-modules/vega/default.nix45
-rw-r--r--pkgs/development/python-modules/vehicle/default.nix39
-rw-r--r--pkgs/development/python-modules/velbus-aio/default.nix20
-rw-r--r--pkgs/development/python-modules/venstarcolortouch/default.nix17
-rw-r--r--pkgs/development/python-modules/venusian/default.nix21
-rw-r--r--pkgs/development/python-modules/verboselogs/default.nix17
-rw-r--r--pkgs/development/python-modules/verlib2/default.nix13
-rw-r--r--pkgs/development/python-modules/versioneer/default.nix27
-rw-r--r--pkgs/development/python-modules/versionfinder/default.nix23
-rw-r--r--pkgs/development/python-modules/versioningit/default.nix65
-rw-r--r--pkgs/development/python-modules/versiontag/default.nix14
-rw-r--r--pkgs/development/python-modules/versiontools/default.nix10
-rw-r--r--pkgs/development/python-modules/verspec/default.nix26
-rw-r--r--pkgs/development/python-modules/vertica-python/default.nix36
-rw-r--r--pkgs/development/python-modules/veryprettytable/default.nix19
-rw-r--r--pkgs/development/python-modules/vfblib/default.nix49
-rw-r--r--pkgs/development/python-modules/vg/default.nix32
-rw-r--r--pkgs/development/python-modules/vharfbuzz/default.nix18
-rw-r--r--pkgs/development/python-modules/videocr/default.nix32
-rw-r--r--pkgs/development/python-modules/vidstab/default.nix25
-rw-r--r--pkgs/development/python-modules/viewstate/default.nix19
-rw-r--r--pkgs/development/python-modules/vilfo-api-client/default.nix23
-rw-r--r--pkgs/development/python-modules/vincenty/default.nix7
-rw-r--r--pkgs/development/python-modules/vine/default.nix17
-rw-r--r--pkgs/development/python-modules/virt-firmware/default.nix45
-rw-r--r--pkgs/development/python-modules/virtkey/default.nix28
-rw-r--r--pkgs/development/python-modules/virtualenv-clone/default.nix23
-rw-r--r--pkgs/development/python-modules/virtualenv/default.nix91
-rw-r--r--pkgs/development/python-modules/virtualenvwrapper/default.nix68
-rw-r--r--pkgs/development/python-modules/visions/default.nix70
-rw-r--r--pkgs/development/python-modules/visitor/default.nix10
-rw-r--r--pkgs/development/python-modules/vispy/default.nix56
-rw-r--r--pkgs/development/python-modules/viv-utils/default.nix31
-rw-r--r--pkgs/development/python-modules/vivisect/default.nix33
-rw-r--r--pkgs/development/python-modules/vllm/0001-setup.py-don-t-ask-for-hipcc-version.patch24
-rw-r--r--pkgs/development/python-modules/vllm/0002-setup.py-nix-support-respect-cmakeFlags.patch40
-rw-r--r--pkgs/development/python-modules/vllm/default.nix254
-rw-r--r--pkgs/development/python-modules/vmprof/default.nix82
-rw-r--r--pkgs/development/python-modules/vncdo/default.nix33
-rw-r--r--pkgs/development/python-modules/vnoise/default.nix35
-rw-r--r--pkgs/development/python-modules/vobject/default.nix13
-rw-r--r--pkgs/development/python-modules/voip-utils/default.nix47
-rw-r--r--pkgs/development/python-modules/volatile/default.nix21
-rw-r--r--pkgs/development/python-modules/volkswagencarnet/default.nix55
-rw-r--r--pkgs/development/python-modules/volkszaehler/default.nix23
-rw-r--r--pkgs/development/python-modules/voluptuous-openapi/default.nix43
-rw-r--r--pkgs/development/python-modules/voluptuous-serialize/default.nix27
-rw-r--r--pkgs/development/python-modules/voluptuous-stubs/default.nix17
-rw-r--r--pkgs/development/python-modules/voluptuous/default.nix33
-rw-r--r--pkgs/development/python-modules/volvooncall/default.nix37
-rw-r--r--pkgs/development/python-modules/vowpalwabbit/default.nix50
-rw-r--r--pkgs/development/python-modules/vpk/default.nix13
-rw-r--r--pkgs/development/python-modules/vprof/default.nix17
-rw-r--r--pkgs/development/python-modules/vqgan-jax/default.nix23
-rw-r--r--pkgs/development/python-modules/vsts-cd-manager/default.nix15
-rw-r--r--pkgs/development/python-modules/vsts/default.nix13
-rw-r--r--pkgs/development/python-modules/vsure/default.nix17
-rw-r--r--pkgs/development/python-modules/vt-py/default.nix8
-rw-r--r--pkgs/development/python-modules/vtjp/default.nix27
-rw-r--r--pkgs/development/python-modules/vttlib/default.nix51
-rw-r--r--pkgs/development/python-modules/vulcan-api/default.nix41
-rw-r--r--pkgs/development/python-modules/vultr/default.nix13
-rw-r--r--pkgs/development/python-modules/vulture/default.nix31
-rw-r--r--pkgs/development/python-modules/vxi11/default.nix29
-rw-r--r--pkgs/development/python-modules/w1thermsensor/default.nix57
-rw-r--r--pkgs/development/python-modules/w3lib/default.nix35
-rw-r--r--pkgs/development/python-modules/wadllib/default.nix18
-rw-r--r--pkgs/development/python-modules/wagtail-factories/default.nix19
-rw-r--r--pkgs/development/python-modules/wagtail-factories/tests.nix13
-rw-r--r--pkgs/development/python-modules/wagtail-localize/default.nix39
-rw-r--r--pkgs/development/python-modules/wagtail-modeladmin/default.nix35
-rw-r--r--pkgs/development/python-modules/wagtail/default.nix53
-rw-r--r--pkgs/development/python-modules/wagtail/tests.nix27
-rw-r--r--pkgs/development/python-modules/waitress-django/default.nix33
-rw-r--r--pkgs/development/python-modules/waitress/default.nix20
-rw-r--r--pkgs/development/python-modules/wakeonlan/default.nix29
-rw-r--r--pkgs/development/python-modules/wallbox/default.nix32
-rw-r--r--pkgs/development/python-modules/wallet-py3k/default.nix27
-rw-r--r--pkgs/development/python-modules/walrus/default.nix38
-rw-r--r--pkgs/development/python-modules/wand/default.nix13
-rw-r--r--pkgs/development/python-modules/wandb/default.nix399
-rw-r--r--pkgs/development/python-modules/waqiasync/default.nix13
-rw-r--r--pkgs/development/python-modules/warble/default.nix27
-rw-r--r--pkgs/development/python-modules/warcio/default.nix33
-rw-r--r--pkgs/development/python-modules/ward/default.nix38
-rw-r--r--pkgs/development/python-modules/warlock/default.nix32
-rw-r--r--pkgs/development/python-modules/warrant-lite/default.nix21
-rw-r--r--pkgs/development/python-modules/warrant/default.nix27
-rw-r--r--pkgs/development/python-modules/wasabi/default.nix35
-rw-r--r--pkgs/development/python-modules/wasmer/default.nix73
-rw-r--r--pkgs/development/python-modules/wasmer/tests.nix13
-rw-r--r--pkgs/development/python-modules/wasserstein/default.nix35
-rw-r--r--pkgs/development/python-modules/wat/default.nix38
-rw-r--r--pkgs/development/python-modules/watchdog-gevent/default.nix2
-rw-r--r--pkgs/development/python-modules/watchdog/default.nix136
-rw-r--r--pkgs/development/python-modules/watchfiles/default.nix47
-rw-r--r--pkgs/development/python-modules/watchgod/default.nix14
-rw-r--r--pkgs/development/python-modules/waterfurnace/default.nix23
-rw-r--r--pkgs/development/python-modules/watermark/default.nix37
-rw-r--r--pkgs/development/python-modules/wavedrom/default.nix33
-rw-r--r--pkgs/development/python-modules/wavefile/default.nix31
-rw-r--r--pkgs/development/python-modules/wavinsentio/default.nix19
-rw-r--r--pkgs/development/python-modules/waybackpy/default.nix35
-rw-r--r--pkgs/development/python-modules/wazeroutecalculator/default.nix19
-rw-r--r--pkgs/development/python-modules/wcag-contrast-ratio/default.nix17
-rw-r--r--pkgs/development/python-modules/wcmatch/default.nix27
-rw-r--r--pkgs/development/python-modules/wcwidth/default.nix27
-rw-r--r--pkgs/development/python-modules/weasel/default.nix40
-rw-r--r--pkgs/development/python-modules/weasyprint/default.nix63
-rw-r--r--pkgs/development/python-modules/weasyprint/library-paths.patch9
-rw-r--r--pkgs/development/python-modules/weatherflow4py/default.nix54
-rw-r--r--pkgs/development/python-modules/weaviate-client/default.nix10
-rw-r--r--pkgs/development/python-modules/web-cache/default.nix7
-rw-r--r--pkgs/development/python-modules/web/default.nix24
-rw-r--r--pkgs/development/python-modules/web3/default.nix73
-rw-r--r--pkgs/development/python-modules/webargs/default.nix25
-rw-r--r--pkgs/development/python-modules/webassets/default.nix18
-rw-r--r--pkgs/development/python-modules/webauthn/default.nix40
-rw-r--r--pkgs/development/python-modules/webcolors/default.nix28
-rw-r--r--pkgs/development/python-modules/webdataset/default.nix113
-rw-r--r--pkgs/development/python-modules/webdav4/default.nix57
-rw-r--r--pkgs/development/python-modules/webdavclient3/default.nix18
-rw-r--r--pkgs/development/python-modules/webdriver-manager/default.nix40
-rw-r--r--pkgs/development/python-modules/webencodings/default.nix9
-rw-r--r--pkgs/development/python-modules/webexteamssdk/default.nix45
-rw-r--r--pkgs/development/python-modules/webhelpers/default.nix32
-rw-r--r--pkgs/development/python-modules/weblate-language-data/default.nix36
-rw-r--r--pkgs/development/python-modules/weblate-schemas/default.nix46
-rw-r--r--pkgs/development/python-modules/webmin-xmlrpc/default.nix37
-rw-r--r--pkgs/development/python-modules/webob/default.nix31
-rw-r--r--pkgs/development/python-modules/weboob/default.nix97
-rw-r--r--pkgs/development/python-modules/webrtc-noise-gain/default.nix47
-rw-r--r--pkgs/development/python-modules/webrtcvad/default.nix7
-rw-r--r--pkgs/development/python-modules/websocket-client/default.nix38
-rw-r--r--pkgs/development/python-modules/websockets/default.nix29
-rw-r--r--pkgs/development/python-modules/websockify/default.nix39
-rw-r--r--pkgs/development/python-modules/webssh/default.nix34
-rw-r--r--pkgs/development/python-modules/webssh/remove-typo-in-test-case.patch18
-rw-r--r--pkgs/development/python-modules/webtest-aiohttp/default.nix27
-rw-r--r--pkgs/development/python-modules/webtest/default.nix31
-rw-r--r--pkgs/development/python-modules/webthing-ws/default.nix18
-rw-r--r--pkgs/development/python-modules/webthing/default.nix23
-rw-r--r--pkgs/development/python-modules/weconnect-mqtt/default.nix42
-rw-r--r--pkgs/development/python-modules/weconnect/default.nix37
-rw-r--r--pkgs/development/python-modules/weheat/default.nix52
-rw-r--r--pkgs/development/python-modules/werkzeug/default.nix115
-rw-r--r--pkgs/development/python-modules/west/default.nix23
-rw-r--r--pkgs/development/python-modules/wfuzz/default.nix64
-rw-r--r--pkgs/development/python-modules/wget/default.nix7
-rw-r--r--pkgs/development/python-modules/whatthepatch/default.nix31
-rw-r--r--pkgs/development/python-modules/wheel-filename/default.nix28
-rw-r--r--pkgs/development/python-modules/wheel-inspect/default.nix45
-rw-r--r--pkgs/development/python-modules/wheel/default.nix19
-rw-r--r--pkgs/development/python-modules/wheezy-captcha/default.nix11
-rw-r--r--pkgs/development/python-modules/wheezy-template/default.nix15
-rw-r--r--pkgs/development/python-modules/whenever/default.nix72
-rw-r--r--pkgs/development/python-modules/whey-pth/default.nix39
-rw-r--r--pkgs/development/python-modules/whey/default.nix57
-rw-r--r--pkgs/development/python-modules/whichcraft/default.nix10
-rw-r--r--pkgs/development/python-modules/whirlpool-sixth-sense/default.nix6
-rw-r--r--pkgs/development/python-modules/whisper/default.nix22
-rw-r--r--pkgs/development/python-modules/whitenoise/default.nix37
-rw-r--r--pkgs/development/python-modules/whodap/default.nix23
-rw-r--r--pkgs/development/python-modules/whois-api/default.nix20
-rw-r--r--pkgs/development/python-modules/whois/default.nix21
-rw-r--r--pkgs/development/python-modules/whoisdomain/default.nix19
-rw-r--r--pkgs/development/python-modules/whool/default.nix49
-rw-r--r--pkgs/development/python-modules/whool/setup-hook.sh16
-rw-r--r--pkgs/development/python-modules/whoosh/default.nix31
-rw-r--r--pkgs/development/python-modules/widgetsnbextension/default.nix22
-rw-r--r--pkgs/development/python-modules/widlparser/default.nix19
-rw-r--r--pkgs/development/python-modules/wiffi/default.nix19
-rw-r--r--pkgs/development/python-modules/wifi/default.nix24
-rw-r--r--pkgs/development/python-modules/wikipedia-api/default.nix21
-rw-r--r--pkgs/development/python-modules/wikipedia/default.nix23
-rw-r--r--pkgs/development/python-modules/wikipedia2vec/default.nix35
-rw-r--r--pkgs/development/python-modules/wikitextparser/default.nix31
-rw-r--r--pkgs/development/python-modules/willow/default.nix57
-rw-r--r--pkgs/development/python-modules/winacl/default.nix31
-rw-r--r--pkgs/development/python-modules/winsspi/default.nix19
-rw-r--r--pkgs/development/python-modules/wirerope/default.nix41
-rw-r--r--pkgs/development/python-modules/withings-api/default.nix27
-rw-r--r--pkgs/development/python-modules/withings-sync/default.nix37
-rw-r--r--pkgs/development/python-modules/wktutils/default.nix66
-rw-r--r--pkgs/development/python-modules/wled/default.nix62
-rw-r--r--pkgs/development/python-modules/wn/default.nix31
-rw-r--r--pkgs/development/python-modules/woob/default.nix66
-rw-r--r--pkgs/development/python-modules/woodblock/default.nix19
-rw-r--r--pkgs/development/python-modules/wordcloud/default.nix53
-rw-r--r--pkgs/development/python-modules/wordfreq/default.nix33
-rw-r--r--pkgs/development/python-modules/worldengine/default.nix31
-rw-r--r--pkgs/development/python-modules/wrapio/default.nix14
-rw-r--r--pkgs/development/python-modules/wrapt/default.nix28
-rw-r--r--pkgs/development/python-modules/wrf-python/default.nix39
-rw-r--r--pkgs/development/python-modules/ws4py/default.nix35
-rw-r--r--pkgs/development/python-modules/wsdiscovery/default.nix21
-rw-r--r--pkgs/development/python-modules/wsgi-intercept/default.nix55
-rw-r--r--pkgs/development/python-modules/wsgidav/default.nix45
-rw-r--r--pkgs/development/python-modules/wsgiprox/default.nix11
-rw-r--r--pkgs/development/python-modules/wsgiproxy2/default.nix19
-rw-r--r--pkgs/development/python-modules/wsgitools/default.nix26
-rw-r--r--pkgs/development/python-modules/wsme/default.nix74
-rw-r--r--pkgs/development/python-modules/wsnsimpy/default.nix23
-rw-r--r--pkgs/development/python-modules/wsproto/default.nix15
-rw-r--r--pkgs/development/python-modules/wtf-peewee/default.nix19
-rw-r--r--pkgs/development/python-modules/wtforms-bootstrap5/default.nix23
-rw-r--r--pkgs/development/python-modules/wtforms/default.nix44
-rw-r--r--pkgs/development/python-modules/wunsen/default.nix47
-rw-r--r--pkgs/development/python-modules/wurlitzer/default.nix31
-rw-r--r--pkgs/development/python-modules/wxpython/4.2.nix132
-rw-r--r--pkgs/development/python-modules/wyoming/default.nix45
-rw-r--r--pkgs/development/python-modules/x-wr-timezone/default.nix23
-rw-r--r--pkgs/development/python-modules/x11-hash/default.nix18
-rw-r--r--pkgs/development/python-modules/x256/default.nix6
-rw-r--r--pkgs/development/python-modules/xapian/default.nix19
-rw-r--r--pkgs/development/python-modules/xapp/default.nix68
-rw-r--r--pkgs/development/python-modules/xarray-dataclasses/default.nix25
-rw-r--r--pkgs/development/python-modules/xarray-datatree/default.nix59
-rw-r--r--pkgs/development/python-modules/xarray-einstats/default.nix32
-rw-r--r--pkgs/development/python-modules/xarray/default.nix49
-rw-r--r--pkgs/development/python-modules/xattr/default.nix25
-rw-r--r--pkgs/development/python-modules/xbox-webapi/default.nix31
-rw-r--r--pkgs/development/python-modules/xboxapi/default.nix11
-rw-r--r--pkgs/development/python-modules/xcffib/default.nix35
-rw-r--r--pkgs/development/python-modules/xdg-base-dirs/default.nix19
-rw-r--r--pkgs/development/python-modules/xdg/default.nix23
-rw-r--r--pkgs/development/python-modules/xdis/default.nix25
-rw-r--r--pkgs/development/python-modules/xdoctest/default.nix26
-rw-r--r--pkgs/development/python-modules/xdot/default.nix50
-rw-r--r--pkgs/development/python-modules/xdxf2html/default.nix13
-rw-r--r--pkgs/development/python-modules/xformers/default.nix92
-rw-r--r--pkgs/development/python-modules/xgboost/default.nix44
-rw-r--r--pkgs/development/python-modules/xhtml2pdf/default.nix47
-rw-r--r--pkgs/development/python-modules/xiaomi-ble/default.nix52
-rw-r--r--pkgs/development/python-modules/xkbcommon/default.nix21
-rw-r--r--pkgs/development/python-modules/xkcdpass/default.nix33
-rw-r--r--pkgs/development/python-modules/xknx/default.nix47
-rw-r--r--pkgs/development/python-modules/xknx/pytest-asyncio-0.22-compat.patch28
-rw-r--r--pkgs/development/python-modules/xlib/default.nix47
-rw-r--r--pkgs/development/python-modules/xlrd/default.nix14
-rw-r--r--pkgs/development/python-modules/xlsx2csv/default.nix17
-rw-r--r--pkgs/development/python-modules/xlsxwriter/default.nix25
-rw-r--r--pkgs/development/python-modules/xlwt/default.nix44
-rw-r--r--pkgs/development/python-modules/xmind/default.nix13
-rw-r--r--pkgs/development/python-modules/xml-marshaller/default.nix18
-rw-r--r--pkgs/development/python-modules/xml2rfc/default.nix72
-rw-r--r--pkgs/development/python-modules/xmldiff/default.nix35
-rw-r--r--pkgs/development/python-modules/xmljson/default.nix13
-rw-r--r--pkgs/development/python-modules/xmlschema/default.nix12
-rw-r--r--pkgs/development/python-modules/xmlsec/default.nix49
-rw-r--r--pkgs/development/python-modules/xmltodict/default.nix17
-rw-r--r--pkgs/development/python-modules/xmod/default.nix29
-rw-r--r--pkgs/development/python-modules/xmodem/default.nix15
-rw-r--r--pkgs/development/python-modules/xmpppy/default.nix35
-rw-r--r--pkgs/development/python-modules/xnatpy/default.nix24
-rw-r--r--pkgs/development/python-modules/xnd/default.nix41
-rw-r--r--pkgs/development/python-modules/xpath-expressions/default.nix21
-rw-r--r--pkgs/development/python-modules/xpybutil/default.nix19
-rw-r--r--pkgs/development/python-modules/xrootd/default.nix19
-rw-r--r--pkgs/development/python-modules/xsdata/default.nix65
-rw-r--r--pkgs/development/python-modules/xsdata/paths.patch24
-rw-r--r--pkgs/development/python-modules/xstatic-asciinema-player/default.nix9
-rw-r--r--pkgs/development/python-modules/xstatic-bootbox/default.nix10
-rw-r--r--pkgs/development/python-modules/xstatic-bootstrap/default.nix10
-rw-r--r--pkgs/development/python-modules/xstatic-font-awesome/default.nix9
-rw-r--r--pkgs/development/python-modules/xstatic-jquery-file-upload/default.nix14
-rw-r--r--pkgs/development/python-modules/xstatic-jquery-ui/default.nix12
-rw-r--r--pkgs/development/python-modules/xstatic-jquery/default.nix12
-rw-r--r--pkgs/development/python-modules/xstatic-pygments/default.nix10
-rw-r--r--pkgs/development/python-modules/xstatic/default.nix12
-rw-r--r--pkgs/development/python-modules/xtensor-python/default.nix85
-rw-r--r--pkgs/development/python-modules/xvfbwrapper/default.nix13
-rw-r--r--pkgs/development/python-modules/xxhash/default.nix19
-rw-r--r--pkgs/development/python-modules/xyzservices/default.nix37
-rw-r--r--pkgs/development/python-modules/y-py/default.nix25
-rw-r--r--pkgs/development/python-modules/yacs/default.nix11
-rw-r--r--pkgs/development/python-modules/yahooweather/default.nix7
-rw-r--r--pkgs/development/python-modules/yalesmartalarmclient/default.nix33
-rw-r--r--pkgs/development/python-modules/yalexs-ble/default.nix39
-rw-r--r--pkgs/development/python-modules/yalexs/default.nix37
-rw-r--r--pkgs/development/python-modules/yamale/default.nix2
-rw-r--r--pkgs/development/python-modules/yamlfix/default.nix30
-rw-r--r--pkgs/development/python-modules/yamllint/default.nix57
-rw-r--r--pkgs/development/python-modules/yamlloader/default.nix21
-rw-r--r--pkgs/development/python-modules/yamlordereddictloader/default.nix13
-rw-r--r--pkgs/development/python-modules/yanc/default.nix28
-rw-r--r--pkgs/development/python-modules/yangson/default.nix37
-rw-r--r--pkgs/development/python-modules/yapf/default.nix45
-rw-r--r--pkgs/development/python-modules/yappi/default.nix25
-rw-r--r--pkgs/development/python-modules/yapsy/default.nix19
-rw-r--r--pkgs/development/python-modules/yara-python/default.nix50
-rw-r--r--pkgs/development/python-modules/yaramod/default.nix105
-rw-r--r--pkgs/development/python-modules/yarg/default.nix48
-rw-r--r--pkgs/development/python-modules/yargy/default.nix11
-rw-r--r--pkgs/development/python-modules/yark/default.nix31
-rw-r--r--pkgs/development/python-modules/yarl/default.nix29
-rw-r--r--pkgs/development/python-modules/yasi/default.nix27
-rw-r--r--pkgs/development/python-modules/yaspin/default.nix29
-rw-r--r--pkgs/development/python-modules/yaswfp/default.nix13
-rw-r--r--pkgs/development/python-modules/yattag/default.nix15
-rw-r--r--pkgs/development/python-modules/ydata-profiling/default.nix107
-rw-r--r--pkgs/development/python-modules/ydiff/default.nix20
-rw-r--r--pkgs/development/python-modules/yeelight/default.nix35
-rw-r--r--pkgs/development/python-modules/yfinance/default.nix23
-rw-r--r--pkgs/development/python-modules/yolink-api/default.nix4
-rw-r--r--pkgs/development/python-modules/youless-api/default.nix51
-rw-r--r--pkgs/development/python-modules/youseedee/default.nix15
-rw-r--r--pkgs/development/python-modules/youtokentome/default.nix22
-rw-r--r--pkgs/development/python-modules/youtube-search-python/default.nix21
-rw-r--r--pkgs/development/python-modules/youtube-search/default.nix19
-rw-r--r--pkgs/development/python-modules/youtube-transcript-api/default.nix25
-rw-r--r--pkgs/development/python-modules/youtubeaio/default.nix29
-rw-r--r--pkgs/development/python-modules/yowsup/default.nix52
-rw-r--r--pkgs/development/python-modules/yoyo-migrations/default.nix15
-rw-r--r--pkgs/development/python-modules/ypy-websocket/default.nix35
-rw-r--r--pkgs/development/python-modules/yq/default.nix36
-rw-r--r--pkgs/development/python-modules/yt-dlp-dearrow/default.nix32
-rw-r--r--pkgs/development/python-modules/yte/default.nix35
-rw-r--r--pkgs/development/python-modules/ytmusicapi/default.nix35
-rw-r--r--pkgs/development/python-modules/yubico-client/default.nix10
-rw-r--r--pkgs/development/python-modules/yubico/default.nix14
-rw-r--r--pkgs/development/python-modules/z3c-checkversions/default.nix18
-rw-r--r--pkgs/development/python-modules/zadnegoale/default.nix27
-rw-r--r--pkgs/development/python-modules/zamg/default.nix26
-rw-r--r--pkgs/development/python-modules/zarr/default.nix43
-rw-r--r--pkgs/development/python-modules/zbaemon/default.nix14
-rw-r--r--pkgs/development/python-modules/zc-lockfile/default.nix15
-rw-r--r--pkgs/development/python-modules/zcbor/default.nix29
-rw-r--r--pkgs/development/python-modules/zconfig/default.nix48
-rw-r--r--pkgs/development/python-modules/zcs/default.nix31
-rw-r--r--pkgs/development/python-modules/zdaemon/default.nix27
-rw-r--r--pkgs/development/python-modules/zeep/default.nix64
-rw-r--r--pkgs/development/python-modules/zephyr-python-api/default.nix24
-rw-r--r--pkgs/development/python-modules/zeroc-ice/default.nix30
-rw-r--r--pkgs/development/python-modules/zeroconf/default.nix46
-rw-r--r--pkgs/development/python-modules/zerorpc/default.nix19
-rw-r--r--pkgs/development/python-modules/zetup/default.nix17
-rw-r--r--pkgs/development/python-modules/zeversolarlocal/default.nix44
-rw-r--r--pkgs/development/python-modules/zfec/default.nix28
-rw-r--r--pkgs/development/python-modules/zha-quirks/default.nix4
-rw-r--r--pkgs/development/python-modules/zha/default.nix83
-rw-r--r--pkgs/development/python-modules/ziafont/checkfonts.nix88
-rw-r--r--pkgs/development/python-modules/ziafont/default.nix48
-rw-r--r--pkgs/development/python-modules/ziamath/checkfonts.nix19
-rw-r--r--pkgs/development/python-modules/ziamath/default.nix61
-rw-r--r--pkgs/development/python-modules/zict/default.nix25
-rw-r--r--pkgs/development/python-modules/zigpy-cc/default.nix24
-rw-r--r--pkgs/development/python-modules/zigpy-deconz/default.nix41
-rw-r--r--pkgs/development/python-modules/zigpy-xbee/default.nix31
-rw-r--r--pkgs/development/python-modules/zigpy-zboss/default.nix63
-rw-r--r--pkgs/development/python-modules/zigpy-zigate/default.nix39
-rw-r--r--pkgs/development/python-modules/zigpy-znp/default.nix61
-rw-r--r--pkgs/development/python-modules/zigpy/default.nix103
-rw-r--r--pkgs/development/python-modules/zimports/default.nix29
-rw-r--r--pkgs/development/python-modules/zipfile2/default.nix11
-rw-r--r--pkgs/development/python-modules/zipp/default.nix76
-rw-r--r--pkgs/development/python-modules/zipstream-ng/default.nix19
-rw-r--r--pkgs/development/python-modules/zipstream/default.nix21
-rw-r--r--pkgs/development/python-modules/zlib-ng/default.nix51
-rw-r--r--pkgs/development/python-modules/zlib-ng/version.patch16
-rw-r--r--pkgs/development/python-modules/zm-py/default.nix33
-rw-r--r--pkgs/development/python-modules/zodb/default.nix31
-rw-r--r--pkgs/development/python-modules/zodbpickle/default.nix19
-rw-r--r--pkgs/development/python-modules/zope-cachedescriptors/default.nix23
-rw-r--r--pkgs/development/python-modules/zope-component/default.nix28
-rw-r--r--pkgs/development/python-modules/zope-configuration/default.nix39
-rw-r--r--pkgs/development/python-modules/zope-contenttype/default.nix27
-rw-r--r--pkgs/development/python-modules/zope-copy/default.nix29
-rw-r--r--pkgs/development/python-modules/zope-deferredimport/default.nix13
-rw-r--r--pkgs/development/python-modules/zope-deprecation/default.nix30
-rw-r--r--pkgs/development/python-modules/zope-dottedname/default.nix35
-rw-r--r--pkgs/development/python-modules/zope-event/default.nix12
-rw-r--r--pkgs/development/python-modules/zope-exceptions/default.nix28
-rw-r--r--pkgs/development/python-modules/zope-filerepresentation/default.nix19
-rw-r--r--pkgs/development/python-modules/zope-hookable/default.nix19
-rw-r--r--pkgs/development/python-modules/zope-i18nmessageid/default.nix21
-rw-r--r--pkgs/development/python-modules/zope-interface/default.nix24
-rw-r--r--pkgs/development/python-modules/zope-lifecycleevent/default.nix26
-rw-r--r--pkgs/development/python-modules/zope-location/default.nix12
-rw-r--r--pkgs/development/python-modules/zope-proxy/default.nix23
-rw-r--r--pkgs/development/python-modules/zope-schema/default.nix25
-rw-r--r--pkgs/development/python-modules/zope-size/default.nix19
-rw-r--r--pkgs/development/python-modules/zope-testbrowser/default.nix56
-rw-r--r--pkgs/development/python-modules/zope-testing/default.nix37
-rw-r--r--pkgs/development/python-modules/zope-testrunner/default.nix27
-rw-r--r--pkgs/development/python-modules/zopfli/default.nix12
-rw-r--r--pkgs/development/python-modules/zstandard/default.nix29
-rw-r--r--pkgs/development/python-modules/zstd/default.nix19
-rw-r--r--pkgs/development/python-modules/zulip-emoji-mapping/default.nix35
-rw-r--r--pkgs/development/python-modules/zulip/default.nix28
-rw-r--r--pkgs/development/python-modules/zwave-js-server-python/default.nix4
-rw-r--r--pkgs/development/python-modules/zwave-me-ws/default.nix23
-rw-r--r--pkgs/development/python-modules/zxcvbn/default.nix14
-rw-r--r--pkgs/development/python-modules/zxing-cpp/default.nix34
8047 files changed, 196793 insertions, 127902 deletions
diff --git a/pkgs/development/python-modules/3to2/default.nix b/pkgs/development/python-modules/3to2/default.nix
index b86e16ae0d4d0..7832a765a05f9 100644
--- a/pkgs/development/python-modules/3to2/default.nix
+++ b/pkgs/development/python-modules/3to2/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/a2wsgi/default.nix b/pkgs/development/python-modules/a2wsgi/default.nix
index b2b5a03beac46..4706c97c9bc45 100644
--- a/pkgs/development/python-modules/a2wsgi/default.nix
+++ b/pkgs/development/python-modules/a2wsgi/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, asgiref
-, httpx
-, pdm-backend
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  asgiref,
+  httpx,
+  pdm-backend,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-UOgaxVqmCfosZm5CuswlxCTIiEzmBy8afpAhFLfuXWM=";
   };
 
-  nativeBuildInputs = [
-    pdm-backend
-  ];
+  nativeBuildInputs = [ pdm-backend ];
 
   nativeCheckInputs = [
     asgiref
diff --git a/pkgs/development/python-modules/aadict/default.nix b/pkgs/development/python-modules/aadict/default.nix
deleted file mode 100644
index 4ddf06bbb700a..0000000000000
--- a/pkgs/development/python-modules/aadict/default.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-, pynose
-, setuptools
-}:
-
-buildPythonPackage rec {
-  pname = "aadict";
-  version = "0.2.3";
-  pyproject = true;
-
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-p3MorFXbtXNdqZRBhwJRvv4TX2h6twenoXhWE2OydwQ=";
-  };
-
-  build-system = [
-    setuptools
-  ];
-
-  dependencies = [
-    six
-  ];
-
-  nativeCheckInputs = [
-    pynose
-  ];
-
-  pythonImportsCheck = [
-    "aadict"
-  ];
-
-  meta = with lib; {
-    description = "An auto-attribute dict (and a couple of other useful dict functions)";
-    homepage = "https://github.com/metagriffin/aadict";
-    license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ glittershark ];
-  };
-}
diff --git a/pkgs/development/python-modules/aafigure/default.nix b/pkgs/development/python-modules/aafigure/default.nix
index b2a04d8ac5994..0d519a1bddb71 100644
--- a/pkgs/development/python-modules/aafigure/default.nix
+++ b/pkgs/development/python-modules/aafigure/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pillow }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pillow,
+}:
 
 buildPythonPackage rec {
   pname = "aafigure";
diff --git a/pkgs/development/python-modules/aardwolf/default.nix b/pkgs/development/python-modules/aardwolf/default.nix
index 934133d0d7055..c4807df9a90ca 100644
--- a/pkgs/development/python-modules/aardwolf/default.nix
+++ b/pkgs/development/python-modules/aardwolf/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, stdenv
-, arc4
-, asn1crypto
-, asn1tools
-, asyauth
-, asysocks
-, buildPythonPackage
-, cargo
-, colorama
-, fetchFromGitHub
-, iconv
-, minikerberos
-, pillow
-, pyperclip
-, pythonOlder
-, rustPlatform
-, rustc
-, setuptools-rust
-, tqdm
-, unicrypto
-, winsspi
+{
+  lib,
+  stdenv,
+  arc4,
+  asn1crypto,
+  asn1tools,
+  asyauth,
+  asysocks,
+  buildPythonPackage,
+  cargo,
+  colorama,
+  fetchFromGitHub,
+  iconv,
+  minikerberos,
+  pillow,
+  pyperclip,
+  pythonOlder,
+  rustPlatform,
+  rustc,
+  setuptools-rust,
+  tqdm,
+  unicrypto,
+  winsspi,
 }:
 
 buildPythonPackage rec {
@@ -65,16 +66,12 @@ buildPythonPackage rec {
     tqdm
     unicrypto
     winsspi
-  ] ++ lib.optionals (stdenv.isDarwin) [
-    iconv
-  ];
+  ] ++ lib.optionals (stdenv.hostPlatform.isDarwin) [ iconv ];
 
   # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aardwolf"
-  ];
+  pythonImportsCheck = [ "aardwolf" ];
 
   meta = with lib; {
     description = "Asynchronous RDP protocol implementation";
diff --git a/pkgs/development/python-modules/abjad/default.nix b/pkgs/development/python-modules/abjad/default.nix
index 3c501a029b189..a6af83806afe6 100644
--- a/pkgs/development/python-modules/abjad/default.nix
+++ b/pkgs/development/python-modules/abjad/default.nix
@@ -1,12 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, ply
-, roman
-, uqbar
-, pythonOlder
-, pytestCheckHook
-, lilypond
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  ply,
+  roman,
+  uqbar,
+  pythonOlder,
+  pythonAtLeast,
+  pytestCheckHook,
+  lilypond,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -14,7 +17,9 @@ buildPythonPackage rec {
   version = "3.19";
   format = "setuptools";
 
-  disabled = pythonOlder "3.10";
+  # see issue upstream indicating Python 3.12 support will come
+  # with version 3.20: https://github.com/Abjad/abjad/issues/1574
+  disabled = pythonOlder "3.10" || pythonAtLeast "3.12";
 
   src = fetchPypi {
     inherit pname version;
@@ -25,24 +30,21 @@ buildPythonPackage rec {
     ply
     roman
     uqbar
+    typing-extensions
   ];
 
-  buildInputs = [
-    lilypond
-  ];
+  buildInputs = [ lilypond ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace abjad/io.py \
-      --replace 'lilypond_path = self.get_lilypond_path()' \
+      --replace-fail 'lilypond_path = self.get_lilypond_path()' \
                 'lilypond_path = "${lilypond}/bin/lilypond"'
     # general invocations of binary for IO purposes
 
     substituteInPlace abjad/configuration.py \
-      --replace '["lilypond"' '["${lilypond}/bin/lilypond"'
+      --replace-fail '["lilypond"' '["${lilypond}/bin/lilypond"'
     # get_lilypond_version_string
   '';
 
diff --git a/pkgs/development/python-modules/about-time/default.nix b/pkgs/development/python-modules/about-time/default.nix
index d705bf5a3e15c..24d92ea3b6851 100644
--- a/pkgs/development/python-modules/about-time/default.nix
+++ b/pkgs/development/python-modules/about-time/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
 }:
 
 buildPythonPackage rec {
@@ -19,12 +20,10 @@ buildPythonPackage rec {
 
   doCheck = false;
 
-  pythonImportsCheck = [
-    "about_time"
-  ];
+  pythonImportsCheck = [ "about_time" ];
 
   meta = with lib; {
-    description = "A cool helper for tracking time and throughput of code blocks, with beautiful human friendly renditions";
+    description = "Cool helper for tracking time and throughput of code blocks, with beautiful human friendly renditions";
     homepage = "https://github.com/rsalmei/about-time";
     license = licenses.mit;
     maintainers = with maintainers; [ thiagokokada ];
diff --git a/pkgs/development/python-modules/absl-py/default.nix b/pkgs/development/python-modules/absl-py/default.nix
index eb412275a8821..4b1bfa9109816 100644
--- a/pkgs/development/python-modules/absl-py/default.nix
+++ b/pkgs/development/python-modules/absl-py/default.nix
@@ -1,10 +1,9 @@
-{ buildPythonPackage
-, lib
-, pythonOlder
-, fetchPypi
-, setuptools
-, six
-, enum34
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -17,15 +16,9 @@ buildPythonPackage rec {
     hash = "sha256-eCB5DvuzFnOc3otOGTVyQ/w2CKFSAkKIUT3ZaNfZWf8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    six
-  ] ++ lib.optionals (pythonOlder "3.4") [
-    enum34
-  ];
+  propagatedBuildInputs = [ six ];
 
   # checks use bazel; should be revisited
   doCheck = false;
@@ -34,6 +27,6 @@ buildPythonPackage rec {
     description = "Abseil Python Common Libraries";
     homepage = "https://github.com/abseil/abseil-py";
     license = lib.licenses.asl20;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/accelerate/default.nix b/pkgs/development/python-modules/accelerate/default.nix
index eecbd37a90634..a809c48b73133 100644
--- a/pkgs/development/python-modules/accelerate/default.nix
+++ b/pkgs/development/python-modules/accelerate/default.nix
@@ -1,40 +1,50 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytest7CheckHook
-, setuptools
-, numpy
-, packaging
-, psutil
-, pyyaml
-, safetensors
-, torch
-, config
-, cudatoolkit
-, evaluate
-, parameterized
-, transformers
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonAtLeast,
+
+  # buildInputs
+  llvmPackages,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  numpy,
+  packaging,
+  psutil,
+  pyyaml,
+  safetensors,
+  torch,
+
+  # tests
+  evaluate,
+  parameterized,
+  pytest7CheckHook,
+  transformers,
+  config,
+  cudatoolkit,
 }:
 
 buildPythonPackage rec {
   pname = "accelerate";
-  version = "0.27.0";
+  version = "0.34.2";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
-
   src = fetchFromGitHub {
     owner = "huggingface";
-    repo = pname;
+    repo = "accelerate";
     rev = "refs/tags/v${version}";
-    hash = "sha256-7rnI8UXyAql8fLMKoSRrWzVw5CnyYVE2o6dJOzSgWxw=";
+    hash = "sha256-4kDNLta6gGev16A4hNOArTpoD8p6LMRwqwHS/DZjtz0=";
   };
 
-  nativeBuildInputs = [ setuptools ];
+  buildInputs = [ llvmPackages.openmp ];
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
     packaging
     psutil
@@ -49,42 +59,67 @@ buildPythonPackage rec {
     pytest7CheckHook
     transformers
   ];
-  preCheck = ''
-    export HOME=$(mktemp -d)
-    export PATH=$out/bin:$PATH
-  '' + lib.optionalString config.cudaSupport ''
-    export TRITON_PTXAS_PATH="${cudatoolkit}/bin/ptxas"
-  '';
+  preCheck =
+    ''
+      export HOME=$(mktemp -d)
+      export PATH=$out/bin:$PATH
+    ''
+    + lib.optionalString config.cudaSupport ''
+      export TRITON_PTXAS_PATH="${cudatoolkit}/bin/ptxas"
+    '';
   pytestFlagsArray = [ "tests" ];
-  disabledTests = [
-    # try to download data:
-    "FeatureExamplesTests"
-    "test_infer_auto_device_map_on_t0pp"
-
-    # require socket communication
-    "test_explicit_dtypes"
-    "test_gated"
-    "test_invalid_model_name"
-    "test_invalid_model_name_transformers"
-    "test_no_metadata"
-    "test_no_split_modules"
-    "test_remote_code"
-    "test_transformers_model"
-
-    # set the environment variable, CC, which conflicts with standard environment
-    "test_patch_environment_key_exists"
-  ] ++ lib.optionals (stdenv.isLinux && stdenv.isAarch64) [
-    # usual aarch64-linux RuntimeError: DataLoader worker (pid(s) <...>) exited unexpectedly
-    "CheckpointTest"
-  ] ++ lib.optionals (!config.cudaSupport) [
-    # requires ptxas from cudatoolkit, which is unfree
-    "test_dynamo_extract_model"
-  ] ++ lib.optionals (stdenv.isDarwin && stdenv.isx86_64) [
-    # RuntimeError: torch_shm_manager: execl failed: Permission denied
-    "CheckpointTest"
-  ];
+  disabledTests =
+    [
+      # try to download data:
+      "FeatureExamplesTests"
+      "test_infer_auto_device_map_on_t0pp"
+
+      # require socket communication
+      "test_explicit_dtypes"
+      "test_gated"
+      "test_invalid_model_name"
+      "test_invalid_model_name_transformers"
+      "test_no_metadata"
+      "test_no_split_modules"
+      "test_remote_code"
+      "test_transformers_model"
+
+      # nondeterministic, tests GC behaviour by thresholding global ram usage
+      "test_free_memory_dereferences_prepared_components"
 
-  disabledTestPaths = lib.optionals (!(stdenv.isLinux && stdenv.isx86_64)) [
+      # set the environment variable, CC, which conflicts with standard environment
+      "test_patch_environment_key_exists"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      # RuntimeError: Dynamo is not supported on Python 3.12+
+      "test_convert_to_fp32"
+      "test_dynamo_extract_model"
+      "test_send_to_device_compiles"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
+      # usual aarch64-linux RuntimeError: DataLoader worker (pid(s) <...>) exited unexpectedly
+      "CheckpointTest"
+      # TypeError: unsupported operand type(s) for /: 'NoneType' and 'int' (it seems cpuinfo doesn't work here)
+      "test_mpi_multicpu_config_cmd"
+    ]
+    ++ lib.optionals (!config.cudaSupport) [
+      # requires ptxas from cudatoolkit, which is unfree
+      "test_dynamo_extract_model"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin) [
+      # RuntimeError: 'accelerate-launch /nix/store/a7vhm7b74a7bmxc35j26s9iy1zfaqjs...
+      "test_accelerate_test"
+      "test_init_trackers"
+      "test_init_trackers"
+      "test_log"
+      "test_log_with_tensor"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) [
+      # RuntimeError: torch_shm_manager: execl failed: Permission denied
+      "CheckpointTest"
+    ];
+
+  disabledTestPaths = lib.optionals (!(stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86_64)) [
     # numerous instances of torch.multiprocessing.spawn.ProcessRaisedException:
     "tests/test_cpu.py"
     "tests/test_grad_sync.py"
@@ -92,16 +127,16 @@ buildPythonPackage rec {
     "tests/test_scheduler.py"
   ];
 
-  pythonImportsCheck = [
-    "accelerate"
-  ];
+  pythonImportsCheck = [ "accelerate" ];
+
+  __darwinAllowLocalNetworking = true;
 
-  meta = with lib; {
+  meta = {
     homepage = "https://huggingface.co/docs/accelerate";
-    description = "A simple way to train and use PyTorch models with multi-GPU, TPU, mixed-precision";
+    description = "Simple way to train and use PyTorch models with multi-GPU, TPU, mixed-precision";
     changelog = "https://github.com/huggingface/accelerate/releases/tag/v${version}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ bcdarwin ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ bcdarwin ];
     mainProgram = "accelerate";
   };
 }
diff --git a/pkgs/development/python-modules/accessible-pygments/default.nix b/pkgs/development/python-modules/accessible-pygments/default.nix
index 9c516a5f6e85f..177b3529ecc64 100644
--- a/pkgs/development/python-modules/accessible-pygments/default.nix
+++ b/pkgs/development/python-modules/accessible-pygments/default.nix
@@ -1,26 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pygments
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  hatchling,
+  hatch-vcs,
+  hatch-fancy-pypi-readme,
+  pygments,
 }:
 
 buildPythonPackage rec {
   pname = "accessible-pygments";
-  version = "0.0.4";
-  format = "setuptools";
+  version = "0.0.5";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-57V6mxWVjpYBx+nrB6RAyBMoNUWiCXPyV0pfRT0OlT4=";
+    pname = "accessible_pygments";
+    inherit version;
+    hash = "sha256-QJGNPmorYZrUJMuR5Va9O9iGVEPZ8i8dzfeeM8gEaHI=";
   };
 
-  propagatedBuildInputs = [
-    pygments
+  build-system = [
+    hatchling
+    hatch-vcs
+    hatch-fancy-pypi-readme
   ];
 
+  dependencies = [ pygments ];
+
   # Tests only execute pygments with these styles
   doCheck = false;
 
@@ -30,10 +39,10 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A collection of accessible pygments styles";
+    description = "Collection of accessible pygments styles";
     homepage = "https://github.com/Quansight-Labs/accessible-pygments";
     changelog = "https://github.com/Quansight-Labs/accessible-pygments/raw/v${version}/CHANGELOG.md";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/accupy/default.nix b/pkgs/development/python-modules/accupy/default.nix
index 6c2906fcb7ee3..35d39fed9a6f4 100644
--- a/pkgs/development/python-modules/accupy/default.nix
+++ b/pkgs/development/python-modules/accupy/default.nix
@@ -1,42 +1,44 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, mpmath
-, numpy
-, pybind11
-, pyfma
-, eigen
-, importlib-metadata
-, pytestCheckHook
-, matplotlib
-, dufte
-, perfplot
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  mpmath,
+  numpy,
+  pybind11,
+  pyfma,
+  eigen,
+  importlib-metadata,
+  pytestCheckHook,
+  matplotlib,
+  dufte,
+  perfplot,
 }:
 
 buildPythonPackage rec {
   pname = "accupy";
   version = "0.3.6";
-  format = "setuptools";
+  pyproject = true;
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "nschloe";
-    repo = pname;
+    repo = "accupy";
     rev = version;
-    sha256 = "0sxkwpp2xy2jgakhdxr4nh1cspqv8l89kz6s832h05pbpyc0n767";
+    hash = "sha256-xxwLmL/rFgDFQNr8mRBFG1/NArQk9wanelL4Lu7ls2s=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     pybind11
   ];
 
-  buildInputs = [
-    eigen
-  ];
+  buildInputs = [ eigen ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     mpmath
     numpy
     pyfma
@@ -50,8 +52,8 @@ buildPythonPackage rec {
   ];
 
   postConfigure = ''
-   substituteInPlace setup.py \
-     --replace "/usr/include/eigen3/" "${eigen}/include/eigen3/"
+    substituteInPlace setup.py \
+      --replace-fail "/usr/include/eigen3/" "${eigen}/include/eigen3/"
   '';
 
   preBuild = ''
@@ -60,16 +62,21 @@ buildPythonPackage rec {
 
   # This variable is needed to suppress the "Trace/BPT trap: 5" error in Darwin's checkPhase.
   # Not sure of the details, but we can avoid it by changing the matplotlib backend during testing.
-  env.MPLBACKEND = lib.optionalString stdenv.isDarwin "Agg";
+  env.MPLBACKEND = lib.optionalString stdenv.hostPlatform.isDarwin "Agg";
 
   # performance tests aren't useful to us and disabling them allows us to
   # decouple ourselves from an unnecessary build dep
   preCheck = ''
     for f in test/test*.py ; do
-      substituteInPlace $f --replace 'import perfplot' ""
+      substituteInPlace $f --replace-quiet 'import perfplot' ""
     done
   '';
-  disabledTests = [ "test_speed_comparison1" "test_speed_comparison2" ];
+
+  disabledTests = [
+    "test_speed_comparison1"
+    "test_speed_comparison2"
+  ];
+
   pythonImportsCheck = [ "accupy" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/acme-tiny/default.nix b/pkgs/development/python-modules/acme-tiny/default.nix
index f0e1d699a8efc..368bb2cc2f855 100644
--- a/pkgs/development/python-modules/acme-tiny/default.nix
+++ b/pkgs/development/python-modules/acme-tiny/default.nix
@@ -1,16 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, fusepy
-, fuse
-, openssl
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  fusepy,
+  fuse,
+  openssl,
 }:
 
 buildPythonPackage rec {
   pname = "acme-tiny";
   version = "5.0.1";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
@@ -18,21 +20,27 @@ buildPythonPackage rec {
   };
 
   patchPhase = ''
-    substituteInPlace acme_tiny.py --replace '"openssl"' '"${openssl.bin}/bin/openssl"'
-    substituteInPlace tests/test_module.py --replace '"openssl"' '"${openssl.bin}/bin/openssl"'
-    substituteInPlace tests/utils.py --replace /etc/ssl/openssl.cnf ${openssl.out}/etc/ssl/openssl.cnf
+    substituteInPlace acme_tiny.py --replace-fail '"openssl"' '"${openssl.bin}/bin/openssl"'
+    substituteInPlace tests/test_module.py --replace-fail '"openssl"' '"${openssl.bin}/bin/openssl"'
+    substituteInPlace tests/utils.py --replace-fail /etc/ssl/openssl.cnf ${openssl.out}/etc/ssl/openssl.cnf
   '';
 
-  buildInputs = [ setuptools-scm ];
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
 
-  nativeCheckInputs = [ fusepy fuse ];
+  nativeCheckInputs = [
+    fusepy
+    fuse
+  ];
 
   doCheck = false; # seems to hang, not sure
 
   pythonImportsCheck = [ "acme_tiny" ];
 
   meta = with lib; {
-    description = "A tiny script to issue and renew TLS certs from Let's Encrypt";
+    description = "Tiny script to issue and renew TLS certs from Let's Encrypt";
     mainProgram = "acme-tiny";
     homepage = "https://github.com/diafygi/acme-tiny";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/acme/default.nix b/pkgs/development/python-modules/acme/default.nix
index 65e930e07414a..0b3ad8d274800 100644
--- a/pkgs/development/python-modules/acme/default.nix
+++ b/pkgs/development/python-modules/acme/default.nix
@@ -1,16 +1,17 @@
-{ buildPythonPackage
-, certbot
-, cryptography
-, pyasn1
-, pyopenssl
-, pyrfc3339
-, josepy
-, pytz
-, requests
-, requests-toolbelt
-, six
-, werkzeug
-, ndg-httpsclient
+{
+  buildPythonPackage,
+  certbot,
+  cryptography,
+  pyasn1,
+  pyopenssl,
+  pyrfc3339,
+  josepy,
+  pytz,
+  requests,
+  requests-toolbelt,
+  six,
+  werkzeug,
+  ndg-httpsclient,
 }:
 
 buildPythonPackage rec {
@@ -20,8 +21,17 @@ buildPythonPackage rec {
   format = "setuptools";
 
   propagatedBuildInputs = [
-    cryptography pyasn1 pyopenssl pyrfc3339 pytz requests requests-toolbelt six
-    werkzeug ndg-httpsclient josepy
+    cryptography
+    pyasn1
+    pyopenssl
+    pyrfc3339
+    pytz
+    requests
+    requests-toolbelt
+    six
+    werkzeug
+    ndg-httpsclient
+    josepy
   ];
 
   # does not contain any tests
diff --git a/pkgs/development/python-modules/acoustics/default.nix b/pkgs/development/python-modules/acoustics/default.nix
index 3f51f03e5e0d7..67941fd6dedf8 100644
--- a/pkgs/development/python-modules/acoustics/default.nix
+++ b/pkgs/development/python-modules/acoustics/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, matplotlib
-, numpy
-, pandas
-, pytestCheckHook
-, pythonOlder
-, scipy
-, tabulate
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  matplotlib,
+  numpy,
+  pandas,
+  pytestCheckHook,
+  pythonOlder,
+  scipy,
+  tabulate,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,7 @@ buildPythonPackage rec {
 
   src = fetchFromGitHub {
     owner = "python-acoustics";
-    repo  = "python-acoustics";
+    repo = "python-acoustics";
     rev = "99d79206159b822ea2f4e9d27c8b2fbfeb704d38";
     hash = "sha256-/4bVjlhj8ihpAFHEWPaZ/xBILi3rb8f0NmwAexJCg+o=";
   };
@@ -35,9 +36,7 @@ buildPythonPackage rec {
     tabulate
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export HOME=$TMPDIR
@@ -45,9 +44,7 @@ buildPythonPackage rec {
     echo "backend: ps" > $HOME/.matplotlib/matplotlibrc
   '';
 
-  pytestFlagsArray = [
-    "-Wignore::DeprecationWarning"
-  ];
+  pytestFlagsArray = [ "-Wignore::DeprecationWarning" ];
 
   pythonImportsCheck = [ "acoustics" ];
 
diff --git a/pkgs/development/python-modules/acquire/default.nix b/pkgs/development/python-modules/acquire/default.nix
index 555a60412bf45..ca5f1c39a6086 100644
--- a/pkgs/development/python-modules/acquire/default.nix
+++ b/pkgs/development/python-modules/acquire/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, defusedxml
-, dissect-cstruct
-, dissect-target
-, fetchFromGitHub
-, minio
-, pycryptodome
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-toolbelt
-, rich
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  defusedxml,
+  dissect-cstruct,
+  dissect-target,
+  fetchFromGitHub,
+  minio,
+  pycryptodome,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-toolbelt,
+  rich,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "acquire";
-  version = "3.13";
+  version = "3.16";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -26,15 +27,15 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "acquire";
     rev = "refs/tags/${version}";
-    hash = "sha256-Z85bHM3MtS2MLX9BaKi8VqA13QjO9KdrgqhuyBzjILQ=";
+    hash = "sha256-wurnYHvzN5KfpikempYeztR9hkvGfRjR6M3tch6qFo4=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     defusedxml
     dissect-cstruct
     dissect-target
@@ -51,13 +52,9 @@ buildPythonPackage rec {
     ] ++ dissect-target.optional-dependencies.full;
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.full;
+  nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.full;
 
-  pythonImportsCheck = [
-    "acquire"
-  ];
+  pythonImportsCheck = [ "acquire" ];
 
   meta = with lib; {
     description = "Tool to quickly gather forensic artifacts from disk images or a live system";
diff --git a/pkgs/development/python-modules/actdiag/default.nix b/pkgs/development/python-modules/actdiag/default.nix
index 070bcd72ed4ab..84fe61584547a 100644
--- a/pkgs/development/python-modules/actdiag/default.nix
+++ b/pkgs/development/python-modules/actdiag/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, blockdiag
-, buildPythonPackage
-, fetchFromGitHub
-, pynose
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  blockdiag,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +22,15 @@ buildPythonPackage rec {
     hash = "sha256-WmprkHOgvlsOIg8H77P7fzEqxGnj6xaL7Df7urRkg3o=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  patches = [ ./fix_test_generate.patch ];
 
-  propagatedBuildInputs = [
-    blockdiag
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pynose
-    pytestCheckHook
-  ];
+  propagatedBuildInputs = [ blockdiag ];
 
-  pytestFlagsArray = [
-    "src/actdiag/tests/"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pytestFlagsArray = [ "src/actdiag/tests/" ];
 
   disabledTests = [
     # AttributeError: 'TestRstDirectives' object has no attribute 'assertRegexpMatches'
@@ -45,9 +38,7 @@ buildPythonPackage rec {
     "noviewbox"
   ];
 
-  pythonImportsCheck = [
-    "actdiag"
-  ];
+  pythonImportsCheck = [ "actdiag" ];
 
   meta = with lib; {
     description = "Generate activity-diagram image from spec-text file (similar to Graphviz)";
diff --git a/pkgs/development/python-modules/actdiag/fix_test_generate.patch b/pkgs/development/python-modules/actdiag/fix_test_generate.patch
new file mode 100644
index 0000000000000..95dbf5887268d
--- /dev/null
+++ b/pkgs/development/python-modules/actdiag/fix_test_generate.patch
@@ -0,0 +1,22 @@
+diff --git a/src/actdiag/tests/test_generate_diagram.py b/src/actdiag/tests/test_generate_diagram.py
+index c5ee3d5..a74a151 100644
+--- a/src/actdiag/tests/test_generate_diagram.py
++++ b/src/actdiag/tests/test_generate_diagram.py
+@@ -16,16 +16,6 @@
+ import os
+ 
+ from blockdiag.tests.test_generate_diagram import (get_diagram_files,
+-                                                   testcase_generator)
++                                                   test_generate_with_separate)
+ 
+-import actdiag.command
+ 
+-
+-def test_generate():
+-    mainfunc = actdiag.command.main
+-    basepath = os.path.dirname(__file__)
+-    files = get_diagram_files(basepath)
+-    options = []
+-
+-    for testcase in testcase_generator(basepath, mainfunc, files, options):
+-        yield testcase
diff --git a/pkgs/development/python-modules/acunetix/default.nix b/pkgs/development/python-modules/acunetix/default.nix
index b28a6beefbc72..2c1800fbc503d 100644
--- a/pkgs/development/python-modules/acunetix/default.nix
+++ b/pkgs/development/python-modules/acunetix/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiofiles
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, requests
+{
+  lib,
+  aiofiles,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "acunetix"
-  ];
+  pythonImportsCheck = [ "acunetix" ];
 
   meta = with lib; {
     description = "Acunetix Web Vulnerability Scanner SDK for Python";
diff --git a/pkgs/development/python-modules/adafruit-io/default.nix b/pkgs/development/python-modules/adafruit-io/default.nix
index 8aaa8b61fda7a..e0f1122a464e1 100644
--- a/pkgs/development/python-modules/adafruit-io/default.nix
+++ b/pkgs/development/python-modules/adafruit-io/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, paho-mqtt
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  paho-mqtt,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "adafruit-io";
-  version = "2.7.2";
+  version = "2.8.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -19,25 +20,19 @@ buildPythonPackage rec {
     owner = "adafruit";
     repo = "Adafruit_IO_Python";
     rev = "refs/tags/${version}";
-    hash = "sha256-JBpF08WGe1pMK1y7HZLH/jSQkJtbWdiTGYHWRd39UIk=";
+    hash = "sha256-OwTHMyc2ePSdYVuY1h3PY+uDBl6/7fTMXiZC3sZm8fU=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     paho-mqtt
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "Adafruit_IO"
-  ];
+  pythonImportsCheck = [ "Adafruit_IO" ];
 
   disabledTestPaths = [
     # Tests requires valid credentials
diff --git a/pkgs/development/python-modules/adafruit-platformdetect/default.nix b/pkgs/development/python-modules/adafruit-platformdetect/default.nix
index bee4d68d5d738..5f433ee5bfc39 100644
--- a/pkgs/development/python-modules/adafruit-platformdetect/default.nix
+++ b/pkgs/development/python-modules/adafruit-platformdetect/default.nix
@@ -1,33 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "adafruit-platformdetect";
-  version = "3.62.0";
+  version = "3.74.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    pname = "Adafruit-PlatformDetect";
+    pname = "adafruit_platformdetect";
     inherit version;
-    hash = "sha256-L2CbqWqyOo4mq+KsO8FYAyHClRKFXMLWWtfYEg0SD34=";
+    hash = "sha256-rVmtqpVjQgovAsVCu3+hgglga9LJPGT8zzlhySmpba8=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
   # Project has not published tests yet
   doCheck = false;
 
-  pythonImportsCheck = [
-    "adafruit_platformdetect"
-  ];
+  pythonImportsCheck = [ "adafruit_platformdetect" ];
 
   meta = with lib; {
     description = "Platform detection for use by Adafruit libraries";
diff --git a/pkgs/development/python-modules/adafruit-pureio/default.nix b/pkgs/development/python-modules/adafruit-pureio/default.nix
index 82d39fa23abad..0c2ce56f2d048 100644
--- a/pkgs/development/python-modules/adafruit-pureio/default.nix
+++ b/pkgs/development/python-modules/adafruit-pureio/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -18,16 +19,12 @@ buildPythonPackage rec {
     hash = "sha256-xM+7NlcxlC0fEJKhFvR9/a4K7xjFsn8QcrWCStXqjHw=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   # Physical SMBus is not present
   doCheck = false;
 
-  pythonImportsCheck = [
-    "Adafruit_PureIO"
-  ];
+  pythonImportsCheck = [ "Adafruit_PureIO" ];
 
   meta = with lib; {
     description = "Python interface to Linux IO including I2C and SPI";
diff --git a/pkgs/development/python-modules/adal/default.nix b/pkgs/development/python-modules/adal/default.nix
index cbce5d2af1484..bb6b018fd8490 100644
--- a/pkgs/development/python-modules/adal/default.nix
+++ b/pkgs/development/python-modules/adal/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, httpretty
-, pyjwt
-, pytestCheckHook
-, python-dateutil
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpretty,
+  pyjwt,
+  pytestCheckHook,
+  python-dateutil,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "adal";
   version = "1.2.7";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "AzureAD";
@@ -24,7 +26,9 @@ buildPythonPackage rec {
     sed -i '/cryptography/d' setup.py
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     pyjwt
     python-dateutil
     requests
@@ -40,14 +44,12 @@ buildPythonPackage rec {
     "test_failed_request"
   ];
 
-  pythonImportsCheck = [
-    "adal"
-  ];
+  pythonImportsCheck = [ "adal" ];
 
   meta = with lib; {
     description = "Python module to authenticate to Azure Active Directory (AAD) in order to access AAD protected web resources";
     homepage = "https://github.com/AzureAD/azure-activedirectory-library-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/adax-local/default.nix b/pkgs/development/python-modules/adax-local/default.nix
index 4571816cfa07b..0f8cfb62a3576 100644
--- a/pkgs/development/python-modules/adax-local/default.nix
+++ b/pkgs/development/python-modules/adax-local/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, bleak
-, buildPythonPackage
-, fetchFromGitHub
-, async-timeout
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  bleak,
+  buildPythonPackage,
+  fetchFromGitHub,
+  async-timeout,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "adax_local"
-  ];
+  pythonImportsCheck = [ "adax_local" ];
 
   meta = with lib; {
     description = "Module for local access to Adax";
diff --git a/pkgs/development/python-modules/adax/default.nix b/pkgs/development/python-modules/adax/default.nix
index 19e1e9a6fb02d..173fe1ce76b7f 100644
--- a/pkgs/development/python-modules/adax/default.nix
+++ b/pkgs/development/python-modules/adax/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "adax"
-  ];
+  pythonImportsCheck = [ "adax" ];
 
   meta = with lib; {
     description = "Python module to communicate with Adax";
diff --git a/pkgs/development/python-modules/adb-enhanced/default.nix b/pkgs/development/python-modules/adb-enhanced/default.nix
index 739d340143573..ad33e08ef8a9b 100644
--- a/pkgs/development/python-modules/adb-enhanced/default.nix
+++ b/pkgs/development/python-modules/adb-enhanced/default.nix
@@ -1,42 +1,44 @@
-{ lib
-, buildPythonPackage
-, docopt
-, fetchFromGitHub
-, jdk11
-, psutil
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  docopt,
+  fetchFromGitHub,
+  setuptools,
+  jdk11,
+  psutil,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "adb-enhanced";
-  version = "2.5.22";
-  format = "setuptools";
+  version = "2.5.24";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "ashishb";
-    repo = pname;
+    repo = "adb-enhanced";
     rev = "refs/tags/${version}";
-    hash = "sha256-n1CME/swV+NsZdUfWwVY1qQeYzawwy+sm0mkRPQKm6A=";
+    hash = "sha256-0HxeL6VGM+HTiAxs3NFRcEFbmH9q+0/pJdGyF1hl4hU=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     psutil
     docopt
   ];
 
   postPatch = ''
     substituteInPlace adbe/adb_enhanced.py \
-      --replace "cmd = 'java" "cmd = '${jdk11}/bin/java"
+      --replace-fail "cmd = 'java" "cmd = '${jdk11}/bin/java"
   '';
 
   # Disable tests because they require a dedicated Android emulator
   doCheck = false;
 
-  pythonImportsCheck = [
-    "adbe"
-  ];
+  pythonImportsCheck = [ "adbe" ];
 
   meta = with lib; {
     description = "Tool for Android testing and development";
diff --git a/pkgs/development/python-modules/adb-homeassistant/default.nix b/pkgs/development/python-modules/adb-homeassistant/default.nix
index f411c85fbfd12..a5f539d950292 100644
--- a/pkgs/development/python-modules/adb-homeassistant/default.nix
+++ b/pkgs/development/python-modules/adb-homeassistant/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, libusb1
-, rsa
-, pycryptodome
-, pytest
-, mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  libusb1,
+  rsa,
+  pycryptodome,
+  pytest,
+  mock,
 }:
 buildPythonPackage {
   pname = "adb-homeassistant";
@@ -18,7 +19,6 @@ buildPythonPackage {
     repo = "python-adb";
     rev = "5949bf432307cbba7128e84d7bc6add7f054a078";
     sha256 = "0s3fazvbzchn1fsvjrd1jl8w9y4dvvgq6q8m8p5lr2gri0npr581";
-
   };
 
   propagatedBuildInputs = [
@@ -27,13 +27,16 @@ buildPythonPackage {
     pycryptodome
   ];
 
-  nativeCheckInputs = [ pytest mock ];
+  nativeCheckInputs = [
+    pytest
+    mock
+  ];
   checkPhase = ''
     py.test test
   '';
 
   meta = with lib; {
-    description = "A pure python implementation of the Android ADB and Fastboot protocols";
+    description = "Pure python implementation of the Android ADB and Fastboot protocols";
     homepage = "https://github.com/JeffLIrion/python-adb/tree/adb-homeassistant";
     license = licenses.asl20;
     maintainers = [ maintainers.makefu ];
diff --git a/pkgs/development/python-modules/adb-shell/default.nix b/pkgs/development/python-modules/adb-shell/default.nix
index c2f189e2749ae..a7347c080d787 100644
--- a/pkgs/development/python-modules/adb-shell/default.nix
+++ b/pkgs/development/python-modules/adb-shell/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, aiofiles
-, async-timeout
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, isPy3k
-, libusb1
-, mock
-, pyasn1
-, pythonAtLeast
-, pycryptodome
-, pytestCheckHook
-, rsa
+{
+  lib,
+  aiofiles,
+  async-timeout,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  isPy3k,
+  libusb1,
+  mock,
+  pyasn1,
+  pycryptodome,
+  pytestCheckHook,
+  rsa,
 }:
 
 buildPythonPackage rec {
@@ -39,9 +39,7 @@ buildPythonPackage rec {
       aiofiles
       async-timeout
     ];
-    usb = [
-      libusb1
-    ];
+    usb = [ libusb1 ];
   };
 
   nativeCheckInputs = [
@@ -50,9 +48,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "adb_shell"
-  ];
+  pythonImportsCheck = [ "adb_shell" ];
 
   meta = with lib; {
     description = "Python implementation of ADB with shell and FileSync functionality";
diff --git a/pkgs/development/python-modules/adblock/default.nix b/pkgs/development/python-modules/adblock/default.nix
index 87f42fbd35b6e..67170159f348e 100644
--- a/pkgs/development/python-modules/adblock/default.nix
+++ b/pkgs/development/python-modules/adblock/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, fetchpatch
-, buildPythonPackage
-, rustPlatform
-, pkg-config
-, openssl
-, publicsuffix-list
-, pythonOlder
-, libiconv
-, CoreFoundation
-, Security
-, pytestCheckHook
-, toml
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  fetchpatch,
+  buildPythonPackage,
+  rustPlatform,
+  pkg-config,
+  openssl,
+  publicsuffix-list,
+  pythonOlder,
+  libiconv,
+  CoreFoundation,
+  Security,
+  pytestCheckHook,
+  toml,
 }:
 
 buildPythonPackage rec {
@@ -50,20 +51,20 @@ buildPythonPackage rec {
     hash = "sha256-1xmYmF5P7a5O9MilxDy+CVhmWMGRetdM2fGvTPy7JmM=";
   };
 
-  nativeBuildInputs = [
-    pkg-config
-  ] ++ (with rustPlatform; [
-    cargoSetupHook
-    maturinBuildHook
-  ]);
+  nativeBuildInputs =
+    [ pkg-config ]
+    ++ (with rustPlatform; [
+      cargoSetupHook
+      maturinBuildHook
+    ]);
 
-  buildInputs = [
-    openssl
-  ] ++ lib.optionals stdenv.isDarwin [
-    libiconv
-    CoreFoundation
-    Security
-  ];
+  buildInputs =
+    [ openssl ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      libiconv
+      CoreFoundation
+      Security
+    ];
 
   PSL_PATH = "${publicsuffix-list}/share/publicsuffix/public_suffix_list.dat";
 
@@ -92,6 +93,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/ArniDagur/python-adblock/";
     changelog = "https://github.com/ArniDagur/python-adblock/blob/${version}/CHANGELOG.md";
     maintainers = with maintainers; [ dotlambda ];
-    license = with licenses; [ asl20 /* or */ mit ];
+    license = with licenses; [
+      asl20 # or
+      mit
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/add-trailing-comma/default.nix b/pkgs/development/python-modules/add-trailing-comma/default.nix
index 1bf592b99517f..08da1feadb118 100644
--- a/pkgs/development/python-modules/add-trailing-comma/default.nix
+++ b/pkgs/development/python-modules/add-trailing-comma/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, tokenize-rt
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  tokenize-rt,
 }:
 
 buildPythonPackage rec {
@@ -20,20 +21,14 @@ buildPythonPackage rec {
     hash = "sha256-B+wjBy42RwabVz/6qEMGpB0JmwJ9hqSskwcNj4x/B/k=";
   };
 
-  propagatedBuildInputs = [
-    tokenize-rt
-  ];
+  propagatedBuildInputs = [ tokenize-rt ];
 
-  pythonImportsCheck = [
-    "add_trailing_comma"
-  ];
+  pythonImportsCheck = [ "add_trailing_comma" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A tool (and pre-commit hook) to automatically add trailing commas to calls and literals";
+    description = "Tool (and pre-commit hook) to automatically add trailing commas to calls and literals";
     mainProgram = "add-trailing-comma";
     homepage = "https://github.com/asottile/add-trailing-comma";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/addict/default.nix b/pkgs/development/python-modules/addict/default.nix
index 2a80935f3a22f..36bab211bb4ac 100644
--- a/pkgs/development/python-modules/addict/default.nix
+++ b/pkgs/development/python-modules/addict/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/adext/default.nix b/pkgs/development/python-modules/adext/default.nix
index c5a05d19bee85..8a7345613de79 100644
--- a/pkgs/development/python-modules/adext/default.nix
+++ b/pkgs/development/python-modules/adext/default.nix
@@ -1,40 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools-scm
-, alarmdecoder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  alarmdecoder,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "adext";
-  version = "0.4.2";
-  format = "setuptools";
+  version = "0.4.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "ajschmidt8";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "0h5k9kzms2f0r48pdhsgv8pimk0vsxw8vs0k6880mank8ij914wr";
+    repo = "adext";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-y8BvcSc3vD0FEWiyzW2Oh6PBS2Itjs2sz+9Dzh5yqSg=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    alarmdecoder
-  ];
+  dependencies = [ alarmdecoder ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "adext" ];
 
   meta = with lib; {
     description = "Python extension for AlarmDecoder";
     homepage = "https://github.com/ajschmidt8/adext";
+    changelog = "https://github.com/ajschmidt8/adext/releases/tag/v${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/adguardhome/default.nix b/pkgs/development/python-modules/adguardhome/default.nix
index a92e6e8ae33d1..f7b9d512a34e6 100644
--- a/pkgs/development/python-modules/adguardhome/default.nix
+++ b/pkgs/development/python-modules/adguardhome/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "adguardhome";
-  version = "0.6.3";
-  format = "pyproject";
+  version = "0.7.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.11";
 
@@ -21,23 +22,18 @@ buildPythonPackage rec {
     owner = "frenck";
     repo = "python-${pname}";
     rev = "refs/tags/v${version}";
-    hash = "sha256-V8SsWsGYmUhR9/yV6BZBK1UjYGHlDrXrF8nt0eZbTnI=";
+    hash = "sha256-n55G6ulKcgSSrgPk70D52OO9fp3WURlcRhJQUKrZ1Nk=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "--cov" "" \
-      --replace '"0.0.0"' '"${version}"'
-
-    substituteInPlace tests/test_adguardhome.py \
-      --replace 0.0.0 ${version}
+      --replace-fail "--cov" "" \
+      --replace-fail '"0.0.0"' '"${version}"'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     yarl
   ];
@@ -50,9 +46,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "adguardhome"
-  ];
+  pythonImportsCheck = [ "adguardhome" ];
 
   meta = with lib; {
     description = "Python client for the AdGuard Home API";
diff --git a/pkgs/development/python-modules/adjusttext/default.nix b/pkgs/development/python-modules/adjusttext/default.nix
index 6f4ca01a7ac0d..334a10de460ba 100644
--- a/pkgs/development/python-modules/adjusttext/default.nix
+++ b/pkgs/development/python-modules/adjusttext/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, matplotlib
-, numpy
-, packaging
-, pythonOlder
-, scipy
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  matplotlib,
+  numpy,
+  packaging,
+  pythonOlder,
+  scipy,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "adjusttext";
-  version = "1.1.1";
+  version = "1.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,7 +21,7 @@ buildPythonPackage rec {
     owner = "Phlya";
     repo = "adjusttext";
     rev = "refs/tags/v${version}";
-    hash = "sha256-o/TA/br7sJAcvfIR4uA7a6XRf/enJ/x7N4ys6Of0j3g=";
+    hash = "sha256-2EaFKvRdFPGnDlO8owjP1vCIY1hTQ3tep5oXV/JeU9M=";
   };
 
   nativeBuildInputs = [
@@ -37,9 +38,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "adjustText"
-  ];
+  pythonImportsCheck = [ "adjustText" ];
 
   meta = with lib; {
     description = "Iteratively adjust text position in matplotlib plots to minimize overlaps";
diff --git a/pkgs/development/python-modules/adlfs/default.nix b/pkgs/development/python-modules/adlfs/default.nix
index e388a9b7990f2..78b55e46c0eb1 100644
--- a/pkgs/development/python-modules/adlfs/default.nix
+++ b/pkgs/development/python-modules/adlfs/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "adlfs";
-  version = "2024.4.1";
+  version = "2024.7.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "fsspec";
     repo = "adlfs";
     rev = "refs/tags/${version}";
-    hash = "sha256-u7iQCAfJDnN8MgFZDf/rPUM94HXAr+yzsajuKtmdX4s=";
+    hash = "sha256-V0Uzfj9xuPfLgfILwVbtId+B81w/25cO+G1Y/KOEOyI=";
   };
 
   build-system = [
diff --git a/pkgs/development/python-modules/advantage-air/default.nix b/pkgs/development/python-modules/advantage-air/default.nix
index ffe66565dc2c4..569edb891c386 100644
--- a/pkgs/development/python-modules/advantage-air/default.nix
+++ b/pkgs/development/python-modules/advantage-air/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,16 +19,12 @@ buildPythonPackage rec {
     hash = "sha256-4rRR9IxzH5EiYfWzWYeyCwoLB2LetBVyH7L3nkvp+gA=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # No tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "advantage_air"
-  ];
+  pythonImportsCheck = [ "advantage_air" ];
 
   meta = with lib; {
     description = "API helper for Advantage Air's MyAir and e-zone API";
diff --git a/pkgs/development/python-modules/advocate/default.nix b/pkgs/development/python-modules/advocate/default.nix
index 532302b799c6c..a0954dae4439e 100644
--- a/pkgs/development/python-modules/advocate/default.nix
+++ b/pkgs/development/python-modules/advocate/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, ndg-httpsclient
-, netifaces
-, pyasn1
-, pyopenssl
-, requests
-, six
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ndg-httpsclient,
+  netifaces,
+  pyasn1,
+  pyopenssl,
+  requests,
+  six,
+  urllib3,
 }:
 
 buildPythonPackage rec {
@@ -39,7 +40,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/JordanMilne/Advocate";
-    description = "An SSRF-preventing wrapper around Python's requests library";
+    description = "SSRF-preventing wrapper around Python's requests library";
     license = licenses.asl20;
     maintainers = with maintainers; [ pborzenkov ];
   };
diff --git a/pkgs/development/python-modules/aeidon/default.nix b/pkgs/development/python-modules/aeidon/default.nix
new file mode 100644
index 0000000000000..7438d3a74fe64
--- /dev/null
+++ b/pkgs/development/python-modules/aeidon/default.nix
@@ -0,0 +1,52 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  charset-normalizer,
+}:
+
+buildPythonPackage rec {
+  pname = "aeidon";
+  version = "1.15";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "otsaloma";
+    repo = "gaupol";
+    rev = "refs/tags/${version}";
+    hash = "sha256-lhNyeieeiBBm3rNDEU0BuWKeM6XYlOtv1voW8tR8cUM=";
+  };
+
+  postPatch = ''
+    mv setup.py setup_gaupol.py
+    substituteInPlace setup-aeidon.py \
+      --replace "from setup import" "from setup_gaupol import"
+    mv setup-aeidon.py setup.py
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [ charset-normalizer ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pytestFlagsArray = [ "aeidon/test" ];
+
+  disabledTests = [
+    # requires gspell to work with gobject introspection
+    "test_spell"
+  ];
+
+  pythonImportsCheck = [ "aeidon" ];
+
+  meta = with lib; {
+    changelog = "https://github.com/otsaloma/gaupol/releases/tag/${version}";
+    description = "Reading, writing and manipulationg text-based subtitle files";
+    homepage = "https://github.com/otsaloma/gaupol";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ erictapen ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/aemet-opendata/default.nix b/pkgs/development/python-modules/aemet-opendata/default.nix
index dcf232247be9e..d356e78976a05 100644
--- a/pkgs/development/python-modules/aemet-opendata/default.nix
+++ b/pkgs/development/python-modules/aemet-opendata/default.nix
@@ -1,19 +1,17 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, geopy
-, pythonOlder
-, requests
-, setuptools
-, urllib3
-, wheel
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  geopy,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aemet-opendata";
-  version = "0.5.1";
-  format = "pyproject";
+  version = "0.5.4";
+  pyproject = true;
 
   disabled = pythonOlder "3.11";
 
@@ -21,27 +19,20 @@ buildPythonPackage rec {
     owner = "Noltari";
     repo = "AEMET-OpenData";
     rev = "refs/tags/${version}";
-    hash = "sha256-qj1rXM3yHYDQhtOkHfKEGS2ICjN7B2olD4og3uISjcw=";
+    hash = "sha256-iy1ptkxc4dh/fwWSi/GgPX5KRulyG0zwWTbCNBirsCo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     geopy
-    requests
-    urllib3
   ];
 
   # no tests implemented
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aemet_opendata.interface"
-  ];
+  pythonImportsCheck = [ "aemet_opendata.interface" ];
 
   meta = with lib; {
     description = "Python client for AEMET OpenData Rest API";
diff --git a/pkgs/development/python-modules/aenum/default.nix b/pkgs/development/python-modules/aenum/default.nix
index c299864830afc..7639b8ac9fdc2 100644
--- a/pkgs/development/python-modules/aenum/default.nix
+++ b/pkgs/development/python-modules/aenum/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyparsing
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyparsing,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,37 +21,35 @@ buildPythonPackage rec {
     hash = "sha256-jL12zRjE+HD/ObJChNPqAo++hzGljfOqWB5DTFdblVk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pyparsing
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aenum"
-  ];
-
-  disabledTests = [
-    # https://github.com/ethanfurman/aenum/issues/27
-    "test_class_nested_enum_and_pickle_protocol_four"
-    "test_pickle_enum_function_with_qualname"
-    "test_stdlib_inheritence"
-    "test_subclasses_with_getnewargs_ex"
-    "test_arduino_headers"
-    "test_c_header_scanner"
-    "test_extend_flag_backwards_stdlib"
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    # AttributeError: <enum 'Color'> has no attribute 'value'. Did you mean: 'blue'?
-    "test_extend_enum_shadow_property_stdlib"
-  ];
+  pythonImportsCheck = [ "aenum" ];
+
+  disabledTests =
+    [
+      # https://github.com/ethanfurman/aenum/issues/27
+      "test_class_nested_enum_and_pickle_protocol_four"
+      "test_pickle_enum_function_with_qualname"
+      "test_stdlib_inheritence"
+      "test_subclasses_with_getnewargs_ex"
+      "test_arduino_headers"
+      "test_c_header_scanner"
+      "test_extend_flag_backwards_stdlib"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      # AttributeError: <enum 'Color'> has no attribute 'value'. Did you mean: 'blue'?
+      "test_extend_enum_shadow_property_stdlib"
+    ];
 
   meta = with lib; {
     description = "Advanced Enumerations (compatible with Python's stdlib Enum), NamedTuples, and NamedConstants";
     homepage = "https://github.com/ethanfurman/aenum";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ vrthra ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/aeppl/default.nix b/pkgs/development/python-modules/aeppl/default.nix
index 1633be12bb97a..62067166d5df0 100644
--- a/pkgs/development/python-modules/aeppl/default.nix
+++ b/pkgs/development/python-modules/aeppl/default.nix
@@ -1,29 +1,33 @@
-{ lib
-, aesara
-, buildPythonPackage
-, fetchFromGitHub
-, numdifftools
-, numpy
-, pytestCheckHook
-, pythonOlder
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  aesara,
+  numpy,
+  scipy,
+  numdifftools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "aeppl";
   version = "0.1.5";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "aesara-devs";
-    repo = pname;
+    repo = "aeppl";
     rev = "refs/tags/v${version}";
     hash = "sha256-mqBbXwWJwQA2wSHuEdBeXQMfTIcgwYEjpq8AVmOjmHM=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     aesara
     numpy
     scipy
@@ -38,15 +42,21 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d);
   '';
 
-  pythonImportsCheck = [
-    "aeppl"
-  ];
+  pythonImportsCheck = [ "aeppl" ];
 
   disabledTests = [
     # Compute issue
     "test_initial_values"
   ];
 
+  pytestFlagsArray = [
+    # `numpy.distutils` is deprecated since NumPy 1.23.0, as a result of the deprecation of `distutils` itself.
+    # It will be removed for Python >= 3.12. For older Python versions it will remain present.
+    "-Wignore::DeprecationWarning"
+    # Blas cannot be found, allow fallback to the numpy slower implementation
+    "-Wignore::UserWarning"
+  ];
+
   meta = with lib; {
     description = "Library for an Aesara-based PPL";
     homepage = "https://github.com/aesara-devs/aeppl";
diff --git a/pkgs/development/python-modules/aerosandbox/default.nix b/pkgs/development/python-modules/aerosandbox/default.nix
new file mode 100644
index 0000000000000..f108219b6b08b
--- /dev/null
+++ b/pkgs/development/python-modules/aerosandbox/default.nix
@@ -0,0 +1,52 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  numpy,
+  scipy,
+  pandas,
+  matplotlib,
+  seaborn,
+  tqdm,
+  sortedcontainers,
+  dill,
+  casadi,
+}:
+
+buildPythonPackage rec {
+  pname = "aerosandbox";
+  version = "4.2.5";
+  format = "wheel";
+
+  src = fetchPypi {
+    pname = "AeroSandbox";
+    inherit version format;
+
+    python = "py3";
+    dist = "py3";
+    hash = "sha256-9WxeXmcOZpKpNn8r6REudQlDRXavym52tvKajYJIfXA=";
+  };
+
+  build-system = [ setuptools ];
+  dependencies = [
+    numpy
+    scipy
+    pandas
+    matplotlib
+    seaborn
+    tqdm
+    sortedcontainers
+    dill
+    casadi
+  ];
+
+  pythonImportsCheck = [ "aerosandbox" ];
+
+  meta = {
+    description = "Aircraft design optimization made fast through modern automatic differentiation";
+    homepage = "https://peterdsharpe.github.io/AeroSandbox";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/aesara/default.nix b/pkgs/development/python-modules/aesara/default.nix
index 589799c1b848f..385ec7ed52595 100644
--- a/pkgs/development/python-modules/aesara/default.nix
+++ b/pkgs/development/python-modules/aesara/default.nix
@@ -1,32 +1,35 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, cons
-, cython
-, etuples
-, fetchFromGitHub
-, filelock
-, hatch-vcs
-, hatchling
-, jax
-, jaxlib
-, logical-unification
-, minikanren
-, numba
-, numba-scipy
-, numpy
-, pytestCheckHook
-, pythonOlder
-, scipy
-, typing-extensions
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cons,
+  cython,
+  etuples,
+  fetchFromGitHub,
+  filelock,
+  hatch-vcs,
+  hatchling,
+  jax,
+  jaxlib,
+  logical-unification,
+  minikanren,
+  numba,
+  numba-scipy,
+  numpy,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  scipy,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "aesara";
   version = "2.9.3";
-  format = "pyproject";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  # Python 3.12 is not supported: https://github.com/aesara-devs/aesara/issues/1520
+  disabled = pythonOlder "3.8" || pythonAtLeast "3.12";
 
   src = fetchFromGitHub {
     owner = "aesara-devs";
@@ -35,13 +38,13 @@ buildPythonPackage rec {
     hash = "sha256-aO0+O7Ts9phsV4ghunNolxfAruGBbC+tHjVkmFedcCI=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     cython
     hatch-vcs
     hatchling
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cons
     etuples
     filelock
@@ -62,16 +65,15 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "--durations=50" ""
+      --replace-fail "--durations=50" "" \
+      --replace-fail "hatch-vcs >=0.3.0,<0.4.0" "hatch-vcs"
   '';
 
   preBuild = ''
     export HOME=$(mktemp -d)
   '';
 
-  pythonImportsCheck = [
-    "aesara"
-  ];
+  pythonImportsCheck = [ "aesara" ];
 
   disabledTestPaths = [
     # Don't run the most compute-intense tests
@@ -81,12 +83,23 @@ buildPythonPackage rec {
     "tests/sparse/sandbox/"
     # JAX is not available on all platform and often broken
     "tests/link/jax/"
+
+    # 2024-04-27: The current nixpkgs numba version is too recent and incompatible with aesara 2.9.3
+    "tests/link/numba/"
   ];
 
   disabledTests = [
     # Disable all benchmark tests
     "test_scan_multiple_output"
     "test_logsumexp_benchmark"
+
+    # TypeError: exceptions must be derived from Warning, not <class 'NoneType'>
+    "test_api_deprecation_warning"
+    # AssertionError: assert ['Elemwise{Co..._i{0} 0', ...] == ['Elemwise{Co..._i{0} 0', ...]
+    # At index 3 diff: '| |Gemv{inplace} d={0: [0]} 2' != '| |CGemv{inplace} d={0: [0]} 2'
+    "test_debugprint"
+    # ValueError: too many values to unpack (expected 3)
+    "test_ExternalCOp_c_code_cache_version"
   ];
 
   meta = with lib; {
@@ -95,6 +108,6 @@ buildPythonPackage rec {
     changelog = "https://github.com/aesara-devs/aesara/releases/tag/rel-${version}";
     license = licenses.bsd3;
     maintainers = with maintainers; [ Etjean ];
-    broken = (stdenv.isLinux && stdenv.isAarch64);
+    broken = (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64);
   };
 }
diff --git a/pkgs/development/python-modules/aesedb/default.nix b/pkgs/development/python-modules/aesedb/default.nix
index fda6d316162af..e4c377895e43a 100644
--- a/pkgs/development/python-modules/aesedb/default.nix
+++ b/pkgs/development/python-modules/aesedb/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, aiowinreg
-, buildPythonPackage
-, colorama
-, fetchFromGitHub
-, pycryptodomex
-, pythonOlder
-, setuptools
-, tqdm
-, unicrypto
+{
+  lib,
+  aiowinreg,
+  buildPythonPackage,
+  colorama,
+  fetchFromGitHub,
+  pycryptodomex,
+  pythonOlder,
+  setuptools,
+  tqdm,
+  unicrypto,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-nYuMWE03Rsw1XuD/bxccpu8rddeXgS/EKJcO1VBLTLU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiowinreg
@@ -39,9 +38,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aesedb"
-  ];
+  pythonImportsCheck = [ "aesedb" ];
 
   meta = with lib; {
     description = "Parser for JET databases";
diff --git a/pkgs/development/python-modules/aetcd/default.nix b/pkgs/development/python-modules/aetcd/default.nix
index 8a2652450cd1c..77cd49ad80295 100644
--- a/pkgs/development/python-modules/aetcd/default.nix
+++ b/pkgs/development/python-modules/aetcd/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, grpcio
-, protobuf
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  grpcio,
+  protobuf,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -48,9 +49,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aetcd"
-  ];
+  pythonImportsCheck = [ "aetcd" ];
 
   disabledTestPaths = [
     # Tests require a running ectd instance
diff --git a/pkgs/development/python-modules/afdko/default.nix b/pkgs/development/python-modules/afdko/default.nix
index ed934eab350bc..a0b9efec09c1e 100644
--- a/pkgs/development/python-modules/afdko/default.nix
+++ b/pkgs/development/python-modules/afdko/default.nix
@@ -1,33 +1,34 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, fonttools
-, defcon
-, lxml
-, fs
-, unicodedata2
-, zopfli
-, brotlipy
-, fontpens
-, brotli
-, fontmath
-, mutatormath
-, booleanoperations
-, ufoprocessor
-, ufonormalizer
-, tqdm
-, setuptools-scm
-, scikit-build
-, cmake
-, ninja
-, antlr4_9
-, libxml2
-, pytestCheckHook
-# Enables some expensive tests, useful for verifying an update
-, runAllTests ? false
-, afdko
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  fonttools,
+  defcon,
+  lxml,
+  fs,
+  unicodedata2,
+  zopfli,
+  brotlipy,
+  fontpens,
+  brotli,
+  fontmath,
+  mutatormath,
+  booleanoperations,
+  ufoprocessor,
+  ufonormalizer,
+  tqdm,
+  setuptools-scm,
+  scikit-build,
+  cmake,
+  ninja,
+  antlr4_9,
+  libxml2,
+  pytestCheckHook,
+  # Enables some expensive tests, useful for verifying an update
+  runAllTests ? false,
+  afdko,
 }:
 
 buildPythonPackage rec {
@@ -80,11 +81,11 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     booleanoperations
     fonttools
-    lxml           # fonttools[lxml], defcon[lxml] extra
-    fs             # fonttools[ufo] extra
-    unicodedata2   # fonttools[unicode] extra
-    brotlipy       # fonttools[woff] extra
-    zopfli         # fonttools[woff] extra
+    lxml # fonttools[lxml], defcon[lxml] extra
+    fs # fonttools[ufo] extra
+    unicodedata2 # fonttools[unicode] extra
+    brotlipy # fonttools[woff] extra
+    zopfli # fonttools[woff] extra
     fontpens
     brotli
     defcon
@@ -107,23 +108,32 @@ buildPythonPackage rec {
     rm -rf _skbuild
   '';
 
-  disabledTests = lib.optionals (!runAllTests) [
-    # Disable slow tests, reduces test time ~25 %
-    "test_report"
-    "test_post_overflow"
-    "test_cjk"
-    "test_extrapolate"
-    "test_filename_without_dir"
-    "test_overwrite"
-    "test_options"
-  ] ++ lib.optionals (stdenv.hostPlatform.isAarch || stdenv.hostPlatform.isRiscV) [
-    # unknown reason so far
-    # https://github.com/adobe-type-tools/afdko/issues/1425
-    "test_spec"
-  ] ++ lib.optionals (stdenv.hostPlatform.isi686) [
-    "test_dump_option"
-    "test_type1mm_inputs"
-  ];
+  disabledTests =
+    [
+      # broke in the fontforge 4.51 -> 4.53 update
+      "test_glyphs_2_7"
+      "test_hinting_data"
+      "test_waterfallplot"
+    ]
+    ++ lib.optionals (!runAllTests) [
+      # Disable slow tests, reduces test time ~25 %
+      "test_report"
+      "test_post_overflow"
+      "test_cjk"
+      "test_extrapolate"
+      "test_filename_without_dir"
+      "test_overwrite"
+      "test_options"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isAarch || stdenv.hostPlatform.isRiscV) [
+      # unknown reason so far
+      # https://github.com/adobe-type-tools/afdko/issues/1425
+      "test_spec"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isi686) [
+      "test_dump_option"
+      "test_type1mm_inputs"
+    ];
 
   passthru.tests = {
     fullTestsuite = afdko.override { runAllTests = true; };
diff --git a/pkgs/development/python-modules/affine/default.nix b/pkgs/development/python-modules/affine/default.nix
index 4f121cbdbf944..50ad44f34cc16 100644
--- a/pkgs/development/python-modules/affine/default.nix
+++ b/pkgs/development/python-modules/affine/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, flit-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  flit-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,20 +20,15 @@ buildPythonPackage rec {
     hash = "sha256-ok2BjWqDbBMZdtIvjCe408oy0K9kwdjSnet7r6TaHuo=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     changelog = "https://github.com/rasterio/affine/blob/${version}/CHANGES.txt";
     description = "Matrices describing affine transformation of the plane";
     license = licenses.bsd3;
     homepage = "https://github.com/rasterio/affine";
-    maintainers = with maintainers; [ mredaelli ];
+    maintainers = with maintainers; [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/afsapi/default.nix b/pkgs/development/python-modules/afsapi/default.nix
index d971bc5b5e039..604452336ffec 100644
--- a/pkgs/development/python-modules/afsapi/default.nix
+++ b/pkgs/development/python-modules/afsapi/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, lxml
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxml,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-eE5BsXNtSU6YUhRn4/SKpMrqaYf8tyfLKdxxGOmNJ9I=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -37,13 +36,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "async_tests.py"
-  ];
+  pytestFlagsArray = [ "async_tests.py" ];
 
-  pythonImportsCheck = [
-    "afsapi"
-  ];
+  pythonImportsCheck = [ "afsapi" ];
 
   meta = with lib; {
     description = "Python implementation of the Frontier Silicon API";
diff --git a/pkgs/development/python-modules/agate-dbf/default.nix b/pkgs/development/python-modules/agate-dbf/default.nix
index 1f3055b4600dd..38e7f713f91cb 100644
--- a/pkgs/development/python-modules/agate-dbf/default.nix
+++ b/pkgs/development/python-modules/agate-dbf/default.nix
@@ -1,21 +1,32 @@
-{ lib, fetchPypi, buildPythonPackage, agate, dbf, dbfread }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  agate,
+  dbf,
+  dbfread,
+}:
 
 buildPythonPackage rec {
-    pname = "agate-dbf";
-    version = "0.2.3";
-    format = "setuptools";
+  pname = "agate-dbf";
+  version = "0.2.3";
+  format = "setuptools";
 
-    propagatedBuildInputs = [ agate dbf dbfread ];
+  propagatedBuildInputs = [
+    agate
+    dbf
+    dbfread
+  ];
 
-    src = fetchPypi {
-      inherit pname version;
-      sha256 = "sha256-mKK1N1cTbMdNwpflniEB009tSPQfdBVrtsDeJruiqj8=";
-    };
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-mKK1N1cTbMdNwpflniEB009tSPQfdBVrtsDeJruiqj8=";
+  };
 
-    meta = with lib; {
-      description = "Adds read support for dbf files to agate";
-      homepage    = "https://github.com/wireservice/agate-dbf";
-      license     = with licenses; [ mit ];
-      maintainers = with maintainers; [ vrthra ];
-    };
+  meta = with lib; {
+    description = "Adds read support for dbf files to agate";
+    homepage = "https://github.com/wireservice/agate-dbf";
+    license = with licenses; [ mit ];
+    maintainers = [ ];
+  };
 }
diff --git a/pkgs/development/python-modules/agate-excel/default.nix b/pkgs/development/python-modules/agate-excel/default.nix
index 64b4718a2bc23..5e346cbb95077 100644
--- a/pkgs/development/python-modules/agate-excel/default.nix
+++ b/pkgs/development/python-modules/agate-excel/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, agate
-, openpyxl
-, xlrd
-, olefile
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  agate,
+  openpyxl,
+  xlrd,
+  olefile,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,19 +29,15 @@ buildPythonPackage rec {
     olefile
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "agate"
-  ];
+  pythonImportsCheck = [ "agate" ];
 
   meta = with lib; {
     description = "Adds read support for excel files to agate";
     homepage = "https://github.com/wireservice/agate-excel";
     changelog = "https://github.com/wireservice/agate-excel/blob/${version}/CHANGELOG.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ vrthra ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/agate-sql/default.nix b/pkgs/development/python-modules/agate-sql/default.nix
index 70cb2fbda6889..5d63ef863e3d5 100644
--- a/pkgs/development/python-modules/agate-sql/default.nix
+++ b/pkgs/development/python-modules/agate-sql/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, isPy27
-, fetchPypi
-, agate
-, sqlalchemy
-, crate
-, pytestCheckHook
-, geojson
+{
+  lib,
+  buildPythonPackage,
+  isPy27,
+  fetchPypi,
+  agate,
+  sqlalchemy,
+  crate,
+  pytestCheckHook,
+  geojson,
 }:
 
 buildPythonPackage rec {
@@ -21,16 +22,23 @@ buildPythonPackage rec {
     hash = "sha256-mxswKEpXP9QWdZQ3Jz3MXIECK98vrLJLSqAppir9U7A=";
   };
 
-  propagatedBuildInputs = [ agate sqlalchemy ];
+  propagatedBuildInputs = [
+    agate
+    sqlalchemy
+  ];
 
-  nativeCheckInputs = [ crate geojson pytestCheckHook ];
+  nativeCheckInputs = [
+    crate
+    geojson
+    pytestCheckHook
+  ];
 
   pythonImportsCheck = [ "agatesql" ];
 
   meta = with lib; {
-    description = "Adds SQL read/write support to agate.";
+    description = "Adds SQL read/write support to agate";
     homepage = "https://github.com/wireservice/agate-sql";
     license = with licenses; [ mit ];
-    maintainers = with maintainers; [ vrthra ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/agate/default.nix b/pkgs/development/python-modules/agate/default.nix
index 48a30b9a40efb..00bbf90ffbe68 100644
--- a/pkgs/development/python-modules/agate/default.nix
+++ b/pkgs/development/python-modules/agate/default.nix
@@ -1,39 +1,37 @@
-{ lib
-, babel
-, buildPythonPackage
-, cssselect
-, fetchFromGitHub
-, glibcLocales
-, isodate
-, leather
-, lxml
-, parsedatetime
-, pyicu
-, pynose
-, python-slugify
-, pythonOlder
-, pytimeparse
-, pytz
-, setuptools
+{
+  lib,
+  babel,
+  buildPythonPackage,
+  cssselect,
+  fetchFromGitHub,
+  glibcLocales,
+  isodate,
+  leather,
+  lxml,
+  parsedatetime,
+  pyicu,
+  pytestCheckHook,
+  python-slugify,
+  pythonOlder,
+  pytimeparse,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "agate";
-  version = "1.9.1";
+  version = "1.11.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "wireservice";
     repo = "agate";
     rev = "refs/tags/${version}";
-    hash = "sha256-I7jvZA/m06kUuUcfglySaroDbJ5wbgiF2lb84EFPmpw=";
+    hash = "sha256-JVBf21as4DNmGT84dSG+54RIU6PbRBoLPSsWj2FGXxc=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     babel
@@ -48,24 +46,17 @@ buildPythonPackage rec {
     cssselect
     glibcLocales
     lxml
-    pynose
     pyicu
-    pytz
+    pytestCheckHook
   ];
 
-  checkPhase = ''
-    LC_ALL="en_US.UTF-8" nosetests tests
-  '';
-
-  pythonImportsCheck = [
-    "agate"
-  ];
+  pythonImportsCheck = [ "agate" ];
 
   meta = with lib; {
     description = "Python data analysis library that is optimized for humans instead of machines";
     homepage = "https://github.com/wireservice/agate";
     changelog = "https://github.com/wireservice/agate/blob/${version}/CHANGELOG.rst";
     license = with licenses; [ mit ];
-    maintainers = with maintainers; [ vrthra ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/agent-py/default.nix b/pkgs/development/python-modules/agent-py/default.nix
index 584feec88dde2..eb1702d32709a 100644
--- a/pkgs/development/python-modules/agent-py/default.nix
+++ b/pkgs/development/python-modules/agent-py/default.nix
@@ -1,4 +1,12 @@
-{ aiohttp, buildPythonPackage, fetchPypi, isPy3k, lib, python, requests }:
+{
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  lib,
+  python,
+  requests,
+}:
 
 buildPythonPackage rec {
   pname = "agent-py";
@@ -12,14 +20,17 @@ buildPythonPackage rec {
     sha256 = "1hx88m8b8kfb2gm6hii5ldjv7hlvqf99cz0w2vj0d0grrxcbn5cz";
   };
 
-  propagatedBuildInputs = [ requests aiohttp ];
+  propagatedBuildInputs = [
+    requests
+    aiohttp
+  ];
 
   checkPhase = ''
     ${python.interpreter} tests/test_agent.py
   '';
 
   meta = with lib; {
-    description = "A python wrapper around the Agent REST API.";
+    description = "Python wrapper around the Agent REST API";
     homepage = "https://github.com/ispysoftware/agent-py";
     license = licenses.asl20;
     maintainers = with maintainers; [ jamiemagee ];
diff --git a/pkgs/development/python-modules/aggdraw/default.nix b/pkgs/development/python-modules/aggdraw/default.nix
index a83de3540fcd3..06e092b4a6057 100644
--- a/pkgs/development/python-modules/aggdraw/default.nix
+++ b/pkgs/development/python-modules/aggdraw/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, packaging
-, setuptools
-, pkgconfig
-, freetype
-, pytest
-, python
-, pillow
-, numpy
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  packaging,
+  setuptools,
+  pkgconfig,
+  freetype,
+  pytest,
+  python,
+  pillow,
+  numpy,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
     pkgconfig
   ];
 
-  buildInputs = [
-    freetype
-  ];
+  buildInputs = [ freetype ];
 
   nativeCheckInputs = [
     numpy
diff --git a/pkgs/development/python-modules/ago/default.nix b/pkgs/development/python-modules/ago/default.nix
index ad095c441db26..ba9fb23a2ce93 100644
--- a/pkgs/development/python-modules/ago/default.nix
+++ b/pkgs/development/python-modules/ago/default.nix
@@ -1,12 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-
-, pythonOlder
-
-, pytestCheckHook
-
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -14,20 +11,14 @@ buildPythonPackage rec {
   version = "0.0.95";
   pyproject = true;
 
-  disabled = pythonOlder "3.3";
-
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-0gEPXqw99UTsSOwRYQLgaFkaNFsaWA8ylz24pQX8p0Q=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "ago" ];
 
diff --git a/pkgs/development/python-modules/ahocorasick-rs/default.nix b/pkgs/development/python-modules/ahocorasick-rs/default.nix
new file mode 100644
index 0000000000000..63c849e3537b3
--- /dev/null
+++ b/pkgs/development/python-modules/ahocorasick-rs/default.nix
@@ -0,0 +1,52 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  rustPlatform,
+  pytestCheckHook,
+  pyahocorasick,
+  hypothesis,
+  pytest-benchmark,
+}:
+
+buildPythonPackage rec {
+  pname = "ahocorasick-rs";
+  version = "0.22.0";
+
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit version;
+    pname = "ahocorasick_rs";
+    hash = "sha256-lzRwODlJlymMSih3CqNIeR+HrUbgVhroM1JuHFfW848=";
+  };
+
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit src;
+    name = "${pname}-${version}";
+    hash = "sha256-CIt/ChNcoqKln6PgeTGp9pfmIWlJj+c5SCPtBhsnT6U=";
+  };
+
+  nativeBuildInputs = with rustPlatform; [
+    maturinBuildHook
+    cargoSetupHook
+  ];
+
+  nativeCheckInputs = [
+    pytest-benchmark
+    pytestCheckHook
+    pyahocorasick
+    hypothesis
+  ];
+
+  pythonImportsCheck = [ "ahocorasick_rs" ];
+
+  meta = with lib; {
+    description = "Fast Aho-Corasick algorithm for Python";
+    homepage = "https://github.com/G-Research/ahocorasick_rs/";
+    changelog = "https://github.com/G-Research/ahocorasick_rs/blob/${version}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ erictapen ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/aigpy/default.nix b/pkgs/development/python-modules/aigpy/default.nix
index ef0e5f13273ac..fb331e1633f4f 100644
--- a/pkgs/development/python-modules/aigpy/default.nix
+++ b/pkgs/development/python-modules/aigpy/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mutagen
-, requests
-, colorama
-, prettytable
-, pycrypto
-, pydub
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mutagen,
+  requests,
+  colorama,
+  prettytable,
+  pycrypto,
+  pydub,
 }:
 
 buildPythonPackage rec {
@@ -16,14 +17,21 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-1kQced6YdC/wvegqFVhZfej4+4aemGXvKysKjejP13w=";
+    hash = "sha256-1kQced6YdC/wvegqFVhZfej4+4aemGXvKysKjejP13w=";
   };
 
-  propagatedBuildInputs = [ mutagen requests colorama prettytable pycrypto pydub ];
+  propagatedBuildInputs = [
+    mutagen
+    requests
+    colorama
+    prettytable
+    pycrypto
+    pydub
+  ];
 
   meta = {
     homepage = "https://github.com/AIGMix/AIGPY";
-    description = "A python library with miscellaneous tools";
+    description = "Python library with miscellaneous tools";
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.misterio77 ];
     platforms = lib.platforms.all;
diff --git a/pkgs/development/python-modules/ailment/default.nix b/pkgs/development/python-modules/ailment/default.nix
index 5b496bf9c45d0..25ed8e73ec101 100644
--- a/pkgs/development/python-modules/ailment/default.nix
+++ b/pkgs/development/python-modules/ailment/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "ailment";
-  version = "9.2.101";
+  version = "9.2.119";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "angr";
     repo = "ailment";
     rev = "refs/tags/v${version}";
-    hash = "sha256-3JPoO9GpnVEc4UQhhXxpj53PwK5eRsy6Ikt4qw5jGa8=";
+    hash = "sha256-mVzgwCzCba4xNJMbrDTRRHFUQ48tKihm3VGqpFq6Heo=";
   };
 
   build-system = [ setuptools ];
@@ -31,7 +31,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "ailment" ];
 
   meta = with lib; {
-    description = "The angr Intermediate Language";
+    description = "Angr Intermediate Language";
     homepage = "https://github.com/angr/ailment";
     license = with licenses; [ bsd2 ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/development/python-modules/aio-geojson-client/default.nix b/pkgs/development/python-modules/aio-geojson-client/default.nix
index 04dfa69f8912a..4034699d2d295 100644
--- a/pkgs/development/python-modules/aio-geojson-client/default.nix
+++ b/pkgs/development/python-modules/aio-geojson-client/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, geojson
-, haversine
-, mock
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  geojson,
+  haversine,
+  mock,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -45,9 +44,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aio_geojson_client"
-  ];
+  pythonImportsCheck = [ "aio_geojson_client" ];
 
   meta = with lib; {
     description = "Python module for accessing GeoJSON feeds";
diff --git a/pkgs/development/python-modules/aio-geojson-generic-client/default.nix b/pkgs/development/python-modules/aio-geojson-generic-client/default.nix
index 343f47d2aca40..c47ea3e7cf576 100644
--- a/pkgs/development/python-modules/aio-geojson-generic-client/default.nix
+++ b/pkgs/development/python-modules/aio-geojson-generic-client/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, aio-geojson-client
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, geojson
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, pytz
-, setuptools
+{
+  lib,
+  aio-geojson-client,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  geojson,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -30,7 +30,6 @@ buildPythonPackage rec {
   __darwinAllowLocalNetworking = true;
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -52,9 +51,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aio_geojson_generic_client"
-  ];
+  pythonImportsCheck = [ "aio_geojson_generic_client" ];
 
   meta = with lib; {
     description = "Python library for accessing GeoJSON feeds";
diff --git a/pkgs/development/python-modules/aio-geojson-geonetnz-quakes/default.nix b/pkgs/development/python-modules/aio-geojson-geonetnz-quakes/default.nix
index 65973321f95b8..f9dd37f5653a0 100644
--- a/pkgs/development/python-modules/aio-geojson-geonetnz-quakes/default.nix
+++ b/pkgs/development/python-modules/aio-geojson-geonetnz-quakes/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, aio-geojson-client
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pytz
-, pythonOlder
-, setuptools
+{
+  lib,
+  aio-geojson-client,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pytz,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-8OpmA3yHjUY+N5Obri4RWeuJiW916xGSWUYUgdpmjkw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aio-geojson-client
@@ -43,9 +42,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aio_geojson_geonetnz_quakes"
-  ];
+  pythonImportsCheck = [ "aio_geojson_geonetnz_quakes" ];
 
   meta = with lib; {
     description = "Python module for accessing the GeoNet NZ Quakes GeoJSON feeds";
diff --git a/pkgs/development/python-modules/aio-geojson-geonetnz-volcano/default.nix b/pkgs/development/python-modules/aio-geojson-geonetnz-volcano/default.nix
index 35e558fdc2625..6050107c9acfd 100644
--- a/pkgs/development/python-modules/aio-geojson-geonetnz-volcano/default.nix
+++ b/pkgs/development/python-modules/aio-geojson-geonetnz-volcano/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, aio-geojson-client
-, aiohttp
-, aioresponses
-, mock
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytest-xdist
-, pytestCheckHook
-, pytz
-, pythonOlder
-, setuptools
+{
+  lib,
+  aio-geojson-client,
+  aiohttp,
+  aioresponses,
+  mock,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytest-xdist,
+  pytestCheckHook,
+  pytz,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     hash = "sha256-ZmGDO9EROFMlxdj5txNh719M+3l/0jRFbB2h2AyZAdI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aio-geojson-client
@@ -47,9 +46,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aio_geojson_geonetnz_volcano"
-  ];
+  pythonImportsCheck = [ "aio_geojson_geonetnz_volcano" ];
 
   meta = with lib; {
     description = "Python module for accessing the GeoNet NZ Volcanic GeoJSON feeds";
diff --git a/pkgs/development/python-modules/aio-geojson-nsw-rfs-incidents/default.nix b/pkgs/development/python-modules/aio-geojson-nsw-rfs-incidents/default.nix
index 94724e800f58e..2341e515a01ea 100644
--- a/pkgs/development/python-modules/aio-geojson-nsw-rfs-incidents/default.nix
+++ b/pkgs/development/python-modules/aio-geojson-nsw-rfs-incidents/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, aio-geojson-client
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, pytz
-, setuptools
+{
+  lib,
+  aio-geojson-client,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-HksiKfXhLASAgU81x7YiOXFmBLIkqJ9ldWLLY1ZbZlk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aio-geojson-client
@@ -43,9 +42,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aio_geojson_nsw_rfs_incidents"
-  ];
+  pythonImportsCheck = [ "aio_geojson_nsw_rfs_incidents" ];
 
   meta = with lib; {
     description = "Python module for accessing the NSW Rural Fire Service incidents feeds";
diff --git a/pkgs/development/python-modules/aio-geojson-usgs-earthquakes/default.nix b/pkgs/development/python-modules/aio-geojson-usgs-earthquakes/default.nix
index 339481624a359..55a67843f1e93 100644
--- a/pkgs/development/python-modules/aio-geojson-usgs-earthquakes/default.nix
+++ b/pkgs/development/python-modules/aio-geojson-usgs-earthquakes/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, aio-geojson-client
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pytz
-, pythonOlder
-, setuptools
+{
+  lib,
+  aio-geojson-client,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pytz,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-Q9vBy5R5N5ihJdSMALo88qVYcFVs2/33lYRPdLej4S8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aio-geojson-client
@@ -37,18 +36,14 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   checkInputs = [
     aioresponses
     pytest-asyncio
   ];
 
-  pythonImportsCheck = [
-    "aio_geojson_usgs_earthquakes"
-  ];
+  pythonImportsCheck = [ "aio_geojson_usgs_earthquakes" ];
 
   meta = with lib; {
     description = "Python module for accessing the U.S. Geological Survey Earthquake Hazards Program feeds";
diff --git a/pkgs/development/python-modules/aio-georss-client/default.nix b/pkgs/development/python-modules/aio-georss-client/default.nix
index 6130564b421c9..7bdf88b7654a6 100644
--- a/pkgs/development/python-modules/aio-georss-client/default.nix
+++ b/pkgs/development/python-modules/aio-georss-client/default.nix
@@ -1,40 +1,39 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, dateparser
-, fetchFromGitHub
-, haversine
-, mock
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
-, xmltodict
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  dateparser,
+  fetchFromGitHub,
+  haversine,
+  mock,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
   pname = "aio-georss-client";
-  version = "0.12";
+  version = "0.13";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "exxamalte";
     repo = "python-aio-georss-client";
     rev = "refs/tags/v${version}";
-    hash = "sha256-qs0/TkGZlwsucnkgCBco2Pqr9mf5fZHY7ikMBKff+gA=";
+    hash = "sha256-2qo5G/L2yh/6IXswkOyrCYnBNLDLx3EOpR53lnnpNOo=";
   };
 
   __darwinAllowLocalNetworking = true;
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     haversine
     xmltodict
@@ -49,9 +48,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aio_georss_client"
-  ];
+  pythonImportsCheck = [ "aio_georss_client" ];
 
   meta = with lib; {
     description = "Python library for accessing GeoRSS feeds";
diff --git a/pkgs/development/python-modules/aio-georss-gdacs/default.nix b/pkgs/development/python-modules/aio-georss-gdacs/default.nix
index 52c5c79a198eb..c0741c8ff67cd 100644
--- a/pkgs/development/python-modules/aio-georss-gdacs/default.nix
+++ b/pkgs/development/python-modules/aio-georss-gdacs/default.nix
@@ -1,38 +1,37 @@
-{ lib
-, aio-georss-client
-, aioresponses
-, buildPythonPackage
-, dateparser
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  aio-georss-client,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aio-georss-gdacs";
-  version = "0.9";
+  version = "0.10";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "exxamalte";
     repo = "python-aio-georss-gdacs";
     rev = "refs/tags/v${version}";
-    hash = "sha256-B0qVCh2u0WleF0iv0o1/d5UIS2kbYCAqCgmNHyCpJ8Q=";
+    hash = "sha256-PhOI0v3dKTNGZLk1/5wIgvQkm4Cwfr1UYilr5rW7e3g=";
   };
 
   __darwinAllowLocalNetworking = true;
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aio-georss-client
-    dateparser
+    python-dateutil
   ];
 
   nativeCheckInputs = [
@@ -41,9 +40,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aio_georss_gdacs"
-  ];
+  pythonImportsCheck = [ "aio_georss_gdacs" ];
 
   meta = with lib; {
     description = "Python library for accessing GeoRSS feeds";
diff --git a/pkgs/development/python-modules/aio-pika/default.nix b/pkgs/development/python-modules/aio-pika/default.nix
index 10c311c220c9d..0b00a8130dae6 100644
--- a/pkgs/development/python-modules/aio-pika/default.nix
+++ b/pkgs/development/python-modules/aio-pika/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "aio-pika";
-  version = "9.4.1";
+  version = "9.4.3";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "mosquito";
     repo = "aio-pika";
     rev = "refs/tags/${version}";
-    hash = "sha256-aRXYFW4fl3iXH3bwP30+TllRm4BkIUcGMX/lNfhiqjo=";
+    hash = "sha256-lzBBcfWzhdT2v9RX5C+VWWSxsBCB7EOeCjm6wUrXGtA=";
   };
 
   build-system = [ poetry-core ];
diff --git a/pkgs/development/python-modules/aioairq/default.nix b/pkgs/development/python-modules/aioairq/default.nix
index 5be97a3d9c9df..274b25202a3a7 100644
--- a/pkgs/development/python-modules/aioairq/default.nix
+++ b/pkgs/development/python-modules/aioairq/default.nix
@@ -1,35 +1,49 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pycryptodome
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pycryptodome,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aioairq";
-  version = "0.3.2";
-  format = "setuptools";
+  version = "0.4.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "CorantGmbH";
-    repo = pname;
+    repo = "aioairq";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Sau0Ih+9WRChbztl8yjXVWy4/QxyllQKOPslbZroBeQ=";
+    hash = "sha256-ppjhGBAoA5iV+ZfUKkUCNJRYN82JtclRe36pbe85i5w=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     aiohttp
     pycryptodome
   ];
 
   # Module has no tests
-  doCheck = false;
+  #doCheck = false;
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "aioairq" ];
 
-  pythonImportsCheck = [
-    "aioairq"
+  disabledTestPaths = [
+    # Tests require network access
+    "tests/test_core_on_device.py"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/aioairzone-cloud/default.nix b/pkgs/development/python-modules/aioairzone-cloud/default.nix
index c6c6e11e293fe..06964c3c9cb93 100644
--- a/pkgs/development/python-modules/aioairzone-cloud/default.nix
+++ b/pkgs/development/python-modules/aioairzone-cloud/default.nix
@@ -9,16 +9,16 @@
 
 buildPythonPackage rec {
   pname = "aioairzone-cloud";
-  version = "0.4.7";
+  version = "0.6.5";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "Noltari";
     repo = "aioairzone-cloud";
     rev = "refs/tags/${version}";
-    hash = "sha256-DIWRYGDdK/wq1TrPSo9I1oZv5jX4rY4z+u7CTwJtyts=";
+    hash = "sha256-+F1kcs3XBBRNSmiuobFIFHsZOHEFjwYq0oxkHViuWXw=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/aioairzone/default.nix b/pkgs/development/python-modules/aioairzone/default.nix
index 905232c065a36..34bdc5b65dd16 100644
--- a/pkgs/development/python-modules/aioairzone/default.nix
+++ b/pkgs/development/python-modules/aioairzone/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aioairzone";
-  version = "0.7.6";
+  version = "0.9.3";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -17,30 +18,23 @@ buildPythonPackage rec {
     owner = "Noltari";
     repo = "aioairzone";
     rev = "refs/tags/${version}";
-    hash = "sha256-99Km1zizAA0BF4ZlLmKOBoOQzKS/QdWpWC9dzg2s3lU=";
+    hash = "sha256-ThmHiZmXbpzTJ0JBm6gVsxZgmdzRqQfjNrJSFbwOIdU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  dependencies = [ aiohttp ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aioairzone"
-  ];
+  pythonImportsCheck = [ "aioairzone" ];
 
   meta = with lib; {
     description = "Module to control AirZone devices";
     homepage = "https://github.com/Noltari/aioairzone";
     changelog = "https://github.com/Noltari/aioairzone/releases/tag/${version}";
-    license = with licenses; [ asl20 ];
+    license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
   };
 }
-
diff --git a/pkgs/development/python-modules/aioaladdinconnect/default.nix b/pkgs/development/python-modules/aioaladdinconnect/default.nix
deleted file mode 100644
index 5617eec6b534d..0000000000000
--- a/pkgs/development/python-modules/aioaladdinconnect/default.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ lib
-, aioboto3
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-}:
-
-buildPythonPackage rec {
-  pname = "aioaladdinconnect";
-  version = "0.2.0";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.7";
-
-  src = fetchPypi {
-    pname = "AIOAladdinConnect";
-    inherit version;
-    hash = "sha256-5vfw8SU3lWlPoMAR+byf8jpZrGmXTPoeO+DvPByjZnw=";
-  };
-
-  propagatedBuildInputs = [
-    aioboto3
-    aiohttp
-  ];
-
-  # Module has no tests
-  doCheck = false;
-
-  pythonImportsCheck = [
-    "AIOAladdinConnect"
-  ];
-
-  meta = with lib; {
-    description = "Library for controlling Genie garage doors connected to Aladdin Connect devices";
-    homepage = "https://github.com/mkmer/AIOAladdinConnect";
-    changelog = "https://github.com/mkmer/AIOAladdinConnect/releases/tag/${version}";
-    license = with licenses; [ mit ];
-    maintainers = with maintainers; [ fab ];
-  };
-}
diff --git a/pkgs/development/python-modules/aioambient/default.nix b/pkgs/development/python-modules/aioambient/default.nix
index 5646bf02b8a2f..a41e251ac99f5 100644
--- a/pkgs/development/python-modules/aioambient/default.nix
+++ b/pkgs/development/python-modules/aioambient/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, certifi
-, fetchFromGitHub
-, poetry-core
-, pytest-aiohttp
-, pytest-asyncio
-, pytestCheckHook
-, python-engineio
-, python-socketio
-, pythonOlder
-, websockets
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  certifi,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytestCheckHook,
+  python-engineio,
+  python-socketio,
+  pythonOlder,
+  websockets,
 }:
 
 buildPythonPackage rec {
   pname = "aioambient";
-  version = "2024.01.0";
+  version = "2024.08.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -25,12 +26,10 @@ buildPythonPackage rec {
     owner = "bachya";
     repo = "aioambient";
     rev = "refs/tags/${version}";
-    hash = "sha256-eqZVY0L+2BWF7cCXW/VLQYYXNPtUF6tJHQmeZNW1W5o=";
+    hash = "sha256-GedGwG4Lm28BvfSBOGcspUQ3LCmdb2IC2rLifuKGOes=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     aiohttp
@@ -50,13 +49,9 @@ buildPythonPackage rec {
   ];
 
   # Ignore the examples directory as the files are prefixed with test_
-  disabledTestPaths = [
-    "examples/"
-  ];
+  disabledTestPaths = [ "examples/" ];
 
-  pythonImportsCheck = [
-    "aioambient"
-  ];
+  pythonImportsCheck = [ "aioambient" ];
 
   meta = with lib; {
     description = "Python library for the Ambient Weather API";
diff --git a/pkgs/development/python-modules/aioamqp/default.nix b/pkgs/development/python-modules/aioamqp/default.nix
index 8bdc72a019ede..4beaeb6ce2c33 100644
--- a/pkgs/development/python-modules/aioamqp/default.nix
+++ b/pkgs/development/python-modules/aioamqp/default.nix
@@ -1,39 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pamqp
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pamqp,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aioamqp";
   version = "0.15.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "Polyconseil";
-    repo = pname;
-    rev = "${pname}-${version}";
+    repo = "aioamqp";
+    rev = "aioamqp-${version}";
     hash = "sha256-fssPknJn1tLtzb+2SFyZjfdhUdD8jqkwlInoi5uaplk=";
   };
 
-  propagatedBuildInputs = [
-    pamqp
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ pamqp ];
 
   # Tests assume rabbitmq server running
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aioamqp"
-  ];
+  pythonImportsCheck = [ "aioamqp" ];
 
   meta = with lib; {
     description = "AMQP implementation using asyncio";
     homepage = "https://github.com/polyconseil/aioamqp";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/aioapcaccess/default.nix b/pkgs/development/python-modules/aioapcaccess/default.nix
index 6d6c709552519..104e09fac8ba3 100644
--- a/pkgs/development/python-modules/aioapcaccess/default.nix
+++ b/pkgs/development/python-modules/aioapcaccess/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aioapcaccess"
-  ];
+  pythonImportsCheck = [ "aioapcaccess" ];
 
   meta = with lib; {
     description = "Module for working with apcaccess";
diff --git a/pkgs/development/python-modules/aioapns/default.nix b/pkgs/development/python-modules/aioapns/default.nix
index fe6b4192014ae..6bb210a1efa0f 100644
--- a/pkgs/development/python-modules/aioapns/default.nix
+++ b/pkgs/development/python-modules/aioapns/default.nix
@@ -1,28 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, h2
-, pyjwt
-, pyopenssl
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  h2,
+  pyjwt,
+  pyopenssl,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aioapns";
-  version = "3.2";
+  version = "3.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-QPayQogW97saMmaPUP5x0CiXd6Qptg/OROigi5ASNQg=";
+    hash = "sha256-bfQpcp/oEBpFu9ywog8CFGGHR8Z5kL6l2O2nzZXaN90=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     h2
@@ -33,15 +32,13 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aioapns"
-  ];
+  pythonImportsCheck = [ "aioapns" ];
 
   meta = with lib; {
-    description = "An efficient APNs Client Library";
+    description = "Efficient APNs Client Library";
     homepage = "https://github.com/Fatal1ty/aioapns";
     changelog = "https://github.com/Fatal1ty/aioapns/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/aioaquacell/default.nix b/pkgs/development/python-modules/aioaquacell/default.nix
new file mode 100644
index 0000000000000..542dbee66733f
--- /dev/null
+++ b/pkgs/development/python-modules/aioaquacell/default.nix
@@ -0,0 +1,48 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  aiobotocore,
+  aiohttp,
+  attr,
+  aws-request-signer,
+  botocore,
+  requests-aws4auth,
+  pycognito,
+}:
+
+buildPythonPackage rec {
+  pname = "aioaquacell";
+  version = "0.2.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-n2kPD1t5d/nf43rB0q1hNNYdHeaBiadsFWTmu1bYN1A=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    aiohttp
+    aiobotocore
+    attr
+    aws-request-signer
+    botocore
+    requests-aws4auth
+    pycognito
+  ];
+
+  pythonImportsCheck = [ "aioaquacell" ];
+
+  doCheck = false;
+
+  meta = {
+    changelog = "https://github.com/Jordi1990/aioaquacell/releases/tag/v${version}";
+    description = "Asynchronous library to retrieve details of your Aquacell water softener device.";
+    homepage = "https://github.com/Jordi1990/aioaquacell";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ pyrox0 ];
+  };
+}
diff --git a/pkgs/development/python-modules/aioaseko/default.nix b/pkgs/development/python-modules/aioaseko/default.nix
index beea7e05a7505..15822fe46e53c 100644
--- a/pkgs/development/python-modules/aioaseko/default.nix
+++ b/pkgs/development/python-modules/aioaseko/default.nix
@@ -1,47 +1,46 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, pyjwt
+{
+  lib,
+  aiohttp,
+  apischema,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gql,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aioaseko";
-  version = "0.1.1";
-  format = "pyproject";
+  version = "1.0.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "milanmeu";
-    repo = pname;
+    repo = "aioaseko";
     rev = "refs/tags/v${version}";
-    hash = "sha256-bjPl0yrRaTIEEuPV8NbWu2hx/es5bcu2tDBZV+95fUc=";
+    hash = "sha256-jUvpu/lOFKRUwEuYD1zRp0oODjf4AgH84fnGngtv9jw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
-    pyjwt
+    apischema
+    gql
   ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aioaseko"
-  ];
+  pythonImportsCheck = [ "aioaseko" ];
 
   meta = with lib; {
     description = "Module to interact with the Aseko Pool Live API";
     homepage = "https://github.com/milanmeu/aioaseko";
     changelog = "https://github.com/milanmeu/aioaseko/releases/tag/v${version}";
-    license = with licenses; [ lgpl3Plus ];
+    license = licenses.lgpl3Plus;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/aioautomower/default.nix b/pkgs/development/python-modules/aioautomower/default.nix
index 99d8175b62ed2..c3a4ec04b50c0 100644
--- a/pkgs/development/python-modules/aioautomower/default.nix
+++ b/pkgs/development/python-modules/aioautomower/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, freezegun
-, mashumaro
-, poetry-core
-, pyjwt
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, syrupy
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  ical,
+  mashumaro,
+  poetry-core,
+  pyjwt,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  syrupy,
 }:
 
 buildPythonPackage rec {
   pname = "aioautomower";
-  version = "2024.4.0";
+  version = "2024.9.1";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -24,22 +25,21 @@ buildPythonPackage rec {
     owner = "Thomas55555";
     repo = "aioautomower";
     rev = "refs/tags/${version}";
-    hash = "sha256-W6aZdvg+EZKv0pmIaPOBaJaWipq3AENTVAVon/lFuI4=";
+    hash = "sha256-MdsK+QP8YdMceTiNwhuf84KARIHCyn7/g6WKrDB6yCc=";
   };
 
   postPatch = ''
     # Upstream doesn't set a version
     substituteInPlace pyproject.toml \
-      --replace-fail 'version = "0.0.0"' 'version = "${version}"'
+      --replace-fail 'version = "0.0.0"' 'version = "${version}"' \
+      --replace-fail "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-    setuptools
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
+    ical
     mashumaro
     pyjwt
   ];
@@ -51,17 +51,15 @@ buildPythonPackage rec {
     syrupy
   ];
 
-  pythonImportsCheck = [
-    "aioautomower"
-  ];
+  pythonImportsCheck = [ "aioautomower" ];
 
-  pytestFlagsArray = [
-    "--snapshot-update"
-  ];
+  pytestFlagsArray = [ "--snapshot-update" ];
 
   disabledTests = [
     # File is missing
     "test_standard_mower"
+    # Call no found
+    "test_post_commands"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/aioazuredevops/default.nix b/pkgs/development/python-modules/aioazuredevops/default.nix
index 377c967986296..70be2375adf97 100644
--- a/pkgs/development/python-modules/aioazuredevops/default.nix
+++ b/pkgs/development/python-modules/aioazuredevops/default.nix
@@ -1,40 +1,77 @@
-{ lib
-, buildPythonPackage
-, isPy27
-, fetchPypi
-, aiohttp
-, click
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  aiohttp,
+  incremental,
+
+  # tests
+  aioresponses,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytest-socket,
+  pytestCheckHook,
+  syrupy,
 }:
 
 buildPythonPackage rec {
   pname = "aioazuredevops";
-  version = "1.4.3";
-  format = "setuptools";
+  version = "2.2.1";
+  pyproject = true;
 
-  disabled = isPy27;
+  disabled = pythonOlder "3.12";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-vNTvSQYjjptdPsHz0zM9paq3iodZrhcEralPm6YRZJE=";
+  src = fetchFromGitHub {
+    owner = "timmo001";
+    repo = "aioazuredevops";
+    rev = "refs/tags/${version}";
+    hash = "sha256-RZBiFPzYtEoc51T3irVHL9xVlZgACyM2lu1TkMoatqU=";
   };
 
-  propagatedBuildInputs = [
+  postPatch = ''
+    substituteInPlace requirements_setup.txt \
+      --replace-fail "==" ">="
+  '';
+
+  build-system = [
+    incremental
+    setuptools
+  ];
+
+  dependencies = [
     aiohttp
-    click
+    incremental
   ];
 
-  # no tests implemented
-  doCheck = false;
+  nativeCheckInputs = [
+    aioresponses
+    pytest-aiohttp
+    pytest-asyncio
+    pytest-socket
+    pytestCheckHook
+    syrupy
+  ];
 
-  pythonImportsCheck = [
-    "aioazuredevops.builds"
-    "aioazuredevops.client"
-    "aioazuredevops.core"
+  disabledTests = [
+    # https://github.com/timmo001/aioazuredevops/issues/44
+    "test_get_project"
+    "test_get_builds"
+    "test_get_build"
   ];
 
+  pytestFlagsArray = [ "--snapshot-update" ];
+
+  pythonImportsCheck = [ "aioazuredevops" ];
+
   meta = with lib; {
+    changelog = "https://github.com/timmo001/aioazuredevops/releases/tag/${version}";
     description = "Get data from the Azure DevOps API";
-    mainProgram = "aioazuredevops";
     homepage = "https://github.com/timmo001/aioazuredevops";
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/pkgs/development/python-modules/aiobafi6/default.nix b/pkgs/development/python-modules/aiobafi6/default.nix
index 7856437baeea8..632b3d7d5b190 100644
--- a/pkgs/development/python-modules/aiobafi6/default.nix
+++ b/pkgs/development/python-modules/aiobafi6/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, zeroconf
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  zeroconf,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-QxjrspvNrcMcGChjj1B4QF/SnWCsGmPxnI2bWAL6BiI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     protobuf
@@ -37,9 +36,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aiobafi6"
-  ];
+  pythonImportsCheck = [ "aiobafi6" ];
 
   meta = with lib; {
     description = "Library for communication with the Big Ass Fans i6 firmware";
diff --git a/pkgs/development/python-modules/aiobiketrax/default.nix b/pkgs/development/python-modules/aiobiketrax/default.nix
index 93333448ad112..e75f12130994a 100644
--- a/pkgs/development/python-modules/aiobiketrax/default.nix
+++ b/pkgs/development/python-modules/aiobiketrax/default.nix
@@ -1,60 +1,51 @@
-{ lib
-, aiohttp
-, auth0-python
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pyjwt
-, pytest-aiohttp
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  aiohttp,
+  auth0-python,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pyjwt,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "aiobiketrax";
-  version = "1.1.2";
-  format = "pyproject";
+  version = "1.3.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "basilfx";
-    repo = pname;
+    repo = "aiobiketrax";
     rev = "refs/tags/v${version}";
-    hash = "sha256-71gPdA1snPJCR0Pmcaki55Ukf5xtUjuZ+xX8VvspKC4=";
+    hash = "sha256-N0v5SCTf3NkW/TCSTQL9VkrDj7/GXEejJGFCvJY4pIc=";
   };
 
   postPatch = ''
     # https://github.com/basilfx/aiobiketrax/pull/63
     substituteInPlace aiobiketrax/api.py \
-      --replace "auth0.v3" "auth0"
+      --replace-fail "auth0.v3" "auth0"
   '';
 
-  pythonRelaxDeps = [
-    "auth0-python"
-  ];
+  pythonRelaxDeps = [ "auth0-python" ];
+
+  build-system = [ poetry-core ];
 
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     auth0-python
     python-dateutil
     pyjwt
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "aiobiketrax"
-  ];
+  pythonImportsCheck = [ "aiobiketrax" ];
 
   meta = with lib; {
     description = "Library for interacting with the PowUnity BikeTrax GPS tracker";
diff --git a/pkgs/development/python-modules/aioblescan/default.nix b/pkgs/development/python-modules/aioblescan/default.nix
index 768b2f9722015..24e17c54eddab 100644
--- a/pkgs/development/python-modules/aioblescan/default.nix
+++ b/pkgs/development/python-modules/aioblescan/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-JeA9jX566OSRiejdnlifbcNGm0J0C+xzA6zXDUyZ6jc=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "aioblescan"
-  ];
+  pythonImportsCheck = [ "aioblescan" ];
 
   meta = with lib; {
     description = "Library to listen for BLE advertized packets";
diff --git a/pkgs/development/python-modules/aioboto3/default.nix b/pkgs/development/python-modules/aioboto3/default.nix
index ea7921fc283be..ce5194a937ebe 100644
--- a/pkgs/development/python-modules/aioboto3/default.nix
+++ b/pkgs/development/python-modules/aioboto3/default.nix
@@ -1,24 +1,24 @@
-{ lib
-, aiobotocore
-, aiofiles
-, buildPythonPackage
-, chalice
-, cryptography
-, dill
-, fetchFromGitHub
-, moto
-, poetry-core
-, poetry-dynamic-versioning
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
+{
+  lib,
+  aiobotocore,
+  aiofiles,
+  buildPythonPackage,
+  chalice,
+  cryptography,
+  dill,
+  fetchFromGitHub,
+  moto,
+  poetry-core,
+  poetry-dynamic-versioning,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "aioboto3";
-  version = "12.3.0";
+  version = "13.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -27,44 +27,35 @@ buildPythonPackage rec {
     owner = "terrycain";
     repo = "aioboto3";
     rev = "refs/tags/v${version}";
-    hash = "sha256-GDuxy/V+j0LRJ2lbcRHMEAga+pdCbYIWhEt3ItrHMB4=";
+    hash = "sha256-g86RKQxTcfG1CIH3gfgn9Vl9JxUkeC1ztmLk4q/MVn0=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
     poetry-dynamic-versioning
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "aiobotocore"
-  ];
+  pythonRelaxDeps = [ "aiobotocore" ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiobotocore
+    aiofiles
   ] ++ aiobotocore.optional-dependencies.boto3;
 
-  passthru.optional-dependencies = {
-    chalice = [
-      chalice
-    ];
-    s3cse = [
-      cryptography
-    ];
+  optional-dependencies = {
+    chalice = [ chalice ];
+    s3cse = [ cryptography ];
   };
 
   nativeCheckInputs = [
-    aiofiles
     dill
     moto
     pytest-asyncio
     pytestCheckHook
     requests
-  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+  ] ++ lib.flatten (builtins.attrValues optional-dependencies);
 
-  pythonImportsCheck = [
-    "aioboto3"
-  ];
+  pythonImportsCheck = [ "aioboto3" ];
 
   disabledTests = [
     # Our moto package is not ready to support more tests
diff --git a/pkgs/development/python-modules/aiobotocore/default.nix b/pkgs/development/python-modules/aiobotocore/default.nix
index 525e482a42f72..75fa1cc5b5dc8 100644
--- a/pkgs/development/python-modules/aiobotocore/default.nix
+++ b/pkgs/development/python-modules/aiobotocore/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, aiohttp
-, aioitertools
-, botocore
-, buildPythonPackage
-, dill
-, fetchFromGitHub
-, flask
-, flask-cors
-, awscli
-, moto
-, boto3
-, setuptools
-, pytest-asyncio
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, wrapt
+{
+  lib,
+  aiohttp,
+  aioitertools,
+  botocore,
+  buildPythonPackage,
+  dill,
+  fetchFromGitHub,
+  flask,
+  flask-cors,
+  awscli,
+  moto,
+  boto3,
+  setuptools,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  wrapt,
 }:
 
 buildPythonPackage rec {
   pname = "aiobotocore";
-  version = "2.12.1";
+  version = "2.13.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -29,7 +30,7 @@ buildPythonPackage rec {
     owner = "aio-libs";
     repo = "aiobotocore";
     rev = "refs/tags/${version}";
-    hash = "sha256-+CXKDk6crCPTVpVfcDWy+1UzS05oTu1RtIvDcVrEmFU=";
+    hash = "sha256-tSxCRms/YstYXWCJWirzhf87ZH4WUav/n7QfMvBwj2s=";
   };
 
   # Relax version constraints: aiobotocore works with newer botocore versions
@@ -38,9 +39,7 @@ buildPythonPackage rec {
     sed -i "s/'botocore>=.*'/'botocore'/" setup.py
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -50,12 +49,8 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    awscli = [
-      awscli
-    ];
-    boto3 = [
-      boto3
-    ];
+    awscli = [ awscli ];
+    boto3 = [ boto3 ];
   };
 
   nativeCheckInputs = [
@@ -67,9 +62,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aiobotocore"
-  ];
+  pythonImportsCheck = [ "aiobotocore" ];
 
   disabledTestPaths = [
     # Tests require network access
@@ -90,18 +83,20 @@ buildPythonPackage rec {
     "tests/test_waiter.py"
   ];
 
-  disabledTests = [
-    "test_get_credential"
-    "test_load_sso_credentials_without_cache"
-    "test_load_sso_credentials"
-    "test_required_config_not_set"
-    "test_sso_cred_fetcher_raises_helpful_message_on_unauthorized_exception"
-    "test_sso_credential_fetcher_can_fetch_credentials"
-  ] ++ lib.optionals (pythonAtLeast "3.12.") [
-    # AttributeError: 'called_with' is not a valid assertion. Use a spec for the mock if 'called_with' is meant to be an attribute.
-    "test_max_rate_updated_on_success_response"
-    "test_max_rate_cant_exceed_20_percent_max"
-  ];
+  disabledTests =
+    [
+      "test_get_credential"
+      "test_load_sso_credentials_without_cache"
+      "test_load_sso_credentials"
+      "test_required_config_not_set"
+      "test_sso_cred_fetcher_raises_helpful_message_on_unauthorized_exception"
+      "test_sso_credential_fetcher_can_fetch_credentials"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12.") [
+      # AttributeError: 'called_with' is not a valid assertion. Use a spec for the mock if 'called_with' is meant to be an attribute.
+      "test_max_rate_updated_on_success_response"
+      "test_max_rate_cant_exceed_20_percent_max"
+    ];
 
   __darwinAllowLocalNetworking = true;
 
diff --git a/pkgs/development/python-modules/aiobroadlink/default.nix b/pkgs/development/python-modules/aiobroadlink/default.nix
index db73273a36797..01a0df16561cd 100644
--- a/pkgs/development/python-modules/aiobroadlink/default.nix
+++ b/pkgs/development/python-modules/aiobroadlink/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-uTUtDhL9VtWZE+Y6ZJY4prmlE+Yh2UrCg5+eSyAQzMk=";
   };
 
-  propagatedBuildInputs = [
-    cryptography
-  ];
+  propagatedBuildInputs = [ cryptography ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aiobroadlink"
-  ];
+  pythonImportsCheck = [ "aiobroadlink" ];
 
   meta = with lib; {
     description = "Python module to control various Broadlink devices";
diff --git a/pkgs/development/python-modules/aiocache/default.nix b/pkgs/development/python-modules/aiocache/default.nix
index fd4e5f3a154a3..d1e87d08deaac 100644
--- a/pkgs/development/python-modules/aiocache/default.nix
+++ b/pkgs/development/python-modules/aiocache/default.nix
@@ -1,51 +1,91 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, msgpack
-, pythonOlder
-, redis
-, setuptools
+{
+  lib,
+  aiohttp,
+  aiomcache,
+  buildPythonPackage,
+  fetchFromGitHub,
+  marshmallow,
+  msgpack,
+  pkgs,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  redis,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aiocache";
-  version = "0.12.2";
+  version = "0.12.3";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "aio-libs";
     repo = "aiocache";
     rev = "refs/tags/v${version}";
-    hash = "sha256-yvXDNJL8uxReaU81klVWudJwh1hmvg5GeeILcNpm/YA=";
+    hash = "sha256-4QYCRXMWlt9fsiWgUTc2pKzXG7AG/zGmd4HT5ggIZNM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  passthru.optional-dependencies = {
-    redis = [
-      redis
-    ];
-    msgpack = [
-      msgpack
-    ];
+  optional-dependencies = {
+    redis = [ redis ];
+    memcached = [ aiomcache ];
+    msgpack = [ msgpack ];
   };
 
-  # aiomcache would be required but last release was in 2017
-  doCheck = false;
+  nativeCheckInputs = [
+    aiohttp
+    marshmallow
+    pytest-asyncio
+    pytest-cov-stub
+    pytest-mock
+    pytestCheckHook
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
+
+  pytestFlagsArray = [
+    "-W"
+    "ignore::DeprecationWarning"
+    # TypeError: object MagicMock can't be used in 'await' expression
+    "--deselect=tests/ut/backends/test_redis.py::TestRedisBackend::test_close"
+  ];
+
+  disabledTests = [
+    # Test calls apache benchmark and fails, no usable output
+    "test_concurrency_error_rates"
+  ];
 
-  pythonImportsCheck = [
-    "aiocache"
+  disabledTestPaths = [
+    # Benchmark and performance tests are not relevant for Nixpkgs
+    "tests/performance/"
   ];
 
+  preCheck = ''
+    ${lib.getBin pkgs.redis}/bin/redis-server &
+    REDIS_PID=$!
+
+    ${lib.getBin pkgs.memcached}/bin/memcached &
+    MEMCACHED_PID=$!
+  '';
+
+  postCheck = ''
+    kill $REDIS_PID
+    kill $MEMCACHED_PID
+  '';
+
+  __darwinAllowLocalNetworking = true;
+
+  pythonImportsCheck = [ "aiocache" ];
+
   meta = with lib; {
     description = "Python API Rate Limit Decorator";
     homepage = "https://github.com/aio-libs/aiocache";
     changelog = "https://github.com/aio-libs/aiocache/releases/tag/v${version}";
-    license = with licenses; [ bsd3 ];
+    license = licenses.bsd3;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/aiocoap/default.nix b/pkgs/development/python-modules/aiocoap/default.nix
index af2b220a21c2b..51a73cc4ecbf0 100644
--- a/pkgs/development/python-modules/aiocoap/default.nix
+++ b/pkgs/development/python-modules/aiocoap/default.nix
@@ -1,44 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
-, pythonOlder
-
-# build-system
-, setuptools
-
-# optionals
-, cbor2
-, cbor-diag
-, cryptography
-, filelock
-, ge25519
-, dtlssocket
-, websockets
-, termcolor
-, pygments
-
-# tests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  cbor-diag,
+  cbor2,
+  cryptography,
+  dtlssocket,
+  fetchFromGitHub,
+  filelock,
+  ge25519,
+  pygments,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
+  termcolor,
+  websockets,
 }:
 
 buildPythonPackage rec {
   pname = "aiocoap";
-  version = "0.4.7";
+  version = "0.4.10";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "chrysn";
-    repo = pname;
+    repo = "aiocoap";
     rev = "refs/tags/${version}";
-    hash = "sha256-4iwoPfmIwk+PlWUp60aqA5qZgzyj34pnZHf9uH5UhnY=";
+    hash = "sha256-sKDkbv8OyPewfQpunFxezP0wjy3EAQxsQ0UfUm0REPM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   passthru.optional-dependencies = {
     oscore = [
@@ -47,12 +40,8 @@ buildPythonPackage rec {
       filelock
       ge25519
     ];
-    tinydtls = [
-      dtlssocket
-    ];
-    ws = [
-      websockets
-    ];
+    tinydtls = [ dtlssocket ];
+    ws = [ websockets ];
     prettyprint = [
       termcolor
       cbor2
@@ -61,26 +50,7 @@ buildPythonPackage rec {
     ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-
-  pytestFlagsArray = lib.optionals (pythonAtLeast "3.12") [
-    # https://github.com/chrysn/aiocoap/issues/339
-    "--deselect=tests/test_server.py::TestServerTCP::test_big_resource"
-    "--deselect=tests/test_server.py::TestServerTCP::test_empty_accept"
-    "--deselect=tests/test_server.py::TestServerTCP::test_error_resources"
-    "--deselect=tests/test_server.py::TestServerTCP::test_fast_resource"
-    "--deselect=tests/test_server.py::TestServerTCP::test_js_accept"
-    "--deselect=tests/test_server.py::TestServerTCP::test_manualbig_resource"
-    "--deselect=tests/test_server.py::TestServerTCP::test_nonexisting_resource"
-    "--deselect=tests/test_server.py::TestServerTCP::test_replacing_resource"
-    "--deselect=tests/test_server.py::TestServerTCP::test_root_resource"
-    "--deselect=tests/test_server.py::TestServerTCP::test_slow_resource"
-    "--deselect=tests/test_server.py::TestServerTCP::test_slowbig_resource"
-    "--deselect=tests/test_server.py::TestServerTCP::test_spurious_resource"
-    "--deselect=tests/test_server.py::TestServerTCP::test_unacceptable_accept"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # Don't test the plugins
@@ -89,14 +59,31 @@ buildPythonPackage rec {
     "tests/test_oscore_plugtest.py"
   ];
 
-  disabledTests = [
-    # Communication is not properly mocked
-    "test_uri_parser"
-  ];
+  disabledTests =
+    [
+      # Communication is not properly mocked
+      "test_uri_parser"
+      # Doctest
+      "test_001"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      # https://github.com/chrysn/aiocoap/issues/339
+      "TestServerTCP::test_big_resource"
+      "TestServerTCP::test_empty_accept"
+      "TestServerTCP::test_error_resources"
+      "TestServerTCP::test_fast_resource"
+      "TestServerTCP::test_js_accept"
+      "TestServerTCP::test_manualbig_resource"
+      "TestServerTCP::test_nonexisting_resource"
+      "TestServerTCP::test_replacing_resource"
+      "TestServerTCP::test_root_resource"
+      "TestServerTCP::test_slow_resource"
+      "TestServerTCP::test_slowbig_resource"
+      "TestServerTCP::test_spurious_resource"
+      "TestServerTCP::test_unacceptable_accept"
+    ];
 
-  pythonImportsCheck = [
-    "aiocoap"
-  ];
+  pythonImportsCheck = [ "aiocoap" ];
 
   meta = with lib; {
     description = "Python CoAP library";
diff --git a/pkgs/development/python-modules/aiocomelit/default.nix b/pkgs/development/python-modules/aiocomelit/default.nix
index b9c18196d24a1..c79904c5d05f7 100644
--- a/pkgs/development/python-modules/aiocomelit/default.nix
+++ b/pkgs/development/python-modules/aiocomelit/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, colorlog
-, fetchFromGitHub
-, pint
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  colorlog,
+  fetchFromGitHub,
+  pint,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "aiocomelit";
-  version = "0.9.0";
+  version = "0.9.1";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -20,7 +21,7 @@ buildPythonPackage rec {
     owner = "chemelli74";
     repo = "aiocomelit";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Fjf7mXXUnBTtPfNHHJdFx5ho4eg0N3iHCGsACa4IMjY=";
+    hash = "sha256-3r9DyvzqtQ88VwKCghAC9nn5kXbBzbR8drTFTnWC/bM=";
   };
 
   postPatch = ''
@@ -28,9 +29,7 @@ buildPythonPackage rec {
       --replace-fail " --cov=aiocomelit --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -42,9 +41,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aiocomelit"
-  ];
+  pythonImportsCheck = [ "aiocomelit" ];
 
   meta = with lib; {
     description = "Library to control Comelit Simplehome";
diff --git a/pkgs/development/python-modules/aioconsole/default.nix b/pkgs/development/python-modules/aioconsole/default.nix
index 8cb67f32a920d..b374d2e519309 100644
--- a/pkgs/development/python-modules/aioconsole/default.nix
+++ b/pkgs/development/python-modules/aioconsole/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 # This package provides a binary "apython" which sometimes invokes
@@ -17,7 +18,7 @@
 # wrapped to be able to find aioconsole and any other packages.
 buildPythonPackage rec {
   pname = "aioconsole";
-  version = "0.7.0";
+  version = "0.8.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,23 +27,21 @@ buildPythonPackage rec {
     owner = "vxgmichel";
     repo = "aioconsole";
     rev = "refs/tags/v${version}";
-    hash = "sha256-SKJLc1Tauwpmh2xtFFyHqKRaaQAK99SpbbGLFmAbKcQ=";
+    hash = "sha256-gexVeMlDRxZXcBi/iIYPip0DZIKvxCxKmTd+9jm0ud8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail " --cov aioconsole --strict-markers --count 2 -vv" ""
+  '';
+
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
   ];
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "--cov aioconsole --count 2" ""
-  '';
-
   __darwinAllowLocalNetworking = true;
 
   disabledTests = [
@@ -51,16 +50,14 @@ buildPythonPackage rec {
     "test_interact_multiple_indented_lines"
   ];
 
-  pythonImportsCheck = [
-    "aioconsole"
-  ];
+  pythonImportsCheck = [ "aioconsole" ];
 
   meta = with lib; {
-    changelog = "https://github.com/vxgmichel/aioconsole/releases/tag/v${version}";
     description = "Asynchronous console and interfaces for asyncio";
-    mainProgram = "apython";
+    changelog = "https://github.com/vxgmichel/aioconsole/releases/tag/v${version}";
     homepage = "https://github.com/vxgmichel/aioconsole";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ catern ];
+    mainProgram = "apython";
   };
 }
diff --git a/pkgs/development/python-modules/aiocontextvars/default.nix b/pkgs/development/python-modules/aiocontextvars/default.nix
index 24f6f1b2e4888..47f7108309e69 100644
--- a/pkgs/development/python-modules/aiocontextvars/default.nix
+++ b/pkgs/development/python-modules/aiocontextvars/default.nix
@@ -1,29 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pytest-asyncio
-, isPy27
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  pytest-asyncio,
+  isPy27,
 }:
 
 buildPythonPackage rec {
   pname = "aiocontextvars";
   version = "0.2.2";
-  format = "setuptools";
+  pyproject = true;
+
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "fantix";
-    repo = pname;
+    repo = "aiocontextvars";
     rev = "v${version}";
-    sha256 = "0a2gmrm9csiknc8n3si67sgzffkydplh9d7ga1k87ygk2aj22mmk";
+    hash = "sha256-s1YhpBLz+YNmUO+0BOltfjr3nz4m6mERszNqlmquTyg=";
   };
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "'pytest-runner'," ""
+      --replace-fail "'pytest-runner'," ""
   '';
 
+  build-system = [ setuptools ];
+
   nativeCheckInputs = [
     pytestCheckHook
     pytest-asyncio
diff --git a/pkgs/development/python-modules/aiocron/default.nix b/pkgs/development/python-modules/aiocron/default.nix
index a9a135e28f21f..0701fdab407a9 100644
--- a/pkgs/development/python-modules/aiocron/default.nix
+++ b/pkgs/development/python-modules/aiocron/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, python
-, croniter
-, tzlocal
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  python,
+  croniter,
+  tzlocal,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-SFRlE/ry63kB5lpk66e2U8gBBu0A7ZyjQZw9ELZVWgE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     croniter
diff --git a/pkgs/development/python-modules/aiocurrencylayer/default.nix b/pkgs/development/python-modules/aiocurrencylayer/default.nix
index 427992c58823c..944904ae2cae2 100644
--- a/pkgs/development/python-modules/aiocurrencylayer/default.nix
+++ b/pkgs/development/python-modules/aiocurrencylayer/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, httpx
-, poetry-core
-, pytest-asyncio
-, pytest-httpx
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpx,
+  poetry-core,
+  pytest-asyncio,
+  pytest-httpx,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,9 @@ buildPythonPackage rec {
     hash = "sha256-VOzgWN+dDPaGEcahFPSWjBR989b9eNkx4zcnI9o2Xiw=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    httpx
-  ];
+  propagatedBuildInputs = [ httpx ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -37,9 +34,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aiocurrencylayer"
-  ];
+  pythonImportsCheck = [ "aiocurrencylayer" ];
 
   meta = with lib; {
     description = "Python API for interacting with currencylayer";
diff --git a/pkgs/development/python-modules/aiodhcpwatcher/default.nix b/pkgs/development/python-modules/aiodhcpwatcher/default.nix
index 5c8adc9b4b99a..16989e989305c 100644
--- a/pkgs/development/python-modules/aiodhcpwatcher/default.nix
+++ b/pkgs/development/python-modules/aiodhcpwatcher/default.nix
@@ -1,50 +1,45 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, poetry-core
+  # build-system
+  poetry-core,
 
-# dependencies
-, scapy
+  # dependencies
+  scapy,
 
-# tests
-, pytest-asyncio
-, pytestCheckHook
+  # tests
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "aiodhcpwatcher";
-  version = "1.0.1";
+  version = "1.0.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "bdraco";
     repo = "aiodhcpwatcher";
     rev = "v${version}";
-    hash = "sha256-0of+no92s9SEKG1tc9lFlWR8f5Jnf3C723goQViB6+A=";
+    hash = "sha256-KZL5DejzDmizvvMUNfkFltl1xXz+2jX/3DVj60x6xOk=";
   };
 
   postPatch = ''
     sed -i "/addopts =/d" pyproject.toml
   '';
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  dependencies = [
-    scapy
-  ];
+  dependencies = [ scapy ];
 
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aiodhcpwatcher"
-  ];
+  pythonImportsCheck = [ "aiodhcpwatcher" ];
 
   meta = with lib; {
     description = "Watch for DHCP packets with asyncio";
@@ -52,5 +47,6 @@ buildPythonPackage rec {
     changelog = "https://github.com/bdraco/aiodhcpwatcher/blob/${src.rev}/CHANGELOG.md";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ hexa ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/python-modules/aiodns/default.nix b/pkgs/development/python-modules/aiodns/default.nix
index 1da999978b58d..95b17ac6a25ac 100644
--- a/pkgs/development/python-modules/aiodns/default.nix
+++ b/pkgs/development/python-modules/aiodns/default.nix
@@ -1,40 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pycares
-, pythonOlder
-, setuptools
-
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pycares,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aiodns";
-  version = "3.1.1";
+  version = "3.2.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "saghul";
     repo = "aiodns";
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-JZS53kICsrXDot3CKjG30AOjkYycKpMJvC9yS3c1v5Q=";
+    hash = "sha256-aXae9/x0HVp4KqydCf5/+p5PlSKUQ5cE3iVeD08rtf0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pycares
-  ];
+  dependencies = [ pycares ];
 
   # Could not contact DNS servers
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aiodns"
-  ];
+  pythonImportsCheck = [ "aiodns" ];
 
   meta = with lib; {
     description = "Simple DNS resolver for asyncio";
diff --git a/pkgs/development/python-modules/aiodocker/default.nix b/pkgs/development/python-modules/aiodocker/default.nix
index f3c76acceac0e..13f5134d3cec6 100644
--- a/pkgs/development/python-modules/aiodocker/default.nix
+++ b/pkgs/development/python-modules/aiodocker/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, aiohttp
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  aiohttp,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     sha256 = "RL5Ck4wsBZO88afmoojeFKbdIeCjDo/SwNqUcERH6Ls=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # tests require docker daemon
   doCheck = false;
diff --git a/pkgs/development/python-modules/aioecowitt/default.nix b/pkgs/development/python-modules/aioecowitt/default.nix
index 414f35aaf4d08..b871411b0163d 100644
--- a/pkgs/development/python-modules/aioecowitt/default.nix
+++ b/pkgs/development/python-modules/aioecowitt/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, meteocalc
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  meteocalc,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-QfUawUtkNl2molropV8NSU7Kfm/D5/xuaPCjgm2TVOs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -37,9 +36,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aioecowitt"
-  ];
+  pythonImportsCheck = [ "aioecowitt" ];
 
   meta = with lib; {
     description = "Wrapper for the EcoWitt protocol";
diff --git a/pkgs/development/python-modules/aioelectricitymaps/default.nix b/pkgs/development/python-modules/aioelectricitymaps/default.nix
index e0f6a236b6cb0..be03d2de043a9 100644
--- a/pkgs/development/python-modules/aioelectricitymaps/default.nix
+++ b/pkgs/development/python-modules/aioelectricitymaps/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, mashumaro
-, orjson
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, syrupy
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mashumaro,
+  orjson,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  syrupy,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
       --replace-warn "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -48,9 +47,7 @@ buildPythonPackage rec {
     syrupy
   ];
 
-  pythonImportsCheck = [
-    "aioelectricitymaps"
-  ];
+  pythonImportsCheck = [ "aioelectricitymaps" ];
 
   meta = with lib; {
     description = "Module for interacting with Electricity maps";
diff --git a/pkgs/development/python-modules/aioemonitor/default.nix b/pkgs/development/python-modules/aioemonitor/default.nix
index feddda5832f2b..a9fcde7fb79af 100644
--- a/pkgs/development/python-modules/aioemonitor/default.nix
+++ b/pkgs/development/python-modules/aioemonitor/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytest-raises
-, pytestCheckHook
-, pythonOlder
-, xmltodict
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytest-raises,
+  pytestCheckHook,
+  pythonOlder,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/aioesphomeapi/default.nix b/pkgs/development/python-modules/aioesphomeapi/default.nix
index 282e27f3f8af4..8e13ca9d212bb 100644
--- a/pkgs/development/python-modules/aioesphomeapi/default.nix
+++ b/pkgs/development/python-modules/aioesphomeapi/default.nix
@@ -1,31 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build-system
-, cython
-, setuptools
+  # build-system
+  cython,
+  setuptools,
 
-# dependencies
-, aiohappyeyeballs
-, async-interrupt
-, async-timeout
-, chacha20poly1305-reuseable
-, cryptography
-, noiseprotocol
-, protobuf
-, zeroconf
+  # dependencies
+  aiohappyeyeballs,
+  async-interrupt,
+  async-timeout,
+  chacha20poly1305-reuseable,
+  cryptography,
+  noiseprotocol,
+  protobuf,
+  zeroconf,
 
-# tests
-, mock
-, pytest-asyncio
-, pytestCheckHook
+  # tests
+  mock,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "aioesphomeapi";
-  version = "23.2.0";
+  version = "25.3.2";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -34,7 +35,7 @@ buildPythonPackage rec {
     owner = "esphome";
     repo = "aioesphomeapi";
     rev = "refs/tags/v${version}";
-    hash = "sha256-GFQ87Ic0xHXs8ZgmzH7kOFbDSNmtj0hx+YHKnrz/sG0=";
+    hash = "sha256-ITNXPwQTKOyH0TXYr8v/VI5rPNCvKGb/zIE1q+Ja8j0=";
   };
 
   build-system = [
@@ -42,6 +43,8 @@ buildPythonPackage rec {
     cython
   ];
 
+  pythonRelaxDeps = [ "cryptography" ];
+
   dependencies = [
     aiohappyeyeballs
     async-interrupt
@@ -50,9 +53,7 @@ buildPythonPackage rec {
     noiseprotocol
     protobuf
     zeroconf
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    async-timeout
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ async-timeout ];
 
   nativeCheckInputs = [
     mock
@@ -63,17 +64,22 @@ buildPythonPackage rec {
   disabledTests = [
     # https://github.com/esphome/aioesphomeapi/issues/837
     "test_reconnect_logic_stop_callback"
+    # python3.12.4 regression
+    # https://github.com/esphome/aioesphomeapi/issues/889
+    "test_start_connection_cannot_increase_recv_buffer"
+    "test_start_connection_can_only_increase_buffer_size_to_262144"
   ];
 
-  pythonImportsCheck = [
-    "aioesphomeapi"
-  ];
+  pythonImportsCheck = [ "aioesphomeapi" ];
 
   meta = with lib; {
     description = "Python Client for ESPHome native API";
     homepage = "https://github.com/esphome/aioesphomeapi";
     changelog = "https://github.com/esphome/aioesphomeapi/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ fab hexa ];
+    maintainers = with maintainers; [
+      fab
+      hexa
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/aioextensions/default.nix b/pkgs/development/python-modules/aioextensions/default.nix
index 92c05b12e677d..34097274aa694 100644
--- a/pkgs/development/python-modules/aioextensions/default.nix
+++ b/pkgs/development/python-modules/aioextensions/default.nix
@@ -1,11 +1,12 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
-, pythonOlder
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  pythonOlder,
 
-# Python dependencies
-, uvloop
-, pytest
+  # Python dependencies
+  uvloop,
+  pytest,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/aiofile/default.nix b/pkgs/development/python-modules/aiofile/default.nix
index ba9bd0652cfb3..0ed8b3fa7a34c 100644
--- a/pkgs/development/python-modules/aiofile/default.nix
+++ b/pkgs/development/python-modules/aiofile/default.nix
@@ -1,30 +1,32 @@
-{ lib
-, aiomisc
-, aiomisc-pytest
-, caio
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiomisc,
+  aiomisc-pytest,
+  caio,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aiofile";
   version = "3.8.6";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "mosquito";
-    repo = pname;
+    repo = "aiofile";
     rev = "refs/tags/${version}";
     hash = "sha256-KBly/aeHHZh7mL8MJ9gmxbqS7PmR4sedtBY/2HCXt54=";
   };
 
-  propagatedBuildInputs = [
-    caio
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ caio ];
 
   nativeCheckInputs = [
     aiomisc
@@ -32,9 +34,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aiofile"
-  ];
+  pythonImportsCheck = [ "aiofile" ];
 
   disabledTests = [
     # Tests (SystemError) fails randomly during nix-review
@@ -47,8 +47,12 @@ buildPythonPackage rec {
     "test_async_open_unicode"
     "test_async_open"
     "test_binary_io_wrapper"
+    "test_line_reader_one_line"
     "test_modes"
+    "test_open_non_existent_file_with_append"
     "test_text_io_wrapper"
+    "test_truncate"
+    "test_unicode_reader"
     "test_unicode_writer"
     "test_write_read_nothing"
   ];
diff --git a/pkgs/development/python-modules/aiofiles/default.nix b/pkgs/development/python-modules/aiofiles/default.nix
index d3d289204b7bc..a80581bc30883 100644
--- a/pkgs/development/python-modules/aiofiles/default.nix
+++ b/pkgs/development/python-modules/aiofiles/default.nix
@@ -1,11 +1,12 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,16 +23,14 @@ buildPythonPackage rec {
     hash = "sha256-EbRQD/AoTMWAlPOMWmD0UdFjRyjt5MUBkJtcydUCdHM=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
   ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
     "test_sendfile_file"
 
     # require loopback networking:
@@ -41,9 +40,7 @@ buildPythonPackage rec {
     "test_slow_file"
   ];
 
-  pythonImportsCheck = [
-    "aiofiles"
-  ];
+  pythonImportsCheck = [ "aiofiles" ];
 
   meta = with lib; {
     description = "File support for asyncio";
diff --git a/pkgs/development/python-modules/aioflo/default.nix b/pkgs/development/python-modules/aioflo/default.nix
index 4ec24cb77a9a6..13b51bf8ad21d 100644
--- a/pkgs/development/python-modules/aioflo/default.nix
+++ b/pkgs/development/python-modules/aioflo/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, pytest-aiohttp
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  poetry-core,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -39,13 +40,9 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -56,9 +53,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aioflo"
-  ];
+  pythonImportsCheck = [ "aioflo" ];
 
   meta = with lib; {
     description = "Python library for Flo by Moen Smart Water Detectors";
diff --git a/pkgs/development/python-modules/aioftp/default.nix b/pkgs/development/python-modules/aioftp/default.nix
index 6aa37699ca4a9..ee0429bacb460 100644
--- a/pkgs/development/python-modules/aioftp/default.nix
+++ b/pkgs/development/python-modules/aioftp/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, stdenv
-, async-timeout
-, buildPythonPackage
-, fetchPypi
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, siosocks
-, trustme
+{
+  lib,
+  stdenv,
+  async-timeout,
+  buildPythonPackage,
+  fetchPypi,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  siosocks,
+  trustme,
 }:
 
 buildPythonPackage rec {
@@ -28,18 +29,12 @@ buildPythonPackage rec {
       --replace " --cov" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    siosocks
-  ];
+  propagatedBuildInputs = [ siosocks ];
 
   passthru.optional-dependencies = {
-    socks = [
-      siosocks
-    ];
+    socks = [ siosocks ];
   };
 
   nativeCheckInputs = [
@@ -49,19 +44,17 @@ buildPythonPackage rec {
     trustme
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  disabledTests = lib.optionals stdenv.isDarwin [
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
     # uses 127.0.0.2, which macos doesn't like
     "test_pasv_connection_pasv_forced_response_address"
   ];
 
-  pythonImportsCheck = [
-    "aioftp"
-  ];
+  pythonImportsCheck = [ "aioftp" ];
 
   meta = with lib; {
     description = "Python FTP client/server for asyncio";
     homepage = "https://aioftp.readthedocs.io/";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/aiogithubapi/default.nix b/pkgs/development/python-modules/aiogithubapi/default.nix
index 59367acb041ad..7ff1bd6b67220 100644
--- a/pkgs/development/python-modules/aiogithubapi/default.nix
+++ b/pkgs/development/python-modules/aiogithubapi/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, aiohttp
-, aresponses
-, async-timeout
-, backoff
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, sigstore
+{
+  lib,
+  aiohttp,
+  aresponses,
+  async-timeout,
+  backoff,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  sigstore,
 }:
 
 buildPythonPackage rec {
   pname = "aiogithubapi";
-  version = "23.11.0";
+  version = "24.6.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -23,7 +24,7 @@ buildPythonPackage rec {
     owner = "ludeeus";
     repo = "aiogithubapi";
     rev = "refs/tags/${version}";
-    hash = "sha256-SbpfHKD4QJuCe3QG0GTvsffkuFiGPLEUXOVW9f1gyTI=";
+    hash = "sha256-z7l7Qx9Kg1FZ9nM0V2NzTyi3gbE2hakbc/GZ1CzDmKw=";
   };
 
   __darwinAllowLocalNetworking = true;
@@ -32,39 +33,34 @@ buildPythonPackage rec {
     # Upstream is releasing with the help of a CI to PyPI, GitHub releases
     # are not in their focus
     substituteInPlace pyproject.toml \
-      --replace 'version = "0"' 'version = "${version}"' \
-      --replace 'backoff = "^1.10.0"' 'backoff = "*"' \
-      --replace 'sigstore = "<2"' 'sigstore = "*"'
+      --replace-fail 'version = "0"' 'version = "${version}"'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     async-timeout
     backoff
-    sigstore
   ];
 
+  # Optional dependencies for deprecated-verify are not added
+  # Only sigstore < 2 is supported
+
   nativeCheckInputs = [
     aresponses
     pytest-asyncio
     pytestCheckHook
+    sigstore
   ];
 
-  pytestFlagsArray = [
-    "--asyncio-mode=auto"
-  ];
+  pytestFlagsArray = [ "--asyncio-mode=auto" ];
 
   preCheck = ''
     export HOME=$(mktemp -d)
   '';
 
-  pythonImportsCheck = [
-    "aiogithubapi"
-  ];
+  pythonImportsCheck = [ "aiogithubapi" ];
 
   disabledTests = [
     # sigstore.errors.TUFError: Failed to refresh TUF metadata
@@ -75,7 +71,7 @@ buildPythonPackage rec {
     description = "Python client for the GitHub API";
     homepage = "https://github.com/ludeeus/aiogithubapi";
     changelog = "https://github.com/ludeeus/aiogithubapi/releases/tag/${version}";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/aiogram/default.nix b/pkgs/development/python-modules/aiogram/default.nix
index 74d9f070a7219..9c0021c0a7239 100644
--- a/pkgs/development/python-modules/aiogram/default.nix
+++ b/pkgs/development/python-modules/aiogram/default.nix
@@ -1,8 +1,9 @@
 {
   lib,
+  aiodns,
   aiofiles,
-  aiohttp,
   aiohttp-socks,
+  aiohttp,
   aresponses,
   babel,
   buildPythonPackage,
@@ -11,21 +12,23 @@
   gitUpdater,
   hatchling,
   magic-filter,
+  motor,
   pycryptodomex,
   pydantic,
+  pymongo,
   pytest-aiohttp,
   pytest-asyncio,
   pytest-lazy-fixture,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
   pytz,
   redis,
+  uvloop,
 }:
 
 buildPythonPackage rec {
   pname = "aiogram";
-  version = "3.5.0";
+  version = "3.13.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -34,26 +37,34 @@ buildPythonPackage rec {
     owner = "aiogram";
     repo = "aiogram";
     rev = "refs/tags/v${version}";
-    hash = "sha256-NOaI01Lb969Lp/v38u2UipN9UbOQNJQEbN2JS3lmFno=";
+    hash = "sha256-uTFh1ncIPF9SmAEVGeBnXEKrYzgifZan1sxk5UiG92U=";
   };
 
   build-system = [ hatchling ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
-
-  pythonRelaxDeps = [ "pydantic" ];
-
   dependencies = [
     aiofiles
     aiohttp
-    babel
     certifi
     magic-filter
     pydantic
   ];
 
+  optional-dependencies = {
+    fast = [
+      aiodns
+      uvloop
+    ];
+    mongo = [
+      motor
+      pymongo
+    ];
+    redis = [ redis ];
+    proxy = [ aiohttp-socks ];
+    i18n = [ babel ];
+  };
+
   nativeCheckInputs = [
-    aiohttp-socks
     aresponses
     pycryptodomex
     pytest-aiohttp
@@ -61,8 +72,7 @@ buildPythonPackage rec {
     pytest-lazy-fixture
     pytestCheckHook
     pytz
-    redis
-  ];
+  ] ++ lib.flatten (builtins.attrValues optional-dependencies);
 
   pytestFlagsArray = [
     "-W"
@@ -77,6 +87,8 @@ buildPythonPackage rec {
 
   passthru.updateScript = gitUpdater { rev-prefix = "v"; };
 
+  __darwinAllowLocalNetworking = true;
+
   meta = with lib; {
     description = "Modern and fully asynchronous framework for Telegram Bot API";
     homepage = "https://github.com/aiogram/aiogram";
diff --git a/pkgs/development/python-modules/aioguardian/default.nix b/pkgs/development/python-modules/aioguardian/default.nix
index 8047a91fb2c42..afd3fd33190a7 100644
--- a/pkgs/development/python-modules/aioguardian/default.nix
+++ b/pkgs/development/python-modules/aioguardian/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, aiohttp
-, async-timeout
-, asyncio-dgram
-, buildPythonPackage
-, certifi
-, docutils
-, fetchFromGitHub
-, poetry-core
-, pytest-aiohttp
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, voluptuous
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  asyncio-dgram,
+  buildPythonPackage,
+  certifi,
+  docutils,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  voluptuous,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     hash = "sha256-7fY8+aAxlDtOBLu8SadY5qiH6+RvxnFpOw1RXTonP2o=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -48,13 +47,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTestPaths = [
-    "examples/"
-  ];
+  disabledTestPaths = [ "examples/" ];
 
-  pythonImportsCheck = [
-    "aioguardian"
-  ];
+  pythonImportsCheck = [ "aioguardian" ];
 
   meta = with lib; {
     description = " Python library to interact with Elexa Guardian devices";
diff --git a/pkgs/development/python-modules/aiohappyeyeballs/default.nix b/pkgs/development/python-modules/aiohappyeyeballs/default.nix
index a2be5384a04ce..9ff8b61feed83 100644
--- a/pkgs/development/python-modules/aiohappyeyeballs/default.nix
+++ b/pkgs/development/python-modules/aiohappyeyeballs/default.nix
@@ -1,25 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build-system
-, poetry-core
+  # build-system
+  poetry-core,
 
-# optional-dependencies
-, furo
-, myst-parser
-, sphinx-autobuild
-, sphinxHook
+  # optional-dependencies
+  furo,
+  myst-parser,
+  sphinx-autobuild,
+  sphinxHook,
 
-# tests
-, pytest-asyncio
-, pytestCheckHook
+  # tests
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "aiohappyeyeballs";
-  version = "2.3.2";
+  version = "2.3.6";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -28,7 +30,7 @@ buildPythonPackage rec {
     owner = "bdraco";
     repo = "aiohappyeyeballs";
     rev = "refs/tags/v${version}";
-    hash = "sha256-3Lj1eUDPoVCElrxowBhhrS0GCjD5qeUCiSB/gHoqC3Q=";
+    hash = "sha256-3cin755WD3e75l+mm//KG+g2UEkHvdYYEFvkJ9j9D6s=";
   };
 
   outputs = [
@@ -36,16 +38,9 @@ buildPythonPackage rec {
     "doc"
   ];
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace " --cov=aiohappyeyeballs --cov-report=term-missing:skip-covered" ""
-  '';
+  nativeBuildInputs = [ poetry-core ] ++ optional-dependencies.docs;
 
-  nativeBuildInputs = [
-    poetry-core
-  ] ++ passthru.optional-dependencies.docs;
-
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     docs = [
       furo
       myst-parser
@@ -56,23 +51,20 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytest-asyncio
+    pytest-cov-stub
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aiohappyeyeballs"
-  ];
-
-  disabledTestPaths = [
-    # https://github.com/bdraco/aiohappyeyeballs/issues/30
-    "tests/test_impl.py"
-  ];
+  pythonImportsCheck = [ "aiohappyeyeballs" ];
 
   meta = with lib; {
     description = "Happy Eyeballs for pre-resolved hosts";
     homepage = "https://github.com/bdraco/aiohappyeyeballs";
     changelog = "https://github.com/bdraco/aiohappyeyeballs/blob/v${version}/CHANGELOG.md";
     license = licenses.psfl;
-    maintainers = with maintainers; [ fab hexa ];
+    maintainers = with maintainers; [
+      fab
+      hexa
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/aioharmony/default.nix b/pkgs/development/python-modules/aioharmony/default.nix
index 8976c3d30707c..bbb42f62c7151 100644
--- a/pkgs/development/python-modules/aioharmony/default.nix
+++ b/pkgs/development/python-modules/aioharmony/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, slixmpp
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  slixmpp,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/aiohasupervisor/default.nix b/pkgs/development/python-modules/aiohasupervisor/default.nix
new file mode 100644
index 0000000000000..969e72889da69
--- /dev/null
+++ b/pkgs/development/python-modules/aiohasupervisor/default.nix
@@ -0,0 +1,64 @@
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchPypi,
+  mashumaro,
+  orjson,
+  pytest-aiohttp,
+  pytest-cov-stub,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  yarl,
+}:
+
+buildPythonPackage rec {
+  pname = "aiohasupervisor";
+  version = "0.1.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.12";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-Jq9cSdMMXVgRHhQK1LuGwVR6GBTIrw3th7y9huRSQjM=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "setuptools~=68.0.0" "setuptools>=68.0.0" \
+      --replace-fail "wheel~=0.40.0" "wheel>=0.40.0"
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    aiohttp
+    mashumaro
+    orjson
+    yarl
+  ];
+
+  nativeCheckInputs = [
+    aioresponses
+    pytest-aiohttp
+    pytest-cov-stub
+    pytest-timeout
+    pytestCheckHook
+  ];
+
+  # Import issue, check with next release
+  doCheck = false;
+
+  pythonImportsCheck = [ "aiohasupervisor" ];
+
+  meta = {
+    description = "Client for Home Assistant Supervisor";
+    homepage = "https://github.com/home-assistant-libs/python-supervisor-client";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/aiohomekit/default.nix b/pkgs/development/python-modules/aiohomekit/default.nix
index 546fd9c4f4041..ca0204fe12572 100644
--- a/pkgs/development/python-modules/aiohomekit/default.nix
+++ b/pkgs/development/python-modules/aiohomekit/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, buildPythonPackage
-, aiocoap
-, aiohappyeyeballs
-, async-interrupt
-, bleak
-, bleak-retry-connector
-, chacha20poly1305
-, chacha20poly1305-reuseable
-, commentjson
-, cryptography
-, fetchFromGitHub
-, orjson
-, poetry-core
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, zeroconf
+{
+  lib,
+  buildPythonPackage,
+  aiocoap,
+  aiohappyeyeballs,
+  async-interrupt,
+  bleak,
+  bleak-retry-connector,
+  chacha20poly1305,
+  chacha20poly1305-reuseable,
+  commentjson,
+  cryptography,
+  fetchFromGitHub,
+  orjson,
+  poetry-core,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  zeroconf,
 }:
 
 buildPythonPackage rec {
   pname = "aiohomekit";
-  version = "3.1.5";
+  version = "3.2.3";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -29,14 +30,12 @@ buildPythonPackage rec {
     owner = "Jc2k";
     repo = "aiohomekit";
     rev = "refs/tags/${version}";
-    hash = "sha256-F3PhZsuIgT3x1Y3/kx9juPwN2WKxvdbahrRm+r6ZPps=";
+    hash = "sha256-gWuFCL78hcOflXlDwYDSu3+G/F8D5najtoTgKKzod1Y=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiocoap
     aiohappyeyeballs
     async-interrupt
@@ -73,20 +72,18 @@ buildPythonPackage rec {
     "test_discover_device_id_case_upper"
   ];
 
-  pythonImportsCheck = [
-    "aiohomekit"
-  ];
+  pythonImportsCheck = [ "aiohomekit" ];
 
   meta = with lib; {
     description = "Python module that implements the HomeKit protocol";
-    mainProgram = "aiohomekitctl";
     longDescription = ''
       This Python library implements the HomeKit protocol for controlling
       Homekit accessories.
     '';
     homepage = "https://github.com/Jc2k/aiohomekit";
     changelog = "https://github.com/Jc2k/aiohomekit/releases/tag/${version}";
-    license = with licenses; [ asl20 ];
+    license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "aiohomekitctl";
   };
 }
diff --git a/pkgs/development/python-modules/aiohttp-apispec/default.nix b/pkgs/development/python-modules/aiohttp-apispec/default.nix
index ea908ff544145..95d1ee3d3010d 100644
--- a/pkgs/development/python-modules/aiohttp-apispec/default.nix
+++ b/pkgs/development/python-modules/aiohttp-apispec/default.nix
@@ -1,16 +1,15 @@
-{ lib
-, aiohttp
-, apispec
-, buildPythonPackage
-, callPackage
-, fetchFromGitHub
-, fetchPypi
-, jinja2
-, packaging
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, webargs
+{
+  lib,
+  aiohttp,
+  apispec,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jinja2,
+  packaging,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  webargs,
 }:
 
 buildPythonPackage rec {
@@ -40,14 +39,12 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aiohttp_apispec"
-  ];
+  pythonImportsCheck = [ "aiohttp_apispec" ];
 
   meta = with lib; {
     description = "Build and document REST APIs with aiohttp and apispec";
     homepage = "https://github.com/maximdanilchenko/aiohttp-apispec/";
     license = licenses.mit;
-    maintainers = with maintainers; [ viric ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/aiohttp-basicauth/default.nix b/pkgs/development/python-modules/aiohttp-basicauth/default.nix
index b7ce89c134768..ee3e5483a1e48 100644
--- a/pkgs/development/python-modules/aiohttp-basicauth/default.nix
+++ b/pkgs/development/python-modules/aiohttp-basicauth/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, aiohttp
-, pytestCheckHook
-, pytest-asyncio
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  aiohttp,
+  pytestCheckHook,
+  pytest-asyncio,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-UaRzauHmBHYwXFqRwDn1py79BScqq5j5SWALM4dQBP4=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/aiohttp-client-cache/default.nix b/pkgs/development/python-modules/aiohttp-client-cache/default.nix
index c8ff60e64f5a7..6f31169384653 100644
--- a/pkgs/development/python-modules/aiohttp-client-cache/default.nix
+++ b/pkgs/development/python-modules/aiohttp-client-cache/default.nix
@@ -1,33 +1,87 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, poetry-core
-, aiohttp
-, attrs
-, itsdangerous
-, url-normalize
+{
+  lib,
+  aioboto3,
+  aiobotocore,
+  aiofiles,
+  aiohttp,
+  aiosqlite,
+  attrs,
+  buildPythonPackage,
+  faker,
+  fetchPypi,
+  itsdangerous,
+  motor,
+  poetry-core,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  redis,
+  url-normalize,
 }:
 
 buildPythonPackage rec {
-  pname = "aiohttp_client_cache";
-  version = "0.11.0";
+  pname = "aiohttp-client-cache";
+  version = "0.11.1";
   pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-B2b/9O2gVJjHUlN0pYeBDcwsy3slaAnd5SroeQqEU+s=";
+    pname = "aiohttp_client_cache";
+    inherit version;
+    hash = "sha256-MuY60hAkD4Ik8+Encv5TrBAs8kx88Y3bhqy7n9+eS28=";
   };
-  nativeBuildInputs = [
-    poetry-core
-  ];
-  propagatedBuildInputs = [
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
     aiohttp
     attrs
     itsdangerous
     url-normalize
   ];
+
+  optional-dependencies = {
+    all = [
+      aioboto3
+      aiobotocore
+      aiofiles
+      aiosqlite
+      motor
+      redis
+    ];
+    dynamodb = [
+      aioboto3
+      aiobotocore
+    ];
+    filesystem = [
+      aiofiles
+      aiosqlite
+    ];
+    mongodb = [ motor ];
+    redis = [ redis ];
+    sqlite = [ aiosqlite ];
+  };
+
+  nativeCheckInputs = [
+    faker
+    pytest-aiohttp
+    pytestCheckHook
+  ] ++ lib.flatten (builtins.attrValues optional-dependencies);
+
+  pythonImportsCheck = [ "aiohttp_client_cache" ];
+
+  disabledTestPaths = [
+    # Tests require running instances of the services
+    "test/integration/test_dynamodb.py"
+    "test/integration/test_redis.py"
+    "test/integration/test_sqlite.py"
+  ];
+
   meta = with lib; {
-    description = "An async persistent cache for aiohttp requests";
-    homepage = "https://pypi.org/project/aiohttp-client-cache/";
+    description = "Async persistent cache for aiohttp requests";
+    homepage = "https://github.com/requests-cache/aiohttp-client-cache";
+    changelog = "https://github.com/requests-cache/aiohttp-client-cache/blob/v${version}/HISTORY.md";
     license = licenses.mit;
     maintainers = with maintainers; [ seirl ];
   };
diff --git a/pkgs/development/python-modules/aiohttp-cors/default.nix b/pkgs/development/python-modules/aiohttp-cors/default.nix
index ad6033ca4f27e..31c2115802707 100644
--- a/pkgs/development/python-modules/aiohttp-cors/default.nix
+++ b/pkgs/development/python-modules/aiohttp-cors/default.nix
@@ -1,5 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder
-, typing ? null, aiohttp
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  typing ? null,
+  aiohttp,
 }:
 
 buildPythonPackage rec {
@@ -14,8 +19,7 @@ buildPythonPackage rec {
 
   disabled = pythonOlder "3.5";
 
-  propagatedBuildInputs = [ aiohttp ]
-  ++ lib.optional (pythonOlder "3.5") typing;
+  propagatedBuildInputs = [ aiohttp ] ++ lib.optional (pythonOlder "3.5") typing;
 
   # Requires network access
   doCheck = false;
diff --git a/pkgs/development/python-modules/aiohttp-fast-url-dispatcher/default.nix b/pkgs/development/python-modules/aiohttp-fast-url-dispatcher/default.nix
deleted file mode 100644
index 905705c992dd1..0000000000000
--- a/pkgs/development/python-modules/aiohttp-fast-url-dispatcher/default.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-}:
-
-buildPythonPackage rec {
-  pname = "aiohttp-fast-url-dispatcher";
-  version = "0.3.0";
-  pyproject = true;
-
-  disabled = pythonOlder "3.8";
-
-  src = fetchFromGitHub {
-    owner = "bdraco";
-    repo = "aiohttp-fast-url-dispatcher";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-DZTW9CazcUY3hyxr0MbVfM/yJzUzwN43c2n07Sloxa8=";
-  };
-
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace " --cov=aiohttp_fast_url_dispatcher --cov-report=term-missing:skip-covered" ""
-  '';
-
-  nativeBuildInputs = [
-    poetry-core
-  ];
-
-  propagatedBuildInputs = [
-    aiohttp
-  ];
-
-  nativeCheckInputs = [
-    pytest-asyncio
-    pytestCheckHook
-  ];
-
-  pythonImportsCheck = [
-    "aiohttp_fast_url_dispatcher"
-  ];
-
-  meta = with lib; {
-    description = "A faster URL dispatcher for aiohttp";
-    homepage = "https://github.com/bdraco/aiohttp-fast-url-dispatcher";
-    changelog = "https://github.com/bdraco/aiohttp-fast-url-dispatcher/blob/${version}/CHANGELOG.md";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ fab ];
-  };
-}
diff --git a/pkgs/development/python-modules/aiohttp-fast-zlib/default.nix b/pkgs/development/python-modules/aiohttp-fast-zlib/default.nix
new file mode 100644
index 0000000000000..3cea7804918e4
--- /dev/null
+++ b/pkgs/development/python-modules/aiohttp-fast-zlib/default.nix
@@ -0,0 +1,48 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  aiohttp,
+  isal,
+  zlib-ng,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "aiohttp-fast-zlib";
+  version = "0.1.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "bdraco";
+    repo = "aiohttp-fast-zlib";
+    rev = "v${version}";
+    hash = "sha256-uPmttfEiWmEtQrBZYwiSjLTMmXhZ0MmaAQJMXTSQj+U=";
+  };
+
+  postPatch = ''
+    sed -i "/addopts =/d" pyproject.toml
+  '';
+
+  build-system = [ poetry-core ];
+
+  dependencies = [ aiohttp ];
+
+  optional-dependencies = {
+    isal = [ isal ];
+    zlib_ng = [ zlib-ng ];
+  };
+
+  nativeCheckInputs = [ pytestCheckHook ] ++ lib.flatten (lib.attrValues optional-dependencies);
+
+  pythonImportsCheck = [ "aiohttp_fast_zlib" ];
+
+  meta = with lib; {
+    description = "Use the fastest installed zlib compatible library with aiohttp";
+    homepage = "https://github.com/bdraco/aiohttp-fast-zlib";
+    changelog = "https://github.com/bdraco/aiohttp-fast-zlib/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = [ ];
+  };
+}
diff --git a/pkgs/development/python-modules/aiohttp-jinja2/default.nix b/pkgs/development/python-modules/aiohttp-jinja2/default.nix
index 8e78784457ca4..580db1e840dd7 100644
--- a/pkgs/development/python-modules/aiohttp-jinja2/default.nix
+++ b/pkgs/development/python-modules/aiohttp-jinja2/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, jinja2
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  jinja2,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aiohttp-jinja2";
   version = "1.6";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -20,7 +22,9 @@ buildPythonPackage rec {
     hash = "sha256-o6f/UmTlvKUuiuVHu/0HYbcklSMNQ40FtsCRW+YZsOI=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     aiohttp
     jinja2
   ];
@@ -31,8 +35,8 @@ buildPythonPackage rec {
   ];
 
   postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace " --cov=aiohttp_jinja2 --cov-report xml --cov-report html --cov-report term" ""
+    substituteInPlace pytest.ini \
+      --replace-fail "--cov=aiohttp_jinja2/ --cov=tests/ --cov-report term" ""
   '';
 
   pytestFlagsArray = [
@@ -40,18 +44,12 @@ buildPythonPackage rec {
     "ignore::DeprecationWarning"
   ];
 
-  pythonImportsCheck = [
-    "aiohttp_jinja2"
-  ];
-
-  # Tests are outdated (1.5)
-  # pytest.PytestUnhandledCoroutineWarning: async def functions...
-  doCheck = false;
+  pythonImportsCheck = [ "aiohttp_jinja2" ];
 
   meta = with lib; {
     description = "Jinja2 support for aiohttp";
     homepage = "https://github.com/aio-libs/aiohttp_jinja2";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/aiohttp-middlewares/default.nix b/pkgs/development/python-modules/aiohttp-middlewares/default.nix
new file mode 100644
index 0000000000000..b772542fa52cb
--- /dev/null
+++ b/pkgs/development/python-modules/aiohttp-middlewares/default.nix
@@ -0,0 +1,54 @@
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
+}:
+
+buildPythonPackage rec {
+  pname = "aiohttp-middlewares";
+  version = "2.4.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "playpauseandstop";
+    repo = "aiohttp-middlewares";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-jUH1XhkytRwR76wUTsGQGu6m8s+SZ/GO114Lz9atwE8=";
+  };
+
+  postPatch = ''
+    sed -i "/addopts/d" pyproject.toml
+  '';
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    aiohttp
+    async-timeout
+    yarl
+  ];
+
+  nativeCheckInputs = [
+    pytest-aiohttp
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "aiohttp_middlewares" ];
+
+  meta = with lib; {
+    description = "Collection of useful middlewares for aiohttp.web applications";
+    homepage = "https://github.com/playpauseandstop/aiohttp-middlewares";
+    changelog = "https://github.com/playpauseandstop/aiohttp-middlewares/blob/${version}/CHANGELOG.rst";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/aiohttp-oauthlib/default.nix b/pkgs/development/python-modules/aiohttp-oauthlib/default.nix
index 92981ea952c7a..31972760c132d 100644
--- a/pkgs/development/python-modules/aiohttp-oauthlib/default.nix
+++ b/pkgs/development/python-modules/aiohttp-oauthlib/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, oauthlib
-, aiohttp
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  oauthlib,
+  aiohttp,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     aiohttp
   ];
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   # Package has no tests.
   doCheck = false;
diff --git a/pkgs/development/python-modules/aiohttp-openmetrics/default.nix b/pkgs/development/python-modules/aiohttp-openmetrics/default.nix
index 11b979c4f6c2d..f91f30c396107 100644
--- a/pkgs/development/python-modules/aiohttp-openmetrics/default.nix
+++ b/pkgs/development/python-modules/aiohttp-openmetrics/default.nix
@@ -1,15 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, aiohttp
-, prometheus-client
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  aiohttp,
+  prometheus-client,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aiohttp-openmetrics";
   version = "0.0.12";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -18,7 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-/ZRngcMlroCVTvIl+30DR4SI8LsSnTovuzg3YduWgWA=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     aiohttp
     prometheus-client
   ];
@@ -26,15 +30,13 @@ buildPythonPackage rec {
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aiohttp_openmetrics"
-  ];
+  pythonImportsCheck = [ "aiohttp_openmetrics" ];
 
   meta = with lib; {
     description = "OpenMetrics provider for aiohttp";
     homepage = "https://github.com/jelmer/aiohttp-openmetrics/";
     changelog = "https://github.com/jelmer/aiohttp-openmetrics/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/aiohttp-remotes/default.nix b/pkgs/development/python-modules/aiohttp-remotes/default.nix
index 66f81b1232980..eb275e0af22e8 100644
--- a/pkgs/development/python-modules/aiohttp-remotes/default.nix
+++ b/pkgs/development/python-modules/aiohttp-remotes/default.nix
@@ -1,12 +1,14 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, flit
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  flit,
+  pytest-aiohttp,
+  pytest-cov-stub,
+  pytestCheckHook,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -22,29 +24,17 @@ buildPythonPackage rec {
     sha256 = "f95c3a6be5e2de746a85ce9af49ec548da6db8378d7e81bb171ec77b13562a6c";
   };
 
-  nativeBuildInputs = [
-    flit
-  ];
+  nativeBuildInputs = [ flit ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ] ++ lib.optionals (pythonOlder "3.7") [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ aiohttp ] ++ lib.optionals (pythonOlder "3.7") [ typing-extensions ];
 
   nativeCheckInputs = [
     pytest-aiohttp
+    pytest-cov-stub
     pytestCheckHook
   ];
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace " --no-cov-on-fail --cov-branch --cov=aiohttp_remotes --cov-report=term --cov-report=html" ""
-  '';
-
-  pythonImportsCheck = [
-    "aiohttp_remotes"
-  ];
+  pythonImportsCheck = [ "aiohttp_remotes" ];
 
   pytestFlagsArray = [
     "-W"
@@ -52,6 +42,8 @@ buildPythonPackage rec {
     "--asyncio-mode=auto"
   ];
 
+  __darwinAllowLocalNetworking = true;
+
   meta = with lib; {
     description = "Set of useful tools for aiohttp.web server";
     homepage = "https://github.com/wikibusiness/aiohttp-remotes";
diff --git a/pkgs/development/python-modules/aiohttp-retry/default.nix b/pkgs/development/python-modules/aiohttp-retry/default.nix
index 262fcef8e442b..940f5bd35a3d0 100644
--- a/pkgs/development/python-modules/aiohttp-retry/default.nix
+++ b/pkgs/development/python-modules/aiohttp-retry/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pytest-aiohttp
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pytest-aiohttp,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-Zr68gx8ZR9jKrogmqaFLvpBAIHE9ptHm0zZ/b49cCLw=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -32,13 +31,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aiohttp_retry"
-  ];
+  pythonImportsCheck = [ "aiohttp_retry" ];
 
-  pytestFlagsArray = [
-    "--asyncio-mode=auto"
-  ];
+  pytestFlagsArray = [ "--asyncio-mode=auto" ];
 
   meta = with lib; {
     description = "Retry client for aiohttp";
diff --git a/pkgs/development/python-modules/aiohttp-session/default.nix b/pkgs/development/python-modules/aiohttp-session/default.nix
new file mode 100644
index 0000000000000..78d044573bcdf
--- /dev/null
+++ b/pkgs/development/python-modules/aiohttp-session/default.nix
@@ -0,0 +1,54 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  aiohttp,
+
+  # optional-dependencies
+  aiomcache,
+  cryptography,
+  pynacl,
+  redis,
+}:
+
+buildPythonPackage rec {
+  pname = "aiohttp-session";
+  version = "2.12.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "aio-libs";
+    repo = "aiohttp-session";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-mGWtHo/+jdCmv3TmUUv42hWSiLzPiP5ytB25pVyvZig=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ aiohttp ];
+
+  optional-dependencies = {
+    aioredis = [ redis ];
+    aiomcache = [ aiomcache ];
+    pycrypto = [ cryptography ];
+    secure = [ cryptography ];
+    pynacl = [ pynacl ];
+  };
+
+  doCheck = false; # runs redis in docker
+
+  pythonImportsCheck = [ "aiohttp_session" ];
+
+  meta = with lib; {
+    description = "Web sessions for aiohttp.web";
+    homepage = "https://github.com/aio-libs/aiohttp-session";
+    changelog = "https://github.com/aio-libs/aiohttp-session/blob/${src.rev}/CHANGES.txt";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/development/python-modules/aiohttp-socks/default.nix b/pkgs/development/python-modules/aiohttp-socks/default.nix
index 6b96d06ea482b..9a4820ccf2e47 100644
--- a/pkgs/development/python-modules/aiohttp-socks/default.nix
+++ b/pkgs/development/python-modules/aiohttp-socks/default.nix
@@ -1,35 +1,30 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-
-# build-system
-, setuptools
-
-# dependencies
-, aiohttp
-, attrs
-, python-socks
+{
+  lib,
+  aiohttp,
+  attrs,
+  buildPythonPackage,
+  fetchPypi,
+  python-socks,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aiohttp-socks";
-  version = "0.8.4";
+  version = "0.9.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit version;
     pname = "aiohttp_socks";
-    hash = "sha256-a2EdTOg46c8sL+1eDbpEfMhIJKbLqV3FdHYGIB2kbLQ=";
+    hash = "sha256-IhWaGvAmsinP5eoAfgZbs/5WOFqVGoJiOm9FiKZ1gAM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     attrs
     python-socks
@@ -38,13 +33,13 @@ buildPythonPackage rec {
   # Checks needs internet access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aiohttp_socks"
-  ];
+  pythonImportsCheck = [ "aiohttp_socks" ];
 
   meta = {
     description = "SOCKS proxy connector for aiohttp";
-    license = lib.licenses.asl20;
     homepage = "https://github.com/romis2012/aiohttp-socks";
+    changelog = "https://github.com/romis2012/aiohttp-socks/releases/tag/v${version}";
+    license = lib.licenses.asl20;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/aiohttp-sse-client2/default.nix b/pkgs/development/python-modules/aiohttp-sse-client2/default.nix
new file mode 100644
index 0000000000000..f4d3709a3d910
--- /dev/null
+++ b/pkgs/development/python-modules/aiohttp-sse-client2/default.nix
@@ -0,0 +1,57 @@
+{
+  aiohttp,
+  attrs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  multidict,
+  pytest-aiohttp,
+  pytestCheckHook,
+  setuptools,
+  yarl,
+}:
+
+buildPythonPackage rec {
+  pname = "aiohttp-sse-client2";
+  version = "0.3.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "compat-fork";
+    repo = "aiohttp-sse-client";
+    rev = "refs/tags/${version}";
+    hash = "sha256-uF39gpOYzNotVVYQShUoiuvYAhSRex2T1NfuhgwSCR4=";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace-fail "pytest-runner" ""
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    aiohttp
+    attrs
+    multidict
+    yarl
+  ];
+
+  pythonImportsCheck = [ "aiohttp_sse_client2" ];
+
+  nativeCheckInputs = [
+    pytest-aiohttp
+    pytestCheckHook
+  ];
+
+  # tests access the internet
+  doCheck = false;
+
+  meta = {
+    changelog = "https://github.com/compat-fork/aiohttp-sse-client/blob/${src.rev}/README.rst#fork-changelog";
+    description = "Server-Sent Event python client library based on aiohttp";
+    homepage = "https://github.com/compat-fork/aiohttp-sse-client";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/aiohttp-swagger/default.nix b/pkgs/development/python-modules/aiohttp-swagger/default.nix
index 19c822acf1a7f..0b7dc5c6ea2e2 100644
--- a/pkgs/development/python-modules/aiohttp-swagger/default.nix
+++ b/pkgs/development/python-modules/aiohttp-swagger/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, aiohttp
-, jinja2
-, markupsafe
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  aiohttp,
+  jinja2,
+  markupsafe,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -47,14 +48,11 @@ buildPythonPackage rec {
     rm tests/conftest.py
   '';
 
-  pythonImportsCheck = [
-    "aiohttp_swagger"
-  ];
+  pythonImportsCheck = [ "aiohttp_swagger" ];
 
   meta = with lib; {
     description = "Swagger API Documentation builder for aiohttp";
     homepage = "https://github.com/cr0hn/aiohttp-swagger";
     license = licenses.mit;
-    maintainers = with maintainers; [ elohmeier ];
   };
 }
diff --git a/pkgs/development/python-modules/aiohttp-wsgi/default.nix b/pkgs/development/python-modules/aiohttp-wsgi/default.nix
index d048cb41e3209..f962c82166e9a 100644
--- a/pkgs/development/python-modules/aiohttp-wsgi/default.nix
+++ b/pkgs/development/python-modules/aiohttp-wsgi/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-3Q00FidZWV1KueuHyHKQf1PsDJGOaRW6v/kBy7lzD4Q=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "aiohttp_wsgi" ];
 
diff --git a/pkgs/development/python-modules/aiohttp-zlib-ng/default.nix b/pkgs/development/python-modules/aiohttp-zlib-ng/default.nix
index bb5337203f6f2..73ab81fa78a81 100644
--- a/pkgs/development/python-modules/aiohttp-zlib-ng/default.nix
+++ b/pkgs/development/python-modules/aiohttp-zlib-ng/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, zlib-ng
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  zlib-ng,
 }:
 
 buildPythonPackage rec {
   pname = "aiohttp-zlib-ng";
-  version = "0.3.1";
+  version = "0.3.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,7 +20,7 @@ buildPythonPackage rec {
     owner = "bdraco";
     repo = "aiohttp-zlib-ng";
     rev = "refs/tags/v${version}";
-    hash = "sha256-XA2XSX9KA/oBzOLJrhj78uoy6ufLbVTENYZL3y/+fwU=";
+    hash = "sha256-SiDDtadbBnw67lnqadAVSkHILB/8Sur0MfjgCbndX4o=";
   };
 
   postPatch = ''
@@ -27,22 +28,16 @@ buildPythonPackage rec {
       --replace-fail " --cov=aiohttp_zlib_ng --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
     zlib-ng
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "aiohttp_zlib_ng"
-  ];
+  pythonImportsCheck = [ "aiohttp_zlib_ng" ];
 
   meta = with lib; {
     description = "Enable zlib_ng on aiohttp";
diff --git a/pkgs/development/python-modules/aiohttp/default.nix b/pkgs/development/python-modules/aiohttp/default.nix
index e46b5989dd762..576ea16a39f82 100644
--- a/pkgs/development/python-modules/aiohttp/default.nix
+++ b/pkgs/development/python-modules/aiohttp/default.nix
@@ -1,35 +1,45 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, substituteAll
-, llhttp
-# build_requires
-, cython
-, setuptools
-# install_requires
-, attrs
-, multidict
-, async-timeout
-, yarl
-, frozenlist
-, aiosignal
-, aiodns
-, brotli
-# tests_require
-, freezegun
-, gunicorn
-, pytest-mock
-, pytest7CheckHook
-, python-on-whales
-, re-assert
-, trustme
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  substituteAll,
+  python,
+
+  # build-system
+  cython,
+  setuptools,
+
+  # native dependencies
+  llhttp,
+
+  # dependencies
+  aiohappyeyeballs,
+  attrs,
+  multidict,
+  async-timeout,
+  yarl,
+  frozenlist,
+  aiosignal,
+  aiodns,
+  brotli,
+
+  # tests
+  freezegun,
+  gunicorn,
+  proxy-py,
+  pytest-cov-stub,
+  pytest-mock,
+  pytestCheckHook,
+  python-on-whales,
+  re-assert,
+  trustme,
 }:
 
 buildPythonPackage rec {
   pname = "aiohttp";
-  version = "3.9.3";
+  version = "3.10.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -38,7 +48,7 @@ buildPythonPackage rec {
     owner = "aio-libs";
     repo = "aiohttp";
     rev = "refs/tags/v${version}";
-    hash = "sha256-dEeMHruFJ1o0J6VUJcpUk7LhEC8sV8hUKXoKcd618lE=";
+    hash = "sha256-HN2TJ8hVbClakV3ldTOn3wbrhCuf2Qn9EjWCSlSyJpw=";
   };
 
   patches = [
@@ -50,14 +60,12 @@ buildPythonPackage rec {
   ];
 
   postPatch = ''
-    sed -i '/--cov/d' setup.cfg
-
     rm -r vendor
     patchShebangs tools
     touch .git  # tools/gen.py uses .git to find the project root
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     cython
     setuptools
   ];
@@ -66,7 +74,8 @@ buildPythonPackage rec {
     make cythonize
   '';
 
-  propagatedBuildInputs = [
+  dependencies = [
+    aiohappyeyeballs
     attrs
     multidict
     async-timeout
@@ -77,56 +86,53 @@ buildPythonPackage rec {
     brotli
   ];
 
+  postInstall = ''
+    # remove source code file with reference to dev dependencies
+    rm $out/${python.sitePackages}/aiohttp/_cparser.pxd{,.orig}
+  '';
+
   # NOTE: pytest-xdist cannot be added because it is flaky. See https://github.com/NixOS/nixpkgs/issues/230597 for more info.
   nativeCheckInputs = [
     freezegun
     gunicorn
+    proxy-py
+    pytest-cov-stub
     pytest-mock
-    pytest7CheckHook
+    pytestCheckHook
     python-on-whales
     re-assert
-  ] ++ lib.optionals (!(stdenv.isDarwin && stdenv.isAarch64)) [
-    # Optional test dependency. Depends indirectly on pyopenssl, which is
-    # broken on aarch64-darwin.
     trustme
   ];
 
-  disabledTests = [
-    # Disable tests that require network access
-    "test_client_session_timeout_zero"
-    "test_mark_formdata_as_processed"
-    "test_requote_redirect_url_default"
-    # Disable tests that trigger deprecation warnings in pytest
-    "test_async_with_session"
-    "test_session_close_awaitable"
-    "test_close_run_until_complete_not_deprecated"
-    # https://github.com/aio-libs/aiohttp/issues/7130
-    "test_static_file_if_none_match"
-    "test_static_file_if_match"
-    "test_static_file_if_modified_since_past_date"
-    # don't run benchmarks
-    "test_import_time"
-  ] ++ lib.optionals stdenv.is32bit [
-    "test_cookiejar"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_addresses"  # https://github.com/aio-libs/aiohttp/issues/3572, remove >= v4.0.0
-    "test_close"
-  ];
-
-  disabledTestPaths = [
-    "tests/test_proxy_functional.py" # FIXME package proxy.py
-  ];
+  disabledTests =
+    [
+      # Disable tests that require network access
+      "test_client_session_timeout_zero"
+      "test_mark_formdata_as_processed"
+      "test_requote_redirect_url_default"
+      # don't run benchmarks
+      "test_import_time"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.is32bit [ "test_cookiejar" ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      "test_addresses" # https://github.com/aio-libs/aiohttp/issues/3572, remove >= v4.0.0
+      "test_close"
+    ];
 
   __darwinAllowLocalNetworking = true;
 
-  # aiohttp in current folder shadows installed version
-  preCheck = ''
-    rm -r aiohttp
-    touch tests/data.unknown_mime_type # has to be modified after 1 Jan 1990
-  '' + lib.optionalString stdenv.isDarwin ''
-    # Work around "OSError: AF_UNIX path too long"
-    export TMPDIR="/tmp"
-  '';
+  preCheck =
+    ''
+      # aiohttp in current folder shadows installed version
+      rm -r aiohttp
+      touch tests/data.unknown_mime_type # has to be modified after 1 Jan 1990
+
+      export HOME=$(mktemp -d)
+    ''
+    + lib.optionalString stdenv.hostPlatform.isDarwin ''
+      # Work around "OSError: AF_UNIX path too long"
+      export TMPDIR="/tmp"
+    '';
 
   meta = with lib; {
     changelog = "https://github.com/aio-libs/aiohttp/blob/v${version}/CHANGES.rst";
diff --git a/pkgs/development/python-modules/aiohue/default.nix b/pkgs/development/python-modules/aiohue/default.nix
index 44ab0e99a9d0c..e681b6026a285 100644
--- a/pkgs/development/python-modules/aiohue/default.nix
+++ b/pkgs/development/python-modules/aiohue/default.nix
@@ -1,40 +1,40 @@
-{ lib
-, aiohttp
-, asyncio-throttle
-, awesomeversion
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pytest-aiohttp
-, pytest-asyncio
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  asyncio-throttle,
+  awesomeversion,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aiohue";
-  version = "4.7.1";
+  version = "4.7.3";
   pyproject = true;
 
-  disabled = pythonOlder "3.10";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "home-assistant-libs";
-    repo = pname;
+    repo = "aiohue";
     rev = "refs/tags/${version}";
-    hash = "sha256-/9kATmBNhKXt2PWB1pRdMJr+QzP23ajQK+jA8BuJ7J4=";
+    hash = "sha256-uS6pyJOntjbGa9UU1g53nuzgfP6AKAzN4meHrZY6Uic=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace 'version = "0.0.0"' 'version = "${version}"'
+      --replace-fail 'version = "0.0.0"' 'version = "${version}"' \
+      --replace-fail "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     awesomeversion
     aiohttp
     asyncio-throttle
diff --git a/pkgs/development/python-modules/aiohwenergy/default.nix b/pkgs/development/python-modules/aiohwenergy/default.nix
index fb4d89adab51d..a5f6c852d13f6 100644
--- a/pkgs/development/python-modules/aiohwenergy/default.nix
+++ b/pkgs/development/python-modules/aiohwenergy/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-WfkwIxyDzLNzhWNWST/V3iN9Bhu2oXDwGiA5UXCq5ho=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aiohwenergy"
-  ];
+  pythonImportsCheck = [ "aiohwenergy" ];
 
   meta = with lib; {
     description = "Python library to interact with the HomeWizard Energy devices API";
diff --git a/pkgs/development/python-modules/aioimaplib/default.nix b/pkgs/development/python-modules/aioimaplib/default.nix
index 84020ba7ac54f..737a0a3d8e97a 100644
--- a/pkgs/development/python-modules/aioimaplib/default.nix
+++ b/pkgs/development/python-modules/aioimaplib/default.nix
@@ -1,58 +1,50 @@
-{ lib
-, pythonOlder
-, pythonAtLeast
-, asynctest
-, buildPythonPackage
-, docutils
-, fetchFromGitHub
-, imaplib2
-, mock
-, nose
-, pyopenssl
-, pytestCheckHook
-, pytz
-, tzlocal
+{
+  lib,
+  asynctest,
+  buildPythonPackage,
+  docutils,
+  fetchFromGitHub,
+  imaplib2,
+  mock,
+  pyopenssl,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  setuptools,
+  tzlocal,
 }:
 
 buildPythonPackage rec {
   pname = "aioimaplib";
-  version = "1.0.1";
-  format = "setuptools";
+  version = "1.1.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.5";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "bamthomas";
-    repo = pname;
-    rev = version;
-    hash = "sha256-7Ta0BhtQSm228vvUa5z+pzM3UC7+BskgBNjxsbEb9P0=";
+    repo = "aioimaplib";
+    rev = "refs/tags/${version}";
+    hash = "sha256-TjCPGZGsSb+04kQNzHU3kWBo2vY34ujEqh1GIMIehJc=";
   };
 
-  # https://github.com/bamthomas/aioimaplib/issues/54
-  doCheck = pythonOlder "3.11";
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     asynctest
     docutils
     imaplib2
     mock
-    nose
     pyopenssl
     pytestCheckHook
     pytz
     tzlocal
   ];
 
-  disabledTests = [
-    # https://github.com/bamthomas/aioimaplib/issues/77
-    "test_get_quotaroot"
-    # asyncio.exceptions.TimeoutError
-    "test_idle"
-  ];
+  # https://github.com/bamthomas/aioimaplib/issues/54
+  doCheck = pythonOlder "3.11";
 
-  pythonImportsCheck = [
-    "aioimaplib"
-  ];
+  pythonImportsCheck = [ "aioimaplib" ];
 
   meta = with lib; {
     description = "Python asyncio IMAP4rev1 client library";
diff --git a/pkgs/development/python-modules/aioinflux/default.nix b/pkgs/development/python-modules/aioinflux/default.nix
index d45e02d1e91b0..ef5f9bcf6340d 100644
--- a/pkgs/development/python-modules/aioinflux/default.nix
+++ b/pkgs/development/python-modules/aioinflux/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, aiohttp
-, ciso8601
-, pandas
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  aiohttp,
+  ciso8601,
+  pandas,
 }:
 
 buildPythonPackage rec {
@@ -16,7 +17,11 @@ buildPythonPackage rec {
     sha256 = "1jy5mcg9wdz546s9wdwsgkxhm2ac4dmphd9vz243db39j1m0a3bj";
   };
 
-  propagatedBuildInputs = [ aiohttp ciso8601 pandas ];
+  propagatedBuildInputs = [
+    aiohttp
+    ciso8601
+    pandas
+  ];
 
   # Tests require InfluxDB server
   doCheck = false;
@@ -27,6 +32,9 @@ buildPythonPackage rec {
     description = "Asynchronous Python client for InfluxDB";
     homepage = "https://github.com/gusutabopb/aioinflux";
     license = licenses.mit;
-    maintainers = with maintainers; [ liamdiprose lopsided98 ];
+    maintainers = with maintainers; [
+      liamdiprose
+      lopsided98
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/aioitertools/default.nix b/pkgs/development/python-modules/aioitertools/default.nix
index 6fdc7dfd4d62a..879d1d5c6b529 100644
--- a/pkgs/development/python-modules/aioitertools/default.nix
+++ b/pkgs/development/python-modules/aioitertools/default.nix
@@ -1,50 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 
-# native
-, flit-core
+  # native
+  flit-core,
 
-# propagates
-, typing-extensions
+  # propagates
+  typing-extensions,
 
-# tests
-, unittestCheckHook
+  # tests
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "aioitertools";
-  version = "0.11.0";
-  format = "pyproject";
+  version = "0.12.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-QsaLjdOmnCv38iM7999LtYtVe8pSUqwC7VGHu8Z9aDE=";
+    hash = "sha256-wqkFW0+7dwX1YbnYYFPor10QzIRdIsMgCMQ0kLLY3Ws=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.10") [
-    typing-extensions
-  ];
+  dependencies = lib.optionals (pythonOlder "3.10") [ typing-extensions ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  pythonImportsCheck = [
-    "aioitertools"
-  ];
+  pythonImportsCheck = [ "aioitertools" ];
 
   meta = with lib; {
     description = "Implementation of itertools, builtins, and more for AsyncIO and mixed-type iterables";
     homepage = "https://aioitertools.omnilib.dev/";
+    changelog = "https://github.com/omnilib/aioitertools/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ teh ];
   };
diff --git a/pkgs/development/python-modules/aiojellyfin/default.nix b/pkgs/development/python-modules/aiojellyfin/default.nix
new file mode 100644
index 0000000000000..886346f92bbe1
--- /dev/null
+++ b/pkgs/development/python-modules/aiojellyfin/default.nix
@@ -0,0 +1,53 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  aiohttp,
+  mashumaro,
+
+  # tests
+  pytestCheckHook,
+  pytest-aiohttp,
+  pytest-cov-stub,
+}:
+
+buildPythonPackage rec {
+  pname = "aiojellyfin";
+  version = "0.10.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "Jc2k";
+    repo = "aiojellyfin";
+    rev = "v${version}";
+    hash = "sha256-D4/DlhCeeI4CggW7KGauZ57fHY92JM/kZSUODyNVcNg=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    aiohttp
+    mashumaro
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-aiohttp
+    pytest-cov-stub
+  ];
+
+  pythonImportsCheck = [ "aiojellyfin" ];
+
+  meta = with lib; {
+    description = "";
+    homepage = "https://github.com/Jc2k/aiojellyfin";
+    changelog = "https://github.com/Jc2k/aiojellyfin/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/development/python-modules/aiojobs/default.nix b/pkgs/development/python-modules/aiojobs/default.nix
index 62633de45385f..437e5a3ce0ce7 100644
--- a/pkgs/development/python-modules/aiojobs/default.nix
+++ b/pkgs/development/python-modules/aiojobs/default.nix
@@ -1,13 +1,15 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pytest-aiohttp,
+  pytest-cov-stub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -31,33 +33,21 @@ buildPythonPackage rec {
     })
   ];
 
-  postPatch = ''
-    substituteInPlace pytest.ini \
-      --replace "--cov=aiojobs/ --cov=tests/ --cov-report term" ""
-  '';
+  nativeBuildInputs = [ setuptools ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
-
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.11") [
-    async-timeout
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.11") [ async-timeout ];
 
   passthru.optional-dependencies = {
-    aiohttp = [
-      aiohttp
-    ];
+    aiohttp = [ aiohttp ];
   };
 
   nativeCheckInputs = [
     pytestCheckHook
     pytest-aiohttp
+    pytest-cov-stub
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "aiojobs"
-  ];
+  pythonImportsCheck = [ "aiojobs" ];
 
   disabledTests = [
     # RuntimeWarning: coroutine 'Scheduler._wait_failed' was never awaited
diff --git a/pkgs/development/python-modules/aiokafka/default.nix b/pkgs/development/python-modules/aiokafka/default.nix
index 45f79d81948c5..c44bf8e444682 100644
--- a/pkgs/development/python-modules/aiokafka/default.nix
+++ b/pkgs/development/python-modules/aiokafka/default.nix
@@ -1,57 +1,52 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, gssapi
-, kafka-python
-, lz4
-, packaging
-, python-snappy
-, pythonOlder
-, zlib
-, zstandard
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  cramjam,
+  cython,
+  fetchFromGitHub,
+  gssapi,
+  packaging,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
+  zlib,
 }:
 
 buildPythonPackage rec {
   pname = "aiokafka";
-  version = "0.10.0";
-  format = "setuptools";
+  version = "0.11.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "aio-libs";
-    repo = pname;
+    repo = "aiokafka";
     rev = "refs/tags/v${version}";
-    hash = "sha256-G9Q77nWUUW+hG/wm9z/S8gea4U1wHZdj7WdK2LsKBos=";
+    hash = "sha256-CeEPRCsf2SFI5J5FuQlCRRtlOPcCtRiGXJUIQOAbyCc=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     cython
+    setuptools
   ];
 
-  buildInputs = [
-    zlib
-  ];
+  buildInputs = [ zlib ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     async-timeout
-    kafka-python
     packaging
+    typing-extensions
   ];
 
-  passthru.optional-dependencies = {
-    snappy = [
-      python-snappy
-    ];
-    lz4 = [
-      lz4
-    ];
-    zstd = [
-      zstandard
-    ];
-    gssapi = [
+  optional-dependencies = {
+    snappy = [ cramjam ];
+    lz4 = [ cramjam ];
+    zstd = [ cramjam ];
+    gssapi = [ gssapi ];
+    all = [
+      cramjam
       gssapi
     ];
   };
@@ -59,15 +54,13 @@ buildPythonPackage rec {
   # Checks require running Kafka server
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aiokafka"
-  ];
+  pythonImportsCheck = [ "aiokafka" ];
 
   meta = with lib; {
     description = "Kafka integration with asyncio";
     homepage = "https://aiokafka.readthedocs.org";
     changelog = "https://github.com/aio-libs/aiokafka/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/aiokef/default.nix b/pkgs/development/python-modules/aiokef/default.nix
index f185f974c7f8a..52289adda8422 100644
--- a/pkgs/development/python-modules/aiokef/default.nix
+++ b/pkgs/development/python-modules/aiokef/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, tenacity
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  tenacity,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
     tenacity
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pytestFlagsArray = [ "tests" ];
   pythonImportsCheck = [ "aiokef" ];
diff --git a/pkgs/development/python-modules/aiolifx-connection/default.nix b/pkgs/development/python-modules/aiolifx-connection/default.nix
index 92cece410ee4d..4c024d45a378d 100644
--- a/pkgs/development/python-modules/aiolifx-connection/default.nix
+++ b/pkgs/development/python-modules/aiolifx-connection/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, aiolifx
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
+  aiolifx,
 }:
 
 buildPythonPackage rec {
@@ -18,16 +19,12 @@ buildPythonPackage rec {
     hash = "sha256:09fydp5fqqh1s0vav39mw98i1la6qcgk17gch0m5ihyl9q50ks13";
   };
 
-  propagatedBuildInputs = [
-    aiolifx
-  ];
+  propagatedBuildInputs = [ aiolifx ];
 
   # tests are not implemented
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aiolifx_connection"
-  ];
+  pythonImportsCheck = [ "aiolifx_connection" ];
 
   meta = with lib; {
     description = "Wrapper for aiolifx to connect to a single LIFX device";
diff --git a/pkgs/development/python-modules/aiolifx-effects/default.nix b/pkgs/development/python-modules/aiolifx-effects/default.nix
index 282a87c43d8db..975dce93766ac 100644
--- a/pkgs/development/python-modules/aiolifx-effects/default.nix
+++ b/pkgs/development/python-modules/aiolifx-effects/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, aiolifx
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
+  aiolifx,
 }:
 
 buildPythonPackage rec {
@@ -18,16 +19,12 @@ buildPythonPackage rec {
     hash = "sha256-Mhxs5PNr2W9ych56WYUZTEGck4HVTQfkil3S3zHv6Qc=";
   };
 
-  propagatedBuildInputs = [
-    aiolifx
-  ];
+  propagatedBuildInputs = [ aiolifx ];
 
   # tests are not implemented
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aiolifx_effects"
-  ];
+  pythonImportsCheck = [ "aiolifx_effects" ];
 
   meta = with lib; {
     changelog = "https://github.com/amelchio/aiolifx_effects/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/aiolifx-themes/default.nix b/pkgs/development/python-modules/aiolifx-themes/default.nix
index 284866dc921a6..76d690b16c9c1 100644
--- a/pkgs/development/python-modules/aiolifx-themes/default.nix
+++ b/pkgs/development/python-modules/aiolifx-themes/default.nix
@@ -6,14 +6,14 @@
   fetchFromGitHub,
   poetry-core,
   pytest-asyncio,
+  pytest-cov-stub,
   pytestCheckHook,
   pythonOlder,
-  typer,
 }:
 
 buildPythonPackage rec {
   pname = "aiolifx-themes";
-  version = "0.4.17";
+  version = "0.5.5";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -22,16 +22,9 @@ buildPythonPackage rec {
     owner = "Djelibeybi";
     repo = "aiolifx-themes";
     rev = "refs/tags/v${version}";
-    hash = "sha256-nKzvdDzwizF1Db8qFQuOH7gLnYHmdCYdQZPN+gNg8mU=";
+    hash = "sha256-Q4PlEnbdEUWYG/odD+xSG975lsRQqhOgFb//hk+PWIw=";
   };
 
-  prePatch = ''
-    # Don't run coverage, or depend on typer for no reason.
-    substituteInPlace pyproject.toml \
-      --replace-fail " --cov=aiolifx_themes --cov-report=term-missing:skip-covered" "" \
-      --replace-fail "typer = " "# unused: typer = "
-  '';
-
   build-system = [ poetry-core ];
 
   dependencies = [ aiolifx ];
@@ -40,6 +33,7 @@ buildPythonPackage rec {
     async-timeout
     pytestCheckHook
     pytest-asyncio
+    pytest-cov-stub
   ];
 
   pythonImportsCheck = [ "aiolifx_themes" ];
diff --git a/pkgs/development/python-modules/aiolifx/default.nix b/pkgs/development/python-modules/aiolifx/default.nix
index 8f3a773b713e1..8aec71d126e93 100644
--- a/pkgs/development/python-modules/aiolifx/default.nix
+++ b/pkgs/development/python-modules/aiolifx/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "aiolifx";
-  version = "1.0.2";
+  version = "1.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-E3UxNTqss3urpMTwhLhIoAnBekGOIyFy0+sOj3mGlss=";
+    hash = "sha256-oZpq2qUAtqDaRhgW9SbbQY9z81VqrqXhRLmpaPto9+A=";
   };
 
   build-system = [ setuptools ];
@@ -40,8 +40,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Module for local communication with LIFX devices over a LAN";
-    homepage = "https://github.com/frawau/aiolifx";
-    changelog = "https://github.com/frawau/aiolifx/releases/tag/${version}";
+    homepage = "https://github.com/aiolifx/aiolifx";
+    changelog = "https://github.com/aiolifx/aiolifx/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ netixx ];
     mainProgram = "aiolifx";
diff --git a/pkgs/development/python-modules/aiolimiter/default.nix b/pkgs/development/python-modules/aiolimiter/default.nix
index 5757a77da65ba..928fb0123a73b 100644
--- a/pkgs/development/python-modules/aiolimiter/default.nix
+++ b/pkgs/development/python-modules/aiolimiter/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, importlib-metadata
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, toml
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  importlib-metadata,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  toml,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,9 @@ buildPythonPackage rec {
     hash = "sha256-BpLh9utf2oJe+83rsIZeV5+MjbJ3aO5slMNVbUywQIo=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -42,9 +39,7 @@ buildPythonPackage rec {
       --replace " --cov=aiolimiter --cov-config=tox.ini --cov-report term-missing" ""
   '';
 
-  pythonImportsCheck = [
-    "aiolimiter"
-  ];
+  pythonImportsCheck = [ "aiolimiter" ];
 
   meta = with lib; {
     description = "Implementation of a rate limiter for asyncio";
diff --git a/pkgs/development/python-modules/aiolip/default.nix b/pkgs/development/python-modules/aiolip/default.nix
index d09efdf7866b5..06c23bc68bea4 100644
--- a/pkgs/development/python-modules/aiolip/default.nix
+++ b/pkgs/development/python-modules/aiolip/default.nix
@@ -1,29 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "aiolip";
   version = "1.1.6";
-  format = "setuptools";
+  pyproject = true;
   disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "bdraco";
-    repo = pname;
+    repo = "aiolip";
     rev = version;
     sha256 = "1bgmcl8q1p6f2xm3w2qylvla6vf6bd1p2hfwj4l8w6w0w04vr02g";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
-    substituteInPlace setup.py --replace "'pytest-runner'," ""
+    substituteInPlace setup.py --replace-fail "'pytest-runner'," ""
   '';
 
   pythonImportsCheck = [ "aiolip" ];
diff --git a/pkgs/development/python-modules/aiolivisi/default.nix b/pkgs/development/python-modules/aiolivisi/default.nix
index 1cad96a9425b3..4f7e703b3d599 100644
--- a/pkgs/development/python-modules/aiolivisi/default.nix
+++ b/pkgs/development/python-modules/aiolivisi/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pydantic
-, pytestCheckHook
-, pythonOlder
-, websockets
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  pydantic,
+  pythonOlder,
+  websockets,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +36,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aiolivisi"
-  ];
+  pythonImportsCheck = [ "aiolivisi" ];
 
   meta = with lib; {
     description = "Module to communicate with LIVISI Smart Home Controller";
diff --git a/pkgs/development/python-modules/aiolookin/default.nix b/pkgs/development/python-modules/aiolookin/default.nix
index 75a6b0715d203..ab251f3f820d5 100644
--- a/pkgs/development/python-modules/aiolookin/default.nix
+++ b/pkgs/development/python-modules/aiolookin/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, faker
-, fetchFromGitHub
-, pytest-aiohttp
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  faker,
+  fetchFromGitHub,
+  pytest-aiohttp,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-G3/lUgV60CMLskUo83TlvLLIfJtu5DEz+94mdVI4OrI=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   nativeCheckInputs = [
     faker
@@ -39,9 +38,7 @@ buildPythonPackage rec {
     "test_successful"
   ];
 
-  pythonImportsCheck = [
-    "aiolookin"
-  ];
+  pythonImportsCheck = [ "aiolookin" ];
 
   meta = with lib; {
     description = "Python client for interacting with LOOKin devices";
diff --git a/pkgs/development/python-modules/aiolyric/default.nix b/pkgs/development/python-modules/aiolyric/default.nix
index 4411b52a344f9..9119e2e3b5360 100644
--- a/pkgs/development/python-modules/aiolyric/default.nix
+++ b/pkgs/development/python-modules/aiolyric/default.nix
@@ -6,6 +6,7 @@
   fetchFromGitHub,
   incremental,
   pythonOlder,
+  pytest-asyncio,
   pytestCheckHook,
   setuptools,
 }:
@@ -24,7 +25,15 @@ buildPythonPackage rec {
     hash = "sha256-pN/F4Rdov06sm1yfJQEzmWyujWVeVU+bNGGkgnN4jYw=";
   };
 
-  build-system = [ setuptools ];
+  postPatch = ''
+    substituteInPlace requirements_setup.txt \
+      --replace-fail "==" ">="
+  '';
+
+  build-system = [
+    incremental
+    setuptools
+  ];
 
   dependencies = [
     aiohttp
@@ -33,14 +42,10 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     aioresponses
+    pytest-asyncio
     pytestCheckHook
   ];
 
-  disabledTests = [
-    # AssertionError, https://github.com/timmo001/aiolyric/issues/61
-    "test_priority"
-  ];
-
   pythonImportsCheck = [ "aiolyric" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/aiomcache/default.nix b/pkgs/development/python-modules/aiomcache/default.nix
new file mode 100644
index 0000000000000..f320ae7945d30
--- /dev/null
+++ b/pkgs/development/python-modules/aiomcache/default.nix
@@ -0,0 +1,42 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  python-memcached,
+  typing-extensions,
+}:
+
+buildPythonPackage rec {
+  pname = "aiomcache";
+  version = "0.8.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "aio-libs";
+    repo = "aiomcache";
+    rev = "v${version}";
+    hash = "sha256-+rlKHDop0kNxJ0HoXROs/oyI4zE3MDyxXXhWZtVDMj4=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ python-memcached ] ++ lib.optionals (pythonOlder "3.11") [ typing-extensions ];
+
+  doCheck = false; # executes memcached in docker
+
+  pythonImportsCheck = [ "aiomcache" ];
+
+  meta = with lib; {
+    changelog = "https://github.com/aio-libs/aiomcache/blob/${src.rev}/CHANGES.rst";
+    description = "Minimal asyncio memcached client";
+    homepage = "https://github.com/aio-libs/aiomcache/";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/development/python-modules/aiomealie/default.nix b/pkgs/development/python-modules/aiomealie/default.nix
new file mode 100644
index 0000000000000..e6ea538d24531
--- /dev/null
+++ b/pkgs/development/python-modules/aiomealie/default.nix
@@ -0,0 +1,58 @@
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mashumaro,
+  orjson,
+  poetry-core,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytestCheckHook,
+  pythonOlder,
+  syrupy,
+  yarl,
+}:
+
+buildPythonPackage rec {
+  pname = "aiomealie";
+  version = "0.9.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.11";
+
+  src = fetchFromGitHub {
+    owner = "joostlek";
+    repo = "python-mealie";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-rvizMeV1+tsBQiZl2Am4SjLrFkyhR/SvvLFwOTVP6wI=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    aiohttp
+    mashumaro
+    orjson
+    yarl
+  ];
+
+  nativeCheckInputs = [
+    aioresponses
+    pytest-asyncio
+    pytest-cov-stub
+    pytestCheckHook
+    syrupy
+  ];
+
+  pythonImportsCheck = [ "aiomealie" ];
+
+  meta = with lib; {
+    description = "Module to interact with Mealie";
+    homepage = "https://github.com/joostlek/python-mealie";
+    changelog = "https://github.com/joostlek/python-mealie/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/aiomisc-pytest/default.nix b/pkgs/development/python-modules/aiomisc-pytest/default.nix
index 674aef1d02ef9..ebbc22e37a22e 100644
--- a/pkgs/development/python-modules/aiomisc-pytest/default.nix
+++ b/pkgs/development/python-modules/aiomisc-pytest/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, aiomisc
-, buildPythonPackage
-, fetchPypi
-, poetry-core
-, pytest
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  aiomisc,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  pytest,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "aiomisc-pytest";
-  version = "1.1.2";
+  version = "1.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,29 +18,19 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "aiomisc_pytest";
     inherit version;
-    hash = "sha256-Zja0cNFrn6mUFlZOtzAtBJ/Gn27akD59qX6p88ytD6w=";
+    hash = "sha256-4mWP77R3CoX+XhoT6BbxQtxpINpdmeozjYUsegNfMyU=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
 
-  pythonRelaxDeps = [
-    "pytest"
-  ];
 
-  buildInputs = [
-    pytest
-  ];
+  pythonRelaxDeps = [ "pytest" ];
 
-  propagatedBuildInputs = [
-    aiomisc
-  ];
+  buildInputs = [ pytest ];
 
-  pythonImportsCheck = [
-    "aiomisc_pytest"
-  ];
+  dependencies = [ aiomisc ];
+
+  pythonImportsCheck = [ "aiomisc_pytest" ];
 
   # Module has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/aiomisc/default.nix b/pkgs/development/python-modules/aiomisc/default.nix
index 9182859bb90ef..59412173e9770 100644
--- a/pkgs/development/python-modules/aiomisc/default.nix
+++ b/pkgs/development/python-modules/aiomisc/default.nix
@@ -22,14 +22,14 @@
 
 buildPythonPackage rec {
   pname = "aiomisc";
-  version = "17.5.6";
+  version = "17.5.26";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-oq4z+ULN6VYkXX4Oz/JqKZSIh55AHOxFJVLyaNGqaNA=";
+    hash = "sha256-78N8SBzgUB0Lnbj79r3jfhx6ZwlsP9Eq7gTIPkZSPzM=";
   };
 
   build-system = [ poetry-core ];
@@ -37,7 +37,7 @@ buildPythonPackage rec {
   dependencies =
     [ colorlog ]
     ++ lib.optionals (pythonOlder "3.11") [ typing-extensions ]
-    ++ lib.optionals stdenv.isLinux [ logging-journald ];
+    ++ lib.optionals stdenv.hostPlatform.isLinux [ logging-journald ];
 
   nativeCheckInputs = [
     aiocontextvars
diff --git a/pkgs/development/python-modules/aiomodernforms/default.nix b/pkgs/development/python-modules/aiomodernforms/default.nix
index 98133f8b894f2..4727fa2b46a53 100644
--- a/pkgs/development/python-modules/aiomodernforms/default.nix
+++ b/pkgs/development/python-modules/aiomodernforms/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, aiohttp
-, backoff
-, yarl
-, aresponses
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  aiohttp,
+  backoff,
+  yarl,
+  aresponses,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/aiomqtt/default.nix b/pkgs/development/python-modules/aiomqtt/default.nix
index 16450a8758b99..69963a4650608 100644
--- a/pkgs/development/python-modules/aiomqtt/default.nix
+++ b/pkgs/development/python-modules/aiomqtt/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, anyio
-, buildPythonPackage
-, fetchFromGitHub
-, paho-mqtt
-, poetry-core
-, poetry-dynamic-versioning
-, pytestCheckHook
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  anyio,
+  buildPythonPackage,
+  fetchFromGitHub,
+  paho-mqtt,
+  poetry-core,
+  poetry-dynamic-versioning,
+  pytestCheckHook,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "aiomqtt";
   version = "2.0.1";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -24,12 +25,12 @@ buildPythonPackage rec {
     hash = "sha256-bV1elEO1518LVLwNDN5pzjxRgcG34K1XUsK7fTw8h+8=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
     poetry-dynamic-versioning
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     paho-mqtt
     typing-extensions
   ];
@@ -39,19 +40,18 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aiomqtt"
-  ];
+  pythonImportsCheck = [ "aiomqtt" ];
 
   pytestFlagsArray = [
-    "-m" "'not network'"
+    "-m"
+    "'not network'"
   ];
 
   meta = with lib; {
-    description = "The idiomatic asyncio MQTT client, wrapped around paho-mqtt";
+    description = "Idiomatic asyncio MQTT client, wrapped around paho-mqtt";
     homepage = "https://github.com/sbtinstruments/aiomqtt";
     changelog = "https://github.com/sbtinstruments/aiomqtt/blob/${src.rev}/CHANGELOG.md";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/aiomultiprocess/default.nix b/pkgs/development/python-modules/aiomultiprocess/default.nix
index f07b225890a5c..b1fc1479b7f36 100644
--- a/pkgs/development/python-modules/aiomultiprocess/default.nix
+++ b/pkgs/development/python-modules/aiomultiprocess/default.nix
@@ -32,6 +32,8 @@ buildPythonPackage rec {
     "test_pool_worker_exceptions"
     "test_pool_worker_max_tasks"
     "test_pool_worker_stop"
+    # error message changed with python 3.12
+    "test_spawn_method"
   ];
 
   pythonImportsCheck = [ "aiomultiprocess" ];
diff --git a/pkgs/development/python-modules/aiomusiccast/default.nix b/pkgs/development/python-modules/aiomusiccast/default.nix
index f2639400bb725..32245aec5a01c 100644
--- a/pkgs/development/python-modules/aiomusiccast/default.nix
+++ b/pkgs/development/python-modules/aiomusiccast/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, aiohttp
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  aiohttp,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
       --replace '"0.0.0"' '"${version}"'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -38,9 +37,7 @@ buildPythonPackage rec {
   # upstream has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aiomusiccast"
-  ];
+  pythonImportsCheck = [ "aiomusiccast" ];
 
   meta = with lib; {
     description = "Companion library for musiccast devices intended for the Home Assistant integration";
diff --git a/pkgs/development/python-modules/aiomysensors/default.nix b/pkgs/development/python-modules/aiomysensors/default.nix
deleted file mode 100644
index 5e3ca5a6089ec..0000000000000
--- a/pkgs/development/python-modules/aiomysensors/default.nix
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-  lib,
-  aiofiles,
-  asyncio-mqtt,
-  awesomeversion,
-  buildPythonPackage,
-  click,
-  fetchFromGitHub,
-  marshmallow,
-  poetry-core,
-  pyserial-asyncio,
-  pytest-asyncio,
-  pytestCheckHook,
-  pythonOlder,
-}:
-
-buildPythonPackage rec {
-  pname = "aiomysensors";
-  version = "0.3.15";
-  pyproject = true;
-
-  disabled = pythonOlder "3.9";
-
-  src = fetchFromGitHub {
-    owner = "MartinHjelmare";
-    repo = "aiomysensors";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-kgfz8VUTtOFN1hPkNJhPdRUKQn01BJn+92Ez6lgVGbc=";
-  };
-
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail " --cov=src --cov-report=term-missing:skip-covered" ""
-  '';
-
-  build-system = [ poetry-core ];
-
-  dependencies = [
-    aiofiles
-    asyncio-mqtt
-    awesomeversion
-    click
-    marshmallow
-    pyserial-asyncio
-  ];
-
-  nativeCheckInputs = [
-    pytest-asyncio
-    pytestCheckHook
-  ];
-
-  pythonImportsCheck = [ "aiomysensors" ];
-
-  meta = with lib; {
-    description = "Library to connect to MySensors gateways";
-    homepage = "https://github.com/MartinHjelmare/aiomysensors";
-    changelog = "https://github.com/MartinHjelmare/aiomysensors/releases/tag/v${version}";
-    license = with licenses; [ asl20 ];
-    maintainers = with maintainers; [ fab ];
-    mainProgram = "aiomysensors";
-  };
-}
diff --git a/pkgs/development/python-modules/aiomysql/default.nix b/pkgs/development/python-modules/aiomysql/default.nix
index acd3cc56e4a84..62abc53330da5 100644
--- a/pkgs/development/python-modules/aiomysql/default.nix
+++ b/pkgs/development/python-modules/aiomysql/default.nix
@@ -1,23 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pymysql
-, pythonOlder
-, setuptools-scm
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pymysql,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "aiomysql";
   version = "0.2.0";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "aio-libs";
-    repo = pname;
+    repo = "aiomysql";
     rev = "refs/tags/v${version}";
     hash = "sha256-m/EgoBU3e+s3soXyYtACMDSjJfMLBOk/00qPtgawwQ8=";
   };
@@ -33,25 +35,22 @@ buildPythonPackage rec {
   ];
 
   nativeBuildInputs = [
+    setuptools
     setuptools-scm
     wheel
   ];
 
-  propagatedBuildInputs = [
-    pymysql
-  ];
+  propagatedBuildInputs = [ pymysql ];
 
   # Tests require MySQL database
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aiomysql"
-  ];
+  pythonImportsCheck = [ "aiomysql" ];
 
   meta = with lib; {
     description = "MySQL driver for asyncio";
     homepage = "https://github.com/aio-libs/aiomysql";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/aionanoleaf/default.nix b/pkgs/development/python-modules/aionanoleaf/default.nix
index e819431a4220c..18b77947fbdda 100644
--- a/pkgs/development/python-modules/aionanoleaf/default.nix
+++ b/pkgs/development/python-modules/aionanoleaf/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-f0TyXhuAzI0s0n6sXH9mKWA4nad2YchZkQ0+jw/Bmv0=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aionanoleaf"
-  ];
+  pythonImportsCheck = [ "aionanoleaf" ];
 
   meta = with lib; {
     description = "Python wrapper for the Nanoleaf API";
diff --git a/pkgs/development/python-modules/aionotion/default.nix b/pkgs/development/python-modules/aionotion/default.nix
index 918900c34a477..50336dddb6878 100644
--- a/pkgs/development/python-modules/aionotion/default.nix
+++ b/pkgs/development/python-modules/aionotion/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, certifi
-, ciso8601
-, fetchFromGitHub
-, frozenlist
-, mashumaro
-, poetry-core
-, pyjwt
-, pytest-aiohttp
-, pytest-asyncio
-, pytestCheckHook
-, pytest-cov
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  certifi,
+  ciso8601,
+  fetchFromGitHub,
+  frozenlist,
+  mashumaro,
+  poetry-core,
+  pyjwt,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytestCheckHook,
+  pytest-cov-stub,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
     hash = "sha256-BsbfLb5wCVxR8v2U2Zzt7LMl7XJcZWfVjZN47VDkhFc=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -51,17 +50,13 @@ buildPythonPackage rec {
     aresponses
     pytest-aiohttp
     pytest-asyncio
-    pytest-cov
+    pytest-cov-stub
     pytestCheckHook
   ];
 
-  disabledTestPaths = [
-    "examples"
-  ];
+  disabledTestPaths = [ "examples" ];
 
-  pythonImportsCheck = [
-    "aionotion"
-  ];
+  pythonImportsCheck = [ "aionotion" ];
 
   meta = with lib; {
     description = "Python library for Notion Home Monitoring";
diff --git a/pkgs/development/python-modules/aionut/default.nix b/pkgs/development/python-modules/aionut/default.nix
index 8c9b8038ce998..cfcefeb330289 100644
--- a/pkgs/development/python-modules/aionut/default.nix
+++ b/pkgs/development/python-modules/aionut/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "aionut";
-  version = "4.3.2";
+  version = "4.3.3";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "bdraco";
     repo = "aionut";
     rev = "refs/tags/v${version}";
-    hash = "sha256-QehVC/6RbWp8KnOuVtLFkK8/STTgHXkXmFbSmzu9z7w=";
+    hash = "sha256-DCWfa5YfrB7MTf78AeSHDgiZzLNXoiNLnty9a+Sr9tQ=";
   };
 
   postPatch = ''
@@ -27,7 +27,7 @@ buildPythonPackage rec {
       --replace-fail " --cov=aionut --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [ poetry-core ];
+  build-system = [ poetry-core ];
 
   nativeCheckInputs = [
     pytest-asyncio
diff --git a/pkgs/development/python-modules/aiooncue/default.nix b/pkgs/development/python-modules/aiooncue/default.nix
index 4003ebd5de401..4925d8d344487 100644
--- a/pkgs/development/python-modules/aiooncue/default.nix
+++ b/pkgs/development/python-modules/aiooncue/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-TKOpx+twnG9zj7RcwOn53ebT7eyLOFKyxChp9lCdoU8=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Module doesn't have tests
   doCheck = false;
@@ -31,9 +30,7 @@ buildPythonPackage rec {
       --replace '"pytest-runner",' ""
   '';
 
-  pythonImportsCheck = [
-    "aiooncue"
-  ];
+  pythonImportsCheck = [ "aiooncue" ];
 
   meta = with lib; {
     description = "Module to interact with the Kohler Oncue API";
diff --git a/pkgs/development/python-modules/aioopenexchangerates/default.nix b/pkgs/development/python-modules/aioopenexchangerates/default.nix
index fc5eb933a98e2..960ba0dc9f84a 100644
--- a/pkgs/development/python-modules/aioopenexchangerates/default.nix
+++ b/pkgs/development/python-modules/aioopenexchangerates/default.nix
@@ -2,49 +2,44 @@
   lib,
   aiohttp,
   aioresponses,
-  pydantic,
   buildPythonPackage,
   fetchFromGitHub,
+  mashumaro,
   poetry-core,
   pytest-aiohttp,
+  pytest-cov-stub,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
 }:
 
 buildPythonPackage rec {
   pname = "aioopenexchangerates";
-  version = "0.4.11";
+  version = "0.6.3";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "MartinHjelmare";
     repo = "aioopenexchangerates";
     rev = "refs/tags/v${version}";
-    hash = "sha256-8AScYCDgv8Dkjt/0WJ4P2q2H9dykuq3w00qDDP8PiSs=";
+    hash = "sha256-JWf8MXwYKUF0brS+NcsPZkMS5XBtpZyFPD7dOS3g/6M=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail " --cov=aioopenexchangerates --cov-report=term-missing:skip-covered" ""
-  '';
-
   pythonRelaxDeps = [ "pydantic" ];
 
   build-system = [ poetry-core ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     aiohttp
-    pydantic
+    mashumaro
   ];
 
   nativeCheckInputs = [
     aioresponses
     pytest-aiohttp
+    pytest-cov-stub
     pytestCheckHook
   ];
 
diff --git a/pkgs/development/python-modules/aioopenssl/default.nix b/pkgs/development/python-modules/aioopenssl/default.nix
index 0ecbbc4e6a533..e51b023a30729 100644
--- a/pkgs/development/python-modules/aioopenssl/default.nix
+++ b/pkgs/development/python-modules/aioopenssl/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyopenssl
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyopenssl,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,15 +19,11 @@ buildPythonPackage rec {
     hash = "sha256-7Q+4/DlP+kUnC3YNk7woJaxLEEiuVmolUOajepM003Q=";
   };
 
-  propagatedBuildInputs = [
-    pyopenssl
-  ];
+  propagatedBuildInputs = [ pyopenssl ];
 
   pythonImportsCheck = [ "aioopenssl" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = {
     description = "TLS-capable transport using OpenSSL for asyncio";
diff --git a/pkgs/development/python-modules/aiooss2/default.nix b/pkgs/development/python-modules/aiooss2/default.nix
index 7bdd692ac2d6e..7d1e235949e70 100644
--- a/pkgs/development/python-modules/aiooss2/default.nix
+++ b/pkgs/development/python-modules/aiooss2/default.nix
@@ -8,7 +8,6 @@
   pytest-mock,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
   requests,
   setuptools,
   setuptools-scm,
@@ -38,7 +37,6 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     aiohttp
diff --git a/pkgs/development/python-modules/aiooui/default.nix b/pkgs/development/python-modules/aiooui/default.nix
index d26385e284b09..bc087915bf4fa 100644
--- a/pkgs/development/python-modules/aiooui/default.nix
+++ b/pkgs/development/python-modules/aiooui/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "aiooui";
-  version = "0.1.5";
+  version = "0.1.6";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -18,7 +19,7 @@ buildPythonPackage rec {
     owner = "Bluetooth-Devices";
     repo = "aiooui";
     rev = "refs/tags/v${version}";
-    hash = "sha256-/RZ8nZatlfo3AJvg/4JgyAHtrnoj50uxbhqr+ToCTJ4=";
+    hash = "sha256-dsMVKfY9o1krzp100/7JtClgPrpsFTVNwMnYMqOVFIU=";
   };
 
   postPatch = ''
@@ -30,18 +31,14 @@ buildPythonPackage rec {
       --replace-fail '"setuptools>=65.4.1", ' ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aiooui"
-  ];
+  pythonImportsCheck = [ "aiooui" ];
 
   meta = with lib; {
     description = "Async OUI lookups";
diff --git a/pkgs/development/python-modules/aiopg/default.nix b/pkgs/development/python-modules/aiopg/default.nix
index fb49bba0f4ab9..a54ce5436b7a9 100644
--- a/pkgs/development/python-modules/aiopg/default.nix
+++ b/pkgs/development/python-modules/aiopg/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, psycopg2
-, pythonOlder
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  psycopg2,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,7 @@ buildPythonPackage rec {
   # Tests requires a PostgreSQL Docker instance
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aiopg"
-  ];
+  pythonImportsCheck = [ "aiopg" ];
 
   meta = with lib; {
     description = "Python library for accessing a PostgreSQL database";
diff --git a/pkgs/development/python-modules/aiopinboard/default.nix b/pkgs/development/python-modules/aiopinboard/default.nix
index 33d4d82ea2187..f6785c7facb23 100644
--- a/pkgs/development/python-modules/aiopinboard/default.nix
+++ b/pkgs/development/python-modules/aiopinboard/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, aiohttp
-, aresponses
-, arrow
-, buildPythonPackage
-, certifi
-, fetchFromGitHub
-, frozenlist
-, poetry-core
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  arrow,
+  buildPythonPackage,
+  certifi,
+  fetchFromGitHub,
+  frozenlist,
+  poetry-core,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     hash = "sha256-/N9r17e0ZvPmcqW/XtRyAENKCGRzWqeOSKPpWHHYomg=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -45,10 +44,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-
-  pythonImportsCheck = [
-    "aiopinboard"
-  ];
+  pythonImportsCheck = [ "aiopinboard" ];
 
   meta = with lib; {
     description = "Library to interact with the Pinboard API";
diff --git a/pkgs/development/python-modules/aioprocessing/default.nix b/pkgs/development/python-modules/aioprocessing/default.nix
index 4a66a8f35d029..b54e16612f87b 100644
--- a/pkgs/development/python-modules/aioprocessing/default.nix
+++ b/pkgs/development/python-modules/aioprocessing/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-/gHHsaOMeBaGEdMEDnPZMDbDt8imSdY23J7Xo7ybG6I=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   # Tests aren't included in pypi package
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aioprocessing"
-  ];
+  pythonImportsCheck = [ "aioprocessing" ];
 
   meta = with lib; {
     description = "Library that integrates the multiprocessing module with asyncio";
diff --git a/pkgs/development/python-modules/aioprometheus/default.nix b/pkgs/development/python-modules/aioprometheus/default.nix
index 273d35fe13d98..0c74e4a6ac25e 100644
--- a/pkgs/development/python-modules/aioprometheus/default.nix
+++ b/pkgs/development/python-modules/aioprometheus/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, orjson
-, quantile-python
-, aiohttp
-, aiohttp-basicauth
-, starlette
-, quart
-, pytestCheckHook
-, httpx
-, fastapi
-, uvicorn
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  orjson,
+  quantile-python,
+  aiohttp,
+  aiohttp-basicauth,
+  starlette,
+  quart,
+  pytestCheckHook,
+  httpx,
+  fastapi,
+  uvicorn,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -34,15 +35,9 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    aiohttp = [
-      aiohttp
-    ];
-    starlette = [
-      starlette
-    ];
-    quart = [
-      quart
-    ];
+    aiohttp = [ aiohttp ];
+    starlette = [ starlette ];
+    quart = [ quart ];
   };
 
   nativeCheckInputs = [
@@ -56,7 +51,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "aioprometheus" ];
 
   meta = with lib; {
-    description = "A Prometheus Python client library for asyncio-based applications";
+    description = "Prometheus Python client library for asyncio-based applications";
     homepage = "https://github.com/claws/aioprometheus";
     changelog = "https://github.com/claws/aioprometheus/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/aiopulse/default.nix b/pkgs/development/python-modules/aiopulse/default.nix
index 3a2c11417be66..7309f774b14fa 100644
--- a/pkgs/development/python-modules/aiopulse/default.nix
+++ b/pkgs/development/python-modules/aiopulse/default.nix
@@ -1,37 +1,32 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  hatchling,
 }:
 
 buildPythonPackage rec {
   pname = "aiopulse";
-  version = "0.4.5";
+  version = "0.4.6";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-yrltqnePNnNwsVGkfXgtrtL/FuazRvmoVL4L0H4j4Bg=";
+    hash = "sha256-juubQHAAQYN9mSssfF3prYByy+wxscZFxwgspJU8zYA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
-    async-timeout
-  ];
+  dependencies = [ async-timeout ];
 
   # Tests are not present
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aiopulse"
-  ];
+  pythonImportsCheck = [ "aiopulse" ];
 
   meta = with lib; {
     description = "Python Rollease Acmeda Automate Pulse hub protocol implementation";
diff --git a/pkgs/development/python-modules/aiopurpleair/default.nix b/pkgs/development/python-modules/aiopurpleair/default.nix
index 2fd8515b237a9..bc6ec70a07536 100644
--- a/pkgs/development/python-modules/aiopurpleair/default.nix
+++ b/pkgs/development/python-modules/aiopurpleair/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, certifi
-, fetchFromGitHub
-, poetry-core
-, pydantic
-, pytest-aiohttp
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  certifi,
+  fetchFromGitHub,
+  poetry-core,
+  pydantic,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-2Ngo2pvzwcgQvpyW5Q97VQN/tGSVhVJwRj0DMaPn+O4=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -50,9 +49,7 @@ buildPythonPackage rec {
     "examples/"
   ];
 
-  pythonImportsCheck = [
-    "aiopurpleair"
-  ];
+  pythonImportsCheck = [ "aiopurpleair" ];
 
   meta = with lib; {
     description = "Python library for interacting with the PurpleAir API";
diff --git a/pkgs/development/python-modules/aiopvpc/default.nix b/pkgs/development/python-modules/aiopvpc/default.nix
index 19baf29f55c5c..2bfae84e1e762 100644
--- a/pkgs/development/python-modules/aiopvpc/default.nix
+++ b/pkgs/development/python-modules/aiopvpc/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, aiohttp
-, async-timeout
-, backports-zoneinfo
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytest-timeout
-, pytestCheckHook
-, pythonOlder
-, python-dotenv
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonOlder,
+  python-dotenv,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +17,7 @@ buildPythonPackage rec {
   version = "4.3.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "azogue";
@@ -31,15 +31,11 @@ buildPythonPackage rec {
       --replace-fail " --cov --cov-report term --cov-report html" ""
   '';
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     aiohttp
     async-timeout
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    backports-zoneinfo
   ];
 
   nativeCheckInputs = [
@@ -49,9 +45,7 @@ buildPythonPackage rec {
     python-dotenv
   ];
 
-  pythonImportsCheck = [
-    "aiopvpc"
-  ];
+  pythonImportsCheck = [ "aiopvpc" ];
 
   meta = with lib; {
     description = "Python module to download Spanish electricity hourly prices (PVPC)";
diff --git a/pkgs/development/python-modules/aiopyarr/default.nix b/pkgs/development/python-modules/aiopyarr/default.nix
index c4a6cf05ad519..a957998de3545 100644
--- a/pkgs/development/python-modules/aiopyarr/default.nix
+++ b/pkgs/development/python-modules/aiopyarr/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, ciso8601
-, fetchFromGitHub
-, orjson
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  ciso8601,
+  fetchFromGitHub,
+  orjson,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -41,9 +42,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aiopyarr"
-  ];
+  pythonImportsCheck = [ "aiopyarr" ];
 
   meta = with lib; {
     description = "Python API client for Lidarr/Radarr/Readarr/Sonarr";
diff --git a/pkgs/development/python-modules/aiopylgtv/default.nix b/pkgs/development/python-modules/aiopylgtv/default.nix
index b7034d3858353..8a23532f63454 100644
--- a/pkgs/development/python-modules/aiopylgtv/default.nix
+++ b/pkgs/development/python-modules/aiopylgtv/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, pythonOlder
-, sqlitedict
-, websockets
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  pythonOlder,
+  sqlitedict,
+  websockets,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/aioqsw/default.nix b/pkgs/development/python-modules/aioqsw/default.nix
index 7e62d1f2089d1..10fb274215f49 100644
--- a/pkgs/development/python-modules/aioqsw/default.nix
+++ b/pkgs/development/python-modules/aioqsw/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "aioqsw";
-  version = "0.3.5";
+  version = "0.4.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.11";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "Noltari";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-kSwTHwVSMGyXA0SF74f9gyBN82XhdjdN6DWrQV0PiaU=";
+    hash = "sha256-h/rTwMF3lc/hWwpzCvK6UMq0rjq3xkw/tEY3BqOPS2s=";
   };
 
   nativeBuildInputs = [
@@ -27,16 +27,12 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aioqsw"
-  ];
+  pythonImportsCheck = [ "aioqsw" ];
 
   meta = with lib; {
     description = "Library to fetch data from QNAP QSW switches";
diff --git a/pkgs/development/python-modules/aioquic/default.nix b/pkgs/development/python-modules/aioquic/default.nix
index 071fe70dd962c..66d429018f1c3 100644
--- a/pkgs/development/python-modules/aioquic/default.nix
+++ b/pkgs/development/python-modules/aioquic/default.nix
@@ -1,42 +1,33 @@
-{ lib
-, buildPythonPackage
-, certifi
-, cryptography
-, fetchPypi
-, fetchpatch
-, openssl
-, pylsqpack
-, pyopenssl
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, service-identity
+{
+  lib,
+  buildPythonPackage,
+  certifi,
+  cryptography,
+  fetchPypi,
+  openssl,
+  pylsqpack,
+  pyopenssl,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  service-identity,
 }:
 
 buildPythonPackage rec {
   pname = "aioquic";
-  version = "0.9.25";
+  version = "1.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-cHlceJBTJthVwq5SQHIjSq5YbHibgSkuJy0CHpsEMKM=";
+    hash = "sha256-+RJjuz9xlIxciRW01Q7jcABPIKQW9n+rPcyQVWx+cZk=";
   };
 
-  patches = [
-    (fetchpatch {
-      url = "https://github.com/aiortc/aioquic/commit/e899593805e0b31325a1d347504eb8e6100fe87d.diff";
-      hash = "sha256-TTpIIWX/R4k2KxhsN17O9cRW/dN0AARYnju8JTht3D8=";
-    })
-  ];
-
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     certifi
     cryptography
     pylsqpack
@@ -44,17 +35,11 @@ buildPythonPackage rec {
     service-identity
   ];
 
-  buildInputs = [
-    openssl
-  ];
+  buildInputs = [ openssl ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "aioquic"
-  ];
+  pythonImportsCheck = [ "aioquic" ];
 
   __darwinAllowLocalNetworking = true;
 
diff --git a/pkgs/development/python-modules/aioraven/default.nix b/pkgs/development/python-modules/aioraven/default.nix
index ca64f111e35e3..1d48f37e930cf 100644
--- a/pkgs/development/python-modules/aioraven/default.nix
+++ b/pkgs/development/python-modules/aioraven/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pythonOlder
-, iso4217
-, pyserial
-, pyserial-asyncio
-, pytestCheckHook
-, pytest-asyncio
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
+  iso4217,
+  pyserial,
+  pyserial-asyncio-fast,
+  pytestCheckHook,
+  pytest-asyncio,
 }:
 
 buildPythonPackage rec {
   pname = "aioraven";
-  version = "0.5.3";
+  version = "0.7.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -21,17 +22,15 @@ buildPythonPackage rec {
     owner = "cottsay";
     repo = "aioraven";
     rev = "refs/tags/${version}";
-    hash = "sha256-kGCFwpMaLWxLUp8k5H5AnL21KrwohbUYLswLcLqmc3M=";
+    hash = "sha256-ux2jeXkh8YsJ6mItXOx40pp0Tc+aJXMV7ZqyZg+iy2c=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     iso4217
     pyserial
-    pyserial-asyncio
+    pyserial-asyncio-fast
   ];
 
   nativeCheckInputs = [
@@ -39,9 +38,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aioraven"
-  ];
+  pythonImportsCheck = [ "aioraven" ];
 
   meta = with lib; {
     description = "Module for communication with RAVEn devices";
diff --git a/pkgs/development/python-modules/aiorecollect/default.nix b/pkgs/development/python-modules/aiorecollect/default.nix
index 4d3aae9dc1b8e..57a59497bbc62 100644
--- a/pkgs/development/python-modules/aiorecollect/default.nix
+++ b/pkgs/development/python-modules/aiorecollect/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, freezegun
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,13 +30,9 @@ buildPythonPackage rec {
     sed -i '/certifi =/d' pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -52,9 +48,7 @@ buildPythonPackage rec {
     "examples/"
   ];
 
-  pythonImportsCheck = [
-    "aiorecollect"
-  ];
+  pythonImportsCheck = [ "aiorecollect" ];
 
   meta = with lib; {
     description = "Python library for the Recollect Waste API";
diff --git a/pkgs/development/python-modules/aioredis/default.nix b/pkgs/development/python-modules/aioredis/default.nix
index 2c944600ef913..aef2e406036e6 100644
--- a/pkgs/development/python-modules/aioredis/default.nix
+++ b/pkgs/development/python-modules/aioredis/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, async-timeout
-, typing-extensions
-, hiredis
-, isPyPy
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchpatch,
+  fetchPypi,
+  async-timeout,
+  typing-extensions,
+  hiredis,
+  isPyPy,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/aioresponses/default.nix b/pkgs/development/python-modules/aioresponses/default.nix
index 6cbcad24bdc4c..5b102d463171d 100644
--- a/pkgs/development/python-modules/aioresponses/default.nix
+++ b/pkgs/development/python-modules/aioresponses/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-
-# build-system
-, pbr
-, setuptools
-
-# dependencies
-, aiohttp
-
-# tests
-, ddt
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+
+  # build-system
+  pbr,
+  setuptools,
+
+  # dependencies
+  aiohttp,
+
+  # tests
+  ddt,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -32,13 +33,9 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
-  pythonImportsCheck = [
-    "aioresponses"
-  ];
+  pythonImportsCheck = [ "aioresponses" ];
 
   nativeCheckInputs = [
     ddt
@@ -52,7 +49,7 @@ buildPythonPackage rec {
   ];
 
   meta = {
-    description = "A helper to mock/fake web requests in python aiohttp package";
+    description = "Helper to mock/fake web requests in python aiohttp package";
     homepage = "https://github.com/pnuckowski/aioresponses";
     license = lib.licenses.mit;
   };
diff --git a/pkgs/development/python-modules/aioridwell/default.nix b/pkgs/development/python-modules/aioridwell/default.nix
index 6598b42ed8bfe..da7c4322b7be6 100644
--- a/pkgs/development/python-modules/aioridwell/default.nix
+++ b/pkgs/development/python-modules/aioridwell/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, certifi
-, fetchFromGitHub
-, freezegun
-, poetry-core
-, pyjwt
-, pytest-aiohttp
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, pytz
-, titlecase
-, types-pytz
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  certifi,
+  fetchFromGitHub,
+  freezegun,
+  poetry-core,
+  pyjwt,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  titlecase,
+  types-pytz,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     hash = "sha256-B5k8uXDHq0U6fJVW8oy2sWUj5OIVGUfe9EtCjnIr3OE=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -63,9 +62,7 @@ buildPythonPackage rec {
     "examples/"
   ];
 
-  pythonImportsCheck = [
-    "aioridwell"
-  ];
+  pythonImportsCheck = [ "aioridwell" ];
 
   meta = with lib; {
     description = "Python library for interacting with Ridwell waste recycling";
diff --git a/pkgs/development/python-modules/aiormq/default.nix b/pkgs/development/python-modules/aiormq/default.nix
index 214ffc714ee63..0c80e43542641 100644
--- a/pkgs/development/python-modules/aiormq/default.nix
+++ b/pkgs/development/python-modules/aiormq/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, aiomisc-pytest
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pythonRelaxDepsHook
-, pytestCheckHook
-, pamqp
-, yarl
-, poetry-core
+{
+  lib,
+  aiomisc-pytest,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  pamqp,
+  yarl,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
   pname = "aiormq";
-  version = "6.8.0";
+  version = "6.8.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,30 +21,23 @@ buildPythonPackage rec {
     owner = "mosquito";
     repo = "aiormq";
     rev = "refs/tags/${version}";
-    hash = "sha256-XD1g4JXQJlJyXuZbo4hYW7cwQhy8+p4/inwNw2WOD9Y=";
+    hash = "sha256-3+PoDB5Owy8BWBUisX0i1mV8rqs5K9pBFQwup8vKxlg=";
   };
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "pamqp"
-  ];
+  pythonRelaxDeps = [ "pamqp" ];
 
   propagatedBuildInputs = [
     pamqp
     yarl
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  checkInputs = [
-    aiomisc-pytest
-  ];
+  checkInputs = [ aiomisc-pytest ];
 
   # Tests attempt to connect to a RabbitMQ server
   disabledTestPaths = [
@@ -52,9 +45,7 @@ buildPythonPackage rec {
     "tests/test_connection.py"
   ];
 
-  pythonImportsCheck = [
-    "aiormq"
-  ];
+  pythonImportsCheck = [ "aiormq" ];
 
   meta = with lib; {
     description = "AMQP 0.9.1 asynchronous client library";
diff --git a/pkgs/development/python-modules/aiorpcx/default.nix b/pkgs/development/python-modules/aiorpcx/default.nix
index 09a2bfb8562d6..7df3f61027a8a 100644
--- a/pkgs/development/python-modules/aiorpcx/default.nix
+++ b/pkgs/development/python-modules/aiorpcx/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, attrs
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
+  attrs,
 }:
 
 buildPythonPackage rec {
   pname = "aiorpcx";
-  version = "0.22.1";
+  version = "0.23.1";
   format = "setuptools";
 
   src = fetchPypi {
     inherit version;
     pname = "aiorpcX";
-    sha256 = "0lx54bcinp44fmr8q4bbffsqbkg8kdcwykf9i5jj0bj3sfzgf9k0";
+    hash = "sha256-WyMALxpNXTCF4xVVoHUZxe+NTEAHHrSZVW/9qBFIYKI=";
   };
 
   propagatedBuildInputs = [ attrs ];
diff --git a/pkgs/development/python-modules/aiortm/default.nix b/pkgs/development/python-modules/aiortm/default.nix
index 9e1384acc6792..7056d56f8599b 100644
--- a/pkgs/development/python-modules/aiortm/default.nix
+++ b/pkgs/development/python-modules/aiortm/default.nix
@@ -9,29 +9,29 @@
   mashumaro,
   poetry-core,
   pytest-asyncio,
+  pytest-cov-stub,
   pytestCheckHook,
   pythonOlder,
+  rich,
+  typer,
   yarl,
 }:
 
 buildPythonPackage rec {
   pname = "aiortm";
-  version = "0.8.13";
+  version = "0.9.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.12";
 
   src = fetchFromGitHub {
     owner = "MartinHjelmare";
     repo = "aiortm";
     rev = "refs/tags/v${version}";
-    hash = "sha256-JoolmxZFN0UG8wAMxMAYL8APFjpEcMECirCKUA/UBlY=";
+    hash = "sha256-fGUD0Ne7S2MyR4ilKy6GGzuWE+nO/DWMnBex4YZbXc8=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail " --cov=aiortm --cov-report=term-missing:skip-covered" ""
-  '';
+  pythonRelaxDeps = [ "typer" ];
 
   build-system = [ poetry-core ];
 
@@ -40,12 +40,15 @@ buildPythonPackage rec {
     ciso8601
     click
     mashumaro
+    rich
+    typer
     yarl
   ];
 
   nativeCheckInputs = [
     aioresponses
     pytest-asyncio
+    pytest-cov-stub
     pytestCheckHook
   ];
 
diff --git a/pkgs/development/python-modules/aiortsp/default.nix b/pkgs/development/python-modules/aiortsp/default.nix
index a988e670070de..0e3920cfd6a8b 100644
--- a/pkgs/development/python-modules/aiortsp/default.nix
+++ b/pkgs/development/python-modules/aiortsp/default.nix
@@ -1,38 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, dpkt
+  # dependencies
+  dpkt,
 
-# tests
-, mock
-, pytestCheckHook
-, pytest-asyncio
+  # tests
+  mock,
+  pytestCheckHook,
+  pytest-asyncio,
 }:
 
 buildPythonPackage rec {
   pname = "aiortsp";
-  version = "1.3.7";
+  version = "1.4.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "marss";
     repo = "aiortsp";
-    rev = version;
-    hash = "sha256-bxfnKAzMYh0lhS3he617eGhO7hmNbiwEYHh8k/PZ6r4=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-/ydsu+53WOocdWk3AW0/cXBEx1qAlhIC0LUDy459pbQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    dpkt
-  ];
+  propagatedBuildInputs = [ dpkt ];
 
   nativeCheckInputs = [
     mock
@@ -40,12 +37,10 @@ buildPythonPackage rec {
     pytest-asyncio
   ];
 
-  pythonImportsCheck = [
-    "aiortsp"
-  ];
+  pythonImportsCheck = [ "aiortsp" ];
 
   meta = with lib; {
-    description = "An Asyncio-based RTSP library";
+    description = "Asyncio-based RTSP library";
     homepage = "https://github.com/marss/aiortsp";
     changelog = "https://github.com/marss/aiortsp/blob/${src.rev}/CHANGELOG.rst";
     license = licenses.lgpl3Plus;
diff --git a/pkgs/development/python-modules/aioruckus/default.nix b/pkgs/development/python-modules/aioruckus/default.nix
index a3d77994f432c..e38c13e782699 100644
--- a/pkgs/development/python-modules/aioruckus/default.nix
+++ b/pkgs/development/python-modules/aioruckus/default.nix
@@ -1,19 +1,21 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
-, xmltodict
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
   pname = "aioruckus";
-  version = "0.34";
-  format = "pyproject";
+  version = "0.41";
+  pyproject = true;
 
   disabled = pythonOlder "3.10";
 
@@ -21,35 +23,27 @@ buildPythonPackage rec {
     owner = "ms264556";
     repo = "aioruckus";
     rev = "refs/tags/v${version}";
-    hash = "sha256-SPj1w1jAJFBsWj1+N8srAbvlh+yB3ZTT7aDcZTnmUto=";
+    hash = "sha256-acu0EWP/k0qyylPtM8IBxhJhhQhXpbG2NheYpD8RTG8=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace "setuptools>=68.1" "setuptools"
-  '';
+  build-system = [ setuptools ];
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
-  ];
-
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
+    cryptography
     xmltodict
   ];
 
-  pythonImportsCheck = [
-    "aioruckus"
-  ];
-
   nativeCheckInputs = [
+    aioresponses
     pytest-asyncio
     pytestCheckHook
   ];
 
+  pythonImportsCheck = [ "aioruckus" ];
+
   disabledTests = [
-    # these require a local ruckus device
+    # Those tests require a local ruckus device
     "test_ap_info"
     "test_authentication_error"
     "test_connect_success"
diff --git a/pkgs/development/python-modules/aiorun/default.nix b/pkgs/development/python-modules/aiorun/default.nix
index f0e63e0ae374c..26d02803c4d77 100644
--- a/pkgs/development/python-modules/aiorun/default.nix
+++ b/pkgs/development/python-modules/aiorun/default.nix
@@ -1,43 +1,41 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, fetchpatch
-, flit-core
-, pygments
-, pytestCheckHook
-, uvloop
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  fetchpatch,
+  flit-core,
+  pygments,
+  pytestCheckHook,
+  uvloop,
 }:
 
 buildPythonPackage rec {
   pname = "aiorun";
   version = "2023.7.2";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "cjrh";
-    repo = pname;
+    repo = "aiorun";
     rev = "refs/tags/v${version}";
     hash = "sha256-3AGsT8IUNi5SZHBsBfd7akj8eQ+xb0mrR7ydIr3T8gs=";
   };
 
   patches = [
     # Raise flit-core version constrains
-    (fetchpatch { # https://github.com/cjrh/aiorun/pull/85
+    (fetchpatch {
+      # https://github.com/cjrh/aiorun/pull/85
       url = "https://github.com/cjrh/aiorun/commit/a0c027ea331167712738e35ca70fefcd794e16d5.patch";
       hash = "sha256-M1rcrkdFcoFa3IncPnJaRhnXbelyk56QnMGtmgB6bvk=";
     })
   ];
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
-  propagatedBuildInputs = [
-    pygments
-  ];
+  dependencies = [ pygments ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -49,15 +47,13 @@ buildPythonPackage rec {
     export HOME=$TMPDIR
   '';
 
-  pythonImportsCheck = [
-    "aiorun"
-  ];
+  pythonImportsCheck = [ "aiorun" ];
 
   meta = with lib; {
     description = "Boilerplate for asyncio applications";
     homepage = "https://github.com/cjrh/aiorun";
     changelog = "https://github.com/cjrh/aiorun/blob/v${version}/CHANGES";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/aiorussound/default.nix b/pkgs/development/python-modules/aiorussound/default.nix
new file mode 100644
index 0000000000000..7c0f045c6222e
--- /dev/null
+++ b/pkgs/development/python-modules/aiorussound/default.nix
@@ -0,0 +1,53 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  mashumaro,
+  orjson,
+
+  # tests
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "aiorussound";
+  version = "3.1.5";
+  pyproject = true;
+
+  # requires newer f-strings introduced in 3.12
+  disabled = pythonOlder "3.12";
+
+  src = fetchFromGitHub {
+    owner = "noahhusby";
+    repo = "aiorussound";
+    rev = "refs/tags/${version}";
+    hash = "sha256-c9elemUdvX8Q8/Sr4DSXEx9SdRoLKibQFbY+WSDg/yM=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    mashumaro
+    orjson
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "aiorussound" ];
+
+  meta = with lib; {
+    changelog = "https://github.com/noahhusby/aiorussound/releases/tag/${version}";
+    description = "Async python package for interfacing with Russound RIO hardware";
+    homepage = "https://github.com/noahhusby/aiorussound";
+    license = licenses.mit;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/development/python-modules/aioruuvigateway/default.nix b/pkgs/development/python-modules/aioruuvigateway/default.nix
index 215d34d098b04..ac167e943bc59 100644
--- a/pkgs/development/python-modules/aioruuvigateway/default.nix
+++ b/pkgs/development/python-modules/aioruuvigateway/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, bluetooth-data-tools
-, httpx
-, pytest-asyncio
-, pytest-httpx
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  bluetooth-data-tools,
+  httpx,
+  pytest-asyncio,
+  pytest-httpx,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-Etv+kPFYEK79hpDeNmDfuyNj1vJ6udry1u+TRO5gLV4=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     bluetooth-data-tools
@@ -36,12 +35,10 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aioruuvigateway"
-  ];
+  pythonImportsCheck = [ "aioruuvigateway" ];
 
   meta = with lib; {
-    description = "An asyncio-native library for requesting data from a Ruuvi Gateway";
+    description = "Asyncio-native library for requesting data from a Ruuvi Gateway";
     homepage = "https://github.com/akx/aioruuvigateway";
     license = licenses.mit;
     maintainers = with maintainers; [ hexa ];
diff --git a/pkgs/development/python-modules/aiorwlock/default.nix b/pkgs/development/python-modules/aiorwlock/default.nix
index 87fab70a03f32..f5033ae3431e5 100644
--- a/pkgs/development/python-modules/aiorwlock/default.nix
+++ b/pkgs/development/python-modules/aiorwlock/default.nix
@@ -1,9 +1,9 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
-, pytest-asyncio
-, pytest-cov
-, pytestCheckHook
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/aiosasl/default.nix b/pkgs/development/python-modules/aiosasl/default.nix
index d904802ff61a2..fe977cc1bbec8 100644
--- a/pkgs/development/python-modules/aiosasl/default.nix
+++ b/pkgs/development/python-modules/aiosasl/default.nix
@@ -1,16 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pyopenssl
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pyopenssl,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aiosasl";
   version = "0.5.0";
+  pyproject = true;
 
-  format = "setuptools";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "horazont";
@@ -27,6 +31,14 @@ buildPythonPackage rec {
     })
   ];
 
+  postPatch = ''
+    # https://github.com/horazont/aiosasl/issues/28
+    substituteInPlace tests/test_aiosasl.py \
+      --replace-fail "assertRaisesRegexp" "assertRaisesRegex"
+  '';
+
+  build-system = [ setuptools ];
+
   nativeCheckInputs = [
     pyopenssl
     pytestCheckHook
diff --git a/pkgs/development/python-modules/aiosenz/default.nix b/pkgs/development/python-modules/aiosenz/default.nix
index cddb2f37071fc..430c5ba68d63b 100644
--- a/pkgs/development/python-modules/aiosenz/default.nix
+++ b/pkgs/development/python-modules/aiosenz/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, authlib
-, buildPythonPackage
-, fetchFromGitHub
-, httpx
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  authlib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpx,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-ODdWPS14zzptxuS6mff51f0s1SYnIqjF40DmvT0sL0w=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     httpx
@@ -34,9 +32,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aiosenz"
-  ];
+  pythonImportsCheck = [ "aiosenz" ];
 
   meta = with lib; {
     description = "Python wrapper for the nVent Raychem SENZ RestAPI";
diff --git a/pkgs/development/python-modules/aioserial/default.nix b/pkgs/development/python-modules/aioserial/default.nix
index ca0c4d2e8c6e0..d413591aaa3a1 100644
--- a/pkgs/development/python-modules/aioserial/default.nix
+++ b/pkgs/development/python-modules/aioserial/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyserial
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyserial,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-cCvwOw64S47y2NrFy5JeHmhdzpj3exJVabxv0rO1gig=";
   };
 
-  propagatedBuildInputs = [
-    pyserial
-  ];
+  propagatedBuildInputs = [ pyserial ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/aioshelly/default.nix b/pkgs/development/python-modules/aioshelly/default.nix
index 55c60d8e921a8..a7d2a53498529 100644
--- a/pkgs/development/python-modules/aioshelly/default.nix
+++ b/pkgs/development/python-modules/aioshelly/default.nix
@@ -1,34 +1,35 @@
-{ lib
-, aiohttp
-, bluetooth-data-tools
-, buildPythonPackage
-, fetchFromGitHub
-, habluetooth
-, orjson
-, pythonOlder
-, setuptools
-, yarl
+{
+  lib,
+  aiohttp,
+  bluetooth-data-tools,
+  buildPythonPackage,
+  fetchFromGitHub,
+  habluetooth,
+  orjson,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "aioshelly";
-  version = "8.2.0";
+  version = "11.4.2";
   pyproject = true;
 
-  disabled = pythonOlder "3.10";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "home-assistant-libs";
-    repo = pname;
+    repo = "aioshelly";
     rev = "refs/tags/${version}";
-    hash = "sha256-ZJ6lb3pd8DhNagaVq1uFwadtviuHCg44YZkh29ipu5U=";
+    hash = "sha256-aJA+iE8cyUPrL2n72N8/HI8//h0qR6k/hgD34vpwI+0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     bluetooth-data-tools
     habluetooth
@@ -36,13 +37,13 @@ buildPythonPackage rec {
     yarl
   ];
 
-  # Project has no test
-  doCheck = false;
-
-  pythonImportsCheck = [
-    "aioshelly"
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
   ];
 
+  pythonImportsCheck = [ "aioshelly" ];
+
   meta = with lib; {
     description = "Python library to control Shelly";
     homepage = "https://github.com/home-assistant-libs/aioshelly";
diff --git a/pkgs/development/python-modules/aioshutil/default.nix b/pkgs/development/python-modules/aioshutil/default.nix
index 84813ff04c970..aae881ce671dd 100644
--- a/pkgs/development/python-modules/aioshutil/default.nix
+++ b/pkgs/development/python-modules/aioshutil/default.nix
@@ -1,48 +1,45 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "aioshutil";
-  version = "1.3";
-  format = "pyproject";
+  version = "1.5";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "kumaraditya303";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-XIGjiLjoyS/7vUDIyBPvHNMyHOBa0gsg/c/vGgrhZAg=";
+    repo = "aioshutil";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-hSUNx43sIUPs4YfQ+H39FXTpj3oCMUqRzDdHX2OdRdE=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace-fail " --cov aioshutil --cov-report xml" ""
+  '';
+
+  nativeBuildInputs = [ setuptools-scm ];
 
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
   ];
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace " --cov aioshutil --cov-report xml" ""
-  '';
-
-  pythonImportsCheck = [
-    "aioshutil"
-  ];
+  pythonImportsCheck = [ "aioshutil" ];
 
   meta = with lib; {
     description = "Asynchronous version of function of shutil module";
     homepage = "https://github.com/kumaraditya303/aioshutil";
-    license = with licenses; [ bsd3 ];
+    license = licenses.bsd3;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/aiosignal/default.nix b/pkgs/development/python-modules/aiosignal/default.nix
index 2b3addc35917c..7e024ce276264 100644
--- a/pkgs/development/python-modules/aiosignal/default.nix
+++ b/pkgs/development/python-modules/aiosignal/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, frozenlist
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  frozenlist,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-vx3Fe28r+0it1UFwyDSD9NNyeIN4tywTyr4pVp49WuU=";
   };
 
-  propagatedBuildInputs = [
-    frozenlist
-  ];
+  propagatedBuildInputs = [ frozenlist ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -36,9 +35,7 @@ buildPythonPackage rec {
       --replace "--cov=aiosignal" ""
   '';
 
-  pythonImportsCheck = [
-    "aiosignal"
-  ];
+  pythonImportsCheck = [ "aiosignal" ];
 
   meta = with lib; {
     description = "Python list of registered asynchronous callbacks";
diff --git a/pkgs/development/python-modules/aioskybell/default.nix b/pkgs/development/python-modules/aioskybell/default.nix
index 2e5527850bf56..922d60f4c33c7 100644
--- a/pkgs/development/python-modules/aioskybell/default.nix
+++ b/pkgs/development/python-modules/aioskybell/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiofiles
-, aiohttp
-, aresponses
-, buildPythonPackage
-, ciso8601
-, fetchFromGitHub
-, pytest-asyncio
-, pytest-freezegun
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiofiles,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  ciso8601,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytest-freezegun,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
       --replace 'version="master",' 'version="${version}",'
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -48,9 +47,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aioskybell"
-  ];
+  pythonImportsCheck = [ "aioskybell" ];
 
   meta = with lib; {
     description = "API client for Skybell doorbells";
diff --git a/pkgs/development/python-modules/aioslimproto/default.nix b/pkgs/development/python-modules/aioslimproto/default.nix
index 0a92b10bfd29a..0f6d21d3aefbf 100644
--- a/pkgs/development/python-modules/aioslimproto/default.nix
+++ b/pkgs/development/python-modules/aioslimproto/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, pillow
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pillow,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
       --replace-fail "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -40,9 +39,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aioslimproto"
-  ];
+  pythonImportsCheck = [ "aioslimproto" ];
 
   meta = with lib; {
     description = "Module to control Squeezebox players";
diff --git a/pkgs/development/python-modules/aiosmb/default.nix b/pkgs/development/python-modules/aiosmb/default.nix
index 873eb8d24acf7..22b41376c464f 100644
--- a/pkgs/development/python-modules/aiosmb/default.nix
+++ b/pkgs/development/python-modules/aiosmb/default.nix
@@ -1,33 +1,37 @@
-{ lib
-, asyauth
-, asysocks
-, buildPythonPackage
-, colorama
-, cryptography
-, fetchPypi
-, minikerberos
-, prompt-toolkit
-, pycryptodomex
-, pythonOlder
-, six
-, tqdm
-, winacl
-, winsspi
+{
+  lib,
+  asyauth,
+  asysocks,
+  buildPythonPackage,
+  colorama,
+  cryptography,
+  fetchPypi,
+  minikerberos,
+  prompt-toolkit,
+  pycryptodomex,
+  pythonOlder,
+  setuptools,
+  six,
+  tqdm,
+  winacl,
+  winsspi,
 }:
 
 buildPythonPackage rec {
   pname = "aiosmb";
-  version = "0.4.10";
-  format = "setuptools";
+  version = "0.4.11";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-uN5lbhuPt9axp2ZTTxDgHuDRwlQjXANEkGPgQJL1o90=";
+    hash = "sha256-bWb1HtI1T3byBmE+rA1j83z9ntRL6figZZTUECRCc9c=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     asyauth
     asysocks
     colorama
@@ -44,15 +48,13 @@ buildPythonPackage rec {
   # Project doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aiosmb"
-  ];
+  pythonImportsCheck = [ "aiosmb" ];
 
   meta = with lib; {
     description = "Python SMB library";
     homepage = "https://github.com/skelsec/aiosmb";
     changelog = "https://github.com/skelsec/aiosmb/releases/tag/${version}";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/aiosmtpd/default.nix b/pkgs/development/python-modules/aiosmtpd/default.nix
index 2f3c5e3b836c0..ff9cb38cd6bac 100644
--- a/pkgs/development/python-modules/aiosmtpd/default.nix
+++ b/pkgs/development/python-modules/aiosmtpd/default.nix
@@ -1,34 +1,40 @@
-{ lib
-, atpublic
-, attrs
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  atpublic,
+  attrs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
+
+  # for passthru.tests
+  django,
+  aiosmtplib,
 }:
 
 buildPythonPackage rec {
   pname = "aiosmtpd";
-  version = "1.4.5";
-  format = "setuptools";
+  version = "1.4.6";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "aio-libs";
-    repo = pname;
+    repo = "aiosmtpd";
     rev = "refs/tags/v${version}";
-    hash = "sha256-8nQ4BVSLYgZHRGkbujy/olV/+GABlkDhe5wef3hyQpQ=";
+    hash = "sha256-Ih/xbWM9O/fFQiZezydlPlIr36fLRc2lLgdfxD5Jviw=";
   };
 
+  nativeBuildInputs = [ setuptools ];
+
   propagatedBuildInputs = [
     atpublic
     attrs
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
   nativeCheckInputs = [
     pytest-mock
@@ -45,14 +51,17 @@ buildPythonPackage rec {
     "test_byclient"
   ];
 
-  pythonImportsCheck = [
-    "aiosmtpd"
-  ];
+  pythonImportsCheck = [ "aiosmtpd" ];
+
+  passthru.tests = {
+    inherit django aiosmtplib;
+  };
 
   meta = with lib; {
     description = "Asyncio based SMTP server";
     mainProgram = "aiosmtpd";
     homepage = "https://aiosmtpd.readthedocs.io/";
+    changelog = "https://github.com/aio-libs/aiosmtpd/releases/tag/v${version}";
     longDescription = ''
       This is a server for SMTP and related protocols, similar in utility to the
       standard library's smtpd.py module.
diff --git a/pkgs/development/python-modules/aiosmtplib/default.nix b/pkgs/development/python-modules/aiosmtplib/default.nix
index dda58fc011e88..59e0fc5bd5971 100644
--- a/pkgs/development/python-modules/aiosmtplib/default.nix
+++ b/pkgs/development/python-modules/aiosmtplib/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, aiosmtpd
-, buildPythonPackage
-, fetchFromGitHub
-, hypothesis
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, trustme
+{
+  lib,
+  aiosmtpd,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hypothesis,
+  hatchling,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  trustme,
 }:
 
 buildPythonPackage rec {
   pname = "aiosmtplib";
-  version = "3.0.1";
-  format = "pyproject";
+  version = "3.0.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -21,12 +22,10 @@ buildPythonPackage rec {
     owner = "cole";
     repo = "aiosmtplib";
     rev = "refs/tags/v${version}";
-    hash = "sha256-67Z+k+PBIGP2oGb/52dMtsapUsHufvFcX+wWiMj5Jsg=";
+    hash = "sha256-1GuxlgNvzVv6hEQY1Mkv7NxAoOik9gpIS90a6flfC+k=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ hatchling ];
 
   nativeCheckInputs = [
     aiosmtpd
@@ -36,9 +35,7 @@ buildPythonPackage rec {
     trustme
   ];
 
-  pythonImportsCheck = [
-    "aiosmtplib"
-  ];
+  pythonImportsCheck = [ "aiosmtplib" ];
 
   meta = with lib; {
     description = "Module which provides a SMTP client";
diff --git a/pkgs/development/python-modules/aiosolaredge/default.nix b/pkgs/development/python-modules/aiosolaredge/default.nix
new file mode 100644
index 0000000000000..b05f1b84cc6ea
--- /dev/null
+++ b/pkgs/development/python-modules/aiosolaredge/default.nix
@@ -0,0 +1,49 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  aiohttp,
+  yarl,
+  pytest-asyncio,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "aiosolaredge";
+  version = "0.2.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "bdraco";
+    repo = "aiosolaredge";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-1C74U5HWDTJum1XES21t1uIJwm0YW3l041mwvqY/dA4=";
+  };
+
+  postPatch = ''
+    sed -i "/^addopts/d" pyproject.toml
+  '';
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    aiohttp
+    yarl
+  ];
+
+  pythonImportsCheck = [ "aiosolaredge" ];
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  meta = {
+    changelog = "https://github.com/bdraco/aiosolaredge/blob/${src.rev}/CHANGELOG.md";
+    description = "Asyncio SolarEdge API client";
+    homepage = "https://github.com/bdraco/aiosolaredge";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/aiosomecomfort/default.nix b/pkgs/development/python-modules/aiosomecomfort/default.nix
index 59698d94a3149..6161fd0166de5 100644
--- a/pkgs/development/python-modules/aiosomecomfort/default.nix
+++ b/pkgs/development/python-modules/aiosomecomfort/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, prettytable
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  prettytable,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,18 +22,14 @@ buildPythonPackage rec {
     hash = "sha256-EmglZW9gzgswxoEtDT+evjn8N+3aPooYFudwAXP8XEE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
     prettytable
   ];
 
-  pythonImportsCheck = [
-    "aiosomecomfort"
-  ];
+  pythonImportsCheck = [ "aiosomecomfort" ];
 
   # Tests only run on Windows, due to WindowsSelectorEventLoopPolicy
   doCheck = false;
diff --git a/pkgs/development/python-modules/aiosonic/default.nix b/pkgs/development/python-modules/aiosonic/default.nix
new file mode 100644
index 0000000000000..b5f4e5406b8bf
--- /dev/null
+++ b/pkgs/development/python-modules/aiosonic/default.nix
@@ -0,0 +1,147 @@
+{
+  nodejs,
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  # install_requires
+  charset-normalizer,
+  h2,
+  onecache,
+  # test dependencies
+  asgiref,
+  black,
+  django,
+  click,
+  httpx,
+  proxy-py,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytest-django,
+  pytest-mock,
+  pytest-sugar,
+  pytest-timeout,
+  uvicorn,
+  httptools,
+  typed-ast,
+  uvloop,
+  requests,
+  aiohttp,
+  aiodns,
+  pytestCheckHook,
+  stdenv,
+}:
+
+buildPythonPackage rec {
+  pname = "aiosonic";
+  version = "0.21.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  __darwinAllowLocalNetworking = true;
+
+  src = fetchFromGitHub {
+    owner = "sonic182";
+    repo = "aiosonic";
+    rev = "refs/tags/${version}";
+    hash = "sha256-YvqRuxl+Dgnsla/iotvWREdh93jwnXaq+F9py9MGP0o=";
+  };
+
+  postPatch = ''
+    substituteInPlace pytest.ini --replace-fail \
+      "addopts = --black --cov=aiosonic --cov-report term --cov-report html --doctest-modules" \
+      "addopts = --doctest-modules"
+  '';
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    charset-normalizer
+    onecache
+    h2
+  ];
+
+  nativeCheckInputs = [
+    aiohttp
+    aiodns
+    asgiref
+    black
+    django
+    click
+    httpx
+    proxy-py
+    pytest-aiohttp
+    pytest-asyncio
+    pytest-django
+    pytest-mock
+    pytest-sugar
+    pytest-timeout
+    uvicorn
+    httptools
+    typed-ast
+    uvloop
+    requests
+    pytestCheckHook
+    nodejs
+  ];
+
+  pythonImportsCheck = [ "aiosonic" ];
+
+  disabledTests =
+    lib.optionals stdenv.hostPlatform.isLinux [
+      # need network
+      "test_simple_get"
+      "test_get_python"
+      "test_post_http2"
+      "test_get_http2"
+      "test_method_lower"
+      "test_keep_alive_smart_pool"
+      "test_keep_alive_cyclic_pool"
+      "test_get_with_params"
+      "test_get_with_params_in_url"
+      "test_get_with_params_tuple"
+      "test_post_form_urlencoded"
+      "test_post_tuple_form_urlencoded"
+      "test_post_json"
+      "test_put_patch"
+      "test_delete"
+      "test_delete_2"
+      "test_get_keepalive"
+      "test_post_multipart_to_django"
+      "test_connect_timeout"
+      "test_read_timeout"
+      "test_timeouts_overriden"
+      "test_pool_acquire_timeout"
+      "test_simple_get_ssl"
+      "test_simple_get_ssl_ctx"
+      "test_simple_get_ssl_no_valid"
+      "test_get_chunked_response"
+      "test_get_chunked_response_and_not_read_it"
+      "test_read_chunks_by_text_method"
+      "test_get_body_gzip"
+      "test_get_body_deflate"
+      "test_post_chunked"
+      "test_close_connection"
+      "test_close_old_keeped_conn"
+      "test_get_redirect"
+      "test_max_redirects"
+      "test_get_image"
+      "test_get_image_chunked"
+      "test_get_with_cookies"
+      "test_proxy_request"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # "FAILED tests/test_proxy.py::test_proxy_request - Exception: port 8865 never got active"
+      "test_proxy_request"
+    ];
+
+  meta = {
+    changelog = "https://github.com/sonic182/aiosonic/blob/${version}/CHANGELOG.md";
+    description = "Very fast Python asyncio http client";
+    license = lib.licenses.mit;
+    homepage = "https://github.com/sonic182/aiosonic";
+    maintainers = with lib.maintainers; [ geraldog ];
+  };
+}
diff --git a/pkgs/development/python-modules/aiosql/default.nix b/pkgs/development/python-modules/aiosql/default.nix
index ac2ff4a650a87..5f587ef0159c0 100644
--- a/pkgs/development/python-modules/aiosql/default.nix
+++ b/pkgs/development/python-modules/aiosql/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pg8000
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
-, sphinx-rtd-theme
-, sphinxHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pg8000,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  sphinx-rtd-theme,
+  sphinxHook,
 }:
 
 buildPythonPackage rec {
   pname = "aiosql";
-  version = "10.1";
+  version = "10.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -27,7 +28,7 @@ buildPythonPackage rec {
     owner = "nackjicholson";
     repo = "aiosql";
     rev = "refs/tags/${version}";
-    hash = "sha256-KlDwvoU0GYCN+ZCp4pp557qf9ChceS4NeA0Yiq+g3YQ=";
+    hash = "sha256-TETZxIbC7pdak3m1rBwDg7L1yah/bin6iOZD/uANh48=";
   };
 
   sphinxRoot = "docs/source";
@@ -39,18 +40,14 @@ buildPythonPackage rec {
     sphinxHook
   ];
 
-  propagatedBuildInputs = [
-    pg8000
-  ];
+  propagatedBuildInputs = [ pg8000 ];
 
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aiosql"
-  ];
+  pythonImportsCheck = [ "aiosql" ];
 
   meta = with lib; {
     description = "Simple SQL in Python";
diff --git a/pkgs/development/python-modules/aiosqlite/default.nix b/pkgs/development/python-modules/aiosqlite/default.nix
index bd16b06895a61..4fdd1c6a67b73 100644
--- a/pkgs/development/python-modules/aiosqlite/default.nix
+++ b/pkgs/development/python-modules/aiosqlite/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pytestCheckHook
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pytestCheckHook,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -21,32 +22,22 @@ buildPythonPackage rec {
     hash = "sha256-JQ9iNxK7FvBhPyr825d+8P5ZYFztDIX3gOwp4FPfyU4=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ typing-extensions ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Tests are not pick-up automatically by the hook
-  pytestFlagsArray = [
-    "aiosqlite/tests/*.py"
-  ];
+  pytestFlagsArray = [ "aiosqlite/tests/*.py" ];
 
-  pythonImportsCheck = [
-    "aiosqlite"
-  ];
+  pythonImportsCheck = [ "aiosqlite" ];
 
   meta = with lib; {
     description = "Asyncio bridge to the standard sqlite3 module";
     homepage = "https://github.com/jreese/aiosqlite";
     changelog = "https://github.com/omnilib/aiosqlite/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/aiosteamist/default.nix b/pkgs/development/python-modules/aiosteamist/default.nix
index 535594e3d28dd..31e9ff403b7f8 100644
--- a/pkgs/development/python-modules/aiosteamist/default.nix
+++ b/pkgs/development/python-modules/aiosteamist/default.nix
@@ -1,52 +1,51 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
-, xmltodict
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
   pname = "aiosteamist";
-  version = "0.3.2";
-  format = "pyproject";
+  version = "1.0.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "bdraco";
-    repo = pname;
-    rev = version;
-    hash = "sha256-IKrAJ4QDcYJRO4hcomL9FRs8hJ3k7SgRgK4H1b8SxIM=";
+    repo = "aiosteamist";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-vqCcQDUMFFhIOoiER5TMOxJPY7HYFS4K1fuu/1IqP44=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "--cov=aiosteamist" ""
+  '';
+
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     xmltodict
   ];
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace "--cov=aiosteamist" "" \
-      --replace 'xmltodict = "^0.12.0"' 'xmltodict = "*"'
-  '';
-
-  pythonImportsCheck = [
-    "aiosteamist"
+  nativeCheckInputs = [
+    pytestCheckHook
   ];
 
-  # Modules doesn't have test suite
-  doCheck = false;
+  pythonImportsCheck = [ "aiosteamist" ];
 
   meta = with lib; {
     description = "Module to control Steamist steam systems";
     homepage = "https://github.com/bdraco/aiosteamist";
-    license = with licenses; [ asl20 ];
+    changelog = "https://github.com/bdraco/aiosteamist/releases/tag/v${version}";
+    license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/aiostream/default.nix b/pkgs/development/python-modules/aiostream/default.nix
index 43f3ae89f1383..e6f7900a0b934 100644
--- a/pkgs/development/python-modules/aiostream/default.nix
+++ b/pkgs/development/python-modules/aiostream/default.nix
@@ -1,43 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "aiostream";
-  version = "0.5.2";
-  format = "setuptools";
+  version = "0.6.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "vxgmichel";
-    repo = pname;
+    repo = "aiostream";
     rev = "refs/tags/v${version}";
-    hash = "sha256-g2W2TtCh2ANPjeTdASVgEu+qKfz/Ugh1rDWJcFvOJpI=";
+    hash = "sha256-uMK3WFO4IvrI7QBGiu1MOInRfGgdWufe4zefmT1Bjv0=";
   };
 
   postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace " --cov aiostream --cov-report html --cov-report term" ""
+    substituteInPlace pyproject.toml \
+      --replace-fail " --cov aiostream" ""
   '';
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ typing-extensions ];
 
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aiostream"
-  ];
+  pythonImportsCheck = [ "aiostream" ];
 
   meta = with lib; {
     description = "Generator-based operators for asynchronous iteration";
diff --git a/pkgs/development/python-modules/aiostreammagic/default.nix b/pkgs/development/python-modules/aiostreammagic/default.nix
new file mode 100644
index 0000000000000..fdee19ddc1f81
--- /dev/null
+++ b/pkgs/development/python-modules/aiostreammagic/default.nix
@@ -0,0 +1,52 @@
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mashumaro,
+  orjson,
+  poetry-core,
+  pythonOlder,
+  websockets,
+  yarl,
+}:
+
+buildPythonPackage rec {
+  pname = "aiostreammagic";
+  version = "2.4.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.11";
+
+  src = fetchFromGitHub {
+    owner = "noahhusby";
+    repo = "aiostreammagic";
+    rev = "refs/tags/${version}";
+    hash = "sha256-TWGDviQ1SYLlzuIsot7JgB5XIEZES54ERJ3tv7+9DNc=";
+  };
+
+  pythonRelaxDeps = [ "websockets" ];
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    aiohttp
+    mashumaro
+    orjson
+    websockets
+    yarl
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "aiostreammagic" ];
+
+  meta = {
+    description = "Module for interfacing with Cambridge Audio/Stream Magic compatible streamers";
+    homepage = "https://github.com/noahhusby/aiostreammagic";
+    changelog = "https://github.com/noahhusby/aiostreammagic/releases/tag/${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/aioswitcher/default.nix b/pkgs/development/python-modules/aioswitcher/default.nix
index 4534dcf09687d..421e8ebc9b3cc 100644
--- a/pkgs/development/python-modules/aioswitcher/default.nix
+++ b/pkgs/development/python-modules/aioswitcher/default.nix
@@ -1,36 +1,44 @@
-{ lib
-, assertpy
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytest-mockservers
-, pytest-resource-path
-, pytest-sugar
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, time-machine
+{
+  lib,
+  aiohttp,
+  assertpy,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  poetry-core,
+  pycryptodome,
+  pytest-asyncio,
+  pytest-mockservers,
+  pytest-resource-path,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  time-machine,
 }:
 
 buildPythonPackage rec {
   pname = "aioswitcher";
-  version = "3.4.2";
+  version = "4.0.3";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "TomerFi";
-    repo = pname;
+    repo = "aioswitcher";
     rev = "refs/tags/${version}";
-    hash = "sha256-UpwIzwOl1yKqK8KxFDXAWoZFkQ+1r1sUcDfx6AxRdNw=";
+    hash = "sha256-QSnroxVHlfZd6QDaqUTMyoctiEsxWmGmFxzql1YIAD0=";
   };
 
   __darwinAllowLocalNetworking = true;
 
-  nativeBuildInputs = [
-    poetry-core
+  build-system = [ poetry-core ];
+
+  pythonRelaxDeps = [ "aiohttp" ];
+
+  dependencies = [
+    aiohttp
+    pycryptodome
   ];
 
   preCheck = ''
@@ -39,35 +47,35 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     assertpy
+    freezegun
     pytest-asyncio
     pytest-mockservers
     pytest-resource-path
-    pytest-sugar
     pytestCheckHook
     time-machine
   ];
 
-  disabledTests = [
-    # AssertionError: Expected <14:00> to be equal to <17:00>, but was not.
-    "test_schedule_parser_with_a_weekly_recurring_enabled_schedule_data"
-    "test_schedule_parser_with_a_daily_recurring_enabled_schedule_data"
-    "test_schedule_parser_with_a_partial_daily_recurring_enabled_schedule_data"
-    "test_schedule_parser_with_a_non_recurring_enabled_schedule_data"
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    # ssertionError: Expected <'I' format requires 0 <= number <= 4294967295> to be equal to <argument out of range>, but was not.
-    "test_minutes_to_hexadecimal_seconds_with_a_negative_value_should_throw_an_error"
-    "test_current_timestamp_to_hexadecimal_with_errornous_value_should_throw_an_error"
-  ];
+  disabledTests =
+    [
+      # AssertionError: Expected <14:00> to be equal to <17:00>, but was not.
+      "test_schedule_parser_with_a_weekly_recurring_enabled_schedule_data"
+      "test_schedule_parser_with_a_daily_recurring_enabled_schedule_data"
+      "test_schedule_parser_with_a_partial_daily_recurring_enabled_schedule_data"
+      "test_schedule_parser_with_a_non_recurring_enabled_schedule_data"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      # ssertionError: Expected <'I' format requires 0 <= number <= 4294967295> to be equal to <argument out of range>, but was not.
+      "test_minutes_to_hexadecimal_seconds_with_a_negative_value_should_throw_an_error"
+      "test_current_timestamp_to_hexadecimal_with_errornous_value_should_throw_an_error"
+    ];
 
-  pythonImportsCheck = [
-    "aioswitcher"
-  ];
+  pythonImportsCheck = [ "aioswitcher" ];
 
   meta = with lib; {
     description = "Python module to interact with Switcher water heater";
     homepage = "https://github.com/TomerFi/aioswitcher";
     changelog = "https://github.com/TomerFi/aioswitcher/releases/tag/${version}";
-    license = with licenses; [ mit ];
+    license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/aiosyncthing/default.nix b/pkgs/development/python-modules/aiosyncthing/default.nix
index fd9d02cb3a72a..59bc50e78e377 100644
--- a/pkgs/development/python-modules/aiosyncthing/default.nix
+++ b/pkgs/development/python-modules/aiosyncthing/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, expects
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
-, yarl
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  expects,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -35,9 +36,7 @@ buildPythonPackage rec {
     pytest-mock
   ];
 
-  pytestFlagsArray = [
-    "--asyncio-mode=auto"
-  ];
+  pytestFlagsArray = [ "--asyncio-mode=auto" ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
diff --git a/pkgs/development/python-modules/aiotankerkoenig/default.nix b/pkgs/development/python-modules/aiotankerkoenig/default.nix
index 5915fdd6beb15..a82a963419cc1 100644
--- a/pkgs/development/python-modules/aiotankerkoenig/default.nix
+++ b/pkgs/development/python-modules/aiotankerkoenig/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, mashumaro
-, orjson
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, syrupy
-, yarl
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mashumaro,
+  orjson,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  syrupy,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "aiotankerkoenig";
-  version = "0.4.1";
+  version = "0.4.2";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -24,7 +25,7 @@ buildPythonPackage rec {
     owner = "jpbede";
     repo = "aiotankerkoenig";
     rev = "refs/tags/v${version}";
-    hash = "sha256-BB1Cy4Aji5m06LlNj03as4CWF8RcYKAYy4oxPomOP68=";
+    hash = "sha256-WRR4CLVkHN1JR4rwNu0ULoiu0zO0M2YdvCHYp0Tt9VU=";
   };
 
   postPatch = ''
@@ -32,9 +33,7 @@ buildPythonPackage rec {
       --replace-fail "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -50,9 +49,7 @@ buildPythonPackage rec {
     syrupy
   ];
 
-  pythonImportsCheck = [
-    "aiotankerkoenig"
-  ];
+  pythonImportsCheck = [ "aiotankerkoenig" ];
 
   meta = with lib; {
     description = "Python module for interacting with tankerkoenig.de";
diff --git a/pkgs/development/python-modules/aiotractive/default.nix b/pkgs/development/python-modules/aiotractive/default.nix
index 4af4f9618784f..a0eb4b1b1f795 100644
--- a/pkgs/development/python-modules/aiotractive/default.nix
+++ b/pkgs/development/python-modules/aiotractive/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, yarl
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "aiotractive";
-  version = "0.5.7";
+  version = "0.6.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,12 +19,10 @@ buildPythonPackage rec {
     owner = "zhulik";
     repo = "aiotractive";
     rev = "refs/tags/v${version}";
-    hash = "sha256-fIdIFG1OpAN1R2L2RryTzYZyqGLo3tqAAkRC8UUFM4k=";
+    hash = "sha256-QwwW/UxRgd4rco80SqQUGt0ArDNT9MXa/U/W2/dHZT0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -33,9 +32,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aiotractive"
-  ];
+  pythonImportsCheck = [ "aiotractive" ];
 
   meta = with lib; {
     changelog = "https://github.com/zhulik/aiotractive/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/aiounifi/default.nix b/pkgs/development/python-modules/aiounifi/default.nix
index f4f150c820f82..1d325c1eb8033 100644
--- a/pkgs/development/python-modules/aiounifi/default.nix
+++ b/pkgs/development/python-modules/aiounifi/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "aiounifi";
-  version = "77";
+  version = "80";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "Kane610";
     repo = "aiounifi";
     rev = "refs/tags/v${version}";
-    hash = "sha256-c3UR/AwnQLm6h1jsM6mk6MOii2/xQzFcrci+oG4BsDs=";
+    hash = "sha256-320ptaKT+6mKUj9y+MvGovp4/XVbYIlDTb9lLXY7c1w=";
   };
 
   postPatch = ''
@@ -61,7 +61,7 @@ buildPythonPackage rec {
     homepage = "https://github.com/Kane610/aiounifi";
     changelog = "https://github.com/Kane610/aiounifi/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     mainProgram = "aiounifi";
   };
 }
diff --git a/pkgs/development/python-modules/aiounittest/default.nix b/pkgs/development/python-modules/aiounittest/default.nix
index 1c97a430503a4..e715d99833f8d 100644
--- a/pkgs/development/python-modules/aiounittest/default.nix
+++ b/pkgs/development/python-modules/aiounittest/default.nix
@@ -1,11 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
-, setuptools
-, pynose
-, coverage
-, wrapt
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  wrapt,
 }:
 
 buildPythonPackage rec {
@@ -20,22 +19,11 @@ buildPythonPackage rec {
     hash = "sha256-7lDOI1SHPpRZLTHRTmfbKlZH18T73poJdFyVmb+HKms=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    wrapt
-  ];
+  propagatedBuildInputs = [ wrapt ];
 
-  nativeCheckInputs = [
-    pynose
-    coverage
-  ];
-
-  checkPhase = ''
-    nosetests -e test_specific_test
-  '';
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "aiounittest" ];
 
diff --git a/pkgs/development/python-modules/aiovlc/default.nix b/pkgs/development/python-modules/aiovlc/default.nix
index 39607c9fdde51..329cfee05257a 100644
--- a/pkgs/development/python-modules/aiovlc/default.nix
+++ b/pkgs/development/python-modules/aiovlc/default.nix
@@ -1,45 +1,46 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, pytest-asyncio
-, pytest-timeout
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonOlder,
+  rich,
+  typer,
 }:
 
 buildPythonPackage rec {
   pname = "aiovlc";
-  version = "0.3.2";
-  format = "setuptools";
+  version = "0.5.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "MartinHjelmare";
-    repo = pname;
+    repo = "aiovlc";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+IpWX661Axl2Ke1NGN6W9CMMQMEu7EQ/2PeRkkByAxI=";
+    hash = "sha256-F66HGfbsve/jYyUEapUTVtLxaEIW63r3eNNk7mXOx5Y=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml --replace \
-      " --cov=aiovlc --cov-report=term-missing:skip-covered" ""
-  '';
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    click
+  dependencies = [
+    rich
+    typer
   ];
 
   nativeCheckInputs = [
     pytest-asyncio
+    pytest-cov-stub
     pytest-timeout
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aiovlc"
-  ];
+  pythonImportsCheck = [ "aiovlc" ];
 
   meta = with lib; {
     description = "Python module to control VLC";
diff --git a/pkgs/development/python-modules/aiovodafone/default.nix b/pkgs/development/python-modules/aiovodafone/default.nix
index 5344131279934..fc5b91f13a1bd 100644
--- a/pkgs/development/python-modules/aiovodafone/default.nix
+++ b/pkgs/development/python-modules/aiovodafone/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "aiovodafone";
-  version = "0.6.0";
+  version = "0.6.1";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "chemelli74";
     repo = "aiovodafone";
     rev = "refs/tags/v${version}";
-    hash = "sha256-sy7/nCthmfI0WdBkwBU83fifcYTe9zUBOpxV7RX9F6w=";
+    hash = "sha256-ZBy3lo7rb361aysi2ezryd5H47r6sgSqmYNeAI+wXeQ=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/aiowaqi/default.nix b/pkgs/development/python-modules/aiowaqi/default.nix
index 19e133e27cbd1..370b28cb6f761 100644
--- a/pkgs/development/python-modules/aiowaqi/default.nix
+++ b/pkgs/development/python-modules/aiowaqi/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, syrupy
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  syrupy,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "aiowaqi";
-  version = "3.0.1";
+  version = "3.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -22,19 +23,17 @@ buildPythonPackage rec {
     owner = "joostlek";
     repo = "python-waqi";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+4l820FGQI66GGr+KGEeDmPUFwRrMNvYFJuSouesakY=";
+    hash = "sha256-YWTGEOSSkZ0XbZUE3k+Dn9qg8Pmwip9wCp8e/j1D9io=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "--cov" ""
+      --replace-fail "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     yarl
   ];
@@ -46,18 +45,14 @@ buildPythonPackage rec {
     syrupy
   ];
 
-  pythonImportsCheck = [
-    "aiowaqi"
-  ];
+  pythonImportsCheck = [ "aiowaqi" ];
 
   disabledTests = [
     # Upstream mocking fails
     "test_search"
   ];
 
-  pytestFlagsArray = [
-    "--snapshot-update"
-  ];
+  pytestFlagsArray = [ "--snapshot-update" ];
 
   meta = with lib; {
     description = "Module to interact with the WAQI API";
diff --git a/pkgs/development/python-modules/aiowatttime/default.nix b/pkgs/development/python-modules/aiowatttime/default.nix
index f20f7fe02ab13..9932f9f822206 100644
--- a/pkgs/development/python-modules/aiowatttime/default.nix
+++ b/pkgs/development/python-modules/aiowatttime/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, certifi
-, fetchFromGitHub
-, poetry-core
-, pytest-aiohttp
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  certifi,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "aiowatttime";
-  version = "2023.12.0";
+  version = "2024.06.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.10";
@@ -23,12 +24,10 @@ buildPythonPackage rec {
     owner = "bachya";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-sodgFveVE2Z894z36AzXF6c3iI4UhaqMJK+H6CjsvGA=";
+    hash = "sha256-c5L+Nx+CoWEc6Bs61GOHPBelExe5I7EOlMQ+QV6nktI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
diff --git a/pkgs/development/python-modules/aiowebostv/default.nix b/pkgs/development/python-modules/aiowebostv/default.nix
index e264710e0c47f..a9a4d6bca8475 100644
--- a/pkgs/development/python-modules/aiowebostv/default.nix
+++ b/pkgs/development/python-modules/aiowebostv/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, websockets
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  websockets,
 }:
 
 buildPythonPackage rec {
   pname = "aiowebostv";
-  version = "0.4.0";
+  version = "0.4.2";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -17,23 +18,17 @@ buildPythonPackage rec {
     owner = "home-assistant-libs";
     repo = "aiowebostv";
     rev = "refs/tags/v${version}";
-    hash = "sha256-VUznW+rMCZF1LbrQmEaOgdcX3YCm6Tf7yWlB8KNrjxU=";
+    hash = "sha256-RrSEl/U6UzPoE2151opDe0QRmj6M6wAtsQyF4/dd8ek=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    websockets
-  ];
+  propagatedBuildInputs = [ websockets ];
 
   # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aiowebostv"
-  ];
+  pythonImportsCheck = [ "aiowebostv" ];
 
   meta = with lib; {
     description = "Module to interact with LG webOS based TV devices";
diff --git a/pkgs/development/python-modules/aioweenect/default.nix b/pkgs/development/python-modules/aioweenect/default.nix
index a55c1ad650462..73913cd7d4ba9 100644
--- a/pkgs/development/python-modules/aioweenect/default.nix
+++ b/pkgs/development/python-modules/aioweenect/default.nix
@@ -1,40 +1,39 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "aioweenect";
-  version = "1.1.1";
-  format = "pyproject";
+  version = "1.1.5";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "eifinger";
-    repo = pname;
+    repo = "aioweenect";
     rev = "refs/tags/v${version}";
-    hash = "sha256-9CYdOUPCt4TkepVuVJHMZngFHyCLFwVvik1xDnfneEc=";
+    hash = "sha256-2qTjRXQdTExqY5/ckB6UrkmavzjZK/agfL9+o6fXS0M=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "--cov --cov-report term-missing --cov-report xml --cov=aioweenect tests" ""
+      --replace-fail "--cov --cov-report term-missing --cov=src/aioweenect --asyncio-mode=auto" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  pythonRelaxDeps = [ "aiohttp" ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  build-system = [ hatchling ];
+
+  dependencies = [ aiohttp ];
 
   nativeCheckInputs = [
     aresponses
@@ -42,14 +41,12 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-
-  pythonImportsCheck = [
-    "aioweenect"
-  ];
+  pythonImportsCheck = [ "aioweenect" ];
 
   meta = with lib; {
     description = "Library for the weenect API";
     homepage = "https://github.com/eifinger/aioweenect";
+    changelog = "https://github.com/eifinger/aioweenect/releases/tag/v${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/aiowithings/default.nix b/pkgs/development/python-modules/aiowithings/default.nix
index 46dfafb2ad752..85af5993d8e42 100644
--- a/pkgs/development/python-modules/aiowithings/default.nix
+++ b/pkgs/development/python-modules/aiowithings/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, syrupy
-, yarl
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  syrupy,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "aiowithings";
-  version = "2.1.0";
+  version = "3.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -22,7 +23,7 @@ buildPythonPackage rec {
     owner = "joostlek";
     repo = "python-withings";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+pIIVCR+QsW9M3pH9Ss3dMvkeKM1OdhQ1y+s/T6pHtk=";
+    hash = "sha256-pTDHbnL5MfcsQFiaRnKTDAoJ1JwwxRUTB6fQsXjIFl0=";
   };
 
   postPatch = ''
@@ -30,11 +31,9 @@ buildPythonPackage rec {
       --replace "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     yarl
   ];
@@ -46,8 +45,29 @@ buildPythonPackage rec {
     syrupy
   ];
 
-  pythonImportsCheck = [
-    "aiowithings"
+  pythonImportsCheck = [ "aiowithings" ];
+
+  pytestFlagsArray = [ "--snapshot-update" ];
+
+  disabledTests = [
+    # Tests require network access
+    "test_creating_own_session"
+    "test_error_codes"
+    "test_get_activities"
+    "test_get_devices"
+    "test_get_goals"
+    "test_get_measurement"
+    "test_get_new_device"
+    "test_get_sleep_summary"
+    "test_get_sleep"
+    "test_get_workouts"
+    "test_list_all_subscriptions"
+    "test_list_subscriptions"
+    "test_putting_in_own_session"
+    "test_revoking"
+    "test_subscribing"
+    "test_timeout"
+    "test_unexpected_server_response"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/aioxmpp/default.nix b/pkgs/development/python-modules/aioxmpp/default.nix
index 6c7660f9f3e14..e753cb6c63dcf 100644
--- a/pkgs/development/python-modules/aioxmpp/default.nix
+++ b/pkgs/development/python-modules/aioxmpp/default.nix
@@ -1,26 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, aiosasl
-, aioopenssl
-, babel
-, dnspython
-, lxml
-, multidict
-, pyasn1
-, pyasn1-modules
-, pyopenssl
-, pytz
-, sortedcollections
-, tzlocal
-, pytestCheckHook
+{
+  lib,
+  aioopenssl,
+  aiosasl,
+  babel,
+  buildPythonPackage,
+  dnspython,
+  fetchFromGitHub,
+  lxml,
+  multidict,
+  pyasn1-modules,
+  pyasn1,
+  pyopenssl,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  pytz,
+  setuptools,
+  sortedcollections,
+  tzlocal,
 }:
 
 buildPythonPackage rec {
   pname = "aioxmpp";
   version = "0.13.3";
+  pyproject = true;
 
-  format = "setuptools";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "horazont";
@@ -29,7 +34,14 @@ buildPythonPackage rec {
     hash = "sha256-bQPKEM5eKhFI3Kx3U1espdxqjnG4yUgOXmYCrd98PDo=";
   };
 
-  propagatedBuildInputs = [
+  pythonRelaxDeps = [
+    "lxml"
+  ];
+
+  build-system = [ setuptools ];
+
+
+  dependencies = [
     aiosasl
     aioopenssl
     babel
@@ -52,23 +64,30 @@ buildPythonPackage rec {
     "aioxmpp.stream"
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTestPaths = [
-    "benchmarks"
-  ];
+  disabledTestPaths = [ "benchmarks" ];
 
   disabledTests = [
     # AttributeError: 'zoneinfo.ZoneInfo' object has no attribute 'normalize'
     "test_convert_field_datetime_default_locale"
+  ] ++ lib.optionals (pythonAtLeast "3.12") [
+    # asyncio issues
+    "test_is_abstract"
+    "Testbackground"
+    "TestCapturingXSO"
+    "Testcheck_x509"
+    "TestClient"
+    "TestIntegerType"
+    "TestStanzaStream"
+    "TestStanzaToken"
+    "TestXMLStream"
   ];
 
   meta = {
-    changelog = "https://github.com/horazont/aioxmpp/blob/${src.rev}/docs/api/changelog.rst";
     description = "Pure-python XMPP library for asyncio";
     homepage = "https://github.com/horazont/aioxmpp";
+    changelog = "https://github.com/horazont/aioxmpp/blob/${src.rev}/docs/api/changelog.rst";
     license = lib.licenses.lgpl3Plus;
     maintainers = with lib.maintainers; [ dotlambda ];
   };
diff --git a/pkgs/development/python-modules/aioymaps/default.nix b/pkgs/development/python-modules/aioymaps/default.nix
index aea81caca7540..8567f23ee0977 100644
--- a/pkgs/development/python-modules/aioymaps/default.nix
+++ b/pkgs/development/python-modules/aioymaps/default.nix
@@ -1,25 +1,27 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aioymaps";
-  version = "1.2.3";
-  format = "setuptools";
+  version = "1.2.5";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-pW8FoMdA8XdQZmLRwk5SBBgFhYhgEMJPA9+b+8aicuE=";
+    hash = "sha256-tEl2tX/mB8uYTYj1YFDs/2sPXiv6897jCEmsFCWBXYg=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ aiohttp ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/aiozoneinfo/default.nix b/pkgs/development/python-modules/aiozoneinfo/default.nix
new file mode 100644
index 0000000000000..86f624c9da85c
--- /dev/null
+++ b/pkgs/development/python-modules/aiozoneinfo/default.nix
@@ -0,0 +1,49 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  tzdata,
+}:
+
+buildPythonPackage rec {
+  pname = "aiozoneinfo";
+  version = "0.2.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "bluetooth-devices";
+    repo = "aiozoneinfo";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-u7yQiy5xKK1A19cmpXjA4MMK4q7RvtuvwkUECnddzG8=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "--cov=aiozoneinfo --cov-report=term-missing:skip-covered" ""
+  '';
+
+  build-system = [ poetry-core ];
+
+  dependencies = [ tzdata ];
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "aiozoneinfo" ];
+
+  meta = with lib; {
+    description = "Tools to fetch zoneinfo with asyncio";
+    homepage = "https://github.com/bluetooth-devices/aiozoneinfo";
+    changelog = "https://github.com/bluetooth-devices/aiozoneinfo/blob/${version}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/airgradient/default.nix b/pkgs/development/python-modules/airgradient/default.nix
new file mode 100644
index 0000000000000..86773cfd4c272
--- /dev/null
+++ b/pkgs/development/python-modules/airgradient/default.nix
@@ -0,0 +1,58 @@
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mashumaro,
+  orjson,
+  poetry-core,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytestCheckHook,
+  pythonOlder,
+  syrupy,
+  yarl,
+}:
+
+buildPythonPackage rec {
+  pname = "airgradient";
+  version = "0.9.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.11";
+
+  src = fetchFromGitHub {
+    owner = "airgradienthq";
+    repo = "python-airgradient";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-BBJ9pYE9qAE62FJFwycWBnvsoeobjsg0uIDZffIg18o=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    aiohttp
+    mashumaro
+    orjson
+    yarl
+  ];
+
+  nativeCheckInputs = [
+    aioresponses
+    pytest-asyncio
+    pytest-cov-stub
+    pytestCheckHook
+    syrupy
+  ];
+
+  pythonImportsCheck = [ "airgradient" ];
+
+  meta = with lib; {
+    description = "Module for AirGradient";
+    homepage = "https://github.com/airgradienthq/python-airgradient";
+    changelog = "https://github.com/airgradienthq/python-airgradient/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/airium/default.nix b/pkgs/development/python-modules/airium/default.nix
index b61cd573fb4bc..c433c00667713 100644
--- a/pkgs/development/python-modules/airium/default.nix
+++ b/pkgs/development/python-modules/airium/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitLab
-, setuptools
-, pytestCheckHook
-, beautifulsoup4
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  setuptools,
+  pytestCheckHook,
+  beautifulsoup4,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-qAU+rmj2ZHw7KdxVvRyponcPiRcyENfDyW1y9JTiwsY=";
   };
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  propagatedBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/airly/default.nix b/pkgs/development/python-modules/airly/default.nix
index 7153890494e2c..c9e3d2726e367 100644
--- a/pkgs/development/python-modules/airly/default.nix
+++ b/pkgs/development/python-modules/airly/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, aiohttp
-, aioresponses
-, aiounittest
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  aiounittest,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/airthings-ble/default.nix b/pkgs/development/python-modules/airthings-ble/default.nix
index 9fc7d0e68049d..766e321f45eaa 100644
--- a/pkgs/development/python-modules/airthings-ble/default.nix
+++ b/pkgs/development/python-modules/airthings-ble/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "airthings-ble";
-  version = "0.8.0";
+  version = "0.9.1";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "vincegio";
     repo = "airthings-ble";
     rev = "refs/tags/${version}";
-    hash = "sha256-BgjfvKrVpw/cP93JCloZKq+PIyS/w7/v6+obfgDT64A=";
+    hash = "sha256-pk/S0ufzirH4Xny0+nFVH366d0imqB2K6NvkGP7jAU4=";
   };
 
   postPatch = ''
@@ -45,7 +45,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Library for Airthings BLE devices";
     homepage = "https://github.com/vincegio/airthings-ble";
-    changelog = "https://github.com/vincegio/airthings-ble/releases/tag/v${version}";
+    changelog = "https://github.com/vincegio/airthings-ble/releases/tag/${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/airthings-cloud/default.nix b/pkgs/development/python-modules/airthings-cloud/default.nix
index fb8b20965a315..6016d1921cc60 100644
--- a/pkgs/development/python-modules/airthings-cloud/default.nix
+++ b/pkgs/development/python-modules/airthings-cloud/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "airthings"
-  ];
+  pythonImportsCheck = [ "airthings" ];
 
   meta = with lib; {
     description = "Python module for Airthings";
diff --git a/pkgs/development/python-modules/airtouch4pyapi/default.nix b/pkgs/development/python-modules/airtouch4pyapi/default.nix
index de19c59653644..4fd3df8885b9a 100644
--- a/pkgs/development/python-modules/airtouch4pyapi/default.nix
+++ b/pkgs/development/python-modules/airtouch4pyapi/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-RiRwebumidn0nijL/e9J74ZYx0DASi1up5BTNxYoGEA=";
   };
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/airtouch5py/default.nix b/pkgs/development/python-modules/airtouch5py/default.nix
index f474e23457863..0a8fc8cf90b16 100644
--- a/pkgs/development/python-modules/airtouch5py/default.nix
+++ b/pkgs/development/python-modules/airtouch5py/default.nix
@@ -6,7 +6,6 @@
 
   # build-system
   poetry-core,
-  pythonRelaxDepsHook,
 
   # dependencies
   bitarray,
@@ -18,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "airtouch5py";
-  version = "0.2.8";
+  version = "0.2.10";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -27,11 +26,10 @@ buildPythonPackage rec {
     owner = "danzel";
     repo = "airtouch5py";
     rev = "refs/tags/${version}";
-    hash = "sha256-MpwppyAWDiA3CZXCIUQ/vidzcxKXZJSlrFRhmrPMgCE=";
+    hash = "sha256-8QMyp/Y60V64k1V8Hze5FsgpfHr8ZT1Xj/kQDP7CtjI=";
   };
 
   build-system = [ poetry-core ];
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
   pythonRelaxDeps = [ "crc" ];
 
   dependencies = [
diff --git a/pkgs/development/python-modules/ajpy/default.nix b/pkgs/development/python-modules/ajpy/default.nix
index 6ae4a11322f97..e8db62267dbe0 100644
--- a/pkgs/development/python-modules/ajpy/default.nix
+++ b/pkgs/development/python-modules/ajpy/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "ajpy";
diff --git a/pkgs/development/python-modules/alabaster/default.nix b/pkgs/development/python-modules/alabaster/default.nix
index b2b77a34c8810..5c935659ca08b 100644
--- a/pkgs/development/python-modules/alabaster/default.nix
+++ b/pkgs/development/python-modules/alabaster/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, pygments
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  pygments,
 }:
 
 buildPythonPackage rec {
@@ -24,7 +25,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/bitprophet/alabaster";
-    description = "A Sphinx theme";
+    description = "Sphinx theme";
     license = licenses.bsd3;
   };
 }
diff --git a/pkgs/development/python-modules/aladdin-connect/default.nix b/pkgs/development/python-modules/aladdin-connect/default.nix
index 3ca8016cd7657..ebf54ec2abc4d 100644
--- a/pkgs/development/python-modules/aladdin-connect/default.nix
+++ b/pkgs/development/python-modules/aladdin-connect/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, requests
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  requests,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-kLvMpSGa5WyDOH3ejAJyFGsB9IiMXp+nvVxM/ZkxyFw=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aladdin_connect"
-  ];
+  pythonImportsCheck = [ "aladdin_connect" ];
 
   meta = with lib; {
     description = "Python library for interacting with Genie Aladdin Connect devices";
diff --git a/pkgs/development/python-modules/alarmdecoder/default.nix b/pkgs/development/python-modules/alarmdecoder/default.nix
index 3573990876a2f..4109ce7d1d9f4 100644
--- a/pkgs/development/python-modules/alarmdecoder/default.nix
+++ b/pkgs/development/python-modules/alarmdecoder/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pyftdi
-, pyopenssl
-, pyserial
-, pytestCheckHook
-, pythonOlder
-, pyusb
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  pyftdi,
+  pyopenssl,
+  pyserial,
+  pytestCheckHook,
+  pythonOlder,
+  pyusb,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/albucore/default.nix b/pkgs/development/python-modules/albucore/default.nix
new file mode 100644
index 0000000000000..b176b817da835
--- /dev/null
+++ b/pkgs/development/python-modules/albucore/default.nix
@@ -0,0 +1,48 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  numpy,
+  opencv4,
+  typing-extensions,
+}:
+
+buildPythonPackage rec {
+  pname = "albucore";
+  version = "0.0.15";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "albumentations-team";
+    repo = "albucore";
+    rev = "refs/tags/${version}";
+    hash = "sha256-FA11dVw47KucSYU1+3oxw6GUQfPZtjoNPUb96vb6wqo=";
+  };
+
+  pythonRemoveDeps = [ "opencv-python" ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    numpy
+    opencv4
+    typing-extensions
+  ];
+
+  pythonImportsCheck = [ "albucore" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "High-performance image processing library to optimize and extend Albumentations with specialized functions for image transformations";
+    homepage = "https://github.com/albumentations-team/albucore";
+    changelog = "https://github.com/albumentations-team/albucore/releases/tag/${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ bcdarwin ];
+  };
+}
diff --git a/pkgs/development/python-modules/albumentations/default.nix b/pkgs/development/python-modules/albumentations/default.nix
index 17e9c7fc7974e..a7bc2d5251401 100644
--- a/pkgs/development/python-modules/albumentations/default.nix
+++ b/pkgs/development/python-modules/albumentations/default.nix
@@ -1,57 +1,62 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, numpy
-, opencv4
-, pyyaml
-, qudida
-, scikit-image
-, scipy
-, deepdiff
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, torch
-, torchvision
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  albucore,
+  eval-type-backport,
+  numpy,
+  opencv4,
+  pydantic,
+  pyyaml,
+  scikit-image,
+  scikit-learn,
+
+  deepdiff,
+  pytestCheckHook,
+  pytest-mock,
+  torch,
+  torchvision,
 }:
 
 buildPythonPackage rec {
   pname = "albumentations";
-  version = "1.4.2";
+  version = "1.4.11";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-lznWLJocXdfwnhAZ33V5ZdlFCAsNa0u/rjfkjmHBQOg=";
+  src = fetchFromGitHub {
+    owner = "albumentations-team";
+    repo = "albumentations";
+    rev = "refs/tags/${version}";
+    hash = "sha256-1070V9+EZ4qrhxmbMyvTbu89pLoonrn0Peb8nwp2lwA=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
+  pythonRemoveDeps = [ "opencv-python" ];
 
-  pythonRemoveDeps = [
-    "opencv-python"
-  ];
-
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
+    albucore
+    eval-type-backport
     numpy
     opencv4
+    pydantic
     pyyaml
-    qudida
     scikit-image
-    scipy
+    scikit-learn
   ];
 
   nativeCheckInputs = [
     deepdiff
     pytestCheckHook
+    pytest-mock
     torch
     torchvision
   ];
@@ -63,11 +68,11 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "albumentations" ];
 
-  meta = with lib; {
+  meta = {
     description = "Fast image augmentation library and easy to use wrapper around other libraries";
     homepage = "https://github.com/albumentations-team/albumentations";
     changelog = "https://github.com/albumentations-team/albumentations/releases/tag/${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ natsukium ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
   };
 }
diff --git a/pkgs/development/python-modules/ale-py/cmake-pybind11.patch b/pkgs/development/python-modules/ale-py/cmake-pybind11.patch
deleted file mode 100644
index 5bcf5b1d9b2f4..0000000000000
--- a/pkgs/development/python-modules/ale-py/cmake-pybind11.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff --git a/src/python/CMakeLists.txt b/src/python/CMakeLists.txt
-index 911e280..d484943 100644
---- a/src/python/CMakeLists.txt
-+++ b/src/python/CMakeLists.txt
-@@ -1,12 +1,6 @@
- find_package(Python3 COMPONENTS Interpreter Development.Module REQUIRED)
- 
--include(FetchContent)
--FetchContent_Declare(
--    pybind11
--    GIT_REPOSITORY https://github.com/pybind/pybind11
--    GIT_TAG v2.10.0)
--FetchContent_MakeAvailable(pybind11)
--
-+find_package(pybind11 REQUIRED)
- add_library(ale-py MODULE ale_python_interface.cpp)
- # Depend on the ALE and pybind11 module
- target_link_libraries(ale-py PUBLIC ale ale-lib)
diff --git a/pkgs/development/python-modules/ale-py/default.nix b/pkgs/development/python-modules/ale-py/default.nix
index 9ff15479551e3..0318131010798 100644
--- a/pkgs/development/python-modules/ale-py/default.nix
+++ b/pkgs/development/python-modules/ale-py/default.nix
@@ -1,98 +1,92 @@
-{ buildPythonPackage
-, SDL2
-, cmake
-, fetchFromGitHub
-, fetchpatch
-, gym
-, importlib-metadata
-, importlib-resources
-, lib
-, ninja
-, numpy
-, pybind11
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, stdenv
-, typing-extensions
-, wheel
-, zlib
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  cmake,
+  ninja,
+  pybind11,
+  setuptools,
+  wheel,
+
+  # buildInputs
+  SDL2,
+  zlib,
+
+  # dependencies
+  importlib-resources,
+  numpy,
+  typing-extensions,
+  importlib-metadata,
+
+  # checks
+  gymnasium,
+  pytestCheckHook,
+
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "ale-py";
-  version = "0.8.1";
+  version = "0.10.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "Farama-Foundation";
     repo = "Arcade-Learning-Environment";
     rev = "refs/tags/v${version}";
-    hash = "sha256-B2AxhlzvBy1lJ3JttJjImgTjMtEUyZBv+xHU2IC7BVE=";
+    hash = "sha256-tdxO5eixI2swezhkeSMqeVgdiaa/VmNdwhZYURSzadw=";
   };
 
-  patches = [
-    # don't download pybind11, use local pybind11
-    ./cmake-pybind11.patch
-    ./patch-sha-check-in-setup.patch
-
-    # The following two patches add the required `include <cstdint>` for compilation to work with GCC 13.
-    # See https://github.com/Farama-Foundation/Arcade-Learning-Environment/pull/503
-    (fetchpatch {
-      name = "fix-gcc13-compilation-1";
-      url = "https://github.com/Farama-Foundation/Arcade-Learning-Environment/commit/ebd64c03cdaa3d8df7da7c62ec3ae5795105e27a.patch";
-      hash = "sha256-NMz0hw8USOj88WryHRkMQNWznnP6+5aWovEYNuocQ2c=";
-    })
-    (fetchpatch {
-      name = "fix-gcc13-compilation-2";
-      url = "https://github.com/Farama-Foundation/Arcade-Learning-Environment/commit/4c99c7034f17810f3ff6c27436bfc3b40d08da21.patch";
-      hash = "sha256-66/bDCyMr1RsKk63T9GnFZGloLlkdr/bf5WHtWbX6VY=";
-    })
-  ];
-
-  nativeBuildInputs = [
+  build-system = [
     cmake
     ninja
+    pybind11
     setuptools
     wheel
-    pybind11
   ];
 
   buildInputs = [
-    zlib
     SDL2
+    zlib
   ];
 
-  propagatedBuildInputs = [
-    typing-extensions
+  dependencies = [
     importlib-resources
     numpy
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ];
-
-  nativeCheckInputs = [
-    pytestCheckHook
-    gym
-  ];
+    typing-extensions
+  ] ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace 'dynamic = ["version"]' 'version = "${version}"'
-    substituteInPlace setup.py \
-      --replace '@sha@' '"${version}"'
-  '';
+  postPatch =
+    # Relax the pybind11 version
+    ''
+      substituteInPlace src/ale/python/CMakeLists.txt \
+        --replace-fail 'find_package(pybind11 ''${PYBIND11_VER} QUIET)' 'find_package(pybind11 QUIET)'
+    '';
 
   dontUseCmakeConfigure = true;
 
   pythonImportsCheck = [ "ale_py" ];
 
-  meta = with lib; {
-    description = "a simple framework that allows researchers and hobbyists to develop AI agents for Atari 2600 games";
+  nativeCheckInputs = [
+    gymnasium
+    pytestCheckHook
+  ];
+
+  # test_atari_env.py::test_check_env fails on the majority of the environments because the ROM are missing.
+  # The user is expected to manually download the roms:
+  # https://github.com/Farama-Foundation/Arcade-Learning-Environment/blob/v0.9.0/docs/faq.md#i-downloaded-ale-and-i-installed-it-successfully-but-i-cannot-find-any-rom-file-at-roms-do-i-have-to-get-them-somewhere-else
+  disabledTests = [ "test_check_env" ];
+
+  meta = {
+    description = "Simple framework that allows researchers and hobbyists to develop AI agents for Atari 2600 games";
     mainProgram = "ale-import-roms";
     homepage = "https://github.com/mgbellemare/Arcade-Learning-Environment";
-    license = licenses.gpl2;
-    maintainers = with maintainers; [ billhuang ];
-    broken = stdenv.isDarwin; # fails to link with missing library
+    changelog = "https://github.com/Farama-Foundation/Arcade-Learning-Environment/releases/tag/v${version}";
+    license = lib.licenses.gpl2;
+    maintainers = with lib.maintainers; [ billhuang ];
+    broken = stdenv.hostPlatform.isDarwin; # fails to link with missing library
   };
 }
diff --git a/pkgs/development/python-modules/ale-py/patch-sha-check-in-setup.patch b/pkgs/development/python-modules/ale-py/patch-sha-check-in-setup.patch
deleted file mode 100644
index f387346ded379..0000000000000
--- a/pkgs/development/python-modules/ale-py/patch-sha-check-in-setup.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff --git a/setup.py b/setup.py
-index ff1b1c5..ce40df0 100644
---- a/setup.py
-+++ b/setup.py
-@@ -141,11 +141,7 @@ def parse_version(version_file):
- 
-         version = ci_version
-     else:
--        sha = (
--            subprocess.check_output(["git", "rev-parse", "--short", "HEAD"], cwd=here)
--            .decode("ascii")
--            .strip()
--        )
-+        sha = @sha@
-         version += f"+{sha}"
- 
-     return version
diff --git a/pkgs/development/python-modules/alectryon/default.nix b/pkgs/development/python-modules/alectryon/default.nix
index 423aedb942371..6f048b0412300 100644
--- a/pkgs/development/python-modules/alectryon/default.nix
+++ b/pkgs/development/python-modules/alectryon/default.nix
@@ -1,5 +1,13 @@
-{ lib, buildPythonPackage, fetchPypi
-, pygments, dominate, beautifulsoup4, docutils, sphinx }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pygments,
+  dominate,
+  beautifulsoup4,
+  docutils,
+  sphinx,
+}:
 
 buildPythonPackage rec {
   pname = "alectryon";
@@ -23,7 +31,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/cpitclaudel/alectryon";
-    description = "A collection of tools for writing technical documents that mix Coq code and prose";
+    description = "Collection of tools for writing technical documents that mix Coq code and prose";
     mainProgram = "alectryon";
     license = licenses.mit;
     maintainers = with maintainers; [ Zimmi48 ];
diff --git a/pkgs/development/python-modules/alembic/default.nix b/pkgs/development/python-modules/alembic/default.nix
index cd7b0696afd43..4d41cc11a6369 100644
--- a/pkgs/development/python-modules/alembic/default.nix
+++ b/pkgs/development/python-modules/alembic/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-
-# build-system
-, setuptools
-
-# dependencies
-, importlib-metadata
-, importlib-resources
-, mako
-, sqlalchemy
-, typing-extensions
-
-# tests
-, pytest7CheckHook
-, pytest-xdist
-, python-dateutil
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  importlib-metadata,
+  importlib-resources,
+  mako,
+  sqlalchemy,
+  typing-extensions,
+
+  # tests
+  pytest7CheckHook,
+  pytest-xdist,
+  python-dateutil,
 }:
 
 buildPythonPackage rec {
   pname = "alembic";
   version = "1.13.1";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
@@ -31,22 +32,20 @@ buildPythonPackage rec {
     hash = "sha256-STLIVYv2jy7pK5u8uCGGccYnBk1bCJOUN69td9wF5ZU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    mako
-    sqlalchemy
-    typing-extensions
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    importlib-resources
-    importlib-metadata
-  ];
+  dependencies =
+    [
+      mako
+      sqlalchemy
+      typing-extensions
+    ]
+    ++ lib.optionals (pythonOlder "3.9") [
+      importlib-resources
+      importlib-metadata
+    ];
 
-  pythonImportsCheck = [
-    "alembic"
-  ];
+  pythonImportsCheck = [ "alembic" ];
 
   nativeCheckInputs = [
     pytest7CheckHook
@@ -56,9 +55,9 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://bitbucket.org/zzzeek/alembic";
-    description = "A database migration tool for SQLAlchemy";
+    description = "Database migration tool for SQLAlchemy";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     mainProgram = "alembic";
   };
 }
diff --git a/pkgs/development/python-modules/alexapy/default.nix b/pkgs/development/python-modules/alexapy/default.nix
index 2ab2d26123652..7ff595cb8b33f 100644
--- a/pkgs/development/python-modules/alexapy/default.nix
+++ b/pkgs/development/python-modules/alexapy/default.nix
@@ -1,25 +1,25 @@
-{ lib
-, aiofiles
-, aiohttp
-, authcaptureproxy
-, backoff
-, beautifulsoup4
-, buildPythonPackage
-, certifi
-, cryptography
-, fetchFromGitLab
-, poetry-core
-, pyotp
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
-, simplejson
-, yarl
+{
+  lib,
+  aiofiles,
+  aiohttp,
+  authcaptureproxy,
+  backoff,
+  beautifulsoup4,
+  buildPythonPackage,
+  certifi,
+  cryptography,
+  fetchFromGitLab,
+  poetry-core,
+  pyotp,
+  pythonOlder,
+  requests,
+  simplejson,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "alexapy";
-  version = "1.27.10";
+  version = "1.28.0";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -28,16 +28,13 @@ buildPythonPackage rec {
     owner = "keatontaylor";
     repo = "alexapy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-eoL7q+p0m3YZd7Ub7U8nE3tQGNA2oQXelvN+H01b0BM=";
+    hash = "sha256-sRTK3qaIiYxz9Z+LT2pFjqKXBHyr3EkSD4dtc+KXFQw=";
   };
 
-  pythonRelaxDeps = [
-    "aiofiles"
-  ];
+  pythonRelaxDeps = [ "aiofiles" ];
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -54,9 +51,7 @@ buildPythonPackage rec {
     yarl
   ];
 
-  pythonImportsCheck = [
-    "alexapy"
-  ];
+  pythonImportsCheck = [ "alexapy" ];
 
   # Module has no tests (only a websocket test which seems unrelated to the module)
   doCheck = false;
diff --git a/pkgs/development/python-modules/algebraic-data-types/default.nix b/pkgs/development/python-modules/algebraic-data-types/default.nix
index 9c19470fbddc9..e247c3b3f0188 100644
--- a/pkgs/development/python-modules/algebraic-data-types/default.nix
+++ b/pkgs/development/python-modules/algebraic-data-types/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, hypothesis
-, mypy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  hypothesis,
+  mypy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     "tests/test_mypy_plugin.py"
   ];
 
-  pythonImportsCheck = [
-    "adt"
-  ];
+  pythonImportsCheck = [ "adt" ];
 
   meta = with lib; {
     description = "Algebraic data types for Python";
diff --git a/pkgs/development/python-modules/alive-progress/default.nix b/pkgs/development/python-modules/alive-progress/default.nix
index 58ccedd26d6c0..8f24c6c86dd49 100644
--- a/pkgs/development/python-modules/alive-progress/default.nix
+++ b/pkgs/development/python-modules/alive-progress/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, about-time
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, grapheme
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  about-time,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  grapheme,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-yJhl0QrMHET9ISDc/D5AEQ7dTJkmcV2SWqy/xmG18uY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     about-time
@@ -37,12 +36,10 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "alive_progress"
-  ];
+  pythonImportsCheck = [ "alive_progress" ];
 
   meta = with lib; {
-    description = "A new kind of Progress Bar, with real-time throughput, ETA, and very cool animations";
+    description = "New kind of Progress Bar, with real-time throughput, ETA, and very cool animations";
     homepage = "https://github.com/rsalmei/alive-progress";
     changelog = "https://github.com/rsalmei/alive-progress/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/aliyun-python-sdk-cdn/default.nix b/pkgs/development/python-modules/aliyun-python-sdk-cdn/default.nix
index 3f29826f0a34e..646742cafd40f 100644
--- a/pkgs/development/python-modules/aliyun-python-sdk-cdn/default.nix
+++ b/pkgs/development/python-modules/aliyun-python-sdk-cdn/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aliyun-python-sdk-core
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  aliyun-python-sdk-core,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-LMCNvjV85TvdSM0OXean4dPzAiV8apVdRLTvUISOKec=";
   };
 
-  propagatedBuildInputs = [
-    aliyun-python-sdk-core
-  ];
+  propagatedBuildInputs = [ aliyun-python-sdk-core ];
 
   # All components are stored in a mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aliyunsdkcdn"
-  ];
+  pythonImportsCheck = [ "aliyunsdkcdn" ];
 
   meta = with lib; {
     description = "CDN module of Aliyun Python SDK";
diff --git a/pkgs/development/python-modules/aliyun-python-sdk-config/default.nix b/pkgs/development/python-modules/aliyun-python-sdk-config/default.nix
index 5801e6a5ee14a..0a4763b5b9950 100644
--- a/pkgs/development/python-modules/aliyun-python-sdk-config/default.nix
+++ b/pkgs/development/python-modules/aliyun-python-sdk-config/default.nix
@@ -1,32 +1,29 @@
-{ lib
-, aliyun-python-sdk-core
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  aliyun-python-sdk-core,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "aliyun-python-sdk-config";
-  version = "2.2.12";
+  version = "2.2.14";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-blrT/yCQ2vxaociSqKvRX3fUyKLsAFT3UyFGB/AzZHI=";
+    hash = "sha256-drmk41/k/JJ6Zs6MrnMQa7xwpkO7MZEaSeyfm2QimKo=";
   };
 
-  propagatedBuildInputs = [
-    aliyun-python-sdk-core
-  ];
+  propagatedBuildInputs = [ aliyun-python-sdk-core ];
 
   # All components are stored in a mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aliyunsdkconfig"
-  ];
+  pythonImportsCheck = [ "aliyunsdkconfig" ];
 
   meta = with lib; {
     description = "Configuration module of Aliyun Python SDK";
diff --git a/pkgs/development/python-modules/aliyun-python-sdk-core/default.nix b/pkgs/development/python-modules/aliyun-python-sdk-core/default.nix
index 57323e4b189d5..f68dec2eeb827 100644
--- a/pkgs/development/python-modules/aliyun-python-sdk-core/default.nix
+++ b/pkgs/development/python-modules/aliyun-python-sdk-core/default.nix
@@ -5,27 +5,25 @@
   fetchPypi,
   jmespath,
   pythonOlder,
-  pythonRelaxDepsHook,
   setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aliyun-python-sdk-core";
-  version = "2.15.1";
+  version = "2.15.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-UYVQ0H9TfNOvrDtsk7XJl840QOTQwFTjrL2qgmHpCt8=";
+    hash = "sha256-VPZqU+GTxhxeFupFBaDKtDVD+K0u8igz9pxNXlFRwX0=";
   };
 
   pythonRelaxDeps = true;
 
   build-system = [ setuptools ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     cryptography
diff --git a/pkgs/development/python-modules/aliyun-python-sdk-dbfs/default.nix b/pkgs/development/python-modules/aliyun-python-sdk-dbfs/default.nix
index 1dc10a140cc14..a627ccce23b9a 100644
--- a/pkgs/development/python-modules/aliyun-python-sdk-dbfs/default.nix
+++ b/pkgs/development/python-modules/aliyun-python-sdk-dbfs/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aliyun-python-sdk-core
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  aliyun-python-sdk-core,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-Kj6DfnXZq5ilE+vnZrAoZEhPDoNrMIs5p2OcBc24qXM=";
   };
 
-  propagatedBuildInputs = [
-    aliyun-python-sdk-core
-  ];
+  propagatedBuildInputs = [ aliyun-python-sdk-core ];
 
   # All components are stored in a mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aliyunsdkdbfs"
-  ];
+  pythonImportsCheck = [ "aliyunsdkdbfs" ];
 
   meta = with lib; {
     description = "DBFS module of Aliyun Python SDK";
diff --git a/pkgs/development/python-modules/aliyun-python-sdk-iot/default.nix b/pkgs/development/python-modules/aliyun-python-sdk-iot/default.nix
index 2f08429d54d78..a2fa3bcc3c313 100644
--- a/pkgs/development/python-modules/aliyun-python-sdk-iot/default.nix
+++ b/pkgs/development/python-modules/aliyun-python-sdk-iot/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aliyun-python-sdk-core
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  aliyun-python-sdk-core,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-v0jTMKtYrbEBVjHQokpWSlcJBALZFsuoYHq8wCP8w1E=";
   };
 
-  propagatedBuildInputs = [
-    aliyun-python-sdk-core
-  ];
+  propagatedBuildInputs = [ aliyun-python-sdk-core ];
 
   # All components are stored in a mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aliyunsdkiot"
-  ];
+  pythonImportsCheck = [ "aliyunsdkiot" ];
 
   meta = with lib; {
     description = "IoT module of Aliyun Python SDK";
diff --git a/pkgs/development/python-modules/aliyun-python-sdk-kms/default.nix b/pkgs/development/python-modules/aliyun-python-sdk-kms/default.nix
index 55288c2b6d2ab..81ea4b621e086 100644
--- a/pkgs/development/python-modules/aliyun-python-sdk-kms/default.nix
+++ b/pkgs/development/python-modules/aliyun-python-sdk-kms/default.nix
@@ -1,32 +1,32 @@
-{ lib
-, aliyun-python-sdk-core
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  aliyun-python-sdk-core,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aliyun-python-sdk-kms";
-  version = "2.16.2";
-  format = "setuptools";
+  version = "2.16.5";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-+HI0qLZNRXyiM4+HZQ2xijzn99vJv+9x7+jyiUre09Y=";
+    hash = "sha256-8yiooZ2D7LuWX/zg7B6ZMHVSFtEEY4zZXs02J1O4E7M=";
   };
 
-  propagatedBuildInputs = [
-    aliyun-python-sdk-core
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ aliyun-python-sdk-core ];
 
   # All components are stored in a mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aliyunsdkkms"
-  ];
+  pythonImportsCheck = [ "aliyunsdkkms" ];
 
   meta = with lib; {
     description = "KMS module of Aliyun Python SDK";
diff --git a/pkgs/development/python-modules/aliyun-python-sdk-sts/default.nix b/pkgs/development/python-modules/aliyun-python-sdk-sts/default.nix
index 8de6117167482..0f913ff8412a1 100644
--- a/pkgs/development/python-modules/aliyun-python-sdk-sts/default.nix
+++ b/pkgs/development/python-modules/aliyun-python-sdk-sts/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aliyun-python-sdk-core
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  aliyun-python-sdk-core,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-GLzieAX0j/aEKeKj37PtBQJy3c2zWgy1no7/lXiYSU0=";
   };
 
-  propagatedBuildInputs = [
-    aliyun-python-sdk-core
-  ];
+  propagatedBuildInputs = [ aliyun-python-sdk-core ];
 
   # All components are stored in a mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aliyunsdksts"
-  ];
+  pythonImportsCheck = [ "aliyunsdksts" ];
 
   meta = with lib; {
     description = "STS module of Aliyun Python SDK";
diff --git a/pkgs/development/python-modules/allpairspy/default.nix b/pkgs/development/python-modules/allpairspy/default.nix
index 31bc1229e2ba7..4ee847df38f61 100644
--- a/pkgs/development/python-modules/allpairspy/default.nix
+++ b/pkgs/development/python-modules/allpairspy/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -17,17 +18,11 @@ buildPythonPackage rec {
     hash = "sha256-0wzoQDHB7Tt80ZTlKrNxFutztsgUuin5D2eb80c4PBI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "allpairspy"
-  ];
+  pythonImportsCheck = [ "allpairspy" ];
 
   meta = with lib; {
     description = "Pairwise test combinations generator";
diff --git a/pkgs/development/python-modules/allure-behave/default.nix b/pkgs/development/python-modules/allure-behave/default.nix
index 8f39c1fb628e2..4b80c97c8777d 100644
--- a/pkgs/development/python-modules/allure-behave/default.nix
+++ b/pkgs/development/python-modules/allure-behave/default.nix
@@ -1,27 +1,26 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, behave
-, allure-python-commons
-, setuptools-scm
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
+  behave,
+  allure-python-commons,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "allure-behave";
-  version = "2.13.2";
+  version = "2.13.5";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-mxXb7+1tvf5EmVbD6eOmGfza9lAjbEVoxWZBSeZmPxQ=";
+    hash = "sha256-M4yizHOV0e491y9dfZLYkg8a3g4H3evGN7OOYeBtyNw=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   pythonImportsCheck = [ "allure_behave" ];
 
@@ -31,7 +30,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "Allure behave integration.";
+    description = "Allure behave integration";
     homepage = "https://github.com/allure-framework/allure-python";
     license = licenses.asl20;
     maintainers = with maintainers; [ happysalada ];
diff --git a/pkgs/development/python-modules/allure-pytest/default.nix b/pkgs/development/python-modules/allure-pytest/default.nix
index ba86e0723a5df..88fc7054f1e61 100644
--- a/pkgs/development/python-modules/allure-pytest/default.nix
+++ b/pkgs/development/python-modules/allure-pytest/default.nix
@@ -1,42 +1,35 @@
-{ lib
-, allure-python-commons
-, buildPythonPackage
-, fetchPypi
-, pytest
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  allure-python-commons,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "allure-pytest";
-  version = "2.13.2";
+  version = "2.13.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-IiQxWejsgc4rUlS0ATgCGYghsbQvEY9p1KKJOWYHx7M=";
+    hash = "sha256-DvjheQxEqYjba4PE1PXpFFHixMjqEGAd+ohSjSOvz24=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    allure-python-commons
-  ];
+  propagatedBuildInputs = [ allure-python-commons ];
 
   # Tests were moved to the meta package
   doCheck = false;
 
-  pythonImportsCheck = [
-    "allure_pytest"
-  ];
+  pythonImportsCheck = [ "allure_pytest" ];
 
   meta = with lib; {
     description = "Allure integrations for Python test frameworks";
diff --git a/pkgs/development/python-modules/allure-python-commons-test/default.nix b/pkgs/development/python-modules/allure-python-commons-test/default.nix
index 4a75e18835a42..5a4f5049d9cc9 100644
--- a/pkgs/development/python-modules/allure-python-commons-test/default.nix
+++ b/pkgs/development/python-modules/allure-python-commons-test/default.nix
@@ -1,32 +1,33 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, attrs
-, pluggy
-, six
-, pyhamcrest
-, setuptools-scm
-, python
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  attrs,
+  pluggy,
+  six,
+  pyhamcrest,
+  setuptools-scm,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "allure-python-commons-test";
-  version = "2.13.4";
+  version = "2.13.5";
   format = "setuptools";
 
-  disabled = pythonOlder "3.4";
-
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-WPthxhyKlN6fGdKXJLrjh3nbQ8h6CacYToyadh/p49M=";
+    hash = "sha256-pWkLVfBrLEhdhuTE95K3aqrhEY2wEyo5uRzuJC3ngjE=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [ attrs pluggy six pyhamcrest ];
+  propagatedBuildInputs = [
+    attrs
+    pluggy
+    six
+    pyhamcrest
+  ];
 
   checkPhase = ''
     ${python.interpreter} -m doctest ./src/container.py
diff --git a/pkgs/development/python-modules/allure-python-commons/default.nix b/pkgs/development/python-modules/allure-python-commons/default.nix
index 2e6a38e51341c..30881b90f3fdb 100644
--- a/pkgs/development/python-modules/allure-python-commons/default.nix
+++ b/pkgs/development/python-modules/allure-python-commons/default.nix
@@ -1,39 +1,46 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, attrs
-, pluggy
-, six
-, allure-python-commons-test
-, setuptools-scm
-, python
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
+  attrs,
+  pluggy,
+  six,
+  allure-python-commons-test,
+  setuptools-scm,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "allure-python-commons";
-  version = "2.13.2";
+  version = "2.13.5";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-igNoEzAjGx3q3Ya5f/aIQcZZEyARSuY4Vw8e1g16IDM=";
+    hash = "sha256-ojLnlVgR+Yjkmkwd1sFszn6bgdDqBCKx5WVNMlTiyvM=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [ attrs pluggy six allure-python-commons-test ];
+  propagatedBuildInputs = [
+    attrs
+    pluggy
+    six
+    allure-python-commons-test
+  ];
 
   checkPhase = ''
     ${python.interpreter} -m doctest ./src/utils.py
     ${python.interpreter} -m doctest ./src/mapping.py
   '';
 
-  pythonImportsCheck = [ "allure" "allure_commons" ];
+  pythonImportsCheck = [
+    "allure"
+    "allure_commons"
+  ];
 
   meta = with lib; {
     description = "Common engine for all modules. It is useful for make integration with your homemade frameworks";
diff --git a/pkgs/development/python-modules/alpha-vantage/default.nix b/pkgs/development/python-modules/alpha-vantage/default.nix
index b98c2508458ed..3e39efa7d3843 100644
--- a/pkgs/development/python-modules/alpha-vantage/default.nix
+++ b/pkgs/development/python-modules/alpha-vantage/default.nix
@@ -1,50 +1,66 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, pandas
-, pytestCheckHook
-, requests
-, requests-mock
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pandas,
+  pytestCheckHook,
+  requests,
+  requests-mock,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "alpha-vantage";
-  version = "2.3.1";
-  format = "setuptools";
+  version = "3.0.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "RomelTorres";
     repo = "alpha_vantage";
-    rev = version;
-    sha256 = "0cyw6zw7c7r076rmhnmg905ihwb9r7g511n6gdlph06v74pdls8d";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-Ae9WqEsAjJcD62NZOPh6a49g1wY4KMswzixDAZEtWkw=";
   };
 
-  propagatedBuildInputs = [
+  postPatch = ''
+    # Files are only linked
+    rm alpha_vantage/async_support/*
+    cp alpha_vantage/{cryptocurrencies.py,foreignexchange.py,techindicators.py,timeseries.py} alpha_vantage/async_support/
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     aiohttp
     requests
   ];
 
+  passthru.optional-dependencies = {
+    pandas = [
+      pandas
+    ];
+  };
+
   nativeCheckInputs = [
     aioresponses
     requests-mock
-    pandas
     pytestCheckHook
-  ];
+  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  disabledTestPaths = [
-    # Tests require network access
-    "test_alpha_vantage/test_integration_alphavantage.py"
-    "test_alpha_vantage/test_integration_alphavantage_async.py"
-  ];
+  # Starting with 3.0.0 most tests require an API key
+  doCheck = false;
 
   pythonImportsCheck = [ "alpha_vantage" ];
 
   meta = with lib; {
     description = "Python module for the Alpha Vantage API";
     homepage = "https://github.com/RomelTorres/alpha_vantage";
-    license = with licenses; [ mit ];
+    changelog = "https://github.com/RomelTorres/alpha_vantage/releases/tag/${version}";
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/altair/default.nix b/pkgs/development/python-modules/altair/default.nix
index 3b9b53b9a6c33..f195c3b080ba3 100644
--- a/pkgs/development/python-modules/altair/default.nix
+++ b/pkgs/development/python-modules/altair/default.nix
@@ -1,29 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# Runtime dependencies
-, hatchling
-, toolz
-, numpy
-, jsonschema
-, typing-extensions
-, pandas
-, jinja2
-, packaging
+  # Runtime dependencies
+  hatchling,
+  toolz,
+  numpy,
+  jsonschema,
+  typing-extensions,
+  pandas,
+  jinja2,
+  packaging,
 
-# Build, dev and test dependencies
-, anywidget
-, ipython
-, pytestCheckHook
-, vega-datasets
-, sphinx
+  # Build, dev and test dependencies
+  anywidget,
+  ipython,
+  pytestCheckHook,
+  vega-datasets,
+  sphinx,
 }:
 
 buildPythonPackage rec {
   pname = "altair";
-  version = "5.2.0";
+  version = "5.3.0";
   format = "pyproject";
   disabled = pythonOlder "3.8";
 
@@ -31,12 +32,10 @@ buildPythonPackage rec {
     owner = "altair-viz";
     repo = "altair";
     rev = "refs/tags/v${version}";
-    hash = "sha256-uTG+V0SQgAQtMjvrVvKVKgIBT9qO+26EPRxQCEXj/gc=";
+    hash = "sha256-VGtH+baIKObJY8/44JCyKi+XrIddSqOtpNeMCO+8o9M=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     jinja2
@@ -57,6 +56,11 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "altair" ];
 
+  disabledTests = [
+    # ValueError: Saving charts in 'svg' format requires the vl-convert-python or altair_saver package: see http://github.com/altair-viz/altair_saver/
+    "test_renderer_with_none_embed_options"
+  ];
+
   disabledTestPaths = [
     # Disabled because it requires internet connectivity
     "tests/test_examples.py"
@@ -69,11 +73,14 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A declarative statistical visualization library for Python.";
+    description = "Declarative statistical visualization library for Python";
     homepage = "https://altair-viz.github.io";
     downloadPage = "https://github.com/altair-viz/altair";
     changelog = "https://altair-viz.github.io/releases/changes.html";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ teh vinetos ];
+    maintainers = with maintainers; [
+      teh
+      vinetos
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/altgraph/default.nix b/pkgs/development/python-modules/altgraph/default.nix
index 3a42414aa8d87..932896f1beea1 100644
--- a/pkgs/development/python-modules/altgraph/default.nix
+++ b/pkgs/development/python-modules/altgraph/default.nix
@@ -1,6 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools
 }:
 
 buildPythonPackage rec {
@@ -11,14 +13,20 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-G1r7uY9sTcrbLirmq5+plLu4wddfT6ltNA+UN65FRAY=";
+    hash = "sha256-G1r7uY9sTcrbLirmq5+plLu4wddfT6ltNA+UN65FRAY=";
   };
 
+  dependencies = [
+    # setuptools in dependencies is intentional
+    # https://github.com/ronaldoussoren/altgraph/issues/21
+    setuptools
+  ];
+
   pythonImportsCheck = [ "altgraph" ];
 
   meta = with lib; {
     changelog = "https://github.com/ronaldoussoren/altgraph/tags${version}";
-    description = "A fork of graphlib: a graph (network) package for constructing graphs";
+    description = "Fork of graphlib: a graph (network) package for constructing graphs";
     longDescription = ''
       altgraph is a fork of graphlib: a graph (network) package for constructing graphs,
       BFS and DFS traversals, topological sort, shortest paths, etc. with graphviz output.
diff --git a/pkgs/development/python-modules/amaranth-boards/default.nix b/pkgs/development/python-modules/amaranth-boards/default.nix
index 2475c93f8c617..a010d3570b7cb 100644
--- a/pkgs/development/python-modules/amaranth-boards/default.nix
+++ b/pkgs/development/python-modules/amaranth-boards/default.nix
@@ -1,14 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, amaranth
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  amaranth,
+  setuptools,
+  setuptools-scm,
+  unstableGitUpdater,
 }:
 
 buildPythonPackage rec {
   pname = "amaranth-boards";
-  version = "0-unstable-2023-12-13";
+  version = "0-unstable-2024-05-01";
   pyproject = true;
   # python setup.py --version
   realVersion = "0.1.dev202+g${lib.substring 0 7 src.rev}";
@@ -16,12 +18,20 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "amaranth-lang";
     repo = "amaranth-boards";
-    rev = "170675812b71ee722bcf8ccdb88409a9ad97ffe2";
-    hash = "sha256-dwZCKMJnEY9RjzkcJ9r3TEC7W+Wfi/P7Hjl4/d60/qo=";
+    rev = "aba2300dc83216523e1c98fdb22471cb4bac5027";
+    # these files change depending on git branch status
+    postFetch = "rm -f $out/.git_archival.txt $out/.gitattributes";
+    hash = "sha256-jldXyMJtuSGcZKmtwpZBYrR/UBe4ufblPYRYpBmReM8=";
   };
 
-  nativeBuildInputs = [ setuptools setuptools-scm ];
-  dependencies = [ setuptools amaranth ];
+  nativeBuildInputs = [
+    setuptools
+    setuptools-scm
+  ];
+  dependencies = [
+    setuptools
+    amaranth
+  ];
 
   preBuild = ''
     export SETUPTOOLS_SCM_PRETEND_VERSION="${realVersion}"
@@ -30,10 +40,15 @@ buildPythonPackage rec {
   # no tests
   doCheck = false;
 
+  passthru.updateScript = unstableGitUpdater { };
+
   meta = with lib; {
     description = "Board definitions for Amaranth HDL";
     homepage = "https://github.com/amaranth-lang/amaranth-boards";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ emily thoughtpolice pbsds ];
+    maintainers = with maintainers; [
+      thoughtpolice
+      pbsds
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/amaranth-soc/default.nix b/pkgs/development/python-modules/amaranth-soc/default.nix
index 0742055e9cf24..597a1829161fc 100644
--- a/pkgs/development/python-modules/amaranth-soc/default.nix
+++ b/pkgs/development/python-modules/amaranth-soc/default.nix
@@ -1,22 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, amaranth
-, pdm-backend
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  amaranth,
+  pdm-backend,
+  unstableGitUpdater,
 }:
 
 buildPythonPackage rec {
   pname = "amaranth-soc";
-  version = "0-unstable-2024-02-16";
+  version = "0.1a-unstable-2024-06-10";
   pyproject = true;
   # from `pdm show`
-  realVersion = "0.1a1.dev1+g${lib.substring 0 7 src.rev}";
+  realVersion = let
+     tag = builtins.elemAt (lib.splitString "-" version) 0;
+     rev = lib.substring 0 7 src.rev;
+    in "${tag}1.dev1+g${rev}";
 
   src = fetchFromGitHub {
     owner = "amaranth-lang";
     repo = "amaranth-soc";
-    rev = "9f46553aa4289e2a11788a73fade6410a371b162";
-    hash = "sha256-ZllDSrZEu16jZtbQ7crQSj3XCbsthueXtaAvyf45dmY=";
+    rev = "e1b842800533f44924f21c3867bc2290084d100f";
+    hash = "sha256-GAGQEncONY566v8hLjGeZ7CRlOt36vHg+0a5xcB+g1Y=";
   };
 
   nativeBuildInputs = [ pdm-backend ];
@@ -26,10 +31,15 @@ buildPythonPackage rec {
     export PDM_BUILD_SCM_VERSION="${realVersion}"
   '';
 
+  passthru.updateScript = unstableGitUpdater { tagPrefix = "v"; };
+
   meta = with lib; {
     description = "System on Chip toolkit for Amaranth HDL";
     homepage = "https://github.com/amaranth-lang/amaranth-soc";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ emily thoughtpolice pbsds ];
+    maintainers = with maintainers; [
+      thoughtpolice
+      pbsds
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/amaranth/default.nix b/pkgs/development/python-modules/amaranth/default.nix
index 5f2f072558dfe..bac25d70f0407 100644
--- a/pkgs/development/python-modules/amaranth/default.nix
+++ b/pkgs/development/python-modules/amaranth/default.nix
@@ -1,32 +1,34 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pdm-backend
-, pyvcd
-, jinja2
-, importlib-resources
-, importlib-metadata
-, git
-
-# for tests
-, pytestCheckHook
-, symbiyosys
-, yices
-, yosys
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pdm-backend,
+  jschon,
+  pyvcd,
+  jinja2,
+  importlib-resources,
+  importlib-metadata,
+  git,
+
+  # for tests
+  pytestCheckHook,
+  sby,
+  yices,
+  yosys,
 }:
 
 buildPythonPackage rec {
   pname = "amaranth";
   format = "pyproject";
-  version = "0.4.5";
+  version = "0.5.2";
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "amaranth-lang";
     repo = "amaranth";
     rev = "refs/tags/v${version}";
-    hash = "sha256-g9dn6gUTdFHz9GMWHERsRLWHoI3E7vjuQDK0usbZO7g=";
+    hash = "sha256-pf9X1B60FgqTbSw7D80ERHp4GCvCe5lqrlS96xPXLNo=";
   };
 
   nativeBuildInputs = [
@@ -34,16 +36,18 @@ buildPythonPackage rec {
     pdm-backend
   ];
 
-  dependencies = [
-    jinja2
-    pyvcd
-  ] ++
-    lib.optional (pythonOlder "3.9") importlib-resources ++
-    lib.optional (pythonOlder "3.8") importlib-metadata;
+  dependencies =
+    [
+      jschon
+      jinja2
+      pyvcd
+    ]
+    ++ lib.optional (pythonOlder "3.9") importlib-resources
+    ++ lib.optional (pythonOlder "3.8") importlib-metadata;
 
   nativeCheckInputs = [
     pytestCheckHook
-    symbiyosys
+    sby
     yices
     yosys
   ];
@@ -51,10 +55,13 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "amaranth" ];
 
   meta = with lib; {
-    description = "A modern hardware definition language and toolchain based on Python";
+    description = "Modern hardware definition language and toolchain based on Python";
     mainProgram = "amaranth-rpc";
     homepage = "https://amaranth-lang.org/docs/amaranth";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ emily thoughtpolice pbsds ];
+    maintainers = with maintainers; [
+      thoughtpolice
+      pbsds
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/amarna/default.nix b/pkgs/development/python-modules/amarna/default.nix
index d9587d11ee48f..daa474e25ecf2 100644
--- a/pkgs/development/python-modules/amarna/default.nix
+++ b/pkgs/development/python-modules/amarna/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, lark
-, pydot
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lark,
+  pydot,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     pydot
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "amarna"
-  ];
+  pythonImportsCheck = [ "amarna" ];
 
   meta = with lib; {
     description = "Static-analyzer and linter for the Cairo programming language";
diff --git a/pkgs/development/python-modules/amazon-ion/default.nix b/pkgs/development/python-modules/amazon-ion/default.nix
index 939c554d339d4..d10b9f4ff0498 100644
--- a/pkgs/development/python-modules/amazon-ion/default.nix
+++ b/pkgs/development/python-modules/amazon-ion/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, cbor2
-, docopt
-, fetchFromGitHub
-, jsonconversion
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, six
-, tabulate
+{
+  lib,
+  buildPythonPackage,
+  cbor2,
+  docopt,
+  fetchFromGitHub,
+  jsonconversion,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  six,
+  tabulate,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
       --replace "'pytest-runner'," ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     jsonconversion
@@ -58,9 +57,7 @@ buildPythonPackage rec {
     "tests/test_benchmark_cli.py"
   ];
 
-  pythonImportsCheck = [
-    "amazon.ion"
-  ];
+  pythonImportsCheck = [ "amazon.ion" ];
 
   meta = with lib; {
     description = "Python implementation of Amazon Ion";
diff --git a/pkgs/development/python-modules/amazon-kclpy/default.nix b/pkgs/development/python-modules/amazon-kclpy/default.nix
index 751a2945da598..1ade5e23e240c 100644
--- a/pkgs/development/python-modules/amazon-kclpy/default.nix
+++ b/pkgs/development/python-modules/amazon-kclpy/default.nix
@@ -1,35 +1,50 @@
-{ lib, buildPythonPackage, fetchFromGitHub, python, mock, boto, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  setuptools,
+  mock,
+  boto3,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "amazon-kclpy";
-  version = "2.1.3";
-  format = "setuptools";
+  version = "2.1.5";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "awslabs";
     repo = "amazon-kinesis-client-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-3BhccRJd6quElXZSix1aVIqWr9wdcTTziDhnIOLiPPo=";
+    hash = "sha256-kSboeg/fdg7hbiWyPzAAsYo+0vbQDfRoeJYHlrrFNrA=";
   };
 
-  # argparse is just required for python2.6
-  prePatch = ''
-    substituteInPlace setup.py \
-      --replace "'argparse'," ""
-  '';
+  patches = [
+    (fetchpatch {
+      name = "remove-deprecated-boto.patch";
+      url = "https://github.com/awslabs/amazon-kinesis-client-python/commit/bd2c442cdd1b0e2c99d3471c1d3ffcc9161a7c42.patch";
+      hash = "sha256-5W0qItDGjx1F6IllzLH57XCpToKrAu9mTbzv/1wMXuY=";
+    })
+  ];
 
-  propagatedBuildInputs =  [ mock boto ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [ pytest ];
+  dependencies = [
+    mock
+    boto3
+  ];
 
-  checkPhase = ''
-    ${python.interpreter} -m pytest
-  '';
+  pythonImportsCheck = [ "amazon_kclpy" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Amazon Kinesis Client Library for Python";
     homepage = "https://github.com/awslabs/amazon-kinesis-client-python";
-    license = licenses.amazonsl;
+    license = licenses.asl20;
     maintainers = with maintainers; [ psyanticy ];
+    broken = true;
   };
 }
diff --git a/pkgs/development/python-modules/ambee/default.nix b/pkgs/development/python-modules/ambee/default.nix
index 3e3f719b7afd2..91cf9f27b2e1e 100644
--- a/pkgs/development/python-modules/ambee/default.nix
+++ b/pkgs/development/python-modules/ambee/default.nix
@@ -1,20 +1,22 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, aiohttp
-, poetry-core
-, yarl
-, aresponses
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  aiohttp,
+  poetry-core,
+  yarl,
+  aresponses,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "ambee";
   version = "0.4.0";
   disabled = pythonOlder "3.8";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "frenck";
@@ -23,11 +25,9 @@ buildPythonPackage rec {
     hash = "sha256-2wX2CLr6kdVw2AGPW6DmYI2OBfQFI/iWVorok2d3wx4=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     yarl
   ];
@@ -35,14 +35,14 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     aresponses
     pytest-asyncio
+    pytest-cov-stub
     pytestCheckHook
   ];
 
   postPatch = ''
     # Upstream doesn't set a version for the pyproject.toml
     substituteInPlace pyproject.toml \
-      --replace "0.0.0" "${version}" \
-      --replace "--cov" ""
+      --replace-fail "0.0.0" "${version}"
   '';
 
   pythonImportsCheck = [ "ambee" ];
diff --git a/pkgs/development/python-modules/amberelectric/default.nix b/pkgs/development/python-modules/amberelectric/default.nix
index ac32a8cc7824c..5253eef6c2145 100644
--- a/pkgs/development/python-modules/amberelectric/default.nix
+++ b/pkgs/development/python-modules/amberelectric/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest-mock
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, setuptools
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest-mock,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  setuptools,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "amberelectric";
-  version = "1.1.0";
+  version = "1.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-HujjqJ3nkPIj8P0qAiQnQzLhji5l8qOAO2Gh53OJ7UY=";
+    hash = "sha256-gxpFKIrGHpwjPdF0nnyruwCYf3bhrubdtXNx2+wEiZU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     urllib3
@@ -35,9 +34,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "amberelectric"
-  ];
+  pythonImportsCheck = [ "amberelectric" ];
 
   meta = with lib; {
     description = "Python Amber Electric API interface";
diff --git a/pkgs/development/python-modules/ambiclimate/default.nix b/pkgs/development/python-modules/ambiclimate/default.nix
deleted file mode 100644
index ecaae3fd9f571..0000000000000
--- a/pkgs/development/python-modules/ambiclimate/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, aiohttp
-, async-timeout
-}:
-
-buildPythonPackage rec {
-  pname = "ambiclimate";
-  version = "0.2.1";
-  format = "setuptools";
-
-  src = fetchPypi {
-    pname = "Ambiclimate";
-    inherit version;
-    sha256 = "0vhmpazc2n7qyyh7wqsz635w0f8afk2i5d592ikb84bgnfn83483";
-  };
-
-  propagatedBuildInputs = [
-    aiohttp
-    async-timeout
-  ];
-
-  # tests are not present
-  doCheck = false;
-
-  pythonImportsCheck = [ "ambiclimate" ];
-
-  meta = with lib; {
-    description = "Python library to communicate with ambiclimate";
-    homepage = "https://github.com/Danielhiversen/pyAmbiclimate";
-    license = with licenses; [ mit ];
-    maintainers = with maintainers; [ fab ];
-  };
-}
diff --git a/pkgs/development/python-modules/amcrest/default.nix b/pkgs/development/python-modules/amcrest/default.nix
index 1de7da6f829fc..0a217c6f7832b 100644
--- a/pkgs/development/python-modules/amcrest/default.nix
+++ b/pkgs/development/python-modules/amcrest/default.nix
@@ -1,23 +1,23 @@
-{ lib
-, argcomplete
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, httpx
-, pytestCheckHook
-, pythonOlder
-, requests
-, responses
-, urllib3
-, typing-extensions
+{
+  lib,
+  argcomplete,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  httpx,
+  mock,
+  pytestCheckHook,
+  requests,
+  responses,
+  setuptools,
+  typing-extensions,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "amcrest";
   version = "1.9.8";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.7";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "tchellomello";
@@ -26,7 +26,18 @@ buildPythonPackage rec {
     hash = "sha256-v0jWEZo06vltEq//suGrvJ/AeeDxUG5CCFhbf03q34w=";
   };
 
-  propagatedBuildInputs = [
+  patches = [
+    (fetchpatch2 {
+      # https://github.com/tchellomello/python-amcrest/pull/235
+      name = "replace-distutils.patch";
+      url = "https://github.com/tchellomello/python-amcrest/commit/ec56049c0f5b49bc4c5bcf0acb7fea89ec1c1df4.patch";
+      hash = "sha256-ym+Bn795y+JqhNMk4NPnOVr3DwO9DkUV0d9LEaz3CMo=";
+    })
+  ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     argcomplete
     httpx
     requests
@@ -40,15 +51,13 @@ buildPythonPackage rec {
     responses
   ];
 
-  pythonImportsCheck = [
-    "amcrest"
-  ];
+  pythonImportsCheck = [ "amcrest" ];
 
   meta = with lib; {
     description = "Python module for Amcrest and Dahua Cameras";
     homepage = "https://github.com/tchellomello/python-amcrest";
     changelog = "https://github.com/tchellomello/python-amcrest/releases/tag/${version}";
-    license = with licenses; [ gpl2Only ];
+    license = licenses.gpl2Only;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/amiibo-py/default.nix b/pkgs/development/python-modules/amiibo-py/default.nix
index 93cc6cdd0b6cf..0934747945a04 100644
--- a/pkgs/development/python-modules/amiibo-py/default.nix
+++ b/pkgs/development/python-modules/amiibo-py/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, aiohttp
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  aiohttp,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -31,6 +32,6 @@ buildPythonPackage rec {
     description = "API Wrapper for amiiboapi.com";
     homepage = "https://github.com/XiehCanCode/amiibo.py";
     license = licenses.mit;
-    maintainers = [ maintainers.ivar ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/amply/default.nix b/pkgs/development/python-modules/amply/default.nix
index 5f648fc1baf97..12af9b9da2ebc 100644
--- a/pkgs/development/python-modules/amply/default.nix
+++ b/pkgs/development/python-modules/amply/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, setuptools-scm
-, docutils
-, pyparsing
-, pytestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools-scm,
+  docutils,
+  pyparsing,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/amqp/default.nix b/pkgs/development/python-modules/amqp/default.nix
index 36fc48c35f35e..c983669f85ddf 100644
--- a/pkgs/development/python-modules/amqp/default.nix
+++ b/pkgs/development/python-modules/amqp/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, case
-, fetchPypi
-, pytestCheckHook
-, pytest-rerunfailures
-, pythonOlder
-, vine
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pytest-rerunfailures,
+  pythonOlder,
+  vine,
 }:
 
 buildPythonPackage rec {
@@ -20,14 +20,11 @@ buildPythonPackage rec {
     hash = "sha256-oez/QlrQY61CpIbJAoB9FIIxFIHIrZWnJpSyl1519/0=";
   };
 
-  propagatedBuildInputs = [
-    vine
-  ];
+  propagatedBuildInputs = [ vine ];
 
   __darwinAllowLocalNetworking = true;
 
   nativeCheckInputs = [
-    case
     pytestCheckHook
     pytest-rerunfailures
   ];
@@ -37,9 +34,7 @@ buildPythonPackage rec {
     "test_rmq.py"
   ];
 
-  pythonImportsCheck = [
-    "amqp"
-  ];
+  pythonImportsCheck = [ "amqp" ];
 
   meta = with lib; {
     description = "Python client for the Advanced Message Queuing Procotol (AMQP). This is a fork of amqplib which is maintained by the Celery project";
diff --git a/pkgs/development/python-modules/amqplib/default.nix b/pkgs/development/python-modules/amqplib/default.nix
index 0805ce6784a28..60c66e2414916 100644
--- a/pkgs/development/python-modules/amqplib/default.nix
+++ b/pkgs/development/python-modules/amqplib/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, python }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+}:
 
 buildPythonPackage rec {
   pname = "amqplib";
diff --git a/pkgs/development/python-modules/amqtt/default.nix b/pkgs/development/python-modules/amqtt/default.nix
index 0daef6d77aa02..0221295513b34 100644
--- a/pkgs/development/python-modules/amqtt/default.nix
+++ b/pkgs/development/python-modules/amqtt/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, docopt
-, fetchFromGitHub
-, hypothesis
-, passlib
-, poetry-core
-, pytest-logdog
-, pytest-asyncio
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, pyyaml
-, setuptools
-, transitions
-, websockets
+{
+  lib,
+  buildPythonPackage,
+  docopt,
+  fetchFromGitHub,
+  hypothesis,
+  passlib,
+  poetry-core,
+  pytest-logdog,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  pyyaml,
+  setuptools,
+  transitions,
+  websockets,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
       --replace 'websockets = ">=9.0,<11.0"' 'websockets = "*"'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     docopt
@@ -56,9 +55,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "--asyncio-mode=auto"
-  ];
+  pytestFlagsArray = [ "--asyncio-mode=auto" ];
 
   disabledTests = lib.optionals (pythonAtLeast "3.12") [
     # stuck in epoll
@@ -83,9 +80,7 @@ buildPythonPackage rec {
     export PATH=$out/bin:$PATH
   '';
 
-  pythonImportsCheck = [
-    "amqtt"
-  ];
+  pythonImportsCheck = [ "amqtt" ];
 
   meta = with lib; {
     description = "Python MQTT client and broker implementation";
diff --git a/pkgs/development/python-modules/anchor-kr/default.nix b/pkgs/development/python-modules/anchor-kr/default.nix
index 32ce534e6b6b7..10828482b830f 100644
--- a/pkgs/development/python-modules/anchor-kr/default.nix
+++ b/pkgs/development/python-modules/anchor-kr/default.nix
@@ -1,6 +1,7 @@
-{ lib,
+{
+  lib,
   buildPythonPackage,
-  fetchFromGitHub
+  fetchFromGitHub,
 }:
 buildPythonPackage {
   pname = "anchor";
diff --git a/pkgs/development/python-modules/ancp-bids/default.nix b/pkgs/development/python-modules/ancp-bids/default.nix
index 366b00e9c6e0a..77978e6cd19c5 100644
--- a/pkgs/development/python-modules/ancp-bids/default.nix
+++ b/pkgs/development/python-modules/ancp-bids/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pythonOlder
-, pytestCheckHook
-, setuptools
-, wheel
-, numpy
-, pandas
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools,
+  wheel,
+  numpy,
+  pandas,
 }:
 
 buildPythonPackage rec {
   pname = "ancp-bids";
-  version = "0.2.1";
+  version = "0.2.4";
   format = "pyproject";
   disabled = pythonOlder "3.7";
 
@@ -21,7 +22,7 @@ buildPythonPackage rec {
     owner = "ANCPLabOldenburg";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-Nu9pulVSZysgm/F7jl+VpoqMCiHeysZjQDQ1dT7AnpE=";
+    hash = "sha256-c6X1gCYAezgZQP6xfQPfKW8V35F1cnTdbryEp3sZ4jw=";
   };
 
   patches = [
@@ -44,9 +45,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "ancpbids"
-  ];
+  pythonImportsCheck = [ "ancpbids" ];
 
   pytestFlagsArray = [ "tests/auto" ];
 
diff --git a/pkgs/development/python-modules/androguard/default.nix b/pkgs/development/python-modules/androguard/default.nix
index e408d11590bd1..c5a4300736ee8 100644
--- a/pkgs/development/python-modules/androguard/default.nix
+++ b/pkgs/development/python-modules/androguard/default.nix
@@ -1,38 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, future
-, networkx
-, pygments
-, lxml
-, colorama
-, matplotlib
-, asn1crypto
-, click
-, pydot
-, ipython
-, packaging
-, pyqt5
-, pyperclip
-, nose
-, nose-timer
-, mock
-, python-magic
-, codecov
-, coverage
-, qt5
-# This is usually used as a library, and it'd be a shame to force the GUI
-# libraries to the closure if GUI is not desired.
-, withGui ? false
-# Tests take a very long time, and currently fail, but next release' tests
-# shouldn't fail
-, doCheck ? false
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  future,
+  networkx,
+  pygments,
+  lxml,
+  colorama,
+  matplotlib,
+  asn1crypto,
+  click,
+  pydot,
+  ipython,
+  pyqt5,
+  pyperclip,
+  pytestCheckHook,
+  mock,
+  python-magic,
+  codecov,
+  coverage,
+  qt5,
+  # This is usually used as a library, and it'd be a shame to force the GUI
+  # libraries to the closure if GUI is not desired.
+  withGui ? false,
+  # Deprecated in 24.11.
+  doCheck ? true,
 }:
 
+assert lib.warnIf (!doCheck) "python3Packages.androguard: doCheck is deprecated" true;
+
 buildPythonPackage rec {
   pname = "androguard";
   version = "3.4.0a1";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     repo = pname;
@@ -41,46 +42,47 @@ buildPythonPackage rec {
     sha256 = "1aparxiq11y0hbvkayp92w684nyxyyx7mi0n1x6x51g5z6c58vmy";
   };
 
-  nativeBuildInputs = [
-    packaging
-  ] ++ lib.optionals withGui [
-    qt5.wrapQtAppsHook
+  patches = [
+    ./drop-removed-networkx-formats.patch
+    ./fix-tests.patch
   ];
 
-  propagatedBuildInputs = [
-    asn1crypto
-    click
-    colorama
-    future
-    ipython
-    lxml
-    matplotlib
-    networkx
-    pydot
-    pygments
-  ] ++ lib.optionals withGui [
-    pyqt5
-    pyperclip
-  ];
+  build-system = [ setuptools ];
+
+  nativeBuildInputs = lib.optionals withGui [ qt5.wrapQtAppsHook ];
+
+  dependencies =
+    [
+      asn1crypto
+      click
+      colorama
+      future
+      ipython
+      lxml
+      matplotlib
+      networkx
+      pydot
+      pygments
+    ]
+    ++ networkx.optional-dependencies.default
+    ++ networkx.optional-dependencies.extra
+    ++ lib.optionals withGui [
+      pyqt5
+      pyperclip
+    ];
 
   nativeCheckInputs = [
+    pytestCheckHook
     codecov
     coverage
     mock
-    nose
-    nose-timer
     pyperclip
     pyqt5
     python-magic
   ];
-  inherit doCheck;
 
   # If it won't be verbose, you'll see nothing going on for a long time.
-  checkPhase = ''
-    runHook preCheck
-    nosetests --verbosity=3
-    runHook postCheck
-  '';
+  pytestFlagsArray = [ "--verbose" ];
 
   preFixup = lib.optionalString withGui ''
     makeWrapperArgs+=("''${qtWrapperArgs[@]}")
diff --git a/pkgs/development/python-modules/androguard/drop-removed-networkx-formats.patch b/pkgs/development/python-modules/androguard/drop-removed-networkx-formats.patch
new file mode 100644
index 0000000000000..214fbaa2dafd4
--- /dev/null
+++ b/pkgs/development/python-modules/androguard/drop-removed-networkx-formats.patch
@@ -0,0 +1,14 @@
+diff --git a/androguard/cli/main.py b/androguard/cli/main.py
+index 13bc1d0ab7..a79b4fe5fa 100644
+--- a/androguard/cli/main.py
++++ b/androguard/cli/main.py
+@@ -110,9 +110,7 @@
+ 
+     write_methods = dict(gml=_write_gml,
+                          gexf=nx.write_gexf,
+-                         gpickle=nx.write_gpickle,
+                          graphml=nx.write_graphml,
+-                         yaml=nx.write_yaml,
+                          net=nx.write_pajek,
+                          )
+ 
diff --git a/pkgs/development/python-modules/androguard/fix-tests.patch b/pkgs/development/python-modules/androguard/fix-tests.patch
new file mode 100644
index 0000000000000..b971b46c62445
--- /dev/null
+++ b/pkgs/development/python-modules/androguard/fix-tests.patch
@@ -0,0 +1,13 @@
+diff --git a/tests/test_types.py b/tests/test_types.py
+index 127dfc20eb..f1c89f0712 100644
+--- a/tests/test_types.py
++++ b/tests/test_types.py
+@@ -182,7 +182,7 @@
+             for i in filter(lambda x: 'const' in x.get_name(), method.get_instructions()):
+                 i.show(0)
+                 # ins should only have one literal
+-                self.assertEquals(len(i.get_literals()), 1)
++                self.assertEqual(len(i.get_literals()), 1)
+ 
+                 fmt, value = VALUES[method.full_name].pop(0)
+                 converted = format_value(i.get_literals()[0], i, fmt)
diff --git a/pkgs/development/python-modules/android-backup/default.nix b/pkgs/development/python-modules/android-backup/default.nix
index 647a36f78b330..cc153ab2e3959 100644
--- a/pkgs/development/python-modules/android-backup/default.nix
+++ b/pkgs/development/python-modules/android-backup/default.nix
@@ -1,10 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pycrypto
-, pythonOlder
-, enum34
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pycrypto,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +18,7 @@ buildPythonPackage rec {
     sha256 = "0c436hv64ddqrjs77pa7z6spiv49pjflbmgg31p38haj5mzlrqvw";
   };
 
-  propagatedBuildInputs = [
-    pycrypto
-  ] ++ lib.optional (pythonOlder "3.4") enum34;
+  propagatedBuildInputs = [ pycrypto ];
 
   checkPhase = ''
     ${python.interpreter} -m android_backup.tests
diff --git a/pkgs/development/python-modules/androidtv/default.nix b/pkgs/development/python-modules/androidtv/default.nix
index 0516388b3f89f..799306fa30f01 100644
--- a/pkgs/development/python-modules/androidtv/default.nix
+++ b/pkgs/development/python-modules/androidtv/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, adb-shell
-, aiofiles
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pure-python-adb
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  adb-shell,
+  aiofiles,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  pure-python-adb,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -31,27 +32,21 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    async = [
-      aiofiles
-    ];
+    async = [ aiofiles ];
     inherit (adb-shell.optional-dependencies) usb;
   };
 
   nativeCheckInputs = [
     mock
     pytestCheckHook
-  ]
-  ++ passthru.optional-dependencies.async
-  ++ passthru.optional-dependencies.usb;
+  ] ++ passthru.optional-dependencies.async ++ passthru.optional-dependencies.usb;
 
   disabledTests = [
     # Requires git but fails anyway
     "test_no_underscores"
   ];
 
-  pythonImportsCheck = [
-    "androidtv"
-  ];
+  pythonImportsCheck = [ "androidtv" ];
 
   meta = with lib; {
     description = "Communicate with an Android TV or Fire TV device via ADB over a network";
diff --git a/pkgs/development/python-modules/androidtvremote2/default.nix b/pkgs/development/python-modules/androidtvremote2/default.nix
index a0c066c4d9751..3c01a2f28135f 100644
--- a/pkgs/development/python-modules/androidtvremote2/default.nix
+++ b/pkgs/development/python-modules/androidtvremote2/default.nix
@@ -1,40 +1,37 @@
-{ lib
-, aiofiles
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, protobuf
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiofiles,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  protobuf,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "androidtvremote2";
-  version = "0.0.15";
-  format = "pyproject";
+  version = "0.1.2";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "tronikos";
     repo = "androidtvremote2";
     rev = "refs/tags/v${version}";
-    hash = "sha256-aLNmuMuwaMhl/Utv6bVU4fR8zmhj0fUiInL4RHT4dVw=";
+    hash = "sha256-4iVM7BCqOFHrW2BvPakXxp3MfZa+WlB7g/ix239NldE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiofiles
     cryptography
     protobuf
   ];
 
-  pythonImportsCheck = [
-    "androidtvremote2"
-  ];
+  pythonImportsCheck = [ "androidtvremote2" ];
 
   # Module only has a dummy test
   doCheck = false;
diff --git a/pkgs/development/python-modules/anel-pwrctrl-homeassistant/default.nix b/pkgs/development/python-modules/anel-pwrctrl-homeassistant/default.nix
index d32138c68dfa7..07b8cbb96c0c0 100644
--- a/pkgs/development/python-modules/anel-pwrctrl-homeassistant/default.nix
+++ b/pkgs/development/python-modules/anel-pwrctrl-homeassistant/default.nix
@@ -17,14 +17,12 @@ buildPythonPackage rec {
   # No tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "anel_pwrctrl"
-  ];
+  pythonImportsCheck = [ "anel_pwrctrl" ];
 
   meta = with lib; {
     description = "Discover and control ANEL NET-PwrCtrl devices";
     homepage = "https://github.com/mweinelt/anel-pwrctrl";
     license = licenses.mit;
-    maintainers = with maintainers; [jamiemagee];
+    maintainers = with maintainers; [ jamiemagee ];
   };
 }
diff --git a/pkgs/development/python-modules/angr/default.nix b/pkgs/development/python-modules/angr/default.nix
index b47510fcc4b1b..15663d0e790f5 100644
--- a/pkgs/development/python-modules/angr/default.nix
+++ b/pkgs/development/python-modules/angr/default.nix
@@ -23,7 +23,6 @@
   pycparser,
   pyformlang,
   pythonOlder,
-  pythonRelaxDepsHook,
   pyvex,
   rich,
   rpyc,
@@ -37,7 +36,7 @@
 
 buildPythonPackage rec {
   pname = "angr";
-  version = "9.2.101";
+  version = "9.2.119";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -46,16 +45,22 @@ buildPythonPackage rec {
     owner = "angr";
     repo = "angr";
     rev = "refs/tags/v${version}";
-    hash = "sha256-btj1bGpS/t1uQxmMiZ+PTBqiIb7eigg1vGTPjzr4/p4=";
+    hash = "sha256-GwfQj8KU6M5ylgJPN1Blz8Chz2zEDTZayFdvjXXWoHY=";
   };
 
-  pythonRelaxDeps = [ "capstone" ];
+  postPatch = ''
+    # unicorn is also part of build-system
+    substituteInPlace pyproject.toml \
+      --replace-fail "unicorn==2.0.1.post1" "unicorn"
+  '';
 
-  build-system = [
-    pythonRelaxDepsHook
-    setuptools
+  pythonRelaxDeps = [
+    "capstone"
+    "unicorn"
   ];
 
+  build-system = [ setuptools ];
+
   dependencies = [
     ailment
     archinfo
@@ -90,7 +95,7 @@ buildPythonPackage rec {
     AngrDB = [ sqlalchemy ];
   };
 
-  setupPyBuildFlags = lib.optionals stdenv.isLinux [
+  setupPyBuildFlags = lib.optionals stdenv.hostPlatform.isLinux [
     "--plat-name"
     "linux"
   ];
@@ -112,5 +117,7 @@ buildPythonPackage rec {
     homepage = "https://angr.io/";
     license = with licenses; [ bsd2 ];
     maintainers = with maintainers; [ fab ];
+    # angr is pining unicorn
+    broken = versionAtLeast unicorn.version "2.0.1.post1";
   };
 }
diff --git a/pkgs/development/python-modules/angrcli/default.nix b/pkgs/development/python-modules/angrcli/default.nix
index cd2bf2f5508f2..0e3fa66f24862 100644
--- a/pkgs/development/python-modules/angrcli/default.nix
+++ b/pkgs/development/python-modules/angrcli/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, angr
-, buildPythonPackage
-, cmd2
-, coreutils
-, fetchFromGitHub
-, pygments
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, stdenv
+{
+  lib,
+  angr,
+  buildPythonPackage,
+  cmd2,
+  coreutils,
+  fetchFromGitHub,
+  pygments,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  stdenv,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
       --replace-fail "/bin/ls" "${coreutils}/bin/ls"
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     angr
@@ -52,9 +51,7 @@ buildPythonPackage rec {
     "test_max_depth"
   ];
 
-  pythonImportsCheck = [
-    "angrcli"
-  ];
+  pythonImportsCheck = [ "angrcli" ];
 
   meta = with lib; {
     description = "Python modules to allow easier interactive use of angr";
diff --git a/pkgs/development/python-modules/angrop/default.nix b/pkgs/development/python-modules/angrop/default.nix
index 939517887e401..d822f66800d54 100644
--- a/pkgs/development/python-modules/angrop/default.nix
+++ b/pkgs/development/python-modules/angrop/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "angrop";
-  version = "9.2.9";
+  version = "9.2.10";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "angr";
     repo = "angrop";
     rev = "refs/tags/v${version}";
-    hash = "sha256-T07Y23UDp9eL2DK5gakV8kPNGsXf+4EofZJDSW/JS1Q=";
+    hash = "sha256-+epX+tCSv5Kit4lncDNtjokehCSl+tO7rbi3L+RrI+E=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/aniso8601/default.nix b/pkgs/development/python-modules/aniso8601/default.nix
index 5aa4edce7c2e6..0c10170d5c104 100644
--- a/pkgs/development/python-modules/aniso8601/default.nix
+++ b/pkgs/development/python-modules/aniso8601/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, python-dateutil
-, fetchPypi
-, isPy3k
-, mock
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  python-dateutil,
+  fetchPypi,
+  isPy3k,
+  mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-cuMRdmfu32aVG7LZP0KWpWuUsHioqVkFoFJhH7PxuXM=";
   };
 
-  propagatedBuildInputs = [
-    python-dateutil
-  ];
+  propagatedBuildInputs = [ python-dateutil ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ lib.optional (!isPy3k) mock;
+  nativeCheckInputs = [ pytestCheckHook ] ++ lib.optional (!isPy3k) mock;
 
   pythonImportsCheck = [ "aniso8601" ];
 
diff --git a/pkgs/development/python-modules/anitopy/default.nix b/pkgs/development/python-modules/anitopy/default.nix
index 313f9631154e6..95f3af2b7cb5f 100644
--- a/pkgs/development/python-modules/anitopy/default.nix
+++ b/pkgs/development/python-modules/anitopy/default.nix
@@ -1,6 +1,7 @@
-{ lib,
+{
+  lib,
   buildPythonPackage,
-  fetchFromGitHub
+  fetchFromGitHub,
 }:
 buildPythonPackage rec {
   pname = "anitopy";
diff --git a/pkgs/development/python-modules/annexremote/default.nix b/pkgs/development/python-modules/annexremote/default.nix
index 562014f067890..8b133595ebbde 100644
--- a/pkgs/development/python-modules/annexremote/default.nix
+++ b/pkgs/development/python-modules/annexremote/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "annexremote"
-  ];
+  pythonImportsCheck = [ "annexremote" ];
 
   meta = with lib; {
     description = "Helper module to easily develop git-annex remotes";
diff --git a/pkgs/development/python-modules/annotated-types/default.nix b/pkgs/development/python-modules/annotated-types/default.nix
index 85e2379507c6c..a69159a7a173e 100644
--- a/pkgs/development/python-modules/annotated-types/default.nix
+++ b/pkgs/development/python-modules/annotated-types/default.nix
@@ -1,42 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, typing-extensions
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  typing-extensions,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "annotated-types";
-  version = "0.6.0";
+  version = "0.7.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "annotated-types";
     repo = "annotated-types";
     rev = "refs/tags/v${version}";
-    hash = "sha256-SZ9/rXYcns4DFM6vk6SRKvuv3MY3T7xO9aW7WAQqtVE=";
+    hash = "sha256-I1SPUKq2WIwEX5JmS3HrJvrpNrKDu30RWkBRDFE+k9A=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.9") [
-    typing-extensions
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.9") [ typing-extensions ];
 
   pythonImportsCheck = [ "annotated_types" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Reusable constraint types to use with typing.Annotated";
     homepage = "https://github.com/annotated-types/annotated-types";
-    changelog = "https://github.com/annotated-types/annotated-types/releases/tag/${src.rev}";
+    changelog = "https://github.com/annotated-types/annotated-types/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ blaggacao ];
   };
diff --git a/pkgs/development/python-modules/annoy/default.nix b/pkgs/development/python-modules/annoy/default.nix
index 4de8d0adacb9b..f871df2fbcedf 100644
--- a/pkgs/development/python-modules/annoy/default.nix
+++ b/pkgs/development/python-modules/annoy/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, h5py
-, numpy
-, pynose
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  h5py,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,11 @@ buildPythonPackage rec {
 
   disabled = pythonOlder "3.7";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-nL/r7+Cl+EPropxr5MhNYB9PQa1N7QSG8biMOwdznBU=";
+  src = fetchFromGitHub {
+    owner = "spotify";
+    repo = "annoy";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-oJHW4lULRun2in35pBGOKg44s5kgLH2BKiMOzVu4rf4=";
   };
 
   postPatch = ''
@@ -25,23 +28,26 @@ buildPythonPackage rec {
       --replace-fail "'nose>=1.0'" ""
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  nativeBuildInputs = [
-    h5py
-  ];
+  nativeBuildInputs = [ h5py ];
 
   nativeCheckInputs = [
     numpy
-    pynose
+    pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "annoy"
+  preCheck = ''
+    rm -rf annoy
+  '';
+
+  disabledTestPaths = [
+    # network access
+    "test/accuracy_test.py"
   ];
 
+  pythonImportsCheck = [ "annoy" ];
+
   meta = with lib; {
     description = "Approximate Nearest Neighbors in C++/Python optimized for memory usage and loading/saving to disk";
     homepage = "https://github.com/spotify/annoy";
diff --git a/pkgs/development/python-modules/anonip/default.nix b/pkgs/development/python-modules/anonip/default.nix
index 5f6cc373e5604..6982aa47b297f 100644
--- a/pkgs/development/python-modules/anonip/default.nix
+++ b/pkgs/development/python-modules/anonip/default.nix
@@ -1,8 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pytest-cov-stub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,20 +23,12 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
   ];
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace " --cov=anonip --cov-report=term-missing --no-cov-on-fail" ""
-  '';
+  pytestFlagsArray = [ "tests.py" ];
 
-  pytestFlagsArray = [
-    "tests.py"
-  ];
-
-  pythonImportsCheck = [
-    "anonip"
-  ];
+  pythonImportsCheck = [ "anonip" ];
 
   meta = with lib; {
     description = "Tool to anonymize IP addresses in log files";
diff --git a/pkgs/development/python-modules/anova-wifi/default.nix b/pkgs/development/python-modules/anova-wifi/default.nix
index 4f4c00cd7bed7..85b0e10818579 100644
--- a/pkgs/development/python-modules/anova-wifi/default.nix
+++ b/pkgs/development/python-modules/anova-wifi/default.nix
@@ -8,11 +8,12 @@
   sensor-state-data,
   pytestCheckHook,
   pytest-asyncio,
+  pytest-cov-stub,
 }:
 
 buildPythonPackage rec {
   pname = "anova-wifi";
-  version = "0.12.0";
+  version = "0.17.1";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -21,14 +22,9 @@ buildPythonPackage rec {
     owner = "Lash-L";
     repo = "anova_wifi";
     rev = "refs/tags/v${version}";
-    hash = "sha256-0RRnQBLglPnPin9/gqWDKIsfi5V7ydrdDKwm93WEnvk=";
+    hash = "sha256-TRiv5ljdVqc4qeX+fSH+aTDf5UyNII8/twlNx3KC6oI=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail "--cov=anova_wifi --cov-report=term-missing:skip-covered" ""
-  '';
-
   build-system = [ poetry-core ];
 
   dependencies = [
@@ -39,6 +35,7 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     pytestCheckHook
     pytest-asyncio
+    pytest-cov-stub
   ];
 
   disabledTests = [
@@ -49,7 +46,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "anova_wifi" ];
 
   meta = with lib; {
-    description = "A Python package for reading anova sous vide api data";
+    description = "Python package for reading anova sous vide api data";
     homepage = "https://github.com/Lash-L/anova_wifi";
     changelog = "https://github.com/Lash-L/anova_wifi/releases/tag/v${version}";
     maintainers = with maintainers; [ jamiemagee ];
diff --git a/pkgs/development/python-modules/ansi/default.nix b/pkgs/development/python-modules/ansi/default.nix
index 3fb30ebf72558..282fcd04e0a51 100644
--- a/pkgs/development/python-modules/ansi/default.nix
+++ b/pkgs/development/python-modules/ansi/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-PmgB1glksu4roQeZ1o7uilMJNm9xaYqw680N2z+tUUM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [
     "ansi.colour"
diff --git a/pkgs/development/python-modules/ansi2html/default.nix b/pkgs/development/python-modules/ansi2html/default.nix
index 5f87f8ff3e51c..9ab201720ddf8 100644
--- a/pkgs/development/python-modules/ansi2html/default.nix
+++ b/pkgs/development/python-modules/ansi2html/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, setuptools
-, setuptools-scm
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  setuptools,
+  setuptools-scm,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "ansi2html";
-  version = "1.9.1";
+  version = "1.9.2";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-XGg3oT7MGQOqt6VFNTMSBJ3+3+UQU2KtOo2dIHhx7HE=";
+    hash = "sha256-NFO/h1NdN7gnsFJF+qp1bbq07D1pkl41K2MZw8lVwKU=";
   };
 
   nativeBuildInputs = [
@@ -25,9 +26,7 @@ buildPythonPackage rec {
 
   preCheck = "export PATH=$PATH:$out/bin";
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "ansi2html" ];
 
diff --git a/pkgs/development/python-modules/ansi2image/default.nix b/pkgs/development/python-modules/ansi2image/default.nix
index eadb1ca188a4b..2f3373b1c50ac 100644
--- a/pkgs/development/python-modules/ansi2image/default.nix
+++ b/pkgs/development/python-modules/ansi2image/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, colorama
-, fetchFromGitHub
-, pillow
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  colorama,
+  fetchFromGitHub,
+  pillow,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,17 +27,11 @@ buildPythonPackage rec {
     pillow
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ansi2image"
-  ];
+  pythonImportsCheck = [ "ansi2image" ];
 
-  pytestFlagsArray = [
-    "tests/tests.py"
-  ];
+  pytestFlagsArray = [ "tests/tests.py" ];
 
   meta = with lib; {
     description = "Module to convert ANSI text to an image";
diff --git a/pkgs/development/python-modules/ansible-builder/default.nix b/pkgs/development/python-modules/ansible-builder/default.nix
index e9ddfe5bc2870..064de3b127adf 100644
--- a/pkgs/development/python-modules/ansible-builder/default.nix
+++ b/pkgs/development/python-modules/ansible-builder/default.nix
@@ -1,10 +1,16 @@
-{ lib
-, python3Packages
-, podman
-, fetchPypi
-, bindep
+{
+  lib,
+  setuptools,
+  setuptools-scm,
+  jsonschema,
+  requirements-parser,
+  pyyaml,
+  podman,
+  fetchPypi,
+  bindep,
+  buildPythonPackage,
 }:
-python3Packages.buildPythonPackage rec {
+buildPythonPackage rec {
   pname = "ansible-builder";
   version = "3.0.1";
   format = "pyproject";
@@ -14,16 +20,14 @@ python3Packages.buildPythonPackage rec {
     hash = "sha256-rxyhgj9Cad751tPAptCTLCtXQLUXaRYv39bkoFzzjOk=";
   };
 
-  nativeBuildInputs = with python3Packages; [
+  nativeBuildInputs = [
     setuptools
     setuptools-scm
   ];
 
-  buildInputs = [
-    bindep
-  ];
+  buildInputs = [ bindep ];
 
-  propagatedBuildInputs = with python3Packages; [
+  propagatedBuildInputs = [
     podman
     jsonschema
     requirements-parser
@@ -37,7 +41,7 @@ python3Packages.buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "An Ansible execution environment builder";
+    description = "Ansible execution environment builder";
     homepage = "https://ansible-builder.readthedocs.io/en/stable/";
     license = licenses.asl20;
     maintainers = with maintainers; [ melkor333 ];
diff --git a/pkgs/development/python-modules/ansible-compat/default.nix b/pkgs/development/python-modules/ansible-compat/default.nix
index b3455fac82f45..68eb5fb6a75e5 100644
--- a/pkgs/development/python-modules/ansible-compat/default.nix
+++ b/pkgs/development/python-modules/ansible-compat/default.nix
@@ -1,40 +1,46 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, ansible-core
-, flaky
-, pytest-mock
-, pytestCheckHook
-, pyyaml
-, setuptools-scm
-, subprocess-tee
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  ansible-core,
+  coreutils,
+  flaky,
+  pytest-mock,
+  pytestCheckHook,
+  pyyaml,
+  setuptools,
+  setuptools-scm,
+  subprocess-tee,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "ansible-compat";
-  version = "4.1.11";
-  format = "pyproject";
+  version = "24.9.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.10";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-s+n518OhzmIi3kROncb+zn66cKxk8qC+/cTi1UIBi0o=";
+    pname = "ansible_compat";
+    inherit version;
+    hash = "sha256-n/ICReG9nemyOjZ5AlJKsOEfvPt0GDGZbaXaW2Crld8=";
   };
 
   nativeBuildInputs = [
+    setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pyyaml
     subprocess-tee
   ];
 
   preCheck = ''
     export HOME=$(mktemp -d)
-    export PATH=$PATH:$out/bin
+    substituteInPlace test/test_runtime.py \
+      --replace-fail "printenv" "${coreutils}/bin/printenv"
   '';
 
   nativeCheckInputs = [
@@ -55,18 +61,18 @@ buildPythonPackage rec {
     "test_install_collection_dest"
     "test_upgrade_collection"
     "test_require_collection_no_cache_dir"
-    "test_runtime"
+    "test_runtime_has_playbook"
+    "test_runtime_plugins"
+    "test_scan_sys_path"
   ];
 
-  pythonImportsCheck = [
-    "ansible_compat"
-  ];
+  pythonImportsCheck = [ "ansible_compat" ];
 
   meta = with lib; {
     description = "Function collection that help interacting with various versions of Ansible";
     homepage = "https://github.com/ansible/ansible-compat";
     changelog = "https://github.com/ansible/ansible-compat/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ dawidd6 ];
   };
 }
diff --git a/pkgs/development/python-modules/ansible-kernel/default.nix b/pkgs/development/python-modules/ansible-kernel/default.nix
index dda1fe09fad42..3dd5dcba8463d 100644
--- a/pkgs/development/python-modules/ansible-kernel/default.nix
+++ b/pkgs/development/python-modules/ansible-kernel/default.nix
@@ -1,46 +1,68 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, writeText
-, ipywidgets
-, six
-, docopt
-, tqdm
-, jupyter
-, psutil
-, pyyaml
-, ansible-runner
-, ansible
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  writeText,
+  setuptools,
+  ipywidgets,
+  six,
+  docopt,
+  tqdm,
+  jupyter,
+  psutil,
+  pyyaml,
+  ansible-runner,
+  ansible,
+  python,
 }:
 
 let
-  kernelSpecFile = writeText "kernel.json" (builtins.toJSON {
-    argv = [ python.interpreter "-m" "ansible_kernel" "-f" "{connection_file}" ];
-    codemirror_mode = "yaml";
-    display_name = "Ansible";
-    language = "ansible";
-  });
+  kernelSpecFile = writeText "kernel.json" (
+    builtins.toJSON {
+      argv = [
+        python.interpreter
+        "-m"
+        "ansible_kernel"
+        "-f"
+        "{connection_file}"
+      ];
+      codemirror_mode = "yaml";
+      display_name = "Ansible";
+      language = "ansible";
+    }
+  );
 in
 buildPythonPackage rec {
   pname = "ansible-kernel";
   version = "1.0.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-UJjm9FpmXSznXtaIR2rVv5YJS/H83FvRkNz09vwoe0c=";
   };
 
-  propagatedBuildInputs = [ ipywidgets six docopt tqdm jupyter psutil pyyaml ansible-runner ansible ];
+  build-system = [ setuptools ];
+
+  dependencies = [
+    ipywidgets
+    six
+    docopt
+    tqdm
+    jupyter
+    psutil
+    pyyaml
+    ansible-runner
+    ansible
+  ];
 
   postPatch = ''
-   # remove when merged
-   # https://github.com/ansible/ansible-jupyter-kernel/pull/82
-   touch LICENSE.md
+    # remove when merged
+    # https://github.com/ansible/ansible-jupyter-kernel/pull/82
+    touch LICENSE.md
 
-   # remove custom install
-   sed -i "s/cmdclass={'install': Installer},//" setup.py
+    # remove custom install
+    sed -i "s/cmdclass={'install': Installer},//" setup.py
   '';
 
   # tests hang with launched kernel
@@ -53,7 +75,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "An Ansible kernel for Jupyter";
+    description = "Ansible kernel for Jupyter";
     homepage = "https://github.com/ansible/ansible-jupyter-kernel";
     license = licenses.asl20;
     maintainers = [ ];
diff --git a/pkgs/development/python-modules/ansible-navigator/default.nix b/pkgs/development/python-modules/ansible-navigator/default.nix
deleted file mode 100644
index 5c21792534365..0000000000000
--- a/pkgs/development/python-modules/ansible-navigator/default.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ lib
-, pkgs
-, python3Packages
-, podman
-, oniguruma
-, fetchPypi
-, buildPythonPackage
-}:
-buildPythonPackage rec {
-  pname = "ansible-navigator";
-  version = "24.2.0";
-  format = "pyproject";
-
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-qXBhM63fFwPwo0pmEhZnZnGC8Eht8eFPfVbDkY98MGM=";
-  };
-
-  buildInputs = with python3Packages; [
-    setuptools
-    setuptools-scm
-  ];
-
-  propagatedBuildInputs = with python3Packages; [
-    ansible-builder
-    ansible-runner
-    podman
-    pkgs.ansible-lint
-    jinja2
-    jsonschema
-    tzdata
-    onigurumacffi
-  ];
-
-  patchPhase = ''
-    # scm_git_archive doesn't exist anymore. Fixed upstream but unreleased
-    # Rev: https://github.com/ansible/ansible-navigator/pull/1716
-    sed -i '/setuptools_scm_git_archive/d' pyproject.toml
-  '';
-
-  meta = with lib; {
-    description = "A text-based user interface (TUI) for Ansible.";
-    homepage = "https://ansible.readthedocs.io/projects/navigator/";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ melkor333 ];
-  };
-}
diff --git a/pkgs/development/python-modules/ansible-pylibssh/default.nix b/pkgs/development/python-modules/ansible-pylibssh/default.nix
index 068af47bca3c2..9ca0f8fefd124 100644
--- a/pkgs/development/python-modules/ansible-pylibssh/default.nix
+++ b/pkgs/development/python-modules/ansible-pylibssh/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "ansible-pylibssh";
-  version = "1.1.0";
+  version = "1.2.2";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-spaGux6dYvtUtpOdU6oN7SEn8IgBof2NpQSPvr+Zplg=";
+    hash = "sha256-dT5XDc3OtquONi6RzA1Zk77ryT0oe4gXjbVVCfZCOrU=";
   };
 
   # Remove after https://github.com/ansible/pylibssh/pull/502 is merged
diff --git a/pkgs/development/python-modules/ansible-runner/default.nix b/pkgs/development/python-modules/ansible-runner/default.nix
index e4cb4c205d257..11d0f37773e49 100644
--- a/pkgs/development/python-modules/ansible-runner/default.nix
+++ b/pkgs/development/python-modules/ansible-runner/default.nix
@@ -1,61 +1,54 @@
-{ lib
-, stdenv
-, ansible-core
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, glibcLocales
-, importlib-metadata
-, mock
-, openssh
-, pbr
-, pexpect
-, psutil
-, pytest-mock
-, pytest-timeout
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, python-daemon
-, pyyaml
-, six
+{
+  lib,
+  stdenv,
+  ansible-core,
+  buildPythonPackage,
+  fetchPypi,
+  glibcLocales,
+  importlib-metadata,
+  mock,
+  openssh,
+  packaging,
+  pexpect,
+  pytest-mock,
+  pytest-timeout,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  python-daemon,
+  pyyaml,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "ansible-runner";
-  version = "2.3.6";
-  format = "setuptools";
+  version = "2.4.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-shdKEtytLcLzQuqCh2iY9WigtmxTVoYAv4BXcVj8uhw=";
+    hash = "sha256-gtArJUiDDzelNRe2XII8SvNxBpQGx9ITtckEHUXgxbY=";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "fix-tests.patch";
-      url = "https://github.com/ansible/ansible-runner/commit/0d522c90cfc1f305e118705a1b3335ccb9c1633d.patch";
-      hash = "sha256-eTnQkftvjK0YHU+ovotRVSuVlvaVeXp5SvYk1DPCg88=";
-      excludes = [ ".github/workflows/ci.yml" "tox.ini" ];
-    })
-  ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail '"setuptools>=45, <=69.0.2", "setuptools-scm[toml]>=6.2, <=8.0.4"' '"setuptools", "setuptools-scm"'
+  '';
 
-  nativeBuildInputs = [
-    pbr
+  build-system = [
+    setuptools
+    setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    ansible-core
-    psutil
+  dependencies = [
+    packaging
     pexpect
     python-daemon
     pyyaml
-    six
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
   nativeCheckInputs = [
     ansible-core # required to place ansible CLI onto the PATH in tests
@@ -76,36 +69,41 @@ buildPythonPackage rec {
   '';
 
   disabledTests = [
-    # Requires network access
+    # Tests require network access
     "test_callback_plugin_task_args_leak"
     "test_env_accuracy"
     # Times out on slower hardware
     "test_large_stdout_blob"
     # Failed: DID NOT RAISE <class 'RuntimeError'>
     "test_validate_pattern"
+    # Assertion error
+    "test_get_role_list"
+    "test_include_role_from_collection_events"
+    "test_resolved_actions"
+    "test_callback_plugin_censoring_does_not_overwrite"
   ];
 
-  disabledTestPaths = [
-    # These tests unset PATH and then run executables like `bash` (see https://github.com/ansible/ansible-runner/pull/918)
-    "test/integration/test_runner.py"
-    "test/unit/test_runner.py"
-  ]
-  ++ lib.optionals stdenv.isDarwin [
-    # Integration tests on Darwin are not regularly passing in ansible-runner's own CI
-    "test/integration"
-    # These tests write to `/tmp` which is not writable on Darwin
-    "test/unit/config/test__base.py"
-  ];
+  disabledTestPaths =
+    [
+      # These tests unset PATH and then run executables like `bash` (see https://github.com/ansible/ansible-runner/pull/918)
+      "test/integration/test_runner.py"
+      "test/unit/test_runner.py"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Integration tests on Darwin are not regularly passing in ansible-runner's own CI
+      "test/integration"
+      # These tests write to `/tmp` which is not writable on Darwin
+      "test/unit/config/test__base.py"
+    ];
 
-  pythonImportsCheck = [
-    "ansible_runner"
-  ];
+  pythonImportsCheck = [ "ansible_runner" ];
 
   meta = with lib; {
     description = "Helps when interfacing with Ansible";
-    mainProgram = "ansible-runner";
     homepage = "https://github.com/ansible/ansible-runner";
+    changelog = "https://github.com/ansible/ansible-runner/releases/tag/${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
+    mainProgram = "ansible-runner";
   };
 }
diff --git a/pkgs/development/python-modules/ansible-vault-rw/default.nix b/pkgs/development/python-modules/ansible-vault-rw/default.nix
index 9e0005e04e858..1a772b3c639f9 100644
--- a/pkgs/development/python-modules/ansible-vault-rw/default.nix
+++ b/pkgs/development/python-modules/ansible-vault-rw/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, ansible-core
+  # dependencies
+  ansible-core,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,9 @@ buildPythonPackage rec {
     hash = "sha256-XOj9tUcPFEm3a/B64qvFZIDa1INWrkBchbaG77ZNvV4";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    ansible-core
-  ];
+  propagatedBuildInputs = [ ansible-core ];
 
   # Otherwise tests will fail to create directory
   # Permission denied: '/homeless-shelter'
@@ -40,15 +37,12 @@ buildPythonPackage rec {
   # no tests in sdist, no 2.1.0 tag on git
   doCheck = false;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "This project aim to R/W an ansible-vault yaml file.";
+    description = "This project aim to R/W an ansible-vault yaml file";
     homepage = "https://github.com/tomoh1r/ansible-vault";
-    changelog =
-      "https://github.com/tomoh1r/ansible-vault/blob/master/CHANGES.txt";
+    changelog = "https://github.com/tomoh1r/ansible-vault/blob/master/CHANGES.txt";
     license = licenses.gpl3;
     maintainers = with maintainers; [ StillerHarpo ];
   };
diff --git a/pkgs/development/python-modules/ansible/core.nix b/pkgs/development/python-modules/ansible/core.nix
index dccf9ede2253b..fc0e5f9ab36e2 100644
--- a/pkgs/development/python-modules/ansible/core.nix
+++ b/pkgs/development/python-modules/ansible/core.nix
@@ -1,39 +1,41 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pythonRelaxDepsHook
-, installShellFiles
-, docutils
-, ansible
-, cryptography
-, importlib-resources
-, jinja2
-, junit-xml
-, lxml
-, ncclient
-, packaging
-, paramiko
-, ansible-pylibssh
-, passlib
-, pexpect
-, psutil
-, pycrypto
-, pyyaml
-, requests
-, resolvelib
-, scp
-, windowsSupport ? false, pywinrm
-, xmltodict
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  installShellFiles,
+  docutils,
+  ansible,
+  cryptography,
+  importlib-resources,
+  jinja2,
+  junit-xml,
+  lxml,
+  ncclient,
+  packaging,
+  paramiko,
+  ansible-pylibssh,
+  passlib,
+  pexpect,
+  psutil,
+  pycrypto,
+  pyyaml,
+  requests,
+  resolvelib,
+  scp,
+  windowsSupport ? false,
+  pywinrm,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
   pname = "ansible-core";
-  version = "2.16.5";
+  version = "2.17.4";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-zdKbDsPyDDVlc1Wi9qnB0M8RMdqZzJpKNAGAGwqzbW0=";
+    pname = "ansible_core";
+    inherit version;
+    hash = "sha256-RKHzAHZ5ZTa6JFXK0Y025ihw8E5jLjyi6+lw176s8k0=";
   };
 
   # ansible_connection is already wrapped, so don't pass it through
@@ -49,41 +51,36 @@ buildPythonPackage rec {
   nativeBuildInputs = [
     installShellFiles
     docutils
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    pythonRelaxDepsHook
   ];
 
-  propagatedBuildInputs = [
-    # depend on ansible instead of the other way around
-    ansible
-    # from requirements.txt
-    cryptography
-    jinja2
-    packaging
-    passlib
-    pyyaml
-    resolvelib
-    # optional dependencies
-    junit-xml
-    lxml
-    ncclient
-    paramiko
-    ansible-pylibssh
-    pexpect
-    psutil
-    pycrypto
-    requests
-    scp
-    xmltodict
-  ] ++ lib.optionals windowsSupport [
-    pywinrm
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-resources
-  ];
+  propagatedBuildInputs =
+    [
+      # depend on ansible instead of the other way around
+      ansible
+      # from requirements.txt
+      cryptography
+      jinja2
+      packaging
+      passlib
+      pyyaml
+      resolvelib
+      # optional dependencies
+      junit-xml
+      lxml
+      ncclient
+      paramiko
+      ansible-pylibssh
+      pexpect
+      psutil
+      pycrypto
+      requests
+      scp
+      xmltodict
+    ]
+    ++ lib.optionals windowsSupport [ pywinrm ]
+    ++ lib.optionals (pythonOlder "3.10") [ importlib-resources ];
 
-  pythonRelaxDeps = lib.optionals (pythonOlder "3.10") [
-    "importlib-resources"
-  ];
+  pythonRelaxDeps = lib.optionals (pythonOlder "3.10") [ "importlib-resources" ];
 
   postInstall = ''
     export HOME="$(mktemp -d)"
@@ -99,6 +96,6 @@ buildPythonPackage rec {
     description = "Radically simple IT automation";
     homepage = "https://www.ansible.com";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ansible/default.nix b/pkgs/development/python-modules/ansible/default.nix
index 321cf23c26716..03d7e6c235192 100644
--- a/pkgs/development/python-modules/ansible/default.nix
+++ b/pkgs/development/python-modules/ansible/default.nix
@@ -1,27 +1,28 @@
-{ lib
-, pythonOlder
-, buildPythonPackage
-, fetchPypi
-, jsonschema
-, jxmlease
-, ncclient
-, netaddr
-, paramiko
-, ansible-pylibssh
-, pynetbox
-, scp
-, textfsm
-, ttp
-, xmltodict
+{
+  lib,
+  pythonOlder,
+  buildPythonPackage,
+  fetchPypi,
+  jsonschema,
+  jxmlease,
+  ncclient,
+  netaddr,
+  paramiko,
+  ansible-pylibssh,
+  pynetbox,
+  scp,
+  textfsm,
+  ttp,
+  xmltodict,
 
-# optionals
-, withJunos ? false
-, withNetbox ? false
+  # optionals
+  withJunos ? false,
+  withNetbox ? false,
 }:
 
 let
   pname = "ansible";
-  version = "9.5.1";
+  version = "10.2.0";
 in
 buildPythonPackage {
   inherit pname version;
@@ -31,7 +32,7 @@ buildPythonPackage {
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-PCeLyWQrl/yVOyugW5nNgIAedb81Z9+qHLUTH+DsHs0=";
+    hash = "sha256-iqBim6js7WRl4s60kCnpPTN8Sm/Fo+bpiCXCWN1qcFc=";
   };
 
   postPatch = ''
@@ -39,38 +40,42 @@ buildPythonPackage {
     sed -Ei '/ansible-core/d' setup.py
   '';
 
-  propagatedBuildInputs = lib.unique ([
-    # Support ansible collections by default, make all others optional
-    # ansible.netcommon
-    jxmlease
-    ncclient
-    netaddr
-    paramiko
-    ansible-pylibssh
-    xmltodict
-    # ansible.posix
-    # ansible.utils
-    jsonschema
-    textfsm
-    ttp
-    xmltodict
-    # ansible.windows
+  propagatedBuildInputs = lib.unique (
+    [
+      # Support ansible collections by default, make all others optional
+      # ansible.netcommon
+      jxmlease
+      ncclient
+      netaddr
+      paramiko
+      ansible-pylibssh
+      xmltodict
+      # ansible.posix
+      # ansible.utils
+      jsonschema
+      textfsm
+      ttp
+      xmltodict
+      # ansible.windows
 
-    # lots of collections with dedicated requirements.txt and pyproject.toml files,
-    # add the dependencies for the collections you need conditionally and install
-    # ansible using overrides to enable the collections you need.
-  ] ++ lib.optionals (withJunos) [
-    # ansible_collections/junipernetworks/junos/requirements.txt
-    jxmlease
-    ncclient
-    paramiko
-    ansible-pylibssh
-    scp
-    xmltodict
-  ] ++ lib.optionals (withNetbox) [
-    # ansible_collections/netbox/netbox/pyproject.toml
-    pynetbox
-  ]);
+      # lots of collections with dedicated requirements.txt and pyproject.toml files,
+      # add the dependencies for the collections you need conditionally and install
+      # ansible using overrides to enable the collections you need.
+    ]
+    ++ lib.optionals (withJunos) [
+      # ansible_collections/junipernetworks/junos/requirements.txt
+      jxmlease
+      ncclient
+      paramiko
+      ansible-pylibssh
+      scp
+      xmltodict
+    ]
+    ++ lib.optionals (withNetbox) [
+      # ansible_collections/netbox/netbox/pyproject.toml
+      pynetbox
+    ]
+  );
 
   # don't try and fail to strip 48000+ non strippable files, it takes >5 minutes!
   dontStrip = true;
@@ -84,6 +89,6 @@ buildPythonPackage {
     homepage = "https://www.ansible.com";
     changelog = "https://github.com/ansible-community/ansible-build-data/blob/${version}/${lib.versions.major version}/CHANGELOG-v${lib.versions.major version}.rst";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ansicolor/default.nix b/pkgs/development/python-modules/ansicolor/default.nix
index 8ec12d37f5989..83f3b3207e713 100644
--- a/pkgs/development/python-modules/ansicolor/default.nix
+++ b/pkgs/development/python-modules/ansicolor/default.nix
@@ -28,9 +28,9 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "ansicolor" ];
 
   meta = with lib; {
-    description = "A library to produce ansi color output and colored highlighting and diffing";
+    description = "Library to produce ansi color output and colored highlighting and diffing";
     homepage = "https://github.com/numerodix/ansicolor/";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ansicolors/default.nix b/pkgs/development/python-modules/ansicolors/default.nix
index ddedef72916af..bf07d4c883d72 100644
--- a/pkgs/development/python-modules/ansicolors/default.nix
+++ b/pkgs/development/python-modules/ansicolors/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "ansicolors";
diff --git a/pkgs/development/python-modules/ansiconv/default.nix b/pkgs/development/python-modules/ansiconv/default.nix
index ae240be309960..4e5a82dc33398 100644
--- a/pkgs/development/python-modules/ansiconv/default.nix
+++ b/pkgs/development/python-modules/ansiconv/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "ansiconv";
@@ -15,10 +20,9 @@ buildPythonPackage rec {
   nativeCheckInputs = [ pytest ];
 
   meta = with lib; {
-    description = "A module for converting ANSI coded text and converts it to either plain text or HTML";
+    description = "Module for converting ANSI coded text and converts it to either plain text or HTML";
     homepage = "https://github.com/ansible/ansiconv";
     license = licenses.mit;
     maintainers = with maintainers; [ psyanticy ];
   };
-
 }
diff --git a/pkgs/development/python-modules/ansimarkup/default.nix b/pkgs/development/python-modules/ansimarkup/default.nix
index 9e4ed625ba199..8be72615a24a6 100644
--- a/pkgs/development/python-modules/ansimarkup/default.nix
+++ b/pkgs/development/python-modules/ansimarkup/default.nix
@@ -1,30 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, colorama
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  colorama,
 }:
 
 buildPythonPackage rec {
   pname = "ansimarkup";
-  version = "1.5.0";
-  format = "setuptools";
+  version = "2.1.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "gvalkov";
     repo = "python-ansimarkup";
-    rev = "v${version}";
-    hash = "sha256-HGeVapv2Z5GtPwSp3+dvUwAH0bFqu+Bmk5E6SRr7NO4=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-+kZt8tv09RHrMRZtvJPBBiFaeCksXyrlHqIabPrXYDY=";
   };
 
-  propagatedBuildInputs = [ colorama ];
+  build-system = [ setuptools ];
+
+  dependencies = [ colorama ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "ansimarkup" ];
 
   meta = with lib; {
-    description = "An XML-like markup for producing colored terminal text.";
+    description = "XML-like markup for producing colored terminal text";
     homepage = "https://github.com/gvalkov/python-ansimarkup";
     license = licenses.bsd3;
     maintainers = with maintainers; [ cpcloud ];
diff --git a/pkgs/development/python-modules/ansitable/default.nix b/pkgs/development/python-modules/ansitable/default.nix
new file mode 100644
index 0000000000000..3f0ecc839a9ba
--- /dev/null
+++ b/pkgs/development/python-modules/ansitable/default.nix
@@ -0,0 +1,44 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  colored,
+  pytestCheckHook,
+  numpy,
+}:
+
+buildPythonPackage rec {
+  pname = "ansitable";
+  version = "0.10.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-ehPPpZ9C/Nrly9WoJJfZtv2YfZ9MEcQsKtuxNpcJe7U=";
+  };
+
+  nativeBuildInputs = [ setuptools ];
+
+  propagatedBuildInputs = [ colored ];
+
+  pythonImportsCheck = [ "ansitable" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    numpy
+  ];
+
+  meta = with lib; {
+    description = "Quick and easy display of tabular data and matrices with optional ANSI color and borders";
+    homepage = "https://pypi.org/project/ansitable/";
+    license = licenses.mit;
+    maintainers = with maintainers; [
+      djacu
+      a-camarillo
+    ];
+  };
+}
diff --git a/pkgs/development/python-modules/ansiwrap/default.nix b/pkgs/development/python-modules/ansiwrap/default.nix
index 8dbfa99687c86..f45f8c0ccaf05 100644
--- a/pkgs/development/python-modules/ansiwrap/default.nix
+++ b/pkgs/development/python-modules/ansiwrap/default.nix
@@ -1,51 +1,51 @@
-{ lib
-, ansicolors
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, textwrap3
+{
+  lib,
+  ansicolors,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
+  textwrap3,
 }:
 
 buildPythonPackage rec {
   pname = "ansiwrap";
   version = "0.8.4";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7" || pythonAtLeast "3.12";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "ca0c740734cde59bf919f8ff2c386f74f9a369818cdc60efe94893d01ea8d9b7";
+    hash = "sha256-ygx0BzTN5Zv5Gfj/LDhvdPmjaYGM3GDv6UiT0B6o2bc=";
   };
 
   postPatch = ''
     # https://github.com/jonathaneunice/ansiwrap/issues/18
     substituteInPlace test/test_ansiwrap.py \
-      --replace "set(range(20, 120)).difference(LINE_LENGTHS)" "sorted(set(range(20, 120)).difference(LINE_LENGTHS))" \
-      --replace "set(range(120, 400)).difference(LINE_LENGTHS)" "sorted(set(range(120, 400)).difference(LINE_LENGTHS))"
+      --replace-fail "set(range(20, 120)).difference(LINE_LENGTHS)" "sorted(set(range(20, 120)).difference(LINE_LENGTHS))" \
+      --replace-fail "set(range(120, 400)).difference(LINE_LENGTHS)" "sorted(set(range(120, 400)).difference(LINE_LENGTHS))"
   '';
 
-  checkInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [ textwrap3 ];
+
+  nativeCheckInputs = [
     ansicolors
     pytestCheckHook
   ];
 
-  propagatedBuildInputs = [
-    textwrap3
-  ];
-
-  pythonImportsCheck = [
-    "ansiwrap"
-  ];
+  pythonImportsCheck = [ "ansiwrap" ];
 
   meta = with lib; {
     description = "Textwrap, but savvy to ANSI colors and styles";
     homepage = "https://github.com/jonathaneunice/ansiwrap";
     changelog = "https://github.com/jonathaneunice/ansiwrap/blob/master/CHANGES.yml";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/anthemav/default.nix b/pkgs/development/python-modules/anthemav/default.nix
index 00642f8cb157f..095cd790b8c45 100644
--- a/pkgs/development/python-modules/anthemav/default.nix
+++ b/pkgs/development/python-modules/anthemav/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "anthemav"
-  ];
+  pythonImportsCheck = [ "anthemav" ];
 
   meta = with lib; {
     description = "Python asyncio module to interface with Anthem AVM and MRX receivers";
diff --git a/pkgs/development/python-modules/anthropic/default.nix b/pkgs/development/python-modules/anthropic/default.nix
index 5eef6a51010a4..014b1feaa0f64 100644
--- a/pkgs/development/python-modules/anthropic/default.nix
+++ b/pkgs/development/python-modules/anthropic/default.nix
@@ -9,6 +9,7 @@
   hatch-fancy-pypi-readme,
   hatchling,
   httpx,
+  jiter,
   pydantic,
   pytest-asyncio,
   pytestCheckHook,
@@ -21,7 +22,7 @@
 
 buildPythonPackage rec {
   pname = "anthropic";
-  version = "0.25.6";
+  version = "0.34.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -30,7 +31,7 @@ buildPythonPackage rec {
     owner = "anthropics";
     repo = "anthropic-sdk-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-83TufOgu6W9UvoCEUgDiw6gXDAdwyIKEALVF0hjj6wk=";
+    hash = "sha256-UjwBxuhXuwJfWewg9si/oIuXgiqbNAYm4lK2f+C6VJU=";
   };
 
   build-system = [
@@ -42,6 +43,7 @@ buildPythonPackage rec {
     anyio
     distro
     httpx
+    jiter
     sniffio
     pydantic
     tokenizers
@@ -69,6 +71,7 @@ buildPythonPackage rec {
   disabledTestPaths = [
     # Test require network access
     "tests/api_resources"
+    "tests/lib/test_bedrock.py"
   ];
 
   pytestFlagsArray = [
diff --git a/pkgs/development/python-modules/antlr4-python3-runtime/default.nix b/pkgs/development/python-modules/antlr4-python3-runtime/default.nix
index 70fa4e6da2fa1..2c446ac30517a 100644
--- a/pkgs/development/python-modules/antlr4-python3-runtime/default.nix
+++ b/pkgs/development/python-modules/antlr4-python3-runtime/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, setuptools
-, python
-, antlr4
+{
+  lib,
+  buildPythonPackage,
+  setuptools,
+  python,
+  antlr4,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
 
   sourceRoot = "${src.name}/runtime/Python3";
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   postPatch = ''
     substituteInPlace tests/TestIntervalSet.py \
diff --git a/pkgs/development/python-modules/anyascii/default.nix b/pkgs/development/python-modules/anyascii/default.nix
index d781a552cca10..9a7b8d71bd46f 100644
--- a/pkgs/development/python-modules/anyascii/default.nix
+++ b/pkgs/development/python-modules/anyascii/default.nix
@@ -1,24 +1,21 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "anyascii";
   version = "0.3.2";
   format = "setuptools";
-  disabled = pythonOlder "3.3";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-nV0y74RP4iW4vHy6f5UFNPrk2iepvzpr6iyw6kbORzA=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     changelog = "https://github.com/anyascii/anyascii/blob/${version}/CHANGELOG.md";
diff --git a/pkgs/development/python-modules/anybadge/default.nix b/pkgs/development/python-modules/anybadge/default.nix
index 0418de37a2514..8bb9f80cfd3a0 100644
--- a/pkgs/development/python-modules/anybadge/default.nix
+++ b/pkgs/development/python-modules/anybadge/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, packaging
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  packaging,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
   # setup.py reads its version from the TRAVIS_TAG environment variable
   TRAVIS_TAG = "v${version}";
 
-  propagatedBuildInputs = [
-    packaging
-  ];
+  propagatedBuildInputs = [ packaging ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -43,9 +42,7 @@ buildPythonPackage rec {
     "tests/test_server.py"
   ];
 
-  pythonImportsCheck = [
-    "anybadge"
-  ];
+  pythonImportsCheck = [ "anybadge" ];
 
   meta = with lib; {
     description = "Python tool for generating badges for your projects";
diff --git a/pkgs/development/python-modules/anyconfig/default.nix b/pkgs/development/python-modules/anyconfig/default.nix
index b0e673969a5b2..9d4d0ed58203a 100644
--- a/pkgs/development/python-modules/anyconfig/default.nix
+++ b/pkgs/development/python-modules/anyconfig/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
-, pytestCheckHook
-, setuptools
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     sed -i '/addopts =/d' setup.cfg
   '';
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  propagatedBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # OSError: /build/anyconfig-0.12.0/tests/res/cli/no_template/10/e/10.* should exists but not
diff --git a/pkgs/development/python-modules/anyio/default.nix b/pkgs/development/python-modules/anyio/default.nix
index c5e6d20acb6b7..23f249bfcad25 100644
--- a/pkgs/development/python-modules/anyio/default.nix
+++ b/pkgs/development/python-modules/anyio/default.nix
@@ -1,68 +1,65 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# build-system
-, setuptools
-, setuptools-scm
-
-# dependencies
-, exceptiongroup
-, idna
-, sniffio
-, typing-extensions
-
-# optionals
-, trio
-
-# tests
-, hypothesis
-, psutil
-, pytest-mock
-, pytest-xdist
-, pytestCheckHook
-, trustme
-, uvloop
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  setuptools-scm,
+
+  # dependencies
+  exceptiongroup,
+  idna,
+  sniffio,
+  typing-extensions,
+
+  # optionals
+  trio,
+
+  # tests
+  hypothesis,
+  psutil,
+  pytest-mock,
+  pytest-xdist,
+  pytestCheckHook,
+  trustme,
+  uvloop,
+
+  # smoke tests
+  starlette,
 }:
 
 buildPythonPackage rec {
   pname = "anyio";
-  version = "4.3.0";
+  version = "4.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "agronholm";
-    repo = pname;
+    repo = "anyio";
     rev = "refs/tags/${version}";
-    hash = "sha256-y58DQiTD0ZKaBNf0cA3MFE+7F68Svrl+Idz6BZY7HWQ=";
+    hash = "sha256-Sz/wWOT59T7LOAq68fBujgkTaY9ydMsIoSxeP3fBaoY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    idna
-    sniffio
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    exceptiongroup
-    typing-extensions
-  ];
+  dependencies =
+    [
+      idna
+      sniffio
+    ]
+    ++ lib.optionals (pythonOlder "3.11") [
+      exceptiongroup
+      typing-extensions
+    ];
 
   passthru.optional-dependencies = {
-    trio = [
-      trio
-    ];
+    trio = [ trio ];
   };
 
-  # trustme uses pyopenssl
-  doCheck = !(stdenv.isDarwin && stdenv.isAarch64);
-
   nativeCheckInputs = [
     exceptiongroup
     hypothesis
@@ -75,11 +72,13 @@ buildPythonPackage rec {
   ] ++ passthru.optional-dependencies.trio;
 
   pytestFlagsArray = [
-    "-W" "ignore::trio.TrioDeprecationWarning"
-    "-m" "'not network'"
+    "-W"
+    "ignore::trio.TrioDeprecationWarning"
+    "-m"
+    "'not network'"
   ];
 
-  disabledTests = lib.optionals (stdenv.isx86_64 && stdenv.isDarwin) [
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
     # PermissionError: [Errno 1] Operation not permitted: '/dev/console'
     "test_is_block_device"
   ];
@@ -91,9 +90,11 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [
-    "anyio"
-  ];
+  pythonImportsCheck = [ "anyio" ];
+
+  passthru.tests = {
+    inherit starlette;
+  };
 
   meta = with lib; {
     changelog = "https://github.com/agronholm/anyio/blob/${src.rev}/docs/versionhistory.rst";
diff --git a/pkgs/development/python-modules/anyqt/default.nix b/pkgs/development/python-modules/anyqt/default.nix
index 584b1dcf4233b..f1e88064955dd 100644
--- a/pkgs/development/python-modules/anyqt/default.nix
+++ b/pkgs/development/python-modules/anyqt/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyqt5
-, pytestCheckHook
-, nix-update-script
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyqt5,
+  pytestCheckHook,
+  nix-update-script,
 }:
 
 buildPythonPackage rec {
@@ -18,7 +19,10 @@ buildPythonPackage rec {
     hash = "sha256-dL2EUAMzWKq/oN3rXiEC6emDJddmg4KclT5ONKA0jfk=";
   };
 
-  nativeCheckInputs = [ pyqt5 pytestCheckHook ];
+  nativeCheckInputs = [
+    pyqt5
+    pytestCheckHook
+  ];
 
   # All of these fail because Qt modules cannot be imported
   disabledTestPaths = [
diff --git a/pkgs/development/python-modules/anysqlite/default.nix b/pkgs/development/python-modules/anysqlite/default.nix
index bf6cb41a79164..26e5b43a83710 100644
--- a/pkgs/development/python-modules/anysqlite/default.nix
+++ b/pkgs/development/python-modules/anysqlite/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, anyio
-, buildPythonPackage
-, fetchFromGitHub
-, hatch-fancy-pypi-readme
-, hatchling
-, pytestCheckHook
-, pythonOlder
-, trio
+{
+  lib,
+  anyio,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatch-fancy-pypi-readme,
+  hatchling,
+  pytestCheckHook,
+  pythonOlder,
+  trio,
 }:
 
 buildPythonPackage rec {
@@ -28,18 +29,14 @@ buildPythonPackage rec {
     hatchling
   ];
 
-  propagatedBuildInputs = [
-    anyio
-  ];
+  propagatedBuildInputs = [ anyio ];
 
   nativeCheckInputs = [
     pytestCheckHook
     trio
   ];
 
-  pythonImportsCheck = [
-    "anysqlite"
-  ];
+  pythonImportsCheck = [ "anysqlite" ];
 
   meta = with lib; {
     description = "Sqlite3 for asyncio and trio";
diff --git a/pkgs/development/python-modules/anytree/default.nix b/pkgs/development/python-modules/anytree/default.nix
index 0fe64bbe8f626..5be671d31e2ba 100644
--- a/pkgs/development/python-modules/anytree/default.nix
+++ b/pkgs/development/python-modules/anytree/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fontconfig
-, graphviz
-, poetry-core
-, pytest7CheckHook
-, pythonOlder
-, six
-, substituteAll
-, withGraphviz ? true
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fontconfig,
+  graphviz,
+  poetry-core,
+  pytest7CheckHook,
+  pythonOlder,
+  six,
+  substituteAll,
+  withGraphviz ? true,
 }:
 
 buildPythonPackage rec {
@@ -32,17 +33,11 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
-  nativeCheckInputs = [
-    pytest7CheckHook
-  ];
+  nativeCheckInputs = [ pytest7CheckHook ];
 
   # Tests print “Fontconfig error: Cannot load default config file”
   preCheck = lib.optionalString withGraphviz ''
@@ -52,9 +47,7 @@ buildPythonPackage rec {
   # Circular dependency anytree → graphviz → pango → glib → gtk-doc → anytree
   doCheck = withGraphviz;
 
-  pythonImportsCheck = [
-    "anytree"
-  ];
+  pythonImportsCheck = [ "anytree" ];
 
   meta = with lib; {
     description = "Powerful and Lightweight Python Tree Data Structure";
diff --git a/pkgs/development/python-modules/anywidget/default.nix b/pkgs/development/python-modules/anywidget/default.nix
index 767fc775851d1..d10f0b369f623 100644
--- a/pkgs/development/python-modules/anywidget/default.nix
+++ b/pkgs/development/python-modules/anywidget/default.nix
@@ -1,27 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, hatch-jupyter-builder
-, hatchling
-, importlib-metadata
-, ipywidgets
-, psygnal
-, typing-extensions
-, watchfiles
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  hatch-jupyter-builder,
+  hatchling,
+  importlib-metadata,
+  ipywidgets,
+  psygnal,
+  typing-extensions,
+  watchfiles,
 }:
 
 buildPythonPackage rec {
   pname = "anywidget";
-  version = "0.9.10";
+  version = "0.9.13";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-OQpigkCYHAmBPHUjJ53cq4L/T9Moet1UM7eLE2kIkGg=";
+    hash = "sha256-xlVFW/UfghgusjxZR9N8xB8LH/rK9+K3YxR6IzLLPwc=";
   };
 
   # We do not need the jupyterlab build dependency, because we do not need to
@@ -48,6 +49,11 @@ buildPythonPackage rec {
     watchfiles
   ];
 
+  disabledTests = [
+    # requires package.json
+    "test_version"
+  ];
+
   pythonImportsCheck = [ "anywidget" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/aocd-example-parser/default.nix b/pkgs/development/python-modules/aocd-example-parser/default.nix
index c2379aa914e15..de56bb7f0698e 100644
--- a/pkgs/development/python-modules/aocd-example-parser/default.nix
+++ b/pkgs/development/python-modules/aocd-example-parser/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-iOxqzZj29aY/xyigir1KOU6GcBBvnlxEOBLHChEQjf4=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   # Circular dependency with aocd
   # pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/aocd/default.nix b/pkgs/development/python-modules/aocd/default.nix
index 1b56736028b89..b9fe52c10b857 100644
--- a/pkgs/development/python-modules/aocd/default.nix
+++ b/pkgs/development/python-modules/aocd/default.nix
@@ -1,25 +1,25 @@
-{ lib
-, stdenv
-, aocd-example-parser
-, beautifulsoup4
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, pebble
-, pook
-, pytest-freezegun
-, pytest-mock
-, pytest-raisin
-, pytest-socket
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, requests
-, requests-mock
-, rich
-, setuptools
-, termcolor
-, tzlocal
+{
+  lib,
+  aocd-example-parser,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  pebble,
+  pook,
+  pytest-freezegun,
+  pytest-mock,
+  pytest-raisin,
+  pytest-socket,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  requests,
+  requests-mock,
+  rich,
+  setuptools,
+  termcolor,
+  tzlocal,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +36,7 @@ buildPythonPackage rec {
     hash = "sha256-YZvcR97uHceloqwoP+azaBmj3GLusYNbItLIaeJ3QD0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aocd-example-parser
@@ -101,9 +99,7 @@ buildPythonPackage rec {
     "test_submit_float_warns"
   ];
 
-  pythonImportsCheck = [
-    "aocd"
-  ];
+  pythonImportsCheck = [ "aocd" ];
 
   meta = with lib; {
     description = "Get your Advent of Code data with a single import statement";
diff --git a/pkgs/development/python-modules/apache-beam/default.nix b/pkgs/development/python-modules/apache-beam/default.nix
index fead79054b365..f1ad42c81d9cd 100644
--- a/pkgs/development/python-modules/apache-beam/default.nix
+++ b/pkgs/development/python-modules/apache-beam/default.nix
@@ -1,62 +1,62 @@
-{ buildPythonPackage
-, cloudpickle
-, crcmod
-, cython
-, dill
-, fastavro
-, fasteners
-, fetchFromGitHub
-, fetchpatch
-, freezegun
-, grpcio
-, grpcio-tools
-, hdfs
-, httplib2
-, hypothesis
-, lib
-, mock
-, mypy-protobuf
-, numpy
-, objsize
-, orjson
-, pandas
-, parameterized
-, proto-plus
-, protobuf
-, psycopg2
-, pyarrow
-, pydot
-, pyhamcrest
-, pymongo
-, pytest-xdist
-, pytestCheckHook
-, python
-, python-dateutil
-, pythonRelaxDepsHook
-, pytz
-, pyyaml
-, regex
-, requests
-, requests-mock
-, scikit-learn
-, setuptools
-, sqlalchemy
-, tenacity
-, testcontainers
-, typing-extensions
-, zstandard
+{
+  buildPythonPackage,
+  cloudpickle,
+  crcmod,
+  cython,
+  dill,
+  fastavro,
+  fasteners,
+  fetchFromGitHub,
+  fetchpatch,
+  freezegun,
+  grpcio,
+  grpcio-tools,
+  hdfs,
+  httplib2,
+  hypothesis,
+  lib,
+  mock,
+  mypy-protobuf,
+  numpy,
+  objsize,
+  orjson,
+  pandas,
+  parameterized,
+  proto-plus,
+  protobuf,
+  psycopg2,
+  pyarrow,
+  pydot,
+  pyhamcrest,
+  pymongo,
+  pytest-xdist,
+  pytestCheckHook,
+  python,
+  python-dateutil,
+  pytz,
+  pyyaml,
+  regex,
+  requests,
+  requests-mock,
+  scikit-learn,
+  setuptools,
+  sqlalchemy,
+  tenacity,
+  testcontainers,
+  typing-extensions,
+  zstandard,
 }:
 
 buildPythonPackage rec {
   pname = "apache-beam";
-  version = "2.54.0";
+  version = "2.56.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "apache";
     repo = "beam";
     rev = "refs/tags/v${version}";
-    hash = "sha256-DcqYBPAS+yUqTJLUem8+2OqRUzb6DoBOeRkMjmvuvws=";
+    hash = "sha256-SD+93duc3vTIlS/LPOuzXeiUSpwX+GNrqW3GTJMVgKY=";
   };
 
   patches = [
@@ -95,7 +95,6 @@ buildPythonPackage rec {
     cython
     grpcio-tools
     mypy-protobuf
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -126,9 +125,7 @@ buildPythonPackage rec {
 
   enableParallelBuilding = true;
 
-  pythonImportsCheck = [
-    "apache_beam"
-  ];
+  pythonImportsCheck = [ "apache_beam" ];
 
   checkInputs = [
     freezegun
diff --git a/pkgs/development/python-modules/apcaccess/default.nix b/pkgs/development/python-modules/apcaccess/default.nix
index b93a91c3090ba..5fb60a8c6f82c 100644
--- a/pkgs/development/python-modules/apcaccess/default.nix
+++ b/pkgs/development/python-modules/apcaccess/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,13 +22,9 @@ buildPythonPackage rec {
       --replace "setup_requires='pytest-runner'," ""
   '';
 
-  pythonImportsCheck = [
-    "apcaccess"
-  ];
+  pythonImportsCheck = [ "apcaccess" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Library offers programmatic access to the status information provided by apcupsd over its Network Information Server";
diff --git a/pkgs/development/python-modules/apeye-core/default.nix b/pkgs/development/python-modules/apeye-core/default.nix
new file mode 100644
index 0000000000000..3a6d8cbec8343
--- /dev/null
+++ b/pkgs/development/python-modules/apeye-core/default.nix
@@ -0,0 +1,40 @@
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  hatchling,
+  hatch-requirements-txt,
+  domdf-python-tools,
+  idna,
+}:
+buildPythonPackage rec {
+  pname = "apeye-core";
+  version = "1.1.5";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit version;
+    pname = "apeye_core";
+    hash = "sha256-Xecu09AMybIP6lXlS3q49e+FAOszpTaLwWKlWF4jilU=";
+  };
+
+  build-system = [ hatchling ];
+
+  nativeBuildInputs = [
+    hatch-requirements-txt
+  ];
+
+  dependencies = [
+    domdf-python-tools
+    idna
+  ];
+
+  nativeCheckInputs = [ ];
+
+  meta = {
+    description = "Core (offline) functionality for the apeye library.";
+    homepage = "https://github.com/domdfcoding/apyey-core";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tyberius-prime ];
+  };
+}
diff --git a/pkgs/development/python-modules/apipkg/default.nix b/pkgs/development/python-modules/apipkg/default.nix
index b37c1b11fe6fe..60a34a3e03958 100644
--- a/pkgs/development/python-modules/apipkg/default.nix
+++ b/pkgs/development/python-modules/apipkg/default.nix
@@ -1,45 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatch-vcs
-, hatchling
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatch-vcs,
+  hatchling,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "apipkg";
   version = "3.0.2";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pytest-dev";
-    repo = pname;
+    repo = "apipkg";
     rev = "refs/tags/v${version}";
     hash = "sha256-ANLD7fUMKN3RmAVjVkcpwUH6U9ASalXdwKtPpoC8Urs=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-vcs
     hatchling
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "test_apipkg.py"
-  ];
+  pytestFlagsArray = [ "test_apipkg.py" ];
 
-  pythonImportsCheck = [
-    "apipkg"
-  ];
+  pythonImportsCheck = [ "apipkg" ];
 
   meta = with lib; {
     changelog = "https://github.com/pytest-dev/apipkg/blob/main/CHANGELOG";
     description = "Namespace control and lazy-import mechanism";
     homepage = "https://github.com/pytest-dev/apipkg";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/apischema/default.nix b/pkgs/development/python-modules/apischema/default.nix
index eb385ccaf90e1..1034d1d02160a 100644
--- a/pkgs/development/python-modules/apischema/default.nix
+++ b/pkgs/development/python-modules/apischema/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, graphql-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  graphql-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
   };
 
   passthru.optional-dependencies = {
-    graphql = [
-      graphql-core
-    ];
+    graphql = [ graphql-core ];
   };
 
   nativeCheckInputs = [
@@ -32,9 +31,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "apischema"
-  ];
+  pythonImportsCheck = [ "apischema" ];
 
   meta = with lib; {
     description = "JSON (de)serialization, GraphQL and JSON schema generation using typing";
diff --git a/pkgs/development/python-modules/apispec-webframeworks/default.nix b/pkgs/development/python-modules/apispec-webframeworks/default.nix
index 66e45f0a15f99..a89d12ea0d505 100644
--- a/pkgs/development/python-modules/apispec-webframeworks/default.nix
+++ b/pkgs/development/python-modules/apispec-webframeworks/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, aiohttp
-, apispec
-, bottle
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, flask
-, mock
-, pytestCheckHook
-, pythonOlder
-, tornado
+{
+  lib,
+  aiohttp,
+  apispec,
+  bottle,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  flask,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  tornado,
 }:
 
 buildPythonPackage rec {
   pname = "apispec-webframeworks";
-  version = "1.1.0";
+  version = "1.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -23,16 +24,12 @@ buildPythonPackage rec {
     owner = "marshmallow-code";
     repo = "apispec-webframeworks";
     rev = "refs/tags/${version}";
-    hash = "sha256-qepiaRW36quIgxBtEHMF3HN0wO6jp2uGAHgg5fJoMUY=";
+    hash = "sha256-V4tdqcHfYRh9VoXUTPXM3SIOogJDJB14SLj5dSd7LzU=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
-  propagatedBuildInputs = [
-    apispec
-  ] ++ apispec.optional-dependencies.yaml;
+  dependencies = [ apispec ] ++ apispec.optional-dependencies.yaml;
 
   nativeCheckInputs = [
     aiohttp
@@ -43,9 +40,7 @@ buildPythonPackage rec {
     tornado
   ];
 
-  pythonImportsCheck = [
-    "apispec_webframeworks"
-  ];
+  pythonImportsCheck = [ "apispec_webframeworks" ];
 
   meta = with lib; {
     description = "Web framework plugins for apispec";
diff --git a/pkgs/development/python-modules/apispec/default.nix b/pkgs/development/python-modules/apispec/default.nix
index b3df151c0c51e..2ca9be416c8f5 100644
--- a/pkgs/development/python-modules/apispec/default.nix
+++ b/pkgs/development/python-modules/apispec/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, marshmallow
-, mock
-, openapi-spec-validator
-, packaging
-, prance
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  marshmallow,
+  mock,
+  openapi-spec-validator,
+  packaging,
+  prance,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -25,21 +25,13 @@ buildPythonPackage rec {
     hash = "sha256-9cqkfO51/gO5xQtVlASLTAUu7KLCEuDawS27YXXZplk=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    packaging
-  ];
+  propagatedBuildInputs = [ packaging ];
 
   passthru.optional-dependencies = {
-    marshmallow = [
-      marshmallow
-    ];
-    yaml = [
-      pyyaml
-    ];
+    marshmallow = [ marshmallow ];
+    yaml = [ pyyaml ];
     validation = [
       openapi-spec-validator
       prance
@@ -51,15 +43,13 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "apispec"
-  ];
+  pythonImportsCheck = [ "apispec" ];
 
   meta = with lib; {
     changelog = "https://github.com/marshmallow-code/apispec/blob/${version}/CHANGELOG.rst";
-    description = "A pluggable API specification generator with support for the OpenAPI Specification";
+    description = "Pluggable API specification generator with support for the OpenAPI Specification";
     homepage = "https://github.com/marshmallow-code/apispec";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/apkinspector/default.nix b/pkgs/development/python-modules/apkinspector/default.nix
index 925845c73da3f..e6ebec3b320d4 100644
--- a/pkgs/development/python-modules/apkinspector/default.nix
+++ b/pkgs/development/python-modules/apkinspector/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "apkinspector";
-  version = "1.2.3";
+  version = "1.3.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "erev0s";
     repo = "apkInspector";
     rev = "refs/tags/v${version}";
-    hash = "sha256-n6uVyN5XBEM/nuN7mvhNRwMUgUT5abOsh3CbhKK6ifY=";
+    hash = "sha256-trEbm9EFZLoFBWKKOlbI305r+8GdSmU5zWPnNhb5qzQ=";
   };
 
   build-system = [ poetry-core ];
diff --git a/pkgs/development/python-modules/apkit/default.nix b/pkgs/development/python-modules/apkit/default.nix
index 7e2c45ca8bc75..ab07a00ddb46a 100644
--- a/pkgs/development/python-modules/apkit/default.nix
+++ b/pkgs/development/python-modules/apkit/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  scipy,
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/aplpy/default.nix b/pkgs/development/python-modules/aplpy/default.nix
index 14141cf72d366..af4e8cfec72de 100644
--- a/pkgs/development/python-modules/aplpy/default.nix
+++ b/pkgs/development/python-modules/aplpy/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, astropy
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, matplotlib
-, numpy
-, pillow
-, pyavm
-, pyregion
-, pytest-astropy
-, pytestCheckHook
-, pythonOlder
-, reproject
-, scikit-image
-, setuptools
-, setuptools-scm
-, shapely
-, wheel
+{
+  lib,
+  astropy,
+  buildPythonPackage,
+  fetchpatch,
+  fetchPypi,
+  matplotlib,
+  numpy,
+  pillow,
+  pyavm,
+  pyregion,
+  pytest-astropy,
+  pytestCheckHook,
+  pythonOlder,
+  reproject,
+  scikit-image,
+  setuptools,
+  setuptools-scm,
+  shapely,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -32,7 +33,7 @@ buildPythonPackage rec {
     hash = "sha256-KCdmBwQWt7IfHsjq7pWlbSISEpfQZDyt+SQSTDaUCV4=";
   };
 
-  # Fix build with Astropy 6 and Python 3.12.
+  # Fix build with Astropy 6.1, Python 3.12 and matplotlib 3.9
   patches = [
     # https://github.com/aplpy/aplpy/pull/496
     (fetchpatch {
@@ -44,6 +45,16 @@ buildPythonPackage rec {
       url = "https://github.com/aplpy/aplpy/commit/468be394970b39f1aaa6debef51eb674e2dd86d8.patch";
       hash = "sha256-/ovLrFOKb3RQ8TZSviuOV6EYNgz0gtrhVWZLFJBrzFg=";
     })
+    # https://github.com/aplpy/aplpy/pull/500
+    (fetchpatch {
+      url = "https://github.com/aplpy/aplpy/commit/c9049261b3724821f4d309d85fe73cabcc04d890.patch";
+      hash = "sha256-ivdXLh1Z+WG3EL5u1wO+lqz6X1AP6WpyoZix5YiqW0w=";
+    })
+    # https://github.com/aplpy/aplpy/pull/503
+    (fetchpatch {
+      url = "https://github.com/aplpy/aplpy/commit/edc2aa9770b72bd3ac42db95a6e027b276be9c31.patch";
+      hash = "sha256-QUZenY3XQ/T2tl5apxZUqjf4ACjOzJWb+1AUp5limi4=";
+    })
   ];
 
   nativeBuildInputs = [
@@ -73,12 +84,10 @@ buildPythonPackage rec {
     OPENMP_EXPECTED=0
   '';
 
-  pythonImportsCheck = [
-    "aplpy"
-  ];
+  pythonImportsCheck = [ "aplpy" ];
 
   meta = with lib; {
-    description = "The Astronomical Plotting Library in Python";
+    description = "Astronomical Plotting Library in Python";
     homepage = "http://aplpy.github.io";
     license = licenses.mit;
     maintainers = with maintainers; [ smaret ];
diff --git a/pkgs/development/python-modules/app-model/default.nix b/pkgs/development/python-modules/app-model/default.nix
index 7dc1c65349eaf..da4854d547b00 100644
--- a/pkgs/development/python-modules/app-model/default.nix
+++ b/pkgs/development/python-modules/app-model/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatch-vcs
-, hatchling
-, in-n-out
-, psygnal
-, pydantic
-, pydantic-compat
-, pytestCheckHook
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatch-vcs,
+  hatchling,
+  in-n-out,
+  psygnal,
+  pydantic,
+  pydantic-compat,
+  pytestCheckHook,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "app-model";
-  version = "0.2.6";
+  version = "0.2.8";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -23,15 +24,15 @@ buildPythonPackage rec {
     owner = "pyapp-kit";
     repo = "app-model";
     rev = "refs/tags/v${version}";
-    hash = "sha256-EMlxY9Xna9e3kWJ7X8oRuLHEmivwVFcEXRDvZfN2rNY=";
+    hash = "sha256-vGSFo2ZckIDI3TjBSTKZagTEYdILt1/5Wyws3P7FNiQ=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-vcs
     hatchling
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     psygnal
     pydantic
     pydantic-compat
@@ -39,13 +40,9 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "app_model"
-  ];
+  pythonImportsCheck = [ "app_model" ];
 
   meta = with lib; {
     description = "Module to implement generic application schema";
diff --git a/pkgs/development/python-modules/appdirs/default.nix b/pkgs/development/python-modules/appdirs/default.nix
index 1f2da03eae041..dff911c89dae9 100644
--- a/pkgs/development/python-modules/appdirs/default.nix
+++ b/pkgs/development/python-modules/appdirs/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -14,7 +15,7 @@ buildPythonPackage rec {
   };
 
   meta = {
-    description = "A python module for determining appropriate platform-specific dirs";
+    description = "Python module for determining appropriate platform-specific dirs";
     homepage = "https://github.com/ActiveState/appdirs";
     license = lib.licenses.mit;
   };
diff --git a/pkgs/development/python-modules/apple-weatherkit/default.nix b/pkgs/development/python-modules/apple-weatherkit/default.nix
index ce5bce13d5f78..60cfd6d9e71ea 100644
--- a/pkgs/development/python-modules/apple-weatherkit/default.nix
+++ b/pkgs/development/python-modules/apple-weatherkit/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, aiohttp
-, aiohttp-retry
-, pythonOlder
-, pyjwt
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  aiohttp,
+  aiohttp-retry,
+  pythonOlder,
+  pyjwt,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-w3KinicaF01I6fIidI7XYHpB8eq52RTUw/BMLrx6Grk=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -35,9 +34,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "apple_weatherkit"
-  ];
+  pythonImportsCheck = [ "apple_weatherkit" ];
 
   meta = with lib; {
     description = "Python library for Apple WeatherKit";
diff --git a/pkgs/development/python-modules/applicationinsights/default.nix b/pkgs/development/python-modules/applicationinsights/default.nix
index 3dd3ccf4d36ba..a4329ff4dc70b 100644
--- a/pkgs/development/python-modules/applicationinsights/default.nix
+++ b/pkgs/development/python-modules/applicationinsights/default.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
-, portalocker
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+  portalocker,
 }:
 
 buildPythonPackage rec {
@@ -20,6 +21,6 @@ buildPythonPackage rec {
     description = "This project extends the Application Insights API surface to support Python";
     homepage = "https://github.com/Microsoft/ApplicationInsights-Python";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/appnope/default.nix b/pkgs/development/python-modules/appnope/default.nix
index bb72bbc8e73e6..19a9263a0697f 100644
--- a/pkgs/development/python-modules/appnope/default.nix
+++ b/pkgs/development/python-modules/appnope/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-JYzNOPD1ofOrtZK5TTKxbF1ausmczsltR7F1Vwss8Sw=";
   };
 
-  checkInputs = [
-    pytestCheckHook
-  ];
+  checkInputs = [ pytestCheckHook ];
 
   meta = {
     description = "Disable App Nap on macOS";
diff --git a/pkgs/development/python-modules/apprise/default.nix b/pkgs/development/python-modules/apprise/default.nix
index 4d65c1babd193..657537bbc5689 100644
--- a/pkgs/development/python-modules/apprise/default.nix
+++ b/pkgs/development/python-modules/apprise/default.nix
@@ -1,39 +1,46 @@
-{ lib
-, babel
-, buildPythonPackage
-, click
-, cryptography
-, fetchPypi
-, gntp
-, installShellFiles
-, markdown
-, paho-mqtt
-, pytest-mock
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, requests
-, requests-oauthlib
+{
+  lib,
+  apprise,
+  babel,
+  buildPythonPackage,
+  click,
+  cryptography,
+  fetchPypi,
+  gntp,
+  installShellFiles,
+  markdown,
+  paho-mqtt,
+  pytest-mock,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  requests,
+  requests-oauthlib,
+  setuptools,
+  testers,
 }:
 
 buildPythonPackage rec {
   pname = "apprise";
-  version = "1.7.6";
-  format = "setuptools";
+  version = "1.8.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-B38JMJzIpskGPb1hSzQ4B9Un1UZpO3/o/FpEM1Av6mw=";
+    hash = "sha256-CKIP5yZyt+kPeWnVuHnWV8Li2zhaiowQ9Uy6VlvyN/I=";
   };
 
-  nativeBuildInputs = [
-    installShellFiles
+  nativeBuildInputs = [ installShellFiles ];
+
+  build-system = [
+    babel
+    setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     click
     cryptography
     markdown
@@ -43,7 +50,6 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
-    babel
     gntp
     paho-mqtt
     pytest-mock
@@ -53,28 +59,43 @@ buildPythonPackage rec {
 
   disabledTests = [
     "test_apprise_cli_nux_env"
+    # Nondeterministic. Fails with `assert 0 == 1`
+    "test_notify_emoji_general"
     "test_plugin_mqtt_general"
+    # Nondeterministic. Fails with `assert 3 == 2`
+    "test_plugin_matrix_transaction_ids_api_v3"
+    # Nondeterministic. Fails with `AssertionError`
+    "test_plugin_xbmc_kodi_urls"
+    # Nondeterministic. Fails with `AssertionError`
+    "test_plugin_zulip_urls"
   ];
 
   disabledTestPaths = [
     # AttributeError: module 'apprise.plugins' has no attribute 'NotifyBulkSMS'
     "test/test_plugin_bulksms.py"
+    # Nondeterministic. Multiple tests will fail with `AssertionError`
+    "test/test_plugin_workflows.py"
   ];
 
   postInstall = ''
     installManPage packaging/man/apprise.1
   '';
 
-  pythonImportsCheck = [
-    "apprise"
-  ];
+  pythonImportsCheck = [ "apprise" ];
+
+  passthru = {
+    tests.version = testers.testVersion {
+      package = apprise;
+      version = "v${version}";
+    };
+  };
 
-  meta = with lib; {
+  meta = {
     description = "Push Notifications that work with just about every platform";
     homepage = "https://github.com/caronc/apprise";
     changelog = "https://github.com/caronc/apprise/releases/tag/v${version}";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ getchoo ];
     mainProgram = "apprise";
   };
 }
diff --git a/pkgs/development/python-modules/approval-utilities/default.nix b/pkgs/development/python-modules/approval-utilities/default.nix
index 38d22ad57aae4..c7e7157539b4a 100644
--- a/pkgs/development/python-modules/approval-utilities/default.nix
+++ b/pkgs/development/python-modules/approval-utilities/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, approvaltests
-, pythonOlder
-, setuptools
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  approvaltests,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     mv setup.approval_utilities.py setup.py
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     # used in approval_utilities/utilities/time_utilities.py
diff --git a/pkgs/development/python-modules/approvaltests/default.nix b/pkgs/development/python-modules/approvaltests/default.nix
index 9898dffe82aba..2b3ed4f45c196 100644
--- a/pkgs/development/python-modules/approvaltests/default.nix
+++ b/pkgs/development/python-modules/approvaltests/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, allpairspy
-, approval-utilities
-, beautifulsoup4
-, buildPythonPackage
-, empty-files
-, fetchFromGitHub
-, mock
-, mrjob
-, numpy
-, pyperclip
-, pytest
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, testfixtures
-, typing-extensions
+{
+  lib,
+  allpairspy,
+  approval-utilities,
+  beautifulsoup4,
+  buildPythonPackage,
+  empty-files,
+  fetchFromGitHub,
+  mock,
+  mrjob,
+  numpy,
+  pyperclip,
+  pytest,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  testfixtures,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "approvaltests";
-  version = "11.2.1";
+  version = "14.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -29,12 +30,10 @@ buildPythonPackage rec {
     owner = "approvals";
     repo = "ApprovalTests.Python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-oG1TH9F8IYDZWLuL2TIesNuZQVzGQRqkGk502HTG+O8=";
+    hash = "sha256-BTTmmtmFjYBfzbVf/Fi8PwnpVJBcOOBTdFBmGowGez4=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     allpairspy
@@ -71,6 +70,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/approvals/ApprovalTests.Python";
     changelog = "https://github.com/approvals/ApprovalTests.Python/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix b/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix
index 67ed8ef74b595..ed93d5dc27921 100644
--- a/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix
+++ b/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix
@@ -1,6 +1,7 @@
 {
   lib,
   appdirs,
+  apsw,
   buildPythonPackage,
   cvss,
   fetchFromGitHub,
@@ -8,9 +9,11 @@
   msgpack,
   orjson,
   packageurl-python,
+  pydantic,
   pytestCheckHook,
+  pytest-cov-stub,
   pythonOlder,
-  pythonRelaxDepsHook,
+  rich,
   semver,
   setuptools,
   tabulate,
@@ -18,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "appthreat-vulnerability-db";
-  version = "5.6.7";
+  version = "6.0.14";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -27,14 +30,9 @@ buildPythonPackage rec {
     owner = "AppThreat";
     repo = "vulnerability-db";
     rev = "refs/tags/v${version}";
-    hash = "sha256-/QzK+su+g2ESZ81C0coxKf13WOUVz1GyfJbOrO7fS98=";
+    hash = "sha256-Xm/2AHV4r6SmKK1wZS20xh9xRO3zhdEB/hpRT1o3z2Q=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail " --cov-report=term-missing --no-cov-on-fail --cov vdb" ""
-  '';
-
   pythonRelaxDeps = [
     "msgpack"
     "semver"
@@ -42,20 +40,25 @@ buildPythonPackage rec {
 
   build-system = [ setuptools ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     appdirs
+    apsw
     cvss
     httpx
     msgpack
     orjson
     packageurl-python
+    pydantic
+    rich
     semver
     tabulate
   ] ++ httpx.optional-dependencies.http2;
 
-  nativeCheckInputs = [ pytestCheckHook ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-cov-stub
+  ];
 
   preCheck = ''
     export HOME=$(mktemp -d);
diff --git a/pkgs/development/python-modules/apptools/default.nix b/pkgs/development/python-modules/apptools/default.nix
index faaf6bec0796e..8540a8f39c4bd 100644
--- a/pkgs/development/python-modules/apptools/default.nix
+++ b/pkgs/development/python-modules/apptools/default.nix
@@ -1,49 +1,58 @@
-{ lib
-, buildPythonPackage
-, configobj
-, fetchPypi
-, importlib-resources
-, pandas
-, pytestCheckHook
-, pythonOlder
-, tables
-, traits
-, traitsui
+{
+  lib,
+  buildPythonPackage,
+  configobj,
+  fetchFromGitHub,
+  numpy,
+  pandas,
+  pyface,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  tables,
+  traits,
+  traitsui,
 }:
 
 buildPythonPackage rec {
   pname = "apptools";
-  version = "5.2.1";
-  format = "setuptools";
+  version = "5.3.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-xiaPXfzzCIvK92oAA+ULd3TQG1JY1xmbQQtIUv8iRuM=";
+  src = fetchFromGitHub {
+    owner = "enthought";
+    repo = "apptools";
+    rev = "refs/tags/${version}";
+    hash = "sha256-qNtDHmvl5HbtdbjnugVM7CKVCW+ysAwRB9e2Ounh808=";
   };
 
-  propagatedBuildInputs = [
-    configobj
-    traits
-    traitsui
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    importlib-resources
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    tables
-    pandas
-    pytestCheckHook
-  ];
+  dependencies = [ traits ];
+
+  optional-dependencies = {
+    gui = [
+      pyface
+      traitsui
+    ];
+    h5 = [
+      numpy
+      pandas
+      tables
+    ];
+    persistence = [ numpy ];
+    preferences = [ configobj ];
+  };
+
+  nativeCheckInputs = [ pytestCheckHook ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
   preCheck = ''
     export HOME=$TMP
   '';
 
-  pythonImportsCheck = [
-    "apptools"
-  ];
+  pythonImportsCheck = [ "apptools" ];
 
   meta = with lib; {
     description = "Set of packages that Enthought has found useful in creating a number of applications";
diff --git a/pkgs/development/python-modules/apricot-select/default.nix b/pkgs/development/python-modules/apricot-select/default.nix
index 80e12792f1620..f6210fb426efb 100644
--- a/pkgs/development/python-modules/apricot-select/default.nix
+++ b/pkgs/development/python-modules/apricot-select/default.nix
@@ -1,16 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numba
-, numpy
-, pynose
-, pytestCheckHook
-, pythonOlder
-, scikit-learn
-, scipy
-, setuptools
-, torchvision
-, tqdm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  apricot-select,
+  numba,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  scikit-learn,
+  scipy,
+  setuptools,
+  torchvision,
+  tqdm,
 }:
 
 buildPythonPackage rec {
@@ -27,31 +29,28 @@ buildPythonPackage rec {
     hash = "sha256-v9BHFxmlbwXVipPze/nV35YijdFBuka3gAl85AlsffQ=";
   };
 
-  postPatch = ''
-    sed -i '/"nose"/d' setup.py
-  '';
-
-  build-system = [
-    setuptools
+  patches = [
+    # migrate to pytest, https://github.com/jmschrei/apricot/pull/43
+    (fetchpatch2 {
+      url = "https://github.com/jmschrei/apricot/commit/ffa5cce97292775c0d6890671a19cacd2294383f.patch?full_index=1";
+      hash = "sha256-9A49m4587kAPK/kzZBqMRPwuA40S3HinLXaslYUcWdM=";
+    })
   ];
 
+  build-system = [ setuptools ];
+
   dependencies = [
     numba
     numpy
+    scikit-learn
     scipy
+    torchvision
     tqdm
   ];
 
-  nativeCheckInputs = [
-    pynose
-    pytestCheckHook
-    scikit-learn
-    torchvision
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "apricot"
-  ];
+  pythonImportsCheck = [ "apricot" ];
 
   disabledTestPaths = [
     # Tests require nose
@@ -59,6 +58,21 @@ buildPythonPackage rec {
     "tests/test_optimizers/test_knapsack_feature_based.py"
   ];
 
+  # NOTE: These tests seem to be flaky.
+  disabledTests = [
+    "test_digits_modular"
+    "test_digits_modular_object"
+    "test_digits_modular_sparse"
+    "test_digits_sqrt_modular"
+    "test_digits_sqrt_modular_object"
+    "test_digits_sqrt_modular_sparse"
+  ];
+
+  # NOTE: Tests are disabled by default because they can run for hours and timeout on Hydra.
+  doCheck = false;
+
+  passthru.tests.check = apricot-select.overridePythonAttrs { doCheck = true; };
+
   meta = with lib; {
     description = "Module for submodular optimization for the purpose of selecting subsets of massive data sets";
     homepage = "https://github.com/jmschrei/apricot";
diff --git a/pkgs/development/python-modules/aprslib/default.nix b/pkgs/development/python-modules/aprslib/default.nix
index 390a88fc2bf26..72f9d05d4e2bd 100644
--- a/pkgs/development/python-modules/aprslib/default.nix
+++ b/pkgs/development/python-modules/aprslib/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
 
   doCheck = false; # mox3 is disabled on python311
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "aprslib" ];
 
diff --git a/pkgs/development/python-modules/apscheduler/default.nix b/pkgs/development/python-modules/apscheduler/default.nix
index 771d9a3d0200e..7005690b53eff 100644
--- a/pkgs/development/python-modules/apscheduler/default.nix
+++ b/pkgs/development/python-modules/apscheduler/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, gevent
-, pytest-asyncio
-, pytest-tornado
-, pytestCheckHook
-, pythonOlder
-, pytz
-, setuptools
-, setuptools-scm
-, six
-, tornado
-, twisted
-, tzlocal
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  gevent,
+  pytest-asyncio,
+  pytest-tornado,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  setuptools,
+  setuptools-scm,
+  six,
+  tornado,
+  twisted,
+  tzlocal,
 }:
 
 buildPythonPackage rec {
   pname = "apscheduler";
   version = "3.10.4";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -29,11 +30,12 @@ buildPythonPackage rec {
     hash = "sha256-5t8HGyfZvomOSGvHlAp75QtK8unafAjwdEqW1L1M70o=";
   };
 
-  buildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pytz
     setuptools
     six
@@ -51,28 +53,28 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.cfg \
-      --replace " --cov --tb=short" ""
+      --replace-fail " --cov --tb=short" ""
   '';
 
-  disabledTests = [
-    "test_broken_pool"
-    # gevent tests have issue on newer Python releases
-    "test_add_live_job"
-    "test_add_pending_job"
-    "test_shutdown"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_submit_job"
-    "test_max_instances"
-  ];
+  disabledTests =
+    [
+      "test_broken_pool"
+      # gevent tests have issue on newer Python releases
+      "test_add_live_job"
+      "test_add_pending_job"
+      "test_shutdown"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      "test_submit_job"
+      "test_max_instances"
+    ];
 
-  pythonImportsCheck = [
-    "apscheduler"
-  ];
+  pythonImportsCheck = [ "apscheduler" ];
 
   meta = with lib; {
     description = "Library that lets you schedule your Python code to be executed";
     homepage = "https://github.com/agronholm/apscheduler";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/apsw/default.nix b/pkgs/development/python-modules/apsw/default.nix
index 41eb2ade77eda..d2effb1ae435f 100644
--- a/pkgs/development/python-modules/apsw/default.nix
+++ b/pkgs/development/python-modules/apsw/default.nix
@@ -1,16 +1,17 @@
 {
+  stdenv,
   lib,
   buildPythonPackage,
   fetchFromGitHub,
-  python,
   pythonOlder,
+  pytestCheckHook,
   setuptools,
   sqlite,
 }:
 
 buildPythonPackage rec {
   pname = "apsw";
-  version = "3.45.3.0";
+  version = "3.46.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,26 +20,32 @@ buildPythonPackage rec {
     owner = "rogerbinns";
     repo = "apsw";
     rev = "refs/tags/${version}";
-    hash = "sha256-7z9JXJn2a6RJAc+7KrkzzScrNmbb06ud6L1rBinzkP8=";
+    hash = "sha256-/MMCwdd2juFbv/lrYwuO2mdWm0+v+YFn6h9CwdQMTpg=";
   };
 
   build-system = [ setuptools ];
 
   buildInputs = [ sqlite ];
 
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  # Project uses custom test setup to exclude some tests by default, so using pytest
-  # requires more maintenance
-  # https://github.com/rogerbinns/apsw/issues/335
-  checkPhase = ''
-    ${python.interpreter} setup.py test
-  '';
+  pytestFlagsArray = [ "apsw/tests.py" ];
+
+  disabledTests = [
+    # we don't build the test extension
+    "testLoadExtension"
+    "testShell"
+    "testVFS"
+    "testVFSWithWAL"
+    # no lines in errout.txt
+    "testWriteUnraisable"
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ "testzzForkChecker" ];
 
   pythonImportsCheck = [ "apsw" ];
 
   meta = with lib; {
     changelog = "https://github.com/rogerbinns/apsw/blob/${src.rev}/doc/changes.rst";
-    description = "A Python wrapper for the SQLite embedded relational database engine";
+    description = "Python wrapper for the SQLite embedded relational database engine";
     homepage = "https://github.com/rogerbinns/apsw";
     license = licenses.zlib;
     maintainers = with maintainers; [ gador ];
diff --git a/pkgs/development/python-modules/apsystems-ez1/default.nix b/pkgs/development/python-modules/apsystems-ez1/default.nix
new file mode 100644
index 0000000000000..f9a50715322b4
--- /dev/null
+++ b/pkgs/development/python-modules/apsystems-ez1/default.nix
@@ -0,0 +1,41 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  aiohttp,
+  poetry-core,
+  pytest-asyncio,
+}:
+
+buildPythonPackage rec {
+  pname = "apsystems-ez1";
+  version = "2.3.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "SonnenladenGmbH";
+    repo = "APsystems-EZ1-API";
+    rev = "refs/tags/${version}";
+    hash = "sha256-CG+QpdJfZt1S6IDDjabRjwuRflURFc1QYo39kf/p0Zw=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [ aiohttp ];
+
+  pythonImportsCheck = [ "APsystemsEZ1" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-asyncio
+  ];
+
+  meta = {
+    changelog = "https://github.com/SonnenladenGmbH/APsystems-EZ1-API/releases/tag/${version}";
+    description = "Streamlined interface for interacting with the local API of APsystems EZ1 Microinverters.";
+    homepage = "https://github.com/SonnenladenGmbH/APsystems-EZ1-API";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ pyrox0 ];
+  };
+}
diff --git a/pkgs/development/python-modules/apycula/default.nix b/pkgs/development/python-modules/apycula/default.nix
index c41dd8fea2786..2c0b156272d31 100644
--- a/pkgs/development/python-modules/apycula/default.nix
+++ b/pkgs/development/python-modules/apycula/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "apycula";
-  version = "0.12";
+  version = "0.14";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,14 +17,12 @@ buildPythonPackage rec {
   src = fetchPypi {
     inherit version;
     pname = "Apycula";
-    hash = "sha256-aF/JVm4d6c631y+RdsCk3pAVSroRBY+lW2wBRvgcQH8=";
+    hash = "sha256-sunqCWfXz91nqbJXGeivo3DoQOVgcA8grO5j3atrLbo=";
   };
 
   build-system = [ setuptools-scm ];
 
-  dependencies = [
-    crc
-  ];
+  dependencies = [ crc ];
 
   # Tests require a physical FPGA
   doCheck = false;
diff --git a/pkgs/development/python-modules/aqipy-atmotech/default.nix b/pkgs/development/python-modules/aqipy-atmotech/default.nix
index a9b82ca6ad199..549e49b3d4866 100644
--- a/pkgs/development/python-modules/aqipy-atmotech/default.nix
+++ b/pkgs/development/python-modules/aqipy-atmotech/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,18 +20,14 @@ buildPythonPackage rec {
     hash = "sha256-tqHhfJmtVFUSO57Cid9y3LK4pOoG7ROtwDT2hY5IE1Y=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace setup.py \
       --replace "'pytest-runner'" ""
   '';
 
-  pythonImportsCheck = [
-    "aqipy"
-  ];
+  pythonImportsCheck = [ "aqipy" ];
 
   meta = with lib; {
     description = "Library for AQI calculation";
diff --git a/pkgs/development/python-modules/aqualogic/default.nix b/pkgs/development/python-modules/aqualogic/default.nix
index e7772f40c63c3..4e5ac2e73f48d 100644
--- a/pkgs/development/python-modules/aqualogic/default.nix
+++ b/pkgs/development/python-modules/aqualogic/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pyserial
-, pytestCheckHook
-, websockets
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyserial,
+  pytestCheckHook,
+  websockets,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     websockets
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # With 3.4 the event loop is not terminated after the first test
   # https://github.com/swilson/aqualogic/issues/9
diff --git a/pkgs/development/python-modules/arabic-reshaper/default.nix b/pkgs/development/python-modules/arabic-reshaper/default.nix
index f9c82cd0a6997..36c9aaf013954 100644
--- a/pkgs/development/python-modules/arabic-reshaper/default.nix
+++ b/pkgs/development/python-modules/arabic-reshaper/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fonttools
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fonttools,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,18 +22,12 @@ buildPythonPackage rec {
   };
 
   passthru.optional-dependencies = {
-    with-fonttools = [
-      fonttools
-    ];
+    with-fonttools = [ fonttools ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "arabic_reshaper"
-  ];
+  pythonImportsCheck = [ "arabic_reshaper" ];
 
   meta = with lib; {
     description = "Reconstruct Arabic sentences to be used in applications that don't support Arabic";
diff --git a/pkgs/development/python-modules/aranet4/default.nix b/pkgs/development/python-modules/aranet4/default.nix
index cc1c93c8677f7..0d9e848c14751 100644
--- a/pkgs/development/python-modules/aranet4/default.nix
+++ b/pkgs/development/python-modules/aranet4/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "aranet4";
-  version = "2.3.3";
+  version = "2.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "Anrijs";
     repo = "Aranet4-Python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-j53d2Ki9xVWGHWkAu1wkjYE56Xq7kfMmqQrQiKrBg2I=";
+    hash = "sha256-PdEOEVHri9bhsRFtSqZIaTJ7perD6nZcYoF2sDrWXqg=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/arc4/default.nix b/pkgs/development/python-modules/arc4/default.nix
index 9e873328a308a..6706519259c7f 100644
--- a/pkgs/development/python-modules/arc4/default.nix
+++ b/pkgs/development/python-modules/arc4/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-DlZIygf5v3ZNY2XFmrKOA15ccMo3Rv0kf6hZJ0CskeQ=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "arc4"
-  ];
+  pythonImportsCheck = [ "arc4" ];
 
   meta = with lib; {
     description = "ARCFOUR (RC4) cipher implementation";
diff --git a/pkgs/development/python-modules/arcam-fmj/default.nix b/pkgs/development/python-modules/arcam-fmj/default.nix
index b78a7bfac1610..1588d8f14eb74 100644
--- a/pkgs/development/python-modules/arcam-fmj/default.nix
+++ b/pkgs/development/python-modules/arcam-fmj/default.nix
@@ -1,20 +1,22 @@
-{ lib
-, buildPythonPackage
-, pythonAtLeast
-, pythonOlder
-, fetchFromGitHub
-, aiohttp
-, attrs
-, defusedxml
-, pytest-aiohttp
-, pytest-mock
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonAtLeast,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  aiohttp,
+  attrs,
+  defusedxml,
+  pytest-aiohttp,
+  pytest-mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "arcam-fmj";
-  version = "1.4.0";
-  format = "setuptools";
+  version = "1.5.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -22,10 +24,12 @@ buildPythonPackage rec {
     owner = "elupus";
     repo = "arcam_fmj";
     rev = "refs/tags/${version}";
-    hash = "sha256-/A3Fs0JyzW05L80CtI07Y/kTTrIC6yqubJfYO0kAEf0=";
+    hash = "sha256-hBoUxY+xtW04UPUG2P8A8QQbHxGk0bjcrtXis6nlaGg=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     aiohttp
     attrs
     defusedxml
@@ -47,6 +51,7 @@ buildPythonPackage rec {
     "test_silent_server_disconnect"
     "test_heartbeat"
     "test_cancellation"
+    "test_unsupported_zone"
   ];
 
   pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/archinfo/default.nix b/pkgs/development/python-modules/archinfo/default.nix
index fe6ca55ad91ba..c1b6e88ed3c52 100644
--- a/pkgs/development/python-modules/archinfo/default.nix
+++ b/pkgs/development/python-modules/archinfo/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "archinfo";
-  version = "9.2.101";
+  version = "9.2.119";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "angr";
     repo = "archinfo";
     rev = "refs/tags/v${version}";
-    hash = "sha256-58iijDVs4OqZytHDjhGqYRMSIVGPCWTUNRy74OQZcPw=";
+    hash = "sha256-81vaHTzRCOw8C/KHwFSEMGOWEwpHVK0HicGVi9j4MqU=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/archspec/default.nix b/pkgs/development/python-modules/archspec/default.nix
index 1ae73f71f325b..3c9c0f00f7d7f 100644
--- a/pkgs/development/python-modules/archspec/default.nix
+++ b/pkgs/development/python-modules/archspec/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, jsonschema
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  jsonschema,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "archspec";
-  version = "0.2.3";
+  version = "0.2.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,32 +21,29 @@ buildPythonPackage rec {
     repo = "archspec";
     rev = "refs/tags/v${version}";
     fetchSubmodules = true;
-    hash = "sha256-Ek+rmgvG6DbtxljAEHVac/JzNI1MaLpPu4G8nhaxzg8=";
+    hash = "sha256-Xg1XdmKk2b6fqzOdedU3SGIgy65CjExxDByt/Xvmr24=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    click
-  ];
+  dependecies = [ click ];
 
   nativeCheckInputs = [
     pytestCheckHook
     jsonschema
   ];
 
-  pythonImportsCheck = [
-    "archspec"
-  ];
+  pythonImportsCheck = [ "archspec" ];
 
   meta = with lib; {
     description = "Library for detecting, labeling, and reasoning about microarchitectures";
-    mainProgram = "archspec";
     homepage = "https://archspec.readthedocs.io/";
     changelog = "https://github.com/archspec/archspec/releases/tag/v${version}";
-    license = with licenses; [ mit asl20 ];
+    license = with licenses; [
+      mit
+      asl20
+    ];
     maintainers = with maintainers; [ atila ];
+    mainProgram = "archspec";
   };
 }
diff --git a/pkgs/development/python-modules/area/default.nix b/pkgs/development/python-modules/area/default.nix
index 3057bf1eb805f..39b0ccd26cc26 100644
--- a/pkgs/development/python-modules/area/default.nix
+++ b/pkgs/development/python-modules/area/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "area";
@@ -14,7 +18,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "Calculate the area inside of any GeoJSON geometry. This is a port of Mapbox’s geojson-area for Python.";
+    description = "Calculate the area inside of any GeoJSON geometry. This is a port of Mapbox’s geojson-area for Python";
     homepage = "https://github.com/scisco/area";
     license = licenses.bsd2;
   };
diff --git a/pkgs/development/python-modules/arelle/default.nix b/pkgs/development/python-modules/arelle/default.nix
index fbbda611ba50c..7ecdc1bb8a932 100644
--- a/pkgs/development/python-modules/arelle/default.nix
+++ b/pkgs/development/python-modules/arelle/default.nix
@@ -1,8 +1,19 @@
-{ gui ? true,
-  buildPythonPackage, fetchFromGitHub, lib,
-  sphinx, lxml, isodate, numpy, openpyxl,
-  tkinter ? null, py3to2, isPy3k, python,
-  ... }:
+{
+  gui ? true,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  sphinx,
+  lxml,
+  isodate,
+  numpy,
+  openpyxl,
+  tkinter ? null,
+  py3to2,
+  isPy3k,
+  python,
+  ...
+}:
 
 buildPythonPackage rec {
   pname = "arelle${lib.optionalString (!gui) "-headless"}";
@@ -19,10 +30,11 @@ buildPythonPackage rec {
     rev = "edgr${version}";
     sha256 = "12a94ipdp6xalqyds7rcp6cjwps6fbj3byigzfy403hlqc9n1g33";
   };
-  outputs = ["out" "doc"];
-  patches = [
-    ./tests.patch
+  outputs = [
+    "out"
+    "doc"
   ];
+  patches = [ ./tests.patch ];
   postPatch = "rm testParser2.py";
   nativeBuildInputs = [
     sphinx
@@ -33,25 +45,25 @@ buildPythonPackage rec {
     isodate
     numpy
     openpyxl
-  ] ++ lib.optionals gui [
-    tkinter
-  ];
+  ] ++ lib.optionals gui [ tkinter ];
 
   # arelle-gui is useless without gui dependencies, so delete it when !gui.
-  postInstall = lib.optionalString (!gui) ''
-    find $out/bin -name "*arelle-gui*" -delete
-  '' +
-  # By default, not the entirety of the src dir is copied. This means we don't
-  # copy the `images` dir, which is needed for the gui version.
-  lib.optionalString (gui) ''
-    targetDir=$out/${python.sitePackages}
-    cp -vr $src/arelle $targetDir
-  '';
+  postInstall =
+    lib.optionalString (!gui) ''
+      find $out/bin -name "*arelle-gui*" -delete
+    ''
+    +
+      # By default, not the entirety of the src dir is copied. This means we don't
+      # copy the `images` dir, which is needed for the gui version.
+      lib.optionalString (gui) ''
+        targetDir=$out/${python.sitePackages}
+        cp -vr $src/arelle $targetDir
+      '';
 
   # Documentation
   postBuild = ''
     (cd apidocs && make html && cp -r _build $doc)
-    '';
+  '';
 
   doCheck = false;
 
@@ -60,10 +72,12 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = ''
-      An open source facility for XBRL, the eXtensible Business Reporting
-      Language supporting various standards, exposed through a Python or
-      REST API'' + lib.optionalString gui " and a graphical user interface";
+    description =
+      ''
+        An open source facility for XBRL, the eXtensible Business Reporting
+        Language supporting various standards, exposed through a Python or
+        REST API''
+      + lib.optionalString gui " and a graphical user interface";
     mainProgram = "arelle";
     homepage = "http://arelle.org/";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/aresponses/default.nix b/pkgs/development/python-modules/aresponses/default.nix
index 01b0c3c44a6ec..5c8c98177b694 100644
--- a/pkgs/development/python-modules/aresponses/default.nix
+++ b/pkgs/development/python-modules/aresponses/default.nix
@@ -1,42 +1,37 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytest
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytest-asyncio,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aresponses";
-  version = "2.1.6";
-  format = "setuptools";
+  version = "3.0.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
-    owner = "CircleUp";
-    repo = pname;
+    owner = "aresponses";
+    repo = "aresponses";
     rev = version;
-    hash = "sha256-Ui9ZpWaVBfCbDlZH3EgHX32FIZtyTHnc/UXqtoEyFcw=";
+    hash = "sha256-RklXlIsbdq46/7D6Hv4mdskunqw1a7SFF09OjhrvMRY=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
-
-  buildInputs = [
-    pytest
-    pytest-asyncio
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
+  dependencies = [
     aiohttp
     pytest-asyncio
-    pytestCheckHook
   ];
 
+  nativeCheckInputs = [ pytestCheckHook ];
+
   disabledTests = [
     # Disable tests which requires network access
     "test_foo"
@@ -45,15 +40,13 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [
-    "aresponses"
-  ];
+  pythonImportsCheck = [ "aresponses" ];
 
   meta = with lib; {
+    changelog = "https://github.com/aresponses/aresponses/blob/${src.rev}/README.md#changelog";
     description = "Asyncio testing server";
-    homepage = "https://github.com/circleup/aresponses";
+    homepage = "https://github.com/aresponses/aresponses";
     license = licenses.mit;
     maintainers = with maintainers; [ makefu ];
   };
 }
-
diff --git a/pkgs/development/python-modules/argcomplete/default.nix b/pkgs/development/python-modules/argcomplete/default.nix
index 4427e75089fad..969acd0b1c458 100644
--- a/pkgs/development/python-modules/argcomplete/default.nix
+++ b/pkgs/development/python-modules/argcomplete/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "argcomplete";
-  version = "3.2.3";
+  version = "3.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,7 +18,7 @@ buildPythonPackage rec {
     owner = "kislyuk";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-sGXHRHmzapJM/c4D4j3QWhkTNzPNZPLO7JOptnTXuR8=";
+    hash = "sha256-4JMyBixc6LcSdpvvLmK4nyyqZMK2kuFcPU7OXhJLpoc=";
   };
 
   nativeBuildInputs = [
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Tries to build and install test packages which fails
   doCheck = false;
 
-  pythonImportsCheck = [
-    "argcomplete"
-  ];
+  pythonImportsCheck = [ "argcomplete" ];
 
   meta = with lib; {
     changelog = "https://github.com/kislyuk/argcomplete/blob/v${version}/Changes.rst";
diff --git a/pkgs/development/python-modules/argh/default.nix b/pkgs/development/python-modules/argh/default.nix
index 3097db5417545..a4ab8087a6123 100644
--- a/pkgs/development/python-modules/argh/default.nix
+++ b/pkgs/development/python-modules/argh/default.nix
@@ -1,26 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, flit-core
-, iocapture
-, mock
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  iocapture,
+  mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "argh";
-  version = "0.31.2";
+  version = "0.31.3";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-2xw0iFgE99RkbDhdwvsZtFKYVhMi9MFerhsTOZP54yM=";
+    hash = "sha256-8wAj2L4Uyl7msbPuq4KRUde72kZK4H3E3VNHkZxYkvk=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   nativeCheckInputs = [
     iocapture
@@ -33,7 +31,7 @@ buildPythonPackage rec {
   meta = with lib; {
     changelog = "https://github.com/neithere/argh/blob/v${version}/CHANGES";
     homepage = "https://github.com/neithere/argh";
-    description = "An unobtrusive argparse wrapper with natural syntax";
+    description = "Unobtrusive argparse wrapper with natural syntax";
     license = licenses.lgpl3Plus;
     maintainers = with maintainers; [ domenkozar ];
   };
diff --git a/pkgs/development/python-modules/argilla/default.nix b/pkgs/development/python-modules/argilla/default.nix
index d3b87ca99f442..50ea4cbb74f8e 100644
--- a/pkgs/development/python-modules/argilla/default.nix
+++ b/pkgs/development/python-modules/argilla/default.nix
@@ -1,145 +1,97 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pythonRelaxDepsHook
-, deprecated
-, rich
-, backoff
-, packaging
-, pydantic
-, typer
-, tqdm
-, wrapt
-, numpy
-, httpx
-, pandas
-, monotonic
-# optional-dependencies
-, fastapi
-, opensearch-py
-, elasticsearch8
-, uvicorn
-, smart-open
-, brotli-asgi
-, alembic
-, sqlalchemy
-, greenlet
-, aiosqlite
-, luqum
-, scikit-learn
-, aiofiles
-, pyyaml
-, python-multipart
-, python-jose
-, passlib
-, psutil
-# , segment-analytics-python
-, asyncpg
-, psycopg2
-, schedule
-, prodict
-, cleanlab
-, datasets
-, huggingface-hub
+{
+  lib,
+  aiofiles,
+  aiosqlite,
+  alembic,
+  asyncpg,
+  backoff,
+  brotli-asgi,
+  buildPythonPackage,
+  cleanlab,
+  datasets,
+  deprecated,
+  elasticsearch8,
+  evaluate,
+  factory-boy,
+  faiss,
+  fastapi,
+  fetchFromGitHub,
+  flyingsquid,
+  greenlet,
+  httpx,
+  huggingface-hub,
+  luqum,
+  monotonic,
+  numpy,
+  openai,
+  opensearch-py,
+  packaging,
+  pandas,
+  passlib,
+  setuptools,
+  peft,
+  pgmpy,
+  plotly,
+  prodict,
+  psutil,
+  psycopg2,
+  pydantic,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  python-jose,
+  python-multipart,
+  pythonOlder,
+  pyyaml,
+  rich,
+  schedule,
+  scikit-learn,
+  sentence-transformers,
+  seqeval,
+  smart-open,
+  snorkel,
+  spacy-transformers,
+  spacy,
+  sqlalchemy,
+  tqdm,
+  transformers,
+  typer,
+  uvicorn,
+  wrapt,
 # , flair
-, faiss
-, flyingsquid
-, pgmpy
-, plotly
-, snorkel
-, spacy
-, transformers
-, evaluate
-, seqeval
 # , setfit
+# , spacy-huggingface-hub
 # , span_marker
-, openai
-, peft
-# test dependencies
-, pytestCheckHook
-, pytest-cov
-, pytest-mock
-, pytest-asyncio
-, factory-boy
+# , trl
 }:
-let
+
+buildPythonPackage rec {
   pname = "argilla";
-  version = "1.27.0";
-  optional-dependencies = {
-    server = [
-      fastapi
-      opensearch-py
-      elasticsearch8
-      uvicorn
-      smart-open
-      brotli-asgi
-      alembic
-      sqlalchemy
-      greenlet
-      aiosqlite
-      luqum
-      scikit-learn
-      aiofiles
-      pyyaml
-      python-multipart
-      python-jose
-      passlib
-      psutil
-      # segment-analytics-python
-    ] ++
-      elasticsearch8.optional-dependencies.async ++
-      uvicorn.optional-dependencies.standard ++
-      python-jose.optional-dependencies.cryptography ++
-      passlib.optional-dependencies.bcrypt;
-    postgresql = [ asyncpg psycopg2 ];
-    listeners = [ schedule prodict ];
-    integrations = [
-      pyyaml
-      cleanlab
-      datasets
-      huggingface-hub
-      # flair
-      faiss
-      flyingsquid
-      pgmpy
-      plotly
-      snorkel
-      spacy
-      transformers
-      evaluate
-      seqeval
-      # setfit
-      # span_marker
-      openai
-      peft
-    ] ++ transformers.optional-dependencies.torch;
-  };
-in
-buildPythonPackage {
-  inherit pname version;
-  format = "setuptools";
+  version = "1.29.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "argilla-io";
-    repo = pname;
+    repo = "argilla";
     rev = "refs/tags/v${version}";
-    hash = "sha256-CBVP/+XFKnJBMcxsDd7lgQ1JFX7zFlHmdBwkAMmq85g=";
+    hash = "sha256-ndendXlgACFdwnZ/P2W22Tr/Ji8AYw/6jtb8F3/zqSA=";
   };
 
+  sourceRoot = "${src.name}/${pname}";
+
   pythonRelaxDeps = [
-    "typer"
-    "rich"
+    "httpx"
     "numpy"
+    "rich"
+    "typer"
+    "wrapt"
   ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     httpx
     deprecated
     packaging
@@ -154,7 +106,67 @@ buildPythonPackage {
     typer
   ];
 
-  # still quite a bit of optional dependencies missing
+  passthru.optional-dependencies = {
+    server =
+      [
+        aiofiles
+        aiosqlite
+        alembic
+        brotli-asgi
+        elasticsearch8
+        fastapi
+        greenlet
+        luqum
+        opensearch-py
+        passlib
+        psutil
+        python-jose
+        python-multipart
+        pyyaml
+        scikit-learn
+        smart-open
+        sqlalchemy
+        uvicorn
+      ]
+      ++ elasticsearch8.optional-dependencies.async
+      ++ uvicorn.optional-dependencies.standard
+      ++ python-jose.optional-dependencies.cryptography
+      ++ passlib.optional-dependencies.bcrypt;
+    postgresql = [
+      asyncpg
+      psycopg2
+    ];
+    listeners = [
+      schedule
+      prodict
+    ];
+    integrations = [
+      cleanlab
+      datasets
+      evaluate
+      faiss
+      flyingsquid
+      huggingface-hub
+      openai
+      peft
+      pgmpy
+      plotly
+      pyyaml
+      sentence-transformers
+      seqeval
+      snorkel
+      spacy
+      spacy-transformers
+      transformers
+      # flair
+      # setfit
+      # span_marker
+      # trl
+      # spacy-huggingface-hub
+    ] ++ transformers.optional-dependencies.torch;
+  };
+
+  # Still quite a bit of optional dependencies missing
   doCheck = false;
 
   preCheck = ''
@@ -163,26 +175,19 @@ buildPythonPackage {
 
   nativeCheckInputs = [
     pytestCheckHook
-    pytest-cov
     pytest-mock
     pytest-asyncio
     factory-boy
-  ]
-    ++ optional-dependencies.server
-    ++ optional-dependencies.postgresql
-    ++ optional-dependencies.listeners
-    ++ optional-dependencies.integrations;
+  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pytestFlagsArray = [ "--ignore=tests/server/datasets/test_dao.py" ];
-
-  passthru.optional-dependencies = optional-dependencies;
+  disabledTestPaths = [ "tests/server/datasets/test_dao.py" ];
 
   meta = with lib; {
-    description = "Argilla: the open-source data curation platform for LLMs";
-    mainProgram = "argilla";
+    description = "Open-source data curation platform for LLMs";
     homepage = "https://github.com/argilla-io/argilla";
     changelog = "https://github.com/argilla-io/argilla/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ happysalada ];
+    mainProgram = "argilla";
   };
 }
diff --git a/pkgs/development/python-modules/argon2-cffi-bindings/default.nix b/pkgs/development/python-modules/argon2-cffi-bindings/default.nix
index 822acd09e1429..0df49f5835884 100644
--- a/pkgs/development/python-modules/argon2-cffi-bindings/default.nix
+++ b/pkgs/development/python-modules/argon2-cffi-bindings/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, libargon2
-, cffi
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  libargon2,
+  cffi,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     cffi
   ];
 
-  propagatedBuildInputs = [
-    cffi
-  ];
+  propagatedBuildInputs = [ cffi ];
 
   env.ARGON2_CFFI_USE_SYSTEM = 1;
 
@@ -37,6 +36,6 @@ buildPythonPackage rec {
     description = "Low-level CFFI bindings for Argon2";
     homepage = "https://github.com/hynek/argon2-cffi-bindings";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/argon2-cffi/default.nix b/pkgs/development/python-modules/argon2-cffi/default.nix
index da9022c93f192..2ab26082ad16c 100644
--- a/pkgs/development/python-modules/argon2-cffi/default.nix
+++ b/pkgs/development/python-modules/argon2-cffi/default.nix
@@ -1,12 +1,13 @@
-{ hypothesis
-, pytestCheckHook
-, buildPythonPackage
-, fetchPypi
-, lib
-, hatchling
-, hatch-vcs
-, hatch-fancy-pypi-readme
-, argon2-cffi-bindings
+{
+  hypothesis,
+  pytestCheckHook,
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  hatchling,
+  hatch-vcs,
+  hatch-fancy-pypi-readme,
+  argon2-cffi-bindings,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,24 @@ buildPythonPackage rec {
     hash = "sha256-h5w+eaJynOdo67fTbUYJ46eKTKLsOp8SKGygV+PQ2wg=";
   };
 
-  nativeBuildInputs = [ hatchling hatch-vcs hatch-fancy-pypi-readme ];
+  nativeBuildInputs = [
+    hatchling
+    hatch-vcs
+    hatch-fancy-pypi-readme
+  ];
 
   propagatedBuildInputs = [ argon2-cffi-bindings ];
 
-  nativeCheckInputs = [ hypothesis pytestCheckHook ];
+  nativeCheckInputs = [
+    hypothesis
+    pytestCheckHook
+  ];
 
   pythonImportsCheck = [ "argon2" ];
 
   meta = with lib; {
     description = "Secure Password Hashes for Python";
-    homepage    = "https://argon2-cffi.readthedocs.io/";
-    license     = licenses.mit;
+    homepage = "https://argon2-cffi.readthedocs.io/";
+    license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/argos-translate-files/default.nix b/pkgs/development/python-modules/argos-translate-files/default.nix
index 0f0e3ea223549..86d269ce76a28 100644
--- a/pkgs/development/python-modules/argos-translate-files/default.nix
+++ b/pkgs/development/python-modules/argos-translate-files/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, lxml
-, translatehtml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  lxml,
+  translatehtml,
 }:
 
 buildPythonPackage rec {
@@ -13,7 +14,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-YSTqqd+Kv2QVlAjA0lf4IRx7rJ1DmvB0JIReBv3yZcM=";
+    hash = "sha256-YSTqqd+Kv2QVlAjA0lf4IRx7rJ1DmvB0JIReBv3yZcM=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/argostranslate/default.nix b/pkgs/development/python-modules/argostranslate/default.nix
index 57ea8db15a3d9..69e3bf1cc0f82 100644
--- a/pkgs/development/python-modules/argostranslate/default.nix
+++ b/pkgs/development/python-modules/argostranslate/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, ctranslate2
-, ctranslate2-cpp
-, sentencepiece
-, stanza
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  ctranslate2,
+  ctranslate2-cpp,
+  sentencepiece,
+  stanza,
 }:
 let
   ctranslate2OneDNN = ctranslate2.override {
@@ -18,13 +19,13 @@ let
 in
 buildPythonPackage rec {
   pname = "argostranslate";
-  version = "1.9.3";
+  version = "1.9.6";
 
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-N1Dh8238cDKpIMeQT645lDvYMbOWjVqGuWxt37+TQmQ=";
+    hash = "sha256-3YzBMnqmcTIpn5UOFg3SDTFLjPSE9UDw0i8fB8LYh2s=";
   };
 
   propagatedBuildInputs = [
@@ -42,9 +43,7 @@ buildPythonPackage rec {
 
   doCheck = false; # needs network access
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # required for import check to work
   # PermissionError: [Errno 13] Permission denied: '/homeless-shelter'
diff --git a/pkgs/development/python-modules/argparse-addons/default.nix b/pkgs/development/python-modules/argparse-addons/default.nix
index 44b9bf1c4ce02..1af3f55cd5546 100644
--- a/pkgs/development/python-modules/argparse-addons/default.nix
+++ b/pkgs/development/python-modules/argparse-addons/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "argparse-addons";
@@ -17,6 +21,9 @@ buildPythonPackage rec {
     description = "Additional Python argparse types and actions";
     homepage = "https://github.com/eerimoq/argparse_addons";
     license = licenses.mit;
-    maintainers = with maintainers; [ frogamic sbruder ];
+    maintainers = with maintainers; [
+      frogamic
+      sbruder
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/argparse-dataclass/default.nix b/pkgs/development/python-modules/argparse-dataclass/default.nix
index e0fbcd842b807..68ba25a94ead9 100644
--- a/pkgs/development/python-modules/argparse-dataclass/default.nix
+++ b/pkgs/development/python-modules/argparse-dataclass/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-ASdP6LOEeTszyppYV6vRQX8BKOHYUimI36tMSZTQfTk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "argparse_dataclass"
-  ];
+  pythonImportsCheck = [ "argparse_dataclass" ];
 
   meta = with lib; {
     description = "Declarative CLIs with argparse and dataclasses";
diff --git a/pkgs/development/python-modules/argparse-manpage/default.nix b/pkgs/development/python-modules/argparse-manpage/default.nix
index 59a303e0237b7..77bd37acd6f67 100644
--- a/pkgs/development/python-modules/argparse-manpage/default.nix
+++ b/pkgs/development/python-modules/argparse-manpage/default.nix
@@ -1,36 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, packaging
-, tomli
-, pytestCheckHook
-, pip
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  packaging,
+  tomli,
+  pytestCheckHook,
+  pip,
 }:
 
 buildPythonPackage rec {
   pname = "argparse-manpage";
-  version = "4.5";
+  version = "4.6";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "praiskup";
     repo = "argparse-manpage";
-    rev = "v${version}";
-    hash = "sha256-9lriW+Yx/6ysoumloQglDm5JEcKNUWm422B3P6IE/EE=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-2GJDFLCaPTb8sQCAv9qZ+pIysFE7IaKh9co3Mb8Dutc=";
   };
 
   nativeBuildInputs = [
     setuptools
     packaging
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.11") [ tomli ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -43,9 +40,7 @@ buildPythonPackage rec {
     "test_old_example_file_name"
   ];
 
-  pythonImportsCheck = [
-    "argparse_manpage"
-  ];
+  pythonImportsCheck = [ "argparse_manpage" ];
 
   passthru.optional-dependencies = {
     setuptools = [ setuptools ];
diff --git a/pkgs/development/python-modules/args/default.nix b/pkgs/development/python-modules/args/default.nix
index 329fde3416691..28170c20e92c3 100644
--- a/pkgs/development/python-modules/args/default.nix
+++ b/pkgs/development/python-modules/args/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "args";
diff --git a/pkgs/development/python-modules/aria2p/default.nix b/pkgs/development/python-modules/aria2p/default.nix
index 01f81b316952b..132f467e0499d 100644
--- a/pkgs/development/python-modules/aria2p/default.nix
+++ b/pkgs/development/python-modules/aria2p/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pdm-backend
-, appdirs
-, loguru
-, requests
-, setuptools
-, toml
-, websocket-client
-, asciimatics
-, pyperclip
-, aria2
-, fastapi
-, psutil
-, pytest-xdist
-, pytestCheckHook
-, responses
-, uvicorn
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pdm-backend,
+  appdirs,
+  loguru,
+  requests,
+  setuptools,
+  toml,
+  websocket-client,
+  asciimatics,
+  pyperclip,
+  aria2,
+  fastapi,
+  psutil,
+  pytest-xdist,
+  pytestCheckHook,
+  responses,
+  uvicorn,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,7 @@ buildPythonPackage rec {
     hash = "sha256-WlbZP2+qUSyfmeFFiuarXI3VaNZvD9cnOef/WM+J0OE=";
   };
 
-  nativeBuildInputs = [
-    pdm-backend
-  ];
+  nativeBuildInputs = [ pdm-backend ];
 
   propagatedBuildInputs = [
     appdirs
@@ -47,7 +46,10 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    tui = [ asciimatics pyperclip ];
+    tui = [
+      asciimatics
+      pyperclip
+    ];
   };
 
   preCheck = ''
diff --git a/pkgs/development/python-modules/ariadne/default.nix b/pkgs/development/python-modules/ariadne/default.nix
index 14740b2136c13..c94ffd720d101 100644
--- a/pkgs/development/python-modules/ariadne/default.nix
+++ b/pkgs/development/python-modules/ariadne/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, freezegun
-, graphql-core
-, hatchling
-, httpx
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, python-multipart
-, starlette
-, syrupy
-, typing-extensions
-, werkzeug
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  graphql-core,
+  hatchling,
+  httpx,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  python-multipart,
+  starlette,
+  syrupy,
+  typing-extensions,
+  werkzeug,
 }:
 
 buildPythonPackage rec {
@@ -30,13 +31,9 @@ buildPythonPackage rec {
     hash = "sha256-zdM6LKtrD6m3hWn90yAgsinCvaa86BaTdhgf/VzGDLA=";
   };
 
-  patches = [
-    ./remove-opentracing.patch
-  ];
+  patches = [ ./remove-opentracing.patch ];
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     graphql-core
@@ -55,13 +52,9 @@ buildPythonPackage rec {
     werkzeug
   ];
 
-  pythonImportsCheck = [
-    "ariadne"
-  ];
+  pythonImportsCheck = [ "ariadne" ];
 
-  pytestFlagsArray = [
-    "--snapshot-update"
-  ];
+  pytestFlagsArray = [ "--snapshot-update" ];
 
   disabledTests = [
     # TypeError: TestClient.request() got an unexpected keyword argument 'content'
diff --git a/pkgs/development/python-modules/arnparse/default.nix b/pkgs/development/python-modules/arnparse/default.nix
index 5da008aa650f5..f9795be59283a 100644
--- a/pkgs/development/python-modules/arnparse/default.nix
+++ b/pkgs/development/python-modules/arnparse/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,18 +17,14 @@ buildPythonPackage rec {
     hash = "sha256-2+wxzYoS/KJXjYM6lZguxbr2Oxobo0eFNnzWZHLi0WM=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "arnparse"
-  ];
+  pythonImportsCheck = [ "arnparse" ];
 
   meta = with lib; {
     description = "Parse ARNs using Python";
     homepage = "https://github.com/PokaInc/arnparse";
     license = licenses.mit;
-    maintainers = with maintainers; [ wolfangaukang ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/arpeggio/default.nix b/pkgs/development/python-modules/arpeggio/default.nix
index b07a7333c878d..cd98f61d4e525 100644
--- a/pkgs/development/python-modules/arpeggio/default.nix
+++ b/pkgs/development/python-modules/arpeggio/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/arpy/default.nix b/pkgs/development/python-modules/arpy/default.nix
index 229e15d24ff34..819d4559dc948 100644
--- a/pkgs/development/python-modules/arpy/default.nix
+++ b/pkgs/development/python-modules/arpy/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,14 +17,12 @@ buildPythonPackage rec {
     hash = "sha256-jD1XJJhcpJymn0CwZ65U06xLKm1JjHffmx/umEO7a5s=";
   };
 
-  checkInputs = [
-    unittestCheckHook
-  ];
+  checkInputs = [ unittestCheckHook ];
 
   pythonImportsCheck = [ "arpy" ];
 
   meta = with lib; {
-    description = "A library for accessing the archive files and reading the contents";
+    description = "Library for accessing the archive files and reading the contents";
     homepage = "https://github.com/viraptor/arpy";
     license = licenses.bsd2;
     maintainers = with maintainers; [ thornycrackers ];
diff --git a/pkgs/development/python-modules/array-api-compat/default.nix b/pkgs/development/python-modules/array-api-compat/default.nix
new file mode 100644
index 0000000000000..6de3c073b43a1
--- /dev/null
+++ b/pkgs/development/python-modules/array-api-compat/default.nix
@@ -0,0 +1,59 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+  numpy,
+  jaxlib,
+  jax,
+  torch,
+  dask,
+  sparse,
+  array-api-strict,
+  config,
+  cudaSupport ? config.cudaSupport,
+  cupy,
+}:
+
+buildPythonPackage rec {
+  pname = "array-api-compat";
+  version = "1.8";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "data-apis";
+    repo = "array-api-compat";
+    rev = "refs/tags/${version}";
+    hash = "sha256-DZs51yWgeMX7lmzR6jily0S3MRD4AVlk7BP8aU99Zp8=";
+  };
+
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    numpy
+    jaxlib
+    jax
+    torch
+    dask
+    sparse
+    array-api-strict
+  ] ++ lib.optionals cudaSupport [ cupy ];
+
+  pythonImportsCheck = [ "array_api_compat" ];
+
+  # CUDA (used via cupy) is not available in the testing sandbox
+  pytestFlagsArray = [
+    "-k"
+    "'not cupy'"
+  ];
+
+  meta = {
+    homepage = "https://data-apis.org/array-api-compat";
+    changelog = "https://github.com/data-apis/array-api-compat/releases/tag/${version}";
+    description = "Compatibility layer for NumPy to support the Python array API";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ berquist ];
+  };
+}
diff --git a/pkgs/development/python-modules/array-api-strict/default.nix b/pkgs/development/python-modules/array-api-strict/default.nix
new file mode 100644
index 0000000000000..7450717251b2e
--- /dev/null
+++ b/pkgs/development/python-modules/array-api-strict/default.nix
@@ -0,0 +1,46 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  numpy,
+  pytestCheckHook,
+  hypothesis,
+}:
+
+buildPythonPackage rec {
+  pname = "array-api-strict";
+  version = "2.0.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "data-apis";
+    repo = "array-api-strict";
+    rev = "refs/tags/${version}";
+    hash = "sha256-sGuMhtxhXXFD6KAiujuWdDe2+gKYN3ijiXvi07a2AgA=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ numpy ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    hypothesis
+  ];
+
+  pythonImportsCheck = [ "array_api_strict" ];
+
+  disabledTests = [
+    "test_disabled_extensions"
+    "test_environment_variables"
+  ];
+
+  meta = {
+    homepage = "https://data-apis.org/array-api-strict";
+    changelog = "https://github.com/data-apis/array-api-strict/releases/tag/${version}";
+    description = "A strict, minimal implementation of the Python array API";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ berquist ];
+  };
+}
diff --git a/pkgs/development/python-modules/array-record/default.nix b/pkgs/development/python-modules/array-record/default.nix
index c37eec6baba02..83385b535429d 100644
--- a/pkgs/development/python-modules/array-record/default.nix
+++ b/pkgs/development/python-modules/array-record/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, pythonAtLeast
-, python
-, fetchPypi
-, absl-py
-, etils
-, importlib-resources
-, typing-extensions
-, zipp
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  pythonAtLeast,
+  python,
+  fetchPypi,
+  absl-py,
+  etils,
+  importlib-resources,
+  typing-extensions,
+  zipp,
 }:
 
 buildPythonPackage rec {
@@ -19,21 +20,25 @@ buildPythonPackage rec {
   # As of 2023-10-31, PyPI includes wheels for Python 3.9, 3.10, and 3.11.
   disabled = pythonOlder "3.9" || pythonAtLeast "3.12";
 
-  src = let
-    pyShortVersion = "cp${builtins.replaceStrings ["."] [""] python.pythonVersion}";
-  in fetchPypi {
-    inherit version format;
-    pname = "array_record";
-    dist = pyShortVersion;
-    python = pyShortVersion;
-    abi = pyShortVersion;
-    platform = "manylinux_2_17_x86_64.manylinux2014_x86_64";
-    hash = {
-      cp39 = "sha256-BzMOVue7E1S1+5+XTcPELko81ujc9MbmqLhNsU7pqO0=";
-      cp310 = "sha256-eUD9pQu9GsbV8MPD1MiF3Ihr+zYioSOo6P15hYIwPYo=";
-      cp311 = "sha256-rAmkI3EIZPYiXrxFowfDC0Gf3kRw0uX0i6Kx6Zu+hNM=";
-    }.${pyShortVersion} or (throw "${pname} is missing hash for ${pyShortVersion}");
-  };
+  src =
+    let
+      pyShortVersion = "cp${builtins.replaceStrings [ "." ] [ "" ] python.pythonVersion}";
+    in
+    fetchPypi {
+      inherit version format;
+      pname = "array_record";
+      dist = pyShortVersion;
+      python = pyShortVersion;
+      abi = pyShortVersion;
+      platform = "manylinux_2_17_x86_64.manylinux2014_x86_64";
+      hash =
+        {
+          cp39 = "sha256-BzMOVue7E1S1+5+XTcPELko81ujc9MbmqLhNsU7pqO0=";
+          cp310 = "sha256-eUD9pQu9GsbV8MPD1MiF3Ihr+zYioSOo6P15hYIwPYo=";
+          cp311 = "sha256-rAmkI3EIZPYiXrxFowfDC0Gf3kRw0uX0i6Kx6Zu+hNM=";
+        }
+        .${pyShortVersion} or (throw "${pname} is missing hash for ${pyShortVersion}");
+    };
 
   propagatedBuildInputs = [
     absl-py
diff --git a/pkgs/development/python-modules/arrayqueues/default.nix b/pkgs/development/python-modules/arrayqueues/default.nix
index 48207c8e659f6..a2bd69bf3a19a 100644
--- a/pkgs/development/python-modules/arrayqueues/default.nix
+++ b/pkgs/development/python-modules/arrayqueues/default.nix
@@ -1,5 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  numpy,
 }:
 
 buildPythonPackage rec {
@@ -10,12 +14,10 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-7I+5BQO/gsvTREDkBfxrMblw3JPfY48S4KI4PCGPtFY=";
+    hash = "sha256-7I+5BQO/gsvTREDkBfxrMblw3JPfY48S4KI4PCGPtFY=";
   };
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   meta = {
     homepage = "https://github.com/portugueslab/arrayqueues";
diff --git a/pkgs/development/python-modules/arris-tg2492lg/default.nix b/pkgs/development/python-modules/arris-tg2492lg/default.nix
index e44aec28aed79..c966fd1ac7ce3 100644
--- a/pkgs/development/python-modules/arris-tg2492lg/default.nix
+++ b/pkgs/development/python-modules/arris-tg2492lg/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-MQq9jMUoJgqaY0f9YIbhME2kO+ektPqBnT9REg3qDpg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   nativeCheckInputs = [
     pytest-aiohttp
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "arris_tg2492lg"
-  ];
+  pythonImportsCheck = [ "arris_tg2492lg" ];
 
   meta = with lib; {
     description = "Library to connect to an Arris TG2492LG";
diff --git a/pkgs/development/python-modules/arrow/default.nix b/pkgs/development/python-modules/arrow/default.nix
index 77aa1f6ca4ac0..57645904f79f1 100644
--- a/pkgs/development/python-modules/arrow/default.nix
+++ b/pkgs/development/python-modules/arrow/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, flit-core
-, python-dateutil
-, types-python-dateutil
-, pytestCheckHook
-, pytest-mock
-, pytz
-, simplejson
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  flit-core,
+  python-dateutil,
+  types-python-dateutil,
+  pytestCheckHook,
+  pytest-mock,
+  pytz,
+  simplejson,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     sed -i "/addopts/d" tox.ini
   '';
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     python-dateutil
@@ -45,9 +44,7 @@ buildPythonPackage rec {
   ];
 
   # ParserError: Could not parse timezone expression "America/Nuuk"
-  disabledTests = [
-    "test_parse_tz_name_zzz"
-  ];
+  disabledTests = [ "test_parse_tz_name_zzz" ];
 
   pythonImportsCheck = [ "arrow" ];
 
diff --git a/pkgs/development/python-modules/arsenic/default.nix b/pkgs/development/python-modules/arsenic/default.nix
index 2d742f943f79c..8d7ab341c9d2b 100644
--- a/pkgs/development/python-modules/arsenic/default.nix
+++ b/pkgs/development/python-modules/arsenic/default.nix
@@ -7,7 +7,6 @@
   fetchpatch,
   packaging,
   poetry-core,
-  pythonRelaxDepsHook,
   pythonOlder,
   structlog,
 }:
@@ -43,7 +42,6 @@ buildPythonPackage rec {
 
   pythonRelaxDeps = [ "structlog" ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   build-system = [ poetry-core ];
 
diff --git a/pkgs/development/python-modules/art/default.nix b/pkgs/development/python-modules/art/default.nix
index c1fbd475bc07f..b0d50295a8aac 100644
--- a/pkgs/development/python-modules/art/default.nix
+++ b/pkgs/development/python-modules/art/default.nix
@@ -1,20 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "art";
-  version = "6.1";
-  format = "setuptools";
+  version = "6.3";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "sepandhaghighi";
     repo = "art";
-    rev = "v${version}";
-    hash = "sha256-RJexYOGWwAwxQ7lWGgXzFSR2aly1twB9pC4QFs5m7k8=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-9kz6uyLdcrQqgWzT9g2qI9a+IituY/OFmbot+HlQsCE=";
   };
 
+  build-system = [ setuptools ];
+
   pythonImportsCheck = [ "art" ];
 
   # TypeError: art() missing 1 required positional argument: 'artname'
diff --git a/pkgs/development/python-modules/arviz/default.nix b/pkgs/development/python-modules/arviz/default.nix
index b7860aa5dc30c..754ea282e83a2 100644
--- a/pkgs/development/python-modules/arviz/default.nix
+++ b/pkgs/development/python-modules/arviz/default.nix
@@ -1,39 +1,46 @@
-{ lib
-, buildPythonPackage
-, dm-tree
-, fetchFromGitHub
-, emcee
-, h5netcdf
-, matplotlib
-, netcdf4
-, numba
-, numpy
-, pandas
-, setuptools
-, cloudpickle
-, pytestCheckHook
-, scipy
-, packaging
-, pythonOlder
-, typing-extensions
-, xarray
-, xarray-einstats
-, zarr
-, ffmpeg
-, h5py
-, jaxlib
-, torchvision
-, jax
-  # , pymc3 (circular dependency)
-, pyro-ppl
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  packaging,
+  setuptools,
+
+  # dependencies
+  dm-tree,
+  h5netcdf,
+  matplotlib,
+  numpy,
+  pandas,
+  scipy,
+  typing-extensions,
+  xarray,
+  xarray-einstats,
+
+  # checks
+  bokeh,
+  cloudpickle,
+  emcee,
+  ffmpeg,
+  h5py,
+  jax,
+  jaxlib,
+  numba,
+  numpyro,
+  #, pymc3 (circular dependency)
+  pyro-ppl,
   #, pystan (not packaged)
-, numpyro
-, bokeh
+  pytestCheckHook,
+  torchvision,
+  zarr,
 }:
 
 buildPythonPackage rec {
   pname = "arviz";
-  version = "0.18.0";
+  version = "0.19.0";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -42,7 +49,7 @@ buildPythonPackage rec {
     owner = "arviz-devs";
     repo = "arviz";
     rev = "refs/tags/v${version}";
-    hash = "sha256-SZRqSqChQBSA9/jBXN2ds9hh6TI3qZksHai1j2oVsq0=";
+    hash = "sha256-fwDCl1KWClIOBWIL/ETw3hJUyHdpVpLnRmZoZXL3QXI=";
   };
 
   build-system = [
@@ -54,7 +61,6 @@ buildPythonPackage rec {
     dm-tree
     h5netcdf
     matplotlib
-    netcdf4
     numpy
     pandas
     scipy
@@ -64,6 +70,7 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
+    bokeh
     cloudpickle
     emcee
     ffmpeg
@@ -78,16 +85,13 @@ buildPythonPackage rec {
     pytestCheckHook
     torchvision
     zarr
-    bokeh
   ];
 
   preCheck = ''
     export HOME=$(mktemp -d);
   '';
 
-  pytestFlagsArray = [
-    "arviz/tests/base_tests/"
-  ];
+  pytestFlagsArray = [ "arviz/tests/base_tests/" ];
 
   disabledTests = [
     # Tests require network access
@@ -99,26 +103,18 @@ buildPythonPackage rec {
     "test_plot_kde"
     "test_plot_kde_2d"
     "test_plot_pair"
-    # Array mismatch
-    "test_plot_ts"
-    # The following two tests fail in a common venv-based setup.
-    # An issue has been opened upstream: https://github.com/arviz-devs/arviz/issues/2282
-    "test_plot_ppc_discrete"
-    "test_plot_ppc_discrete_save_animation"
-    # Assertion error
-    "test_data_zarr"
-    "test_plot_forest"
   ];
 
-  pythonImportsCheck = [
-    "arviz"
-  ];
+  # Tests segfault on darwin
+  doCheck = !stdenv.isDarwin;
+
+  pythonImportsCheck = [ "arviz" ];
 
-  meta = with lib; {
+  meta = {
     description = "Library for exploratory analysis of Bayesian models";
     homepage = "https://arviz-devs.github.io/arviz/";
     changelog = "https://github.com/arviz-devs/arviz/blob/v${version}/CHANGELOG.md";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ omnipotententity ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ omnipotententity ];
   };
 }
diff --git a/pkgs/development/python-modules/arxiv2bib/default.nix b/pkgs/development/python-modules/arxiv2bib/default.nix
index a60642a114890..889159ccff34d 100644
--- a/pkgs/development/python-modules/arxiv2bib/default.nix
+++ b/pkgs/development/python-modules/arxiv2bib/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, lib
-, fetchFromGitHub
-, mock
-, unittestCheckHook
+{
+  buildPythonPackage,
+  lib,
+  fetchFromGitHub,
+  mock,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,8 +19,14 @@ buildPythonPackage rec {
     sha256 = "1kp2iyx20lpc9dv4qg5fgwf83a1wx6f7hj1ldqyncg0kn9xcrhbg";
   };
 
-  nativeCheckInputs = [ unittestCheckHook mock ];
-  unittestFlagsArray = [ "-s" "tests" ];
+  nativeCheckInputs = [
+    unittestCheckHook
+    mock
+  ];
+  unittestFlagsArray = [
+    "-s"
+    "tests"
+  ];
 
   meta = with lib; {
     description = "Get a BibTeX entry from an arXiv id number, using the arxiv.org API";
diff --git a/pkgs/development/python-modules/asana/default.nix b/pkgs/development/python-modules/asana/default.nix
index a37a70844d6eb..1dd20ac22d828 100644
--- a/pkgs/development/python-modules/asana/default.nix
+++ b/pkgs/development/python-modules/asana/default.nix
@@ -1,18 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-oauthlib
-, responses
-, six
+{
+  lib,
+  buildPythonPackage,
+  certifi,
+  fetchFromGitHub,
+  pytestCheckHook,
+  python-dateutil,
+  python-dotenv,
+  pythonOlder,
+  setuptools,
+  six,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "asana";
-  version = "5.0.3";
-  format = "setuptools";
+  version = "5.0.10";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -20,22 +23,26 @@ buildPythonPackage rec {
     owner = "asana";
     repo = "python-asana";
     rev = "refs/tags/v${version}";
-    hash = "sha256-9F63DvwMh9NwlTqFuhiXfgRRRxAFjjRYmYzsuOhlQJ0=";
+    hash = "sha256-nuBvRqrs00OIY3UzN7bF5dB15TZqeE43o1BIpBaJZcQ=";
   };
 
-  propagatedBuildInputs = [
-    requests
-    requests-oauthlib
+  build-system = [ setuptools ];
+
+  dependencies = [
+    certifi
     six
+    python-dateutil
+    python-dotenv
+    urllib3
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-    responses
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "asana" ];
 
-  pythonImportsCheck = [
-    "asana"
+  disabledTestPaths = [
+    # Tests require network access
+    "build_tests/"
   ];
 
   meta = with lib; {
@@ -43,6 +50,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/asana/python-asana";
     changelog = "https://github.com/Asana/python-asana/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ascii-magic/default.nix b/pkgs/development/python-modules/ascii-magic/default.nix
index 0c876d756ebef..8f7b5ae5c4284 100644
--- a/pkgs/development/python-modules/ascii-magic/default.nix
+++ b/pkgs/development/python-modules/ascii-magic/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, colorama
-, fetchPypi
-, pillow
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  colorama,
+  fetchPypi,
+  pillow,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,13 +26,9 @@ buildPythonPackage rec {
     pillow
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ascii_magic"
-  ];
+  pythonImportsCheck = [ "ascii_magic" ];
 
   preCheck = ''
     cd tests
diff --git a/pkgs/development/python-modules/asciimatics/default.nix b/pkgs/development/python-modules/asciimatics/default.nix
index 0a9736bebe508..ee536ff7177df 100644
--- a/pkgs/development/python-modules/asciimatics/default.nix
+++ b/pkgs/development/python-modules/asciimatics/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pillow
-, pyfiglet
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
-, wcwidth
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pillow,
+  pyfiglet,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  wcwidth,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-z905gEJydRnYtz5iuO+CwL7P7U60IImcO5bJjQuWgho=";
   };
 
-  build-system = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
   dependencies = [
     pyfiglet
@@ -31,11 +30,9 @@ buildPythonPackage rec {
     wcwidth
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck =  [
+  pythonImportsCheck = [
     "asciimatics.effects"
     "asciimatics.renderers"
     "asciimatics.scene"
diff --git a/pkgs/development/python-modules/asciitree/default.nix b/pkgs/development/python-modules/asciitree/default.nix
index 323e1fbf87394..ab8ec69bef49d 100644
--- a/pkgs/development/python-modules/asciitree/default.nix
+++ b/pkgs/development/python-modules/asciitree/default.nix
@@ -1,28 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "asciitree";
   version = "0.3.3";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "mbr";
-    repo = pname;
+    repo = "asciitree";
     rev = version;
-    sha256 = "071wlpyi8pa262sj9xdy0zbj163z84dasxad363z3sfndqxw78h1";
+    hash = "sha256-AaLDO27W6fGHGU11rRpBf5gg1we+9SS1MEJdFP2lPBw=";
   };
 
-  nativeCheckInputs = [
-    pytest
-  ];
+  build-system = [ setuptools ];
 
-  checkPhase = ''
-    pytest
-  '';
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Draws ASCII trees";
diff --git a/pkgs/development/python-modules/asdf-astropy/default.nix b/pkgs/development/python-modules/asdf-astropy/default.nix
new file mode 100644
index 0000000000000..a883fc87af817
--- /dev/null
+++ b/pkgs/development/python-modules/asdf-astropy/default.nix
@@ -0,0 +1,68 @@
+{
+  lib,
+  asdf-coordinates-schemas,
+  asdf-standard,
+  asdf-transform-schemas,
+  asdf,
+  astropy,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  packaging,
+  pytest-astropy,
+  pytestCheckHook,
+  pythonOlder,
+  scipy,
+  setuptools-scm,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "asdf-astropy";
+  version = "0.6.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "astropy";
+    repo = "asdf-astropy";
+    rev = "refs/tags/${version}";
+    hash = "sha256-dOd9QdBOu7QotRiHkXJoIqaHG6U9odTlRmy22/nvvuw=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    asdf
+    asdf-coordinates-schemas
+    asdf-standard
+    asdf-transform-schemas
+    astropy
+    numpy
+    packaging
+  ];
+
+  nativeCheckInputs = [
+    pytest-astropy
+    pytestCheckHook
+    scipy
+  ];
+
+  pythonImportsCheck = [ "asdf_astropy" ];
+
+  preCheck = ''
+    export HOME=$(mktemp -d)
+  '';
+
+  meta = with lib; {
+    description = "Extension library for ASDF to provide support for Astropy";
+    homepage = "https://github.com/astropy/asdf-astropy";
+    changelog = "https://github.com/astropy/asdf-astropy/blob/${version}/CHANGES.rst";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/asdf-coordinates-schemas/default.nix b/pkgs/development/python-modules/asdf-coordinates-schemas/default.nix
new file mode 100644
index 0000000000000..9b2c103ac13f0
--- /dev/null
+++ b/pkgs/development/python-modules/asdf-coordinates-schemas/default.nix
@@ -0,0 +1,48 @@
+{
+  lib,
+  asdf-standard,
+  asdf,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools-scm,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "asdf-coordinates-schemas";
+  version = "0.3.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "asdf-format";
+    repo = "asdf-coordinates-schemas";
+    rev = "refs/tags/${version}";
+    hash = "sha256-LuC0m25OqQwivK/Z3OfoCtdhBV87rk16XrkJxUxG07o=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    asdf
+    asdf-standard
+  ];
+
+  # Circular dependency with asdf-astropy
+  doCheck = false;
+
+  pythonImportsCheck = [ "asdf_coordinates_schemas" ];
+
+  meta = with lib; {
+    description = "ASDF schemas for coordinates";
+    homepage = "https://github.com/asdf-format/asdf-coordinates-schemas";
+    changelog = "https://github.com/asdf-format/asdf-coordinates-schemas/blob/${version}/CHANGES.rst";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/asdf-standard/default.nix b/pkgs/development/python-modules/asdf-standard/default.nix
index 63586454746bc..15c8191a84653 100644
--- a/pkgs/development/python-modules/asdf-standard/default.nix
+++ b/pkgs/development/python-modules/asdf-standard/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, importlib-resources
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  importlib-resources,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -19,20 +20,14 @@ buildPythonPackage rec {
     hash = "sha256-AVNbwrFb/AnsimLUmZ+c8y3EnccWYMhCVkAij9h3YQI=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.9") [
-    importlib-resources
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.9") [ importlib-resources ];
 
   # Circular dependency on asdf
   doCheck = false;
 
-  pythonImportsCheck = [
-    "asdf_standard"
-  ];
+  pythonImportsCheck = [ "asdf_standard" ];
 
   meta = with lib; {
     description = "Standards document describing ASDF";
diff --git a/pkgs/development/python-modules/asdf-transform-schemas/default.nix b/pkgs/development/python-modules/asdf-transform-schemas/default.nix
index 7adc1705569eb..4a96c06dac39b 100644
--- a/pkgs/development/python-modules/asdf-transform-schemas/default.nix
+++ b/pkgs/development/python-modules/asdf-transform-schemas/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, asdf-standard
-, buildPythonPackage
-, fetchPypi
-, importlib-resources
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  asdf-standard,
+  buildPythonPackage,
+  fetchPypi,
+  importlib-resources,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -20,22 +21,14 @@ buildPythonPackage rec {
     hash = "sha256-gs9MeCV1c0qJUyfyX/WDzpSZ1+K4Nv6IgLLXlhxrRis=";
   };
 
-  build-system = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  dependencies = [
-    asdf-standard
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    importlib-resources
-  ];
+  dependencies = [ asdf-standard ] ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ];
 
   # Circular dependency on asdf
   doCheck = false;
 
-  pythonImportsCheck = [
-    "asdf_transform_schemas"
-  ];
+  pythonImportsCheck = [ "asdf_transform_schemas" ];
 
   meta = with lib; {
     description = "ASDF schemas for validating transform tags";
diff --git a/pkgs/development/python-modules/asdf-wcs-schemas/default.nix b/pkgs/development/python-modules/asdf-wcs-schemas/default.nix
new file mode 100644
index 0000000000000..f59b2cb98803a
--- /dev/null
+++ b/pkgs/development/python-modules/asdf-wcs-schemas/default.nix
@@ -0,0 +1,56 @@
+{
+  lib,
+  asdf-astropy,
+  asdf-coordinates-schemas,
+  asdf-standard,
+  asdf-transform-schemas,
+  asdf,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "asdf-wcs-schemas";
+  version = "0.4.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "asdf-format";
+    repo = "asdf-wcs-schemas";
+    rev = "refs/tags/${version}";
+    hash = "sha256-4CxKLMYXdNkNwkfFRX3YKkS4e+Z3wQgmz8ogbC4Z1vI=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    asdf-coordinates-schemas
+    asdf-standard
+    asdf-transform-schemas
+  ];
+
+  nativeCheckInputs = [
+    asdf
+    asdf-astropy
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "asdf_wcs_schemas" ];
+
+  meta = with lib; {
+    description = "World Coordinate System (WCS) ASDF schemas";
+    homepage = "https://github.com/asdf-format/asdf-wcs-schemas";
+    changelog = "https://github.com/asdf-format/asdf-wcs-schemas/blob/${version}/CHANGES.rst";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/asdf/default.nix b/pkgs/development/python-modules/asdf/default.nix
index a6508229a3f0e..6e936c6635ed6 100644
--- a/pkgs/development/python-modules/asdf/default.nix
+++ b/pkgs/development/python-modules/asdf/default.nix
@@ -1,98 +1,71 @@
-{ lib
-, asdf-standard
-, asdf-transform-schemas
-, astropy
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, importlib-resources
-, jmespath
-, jsonschema
-, lz4
-, numpy
-, packaging
-, pytest-astropy
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, semantic-version
-, setuptools-scm
+{
+  lib,
+  asdf-standard,
+  asdf-transform-schemas,
+  attrs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fsspec,
+  importlib-metadata,
+  jmespath,
+  lz4,
+  numpy,
+  packaging,
+  psutil,
+  pytest-remotedata,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  semantic-version,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "asdf";
-  version = "2.13.0";
-  format = "pyproject";
+  version = "3.2.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
-    owner = "asdf-format/";
-    repo = pname;
+    owner = "asdf-format";
+    repo = "asdf";
     rev = "refs/tags/${version}";
-    hash = "sha256-u8e7ot5NDRqQFH0eLVnGinBQmQD73BlR5K9HVjA7SIg=";
+    hash = "sha256-r+cEv6g7fq3I/h2mlszzJRQcazy7qP9pg0hfYG/Sa9E=";
   };
 
-  patches = [
-    # Fix default validation, https://github.com/asdf-format/asdf/pull/1203
-    (fetchpatch {
-      name = "default-validation.patch";
-      url = "https://github.com/asdf-format/asdf/commit/6f79f620b4632e20178d9bd53528702605d3e976.patch";
-      hash = "sha256-h/dYhXRCf5oIIC+u6+8C91mJnmEzuNmlEzqc0UEhLy0=";
-      excludes = [
-          "CHANGES.rst"
-      ];
-    })
-  ];
-
-  postPatch = ''
-    # https://github.com/asdf-format/asdf/pull/1203
-    substituteInPlace pyproject.toml \
-      --replace "'jsonschema >=4.0.1, <4.10.0'," "'jsonschema >=4.0.1',"
-  '';
-
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     asdf-standard
     asdf-transform-schemas
+    importlib-metadata
     jmespath
-    jsonschema
     numpy
     packaging
     pyyaml
     semantic-version
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    importlib-resources
+    attrs
   ];
 
   nativeCheckInputs = [
-    astropy
+    fsspec
     lz4
-    pytest-astropy
+    psutil
+    pytest-remotedata
     pytestCheckHook
   ];
 
-  preCheck = ''
-    export PY_IGNORE_IMPORTMISMATCH=1
-  '';
-
-  pythonImportsCheck = [
-    "asdf"
-  ];
-
-  disabledTests = [
-    "config.rst"
-  ];
+  pythonImportsCheck = [ "asdf" ];
 
   meta = with lib; {
     description = "Python tools to handle ASDF files";
     homepage = "https://github.com/asdf-format/asdf";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
-    # Many tests fail, according to Hydra
-    broken = true;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ase/default.nix b/pkgs/development/python-modules/ase/default.nix
index ed3c019146e59..dbdcbce067539 100644
--- a/pkgs/development/python-modules/ase/default.nix
+++ b/pkgs/development/python-modules/ase/default.nix
@@ -1,34 +1,69 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, isPy27
-, numpy
-, scipy
-, matplotlib
-, flask
-, pillow
-, psycopg2
+{
+  lib,
+  stdenv,
+  fetchPypi,
+  buildPythonPackage,
+  isPy27,
+  pythonAtLeast,
+  setuptools,
+  numpy,
+  scipy,
+  matplotlib,
+  flask,
+  pillow,
+  psycopg2,
+  tkinter,
+  pytestCheckHook,
+  pytest-mock,
+  pytest-xdist,
 }:
 
 buildPythonPackage rec {
   pname = "ase";
-  version = "3.22.1";
-  format = "setuptools";
+  version = "3.23.0";
+  pyproject = true;
+
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-AE32sOoEsRFMeQ+t/kXUEl6w5TElxmqTQlr4U9gqtDI=";
+    hash = "sha256-kaKqMdib2QsO/f5KfoQmTzKCiyq/yfOOZeBBrXb+yK4=";
   };
 
-  propagatedBuildInputs = [ numpy scipy matplotlib flask pillow psycopg2 ];
+  build-system = [ setuptools ];
 
-  checkPhase = ''
-    $out/bin/ase test
-  '';
+  dependencies = [
+    numpy
+    scipy
+    matplotlib
+    flask
+    pillow
+    psycopg2
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
+    tkinter
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-mock
+    pytest-xdist
+  ];
 
-  # tests just hang most likely due to something with subprocesses and cli
-  doCheck = false;
+  disabledTests = [
+    "test_fundamental_params"
+    "test_ase_bandstructure"
+    "test_imports"
+    "test_units"
+    "test_favicon"
+    "test_vibrations_methods" # missing attribute
+    "test_jmol_roundtrip" # missing attribute
+    "test_pw_input_write_nested_flat" # Did not raise DeprecationWarning
+    "test_fix_scaled" # Did not raise UserWarning
+  ] ++ lib.optionals (pythonAtLeast "3.12") [ "test_info_calculators" ];
+
+  preCheck = ''
+    export PATH="$out/bin:$PATH"
+  '';
 
   pythonImportsCheck = [ "ase" ];
 
@@ -36,6 +71,6 @@ buildPythonPackage rec {
     description = "Atomic Simulation Environment";
     homepage = "https://wiki.fysik.dtu.dk/ase/";
     license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/asf-search/default.nix b/pkgs/development/python-modules/asf-search/default.nix
index f4e06bb8af8da..e2025204fbb70 100644
--- a/pkgs/development/python-modules/asf-search/default.nix
+++ b/pkgs/development/python-modules/asf-search/default.nix
@@ -9,7 +9,6 @@
   pytestCheckHook,
   python-dateutil,
   pythonOlder,
-  pythonRelaxDepsHook,
   pytz,
   remotezip,
   requests-mock,
@@ -21,24 +20,22 @@
 
 buildPythonPackage rec {
   pname = "asf-search";
-  version = "7.0.9";
+  version = "8.0.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "asfadmin";
     repo = "Discovery-asf_search";
     rev = "refs/tags/v${version}";
-    hash = "sha256-CD9Up4h23dplTt51zif+4ZdW0qczRUz2hCOwUOOlS24=";
+    hash = "sha256-mOhY64Csxdc/DYS1OlbstxYEodtpXTVyPwd4B1jrDK8=";
   };
 
   pythonRelaxDeps = [ "tenacity" ];
 
   build-system = [ setuptools-scm ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
-
   dependencies = [
     dateparser
     importlib-metadata
@@ -62,7 +59,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python wrapper for the ASF SearchAPI";
     homepage = "https://github.com/asfadmin/Discovery-asf_search";
-    changelog = "https://github.com/asfadmin/Discovery-asf_search/blob/${version}/CHANGELOG.md";
+    changelog = "https://github.com/asfadmin/Discovery-asf_search/blob/v${version}/CHANGELOG.md";
     license = licenses.bsd3;
     maintainers = with maintainers; [ bzizou ];
   };
diff --git a/pkgs/development/python-modules/asgi-csrf/default.nix b/pkgs/development/python-modules/asgi-csrf/default.nix
index e04eda64ab509..6d2692ca243e1 100644
--- a/pkgs/development/python-modules/asgi-csrf/default.nix
+++ b/pkgs/development/python-modules/asgi-csrf/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, isPy27
-, fetchFromGitHub
-, itsdangerous
-, python-multipart
-, pytestCheckHook
-, starlette
-, httpx
-, pytest-asyncio
+{
+  lib,
+  buildPythonPackage,
+  isPy27,
+  fetchFromGitHub,
+  itsdangerous,
+  python-multipart,
+  pytestCheckHook,
+  starlette,
+  httpx,
+  pytest-asyncio,
 }:
 
 buildPythonPackage rec {
-  version = "0.9";
+  version = "0.10";
   format = "setuptools";
   pname = "asgi-csrf";
   disabled = isPy27;
@@ -20,8 +21,8 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "simonw";
     repo = pname;
-    rev = version;
-    hash = "sha256-mmOsN2mW6eGtapq3xLqHK8hhSD0Gjzp3DsY5AGUlI8g=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-VclgePMQh60xXofrquI3sCyPUPlkV4maZ5yybt+4HCs=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/asgi-lifespan/default.nix b/pkgs/development/python-modules/asgi-lifespan/default.nix
index 05e21d84585f9..97ab68297c218 100644
--- a/pkgs/development/python-modules/asgi-lifespan/default.nix
+++ b/pkgs/development/python-modules/asgi-lifespan/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, setuptools-scm
-, sniffio
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  sniffio,
 }:
 
 buildPythonPackage rec {
@@ -30,16 +31,12 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  dependencies = [
-    sniffio
-  ];
+  dependencies = [ sniffio ];
 
   # Circular dependencies, starlette
   doCheck = false;
 
-  pythonImportsCheck = [
-    "asgi_lifespan"
-  ];
+  pythonImportsCheck = [ "asgi_lifespan" ];
 
   meta = with lib; {
     description = "Programmatic startup/shutdown of ASGI apps";
diff --git a/pkgs/development/python-modules/asgi-logger/default.nix b/pkgs/development/python-modules/asgi-logger/default.nix
index fb79236d784cc..0133515565e27 100644
--- a/pkgs/development/python-modules/asgi-logger/default.nix
+++ b/pkgs/development/python-modules/asgi-logger/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, poetry-core
-, asgiref
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  asgiref,
 }:
 
 buildPythonPackage rec {
@@ -15,18 +16,12 @@ buildPythonPackage rec {
     hash = "sha256-son1ML9J0UMgJCpWdYD/yK0FO6VmfuzifSWpeCLToKo=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
-  propagatedBuildInputs = [
-    asgiref
-  ];
+  nativeBuildInputs = [ poetry-core ];
+  propagatedBuildInputs = [ asgiref ];
 
   # tests are not in the pypi release, and there are no tags/release corresponding to the pypi releases in the github
   doCheck = false;
-  pythonImportsCheck = [
-    "asgi_logger"
-  ];
+  pythonImportsCheck = [ "asgi_logger" ];
 
   meta = with lib; {
     description = "Access logger for ASGI servers";
diff --git a/pkgs/development/python-modules/asgineer/default.nix b/pkgs/development/python-modules/asgineer/default.nix
index c1fae6959a695..f16cb368f4b8c 100644
--- a/pkgs/development/python-modules/asgineer/default.nix
+++ b/pkgs/development/python-modules/asgineer/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -24,10 +25,9 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A really thin ASGI web framework";
+    description = "Really thin ASGI web framework";
     license = licenses.bsd2;
     homepage = "https://asgineer.readthedocs.io";
     maintainers = [ maintainers.matthiasbeyer ];
   };
 }
-
diff --git a/pkgs/development/python-modules/asgiref/default.nix b/pkgs/development/python-modules/asgiref/default.nix
index 11fd868ebd915..1fdb7f50ae31f 100644
--- a/pkgs/development/python-modules/asgiref/default.nix
+++ b/pkgs/development/python-modules/asgiref/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
-  version = "3.7.2";
+  version = "3.8.1";
   pname = "asgiref";
   format = "setuptools";
 
@@ -19,21 +20,17 @@ buildPythonPackage rec {
     owner = "django";
     repo = "asgiref";
     rev = "refs/tags/${version}";
-    hash = "sha256-VW1PBh6+nLMD7qxmL83ymuxCPYKVY3qGKsB7ZiMqMu8=";
+    hash = "sha256-xepMbxglBpHL7mnJYlnvNUgixrFwf/Tc6b1zL4Wy+to=";
   };
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ typing-extensions ];
 
   nativeCheckInputs = [
     pytestCheckHook
     pytest-asyncio
   ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [
-    "test_multiprocessing"
-  ];
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [ "test_multiprocessing" ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -44,6 +41,6 @@ buildPythonPackage rec {
     description = "Reference ASGI adapters and channel layers";
     homepage = "https://github.com/django/asgiref";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/asks/default.nix b/pkgs/development/python-modules/asks/default.nix
index 86c024f0e12db..1bab5a583c1ae 100644
--- a/pkgs/development/python-modules/asks/default.nix
+++ b/pkgs/development/python-modules/asks/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, pythonAtLeast
-, pythonOlder
-, fetchFromGitHub
-, anyio
-, async-generator
-, h11
-, curio
-, overly
-, pytestCheckHook
-, trio
+{
+  lib,
+  buildPythonPackage,
+  pythonAtLeast,
+  pythonOlder,
+  fetchFromGitHub,
+  anyio,
+  async-generator,
+  h11,
+  curio,
+  overly,
+  pytestCheckHook,
+  trio,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/asmog/default.nix b/pkgs/development/python-modules/asmog/default.nix
index a1d8c340ba689..39e77a2a15ba8 100644
--- a/pkgs/development/python-modules/asmog/default.nix
+++ b/pkgs/development/python-modules/asmog/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/asn1/default.nix b/pkgs/development/python-modules/asn1/default.nix
index 4e62df50aff5d..b3591e0610e91 100644
--- a/pkgs/development/python-modules/asn1/default.nix
+++ b/pkgs/development/python-modules/asn1/default.nix
@@ -1,15 +1,17 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, future
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  future,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "asn1";
-  version = "2.7.0";
-  format = "setuptools";
+  version = "2.7.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -17,29 +19,23 @@ buildPythonPackage rec {
     owner = "andrivet";
     repo = "python-asn1";
     rev = "refs/tags/v${version}";
-    hash = "sha256-pXLG2Mkrv6EeJn6Dk+SefzNtrPdQ6of95LbVTKjTADQ=";
+    hash = "sha256-xdkSJIe7qmz0Zu5IZ3Rl/h4v2j3YFrm1gz7lsNQ0ORs=";
   };
 
-  propagatedBuildInputs = [
-    future
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  dependencies = [ future ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace setup.py \
       --replace "enum-compat" ""
   '';
 
-  pytestFlagsArray = [
-    "tests/test_asn1.py"
-  ];
+  pytestFlagsArray = [ "tests/test_asn1.py" ];
 
-  pythonImportsCheck = [
-    "asn1"
-  ];
+  pythonImportsCheck = [ "asn1" ];
 
   meta = with lib; {
     description = "Python ASN.1 encoder and decoder";
diff --git a/pkgs/development/python-modules/asn1ate/default.nix b/pkgs/development/python-modules/asn1ate/default.nix
index fbad415431dc5..0a1032259c84d 100644
--- a/pkgs/development/python-modules/asn1ate/default.nix
+++ b/pkgs/development/python-modules/asn1ate/default.nix
@@ -1,9 +1,14 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pyparsing }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyparsing,
+}:
 
 buildPythonPackage rec {
   pname = "asn1ate";
   format = "setuptools";
-  version= "0.6";
+  version = "0.6";
 
   src = fetchFromGitHub {
     sha256 = "1p8hv4gsyqsdr0gafcq497n52pybiqmc22di8ai4nsj60fv0km45";
diff --git a/pkgs/development/python-modules/asn1crypto/default.nix b/pkgs/development/python-modules/asn1crypto/default.nix
index a10ad81c18233..4fb33a866a609 100644
--- a/pkgs/development/python-modules/asn1crypto/default.nix
+++ b/pkgs/development/python-modules/asn1crypto/default.nix
@@ -1,28 +1,33 @@
-{ lib
-, buildPythonPackage
-, python
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  python,
+  fetchFromGitHub,
 
-# build system
-, setuptools
+  # build system
+  setuptools,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 # Switch version based on python version, as the situation isn't easy:
 #   https://github.com/wbond/asn1crypto/issues/269
 #   https://github.com/MatthiasValvekens/certomancer/issues/12
 let
-  provenance = if lib.versionOlder python.version "3.12" then rec {
-    version = "1.5.1";
-    rev = version;
-    hash = "sha256-M8vASxhaJPgkiTrAckxz7gk/QHkrFlNz7fFbnLEBT+M=";
-  } else {
-    version = "1.5.1-unstable-2023-11-03";
-    rev = "b763a757bb2bef2ab63620611ddd8006d5e9e4a2";
-    hash = "sha256-11WajEDtisiJsKQjZMSd5sDog3DuuBzf1PcgSY+uuXY=";
-  };
+  provenance =
+    if lib.versionOlder python.version "3.12" then
+      rec {
+        version = "1.5.1";
+        rev = version;
+        hash = "sha256-M8vASxhaJPgkiTrAckxz7gk/QHkrFlNz7fFbnLEBT+M=";
+      }
+    else
+      {
+        version = "1.5.1-unstable-2023-11-03";
+        rev = "b763a757bb2bef2ab63620611ddd8006d5e9e4a2";
+        hash = "sha256-11WajEDtisiJsKQjZMSd5sDog3DuuBzf1PcgSY+uuXY=";
+      };
 in
 
 buildPythonPackage rec {
@@ -37,13 +42,9 @@ buildPythonPackage rec {
     inherit (provenance) rev hash;
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = {
     description = "Fast ASN.1 parser and serializer with definitions for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP";
diff --git a/pkgs/development/python-modules/asn1tools/default.nix b/pkgs/development/python-modules/asn1tools/default.nix
index b339739afcab4..cd0b3a0895bbf 100644
--- a/pkgs/development/python-modules/asn1tools/default.nix
+++ b/pkgs/development/python-modules/asn1tools/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, bitstruct
-, buildPythonPackage
-, diskcache
-, fetchFromGitHub
-, prompt-toolkit
-, pyparsing
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  bitstruct,
+  buildPythonPackage,
+  diskcache,
+  fetchFromGitHub,
+  prompt-toolkit,
+  pyparsing,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-TWAOML6nsLX3TYqoQ9fcSjrUmC4byXOfczfkmSaSa0k=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     bitstruct
@@ -35,12 +34,8 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-depdendencies = {
-    shell = [
-      prompt-toolkit
-    ];
-    cache = [
-      diskcache
-    ];
+    shell = [ prompt-toolkit ];
+    cache = [ diskcache ];
   };
 
   nativeCheckInputs = [
@@ -48,9 +43,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ lib.flatten (builtins.attrValues passthru.optional-depdendencies);
 
-  pythonImportsCheck = [
-    "asn1tools"
-  ];
+  pythonImportsCheck = [ "asn1tools" ];
 
   disabledTests = [
     # assert exact error message of pyparsing which changed and no longer matches
@@ -64,6 +57,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/eerimoq/asn1tools";
     changelog = "https://github.com/eerimoq/asn1tools/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/aspectlib/default.nix b/pkgs/development/python-modules/aspectlib/default.nix
index 3f4a87e0a334e..752484f21374a 100644
--- a/pkgs/development/python-modules/aspectlib/default.nix
+++ b/pkgs/development/python-modules/aspectlib/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, fetchpatch
-, setuptools
-, fields
-, process-tests
-, pytestCheckHook
-, tornado
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  fetchpatch,
+  setuptools,
+  fields,
+  process-tests,
+  pytestCheckHook,
+  tornado,
 }:
 
 buildPythonPackage rec {
@@ -32,13 +33,9 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    fields
-  ];
+  propagatedBuildInputs = [ fields ];
 
   pythonImportsCheck = [
     "aspectlib"
@@ -53,9 +50,7 @@ buildPythonPackage rec {
     tornado
   ];
 
-  pytestFlagsArray = [
-    "-W ignore::DeprecationWarning"
-  ];
+  pytestFlagsArray = [ "-W ignore::DeprecationWarning" ];
 
   __darwinAllowLocalNetworking = true;
 
diff --git a/pkgs/development/python-modules/aspell-python/default.nix b/pkgs/development/python-modules/aspell-python/default.nix
index 1af34b43fc291..3f66a9a2bf5dd 100644
--- a/pkgs/development/python-modules/aspell-python/default.nix
+++ b/pkgs/development/python-modules/aspell-python/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, aspell
-, aspellDicts
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, pytestCheckHook
-, pythonAtLeast
+{
+  lib,
+  aspell,
+  aspellDicts,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  pytestCheckHook,
+  pythonAtLeast,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aspell-python";
   version = "1.15";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = isPy27;
 
@@ -22,22 +24,18 @@ buildPythonPackage rec {
     hash = "sha256-IEKRDmQY5fOH9bQk0dkUAy7UzpBOoZW4cNtVvLMcs40=";
   };
 
-  buildInputs = [
-    aspell
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  buildInputs = [ aspell ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export ASPELL_CONF="dict-dir ${aspellDicts.en}/lib/aspell"
     export HOME=$(mktemp -d)
   '';
 
-  pytestFlagsArray = [
-    "test/unittests.py"
-  ];
+  pytestFlagsArray = [ "test/unittests.py" ];
 
   disabledTests = lib.optionals (pythonAtLeast "3.10") [
     # https://github.com/WojciechMula/aspell-python/issues/22
@@ -46,14 +44,12 @@ buildPythonPackage rec {
     "test_saveall"
   ];
 
-  pythonImportsCheck = [
-    "aspell"
-  ];
+  pythonImportsCheck = [ "aspell" ];
 
   meta = with lib; {
     description = "Python wrapper for aspell (C extension and Python version)";
     homepage = "https://github.com/WojciechMula/aspell-python";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/aspy-refactor-imports/default.nix b/pkgs/development/python-modules/aspy-refactor-imports/default.nix
index 9ba679225da25..dbc97cca6efb4 100644
--- a/pkgs/development/python-modules/aspy-refactor-imports/default.nix
+++ b/pkgs/development/python-modules/aspy-refactor-imports/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, stdenv
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  stdenv,
 }:
 
 buildPythonPackage rec {
@@ -19,19 +20,15 @@ buildPythonPackage rec {
     sha256 = "MlCM3zNTQZJ1RWrTQG0AN28RUepWINKCeLENykbu2nw=";
   };
 
-  pythonImportsCheck = [
-    "aspy.refactor_imports"
-  ];
+  pythonImportsCheck = [ "aspy.refactor_imports" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # fails on darwin due to case-insensitive file system
-  disabledTests = lib.optionals stdenv.isDarwin ["test_application_directory_case"];
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [ "test_application_directory_case" ];
 
   meta = with lib; {
-    description = "Utilities for refactoring imports in python-like syntax.";
+    description = "Utilities for refactoring imports in python-like syntax";
     homepage = "https://github.com/asottile/aspy.refactor_imports";
     license = licenses.mit;
     maintainers = with maintainers; [ gador ];
diff --git a/pkgs/development/python-modules/aspy-yaml/default.nix b/pkgs/development/python-modules/aspy-yaml/default.nix
index 732d19be0d10c..5387b50c108d4 100644
--- a/pkgs/development/python-modules/aspy-yaml/default.nix
+++ b/pkgs/development/python-modules/aspy-yaml/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pyyaml }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyyaml,
+}:
 
 buildPythonPackage rec {
   pname = "aspy-yaml";
@@ -17,7 +22,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A few extensions to pyyaml";
+    description = "Few extensions to pyyaml";
     homepage = "https://github.com/asottile/aspy.yaml";
     license = licenses.mit;
   };
diff --git a/pkgs/development/python-modules/assay/default.nix b/pkgs/development/python-modules/assay/default.nix
index 35dce9a454a24..b71a3b9be0900 100644
--- a/pkgs/development/python-modules/assay/default.nix
+++ b/pkgs/development/python-modules/assay/default.nix
@@ -1,15 +1,20 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonAtLeast }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonAtLeast,
+}:
 
 buildPythonPackage rec {
   pname = "assay";
-  version = "unstable-2022-01-19";
+  version = "0-unstable-2024-05-09";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "brandon-rhodes";
     repo = pname;
-    rev = "bb62d1f7d51d798b05a88045fff3a2ff92c299c3";
-    hash = "sha256-FuAD74mFJ9F9AMgB3vPmODAlZKgPR7FQ4yn7HEBS5Rw=";
+    rev = "74617d70e77afa09f58b3169cf496679ac5d5621";
+    hash = "sha256-zYpLtcXZ16EJWKSCqxFkSz/G9PwIZEQGBrYiJKuqnc4=";
   };
 
   pythonImportsCheck = [ "assay" ];
@@ -19,6 +24,5 @@ buildPythonPackage rec {
     description = "Attempt to write a Python testing framework I can actually stand";
     license = licenses.mit;
     maintainers = with maintainers; [ zane ];
-    broken = pythonAtLeast "3.11";
   };
 }
diff --git a/pkgs/development/python-modules/assertpy/default.nix b/pkgs/development/python-modules/assertpy/default.nix
index de900c368da18..e45e59409c724 100644
--- a/pkgs/development/python-modules/assertpy/default.nix
+++ b/pkgs/development/python-modules/assertpy/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,13 +17,9 @@ buildPythonPackage rec {
     sha256 = "0hnfh45cmqyp7zasrllwf8gbq3mazqlhhk0sq1iqlh6fig0yfq2f";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "assertpy"
-  ];
+  pythonImportsCheck = [ "assertpy" ];
 
   meta = with lib; {
     description = "Simple assertion library for unit testing with a fluent API";
diff --git a/pkgs/development/python-modules/asterisk-mbox/default.nix b/pkgs/development/python-modules/asterisk-mbox/default.nix
index 0a08dc737449a..7b6af81ba0339 100644
--- a/pkgs/development/python-modules/asterisk-mbox/default.nix
+++ b/pkgs/development/python-modules/asterisk-mbox/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch2
-, setuptools
-, packaging
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch2,
+  setuptools,
+  packaging,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    packaging
-  ];
+  propagatedBuildInputs = [ packaging ];
 
   # no tests implemented
   doCheck = false;
@@ -40,7 +37,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "asterisk_mbox" ];
 
   meta = with lib; {
-    description = "The client side of a client/server to interact with Asterisk voicemail mailboxes";
+    description = "Client side of a client/server to interact with Asterisk voicemail mailboxes";
     homepage = "https://github.com/PhracturedBlue/asterisk_mbox";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/pkgs/development/python-modules/asteroid-filterbanks/default.nix b/pkgs/development/python-modules/asteroid-filterbanks/default.nix
index 3a22c0fb5132e..9c41816421752 100644
--- a/pkgs/development/python-modules/asteroid-filterbanks/default.nix
+++ b/pkgs/development/python-modules/asteroid-filterbanks/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, black
-, codecov
-, coverage
-, librosa
-, numpy
-, pre-commit
-, pytest
-, scipy
-, torch
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  black,
+  codecov,
+  coverage,
+  librosa,
+  numpy,
+  pre-commit,
+  pytest,
+  scipy,
+  torch,
 }:
 
 buildPythonPackage rec {
@@ -46,7 +47,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "asteroid_filterbanks" ];
 
   meta = with lib; {
-    description = "The PyTorch-based audio source separation toolkit for researchers";
+    description = "PyTorch-based audio source separation toolkit for researchers";
     homepage = "https://github.com/asteroid-team/asteroid-filterbanks";
     license = licenses.mit;
     maintainers = with maintainers; [ matthewcroughan ];
diff --git a/pkgs/development/python-modules/asteval/default.nix b/pkgs/development/python-modules/asteval/default.nix
index d625dfe3448ed..43872ff90ed34 100644
--- a/pkgs/development/python-modules/asteval/default.nix
+++ b/pkgs/development/python-modules/asteval/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "asteval";
-  version = "0.9.32";
+  version = "1.0.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,12 +18,12 @@ buildPythonPackage rec {
     owner = "lmfit";
     repo = "asteval";
     rev = "refs/tags/${version}";
-    hash = "sha256-3eML5lEKEUlp3Fwdgvk31an83x8no5ichskKvzYJDsE=";
+    hash = "sha256-rq8qZqTtnKyVclX5R+yRouLz1FySRgc7DMN9W9UBkyI=";
   };
 
   postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace-fail " --cov=asteval --cov-report xml" ""
+    substituteInPlace pyproject.toml \
+      --replace-fail "--cov=asteval --cov-report html" ""
   '';
 
   build-system = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/astor/default.nix b/pkgs/development/python-modules/astor/default.nix
index f69afaf55252c..c13e6d4cfab03 100644
--- a/pkgs/development/python-modules/astor/default.nix
+++ b/pkgs/development/python-modules/astor/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
   };
 
   # disable tests broken with python3.6: https://github.com/berkerpeksag/astor/issues/89
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # https://github.com/berkerpeksag/astor/issues/196
diff --git a/pkgs/development/python-modules/astral/default.nix b/pkgs/development/python-modules/astral/default.nix
index 40f66dc26ab47..c6831e4473cb9 100644
--- a/pkgs/development/python-modules/astral/default.nix
+++ b/pkgs/development/python-modules/astral/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 
-# build
-, poetry-core
+  # build
+  poetry-core,
 
-# runtime
-, backports-zoneinfo
+  # runtime
+  backports-zoneinfo,
 
-# tests
-, pytestCheckHook
-, freezegun
+  # tests
+  pytestCheckHook,
+  freezegun,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     hash = "sha256-m3w7QS6eadFyz7JL4Oat3MnxvQGijbi+vmbXXMxTPYg=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.9") [
-    backports-zoneinfo
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.9") [ backports-zoneinfo ];
 
   nativeCheckInputs = [
     freezegun
diff --git a/pkgs/development/python-modules/astroid/default.nix b/pkgs/development/python-modules/astroid/default.nix
index d0b3fe60160aa..200dc13e989ff 100644
--- a/pkgs/development/python-modules/astroid/default.nix
+++ b/pkgs/development/python-modules/astroid/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, typing-extensions
-, pip
-, pylint
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
+  pip,
+  pylint,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "astroid";
-  version = "3.1.0"; # Check whether the version is compatible with pylint
+  version = "3.2.2"; # Check whether the version is compatible with pylint
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,16 +21,12 @@ buildPythonPackage rec {
     owner = "PyCQA";
     repo = "astroid";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+cTQHbqoucaNi7rPoyH6Cu07vZMS8KWn5C/A3NXRSwE=";
+    hash = "sha256-Fc/AjMOz9D9SgkxXvMAhvJcZtj9BsPykg0DX4hEqdB8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.11") [
-    typing-extensions
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.11") [ typing-extensions ];
 
   nativeCheckInputs = [
     pip
@@ -42,7 +39,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     changelog = "https://github.com/PyCQA/astroid/blob/${src.rev}/ChangeLog";
-    description = "An abstract syntax tree for Python with inference support";
+    description = "Abstract syntax tree for Python with inference support";
     homepage = "https://github.com/PyCQA/astroid";
     license = licenses.lgpl21Plus;
     maintainers = with maintainers; [ GaetanLepage ];
diff --git a/pkgs/development/python-modules/astropy-extension-helpers/default.nix b/pkgs/development/python-modules/astropy-extension-helpers/default.nix
index 9f7280185aedd..e398e7c34c2f7 100644
--- a/pkgs/development/python-modules/astropy-extension-helpers/default.nix
+++ b/pkgs/development/python-modules/astropy-extension-helpers/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, findutils
-, pytestCheckHook
-, pythonOlder
-, pip
-, setuptools
-, setuptools-scm
-, tomli
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  findutils,
+  pytestCheckHook,
+  pythonOlder,
+  pip,
+  setuptools,
+  setuptools-scm,
+  tomli,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -40,9 +41,7 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    tomli
-  ];
+  propagatedBuildInputs = [ tomli ];
 
   nativeCheckInputs = [
     findutils
@@ -51,18 +50,14 @@ buildPythonPackage rec {
   ];
 
   # avoid import mismatch errors, as conftest.py is copied to build dir
-  pytestFlagsArray = [
-    "extension_helpers"
-  ];
+  pytestFlagsArray = [ "extension_helpers" ];
 
   disabledTests = [
     # https://github.com/astropy/extension-helpers/issues/43
     "test_write_if_different"
   ];
 
-  pythonImportsCheck = [
-    "extension_helpers"
-  ];
+  pythonImportsCheck = [ "extension_helpers" ];
 
   meta = with lib; {
     description = "Utilities for building and installing packages in the Astropy ecosystem";
diff --git a/pkgs/development/python-modules/astropy-healpix/default.nix b/pkgs/development/python-modules/astropy-healpix/default.nix
index 23db660f951bb..e65d0d2222854 100644
--- a/pkgs/development/python-modules/astropy-healpix/default.nix
+++ b/pkgs/development/python-modules/astropy-healpix/default.nix
@@ -1,30 +1,36 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, numpy
-, astropy
-, astropy-extension-helpers
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, pytest-doctestplus
-, hypothesis
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  astropy,
+  astropy-extension-helpers,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  pytest-doctestplus,
+  hypothesis,
 }:
 
 buildPythonPackage rec {
   pname = "astropy-healpix";
-  version = "1.0.2";
+  version = "1.0.3";
   pyproject = true;
 
   src = fetchPypi {
     inherit version;
-    pname = lib.replaceStrings ["-"] ["_"] pname;
-    hash = "sha256-BW+m7ZOWvtx3HTdNh3zeg9lGCj9ip4/gXb+boDlAMjo=";
+    pname = lib.replaceStrings [ "-" ] [ "_" ] pname;
+    hash = "sha256-3l0qfsl7FnBFBmlx8loVDR5AYfBxWb4jZJY02zbnl0Y=";
   };
 
+  postPatch = ''
+    substituteInPlace pyproject.toml --replace "numpy>=2.0.0rc1" "numpy"
+  '';
+
   nativeBuildInputs = [
     astropy-extension-helpers
+    numpy
     setuptools
     setuptools-scm
   ];
diff --git a/pkgs/development/python-modules/astropy-helpers/default.nix b/pkgs/development/python-modules/astropy-helpers/default.nix
index 0cf6cbda0688c..c803ac0449c37 100644
--- a/pkgs/development/python-modules/astropy-helpers/default.nix
+++ b/pkgs/development/python-modules/astropy-helpers/default.nix
@@ -1,7 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
@@ -9,7 +11,8 @@ buildPythonPackage rec {
   version = "4.0.1";
   format = "setuptools";
 
-  disabled = !isPy3k;
+  # ModuleNotFoundError: No module named 'imp'
+  disabled = !isPy3k || pythonAtLeast "3.12";
 
   doCheck = false; # tests requires sphinx-astropy
 
diff --git a/pkgs/development/python-modules/astropy-iers-data/default.nix b/pkgs/development/python-modules/astropy-iers-data/default.nix
index ae993ba5d520a..e1cdd1febe461 100644
--- a/pkgs/development/python-modules/astropy-iers-data/default.nix
+++ b/pkgs/development/python-modules/astropy-iers-data/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, setuptools-scm
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "astropy-iers-data";
-  version = "0.2024.04.01.00.33.14";
+  version = "0.2024.06.17.00.31.35";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,7 +19,7 @@ buildPythonPackage rec {
     owner = "astropy";
     repo = "astropy-iers-data";
     rev = "refs/tags/v${version}";
-    hash = "sha256-6FHAntN+m0cLDEhWPrcgyD0PgVDOfC8nf4kVl1z8x0g=";
+    hash = "sha256-hFlDXnxhKuhlCFrF+Uip3Xjc9Jt8UFJcDCST90BmAlg=";
   };
 
   nativeBuildInputs = [
@@ -36,6 +37,6 @@ buildPythonPackage rec {
     description = "IERS data maintained by @astrofrog and astropy.utils.iers maintainers";
     homepage = "https://github.com/astropy/astropy-iers-data";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/astropy/default.nix b/pkgs/development/python-modules/astropy/default.nix
index d22420b9fcfe2..c6a7f9fea08be 100644
--- a/pkgs/development/python-modules/astropy/default.nix
+++ b/pkgs/development/python-modules/astropy/default.nix
@@ -1,41 +1,56 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  fetchpatch,
+  buildPythonPackage,
+  pythonOlder,
 
-# build time
-, astropy-extension-helpers
-, cython
-, jinja2
-, oldest-supported-numpy
-, setuptools-scm
-, wheel
-# testing
-, pytestCheckHook
-, stdenv
-, pytest-xdist
-, pytest-astropy
+  # build time
+  astropy-extension-helpers,
+  cython,
+  jinja2,
+  oldest-supported-numpy,
+  setuptools-scm,
+  wheel,
+  # testing
+  pytestCheckHook,
+  stdenv,
+  pytest-xdist,
+  pytest-astropy,
 
-# runtime
-, astropy-iers-data
-, numpy
-, packaging
-, pyerfa
-, pyyaml
+  # runtime
+  astropy-iers-data,
+  numpy,
+  packaging,
+  pyerfa,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
   pname = "astropy";
-  version = "6.0.1";
+  version = "6.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8"; # according to setup.cfg
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ial13jVtBgjnTx9JNEL7Osu7eoW3OeB0RguwNAAUs5w=";
+    hash = "sha256-5cb0XZEcMKy41VbH+O2ZSuxxsQjmHu5QZ/AK8eTjYTg=";
   };
 
+  patches = [
+    (fetchpatch {
+      name = "drop-usage-known-bad-actor-cdn.patch";
+      url = "https://github.com/astropy/astropy/commit/d329cb38e49584ad0ff5244fd2fff74cfa1f92f1.patch";
+      hash = "sha256-+DbDwYeyR+mMDLRB4jiyol/5WO0LwqSCCEwjgflxoTk=";
+    })
+  ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "numpy>=2.0.0"  "numpy"
+  '';
+
   nativeBuildInputs = [
     astropy-extension-helpers
     cython
@@ -66,9 +81,7 @@ buildPythonPackage rec {
     export HOME="$(mktemp -d)"
     export OMP_NUM_THREADS=$(( $NIX_BUILD_CORES / 4 ))
   '';
-  pythonImportsCheck = [
-    "astropy"
-  ];
+  pythonImportsCheck = [ "astropy" ];
   disabledTests = [
     # May fail due to parallelism, see:
     # https://github.com/astropy/astropy/issues/15441
@@ -84,15 +97,18 @@ buildPythonPackage rec {
     "test_sidereal_lon_independent"
     "test_timedelta_full_precision_arithmetic"
     "test_datetime_to_timedelta"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_sidereal_lat_independent"
-  ];
+
+    "test_datetime_difference_agrees_with_timedelta_no_hypothesis"
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ "test_sidereal_lat_independent" ];
 
   meta = {
     description = "Astronomy/Astrophysics library for Python";
     homepage = "https://www.astropy.org";
     license = lib.licenses.bsd3;
     platforms = lib.platforms.all;
-    maintainers = with lib.maintainers; [ kentjames doronbehar ];
+    maintainers = with lib.maintainers; [
+      kentjames
+      doronbehar
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/astroquery/default.nix b/pkgs/development/python-modules/astroquery/default.nix
index 610238559a2ce..7988d75a90447 100644
--- a/pkgs/development/python-modules/astroquery/default.nix
+++ b/pkgs/development/python-modules/astroquery/default.nix
@@ -1,30 +1,33 @@
-{ pkgs
-, buildPythonPackage
-, fetchPypi
-, astropy
-, requests
-, keyring
-, beautifulsoup4
-, html5lib
-, matplotlib
-, pillow
-, pytest
-, pytest-astropy
-, pytestCheckHook
-, pyvo
-, astropy-helpers
-, setuptools
-, isPy3k
+{
+  pkgs,
+  buildPythonPackage,
+  fetchPypi,
+  astropy,
+  requests,
+  keyring,
+  beautifulsoup4,
+  html5lib,
+  matplotlib,
+  pillow,
+  pytest,
+  pytest-astropy,
+  pytest-dependency,
+  pytest-rerunfailures,
+  pytestCheckHook,
+  pyvo,
+  astropy-helpers,
+  setuptools,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
   pname = "astroquery";
-  version = "0.4.6";
+  version = "0.4.7";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-MHylVMtzSgypoi+G9e/+fkE6+ROuZeFXiXLYR7H+E+4=";
+    hash = "sha256-BH+6ywpPrsTNtiZ16RnCRMHDXmYQRPy7bJqTMzF0fsk=";
   };
 
   disabled = !isPy3k;
@@ -38,24 +41,31 @@ buildPythonPackage rec {
     pyvo
   ];
 
-  nativeBuildInputs = [ astropy-helpers setuptools ];
+  nativeBuildInputs = [
+    astropy-helpers
+    setuptools
+  ];
 
   # Disable automatic update of the astropy-helper module
   postPatch = ''
     substituteInPlace setup.cfg --replace "auto_use = True" "auto_use = False"
   '';
 
-  nativeCheckInputs = [
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  checkInputs = [
     matplotlib
     pillow
     pytest
     pytest-astropy
-    pytestCheckHook
+    pytest-dependency
+    pytest-rerunfailures
   ];
 
   pytestFlagsArray = [
     # DeprecationWarning: 'cgi' is deprecated and slated for removal in Python 3.13
-    "-W" "ignore::DeprecationWarning"
+    "-W"
+    "ignore::DeprecationWarning"
   ];
 
   # Tests must be run in the build directory. The tests create files
diff --git a/pkgs/development/python-modules/asttokens/default.nix b/pkgs/development/python-modules/asttokens/default.nix
index 53fe96ff4d03b..a725032d75481 100644
--- a/pkgs/development/python-modules/asttokens/default.nix
+++ b/pkgs/development/python-modules/asttokens/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, setuptools-scm
-, six
-, astroid
-, pytestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools-scm,
+  six,
+  astroid,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-sDhpcYuppusCfhNL/fafOKI21oHIPBYNUQdorxElS6A=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   nativeCheckInputs = [
     astroid
diff --git a/pkgs/development/python-modules/astunparse/default.nix b/pkgs/development/python-modules/astunparse/default.nix
index 54ee47f37d259..77f2cc10ad102 100644
--- a/pkgs/development/python-modules/astunparse/default.nix
+++ b/pkgs/development/python-modules/astunparse/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, six
-, wheel
- }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  six,
+  wheel,
+}:
 
 buildPythonPackage rec {
   pname = "astunparse";
-  version =  "1.6.3";
+  version = "1.6.3";
   format = "setuptools";
 
   src = fetchPypi {
@@ -15,7 +16,10 @@ buildPythonPackage rec {
     sha256 = "5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872";
   };
 
-  propagatedBuildInputs = [ six wheel ];
+  propagatedBuildInputs = [
+    six
+    wheel
+  ];
 
   # tests not included with pypi release
   doCheck = false;
diff --git a/pkgs/development/python-modules/asyauth/default.nix b/pkgs/development/python-modules/asyauth/default.nix
index 3421902ff8309..56b1ad8712bc8 100644
--- a/pkgs/development/python-modules/asyauth/default.nix
+++ b/pkgs/development/python-modules/asyauth/default.nix
@@ -1,26 +1,30 @@
-{ lib
-, asn1crypto
-, asysocks
-, buildPythonPackage
-, fetchPypi
-, minikerberos
-, pythonOlder
-, unicrypto
+{
+  lib,
+  asn1crypto,
+  asysocks,
+  buildPythonPackage,
+  fetchPypi,
+  minikerberos,
+  pythonOlder,
+  setuptools,
+  unicrypto,
 }:
 
 buildPythonPackage rec {
   pname = "asyauth";
-  version = "0.0.20";
-  format = "setuptools";
+  version = "0.0.21";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-QQVgIPdonPXwpVl1nH8Cps4nGb2oTfeDvRBY1XgeUUs=";
+    hash = "sha256-NMwQxfhij/LiW1EW3JjvxcpFUy8WPM0/kUej4C3YEOs=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     asn1crypto
     asysocks
     minikerberos
@@ -30,9 +34,7 @@ buildPythonPackage rec {
   # Project doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "asyauth"
-  ];
+  pythonImportsCheck = [ "asyauth" ];
 
   meta = with lib; {
     description = "Unified authentication library";
diff --git a/pkgs/development/python-modules/async-dns/default.nix b/pkgs/development/python-modules/async-dns/default.nix
index 375e72d24fdda..cbc8f15ed2107 100644
--- a/pkgs/development/python-modules/async-dns/default.nix
+++ b/pkgs/development/python-modules/async-dns/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, python
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  python,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     sha256 = "0vn7hxvpzikd7q61a27fwzal4lwsra2063awyr6fjpy6lh3cjdwf";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   checkPhase = ''
     export HOME=$TMPDIR
diff --git a/pkgs/development/python-modules/async-generator/default.nix b/pkgs/development/python-modules/async-generator/default.nix
index 92c281580d9e8..81efcc00d9ce8 100644
--- a/pkgs/development/python-modules/async-generator/default.nix
+++ b/pkgs/development/python-modules/async-generator/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonAtLeast
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonAtLeast,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,20 +20,19 @@ buildPythonPackage rec {
     hash = "sha256-brs9EGwSkgqq5CzLb3h+9e79zdFm6j1ij6hHar5xIUQ=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = lib.optionals (pythonAtLeast "3.12") [
-    "test_aclose_on_unstarted_generator"
-  ];
+  disabledTests = lib.optionals (pythonAtLeast "3.12") [ "test_aclose_on_unstarted_generator" ];
 
   pythonImportsCheck = [ "async_generator" ];
 
   meta = with lib; {
     description = "Async generators and context managers for Python 3.5+";
     homepage = "https://github.com/python-trio/async_generator";
-    license = with licenses; [ mit asl20 ];
+    license = with licenses; [
+      mit
+      asl20
+    ];
     maintainers = with maintainers; [ dotlambda ];
   };
 }
diff --git a/pkgs/development/python-modules/async-interrupt/default.nix b/pkgs/development/python-modules/async-interrupt/default.nix
index b6e16f54963dd..1d96a8cbd61fa 100644
--- a/pkgs/development/python-modules/async-interrupt/default.nix
+++ b/pkgs/development/python-modules/async-interrupt/default.nix
@@ -1,43 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "async-interrupt";
-  version = "1.1.1";
-  format = "pyproject";
+  version = "1.2.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "bdraco";
     repo = "async_interrupt";
     rev = "refs/tags/v${version}";
-    hash = "sha256-mbvOj1ybCkDNr3je3PtFwmddkh2k/nHOerpC6hGSUYI=";
+    hash = "sha256-opV5h3aLDDpjlRZRZ9OnrPjUOf/i7g+B9T6msk8wtgI=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace " --cov=async_interrupt --cov-report=term-missing:skip-covered" ""
-  '';
-
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   nativeCheckInputs = [
     pytest-asyncio
+    pytest-cov-stub
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "async_interrupt"
-  ];
+  pythonImportsCheck = [ "async_interrupt" ];
 
   meta = with lib; {
     description = "Context manager to raise an exception when a future is done";
diff --git a/pkgs/development/python-modules/async-lru/default.nix b/pkgs/development/python-modules/async-lru/default.nix
index 2f4ef7262acde..91fd5b0b9180c 100644
--- a/pkgs/development/python-modules/async-lru/default.nix
+++ b/pkgs/development/python-modules/async-lru/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, typing-extensions
-, pytestCheckHook
-, pytest-asyncio
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  typing-extensions,
+  pytestCheckHook,
+  pytest-asyncio,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-S2sOkgtS+YdMtVP7UHD3+oR8Fem8roLhhgVVfh33PcM=";
   };
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.11") [
-    typing-extensions
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.11") [ typing-extensions ];
 
   postPatch = ''
     sed -i -e '/^addopts/d' -e '/^filterwarnings/,+2d' setup.cfg
diff --git a/pkgs/development/python-modules/async-modbus/default.nix b/pkgs/development/python-modules/async-modbus/default.nix
index 05d9267443523..24a4b3c30eefb 100644
--- a/pkgs/development/python-modules/async-modbus/default.nix
+++ b/pkgs/development/python-modules/async-modbus/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, connio
-, fetchFromGitHub
-, fetchpatch
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, umodbus
+{
+  lib,
+  buildPythonPackage,
+  connio,
+  fetchFromGitHub,
+  fetchpatch,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  umodbus,
 }:
 
 buildPythonPackage rec {
@@ -39,9 +40,7 @@ buildPythonPackage rec {
       --replace '"--durations=2", "--verbose"' ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     connio
@@ -53,9 +52,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "async_modbus"
-  ];
+  pythonImportsCheck = [ "async_modbus" ];
 
   meta = with lib; {
     description = "Library for Modbus communication";
diff --git a/pkgs/development/python-modules/async-stagger/default.nix b/pkgs/development/python-modules/async-stagger/default.nix
index 379056ad56f3c..51c18ed367739 100644
--- a/pkgs/development/python-modules/async-stagger/default.nix
+++ b/pkgs/development/python-modules/async-stagger/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pytestCheckHook
-, pytest-asyncio
-, pytest-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytestCheckHook,
+  pytest-asyncio,
+  pytest-mock,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
     "test_stagger_coro_gen"
   ];
 
-  pythonImportsCheck = [
-    "async_stagger"
-  ];
+  pythonImportsCheck = [ "async_stagger" ];
 
   meta = with lib; {
     description = "Happy Eyeballs connection algorithm and underlying scheduling logic in asyncio";
diff --git a/pkgs/development/python-modules/async-timeout/default.nix b/pkgs/development/python-modules/async-timeout/default.nix
index 88a6c9e14e34f..bc7c535947c07 100644
--- a/pkgs/development/python-modules/async-timeout/default.nix
+++ b/pkgs/development/python-modules/async-timeout/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-RkDZa+hNgtAu1Z6itxBaD3szq+hwNwPNCrC/h8QnUi8=";
   };
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ typing-extensions ];
 
   # Circular dependency on aiohttp
   doCheck = false;
diff --git a/pkgs/development/python-modules/async-tkinter-loop/default.nix b/pkgs/development/python-modules/async-tkinter-loop/default.nix
index 2d4c0e538a687..b432d359b2a6a 100644
--- a/pkgs/development/python-modules/async-tkinter-loop/default.nix
+++ b/pkgs/development/python-modules/async-tkinter-loop/default.nix
@@ -1,12 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python3Packages
-, poetry-core
-, tkinter
-, typing-extensions
-, pythonRelaxDepsHook
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  tkinter,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +19,6 @@ buildPythonPackage rec {
   };
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     poetry-core
   ];
 
@@ -30,13 +27,9 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  pythonRemoveDeps = [
-    "asyncio"
-  ];
+  pythonRemoveDeps = [ "asyncio" ];
 
-  pythonImportsCheck = [
-    "async_tkinter_loop"
-  ];
+  pythonImportsCheck = [ "async_tkinter_loop" ];
 
   meta = with lib; {
     description = "Implementation of asynchronous mainloop for tkinter, the use of which allows using async handler functions";
diff --git a/pkgs/development/python-modules/async-upnp-client/default.nix b/pkgs/development/python-modules/async-upnp-client/default.nix
index d896a16f5ab6e..d1719497d7ba5 100644
--- a/pkgs/development/python-modules/async-upnp-client/default.nix
+++ b/pkgs/development/python-modules/async-upnp-client/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, aiohttp
-, async-timeout
-, defusedxml
-, python-didl-lite
-, voluptuous
+  # dependencies
+  aiohttp,
+  async-timeout,
+  defusedxml,
+  python-didl-lite,
+  voluptuous,
 
-# tests
-, pytest-aiohttp
-, pytest-asyncio
-, pytestCheckHook
+  # tests
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "async-upnp-client";
-  version = "0.38.3";
+  version = "0.40.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -31,12 +32,12 @@ buildPythonPackage rec {
     owner = "StevenLooman";
     repo = "async_upnp_client";
     rev = "refs/tags/${version}";
-    hash = "sha256-RmpQOVZ/s3Zv2e+iS7LTI5Wh/g0yy0Xv0M8ppsbYZPg=";
+    hash = "sha256-KaX1TNP6IP2wAijR2y9cqI+Pyc+Ygk3LqKwu5Yrv5LM=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  pythonRelaxDeps = [ "defusedxml" ];
+
+  build-system = [ setuptools ];
 
   dependencies = [
     aiohttp
@@ -56,18 +57,14 @@ buildPythonPackage rec {
     # socket.gaierror: [Errno -2] Name or service not known
     "test_async_get_local_ip"
     "test_get_local_ip"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_deferred_callback_url"
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ "test_deferred_callback_url" ];
 
   disabledTestPaths = [
     # Tries to bind to multicast socket and fails to find proper interface
     "tests/test_ssdp_listener.py"
   ];
 
-  pythonImportsCheck = [
-    "async_upnp_client"
-  ];
+  pythonImportsCheck = [ "async_upnp_client" ];
 
   meta = with lib; {
     description = "Asyncio UPnP Client library for Python";
diff --git a/pkgs/development/python-modules/asyncarve/default.nix b/pkgs/development/python-modules/asyncarve/default.nix
new file mode 100644
index 0000000000000..dc760169c215a
--- /dev/null
+++ b/pkgs/development/python-modules/asyncarve/default.nix
@@ -0,0 +1,42 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mashumaro,
+  orjson,
+  aiohttp,
+  yarl,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "asyncarve";
+  version = "0.1.1";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-5h56Sr0kPLrNPU70W90WsjmWax/N90dRMJ6lI5Mg86E=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    mashumaro
+    orjson
+    aiohttp
+    yarl
+  ];
+
+  # No tests in repo
+  doCheck = false;
+
+  pythonImportsCheck = [ "asyncarve" ];
+
+  meta = with lib; {
+    description = "Simple Arve library";
+    homepage = "https://github.com/arvetech/asyncarve";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ pyrox0 ];
+  };
+}
diff --git a/pkgs/development/python-modules/asyncclick/default.nix b/pkgs/development/python-modules/asyncclick/default.nix
index 5847a55f83756..9e5b82197efbd 100644
--- a/pkgs/development/python-modules/asyncclick/default.nix
+++ b/pkgs/development/python-modules/asyncclick/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, anyio
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
-, trio
+{
+  lib,
+  anyio,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
+  trio,
 }:
 
 buildPythonPackage rec {
   pname = "asyncclick";
-  version = "8.1.7.1";
+  version = "8.1.7.2";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     owner = "python-trio";
     repo = "asyncclick";
     rev = "refs/tags/${version}";
-    hash = "sha256-gx7s/HikvjsXalc0Z73JWMKc1SlhR+kohwk2sW4o19I=";
+    hash = "sha256-ahzI7yILq1OpZ6IT0qt8vjzi6I6zAoTrULOl8CqRw4A=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    anyio
-  ];
+  propagatedBuildInputs = [ anyio ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -36,7 +33,8 @@ buildPythonPackage rec {
   ];
 
   pytestFlagsArray = [
-    "-W" "ignore::trio.TrioDeprecationWarning"
+    "-W"
+    "ignore::trio.TrioDeprecationWarning"
   ];
 
   disabledTests = [
@@ -44,9 +42,7 @@ buildPythonPackage rec {
     "test_context_pushing"
   ];
 
-  pythonImportsCheck = [
-    "asyncclick"
-  ];
+  pythonImportsCheck = [ "asyncclick" ];
 
   meta = with lib; {
     description = "Python composable command line utility";
diff --git a/pkgs/development/python-modules/asynccmd/default.nix b/pkgs/development/python-modules/asynccmd/default.nix
index 6234240474297..0cfbf87fc4d3b 100644
--- a/pkgs/development/python-modules/asynccmd/default.nix
+++ b/pkgs/development/python-modules/asynccmd/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/asyncinotify/default.nix b/pkgs/development/python-modules/asyncinotify/default.nix
index 6fe187bfc3cf1..c144b7da381f0 100644
--- a/pkgs/development/python-modules/asyncinotify/default.nix
+++ b/pkgs/development/python-modules/asyncinotify/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "asyncinotify";
-  version = "4.0.6";
+  version = "4.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -17,30 +18,22 @@ buildPythonPackage rec {
     owner = "absperf";
     repo = "asyncinotify";
     rev = "refs/tags/v${version}";
-    hash = "sha256-RXx6i5dIB2oySVaLoHPRGD9VKgiO5OAXmrzVBq8Ad18=";
+    hash = "sha256-SzsPYVA5fBXVcv7vE3FB4jFkIRr6NBlTeHrPxf5d8Ks=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "asyncinotify"
-  ];
+  pythonImportsCheck = [ "asyncinotify" ];
 
-  pytestFlagsArray = [
-    "test.py"
-  ];
+  pytestFlagsArray = [ "test.py" ];
 
   meta = with lib; {
     description = "Module for inotify";
     homepage = "https://github.com/absperf/asyncinotify/";
     changelog = "https://github.com/absperf/asyncinotify/releases/tag/v${version}";
-    license = licenses.mit;
+    license = licenses.mpl20;
     maintainers = with maintainers; [ cynerd ];
   };
 }
diff --git a/pkgs/development/python-modules/asyncio-dgram/default.nix b/pkgs/development/python-modules/asyncio-dgram/default.nix
index f999cd3b3b344..5608a8632e473 100644
--- a/pkgs/development/python-modules/asyncio-dgram/default.nix
+++ b/pkgs/development/python-modules/asyncio-dgram/default.nix
@@ -1,36 +1,37 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "asyncio-dgram";
-  version = "2.1.2";
-  format = "setuptools";
+  version = "2.2.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.5";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "jsbronder";
-    repo = pname;
-    rev = "refs/tagsv${version}";
+    repo = "asyncio-dgram";
+    rev = "refs/tags/v${version}";
     hash = "sha256-Eb/9JtgPT2yOlfnn5Ox8M0kcQhSlRCuX8+Rq6amki8Q=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  build-system = [ setuptools ];
 
-  checkInputs = [
+  nativeCheckInputs = [
     pytest-asyncio
+    pytestCheckHook
   ];
 
   # OSError: AF_UNIX path too long
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   disabledTests = [
     "test_protocol_pause_resume"
@@ -38,9 +39,7 @@ buildPythonPackage rec {
     "test_from_socket_bad_socket"
   ];
 
-  pythonImportsCheck = [
-    "asyncio_dgram"
-  ];
+  pythonImportsCheck = [ "asyncio_dgram" ];
 
   meta = with lib; {
     description = "Python support for higher level Datagram";
diff --git a/pkgs/development/python-modules/asyncio-mqtt/default.nix b/pkgs/development/python-modules/asyncio-mqtt/default.nix
deleted file mode 100644
index 309e74ba4cc1b..0000000000000
--- a/pkgs/development/python-modules/asyncio-mqtt/default.nix
+++ /dev/null
@@ -1,76 +0,0 @@
-{ lib
-, anyio
-, buildPythonPackage
-, fetchFromGitHub
-, paho-mqtt
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
-, typing-extensions
-, wheel
-}:
-
-buildPythonPackage rec {
-  pname = "asyncio-mqtt";
-  version = "0.16.1";
-  format = "pyproject";
-
-  disabled = pythonOlder "3.7";
-
-  src = fetchFromGitHub {
-    owner = "sbtinstruments";
-    repo = pname;
-    rev = "refs/tags/v${version}";
-    hash = "sha256-f3JqocjOEwNjo6Uv17ij6oEdrjb6Z2wTzdhdVhx46iM=";
-  };
-
-  nativeBuildInputs = [
-    setuptools
-    setuptools-scm
-    wheel
-  ];
-
-  propagatedBuildInputs = [
-    paho-mqtt
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    typing-extensions
-  ];
-
-  nativeCheckInputs = [
-    anyio
-    pytestCheckHook
-  ];
-
-  pythonImportsCheck = [
-    "asyncio_mqtt"
-  ];
-
-  disabledTests = [
-    # Tests require network access
-    "test_client_filtered_messages"
-    "test_client_logger"
-    "test_client_max_concurrent_outgoing_calls"
-    "test_client_no_pending_calls_warnings_with_max_concurrent_outgoing_calls"
-    "test_client_pending_calls_threshold"
-    "test_client_tls_context"
-    "test_client_tls_params"
-    "test_client_unfiltered_messages"
-    "test_client_unsubscribe"
-    "test_client_username_password "
-    "test_client_websockets"
-    "test_client_will"
-    "test_multiple_messages_generators"
-  ];
-
-  # newer version are packaged as aiomqtt
-  passthru.skipBulkUpdate = true;
-
-  meta = with lib; {
-    description = "Idomatic asyncio wrapper around paho-mqtt";
-    homepage = "https://github.com/sbtinstruments/asyncio-mqtt";
-    license = licenses.bsd3;
-    changelog = "https://github.com/sbtinstruments/asyncio-mqtt/blob/v${version}/CHANGELOG.md";
-    maintainers = with maintainers; [ hexa ];
-  };
-}
diff --git a/pkgs/development/python-modules/asyncio-rlock/default.nix b/pkgs/development/python-modules/asyncio-rlock/default.nix
index 6f53a3adfa0a4..89ee558136ead 100644
--- a/pkgs/development/python-modules/asyncio-rlock/default.nix
+++ b/pkgs/development/python-modules/asyncio-rlock/default.nix
@@ -1,7 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/asyncio-throttle/default.nix b/pkgs/development/python-modules/asyncio-throttle/default.nix
index c48868380ebd7..dc8dc03599a13 100644
--- a/pkgs/development/python-modules/asyncio-throttle/default.nix
+++ b/pkgs/development/python-modules/asyncio-throttle/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, pytest-asyncio
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  pytest-asyncio,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/asyncmy/default.nix b/pkgs/development/python-modules/asyncmy/default.nix
index 76a6d86a5beee..54c5ad8fd37b4 100644
--- a/pkgs/development/python-modules/asyncmy/default.nix
+++ b/pkgs/development/python-modules/asyncmy/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
   # Not running tests as aiomysql is missing support for pymysql>=0.9.3
   doCheck = false;
 
-  pythonImportsCheck = [
-    "asyncmy"
-  ];
+  pythonImportsCheck = [ "asyncmy" ];
 
   meta = with lib; {
     description = "Python module to interact with MySQL/mariaDB";
diff --git a/pkgs/development/python-modules/asyncpg/default.nix b/pkgs/development/python-modules/asyncpg/default.nix
index dce3a9ba0642d..b855d952ed2d3 100644
--- a/pkgs/development/python-modules/asyncpg/default.nix
+++ b/pkgs/development/python-modules/asyncpg/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, async-timeout
-, uvloop
-, postgresql
-, pythonOlder
-, pytest-xdist
-, pytestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  async-timeout,
+  uvloop,
+  postgresql,
+  pythonOlder,
+  pytest-xdist,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
 
   # required for compatibility with Python versions older than 3.11
   # see https://github.com/MagicStack/asyncpg/blob/v0.29.0/asyncpg/_asyncio_compat.py#L13
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.11") [
-    async-timeout
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.11") [ async-timeout ];
 
   nativeCheckInputs = [
     uvloop
@@ -41,9 +40,7 @@ buildPythonPackage rec {
     rm -rf asyncpg/
   '';
 
-  pythonImportsCheck = [
-    "asyncpg"
-  ];
+  pythonImportsCheck = [ "asyncpg" ];
 
   meta = with lib; {
     description = "Asyncio PosgtreSQL driver";
diff --git a/pkgs/development/python-modules/asyncserial/default.nix b/pkgs/development/python-modules/asyncserial/default.nix
index a40d31510c406..1fec899b050fd 100644
--- a/pkgs/development/python-modules/asyncserial/default.nix
+++ b/pkgs/development/python-modules/asyncserial/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyserial
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyserial,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-WExmgh55sTH2w7wV3i96J1F1FN7L5rX3L/Ayvt2Kw/g=";
   };
 
-  propagatedBuildInputs = [
-    pyserial
-  ];
+  propagatedBuildInputs = [ pyserial ];
 
   pythonImportsCheck = [ "asyncserial" ];
 
diff --git a/pkgs/development/python-modules/asyncsleepiq/default.nix b/pkgs/development/python-modules/asyncsleepiq/default.nix
index 25969661bf15d..9f78951b7d987 100644
--- a/pkgs/development/python-modules/asyncsleepiq/default.nix
+++ b/pkgs/development/python-modules/asyncsleepiq/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,20 +19,14 @@ buildPythonPackage rec {
     hash = "sha256-TDHFKLifNmmAVvD5DjSopEXFbR+KPMIdSA+rLAKrfpI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # upstream has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "asyncsleepiq"
-  ];
+  pythonImportsCheck = [ "asyncsleepiq" ];
 
   meta = with lib; {
     description = "Async interface to SleepIQ API";
diff --git a/pkgs/development/python-modules/asyncssh/default.nix b/pkgs/development/python-modules/asyncssh/default.nix
index 735e831c03249..bcbb85e7dca9e 100644
--- a/pkgs/development/python-modules/asyncssh/default.nix
+++ b/pkgs/development/python-modules/asyncssh/default.nix
@@ -1,61 +1,53 @@
-{ lib
-, stdenv
-, bcrypt
-, buildPythonPackage
-, cryptography
-, fetchPypi
-, fido2
-, gssapi
-, libnacl
-, libsodium
-, nettle
-, openssh
-, openssl
-, pyopenssl
-, pytestCheckHook
-, python-pkcs11
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  bcrypt,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  fido2,
+  gssapi,
+  libnacl,
+  libsodium,
+  nettle,
+  openssh,
+  openssl,
+  pyopenssl,
+  pytestCheckHook,
+  python-pkcs11,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "asyncssh";
-  version = "2.14.2";
-  format = "setuptools";
+  version = "2.17.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-6Va/iYjQega6MwX2YE4mH0ygFMSiMvCHPxx2kvvjz8I=";
+    hash = "sha256-OxWcEFqjiMHiJFxPr0g/VArajK2ZQCKBEZEAFm5e2zw=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     cryptography
-    libsodium
     nettle
     typing-extensions
   ];
 
-  passthru.optional-dependencies = {
-    bcrypt = [
-      bcrypt
-    ];
-    fido2 = [
-      fido2
-    ];
-    gssapi = [
-      gssapi
-    ];
-    libnacl = [
-      libnacl
-    ];
-    pkcs11 = [
-      python-pkcs11
-    ];
-    pyOpenSSL = [
-      pyopenssl
-    ];
+  buildInputs = [ libsodium ];
+
+  optional-dependencies = {
+    bcrypt = [ bcrypt ];
+    fido2 = [ fido2 ];
+    gssapi = [ gssapi ];
+    libnacl = [ libnacl ];
+    pkcs11 = [ python-pkcs11 ];
+    pyOpenSSL = [ pyopenssl ];
   };
 
   __darwinAllowLocalNetworking = true;
@@ -64,7 +56,7 @@ buildPythonPackage rec {
     openssh
     openssl
     pytestCheckHook
-  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+  ] ++ lib.flatten (builtins.attrValues optional-dependencies);
 
   patches = [
     # Reverts https://github.com/ronf/asyncssh/commit/4b3dec994b3aa821dba4db507030b569c3a32730
@@ -90,15 +82,13 @@ buildPythonPackage rec {
     "test_forward_remote"
   ];
 
-  pythonImportsCheck = [
-    "asyncssh"
-  ];
+  pythonImportsCheck = [ "asyncssh" ];
 
   meta = with lib; {
     description = "Asynchronous SSHv2 Python client and server library";
     homepage = "https://asyncssh.readthedocs.io/";
     changelog = "https://github.com/ronf/asyncssh/blob/v${version}/docs/changes.rst";
     license = licenses.epl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/asyncstdlib/default.nix b/pkgs/development/python-modules/asyncstdlib/default.nix
index d44de866d323f..31bb266783f47 100644
--- a/pkgs/development/python-modules/asyncstdlib/default.nix
+++ b/pkgs/development/python-modules/asyncstdlib/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "asyncstdlib";
-  version = "3.12.3";
+  version = "3.12.5";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "maxfischer2781";
     repo = "asyncstdlib";
     rev = "refs/tags/v${version}";
-    hash = "sha256-OLb4+7FFeVDW0ePyVJW8aaosouxlU/4Uq2ktvVLpDFY=";
+    hash = "sha256-RQoq+Okzan4/Q51mlL1EPyZuBSr3+xGWEPSAnZYJGyA=";
   };
 
   build-system = [ flit-core ];
diff --git a/pkgs/development/python-modules/asynctest/default.nix b/pkgs/development/python-modules/asynctest/default.nix
index fde7479884dcf..d8a97aaf302a8 100644
--- a/pkgs/development/python-modules/asynctest/default.nix
+++ b/pkgs/development/python-modules/asynctest/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder, python, pythonAtLeast }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  python,
+  pythonAtLeast,
+}:
 
 buildPythonPackage rec {
   pname = "asynctest";
diff --git a/pkgs/development/python-modules/asyncua/default.nix b/pkgs/development/python-modules/asyncua/default.nix
index 3666d8716d960..59c42fd028383 100644
--- a/pkgs/development/python-modules/asyncua/default.nix
+++ b/pkgs/development/python-modules/asyncua/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, stdenv
-, aiofiles
-, aiosqlite
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, pyopenssl
-, pytest-asyncio_0_21
-, pytest-mock
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, pytz
-, setuptools
-, sortedcontainers
-, typing-extensions
+{
+  lib,
+  stdenv,
+  aiofiles,
+  aiosqlite,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  pyopenssl,
+  pytest-asyncio_0_21,
+  pytest-mock,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  pytz,
+  setuptools,
+  sortedcontainers,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "asyncua";
-  version = "1.1.0";
+  version = "1.1.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -28,26 +29,20 @@ buildPythonPackage rec {
     owner = "FreeOpcUa";
     repo = "opcua-asyncio";
     rev = "refs/tags/v${version}";
-    hash = "sha256-tHlo5oNsb8E6r0vmSi0eVbk4RCMg0xe97LITzW9FQWA=";
+    hash = "sha256-XXjzYDOEBdA4uk0VCzscHrPCY2Lgin0JBAVDdxmSOio=";
     fetchSubmodules = true;
   };
 
   postPatch = ''
-    # https://github.com/FreeOpcUa/opcua-asyncio/issues/1263
-    substituteInPlace setup.py \
-      --replace ", 'asynctest'" ""
-
     # Workaround hardcoded paths in test
     # "test_cli_tools_which_require_sigint"
     substituteInPlace tests/test_tools.py \
-      --replace "tools/" "$out/bin/"
+      --replace-fail "tools/" "$out/bin/"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiofiles
     aiosqlite
     cryptography
@@ -64,13 +59,12 @@ buildPythonPackage rec {
     pytest-mock
   ];
 
-  pythonImportsCheck = [
-    "asyncua"
-  ];
+  pythonImportsCheck = [ "asyncua" ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [
+  disabledTests = [
     # Failed: DID NOT RAISE <class 'asyncio.exceptions.TimeoutError'>
     "test_publish"
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
     # OSError: [Errno 48] error while attempting to bind on address ('127.0.0.1',...
     "test_anonymous_rejection"
     "test_certificate_handling_success"
diff --git a/pkgs/development/python-modules/asyncwhois/default.nix b/pkgs/development/python-modules/asyncwhois/default.nix
index 084c9ee8d306c..f2c341a3b593c 100644
--- a/pkgs/development/python-modules/asyncwhois/default.nix
+++ b/pkgs/development/python-modules/asyncwhois/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
-, python-socks
-, pythonOlder
-, setuptools
-, tldextract
-, whodap
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  python-socks,
+  pythonOlder,
+  setuptools,
+  tldextract,
+  whodap,
 }:
 
 buildPythonPackage rec {
   pname = "asyncwhois";
-  version = "1.1.0";
+  version = "1.1.4";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -22,14 +23,17 @@ buildPythonPackage rec {
     owner = "pogzyb";
     repo = "asyncwhois";
     rev = "refs/tags/v${version}";
-    hash = "sha256-rJwJhSOFrZZ3WXEZmPMfdosBBW/R5/PMqs0QLnsPMoI=";
+    hash = "sha256-BjHGp94vad5qTvffiU8ZEOxYeXNzQHlNq1SaxviYfps=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace-fail "python-socks[asyncio]" "python-socks"
+  '';
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     python-socks
     tldextract
     whodap
@@ -41,11 +45,6 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace-fail "python-socks[asyncio]" "python-socks"
-  '';
-
   disabledTests = [
     # Tests require network access
     "test_pywhois_aio_get_hostname_from_ip"
@@ -63,9 +62,7 @@ buildPythonPackage rec {
     "test__get_top_level_domain"
   ];
 
-  pythonImportsCheck = [
-    "asyncwhois"
-  ];
+  pythonImportsCheck = [ "asyncwhois" ];
 
   meta = with lib; {
     description = "Python module for retrieving WHOIS information";
diff --git a/pkgs/development/python-modules/asysocks/default.nix b/pkgs/development/python-modules/asysocks/default.nix
index cad72c813aecb..97ad3303da4c7 100644
--- a/pkgs/development/python-modules/asysocks/default.nix
+++ b/pkgs/development/python-modules/asysocks/default.nix
@@ -1,32 +1,38 @@
-{ lib
-, asn1crypto
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  asn1crypto,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  h11,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "asysocks";
-  version = "0.2.12";
-  format = "setuptools";
+  version = "0.2.13";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-uilvJjuZrvdC2m4zhXCkbzLjwtbC1liWEZ20Ya7FYJ0=";
+    hash = "sha256-RBhbLEceY7cpMXOWfu87D15g7VzBt2UKMKlWnkn/Jfg=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     asn1crypto
+    cryptography
+    h11
   ];
 
   # Upstream hasn't release the tests yet
   doCheck = false;
 
-  pythonImportsCheck = [
-    "asysocks"
-  ];
+  pythonImportsCheck = [ "asysocks" ];
 
   meta = with lib; {
     description = "Python Socks4/5 client and server library";
diff --git a/pkgs/development/python-modules/atc-ble/default.nix b/pkgs/development/python-modules/atc-ble/default.nix
index 187aaeeb99ac8..1b099a8d0f412 100644
--- a/pkgs/development/python-modules/atc-ble/default.nix
+++ b/pkgs/development/python-modules/atc-ble/default.nix
@@ -1,38 +1,33 @@
-{ lib
-, bluetooth-sensor-state-data
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pycryptodomex
-, pytestCheckHook
-, pythonOlder
-, sensor-state-data
+{
+  lib,
+  bluetooth-sensor-state-data,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pycryptodomex,
+  pytestCheckHook,
+  pytest-cov-stub,
+  pythonOlder,
+  sensor-state-data,
 }:
 
 buildPythonPackage rec {
   pname = "atc-ble";
   version = "0.1.0";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "Bluetooth-Devices";
-    repo = pname;
+    repo = "atc-ble";
     rev = "refs/tags/v${version}";
     hash = "sha256-rwOFKxUlbbNIDJRdCmZpHstXwxcTnvlExgcVDdGbIVY=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace " --cov=atc_ble --cov-report=term-missing:skip-covered" ""
-  '';
+  build-system = [ poetry-core ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
-
-  propagatedBuildInputs = [
+  dependencies = [
     bluetooth-sensor-state-data
     pycryptodomex
     sensor-state-data
@@ -40,11 +35,10 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
   ];
 
-  pythonImportsCheck = [
-    "atc_ble"
-  ];
+  pythonImportsCheck = [ "atc_ble" ];
 
   meta = with lib; {
     description = "Library for ATC devices with custom firmware";
diff --git a/pkgs/development/python-modules/atenpdu/default.nix b/pkgs/development/python-modules/atenpdu/default.nix
index 25c114debd404..f60b281112cd5 100644
--- a/pkgs/development/python-modules/atenpdu/default.nix
+++ b/pkgs/development/python-modules/atenpdu/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, async-timeout
-, pysnmp-lextudio
-, pythonOlder
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  async-timeout,
+  pysnmp,
+  pythonOlder,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
@@ -19,21 +20,22 @@ buildPythonPackage rec {
     hash = "sha256-KzRoE4tE/tQkKYroq5PbWKREmEl8AwbIOg3IHRZZtsQ=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail pysnmp-lextudio pysnmp
+  '';
+
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     async-timeout
-    pysnmp-lextudio
+    pysnmp
   ];
 
   # Module has no test
   doCheck = false;
 
-  pythonImportsCheck = [
-    "atenpdu"
-  ];
+  pythonImportsCheck = [ "atenpdu" ];
 
   meta = with lib; {
     description = "Python interface to control ATEN PE PDUs";
diff --git a/pkgs/development/python-modules/atlassian-python-api/default.nix b/pkgs/development/python-modules/atlassian-python-api/default.nix
index c4c9f85cf3f2f..20e01126b9745 100644
--- a/pkgs/development/python-modules/atlassian-python-api/default.nix
+++ b/pkgs/development/python-modules/atlassian-python-api/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, beautifulsoup4
-, deprecated
-, jmespath
-, lxml
-, oauthlib
-, requests
-, requests-kerberos
-, requests-oauthlib
-, six
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  beautifulsoup4,
+  deprecated,
+  jmespath,
+  lxml,
+  oauthlib,
+  requests,
+  requests-kerberos,
+  requests-oauthlib,
+  six,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "atlassian-python-api";
-  version = "3.41.11";
+  version = "3.41.16";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -25,7 +26,7 @@ buildPythonPackage rec {
     owner = "atlassian-api";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-yQqy+pFl5TK4CEUM+vpwl+pkUjBuc0xvqC9o1ZC5m7c=";
+    hash = "sha256-HhFGM8EPGCT3WqVf6WP6VvwsppvzFvHg+ys7GhUUwW0=";
   };
 
   propagatedBuildInputs = [
@@ -40,13 +41,9 @@ buildPythonPackage rec {
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "atlassian"
-  ];
+  pythonImportsCheck = [ "atlassian" ];
 
   meta = with lib; {
     description = "Python Atlassian REST API Wrapper";
diff --git a/pkgs/development/python-modules/atom/default.nix b/pkgs/development/python-modules/atom/default.nix
index 519fc3791d798..f858eb07be9a1 100644
--- a/pkgs/development/python-modules/atom/default.nix
+++ b/pkgs/development/python-modules/atom/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools-scm
-, future
-, cppy
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  cppy,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "atom";
-  version = "0.10.4";
+  version = "0.10.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,28 +19,20 @@ buildPythonPackage rec {
     owner = "nucleic";
     repo = "atom";
     rev = "refs/tags/${version}";
-    hash = "sha256-HoUKU6z+6PPBUsvI4earZG9UXN0PrugAxu/F7WUfUe8=";
+    hash = "sha256-wRVmCyqMwDs1thnRXYH6z1a/qCubw8CVUhaEMqLtiSM=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    cppy
-  ];
+  buildInputs = [ cppy ];
 
   preCheck = ''
     rm -rf atom
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "atom.api"
-  ];
+  pythonImportsCheck = [ "atom.api" ];
 
   meta = with lib; {
     description = "Memory efficient Python objects";
diff --git a/pkgs/development/python-modules/atomiclong/default.nix b/pkgs/development/python-modules/atomiclong/default.nix
index 1af61849585bd..a5180221fc762 100644
--- a/pkgs/development/python-modules/atomiclong/default.nix
+++ b/pkgs/development/python-modules/atomiclong/default.nix
@@ -1,17 +1,32 @@
-{ lib, buildPythonPackage, fetchPypi, pytest, cffi }:
+{
+  lib,
+  buildPythonPackage,
+  cffi,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "atomiclong";
   version = "0.1.1";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1gjbc9lvpkgg8vj7dspif1gz9aq4flkhxia16qj6yvb7rp27h4yb";
+    hash = "sha256-yxN4xM1nbW8kNkHFDid1BKv0X3Dx6nbkRu/Nu2liS74=";
   };
 
-  buildInputs = [ pytest ];
-  propagatedBuildInputs = [ cffi ];
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  dependencies = [ cffi ];
+
+  pythonImportsCheck = [ "atomiclong" ];
 
   meta = with lib; {
     description = "Long data type with atomic operations using CFFI";
diff --git a/pkgs/development/python-modules/atomicwrites-homeassistant/default.nix b/pkgs/development/python-modules/atomicwrites-homeassistant/default.nix
index b340c0f9e80c9..aba94f1bfddc1 100644
--- a/pkgs/development/python-modules/atomicwrites-homeassistant/default.nix
+++ b/pkgs/development/python-modules/atomicwrites-homeassistant/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 let
@@ -18,13 +19,9 @@ buildPythonPackage {
     hash = "sha256-JWpnIQbxZ0VEUijZZiQLd7VfRqCW0gMFkBpXql0fTC8=";
   };
 
-  pythonImportsCheck = [
-    "atomicwrites"
-  ];
+  pythonImportsCheck = [ "atomicwrites" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Atomic file writes";
diff --git a/pkgs/development/python-modules/atomicwrites/default.nix b/pkgs/development/python-modules/atomicwrites/default.nix
index 06ce71504dd5c..1779a14148aae 100644
--- a/pkgs/development/python-modules/atomicwrites/default.nix
+++ b/pkgs/development/python-modules/atomicwrites/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "atomicwrites";
diff --git a/pkgs/development/python-modules/atomman/default.nix b/pkgs/development/python-modules/atomman/default.nix
index a245c93e36187..997466118258d 100644
--- a/pkgs/development/python-modules/atomman/default.nix
+++ b/pkgs/development/python-modules/atomman/default.nix
@@ -1,49 +1,45 @@
-{ lib
-, ase
-, buildPythonPackage
-, cython
-, datamodeldict
-, fetchFromGitHub
-, matplotlib
-, numericalunits
-, numpy
-, pandas
-, phonopy
-, potentials
-, pymatgen
-, pytestCheckHook
-, pythonOlder
-, requests
-, scipy
-, setuptools
-, toolz
-, wheel
-, xmltodict
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  datamodeldict,
+  fetchFromGitHub,
+  matplotlib,
+  numericalunits,
+  numpy,
+  pandas,
+  phonopy,
+  potentials,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  scipy,
+  setuptools,
+  toolz,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
-  version = "unstable-2023-07-28";
   pname = "atomman";
-  format = "pyproject";
+  version = "1.4.11";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "usnistgov";
     repo = "atomman";
-    rev = "b8af21a9285959d38ee26173081db1b4488401bc";
-    hash = "sha256-WfB+OY61IPprT6OCVHl8VA60p7lLVkRGuyYX+nm7bbA=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-2yxHv9fSgLM5BeUkXV9NX+xyplXtyfWodwS9sVUVzqU=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
-    wheel
-    pythonRelaxDepsHook
+    numpy
+    cython
   ];
 
-  propagatedBuildInputs = [
-    cython
+  dependencies = [
     datamodeldict
     matplotlib
     numericalunits
@@ -56,7 +52,7 @@ buildPythonPackage rec {
     xmltodict
   ];
 
-  pythonRelaxDeps = [ "potentials" ];
+  pythonRelaxDeps = [ "atomman" ];
 
   preCheck = ''
     # By default, pytestCheckHook imports atomman from the current directory
@@ -67,9 +63,7 @@ buildPythonPackage rec {
   '';
 
   nativeCheckInputs = [
-    ase
     phonopy
-    pymatgen
     pytestCheckHook
   ];
 
@@ -77,14 +71,13 @@ buildPythonPackage rec {
     "test_unique_shifts_prototype" # needs network access to download database files
   ];
 
-  pythonImportsCheck = [
-    "atomman"
-  ];
+  pythonImportsCheck = [ "atomman" ];
 
   meta = with lib; {
+    changelog = "https://github.com/usnistgov/atomman/blob/${src.rev}/UPDATES.rst";
     description = "Atomistic Manipulation Toolkit";
     homepage = "https://github.com/usnistgov/atomman/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/atpublic/default.nix b/pkgs/development/python-modules/atpublic/default.nix
index 41cbe28b8a268..9789b8c471225 100644
--- a/pkgs/development/python-modules/atpublic/default.nix
+++ b/pkgs/development/python-modules/atpublic/default.nix
@@ -1,52 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, pdm-backend
-, sybil
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  pytestCheckHook,
+  pythonOlder,
+  hatchling,
+  sybil,
 }:
 
 buildPythonPackage rec {
   pname = "atpublic";
-  version = "4.0";
-  format = "pyproject";
+  version = "5.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-D0BDMhnhJO3xFcbDY4CMpvDhz6fRYNhrL7lHkwhtEpQ=";
+  src = fetchFromGitLab {
+    owner = "warsaw";
+    repo = "public";
+    rev = "refs/tags/${version}";
+    hash = "sha256-cqum+4hREu0jO9iFoUUzfzn597BoMAhG+aanwnh8hb8=";
   };
 
-  nativeBuildInputs = [
-    pdm-backend
-  ];
-
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  build-system = [ hatchling ];
 
   nativeCheckInputs = [
     pytestCheckHook
     sybil
   ];
 
-  pytestFlagsArray = [
-    # TypeError: FixtureManager.getfixtureclosure() missing 1 required positional argument: 'ignore_args'
-    "--ignore=docs/using.rst"
-  ];
-
-  postPatch = ''
-    sed -i '/cov=public/d' pyproject.toml
-  '';
-
-  pythonImportsCheck = [
-    "public"
-  ];
+  pythonImportsCheck = [ "public" ];
 
   meta = with lib; {
+    changelog = "https://gitlab.com/warsaw/public/-/blob/${version}/docs/NEWS.rst";
     description = "Python decorator and function which populates a module's __all__ and globals";
     homepage = "https://public.readthedocs.io/";
     longDescription = ''
diff --git a/pkgs/development/python-modules/atsim-potentials/default.nix b/pkgs/development/python-modules/atsim-potentials/default.nix
index b06ef867c21f8..f194c251d5d31 100644
--- a/pkgs/development/python-modules/atsim-potentials/default.nix
+++ b/pkgs/development/python-modules/atsim-potentials/default.nix
@@ -1,36 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, configparser
-, pyparsing
-, pytestCheckHook
-, future
-, openpyxl
-, wrapt
-, scipy
-, cexprtk
-, deepdiff
-, sympy
+{
+  lib,
+  buildPythonPackage,
+  pythonAtLeast,
+  fetchFromGitHub,
+  setuptools,
+  configparser,
+  pyparsing,
+  pytestCheckHook,
+  future,
+  openpyxl,
+  wrapt,
+  scipy,
+  cexprtk,
+  deepdiff,
+  sympy,
 }:
 
 buildPythonPackage rec {
-  version = "0.4.1";
-  format = "setuptools";
   pname = "atsim-potentials";
+  version = "0.4.1";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "mjdrushton";
-    repo = pname;
+    repo = "atsim-potentials";
     rev = "refs/tags/${version}";
     hash = "sha256-G7lNqwEUwAT0f7M2nUTCxpXOAl6FWKlh7tcsvbur1eM=";
   };
 
-  postPatch = ''
-    # Remove conflicting openpyxl dependency version check
-    sed -i '/openpyxl==2.6.4/d' setup.py
-  '';
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cexprtk
     configparser
     future
@@ -46,10 +46,21 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  # these files try to import `distutils` removed in Python 3.12
+  disabledTestPaths = lib.optionals (pythonAtLeast "3.12") [
+    "tests/config/test_configuration_eam.py"
+    "tests/config/test_configuration_eam_fs.py"
+    "tests/config/test_configuration_pair.py"
+    "tests/test_dlpoly_writeTABEAM.py"
+    "tests/test_documentation_examples.py"
+    "tests/test_eam_adp_writer.py"
+    "tests/test_gulp_writer.py"
+    "tests/test_lammpsWriteEAM.py"
+  ];
+
   disabledTests = [
     # Missing lammps executable
     "eam_tabulate_example2TestCase"
-    "test_pymath"
   ];
 
   pythonImportsCheck = [ "atsim.potentials" ];
diff --git a/pkgs/development/python-modules/attacut/default.nix b/pkgs/development/python-modules/attacut/default.nix
new file mode 100644
index 0000000000000..9724ac0a27418
--- /dev/null
+++ b/pkgs/development/python-modules/attacut/default.nix
@@ -0,0 +1,73 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+
+  setuptools,
+
+  pytestCheckHook,
+
+  docopt,
+  fire,
+  numpy,
+  python-crfsuite,
+  pyyaml,
+  six,
+  ssg,
+  torch,
+}:
+
+buildPythonPackage rec {
+  pname = "attacut";
+  version = "1.1.0-dev";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "PyThaiNLP";
+    repo = "attacut";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-x3JJC1Xd+tsOAHJEHGzIrhIrNGSvLSanAFc7+uXb2Kk=";
+  };
+
+  # no more need, see patch...
+  postPatch = ''
+    sed -i "/nptyping>=/d" setup.py
+  '';
+
+  patches = [
+    (fetchpatch {
+      name = "fix-nptyping-deprecated-array.patch";
+      url = "https://github.com/PyThaiNLP/attacut/commit/a707297b3f08a015d32d8ac241aa8cb11128cbd4.patch";
+      includes = [ "attacut/evaluation.py" ];
+      hash = "sha256-k2DJPwiH1Fyf5u6+zavx0bankCXsJVZrw1MGcf8ZL+M=";
+    })
+  ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    docopt
+    fire
+    numpy
+    python-crfsuite
+    pyyaml
+    six
+    ssg
+    torch
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pytestFlagsArray = [ "tests/*" ];
+
+  pythonImportsCheck = [ "attacut" ];
+
+  meta = with lib; {
+    description = "Fast and Accurate Neural Thai Word Segmenter";
+    homepage = "https://github.com/PyThaiNLP/attacut";
+    license = licenses.mit;
+    maintainers = with maintainers; [ vizid ];
+    mainProgram = "attacut-cli";
+  };
+}
diff --git a/pkgs/development/python-modules/attr/default.nix b/pkgs/development/python-modules/attr/default.nix
new file mode 100644
index 0000000000000..5a6400d3e5e3a
--- /dev/null
+++ b/pkgs/development/python-modules/attr/default.nix
@@ -0,0 +1,35 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  python,
+}:
+
+buildPythonPackage rec {
+  pname = "attr";
+  version = "0.3.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "denis-ryzhkov";
+    repo = "attr";
+    rev = version;
+    hash = "sha256-1gOAONDuZb7xEPFZJc00BRtFF06uX65S8b3RRRNGeSo=";
+  };
+
+  build-system = [ setuptools ];
+
+  checkPhase = ''
+    runHook preCheck
+    ${python.interpreter} -c "import dry_attr; dry_attr.test()"
+    runHook postCheck
+  '';
+
+  meta = {
+    description = "Simple decorator to set attributes of target function or class in a DRY way.";
+    homepage = "https://github.com/denis-ryzhkov/attr";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ pyrox0 ];
+  };
+}
diff --git a/pkgs/development/python-modules/attrdict/default.nix b/pkgs/development/python-modules/attrdict/default.nix
index fb7bc91ad1324..b20f0065dfe57 100644
--- a/pkgs/development/python-modules/attrdict/default.nix
+++ b/pkgs/development/python-modules/attrdict/default.nix
@@ -2,7 +2,6 @@
   lib,
   buildPythonPackage,
   fetchPypi,
-  pytestCheckHook,
   pythonOlder,
   setuptools,
   six,
@@ -41,10 +40,10 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "attrdict" ];
 
   meta = with lib; {
-    description = "A dict with attribute-style access";
+    description = "Dict with attribute-style access";
     homepage = "https://github.com/bcj/AttrDict";
     changelog = "https://github.com/bcj/AttrDict/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/attrs/default.nix b/pkgs/development/python-modules/attrs/default.nix
index 8e46432b810f1..96d6b5d0c96a7 100644
--- a/pkgs/development/python-modules/attrs/default.nix
+++ b/pkgs/development/python-modules/attrs/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, callPackage
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, hatchling
+{
+  lib,
+  callPackage,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  hatchling,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     substituteAllInPlace pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   outputs = [
     "out"
@@ -41,9 +40,7 @@ buildPythonPackage rec {
     cp -R conftest.py tests $testout
   '';
 
-  pythonImportsCheck = [
-    "attr"
-  ];
+  pythonImportsCheck = [ "attr" ];
 
   # pytest depends on attrs, so we can't do this out-of-the-box.
   # Instead, we do this as a passthru.tests test.
@@ -58,6 +55,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/python-attrs/attrs";
     changelog = "https://github.com/python-attrs/attrs/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/attrs/tests.nix b/pkgs/development/python-modules/attrs/tests.nix
index 2614716d71d02..d657ba1ffc5a4 100644
--- a/pkgs/development/python-modules/attrs/tests.nix
+++ b/pkgs/development/python-modules/attrs/tests.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
-, pytestCheckHook
-, attrs
-, hypothesis
+{
+  buildPythonPackage,
+  pytestCheckHook,
+  attrs,
+  hypothesis,
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/aubio/default.nix b/pkgs/development/python-modules/aubio/default.nix
index b810544e4043b..64b89bb1897fc 100644
--- a/pkgs/development/python-modules/aubio/default.nix
+++ b/pkgs/development/python-modules/aubio/default.nix
@@ -1,40 +1,58 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, pytestCheckHook
-, stdenv
-, darwin
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  setuptools,
+  numpy,
+  pytestCheckHook,
+  stdenv,
+  darwin,
 }:
 
 buildPythonPackage rec {
   pname = "aubio";
   version = "0.4.9";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
-    owner = pname;
-    repo = pname;
+    owner = "aubio";
+    repo = "aubio";
     rev = version;
-    sha256 = "0fhxikvlr010nbh02g455d5y8bq6j5yw180cdh4gsd0hb43y3z26";
+    hash = "sha256-RvzhB1kQNP0IbAygwH2RBi/kSyuFPAHgsiCATPeMHTo=";
   };
 
-  buildInputs = lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ Accelerate AudioToolbox CoreVideo CoreGraphics ]);
-
-  propagatedBuildInputs = [
-    numpy
+  patches = [
+    (fetchpatch {
+      # fix "incompatible function pointer types initializing 'PyUFuncGenericFunction'"
+      name = "const-function-signature.patch";
+      url = "https://github.com/aubio/aubio/commit/95ff046c698156f21e2ca0d1d8a02c23ab76969f.patch";
+      hash = "sha256-qKcIPjpcZUizSN/t96WOiOn+IlsrlC0+g7gW77KejH0=";
+    })
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin (
+    with darwin.apple_sdk.frameworks;
+    [
+      Accelerate
+      AudioToolbox
+      CoreVideo
+      CoreGraphics
+    ]
+  );
+
+  build-system = [ setuptools ];
+
+  dependencies = [ numpy ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "aubio" ];
 
   meta = with lib; {
-    description = "a library for audio and music analysis";
+    description = "Library for audio and music analysis";
     homepage = "https://aubio.org";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/audible/default.nix b/pkgs/development/python-modules/audible/default.nix
index 63b8e605086e5..87a809bfe1ed2 100644
--- a/pkgs/development/python-modules/audible/default.nix
+++ b/pkgs/development/python-modules/audible/default.nix
@@ -1,37 +1,36 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
 
   # build-system
-, poetry-core
+  poetry-core,
 
   # dependencies
-, beautifulsoup4
-, httpx
-, pbkdf2
-, pillow
-, pyaes
-, rsa
+  beautifulsoup4,
+  httpx,
+  pbkdf2,
+  pillow,
+  pyaes,
+  rsa,
 
   # test dependencies
-, pytestCheckHook
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "audible";
-  version = "0.9.1";
+  version = "0.10.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "mkb79";
     repo = "Audible";
     rev = "refs/tags/v${version}";
-    hash = "sha256-qLU8FjJBPKFgjpumPqRiiMBwZi+zW46iEmWM8UerMgs=";
+    hash = "sha256-ILGhjuPIxpRxu/dVDmz531FUgMWosk4P+onPJltuPIs=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     pillow
@@ -42,9 +41,7 @@ buildPythonPackage rec {
     rsa
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "audible" ];
 
diff --git a/pkgs/development/python-modules/audio-metadata/default.nix b/pkgs/development/python-modules/audio-metadata/default.nix
index e9be3715ec311..40b47f61016aa 100644
--- a/pkgs/development/python-modules/audio-metadata/default.nix
+++ b/pkgs/development/python-modules/audio-metadata/default.nix
@@ -10,7 +10,6 @@
   poetry-core,
   pprintpp,
   pythonOlder,
-  pythonRelaxDepsHook,
   tbm-utils,
 }:
 
@@ -44,7 +43,6 @@ buildPythonPackage rec {
 
   build-system = [ poetry-core ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     attrs
diff --git a/pkgs/development/python-modules/audioread/default.nix b/pkgs/development/python-modules/audioread/default.nix
index 851839f0a7976..fc3bd9b2c43ea 100644
--- a/pkgs/development/python-modules/audioread/default.nix
+++ b/pkgs/development/python-modules/audioread/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-rFRgpUmMSL3y6OdnQCWDpNzRP0QU0ob0LOQ3nos1Bm0=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   # No tests, need to disable or py3k breaks
   doCheck = false;
diff --git a/pkgs/development/python-modules/audiotools/default.nix b/pkgs/development/python-modules/audiotools/default.nix
index 427faa4fe37b5..b714062be313e 100644
--- a/pkgs/development/python-modules/audiotools/default.nix
+++ b/pkgs/development/python-modules/audiotools/default.nix
@@ -1,18 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, stdenv
-, AudioToolbox
-, AudioUnit
-, CoreServices
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  stdenv,
+  AudioToolbox,
+  AudioUnit,
+  CoreServices,
 }:
 
 buildPythonPackage rec {
   pname = "audiotools";
   version = "3.1.1";
-  format = "setuptools";
+  pyproject = true;
 
-  buildInputs = lib.optionals stdenv.isDarwin [
+  build-system = [ setuptools ];
+
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
     AudioToolbox
     AudioUnit
     CoreServices
@@ -29,6 +33,6 @@ buildPythonPackage rec {
     description = "Utilities and Python modules for handling audio";
     homepage = "https://audiotools.sourceforge.net/";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/auditok/default.nix b/pkgs/development/python-modules/auditok/default.nix
index 2ec68b11157b2..d6735c9c79099 100644
--- a/pkgs/development/python-modules/auditok/default.nix
+++ b/pkgs/development/python-modules/auditok/default.nix
@@ -1,12 +1,13 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
-, matplotlib
-, numpy
-, pyaudio
-, pydub
-, pythonOlder
-, unittestCheckHook
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  matplotlib,
+  numpy,
+  pyaudio,
+  pydub,
+  pythonOlder,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,11 +23,19 @@ buildPythonPackage rec {
     hash = "sha256-HNsw9VLP7XEgs8E2X6p7ygDM47AwWxMYjptipknFig4=";
   };
 
-  propagatedBuildInputs = [ matplotlib numpy pyaudio pydub ];
+  propagatedBuildInputs = [
+    matplotlib
+    numpy
+    pyaudio
+    pydub
+  ];
 
   nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [ "-s" "tests" ];
+  unittestFlagsArray = [
+    "-s"
+    "tests"
+  ];
 
   pythonImportsCheck = [ "auditok" ];
 
@@ -40,6 +49,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/amsehili/auditok/";
     changelog = "https://github.com/amsehili/auditok/blob/v${version}/CHANGELOG";
     license = licenses.mit;
-    maintainers = with maintainers; [ Benjamin-L ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/auditwheel/default.nix b/pkgs/development/python-modules/auditwheel/default.nix
index 9890a39e460c2..9ca12bdfde26e 100644
--- a/pkgs/development/python-modules/auditwheel/default.nix
+++ b/pkgs/development/python-modules/auditwheel/default.nix
@@ -1,40 +1,35 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools-scm
-, pyelftools
-, importlib-metadata
-, pretend
-, pytestCheckHook
-# non-python dependencies
-, bzip2
-, gnutar
-, patchelf
-, unzip
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools-scm,
+  pyelftools,
+  importlib-metadata,
+  pretend,
+  pytestCheckHook,
+  # non-python dependencies
+  bzip2,
+  gnutar,
+  patchelf,
+  unzip,
 }:
 
 buildPythonPackage rec {
   pname = "auditwheel";
-  version = "6.0.0";
+  version = "6.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ZCLEq2Qh0j41XJHplGkmzVMrn99G8rX/2vGr/p7inmc=";
+    hash = "sha256-O9xobndM+eNV6SSw/lpWLVXKo4XXIjT/57gbN426Ng8=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    pyelftools
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  dependencies = [ pyelftools ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   nativeCheckInputs = [
     pretend
@@ -42,9 +37,7 @@ buildPythonPackage rec {
   ];
 
   # Integration tests require docker and networking
-  disabledTestPaths = [
-    "tests/integration"
-  ];
+  disabledTestPaths = [ "tests/integration" ];
 
   # Ensure that there are no undeclared deps
   postCheck = ''
@@ -52,7 +45,15 @@ buildPythonPackage rec {
   '';
 
   makeWrapperArgs = [
-    "--prefix" "PATH" ":" (lib.makeBinPath [ bzip2 gnutar patchelf unzip ])
+    "--prefix"
+    "PATH"
+    ":"
+    (lib.makeBinPath [
+      bzip2
+      gnutar
+      patchelf
+      unzip
+    ])
   ];
 
   meta = with lib; {
@@ -60,9 +61,9 @@ buildPythonPackage rec {
     description = "Auditing and relabeling cross-distribution Linux wheels";
     homepage = "https://github.com/pypa/auditwheel";
     license = with licenses; [
-      mit  # auditwheel and nibabel
-      bsd2  # from https://github.com/matthew-brett/delocate
-      bsd3  # from https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-projects/pax-utils/lddtree.py
+      mit # auditwheel and nibabel
+      bsd2 # from https://github.com/matthew-brett/delocate
+      bsd3 # from https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-projects/pax-utils/lddtree.py
     ];
     mainProgram = "auditwheel";
     maintainers = with maintainers; [ davhau ];
diff --git a/pkgs/development/python-modules/augeas/default.nix b/pkgs/development/python-modules/augeas/default.nix
index 48c5e723bc4c1..6154b82465b9c 100644
--- a/pkgs/development/python-modules/augeas/default.nix
+++ b/pkgs/development/python-modules/augeas/default.nix
@@ -1,40 +1,43 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, buildPythonPackage
-, unittestCheckHook
-, pkg-config
-, augeas
-, cffi
-, pkgs # for libxml2
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  unittestCheckHook,
+  pkg-config,
+  augeas,
+  cffi,
+  pkgs, # for libxml2
 }:
 buildPythonPackage rec {
-    pname = "augeas";
-    version = "1.2.0";
-    format = "setuptools";
+  pname = "augeas";
+  version = "1.2.0";
+  format = "setuptools";
 
-    src = fetchFromGitHub {
-      owner = "hercules-team";
-      repo = "python-augeas";
-      rev = "v${version}";
-      hash = "sha256-Lq8ckra3sqN38zo1d5JsEq6U5TtLKRmqysoWNwR9J9A=";
-    };
+  src = fetchFromGitHub {
+    owner = "hercules-team";
+    repo = "python-augeas";
+    rev = "v${version}";
+    hash = "sha256-Lq8ckra3sqN38zo1d5JsEq6U5TtLKRmqysoWNwR9J9A=";
+  };
 
-    nativeBuildInputs = [ pkg-config ];
+  nativeBuildInputs = [ pkg-config ];
 
-    buildInputs = [ augeas pkgs.libxml2 ];
+  buildInputs = [
+    augeas
+    pkgs.libxml2
+  ];
 
-    propagatedBuildInputs = [ cffi ];
+  propagatedBuildInputs = [ cffi ];
 
-    nativeCheckInputs = [ unittestCheckHook ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-    pythonImportsCheck = [ "augeas" ];
+  pythonImportsCheck = [ "augeas" ];
 
-    meta = with lib; {
-      changelog = "https://github.com/hercules-team/python-augeas/releases/tag/v${version}";
-      description = "Pure python bindings for augeas";
-      homepage = "https://github.com/hercules-team/python-augeas";
-      license = licenses.lgpl2Plus;
-      platforms = platforms.unix;
-    };
+  meta = with lib; {
+    changelog = "https://github.com/hercules-team/python-augeas/releases/tag/v${version}";
+    description = "Pure python bindings for augeas";
+    homepage = "https://github.com/hercules-team/python-augeas";
+    license = licenses.lgpl2Plus;
+    platforms = platforms.unix;
+  };
 }
diff --git a/pkgs/development/python-modules/augmax/default.nix b/pkgs/development/python-modules/augmax/default.nix
index 2ab159cfc6f8d..3982a00674eab 100644
--- a/pkgs/development/python-modules/augmax/default.nix
+++ b/pkgs/development/python-modules/augmax/default.nix
@@ -1,16 +1,17 @@
-{ buildPythonPackage
-, einops
-, fetchFromGitHub
-, jax
-, jaxlib
-, lib
-, pythonOlder
-, setuptools
+{
+  buildPythonPackage,
+  einops,
+  fetchFromGitHub,
+  jax,
+  jaxlib,
+  lib,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "augmax";
-  version = "0.3.1";
+  version = "0.3.3";
   pyproject = true;
 
   disbaled = pythonOlder "3.6";
@@ -19,14 +20,15 @@ buildPythonPackage rec {
     owner = "khdlr";
     repo = "augmax";
     rev = "refs/tags/v${version}";
-    hash = "sha256-hDNNoE7KVaH3jrXZA4A8f0UoQJPl6KHA3XwMc3Ccohk=";
+    hash = "sha256-FXgkhZEAR1Y2LvVvV+IWMSQDWrLulLDsSKKuw4ER5wg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [ einops jax ];
+  dependencies = [
+    einops
+    jax
+  ];
 
   # augmax does not have any tests at the time of writing (2022-02-19), but
   # jaxlib is necessary for the pythonImportsCheckPhase.
@@ -37,7 +39,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Efficiently Composable Data Augmentation on the GPU with Jax";
     homepage = "https://github.com/khdlr/augmax";
-    changelog = "https://github.com/khdlr/augmax/blob/${src.rev}/CHANGELOG.md";
+    changelog = "https://github.com/khdlr/augmax/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
     maintainers = with maintainers; [ samuela ];
   };
diff --git a/pkgs/development/python-modules/auroranoaa/default.nix b/pkgs/development/python-modules/auroranoaa/default.nix
index f906b4e42bcb5..82820fc05f33d 100644
--- a/pkgs/development/python-modules/auroranoaa/default.nix
+++ b/pkgs/development/python-modules/auroranoaa/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/aurorapy/default.nix b/pkgs/development/python-modules/aurorapy/default.nix
index 6ee2be80d3b6c..dbfa6a226b9a2 100644
--- a/pkgs/development/python-modules/aurorapy/default.nix
+++ b/pkgs/development/python-modules/aurorapy/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitLab
-, future
-, pyserial
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  future,
+  pyserial,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-rGwfGq3zdoG9NCGqVN29Q4bWApk5B6CRdsW9ctWgOec=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     future
@@ -37,9 +36,7 @@ buildPythonPackage rec {
     six
   ];
 
-  pythonImportsCheck = [
-    "aurorapy"
-  ];
+  pythonImportsCheck = [ "aurorapy" ];
 
   meta = with lib; {
     description = "Implementation of the communication protocol for Power-One Aurora inverters";
diff --git a/pkgs/development/python-modules/autarco/default.nix b/pkgs/development/python-modules/autarco/default.nix
index 71cf0df61d775..c6afff489d654 100644
--- a/pkgs/development/python-modules/autarco/default.nix
+++ b/pkgs/development/python-modules/autarco/default.nix
@@ -1,50 +1,45 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, mashumaro
-, orjson
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, syrupy
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mashumaro,
+  orjson,
+  poetry-core,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytestCheckHook,
+  pythonOlder,
+  syrupy,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "autarco";
-  version = "0.3.0";
+  version = "3.0.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "klaasnicolaas";
     repo = "python-autarco";
     rev = "refs/tags/v${version}";
-    hash = "sha256-IBf6Dw2Yf7m+5bQ72K0kPxGdtpl8JowQ9IO3gWS3Vso=";
+    hash = "sha256-7Q6kvJxhds0myu3pMOLSCJKwoGPzHjNSo8H3ctgFvjM=";
   };
 
-  pythonRelaxDeps = [
-    "orjson"
-  ];
+  pythonRelaxDeps = [ "orjson" ];
 
   postPatch = ''
     # Upstream doesn't set a version for the pyproject.toml
     substituteInPlace pyproject.toml \
-      --replace "0.0.0" "${version}" \
-      --replace "--cov" ""
+      --replace-fail "0.0.0" "${version}"
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     mashumaro
     orjson
@@ -56,19 +51,18 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     aresponses
     pytest-asyncio
+    pytest-cov-stub
     pytestCheckHook
     syrupy
   ];
 
-  pythonImportsCheck = [
-    "autarco"
-  ];
+  pythonImportsCheck = [ "autarco" ];
 
   meta = with lib; {
     description = "Module for the Autarco Inverter";
     homepage = "https://github.com/klaasnicolaas/python-autarco";
     changelog = "https://github.com/klaasnicolaas/python-autarco/releases/tag/v${version}";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/auth0-python/default.nix b/pkgs/development/python-modules/auth0-python/default.nix
index 1ae64d53a50c2..3958abba6de3e 100644
--- a/pkgs/development/python-modules/auth0-python/default.nix
+++ b/pkgs/development/python-modules/auth0-python/default.nix
@@ -1,25 +1,25 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, callee
-, cryptography
-, fetchFromGitHub
-, mock
-, poetry-core
-, poetry-dynamic-versioning
-, pyjwt
-, pyopenssl
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
-, urllib3
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  callee,
+  cryptography,
+  fetchFromGitHub,
+  mock,
+  poetry-core,
+  poetry-dynamic-versioning,
+  pyjwt,
+  pyopenssl,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "auth0-python";
-  version = "4.7.1";
+  version = "4.7.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -28,13 +28,12 @@ buildPythonPackage rec {
     owner = "auth0";
     repo = "auth0-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-udtrvAr8wfg1DbNbBEjA/tlrYhIiXtTFqi4bZCuKI0Q=";
+    hash = "sha256-g6sbxPglKDGbDMiB9crnua86y6TPIbLiFddeymrLAP0=";
   };
 
   nativeBuildInputs = [
     poetry-core
     poetry-dynamic-versioning
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -54,9 +53,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonRelaxDeps = [
-    "cryptography"
-  ];
+  pythonRelaxDeps = [ "cryptography" ];
 
   disabledTests = [
     # Tries to ping websites (e.g. google.com)
@@ -65,15 +62,13 @@ buildPythonPackage rec {
     "test_options_are_used_and_override"
   ];
 
-  pythonImportsCheck = [
-    "auth0"
-  ];
+  pythonImportsCheck = [ "auth0" ];
 
   meta = with lib; {
     description = "Auth0 Python SDK";
     homepage = "https://github.com/auth0/auth0-python";
     changelog = "https://github.com/auth0/auth0-python/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/authcaptureproxy/default.nix b/pkgs/development/python-modules/authcaptureproxy/default.nix
index 7f0159f96bcac..7aa705244501b 100644
--- a/pkgs/development/python-modules/authcaptureproxy/default.nix
+++ b/pkgs/development/python-modules/authcaptureproxy/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, poetry-core
+  # build-system
+  poetry-core,
 
-# dependencies
-, aiohttp
-, beautifulsoup4
-, httpx
-, multidict
-, typer
-, yarl
+  # dependencies
+  aiohttp,
+  beautifulsoup4,
+  httpx,
+  multidict,
+  typer,
+  yarl,
 
-# tests
-, pytest-asyncio
-, pytestCheckHook
+  # tests
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     hash = "sha256-gdu0Ror/epu6huTEpBrqHD62O9uaL6273pKnpqPKskc=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -54,16 +53,17 @@ buildPythonPackage rec {
     "test_return_timer_countdown_refresh_html"
   ];
 
-  pythonImportsCheck = [
-    "authcaptureproxy"
-  ];
+  pythonImportsCheck = [ "authcaptureproxy" ];
 
   meta = with lib; {
     changelog = "https://github.com/alandtse/auth_capture_proxy/releases/tag/v${version}";
-    description = "A proxy to capture authentication information from a webpage";
+    description = "Proxy to capture authentication information from a webpage";
     mainProgram = "auth_capture_proxy";
     homepage = "https://github.com/alandtse/auth_capture_proxy";
     license = licenses.asl20;
-    maintainers = with maintainers; [ graham33 hexa ];
+    maintainers = with maintainers; [
+      graham33
+      hexa
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/authheaders/default.nix b/pkgs/development/python-modules/authheaders/default.nix
index 3f73af498036c..ed3a469d312b7 100644
--- a/pkgs/development/python-modules/authheaders/default.nix
+++ b/pkgs/development/python-modules/authheaders/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, authres
-, buildPythonPackage
-, dkimpy
-, dnspython
-, fetchFromGitHub
-, publicsuffix2
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  authres,
+  buildPythonPackage,
+  dkimpy,
+  dnspython,
+  fetchFromGitHub,
+  publicsuffix2,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "authheaders";
-  version = "0.16.2";
+  version = "0.16.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -21,14 +22,12 @@ buildPythonPackage rec {
     owner = "ValiMail";
     repo = "authentication-headers";
     rev = "refs/tags/${version}";
-    hash = "sha256-/vxUUSWwysYQzcy2AmkF4f8R59FHRnBfFlPRpfM9e5o=";
+    hash = "sha256-BFMZpSJ4qCEL42xTiM/D5dkatxohiCrOWAkNZHFUhac=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     authres
     dnspython
     dkimpy
@@ -36,13 +35,9 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "authheaders"
-  ];
+  pythonImportsCheck = [ "authheaders" ];
 
   disabledTests = [
     # Test fails with timeout even if the resolv.conf hack is present
@@ -51,10 +46,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python library for the generation of email authentication headers";
-    mainProgram = "dmarc-policy-find";
     homepage = "https://github.com/ValiMail/authentication-headers";
     changelog = "https://github.com/ValiMail/authentication-headers/blob${version}/CHANGES";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
+    mainProgram = "dmarc-policy-find";
   };
 }
diff --git a/pkgs/development/python-modules/authlib/default.nix b/pkgs/development/python-modules/authlib/default.nix
index a2c6c2a1b057b..d4c9a525d87f0 100644
--- a/pkgs/development/python-modules/authlib/default.nix
+++ b/pkgs/development/python-modules/authlib/default.nix
@@ -1,37 +1,40 @@
-{ lib
-, buildPythonPackage
-, cachelib
-, cryptography
-, fetchFromGitHub
-, flask
-, flask-sqlalchemy
-, httpx
-, mock
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, requests
-, starlette
-, werkzeug
+{
+  lib,
+  buildPythonPackage,
+  cachelib,
+  cryptography,
+  fetchFromGitHub,
+  flask,
+  flask-sqlalchemy,
+  httpx,
+  mock,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
+  starlette,
+  werkzeug,
 }:
 
 buildPythonPackage rec {
   pname = "authlib";
-  version = "1.3.0";
-  format = "setuptools";
+  version = "1.3.2";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "lepture";
     repo = "authlib";
     rev = "refs/tags/v${version}";
-    hash = "sha256-XHzABjGpZN6ilYuBYyGF3Xy/+AT2DXick8/A4JkyWBA=";
+    hash = "sha256-gaFnai5QzHhnyn73JB+QzybaolLWC9barBFdnlEMyMU=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     cryptography
-    requests
   ];
 
   nativeCheckInputs = [
@@ -42,13 +45,12 @@ buildPythonPackage rec {
     mock
     pytest-asyncio
     pytestCheckHook
+    requests
     starlette
     werkzeug
   ];
 
-  pythonImportsCheck = [
-    "authlib"
-  ];
+  pythonImportsCheck = [ "authlib" ];
 
   disabledTestPaths = [
     # Django tests require a running instance
diff --git a/pkgs/development/python-modules/authres/default.nix b/pkgs/development/python-modules/authres/default.nix
index 52c1d138bc6e1..3c9a9d3679689 100644
--- a/pkgs/development/python-modules/authres/default.nix
+++ b/pkgs/development/python-modules/authres/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchPypi, buildPythonPackage, python }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  python,
+}:
 
 buildPythonPackage rec {
   pname = "authres";
diff --git a/pkgs/development/python-modules/autobahn/default.nix b/pkgs/development/python-modules/autobahn/default.nix
index 2bfbc16e8f912..98f2f16b1f74f 100644
--- a/pkgs/development/python-modules/autobahn/default.nix
+++ b/pkgs/development/python-modules/autobahn/default.nix
@@ -1,82 +1,83 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, attrs
-, argon2-cffi
-, base58
-, cbor2
-, cffi
-, click
-, cryptography
-, ecdsa
-, eth-abi
-, eth-account
-, flatbuffers
-, jinja2
-, hkdf
-, hyperlink
-, mnemonic
-, mock
-, msgpack
-, passlib
-, py-ecc
-# , py-eth-sig-utils
-, py-multihash
-, py-ubjson
-, pynacl
-, pygobject3
-, pyopenssl
-, qrcode
-, pytest-asyncio_0_21
-, python-snappy
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  attrs,
+  argon2-cffi,
+  base58,
+  cbor2,
+  cffi,
+  click,
+  cryptography,
+  ecdsa,
+  eth-abi,
+  eth-account,
+  flatbuffers,
+  jinja2,
+  hkdf,
+  hyperlink,
+  mnemonic,
+  mock,
+  msgpack,
+  passlib,
+  py-ecc,
+  # , py-eth-sig-utils
+  py-multihash,
+  py-ubjson,
+  pynacl,
+  pygobject3,
+  pyopenssl,
+  qrcode,
+  pytest-asyncio,
+  python-snappy,
+  pytestCheckHook,
+  pythonOlder,
   # , pytrie
-, rlp
-, service-identity
-, spake2
-, twisted
-, txaio
-, ujson
+  rlp,
+  service-identity,
+  setuptools,
+  spake2,
+  twisted,
+  txaio,
+  ujson,
   # , web3
   # , wsaccel
   # , xbr
-, yapf
+  yapf,
   # , zlmdb
-, zope-interface
+  zope-interface,
 }@args:
 
 buildPythonPackage rec {
   pname = "autobahn";
-  version = "23.6.2";
-  format = "setuptools";
+  version = "24.4.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-7JQhxSohAzZNHvBGgDbmAZ7oT3FyHoazb+Ga1pZsEYE=";
+  src = fetchFromGitHub {
+    owner = "crossbario";
+    repo = "autobahn-python";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-aeTE4a37zr83KZ+v947XikzFrHAhkZ4mj4tXdkQnB84=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "pytest>=2.8.6,<3.3.0" "pytest"
-  '';
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cryptography
     hyperlink
     pynacl
     txaio
   ];
 
-  nativeCheckInputs = [
-    mock
-    pytest-asyncio_0_21
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.scram
-  ++ passthru.optional-dependencies.serialization
-  ++ passthru.optional-dependencies.xbr;
+  nativeCheckInputs =
+    [
+      mock
+      pytest-asyncio
+      pytestCheckHook
+    ]
+    ++ optional-dependencies.scram ++ optional-dependencies.serialization ++ optional-dependencies.xbr;
 
   preCheck = ''
     # Run asyncio tests (requires twisted)
@@ -84,30 +85,66 @@ buildPythonPackage rec {
   '';
 
   pytestFlagsArray = [
-    "--pyargs autobahn"
+    "--ignore=./autobahn/twisted"
+    "./autobahn"
   ];
 
-  pythonImportsCheck = [
-    "autobahn"
-  ];
+  pythonImportsCheck = [ "autobahn" ];
 
-  passthru.optional-dependencies = rec {
+  optional-dependencies = rec {
     all = accelerate ++ compress ++ encryption ++ nvx ++ serialization ++ scram ++ twisted ++ ui ++ xbr;
-    accelerate = [ /* wsaccel */ ];
+    accelerate = [
+      # wsaccel
+    ];
     compress = [ python-snappy ];
-    encryption = [ pynacl pyopenssl qrcode /* pytrie */ service-identity ];
+    encryption = [
+      pynacl
+      pyopenssl
+      qrcode # pytrie
+      service-identity
+    ];
     nvx = [ cffi ];
-    scram = [ argon2-cffi cffi passlib ];
-    serialization = [ cbor2 flatbuffers msgpack ujson py-ubjson ];
-    twisted = [ attrs args.twisted zope-interface ];
+    scram = [
+      argon2-cffi
+      cffi
+      passlib
+    ];
+    serialization = [
+      cbor2
+      flatbuffers
+      msgpack
+      ujson
+      py-ubjson
+    ];
+    twisted = [
+      attrs
+      args.twisted
+      zope-interface
+    ];
     ui = [ pygobject3 ];
-    xbr = [ base58 cbor2 click ecdsa eth-abi jinja2 hkdf mnemonic py-ecc /* py-eth-sig-utils */ py-multihash rlp spake2 twisted /* web3 xbr */ yapf /* zlmdb */ ];
+    xbr = [
+      base58
+      cbor2
+      click
+      ecdsa
+      eth-abi
+      jinja2
+      hkdf
+      mnemonic
+      py-ecc # py-eth-sig-utils
+      py-multihash
+      rlp
+      spake2
+      twisted # web3 xbr
+      yapf # zlmdb
+    ];
   };
 
   meta = with lib; {
+    changelog = "https://github.com/crossbario/autobahn-python/blob/${src.rev}/docs/changelog.rst";
     description = "WebSocket and WAMP in Python for Twisted and asyncio";
     homepage = "https://crossbar.io/autobahn";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/autocommand/default.nix b/pkgs/development/python-modules/autocommand/default.nix
index 11ee55d6417df..8df21385cf04b 100644
--- a/pkgs/development/python-modules/autocommand/default.nix
+++ b/pkgs/development/python-modules/autocommand/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,25 +26,19 @@ buildPythonPackage rec {
     rm setup.py
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # fails with: SyntaxError: invalid syntax
   doCheck = false;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "autocommand"
-  ];
+  pythonImportsCheck = [ "autocommand" ];
 
   meta = with lib; {
     description = "Autocommand turns a python function into a CLI program";
     homepage = "https://github.com/Lucretiel/autocommand";
     license = licenses.lgpl3Only;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/autofaiss/default.nix b/pkgs/development/python-modules/autofaiss/default.nix
index af5bbbebbb7d7..02dd9c071d7f2 100644
--- a/pkgs/development/python-modules/autofaiss/default.nix
+++ b/pkgs/development/python-modules/autofaiss/default.nix
@@ -1,15 +1,15 @@
-{ buildPythonPackage
-, embedding-reader
-, faiss
-, fetchFromGitHub
-, fire
-, fsspec
-, lib
-, numpy
-, pyarrow
-, pytestCheckHook
-, pythonRelaxDepsHook
-, pythonOlder
+{
+  buildPythonPackage,
+  embedding-reader,
+  faiss,
+  fetchFromGitHub,
+  fire,
+  fsspec,
+  lib,
+  numpy,
+  pyarrow,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +26,6 @@ buildPythonPackage rec {
     hash = "sha256-pey3wrW7CDLMiPPKnmYrcSJqGuy6ecA2SE9m3Jtt6DU=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   pythonRemoveDeps = [
     # The `dataclasses` packages is a python2-only backport, unnecessary in
@@ -56,9 +53,7 @@ buildPythonPackage rec {
     pyarrow
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Attempts to spin up a Spark cluster and talk to it which doesn't work in
diff --git a/pkgs/development/python-modules/autoflake/default.nix b/pkgs/development/python-modules/autoflake/default.nix
index 1fc68b92f94b6..1351237609688 100644
--- a/pkgs/development/python-modules/autoflake/default.nix
+++ b/pkgs/development/python-modules/autoflake/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatchling
-, pyflakes
-, pytestCheckHook
-, pythonOlder
-, tomli
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  pyflakes,
+  pytestCheckHook,
+  pythonOlder,
+  tomli,
 }:
 buildPythonPackage rec {
   pname = "autoflake";
@@ -17,22 +18,13 @@ buildPythonPackage rec {
     hash = "sha256-yYt13FsKhkWcTwGh0yrH60M47EMXpEaVFf8eaH7NkJ4=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
-  propagatedBuildInputs = [
-    pyflakes
-  ]
-  ++ lib.optional (pythonOlder "3.11") tomli;
+  propagatedBuildInputs = [ pyflakes ] ++ lib.optional (pythonOlder "3.11") tomli;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "autoflake"
-  ];
+  pythonImportsCheck = [ "autoflake" ];
 
   disabledTests = [
     # AssertionError: True is not false
diff --git a/pkgs/development/python-modules/autograd-gamma/default.nix b/pkgs/development/python-modules/autograd-gamma/default.nix
index a772a09678596..0e38848d6f7d4 100644
--- a/pkgs/development/python-modules/autograd-gamma/default.nix
+++ b/pkgs/development/python-modules/autograd-gamma/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pytestCheckHook, autograd, scipy }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  autograd,
+  scipy,
+}:
 
 buildPythonPackage rec {
   pname = "autograd-gamma";
diff --git a/pkgs/development/python-modules/autograd/default.nix b/pkgs/development/python-modules/autograd/default.nix
index 26f636e85bf03..2b7569d8f7450 100644
--- a/pkgs/development/python-modules/autograd/default.nix
+++ b/pkgs/development/python-modules/autograd/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, future
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  future,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
   # fixed, enable testing. See: https://github.com/HIPS/autograd/issues/404
   doCheck = false;
 
-  pythonImportsCheck = [
-    "autograd"
-  ];
+  pythonImportsCheck = [ "autograd" ];
 
   meta = with lib; {
     homepage = "https://github.com/HIPS/autograd";
diff --git a/pkgs/development/python-modules/autoit-ripper/default.nix b/pkgs/development/python-modules/autoit-ripper/default.nix
index 3a4f3f059fc9f..47d54b20820b6 100644
--- a/pkgs/development/python-modules/autoit-ripper/default.nix
+++ b/pkgs/development/python-modules/autoit-ripper/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pefile
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pefile,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,20 +19,14 @@ buildPythonPackage rec {
     hash = "sha256-+BHWDkeVewoRUgaHln5TyoajpCvJiowCiC2dFYyp1MA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pefile
-  ];
+  propagatedBuildInputs = [ pefile ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "autoit_ripper"
-  ];
+  pythonImportsCheck = [ "autoit_ripper" ];
 
   meta = with lib; {
     description = "Python module to extract AutoIt scripts embedded in PE binaries";
diff --git a/pkgs/development/python-modules/autologging/default.nix b/pkgs/development/python-modules/autologging/default.nix
index 46adfc6195ac4..4d58b3d8ab53c 100644
--- a/pkgs/development/python-modules/autologging/default.nix
+++ b/pkgs/development/python-modules/autologging/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "autologging";
diff --git a/pkgs/development/python-modules/automat/default.nix b/pkgs/development/python-modules/automat/default.nix
index e69a30257f1c2..05d612256e43d 100644
--- a/pkgs/development/python-modules/automat/default.nix
+++ b/pkgs/development/python-modules/automat/default.nix
@@ -1,50 +1,54 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, attrs
-, pytest-benchmark
-, pytestCheckHook
-, setuptools-scm
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  attrs,
+  pytest-benchmark,
+  pytestCheckHook,
+  setuptools-scm,
+  six,
 }:
 
-let automat = buildPythonPackage rec {
-  version = "22.10.0";
-  format = "setuptools";
-  pname = "automat";
-
-  src = fetchPypi {
-    pname = "Automat";
-    inherit version;
-    hash = "sha256-5WvrhO2tGdzBHTDo2biV913ute9elrhKRnBms7hLsE4=";
-  };
-
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
-
-  propagatedBuildInputs = [
-    six
-    attrs
-  ];
-
-  nativeCheckInputs = [
-    pytest-benchmark
-    pytestCheckHook
-  ];
-
-  # escape infinite recursion with twisted
-  doCheck = false;
-
-  passthru.tests = {
-    check = automat.overridePythonAttrs (_: { doCheck = true; });
-  };
-
-  meta = with lib; {
-    homepage = "https://github.com/glyph/Automat";
-    description = "Self-service finite-state machines for the programmer on the go";
-    mainProgram = "automat-visualize";
-    license = licenses.mit;
-    maintainers = with maintainers; [ ];
+let
+  automat = buildPythonPackage rec {
+    version = "22.10.0";
+    format = "setuptools";
+    pname = "automat";
+
+    src = fetchPypi {
+      pname = "Automat";
+      inherit version;
+      hash = "sha256-5WvrhO2tGdzBHTDo2biV913ute9elrhKRnBms7hLsE4=";
+    };
+
+    nativeBuildInputs = [ setuptools-scm ];
+
+    propagatedBuildInputs = [
+      six
+      attrs
+    ];
+
+    nativeCheckInputs = [
+      pytest-benchmark
+      pytestCheckHook
+    ];
+
+    # escape infinite recursion with twisted
+    doCheck = false;
+
+    passthru.tests = {
+      check = automat.overridePythonAttrs (_: {
+        doCheck = true;
+      });
+    };
+
+    meta = with lib; {
+      homepage = "https://github.com/glyph/Automat";
+      description = "Self-service finite-state machines for the programmer on the go";
+      mainProgram = "automat-visualize";
+      license = licenses.mit;
+      maintainers = [ ];
+    };
   };
-}; in automat
+in
+automat
diff --git a/pkgs/development/python-modules/automate-home/default.nix b/pkgs/development/python-modules/automate-home/default.nix
index c13395aa42e3e..bfaa26afc761d 100644
--- a/pkgs/development/python-modules/automate-home/default.nix
+++ b/pkgs/development/python-modules/automate-home/default.nix
@@ -1,29 +1,42 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, apscheduler
-, hiredis
-, aioredis
-, ephem
-, pytz
-, pyyaml
+{
+  lib,
+  aioredis,
+  apscheduler,
+  buildPythonPackage,
+  ephem,
+  fetchPypi,
+  hiredis,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  pytz,
+  pyyaml,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "automate-home";
   version = "0.9.1";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  # Typing issue
+  disabled = pythonOlder "3.8" || pythonAtLeast "3.12";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-41qd+KPSrOrczkovwXht3irbcYlYehBZ1HZ44yZe4cM=";
   };
 
-  propagatedBuildInputs = [
+  postPatch = ''
+    # Rename pyephem, https://github.com/majamassarini/automate-home/pull/3
+    substituteInPlace setup.py \
+      --replace-fail "pyephem" "ephem" \
+      --replace-fail "aioredis==1.3.1" "aioredis"
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     apscheduler
     hiredis
     aioredis
@@ -32,24 +45,14 @@ buildPythonPackage rec {
     pyyaml
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  postPatch = ''
-    # Rename pyephem, https://github.com/majamassarini/automate-home/pull/3
-    substituteInPlace setup.py \
-      --replace "pyephem" "ephem" \
-      --replace "aioredis==1.3.1" "aioredis"
-  '';
-
-  pythonImportsCheck = [
-    "home"
-  ];
+  pythonImportsCheck = [ "home" ];
 
   meta = with lib; {
     description = "Python module to automate (home) devices";
     homepage = "https://github.com/majamassarini/automate-home";
+    changelog = "https://github.com/majamassarini/automate-home/releases/tag/${version}";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/automx2/default.nix b/pkgs/development/python-modules/automx2/default.nix
index a0b4f78e6754c..298dd7fb9adc3 100644
--- a/pkgs/development/python-modules/automx2/default.nix
+++ b/pkgs/development/python-modules/automx2/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flask
-, flask-migrate
-, ldap3
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flask,
+  flask-migrate,
+  ldap3,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "automx2";
-  version = "2024.1";
+  version = "2024.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -19,13 +20,11 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "rseichter";
     repo = "automx2";
-    rev = version;
-    hash = "sha256-s/kd9A/d3SPMZC9+B4DdcXVi77WLH/SBwXIdaKHUj34=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-7SbSKSjDHTppdqfPPKvuWbdoksHa6BMIOXOq0jDggTE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     flask
@@ -33,13 +32,9 @@ buildPythonPackage rec {
     ldap3
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "automx2"
-  ];
+  pythonImportsCheck = [ "automx2" ];
 
   meta = with lib; {
     description = "Email client configuration made easy";
diff --git a/pkgs/development/python-modules/autopage/default.nix b/pkgs/development/python-modules/autopage/default.nix
index c8fbd6b9473df..8d2963037a349 100644
--- a/pkgs/development/python-modules/autopage/default.nix
+++ b/pkgs/development/python-modules/autopage/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, setuptools }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "autopage";
@@ -11,14 +16,12 @@ buildPythonPackage rec {
     hash = "sha256-gmmW10xaqfS2kWGVVHMSrGOEusOBC4UXBj8pMkgle3I=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   pythonImportsCheck = [ "autopage" ];
 
   meta = with lib; {
-    description = "A library to provide automatic paging for console output";
+    description = "Library to provide automatic paging for console output";
     homepage = "https://github.com/zaneb/autopage";
     license = licenses.asl20;
     maintainers = teams.openstack.members;
diff --git a/pkgs/development/python-modules/autopep8/default.nix b/pkgs/development/python-modules/autopep8/default.nix
index 34dd0baa4c99d..4088b131d4e3a 100644
--- a/pkgs/development/python-modules/autopep8/default.nix
+++ b/pkgs/development/python-modules/autopep8/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, glibcLocales
-, pycodestyle
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, tomli
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  glibcLocales,
+  pycodestyle,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  tomli,
 }:
 
 buildPythonPackage rec {
@@ -24,15 +24,9 @@ buildPythonPackage rec {
     hash = "sha256-psGl9rXxTQGHyXf1VskJ/I/goVH5hRRP5bUXQdaT/8M=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pycodestyle
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  propagatedBuildInputs = [ pycodestyle ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   nativeCheckInputs = [
     glibcLocales
@@ -43,7 +37,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     changelog = "https://github.com/hhatto/autopep8/releases/tag/v${version}";
-    description = "A tool that automatically formats Python code to conform to the PEP 8 style guide";
+    description = "Tool that automatically formats Python code to conform to the PEP 8 style guide";
     homepage = "https://github.com/hhatto/autopep8";
     license = licenses.mit;
     mainProgram = "autopep8";
diff --git a/pkgs/development/python-modules/autoslot/default.nix b/pkgs/development/python-modules/autoslot/default.nix
index c234b35e0e585..55059da486a0c 100644
--- a/pkgs/development/python-modules/autoslot/default.nix
+++ b/pkgs/development/python-modules/autoslot/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,17 +27,11 @@ buildPythonPackage rec {
       --replace 'build-backend = "flit.buildapi"' 'build-backend = "flit_core.buildapi"'
   '';
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "autoslot"
-  ];
+  pythonImportsCheck = [ "autoslot" ];
 
   meta = with lib; {
     description = "Automatic __slots__ for your Python classes";
diff --git a/pkgs/development/python-modules/autotrash/default.nix b/pkgs/development/python-modules/autotrash/default.nix
new file mode 100644
index 0000000000000..6c628b3925357
--- /dev/null
+++ b/pkgs/development/python-modules/autotrash/default.nix
@@ -0,0 +1,33 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "autotrash";
+  version = "0.4.7";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "bneijt";
+    repo = "autotrash";
+    rev = "refs/tags/${version}";
+    hash = "sha256-qMU3jjBL5+fd9vKX5BIqES5AM8D/54aBOmdHFiBtfEo=";
+  };
+
+  build-system = [ poetry-core ];
+
+  pythonImportsCheck = [ "autotrash" ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "Tool to automatically purge old trashed files";
+    license = lib.licenses.gpl3Plus;
+    homepage = "https://bneijt.nl/pr/autotrash";
+    maintainers = with lib.maintainers; [ sigmanificient ];
+    mainProgram = "autotrash";
+  };
+}
diff --git a/pkgs/development/python-modules/av/default.nix b/pkgs/development/python-modules/av/default.nix
index b57472867005d..e3da4e6427cc4 100644
--- a/pkgs/development/python-modules/av/default.nix
+++ b/pkgs/development/python-modules/av/default.nix
@@ -1,45 +1,55 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, ffmpeg_5-headless
-, numpy
-, pillow
-, pkg-config
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+  fetchurl,
+  linkFarm,
+  ffmpeg_6-headless,
+  numpy,
+  pillow,
+  pkg-config,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "av";
-  version = "11.0.0";
+  version = "12.3.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
-    owner = "mikeboers";
+    owner = "PyAV-Org";
     repo = "PyAV";
     rev = "refs/tags/v${version}";
-    hash = "sha256-pCKP+4ZmZCJcG7/Qy9H6aS4svQdgaRA9S1QVNWFYhSQ=";
+    hash = "sha256-ezeYv55UzNnnYDjrMz5YS5g2pV6U/Fxx3e2bCoPP3eI=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     cython
-    pkg-config
     setuptools
   ];
 
-  buildInputs = [
-    ffmpeg_5-headless
-  ];
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ ffmpeg_6-headless ];
 
-  preCheck = ''
-    # ensure we import the built version
-    rm -r av
-  '';
+  preCheck =
+    let
+      # Update with `./update-test-samples.bash` if necessary.
+      testSamples = linkFarm "pyav-test-samples" (
+        lib.mapAttrs (_: fetchurl) (lib.importTOML ./test-samples.toml)
+      );
+    in
+    ''
+      # ensure we import the built version
+      rm -r av
+      ln -s ${testSamples} tests/assets
+    '';
 
   nativeCheckInputs = [
     numpy
@@ -48,58 +58,12 @@ buildPythonPackage rec {
   ];
 
   disabledTests = [
-    # urlopen fails during DNS resolution
-    "test_writing_to_custom_io"
-    "test_decode_close_then_use"
-    # Tests that want to download FATE data, https://github.com/PyAV-Org/PyAV/issues/955
-    "test_vobsub"
-    "test_transcode"
-    "test_stream_tuples"
-    "test_stream_seek"
-    "test_stream_probing"
-    "test_seek_start"
-    "test_seek_middle"
-    "test_seek_int64"
-    "test_seek_float"
-    "test_seek_end"
-    "test_roundtrip"
-    "test_reading_from_write_readonl"
-    "test_reading_from_pipe_readonly"
-    "test_reading_from_file"
-    "test_reading_from_buffer"
-    "test_reading_from_buffer_no_see"
-    "test_parse"
-    "test_movtext"
-    "test_encoding_xvid"
-    "test_encoding_tiff"
-    "test_encoding_png"
-    "test_encoding_pcm_s24le"
-    "test_encoding_mpeg4"
-    "test_encoding_mpeg1video"
-    "test_encoding_mp2"
-    "test_encoding_mjpeg"
-    "test_encoding_h264"
-    "test_encoding_dvvideo"
-    "test_encoding_dnxhd"
-    "test_encoding_aac"
-    "test_decoded_video_frame_count"
-    "test_decoded_time_base"
-    "test_decoded_motion_vectors"
-    "test_decode_half"
-    "test_decode_audio_sample_count"
-    "test_data"
-    "test_container_probing"
-    "test_codec_tag"
-    "test_selection"
-  ] ++ lib.optionals (stdenv.isDarwin) [
-    # Segmentation Faults
-    "test_encoding_with_pts"
-    "test_bayer_write"
+    # av.error.InvalidDataError: [Errno 1094995529] Invalid data found when processing input: 'custom_io_output.mpd'
+    "test_writing_to_custom_io_dash"
   ];
 
-  disabledTestPaths = [
-    # urlopen fails during DNS resolution
-    "tests/test_doctests.py"
+  # `__darwinAllowLocalNetworking` doesn’t work for these; not sure why.
+  disabledTestPaths = lib.optionals stdenv.hostPlatform.isDarwin [
     "tests/test_timeout.py"
   ];
 
@@ -130,11 +94,11 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "Pythonic bindings for FFmpeg/Libav";
+    description = "Pythonic bindings for FFmpeg";
     mainProgram = "pyav";
-    homepage = "https://github.com/mikeboers/PyAV/";
+    homepage = "https://github.com/PyAV-Org/PyAV";
     changelog = "https://github.com/PyAV-Org/PyAV/blob/v${version}/CHANGELOG.rst";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/av/test-samples.toml b/pkgs/development/python-modules/av/test-samples.toml
new file mode 100644
index 0000000000000..cdc1d93362f18
--- /dev/null
+++ b/pkgs/development/python-modules/av/test-samples.toml
@@ -0,0 +1,17 @@
+"fate-suite/aac/latm_stereo_to_51.ts" = { url = "http://fate.ffmpeg.org/fate-suite/aac/latm_stereo_to_51.ts", hash = "sha256-lVz0iby2IEUVdwKYamv4HVm8EUGHJS/cWY+QFBMaCBY=" }
+"fate-suite/amv/MTV_high_res_320x240_sample_Penguin_Joke_MTV_from_WMV.amv" = { url = "http://fate.ffmpeg.org/fate-suite/amv/MTV_high_res_320x240_sample_Penguin_Joke_MTV_from_WMV.amv", hash = "sha256-O9YMj0+0bM4YyZNGgkZJL8E2aG+Y3lq8/c+DVht0McI=" }
+"fate-suite/audio-reference/chorusnoise_2ch_44kHz_s16.wav" = { url = "http://fate.ffmpeg.org/fate-suite/audio-reference/chorusnoise_2ch_44kHz_s16.wav", hash = "sha256-KodB5hQkBFtfkI+L7hnkSonPM+IuOCNrTV3Vsy1bvhs=" }
+"fate-suite/h264/interlaced_crop.mp4" = { url = "http://fate.ffmpeg.org/fate-suite/h264/interlaced_crop.mp4", hash = "sha256-SVWWaOcfOp718dvgkpgOWCYoV9Ylomv8MBYzbRqvbBE=" }
+"fate-suite/hap/HAPQA_NoSnappy_127x1.mov" = { url = "http://fate.ffmpeg.org/fate-suite/hap/HAPQA_NoSnappy_127x1.mov", hash = "sha256-WMUqg9o84ki2AIIsGhY8P10KBc3qgCsmljqJXXRHbs8=" }
+"fate-suite/mkv/codec_delay_opus.mkv" = { url = "http://fate.ffmpeg.org/fate-suite/mkv/codec_delay_opus.mkv", hash = "sha256-GanpfRyGKN36NLAa7pZehcM1F2VDCW3g6hhO26vFg1I=" }
+"fate-suite/mov/displaymatrix.mov" = { url = "http://fate.ffmpeg.org/fate-suite/mov/displaymatrix.mov", hash = "sha256-Aq0/zcKKHI2dgThIKfYMXCjNI6WoVwy7VtD5Bke6krQ=" }
+"fate-suite/mov/mov-1elist-ends-last-bframe.mov" = { url = "http://fate.ffmpeg.org/fate-suite/mov/mov-1elist-ends-last-bframe.mov", hash = "sha256-1g488WPvvzzeHXoQg7xZnrVCoGCz7sOUSpzZj6qWnhI=" }
+"fate-suite/mov/white_zombie_scrunch-part.mov" = { url = "http://fate.ffmpeg.org/fate-suite/mov/white_zombie_scrunch-part.mov", hash = "sha256-apoPuBxsjqkjCaSdtgTJhpYFXMp5LbtZQz+lo3o9jx8=" }
+"fate-suite/mpeg2/mpeg2_field_encoding.ts" = { url = "http://fate.ffmpeg.org/fate-suite/mpeg2/mpeg2_field_encoding.ts", hash = "sha256-logzOhRbniwhObnKts1JZqzRl4j9YgtLMdtcKJFUfLg=" }
+"fate-suite/mxf/track_01_v02.mxf" = { url = "http://fate.ffmpeg.org/fate-suite/mxf/track_01_v02.mxf", hash = "sha256-AQ+UxFVfBgQwbEtoMautd02BL5kC6pAbsXD3SVRd9xE=" }
+"fate-suite/png1/55c99e750a5fd6_50314226.png" = { url = "http://fate.ffmpeg.org/fate-suite/png1/55c99e750a5fd6_50314226.png", hash = "sha256-yADmkBgeMB5wv140gwnaDMjvErRTXZhXdBz02HZSMBc=" }
+"fate-suite/qtrle/aletrek-rle.mov" = { url = "http://fate.ffmpeg.org/fate-suite/qtrle/aletrek-rle.mov", hash = "sha256-uXUvVkwuPbfs/rzT896ty3RZfvGoSPj3su+sjLPU09g=" }
+"fate-suite/sub/MovText_capability_tester.mp4" = { url = "http://fate.ffmpeg.org/fate-suite/sub/MovText_capability_tester.mp4", hash = "sha256-Y2uhvfGrZaPebD6ZsJemzpOk+XHX6ukBceVauEit9h8=" }
+"fate-suite/sub/vobsub.sub" = { url = "http://fate.ffmpeg.org/fate-suite/sub/vobsub.sub", hash = "sha256-X2rEMyTlo1xuUlqgx2uvqd2WWhfOCID9fraeGbaFPIs=" }
+"pyav-curated/pexels/time-lapse-video-of-night-sky-857195.mp4" = { url = "https://pyav.org/datasets/pexels/time-lapse-video-of-night-sky-857195.mp4", hash = "sha256-6307VwepfoVNKeGm8WEMZtfowJZ27Hv2fwgp6J/Q0oE=" }
+"pyav-curated/pexels/time-lapse-video-of-sunset-by-the-sea-854400.mp4" = { url = "https://pyav.org/datasets/pexels/time-lapse-video-of-sunset-by-the-sea-854400.mp4", hash = "sha256-2RWphhz5KWPSnJh8ARrC7aPjBa77DJO1Fv0/I4kWxYg=" }
diff --git a/pkgs/development/python-modules/av/update-test-samples.bash b/pkgs/development/python-modules/av/update-test-samples.bash
new file mode 100755
index 0000000000000..5b0b1966d43b2
--- /dev/null
+++ b/pkgs/development/python-modules/av/update-test-samples.bash
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+
+set -o errexit
+set -o nounset
+
+if test "$#" != 1; then
+  printf >&2 'usage: update-test-samples.bash /path/to/PyAV/source\n'
+  exit 2
+fi
+
+pyav_source=$1
+
+exec > "$(dirname "$(readlink -f "$0")")/test-samples.toml"
+
+fetch() {
+  path=$1
+  url=$2
+  prefetch_json=$(nix store prefetch-file --json "${url}")
+  sri_hash=$(jq -r .hash <<< "${prefetch_json}")
+  printf '"%s" = { url = "%s", hash = "%s" }\n' "${path}" "${url}" "${sri_hash}"
+}
+
+fetch_all() {
+  function=$1
+  base_path=$2
+  base_url=$3
+
+  samples=$(
+    rg \
+      --only-matching \
+      --no-filename \
+      "\\b${function}\\([\"']([^\"']+)[\"']\\)" \
+      --replace '$1' \
+      "${pyav_source}"
+  )
+  unique_samples=$(sort -u <<< "${samples}")
+
+  while IFS= read -r sample; do
+    fetch "${base_path}/${sample}" "${base_url}/${sample}"
+  done <<< "${unique_samples}"
+}
+
+fetch_all fate_suite fate-suite "http://fate.ffmpeg.org/fate-suite"
+fetch_all curated pyav-curated "https://pyav.org/datasets"
diff --git a/pkgs/development/python-modules/avea/default.nix b/pkgs/development/python-modules/avea/default.nix
index 01440a0ff9ace..202d6e7b7742a 100644
--- a/pkgs/development/python-modules/avea/default.nix
+++ b/pkgs/development/python-modules/avea/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, bluepy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  bluepy,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     sha256 = "1dirf0zdf4hb941w1dvh97vsvcy4h3w9r8jwdgr1ggmhdf9kfx4v";
   };
 
-  propagatedBuildInputs = [
-    bluepy
-  ];
+  propagatedBuildInputs = [ bluepy ];
 
   # no tests are present
   doCheck = false;
diff --git a/pkgs/development/python-modules/avidtools/default.nix b/pkgs/development/python-modules/avidtools/default.nix
index bcb1ba01c819a..3b58583c4fd25 100644
--- a/pkgs/development/python-modules/avidtools/default.nix
+++ b/pkgs/development/python-modules/avidtools/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, datetime
-, fetchPypi
-, nvdlib
-, pydantic
-, pythonOlder
-, setuptools
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  datetime,
+  fetchPypi,
+  nvdlib,
+  pydantic,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     sed -i "/'typing'/d" setup.py
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     datetime
@@ -39,9 +38,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "avidtools"
-  ];
+  pythonImportsCheck = [ "avidtools" ];
 
   meta = with lib; {
     description = "Developer tools for AVID";
diff --git a/pkgs/development/python-modules/avion/default.nix b/pkgs/development/python-modules/avion/default.nix
index 8bb0f339cd482..d4b4a72148d92 100644
--- a/pkgs/development/python-modules/avion/default.nix
+++ b/pkgs/development/python-modules/avion/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, bluepy
-, buildPythonPackage
-, csrmesh
-, fetchPypi
-, pycryptodome
-, pythonOlder
-, requests
+{
+  lib,
+  bluepy,
+  buildPythonPackage,
+  csrmesh,
+  fetchPypi,
+  pycryptodome,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/avro-python3/default.nix b/pkgs/development/python-modules/avro-python3/default.nix
index 114ff98326f82..df1e67017ab56 100644
--- a/pkgs/development/python-modules/avro-python3/default.nix
+++ b/pkgs/development/python-modules/avro-python3/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k, pycodestyle, isort }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  pycodestyle,
+  isort,
+}:
 
 buildPythonPackage rec {
   pname = "avro-python3";
@@ -11,15 +18,21 @@ buildPythonPackage rec {
     sha256 = "3b63f24e6b04368c3e4a6f923f484be0230d821aad65ac36108edbff29e9aaab";
   };
 
-  buildInputs = [ pycodestyle isort ];
-  doCheck = false;        # No such file or directory: './run_tests.py
+  buildInputs = [
+    pycodestyle
+    isort
+  ];
+  doCheck = false; # No such file or directory: './run_tests.py
 
   meta = with lib; {
-    description = "A serialization and RPC framework";
+    description = "Serialization and RPC framework";
     mainProgram = "avro";
     homepage = "https://pypi.python.org/pypi/avro-python3/";
     license = licenses.asl20;
 
-    maintainers = [ maintainers.shlevy maintainers.timma ];
+    maintainers = [
+      maintainers.shlevy
+      maintainers.timma
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/avro/default.nix b/pkgs/development/python-modules/avro/default.nix
index 21246fae47433..ec07daa2880c6 100644
--- a/pkgs/development/python-modules/avro/default.nix
+++ b/pkgs/development/python-modules/avro/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, setuptools
-, fetchPypi
-, typing-extensions
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  setuptools,
+  fetchPypi,
+  typing-extensions,
+  pytest7CheckHook,
 }:
 
 buildPythonPackage rec {
@@ -12,6 +13,7 @@ buildPythonPackage rec {
   version = "1.11.3";
   pyproject = true;
 
+  # distutils usage: https://github.com/search?q=repo%3Aapache%2Favro%20distutils&type=code
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
@@ -24,17 +26,11 @@ buildPythonPackage rec {
       --replace-fail 'distutils' 'setuptools._distutils'
   '';
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytest7CheckHook ];
 
   disabledTests = [
     # Requires network access
@@ -43,9 +39,7 @@ buildPythonPackage rec {
     "test_schema_compatibility_type_mismatch"
   ];
 
-  pythonImportsCheck = [
-    "avro"
-  ];
+  pythonImportsCheck = [ "avro" ];
 
   meta = with lib; {
     description = "Python serialization and RPC framework";
diff --git a/pkgs/development/python-modules/avro3k/default.nix b/pkgs/development/python-modules/avro3k/default.nix
index 43a61d6d02203..cc85bb4611a67 100644
--- a/pkgs/development/python-modules/avro3k/default.nix
+++ b/pkgs/development/python-modules/avro3k/default.nix
@@ -1,9 +1,15 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  isPy3k,
+}:
 
 buildPythonPackage rec {
   pname = "avro3k";
   version = "1.7.7-SNAPSHOT";
-  format = "setuptools";
+  pyproject = true;
   disabled = !isPy3k;
 
   src = fetchPypi {
@@ -14,13 +20,15 @@ buildPythonPackage rec {
   # setuptools.extern.packaging.version.InvalidVersion: Invalid version: '1.7.7-SNAPSHOT'
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "1.7.7-SNAPSHOT" "1.7.7"
+      --replace-fail "1.7.7-SNAPSHOT" "1.7.7"
   '';
 
-  doCheck = false;        # No such file or directory: './run_tests.py
+  build-system = [ setuptools ];
+
+  doCheck = false; # No such file or directory: './run_tests.py
 
   meta = with lib; {
-    description = "A serialization and RPC framework";
+    description = "Serialization and RPC framework";
     mainProgram = "avro";
     homepage = "https://pypi.python.org/pypi/avro3k/";
   };
diff --git a/pkgs/development/python-modules/avwx-engine/default.nix b/pkgs/development/python-modules/avwx-engine/default.nix
new file mode 100644
index 0000000000000..af6162dc92637
--- /dev/null
+++ b/pkgs/development/python-modules/avwx-engine/default.nix
@@ -0,0 +1,82 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  geopy,
+  hatchling,
+  httpx,
+  numpy,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  rapidfuzz,
+  scipy,
+  shapely,
+  time-machine,
+  xmltodict,
+}:
+
+buildPythonPackage rec {
+  pname = "avwx-engine";
+  version = "1.9.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "avwx-rest";
+    repo = "avwx-engine";
+    rev = "refs/tags/${version}";
+    hash = "sha256-CUnUz2SsXtWaqGzaB1PH+EoHqebSue6e8GXhRZRcXLs=";
+  };
+
+  build-system = [ hatchling ];
+
+  dependencies = [
+    geopy
+    httpx
+    python-dateutil
+    xmltodict
+  ];
+
+  passthru.optional-dependencies = {
+    all = [
+      numpy
+      rapidfuzz
+      scipy
+      shapely
+    ];
+    fuzz = [ rapidfuzz ];
+    scipy = [
+      numpy
+      scipy
+    ];
+    shape = [ shapely ];
+  };
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytest-cov-stub
+    pytestCheckHook
+    time-machine
+  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+
+  pythonImportsCheck = [ "avwx" ];
+
+  disabledTests = [
+    # Tests require network access
+    "fetch"
+    "test_nbm_all"
+    "test_station_nearest_ip"
+  ];
+
+  meta = with lib; {
+    description = "Aviation Weather parsing engine";
+    homepage = "https://github.com/avwx-rest/avwx-engine";
+    changelog = "https://github.com/avwx-rest/avwx-engine/blob/${version}/changelog.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/aw-client/default.nix b/pkgs/development/python-modules/aw-client/default.nix
index c08ea790059c9..42c51ed2f806c 100644
--- a/pkgs/development/python-modules/aw-client/default.nix
+++ b/pkgs/development/python-modules/aw-client/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, poetry-core
-, aw-core
-, requests
-, persist-queue
-, click
-, tabulate
-, typing-extensions
-, pytestCheckHook
-, gitUpdater
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  poetry-core,
+  aw-core,
+  requests,
+  persist-queue,
+  click,
+  tabulate,
+  typing-extensions,
+  pytestCheckHook,
+  gitUpdater,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
 
   disabled = pythonOlder "3.8";
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aw-core
@@ -42,9 +41,7 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Only run this test, the others are integration tests that require
   # an instance of aw-server running in order to function.
@@ -57,9 +54,7 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "aw_client" ];
 
-  passthru.updateScript = gitUpdater {
-    rev-prefix = "v";
-  };
+  passthru.updateScript = gitUpdater { rev-prefix = "v"; };
 
   meta = with lib; {
     description = "Client library for ActivityWatch";
diff --git a/pkgs/development/python-modules/aw-core/default.nix b/pkgs/development/python-modules/aw-core/default.nix
index 290c2650a0155..84b13c6f100de 100644
--- a/pkgs/development/python-modules/aw-core/default.nix
+++ b/pkgs/development/python-modules/aw-core/default.nix
@@ -1,20 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pythonRelaxDepsHook
-, poetry-core
-, jsonschema
-, peewee
-, platformdirs
-, iso8601
-, rfc3339-validator
-, strict-rfc3339
-, tomlkit
-, deprecation
-, timeslot
-, pytestCheckHook
-, gitUpdater
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  poetry-core,
+  jsonschema,
+  peewee,
+  platformdirs,
+  iso8601,
+  rfc3339-validator,
+  strict-rfc3339,
+  tomlkit,
+  deprecation,
+  timeslot,
+  pytestCheckHook,
+  gitUpdater,
 }:
 
 buildPythonPackage rec {
@@ -35,7 +35,6 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -55,9 +54,7 @@ buildPythonPackage rec {
     "iso8601"
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     # Fake home folder for tests that write to $HOME
@@ -66,9 +63,7 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "aw_core" ];
 
-  passthru.updateScript = gitUpdater {
-    rev-prefix = "v";
-  };
+  passthru.updateScript = gitUpdater { rev-prefix = "v"; };
 
   meta = with lib; {
     description = "Core library for ActivityWatch";
diff --git a/pkgs/development/python-modules/awacs/default.nix b/pkgs/development/python-modules/awacs/default.nix
index 18c5944b06cbe..efb134be67874 100644
--- a/pkgs/development/python-modules/awacs/default.nix
+++ b/pkgs/development/python-modules/awacs/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, python
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  python,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -18,17 +19,13 @@ buildPythonPackage rec {
     hash = "sha256-sNo1auVjdOqHLGzbAJRrsi6c2BfD861rAIAZ46RdgEA=";
   };
 
-  propagatedBuildInputs = lib.lists.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  propagatedBuildInputs = lib.lists.optionals (pythonOlder "3.8") [ typing-extensions ];
 
   checkPhase = ''
     ${python.interpreter} -m unittest discover
   '';
 
-  pythonImportsCheck = [
-    "awacs"
-  ];
+  pythonImportsCheck = [ "awacs" ];
 
   meta = with lib; {
     description = "AWS Access Policy Language creation library";
diff --git a/pkgs/development/python-modules/awesome-slugify/default.nix b/pkgs/development/python-modules/awesome-slugify/default.nix
index cd1717a96b4d6..1b43d389ee757 100644
--- a/pkgs/development/python-modules/awesome-slugify/default.nix
+++ b/pkgs/development/python-modules/awesome-slugify/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi, unidecode, regex, unittestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  unidecode,
+  regex,
+  unittestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "awesome-slugify";
@@ -19,7 +26,10 @@ buildPythonPackage rec {
     ./slugify_filename_test.patch # fixes broken test by new unidecode
   ];
 
-  propagatedBuildInputs = [ unidecode regex ];
+  propagatedBuildInputs = [
+    unidecode
+    regex
+  ];
 
   nativeCheckInputs = [ unittestCheckHook ];
 
diff --git a/pkgs/development/python-modules/awesomeversion/default.nix b/pkgs/development/python-modules/awesomeversion/default.nix
index f728bbb562097..f3bdfdfd22011 100644
--- a/pkgs/development/python-modules/awesomeversion/default.nix
+++ b/pkgs/development/python-modules/awesomeversion/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, poetry-core
-, pytest-snapshot
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  poetry-core,
+  pytest-snapshot,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "awesomeversion";
-  version = "24.2.0";
+  version = "24.6.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,7 +19,7 @@ buildPythonPackage rec {
     owner = "ludeeus";
     repo = "awesomeversion";
     rev = "refs/tags/${version}";
-    hash = "sha256-bpLtHhpWc1VweVl5G8mM473Js3bXT11N3Zc0jiVqq5c=";
+    hash = "sha256-lpG42Be0MVinWX5MyDvBPdoZFx66l6tpUxpAJRqEf88=";
   };
 
   postPatch = ''
@@ -27,13 +28,9 @@ buildPythonPackage rec {
       --replace-fail 'version = "0"' 'version = "${version}"'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  pythonImportsCheck = [
-    "awesomeversion"
-  ];
+  pythonImportsCheck = [ "awesomeversion" ];
 
   nativeCheckInputs = [
     pytest-snapshot
diff --git a/pkgs/development/python-modules/awkward-cpp/default.nix b/pkgs/development/python-modules/awkward-cpp/default.nix
index bd5c3197a0973..f503f2ad0af5b 100644
--- a/pkgs/development/python-modules/awkward-cpp/default.nix
+++ b/pkgs/development/python-modules/awkward-cpp/default.nix
@@ -1,48 +1,43 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, cmake
-, ninja
-, pybind11
-, scikit-build-core
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cmake,
+  ninja,
+  pybind11,
+  scikit-build-core,
+  numpy,
 }:
 
 buildPythonPackage rec {
   pname = "awkward-cpp";
-  version = "32";
+  version = "38";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
-
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-rYxa+GIG+w9DSxZ0nMXMppoVqI4WykPpHlbFzKd0IfA=";
+    pname = "awkward_cpp";
+    inherit version;
+    hash = "sha256-l0SVah14fD0hXqE8WqG2EQnIk/Ad0e/i2mj1jt6K0Vs=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     cmake
     ninja
     pybind11
     scikit-build-core
-  ] ++ scikit-build-core.optional-dependencies.pyproject;
-
-  propagatedBuildInputs = [
-    numpy
   ];
 
+  dependencies = [ numpy ];
+
   dontUseCmakeConfigure = true;
 
-  pythonImportsCheck = [
-    "awkward_cpp"
-  ];
+  pythonImportsCheck = [ "awkward_cpp" ];
 
-  meta = with lib; {
+  meta = {
     description = "CPU kernels and compiled extensions for Awkward Array";
     homepage = "https://github.com/scikit-hep/awkward";
     changelog = "https://github.com/scikit-hep/awkward/releases/tag/v${version}";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ veprbl ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ veprbl ];
   };
 }
diff --git a/pkgs/development/python-modules/awkward/default.nix b/pkgs/development/python-modules/awkward/default.nix
index d347b623d4077..aefec7c8f3266 100644
--- a/pkgs/development/python-modules/awkward/default.nix
+++ b/pkgs/development/python-modules/awkward/default.nix
@@ -1,90 +1,100 @@
-{ lib
-, fsspec
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, hatch-fancy-pypi-readme
-, hatchling
-, awkward-cpp
-, importlib-metadata
-, numpy
-, packaging
-, typing-extensions
-, jax
-, jaxlib
-, numba
-, setuptools
-, numexpr
-, pandas
-, pyarrow
-, pytest-xdist
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  hatch-fancy-pypi-readme,
+  hatchling,
+
+  # dependencies
+  awkward-cpp,
+  fsspec,
+  numpy,
+  packaging,
+  typing-extensions,
+  importlib-metadata,
+
+  # checks
+  numba,
+  setuptools,
+  numexpr,
+  pandas,
+  pyarrow,
+  pytest-xdist,
+  pytestCheckHook,
+  jax,
+  jaxlib,
+
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "awkward";
-  version = "2.6.3";
+  version = "2.6.8";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
-
   src = fetchFromGitHub {
     owner = "scikit-hep";
     repo = "awkward";
     rev = "refs/tags/v${version}";
-    hash = "sha256-zII5TZ0bzVEo5hTrLr45N7oL3lYhkCyNfZif+0vkEo4=";
+    hash = "sha256-2VhG4Elv1neBEfogfhjwlPltQK64wjaLUMhDg7xB/Ow=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-fancy-pypi-readme
     hatchling
   ];
 
-  propagatedBuildInputs = [
-    awkward-cpp
-    fsspec
-    importlib-metadata
-    numpy
-    packaging
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    typing-extensions
-  ] ++ lib.optionals (pythonOlder "3.12") [
-    importlib-metadata
-  ];
+  dependencies =
+    [
+      awkward-cpp
+      fsspec
+      numpy
+      packaging
+    ]
+    ++ lib.optionals (pythonOlder "3.11") [ typing-extensions ]
+    ++ lib.optionals (pythonOlder "3.12") [ importlib-metadata ];
 
   dontUseCmakeConfigure = true;
 
   pythonImportsCheck = [ "awkward" ];
 
-  nativeCheckInputs = [
-    fsspec
-    numba
-    setuptools
-    numexpr
-    pandas
-    pyarrow
-    pytest-xdist
-    pytestCheckHook
-  ] ++ lib.optionals (!stdenv.isDarwin) [
-    # no support for darwin
-    jax
-    jaxlib
-  ];
+  nativeCheckInputs =
+    [
+      fsspec
+      numba
+      setuptools
+      numexpr
+      pandas
+      pyarrow
+      pytest-xdist
+      pytestCheckHook
+    ]
+    ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
+      # no support for darwin
+      jax
+      jaxlib
+    ];
 
   # The following tests have been disabled because they need to be run on a GPU platform.
   disabledTestPaths = [
     "tests-cuda"
-  # Disable tests dependending on jax on darwin
-  ] ++ lib.optionals stdenv.isDarwin [
-    "tests/test_2603_custom_behaviors_with_jax.py"
+    # Disable tests dependending on jax on darwin
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ "tests/test_2603_custom_behaviors_with_jax.py" ];
+
+  disabledTests = [
+    # AssertionError: Regex pattern did not match.
+    "test_serialise_with_nonserialisable_attrs"
+    "test_serialise_with_nonserialisable_attrs"
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Manipulate JSON-like data with NumPy-like idioms";
     homepage = "https://github.com/scikit-hep/awkward";
     changelog = "https://github.com/scikit-hep/awkward/releases/tag/v${version}";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ veprbl ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ veprbl ];
   };
 }
diff --git a/pkgs/development/python-modules/aws-adfs/default.nix b/pkgs/development/python-modules/aws-adfs/default.nix
index 0c67f2ce4bce3..c2c0b859b033c 100644
--- a/pkgs/development/python-modules/aws-adfs/default.nix
+++ b/pkgs/development/python-modules/aws-adfs/default.nix
@@ -1,20 +1,20 @@
-{ lib
-, boto3
-, botocore
-, buildPythonPackage
-, click
-, configparser
-, fetchFromGitHub
-, fido2
-, lxml
-, poetry-core
-, pyopenssl
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
-, requests-kerberos
-, toml
+{
+  lib,
+  boto3,
+  botocore,
+  buildPythonPackage,
+  click,
+  configparser,
+  fetchFromGitHub,
+  fido2,
+  lxml,
+  poetry-core,
+  pyopenssl,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-kerberos,
+  toml,
 }:
 
 buildPythonPackage rec {
@@ -26,21 +26,21 @@ buildPythonPackage rec {
 
   src = fetchFromGitHub {
     owner = "venth";
-    repo = pname;
+    repo = "aws-adfs";
     rev = "refs/tags/v${version}";
     hash = "sha256-ZzQ92VBa8CApd0WkfPrUZsEZICK2fhwmt45P2sx2mK0=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = [
     "configparser"
+    "requests-kerberos"
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     boto3
     botocore
     click
@@ -61,16 +61,14 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d);
   '';
 
-  pythonImportsCheck = [
-    "aws_adfs"
-  ];
+  pythonImportsCheck = [ "aws_adfs" ];
 
   meta = with lib; {
     description = "Command line tool to ease AWS CLI authentication against ADFS";
-    mainProgram = "aws-adfs";
     homepage = "https://github.com/venth/aws-adfs";
     changelog = "https://github.com/venth/aws-adfs/releases/tag/v${version}";
     license = licenses.psfl;
     maintainers = with maintainers; [ bhipple ];
+    mainProgram = "aws-adfs";
   };
 }
diff --git a/pkgs/development/python-modules/aws-encryption-sdk/default.nix b/pkgs/development/python-modules/aws-encryption-sdk/default.nix
index 13f8d29ca9136..35e3af8980d19 100644
--- a/pkgs/development/python-modules/aws-encryption-sdk/default.nix
+++ b/pkgs/development/python-modules/aws-encryption-sdk/default.nix
@@ -1,34 +1,33 @@
-{ lib
-, attrs
-, boto3
-, buildPythonPackage
-, cryptography
-, fetchPypi
-, mock
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wrapt
+{
+  lib,
+  attrs,
+  boto3,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  mock,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  wrapt,
 }:
 
 buildPythonPackage rec {
   pname = "aws-encryption-sdk";
-  version = "3.2.0";
+  version = "3.3.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-QwT8+M4qo/qYsaz/ejvzzQUowynAxDe1Xg9Fa79iNH4=";
+    hash = "sha256-6yrboU9IHNg9cWmrjmQplIltOaSmTheWkEprSSVmE7A=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     attrs
     boto3
     cryptography
@@ -52,9 +51,7 @@ buildPythonPackage rec {
     "test_happy_version"
   ];
 
-  pythonImportsCheck = [
-    "aws_encryption_sdk"
-  ];
+  pythonImportsCheck = [ "aws_encryption_sdk" ];
 
   meta = with lib; {
     description = "Python implementation of the AWS Encryption SDK";
diff --git a/pkgs/development/python-modules/aws-lambda-builders/default.nix b/pkgs/development/python-modules/aws-lambda-builders/default.nix
index 9e32768ee18dc..97257d6108ffc 100644
--- a/pkgs/development/python-modules/aws-lambda-builders/default.nix
+++ b/pkgs/development/python-modules/aws-lambda-builders/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, parameterized
-, pip
-, pyelftools
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  parameterized,
+  pip,
+  pyelftools,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "aws-lambda-builders";
-  version = "1.48.0";
+  version = "1.50.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -22,7 +23,7 @@ buildPythonPackage rec {
     owner = "awslabs";
     repo = "aws-lambda-builders";
     rev = "refs/tags/v${version}";
-    hash = "sha256-g1f0OL41lvs8OLyLcBk6XJk9wZO/oWluUj5sUcXlUIE=";
+    hash = "sha256-GXpyO+Qd6NP5yxWn1kw34x+P5uyR0rcNlzwivT6eHdE=";
   };
 
   postPatch = ''
@@ -30,13 +31,9 @@ buildPythonPackage rec {
       --replace-fail "version=read_version()," 'version="${version}",'
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    six
-  ];
+  dependencies = [ six ];
 
   nativeCheckInputs = [
     mock
@@ -73,9 +70,7 @@ buildPythonPackage rec {
     "tests/integration/workflows/dotnet_clipackage/test_dotnet.py"
   ];
 
-  pythonImportsCheck = [
-    "aws_lambda_builders"
-  ];
+  pythonImportsCheck = [ "aws_lambda_builders" ];
 
   meta = with lib; {
     description = "Tool to compile, build and package AWS Lambda functions";
diff --git a/pkgs/development/python-modules/aws-request-signer/default.nix b/pkgs/development/python-modules/aws-request-signer/default.nix
new file mode 100644
index 0000000000000..065e4a2c166fc
--- /dev/null
+++ b/pkgs/development/python-modules/aws-request-signer/default.nix
@@ -0,0 +1,43 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  requests,
+  requests-toolbelt,
+}:
+
+buildPythonPackage rec {
+  pname = "aws-request-signer";
+  version = "1.2.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit version;
+    pname = "aws_request_signer";
+    hash = "sha256-DVorDO0wz94Fhduax7VsQZ5B5SnBfsHQoLoW4m6Ce+U=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "poetry>=0.12" poetry-core \
+      --replace-fail poetry.masonry.api poetry.core.masonry.api
+  '';
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    requests
+    requests-toolbelt
+  ];
+
+  doCheck = false;
+
+  meta = {
+    changelog = "https://github.com/iksteen/aws-request-signer/releases/tag/${version}";
+    description = "Python library to sign AWS requests using AWS Signature V4.";
+    homepage = "https://github.com/iksteen/aws-request-signer";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ pyrox0 ];
+  };
+}
diff --git a/pkgs/development/python-modules/aws-sam-translator/default.nix b/pkgs/development/python-modules/aws-sam-translator/default.nix
index 872adf8227683..c36c24553eced 100644
--- a/pkgs/development/python-modules/aws-sam-translator/default.nix
+++ b/pkgs/development/python-modules/aws-sam-translator/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, boto3
-, buildPythonPackage
-, fetchFromGitHub
-, jsonschema
-, parameterized
-, pydantic
-, pytest-env
-, pytest-rerunfailures
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, typing-extensions
+{
+  lib,
+  boto3,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jsonschema,
+  parameterized,
+  pydantic,
+  pytest-env,
+  pytest-rerunfailures,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "aws-sam-translator";
-  version = "1.86.0";
+  version = "1.89.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -25,7 +26,7 @@ buildPythonPackage rec {
     owner = "aws";
     repo = "serverless-application-model";
     rev = "refs/tags/v${version}";
-    hash = "sha256-elirU6u6smuYIj8oO6s2ybQB8Tu0pJPkBdjd0W0CfFE=";
+    hash = "sha256-wqM3n99lD0s/E9nd55q19Us31XgFtU/bBYJR1HTnnvk=";
   };
 
   postPatch = ''
@@ -80,15 +81,13 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [
-    "samtranslator"
-  ];
+  pythonImportsCheck = [ "samtranslator" ];
 
   meta = with lib; {
     description = "Python library to transform SAM templates into AWS CloudFormation templates";
     homepage = "https://github.com/aws/serverless-application-model";
     changelog = "https://github.com/aws/serverless-application-model/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/aws-secretsmanager-caching/default.nix b/pkgs/development/python-modules/aws-secretsmanager-caching/default.nix
index 46de183c1d42b..daf6adf4f00ce 100644
--- a/pkgs/development/python-modules/aws-secretsmanager-caching/default.nix
+++ b/pkgs/development/python-modules/aws-secretsmanager-caching/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, botocore
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  botocore,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "aws-secretsmanager-caching";
-  version = "1.1.2";
-  pyprject = true;
+  version = "1.1.3";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     pname = "aws_secretsmanager_caching";
     inherit version;
-    hash = "sha256-hhdo+I1yA/pLA+YFDFi8Ekrv27xQLpxiqXh1+4XqteA=";
+    hash = "sha256-9tbsnUPg2+T21d6982tMtpHRWpZ7NYsldfXZGXSmwP8=";
   };
 
   patches = [
@@ -32,18 +33,14 @@ buildPythonPackage rec {
       --replace-fail "'pytest-runner'," ""
   '';
 
-  build-system = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
   dependencies = [
     botocore
-    setuptools  # Needs pkg_resources at runtime.
+    setuptools # Needs pkg_resources at runtime.
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # Integration tests require networking.
@@ -65,9 +62,7 @@ buildPythonPackage rec {
     "test_valid_json"
   ];
 
-  pythonImportsCheck = [
-    "aws_secretsmanager_caching"
-  ];
+  pythonImportsCheck = [ "aws_secretsmanager_caching" ];
 
   meta = with lib; {
     description = "Client-side AWS secrets manager caching library";
diff --git a/pkgs/development/python-modules/aws-xray-sdk/default.nix b/pkgs/development/python-modules/aws-xray-sdk/default.nix
index 43d59437330bf..6774d1fefcc12 100644
--- a/pkgs/development/python-modules/aws-xray-sdk/default.nix
+++ b/pkgs/development/python-modules/aws-xray-sdk/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, aiohttp
-, botocore
-, bottle
-, buildPythonPackage
-, django
-, fetchFromGitHub
-, httpx
-, importlib-metadata
-, jsonpickle
-, pymysql
-, pytest-asyncio
-, pynamodb
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
-, sqlalchemy
-, webtest
-, wrapt
+{
+  lib,
+  aiohttp,
+  botocore,
+  bottle,
+  buildPythonPackage,
+  django,
+  fetchFromGitHub,
+  httpx,
+  importlib-metadata,
+  jsonpickle,
+  pymysql,
+  pytest-asyncio,
+  pynamodb,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
+  sqlalchemy,
+  webtest,
+  wrapt,
 }:
 
 buildPythonPackage rec {
   pname = "aws-xray-sdk";
-  version = "2.13.0";
+  version = "2.14.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -31,21 +32,17 @@ buildPythonPackage rec {
     owner = "aws";
     repo = "aws-xray-sdk-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-KhYYzeOteQxS1ltEUbjsDriHXO0Kom9YiCvVhSNvXVQ=";
+    hash = "sha256-rWP0yQ+Ril0UByOCWJKcL3mD7TvzK8Ddq9JlFIRBFU4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     botocore
     jsonpickle
     requests
     wrapt
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   nativeCheckInputs = [
     aiohttp
@@ -68,15 +65,13 @@ buildPythonPackage rec {
     "tests/test_patcher.py"
   ];
 
-  pythonImportsCheck = [
-    "aws_xray_sdk"
-  ];
+  pythonImportsCheck = [ "aws_xray_sdk" ];
 
   meta = with lib; {
     description = "AWS X-Ray SDK for the Python programming language";
     homepage = "https://github.com/aws/aws-xray-sdk-python";
     changelog = "https://github.com/aws/aws-xray-sdk-python/blob/${version}/CHANGELOG.rst";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/awscrt/default.nix b/pkgs/development/python-modules/awscrt/default.nix
index d5d0cb5891719..08c902f138329 100644
--- a/pkgs/development/python-modules/awscrt/default.nix
+++ b/pkgs/development/python-modules/awscrt/default.nix
@@ -1,45 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cmake
-, perl
-, stdenv
-, gcc10
-, CoreFoundation
-, Security
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cmake,
+  perl,
+  stdenv,
+  CoreFoundation,
+  Security,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "awscrt";
-  version = "0.20.9";
+  version = "0.21.5";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-JDeFrJ7mSUXgR5wjhDJVRfKVl1dXQ86Ew3FVbRAU5j4=";
+    hash = "sha256-fsKmevMPvzhklN8Au9+Zb3AkAA32sBqxYAFK/vK5EAU=";
   };
 
-  buildInputs = lib.optionals stdenv.isDarwin [
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
     CoreFoundation
     Security
   ];
 
-  # gcc <10 is not supported, LLVM on darwin is just fine
-  nativeBuildInputs = [
-    cmake
-  ] ++ lib.optionals (!stdenv.isDarwin && stdenv.isAarch64) [
-    gcc10
-    perl
-  ];
+  nativeBuildInputs = [ cmake ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ perl ];
 
   dontUseCmakeConfigure = true;
 
-  pythonImportsCheck = [
-    "awscrt"
-  ];
+  pythonImportsCheck = [ "awscrt" ];
 
   # Unable to import test module
   # https://github.com/awslabs/aws-crt-python/issues/281
diff --git a/pkgs/development/python-modules/awsiotpythonsdk/default.nix b/pkgs/development/python-modules/awsiotpythonsdk/default.nix
index 20da74babff29..3fd9258df22cb 100644
--- a/pkgs/development/python-modules/awsiotpythonsdk/default.nix
+++ b/pkgs/development/python-modules/awsiotpythonsdk/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-TUNIWGal7NQy2qmHVTiw6eX4t/Yt3NnM3HHztBwMfoM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "AWSIoTPythonSDK"
-  ];
+  pythonImportsCheck = [ "AWSIoTPythonSDK" ];
 
   meta = with lib; {
     description = "Python SDK for connecting to AWS IoT";
diff --git a/pkgs/development/python-modules/awsiotsdk/default.nix b/pkgs/development/python-modules/awsiotsdk/default.nix
new file mode 100644
index 0000000000000..080efc5476dad
--- /dev/null
+++ b/pkgs/development/python-modules/awsiotsdk/default.nix
@@ -0,0 +1,51 @@
+{
+  lib,
+  awscrt,
+  boto3,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "awsiotsdk";
+  version = "1.22.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "aws";
+    repo = "aws-iot-device-sdk-python-v2";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-2ZMNG+6yshEvjEpyN6uV62m11LZUrUHAzpRbm1foif0=";
+  };
+
+  pythonRelaxDeps = [ "awscrt" ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [ awscrt ];
+
+  nativeCheckInputs = [
+    boto3
+    pytestCheckHook
+  ];
+
+  disabledTestPaths = [
+    # Those tests require a custom loader
+    "servicetests/"
+  ];
+
+  pythonImportsCheck = [ "awsiot" ];
+
+  meta = {
+    description = "Next generation AWS IoT Client SDK for Python using the AWS Common Runtime";
+    homepage = "https://github.com/aws/aws-iot-device-sdk-python-v2";
+    changelog = "https://github.com/aws/aws-iot-device-sdk-python-v2/releases/tag/v${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/awsipranges/default.nix b/pkgs/development/python-modules/awsipranges/default.nix
index 036639c3cdb7b..c3b74b1feca82 100644
--- a/pkgs/development/python-modules/awsipranges/default.nix
+++ b/pkgs/development/python-modules/awsipranges/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pyopenssl
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pyopenssl,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,18 +22,14 @@ buildPythonPackage rec {
     hash = "sha256-ve1+0zkDDUGswtQoXhfESMcBzoNgUutxEhz43HXL4H8=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   nativeCheckInputs = [
     pyopenssl
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "awsipranges"
-  ];
+  pythonImportsCheck = [ "awsipranges" ];
 
   disabledTestPaths = [
     # Tests require network access
diff --git a/pkgs/development/python-modules/awslambdaric/default.nix b/pkgs/development/python-modules/awslambdaric/default.nix
index 75e8897a7144c..8b091fc6dfe7c 100644
--- a/pkgs/development/python-modules/awslambdaric/default.nix
+++ b/pkgs/development/python-modules/awslambdaric/default.nix
@@ -1,23 +1,23 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, isPy27
-, pytestCheckHook
-, autoconf271
-, automake
-, cmake
-, gcc
-, libtool
-, perl
-, setuptools
-, simplejson
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  pytestCheckHook,
+  autoconf271,
+  automake,
+  cmake,
+  gcc,
+  libtool,
+  parameterized,
+  perl,
+  setuptools,
+  simplejson,
 }:
-
 buildPythonPackage rec {
   pname = "awslambdaric";
-  version = "2.0.10";
+  version = "2.1.0";
   pyproject = true;
 
   disabled = isPy27;
@@ -26,41 +26,36 @@ buildPythonPackage rec {
     owner = "aws";
     repo = "aws-lambda-python-runtime-interface-client";
     rev = "refs/tags/${version}";
-    sha256 = "sha256-tvTN6gV73Qnbe4OBHtfxt4jXV32fMTPE4H79WIkgkxE=";
+    sha256 = "sha256-FHZ7ZTCOzElW/DM07TScp6bfOOFe4b307q/ALVX1fWQ=";
   };
 
-  patches = [
-    (fetchpatch {
-      # https://github.com/aws/aws-lambda-python-runtime-interface-client/pull/58
-      url = "https://github.com/aws/aws-lambda-python-runtime-interface-client/commit/162c3c0051bb9daa92e4a2a4af7e90aea60ee405.patch";
-      sha256 = "09qqq5x6npc9jw2qbhzifqn5sqiby4smiin1aw30psmlp21fv7j8";
-    })
-  ];
-
-  postPatch = ''
-    substituteInPlace requirements/base.txt \
-      --replace 'simplejson==3' 'simplejson~=3'
-  '';
-
   propagatedBuildInputs = [ simplejson ];
 
-  nativeBuildInputs = [ autoconf271 automake cmake libtool perl setuptools ];
+  nativeBuildInputs = [
+    autoconf271
+    automake
+    cmake
+    libtool
+    perl
+    setuptools
+  ];
 
   buildInputs = [ gcc ];
 
   dontUseCmakeConfigure = true;
 
-  nativeCheckInputs = [ pytestCheckHook ];
-
-  disabledTests = [
-    # Test fails with: Assertion error
-    "test_handle_event_request_fault_exception_logging_syntax_error"
+  nativeCheckInputs = [
+    parameterized
+    pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "awslambdaric" "runtime_client" ];
+  pythonImportsCheck = [
+    "awslambdaric"
+    "runtime_client"
+  ];
 
   meta = with lib; {
-    broken = (stdenv.isLinux && stdenv.isAarch64);
+    broken = stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64;
     description = "AWS Lambda Runtime Interface Client for Python";
     homepage = "https://github.com/aws/aws-lambda-python-runtime-interface-client";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/awswrangler/default.nix b/pkgs/development/python-modules/awswrangler/default.nix
index b222c5703cd4a..3f770c272c552 100644
--- a/pkgs/development/python-modules/awswrangler/default.nix
+++ b/pkgs/development/python-modules/awswrangler/default.nix
@@ -1,5 +1,4 @@
 {
-  backoff,
   sparqlwrapper,
   boto3,
   buildPythonPackage,
@@ -20,14 +19,13 @@
   pyparsing,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
   redshift-connector,
   requests-aws4auth,
 }:
 
 buildPythonPackage rec {
   pname = "awswrangler";
-  version = "3.7.3";
+  version = "3.9.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -36,18 +34,13 @@ buildPythonPackage rec {
     owner = "aws";
     repo = "aws-sdk-pandas";
     rev = "refs/tags/${version}";
-    hash = "sha256-gm6ieteW+NcY+AOLcMZLUPcSi2Z/Mo27rzd1i9imp5I=";
+    hash = "sha256-k+jQj/EajjjvvXZJd8c/3vtaGrQJedbYSDIzel0Sp44=";
   };
 
   pythonRelaxDeps = [ "packaging" ];
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   dependencies = [
     boto3
@@ -75,9 +68,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "awswrangler"
-  ];
+  pythonImportsCheck = [ "awswrangler" ];
 
   pytestFlagsArray = [
     # Subset of tests that run in upstream CI (many others require credentials)
diff --git a/pkgs/development/python-modules/ax/default.nix b/pkgs/development/python-modules/ax-platform/default.nix
index f0bba36c3c2fc..f0d274ef85aee 100644
--- a/pkgs/development/python-modules/ax/default.nix
+++ b/pkgs/development/python-modules/ax-platform/default.nix
@@ -1,42 +1,41 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, botorch
-, ipywidgets
-, jinja2
-, pandas
-, plotly
-, setuptools
-, setuptools-scm
-, typeguard
-, wheel
-, hypothesis
-, mercurial
-, pyfakefs
-, pytestCheckHook
-, yappi
-, pyre-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  botorch,
+  ipywidgets,
+  jinja2,
+  pandas,
+  plotly,
+  setuptools,
+  setuptools-scm,
+  typeguard,
+  hypothesis,
+  mercurial,
+  pyfakefs,
+  pytestCheckHook,
+  yappi,
+  pyre-extensions,
 }:
 
 buildPythonPackage rec {
-  pname = "ax";
-  version = "0.3.7";
-  format = "pyproject";
+  pname = "ax-platform";
+  version = "0.4.1";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "facebook";
-    repo = pname;
+    repo = "ax";
     rev = "refs/tags/${version}";
-    hash = "sha256-UOX8Q7F5c9J1KSfQUy8aoL5CNb9YmEI4X7Fd5B16UqQ=";
+    hash = "sha256-ygMMMKY5XsoQGp9yUMFAQqkSUlXNBJCb8xgGE10db4U=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
-    wheel
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     botorch
     ipywidgets
     jinja2
@@ -46,7 +45,9 @@ buildPythonPackage rec {
     pyre-extensions
   ];
 
-  checkInputs = [
+  env.ALLOW_BOTORCH_LATEST = "1";
+
+  nativeCheckInputs = [
     hypothesis
     mercurial
     pyfakefs
@@ -73,10 +74,13 @@ buildPythonPackage rec {
     "test_get_standard_plots_moo"
     # AssertionError: Expected 'warning' to be called once. Called 3 times
     "test_validate_kwarg_typing"
+    # uses torch.equal
+    "test_convert_observations"
   ];
   pythonImportsCheck = [ "ax" ];
 
   meta = with lib; {
+    changelog = "https://github.com/facebook/Ax/releases/tag/${version}";
     description = "Ax is an accessible, general-purpose platform for understanding, managing, deploying, and automating adaptive experiments";
     homepage = "https://ax.dev/";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/axis/default.nix b/pkgs/development/python-modules/axis/default.nix
index 79692ba7d656d..e0a316317ef34 100644
--- a/pkgs/development/python-modules/axis/default.nix
+++ b/pkgs/development/python-modules/axis/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "axis";
-  version = "61";
+  version = "62";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "Kane610";
     repo = "axis";
     rev = "refs/tags/v${version}";
-    hash = "sha256-YiEY+Eu1j42bBzM4f5Ku5mAE2/tY9f+Hyb2DS6LIW7c=";
+    hash = "sha256-ey0yt+AIbMO74brHepnCFtekDS4XscTKswshlTrS41A=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/axisregistry/default.nix b/pkgs/development/python-modules/axisregistry/default.nix
index 510b87474d9a9..f4760c620076c 100644
--- a/pkgs/development/python-modules/axisregistry/default.nix
+++ b/pkgs/development/python-modules/axisregistry/default.nix
@@ -1,46 +1,47 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fonttools
-, protobuf
-, pythonRelaxDepsHook
-, pytestCheckHook
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fonttools,
+  protobuf,
+  pytestCheckHook,
+  setuptools-scm,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "axisregistry";
-  version = "0.4.9";
-  format = "setuptools";
+  version = "0.4.11";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-obpjiX86fzokao7UWQUXgarKYRNdxplr6/r2D2d7DCI=";
+    hash = "sha256-p1/ocmWqrCJ4CylRgen/DR0LeqcwIxB1jAauJbw8ygY=";
   };
 
-  propagatedBuildInputs = [
-    fonttools
-    protobuf
-  ];
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-    setuptools-scm
-  ];
-
-  doCheck = true;
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-
   # Relax the dependency on protobuf 3. Other packages in the Google Fonts
   # ecosystem have begun upgrading from protobuf 3 to protobuf 4,
   # so we need to use protobuf 4 here as well to avoid a conflict
   # in the closure of fontbakery. It seems to be compatible enough.
   pythonRelaxDeps = [ "protobuf" ];
 
+  build-system = [ setuptools-scm ];
+
+  dependencies = [
+    fonttools
+    protobuf
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "axisregistry" ];
+
   meta = with lib; {
     description = "Google Fonts registry of OpenType variation axis tags";
     homepage = "https://github.com/googlefonts/axisregistry";
+    changelog = "https://github.com/googlefonts/axisregistry/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
     maintainers = with maintainers; [ danc86 ];
   };
diff --git a/pkgs/development/python-modules/ayla-iot-unofficial/default.nix b/pkgs/development/python-modules/ayla-iot-unofficial/default.nix
new file mode 100644
index 0000000000000..de43b8c642ac9
--- /dev/null
+++ b/pkgs/development/python-modules/ayla-iot-unofficial/default.nix
@@ -0,0 +1,52 @@
+{
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pytest-asyncio,
+  pytestCheckHook,
+  requests,
+  setuptools,
+  ujson,
+}:
+
+buildPythonPackage rec {
+  pname = "ayla-iot-unofficial";
+  version = "1.3.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "rewardone";
+    repo = "ayla-iot-unofficial";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-WfaDTKht+WEnozVFWGYwNvrC8Rr/IePxjNp5O7jz/9A=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    aiohttp
+    requests
+    ujson
+  ];
+
+  pythonImportsCheck = [ "ayla_iot_unofficial" ];
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [ "tests/ayla_iot_unofficial.py" ];
+
+  # tests interact with the actual API
+  doCheck = false;
+
+  meta = {
+    changelog = "https://github.com/rewardone/ayla-iot-unofficial/releases/tag/v${version}";
+    description = "Unofficial python library for interacting with the Ayla IoT API";
+    homepage = "https://github.com/rewardone/ayla-iot-unofficial";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/azure-appconfiguration/default.nix b/pkgs/development/python-modules/azure-appconfiguration/default.nix
index 7beb170dd22c4..02d8447c12ade 100644
--- a/pkgs/development/python-modules/azure-appconfiguration/default.nix
+++ b/pkgs/development/python-modules/azure-appconfiguration/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "azure-appconfiguration";
-  version = "1.6.0";
+  version = "1.7.1";
   pyporject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-z2KKPh6mZDR5ZDzSRt2kZO3Eq3hXQzOaao/oCbwTf+w=";
+    hash = "sha256-Pr5B6b4/SubKYeXbxCxLfMAHoBBUqFBlAaJt/Bmf0+w=";
   };
 
   build-system = [ setuptools ];
@@ -37,6 +37,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/appconfiguration/azure-appconfiguration";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-appconfiguration_${version}/sdk/appconfiguration/azure-appconfiguration/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-applicationinsights/default.nix b/pkgs/development/python-modules/azure-applicationinsights/default.nix
index 3292f0066a96f..27e6275ab5420 100644
--- a/pkgs/development/python-modules/azure-applicationinsights/default.nix
+++ b/pkgs/development/python-modules/azure-applicationinsights/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, azure-common
-, msrest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  azure-common,
+  msrest,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-batch/default.nix b/pkgs/development/python-modules/azure-batch/default.nix
index b0e27ef337cba..3caa3c69de876 100644
--- a/pkgs/development/python-modules/azure-batch/default.nix
+++ b/pkgs/development/python-modules/azure-batch/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrestazure
-, azure-common
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrestazure,
+  azure-common,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-x5Jn1sPT/hShakIqtbv6vL1o7QtYtrvN+gyDRcTHhTI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     azure-common
@@ -31,9 +30,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.batch"
-  ];
+  pythonImportsCheck = [ "azure.batch" ];
 
   meta = with lib; {
     description = "This is the Microsoft Azure Batch Client Library";
diff --git a/pkgs/development/python-modules/azure-common/default.nix b/pkgs/development/python-modules/azure-common/default.nix
index 2b4caa102f79c..b168e1b21cf2b 100644
--- a/pkgs/development/python-modules/azure-common/default.nix
+++ b/pkgs/development/python-modules/azure-common/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, azure-nspkg
-, isPyPy
-, setuptools
-, python
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  azure-nspkg,
+  isPyPy,
+  setuptools,
+  python,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-SsDNMhTja2obakQmhnIqXYzESWA6qDPz8PQL2oNnBKM=";
   };
 
-  propagatedBuildInputs = [
-    azure-nspkg
-  ] ++ lib.optionals (!isPy3k) [ setuptools ]; # need for namespace lookup
+  propagatedBuildInputs = [ azure-nspkg ] ++ lib.optionals (!isPy3k) [ setuptools ]; # need for namespace lookup
 
   postInstall = lib.optionalString (!isPy3k) ''
     echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/${python.sitePackages}"/azure/__init__.py
@@ -34,6 +33,9 @@ buildPythonPackage rec {
     description = "This is the Microsoft Azure common code";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ olcai maxwilson ];
+    maintainers = with maintainers; [
+      olcai
+      maxwilson
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-containerregistry/default.nix b/pkgs/development/python-modules/azure-containerregistry/default.nix
index 7b6d8ba17915a..37d7173441acf 100644
--- a/pkgs/development/python-modules/azure-containerregistry/default.nix
+++ b/pkgs/development/python-modules/azure-containerregistry/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, azure-core
-, msrest
-, msrestazure
-, isodate
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  azure-core,
+  msrest,
+  msrestazure,
+  isodate,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-core/default.nix b/pkgs/development/python-modules/azure-core/default.nix
index 90a16ee098204..a9cdf1ac4e991 100644
--- a/pkgs/development/python-modules/azure-core/default.nix
+++ b/pkgs/development/python-modules/azure-core/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, aiodns
-, aiohttp
-, flask
-, mock
-, pytest
-, pytest-asyncio
-, pytest-trio
-, pytestCheckHook
-, requests
-, setuptools
-, six
-, trio
-, typing-extensions
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  aiodns,
+  aiohttp,
+  flask,
+  mock,
+  pytest,
+  pytest-asyncio,
+  pytest-trio,
+  pytestCheckHook,
+  requests,
+  setuptools,
+  six,
+  trio,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
-  version = "1.30.1";
+  version = "1.30.2";
   pname = "azure-core";
   pyproject = true;
 
@@ -29,12 +30,10 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Jic6JUEx+EJp6OpEZPNWDHMfKcDB9prJkBCEXyOcGo8=";
+    hash = "sha256-oU3CEO/NYIghqkctn7jo0DXSm2iZOBkUe8KQqKwiRHI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     requests
@@ -43,9 +42,7 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    aio = [
-      aiohttp
-    ];
+    aio = [ aiohttp ];
   };
 
   nativeCheckInputs = [
@@ -64,9 +61,7 @@ buildPythonPackage rec {
     export PYTHONPATH=tests/testserver_tests/coretestserver:$PYTHONPATH
   '';
 
-  pytestFlagsArray = [
-    "tests/"
-  ];
+  pytestFlagsArray = [ "tests/" ];
 
   # disable tests which touch network
   disabledTests = [
@@ -77,12 +72,10 @@ buildPythonPackage rec {
     "timeout"
     "test_sync_transport_short_read_download_stream"
     "test_aio_transport_short_read_download_stream"
-  # disable 8 tests failing on some darwin machines with errors:
-  # azure.core.polling.base_polling.BadStatus: Invalid return status 403 for 'GET' operation
-  # azure.core.exceptions.HttpResponseError: Operation returned an invalid status 'Forbidden'
-  ] ++ lib.optionals stdenv.isDarwin [
-    "location_polling_fail"
-  ];
+    # disable 8 tests failing on some darwin machines with errors:
+    # azure.core.polling.base_polling.BadStatus: Invalid return status 403 for 'GET' operation
+    # azure.core.exceptions.HttpResponseError: Operation returned an invalid status 'Forbidden'
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ "location_polling_fail" ];
 
   disabledTestPaths = [
     # requires testing modules which aren't published, and likely to create cyclic dependencies
@@ -106,6 +99,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/core/azure-core";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-core_${version}/sdk/core/azure-core/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-cosmos/default.nix b/pkgs/development/python-modules/azure-cosmos/default.nix
index df687eb52ac52..aea811201587f 100644
--- a/pkgs/development/python-modules/azure-cosmos/default.nix
+++ b/pkgs/development/python-modules/azure-cosmos/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "azure-cosmos";
-  version = "4.6.0";
+  version = "4.7.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-2uxqwgHGRzsJK2Ku5x44G+62w6jcNhJJgytwSMTwYeI=";
+    hash = "sha256-ctcUAzE0ZWMCouiVfEuTWQZzvSiLDKYMsSPjSK6ZokE=";
   };
 
   build-system = [ setuptools ];
@@ -39,6 +39,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/cosmos/azure-cosmos";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-cosmos_${version}/sdk/cosmos/azure-cosmos/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-cosmosdb-nspkg/default.nix b/pkgs/development/python-modules/azure-cosmosdb-nspkg/default.nix
index f256d8d5b4499..f11653ef6d23e 100644
--- a/pkgs/development/python-modules/azure-cosmosdb-nspkg/default.nix
+++ b/pkgs/development/python-modules/azure-cosmosdb-nspkg/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, azure-nspkg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  azure-nspkg,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     sha256 = "acf691e692818d9a65c653c7a3485eb8e35c0bdc496bba652e5ea3905ba09cd8";
   };
 
-  propagatedBuildInputs = [
-    azure-nspkg
-  ];
+  propagatedBuildInputs = [ azure-nspkg ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/azure-cosmosdb-table/default.nix b/pkgs/development/python-modules/azure-cosmosdb-table/default.nix
index 42c81a96ff6cd..3f68e661f6c03 100644
--- a/pkgs/development/python-modules/azure-cosmosdb-table/default.nix
+++ b/pkgs/development/python-modules/azure-cosmosdb-table/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cryptography
-, azure-common
-, azure-storage-common
-, azure-cosmosdb-nspkg
-, futures ? null
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cryptography,
+  azure-common,
+  azure-storage-common,
+  azure-cosmosdb-nspkg,
+  futures ? null,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     azure-common
     azure-storage-common
     azure-cosmosdb-nspkg
-  ] ++ lib.optionals (!isPy3k) [
-    futures
-  ];
+  ] ++ lib.optionals (!isPy3k) [ futures ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/azure-data-tables/default.nix b/pkgs/development/python-modules/azure-data-tables/default.nix
index 42b8b1edb55d0..7b2dd03ad09b3 100644
--- a/pkgs/development/python-modules/azure-data-tables/default.nix
+++ b/pkgs/development/python-modules/azure-data-tables/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, azure-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
-, typing-extensions
-, yarl
+{
+  lib,
+  azure-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  typing-extensions,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -30,15 +31,13 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.data.tables"
-  ];
+  pythonImportsCheck = [ "azure.data.tables" ];
 
   meta = with lib; {
     description = "NoSQL data storage service that can be accessed from anywhere";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-data-tables_${version}/sdk/tables/azure-data-tables/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-datalake-store/default.nix b/pkgs/development/python-modules/azure-datalake-store/default.nix
index 7dcf5c8b73988..1552f1c4b75df 100644
--- a/pkgs/development/python-modules/azure-datalake-store/default.nix
+++ b/pkgs/development/python-modules/azure-datalake-store/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, adal
-, azure-common
-, buildPythonPackage
-, fetchPypi
-, msal
-, pythonOlder
-, requests
+{
+  lib,
+  adal,
+  azure-common,
+  buildPythonPackage,
+  fetchPypi,
+  msal,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +18,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-BbbeYu4/KgpuaUHmkzt5K4AMPn9v/OL8MkvBmHV1c5M=";
+    hash = "sha256-BbbeYu4/KgpuaUHmkzt5K4AMPn9v/OL8MkvBmHV1c5M=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-eventgrid/default.nix b/pkgs/development/python-modules/azure-eventgrid/default.nix
index c7246ffe9d850..786156d4c118f 100644
--- a/pkgs/development/python-modules/azure-eventgrid/default.nix
+++ b/pkgs/development/python-modules/azure-eventgrid/default.nix
@@ -1,28 +1,27 @@
-{ lib
-, azure-common
-, azure-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
-, setuptools
+{
+  lib,
+  azure-common,
+  azure-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-eventgrid";
-  version = "4.19.0";
+  version = "4.20.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-a9fVQBbMo6Zwdp6WTYKiQBlqJcQRs+nxqKqBVcPbBew=";
+    hash = "sha256-we2rkHabxOei+wogN88EVXVNUK95NnTAiz/sIpMkjEw=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     azure-common
@@ -33,12 +32,10 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.eventgrid"
-  ];
+  pythonImportsCheck = [ "azure.eventgrid" ];
 
   meta = with lib; {
-    description = "A fully-managed intelligent event routing service that allows for uniform event consumption using a publish-subscribe model";
+    description = "Fully-managed intelligent event routing service that allows for uniform event consumption using a publish-subscribe model";
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/eventgrid/azure-eventgrid";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-eventgrid_${version}/sdk/eventgrid/azure-eventgrid/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/azure-eventhub/default.nix b/pkgs/development/python-modules/azure-eventhub/default.nix
index 91203ed642047..6fc221c965f5c 100644
--- a/pkgs/development/python-modules/azure-eventhub/default.nix
+++ b/pkgs/development/python-modules/azure-eventhub/default.nix
@@ -1,27 +1,26 @@
-{ lib
-, azure-core
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, typing-extensions
+{
+  lib,
+  azure-core,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "azure-eventhub";
-  version = "5.11.7";
+  version = "5.12.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-C0Ywon7jrAxEjD8jdSHV3K71qKGnJBQjUGwEY3oKRLA=";
+    hash = "sha256-DaMLBRLFLqInuKR2sYH/wH0gIiMRF2xxBHuv1HW4G44=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     azure-core
diff --git a/pkgs/development/python-modules/azure-functions-devops-build/default.nix b/pkgs/development/python-modules/azure-functions-devops-build/default.nix
index aa6e291035785..a07ca228b92ea 100644
--- a/pkgs/development/python-modules/azure-functions-devops-build/default.nix
+++ b/pkgs/development/python-modules/azure-functions-devops-build/default.nix
@@ -1,7 +1,10 @@
-{ lib, buildPythonPackage, fetchFromGitHub
-, jinja2
-, msrest
-, vsts
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jinja2,
+  msrest,
+  vsts,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +20,11 @@ buildPythonPackage rec {
     sha256 = "1slc7jd92v9q1qg1yacnrpi2a7hi7iw61wzbzfd6wx9q63pw9yqi";
   };
 
-  propagatedBuildInputs = [ jinja2 msrest vsts ];
+  propagatedBuildInputs = [
+    jinja2
+    msrest
+    vsts
+  ];
 
   # circular dependency with azure-cli-core
   doCheck = false;
@@ -26,6 +33,6 @@ buildPythonPackage rec {
     description = "Integrate Azure Functions with Azure DevOps. Specifically made for the Azure CLI";
     homepage = "https://github.com/Azure/azure-functions-devops-build";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-graphrbac/default.nix b/pkgs/development/python-modules/azure-graphrbac/default.nix
index 1c26d5e6b29a0..412838ef7fc5f 100644
--- a/pkgs/development/python-modules/azure-graphrbac/default.nix
+++ b/pkgs/development/python-modules/azure-graphrbac/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-identity/default.nix b/pkgs/development/python-modules/azure-identity/default.nix
index add836eee03f4..6f89cacb08bdc 100644
--- a/pkgs/development/python-modules/azure-identity/default.nix
+++ b/pkgs/development/python-modules/azure-identity/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, azure-core
-, cryptography
-, msal
-, msal-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  azure-core,
+  cryptography,
+  msal,
+  msal-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "azure-identity";
-  version = "1.15.0";
+  version = "1.17.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-TCj8JGt/kmVhDrUmHWWTEYPQGaI9Sw6ZNX+ssubCJ8g=";
+    hash = "sha256-oRaPIjstf6OWg2K3iv/RV6Hzdy8xCozc6IPMUVxsiZg=";
   };
 
   propagatedBuildInputs = [
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     msal-extensions
   ];
 
-  pythonImportsCheck = [
-    "azure.identity"
-  ];
+  pythonImportsCheck = [ "azure.identity" ];
 
   # Requires checkout from mono-repo and a mock account:
   # https://github.com/Azure/azure-sdk-for-python/blob/master/sdk/identity/tests.yml
diff --git a/pkgs/development/python-modules/azure-keyvault-administration/default.nix b/pkgs/development/python-modules/azure-keyvault-administration/default.nix
index a890e435508fc..f8bf2b1c83f61 100644
--- a/pkgs/development/python-modules/azure-keyvault-administration/default.nix
+++ b/pkgs/development/python-modules/azure-keyvault-administration/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, azure-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
-, setuptools
-, typing-extensions
+{
+  lib,
+  azure-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-ems2y59UTzV1D/L6lMg7l7PvIMH+G0JOpoAY7ucD8d8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     azure-core
@@ -33,19 +32,15 @@ buildPythonPackage rec {
   # Tests require checkout from mono-repo
   doCheck = false;
 
-  pythonNamespaces = [
-    "azure.keyvault"
-  ];
+  pythonNamespaces = [ "azure.keyvault" ];
 
-  pythonImportsCheck = [
-    "azure.keyvault.administration"
-  ];
+  pythonImportsCheck = [ "azure.keyvault.administration" ];
 
   meta = with lib; {
     description = "Microsoft Azure Key Vault Administration Client Library for Python";
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/keyvault/azure-keyvault-administration";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-keyvault-administration_${version}/sdk/keyvault/azure-keyvault-administration/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-keyvault-certificates/default.nix b/pkgs/development/python-modules/azure-keyvault-certificates/default.nix
index e45f1b241517b..66e16fbee10c0 100644
--- a/pkgs/development/python-modules/azure-keyvault-certificates/default.nix
+++ b/pkgs/development/python-modules/azure-keyvault-certificates/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, azure-common
-, azure-core
-, isodate
-, pythonOlder
-, setuptools
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  azure-common,
+  azure-core,
+  isodate,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-xWEnPkQCwlEUhzSGyYv6GyxHiGIp1BAOh9rxAO4Edyg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     azure-common
@@ -32,22 +31,18 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  pythonNamespaces = [
-    "azure.keyvault"
-  ];
+  pythonNamespaces = [ "azure.keyvault" ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.keyvault.certificates"
-  ];
+  pythonImportsCheck = [ "azure.keyvault.certificates" ];
 
   meta = with lib; {
     description = "Microsoft Azure Key Vault Certificates Client Library for Python";
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/keyvault/azure-keyvault-certificates";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-keyvault-certificates_${version}/sdk/keyvault/azure-keyvault-certificates/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-keyvault-keys/default.nix b/pkgs/development/python-modules/azure-keyvault-keys/default.nix
index 79b13b55ea915..54200ab0e0ff0 100644
--- a/pkgs/development/python-modules/azure-keyvault-keys/default.nix
+++ b/pkgs/development/python-modules/azure-keyvault-keys/default.nix
@@ -51,6 +51,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/keyvault/azure-keyvault-keys";
     changelog = "https://github.com/Azure/azure-sdk-for-python/tree/azure-keyvault-keys_${version}/sdk/keyvault/azure-keyvault-keys";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-keyvault-nspkg/default.nix b/pkgs/development/python-modules/azure-keyvault-nspkg/default.nix
index f060c77edc16a..813b0d51d04c0 100644
--- a/pkgs/development/python-modules/azure-keyvault-nspkg/default.nix
+++ b/pkgs/development/python-modules/azure-keyvault-nspkg/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
 
-# pythonPackages
-, azure-nspkg
+  # pythonPackages
+  azure-nspkg,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     sha256 = "0hdnd6124hx7s16z1pssmq5m5mqqqz8s38ixl9aayv4wmf5bhs5c";
   };
 
-  propagatedBuildInputs = [
-    azure-nspkg
-  ];
+  propagatedBuildInputs = [ azure-nspkg ];
 
   # Just a namespace package, no tests exist:
   #   https://github.com/Azure/azure-sdk-for-python/blob/master/sdk/keyvault/tests.yml
@@ -29,8 +28,6 @@ buildPythonPackage rec {
     description = "Microsoft Azure Key Vault Namespace Package [Internal]";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [
-      kamadorueda
-    ];
+    maintainers = with maintainers; [ kamadorueda ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-keyvault-secrets/default.nix b/pkgs/development/python-modules/azure-keyvault-secrets/default.nix
index 56004efa76b63..916897d5bf00d 100644
--- a/pkgs/development/python-modules/azure-keyvault-secrets/default.nix
+++ b/pkgs/development/python-modules/azure-keyvault-secrets/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, azure-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
-, setuptools
-, typing-extensions
+{
+  lib,
+  azure-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-VjbAodiiDjxXmcs8z/1Ovz8NGst8rpUmhhgzr4sP6BQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     azure-core
@@ -30,9 +29,7 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  pythonNamespaces = [
-    "azure.keyvault"
-  ];
+  pythonNamespaces = [ "azure.keyvault" ];
 
   # Tests require checkout from mono-repo
   doCheck = false;
@@ -42,6 +39,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/keyvault/azure-keyvault-secrets";
     changelog = "https://github.com/Azure/azure-sdk-for-python/tree/azure-keyvault-secrets_${version}/sdk/keyvault/azure-keyvault-secrets";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-keyvault/default.nix b/pkgs/development/python-modules/azure-keyvault/default.nix
index 4fedfd4cbf551..8b6a3524a04c1 100644
--- a/pkgs/development/python-modules/azure-keyvault/default.nix
+++ b/pkgs/development/python-modules/azure-keyvault/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, azure-keyvault-certificates
-, azure-keyvault-keys
-, azure-keyvault-secrets
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  azure-keyvault-certificates,
+  azure-keyvault-keys,
+  azure-keyvault-secrets,
 }:
 
 buildPythonPackage rec {
@@ -39,6 +40,6 @@ buildPythonPackage rec {
     description = "This is the Microsoft Azure Key Vault Client Library";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-loganalytics/default.nix b/pkgs/development/python-modules/azure-loganalytics/default.nix
index 7c18ed7ceb5f2..8ec07494103aa 100644
--- a/pkgs/development/python-modules/azure-loganalytics/default.nix
+++ b/pkgs/development/python-modules/azure-loganalytics/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, azure-common
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  azure-common,
 }:
 
 buildPythonPackage rec {
@@ -30,6 +31,8 @@ buildPythonPackage rec {
     description = "This is the Microsoft Azure Log Analytics Client Library";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ maxwilson jonringer ];
+    maintainers = with maintainers; [
+      maxwilson
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-advisor/default.nix b/pkgs/development/python-modules/azure-mgmt-advisor/default.nix
index 2a75de7bf4938..e73f36518d56d 100644
--- a/pkgs/development/python-modules/azure-mgmt-advisor/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-advisor/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, isPy3k
-, azure-mgmt-core
-, azure-mgmt-nspkg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  isPy3k,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     msrestazure
     azure-common
     azure-mgmt-core
-  ] ++ lib.optionals (!isPy3k) [
-    azure-mgmt-nspkg
-  ];
+  ] ++ lib.optionals (!isPy3k) [ azure-mgmt-nspkg ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/azure-mgmt-apimanagement/default.nix b/pkgs/development/python-modules/azure-mgmt-apimanagement/default.nix
index d18dc5b59fb63..5262587ba1339 100644
--- a/pkgs/development/python-modules/azure-mgmt-apimanagement/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-apimanagement/default.nix
@@ -18,7 +18,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-XPUJzALti7QXTmgtuwVDhCA2luWz7zfykWEsJmpHzA4=";
+    hash = "sha256-XPUJzALti7QXTmgtuwVDhCA2luWz7zfykWEsJmpHzA4=";
   };
 
   nativeBuildInputs = [ setuptools ];
@@ -42,6 +42,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/apimanagement/azure-mgmt-apimanagement";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-apimanagement_${version}/sdk/apimanagement/azure-mgmt-apimanagement/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-appconfiguration/default.nix b/pkgs/development/python-modules/azure-mgmt-appconfiguration/default.nix
index a662f9ec3310b..9fc23174d60dc 100644
--- a/pkgs/development/python-modules/azure-mgmt-appconfiguration/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-appconfiguration/default.nix
@@ -45,6 +45,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/appconfiguration/azure-mgmt-appconfiguration";
     changelog = "https://github.com/Azure/azure-sdk-for-python/tree/azure-mgmt-appconfiguration_${version}/sdk/appconfiguration/azure-mgmt-appconfiguration";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-appcontainers/default.nix b/pkgs/development/python-modules/azure-mgmt-appcontainers/default.nix
index 624c9735b6ac7..0be4aa8e3c01a 100644
--- a/pkgs/development/python-modules/azure-mgmt-appcontainers/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-appcontainers/default.nix
@@ -1,39 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, azure-common
-, azure-mgmt-core
-, isodate
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  azure-common,
+  azure-mgmt-core,
+  isodate,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-appcontainers";
-  version = "3.0.0";
+  version = "3.1.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-oqKPEOnZaIU7IMzDqT552IBJr9RtWt3vFO3SlG8igs0=";
+    hash = "sha256-PHlDnxK8788UCvjG572LUWJOlx/ZH1rOmKzAc8Lm+uw=";
   };
 
   propagatedBuildInputs = [
     azure-common
     azure-mgmt-core
     isodate
-  ]  ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
   # no tests included
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.mgmt.appcontainers"
-  ];
+  pythonImportsCheck = [ "azure.mgmt.appcontainers" ];
 
   meta = with lib; {
     description = "Microsoft Azure Appcontainers Management Client Library for Python";
diff --git a/pkgs/development/python-modules/azure-mgmt-applicationinsights/default.nix b/pkgs/development/python-modules/azure-mgmt-applicationinsights/default.nix
index 352d719ddadd1..fb20a442461cb 100644
--- a/pkgs/development/python-modules/azure-mgmt-applicationinsights/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-applicationinsights/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     azure-mgmt-core
     msrest
     msrestazure
-  ] ++ lib.optionals (!isPy3k) [
-    azure-mgmt-nspkg
-  ];
+  ] ++ lib.optionals (!isPy3k) [ azure-mgmt-nspkg ];
 
   pythonNamespaces = [ "azure.mgmt" ];
 
@@ -38,6 +37,8 @@ buildPythonPackage rec {
     description = "This is the Microsoft Azure Application Insights Management Client Library";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer maxwilson ];
+    maintainers = with maintainers; [
+      maxwilson
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-authorization/default.nix b/pkgs/development/python-modules/azure-mgmt-authorization/default.nix
index 89ce5b1a40124..52c94964f570d 100644
--- a/pkgs/development/python-modules/azure-mgmt-authorization/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-authorization/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     msrestazure
     azure-common
     azure-mgmt-core
-  ] ++ lib.optionals (!isPy3k) [
-    azure-mgmt-nspkg
-  ];
+  ] ++ lib.optionals (!isPy3k) [ azure-mgmt-nspkg ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/azure-mgmt-batch/default.nix b/pkgs/development/python-modules/azure-mgmt-batch/default.nix
index 64cfffff110ae..e6020399fdf8d 100644
--- a/pkgs/development/python-modules/azure-mgmt-batch/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-batch/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
-, setuptools
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-/JSIGmrNuKlTPzcbb3stPq6heJ65VQFLJKkI1t/nWZE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     azure-common
@@ -33,9 +32,7 @@ buildPythonPackage rec {
   # Tests are only available in mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.mgmt.batch"
-  ];
+  pythonImportsCheck = [ "azure.mgmt.batch" ];
 
   meta = with lib; {
     description = "This is the Microsoft Azure Batch Management Client Library";
diff --git a/pkgs/development/python-modules/azure-mgmt-batchai/default.nix b/pkgs/development/python-modules/azure-mgmt-batchai/default.nix
index fd0a7c019a3fe..0fa160b6adc00 100644
--- a/pkgs/development/python-modules/azure-mgmt-batchai/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-batchai/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
-, msrestazure
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  azure-common,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
+  msrestazure,
 }:
 
 buildPythonPackage rec {
@@ -23,7 +24,7 @@ buildPythonPackage rec {
     azure-common
     azure-mgmt-core
     azure-mgmt-nspkg
- ];
+  ];
 
   pythonNamespaces = [ "azure.mgmt" ];
 
diff --git a/pkgs/development/python-modules/azure-mgmt-billing/default.nix b/pkgs/development/python-modules/azure-mgmt-billing/default.nix
index 7bf243e3edbbc..db243f5857594 100644
--- a/pkgs/development/python-modules/azure-mgmt-billing/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-billing/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-billing";
-  version = "6.0.0"; #pypi's 0.2.0 doesn't build ootb
+  version = "6.0.0"; # pypi's 0.2.0 doesn't build ootb
   format = "setuptools";
 
   src = fetchPypi {
diff --git a/pkgs/development/python-modules/azure-mgmt-botservice/default.nix b/pkgs/development/python-modules/azure-mgmt-botservice/default.nix
index db019c57718d6..12379092c4a61 100644
--- a/pkgs/development/python-modules/azure-mgmt-botservice/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-botservice/default.nix
@@ -43,6 +43,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/botservice/azure-mgmt-botservice";
     changelog = "https://github.com/Azure/azure-sdk-for-python/tree/azure-mgmt-botservice_${version}/sdk/botservice/azure-mgmt-botservice";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-cdn/default.nix b/pkgs/development/python-modules/azure-mgmt-cdn/default.nix
index 3b6c5fd88b7bf..c98f7f9f36aab 100644
--- a/pkgs/development/python-modules/azure-mgmt-cdn/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-cdn/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-cdn";
-  version = "13.0.0";
+  version = "13.1.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-yJ8jTeT4Gu23YSHl5GZ0+zdlC3s+GIxS4ir8z/HBkA4=";
+    hash = "sha256-RmMwTzG2Zy3sMgx857qXFcK5nn2LaEs3XwtO/9qQIQw=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-cognitiveservices/default.nix b/pkgs/development/python-modules/azure-mgmt-cognitiveservices/default.nix
index 25dfe383e35dd..a4052e739880b 100644
--- a/pkgs/development/python-modules/azure-mgmt-cognitiveservices/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-cognitiveservices/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, azure-common
-, azure-mgmt-core
-, msrestazure
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  azure-common,
+  azure-mgmt-core,
+  msrestazure,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-mgmt-commerce/default.nix b/pkgs/development/python-modules/azure-mgmt-commerce/default.nix
index 035f3f6c682c8..93875a62e84e4 100644
--- a/pkgs/development/python-modules/azure-mgmt-commerce/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-commerce/default.nix
@@ -1,16 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-commerce";
   version = "6.0.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
@@ -18,7 +20,9 @@ buildPythonPackage rec {
     sha256 = "6f5447395503b2318f451d24f8021ee08db1cac44f1c3337ea690700419626b6";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     msrestazure
     azure-common
     azure-mgmt-core
@@ -27,8 +31,6 @@ buildPythonPackage rec {
 
   prePatch = ''
     rm -f azure_bdist_wheel.py tox.ini
-    substituteInPlace setup.py \
-      --replace "wheel==0.30.0" "wheel"
     sed -i "/azure-namespace-package/c\ " setup.cfg
   '';
 
@@ -42,6 +44,6 @@ buildPythonPackage rec {
     description = "This is the Microsoft Azure Commerce Management Client Library";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ maxwilson jonringer ];
+    maintainers = with maintainers; [ maxwilson ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-common/default.nix b/pkgs/development/python-modules/azure-mgmt-common/default.nix
index 5f0390708c7d9..cecaf2dd2bd45 100644
--- a/pkgs/development/python-modules/azure-mgmt-common/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-common/default.nix
@@ -1,12 +1,13 @@
-{ pkgs
-, buildPythonPackage
-, fetchPypi
-, python
-, azure-common
-, azure-mgmt-nspkg
-, requests
-, msrestazure
-, isPy3k
+{
+  pkgs,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  azure-common,
+  azure-mgmt-nspkg,
+  requests,
+  msrestazure,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -38,6 +39,9 @@ buildPythonPackage rec {
     description = "This is the Microsoft Azure Resource Management common code";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ olcai maxwilson ];
+    maintainers = with maintainers; [
+      olcai
+      maxwilson
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-compute/default.nix b/pkgs/development/python-modules/azure-mgmt-compute/default.nix
index 27ec12780e71c..d41e95e2e42ea 100644
--- a/pkgs/development/python-modules/azure-mgmt-compute/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-compute/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-compute";
-  version = "31.0.0";
+  version = "33.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-WlscT8GhnssCKhLe0b6LGxVfaXnQP7nvwEZC9gZkS78=";
+    hash = "sha256-o8wP5PCcjh01I8G/uSYg3+JjoKiTsKwToz1wV+nd3dI=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/azure-mgmt-consumption/default.nix b/pkgs/development/python-modules/azure-mgmt-consumption/default.nix
index 5156763d55f05..5e47775d2b1e4 100644
--- a/pkgs/development/python-modules/azure-mgmt-consumption/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-consumption/default.nix
@@ -1,16 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-consumption";
   version = "10.0.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
@@ -18,7 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-BqCGQ2wXN/d6uGiU1R9Zc7bg+l7fVlWOTCllieurkTA=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     msrestazure
     azure-common
     azure-mgmt-core
@@ -27,8 +31,6 @@ buildPythonPackage rec {
 
   preBuild = ''
     rm -f azure_bdist_wheel.py
-    substituteInPlace setup.cfg \
-      --replace "azure-namespace-package = azure-mgmt-nspkg" ""
   '';
 
   pythonNamespaces = [ "azure.mgmt" ];
diff --git a/pkgs/development/python-modules/azure-mgmt-containerinstance/default.nix b/pkgs/development/python-modules/azure-mgmt-containerinstance/default.nix
index 06a9c072f279b..aa25c6ad0e9df 100644
--- a/pkgs/development/python-modules/azure-mgmt-containerinstance/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-containerinstance/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +32,7 @@ buildPythonPackage rec {
   # has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.mgmt.containerinstance"
-  ];
+  pythonImportsCheck = [ "azure.mgmt.containerinstance" ];
 
   meta = with lib; {
     description = "This is the Microsoft Azure Container Instance Client Library";
diff --git a/pkgs/development/python-modules/azure-mgmt-containerregistry/default.nix b/pkgs/development/python-modules/azure-mgmt-containerregistry/default.nix
index 40e86961a8927..aa05085d1968a 100644
--- a/pkgs/development/python-modules/azure-mgmt-containerregistry/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-containerregistry/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, azure-common
-, azure-mgmt-core
-, isodate
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  azure-common,
+  azure-mgmt-core,
+  isodate,
 }:
 
 buildPythonPackage rec {
@@ -38,6 +39,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-containerregistry_${version}/sdk/containerregistry/azure-mgmt-containerregistry/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix b/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix
index 94417bc47ec75..876c7f25fdec4 100644
--- a/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix
@@ -1,31 +1,30 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
-, setuptools
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-containerservice";
-  version = "29.1.0";
+  version = "32.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-RohxeLsQNZM/BvpjEhwaydTFhx8gKuK4a8Svbh47NU8=";
+    pname = "azure_mgmt_containerservice";
+    inherit version;
+    hash = "sha256-zLWHR52Kk+x49xYlkK3ILk+6TeduStw0GfM60iXvspI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     azure-common
     azure-mgmt-core
     isodate
@@ -34,9 +33,7 @@ buildPythonPackage rec {
   # has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.mgmt.containerservice"
-  ];
+  pythonImportsCheck = [ "azure.mgmt.containerservice" ];
 
   meta = with lib; {
     description = "This is the Microsoft Azure Container Service Management Client Library";
diff --git a/pkgs/development/python-modules/azure-mgmt-core/default.nix b/pkgs/development/python-modules/azure-mgmt-core/default.nix
index 67e7a4bca229e..62b1b1cc2863c 100644
--- a/pkgs/development/python-modules/azure-mgmt-core/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-core/default.nix
@@ -1,8 +1,9 @@
-{ pkgs
-, buildPythonPackage
-, fetchPypi
-, azure-core
-, typing-extensions
+{
+  pkgs,
+  buildPythonPackage,
+  fetchPypi,
+  azure-core,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -26,12 +27,15 @@ buildPythonPackage rec {
   # not included
   doCheck = false;
 
-  pythonImportsCheck = [ "azure.mgmt.core" "azure.core" ];
+  pythonImportsCheck = [
+    "azure.mgmt.core"
+    "azure.core"
+  ];
 
   meta = with pkgs.lib; {
     description = "Microsoft Azure Management Core Library for Python";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-cosmosdb/default.nix b/pkgs/development/python-modules/azure-mgmt-cosmosdb/default.nix
index 0448801856be1..ff5d9d0bf27b2 100644
--- a/pkgs/development/python-modules/azure-mgmt-cosmosdb/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-cosmosdb/default.nix
@@ -1,25 +1,30 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-cosmosdb";
-  version = "9.4.0";
-  format = "setuptools";
+  version = "9.6.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-yruCHNRGsJ5z0kwxwoemD8w2I0iPH/qTNcaSJn55w0E=";
+    pname = "azure_mgmt_cosmosdb";
+    inherit version;
+    hash = "sha256-Znx9io9UKw55cuYydK9TatmFGH4kpswuPI7vNVYIgfw=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     isodate
     azure-common
     azure-mgmt-core
@@ -28,9 +33,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.mgmt.cosmosdb"
-  ];
+  pythonImportsCheck = [ "azure.mgmt.cosmosdb" ];
 
   meta = with lib; {
     description = "Module to work with the Microsoft Azure Cosmos DB Management";
diff --git a/pkgs/development/python-modules/azure-mgmt-databoxedge/default.nix b/pkgs/development/python-modules/azure-mgmt-databoxedge/default.nix
index 11878a1a63e6a..0d3d97aa0b21d 100644
--- a/pkgs/development/python-modules/azure-mgmt-databoxedge/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-databoxedge/default.nix
@@ -40,6 +40,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/databox/azure-mgmt-databox";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-databoxedge_${version}/sdk/databox/azure-mgmt-databox/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix b/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix
index 7f760eecf397e..325db23d062f1 100644
--- a/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix
@@ -1,28 +1,27 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
-, setuptools
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-datafactory";
-  version = "6.1.0";
+  version = "9.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-9WMsfVh9ca/nbbTPVuj1BwhIv6kGZlPbTzqzhvadBps=";
+    hash = "sha256-j1TMe2/jkSVa7p4Ar9HmZjh56GNqtkHP+QbSuyTDT04=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     azure-common
@@ -33,9 +32,7 @@ buildPythonPackage rec {
   # has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.mgmt.datafactory"
-  ];
+  pythonImportsCheck = [ "azure.mgmt.datafactory" ];
 
   meta = with lib; {
     description = "This is the Microsoft Azure Data Factory Management Client Library";
diff --git a/pkgs/development/python-modules/azure-mgmt-datalake-analytics/default.nix b/pkgs/development/python-modules/azure-mgmt-datalake-analytics/default.nix
index 83d6e314987fc..1c1a1d05b2699 100644
--- a/pkgs/development/python-modules/azure-mgmt-datalake-analytics/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-datalake-analytics/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrestazure
-, azure-common
-, azure-mgmt-datalake-nspkg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrestazure,
+  azure-common,
+  azure-mgmt-datalake-nspkg,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-mgmt-datalake-nspkg/default.nix b/pkgs/development/python-modules/azure-mgmt-datalake-nspkg/default.nix
index 8723830d4105b..322987f2039af 100644
--- a/pkgs/development/python-modules/azure-mgmt-datalake-nspkg/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-datalake-nspkg/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, azure-mgmt-nspkg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  azure-mgmt-nspkg,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
     sha256 = "deb192ba422f8b3ec272ce4e88736796f216f28ea5b03f28331d784b7a3f4880";
   };
 
-  propagatedBuildInputs = [
-    azure-mgmt-nspkg
-  ];
+  propagatedBuildInputs = [ azure-mgmt-nspkg ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix b/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix
index 2ab479b3f7c2f..2d08ad2f43d32 100644
--- a/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrestazure
-, azure-common
-, azure-mgmt-datalake-nspkg
-, azure-mgmt-core
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrestazure,
+  azure-common,
+  azure-mgmt-datalake-nspkg,
+  azure-mgmt-core,
 }:
 
 buildPythonPackage rec {
@@ -34,6 +35,8 @@ buildPythonPackage rec {
     description = "This is the Microsoft Azure Data Lake Store Management Client Library";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer maxwilson ];
+    maintainers = with maintainers; [
+      maxwilson
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-datamigration/default.nix b/pkgs/development/python-modules/azure-mgmt-datamigration/default.nix
index fe57d5d26cc6b..40f0d07e00de1 100644
--- a/pkgs/development/python-modules/azure-mgmt-datamigration/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-datamigration/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-nspkg
-, azure-mgmt-core
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-nspkg,
+  azure-mgmt-core,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     msrestazure
     azure-common
     azure-mgmt-core
-  ] ++ lib.optionals (!isPy3k) [
-    azure-mgmt-nspkg
-  ];
+  ] ++ lib.optionals (!isPy3k) [ azure-mgmt-nspkg ];
 
   pythonNamespaces = [ "azure.mgmt" ];
 
@@ -38,6 +37,8 @@ buildPythonPackage rec {
     description = "This is the Microsoft Azure Data Migration Client Library";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer maxwilson ];
+    maintainers = with maintainers; [
+      maxwilson
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-deploymentmanager/default.nix b/pkgs/development/python-modules/azure-mgmt-deploymentmanager/default.nix
index 5a5ef4d56dd26..6370b33bd3721 100644
--- a/pkgs/development/python-modules/azure-mgmt-deploymentmanager/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-deploymentmanager/default.nix
@@ -5,7 +5,6 @@
   buildPythonPackage,
   fetchPypi,
   msrest,
-  msrestazure,
   pythonOlder,
   setuptools,
 }:
@@ -44,6 +43,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/deploymentmanager/azure-mgmt-deploymentmanager";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-deploymentmanager_${version}/sdk/deploymentmanager/azure-mgmt-deploymentmanager/setup.py";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-devspaces/default.nix b/pkgs/development/python-modules/azure-mgmt-devspaces/default.nix
index 9a2cf7c027097..196fadd01e1ee 100644
--- a/pkgs/development/python-modules/azure-mgmt-devspaces/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-devspaces/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrestazure
-, azure-common
-, azure-mgmt-nspkg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrestazure,
+  azure-common,
+  azure-mgmt-nspkg,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-mgmt-devtestlabs/default.nix b/pkgs/development/python-modules/azure-mgmt-devtestlabs/default.nix
index 02b21b3dfd351..dab22d1e065cf 100644
--- a/pkgs/development/python-modules/azure-mgmt-devtestlabs/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-devtestlabs/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     msrestazure
     azure-common
     azure-mgmt-core
-  ] ++ lib.optionals (!isPy3k) [
-    azure-mgmt-nspkg
-  ];
+  ] ++ lib.optionals (!isPy3k) [ azure-mgmt-nspkg ];
 
   pythonNamespaces = [ "azure.mgmt" ];
 
@@ -38,6 +37,8 @@ buildPythonPackage rec {
     description = "This is the Microsoft Azure DevTestLabs Management Client Library";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer maxwilson ];
+    maintainers = with maintainers; [
+      maxwilson
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-dns/default.nix b/pkgs/development/python-modules/azure-mgmt-dns/default.nix
index bc8d9eb9e1155..b166ab5ea0f77 100644
--- a/pkgs/development/python-modules/azure-mgmt-dns/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-dns/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
 }:
 
 buildPythonPackage rec {
@@ -15,7 +16,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "sha256-2DedS7kZS4G3nlKE2HX6bfgHBzRvLLtcVJGiDzUmb9A=";
+    hash = "sha256-2DedS7kZS4G3nlKE2HX6bfgHBzRvLLtcVJGiDzUmb9A=";
   };
 
   propagatedBuildInputs = [
@@ -35,6 +36,8 @@ buildPythonPackage rec {
     description = "This is the Microsoft Azure DNS Management Client Library";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer maxwilson ];
+    maintainers = with maintainers; [
+      maxwilson
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-eventgrid/default.nix b/pkgs/development/python-modules/azure-mgmt-eventgrid/default.nix
index 98c897aeabff7..a04027b66f707 100644
--- a/pkgs/development/python-modules/azure-mgmt-eventgrid/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-eventgrid/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
   # has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.mgmt.eventgrid"
-  ];
+  pythonImportsCheck = [ "azure.mgmt.eventgrid" ];
 
   meta = with lib; {
     description = "This is the Microsoft Azure EventGrid Management Client Library";
diff --git a/pkgs/development/python-modules/azure-mgmt-eventhub/default.nix b/pkgs/development/python-modules/azure-mgmt-eventhub/default.nix
index 92bb1bf301a82..7ce3bf66c5d6b 100644
--- a/pkgs/development/python-modules/azure-mgmt-eventhub/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-eventhub/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-mgmt-extendedlocation/default.nix b/pkgs/development/python-modules/azure-mgmt-extendedlocation/default.nix
index 5a97855848ced..b24b2e0d3c925 100644
--- a/pkgs/development/python-modules/azure-mgmt-extendedlocation/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-extendedlocation/default.nix
@@ -37,6 +37,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/extendedlocation/azure-mgmt-extendedlocation";
     changelog = "https://github.com/Azure/azure-sdk-for-python/tree/azure-mgmt-extendedlocation_${version}/sdk/extendedlocation/azure-mgmt-extendedlocation";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-hanaonazure/default.nix b/pkgs/development/python-modules/azure-mgmt-hanaonazure/default.nix
index 7bd4c36696326..02457ba264ef3 100644
--- a/pkgs/development/python-modules/azure-mgmt-hanaonazure/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-hanaonazure/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     msrestazure
     azure-common
     azure-mgmt-core
-  ] ++ lib.optionals (!isPy3k) [
-    azure-mgmt-nspkg
-  ];
+  ] ++ lib.optionals (!isPy3k) [ azure-mgmt-nspkg ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/azure-mgmt-hdinsight/default.nix b/pkgs/development/python-modules/azure-mgmt-hdinsight/default.nix
index a20af6e0133e9..2007e304f3ab5 100644
--- a/pkgs/development/python-modules/azure-mgmt-hdinsight/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-hdinsight/default.nix
@@ -45,6 +45,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/hdinsight/azure-mgmt-hdinsight";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-hdinsight_${version}/sdk/hdinsight/azure-mgmt-hdinsight/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-imagebuilder/default.nix b/pkgs/development/python-modules/azure-mgmt-imagebuilder/default.nix
index 50341f66402f0..f565ddcd766bf 100644
--- a/pkgs/development/python-modules/azure-mgmt-imagebuilder/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-imagebuilder/default.nix
@@ -1,28 +1,27 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
-, setuptools
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-imagebuilder";
-  version = "1.3.0";
+  version = "1.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-PzJdaIthJcL6kmgeWxjqQHugMtW+P3wHJEBtcz5sFO8=";
+    hash = "sha256-5sLVc6vvJiIvwUSRgD1MsB+G/GEpLUz3xHKetLrkiRw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     azure-common
@@ -44,6 +43,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/compute/azure-mgmt-imagebuilder";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-imagebuilder_${version}/sdk/compute/azure-mgmt-imagebuilder/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-iotcentral/default.nix b/pkgs/development/python-modules/azure-mgmt-iotcentral/default.nix
index 660b266207571..4d7ffa9c36f45 100644
--- a/pkgs/development/python-modules/azure-mgmt-iotcentral/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-iotcentral/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     azure-mgmt-core
     msrest
     msrestazure
-  ] ++ lib.optionals (!isPy3k) [
-    azure-mgmt-nspkg
-  ];
+  ] ++ lib.optionals (!isPy3k) [ azure-mgmt-nspkg ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/azure-mgmt-iothub/default.nix b/pkgs/development/python-modules/azure-mgmt-iothub/default.nix
index 8890f65af3af1..fbf2da2f1c139 100644
--- a/pkgs/development/python-modules/azure-mgmt-iothub/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-iothub/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -24,16 +25,12 @@ buildPythonPackage rec {
     azure-common
     azure-mgmt-core
     isodate
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.mgmt.iothub"
-  ];
+  pythonImportsCheck = [ "azure.mgmt.iothub" ];
 
   meta = with lib; {
     description = "This is the Microsoft Azure IoTHub Management Client Library";
diff --git a/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix b/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix
index df0a7efe8dbfb..43f1de3c11bc8 100644
--- a/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
 }:
 
 buildPythonPackage rec {
@@ -36,6 +37,8 @@ buildPythonPackage rec {
     description = "This is the Microsoft Azure IoTHub Provisioning Services Client Library";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer maxwilson ];
+    maintainers = with maintainers; [
+      maxwilson
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix b/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix
index 9b954760fe1ca..4213abd863530 100644
--- a/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix
@@ -1,33 +1,37 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  isodate,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-keyvault";
-  version = "10.3.0";
-  format = "setuptools";
+  version = "10.3.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-GDtBZM8YaLjqfv6qmO2tfSpOFKm9l3woGLErdRUM0qI=";
+    hash = "sha256-NLkpVq773VccrloD9weOA32Ah7LADPpnSINdxzq7WjA=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-common
     azure-mgmt-core
     isodate
   ];
 
-  pythonNamespaces = [
-    "azure.mgmt"
-  ];
+  pythonNamespaces = [ "azure.mgmt" ];
+
+  pythonImportsCheck = [ "azure.mgmt.keyvault" ];
 
   # Module has no tests
   doCheck = false;
@@ -37,6 +41,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-keyvault_${version}/sdk/keyvault/azure-mgmt-keyvault/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer maxwilson ];
+    maintainers = with maintainers; [ maxwilson ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-kusto/default.nix b/pkgs/development/python-modules/azure-mgmt-kusto/default.nix
index 0cb59d74226e3..9892b1c34decb 100644
--- a/pkgs/development/python-modules/azure-mgmt-kusto/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-kusto/default.nix
@@ -42,6 +42,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-kusto_${version}/sdk/kusto/azure-mgmt-kusto/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-loganalytics/default.nix b/pkgs/development/python-modules/azure-mgmt-loganalytics/default.nix
index 499b4362f02c3..84e8197bbc3c0 100644
--- a/pkgs/development/python-modules/azure-mgmt-loganalytics/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-loganalytics/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-mgmt-logic/default.nix b/pkgs/development/python-modules/azure-mgmt-logic/default.nix
index fc22b57d98a87..c3e74008da920 100644
--- a/pkgs/development/python-modules/azure-mgmt-logic/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-logic/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.mgmt.logic"
-  ];
+  pythonImportsCheck = [ "azure.mgmt.logic" ];
 
   meta = with lib; {
     description = "This is the Microsoft Azure Logic Apps Management Client Library";
diff --git a/pkgs/development/python-modules/azure-mgmt-machinelearningcompute/default.nix b/pkgs/development/python-modules/azure-mgmt-machinelearningcompute/default.nix
index fa6e67196260b..118ba17016027 100644
--- a/pkgs/development/python-modules/azure-mgmt-machinelearningcompute/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-machinelearningcompute/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-nspkg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-nspkg,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-mgmt-managedservices/default.nix b/pkgs/development/python-modules/azure-mgmt-managedservices/default.nix
index a9334dd30d000..61f8804afa0b1 100644
--- a/pkgs/development/python-modules/azure-mgmt-managedservices/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-managedservices/default.nix
@@ -45,6 +45,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/managedservices/azure-mgmt-managedservices";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-managedservices_${version}/sdk/managedservices/azure-mgmt-managedservices/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-managementgroups/default.nix b/pkgs/development/python-modules/azure-mgmt-managementgroups/default.nix
index 22df23f03cd32..52c5f380740a8 100644
--- a/pkgs/development/python-modules/azure-mgmt-managementgroups/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-managementgroups/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     msrestazure
     azure-common
     azure-mgmt-core
-  ] ++ lib.optionals (!isPy3k) [
-    azure-mgmt-nspkg
-  ];
+  ] ++ lib.optionals (!isPy3k) [ azure-mgmt-nspkg ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/azure-mgmt-managementpartner/default.nix b/pkgs/development/python-modules/azure-mgmt-managementpartner/default.nix
index 5d91873e96220..ff45777f89704 100644
--- a/pkgs/development/python-modules/azure-mgmt-managementpartner/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-managementpartner/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-mgmt-maps/default.nix b/pkgs/development/python-modules/azure-mgmt-maps/default.nix
index 81b216804ae4f..2f7dbd1209a22 100644
--- a/pkgs/development/python-modules/azure-mgmt-maps/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-maps/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
-, typing-extensions
-, msrest
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  typing-extensions,
+  msrest,
 }:
 
 buildPythonPackage rec {
@@ -26,20 +27,14 @@ buildPythonPackage rec {
     azure-common
     azure-mgmt-core
     msrest
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
-  pythonNamespaces = [
-    "azure.mgmt"
-  ];
+  pythonNamespaces = [ "azure.mgmt" ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.mgmt.maps"
-  ];
+  pythonImportsCheck = [ "azure.mgmt.maps" ];
 
   meta = with lib; {
     description = "This is the Microsoft Azure Maps Client Library";
diff --git a/pkgs/development/python-modules/azure-mgmt-marketplaceordering/default.nix b/pkgs/development/python-modules/azure-mgmt-marketplaceordering/default.nix
index d07dd7a1cfe7a..4f2dd1ff04a1e 100644
--- a/pkgs/development/python-modules/azure-mgmt-marketplaceordering/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-marketplaceordering/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-nspkg
-, isPy3k
-, azure-mgmt-core
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-nspkg,
+  isPy3k,
+  azure-mgmt-core,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     msrestazure
     azure-common
     azure-mgmt-core
-  ] ++ lib.optionals (!isPy3k) [
-    azure-mgmt-nspkg
-  ];
+  ] ++ lib.optionals (!isPy3k) [ azure-mgmt-nspkg ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/azure-mgmt-media/default.nix b/pkgs/development/python-modules/azure-mgmt-media/default.nix
index a9c47aca1eadf..473fbf0700792 100644
--- a/pkgs/development/python-modules/azure-mgmt-media/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-media/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
   # has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.mgmt.media"
-  ];
+  pythonImportsCheck = [ "azure.mgmt.media" ];
 
   meta = with lib; {
     description = "This is the Microsoft Azure Media Services Client Library";
diff --git a/pkgs/development/python-modules/azure-mgmt-monitor/default.nix b/pkgs/development/python-modules/azure-mgmt-monitor/default.nix
index e4d0ae9b288fe..1a75b23ccc856 100644
--- a/pkgs/development/python-modules/azure-mgmt-monitor/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-monitor/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -24,13 +25,9 @@ buildPythonPackage rec {
     isodate
     azure-common
     azure-mgmt-core
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
-  pythonNamespaces = [
-    "azure.mgmt"
-  ];
+  pythonNamespaces = [ "azure.mgmt" ];
 
   # Module has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/azure-mgmt-msi/default.nix b/pkgs/development/python-modules/azure-mgmt-msi/default.nix
index 8351622cd42fc..5c2fb8aeb572e 100644
--- a/pkgs/development/python-modules/azure-mgmt-msi/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-msi/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, msrest
-, azure-common
-, azure-mgmt-core
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  msrest,
+  azure-common,
+  azure-mgmt-core,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-mgmt-netapp/default.nix b/pkgs/development/python-modules/azure-mgmt-netapp/default.nix
index eaa6df20a744b..0a5ca8dcfefc3 100644
--- a/pkgs/development/python-modules/azure-mgmt-netapp/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-netapp/default.nix
@@ -1,25 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, azure-common
-, azure-mgmt-core
-, isodate
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  azure-common,
+  azure-mgmt-core,
+  isodate,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-netapp";
-  version = "12.0.0";
-  format = "setuptools";
+  version = "13.2.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-bC7HZzIeUK4E6HcQgguB/sDr1G1kPkS/A43xZ6pBpyw=";
+    hash = "sha256-31wzzDeQrs04AL8Qsz050RY/AllvXwy+8Ng+QbUihjo=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-common
     azure-mgmt-core
     isodate
@@ -38,6 +42,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-netapp_${version}/sdk/netapp/azure-mgmt-netapp/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-network/default.nix b/pkgs/development/python-modules/azure-mgmt-network/default.nix
index d64d76abd1fe1..735184f21b1a9 100644
--- a/pkgs/development/python-modules/azure-mgmt-network/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-network/default.nix
@@ -1,28 +1,27 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
-, setuptools
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-network";
-  version = "25.3.0";
+  version = "26.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-3OLK+xrg5WPgte/FN9yYp8Ctgk1CYeZL7XX3iBlt1cY=";
+    hash = "sha256-TeZ2GEGVBT/bEGpuoQQqiU5wxzGm08imM9UvUin07hs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     azure-common
@@ -33,19 +32,18 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonNamespaces = [
-    "azure.mgmt"
-  ];
+  pythonNamespaces = [ "azure.mgmt" ];
 
-  pythonImportsCheck = [
-    "azure.mgmt.network"
-  ];
+  pythonImportsCheck = [ "azure.mgmt.network" ];
 
   meta = with lib; {
     description = "Microsoft Azure SDK for Python";
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/network/azure-mgmt-network";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-network_${version}/sdk/network/azure-mgmt-network/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ olcai maxwilson jonringer ];
+    maintainers = with maintainers; [
+      olcai
+      maxwilson
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-notificationhubs/default.nix b/pkgs/development/python-modules/azure-mgmt-notificationhubs/default.nix
index 75e7718f110b9..c28e754429d82 100644
--- a/pkgs/development/python-modules/azure-mgmt-notificationhubs/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-notificationhubs/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-mgmt-nspkg/default.nix b/pkgs/development/python-modules/azure-mgmt-nspkg/default.nix
index 6f5b8912f9a2b..27fa690bb52ec 100644
--- a/pkgs/development/python-modules/azure-mgmt-nspkg/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-nspkg/default.nix
@@ -1,7 +1,8 @@
-{ pkgs
-, buildPythonPackage
-, fetchPypi
-, azure-nspkg
+{
+  pkgs,
+  buildPythonPackage,
+  fetchPypi,
+  azure-nspkg,
 }:
 
 buildPythonPackage rec {
@@ -23,6 +24,9 @@ buildPythonPackage rec {
     description = "Microsoft Azure SDK for Python";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ olcai maxwilson ];
+    maintainers = with maintainers; [
+      olcai
+      maxwilson
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-policyinsights/default.nix b/pkgs/development/python-modules/azure-mgmt-policyinsights/default.nix
index e92d7302d32cb..a7365e27bd8e9 100644
--- a/pkgs/development/python-modules/azure-mgmt-policyinsights/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-policyinsights/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     azure-mgmt-core
     msrest
     msrestazure
-  ] ++ lib.optionals (!isPy3k) [
-    azure-mgmt-nspkg
-  ];
+  ] ++ lib.optionals (!isPy3k) [ azure-mgmt-nspkg ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/azure-mgmt-powerbiembedded/default.nix b/pkgs/development/python-modules/azure-mgmt-powerbiembedded/default.nix
index 9215d8955b911..b3db9d16407b4 100644
--- a/pkgs/development/python-modules/azure-mgmt-powerbiembedded/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-powerbiembedded/default.nix
@@ -1,36 +1,41 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-nspkg
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-powerbiembedded";
-  version = "2.0.0";
-  format = "setuptools";
+  version = "3.0.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    extension = "zip";
-    sha256 = "2f05be73f2a086c579a78fc900e3b2ae14ccde5bcec54e29dfc73e626b377476";
+    hash = "sha256-yz2D3WfQKEdkTm10ZKIhZMi4y6GF6yz+L1+nB/VFofo=";
   };
 
-  propagatedBuildInputs = [
-    msrest
-    msrestazure
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-common
-    azure-mgmt-nspkg
+    azure-mgmt-core
+    isodate
   ];
 
-  # has no tests
+  # Module has only tests in mono-repo
   doCheck = false;
 
   meta = with lib; {
     description = "This is the Microsoft Azure Power BI Embedded Management Client Library";
-    homepage = "https://github.com/Azure/azure-sdk-for-python";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/powerbiembedded/azure-mgmt-powerbiembedded";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-powerbiembedded_${version}/sdk/powerbiembedded/azure-mgmt-powerbiembedded/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ maxwilson ];
   };
diff --git a/pkgs/development/python-modules/azure-mgmt-privatedns/default.nix b/pkgs/development/python-modules/azure-mgmt-privatedns/default.nix
index 2a89a0460cd8c..aeb519515bebe 100644
--- a/pkgs/development/python-modules/azure-mgmt-privatedns/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-privatedns/default.nix
@@ -1,33 +1,34 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, msrest
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-privatedns";
-  version = "1.1.0";
-  format = "setuptools";
+  version = "1.2.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-MtucYFpKj/ANNON1UdXrBrTsJnq53iph3SJ1ypWj+5g=";
-    extension = "zip";
+    pname = "azure_mgmt_privatedns";
+    inherit version;
+    hash = "sha256-NCMYcvAblPYZXY7lQo4XRpJS7QTqCCjVIyXr578KEgs=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-common
     azure-mgmt-core
     isodate
-    msrest
-  ]  ++ lib.optionals (pythonOlder "3.8") [
     typing-extensions
   ];
 
@@ -41,8 +42,9 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Microsoft Azure DNS Private Zones Client Library for Python";
-    homepage = "https://github.com/Azure/azure-sdk-for-python";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/network/azure-mgmt-privatedns";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-privatedns_${version}/sdk/network/azure-mgmt-privatedns/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-rdbms/default.nix b/pkgs/development/python-modules/azure-mgmt-rdbms/default.nix
index c73ae220f09d6..dc10601bb6620 100644
--- a/pkgs/development/python-modules/azure-mgmt-rdbms/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-rdbms/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     azure-mgmt-core
     msrest
     msrestazure
-  ] ++ lib.optionals (!isPy3k) [
-    azure-mgmt-nspkg
-  ];
+  ] ++ lib.optionals (!isPy3k) [ azure-mgmt-nspkg ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/azure-mgmt-recoveryservices/default.nix b/pkgs/development/python-modules/azure-mgmt-recoveryservices/default.nix
index 5f6377d54edd3..414fcce92ab10 100644
--- a/pkgs/development/python-modules/azure-mgmt-recoveryservices/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-recoveryservices/default.nix
@@ -1,39 +1,36 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-recoveryservices";
-  version = "2.5.0";
+  version = "3.0.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-XxowjEhYx5uD/4vY5hGSCSvcarmdbdc5Y2GLHciEurU=";
+    hash = "sha256-3yEt+t+8xlnDEjHD4XCqt8IRRNFysPiCaKsPWtjpWII=";
   };
 
   propagatedBuildInputs = [
     azure-common
     azure-mgmt-core
     isodate
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.mgmt.recoveryservices"
-  ];
+  pythonImportsCheck = [ "azure.mgmt.recoveryservices" ];
 
   meta = with lib; {
     description = "This is the Microsoft Azure Recovery Services Client Library";
diff --git a/pkgs/development/python-modules/azure-mgmt-redhatopenshift/default.nix b/pkgs/development/python-modules/azure-mgmt-redhatopenshift/default.nix
index fd6fe1b3e65bd..33ac1de82d77e 100644
--- a/pkgs/development/python-modules/azure-mgmt-redhatopenshift/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-redhatopenshift/default.nix
@@ -1,46 +1,43 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-redhatopenshift";
-  version = "1.4.0";
+  version = "1.5.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-BL2a2L2AwJWvs0V+VpSGaS8//AWMy5m6rdAPDJPbrEo=";
+    hash = "sha256-Uft0KcOciKzJ+ic9n4nxkwNSBmKZam19jhEiqY9fJSc=";
   };
 
   propagatedBuildInputs = [
     isodate
     azure-common
     azure-mgmt-core
-  ]  ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
   pythonNamespaces = "azure.mgmt";
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.mgmt.redhatopenshift"
-  ];
+  pythonImportsCheck = [ "azure.mgmt.redhatopenshift" ];
 
   meta = with lib; {
     description = "Microsoft Azure Red Hat Openshift Management Client Library for Python";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-redis/default.nix b/pkgs/development/python-modules/azure-mgmt-redis/default.nix
index 4bfbc40d7a42c..18cf2fd0c10bf 100644
--- a/pkgs/development/python-modules/azure-mgmt-redis/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-redis/default.nix
@@ -1,39 +1,36 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-redis";
-  version = "14.3.0";
+  version = "14.4.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-eoMbY4oNzYXkn3uFUhxecJQD+BxYkGTbWhAWSgAoLyA=";
+    hash = "sha256-CIRzJa/wexeuheb+Az0KBaz4z0HMmpzGBiOuLaxGZ+8=";
   };
 
   propagatedBuildInputs = [
     isodate
     azure-common
     azure-mgmt-core
-   ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.mgmt.redis"
-  ];
+  pythonImportsCheck = [ "azure.mgmt.redis" ];
 
   meta = with lib; {
     description = "This is the Microsoft Azure Redis Cache Management Client Library";
diff --git a/pkgs/development/python-modules/azure-mgmt-relay/default.nix b/pkgs/development/python-modules/azure-mgmt-relay/default.nix
index 9e6f2eb9f797d..0086fa3819739 100644
--- a/pkgs/development/python-modules/azure-mgmt-relay/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-relay/default.nix
@@ -1,16 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-relay";
   version = "1.1.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
@@ -18,7 +20,9 @@ buildPythonPackage rec {
     sha256 = "c93b7550e64b6734bf23ce57ca974a3ea929b734c58d1fe3669728c4fd2d2eb3";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     msrestazure
     azure-common
     azure-mgmt-core
@@ -27,8 +31,6 @@ buildPythonPackage rec {
 
   preBuild = ''
     rm -f azure_bdist_wheel.py
-    substituteInPlace setup.cfg \
-      --replace "azure-namespace-package = azure-mgmt-nspkg" ""
   '';
 
   pythonNamespaces = [ "azure.mgmt" ];
diff --git a/pkgs/development/python-modules/azure-mgmt-reservations/default.nix b/pkgs/development/python-modules/azure-mgmt-reservations/default.nix
index ee97aab67805e..d382ded7d8103 100644
--- a/pkgs/development/python-modules/azure-mgmt-reservations/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-reservations/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-mgmt-resource/default.nix b/pkgs/development/python-modules/azure-mgmt-resource/default.nix
index 648b22df38608..abbf8d3443488 100644
--- a/pkgs/development/python-modules/azure-mgmt-resource/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-resource/default.nix
@@ -1,26 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, azure-mgmt-core
-, azure-mgmt-common
-, msrest
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  azure-mgmt-core,
+  azure-mgmt-common,
+  msrest,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-resource";
-  version = "23.0.1";
-  format = "setuptools";
+  version = "23.1.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    extension = "zip";
-    hash = "sha256-wrps/ZnflfVfNurcQkXj3HEyVzAqH9And1bZS9jLKOA=";
+    hash = "sha256-ILawBrVE/bGWB/P2o4EQViXgu2D78wNvOYhcRkbTND4=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-mgmt-common
     azure-mgmt-core
     msrest
@@ -29,18 +32,17 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonNamespaces = [
-    "azure.mgmt"
-  ];
+  pythonNamespaces = [ "azure.mgmt" ];
 
-  pythonImportsCheck = [
-    "azure.mgmt.resource"
-  ];
+  pythonImportsCheck = [ "azure.mgmt.resource" ];
 
   meta = with lib; {
     description = "Microsoft Azure SDK for Python";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ olcai maxwilson jonringer ];
+    maintainers = with maintainers; [
+      olcai
+      maxwilson
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-scheduler/default.nix b/pkgs/development/python-modules/azure-mgmt-scheduler/default.nix
index 306a7500114f7..57d67492ccafa 100644
--- a/pkgs/development/python-modules/azure-mgmt-scheduler/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-scheduler/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-nspkg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-nspkg,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-mgmt-search/default.nix b/pkgs/development/python-modules/azure-mgmt-search/default.nix
index 5ba74007734a0..ebdfda97592ab 100644
--- a/pkgs/development/python-modules/azure-mgmt-search/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-search/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -24,16 +25,12 @@ buildPythonPackage rec {
     azure-common
     azure-mgmt-core
     isodate
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.mgmt.search"
-  ];
+  pythonImportsCheck = [ "azure.mgmt.search" ];
 
   meta = with lib; {
     description = "This is the Microsoft Azure Search Management Client Library";
diff --git a/pkgs/development/python-modules/azure-mgmt-security/default.nix b/pkgs/development/python-modules/azure-mgmt-security/default.nix
index 60271f7c03819..d28b485bfca54 100644
--- a/pkgs/development/python-modules/azure-mgmt-security/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-security/default.nix
@@ -1,30 +1,29 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
-, setuptools
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-security";
-  version = "6.0.0";
+  version = "7.0.0";
   fpyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-zq/BhpiZBnEQvYMMXMmLybjzLY6oQMofaTsaX1Kl+LA=";
+    hash = "sha256-WRLu1+nTdY/cqNJuHcJrQZQ9xHAyCKEYQmbiwlLhrWY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     azure-common
     azure-mgmt-core
     isodate
@@ -40,9 +39,9 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Microsoft Azure Security Center Management Client Library for Python";
-    homepage = "https://github.com/Azure/azure-sdk-for-python";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/security/azure-mgmt-security";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-security_${version}/sdk/security/azure-mgmt-security/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-servicebus/default.nix b/pkgs/development/python-modules/azure-mgmt-servicebus/default.nix
index 182fa1599752b..1606e56cccdc1 100644
--- a/pkgs/development/python-modules/azure-mgmt-servicebus/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-servicebus/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-mgmt-servicefabric/default.nix b/pkgs/development/python-modules/azure-mgmt-servicefabric/default.nix
index 1ba61f30fcfa1..916f785bf70be 100644
--- a/pkgs/development/python-modules/azure-mgmt-servicefabric/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-servicefabric/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
-, setuptools
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-oIQzBJVUQ2yQhEvIqWgg6INplITm/8mQMv0lcfjF99Y=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     isodate
@@ -30,9 +29,7 @@ buildPythonPackage rec {
     azure-mgmt-core
   ];
 
-  pythonNamespaces = [
-    "azure.mgmt"
-  ];
+  pythonNamespaces = [ "azure.mgmt" ];
 
   # Module has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/azure-mgmt-servicefabricmanagedclusters/default.nix b/pkgs/development/python-modules/azure-mgmt-servicefabricmanagedclusters/default.nix
index 513018a1ecc2b..4dbfb8a67be74 100644
--- a/pkgs/development/python-modules/azure-mgmt-servicefabricmanagedclusters/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-servicefabricmanagedclusters/default.nix
@@ -1,39 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-servicefabricmanagedclusters";
-  version = "1.0.0";
-  format = "setuptools";
+  version = "2.0.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    extension = "zip";
-    hash = "sha256-EJyjolHrt92zWg+IKWFKTapwZaFrwTtSyEIu5/mZXOg=";
+    hash = "sha256-Bw+pMc0H9Gk8t4vaaOgwSMZ/zqzUJHGZ7keH+ylZnVw=";
   };
 
-  propagatedBuildInputs = [
-    msrest
-    msrestazure
+  build-system = [ setuptools ];
+
+  dependencies = [
+    isodate
     azure-common
     azure-mgmt-core
   ];
 
   pythonNamespaces = [ "azure.mgmt" ];
 
-  # has no tests
+  # Module has tests in mono-repo
   doCheck = false;
 
   meta = with lib; {
     description = "This is the Microsoft Azure Service Fabric Cluster Management Client Library";
-    homepage = "https://github.com/Azure/azure-sdk-for-python";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/servicefabricmanagedclusters/azure-mgmt-servicefabricmanagedclusters";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-servicefabricmanagedclusters_${version}/sdk/servicefabricmanagedclusters/azure-mgmt-servicefabricmanagedclusters/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-servicelinker/default.nix b/pkgs/development/python-modules/azure-mgmt-servicelinker/default.nix
index 520ae24b32100..16b8fd1a9f39f 100644
--- a/pkgs/development/python-modules/azure-mgmt-servicelinker/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-servicelinker/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, azure-common
-, azure-mgmt-core
-, msrest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  azure-common,
+  azure-mgmt-core,
+  msrest,
 }:
 
 buildPythonPackage rec {
@@ -32,6 +33,6 @@ buildPythonPackage rec {
     description = "Microsoft Azure Servicelinker Management Client Library for Python";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-signalr/default.nix b/pkgs/development/python-modules/azure-mgmt-signalr/default.nix
index 2079cd8d0d98b..e40c1670747f9 100644
--- a/pkgs/development/python-modules/azure-mgmt-signalr/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-signalr/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-mgmt-sql/default.nix b/pkgs/development/python-modules/azure-mgmt-sql/default.nix
index c677f7e3cca09..83e45b54a9bbb 100644
--- a/pkgs/development/python-modules/azure-mgmt-sql/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-sql/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     msrestazure
     azure-common
     azure-mgmt-core
-  ] ++ lib.optionals (!isPy3k) [
-    azure-mgmt-nspkg
-  ];
+  ] ++ lib.optionals (!isPy3k) [ azure-mgmt-nspkg ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/azure-mgmt-sqlvirtualmachine/default.nix b/pkgs/development/python-modules/azure-mgmt-sqlvirtualmachine/default.nix
index 723e389a991b2..8a17230abf094 100644
--- a/pkgs/development/python-modules/azure-mgmt-sqlvirtualmachine/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-sqlvirtualmachine/default.nix
@@ -45,6 +45,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/sql/azure-mgmt-sqlvirtualmachine";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-sqlvirtualmachine_${version}/sdk/sql/azure-mgmt-sqlvirtualmachine/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-storage/default.nix b/pkgs/development/python-modules/azure-mgmt-storage/default.nix
index 5643ab8ce545f..1349ea2c4c245 100644
--- a/pkgs/development/python-modules/azure-mgmt-storage/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-storage/default.nix
@@ -1,35 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, azure-mgmt-common
-, azure-mgmt-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  azure-mgmt-common,
+  azure-mgmt-core,
+  isodate,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-storage";
-  version = "21.1.0";
-  format = "setuptools";
+  version = "21.2.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-1tPA6RfJiLye0Eckd9PvP5CIYAnrHZenEZRPg3VjAWI=";
+    hash = "sha256-UDp/+cMSVAkrBlZEX1cov9/aLQnUaoLpcBnqqaHs7GQ=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-mgmt-common
     azure-mgmt-core
+    isodate
   ];
 
-  pythonNamespaces = [
-    "azure.mgmt"
-  ];
+  pythonNamespaces = [ "azure.mgmt" ];
 
-  pythonImportsCheck = [
-    "azure.mgmt.storage"
-  ];
+  pythonImportsCheck = [ "azure.mgmt.storage" ];
 
   # Module has no tests
   doCheck = false;
@@ -37,7 +39,11 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "This is the Microsoft Azure Storage Management Client Library";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-storage_${version}/sdk/storage/azure-mgmt-storage/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer olcai maxwilson ];
+    maintainers = with maintainers; [
+      olcai
+      maxwilson
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-subscription/default.nix b/pkgs/development/python-modules/azure-mgmt-subscription/default.nix
index 1915f15110b9e..ad45a8015587d 100644
--- a/pkgs/development/python-modules/azure-mgmt-subscription/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-subscription/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     azure-mgmt-core
     msrest
     msrestazure
-  ] ++ lib.optionals (!isPy3k) [
-    azure-mgmt-nspkg
-  ];
+  ] ++ lib.optionals (!isPy3k) [ azure-mgmt-nspkg ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/azure-mgmt-synapse/default.nix b/pkgs/development/python-modules/azure-mgmt-synapse/default.nix
index d9bf2b13a5e04..a5449599400bc 100644
--- a/pkgs/development/python-modules/azure-mgmt-synapse/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-synapse/default.nix
@@ -39,6 +39,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/synapse/azure-mgmt-synapse";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-synapse_${version}/sdk/synapse/azure-mgmt-synapse/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-mgmt-trafficmanager/default.nix b/pkgs/development/python-modules/azure-mgmt-trafficmanager/default.nix
index e2ae6c3e9cf57..acccaba91bff1 100644
--- a/pkgs/development/python-modules/azure-mgmt-trafficmanager/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-trafficmanager/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msrest
-, msrestazure
-, azure-common
-, azure-mgmt-core
-, azure-mgmt-nspkg
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  azure-common,
+  azure-mgmt-core,
+  azure-mgmt-nspkg,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     msrestazure
     azure-common
     azure-mgmt-core
-  ] ++ lib.optionals (!isPy3k) [
-    azure-mgmt-nspkg
-  ];
+  ] ++ lib.optionals (!isPy3k) [ azure-mgmt-nspkg ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/azure-mgmt-web/default.nix b/pkgs/development/python-modules/azure-mgmt-web/default.nix
index 0008035e91e0f..aec11200508d4 100644
--- a/pkgs/development/python-modules/azure-mgmt-web/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-web/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-web";
-  version = "7.2.0";
+  version = "7.3.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-78/m9/Ug7Qq8/oZRfhyM8CpxL3N6PbDbfLRsbWR5ge0=";
+    hash = "sha256-h7dxQ2vJmnqN9Z0K0YW5aHmgbc4UdkoGs/w9r6j8tWs=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-monitor-ingestion/default.nix b/pkgs/development/python-modules/azure-monitor-ingestion/default.nix
index 7058a1bddbea2..e77ae5df94d3d 100644
--- a/pkgs/development/python-modules/azure-monitor-ingestion/default.nix
+++ b/pkgs/development/python-modules/azure-monitor-ingestion/default.nix
@@ -1,28 +1,27 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools
-, azure-core
-, isodate
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  azure-core,
+  isodate,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "azure-monitor-ingestion";
-  version = "1.0.3";
+  version = "1.0.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-idAEqP+HaZs/0fzyBaqO8enTTySg88w3TSIUceiYdDs=";
+    hash = "sha256-JU11mTof5wfRmPAUrvWhT6pXDO5zabNbsDriqo+Zvnk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     azure-core
diff --git a/pkgs/development/python-modules/azure-monitor-query/default.nix b/pkgs/development/python-modules/azure-monitor-query/default.nix
new file mode 100644
index 0000000000000..f4d0870e81804
--- /dev/null
+++ b/pkgs/development/python-modules/azure-monitor-query/default.nix
@@ -0,0 +1,42 @@
+{
+  azure-cli,
+  azure-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  lib,
+  setuptools,
+  typing-extensions,
+}:
+
+buildPythonPackage rec {
+  pname = "azure-monitor-query";
+  version = "1.4.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-aZxvPFlC8J2pjO8nP/u3QDkE7EP5PA1j8Qo2e0R54Ak=";
+  };
+
+  nativeBuildInputs = [ setuptools ];
+
+  dependencies = [
+    azure-core
+    isodate
+    typing-extensions
+  ];
+
+  pythonImportsCheck = [
+    "azure"
+    "azure.monitor.query"
+  ];
+
+  meta = {
+    changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-monitor-query_${version}/sdk/monitor/azure-monitor-query/CHANGELOG.md";
+    description = "Microsoft Azure Monitor Query Client Library for Python";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-query";
+    license = lib.licenses.mit;
+    maintainers = azure-cli.meta.maintainers;
+  };
+}
diff --git a/pkgs/development/python-modules/azure-multiapi-storage/default.nix b/pkgs/development/python-modules/azure-multiapi-storage/default.nix
index a3697ae4564d0..1a8a6b49031b0 100644
--- a/pkgs/development/python-modules/azure-multiapi-storage/default.nix
+++ b/pkgs/development/python-modules/azure-multiapi-storage/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "azure-multiapi-storage";
-  version = "1.2.0";
+  version = "1.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-CQuoWHeh0EMitTRsvifotrTwpWd/Q9LWWD7jZ2w9r8I=";
+    hash = "sha256-tlKogIs39tIoMVl3p/YConfPdPrpX9oc9WqQ+FuhgQk=";
   };
 
   build-system = [ setuptools ];
@@ -47,9 +47,9 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "Microsoft Azure Storage Client Library for Python with multi API version support.";
+    description = "Microsoft Azure Storage Client Library for Python with multi API version support";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-nspkg/default.nix b/pkgs/development/python-modules/azure-nspkg/default.nix
index a79963cddb26f..57fa097924931 100644
--- a/pkgs/development/python-modules/azure-nspkg/default.nix
+++ b/pkgs/development/python-modules/azure-nspkg/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -20,6 +21,9 @@ buildPythonPackage rec {
     description = "Microsoft Azure SDK for Python";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ olcai maxwilson ];
+    maintainers = with maintainers; [
+      olcai
+      maxwilson
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-search-documents/default.nix b/pkgs/development/python-modules/azure-search-documents/default.nix
new file mode 100644
index 0000000000000..b6c26610b205d
--- /dev/null
+++ b/pkgs/development/python-modules/azure-search-documents/default.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  azure-common,
+  azure-core,
+  isodate,
+}:
+
+buildPythonPackage rec {
+  pname = "azure-search-documents";
+  version = "11.4.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "Azure";
+    repo = "azure-sdk-for-python";
+    rev = "azure-search-documents_${version}";
+    hash = "sha256-0J9AXDH7TOkcKDwFbICiMatLAwiFq3Jtoji8fJSOg8k=";
+  };
+
+  sourceRoot = "${src.name}/sdk/search/azure-search-documents";
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    azure-common
+    azure-core
+    isodate
+  ];
+
+  pythonImportsCheck = [ "azure.search.documents" ];
+
+  # require devtools_testutils which is a internal package for azure-sdk
+  doCheck = false;
+
+  meta = {
+    description = "Microsoft Azure Cognitive Search Client Library for Python";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/search/azure-search-documents";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/blob/${src.rev}/sdk/search/azure-search-documents/CHANGELOG.md";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
+  };
+}
diff --git a/pkgs/development/python-modules/azure-servicebus/default.nix b/pkgs/development/python-modules/azure-servicebus/default.nix
index e84a9cb5fd214..6e622d51794d0 100644
--- a/pkgs/development/python-modules/azure-servicebus/default.nix
+++ b/pkgs/development/python-modules/azure-servicebus/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, azure-common
-, azure-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, msrest
-, pythonOlder
-, typing-extensions
-, uamqp
+{
+  lib,
+  azure-common,
+  azure-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  msrest,
+  pythonOlder,
+  typing-extensions,
+  uamqp,
 }:
 
 buildPythonPackage rec {
   pname = "azure-servicebus";
-  version = "7.12.1";
+  version = "7.12.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-sRv1aer3fDDYp2+IuTwIcT/TYYjZzG2r9x6tsQ63Qvk=";
+    hash = "sha256-pqPF957VvvEB2ePjyYahA7IA4mxJU8R6UvVSx1fkXso=";
   };
 
   propagatedBuildInputs = [
@@ -34,9 +35,7 @@ buildPythonPackage rec {
   # Tests require dev-tools
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.servicebus"
-  ];
+  pythonImportsCheck = [ "azure.servicebus" ];
 
   meta = with lib; {
     description = "Microsoft Azure Service Bus Client Library";
diff --git a/pkgs/development/python-modules/azure-servicefabric/default.nix b/pkgs/development/python-modules/azure-servicefabric/default.nix
index b7ad663a1b430..e7052a1716519 100644
--- a/pkgs/development/python-modules/azure-servicefabric/default.nix
+++ b/pkgs/development/python-modules/azure-servicefabric/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, azure-common
-, msrest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  azure-common,
+  msrest,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-servicemanagement-legacy/default.nix b/pkgs/development/python-modules/azure-servicemanagement-legacy/default.nix
index d47f38396c74f..bff86f69ba6b4 100644
--- a/pkgs/development/python-modules/azure-servicemanagement-legacy/default.nix
+++ b/pkgs/development/python-modules/azure-servicemanagement-legacy/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, azure-common
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  azure-common,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -30,6 +31,9 @@ buildPythonPackage rec {
     description = "This is the Microsoft Azure Service Management Legacy Client Library";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ olcai maxwilson ];
+    maintainers = with maintainers; [
+      olcai
+      maxwilson
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-storage-blob/default.nix b/pkgs/development/python-modules/azure-storage-blob/default.nix
index 3fd78981d046f..fa2876123e977 100644
--- a/pkgs/development/python-modules/azure-storage-blob/default.nix
+++ b/pkgs/development/python-modules/azure-storage-blob/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, azure-core
-, buildPythonPackage
-, cryptography
-, fetchPypi
-, isodate
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  azure-core,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "azure-storage-blob";
-  version = "12.19.1";
+  version = "12.20.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-E+FrpC/FSsLH6Pl2BiFzpcgrnsBZRyjhNKrDcpZaEbA=";
+    hash = "sha256-7rkSVuQdS1ubrWqH/QqK3gfdWKpSNE4sjSdG4noBfTs=";
   };
 
   propagatedBuildInputs = [
@@ -35,6 +36,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-storage-blob_${version}/sdk/storage/azure-storage-blob/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ cmcdragonkai maxwilson ];
+    maintainers = with maintainers; [
+      cmcdragonkai
+      maxwilson
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-storage-common/default.nix b/pkgs/development/python-modules/azure-storage-common/default.nix
index 361725a307aa2..7f5b602dad160 100644
--- a/pkgs/development/python-modules/azure-storage-common/default.nix
+++ b/pkgs/development/python-modules/azure-storage-common/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, azure-common
-, cryptography
-, python-dateutil
-, requests
-, isPy3k
-, azure-storage-nspkg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  azure-common,
+  cryptography,
+  python-dateutil,
+  requests,
+  isPy3k,
+  azure-storage-nspkg,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-storage-file-share/default.nix b/pkgs/development/python-modules/azure-storage-file-share/default.nix
index b89653fb67811..377b77975b841 100644
--- a/pkgs/development/python-modules/azure-storage-file-share/default.nix
+++ b/pkgs/development/python-modules/azure-storage-file-share/default.nix
@@ -1,33 +1,41 @@
-{ lib
-, azure-core
-, buildPythonPackage
-, cryptography
-, fetchPypi
-, isodate
-, msrest
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  azure-core,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "azure-storage-file-share";
-  version = "12.15.0";
-  format = "setuptools";
+  version = "12.18.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-AJjxz6k0TE94HODNUE/zo1JVdRVTwB5yDczQyqjYqio=";
+    pname = "azure_storage_file_share";
+    inherit version;
+    hash = "sha256-CoHa7l4TWYrM3jxzsa7Mxu39zsXpV79AFQwGIvuV3HY=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-core
     cryptography
     isodate
     typing-extensions
   ];
 
+  passthru.optional-dependencies = {
+    aio = [ azure-core ] ++ azure-core.optional-dependencies.aio;
+  };
+
   # Tests require checkout from monorepo
   doCheck = false;
 
@@ -38,7 +46,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Microsoft Azure File Share Storage Client Library for Python";
-    homepage = "https://github.com/Azure/azure-sdk-for-python";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/storage/azure-storage-file-share";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-storage-file-share_${version}/sdk/storage/azure-storage-file-share/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ kamadorueda ];
diff --git a/pkgs/development/python-modules/azure-storage-file/default.nix b/pkgs/development/python-modules/azure-storage-file/default.nix
index bf847905ae934..97ad54fda7041 100644
--- a/pkgs/development/python-modules/azure-storage-file/default.nix
+++ b/pkgs/development/python-modules/azure-storage-file/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, azure-common
-, azure-storage-common
-, isPy3k
-, futures ? null
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  azure-common,
+  azure-storage-common,
+  isPy3k,
+  futures ? null,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/azure-storage-nspkg/default.nix b/pkgs/development/python-modules/azure-storage-nspkg/default.nix
index 9d1394e5be3a0..3807fa100e409 100644
--- a/pkgs/development/python-modules/azure-storage-nspkg/default.nix
+++ b/pkgs/development/python-modules/azure-storage-nspkg/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, azure-nspkg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  azure-nspkg,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     sha256 = "6f3bbe8652d5f542767d8433e7f96b8df7f518774055ac7c92ed7ca85f653811";
   };
 
-  propagatedBuildInputs = [
-    azure-nspkg
-  ];
+  propagatedBuildInputs = [ azure-nspkg ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/azure-storage-queue/default.nix b/pkgs/development/python-modules/azure-storage-queue/default.nix
index 1fdbf6914d18a..86f757e0ab441 100644
--- a/pkgs/development/python-modules/azure-storage-queue/default.nix
+++ b/pkgs/development/python-modules/azure-storage-queue/default.nix
@@ -1,31 +1,31 @@
-{ lib
-, azure-core
-, buildPythonPackage
-, cryptography
-, fetchPypi
-, isodate
-, pythonOlder
-, setuptools
-, typing-extensions
+{
+  lib,
+  azure-core,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "azure-storage-queue";
-  version = "12.9.0";
+  version = "12.12.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-mBAbDhfaDUcM9XALbEDP50Q57Dycds84OYCW5zcbnRs=";
+    pname = "azure_storage_queue";
+    inherit version;
+    hash = "sha256-uvLxvIK31PUpGSLD6k8jziJD6ULb50lPyheCKQs38eQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     azure-core
     cryptography
     isodate
@@ -33,17 +33,13 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    aio = [
-      azure-core
-    ] ++ azure-core.optional-dependencies.aio;
+    aio = [ azure-core ] ++ azure-core.optional-dependencies.aio;
   };
 
   # has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.storage.queue"
-  ];
+  pythonImportsCheck = [ "azure.storage.queue" ];
 
   meta = with lib; {
     description = "Client library for Microsoft Azure Storage services containing the queue service APIs";
diff --git a/pkgs/development/python-modules/azure-synapse-accesscontrol/default.nix b/pkgs/development/python-modules/azure-synapse-accesscontrol/default.nix
index 55fd07d99e20d..0e3b8ce8c4f3a 100644
--- a/pkgs/development/python-modules/azure-synapse-accesscontrol/default.nix
+++ b/pkgs/development/python-modules/azure-synapse-accesscontrol/default.nix
@@ -40,6 +40,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/synapse/azure-synapse-accesscontrol";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-synapse-accesscontrol_${version}/sdk/synapse/azure-synapse-accesscontrol/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-synapse-artifacts/default.nix b/pkgs/development/python-modules/azure-synapse-artifacts/default.nix
index 1782dd56e4854..a952c215ab231 100644
--- a/pkgs/development/python-modules/azure-synapse-artifacts/default.nix
+++ b/pkgs/development/python-modules/azure-synapse-artifacts/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, azure-common
-, azure-core
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
+{
+  lib,
+  azure-common,
+  azure-core,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "azure-synapse-artifacts";
-  version = "0.18.0";
+  version = "0.19.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-qgiHMzW7T5NuQl0jwZheMXp7wHhNOHyH24J6wfc4VqQ=";
+    hash = "sha256-UvCSsiZ315IoDwvMI02JLJ9zjpPI4Ut0wZUQG5uicYQ=";
   };
 
   propagatedBuildInputs = [
@@ -30,15 +31,13 @@ buildPythonPackage rec {
   # Tests are only available in mono-repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "azure.synapse.artifacts"
-  ];
+  pythonImportsCheck = [ "azure.synapse.artifacts" ];
 
   meta = with lib; {
     description = "Microsoft Azure Synapse Artifacts Client Library for Python";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-synapse-artifacts_${version}/sdk/synapse/azure-synapse-artifacts/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-synapse-managedprivateendpoints/default.nix b/pkgs/development/python-modules/azure-synapse-managedprivateendpoints/default.nix
index 0ad839d459889..dfceb84958399 100644
--- a/pkgs/development/python-modules/azure-synapse-managedprivateendpoints/default.nix
+++ b/pkgs/development/python-modules/azure-synapse-managedprivateendpoints/default.nix
@@ -39,6 +39,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/synapse/azure-synapse-managedprivateendpoints";
     changelog = "https://github.com/Azure/azure-sdk-for-python/tree/azure-synapse-managedprivateendpoints_${version}/sdk/synapse/azure-synapse-managedprivateendpoints";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/azure-synapse-spark/default.nix b/pkgs/development/python-modules/azure-synapse-spark/default.nix
index 51e07290ef6de..8c6e244e37bd7 100644
--- a/pkgs/development/python-modules/azure-synapse-spark/default.nix
+++ b/pkgs/development/python-modules/azure-synapse-spark/default.nix
@@ -37,6 +37,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/synapse/azure-synapse-spark";
     changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-synapse-spark_${version}/sdk/synapse/azure-synapse-spark/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/b2sdk/default.nix b/pkgs/development/python-modules/b2sdk/default.nix
index 266443af70f02..7b56d75ddd03f 100644
--- a/pkgs/development/python-modules/b2sdk/default.nix
+++ b/pkgs/development/python-modules/b2sdk/default.nix
@@ -6,6 +6,7 @@
   glibcLocales,
   importlib-metadata,
   logfury,
+  annotated-types,
   packaging,
   pdm-backend,
   pyfakefs,
@@ -13,7 +14,6 @@
   pytest-mock,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
   requests,
   tqdm,
   typing-extensions,
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "b2sdk";
-  version = "2.1.0";
+  version = "2.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -30,17 +30,17 @@ buildPythonPackage rec {
     owner = "Backblaze";
     repo = "b2-sdk-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-/TuPT+Y0asGGtfRNxxvpX0WkS4O4asFmIuqSdQ4I9fQ=";
+    hash = "sha256-SaoQzP7vtzVWmkUTw0vCeneeSMTmBTIr5kiMXGcgm9g=";
   };
 
   build-system = [ pdm-backend ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   pythonRemoveDeps = [ "setuptools" ];
 
   dependencies =
     [
+      annotated-types
       packaging
       logfury
       requests
@@ -54,7 +54,7 @@ buildPythonPackage rec {
     pytest-mock
     pytestCheckHook
     tqdm
-  ] ++ lib.optionals stdenv.isLinux [ glibcLocales ];
+  ] ++ lib.optionals stdenv.hostPlatform.isLinux [ glibcLocales ];
 
   disabledTestPaths = [
     # requires aws s3 auth
@@ -80,6 +80,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Backblaze/b2-sdk-python";
     changelog = "https://github.com/Backblaze/b2-sdk-python/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/babel/default.nix b/pkgs/development/python-modules/babel/default.nix
index 2e2a1a66eb483..de68774a358b3 100644
--- a/pkgs/development/python-modules/babel/default.nix
+++ b/pkgs/development/python-modules/babel/default.nix
@@ -1,52 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPyPy
-, pythonAtLeast
-, pythonOlder
-
-# build-system
-, setuptools
-
-# tests
-, freezegun
-, pytestCheckHook
-, pytz
-, tzdata
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  pythonOlder,
+
+  # build-system
+  setuptools,
+
+  # tests
+  freezegun,
+  pytestCheckHook,
+  pytz,
+  tzdata,
 }:
 
 buildPythonPackage rec {
   pname = "babel";
-  version = "2.14.0";
+  version = "2.15.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    pname = "Babel";
-    inherit version;
-    hash = "sha256-aRmGfbA2OYuiHrXHoPayirjLw656c6ROvjSudKTn02M=";
+    inherit pname version;
+    hash = "sha256-ja8OJl0FdovGx6MUzxMh6aEjr8MozGNcGGIqLzCgRBM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
-
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.9") [
-    pytz
-  ];
-
-  # including backports.zoneinfo for python<3.9 yields infinite recursion
-  doCheck = pythonAtLeast "3.9";
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     freezegun
     pytestCheckHook
     # https://github.com/python-babel/babel/issues/988#issuecomment-1521765563
     pytz
-  ] ++ lib.optionals isPyPy [
-    tzdata
-  ];
+  ] ++ lib.optionals isPyPy [ tzdata ];
 
   disabledTests = [
     # fails on days switching from and to daylight saving time in EST
@@ -54,12 +42,14 @@ buildPythonPackage rec {
     "test_format_time"
   ];
 
-  meta = with lib; {
+  pythonImportsCheck = [ "babel" ];
+
+  meta = {
+    description = "Collection of internationalizing tools";
     homepage = "https://babel.pocoo.org/";
     changelog = "https://github.com/python-babel/babel/releases/tag/v${version}";
-    description = "Collection of internationalizing tools";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ getchoo ];
     mainProgram = "pybabel";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/babelfish/default.nix b/pkgs/development/python-modules/babelfish/default.nix
index f79a0ba005faf..9c7a990cbc82c 100644
--- a/pkgs/development/python-modules/babelfish/default.nix
+++ b/pkgs/development/python-modules/babelfish/default.nix
@@ -1,16 +1,25 @@
-{ lib, buildPythonPackage, fetchPypi, setuptools }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  poetry-core,
+  importlib-metadata,
+}:
 
 buildPythonPackage rec {
   pname = "babelfish";
-  version = "0.6.0";
-  format = "setuptools";
+  version = "0.6.1";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2dadfadd1b205ca5fa5dc9fa637f5b7933160a0418684c7c46a7a664033208a2";
+    hash = "sha256-3stnpGYIiNSEgKtpmDCYNxdBWNDxqmO+uxwuEaq5eqs=";
   };
 
-  propagatedBuildInputs = [ setuptools ];
+  build-system = [ poetry-core ];
+
+  dependencies = lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
   # no tests executed
   doCheck = false;
@@ -18,9 +27,9 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "babelfish" ];
 
   meta = with lib; {
-    homepage = "https://pypi.python.org/pypi/babelfish";
-    description = "A module to work with countries and languages";
+    homepage = "https://github.com/Diaoul/babelfish";
+    description = "Module to work with countries and languages";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/babelfont/default.nix b/pkgs/development/python-modules/babelfont/default.nix
index 8afa32c500533..cc64639537e1e 100644
--- a/pkgs/development/python-modules/babelfont/default.nix
+++ b/pkgs/development/python-modules/babelfont/default.nix
@@ -1,33 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cu2qu
-, defcon
-, fontfeatures
-, fonttools
-, glyphslib
-, openstep-plist
-, orjson
-, poetry-core
-, pytestCheckHook
-, ufolib2
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cu2qu,
+  defcon,
+  fontfeatures,
+  fonttools,
+  glyphslib,
+  openstep-plist,
+  orjson,
+  pytestCheckHook,
+  setuptools,
+  setuptools-scm,
+  ufolib2,
+  vfblib,
 }:
 
 buildPythonPackage rec {
   pname = "babelfont";
-  version = "3.0.1";
+  version = "3.0.5";
+  pyproject = true;
 
   # PyPI source tarballs omit tests, fetch from Github instead
   src = fetchFromGitHub {
     owner = "simoncozens";
     repo = pname;
-    rev = "v${version}";
-    hash = "sha256-1DHcJDVaCgIAODyf5UUrXej8x3ySD4+6/KtxuF2yFV4=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-9PEOkkm7qH4ExiJJKrTZX5Ph/urtOyFsy7jjtFepncU=";
   };
 
-  pyproject = true;
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cu2qu
     fontfeatures
     fonttools
@@ -35,17 +42,23 @@ buildPythonPackage rec {
     openstep-plist
     orjson
     ufolib2
-  ];
-  nativeBuildInputs = [
-    poetry-core
+    vfblib
   ];
 
-  doCheck = true;
   nativeCheckInputs = [
     defcon
     pytestCheckHook
   ];
 
+  # Want non exsiting test data
+  disabledTests = [
+    "test_rename"
+    "test_rename_nested"
+    "test_rename_contextual"
+  ];
+
+  disabledTestPaths = [ "tests/test_glyphs3_roundtrip.py" ];
+
   meta = with lib; {
     description = "Python library to load, examine, and save fonts in a variety of formats";
     mainProgram = "babelfont";
diff --git a/pkgs/development/python-modules/babelgladeextractor/default.nix b/pkgs/development/python-modules/babelgladeextractor/default.nix
index d6154a063e7c3..901f4e1e020d9 100644
--- a/pkgs/development/python-modules/babelgladeextractor/default.nix
+++ b/pkgs/development/python-modules/babelgladeextractor/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, isPy3k
-, buildPythonPackage
-, fetchPypi
-, babel
+{
+  lib,
+  isPy3k,
+  buildPythonPackage,
+  fetchPypi,
+  babel,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     sha256 = "160p4wi2ss69g141c2z59azvrhn7ymy5m9h9d65qrcabigi0by5w";
   };
 
-  propagatedBuildInputs = [
-    babel
-  ];
+  propagatedBuildInputs = [ babel ];
 
   # SyntaxError: Non-ASCII character '\xc3' in file /build/BabelGladeExtractor-0.6.3/babelglade/tests/test_translate.py on line 20, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
   doCheck = isPy3k;
@@ -29,6 +28,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/gnome-keysign/babel-glade";
     description = "Babel Glade XML files translatable strings extractor";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/backcall/default.nix b/pkgs/development/python-modules/backcall/default.nix
index adf4daa893ae5..ca1f30956a1c1 100644
--- a/pkgs/development/python-modules/backcall/default.nix
+++ b/pkgs/development/python-modules/backcall/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -25,5 +26,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/takluyver/backcall";
     license = lib.licenses.bsd3;
   };
-
 }
diff --git a/pkgs/development/python-modules/backoff/default.nix b/pkgs/development/python-modules/backoff/default.nix
index 000f024476760..46e0f80bf2402 100644
--- a/pkgs/development/python-modules/backoff/default.nix
+++ b/pkgs/development/python-modules/backoff/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pytest-asyncio
-, responses
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pytest-asyncio,
+  responses,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-g8bYGJ6Kw6y3BUnuoP1IAye5CL0geH5l7pTb3xxq7jI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -29,9 +28,7 @@ buildPythonPackage rec {
     responses
   ];
 
-  pythonImportsCheck = [
-    "backoff"
-  ];
+  pythonImportsCheck = [ "backoff" ];
 
   meta = with lib; {
     description = "Function decoration for backoff and retry";
diff --git a/pkgs/development/python-modules/backports-cached-property/default.nix b/pkgs/development/python-modules/backports-cached-property/default.nix
index dcce9b5fc6f0b..c2a0bc2459152 100644
--- a/pkgs/development/python-modules/backports-cached-property/default.nix
+++ b/pkgs/development/python-modules/backports-cached-property/default.nix
@@ -1,6 +1,13 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder
-, setuptools-scm, wheel
-, pytestCheckHook, pytest-mock, pytest-sugar
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools-scm,
+  wheel,
+  pytestCheckHook,
+  pytest-mock,
+  pytest-sugar,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +24,9 @@ buildPythonPackage rec {
     hash = "sha256-rdgKbVQaELilPrN4ve8RbbaLiT14Xex0esy5vUX2ZBc=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    wheel
-  ];
+  propagatedBuildInputs = [ wheel ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -31,9 +34,7 @@ buildPythonPackage rec {
     pytest-sugar
   ];
 
-  pythonImportsCheck = [
-    "backports.cached_property"
-  ];
+  pythonImportsCheck = [ "backports.cached_property" ];
 
   meta = with lib; {
     description = "Python 3.8 functools.cached_property backport to python 3.6";
diff --git a/pkgs/development/python-modules/backports-datetime-fromisoformat/default.nix b/pkgs/development/python-modules/backports-datetime-fromisoformat/default.nix
index febf3d50bb4f3..103ee2561aaae 100644
--- a/pkgs/development/python-modules/backports-datetime-fromisoformat/default.nix
+++ b/pkgs/development/python-modules/backports-datetime-fromisoformat/default.nix
@@ -1,30 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# tests
-, pytz
-, pytestCheckHook
+  # tests
+  pytz,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "backports-datetime-fromisoformat";
-  version = "2.0.1";
+  version = "2.0.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "movermeyer";
     repo = "backports.datetime_fromisoformat";
     rev = "refs/tags/v${version}";
-    hash = "sha256-c3LCTOKva99+x96iLHNnL1e1Ft1M1CsjQX+nEqAlXUs=";
+    hash = "sha256-v9Njic7zN2bv1lQgdbJNeZLF3VXcC9A4UoE/znLF0gM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pytz
@@ -32,19 +31,17 @@ buildPythonPackage rec {
   ];
 
   disabledTestPaths = [
-      # ModuleNotFoundError: No module named 'developmental_release'
+    # ModuleNotFoundError: No module named 'developmental_release'
     "release/test_developmental_release.py"
   ];
 
-  pythonImportsCheck = [
-    "backports.datetime_fromisoformat"
-  ];
+  pythonImportsCheck = [ "backports.datetime_fromisoformat" ];
 
   meta = with lib; {
     changelog = "https://github.com/movermeyer/backports.datetime_fromisoformat/releases/tag/v${version}";
     description = "Backport of Python 3.11's datetime.fromisoformat";
     homepage = "https://github.com/movermeyer/backports.datetime_fromisoformat";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/backports-entry-points-selectable/default.nix b/pkgs/development/python-modules/backports-entry-points-selectable/default.nix
index ea57e4887bff9..7e5046f6b618a 100644
--- a/pkgs/development/python-modules/backports-entry-points-selectable/default.nix
+++ b/pkgs/development/python-modules/backports-entry-points-selectable/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools-scm
-, importlib-metadata
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools-scm,
+  importlib-metadata,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-F6i0SucA+6VIaG3SdN3JHAYDcVZc1jgGwgodM5EXRuY=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   # no tests
   doCheck = false;
@@ -39,6 +36,6 @@ buildPythonPackage rec {
     description = "Compatibility shim providing selectable entry points for older implementations";
     homepage = "https://github.com/jaraco/backports.entry_points_selectable";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/backports-shutil-get-terminal-size/default.nix b/pkgs/development/python-modules/backports-shutil-get-terminal-size/default.nix
index 237cde584ebde..b70f3acaaea9c 100644
--- a/pkgs/development/python-modules/backports-shutil-get-terminal-size/default.nix
+++ b/pkgs/development/python-modules/backports-shutil-get-terminal-size/default.nix
@@ -1,35 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
+  pythonOlder,
 }:
 
-if !(pythonOlder "3.3") then null else buildPythonPackage {
-  pname = "backports-shutil-get-terminal-size";
-  version = "unstable-2016-02-21";
+if !(pythonOlder "3.3") then
+  null
+else
+  buildPythonPackage {
+    pname = "backports-shutil-get-terminal-size";
+    version = "unstable-2016-02-21";
 
-  # there have been numerous fixes committed since the initial release.
-  # Most notably fixing a problem where the backport would always return
-  # terminal size 0. See https://trac.sagemath.org/ticket/25320#comment:5.
-  # Unfortunately the maintainer seems inactive and has not responded to
-  # a request for a new release since 2016:
-  # https://github.com/chrippa/backports.shutil_get_terminal_size/issues/7
-  src = fetchFromGitHub {
-    owner = "chrippa";
-    repo = "backports.shutil_get_terminal_size";
-    rev = "159e269450dbf37c3a837f6ea7e628d59acbb96a";
-    sha256 = "17sgv8vg0xxfdnca45l1mmwwvj29gich5c8kqznnj51kfccch7sg";
-  };
+    # there have been numerous fixes committed since the initial release.
+    # Most notably fixing a problem where the backport would always return
+    # terminal size 0. See https://trac.sagemath.org/ticket/25320#comment:5.
+    # Unfortunately the maintainer seems inactive and has not responded to
+    # a request for a new release since 2016:
+    # https://github.com/chrippa/backports.shutil_get_terminal_size/issues/7
+    src = fetchFromGitHub {
+      owner = "chrippa";
+      repo = "backports.shutil_get_terminal_size";
+      rev = "159e269450dbf37c3a837f6ea7e628d59acbb96a";
+      sha256 = "17sgv8vg0xxfdnca45l1mmwwvj29gich5c8kqznnj51kfccch7sg";
+    };
 
-  nativeCheckInputs = [
-    pytest
-  ];
+    nativeCheckInputs = [ pytest ];
 
-  meta = with lib; {
-    description = "A backport of the get_terminal_size function from Python 3.3’s shutil.";
-    homepage = "https://github.com/chrippa/backports.shutil_get_terminal_size";
-    license = with licenses; [ mit ];
-    maintainers = teams.sage.members;
-  };
-}
+    meta = with lib; {
+      description = "Backport of the get_terminal_size function from Python 3.3’s shutil";
+      homepage = "https://github.com/chrippa/backports.shutil_get_terminal_size";
+      license = with licenses; [ mit ];
+      maintainers = teams.sage.members;
+    };
+  }
diff --git a/pkgs/development/python-modules/backports-shutil-which/default.nix b/pkgs/development/python-modules/backports-shutil-which/default.nix
index 290e4e2697811..07335b5bf6b1c 100644
--- a/pkgs/development/python-modules/backports-shutil-which/default.nix
+++ b/pkgs/development/python-modules/backports-shutil-which/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchPypi, buildPythonPackage, pytest }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "backports-shutil-which";
diff --git a/pkgs/development/python-modules/backports-strenum/default.nix b/pkgs/development/python-modules/backports-strenum/default.nix
index 229f9282c3555..8c2df112478c7 100644
--- a/pkgs/development/python-modules/backports-strenum/default.nix
+++ b/pkgs/development/python-modules/backports-strenum/default.nix
@@ -1,36 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "backports-strenum";
-  version = "1.2.8";
+  version = "1.3.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.8" || pythonAtLeast "3.11";
 
   src = fetchFromGitHub {
     owner = "clbarnes";
     repo = "backports.strenum";
     rev = "refs/tags/v${version}";
-    hash = "sha256-jbMR9VAGsMAJTP2VQyRr+RPYwWwk8hGAYs4KoZEWa7U=";
+    hash = "sha256-j5tALFrLeZ8k+GwAaq0ocmcQWvdWkRUHbOVq5Du4mu0=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "backports.strenum"
-  ];
+  pythonImportsCheck = [ "backports.strenum" ];
 
   meta = with lib; {
     description = "Base class for creating enumerated constants that are also subclasses of str";
diff --git a/pkgs/development/python-modules/backports-tarfile/default.nix b/pkgs/development/python-modules/backports-tarfile/default.nix
new file mode 100644
index 0000000000000..49c5c7458c884
--- /dev/null
+++ b/pkgs/development/python-modules/backports-tarfile/default.nix
@@ -0,0 +1,65 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  jaraco-test,
+  pytestCheckHook,
+}:
+
+let self = buildPythonPackage rec {
+  pname = "backports-tarfile";
+  version = "1.2.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "jaraco";
+    repo = "backports.tarfile";
+    rev = "v${version}";
+    hash = "sha256-X3rkL35aDG+DnIOq0fI7CFoWGNtgLkLjtT9y6+23oto=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+    wheel
+  ];
+
+  doCheck = false;
+
+  nativeCheckInputs = [
+    jaraco-test
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # calls python -m backports.tarfile and doesn't find module documentation
+    "test_bad_use"
+    "test_create_command"
+    "test_create_command_compressed"
+    "test_create_command_dot_started_filename"
+    "test_create_command_dotless_filename"
+    "test_extract_command"
+    "test_extract_command_different_directory"
+    "test_extract_command_invalid_file"
+    "test_list_command_invalid_file"
+    "test_test_command"
+    "test_test_command_invalid_file"
+    # chmod: permission denied
+    "test_modes"
+  ];
+
+  pythonImportsCheck = [ "backports.tarfile" ];
+
+  passthru.tests.pytest = self.overridePythonAttrs { doCheck = true; };
+
+  meta = with lib; {
+    description = "Backport of CPython tarfile module";
+    homepage = "https://github.com/jaraco/backports.tarfile";
+    license = licenses.mit;
+    maintainers = [ ];
+  };
+};
+in self
diff --git a/pkgs/development/python-modules/backports-zoneinfo/default.nix b/pkgs/development/python-modules/backports-zoneinfo/default.nix
index ff5196855d343..8dbefd22d281d 100644
--- a/pkgs/development/python-modules/backports-zoneinfo/default.nix
+++ b/pkgs/development/python-modules/backports-zoneinfo/default.nix
@@ -1,13 +1,16 @@
-{ lib, buildPythonPackage, fetchFromGitHub
-, pythonAtLeast
-, pythonOlder
-, python
-, substituteAll
-, importlib-resources
-, tzdata
-, hypothesis
-, pytestCheckHook
-, fetchpatch
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonAtLeast,
+  pythonOlder,
+  python,
+  substituteAll,
+  importlib-resources,
+  tzdata,
+  hypothesis,
+  pytestCheckHook,
+  fetchpatch,
 }:
 
 buildPythonPackage rec {
@@ -50,11 +53,7 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [
-    tzdata
-  ] ++ lib.optionals (pythonOlder "3.7") [
-    importlib-resources
-  ];
+  propagatedBuildInputs = [ tzdata ] ++ lib.optionals (pythonOlder "3.7") [ importlib-resources ];
 
   pythonImportsCheck = [ "backports.zoneinfo" ];
 
@@ -76,6 +75,6 @@ buildPythonPackage rec {
     description = "Backport of the standard library module zoneinfo";
     homepage = "https://github.com/pganssle/zoneinfo";
     license = licenses.asl20;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/bacpypes/default.nix b/pkgs/development/python-modules/bacpypes/default.nix
index 9a30c1bbd6a94..8819f55e0a668 100644
--- a/pkgs/development/python-modules/bacpypes/default.nix
+++ b/pkgs/development/python-modules/bacpypes/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, wheel
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  wheel,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,22 +29,16 @@ buildPythonPackage rec {
       --replace "(3, 8): 'py34'," "(3, 8): 'py34', (3, 9): 'py34', (3, 10): 'py34', (3, 11): 'py34', (3, 12): 'py34',"
   '';
 
-  propagatedBuildInputs = [
-    wheel
-  ];
+  propagatedBuildInputs = [ wheel ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Test fails with a an error: AssertionError: assert 30 == 31
     "test_recurring_task_5"
   ];
 
-  pythonImportsCheck = [
-    "bacpypes"
-  ];
+  pythonImportsCheck = [ "bacpypes" ];
 
   meta = with lib; {
     description = "Module for the BACnet application layer and network layer";
diff --git a/pkgs/development/python-modules/bagit/default.nix b/pkgs/development/python-modules/bagit/default.nix
index abc9fdb1661fa..6742f35877c40 100644
--- a/pkgs/development/python-modules/bagit/default.nix
+++ b/pkgs/development/python-modules/bagit/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, gettext
-, mock
-, pytestCheckHook
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gettext,
+  mock,
+  pytestCheckHook,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,10 @@ buildPythonPackage rec {
     hash = "sha256-t01P7MPWgOrktuW2zF0TIzt6u/jkLmrpD2OnqawhJaI=";
   };
 
-  nativeBuildInputs = [ gettext setuptools-scm ];
+  nativeBuildInputs = [
+    gettext
+    setuptools-scm
+  ];
 
   nativeCheckInputs = [
     mock
diff --git a/pkgs/development/python-modules/bambi/default.nix b/pkgs/development/python-modules/bambi/default.nix
index 5a3a23a4e3d07..f2447b2c9d125 100644
--- a/pkgs/development/python-modules/bambi/default.nix
+++ b/pkgs/development/python-modules/bambi/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, arviz
-, formulae
-, graphviz
-, pandas
-, pymc
-, blackjax
-, numpyro
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  arviz,
+  formulae,
+  graphviz,
+  pandas,
+  pymc,
+  blackjax,
+  numpyro,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     hash = "sha256-9+uTyV3mQlHOKAjXohwkhTzNe/+I5XR/LuH1ZYvhc8I=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     arviz
@@ -80,9 +79,7 @@ buildPythonPackage rec {
     "test_with_user_values"
   ];
 
-  pythonImportsCheck = [
-    "bambi"
-  ];
+  pythonImportsCheck = [ "bambi" ];
 
   meta = with lib; {
     homepage = "https://bambinos.github.io/bambi";
@@ -90,5 +87,7 @@ buildPythonPackage rec {
     changelog = "https://github.com/bambinos/bambi/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ bcdarwin ];
+    # https://github.com/NixOS/nixpkgs/issues/310940
+    broken = true;
   };
 }
diff --git a/pkgs/development/python-modules/banal/default.nix b/pkgs/development/python-modules/banal/default.nix
index d8843dd894864..a2b938a5f035f 100644
--- a/pkgs/development/python-modules/banal/default.nix
+++ b/pkgs/development/python-modules/banal/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
 }:
 buildPythonPackage rec {
   pname = "banal";
@@ -15,9 +16,7 @@ buildPythonPackage rec {
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "banal"
-  ];
+  pythonImportsCheck = [ "banal" ];
 
   meta = with lib; {
     description = "Commons of banal micro-functions for Python";
diff --git a/pkgs/development/python-modules/bandcamp-api/default.nix b/pkgs/development/python-modules/bandcamp-api/default.nix
index 31efe43cbef59..c1feeae7ffe13 100644
--- a/pkgs/development/python-modules/bandcamp-api/default.nix
+++ b/pkgs/development/python-modules/bandcamp-api/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, beautifulsoup4
-, demjson3
-, html5lib
-, lxml
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  beautifulsoup4,
+  demjson3,
+  html5lib,
+  lxml,
+  requests,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/bandit/default.nix b/pkgs/development/python-modules/bandit/default.nix
index e309643e8c6e8..8495ccf626f7e 100644
--- a/pkgs/development/python-modules/bandit/default.nix
+++ b/pkgs/development/python-modules/bandit/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, gitpython
-, pbr
-, pyyaml
-, rich
-, stevedore
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  gitpython,
+  pbr,
+  pyyaml,
+  rich,
+  stevedore,
 }:
 
 buildPythonPackage rec {
   pname = "bandit";
-  version = "1.7.8";
+  version = "1.7.9";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Nt5Q9yCFarJKJNuqX+4sZgUO2XwUd+ChFZ3qsXdeq2s=";
+    hash = "sha256-fDlaQ2dDAY974KTLsKTqm5ArbYcmTd7PjP3HO094/2E=";
   };
 
-  nativeBuildInputs = [
-    pbr
-  ];
+  nativeBuildInputs = [ pbr ];
 
   propagatedBuildInputs = [
     gitpython
@@ -36,9 +35,7 @@ buildPythonPackage rec {
   #   and this requires Network Connectivity
   doCheck = false;
 
-  pythonImportsCheck = [
-    "bandit"
-  ];
+  pythonImportsCheck = [ "bandit" ];
 
   meta = with lib; {
     description = "Security oriented static analyser for python code";
diff --git a/pkgs/development/python-modules/bangla/default.nix b/pkgs/development/python-modules/bangla/default.nix
index d5664d7aeae0b..4cdaee2a25293 100644
--- a/pkgs/development/python-modules/bangla/default.nix
+++ b/pkgs/development/python-modules/bangla/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/bap/default.nix b/pkgs/development/python-modules/bap/default.nix
index a3316b8651f52..f598b1aa7907c 100644
--- a/pkgs/development/python-modules/bap/default.nix
+++ b/pkgs/development/python-modules/bap/default.nix
@@ -1,4 +1,10 @@
-{lib, buildPythonPackage, fetchFromGitHub, bap, requests}:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  bap,
+  requests,
+}:
 
 buildPythonPackage rec {
   pname = "bap";
@@ -11,12 +17,15 @@ buildPythonPackage rec {
     sha256 = "1ahkrmcn7qaivps1gar8wd9mq2qqyx6zzvznf5r9rr05h17x5lbp";
   };
 
-  propagatedBuildInputs = [bap requests];
+  propagatedBuildInputs = [
+    bap
+    requests
+  ];
 
   doCheck = false;
 
   meta = with lib; {
-    description = "Platform for binary analysis. It is written in OCaml, but can be used from other languages.";
+    description = "Platform for binary analysis. It is written in OCaml, but can be used from other languages";
     homepage = "https://github.com/BinaryAnalysisPlatform/bap/";
     maintainers = [ maintainers.maurer ];
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/barectf/default.nix b/pkgs/development/python-modules/barectf/default.nix
index ed9be93dd0217..9685709040673 100644
--- a/pkgs/development/python-modules/barectf/default.nix
+++ b/pkgs/development/python-modules/barectf/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest7CheckHook
-, pythonRelaxDepsHook
-, setuptools
-, jsonschema
-, pyyaml
-, jinja2
-, termcolor
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest7CheckHook,
+  setuptools,
+  jsonschema,
+  pyyaml,
+  jinja2,
+  termcolor,
 }:
 
 buildPythonPackage rec {
@@ -25,7 +25,6 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = [
@@ -42,16 +41,12 @@ buildPythonPackage rec {
     termcolor
   ];
 
-  pythonImportsCheck = [
-    "barectf"
-  ];
+  pythonImportsCheck = [ "barectf" ];
 
-  nativeCheckInputs = [
-    pytest7CheckHook
-  ];
+  nativeCheckInputs = [ pytest7CheckHook ];
 
   meta = with lib; {
-    description = "Generator of ANSI C tracers which output CTF data streams ";
+    description = "Generator of ANSI C tracers which output CTF data streams";
     mainProgram = "barectf";
     homepage = "https://github.com/efficios/barectf";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/baron/default.nix b/pkgs/development/python-modules/baron/default.nix
index d02a434248fb9..8e766dc784866 100644
--- a/pkgs/development/python-modules/baron/default.nix
+++ b/pkgs/development/python-modules/baron/default.nix
@@ -1,4 +1,11 @@
-{ lib, fetchPypi, buildPythonPackage, rply, pytestCheckHook, isPy3k }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  rply,
+  pytestCheckHook,
+  isPy3k,
+}:
 
 buildPythonPackage rec {
   pname = "baron";
diff --git a/pkgs/development/python-modules/base2048/default.nix b/pkgs/development/python-modules/base2048/default.nix
index 8d75bd93e336a..4a760c5b6f192 100644
--- a/pkgs/development/python-modules/base2048/default.nix
+++ b/pkgs/development/python-modules/base2048/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, cargo
-, fetchFromGitHub
-, frelatage
-, libiconv
-, maturin
-, pytestCheckHook
-, pythonOlder
-, rustc
-, rustPlatform
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cargo,
+  fetchFromGitHub,
+  frelatage,
+  libiconv,
+  pytestCheckHook,
+  pythonOlder,
+  rustc,
+  rustPlatform,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-OXlfycJB1IrW2Zq0xPDGjjwCdRTWtX/ixPGWcd+YjAg=";
   };
 
-  cargoDeps = rustPlatform.importCargoLock {
-    lockFile = ./Cargo.lock;
-  };
+  cargoDeps = rustPlatform.importCargoLock { lockFile = ./Cargo.lock; };
 
   postPatch = ''
     ln -s ${./Cargo.lock} Cargo.lock
@@ -41,23 +39,15 @@ buildPythonPackage rec {
     rustc
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [
-    libiconv
-  ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
   passthru.optional-dependencies = {
-    fuzz = [
-      frelatage
-    ];
+    fuzz = [ frelatage ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "base2048"
-  ];
+  pythonImportsCheck = [ "base2048" ];
 
   meta = with lib; {
     description = "Binary encoding with base-2048 in Python with Rust";
diff --git a/pkgs/development/python-modules/base36/default.nix b/pkgs/development/python-modules/base36/default.nix
index 461ecc9127913..33909a6c942ac 100644
--- a/pkgs/development/python-modules/base36/default.nix
+++ b/pkgs/development/python-modules/base36/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/base58/default.nix b/pkgs/development/python-modules/base58/default.nix
index 020f103851cb6..f3eaa3b3e8581 100644
--- a/pkgs/development/python-modules/base58/default.nix
+++ b/pkgs/development/python-modules/base58/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyhamcrest
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyhamcrest,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/base58check/default.nix b/pkgs/development/python-modules/base58check/default.nix
index 7b635abd0de18..338775bf6ceec 100644
--- a/pkgs/development/python-modules/base58check/default.nix
+++ b/pkgs/development/python-modules/base58check/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-Tig6beLRDsXC//x4+t/z2BGaJQWzcP0J+QEKx3D0rhs=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "base58check"
-  ];
+  pythonImportsCheck = [ "base58check" ];
 
   meta = with lib; {
     description = "Implementation of the Base58Check encoding scheme";
diff --git a/pkgs/development/python-modules/base64io/default.nix b/pkgs/development/python-modules/base64io/default.nix
index 0ca50fa63dc56..ab442ae90fa46 100644
--- a/pkgs/development/python-modules/base64io/default.nix
+++ b/pkgs/development/python-modules/base64io/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, unstableGitUpdater
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  unstableGitUpdater,
 }:
 
 buildPythonPackage rec {
   pname = "base64io";
-  version = "1.0.3-unstable-2023-10-30";
+  version = "1.0.3-unstable-2024-06-24";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,13 +19,11 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "aws";
     repo = "base64io-python";
-    rev = "604817576e607d1f7f8af1ffa1530522fd4e4be2";
-    hash = "sha256-RFl0iuyHdPf3VpBxH4m/N2yaKEBxkNMT1ldZP9VGGOk=";
+    rev = "f3dd88bf0db6eb412c55ff579f0aa9f39d970c41";
+    hash = "sha256-znQlPlS+jzPiHNBvnDnZ8l1pZP6iuYqExDlPii4dJwM=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     mock
diff --git a/pkgs/development/python-modules/baseline/default.nix b/pkgs/development/python-modules/baseline/default.nix
index d64fbd26f6f34..1fadfe681b885 100644
--- a/pkgs/development/python-modules/baseline/default.nix
+++ b/pkgs/development/python-modules/baseline/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy3k, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy3k,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "baseline";
diff --git a/pkgs/development/python-modules/baselines/default.nix b/pkgs/development/python-modules/baselines/default.nix
index 70be97034ce0d..fab9db7660d9d 100644
--- a/pkgs/development/python-modules/baselines/default.nix
+++ b/pkgs/development/python-modules/baselines/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest
-, gym
-, scipy
-, tqdm
-, joblib
-, dill
-, progressbar2
-, cloudpickle
-, click
-, pyzmq
-, tensorflow
-, mpi4py
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
+  gym,
+  scipy,
+  tqdm,
+  joblib,
+  dill,
+  progressbar2,
+  cloudpickle,
+  click,
+  pyzmq,
+  tensorflow,
+  mpi4py,
 }:
 
 buildPythonPackage {
@@ -52,9 +53,7 @@ buildPythonPackage {
   # fails to create a daemon, probably because of sandboxing
   doCheck = false;
 
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
   meta = with lib; {
     description = "High-quality implementations of reinforcement learning algorithms";
diff --git a/pkgs/development/python-modules/basemap-data/default.nix b/pkgs/development/python-modules/basemap-data/default.nix
index 390b4afcf7604..f50feac37d485 100644
--- a/pkgs/development/python-modules/basemap-data/default.nix
+++ b/pkgs/development/python-modules/basemap-data/default.nix
@@ -1,16 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
-, basemap
-, cython
-, geos
-, numpy
-, matplotlib
-, pyproj
-, pyshp
-, python
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  basemap,
 }:
 
 buildPythonPackage rec {
@@ -23,12 +14,15 @@ buildPythonPackage rec {
   # no tests
   doCheck = false;
 
-  pythonImportsCheck =  [ "mpl_toolkits.basemap_data" ];
+  pythonImportsCheck = [ "mpl_toolkits.basemap_data" ];
 
   meta = with lib; {
     homepage = "https://matplotlib.org/basemap/";
     description = "Data assets for matplotlib basemap";
-    license = with licenses; [ mit lgpl3Plus ];
-    maintainers = with maintainers; [ ];
+    license = with licenses; [
+      mit
+      lgpl3Plus
+    ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/basemap/default.nix b/pkgs/development/python-modules/basemap/default.nix
index 3dd2e761b0976..7e435d08fa315 100644
--- a/pkgs/development/python-modules/basemap/default.nix
+++ b/pkgs/development/python-modules/basemap/default.nix
@@ -1,18 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
-, basemap-data
-, cython
-, geos
-, numpy
-, matplotlib
-, pillow
-, pyproj
-, pyshp
-, python
-, pythonRelaxDepsHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  basemap-data,
+  cython,
+  geos,
+  numpy,
+  matplotlib,
+  pillow,
+  pyproj,
+  pyshp,
+  python,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -32,7 +31,6 @@ buildPythonPackage rec {
   nativeBuildInputs = [
     cython
     geos
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -69,7 +67,10 @@ buildPythonPackage rec {
       coastlines, lakes, rivers and political boundaries. See
       http://matplotlib.github.com/basemap/users/examples.html for examples of what it can do.
     '';
-    maintainers = with maintainers; [ ];
-    license = with licenses; [ mit lgpl21 ];
+    maintainers = [ ];
+    license = with licenses; [
+      mit
+      lgpl21
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/bases/default.nix b/pkgs/development/python-modules/bases/default.nix
index 9c25ffaa63f85..062c757f8ce51 100644
--- a/pkgs/development/python-modules/bases/default.nix
+++ b/pkgs/development/python-modules/bases/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-, pytestCheckHook
+  pytestCheckHook,
 
-, pythonOlder
+  pythonOlder,
 
-, setuptools
-, wheel
-, setuptools-scm
+  setuptools,
+  wheel,
+  setuptools-scm,
 
   # for tests
-, base58
+  base58,
 
-, typing-extensions
-, typing-validation
+  typing-extensions,
+  typing-validation,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/bash-kernel/default.nix b/pkgs/development/python-modules/bash-kernel/default.nix
index c3ab6083ba1dd..0df270f8a2b7a 100644
--- a/pkgs/development/python-modules/bash-kernel/default.nix
+++ b/pkgs/development/python-modules/bash-kernel/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, flit-core
-, ipykernel
-, python
-, pexpect
-, bash
-, substituteAll
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  ipykernel,
+  python,
+  pexpect,
+  bashInteractive,
+  substituteAll,
 }:
 
 buildPythonPackage rec {
@@ -24,13 +24,11 @@ buildPythonPackage rec {
   patches = [
     (substituteAll {
       src = ./bash-path.patch;
-      bash = lib.getExe bash;
+      bash = lib.getExe bashInteractive;
     })
   ];
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     ipykernel
@@ -45,8 +43,20 @@ buildPythonPackage rec {
     ${python.pythonOnBuildForHost.interpreter} -m bash_kernel.install --prefix $out
   '';
 
-  # no tests
-  doCheck = false;
+  checkPhase = ''
+    runHook preCheck
+
+    # Create a JUPYTER_PATH with the kernelspec
+    export JUPYTER_PATH=$(mktemp -d)
+    mkdir -p $JUPYTER_PATH/kernels/bash
+    echo '{ "language": "bash", "argv": [ "${python}/bin/python", "-m", "bash_kernel", "-f", "{connection_file}" ] }' > $JUPYTER_PATH/kernels/bash/kernel.json
+
+    # Evaluate a test notebook with papermill
+    cd $(mktemp -d)
+    ${python.withPackages (ps: [ ps.papermill ])}/bin/papermill --kernel bash ${./test.ipynb} out.ipynb
+
+    runHook postCheck
+  '';
 
   meta = with lib; {
     description = "Bash Kernel for Jupyter";
diff --git a/pkgs/development/python-modules/bash-kernel/test.ipynb b/pkgs/development/python-modules/bash-kernel/test.ipynb
new file mode 100644
index 0000000000000..4d061381b96d1
--- /dev/null
+++ b/pkgs/development/python-modules/bash-kernel/test.ipynb
@@ -0,0 +1,26 @@
+{
+  "cells": [
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {},
+      "outputs": [],
+      "source": [
+        "echo hi"
+      ]
+    }
+  ],
+  "metadata": {
+    "kernel_info": {
+      "display_name": "Unknown",
+      "name": "bash"
+    },
+    "language_info": {
+      "file_extension": ".ipynb",
+      "name": "bash",
+      "version": "5.0"
+    }
+  },
+  "nbformat": 4,
+  "nbformat_minor": 2
+}
diff --git a/pkgs/development/python-modules/bashlex/default.nix b/pkgs/development/python-modules/bashlex/default.nix
index ed5cb1a6091ab..17d2485c6def9 100644
--- a/pkgs/development/python-modules/bashlex/default.nix
+++ b/pkgs/development/python-modules/bashlex/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     ${python.pythonOnBuildForHost.interpreter} -c 'import bashlex'
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "bashlex" ];
 
diff --git a/pkgs/development/python-modules/basiciw/default.nix b/pkgs/development/python-modules/basiciw/default.nix
index 33ea28ff0fb89..45b1d5407db48 100644
--- a/pkgs/development/python-modules/basiciw/default.nix
+++ b/pkgs/development/python-modules/basiciw/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, gcc
-, wirelesstools
-, isPy27
-, isPyPy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  gcc,
+  wirelesstools,
+  isPy27,
+  isPyPy,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/batchgenerators/default.nix b/pkgs/development/python-modules/batchgenerators/default.nix
index 56476a0e7d39c..6c02b8e8cb201 100644
--- a/pkgs/development/python-modules/batchgenerators/default.nix
+++ b/pkgs/development/python-modules/batchgenerators/default.nix
@@ -1,32 +1,36 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pytestCheckHook
-, future
-, numpy
-, pillow
-, scipy
-, scikit-learn
-, scikit-image
-, threadpoolctl
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  future,
+  numpy,
+  pillow,
+  scipy,
+  scikit-learn,
+  scikit-image,
+  threadpoolctl,
 }:
 
 buildPythonPackage rec {
   pname = "batchgenerators";
   version = "0.25";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "MIC-DKFZ";
-    repo = pname;
+    repo = "batchgenerators";
     rev = "v${version}";
     hash = "sha256-L2mWH2t8PN9o1M67KDdl1Tj2ZZ02MY4icsJY2VNrj3A=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     future
     numpy
     pillow
@@ -37,14 +41,9 @@ buildPythonPackage rec {
   ];
 
   # see https://github.com/MIC-DKFZ/batchgenerators/pull/78
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace '"unittest2",' ""
-  '';
+  pythonRemoveDeps = [ "unittest2" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # see https://github.com/MIC-DKFZ/batchgenerators/pull/78
   disabledTestPaths = [ "tests/test_axis_mirroring.py" ];
diff --git a/pkgs/development/python-modules/batchspawner/default.nix b/pkgs/development/python-modules/batchspawner/default.nix
index 87c6aa2cafbf7..b3320cc775f30 100644
--- a/pkgs/development/python-modules/batchspawner/default.nix
+++ b/pkgs/development/python-modules/batchspawner/default.nix
@@ -1,13 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, jinja2
-, jupyterhub
-, pythonOlder
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  jinja2,
+  jupyterhub,
+  pythonOlder,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -34,26 +36,20 @@ buildPythonPackage rec {
     jupyterhub
   ];
 
-  preCheck = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail "--cov=batchspawner" ""
-  '';
-
   nativeCheckInputs = [
     pytest-asyncio
+    pytest-cov-stub
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "batchspawner"
-  ];
+  pythonImportsCheck = [ "batchspawner" ];
 
   meta = with lib; {
-    description = "A spawner for Jupyterhub to spawn notebooks using batch resource managers";
+    description = "Spawner for Jupyterhub to spawn notebooks using batch resource managers";
     mainProgram = "batchspawner-singleuser";
     homepage = "https://github.com/jupyterhub/batchspawner";
     changelog = "https://github.com/jupyterhub/batchspawner/blob/v${version}/CHANGELOG.md";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/baycomp/default.nix b/pkgs/development/python-modules/baycomp/default.nix
index 6ed381851535d..34a7a81333e86 100644
--- a/pkgs/development/python-modules/baycomp/default.nix
+++ b/pkgs/development/python-modules/baycomp/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, scipy
-, scikit-learn
-, matplotlib
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  scipy,
+  matplotlib,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -28,7 +28,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "baycomp" ];
 
   meta = {
-    description = "A library for Bayesian comparison of classifiers";
+    description = "Library for Bayesian comparison of classifiers";
     homepage = "https://github.com/janezd/baycomp";
     license = [ lib.licenses.mit ];
     maintainers = [ lib.maintainers.lucasew ];
diff --git a/pkgs/development/python-modules/bayesian-optimization/default.nix b/pkgs/development/python-modules/bayesian-optimization/default.nix
index dda52e8ebba81..582a6d507e6db 100644
--- a/pkgs/development/python-modules/bayesian-optimization/default.nix
+++ b/pkgs/development/python-modules/bayesian-optimization/default.nix
@@ -1,40 +1,56 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, scikit-learn
-, scipy
-, colorama
-, pytestCheckHook
-, pythonOlder
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  scikit-learn,
+  numpy,
+  scipy,
+  colorama,
+  jupyter,
+  matplotlib,
+  nbconvert,
+  nbformat,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "bayesian-optimization";
-  version = "1.4.3";
-  format = "setuptools";
+  version = "1.5.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "bayesian-optimization";
     repo = "BayesianOptimization";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Bp/ZhVSW5lTGwnsd/doOXu++Gxw/51owCfMm96Qmgd4=";
+    hash = "sha256-pDgvdQhlJ5aMRGdi2qXRXVCdJRvrOP/Nr0SSZyHH1WM=";
   };
 
+  build-system = [ poetry-core ];
+
   propagatedBuildInputs = [
     scikit-learn
+    numpy
     scipy
     colorama
   ];
 
-  nativeCheckInputs = [ pytestCheckHook ];
+  nativeCheckInputs = [
+    jupyter
+    matplotlib
+    nbconvert
+    nbformat
+    pytestCheckHook
+  ];
 
   pythonImportsCheck = [ "bayes_opt" ];
 
   meta = with lib; {
-    broken = stdenv.isLinux && stdenv.isAarch64;
+    broken = stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64;
     description = ''
       A Python implementation of global optimization with gaussian processes
     '';
diff --git a/pkgs/development/python-modules/bayespy/default.nix b/pkgs/development/python-modules/bayespy/default.nix
index ef82df7dfb950..7768dd5a8d7c5 100644
--- a/pkgs/development/python-modules/bayespy/default.nix
+++ b/pkgs/development/python-modules/bayespy/default.nix
@@ -1,30 +1,44 @@
-{ stdenv, lib, buildPythonPackage, fetchPypi, pythonOlder
-, pytestCheckHook, nose, glibcLocales, fetchpatch
-, numpy, scipy, matplotlib, h5py }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  numpy,
+  scipy,
+  h5py,
+  truncnorm,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "bayespy";
   version = "0.6.1";
-  format = "setuptools";
+  pyproject = true;
 
-  # Python 2 not supported and not some old Python 3 because MPL doesn't support
-  # them properly.
-  disabled = pythonOlder "3.4";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-3N8w/LiTLsDZbHp3z26FvDg3vStB2l3XkIWx+Mma1G0=";
+  src = fetchFromGitHub {
+    owner = "bayespy";
+    repo = "bayespy";
+    rev = "refs/tags/${version}";
+    hash = "sha256-X7CwJBrKHlU1jqMkt/7XEzaiwul1Yzkb/V64lXG4Aqo=";
   };
 
-  nativeCheckInputs = [ pytestCheckHook nose glibcLocales ];
+  postPatch = ''
+    substituteInPlace versioneer.py \
+      --replace-fail SafeConfigParser ConfigParser \
+      --replace-fail readfp read_file
+  '';
 
-  propagatedBuildInputs = [ numpy scipy matplotlib h5py ];
+  build-system = [ setuptools ];
 
-  disabledTests = [
-    # Assertion error
-    "test_message_to_parents"
+  dependencies = [
+    numpy
+    scipy
+    h5py
+    truncnorm
   ];
 
+  nativeCheckInputs = [ pytestCheckHook ];
+
   pythonImportsCheck = [ "bayespy" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/bbox/default.nix b/pkgs/development/python-modules/bbox/default.nix
index 5e601e43b564c..0a41bccf7111c 100644
--- a/pkgs/development/python-modules/bbox/default.nix
+++ b/pkgs/development/python-modules/bbox/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, matplotlib
-, numpy
-, pendulum
-, pillow
-, poetry-core
-, pyquaternion
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  matplotlib,
+  numpy,
+  pendulum,
+  pillow,
+  poetry-core,
+  pyquaternion,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-FrJ8FhlqwmnEB/QvPlkDfqZncNGPhwY9aagM9yv1LGs=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     pyquaternion
@@ -47,9 +46,7 @@ buildPythonPackage rec {
     "test_multi_jaccard_index_2d_performance"
   ];
 
-  pythonImportsCheck = [
-    "bbox"
-  ];
+  pythonImportsCheck = [ "bbox" ];
 
   meta = with lib; {
     description = "Python library for 2D/3D bounding boxes";
diff --git a/pkgs/development/python-modules/bc-detect-secrets/default.nix b/pkgs/development/python-modules/bc-detect-secrets/default.nix
index df19afca09d5a..f392cdfbbc7af 100644
--- a/pkgs/development/python-modules/bc-detect-secrets/default.nix
+++ b/pkgs/development/python-modules/bc-detect-secrets/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, gibberish-detector
-, mock
-, pkgs
-, pyahocorasick
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, requests
-, responses
-, setuptools
-, unidiff
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gibberish-detector,
+  mock,
+  pkgs,
+  pyahocorasick,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  requests,
+  responses,
+  setuptools,
+  unidiff,
 }:
 
 buildPythonPackage rec {
   pname = "bc-detect-secrets";
-  version = "1.5.5";
+  version = "1.5.16";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,12 +26,10 @@ buildPythonPackage rec {
     owner = "bridgecrewio";
     repo = "detect-secrets";
     rev = "refs/tags/${version}";
-    hash = "sha256-05hxc34ecSoAp0GBVf9yq2BC928wxZOLZJHAbJ7cdtk=";
+    hash = "sha256-SXwaZv7aki+lQvRe6S5SLF7UFvf3n9MaUFqw2Um8ENg=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     pyyaml
@@ -39,12 +38,8 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    word_list = [
-      pyahocorasick
-    ];
-    gibberish = [
-      gibberish-detector
-    ];
+    word_list = [ pyahocorasick ];
+    gibberish = [ gibberish-detector ];
   };
 
   nativeCheckInputs = [
@@ -71,9 +66,7 @@ buildPythonPackage rec {
     "TestModifiesBaselineFromVersionChange"
   ];
 
-  pythonImportsCheck = [
-    "detect_secrets"
-  ];
+  pythonImportsCheck = [ "detect_secrets" ];
 
   meta = with lib; {
     description = "Tool to detect secrets in the code";
@@ -82,4 +75,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ fab ];
   };
 }
-
diff --git a/pkgs/development/python-modules/bc-jsonpath-ng/default.nix b/pkgs/development/python-modules/bc-jsonpath-ng/default.nix
index 2322f0407f9f8..2fd65621f1302 100644
--- a/pkgs/development/python-modules/bc-jsonpath-ng/default.nix
+++ b/pkgs/development/python-modules/bc-jsonpath-ng/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, decorator
-, fetchFromGitHub
-, ply
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  decorator,
+  fetchFromGitHub,
+  ply,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,18 +27,14 @@ buildPythonPackage rec {
     ply
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # Exclude tests that require oslotest
     "tests/test_jsonpath_rw_ext.py"
   ];
 
-  pythonImportsCheck = [
-    "bc_jsonpath_ng"
-  ];
+  pythonImportsCheck = [ "bc_jsonpath_ng" ];
 
   meta = with lib; {
     description = "JSONPath implementation for Python";
diff --git a/pkgs/development/python-modules/bc-python-hcl2/default.nix b/pkgs/development/python-modules/bc-python-hcl2/default.nix
index dc74d16127609..506352b25d322 100644
--- a/pkgs/development/python-modules/bc-python-hcl2/default.nix
+++ b/pkgs/development/python-modules/bc-python-hcl2/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, lark
-, pynose
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  lark,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -19,22 +19,14 @@ buildPythonPackage rec {
     hash = "sha256-rI/1n7m9Q36im4mn18UH/QoelXhFuumurGnyiSuNaB4=";
   };
 
-  # Nose is required during build process, so can not use `nativeCheckInputs`.
-  buildInputs = [
-    pynose
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    lark
-  ];
+  dependencies = [ lark ];
 
   # This fork of python-hcl2 doesn't ship tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "hcl2"
-  ];
+  pythonImportsCheck = [ "hcl2" ];
 
   meta = with lib; {
     description = "Parser for HCL2 written in Python using Lark";
diff --git a/pkgs/development/python-modules/bcdoc/default.nix b/pkgs/development/python-modules/bcdoc/default.nix
index b9af315895396..5d1c96392d0be 100644
--- a/pkgs/development/python-modules/bcdoc/default.nix
+++ b/pkgs/development/python-modules/bcdoc/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, docutils, six }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  docutils,
+  six,
+}:
 
 buildPythonPackage rec {
   pname = "bcdoc";
@@ -10,7 +16,10 @@ buildPythonPackage rec {
     sha256 = "f568c182e06883becf7196f227052435cffd45604700c82362ca77d3427b6202";
   };
 
-  buildInputs = [ docutils six ];
+  buildInputs = [
+    docutils
+    six
+  ];
 
   # Tests fail due to nix file timestamp normalization.
   doCheck = false;
diff --git a/pkgs/development/python-modules/bcf/default.nix b/pkgs/development/python-modules/bcf/default.nix
index 08fb7d4249bd0..f8a1f6825d8eb 100644
--- a/pkgs/development/python-modules/bcf/default.nix
+++ b/pkgs/development/python-modules/bcf/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, appdirs
-, click
-, colorama
-, intelhex
-, packaging
-, pyaml
-, pyftdi
-, pyserial
-, requests
-, schema
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  appdirs,
+  click,
+  colorama,
+  intelhex,
+  packaging,
+  pyaml,
+  pyftdi,
+  pyserial,
+  requests,
+  schema,
 }:
 buildPythonPackage rec {
   pname = "bcf";
diff --git a/pkgs/development/python-modules/bcg/default.nix b/pkgs/development/python-modules/bcg/default.nix
index c039a1e30072e..f0bf00086818d 100644
--- a/pkgs/development/python-modules/bcg/default.nix
+++ b/pkgs/development/python-modules/bcg/default.nix
@@ -1,14 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, appdirs
-, click
-, click-log
-, paho-mqtt
-, pyaml
-, pyserial
-, schema
-, simplejson
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  appdirs,
+  click,
+  click-log,
+  looseversion,
+  paho-mqtt,
+  pyaml,
+  pyserial,
+  schema,
+  simplejson,
 }:
 buildPythonPackage rec {
   pname = "bcg";
@@ -22,6 +25,13 @@ buildPythonPackage rec {
     sha256 = "2Yh5MeIv+BIxjoO9GOPqq7xTAFhyBvnxPy7DeO2FrkI=";
   };
 
+  patches = [
+    (fetchpatch { # https://github.com/hardwario/bch-gateway/pull/19
+      name = "bcg-fix-import-with-Python-3.12.patch";
+      url = "https://github.com/hardwario/bch-gateway/pull/19/commits/1314c892992d8914802b6c42602c39f6a1418fca.patch";
+      hash = "sha256-dNiBppXjPSMUe2yiiSc9gGbAc8l4mI41wWq+g7PkD/Y=";
+    })
+  ];
   postPatch = ''
     sed -ri 's/@@VERSION@@/${version}/g' \
       bcg/__init__.py setup.py
@@ -31,6 +41,7 @@ buildPythonPackage rec {
     appdirs
     click
     click-log
+    looseversion
     paho-mqtt
     pyaml
     pyserial
diff --git a/pkgs/development/python-modules/bch/default.nix b/pkgs/development/python-modules/bch/default.nix
index 2885cc47bfe10..b29e2f0dfe94d 100644
--- a/pkgs/development/python-modules/bch/default.nix
+++ b/pkgs/development/python-modules/bch/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, click
-, click-log
-, paho-mqtt
-, pyaml
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  click,
+  click-log,
+  paho-mqtt,
+  pyaml,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/bcrypt/3.nix b/pkgs/development/python-modules/bcrypt/3.nix
index fec467f983cc5..7d0f4235277c2 100644
--- a/pkgs/development/python-modules/bcrypt/3.nix
+++ b/pkgs/development/python-modules/bcrypt/3.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, setuptools
-, isPyPy
-, fetchPypi
-, pythonOlder
-, cffi
-, pytestCheckHook
-, six
+{
+  lib,
+  buildPythonPackage,
+  setuptools,
+  fetchPypi,
+  pythonOlder,
+  cffi,
+  pytestCheckHook,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -21,26 +21,18 @@ buildPythonPackage rec {
     hash = "sha256-QzxBDCF3BXcF2iqfLNAd0VdJOyp6wUyFk6FrPatra/s=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     six
     cffi
   ];
 
-  propagatedNativeBuildInputs = [
-    cffi
-  ];
+  propagatedNativeBuildInputs = [ cffi ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "bcrypt"
-  ];
+  pythonImportsCheck = [ "bcrypt" ];
 
   meta = with lib; {
     description = "Modern password hashing for your software and your servers";
diff --git a/pkgs/development/python-modules/bcrypt/default.nix b/pkgs/development/python-modules/bcrypt/default.nix
index a8f751056d906..ee51533e6e3aa 100644
--- a/pkgs/development/python-modules/bcrypt/default.nix
+++ b/pkgs/development/python-modules/bcrypt/default.nix
@@ -1,33 +1,34 @@
-{ lib
-, buildPythonPackage
-, cargo
-, rustPlatform
-, rustc
-, setuptools
-, setuptools-rust
-, fetchPypi
-, pythonOlder
-, pytestCheckHook
-, libiconv
-, stdenv
+{
+  lib,
+  buildPythonPackage,
+  cargo,
+  rustPlatform,
+  rustc,
+  setuptools,
+  setuptools-rust,
+  fetchPypi,
+  pythonOlder,
+  pytestCheckHook,
+  libiconv,
+  stdenv,
   # for passthru.tests
-, asyncssh
-, django_4
-, fastapi
-, paramiko
-, twisted
+  asyncssh,
+  django_4,
+  fastapi,
+  paramiko,
+  twisted,
 }:
 
 buildPythonPackage rec {
   pname = "bcrypt";
-  version = "4.1.2";
+  version = "4.1.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-MzE6EgCjrpC3VYfOrFArBIuED8aef3oJBbX4f6x6Elg=";
+    hash = "sha256-LuFd10n1lS/j8EMND/a3QILhWcUDMqFBPVG1aJzwZiM=";
   };
 
   cargoRoot = "src/_bcrypt";
@@ -35,7 +36,7 @@ buildPythonPackage rec {
     inherit src;
     sourceRoot = "${pname}-${version}/${cargoRoot}";
     name = "${pname}-${version}";
-    hash = "sha256-fTD1AKvyeni5ukYjK53gueKLey+rcIUjW/0R289xeb0=";
+    hash = "sha256-Uag1pUuis5lpnus2p5UrMLa4HP7VQLhKxR5TEMfpK0s=";
   };
 
   nativeBuildInputs = [
@@ -47,18 +48,20 @@ buildPythonPackage rec {
   ];
 
   # Remove when https://github.com/NixOS/nixpkgs/pull/190093 lands.
-  buildInputs = lib.optional stdenv.isDarwin libiconv;
+  buildInputs = lib.optional stdenv.hostPlatform.isDarwin libiconv;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "bcrypt"
-  ];
+  pythonImportsCheck = [ "bcrypt" ];
 
   passthru.tests = {
-    inherit asyncssh django_4 fastapi paramiko twisted;
+    inherit
+      asyncssh
+      django_4
+      fastapi
+      paramiko
+      twisted
+      ;
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/bdffont/default.nix b/pkgs/development/python-modules/bdffont/default.nix
index baa20facc81fb..c4ac42a60452f 100644
--- a/pkgs/development/python-modules/bdffont/default.nix
+++ b/pkgs/development/python-modules/bdffont/default.nix
@@ -1,42 +1,42 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, nix-update-script
-, hatch-vcs
-, hatchling
-, brotli
-, fonttools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytestCheckHook,
+  nix-update-script,
+  hatchling,
 }:
 
 buildPythonPackage rec {
   pname = "bdffont";
-  version = "0.0.17";
+  version = "0.0.26";
+  pyproject = true;
 
-  disabled = pythonOlder "3.11";
+  disabled = pythonOlder "3.10";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-JBPo5tmwnXRzPpZbBrcW2wEC/XNd8M+mi58CRIpOVL0=";
+    pname = "bdffont";
+    inherit version;
+    hash = "sha256-Q8IqwJmAYFicTX7RrVU9UvGZX+oaPb0RKlIFwArktXk=";
   };
 
-  format = "pyproject";
-
-  nativeBuildInputs = [
-    hatch-vcs
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
+  pythonImportsCheck = [ "bdffont" ];
+
   passthru.updateScript = nix-update-script { };
 
   meta = {
     homepage = "https://github.com/TakWolf/bdffont";
-    description = "A library for manipulating .bdf format fonts";
+    description = "A library for manipulating Glyph Bitmap Distribution Format (BDF) Fonts";
     platforms = lib.platforms.all;
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ h7x4 ];
+    maintainers = with lib.maintainers; [
+      TakWolf
+      h7x4
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/beaker/default.nix b/pkgs/development/python-modules/beaker/default.nix
index b55b8ce93c69f..dedbba874d1f9 100644
--- a/pkgs/development/python-modules/beaker/default.nix
+++ b/pkgs/development/python-modules/beaker/default.nix
@@ -1,80 +1,73 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, glibcLocales
-, nose
-, pylibmc
-, python-memcached
-, redis
-, pymongo
-, mock
-, webtest
-, sqlalchemy
-, pycrypto
-, cryptography
-, isPy27
-, isPy3k
-, funcsigs ? null
-, pycryptopp ? null
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  glibcLocales,
+  pylibmc,
+  python-memcached,
+  redis,
+  pymongo,
+  mock,
+  webtest,
+  sqlalchemy,
+  pycrypto,
+  cryptography,
+  isPy27,
+  pytestCheckHook,
+  setuptools,
+  funcsigs ? null,
+  pycryptopp ? null,
 }:
 
 buildPythonPackage rec {
   pname = "beaker";
-  version = "1.11.0";
+  version = "1.13.0";
+  pyproject = true;
 
   # The pypy release do not contains the tests
   src = fetchFromGitHub {
     owner = "bbangert";
     repo = "beaker";
-    rev = version;
-    sha256 = "059sc7iar90lc2y9mppdis5ddfcxyirz03gmsfb0307f5dsa1dhj";
+    rev = "refs/tags/${version}";
+    hash = "sha256-HzjhOPXElwKoJLrhGIbVn798tbX/kaS1EpQIX+vXCtE=";
   };
 
-  propagatedBuildInputs = [
-    sqlalchemy
-    pycrypto
-    cryptography
-  ] ++ lib.optionals (isPy27) [
-    funcsigs
-    pycryptopp
-  ];
+  build-system = [ setuptools ];
+
+  dependencies =
+    [
+      sqlalchemy
+      pycrypto
+      cryptography
+    ]
+    ++ lib.optionals (isPy27) [
+      funcsigs
+      pycryptopp
+    ];
 
   nativeCheckInputs = [
     glibcLocales
     python-memcached
     mock
-    nose
     pylibmc
     pymongo
     redis
     webtest
+    pytestCheckHook
   ];
 
-  # Can not run memcached tests because it immediately tries to connect
-  postPatch = ''
-    rm tests/test_memcached.py
-  '';
-
+  # Can not run memcached tests because it immediately tries to connect.
   # Disable external tests because they need to connect to a live database.
-  # Also disable a test in test_cache.py called "test_upgrade" because
-  # it currently fails on darwin.
-  # Please see issue https://github.com/bbangert/beaker/issues/166
-  checkPhase = ''
-    nosetests \
-      -e ".*test_ext_.*" \
-      -e "test_upgrade" \
-      ${lib.optionalString (!stdenv.isLinux) ''-e "test_cookie_expires_different_locale"''} \
-      -vv tests
-  '';
+  pytestFlagsArray = [
+    "--ignore=tests/test_memcached.py"
+    "--ignore-glob='tests/test_managers/test_ext_*'"
+  ];
 
   meta = {
-    description = "A Session and Caching library with WSGI Middleware";
+    description = "Session and Caching library with WSGI Middleware";
     homepage = "https://github.com/bbangert/beaker";
     license = lib.licenses.bsd3;
     maintainers = with lib.maintainers; [ domenkozar ];
-    knownVulnerabilities = [
-      "CVE-2013-7489"
-    ];
+    knownVulnerabilities = [ "CVE-2013-7489" ];
   };
 }
diff --git a/pkgs/development/python-modules/beancount-black/default.nix b/pkgs/development/python-modules/beancount-black/default.nix
index f1e1ee3a4b02b..c229ec89cea26 100644
--- a/pkgs/development/python-modules/beancount-black/default.nix
+++ b/pkgs/development/python-modules/beancount-black/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
-, beancount-parser
-, click
-, poetry-core
-, pytestCheckHook
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  beancount-parser,
+  click,
+  poetry-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "beancount-black";
-  version = "0.2.1";
+  version = "1.0.4";
 
   disabled = pythonOlder "3.9";
   format = "pyproject";
@@ -18,26 +19,20 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "LaunchPlatform";
     repo = "beancount-black";
-    rev = version;
-    hash = "sha256-wvAQnwnyHn5Koc/UN4zpJ3JDmFbDoUrpCTmJCpSP7Mg=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-GrdQCxVsAzCusxxfQHF48doWG8OVrqBayCFof9RHTkE=";
   };
 
-  buildInputs = [
-    poetry-core
-  ];
+  buildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     beancount-parser
     click
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "beancount_black"
-  ];
+  pythonImportsCheck = [ "beancount_black" ];
 
   meta = with lib; {
     description = "Opinioned code formatter for Beancount";
diff --git a/pkgs/development/python-modules/beancount-docverif/default.nix b/pkgs/development/python-modules/beancount-docverif/default.nix
index d614b2f12d4f0..b53fab7c060a5 100644
--- a/pkgs/development/python-modules/beancount-docverif/default.nix
+++ b/pkgs/development/python-modules/beancount-docverif/default.nix
@@ -1,44 +1,50 @@
-{ lib, buildPythonPackage, fetchPypi
-, setuptools-scm
-, beancount
-, pytestCheckHook
+{
+  lib,
+  beancount,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  regex,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
-  version = "1.0.1";
   pname = "beancount-docverif";
+  version = "1.0.1";
   pyproject = true;
 
+  disabled = pythonOlder "3.7";
+
   src = fetchPypi {
     pname = "beancount_docverif";
     inherit version;
     hash = "sha256-CFBv1FZP5JO+1MPnD86ttrO42zZlvE157zqig7s4HOg=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    beancount
-  ];
+  dependencies = [ beancount ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    regex
   ];
 
+  pythonImportsCheck = [ "beancount_docverif" ];
+
   meta = with lib; {
-    homepage = "https://github.com/siriobalmelli/beancount_docverif";
     description = "Document verification plugin for Beancount";
+    homepage = "https://github.com/siriobalmelli/beancount_docverif";
     longDescription = ''
-        Docverif is the "Document Verification" plugin for beancount, fulfilling the following functions:
-
-        - Require that every transaction touching an account have an accompanying document on disk.
-        - Explicitly declare the name of a document accompanying a transaction.
-        - Explicitly declare that a transaction is expected not to have an accompanying document.
-        - Look for an "implicit" PDF document matching transaction data.
-        - Associate (and require) a document with any type of entry, including open entries themselves.
-        - Guarantee integrity: verify that every document declared does in fact exist on disk.
+      Docverif is the "Document Verification" plugin for beancount, fulfilling the following functions:
+
+      - Require that every transaction touching an account have an accompanying document on disk.
+      - Explicitly declare the name of a document accompanying a transaction.
+      - Explicitly declare that a transaction is expected not to have an accompanying document.
+      - Look for an "implicit" PDF document matching transaction data.
+      - Associate (and require) a document with any type of entry, including open entries themselves.
+      - Guarantee integrity: verify that every document declared does in fact exist on disk.
     '';
     license = licenses.mit;
     maintainers = with maintainers; [ siriobalmelli ];
diff --git a/pkgs/development/python-modules/beancount-parser/default.nix b/pkgs/development/python-modules/beancount-parser/default.nix
index b7fe986209fba..3493a7f61143b 100644
--- a/pkgs/development/python-modules/beancount-parser/default.nix
+++ b/pkgs/development/python-modules/beancount-parser/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
-, lark
-, poetry-core
-, pytestCheckHook
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  lark,
+  poetry-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "beancount-parser";
-  version = "0.2.0";
+  version = "1.2.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.9";
@@ -18,24 +19,16 @@ buildPythonPackage rec {
     owner = "LaunchPlatform";
     repo = "beancount-parser";
     rev = "refs/tags/${version}";
-    hash = "sha256-VSl+Jde/mDSUpICXjmPKID6qZiKUUaK8ixztP1qaoDM=";
+    hash = "sha256-8YcrsLdSRTixKXU/IM821kNcBo0jB/8DXA1/KiedsBY=";
   };
 
-  buildInputs = [
-    poetry-core
-  ];
+  buildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    lark
-  ];
+  propagatedBuildInputs = [ lark ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "beancount_parser"
-  ];
+  pythonImportsCheck = [ "beancount_parser" ];
 
   meta = with lib; {
     description = "Standalone Lark based Beancount syntax parser";
diff --git a/pkgs/development/python-modules/beancount/default.nix b/pkgs/development/python-modules/beancount/default.nix
index ef415aa83d7af..81cf300fe559f 100644
--- a/pkgs/development/python-modules/beancount/default.nix
+++ b/pkgs/development/python-modules/beancount/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, beautifulsoup4
-, bottle
-, chardet
-, python-dateutil
-, google-api-python-client
-, google-auth-oauthlib
-, lxml
-, oauth2client
-, ply
-, pytest
-, python-magic
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  beautifulsoup4,
+  bottle,
+  chardet,
+  python-dateutil,
+  google-api-python-client,
+  google-auth-oauthlib,
+  lxml,
+  oauth2client,
+  ply,
+  pytest,
+  python-magic,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -52,11 +53,11 @@ buildPythonPackage rec {
     homepage = "https://github.com/beancount/beancount";
     description = "Double-entry bookkeeping computer language";
     longDescription = ''
-        A double-entry bookkeeping computer language that lets you define
-        financial transaction records in a text file, read them in memory,
-        generate a variety of reports from them, and provides a web interface.
+      A double-entry bookkeeping computer language that lets you define
+      financial transaction records in a text file, read them in memory,
+      generate a variety of reports from them, and provides a web interface.
     '';
     license = licenses.gpl2Only;
-    maintainers = with maintainers; [ bhipple ];
+    maintainers = with maintainers; [ sharzy polarmutex ];
   };
 }
diff --git a/pkgs/development/python-modules/beanhub-cli/default.nix b/pkgs/development/python-modules/beanhub-cli/default.nix
new file mode 100644
index 0000000000000..c798ada3ff0b1
--- /dev/null
+++ b/pkgs/development/python-modules/beanhub-cli/default.nix
@@ -0,0 +1,75 @@
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  pytestCheckHook,
+  beancount-black,
+  beancount-parser,
+  beanhub-forms,
+  beanhub-import,
+  click,
+  fastapi,
+  httpx,
+  jinja2,
+  poetry-core,
+  pydantic,
+  pydantic-core,
+  pydantic-settings,
+  pytz,
+  pyyaml,
+  rich,
+  starlette-wtf,
+  uvicorn,
+}:
+
+buildPythonPackage rec {
+  pname = "beanhub-cli";
+  version = "1.4.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "LaunchPlatform";
+    repo = "beanhub-cli";
+    rev = "refs/tags/${version}";
+    hash = "sha256-P6XypAiMHaxOzGn+R7G6o/1c+lIOV/LqUmeRaMOVLNg=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    beancount-black
+    beancount-parser
+    beanhub-forms
+    beanhub-import
+    click
+    fastapi
+    jinja2
+    pydantic
+    pydantic-core
+    pydantic-settings
+    pytz
+    pyyaml
+    rich
+    starlette-wtf
+    uvicorn
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    httpx
+  ];
+
+  pythonImportsCheck = [ "beanhub_cli" ];
+
+  meta = {
+    description = "Command line tools for BeanHub or Beancount users";
+    mainProgram = "bh";
+    homepage = "https://github.com/LaunchPlatform/beanhub-cli/";
+    changelog = "https://github.com/LaunchPlatform/beanhub-cli/releases/tag/${version}";
+    license = with lib.licenses; [ mit ];
+    maintainers = with lib.maintainers; [ fangpen ];
+  };
+}
diff --git a/pkgs/development/python-modules/beanhub-extract/default.nix b/pkgs/development/python-modules/beanhub-extract/default.nix
new file mode 100644
index 0000000000000..b44a2e631c948
--- /dev/null
+++ b/pkgs/development/python-modules/beanhub-extract/default.nix
@@ -0,0 +1,48 @@
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  pytestCheckHook,
+  iso8601,
+  poetry-core,
+  pytest-lazy-fixture,
+  pytz,
+}:
+
+buildPythonPackage rec {
+  pname = "beanhub-extract";
+  version = "0.1.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "LaunchPlatform";
+    repo = "beanhub-extract";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Uw9bSVOpiIALkgA77OrqAcDWcEafVSnp4iILa4Jkykc=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    iso8601
+    pytz
+  ];
+
+  nativeCheckInputs = [
+    pytest-lazy-fixture
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "beanhub_extract" ];
+
+  meta = {
+    description = "Simple library for extracting all kind of bank account transaction export files, mostly for beanhub-import to ingest and generate transactions";
+    homepage = "https://github.com/LaunchPlatform/beanhub-extract/";
+    changelog = "https://github.com/LaunchPlatform/beanhub-extract/releases/tag/${version}";
+    license = with lib.licenses; [ mit ];
+    maintainers = with lib.maintainers; [ fangpen ];
+  };
+}
diff --git a/pkgs/development/python-modules/beanhub-forms/default.nix b/pkgs/development/python-modules/beanhub-forms/default.nix
new file mode 100644
index 0000000000000..2482d0306e7cf
--- /dev/null
+++ b/pkgs/development/python-modules/beanhub-forms/default.nix
@@ -0,0 +1,52 @@
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  pytestCheckHook,
+  jinja2,
+  multidict,
+  poetry-core,
+  pydantic,
+  pyyaml,
+  wtforms,
+}:
+
+buildPythonPackage rec {
+  pname = "beanhub-forms";
+  version = "0.1.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "LaunchPlatform";
+    repo = "beanhub-forms";
+    rev = "refs/tags/${version}";
+    hash = "sha256-313c+ENmTe1LyfEiMXNB9AUoGx3Yv/1D0T3HnAbd+Zw=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    jinja2
+    pydantic
+    pyyaml
+    wtforms
+  ];
+
+  nativeCheckInputs = [
+    multidict
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "beanhub_forms" ];
+
+  meta = {
+    description = "Library for generating and processing BeanHub's custom forms";
+    homepage = "https://github.com/LaunchPlatform/beanhub-forms/";
+    changelog = "https://github.com/LaunchPlatform/beanhub-forms/releases/tag/${version}";
+    license = with lib.licenses; [ mit ];
+    maintainers = with lib.maintainers; [ fangpen ];
+  };
+}
diff --git a/pkgs/development/python-modules/beanhub-import/default.nix b/pkgs/development/python-modules/beanhub-import/default.nix
new file mode 100644
index 0000000000000..9a844507f2ad1
--- /dev/null
+++ b/pkgs/development/python-modules/beanhub-import/default.nix
@@ -0,0 +1,54 @@
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  pytestCheckHook,
+  beancount-black,
+  beancount-parser,
+  beanhub-extract,
+  jinja2,
+  poetry-core,
+  pydantic,
+  pytz,
+  pyyaml,
+}:
+
+buildPythonPackage rec {
+  pname = "beanhub-import";
+  version = "1.0.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "LaunchPlatform";
+    repo = "beanhub-import";
+    rev = "refs/tags/${version}";
+    hash = "sha256-6Y1gYAi8A6H0a0vj2avWxGS7hvjrvLBUS+LsgvY4sZo=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    beancount-black
+    beancount-parser
+    beanhub-extract
+    jinja2
+    pydantic
+    pytz
+    pyyaml
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "beanhub_import" ];
+
+  meta = {
+    description = "Declarative idempotent rule-based Beancount transaction import engine in Python";
+    homepage = "https://github.com/LaunchPlatform/beanhub-import/";
+    changelog = "https://github.com/LaunchPlatform/beanhub-import/releases/tag/${version}";
+    license = with lib.licenses; [ mit ];
+    maintainers = with lib.maintainers; [ fangpen ];
+  };
+}
diff --git a/pkgs/development/python-modules/beanstalkc/default.nix b/pkgs/development/python-modules/beanstalkc/default.nix
index c0590651ded83..ce9d606553ef8 100644
--- a/pkgs/development/python-modules/beanstalkc/default.nix
+++ b/pkgs/development/python-modules/beanstalkc/default.nix
@@ -1,4 +1,8 @@
-{ lib, fetchFromGitHub, buildPythonPackage }:
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+}:
 
 buildPythonPackage rec {
   pname = "beanstalkc";
@@ -15,7 +19,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A simple beanstalkd client library for Python";
+    description = "Simple beanstalkd client library for Python";
     maintainers = with maintainers; [ aanderse ];
     license = licenses.asl20;
     homepage = "https://github.com/earl/beanstalkc";
diff --git a/pkgs/development/python-modules/beartype/default.nix b/pkgs/development/python-modules/beartype/default.nix
index ac4a0947e28b5..f9382892a51d9 100644
--- a/pkgs/development/python-modules/beartype/default.nix
+++ b/pkgs/development/python-modules/beartype/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pytestCheckHook
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -19,18 +20,14 @@ buildPythonPackage rec {
     hash = "sha256-Jk3cLx2p7JT/Y5FB++M9IuEqn3WqhjuDtwRv//E4GSc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pytestCheckHook
     typing-extensions
   ];
 
-  pythonImportsCheck = [
-    "beartype"
-  ];
+  pythonImportsCheck = [ "beartype" ];
 
   meta = with lib; {
     description = "Fast runtime type checking for Python";
diff --git a/pkgs/development/python-modules/beautiful-date/default.nix b/pkgs/development/python-modules/beautiful-date/default.nix
index 05ebf87f2a05c..ed34ae4688261 100644
--- a/pkgs/development/python-modules/beautiful-date/default.nix
+++ b/pkgs/development/python-modules/beautiful-date/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, freezegun
-, python-dateutil
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  python-dateutil,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,18 +22,14 @@ buildPythonPackage rec {
     hash = "sha256-e6YJBaDwWqVehxBPOvsIdV4FIXlIwj29H5untXGJvT0=";
   };
 
-  propagatedBuildInputs = [
-    python-dateutil
-  ];
+  propagatedBuildInputs = [ python-dateutil ];
 
   nativeCheckInputs = [
     freezegun
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "beautiful_date"
-  ];
+  pythonImportsCheck = [ "beautiful_date" ];
 
   meta = with lib; {
     description = "Simple and beautiful way to create date and datetime objects";
diff --git a/pkgs/development/python-modules/beautifulsoup4/default.nix b/pkgs/development/python-modules/beautifulsoup4/default.nix
index 75ae136d2887b..4ebcfd4128df6 100644
--- a/pkgs/development/python-modules/beautifulsoup4/default.nix
+++ b/pkgs/development/python-modules/beautifulsoup4/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, chardet
-, hatchling
-, html5lib
-, lxml
-, pytestCheckHook
-, pythonOlder
-, soupsieve
-, sphinxHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  chardet,
+  hatchling,
+  html5lib,
+  lxml,
+  pytestCheckHook,
+  pythonOlder,
+  soupsieve,
+  sphinxHook,
 
-# for passthru.tests
-, html-sanitizer
-, markdownify
-, mechanicalsoup
-, nbconvert
-, subliminal
-, wagtail
+  # for passthru.tests
+  html-sanitizer,
+  markdownify,
+  mechanicalsoup,
+  nbconvert,
+  subliminal,
+  wagtail,
 }:
 
 buildPythonPackage rec {
@@ -24,7 +25,10 @@ buildPythonPackage rec {
   version = "4.12.3";
   pyproject = true;
 
-  outputs = ["out" "doc"];
+  outputs = [
+    "out"
+    "doc"
+  ];
 
   disabled = pythonOlder "3.6";
 
@@ -44,29 +48,25 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    html5lib = [
-      html5lib
-    ];
-    lxml = [
-      lxml
-    ];
+    html5lib = [ html5lib ];
+    lxml = [ lxml ];
   };
 
   nativeCheckInputs = [
     pytestCheckHook
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "bs4"
-  ];
+  pythonImportsCheck = [ "bs4" ];
 
   passthru.tests = {
-    inherit html-sanitizer
+    inherit
+      html-sanitizer
       markdownify
       mechanicalsoup
       nbconvert
       subliminal
-      wagtail;
+      wagtail
+      ;
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/beautifultable/default.nix b/pkgs/development/python-modules/beautifultable/default.nix
index 97b13414f36b6..9b1544ae2bd05 100644
--- a/pkgs/development/python-modules/beautifultable/default.nix
+++ b/pkgs/development/python-modules/beautifultable/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, wcwidth
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  wcwidth,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,21 +21,13 @@ buildPythonPackage rec {
     hash = "sha256-/SReCEvSwiNjBoz/3tGJ9zUNBAag4mLsHlUXwm47zCw=";
   };
 
-  propagatedBuildInputs = [
-    wcwidth
-  ];
+  propagatedBuildInputs = [ wcwidth ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "test.py"
-  ];
+  pytestFlagsArray = [ "test.py" ];
 
-  pythonImportsCheck = [
-    "beautifultable"
-  ];
+  pythonImportsCheck = [ "beautifultable" ];
 
   meta = with lib; {
     description = "Python package for printing visually appealing tables";
diff --git a/pkgs/development/python-modules/beautysh/default.nix b/pkgs/development/python-modules/beautysh/default.nix
index c41414075f381..8c8af617f833b 100644
--- a/pkgs/development/python-modules/beautysh/default.nix
+++ b/pkgs/development/python-modules/beautysh/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, colorama
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, pytestCheckHook
-, setuptools
-, types-colorama
-, types-setuptools
+{
+  lib,
+  buildPythonPackage,
+  colorama,
+  fetchFromGitHub,
+  fetchpatch,
+  poetry-core,
+  pytest7CheckHook,
+  setuptools,
+  types-colorama,
+  types-setuptools,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
       --replace 'types-setuptools = "^57.4.0"' 'types-setuptools = "*"'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     colorama
@@ -47,13 +46,9 @@ buildPythonPackage rec {
     types-setuptools
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytest7CheckHook ];
 
-  pythonImportsCheck = [
-    "beautysh"
-  ];
+  pythonImportsCheck = [ "beautysh" ];
 
   meta = with lib; {
     description = "Tool for beautifying Bash scripts";
diff --git a/pkgs/development/python-modules/bech32/default.nix b/pkgs/development/python-modules/bech32/default.nix
index 37a120a042c3a..faed8e5615ff4 100644
--- a/pkgs/development/python-modules/bech32/default.nix
+++ b/pkgs/development/python-modules/bech32/default.nix
@@ -1,8 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 buildPythonPackage rec {
   pname = "bech32";
diff --git a/pkgs/development/python-modules/before-after/default.nix b/pkgs/development/python-modules/before-after/default.nix
index 3dc6c400693d6..c1dce2b1a4ed0 100644
--- a/pkgs/development/python-modules/before-after/default.nix
+++ b/pkgs/development/python-modules/before-after/default.nix
@@ -1,4 +1,10 @@
-{ buildPythonPackage, fetchPypi, fetchpatch, pytestCheckHook, lib }:
+{
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  pytestCheckHook,
+  lib,
+}:
 
 buildPythonPackage rec {
   pname = "before-after";
@@ -30,7 +36,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "sugar over the Mock library to help test race conditions";
     homepage = "https://github.com/c-oreills/before_after";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     license = licenses.gpl2Only;
   };
 }
diff --git a/pkgs/development/python-modules/behave/default.nix b/pkgs/development/python-modules/behave/default.nix
index 942981d004c91..30f6c81c851d4 100644
--- a/pkgs/development/python-modules/behave/default.nix
+++ b/pkgs/development/python-modules/behave/default.nix
@@ -1,31 +1,58 @@
-{ lib, stdenv, fetchFromGitHub
-, buildPythonPackage, python
-, pytestCheckHook, mock, path, pyhamcrest, pytest-html
-, glibcLocales
-, colorama, cucumber-tag-expressions, parse, parse-type, six
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  buildPythonPackage,
+  python,
+  pythonOlder,
+  pytestCheckHook,
+  assertpy,
+  mock,
+  path,
+  pyhamcrest,
+  pytest-html,
+  colorama,
+  cucumber-tag-expressions,
+  parse,
+  parse-type,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "behave";
-  version = "1.2.7.dev2";
-  format = "setuptools";
+  version = "1.2.7.dev5";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "behave";
-    repo = pname;
+    repo = "behave";
     rev = "v${version}";
-    hash = "sha256-B8PUN1Q4UAsDWrHjPZDlpaPjCKjI/pAogCSI+BQnaWs=";
+    hash = "sha256-G1o0a57MRczwjGLl/tEYC+yx3nxpk6+E58RvR9kVJpA=";
   };
 
-  nativeCheckInputs = [ pytestCheckHook mock path pyhamcrest pytest-html ];
+  build-system = [ setuptools ];
 
-  # upstream tests are failing, so instead we only check if we can import it
-  doCheck = false;
+  nativeCheckInputs = [
+    pytestCheckHook
+    assertpy
+    mock
+    path
+    pyhamcrest
+    pytest-html
+  ];
+
+  doCheck = pythonOlder "3.12";
 
   pythonImportsCheck = [ "behave" ];
 
-  buildInputs = [ glibcLocales ];
-  propagatedBuildInputs = [ colorama cucumber-tag-expressions parse parse-type six ];
+  dependencies = [
+    colorama
+    cucumber-tag-expressions
+    parse
+    parse-type
+    six
+  ];
 
   postPatch = ''
     patchShebangs bin
@@ -33,22 +60,25 @@ buildPythonPackage rec {
 
   # timing-based test flaky on Darwin
   # https://github.com/NixOS/nixpkgs/pull/97737#issuecomment-691489824
-  disabledTests = lib.optionals stdenv.isDarwin [ "test_step_decorator_async_run_until_complete" ];
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
+    "test_step_decorator_async_run_until_complete"
+  ];
 
   postCheck = ''
-    export LANG="en_US.UTF-8"
-    export LC_ALL="en_US.UTF-8"
-
     ${python.interpreter} bin/behave -f progress3 --stop --tags='~@xfail' features/
     ${python.interpreter} bin/behave -f progress3 --stop --tags='~@xfail' tools/test-features/
     ${python.interpreter} bin/behave -f progress3 --stop --tags='~@xfail' issue.features/
   '';
 
   meta = with lib; {
+    changelog = "https://github.com/behave/behave/blob/${src.rev}/CHANGES.rst";
     homepage = "https://github.com/behave/behave";
     description = "behaviour-driven development, Python style";
     mainProgram = "behave";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ alunduil maxxk ];
+    maintainers = with maintainers; [
+      alunduil
+      maxxk
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/bellows/default.nix b/pkgs/development/python-modules/bellows/default.nix
index 38c938bb74247..e75685b747689 100644
--- a/pkgs/development/python-modules/bellows/default.nix
+++ b/pkgs/development/python-modules/bellows/default.nix
@@ -1,24 +1,24 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, click
-, click-log
-, fetchFromGitHub
-, fetchpatch2
-, pure-pcapy3
-, pyserial-asyncio
-, pytest-asyncio
-, pytest-timeout
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, voluptuous
-, zigpy
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  click,
+  click-log,
+  fetchFromGitHub,
+  pure-pcapy3,
+  pyserial-asyncio,
+  pytest-asyncio,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  voluptuous,
+  zigpy,
 }:
 
 buildPythonPackage rec {
   pname = "bellows";
-  version = "0.38.1";
+  version = "0.40.6";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -27,25 +27,16 @@ buildPythonPackage rec {
     owner = "zigpy";
     repo = "bellows";
     rev = "refs/tags/${version}";
-    hash = "sha256-oxPzjDb+FdHeHsgeGKH3SVvKb0vCB9dIhT7lGzhDcBw=";
+    hash = "sha256-c0ebEulI1wY/ws6eqgkMQbprq5bzv+hJW0WDPkW/sys=";
   };
 
-  patches = [
-    (fetchpatch2 {
-      url = "https://github.com/zigpy/bellows/commit/7833647083f27f55b7ad345f4aaa7dffaa369abc.patch";
-      hash = "sha256-v+BOPqikWoyNtZ1qRWe3RwraG6nQnfZqoV6yj9PpGX8=";
-    })
-  ];
-
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace-fail '"setuptools-git-versioning<2"' "" \
       --replace-fail 'dynamic = ["version"]' 'version = "${version}"'
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     click
@@ -54,9 +45,7 @@ buildPythonPackage rec {
     pyserial-asyncio
     voluptuous
     zigpy
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    async-timeout
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ async-timeout ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -64,9 +53,7 @@ buildPythonPackage rec {
     pytest-timeout
   ];
 
-  pythonImportsCheck = [
-    "bellows"
-  ];
+  pythonImportsCheck = [ "bellows" ];
 
   meta = with lib; {
     description = "Python module to implement EZSP for EmberZNet devices";
diff --git a/pkgs/development/python-modules/bencode-py/default.nix b/pkgs/development/python-modules/bencode-py/default.nix
index 4a2dfc5c320f6..3620f34fa701e 100644
--- a/pkgs/development/python-modules/bencode-py/default.nix
+++ b/pkgs/development/python-modules/bencode-py/default.nix
@@ -2,7 +2,6 @@
   lib,
   buildPythonPackage,
   fetchPypi,
-  python,
   pbr,
   pytestCheckHook,
 }:
@@ -17,22 +16,16 @@ buildPythonPackage rec {
     hash = "sha256-KiTM2hclpRplCJPQtjJgE4NZ6qKZu256CZYTUKKm4Fw=";
   };
 
-  pythonImportsCheck = [
-    "bencodepy"
-  ];
+  pythonImportsCheck = [ "bencodepy" ];
 
-  nativeBuildInputs = [
-    pbr
-  ];
+  nativeBuildInputs = [ pbr ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Simple bencode parser (for Python 2, Python 3 and PyPy)";
     homepage = "https://github.com/fuzeman/bencode.py";
     license = licenses.bitTorrent11;
-    maintainers = with maintainers; [vamega];
+    maintainers = with maintainers; [ vamega ];
   };
 }
diff --git a/pkgs/development/python-modules/bencoder/default.nix b/pkgs/development/python-modules/bencoder/default.nix
index 2fa730630c0b4..f8be50a99e273 100644
--- a/pkgs/development/python-modules/bencoder/default.nix
+++ b/pkgs/development/python-modules/bencoder/default.nix
@@ -1,7 +1,7 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, setuptools
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
 }:
 buildPythonPackage rec {
   pname = "bencoder";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A simple bencode decoder/encoder library in pure Python";
+    description = "Simple bencode decoder/encoder library in pure Python";
     homepage = "https://github.com/utdemir/bencoder";
     license = licenses.gpl2;
     maintainers = with maintainers; [ somasis ];
diff --git a/pkgs/development/python-modules/beniget/default.nix b/pkgs/development/python-modules/beniget/default.nix
index 5868378f8d371..b0dfc690841df 100644
--- a/pkgs/development/python-modules/beniget/default.nix
+++ b/pkgs/development/python-modules/beniget/default.nix
@@ -1,26 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, gast
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  gast,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "beniget";
-  version = "0.4.1";
-  format = "setuptools";
+  version = "0.4.2.post1";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "75554b3b8ad0553ce2f607627dad3d95c60c441189875b98e097528f8e23ac0c";
+  src = fetchFromGitHub {
+    owner = "serge-sans-paille";
+    repo = "beniget";
+    rev = "refs/tags/${version}";
+    hash = "sha256-rNMgCEkI6p9KtLSz/2jVJ9rPeJzxv5rT+Pu6OHM8z70=";
   };
 
-  propagatedBuildInputs = [
-    gast
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ gast ];
+
+  pythonImportsCheck = [ "beniget" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = {
     description = "Extract semantic information about static Python code";
     homepage = "https://github.com/serge-sans-paille/beniget";
     license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/bentoml/default.nix b/pkgs/development/python-modules/bentoml/default.nix
index 6946f45e050f9..f7d480485c69b 100644
--- a/pkgs/development/python-modules/bentoml/default.nix
+++ b/pkgs/development/python-modules/bentoml/default.nix
@@ -1,75 +1,80 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, hatch-vcs
-, aiohttp
-, attrs
-, cattrs
-, circus
-, click
-, click-option-group
-, cloudpickle
-, deepmerge
-, fs
-, httpx
-, inflection
-, jinja2
-, numpy
-, opentelemetry-api
-, opentelemetry-instrumentation
-, opentelemetry-instrumentation-aiohttp-client
-, opentelemetry-instrumentation-asgi
-, opentelemetry-sdk
-, opentelemetry-semantic-conventions
-, opentelemetry-util-http
-, packaging
-, pathspec
-, pip-requirements-parser
-, pip-tools
-, prometheus-client
-, psutil
-, nvidia-ml-py
-, python-dateutil
-, python-json-logger
-, python-multipart
-, pyyaml
-, requests
-, rich
-, schema
-, simple-di
-, starlette
-, uvicorn
-, watchfiles
-, fs-s3fs
-, grpcio
-, grpcio-health-checking
-, opentelemetry-instrumentation-grpc
-, protobuf
-, grpcio-channelz
-, grpcio-reflection
-, filetype
-, pillow
-, pydantic
-, pandas
-, pyarrow
-, opentelemetry-exporter-otlp-proto-http
-# https://pypi.org/project/opentelemetry-exporter-jaeger-proto-grpc/
-# , opentelemetry-exporter-jaeger # support for this exporter ends in july 2023
-, opentelemetry-exporter-otlp
-# , opentelemetry-exporter-zipkin
-, tritonclient
-# native check inputs
-, pytestCheckHook
-, scikit-learn
-, lxml
-, orjson
-, pytest-asyncio
-, fastapi
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  hatchling,
+  hatch-vcs,
+  aiohttp,
+  aiosqlite,
+  attrs,
+  cattrs,
+  circus,
+  click,
+  click-option-group,
+  cloudpickle,
+  deepmerge,
+  fs,
+  fs-s3fs,
+  grpcio,
+  grpcio-channelz,
+  grpcio-health-checking,
+  grpcio-reflection,
+  httpx,
+  httpx-ws,
+  inflection,
+  inquirerpy,
+  jinja2,
+  numpy,
+  nvidia-ml-py,
+  opentelemetry-api,
+  opentelemetry-exporter-otlp,
+  opentelemetry-exporter-otlp-proto-http,
+  opentelemetry-instrumentation,
+  opentelemetry-instrumentation-aiohttp-client,
+  opentelemetry-instrumentation-asgi,
+  opentelemetry-instrumentation-grpc,
+  opentelemetry-sdk,
+  opentelemetry-semantic-conventions,
+  opentelemetry-util-http,
+  packaging,
+  pandas,
+  pathspec,
+  pillow,
+  pip-requirements-parser,
+  prometheus-client,
+  protobuf,
+  psutil,
+  pyarrow,
+  pydantic,
+  python-dateutil,
+  python-json-logger,
+  python-multipart,
+  pyyaml,
+  rich,
+  schema,
+  simple-di,
+  starlette,
+  tomli,
+  tomli-w,
+  tritonclient,
+  uv,
+  uvicorn,
+  watchfiles,
+  # native check inputs
+  pytestCheckHook,
+  pytest-xdist,
+  google-api-python-client,
+  scikit-learn,
+  lxml,
+  orjson,
+  pytest-asyncio,
+  fastapi,
 }:
 
 let
-  version = "1.2.5";
+  version = "1.3.3";
   aws = [ fs-s3fs ];
   grpc = [
     grpcio
@@ -77,54 +82,75 @@ let
     opentelemetry-instrumentation-grpc
     protobuf
   ];
-  io-file = [ filetype ];
-  io-image = io-file ++ [ pillow ];
-  io-json = [ pydantic ];
-  io-pandas = [ pandas pyarrow ];
+  io-image = [ pillow ];
+  io-pandas = [
+    pandas
+    pyarrow
+  ];
   grpc-reflection = grpc ++ [ grpcio-reflection ];
   grpc-channelz = grpc ++ [ grpcio-channelz ];
-  monitor-otlp = [ opentelemetry-exporter-otlp-proto-http ];
+  monitor-otlp = [
+    opentelemetry-exporter-otlp-proto-http
+    opentelemetry-instrumentation-grpc
+  ];
   # tracing-jaeger = [ opentelemetry-exporter-jaeger ];
   tracing-otlp = [ opentelemetry-exporter-otlp ];
   # tracing-zipkin = [ opentelemetry-exporter-zipkin ];
-  io = io-json ++ io-image ++ io-pandas ++ io-file;
+  io = io-image ++ io-pandas;
   tracing = tracing-otlp; # ++ tracing-zipkin ++ tracing-jaeger
   optional-dependencies = {
     all = aws ++ io ++ grpc ++ grpc-reflection ++ grpc-channelz ++ tracing ++ monitor-otlp;
-    inherit aws grpc io-file io-image io-json io-pandas io grpc-reflection
-      grpc-channelz monitor-otlp tracing-otlp tracing;
-    triton = [ tritonclient ] ++ tritonclient.optional-dependencies.http ++ tritonclient.optional-dependencies.grpc;
+    inherit
+      aws
+      grpc
+      io-image
+      io-pandas
+      io
+      grpc-reflection
+      grpc-channelz
+      monitor-otlp
+      tracing-otlp
+      tracing
+      ;
+    triton =
+      [ tritonclient ]
+      ++ lib.optionals stdenv.hostPlatform.isLinux (
+        tritonclient.optional-dependencies.http ++ tritonclient.optional-dependencies.grpc
+      );
   };
 in
 buildPythonPackage {
   pname = "bentoml";
   inherit version;
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "bentoml";
     repo = "BentoML";
     rev = "refs/tags/v${version}";
-    hash = "sha256-GBKxyjCs02mxYiMK4GhgFUATRCUSVf8mFbWjuPVD7SU=";
+    hash = "sha256-PjmXPSPukLJ+iCpBdUynhcWCfFqplmdsgj0LYpodE/c=";
   };
 
-  # https://github.com/bentoml/BentoML/pull/4227 should fix this test
-  postPatch = ''
-    substituteInPlace tests/unit/_internal/utils/test_analytics.py \
-      --replace "requests" "httpx"
-  '';
-
   pythonRelaxDeps = [
+    "cattrs"
+    "nvidia-ml-py"
+    "opentelemetry-api"
+    "opentelemetry-instrumentation-aiohttp-client"
+    "opentelemetry-instrumentation-asgi"
+    "opentelemetry-instrumentation"
+    "opentelemetry-sdk"
     "opentelemetry-semantic-conventions"
+    "opentelemetry-util-http"
   ];
 
-  nativeBuildInputs = [
+  build-system = [
     hatchling
     hatch-vcs
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
+    aiosqlite
     attrs
     cattrs
     circus
@@ -134,9 +160,12 @@ buildPythonPackage {
     deepmerge
     fs
     httpx
+    httpx-ws
     inflection
+    inquirerpy
     jinja2
     numpy
+    nvidia-ml-py
     opentelemetry-api
     opentelemetry-instrumentation
     opentelemetry-instrumentation-aiohttp-client
@@ -147,24 +176,24 @@ buildPythonPackage {
     packaging
     pathspec
     pip-requirements-parser
-    pip-tools
     prometheus-client
     psutil
-    nvidia-ml-py
+    pydantic
     python-dateutil
     python-json-logger
     python-multipart
     pyyaml
-    requests
     rich
     schema
     simple-di
     starlette
+    tomli-w
+    uv
     uvicorn
     watchfiles
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
-  passthru.optional-dependencies = optional-dependencies;
+  inherit optional-dependencies;
 
   pythonImportsCheck = [ "bentoml" ];
 
@@ -185,26 +214,29 @@ buildPythonPackage {
   ];
 
   nativeCheckInputs = [
-    pytestCheckHook
-    pandas
-    pydantic
-    scikit-learn
+    fastapi
+    google-api-python-client
     lxml
     orjson
-    pytest-asyncio
+    pandas
     pillow
-    fastapi
-    starlette
+    pytest-asyncio
+    pytest-xdist
+    pytestCheckHook
+    scikit-learn
   ] ++ optional-dependencies.grpc;
 
-
   meta = with lib; {
     description = "Build Production-Grade AI Applications";
     homepage = "https://github.com/bentoml/BentoML";
     changelog = "https://github.com/bentoml/BentoML/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ happysalada natsukium ];
-    # https://github.com/bentoml/BentoML/issues/3885
-    broken = versionAtLeast pydantic.version "2";
+    maintainers = with maintainers; [
+      happysalada
+      natsukium
+    ];
+    # AttributeError: 'dict' object has no attribute 'schemas'
+    # https://github.com/bentoml/BentoML/issues/4290
+    broken = versionAtLeast cattrs.version "23.2";
   };
 }
diff --git a/pkgs/development/python-modules/berkeleydb/default.nix b/pkgs/development/python-modules/berkeleydb/default.nix
new file mode 100644
index 0000000000000..bf6c93b633d3e
--- /dev/null
+++ b/pkgs/development/python-modules/berkeleydb/default.nix
@@ -0,0 +1,38 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pkgs,
+  python,
+}:
+
+buildPythonPackage rec {
+  pname = "berkeleydb";
+  version = "18.1.10";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-QmNBoWAHqQAtmHpvTZcib46v/8saBIhIgFPTijEnyBo=";
+  };
+
+  build-system = [ setuptools ];
+
+  checkPhase = ''
+    ${python.interpreter} test.py
+  '';
+
+  # See: https://github.com/NixOS/nixpkgs/pull/311198/files#r1597746759
+  env = {
+    BERKELEYDB_INCDIR = "${lib.getDev pkgs.db}/include";
+    BERKELEYDB_LIBDIR = "${lib.getLib pkgs.db}/lib";
+  };
+
+  meta = with lib; {
+    description = "Python bindings for Oracle Berkeley DB";
+    homepage = "https://www.jcea.es/programacion/pybsddb.htm";
+    license = with licenses; [ bsd3 ];
+    maintainers = [ ];
+  };
+}
diff --git a/pkgs/development/python-modules/bespon/default.nix b/pkgs/development/python-modules/bespon/default.nix
index a942651dcb73e..2721bd0b4b1dc 100644
--- a/pkgs/development/python-modules/bespon/default.nix
+++ b/pkgs/development/python-modules/bespon/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,10 +21,9 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "bespon" ];
   meta = with lib; {
-    description = "Encodes and decodes data in the BespON format.";
+    description = "Encodes and decodes data in the BespON format";
     homepage = "https://github.com/gpoore/bespon_py";
     license = licenses.bsd3;
     maintainers = with maintainers; [ synthetica ];
   };
-
 }
diff --git a/pkgs/development/python-modules/betacode/default.nix b/pkgs/development/python-modules/betacode/default.nix
index 4b935b34139a2..24931f25029cb 100644
--- a/pkgs/development/python-modules/betacode/default.nix
+++ b/pkgs/development/python-modules/betacode/default.nix
@@ -1,4 +1,10 @@
-{ fetchPypi, buildPythonPackage, pygtrie, isPy3k, lib, }:
+{
+  fetchPypi,
+  buildPythonPackage,
+  pygtrie,
+  isPy3k,
+  lib,
+}:
 buildPythonPackage rec {
   pname = "betacode";
   version = "1.0";
@@ -13,7 +19,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ pygtrie ];
   meta = {
     homepage = "https://github.com/matgrioni/betacode";
-    description = "A small python package to flexibly convert from betacode to unicode and back.";
+    description = "Small python package to flexibly convert from betacode to unicode and back";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ kmein ];
   };
diff --git a/pkgs/development/python-modules/betamax-matchers/default.nix b/pkgs/development/python-modules/betamax-matchers/default.nix
index 2588c1c848827..b1ac71b6cc211 100644
--- a/pkgs/development/python-modules/betamax-matchers/default.nix
+++ b/pkgs/development/python-modules/betamax-matchers/default.nix
@@ -1,21 +1,43 @@
-{ lib, buildPythonPackage, fetchPypi
-, betamax, requests-toolbelt }:
+{
+  lib,
+  betamax,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests-toolbelt,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "betamax-matchers";
   version = "0.4.0";
-  format = "setuptools";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "07qpwjyq2i2aqhz5iwghnj4pqr2ys5n45v1vmpcfx9r5mhwrsq43";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "betamaxpy";
+    repo = "betamax_matchers";
+    rev = "refs/tags/${version}";
+    hash = "sha256-BV9DOfZLDAZIr2E75l988QxFWWvazBL9VttxGFIez1M=";
   };
 
-  buildInputs = [ betamax requests-toolbelt ];
+  build-system = [ setuptools ];
+
+  dependencies = [
+    betamax
+    requests-toolbelt
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "betamax_matchers" ];
 
   meta = with lib; {
-    homepage = "https://github.com/sigmavirus24/betamax_matchers";
     description = "A group of experimental matchers for Betamax";
+    homepage = "https://github.com/sigmavirus24/betamax_matchers";
+    changelog = "https://github.com/betamaxpy/betamax_matchers/blob/${version}/HISTORY.rst";
     license = licenses.asl20;
     maintainers = with maintainers; [ pSub ];
   };
diff --git a/pkgs/development/python-modules/betamax-serializers/default.nix b/pkgs/development/python-modules/betamax-serializers/default.nix
index 072b3fa4193ba..ca2494faa78f9 100644
--- a/pkgs/development/python-modules/betamax-serializers/default.nix
+++ b/pkgs/development/python-modules/betamax-serializers/default.nix
@@ -1,5 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi
-, betamax, pyyaml }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  betamax,
+  pyyaml,
+}:
 
 buildPythonPackage rec {
   pname = "betamax-serializers";
@@ -11,11 +16,14 @@ buildPythonPackage rec {
     sha256 = "0ja9isbjmzzhxdj69s0kdsvw8nkp073w6an6a4liy5vk3fdl2p1l";
   };
 
-  buildInputs = [ betamax pyyaml ];
+  buildInputs = [
+    betamax
+    pyyaml
+  ];
 
   meta = with lib; {
     homepage = "https://gitlab.com/betamax/serializers";
-    description = "A set of third-party serializers for Betamax";
+    description = "Set of third-party serializers for Betamax";
     license = licenses.asl20;
   };
 }
diff --git a/pkgs/development/python-modules/betamax/default.nix b/pkgs/development/python-modules/betamax/default.nix
index d4da87d074334..dab6fcd1d4f28 100644
--- a/pkgs/development/python-modules/betamax/default.nix
+++ b/pkgs/development/python-modules/betamax/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, requests }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+}:
 
 buildPythonPackage rec {
   pname = "betamax";
@@ -7,7 +12,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-gjFuFnm8aHnjyDMY0Ba1S3ySJf8IxEYt5IE+IgONX5Q=";
+    hash = "sha256-gjFuFnm8aHnjyDMY0Ba1S3ySJf8IxEYt5IE+IgONX5Q=";
   };
 
   propagatedBuildInputs = [ requests ];
@@ -16,7 +21,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://betamax.readthedocs.org/en/latest/";
-    description = "A VCR imitation for requests";
+    description = "VCR imitation for requests";
     license = licenses.asl20;
     maintainers = with maintainers; [ pSub ];
   };
diff --git a/pkgs/development/python-modules/betterproto/default.nix b/pkgs/development/python-modules/betterproto/default.nix
index a20daf344f061..5f42d46b1e588 100644
--- a/pkgs/development/python-modules/betterproto/default.nix
+++ b/pkgs/development/python-modules/betterproto/default.nix
@@ -61,6 +61,7 @@ buildPythonPackage rec {
   # The tests require the generation of code before execution. This requires
   # the protoc-gen-python_betterproto script from the package to be on PATH.
   preCheck = ''
+    (($(ulimit -n) < 1024)) && ulimit -n 1024
     export PATH=$PATH:$out/bin
     patchShebangs src/betterproto/plugin/main.py
     ${python.interpreter} -m tests.generate
diff --git a/pkgs/development/python-modules/beziers/default.nix b/pkgs/development/python-modules/beziers/default.nix
index e4295f63ba054..2af89a69c9fdd 100644
--- a/pkgs/development/python-modules/beziers/default.nix
+++ b/pkgs/development/python-modules/beziers/default.nix
@@ -1,15 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, dotmap
-, matplotlib
-, pyclipper
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  dotmap,
+  matplotlib,
+  pyclipper,
+  unittestCheckHook,
+  gitUpdater,
 }:
 
 buildPythonPackage rec {
   pname = "beziers";
-  version = "0.5.0";
+  version = "0.6.0";
   format = "setuptools";
 
   # PyPI doesn't have a proper source tarball, fetch from Github instead
@@ -17,12 +19,10 @@ buildPythonPackage rec {
     owner = "simoncozens";
     repo = "beziers.py";
     rev = "v${version}";
-    hash = "sha256-4014u7s47Tfdpa2Q9hKAoHg7Ebcs1/DVW5TpEmoh2bc=";
+    hash = "sha256-NjmWsRz/NPPwXPbiSaOeKJMrYmSyNTt5ikONyAljgvM=";
   };
 
-  propagatedBuildInputs = [
-    pyclipper
-  ];
+  propagatedBuildInputs = [ pyclipper ];
 
   doCheck = true;
   nativeCheckInputs = [
@@ -30,7 +30,13 @@ buildPythonPackage rec {
     matplotlib
     unittestCheckHook
   ];
-  unittestFlagsArray = [ "-s" "test" "-v" ];
+  unittestFlagsArray = [
+    "-s"
+    "test"
+    "-v"
+  ];
+
+  passthru.updateScript = gitUpdater { rev-prefix = "v"; };
 
   meta = with lib; {
     description = "Python library for manipulating Bezier curves and paths in fonts";
diff --git a/pkgs/development/python-modules/bibtexparser/default.nix b/pkgs/development/python-modules/bibtexparser/default.nix
index d6b24f13ab134..38dcd4a705f20 100644
--- a/pkgs/development/python-modules/bibtexparser/default.nix
+++ b/pkgs/development/python-modules/bibtexparser/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyparsing
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyparsing,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,21 +21,18 @@ buildPythonPackage rec {
     hash = "sha256-YMkLSx7L2srLINZa6Ec0rPoxE2SdMv6CnI4BpHgHuzM=";
   };
 
-  propagatedBuildInputs = [
-    pyparsing
-  ];
+  propagatedBuildInputs = [ pyparsing ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "bibtexparser"
-  ];
+  pythonImportsCheck = [ "bibtexparser" ];
 
   meta = with lib; {
     description = "Bibtex parser for Python";
     homepage = "https://github.com/sciunto-org/python-bibtexparser";
-    license = with licenses; [ lgpl3Only /* or */ bsd3 ];
+    license = with licenses; [
+      lgpl3Only # or
+      bsd3
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/bidict/default.nix b/pkgs/development/python-modules/bidict/default.nix
index 811fb7055fea7..f333f2f3dbca3 100644
--- a/pkgs/development/python-modules/bidict/default.nix
+++ b/pkgs/development/python-modules/bidict/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, hypothesis
-, pytest-xdist
-, pytestCheckHook
-, typing-extensions
-, pythonOlder
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  hypothesis,
+  pytest-xdist,
+  pytestCheckHook,
+  typing-extensions,
+  pythonOlder,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -47,8 +48,11 @@ buildPythonPackage rec {
   meta = with lib; {
     homepage = "https://bidict.readthedocs.io";
     changelog = "https://bidict.readthedocs.io/changelog.html";
-    description = "The bidirectional mapping library for Python.";
+    description = "Bidirectional mapping library for Python";
     license = licenses.mpl20;
-    maintainers = with maintainers; [ jab jakewaksbaum ];
+    maintainers = with maintainers; [
+      jab
+      jakewaksbaum
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/bids-validator/default.nix b/pkgs/development/python-modules/bids-validator/default.nix
index 7512515c706de..f954d7c4ab67f 100644
--- a/pkgs/development/python-modules/bids-validator/default.nix
+++ b/pkgs/development/python-modules/bids-validator/default.nix
@@ -1,23 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-
-# build-system
-, setuptools
-, versioneer
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+
+  # build-system
+  setuptools,
+  versioneer,
 }:
 
 buildPythonPackage rec {
   pname = "bids-validator";
-  version = "1.14.4";
+  version = "1.14.6";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-Q0pghEFmK5qJ3sWgrxs4jWUm+Ox7LO5sDR8GUJWBr/o=";
+    pname = "bids_validator";
+    inherit version;
+    hash = "sha256-3ytrXRqq1h00zK0ElPLtc84wgoJa2jGVTE4UwlONSFw=";
   };
 
   nativeBuildInputs = [
@@ -28,15 +30,13 @@ buildPythonPackage rec {
   # needs packages which are not available in nixpkgs
   doCheck = false;
 
-  pythonImportsCheck = [
-    "bids_validator"
-  ];
+  pythonImportsCheck = [ "bids_validator" ];
 
   meta = with lib; {
     description = "Validator for the Brain Imaging Data Structure";
     homepage = "https://github.com/bids-standard/bids-validator";
     changelog = "https://github.com/bids-standard/bids-validator/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/biliass/default.nix b/pkgs/development/python-modules/biliass/default.nix
index 65f4e8f7d7c8c..75e799ce44b97 100644
--- a/pkgs/development/python-modules/biliass/default.nix
+++ b/pkgs/development/python-modules/biliass/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, poetry-core
-, protobuf
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  poetry-core,
+  protobuf,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "biliass";
-  version = "1.3.7";
+  version = "1.3.11";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -18,26 +19,18 @@ buildPythonPackage rec {
     owner = "yutto-dev";
     repo = "biliass";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Opb4rlGe+LDJZs3F7e/NZYfuMtHEWUZeMm8VZQfEzKI=";
+    hash = "sha256-hBorYAqtxTZ4LElxxJOGxC2g7sBRhRKVv6HOVHZn9FA=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    protobuf
-  ];
+  propagatedBuildInputs = [ protobuf ];
 
   doCheck = false; # test artifacts missing
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "biliass"
-  ];
+  pythonImportsCheck = [ "biliass" ];
 
   meta = with lib; {
     homepage = "https://github.com/yutto-dev/biliass";
diff --git a/pkgs/development/python-modules/bilibili-api-python/default.nix b/pkgs/development/python-modules/bilibili-api-python/default.nix
new file mode 100644
index 0000000000000..8adb7b664894c
--- /dev/null
+++ b/pkgs/development/python-modules/bilibili-api-python/default.nix
@@ -0,0 +1,76 @@
+{
+  aiohttp,
+  apscheduler,
+  beautifulsoup4,
+  brotli,
+  buildPythonPackage,
+  colorama,
+  fetchPypi,
+  httpx,
+  lib,
+  lxml,
+  pillow,
+  pycryptodomex,
+  pyyaml,
+  qrcode,
+  qrcode-terminal,
+  requests,
+  rsa,
+  setuptools,
+  setuptools-scm,
+  tqdm,
+  yarl,
+}:
+buildPythonPackage rec {
+  pname = "bilibili-api-python";
+  version = "16.2.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-ecv9lzp2L13seBosahgnglaZP8YZCD/13nlTPP8LCs0=";
+  };
+
+  postPatch = ''
+    # The upstream uses requirements.txt, which overly strict version constraints.
+    substituteInPlace requirements.txt \
+      --replace-fail "~=" ">="
+  '';
+
+  build-system = [
+    setuptools-scm
+    setuptools
+  ];
+
+  dependencies = [
+    aiohttp
+    beautifulsoup4
+    colorama
+    lxml
+    pyyaml
+    brotli
+    httpx
+    qrcode
+    requests
+    apscheduler
+    rsa
+    pillow
+    tqdm
+    yarl
+    pycryptodomex
+    qrcode-terminal
+  ];
+
+  # tests require network
+  doCheck = false;
+
+  pythonImportsCheck = [ "bilibili_api" ];
+
+  meta = {
+    changelog = "https://github.com/Nemo2011/bilibili-api/releases/tag/${version}";
+    description = "Python module providing convenient integration for various Bilibili API along with some additional common features";
+    homepage = "https://nemo2011.github.io/bilibili-api";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ moraxyc ];
+  };
+}
diff --git a/pkgs/development/python-modules/billiard/default.nix b/pkgs/development/python-modules/billiard/default.nix
index 15ccd234a7ac0..4604eb15f43d3 100644
--- a/pkgs/development/python-modules/billiard/default.nix
+++ b/pkgs/development/python-modules/billiard/default.nix
@@ -1,44 +1,41 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, case
-, psutil
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  psutil,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "billiard";
-  version = "4.2.0";
-  format = "setuptools";
+  version = "4.2.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-mjwxhMsnWqF6cy+T9lsgxSXT2fJTci0mqCGUgDreWiw=";
+  src = fetchFromGitHub {
+    owner = "celery";
+    repo = "billiard";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-9LuAlIn6hNiZGvWuaaDQxx9g0aBVF6Z2krxEOrssqRs=";
   };
 
+  build-system = [ setuptools ];
+
   nativeCheckInputs = [
-    case
     psutil
     pytestCheckHook
   ];
 
-  disabledTests = [
-    # psutil.NoSuchProcess: process no longer exists (pid=168)
-    "test_set_pdeathsig"
-  ];
-
-  pythonImportsCheck = [
-    "billiard"
-  ];
+  pythonImportsCheck = [ "billiard" ];
 
-  meta = with lib; {
+  meta = {
     description = "Python multiprocessing fork with improvements and bugfixes";
     homepage = "https://github.com/celery/billiard";
     changelog = "https://github.com/celery/billiard/blob/v${version}/CHANGES.txt";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ nickcao ];
   };
 }
diff --git a/pkgs/development/python-modules/bimmer-connected/default.nix b/pkgs/development/python-modules/bimmer-connected/default.nix
index 48ddcc9e7d629..ef3ecbd638d4e 100644
--- a/pkgs/development/python-modules/bimmer-connected/default.nix
+++ b/pkgs/development/python-modules/bimmer-connected/default.nix
@@ -1,52 +1,51 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pbr
-, httpx
-, pillow
-, pycryptodome
-, pyjwt
-, pytest-asyncio
-, pytestCheckHook
-, python
-, respx
-, setuptools
-, time-machine
-, tzdata
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pbr,
+  httpx,
+  pillow,
+  pycryptodome,
+  pyjwt,
+  pytest-asyncio,
+  pytestCheckHook,
+  python,
+  respx,
+  setuptools,
+  time-machine,
+  tzdata,
 }:
 
 buildPythonPackage rec {
   pname = "bimmer-connected";
-  version = "0.14.6";
+  version = "0.16.3";
   pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "bimmerconnected";
     repo = "bimmer_connected";
     rev = "refs/tags/${version}";
-    hash = "sha256-/FL9czp5x/BcKSXXzT19kgGiPFd61BpU7HLtgyyHlIs=";
+    hash = "sha256-IrGOhUnWTtCI5juFFuNdWSWxeFr7s8bRNT8sUludGo0=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     pbr
     setuptools
   ];
 
   PBR_VERSION = version;
 
-  propagatedBuildInputs = [
+  dependencies = [
     httpx
     pycryptodome
     pyjwt
   ];
 
   passthru.optional-dependencies = {
-    china = [
-      pillow
-    ];
+    china = [ pillow ];
   };
 
   postInstall = ''
@@ -67,11 +66,10 @@ buildPythonPackage rec {
 
   preCheck = ''
     export TZDIR=${tzdata}/${python.sitePackages}/tzdata/zoneinfo
+    export PATH=$out/bin:$PATH
   '';
 
-  pythonImportsCheck = [
-    "bimmer_connected"
-  ];
+  pythonImportsCheck = [ "bimmer_connected" ];
 
   meta = with lib; {
     changelog = "https://github.com/bimmerconnected/bimmer_connected/releases/tag/${version}";
diff --git a/pkgs/development/python-modules/binance-connector/default.nix b/pkgs/development/python-modules/binance-connector/default.nix
new file mode 100644
index 0000000000000..5e76268d7cf42
--- /dev/null
+++ b/pkgs/development/python-modules/binance-connector/default.nix
@@ -0,0 +1,60 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pycryptodome,
+  pythonOlder,
+  requests,
+  websocket-client,
+  # dependencies for tests
+  pytest-cov-stub,
+  pytest,
+  sure,
+  responses,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "binance-connector";
+  version = "3.8.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "binance";
+    repo = "${pname}-python";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-VUv9n+GePixsJ2Bqy4YOJpHEVkOjEO1HkBK+jxmkZpA=";
+  };
+
+  propagatedBuildInputs = [
+    requests
+    pycryptodome
+    websocket-client
+  ];
+
+  nativeCheckInputs = [
+    pytest-cov-stub
+    pytest
+    sure
+    responses
+    pytestCheckHook
+  ];
+
+  # pytestCheckHook attempts to run examples directory, which requires
+  # network access
+  disabledTestPaths = [ "examples/" ];
+
+  pythonImportsCheck = [
+    "binance.spot"
+    "binance.websocket"
+  ];
+
+  meta = with lib; {
+    description = "Simple connector to Binance Public API";
+    homepage = "https://github.com/binance/binance-connector-python";
+    license = licenses.mit;
+    maintainers = with maintainers; [ trishtzy ];
+  };
+}
diff --git a/pkgs/development/python-modules/binary/default.nix b/pkgs/development/python-modules/binary/default.nix
index 9311289b7cc27..ef2135e83f98b 100644
--- a/pkgs/development/python-modules/binary/default.nix
+++ b/pkgs/development/python-modules/binary/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,12 +23,18 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [ "binary" "binary.core" ];
+  pythonImportsCheck = [
+    "binary"
+    "binary.core"
+  ];
 
   meta = with lib; {
     description = "Easily convert between binary and SI units (kibibyte, kilobyte, etc.)";
     homepage = "https://github.com/ofek/binary";
-    license = with licenses; [ asl20 mit ];
-    maintainers = with maintainers; [ ];
+    license = with licenses; [
+      asl20
+      mit
+    ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/binary2strings/default.nix b/pkgs/development/python-modules/binary2strings/default.nix
index c122b67886da2..3a9937e8fea8c 100644
--- a/pkgs/development/python-modules/binary2strings/default.nix
+++ b/pkgs/development/python-modules/binary2strings/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pybind11
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pybind11,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -26,17 +27,11 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "binary2strings"
-  ];
+  pythonImportsCheck = [ "binary2strings" ];
 
-  pytestFlagsArray = [
-    "tests/test.py"
-  ];
+  pytestFlagsArray = [ "tests/test.py" ];
 
   meta = with lib; {
     description = "Module to extract Ascii, Utf8, and Unicode strings from binary data";
diff --git a/pkgs/development/python-modules/binaryornot/default.nix b/pkgs/development/python-modules/binaryornot/default.nix
index 435b5412b2385..dd57a7885aac8 100644
--- a/pkgs/development/python-modules/binaryornot/default.nix
+++ b/pkgs/development/python-modules/binaryornot/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, chardet, hypothesis }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  chardet,
+  hypothesis,
+}:
 
 buildPythonPackage rec {
   pname = "binaryornot";
diff --git a/pkgs/development/python-modules/bincopy/default.nix b/pkgs/development/python-modules/bincopy/default.nix
index f61432b229f8c..45fb979a72b50 100644
--- a/pkgs/development/python-modules/bincopy/default.nix
+++ b/pkgs/development/python-modules/bincopy/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, argparse-addons
-, humanfriendly
-, pyelftools
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  argparse-addons,
+  humanfriendly,
+  pyelftools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,15 +26,16 @@ buildPythonPackage rec {
     pyelftools
   ];
 
-  pythonImportsCheck = [
-    "bincopy"
-  ];
+  pythonImportsCheck = [ "bincopy" ];
 
   meta = with lib; {
     description = "Mangling of various file formats that conveys binary information (Motorola S-Record, Intel HEX, TI-TXT, ELF and binary files)";
     mainProgram = "bincopy";
     homepage = "https://github.com/eerimoq/bincopy";
     license = licenses.mit;
-    maintainers = with maintainers; [ frogamic sbruder ];
+    maintainers = with maintainers; [
+      frogamic
+      sbruder
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/bindep/default.nix b/pkgs/development/python-modules/bindep/default.nix
index 4a27f56a3bcd2..7feb91d8d9713 100644
--- a/pkgs/development/python-modules/bindep/default.nix
+++ b/pkgs/development/python-modules/bindep/default.nix
@@ -1,41 +1,49 @@
-{ lib
-, python3Packages
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  distro,
+  fetchPypi,
+  packaging,
+  parsley,
+  pbr,
+  setuptools,
 }:
-python3Packages.buildPythonPackage rec {
+
+buildPythonPackage rec {
   pname = "bindep";
   version = "2.11.0";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-rLLyWbzh/RUIhzR5YJu95bmq5Qg3hHamjWtqGQAufi8=";
   };
 
-  buildInputs = with python3Packages; [
+  env.PBR_VERSION = version;
+
+  build-system = [
     distro
     pbr
     setuptools
   ];
 
-  propagatedBuildInputs = with python3Packages; [
+  dependencies = [
     parsley
     pbr
     packaging
     distro
   ];
 
-  patchPhase = ''
-    # Setting the pbr version will skip any version checking logic
-    # This is required because pbr thinks it gets it's own version from git tags
-    # See https://docs.openstack.org/pbr/latest/user/packagers.html
-    export PBR_VERSION=5.11.1
-  '';
+  # Checks moved to 'passthru.tests' to workaround infinite recursion
+  doCheck = false;
+
+  pythonImportsCheck = [ "bindep" ];
 
   meta = with lib; {
     description = "Bindep is a tool for checking the presence of binary packages needed to use an application / library";
     homepage = "https://docs.opendev.org/opendev/bindep/latest/";
     license = licenses.asl20;
-    maintainers = with maintainers; [ melkor333 ];
+    mainProgram = "bindep";
+    maintainers = teams.openstack.members;
   };
 }
diff --git a/pkgs/development/python-modules/binho-host-adapter/default.nix b/pkgs/development/python-modules/binho-host-adapter/default.nix
index 51b9d9908a12b..78cd0e9b7ed9f 100644
--- a/pkgs/development/python-modules/binho-host-adapter/default.nix
+++ b/pkgs/development/python-modules/binho-host-adapter/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyserial
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyserial,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/binwalk/default.nix b/pkgs/development/python-modules/binwalk/default.nix
index b3725caa3d6df..024bd4d2dea36 100644
--- a/pkgs/development/python-modules/binwalk/default.nix
+++ b/pkgs/development/python-modules/binwalk/default.nix
@@ -1,53 +1,65 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, stdenv
-, zlib
-, xz
-, gzip
-, bzip2
-, gnutar
-, p7zip
-, cabextract
-, cramfsprogs
-, cramfsswap
-, sasquatch
-, squashfsTools
-, matplotlib
-, nose
-, pycrypto
-, pyqtgraph
-, visualizationSupport ? false }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  stdenv,
+  zlib,
+  xz,
+  gzip,
+  bzip2,
+  gnutar,
+  p7zip,
+  cabextract,
+  cramfsprogs,
+  cramfsswap,
+  sasquatch,
+  setuptools,
+  squashfsTools,
+  matplotlib,
+  pycrypto,
+  pyqtgraph,
+  pyqt5,
+  pytestCheckHook,
+  visualizationSupport ? false,
+}:
 
 buildPythonPackage rec {
   pname = "binwalk${lib.optionalString visualizationSupport "-full"}";
-  version = "2.3.4";
-  format = "setuptools";
+  version = "2.4.2";
+  pyproject = true;
 
   src = fetchFromGitHub {
-    owner = "ReFirmLabs";
+    owner = "OSPG";
     repo = "binwalk";
-    rev = "v${version}";
-    hash = "sha256-hlPbzqGRSXcIqlI+SNKq37CnnHd1IoMBNSjhyeAM1TE=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-IFq/XotW3bbf3obWXRK6Nw1KQDqyFHb4tcA09Twg8SQ=";
   };
 
-  patches = [
-    # test_firmware_zip fails with 2.3.3 upgrade
-    # https://github.com/ReFirmLabs/binwalk/issues/566
-    (fetchpatch {
-      url = "https://github.com/ReFirmLabs/binwalk/commit/dd4f2efd275c9dd1001130e82e0f985110cd2754.patch";
-      sha256 = "1707n4nf1d1ay1yn4i8qlrvj2c1120g88hjwyklpsc2s2dcnqj9r";
-      includes = [
-        "testing/tests/test_firmware_zip.py"
-      ];
-      revert = true;
-    })
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [ zlib xz gzip bzip2 gnutar p7zip cabextract squashfsTools xz pycrypto ]
-  ++ lib.optionals visualizationSupport [ matplotlib pyqtgraph ]
-  ++ lib.optionals (!stdenv.isDarwin) [ cramfsprogs cramfsswap sasquatch ];
+  propagatedBuildInputs =
+    [
+      zlib
+      xz
+      gzip
+      bzip2
+      gnutar
+      p7zip
+      cabextract
+      squashfsTools
+      xz
+      pycrypto
+    ]
+    ++ lib.optionals visualizationSupport [
+      matplotlib
+      pyqtgraph
+      pyqt5
+    ]
+    ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
+      cramfsprogs
+      cramfsswap
+      sasquatch
+    ];
 
   # setup.py only installs version.py during install, not test
   postPatch = ''
@@ -59,13 +71,13 @@ buildPythonPackage rec {
     HOME=$(mktemp -d)
   '';
 
-  nativeCheckInputs = [ nose ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "binwalk" ];
 
   meta = with lib; {
-    homepage = "https://github.com/ReFirmLabs/binwalk";
-    description = "A tool for searching a given binary image for embedded files";
+    homepage = "https://github.com/OSPG/binwalk";
+    description = "Tool for searching a given binary image for embedded files";
     mainProgram = "binwalk";
     maintainers = [ maintainers.koral ];
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/biom-format/default.nix b/pkgs/development/python-modules/biom-format/default.nix
new file mode 100644
index 0000000000000..8588c88e97af6
--- /dev/null
+++ b/pkgs/development/python-modules/biom-format/default.nix
@@ -0,0 +1,61 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  cython,
+  click,
+  numpy,
+  scipy,
+  pandas,
+  h5py,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "biom-format";
+  version = "2.1.16";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "biocore";
+    repo = "biom-format";
+    rev = "refs/tags/${version}";
+    hash = "sha256-E/6dIN8tdsu6cBVBW/BOeAQwJB9XRRL3flQZSKqIZlc=";
+  };
+
+  build-system = [
+    setuptools
+    cython
+    numpy
+  ];
+
+  dependencies = [
+    click
+    numpy
+    scipy
+    pandas
+    h5py
+  ];
+
+  # make pytest resolve the package from $out
+  # some tests don't work if we change the level of directory nesting
+  preCheck = ''
+    mkdir biom_tests
+    mv biom/tests biom_tests/tests
+    rm -r biom
+  '';
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pytestFlagsArray = [ "biom_tests/tests" ];
+
+  pythonImportsCheck = [ "biom" ];
+
+  meta = {
+    homepage = "http://biom-format.org/";
+    description = "Biological Observation Matrix (BIOM) format";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ tomasajt ];
+  };
+}
diff --git a/pkgs/development/python-modules/biopandas/default.nix b/pkgs/development/python-modules/biopandas/default.nix
index d33a9faf44031..fcb3bbe926d14 100644
--- a/pkgs/development/python-modules/biopandas/default.nix
+++ b/pkgs/development/python-modules/biopandas/default.nix
@@ -1,61 +1,72 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, looseversion
-, mmtf-python
-, nose
-, numpy
-, pandas
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  looseversion,
+  mmtf-python,
+  numpy,
+  pandas,
+  pytestCheckHook,
+  fetchpatch2,
 }:
 
 buildPythonPackage rec {
   pname = "biopandas";
-  version = "0.4.1";
-  format = "setuptools";
+  version = "0.5.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "BioPandas";
     repo = "biopandas";
     rev = "refs/tags/v${version}";
-    hash = "sha256-PRdemBo+bB2xJWmF2NylFTfNwEEo67i6XSaeDAFmQ/c=";
+    hash = "sha256-1c78baBBsDyvAWrNx5mZI/Q75wyXv0DAwAdWm3EwX/I=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
+  patches = [
+    # Needed for below patch to apply properly
+    (fetchpatch2 {
+      name = "deprecate-mmtf-parsing.patch";
+      url = "https://github.com/BioPandas/biopandas/commit/7a1517dbe76f2c70da8edb35f90c9fa69254e726.patch?full_index=1";
+      hash = "sha256-RFtXFqUYl8GnZ319HsBwx5SUbfUDnR66Ppakdvtg/wI=";
+    })
+    # Remove nose as a dependency.
+    (fetchpatch2 {
+      name = "remove-nose.patch";
+      url = "https://github.com/BioPandas/biopandas/commit/67aa2f237c70c826cd9ab59d6ae114582da2112f.patch?full_index=1";
+      hash = "sha256-fVl57/vGuzlYX/MBZnma1ZFCVmIpjr1k8t3bUJnb/uI=";
+      excludes = [ "setup.py" ];
+    })
   ];
 
-  pythonRelaxDeps = [
-    "looseversion"
-  ];
+  pythonRelaxDeps = [ "looseversion" ];
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
     pandas
     mmtf-python
     looseversion
   ];
 
-  nativeCheckInputs = [
-    nose
-  ];
-
-  checkPhase = ''
-    runHook preCheck
+  nativeCheckInputs = [ pytestCheckHook ];
 
-    nosetests
-
-    runHook postCheck
-  '';
-
-  pythonImportsCheck = [
-    "biopandas"
+  disabledTests = [
+    # require network access
+    "test_mmcif_pdb_conversion"
+    "test_fetch_pdb"
+    "test_write_mmtf_bp"
+    "test_write_mmtf"
+    "test_b_factor_shift"
   ];
 
+  pythonImportsCheck = [ "biopandas" ];
+
   meta = {
     description = "Working with molecular structures in pandas DataFrames";
     homepage = "https://github.com/BioPandas/biopandas";
-    changelog = "https://github.com/BioPandas/biopandas/releases/tag/${src.rev}";
+    changelog = "https://github.com/BioPandas/biopandas/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = lib.licenses.bsd3;
     maintainers = with lib.maintainers; [ natsukium ];
   };
diff --git a/pkgs/development/python-modules/biopython/close_parser_on_time.patch b/pkgs/development/python-modules/biopython/close_parser_on_time.patch
new file mode 100644
index 0000000000000..05d22e22ed9e6
--- /dev/null
+++ b/pkgs/development/python-modules/biopython/close_parser_on_time.patch
@@ -0,0 +1,18 @@
+diff --git a/Bio/SeqIO/SeqXmlIO.py b/Bio/SeqIO/SeqXmlIO.py
+index 8fe75ebb728..6758317d05f 100644
+--- a/Bio/SeqIO/SeqXmlIO.py
++++ b/Bio/SeqIO/SeqXmlIO.py
+@@ -498,11 +498,12 @@ def iterate(self, handle):
+             if not text:
+                 break
+             parser.feed(text)
++        # Closing the parser ensures that all XML data fed into it are processed
++        parser.close()
+         # We have reached the end of the XML file;
+         # send out the remaining records
+         yield from records
+         records.clear()
+-        parser.close()
+ 
+ 
+ class SeqXmlWriter(SequenceWriter):
diff --git a/pkgs/development/python-modules/biopython/default.nix b/pkgs/development/python-modules/biopython/default.nix
index 2ec814f56aef0..051f66845dec0 100644
--- a/pkgs/development/python-modules/biopython/default.nix
+++ b/pkgs/development/python-modules/biopython/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  numpy,
 }:
 
 buildPythonPackage rec {
@@ -18,15 +19,17 @@ buildPythonPackage rec {
     hash = "sha256-eOa/t43mMDQDev01/nfLbgqeW2Jwa+z3in2SKxbtg/c=";
   };
 
-  nativeBuildInputs = [
-    setuptools
+  patches = [
+    # cherry-picked from https://github.com/biopython/biopython/commit/3f9bda7ef44f533dadbaa0de29ac21929bc0b2f1
+    # fixes SeqXMLIO parser to process all data. remove on next update
+    ./close_parser_on_time.patch
   ];
 
-  propagatedBuildInputs = [ numpy ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [
-    "Bio"
-  ];
+  dependencies = [ numpy ];
+
+  pythonImportsCheck = [ "Bio" ];
 
   checkPhase = ''
     runHook preCheck
diff --git a/pkgs/development/python-modules/bip-utils/default.nix b/pkgs/development/python-modules/bip-utils/default.nix
index c4709e80845d4..17d7eea6b1b20 100644
--- a/pkgs/development/python-modules/bip-utils/default.nix
+++ b/pkgs/development/python-modules/bip-utils/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, cbor2
-, coincurve
-, crcmod
-, ecdsa
-, ed25519-blake2b
-, fetchFromGitHub
-, py-sr25519-bindings
-, pycryptodome
-, pynacl
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  cbor2,
+  coincurve,
+  crcmod,
+  ecdsa,
+  ed25519-blake2b,
+  fetchFromGitHub,
+  py-sr25519-bindings,
+  pycryptodome,
+  pynacl,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     hash = "sha256-3G37n/mfI+3JVIkmJWzbB1qPPTE6NJJlFZWdE0fIIWA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     ecdsa
@@ -43,19 +42,18 @@ buildPythonPackage rec {
     pycryptodome
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "bip_utils"
-  ];
+  pythonImportsCheck = [ "bip_utils" ];
 
   meta = with lib; {
     description = "Implementation of BIP39, BIP32, BIP44, BIP49 and BIP84 for wallet seeds, keys and addresses generation";
     homepage = "https://github.com/ebellocchia/bip_utils";
     changelog = "https://github.com/ebellocchia/bip_utils/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ mit ];
-    maintainers = with maintainers; [ prusnak stargate01 ];
+    maintainers = with maintainers; [
+      prusnak
+      stargate01
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/bip32/default.nix b/pkgs/development/python-modules/bip32/default.nix
index 165cf6231eea6..ea8e22a52cc6f 100644
--- a/pkgs/development/python-modules/bip32/default.nix
+++ b/pkgs/development/python-modules/bip32/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, base58
-, coincurve
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  base58,
+  coincurve,
 }:
 
 buildPythonPackage rec {
@@ -23,28 +24,18 @@ buildPythonPackage rec {
     hash = "sha256-o8UKR17XDWp1wTWYeDL0DJY+D11YI4mg0UuGEAPkHxE=";
   };
 
-  # https://github.com/darosior/python-bip32/pull/40/files
-  postPatch = ''
-    substituteInPlace requirements.txt \
-      --replace-fail 'coincurve>=15.0,<19' 'coincurve>=15.0,<20'
-  '';
+  pythonRelaxDeps = [ "coincurve" ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     base58
     coincurve
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "bip32"
-  ];
+  pythonImportsCheck = [ "bip32" ];
 
   meta = with lib; {
     description = "Minimalistic implementation of the BIP32 key derivation scheme";
diff --git a/pkgs/development/python-modules/biplist/default.nix b/pkgs/development/python-modules/biplist/default.nix
index 26247a3930cda..0ef428281a66b 100644
--- a/pkgs/development/python-modules/biplist/default.nix
+++ b/pkgs/development/python-modules/biplist/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     sha256 = "1im45a9z7ryrfyp1v6i39qia5qagw6i1mhif0hl0praz9iv4j1ac";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Failing tests
diff --git a/pkgs/development/python-modules/birch/default.nix b/pkgs/development/python-modules/birch/default.nix
index 56c95e415c319..772ab25109e4c 100644
--- a/pkgs/development/python-modules/birch/default.nix
+++ b/pkgs/development/python-modules/birch/default.nix
@@ -1,11 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, setuptools
-, strct
-, pytestCheckHook
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  setuptools,
+  strct,
+  pytestCheckHook,
+  pytest-cov-stub,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -30,23 +32,14 @@ buildPythonPackage rec {
   ];
 
   postPatch = ''
-    substituteInPlace pytest.ini \
-      --replace-fail  \
-        "--cov" \
-        "#--cov"
-
     # configure correct version, which fails due to missing .git
     substituteInPlace versioneer.py birch/_version.py \
       --replace-fail '"0+unknown"' '"${version}"'
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  dependencies = [
-    strct
-  ];
+  dependencies = [ strct ];
 
   pythonImportsCheck = [
     "birch"
@@ -57,6 +50,7 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
     pyyaml
   ];
 
@@ -64,7 +58,6 @@ buildPythonPackage rec {
     export HOME="$(mktemp -d)"
   '';
 
-
   meta = with lib; {
     description = "Simple hierarchical configuration for Python packages";
     homepage = "https://github.com/shaypal5/birch";
diff --git a/pkgs/development/python-modules/bitarray/default.nix b/pkgs/development/python-modules/bitarray/default.nix
index 8a748ed5b1b8e..426fa3f6874b2 100644
--- a/pkgs/development/python-modules/bitarray/default.nix
+++ b/pkgs/development/python-modules/bitarray/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     ${python.interpreter} -c 'import bitarray; bitarray.test()'
   '';
 
-  pythonImportsCheck = [
-    "bitarray"
-  ];
+  pythonImportsCheck = [ "bitarray" ];
 
   meta = with lib; {
     description = "Efficient arrays of booleans";
diff --git a/pkgs/development/python-modules/bitbox02/default.nix b/pkgs/development/python-modules/bitbox02/default.nix
index 7d6f891756088..69b2b258e1f22 100644
--- a/pkgs/development/python-modules/bitbox02/default.nix
+++ b/pkgs/development/python-modules/bitbox02/default.nix
@@ -1,29 +1,33 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, base58
-, ecdsa
-, hidapi
-, noiseprotocol
-, protobuf
-, semver
-, typing-extensions
+{
+  lib,
+  base58,
+  buildPythonPackage,
+  ecdsa,
+  fetchPypi,
+  hidapi,
+  noiseprotocol,
+  protobuf,
+  pythonOlder,
+  semver,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "bitbox02";
-  version = "6.2.0";
-  format = "setuptools";
+  version = "6.3.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-zt4G45nJjtU2/tbYpCEgjaoA+Xtpe9g2OpQaxfMzCb8=";
+    hash = "sha256-0D+yIovlYw8dfDUeW+vcualbvmLs+IySkTpmHwk2meM=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     base58
     ecdsa
     hidapi
@@ -36,15 +40,13 @@ buildPythonPackage rec {
   # does not contain tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "bitbox02"
-  ];
+  pythonImportsCheck = [ "bitbox02" ];
 
   meta = with lib; {
     description = "Firmware code of the BitBox02 hardware wallet";
     homepage = "https://github.com/digitalbitbox/bitbox02-firmware/";
     changelog = "https://github.com/digitalbitbox/bitbox02-firmware/blob/py-bitbox02-${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/bitcoin-utils-fork-minimal/default.nix b/pkgs/development/python-modules/bitcoin-utils-fork-minimal/default.nix
index c548ce0bbf320..f2c70dcadc7e5 100644
--- a/pkgs/development/python-modules/bitcoin-utils-fork-minimal/default.nix
+++ b/pkgs/development/python-modules/bitcoin-utils-fork-minimal/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, base58
-, buildPythonPackage
-, ecdsa
-, fetchPypi
-, sympy
+{
+  lib,
+  base58,
+  buildPythonPackage,
+  ecdsa,
+  fetchPypi,
+  sympy,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
   # Project doesn't ship tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "bitcoinutils"
-  ];
+  pythonImportsCheck = [ "bitcoinutils" ];
 
   meta = with lib; {
     description = "Bitcoin utility functions";
diff --git a/pkgs/development/python-modules/bitcoinlib/default.nix b/pkgs/development/python-modules/bitcoinlib/default.nix
index d921d9ca56bf7..910e3ea654a91 100644
--- a/pkgs/development/python-modules/bitcoinlib/default.nix
+++ b/pkgs/development/python-modules/bitcoinlib/default.nix
@@ -1,4 +1,11 @@
-{ stdenv, lib, buildPythonPackage, isPy3k, fetchFromGitHub, openssl }:
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  isPy3k,
+  fetchFromGitHub,
+  openssl,
+}:
 
 buildPythonPackage rec {
   pname = "bitcoinlib";
@@ -20,7 +27,10 @@ buildPythonPackage rec {
       "'${lib.getLib openssl}/lib/libssl${stdenv.hostPlatform.extensions.sharedLibrary}'"
   '';
 
-  pythonImportsCheck = [ "bitcoin" "bitcoin.core.key" ];
+  pythonImportsCheck = [
+    "bitcoin"
+    "bitcoin.core.key"
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/petertodd/python-bitcoinlib";
diff --git a/pkgs/development/python-modules/bitcoinrpc/default.nix b/pkgs/development/python-modules/bitcoinrpc/default.nix
index 65c05c01991b6..cfdc523b1213b 100644
--- a/pkgs/development/python-modules/bitcoinrpc/default.nix
+++ b/pkgs/development/python-modules/bitcoinrpc/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, orjson
-, httpx
-, typing-extensions
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  orjson,
+  httpx,
+  typing-extensions,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,13 +29,9 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "bitcoinrpc"
-  ];
+  pythonImportsCheck = [ "bitcoinrpc" ];
 
   meta = with lib; {
     description = "Bitcoin JSON-RPC client";
diff --git a/pkgs/development/python-modules/bite-parser/default.nix b/pkgs/development/python-modules/bite-parser/default.nix
index 62f4d36727877..76abaebf63640 100644
--- a/pkgs/development/python-modules/bite-parser/default.nix
+++ b/pkgs/development/python-modules/bite-parser/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-Uq2FDoo5gztMRqtdkKYX0RULhjFgy+DeujC6BTZ3CZI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   nativeCheckInputs = [
     pytest-asyncio
diff --git a/pkgs/development/python-modules/bitlist/default.nix b/pkgs/development/python-modules/bitlist/default.nix
index 30198b7a1a176..76d2b45b2605a 100644
--- a/pkgs/development/python-modules/bitlist/default.nix
+++ b/pkgs/development/python-modules/bitlist/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, wheel
-, parts
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  wheel,
+  parts,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "bitlist";
   version = "1.2.0";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -22,25 +23,21 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace '--cov=bitlist --cov-report term-missing' ""
+      --replace-fail '--cov=bitlist --cov-report term-missing' ""
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     wheel
   ];
 
-  propagatedBuildInputs = [
-    parts
-  ];
+  pythonRelaxDeps = [ "parts" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  dependencies = [ parts ];
 
-  pythonImportsCheck = [
-    "bitlist"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "bitlist" ];
 
   meta = with lib; {
     description = "Python library for working with little-endian list representation of bit strings";
diff --git a/pkgs/development/python-modules/bitmath/default.nix b/pkgs/development/python-modules/bitmath/default.nix
index d5bdf77fb592d..dab0477350b7e 100644
--- a/pkgs/development/python-modules/bitmath/default.nix
+++ b/pkgs/development/python-modules/bitmath/default.nix
@@ -1,4 +1,12 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k, progressbar231 ? null, progressbar33, mock }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  progressbar231 ? null,
+  progressbar33,
+  mock,
+}:
 
 buildPythonPackage rec {
   pname = "bitmath";
@@ -10,7 +18,10 @@ buildPythonPackage rec {
     sha256 = "293325f01e65defe966853111df11d39215eb705a967cb115851da8c4cfa3eb8";
   };
 
-  nativeCheckInputs = [ (if isPy3k then progressbar33 else progressbar231) mock ];
+  nativeCheckInputs = [
+    (if isPy3k then progressbar33 else progressbar231)
+    mock
+  ];
 
   meta = with lib; {
     description = "Module for representing and manipulating file sizes with different prefix";
diff --git a/pkgs/development/python-modules/bitsandbytes/default.nix b/pkgs/development/python-modules/bitsandbytes/default.nix
index 189b8a9c6c27c..9bfc4a89784fe 100644
--- a/pkgs/development/python-modules/bitsandbytes/default.nix
+++ b/pkgs/development/python-modules/bitsandbytes/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, pythonOlder
-, setuptools
-, wheel
-, torch
-, scipy
-, symlinkJoin
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  pythonOlder,
+  setuptools,
+  wheel,
+  torch,
+  scipy,
+  symlinkJoin,
 }:
 
 let
   pname = "bitsandbytes";
-  version = "0.42.0";
+  version = "0.43.1";
 
   inherit (torch) cudaCapabilities cudaPackages cudaSupport;
   inherit (cudaPackages) backendStdenv cudaVersion;
@@ -29,17 +30,19 @@ let
 
   cuda-native-redist = symlinkJoin {
     name = "cuda-native-redist-${cudaVersion}";
-    paths = with cudaPackages; [
-      cuda_cudart # cuda_runtime.h cuda_runtime_api.h
-      cuda_nvcc
-    ] ++ cuda-common-redist;
+    paths =
+      with cudaPackages;
+      [
+        cuda_cudart # cuda_runtime.h cuda_runtime_api.h
+        cuda_nvcc
+      ]
+      ++ cuda-common-redist;
   };
 
   cuda-redist = symlinkJoin {
     name = "cuda-redist-${cudaVersion}";
     paths = cuda-common-redist;
   };
-
 in
 buildPythonPackage {
   inherit pname version;
@@ -51,49 +54,48 @@ buildPythonPackage {
     owner = "TimDettmers";
     repo = "bitsandbytes";
     rev = "refs/tags/${version}";
-    hash = "sha256-PZxsFJ6WpfeQqRQrRRBZfZfNY6/TfJFLBeknX24OXcU=";
+    hash = "sha256-GFbFKPdV96DXPA+PZO4h0zdBclN670fb0PGv4QPHWHU=";
   };
 
-  postPatch = ''
-    substituteInPlace Makefile --replace "/usr/bin/g++" "g++" --replace "lib64" "lib"
-    substituteInPlace bitsandbytes/cuda_setup/main.py  \
-      --replace "binary_path = package_dir / self.binary_name"  \
-                "binary_path = Path('$out/${python.sitePackages}/${pname}')/self.binary_name"
-  '' + lib.optionalString torch.cudaSupport ''
-    substituteInPlace bitsandbytes/cuda_setup/main.py  \
-      --replace "/usr/local/cuda/lib64" "${cuda-native-redist}/lib"
-  '';
+  postPatch =
+    ''
+      substituteInPlace Makefile --replace "/usr/bin/g++" "g++" --replace "lib64" "lib"
+      substituteInPlace bitsandbytes/cuda_setup/main.py  \
+        --replace "binary_path = package_dir / self.binary_name"  \
+                  "binary_path = Path('$out/${python.sitePackages}/${pname}')/self.binary_name"
+    ''
+    + lib.optionalString torch.cudaSupport ''
+      substituteInPlace bitsandbytes/cuda_setup/main.py  \
+        --replace "/usr/local/cuda/lib64" "${cuda-native-redist}/lib"
+    '';
 
   CUDA_HOME = "${cuda-native-redist}";
 
-  preBuild = if torch.cudaSupport then
-    with torch.cudaPackages;
-    let cudaVersion = lib.concatStrings (lib.splitVersion torch.cudaPackages.cudaMajorMinorVersion); in
-    ''make CUDA_VERSION=${cudaVersion} cuda${cudaMajorVersion}x''
-  else
-    ''make CUDA_VERSION=CPU cpuonly'';
+  preBuild =
+    if torch.cudaSupport then
+      with torch.cudaPackages;
+      let
+        cudaVersion = lib.concatStrings (lib.splitVersion torch.cudaPackages.cudaMajorMinorVersion);
+      in
+      ''make CUDA_VERSION=${cudaVersion} cuda${cudaMajorVersion}x''
+    else
+      ''make CUDA_VERSION=CPU cpuonly'';
 
   nativeBuildInputs = [
     setuptools
     wheel
-  ] ++ lib.optionals torch.cudaSupport [
-    cuda-native-redist
-  ];
+  ] ++ lib.optionals torch.cudaSupport [ cuda-native-redist ];
 
-  buildInputs = lib.optionals torch.cudaSupport [
-    cuda-redist
-  ];
+  buildInputs = lib.optionals torch.cudaSupport [ cuda-redist ];
 
   propagatedBuildInputs = [
     scipy
     torch
   ];
 
-  doCheck = false;  # tests require CUDA and also GPU access
+  doCheck = false; # tests require CUDA and also GPU access
 
-  pythonImportsCheck = [
-    "bitsandbytes"
-  ];
+  pythonImportsCheck = [ "bitsandbytes" ];
 
   meta = with lib; {
     description = "8-bit CUDA functions for PyTorch";
diff --git a/pkgs/development/python-modules/bitstring/default.nix b/pkgs/development/python-modules/bitstring/default.nix
index 52fdaece66ff3..af85d4b32034a 100644
--- a/pkgs/development/python-modules/bitstring/default.nix
+++ b/pkgs/development/python-modules/bitstring/default.nix
@@ -1,15 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, bitarray
-, setuptools
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  bitarray,
+  setuptools,
+  pytest-benchmark,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "bitstring";
-  version = "4.1.4";
+  version = "4.2.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,18 +20,27 @@ buildPythonPackage rec {
     owner = "scott-griffiths";
     repo = pname;
     rev = "refs/tags/bitstring-${version}";
-    hash = "sha256-CO7R2SCb232OW1DCLo45UIarFG5FhR4WkwuQieXha0Y=";
+    hash = "sha256-m2LZdUWOMxzr/biZhD1nWagab8PohHTcr+U1di0nkrU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
+  build-system = [ setuptools ];
+
+  dependencies = [ bitarray ];
+
+  nativeCheckInputs = [
+    pytest-benchmark
+    pytestCheckHook
   ];
 
-  propagatedBuildInputs = [
-    bitarray
+  pytestFlagsArray = [
+    "--benchmark-disable"
   ];
 
-  nativeCheckInputs = [ unittestCheckHook ];
+  disabledTestPaths = [
+    "tests/test_bits.py"
+    "tests/test_fp8.py"
+    "tests/test_mxfp.py"
+  ];
 
   pythonImportsCheck = [ "bitstring" ];
 
diff --git a/pkgs/development/python-modules/bitstruct/default.nix b/pkgs/development/python-modules/bitstruct/default.nix
index e16a6d7a38cde..7d64491e9733b 100644
--- a/pkgs/development/python-modules/bitstruct/default.nix
+++ b/pkgs/development/python-modules/bitstruct/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-11up3e2FwX6IWiCaAOuOJI7kB2IUny8qeTYMqFdGfaw=";
   };
 
-  pythonImportsCheck = [
-    "bitstruct"
-  ];
+  pythonImportsCheck = [ "bitstruct" ];
 
   meta = with lib; {
     description = "Python bit pack/unpack package";
diff --git a/pkgs/development/python-modules/bitvavo-aio/default.nix b/pkgs/development/python-modules/bitvavo-aio/default.nix
index 9dc561afd680f..0df3e7add0988 100644
--- a/pkgs/development/python-modules/bitvavo-aio/default.nix
+++ b/pkgs/development/python-modules/bitvavo-aio/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     sha256 = "1d9nbbvv7xnkixj03sfhs2da5j3i2m7p73r7j1yb7b39zas2rbig";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/bitvector-for-humans/default.nix b/pkgs/development/python-modules/bitvector-for-humans/default.nix
new file mode 100644
index 0000000000000..5652d850a7ea8
--- /dev/null
+++ b/pkgs/development/python-modules/bitvector-for-humans/default.nix
@@ -0,0 +1,41 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  poetry-core,
+  pytestCheckHook,
+}:
+buildPythonPackage rec {
+  pname = "bitvector-for-humans";
+  version = "0.14.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "JnyJny";
+    repo = "bitvector";
+    rev = version;
+    hash = "sha256-GVTRD83tq/Hea53US4drOD5ruoYCLTVd24aZOSdDsSo=";
+  };
+
+  patches = [
+    (fetchpatch2 {
+      # https://github.com/JnyJny/bitvector/pull/1
+      name = "fix-poetry-core.patch";
+      url = "https://github.com/JnyJny/bitvector/commit/e5777f2425895ed854e54bed2ed9d993f6feaf2f.patch";
+      hash = "sha256-BG3IpDMys88RtkPOd58CWpRWKKzbNe5kV+64hWjtecE=";
+    })
+  ];
+
+  build-system = [ poetry-core ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "bitvector" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/JnyJny/bitvector";
+    description = "This simple bit vector implementation aims to make addressing single bits a little less fiddly.";
+    license = licenses.asl20;
+    maintainers = teams.helsinki-systems.members;
+  };
+}
diff --git a/pkgs/development/python-modules/bizkaibus/default.nix b/pkgs/development/python-modules/bizkaibus/default.nix
index 4f55bb14fdbfd..ba078194af8f8 100644
--- a/pkgs/development/python-modules/bizkaibus/default.nix
+++ b/pkgs/development/python-modules/bizkaibus/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, requests
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  requests,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     sha256 = "1v7k9fclndb4x9npzhzj68kbrc3lb3wr6cwal2x46ib207593ckr";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/bjoern/default.nix b/pkgs/development/python-modules/bjoern/default.nix
index e8b11a6311a4e..ca8663c1d6560 100644
--- a/pkgs/development/python-modules/bjoern/default.nix
+++ b/pkgs/development/python-modules/bjoern/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchFromGitHub, libev, python }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  libev,
+  python,
+}:
 
 buildPythonPackage rec {
   pname = "bjoern";
@@ -23,7 +29,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/jonashaag/bjoern";
-    description = "A screamingly fast Python 2/3 WSGI server written in C";
+    description = "Screamingly fast Python 2/3 WSGI server written in C";
     license = licenses.bsd2;
     maintainers = with maintainers; [ cmcdragonkai ];
   };
diff --git a/pkgs/development/python-modules/bkcharts/default.nix b/pkgs/development/python-modules/bkcharts/default.nix
index cdcd03c18d550..737535ce3cf63 100644
--- a/pkgs/development/python-modules/bkcharts/default.nix
+++ b/pkgs/development/python-modules/bkcharts/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, pandas
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  pandas,
 }:
 
-
 buildPythonPackage rec {
   pname = "bkcharts";
   version = "0.2";
@@ -16,7 +16,10 @@ buildPythonPackage rec {
     sha256 = "a5eaa8e78853dcecaa46345812e4fabe9cd3b96330ebf0809f640a4a0556d72e";
   };
 
-  propagatedBuildInputs = [ numpy pandas ];
+  propagatedBuildInputs = [
+    numpy
+    pandas
+  ];
 
   # Circular test dependency on bokeh
   doCheck = false;
diff --git a/pkgs/development/python-modules/black-macchiato/default.nix b/pkgs/development/python-modules/black-macchiato/default.nix
index b29405d00791c..da26ce0ed3a8b 100644
--- a/pkgs/development/python-modules/black-macchiato/default.nix
+++ b/pkgs/development/python-modules/black-macchiato/default.nix
@@ -1,9 +1,10 @@
-{ lib,
+{
+  lib,
   buildPythonPackage,
   fetchFromGitHub,
   pythonOlder,
   pytestCheckHook,
-  black
+  black,
 }:
 
 buildPythonPackage rec {
@@ -14,24 +15,26 @@ buildPythonPackage rec {
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
-    owner  = "wbolster";
-    repo   = pname;
-    rev    = version;
+    owner = "wbolster";
+    repo = pname;
+    rev = version;
     sha256 = "0lc9w50nlbmlzj44krk7kxcia202fhybbnwfh77xixlc7vb4rayl";
   };
 
   propagatedBuildInputs = [ black ];
 
-  nativeCheckInputs = [ pytestCheckHook black ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    black
+  ];
 
   pythonImportsCheck = [ "black" ];
 
   meta = with lib; {
     description = "This is a small utility built on top of the black Python code formatter to enable formatting of partial files";
     mainProgram = "black-macchiato";
-    homepage    = "https://github.com/wbolster/black-macchiato";
-    license     = licenses.bsd3;
+    homepage = "https://github.com/wbolster/black-macchiato";
+    license = licenses.bsd3;
     maintainers = with maintainers; [ jperras ];
   };
-
 }
diff --git a/pkgs/development/python-modules/black/default.nix b/pkgs/development/python-modules/black/default.nix
index ec11de747c1e5..de9a6d9d48b6e 100644
--- a/pkgs/development/python-modules/black/default.nix
+++ b/pkgs/development/python-modules/black/default.nix
@@ -1,37 +1,38 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pytestCheckHook
-, aiohttp
-, click
-, colorama
-, hatch-fancy-pypi-readme
-, hatch-vcs
-, hatchling
-, ipython
-, mypy-extensions
-, packaging
-, pathspec
-, parameterized
-, platformdirs
-, tokenize-rt
-, tomli
-, typing-extensions
-, uvloop
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytestCheckHook,
+  aiohttp,
+  click,
+  colorama,
+  hatch-fancy-pypi-readme,
+  hatch-vcs,
+  hatchling,
+  ipython,
+  mypy-extensions,
+  packaging,
+  pathspec,
+  parameterized,
+  platformdirs,
+  tokenize-rt,
+  tomli,
+  typing-extensions,
+  uvloop,
 }:
 
 buildPythonPackage rec {
   pname = "black";
-  version = "24.3.0";
+  version = "24.4.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-oMnEoHca/GkZV4zscc6Co+MeBUkE5xl96svJOCZxxB8=";
+    hash = "sha256-yHK1MFfwAAhdpmoZxV1o9vjdysJkI5KtOjVYeEBvvU0=";
   };
 
   nativeBuildInputs = [
@@ -40,27 +41,23 @@ buildPythonPackage rec {
     hatchling
   ];
 
-  propagatedBuildInputs = [
-    click
-    mypy-extensions
-    packaging
-    pathspec
-    platformdirs
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-    typing-extensions
-  ];
+  propagatedBuildInputs =
+    [
+      click
+      mypy-extensions
+      packaging
+      pathspec
+      platformdirs
+    ]
+    ++ lib.optionals (pythonOlder "3.11") [
+      tomli
+      typing-extensions
+    ];
 
   passthru.optional-dependencies = {
-    colorama = [
-      colorama
-    ];
-    d = [
-      aiohttp
-    ];
-    uvloop = [
-      uvloop
-    ];
+    colorama = [ colorama ];
+    d = [ aiohttp ];
+    uvloop = [ uvloop ];
     jupyter = [
       ipython
       tokenize-rt
@@ -77,39 +74,47 @@ buildPythonPackage rec {
   ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
 
   pytestFlagsArray = [
-    "-W" "ignore::DeprecationWarning"
+    "-W"
+    "ignore::DeprecationWarning"
   ];
 
-  preCheck = ''
-    export PATH="$PATH:$out/bin"
+  preCheck =
+    ''
+      export PATH="$PATH:$out/bin"
 
-    # The top directory /build matches black's DEFAULT_EXCLUDE regex.
-    # Make /build the project root for black tests to avoid excluding files.
-    touch ../.git
-  '' + lib.optionalString stdenv.isDarwin ''
-    # Work around https://github.com/psf/black/issues/2105
-    export TMPDIR="/tmp"
-  '';
+      # The top directory /build matches black's DEFAULT_EXCLUDE regex.
+      # Make /build the project root for black tests to avoid excluding files.
+      touch ../.git
+    ''
+    + lib.optionalString stdenv.hostPlatform.isDarwin ''
+      # Work around https://github.com/psf/black/issues/2105
+      export TMPDIR="/tmp"
+    '';
 
-  disabledTests = [
-    # requires network access
-    "test_gen_check_output"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # fails on darwin
-    "test_expression_diff"
-    # Fail on Hydra, see https://github.com/NixOS/nixpkgs/pull/130785
-    "test_bpo_2142_workaround"
-    "test_skip_magic_trailing_comma"
-  ];
+  disabledTests =
+    [
+      # requires network access
+      "test_gen_check_output"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # fails on darwin
+      "test_expression_diff"
+      # Fail on Hydra, see https://github.com/NixOS/nixpkgs/pull/130785
+      "test_bpo_2142_workaround"
+      "test_skip_magic_trailing_comma"
+    ];
   # multiple tests exceed max open files on hydra builders
-  doCheck = !(stdenv.isLinux && stdenv.isAarch64);
+  doCheck = !(stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64);
 
   meta = with lib; {
-    description = "The uncompromising Python code formatter";
+    description = "Uncompromising Python code formatter";
     homepage = "https://github.com/psf/black";
     changelog = "https://github.com/psf/black/blob/${version}/CHANGES.md";
     license = licenses.mit;
     mainProgram = "black";
-    maintainers = with maintainers; [ sveitser autophagy ];
+    maintainers = with maintainers; [
+      sveitser
+      autophagy
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/blacken-docs/default.nix b/pkgs/development/python-modules/blacken-docs/default.nix
new file mode 100644
index 0000000000000..7370471c2604f
--- /dev/null
+++ b/pkgs/development/python-modules/blacken-docs/default.nix
@@ -0,0 +1,42 @@
+{
+  black,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pytestCheckHook,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "blacken-docs";
+  version = "1.15.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "adamchainz";
+    repo = "blacken-docs";
+    rev = version;
+    hash = "sha256-3FGuFOAHCcybPwujWlh58NWtuF5CebaKTgBWgCGpSL8=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
+    black
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/adamchainz/blacken-docs";
+    changelog = "https://github.com/adamchainz/blacken-docs/blob/${src.rev}/CHANGELOG.rst";
+    description = "Run Black on Python code blocks in documentation files";
+    license = licenses.mit;
+    maintainers = with maintainers; [ l0b0 ];
+    mainProgram = "blacken-docs";
+  };
+}
diff --git a/pkgs/development/python-modules/blackjax/default.nix b/pkgs/development/python-modules/blackjax/default.nix
index 7ecc4eda95198..b58c73367655b 100644
--- a/pkgs/development/python-modules/blackjax/default.nix
+++ b/pkgs/development/python-modules/blackjax/default.nix
@@ -1,21 +1,30 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pytest-xdist
-, pytestCheckHook
-, setuptools-scm
-, fastprogress
-, jax
-, jaxlib
-, jaxopt
-, optax
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools-scm,
+
+  # dependencies
+  fastprogress,
+  jax,
+  jaxlib,
+  jaxopt,
+  optax,
+  typing-extensions,
+
+  # checks
+  pytestCheckHook,
+  pytest-xdist,
+
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "blackjax";
-  version = "1.1.1";
+  version = "1.2.3";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -24,12 +33,12 @@ buildPythonPackage rec {
     owner = "blackjax-devs";
     repo = "blackjax";
     rev = "refs/tags/${version}";
-    hash = "sha256-6+ElY1F8oRCtWT4a/LIG6hYMthlq5mDx2baKAc6zIns=";
+    hash = "sha256-f1piE79TLVLtIe9/DaLhXss/ifhU719nEylyl70SVJc=";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     fastprogress
     jax
     jaxlib
@@ -42,21 +51,32 @@ buildPythonPackage rec {
     pytestCheckHook
     pytest-xdist
   ];
-  disabledTestPaths = [ "tests/test_benchmarks.py" ];
-  disabledTests = [
-    # too slow
-    "test_adaptive_tempered_smc"
-  ];
 
-  pythonImportsCheck = [
-    "blackjax"
-  ];
+  disabledTestPaths =
+    [ "tests/test_benchmarks.py" ]
+    ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
+      # Assertion errors on numerical values
+      "tests/mcmc/test_integrators.py"
+    ];
+
+  disabledTests =
+    [
+      # too slow
+      "test_adaptive_tempered_smc"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
+      # Numerical test (AssertionError)
+      # https://github.com/blackjax-devs/blackjax/issues/668
+      "test_chees_adaptation"
+    ];
+
+  pythonImportsCheck = [ "blackjax" ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://blackjax-devs.github.io/blackjax";
     description = "Sampling library designed for ease of use, speed and modularity";
     changelog = "https://github.com/blackjax-devs/blackjax/releases/tag/${version}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ bcdarwin ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ bcdarwin ];
   };
 }
diff --git a/pkgs/development/python-modules/blackrenderer/default.nix b/pkgs/development/python-modules/blackrenderer/default.nix
new file mode 100644
index 0000000000000..98e404c2dbd6f
--- /dev/null
+++ b/pkgs/development/python-modules/blackrenderer/default.nix
@@ -0,0 +1,61 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+  setuptools-scm,
+  fonttools,
+  uharfbuzz,
+  pycairo,
+  pillow,
+}:
+
+buildPythonPackage rec {
+  pname = "blackrenderer";
+  version = "0.6.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "BlackFoundryCom";
+    repo = "black-renderer";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-b2W0M32Y4HUyxObjvh0yMUBe5gfcSDXnw1GfhW7hoZk=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    fonttools
+    uharfbuzz
+  ];
+
+  optional-dependencies = {
+    cairo = [ pycairo ];
+  };
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pillow
+  ];
+
+  disabledTestPaths = [
+    # Wants None existing fonts
+    "Tests/test_mainprog.py"
+    "Tests/test_glyph_render.py"
+  ];
+
+  pythonImportsCheck = [ "blackrenderer" ];
+
+  meta = {
+    description = "Renderer for OpenType COLR fonts, with multiple backends";
+    homepage = "https://github.com/BlackFoundryCom/black-renderer";
+    changelog = "https://github.com/BlackFoundryCom/black-renderer/releases/tag/v${version}";
+    license = lib.licenses.asl20;
+    mainProgram = "blackrenderer";
+    maintainers = with lib.maintainers; [ jopejoe1 ];
+  };
+}
diff --git a/pkgs/development/python-modules/bleach-allowlist/default.nix b/pkgs/development/python-modules/bleach-allowlist/default.nix
index 96f9b6ccf4167..2ef358f71fa39 100644
--- a/pkgs/development/python-modules/bleach-allowlist/default.nix
+++ b/pkgs/development/python-modules/bleach-allowlist/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, bleach
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  bleach,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-VuIghgeaDmoxAK6Z5NuvIOslhUhlmOsOmUAIoRQo2ps=";
   };
 
-  propagatedBuildInputs = [
-    bleach
-  ];
+  propagatedBuildInputs = [ bleach ];
 
   # No tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/bleach/default.nix b/pkgs/development/python-modules/bleach/default.nix
index c1fb4d77e8061..00fcd0bf91257 100644
--- a/pkgs/development/python-modules/bleach/default.nix
+++ b/pkgs/development/python-modules/bleach/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, six
-, html5lib
-, setuptools
-, tinycss2
-, packaging
-, pythonOlder
-, webencodings
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  six,
+  html5lib,
+  setuptools,
+  tinycss2,
+  packaging,
+  pythonOlder,
+  webencodings,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-CjHxg3ljxB1Gu/EzG4d44TCOoHkdsDzE5zV7l89CqP4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     html5lib
@@ -36,26 +35,20 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    css = [
-      tinycss2
-    ];
+    css = [ tinycss2 ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Disable network tests
     "protocols"
   ];
 
-  pythonImportsCheck = [
-    "bleach"
-  ];
+  pythonImportsCheck = [ "bleach" ];
 
   meta = with lib; {
-    description = "An easy, HTML5, whitelisting HTML sanitizer";
+    description = "Easy, HTML5, whitelisting HTML sanitizer";
     longDescription = ''
       Bleach is an HTML sanitizing library that escapes or strips markup and
       attributes based on a white list. Bleach can also linkify text safely,
diff --git a/pkgs/development/python-modules/bleak-esphome/default.nix b/pkgs/development/python-modules/bleak-esphome/default.nix
index 0138f8b1d7f3d..c313abbe82607 100644
--- a/pkgs/development/python-modules/bleak-esphome/default.nix
+++ b/pkgs/development/python-modules/bleak-esphome/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aioesphomeapi
-, bleak
-, bluetooth-data-tools
-, buildPythonPackage
-, fetchFromGitHub
-, habluetooth
-, lru-dict
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aioesphomeapi,
+  bleak,
+  bluetooth-data-tools,
+  buildPythonPackage,
+  fetchFromGitHub,
+  habluetooth,
+  lru-dict,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
       --replace " --cov=bleak_esphome --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aioesphomeapi
@@ -48,9 +47,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "bleak_esphome"
-  ];
+  pythonImportsCheck = [ "bleak_esphome" ];
 
   meta = with lib; {
     description = "Bleak backend of ESPHome";
diff --git a/pkgs/development/python-modules/bleak/default.nix b/pkgs/development/python-modules/bleak/default.nix
index f53f614867ec1..aef8d84b43f14 100644
--- a/pkgs/development/python-modules/bleak/default.nix
+++ b/pkgs/development/python-modules/bleak/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, async-timeout
-, bluez
-, buildPythonPackage
-, dbus-fast
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  async-timeout,
+  bluez,
+  buildPythonPackage,
+  dbus-fast,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "bleak";
-  version = "0.21.1";
+  version = "0.22.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -22,7 +23,7 @@ buildPythonPackage rec {
     owner = "hbldh";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-T0im8zKyNLbskAEDeUUFS/daJtvttlHlttjscqP8iSk=";
+    hash = "sha256-O8EvF+saJ0UBZ8MESM5gIRmk2wbA4HUDADiVUtXzXrY=";
   };
 
   postPatch = ''
@@ -31,9 +32,7 @@ buildPythonPackage rec {
       --replace \"bluetoothctl\" \"${bluez}/bin/bluetoothctl\"
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     async-timeout
@@ -46,9 +45,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "bleak"
-  ];
+  pythonImportsCheck = [ "bleak" ];
 
   meta = with lib; {
     description = "Bluetooth Low Energy platform agnostic client";
diff --git a/pkgs/development/python-modules/blebox-uniapi/default.nix b/pkgs/development/python-modules/blebox-uniapi/default.nix
index 3381c0d1ccf84..ae3a63ac3ce83 100644
--- a/pkgs/development/python-modules/blebox-uniapi/default.nix
+++ b/pkgs/development/python-modules/blebox-uniapi/default.nix
@@ -1,18 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, aiohttp
-, semver
-, deepmerge
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  aiohttp,
+  semver,
+  deepmerge,
+  jmespath,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "blebox-uniapi";
-  version = "2.3.0";
+  version = "2.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -21,7 +23,7 @@ buildPythonPackage rec {
     owner = "blebox";
     repo = "blebox_uniapi";
     rev = "refs/tags/v${version}";
-    hash = "sha256-nqxbwHzx2cnojw/XX9XQoVvOCCd88tulY0m9xEHU3m4=";
+    hash = "sha256-johTs1AGvC6mGasK87ijhBNbHb1m36Ep9TR8XPG35d0=";
   };
 
   postPatch = ''
@@ -29,12 +31,11 @@ buildPythonPackage rec {
       --replace-fail "pytest-runner" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
+    jmespath
     semver
   ];
 
@@ -44,9 +45,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "blebox_uniapi"
-  ];
+  pythonImportsCheck = [ "blebox_uniapi" ];
 
   meta = with lib; {
     changelog = "https://github.com/blebox/blebox_uniapi/blob/v${version}/HISTORY.rst";
diff --git a/pkgs/development/python-modules/bless/default.nix b/pkgs/development/python-modules/bless/default.nix
index 3f24aef8bf539..f4352cba19789 100644
--- a/pkgs/development/python-modules/bless/default.nix
+++ b/pkgs/development/python-modules/bless/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, aioconsole
-, bleak
-, buildPythonPackage
-, dbus-next
-, fetchFromGitHub
-, numpy
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  aioconsole,
+  bleak,
+  buildPythonPackage,
+  dbus-next,
+  fetchFromGitHub,
+  numpy,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
     sed -i "/pysetupdi/d" setup.py
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     bleak
@@ -45,9 +44,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "bless"
-  ];
+  pythonImportsCheck = [ "bless" ];
 
   meta = with lib; {
     description = "Library for creating a BLE Generic Attribute Profile (GATT) server";
diff --git a/pkgs/development/python-modules/blessed/default.nix b/pkgs/development/python-modules/blessed/default.nix
index 70762d0c524a2..6bb56aaab30e4 100644
--- a/pkgs/development/python-modules/blessed/default.nix
+++ b/pkgs/development/python-modules/blessed/default.nix
@@ -1,5 +1,12 @@
-{ lib, buildPythonPackage, fetchPypi, six
-, wcwidth, pytest, mock, glibcLocales
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  wcwidth,
+  pytest,
+  mock,
+  glibcLocales,
 }:
 
 buildPythonPackage rec {
@@ -12,7 +19,11 @@ buildPythonPackage rec {
     hash = "sha256-LN1n+HRuBI8A30eiiA9NasvNs5kDG2BONLqPcdV4doA=";
   };
 
-  nativeCheckInputs = [ pytest mock glibcLocales ];
+  nativeCheckInputs = [
+    pytest
+    mock
+    glibcLocales
+  ];
 
   # Default tox.ini parameters not needed
   checkPhase = ''
@@ -20,11 +31,14 @@ buildPythonPackage rec {
     pytest
   '';
 
-  propagatedBuildInputs = [ wcwidth six ];
+  propagatedBuildInputs = [
+    wcwidth
+    six
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/jquast/blessed";
-    description = "A thin, practical wrapper around terminal capabilities in Python.";
+    description = "Thin, practical wrapper around terminal capabilities in Python";
     maintainers = with maintainers; [ eqyiel ];
     license = licenses.mit;
   };
diff --git a/pkgs/development/python-modules/blessings/default.nix b/pkgs/development/python-modules/blessings/default.nix
deleted file mode 100644
index d8c97d1e0f505..0000000000000
--- a/pkgs/development/python-modules/blessings/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-, nose
-}:
-
-buildPythonPackage rec {
-  pname = "blessings";
-  version = "1.7";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "98e5854d805f50a5b58ac2333411b0482516a8210f23f43308baeb58d77c157d";
-  };
-
-  # 4 failing tests, 2to3
-  doCheck = false;
-
-  propagatedBuildInputs = [ six ];
-  nativeCheckInputs = [ nose ];
-
-  checkPhase = ''
-    nosetests
-  '';
-
-  meta = with lib; {
-    homepage = "https://github.com/erikrose/blessings";
-    description = "A thin, practical wrapper around terminal coloring, styling, and positioning";
-    license = licenses.mit;
-    maintainers = with maintainers; [ domenkozar ];
-  };
-
-}
diff --git a/pkgs/development/python-modules/blinker/default.nix b/pkgs/development/python-modules/blinker/default.nix
index 2e5707d153890..c32e23e56a921 100644
--- a/pkgs/development/python-modules/blinker/default.nix
+++ b/pkgs/development/python-modules/blinker/default.nix
@@ -1,32 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build-system
-, flit-core
+  # build-system
+  flit-core,
 
-# tests
-, pytestCheckHook
-, pytest-asyncio
+  # tests
+  pytestCheckHook,
+  pytest-asyncio,
 }:
 
 buildPythonPackage rec {
   pname = "blinker";
-  version = "1.7.0";
+  version = "1.8.2";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-5oIP9vpOTR2OJ0fCKDdJw/VH5P7hErmFVc3NrjKZYYI=";
+    hash = "sha256-j3ewnTv3x5XpaelIbznCxenDnU7gdCS+K8WU7OlkLYM=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  pythonImportsCheck = [
-    "blinker"
-  ];
+  pythonImportsCheck = [ "blinker" ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -38,6 +35,6 @@ buildPythonPackage rec {
     description = "Fast Python in-process signal/event dispatching system";
     homepage = "https://github.com/pallets-eco/blinker/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/blinkpy/default.nix b/pkgs/development/python-modules/blinkpy/default.nix
index 4df10e61970c6..00c36c80de63c 100644
--- a/pkgs/development/python-modules/blinkpy/default.nix
+++ b/pkgs/development/python-modules/blinkpy/default.nix
@@ -1,20 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, aiofiles
-, aiohttp
-, pytestCheckHook
-, python-dateutil
-, python-slugify
-, pythonOlder
-, requests
-, setuptools
-, sortedcontainers
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  aiofiles,
+  aiohttp,
+  pytest-asyncio,
+  pytestCheckHook,
+  python-dateutil,
+  python-slugify,
+  pythonOlder,
+  requests,
+  setuptools,
+  sortedcontainers,
 }:
 
 buildPythonPackage rec {
   pname = "blinkpy";
-  version = "0.22.7";
+  version = "0.23.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -23,18 +26,24 @@ buildPythonPackage rec {
     owner = "fronzbot";
     repo = "blinkpy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-FfjvF6PBM+18JgQBP6vyElQYWMVizAEGk92ILwxpFSk=";
+    hash = "sha256-MWXOxE0nxBFhkAWjy7qFPhv4AO6VjGf+fAiyaWXeiX8=";
   };
 
+  patches = [
+    (fetchpatch2 {
+      # Fix tests with aiohttp 3.10+
+      url = "https://github.com/fronzbot/blinkpy/commit/e2c747b5ad295424b08ff4fb03204129155666fc.patch";
+      hash = "sha256-FapgAZcKBWqtAPjRl2uOFgnYPoWq6UU88XGLO7oCmDI=";
+    })
+  ];
+
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace ', "wheel~=0.40.0"' "" \
       --replace "setuptools~=68.0" "setuptools"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiofiles
@@ -46,6 +55,7 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
+    pytest-asyncio
     pytestCheckHook
   ];
 
diff --git a/pkgs/development/python-modules/blinkstick/default.nix b/pkgs/development/python-modules/blinkstick/default.nix
index da4e23e527b17..6e170382a01bd 100644
--- a/pkgs/development/python-modules/blinkstick/default.nix
+++ b/pkgs/development/python-modules/blinkstick/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pyusb }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyusb,
+}:
 
 buildPythonPackage rec {
   pname = "blinkstick";
@@ -23,6 +28,9 @@ buildPythonPackage rec {
     mainProgram = "blinkstick";
     homepage = "https://github.com/arvydas/blinkstick-python";
     license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ np perstark ];
+    maintainers = with lib.maintainers; [
+      np
+      perstark
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/blis/default.nix b/pkgs/development/python-modules/blis/default.nix
index 8b465bcebdc11..26cb315a62e04 100644
--- a/pkgs/development/python-modules/blis/default.nix
+++ b/pkgs/development/python-modules/blis/default.nix
@@ -1,34 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, cython_0
-, hypothesis
-, numpy
-, pytestCheckHook
-, pythonOlder
-, gitUpdater
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  cython,
+  hypothesis,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  blis,
+  numpy_2,
+  gitUpdater,
 }:
 
 buildPythonPackage rec {
   pname = "blis";
-  version = "0.7.11";
+  version = "1.0.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "explosion";
     repo = "cython-blis";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-p8pzGZc5OiiGTvXULDgzsBC3jIhovTKUq3RtPnQ/+to=";
+    rev = "refs/tags/release-v${version}";
+    hash = "sha256-8JaQgTda1EBiZdSrZtKwJ8e/aDENQ+dMmTiH/t1ax5I=";
   };
 
   postPatch = ''
+    # The commit pinning numpy to version 2 doesn't have any functional changes:
+    # https://github.com/explosion/cython-blis/pull/108
+    # BLIS should thus work with numpy and numpy_2.
+    substituteInPlace pyproject.toml setup.py \
+      --replace-fail "numpy>=2.0.0,<3.0.0" numpy
+
     # See https://github.com/numpy/numpy/issues/21079
     # has no functional difference as the name is only used in log output
     substituteInPlace blis/benchmark.py \
-      --replace 'numpy.__config__.blas_ilp64_opt_info["libraries"]' '["dummy"]'
+      --replace-fail 'numpy.__config__.blas_ilp64_opt_info["libraries"]' '["dummy"]'
   '';
 
   preCheck = ''
@@ -36,35 +45,34 @@ buildPythonPackage rec {
     rm -rf ./blis
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
-    cython_0
-  ];
-
-  propagatedBuildInputs = [
+    cython
     numpy
   ];
 
+  dependencies = [ numpy ];
+
   nativeCheckInputs = [
     hypothesis
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "blis"
-  ];
+  pythonImportsCheck = [ "blis" ];
 
   passthru = {
-    # Do not update to BLIS 0.9.x until the following issue is resolved:
-    # https://github.com/explosion/thinc/issues/771#issuecomment-1255825935
-    skipBulkUpdate = true;
+    tests = {
+      numpy_2 = blis.overridePythonAttrs (old: {
+        numpy = numpy_2;
+      });
+    };
     updateScript = gitUpdater {
-      rev-prefix = "v";
-      ignoredVersions = "0\.9\..*";
+      rev-prefix = "release-v";
     };
   };
 
   meta = with lib; {
+    changelog = "https://github.com/explosion/cython-blis/releases/tag/release-v${version}";
     description = "BLAS-like linear algebra library";
     homepage = "https://github.com/explosion/cython-blis";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/blobfile/default.nix b/pkgs/development/python-modules/blobfile/default.nix
index 039468acca4a8..3e4c1dc7da63c 100644
--- a/pkgs/development/python-modules/blobfile/default.nix
+++ b/pkgs/development/python-modules/blobfile/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, filelock
-, lxml
-, pycryptodomex
-, pythonOlder
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  filelock,
+  lxml,
+  pycryptodomex,
+  pythonOlder,
+  urllib3,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
   # Tests require a running Docker instance
   doCheck = false;
 
-  pythonImportsCheck = [
-    "blobfile"
-  ];
+  pythonImportsCheck = [ "blobfile" ];
 
   meta = with lib; {
     description = "Read Google Cloud Storage, Azure Blobs, and local paths with the same interface";
diff --git a/pkgs/development/python-modules/block-io/default.nix b/pkgs/development/python-modules/block-io/default.nix
index 6540ebe02eb8a..d3a7b7213d6b8 100644
--- a/pkgs/development/python-modules/block-io/default.nix
+++ b/pkgs/development/python-modules/block-io/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, fetchPypi
-, bitcoin-utils-fork-minimal
-, buildPythonPackage
-, base58
-, pycryptodome
-, requests
-, setuptools
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  bitcoin-utils-fork-minimal,
+  buildPythonPackage,
+  base58,
+  pycryptodome,
+  requests,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "block-io";
   version = "2.0.6";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
@@ -21,7 +22,11 @@ buildPythonPackage rec {
     hash = "sha256-M7czfpagXqoWWSu4enB3Z2hc2GtAaskI6cnJzJdpC8I=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  pythonRelaxDeps = [ "base58" ];
+
+  dependencies = [
     base58
     bitcoin-utils-fork-minimal
     pycryptodome
@@ -29,18 +34,11 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  preConfigure = ''
-    substituteInPlace setup.py \
-      --replace "base58==2.1.0" "base58>=2.1.0"
-  '';
-
   # Tests needs a BlockIO API key to run properly
   # https://github.com/BlockIo/block_io-python/blob/79006bc8974544b70a2d8e9f19c759941d32648e/test.py#L18
   doCheck = false;
 
-  pythonImportsCheck = [
-    "block_io"
-  ];
+  pythonImportsCheck = [ "block_io" ];
 
   meta = with lib; {
     description = "Integrate Bitcoin, Dogecoin and Litecoin in your Python applications using block.io";
diff --git a/pkgs/development/python-modules/blockchain/default.nix b/pkgs/development/python-modules/blockchain/default.nix
index 96c6f41741795..445836cda78d4 100644
--- a/pkgs/development/python-modules/blockchain/default.nix
+++ b/pkgs/development/python-modules/blockchain/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, future
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  future,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     substituteInPlace setup.py --replace "enum-compat" ""
   '';
 
-  propagatedBuildInputs = [
-    future
-  ];
+  propagatedBuildInputs = [ future ];
 
   # tests are interacting with the API and not mocking the calls
   doCheck = false;
diff --git a/pkgs/development/python-modules/blockdiag/default.nix b/pkgs/development/python-modules/blockdiag/default.nix
index 47b598b306cb8..5859e00c6cd80 100644
--- a/pkgs/development/python-modules/blockdiag/default.nix
+++ b/pkgs/development/python-modules/blockdiag/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, docutils
-, ephem
-, fetchFromGitHub
-, fetchpatch
-, funcparserlib
-, pillow
-, pynose
-, pytestCheckHook
-, pythonOlder
-, reportlab
-, setuptools
-, webcolors
+{
+  lib,
+  buildPythonPackage,
+  docutils,
+  ephem,
+  fetchFromGitHub,
+  fetchpatch,
+  fetchpatch2,
+  funcparserlib,
+  pillow,
+  pytestCheckHook,
+  pythonOlder,
+  reportlab,
+  setuptools,
+  webcolors,
 }:
 
 buildPythonPackage rec {
@@ -35,11 +36,22 @@ buildPythonPackage rec {
       url = "https://github.com/blockdiag/blockdiag/commit/20d780cad84e7b010066cb55f848477957870165.patch";
       hash = "sha256-t1zWFzAsLL2EUa0nD4Eui4Y5AhAZLRmp/yC9QpzzeUA=";
     })
+    # https://github.com/blockdiag/blockdiag/pull/175
+    (fetchpatch2 {
+      name = "migrate-to-pytest.patch";
+      url = "https://github.com/blockdiag/blockdiag/commit/4f4f726252084f17ecc6c524592222af09d37da4.patch";
+      hash = "sha256-OkfKJwJtb2DJRXE/8thYnisTFwcfstUFTTJHdM/qBzg=";
+    })
   ];
 
-  build-system = [
-    setuptools
-  ];
+  postPatch = ''
+    # requires network access the url-based icon
+    # and path-based icon is set to debian logo (/usr/share/pixmaps/debian-logo.png)
+    rm src/blockdiag/tests/diagrams/node_icon.diag
+    # note: this is a postPatch as `seqdiag` uses them directly
+  '';
+
+  build-system = [ setuptools ];
 
   dependencies = [
     docutils
@@ -51,22 +63,21 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     ephem
-    pynose
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "src/blockdiag/tests/"
-  ];
+  pytestFlagsArray = [ "src/blockdiag/tests/" ];
 
   disabledTests = [
     # Test require network access
     "test_app_cleans_up_images"
+    # DeprecationWarning in dependency: reportlab
+    "test_align_option_1"
+    # Comparison w/ magic values in test
+    "test_generate_with_separate"
   ];
 
-  pythonImportsCheck = [
-    "blockdiag"
-  ];
+  pythonImportsCheck = [ "blockdiag" ];
 
   meta = with lib; {
     description = "Generate block-diagram image from spec-text file (similar to Graphviz)";
diff --git a/pkgs/development/python-modules/blockfrost-python/default.nix b/pkgs/development/python-modules/blockfrost-python/default.nix
index a8da8d6e45cb6..7afc1b091952d 100644
--- a/pkgs/development/python-modules/blockfrost-python/default.nix
+++ b/pkgs/development/python-modules/blockfrost-python/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-# Python deps
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  # Python deps
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/blocksat-cli/default.nix b/pkgs/development/python-modules/blocksat-cli/default.nix
index bc260ee07ed11..fb1856f7a245e 100644
--- a/pkgs/development/python-modules/blocksat-cli/default.nix
+++ b/pkgs/development/python-modules/blocksat-cli/default.nix
@@ -1,21 +1,23 @@
-{ lib
-, buildPythonPackage
-, distro
-, fetchFromGitHub
-, pyasyncore
-, pysnmp
-, pytestCheckHook
-, python-gnupg
-, pythonAtLeast
-, pythonOlder
-, qrcode
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  distro,
+  fetchFromGitHub,
+  pyasyncore,
+  pysnmp,
+  pysnmplib,
+  pytestCheckHook,
+  python-gnupg,
+  pythonAtLeast,
+  pythonOlder,
+  qrcode,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "blocksat-cli";
-  version = "2.4.6";
+  version = "2.4.7";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,26 +26,23 @@ buildPythonPackage rec {
     owner = "Blockstream";
     repo = "satellite";
     rev = "refs/tags/v${version}";
-    hash = "sha256-1gz2lAS/AHeY54AaVXGeofLC68KjAP7POsIaBL3v2EY=";
+    hash = "sha256-OmIQUrUH3kWgf+v+9Hl2OgDdGPwb3guNY0+H64CWkeg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  pythonRelaxDeps = [ "pyasyncore" ];
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     distro
     pysnmp
+    pysnmplib
     python-gnupg
     qrcode
     requests
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    pyasyncore
-  ];
+  ] ++ lib.optionals (pythonAtLeast "3.12") [ pyasyncore ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     "test_monitor_get_stats"
@@ -51,16 +50,14 @@ buildPythonPackage rec {
     "test_erasure_recovery"
   ];
 
-  pythonImportsCheck = [
-    "blocksatcli"
-  ];
+  pythonImportsCheck = [ "blocksatcli" ];
 
   meta = with lib; {
     description = "Blockstream Satellite CLI";
-    mainProgram = "blocksat-cli";
     homepage = "https://github.com/Blockstream/satellite";
     changelog = "https://github.com/Blockstream/satellite/releases/tag/v${version}";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ prusnak ];
+    mainProgram = "blocksat-cli";
   };
 }
diff --git a/pkgs/development/python-modules/bloodhound-py/default.nix b/pkgs/development/python-modules/bloodhound-py/default.nix
index bf8fd3f942dec..f2e9555502741 100644
--- a/pkgs/development/python-modules/bloodhound-py/default.nix
+++ b/pkgs/development/python-modules/bloodhound-py/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, dnspython
-, fetchPypi
-, impacket
-, ldap3
-, pycryptodome
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  dnspython,
+  fetchPypi,
+  impacket,
+  ldap3,
+  pycryptodome,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-USZU19dLppoq19+JMFtiojyJk6bj96nP2JQDq7JFkHM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     dnspython
@@ -33,9 +32,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "bloodhound"
-  ];
+  pythonImportsCheck = [ "bloodhound" ];
 
   meta = with lib; {
     description = "Python based ingestor for BloodHound, based on Impacket";
diff --git a/pkgs/development/python-modules/bloodyad/default.nix b/pkgs/development/python-modules/bloodyad/default.nix
index 11d26f32fbae8..6e986b20840f4 100644
--- a/pkgs/development/python-modules/bloodyad/default.nix
+++ b/pkgs/development/python-modules/bloodyad/default.nix
@@ -1,19 +1,23 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, gssapi
-, hatchling
-, ldap3
-, pyasn1
-, pytestCheckHook
-, pythonOlder
-, winacl
+{
+  lib,
+  asn1crypto,
+  buildPythonPackage,
+  cryptography,
+  dnspython,
+  fetchFromGitHub,
+  gssapi,
+  hatchling,
+  ldap3,
+  msldap,
+  pyasn1,
+  pytestCheckHook,
+  pythonOlder,
+  winacl,
 }:
 
 buildPythonPackage rec {
   pname = "bloodyad";
-  version = "1.1.1";
+  version = "2.0.7";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -22,28 +26,25 @@ buildPythonPackage rec {
     owner = "CravateRouge";
     repo = "bloodyAD";
     rev = "refs/tags/v${version}";
-    hash = "sha256-wnq+HTAPnC7pSGI2iytSyHmdqtUq2pUnNwZnsGX8CL4=";
+    hash = "sha256-FfEOpu23dSanWQLw1c5TbYiD2oNT0voqJV0QvW2wksQ=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    asn1crypto
     cryptography
+    dnspython
     gssapi
     ldap3
+    msldap
     pyasn1
     winacl
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "bloodyAD"
-  ];
+  pythonImportsCheck = [ "bloodyAD" ];
 
   disabledTests = [
     # Tests require network access
diff --git a/pkgs/development/python-modules/blosc2/default.nix b/pkgs/development/python-modules/blosc2/default.nix
index efaec4ead7135..db948e8098bc2 100644
--- a/pkgs/development/python-modules/blosc2/default.nix
+++ b/pkgs/development/python-modules/blosc2/default.nix
@@ -1,31 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, cmake
-, cython
-, ninja
-, oldest-supported-numpy
-, pkg-config
-, scikit-build
-, setuptools
-, wheel
+  # build-system
+  cmake,
+  cython,
+  ninja,
+  oldest-supported-numpy,
+  pkg-config,
+  scikit-build,
+  setuptools,
+  wheel,
 
-# c library
-, c-blosc2
+  # c library
+  c-blosc2,
 
-# propagates
-, msgpack
-, ndindex
-, numpy
-, py-cpuinfo
-, rich
+  # propagates
+  msgpack,
+  ndindex,
+  numpy,
+  py-cpuinfo,
+  rich,
 
-# tests
-, psutil
-, pytestCheckHook
-, torch
+  # tests
+  psutil,
+  pytestCheckHook,
+  torch,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/bluecurrent-api/default.nix b/pkgs/development/python-modules/bluecurrent-api/default.nix
index 26c631706a177..a42998c1d3188 100644
--- a/pkgs/development/python-modules/bluecurrent-api/default.nix
+++ b/pkgs/development/python-modules/bluecurrent-api/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools
-, pytz
-, websockets
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  pytz,
+  websockets,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-mWRTSMS68+J1Z4PYOFF/UvofSqV1wv0gjiTACEWDfNg=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     pytz
diff --git a/pkgs/development/python-modules/bluemaestro-ble/default.nix b/pkgs/development/python-modules/bluemaestro-ble/default.nix
index d6eb12166a8ab..d1f8cbd912646 100644
--- a/pkgs/development/python-modules/bluemaestro-ble/default.nix
+++ b/pkgs/development/python-modules/bluemaestro-ble/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, bluetooth-data-tools
-, bluetooth-sensor-state-data
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, sensor-state-data
+{
+  lib,
+  bluetooth-data-tools,
+  bluetooth-sensor-state-data,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  sensor-state-data,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-mJ5JNGN4F9U3WMJQDwiZwuxE0zOirwo1sWF3/bVwXhY=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     bluetooth-data-tools
@@ -33,18 +32,14 @@ buildPythonPackage rec {
     sensor-state-data
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace " --cov=bluemaestro_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  pythonImportsCheck = [
-    "bluemaestro_ble"
-  ];
+  pythonImportsCheck = [ "bluemaestro_ble" ];
 
   meta = with lib; {
     description = "Library for bluemaestro BLE devices";
diff --git a/pkgs/development/python-modules/bluepy-devices/default.nix b/pkgs/development/python-modules/bluepy-devices/default.nix
index 45aa2f95c3e83..85bce7b2c85d4 100644
--- a/pkgs/development/python-modules/bluepy-devices/default.nix
+++ b/pkgs/development/python-modules/bluepy-devices/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, bluepy
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  bluepy,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -11,7 +12,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     pname = "bluepy_devices";
-    inherit  version;
+    inherit version;
     sha256 = "02zzzivxq2vifgs65m2rm8pqlsbzsbc419c032irzvfxjx539mr8";
   };
 
diff --git a/pkgs/development/python-modules/bluepy/default.nix b/pkgs/development/python-modules/bluepy/default.nix
index c0053a111415e..4a3256836c670 100644
--- a/pkgs/development/python-modules/bluepy/default.nix
+++ b/pkgs/development/python-modules/bluepy/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pkg-config
-, glib
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pkg-config,
+  glib,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/bluetooth-adapters/default.nix b/pkgs/development/python-modules/bluetooth-adapters/default.nix
index cf6924f2f3d67..4b56028b75d90 100644
--- a/pkgs/development/python-modules/bluetooth-adapters/default.nix
+++ b/pkgs/development/python-modules/bluetooth-adapters/default.nix
@@ -1,24 +1,26 @@
-{ lib
-, aiohttp
-, aiooui
-, async-timeout
-, bleak
-, buildPythonPackage
-, dbus-fast
-, fetchFromGitHub
-, mac-vendor-lookup
-, myst-parser
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, sphinx-rtd-theme
-, sphinxHook
-, usb-devices
+{
+  lib,
+  aiohttp,
+  aiooui,
+  async-timeout,
+  bleak,
+  buildPythonPackage,
+  dbus-fast,
+  fetchFromGitHub,
+  mac-vendor-lookup,
+  myst-parser,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  sphinx-rtd-theme,
+  sphinxHook,
+  uart-devices,
+  usb-devices,
 }:
 
 buildPythonPackage rec {
   pname = "bluetooth-adapters";
-  version = "0.18.0";
+  version = "0.19.4";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -27,7 +29,7 @@ buildPythonPackage rec {
     owner = "Bluetooth-Devices";
     repo = "bluetooth-adapters";
     rev = "refs/tags/v${version}";
-    hash = "sha256-KPmCOPCK7muT0qptJMKQwWU/6tvepkdHwlNYcrvpRLg=";
+    hash = "sha256-XpPC7FVWzdEki6kdZDu0vV7iD1DZzGbI1f9VKxsjKUQ=";
   };
 
   postPatch = ''
@@ -40,30 +42,27 @@ buildPythonPackage rec {
     "doc"
   ];
 
-  nativeBuildInputs = [
+  build-system = [
     myst-parser
     poetry-core
     sphinx-rtd-theme
     sphinxHook
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     aiooui
     async-timeout
     bleak
     dbus-fast
     mac-vendor-lookup
+    uart-devices
     usb-devices
   ];
 
-  pythonImportsCheck = [
-    "bluetooth_adapters"
-  ];
+  pythonImportsCheck = [ "bluetooth_adapters" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Tools to enumerate and find Bluetooth Adapters";
diff --git a/pkgs/development/python-modules/bluetooth-auto-recovery/default.nix b/pkgs/development/python-modules/bluetooth-auto-recovery/default.nix
index a3e137cae4937..861aaab2d138a 100644
--- a/pkgs/development/python-modules/bluetooth-auto-recovery/default.nix
+++ b/pkgs/development/python-modules/bluetooth-auto-recovery/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "bluetooth-auto-recovery";
-  version = "1.4.1";
+  version = "1.4.2";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "Bluetooth-Devices";
     repo = "bluetooth-auto-recovery";
     rev = "refs/tags/v${version}";
-    hash = "sha256-4LgEb90QsjTMsVat6fe9B3b6f93bHTgJgQNsRbyti2M=";
+    hash = "sha256-JaFazXjbHohj4+rPkQA/SaBP0irHrre3vaCqz7T2bwE=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/bluetooth-data-tools/default.nix b/pkgs/development/python-modules/bluetooth-data-tools/default.nix
index fbaf458be3f31..b50a20eb84bf9 100644
--- a/pkgs/development/python-modules/bluetooth-data-tools/default.nix
+++ b/pkgs/development/python-modules/bluetooth-data-tools/default.nix
@@ -1,54 +1,52 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cryptography
-, cython
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cryptography,
+  cython,
+  poetry-core,
+  pytest-benchmark,
+  pytest-cov-stub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "bluetooth-data-tools";
-  version = "1.19.0";
-  format = "pyproject";
+  version = "1.20.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "Bluetooth-Devices";
-    repo = pname;
+    repo = "bluetooth-data-tools";
     rev = "refs/tags/v${version}";
-    hash = "sha256-G345Nz0iVUQWOCEnf5UqUa49kAXCmNY22y4v+J2/G2Q=";
+    hash = "sha256-qg2QZc95DD2uTO0fTwoNaPfL+QSrcqDwJvx41lIZDRs=";
   };
 
   # The project can build both an optimized cython version and an unoptimized
   # python version. This ensures we fail if we build the wrong one.
   env.REQUIRE_CYTHON = 1;
 
-  nativeBuildInputs = [
+  build-system = [
     cython
     poetry-core
     setuptools
   ];
 
-  propagatedBuildInputs = [
-    cryptography
-  ];
+  dependencies = [ cryptography ];
 
   nativeCheckInputs = [
+    pytest-benchmark
+    pytest-cov-stub
     pytestCheckHook
   ];
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace " --cov=bluetooth_data_tools --cov-report=term-missing:skip-covered" ""
-  '';
+  pytestFlagsArray = [ "--benchmark-disable" ];
 
-  pythonImportsCheck = [
-    "bluetooth_data_tools"
-  ];
+  pythonImportsCheck = [ "bluetooth_data_tools" ];
 
   meta = with lib; {
     description = "Library for converting bluetooth data and packets";
diff --git a/pkgs/development/python-modules/bluetooth-sensor-state-data/default.nix b/pkgs/development/python-modules/bluetooth-sensor-state-data/default.nix
index a74769d0ec571..df2038a8e96c8 100644
--- a/pkgs/development/python-modules/bluetooth-sensor-state-data/default.nix
+++ b/pkgs/development/python-modules/bluetooth-sensor-state-data/default.nix
@@ -1,53 +1,49 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, home-assistant-bluetooth
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, sensor-state-data
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  home-assistant-bluetooth,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  sensor-state-data,
 }:
 
 buildPythonPackage rec {
   pname = "bluetooth-sensor-state-data";
-  version = "1.6.2";
-  format = "pyproject";
+  version = "1.7.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "Bluetooth-Devices";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-NC0l3wbQKz4MVM0kHbXBAUol74ir7V/JQgeYCVuyRs4=";
+    repo = "bluetooth-sensor-state-data";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-Gsg6Gbb+nvrKr7vn9zUuPTPtSjqFJyMk7oLt7LUUn5A=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail " --cov=bluetooth_sensor_state_data --cov-report=term-missing:skip-covered" ""
+  '';
+
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     home-assistant-bluetooth
     sensor-state-data
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace " --cov=bluetooth_sensor_state_data --cov-report=term-missing:skip-covered" ""
-  '';
-
-  pythonImportsCheck = [
-    "bluetooth_sensor_state_data"
-  ];
+  pythonImportsCheck = [ "bluetooth_sensor_state_data" ];
 
   meta = with lib; {
     description = "Models for storing and converting Bluetooth Sensor State Data";
     homepage = "https://github.com/bluetooth-devices/bluetooth-sensor-state-data";
-    license = with licenses; [ asl20 ];
+    changelog = "https://github.com/Bluetooth-Devices/bluetooth-sensor-state-data/releases/tag/v${version}";
+    license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/blurhash-python/default.nix b/pkgs/development/python-modules/blurhash-python/default.nix
index 2b0232a7e9b91..e8acda803941c 100644
--- a/pkgs/development/python-modules/blurhash-python/default.nix
+++ b/pkgs/development/python-modules/blurhash-python/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, cffi
-, pillow
-, pytestCheckHook
-, setuptools-scm
-, six
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  cffi,
+  pillow,
+  pytestCheckHook,
+  setuptools-scm,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -37,9 +38,7 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "blurhash" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = {
     description = "Compact representation of a placeholder for an image";
diff --git a/pkgs/development/python-modules/blurhash/default.nix b/pkgs/development/python-modules/blurhash/default.nix
index 08adb2b92b175..349687e30fe3b 100644
--- a/pkgs/development/python-modules/blurhash/default.nix
+++ b/pkgs/development/python-modules/blurhash/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pillow
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pillow,
+  numpy,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/bme280spi/default.nix b/pkgs/development/python-modules/bme280spi/default.nix
index 7747925a24785..4fb429cd6d925 100644
--- a/pkgs/development/python-modules/bme280spi/default.nix
+++ b/pkgs/development/python-modules/bme280spi/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, spidev
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  spidev,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     sha256 = "51682acefda6f29eaaf9f37815edbfdd48ef0e9f1509419eceafe7b440eddc6e";
   };
 
-  propagatedBuildInputs = [
-    spidev
-  ];
+  propagatedBuildInputs = [ spidev ];
 
   # no tests implemented
   doCheck = false;
diff --git a/pkgs/development/python-modules/bme680/default.nix b/pkgs/development/python-modules/bme680/default.nix
index 955eee09cdeff..3d1a3c0cd2339 100644
--- a/pkgs/development/python-modules/bme680/default.nix
+++ b/pkgs/development/python-modules/bme680/default.nix
@@ -1,41 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, smbus-cffi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  hatchling,
+  hatch-fancy-pypi-readme,
+
+  # dependencies
+  smbus2,
+
+  # checks
+  mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "bme680";
-  version = "1.1.1";
-  format = "setuptools";
+  version = "2.0.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pimoroni";
     repo = "bme680-python";
-    rev = "v${version}";
-    hash = "sha256-gmdRxMJ0DoCyNcb/bYp746PBi4HktHAAYOcSQJ0Uheg=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-ep0dnok/ycEoUAnOK4QmdqdO0r4ttzSoqHDl7aPengE=";
   };
 
-  propagatedBuildInputs = [
-    smbus-cffi
+  build-system = [
+    hatchling
+    hatch-fancy-pypi-readme
   ];
 
-  preBuild = ''
-    cd library
-  '';
+  dependencies = [ smbus2 ];
 
   nativeCheckInputs = [
     mock
     pytestCheckHook
   ];
 
-  postPatch = ''
-    substituteInPlace library/setup.cfg \
-      --replace "smbus" "smbus-cffi"
-  '';
-
   pythonImportsCheck = [ "bme680" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/bnnumerizer/default.nix b/pkgs/development/python-modules/bnnumerizer/default.nix
index c3beaa01cf129..f4303af27ed1a 100644
--- a/pkgs/development/python-modules/bnnumerizer/default.nix
+++ b/pkgs/development/python-modules/bnnumerizer/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/bnunicodenormalizer/default.nix b/pkgs/development/python-modules/bnunicodenormalizer/default.nix
index 19aa011d3782b..a3a53f7c0091b 100644
--- a/pkgs/development/python-modules/bnunicodenormalizer/default.nix
+++ b/pkgs/development/python-modules/bnunicodenormalizer/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "bnunicodenormalizer";
-  version = "0.1.6";
+  version = "0.1.7";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-qVC6+0SnAs25DFzKPHFUOoYPlrRvkGWFptjIVom8wJM=";
+    hash = "sha256-hqNInMgcc9KvtOJlvS0Ni8UvyKI3TiEMiZ4CYJQLwJE=";
   };
 
   nativeCheckInputs = [ pytestCheckHook ];
diff --git a/pkgs/development/python-modules/boa-api/default.nix b/pkgs/development/python-modules/boa-api/default.nix
index d96b64522622c..2d6ea217cb95b 100644
--- a/pkgs/development/python-modules/boa-api/default.nix
+++ b/pkgs/development/python-modules/boa-api/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
   # upstream has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "boaapi"
-  ];
+  pythonImportsCheck = [ "boaapi" ];
 
   meta = {
     homepage = "https://github.com/boalang/api-python";
diff --git a/pkgs/development/python-modules/boiboite-opener-framework/default.nix b/pkgs/development/python-modules/boiboite-opener-framework/default.nix
index e7a0b017f405f..9be58802c5e36 100644
--- a/pkgs/development/python-modules/boiboite-opener-framework/default.nix
+++ b/pkgs/development/python-modules/boiboite-opener-framework/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, packaging
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, scapy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  packaging,
+  pytestCheckHook,
+  pythonOlder,
+  scapy,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "boiboite-opener-framework";
   version = "1.2.1";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -22,23 +23,18 @@ buildPythonPackage rec {
     hash = "sha256-atKqHRX24UjF/9Dy0aYXAN+80nBJKCd07FmaR5Vl1q4=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "scapy==2.5.0rc1" "scapy"
-  '';
+  pythonRelaxDeps = [ "scapy" ];
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     packaging
     scapy
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "bof"
-  ];
+  pythonImportsCheck = [ "bof" ];
 
   disabledTests = [
     # Tests are using netcat and cat to do UDP connections
@@ -75,5 +71,6 @@ buildPythonPackage rec {
     changelog = "https://github.com/Orange-Cyberdefense/bof/releases/tag/${version}";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ fab ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/python-modules/boilerpy3/default.nix b/pkgs/development/python-modules/boilerpy3/default.nix
index ef2980959d0b0..47afb1abe6b94 100644
--- a/pkgs/development/python-modules/boilerpy3/default.nix
+++ b/pkgs/development/python-modules/boilerpy3/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 let
@@ -27,7 +28,6 @@ buildPythonPackage {
       --replace '>=3.6.*' '>=3.6'
   '';
 
-
   pythonImportsCheck = [ "boilerpy3" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/bokeh/default.nix b/pkgs/development/python-modules/bokeh/default.nix
index 63fa524f9fa30..62c537e8de7ac 100644
--- a/pkgs/development/python-modules/bokeh/default.nix
+++ b/pkgs/development/python-modules/bokeh/default.nix
@@ -1,68 +1,66 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, fetchFromGitHub
-, pythonOlder
-, substituteAll
-, colorama
-, contourpy
-, jinja2
-, mock
-, numpy
-, nodejs
-, packaging
-, pandas
-, pillow
-, tornado
-, pytestCheckHook
-, pyyaml
-, setuptools
-, setuptools-git-versioning
-, xyzservices
-, beautifulsoup4
-, channels
-, click
-, colorcet
-, coverage
-, firefox
-, geckodriver
-, isort
-, json5
-, nbconvert
-, networkx
-, psutil
-, pygments
-, pygraphviz
-, pytest
-, pytest-asyncio
-, pytest-xdist
-, pytest-timeout
-, requests
-, scipy
-, selenium
-, toml
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchFromGitHub,
+  pythonOlder,
+  substituteAll,
+  colorama,
+  contourpy,
+  jinja2,
+  numpy,
+  nodejs,
+  packaging,
+  pandas,
+  pillow,
+  tornado,
+  pytestCheckHook,
+  pyyaml,
+  setuptools,
+  xyzservices,
+  beautifulsoup4,
+  channels,
+  click,
+  colorcet,
+  coverage,
+  firefox,
+  geckodriver,
+  isort,
+  json5,
+  nbconvert,
+  networkx,
+  psutil,
+  pygments,
+  pygraphviz,
+  pytest,
+  pytest-asyncio,
+  pytest-xdist,
+  pytest-timeout,
+  requests,
+  scipy,
+  selenium,
+  toml,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "bokeh";
   # update together with panel which is not straightforward
-  version = "3.3.4";
-  format = "pyproject";
+  version = "3.5.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-c7eYLcK43xW/Zgzd3I04JegpGVxDgBWl0Jgk8acCg2g=";
+    hash = "sha256-A6VKZ9tne4iBg0JxxiCngbODrlk69cPqIUkWR1REDQc=";
   };
 
   src_test = fetchFromGitHub {
     owner = "bokeh";
-    repo = pname;
+    repo = "bokeh";
     rev = "refs/tags/${version}";
-    hash = "sha256-PK9iLOCcivr4oF9Riq73dzxGfxzWRk3bdrCCpRrTv5g=";
+    hash = "sha256-MAv+6bwc5f+jZasRDsYTJ/ir0i1pYCuwqPMumsYWvws=";
   };
 
   patches = [
@@ -73,11 +71,16 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail ', "setuptools-git-versioning"' "" \
+      --replace-fail 'dynamic = ["version"]' 'version = "${version}"'
+  '';
+
+  build-system = [
     colorama
     nodejs
     setuptools
-    setuptools-git-versioning
   ];
 
   nativeCheckInputs = [
@@ -107,7 +110,7 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     jinja2
     contourpy
     numpy
diff --git a/pkgs/development/python-modules/bokeh/hardcode-nodejs-npmjs-paths.patch b/pkgs/development/python-modules/bokeh/hardcode-nodejs-npmjs-paths.patch
index 4ebfc7e3f2d63..6dcec9ae51777 100644
--- a/pkgs/development/python-modules/bokeh/hardcode-nodejs-npmjs-paths.patch
+++ b/pkgs/development/python-modules/bokeh/hardcode-nodejs-npmjs-paths.patch
@@ -1,14 +1,15 @@
-diff -ru a/src/bokeh/util/compiler.py b/src/bokeh/util/compiler.py
+diff --git a/src/bokeh/util/compiler.py b/src/bokeh/util/compiler.py
+index 4f4314ac8..726610f4c 100644
 --- a/src/bokeh/util/compiler.py
 +++ b/src/bokeh/util/compiler.py
-@@ -411,8 +411,8 @@
+@@ -411,8 +411,8 @@ def _detect_nodejs() -> Path:
      raise RuntimeError(f'node.js v{version_repr} or higher is needed to allow compilation of custom models ' +
                         '("conda install nodejs" or follow https://nodejs.org/en/download/)')
  
--_nodejs = None
--_npmjs = None
+-_nodejs: Path | None = None
+-_npmjs: Path | None = None
 +_nodejs = "@node_bin@"
 +_npmjs = "@npm_bin@"
  
- def _nodejs_path() -> str:
+ def _nodejs_path() -> Path:
      global _nodejs
diff --git a/pkgs/development/python-modules/boltons/default.nix b/pkgs/development/python-modules/boltons/default.nix
index 2046daf9297f9..06906435d850d 100644
--- a/pkgs/development/python-modules/boltons/default.nix
+++ b/pkgs/development/python-modules/boltons/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-Ie5CPT2u/2/hAIhDzXT6CPzJwmbgt3B6q3oxqKYb27o=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Tests bind to localhost
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [
-    "boltons"
-  ];
+  pythonImportsCheck = [ "boltons" ];
 
   meta = with lib; {
     description = "Constructs, recipes, and snippets extending the Python standard library";
diff --git a/pkgs/development/python-modules/boltztrap2/default.nix b/pkgs/development/python-modules/boltztrap2/default.nix
index f53d49af8d519..a9a437af05ff8 100644
--- a/pkgs/development/python-modules/boltztrap2/default.nix
+++ b/pkgs/development/python-modules/boltztrap2/default.nix
@@ -1,22 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, spglib
-, numpy
-, scipy
-, matplotlib
-, ase
-, netcdf4
-, pytest
-, pythonOlder
-, cython
-, cmake
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  spglib,
+  numpy,
+  scipy,
+  matplotlib,
+  ase,
+  netcdf4,
+  pythonOlder,
+  cython,
+  cmake,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "boltztrap2";
   version = "24.1.1";
-  format = "setuptools";
+
+  pyproject = true;
+  build-system = [ setuptools ];
 
   disabled = pythonOlder "3.5";
 
@@ -26,6 +29,11 @@ buildPythonPackage rec {
     hash = "sha256-kgv4lPBxcBmRKihaTwPRz8bHTWAWUOGZADtJUb3y+C4=";
   };
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace-fail "USE_CYTHON = False" "USE_CYTHON = True"
+  '';
+
   dontUseCmakeConfigure = true;
 
   nativeBuildInputs = [
@@ -33,7 +41,7 @@ buildPythonPackage rec {
     cython
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     spglib
     numpy
     scipy
@@ -45,15 +53,13 @@ buildPythonPackage rec {
   # pypi release does no include files for tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "BoltzTraP2"
-  ];
+  pythonImportsCheck = [ "BoltzTraP2" ];
 
   meta = with lib; {
     description = "Band-structure interpolator and transport coefficient calculator";
     mainProgram = "btp2";
     homepage = "http://www.boltztrap.org/";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/bond-api/default.nix b/pkgs/development/python-modules/bond-api/default.nix
index e326688501e02..2131fa0bfb2d6 100644
--- a/pkgs/development/python-modules/bond-api/default.nix
+++ b/pkgs/development/python-modules/bond-api/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, aiohttp
-, aioresponses
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  aiohttp,
+  aioresponses,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-+87/j94eHyW3EMMBK+aXaNTVoNxsixeLusyBsPWa9yM=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   nativeCheckInputs = [
     aioresponses
@@ -32,9 +31,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "bond_api"
-  ];
+  pythonImportsCheck = [ "bond_api" ];
 
   meta = with lib; {
     description = "Asynchronous Python wrapper library over Bond Local API";
diff --git a/pkgs/development/python-modules/bond-async/default.nix b/pkgs/development/python-modules/bond-async/default.nix
index 1278315d78cce..49e7cb3515183 100644
--- a/pkgs/development/python-modules/bond-async/default.nix
+++ b/pkgs/development/python-modules/bond-async/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, aiohttp
-, aioresponses
-, orjson
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  aiohttp,
+  aioresponses,
+  orjson,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -35,9 +36,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "bond_async"
-  ];
+  pythonImportsCheck = [ "bond_async" ];
 
   meta = with lib; {
     description = "Asynchronous Python wrapper library over Bond Local API";
diff --git a/pkgs/development/python-modules/bonsai/default.nix b/pkgs/development/python-modules/bonsai/default.nix
index 43c88c1c73a5c..0f2c5f180f05b 100644
--- a/pkgs/development/python-modules/bonsai/default.nix
+++ b/pkgs/development/python-modules/bonsai/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, cyrus_sasl
-, openldap
-, gevent
-, tornado
-, trio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  cyrus_sasl,
+  openldap,
+  gevent,
+  tornado,
+  trio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "bonsai";
-  version = "1.5.2";
+  version = "1.5.3";
 
   disabled = pythonOlder "3.8";
 
@@ -23,12 +24,10 @@ buildPythonPackage rec {
     owner = "noirello";
     repo = "bonsai";
     rev = "v${version}";
-    hash = "sha256-h/PbwQ69fDcmUCazMtxXP1iE0fE1on+WoK+wYgQ9jLs=";
+    hash = "sha256-SAP/YeWqow5dqXlXDzjnTWIfJhMwVeZSSUfWr1Mgmng=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   buildInputs = [
     cyrus_sasl
@@ -41,9 +40,7 @@ buildPythonPackage rec {
     trio = [ trio ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # requires running LDAP server
diff --git a/pkgs/development/python-modules/boolean-py/default.nix b/pkgs/development/python-modules/boolean-py/default.nix
index 47afe1ef02b64..fde29936132f0 100644
--- a/pkgs/development/python-modules/boolean-py/default.nix
+++ b/pkgs/development/python-modules/boolean-py/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,18 +20,14 @@ buildPythonPackage rec {
     hash = "sha256-i6aNzGDhZip9YHXLiuh9crGm2qT2toBU2xze4PDLleg=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "boolean"
-  ];
+  pythonImportsCheck = [ "boolean" ];
 
   meta = with lib; {
     description = "Implements boolean algebra in one module";
     homepage = "https://github.com/bastikr/boolean.py";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/booleanoperations/default.nix b/pkgs/development/python-modules/booleanoperations/default.nix
index 4d96bb7612ed8..ca2518dbb4ea7 100644
--- a/pkgs/development/python-modules/booleanoperations/default.nix
+++ b/pkgs/development/python-modules/booleanoperations/default.nix
@@ -1,6 +1,14 @@
-{ lib, buildPythonPackage, fetchPypi
-, fonttools, fs, pyclipper, defcon, fontpens
-, setuptools-scm, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fonttools,
+  fs,
+  pyclipper,
+  defcon,
+  fontpens,
+  setuptools-scm,
+  pytest,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/boost-histogram/default.nix b/pkgs/development/python-modules/boost-histogram/default.nix
index 14eeb53c93f25..de4224d13ee78 100644
--- a/pkgs/development/python-modules/boost-histogram/default.nix
+++ b/pkgs/development/python-modules/boost-histogram/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, boost
-, numpy
-, pytestCheckHook
-, pytest-benchmark
-, setuptools-scm
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
+  boost,
+  numpy,
+  pytestCheckHook,
+  pytest-benchmark,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -22,17 +23,11 @@ buildPythonPackage rec {
     hash = "sha256-lxRvc19GfVBpdqBH8/I3zlmECpUv0jH19DH4l/sAbN0=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    boost
-  ];
+  buildInputs = [ boost ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/bootstrap/build/default.nix b/pkgs/development/python-modules/bootstrap/build/default.nix
index f4e49bd65605c..0d693e2dde58b 100644
--- a/pkgs/development/python-modules/bootstrap/build/default.nix
+++ b/pkgs/development/python-modules/bootstrap/build/default.nix
@@ -1,46 +1,51 @@
-{ lib
-, stdenv
-, python
-, build
-, flit-core
-, installer
-, packaging
-, pyproject-hooks
-, tomli
-, makeWrapper
+{
+  stdenv,
+  python,
+  build,
+  flit-core,
+  installer,
+  packaging,
+  pyproject-hooks,
+  tomli,
+  makeWrapper,
 }:
 let
-  buildBootstrapPythonModule = basePackage: attrs: stdenv.mkDerivation ({
-    pname = "${python.libPrefix}-bootstrap-${basePackage.pname}";
-    inherit (basePackage) version src meta;
+  buildBootstrapPythonModule =
+    basePackage: attrs:
+    stdenv.mkDerivation (
+      {
+        pname = "${python.libPrefix}-bootstrap-${basePackage.pname}";
+        inherit (basePackage) version src meta;
 
-    nativeBuildInputs = [ makeWrapper ];
+        nativeBuildInputs = [ makeWrapper ];
 
-    buildPhase = ''
-      runHook preBuild
+        buildPhase = ''
+          runHook preBuild
 
-      PYTHONPATH="${flit-core}/${python.sitePackages}" \
-        ${python.interpreter} -m flit_core.wheel
+          PYTHONPATH="${flit-core}/${python.sitePackages}" \
+            ${python.interpreter} -m flit_core.wheel
 
-      runHook postBuild
-    '';
+          runHook postBuild
+        '';
 
-    installPhase = ''
-      runHook preInstall
+        installPhase = ''
+          runHook preInstall
 
-      PYTHONPATH="${installer}/${python.sitePackages}" \
-        ${python.interpreter} -m installer \
-          --destdir "$out" --prefix "" dist/*.whl
+          PYTHONPATH="${installer}/${python.sitePackages}" \
+            ${python.interpreter} -m installer \
+              --destdir "$out" --prefix "" dist/*.whl
 
-      runHook postInstall
-    '';
-  } // attrs);
+          runHook postInstall
+        '';
+      }
+      // attrs
+    );
 
-  bootstrap-packaging = buildBootstrapPythonModule packaging {};
+  bootstrap-packaging = buildBootstrapPythonModule packaging { };
 
-  bootstrap-pyproject-hooks = buildBootstrapPythonModule pyproject-hooks {};
+  bootstrap-pyproject-hooks = buildBootstrapPythonModule pyproject-hooks { };
 
-  bootstrap-tomli = buildBootstrapPythonModule tomli {};
+  bootstrap-tomli = buildBootstrapPythonModule tomli { };
 
   sitePkgs = python.sitePackages;
 in
diff --git a/pkgs/development/python-modules/bootstrap/flit-core/default.nix b/pkgs/development/python-modules/bootstrap/flit-core/default.nix
index 43fec03901cd8..bdd4a0f535ff8 100644
--- a/pkgs/development/python-modules/bootstrap/flit-core/default.nix
+++ b/pkgs/development/python-modules/bootstrap/flit-core/default.nix
@@ -1,12 +1,17 @@
-{ lib
-, stdenv
-, python
-, flit-core
+{
+  stdenv,
+  python,
+  flit-core,
 }:
 
 stdenv.mkDerivation rec {
   pname = "${python.libPrefix}-bootstrap-${flit-core.pname}";
-  inherit (flit-core) version src patches meta;
+  inherit (flit-core)
+    version
+    src
+    patches
+    meta
+    ;
 
   sourceRoot = "${src.name}/flit_core";
 
diff --git a/pkgs/development/python-modules/bootstrap/installer/default.nix b/pkgs/development/python-modules/bootstrap/installer/default.nix
index a3944ba395003..9f396bb6275ab 100644
--- a/pkgs/development/python-modules/bootstrap/installer/default.nix
+++ b/pkgs/development/python-modules/bootstrap/installer/default.nix
@@ -1,13 +1,18 @@
-{ lib
-, stdenv
-, python
-, flit-core
-, installer
+{
+  stdenv,
+  python,
+  flit-core,
+  installer,
 }:
 
 stdenv.mkDerivation {
   pname = "${python.libPrefix}-bootstrap-${installer.pname}";
-  inherit (installer) version src patches meta;
+  inherit (installer)
+    version
+    src
+    patches
+    meta
+    ;
 
   buildPhase = ''
     runHook preBuild
diff --git a/pkgs/development/python-modules/bootstrap/packaging/default.nix b/pkgs/development/python-modules/bootstrap/packaging/default.nix
index f8a10d4ddd121..8f429e5f5c652 100644
--- a/pkgs/development/python-modules/bootstrap/packaging/default.nix
+++ b/pkgs/development/python-modules/bootstrap/packaging/default.nix
@@ -1,8 +1,9 @@
-{ stdenv
-, python
-, flit-core
-, installer
-, packaging
+{
+  stdenv,
+  python,
+  flit-core,
+  installer,
+  packaging,
 }:
 
 stdenv.mkDerivation {
diff --git a/pkgs/development/python-modules/borb/default.nix b/pkgs/development/python-modules/borb/default.nix
index e1d2211f2ab31..589eedcab9bfa 100644
--- a/pkgs/development/python-modules/borb/default.nix
+++ b/pkgs/development/python-modules/borb/default.nix
@@ -1,30 +1,38 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchPypi
-, fonttools
-, lxml
-, pillow
-, python-barcode
-, pythonOlder
-, qrcode
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  fonttools,
+  lxml,
+  matplotlib,
+  pandas,
+  pillow,
+  python-barcode,
+  pythonOlder,
+  qrcode,
+  pytestCheckHook,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "borb";
-  version = "2.1.22";
-  format = "setuptools";
+  version = "2.1.25";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-T+uSq/KF3p4zJJhQeompJIJ6BWhYFK9Ko9w0sZFtFhE=";
+  src = fetchFromGitHub {
+    owner = "jorisschellekens";
+    repo = "borb";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-eVxpcYL3ZgwidkSt6tUav3Bkne4lo1QCshdUFqkA0wI=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     cryptography
     fonttools
     lxml
@@ -35,17 +43,31 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  pythonImportsCheck = [
-    "borb.pdf"
+  nativeCheckInputs = [
+    matplotlib
+    pandas
+    pytestCheckHook
   ];
 
-  doCheck = false;
+  pythonImportsCheck = [ "borb.pdf" ];
+
+  disabledTests = [
+    "test_code_files_are_small "
+    "test_image_has_pdfobject_methods"
+  ];
+
+  disabledTestPaths = [
+    # Tests require network access
+    "tests/pdf/"
+    "tests/toolkit/"
+    "tests/license/"
+  ];
 
-  meta = with lib; {
+  meta = {
     description = "Library for reading, creating and manipulating PDF files in Python";
     homepage = "https://borbpdf.com/";
     changelog = "https://github.com/jorisschellekens/borb/releases/tag/v${version}";
-    license = licenses.agpl3Only;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.agpl3Only;
+    maintainers = with lib.maintainers; [ getchoo ];
   };
 }
diff --git a/pkgs/development/python-modules/bork/default.nix b/pkgs/development/python-modules/bork/default.nix
index 578c218372b5a..9da54dc1ec691 100644
--- a/pkgs/development/python-modules/bork/default.nix
+++ b/pkgs/development/python-modules/bork/default.nix
@@ -1,22 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools
-, build
-, coloredlogs
-, packaging
-, pip
-, readme-renderer
-, toml
-, twine
+{
+  lib,
+  buildPythonPackage,
+  callPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+
+  setuptools,
+  build,
+  coloredlogs,
+  importlib-metadata,
+  packaging,
+  pip,
+  toml,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "bork";
-  version = "8.0.0";
+  version = "9.0.0";
   pyproject = true;
   disabled = pythonOlder "3.8";
 
@@ -24,19 +26,15 @@ buildPythonPackage rec {
     owner = "duckinator";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-BDwVhKmZ/F8CvpT6dEI5moQZx8wHy1TwdOl889XogEo=";
+    hash = "sha256-YqvtOwd00TXD4I3fIQolvjHnjREvQgbdrEO9Z96v1Kk=";
   };
 
   build-system = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
   pythonRelaxDeps = [
     "packaging"
-    "readme-renderer"
-    "twine"
-    "wheel"
   ];
 
   dependencies = [
@@ -44,11 +42,10 @@ buildPythonPackage rec {
     coloredlogs
     packaging
     pip
-    readme-renderer
-    twine
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    toml
-  ];
+    urllib3
+  ] ++ lib.optionals (pythonOlder "3.11") [ toml ]
+    ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ]
+  ;
 
   pythonImportsCheck = [
     "bork"
@@ -56,24 +53,22 @@ buildPythonPackage rec {
     "bork.cli"
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "-m 'not network'"
-  ];
+  pytestFlagsArray = [ "-m 'not network'" ];
 
   disabledTests = [
     # tries to call python -m bork
     "test_repo"
   ];
 
+  passthru.tests = callPackage ./tests.nix { };
+
   meta = with lib; {
     description = "Python build and release management tool";
     mainProgram = "bork";
     homepage = "https://github.com/duckinator/bork";
+    license = licenses.mit;
     maintainers = with maintainers; [ nicoo ];
-    platforms = platforms.all;
   };
 }
diff --git a/pkgs/development/python-modules/bork/tests.nix b/pkgs/development/python-modules/bork/tests.nix
new file mode 100644
index 0000000000000..7d5c84f2bc35c
--- /dev/null
+++ b/pkgs/development/python-modules/bork/tests.nix
@@ -0,0 +1,28 @@
+{
+  testers,
+
+  bork,
+  cacert,
+  git,
+  pytest,
+}:
+{
+  # a.k.a. `tests.testers.runCommand.bork`
+  pytest-network = testers.runCommand {
+    name = "bork-pytest-network";
+    nativeBuildInputs = [
+      bork
+      cacert
+      git
+      pytest
+    ];
+    script = ''
+      # Copy the source tree over, and make it writeable
+      cp -r ${bork.src} bork/
+      find -type d -exec chmod 0755 '{}' '+'
+
+      pytest -v -m network bork/
+      touch $out
+    '';
+  };
+}
diff --git a/pkgs/development/python-modules/boschshcpy/default.nix b/pkgs/development/python-modules/boschshcpy/default.nix
index 14e04b17f6042..ba4c5d9e9e206 100644
--- a/pkgs/development/python-modules/boschshcpy/default.nix
+++ b/pkgs/development/python-modules/boschshcpy/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, getmac
-, pythonOlder
-, requests
-, setuptools
-, zeroconf
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  getmac,
+  pythonOlder,
+  requests,
+  setuptools,
+  zeroconf,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-lQDYJrla2iDk1MbLHjBGP3ZcZ1djD3bWhz15RaBFMgg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     cryptography
@@ -37,9 +36,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "boschshcpy"
-  ];
+  pythonImportsCheck = [ "boschshcpy" ];
 
   meta = with lib; {
     description = "Python module to work with the Bosch Smart Home Controller API";
diff --git a/pkgs/development/python-modules/boto/0005-Don-t-mock-list-subclass.patch b/pkgs/development/python-modules/boto/0005-Don-t-mock-list-subclass.patch
deleted file mode 100644
index 4add58640d7ae..0000000000000
--- a/pkgs/development/python-modules/boto/0005-Don-t-mock-list-subclass.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From: Jochen Sprickerhof <jspricke@debian.org>
-Date: Thu, 15 Dec 2022 07:44:54 +0100
-Subject: Don't mock list subclass
-
----
- tests/unit/ec2/test_volume.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tests/unit/ec2/test_volume.py b/tests/unit/ec2/test_volume.py
-index 81d7f55..d4d8e4f 100644
---- a/tests/unit/ec2/test_volume.py
-+++ b/tests/unit/ec2/test_volume.py
-@@ -55,7 +55,7 @@ class VolumeTests(unittest.TestCase):
-     @mock.patch("boto.resultset.ResultSet")
-     def test_startElement_with_name_tagSet_calls_ResultSet(self, ResultSet, startElement):
-         startElement.return_value = None
--        result_set = mock.Mock(ResultSet([("item", Tag)]))
-+        result_set = ResultSet([("item", Tag)])
-         volume = Volume()
-         volume.tags = result_set
-         retval = volume.startElement("tagSet", None, None)
diff --git a/pkgs/development/python-modules/boto/bug-953970_python3.8-compat.patch b/pkgs/development/python-modules/boto/bug-953970_python3.8-compat.patch
deleted file mode 100644
index ac56210423753..0000000000000
--- a/pkgs/development/python-modules/boto/bug-953970_python3.8-compat.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-Index: python-boto/tests/unit/utils/test_utils.py
-===================================================================
---- python-boto.orig/tests/unit/utils/test_utils.py
-+++ python-boto/tests/unit/utils/test_utils.py
-@@ -85,7 +85,7 @@ class TestPassword(unittest.TestCase):
-         def hmac_hashfunc(cls, msg):
-             if not isinstance(msg, bytes):
-                 msg = msg.encode('utf-8')
--            return hmac.new(b'mysecretkey', msg)
-+            return hmac.new(b'mysecretkey', msg, digestmod='sha256')
-
-         class HMACPassword(Password):
-             hashfunc = hmac_hashfunc
-@@ -95,15 +95,15 @@ class TestPassword(unittest.TestCase):
-         password.set('foo')
-
-         self.assertEquals(str(password),
--                          hmac.new(b'mysecretkey', b'foo').hexdigest())
-+                          hmac.new(b'mysecretkey', b'foo', digestmod='sha256').hexdigest())
-
-     def test_constructor(self):
--        hmac_hashfunc = lambda msg: hmac.new(b'mysecretkey', msg)
-+        hmac_hashfunc = lambda msg: hmac.new(b'mysecretkey', msg, digestmod='sha256')
-
-         password = Password(hashfunc=hmac_hashfunc)
-         password.set('foo')
-         self.assertEquals(password.str,
--                          hmac.new(b'mysecretkey', b'foo').hexdigest())
-+                          hmac.new(b'mysecretkey', b'foo', digestmod='sha256').hexdigest())
-
-
- class TestPythonizeName(unittest.TestCase):
-Index: python-boto/boto/ecs/item.py
-===================================================================
---- python-boto.orig/boto/ecs/item.py
-+++ python-boto/boto/ecs/item.py
-@@ -22,6 +22,7 @@
-
- import xml.sax
- import cgi
-+from html import escape
- from boto.compat import six, StringIO
-
- class ResponseGroup(xml.sax.ContentHandler):
-@@ -67,7 +68,7 @@ class ResponseGroup(xml.sax.ContentHandl
-         return None
-
-     def endElement(self, name, value, connection):
--        self._xml.write("%s</%s>" % (cgi.escape(value).replace("&amp;amp;", "&amp;"), name))
-+        self._xml.write("%s</%s>" % (escape(value).replace("&amp;amp;", "&amp;"), name))
-         if len(self._nodepath) == 0:
-             return
-         obj = None
diff --git a/pkgs/development/python-modules/boto/default.nix b/pkgs/development/python-modules/boto/default.nix
deleted file mode 100644
index b31d6d13c527a..0000000000000
--- a/pkgs/development/python-modules/boto/default.nix
+++ /dev/null
@@ -1,57 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonAtLeast
-, python
-, nose
-, mock
-, requests
-, httpretty
-}:
-
-buildPythonPackage rec {
-  pname = "boto";
-  version = "2.49.0";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "ea0d3b40a2d852767be77ca343b58a9e3a4b00d9db440efb8da74b4e58025e5a";
-  };
-
-  patches = [
-    # fixes hmac tests
-    # https://sources.debian.org/src/python-boto/2.49.0-4/debian/patches/bug-953970_python3.8-compat.patch/
-    ./bug-953970_python3.8-compat.patch
-    # fixes test_startElement_with_name_tagSet_calls_ResultSet
-    # https://sources.debian.org/src/python-boto/2.49.0-4.1/debian/patches/0005-Don-t-mock-list-subclass.patch/
-    ./0005-Don-t-mock-list-subclass.patch
-  ];
-
-  # boto is deprecated by upstream as of 2021-05-27 (https://github.com/boto/boto/commit/4980ac58764c3d401cb0b9552101f9c61c18f445)
-  # this patch is a bit simpler than https://github.com/boto/boto/pull/3898
-  # as we don't have to take care of pythonOlder "3.3".
-  postPatch = ''
-    substituteInPlace boto/dynamodb/types.py --replace 'from collections import Mapping' 'from collections.abc import Mapping'
-    substituteInPlace boto/mws/connection.py --replace 'import collections' 'import collections.abc as collections'
-  '';
-
-  checkPhase = ''
-    ${python.interpreter} tests/test.py default
-  '';
-
-  nativeCheckInputs = [ nose mock ];
-  propagatedBuildInputs = [ requests httpretty ];
-
-  meta = with lib; {
-    homepage = "https://github.com/boto/boto";
-    license = licenses.mit;
-    description = "Python interface to Amazon Web Services";
-    longDescription = ''
-      The boto module is an integrated interface to current and
-      future infrastructural services offered by Amazon Web
-      Services.  This includes S3, SQS, EC2, among others.
-    '';
-    maintainers = [ ];
-  };
-}
diff --git a/pkgs/development/python-modules/boto3-stubs/default.nix b/pkgs/development/python-modules/boto3-stubs/default.nix
index 1d7e839665c9a..d5c4c1f37efc9 100644
--- a/pkgs/development/python-modules/boto3-stubs/default.nix
+++ b/pkgs/development/python-modules/boto3-stubs/default.nix
@@ -9,7 +9,6 @@
   mypy-boto3-account,
   mypy-boto3-acm,
   mypy-boto3-acm-pca,
-  mypy-boto3-alexaforbusiness,
   mypy-boto3-amp,
   mypy-boto3-amplify,
   mypy-boto3-amplifybackend,
@@ -36,7 +35,6 @@
   mypy-boto3-autoscaling-plans,
   mypy-boto3-backup,
   mypy-boto3-backup-gateway,
-  mypy-boto3-backupstorage,
   mypy-boto3-batch,
   mypy-boto3-billingconductor,
   mypy-boto3-braket,
@@ -137,7 +135,6 @@
   mypy-boto3-frauddetector,
   mypy-boto3-fsx,
   mypy-boto3-gamelift,
-  mypy-boto3-gamesparks,
   mypy-boto3-glacier,
   mypy-boto3-globalaccelerator,
   mypy-boto3-glue,
@@ -148,7 +145,6 @@
   mypy-boto3-guardduty,
   mypy-boto3-health,
   mypy-boto3-healthlake,
-  mypy-boto3-honeycode,
   mypy-boto3-iam,
   mypy-boto3-identitystore,
   mypy-boto3-imagebuilder,
@@ -159,7 +155,6 @@
   mypy-boto3-iot,
   mypy-boto3-iot-data,
   mypy-boto3-iot-jobs-data,
-  mypy-boto3-iot-roborunner,
   mypy-boto3-iot1click-devices,
   mypy-boto3-iot1click-projects,
   mypy-boto3-iotanalytics,
@@ -207,7 +202,6 @@
   mypy-boto3-lookoutvision,
   mypy-boto3-m2,
   mypy-boto3-machinelearning,
-  mypy-boto3-macie,
   mypy-boto3-macie2,
   mypy-boto3-managedblockchain,
   mypy-boto3-managedblockchain-query,
@@ -232,7 +226,6 @@
   mypy-boto3-migrationhub-config,
   mypy-boto3-migrationhuborchestrator,
   mypy-boto3-migrationhubstrategy,
-  mypy-boto3-mobile,
   mypy-boto3-mq,
   mypy-boto3-mturk,
   mypy-boto3-mwaa,
@@ -366,7 +359,7 @@
 
 buildPythonPackage rec {
   pname = "boto3-stubs";
-  version = "1.34.96";
+  version = "1.34.160";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -374,7 +367,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "boto3_stubs";
     inherit version;
-    hash = "sha256-gkpimXGE45wP34h7JCxEodaauH4hVMKzHVDGSvqKT8U=";
+    hash = "sha256-xrHf6zyuZz7tWW8BQJM54uC5VaUkGhbO5p8pMD2bN94=";
   };
 
   build-system = [ setuptools ];
@@ -390,13 +383,11 @@ buildPythonPackage rec {
     account = [ mypy-boto3-account ];
     acm = [ mypy-boto3-acm ];
     acm-pca = [ mypy-boto3-acm-pca ];
-    alexaforbusiness = [ mypy-boto3-alexaforbusiness ];
     all = [
       mypy-boto3-accessanalyzer
       mypy-boto3-account
       mypy-boto3-acm
       mypy-boto3-acm-pca
-      mypy-boto3-alexaforbusiness
       mypy-boto3-amp
       mypy-boto3-amplify
       mypy-boto3-amplifybackend
@@ -423,7 +414,6 @@ buildPythonPackage rec {
       mypy-boto3-autoscaling-plans
       mypy-boto3-backup
       mypy-boto3-backup-gateway
-      mypy-boto3-backupstorage
       mypy-boto3-batch
       mypy-boto3-billingconductor
       mypy-boto3-braket
@@ -524,7 +514,6 @@ buildPythonPackage rec {
       mypy-boto3-frauddetector
       mypy-boto3-fsx
       mypy-boto3-gamelift
-      mypy-boto3-gamesparks
       mypy-boto3-glacier
       mypy-boto3-globalaccelerator
       mypy-boto3-glue
@@ -535,7 +524,6 @@ buildPythonPackage rec {
       mypy-boto3-guardduty
       mypy-boto3-health
       mypy-boto3-healthlake
-      mypy-boto3-honeycode
       mypy-boto3-iam
       mypy-boto3-identitystore
       mypy-boto3-imagebuilder
@@ -546,7 +534,6 @@ buildPythonPackage rec {
       mypy-boto3-iot
       mypy-boto3-iot-data
       mypy-boto3-iot-jobs-data
-      mypy-boto3-iot-roborunner
       mypy-boto3-iot1click-devices
       mypy-boto3-iot1click-projects
       mypy-boto3-iotanalytics
@@ -594,7 +581,6 @@ buildPythonPackage rec {
       mypy-boto3-lookoutvision
       mypy-boto3-m2
       mypy-boto3-machinelearning
-      mypy-boto3-macie
       mypy-boto3-macie2
       mypy-boto3-managedblockchain
       mypy-boto3-managedblockchain-query
@@ -619,7 +605,6 @@ buildPythonPackage rec {
       mypy-boto3-migrationhub-config
       mypy-boto3-migrationhuborchestrator
       mypy-boto3-migrationhubstrategy
-      mypy-boto3-mobile
       mypy-boto3-mq
       mypy-boto3-mturk
       mypy-boto3-mwaa
@@ -772,7 +757,6 @@ buildPythonPackage rec {
     autoscaling-plans = [ mypy-boto3-autoscaling-plans ];
     backup = [ mypy-boto3-backup ];
     backup-gateway = [ mypy-boto3-backup-gateway ];
-    backupstorage = [ mypy-boto3-backupstorage ];
     batch = [ mypy-boto3-batch ];
     billingconductor = [ mypy-boto3-billingconductor ];
     boto3 = [
@@ -886,7 +870,6 @@ buildPythonPackage rec {
     frauddetector = [ mypy-boto3-frauddetector ];
     fsx = [ mypy-boto3-fsx ];
     gamelift = [ mypy-boto3-gamelift ];
-    gamesparks = [ mypy-boto3-gamesparks ];
     glacier = [ mypy-boto3-glacier ];
     globalaccelerator = [ mypy-boto3-globalaccelerator ];
     glue = [ mypy-boto3-glue ];
@@ -897,7 +880,6 @@ buildPythonPackage rec {
     guardduty = [ mypy-boto3-guardduty ];
     health = [ mypy-boto3-health ];
     healthlake = [ mypy-boto3-healthlake ];
-    honeycode = [ mypy-boto3-honeycode ];
     iam = [ mypy-boto3-iam ];
     identitystore = [ mypy-boto3-identitystore ];
     imagebuilder = [ mypy-boto3-imagebuilder ];
@@ -908,7 +890,6 @@ buildPythonPackage rec {
     iot = [ mypy-boto3-iot ];
     iot-data = [ mypy-boto3-iot-data ];
     iot-jobs-data = [ mypy-boto3-iot-jobs-data ];
-    iot-roborunner = [ mypy-boto3-iot-roborunner ];
     iot1click-devices = [ mypy-boto3-iot1click-devices ];
     iot1click-projects = [ mypy-boto3-iot1click-projects ];
     iotanalytics = [ mypy-boto3-iotanalytics ];
@@ -956,7 +937,6 @@ buildPythonPackage rec {
     lookoutvision = [ mypy-boto3-lookoutvision ];
     m2 = [ mypy-boto3-m2 ];
     machinelearning = [ mypy-boto3-machinelearning ];
-    macie = [ mypy-boto3-macie ];
     macie2 = [ mypy-boto3-macie2 ];
     managedblockchain = [ mypy-boto3-managedblockchain ];
     managedblockchain-query = [ mypy-boto3-managedblockchain-query ];
@@ -981,7 +961,6 @@ buildPythonPackage rec {
     migrationhub-config = [ mypy-boto3-migrationhub-config ];
     migrationhuborchestrator = [ mypy-boto3-migrationhuborchestrator ];
     migrationhubstrategy = [ mypy-boto3-migrationhubstrategy ];
-    mobile = [ mypy-boto3-mobile ];
     mq = [ mypy-boto3-mq ];
     mturk = [ mypy-boto3-mturk ];
     mwaa = [ mypy-boto3-mwaa ];
diff --git a/pkgs/development/python-modules/boto3/default.nix b/pkgs/development/python-modules/boto3/default.nix
index e8ce2d73f11bb..f6998d6400a26 100644
--- a/pkgs/development/python-modules/boto3/default.nix
+++ b/pkgs/development/python-modules/boto3/default.nix
@@ -1,19 +1,19 @@
-{ lib
-, botocore
-, buildPythonPackage
-, fetchFromGitHub
-, jmespath
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, s3transfer
-, setuptools
+{
+  lib,
+  botocore,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jmespath,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  s3transfer,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "boto3";
-  version = "1.34.58"; # N.B: if you change this, change botocore and awscli to a matching version
+  inherit (botocore) version; # N.B: botocore, boto3, awscli needs to be updated in lockstep, bump botocore version for updating these.
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -22,17 +22,14 @@ buildPythonPackage rec {
     owner = "boto";
     repo = "boto3";
     rev = "refs/tags/${version}";
-    hash = "sha256-2L4pHjrDoy7dPZm0nx+NXZV/K3ZVx7FrNGYZTMrwAs4=";
+    hash = "sha256-fiUguOzNF9T3CcGD1mYl2b5QFbvBG8wNOd3Or2NR66E=";
   };
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
-  pythonRelaxDeps = [
-    "s3transfer"
-  ];
+  pythonRelaxDeps = [ "s3transfer" ];
 
   propagatedBuildInputs = [
     botocore
@@ -45,9 +42,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "boto3"
-  ];
+  pythonImportsCheck = [ "boto3" ];
 
   disabledTestPaths = [
     # Integration tests require networking
@@ -55,9 +50,7 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    crt = [
-      botocore.optional-dependencies.crt
-    ];
+    crt = [ botocore.optional-dependencies.crt ];
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/botocore-stubs/default.nix b/pkgs/development/python-modules/botocore-stubs/default.nix
index 4d1960ebe115e..980ab48730625 100644
--- a/pkgs/development/python-modules/botocore-stubs/default.nix
+++ b/pkgs/development/python-modules/botocore-stubs/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, poetry-core
-, pythonOlder
-, types-awscrt
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  pythonOlder,
+  types-awscrt,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "botocore-stubs";
-  version = "1.34.94";
+  version = "1.34.160";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -17,21 +18,17 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "botocore_stubs";
     inherit version;
-    hash = "sha256-ZNgKNGfjsZk56cJ1CvMzKLMIf49SSZjb337RaCJ/UH0=";
+    hash = "sha256-kAlT8/km0gVQV3ZTX9ExBH74lRlzTx5TZdA+y67FPNk=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     types-awscrt
     typing-extensions
   ];
 
-  pythonImportsCheck = [
-    "botocore-stubs"
-  ];
+  pythonImportsCheck = [ "botocore-stubs" ];
 
   meta = with lib; {
     description = "Type annotations and code completion for botocore";
diff --git a/pkgs/development/python-modules/botocore/default.nix b/pkgs/development/python-modules/botocore/default.nix
index f956687016ef6..68a1ae7c68dce 100644
--- a/pkgs/development/python-modules/botocore/default.nix
+++ b/pkgs/development/python-modules/botocore/default.nix
@@ -1,35 +1,32 @@
-{ lib
-, awscrt
-, buildPythonPackage
-, fetchPypi
-, jmespath
-, jsonschema
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools
-, urllib3
+{
+  lib,
+  awscrt,
+  buildPythonPackage,
+  fetchPypi,
+  jmespath,
+  jsonschema,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  setuptools,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "botocore";
-  version = "1.34.58"; # N.B: if you change this, change boto3 and awscli to a matching version
+  version = "1.34.131"; # N.B: if you change this, change boto3 and awscli to a matching version
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-11IWlSiG3FE+obXil5pq8I/u0vU34/wQLkoKLq1WOjU=";
+    hash = "sha256-UC3a/h1if88eTAB8hkVOXdAR26fFi9jopTaKefPjh9w=";
   };
 
-  pythonRelaxDeps = [
-    "urllib3"
-  ];
+  pythonRelaxDeps = [ "urllib3" ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -52,18 +49,14 @@ buildPythonPackage rec {
     "tests/functional"
   ];
 
-  pythonImportsCheck = [
-    "botocore"
-  ];
+  pythonImportsCheck = [ "botocore" ];
 
   passthru.optional-dependencies = {
-    crt = [
-      awscrt
-    ];
+    crt = [ awscrt ];
   };
 
   meta = with lib; {
-    description = "A low-level interface to a growing number of Amazon Web Services";
+    description = "Low-level interface to a growing number of Amazon Web Services";
     homepage = "https://github.com/boto/botocore";
     changelog = "https://github.com/boto/botocore/blob/${version}/CHANGELOG.rst";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/botorch/default.nix b/pkgs/development/python-modules/botorch/default.nix
index e816099087585..7a860437c1b89 100644
--- a/pkgs/development/python-modules/botorch/default.nix
+++ b/pkgs/development/python-modules/botorch/default.nix
@@ -1,39 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, gpytorch
-, linear-operator
-, multipledispatch
-, pyro-ppl
-, setuptools
-, setuptools-scm
-, wheel
-, torch
-, scipy
-, pytestCheckHook
-, pythonRelaxDepsHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gpytorch,
+  linear-operator,
+  multipledispatch,
+  pyro-ppl,
+  setuptools,
+  setuptools-scm,
+  torch,
+  scipy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "botorch";
-  version = "0.10.0";
-  format = "pyproject";
+  version = "0.11.3";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pytorch";
-    repo = pname;
+    repo = "botorch";
     rev = "refs/tags/v${version}";
-    hash = "sha256-IaFtQWrgOhVHDOiPQ4oG8l+Q0igWamYVWEReGccbVoI=";
+    hash = "sha256-AtRU5KC8KlkxMCU0OUAHDFK7BsPO3TbRmmzDGV7+yVk=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
+  build-system = [
     setuptools
     setuptools-scm
-    wheel
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     gpytorch
     linear-operator
     multipledispatch
@@ -43,15 +41,32 @@ buildPythonPackage rec {
   ];
 
   pythonRelaxDeps = [
+    "gpytorch"
     "linear-operator"
   ];
 
-  checkInputs = [
-    pytestCheckHook
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pytestFlagsArray = [
+    # tests tend to get stuck on busy hosts, increase verbosity to find out
+    # which specific tests get stuck
+    "-vvv"
   ];
+
+  disabledTests =
+    [ "test_all_cases_covered" ]
+    ++ lib.optionals (stdenv.buildPlatform.system == "x86_64-linux") [
+      # stuck tests on hydra
+      "test_moo_predictive_entropy_search"
+    ];
+
   pythonImportsCheck = [ "botorch" ];
 
+  # needs lots of undisturbed CPU time or prone to getting stuck
+  requiredSystemFeatures = [ "big-parallel" ];
+
   meta = with lib; {
+    changelog = "https://github.com/pytorch/botorch/blob/${src.rev}/CHANGELOG.md";
     description = "Bayesian Optimization in PyTorch";
     homepage = "https://botorch.org";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/bottle/default.nix b/pkgs/development/python-modules/bottle/default.nix
index 8e89ce8d14cc3..2b7bff14c0075 100644
--- a/pkgs/development/python-modules/bottle/default.nix
+++ b/pkgs/development/python-modules/bottle/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pytestCheckHook
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
@@ -16,37 +17,35 @@ buildPythonPackage rec {
     hash = "sha256-4anJSXCubXELP7RSYpTf64byy0qB7/OkuY3ED7Dl4CE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     cd test
   '';
 
-  disabledTests = [
-    "test_delete_cookie"
-    "test_error"
-    "test_error_in_generator_callback"
-    # timing sensitive
-    "test_ims"
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    # https://github.com/bottlepy/bottle/issues/1422
-    # ModuleNotFoundError: No module named 'bottle.ext'
-    "test_data_import"
-    "test_direkt_import"
-    "test_from_import"
-  ];
+  disabledTests =
+    [
+      "test_delete_cookie"
+      "test_error"
+      "test_error_in_generator_callback"
+      # timing sensitive
+      "test_ims"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      # https://github.com/bottlepy/bottle/issues/1422
+      # ModuleNotFoundError: No module named 'bottle.ext'
+      "test_data_import"
+      "test_direkt_import"
+      "test_from_import"
+    ];
 
   __darwinAllowLocalNetworking = true;
 
   meta = with lib; {
     homepage = "https://bottlepy.org/";
-    description = "A fast and simple micro-framework for small web-applications";
+    description = "Fast and simple micro-framework for small web-applications";
     mainProgram = "bottle.py";
     downloadPage = "https://github.com/bottlepy/bottle";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/bottleneck/default.nix b/pkgs/development/python-modules/bottleneck/default.nix
index 677b4a9903622..18aa852cd73b3 100644
--- a/pkgs/development/python-modules/bottleneck/default.nix
+++ b/pkgs/development/python-modules/bottleneck/default.nix
@@ -1,49 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, pytestCheckHook
-, python
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  pytestCheckHook,
+  python,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "bottleneck";
-  version = "1.3.8";
+  version = "1.4.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    pname = "Bottleneck";
-    inherit version;
-    hash = "sha256-Z4DYlpabp/U8iZW6kMh8VIvrPbQ13JDGC5oQ7Rq02Gg=";
+    inherit pname version;
+    hash = "sha256-vrNt9Rm4cJ59NXwMljmwO4hcpjVbv15TdSxoXeUWBbg=";
   };
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "$out/${python.sitePackages}"
-  ];
+  pytestFlagsArray = [ "$out/${python.sitePackages}" ];
 
-  disabledTests = [
-    "test_make_c_files"
-  ];
+  disabledTests = [ "test_make_c_files" ];
 
-  pythonImportsCheck = [
-    "bottleneck"
-  ];
+  pythonImportsCheck = [ "bottleneck" ];
 
   meta = with lib; {
     description = "Fast NumPy array functions";
     homepage = "https://github.com/pydata/bottleneck";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/bottombar/default.nix b/pkgs/development/python-modules/bottombar/default.nix
index ab7a9b06d64f4..227e00d66e546 100644
--- a/pkgs/development/python-modules/bottombar/default.nix
+++ b/pkgs/development/python-modules/bottombar/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
 }:
 
 buildPythonPackage rec {
@@ -16,16 +17,12 @@ buildPythonPackage rec {
     hash = "sha256-W+Cbcgb664nVT/nsFdDruT688JWG2NZnF5hDDezTgnw=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   # The package only has some "interactive" tests where a user must check for
   # the correct output and hit enter after every check
   doCheck = false;
-  pythonImportsCheck = [
-    "bottombar"
-  ];
+  pythonImportsCheck = [ "bottombar" ];
 
   meta = with lib; {
     description = "Context manager that prints a status line at the bottom of a terminal window";
diff --git a/pkgs/development/python-modules/boxx/default.nix b/pkgs/development/python-modules/boxx/default.nix
index a42cc2c0ee55e..1a0821f7d5fb5 100644
--- a/pkgs/development/python-modules/boxx/default.nix
+++ b/pkgs/development/python-modules/boxx/default.nix
@@ -1,32 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, xvfb-run
-, matplotlib
-, scikit-image
-, numpy
-, pandas
-, imageio
-, snakeviz
-, fn
-, pyopengl
-, seaborn
-, torch
-, pythonOlder
-, torchvision
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  xvfb-run,
+  matplotlib,
+  scikit-image,
+  numpy,
+  pandas,
+  imageio,
+  snakeviz,
+  fn,
+  pyopengl,
+  seaborn,
+  torch,
+  pythonOlder,
+  torchvision,
 }:
 
 buildPythonPackage rec {
   pname = "boxx";
-  version = "0.10.13";
+  version = "0.10.14";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Z1mmNTGjK77GNdlYAXQzp+9Z7TeiKZGvio4SXGwgOPk=";
+    hash = "sha256-unGnmPksEuqFXHTWJkj9Gv2G/qPDgT6AZXYiG2gtkEA=";
   };
 
   propagatedBuildInputs = [
@@ -47,9 +48,7 @@ buildPythonPackage rec {
     torchvision
   ];
 
-  pythonImportsCheck = [
-    "boxx"
-  ];
+  pythonImportsCheck = [ "boxx" ];
 
   checkPhase = ''
     xvfb-run ${python.interpreter} -m unittest
diff --git a/pkgs/development/python-modules/bpemb/default.nix b/pkgs/development/python-modules/bpemb/default.nix
index ab6d5357e53b0..03f4ae1cd2160 100644
--- a/pkgs/development/python-modules/bpemb/default.nix
+++ b/pkgs/development/python-modules/bpemb/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-, setuptools
-
-, gensim
-, numpy
-, requests
-, sentencepiece
-, tqdm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  setuptools,
+
+  gensim,
+  numpy,
+  requests,
+  sentencepiece,
+  tqdm,
 }:
 
 buildPythonPackage {
@@ -23,9 +24,7 @@ buildPythonPackage {
     hash = "sha256-nVaMXb5TBhO/vWE8AYAA3P9dSPI8O+rmzFvbEj8VEkE=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     gensim
@@ -38,9 +37,7 @@ buildPythonPackage {
   # need network connection for tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "bpemb"
-  ];
+  pythonImportsCheck = [ "bpemb" ];
 
   meta = with lib; {
     description = "Byte-pair embeddings in 275 languages";
diff --git a/pkgs/development/python-modules/bpycv/default.nix b/pkgs/development/python-modules/bpycv/default.nix
index 84085488ae4c1..e4ad37696e257 100644
--- a/pkgs/development/python-modules/bpycv/default.nix
+++ b/pkgs/development/python-modules/bpycv/default.nix
@@ -1,20 +1,17 @@
-{ stdenv
-, lib
-, beautifulsoup4
-, blender
-, boxx
-, bpycv
-, buildPythonPackage
-, fetchFromGitHub
-, fetchPypi
-, fetchurl
-, minexr
-, opencv4
-, python3Packages
-, requests
-, runCommand
-, writeText
-, zcs
+{
+  stdenv,
+  lib,
+  beautifulsoup4,
+  blender,
+  boxx,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchPypi,
+  minexr,
+  opencv4,
+  requests,
+  runCommand,
+  zcs,
 }:
 
 buildPythonPackage rec {
@@ -44,16 +41,19 @@ buildPythonPackage rec {
   doCheck = false;
 
   passthru.tests = {
-    render = runCommand "bpycv-render-test" {
-      BPY_EXAMPLE_DATA = fetchFromGitHub {
-        owner = "DIYer22";
-        repo = "bpycv_example_data";
-        hash = "sha256-dGb6KvbXTGTu5f4AqhA+i4AwTqBoR5SdXk0vsMEcD3Q=";
-        rev = "6ce0e65c107d572011394da16ffdf851e988dbb4";
-      };
-    } ''
-      ${blender.withPackages (ps: [ps.bpycv])}/bin/blender-wrapped -b -P ${./bpycv-test.py}
-    '';
+    render =
+      runCommand "bpycv-render-test"
+        {
+          BPY_EXAMPLE_DATA = fetchFromGitHub {
+            owner = "DIYer22";
+            repo = "bpycv_example_data";
+            hash = "sha256-dGb6KvbXTGTu5f4AqhA+i4AwTqBoR5SdXk0vsMEcD3Q=";
+            rev = "6ce0e65c107d572011394da16ffdf851e988dbb4";
+          };
+        }
+        ''
+          ${blender.withPackages (ps: [ ps.bpycv ])}/bin/blender-wrapped -b -P ${./bpycv-test.py}
+        '';
   };
 
   meta = with lib; {
@@ -61,7 +61,7 @@ buildPythonPackage rec {
     homepage = "https://github.com/DIYer22/bpycv";
     license = licenses.mit;
     maintainers = [ maintainers.lucasew ];
-    broken = stdenv.isAarch64;
+    broken = stdenv.hostPlatform.isAarch64;
     inherit (blender.meta) platforms;
   };
 }
diff --git a/pkgs/development/python-modules/bpylist2/default.nix b/pkgs/development/python-modules/bpylist2/default.nix
new file mode 100644
index 0000000000000..7becd01e194bf
--- /dev/null
+++ b/pkgs/development/python-modules/bpylist2/default.nix
@@ -0,0 +1,39 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+}:
+
+buildPythonPackage {
+  pname = "bpylist2";
+  version = "4.1.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "parabolala";
+    repo = "bpylist2";
+    rev = "ddb89e0b0301c6b298de6469221d99b5fe127b58";
+    hash = "sha256-OBwDQZL5++LZgpQM96tmplAh1Pjme3KGSNFTKqKUn00=";
+  };
+
+  build-system = [ poetry-core ];
+
+  pythonImportsCheck = [ "bpylist2" ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace-fail "--pycodestyle" "" \
+      --replace-fail "--pylint --pylint-rcfile=pylint.rc" "" \
+      --replace-fail "--mypy" ""
+  '';
+
+  meta = {
+    description = "Parse and Generate binary plists and NSKeyedArchiver archives";
+    license = lib.licenses.mit;
+    homepage = "https://github.com/parabolala/bpylist2";
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/bpython/default.nix b/pkgs/development/python-modules/bpython/default.nix
index beb3d86cb70ce..15f562185e1ba 100644
--- a/pkgs/development/python-modules/bpython/default.nix
+++ b/pkgs/development/python-modules/bpython/default.nix
@@ -1,20 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, curtsies
-, cwcwidth
-, greenlet
-, jedi
-, pygments
-, pytestCheckHook
-, pythonOlder
-, pyperclip
-, pyxdg
-, requests
-, substituteAll
-, typing-extensions
-, urwid
-, watchdog
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  curtsies,
+  cwcwidth,
+  greenlet,
+  jedi,
+  pygments,
+  pytestCheckHook,
+  pythonOlder,
+  pyperclip,
+  pyxdg,
+  requests,
+  typing-extensions,
+  urwid,
+  watchdog,
 }:
 
 buildPythonPackage rec {
@@ -48,13 +48,9 @@ buildPythonPackage rec {
       --replace "Exec=/usr/bin/bpython" "Exec=$out/bin/bpython"
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "bpython"
-  ];
+  pythonImportsCheck = [ "bpython" ];
 
   disabledTests = [
     # Check for syntax error ends with an AssertionError
@@ -62,9 +58,12 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A fancy curses interface to the Python interactive interpreter";
+    description = "Fancy curses interface to the Python interactive interpreter";
     homepage = "https://bpython-interpreter.org/";
     license = licenses.mit;
-    maintainers = with maintainers; [ flokli dotlambda ];
+    maintainers = with maintainers; [
+      flokli
+      dotlambda
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/bqplot/default.nix b/pkgs/development/python-modules/bqplot/default.nix
index a38d600f0f3b2..cd8495a818e6f 100644
--- a/pkgs/development/python-modules/bqplot/default.nix
+++ b/pkgs/development/python-modules/bqplot/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, jupyter-packaging
-, jupyterlab
-, bqscales
-, ipywidgets
-, numpy
-, pandas
-, traitlets
-, traittypes
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  jupyter-packaging,
+  jupyterlab,
+  bqscales,
+  ipywidgets,
+  numpy,
+  pandas,
+  traitlets,
+  traittypes,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/bqscales/default.nix b/pkgs/development/python-modules/bqscales/default.nix
index a5fae24a13ebb..2f1a0b0241d0e 100644
--- a/pkgs/development/python-modules/bqscales/default.nix
+++ b/pkgs/development/python-modules/bqscales/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, hatchling
-, hatch-jupyter-builder
-, jupyterlab
-, ipywidgets
-, numpy
-, traitlets
-, traittypes
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  hatchling,
+  hatch-jupyter-builder,
+  jupyterlab,
+  ipywidgets,
+  numpy,
+  traitlets,
+  traittypes,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/braceexpand/default.nix b/pkgs/development/python-modules/braceexpand/default.nix
index 76c339bb9ac31..ffa97d4c19097 100644
--- a/pkgs/development/python-modules/braceexpand/default.nix
+++ b/pkgs/development/python-modules/braceexpand/default.nix
@@ -1,14 +1,16 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "braceexpand";
   version = "0.1.7";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -17,15 +19,20 @@ buildPythonPackage rec {
     sha256 = "01gpcnksnqv6np28i4x8s3wkngawzgs99zvjfia57spa42ykkrg6";
   };
 
+  build-system = [ setuptools ];
+
   nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "braceexpand" ];
 
-  meta = with lib; {
+  meta = {
     description = "Bash-style brace expansion for Python";
     homepage = "https://github.com/trendels/braceexpand";
     changelog = "https://github.com/trendels/braceexpand/blob/v${version}/CHANGELOG.md";
-    license = licenses.mit;
-    maintainers = with maintainers; [ newam ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [
+      newam
+      pbsds
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/bracex/default.nix b/pkgs/development/python-modules/bracex/default.nix
index d2b8bb06ff9b9..8149d1ad60f3d 100644
--- a/pkgs/development/python-modules/bracex/default.nix
+++ b/pkgs/development/python-modules/bracex/default.nix
@@ -1,25 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatchling
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "bracex";
-  version = "2.4";
+  version = "2.5";
   format = "pyproject";
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-on6vHfQs9WH+1Yt6jz/fEp0eoWqB4frdHReYm8Y4S+s=";
+    hash = "sha256-ByXaUEXo036pWSqzYU2LVh4iw8X945ZGmb5nLgcqthE=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
@@ -29,6 +28,6 @@ buildPythonPackage rec {
     description = "Bash style brace expansion for Python";
     homepage = "https://github.com/facelessuser/bracex";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/brainflow/default.nix b/pkgs/development/python-modules/brainflow/default.nix
new file mode 100644
index 0000000000000..a486055460087
--- /dev/null
+++ b/pkgs/development/python-modules/brainflow/default.nix
@@ -0,0 +1,39 @@
+{
+  buildPythonPackage,
+  brainflow,
+  nptyping,
+  numpy,
+  python,
+  setuptools,
+}:
+
+buildPythonPackage {
+  inherit (brainflow)
+    pname
+    version
+    src
+    patches
+    meta
+    ;
+
+  pyproject = true;
+  build-system = [ setuptools ];
+
+  dependencies = [
+    numpy
+    nptyping
+  ];
+
+  buildInputs = [ brainflow ];
+
+  postPatch = ''
+    cd python_package
+  '';
+
+  postInstall = ''
+    mkdir -p "$out/${python.sitePackages}/brainflow/lib/"
+    cp -Tr "${brainflow}/lib" "$out/${python.sitePackages}/brainflow/lib/"
+  '';
+
+  pythonImportsCheck = [ "brainflow" ];
+}
diff --git a/pkgs/development/python-modules/braintree/default.nix b/pkgs/development/python-modules/braintree/default.nix
index 40715bcdacc14..854f1451c0b15 100644
--- a/pkgs/development/python-modules/braintree/default.nix
+++ b/pkgs/development/python-modules/braintree/default.nix
@@ -1,48 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nose
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "braintree";
-  version = "4.14.0";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.7";
+  version = "4.29.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
-    owner = pname;
+    owner = "braintree";
     repo = "braintree_python";
     rev = version;
-    hash = "sha256-qeqQX+qyy78sLe+46CA4D6VAxNHUVahS4LMYdGDzc2k=";
+    hash = "sha256-5MF8W2zUVvNiOnmszgJkMDmeYLZ6ppFHqmH6dmlCzQY=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    nose
-    pytestCheckHook
-  ];
+  dependencies = [ requests ];
 
-  pythonImportsCheck = [
-    "braintree"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "braintree" ];
 
-  disabledTestPaths = [
-    # Don't test integrations
-    "tests/integration"
+  pytestFlagsArray = [
+    "tests/"
+    "tests/fixtures"
+    "tests/unit"
+    "tests/integration/test_credentials_parser.py"
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Python library for integration with Braintree";
     homepage = "https://github.com/braintree/braintree_python";
-    license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.mit;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/branca/default.nix b/pkgs/development/python-modules/branca/default.nix
index 77f146896062d..aca3fcd645d0b 100644
--- a/pkgs/development/python-modules/branca/default.nix
+++ b/pkgs/development/python-modules/branca/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, jinja2
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
-, selenium
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jinja2,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  selenium,
 }:
 
 buildPythonPackage rec {
   pname = "branca";
-  version = "0.7.2";
+  version = "0.8.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -19,7 +20,7 @@ buildPythonPackage rec {
     owner = "python-visualization";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-ipu0JZIx/YgR7F5Z7sl/9YEEHkyiDllR5dHko7AlSe8=";
+    hash = "sha256-9imrW4u2Ea1q7VKgk6Vs8y2OiSzAPr3W6471pi/gVm4=";
   };
 
   postPatch = ''
@@ -27,22 +28,16 @@ buildPythonPackage rec {
     rm setup.cfg
   '';
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    jinja2
-  ];
+  propagatedBuildInputs = [ jinja2 ];
 
   nativeCheckInputs = [
     pytestCheckHook
     selenium
   ];
 
-  pythonImportsCheck = [
-    "branca"
-  ];
+  pythonImportsCheck = [ "branca" ];
 
   disabledTestPaths = [
     # Some tests require a browser
@@ -59,6 +54,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/python-visualization/branca";
     changelog = "https://github.com/python-visualization/branca/blob/v${version}/CHANGES.txt";
     license = with licenses; [ mit ];
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/bravado-core/default.nix b/pkgs/development/python-modules/bravado-core/default.nix
index 9699e1cc04fb8..e3832e5ed550e 100644
--- a/pkgs/development/python-modules/bravado-core/default.nix
+++ b/pkgs/development/python-modules/bravado-core/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
   # build inputs
-, jsonref
-, jsonschema
-, python-dateutil
-, pyyaml
-, requests
-, simplejson
-, six
-, swagger-spec-validator
-, pytz
-, msgpack
+  jsonref,
+  jsonschema,
+  python-dateutil,
+  pyyaml,
+  requests,
+  simplejson,
+  six,
+  swagger-spec-validator,
+  pytz,
+  msgpack,
   # check inputs
-, pytestCheckHook
-, mock
+  pytestCheckHook,
+  mock,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,7 @@ buildPythonPackage rec {
     hash = "sha256-kyHmZNPl5lLKmm5i3TSi8Tfi96mQHqaiyBfceBJcOdw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     jsonref
@@ -50,17 +49,11 @@ buildPythonPackage rec {
     msgpack
   ] ++ jsonschema.optional-dependencies.format-nongpl;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  checkInputs = [
-    mock
-  ];
+  checkInputs = [ mock ];
 
-  pythonImportsCheck = [
-    "bravado_core"
-  ];
+  pythonImportsCheck = [ "bravado_core" ];
 
   disabledTestPaths = [
     # skip benchmarks
@@ -74,6 +67,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/Yelp/bravado-core";
     changelog = "https://github.com/Yelp/bravado-core/blob/v${version}/CHANGELOG.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ vanschelven nickcao ];
+    maintainers = with maintainers; [
+      vanschelven
+      nickcao
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/bravia-tv/default.nix b/pkgs/development/python-modules/bravia-tv/default.nix
index 391d10f20df01..31a7d6528bbd9 100644
--- a/pkgs/development/python-modules/bravia-tv/default.nix
+++ b/pkgs/development/python-modules/bravia-tv/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/breathe/default.nix b/pkgs/development/python-modules/breathe/default.nix
index ca6c66261660c..4564364bfe5e3 100644
--- a/pkgs/development/python-modules/breathe/default.nix
+++ b/pkgs/development/python-modules/breathe/default.nix
@@ -1,55 +1,58 @@
-{ lib
-, buildPythonPackage
-, docutils
-, fetchFromGitHub
-, fetchpatch
-, pytestCheckHook
-, pythonOlder
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  defusedxml,
+  fetchFromGitHub,
+  fetchpatch,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  sphinx,
 }:
 
 buildPythonPackage rec {
   pname = "breathe";
   version = "4.35.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
-    owner = "michaeljones";
-    repo = pname;
+    owner = "breathe-doc";
+    repo = "breathe";
     rev = "refs/tags/v${version}";
     hash = "sha256-LJXvtScyWRL8zfj877bJ4xuIbLV9IN3Sn9KPUTLMjMI=";
   };
 
   patches = [
+    # sphinx 7.2 support https://github.com/breathe-doc/breathe/pull/964
     (fetchpatch {
-      # sphinx 7.2 support https://github.com/breathe-doc/breathe/pull/956
-      name = "breathe-sphinx7.2-support.patch";
-      url = "https://github.com/breathe-doc/breathe/commit/46abd77157a2a57e81586e4f8765ae8f1a09d167.patch";
-      hash = "sha256-zGFO/Ndk/9Yv2dbo8fpEoB/vchZP5vRceoC1E3sUny8=";
+      url = "https://github.com/breathe-doc/breathe/commit/caa8dc45222b35d360c24bf36835a7d8e6d86df2.patch";
+      hash = "sha256-wWe4x4WwZTrDhNZAF7mhfHHNEjd+Kp4YXghL+DPa10w=";
+    })
+    # sphinx 7.2 support https://github.com/breathe-doc/breathe/pull/976
+    (fetchpatch {
+      url = "https://github.com/breathe-doc/breathe/commit/09c856bf72de41e82582f31855e916295ba6d382.patch";
+      hash = "sha256-vU3DUrj4Jj4AUolFFtWmaLMf9RG7TmKqJe5sCwwRjPI=";
     })
   ];
 
-  propagatedBuildInputs = [
-    docutils
-    sphinx
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ sphinx ];
 
   nativeCheckInputs = [
+    defusedxml
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "breathe"
-  ];
+  pythonImportsCheck = [ "breathe" ];
 
-  meta = with lib; {
+  meta = {
     description = "Sphinx Doxygen renderer";
     mainProgram = "breathe-apidoc";
-    homepage = "https://github.com/michaeljones/breathe";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
-    inherit (sphinx.meta) platforms;
+    homepage = "https://github.com/breathe-doc/breathe";
+    license = lib.licenses.bsd3;
+    maintainers = lib.teams.sphinx.members;
   };
 }
diff --git a/pkgs/development/python-modules/breezy/default.nix b/pkgs/development/python-modules/breezy/default.nix
index 4972e82b3d07c..b6316ad036e75 100644
--- a/pkgs/development/python-modules/breezy/default.nix
+++ b/pkgs/development/python-modules/breezy/default.nix
@@ -1,30 +1,31 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, cargo
-, configobj
-, cython
-, dulwich
-, fastbencode
-, fastimport
-, pygithub
-, libiconv
-, merge3
-, patiencediff
-, pyyaml
-, tzlocal
-, urllib3
-, breezy
-, launchpadlib
-, testtools
-, pythonOlder
-, installShellFiles
-, rustPlatform
-, rustc
-, setuptools-gettext
-, setuptools-rust
-, testers
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cargo,
+  configobj,
+  cython,
+  dulwich,
+  fastbencode,
+  fastimport,
+  pygithub,
+  libiconv,
+  merge3,
+  patiencediff,
+  pyyaml,
+  tzlocal,
+  urllib3,
+  breezy,
+  launchpadlib,
+  testtools,
+  pythonOlder,
+  installShellFiles,
+  rustPlatform,
+  rustc,
+  setuptools-gettext,
+  setuptools-rust,
+  testers,
 }:
 
 buildPythonPackage rec {
@@ -41,9 +42,7 @@ buildPythonPackage rec {
     hash = "sha256-NSfMUyx6a/vb1vTNn/fFfNktrFdB2N940m0TR6EhB9k=";
   };
 
-  cargoDeps = rustPlatform.importCargoLock {
-    lockFile = ./Cargo.lock;
-  };
+  cargoDeps = rustPlatform.importCargoLock { lockFile = ./Cargo.lock; };
 
   postPatch = ''
     ln -s ${./Cargo.lock} Cargo.lock
@@ -59,24 +58,24 @@ buildPythonPackage rec {
     setuptools-rust
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
-
-  propagatedBuildInputs = [
-    configobj
-    dulwich
-    fastbencode
-    merge3
-    patiencediff
-    pyyaml
-    tzlocal
-    urllib3
-  ] ++ passthru.optional-dependencies.launchpad
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
+
+  propagatedBuildInputs =
+    [
+      configobj
+      dulwich
+      fastbencode
+      merge3
+      patiencediff
+      pyyaml
+      tzlocal
+      urllib3
+    ]
+    ++ passthru.optional-dependencies.launchpad
     ++ passthru.optional-dependencies.fastimport
     ++ passthru.optional-dependencies.github;
 
-  nativeCheckInputs = [
-    testtools
-  ];
+  nativeCheckInputs = [ testtools ];
 
   # multiple failures on sandbox
   doCheck = false;
@@ -109,15 +108,9 @@ buildPythonPackage rec {
       command = "HOME=$TMPDIR brz --version";
     };
     optional-dependencies = {
-      launchpad = [
-        launchpadlib
-      ];
-      fastimport = [
-        fastimport
-      ];
-      github = [
-        pygithub
-      ];
+      launchpad = [ launchpadlib ];
+      fastimport = [ fastimport ];
+      github = [ pygithub ];
     };
   };
 
diff --git a/pkgs/development/python-modules/brelpy/default.nix b/pkgs/development/python-modules/brelpy/default.nix
index 83d5946c54b87..b5edbe1e1aefd 100644
--- a/pkgs/development/python-modules/brelpy/default.nix
+++ b/pkgs/development/python-modules/brelpy/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pycryptodome
-, pygithub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pycryptodome,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-MYWSKYd7emHZfY+W/UweQtTg62GSUMybpecL9BR8dhg=";
   };
 
-  propagatedBuildInputs = [
-    pycryptodome
-  ];
+  propagatedBuildInputs = [ pycryptodome ];
 
   # Source not tagged and PyPI releases don't contain tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "brelpy"
-  ];
+  pythonImportsCheck = [ "brelpy" ];
 
   meta = with lib; {
     description = "Python to communicate with the Brel hubs";
diff --git a/pkgs/development/python-modules/brian2/default.nix b/pkgs/development/python-modules/brian2/default.nix
index 59880be41293a..c6a31766078b3 100644
--- a/pkgs/development/python-modules/brian2/default.nix
+++ b/pkgs/development/python-modules/brian2/default.nix
@@ -1,29 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cython
-, jinja2
-, numpy
-, pyparsing
-, setuptools
-, sympy
-, pytest
-, pytest-xdist
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cython,
+  jinja2,
+  numpy,
+  pyparsing,
+  setuptools,
+  sympy,
+  pytest,
+  pytest-xdist,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "brian2";
-  version = "2.6.0";
-  format = "setuptools";
+  version = "2.7.0";
+  pyproject = true;
 
   src = fetchPypi {
-    pname = "Brian2";
-    inherit version;
-    hash = "sha256-qYeIMn8l2V2Ckpj5AY7TWihFnfZ//JcP5VacUUfYCf4=";
+    inherit pname version;
+    hash = "sha256-d9GDWp8CGIjeprWf4TtchVd36gmo36HBRkBOLaRXbpo=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     cython
     jinja2
     numpy
@@ -32,7 +34,7 @@ buildPythonPackage rec {
     sympy
   ];
 
-  checkInputs = [
+  nativeCheckInputs = [
     pytest
     pytest-xdist
   ];
@@ -46,7 +48,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A clock-driven simulator for spiking neural networks";
+    description = "Clock-driven simulator for spiking neural networks";
     homepage = "https://briansimulator.org/";
     license = licenses.cecill21;
     maintainers = with maintainers; [ jiegec ];
diff --git a/pkgs/development/python-modules/bring-api/default.nix b/pkgs/development/python-modules/bring-api/default.nix
index 8f7751dd912b0..eb38597a222fb 100644
--- a/pkgs/development/python-modules/bring-api/default.nix
+++ b/pkgs/development/python-modules/bring-api/default.nix
@@ -13,16 +13,16 @@
 
 buildPythonPackage rec {
   pname = "bring-api";
-  version = "0.7.1";
+  version = "0.9.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "miaucl";
     repo = "bring-api";
     rev = "refs/tags/${version}";
-    hash = "sha256-ca6VNC1AG+BAzEhH+N3cwXL9pIBwAX6qLWMpgkEjn98=";
+    hash = "sha256-eXT7H2GGNpSo58eK5f6b5eLWYgjxEV8iLgaVTpkt9EU=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/broadbean/default.nix b/pkgs/development/python-modules/broadbean/default.nix
index a5554b5d9ba23..93eca748c521f 100644
--- a/pkgs/development/python-modules/broadbean/default.nix
+++ b/pkgs/development/python-modules/broadbean/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, pythonOlder
-, setuptools
-, versioningit
-, wheel
-, numpy
-, matplotlib
-, schema
-, hypothesis
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  versioningit,
+  wheel,
+  numpy,
+  matplotlib,
+  schema,
+  hypothesis,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -51,7 +51,7 @@ buildPythonPackage rec {
 
   meta = {
     homepage = "https://qcodes.github.io/broadbean";
-    description = "A library for making pulses that can be leveraged with QCoDeS";
+    description = "Library for making pulses that can be leveraged with QCoDeS";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ evilmav ];
   };
diff --git a/pkgs/development/python-modules/brother-ql/default.nix b/pkgs/development/python-modules/brother-ql/default.nix
index 4bdafe08b3d93..ec12adaa7f289 100644
--- a/pkgs/development/python-modules/brother-ql/default.nix
+++ b/pkgs/development/python-modules/brother-ql/default.nix
@@ -1,38 +1,37 @@
-{ stdenv
-, fetchPypi
-, fetchpatch
-, buildPythonPackage
-, future
-, packbits
-, pillow
-, pyusb
-, pytest
-, mock
-, click
-, attrs
-, lib
+{
+  fetchPypi,
+  buildPythonPackage,
+  setuptools,
+  future,
+  packbits,
+  pillow,
+  pyusb,
+  click,
+  attrs,
+  jsons,
+  lib,
 }:
 
 buildPythonPackage rec {
   pname = "brother-ql";
-  version = "0.9.4";
-  format = "setuptools";
+  version = "0.11.2";
+  pyproject = true;
 
   src = fetchPypi {
-    pname = "brother_ql";
+    pname = "brother_ql_next";
     inherit version;
-    hash = "sha256-H1xXoDnwEsnCBDl/RwAB9267dINCHr3phdDLPGFOhmA=";
+    hash = "sha256-3rTf+4W5KK7zSGIE3bBHXHE0hjyvpjB0IiEtbax6mkU=";
   };
 
-  propagatedBuildInputs = [ future packbits pillow pyusb click attrs ];
-
-  patches = [
-    (fetchpatch {
-      # Make compatible with Pillow>=10.0; https://github.com/pklaus/brother_ql/pull/143
-      name = "brother-ql-pillow10-compat.patch";
-      url = "https://github.com/pklaus/brother_ql/commit/a7e1b94b41f3a6e0f8b365598bc34fb47ca95a6d.patch";
-      hash = "sha256-v3YhmsUWBwE/Vli1SbTQO8q1zbtWYI9iMlVFvz5sxmg=";
-    })
+  propagatedBuildInputs = [
+    setuptools
+    future
+    packbits
+    pillow
+    pyusb
+    click
+    attrs
+    jsons
   ];
 
   meta = with lib; {
@@ -41,8 +40,8 @@ buildPythonPackage rec {
       Python package for the raster language protocol of the Brother QL series label printers
       (QL-500, QL-550, QL-570, QL-700, QL-710W, QL-720NW, QL-800, QL-820NWB, QL-1050 and more)
     '';
-    homepage = "https://github.com/pklaus/brother_ql";
-    license = licenses.gpl3;
+    homepage = "https://github.com/LunarEclipse363/brother_ql_next";
+    license = licenses.gpl3Only;
     maintainers = with maintainers; [ grahamc ];
     mainProgram = "brother_ql";
   };
diff --git a/pkgs/development/python-modules/brother/default.nix b/pkgs/development/python-modules/brother/default.nix
index b4f163dd9928a..e6b79fb3bcdd1 100644
--- a/pkgs/development/python-modules/brother/default.nix
+++ b/pkgs/development/python-modules/brother/default.nix
@@ -1,47 +1,48 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, dacite
-, pysnmp-lextudio
-, pytest-asyncio
-, pytest-error-for-skips
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  dacite,
+  pysnmp,
+  pytest-asyncio,
+  pytest-error-for-skips,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  syrupy
 }:
 
 buildPythonPackage rec {
   pname = "brother";
-  version = "4.1.0";
+  version = "4.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "bieniu";
-    repo = pname;
+    repo = "brother";
     rev = "refs/tags/${version}";
-    hash = "sha256-W7bakj/94l0pL5fOb+CK+Z6k1cbv/CY9XjXGYZfLFY4=";
+    hash = "sha256-JnIJgR8OiN6y6ib0Y+FXa98Q/4dtvJ8q2r6tgQSRvN4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dacite
-    pysnmp-lextudio
+    pysnmp
   ];
 
   nativeCheckInputs = [
+    freezegun
     pytest-asyncio
     pytest-error-for-skips
     pytestCheckHook
+    syrupy
   ];
 
-  pythonImportsCheck = [
-    "brother"
-  ];
+  pythonImportsCheck = [ "brother" ];
 
   meta = with lib; {
     description = "Python wrapper for getting data from Brother laser and inkjet printers via SNMP";
diff --git a/pkgs/development/python-modules/brotli-asgi/default.nix b/pkgs/development/python-modules/brotli-asgi/default.nix
index 3bb6041422ae8..79d090f6127a4 100644
--- a/pkgs/development/python-modules/brotli-asgi/default.nix
+++ b/pkgs/development/python-modules/brotli-asgi/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-# build inputs
-, starlette
-, brotli
-# check inputs
-, httpx
-, requests
-, mypy
-, brotlipy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  # build inputs
+  starlette,
+  brotli,
+  # check inputs
+  httpx,
+  requests,
+  mypy,
+  brotlipy,
 }:
 let
   pname = "brotli-asgi";
@@ -43,7 +44,7 @@ buildPythonPackage {
   ];
 
   meta = with lib; {
-    description = "A compression AGSI middleware using brotli";
+    description = "Compression AGSI middleware using brotli";
     homepage = "https://github.com/fullonic/brotli-asgi";
     license = licenses.mit;
     maintainers = with maintainers; [ happysalada ];
diff --git a/pkgs/development/python-modules/brotli/default.nix b/pkgs/development/python-modules/brotli/default.nix
index 5fba7e847b017..f429478eca985 100644
--- a/pkgs/development/python-modules/brotli/default.nix
+++ b/pkgs/development/python-modules/brotli/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -13,7 +14,7 @@ buildPythonPackage rec {
     owner = "google";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-MvceRcle2dSkkucC2PlsCizsIf8iv95d8Xjqew266wc=";
+    hash = "sha256-U1vAupUthD5W0xvlOKdgm9MAVLqsVyZUaFdeLsDAbDM=";
     # .gitattributes is not correct or GitHub does not parse it correct and the archive is missing the test data
     forceFetchGit = true;
   };
@@ -21,18 +22,14 @@ buildPythonPackage rec {
   # only returns information how to really build
   dontConfigure = true;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "python/tests"
-  ];
+  pytestFlagsArray = [ "python/tests" ];
 
   meta = with lib; {
     homepage = "https://github.com/google/brotli";
     description = "Generic-purpose lossless compression algorithm";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/brotlicffi/default.nix b/pkgs/development/python-modules/brotlicffi/default.nix
index 9d246d3873b10..53c0280b56b30 100644
--- a/pkgs/development/python-modules/brotlicffi/default.nix
+++ b/pkgs/development/python-modules/brotlicffi/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
-, cffi
-, brotli
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  cffi,
+  brotli,
 }:
 
 buildPythonPackage rec {
@@ -19,17 +20,11 @@ buildPythonPackage rec {
     sha256 = "sha256-oW4y1WBJ7+4XwNwwSSR0qUqN03cZYXUYQ6EAwce9dzI=";
   };
 
-  buildInputs = [
-    brotli
-  ];
+  buildInputs = [ brotli ];
 
-  propagatedNativeBuildInputs = [
-    cffi
-  ];
+  propagatedNativeBuildInputs = [ cffi ];
 
-  propagatedBuildInputs = [
-    cffi
-  ];
+  propagatedBuildInputs = [ cffi ];
 
   preBuild = ''
     export USE_SHARED_BROTLI=1
diff --git a/pkgs/development/python-modules/brotlipy/default.nix b/pkgs/development/python-modules/brotlipy/default.nix
index 4fef96aa5d743..c720218717842 100644
--- a/pkgs/development/python-modules/brotlipy/default.nix
+++ b/pkgs/development/python-modules/brotlipy/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cffi
-, enum34
-, construct
-, pytest
-, hypothesis
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cffi,
+  enum34,
+  construct,
+  pytest,
+  hypothesis,
 }:
 
 buildPythonPackage rec {
@@ -18,11 +19,18 @@ buildPythonPackage rec {
     sha256 = "36def0b859beaf21910157b4c33eb3b06d8ce459c942102f16988cca6ea164df";
   };
 
-  propagatedBuildInputs = [ cffi enum34 construct ];
+  propagatedBuildInputs = [
+    cffi
+    enum34
+    construct
+  ];
 
   propagatedNativeBuildInputs = [ cffi ];
 
-  nativeCheckInputs = [ pytest hypothesis ];
+  nativeCheckInputs = [
+    pytest
+    hypothesis
+  ];
 
   checkPhase = ''
     py.test
diff --git a/pkgs/development/python-modules/brottsplatskartan/default.nix b/pkgs/development/python-modules/brottsplatskartan/default.nix
index 4c4a0dcbc8fbd..8de7c2194ab2b 100644
--- a/pkgs/development/python-modules/brottsplatskartan/default.nix
+++ b/pkgs/development/python-modules/brottsplatskartan/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-cov
-, pytestCheckHook
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-cov-stub,
+  pytestCheckHook,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
-    pytest-cov
+    pytest-cov-stub
     pytestCheckHook
   ];
 
diff --git a/pkgs/development/python-modules/browser-cookie3/default.nix b/pkgs/development/python-modules/browser-cookie3/default.nix
index f8616e0567a20..681067e3c17c6 100644
--- a/pkgs/development/python-modules/browser-cookie3/default.nix
+++ b/pkgs/development/python-modules/browser-cookie3/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, lz4
-, keyring
-, pbkdf2
-, pycryptodomex
-, pyaes
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
+  lz4,
+  keyring,
+  pbkdf2,
+  pycryptodomex,
+  pyaes,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
   # No tests implemented
   doCheck = false;
 
-  pythonImportsCheck = [
-    "browser_cookie3"
-  ];
+  pythonImportsCheck = [ "browser_cookie3" ];
 
   meta = with lib; {
     description = "Loads cookies from your browser into a cookiejar object";
diff --git a/pkgs/development/python-modules/brunt/default.nix b/pkgs/development/python-modules/brunt/default.nix
index 40b0f665cb97e..232dae5cf1d34 100644
--- a/pkgs/development/python-modules/brunt/default.nix
+++ b/pkgs/development/python-modules/brunt/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, aiohttp
-, requests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  aiohttp,
+  requests,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # tests require Brunt hardware
   doCheck = false;
diff --git a/pkgs/development/python-modules/bsddb3/default.nix b/pkgs/development/python-modules/bsddb3/default.nix
index 4edc9e1524b43..af25971df03b8 100644
--- a/pkgs/development/python-modules/bsddb3/default.nix
+++ b/pkgs/development/python-modules/bsddb3/default.nix
@@ -1,25 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pkgs
-, python
+{
+  lib,
+  buildPythonPackage,
+  pythonAtLeast,
+  python,
+  fetchPypi,
+  setuptools,
+  pkgs,
 }:
 
 buildPythonPackage rec {
   pname = "bsddb3";
   version = "6.2.9";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "70d05ec8dc568f42e70fc919a442e0daadc2a905a1cfb7ca77f549d49d6e7801";
   };
 
+  build-system = [ setuptools ];
+
   buildInputs = [ pkgs.db ];
 
-  checkPhase = ''
-    ${python.interpreter} test.py
-  '';
+  # See : https://github.com/NixOS/nixpkgs/pull/311198#discussion_r1599257522
+  # More details here : https://www.jcea.es/programacion/pybsddb.htm
+  disabled = pythonAtLeast "3.10";
 
   # Path to database need to be set.
   # Somehow the setup.py flag is not propagated.
@@ -29,11 +34,20 @@ buildPythonPackage rec {
     export BERKELEYDB_DIR=${pkgs.db.dev};
   '';
 
+  postPatch = ''
+    substituteInPlace test3.py \
+      --replace-fail "from distutils.util import get_platform" "from sysconfig import get_platform" \
+      --replace-fail "sys.config[0:3]" "sys.implementation.cache_tag"
+  '';
+
+  checkPhase = ''
+    ${python.interpreter} test.py
+  '';
+
   meta = with lib; {
     description = "Python bindings for Oracle Berkeley DB";
     homepage = "https://www.jcea.es/programacion/pybsddb.htm";
     license = with licenses; [ agpl3Only ]; # License changed from bsd3 to agpl3 since 6.x
     maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/bsdiff4/default.nix b/pkgs/development/python-modules/bsdiff4/default.nix
index f65fe77af252e..1ad855c1a11af 100644
--- a/pkgs/development/python-modules/bsdiff4/default.nix
+++ b/pkgs/development/python-modules/bsdiff4/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-HXEpqBIYYHMejM4pAdMYPhSuxwJE9k6PdFYyddw4gGc=";
   };
 
-  pythonImportsCheck = [
-    "bsdiff4"
-  ];
+  pythonImportsCheck = [ "bsdiff4" ];
 
   checkPhase = ''
     mv bsdiff4 _bsdiff4
diff --git a/pkgs/development/python-modules/bson/default.nix b/pkgs/development/python-modules/bson/default.nix
index afcb46f5d6510..415f50ce0850d 100644
--- a/pkgs/development/python-modules/bson/default.nix
+++ b/pkgs/development/python-modules/bson/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python-dateutil
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python-dateutil,
+  six,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/bsuite/default.nix b/pkgs/development/python-modules/bsuite/default.nix
index 177c7656a13e7..71fed05fce76e 100644
--- a/pkgs/development/python-modules/bsuite/default.nix
+++ b/pkgs/development/python-modules/bsuite/default.nix
@@ -26,7 +26,6 @@
   statsmodels,
   tensorflow-probability,
   termcolor,
-  trfl,
 }:
 
 let
@@ -83,7 +82,6 @@ let
       pytestCheckHook
       rlax
       tensorflow-probability
-      trfl
     ];
 
     pythonImportsCheck = [ "bsuite" ];
diff --git a/pkgs/development/python-modules/bt-proximity/default.nix b/pkgs/development/python-modules/bt-proximity/default.nix
index 97658726a4941..548c69d4e14dd 100644
--- a/pkgs/development/python-modules/bt-proximity/default.nix
+++ b/pkgs/development/python-modules/bt-proximity/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pybluez
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pybluez,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
     sha256 = "0xlif91vblbz065531yjf8nmlcahrl4q5pz52bc1jmzz7iv9hpgq";
   };
 
-  propagatedBuildInputs = [
-    pybluez
-  ];
+  propagatedBuildInputs = [ pybluez ];
 
   # there are no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/btchip-python/default.nix b/pkgs/development/python-modules/btchip-python/default.nix
index 901a3b2cc9545..66c22bafac3ed 100644
--- a/pkgs/development/python-modules/btchip-python/default.nix
+++ b/pkgs/development/python-modules/btchip-python/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hidapi
-, pyscard
-, ecdsa
- }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hidapi,
+  pyscard,
+  ecdsa,
+}:
 
 buildPythonPackage rec {
   pname = "btchip-python";
@@ -27,16 +28,12 @@ buildPythonPackage rec {
     ecdsa
   ];
 
-  passthru.optional-dependencies.smartcard = [
-    pyscard
-  ];
+  passthru.optional-dependencies.smartcard = [ pyscard ];
 
   # tests requires hardware
   doCheck = false;
 
-  pythonImportsCheck = [
-    "btchip.btchip"
-  ];
+  pythonImportsCheck = [ "btchip.btchip" ];
 
   meta = with lib; {
     description = "Python communication library for Ledger Hardware Wallet products";
diff --git a/pkgs/development/python-modules/btest/default.nix b/pkgs/development/python-modules/btest/default.nix
index dc36b1981940b..9b7b37125d975 100644
--- a/pkgs/development/python-modules/btest/default.nix
+++ b/pkgs/development/python-modules/btest/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,7 +23,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A Generic Driver for Powerful System Tests";
+    description = "Generic Driver for Powerful System Tests";
     homepage = "https://github.com/zeek/btest";
     changelog = "https://github.com/zeek/btest/blob/${version}/CHANGES";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/bthome-ble/default.nix b/pkgs/development/python-modules/bthome-ble/default.nix
index cc99d7696c5b9..8f48d2c0364d9 100644
--- a/pkgs/development/python-modules/bthome-ble/default.nix
+++ b/pkgs/development/python-modules/bthome-ble/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, bluetooth-data-tools
-, bluetooth-sensor-state-data
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, pytz
-, sensor-state-data
+{
+  lib,
+  bluetooth-data-tools,
+  bluetooth-sensor-state-data,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  sensor-state-data,
 }:
 
 buildPythonPackage rec {
   pname = "bthome-ble";
-  version = "3.8.1";
+  version = "3.11.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -22,14 +23,17 @@ buildPythonPackage rec {
     owner = "Bluetooth-Devices";
     repo = "bthome-ble";
     rev = "refs/tags/v${version}";
-    hash = "sha256-eaRFHrISxYovQLtNUPrgNw3ATClHqpZ+Us+JGmNNbyY=";
+    hash = "sha256-TlZyNGfHNKN+6tCKepLS+fbgfq3a1uzeCXl25khl6d8=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail " --cov=bthome_ble --cov-report=term-missing:skip-covered" ""
+  '';
+
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     bluetooth-data-tools
     bluetooth-sensor-state-data
     cryptography
@@ -37,24 +41,15 @@ buildPythonPackage rec {
     pytz
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace " --cov=bthome_ble --cov-report=term-missing:skip-covered" ""
-  '';
-
-  pythonImportsCheck = [
-    "bthome_ble"
-  ];
+  pythonImportsCheck = [ "bthome_ble" ];
 
   meta = with lib; {
     description = "Library for BThome BLE devices";
     homepage = "https://github.com/Bluetooth-Devices/bthome-ble";
     changelog = "https://github.com/bluetooth-devices/bthome-ble/blob/v${version}/CHANGELOG.md";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/bthomehub5-devicelist/default.nix b/pkgs/development/python-modules/bthomehub5-devicelist/default.nix
new file mode 100644
index 0000000000000..2c4b9562c16b5
--- /dev/null
+++ b/pkgs/development/python-modules/bthomehub5-devicelist/default.nix
@@ -0,0 +1,40 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  html-table-parser-python3,
+  requests,
+}:
+
+buildPythonPackage rec {
+  pname = "bthomehub5-devicelist";
+  version = "0.1.1";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-bWMwLbFGdMRcZLIVbOptWMOOFzVBm2KxQ9jwqvAU6zA=";
+  };
+
+  pythonRelaxDeps = [ "html-table-parser-python3" ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    html-table-parser-python3
+    requests
+  ];
+
+  # No tests in the package
+  doCheck = false;
+
+  pythonImportsCheck = [ "bthomehub5_devicelist" ];
+
+  meta = {
+    description = "Returns a list of devices currently connected to a BT Home Hub 5";
+    homepage = "https://github.com/ahobsonsayers/bthomehub5-devicelist";
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ pyrox0 ];
+  };
+}
diff --git a/pkgs/development/python-modules/btrees/default.nix b/pkgs/development/python-modules/btrees/default.nix
index bc61188b5902f..e6d92d31f3e57 100644
--- a/pkgs/development/python-modules/btrees/default.nix
+++ b/pkgs/development/python-modules/btrees/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, persistent
-, zope-interface
-, transaction
-, zope-testrunner
-, python
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  persistent,
+  zope-interface,
+  transaction,
+  zope-testrunner,
+  python,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "btrees";
-  version = "5.2";
+  version = "6.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -19,7 +20,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "BTrees";
     inherit version;
-    hash = "sha256-bkoK8BpLvslan5Mbr1xUWXn0NBoTp2Yf+KSXr089g4E=";
+    hash = "sha256-9puM3TNDThPhgCFruCrgt80x+t+3zFWWlcs3MZyjX/A=";
   };
 
   propagatedBuildInputs = [
@@ -49,6 +50,6 @@ buildPythonPackage rec {
     description = "Scalable persistent components";
     homepage = "http://packages.python.org/BTrees";
     license = licenses.zpl21;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/btrfs/default.nix b/pkgs/development/python-modules/btrfs/default.nix
index a534257c6dbef..18a68282c4bcd 100644
--- a/pkgs/development/python-modules/btrfs/default.nix
+++ b/pkgs/development/python-modules/btrfs/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
   pname = "btrfs";
-  version = "13";
+  version = "14.1";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-NSyzhpHYDkunuU104XnbVCcVRNDoVBz4KuJRrE7WMO0=";
+    hash = "sha256-BPKPwT33i8fQYJkUZbnJ8nQNbmKw0Dq6ekb9mr7awEY=";
   };
 
   # no tests (in v12)
@@ -22,6 +23,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/knorrie/python-btrfs";
     license = licenses.lgpl3Plus;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ evils Luflosi ];
+    maintainers = with maintainers; [
+      evils
+      Luflosi
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/btrfsutil/default.nix b/pkgs/development/python-modules/btrfsutil/default.nix
index d529ec09c7058..8638ea25a6e84 100644
--- a/pkgs/development/python-modules/btrfsutil/default.nix
+++ b/pkgs/development/python-modules/btrfsutil/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, btrfs-progs
+{
+  lib,
+  buildPythonPackage,
+  btrfs-progs,
 }:
 buildPythonPackage {
   pname = "btrfsutil";
@@ -21,6 +22,9 @@ buildPythonPackage {
     description = "Library for managing Btrfs filesystems";
     homepage = "https://btrfs.wiki.kernel.org/";
     license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [ raskin lopsided98 ];
+    maintainers = with maintainers; [
+      raskin
+      lopsided98
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/btsmarthub-devicelist/default.nix b/pkgs/development/python-modules/btsmarthub-devicelist/default.nix
index de5b3b6b6fa81..e55dd620e4e32 100644
--- a/pkgs/development/python-modules/btsmarthub-devicelist/default.nix
+++ b/pkgs/development/python-modules/btsmarthub-devicelist/default.nix
@@ -21,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-7ncxCpY+A2SuSFa3k21QchrmFs1dPRUMb1r1z/laa6M=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     responses
@@ -31,14 +29,12 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTests = [
-    "test_btsmarthub2_detection_neither_router_present"
-  ];
+  disabledTests = [ "test_btsmarthub2_detection_neither_router_present" ];
 
   meta = with lib; {
     description = "Retrieve a list of devices from a bt smarthub or bt smarthub 2 on a local network";
     homepage = "https://github.com/jxwolstenholme/btsmarthub_devicelist";
     license = licenses.mit;
-    maintainers = with maintainers; [jamiemagee];
+    maintainers = with maintainers; [ jamiemagee ];
   };
 }
diff --git a/pkgs/development/python-modules/btsocket/default.nix b/pkgs/development/python-modules/btsocket/default.nix
index e1c1f8a328875..6065a670f12da 100644
--- a/pkgs/development/python-modules/btsocket/default.nix
+++ b/pkgs/development/python-modules/btsocket/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "btsocket";
-  version = "0.2.0";
+  version = "0.3.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -15,17 +16,13 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "ukBaz";
     repo = "python-btsocket";
-    rev = "v${version}";
-    hash = "sha256-IqlbFYbEyJPlcmT3DIQIwsjQEAGeIGRtFNx4jWwNtjE=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-/T89GZJth7pBGQuN1ytCf649oWv7aZcfPHjYoftbLw8=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "btsocket"
-  ];
+  pythonImportsCheck = [ "btsocket" ];
 
   meta = with lib; {
     description = "Library to interact with the Bluez Bluetooth Management API";
diff --git a/pkgs/development/python-modules/bubop/default.nix b/pkgs/development/python-modules/bubop/default.nix
index 72c9737ce7b58..9c6c39fd25d28 100644
--- a/pkgs/development/python-modules/bubop/default.nix
+++ b/pkgs/development/python-modules/bubop/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, loguru
-, python-dateutil
-, pyyaml
-, tqdm
-, click
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  loguru,
+  python-dateutil,
+  pyyaml,
+  tqdm,
+  click,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     --replace-fail 'PyYAML = "~5.3.1"' 'PyYAML = "^6.0"'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     loguru
diff --git a/pkgs/development/python-modules/bucketstore/default.nix b/pkgs/development/python-modules/bucketstore/default.nix
index c87345732981a..285fbf15451bf 100644
--- a/pkgs/development/python-modules/bucketstore/default.nix
+++ b/pkgs/development/python-modules/bucketstore/default.nix
@@ -1,43 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, boto3
-, moto
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  boto3,
+  moto,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
   pname = "bucketstore";
-  version = "0.2.2";
-  format = "setuptools";
+  version = "0.3.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "jpetrucciani";
     repo = "bucketstore";
     rev = "refs/tags/${version}";
-    hash = "sha256-BtoyGqFbeBhGQeXnmeSfiuJLZtXFrK26WO0SDlAtKG4=";
+    hash = "sha256-WjweYFnlDEoR+TYzNgjPMdCLdUUEbdPROubov6kancc=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "version=__version__," 'version="${version}",'
-  '';
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    boto3
-  ];
+  propagatedBuildInputs = [ boto3 ];
 
   nativeCheckInputs = [
     moto
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "bucketstore"
-  ];
+  pythonImportsCheck = [ "bucketstore" ];
 
   meta = with lib; {
     description = "Library for interacting with Amazon S3";
diff --git a/pkgs/development/python-modules/bugsnag/default.nix b/pkgs/development/python-modules/bugsnag/default.nix
index c4afcb6935b22..bfb6f582dd3a9 100644
--- a/pkgs/development/python-modules/bugsnag/default.nix
+++ b/pkgs/development/python-modules/bugsnag/default.nix
@@ -1,27 +1,26 @@
-{ lib
-, blinker
-, buildPythonPackage
-, fetchPypi
-, flask
-, pythonOlder
-, webob
+{
+  lib,
+  blinker,
+  buildPythonPackage,
+  fetchPypi,
+  flask,
+  pythonOlder,
+  webob,
 }:
 
 buildPythonPackage rec {
   pname = "bugsnag";
-  version = "4.7.0";
+  version = "4.7.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-+w0lI2goXYnfX2KB+DNFPXl6UCOhg5o17zggalyYXr8=";
+    hash = "sha256-mECP4X1KfzAKVlNUB6ZEi5hE2bUoxEUnkIho/DZG6HM=";
   };
 
-  propagatedBuildInputs = [
-    webob
-  ];
+  propagatedBuildInputs = [ webob ];
 
   passthru.optional-dependencies = {
     flask = [
@@ -30,9 +29,7 @@ buildPythonPackage rec {
     ];
   };
 
-  pythonImportsCheck = [
-    "bugsnag"
-  ];
+  pythonImportsCheck = [ "bugsnag" ];
 
   # Module ha no tests
   doCheck = false;
@@ -42,6 +39,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/bugsnag/bugsnag-python";
     changelog = "https://github.com/bugsnag/bugsnag-python/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/bugwarrior/default.nix b/pkgs/development/python-modules/bugwarrior/default.nix
index 3e66455de7b50..ada42fb4b4e30 100644
--- a/pkgs/development/python-modules/bugwarrior/default.nix
+++ b/pkgs/development/python-modules/bugwarrior/default.nix
@@ -1,6 +1,27 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder, setuptools
-, twiggy, requests, offtrac, bugzilla, taskw, python-dateutil, pytz, keyring, six
-, jinja2, pycurl, dogpile-cache, lockfile, click, pyxdg, future, jira }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  twiggy,
+  requests,
+  offtrac,
+  bugzilla,
+  taskw,
+  python-dateutil,
+  pytz,
+  keyring,
+  six,
+  jinja2,
+  pycurl,
+  dogpile-cache,
+  lockfile,
+  click,
+  pyxdg,
+  future,
+  jira,
+}:
 
 buildPythonPackage rec {
   pname = "bugwarrior";
@@ -15,8 +36,23 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     setuptools
-    twiggy requests offtrac bugzilla taskw python-dateutil pytz keyring six
-    jinja2 pycurl dogpile-cache lockfile click pyxdg future jira
+    twiggy
+    requests
+    offtrac
+    bugzilla
+    taskw
+    python-dateutil
+    pytz
+    keyring
+    six
+    jinja2
+    pycurl
+    dogpile-cache
+    lockfile
+    click
+    pyxdg
+    future
+    jira
   ];
 
   # for the moment oauth2client <4.0.0 and megaplan>=1.4 are missing for running the test suite.
diff --git a/pkgs/development/python-modules/bugz/default.nix b/pkgs/development/python-modules/bugz/default.nix
index 894f2070c2316..c44c9c5fdc73a 100644
--- a/pkgs/development/python-modules/bugz/default.nix
+++ b/pkgs/development/python-modules/bugz/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage {
@@ -23,5 +24,4 @@ buildPythonPackage {
     license = licenses.gpl2;
     maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/bugzilla/default.nix b/pkgs/development/python-modules/bugzilla/default.nix
index e7b1db45a4ad9..3125ed30624f3 100644
--- a/pkgs/development/python-modules/bugzilla/default.nix
+++ b/pkgs/development/python-modules/bugzilla/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, pytestCheckHook
-, glibcLocalesUtf8
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  pytestCheckHook,
+  glibcLocalesUtf8,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,8 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
-    pytestCheckHook glibcLocalesUtf8
+    pytestCheckHook
+    glibcLocalesUtf8
   ];
 
   preCheck = ''
diff --git a/pkgs/development/python-modules/buienradar/default.nix b/pkgs/development/python-modules/buienradar/default.nix
index 23a19f89f2797..4ecf5a6abd221 100644
--- a/pkgs/development/python-modules/buienradar/default.nix
+++ b/pkgs/development/python-modules/buienradar/default.nix
@@ -1,29 +1,27 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, docopt
-, pytz
-, requests
-, setuptools
-, vincenty
-, xmltodict
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  docopt,
+  pytz,
+  requests,
+  setuptools,
+  vincenty,
+  xmltodict,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "buienradar";
-  version = "1.0.5";
+  version = "1.0.6";
   format = "setuptools";
 
-  disabled = pythonOlder "3.4";
-
   src = fetchFromGitHub {
     owner = "mjj4791";
     repo = "python-buienradar";
     # https://github.com/mjj4791/python-buienradar/issues/14
-    rev = "caa66ea855dbcc7cf6ee13291d9b2ed7ac01ef98";
-    hash = "sha256:0xz03xj5qjayriaah20adh0ycvlvb8jdvgh7w5gm236n64g6krj0";
+    rev = "6081a860e190eb59c2ea3ebdcb8a50f6133a0b53";
+    hash = "sha256-5bFGPR8StyQTMRcvECdHGC33oAR/9noeCbpwx3DSquQ=";
   };
 
   propagatedBuildInputs = [
@@ -35,9 +33,7 @@ buildPythonPackage rec {
     xmltodict
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # require network connection
diff --git a/pkgs/development/python-modules/build/default.nix b/pkgs/development/python-modules/build/default.nix
index 7d56257a377de..d3329230305e0 100644
--- a/pkgs/development/python-modules/build/default.nix
+++ b/pkgs/development/python-modules/build/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, stdenv
-, build
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, filelock
-, packaging
-, pyproject-hooks
-, pytest-mock
-, pytest-rerunfailures
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, tomli
-, wheel
+{
+  lib,
+  stdenv,
+  build,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  filelock,
+  packaging,
+  pyproject-hooks,
+  pytest-mock,
+  pytest-rerunfailures,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  tomli,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "build";
-  version = "1.1.1";
+  version = "1.2.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -28,7 +29,7 @@ buildPythonPackage rec {
     owner = "pypa";
     repo = "build";
     rev = "refs/tags/${version}";
-    hash = "sha256-SGWpm+AGIfqKMpDfmz2aMYmcs+XVREbHIXSuU4R7U/k=";
+    hash = "sha256-G0g+1v19sQMUuQlZKGELZOwwX07i7TIdEdaYzr8bKtI=";
   };
 
   postPatch = ''
@@ -36,16 +37,12 @@ buildPythonPackage rec {
     sed -i '/importlib-metadata >= 4.6/d' pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     packaging
     pyproject-hooks
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   # We need to disable tests because this package is part of the bootstrap chain
   # and its test dependencies cannot be built yet when this is being built.
@@ -78,25 +75,25 @@ buildPythonPackage rec {
 
       __darwinAllowLocalNetworking = true;
 
-      disabledTests = [
-        # Tests often fail with StopIteration
-        "test_isolat"
-        "test_default_pip_is_never_too_old"
-        "test_build"
-        "test_with_get_requires"
-        "test_init"
-        "test_output"
-        "test_wheel_metadata"
-      ] ++ lib.optionals stdenv.isDarwin [
-        # Expects Apple's Python and its quirks
-        "test_can_get_venv_paths_with_conflicting_default_scheme"
-      ];
+      disabledTests =
+        [
+          # Tests often fail with StopIteration
+          "test_isolat"
+          "test_default_pip_is_never_too_old"
+          "test_build"
+          "test_with_get_requires"
+          "test_init"
+          "test_output"
+          "test_wheel_metadata"
+        ]
+        ++ lib.optionals stdenv.hostPlatform.isDarwin [
+          # Expects Apple's Python and its quirks
+          "test_can_get_venv_paths_with_conflicting_default_scheme"
+        ];
     };
   };
 
-  pythonImportsCheck = [
-    "build"
-  ];
+  pythonImportsCheck = [ "build" ];
 
   meta = with lib; {
     mainProgram = "pyproject-build";
diff --git a/pkgs/development/python-modules/buildcatrust/default.nix b/pkgs/development/python-modules/buildcatrust/default.nix
index 5fc3eab560392..cc2b5b5a29469 100644
--- a/pkgs/development/python-modules/buildcatrust/default.nix
+++ b/pkgs/development/python-modules/buildcatrust/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -15,13 +16,9 @@ buildPythonPackage rec {
     hash = "sha256-Ac10CZdihFBmr5LE6xFKx4+zr2n5nyR23px6N4vN05M=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # Non-hermetic, needs internet access (e.g. attempts to retrieve NSS store).
diff --git a/pkgs/development/python-modules/buildout/default.nix b/pkgs/development/python-modules/buildout/default.nix
index 5a2f577d2b18e..a653318ffe6f8 100644
--- a/pkgs/development/python-modules/buildout/default.nix
+++ b/pkgs/development/python-modules/buildout/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, pip
-, setuptools
-, wheel
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pip,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -28,7 +29,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "zc.buildout" ];
 
   meta = with lib; {
-    description = "A software build and configuration system";
+    description = "Software build and configuration system";
     mainProgram = "buildout";
     downloadPage = "https://github.com/buildout/buildout";
     homepage = "https://www.buildout.org";
diff --git a/pkgs/development/python-modules/bump2version/default.nix b/pkgs/development/python-modules/bump2version/default.nix
new file mode 100644
index 0000000000000..c7bbb8f327f9d
--- /dev/null
+++ b/pkgs/development/python-modules/bump2version/default.nix
@@ -0,0 +1,52 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  testfixtures,
+}:
+
+buildPythonPackage rec {
+  pname = "bump2version";
+  version = "1.0.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "c4urself";
+    repo = "bump2version";
+    rev = "refs/tags/v${version}";
+    sha256 = "sha256-j6HKi3jTwSgGBrA8PCJJNg+yQqRMo1aqaLgPGf4KAKU=";
+  };
+
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    testfixtures
+  ];
+
+  disabledTests = [
+    # X's in pytest are git tests which won't run in sandbox
+    "usage_string_fork"
+    "test_usage_string"
+    "test_defaults_in_usage_with_config"
+  ];
+
+  pythonImportsCheck = [ "bumpversion" ];
+
+  meta = with lib; {
+    description = "Version-bump your software with a single command";
+    longDescription = ''
+      A small command line tool to simplify releasing software by updating
+      all version strings in your source code by the correct increment.
+    '';
+    homepage = "https://github.com/c4urself/bump2version";
+    changelog = "https://github.com/c4urself/bump2version/blob/v${version}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jefflabonte ];
+  };
+}
diff --git a/pkgs/development/python-modules/bumpfontversion/default.nix b/pkgs/development/python-modules/bumpfontversion/default.nix
new file mode 100644
index 0000000000000..8ee90f9795a53
--- /dev/null
+++ b/pkgs/development/python-modules/bumpfontversion/default.nix
@@ -0,0 +1,53 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonRelaxDepsHook,
+  poetry-core,
+  fonttools,
+  openstep-plist,
+  ufolib2,
+  glyphslib,
+  bump2version,
+}:
+
+buildPythonPackage rec {
+  pname = "bumpfontversion";
+  version = "0.4.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "simoncozens";
+    repo = "bumpfontversion";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-qcKZGv/KeeSRBq4SdnuZlurp0CUs40iEQjw9/1LltUg=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail 'poetry>=' 'poetry-core>=' \
+      --replace-fail 'poetry.masonry.api' 'poetry.core.masonry.api'
+  '';
+
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
+
+  pythonRelaxDeps = [ "glyphslib" ];
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    fonttools
+    openstep-plist
+    ufolib2
+    glyphslib
+    bump2version
+  ];
+
+  meta = {
+    description = "Version-bump your font sources";
+    homepage = "https://github.com/simoncozens/bumpfontversion";
+    license = lib.licenses.asl20;
+    mainProgram = "bumpfontversion";
+    maintainers = with lib.maintainers; [ jopejoe1 ];
+  };
+}
diff --git a/pkgs/development/python-modules/bumps/default.nix b/pkgs/development/python-modules/bumps/default.nix
index 733494a8314ac..0070effd7a0a1 100644
--- a/pkgs/development/python-modules/bumps/default.nix
+++ b/pkgs/development/python-modules/bumps/default.nix
@@ -1,27 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "bumps";
-  version = "0.9.2";
+  version = "0.9.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-PhoxjnkeLGL8vgEp7UubXKlS8p44TUkJ3c4SqRjKFJA=";
+    hash = "sha256-MpUpj3/hsjkrsv+Ix6Cuadd6dpivWAqBVwBSygW6Uw8=";
   };
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "bumps"
-  ];
+  pythonImportsCheck = [ "bumps" ];
 
   meta = with lib; {
     description = "Data fitting with bayesian uncertainty analysis";
diff --git a/pkgs/development/python-modules/bunch/default.nix b/pkgs/development/python-modules/bunch/default.nix
index 39c858ebb6761..ff64e723cdbc6 100644
--- a/pkgs/development/python-modules/bunch/default.nix
+++ b/pkgs/development/python-modules/bunch/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -27,14 +28,12 @@ buildPythonPackage rec {
   # No real tests available
   doCheck = false;
 
-  pythonImportsCheck = [
-    "bunch"
-  ];
+  pythonImportsCheck = [ "bunch" ];
 
   meta = with lib; {
     description = "Python dictionary that provides attribute-style access";
     homepage = "https://github.com/dsc/bunch";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/bundlewrap-keepass/default.nix b/pkgs/development/python-modules/bundlewrap-keepass/default.nix
index 82c09dbc1080d..d69580a00de0f 100644
--- a/pkgs/development/python-modules/bundlewrap-keepass/default.nix
+++ b/pkgs/development/python-modules/bundlewrap-keepass/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, bundlewrap
-, pykeepass
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  bundlewrap,
+  pykeepass,
 }:
 
 buildPythonPackage rec {
@@ -18,19 +19,20 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [ bundlewrap pykeepass ];
+  propagatedBuildInputs = [
+    bundlewrap
+    pykeepass
+  ];
 
   # upstream has no checks
   doCheck = false;
 
-  pythonImportsCheck = [
-    "bwkeepass"
-  ];
+  pythonImportsCheck = [ "bwkeepass" ];
 
   meta = with lib; {
     homepage = "https://pypi.org/project/bundlewrap-keepass";
     description = "Use secrets from keepass in your BundleWrap repo";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ hexchen ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/bundlewrap-pass/default.nix b/pkgs/development/python-modules/bundlewrap-pass/default.nix
index 0b8068a149487..40014fbe6587e 100644
--- a/pkgs/development/python-modules/bundlewrap-pass/default.nix
+++ b/pkgs/development/python-modules/bundlewrap-pass/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, bundlewrap
-, pass
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  bundlewrap,
+  pass,
 }:
 
 buildPythonPackage rec {
@@ -18,19 +19,20 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [ bundlewrap pass ];
+  propagatedBuildInputs = [
+    bundlewrap
+    pass
+  ];
 
   # upstream has no checks
   doCheck = false;
 
-  pythonImportsCheck = [
-    "bwpass"
-  ];
+  pythonImportsCheck = [ "bwpass" ];
 
   meta = with lib; {
     homepage = "https://pypi.org/project/bundlewrap-pass";
     description = "Use secrets from pass in your BundleWrap repo";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ hexchen ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/bundlewrap-teamvault/default.nix b/pkgs/development/python-modules/bundlewrap-teamvault/default.nix
index ca6dd419de486..cf13c27302033 100644
--- a/pkgs/development/python-modules/bundlewrap-teamvault/default.nix
+++ b/pkgs/development/python-modules/bundlewrap-teamvault/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, bundlewrap
-, passlib
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  bundlewrap,
+  passlib,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -19,19 +20,21 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [ bundlewrap passlib requests ];
+  propagatedBuildInputs = [
+    bundlewrap
+    passlib
+    requests
+  ];
 
   # upstream has no checks
   doCheck = false;
 
-  pythonImportsCheck = [
-    "bwtv"
-  ];
+  pythonImportsCheck = [ "bwtv" ];
 
   meta = with lib; {
     homepage = "https://github.com/trehn/bundlewrap-teamvault";
     description = "Pull secrets from TeamVault into your BundleWrap repo";
-    license = [ licenses.gpl3 ] ;
-    maintainers = with maintainers; [ hexchen ];
+    license = [ licenses.gpl3 ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/bundlewrap/default.nix b/pkgs/development/python-modules/bundlewrap/default.nix
index c3f3b1f531763..1a1f03dea2889 100644
--- a/pkgs/development/python-modules/bundlewrap/default.nix
+++ b/pkgs/development/python-modules/bundlewrap/default.nix
@@ -1,25 +1,25 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
-, cryptography
-, jinja2
-, mako
-, passlib
-, pytest
-, pyyaml
-, requests
-, rtoml
-, setuptools
-, tomlkit
-, librouteros
-, pytestCheckHook
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  cryptography,
+  jinja2,
+  mako,
+  passlib,
+  pyyaml,
+  requests,
+  rtoml,
+  setuptools,
+  tomlkit,
+  librouteros,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "bundlewrap";
-  version = "4.18.0";
-  format = "setuptools";
+  version = "4.20.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -27,12 +27,20 @@ buildPythonPackage rec {
     owner = "bundlewrap";
     repo = "bundlewrap";
     rev = "refs/tags/${version}";
-    hash = "sha256-7jBFeJem+0vZot+BknKmCxozmoHCBCAZqDbfQQG3/Vw=";
+    hash = "sha256-GoMOEPZb7efFoZn7D2y1XO4XtP9z+1EmakLvSxcCT8I=";
   };
 
-  nativeBuildInputs = [ setuptools ];
-  propagatedBuildInputs = [
-    setuptools cryptography jinja2 mako passlib pyyaml requests tomlkit librouteros
+  build-system = [ setuptools ];
+  dependencies = [
+    setuptools
+    cryptography
+    jinja2
+    mako
+    passlib
+    pyyaml
+    requests
+    tomlkit
+    librouteros
   ] ++ lib.optionals (pythonOlder "3.11") [ rtoml ];
 
   pythonImportsCheck = [ "bundlewrap" ];
@@ -48,7 +56,7 @@ buildPythonPackage rec {
     homepage = "https://bundlewrap.org/";
     description = "Easy, Concise and Decentralized Config management with Python";
     mainProgram = "bw";
-    license = [ licenses.gpl3 ] ;
+    license = [ licenses.gpl3 ];
     maintainers = with maintainers; [ wamserma ];
   };
 }
diff --git a/pkgs/development/python-modules/busylight-for-humans/default.nix b/pkgs/development/python-modules/busylight-for-humans/default.nix
new file mode 100644
index 0000000000000..6882416b57c81
--- /dev/null
+++ b/pkgs/development/python-modules/busylight-for-humans/default.nix
@@ -0,0 +1,67 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  poetry-core,
+  pytestCheckHook,
+  pytest-mock,
+  bitvector-for-humans,
+  hidapi,
+  loguru,
+  pyserial,
+  typer,
+  webcolors,
+}:
+buildPythonPackage rec {
+  pname = "busylight-for-humans";
+  version = "0.32.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "JnyJny";
+    repo = "busylight";
+    rev = version;
+    hash = "sha256-rdgkTk9x3bO5H01Bo2yOGIIxkoLv1k7kkJidJu/1HDQ=";
+  };
+
+  patches = [
+    (fetchpatch2 {
+      # https://github.com/JnyJny/busylight/pull/369
+      name = "fix-poetry-core.patch";
+      url = "https://github.com/helsinki-systems/busylight/commit/74ca283e2250564f422d904ece1b9ab0dd9a8f6c.patch";
+      hash = "sha256-eif9ycSYL8ZpXsvNCOHDJlpj12oauyzlMKUScZMzllc=";
+    })
+  ];
+
+  build-system = [ poetry-core ];
+  dependencies = [
+    bitvector-for-humans
+    hidapi
+    loguru
+    pyserial
+    typer
+    webcolors
+  ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-mock
+  ];
+
+  disabledTestPaths = [ "tests/test_pydantic_models.py" ];
+
+  pythonImportsCheck = [ "busylight" ];
+
+  postInstall = ''
+    mkdir -p $out/lib/udev/rules.d
+    $out/bin/busylight udev-rules -o $out/lib/udev/rules.d/99-busylight.rules
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/JnyJny/busylight";
+    description = "Control USB connected presence lights from multiple vendors via the command-line or web API.";
+    mainProgram = "busylight";
+    license = licenses.asl20;
+    maintainers = teams.helsinki-systems.members;
+  };
+}
diff --git a/pkgs/development/python-modules/busypie/default.nix b/pkgs/development/python-modules/busypie/default.nix
index 9539d3f4371e4..77882309148c2 100644
--- a/pkgs/development/python-modules/busypie/default.nix
+++ b/pkgs/development/python-modules/busypie/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytest-timeout
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -39,9 +40,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "busypie"
-  ];
+  pythonImportsCheck = [ "busypie" ];
 
   meta = with lib; {
     description = "Expressive busy wait for Python";
diff --git a/pkgs/development/python-modules/bwapy/default.nix b/pkgs/development/python-modules/bwapy/default.nix
index 4f7fd7c7b17b7..19e37b1eaf689 100644
--- a/pkgs/development/python-modules/bwapy/default.nix
+++ b/pkgs/development/python-modules/bwapy/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonAtLeast
-, pythonOlder
-, fetchPypi
-, bwa
-, cffi
-, zlib
+{
+  lib,
+  buildPythonPackage,
+  pythonAtLeast,
+  pythonOlder,
+  fetchPypi,
+  bwa,
+  cffi,
+  zlib,
 }:
 
 buildPythonPackage rec {
@@ -29,7 +30,10 @@ buildPythonPackage rec {
       --replace 'setuptools>=49.2.0' 'setuptools'
   '';
 
-  buildInputs = [ zlib bwa ];
+  buildInputs = [
+    zlib
+    bwa
+  ];
 
   propagatedBuildInputs = [ cffi ];
 
diff --git a/pkgs/development/python-modules/bx-py-utils/default.nix b/pkgs/development/python-modules/bx-py-utils/default.nix
index d66cfa62044d6..757b2d7e9f213 100644
--- a/pkgs/development/python-modules/bx-py-utils/default.nix
+++ b/pkgs/development/python-modules/bx-py-utils/default.nix
@@ -1,22 +1,24 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, beautifulsoup4
-, boto3
-, lxml
-, pdoc
-, pytestCheckHook
-, requests-mock
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools-scm,
+  beautifulsoup4,
+  boto3,
+  lxml,
+  pdoc,
+  pytestCheckHook,
+  requests-mock,
+  typeguard,
 }:
 
 buildPythonPackage rec {
   pname = "bx-py-utils";
-  version = "91";
+  version = "98";
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
   pyproject = true;
 
@@ -24,16 +26,14 @@ buildPythonPackage rec {
     owner = "boxine";
     repo = "bx_py_utils";
     rev = "refs/tags/v${version}";
-    hash = "sha256-W8NP5h9fHyTJj6TIpBunoPcNOu8eWV1rA8ZaoGUnmBQ=";
+    hash = "sha256-VJ4510HLTqdRfeUEe2srT8+W9AaRpi+Mm6srZOOp0fc=";
   };
 
   postPatch = ''
     rm bx_py_utils_tests/publish.py
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ setuptools-scm ];
 
   pythonImportsCheck = [
     "bx_py_utils.anonymize"
@@ -63,6 +63,7 @@ buildPythonPackage rec {
     pdoc
     pytestCheckHook
     requests-mock
+    typeguard
   ];
 
   disabledTests = [
@@ -71,19 +72,19 @@ buildPythonPackage rec {
     "test_assert_html_snapshot_by_css_selector"
   ];
 
-  disabledTestPaths = [
-    "bx_py_utils_tests/tests/test_project_setup.py"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # processify() doesn't work under darwin
-    # https://github.com/boxine/bx_py_utils/issues/80
-    "bx_py_utils_tests/tests/test_processify.py"
-  ];
+  disabledTestPaths =
+    [ "bx_py_utils_tests/tests/test_project_setup.py" ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # processify() doesn't work under darwin
+      # https://github.com/boxine/bx_py_utils/issues/80
+      "bx_py_utils_tests/tests/test_processify.py"
+    ];
 
   meta = {
     description = "Various Python utility functions";
     mainProgram = "publish";
     homepage = "https://github.com/boxine/bx_py_utils";
-    changelog = "https://github.com/boxine/bx_py_utils/releases/tag/${src.rev}";
+    changelog = "https://github.com/boxine/bx_py_utils/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ dotlambda ];
   };
diff --git a/pkgs/development/python-modules/bx-python/default.nix b/pkgs/development/python-modules/bx-python/default.nix
index c504c0cc77f33..869440098f1de 100644
--- a/pkgs/development/python-modules/bx-python/default.nix
+++ b/pkgs/development/python-modules/bx-python/default.nix
@@ -1,45 +1,52 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
-, numpy
-, cython
-, zlib
-, python-lzo
-, nose
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  numpy,
+  cython,
+  zlib,
+  python-lzo,
+  pytestCheckHook,
+  setuptools,
+  oldest-supported-numpy,
 }:
 
 buildPythonPackage rec {
   pname = "bx-python";
-  version = "0.11.0";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.8";
+  version = "0.12.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "bxlab";
     repo = "bx-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-evhxh/cCZFSK6EgMu7fC9/ZrPd2S1fZz89ItGYrHQck=";
+    hash = "sha256-ZpZjh7OXdUY7rd692h7VYHzC3qCrDKFme6r+wuG7GP4=";
   };
 
-  nativeBuildInputs = [
+  postPatch = ''
+    # pytest-cython, which provides this option, isn't packaged
+    substituteInPlace pytest.ini \
+      --replace-fail "--doctest-cython" ""
+  '';
+
+  build-system = [
+    setuptools
     cython
+    oldest-supported-numpy
   ];
 
-  buildInputs = [
-    zlib
-  ];
+  buildInputs = [ zlib ];
 
-  propagatedBuildInputs = [
-    numpy
-    python-lzo
-  ];
+  dependencies = [ numpy ];
 
   nativeCheckInputs = [
-    nose
+    python-lzo
+    pytestCheckHook
   ];
 
+  # https://github.com/bxlab/bx-python/issues/101
+  doCheck = false;
+
   postInstall = ''
     cp -r scripts/* $out/bin
 
@@ -50,12 +57,12 @@ buildPythonPackage rec {
     ln -s $out/bin scripts
   '';
 
-  meta = with lib; {
+  meta = {
     description = "Tools for manipulating biological data, particularly multiple sequence alignments";
     homepage = "https://github.com/bxlab/bx-python";
     changelog = "https://github.com/bxlab/bx-python/releases/tag/v${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ jbedo ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ jbedo ];
     platforms = [ "x86_64-linux" ];
   };
 }
diff --git a/pkgs/development/python-modules/bytecode/default.nix b/pkgs/development/python-modules/bytecode/default.nix
index 868279f4422c3..7c7a86baca438 100644
--- a/pkgs/development/python-modules/bytecode/default.nix
+++ b/pkgs/development/python-modules/bytecode/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-Jzsh0m00SiJjTP7hXMDmuR4XHmsCYdURuFDkVopGyIE=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "bytecode" ];
 
diff --git a/pkgs/development/python-modules/bytewax/default.nix b/pkgs/development/python-modules/bytewax/default.nix
index ea0bfe9e32da9..36c1efc4266cb 100644
--- a/pkgs/development/python-modules/bytewax/default.nix
+++ b/pkgs/development/python-modules/bytewax/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# build-system
-, cmake
-, pkg-config
-, rustPlatform
-
-# native dependencies
-, cyrus_sasl
-, openssl
-, protobuf
-
-# dependencies
-, jsonpickle
-
-# optional dependencies
-, confluent-kafka
-
-# test
-, myst-docutils
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  cmake,
+  pkg-config,
+  rustPlatform,
+
+  # native dependencies
+  cyrus_sasl,
+  openssl,
+  protobuf,
+
+  # dependencies
+  jsonpickle,
+
+  # optional dependencies
+  confluent-kafka,
+
+  # test
+  myst-docutils,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -45,9 +46,7 @@ buildPythonPackage rec {
 
   # Remove docs tests, myst-docutils in nixpkgs is not compatible with package requirements.
   # Package uses old version.
-  patches = [
-    ./remove-docs-test.patch
-  ];
+  patches = [ ./remove-docs-test.patch ];
 
   cargoDeps = rustPlatform.importCargoLock {
     lockFile = ./Cargo.lock;
@@ -73,14 +72,10 @@ buildPythonPackage rec {
     protobuf
   ];
 
-  propagatedBuildInputs = [
-    jsonpickle
-  ];
+  propagatedBuildInputs = [ jsonpickle ];
 
   passthru.optional-dependencies = {
-    kafka = [
-      confluent-kafka
-    ];
+    kafka = [ confluent-kafka ];
   };
 
   preCheck = ''
@@ -97,17 +92,18 @@ buildPythonPackage rec {
     "docs"
   ];
 
-  pythonImportsCheck = [
-    "bytewax"
-  ];
+  pythonImportsCheck = [ "bytewax" ];
 
   meta = with lib; {
     description = "Python Stream Processing";
     homepage = "https://github.com/bytewax/bytewax";
     changelog = "https://github.com/bytewax/bytewax/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ mslingsby kfollesdal ];
+    maintainers = with maintainers; [
+      mslingsby
+      kfollesdal
+    ];
     # mismatched type expected u8, found i8
-    broken = stdenv.isAarch64;
+    broken = stdenv.hostPlatform.isAarch64;
   };
 }
diff --git a/pkgs/development/python-modules/bz2file/default.nix b/pkgs/development/python-modules/bz2file/default.nix
index ef6a9ef270b22..bd8b79a9a13ef 100644
--- a/pkgs/development/python-modules/bz2file/default.nix
+++ b/pkgs/development/python-modules/bz2file/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/cachecontrol/default.nix b/pkgs/development/python-modules/cachecontrol/default.nix
index 8cfaaa5fa9b0f..fe81e67424494 100644
--- a/pkgs/development/python-modules/cachecontrol/default.nix
+++ b/pkgs/development/python-modules/cachecontrol/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, cherrypy
-, fetchFromGitHub
-, flit-core
-, filelock
-, mock
-, msgpack
-, pytestCheckHook
-, pythonOlder
-, redis
-, requests
+{
+  lib,
+  buildPythonPackage,
+  cherrypy,
+  fetchFromGitHub,
+  flit-core,
+  filelock,
+  mock,
+  msgpack,
+  pytestCheckHook,
+  pythonOlder,
+  redis,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     hash = "sha256-myyqiUGna+5S2GJGnwZTOfLh49NhjfHAvpUB49dQbgY=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     msgpack
@@ -38,12 +37,8 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    filecache = [
-      filelock
-    ];
-    redis = [
-      redis
-    ];
+    filecache = [ filelock ];
+    redis = [ redis ];
   };
 
   nativeCheckInputs = [
@@ -53,9 +48,7 @@ buildPythonPackage rec {
     requests
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "cachecontrol"
-  ];
+  pythonImportsCheck = [ "cachecontrol" ];
 
   meta = with lib; {
     description = "Httplib2 caching for requests";
diff --git a/pkgs/development/python-modules/cached-ipaddress/default.nix b/pkgs/development/python-modules/cached-ipaddress/default.nix
index 5e4781ec75032..d36b620710bf7 100644
--- a/pkgs/development/python-modules/cached-ipaddress/default.nix
+++ b/pkgs/development/python-modules/cached-ipaddress/default.nix
@@ -1,54 +1,47 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-cov-stub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "cached-ipaddress";
-  version = "0.3.0";
+  version = "0.5.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "bdraco";
     repo = "cached-ipaddress";
     rev = "refs/tags/v${version}";
-    hash = "sha256-iTQ1DSCZqjAzsf95nYUxnNj5YCb1Y4JIUW5VGIi7yoY=";
+    hash = "sha256-Ec2tW1X0iYdQFd5XFRABwUTPjqxV5lhwT6UEimmF+/o=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace " --cov=cached_ipaddress --cov-report=term-missing:skip-covered" "" \
-      --replace "Cython>=3.0.5" "Cython"
-  '';
-
-  nativeBuildInputs = [
+  build-system = [
     cython
     poetry-core
     setuptools
-    wheel
   ];
 
   nativeCheckInputs = [
+    pytest-cov-stub
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "cached_ipaddress"
-  ];
+  pythonImportsCheck = [ "cached_ipaddress" ];
 
   meta = with lib; {
     description = "Cache construction of ipaddress objects";
     homepage = "https://github.com/bdraco/cached-ipaddress";
-    changelog = "https://github.com/bdraco/cached-ipaddress/blob/${version}/CHANGELOG.md";
+    changelog = "https://github.com/bdraco/cached-ipaddress/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cached-property/default.nix b/pkgs/development/python-modules/cached-property/default.nix
index 555b1ce006e7e..aab2647241626 100644
--- a/pkgs/development/python-modules/cached-property/default.nix
+++ b/pkgs/development/python-modules/cached-property/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pytestCheckHook
-, freezegun
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pytestCheckHook,
+  freezegun,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -40,12 +41,10 @@ buildPythonPackage rec {
     "test_threads_ttl_expiry"
   ];
 
-  pythonImportsCheck = [
-    "cached_property"
-  ];
+  pythonImportsCheck = [ "cached_property" ];
 
   meta = with lib; {
-    description = "A decorator for caching properties in classes";
+    description = "Decorator for caching properties in classes";
     homepage = "https://github.com/pydanny/cached-property";
     changelog = "https://github.com/pydanny/cached-property/releases/tag/${version}";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/cachelib/default.nix b/pkgs/development/python-modules/cachelib/default.nix
index 26b69651ffc34..12e9c4eb14651 100644
--- a/pkgs/development/python-modules/cachelib/default.nix
+++ b/pkgs/development/python-modules/cachelib/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-xprocess
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-xprocess,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/cachetools/default.nix b/pkgs/development/python-modules/cachetools/default.nix
index 8a2f5397d6e12..c5098463552f7 100644
--- a/pkgs/development/python-modules/cachetools/default.nix
+++ b/pkgs/development/python-modules/cachetools/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -24,17 +25,11 @@ buildPythonPackage rec {
     hash = "sha256-CmyAW9uV63OV/zZsWwZkXOWbHfHAJdYFGJsRhpqQ1f4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "cachetools"
-  ];
+  pythonImportsCheck = [ "cachetools" ];
 
   meta = with lib; {
     description = "Extensible memoizing collections and decorators";
diff --git a/pkgs/development/python-modules/cachey/default.nix b/pkgs/development/python-modules/cachey/default.nix
index ac175fa0793a3..a8cb498b20260 100644
--- a/pkgs/development/python-modules/cachey/default.nix
+++ b/pkgs/development/python-modules/cachey/default.nix
@@ -1,11 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, typing-extensions
-, heapdict
-, pytestCheckHook
-, pythonOlder
-}: buildPythonPackage rec {
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  typing-extensions,
+  heapdict,
+  pytestCheckHook,
+  pythonOlder,
+}:
+buildPythonPackage rec {
   pname = "cachey";
   version = "0.2.1";
   format = "setuptools";
@@ -16,11 +18,12 @@
     rev = version;
     hash = "sha256-5USmuufrrWtmgibpfkjo9NtgN30hdl8plJfythmxM4s=";
   };
-  propagatedBuildInputs = [ typing-extensions heapdict ];
-  nativeCheckInputs = [ pytestCheckHook ];
-  pythonImportsCheck = [
-    "cachey"
+  propagatedBuildInputs = [
+    typing-extensions
+    heapdict
   ];
+  nativeCheckInputs = [ pytestCheckHook ];
+  pythonImportsCheck = [ "cachey" ];
   meta = with lib; {
     description = "Caching based on computation time and storage space";
     homepage = "https://github.com/dask/cachey/";
diff --git a/pkgs/development/python-modules/cachier/default.nix b/pkgs/development/python-modules/cachier/default.nix
index e8fe51d4ded7b..93a0def9973ce 100644
--- a/pkgs/development/python-modules/cachier/default.nix
+++ b/pkgs/development/python-modules/cachier/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pythonRelaxDepsHook
-, setuptools
-, watchdog
-, portalocker
-, pytestCheckHook
-, pymongo
-, dnspython
-, pymongo-inmemory
-, pandas
-, birch
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  watchdog,
+  portalocker,
+  pytestCheckHook,
+  pytest-cov-stub,
+  pymongo,
+  dnspython,
+  pymongo-inmemory,
+  pandas,
+  birch,
 }:
 
 buildPythonPackage rec {
   pname = "cachier";
-  version = "3.0.0";
+  version = "3.0.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,13 +26,12 @@ buildPythonPackage rec {
     owner = "python-cachier";
     repo = "cachier";
     rev = "refs/tags/v${version}";
-    hash = "sha256-3rKsgcJQ9RQwosVruD7H99msB8iGtAai320okrCZCTI=";
+    hash = "sha256-VApP1DRs+mjx+SELpdDOm2Sa7zBYHDqD/htFF/eNLu0=";
   };
 
   pythonRemoveDeps = [ "setuptools" ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -40,15 +40,9 @@ buildPythonPackage rec {
     portalocker
   ];
 
-  preCheck = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail  \
-        '"--cov' \
-        '#"--cov'
-  '';
-
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
     pymongo
     dnspython
     pymongo-inmemory
@@ -75,9 +69,7 @@ buildPythonPackage rec {
     export HOME="$(mktemp -d)"
   '';
 
-  pythonImportsCheck = [
-    "cachier"
-  ];
+  pythonImportsCheck = [ "cachier" ];
 
   meta = {
     homepage = "https://github.com/python-cachier/cachier";
diff --git a/pkgs/development/python-modules/cachy/default.nix b/pkgs/development/python-modules/cachy/default.nix
index 8f16a45fe692c..7a6caad1f20a0 100644
--- a/pkgs/development/python-modules/cachy/default.nix
+++ b/pkgs/development/python-modules/cachy/default.nix
@@ -1,7 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi
-, redis
-, python-memcached
-, msgpack
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  redis,
+  python-memcached,
+  msgpack,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/cadquery/default.nix b/pkgs/development/python-modules/cadquery/default.nix
deleted file mode 100644
index 5db0b6ae2c997..0000000000000
--- a/pkgs/development/python-modules/cadquery/default.nix
+++ /dev/null
@@ -1,100 +0,0 @@
-{ lib
-, buildPythonPackage
-, toPythonModule
-, pythonOlder
-, pythonAtLeast
-, fetchFromGitHub
-, pyparsing
-, opencascade-occt
-, stdenv
-, python
-, cmake
-, swig
-, freetype
-, libGL
-, libGLU
-, libX11
-, six
-, pytest
-, makeFontsConf
-, freefont_ttf
-, Cocoa
-}:
-
-let
-  pythonocc-core-cadquery = toPythonModule (stdenv.mkDerivation {
-    pname = "pythonocc-core-cadquery";
-    version = "0.18.2";
-    format = "setuptools";
-
-    src = fetchFromGitHub {
-      owner = "CadQuery";
-      repo = "pythonocc-core";
-      # no proper release to to use, this commit copied from the Anaconda receipe
-      rev = "701e924ae40701cbe6f9992bcbdc2ef22aa9b5ab";
-      sha256 = "07zmiiw74dyj4v0ar5vqkvk30wzcpjjzbi04nsdk5mnlzslmyi6c";
-    };
-
-    nativeBuildInputs = [
-      cmake
-      swig
-    ];
-
-    buildInputs = [
-      python
-      opencascade-occt
-      freetype
-      libGL
-      libGLU
-      libX11
-    ] ++ lib.optionals stdenv.isDarwin [ Cocoa ];
-
-    propagatedBuildInputs = [
-      six
-    ];
-
-    cmakeFlags = [
-      "-Wno-dev"
-      "-DPYTHONOCC_INSTALL_DIRECTORY=${placeholder "out"}/${python.sitePackages}/OCC"
-    ];
-  });
-
-in
-  buildPythonPackage rec {
-    pname = "cadquery";
-    version = "2.0";
-
-    src = fetchFromGitHub {
-      owner = "CadQuery";
-      repo = pname;
-      rev = version;
-      sha256 = "1n63b6cjjrdwdfmwq0zx1xabjnhndk9mgfkm4w7z9ardcfpvg84l";
-    };
-
-    buildInputs = [
-      opencascade-occt
-    ];
-
-    propagatedBuildInputs = [
-      pyparsing
-      pythonocc-core-cadquery
-    ];
-
-    FONTCONFIG_FILE = makeFontsConf {
-      fontDirectories = [ freefont_ttf ];
-    };
-
-    nativeCheckInputs = [
-      pytest
-    ];
-
-    disabled = pythonOlder "3.6" || pythonAtLeast "3.8";
-
-    meta = with lib; {
-      description = "Parametric scripting language for creating and traversing CAD models";
-      homepage = "https://github.com/CadQuery/cadquery";
-      license = licenses.asl20;
-      maintainers = with maintainers; [ marcus7070 ];
-      broken = true;
-    };
-  }
diff --git a/pkgs/development/python-modules/caio/default.nix b/pkgs/development/python-modules/caio/default.nix
index ee1bdc8dc62f2..936fcaf3e95e9 100644
--- a/pkgs/development/python-modules/caio/default.nix
+++ b/pkgs/development/python-modules/caio/default.nix
@@ -1,35 +1,42 @@
-{ lib
-, aiomisc
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  aiomisc,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "caio";
-  version = "0.9.13";
-  format = "setuptools";
+  version = "0.9.17";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "mosquito";
-    repo = pname;
+    repo = "caio";
     rev = "refs/tags/${version}";
-    hash = "sha256-Q87NuL6yZ5uKImQqqdKTMWNyfUOb4NaZDEvNdqZbHDk=";
+    hash = "sha256-aTJ02dCLb3CsT6KmJxkmOzwtg5nuXeBwz+mT7ZTTU9o=";
   };
 
+  build-system = [ setuptools ];
+
   nativeCheckInputs = [
     aiomisc
     pytest-aiohttp
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "caio"
-  ];
+  env.NIX_CFLAGS_COMPILE = toString (
+    lib.optionals stdenv.cc.isClang [ "-Wno-error=implicit-function-declaration" ]
+  );
+
+  pythonImportsCheck = [ "caio" ];
 
   meta = with lib; {
     description = "File operations with asyncio support";
diff --git a/pkgs/development/python-modules/cairocffi/default.nix b/pkgs/development/python-modules/cairocffi/default.nix
index fb0a81e202d97..b871515bc42a1 100644
--- a/pkgs/development/python-modules/cairocffi/default.nix
+++ b/pkgs/development/python-modules/cairocffi/default.nix
@@ -1,34 +1,33 @@
 # FIXME: make gdk-pixbuf dependency optional
-{ stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, lib
-, substituteAll
-, makeFontsConf
-, freefont_ttf
-, pikepdf
-, pytestCheckHook
-, cairo
-, cffi
-, flit-core
-, numpy
-, withXcffib ? false
-, xcffib
-, glib
-, gdk-pixbuf
+{
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  lib,
+  substituteAll,
+  pikepdf,
+  pytestCheckHook,
+  cairo,
+  cffi,
+  flit-core,
+  numpy,
+  withXcffib ? false,
+  xcffib,
+  glib,
+  gdk-pixbuf,
 }:
 
 buildPythonPackage rec {
   pname = "cairocffi";
-  version = "1.6.1";
+  version = "1.7.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-eOa75HNXZAxFPQvpKfpJzQXM4uEobz0qHKnL2n79uLc=";
+    hash = "sha256-LkjuhkiE7Eo6NL+oyauZmfaIKG63FKFaQ+ydBow2VXs=";
   };
 
   patches = [
@@ -43,12 +42,12 @@ buildPythonPackage rec {
     ./fix_test_scaled_font.patch
   ];
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [ cairo cffi ]
-    ++ lib.optional withXcffib xcffib;
+  propagatedBuildInputs = [
+    cairo
+    cffi
+  ] ++ lib.optional withXcffib xcffib;
 
   nativeCheckInputs = [
     numpy
@@ -56,15 +55,13 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "cairocffi"
-  ];
+  pythonImportsCheck = [ "cairocffi" ];
 
   meta = with lib; {
     changelog = "https://github.com/Kozea/cairocffi/blob/v${version}/NEWS.rst";
     homepage = "https://github.com/SimonSapin/cairocffi";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     description = "cffi-based cairo bindings for Python";
   };
 }
diff --git a/pkgs/development/python-modules/cairocffi/dlopen-paths.patch b/pkgs/development/python-modules/cairocffi/dlopen-paths.patch
index 6542b4367eb45..d4cc7061e86d4 100644
--- a/pkgs/development/python-modules/cairocffi/dlopen-paths.patch
+++ b/pkgs/development/python-modules/cairocffi/dlopen-paths.patch
@@ -1,21 +1,13 @@
 Patch dlopen() to allow direct paths to all required libs
 
-This is an update of the patch submitted in
-https://github.com/NixOS/nixpkgs/commit/b13e44e094989d3a902f8c73b22e8d3c0cc7acf4
-by Alexander V. Nikolaev <avn@avnik.info>
-
----
- cairocffi/__init__.py | 34 ++++++++++++++++------------------
- 1 file changed, 16 insertions(+), 18 deletions(-)
-
 diff --git a/cairocffi/__init__.py b/cairocffi/__init__.py
-index 307d58c..43c29e3 100644
+index f917d90..31dab12 100644
 --- a/cairocffi/__init__.py
 +++ b/cairocffi/__init__.py
-@@ -21,28 +21,26 @@ VERSION = __version__ = (Path(__file__).parent / 'VERSION').read_text().strip()
+@@ -22,6 +22,14 @@ VERSION = __version__ = '1.7.1'
  version = '1.17.2'
  version_info = (1, 17, 2)
-
+ 
 +# Use hardcoded soname, because ctypes.util use gcc/objdump which shouldn't be
 +# required for runtime
 +_LIBS = {
@@ -24,8 +16,11 @@ index 307d58c..43c29e3 100644
 +    'gobject-2.0': '@glib@/lib/libgobject-2.0@ext@',
 +    'gdk_pixbuf-2.0': '@gdk_pixbuf@/lib/libgdk_pixbuf-2.0@ext@',
 +}
-+
-
+ 
+ # Python 3.8 no longer searches for DLLs in PATH, so we can add everything in
+ # CAIROCFFI_DLL_DIRECTORIES manually. Note that unlike PATH, add_dll_directory
+@@ -36,26 +44,14 @@ if dll_directories and hasattr(os, 'add_dll_directory'):
+ 
  def dlopen(ffi, library_names, filenames):
      """Try various names for the same library, for different platforms."""
 -    exceptions = []
@@ -33,7 +28,7 @@ index 307d58c..43c29e3 100644
      for library_name in library_names:
 -        library_filename = find_library(library_name)
 -        if library_filename:
--            filenames = (library_filename,) + filenames
+-            filenames = (library_filename, *filenames)
 -        else:
 -            exceptions.append(
 -                'no library called "{}" was found'.format(library_name))
@@ -52,10 +47,8 @@ index 307d58c..43c29e3 100644
 +            lib = ffi.dlopen(path)
 +            if lib:
 +                return lib
-+
+ 
 +    raise OSError("dlopen() failed to load a library: %s as %s" % (library_name, path))
-
-
+ 
  cairo = dlopen(
---
-2.19.2
+     ffi, ('cairo-2', 'cairo', 'libcairo-2'),
diff --git a/pkgs/development/python-modules/cairosvg/default.nix b/pkgs/development/python-modules/cairosvg/default.nix
index ddabd2098824b..a2f64cb79c991 100644
--- a/pkgs/development/python-modules/cairosvg/default.nix
+++ b/pkgs/development/python-modules/cairosvg/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, cairocffi
-, cssselect2
-, defusedxml
-, fetchPypi
-, pillow
-, pytestCheckHook
-, setuptools
-, tinycss2
+{
+  lib,
+  buildPythonPackage,
+  cairocffi,
+  cssselect2,
+  defusedxml,
+  fetchPypi,
+  pillow,
+  pytestCheckHook,
+  setuptools,
+  tinycss2,
 }:
 
 buildPythonPackage rec {
@@ -23,7 +24,13 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [ cairocffi cssselect2 defusedxml pillow tinycss2 ];
+  propagatedBuildInputs = [
+    cairocffi
+    cssselect2
+    defusedxml
+    pillow
+    tinycss2
+  ];
 
   propagatedNativeBuildInputs = [ cairocffi ];
 
@@ -39,9 +46,7 @@ buildPythonPackage rec {
       --replace "--isort" ""
   '';
 
-  pytestFlagsArray = [
-    "cairosvg/test_api.py"
-  ];
+  pytestFlagsArray = [ "cairosvg/test_api.py" ];
 
   pythonImportsCheck = [ "cairosvg" ];
 
@@ -51,6 +56,6 @@ buildPythonPackage rec {
     license = licenses.lgpl3Plus;
     description = "SVG converter based on Cairo";
     mainProgram = "cairosvg";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/caldav/default.nix b/pkgs/development/python-modules/caldav/default.nix
index ad16084d0f1be..9813d9b581bcb 100644
--- a/pkgs/development/python-modules/caldav/default.nix
+++ b/pkgs/development/python-modules/caldav/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, icalendar
-, lxml
-, pytestCheckHook
-, pythonOlder
-, python
-, pytz
-, recurring-ical-events
-, requests
-, setuptools
-, toPythonModule
-, tzlocal
-, vobject
-, xandikos
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  icalendar,
+  lxml,
+  pytestCheckHook,
+  pythonOlder,
+  python,
+  pytz,
+  recurring-ical-events,
+  requests,
+  setuptools,
+  toPythonModule,
+  tzlocal,
+  vobject,
+  xandikos,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     hash = "sha256-R9zXwD0sZE4bg6MTHWWCWWlZ5wH0H6g650zA7AboAo8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     vobject
@@ -56,6 +55,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/python-caldav/caldav";
     changelog = "https://github.com/python-caldav/caldav/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ marenz dotlambda ];
+    maintainers = with maintainers; [
+      marenz
+      dotlambda
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/callee/default.nix b/pkgs/development/python-modules/callee/default.nix
index d7fb37706a594..e20a34f8cd430 100644
--- a/pkgs/development/python-modules/callee/default.nix
+++ b/pkgs/development/python-modules/callee/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-dsXMY3bW/70CmTfCuy5KjxPa+NLCzxzWv5e1aV2NEWE=";
   };
 
-  pythonImportsCheck = [
-    "callee"
-  ];
+  pythonImportsCheck = [ "callee" ];
 
   doCheck = false; # missing dependency
 
diff --git a/pkgs/development/python-modules/calmjs-parse/default.nix b/pkgs/development/python-modules/calmjs-parse/default.nix
index 34a2c00ce33b4..362cc368dc577 100644
--- a/pkgs/development/python-modules/calmjs-parse/default.nix
+++ b/pkgs/development/python-modules/calmjs-parse/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, ply
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  ply,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
       --replace "env['PYTHONPATH'] = 'src'" "env['PYTHONPATH'] += ':src'"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     setuptools
diff --git a/pkgs/development/python-modules/calmjs-types/default.nix b/pkgs/development/python-modules/calmjs-types/default.nix
index 897ddaf79e0c7..906b372572c8a 100644
--- a/pkgs/development/python-modules/calmjs-types/default.nix
+++ b/pkgs/development/python-modules/calmjs-types/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pytestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -12,7 +13,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "calmjs.types";
     inherit version;
-    sha256 = "sha256-EGWYv9mx3RPqs9dnB5t3Bu3hiujL2y/XxyMP7JkjjAQ=";
+    hash = "sha256-EGWYv9mx3RPqs9dnB5t3Bu3hiujL2y/XxyMP7JkjjAQ=";
     extension = "zip";
   };
 
diff --git a/pkgs/development/python-modules/calmjs/default.nix b/pkgs/development/python-modules/calmjs/default.nix
index 031ebfb493f8e..ee3affa9c1bdb 100644
--- a/pkgs/development/python-modules/calmjs/default.nix
+++ b/pkgs/development/python-modules/calmjs/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, calmjs-types
-, calmjs-parse
-, pytestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  calmjs-types,
+  calmjs-parse,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -13,7 +14,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-73NQiY1RMdBrMIlm/VTvHY4dCHL1pQoj6a48CWRos3o=";
+    hash = "sha256-73NQiY1RMdBrMIlm/VTvHY4dCHL1pQoj6a48CWRos3o=";
     extension = "zip";
   };
 
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     calmjs-types
   ];
 
-  checkInputs = [
-    pytestCheckHook
-  ];
+  checkInputs = [ pytestCheckHook ];
 
   # ModuleNotFoundError: No module named 'calmjs.types'
   # Not yet clear how to run these tests correctly
diff --git a/pkgs/development/python-modules/calver/default.nix b/pkgs/development/python-modules/calver/default.nix
index 4b400f218739f..528632743605d 100644
--- a/pkgs/development/python-modules/calver/default.nix
+++ b/pkgs/development/python-modules/calver/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pretend
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pretend,
+  pytestCheckHook,
 }:
 
 let
@@ -45,4 +46,4 @@ let
     };
   };
 in
-  self
+self
diff --git a/pkgs/development/python-modules/calysto-scheme/default.nix b/pkgs/development/python-modules/calysto-scheme/default.nix
index 1e0dc0cd102d5..8c857d45e4f9d 100644
--- a/pkgs/development/python-modules/calysto-scheme/default.nix
+++ b/pkgs/development/python-modules/calysto-scheme/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, metakernel
-, pytestCheckHook
-, yasi
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  metakernel,
+  pytestCheckHook,
+  yasi,
 }:
 
 buildPythonPackage rec {
@@ -23,14 +24,12 @@ buildPythonPackage rec {
     metakernel
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "calysto_scheme" ];
 
   meta = with lib; {
-    description = "A Scheme kernel for Jupyter that can use Python libraries";
+    description = "Scheme kernel for Jupyter that can use Python libraries";
     homepage = "https://github.com/Calysto/calysto_scheme";
     changelog = "https://github.com/Calysto/calysto_scheme/blob/${src.rev}/ChangeLog.md";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/calysto/default.nix b/pkgs/development/python-modules/calysto/default.nix
index 54f7eb044b7f1..04d428e9e6fcf 100644
--- a/pkgs/development/python-modules/calysto/default.nix
+++ b/pkgs/development/python-modules/calysto/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, metakernel
-, svgwrite
-, ipywidgets
-, cairosvg
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  metakernel,
+  svgwrite,
+  ipywidgets,
+  cairosvg,
+  numpy,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/camel-converter/default.nix b/pkgs/development/python-modules/camel-converter/default.nix
index 95967d2300e4d..80bd4e14db8b6 100644
--- a/pkgs/development/python-modules/camel-converter/default.nix
+++ b/pkgs/development/python-modules/camel-converter/default.nix
@@ -5,6 +5,7 @@
   poetry-core,
   pydantic,
   pytestCheckHook,
+  pytest-cov-stub,
   pythonOlder,
 }:
 
@@ -22,18 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-CJbflRI3wfUmPoVuLwZDYcobESmySvnS99PdpSDhDLk=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail "--cov=camel_converter --cov-report term-missing --no-cov-on-fail" ""
-  '';
-
   build-system = [ poetry-core ];
 
   passthru.optional-dependencies = {
     pydantic = [ pydantic ];
   };
 
-  nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.pydantic;
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-cov-stub
+  ] ++ passthru.optional-dependencies.pydantic;
 
   pythonImportsCheck = [ "camel_converter" ];
 
diff --git a/pkgs/development/python-modules/camelot/default.nix b/pkgs/development/python-modules/camelot/default.nix
index ae5a89e80166e..9903faf218071 100644
--- a/pkgs/development/python-modules/camelot/default.nix
+++ b/pkgs/development/python-modules/camelot/default.nix
@@ -1,19 +1,18 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, chardet
-, openpyxl
-, charset-normalizer
-, fetchPypi
-, fetchpatch
-, pythonOlder
-, pandas
-, tabulate
-, click
-, pdfminer-six
-, pypdf
-, opencv4
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  chardet,
+  openpyxl,
+  charset-normalizer,
+  fetchPypi,
+  pythonOlder,
+  pandas,
+  tabulate,
+  click,
+  pdfminer-six,
+  pypdf,
+  opencv4,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -44,12 +43,10 @@ buildPythonPackage rec {
 
   doCheck = false;
 
-  pythonImportsCheck = [
-    "camelot"
-  ];
+  pythonImportsCheck = [ "camelot" ];
 
   meta = with lib; {
-    description = "A Python library to extract tabular data from PDFs";
+    description = "Python library to extract tabular data from PDFs";
     mainProgram = "camelot";
     homepage = "http://camelot-py.readthedocs.io";
     changelog = "https://github.com/camelot-dev/camelot/blob/v${version}/HISTORY.md";
diff --git a/pkgs/development/python-modules/canals/default.nix b/pkgs/development/python-modules/canals/default.nix
index 8494d6dfbd5d6..938a6279e0026 100644
--- a/pkgs/development/python-modules/canals/default.nix
+++ b/pkgs/development/python-modules/canals/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, mkdocs-material
-, mkdocs-mermaid2-plugin
-, mkdocstrings
-, networkx
-, pytestCheckHook
-, pythonOlder
-, requests
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  mkdocs-material,
+  mkdocs-mermaid2-plugin,
+  mkdocstrings,
+  networkx,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-xoJqj/zPBPPCheBxA+8EFRJqUnlP+4aWLEh42q1X1mM=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     networkx
@@ -58,12 +57,10 @@ buildPythonPackage rec {
     "test_draw_pygraphviz"
   ];
 
-  pythonImportsCheck = [
-    "canals"
-  ];
+  pythonImportsCheck = [ "canals" ];
 
   meta = with lib; {
-    description = "A component orchestration engine";
+    description = "Component orchestration engine";
     homepage = "https://github.com/deepset-ai/canals";
     changelog = "https://github.com/deepset-ai/canals/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/canmatrix/default.nix b/pkgs/development/python-modules/canmatrix/default.nix
index 287d14e60d671..634eec1da39d5 100644
--- a/pkgs/development/python-modules/canmatrix/default.nix
+++ b/pkgs/development/python-modules/canmatrix/default.nix
@@ -1,25 +1,28 @@
-{ lib
-, attrs
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, future
-, importlib-metadata
-, ldfparser
-, lxml
-, openpyxl
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, six
-, xlrd
-, xlwt
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  future,
+  importlib-metadata,
+  ldfparser,
+  lxml,
+  openpyxl,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  setuptools,
+  six,
+  versioneer,
+  xlrd,
+  xlwt,
 }:
 
 buildPythonPackage rec {
   pname = "canmatrix";
   version = "1.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -31,45 +34,33 @@ buildPythonPackage rec {
   };
 
   postPatch = ''
-    substituteInPlace setup.py \
-      --replace "version = versioneer.get_version()" 'version = "${version}"'
+    # Remove vendorized versioneer.py
+    rm versioneer.py
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  nativeBuildInputs = [ versioneer ];
+
+  dependencies = [
     attrs
     click
     future
     six
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   passthru.optional-dependencies = {
-    arxml = [
-      lxml
-    ];
-    fibex = [
-      lxml
-    ];
-    kcd = [
-      lxml
-    ];
-    ldf = [
-      ldfparser
-    ];
-    odx = [
-      lxml
-    ];
+    arxml = [ lxml ];
+    fibex = [ lxml ];
+    kcd = [ lxml ];
+    ldf = [ ldfparser ];
+    odx = [ lxml ];
     xls = [
       xlrd
       xlwt
     ];
-    xlsx = [
-      openpyxl
-    ];
-    yaml = [
-      pyyaml
-    ];
+    xlsx = [ openpyxl ];
+    yaml = [ pyyaml ];
   };
 
   nativeCheckInputs = [
@@ -81,13 +72,9 @@ buildPythonPackage rec {
     "-s src/canmatrix"
   ];
 
-  disabledTests = [
-    "long_envvar_name_imports"
-  ];
+  disabledTests = [ "long_envvar_name_imports" ];
 
-  pythonImportsCheck = [
-    "canmatrix"
-  ];
+  pythonImportsCheck = [ "canmatrix" ];
 
   meta = with lib; {
     description = "Support and convert several CAN (Controller Area Network) database formats";
diff --git a/pkgs/development/python-modules/canonicaljson/default.nix b/pkgs/development/python-modules/canonicaljson/default.nix
index 0dd7a02a4aba2..2dffe4fbec029 100644
--- a/pkgs/development/python-modules/canonicaljson/default.nix
+++ b/pkgs/development/python-modules/canonicaljson/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, frozendict
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, simplejson
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  simplejson,
 }:
 
 buildPythonPackage rec {
@@ -20,21 +20,13 @@ buildPythonPackage rec {
     hash = "sha256-4v2u8df63F2ctZvT0NQbBk3dppeAmsQyXc7XIdEvET8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    simplejson
-  ];
+  propagatedBuildInputs = [ simplejson ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "canonicaljson"
-  ];
+  pythonImportsCheck = [ "canonicaljson" ];
 
   meta = with lib; {
     description = "Encodes objects and arrays as RFC 7159 JSON";
diff --git a/pkgs/development/python-modules/canopen/default.nix b/pkgs/development/python-modules/canopen/default.nix
index 09a9f4366a0dd..320dfd776b2da 100644
--- a/pkgs/development/python-modules/canopen/default.nix
+++ b/pkgs/development/python-modules/canopen/default.nix
@@ -1,41 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, can
-, canmatrix
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  python-can,
+  canmatrix,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "canopen";
-  version = "2.2.0";
+  version = "2.3.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-XxhlG5325HabmILpafk0rnc+8kpFqrwzNLWGmCBI0Iw=";
+    hash = "sha256-eSCEqTwTjVsqQG3dLU61ziCPA72P2mD4GtK7jVbGuCc=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
-    can
+    python-can
     canmatrix
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "canopen"
-  ];
+  pythonImportsCheck = [ "canopen" ];
 
   meta = with lib; {
     description = "CANopen stack implementation";
diff --git a/pkgs/development/python-modules/cantools/default.nix b/pkgs/development/python-modules/cantools/default.nix
index 2b87d4de37eaa..a2a65df02e91b 100644
--- a/pkgs/development/python-modules/cantools/default.nix
+++ b/pkgs/development/python-modules/cantools/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, argparse-addons
-, bitstruct
-, buildPythonPackage
-, can
-, crccheck
-, diskcache
-, fetchPypi
-, matplotlib
-, parameterized
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
-, textparser
+{
+  lib,
+  argparse-addons,
+  bitstruct,
+  buildPythonPackage,
+  python-can,
+  crccheck,
+  diskcache,
+  fetchPypi,
+  matplotlib,
+  parameterized,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  textparser,
 }:
 
 buildPythonPackage rec {
@@ -35,24 +36,20 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     argparse-addons
     bitstruct
-    can
+    python-can
     crccheck
     diskcache
     textparser
   ];
 
-  passthru.optional-dependencies.plot = [
-    matplotlib
-  ];
+  passthru.optional-dependencies.plot = [ matplotlib ];
 
   nativeCheckInputs = [
     parameterized
     pytestCheckHook
   ] ++ passthru.optional-dependencies.plot;
 
-  pythonImportsCheck = [
-    "cantools"
-  ];
+  pythonImportsCheck = [ "cantools" ];
 
   meta = with lib; {
     description = "Tools to work with CAN bus";
diff --git a/pkgs/development/python-modules/capstone/4.nix b/pkgs/development/python-modules/capstone/4.nix
index 7c79cfe819428..b7c31d336091e 100644
--- a/pkgs/development/python-modules/capstone/4.nix
+++ b/pkgs/development/python-modules/capstone/4.nix
@@ -1,16 +1,26 @@
-{ lib
-, buildPythonPackage
-, capstone_4
-, stdenv
-, setuptools
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  capstone_4,
+  stdenv,
+  setuptools,
+  fetchpatch,
 }:
 
 buildPythonPackage {
   pname = "capstone";
   inherit (capstone_4) version src;
 
-  sourceRoot = "source/bindings/python";
+  sourceRoot = "${capstone_4.src.name}/bindings/python";
+  patches = [
+    # Drop distutils in python binding (PR 2271)
+    (fetchpatch {
+      name = "drop-distutils-in-python-binding.patch";
+      url = "https://github.com/capstone-engine/capstone/commit/d63211e3acb64fceb8b1c4a0d804b4b027f4ef71.patch";
+      hash = "sha256-zUGeFmm3xH5dzfPJE8nnHwqwFBrsZ7w8LBJAy20/3RI=";
+      stripLen = 2;
+    })
+  ];
 
   postPatch = ''
     ln -s ${capstone_4}/lib/libcapstone${stdenv.targetPlatform.extensions.sharedLibrary} prebuilt/
@@ -20,7 +30,10 @@ buildPythonPackage {
 
   # aarch64 only available from MacOS SDK 11 onwards, so fix the version tag.
   # otherwise, bdist_wheel may detect "macosx_10_6_arm64" which doesn't make sense.
-  setupPyBuildFlags = lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [ "--plat-name" "macosx_11_0" ];
+  setupPyBuildFlags = lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
+    "--plat-name"
+    "macosx_11_0"
+  ];
 
   propagatedBuildInputs = [ setuptools ];
 
@@ -34,7 +47,9 @@ buildPythonPackage {
     homepage = "http://www.capstone-engine.org/";
     license = licenses.bsdOriginal;
     description = "Python bindings for Capstone disassembly engine";
-    maintainers = with maintainers; [ bennofs ris ];
-    broken = pythonAtLeast "3.12"; # uses distutils
+    maintainers = with maintainers; [
+      bennofs
+      ris
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/capstone/default.nix b/pkgs/development/python-modules/capstone/default.nix
index 405dbe767da6c..e735871268e52 100644
--- a/pkgs/development/python-modules/capstone/default.nix
+++ b/pkgs/development/python-modules/capstone/default.nix
@@ -1,21 +1,27 @@
-{ lib
-, buildPythonPackage
-, capstone
-, stdenv
-, setuptools
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  capstone,
+  stdenv,
+  setuptools,
+  fetchpatch,
 }:
 
 buildPythonPackage rec {
   pname = "capstone";
   version = lib.getVersion capstone;
-  format = "setuptools";
-
-  # distutils usage
-  disabled = pythonAtLeast "3.12";
 
   src = capstone.src;
   sourceRoot = "${src.name}/bindings/python";
+  patches = [
+    # Drop distutils in python binding (PR 2271)
+    (fetchpatch {
+      name = "drop-distutils-in-python-binding.patch";
+      url = "https://github.com/capstone-engine/capstone/commit/d63211e3acb64fceb8b1c4a0d804b4b027f4ef71.patch";
+      hash = "sha256-zUGeFmm3xH5dzfPJE8nnHwqwFBrsZ7w8LBJAy20/3RI=";
+      stripLen = 2;
+    })
+  ];
 
   # libcapstone.a is not built with BUILD_SHARED_LIBS. For some reason setup.py
   # checks if it exists but it is not really needed. Most likely a bug in setup.py.
@@ -27,7 +33,10 @@ buildPythonPackage rec {
 
   # aarch64 only available from MacOS SDK 11 onwards, so fix the version tag.
   # otherwise, bdist_wheel may detect "macosx_10_6_arm64" which doesn't make sense.
-  setupPyBuildFlags = lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [ "--plat-name" "macosx_11_0" ];
+  setupPyBuildFlags = lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
+    "--plat-name"
+    "macosx_11_0"
+  ];
 
   propagatedBuildInputs = [ setuptools ];
 
@@ -41,6 +50,9 @@ buildPythonPackage rec {
     homepage = "http://www.capstone-engine.org/";
     license = licenses.bsdOriginal;
     description = "Python bindings for Capstone disassembly engine";
-    maintainers = with maintainers; [ bennofs ris ];
+    maintainers = with maintainers; [
+      bennofs
+      ris
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/captcha/default.nix b/pkgs/development/python-modules/captcha/default.nix
index 807272da5b1c7..b7d7e55ad4e29 100644
--- a/pkgs/development/python-modules/captcha/default.nix
+++ b/pkgs/development/python-modules/captcha/default.nix
@@ -1,34 +1,37 @@
-{ lib
-, fetchFromGitHub
-, pythonOlder
-, buildPythonPackage
-, pillow
-, pytestCheckHook
+{
+  lib,
+  fetchFromGitHub,
+  pythonOlder,
+  buildPythonPackage,
+  pillow,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "captcha";
-  version = "0.5.0";
+  version = "0.6.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  format = "setuptools";
-
   src = fetchFromGitHub {
     owner = "lepture";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-TPPuf0BRZPSHPSF0HuGxhjhoSyZQ7r86kSjkrztgZ5w=";
+    repo = "captcha";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-5d5gts+BXS5OKVziR9cLczsD2QMXZ/n31sPEq+gPlxk=";
   };
 
-  propagatedBuildInputs = [ pillow ];
+  dependencies = [ pillow ];
+
+  nativeBuildInputs = [ setuptools ];
 
   pythonImportsCheck = [ "captcha" ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A captcha library that generates audio and image CAPTCHAs";
+    description = "Captcha library that generates audio and image CAPTCHAs";
     homepage = "https://github.com/lepture/captcha";
     license = licenses.bsd3;
     maintainers = with maintainers; [ Flakebi ];
diff --git a/pkgs/development/python-modules/capturer/default.nix b/pkgs/development/python-modules/capturer/default.nix
index 51d5064aefa3f..b9895dd18f974 100644
--- a/pkgs/development/python-modules/capturer/default.nix
+++ b/pkgs/development/python-modules/capturer/default.nix
@@ -1,4 +1,11 @@
-{ stdenv, lib, buildPythonPackage, fetchFromGitHub, humanfriendly, pytestCheckHook }:
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  humanfriendly,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "capturer";
@@ -15,7 +22,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ humanfriendly ];
 
   # hangs on darwin
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
   nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/carbon/default.nix b/pkgs/development/python-modules/carbon/default.nix
index f6647abbc57e8..4b253740d6d65 100644
--- a/pkgs/development/python-modules/carbon/default.nix
+++ b/pkgs/development/python-modules/carbon/default.nix
@@ -1,10 +1,24 @@
-{ lib, buildPythonPackage, fetchPypi, twisted, whisper, txamqp, cachetools, urllib3
+{
+  lib,
+  buildPythonPackage,
+  cachetools,
+  fetchPypi,
+  nixosTests,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  twisted,
+  txamqp,
+  urllib3,
+  whisper,
 }:
 
 buildPythonPackage rec {
   pname = "carbon";
   version = "1.1.10";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
 
   src = fetchPypi {
     inherit pname version;
@@ -12,15 +26,41 @@ buildPythonPackage rec {
   };
 
   # Carbon-s default installation is /opt/graphite. This env variable ensures
-  # carbon is installed as a regular python module.
-  GRAPHITE_NO_PREFIX="True";
+  # carbon is installed as a regular Python module.
+  GRAPHITE_NO_PREFIX = "True";
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace-fail "cf.readfp(f, 'setup.cfg')" "cf.read(f, 'setup.cfg')"
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    cachetools
+    twisted
+    txamqp
+    urllib3
+    whisper
+  ];
+
+  # Tests are not shipped with PyPI
+  doCheck = false;
+
+  passthru.tests = {
+    inherit (nixosTests) graphite;
+  };
 
-  propagatedBuildInputs = [ twisted whisper txamqp cachetools urllib3 ];
+  pythonImportsCheck = [ "carbon" ];
 
   meta = with lib; {
-    homepage = "http://graphiteapp.org/";
     description = "Backend data caching and persistence daemon for Graphite";
-    maintainers = with maintainers; [ offline basvandijk ];
+    homepage = "https://github.com/graphite-project/carbon";
+    changelog = "https://github.com/graphite-project/carbon/releases/tag/${version}";
     license = licenses.asl20;
+    maintainers = with maintainers; [
+      offline
+      basvandijk
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/cart/default.nix b/pkgs/development/python-modules/cart/default.nix
index 7373ac0691ccb..54b25617a0c70 100644
--- a/pkgs/development/python-modules/cart/default.nix
+++ b/pkgs/development/python-modules/cart/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, pycryptodome
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  pycryptodome,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,21 +21,13 @@ buildPythonPackage rec {
     hash = "sha256-0dHdXb4v92681xL21FsrIkNgNQ9R5ULV1lnSCITZzP8=";
   };
 
-  propagatedBuildInputs = [
-    pycryptodome
-  ];
+  propagatedBuildInputs = [ pycryptodome ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "unittests"
-  ];
+  pytestFlagsArray = [ "unittests" ];
 
-  pythonImportsCheck = [
-    "cart"
-  ];
+  pythonImportsCheck = [ "cart" ];
 
   meta = with lib; {
     description = "Python module for the CaRT Neutering format";
diff --git a/pkgs/development/python-modules/cartopy/default.nix b/pkgs/development/python-modules/cartopy/default.nix
index 05529a9c00da4..dbd7659ab81e9 100644
--- a/pkgs/development/python-modules/cartopy/default.nix
+++ b/pkgs/development/python-modules/cartopy/default.nix
@@ -1,29 +1,30 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, fetchpatch
-, cython
-, setuptools-scm
-, geos
-, proj
-, matplotlib
-, numpy
-, pyproj
-, pyshp
-, shapely
-, owslib
-, pillow
-, gdal
-, scipy
-, fontconfig
-, pytest-mpl
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchpatch,
+  fetchPypi,
+  cython,
+  setuptools-scm,
+  geos,
+  proj,
+  matplotlib,
+  numpy,
+  pyproj,
+  pyshp,
+  shapely,
+  owslib,
+  pillow,
+  gdal,
+  scipy,
+  fontconfig,
+  pytest-mpl,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "cartopy";
-  version = "0.22.0";
+  version = "0.23.0";
 
   disabled = pythonOlder "3.8";
 
@@ -32,9 +33,18 @@ buildPythonPackage rec {
   src = fetchPypi {
     inherit version;
     pname = "Cartopy";
-    hash = "sha256-swD5ASCTHUPxHvh8Bk6h2s7BtZpJQKp26/gs8JVIu0k=";
+    hash = "sha256-Ix83s1cB8rox2UlZzKdebaBMLuo6fxTOHHXuOw6udnY=";
   };
 
+  patches = [
+    # Some tests in the 0.23.0 release are failing due to missing network markers. Revisit after update.
+    (fetchpatch {
+      name = "mnt-add-missing-needs-network-markers.patch";
+      url = "https://github.com/SciTools/cartopy/commit/2403847ea69c3d95e899ad5d0cab32ac6017df0e.patch";
+      hash = "sha256-aGBUX4jFn7GgoqmHVC51DmS+ga3GcQGKfkut++x67Q0=";
+    })
+  ];
+
   nativeBuildInputs = [
     cython
     geos # for geos-config
@@ -56,8 +66,15 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    ows = [ owslib pillow ];
-    plotting = [ gdal pillow scipy ];
+    ows = [
+      owslib
+      pillow
+    ];
+    plotting = [
+      gdal
+      pillow
+      scipy
+    ];
   };
 
   nativeCheckInputs = [
@@ -78,6 +95,7 @@ buildPythonPackage rec {
   ];
 
   disabledTests = [
+    "test_gridliner_constrained_adjust_datalim"
     "test_gridliner_labels_bbox_style"
   ];
 
@@ -86,6 +104,6 @@ buildPythonPackage rec {
     mainProgram = "feature_download";
     license = licenses.lgpl3Plus;
     homepage = "https://scitools.org.uk/cartopy/docs/latest/";
-    maintainers = with maintainers; [ mredaelli ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/casa-formats-io/default.nix b/pkgs/development/python-modules/casa-formats-io/default.nix
index 4e4d10bd2731f..49f1b18dc8bd3 100644
--- a/pkgs/development/python-modules/casa-formats-io/default.nix
+++ b/pkgs/development/python-modules/casa-formats-io/default.nix
@@ -1,41 +1,48 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, astropy
-, dask
-, numpy
-, oldest-supported-numpy
-, setuptools-scm
-, wheel
+{
+  lib,
+  astropy,
+  buildPythonPackage,
+  dask,
+  fetchPypi,
+  numpy,
+  oldest-supported-numpy,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "casa-formats-io";
-  version = "0.2.2";
-  format = "pyproject";
+  version = "0.3.0";
+  prproject = true;
+
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-EOX+tal9nrON2K7mHVYSTTxja6mu2k3Bag8bhL3JHJs=";
+    pname = "casa_formats_io";
+    inherit version;
+    hash = "sha256-FpQj0XeZ7vvOzUM/+5qG6FRwNXl3gzoUBItYdQ1M4m4=";
   };
 
-  nativeBuildInputs = [
-    oldest-supported-numpy
-    setuptools-scm
-    wheel
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [ astropy dask numpy ];
+  nativeBuildInputs = [ oldest-supported-numpy ];
+
+  dependencies = [
+    astropy
+    dask
+    numpy
+  ];
 
   # Tests require a large (800 Mb) dataset
   doCheck = false;
 
   pythonImportsCheck = [ "casa_formats_io" ];
 
-  meta = {
+  meta = with lib; {
     description = "Dask-based reader for CASA data";
     homepage = "https://casa-formats-io.readthedocs.io/";
-    license = lib.licenses.lgpl2Only;
-    maintainers = with lib.maintainers; [ smaret ];
+    changelog = "https://github.com/radio-astro-tools/casa-formats-io/blob/v${version}/CHANGES.rst";
+    license = licenses.lgpl2Only;
+    maintainers = with maintainers; [ smaret ];
   };
 }
diff --git a/pkgs/development/python-modules/casbin/default.nix b/pkgs/development/python-modules/casbin/default.nix
index 64fe9705ea619..49c9b305626b6 100644
--- a/pkgs/development/python-modules/casbin/default.nix
+++ b/pkgs/development/python-modules/casbin/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, simpleeval
-, wcmatch
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  simpleeval,
+  wcmatch,
 }:
 
 buildPythonPackage rec {
   pname = "casbin";
-  version = "1.36.0";
+  version = "1.36.3";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -19,31 +20,25 @@ buildPythonPackage rec {
     owner = "casbin";
     repo = "pycasbin";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ebmCcu4OvDI7k4K6Jk5BgmXi5HtLMAV3PMkLd2LC0pY=";
+    hash = "sha256-JTAd7Nkreyfczomki05WHuuJCFWspvG8i6DAWaQI6fs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     simpleeval
     wcmatch
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "casbin"
-  ];
+  pythonImportsCheck = [ "casbin" ];
 
   meta = with lib; {
     description = "Authorization library that supports access control models like ACL, RBAC and ABAC";
     homepage = "https://github.com/casbin/pycasbin";
     changelog = "https://github.com/casbin/pycasbin/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/case/default.nix b/pkgs/development/python-modules/case/default.nix
deleted file mode 100644
index 5a244096bcd5c..0000000000000
--- a/pkgs/development/python-modules/case/default.nix
+++ /dev/null
@@ -1,51 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pynose
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools
-, six
-}:
-
-buildPythonPackage rec {
-  pname = "case";
-  version = "1.5.3";
-  pyproject = true;
-
-  disabled = pythonOlder "3.7";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "48432b01d91913451c3512c5b90e31b0f348f1074b166a3431085eb70d784fb1";
-  };
-
-  build-system = [
-    setuptools
-    pythonRelaxDepsHook
-  ];
-
-  pythonRemoveDeps = [
-    # replaced with pynopse for python 3.12 compat
-    "nose"
-  ];
-
-  dependencies = [
-    pynose
-    six
-  ];
-
-  # No real unittests, only coverage
-  doCheck = false;
-
-  pythonImportsCheck = [
-    "case"
-  ];
-
-  meta = with lib; {
-    homepage = "https://github.com/celery/case";
-    description = "Utilities for unittests handling";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
-  };
-}
diff --git a/pkgs/development/python-modules/cashaddress/default.nix b/pkgs/development/python-modules/cashaddress/default.nix
index 8458f9b7fba61..ec7d20a9af681 100644
--- a/pkgs/development/python-modules/cashaddress/default.nix
+++ b/pkgs/development/python-modules/cashaddress/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-4izWD2KZqy1F7CAgdbe1fpjMlMZC0clrkHKS9IIQuoc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "cashaddress"
-  ];
+  pythonImportsCheck = [ "cashaddress" ];
 
   meta = with lib; {
     description = "Python tool for convert bitcoin cash legacy addresses";
diff --git a/pkgs/development/python-modules/cashews/default.nix b/pkgs/development/python-modules/cashews/default.nix
new file mode 100644
index 0000000000000..d5f0801c358f8
--- /dev/null
+++ b/pkgs/development/python-modules/cashews/default.nix
@@ -0,0 +1,70 @@
+{
+  bitarray,
+  buildPythonPackage,
+  dill,
+  diskcache,
+  fetchFromGitHub,
+  hiredis,
+  hypothesis,
+  lib,
+  pytest,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytest-rerunfailures,
+  pytestCheckHook,
+  redis,
+  setuptools,
+  xxhash,
+}:
+
+buildPythonPackage rec {
+  pname = "cashews";
+  version = "7.2.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "Krukov";
+    repo = "cashews";
+    rev = "refs/tags/${version}";
+    hash = "sha256-7T9M8ioeTjW7OmcHyxZ6awNfp9kVU8Hi+Lgy17jXxK4=";
+  };
+
+  build-system = [ setuptools ];
+
+  passthru.optional-dependencies = {
+    dill = [ dill ];
+    diskcache = [ diskcache ];
+    redis = [ redis ];
+    speedup = [
+      bitarray
+      hiredis
+      xxhash
+    ];
+  };
+
+  nativeCheckInputs = [
+    hypothesis
+    pytest
+    pytest-asyncio
+    pytest-cov-stub
+    pytest-rerunfailures
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # these tests require too many dependencies
+    "redis"
+    "diskcache"
+    "integration"
+  ];
+
+  pythonImportsCheck = [ "cashews" ];
+
+  meta = {
+    description = "Cache tools with async power";
+    homepage = "https://github.com/Krukov/cashews/";
+    changelog = "https://github.com/Krukov/cashews/releases/tag/${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ moraxyc ];
+  };
+}
diff --git a/pkgs/development/python-modules/cassandra-driver/default.nix b/pkgs/development/python-modules/cassandra-driver/default.nix
index ad5364ccd3857..0f03b20e196df 100644
--- a/pkgs/development/python-modules/cassandra-driver/default.nix
+++ b/pkgs/development/python-modules/cassandra-driver/default.nix
@@ -1,34 +1,33 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, cryptography
-, cython_0
-, eventlet
-, fetchFromGitHub
-, geomet
-, gevent
-, gremlinpython
-, iana-etc
-, libev
-, libredirect
-, mock
-, nose
-, pytestCheckHook
-, pythonOlder
-, pytz
-, pyyaml
-, scales
-, six
-, sure
-, twisted
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cryptography,
+  cython,
+  eventlet,
+  fetchFromGitHub,
+  fetchpatch2,
+  geomet,
+  gevent,
+  gremlinpython,
+  iana-etc,
+  libev,
+  libredirect,
+  pytestCheckHook,
+  pytz,
+  pyyaml,
+  scales,
+  six,
+  sure,
+  twisted,
+  setuptools,
+  distutils,
 }:
 
 buildPythonPackage rec {
   pname = "cassandra-driver";
   version = "3.29.1";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.7";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "datastax";
@@ -37,66 +36,86 @@ buildPythonPackage rec {
     hash = "sha256-pnNm5Pd5k4bt+s3GrUUDWRpSdqNSM89GiX8DZKYzW1E=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace 'geomet>=0.1,<0.3' 'geomet'
-  '';
-
-  nativeBuildInputs = [
-    cython_0
+  patches = [
+    # https://github.com/datastax/python-driver/pull/1201
+    # Also needed for below patch to apply
+    (fetchpatch2 {
+      name = "remove-mock-dependency.patch";
+      url = "https://github.com/datastax/python-driver/commit/9aca00be33d96559f0eabc1c8a26bb439dcebbd7.patch";
+      hash = "sha256-ZN95V8ebbjahzqBat2oKBJLfu0fqbWMvAu0DzfVGw8I=";
+    })
+    # https://github.com/datastax/python-driver/pull/1215
+    (fetchpatch2 {
+      name = "convert-to-pytest.patch";
+      url = "https://github.com/datastax/python-driver/commit/9952e2ab22c7e034b96cc89330791d73c221546b.patch";
+      hash = "sha256-xa2aV6drBcgkQT05kt44vwupg3oMHLbcbZSQ7EHKnko=";
+    })
+    # https://github.com/datastax/python-driver/pull/1195
+    (fetchpatch2 {
+      name = "remove-assertRaisesRegexp.patch";
+      url = "https://github.com/datastax/python-driver/commit/622523b83971e8a181eb4853b7d877420c0351ef.patch";
+      hash = "sha256-Q8pRhHBLKyenMfrITf8kDv3BbsSCDAmVisTr4jSAIvA=";
+    })
   ];
 
-  buildInputs = [
-    libev
+  pythonRelaxDeps = [ "geomet" ];
+
+  build-system = [
+    distutils
+    setuptools
+    cython
   ];
 
-  propagatedBuildInputs = [
+  buildInputs = [ libev ];
+
+  dependencies = [
     six
     geomet
   ];
 
   nativeCheckInputs = [
     pytestCheckHook
-    mock
-    nose
     pytz
     pyyaml
     sure
   ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
 
+  # This is used to determine the version of cython that can be used
+  CASS_DRIVER_ALLOWED_CYTHON_VERSION = cython.version;
+
   # Make /etc/protocols accessible to allow socket.getprotobyname('tcp') in sandbox,
   # also /etc/resolv.conf is referenced by some tests
-  preCheck = (lib.optionalString stdenv.isLinux ''
-    echo "nameserver 127.0.0.1" > resolv.conf
-    export NIX_REDIRECTS=/etc/protocols=${iana-etc}/etc/protocols:/etc/resolv.conf=$(realpath resolv.conf)
-    export LD_PRELOAD=${libredirect}/lib/libredirect.so
-  '') + ''
-    # increase tolerance for time-based test
-    substituteInPlace tests/unit/io/utils.py --replace 'delta=.15' 'delta=.3'
-
-    export HOME=$(mktemp -d)
-    # cythonize this before we hide the source dir as it references
-    # one of its files
-    cythonize -i tests/unit/cython/types_testhelper.pyx
-
-    mv cassandra .cassandra.hidden
-  '';
-
-  pythonImportsCheck = [
-    "cassandra"
-  ];
+  preCheck =
+    (lib.optionalString stdenv.hostPlatform.isLinux ''
+      echo "nameserver 127.0.0.1" > resolv.conf
+      export NIX_REDIRECTS=/etc/protocols=${iana-etc}/etc/protocols:/etc/resolv.conf=$(realpath resolv.conf)
+      export LD_PRELOAD=${libredirect}/lib/libredirect.so
+    '')
+    + ''
+      # increase tolerance for time-based test
+      substituteInPlace tests/unit/io/utils.py --replace 'delta=.15' 'delta=.3'
+
+      export HOME=$(mktemp -d)
+      # cythonize this before we hide the source dir as it references
+      # one of its files
+      cythonize -i tests/unit/cython/types_testhelper.pyx
+
+      mv cassandra .cassandra.hidden
+    '';
+
+  pythonImportsCheck = [ "cassandra" ];
 
   postCheck = ''
     unset NIX_REDIRECTS LD_PRELOAD
   '';
 
-  pytestFlagsArray = [
-    "tests/unit"
-  ];
+  pytestFlagsArray = [ "tests/unit" ];
 
   disabledTestPaths = [
     # requires puresasl
     "tests/unit/advanced/test_auth.py"
+    # Uses asyncore, which is deprecated in python 3.12+
+    "tests/unit/io/test_asyncorereactor.py"
   ];
 
   disabledTests = [
@@ -117,11 +136,11 @@ buildPythonPackage rec {
     twisted = [ twisted ];
   };
 
-  meta = with lib; {
-    description = "A Python client driver for Apache Cassandra";
+  meta = {
+    description = "Python client driver for Apache Cassandra";
     homepage = "http://datastax.github.io/python-driver";
     changelog = "https://github.com/datastax/python-driver/blob/${version}/CHANGELOG.rst";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ ris ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ ris ];
   };
 }
diff --git a/pkgs/development/python-modules/castepxbin/default.nix b/pkgs/development/python-modules/castepxbin/default.nix
index 007a9543d6f18..7fa81bbbf9878 100644
--- a/pkgs/development/python-modules/castepxbin/default.nix
+++ b/pkgs/development/python-modules/castepxbin/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, flit-core
-, numpy
-, scipy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  flit-core,
+  numpy,
+  scipy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,21 +24,17 @@ buildPythonPackage rec {
     hash = "sha256-6kumVnm4PLRxuKO6Uz0iHzfYuu21hFC7EPRsc3S1kxE=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     numpy
     scipy
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A collection of readers for CASTEP binary outputs";
+    description = "Collection of readers for CASTEP binary outputs";
     homepage = "https://github.com/zhubonan/castepxbin";
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/pkgs/development/python-modules/casttube/default.nix b/pkgs/development/python-modules/casttube/default.nix
index 4d836dc052fea..4b6e6b1c243ce 100644
--- a/pkgs/development/python-modules/casttube/default.nix
+++ b/pkgs/development/python-modules/casttube/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, requests }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+}:
 
 buildPythonPackage rec {
   pname = "casttube";
diff --git a/pkgs/development/python-modules/catalogue/default.nix b/pkgs/development/python-modules/catalogue/default.nix
index b417dba120f62..0ad13f1f28c2d 100644
--- a/pkgs/development/python-modules/catalogue/default.nix
+++ b/pkgs/development/python-modules/catalogue/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, setuptools
-, typing-extensions
-, zipp
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
+  zipp,
 }:
 
 buildPythonPackage rec {
@@ -21,22 +21,16 @@ buildPythonPackage rec {
     hash = "sha256-T1baqUCRPT8J1YnBkcdOWm1Rdis6njfdU7dDev1s2hU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [
     typing-extensions
     zipp
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "catalogue"
-  ];
+  pythonImportsCheck = [ "catalogue" ];
 
   meta = with lib; {
     description = "Tiny library for adding function or object registries";
diff --git a/pkgs/development/python-modules/catboost/default.nix b/pkgs/development/python-modules/catboost/default.nix
index 6795655f48406..98e4f0869ccb8 100644
--- a/pkgs/development/python-modules/catboost/default.nix
+++ b/pkgs/development/python-modules/catboost/default.nix
@@ -1,20 +1,26 @@
-{ lib
-, buildPythonPackage
-, catboost
-, python
-, graphviz
-, matplotlib
-, numpy
-, pandas
-, plotly
-, scipy
-, setuptools
-, six
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  catboost,
+  python,
+  graphviz,
+  matplotlib,
+  numpy,
+  pandas,
+  plotly,
+  scipy,
+  setuptools,
+  six,
+  wheel,
 }:
 
 buildPythonPackage rec {
-  inherit (catboost) pname version src meta;
+  inherit (catboost)
+    pname
+    version
+    src
+    meta
+    ;
   format = "pyproject";
 
   sourceRoot = "${src.name}/catboost/python-package";
diff --git a/pkgs/development/python-modules/catkin-pkg/default.nix b/pkgs/development/python-modules/catkin-pkg/default.nix
index c9ddf02b05f47..a09cc9fd444eb 100644
--- a/pkgs/development/python-modules/catkin-pkg/default.nix
+++ b/pkgs/development/python-modules/catkin-pkg/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "catkin-pkg";
-  version = "0.5.2";
+  version = "1.0.0";
 
   pyproject = true;
 
@@ -19,15 +19,16 @@ buildPythonPackage rec {
     owner = "ros-infrastructure";
     repo = "catkin_pkg";
     rev = version;
-    hash = "sha256-DjaPpLDsLpYOZukf5tYe6ZetSNTe/DJ2lS9BUsehZ8k=";
+    hash = "sha256-lHUKhE9dQLO1MbkstUEiGrHc9Rm+bY/AmgLyh7AbvFQ=";
   };
 
-  nativeBuildInputs = [ setuptools ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     docutils
     pyparsing
     python-dateutil
+    setuptools
   ];
 
   pythonImportsCheck = [ "catkin_pkg" ];
@@ -37,7 +38,8 @@ buildPythonPackage rec {
   disabledTestPaths = [ "test/test_flake8.py" ];
 
   meta = {
-    description = "Library for retrieving information about catkin packages.";
+    changelog = "https://github.com/ros-infrastructure/catkin_pkg/blob/${version}/CHANGELOG.rst";
+    description = "Library for retrieving information about catkin packages";
     homepage = "http://wiki.ros.org/catkin_pkg";
     license = lib.licenses.bsd3;
     maintainers = with lib.maintainers; [ jnsgruk ];
diff --git a/pkgs/development/python-modules/catppuccin/default.nix b/pkgs/development/python-modules/catppuccin/default.nix
index 72b0a4ff42fe9..25b94db8f5ae7 100644
--- a/pkgs/development/python-modules/catppuccin/default.nix
+++ b/pkgs/development/python-modules/catppuccin/default.nix
@@ -1,16 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, poetry-dynamic-versioning
-, pygments
-, rich
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  poetry-dynamic-versioning,
+  matplotlib,
+  pygments,
+  rich,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "catppuccin";
-  version = "2.2.0";
+  version = "2.3.4";
 
   pyproject = true;
 
@@ -18,7 +20,7 @@ buildPythonPackage rec {
     owner = "catppuccin";
     repo = "python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+V1rln3FlFvs1FEIANIch7k/b2EsI9xBxhg3Bwg99+I=";
+    hash = "sha256-0+sbf2m0vJCf6EOl6DMqgtL35RJh+rehi/p0ylTPJK8=";
   };
 
   build-system = [
@@ -27,20 +29,22 @@ buildPythonPackage rec {
   ];
 
   optional-dependencies = {
+    matplotlib = [ matplotlib ];
     pygments = [ pygments ];
     rich = [ rich ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ lib.flatten (lib.attrValues optional-dependencies);
+  nativeCheckInputs = [ pytestCheckHook ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
   pythonImportsCheck = [ "catppuccin" ];
 
   meta = {
     description = "Soothing pastel theme for Python";
     homepage = "https://github.com/catppuccin/python";
-    maintainers = with lib.maintainers; [ fufexan tomasajt ];
+    maintainers = with lib.maintainers; [
+      fufexan
+      tomasajt
+    ];
     license = lib.licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/cattrs/default.nix b/pkgs/development/python-modules/cattrs/default.nix
index 304069b660d28..2e48750ccb1ef 100644
--- a/pkgs/development/python-modules/cattrs/default.nix
+++ b/pkgs/development/python-modules/cattrs/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, attrs
-, buildPythonPackage
-, cbor2
-, fetchFromGitHub
-, exceptiongroup
-, hatchling
-, hatch-vcs
-, hypothesis
-, immutables
-, motor
-, msgpack
-, orjson
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, tomlkit
-, typing-extensions
-, ujson
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  cbor2,
+  fetchFromGitHub,
+  exceptiongroup,
+  hatchling,
+  hatch-vcs,
+  hypothesis,
+  immutables,
+  motor,
+  msgpack,
+  orjson,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  tomlkit,
+  typing-extensions,
+  ujson,
 }:
 
 buildPythonPackage rec {
@@ -39,12 +40,12 @@ buildPythonPackage rec {
     hatch-vcs
   ];
 
-  propagatedBuildInputs = [
-    attrs
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    exceptiongroup
-    typing-extensions
-  ];
+  propagatedBuildInputs =
+    [ attrs ]
+    ++ lib.optionals (pythonOlder "3.11") [
+      exceptiongroup
+      typing-extensions
+    ];
 
   nativeCheckInputs = [
     cbor2
@@ -61,7 +62,6 @@ buildPythonPackage rec {
     ujson
   ];
 
-
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace "-l --benchmark-sort=fullname --benchmark-warmup=true --benchmark-warmup-iterations=5  --benchmark-group-by=fullname" ""
@@ -89,9 +89,7 @@ buildPythonPackage rec {
     "test_tomlkit"
   ];
 
-  pythonImportsCheck = [
-    "cattr"
-  ];
+  pythonImportsCheck = [ "cattr" ];
 
   meta = with lib; {
     description = "Python custom class converters for attrs";
diff --git a/pkgs/development/python-modules/causal-conv1d/default.nix b/pkgs/development/python-modules/causal-conv1d/default.nix
new file mode 100644
index 0000000000000..0653959ed6da4
--- /dev/null
+++ b/pkgs/development/python-modules/causal-conv1d/default.nix
@@ -0,0 +1,69 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ninja,
+  setuptools,
+  torch,
+  cudaPackages,
+  rocmPackages,
+  config,
+  cudaSupport ? config.cudaSupport,
+  which,
+}:
+
+buildPythonPackage rec {
+  pname = "causal-conv1d";
+  version = "1.4.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "Dao-AILab";
+    repo = "causal-conv1d";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-p5x5u3zEmEMN3mWd88o3jmcpKUnovTvn7I9jIOj/ie0=";
+  };
+
+  build-system = [
+    ninja
+    setuptools
+    torch
+  ];
+
+  nativeBuildInputs = [ which ];
+
+  buildInputs = (
+    lib.optionals cudaSupport (
+      with cudaPackages;
+      [
+        cuda_cudart # cuda_runtime.h, -lcudart
+        cuda_cccl
+        libcusparse # cusparse.h
+        libcusolver # cusolverDn.h
+        cuda_nvcc
+        libcublas
+      ]
+    )
+  );
+
+  dependencies = [
+    torch
+  ];
+
+  # pytest tests not enabled due to nvidia GPU dependency
+  pythonImportsCheck = [ "causal_conv1d" ];
+
+  env = {
+    CAUSAL_CONV1D_FORCE_BUILD = "TRUE";
+  } // lib.optionalAttrs cudaSupport { CUDA_HOME = "${lib.getDev cudaPackages.cuda_nvcc}"; };
+
+  meta = with lib; {
+    description = "Causal depthwise conv1d in CUDA with a PyTorch interface";
+    homepage = "https://github.com/Dao-AILab/causal-conv1d";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ cfhammill ];
+    # The package requires CUDA or ROCm, the ROCm build hasn't
+    # been completed or tested, so broken if not using cuda.
+    broken = !cudaSupport;
+  };
+}
diff --git a/pkgs/development/python-modules/cbor/default.nix b/pkgs/development/python-modules/cbor/default.nix
index 551a0567ce4bc..63d9ddfc70096 100644
--- a/pkgs/development/python-modules/cbor/default.nix
+++ b/pkgs/development/python-modules/cbor/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "cbor";
diff --git a/pkgs/development/python-modules/cbor2/default.nix b/pkgs/development/python-modules/cbor2/default.nix
index 73f994cce5a8f..aee2824d2926d 100644
--- a/pkgs/development/python-modules/cbor2/default.nix
+++ b/pkgs/development/python-modules/cbor2/default.nix
@@ -1,28 +1,28 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-
-# build-system
-, setuptools
-, setuptools-scm
-
-# tests
-, hypothesis
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+
+  # tests
+  hypothesis,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "cbor2";
-  version = "5.6.2";
+  version = "5.6.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-t1E8LeqIaJkfrX74iZiQ68+LGZubRGHDwR160670gg0=";
+    hash = "sha256-HFM8UN3oa+8caVBgIFSg/6PDduiw4gx7j1sQh5P2mD4=";
   };
 
   postPatch = ''
@@ -35,9 +35,7 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  pythonImportsCheck = [
-    "cbor2"
-  ];
+  pythonImportsCheck = [ "cbor2" ];
 
   nativeCheckInputs = [
     hypothesis
@@ -50,6 +48,6 @@ buildPythonPackage rec {
     mainProgram = "cbor2";
     homepage = "https://github.com/agronholm/cbor2";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cccolutils/default.nix b/pkgs/development/python-modules/cccolutils/default.nix
index 86aa9f6c8593e..53baa3c3e0347 100644
--- a/pkgs/development/python-modules/cccolutils/default.nix
+++ b/pkgs/development/python-modules/cccolutils/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, git
-, gitpython
-, krb5
-, mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  git,
+  gitpython,
+  krb5-c, # C krb5 library, not PyPI krb5
+  mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-YzKjG43biRbTZKtzSUHHhtzOfcZfzISHDFolqzrBjL8=";
   };
 
-  buildInputs = [
-    krb5
-  ];
+  buildInputs = [ krb5-c ];
 
   propagatedBuildInputs = [
     git
@@ -32,13 +31,9 @@ buildPythonPackage rec {
     mock
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "cccolutils"
-  ];
+  pythonImportsCheck = [ "cccolutils" ];
 
   meta = with lib; {
     description = "Python Kerberos 5 Credential Cache Collection Utilities";
diff --git a/pkgs/development/python-modules/celery-redbeat/default.nix b/pkgs/development/python-modules/celery-redbeat/default.nix
index 779dfb68c4c54..0e6d7f5b868f2 100644
--- a/pkgs/development/python-modules/celery-redbeat/default.nix
+++ b/pkgs/development/python-modules/celery-redbeat/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, python-dateutil
-, celery
-, redis
-, tenacity
-, pytestCheckHook
-, pytz
-, fakeredis
-, mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  python-dateutil,
+  celery,
+  redis,
+  tenacity,
+  pytestCheckHook,
+  pytz,
+  fakeredis,
+  mock,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/celery-singleton/default.nix b/pkgs/development/python-modules/celery-singleton/default.nix
index bb3ac446a6005..3d75770e932a4 100644
--- a/pkgs/development/python-modules/celery-singleton/default.nix
+++ b/pkgs/development/python-modules/celery-singleton/default.nix
@@ -1,18 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchFromGitHub
-, poetry-core
-, celery
-, redis
-, pytestCheckHook
-, pytest-celery
+{
+  lib,
+  buildPythonPackage,
+  fetchpatch,
+  fetchFromGitHub,
+  poetry-core,
+  celery,
+  redis,
+  pytestCheckHook,
+  pytest-celery,
+  pytest-cov-stub,
 }:
 
 buildPythonPackage rec {
   pname = "celery-singleton";
   version = "0.3.1";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "steinitzu";
@@ -21,13 +23,6 @@ buildPythonPackage rec {
     hash = "sha256-fHlakxxjYIADELZdxIj6rvsZ/+1QfnKvAg3w5cdzvDc=";
   };
 
-  postPatch = ''
-    # Disable coverage reporting in tests
-    substituteInPlace setup.cfg \
-      --replace "--cov" "" \
-      --replace "--no-cov-on-fail" ""
-  '';
-
   patches = [
     # chore(poetry): use poetry-core
     # https://github.com/steinitzu/celery-singleton/pull/54
@@ -38,11 +33,9 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     celery
     redis
   ];
@@ -50,6 +43,7 @@ buildPythonPackage rec {
   checkInputs = [
     pytestCheckHook
     pytest-celery
+    pytest-cov-stub
   ];
 
   pytestFlagsArray = [ "tests" ];
diff --git a/pkgs/development/python-modules/celery-types/default.nix b/pkgs/development/python-modules/celery-types/default.nix
index fd39ab0901f4f..53ed8e4f2512a 100644
--- a/pkgs/development/python-modules/celery-types/default.nix
+++ b/pkgs/development/python-modules/celery-types/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, poetry-core
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -19,14 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-DsrS+lpu3tCh+Rnl4eOBzC/wY1/ksh21O0ZhtodtWzA=";
   };
 
+  nativeBuildInputs = [ poetry-core ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
-
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ typing-extensions ];
 
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/celery/default.nix b/pkgs/development/python-modules/celery/default.nix
index a787e1fce4ea9..99854b9d772e1 100644
--- a/pkgs/development/python-modules/celery/default.nix
+++ b/pkgs/development/python-modules/celery/default.nix
@@ -1,45 +1,49 @@
-{ stdenv
-, lib
-, backports-zoneinfo
-, billiard
-, boto3
-, buildPythonPackage
-, case
-, click
-, click-didyoumean
-, click-plugins
-, click-repl
-, dnspython
-, fetchPypi
-, kombu
-, moto
-, pymongo
-, pytest-celery
-, pytest-click
-, pytest-subtests
-, pytest-timeout
-, pytest-xdist
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, tzdata
-, vine
-, nixosTests
+{
+  lib,
+  stdenv,
+  billiard,
+  buildPythonPackage,
+  click-didyoumean,
+  click-plugins,
+  click-repl,
+  click,
+  fetchPypi,
+  google-cloud-storage,
+  kombu,
+  moto,
+  msgpack,
+  nixosTests,
+  pymongo,
+  redis,
+  pytest-celery,
+  pytest-click,
+  pytest-subtests,
+  pytest-timeout,
+  pytest-xdist,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  pyyaml,
+  setuptools,
+  tzdata,
+  vine,
 }:
 
 buildPythonPackage rec {
   pname = "celery";
-  version = "5.3.6";
-  format = "setuptools";
+  version = "5.4.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-hwzHHXN8AgDDlykNcwNEzJkdE6BXU0NT0STJOAJnqrk=";
+    hash = "sha256-UEoZFA6NMCnVrK2IMwxUHUw/ZMeJ2F+UdWdi2Lyn5wY=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     billiard
     click
     click-didyoumean
@@ -49,24 +53,25 @@ buildPythonPackage rec {
     python-dateutil
     tzdata
     vine
-  ]
-  ++ lib.optionals (pythonOlder "3.9") [
-    backports-zoneinfo
   ];
 
+  passthru.optional-dependencies = {
+    gcs = [ google-cloud-storage ];
+    mongodb = [ pymongo ];
+    msgpack = [ msgpack ];
+    yaml = [ pyyaml ];
+    redis = [ redis ];
+  };
+
   nativeCheckInputs = [
-    boto3
-    case
-    dnspython
     moto
-    pymongo
     pytest-celery
     pytest-click
     pytest-subtests
     pytest-timeout
     pytest-xdist
     pytestCheckHook
-  ];
+  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
   disabledTestPaths = [
     # test_eventlet touches network
@@ -74,30 +79,32 @@ buildPythonPackage rec {
     # test_multi tries to create directories under /var
     "t/unit/bin/test_multi.py"
     "t/unit/apps/test_multi.py"
-    # requires moto<5
+    # Test requires moto<5
     "t/unit/backends/test_s3.py"
   ];
 
-  disabledTests = [
-    "msgpack"
-    "test_check_privileges_no_fchown"
-    # seems to only fail on higher core counts
-    # AssertionError: assert 3 == 0
-    "test_setup_security_disabled_serializers"
-    # fails with pytest-xdist
-    "test_itercapture_limit"
-    "test_stamping_headers_in_options"
-    "test_stamping_with_replace"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # too many open files on hydra
-    "test_cleanup"
-    "test_with_autoscaler_file_descriptor_safety"
-    "test_with_file_descriptor_safety"
-  ];
+  disabledTests =
+    [
+      "msgpack"
+      "test_check_privileges_no_fchown"
+      # seems to only fail on higher core counts
+      # AssertionError: assert 3 == 0
+      "test_setup_security_disabled_serializers"
+      # Test is flaky, especially on hydra
+      "test_ready"
+      # Tests fail with pytest-xdist
+      "test_itercapture_limit"
+      "test_stamping_headers_in_options"
+      "test_stamping_with_replace"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Too many open files on hydra
+      "test_cleanup"
+      "test_with_autoscaler_file_descriptor_safety"
+      "test_with_file_descriptor_safety"
+    ];
 
-  pythonImportsCheck = [
-    "celery"
-  ];
+  pythonImportsCheck = [ "celery" ];
 
   passthru.tests = {
     inherit (nixosTests) sourcehut;
@@ -105,10 +112,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Distributed task queue";
-    mainProgram = "celery";
     homepage = "https://github.com/celery/celery/";
     changelog = "https://github.com/celery/celery/releases/tag/v${version}";
     license = licenses.bsd3;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "celery";
   };
 }
diff --git a/pkgs/development/python-modules/cement/default.nix b/pkgs/development/python-modules/cement/default.nix
index cc71268dee0bb..a3a131c8b8af8 100644
--- a/pkgs/development/python-modules/cement/default.nix
+++ b/pkgs/development/python-modules/cement/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
   # 127.0.0.1:11211.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "cement"
-  ];
+  pythonImportsCheck = [ "cement" ];
 
   meta = with lib; {
     description = "CLI Application Framework for Python";
diff --git a/pkgs/development/python-modules/cemm/default.nix b/pkgs/development/python-modules/cemm/default.nix
index 9f9ae3b16be5a..39159b4041622 100644
--- a/pkgs/development/python-modules/cemm/default.nix
+++ b/pkgs/development/python-modules/cemm/default.nix
@@ -1,20 +1,22 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  poetry-core,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "cemm";
   version = "0.5.1";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
@@ -36,15 +38,12 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace '"0.0.0"' '"${version}"' \
-      --replace 'addopts = "--cov"' ""
+      --replace-fail '"0.0.0"' '"${version}"'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     yarl
   ];
@@ -54,12 +53,11 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     aresponses
     pytest-asyncio
+    pytest-cov-stub
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "cemm"
-  ];
+  pythonImportsCheck = [ "cemm" ];
 
   meta = with lib; {
     description = "Module for interacting with CEMM devices";
diff --git a/pkgs/development/python-modules/censys/default.nix b/pkgs/development/python-modules/censys/default.nix
index 70c7a6c4a0d23..bfdbd7635200a 100644
--- a/pkgs/development/python-modules/censys/default.nix
+++ b/pkgs/development/python-modules/censys/default.nix
@@ -1,24 +1,24 @@
-{ lib
-, argcomplete
-, backoff
-, buildPythonPackage
-, fetchFromGitHub
-, importlib-metadata
-, parameterized
-, poetry-core
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
-, requests-mock
-, responses
-, rich
+{
+  lib,
+  argcomplete,
+  backoff,
+  buildPythonPackage,
+  fetchFromGitHub,
+  importlib-metadata,
+  parameterized,
+  poetry-core,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
+  responses,
+  rich,
 }:
 
 buildPythonPackage rec {
   pname = "censys";
-  version = "2.2.12";
+  version = "2.2.14";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
     owner = "censys";
     repo = "censys-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Gw3JbAdg/ObWdD6vl8Wuct6VCcP4GAZbiesXSSnW1Mg=";
+    hash = "sha256-3evll1Ll8krvAfelGoJHOrmH7RvkeM/ZU1j13cTuXR4=";
   };
 
   postPatch = ''
@@ -37,7 +37,6 @@ buildPythonPackage rec {
 
   build-system = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   dependencies = [
@@ -68,9 +67,7 @@ buildPythonPackage rec {
     mkdir -p $HOME
   '';
 
-  pythonImportsCheck = [
-    "censys"
-  ];
+  pythonImportsCheck = [ "censys" ];
 
   meta = with lib; {
     description = "Python API wrapper for the Censys Search Engine (censys.io)";
diff --git a/pkgs/development/python-modules/cepa/default.nix b/pkgs/development/python-modules/cepa/default.nix
deleted file mode 100644
index 1b12ea1e5efbd..0000000000000
--- a/pkgs/development/python-modules/cepa/default.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, python
-, mock
-}:
-
-buildPythonPackage rec {
-  pname = "cepa";
-  version = "1.8.4";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-P7xwGsP8ic1/abxYptDXNbAU+kC2Hiwu/Tge0g21ipY=";
-  };
-
-  patches = [
-    (fetchpatch {
-      name = "python-3.11-compatibility.patch";
-      url = "https://github.com/onionshare/cepa/commit/0bf9aee7151e65594c532826bb04636e1d80fb6f.patch";
-      hash = "sha256-roSt9N5OvnOOxKZUee86zGXt0AsZCcbBdV2cLz1MB2k=";
-    })
-  ];
-
-  postPatch = ''
-    rm test/unit/installation.py
-    sed -i "/test.unit.installation/d" test/settings.cfg
-    # https://github.com/torproject/stem/issues/56
-    sed -i '/MOCK_VERSION/d' run_tests.py
-  '';
-
-  nativeCheckInputs = [ mock ];
-
-  checkPhase = ''
-    touch .gitignore
-    ${python.interpreter} run_tests.py -u
-  '';
-
-  meta = with lib; {
-    description = "Controller library that allows applications to interact with Tor";
-    mainProgram = "tor-prompt";
-    homepage = "https://github.com/onionshare/cepa";
-    license = licenses.lgpl3Only;
-    maintainers = with maintainers; [ bbjubjub ];
-  };
-}
diff --git a/pkgs/development/python-modules/cerberus/default.nix b/pkgs/development/python-modules/cerberus/default.nix
index a60e803535993..566268bc06cb3 100644
--- a/pkgs/development/python-modules/cerberus/default.nix
+++ b/pkgs/development/python-modules/cerberus/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "cerberus"
-  ];
+  pythonImportsCheck = [ "cerberus" ];
 
   disabledTestPaths = [
     # We don't care about benchmarks
diff --git a/pkgs/development/python-modules/cert-chain-resolver/default.nix b/pkgs/development/python-modules/cert-chain-resolver/default.nix
index de89116b4c92f..31ed14788dd62 100644
--- a/pkgs/development/python-modules/cert-chain-resolver/default.nix
+++ b/pkgs/development/python-modules/cert-chain-resolver/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, pytestCheckHook
-, pytest-mock
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pytest-mock,
+  pythonOlder,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-2itpu/Ap5GNnqAiw3Cp+8rndreWlwfPd+WwM99G7U2E=";
   };
 
-  propagatedBuildInputs = [
-    cryptography
-  ];
+  propagatedBuildInputs = [ cryptography ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -38,9 +37,7 @@ buildPythonPackage rec {
     "test_display_flag_is_properly_formatted"
   ];
 
-  pythonImportsCheck = [
-    "cert_chain_resolver"
-  ];
+  pythonImportsCheck = [ "cert_chain_resolver" ];
 
   meta = with lib; {
     description = "Resolve / obtain the certificate intermediates of a x509 certificate";
diff --git a/pkgs/development/python-modules/certauth/default.nix b/pkgs/development/python-modules/certauth/default.nix
index efdd6c03b256b..d68cbd3481c2f 100644
--- a/pkgs/development/python-modules/certauth/default.nix
+++ b/pkgs/development/python-modules/certauth/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pyopenssl
-, tldextract
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pyopenssl,
+  tldextract,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,22 +29,16 @@ buildPythonPackage rec {
       --replace-fail "--cov certauth " ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     pyopenssl
     tldextract
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "certauth"
-  ];
+  pythonImportsCheck = [ "certauth" ];
 
   disabledTests = [
     # https://github.com/ikreymer/certauth/issues/23
diff --git a/pkgs/development/python-modules/certbot-dns-cloudflare/default.nix b/pkgs/development/python-modules/certbot-dns-cloudflare/default.nix
index 2b66de576d27f..1d0a48549c169 100644
--- a/pkgs/development/python-modules/certbot-dns-cloudflare/default.nix
+++ b/pkgs/development/python-modules/certbot-dns-cloudflare/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, acme
-, certbot
-, cloudflare
-, pytestCheckHook
-, pythonOlder
+{
+  buildPythonPackage,
+  acme,
+  certbot,
+  cloudflare,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     cloudflare
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pytestFlagsArray = [
     "-o cache_dir=$(mktemp -d)"
diff --git a/pkgs/development/python-modules/certbot-dns-google/default.nix b/pkgs/development/python-modules/certbot-dns-google/default.nix
index 6d5ab6954e9d5..1717a573a9d0b 100644
--- a/pkgs/development/python-modules/certbot-dns-google/default.nix
+++ b/pkgs/development/python-modules/certbot-dns-google/default.nix
@@ -1,10 +1,11 @@
-{ buildPythonPackage
-, acme
-, certbot
-, google-api-python-client
-, oauth2client
-, pytestCheckHook
-, pythonOlder
+{
+  buildPythonPackage,
+  acme,
+  certbot,
+  google-api-python-client,
+  oauth2client,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     oauth2client
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pytestFlagsArray = [
     "-o cache_dir=$(mktemp -d)"
diff --git a/pkgs/development/python-modules/certbot-dns-inwx/default.nix b/pkgs/development/python-modules/certbot-dns-inwx/default.nix
index 7408bb2dc2e25..08c83c264bcac 100644
--- a/pkgs/development/python-modules/certbot-dns-inwx/default.nix
+++ b/pkgs/development/python-modules/certbot-dns-inwx/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, acme
-, certbot
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  acme,
+  certbot,
 }:
 
 buildPythonPackage rec {
@@ -28,7 +29,10 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "INWX DNS Authenticator plugin for Certbot";
     homepage = "https://github.com/oGGy990/certbot-dns-inwx";
-    license = with licenses; [ asl20 mit ];
+    license = with licenses; [
+      asl20
+      mit
+    ];
     maintainers = with maintainers; [ onny ];
   };
 }
diff --git a/pkgs/development/python-modules/certbot-dns-ovh/default.nix b/pkgs/development/python-modules/certbot-dns-ovh/default.nix
index d9b554c7a86c6..4858b58279696 100644
--- a/pkgs/development/python-modules/certbot-dns-ovh/default.nix
+++ b/pkgs/development/python-modules/certbot-dns-ovh/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, acme
-, certbot
-, dns-lexicon
-, pytestCheckHook
-, pythonOlder
+{
+  buildPythonPackage,
+  acme,
+  certbot,
+  dns-lexicon,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     dns-lexicon
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pytestFlagsArray = [
     "-o cache_dir=$(mktemp -d)"
diff --git a/pkgs/development/python-modules/certbot-dns-rfc2136/default.nix b/pkgs/development/python-modules/certbot-dns-rfc2136/default.nix
index 9278435e09f00..d4883bd2ad02a 100644
--- a/pkgs/development/python-modules/certbot-dns-rfc2136/default.nix
+++ b/pkgs/development/python-modules/certbot-dns-rfc2136/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, acme
-, certbot
-, dnspython
-, pytestCheckHook
-, pythonOlder
+{
+  buildPythonPackage,
+  acme,
+  certbot,
+  dnspython,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     dnspython
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pytestFlagsArray = [
     "-o cache_dir=$(mktemp -d)"
diff --git a/pkgs/development/python-modules/certbot-dns-route53/default.nix b/pkgs/development/python-modules/certbot-dns-route53/default.nix
index 7637aec52b88c..798631b0c79e3 100644
--- a/pkgs/development/python-modules/certbot-dns-route53/default.nix
+++ b/pkgs/development/python-modules/certbot-dns-route53/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, acme
-, boto3
-, certbot
-, pytestCheckHook
-, pythonOlder
+{
+  buildPythonPackage,
+  acme,
+  boto3,
+  certbot,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     certbot
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pytestFlagsArray = [
     "-o cache_dir=$(mktemp -d)"
diff --git a/pkgs/development/python-modules/certbot/default.nix b/pkgs/development/python-modules/certbot/default.nix
index 8cda81ec6d30e..ea1873e2c589d 100644
--- a/pkgs/development/python-modules/certbot/default.nix
+++ b/pkgs/development/python-modules/certbot/default.nix
@@ -1,47 +1,41 @@
-{ lib
-, buildPythonPackage
-, python
-, runCommand
-, fetchFromGitHub
-, configargparse
-, acme
-, configobj
-, cryptography
-, distro
-, josepy
-, parsedatetime
-, pyrfc3339
-, pyopenssl
-, pytz
-, requests
-, six
-, zope-component
-, zope-interface
-, setuptools
-, dialog
-, gnureadline
-, pytest-xdist
-, pytestCheckHook
-, python-dateutil
+{
+  lib,
+  buildPythonPackage,
+  python,
+  runCommand,
+  fetchFromGitHub,
+  configargparse,
+  acme,
+  configobj,
+  cryptography,
+  distro,
+  josepy,
+  parsedatetime,
+  pyrfc3339,
+  pytz,
+  setuptools,
+  dialog,
+  gnureadline,
+  pytest-xdist,
+  pytestCheckHook,
+  python-dateutil,
 }:
 
 buildPythonPackage rec {
   pname = "certbot";
-  version = "2.9.0";
+  version = "2.11.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "certbot";
     repo = "certbot";
     rev = "refs/tags/v${version}";
-    hash = "sha256-yYB9Y0wniRgzNk5XatkjKayIPj7ienXsqOboKPwzIfk=";
+    hash = "sha256-Qee7lUjgliG5fmUWWPm3MzpGJHUF/DXZ08UA6kkWjjk=";
   };
 
   sourceRoot = "${src.name}/${pname}";
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     configargparse
@@ -56,7 +50,10 @@ buildPythonPackage rec {
     setuptools # for pkg_resources
   ];
 
-  buildInputs = [ dialog gnureadline ];
+  buildInputs = [
+    dialog
+    gnureadline
+  ];
 
   nativeCheckInputs = [
     python-dateutil
@@ -64,22 +61,19 @@ buildPythonPackage rec {
     pytest-xdist
   ];
 
-  pytestFlagsArray = [
-    "-o cache_dir=$(mktemp -d)"
-  ];
+  pytestFlagsArray = [ "-o cache_dir=$(mktemp -d)" ];
 
   makeWrapperArgs = [ "--prefix PATH : ${dialog}/bin" ];
 
   # certbot.withPlugins has a similar calling convention as python*.withPackages
   # it gets invoked with a lambda, and invokes that lambda with the python package set matching certbot's:
   # certbot.withPlugins (cp: [ cp.certbot-dns-foo ])
-  passthru.withPlugins = f:
+  passthru.withPlugins =
+    f:
     let
       pythonEnv = python.withPackages f;
-
     in
-    runCommand "certbot-with-plugins"
-      { } ''
+    runCommand "certbot-with-plugins" { } ''
       mkdir -p $out/bin
       cd $out/bin
       ln -s ${pythonEnv}/bin/certbot
diff --git a/pkgs/development/python-modules/certifi/default.nix b/pkgs/development/python-modules/certifi/default.nix
index 73492baa076a2..e72fc1b07e455 100644
--- a/pkgs/development/python-modules/certifi/default.nix
+++ b/pkgs/development/python-modules/certifi/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, cacert
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  cacert,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "certifi";
-  version = "2024.02.02";
+  version = "2024.07.04";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -18,7 +19,7 @@ buildPythonPackage rec {
     owner = pname;
     repo = "python-certifi";
     rev = version;
-    hash = "sha256-gnWJjZy5E/0lvAeLftXNtcHH6RHL/dUomXOBgumiWX8=";
+    hash = "sha256-ArJB19tPpwTT1LjYo8OF1+Mo//l8FaMHTpvSvlfve3Q=";
   };
 
   patches = [
@@ -32,22 +33,16 @@ buildPythonPackage rec {
     ln -snvf "${cacert}/etc/ssl/certs/ca-bundle.crt" "certifi/cacert.pem"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedNativeBuildInputs = [
     # propagate cacerts setup-hook to set up `NIX_SSL_CERT_FILE`
     cacert
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "certifi"
-  ];
+  pythonImportsCheck = [ "certifi" ];
 
   meta = with lib; {
     homepage = "https://github.com/certifi/python-certifi";
diff --git a/pkgs/development/python-modules/certipy-ad/default.nix b/pkgs/development/python-modules/certipy-ad/default.nix
index 794c35f4d75ce..52cbbe19cbac4 100644
--- a/pkgs/development/python-modules/certipy-ad/default.nix
+++ b/pkgs/development/python-modules/certipy-ad/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, asn1crypto
-, buildPythonPackage
-, cryptography
-, dnspython
-, dsinternals
-, fetchFromGitHub
-, impacket
-, ldap3
-, pyasn1
-, pycryptodome
-, pyopenssl
-, pythonOlder
-, requests
-, requests-ntlm
-, unicrypto
-, setuptools
+{
+  lib,
+  asn1crypto,
+  buildPythonPackage,
+  cryptography,
+  dnspython,
+  dsinternals,
+  fetchFromGitHub,
+  impacket,
+  ldap3,
+  pyasn1,
+  pycryptodome,
+  pyopenssl,
+  pythonOlder,
+  requests,
+  requests-ntlm,
+  unicrypto,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -37,9 +38,7 @@ buildPythonPackage rec {
       --replace "pyasn1==0.4.8" "pyasn1"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     asn1crypto
@@ -60,9 +59,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "certipy"
-  ];
+  pythonImportsCheck = [ "certipy" ];
 
   meta = with lib; {
     description = "Library and CLI tool to enumerate and abuse misconfigurations in Active Directory Certificate Services";
diff --git a/pkgs/development/python-modules/certipy/default.nix b/pkgs/development/python-modules/certipy/default.nix
index e0ee3b6319b77..908edc32db696 100644
--- a/pkgs/development/python-modules/certipy/default.nix
+++ b/pkgs/development/python-modules/certipy/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyopenssl
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyopenssl,
 }:
 
 buildPythonPackage rec {
@@ -16,7 +17,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ pyopenssl ];
 
-  doCheck = false; #no tests were included
+  doCheck = false; # no tests were included
 
   meta = with lib; {
     homepage = "https://github.com/LLNL/certipy";
@@ -25,5 +26,4 @@ buildPythonPackage rec {
     license = licenses.bsd3;
     maintainers = with maintainers; [ isgy ];
   };
-
 }
diff --git a/pkgs/development/python-modules/certomancer/default.nix b/pkgs/development/python-modules/certomancer/default.nix
index 4adb682f6dcef..e9311df36e82f 100644
--- a/pkgs/development/python-modules/certomancer/default.nix
+++ b/pkgs/development/python-modules/certomancer/default.nix
@@ -1,75 +1,69 @@
-{ lib
-, asn1crypto
-, buildPythonPackage
-, click
-, cryptography
-, fetchFromGitHub
-, freezegun
-, jinja2
-, oscrypto
-, pyhanko-certvalidator
-, pytest-aiohttp
-, pytestCheckHook
-, python-dateutil
-, python-pkcs11
-, pythonOlder
-, pytz
-, pyyaml
-, requests
-, requests-mock
-, setuptools
-, tzlocal
-, werkzeug
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  pythonAtLeast,
+  fetchFromGitHub,
+  # build-system
+  setuptools,
+  wheel,
+  # dependencies
+  asn1crypto,
+  click,
+  cryptography,
+  python-dateutil,
+  pyyaml,
+  tzlocal,
+  # optional-dependencies
+  requests-mock,
+  jinja2,
+  werkzeug,
+  python-pkcs11,
+  # nativeCheckInputs
+  freezegun,
+  pyhanko-certvalidator,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pytz,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "certomancer";
-  version = "0.11.0";
-  format = "pyproject";
+  version = "0.12.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  # https://github.com/MatthiasValvekens/certomancer/issues/12
+  disabled = pythonOlder "3.7" || pythonAtLeast "3.12";
 
   src = fetchFromGitHub {
     owner = "MatthiasValvekens";
     repo = "certomancer";
     rev = "refs/tags/v${version}";
-    hash = "sha256-UQV0Tk4C5b5iBZ34Je59gK2dLTaJusnpxdyNicIh2Q8=";
+    hash = "sha256-c2Fq4YTHQvhxuZrpKQYZvqHIMfubbkeKV4rctELLeJU=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace ' "pytest-runner",' "" \
-  '';
-
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     wheel
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     asn1crypto
     click
-    oscrypto
+    cryptography
     python-dateutil
     pyyaml
     tzlocal
   ];
 
   passthru.optional-dependencies = {
-    requests-mocker = [
-      requests-mock
-    ];
+    requests-mocker = [ requests-mock ];
     web-api = [
       jinja2
       werkzeug
     ];
-    pkcs12 = [
-      cryptography
-    ];
-    pkcs11 = [
-      python-pkcs11
-    ];
+    pkcs11 = [ python-pkcs11 ];
   };
 
   nativeCheckInputs = [
@@ -86,15 +80,13 @@ buildPythonPackage rec {
     "test_validate"
   ];
 
-  pythonImportsCheck = [
-    "certomancer"
-  ];
+  pythonImportsCheck = [ "certomancer" ];
 
-  meta = with lib; {
+  meta = {
     description = "Quickly construct, mock & deploy PKI test configurations using simple declarative configuration";
     mainProgram = "certomancer";
     homepage = "https://github.com/MatthiasValvekens/certomancer";
-    license = licenses.mit;
-    maintainers = with maintainers; [ wolfangaukang ];
+    license = lib.licenses.mit;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/certvalidator/default.nix b/pkgs/development/python-modules/certvalidator/default.nix
index f1f6126c69df3..c59e2b6738e0b 100644
--- a/pkgs/development/python-modules/certvalidator/default.nix
+++ b/pkgs/development/python-modules/certvalidator/default.nix
@@ -1,6 +1,10 @@
-{ lib, buildPythonPackage, fetchFromGitHub
-, asn1crypto, oscrypto
-, cacert
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  asn1crypto,
+  oscrypto,
+  cacert,
 }:
 
 buildPythonPackage rec {
@@ -15,7 +19,10 @@ buildPythonPackage rec {
     hash = "sha256-yVF7t4FuU3C9fDg67JeM7LWZZh/mv5F4EKmjlO4AuBY=";
   };
 
-  propagatedBuildInputs = [ asn1crypto oscrypto ];
+  propagatedBuildInputs = [
+    asn1crypto
+    oscrypto
+  ];
 
   nativeCheckInputs = [ cacert ];
   checkPhase = ''
diff --git a/pkgs/development/python-modules/cexprtk/default.nix b/pkgs/development/python-modules/cexprtk/default.nix
index a805c98f73ece..7b680777e3107 100644
--- a/pkgs/development/python-modules/cexprtk/default.nix
+++ b/pkgs/development/python-modules/cexprtk/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pytestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/cf-xarray/default.nix b/pkgs/development/python-modules/cf-xarray/default.nix
index 9dd92914cb63a..a60f3f0e4aefd 100644
--- a/pkgs/development/python-modules/cf-xarray/default.nix
+++ b/pkgs/development/python-modules/cf-xarray/default.nix
@@ -1,48 +1,48 @@
-{ lib
-, buildPythonPackage
-, dask
-, fetchFromGitHub
-, matplotlib
-, pint
-, pooch
-, pytestCheckHook
-, pythonOlder
-, regex
-, rich
-, scipy
-, setuptools
-, setuptools-scm
-, shapely
-, wheel
-, xarray
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+  xarray,
+
+  # optional-dependencies
+  matplotlib,
+  pint,
+  pooch,
+  regex,
+  rich,
+  shapely,
+
+  # checks
+  dask,
+  pytestCheckHook,
+  scipy,
 }:
 
 buildPythonPackage rec {
   pname = "cf-xarray";
-  version = "0.9.0";
+  version = "0.9.5";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
-
   src = fetchFromGitHub {
     owner = "xarray-contrib";
     repo = "cf-xarray";
     rev = "refs/tags/v${version}";
-    hash = "sha256-MlI5Wx0GOcXPRb/p0sPyAtbf84g3LQKVxCZLBfEIGLo=";
+    hash = "sha256-Rz0E7GBaN/7zb0dqAxo0SJ4Bd+eQuOOv6x1WubIUh6A=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
-    wheel
     xarray
   ];
 
-  propagatedBuildInputs = [
-    xarray
-  ];
+  dependencies = [ xarray ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     all = [
       matplotlib
       pint
@@ -57,11 +57,9 @@ buildPythonPackage rec {
     dask
     pytestCheckHook
     scipy
-  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+  ] ++ lib.flatten (builtins.attrValues optional-dependencies);
 
-  pythonImportsCheck = [
-    "cf_xarray"
-  ];
+  pythonImportsCheck = [ "cf_xarray" ];
 
   disabledTestPaths = [
     # Tests require network access
@@ -69,11 +67,11 @@ buildPythonPackage rec {
     "cf_xarray/tests/test_helpers.py"
   ];
 
-  meta = with lib; {
-    description = "An accessor for xarray objects that interprets CF attributes";
+  meta = {
+    description = "Accessor for xarray objects that interprets CF attributes";
     homepage = "https://github.com/xarray-contrib/cf-xarray";
     changelog = "https://github.com/xarray-contrib/cf-xarray/releases/tag/v${version}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ fab ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/cffconvert/default.nix b/pkgs/development/python-modules/cffconvert/default.nix
index 9ca8fb492e5e0..befd378ac31d3 100644
--- a/pkgs/development/python-modules/cffconvert/default.nix
+++ b/pkgs/development/python-modules/cffconvert/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, click
-, requests
-, ruamel-yaml
-, pykwalify
-, jsonschema
-, pytestCheckHook
-, pytest-cov
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  click,
+  requests,
+  ruamel-yaml,
+  pykwalify,
+  jsonschema,
+  pytestCheckHook,
+  pytest-cov-stub,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-/2qhWVNylrqPSf1KmuZQahzq+YH860cohVSfJsDm1BE=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     click
@@ -37,11 +36,7 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
-  ];
-
-  checkInputs = [
-    # addopts uses --no-cov
-    pytest-cov
+    pytest-cov-stub
   ];
 
   disabledTestPaths = [
@@ -49,9 +44,7 @@ buildPythonPackage rec {
     "tests/cli/test_rawify_url.py"
   ];
 
-  pythonImportsCheckHook = [
-    "cffconvert"
-  ];
+  pythonImportsCheckHook = [ "cffconvert" ];
 
   meta = {
     changelog = "https://github.com/citation-file-format/cffconvert/blob/${src.rev}/CHANGELOG.md";
diff --git a/pkgs/development/python-modules/cffi/default.nix b/pkgs/development/python-modules/cffi/default.nix
index 7b2547afff1d1..9ddc6ba9cc63c 100644
--- a/pkgs/development/python-modules/cffi/default.nix
+++ b/pkgs/development/python-modules/cffi/default.nix
@@ -1,83 +1,83 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, isPyPy
-, fetchPypi
-, setuptools
-, pytestCheckHook
-, libffi
-, pkg-config
-, pycparser
-, pythonAtLeast
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  isPyPy,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
+  libffi,
+  pkg-config,
+  pycparser,
 }:
 
-if isPyPy then null else buildPythonPackage rec {
-  pname = "cffi";
-  version = "1.16.0";
-  pyproject = true;
+let
+  ccVersion = lib.getVersion stdenv.cc;
+in
+if isPyPy then
+  null
+else
+  buildPythonPackage rec {
+    pname = "cffi";
+    version = "1.17.0";
+    pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-vLPvQ+WGZbvaL7GYaY/K5ndkg+DEpjGqVkeAbCXgLMA=";
-  };
+    src = fetchPypi {
+      inherit pname version;
+      hash = "sha256-8xV2JLdVi5FMsDn9Gvc15egEmofIF8whUQmtHId533Y=";
+    };
 
-  patches = [
-    #
-    # Trusts the libffi library inside of nixpkgs on Apple devices.
-    #
-    # Based on some analysis I did:
-    #
-    #   https://groups.google.com/g/python-cffi/c/xU0Usa8dvhk
-    #
-    # I believe that libffi already contains the code from Apple's fork that is
-    # deemed safe to trust in cffi.
-    #
-    ./darwin-use-libffi-closures.diff
-  ] ++ lib.optionals (stdenv.cc.isClang && lib.versionAtLeast (lib.getVersion stdenv.cc) "13") [
-    # -Wnull-pointer-subtraction is enabled with -Wextra. Suppress it to allow the following tests
-    # to run and pass when cffi is built with newer versions of clang:
-    # - testing/cffi1/test_verify1.py::test_enum_usage
-    # - testing/cffi1/test_verify1.py::test_named_pointer_as_argument
-    ./clang-pointer-substraction-warning.diff
-  ];
+    patches =
+      [
+        #
+        # Trusts the libffi library inside of nixpkgs on Apple devices.
+        #
+        # Based on some analysis I did:
+        #
+        #   https://groups.google.com/g/python-cffi/c/xU0Usa8dvhk
+        #
+        # I believe that libffi already contains the code from Apple's fork that is
+        # deemed safe to trust in cffi.
+        #
+        ./darwin-use-libffi-closures.diff
+      ]
+      ++ lib.optionals (stdenv.cc.isClang && (ccVersion == "boot" || lib.versionAtLeast ccVersion "13")) [
+        # -Wnull-pointer-subtraction is enabled with -Wextra. Suppress it to allow the following tests
+        # to run and pass when cffi is built with newer versions of clang (including the bootstrap tools clang on Darwin):
+        # - testing/cffi1/test_verify1.py::test_enum_usage
+        # - testing/cffi1/test_verify1.py::test_named_pointer_as_argument
+        ./clang-pointer-substraction-warning.diff
+      ];
 
-  postPatch = lib.optionalString stdenv.isDarwin ''
-    # Remove setup.py impurities
-    substituteInPlace setup.py \
-      --replace "'-iwithsysroot/usr/include/ffi'" "" \
-      --replace "'/usr/include/ffi'," "" \
-      --replace '/usr/include/libffi' '${lib.getDev libffi}/include'
-  '';
+    postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
+      # Remove setup.py impurities
+      substituteInPlace setup.py \
+        --replace "'-iwithsysroot/usr/include/ffi'" "" \
+        --replace "'/usr/include/ffi'," "" \
+        --replace '/usr/include/libffi' '${lib.getDev libffi}/include'
+    '';
 
-  nativeBuildInputs = [
-    pkg-config
-    setuptools
-  ];
+    nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [
-    libffi
-  ];
+    build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pycparser
-  ];
+    buildInputs = [ libffi ];
 
-  # The tests use -Werror but with python3.6 clang detects some unreachable code.
-  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang
-    "-Wno-unused-command-line-argument -Wno-unreachable-code -Wno-c++11-narrowing";
+    dependencies = [ pycparser ];
 
-  doCheck = !stdenv.hostPlatform.isMusl;
+    # The tests use -Werror but with python3.6 clang detects some unreachable code.
+    env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-unused-command-line-argument -Wno-unreachable-code -Wno-c++11-narrowing";
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+    doCheck = !stdenv.hostPlatform.isMusl;
 
-  meta = with lib; {
-    changelog = "https://github.com/python-cffi/cffi/releases/tag/v${version}";
-    description = "Foreign Function Interface for Python calling C code";
-    downloadPage = "https://github.com/python-cffi/cffi";
-    homepage = "https://cffi.readthedocs.org/";
-    license = licenses.mit;
-    maintainers = teams.python.members;
-  };
-}
+    nativeCheckInputs = [ pytestCheckHook ];
+
+    meta = with lib; {
+      changelog = "https://github.com/python-cffi/cffi/releases/tag/v${version}";
+      description = "Foreign Function Interface for Python calling C code";
+      downloadPage = "https://github.com/python-cffi/cffi";
+      homepage = "https://cffi.readthedocs.org/";
+      license = licenses.mit;
+      maintainers = teams.python.members;
+    };
+  }
diff --git a/pkgs/development/python-modules/cffsubr/default.nix b/pkgs/development/python-modules/cffsubr/default.nix
index 324145639a3a5..46dabb2711af7 100644
--- a/pkgs/development/python-modules/cffsubr/default.nix
+++ b/pkgs/development/python-modules/cffsubr/default.nix
@@ -1,54 +1,60 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, fonttools
-, pytestCheckHook
-, setuptools-scm
-, wheel
+{
+  stdenv,
+  lib,
+  afdko,
+  buildPythonPackage,
+  cmake,
+  distutils,
+  fetchPypi,
+  fonttools,
+  ninja,
+  pytestCheckHook,
+  scikit-build,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "cffsubr";
-  version = "0.2.9.post1";
-  format = "pyproject";
+  version = "0.3.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-azFBLc9JyPqEZkvahn4u3cVbb+b6aW/yU8TxOp/y/Fw=";
+    hash = "sha256-d0UVC9uBZ5+s3RHB87hwlsT029SVfo/Ou4jEVoeVLvs=";
   };
 
-  patches = [
-    # https://github.com/adobe-type-tools/cffsubr/pull/23
-    (fetchpatch {
-      name = "remove-setuptools-git-ls-files.patch";
-      url = "https://github.com/adobe-type-tools/cffsubr/commit/887a6a03b1e944b82fcb99b797fbc2f3a64298f0.patch";
-      hash = "sha256-LuyqBtDrKWwCeckr+YafZ5nfVw1XnELwFI6X8bGomhs=";
-    })
-  ];
-
-  nativeBuildInputs = [
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace-fail 'afdko_output_dir = os.path.join(afdko_root_dir, "build", "bin")' \
+                     'afdko_output_dir = "${lib.getBin afdko}/bin"' \
+      --replace-fail 'build_cmd=build_release_cmd' 'build_cmd="true"'
+  '';
+
+  build-system = [
+    cmake
+    distutils
+    ninja
+    scikit-build
+    setuptools
     setuptools-scm
-    wheel
   ];
 
-  propagatedBuildInputs = [
-    fonttools
-  ];
+  dontUseCmakeConfigure = true;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  dependencies = [ fonttools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "cffsubr" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
+    changelog = "https://github.com/adobe-type-tools/cffsubr/releases/tag/v${version}";
     description = "Standalone CFF subroutinizer based on AFDKO tx";
     mainProgram = "cffsubr";
     homepage = "https://github.com/adobe-type-tools/cffsubr";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cfgv/default.nix b/pkgs/development/python-modules/cfgv/default.nix
index 0975d649a1672..ecf28c56000da 100644
--- a/pkgs/development/python-modules/cfgv/default.nix
+++ b/pkgs/development/python-modules/cfgv/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-P02j53dltwdrlUBG89AI+P2GkXYKTVrQNF15rZt58jw=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "cfgv"
-  ];
+  pythonImportsCheck = [ "cfgv" ];
 
   meta = with lib; {
     description = "Validate configuration and produce human readable error messages";
diff --git a/pkgs/development/python-modules/cfn-flip/default.nix b/pkgs/development/python-modules/cfn-flip/default.nix
index bca9fbd06fbb7..e10440bd3d3ea 100644
--- a/pkgs/development/python-modules/cfn-flip/default.nix
+++ b/pkgs/development/python-modules/cfn-flip/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, six
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     sed -i "/--cov/d" tox.ini
@@ -42,15 +41,16 @@ buildPythonPackage rec {
     "test_yaml_no_ordered_dict"
   ];
 
-  pythonImportsCheck = [
-    "cfn_flip"
-  ];
+  pythonImportsCheck = [ "cfn_flip" ];
 
   meta = with lib; {
     description = "Tool for converting AWS CloudFormation templates between JSON and YAML formats";
     mainProgram = "cfn-flip";
     homepage = "https://github.com/awslabs/aws-cfn-template-flip";
     license = licenses.asl20;
-    maintainers = with maintainers; [ kamadorueda psyanticy ];
+    maintainers = with maintainers; [
+      kamadorueda
+      psyanticy
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/cfn-lint/default.nix b/pkgs/development/python-modules/cfn-lint/default.nix
index e4561df271211..d0325a5c21ea2 100644
--- a/pkgs/development/python-modules/cfn-lint/default.nix
+++ b/pkgs/development/python-modules/cfn-lint/default.nix
@@ -1,26 +1,26 @@
-{ lib
-, aws-sam-translator
-, buildPythonPackage
-, fetchFromGitHub
-, jschema-to-python
-, jsonpatch
-, jsonschema
-, junit-xml
-, mock
-, networkx
-, pydot
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, regex
-, sarif-om
-, setuptools
-, sympy
+{
+  lib,
+  aws-sam-translator,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jschema-to-python,
+  jsonpatch,
+  jsonschema,
+  junit-xml,
+  mock,
+  networkx,
+  pydot,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  regex,
+  sarif-om,
+  sympy,
 }:
 
 buildPythonPackage rec {
   pname = "cfn-lint";
-  version = "0.86.0";
+  version = "0.87.7";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -29,7 +29,7 @@ buildPythonPackage rec {
     owner = "aws-cloudformation";
     repo = "cfn-lint";
     rev = "refs/tags/v${version}";
-    hash = "sha256-QkxCQ8YPRZSqAidmPus4JCgzez6uuRWvcaqfZsvugtY=";
+    hash = "sha256-em6Vi9zIn8ikmcHVbljA1vr+R3t8ZpJ57p3Ix3bqMYU=";
   };
 
   propagatedBuildInputs = [
@@ -70,9 +70,7 @@ buildPythonPackage rec {
     "test_template_config"
   ];
 
-  pythonImportsCheck = [
-    "cfnlint"
-  ];
+  pythonImportsCheck = [ "cfnlint" ];
 
   meta = with lib; {
     description = "Checks cloudformation for practices and behaviour that could potentially be improved";
@@ -80,6 +78,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/aws-cloudformation/cfn-lint";
     changelog = "https://github.com/aws-cloudformation/cfn-lint/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cfscrape/default.nix b/pkgs/development/python-modules/cfscrape/default.nix
index 0152506787033..f4d6bc7a38a95 100644
--- a/pkgs/development/python-modules/cfscrape/default.nix
+++ b/pkgs/development/python-modules/cfscrape/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,9 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/Anorov/cloudflare-scrape";
-    description = "A Python module to bypass Cloudflare's anti-bot page";
+    description = "Python module to bypass Cloudflare's anti-bot page";
     license = licenses.mit;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cftime/default.nix b/pkgs/development/python-modules/cftime/default.nix
index 4291f805d2c0d..443a7e8c1da60 100644
--- a/pkgs/development/python-modules/cftime/default.nix
+++ b/pkgs/development/python-modules/cftime/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchPypi
-, numpy
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchPypi,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "cftime";
-  version = "1.6.3";
+  version = "1.6.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-0Kayn3KhPwjgCLm+z/JHzHXISsshMzLt4Yh5xbaqTf0=";
+    hash = "sha256-4yVAYZN1in7WcwjetS5yd4KhnjhOGDN45/9iCYvgrtw=";
   };
 
   postPatch = ''
@@ -28,22 +29,16 @@ buildPythonPackage rec {
     numpy
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "cftime"
-  ];
+  pythonImportsCheck = [ "cftime" ];
 
   meta = with lib; {
     description = "Time-handling functionality from netcdf4-python";
     homepage = "https://github.com/Unidata/cftime";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cgen/default.nix b/pkgs/development/python-modules/cgen/default.nix
index 966a6b7ff159f..186422a49c34c 100644
--- a/pkgs/development/python-modules/cgen/default.nix
+++ b/pkgs/development/python-modules/cgen/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytools
-, numpy
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytools,
+  numpy,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -26,10 +27,10 @@ buildPythonPackage rec {
     pytest
   '';
 
-  meta = with lib; {
+  meta = {
     description = "C/C++ source generation from an AST";
     homepage = "https://github.com/inducer/cgen";
-    license = licenses.mit;
-    maintainers = [ ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sigmanificient ];
   };
 }
diff --git a/pkgs/development/python-modules/cgroup-utils/default.nix b/pkgs/development/python-modules/cgroup-utils/default.nix
index 4dfd3901ef7f7..17047a3213893 100644
--- a/pkgs/development/python-modules/cgroup-utils/default.nix
+++ b/pkgs/development/python-modules/cgroup-utils/default.nix
@@ -1,17 +1,14 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pep8, nose }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+}:
 
 buildPythonPackage rec {
-  version = "0.8";
-  format = "setuptools";
   pname = "cgroup-utils";
-
-  buildInputs = [ pep8 nose ];
-  # Pep8 tests fail...
-  doCheck = false;
-
-  postPatch = ''
-    sed -i -e "/argparse/d" setup.py
-  '';
+  version = "0.8";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "peo3";
@@ -20,11 +17,25 @@ buildPythonPackage rec {
     sha256 = "0qnbn8cnq8m14s8s1hcv25xjd55dyb6yy54l5vc7sby5xzzp11fq";
   };
 
-  meta = with lib; {
+  postPatch = ''
+    sed -i -e "/argparse/d" setup.py
+  '';
+
+  build-system = [ setuptools ];
+
+  # Upon running `from cgutils import cgroup`, it attempts to read a file in `/sys`.
+  # Due to the Nix build sandbox, this is disallowed, and so all possible tests fail,
+  # so we don't run them. Plain `import cgutils` works, so we run pythonImportsCheck below.
+  doCheck = false;
+
+  pythonImportsCheck = [ "cgutils" ];
+
+  meta = {
     description = "Utility tools for control groups of Linux";
+    homepage = "https://github.com/peo3/cgroup-utils";
     mainProgram = "cgutil";
-    maintainers = with maintainers; [ layus ];
-    platforms = platforms.linux;
-    license = licenses.gpl2;
+    maintainers = with lib.maintainers; [ layus ];
+    platforms = lib.platforms.linux;
+    license = lib.licenses.gpl2Plus;
   };
 }
diff --git a/pkgs/development/python-modules/chacha20poly1305-reuseable/default.nix b/pkgs/development/python-modules/chacha20poly1305-reuseable/default.nix
index 429467d65e309..c51f2fe077240 100644
--- a/pkgs/development/python-modules/chacha20poly1305-reuseable/default.nix
+++ b/pkgs/development/python-modules/chacha20poly1305-reuseable/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# build-system
-, cython
-, poetry-core
-, setuptools
-
-# propagates
-, cryptography
-
-# tests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  cython,
+  poetry-core,
+  setuptools,
+
+  # propagates
+  cryptography,
+
+  # tests
+  pytestCheckHook,
 }:
 
 let
   pname = "chacha20poly1305-reuseable";
-  version = "0.12.1";
+  version = "0.13.2";
 in
 
 buildPythonPackage {
@@ -29,8 +30,8 @@ buildPythonPackage {
   src = fetchFromGitHub {
     owner = "bdraco";
     repo = pname;
-    rev = "v${version}";
-    hash = "sha256-jgbtDpl2hXmfzmsiIIG6+B3QoekuAjBJGMxQJPX4ynA=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-i6bhqfYo+gFTf3dqOBSQqGN4WPqbUR05StdwZvrVckI=";
   };
 
   nativeBuildInputs = [
@@ -39,22 +40,18 @@ buildPythonPackage {
     setuptools
   ];
 
-  propagatedBuildInputs = [
-    cryptography
-  ];
+  pythonRelaxDeps = [ "cryptography" ];
 
-  pythonImportsCheck = [
-    "chacha20poly1305_reuseable"
-  ];
+  propagatedBuildInputs = [ cryptography ];
+
+  pythonImportsCheck = [ "chacha20poly1305_reuseable" ];
 
   preCheck = ''
     substituteInPlace pyproject.toml \
-      --replace "--cov=chacha20poly1305_reuseable --cov-report=term-missing:skip-covered" ""
+      --replace-fail "--cov=chacha20poly1305_reuseable --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "ChaCha20Poly1305 that is reuseable for asyncio";
diff --git a/pkgs/development/python-modules/chacha20poly1305/default.nix b/pkgs/development/python-modules/chacha20poly1305/default.nix
index d4f88b0a7349c..0493f9b15ee02 100644
--- a/pkgs/development/python-modules/chacha20poly1305/default.nix
+++ b/pkgs/development/python-modules/chacha20poly1305/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,14 +20,12 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "chacha20poly1305"
-  ];
+  pythonImportsCheck = [ "chacha20poly1305" ];
 
   meta = with lib; {
     description = "Module that implements ChaCha20Poly1305";
     homepage = "https://github.com/ph4r05/py-chacha20poly1305";
     license = licenses.mit;
-    maintainers = with maintainers; [ wolfangaukang ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/chai/default.nix b/pkgs/development/python-modules/chai/default.nix
index 6146ec692c75f..756a2ab0868bc 100644
--- a/pkgs/development/python-modules/chai/default.nix
+++ b/pkgs/development/python-modules/chai/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "chai";
@@ -10,6 +14,14 @@ buildPythonPackage rec {
     sha256 = "ff8d2b6855f660cd23cd5ec79bd10264d39f24f6235773331b48e7fcd637d6cc";
   };
 
+  postPatch = ''
+    # python 3.12 compatibility
+    substituteInPlace tests/*.py \
+      --replace "assertEquals" "assertEqual" \
+      --replace "assertNotEquals" "assertNotEqual" \
+      --replace "assert_equals" "assert_equal"
+  '';
+
   meta = with lib; {
     description = "Mocking, stubbing and spying framework for python";
   };
diff --git a/pkgs/development/python-modules/chainer/default.nix b/pkgs/development/python-modules/chainer/default.nix
index 1f5be76e2d219..0ca1a23439418 100644
--- a/pkgs/development/python-modules/chainer/default.nix
+++ b/pkgs/development/python-modules/chainer/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, config
-, cudaSupport ? config.cudaSupport
-, cupy
-, fetchFromGitHub
-, filelock
-, mock
-, numpy
-, protobuf
-, pytestCheckHook
-, pythonOlder
-, six
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  config,
+  cudaSupport ? config.cudaSupport,
+  cupy,
+  fetchFromGitHub,
+  filelock,
+  mock,
+  numpy,
+  protobuf,
+  pytestCheckHook,
+  pythonOlder,
+  six,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -34,18 +35,14 @@ buildPythonPackage rec {
     protobuf
     six
     typing-extensions
-  ] ++ lib.optionals cudaSupport [
-    cupy
-  ];
+  ] ++ lib.optionals cudaSupport [ cupy ];
 
   nativeCheckInputs = [
     mock
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "tests/chainer_tests/utils_tests"
-  ];
+  pytestFlagsArray = [ "tests/chainer_tests/utils_tests" ];
 
   preCheck = ''
     # cf. https://github.com/chainer/chainer/issues/8621
@@ -61,12 +58,10 @@ buildPythonPackage rec {
     "ideep"
   ];
 
-  pythonImportsCheck = [
-    "chainer"
-  ];
+  pythonImportsCheck = [ "chainer" ];
 
   meta = with lib; {
-    description = "A flexible framework of neural networks for deep learning";
+    description = "Flexible framework of neural networks for deep learning";
     homepage = "https://chainer.org/";
     license = licenses.mit;
     maintainers = with maintainers; [ hyphon81 ];
diff --git a/pkgs/development/python-modules/chainmap/default.nix b/pkgs/development/python-modules/chainmap/default.nix
index 9b96d4bac94e4..3babd3d418972 100644
--- a/pkgs/development/python-modules/chainmap/default.nix
+++ b/pkgs/development/python-modules/chainmap/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "chainmap";
diff --git a/pkgs/development/python-modules/chainstream/default.nix b/pkgs/development/python-modules/chainstream/default.nix
index 00c10a22e9eeb..8d247e234d2d3 100644
--- a/pkgs/development/python-modules/chainstream/default.nix
+++ b/pkgs/development/python-modules/chainstream/default.nix
@@ -1,21 +1,24 @@
-{ lib, fetchPypi, python3Packages }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools,
+}:
 
-python3Packages.buildPythonPackage rec {
+buildPythonPackage rec {
   pname = "chainstream";
   version = "1.0.1";
 
   pyproject = true;
 
-  nativeBuildInputs = [ python3Packages.setuptools ];
+  nativeBuildInputs = [ setuptools ];
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-302P1BixEmkODm+qTLZwaWLktrlf9cEziQ/TIVfI07c=";
   };
 
-  pythonImportsCheck = [
-    "chainstream"
-  ];
+  pythonImportsCheck = [ "chainstream" ];
 
   meta = with lib; {
     description = "Chain I/O streams together into a single stream";
diff --git a/pkgs/development/python-modules/chalice/default.nix b/pkgs/development/python-modules/chalice/default.nix
index 25b9998433a6b..b91eb29a08188 100644
--- a/pkgs/development/python-modules/chalice/default.nix
+++ b/pkgs/development/python-modules/chalice/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, attrs
-, botocore
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, hypothesis
-, inquirer
-, jmespath
-, mock
-, mypy-extensions
-, pip
-, pytest7CheckHook
-, pythonOlder
-, pyyaml
-, requests
-, setuptools
-, six
-, typing-extensions
-, watchdog
-, websocket-client
-, wheel
+{
+  lib,
+  attrs,
+  botocore,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  hypothesis,
+  inquirer,
+  jmespath,
+  mock,
+  mypy-extensions,
+  pip,
+  pytest7CheckHook,
+  pythonOlder,
+  pyyaml,
+  requests,
+  setuptools,
+  six,
+  typing-extensions,
+  watchdog,
+  websocket-client,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -96,9 +97,7 @@ buildPythonPackage rec {
     "test_both_tar_bz2"
   ];
 
-  pythonImportsCheck = [
-    "chalice"
-  ];
+  pythonImportsCheck = [ "chalice" ];
 
   meta = with lib; {
     description = "Python Serverless Microframework for AWS";
@@ -106,6 +105,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/aws/chalice";
     changelog = "https://github.com/aws/chalice/blob/${version}/CHANGELOG.rst";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/chameleon/default.nix b/pkgs/development/python-modules/chameleon/default.nix
index 3c97002f5dcd1..d3f0d7a0f4272 100644
--- a/pkgs/development/python-modules/chameleon/default.nix
+++ b/pkgs/development/python-modules/chameleon/default.nix
@@ -1,39 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, importlib-metadata
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  importlib-metadata,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "chameleon";
-  version = "4.5.2";
+  version = "4.5.4";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "malthe";
     repo = "chameleon";
     rev = "refs/tags/${version}";
-    hash = "sha256-SVLKT6JeFUpF7gYkq3B7Lm9b9SG2qa6Ekp8i8xM0Xh0=";
+    hash = "sha256-TbXx3reRpUqnMVDsr38FM1SLgARjqXAduO3k87U5TIg=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ];
+  dependencies = lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "chameleon"
-  ];
+  pythonImportsCheck = [ "chameleon" ];
 
   meta = with lib; {
     changelog = "https://github.com/malthe/chameleon/blob/${version}/CHANGES.rst";
@@ -43,5 +36,4 @@ buildPythonPackage rec {
     license = licenses.bsd0;
     maintainers = with maintainers; [ domenkozar ];
   };
-
 }
diff --git a/pkgs/development/python-modules/changefinder/default.nix b/pkgs/development/python-modules/changefinder/default.nix
new file mode 100644
index 0000000000000..4405fa8a8525b
--- /dev/null
+++ b/pkgs/development/python-modules/changefinder/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools
+, pytestCheckHook
+, numpy
+, scipy
+, statsmodels
+}:
+
+buildPythonPackage {
+  pname = "changefinder";
+  version = "unstable-2024-03-24";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "shunsukeaihara";
+    repo = "changefinder";
+    rev = "58c8c32f127b9e46f9823f36221f194bdb6f3f8b";
+    hash = "sha256-1If0gIsMU8673fKSSHVMvDgR1UnYgM/4HiyvZJ9T6VM=";
+  };
+
+  patches = [ ./fix_test_invocation.patch ];
+
+  build-system = [ setuptools ];
+
+  pythonRemoveDeps = [ "nose" ];
+
+  dependencies = [
+    numpy
+    scipy
+    statsmodels
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+  pytestFlagsArray = [ "test/test.py" ];
+
+  pythonImportsCheck = [ "changefinder" ];
+
+  meta = with lib; {
+    description = "Online Change-Point Detection library based on ChangeFinder algorithm";
+    homepage = "https://github.com/shunsukeaihara/changefinder";
+    license = licenses.mit;
+    maintainers = with maintainers; [ raitobezarius ];
+  };
+}
diff --git a/pkgs/development/python-modules/changefinder/fix_test_invocation.patch b/pkgs/development/python-modules/changefinder/fix_test_invocation.patch
new file mode 100644
index 0000000000000..f02e2e36d4b54
--- /dev/null
+++ b/pkgs/development/python-modules/changefinder/fix_test_invocation.patch
@@ -0,0 +1,13 @@
+diff --git a/test/test.py b/test/test.py
+index 85a9f4e..a5f44fd 100644
+--- a/test/test.py
++++ b/test/test.py
+@@ -4,7 +4,7 @@ import numpy as np
+ 
+ 
+ class TestChangeFinder():
+-    def setup(self):
++    def setup_method(self):
+         self._term = 30
+         self._smooth = 7
+         self._order = 1
diff --git a/pkgs/development/python-modules/channels-redis/default.nix b/pkgs/development/python-modules/channels-redis/default.nix
index a495b389603d0..73538fcdce4c8 100644
--- a/pkgs/development/python-modules/channels-redis/default.nix
+++ b/pkgs/development/python-modules/channels-redis/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, aioredis
-, asgiref
-, buildPythonPackage
-, channels
-, cryptography
-, fetchFromGitHub
-, hiredis
-, msgpack
-, pythonOlder
-, redis
+{
+  lib,
+  aioredis,
+  asgiref,
+  buildPythonPackage,
+  channels,
+  cryptography,
+  fetchFromGitHub,
+  hiredis,
+  msgpack,
+  pythonOlder,
+  redis,
 }:
 
 buildPythonPackage rec {
@@ -38,18 +39,14 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    cryptography = [
-      cryptography
-    ];
+    cryptography = [ cryptography ];
   };
 
   # Fails with : ConnectionRefusedError: [Errno 111] Connect call failed ('127.0.0.1', 6379)
   # (even with a local Redis instance running)
   doCheck = false;
 
-  pythonImportsCheck = [
-    "channels_redis"
-  ];
+  pythonImportsCheck = [ "channels_redis" ];
 
   meta = with lib; {
     description = "Redis-backed ASGI channel layer implementation";
diff --git a/pkgs/development/python-modules/channels/default.nix b/pkgs/development/python-modules/channels/default.nix
index 083a79284f24b..df15fbdf4c75a 100644
--- a/pkgs/development/python-modules/channels/default.nix
+++ b/pkgs/development/python-modules/channels/default.nix
@@ -1,39 +1,41 @@
-{ lib
-, asgiref
-, buildPythonPackage
-, daphne
-, django
-, fetchFromGitHub
-, async-timeout
-, pytest-asyncio
-, pytest-django
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  asgiref,
+  buildPythonPackage,
+  daphne,
+  django,
+  fetchFromGitHub,
+  async-timeout,
+  pytest-asyncio,
+  pytest-django,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "channels";
-  version = "4.0.0";
-  format = "setuptools";
+  version = "4.1.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "django";
-    repo = pname;
-    rev = version;
-    hash = "sha256-n88MxwYQ4O2kBy/W0Zvi3FtIlhZQQRCssB/lYrFNvps=";
+    repo = "channels";
+    rev = "refs/tags/${version}";
+    hash = "sha256-JUU1N+Sc7t//0vEdkgQy20iVKgHr4Ys+XnLgqPMcKM8=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     asgiref
     django
   ];
 
-  passthru.optional-dependencies = {
-    daphne = [
-      daphne
-    ];
+  optional-dependencies = {
+    daphne = [ daphne ];
   };
 
   nativeCheckInputs = [
@@ -41,15 +43,14 @@ buildPythonPackage rec {
     pytest-asyncio
     pytest-django
     pytestCheckHook
-  ] ++ passthru.optional-dependencies.daphne;
+  ] ++ lib.flatten (builtins.attrValues optional-dependencies);
 
-  pythonImportsCheck = [
-    "channels"
-  ];
+  pythonImportsCheck = [ "channels" ];
 
   meta = with lib; {
     description = "Brings event-driven capabilities to Django with a channel system";
     homepage = "https://github.com/django/channels";
+    changelog = "https://github.com/django/channels/blob/${version}/CHANGELOG.txt";
     license = licenses.bsd3;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/character-encoding-utils/default.nix b/pkgs/development/python-modules/character-encoding-utils/default.nix
index dd0e3b60fe1f4..83d01916d3c63 100644
--- a/pkgs/development/python-modules/character-encoding-utils/default.nix
+++ b/pkgs/development/python-modules/character-encoding-utils/default.nix
@@ -1,33 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, nix-update-script
-, hatch-vcs
-, hatchling
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytestCheckHook,
+  nix-update-script,
+  hatchling,
 }:
 
 buildPythonPackage rec {
   pname = "character-encoding-utils";
-  version = "0.0.6";
+  version = "0.0.8";
+  pyproject = true;
 
-  disabled = pythonOlder "3.11";
+  disabled = pythonOlder "3.10";
 
   src = fetchPypi {
     pname = "character_encoding_utils";
     inherit version;
-    hash = "sha256-ugzWiSpa/xxlraVyVPTSq/uxPg11kOyePgb1cmzX3ug=";
+    hash = "sha256-UXX4L/x7fP37ZEFDCPc0KRNyx47xvwY0Jz+lfxzUulg=";
   };
 
-  format = "pyproject";
+  build-system = [ hatchling ];
 
-  nativeBuildInputs = [
-    hatch-vcs
-    hatchling
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  checkInputs = [ pytestCheckHook ];
+  pythonImportsCheck = [ "character_encoding_utils" ];
 
   passthru.updateScript = nix-update-script { };
 
@@ -36,6 +34,9 @@ buildPythonPackage rec {
     description = "Some character encoding utils";
     platforms = lib.platforms.all;
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ h7x4 ];
+    maintainers = with lib.maintainers; [
+      TakWolf
+      h7x4
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/characteristic/default.nix b/pkgs/development/python-modules/characteristic/default.nix
index d63c247b300bb..93e18a0682444 100644
--- a/pkgs/development/python-modules/characteristic/default.nix
+++ b/pkgs/development/python-modules/characteristic/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, fetchPypi
-, pytest
+{
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/chardet/default.nix b/pkgs/development/python-modules/chardet/default.nix
index f0170eb641e3e..c4759f316d8ef 100644
--- a/pkgs/development/python-modules/chardet/default.nix
+++ b/pkgs/development/python-modules/chardet/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hypothesis
-, pythonOlder
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hypothesis,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-Gztv9HmoxBS8P6LAhSmVaVxKAm3NbQYzst0JLKOcHPc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     hypothesis
diff --git a/pkgs/development/python-modules/charset-normalizer/default.nix b/pkgs/development/python-modules/charset-normalizer/default.nix
index 2a6a13dc0bf88..90abf29a7df79 100644
--- a/pkgs/development/python-modules/charset-normalizer/default.nix
+++ b/pkgs/development/python-modules/charset-normalizer/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -26,15 +27,13 @@ buildPythonPackage rec {
       --replace " --cov=charset_normalizer --cov-report=term-missing" ""
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "charset_normalizer"
-  ];
+  pythonImportsCheck = [ "charset_normalizer" ];
 
-  passthru.tests = { inherit aiohttp requests; };
+  passthru.tests = {
+    inherit aiohttp requests;
+  };
 
   meta = with lib; {
     description = "Python module for encoding and language detection";
diff --git a/pkgs/development/python-modules/chart-studio/default.nix b/pkgs/development/python-modules/chart-studio/default.nix
index 4f78d8728120c..b850ed89301e0 100644
--- a/pkgs/development/python-modules/chart-studio/default.nix
+++ b/pkgs/development/python-modules/chart-studio/default.nix
@@ -1,52 +1,58 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, nose
-, plotly
-, pytest
-, requests
-, retrying
-, setuptools
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  plotly,
+  requests,
+  retrying,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "chart-studio";
-  version = "5.20.0";
+  version = "1.1.0-unstable-2024-07-23";
   pyproject = true;
 
   # chart-studio was split from plotly
   src = fetchFromGitHub {
     owner = "plotly";
     repo = "plotly.py";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-i//LKTNmoIrusBnpfSGc9cDijPxg/dY/7fumV3kfTAY=";
+    # We use plotly's upstream version as it's the same repo, but chart studio has its own version number.
+    rev = "v5.23.0";
+    hash = "sha256-K1hEs00AGBCe2fgytyPNWqE5M0jU5ESTzynP55kc05Y=";
   };
 
   sourceRoot = "${src.name}/packages/python/chart-studio";
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     plotly
     requests
     retrying
-    six
   ];
 
-  nativeCheckInputs = [ mock nose pytest ];
-  # most tests talk to a service
-  checkPhase = ''
-    HOME=$TMPDIR pytest chart_studio/tests/test_core chart_studio/tests/test_plot_ly/test_api
+  nativeCheckInputs = [
+    mock
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    export HOME=$(mktemp -d)
   '';
 
-  meta = with lib; {
+  # most tests talk to a network service, so only run ones that don't do that.
+  pytestFlagsArray = [
+    "chart_studio/tests/test_core"
+    "chart_studio/tests/test_plot_ly/test_api"
+  ];
+
+  meta = {
     description = "Utilities for interfacing with Plotly's Chart Studio service";
     homepage = "https://github.com/plotly/plotly.py/tree/master/packages/python/chart-studio";
-    license = with licenses; [ mit ];
-    maintainers = with maintainers; [ jonringer ];
+    license = with lib.licenses; [ mit ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/chat-downloader/default.nix b/pkgs/development/python-modules/chat-downloader/default.nix
index 32bf0a40da340..e19dd60a92693 100644
--- a/pkgs/development/python-modules/chat-downloader/default.nix
+++ b/pkgs/development/python-modules/chat-downloader/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, isodate
-, docstring-parser
-, colorlog
-, websocket-client
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  isodate,
+  docstring-parser,
+  colorlog,
+  websocket-client,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -35,11 +36,11 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "chat_downloader" ];
 
   meta = with lib; {
-    description = "A simple tool used to retrieve chat messages from livestreams, videos, clips and past broadcasts";
+    description = "Simple tool used to retrieve chat messages from livestreams, videos, clips and past broadcasts";
     mainProgram = "chat_downloader";
     homepage = "https://github.com/xenova/chat-downloader";
     changelog = "https://github.com/xenova/chat-downloader/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/check-manifest/default.nix b/pkgs/development/python-modules/check-manifest/default.nix
index 1533329d5572e..a14a4ecd8ba1f 100644
--- a/pkgs/development/python-modules/check-manifest/default.nix
+++ b/pkgs/development/python-modules/check-manifest/default.nix
@@ -1,13 +1,15 @@
-{ lib
-, breezy
-, build
-, buildPythonPackage
-, fetchPypi
-, git
-, pep517
-, pytestCheckHook
-, tomli
-, pythonOlder
+{
+  lib,
+  breezy,
+  build,
+  buildPythonPackage,
+  fetchPypi,
+  git,
+  pep517,
+  pytestCheckHook,
+  setuptools,
+  tomli,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,27 +27,22 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     build
     pep517
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+    setuptools
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   nativeCheckInputs = [
     git
     pytestCheckHook
   ];
 
-  checkInputs = [
-    breezy
-  ];
+  checkInputs = [ breezy ];
 
   disabledTests = [
     # Test wants to setup a venv
     "test_build_sdist_pep517_isolated"
   ];
 
-  pythonImportsCheck = [
-    "check_manifest"
-  ];
+  pythonImportsCheck = [ "check_manifest" ];
 
   meta = with lib; {
     description = "Check MANIFEST.in in a Python source package for completeness";
diff --git a/pkgs/development/python-modules/checkdmarc/default.nix b/pkgs/development/python-modules/checkdmarc/default.nix
index c39b704079316..7a1e122b737d1 100644
--- a/pkgs/development/python-modules/checkdmarc/default.nix
+++ b/pkgs/development/python-modules/checkdmarc/default.nix
@@ -1,22 +1,22 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, dnspython
-, expiringdict
-, fetchFromGitHub
-, hatchling
-, publicsuffixlist
-, pyleri
-, iana-etc
-, pytestCheckHook
-, pythonOlder
-, requests
-, timeout-decorator
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  dnspython,
+  expiringdict,
+  fetchFromGitHub,
+  hatchling,
+  publicsuffixlist,
+  pyleri,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  timeout-decorator,
 }:
 
 buildPythonPackage rec {
   pname = "checkdmarc";
-  version = "4.8.4";
+  version = "5.5.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -25,12 +25,10 @@ buildPythonPackage rec {
     owner = "domainaware";
     repo = "checkdmarc";
     rev = "refs/tags/${version}";
-    hash = "sha256-NNB5dYQzzdNapjP4mtpCW08BzfZ+FFRESUtpxCOzrdk=";
+    hash = "sha256-skQqLWBEmfyiW2DsRRbj3Lfj52QZca0zKenFC7LltjM=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     cryptography
@@ -42,17 +40,11 @@ buildPythonPackage rec {
     timeout-decorator
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "checkdmarc"
-  ];
+  pythonImportsCheck = [ "checkdmarc" ];
 
-  pytestFlagsArray = [
-    "tests.py"
-  ];
+  pytestFlagsArray = [ "tests.py" ];
 
   disabledTests = [
     # Tests require network access
@@ -65,7 +57,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A parser for SPF and DMARC DNS records";
+    description = "Parser for SPF and DMARC DNS records";
     mainProgram = "checkdmarc";
     homepage = "https://github.com/domainaware/checkdmarc";
     changelog = "https://github.com/domainaware/checkdmarc/blob/${version}/CHANGELOG.md";
@@ -73,4 +65,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ fab ];
   };
 }
-
diff --git a/pkgs/development/python-modules/checksumdir/default.nix b/pkgs/development/python-modules/checksumdir/default.nix
index 78a24bb2950a4..ae54695e8a54a 100644
--- a/pkgs/development/python-modules/checksumdir/default.nix
+++ b/pkgs/development/python-modules/checksumdir/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-PO8sRGFQ1Dt/UYJuFH6Y3EaQVaS+4DJlOQtvF8ZmBWQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   doCheck = false; # Package does not contain tests
   pythonImportsCheck = [ "checksumdir" ];
diff --git a/pkgs/development/python-modules/cheetah3/default.nix b/pkgs/development/python-modules/cheetah3/default.nix
index bb1a3da46cf56..6c89ea73cdbf5 100644
--- a/pkgs/development/python-modules/cheetah3/default.nix
+++ b/pkgs/development/python-modules/cheetah3/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,12 +21,10 @@ buildPythonPackage rec {
 
   doCheck = false; # Circular dependency
 
-  pythonImportsCheck = [
-    "Cheetah"
-  ];
+  pythonImportsCheck = [ "Cheetah" ];
 
   meta = with lib; {
-    description = "A template engine and code generation tool";
+    description = "Template engine and code generation tool";
     homepage = "http://www.cheetahtemplate.org/";
     changelog = "https://github.com/CheetahTemplate3/cheetah3/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/cheroot/default.nix b/pkgs/development/python-modules/cheroot/default.nix
index 602afd0f755f7..2b4c9f427acb3 100644
--- a/pkgs/development/python-modules/cheroot/default.nix
+++ b/pkgs/development/python-modules/cheroot/default.nix
@@ -1,32 +1,33 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, jaraco-functools
-, jaraco-text
-, more-itertools
-, portend
-, pypytools
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-toolbelt
-, requests-unixsocket
-, setuptools-scm
-, six
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  jaraco-functools,
+  jaraco-text,
+  more-itertools,
+  portend,
+  pypytools,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-toolbelt,
+  requests-unixsocket,
+  setuptools-scm,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "cheroot";
-  version = "10.0.0";
+  version = "10.0.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-WcShh3/vmWmzw8CAyqrzd+J4CRlDeFP8DTKp30CzEfA=";
+    hash = "sha256-4LgveXZY0muGE+yOtWPDsI5r1qeSHp1Qib0Rda0bF0A=";
   };
 
   # remove setuptools-scm-git-archive dependency
@@ -40,9 +41,7 @@ buildPythonPackage rec {
       --replace "setuptools_scm_git_archive>=1.0" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     jaraco-functools
@@ -72,14 +71,16 @@ buildPythonPackage rec {
     rm pytest.ini
   '';
 
-  disabledTests = [
-    "tls" # touches network
-    "peercreds_unix_sock" # test urls no longer allowed
-  ] ++ lib.optionals stdenv.isDarwin [
-    "http_over_https_error"
-    "bind_addr_unix"
-    "test_ssl_env"
-  ];
+  disabledTests =
+    [
+      "tls" # touches network
+      "peercreds_unix_sock" # test urls no longer allowed
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      "http_over_https_error"
+      "bind_addr_unix"
+      "test_ssl_env"
+    ];
 
   disabledTestPaths = [
     # avoid attempting to use 3 packages not available on nixpkgs
@@ -89,9 +90,7 @@ buildPythonPackage rec {
     "cheroot/test/test_ssl.py"
   ];
 
-  pythonImportsCheck = [
-    "cheroot"
-  ];
+  pythonImportsCheck = [ "cheroot" ];
 
   # Some of the tests use localhost networking.
   __darwinAllowLocalNetworking = true;
@@ -101,6 +100,6 @@ buildPythonPackage rec {
     mainProgram = "cheroot";
     homepage = "https://github.com/cherrypy/cheroot";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cherrypy-cors/default.nix b/pkgs/development/python-modules/cherrypy-cors/default.nix
index 72af66bbef75a..a151c9d8fd15e 100644
--- a/pkgs/development/python-modules/cherrypy-cors/default.nix
+++ b/pkgs/development/python-modules/cherrypy-cors/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools
-, setuptools-scm
-, httpagentparser
-, cherrypy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  httpagentparser,
+  cherrypy,
+  pytestCheckHook,
 }:
 buildPythonPackage rec {
   pname = "cherrypy-cors";
@@ -32,9 +33,7 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "cherrypy_cors" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "CORS support for CherryPy";
diff --git a/pkgs/development/python-modules/cherrypy/default.nix b/pkgs/development/python-modules/cherrypy/default.nix
index 6d1fffbdedc95..c9a63cc215052 100644
--- a/pkgs/development/python-modules/cherrypy/default.nix
+++ b/pkgs/development/python-modules/cherrypy/default.nix
@@ -1,53 +1,41 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, cheroot
-, fetchpatch
-, fetchPypi
-, jaraco-collections
-, more-itertools
-, objgraph
-, path
-, portend
-, pyopenssl
-, pytest-forked
-, pytest-services
-, pytestCheckHook
-, python-memcached
-, pythonAtLeast
-, pythonOlder
-, requests-toolbelt
-, routes
-, setuptools-scm
-, simplejson
-, zc-lockfile
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cheroot,
+  fetchPypi,
+  jaraco-collections,
+  more-itertools,
+  objgraph,
+  path,
+  portend,
+  pyopenssl,
+  pytest-forked,
+  pytest-services,
+  pytestCheckHook,
+  python-memcached,
+  pythonAtLeast,
+  pythonOlder,
+  requests-toolbelt,
+  routes,
+  setuptools-scm,
+  simplejson,
+  zc-lockfile,
 }:
 
 buildPythonPackage rec {
   pname = "cherrypy";
-  version = "18.9.0";
+  version = "18.10.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    pname = "CherryPy";
-    inherit version;
-    hash = "sha256-awbBkc5xqGRh8wVyoatX/8CfQxQ7qOQsEDx7M0ciDrE=";
+    inherit pname version;
+    hash = "sha256-bHDnjuETAOiyHAdnxUKuaxAqScrFz9Tj4xPXu5B8WJE=";
   };
 
-  patches = [
-    # Replace distutils.spawn.find_executable with shutil.which, https://github.com/cherrypy/cherrypy/pull/2023
-    (fetchpatch {
-      name = "remove-distutils.patch";
-      url = "https://github.com/cherrypy/cherrypy/commit/8a19dd5f1e712a326a3613b17e6fc900012ed09a.patch";
-      hash = "sha256-fXECX0CdU74usiq9GEkIG9CF+dueszblT4qOeF6B700=";
-    })
-  ];
-
   postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail '"setuptools_scm_git_archive >= 1.1",' ""
     # Disable doctest plugin because times out
     substituteInPlace pytest.ini \
       --replace-fail "--doctest-modules" "-vvv" \
@@ -56,11 +44,9 @@ buildPythonPackage rec {
     sed -i "/--cov/d" pytest.ini
   '';
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cheroot
     jaraco-collections
     more-itertools
@@ -86,45 +72,44 @@ buildPythonPackage rec {
     "ignore::DeprecationWarning"
   ];
 
-  disabledTests = [
-    # Keyboard interrupt ends test suite run
-    "KeyboardInterrupt"
-    # daemonize and autoreload tests have issue with sockets within sandbox
-    "daemonize"
-    "Autoreload"
-
-    "test_antistampede"
-    "test_file_stream"
-    "test_basic_request"
-    "test_3_Redirect"
-    "test_4_File_deletion"
-  ] ++ lib.optionals (pythonAtLeast "3.11") [
-    "testErrorHandling"
-    "testHookErrors"
-    "test_HTTP10_KeepAlive"
-    "test_No_Message_Body"
-    "test_HTTP11_Timeout"
-    "testGzip"
-    "test_malformed_header"
-    "test_no_content_length"
-    "test_post_filename_with_special_characters"
-    "test_post_multipart"
-    "test_iterator"
-    "test_1_Ram_Concurrency"
-    "test_2_File_Concurrency"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_block"
-  ];
-
-  disabledTestPaths = lib.optionals stdenv.isDarwin [
+  disabledTests =
+    [
+      # Keyboard interrupt ends test suite run
+      "KeyboardInterrupt"
+      # daemonize and autoreload tests have issue with sockets within sandbox
+      "daemonize"
+      "Autoreload"
+
+      "test_antistampede"
+      "test_file_stream"
+      "test_basic_request"
+      "test_3_Redirect"
+      "test_4_File_deletion"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.11") [
+      "testErrorHandling"
+      "testHookErrors"
+      "test_HTTP10_KeepAlive"
+      "test_No_Message_Body"
+      "test_HTTP11_Timeout"
+      "testGzip"
+      "test_malformed_header"
+      "test_no_content_length"
+      "test_post_filename_with_special_characters"
+      "test_post_multipart"
+      "test_iterator"
+      "test_1_Ram_Concurrency"
+      "test_2_File_Concurrency"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [ "test_block" ];
+
+  disabledTestPaths = lib.optionals stdenv.hostPlatform.isDarwin [
     "cherrypy/test/test_config_server.py"
   ];
 
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [
-    "cherrypy"
-  ];
+  pythonImportsCheck = [ "cherrypy" ];
 
   passthru.optional-dependencies = {
     json = [ simplejson ];
@@ -132,7 +117,9 @@ buildPythonPackage rec {
     routes_dispatcher = [ routes ];
     ssl = [ pyopenssl ];
     # not packaged yet
-    xcgi = [ /* flup */ ];
+    xcgi = [
+      # flup
+    ];
   };
 
   meta = with lib; {
@@ -141,6 +128,6 @@ buildPythonPackage rec {
     homepage = "https://cherrypy.dev/";
     changelog = "https://github.com/cherrypy/cherrypy/blob/v${version}/CHANGES.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/chess/default.nix b/pkgs/development/python-modules/chess/default.nix
index 5e32d74b43793..50cb9306969f5 100644
--- a/pkgs/development/python-modules/chess/default.nix
+++ b/pkgs/development/python-modules/chess/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,14 @@ buildPythonPackage rec {
     hash = "sha256-jfPg1W9Qp0DlAbMXaFqZ6Ri2zMOW6EKUHwi7Azn/yl0=";
   };
 
-  pythonImportsCheck = [
-    "chess"
-  ];
+  pythonImportsCheck = [ "chess" ];
 
   checkPhase = ''
     ${python.interpreter} ./test.py -v
   '';
 
   meta = with lib; {
-    description = "A chess library with move generation, move validation, and support for common formats";
+    description = "Chess library with move generation, move validation, and support for common formats";
     homepage = "https://github.com/niklasf/python-chess";
     changelog = "https://github.com/niklasf/python-chess/blob/v${version}/CHANGELOG.rst";
     license = licenses.gpl3Plus;
diff --git a/pkgs/development/python-modules/chevron/default.nix b/pkgs/development/python-modules/chevron/default.nix
index 6a122ecf31e3a..3a178e38c786a 100644
--- a/pkgs/development/python-modules/chevron/default.nix
+++ b/pkgs/development/python-modules/chevron/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
 }:
 
 buildPythonPackage {
@@ -23,7 +24,7 @@ buildPythonPackage {
 
   meta = with lib; {
     homepage = "https://github.com/noahmorrison/chevron";
-    description = "A python implementation of the mustache templating language";
+    description = "Python implementation of the mustache templating language";
     mainProgram = "chevron";
     license = licenses.mit;
     maintainers = with maintainers; [ dhkl ];
diff --git a/pkgs/development/python-modules/chex/default.nix b/pkgs/development/python-modules/chex/default.nix
index 08ce0916c25ea..803c352c71549 100644
--- a/pkgs/development/python-modules/chex/default.nix
+++ b/pkgs/development/python-modules/chex/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, absl-py
-, cloudpickle
-, dm-tree
-, jax
-, jaxlib
-, numpy
-, pytestCheckHook
-, toolz
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  absl-py,
+  cloudpickle,
+  dm-tree,
+  jax,
+  jaxlib,
+  numpy,
+  pytestCheckHook,
+  toolz,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     hash = "sha256-Z5Ns4fG5pC99I4xdGjDMKX6YZpTtd1y0TWcIOtr7dug=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     absl-py
@@ -41,9 +40,7 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  pythonImportsCheck = [
-    "chex"
-  ];
+  pythonImportsCheck = [ "chex" ];
 
   nativeCheckInputs = [
     cloudpickle
@@ -52,7 +49,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "Chex is a library of utilities for helping to write reliable JAX code.";
+    description = "Chex is a library of utilities for helping to write reliable JAX code";
     homepage = "https://github.com/deepmind/chex";
     changelog = "https://github.com/google-deepmind/chex/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/chirpstack-api/default.nix b/pkgs/development/python-modules/chirpstack-api/default.nix
index 141a5f349b70e..38ea1d8739cfc 100644
--- a/pkgs/development/python-modules/chirpstack-api/default.nix
+++ b/pkgs/development/python-modules/chirpstack-api/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, google-api-core
-, grpcio
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  google-api-core,
+  grpcio,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "chirpstack_api"
-  ];
+  pythonImportsCheck = [ "chirpstack_api" ];
 
   meta = with lib; {
     description = "ChirpStack gRPC API message and service wrappers for Python";
diff --git a/pkgs/development/python-modules/chispa/default.nix b/pkgs/development/python-modules/chispa/default.nix
index 37e804c718942..980f02b4229db 100644
--- a/pkgs/development/python-modules/chispa/default.nix
+++ b/pkgs/development/python-modules/chispa/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,13 +21,9 @@ buildPythonPackage rec {
     hash = "sha256-r3/Uae/Bu/+ZpWt19jetfIRpew1hBB24WWQRJIcYqFs=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  propagatedBuildInputs = [ setuptools ];
 
   # Tests require a spark installation
   doCheck = false;
diff --git a/pkgs/development/python-modules/chroma-hnswlib/default.nix b/pkgs/development/python-modules/chroma-hnswlib/default.nix
index 31f884e53ba86..fb8bdc1deea1b 100644
--- a/pkgs/development/python-modules/chroma-hnswlib/default.nix
+++ b/pkgs/development/python-modules/chroma-hnswlib/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, pybind11
-, setuptools
-, wheel
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  pybind11,
+  setuptools,
+  wheel,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "chroma-hnswlib";
-  version = "0.7.3";
+  version = "0.7.6";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,7 +21,7 @@ buildPythonPackage rec {
     owner = "chroma-core";
     repo = "hnswlib";
     rev = "refs/tags/${version}";
-    hash = "sha256-c4FvymqZy8AZKbh6Y8xZRjKAqYcUyZABRGc1u7vwlsk=";
+    hash = "sha256-pjz5SGg2drO6fkml9ojFG7/Gq3/Y7vPaOHc+3LKnjUw=";
   };
 
   nativeBuildInputs = [
@@ -30,13 +31,9 @@ buildPythonPackage rec {
     wheel
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "hnswlib"
-  ];
+  pythonImportsCheck = [ "hnswlib" ];
 
   meta = with lib; {
     description = "Header-only C++/python library for fast approximate nearest neighbors";
diff --git a/pkgs/development/python-modules/chromadb/default.nix b/pkgs/development/python-modules/chromadb/default.nix
index 2042758efd8af..eb44d2a9b5c26 100644
--- a/pkgs/development/python-modules/chromadb/default.nix
+++ b/pkgs/development/python-modules/chromadb/default.nix
@@ -10,10 +10,12 @@
   fastapi,
   fetchFromGitHub,
   grpcio,
+  httpx,
   hypothesis,
   importlib-resources,
   kubernetes,
   mmh3,
+  nixosTests,
   numpy,
   onnxruntime,
   openssl,
@@ -26,19 +28,19 @@
   pkg-config,
   posthog,
   protobuf,
+  psutil,
   pulsar-client,
   pydantic,
   pypika,
   pytest-asyncio,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
   pyyaml,
   requests,
   rustc,
   rustPlatform,
-  setuptools,
   setuptools-scm,
+  setuptools,
   tenacity,
   tokenizers,
   tqdm,
@@ -50,7 +52,7 @@
 
 buildPythonPackage rec {
   pname = "chromadb";
-  version = "0.5.0";
+  version = "0.5.7";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -59,39 +61,45 @@ buildPythonPackage rec {
     owner = "chroma-core";
     repo = "chroma";
     rev = "refs/tags/${version}";
-    hash = "sha256-gM+fexjwifF3evR8jZvMbIDz655RFKPUizrsB2q5tbw=";
+    hash = "sha256-+wRauCRrTQsGTadA6Ps0fXcpAl6ajsJRjcVEhP2+2ss=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-zyiFv/gswGupm7Y8BhviklqJzM914v0QyUsRwbGKZ48=";
+    hash = "sha256-Y2mkWGgS77sGOOL+S/pw/UmrKDRyO+ZbN2Msj35sIl8=";
   };
 
-  pythonRelaxDeps = [ "orjson" ];
+  pythonRelaxDeps = [
+    "chroma-hnswlib"
+    "orjson"
+  ];
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
 
   nativeBuildInputs = [
     cargo
     pkg-config
     protobuf
-    pythonRelaxDepsHook
     rustc
     rustPlatform.cargoSetupHook
-    setuptools
-    setuptools-scm
   ];
 
   buildInputs = [
     openssl
     zstd
-  ] ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.apple_sdk.frameworks.Security ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     bcrypt
     build
     chroma-hnswlib
     fastapi
     grpcio
+    httpx
     importlib-resources
     kubernetes
     mmh3
@@ -119,6 +127,7 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     hypothesis
+    psutil
     pytest-asyncio
     pytestCheckHook
   ];
@@ -132,27 +141,40 @@ buildPythonPackage rec {
   pytestFlagsArray = [ "-x" ];
 
   preCheck = ''
+    (($(ulimit -n) < 1024)) && ulimit -n 1024
     export HOME=$(mktemp -d)
   '';
 
+  disabledTests = [
+    # Tests are laky / timing sensitive
+    "test_fastapi_server_token_authn_allows_when_it_should_allow"
+    "test_fastapi_server_token_authn_rejects_when_it_should_reject"
+  ];
+
   disabledTestPaths = [
     # Tests require network access
-    "chromadb/test/property/test_cross_version_persist.py"
     "chromadb/test/auth/test_simple_rbac_authz.py"
+    "chromadb/test/db/test_system.py"
     "chromadb/test/ef/test_default_ef.py"
-    "chromadb/test/test_api.py"
     "chromadb/test/property/"
+    "chromadb/test/property/test_cross_version_persist.py"
     "chromadb/test/stress/"
+    "chromadb/test/test_api.py"
   ];
 
   __darwinAllowLocalNetworking = true;
 
+  passthru.tests = {
+    inherit (nixosTests) chromadb;
+  };
+
   meta = with lib; {
-    description = "The AI-native open-source embedding database";
-    mainProgram = "chroma";
+    description = "AI-native open-source embedding database";
     homepage = "https://github.com/chroma-core/chroma";
     changelog = "https://github.com/chroma-core/chroma/releases/tag/${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "chroma";
+    broken = stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64;
   };
 }
diff --git a/pkgs/development/python-modules/chromaprint/default.nix b/pkgs/development/python-modules/chromaprint/default.nix
index b439a4da79a5a..bdf78d43b4685 100644
--- a/pkgs/development/python-modules/chromaprint/default.nix
+++ b/pkgs/development/python-modules/chromaprint/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, m2r
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  m2r,
 }:
 
 buildPythonPackage rec {
@@ -28,6 +29,9 @@ buildPythonPackage rec {
     description = "Facilitate effortless color terminal output";
     homepage = "https://pypi.org/project/${pname}/";
     license = licenses.mit;
-    maintainers = with maintainers; [ dschrempf peterhoeg ];
+    maintainers = with maintainers; [
+      dschrempf
+      peterhoeg
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/ci-info/default.nix b/pkgs/development/python-modules/ci-info/default.nix
index 8c2fc9c4ff3b5..4c603940a1440 100644
--- a/pkgs/development/python-modules/ci-info/default.nix
+++ b/pkgs/development/python-modules/ci-info/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, isPy27, fetchPypi, pytest, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  isPy27,
+  fetchPypi,
+  pytest,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   version = "0.3.0";
@@ -12,9 +19,12 @@ buildPythonPackage rec {
     hash = "sha256-H9UMvUAfKa3/7rGLBIniMtFqwadFisa8MW3qtq5TX7A=";
   };
 
-  nativeCheckInputs = [ pytest pytestCheckHook ];
+  nativeCheckInputs = [
+    pytest
+    pytestCheckHook
+  ];
 
-  doCheck = false;  # both tests access network
+  doCheck = false; # both tests access network
 
   pythonImportsCheck = [ "ci_info" ];
 
diff --git a/pkgs/development/python-modules/ci-py/default.nix b/pkgs/development/python-modules/ci-py/default.nix
index b7e6c5ff8060e..9abd0d04b29b6 100644
--- a/pkgs/development/python-modules/ci-py/default.nix
+++ b/pkgs/development/python-modules/ci-py/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,13 +23,9 @@ buildPythonPackage rec {
       --replace "'pytest-runner', " ""
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ci"
-  ];
+  pythonImportsCheck = [ "ci" ];
 
   meta = with lib; {
     description = "Library for working with Continuous Integration services";
diff --git a/pkgs/development/python-modules/cinemagoer/default.nix b/pkgs/development/python-modules/cinemagoer/default.nix
index 403ee6dafb616..d87df6283746d 100644
--- a/pkgs/development/python-modules/cinemagoer/default.nix
+++ b/pkgs/development/python-modules/cinemagoer/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, lxml
-, sqlalchemy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  lxml,
+  sqlalchemy,
 }:
 
 buildPythonPackage rec {
@@ -26,10 +27,10 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "imdb" ]; # Former "imdbpy", upstream is yet to rename here
 
   meta = with lib; {
-    description = "A Python package for retrieving and managing the data of the IMDb movie database about movies and people";
+    description = "Python package for retrieving and managing the data of the IMDb movie database about movies and people";
     downloadPage = "https://github.com/cinemagoer/cinemagoer/";
     homepage = "https://cinemagoer.github.io/";
     license = licenses.gpl2Only;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/circuit-webhook/default.nix b/pkgs/development/python-modules/circuit-webhook/default.nix
index 895c6803142e0..cca4277525b27 100644
--- a/pkgs/development/python-modules/circuit-webhook/default.nix
+++ b/pkgs/development/python-modules/circuit-webhook/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "circuit_webhook"
-  ];
+  pythonImportsCheck = [ "circuit_webhook" ];
 
   meta = with lib; {
     description = "Module for Unify Circuit API webhooks";
diff --git a/pkgs/development/python-modules/circuitbreaker/default.nix b/pkgs/development/python-modules/circuitbreaker/default.nix
index 9218d82847ccc..da66b2b45108b 100644
--- a/pkgs/development/python-modules/circuitbreaker/default.nix
+++ b/pkgs/development/python-modules/circuitbreaker/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pytest-asyncio
-, pytest-mock
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pytest-asyncio,
+  pytest-mock,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     pytest-mock
   ];
 
-  pythonImportsCheck = [
-    "circuitbreaker"
-  ];
+  pythonImportsCheck = [ "circuitbreaker" ];
 
   meta = with lib; {
     description = "Python Circuit Breaker implementation";
diff --git a/pkgs/development/python-modules/circus/default.nix b/pkgs/development/python-modules/circus/default.nix
index 95d29a4401bcd..858b9142121cb 100644
--- a/pkgs/development/python-modules/circus/default.nix
+++ b/pkgs/development/python-modules/circus/default.nix
@@ -1,30 +1,32 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, psutil
-, pytestCheckHook
-, pyyaml
-, pyzmq
-, tornado
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  psutil,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  pyzmq,
+  tornado,
 }:
 
 buildPythonPackage rec {
   pname = "circus";
   version = "0.18.0";
-  format = "pyproject";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-GTzoIk4GjO1mckz0gxBvtmdLUaV1g6waDn7Xp+6Mcas=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     psutil
     pyzmq
     tornado
@@ -36,44 +38,45 @@ buildPythonPackage rec {
   ];
 
   # On darwin: Too many open files
-  preCheck = lib.optionalString stdenv.isDarwin ''
+  preCheck = lib.optionalString stdenv.hostPlatform.isDarwin ''
     ulimit -n 1024
   '';
 
   disabledTests = [
     # these tests raise circus.tests.support.TimeoutException
-    "test_reload1"
-    "test_reload2"
+    "test_add_start"
+    "test_add"
+    "test_command_already_running"
+    "test_dummy"
+    "test_exits_within_graceful_timeout"
+    "test_full_stats"
+    "test_handler"
+    "test_handler"
+    "test_inherited"
+    "test_kills_after_graceful_timeout"
+    "test_launch_cli"
+    "test_max_age"
     "test_reload_sequential"
     "test_reload_uppercase"
     "test_reload_wid_1_worker"
     "test_reload_wid_4_workers"
-    "test_add"
-    "test_add_start"
-    "test_command_already_running"
-    "test_launch_cli"
-    "test_handler"
+    "test_reload1"
+    "test_reload2"
     "test_resource_watcher_max_cpu"
-    "test_resource_watcher_max_mem"
     "test_resource_watcher_max_mem_abs"
+    "test_resource_watcher_max_mem"
     "test_resource_watcher_min_cpu"
-    "test_resource_watcher_min_mem"
     "test_resource_watcher_min_mem_abs"
-    "test_full_stats"
-    "test_watchdog_discovery_found"
-    "test_watchdog_discovery_not_found"
-    "test_dummy"
-    "test_handler"
-    "test_stdin_socket"
-    "test_stop_and_restart"
-    "test_stream"
-    "test_inherited"
+    "test_resource_watcher_min_mem"
     "test_set_before_launch"
     "test_set_by_arbiter"
-    "test_max_age"
     "test_signal"
-    "test_exits_within_graceful_timeout"
-    "test_kills_after_graceful_timeout"
+    "test_stdin_socket"
+    "test_stop_and_restart"
+    "test_stream"
+    "test_venv"
+    "test_watchdog_discovery_found"
+    "test_watchdog_discovery_not_found"
     # this test requires socket communication
     "test_plugins"
   ];
@@ -81,8 +84,10 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "circus" ];
 
   meta = with lib; {
-    description = "A process and socket manager";
+    description = "Process and socket manager";
     homepage = "https://github.com/circus-tent/circus";
+    changelog = "https://github.com/circus-tent/circus/releases/tag/${version}";
     license = licenses.asl20;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cirq-aqt/default.nix b/pkgs/development/python-modules/cirq-aqt/default.nix
index bac507091feb4..6e20f84d26e6f 100644
--- a/pkgs/development/python-modules/cirq-aqt/default.nix
+++ b/pkgs/development/python-modules/cirq-aqt/default.nix
@@ -1,29 +1,31 @@
-{ buildPythonPackage
-, cirq-core
-, requests
-, pytestCheckHook
+{
+  buildPythonPackage,
+  cirq-core,
+  requests,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "cirq-aqt";
-  format = "setuptools";
+  pyproject = true;
   inherit (cirq-core) version src meta;
 
   sourceRoot = "${src.name}/${pname}";
 
   postPatch = ''
     substituteInPlace requirements.txt \
-      --replace "requests~=2.18" "requests"
+      --replace-fail "requests~=2.18" "requests"
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     cirq-core
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # cirq's importlib hook doesn't work here
   #pythonImportsCheck = [ "cirq_aqt" ];
diff --git a/pkgs/development/python-modules/cirq-core/default.nix b/pkgs/development/python-modules/cirq-core/default.nix
index 0563c2f1a71c1..4c20d01f302f7 100644
--- a/pkgs/development/python-modules/cirq-core/default.nix
+++ b/pkgs/development/python-modules/cirq-core/default.nix
@@ -1,74 +1,80 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, duet
-, matplotlib
-, networkx
-, numpy
-, pandas
-, requests
-, scipy
-, sortedcontainers
-, sympy
-, tqdm
-, typing-extensions
-  # Contrib requirements
-, withContribRequires ? false
-, autoray ? null
-, opt-einsum
-, ply
-, pylatex ? null
-, pyquil ? null
-, quimb ? null
-  # test inputs
-, pytestCheckHook
-, freezegun
-, pytest-asyncio
+{
+  lib,
+  stdenv,
+  attrs,
+  autoray ? null,
+  buildPythonPackage,
+  duet,
+  fetchFromGitHub,
+  freezegun,
+  matplotlib,
+  networkx,
+  numpy,
+  opt-einsum,
+  pandas,
+  ply,
+  pylatex ? null,
+  pyquil ? null,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  quimb ? null,
+  requests,
+  scipy,
+  setuptools,
+  sortedcontainers,
+  sympy,
+  tqdm,
+  typing-extensions,
+  withContribRequires ? false,
 }:
 
 buildPythonPackage rec {
   pname = "cirq-core";
-  version = "1.3.0";
-  format = "setuptools";
+  version = "1.4.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "quantumlib";
     repo = "cirq";
     rev = "refs/tags/v${version}";
-    hash = "sha256-JAJJciFg3BuRha1wTKixtKWcYy3NA2mNpniPyPHTTe8=";
+    hash = "sha256-1GcRDVgYF+1igZQFlQbiWZmU1WNIJh4CcOftQe6OP6I=";
   };
 
   sourceRoot = "${src.name}/${pname}";
 
   postPatch = ''
     substituteInPlace requirements.txt \
-      --replace "matplotlib~=3.0" "matplotlib"
-   '';
+      --replace-fail "matplotlib~=3.0" "matplotlib"
+  '';
 
-  propagatedBuildInputs = [
-    duet
-    matplotlib
-    networkx
-    numpy
-    pandas
-    requests
-    scipy
-    sortedcontainers
-    sympy
-    tqdm
-    typing-extensions
-  ] ++ lib.optionals withContribRequires [
-    autoray
-    opt-einsum
-    ply
-    pylatex
-    pyquil
-    quimb
-  ];
+  build-system = [ setuptools ];
+
+  dependencies =
+    [
+      attrs
+      duet
+      matplotlib
+      networkx
+      numpy
+      pandas
+      requests
+      scipy
+      sortedcontainers
+      sympy
+      tqdm
+      typing-extensions
+    ]
+    ++ lib.optionals withContribRequires [
+      autoray
+      opt-einsum
+      ply
+      pylatex
+      pyquil
+      quimb
+    ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -83,7 +89,7 @@ buildPythonPackage rec {
     "cirq/_version_test.py"
   ];
 
-  disabledTests = lib.optionals stdenv.isAarch64 [
+  disabledTests = lib.optionals stdenv.hostPlatform.isAarch64 [
     # https://github.com/quantumlib/Cirq/issues/5924
     "test_prepare_two_qubit_state_using_sqrt_iswap"
   ];
@@ -93,6 +99,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/quantumlib/cirq";
     changelog = "https://github.com/quantumlib/Cirq/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ drewrisinger fab ];
+    maintainers = with maintainers; [
+      drewrisinger
+      fab
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/cirq-ft/default.nix b/pkgs/development/python-modules/cirq-ft/default.nix
deleted file mode 100644
index a0fbbc40da1f2..0000000000000
--- a/pkgs/development/python-modules/cirq-ft/default.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ attrs
-, buildPythonPackage
-, cachetools
-, cirq-core
-, ipython
-, ipywidgets
-, nbconvert
-, nbformat
-, pytestCheckHook
-, setuptools
-}:
-
-buildPythonPackage rec {
-  pname = "cirq-ft";
-  pyproject = true;
-  inherit (cirq-core) version src meta;
-
-  sourceRoot = "${src.name}/${pname}";
-
-  nativeBuildInputs = [
-    setuptools
-  ];
-
-  propagatedBuildInputs = [
-    attrs
-    cachetools
-    cirq-core
-    ipython
-    ipywidgets
-    nbconvert
-    nbformat
-  ];
-
-  nativeCheckInputs = [
-    ipython
-    pytestCheckHook
-  ];
-
-  disabledTests = [
-    # Upstream doesn't always adjust the version
-    "test_version"
-  ];
-
-  # cirq's importlib hook doesn't work here
-  #pythonImportsCheck = [ "cirq_ft" ];
-
-}
diff --git a/pkgs/development/python-modules/cirq-google/default.nix b/pkgs/development/python-modules/cirq-google/default.nix
index c2d36a4f796d0..6c84cd1440e6a 100644
--- a/pkgs/development/python-modules/cirq-google/default.nix
+++ b/pkgs/development/python-modules/cirq-google/default.nix
@@ -1,11 +1,11 @@
-{ buildPythonPackage
-, cirq-core
-, freezegun
-, google-api-core
-, protobuf
-, pytestCheckHook
-, pythonRelaxDepsHook
-, setuptools
+{
+  buildPythonPackage,
+  cirq-core,
+  freezegun,
+  google-api-core,
+  protobuf,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -15,12 +15,9 @@ buildPythonPackage rec {
 
   sourceRoot = "${src.name}/${pname}";
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cirq-core
     google-api-core
     protobuf
@@ -47,5 +44,4 @@ buildPythonPackage rec {
     # Calibration issue
     "test_xeb_to_calibration_layer"
   ];
-
 }
diff --git a/pkgs/development/python-modules/cirq-ionq/default.nix b/pkgs/development/python-modules/cirq-ionq/default.nix
index fdad606eb069e..518334432441c 100644
--- a/pkgs/development/python-modules/cirq-ionq/default.nix
+++ b/pkgs/development/python-modules/cirq-ionq/default.nix
@@ -1,29 +1,31 @@
-{ buildPythonPackage
-, cirq-core
-, requests
-, pytestCheckHook
+{
+  buildPythonPackage,
+  cirq-core,
+  requests,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "cirq-ionq";
-  format = "setuptools";
+  pyproject = true;
   inherit (cirq-core) version src meta;
 
   sourceRoot = "${src.name}/${pname}";
 
   postPatch = ''
     substituteInPlace requirements.txt \
-      --replace "requests~=2.18" "requests"
+      --replace-fail "requests~=2.18" "requests"
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     cirq-core
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # cirq's importlib hook doesn't work here
   #pythonImportsCheck = [ "cirq_ionq" ];
diff --git a/pkgs/development/python-modules/cirq-pasqal/default.nix b/pkgs/development/python-modules/cirq-pasqal/default.nix
index 7be607fbd74d6..62d946ea4617a 100644
--- a/pkgs/development/python-modules/cirq-pasqal/default.nix
+++ b/pkgs/development/python-modules/cirq-pasqal/default.nix
@@ -1,29 +1,31 @@
-{ buildPythonPackage
-, cirq-core
-, requests
-, pytestCheckHook
+{
+  buildPythonPackage,
+  cirq-core,
+  requests,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "cirq-pasqal";
-  format = "setuptools";
+  pyproject = true;
   inherit (cirq-core) version src meta;
 
   sourceRoot = "${src.name}/${pname}";
 
   postPatch = ''
     substituteInPlace requirements.txt \
-      --replace "requests~=2.18" "requests"
+      --replace-fail "requests~=2.18" "requests"
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     cirq-core
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # cirq's importlib hook doesn't work here
   #pythonImportsCheck = [ "cirq_pasqal" ];
diff --git a/pkgs/development/python-modules/cirq-rigetti/default.nix b/pkgs/development/python-modules/cirq-rigetti/default.nix
index 2189beb9f880f..5791950fc1368 100644
--- a/pkgs/development/python-modules/cirq-rigetti/default.nix
+++ b/pkgs/development/python-modules/cirq-rigetti/default.nix
@@ -1,82 +1,50 @@
-{ buildPythonPackage
-, cirq-core
-, requests
-, pytestCheckHook
-, attrs
-, certifi
-, h11
-, httpcore
-, idna
-, httpx
-, iso8601
-, pydantic
-, pyjwt
-, pyquil
-, python-dateutil
-, pythonOlder
-, qcs-api-client
-, retrying
-, rfc3339
-, rfc3986
-, six
-, sniffio
-, toml
+{
+  lib,
+  buildPythonPackage,
+  cirq-core,
+  fetchpatch2,
+  pyquil,
+  pytestCheckHook,
+  pythonOlder,
+  qcs-sdk-python,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "cirq-rigetti";
-  format = "setuptools";
-  inherit (cirq-core) version src meta;
-
-  disabled = pythonOlder "3.7";
+  pyproject = true;
+  inherit (cirq-core) version src;
+
+  disabled = pythonOlder "3.10";
+
+  patches = [
+    # https://github.com/quantumlib/Cirq/pull/6734
+    (fetchpatch2 {
+      name = "fix-rigetti-check-for-aspen-family-device-kind.patch";
+      url = "https://github.com/quantumlib/Cirq/commit/dd395fb71fb7f92cfd34f008bf2a98fc70b57fae.patch";
+      stripLen = 1;
+      hash = "sha256-EWB2CfMS2+M3zNFX5PwFNtEBdgJkNVUVNd+I/E6n9kI=";
+    })
+  ];
 
   sourceRoot = "${src.name}/${pname}";
 
-  pythonRelaxDeps = [
-    "attrs"
-    "certifi"
-    "h11"
-    "httpcore"
-    "httpx"
-    "idna"
-    "iso8601"
-    "pydantic"
-    "pyjwt"
-    "pyquil"
-    "qcs-api-client"
-    "rfc3986"
-  ];
+  pythonRelaxDeps = [ "pyquil" ];
 
   postPatch = ''
     # Remove outdated test
     rm cirq_rigetti/service_test.py
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     cirq-core
-    attrs
-    certifi
-    h11
-    httpcore
-    httpx
-    idna
-    iso8601
-    pydantic
-    pyjwt
     pyquil
-    python-dateutil
-    qcs-api-client
-    retrying
-    rfc3339
-    rfc3986
-    six
-    sniffio
-    toml
+    qcs-sdk-python
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # No need to test the version number
diff --git a/pkgs/development/python-modules/cirq-web/default.nix b/pkgs/development/python-modules/cirq-web/default.nix
index 43f18ef282e10..782aec95c4efe 100644
--- a/pkgs/development/python-modules/cirq-web/default.nix
+++ b/pkgs/development/python-modules/cirq-web/default.nix
@@ -1,22 +1,22 @@
-{ buildPythonPackage
-, cirq-core
-, pytestCheckHook
+{
+  buildPythonPackage,
+  cirq-core,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "cirq-web";
-  format = "setuptools";
+  pyproject = true;
   inherit (cirq-core) version src meta;
 
   sourceRoot = "${src.name}/${pname}";
 
-  propagatedBuildInputs = [
-    cirq-core
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  dependencies = [ cirq-core ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # cirq's importlib hook doesn't work here
   #pythonImportsCheck = [ "cirq_web" ];
diff --git a/pkgs/development/python-modules/cirq/default.nix b/pkgs/development/python-modules/cirq/default.nix
index 200f19e39f6fa..0d755c34b7674 100644
--- a/pkgs/development/python-modules/cirq/default.nix
+++ b/pkgs/development/python-modules/cirq/default.nix
@@ -1,24 +1,26 @@
-{ buildPythonPackage
-, cirq-aqt
-, cirq-core
-, cirq-ft
-, cirq-google
-, cirq-ionq
-, cirq-pasqal
-, cirq-rigetti
-, cirq-web
-, pytestCheckHook
+{
+  buildPythonPackage,
+  cirq-aqt,
+  cirq-core,
+  cirq-google,
+  cirq-ionq,
+  cirq-pasqal,
+  cirq-rigetti,
+  cirq-web,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "cirq";
-  format = "setuptools";
+  pyproject = true;
   inherit (cirq-core) version src meta;
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     cirq-aqt
     cirq-core
-    cirq-ft
     cirq-ionq
     cirq-google
     cirq-rigetti
@@ -27,15 +29,12 @@ buildPythonPackage rec {
   ];
 
   # pythonImportsCheck = [ "cirq" "cirq.Circuit" ];  # cirq's importlib hook doesn't work here
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Don't run submodule or development tool tests
   disabledTestPaths = [
     "cirq-aqt"
     "cirq-core"
-    "cirq-ft"
     "cirq-google"
     "cirq-ionq"
     "cirq-pasqal"
@@ -43,5 +42,4 @@ buildPythonPackage rec {
     "cirq-web"
     "dev_tools"
   ];
-
 }
diff --git a/pkgs/development/python-modules/ciscoconfparse/default.nix b/pkgs/development/python-modules/ciscoconfparse/default.nix
index 33bd43c7043b5..478591d51df3a 100644
--- a/pkgs/development/python-modules/ciscoconfparse/default.nix
+++ b/pkgs/development/python-modules/ciscoconfparse/default.nix
@@ -1,34 +1,32 @@
-{ lib
-, buildPythonPackage
-, deprecat
-, dnspython
-, fetchFromGitHub
-, loguru
-, passlib
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, toml
+{
+  lib,
+  buildPythonPackage,
+  deprecat,
+  dnspython,
+  fetchFromGitHub,
+  loguru,
+  passlib,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  toml,
 }:
 
 buildPythonPackage rec {
   pname = "ciscoconfparse";
   version = "1.7.24";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "mpenning";
-    repo = pname;
+    repo = "ciscoconfparse";
     rev = "refs/tags/${version}";
     hash = "sha256-vL/CQdYcOP356EyRToviWylP1EBtxmeov6qkhfQNZ2Y=";
   };
 
-  pythonRelaxDeps = [
-    "loguru"
-  ];
+  pythonRelaxDeps = [ "loguru" ];
 
   postPatch = ''
     # The line below is in the [build-system] section, which is invalid and
@@ -37,17 +35,14 @@ buildPythonPackage rec {
     sed -i '/requires-python/d' pyproject.toml
 
     substituteInPlace pyproject.toml \
-      --replace '"poetry>=1.3.2",' ""
+      --replace-fail '"poetry>=1.3.2",' ""
 
     patchShebangs tests
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     passlib
     deprecat
     dnspython
@@ -55,13 +50,9 @@ buildPythonPackage rec {
     toml
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTestPaths = [
-    "tests/parse_test.py"
-  ];
+  disabledTestPaths = [ "tests/parse_test.py" ];
 
   disabledTests = [
     # Tests require network access
@@ -71,9 +62,7 @@ buildPythonPackage rec {
     "testParse_valid_filepath"
   ];
 
-  pythonImportsCheck = [
-    "ciscoconfparse"
-  ];
+  pythonImportsCheck = [ "ciscoconfparse" ];
 
   meta = with lib; {
     description = "Module to parse, audit, query, build, and modify Cisco IOS-style configurations";
diff --git a/pkgs/development/python-modules/ciscomobilityexpress/default.nix b/pkgs/development/python-modules/ciscomobilityexpress/default.nix
index c24873bf3174b..44d604e351328 100644
--- a/pkgs/development/python-modules/ciscomobilityexpress/default.nix
+++ b/pkgs/development/python-modules/ciscomobilityexpress/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     ${python.interpreter} -m unittest
   '';
 
-  pythonImportsCheck = [
-    "ciscomobilityexpress"
-  ];
+  pythonImportsCheck = [ "ciscomobilityexpress" ];
 
   meta = with lib; {
     description = "Module to interact with Cisco Mobility Express APIs to fetch connected devices";
diff --git a/pkgs/development/python-modules/ciso8601/default.nix b/pkgs/development/python-modules/ciso8601/default.nix
index e245e736ce280..e0ad1f0912609 100644
--- a/pkgs/development/python-modules/ciso8601/default.nix
+++ b/pkgs/development/python-modules/ciso8601/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
-, pytz
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  pytz,
 }:
 
 buildPythonPackage rec {
@@ -18,18 +19,14 @@ buildPythonPackage rec {
     hash = "sha256-KkMa1Rr3Z+5VnZfj25LDYpTfRyKqWA9u0vq6dZpwEy0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pytestCheckHook
     pytz
   ];
 
-  pytestFlagsArray = [
-    "tests/tests.py"
-  ];
+  pytestFlagsArray = [ "tests/tests.py" ];
 
   pythonImportsCheck = [ "ciso8601" ];
 
diff --git a/pkgs/development/python-modules/citeproc-py/default.nix b/pkgs/development/python-modules/citeproc-py/default.nix
index 264b0f3b34812..6b0fed8e0fb8c 100644
--- a/pkgs/development/python-modules/citeproc-py/default.nix
+++ b/pkgs/development/python-modules/citeproc-py/default.nix
@@ -1,36 +1,42 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, git
-, lxml
-, rnc2rng
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  git,
+  lxml,
+  rnc2rng,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "citeproc-py";
   version = "0.6.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d9e3a224f936fe2e5033b5d9ffdacab769cedb61d96c4e0cf2f0b488f1d24b4e";
+    hash = "sha256-2eOiJPk2/i5QM7XZ/9rKt2nO22HZbE4M8vC0iPHSS04=";
   };
 
+  build-system = [ setuptools ];
+
   buildInputs = [ rnc2rng ];
 
-  propagatedBuildInputs = [ lxml ];
+  dependencies = [ lxml ];
+
+  nativeCheckInputs = [
+    git
+    pytestCheckHook
+  ];
 
-  nativeCheckInputs = [ nose git ];
-  checkPhase = "nosetests tests";
-  doCheck = false;  # seems to want a Git repository, but fetchgit with leaveDotGit also fails
   pythonImportsCheck = [ "citeproc" ];
 
-  meta = with lib; {
-    homepage = "https://github.com/brechtm/citeproc-py";
+  meta = {
+    homepage = "https://github.com/citeproc-py/citeproc-py";
     description = "Citation Style Language (CSL) parser for Python";
     mainProgram = "csl_unsorted";
-    license = licenses.bsd2;
-    maintainers = with maintainers; [ bcdarwin ];
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ bcdarwin ];
   };
 }
diff --git a/pkgs/development/python-modules/cjkwrap/default.nix b/pkgs/development/python-modules/cjkwrap/default.nix
index 83f487a2af140..00854c3c0d692 100644
--- a/pkgs/development/python-modules/cjkwrap/default.nix
+++ b/pkgs/development/python-modules/cjkwrap/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "cjkwrap";
@@ -12,7 +16,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "cjkwrap" ];
 
   meta = with lib; {
-    description = "A library for wrapping and filling CJK text";
+    description = "Library for wrapping and filling CJK text";
     homepage = "https://f.gallai.re/cjkwrap";
     license = licenses.lgpl3Plus;
     maintainers = [ maintainers.kaction ];
diff --git a/pkgs/development/python-modules/ckcc-protocol/default.nix b/pkgs/development/python-modules/ckcc-protocol/default.nix
index 84f63752e2ae1..a8563a9ce0850 100644
--- a/pkgs/development/python-modules/ckcc-protocol/default.nix
+++ b/pkgs/development/python-modules/ckcc-protocol/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, click
-, ecdsa
-, hidapi
-, fetchPypi
-, pyaes
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  click,
+  ecdsa,
+  hidapi,
+  fetchPypi,
+  pyaes,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ckcc"
-  ];
+  pythonImportsCheck = [ "ckcc" ];
 
   meta = with lib; {
     description = "Communicate with your Coldcard using Python";
diff --git a/pkgs/development/python-modules/clarabel/default.nix b/pkgs/development/python-modules/clarabel/default.nix
index 7e098000002df..f6e4e09edc7cc 100644
--- a/pkgs/development/python-modules/clarabel/default.nix
+++ b/pkgs/development/python-modules/clarabel/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, rustPlatform
-, libiconv
-, numpy
-, scipy
-, nix-update-script
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  rustPlatform,
+  libiconv,
+  numpy,
+  scipy,
+  nix-update-script,
 }:
 
 buildPythonPackage rec {
   pname = "clarabel";
-  version = "0.7.1";
+  version = "0.9.0";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-owqxNfR1xbx4Mp/X31dSkRVeYFW8rwISTrYQuK0XY5Y=";
+    hash = "sha256-DW0/6IAL5bS11AqOFL1JJmez5GzF2+N2d85e0l8HGdQ=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-Tg9K66WIIAZyua8QlKrlUnpRJRmuxe7ihIr2Vqg79NQ=";
+    hash = "sha256-NNvrDXBodrO3bxr4X1HEn5uHmHDJ1s9C70lPv7OkSCo=";
   };
 
   nativeBuildInputs = with rustPlatform; [
@@ -30,16 +31,14 @@ buildPythonPackage rec {
     maturinBuildHook
   ];
 
-  buildInputs = lib.optional stdenv.isDarwin libiconv;
+  buildInputs = lib.optional stdenv.hostPlatform.isDarwin libiconv;
 
   propagatedBuildInputs = [
     numpy
     scipy
   ];
 
-  pythonImportsCheck = [
-    "clarabel"
-  ];
+  pythonImportsCheck = [ "clarabel" ];
 
   # no tests but run the same examples as .github/workflows/pypi.yaml
   checkPhase = ''
diff --git a/pkgs/development/python-modules/clarifai-grpc/default.nix b/pkgs/development/python-modules/clarifai-grpc/default.nix
index dfc183cb1d506..57006c8d7938b 100644
--- a/pkgs/development/python-modules/clarifai-grpc/default.nix
+++ b/pkgs/development/python-modules/clarifai-grpc/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "clarifai-grpc";
-  version = "10.3.4";
+  version = "10.8.6";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "Clarifai";
     repo = "clarifai-python-grpc";
     rev = "refs/tags/${version}";
-    hash = "sha256-1Yx00g2Cd9/41DZYK5cRwcFQv2qD6B4cl4cpVZ6slTA=";
+    hash = "sha256-lCFjZcPp4ih2fKaRXQxyxBkgRRPSaTOawiMqeXg25cg=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/clarifai/default.nix b/pkgs/development/python-modules/clarifai/default.nix
index b1085bdc5b99c..6b39d48513d6d 100644
--- a/pkgs/development/python-modules/clarifai/default.nix
+++ b/pkgs/development/python-modules/clarifai/default.nix
@@ -4,16 +4,11 @@
   clarifai-grpc,
   fetchFromGitHub,
   inquirerpy,
-  llama-index-core,
   numpy,
-  opencv4,
-  pandas,
   pillow,
   pycocotools,
-  pypdf,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
   pyyaml,
   rich,
   schema,
@@ -25,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "clarifai";
-  version = "10.3.1";
+  version = "10.8.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -34,26 +29,21 @@ buildPythonPackage rec {
     owner = "Clarifai";
     repo = "clarifai-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-KCJ1Ev0fgww0JU1tDp9X/A9EIcXQRaFKeA/MRNnp5ng=";
+    hash = "sha256-dRhFZACfdMW0cIBDVUOSGDl5fai0gFXDPyfDil+itwQ=";
   };
 
-  pythonRelaxDeps = [ "clarifai-grpc" ];
-
-  pythonRemoveDeps = [ "opencv-python" ];
+  pythonRelaxDeps = [
+    "clarifai-grpc"
+    "schema"
+  ];
 
   build-system = [ setuptools ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
-
   dependencies = [
     clarifai-grpc
     inquirerpy
-    llama-index-core
     numpy
-    opencv4
-    pandas
     pillow
-    pypdf
     pyyaml
     rich
     schema
@@ -75,6 +65,8 @@ buildPythonPackage rec {
   disabledTests = [
     # Test requires network access and API key
     "test_export_workflow_general"
+    "test_validate_invalid_id"
+    "test_validate_invalid_hex_id"
   ];
 
   disabledTestPaths = [
diff --git a/pkgs/development/python-modules/claripy/default.nix b/pkgs/development/python-modules/claripy/default.nix
index c10d32e6b189c..baaa3200ba315 100644
--- a/pkgs/development/python-modules/claripy/default.nix
+++ b/pkgs/development/python-modules/claripy/default.nix
@@ -7,14 +7,14 @@
   pysmt,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
   setuptools,
+  typing-extensions,
   z3-solver,
 }:
 
 buildPythonPackage rec {
   pname = "claripy";
-  version = "9.2.101";
+  version = "9.2.119";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -23,14 +23,13 @@ buildPythonPackage rec {
     owner = "angr";
     repo = "claripy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ecYyoFtCIsrlzcraqL8X4cZgqc243E9WXZix/70eksY=";
+    hash = "sha256-dnx5aiZ8ssgC0SFEipYuCXbYbdLt7Ma6xBfN1OlO8Do=";
   };
 
   # z3 does not provide a dist-info, so python-runtime-deps-check will fail
   pythonRemoveDeps = [ "z3-solver" ];
 
   build-system = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -38,6 +37,7 @@ buildPythonPackage rec {
     cachetools
     decorator
     pysmt
+    typing-extensions
     z3-solver
   ] ++ z3-solver.requiredPythonModules;
 
diff --git a/pkgs/development/python-modules/class-doc/default.nix b/pkgs/development/python-modules/class-doc/default.nix
index 432df1f674eed..32d69f0927601 100644
--- a/pkgs/development/python-modules/class-doc/default.nix
+++ b/pkgs/development/python-modules/class-doc/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, more-itertools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  poetry-core,
+  more-itertools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -28,21 +29,13 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    more-itertools
-  ];
+  propagatedBuildInputs = [ more-itertools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "class_doc"
-  ];
+  pythonImportsCheck = [ "class_doc" ];
 
   meta = with lib; {
     description = "Extract attributes docstrings defined in various ways";
diff --git a/pkgs/development/python-modules/classify-imports/default.nix b/pkgs/development/python-modules/classify-imports/default.nix
index cdbc262af7ddf..53eaf1745231c 100644
--- a/pkgs/development/python-modules/classify-imports/default.nix
+++ b/pkgs/development/python-modules/classify-imports/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,13 +19,9 @@ buildPythonPackage rec {
     hash = "sha256-f5wZfisKz9WGdq6u0rd/zg2CfMwWvQeR8xZQNbD7KfU=";
   };
 
-  pythonImportsCheck = [
-    "classify_imports"
-  ];
+  pythonImportsCheck = [ "classify_imports" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Utilities for refactoring imports in python-like syntax";
diff --git a/pkgs/development/python-modules/cld2-cffi/default.nix b/pkgs/development/python-modules/cld2-cffi/default.nix
deleted file mode 100644
index 876a6f4492f6e..0000000000000
--- a/pkgs/development/python-modules/cld2-cffi/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib, stdenv, buildPythonPackage, fetchPypi, six, cffi, nose }:
-
-buildPythonPackage rec {
-  pname = "cld2-cffi";
-  version = "0.1.4";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0rvcdx4fdh5yk4d2nlddq1q1r2r0xqp86hpmbdn447pdcj1r8a9s";
-  };
-
-  propagatedBuildInputs = [ six cffi ];
-  nativeCheckInputs = [ nose ];
-
-  # gcc doesn't approve of this code, so disable -Werror
-  env.NIX_CFLAGS_COMPILE = "-w" + lib.optionalString stdenv.cc.isClang " -Wno-error=c++11-narrowing";
-
-  checkPhase = "nosetests -v";
-
-  meta = with lib; {
-    description = "CFFI bindings around Google Chromium's embedded compact language detection library (CLD2)";
-    homepage = "https://github.com/GregBowyer/cld2-cffi";
-    license = licenses.asl20;
-  };
-}
diff --git a/pkgs/development/python-modules/cle/default.nix b/pkgs/development/python-modules/cle/default.nix
index 4457c6586796c..554b36650ef31 100644
--- a/pkgs/development/python-modules/cle/default.nix
+++ b/pkgs/development/python-modules/cle/default.nix
@@ -2,12 +2,12 @@
   lib,
   archinfo,
   buildPythonPackage,
+  cart,
   cffi,
   fetchFromGitHub,
   minidump,
   pefile,
   pyelftools,
-  pynose,
   pytestCheckHook,
   pythonOlder,
   pyvex,
@@ -18,14 +18,14 @@
 
 let
   # The binaries are following the argr projects release cycle
-  version = "9.2.101";
+  version = "9.2.119";
 
   # Binary files from https://github.com/angr/binaries (only used for testing and only here)
   binaries = fetchFromGitHub {
     owner = "angr";
     repo = "binaries";
     rev = "refs/tags/v${version}";
-    hash = "sha256-8uvhjxZOgMjE2csOxS+kUPeo/pswovBDOLp5w8d4JSk=";
+    hash = "sha256-cIh8ahJGEVzKSylCBVF1RbNftqADjewuiybPiCWfmhw=";
   };
 in
 buildPythonPackage rec {
@@ -39,13 +39,16 @@ buildPythonPackage rec {
     owner = "angr";
     repo = "cle";
     rev = "refs/tags/v${version}";
-    hash = "sha256-cG9j3cMDwjm2DGvvgJgYfigf5e/61HKWFudgezE2zz8=";
+    hash = "sha256-jOqhwSxdHJsNUZqx/ViPDh09Uk+2hqyxm4p8XwyHZ0k=";
   };
 
   build-system = [ setuptools ];
 
+  pythonRelaxDeps = [ "pyvex" ];
+
   dependencies = [
     archinfo
+    cart
     cffi
     minidump
     pefile
@@ -56,7 +59,6 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
-    pynose
     pytestCheckHook
   ];
 
diff --git a/pkgs/development/python-modules/clean-fid/default.nix b/pkgs/development/python-modules/clean-fid/default.nix
index 7a2f328185e43..d88bbcc7105e4 100644
--- a/pkgs/development/python-modules/clean-fid/default.nix
+++ b/pkgs/development/python-modules/clean-fid/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# dependencies
-, numpy
-, pillow
-, requests
-, scipy
-, torch
-, torchvision
-, tqdm
+  # dependencies
+  numpy,
+  pillow,
+  requests,
+  scipy,
+  torch,
+  torchvision,
+  tqdm,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     tqdm
   ];
 
-  pythonImportsCheck = [
-    "cleanfid"
-  ];
+  pythonImportsCheck = [ "cleanfid" ];
 
   # no tests1
   doCheck = false;
diff --git a/pkgs/development/python-modules/cleanlab/default.nix b/pkgs/development/python-modules/cleanlab/default.nix
index 073ac338fb0bf..66bcee0c48ba3 100644
--- a/pkgs/development/python-modules/cleanlab/default.nix
+++ b/pkgs/development/python-modules/cleanlab/default.nix
@@ -1,43 +1,50 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, scikit-learn
-, termcolor
-, tqdm
-, pandas
-, setuptools
-# test dependencies
-, pytestCheckHook
-, pytest-lazy-fixture
-, tensorflow
-, torch
-, datasets
-, torchvision
-, keras
-, fasttext
-, hypothesis
-, wget
-, matplotlib
-, skorch
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  numpy,
+  scikit-learn,
+  termcolor,
+  tqdm,
+  pandas,
+
+  # test dependencies
+  cleanvision,
+  datasets,
+  fasttext,
+  hypothesis,
+  keras,
+  matplotlib,
+  pytestCheckHook,
+  pytest-lazy-fixture,
+  skorch,
+  tensorflow,
+  torch,
+  torchvision,
+  wget,
 }:
 
 buildPythonPackage rec {
   pname = "cleanlab";
-  version = "2.6.1";
+  version = "2.7.0";
   pyproject = true;
-  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "cleanlab";
-    repo = pname;
+    repo = "cleanlab";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+uJtm/t6Ri25V/9N/2fcOgCOBaBy8PrsM/tO1uX7FEY=";
+    hash = "sha256-0kCEIHNOXIkdwDH5zCVWnR/W79ppc/1PFsJ/a4goGzk=";
   };
 
-  nativeBuildInputs = [ setuptools ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    numpy
     scikit-learn
     termcolor
     tqdm
@@ -52,18 +59,19 @@ buildPythonPackage rec {
   doCheck = true;
 
   nativeCheckInputs = [
+    cleanvision
+    datasets
+    fasttext
+    hypothesis
+    keras
+    matplotlib
     pytestCheckHook
     pytest-lazy-fixture
+    skorch
     tensorflow
     torch
-    datasets
     torchvision
-    keras
-    fasttext
-    hypothesis
     wget
-    matplotlib
-    skorch
   ];
 
   disabledTests = [
@@ -76,13 +84,15 @@ buildPythonPackage rec {
     "tests/test_dataset.py"
     # Requires the datasets we just prevented from downloading
     "tests/datalab/test_cleanvision_integration.py"
+    # Fails because of issues with the keras derivation
+    "tests/test_frameworks.py"
   ];
 
-  meta = with lib; {
-    description = "The standard data-centric AI package for data quality and machine learning with messy, real-world data and labels.";
+  meta = {
+    description = "Standard data-centric AI package for data quality and machine learning with messy, real-world data and labels";
     homepage = "https://github.com/cleanlab/cleanlab";
     changelog = "https://github.com/cleanlab/cleanlab/releases/tag/v${version}";
-    license = licenses.agpl3Only;
-    maintainers = with maintainers; [ happysalada ];
+    license = lib.licenses.agpl3Only;
+    maintainers = with lib.maintainers; [ happysalada ];
   };
 }
diff --git a/pkgs/development/python-modules/cleanvision/default.nix b/pkgs/development/python-modules/cleanvision/default.nix
new file mode 100644
index 0000000000000..e82ebeb52f7ca
--- /dev/null
+++ b/pkgs/development/python-modules/cleanvision/default.nix
@@ -0,0 +1,79 @@
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  fsspec,
+  imagehash,
+  matplotlib,
+  numpy,
+  pandas,
+  pillow,
+  tabulate,
+  tqdm,
+
+  # tests
+  datasets,
+  psutil,
+  pytestCheckHook,
+  torchvision,
+}:
+
+buildPythonPackage rec {
+  pname = "cleanvision";
+  version = "0.3.6";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "cleanlab";
+    repo = "cleanvision";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-QAydDqLJx/jYKXqxRUElTdM5dOFA6nZag8rNAjPZjRg=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    fsspec
+    imagehash
+    matplotlib
+    numpy
+    pandas
+    pillow
+    tabulate
+    tqdm
+  ];
+
+  pythonImportsCheck = [ "cleanvision" ];
+
+  nativeCheckInputs = [
+    datasets
+    psutil
+    pytestCheckHook
+    torchvision
+  ];
+
+  preCheck = ''
+    export HOME=$(mktemp -d)
+  '';
+
+  disabledTests = [
+    # Requires accessing s3 (online)
+    "test_s3_dataset"
+  ];
+
+  meta = {
+    description = "Automatically find issues in image datasets and practice data-centric computer vision";
+    homepage = "https://github.com/cleanlab/cleanvision";
+    changelog = "https://github.com/cleanlab/cleanvision/releases/tag/v${version}";
+    license = lib.licenses.agpl3Only;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+    # Fatal Python error: Aborted
+    broken = stdenv.isDarwin;
+  };
+}
diff --git a/pkgs/development/python-modules/cleo/default.nix b/pkgs/development/python-modules/cleo/default.nix
index caa812c63a84c..be805228302a7 100644
--- a/pkgs/development/python-modules/cleo/default.nix
+++ b/pkgs/development/python-modules/cleo/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, crashtest
-, poetry-core
-, pytest-mock
-, pytestCheckHook
-, pythonRelaxDepsHook
-, rapidfuzz
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  crashtest,
+  poetry-core,
+  pytest-mock,
+  pytestCheckHook,
+  rapidfuzz,
 }:
 
 buildPythonPackage rec {
@@ -23,12 +23,9 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "rapidfuzz"
-  ];
+  pythonRelaxDeps = [ "rapidfuzz" ];
 
   propagatedBuildInputs = [
     crashtest
diff --git a/pkgs/development/python-modules/clevercsv/default.nix b/pkgs/development/python-modules/clevercsv/default.nix
index fd8e4f61dceb9..eb9c003c913fd 100644
--- a/pkgs/development/python-modules/clevercsv/default.nix
+++ b/pkgs/development/python-modules/clevercsv/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# propagates
-, chardet
-, regex
-, packaging
+  # propagates
+  chardet,
+  regex,
+  packaging,
 
-# optionals
-, faust-cchardet
-, pandas
-, tabview
-# TODO: , wilderness
+  # optionals
+  faust-cchardet,
+  pandas,
+  tabview,
+  # TODO: , wilderness
 
-# tests
-, python
-, pytestCheckHook
+  # tests
+  python,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -45,9 +46,7 @@ buildPythonPackage rec {
     ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.full;
+  nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.full;
 
   pythonImportsCheck = [
     "clevercsv"
@@ -61,9 +60,7 @@ buildPythonPackage rec {
   '';
 
   # their ci only runs unit tests, there are also integration and fuzzing tests
-  pytestFlagsArray = [
-    "./tests/test_unit"
-  ];
+  pytestFlagsArray = [ "./tests/test_unit" ];
 
   disabledTestPaths = [
     # ModuleNotFoundError: No module named 'wilderness'
diff --git a/pkgs/development/python-modules/clf/default.nix b/pkgs/development/python-modules/clf/default.nix
index 0dd3609197f85..acf60cba7e1e4 100644
--- a/pkgs/development/python-modules/clf/default.nix
+++ b/pkgs/development/python-modules/clf/default.nix
@@ -1,5 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi
-, docopt, requests, pygments }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  docopt,
+  requests,
+  pygments,
+}:
 
 buildPythonPackage rec {
   pname = "clf";
@@ -15,7 +21,11 @@ buildPythonPackage rec {
     sed -i 's/==/>=/' requirements.txt
   '';
 
-  propagatedBuildInputs = [ docopt requests pygments ];
+  propagatedBuildInputs = [
+    docopt
+    requests
+    pygments
+  ];
 
   # Error when running tests:
   # No local packages or download links found for requests
diff --git a/pkgs/development/python-modules/cli-helpers/default.nix b/pkgs/development/python-modules/cli-helpers/default.nix
index 409f2c004c2cb..1d1e2c741b6ce 100644
--- a/pkgs/development/python-modules/cli-helpers/default.nix
+++ b/pkgs/development/python-modules/cli-helpers/default.nix
@@ -1,14 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, configobj
-, mock
-, pytestCheckHook
-, pygments
-, tabulate
-, terminaltables
-, wcwidth
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  configobj,
+  mock,
+  pytestCheckHook,
+  pygments,
+  tabulate,
 }:
 
 buildPythonPackage rec {
@@ -61,7 +60,7 @@ buildPythonPackage rec {
       Read the documentation at http://cli-helpers.rtfd.io
     '';
     homepage = "https://cli-helpers.readthedocs.io/en/stable/";
-    license = licenses.bsd3 ;
+    license = licenses.bsd3;
     maintainers = [ maintainers.kalbasit ];
   };
 }
diff --git a/pkgs/development/python-modules/cli-ui/default.nix b/pkgs/development/python-modules/cli-ui/default.nix
new file mode 100644
index 0000000000000..3b93c3eb7be8b
--- /dev/null
+++ b/pkgs/development/python-modules/cli-ui/default.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  poetry-core,
+  colorama,
+  tabulate,
+  unidecode,
+  buildPythonPackage,
+}:
+buildPythonPackage rec {
+  pname = "cli-ui";
+  version = "0.17.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-L2flDPR052rRYMPmYLutmL+LjfuNhHdl86Jht+E8Bfo=";
+  };
+
+  pythonRelaxDeps = [ "tabulate" ];
+
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    colorama
+    tabulate
+    unidecode
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "cli_ui" ];
+
+  meta = with lib; {
+    description = "Build Nice User Interfaces In The Terminal";
+    homepage = "https://github.com/your-tools/python-cli-ui";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ slashformotion ];
+  };
+}
diff --git a/pkgs/development/python-modules/cliche/default.nix b/pkgs/development/python-modules/cliche/default.nix
index b51801d8d2d3f..4b0e63ed21c1c 100644
--- a/pkgs/development/python-modules/cliche/default.nix
+++ b/pkgs/development/python-modules/cliche/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, ipdb
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ipdb,
+  pytestCheckHook,
 }:
 
 buildPythonPackage {
@@ -33,6 +34,6 @@ buildPythonPackage {
     mainProgram = "cliche";
     homepage = "https://github.com/kootenpv/cliche";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/click-aliases/default.nix b/pkgs/development/python-modules/click-aliases/default.nix
index f216d12909966..51b5b40a140c1 100644
--- a/pkgs/development/python-modules/click-aliases/default.nix
+++ b/pkgs/development/python-modules/click-aliases/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, click
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  click,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,17 +20,11 @@ buildPythonPackage rec {
     hash = "sha256-3/O5odibSjo5inlLCvUlotphhMVLBdaND/M2f40pMyM=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    click
-  ];
+  propagatedBuildInputs = [ click ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "click_aliases" ];
 
diff --git a/pkgs/development/python-modules/click-command-tree/default.nix b/pkgs/development/python-modules/click-command-tree/default.nix
index 53223c278c9c8..8902c3f13fbe9 100644
--- a/pkgs/development/python-modules/click-command-tree/default.nix
+++ b/pkgs/development/python-modules/click-command-tree/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, click
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  click,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,17 +18,11 @@ buildPythonPackage rec {
     hash = "sha256-oshAHCGe8p5BQ0W21bXSxrTCEFgIxZ6BmUEiWB1xAoI=";
   };
 
-  propagatedBuildInputs = [
-    click
-  ];
+  propagatedBuildInputs = [ click ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests.py"
-  ];
+  pytestFlagsArray = [ "tests.py" ];
 
   pythonImportsCheck = [ "click_command_tree" ];
 
diff --git a/pkgs/development/python-modules/click-completion/default.nix b/pkgs/development/python-modules/click-completion/default.nix
index b2e0a57bbcc8a..f79d92ecffc8a 100644
--- a/pkgs/development/python-modules/click-completion/default.nix
+++ b/pkgs/development/python-modules/click-completion/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
 
-# propagates
-, click
-, jinja2
-, shellingham
-, six
+  # propagates
+  click,
+  jinja2,
+  shellingham,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     six
   ];
 
-  pythonImportsCheck = [
-    "click_completion"
-  ];
+  pythonImportsCheck = [ "click_completion" ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/click-configfile/default.nix b/pkgs/development/python-modules/click-configfile/default.nix
index c1b0a0f092344..47d43ca1fa2b4 100644
--- a/pkgs/development/python-modules/click-configfile/default.nix
+++ b/pkgs/development/python-modules/click-configfile/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, click
-, six
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  click,
+  six,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,18 +25,14 @@ buildPythonPackage rec {
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace setup.py \
       --replace "install_requires=install_requires," 'install_requires=["click >= 6.6", "six >= 1.10"],'
   '';
 
-  pythonImportsCheck = [
-    "click_configfile"
-  ];
+  pythonImportsCheck = [ "click_configfile" ];
 
   disabledTests = [
     "test_configfile__with_unbound_section"
@@ -46,6 +43,6 @@ buildPythonPackage rec {
     description = "Add support for commands that use configuration files to Click";
     homepage = "https://github.com/click-contrib/click-configfile";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/click-datetime/default.nix b/pkgs/development/python-modules/click-datetime/default.nix
index 5e570130f0306..2203bfb829637 100644
--- a/pkgs/development/python-modules/click-datetime/default.nix
+++ b/pkgs/development/python-modules/click-datetime/default.nix
@@ -1,5 +1,9 @@
-{ lib, buildPythonPackage, fetchFromGitHub
-, click }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  click,
+}:
 
 buildPythonPackage rec {
   pname = "click-datetime";
@@ -21,7 +25,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "click_datetime" ];
 
   meta = with lib; {
-    description = "Datetime type support for click.";
+    description = "Datetime type support for click";
     homepage = "https://github.com/click-contrib/click-datetime";
     license = licenses.mit;
     maintainers = with maintainers; [ hexa ];
diff --git a/pkgs/development/python-modules/click-default-group/default.nix b/pkgs/development/python-modules/click-default-group/default.nix
index 49422099ad78c..0e6d589e20e19 100644
--- a/pkgs/development/python-modules/click-default-group/default.nix
+++ b/pkgs/development/python-modules/click-default-group/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, flit-core
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  flit-core,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-9Vk4LdgLDAWG2YCQPLKR6PIVnULmpOoe7RtS8DgWARo=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    click
-  ];
+  propagatedBuildInputs = [ click ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "click_default_group"
-  ];
+  pythonImportsCheck = [ "click_default_group" ];
 
   meta = with lib; {
     description = "Group to invoke a command without explicit subcommand name";
diff --git a/pkgs/development/python-modules/click-didyoumean/default.nix b/pkgs/development/python-modules/click-didyoumean/default.nix
index 8c1bf6f26e94f..a781352f39ff2 100644
--- a/pkgs/development/python-modules/click-didyoumean/default.nix
+++ b/pkgs/development/python-modules/click-didyoumean/default.nix
@@ -1,18 +1,29 @@
-{ lib, buildPythonPackage, fetchPypi,
-  click
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  click,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "click-didyoumean";
-  version = "0.3.0";
-  format = "setuptools";
+  version = "0.3.1";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "f184f0d851d96b6d29297354ed981b7dd71df7ff500d82fa6d11f0856bee8035";
+  src = fetchFromGitHub {
+    owner = "click-contrib";
+    repo = "click-didyoumean";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-C8OrJUfBFiDM/Jnf1iJo8pGEd0tUhar1vu4fVIfGzq8=";
   };
 
-  propagatedBuildInputs = [ click ];
+  build-system = [ poetry-core ];
+
+  dependencies = [ click ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Enable git-like did-you-mean feature in click";
diff --git a/pkgs/development/python-modules/click-help-colors/default.nix b/pkgs/development/python-modules/click-help-colors/default.nix
index 439a6241091c8..819c4e1487843 100644
--- a/pkgs/development/python-modules/click-help-colors/default.nix
+++ b/pkgs/development/python-modules/click-help-colors/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, click
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  click,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,17 +19,11 @@ buildPythonPackage rec {
     hash = "sha256-9Mq+Us9VApm4iI9PLuTF81msJ+M7z+TWHbR3haXMk2w=";
   };
 
-  propagatedBuildInputs = [
-    click
-  ];
+  propagatedBuildInputs = [ click ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "click_help_colors"
-  ];
+  pythonImportsCheck = [ "click_help_colors" ];
 
   meta = with lib; {
     description = "Colorization of help messages in Click";
diff --git a/pkgs/development/python-modules/click-log/default.nix b/pkgs/development/python-modules/click-log/default.nix
index 0b3622b9dc983..fbf67e9b2a5f9 100644
--- a/pkgs/development/python-modules/click-log/default.nix
+++ b/pkgs/development/python-modules/click-log/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, click }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  click,
+}:
 
 buildPythonPackage rec {
   pname = "click-log";
@@ -16,6 +21,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/click-contrib/click-log/";
     description = "Logging integration for Click";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/click-odoo-contrib/default.nix b/pkgs/development/python-modules/click-odoo-contrib/default.nix
index a01a3e88b1974..ebb626aabf8c0 100644
--- a/pkgs/development/python-modules/click-odoo-contrib/default.nix
+++ b/pkgs/development/python-modules/click-odoo-contrib/default.nix
@@ -1,12 +1,13 @@
-{ buildPythonPackage
-, click-odoo
-, fetchPypi
-, importlib-resources
-, lib
-, manifestoo-core
-, nix-update-script
-, pythonOlder
-, setuptools-scm
+{
+  buildPythonPackage,
+  click-odoo,
+  fetchPypi,
+  importlib-resources,
+  lib,
+  manifestoo-core,
+  nix-update-script,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-3gusvy3d6kgmyBY+bmXB6lbWk7qxJIuHALZtug1WLzo=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     click-odoo
diff --git a/pkgs/development/python-modules/click-odoo/default.nix b/pkgs/development/python-modules/click-odoo/default.nix
index b4cd69ed978af..ff815b9f26d5a 100644
--- a/pkgs/development/python-modules/click-odoo/default.nix
+++ b/pkgs/development/python-modules/click-odoo/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, click
-, fetchPypi
-, lib
-, nix-update-script
-, setuptools-scm
+{
+  buildPythonPackage,
+  click,
+  fetchPypi,
+  lib,
+  nix-update-script,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -16,13 +17,9 @@ buildPythonPackage rec {
     hash = "sha256-zyfgsHzIoz4lnqANe63b2oqgD/oxBbTbJYEedfSHWQ8=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    click
-  ];
+  propagatedBuildInputs = [ click ];
 
   passthru.updateScript = nix-update-script { };
 
diff --git a/pkgs/development/python-modules/click-option-group/default.nix b/pkgs/development/python-modules/click-option-group/default.nix
index b1a2defe518f8..6fa457d6f57b5 100644
--- a/pkgs/development/python-modules/click-option-group/default.nix
+++ b/pkgs/development/python-modules/click-option-group/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, click
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  click,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,17 +20,11 @@ buildPythonPackage rec {
     hash = "sha256-uR5rIZPPT6pRk/jJEy2rZciOXrHWVWN6BfGroQ3znas=";
   };
 
-  propagatedBuildInputs = [
-    click
-  ];
+  propagatedBuildInputs = [ click ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "click_option_group"
-  ];
+  pythonImportsCheck = [ "click_option_group" ];
 
   meta = with lib; {
     description = "Option groups missing in Click";
diff --git a/pkgs/development/python-modules/click-plugins/default.nix b/pkgs/development/python-modules/click-plugins/default.nix
index f695f07f84b03..e1c2702b3007f 100644
--- a/pkgs/development/python-modules/click-plugins/default.nix
+++ b/pkgs/development/python-modules/click-plugins/default.nix
@@ -1,5 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi,
-  click, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  click,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -12,16 +16,12 @@ buildPythonPackage rec {
     sha256 = "46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b";
   };
 
-  propagatedBuildInputs = [
-    click
-  ];
+  propagatedBuildInputs = [ click ];
 
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
   meta = with lib; {
-    description = "An extension module for click to enable registering CLI commands";
+    description = "Extension module for click to enable registering CLI commands";
     homepage = "https://github.com/click-contrib/click-plugins";
     license = licenses.bsd3;
     maintainers = with maintainers; [ knedlsepp ];
diff --git a/pkgs/development/python-modules/click-repl/default.nix b/pkgs/development/python-modules/click-repl/default.nix
index aa375423769bc..bd2fad9f192f2 100644
--- a/pkgs/development/python-modules/click-repl/default.nix
+++ b/pkgs/development/python-modules/click-repl/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, click
-, prompt-toolkit
-, six
+  # dependencies
+  click,
+  prompt-toolkit,
+  six,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     sed -i '/--cov=/d' pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     click
@@ -40,9 +39,7 @@ buildPythonPackage rec {
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     homepage = "https://github.com/click-contrib/click-repl";
diff --git a/pkgs/development/python-modules/click-shell/default.nix b/pkgs/development/python-modules/click-shell/default.nix
index 1b9a5ecf62113..593b035757b45 100644
--- a/pkgs/development/python-modules/click-shell/default.nix
+++ b/pkgs/development/python-modules/click-shell/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, click
-, pytestCheckHook
-, pytest-click
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  click,
+  pytestCheckHook,
+  pytest-click,
 }:
 
 buildPythonPackage rec {
@@ -19,23 +20,19 @@ buildPythonPackage rec {
     hash = "sha256-4QpQzg0yFuOFymGiTI+A8o6LyX78iTJMqr0ernYbilI=";
   };
 
-  propagatedBuildInputs = [
-    click
-  ];
+  propagatedBuildInputs = [ click ];
 
   nativeCheckInputs = [
     pytest-click
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "click_shell"
-  ];
+  pythonImportsCheck = [ "click_shell" ];
 
   preCheck = "export HOME=$(mktemp -d)";
 
   meta = with lib; {
-    description = "An extension to click that easily turns your click app into a shell utility";
+    description = "Extension to click that easily turns your click app into a shell utility";
     longDescription = ''
       This is an extension to click that easily turns your click app into a
       shell utility. It is built on top of the built in python cmd module,
diff --git a/pkgs/development/python-modules/click-spinner/default.nix b/pkgs/development/python-modules/click-spinner/default.nix
index 0c281c29ab4c6..c022a33608a48 100644
--- a/pkgs/development/python-modules/click-spinner/default.nix
+++ b/pkgs/development/python-modules/click-spinner/default.nix
@@ -1,31 +1,49 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, click
-, six
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  six,
+  versioneer,
 }:
 
 buildPythonPackage rec {
   pname = "click-spinner";
   version = "0.1.10";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "h+rPnXKYlzol12Fe9X1Hgq6/kTpTK7pLKKN+Nm6XXa8=";
+    hash = "sha256-h+rPnXKYlzol12Fe9X1Hgq6/kTpTK7pLKKN+Nm6XXa8=";
   };
 
+  postPatch = ''
+    rm versioneer.py
+  '';
+
+  build-system = [
+    setuptools
+    versioneer
+  ];
+
   nativeCheckInputs = [
     click
-    six
     pytestCheckHook
+    six
   ];
 
+  pythonImportsCheck = [ "click_spinner" ];
+
   meta = with lib; {
     description = "Add support for showwing that command line app is active to Click";
     homepage = "https://github.com/click-contrib/click-spinner";
+    changelog = "https://github.com/click-contrib/click-spinner/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/click-threading/default.nix b/pkgs/development/python-modules/click-threading/default.nix
index 771678354ca09..b69c7f7c93aa9 100644
--- a/pkgs/development/python-modules/click-threading/default.nix
+++ b/pkgs/development/python-modules/click-threading/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, click
-, isPy3k
-, futures ? null
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  click,
+  isPy3k,
+  futures ? null,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/click/default.nix b/pkgs/development/python-modules/click/default.nix
index eb32212cde237..3bda7fb00e70b 100644
--- a/pkgs/development/python-modules/click/default.nix
+++ b/pkgs/development/python-modules/click/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, importlib-metadata
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  importlib-metadata,
+  pytestCheckHook,
 
   # large-rebuild downstream dependencies and applications
-, flask
-, black
-, magic-wormhole
-, mitmproxy
-, typer
+  flask,
+  black,
+  magic-wormhole,
+  mitmproxy,
+  typer,
 }:
 
 buildPythonPackage rec {
@@ -27,13 +28,9 @@ buildPythonPackage rec {
     hash = "sha256-8YqIKRyw5MegnRwAO7YTCZateEFQFTH2PHpE8gTPTow=";
   };
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # test fails with filename normalization on zfs
@@ -41,7 +38,13 @@ buildPythonPackage rec {
   ];
 
   passthru.tests = {
-    inherit black flask magic-wormhole mitmproxy typer;
+    inherit
+      black
+      flask
+      magic-wormhole
+      mitmproxy
+      typer
+      ;
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/clickclick/default.nix b/pkgs/development/python-modules/clickclick/default.nix
index 7822dbc8bcaff..117e5c0c41966 100644
--- a/pkgs/development/python-modules/clickclick/default.nix
+++ b/pkgs/development/python-modules/clickclick/default.nix
@@ -1,4 +1,14 @@
-{ lib, buildPythonPackage, fetchFromGitHub, flake8, click, pyyaml, six, pytestCheckHook, pytest-cov }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flake8,
+  click,
+  pyyaml,
+  six,
+  pytestCheckHook,
+  pytest-cov,
+}:
 
 buildPythonPackage rec {
   pname = "clickclick";
@@ -12,18 +22,23 @@ buildPythonPackage rec {
     sha256 = "1rij9ws9nhsmagiy1vclzliiqfkxi006rf65qvrw1k3sm2s8p5g0";
   };
 
-  nativeCheckInputs = [ pytestCheckHook pytest-cov ];
-  propagatedBuildInputs = [ flake8 click pyyaml six ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-cov
+  ];
+  propagatedBuildInputs = [
+    flake8
+    click
+    pyyaml
+    six
+  ];
 
   # test_cli asserts on exact quoting style of output
-  disabledTests = [
-    "test_cli"
-  ];
+  disabledTests = [ "test_cli" ];
 
   meta = with lib; {
     description = "Click command line utilities";
     homepage = "https://github.com/hjacobs/python-clickclick/";
     license = licenses.asl20;
-    maintainers = with maintainers; [ elohmeier ];
   };
 }
diff --git a/pkgs/development/python-modules/clickgen/default.nix b/pkgs/development/python-modules/clickgen/default.nix
index b37c6382a821e..a8109184f251c 100644
--- a/pkgs/development/python-modules/clickgen/default.nix
+++ b/pkgs/development/python-modules/clickgen/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, attrs
-, pillow
-, toml
-, numpy
-, pyyaml
-, python
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  attrs,
+  pillow,
+  toml,
+  numpy,
+  pyyaml,
+  python,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "clickgen";
-  version = "2.2.2";
+  version = "2.2.5";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -23,7 +24,7 @@ buildPythonPackage rec {
     owner = "ful1e5";
     repo = "clickgen";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Lsb0FvJohwsXofpcq7OgWfhl/3qVxAqY0wdvum6ywSQ=";
+    hash = "sha256-yFEkE1VyeHBuebpsumc6CTvv2kpAw7XAWlyUlXibqz0=";
   };
 
   propagatedBuildInputs = [
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     toml
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postInstall = ''
     # Copying scripts directory needed by clickgen script at $out/bin/
@@ -47,7 +46,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/ful1e5/clickgen";
-    description = "The hassle-free cursor building toolbox";
+    description = "Hassle-free cursor building toolbox";
     longDescription = ''
       clickgen is API for building X11 and Windows Cursors from
       .png files. clickgen is using anicursorgen and xcursorgen under the hood.
@@ -56,6 +55,6 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ AdsonCicilioti ];
     # fails with:
     # ld: unknown option: -zdefs
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/clickhouse-cityhash/default.nix b/pkgs/development/python-modules/clickhouse-cityhash/default.nix
index ecb3f3bf290e7..87094e3f52442 100644
--- a/pkgs/development/python-modules/clickhouse-cityhash/default.nix
+++ b/pkgs/development/python-modules/clickhouse-cityhash/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchPypi
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
 
   doCheck = false;
 
-  pythonImportsCheck = [
-    "clickhouse_cityhash"
-  ];
+  pythonImportsCheck = [ "clickhouse_cityhash" ];
 
   meta = with lib; {
     description = "Python-bindings for CityHash, a fast non-cryptographic hash algorithm";
diff --git a/pkgs/development/python-modules/clickhouse-cli/default.nix b/pkgs/development/python-modules/clickhouse-cli/default.nix
index 170d152393039..15a700f684e1c 100644
--- a/pkgs/development/python-modules/clickhouse-cli/default.nix
+++ b/pkgs/development/python-modules/clickhouse-cli/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonRelaxDepsHook
-, setuptools
-, click
-, prompt-toolkit
-, pygments
-, requests
-, sqlparse
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  click,
+  prompt-toolkit,
+  pygments,
+  requests,
+  sqlparse,
 }:
 
 buildPythonPackage rec {
@@ -21,13 +21,10 @@ buildPythonPackage rec {
   };
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
-  pythonRelaxDeps = [
-    "sqlparse"
-  ];
+  pythonRelaxDeps = [ "sqlparse" ];
 
   propagatedBuildInputs = [
     click
@@ -40,7 +37,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "clickhouse_cli" ];
 
   meta = with lib; {
-    description = "A third-party client for the Clickhouse DBMS server";
+    description = "Third-party client for the Clickhouse DBMS server";
     mainProgram = "clickhouse-cli";
     homepage = "https://github.com/hatarist/clickhouse-cli";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/clickhouse-connect/default.nix b/pkgs/development/python-modules/clickhouse-connect/default.nix
index e7bf0aa8e036b..d5300b5499a8e 100644
--- a/pkgs/development/python-modules/clickhouse-connect/default.nix
+++ b/pkgs/development/python-modules/clickhouse-connect/default.nix
@@ -1,29 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
   # build_requires
-, cython
+  cython,
   # install_requires
-, certifi
-, importlib-metadata
-, urllib3
-, pytz
-, zstandard
-, lz4
+  certifi,
+  importlib-metadata,
+  urllib3,
+  pytz,
+  zstandard,
+  lz4,
   # extras_require
-, sqlalchemy
-, numpy
-, pandas
-, pyarrow
-, orjson
+  sqlalchemy,
+  numpy,
+  pandas,
+  pyarrow,
+  orjson,
   # not in tests_require, but should be
-, pytest-dotenv
+  pytest-dotenv,
 }:
 buildPythonPackage rec {
   pname = "clickhouse-connect";
-  version = "0.7.8";
+  version = "0.7.12";
 
   format = "setuptools";
 
@@ -33,7 +34,7 @@ buildPythonPackage rec {
     repo = "clickhouse-connect";
     owner = "ClickHouse";
     rev = "refs/tags/v${version}";
-    hash = "sha256-tdf9aYKAFpRyaqGGNxXs4bzmY6mdhKZ5toFBJRmD2VY=";
+    hash = "sha256-UJSg/ADxVsO4xuym8NGjbgQafWmu7J3Is2hKvObYhU8=";
   };
 
   nativeBuildInputs = [ cython ];
@@ -49,9 +50,10 @@ buildPythonPackage rec {
     lz4
   ];
 
-  nativeCheckInputs = [ pytestCheckHook pytest-dotenv ]
-    ++ passthru.optional-dependencies.sqlalchemy
-    ++ passthru.optional-dependencies.numpy;
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-dotenv
+  ] ++ passthru.optional-dependencies.sqlalchemy ++ passthru.optional-dependencies.numpy;
 
   # these tests require a running clickhouse instance
   disabledTestPaths = [
diff --git a/pkgs/development/python-modules/clickhouse-driver/default.nix b/pkgs/development/python-modules/clickhouse-driver/default.nix
index 1ddaa5398d9d9..6eb3013063f52 100644
--- a/pkgs/development/python-modules/clickhouse-driver/default.nix
+++ b/pkgs/development/python-modules/clickhouse-driver/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, buildPythonPackage
-, clickhouse-cityhash
-, cython
-, fetchFromGitHub
-, freezegun
-, lz4
-, mock
-, nose
-, pytestCheckHook
-, pytest-xdist
-, pytz
-, setuptools
-, tzlocal
-, zstd
+{
+  lib,
+  buildPythonPackage,
+  clickhouse-cityhash,
+  cython,
+  fetchFromGitHub,
+  freezegun,
+  lz4,
+  mock,
+  pytestCheckHook,
+  pytest-xdist,
+  pytz,
+  setuptools,
+  tzlocal,
+  zstd,
 }:
 
 buildPythonPackage rec {
@@ -44,7 +44,6 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     freezegun
     mock
-    nose
     pytest-xdist
     pytestCheckHook
   ];
diff --git a/pkgs/development/python-modules/cliff/default.nix b/pkgs/development/python-modules/cliff/default.nix
index f36ccba9718ff..416a34be304d8 100644
--- a/pkgs/development/python-modules/cliff/default.nix
+++ b/pkgs/development/python-modules/cliff/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, autopage
-, cmd2
-, importlib-metadata
-, installShellFiles
-, openstackdocstheme
-, pbr
-, prettytable
-, pyparsing
-, pyyaml
-, stevedore
-, sphinx
-, callPackage
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  autopage,
+  cmd2,
+  importlib-metadata,
+  openstackdocstheme,
+  pbr,
+  prettytable,
+  pyparsing,
+  pyyaml,
+  setuptools,
+  stevedore,
+  sphinxHook,
+  callPackage,
 }:
 
 buildPythonPackage rec {
   pname = "cliff";
-  version = "4.6.0";
-  format = "setuptools";
+  version = "4.7.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-LzjOi9HqSVjWbxWwZqxH5l1h9gC5MZuSHhLp6cvNmdA=";
+    hash = "sha256-bKRfjfUZu8ByLGEEnee35EKkZfp/P1Urltc1+ib9WyY=";
   };
 
   postPatch = ''
@@ -31,13 +32,15 @@ buildPythonPackage rec {
     rm test-requirements.txt
   '';
 
-  nativeBuildInputs = [
-    installShellFiles
+  build-system = [
     openstackdocstheme
-    sphinx
+    setuptools
+    sphinxHook
   ];
 
-  propagatedBuildInputs = [
+  sphinxBuilders = [ "man" ];
+
+  dependencies = [
     autopage
     cmd2
     importlib-metadata
@@ -48,11 +51,6 @@ buildPythonPackage rec {
     stevedore
   ];
 
-  postInstall = ''
-    sphinx-build -a -E -d doc/build/doctrees -b man doc/source doc/build/man
-    installManPage doc/build/man/cliff.1
-  '';
-
   # check in passthru.tests.pytest to escape infinite recursion with stestr
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/cliff/tests.nix b/pkgs/development/python-modules/cliff/tests.nix
index a2738cc590e8c..135cccba658a0 100644
--- a/pkgs/development/python-modules/cliff/tests.nix
+++ b/pkgs/development/python-modules/cliff/tests.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, cliff
-, docutils
-, stestr
-, testscenarios
+{
+  buildPythonPackage,
+  cliff,
+  docutils,
+  stestr,
+  testscenarios,
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/clifford/default.nix b/pkgs/development/python-modules/clifford/default.nix
index 6a590af483a75..3b6e68710b4b0 100644
--- a/pkgs/development/python-modules/clifford/default.nix
+++ b/pkgs/development/python-modules/clifford/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, h5py
-, ipython
-, numba
-, numpy
-, pytestCheckHook
-, setuptools
-, scipy
-, sparse
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  h5py,
+  ipython,
+  numba,
+  numpy,
+  pytestCheckHook,
+  setuptools,
+  scipy,
+  sparse,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-eVE8FrD0YHoRreY9CrNb8v4v4KrG83ZU0oFz+V+p+Q0=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     h5py
@@ -69,7 +68,7 @@ buildPythonPackage rec {
     homepage = "https://clifford.readthedocs.io";
     changelog = "https://github.com/pygae/clifford/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     # Broken with numba >= 0.54
     # see https://github.com/pygae/clifford/issues/430
     broken = versionAtLeast numba.version "0.58";
diff --git a/pkgs/development/python-modules/cligj/default.nix b/pkgs/development/python-modules/cligj/default.nix
index 666a143e96207..2b22ba792ca41 100644
--- a/pkgs/development/python-modules/cligj/default.nix
+++ b/pkgs/development/python-modules/cligj/default.nix
@@ -1,5 +1,10 @@
-{ lib, buildPythonPackage, fetchFromGitHub
-, click, pytest, glibcLocales
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  click,
+  pytest,
+  glibcLocales,
 }:
 
 buildPythonPackage rec {
@@ -14,11 +19,12 @@ buildPythonPackage rec {
     hash = "sha256-0f9+I6ozX93Vn0l7+WR0mpddDZymJQ3+Krovt6co22Y=";
   };
 
-  propagatedBuildInputs = [
-    click
-  ];
+  propagatedBuildInputs = [ click ];
 
-  nativeCheckInputs = [ pytest glibcLocales ];
+  nativeCheckInputs = [
+    pytest
+    glibcLocales
+  ];
 
   checkPhase = ''
     LC_ALL=en_US.utf-8 pytest tests
diff --git a/pkgs/development/python-modules/clikit/default.nix b/pkgs/development/python-modules/clikit/default.nix
index 48ed42ffb8e3f..0ecca4ea0fa8b 100644
--- a/pkgs/development/python-modules/clikit/default.nix
+++ b/pkgs/development/python-modules/clikit/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy27
-, pythonAtLeast
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  pythonAtLeast,
+  poetry-core,
 
-# propagates
-, pylev
-, pastel
+  # propagates
+  pylev,
+  pastel,
 
-# python36+
-, crashtest
+  # python36+
+  crashtest,
 
-# python2
-, typing
-, enum34
+  # python2
+  typing,
+  enum34,
 
-# tests
-, pytest-mock
-, pytestCheckHook
+  # tests
+  pytest-mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -39,29 +40,29 @@ buildPythonPackage rec {
       'crashtest = { version = "*", python = "^3.6" }'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    pylev
-    pastel
-  ]
-  ++ lib.optionals (pythonAtLeast "3.6") [ crashtest ]
-  ++ lib.optionals isPy27 [ typing enum34 ];
+  propagatedBuildInputs =
+    [
+      pylev
+      pastel
+    ]
+    ++ lib.optionals (pythonAtLeast "3.6") [ crashtest ]
+    ++ lib.optionals isPy27 [
+      typing
+      enum34
+    ];
 
   nativeCheckInputs = [
     pytest-mock
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "clikit"
-  ];
+  pythonImportsCheck = [ "clikit" ];
 
   meta = with lib; {
     homepage = "https://github.com/sdispater/clikit";
-    description = "A group of utilities to build beautiful and testable command line interfaces";
+    description = "Group of utilities to build beautiful and testable command line interfaces";
     license = licenses.mit;
     maintainers = with maintainers; [ jakewaksbaum ];
   };
diff --git a/pkgs/development/python-modules/clint/default.nix b/pkgs/development/python-modules/clint/default.nix
index deb62fbfcb460..87bc6568c5873 100644
--- a/pkgs/development/python-modules/clint/default.nix
+++ b/pkgs/development/python-modules/clint/default.nix
@@ -1,37 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, mock
-, blessings
-, nose
-, pillow
-, args
-, pkgs
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
+  args,
 }:
 
 buildPythonPackage rec {
   pname = "clint";
   version = "0.5.1";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5";
+    hash = "sha256-BSJMMrEHVWPQsW0AFfqvnaQ6ohTkohQOUfCHieekxao=";
   };
 
-  LC_ALL="en_US.UTF-8";
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [ pillow blessings args ];
+  dependencies = [ args ];
 
-  # nose-progressive and clint are not actively maintained
-  # no longer compatible as behavior demand 2to3, which was removed
-  # in setuptools>=58
-  doCheck  = false;
-  nativeCheckInputs = [ mock nose pkgs.glibcLocales ];
-  checkPhase = ''
-    ${python.interpreter} test_clint.py
-  '';
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "clint" ];
 
@@ -41,5 +31,4 @@ buildPythonPackage rec {
     license = licenses.isc;
     maintainers = with maintainers; [ domenkozar ];
   };
-
 }
diff --git a/pkgs/development/python-modules/clintermission/default.nix b/pkgs/development/python-modules/clintermission/default.nix
index 9b439fa160848..721b7cadb681a 100644
--- a/pkgs/development/python-modules/clintermission/default.nix
+++ b/pkgs/development/python-modules/clintermission/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, prompt-toolkit
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  prompt-toolkit,
 }:
 
 buildPythonPackage rec {
@@ -19,22 +20,18 @@ buildPythonPackage rec {
     hash = "sha256-e7C9IDr+mhVSfU8lMywjX1BYwFo/qegPNzabak7UPcY=";
   };
 
-  propagatedBuildInputs = [
-    prompt-toolkit
-  ];
+  propagatedBuildInputs = [ prompt-toolkit ];
 
   # repo contains no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "clintermission"
-  ];
+  pythonImportsCheck = [ "clintermission" ];
 
   meta = with lib; {
     description = "Non-fullscreen command-line selection menu";
     homepage = "https://github.com/sebageek/clintermission";
     changelog = "https://github.com/sebageek/clintermission/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/clip-anytorch/default.nix b/pkgs/development/python-modules/clip-anytorch/default.nix
index d17a1ad088fdb..10e368985f798 100644
--- a/pkgs/development/python-modules/clip-anytorch/default.nix
+++ b/pkgs/development/python-modules/clip-anytorch/default.nix
@@ -1,22 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# dependencies
-, ftfy
-, regex
-, tqdm
-, torch
-, torchvision
-
-# tests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  ftfy,
+  packaging,
+  pythonOlder,
+  regex,
+  setuptools,
+  torch,
+  torchvision,
+  tqdm,
 }:
 
 buildPythonPackage rec {
   pname = "clip-anytorch";
   version = "2.6.0";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "rom1504";
@@ -25,29 +27,31 @@ buildPythonPackage rec {
     hash = "sha256-4A8R9aEiOWC05uhMQslhVSkQ4hyjs6VsqkFi76miodY=";
   };
 
-  propagatedBuildInputs = [
+  patches = [
+    # Import packaging to be compatible with setuptools==70.0.0, https://github.com/rom1504/CLIP/pull/10
+    (fetchpatch {
+      name = "setuptools-comp.patch";
+      url = "https://github.com/rom1504/CLIP/pull/10/commits/8137d899035d889623f6b0a0a0faae88c549dc50.patch";
+      hash = "sha256-CIcuDk4QH+0g8YEa6TbKGjIcKJQqFviymVH68sKmsyk=";
+    })
+  ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     ftfy
     regex
+    packaging
     tqdm
     torch
     torchvision
   ];
 
-  pythonImportsCheck = [
-    "clip"
-  ];
+  pythonImportsCheck = [ "clip" ];
 
-  # all tests require network access
+  # All tests require network access
   doCheck = false;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-
-  preCheck = ''
-    export HOME=$TMPDIR
-  '';
-
   meta = with lib; {
     description = "Contrastive Language-Image Pretraining";
     homepage = "https://github.com/rom1504/CLIP";
diff --git a/pkgs/development/python-modules/clip/default.nix b/pkgs/development/python-modules/clip/default.nix
index bf10f5be593fc..e5b193c9caa15 100644
--- a/pkgs/development/python-modules/clip/default.nix
+++ b/pkgs/development/python-modules/clip/default.nix
@@ -1,11 +1,12 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, ftfy
-, lib
-, regex
-, torch
-, torchvision
-, tqdm
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  ftfy,
+  lib,
+  regex,
+  torch,
+  torchvision,
+  tqdm,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/clize/default.nix b/pkgs/development/python-modules/clize/default.nix
index d708cd93a4ae0..2de988250dbbc 100644
--- a/pkgs/development/python-modules/clize/default.nix
+++ b/pkgs/development/python-modules/clize/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, attrs
-, buildPythonPackage
-, docutils
-, fetchPypi
-, od
-, pygments
-, pytestCheckHook
-, pythonOlder
-, python-dateutil
-, repeated-test
-, setuptools-scm
-, sigtools
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  docutils,
+  fetchPypi,
+  od,
+  pygments,
+  python-dateutil,
+  pythonOlder,
+  repeated-test,
+  setuptools-scm,
+  sigtools,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "clize";
   version = "5.0.2";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -25,38 +26,33 @@ buildPythonPackage rec {
     hash = "sha256-BH9aRHNgJxirG4VnKn4VMDOHF41agcJ13EKd+sHstRA=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     attrs
     docutils
     od
     sigtools
   ];
 
-  passthru.optional-dependencies = {
-    datetime = [
-      python-dateutil
-    ];
+  optional-dependencies = {
+    datetime = [ python-dateutil ];
   };
 
   nativeCheckInputs = [
-    pytestCheckHook
-    python-dateutil
     pygments
+    unittestCheckHook
+    python-dateutil
     repeated-test
   ];
 
-  pythonImportsCheck = [
-    "clize"
-  ];
+  pythonImportsCheck = [ "clize" ];
 
   meta = with lib; {
     description = "Command-line argument parsing for Python";
     homepage = "https://github.com/epsy/clize";
+    changelog = "https://github.com/epsy/clize/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/clldutils/default.nix b/pkgs/development/python-modules/clldutils/default.nix
index f5b975f8467a8..0018a2744d9c7 100644
--- a/pkgs/development/python-modules/clldutils/default.nix
+++ b/pkgs/development/python-modules/clldutils/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, attrs
-, buildPythonPackage
-, colorlog
-, fetchFromGitHub
-, git
-, lxml
-, markdown
-, markupsafe
-, mock
-, postgresql
-, pylatexenc
-, pytest-mock
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, setuptools
-, tabulate
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  colorlog,
+  fetchFromGitHub,
+  git,
+  lxml,
+  markdown,
+  markupsafe,
+  mock,
+  postgresql,
+  pylatexenc,
+  pytest-mock,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  setuptools,
+  tabulate,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
       --replace-fail "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     attrs
diff --git a/pkgs/development/python-modules/cloudevents/default.nix b/pkgs/development/python-modules/cloudevents/default.nix
index d54b20975ca30..04184c4a177ad 100644
--- a/pkgs/development/python-modules/cloudevents/default.nix
+++ b/pkgs/development/python-modules/cloudevents/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, deprecation
-, flask
-, pydantic
-, pytestCheckHook
-, requests
-, sanic
-, sanic-testing
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  deprecation,
+  flask,
+  pydantic,
+  pytestCheckHook,
+  requests,
+  sanic,
+  sanic-testing,
 }:
 
 buildPythonPackage rec {
@@ -41,9 +42,7 @@ buildPythonPackage rec {
     sanic-testing
   ];
 
-  disabledTestPaths = [
-    "samples/http-image-cloudevents/image_sample_test.py"
-  ];
+  disabledTestPaths = [ "samples/http-image-cloudevents/image_sample_test.py" ];
 
   meta = with lib; {
     description = "Python SDK for CloudEvents";
diff --git a/pkgs/development/python-modules/cloudflare/default.nix b/pkgs/development/python-modules/cloudflare/default.nix
index 1bfdafaba5a4a..1935151a7898d 100644
--- a/pkgs/development/python-modules/cloudflare/default.nix
+++ b/pkgs/development/python-modules/cloudflare/default.nix
@@ -1,30 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, requests
-, pyyaml
-, jsonlines
-, pythonOlder
-, pytestCheckHook
-, pytz
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  requests,
+  pyyaml,
+  jsonlines,
+  pythonOlder,
+  pytestCheckHook,
+  pytz,
 }:
 
 buildPythonPackage rec {
   pname = "cloudflare";
-  version = "2.19.2";
+  version = "2.20.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ENS5ayrd7gffo2meChZ9930qjVq3+G5lkOqm6ofW3Bg=";
+    hash = "sha256-Rq78Od+qI2XWObQjzsLNU1CuERU8ckfT6zVFvc8Bpoo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     requests
@@ -35,9 +34,7 @@ buildPythonPackage rec {
   # tests require networking
   doCheck = false;
 
-  pythonImportsCheck = [
-    "CloudFlare"
-  ];
+  pythonImportsCheck = [ "CloudFlare" ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -50,6 +47,6 @@ buildPythonPackage rec {
     changelog = "https://github.com/cloudflare/python-cloudflare/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
     mainProgram = "cli4";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cloudpathlib/default.nix b/pkgs/development/python-modules/cloudpathlib/default.nix
index 063ba6ce10563..3689a9d0dab46 100644
--- a/pkgs/development/python-modules/cloudpathlib/default.nix
+++ b/pkgs/development/python-modules/cloudpathlib/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, flit-core
-, importlib-metadata
-, typing-extensions
-, cloudpathlib
-, azure-storage-blob
-, google-cloud-storage
-, boto3
-, psutil
-, pydantic
-, pytest7CheckHook
-, pytest-cases
-, pytest-cov
-, pytest-xdist
-, python-dotenv
-, shortuuid
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  flit-core,
+  importlib-metadata,
+  typing-extensions,
+  cloudpathlib,
+  azure-storage-blob,
+  google-cloud-storage,
+  boto3,
+  psutil,
+  pydantic,
+  pytest7CheckHook,
+  pytest-cases,
+  pytest-cov,
+  pytest-xdist,
+  python-dotenv,
+  shortuuid,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,7 @@ buildPythonPackage rec {
     hash = "sha256-RrdRUqQ3QyMUpTi1FEsSXK6WS37r77SdPBH1oVVvSw0=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     importlib-metadata
@@ -43,18 +42,10 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    all = [
-      cloudpathlib
-    ];
-    azure = [
-      azure-storage-blob
-    ];
-    gs = [
-      google-cloud-storage
-    ];
-    s3 = [
-      boto3
-    ];
+    all = [ cloudpathlib ];
+    azure = [ azure-storage-blob ];
+    gs = [ google-cloud-storage ];
+    s3 = [ boto3 ];
   };
 
   pythonImportsCheck = [ "cloudpathlib" ];
diff --git a/pkgs/development/python-modules/cloudpickle/default.nix b/pkgs/development/python-modules/cloudpickle/default.nix
index fc8f92f3fa8da..d8ebf82cf2768 100644
--- a/pkgs/development/python-modules/cloudpickle/default.nix
+++ b/pkgs/development/python-modules/cloudpickle/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# build-system
-, flit-core
-
-# tests
-, psutil
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  flit-core,
+
+  # tests
+  psutil,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,18 +26,14 @@ buildPythonPackage rec {
     hash = "sha256-UeKVwzT0m4fhEVnG7TvQsFR99JsmwwoXmr+rWnTCeJU=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   nativeCheckInputs = [
     psutil
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "cloudpickle"
-  ];
+  pythonImportsCheck = [ "cloudpickle" ];
 
   disabledTestPaths = [
     # ModuleNotFoundError: No module named 'psutil'
@@ -48,6 +45,6 @@ buildPythonPackage rec {
     description = "Extended pickling support for Python objects";
     homepage = "https://github.com/cloudpipe/cloudpickle";
     license = with licenses; [ bsd3 ];
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cloudscraper/default.nix b/pkgs/development/python-modules/cloudscraper/default.nix
index b5cb302765c6b..8b20da7c7f457 100644
--- a/pkgs/development/python-modules/cloudscraper/default.nix
+++ b/pkgs/development/python-modules/cloudscraper/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, requests
-, requests-toolbelt
-, pyparsing
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  requests,
+  requests-toolbelt,
+  pyparsing,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
   # nixpkgs yet, and also aren't included in the PyPI bundle.  TODO.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "cloudscraper"
-  ];
+  pythonImportsCheck = [ "cloudscraper" ];
 
   meta = with lib; {
     description = "Python module to bypass Cloudflare's anti-bot page";
diff --git a/pkgs/development/python-modules/cloudsmith-api/default.nix b/pkgs/development/python-modules/cloudsmith-api/default.nix
index e49a0eb5f92f4..8fd6f490f0422 100644
--- a/pkgs/development/python-modules/cloudsmith-api/default.nix
+++ b/pkgs/development/python-modules/cloudsmith-api/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, certifi
-, fetchPypi
-, python-dateutil
-, pythonOlder
-, six
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  certifi,
+  fetchPypi,
+  python-dateutil,
+  pythonOlder,
+  six,
+  urllib3,
 }:
 
 buildPythonPackage rec {
@@ -31,14 +32,12 @@ buildPythonPackage rec {
   # Wheels have no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "cloudsmith_api"
-  ];
+  pythonImportsCheck = [ "cloudsmith_api" ];
 
   meta = with lib; {
     description = "Cloudsmith API Client";
     homepage = "https://github.com/cloudsmith-io/cloudsmith-api";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cloudsplaining/default.nix b/pkgs/development/python-modules/cloudsplaining/default.nix
index 7c559db4337ae..25c05cdd1e8ce 100644
--- a/pkgs/development/python-modules/cloudsplaining/default.nix
+++ b/pkgs/development/python-modules/cloudsplaining/default.nix
@@ -1,35 +1,44 @@
-{ lib
-, boto3
-, botocore
-, buildPythonPackage
-, cached-property
-, click
-, click-option-group
-, fetchFromGitHub
-, jinja2
-, markdown
-, policy-sentry
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, schema
+{
+  lib,
+  boto3,
+  botocore,
+  buildPythonPackage,
+  cached-property,
+  click,
+  click-option-group,
+  fetchFromGitHub,
+  jinja2,
+  markdown,
+  policy-sentry,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  schema,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "cloudsplaining";
-  version = "0.6.2";
-  format = "setuptools";
+  version = "0.7.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "salesforce";
-    repo = pname;
+    repo = "cloudsplaining";
     rev = "refs/tags/${version}";
-    hash = "sha256-7aOPerqayuJTHItlpnVVSzOlSGNnqHvtIi5BdovNh3A=";
+    hash = "sha256-ZraWGOiJNqVSmxnllaTvpk9+rUQRFcxFIdp91gpAQW0=";
   };
 
-  propagatedBuildInputs = [
+  postPatch = ''
+    # Ignore pinned versions
+    sed -i "s/'\(.*\)\(==\|>=\).*'/'\1'/g" requirements.txt
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     boto3
     botocore
     cached-property
@@ -42,29 +51,21 @@ buildPythonPackage rec {
     schema
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-
-  postPatch = ''
-    # Ignore pinned versions
-    sed -i "s/'\(.*\)\(==\|>=\).*'/'\1'/g" requirements.txt
-  '';
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     "test_policy_expansion"
     "test_statement_details_for_allow_not_action"
   ];
 
-  pythonImportsCheck = [
-    "cloudsplaining"
-  ];
+  pythonImportsCheck = [ "cloudsplaining" ];
 
   meta = with lib; {
     description = "Python module for AWS IAM security assessment";
-    mainProgram = "cloudsplaining";
     homepage = "https://github.com/salesforce/cloudsplaining";
+    changelog = "https://github.com/salesforce/cloudsplaining/releases/tag/${version}";
     license = licenses.bsd3;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "cloudsplaining";
   };
 }
diff --git a/pkgs/development/python-modules/cloup/default.nix b/pkgs/development/python-modules/cloup/default.nix
index ad66af8123bf5..e5564a7800b2c 100644
--- a/pkgs/development/python-modules/cloup/default.nix
+++ b/pkgs/development/python-modules/cloup/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, click
-, setuptools-scm
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  click,
+  setuptools-scm,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -20,23 +21,13 @@ buildPythonPackage rec {
     hash = "sha256-ySsmHHu34TAEkw8/tLPtrY3i0fEplNzdvgW8IZkEQ8U=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    click
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ click ] ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "cloup"
-  ];
+  pythonImportsCheck = [ "cloup" ];
 
   meta = with lib; {
     homepage = "https://github.com/janLuke/cloup";
@@ -46,6 +37,6 @@ buildPythonPackage rec {
       Enriches Click with option groups, constraints, command aliases, help sections for subcommands, themes for --help and other stuff.
     '';
     license = licenses.bsd3;
-    maintainers = with maintainers; [ friedelino ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/clr-loader/default.nix b/pkgs/development/python-modules/clr-loader/default.nix
index c0122a0d3d9dc..90006a6fe44e5 100644
--- a/pkgs/development/python-modules/clr-loader/default.nix
+++ b/pkgs/development/python-modules/clr-loader/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pytestCheckHook
-, dotnetCorePackages
-, setuptools
-, setuptools-scm
-, wheel
-, buildDotnetModule
-, cffi
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pytestCheckHook,
+  dotnetCorePackages,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  buildDotnetModule,
+  cffi,
 }:
 
 let
@@ -23,7 +24,10 @@ let
   # build is done in `buildPythonPackage` below.
   dotnet-build = buildDotnetModule {
     inherit pname version src;
-    projectFile = [ "netfx_loader/ClrLoader.csproj" "example/example.csproj" ];
+    projectFile = [
+      "netfx_loader/ClrLoader.csproj"
+      "example/example.csproj"
+    ];
     nugetDeps = ./deps.nix;
   };
 in
@@ -32,6 +36,8 @@ buildPythonPackage {
 
   format = "pyproject";
 
+  buildInputs = dotnetCorePackages.sdk_6_0.packages ++ dotnet-build.nugetDeps;
+
   nativeBuildInputs = [
     setuptools
     setuptools-scm
@@ -39,13 +45,9 @@ buildPythonPackage {
     dotnetCorePackages.sdk_6_0
   ];
 
-  propagatedBuildInputs = [
-    cffi
-  ];
+  propagatedBuildInputs = [ cffi ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # TODO: mono does not work due to https://github.com/NixOS/nixpkgs/issues/7307
@@ -59,13 +61,11 @@ buildPythonPackage {
   preConfigure = ''
     dotnet restore "netfx_loader/ClrLoader.csproj" \
       -p:ContinuousIntegrationBuild=true \
-      -p:Deterministic=true \
-      --source "${dotnet-build.nuget-source}"
+      -p:Deterministic=true
 
     dotnet restore "example/example.csproj" \
       -p:ContinuousIntegrationBuild=true \
-      -p:Deterministic=true \
-      --source "${dotnet-build.nuget-source}"
+      -p:Deterministic=true
   '';
 
   passthru.fetch-deps = dotnet-build.fetch-deps;
diff --git a/pkgs/development/python-modules/clr-loader/deps.nix b/pkgs/development/python-modules/clr-loader/deps.nix
index df303afaa791f..10d5aa52f3e40 100644
--- a/pkgs/development/python-modules/clr-loader/deps.nix
+++ b/pkgs/development/python-modules/clr-loader/deps.nix
@@ -1,11 +1,36 @@
 # This file was automatically generated by passthru.fetch-deps.
 # Please dont edit it manually, your changes might get overwritten!
 
-{ fetchNuGet }: [
-  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; })
-  (fetchNuGet { pname = "Microsoft.NETFramework.ReferenceAssemblies"; version = "1.0.0"; sha256 = "0na724xhvqm63vq9y18fl9jw9q2v99bdwr353378s5fsi11qzxp9"; })
-  (fetchNuGet { pname = "Microsoft.NETFramework.ReferenceAssemblies.net461"; version = "1.0.0"; sha256 = "00vkn4c6i0rn1l9pv912y0wgb9h6ks76qah8hvk441nari8fqbm1"; })
-  (fetchNuGet { pname = "Microsoft.NETFramework.ReferenceAssemblies.net47"; version = "1.0.0"; sha256 = "00v56phfn01ahf4fq7zanz6hjyzpp00hkkk4a190l0dywrv387i6"; })
-  (fetchNuGet { pname = "NETStandard.Library"; version = "2.0.3"; sha256 = "1fn9fxppfcg4jgypp2pmrpr6awl3qz1xmnri0cygpkwvyx27df1y"; })
-  (fetchNuGet { pname = "NXPorts"; version = "1.0.0"; sha256 = "02zva596c3vsnlhi1b1391vbfl8a6142dvm61r8j1c70b07916lj"; })
+{ fetchNuGet }:
+[
+  (fetchNuGet {
+    pname = "Microsoft.NETCore.Platforms";
+    version = "1.1.0";
+    sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.NETFramework.ReferenceAssemblies";
+    version = "1.0.0";
+    sha256 = "0na724xhvqm63vq9y18fl9jw9q2v99bdwr353378s5fsi11qzxp9";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.NETFramework.ReferenceAssemblies.net461";
+    version = "1.0.0";
+    sha256 = "00vkn4c6i0rn1l9pv912y0wgb9h6ks76qah8hvk441nari8fqbm1";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.NETFramework.ReferenceAssemblies.net47";
+    version = "1.0.0";
+    sha256 = "00v56phfn01ahf4fq7zanz6hjyzpp00hkkk4a190l0dywrv387i6";
+  })
+  (fetchNuGet {
+    pname = "NETStandard.Library";
+    version = "2.0.3";
+    sha256 = "1fn9fxppfcg4jgypp2pmrpr6awl3qz1xmnri0cygpkwvyx27df1y";
+  })
+  (fetchNuGet {
+    pname = "NXPorts";
+    version = "1.0.0";
+    sha256 = "02zva596c3vsnlhi1b1391vbfl8a6142dvm61r8j1c70b07916lj";
+  })
 ]
diff --git a/pkgs/development/python-modules/cltk/default.nix b/pkgs/development/python-modules/cltk/default.nix
new file mode 100644
index 0000000000000..7635ace28648e
--- /dev/null
+++ b/pkgs/development/python-modules/cltk/default.nix
@@ -0,0 +1,92 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  boltons,
+  gensim,
+  gitpython,
+  greek-accentuation,
+  nltk,
+  pyyaml,
+  rapidfuzz,
+  requests,
+  scikit-learn,
+  scipy,
+  spacy,
+  stanza,
+  stringcase,
+  torch,
+  tqdm,
+
+  # tests
+  pytestCheckHook,
+}:
+buildPythonPackage rec {
+  pname = "cltk";
+  version = "1.3.0";
+
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "cltk";
+    repo = "cltk";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-/rdv96lnSGN+aJJmPSIan79zoXxnStokFEAjBtCLKy4=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "poetry>=1.1.13" poetry-core \
+      --replace-fail "poetry.masonry.api" "poetry.core.masonry.api" \
+      --replace-fail 'scipy = "<1.13.0"' 'scipy = "^1"' \
+      --replace-fail 'boltons = "^21.0.0"' 'boltons = "^24.0.0"'
+  '';
+
+  build-system = [ poetry-core ];
+
+  pythonRelaxDeps = [
+    "spacy"
+  ];
+
+  dependencies = [
+    boltons
+    gensim
+    gitpython
+    greek-accentuation
+    nltk
+    pyyaml
+    rapidfuzz
+    requests
+    scikit-learn
+    scipy
+    spacy
+    stanza
+    stringcase
+    torch
+    tqdm
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    export HOME=$(mktemp -d)
+  '';
+
+  # Most of tests fail as they require local files to be present and also internet access
+  doCheck = false;
+
+  meta = {
+    description = "Natural language processing (NLP) framework for pre-modern languages";
+    homepage = "https://cltk.org";
+    changelog = "https://github.com/cltk/cltk/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ kmein ];
+  };
+}
diff --git a/pkgs/development/python-modules/clustershell/default.nix b/pkgs/development/python-modules/clustershell/default.nix
index c8fbbc7ad9d10..f52f290be8d52 100644
--- a/pkgs/development/python-modules/clustershell/default.nix
+++ b/pkgs/development/python-modules/clustershell/default.nix
@@ -1,18 +1,22 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, pyyaml
-, openssh
-, nose
-, bc
-, hostname
-, bash
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  distutils,
+  pyyaml,
+  openssh,
+  unittestCheckHook,
+  bc,
+  hostname,
+  bash,
 }:
 
 buildPythonPackage rec {
   pname = "clustershell";
   version = "1.9.2";
+  pyproject = true;
 
   src = fetchPypi {
     pname = "ClusterShell";
@@ -20,30 +24,29 @@ buildPythonPackage rec {
     hash = "sha256-rsF/HG4GNBC+N49b+sDO2AyUI1G44wJNBUwQNPzShD0=";
   };
 
+  build-system = [
+    setuptools
+    distutils
+  ];
+
   postPatch = ''
     substituteInPlace lib/ClusterShell/Worker/Ssh.py \
-      --replace '"ssh"' '"${openssh}/bin/ssh"' \
-      --replace '"scp"' '"${openssh}/bin/scp"'
+      --replace-fail '"ssh"' '"${openssh}/bin/ssh"' \
+      --replace-fail '"scp"' '"${openssh}/bin/scp"'
 
     substituteInPlace lib/ClusterShell/Worker/fastsubprocess.py \
-      --replace '"/bin/sh"' '"${bash}/bin/sh"'
+      --replace-fail '"/bin/sh"' '"${bash}/bin/sh"'
 
     for f in tests/*; do
       substituteInPlace $f \
-        --replace '/bin/hostname'   '${hostname}/bin/hostname' \
-        --replace '/bin/sleep'      'sleep' \
-        --replace '/bin/echo'       'echo' \
-        --replace '/bin/uname'      'uname' \
-        --replace '/bin/false'      'false' \
-        --replace '/bin/true'       'true' \
-        --replace '/usr/bin/printf' 'printf'
+        --replace-quiet '/bin/hostname'   '${hostname}/bin/hostname' \
+        --replace-quiet '/bin/sleep'      'sleep' \
+        --replace-quiet '/bin/echo'       'echo' \
+        --replace-quiet '/bin/uname'      'uname' \
+        --replace-quiet '/bin/false'      'false' \
+        --replace-quiet '/bin/true'       'true' \
+        --replace-quiet '/usr/bin/printf' 'printf'
     done
-
-    # Fix warnings
-    substituteInPlace lib/ClusterShell/Task.py \
-      --replace "notifyAll" "notify_all"
-    substituteInPlace tests/TaskPortTest.py lib/ClusterShell/Task.py \
-      --replace "currentThread" "current_thread"
   '';
 
   propagatedBuildInputs = [ pyyaml ];
@@ -51,16 +54,22 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     bc
     hostname
-    nose
+    unittestCheckHook
   ];
 
   pythonImportsCheck = [ "ClusterShell" ];
 
+  unittestFlagsArray = [
+    "tests"
+    "-p"
+    "'*Test.py'"
+  ];
+
   # Many tests want to open network connections
   # https://github.com/cea-hpc/clustershell#test-suite
   #
   # Several tests fail on Darwin
-  checkPhase = ''
+  preCheck = ''
     rm tests/CLIClushTest.py
     rm tests/TreeWorkerTest.py
     rm tests/TaskDistantMixin.py
@@ -68,38 +77,11 @@ buildPythonPackage rec {
     rm tests/TaskDistantPdshMixin.py
     rm tests/TaskDistantPdshTest.py
     rm tests/TaskRLimitsTest.py
-
-    nosetests -v \
-      -e test_channel_ctl_shell_remote1 \
-      -e test_channel_ctl_shell_remote2 \
-      -e test_fromall_grouplist \
-      -e test_rank_placeholder \
-      -e test_engine_on_the_fly_launch \
-      -e test_ev_pickup_fanout \
-      -e test_ev_pickup_fanout_legacy \
-      -e test_timeout \
-      -e test_008_broken_pipe_on_write \
-      -e testLocalBufferRCGathering \
-      -e testLocalBuffers \
-      -e testLocalErrorBuffers \
-      -e testLocalFanout \
-      -e testLocalRetcodes \
-      -e testLocalRCBufferGathering \
-      -e testLocalSingleLineBuffers \
-      -e testLocalWorkerFanout \
-      -e testSimpleMultipleCommands \
-      -e testClushConfigSetRlimit  \
-      -e testTimerInvalidateInHandler \
-      -e testTimerSetNextFireInHandler \
-      -e test_channel_ctl_shell_mlocal1 \
-      -e test_channel_ctl_shell_mlocal2 \
-      -e test_channel_ctl_shell_mlocal3 \
-      -e test_node_placeholder \
-    tests/*.py
+    rm tests/TreeGatewayTest.py
   '';
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     description = "Scalable Python framework for cluster administration";
     homepage = "https://cea-hpc.github.io/clustershell";
     license = licenses.lgpl21;
diff --git a/pkgs/development/python-modules/cma/default.nix b/pkgs/development/python-modules/cma/default.nix
index 82fdcf07153d5..39567ede68d22 100644
--- a/pkgs/development/python-modules/cma/default.nix
+++ b/pkgs/development/python-modules/cma/default.nix
@@ -1,15 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, python
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  python,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "cma";
-  version = "3.3.0";
-  format = "setuptools";
+  version = "4.0.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -17,26 +19,25 @@ buildPythonPackage rec {
     owner = "CMA-ES";
     repo = "pycma";
     rev = "refs/tags/r${version}";
-    hash = "sha256-+UJI3hDVbDMfRF4bkwHED3eJCHzxS2hO4YPUzJqcoQI=";
+    hash = "sha256-W4KDtX/Ho/XUrZr2cmS66Q0q90FEHRJN0VF4sMgonRw=";
   };
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ numpy ];
 
   checkPhase = ''
     # At least one doctest fails, thus only limited amount of files is tested
     ${python.executable} -m cma.test interfaces.py purecma.py logger.py optimization_tools.py transformations.py
   '';
 
-  pythonImportsCheck = [
-    "cma"
-  ];
+  pythonImportsCheck = [ "cma" ];
 
   meta = with lib; {
     description = "Library for Covariance Matrix Adaptation Evolution Strategy for non-linear numerical optimization";
     homepage = "https://github.com/CMA-ES/pycma";
+    changelog = "https://github.com/CMA-ES/pycma/releases/tag/r${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cmaes/default.nix b/pkgs/development/python-modules/cmaes/default.nix
index 2e0afcf381626..6a0f96d469e51 100644
--- a/pkgs/development/python-modules/cmaes/default.nix
+++ b/pkgs/development/python-modules/cmaes/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, hypothesis
-, numpy
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  hypothesis,
+  numpy,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "cmaes";
-  version = "0.10.0";
+  version = "0.11.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -19,25 +20,19 @@ buildPythonPackage rec {
     owner = "CyberAgentAILab";
     repo = "cmaes";
     rev = "refs/tags/v${version}";
-    hash = "sha256-1mXulG/yqNwKQKDFGBh8uxIYOPSsm8+PNp++CSswc50=";
+    hash = "sha256-u2CgU9n8N9AMxfMBbDbnYzBMdl/IGOLTxOeh8RlnB/Y=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   nativeCheckInputs = [
     hypothesis
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "cmaes"
-  ];
+  pythonImportsCheck = [ "cmaes" ];
 
   disabledTests = [
     # Disable time-sensitive test
diff --git a/pkgs/development/python-modules/cmake/default.nix b/pkgs/development/python-modules/cmake/default.nix
index c9ee7d11c8fbc..5a6afc13602b0 100644
--- a/pkgs/development/python-modules/cmake/default.nix
+++ b/pkgs/development/python-modules/cmake/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, flit-core
-, cmake
+{
+  lib,
+  buildPythonPackage,
+  flit-core,
+  cmake,
 }:
 
 buildPythonPackage rec {
@@ -22,13 +23,9 @@ buildPythonPackage rec {
 
   inherit (cmake) setupHooks;
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  pythonImportsCheck = [
-    "cmake"
-  ];
+  pythonImportsCheck = [ "cmake" ];
 
   meta = with lib; {
     description = "CMake is an open-source, cross-platform family of tools designed to build, test and package software";
diff --git a/pkgs/development/python-modules/cmarkgfm/default.nix b/pkgs/development/python-modules/cmarkgfm/default.nix
index 1c5e80961d54b..23a38b8377e3e 100644
--- a/pkgs/development/python-modules/cmarkgfm/default.nix
+++ b/pkgs/development/python-modules/cmarkgfm/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, cffi
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  cffi,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,21 +19,13 @@ buildPythonPackage rec {
     hash = "sha256-ogjBcm4SujhRJc7yxtN1xBxd6kzCZzp3r3ErHb8HTpA=";
   };
 
-  propagatedNativeBuildInputs = [
-    cffi
-  ];
+  propagatedNativeBuildInputs = [ cffi ];
 
-  propagatedBuildInputs = [
-    cffi
-  ];
+  propagatedBuildInputs = [ cffi ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "cmarkgfm"
-  ];
+  pythonImportsCheck = [ "cmarkgfm" ];
 
   meta = with lib; {
     description = "Minimal bindings to GitHub's fork of cmark";
diff --git a/pkgs/development/python-modules/cmd2-ext-test/default.nix b/pkgs/development/python-modules/cmd2-ext-test/default.nix
index 4cdf9ccf8dcd8..3f061b7449be4 100644
--- a/pkgs/development/python-modules/cmd2-ext-test/default.nix
+++ b/pkgs/development/python-modules/cmd2-ext-test/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, cmd2
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  cmd2,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -19,21 +20,13 @@ buildPythonPackage rec {
     hash = "sha256-uTc+onurLilwQe0trESR3JGa5WFT1fCt3rRA7rhRpaY=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    cmd2
-  ];
+  propagatedBuildInputs = [ cmd2 ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "cmd2_ext_test"
-  ];
+  pythonImportsCheck = [ "cmd2_ext_test" ];
 
   meta = with lib; {
     description = "Plugin supports testing of a cmd2 application";
diff --git a/pkgs/development/python-modules/cmd2/default.nix b/pkgs/development/python-modules/cmd2/default.nix
index 996c11955b925..75b2d05479091 100644
--- a/pkgs/development/python-modules/cmd2/default.nix
+++ b/pkgs/development/python-modules/cmd2/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, stdenv
-, attrs
-, buildPythonPackage
-, colorama
-, fetchPypi
-, glibcLocales
-, importlib-metadata
-, pyperclip
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
-, typing-extensions
-, wcwidth
+{
+  lib,
+  stdenv,
+  attrs,
+  buildPythonPackage,
+  colorama,
+  fetchPypi,
+  glibcLocales,
+  importlib-metadata,
+  pyperclip,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  typing-extensions,
+  wcwidth,
 }:
 
 buildPythonPackage rec {
@@ -29,19 +30,19 @@ buildPythonPackage rec {
 
   LC_ALL = "en_US.UTF-8";
 
-  buildInputs = [
-    setuptools-scm
-  ];
+  buildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    attrs
-    colorama
-    pyperclip
-    wcwidth
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-    importlib-metadata
-  ];
+  propagatedBuildInputs =
+    [
+      attrs
+      colorama
+      pyperclip
+      wcwidth
+    ]
+    ++ lib.optionals (pythonOlder "3.8") [
+      typing-extensions
+      importlib-metadata
+    ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -55,22 +56,22 @@ buildPythonPackage rec {
     "test_transcript"
   ];
 
-  postPatch = ''
-    sed -i "/--cov/d" setup.cfg
-  '' + lib.optionalString stdenv.isDarwin ''
-    # Fake the impure dependencies pbpaste and pbcopy
-    mkdir bin
-    echo '#!${stdenv.shell}' > bin/pbpaste
-    echo '#!${stdenv.shell}' > bin/pbcopy
-    chmod +x bin/{pbcopy,pbpaste}
-    export PATH=$(realpath bin):$PATH
-  '';
+  postPatch =
+    ''
+      sed -i "/--cov/d" setup.cfg
+    ''
+    + lib.optionalString stdenv.hostPlatform.isDarwin ''
+      # Fake the impure dependencies pbpaste and pbcopy
+      mkdir bin
+      echo '#!${stdenv.shell}' > bin/pbpaste
+      echo '#!${stdenv.shell}' > bin/pbcopy
+      chmod +x bin/{pbcopy,pbpaste}
+      export PATH=$(realpath bin):$PATH
+    '';
 
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
-  pythonImportsCheck = [
-    "cmd2"
-  ];
+  pythonImportsCheck = [ "cmd2" ];
 
   meta = with lib; {
     description = "Enhancements for standard library's cmd module";
diff --git a/pkgs/development/python-modules/cmdline/default.nix b/pkgs/development/python-modules/cmdline/default.nix
index a5a03389b8dbf..82b901c1ce72c 100644
--- a/pkgs/development/python-modules/cmdline/default.nix
+++ b/pkgs/development/python-modules/cmdline/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pyyaml }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyyaml,
+}:
 
 buildPythonPackage rec {
   pname = "cmdline";
diff --git a/pkgs/development/python-modules/cmdstanpy/default.nix b/pkgs/development/python-modules/cmdstanpy/default.nix
index 9ca60fe3c88ef..ead29ecbb939d 100644
--- a/pkgs/development/python-modules/cmdstanpy/default.nix
+++ b/pkgs/development/python-modules/cmdstanpy/default.nix
@@ -1,29 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, substituteAll
-, cmdstan
-, pythonRelaxDepsHook
-, setuptools
-, pandas
-, numpy
-, tqdm
-, stanio
-, xarray
-, pytestCheckHook
-, stdenv
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  substituteAll,
+  cmdstan,
+  setuptools,
+  pandas,
+  numpy,
+  tqdm,
+  stanio,
+  xarray,
+  pytestCheckHook,
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "cmdstanpy";
-  version = "1.2.1";
+  version = "1.2.4";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "stan-dev";
     repo = "cmdstanpy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-q+AFhWEzjYElJpiHT4h6YfZrwZJ56pv+8R+001vREyQ=";
+    hash = "sha256-SKDqLvWbzaBcL13E87kcphBJNIZfdkPp2g4SIDEKA0U=";
   };
 
   patches = [
@@ -40,7 +40,6 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     setuptools
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -60,9 +59,7 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d)
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.all;
+  nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.all;
 
   disabledTestPaths = [
     # No need to test these when using Nix
@@ -70,20 +67,25 @@ buildPythonPackage rec {
     "test/test_cxx_installation.py"
   ];
 
-  disabledTests = [
-    "test_serialization" # Pickle class mismatch errors
-    # These tests use the flag -DSTAN_THREADS which doesn't work in cmdstan (missing file)
-    "test_multi_proc_threads"
-    "test_compile_force"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_init_types" # CmdStan error: error during processing Operation not permitted
-  ];
+  disabledTests =
+    [
+      "test_serialization" # Pickle class mismatch errors
+      # These tests use the flag -DSTAN_THREADS which doesn't work in cmdstan (missing file)
+      "test_multi_proc_threads"
+      "test_compile_force"
+      # These tests require a writeable cmdstan source directory
+      "test_pathfinder_threads"
+      "test_save_profile"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      "test_init_types" # CmdStan error: error during processing Operation not permitted
+    ];
 
   pythonImportsCheck = [ "cmdstanpy" ];
 
   meta = {
     homepage = "https://github.com/stan-dev/cmdstanpy";
-    description = "A lightweight interface to Stan for Python users";
+    description = "Lightweight interface to Stan for Python users";
     changelog = "https://github.com/stan-dev/cmdstanpy/releases/tag/v${version}";
     license = lib.licenses.bsd3;
     maintainers = with lib.maintainers; [ tomasajt ];
diff --git a/pkgs/development/python-modules/cmigemo/default.nix b/pkgs/development/python-modules/cmigemo/default.nix
index 9122954a62d83..9237631c0532f 100644
--- a/pkgs/development/python-modules/cmigemo/default.nix
+++ b/pkgs/development/python-modules/cmigemo/default.nix
@@ -1,4 +1,12 @@
-{ stdenv, lib, buildPythonPackage, fetchPypi, six, cmigemo, pytestCheckHook }:
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  cmigemo,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "cmigemo";
@@ -29,9 +37,9 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "cmigemo" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     homepage = "https://github.com/mooz/python-cmigemo";
-    description = "A pure python binding for C/Migemo";
+    description = "Pure python binding for C/Migemo";
     license = licenses.mit;
     maintainers = with maintainers; [ illustris ];
   };
diff --git a/pkgs/development/python-modules/cmsdials/default.nix b/pkgs/development/python-modules/cmsdials/default.nix
new file mode 100644
index 0000000000000..eaf436af2eeda
--- /dev/null
+++ b/pkgs/development/python-modules/cmsdials/default.nix
@@ -0,0 +1,53 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pydantic,
+  requests,
+  typing-extensions,
+  pandas,
+  tqdm,
+}:
+
+buildPythonPackage rec {
+  pname = "cmsdials";
+  version = "1.3.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "cms-DQM";
+    repo = "dials-py";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-tV802rz8V9zkjxOoGDXuYGD9FNWjdPb3Grp2khwxC9I=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    pydantic
+    requests
+    typing-extensions
+  ];
+
+  optional-dependencies = {
+    pandas = [ pandas ];
+    tqdm = [ tqdm ];
+  };
+
+  pythonRelaxDeps = [
+    # pydantic = "<2, >=1"pydantic = "<2, >=1"
+    "pydantic"
+    # typing-extensions = "<4.6.0, >=3.6.6"
+    "typing-extensions"
+  ];
+
+  pythonImportsCheck = [ "cmsdials" ];
+
+  meta = with lib; {
+    description = "Python API client interface to CMS DIALS service";
+    homepage = "https://github.com/cms-DQM/dials-py";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ ShamrockLee ];
+  };
+}
diff --git a/pkgs/development/python-modules/cmsis-pack-manager/default.nix b/pkgs/development/python-modules/cmsis-pack-manager/default.nix
index 6043f1c155652..c1ce182aa6c54 100644
--- a/pkgs/development/python-modules/cmsis-pack-manager/default.nix
+++ b/pkgs/development/python-modules/cmsis-pack-manager/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, fetchFromGitHub
-, rustPlatform
-, cffi
-, libiconv
-, stdenv
-, darwin
-, buildPythonPackage
-, appdirs
-, pyyaml
-, hypothesis
-, jinja2
-, pytestCheckHook
-, unzip
+{
+  lib,
+  fetchFromGitHub,
+  rustPlatform,
+  cffi,
+  libiconv,
+  stdenv,
+  darwin,
+  buildPythonPackage,
+  appdirs,
+  pyyaml,
+  hypothesis,
+  jinja2,
+  pytestCheckHook,
+  unzip,
 }:
 
 buildPythonPackage rec {
@@ -31,12 +32,24 @@ buildPythonPackage rec {
     hash = "sha256-dO4qw5Jx0exwb4RuOhu6qvGxQZ+LayHtXDHZKADLTEI=";
   };
 
-  nativeBuildInputs = [ rustPlatform.cargoSetupHook rustPlatform.maturinBuildHook ];
+  nativeBuildInputs = [
+    rustPlatform.cargoSetupHook
+    rustPlatform.maturinBuildHook
+  ];
   propagatedNativeBuildInputs = [ cffi ];
-  buildInputs = [ libiconv ]
-    ++ lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Security;
-  propagatedBuildInputs = [ appdirs pyyaml ];
-  nativeCheckInputs = [ hypothesis jinja2 pytestCheckHook unzip ];
+  buildInputs = [
+    libiconv
+  ] ++ lib.optional stdenv.hostPlatform.isDarwin darwin.apple_sdk.frameworks.Security;
+  propagatedBuildInputs = [
+    appdirs
+    pyyaml
+  ];
+  nativeCheckInputs = [
+    hypothesis
+    jinja2
+    pytestCheckHook
+    unzip
+  ];
 
   # remove cmsis_pack_manager source directory so that binaries can be imported
   # from the installed wheel instead
@@ -53,9 +66,12 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A Rust and Python module for handling CMSIS Pack files";
+    description = "Rust and Python module for handling CMSIS Pack files";
     homepage = "https://github.com/pyocd/cmsis-pack-manager";
     license = licenses.asl20;
-    maintainers = with maintainers; [ frogamic sbruder ];
+    maintainers = with maintainers; [
+      frogamic
+      sbruder
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/cmsis-svd/default.nix b/pkgs/development/python-modules/cmsis-svd/default.nix
index 4d60d4039fe60..b3197b6f89ef5 100644
--- a/pkgs/development/python-modules/cmsis-svd/default.nix
+++ b/pkgs/development/python-modules/cmsis-svd/default.nix
@@ -1,29 +1,44 @@
-{ lib, buildPythonPackage, fetchFromGitHub, six }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  six,
+  lxml,
+}:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "cmsis-svd";
-  version = "0.4";
-  format = "setuptools";
+  version = "0.4-unstable-2024-01-25";
+  pyproject = true;
 
   src = fetchFromGitHub {
-    owner = "posborne";
-    repo = pname;
-    rev = "python-${version}";
-    sha256 = "01f2z01gqgx0risqnbrlaqj49fmly30zbwsf7rr465ggnl2c04r0";
+    owner = "cmsis-svd";
+    repo = "cmsis-svd";
+    rev = "38d21d30abd0d4c2f34fd79d83b34392ed4bb7a3";
+    hash = "sha256-lFA0sNHVj4a4+EwOTmFUbM/nhmzJ4mx4GvT6Ykutakk=";
   };
 
-  preConfigure = ''
+  preBuild = ''
     cd python
   '';
 
-  propagatedBuildInputs = [ six ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [ "cmsis_svd" ];
+  dependencies = [
+    six
+    lxml
+  ];
 
-  meta = with lib; {
+  pythonImportsCheck = [
+    "cmsis_svd"
+    "cmsis_svd.parser"
+  ];
+
+  meta = {
     description = "CMSIS SVD parser";
-    homepage = "https://github.com/posborne/cmsis-svd";
-    maintainers = with maintainers; [ dump_stack ];
-    license = licenses.asl20;
+    homepage = "https://github.com/cmsis-svd/cmsis-svd";
+    maintainers = [ lib.maintainers.dump_stack ];
+    license = lib.licenses.asl20;
   };
 }
diff --git a/pkgs/development/python-modules/cnvkit/default.nix b/pkgs/development/python-modules/cnvkit/default.nix
index 35195b1db529e..a1a5fb27770bc 100644
--- a/pkgs/development/python-modules/cnvkit/default.nix
+++ b/pkgs/development/python-modules/cnvkit/default.nix
@@ -1,28 +1,28 @@
-{ lib
-, fetchFromGitHub
-, fetchpatch
-, rPackages
-, buildPythonPackage
-, biopython
-, numpy
-, scipy
-, scikit-learn
-, pandas
-, matplotlib
-, reportlab
-, pysam
-, future
-, pillow
-, pomegranate
-, pyfaidx
-, python
-, pythonOlder
-, R
+{
+  lib,
+  fetchFromGitHub,
+  rPackages,
+  buildPythonPackage,
+  biopython,
+  numpy,
+  scipy,
+  scikit-learn,
+  pandas,
+  matplotlib,
+  reportlab,
+  pysam,
+  future,
+  pillow,
+  pomegranate,
+  pyfaidx,
+  python,
+  pythonOlder,
+  R,
 }:
 
 buildPythonPackage rec {
   pname = "cnvkit";
-  version = "0.9.10";
+  version = "0.9.11";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -31,7 +31,7 @@ buildPythonPackage rec {
     owner = "etal";
     repo = "cnvkit";
     rev = "refs/tags/v${version}";
-    hash = "sha256-mCQXo3abwC06x/g51UBshqUk3dpqEVNUvx+cJ/EdYGQ=";
+    hash = "sha256-tlR1LsR+M1nkzk3CgrkkNcSGP3juv25GXddWDDWJ5ao=";
   };
 
   postPatch = ''
@@ -71,13 +71,11 @@ buildPythonPackage rec {
     popd # test/
   '';
 
-  pythonImportsCheck = [
-    "cnvlib"
-  ];
+  pythonImportsCheck = [ "cnvlib" ];
 
   meta = with lib; {
     homepage = "https://cnvkit.readthedocs.io";
-    description = "A Python library and command-line software toolkit to infer and visualize copy number from high-throughput DNA sequencing data";
+    description = "Python library and command-line software toolkit to infer and visualize copy number from high-throughput DNA sequencing data";
     changelog = "https://github.com/etal/cnvkit/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = [ maintainers.jbedo ];
diff --git a/pkgs/development/python-modules/co2signal/default.nix b/pkgs/development/python-modules/co2signal/default.nix
index 9af604c5dd84f..6db0885e582f0 100644
--- a/pkgs/development/python-modules/co2signal/default.nix
+++ b/pkgs/development/python-modules/co2signal/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -22,7 +23,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "CO2Signal" ];
 
   meta = with lib; {
-    description = "A package to access the CO2 Signal API ";
+    description = "Package to access the CO2 Signal API";
     homepage = "https://github.com/danielsjf/CO2Signal";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ plabadens ];
diff --git a/pkgs/development/python-modules/coapthon3/default.nix b/pkgs/development/python-modules/coapthon3/default.nix
index cba1de6aab464..b565349584b38 100644
--- a/pkgs/development/python-modules/coapthon3/default.nix
+++ b/pkgs/development/python-modules/coapthon3/default.nix
@@ -1,4 +1,10 @@
-{ buildPythonPackage, cachetools, fetchFromGitHub, isPy27, lib }:
+{
+  buildPythonPackage,
+  cachetools,
+  fetchFromGitHub,
+  isPy27,
+  lib,
+}:
 
 buildPythonPackage rec {
   pname = "coapthon3";
@@ -20,7 +26,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     inherit (src.meta) homepage;
-    description = "Python3 library to the CoAP protocol compliant with the RFC.";
+    description = "Python3 library to the CoAP protocol compliant with the RFC";
     license = licenses.mit;
     maintainers = with maintainers; [ urbas ];
   };
diff --git a/pkgs/development/python-modules/cobs/default.nix b/pkgs/development/python-modules/cobs/default.nix
index 6b7df1bd8dd63..89f9a40e1a90b 100644
--- a/pkgs/development/python-modules/cobs/default.nix
+++ b/pkgs/development/python-modules/cobs/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/cock/default.nix b/pkgs/development/python-modules/cock/default.nix
index 62d1b15486908..762521b0c8671 100644
--- a/pkgs/development/python-modules/cock/default.nix
+++ b/pkgs/development/python-modules/cock/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi, click, sortedcontainers, pyyaml }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  click,
+  sortedcontainers,
+  pyyaml,
+}:
 
 buildPythonPackage rec {
   pname = "cock";
@@ -10,7 +17,11 @@ buildPythonPackage rec {
     hash = "sha256-Hi8aFxATsYcEO6qNzZnF73V8WLTQjb6Dw2xF4VgT2o4=";
   };
 
-  propagatedBuildInputs = [ click sortedcontainers pyyaml ];
+  propagatedBuildInputs = [
+    click
+    sortedcontainers
+    pyyaml
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/pohmelie/cock";
diff --git a/pkgs/development/python-modules/coconut/default.nix b/pkgs/development/python-modules/coconut/default.nix
index 5e56c2ef139d6..5a245fc58f21c 100644
--- a/pkgs/development/python-modules/coconut/default.nix
+++ b/pkgs/development/python-modules/coconut/default.nix
@@ -1,35 +1,34 @@
-{ lib
-, anyio
-, async-generator
-, buildPythonPackage
-, fetchFromGitHub
-, cpyparsing
-, ipykernel
-, mypy
-, pexpect
-, pygments
-, pytestCheckHook
-, prompt-toolkit
-, setuptools
-, tkinter
-, watchdog
+{
+  lib,
+  anyio,
+  async-generator,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cpyparsing,
+  ipykernel,
+  mypy,
+  pexpect,
+  pygments,
+  pytestCheckHook,
+  prompt-toolkit,
+  setuptools,
+  tkinter,
+  watchdog,
 }:
 
 buildPythonPackage rec {
   pname = "coconut";
-  version = "3.1.0";
+  version = "3.1.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "evhub";
     repo = "coconut";
     rev = "refs/tags/v${version}";
-    hash = "sha256-xlA/yryUXZCU56gJ0y7M9JHgWkvXiB09ywyf0sP1o+4=";
+    hash = "sha256-Vd6ZY3PlbPOy63/0/0YJ1U2PpsVdctOoInyKftj//cM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     anyio
@@ -50,13 +49,9 @@ buildPythonPackage rec {
   ];
 
   # Currently most tests have performance issues
-  pytestFlagsArray = [
-    "coconut/tests/constants_test.py"
-  ];
+  pytestFlagsArray = [ "coconut/tests/constants_test.py" ];
 
-  pythonImportsCheck = [
-    "coconut"
-  ];
+  pythonImportsCheck = [ "coconut" ];
 
   meta = with lib; {
     description = "Simple, elegant, Pythonic functional programming";
diff --git a/pkgs/development/python-modules/cocotb-bus/default.nix b/pkgs/development/python-modules/cocotb-bus/default.nix
index 40f2dc86c803e..6e10559b35109 100644
--- a/pkgs/development/python-modules/cocotb-bus/default.nix
+++ b/pkgs/development/python-modules/cocotb-bus/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/cocotb/default.nix b/pkgs/development/python-modules/cocotb/default.nix
index 8d996a4ebb043..b477d447c5621 100644
--- a/pkgs/development/python-modules/cocotb/default.nix
+++ b/pkgs/development/python-modules/cocotb/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, cocotb-bus
-, find-libpython
-, pytestCheckHook
-, swig
-, verilog
-, ghdl
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  cocotb-bus,
+  find-libpython,
+  pytestCheckHook,
+  swig,
+  iverilog,
+  ghdl,
 }:
 
 buildPythonPackage rec {
@@ -30,24 +30,21 @@ buildPythonPackage rec {
   buildInputs = [ setuptools ];
   propagatedBuildInputs = [ find-libpython ];
 
-  postPatch = ''
-    patchShebangs bin/*.py
+  postPatch =
+    ''
+      patchShebangs bin/*.py
 
-    # POSIX portability (TODO: upstream this)
-    for f in \
-      cocotb/share/makefiles/Makefile.* \
-      cocotb/share/makefiles/simulators/Makefile.*
-    do
-      substituteInPlace $f --replace 'shell which' 'shell command -v'
-    done
+      # POSIX portability (TODO: upstream this)
+      for f in \
+        cocotb/share/makefiles/Makefile.* \
+        cocotb/share/makefiles/simulators/Makefile.*
+      do
+        substituteInPlace $f --replace 'shell which' 'shell command -v'
+      done
 
-    # remove circular dependency cocotb-bus from setup.py
-    substituteInPlace setup.py --replace "'cocotb-bus<1.0'" ""
-  '' + lib.optionalString stdenv.isDarwin ''
-    # disable lto on darwin
-    # https://github.com/NixOS/nixpkgs/issues/19098
-    substituteInPlace cocotb_build_libs.py --replace "-flto" ""
-  '';
+      # remove circular dependency cocotb-bus from setup.py
+      substituteInPlace setup.py --replace "'cocotb-bus<1.0'" ""
+    '';
 
   patches = [
     # Fix "can't link with bundle (MH_BUNDLE) only dylibs (MH_DYLIB) file" error
@@ -58,7 +55,13 @@ buildPythonPackage rec {
     ./0002-Patch-remove-test_unicode_handle_assignment_deprecated-test.patch
   ];
 
-  nativeCheckInputs = [ cocotb-bus pytestCheckHook swig verilog ghdl ];
+  nativeCheckInputs = [
+    cocotb-bus
+    pytestCheckHook
+    swig
+    iverilog
+    ghdl
+  ];
   preCheck = ''
     export PATH=$out/bin:$PATH
     mv cocotb cocotb.hidden
@@ -72,6 +75,9 @@ buildPythonPackage rec {
     mainProgram = "cocotb-config";
     homepage = "https://github.com/cocotb/cocotb";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ matthuszagh jleightcap ];
+    maintainers = with maintainers; [
+      matthuszagh
+      jleightcap
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/codecov/default.nix b/pkgs/development/python-modules/codecov/default.nix
index ccc95b894f39a..8bac2ebf313c2 100644
--- a/pkgs/development/python-modules/codecov/default.nix
+++ b/pkgs/development/python-modules/codecov/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, coverage
-, ddt
-, fetchFromGitHub
-, mock
-, pytestCheckHook
-, requests
+{
+  lib,
+  buildPythonPackage,
+  coverage,
+  ddt,
+  fetchFromGitHub,
+  mock,
+  pytestCheckHook,
+  requests,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/codepy/default.nix b/pkgs/development/python-modules/codepy/default.nix
index 6f6c7d22bc9f8..edcda2857bc3e 100644
--- a/pkgs/development/python-modules/codepy/default.nix
+++ b/pkgs/development/python-modules/codepy/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytools
-, appdirs
-, six
-, cgen
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytools,
+  appdirs,
+  six,
+  cgen,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,11 @@ buildPythonPackage rec {
     hash = "sha256-viMfB/nDrvDA/IGRZEX+yXylxbbmqbh/fgdYXBzK0zM=";
   };
 
-  buildInputs = [ pytools six cgen ];
+  buildInputs = [
+    pytools
+    six
+    cgen
+  ];
   propagatedBuildInputs = [ appdirs ];
 
   pythonImportsCheck = [ "codepy" ];
diff --git a/pkgs/development/python-modules/coffea/default.nix b/pkgs/development/python-modules/coffea/default.nix
index 86090e3b25562..cd97bc6cbd1ac 100644
--- a/pkgs/development/python-modules/coffea/default.nix
+++ b/pkgs/development/python-modules/coffea/default.nix
@@ -1,60 +1,64 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, hatchling
-, hatch-vcs
-, awkward
-, cachetools
-, cloudpickle
-, correctionlib
-, dask
-, dask-awkward
-, dask-histogram
-, fsspec-xrootd
-, hist
-, lz4
-, matplotlib
-, mplhep
-, numba
-, numpy
-, packaging
-, pandas
-, pyarrow
-, scipy
-, toml
-, tqdm
-, uproot
-, distributed
-, pyinstrument
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  hatchling,
+  hatch-vcs,
+
+  # dependencies
+  aiohttp,
+  awkward,
+  cachetools,
+  cloudpickle,
+  correctionlib,
+  dask,
+  dask-awkward,
+  dask-histogram,
+  fsspec-xrootd,
+  hist,
+  lz4,
+  matplotlib,
+  mplhep,
+  numba,
+  numpy,
+  packaging,
+  pandas,
+  pyarrow,
+  requests,
+  scipy,
+  toml,
+  tqdm,
+  uproot,
+  vector,
+
+  # checks
+  distributed,
+  pyinstrument,
+  pytestCheckHook,
+  pytest-xdist,
 }:
 
 buildPythonPackage rec {
   pname = "coffea";
-  version = "2024.4.1";
+  version = "2024.9.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
-
   src = fetchFromGitHub {
     owner = "CoffeaTeam";
     repo = "coffea";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Iu1GHnLUqdhYO7hoHaf+O/S6KO0P+dvl0wgfRA5vtGI=";
+    hash = "sha256-IX9c1EhQfFF2Gsn8atxngJ4gpgrwX5SnolUQ3nphhUY=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail "numba>=0.58.1" "numba"
-  '';
-
-  nativeBuildInputs = [
+  build-system = [
     hatchling
     hatch-vcs
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    aiohttp
     awkward
     cachetools
     cloudpickle
@@ -72,27 +76,36 @@ buildPythonPackage rec {
     packaging
     pandas
     pyarrow
+    requests
     scipy
     toml
     tqdm
     uproot
+    vector
   ] ++ dask.optional-dependencies.array;
 
   nativeCheckInputs = [
     distributed
     pyinstrument
     pytestCheckHook
+    pytest-xdist
   ];
 
-  pythonImportsCheck = [
-    "coffea"
+  pythonImportsCheck = [ "coffea" ];
+
+  disabledTests = [
+    # Requires internet access
+    # https://github.com/CoffeaTeam/coffea/issues/1094
+    "test_lumimask"
   ];
 
-  meta = with lib; {
+  __darwinAllowLocalNetworking = true;
+
+  meta = {
     description = "Basic tools and wrappers for enabling not-too-alien syntax when running columnar Collider HEP analysis";
     homepage = "https://github.com/CoffeaTeam/coffea";
     changelog = "https://github.com/CoffeaTeam/coffea/releases/tag/v${version}";
-    license = with licenses; [ bsd3 ];
-    maintainers = with maintainers; [ veprbl ];
+    license = with lib.licenses; [ bsd3 ];
+    maintainers = with lib.maintainers; [ veprbl ];
   };
 }
diff --git a/pkgs/development/python-modules/cogapp/default.nix b/pkgs/development/python-modules/cogapp/default.nix
index 7f039aa24faf4..c6f669c8ad569 100644
--- a/pkgs/development/python-modules/cogapp/default.nix
+++ b/pkgs/development/python-modules/cogapp/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -11,18 +12,16 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-qAbV254xihotP86YgAgXkWjn2xPl5VsZt5dj+budKYI=";
+    hash = "sha256-qAbV254xihotP86YgAgXkWjn2xPl5VsZt5dj+budKYI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # there are no tests
   doCheck = false;
 
   meta = with lib; {
-    description = "A code generator for executing Python snippets in source files";
+    description = "Code generator for executing Python snippets in source files";
     homepage = "https://nedbatchelder.com/code/cog";
     license = licenses.mit;
     maintainers = with maintainers; [ lovek323 ];
diff --git a/pkgs/development/python-modules/cohere/default.nix b/pkgs/development/python-modules/cohere/default.nix
index 26deb98e3d451..79fcf2764bd36 100644
--- a/pkgs/development/python-modules/cohere/default.nix
+++ b/pkgs/development/python-modules/cohere/default.nix
@@ -1,39 +1,47 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, poetry-core
-, pythonOlder
-, fastavro
-, httpx
-, httpx-sse
-, pydantic
-, requests
-, tokenizers
-, types-requests
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  boto3,
+  fastavro,
+  httpx,
+  httpx-sse,
+  parameterized,
+  pydantic,
+  pydantic-core,
+  requests,
+  tokenizers,
+  types-requests,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "cohere";
-  version = "5.3.3";
+  version = "5.10.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
-
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-+/WcC6sN7U0oCR+gwZOhFtgwPEwLCaQnId2KEjDqJ8M=";
+  src = fetchFromGitHub {
+    owner = "cohere-ai";
+    repo = "cohere-python";
+    rev = "refs/tags/${version}";
+    hash = "sha256-9d72JWEz2L8yyZQKkdwQMgwQM3nz4yVHnmVCERaa5C8=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
+    boto3
     fastavro
     httpx
     httpx-sse
+    parameterized
     pydantic
+    pydantic-core
     requests
     tokenizers
     types-requests
@@ -43,15 +51,13 @@ buildPythonPackage rec {
   # tests require CO_API_KEY
   doCheck = false;
 
-  pythonImportsCheck = [
-    "cohere"
-  ];
+  pythonImportsCheck = [ "cohere" ];
 
-  meta = with lib; {
+  meta = {
     description = "Simplify interfacing with the Cohere API";
     homepage = "https://docs.cohere.com/docs";
     changelog = "https://github.com/cohere-ai/cohere-python/releases/tag/${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ natsukium ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
   };
 }
diff --git a/pkgs/development/python-modules/coincurve/default.nix b/pkgs/development/python-modules/coincurve/default.nix
index 2cdb2d8f4fe22..d7f9b8a36fc82 100644
--- a/pkgs/development/python-modules/coincurve/default.nix
+++ b/pkgs/development/python-modules/coincurve/default.nix
@@ -1,49 +1,63 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, asn1crypto
-, autoconf
-, automake
-, cffi
-, libtool
-, pkg-config
-, pytestCheckHook
-, python
-, pythonOlder
-, secp256k1
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  cmake,
+  hatchling,
+  ninja,
+  pkg-config,
+  setuptools,
+  scikit-build-core,
+
+  # dependencies
+  asn1crypto,
+  cffi,
+  secp256k1,
+
+  # checks
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "coincurve";
-  version = "19.0.1";
-  format = "setuptools";
+  version = "20.0.0";
+  pyproject = true;
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "ofek";
     repo = "coincurve";
     rev = "refs/tags/v${version}";
-    hash = "sha256-T60iKRrc8/t86nqf8/R4971SjOw586YNCWWBuLd9MjM=";
+    hash = "sha256-NKx/iLuzFEu1UBuwa14x55Ab3laVAKEtX6dtoWi0dOg=";
   };
 
   postPatch = ''
-    substituteInPlace setup.py \
-      --replace ", 'requests'" ""
-
     # don't try to load .dll files
-    rm coincurve/_windows_libsecp256k1.py
     cp -r --no-preserve=mode ${secp256k1.src} libsecp256k1
     patchShebangs secp256k1/autogen.sh
   '';
 
-  nativeBuildInputs = [
-    autoconf
-    automake
-    libtool
+  build-system = [
+    hatchling
+    cffi
+    cmake
+    ninja
     pkg-config
+    setuptools
+    scikit-build-core
   ];
 
-  propagatedBuildInputs = [
+  dontUseCmakeConfigure = true;
+
+  env.COINCURVE_IGNORE_SYSTEM_LIB = "OFF";
+
+  buildInputs = [ secp256k1 ];
+
+  dependencies = [
     asn1crypto
     cffi
   ];
@@ -56,18 +70,17 @@ buildPythonPackage rec {
     rm tests/test_bench.py
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "coincurve"
-  ];
+  pythonImportsCheck = [ "coincurve" ];
 
   meta = with lib; {
     description = "Cross-platform bindings for libsecp256k1";
     homepage = "https://github.com/ofek/coincurve";
-    license = with licenses; [ asl20 mit ];
-    maintainers = with maintainers; [ ];
+    license = with licenses; [
+      asl20
+      mit
+    ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/coinmetrics-api-client/default.nix b/pkgs/development/python-modules/coinmetrics-api-client/default.nix
index 421be646d19e7..26272d385cb7e 100644
--- a/pkgs/development/python-modules/coinmetrics-api-client/default.nix
+++ b/pkgs/development/python-modules/coinmetrics-api-client/default.nix
@@ -1,23 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, orjson
-, pandas
-, poetry-core
-, pytest-mock
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
-, tqdm
-, typer
-, websocket-client
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  orjson,
+  pandas,
+  poetry-core,
+  pytest-mock,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  requests,
+  tqdm,
+  typer,
+  websocket-client,
 }:
 
 buildPythonPackage rec {
   pname = "coinmetrics-api-client";
-  version = "2024.2.6.16";
+  version = "2024.8.20.13";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -27,16 +27,13 @@ buildPythonPackage rec {
   src = fetchPypi {
     inherit version;
     pname = "coinmetrics_api_client";
-    hash = "sha256-rCj8nG7iQFJKs3Mic2wRZKBqx9T0lCPH5Po8k0nLppg=";
+    hash = "sha256-IBfHHAmT1BTgA6eMkZf8ggfiknNYp7mfELSRyFARWNk=";
   };
 
-  pythonRelaxDeps = [
-    "typer"
-  ];
+  pythonRelaxDeps = [ "typer" ];
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -53,15 +50,11 @@ buildPythonPackage rec {
     pytest-mock
   ] ++ passthru.optional-dependencies.pandas;
 
-  pythonImportsCheck = [
-    "coinmetrics.api_client"
-  ];
+  pythonImportsCheck = [ "coinmetrics.api_client" ];
 
   passthru = {
     optional-dependencies = {
-      pandas = [
-        pandas
-      ];
+      pandas = [ pandas ];
     };
   };
 
diff --git a/pkgs/development/python-modules/colander/default.nix b/pkgs/development/python-modules/colander/default.nix
index 27111e1b267be..e3ddb2cf3c312 100644
--- a/pkgs/development/python-modules/colander/default.nix
+++ b/pkgs/development/python-modules/colander/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, babel
-, translationstring
-, iso8601
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  babel,
+  translationstring,
+  iso8601,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -28,16 +29,12 @@ buildPythonPackage rec {
     iso8601
   ];
 
-  pythonImportsCheck = [
-    "colander"
-  ];
+  pythonImportsCheck = [ "colander" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A simple schema-based serialization and deserialization library";
+    description = "Simple schema-based serialization and deserialization library";
     homepage = "https://github.com/Pylons/colander";
     license = licenses.free; # http://repoze.org/LICENSE.txt
     maintainers = with maintainers; [ domenkozar ];
diff --git a/pkgs/development/python-modules/colanderalchemy/default.nix b/pkgs/development/python-modules/colanderalchemy/default.nix
index 1c45b6b619e25..ca1243078f35e 100644
--- a/pkgs/development/python-modules/colanderalchemy/default.nix
+++ b/pkgs/development/python-modules/colanderalchemy/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, colander
-, sqlalchemy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  colander,
+  sqlalchemy,
 }:
 
 buildPythonPackage rec {
@@ -14,7 +15,10 @@ buildPythonPackage rec {
     sha256 = "006wcfch2skwvma9bq3l06dyjnz309pa75h1rviq7i4pd9g463bl";
   };
 
-  propagatedBuildInputs = [ colander sqlalchemy ];
+  propagatedBuildInputs = [
+    colander
+    sqlalchemy
+  ];
 
   # Tests are not included in Pypi
   doCheck = false;
diff --git a/pkgs/development/python-modules/colbert-ai/default.nix b/pkgs/development/python-modules/colbert-ai/default.nix
new file mode 100644
index 0000000000000..a7d707d383701
--- /dev/null
+++ b/pkgs/development/python-modules/colbert-ai/default.nix
@@ -0,0 +1,69 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  bitarray,
+  datasets,
+  flask,
+  python-dotenv,
+  ninja,
+  scipy,
+  tqdm,
+  transformers,
+  ujson,
+  gitpython,
+  torch,
+  faiss,
+}:
+
+buildPythonPackage rec {
+  pname = "colbert-ai";
+  version = "0.2.21";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit version;
+    pname = "colbert_ai";
+    hash = "sha256-qNb9tOInLysI7Tf45QlgchYNhBXR5AWFdRiYt35iW6s=";
+  };
+
+  pythonRemoveDeps = [ "git-python" ];
+
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
+    bitarray
+    datasets
+    faiss
+    flask
+    gitpython
+    python-dotenv
+    ninja
+    scipy
+    torch
+    tqdm
+    transformers
+    ujson
+  ];
+
+  pythonImportsCheck = [ "colbert" ];
+
+  # There is no tests
+  doCheck = false;
+
+  meta = {
+    description = "Fast and accurate retrieval model, enabling scalable BERT-based search over large text collections in tens of milliseconds";
+    homepage = "https://github.com/stanford-futuredata/ColBERT";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [
+      bachp
+    ];
+  };
+}
diff --git a/pkgs/development/python-modules/collections-extended/default.nix b/pkgs/development/python-modules/collections-extended/default.nix
index d1545d36b3764..72648a5268d43 100644
--- a/pkgs/development/python-modules/collections-extended/default.nix
+++ b/pkgs/development/python-modules/collections-extended/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hypothesis
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hypothesis,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
@@ -23,18 +24,14 @@ buildPythonPackage rec {
     hash = "sha256-cK13+CQUELKSiLpG747+C+RB5b6luu0mWLLXTT+uGH4=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   nativeCheckInputs = [
     hypothesis
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "collections_extended"
-  ];
+  pythonImportsCheck = [ "collections_extended" ];
 
   meta = with lib; {
     description = "Extra Python Collections - bags (multisets), setlists (unique list/indexed set), RangeMap and IndexedDict";
diff --git a/pkgs/development/python-modules/collidoscope/default.nix b/pkgs/development/python-modules/collidoscope/default.nix
index 2d446fc9505b0..a8bec5c5cdcdc 100644
--- a/pkgs/development/python-modules/collidoscope/default.nix
+++ b/pkgs/development/python-modules/collidoscope/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, babelfont
-, kurbopy
-, fonttools
-, skia-pathops
-, tqdm
-, uharfbuzz
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  babelfont,
+  kurbopy,
+  fonttools,
+  skia-pathops,
+  tqdm,
+  uharfbuzz,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -30,10 +31,12 @@ buildPythonPackage rec {
   ];
 
   doCheck = true;
-  nativeCheckInputs = [
-    unittestCheckHook
+  nativeCheckInputs = [ unittestCheckHook ];
+  unittestFlagsArray = [
+    "-s"
+    "test"
+    "-v"
   ];
-  unittestFlagsArray = [ "-s" "test" "-v" ];
 
   meta = with lib; {
     description = "Python library to detect glyph collisions in fonts";
diff --git a/pkgs/development/python-modules/color-operations/default.nix b/pkgs/development/python-modules/color-operations/default.nix
new file mode 100644
index 0000000000000..e92bcfe70b70d
--- /dev/null
+++ b/pkgs/development/python-modules/color-operations/default.nix
@@ -0,0 +1,58 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  cython,
+  oldest-supported-numpy,
+  setuptools,
+
+  # dependencies
+  numpy,
+
+  # checks
+  colormath,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "color-operations";
+  version = "0.1.4";
+  pyproject = true;
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "vincentsarago";
+    repo = "color-operations";
+    rev = "refs/tags/${version}";
+    hash = "sha256-qqOTmVYD3VfjeVJtYvDQw+cxjcTsmqTYQNL1qMX+fL4=";
+  };
+
+  build-system = [
+    cython
+    oldest-supported-numpy
+    setuptools
+  ];
+
+  dependencies = [ numpy ];
+
+  nativeCheckInputs = [
+    colormath
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    python setup.py build_ext --inplace
+  '';
+
+  pythonImportsCheck = [ "color_operations" ];
+
+  meta = {
+    description = "Apply basic color-oriented image operations. Fork of rio-color";
+    homepage = "https://github.com/vincentsarago/color-operations";
+    license = lib.licenses.mit;
+    maintainers = lib.teams.geospatial.members;
+  };
+}
diff --git a/pkgs/development/python-modules/colorama/default.nix b/pkgs/development/python-modules/colorama/default.nix
index 747823f2dd9ef..901750de1fe8f 100644
--- a/pkgs/development/python-modules/colorama/default.nix
+++ b/pkgs/development/python-modules/colorama/default.nix
@@ -1,4 +1,10 @@
-{ lib, fetchPypi, buildPythonPackage, hatchling, pytestCheckHook }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  hatchling,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "colorama";
@@ -21,6 +27,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/tartley/colorama";
     changelog = "https://github.com/tartley/colorama/raw/${version}/CHANGELOG.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/colorcet/default.nix b/pkgs/development/python-modules/colorcet/default.nix
index 08951a18fc492..b335897207fcf 100644
--- a/pkgs/development/python-modules/colorcet/default.nix
+++ b/pkgs/development/python-modules/colorcet/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, setuptools-scm
-, param
-, pyct
-, pytest-mpl
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  param,
+  pyct,
+  pytest-mpl,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -41,19 +42,15 @@ buildPythonPackage rec {
     ln -s $HOME/.config/matplotlib $HOME/.matplotlib
   '';
 
-  disabledTests = [
-    "matplotlib_default_colormap_plot"
-  ];
+  disabledTests = [ "matplotlib_default_colormap_plot" ];
 
-  pythonImportsCheck = [
-    "colorcet"
-  ];
+  pythonImportsCheck = [ "colorcet" ];
 
   meta = with lib; {
     description = "Collection of perceptually uniform colormaps";
     mainProgram = "colorcet";
     homepage = "https://colorcet.pyviz.org";
     license = licenses.cc-by-40;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/colorclass/default.nix b/pkgs/development/python-modules/colorclass/default.nix
index e524ae49eb3d4..016aaacc1355f 100644
--- a/pkgs/development/python-modules/colorclass/default.nix
+++ b/pkgs/development/python-modules/colorclass/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "colorclass";
diff --git a/pkgs/development/python-modules/colored-traceback/default.nix b/pkgs/development/python-modules/colored-traceback/default.nix
index a2cdfea30b2c3..8fc51701bf248 100644
--- a/pkgs/development/python-modules/colored-traceback/default.nix
+++ b/pkgs/development/python-modules/colored-traceback/default.nix
@@ -1,20 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pygments
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pygments,
 }:
 
 buildPythonPackage rec {
   pname = "colored-traceback";
-  version = "0.3.0";
-  format = "setuptools";
+  version = "0.4.2";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-bafOKx2oafa7VMkntBW5VyfEu22ahMRhXqd9mHKRGwU=";
+    hash = "sha256-7LyOQfBxLqgZMdfNQ2uL658+/xWV0kmPGD4O9ptW/oQ=";
   };
 
-  buildInputs = [ pygments ];
+  build-system = [ setuptools ];
+
+  dependencies = [ pygments ];
 
   # No setuptools tests for the package.
   doCheck = false;
diff --git a/pkgs/development/python-modules/colored/default.nix b/pkgs/development/python-modules/colored/default.nix
index af696f384f158..18306a65bb98b 100644
--- a/pkgs/development/python-modules/colored/default.nix
+++ b/pkgs/development/python-modules/colored/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitLab
-, flit-core
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  flit-core,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,27 +18,19 @@ buildPythonPackage rec {
     hash = "sha256-4APFAIN+cmPPd6qbqVC9iU4YntNEjoPbJXZywG1hsBY=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [
-    "unittests"
-  ];
+  unittestFlagsArray = [ "unittests" ];
 
-  pythonImportsCheck = [
-    "colored"
-  ];
+  pythonImportsCheck = [ "colored" ];
 
   meta = with lib; {
     description = "Simple library for color and formatting to terminal";
     homepage = "https://gitlab.com/dslackw/colored";
     changelog = "https://gitlab.com/dslackw/colored/-/raw/${version}/CHANGES.md";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/coloredlogs/default.nix b/pkgs/development/python-modules/coloredlogs/default.nix
index 3f4dd4188040c..182c5c3706241 100644
--- a/pkgs/development/python-modules/coloredlogs/default.nix
+++ b/pkgs/development/python-modules/coloredlogs/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, humanfriendly
-, verboselogs
-, capturer
-, pytestCheckHook
-, mock
-, util-linux
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  humanfriendly,
+  verboselogs,
+  capturer,
+  pytestCheckHook,
+  mock,
+  util-linux,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-TodI2Wh8M0qMM2K5jzqlLmUKILa5+5qq4ByLttmAA7E=";
   };
 
-  propagatedBuildInputs = [
-    humanfriendly
-  ];
+  propagatedBuildInputs = [ humanfriendly ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -36,7 +35,7 @@ buildPythonPackage rec {
 
   # capturer is broken on darwin / py38, so we skip the test until a fix for
   # https://github.com/xolox/python-capturer/issues/10 is released.
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   preCheck = ''
     # Required for the CLI test
diff --git a/pkgs/development/python-modules/colorful/default.nix b/pkgs/development/python-modules/colorful/default.nix
index 9deae7c071fc9..4a1a340136f47 100644
--- a/pkgs/development/python-modules/colorful/default.nix
+++ b/pkgs/development/python-modules/colorful/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-8rHJIsHiyfjmjlGiEyrzvEwKgi1kP4Njm731mlFDMIU=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "colorful"
-  ];
+  pythonImportsCheck = [ "colorful" ];
 
   meta = with lib; {
     description = "Library for terminal string styling";
diff --git a/pkgs/development/python-modules/colorlog/default.nix b/pkgs/development/python-modules/colorlog/default.nix
index 1e8cfb0d0d032..8dfb12cf5f846 100644
--- a/pkgs/development/python-modules/colorlog/default.nix
+++ b/pkgs/development/python-modules/colorlog/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -15,17 +16,11 @@ buildPythonPackage rec {
     hash = "sha256-Pj4HmkH+taG2T5eLXqT0YECpTxHw6Lu4Jh49u+ymTUQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "colorlog"
-  ];
+  pythonImportsCheck = [ "colorlog" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Log formatting with colors";
diff --git a/pkgs/development/python-modules/colorlover/default.nix b/pkgs/development/python-modules/colorlover/default.nix
index 1fda9111e6fa4..f5efbbf13486e 100644
--- a/pkgs/development/python-modules/colorlover/default.nix
+++ b/pkgs/development/python-modules/colorlover/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -20,6 +21,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/jackparmer/colorlover";
     description = "Color scales in Python for humans";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/colormath/default.nix b/pkgs/development/python-modules/colormath/default.nix
index 42469056b096a..d13d9a37efe1f 100644
--- a/pkgs/development/python-modules/colormath/default.nix
+++ b/pkgs/development/python-modules/colormath/default.nix
@@ -1,9 +1,12 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, networkx
-, nose
-, numpy
-, lib
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  networkx,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -11,8 +14,10 @@ buildPythonPackage rec {
   # Switch to unstable which fixes an deprecation issue with newer numpy
   # versions, should be included in versions > 3.0
   # https://github.com/gtaylor/python-colormath/issues/104
-  version = "unstable-2021-04-17";
-  format = "setuptools";
+  version = "3.0.0-unstable-2021-04-17";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "gtaylor";
@@ -21,17 +26,21 @@ buildPythonPackage rec {
     hash = "sha256-eACVPIQFgiGiVmQ/PjUxP/UH/hBOsCywz5PlgpA4dk4=";
   };
 
-  propagatedBuildInputs = [ networkx numpy ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [ nose ];
+  dependencies = [
+    networkx
+    numpy
+  ];
 
-  checkPhase = "nosetests";
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "colormath" ];
 
   meta = with lib; {
     description = "Color math and conversion library";
     homepage = "https://github.com/gtaylor/python-colormath";
+    changelog = "https://github.com/gtaylor/python-colormath/releases/tag/${version}";
     license = licenses.bsd2;
     maintainers = with maintainers; [ jonathanreeve ];
   };
diff --git a/pkgs/development/python-modules/colorspacious/default.nix b/pkgs/development/python-modules/colorspacious/default.nix
index d9a83e85ec35e..53ca726357d4d 100644
--- a/pkgs/development/python-modules/colorspacious/default.nix
+++ b/pkgs/development/python-modules/colorspacious/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
 }:
 
 buildPythonPackage rec {
@@ -11,13 +15,11 @@ buildPythonPackage rec {
     sha256 = "065n24zbm9ymy2gvf03vx5cggk1258vcjdaw8jn9v26arpl7542y";
   };
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   meta = {
     homepage = "https://github.com/njsmith/colorspacious";
-    description = "A powerful, accurate, and easy-to-use Python library for doing colorspace conversions ";
+    description = "Powerful, accurate, and easy-to-use Python library for doing colorspace conversions";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ tbenst ];
   };
diff --git a/pkgs/development/python-modules/colorthief/default.nix b/pkgs/development/python-modules/colorthief/default.nix
index 4e0527cbc7040..66fb4f9fe502d 100644
--- a/pkgs/development/python-modules/colorthief/default.nix
+++ b/pkgs/development/python-modules/colorthief/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pillow
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pillow,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     sha256 = "0lzpflal1iqbj4k7hayss5z024qf2sn8c3wxw03a0mgxg06ca2hm";
   };
 
-  propagatedBuildInputs = [
-    pillow
-  ];
+  propagatedBuildInputs = [ pillow ];
 
   # no tests implemented
   doCheck = false;
diff --git a/pkgs/development/python-modules/colorzero/default.nix b/pkgs/development/python-modules/colorzero/default.nix
index e2383dddf4de9..94a7ac6957661 100644
--- a/pkgs/development/python-modules/colorzero/default.nix
+++ b/pkgs/development/python-modules/colorzero/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pkginfo
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pkginfo,
+  pytestCheckHook,
 }:
 
-
 buildPythonPackage rec {
   pname = "colorzero";
   version = "2.0";
@@ -23,17 +23,11 @@ buildPythonPackage rec {
       --replace "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    pkginfo
-  ];
+  nativeBuildInputs = [ pkginfo ];
 
-  pythonImportsCheck = [
-    "colorzero"
-  ];
+  pythonImportsCheck = [ "colorzero" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Yet another Python color library";
diff --git a/pkgs/development/python-modules/colour/default.nix b/pkgs/development/python-modules/colour/default.nix
index 2dd31a02bbe77..de2006bacb2d5 100644
--- a/pkgs/development/python-modules/colour/default.nix
+++ b/pkgs/development/python-modules/colour/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,18 +20,14 @@ buildPythonPackage rec {
     ./remove-unmaintained-d2to1.diff
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pytestFlagsArray = [
     "--doctest-glob=\"*.rst\""
     "--doctest-modules"
   ];
 
-  pythonImportsCheck = [
-    "colour"
-  ];
+  pythonImportsCheck = [ "colour" ];
 
   meta = with lib; {
     description = "Converts and manipulates common color representation (RGB, HSV, web, ...)";
diff --git a/pkgs/development/python-modules/colout/default.nix b/pkgs/development/python-modules/colout/default.nix
index 6325b6be5bda9..412f7dd307fe4 100644
--- a/pkgs/development/python-modules/colout/default.nix
+++ b/pkgs/development/python-modules/colout/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, babel
-, buildPythonPackage
-, fetchFromGitHub
-, pygments
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  babel,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pygments,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -21,18 +22,14 @@ buildPythonPackage rec {
     hash = "sha256-7Dtf87erBElqVgqRx8BYHYOWv1uI84JJ0LHrcneczCI=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     babel
     pygments
   ];
 
-  pythonImportsCheck = [
-    "colout"
-  ];
+  pythonImportsCheck = [ "colout" ];
 
   # This project does not have a unit test
   doCheck = false;
diff --git a/pkgs/development/python-modules/cometblue-lite/default.nix b/pkgs/development/python-modules/cometblue-lite/default.nix
index 89af6333ae90e..0c935e9392b8c 100644
--- a/pkgs/development/python-modules/cometblue-lite/default.nix
+++ b/pkgs/development/python-modules/cometblue-lite/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, bleak
-, bleak-retry-connector
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  bleak,
+  bleak-retry-connector,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "cometblue_lite"
-  ];
+  pythonImportsCheck = [ "cometblue_lite" ];
 
   meta = with lib; {
     description = "Module for Eurotronic Comet Blue thermostats";
diff --git a/pkgs/development/python-modules/comicon/default.nix b/pkgs/development/python-modules/comicon/default.nix
index 04382d3ee340a..da91b39477310 100644
--- a/pkgs/development/python-modules/comicon/default.nix
+++ b/pkgs/development/python-modules/comicon/default.nix
@@ -1,43 +1,45 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonRelaxDepsHook
-, ebooklib
-, lxml
-, pillow
-, pypdf
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
+  ebooklib,
+  lxml,
+  pillow,
+  pypdf,
+  python-slugify,
 }:
 
 buildPythonPackage rec {
   pname = "comicon";
-  version = "1.0.1";
+  version = "1.2.0";
   pyproject = true;
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "potatoeggy";
     repo = "comicon";
-    rev = "v${version}";
-    hash = "sha256-e9YEr8IwttMlj6FOxk+/kw79qiF1N8/e2qusfw3WH00=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-oiEzZRgyG/RQCo2zSTqwlOhkwz76lSImR0ZtSlIUp4Y=";
   };
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "lxml"
-    "pillow"
-  ];
+  pythonRelaxDeps = [ "pypdf" ];
 
   propagatedBuildInputs = [
     ebooklib
     lxml
     pillow
     pypdf
+    python-slugify
   ];
 
+  doCheck = false; # test artifacts are not public
+
   pythonImportsCheck = [ "comicon" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/comm/default.nix b/pkgs/development/python-modules/comm/default.nix
index 9ab4eb2c50081..f18517eca1e79 100644
--- a/pkgs/development/python-modules/comm/default.nix
+++ b/pkgs/development/python-modules/comm/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, traitlets
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  traitlets,
+  pytestCheckHook,
 }:
 
 let
@@ -21,23 +22,16 @@ buildPythonPackage {
     hash = "sha256-51HSSULhbKb1NdLJ//b3Vh6sOLWp0B4KW469htpduqM=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
-  propagatedBuildInputs = [
-    traitlets
-  ];
+  propagatedBuildInputs = [ traitlets ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc";
     homepage = "https://github.com/ipython/comm";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
-
diff --git a/pkgs/development/python-modules/command-runner/default.nix b/pkgs/development/python-modules/command-runner/default.nix
index fb8fd94f80308..2ef03194928c1 100644
--- a/pkgs/development/python-modules/command-runner/default.nix
+++ b/pkgs/development/python-modules/command-runner/default.nix
@@ -1,17 +1,35 @@
-{ lib, buildPythonPackage, fetchPypi, psutil }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  psutil,
+  pythonOlder,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "command-runner";
-  version = "1.6.0";
-  format = "setuptools";
+  version = "1.7.0";
+  pyproject = true;
 
-  src = fetchPypi {
-    pname = "command_runner";
-    inherit version;
-    sha256 = "sha256-lzt1UhhrPqQrBKsRmPhqhtOIfFlCteQqo6sZ6rOut0A=";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "netinvent";
+    repo = "command_runner";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-rdbZtqNndtIxrLA90eWzR6dB8EyFrBALduBUkOVq4oE=";
   };
 
-  propagatedBuildInputs = [ psutil ];
+  build-system = [ setuptools ];
+
+  dependencies = [ psutil ];
+
+  # Tests are execute ping
+  # ping: socket: Operation not permitted
+  doCheck = false;
+
+  pythonImportsCheck = [ "command_runner" ];
 
   meta = with lib; {
     homepage = "https://github.com/netinvent/command_runner";
@@ -19,6 +37,7 @@ buildPythonPackage rec {
       Platform agnostic command execution, timed background jobs with live
       stdout/stderr output capture, and UAC/sudo elevation
     '';
+    changelog = "https://github.com/netinvent/command_runner/releases/tag/v${version}";
     license = licenses.bsd3;
     maintainers = teams.wdz.members;
   };
diff --git a/pkgs/development/python-modules/commandlines/default.nix b/pkgs/development/python-modules/commandlines/default.nix
index d5eeadcf86dee..b216858a584cd 100644
--- a/pkgs/development/python-modules/commandlines/default.nix
+++ b/pkgs/development/python-modules/commandlines/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
   };
 
   doCheck = true;
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Python library for command line argument parsing";
@@ -29,4 +28,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ danc86 ];
   };
 }
-
diff --git a/pkgs/development/python-modules/commandparse/default.nix b/pkgs/development/python-modules/commandparse/default.nix
index e146649604f02..88002d022c717 100644
--- a/pkgs/development/python-modules/commandparse/default.nix
+++ b/pkgs/development/python-modules/commandparse/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -13,15 +14,13 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-S9e90BtS6qMjFtYUmgC0w4IKQP8q1iR2tGqq5l2+n6o=";
+    hash = "sha256-S9e90BtS6qMjFtYUmgC0w4IKQP8q1iR2tGqq5l2+n6o=";
   };
 
   # tests only distributed upstream source, not PyPi
   doCheck = false;
 
-  pythonImportsCheck = [
-    "commandparse"
-  ];
+  pythonImportsCheck = [ "commandparse" ];
 
   meta = with lib; {
     description = "Python module to parse command based CLI application";
diff --git a/pkgs/development/python-modules/commentjson/default.nix b/pkgs/development/python-modules/commentjson/default.nix
index bd8d6f3433589..f410d16628f4c 100644
--- a/pkgs/development/python-modules/commentjson/default.nix
+++ b/pkgs/development/python-modules/commentjson/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchFromGitHub, six, lark, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  six,
+  lark,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "commentjson";
@@ -20,7 +27,10 @@ buildPythonPackage rec {
     rm -r commentjson/tests/test_json
   '';
 
-  propagatedBuildInputs = [ lark six ];
+  propagatedBuildInputs = [
+    lark
+    six
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
@@ -30,6 +40,6 @@ buildPythonPackage rec {
     description = "Add JavaScript or Python style comments in JSON";
     homepage = "https://github.com/vaidik/commentjson/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/commitizen/default.nix b/pkgs/development/python-modules/commitizen/default.nix
new file mode 100644
index 0000000000000..bdcb00d589c1f
--- /dev/null
+++ b/pkgs/development/python-modules/commitizen/default.nix
@@ -0,0 +1,137 @@
+{
+  lib,
+  commitizen,
+  fetchFromGitHub,
+  buildPythonPackage,
+  git,
+  pythonOlder,
+  stdenv,
+  installShellFiles,
+  poetry-core,
+  nix-update-script,
+  testers,
+  argcomplete,
+  charset-normalizer,
+  colorama,
+  decli,
+  importlib-metadata,
+  jinja2,
+  packaging,
+  pyyaml,
+  questionary,
+  termcolor,
+  tomlkit,
+  py,
+  pytest-freezer,
+  pytest-mock,
+  pytest-regressions,
+  pytest7CheckHook,
+  deprecated,
+}:
+
+buildPythonPackage rec {
+  pname = "commitizen";
+  version = "3.29.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "commitizen-tools";
+    repo = "commitizen";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-qB0XP5y9NjD0AV9gVleq+MbL5l/7M5JBb57pgssbyo4=";
+  };
+
+  pythonRelaxDeps = [
+    "argcomplete"
+    "decli"
+  ];
+
+  build-system = [ poetry-core ];
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  dependencies = [
+    argcomplete
+    charset-normalizer
+    colorama
+    decli
+    importlib-metadata
+    jinja2
+    packaging
+    pyyaml
+    questionary
+    termcolor
+    tomlkit
+  ];
+
+  nativeCheckInputs = [
+    argcomplete
+    deprecated
+    git
+    py
+    pytest-freezer
+    pytest-mock
+    pytest-regressions
+    pytest7CheckHook
+  ];
+
+  doCheck = true;
+
+  pythonImportsCheck = [ "commitizen" ];
+
+  # The tests require a functional git installation
+  # which requires a valid HOME directory.
+  preCheck = ''
+    export HOME="$(mktemp -d)"
+
+    git config --global user.name "Nix Builder"
+    git config --global user.email "nix-builder@nixos.org"
+    git init .
+  '';
+
+  # NB: These tests require complex GnuPG setup
+  disabledTests = [
+    "test_bump_minor_increment_signed"
+    "test_bump_minor_increment_signed_config_file"
+    "test_bump_on_git_with_hooks_no_verify_enabled"
+    "test_bump_on_git_with_hooks_no_verify_disabled"
+    "test_bump_pre_commit_changelog"
+    "test_bump_pre_commit_changelog_fails_always"
+    "test_get_commits_with_signature"
+    # fatal: not a git repository (or any of the parent directories): .git
+    "test_commitizen_debug_excepthook"
+  ];
+
+  postInstall =
+    let
+      register-python-argcomplete = lib.getExe' argcomplete "register-python-argcomplete";
+    in
+    lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
+      installShellCompletion --cmd cz \
+        --bash <(${register-python-argcomplete} --shell bash $out/bin/cz) \
+        --zsh <(${register-python-argcomplete} --shell zsh $out/bin/cz) \
+        --fish <(${register-python-argcomplete} --shell fish $out/bin/cz)
+    '';
+
+  passthru = {
+    updateScript = nix-update-script { };
+    tests.version = testers.testVersion {
+      package = commitizen;
+      command = "cz version";
+    };
+  };
+
+  meta = with lib; {
+    description = "Tool to create committing rules for projects, auto bump versions, and generate changelogs";
+    homepage = "https://github.com/commitizen-tools/commitizen";
+    changelog = "https://github.com/commitizen-tools/commitizen/blob/v${version}/CHANGELOG.md";
+    license = licenses.mit;
+    mainProgram = "cz";
+    maintainers = with maintainers; [
+      lovesegfault
+      anthonyroussel
+    ];
+  };
+}
diff --git a/pkgs/development/python-modules/commoncode/default.nix b/pkgs/development/python-modules/commoncode/default.nix
index 98c6492194c29..3e8c1eb0182e3 100644
--- a/pkgs/development/python-modules/commoncode/default.nix
+++ b/pkgs/development/python-modules/commoncode/default.nix
@@ -1,39 +1,39 @@
-{ lib
-, stdenv
-, attrs
-, beautifulsoup4
-, buildPythonPackage
-, click
-, fetchPypi
-, pytest-xdist
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, requests
-, saneyaml
-, setuptools-scm
-, text-unidecode
+{
+  lib,
+  stdenv,
+  attrs,
+  beautifulsoup4,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  saneyaml,
+  setuptools-scm,
+  text-unidecode,
 }:
 
 buildPythonPackage rec {
   pname = "commoncode";
-  version = "31.0.3";
-  format = "pyproject";
+  version = "32.0.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-ura55/m/iesqN6kSYmdHB1sbthSHXaFWiQ76wVmyl0E=";
+  src = fetchFromGitHub {
+    owner = "nexB";
+    repo = "commoncode";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-yqvsBJHrxVkSqp3QnYmHDJr3sef/g4pkSlkSioYuOc4=";
   };
 
   dontConfigure = true;
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     attrs
     beautifulsoup4
     click
@@ -47,34 +47,29 @@ buildPythonPackage rec {
     pytest-xdist
   ];
 
-  disabledTests = [
-    # chinese character translates different into latin
-    "test_safe_path_posix_style_chinese_char"
-    # OSError: [Errno 84] Invalid or incomplete multibyte or wide character
-    "test_os_walk_can_walk_non_utf8_path_from_unicode_path"
-    "test_resource_iter_can_walk_non_utf8_path_from_unicode_path"
-    "test_walk_can_walk_non_utf8_path_from_unicode_path"
-    "test_resource_iter_can_walk_non_utf8_path_from_unicode_path_with_dirs"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # expected result is tailored towards the quirks of upstream's
-    # CI environment on darwin
-    "test_searchable_paths"
-  ];
+  disabledTests =
+    [
+      # chinese character translates different into latin
+      "test_safe_path_posix_style_chinese_char"
+      # OSError: [Errno 84] Invalid or incomplete multibyte or wide character
+      "test_os_walk_can_walk_non_utf8_path_from_unicode_path"
+      "test_resource_iter_can_walk_non_utf8_path_from_unicode_path"
+      "test_walk_can_walk_non_utf8_path_from_unicode_path"
+      "test_resource_iter_can_walk_non_utf8_path_from_unicode_path_with_dirs"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # expected result is tailored towards the quirks of upstream's
+      # CI environment on darwin
+      "test_searchable_paths"
+    ];
 
-  disabledTestPaths = lib.optionals (pythonAtLeast "3.10") [
-    # https://github.com/nexB/commoncode/issues/36
-    "src/commoncode/fetch.py"
-  ];
-
-  pythonImportsCheck = [
-    "commoncode"
-  ];
+  pythonImportsCheck = [ "commoncode" ];
 
   meta = with lib; {
-    description = "A set of common utilities, originally split from ScanCode";
+    description = "Set of common utilities, originally split from ScanCode";
     homepage = "https://github.com/nexB/commoncode";
     changelog = "https://github.com/nexB/commoncode/blob/v${version}/CHANGELOG.rst";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/commonmark/default.nix b/pkgs/development/python-modules/commonmark/default.nix
index a6cf342ba04e2..2d7b83782730a 100644
--- a/pkgs/development/python-modules/commonmark/default.nix
+++ b/pkgs/development/python-modules/commonmark/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k, glibcLocales, future }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  glibcLocales,
+  future,
+}:
 
 buildPythonPackage rec {
   pname = "commonmark";
@@ -17,7 +24,7 @@ buildPythonPackage rec {
   # UnicodeEncodeError on Python 2
   doCheck = isPy3k;
 
-  nativeCheckInputs = [  glibcLocales ];
+  nativeCheckInputs = [ glibcLocales ];
   propagatedBuildInputs = [ future ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/compiledb/default.nix b/pkgs/development/python-modules/compiledb/default.nix
index a97db47ffdb74..9843654812853 100644
--- a/pkgs/development/python-modules/compiledb/default.nix
+++ b/pkgs/development/python-modules/compiledb/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest
-, bashlex
-, click
-, shutilwhich
-, gcc
-, coreutils
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
+  bashlex,
+  click,
+  shutilwhich,
+  gcc,
+  coreutils,
 }:
 
 buildPythonPackage rec {
@@ -27,8 +28,16 @@ buildPythonPackage rec {
                       --replace /bin/echo ${coreutils}/bin/echo
   '';
 
-  nativeCheckInputs = [ pytest gcc coreutils ];
-  propagatedBuildInputs = [ click bashlex shutilwhich ];
+  nativeCheckInputs = [
+    pytest
+    gcc
+    coreutils
+  ];
+  propagatedBuildInputs = [
+    click
+    bashlex
+    shutilwhich
+  ];
 
   checkPhase = ''
     pytest
diff --git a/pkgs/development/python-modules/complycube/default.nix b/pkgs/development/python-modules/complycube/default.nix
index ee99ae8d28bd3..2ad68d938682d 100644
--- a/pkgs/development/python-modules/complycube/default.nix
+++ b/pkgs/development/python-modules/complycube/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyhumps
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyhumps,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -17,18 +18,14 @@ buildPythonPackage rec {
     hash = "sha256-hetcn5RX582CRVmtG5dAvr+NXD+7NKJjaqgOo8LlpqM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     pyhumps
     requests
   ];
 
-  pythonImportsCheck = [
-    "complycube"
-  ];
+  pythonImportsCheck = [ "complycube" ];
 
   meta = {
     homepage = "https://complycube.com";
diff --git a/pkgs/development/python-modules/compreffor/default.nix b/pkgs/development/python-modules/compreffor/default.nix
index 9ab5590e4e3b9..76cd8caa1a9ad 100644
--- a/pkgs/development/python-modules/compreffor/default.nix
+++ b/pkgs/development/python-modules/compreffor/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchpatch
-, fetchPypi
-, setuptools-scm
-, fonttools
-, pytestCheckHook
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchpatch,
+  fetchPypi,
+  setuptools-scm,
+  fonttools,
+  pytestCheckHook,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -34,26 +35,20 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    fonttools
-  ];
+  propagatedBuildInputs = [ fonttools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Tests cannot seem to open the cpython module.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "compreffor"
-  ];
+  pythonImportsCheck = [ "compreffor" ];
 
   meta = with lib; {
     description = "CFF table subroutinizer for FontTools";
     mainProgram = "compreffor";
     homepage = "https://github.com/googlefonts/compreffor";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/compressai/default.nix b/pkgs/development/python-modules/compressai/default.nix
index 47487a6f633f4..4848df28167f5 100644
--- a/pkgs/development/python-modules/compressai/default.nix
+++ b/pkgs/development/python-modules/compressai/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pybind11
-, setuptools
-, wheel
-, numpy
-, matplotlib
-, pytorch-msssim
-, scipy
-, torch
-, torchvision
-, ipywidgets
-, jupyter
-, plotly
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pybind11,
+  setuptools,
+  wheel,
+  numpy,
+  matplotlib,
+  pytorch-msssim,
+  scipy,
+  torch,
+  torchvision,
+  ipywidgets,
+  jupyter,
+  plotly,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -81,7 +82,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A PyTorch library and evaluation platform for end-to-end compression research";
+    description = "PyTorch library and evaluation platform for end-to-end compression research";
     homepage = "https://github.com/InterDigitalInc/CompressAI";
     license = licenses.bsd3Clear;
     maintainers = with maintainers; [ GaetanLepage ];
diff --git a/pkgs/development/python-modules/compressed-rtf/default.nix b/pkgs/development/python-modules/compressed-rtf/default.nix
index 2f149d1aac1fb..7788fe065635f 100644
--- a/pkgs/development/python-modules/compressed-rtf/default.nix
+++ b/pkgs/development/python-modules/compressed-rtf/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-ivvND+cOCAmRyO8yL0+WhFY/2OkrJ+E/o4xWWd7ivHA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "compressed_rtf"
-  ];
+  pythonImportsCheck = [ "compressed_rtf" ];
 
-  pytestFlagsArray = [
-    "tests/tests.py"
-  ];
+  pytestFlagsArray = [ "tests/tests.py" ];
 
   meta = with lib; {
     description = "Compressed Rich Text Format (RTF) compression and decompression";
diff --git a/pkgs/development/python-modules/concurrent-log-handler/default.nix b/pkgs/development/python-modules/concurrent-log-handler/default.nix
index 53586d9bb0c8a..384beaff25dbb 100644
--- a/pkgs/development/python-modules/concurrent-log-handler/default.nix
+++ b/pkgs/development/python-modules/concurrent-log-handler/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatchling
-, portalocker
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  portalocker,
 }:
 
 buildPythonPackage rec {
@@ -16,17 +17,11 @@ buildPythonPackage rec {
     hash = "sha256-HixvAhQU4hTT2sZhB4lIJ6PnjbYwGDBKTynlW6VJrCI=";
   };
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  dependencies = [
-    portalocker
-  ];
+  dependencies = [ portalocker ];
 
-  pythonImportsCheck = [
-    "concurrent_log_handler"
-  ];
+  pythonImportsCheck = [ "concurrent_log_handler" ];
 
   doCheck = false; # upstream has no tests
 
diff --git a/pkgs/development/python-modules/conda-libmamba-solver/default.nix b/pkgs/development/python-modules/conda-libmamba-solver/default.nix
index 050b99fe83b05..c2038f77e1bb4 100644
--- a/pkgs/development/python-modules/conda-libmamba-solver/default.nix
+++ b/pkgs/development/python-modules/conda-libmamba-solver/default.nix
@@ -1,7 +1,6 @@
 {
   lib,
   buildPythonPackage,
-  pythonRelaxDepsHook,
   fetchFromGitHub,
   libmambapy,
   hatchling,
@@ -10,18 +9,17 @@
 }:
 buildPythonPackage rec {
   pname = "conda-libmamba-solver";
-  version = "24.1.0";
+  version = "24.7.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     inherit pname version;
     owner = "conda";
     repo = "conda-libmamba-solver";
-    rev = version;
-    hash = "sha256-vsUYrDVNMKHd3mlaAFYCP4uPQ9HxeKsose5O8InaMcE=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-HBbApS6hyIbRyxOpOwbC1+IalIYk17rYRo6HLcwKKW4=";
   };
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   build-system = [
     hatchling
@@ -39,7 +37,7 @@ buildPythonPackage rec {
   pythonRemoveDeps = [ "conda" ];
 
   meta = {
-    description = "The libmamba based solver for conda.";
+    description = "Libmamba based solver for conda";
     homepage = "https://github.com/conda/conda-libmamba-solver";
     license = lib.licenses.bsd3;
     maintainers = [ lib.maintainers.ericthemagician ];
diff --git a/pkgs/development/python-modules/conda-package-handling/default.nix b/pkgs/development/python-modules/conda-package-handling/default.nix
index 59736724577bf..75ccc6039fff3 100644
--- a/pkgs/development/python-modules/conda-package-handling/default.nix
+++ b/pkgs/development/python-modules/conda-package-handling/default.nix
@@ -7,12 +7,12 @@
 }:
 buildPythonPackage rec {
   pname = "conda-package-handling";
-  version = "2.2.0";
+  version = "2.3.0";
   src = fetchFromGitHub {
     owner = "conda";
     repo = "conda-package-handling";
-    rev = version;
-    hash = "sha256-WeGfmT6lLwcwhheLBPMFcVMudY+zPsvTuXuOsiEAorQ=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Mo3qCNA/NtVtrsJmJ96ST6GMt2basSh5KlFBkrJ4pGE=";
   };
 
   pyproject = true;
diff --git a/pkgs/development/python-modules/conda-package-streaming/default.nix b/pkgs/development/python-modules/conda-package-streaming/default.nix
index e849195f8461c..462660cce15fe 100644
--- a/pkgs/development/python-modules/conda-package-streaming/default.nix
+++ b/pkgs/development/python-modules/conda-package-streaming/default.nix
@@ -8,14 +8,14 @@
 }:
 buildPythonPackage rec {
   pname = "conda-package-streaming";
-  version = "0.9.0";
+  version = "0.10.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "conda";
     repo = "conda-package-streaming";
-    rev = "v${version}";
-    hash = "sha256-UTql2M+9eFDuHOwLYYKJ751wEcOfLJYzfU6+WF8Je2g=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-3TSjVISnUTReyKtt58RXCD30VodhiDDfJssM3PkP5Yk=";
   };
 
   build-system = [ flit-core ];
@@ -27,7 +27,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "conda_package_streaming" ];
 
   meta = {
-    description = "An efficient library to read from new and old format .conda and .tar.bz2 conda packages.";
+    description = "Efficient library to read from new and old format .conda and .tar.bz2 conda packages";
     homepage = "https://github.com/conda/conda-package-streaming";
     license = lib.licenses.bsd3;
     maintainers = [ lib.maintainers.ericthemagician ];
diff --git a/pkgs/development/python-modules/conda/default.nix b/pkgs/development/python-modules/conda/default.nix
index e2ec8bd2d46ef..a02e75987d76f 100644
--- a/pkgs/development/python-modules/conda/default.nix
+++ b/pkgs/development/python-modules/conda/default.nix
@@ -1,7 +1,6 @@
 {
   lib,
   buildPythonPackage,
-  pythonRelaxDepsHook,
   hostPlatform,
   fetchFromGitHub,
   # build dependencies
@@ -12,6 +11,7 @@
   conda-libmamba-solver,
   conda-package-handling,
   distro,
+  frozendict,
   jsonpatch,
   packaging,
   platformdirs,
@@ -27,18 +27,17 @@
 }:
 buildPythonPackage rec {
   pname = "conda";
-  version = "24.1.2";
+  version = "24.7.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     inherit pname version;
     owner = "conda";
     repo = "conda";
-    rev = version;
-    hash = "sha256-L/Y7Bb3R5YqXbjTN4CRPFnkgymVLrxuFmjVzpvt28dE=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-e+C+tSUdSGyotuZzkOuV0e0hOj+MZRuq1fHzsu3LERQ=";
   };
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   build-system = [
     hatchling
@@ -50,6 +49,7 @@ buildPythonPackage rec {
     conda-libmamba-solver
     conda-package-handling
     distro
+    frozendict
     jsonpatch
     packaging
     platformdirs
diff --git a/pkgs/development/python-modules/confection/default.nix b/pkgs/development/python-modules/confection/default.nix
index 2e7b035de4250..7f255c549ae41 100644
--- a/pkgs/development/python-modules/confection/default.nix
+++ b/pkgs/development/python-modules/confection/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pydantic
-, pytestCheckHook
-, pythonOlder
-, srsly
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pydantic,
+  pytestCheckHook,
+  pythonOlder,
+  srsly,
 }:
 
 buildPythonPackage rec {
   pname = "confection";
-  version = "0.1.4";
+  version = "0.1.5";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -18,7 +19,7 @@ buildPythonPackage rec {
     owner = "explosion";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-PWtxLcnPd7V4yeHfOl1kYPr5UeqkYCfzGE/DoL94tq0=";
+    hash = "sha256-1XIo9Hg4whYS1AkFeX8nVnpv+IvnpmyydHYdVYS0xZc=";
   };
 
   propagatedBuildInputs = [
@@ -26,18 +27,14 @@ buildPythonPackage rec {
     srsly
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "confection"
-  ];
+  pythonImportsCheck = [ "confection" ];
 
   meta = with lib; {
     description = "Library that offers a configuration system";
     homepage = "https://github.com/explosion/confection";
-    changelog  = "https://github.com/explosion/confection/releases/tag/v${version}";
+    changelog = "https://github.com/explosion/confection/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/configargparse/default.nix b/pkgs/development/python-modules/configargparse/default.nix
index 489e6a34144c2..59f89df05231d 100644
--- a/pkgs/development/python-modules/configargparse/default.nix
+++ b/pkgs/development/python-modules/configargparse/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pytestCheckHook
-, pyyaml
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  pytestCheckHook,
+  pyyaml,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
   };
 
   passthru.optional-dependencies = {
-    yaml = [
-      pyyaml
-    ];
+    yaml = [ pyyaml ];
   };
 
   nativeCheckInputs = [
@@ -32,12 +31,10 @@ buildPythonPackage rec {
     mock
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "configargparse"
-  ];
+  pythonImportsCheck = [ "configargparse" ];
 
   meta = with lib; {
-    description = "A drop-in replacement for argparse";
+    description = "Drop-in replacement for argparse";
     homepage = "https://github.com/bw2/ConfigArgParse";
     changelog = "https://github.com/bw2/ConfigArgParse/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/configclass/default.nix b/pkgs/development/python-modules/configclass/default.nix
index bb56f3c745da6..8ddca65737d6d 100644
--- a/pkgs/development/python-modules/configclass/default.nix
+++ b/pkgs/development/python-modules/configclass/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, mergedict
-, pytestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  mergedict,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,7 +23,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "configclass" ];
 
   meta = with lib; {
-    description = "A Python to class to hold configuration values";
+    description = "Python to class to hold configuration values";
     homepage = "https://github.com/schettino72/configclass/";
     license = licenses.mit;
     maintainers = with maintainers; [ onny ];
diff --git a/pkgs/development/python-modules/confight/default.nix b/pkgs/development/python-modules/confight/default.nix
index 718b0614b1113..d3e627b79bb21 100644
--- a/pkgs/development/python-modules/confight/default.nix
+++ b/pkgs/development/python-modules/confight/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, toml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  toml,
 }:
 
 buildPythonPackage rec {
@@ -15,13 +16,9 @@ buildPythonPackage rec {
     hash = "sha256-iodoexnh9tG4dgkjDXCUzWRFDhRlJ3HRgaNhxG2lwPY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    toml
-  ];
+  propagatedBuildInputs = [ toml ];
 
   pythonImportsCheck = [ "confight" ];
 
diff --git a/pkgs/development/python-modules/configobj/default.nix b/pkgs/development/python-modules/configobj/default.nix
index 932e434d923d1..02228f5f2fc03 100644
--- a/pkgs/development/python-modules/configobj/default.nix
+++ b/pkgs/development/python-modules/configobj/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pytestCheckHook
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -21,27 +22,19 @@ buildPythonPackage rec {
     hash = "sha256-t3Q0FEBibkAM5PAG4fjXwNH/71RqSSDj/Mn27ri0iDU=";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  checkInputs = [
-    mock
-  ];
+  checkInputs = [ mock ];
 
-  pythonImportsCheck = [
-    "configobj"
-  ];
+  pythonImportsCheck = [ "configobj" ];
 
   meta = with lib; {
     description = "Config file reading, writing and validation";
     homepage = "https://github.com/DiffSK/configobj";
     changelog = "https://github.com/DiffSK/configobj/blob/v${version}/CHANGES.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/configparser/default.nix b/pkgs/development/python-modules/configparser/default.nix
index 4495401250a22..6e6e38f0b3af8 100644
--- a/pkgs/development/python-modules/configparser/default.nix
+++ b/pkgs/development/python-modules/configparser/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, setuptools
-, setuptools-scm
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "configparser";
-  version = "6.0.1";
+  version = "7.0.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "jaraco";
     repo = "configparser";
     rev = "refs/tags/v${version}";
-    hash = "sha256-r+poK+knBQi48Z1VrNFqUt9Qm9iGERAOTFa4bKfXi0g=";
+    hash = "sha256-OqlmAmBt4x+cJtK89dxsU7+Vn9wmGR9Djc59/ewHSxs=";
   };
 
   nativeBuildInputs = [
@@ -27,13 +28,13 @@ buildPythonPackage rec {
   nativeCheckInputs = [ pytestCheckHook ];
 
   preConfigure = ''
-    export LC_ALL=${if stdenv.isDarwin then "en_US" else "C"}.UTF-8
+    export LC_ALL=${if stdenv.hostPlatform.isDarwin then "en_US" else "C"}.UTF-8
   '';
 
   meta = with lib; {
-    description = "Updated configparser from Python 3.7 for Python 2.6+.";
+    description = "Updated configparser from Python 3.7 for Python 2.6+";
     homepage = "https://github.com/jaraco/configparser";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/configshell/default.nix b/pkgs/development/python-modules/configshell/default.nix
index 922b43ec729cd..c2eabec513c23 100644
--- a/pkgs/development/python-modules/configshell/default.nix
+++ b/pkgs/development/python-modules/configshell/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pyparsing
-, six
-, urwid
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pyparsing,
+  six,
+  urwid,
 }:
 
 buildPythonPackage rec {
@@ -27,14 +28,12 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "configshell"
-  ];
+  pythonImportsCheck = [ "configshell" ];
 
   meta = with lib; {
     description = "Python library for building configuration shells";
     homepage = "https://github.com/open-iscsi/configshell-fb";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/configupdater/default.nix b/pkgs/development/python-modules/configupdater/default.nix
index aed19b526715f..9e052140d48fc 100644
--- a/pkgs/development/python-modules/configupdater/default.nix
+++ b/pkgs/development/python-modules/configupdater/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -25,14 +26,15 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "configupdater" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Parser like ConfigParser but for updating configuration files";
     homepage = "https://configupdater.readthedocs.io/en/latest/";
-    license = with licenses; [ mit psfl ];
+    license = with licenses; [
+      mit
+      psfl
+    ];
     maintainers = with maintainers; [ ris ];
   };
 }
diff --git a/pkgs/development/python-modules/confluent-kafka/default.nix b/pkgs/development/python-modules/confluent-kafka/default.nix
index b610f1d405909..95cf2c7bf0b69 100644
--- a/pkgs/development/python-modules/confluent-kafka/default.nix
+++ b/pkgs/development/python-modules/confluent-kafka/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, avro
-, buildPythonPackage
-, fastavro
-, fetchFromGitHub
-, jsonschema
-, protobuf
-, pyflakes
-, pyrsistent
-, pytestCheckHook
-, pythonOlder
-, rdkafka
-, requests
-, requests-mock
+{
+  lib,
+  avro,
+  buildPythonPackage,
+  fastavro,
+  fetchFromGitHub,
+  jsonschema,
+  protobuf,
+  pyflakes,
+  pyrsistent,
+  pytestCheckHook,
+  pythonOlder,
+  rdkafka,
+  requests,
+  requests-mock,
 }:
 
 buildPythonPackage rec {
   pname = "confluent-kafka";
-  version = "2.3.0";
+  version = "2.4.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -25,16 +26,12 @@ buildPythonPackage rec {
     owner = "confluentinc";
     repo = "confluent-kafka-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-sPlLlp0niR45lQPCvVd6NPtGI1cFbmPeQpIF1RnnY0I=";
+    hash = "sha256-JlPWh46WjY4GHRKtamB+qigVvVzvbRagbigyCol6lfg=";
   };
 
-  buildInputs = [
-    rdkafka
-  ];
+  buildInputs = [ rdkafka ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   passthru.optional-dependencies = {
     avro = [
@@ -45,9 +42,7 @@ buildPythonPackage rec {
       jsonschema
       pyrsistent
     ];
-    protobuf = [
-      protobuf
-    ];
+    protobuf = [ protobuf ];
   };
 
   nativeCheckInputs = [
@@ -56,9 +51,7 @@ buildPythonPackage rec {
     requests-mock
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "confluent_kafka"
-  ];
+  pythonImportsCheck = [ "confluent_kafka" ];
 
   disabledTestPaths = [
     "tests/integration/"
diff --git a/pkgs/development/python-modules/confusable-homoglyphs/default.nix b/pkgs/development/python-modules/confusable-homoglyphs/default.nix
new file mode 100644
index 0000000000000..109bf574c11e0
--- /dev/null
+++ b/pkgs/development/python-modules/confusable-homoglyphs/default.nix
@@ -0,0 +1,54 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  click,
+}:
+
+let
+  libName = "confusable-homoglyphs";
+  snakeLibName = builtins.replaceStrings [ "-" ] [ "_" ] libName;
+in
+buildPythonPackage rec {
+  pname = libName;
+  version = "3.3.1";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit version;
+    pname = snakeLibName;
+    hash = "sha256-uZUAHJsuG0zqDPXzhAp8eRiKjLutBT1pNXK9jBwexGA=";
+  };
+
+  build-system = [ setuptools ];
+
+  disabled = pythonOlder "3.7";
+
+  optional-dependencies = {
+    cli = [ click ];
+  };
+
+  pythonImportsCheck = [ snakeLibName ];
+
+  nativeCheckInputs = [ pytestCheckHook ] ++ optional-dependencies.cli;
+
+  disabledTests = [
+    "test_generate_categories" # touches network
+    "test_generate_confusables" # touches network
+  ];
+
+  meta =
+    let
+      inherit (lib) licenses maintainers;
+    in
+    {
+      description = "Detect confusable usage of unicode homoglyphs, prevent homograph attacks";
+      homepage = "https://sr.ht/~valhalla/confusable_homoglyphs/";
+      changelog = "https://confusable-homoglyphs.readthedocs.io/en/latest/history.html";
+      license = licenses.mit;
+      maintainers = with maintainers; [ ajaxbits ];
+    };
+}
diff --git a/pkgs/development/python-modules/confuse/default.nix b/pkgs/development/python-modules/confuse/default.nix
index a3a979f68f872..59ba5a4b3faf8 100644
--- a/pkgs/development/python-modules/confuse/default.nix
+++ b/pkgs/development/python-modules/confuse/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pyyaml
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pyyaml,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-zdH5DNXnuAfYTuaG9EIKiXL2EbLSfzYjPSkC3G06bU8=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    pyyaml
-  ];
+  propagatedBuildInputs = [ pyyaml ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "confuse"
-  ];
+  pythonImportsCheck = [ "confuse" ];
 
   meta = with lib; {
     description = "Python configuration library for Python that uses YAML";
diff --git a/pkgs/development/python-modules/connect-box/default.nix b/pkgs/development/python-modules/connect-box/default.nix
index 34ca8dbb01df5..9a3a1519db78f 100644
--- a/pkgs/development/python-modules/connect-box/default.nix
+++ b/pkgs/development/python-modules/connect-box/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiohttp
-, attrs
-, buildPythonPackage
-, defusedxml
-, fetchFromGitHub
-, pythonOlder
-, pytest-asyncio
-, pytestCheckHook
-, setuptools
-, pytest-vcr
-, syrupy
+{
+  lib,
+  aiohttp,
+  attrs,
+  buildPythonPackage,
+  defusedxml,
+  fetchFromGitHub,
+  pythonOlder,
+  pytest-asyncio,
+  pytestCheckHook,
+  setuptools,
+  pytest-vcr,
+  syrupy,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-zUvZRnxVzg9izvUbp7QVcyu6Bw3dUXHOr0kOQRWEZVc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -43,13 +42,9 @@ buildPythonPackage rec {
     syrupy
   ];
 
-  pythonImportsCheck = [
-    "connect_box"
-  ];
+  pythonImportsCheck = [ "connect_box" ];
 
-  pytestFlagsArray = [
-    "--vcr-record=none"
-  ];
+  pytestFlagsArray = [ "--vcr-record=none" ];
 
   meta = with lib; {
     description = "Interact with a Compal CH7465LG cable modem/router";
diff --git a/pkgs/development/python-modules/connection-pool/default.nix b/pkgs/development/python-modules/connection-pool/default.nix
index c6785a183f5e1..b9767c7513bab 100644
--- a/pkgs/development/python-modules/connection-pool/default.nix
+++ b/pkgs/development/python-modules/connection-pool/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/connexion/default.nix b/pkgs/development/python-modules/connexion/default.nix
index 46524a80b43c1..0e599c2945c30 100644
--- a/pkgs/development/python-modules/connexion/default.nix
+++ b/pkgs/development/python-modules/connexion/default.nix
@@ -1,39 +1,40 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
 
-# build-system
-, poetry-core
+  # build-system
+  poetry-core,
 
-# dependencies
-, asgiref
-, httpx
-, inflection
-, jsonschema
-, jinja2
-, python-multipart
-, pyyaml
-, requests
-, starlette
-, typing-extensions
-, werkzeug
+  # dependencies
+  asgiref,
+  httpx,
+  inflection,
+  jsonschema,
+  jinja2,
+  python-multipart,
+  pyyaml,
+  requests,
+  starlette,
+  typing-extensions,
+  werkzeug,
 
-# optional-dependencies
-, a2wsgi
-, flask
-, swagger-ui-bundle
-, uvicorn
+  # optional-dependencies
+  a2wsgi,
+  flask,
+  swagger-ui-bundle,
+  uvicorn,
 
-# tests
-, pytest-aiohttp
-, pytestCheckHook
-, testfixtures
+  # tests
+  pytest-aiohttp,
+  pytestCheckHook,
+  testfixtures,
 }:
 
 buildPythonPackage rec {
   pname = "connexion";
-  version = "3.0.6";
+  version = "3.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -42,12 +43,10 @@ buildPythonPackage rec {
     owner = "spec-first";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-0EaJwxT80qLqlrxYk4H7Pf/UKq2pA/8HGL8OiqNA/2s=";
+    hash = "sha256-rngQDU9kXw/Z+Al0SCVnWN8xnphueTtZ0+xPBR5MbEM=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     asgiref
@@ -68,12 +67,8 @@ buildPythonPackage rec {
       a2wsgi
       flask
     ];
-    swagger-ui = [
-      swagger-ui-bundle
-    ];
-    uvicorn = [
-      uvicorn
-    ];
+    swagger-ui = [ swagger-ui-bundle ];
+    uvicorn = [ uvicorn ];
   };
 
   nativeCheckInputs = [
@@ -82,9 +77,7 @@ buildPythonPackage rec {
     testfixtures
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "connexion"
-  ];
+  pythonImportsCheck = [ "connexion" ];
 
   disabledTests = [
     # AssertionError
@@ -102,6 +95,5 @@ buildPythonPackage rec {
     homepage = "https://github.com/spec-first/connexion";
     changelog = "https://github.com/spec-first/connexion/releases/tag/${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ elohmeier ];
   };
 }
diff --git a/pkgs/development/python-modules/connio/default.nix b/pkgs/development/python-modules/connio/default.nix
index 14574ab9da331..9e8fb88dbac0c 100644
--- a/pkgs/development/python-modules/connio/default.nix
+++ b/pkgs/development/python-modules/connio/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, serialio
-, sockio
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  serialio,
+  sockio,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +29,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "connio"
-  ];
+  pythonImportsCheck = [ "connio" ];
 
   meta = with lib; {
     description = "Library for concurrency agnostic communication";
diff --git a/pkgs/development/python-modules/cons/default.nix b/pkgs/development/python-modules/cons/default.nix
index d08f5deb3c96d..a1a2b3ad856df 100644
--- a/pkgs/development/python-modules/cons/default.nix
+++ b/pkgs/development/python-modules/cons/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, logical-unification
-, py
-, pytestCheckHook
-, pytest-html
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  logical-unification,
+  py,
+  pytestCheckHook,
+  pytest-html,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-XssERKiv4A8x7dZhLeFSciN6RCEfGs0or3PAQiYSPII=";
   };
 
-  propagatedBuildInputs = [
-    logical-unification
-  ];
+  propagatedBuildInputs = [ logical-unification ];
 
   nativeCheckInputs = [
     py
@@ -40,7 +39,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "cons" ];
 
   meta = with lib; {
-    description = "An implementation of Lisp/Scheme-like cons in Python";
+    description = "Implementation of Lisp/Scheme-like cons in Python";
     homepage = "https://github.com/pythological/python-cons";
     changelog = "https://github.com/pythological/python-cons/releases/tag/v${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/development/python-modules/consolekit/default.nix b/pkgs/development/python-modules/consolekit/default.nix
new file mode 100644
index 0000000000000..45f3caf7d22af
--- /dev/null
+++ b/pkgs/development/python-modules/consolekit/default.nix
@@ -0,0 +1,42 @@
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  flit-core,
+  click,
+  colorama,
+  deprecation-alias,
+  domdf-python-tools,
+  mistletoe,
+  typing-extensions,
+}:
+buildPythonPackage rec {
+  pname = "consolekit";
+  version = "1.7.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-Dqi84qeUGirw4z1ay3burLeHESeNK2DDPtPnpJzD/Qw=A";
+  };
+
+  build-system = [ flit-core ];
+
+  dependencies = [
+    click
+    colorama
+    deprecation-alias
+    domdf-python-tools
+    mistletoe
+    typing-extensions
+  ];
+
+  nativeCheckInputs = [ ];
+
+  meta = {
+    description = "Additional utilities for click.";
+    homepage = "https://pypi.org/project/consolekit";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tyberius-prime ];
+  };
+}
diff --git a/pkgs/development/python-modules/consonance/default.nix b/pkgs/development/python-modules/consonance/default.nix
index e13665cd5dc3e..dca06fcf55d64 100644
--- a/pkgs/development/python-modules/consonance/default.nix
+++ b/pkgs/development/python-modules/consonance/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, dissononce
-, python-axolotl-curve25519
-, transitions
-, protobuf
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  dissononce,
+  python-axolotl-curve25519,
+  transitions,
+  protobuf,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -40,22 +41,16 @@ buildPythonPackage rec {
     protobuf
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests/test_handshakes_offline.py"
-  ];
+  pytestFlagsArray = [ "tests/test_handshakes_offline.py" ];
 
-  pythonImportsCheck = [
-    "consonance"
-  ];
+  pythonImportsCheck = [ "consonance" ];
 
   meta = with lib; {
     description = "WhatsApp's handshake implementation using Noise Protocol";
     homepage = "https://github.com/tgalal/consonance";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/constantly/default.nix b/pkgs/development/python-modules/constantly/default.nix
index a4bce3f399e46..89c328325499b 100644
--- a/pkgs/development/python-modules/constantly/default.nix
+++ b/pkgs/development/python-modules/constantly/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# build-system
-, setuptools
-, versioneer
-
-# tests
-, twisted
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  setuptools,
+  versioneer,
+
+  # tests
+  twisted,
 }:
 
 let
@@ -34,9 +35,7 @@ let
     # would create dependency loop with twisted
     doCheck = false;
 
-    nativeCheckInputs = [
-      twisted
-    ];
+    nativeCheckInputs = [ twisted ];
 
     checkPhase = ''
       runHook preCheck
@@ -44,9 +43,7 @@ let
       runHook postCheck
     '';
 
-    pythonImportsCheck = [
-      "constantly"
-    ];
+    pythonImportsCheck = [ "constantly" ];
 
     passthru.tests.constantly = self.overridePythonAttrs { doCheck = true; };
 
@@ -54,7 +51,7 @@ let
       description = "Module for symbolic constant support";
       homepage = "https://github.com/twisted/constantly";
       license = licenses.mit;
-      maintainers =  with maintainers; [ ];
+      maintainers = [ ];
     };
   };
 in
diff --git a/pkgs/development/python-modules/construct-classes/default.nix b/pkgs/development/python-modules/construct-classes/default.nix
index 386c386ef42f1..a89f8f030a0e1 100644
--- a/pkgs/development/python-modules/construct-classes/default.nix
+++ b/pkgs/development/python-modules/construct-classes/default.nix
@@ -1,39 +1,35 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, construct
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  construct,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
-  pname   = "construct-classes";
+  pname = "construct-classes";
   version = "0.1.2";
   format = "pyproject";
 
   # no tests in PyPI tarball
   src = fetchFromGitHub {
-    owner  = "matejcik";
-    repo   = "construct-classes";
-    rev    = "v${version}";
+    owner = "matejcik";
+    repo = "construct-classes";
+    rev = "v${version}";
     hash = "sha256-l4sVacKTuQbhXCw2lVHCl1OzpCiKmEAm9nSQ8pxFuTo=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    construct
-  ];
+  propagatedBuildInputs = [ construct ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "construct_classes" ];
 
   meta = with lib; {
-    description = "Parse your binary data into dataclasses.";
+    description = "Parse your binary data into dataclasses";
     homepage = "https://github.com/matejcik/construct-classes";
     license = licenses.mit;
     maintainers = with maintainers; [ prusnak ];
diff --git a/pkgs/development/python-modules/construct-typing/default.nix b/pkgs/development/python-modules/construct-typing/default.nix
new file mode 100644
index 0000000000000..73123bed0f39f
--- /dev/null
+++ b/pkgs/development/python-modules/construct-typing/default.nix
@@ -0,0 +1,62 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  construct,
+  typing-extensions,
+  arrow,
+  cloudpickle,
+  numpy,
+  pytestCheckHook,
+  ruamel-yaml,
+}:
+
+buildPythonPackage rec {
+  pname = "construct-typing";
+  version = "0.6.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "timrid";
+    repo = "construct-typing";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-zXpxu+VUcepEoAPLQnSlMCZkt8fDsMCLS0HBKhaYD20=";
+  };
+
+  build-system = [ setuptools ];
+
+  pythonRelaxDeps = [ "construct" ];
+
+  dependencies = [
+    construct
+    typing-extensions
+  ];
+
+  pythonImportsCheck = [
+    "construct-stubs"
+    "construct_typed"
+  ];
+
+  nativeCheckInputs = [
+    arrow
+    cloudpickle
+    numpy
+    pytestCheckHook
+    ruamel-yaml
+  ];
+
+  disabledTests = [
+    # tests fail with construct>=2.10.70
+    "test_bitsinteger"
+    "test_bytesinteger"
+  ];
+
+  meta = {
+    changelog = "https://github.com/timrid/construct-typing/releases/tag/v${version}";
+    description = "Extension for the python package 'construct' that adds typing features";
+    homepage = "https://github.com/timrid/construct-typing";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/construct/default.nix b/pkgs/development/python-modules/construct/default.nix
index 917a6f4f95dba..daad048634b36 100644
--- a/pkgs/development/python-modules/construct/default.nix
+++ b/pkgs/development/python-modules/construct/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, stdenv
-, arrow
-, buildPythonPackage
-, cloudpickle
-, cryptography
-, fetchFromGitHub
-, lz4
-, numpy
-, pytestCheckHook
-, pythonOlder
-, ruamel-yaml
-, setuptools
+{
+  lib,
+  stdenv,
+  arrow,
+  buildPythonPackage,
+  cloudpickle,
+  cryptography,
+  fetchFromGitHub,
+  lz4,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  ruamel-yaml,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     hash = "sha256-5otjjIyje0+z/Y/C2ivmu08PNm0oJcSSvZkQfGxHDuQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     # Not an explicit dependency, but it's imported by an entrypoint
@@ -50,15 +49,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "construct"
-  ];
+  pythonImportsCheck = [ "construct" ];
 
   disabledTests = [
     "test_benchmarks"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_multiprocessing"
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ "test_multiprocessing" ];
 
   meta = with lib; {
     description = "Powerful declarative parser (and builder) for binary data";
diff --git a/pkgs/development/python-modules/consul/default.nix b/pkgs/development/python-modules/consul/default.nix
index a3b92ee725549..56d95aa87d905 100644
--- a/pkgs/development/python-modules/consul/default.nix
+++ b/pkgs/development/python-modules/consul/default.nix
@@ -1,5 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi
-, requests, six, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  six,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "python-consul";
@@ -10,7 +16,11 @@ buildPythonPackage rec {
     sha256 = "168f1fa53948047effe4f14d53fc1dab50192e2a2cf7855703f126f469ea11f4";
   };
 
-  buildInputs = [ requests six pytest ];
+  buildInputs = [
+    requests
+    six
+    pytest
+  ];
 
   # No tests distributed. https://github.com/cablehead/python-consul/issues/133
   doCheck = false;
diff --git a/pkgs/development/python-modules/container-inspector/default.nix b/pkgs/development/python-modules/container-inspector/default.nix
index 4a3f6918b9e8b..6d05455ae439c 100644
--- a/pkgs/development/python-modules/container-inspector/default.nix
+++ b/pkgs/development/python-modules/container-inspector/default.nix
@@ -1,40 +1,33 @@
-{ lib
-, attrs
-, buildPythonPackage
-, click
-, commoncode
-, dockerfile-parse
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  click,
+  commoncode,
+  dockerfile-parse,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "container-inspector";
-  version = "32.0.1";
-  format = "setuptools";
+  version = "33.0.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "nexB";
-    repo = pname;
+    repo = "container-inspector";
     rev = "refs/tags/v${version}";
-    hash = "sha256-J9glnfs6l36/IQoIvE8a+Cw4B8x/6r5UeAU8+T/OiQg=";
+    hash = "sha256-bXJ4UIDVhiU0DurEeRiyLlSUrNRgwoMqAxXxGb/CcJs=";
   };
 
   dontConfigure = true;
 
-  postPatch = ''
-    # PEP440 support was removed in newer setuptools, https://github.com/nexB/container-inspector/pull/51
-    substituteInPlace setup.cfg \
-      --replace ">=3.7.*" ">=3.7"
-  '';
-
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     attrs
@@ -43,13 +36,9 @@ buildPythonPackage rec {
     commoncode
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "container_inspector"
-  ];
+  pythonImportsCheck = [ "container_inspector" ];
 
   meta = with lib; {
     description = "Suite of analysis utilities and command line tools for container images";
diff --git a/pkgs/development/python-modules/contexter/default.nix b/pkgs/development/python-modules/contexter/default.nix
index da96829d482ac..5ca090e91901b 100644
--- a/pkgs/development/python-modules/contexter/default.nix
+++ b/pkgs/development/python-modules/contexter/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "contexter";
@@ -10,6 +14,5 @@ buildPythonPackage rec {
     sha256 = "c730890b1a915051414a6350d8ea1cddca7d01d8f756badedb30b9bf305ea0a8";
   };
 
-  meta = with lib; {
-  };
+  meta = with lib; { };
 }
diff --git a/pkgs/development/python-modules/contextlib2/default.nix b/pkgs/development/python-modules/contextlib2/default.nix
index 19c26dbdd21cb..01edc594a594b 100644
--- a/pkgs/development/python-modules/contextlib2/default.nix
+++ b/pkgs/development/python-modules/contextlib2/default.nix
@@ -1,36 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, pythonAtLeast
-, pythonOlder
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
+  unittestCheckHook,
 }:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "contextlib2";
-  version = "21.6.0";
-  format = "setuptools";
+  version = "21.6.0-unstable-2024-05-23";
+  pyproject = true;
 
-  # Python 3.11 not currently supported
-  # https://github.com/jazzband/contextlib2/issues/43
-  disabled = pythonOlder "3.6" || pythonAtLeast "3.11";
+  disabled = pythonOlder "3.6";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-qx4r/h0B2Wjht+jZAjvFHvNQm7ohe7cwzuOCfh7oKGk=";
+  src = fetchFromGitHub {
+    owner = "jazzband";
+    repo = "contextlib2";
+    rev = "f64cf04df8a1f6a32ce2095192b4638d229ff25e";
+    hash = "sha256-HX9N8G8jl6cpEwdJ80pDcoo4osTO/f8fz5sNcY/R1Nk=";
   };
 
+  build-system = [ setuptools ];
+
   nativeCheckInputs = [ unittestCheckHook ];
 
-  pythonImportsCheck = [
-    "contextlib2"
-  ];
+  pythonImportsCheck = [ "contextlib2" ];
 
-  meta = with lib; {
+  meta = {
     description = "Backports and enhancements for the contextlib module";
     homepage = "https://contextlib2.readthedocs.org/";
-    license = licenses.psfl;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.psfl;
+    maintainers = with lib.maintainers; [ sigmanificient ];
   };
 }
diff --git a/pkgs/development/python-modules/contexttimer/default.nix b/pkgs/development/python-modules/contexttimer/default.nix
index f908783fb0b63..1cba5807e96de 100644
--- a/pkgs/development/python-modules/contexttimer/default.nix
+++ b/pkgs/development/python-modules/contexttimer/default.nix
@@ -1,9 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, fetchpatch
-, python
+{
+  lib,
+  buildPythonPackage,
+  pythonAtLeast,
+  fetchFromGitHub,
+  mock,
+  fetchpatch,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -11,6 +13,8 @@ buildPythonPackage rec {
   version = "unstable-2019-03-30";
   format = "setuptools";
 
+  disabled = pythonAtLeast "3.12";
+
   src = fetchFromGitHub {
     owner = "brouberol";
     repo = "contexttimer";
@@ -19,7 +23,7 @@ buildPythonPackage rec {
   };
 
   patches = [
-  # https://github.com/brouberol/contexttimer/pull/16
+    # https://github.com/brouberol/contexttimer/pull/16
     (fetchpatch {
       url = "https://github.com/brouberol/contexttimer/commit/dd65871f3f25a523a47a74f2f5306c57048592b0.patch";
       hash = "sha256-vNBuFXvuvb6hWPzg4W4iyKbd4N+vofhxsKydEkc25E4=";
@@ -36,7 +40,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/brouberol/contexttimer";
-    description = "A timer as a context manager";
+    description = "Timer as a context manager";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ atila ];
   };
diff --git a/pkgs/development/python-modules/contourpy/default.nix b/pkgs/development/python-modules/contourpy/default.nix
index 5e12a4531b33c..4d668412f6745 100644
--- a/pkgs/development/python-modules/contourpy/default.nix
+++ b/pkgs/development/python-modules/contourpy/default.nix
@@ -1,79 +1,84 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build
-, meson
-, meson-python
-, ninja
-, pybind11
+  # build
+  meson,
+  meson-python,
+  ninja,
+  pybind11,
 
-# propagates
-, numpy
+  # propagates
+  numpy,
 
-# optionals
-, bokeh
-, chromedriver
-, selenium
+  # optionals
+  bokeh,
+  chromedriver,
+  selenium,
 
-# tests
-, matplotlib
-, pillow
-, pytestCheckHook
+  # tests
+  matplotlib,
+  pillow,
+  pytestCheckHook,
 }:
 
-let countourpy = buildPythonPackage rec {
-  pname = "contourpy";
-  version = "1.2.0";
-  format = "pyproject";
+let
+  contourpy = buildPythonPackage rec {
+    pname = "contourpy";
+    version = "1.2.1";
+    format = "pyproject";
 
-  disabled = pythonOlder "3.8";
+    disabled = pythonOlder "3.8";
 
-  src = fetchFromGitHub {
-    owner = "contourpy";
-    repo = "contourpy";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-5yZrIwwe9dL5vtdSJnOhY9X4BdK/cdEY4DkVVjCq1uw=";
-  };
+    src = fetchFromGitHub {
+      owner = "contourpy";
+      repo = "contourpy";
+      rev = "refs/tags/v${version}";
+      hash = "sha256-Qd6FC7SgFyC/BvOPWVkr2ZfKVMVAknLlidNRq3zcWU0=";
+    };
 
-  nativeBuildInputs = [
-    meson
-    meson-python
-    ninja
-    pybind11
-  ];
+    nativeBuildInputs = [
+      meson
+      meson-python
+      ninja
+      pybind11
+    ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+    propagatedBuildInputs = [ numpy ];
 
-  passthru.optional-depdendencies = {
-    bokeh = [ bokeh chromedriver selenium ];
-  };
+    passthru.optional-depdendencies = {
+      bokeh = [
+        bokeh
+        chromedriver
+        selenium
+      ];
+    };
 
-  doCheck = false; # infinite recursion with matplotlib, tests in passthru
+    doCheck = false; # infinite recursion with matplotlib, tests in passthru
 
-  nativeCheckInputs = [
-    matplotlib
-    pillow
-    pytestCheckHook
-  ];
+    nativeCheckInputs = [
+      matplotlib
+      pillow
+      pytestCheckHook
+    ];
 
-  passthru.tests = {
-    check = countourpy.overridePythonAttrs (_: { doCheck = true; });
-  };
+    passthru.tests = {
+      check = contourpy.overridePythonAttrs (_: {
+        doCheck = true;
+      });
+    };
 
-  pythonImportsCheck = [
-    "contourpy"
-  ];
+    pythonImportsCheck = [ "contourpy" ];
 
-  meta = with lib; {
-    changelog = "https://github.com/contourpy/contourpy/releases/tag/v${version}";
-    description = "Python library for calculating contours in 2D quadrilateral grids";
-    homepage = "https://github.com/contourpy/contourpy";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    meta = with lib; {
+      changelog = "https://github.com/contourpy/contourpy/releases/tag/v${version}";
+      description = "Python library for calculating contours in 2D quadrilateral grids";
+      homepage = "https://github.com/contourpy/contourpy";
+      license = licenses.bsd3;
+      maintainers = [ ];
+    };
   };
-};
-in countourpy
+in
+contourpy
diff --git a/pkgs/development/python-modules/controku/default.nix b/pkgs/development/python-modules/controku/default.nix
index e2dd1d32b76a3..9aff50bfc0870 100644
--- a/pkgs/development/python-modules/controku/default.nix
+++ b/pkgs/development/python-modules/controku/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, python3Packages
-, fetchFromGitHub
-, setuptools
-, requests
-, ssdpy
-, appdirs
-, pygobject3
-, gobject-introspection
-, gtk3
-, wrapGAppsHook
-, buildApplication ? false
+{
+  lib,
+  fetchFromGitHub,
+  setuptools,
+  requests,
+  ssdpy,
+  appdirs,
+  pygobject3,
+  gobject-introspection,
+  gtk3,
+  wrapGAppsHook3,
+  buildPythonPackage,
+  buildApplication ? false,
 }:
 
-python3Packages.buildPythonPackage rec {
+buildPythonPackage rec {
   pname = "controku";
   version = "1.1.0";
   format = "pyproject";
@@ -24,21 +25,23 @@ python3Packages.buildPythonPackage rec {
     hash = "sha256-sye2GtL3a77pygllZc6ylaIP7faPb+NFbyKKyqJzIXw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ] ++ lib.optionals buildApplication [
-    gobject-introspection
-    wrapGAppsHook
-  ];
+  nativeBuildInputs =
+    [ setuptools ]
+    ++ lib.optionals buildApplication [
+      gobject-introspection
+      wrapGAppsHook3
+    ];
 
-  propagatedBuildInputs = [
-    requests
-    ssdpy
-  ] ++ lib.optionals buildApplication [
-    gtk3
-    appdirs
-    pygobject3
-  ];
+  propagatedBuildInputs =
+    [
+      requests
+      ssdpy
+    ]
+    ++ lib.optionals buildApplication [
+      gtk3
+      appdirs
+      pygobject3
+    ];
 
   pythonImportsCheck = [ "controku" ];
 
diff --git a/pkgs/development/python-modules/convertdate/default.nix b/pkgs/development/python-modules/convertdate/default.nix
index 39a935e5e8501..e4c2e9bd8ec0a 100644
--- a/pkgs/development/python-modules/convertdate/default.nix
+++ b/pkgs/development/python-modules/convertdate/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pymeeus
-, pytz
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pymeeus,
+  pytz,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     pytz
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "convertdate"
-  ];
+  pythonImportsCheck = [ "convertdate" ];
 
   meta = with lib; {
     description = "Utils for converting between date formats and calculating holidays";
diff --git a/pkgs/development/python-modules/convertertools/default.nix b/pkgs/development/python-modules/convertertools/default.nix
new file mode 100644
index 0000000000000..17739bd6619bb
--- /dev/null
+++ b/pkgs/development/python-modules/convertertools/default.nix
@@ -0,0 +1,51 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  cython,
+  poetry-core,
+  setuptools,
+
+  # checks
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "convertertools";
+  version = "0.5.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "bluetooth-devices";
+    repo = "convertertools";
+    rev = "v${version}";
+    hash = "sha256-g4dSJjogMBC8wqvbYDjDP6YihxuG7PQn/jwrrBFOt80=";
+  };
+
+  postPatch = ''
+    sed -i "/--cov/d" pyproject.toml
+  '';
+
+  build-system = [
+    cython
+    poetry-core
+    setuptools
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "convertertools" ];
+
+  meta = with lib; {
+    description = "Tools for converting python data types";
+    homepage = "https://github.com/bluetooth-devices/convertertools";
+    changelog = "https://github.com/bluetooth-devices/convertertools/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = [ ];
+  };
+}
diff --git a/pkgs/development/python-modules/conway-polynomials/default.nix b/pkgs/development/python-modules/conway-polynomials/default.nix
index d5b57a10aa393..c89898e851079 100644
--- a/pkgs/development/python-modules/conway-polynomials/default.nix
+++ b/pkgs/development/python-modules/conway-polynomials/default.nix
@@ -1,17 +1,23 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "conway-polynomials";
-  version = "0.9";
+  version = "0.10";
+  pyproject = true;
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-btIwBgm8558BddW4VGhY7sAoVPi+MjfbjRRJzMzBxYE=";
+    pname = "conway_polynomials";
+    inherit version;
+    hash = "sha256-T2GfZPgaPrFsTibFooT+7sJ6b0qtZHZD55ryiYAa4PM=";
   };
 
+  build-system = [ setuptools ];
+
   pythonImportsCheck = [ "conway_polynomials" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/cookiecutter/default.nix b/pkgs/development/python-modules/cookiecutter/default.nix
index 6818f9021a449..d4071552f112d 100644
--- a/pkgs/development/python-modules/cookiecutter/default.nix
+++ b/pkgs/development/python-modules/cookiecutter/default.nix
@@ -1,11 +1,24 @@
-{ lib, buildPythonPackage, fetchPypi, isPyPy
-, setuptools
-, pytest, pytest-cov, pytest-mock, freezegun, safety, pre-commit
-, jinja2, binaryornot, click, jinja2-time, requests
-, python-slugify
-, pyyaml
-, arrow
-, rich
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  bash,
+  setuptools,
+  pytestCheckHook,
+  pytest-cov-stub,
+  pytest-mock,
+  freezegun,
+  git,
+  jinja2,
+  binaryornot,
+  click,
+  jinja2-time,
+  requests,
+  python-slugify,
+  pyyaml,
+  arrow,
+  rich,
 }:
 
 buildPythonPackage rec {
@@ -21,19 +34,24 @@ buildPythonPackage rec {
     hash = "sha256-2yH4Fp6k9P3CQI1IykSFk0neJkf75JSp1sPt/AVCwhw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  postPatch = ''
+    patchShebangs tests/test-pyshellhooks/hooks tests/test-shellhooks/hooks
+
+    substituteInPlace tests/test_hooks.py \
+      --replace-fail "/bin/bash" "${lib.getExe bash}"
+  '';
+
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
-    pytest
-    pytest-cov
+    pytestCheckHook
+    pytest-cov-stub
     pytest-mock
     freezegun
-    safety
-    pre-commit
+    git
   ];
-  propagatedBuildInputs = [
+
+  dependencies = [
     binaryornot
     jinja2
     click
@@ -45,15 +63,21 @@ buildPythonPackage rec {
     rich
   ];
 
-  # requires network access for cloning git repos
-  doCheck = false;
-  checkPhase = ''
-    pytest
+  pythonImportsCheck = [ "cookiecutter.main" ];
+
+  preCheck = ''
+    export HOME="$(mktemp -d)"
   '';
 
+  disabledTests = [
+    # messes with $PYTHONPATH
+    "test_should_invoke_main"
+  ];
+
   meta = with lib; {
     homepage = "https://github.com/audreyr/cookiecutter";
-    description = "A command-line utility that creates projects from project templates";
+    changelog = "https://github.com/cookiecutter/cookiecutter/blob/${version}/HISTORY.md";
+    description = "Command-line utility that creates projects from project templates";
     mainProgram = "cookiecutter";
     license = licenses.bsd3;
     maintainers = with maintainers; [ kragniz ];
diff --git a/pkgs/development/python-modules/cookies/default.nix b/pkgs/development/python-modules/cookies/default.nix
index 3f0d64c0c22d9..bd58002178d1a 100644
--- a/pkgs/development/python-modules/cookies/default.nix
+++ b/pkgs/development/python-modules/cookies/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchpatch,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    pytestCheckHook
-  ];
+  nativeBuildInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # https://gitlab.com/sashahart/cookies/-/issues/6
diff --git a/pkgs/development/python-modules/coordinates/default.nix b/pkgs/development/python-modules/coordinates/default.nix
index e699e1b9a015f..f055b52ee2b41 100644
--- a/pkgs/development/python-modules/coordinates/default.nix
+++ b/pkgs/development/python-modules/coordinates/default.nix
@@ -1,32 +1,36 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "coordinates";
   version = "0.4.0";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = pythonOlder "3.5";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "clbarnes";
     repo = "coordinates";
-    rev = "v${version}";
-    sha256 = "1zha594rshjg3qjq9mrai2hfldya282ihasp2i3km7b2j4gjdw2b";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-S/AmH5FinTpHFFcrGAUSyjfqoIgq14QlHk9CnUkqCv4=";
   };
 
-  nativeCheckInputs = [ pytest ];
+  build-system = [ setuptools ];
 
-  checkPhase = ''
-    runHook preCheck
-    pytest tests/
-    runHook postCheck
-  '';
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "coordinates" ];
 
   meta = with lib; {
     description = "Convenience class for doing maths with explicit coordinates";
     homepage = "https://github.com/clbarnes/coordinates";
+    changelog = "https://github.com/clbarnes/coordinates/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = [ ];
   };
diff --git a/pkgs/development/python-modules/coqpit/default.nix b/pkgs/development/python-modules/coqpit/default.nix
index 48954b7a9117a..52487176f2690 100644
--- a/pkgs/development/python-modules/coqpit/default.nix
+++ b/pkgs/development/python-modules/coqpit/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonAtLeast,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-FY3PYd8dY5HFKkhD6kBzPt0k1eFugdqsO3yIN4oDk3E=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [
     "coqpit"
@@ -27,13 +26,9 @@ buildPythonPackage rec {
   ];
 
   # https://github.com/coqui-ai/coqpit/issues/40
-  disabledTests = lib.optionals (pythonAtLeast "3.11")[
-    "test_init_argparse_list_and_nested"
-  ];
+  disabledTests = lib.optionals (pythonAtLeast "3.11") [ "test_init_argparse_list_and_nested" ];
 
-  disabledTestPaths = lib.optionals (pythonAtLeast "3.11")[
-    "tests/test_nested_configs.py"
-  ];
+  disabledTestPaths = lib.optionals (pythonAtLeast "3.11") [ "tests/test_nested_configs.py" ];
 
   meta = with lib; {
     description = "Simple but maybe too simple config management through python data classes";
diff --git a/pkgs/development/python-modules/coreapi/default.nix b/pkgs/development/python-modules/coreapi/default.nix
index ad172b2961167..d620f6fb4e22a 100644
--- a/pkgs/development/python-modules/coreapi/default.nix
+++ b/pkgs/development/python-modules/coreapi/default.nix
@@ -40,6 +40,6 @@ buildPythonPackage rec {
     description = "Python client library for Core API";
     homepage = "https://github.com/core-api/python-client";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/coredis/default.nix b/pkgs/development/python-modules/coredis/default.nix
index 75626ecc07adc..f7e5824544d90 100644
--- a/pkgs/development/python-modules/coredis/default.nix
+++ b/pkgs/development/python-modules/coredis/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, deprecated
-, fetchFromGitHub
-, pympler
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, redis
-, wrapt
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  deprecated,
+  fetchFromGitHub,
+  pympler,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  redis,
+  wrapt,
 }:
 
 buildPythonPackage rec {
@@ -43,9 +44,7 @@ buildPythonPackage rec {
     pytest-asyncio
   ];
 
-  pythonImportsCheck = [
-    "coredis"
-  ];
+  pythonImportsCheck = [ "coredis" ];
 
   pytestFlagsArray = [
     # All other tests require Docker
@@ -56,7 +55,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "An async redis client with support for redis server, cluster & sentinel";
+    description = "Async redis client with support for redis server, cluster & sentinel";
     homepage = "https://github.com/alisaifee/coredis";
     changelog = "https://github.com/alisaifee/coredis/blob/${src.rev}/HISTORY.rst";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/coreschema/default.nix b/pkgs/development/python-modules/coreschema/default.nix
index 8d597e530383e..1aede8b9f5873 100644
--- a/pkgs/development/python-modules/coreschema/default.nix
+++ b/pkgs/development/python-modules/coreschema/default.nix
@@ -30,6 +30,6 @@ buildPythonPackage rec {
     description = "Python client library for Core Schema";
     homepage = "https://github.com/ivegotasthma/python-coreschema";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/corner/default.nix b/pkgs/development/python-modules/corner/default.nix
new file mode 100644
index 0000000000000..68446453e200b
--- /dev/null
+++ b/pkgs/development/python-modules/corner/default.nix
@@ -0,0 +1,106 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+
+  # dependencies
+  matplotlib,
+
+  # optional-dependencies
+  arviz,
+  ipython,
+  myst-nb,
+  pandoc,
+  sphinx,
+  sphinx-book-theme,
+  pytest,
+  scipy,
+
+  # checks
+  pytestCheckHook,
+  corner,
+}:
+
+buildPythonPackage rec {
+  pname = "corner";
+  version = "2.2.2";
+  pyproject = true;
+
+  disable = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "dfm";
+    repo = "corner.py";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-MYos01YCSUwivymSE2hbjV7eKXfaMqG89koD2CWZjcQ=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [ matplotlib ];
+
+  passthru.optional-dependencies = {
+    arviz = [ arviz ];
+    docs = [
+      arviz
+      ipython
+      myst-nb
+      pandoc
+      sphinx
+      sphinx-book-theme
+    ];
+    test = [
+      arviz
+      pytest
+      scipy
+    ];
+  };
+
+  pythonImportsCheck = [ "corner" ];
+
+  nativeCheckInputs = [ pytestCheckHook ] ++ corner.passthru.optional-dependencies.test;
+
+  # matplotlib.testing.exceptions.ImageComparisonFailure: images not close
+  disabledTests = [
+    "test_arviz"
+    "test_basic"
+    "test_bins"
+    "test_bins_log"
+    "test_color"
+    "test_color_filled"
+    "test_extended_overplotting"
+    "test_hist_bin_factor"
+    "test_labels"
+    "test_lowNfilled"
+    "test_no_fill_contours"
+    "test_overplot_log"
+    "test_pandas"
+    "test_quantiles"
+    "test_range_fig_arg"
+    "test_reverse_overplotting"
+    "test_tight"
+    "test_title_quantiles"
+    "test_title_quantiles_default"
+    "test_title_quantiles_raises"
+    "test_titles1"
+    "test_titles2"
+    "test_top_ticks"
+    "test_truths"
+  ];
+
+  meta = {
+    description = "Make some beautiful corner plots";
+    homepage = "https://github.com/dfm/corner.py";
+    changelog = "https://github.com/dfm/corner.py/releases/tag/v${version}";
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/pkgs/development/python-modules/cornice/default.nix b/pkgs/development/python-modules/cornice/default.nix
index ff6ede5dcf206..639ddcacd4876 100644
--- a/pkgs/development/python-modules/cornice/default.nix
+++ b/pkgs/development/python-modules/cornice/default.nix
@@ -1,26 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyramid
-, simplejson
-, six
-, venusian
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pyramid,
+  pytestCheckHook,
+  pytest-cache,
+  webtest,
+  marshmallow,
+  colander,
 }:
 
 buildPythonPackage rec {
   pname = "cornice";
   version = "6.1.0";
-  format = "setuptools";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-v9G2wqmRp8yxsggrbenjuPGYtqK0oHqwgA4F3wWkU2E=";
+  src = fetchFromGitHub {
+    owner = "Cornices";
+    repo = "cornice";
+    rev = version;
+    hash = "sha256-jAf8unDPpr/ZAWkb9LhOW4URjwcRnaYVUKmfnYBStTg=";
   };
 
-  propagatedBuildInputs = [ pyramid simplejson six venusian ];
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
 
-  # tests not packaged with pypi release
-  doCheck = false;
+  dependencies = [ pyramid ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-cache
+    webtest
+    marshmallow
+    colander
+  ];
   pythonImportsCheck = [ "cornice" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/correctionlib/default.nix b/pkgs/development/python-modules/correctionlib/default.nix
index 23a8bee16d218..e3d52128ab2dd 100644
--- a/pkgs/development/python-modules/correctionlib/default.nix
+++ b/pkgs/development/python-modules/correctionlib/default.nix
@@ -1,33 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cmake
-, numpy
-, scikit-build
-, setuptools
-, setuptools-scm
-, wheel
-, packaging
-, pybind11
-, pydantic
-, rich
-, awkward
-, pytestCheckHook
-, scipy
-, zlib
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  cmake,
+  scikit-build,
+  setuptools,
+  setuptools-scm,
+  pybind11,
+
+  zlib,
+
+  # dependencies
+  numpy,
+  packaging,
+  pydantic,
+  rich,
+
+  # checks
+  awkward,
+  pytestCheckHook,
+  scipy,
 }:
 
 buildPythonPackage rec {
   pname = "correctionlib";
-  version = "2.5.0";
+  version = "2.6.4";
   pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-H8QCdU6piBdqJEJOGVbsz+6eyMhFVuwTpIHKUoKaf4A=";
+  src = fetchFromGitHub {
+    owner = "cms-nanoAOD";
+    repo = "correctionlib";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-l+JjW/giGzU00z0jBN3D4KB/LjTIxeJb3CS+Ge0gbiA=";
+    fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [
+  build-system = [
     cmake
     scikit-build
     setuptools
@@ -35,11 +45,9 @@ buildPythonPackage rec {
     pybind11
   ];
 
-  buildInputs = [
-    zlib
-  ];
+  buildInputs = [ zlib ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
     packaging
     pydantic
@@ -54,15 +62,19 @@ buildPythonPackage rec {
     scipy
   ];
 
-  pythonImportsCheck = [
-    "correctionlib"
-  ];
+  pythonImportsCheck = [ "correctionlib" ];
+
+  # One test requires running the produced `correctionlib` binary
+  preCheck = ''
+    export PATH=$out/bin:$PATH
+  '';
 
-  meta = with lib; {
+  meta = {
     description = "Provides a well-structured JSON data format for a wide variety of ad-hoc correction factors encountered in a typical HEP analysis";
     mainProgram = "correction";
     homepage = "https://cms-nanoaod.github.io/correctionlib/";
-    license = with licenses; [ bsd3 ];
-    maintainers = with maintainers; [ veprbl ];
+    changelog = "https://github.com/cms-nanoAOD/correctionlib/releases/tag/v${version}";
+    license = with lib.licenses; [ bsd3 ];
+    maintainers = with lib.maintainers; [ veprbl ];
   };
 }
diff --git a/pkgs/development/python-modules/corsair-scan/default.nix b/pkgs/development/python-modules/corsair-scan/default.nix
index 4d7190906b262..59d9bdbfb1298 100644
--- a/pkgs/development/python-modules/corsair-scan/default.nix
+++ b/pkgs/development/python-modules/corsair-scan/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, mock
-, pytestCheckHook
-, pythonOlder
-, requests
-, tldextract
-, urllib3
-, validators
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  tldextract,
+  urllib3,
+  validators,
 }:
 
 buildPythonPackage rec {
@@ -43,9 +44,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "corsair_scan"
-  ];
+  pythonImportsCheck = [ "corsair_scan" ];
 
   disabledTests = [
     # Tests want to download Public Suffix List
diff --git a/pkgs/development/python-modules/cose/default.nix b/pkgs/development/python-modules/cose/default.nix
index c591677b53160..6ddb5676bef6c 100644
--- a/pkgs/development/python-modules/cose/default.nix
+++ b/pkgs/development/python-modules/cose/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-# Python deps
-, attrs
-, cbor2
-, certvalidator
-, cryptography
-, ecdsa
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  # Python deps
+  attrs,
+  cbor2,
+  certvalidator,
+  cryptography,
+  ecdsa,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -35,7 +36,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "pycose" ];
 
   meta = with lib; {
-    description = "A Python implementation of the COSE specification";
+    description = "Python implementation of the COSE specification";
     homepage = "https://github.com/TimothyClaeys/pycose";
     license = licenses.bsd3;
     maintainers = with maintainers; [ t4ccer ];
diff --git a/pkgs/development/python-modules/cot/default.nix b/pkgs/development/python-modules/cot/default.nix
index e65bc8577e4b0..fb3a138627ad9 100644
--- a/pkgs/development/python-modules/cot/default.nix
+++ b/pkgs/development/python-modules/cot/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, colorlog
-, pyvmomi
-, requests
-, verboselogs
-, pyopenssl
-, setuptools
-, mock
-, pytest-mock
-, pytestCheckHook
-, qemu
+{
+  lib,
+  buildPythonPackage,
+  colorlog,
+  fetchPypi,
+  mock,
+  pyopenssl,
+  pytest-mock,
+  pytestCheckHook,
+  pythonAtLeast,
+  pyvmomi,
+  qemu,
+  requests,
+  setuptools,
+  stdenv,
+  verboselogs,
 }:
 
 buildPythonPackage rec {
@@ -20,8 +21,6 @@ buildPythonPackage rec {
   version = "2.2.1";
   format = "setuptools";
 
-  disabled = pythonOlder "3.7";
-
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-9LNVNBX5DarGVvidPoLnmz11F5Mjm7FzpoO0zAzrJjU=";
@@ -70,23 +69,21 @@ buildPythonPackage rec {
     "test_serial_fixup_stubbed"
     "test_serial_fixup_stubbed_create"
     "test_serial_fixup_stubbed_vm_not_found"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_serial_fixup_invalid_host"
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ "test_serial_fixup_invalid_host" ];
 
-  pythonImportsCheck = [
-    "COT"
-  ];
+  pythonImportsCheck = [ "COT" ];
 
-  meta = with lib; {
+  meta = {
+    homepage = "https://github.com/glennmatthews/cot";
     description = "Common OVF Tool";
     mainProgram = "cot";
     longDescription = ''
-      COT (the Common OVF Tool) is a tool for editing Open Virtualization Format (.ovf, .ova) virtual appliances,
-      with a focus on virtualized network appliances such as the Cisco CSR 1000V and Cisco IOS XRv platforms.
+      COT (the Common OVF Tool) is a tool for editing Open Virtualization Format
+      (.ovf, .ova) virtual appliances, with a focus on virtualized network
+      appliances such as the Cisco CSR 1000V and Cisco IOS XRv platforms.
     '';
-    homepage = "https://github.com/glennmatthews/cot";
-    license = licenses.mit;
-    maintainers = with maintainers; [ evanjs ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ evanjs ];
+    broken = pythonAtLeast "3.12"; # Because it requires packages removed from 3.12 onwards
   };
 }
diff --git a/pkgs/development/python-modules/courlan/default.nix b/pkgs/development/python-modules/courlan/default.nix
index bd73aad1977d8..3941911ac6205 100644
--- a/pkgs/development/python-modules/courlan/default.nix
+++ b/pkgs/development/python-modules/courlan/default.nix
@@ -1,56 +1,58 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, langcodes
-, pytestCheckHook
-, tld
-, urllib3
-, pythonOlder
+{
+  lib,
+  babel,
+  buildPythonPackage,
+  fetchPypi,
+  langcodes,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  tld,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "courlan";
-  version = "1.0.0";
-  format = "setuptools";
+  version = "1.3.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-PDVRHDZSXLL5Qc1nCbejp0LtlfC55WyX7sDBb9wDUYM=";
+    hash = "sha256-OGjziBIvKwnRVIAgQ/6S39YsPqenAOquirwFGYz4vCU=";
   };
 
-  propagatedBuildInputs = [
+  # Tests try to write to /tmp directly. use $TMPDIR instead.
+  postPatch = ''
+    substituteInPlace tests/unit_tests.py \
+      --replace-fail "\"courlan --help\"" "\"$out/bin/courlan --help\"" \
+      --replace-fail "courlan_bin = \"courlan\"" "courlan_bin = \"$out/bin/courlan\"" \
+      --replace-fail "/tmp" "$TMPDIR"
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    babel
     langcodes
     tld
     urllib3
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # disable tests that require an internet connection
-  disabledTests = [
-    "test_urlcheck"
-  ];
-
-  # tests try to write to /tmp directly. use $TMPDIR instead.
-  postPatch = ''
-    substituteInPlace tests/unit_tests.py \
-      --replace "\"courlan --help\"" "\"$out/bin/courlan --help\"" \
-      --replace "courlan_bin = \"courlan\"" "courlan_bin = \"$out/bin/courlan\"" \
-      --replace "/tmp" "$TMPDIR"
-  '';
+  disabledTests = [ "test_urlcheck" ];
 
   pythonImportsCheck = [ "courlan" ];
 
   meta = with lib; {
     description = "Clean, filter and sample URLs to optimize data collection";
-    mainProgram = "courlan";
     homepage = "https://github.com/adbar/courlan";
     changelog = "https://github.com/adbar/courlan/blob/v${version}/HISTORY.md";
     license = licenses.asl20;
     maintainers = with maintainers; [ jokatzke ];
+    mainProgram = "courlan";
   };
 }
diff --git a/pkgs/development/python-modules/cov-core/default.nix b/pkgs/development/python-modules/cov-core/default.nix
deleted file mode 100644
index 6a4610fc447ca..0000000000000
--- a/pkgs/development/python-modules/cov-core/default.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, coverage }:
-
-buildPythonPackage rec {
-  pname = "cov-core";
-  version = "1.15.0";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a";
-  };
-
-  propagatedBuildInputs = [ coverage ];
-
-  meta = with lib; {
-    description = "Plugin core for use by pytest-cov, nose-cov and nose2-cov";
-  };
-}
diff --git a/pkgs/development/python-modules/coverage/default.nix b/pkgs/development/python-modules/coverage/default.nix
index 4e4c86ae10634..7e366cf497254 100644
--- a/pkgs/development/python-modules/coverage/default.nix
+++ b/pkgs/development/python-modules/coverage/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mock
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "coverage";
-  version = "7.4.3";
+  version = "7.5.3";
   pyproject = true;
 
   # uses f strings
@@ -16,12 +17,10 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-J29gd6XGFEekjRM+0T51nAnmKv8NyEJ0po3BhmAQTVI=";
+    hash = "sha256-BK78pRkNHcelOkwaWn+FaIETBteo7iMcQvtpIVVxlE8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # No tests in archive
   doCheck = false;
diff --git a/pkgs/development/python-modules/coveralls/default.nix b/pkgs/development/python-modules/coveralls/default.nix
index c1b144109bea8..c59dd631bf089 100644
--- a/pkgs/development/python-modules/coveralls/default.nix
+++ b/pkgs/development/python-modules/coveralls/default.nix
@@ -1,58 +1,62 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
-, isPy27
-, mock
-, pytest
-, pytest-runner
-, sh
-, coverage
-, docopt
-, requests
-, urllib3
-, git
-, isPy3k
+{
+  buildPythonPackage,
+  lib,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # checks
+  mock,
+  pytestCheckHook,
+  sh,
+  coverage,
+  docopt,
+  requests,
+  git,
+  responses,
 }:
 
 buildPythonPackage rec {
   pname = "coveralls";
-  version = "3.3.1";
-  format = "setuptools";
-  disabled = isPy27;
+  version = "4.0.1";
+  pyproject = true;
 
-  # wanted by tests
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "b32a8bb5d2df585207c119d6c01567b81fba690c9c10a753bfe27a335bfc43ea";
+  src = fetchFromGitHub {
+    owner = "TheKevJames";
+    repo = "coveralls-python";
+    rev = "refs/tags/${version}";
+    hash = "sha256-1MjP99NykWNDyzWwZopLAzZ93vGX1mXEU+m+zvOBIZA=";
   };
 
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    coverage
+    docopt
+    requests
+  ];
+
   nativeCheckInputs = [
     mock
     sh
-    pytest
+    pytestCheckHook
+    responses
     git
   ];
 
-  buildInputs = [
-    pytest-runner
-  ];
-
-  postPatch = ''
-    sed -i "s/'coverage>=\([^,]\+\),.*',$/'coverage>=\1',/" setup.py
+  preCheck = ''
+    export PATH=${coverage}/bin:$PATH
   '';
 
-  # FIXME: tests requires .git directory to be present
-  doCheck = false;
-
-  checkPhase = ''
-    python setup.py test
-  '';
-
-  propagatedBuildInputs = [
-    coverage
-    docopt
-    requests
-  ] ++ lib.optional (!isPy3k) urllib3;
+  disabledTests = [
+    # requires .git in checkout
+    "test_git"
+    # try to run unwrapped python
+    "test_5"
+    "test_7"
+    "test_11"
+  ];
 
   meta = {
     description = "Show coverage stats online via coveralls.io";
@@ -61,5 +65,3 @@ buildPythonPackage rec {
     license = lib.licenses.mit;
   };
 }
-
-
diff --git a/pkgs/development/python-modules/cpe/default.nix b/pkgs/development/python-modules/cpe/default.nix
new file mode 100644
index 0000000000000..5aa48feea09dd
--- /dev/null
+++ b/pkgs/development/python-modules/cpe/default.nix
@@ -0,0 +1,37 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "cpe";
+  version = "1.3.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "nilp0inter";
+    repo = "cpe";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-nHFgsFNoDf1VJI7XOe62NOuL67AZCP/LFsymt7Q8L2U=";
+  };
+
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "cpe" ];
+
+  meta = {
+    changelog = "https://github.com/nilp0inter/cpe/releases/tag/v${version}";
+    description = "Common platform enumeration for python";
+    homepage = "https://github.com/nilp0inter/cpe";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ tochiaha ];
+  };
+}
diff --git a/pkgs/development/python-modules/cppe/default.nix b/pkgs/development/python-modules/cppe/default.nix
index 64e88190dc821..f313e3a97ec07 100644
--- a/pkgs/development/python-modules/cppe/default.nix
+++ b/pkgs/development/python-modules/cppe/default.nix
@@ -1,23 +1,28 @@
-{ buildPythonPackage
-, lib
-, stdenv
-, cmake
-, cppe
-, eigen
-, python
-, pybind11
-, numpy
-, h5py
-, numba
-, scipy
-, pandas
-, polarizationsolver
-, pytest
-, llvmPackages
+{
+  buildPythonPackage,
+  lib,
+  stdenv,
+  cmake,
+  cppe,
+  eigen,
+  pybind11,
+  numpy,
+  h5py,
+  numba,
+  scipy,
+  pandas,
+  polarizationsolver,
+  pytest,
+  llvmPackages,
 }:
 
 buildPythonPackage rec {
-  inherit (cppe) pname version src meta;
+  inherit (cppe)
+    pname
+    version
+    src
+    meta
+    ;
 
   # The python interface requires eigen3, but builds from a checkout in tree.
   # Using the nixpkgs version instead.
@@ -35,8 +40,7 @@ buildPythonPackage rec {
 
   format = "setuptools";
 
-  buildInputs = [ pybind11 ]
-    ++ lib.optional stdenv.cc.isClang llvmPackages.openmp;
+  buildInputs = [ pybind11 ] ++ lib.optional stdenv.cc.isClang llvmPackages.openmp;
 
   NIX_CFLAGS_LINK = lib.optional stdenv.cc.isClang "-lomp";
 
diff --git a/pkgs/development/python-modules/cppheaderparser/default.nix b/pkgs/development/python-modules/cppheaderparser/default.nix
index cb834b1d48a18..80aea1678ae7c 100644
--- a/pkgs/development/python-modules/cppheaderparser/default.nix
+++ b/pkgs/development/python-modules/cppheaderparser/default.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
-, fetchPypi
-, ply
-, lib
+{
+  buildPythonPackage,
+  fetchPypi,
+  ply,
+  lib,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/cppy/default.nix b/pkgs/development/python-modules/cppy/default.nix
index 230925a213e9b..f2fd2f3012cc5 100644
--- a/pkgs/development/python-modules/cppy/default.nix
+++ b/pkgs/development/python-modules/cppy/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pytestCheckHook
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-g7Q78XsQhawVxd69tCFU8Ti5KCNLIURzWJgfadDW/hs=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
diff --git a/pkgs/development/python-modules/cpufeature/default.nix b/pkgs/development/python-modules/cpufeature/default.nix
index cade32a1955bd..13f364fb00ee5 100644
--- a/pkgs/development/python-modules/cpufeature/default.nix
+++ b/pkgs/development/python-modules/cpufeature/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, unittestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  unittestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,21 +21,13 @@ buildPythonPackage rec {
     hash = "sha256-dp569Tp8E5/avQpYvhPNPgS/A+q2e/ie+7BR7h2Ip+I=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  propagatedBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  pythonImportsCheck = [
-    "cpufeature"
-  ];
+  pythonImportsCheck = [ "cpufeature" ];
 
   preCheck = ''
     # Change into the test directory due to a relative resource path
@@ -46,6 +39,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/robbmcleod/cpufeature";
     license = licenses.cc0;
     maintainers = with maintainers; [ fab ];
-    platforms = [ "x86_64-linux" "x86_64-windows" ];
+    platforms = [
+      "x86_64-linux"
+      "x86_64-windows"
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/cpyparsing/default.nix b/pkgs/development/python-modules/cpyparsing/default.nix
index e063e8847d436..aa83e9a434d07 100644
--- a/pkgs/development/python-modules/cpyparsing/default.nix
+++ b/pkgs/development/python-modules/cpyparsing/default.nix
@@ -1,25 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cython
-, pexpect
-, python
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cython,
+  pexpect,
+  python,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "cpyparsing";
-  version = "2.4.7.2.3.2";
+  version = "2.4.7.2.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
-  src = fetchFromGitHub {
-    owner = "evhub";
-    repo = "cpyparsing";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-vnzZdJ7pZz1QxlTqw5UKjxB4GVcXuCfKWX4lu3ORWas=";
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-7j0vJicSrSUqZAExaH0bJZhRJ6XZui4SAPMBcWXy7n0=";
   };
 
   nativeBuildInputs = [
@@ -27,17 +26,13 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  nativeCheckInputs = [
-    pexpect
-  ];
+  nativeCheckInputs = [ pexpect ];
 
   checkPhase = ''
     ${python.interpreter} tests/cPyparsing_test.py
   '';
 
-  pythonImportsCheck = [
-    "cPyparsing"
-  ];
+  pythonImportsCheck = [ "cPyparsing" ];
 
   meta = with lib; {
     description = "Cython PyParsing implementation";
diff --git a/pkgs/development/python-modules/craft-application-1/default.nix b/pkgs/development/python-modules/craft-application-1/default.nix
deleted file mode 100644
index 50685f0c16cee..0000000000000
--- a/pkgs/development/python-modules/craft-application-1/default.nix
+++ /dev/null
@@ -1,84 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nix-update-script
-, craft-cli
-, craft-parts
-, craft-providers
-, pydantic-yaml-0
-, pyyaml
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, pytest-check
-, pytest-mock
-, hypothesis
-}:
-
-buildPythonPackage rec {
-  pname = "craft-application-1";
-  version = "1.2.1";
-
-  pyproject = true;
-
-  src = fetchFromGitHub {
-    owner = "canonical";
-    repo = "craft-application";
-    rev = "refs/tags/${version}";
-    hash = "sha256-CXZEWVoE66dlQJp4G8tinufjyaDJaH1Muxz/qd/81oA=";
-  };
-
-  postPatch = ''
-    substituteInPlace craft_application/__init__.py \
-      --replace-fail "dev" "${version}"
-
-    substituteInPlace pyproject.toml \
-      --replace-fail "setuptools==67.7.2" "setuptools"
-  '';
-
-  nativeBuildInputs = [
-    setuptools
-    setuptools-scm
-  ];
-
-  propagatedBuildInputs = [
-    craft-cli
-    craft-parts
-    craft-providers
-    pydantic-yaml-0
-    pyyaml
-  ];
-
-  pythonImportsCheck = [
-    "craft_application"
-  ];
-
-  nativeCheckInputs = [
-    hypothesis
-    pytest-check
-    pytest-mock
-    pytestCheckHook
-  ];
-
-  preCheck = ''
-    export HOME=$(mktemp -d)
-  '';
-
-  pytestFlagsArray = [ "tests/unit" ];
-
-  disabledTests = [
-    "test_to_yaml_file"
-  ];
-
-  passthru.updateScript = nix-update-script { };
-
-  meta = {
-    description = "The basis for Canonical craft applications";
-    homepage = "https://github.com/canonical/craft-application";
-    changelog = "https://github.com/canonical/craft-application/releases/tag/${version}";
-    license = lib.licenses.lgpl3Only;
-    maintainers = with lib.maintainers; [ jnsgruk ];
-    platforms = lib.platforms.linux;
-  };
-}
-
diff --git a/pkgs/development/python-modules/craft-application/default.nix b/pkgs/development/python-modules/craft-application/default.nix
index 03753c8c35b83..96bec81c91726 100644
--- a/pkgs/development/python-modules/craft-application/default.nix
+++ b/pkgs/development/python-modules/craft-application/default.nix
@@ -11,7 +11,7 @@
   git,
   hypothesis,
   nix-update-script,
-  pydantic-yaml-0,
+  pydantic-yaml,
   pyfakefs,
   pygit2,
   pytest-check,
@@ -21,13 +21,12 @@
   pyyaml,
   responses,
   setuptools-scm,
-  setuptools,
   snap-helpers,
 }:
 
 buildPythonPackage rec {
   pname = "craft-application";
-  version = "2.6.1";
+  version = "3.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -36,20 +35,19 @@ buildPythonPackage rec {
     owner = "canonical";
     repo = "craft-application";
     rev = "refs/tags/${version}";
-    hash = "sha256-mWXEc54JsZAl6KD33RF8juzDhFheQOLviJbM1B8RPSo=";
+    hash = "sha256-2JfCe7FJtuObC/4miA+OC/ctGy1fhdgI7DsowNYjQk8=";
   };
 
   postPatch = ''
-    substituteInPlace craft_application/__init__.py \
-      --replace-fail "dev" "${version}"
-
     substituteInPlace pyproject.toml \
-      --replace-fail "setuptools==69.4.0" "setuptools"
+      --replace-fail "setuptools==70.1.0" "setuptools"
   '';
 
-  build-system = [
-    setuptools
-    setuptools-scm
+  build-system = [ setuptools-scm ];
+
+  pythonRelaxDeps = [
+    "pygit2"
+    "requests"
   ];
 
   dependencies = [
@@ -58,7 +56,7 @@ buildPythonPackage rec {
     craft-grammar
     craft-parts
     craft-providers
-    pydantic-yaml-0
+    pydantic-yaml
     pygit2
     pyyaml
     snap-helpers
@@ -92,23 +90,25 @@ buildPythonPackage rec {
 
   pytestFlagsArray = [ "tests/unit" ];
 
-  disabledTests = [
-    "test_to_yaml_file"
-    # Tests expecting pytest-time
-    "test_monitor_builds_success"
-  ] ++ lib.optionals stdenv.isAarch64 [
-    # These tests have hardcoded "amd64" strings which fail on aarch64
-    "test_process_grammar_build_for"
-    "test_process_grammar_platform"
-    "test_process_grammar_default"
-  ];
+  disabledTests =
+    [
+      "test_to_yaml_file"
+      # Tests expecting pytest-time
+      "test_monitor_builds_success"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isAarch64 [
+      # These tests have hardcoded "amd64" strings which fail on aarch64
+      "test_process_grammar_build_for"
+      "test_process_grammar_platform"
+      "test_process_grammar_default"
+    ];
 
   passthru.updateScript = nix-update-script { };
 
   meta = {
-    description = "The basis for Canonical craft applications";
+    description = "Basis for Canonical craft applications";
     homepage = "https://github.com/canonical/craft-application";
-    changelog = "https://github.com/canonical/craft-application/releases/tag/${version}";
+    changelog = "https://github.com/canonical/craft-application/blob/${src.rev}/docs/reference/changelog.rst";
     license = lib.licenses.lgpl3Only;
     maintainers = with lib.maintainers; [ jnsgruk ];
     platforms = lib.platforms.linux;
diff --git a/pkgs/development/python-modules/craft-archives/default.nix b/pkgs/development/python-modules/craft-archives/default.nix
index 3fb3b0e9f0fa9..6369acc78208b 100644
--- a/pkgs/development/python-modules/craft-archives/default.nix
+++ b/pkgs/development/python-modules/craft-archives/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nix-update-script
-, launchpadlib
-, lazr-restfulclient
-, overrides
-, pydantic_1
-, setuptools
-, setuptools-scm
-, tabulate
-, pytest-check
-, pytest-mock
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  nix-update-script,
+  launchpadlib,
+  lazr-restfulclient,
+  overrides,
+  pydantic_1,
+  setuptools,
+  setuptools-scm,
+  tabulate,
+  pytest-check,
+  pytest-mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "craft-archives";
-  version = "1.1.3";
+  version = "1.2.0";
 
   pyproject = true;
 
@@ -24,7 +25,7 @@ buildPythonPackage rec {
     owner = "canonical";
     repo = "craft-archives";
     rev = "refs/tags/${version}";
-    hash = "sha256-ZUqMjbOsHwzZyn0NsSTlZTljzagYEirWKEGatXVL43g=";
+    hash = "sha256-4BYRwuBDKFbVvK805e+L4ZR8wtS8GHHYteexH4YZmSE=";
   };
 
   postPatch = ''
@@ -48,9 +49,7 @@ buildPythonPackage rec {
     tabulate
   ];
 
-  pythonImportsCheck = [
-    "craft_archives"
-  ];
+  pythonImportsCheck = [ "craft_archives" ];
 
   nativeCheckInputs = [
     pytest-check
@@ -63,7 +62,7 @@ buildPythonPackage rec {
   passthru.updateScript = nix-update-script { };
 
   meta = {
-    description = "A library for handling archives/repositories in Canonical craft applications";
+    description = "Library for handling archives/repositories in Canonical craft applications";
     homepage = "https://github.com/canonical/craft-archives";
     changelog = "https://github.com/canonical/craft-archives/releases/tag/${version}";
     license = lib.licenses.lgpl3Only;
@@ -71,4 +70,3 @@ buildPythonPackage rec {
     platforms = lib.platforms.linux;
   };
 }
-
diff --git a/pkgs/development/python-modules/craft-cli/default.nix b/pkgs/development/python-modules/craft-cli/default.nix
index 17537a0c99672..16fdbf181583d 100644
--- a/pkgs/development/python-modules/craft-cli/default.nix
+++ b/pkgs/development/python-modules/craft-cli/default.nix
@@ -1,20 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nix-update-script
-, platformdirs
-, pydantic_1
-, pyyaml
-, setuptools
-, setuptools-scm
-, pytest-check
-, pytest-mock
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  nix-update-script,
+  platformdirs,
+  pyyaml,
+  setuptools-scm,
+  pytest-check,
+  pytest-mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "craft-cli";
-  version = "2.5.1";
+  version = "2.7.0";
 
   pyproject = true;
 
@@ -22,31 +21,22 @@ buildPythonPackage rec {
     owner = "canonical";
     repo = "craft-cli";
     rev = "refs/tags/${version}";
-    hash = "sha256-yEKF04OPu4paRrghAP78r9hu6cqkUy6z/V7cHNys82I=";
+    hash = "sha256-PNurNP0ghG/R0rcUc5GfuPM5PTt+9FbJRjs61YJ1ytc=";
   };
 
   postPatch = ''
-    substituteInPlace craft_cli/__init__.py \
-      --replace-fail "dev" "${version}"
-
     substituteInPlace pyproject.toml \
-      --replace-fail "setuptools==67.7.2" "setuptools"
+      --replace-fail "setuptools==70.1.0" "setuptools"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     platformdirs
-    pydantic_1
     pyyaml
   ];
 
-  pythonImportsCheck = [
-    "craft_cli"
-  ];
+  pythonImportsCheck = [ "craft_cli" ];
 
   nativeCheckInputs = [
     pytest-check
@@ -59,7 +49,7 @@ buildPythonPackage rec {
   passthru.updateScript = nix-update-script { };
 
   meta = {
-    description = "A CLI builder for Canonical's CLI Guidelines";
+    description = "CLI builder for Canonical's CLI Guidelines";
     homepage = "https://github.com/canonical/craft-cli";
     changelog = "https://github.com/canonical/craft-cli/releases/tag/${version}";
     license = lib.licenses.lgpl3Only;
diff --git a/pkgs/development/python-modules/craft-grammar/default.nix b/pkgs/development/python-modules/craft-grammar/default.nix
index 61a07f4d7c069..6b920aaa7a4a2 100644
--- a/pkgs/development/python-modules/craft-grammar/default.nix
+++ b/pkgs/development/python-modules/craft-grammar/default.nix
@@ -1,14 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nix-update-script
-, overrides
-, setuptools
-, pytest-check
-, pytest-mock
-, pytestCheckHook
-, pydantic_1
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  nix-update-script,
+  overrides,
+  setuptools,
+  pytestCheckHook,
+  pydantic_1,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -24,17 +23,11 @@ buildPythonPackage rec {
     hash = "sha256-YQpxgdmUxYLkhAXDLlkLAK6VpjIEycLFY3nsE/M4o2g=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    overrides
-  ];
+  propagatedBuildInputs = [ overrides ];
 
-  pythonImportsCheck = [
-    "craft_grammar"
-  ];
+  pythonImportsCheck = [ "craft_grammar" ];
 
   nativeCheckInputs = [
     pydantic_1
@@ -55,4 +48,3 @@ buildPythonPackage rec {
     platforms = lib.platforms.linux;
   };
 }
-
diff --git a/pkgs/development/python-modules/craft-parts/default.nix b/pkgs/development/python-modules/craft-parts/default.nix
index d340f784b431c..c3fd4e2abb546 100644
--- a/pkgs/development/python-modules/craft-parts/default.nix
+++ b/pkgs/development/python-modules/craft-parts/default.nix
@@ -1,32 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nix-update-script
-, overrides
-, pydantic_1
-, pydantic-yaml-0
-, pyxdg
-, pyyaml
-, requests
-, requests-unixsocket
-, types-pyyaml
-, urllib3
-, pytestCheckHook
-, pytest-check
-, pytest-mock
-, pytest-subprocess
-, requests-mock
-, hypothesis
-, git
-, squashfsTools
-, setuptools
-, setuptools-scm
-, stdenv
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  nix-update-script,
+  overrides,
+  pydantic_1,
+  pydantic-yaml,
+  pyxdg,
+  pyyaml,
+  requests,
+  requests-unixsocket,
+  urllib3,
+  pytestCheckHook,
+  pytest-check,
+  pytest-mock,
+  pytest-subprocess,
+  requests-mock,
+  hypothesis,
+  git,
+  squashfsTools,
+  setuptools-scm,
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "craft-parts";
-  version = "1.29.0";
+  version = "1.33.0";
 
   pyproject = true;
 
@@ -34,39 +33,30 @@ buildPythonPackage rec {
     owner = "canonical";
     repo = "craft-parts";
     rev = "refs/tags/${version}";
-    hash = "sha256-3AWiuRGUGj6q6ZEnShc64DSL1S6kTsry4Z1IYMelvzg=";
+    hash = "sha256-SP2mkaXsU0btnA3aanSA18GkdW6ReLgImOWdpnwZiyU=";
   };
 
-  patches = [
-    ./bash-path.patch
-  ];
+  patches = [ ./bash-path.patch ];
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace-fail "pydantic-yaml[pyyaml]>=0.11.0,<1.0.0" "pydantic-yaml[pyyaml]" \
-      --replace-fail "urllib3<2" "urllib3"
-  '';
+  build-system = [ setuptools-scm ];
 
-  nativeBuildInputs = [
-    setuptools
-    setuptools-scm
+  pythonRelaxDeps = [
+    "requests"
+    "urllib3"
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     overrides
     pydantic_1
-    pydantic-yaml-0
+    pydantic-yaml
     pyxdg
     pyyaml
     requests
     requests-unixsocket
-    types-pyyaml
     urllib3
   ];
 
-  pythonImportsCheck = [
-    "craft_parts"
-  ];
+  pythonImportsCheck = [ "craft_parts" ];
 
   nativeCheckInputs = [
     git
@@ -93,26 +83,29 @@ buildPythonPackage rec {
     "test_get_build_packages"
   ];
 
-  disabledTestPaths = [
-    # Relies upon filesystem extended attributes, and suid/guid bits
-    "tests/unit/sources/test_base.py"
-    "tests/unit/packages/test_base.py"
-    "tests/unit/state_manager"
-    "tests/unit/test_xattrs.py"
-    "tests/unit/packages/test_normalize.py"
-    # Relies upon presence of apt/dpkg.
-    "tests/unit/packages/test_apt_cache.py"
-    "tests/unit/packages/test_deb.py"
-    "tests/unit/packages/test_chisel.py"
-  ] ++ lib.optionals stdenv.isAarch64 [
-    # These tests have hardcoded "amd64" strings which fail on aarch64
-    "tests/unit/executor/test_environment.py"
-    "tests/unit/features/overlay/test_executor_environment.py"
-  ];
+  disabledTestPaths =
+    [
+      # Relies upon filesystem extended attributes, and suid/guid bits
+      "tests/unit/sources/test_base.py"
+      "tests/unit/packages/test_base.py"
+      "tests/unit/state_manager"
+      "tests/unit/test_xattrs.py"
+      "tests/unit/packages/test_normalize.py"
+      # Relies upon presence of apt/dpkg.
+      "tests/unit/packages/test_apt_cache.py"
+      "tests/unit/packages/test_deb.py"
+      "tests/unit/packages/test_chisel.py"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isAarch64 [
+      # These tests have hardcoded "amd64" strings which fail on aarch64
+      "tests/unit/executor/test_environment.py"
+      "tests/unit/features/overlay/test_executor_environment.py"
+    ];
 
   passthru.updateScript = nix-update-script { };
 
   meta = {
+    broken = lib.versionAtLeast pydantic-yaml.version "1";
     description = "Software artifact parts builder from Canonical";
     homepage = "https://github.com/canonical/craft-parts";
     changelog = "https://github.com/canonical/craft-parts/releases/tag/${version}";
@@ -121,4 +114,3 @@ buildPythonPackage rec {
     platforms = lib.platforms.linux;
   };
 }
-
diff --git a/pkgs/development/python-modules/craft-platforms/default.nix b/pkgs/development/python-modules/craft-platforms/default.nix
new file mode 100644
index 0000000000000..f183449961d35
--- /dev/null
+++ b/pkgs/development/python-modules/craft-platforms/default.nix
@@ -0,0 +1,62 @@
+{
+  lib,
+  buildPythonPackage,
+  annotated-types,
+  distro,
+  fetchFromGitHub,
+  nix-update-script,
+  pytest-check,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+}:
+
+buildPythonPackage rec {
+  pname = "craft-platforms";
+  version = "0.2.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "canonical";
+    repo = "craft-platforms";
+    rev = "refs/tags/${version}";
+    hash = "sha256-chCPuncy+//Y5iohTh0d8qRNaEno6Sqze2Zoas3uwPQ=";
+  };
+
+  postPatch = ''
+    substituteInPlace craft_platforms/__init__.py --replace-fail "dev" "${version}"
+  '';
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    annotated-types
+    distro
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-check
+  ];
+
+  pythonImportsCheck = [ "craft_platforms" ];
+
+  pytestFlagsArray = [ "tests/unit" ];
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = {
+    description = "Manage platforms and architectures for charm applications";
+    homepage = "https://github.com/canonical/craft-platforms";
+    changelog = "https://github.com/canonical/craft-platforms/releases/tag/${version}";
+    license = lib.licenses.lgpl3Only;
+    maintainers = with lib.maintainers; [ jnsgruk ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/python-modules/craft-providers/default.nix b/pkgs/development/python-modules/craft-providers/default.nix
index 4f463e628bd6a..8b91b0005ed5b 100644
--- a/pkgs/development/python-modules/craft-providers/default.nix
+++ b/pkgs/development/python-modules/craft-providers/default.nix
@@ -1,27 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nix-update-script
-, packaging
-, platformdirs
-, pydantic_1
-, pyyaml
-, requests-unixsocket
-, setuptools
-, setuptools-scm
-, urllib3
-, pytest-check
-, pytest-mock
-, pytestCheckHook
-, responses
-, freezegun
-, pytest-subprocess
-, pytest-logdog
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  nix-update-script,
+  packaging,
+  platformdirs,
+  pydantic_1,
+  pyyaml,
+  requests-unixsocket,
+  setuptools,
+  setuptools-scm,
+  urllib3,
+  pytest-check,
+  pytest-mock,
+  pytestCheckHook,
+  responses,
+  freezegun,
+  pytest-subprocess,
+  pytest-logdog,
 }:
 
 buildPythonPackage rec {
   pname = "craft-providers";
-  version = "1.23.1";
+  version = "1.24.2";
 
   pyproject = true;
 
@@ -29,7 +30,7 @@ buildPythonPackage rec {
     owner = "canonical";
     repo = "craft-providers";
     rev = "refs/tags/${version}";
-    hash = "sha256-opVgOtbwZD+uQJ10Q8QlgQaS9KjRFnQ4h98Ak7Ze5qQ=";
+    hash = "sha256-2629Xk2KB1WX3JzAupBWmKg+Ztp5FFJ0x9Xa/w+8tns=";
   };
 
   patches = [
@@ -51,10 +52,12 @@ buildPythonPackage rec {
     # The urllib3 incompat: https://github.com/msabramo/requests-unixsocket/pull/69
     # This is already patched in nixpkgs.
     substituteInPlace pyproject.toml \
-      --replace-fail "setuptools==69.1.1" "setuptools" \
+      --replace-fail "setuptools==" "setuptools>=" \
       --replace-fail "urllib3<2" "urllib3"
   '';
 
+  pythonRelaxDeps = [ "requests" ];
+
   nativeBuildInputs = [
     setuptools
     setuptools-scm
@@ -69,9 +72,7 @@ buildPythonPackage rec {
     urllib3
   ];
 
-  pythonImportsCheck = [
-    "craft_providers"
-  ];
+  pythonImportsCheck = [ "craft_providers" ];
 
   nativeCheckInputs = [
     freezegun
diff --git a/pkgs/development/python-modules/craft-store/default.nix b/pkgs/development/python-modules/craft-store/default.nix
index 637e7ed26a9d7..4011b01d60d06 100644
--- a/pkgs/development/python-modules/craft-store/default.nix
+++ b/pkgs/development/python-modules/craft-store/default.nix
@@ -10,7 +10,7 @@
   pydantic_1,
   pyyaml,
   pytestCheckHook,
-  keyring,
+  keyring_24,
   macaroonbakery,
   overrides,
   pyxdg,
@@ -20,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "craft-store";
-  version = "2.6.0";
+  version = "2.6.2";
 
   pyproject = true;
 
@@ -28,12 +28,12 @@ buildPythonPackage rec {
     owner = "canonical";
     repo = "craft-store";
     rev = "refs/tags/${version}";
-    hash = "sha256-VtKOe3IrvGcNWfp1/tg1cO94xtfkP7AbIHh0WTdlfbQ=";
+    hash = "sha256-QKfXOgAWMV1mVm32ZP3HQTJmWKm82dEDmy3fo5d67TU=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace-fail "setuptools==67.7.2" "setuptools"
+      --replace-fail "setuptools==" "setuptools>="
   '';
 
   nativeBuildInputs = [
@@ -42,7 +42,7 @@ buildPythonPackage rec {
   ];
 
   propagatedBuildInputs = [
-    keyring
+    keyring_24
     macaroonbakery
     overrides
     pydantic_1
@@ -51,6 +51,8 @@ buildPythonPackage rec {
     requests-toolbelt
   ];
 
+  pythonRelaxDeps = [ "macaroonbakery" ];
+
   pythonImportsCheck = [ "craft_store" ];
 
   nativeCheckInputs = [
diff --git a/pkgs/development/python-modules/cram/default.nix b/pkgs/development/python-modules/cram/default.nix
index 4efc13b530382..1f92211953ca8 100644
--- a/pkgs/development/python-modules/cram/default.nix
+++ b/pkgs/development/python-modules/cram/default.nix
@@ -1,4 +1,11 @@
-{stdenv, lib, buildPythonPackage, fetchPypi, bash, which}:
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  bash,
+  which,
+}:
 
 buildPythonPackage rec {
   version = "0.7";
@@ -23,12 +30,12 @@ buildPythonPackage rec {
   '';
 
   meta = {
-    description = "A simple testing framework for command line applications";
+    description = "Simple testing framework for command line applications";
     mainProgram = "cram";
     homepage = "https://bitheap.org/cram/";
     license = lib.licenses.gpl2Plus;
     maintainers = with lib.maintainers; [ jluttine ];
     # Tests fail on i686: https://hydra.nixos.org/build/52896671/nixlog/4
-    broken = stdenv.isi686;
+    broken = stdenv.hostPlatform.isi686;
   };
 }
diff --git a/pkgs/development/python-modules/cramjam/default.nix b/pkgs/development/python-modules/cramjam/default.nix
index 7a799429907ee..34571f05f774c 100644
--- a/pkgs/development/python-modules/cramjam/default.nix
+++ b/pkgs/development/python-modules/cramjam/default.nix
@@ -1,30 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, rustPlatform
-, stdenv
-, libiconv
-, hypothesis
-, numpy
-, pytest-xdist
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  rustPlatform,
+  stdenv,
+  libiconv,
+  hypothesis,
+  numpy,
+  pytest-xdist,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "cramjam";
-  version = "2.8.2";
+  version = "2.8.3";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "milesgranger";
     repo = "pyrus-cramjam";
     rev = "refs/tags/v${version}";
-    hash = "sha256-BO35s7qOW4+l968I9qn9L1m2BtgRFNYUNlA7W1sctT8=";
+    hash = "sha256-1KD5/oZjfdXav1ZByQoyyiDSzbmY4VJsSJg/FtUFdDE=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
-    hash = "sha256-YWXf+ZDJLq6VxI5sa9G63fCPz2377BVSTmPM0mQSu8M=";
+    hash = "sha256-Bp7EtyuLdLUfU3yvouNVE42klfqYt9QOwt+iGe521yI=";
   };
 
   buildAndTestSubdir = "cramjam-python";
@@ -34,7 +35,7 @@ buildPythonPackage rec {
     maturinBuildHook
   ];
 
-  buildInputs = lib.optional stdenv.isDarwin libiconv;
+  buildInputs = lib.optional stdenv.hostPlatform.isDarwin libiconv;
 
   nativeCheckInputs = [
     hypothesis
@@ -43,17 +44,17 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "cramjam-python/tests"
-  ];
+  pytestFlagsArray = [ "cramjam-python/tests" ];
 
   disabledTestPaths = [
     "cramjam-python/benchmarks/test_bench.py"
+    # test_variants.py appears to be flaky
+    #
+    # https://github.com/NixOS/nixpkgs/pull/311584#issuecomment-2117656380
+    "cramjam-python/tests/test_variants.py"
   ];
 
-  pythonImportsCheck = [
-    "cramjam"
-  ];
+  pythonImportsCheck = [ "cramjam" ];
 
   meta = with lib; {
     description = "Thin Python bindings to de/compression algorithms in Rust";
diff --git a/pkgs/development/python-modules/crashtest/default.nix b/pkgs/development/python-modules/crashtest/default.nix
index 296c80eae54af..e6c1395785629 100644
--- a/pkgs/development/python-modules/crashtest/default.nix
+++ b/pkgs/development/python-modules/crashtest/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pythonAtLeast }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonAtLeast,
+}:
 
 buildPythonPackage rec {
   pname = "crashtest";
@@ -21,6 +26,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/sdispater/crashtest";
     description = "Manage Python errors with ease";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/crate/default.nix b/pkgs/development/python-modules/crate/default.nix
index a7e03d3ecad42..ca4b0291ccd11 100644
--- a/pkgs/development/python-modules/crate/default.nix
+++ b/pkgs/development/python-modules/crate/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, fetchpatch
-, dask
-, urllib3
-, geojson
-, verlib2
-, pueblo
-, pandas
-, pythonOlder
-, sqlalchemy
-, pytestCheckHook
-, pytz
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  fetchpatch,
+  dask,
+  urllib3,
+  geojson,
+  verlib2,
+  pueblo,
+  pandas,
+  pythonOlder,
+  sqlalchemy,
+  pytestCheckHook,
+  pytz,
 }:
 
 buildPythonPackage rec {
@@ -73,7 +74,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/crate/crate-python";
-    description = "A Python client library for CrateDB";
+    description = "Python client library for CrateDB";
     changelog = "https://github.com/crate/crate-python/blob/${version}/CHANGES.txt";
     license = licenses.asl20;
     maintainers = with maintainers; [ doronbehar ];
diff --git a/pkgs/development/python-modules/crayons/default.nix b/pkgs/development/python-modules/crayons/default.nix
index c52cede171a24..30810bb9d2245 100644
--- a/pkgs/development/python-modules/crayons/default.nix
+++ b/pkgs/development/python-modules/crayons/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchPypi, buildPythonPackage, colorama }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  colorama,
+}:
 
 buildPythonPackage rec {
   pname = "crayons";
diff --git a/pkgs/development/python-modules/crc16/default.nix b/pkgs/development/python-modules/crc16/default.nix
index eda1987a5b076..6ef211c06fba1 100644
--- a/pkgs/development/python-modules/crc16/default.nix
+++ b/pkgs/development/python-modules/crc16/default.nix
@@ -1,19 +1,34 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pythonOlder,
+}:
 
 buildPythonPackage rec {
   pname = "crc16";
   version = "0.1.1";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "15nkx0pa4lskwin84flpk8fsw3jqg6wic6v3s83syjqg76h6my61";
+    hash = "sha256-wfhqoDkPS68H0mMbFrl5WA6uHZqXOoJs5FNToi7o05Y=";
   };
 
+  build-system = [ setuptools ];
+
+  # Tests are outdated
+  doCheck = false;
+
+  pythonImportsCheck = [ "crc16" ];
+
   meta = with lib; {
-    homepage = "https://code.google.com/archive/p/pycrc16/";
     description = "Python library for calculating CRC16";
-    license = licenses.lgpl3;
+    homepage = "https://code.google.com/archive/p/pycrc16/";
+    license = licenses.lgpl3Plus;
     maintainers = with maintainers; [ abbradar ];
   };
 }
diff --git a/pkgs/development/python-modules/crc32c/default.nix b/pkgs/development/python-modules/crc32c/default.nix
index 66d77756f780f..f5f44c351c15f 100644
--- a/pkgs/development/python-modules/crc32c/default.nix
+++ b/pkgs/development/python-modules/crc32c/default.nix
@@ -1,9 +1,16 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools
+}:
 
 buildPythonPackage rec {
-  version = "2.3.post0";
+  version = "2.4";
   pname = "crc32c";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.5";
 
@@ -11,9 +18,11 @@ buildPythonPackage rec {
     owner = "ICRAR";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-lPEojWeAhfWpGR+k+Tuo4n68iZOk7lUDxjWXj5vN4I0=";
+    hash = "sha256-rWR2MtTLhqqvgdqEyevg/i8ZHM3OU1bJb27JkBx1J3w=";
   };
 
+  nativeBuildInputs = [ setuptools ];
+
   nativeCheckInputs = [ pytestCheckHook ];
 
   meta = {
diff --git a/pkgs/development/python-modules/crccheck/default.nix b/pkgs/development/python-modules/crccheck/default.nix
index 0a9302b8841dd..63f6e570d71a5 100644
--- a/pkgs/development/python-modules/crccheck/default.nix
+++ b/pkgs/development/python-modules/crccheck/default.nix
@@ -1,14 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy3k
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy3k,
+  unittestCheckHook,
 }:
 
 let
   pname = "crccheck";
   version = "1.3.0";
-in buildPythonPackage {
+in
+buildPythonPackage {
   inherit pname version;
   format = "setuptools";
 
@@ -21,15 +23,13 @@ in buildPythonPackage {
     hash = "sha256-nujt3RWupvCtk7gORejtSwqqVjW9VwztOVGXBHW9T+k=";
   };
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   meta = with lib; {
     description = "Python library for CRCs and checksums";
     homepage = "https://github.com/MartinScharrer/crccheck";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/python-modules/crcmod/default.nix b/pkgs/development/python-modules/crcmod/default.nix
index 9bc2c6ac70e11..beff240c986eb 100644
--- a/pkgs/development/python-modules/crcmod/default.nix
+++ b/pkgs/development/python-modules/crcmod/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "crcmod";
diff --git a/pkgs/development/python-modules/credstash/default.nix b/pkgs/development/python-modules/credstash/default.nix
index dd950001c3d0d..97987cda532de 100644
--- a/pkgs/development/python-modules/credstash/default.nix
+++ b/pkgs/development/python-modules/credstash/default.nix
@@ -59,11 +59,11 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A utility for managing secrets in the cloud using AWS KMS and DynamoDB";
+    description = "Utility for managing secrets in the cloud using AWS KMS and DynamoDB";
     homepage = "https://github.com/LuminalOSS/credstash";
     changelog = "https://github.com/fugue/credstash/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     mainProgram = "credstash";
   };
 }
diff --git a/pkgs/development/python-modules/criticality-score/default.nix b/pkgs/development/python-modules/criticality-score/default.nix
index ffea5ad31dad3..dba803fe81279 100644
--- a/pkgs/development/python-modules/criticality-score/default.nix
+++ b/pkgs/development/python-modules/criticality-score/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, pygithub, python-gitlab }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pygithub,
+  python-gitlab,
+}:
 
 buildPythonPackage rec {
   pname = "criticality_score";
@@ -9,14 +15,17 @@ buildPythonPackage rec {
     hash = "sha256-5XkVT0blnLG158a01jDfQl1Rx9U1LMsqaMjTdN7Q4QQ=";
   };
 
-  propagatedBuildInputs = [ pygithub python-gitlab ];
+  propagatedBuildInputs = [
+    pygithub
+    python-gitlab
+  ];
 
   doCheck = false;
 
   pythonImportsCheck = [ "criticality_score" ];
 
   meta = with lib; {
-    description = "Python tool for computing the Open Source Project Criticality Score.";
+    description = "Python tool for computing the Open Source Project Criticality Score";
     mainProgram = "criticality_score";
     homepage = "https://github.com/ossf/criticality_score";
     changelog = "https://github.com/ossf/criticality_score/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/cron-descriptor/default.nix b/pkgs/development/python-modules/cron-descriptor/default.nix
index d4283b3af6ec1..f15b250c6b533 100644
--- a/pkgs/development/python-modules/cron-descriptor/default.nix
+++ b/pkgs/development/python-modules/cron-descriptor/default.nix
@@ -1,20 +1,22 @@
-{ lib
-, python
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pytestCheckHook
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  unittestCheckHook,
+  mock,
+  setuptools,
 }:
 
 buildPythonPackage rec {
-  pname = "cron_descriptor";
-  version = "1.4";
+  pname = "cron-descriptor";
+  version = "1.4.4";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "Salamek";
     repo = "cron-descriptor";
     rev = "refs/tags/${version}";
-    hash = "sha256-r5TMatjNYaPhPxhJbBGGshQf6VxKyBV6Za1lQoblxYA=";
+    hash = "sha256-NKAfNwIRnND4ume27CSPJoib9DysbpdD905SNP+wx0A=";
   };
 
   # remove tests_require, as we don't do linting anyways
@@ -22,19 +24,19 @@ buildPythonPackage rec {
     sed -i "/'pep8\|flake8\|pep8-naming',/d" setup.py
   '';
 
-  checkInputs = [
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [
     mock
+    unittestCheckHook
   ];
 
-  checkPhase = ''
-    ${python.interpreter} setup.py test
-  '';
-
   pythonImportsCheck = [ "cron_descriptor" ];
 
   meta = with lib; {
     description = "Library that converts cron expressions into human readable strings";
     homepage = "https://github.com/Salamek/cron-descriptor";
+    changelog = "https://github.com/Salamek/cron-descriptor/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ phaer ];
   };
diff --git a/pkgs/development/python-modules/croniter/default.nix b/pkgs/development/python-modules/croniter/default.nix
index 8db83b619969c..2437785db5b28 100644
--- a/pkgs/development/python-modules/croniter/default.nix
+++ b/pkgs/development/python-modules/croniter/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, pytz
-, tzlocal
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  pytz,
+  tzlocal,
 }:
 
 buildPythonPackage rec {
   pname = "croniter";
-  version = "2.0.3";
+  version = "3.0.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-KHY605xAThWRQIdPCAEM/YoY9MKnzqHOc+lQakOAz8E=";
+    hash = "sha256-NBF+wXQfEKe9DsOtfY8OuPpFei/rm+MuaiJQ4ViVdmg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     python-dateutil
@@ -35,15 +34,13 @@ buildPythonPackage rec {
     tzlocal
   ];
 
-  pythonImportsCheck = [
-    "croniter"
-  ];
+  pythonImportsCheck = [ "croniter" ];
 
   meta = with lib; {
     description = "Library to iterate over datetime object with cron like format";
     homepage = "https://github.com/kiorky/croniter";
     changelog = "https://github.com/kiorky/croniter/blob/${version}/CHANGELOG.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cronsim/default.nix b/pkgs/development/python-modules/cronsim/default.nix
index 098dbe711d9d5..2ecb45c3a73af 100644
--- a/pkgs/development/python-modules/cronsim/default.nix
+++ b/pkgs/development/python-modules/cronsim/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-TSVFkMCMmrMXaPJPPNjIML+z98i1iIYuKH7hHiZnJkg=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "cronsim"
-  ];
+  pythonImportsCheck = [ "cronsim" ];
 
   meta = with lib; {
     description = "Cron expression parser and evaluator";
diff --git a/pkgs/development/python-modules/crontab/default.nix b/pkgs/development/python-modules/crontab/default.nix
index fea3e9909b701..7bb780ab01575 100644
--- a/pkgs/development/python-modules/crontab/default.nix
+++ b/pkgs/development/python-modules/crontab/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, python-dateutil
-, pytz
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  python-dateutil,
+  pytz,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-8vMkgBU1jIluo9+hAvk2KNM+Wn0+PvJqFNwX+JLXD+w=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -32,9 +31,7 @@ buildPythonPackage rec {
     pytz
   ];
 
-  pythonImportsCheck = [
-    "crontab"
-  ];
+  pythonImportsCheck = [ "crontab" ];
 
   meta = with lib; {
     description = "Parse and use crontab schedules in Python";
diff --git a/pkgs/development/python-modules/crossandra/default.nix b/pkgs/development/python-modules/crossandra/default.nix
new file mode 100644
index 0000000000000..c7400b62f53ac
--- /dev/null
+++ b/pkgs/development/python-modules/crossandra/default.nix
@@ -0,0 +1,39 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  result,
+  mypy
+}:
+
+buildPythonPackage rec {
+  pname = "crossandra";
+  version = "2.2.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "trag1c";
+    repo = "crossandra";
+    rev = "refs/tags/${version}";
+    hash = "sha256-/JhrjXRH7Rs2bUil9HRneBC9wlVYEyfwivjzb+eyRv8=";
+  };
+
+  build-system = [ setuptools mypy ];
+  dependencies = [ result ];
+
+  pythonImportsCheck = [ "crossandra" ];
+  prePatch = ''
+    # pythonRelaxDepsHook did not work
+    substituteInPlace pyproject.toml \
+      --replace-fail "result ~= 0.9.0" "result >= 0.9.0"
+  '';
+
+  meta = {
+    changelog = "https://github.com/trag1c/crossandra/blob/${src.rev}/CHANGELOG.md";
+    description = "Fast and simple enum/regex-based tokenizer with decent configurability";
+    license = lib.licenses.mit;
+    homepage = "https://trag1c.github.io/crossandra";
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/crossplane/default.nix b/pkgs/development/python-modules/crossplane/default.nix
index d69708b8e212d..fba9c59aa3269 100644
--- a/pkgs/development/python-modules/crossplane/default.nix
+++ b/pkgs/development/python-modules/crossplane/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, pytestCheckHook
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  pytestCheckHook,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-DfIF+JvjIREi7zd5ZQ7Co/CIKC5iUeOgR/VLDPmrtTQ=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "crossplane"
-  ];
+  pythonImportsCheck = [ "crossplane" ];
 
   meta = with lib; {
     description = "NGINX configuration file parser and builder";
diff --git a/pkgs/development/python-modules/crownstone-cloud/default.nix b/pkgs/development/python-modules/crownstone-cloud/default.nix
index d8ee18a090d4b..089d60fceb6f2 100644
--- a/pkgs/development/python-modules/crownstone-cloud/default.nix
+++ b/pkgs/development/python-modules/crownstone-cloud/default.nix
@@ -1,57 +1,42 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, certifi
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  certifi,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "crownstone-cloud";
-  version = "1.4.9";
-  format = "setuptools";
+  version = "1.4.11";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  src = fetchFromGitHub {
-    owner = "crownstone";
-    repo = "crownstone-lib-python-cloud";
-    rev = "refs/tags/${version}";
-    hash = "sha256-CS1zeQiWPnsGCWixCsN9sz08mPORW5sVqIpSFPh0Qt0=";
+  src = fetchPypi {
+    pname = "crownstone_cloud";
+    inherit version;
+    hash = "sha256-s84pK52uMupxQfdMldV14V3nj+yVku1Vw13CRX4o08U=";
   };
 
-  patches = [
-    # Remove asynctest, https://github.com/crownstone/crownstone-lib-python-cloud/pull/4
-    (fetchpatch {
-      name = "remove-asynctest.patch";
-      url = "https://github.com/crownstone/crownstone-lib-python-cloud/commit/7f22c9b284bf8d7f6f43e205816787dd3bb37e78.patch";
-      hash = "sha256-LS1O9LVB14WyBXfuHf/bs1juJ59zWhJ8pL4aGtVrTG8=";
-    })
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     certifi
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-
-  postPatch = ''
-    sed -i '/codecov/d' requirements.txt
-  '';
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "crownstone_cloud"
-  ];
+  pythonImportsCheck = [ "crownstone_cloud" ];
 
   meta = with lib; {
     description = "Python module for communicating with Crownstone Cloud and devices";
-    homepage = "https://github.com/crownstone/crownstone-lib-python-cloud";
-    license = with licenses; [ mit ];
+    homepage = "https://github.com/Crownstone-Community/crownstone-lib-python-cloud";
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/crownstone-core/default.nix b/pkgs/development/python-modules/crownstone-core/default.nix
index b03f76f8f8536..7e297cce4f559 100644
--- a/pkgs/development/python-modules/crownstone-core/default.nix
+++ b/pkgs/development/python-modules/crownstone-core/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyaes
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyaes,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-zrlCzx7N3aUcTUNa64jSzDdWgQneX+Hc5n8TTTcZ4ck=";
   };
 
-  propagatedBuildInputs = [
-    pyaes
-  ];
+  propagatedBuildInputs = [ pyaes ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "crownstone_core"
-  ];
+  pythonImportsCheck = [ "crownstone_core" ];
 
   meta = with lib; {
     description = "Python module with shared classes, util functions and definition of Crownstone";
diff --git a/pkgs/development/python-modules/crownstone-sse/default.nix b/pkgs/development/python-modules/crownstone-sse/default.nix
index ca2cd4e0d154d..82f106d8f9ec6 100644
--- a/pkgs/development/python-modules/crownstone-sse/default.nix
+++ b/pkgs/development/python-modules/crownstone-sse/default.nix
@@ -1,26 +1,29 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, certifi
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  certifi,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "crownstone-sse";
-  version = "2.0.4";
-  format = "setuptools";
+  version = "2.0.5";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  src = fetchFromGitHub {
-    owner = "crownstone";
-    repo = "crownstone-lib-python-sse";
-    rev = version;
-    hash = "sha256-z/z8MmydHkHubwuX02gGbOcOEZ+FHX4i82vAK5gAl+c=";
+  src = fetchPypi {
+    pname = "crownstone_sse";
+    inherit version;
+    hash = "sha256-RUqo68UAVGV+JmauKsGlp7dG8FzixHBDnr3eho/IQdY=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     aiohttp
     certifi
   ];
@@ -28,13 +31,11 @@ buildPythonPackage rec {
   # Tests are only providing coverage
   doCheck = false;
 
-  pythonImportsCheck = [
-    "crownstone_sse"
-  ];
+  pythonImportsCheck = [ "crownstone_sse" ];
 
   meta = with lib; {
     description = "Python module for listening to Crownstone SSE events";
-    homepage = "https://github.com/crownstone/crownstone-lib-python-sse";
+    homepage = "https://github.com/Crownstone-Community/crownstone-lib-python-sse";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/crownstone-uart/default.nix b/pkgs/development/python-modules/crownstone-uart/default.nix
index edfd9dff59e9b..177b319ca4cba 100644
--- a/pkgs/development/python-modules/crownstone-uart/default.nix
+++ b/pkgs/development/python-modules/crownstone-uart/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, crownstone-core
-, buildPythonPackage
-, pyserial
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  crownstone-core,
+  buildPythonPackage,
+  pyserial,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "crownstone_uart"
-  ];
+  pythonImportsCheck = [ "crownstone_uart" ];
 
   meta = with lib; {
     description = "Python module for communicating with Crownstone USB dongles";
diff --git a/pkgs/development/python-modules/cryptacular/default.nix b/pkgs/development/python-modules/cryptacular/default.nix
deleted file mode 100644
index 977de2396f2c0..0000000000000
--- a/pkgs/development/python-modules/cryptacular/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27, pythonAtLeast
-, coverage, nose, pbkdf2 }:
-
-buildPythonPackage rec {
-  pname = "cryptacular";
-  version = "1.6.2";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "7b529cb2b8a3c7e5be77921bf1ebc653d4d3a8f791375cc6f971b20db2404176";
-  };
-
-  buildInputs = [ coverage nose ];
-  propagatedBuildInputs = [ pbkdf2 ];
-
-  # TODO: tests fail: TypeError: object of type 'NoneType' has no len()
-  doCheck = false;
-
-  # Python >=2.7.15, >=3.6.5 are incompatible:
-  # https://bitbucket.org/dholth/cryptacular/issues/11
-  disabled = isPy27 || pythonAtLeast "3.6";
-
-  meta = with lib; {
-    maintainers = with maintainers; [ domenkozar ];
-  };
-}
diff --git a/pkgs/development/python-modules/cryptg/default.nix b/pkgs/development/python-modules/cryptg/default.nix
index 52fec2afc231a..c038eb46668ae 100644
--- a/pkgs/development/python-modules/cryptg/default.nix
+++ b/pkgs/development/python-modules/cryptg/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, cargo
-, rustPlatform
-, rustc
-, setuptools-rust
-, libiconv
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  cargo,
+  rustPlatform,
+  rustc,
+  setuptools-rust,
+  libiconv,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
     cargo
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [
-    libiconv
-  ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/cryptodatahub/default.nix b/pkgs/development/python-modules/cryptodatahub/default.nix
index e19a4137e4f3d..ba5d3a0fcf1c6 100644
--- a/pkgs/development/python-modules/cryptodatahub/default.nix
+++ b/pkgs/development/python-modules/cryptodatahub/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, asn1crypto
-, attrs
-, beautifulsoup4
-, buildPythonPackage
-, fetchFromGitLab
-, pathlib2
-, pyfakefs
-, python-dateutil
-, pythonOlder
-, setuptools
-, six
-, unittestCheckHook
-, urllib3
+{
+  lib,
+  asn1crypto,
+  attrs,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitLab,
+  pathlib2,
+  pyfakefs,
+  python-dateutil,
+  pythonOlder,
+  setuptools,
+  six,
+  unittestCheckHook,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "cryptodatahub";
-  version = "0.12.2";
+  version = "0.12.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -25,19 +26,17 @@ buildPythonPackage rec {
     owner = "coroner";
     repo = "cryptodatahub";
     rev = "refs/tags/v${version}";
-    hash = "sha256-zVHHBQYcl26zTtXPAs/AgKOojKQORu08rpkfY0l1zjM=";
+    hash = "sha256-jYMzvh4tgfLS7Za0MYHbWbczptAvENfzfTEV9Drlfto=";
   };
 
   postPatch = ''
     substituteInPlace requirements.txt  \
-      --replace-warn "attrs>=20.3.0,<22.0.1" "attrs>=20.3.0"
+      --replace-fail "attrs>=20.3.0,<22.0.1" "attrs>=20.3.0"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     asn1crypto
     attrs
     pathlib2
@@ -52,14 +51,12 @@ buildPythonPackage rec {
     unittestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "cryptodatahub"
-  ];
-
+  pythonImportsCheck = [ "cryptodatahub" ];
 
   preCheck = ''
     # failing tests
     rm test/updaters/test_common.py
+    rm test/common/test_key.py
     # Tests require network access
     rm test/common/test_utils.py
   '';
@@ -69,6 +66,6 @@ buildPythonPackage rec {
     homepage = "https://gitlab.com/coroner/cryptodatahub";
     changelog = "https://gitlab.com/coroner/cryptodatahub/-/blob/${version}/CHANGELOG.rst";
     license = licenses.mpl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cryptography/default.nix b/pkgs/development/python-modules/cryptography/default.nix
index 838ae389d38fd..1d1e43a031657 100644
--- a/pkgs/development/python-modules/cryptography/default.nix
+++ b/pkgs/development/python-modules/cryptography/default.nix
@@ -1,55 +1,46 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, callPackage
-, cargo
-, certifi
-, cffi
-, cryptography-vectors ? (callPackage ./vectors.nix { })
-, fetchPypi
-, fetchpatch2
-, isPyPy
-, libiconv
-, libxcrypt
-, openssl
-, pkg-config
-, pretend
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, rustc
-, rustPlatform
-, Security
-, setuptoolsRustBuildHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  callPackage,
+  setuptools,
+  bcrypt,
+  certifi,
+  cffi,
+  cryptography-vectors ? (callPackage ./vectors.nix { }),
+  fetchPypi,
+  isPyPy,
+  libiconv,
+  libxcrypt,
+  openssl,
+  pkg-config,
+  pretend,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  rustPlatform,
+  Security,
 }:
 
 buildPythonPackage rec {
   pname = "cryptography";
-  version = "42.0.5"; # Also update the hash in vectors.nix
+  version = "43.0.0"; # Also update the hash in vectors.nix
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-b+B+7JXf1HfrlTCu9b6tNP7IGbOq9sW9bSBWXaYHv+E=";
+    hash = "sha256-uIB1raLVGqnxgoNTLJ9g5yFwBBu6iNfzfknLsQJ1KZ4=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     sourceRoot = "${pname}-${version}/${cargoRoot}";
     name = "${pname}-${version}";
-    hash = "sha256-Pw3ftpcDMfZr/w6US5fnnyPVsFSB9+BuIKazDocYjTU=";
+    hash = "sha256-TEQy8PrIaZshiBFTqR/OJp3e/bVM1USjcmpDYcjPJPM=";
   };
 
-  patches = [
-    (fetchpatch2 {
-      # skip overflowing tests on 32 bit; https://github.com/pyca/cryptography/pull/10366
-      url = "https://github.com/pyca/cryptography/commit/d741901dddd731895346636c0d3556c6fa51fbe6.patch";
-      hash = "sha256-eC+MZg5O8Ia5CbjRE4y+JhaFs3Q5c62QtPHr3x9T+zw=";
-    })
-  ];
-
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace-fail "--benchmark-disable" ""
@@ -57,28 +48,24 @@ buildPythonPackage rec {
 
   cargoRoot = "src/rust";
 
-  nativeBuildInputs = [
+  build-system = [
     rustPlatform.cargoSetupHook
-    setuptoolsRustBuildHook
-    cargo
-    rustc
+    rustPlatform.maturinBuildHook
     pkg-config
-  ] ++ lib.optionals (!isPyPy) [
-    cffi
-  ];
+    setuptools
+  ] ++ lib.optionals (!isPyPy) [ cffi ];
 
-  buildInputs = [
-    openssl
-  ] ++ lib.optionals stdenv.isDarwin [
-    Security
-    libiconv
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    libxcrypt
-  ];
+  buildInputs =
+    [ openssl ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      Security
+      libiconv
+    ]
+    ++ lib.optionals (pythonOlder "3.9") [ libxcrypt ];
 
-  propagatedBuildInputs = lib.optionals (!isPyPy) [
-    cffi
-  ];
+  dependencies = lib.optionals (!isPyPy) [ cffi ];
+
+  optional-dependencies.ssh = [ bcrypt ];
 
   nativeCheckInputs = [
     certifi
@@ -86,28 +73,34 @@ buildPythonPackage rec {
     pretend
     pytestCheckHook
     pytest-xdist
-  ];
+  ] ++ optional-dependencies.ssh;
 
-  pytestFlagsArray = [
-    "--disable-pytest-warnings"
-  ];
+  pytestFlagsArray = [ "--disable-pytest-warnings" ];
 
   disabledTestPaths = [
     # save compute time by not running benchmarks
     "tests/bench"
   ];
 
+  passthru = {
+    vectors = cryptography-vectors;
+  };
+
   meta = with lib; {
-    description = "A package which provides cryptographic recipes and primitives";
+    description = "Package which provides cryptographic recipes and primitives";
     longDescription = ''
       Cryptography includes both high level recipes and low level interfaces to
       common cryptographic algorithms such as symmetric ciphers, message
       digests, and key derivation functions.
     '';
     homepage = "https://github.com/pyca/cryptography";
-    changelog = "https://cryptography.io/en/latest/changelog/#v"
-      + replaceStrings [ "." ] [ "-" ] version;
-    license = with licenses; [ asl20 bsd3 psfl ];
+    changelog =
+      "https://cryptography.io/en/latest/changelog/#v" + replaceStrings [ "." ] [ "-" ] version;
+    license = with licenses; [
+      asl20
+      bsd3
+      psfl
+    ];
     maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/cryptography/vectors.nix b/pkgs/development/python-modules/cryptography/vectors.nix
index a19ab7579d1f1..d0f635df8b9e2 100644
--- a/pkgs/development/python-modules/cryptography/vectors.nix
+++ b/pkgs/development/python-modules/cryptography/vectors.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cryptography
-, flit-core
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cryptography,
+  flit-core,
 }:
 
 buildPythonPackage rec {
@@ -14,25 +15,24 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "cryptography_vectors";
     inherit version;
-    hash = "sha256-UFzV47DLMtoVJvBwQrf8OKS2w1ZxDLc9K192sDejjtE=";
+    hash = "sha256-XJ0JpzLVQzzt4VQqluzXCoDhIq8EfudAS83x88y45wI=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   # No tests included
   doCheck = false;
 
-  pythonImportsCheck = [
-    "cryptography_vectors"
-  ];
+  pythonImportsCheck = [ "cryptography_vectors" ];
 
   meta = with lib; {
     description = "Test vectors for the cryptography package";
     homepage = "https://cryptography.io/en/latest/development/test-vectors/";
     downloadPage = "https://github.com/pyca/cryptography/tree/master/vectors";
-    license = with licenses; [ asl20 bsd3 ];
+    license = with licenses; [
+      asl20
+      bsd3
+    ];
     maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/cryptolyzer/default.nix b/pkgs/development/python-modules/cryptolyzer/default.nix
index 755f141c75091..98f3ce9ce8abb 100644
--- a/pkgs/development/python-modules/cryptolyzer/default.nix
+++ b/pkgs/development/python-modules/cryptolyzer/default.nix
@@ -1,32 +1,32 @@
-{ lib
-, attrs
-, beautifulsoup4
-, buildPythonPackage
-, certvalidator
-, colorama
-, cryptoparser
-, dnspython
-, fetchPypi
-, pathlib2
-, pyfakefs
-, python-dateutil
-, pythonOlder
-, requests
-, setuptools
-, urllib3
+{
+  lib,
+  attrs,
+  beautifulsoup4,
+  buildPythonPackage,
+  certvalidator,
+  colorama,
+  cryptoparser,
+  dnspython,
+  fetchPypi,
+  pathlib2,
+  pyfakefs,
+  python-dateutil,
+  pythonOlder,
+  requests,
+  setuptools,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "cryptolyzer";
-  version = "0.12.3";
+  version = "0.12.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    pname = "CryptoLyzer";
-    inherit version;
-    hash = "sha256-UdM0+PkO3K4XshcqaDkEKry6Spny9KMZAHiADxxth+c=";
+    inherit pname version;
+    hash = "sha256-Qc1L4F2U/nk37s/mIa2YgJZqC2dkPsB/Si84SEl576Q=";
   };
 
   postPatch = ''
@@ -35,9 +35,7 @@ buildPythonPackage rec {
       --replace-warn "bs4" "beautifulsoup4"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     attrs
@@ -56,9 +54,7 @@ buildPythonPackage rec {
   # Tests require networking
   doCheck = false;
 
-  pythonImportsCheck = [
-    "cryptolyzer"
-  ];
+  pythonImportsCheck = [ "cryptolyzer" ];
 
   meta = with lib; {
     description = "Cryptographic protocol analyzer";
diff --git a/pkgs/development/python-modules/cryptoparser/default.nix b/pkgs/development/python-modules/cryptoparser/default.nix
index fc18fadc3a3a5..846b2643ebc94 100644
--- a/pkgs/development/python-modules/cryptoparser/default.nix
+++ b/pkgs/development/python-modules/cryptoparser/default.nix
@@ -1,36 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, attrs
-, asn1crypto
-, cryptodatahub
-, python-dateutil
-, urllib3
-, pytestCheckHook
+{
+  lib,
+  asn1crypto,
+  attrs,
+  buildPythonPackage,
+  cryptodatahub,
+  fetchPypi,
+  python-dateutil,
+  pythonOlder,
+  setuptools,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "cryptoparser";
-  version = "0.12.3";
+  version = "0.12.5";
   pyproject = true;
 
+  disabled = pythonOlder "3.7";
+
   src = fetchPypi {
-    pname = "CryptoParser";
-    inherit version;
-    hash = "sha256-1A0VEpUPsYtEu2aT+ldt/Z/PtV8lvD+9jSx75yGB6Ao=";
+    inherit pname version;
+    hash = "sha256-t8vK7T6nz1iH81fTMEYkQv7E7EjmkTx3u4zUIybEm5E=";
   };
 
   postPatch = ''
     substituteInPlace requirements.txt  \
-      --replace-warn "attrs>=20.3.0,<22.0.1" "attrs>=20.3.0"
+      --replace-fail "attrs>=20.3.0,<22.0.1" "attrs>=20.3.0"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     asn1crypto
     attrs
     cryptodatahub
@@ -38,9 +38,7 @@ buildPythonPackage rec {
     urllib3
   ];
 
-  pythonImportsCheck = [
-    "cryptoparser"
-  ];
+  pythonImportsCheck = [ "cryptoparser" ];
 
   meta = with lib; {
     description = "Security protocol parser and generator";
diff --git a/pkgs/development/python-modules/crysp/default.nix b/pkgs/development/python-modules/crysp/default.nix
index dd8d43eac84bb..d3a555a6d801c 100644
--- a/pkgs/development/python-modules/crysp/default.nix
+++ b/pkgs/development/python-modules/crysp/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, grandalf
-, matplotlib
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  grandalf,
+  matplotlib,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,18 +27,14 @@ buildPythonPackage rec {
     matplotlib
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace setup.py \
       --replace "'pytest-runner'," ""
   '';
 
-  pythonImportsCheck = [
-    "crysp"
-  ];
+  pythonImportsCheck = [ "crysp" ];
 
   meta = with lib; {
     description = "Module that provides crypto-related facilities";
diff --git a/pkgs/development/python-modules/crytic-compile/default.nix b/pkgs/development/python-modules/crytic-compile/default.nix
index 2bcda1d7fd72e..41a3d80a50cee 100644
--- a/pkgs/development/python-modules/crytic-compile/default.nix
+++ b/pkgs/development/python-modules/crytic-compile/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, cbor2
-, fetchFromGitHub
-, pycryptodome
-, pythonOlder
-, setuptools
-, solc-select
-, toml
+{
+  lib,
+  buildPythonPackage,
+  cbor2,
+  fetchFromGitHub,
+  pycryptodome,
+  pythonOlder,
+  setuptools,
+  solc-select,
+  toml,
 }:
 
 buildPythonPackage rec {
@@ -37,9 +38,7 @@ buildPythonPackage rec {
   # required for import check to work
   # PermissionError: [Errno 13] Permission denied: '/homeless-shelter'
   env.HOME = "/tmp";
-  pythonImportsCheck = [
-    "crytic_compile"
-  ];
+  pythonImportsCheck = [ "crytic_compile" ];
 
   meta = with lib; {
     description = "Abstraction layer for smart contract build systems";
@@ -47,6 +46,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/crytic/crytic-compile";
     changelog = "https://github.com/crytic/crytic-compile/releases/tag/${version}";
     license = licenses.agpl3Plus;
-    maintainers = with maintainers; [ arturcygan hellwolf ];
+    maintainers = with maintainers; [
+      arturcygan
+      hellwolf
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/cson/default.nix b/pkgs/development/python-modules/cson/default.nix
index b16ee0202b2db..c32adee78e98b 100644
--- a/pkgs/development/python-modules/cson/default.nix
+++ b/pkgs/development/python-modules/cson/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, speg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  speg,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "cson" ];
 
   meta = with lib; {
-    description = "A python parser for the Coffeescript Object Notation (CSON)";
+    description = "Python parser for the Coffeescript Object Notation (CSON)";
     homepage = "https://github.com/avakar/pycson";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ xworld21 ];
diff --git a/pkgs/development/python-modules/csrmesh/default.nix b/pkgs/development/python-modules/csrmesh/default.nix
index 81f3a25b34e51..19302c7090005 100644
--- a/pkgs/development/python-modules/csrmesh/default.nix
+++ b/pkgs/development/python-modules/csrmesh/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, bluepy
-, buildPythonPackage
-, fetchPypi
-, pycryptodomex
+{
+  lib,
+  bluepy,
+  buildPythonPackage,
+  fetchPypi,
+  pycryptodomex,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/css-html-js-minify/default.nix b/pkgs/development/python-modules/css-html-js-minify/default.nix
index f84dfbcaaecb4..df6f74caa5716 100644
--- a/pkgs/development/python-modules/css-html-js-minify/default.nix
+++ b/pkgs/development/python-modules/css-html-js-minify/default.nix
@@ -1,28 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  distutils,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "css-html-js-minify";
   version = "2.5.5";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "4a9f11f7e0496f5284d12111f3ba4ff5ff2023d12f15d195c9c48bd97013746c";
+    hash = "sha256-Sp8R9+BJb1KE0SER87pP9f8gI9EvFdGVycSL2XATdGw=";
   };
 
-  doCheck = false; # Tests are useless and broken
+  build-system = [
+    distutils
+    setuptools
+  ];
+
+  # Tests are useless and broken
+  doCheck = false;
 
   pythonImportsCheck = [ "css_html_js_minify" ];
 
   meta = with lib; {
     description = "StandAlone Async cross-platform Minifier for the Web";
-    mainProgram = "css-html-js-minify";
     homepage = "https://github.com/juancarlospaco/css-html-js-minify";
-    license = with licenses; [ gpl3Plus lgpl3Plus mit ];
+    license = with licenses; [
+      gpl3Plus
+      lgpl3Plus
+      mit
+    ];
     maintainers = with maintainers; [ FlorianFranzen ];
+    mainProgram = "css-html-js-minify";
   };
 }
diff --git a/pkgs/development/python-modules/css-inline/Cargo.lock b/pkgs/development/python-modules/css-inline/Cargo.lock
index 429622a63cb85..cbd1794e69948 100644
--- a/pkgs/development/python-modules/css-inline/Cargo.lock
+++ b/pkgs/development/python-modules/css-inline/Cargo.lock
@@ -18,6 +18,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
 
 [[package]]
+name = "ahash"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "version_check",
+ "zerocopy",
+]
+
+[[package]]
+name = "allocator-api2"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
+
+[[package]]
 name = "android-tzdata"
 version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -34,15 +52,15 @@ dependencies = [
 
 [[package]]
 name = "autocfg"
-version = "1.1.0"
+version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
 
 [[package]]
 name = "backtrace"
-version = "0.3.69"
+version = "0.3.71"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
+checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d"
 dependencies = [
  "addr2line",
  "cc",
@@ -55,27 +73,21 @@ dependencies = [
 
 [[package]]
 name = "base64"
-version = "0.21.7"
+version = "0.22.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
 
 [[package]]
 name = "bitflags"
-version = "1.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-
-[[package]]
-name = "bitflags"
-version = "2.4.2"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
+checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
 
 [[package]]
 name = "built"
-version = "0.7.1"
+version = "0.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38d17f4d6e4dc36d1a02fbedc2753a096848e7c1b0772f7654eab8e2c927dd53"
+checksum = "41bfbdb21256b87a8b5e80fab81a8eed158178e812fd7ba451907518b2742f16"
 dependencies = [
  "cargo-lock",
  "chrono",
@@ -83,9 +95,9 @@ dependencies = [
 
 [[package]]
 name = "bumpalo"
-version = "3.15.0"
+version = "3.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d32a994c2b3ca201d9b263612a374263f05e7adde37c4707f693dcd375076d1f"
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
 
 [[package]]
 name = "byteorder"
@@ -95,9 +107,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 
 [[package]]
 name = "bytes"
-version = "1.5.0"
+version = "1.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
 
 [[package]]
 name = "cargo-lock"
@@ -113,12 +125,9 @@ dependencies = [
 
 [[package]]
 name = "cc"
-version = "1.0.83"
+version = "1.0.96"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
-dependencies = [
- "libc",
-]
+checksum = "065a29261d53ba54260972629f9ca6bffa69bac13cd1fed61420f7fa68b9f8bd"
 
 [[package]]
 name = "cfg-if"
@@ -128,24 +137,14 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[package]]
 name = "chrono"
-version = "0.4.34"
+version = "0.4.38"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b"
+checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
 dependencies = [
  "android-tzdata",
  "iana-time-zone",
  "num-traits",
- "windows-targets 0.52.0",
-]
-
-[[package]]
-name = "core-foundation"
-version = "0.9.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
-dependencies = [
- "core-foundation-sys",
- "libc",
+ "windows-targets 0.52.5",
 ]
 
 [[package]]
@@ -181,11 +180,12 @@ checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
 
 [[package]]
 name = "css-inline"
-version = "0.13.0"
+version = "0.14.1"
 dependencies = [
  "cssparser",
  "html5ever",
  "indexmap",
+ "lru",
  "reqwest",
  "rustc-hash",
  "selectors",
@@ -195,7 +195,7 @@ dependencies = [
 
 [[package]]
 name = "css-inline-python"
-version = "0.13.0"
+version = "0.14.1"
 dependencies = [
  "built",
  "css-inline",
@@ -225,7 +225,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
 dependencies = [
  "quote",
- "syn 2.0.49",
+ "syn 2.0.60",
 ]
 
 [[package]]
@@ -256,18 +256,9 @@ dependencies = [
 
 [[package]]
 name = "either"
-version = "1.10.0"
+version = "1.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
-
-[[package]]
-name = "encoding_rs"
-version = "0.8.33"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"
-dependencies = [
- "cfg-if",
-]
+checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2"
 
 [[package]]
 name = "equivalent"
@@ -307,6 +298,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
 dependencies = [
  "futures-core",
+ "futures-sink",
 ]
 
 [[package]]
@@ -341,6 +333,7 @@ checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
 dependencies = [
  "futures-core",
  "futures-io",
+ "futures-sink",
  "futures-task",
  "memchr",
  "pin-project-lite",
@@ -359,9 +352,9 @@ dependencies = [
 
 [[package]]
 name = "getrandom"
-version = "0.2.12"
+version = "0.2.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
+checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c"
 dependencies = [
  "cfg-if",
  "libc",
@@ -375,31 +368,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
 
 [[package]]
-name = "h2"
-version = "0.3.24"
+name = "hashbrown"
+version = "0.14.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
 dependencies = [
- "bytes",
- "fnv",
- "futures-core",
- "futures-sink",
- "futures-util",
- "http",
- "indexmap",
- "slab",
- "tokio",
- "tokio-util",
- "tracing",
+ "ahash",
+ "allocator-api2",
 ]
 
 [[package]]
-name = "hashbrown"
-version = "0.14.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
-
-[[package]]
 name = "heck"
 version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -407,29 +385,29 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
 
 [[package]]
 name = "hermit-abi"
-version = "0.3.6"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
 
 [[package]]
 name = "html5ever"
-version = "0.26.0"
+version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7"
+checksum = "c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4"
 dependencies = [
  "log",
  "mac",
  "markup5ever",
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.60",
 ]
 
 [[package]]
 name = "http"
-version = "0.2.11"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb"
+checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
 dependencies = [
  "bytes",
  "fnv",
@@ -438,12 +416,24 @@ dependencies = [
 
 [[package]]
 name = "http-body"
-version = "0.4.6"
+version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
+checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643"
 dependencies = [
  "bytes",
  "http",
+]
+
+[[package]]
+name = "http-body-util"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "http",
+ "http-body",
  "pin-project-lite",
 ]
 
@@ -454,47 +444,59 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
 
 [[package]]
-name = "httpdate"
-version = "1.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
-
-[[package]]
 name = "hyper"
-version = "0.14.28"
+version = "1.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80"
+checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d"
 dependencies = [
  "bytes",
  "futures-channel",
- "futures-core",
  "futures-util",
- "h2",
  "http",
  "http-body",
  "httparse",
- "httpdate",
  "itoa",
  "pin-project-lite",
- "socket2",
+ "smallvec",
  "tokio",
- "tower-service",
- "tracing",
  "want",
 ]
 
 [[package]]
 name = "hyper-rustls"
-version = "0.24.2"
+version = "0.26.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
+checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c"
 dependencies = [
  "futures-util",
  "http",
  "hyper",
+ "hyper-util",
  "rustls",
+ "rustls-pki-types",
  "tokio",
  "tokio-rustls",
+ "tower-service",
+]
+
+[[package]]
+name = "hyper-util"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-util",
+ "http",
+ "http-body",
+ "hyper",
+ "pin-project-lite",
+ "socket2",
+ "tokio",
+ "tower",
+ "tower-service",
+ "tracing",
 ]
 
 [[package]]
@@ -532,9 +534,9 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.2.3"
+version = "2.2.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
 dependencies = [
  "equivalent",
  "hashbrown",
@@ -542,9 +544,9 @@ dependencies = [
 
 [[package]]
 name = "indoc"
-version = "2.0.4"
+version = "2.0.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8"
+checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
 
 [[package]]
 name = "ipnet"
@@ -554,30 +556,30 @@ checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
 
 [[package]]
 name = "itoa"
-version = "1.0.10"
+version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
 
 [[package]]
 name = "js-sys"
-version = "0.3.68"
+version = "0.3.69"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee"
+checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
 dependencies = [
  "wasm-bindgen",
 ]
 
 [[package]]
 name = "libc"
-version = "0.2.153"
+version = "0.2.154"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346"
 
 [[package]]
 name = "lock_api"
-version = "0.4.11"
+version = "0.4.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
 dependencies = [
  "autocfg",
  "scopeguard",
@@ -585,9 +587,18 @@ dependencies = [
 
 [[package]]
 name = "log"
-version = "0.4.20"
+version = "0.4.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
+checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
+
+[[package]]
+name = "lru"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc"
+dependencies = [
+ "hashbrown",
+]
 
 [[package]]
 name = "mac"
@@ -597,13 +608,13 @@ checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
 
 [[package]]
 name = "markup5ever"
-version = "0.11.0"
+version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016"
+checksum = "16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45"
 dependencies = [
  "log",
- "phf 0.10.1",
- "phf_codegen",
+ "phf 0.11.2",
+ "phf_codegen 0.11.2",
  "string_cache",
  "string_cache_codegen",
  "tendril",
@@ -611,15 +622,15 @@ dependencies = [
 
 [[package]]
 name = "memchr"
-version = "2.7.1"
+version = "2.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
+checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
 
 [[package]]
 name = "memoffset"
-version = "0.9.0"
+version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
 dependencies = [
  "autocfg",
 ]
@@ -641,26 +652,26 @@ dependencies = [
 
 [[package]]
 name = "mio"
-version = "0.8.10"
+version = "0.8.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09"
+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
 dependencies = [
  "libc",
  "wasi",
- "windows-sys",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
 name = "new_debug_unreachable"
-version = "1.0.4"
+version = "1.0.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
+checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
 
 [[package]]
 name = "num-traits"
-version = "0.2.18"
+version = "0.2.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
 dependencies = [
  "autocfg",
 ]
@@ -692,9 +703,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
 
 [[package]]
 name = "parking_lot"
-version = "0.12.1"
+version = "0.12.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb"
 dependencies = [
  "lock_api",
  "parking_lot_core",
@@ -702,15 +713,15 @@ dependencies = [
 
 [[package]]
 name = "parking_lot_core"
-version = "0.9.9"
+version = "0.9.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
 dependencies = [
  "cfg-if",
  "libc",
  "redox_syscall",
  "smallvec",
- "windows-targets 0.48.5",
+ "windows-targets 0.52.5",
 ]
 
 [[package]]
@@ -749,6 +760,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "phf_codegen"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a"
+dependencies = [
+ "phf_generator 0.11.2",
+ "phf_shared 0.11.2",
+]
+
+[[package]]
 name = "phf_generator"
 version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -778,7 +799,7 @@ dependencies = [
  "phf_shared 0.11.2",
  "proc-macro2",
  "quote",
- "syn 2.0.49",
+ "syn 2.0.60",
 ]
 
 [[package]]
@@ -800,10 +821,30 @@ dependencies = [
 ]
 
 [[package]]
+name = "pin-project"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.60",
+]
+
+[[package]]
 name = "pin-project-lite"
-version = "0.2.13"
+version = "0.2.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
 
 [[package]]
 name = "pin-utils"
@@ -812,6 +853,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
 
 [[package]]
+name = "portable-atomic"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
+
+[[package]]
 name = "ppv-lite86"
 version = "0.2.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -825,24 +872,25 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.78"
+version = "1.0.81"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
+checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
 name = "pyo3"
-version = "0.20.2"
+version = "0.21.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a89dc7a5850d0e983be1ec2a463a171d20990487c3cfcd68b5363f1ee3d6fe0"
+checksum = "a5e00b96a521718e08e03b1a622f01c8a8deb50719335de3f60b3b3950f069d8"
 dependencies = [
  "cfg-if",
  "indoc",
  "libc",
  "memoffset",
  "parking_lot",
+ "portable-atomic",
  "pyo3-build-config",
  "pyo3-ffi",
  "pyo3-macros",
@@ -851,9 +899,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-build-config"
-version = "0.20.2"
+version = "0.21.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07426f0d8fe5a601f26293f300afd1a7b1ed5e78b2a705870c5f30893c5163be"
+checksum = "7883df5835fafdad87c0d888b266c8ec0f4c9ca48a5bed6bbb592e8dedee1b50"
 dependencies = [
  "once_cell",
  "target-lexicon",
@@ -861,15 +909,15 @@ dependencies = [
 
 [[package]]
 name = "pyo3-built"
-version = "0.4.7"
+version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be6d574e0f8cab2cdd1eeeb640cbf845c974519fa9e9b62fa9c08ecece0ca5de"
+checksum = "35ee655adc94166665a1d714b439e27857dd199b947076891d6a17d32d396cde"
 
 [[package]]
 name = "pyo3-ffi"
-version = "0.20.2"
+version = "0.21.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbb7dec17e17766b46bca4f1a4215a85006b4c2ecde122076c562dd058da6cf1"
+checksum = "01be5843dc60b916ab4dad1dca6d20b9b4e6ddc8e15f50c47fe6d85f1fb97403"
 dependencies = [
  "libc",
  "pyo3-build-config",
@@ -877,33 +925,34 @@ dependencies = [
 
 [[package]]
 name = "pyo3-macros"
-version = "0.20.2"
+version = "0.21.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05f738b4e40d50b5711957f142878cfa0f28e054aa0ebdfc3fd137a843f74ed3"
+checksum = "77b34069fc0682e11b31dbd10321cbf94808394c56fd996796ce45217dfac53c"
 dependencies = [
  "proc-macro2",
  "pyo3-macros-backend",
  "quote",
- "syn 2.0.49",
+ "syn 2.0.60",
 ]
 
 [[package]]
 name = "pyo3-macros-backend"
-version = "0.20.2"
+version = "0.21.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fc910d4851847827daf9d6cdd4a823fbdaab5b8818325c5e97a86da79e8881f"
+checksum = "08260721f32db5e1a5beae69a55553f56b99bd0e1c3e6e0a5e8851a9d0f5a85c"
 dependencies = [
  "heck",
  "proc-macro2",
+ "pyo3-build-config",
  "quote",
- "syn 2.0.49",
+ "syn 2.0.60",
 ]
 
 [[package]]
 name = "quote"
-version = "1.0.35"
+version = "1.0.36"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
 dependencies = [
  "proc-macro2",
 ]
@@ -940,9 +989,9 @@ dependencies = [
 
 [[package]]
 name = "rayon"
-version = "1.8.1"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
 dependencies = [
  "either",
  "rayon-core",
@@ -960,29 +1009,30 @@ dependencies = [
 
 [[package]]
 name = "redox_syscall"
-version = "0.4.1"
+version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e"
 dependencies = [
- "bitflags 1.3.2",
+ "bitflags",
 ]
 
 [[package]]
 name = "reqwest"
-version = "0.11.24"
+version = "0.12.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251"
+checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10"
 dependencies = [
  "base64",
  "bytes",
- "encoding_rs",
+ "futures-channel",
  "futures-core",
  "futures-util",
- "h2",
  "http",
  "http-body",
+ "http-body-util",
  "hyper",
  "hyper-rustls",
+ "hyper-util",
  "ipnet",
  "js-sys",
  "log",
@@ -992,11 +1042,11 @@ dependencies = [
  "pin-project-lite",
  "rustls",
  "rustls-pemfile",
+ "rustls-pki-types",
  "serde",
  "serde_json",
  "serde_urlencoded",
  "sync_wrapper",
- "system-configuration",
  "tokio",
  "tokio-rustls",
  "tower-service",
@@ -1010,16 +1060,17 @@ dependencies = [
 
 [[package]]
 name = "ring"
-version = "0.17.7"
+version = "0.17.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74"
+checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
 dependencies = [
  "cc",
+ "cfg-if",
  "getrandom",
  "libc",
  "spin",
  "untrusted",
- "windows-sys",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -1036,40 +1087,50 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
 
 [[package]]
 name = "rustls"
-version = "0.21.10"
+version = "0.22.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba"
+checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432"
 dependencies = [
  "log",
  "ring",
+ "rustls-pki-types",
  "rustls-webpki",
- "sct",
+ "subtle",
+ "zeroize",
 ]
 
 [[package]]
 name = "rustls-pemfile"
-version = "1.0.4"
+version = "2.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
+checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d"
 dependencies = [
  "base64",
+ "rustls-pki-types",
 ]
 
 [[package]]
+name = "rustls-pki-types"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "beb461507cee2c2ff151784c52762cf4d9ff6a61f3e80968600ed24fa837fa54"
+
+[[package]]
 name = "rustls-webpki"
-version = "0.101.7"
+version = "0.102.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
+checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf"
 dependencies = [
  "ring",
+ "rustls-pki-types",
  "untrusted",
 ]
 
 [[package]]
 name = "ryu"
-version = "1.0.16"
+version = "1.0.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c"
+checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
 
 [[package]]
 name = "scopeguard"
@@ -1078,29 +1139,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 
 [[package]]
-name = "sct"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
-dependencies = [
- "ring",
- "untrusted",
-]
-
-[[package]]
 name = "selectors"
 version = "0.25.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4eb30575f3638fc8f6815f448d50cb1a2e255b0897985c8c59f4d37b72a07b06"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags",
  "cssparser",
  "derive_more",
  "fxhash",
  "log",
  "new_debug_unreachable",
  "phf 0.10.1",
- "phf_codegen",
+ "phf_codegen 0.10.0",
  "precomputed-hash",
  "servo_arc",
  "smallvec",
@@ -1108,38 +1159,38 @@ dependencies = [
 
 [[package]]
 name = "semver"
-version = "1.0.21"
+version = "1.0.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0"
+checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
 dependencies = [
  "serde",
 ]
 
 [[package]]
 name = "serde"
-version = "1.0.196"
+version = "1.0.200"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32"
+checksum = "ddc6f9cc94d67c0e21aaf7eda3a010fd3af78ebf6e096aa6e2e13c79749cce4f"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.196"
+version = "1.0.200"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67"
+checksum = "856f046b9400cee3c8c94ed572ecdb752444c24528c035cd35882aad6f492bcb"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.49",
+ "syn 2.0.60",
 ]
 
 [[package]]
 name = "serde_json"
-version = "1.0.113"
+version = "1.0.116"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79"
+checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813"
 dependencies = [
  "itoa",
  "ryu",
@@ -1193,18 +1244,18 @@ dependencies = [
 
 [[package]]
 name = "smallvec"
-version = "1.13.1"
+version = "1.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
 
 [[package]]
 name = "socket2"
-version = "0.5.5"
+version = "0.5.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
+checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c"
 dependencies = [
  "libc",
- "windows-sys",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -1246,6 +1297,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "subtle"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
+
+[[package]]
 name = "syn"
 version = "1.0.109"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1258,9 +1315,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.49"
+version = "2.0.60"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "915aea9e586f80826ee59f8453c1101f9d1c4b3964cd2460185ee8e299ada496"
+checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1274,31 +1331,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
 
 [[package]]
-name = "system-configuration"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
-dependencies = [
- "bitflags 1.3.2",
- "core-foundation",
- "system-configuration-sys",
-]
-
-[[package]]
-name = "system-configuration-sys"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
 name = "target-lexicon"
-version = "0.12.13"
+version = "0.12.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae"
+checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
 
 [[package]]
 name = "tendril"
@@ -1328,9 +1364,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "tokio"
-version = "1.36.0"
+version = "1.37.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931"
+checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787"
 dependencies = [
  "backtrace",
  "bytes",
@@ -1339,34 +1375,21 @@ dependencies = [
  "num_cpus",
  "pin-project-lite",
  "socket2",
- "windows-sys",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
 name = "tokio-rustls"
-version = "0.24.1"
+version = "0.25.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
+checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f"
 dependencies = [
  "rustls",
+ "rustls-pki-types",
  "tokio",
 ]
 
 [[package]]
-name = "tokio-util"
-version = "0.7.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15"
-dependencies = [
- "bytes",
- "futures-core",
- "futures-sink",
- "pin-project-lite",
- "tokio",
- "tracing",
-]
-
-[[package]]
 name = "toml"
 version = "0.7.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1401,6 +1424,28 @@ dependencies = [
 ]
 
 [[package]]
+name = "tower"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project",
+ "pin-project-lite",
+ "tokio",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tower-layer"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0"
+
+[[package]]
 name = "tower-service"
 version = "0.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1412,6 +1457,7 @@ version = "0.1.40"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
 dependencies = [
+ "log",
  "pin-project-lite",
  "tracing-core",
 ]
@@ -1445,9 +1491,9 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
 
 [[package]]
 name = "unicode-normalization"
-version = "0.1.22"
+version = "0.1.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
 dependencies = [
  "tinyvec",
 ]
@@ -1482,6 +1528,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
 
 [[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
 name = "want"
 version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1498,9 +1550,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 
 [[package]]
 name = "wasm-bindgen"
-version = "0.2.91"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f"
+checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
 dependencies = [
  "cfg-if",
  "wasm-bindgen-macro",
@@ -1508,24 +1560,24 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.91"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b"
+checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
 dependencies = [
  "bumpalo",
  "log",
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.49",
+ "syn 2.0.60",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-futures"
-version = "0.4.41"
+version = "0.4.42"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97"
+checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0"
 dependencies = [
  "cfg-if",
  "js-sys",
@@ -1535,9 +1587,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.91"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed"
+checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
 dependencies = [
  "quote",
  "wasm-bindgen-macro-support",
@@ -1545,28 +1597,28 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.91"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66"
+checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.49",
+ "syn 2.0.60",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.91"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838"
+checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
 
 [[package]]
 name = "web-sys"
-version = "0.3.68"
+version = "0.3.69"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446"
+checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef"
 dependencies = [
  "js-sys",
  "wasm-bindgen",
@@ -1574,9 +1626,12 @@ dependencies = [
 
 [[package]]
 name = "webpki-roots"
-version = "0.25.4"
+version = "0.26.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1"
+checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009"
+dependencies = [
+ "rustls-pki-types",
+]
 
 [[package]]
 name = "windows-core"
@@ -1584,7 +1639,7 @@ version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
 dependencies = [
- "windows-targets 0.52.0",
+ "windows-targets 0.52.5",
 ]
 
 [[package]]
@@ -1597,6 +1652,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.5",
+]
+
+[[package]]
 name = "windows-targets"
 version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1613,17 +1677,18 @@ dependencies = [
 
 [[package]]
 name = "windows-targets"
-version = "0.52.0"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
+checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
 dependencies = [
- "windows_aarch64_gnullvm 0.52.0",
- "windows_aarch64_msvc 0.52.0",
- "windows_i686_gnu 0.52.0",
- "windows_i686_msvc 0.52.0",
- "windows_x86_64_gnu 0.52.0",
- "windows_x86_64_gnullvm 0.52.0",
- "windows_x86_64_msvc 0.52.0",
+ "windows_aarch64_gnullvm 0.52.5",
+ "windows_aarch64_msvc 0.52.5",
+ "windows_i686_gnu 0.52.5",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc 0.52.5",
+ "windows_x86_64_gnu 0.52.5",
+ "windows_x86_64_gnullvm 0.52.5",
+ "windows_x86_64_msvc 0.52.5",
 ]
 
 [[package]]
@@ -1634,9 +1699,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.52.0"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
+checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
 
 [[package]]
 name = "windows_aarch64_msvc"
@@ -1646,9 +1711,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.52.0"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
+checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
 
 [[package]]
 name = "windows_i686_gnu"
@@ -1658,9 +1723,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.52.0"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
+checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
 
 [[package]]
 name = "windows_i686_msvc"
@@ -1670,9 +1741,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.52.0"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
+checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
 
 [[package]]
 name = "windows_x86_64_gnu"
@@ -1682,9 +1753,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.52.0"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
+checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
@@ -1694,9 +1765,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
-version = "0.52.0"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
+checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
 
 [[package]]
 name = "windows_x86_64_msvc"
@@ -1706,9 +1777,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.52.0"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
+checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
 
 [[package]]
 name = "winnow"
@@ -1721,10 +1792,36 @@ dependencies = [
 
 [[package]]
 name = "winreg"
-version = "0.50.0"
+version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
+checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5"
 dependencies = [
  "cfg-if",
- "windows-sys",
+ "windows-sys 0.48.0",
 ]
+
+[[package]]
+name = "zerocopy"
+version = "0.7.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "087eca3c1eaf8c47b94d02790dd086cd594b912d2043d4de4bfdd466b3befb7c"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f4b6c273f496d8fd4eaf18853e6b448760225dc030ff2c485a786859aea6393"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.60",
+]
+
+[[package]]
+name = "zeroize"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
diff --git a/pkgs/development/python-modules/css-inline/default.nix b/pkgs/development/python-modules/css-inline/default.nix
index 41caa34dedacf..a108599eb6ba2 100644
--- a/pkgs/development/python-modules/css-inline/default.nix
+++ b/pkgs/development/python-modules/css-inline/default.nix
@@ -1,31 +1,32 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, rustPlatform
+  # build-system
+  rustPlatform,
 
-# native darwin dependencies
-, libiconv
-, Security
-, SystemConfiguration
+  # native darwin dependencies
+  libiconv,
+  Security,
+  SystemConfiguration,
 
-# tests
-, pytestCheckHook
-, hypothesis
+  # tests
+  pytestCheckHook,
+  hypothesis,
 }:
 
 buildPythonPackage rec {
   pname = "css-inline";
-  version = "0.13.0";
+  version = "0.14.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "Stranger6667";
     repo = "css-inline";
     rev = "python-v${version}";
-    hash = "sha256-hhjeOr7EJc4Tmn/eQ1vF0xChSIlgfSmtqi6s7WCUq00=";
+    hash = "sha256-+hX05y+ii2/wAbcc3SPK3ns4slUKFGqHURb3Z08yhVw=";
   };
 
   postPatch = ''
@@ -42,7 +43,7 @@ buildPythonPackage rec {
       ln -s ${./Cargo.lock} Cargo.lock
     '';
     name = "${pname}-${version}";
-    hash = "sha256-noYBSwCfdpuwb55toyx4K/16Z4A0NWjnMuzwTi5g8AU=";
+    hash = "sha256-ogzj8JxiFX2VWEeEnKACycd2Bud9VUpLuF4h35eUls0=";
   };
 
   nativeBuildInputs = [
@@ -50,28 +51,29 @@ buildPythonPackage rec {
     rustPlatform.maturinBuildHook
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
     libiconv
     Security
     SystemConfiguration
   ];
 
-  pythonImportsCheck = [
-    "css_inline"
-  ];
+  pythonImportsCheck = [ "css_inline" ];
 
   nativeCheckInputs = [
     hypothesis
     pytestCheckHook
   ];
 
-  disabledTests = [
-    # fails to connect to local server
-    "test_remote_stylesheet"
-  ] ++ lib.optionals (stdenv.isDarwin) [
-    # pyo3_runtime.PanicException: event loop thread panicked
-    "test_invalid_href"
-  ];
+  disabledTests =
+    [
+      # fails to connect to local server
+      "test_cache"
+      "test_remote_stylesheet"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin) [
+      # pyo3_runtime.PanicException: event loop thread panicked
+      "test_invalid_href"
+    ];
 
   meta = with lib; {
     description = "Inline CSS into style attributes";
diff --git a/pkgs/development/python-modules/css-parser/default.nix b/pkgs/development/python-modules/css-parser/default.nix
index bd2a3258d0b0f..abb1130c702d0 100644
--- a/pkgs/development/python-modules/css-parser/default.nix
+++ b/pkgs/development/python-modules/css-parser/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -17,12 +18,10 @@ buildPythonPackage rec {
   # See https://github.com/ebook-utils/css-parser/pull/2
   doCheck = false;
 
-  pythonImportsCheck = [
-    "css_parser"
-  ];
+  pythonImportsCheck = [ "css_parser" ];
 
   meta = with lib; {
-    description = "A CSS Cascading Style Sheets library for Python";
+    description = "CSS Cascading Style Sheets library for Python";
     homepage = "https://github.com/ebook-utils/css-parser";
     license = licenses.lgpl3Plus;
     maintainers = with maintainers; [ jethro ];
diff --git a/pkgs/development/python-modules/cssbeautifier/default.nix b/pkgs/development/python-modules/cssbeautifier/default.nix
index 1fc1aeed84371..ebb76a8346d3b 100644
--- a/pkgs/development/python-modules/cssbeautifier/default.nix
+++ b/pkgs/development/python-modules/cssbeautifier/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, editorconfig
-, fetchPypi
-, jsbeautifier
-, pythonOlder
-, setuptools
-, six
+{
+  lib,
+  buildPythonPackage,
+  editorconfig,
+  fetchPypi,
+  jsbeautifier,
+  pythonOlder,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-n3BkNirt1VnFXu7Pa2vtZeBfM0iNy+OQRPBAPCbhwAY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     editorconfig
@@ -33,9 +32,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "cssbeautifier"
-  ];
+  pythonImportsCheck = [ "cssbeautifier" ];
 
   meta = with lib; {
     description = "CSS unobfuscator and beautifier";
diff --git a/pkgs/development/python-modules/csscompressor/default.nix b/pkgs/development/python-modules/csscompressor/default.nix
index 01c649f222c1e..d1a185bc8e435 100644
--- a/pkgs/development/python-modules/csscompressor/default.nix
+++ b/pkgs/development/python-modules/csscompressor/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "csscompressor";
@@ -13,9 +17,9 @@ buildPythonPackage rec {
   doCheck = false; # No tests
 
   meta = with lib; {
-    description = "A python port of YUI CSS Compressor";
+    description = "Python port of YUI CSS Compressor";
     homepage = "https://pypi.python.org/pypi/csscompressor";
     license = licenses.bsd3;
-    maintainers = [];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cssmin/default.nix b/pkgs/development/python-modules/cssmin/default.nix
index 6ab7f590f6d24..84b4b9fe2964b 100644
--- a/pkgs/development/python-modules/cssmin/default.nix
+++ b/pkgs/development/python-modules/cssmin/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "cssmin";
@@ -14,7 +18,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A Python port of the YUI CSS compression algorithm";
+    description = "Python port of the YUI CSS compression algorithm";
     mainProgram = "cssmin";
     homepage = "https://github.com/zacharyvoase/cssmin";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/cssselect/default.nix b/pkgs/development/python-modules/cssselect/default.nix
index 0accd8c6cbae1..41dfed02e7164 100644
--- a/pkgs/development/python-modules/cssselect/default.nix
+++ b/pkgs/development/python-modules/cssselect/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, pytestCheckHook
-, lxml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  pytestCheckHook,
+  lxml,
 }:
 
 buildPythonPackage rec {
@@ -19,24 +20,20 @@ buildPythonPackage rec {
     sha256 = "666b19839cfaddb9ce9d36bfe4c969132c647b92fc9088c4e23f786b30f1b3dc";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pytestCheckHook
     lxml
   ];
 
-  pythonImportsCheck = [
-    "cssselect"
-  ];
+  pythonImportsCheck = [ "cssselect" ];
 
   meta = with lib; {
     description = "CSS Selectors for Python";
     homepage = "https://cssselect.readthedocs.io/";
     changelog = "https://github.com/scrapy/cssselect/v${version}//CHANGES";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cssselect2/default.nix b/pkgs/development/python-modules/cssselect2/default.nix
index 9b58da4fdb21d..3f92e6567f136 100644
--- a/pkgs/development/python-modules/cssselect2/default.nix
+++ b/pkgs/development/python-modules/cssselect2/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, buildPythonPackage
-, flit-core
-, pythonOlder
-, fetchPypi
-, tinycss2
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  pytestCheckHook,
+  pythonOlder,
+  tinycss2,
 }:
 
 buildPythonPackage rec {
   pname = "cssselect2";
   version = "0.7.0";
-  format = "pyproject";
-  disabled = pythonOlder "3.5";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
@@ -22,11 +24,9 @@ buildPythonPackage rec {
     sed -i '/^addopts/d' pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
-  propagatedBuildInputs = [ tinycss2 ];
+  dependencies = [ tinycss2 ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
@@ -35,6 +35,8 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "CSS selectors for Python ElementTree";
     homepage = "https://github.com/Kozea/cssselect2";
+    changelog = "https://github.com/Kozea/cssselect2/releases/tag/${version}";
     license = licenses.bsd3;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cssutils/default.nix b/pkgs/development/python-modules/cssutils/default.nix
index 8b8a650defe6b..7e4447546446b 100644
--- a/pkgs/development/python-modules/cssutils/default.nix
+++ b/pkgs/development/python-modules/cssutils/default.nix
@@ -1,35 +1,35 @@
-{ lib
-, buildPythonPackage
-, pythonAtLeast
-, pythonOlder
-, fetchFromGitHub
-, setuptools-scm
-, cssselect
-, jaraco-test
-, lxml
-, mock
-, pytestCheckHook
-, importlib-resources
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools-scm,
+  more-itertools,
+  cssselect,
+  jaraco-test,
+  lxml,
+  mock,
+  pytestCheckHook,
+  importlib-resources,
 }:
 
 buildPythonPackage rec {
   pname = "cssutils";
-  version = "2.10.2";
+  version = "2.11.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-
   src = fetchFromGitHub {
     owner = "jaraco";
     repo = "cssutils";
     rev = "refs/tags/v${version}";
-    hash = "sha256-1sAn6pFwWsnYS1eHQmyDNGTo6kdhL1vJBwUptADvHyo=";
+    hash = "sha256-U9myMfKz1HpYVJXp85izRBpm2wjLHYZj8bUVt3ROTEg=";
   };
 
-  build-system = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
+
+  dependencies = [ more-itertools ];
 
   nativeCheckInputs = [
     cssselect
@@ -37,9 +37,7 @@ buildPythonPackage rec {
     lxml
     mock
     pytestCheckHook
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    importlib-resources
-  ];
+  ] ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ];
 
   disabledTests = [
     # access network
@@ -50,7 +48,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "cssutils" ];
 
   meta = with lib; {
-    description = "A CSS Cascading Style Sheets library for Python";
+    description = "CSS Cascading Style Sheets library for Python";
     homepage = "https://github.com/jaraco/cssutils";
     changelog = "https://github.com/jaraco/cssutils/blob/${src.rev}/NEWS.rst";
     license = licenses.lgpl3Plus;
diff --git a/pkgs/development/python-modules/cstruct/default.nix b/pkgs/development/python-modules/cstruct/default.nix
index 5c0baaf88f204..cc92fa059f3cd 100644
--- a/pkgs/development/python-modules/cstruct/default.nix
+++ b/pkgs/development/python-modules/cstruct/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,13 +17,9 @@ buildPythonPackage rec {
     hash = "sha256-VDJ0k3cOuHjckujf9yD1GVE+UM/Y9rjqhiq+MqGq2eM=";
   };
 
-  pythonImportsCheck = [
-    "cstruct"
-  ];
+  pythonImportsCheck = [ "cstruct" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "C-style structs for Python";
diff --git a/pkgs/development/python-modules/csv2md/default.nix b/pkgs/development/python-modules/csv2md/default.nix
new file mode 100644
index 0000000000000..43d3c816aa95a
--- /dev/null
+++ b/pkgs/development/python-modules/csv2md/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+}:
+
+buildPythonPackage rec {
+  pname = "csv2md";
+  version = "1.3.0";
+  format = "setuptools";
+
+  src = fetchFromGitHub {
+    owner = "lzakharov";
+    repo = "csv2md";
+    rev = "v${version}";
+    hash = "sha256-INwZRbyJmyDd5SV7PBdqUc/3FO91upTgaxBfP/Giaw4=";
+  };
+
+  pythonImportsCheck = [ "csv2md" ];
+
+  meta = {
+    description = "Command line tool for converting CSV files into Markdown tables";
+    homepage = "https://github.com/lzakharov/csv2md";
+    changelog = "https://github.com/lzakharov/csv2md/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ t4ccer ];
+    mainProgram = "csv2md";
+  };
+}
diff --git a/pkgs/development/python-modules/csvw/default.nix b/pkgs/development/python-modules/csvw/default.nix
index 4e7ad09b0926b..be429844d13d6 100644
--- a/pkgs/development/python-modules/csvw/default.nix
+++ b/pkgs/development/python-modules/csvw/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
-, pythonOlder
-, attrs
-, isodate
-, python-dateutil
-, rfc3986
-, uritemplate
-, pytestCheckHook
-, pytest-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonAtLeast,
+  pythonOlder,
+  attrs,
+  isodate,
+  python-dateutil,
+  rfc3986,
+  uritemplate,
+  pytestCheckHook,
+  pytest-mock,
 }:
 
 buildPythonPackage rec {
@@ -44,25 +45,25 @@ buildPythonPackage rec {
       --replace "--cov" ""
   '';
 
-  disabledTests = [
-    # this test is flaky on darwin because it depends on the resolution of filesystem mtimes
-    # https://github.com/cldf/csvw/blob/45584ad63ff3002a9b3a8073607c1847c5cbac58/tests/test_db.py#L257
-    "test_write_file_exists"
-  ] ++ lib.optionals (pythonAtLeast "3.10") [
-    # https://github.com/cldf/csvw/issues/58
-    "test_roundtrip_escapechar"
-    "test_escapequote_escapecharquotechar_final"
-    "test_doubleQuote"
-  ];
+  disabledTests =
+    [
+      # this test is flaky on darwin because it depends on the resolution of filesystem mtimes
+      # https://github.com/cldf/csvw/blob/45584ad63ff3002a9b3a8073607c1847c5cbac58/tests/test_db.py#L257
+      "test_write_file_exists"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.10") [
+      # https://github.com/cldf/csvw/issues/58
+      "test_roundtrip_escapechar"
+      "test_escapequote_escapecharquotechar_final"
+      "test_doubleQuote"
+    ];
 
-  pythonImportsCheck = [
-    "csvw"
-  ];
+  pythonImportsCheck = [ "csvw" ];
 
   meta = with lib; {
     description = "CSV on the Web";
     homepage = "https://github.com/cldf/csvw";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ctap-keyring-device/default.nix b/pkgs/development/python-modules/ctap-keyring-device/default.nix
index 0721167693669..07cf1b616027f 100644
--- a/pkgs/development/python-modules/ctap-keyring-device/default.nix
+++ b/pkgs/development/python-modules/ctap-keyring-device/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonRelaxDepsHook
-, setuptools-scm
-# install requirements
-, fido2
-, keyring
-, cryptography
-# test requirements
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  # install requirements
+  fido2,
+  keyring,
+  cryptography,
+  # test requirements
+  pytestCheckHook,
 }:
 
 let
@@ -29,7 +29,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit version pname;
-    sha256 = "sha256-pEJkuz0wxKt2PkowmLE2YC+HPYa2ZiENK7FAW14Ec/Y=";
+    hash = "sha256-pEJkuz0wxKt2PkowmLE2YC+HPYa2ZiENK7FAW14Ec/Y=";
   };
 
   # removing optional dependency needing pyobjc
@@ -39,7 +39,6 @@ buildPythonPackage rec {
   '';
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools-scm
   ];
 
diff --git a/pkgs/development/python-modules/ctranslate2/default.nix b/pkgs/development/python-modules/ctranslate2/default.nix
index a86516856fd44..da76a4d63dbe9 100644
--- a/pkgs/development/python-modules/ctranslate2/default.nix
+++ b/pkgs/development/python-modules/ctranslate2/default.nix
@@ -1,21 +1,21 @@
-{ lib
-, buildPythonPackage
+{
+  lib,
+  buildPythonPackage,
 
-# build-system
-, pybind11
-, setuptools
+  # build-system
+  pybind11,
+  setuptools,
 
-# dependencies
-, ctranslate2-cpp
-, numpy
-, pyyaml
+  # dependencies
+  ctranslate2-cpp,
+  numpy,
+  pyyaml,
 
-# tests
-, pytestCheckHook
-, tensorflow-bin
-, torch
-, transformers
-, wurlitzer
+  # tests
+  pytestCheckHook,
+  torch,
+  transformers,
+  wurlitzer,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +30,7 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  buildInputs = [
-    ctranslate2-cpp
-  ];
+  buildInputs = [ ctranslate2-cpp ];
 
   propagatedBuildInputs = [
     numpy
@@ -49,7 +47,6 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
-    tensorflow-bin
     torch
     transformers
     wurlitzer
@@ -65,6 +62,16 @@ buildPythonPackage rec {
   disabledTests = [
     # AssertionError: assert 'int8' in {'float32'}
     "test_get_supported_compute_types"
+    # Tensorflow (tf) not available in Python 3.12 yet
+    # To remove when https://github.com/NixOS/nixpkgs/pull/325224 is fixed
+    "test_opennmt_tf_model_conversion"
+    "test_opennmt_tf_model_quantization"
+    "test_opennmt_tf_model_conversion_invalid_vocab"
+    "test_opennmt_tf_model_conversion_invalid_dir"
+    "test_opennmt_tf_shared_embeddings_conversion"
+    "test_opennmt_tf_postnorm_transformer_conversion"
+    "test_opennmt_tf_gpt_conversion"
+    "test_opennmt_tf_multi_features"
   ];
 
   disabledTestPaths = [
diff --git a/pkgs/development/python-modules/ctypesgen/default.nix b/pkgs/development/python-modules/ctypesgen/default.nix
new file mode 100644
index 0000000000000..ff7a8f7b32539
--- /dev/null
+++ b/pkgs/development/python-modules/ctypesgen/default.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools-scm,
+  setuptools,
+  toml,
+  wheel,
+}:
+
+buildPythonPackage rec {
+  pname = "ctypesgen";
+  version = "1.1.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.11";
+
+  src = fetchFromGitHub {
+    owner = "ctypesgen";
+    repo = "ctypesgen";
+    rev = "refs/tags/${version}";
+    hash = "sha256-TwIWPellmjMpTGQ+adJBLNMdAqB0kLOMl4YAubvXKqo=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+    toml
+    wheel
+  ];
+
+  # Various compiler errors
+  doCheck = false;
+
+  pythonImportsCheck = [ "ctypesgen" ];
+
+  meta = with lib; {
+    description = "Pure-python wrapper generator for ctypes";
+    homepage = "https://github.com/ctypesgen/ctypesgen";
+    changelog = "https://github.com/ctypesgen/ctypesgen/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/cu2qu/default.nix b/pkgs/development/python-modules/cu2qu/default.nix
index 67315205b7061..27faeab92bd43 100644
--- a/pkgs/development/python-modules/cu2qu/default.nix
+++ b/pkgs/development/python-modules/cu2qu/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-
-# build
-, cython
-, setuptools-scm
-, setuptools
-
-# propagates
-, defcon
-, fonttools
-
-# tests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+
+  # build
+  cython,
+  setuptools-scm,
+  setuptools,
+
+  # propagates
+  defcon,
+  fonttools,
+
+  # tests
+  pytestCheckHook,
 }:
 
 let
@@ -40,9 +41,7 @@ buildPythonPackage rec {
     fonttools
   ] ++ fonttools.optional-dependencies.ufo;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     changelog = "https://github.com/googlefonts/cu2qu/releases/tag/v${version}";
@@ -50,6 +49,6 @@ buildPythonPackage rec {
     mainProgram = "cu2qu";
     homepage = "https://github.com/googlefonts/cu2qu";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cucumber-tag-expressions/default.nix b/pkgs/development/python-modules/cucumber-tag-expressions/default.nix
index 74ec6c13a5aec..4d09eb4857648 100644
--- a/pkgs/development/python-modules/cucumber-tag-expressions/default.nix
+++ b/pkgs/development/python-modules/cucumber-tag-expressions/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pytestCheckHook
-, pytest-html
-, pyyaml
-, setuptools
- }:
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pytestCheckHook,
+  pytest-html,
+  pyyaml,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "cucumber-tag-expressions";
   version = "6.1.0";
   pyproject = true;
 
-  src = fetchFromGitHub{
+  src = fetchFromGitHub {
     owner = "cucumber";
     repo = "tag-expressions";
     rev = "refs/tags/v${version}";
@@ -21,9 +22,7 @@ buildPythonPackage rec {
 
   sourceRoot = "${src.name}/python";
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/cufflinks/default.nix b/pkgs/development/python-modules/cufflinks/default.nix
index 4884c2e584bc2..6f550580a208a 100644
--- a/pkgs/development/python-modules/cufflinks/default.nix
+++ b/pkgs/development/python-modules/cufflinks/default.nix
@@ -1,49 +1,58 @@
-{ lib, buildPythonPackage, fetchPypi
-, chart-studio
-, colorlover
-, ipython
-, ipywidgets
-, pytest
-, nose
-, numpy
-, pandas
-, six
-, statsmodels
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  colorlover,
+  ipython,
+  ipywidgets,
+  numpy,
+  pandas,
+  plotly,
+  pytestCheckHook,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "cufflinks";
   version = "0.17.3";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0i56062k54dlg5iz3qyl1ykww62mpkp8jr4n450h0c60dm0b7ha8";
+    hash = "sha256-SMGzQG3AMABBIZZkie68VRjOpw/U4/FjebSRMoUBpkQ=";
   };
 
-  propagatedBuildInputs = [
-    chart-studio
+  # replace duplicated pandas method
+  # https://github.com/santosjorge/cufflinks/pull/249#issuecomment-1759619149
+  postPatch = ''
+    substituteInPlace tests.py \
+      --replace-fail "from nose.tools import assert_equals" "def assert_equals(x, y): assert x == y" \
+      --replace-fail "df.ix" "df.loc"
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     colorlover
     ipython
     ipywidgets
     numpy
     pandas
+    plotly
     six
-    statsmodels
   ];
 
-  nativeCheckInputs = [ pytest nose ];
+  pythonImportsCheck = [ "cufflinks" ];
 
-  # ignore tests which are incompatible with pandas>=1.0
-  # https://github.com/santosjorge/cufflinks/issues/236
-  checkPhase = ''
-    pytest tests.py -k 'not bar_row'
-  '';
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pytestFlagsArray = [ "tests.py" ];
 
   meta = with lib; {
     description = "Productivity Tools for Plotly + Pandas";
     homepage = "https://github.com/santosjorge/cufflinks";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cupy/default.nix b/pkgs/development/python-modules/cupy/default.nix
index 842645597062a..8435c1e988dda 100644
--- a/pkgs/development/python-modules/cupy/default.nix
+++ b/pkgs/development/python-modules/cupy/default.nix
@@ -1,28 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cython
-, fastrlock
-, numpy
-, wheel
-, pytestCheckHook
-, mock
-, setuptools
-, cudaPackages
-, addOpenGLRunpath
-, pythonOlder
-, symlinkJoin
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cython_0,
+  fastrlock,
+  numpy,
+  wheel,
+  pytestCheckHook,
+  mock,
+  setuptools,
+  cudaPackages,
+  addDriverRunpath,
+  pythonOlder,
+  symlinkJoin,
+  fetchpatch
 }:
 
 let
   inherit (cudaPackages) cudnn cutensor nccl;
-  cudatoolkit-joined = symlinkJoin {
-    name = "cudatoolkit-joined-${cudaPackages.cudaVersion}";
-    paths = with cudaPackages; [
+  outpaths = with cudaPackages; [
       cuda_cccl # <nv/target>
-      cuda_cccl.dev
       cuda_cudart
-      cuda_nvcc.dev # <crt/host_defines.h>
+      cuda_nvcc # <crt/host_defines.h>
       cuda_nvprof
       cuda_nvrtc
       cuda_nvtx
@@ -35,21 +34,35 @@ let
 
       # Missing:
       # cusparselt
-    ];
+  ];
+  cudatoolkit-joined = symlinkJoin {
+    name = "cudatoolkit-joined-${cudaPackages.cudaVersion}";
+    paths = outpaths ++ lib.concatMap (f: lib.map f outpaths) [lib.getLib lib.getDev (lib.getOutput "static") (lib.getOutput "stubs")];
   };
 in
 buildPythonPackage rec {
   pname = "cupy";
-  version = "13.0.0";
+  version = "13.2.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-LwTnhX9pKnEzYNycOwZwmAarhAT8o5ta+XIcBKKXmq4=";
+  src = fetchFromGitHub {
+    owner = "cupy";
+    repo = "cupy";
+    rev = "v13.2.0";
+    hash = "sha256-vZAtpIZztmsYeJeuq7yl7kgZse2azrIM3efHDmUswJI=";
+    fetchSubmodules = true;
   };
 
+  patches = [
+    (fetchpatch {
+      url =
+        "https://github.com/cfhammill/cupy/commit/67526c756e4a0a70f0420bf0e7f081b8a35a8ee5.patch";
+      hash = "sha256-WZgexBdM9J0ep5s+9CGZriVq0ZidCRccox+g0iDDywQ=";
+    })
+  ];
+
   # See https://docs.cupy.dev/en/v10.2.0/reference/environment.html. Seting both
   # CUPY_NUM_BUILD_JOBS and CUPY_NUM_NVCC_THREADS to NIX_BUILD_CORES results in
   # a small amount of thrashing but it turns out there are a large number of
@@ -63,8 +76,8 @@ buildPythonPackage rec {
   nativeBuildInputs = [
     setuptools
     wheel
-    addOpenGLRunpath
-    cython
+    addDriverRunpath
+    cython_0
     cudaPackages.cuda_nvcc
   ];
 
@@ -77,7 +90,6 @@ buildPythonPackage rec {
 
   NVCC = "${lib.getExe cudaPackages.cuda_nvcc}"; # FIXME: splicing/buildPackages
   CUDA_PATH = "${cudatoolkit-joined}";
-  LDFLAGS = "-L${cudaPackages.cuda_cudart}/lib/stubs";
 
   propagatedBuildInputs = [
     fastrlock
@@ -95,14 +107,14 @@ buildPythonPackage rec {
 
   postFixup = ''
     find $out -type f \( -name '*.so' -or -name '*.so.*' \) | while read lib; do
-      addOpenGLRunpath "$lib"
+      addDriverRunpath "$lib"
     done
   '';
 
   enableParallelBuilding = true;
 
   meta = with lib; {
-    description = "A NumPy-compatible matrix library accelerated by CUDA";
+    description = "NumPy-compatible matrix library accelerated by CUDA";
     homepage = "https://cupy.chainer.org/";
     changelog = "https://github.com/cupy/cupy/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/curio-compat/default.nix b/pkgs/development/python-modules/curio-compat/default.nix
new file mode 100644
index 0000000000000..6ea4da8feb3f7
--- /dev/null
+++ b/pkgs/development/python-modules/curio-compat/default.nix
@@ -0,0 +1,38 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pytestCheckHook,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "curio-compat";
+  version = "1.6.7";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "klen";
+    repo = "curio";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Crd9r4Icwga85wvtXaePbE56R192o+FXU9Zn+Lc7trI=";
+  };
+
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "curio" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  disabledTests = [
+    # contacts google.com
+    "test_ssl_outgoing"
+  ];
+
+  meta = {
+    description = "Coroutine-based library for concurrent systems programming";
+    homepage = "https://github.com/klen/curio";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/curio/default.nix b/pkgs/development/python-modules/curio/default.nix
index 27bcf024aa0bc..434af5cb974aa 100644
--- a/pkgs/development/python-modules/curio/default.nix
+++ b/pkgs/development/python-modules/curio/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, isPy3k
-, pytestCheckHook
-, sphinx
-, stdenv
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  isPy3k,
+  pytestCheckHook,
+  sphinx,
+  stdenv,
 }:
 
 buildPythonPackage rec {
@@ -35,17 +36,20 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  disabledTests = [
-    "test_aside_basic" # times out
-    "test_write_timeout" # flaky, does not always time out
-    "test_aside_cancel" # fails because modifies PYTHONPATH and cant find pytest
-    "test_ssl_outgoing" # touches network
-    "test_unix_echo" # socket bind error on hydra when built with other packages
-    "test_unix_ssl_server" # socket bind error on hydra when built with other packages
-  ] ++ lib.optionals stdenv.isDarwin [
-    # connects to python.org:1, expects an OsError, hangs in the darwin sandbox
-    "test_create_bad_connection"
-  ];
+  disabledTests =
+    [
+      "test_cpu" # timing sensitive
+      "test_aside_basic" # times out
+      "test_write_timeout" # flaky, does not always time out
+      "test_aside_cancel" # fails because modifies PYTHONPATH and cant find pytest
+      "test_ssl_outgoing" # touches network
+      "test_unix_echo" # socket bind error on hydra when built with other packages
+      "test_unix_ssl_server" # socket bind error on hydra when built with other packages
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # connects to python.org:1, expects an OsError, hangs in the darwin sandbox
+      "test_create_bad_connection"
+    ];
 
   pythonImportsCheck = [ "curio" ];
 
diff --git a/pkgs/development/python-modules/curl-cffi/default.nix b/pkgs/development/python-modules/curl-cffi/default.nix
new file mode 100644
index 0000000000000..28f8eb2da729f
--- /dev/null
+++ b/pkgs/development/python-modules/curl-cffi/default.nix
@@ -0,0 +1,42 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  curl-impersonate-chrome,
+  cffi,
+  certifi,
+}:
+
+buildPythonPackage rec {
+  pname = "curl-cffi";
+  version = "0.7.1";
+
+  src = fetchFromGitHub {
+    owner = "yifeikong";
+    repo = "curl_cffi";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-fVmZ5DKgkjnO1CPYVSa9qei26B0mXqZMtVGhtNGfEpY=";
+  };
+
+  patches = [ ./use-system-libs.patch ];
+  buildInputs = [ curl-impersonate-chrome ];
+
+  format = "pyproject";
+  build-system = [ setuptools ];
+
+  nativeBuildInputs = [ cffi ];
+  propagatedBuildInputs = [
+    cffi
+    certifi
+  ];
+
+  pythonImportsCheck = [ "curl_cffi" ];
+
+  meta = with lib; {
+    description = "Python binding for curl-impersonate via cffi";
+    homepage = "https://curl-cffi.readthedocs.io";
+    license = licenses.mit;
+    maintainers = with maintainers; [ chuangzhu ];
+  };
+}
diff --git a/pkgs/development/python-modules/curl-cffi/use-system-libs.patch b/pkgs/development/python-modules/curl-cffi/use-system-libs.patch
new file mode 100644
index 0000000000000..1d044873e4610
--- /dev/null
+++ b/pkgs/development/python-modules/curl-cffi/use-system-libs.patch
@@ -0,0 +1,23 @@
+diff --git a/scripts/build.py b/scripts/build.py
+index b705a0d..9bfcaab 100644
+--- a/scripts/build.py
++++ b/scripts/build.py
+@@ -105,7 +105,6 @@ def get_curl_libraries():
+ ffibuilder = FFI()
+ system = platform.system()
+ root_dir = Path(__file__).parent.parent
+-download_libcurl()
+ 
+ 
+ ffibuilder.set_source(
+@@ -114,9 +113,7 @@ ffibuilder.set_source(
+         #include "shim.h"
+     """,
+     # FIXME from `curl-impersonate`
+-    libraries=get_curl_libraries(),
+-    extra_objects=get_curl_archives(),
+-    library_dirs=[arch["libdir"]],
++    libraries=["curl-impersonate-chrome"],
+     source_extension=".c",
+     include_dirs=[
+         str(root_dir / "include"),
diff --git a/pkgs/development/python-modules/curlify/default.nix b/pkgs/development/python-modules/curlify/default.nix
index dbe335c71dec3..8dfec88902691 100644
--- a/pkgs/development/python-modules/curlify/default.nix
+++ b/pkgs/development/python-modules/curlify/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchFromGitHub, requests }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+}:
 
 buildPythonPackage {
   pname = "curlify";
@@ -12,9 +17,7 @@ buildPythonPackage {
     hash = "sha256-yDHmH35TtQDJB0na1V98RtBuVHX5TmKC72hzzs1DQK8=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   meta = with lib; {
     description = "Convert python requests request object to cURL command";
diff --git a/pkgs/development/python-modules/curtsies/default.nix b/pkgs/development/python-modules/curtsies/default.nix
index 2dd039f00ee2f..7be20c559019f 100644
--- a/pkgs/development/python-modules/curtsies/default.nix
+++ b/pkgs/development/python-modules/curtsies/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, stdenv
-, backports-cached-property
-, blessed
-, buildPythonPackage
-, cwcwidth
-, fetchPypi
-, pyte
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  stdenv,
+  backports-cached-property,
+  blessed,
+  buildPythonPackage,
+  cwcwidth,
+  fetchPypi,
+  pyte,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -23,16 +24,12 @@ buildPythonPackage rec {
     hash = "sha256-br4zIVvXyShRpQYEnHIMykz1wZLBZlwdepigTEcCdg4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     blessed
     cwcwidth
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    backports-cached-property
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ backports-cached-property ];
 
   nativeCheckInputs = [
     pyte
@@ -45,6 +42,6 @@ buildPythonPackage rec {
     changelog = "https://github.com/bpython/curtsies/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ flokli ];
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/curve25519-donna/default.nix b/pkgs/development/python-modules/curve25519-donna/default.nix
index d098d47e71902..8ff358be69058 100644
--- a/pkgs/development/python-modules/curve25519-donna/default.nix
+++ b/pkgs/development/python-modules/curve25519-donna/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "curve25519-donna";
@@ -14,6 +18,6 @@ buildPythonPackage rec {
     description = "Python wrapper for the portable curve25519-donna implementation";
     homepage = "http://code.google.com/p/curve25519-donna/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/curvefitgui/default.nix b/pkgs/development/python-modules/curvefitgui/default.nix
new file mode 100644
index 0000000000000..5c5f2247e5530
--- /dev/null
+++ b/pkgs/development/python-modules/curvefitgui/default.nix
@@ -0,0 +1,47 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pythonAtLeast,
+  numpy,
+  scipy,
+  pyqt5,
+  matplotlib,
+}:
+
+buildPythonPackage {
+  pname = "curvefitgui";
+  version = "0-unstable-2021-08-25";
+  pyproject = true;
+  # For some reason, importing the main module makes the whole python
+  # interpreter crash! This needs further investigation, possibly the problem
+  # is with one of the dependencies.. See upstream report:
+  # https://github.com/moosepy/curvefitgui/issues/2
+  disabled = pythonAtLeast "3.12";
+
+  src = fetchFromGitHub {
+    owner = "moosepy";
+    repo = "curvefitgui";
+    rev = "5f1e7f3b95cd77d10bd8183c9a501e47ff94fad7";
+    hash = "sha256-oK0ROKxh/91OrHhuufG6pvc2EMBeMP8R5O+ED2thyW8=";
+  };
+
+  nativeBuildInputs = [ setuptools ];
+
+  propagatedBuildInputs = [
+    numpy
+    scipy
+    pyqt5
+    matplotlib
+  ];
+
+  pythonImportsCheck = [ "curvefitgui" ];
+
+  meta = {
+    description = "Graphical interface to the non-linear curvefit function scipy.optimise.curve_fit";
+    homepage = "https://github.com/moosepy/curvefitgui";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ doronbehar ];
+  };
+}
diff --git a/pkgs/development/python-modules/customtkinter/0001-Add-Missing-Cfg-Packages.patch b/pkgs/development/python-modules/customtkinter/0001-Add-Missing-Cfg-Packages.patch
new file mode 100644
index 0000000000000..29ff126b7ae45
--- /dev/null
+++ b/pkgs/development/python-modules/customtkinter/0001-Add-Missing-Cfg-Packages.patch
@@ -0,0 +1,15 @@
+diff --git a/setup.cfg b/setup.cfg
+index 5f95b7f..9250e4f 100644
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -22,6 +22,10 @@ repository = https://github.com/tomschimansky/customtkinter
+ python_requires = >=3.7
+ packages =
+     customtkinter
++    customtkinter.assets.fonts
++    customtkinter.assets.fonts.Roboto
++    customtkinter.assets.icons
++    customtkinter.assets.themes
+     customtkinter.windows
+     customtkinter.windows.widgets
+     customtkinter.windows.widgets.appearance_mode
diff --git a/pkgs/development/python-modules/customtkinter/default.nix b/pkgs/development/python-modules/customtkinter/default.nix
new file mode 100644
index 0000000000000..4cd7d2e852392
--- /dev/null
+++ b/pkgs/development/python-modules/customtkinter/default.nix
@@ -0,0 +1,60 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  tkinter,
+  darkdetect,
+  packaging,
+  typing-extensions,
+}:
+let
+  pname = "customtkinter";
+  version = "5.2.2";
+in
+buildPythonPackage {
+  inherit pname version;
+  pyproject = true;
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "TomSchimansky";
+    repo = "CustomTkinter";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-1g2wdXbUv5xNnpflFLXvU39s16kmwvuegKWd91E3qm4=";
+  };
+
+  build-system = [
+    setuptools
+    tkinter
+  ];
+
+  dependencies = [
+    darkdetect
+    packaging
+    typing-extensions
+  ];
+
+  patches = [ ./0001-Add-Missing-Cfg-Packages.patch ];
+
+  pythonImportsCheck = [ "customtkinter" ];
+
+  meta = {
+    description = "Modern and customizable python UI-library based on Tkinter";
+    homepage = "https://github.com/TomSchimansky/CustomTkinter";
+    license = lib.licenses.mit;
+    longDescription = ''
+      CustomTkinter is a python UI-library based on Tkinter, which provides
+      new, modern and fully customizable widgets. They are created and
+      used like normal Tkinter widgets and can also be used in combination
+      with normal Tkinter elements. The widgets and the window colors
+      either adapt to the system appearance or the manually set mode
+      ('light', 'dark'), and all CustomTkinter widgets and windows support
+      HighDPI scaling (Windows, macOS). With CustomTkinter you'll get
+      a consistent and modern look across all desktop platforms
+      (Windows, macOS, Linux).
+    '';
+    maintainers = with lib.maintainers; [ donteatoreo ];
+  };
+}
diff --git a/pkgs/development/python-modules/cvelib/default.nix b/pkgs/development/python-modules/cvelib/default.nix
index c269c351c1da9..121a9d166c9c9 100644
--- a/pkgs/development/python-modules/cvelib/default.nix
+++ b/pkgs/development/python-modules/cvelib/default.nix
@@ -1,48 +1,55 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, jsonschema
-, pytestCheckHook
-, pythonOlder
-, requests
-, testers
-, cve
+{
+  lib,
+  buildPythonPackage,
+  click,
+  cve,
+  fetchFromGitHub,
+  jsonschema,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
+  testers,
 }:
 
 buildPythonPackage rec {
   pname = "cvelib";
-  version = "1.3.0";
-  format = "setuptools";
+  version = "1.5.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "RedHatProductSecurity";
     repo = "cvelib";
-    rev = "tags/${version}";
-    hash = "sha256-PCZUAKgE80PD//4qK8ap55IN9vtx9WdpRZUAC3UdaWM=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-me61A1SyktPTd9u0t51kF4237/t9wiHqz+IVoyojMXY=";
   };
 
-  propagatedBuildInputs = [
+  postPatch = ''
+    # collective.checkdocs is unmaintained for over 10 years
+    substituteInPlace pyproject.toml \
+      --replace-fail '"collective.checkdocs",' ""
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     click
     jsonschema
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "cvelib"
-  ];
+  pythonImportsCheck = [ "cvelib" ];
 
   passthru.tests.version = testers.testVersion { package = cve; };
 
   meta = with lib; {
     description = "Library and a command line interface for the CVE Services API";
     homepage = "https://github.com/RedHatProductSecurity/cvelib";
+    changelog = "https://github.com/RedHatProductSecurity/cvelib/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ raboof ];
     mainProgram = "cve";
diff --git a/pkgs/development/python-modules/cvss/default.nix b/pkgs/development/python-modules/cvss/default.nix
index 640ad9720c743..5cbd7ab56bf48 100644
--- a/pkgs/development/python-modules/cvss/default.nix
+++ b/pkgs/development/python-modules/cvss/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, jsonschema
-, unittestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jsonschema,
+  unittestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "cvss";
-  version = "3.1";
+  version = "3.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,21 +19,17 @@ buildPythonPackage rec {
     owner = "RedHatProductSecurity";
     repo = "cvss";
     rev = "refs/tags/v${version}";
-    hash = "sha256-e/zwOfbt3YLlRiLFObjps3tFFk6BAWBKdanio6sus8c=";
+    hash = "sha256-r4IWaOEZUX+3wW47rX8+lsixIjr14zAaXfFIFcbLVMM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     jsonschema
     unittestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "cvss"
-  ];
+  pythonImportsCheck = [ "cvss" ];
 
   preCheck = ''
     cd tests
@@ -40,10 +37,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Library for CVSS2/3/4";
-    mainProgram = "cvss_calculator";
     homepage = "https://github.com/RedHatProductSecurity/cvss";
     changelog = "https://github.com/RedHatProductSecurity/cvss/releases/tag/v${version}";
-    license = with licenses; [ lgpl3Plus ];
+    license = licenses.lgpl3Plus;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "cvss_calculator";
   };
 }
diff --git a/pkgs/development/python-modules/cvxopt/default.nix b/pkgs/development/python-modules/cvxopt/default.nix
index 0ba23e1510604..7b4b0c564ef64 100644
--- a/pkgs/development/python-modules/cvxopt/default.nix
+++ b/pkgs/development/python-modules/cvxopt/default.nix
@@ -1,19 +1,18 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, isPyPy
-, python
-, blas
-, lapack
-, suitesparse
-, unittestCheckHook
-, glpk ? null
-, gsl ? null
-, fftw ? null
-, withGlpk ? true
-, withGsl ? true
-, withFftw ? true
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  blas,
+  lapack,
+  suitesparse,
+  unittestCheckHook,
+  glpk ? null,
+  gsl ? null,
+  fftw ? null,
+  withGlpk ? true,
+  withGsl ? true,
+  withFftw ? true,
 }:
 
 assert (!blas.isILP64) && (!lapack.isILP64);
@@ -30,33 +29,43 @@ buildPythonPackage rec {
     hash = "sha256-NGH6QsGyJAuk2h2YXKc1A5FBV/xMd0FzJ+1tfYWs2+Y=";
   };
 
-  buildInputs = [ blas lapack ];
+  buildInputs = [
+    blas
+    lapack
+  ];
 
   # similar to Gsl, glpk, fftw there is also a dsdp interface
   # but dsdp is not yet packaged in nixpkgs
-  env = {
-    CVXOPT_BLAS_LIB = "blas";
-    CVXOPT_LAPACK_LIB = "lapack";
-    CVXOPT_BUILD_DSDP = "0";
-    CVXOPT_SUITESPARSE_LIB_DIR = "${lib.getLib suitesparse}/lib";
-    CVXOPT_SUITESPARSE_INC_DIR = "${lib.getDev suitesparse}/include";
-  } // lib.optionalAttrs withGsl {
-    CVXOPT_BUILD_GSL = "1";
-    CVXOPT_GSL_LIB_DIR= "${lib.getLib gsl}/lib";
-    CVXOPT_GSL_INC_DIR= "${lib.getDev gsl}/include";
-  } // lib.optionalAttrs withGlpk {
-    CVXOPT_BUILD_GLPK = "1";
-    CVXOPT_GLPK_LIB_DIR = "${lib.getLib glpk}/lib";
-    CVXOPT_GLPK_INC_DIR = "${lib.getDev glpk}/include";
-  } // lib.optionalAttrs withFftw {
-    CVXOPT_BUILD_FFTW = "1";
-    CVXOPT_FFTW_LIB_DIR = "${lib.getLib fftw}/lib";
-    CVXOPT_FFTW_INC_DIR = "${lib.getDev fftw}/include";
-  };
+  env =
+    {
+      CVXOPT_BLAS_LIB = "blas";
+      CVXOPT_LAPACK_LIB = "lapack";
+      CVXOPT_BUILD_DSDP = "0";
+      CVXOPT_SUITESPARSE_LIB_DIR = "${lib.getLib suitesparse}/lib";
+      CVXOPT_SUITESPARSE_INC_DIR = "${lib.getDev suitesparse}/include";
+    }
+    // lib.optionalAttrs withGsl {
+      CVXOPT_BUILD_GSL = "1";
+      CVXOPT_GSL_LIB_DIR = "${lib.getLib gsl}/lib";
+      CVXOPT_GSL_INC_DIR = "${lib.getDev gsl}/include";
+    }
+    // lib.optionalAttrs withGlpk {
+      CVXOPT_BUILD_GLPK = "1";
+      CVXOPT_GLPK_LIB_DIR = "${lib.getLib glpk}/lib";
+      CVXOPT_GLPK_INC_DIR = "${lib.getDev glpk}/include";
+    }
+    // lib.optionalAttrs withFftw {
+      CVXOPT_BUILD_FFTW = "1";
+      CVXOPT_FFTW_LIB_DIR = "${lib.getLib fftw}/lib";
+      CVXOPT_FFTW_INC_DIR = "${lib.getDev fftw}/include";
+    };
 
   nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [ "-s" "tests" ];
+  unittestFlagsArray = [
+    "-s"
+    "tests"
+  ];
 
   meta = with lib; {
     homepage = "https://cvxopt.org/";
diff --git a/pkgs/development/python-modules/cvxpy/default.nix b/pkgs/development/python-modules/cvxpy/default.nix
index 16a5adbf15948..4e49046a1e239 100644
--- a/pkgs/development/python-modules/cvxpy/default.nix
+++ b/pkgs/development/python-modules/cvxpy/default.nix
@@ -1,57 +1,56 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchpatch
-, clarabel
-, cvxopt
-, ecos
-, fetchPypi
-, numpy
-, osqp
-, pytestCheckHook
-, pythonOlder
-, scipy
-, scs
-, setuptools
-, wheel
-, pybind11
-, useOpenmp ? (!stdenv.isDarwin)
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  numpy,
+  pybind11,
+  setuptools,
+
+  # dependencies
+  clarabel,
+  cvxopt,
+  ecos,
+  osqp,
+  scipy,
+  scs,
+
+  # checks
+  pytestCheckHook,
+
+  useOpenmp ? (!stdenv.hostPlatform.isDarwin),
 }:
 
 buildPythonPackage rec {
   pname = "cvxpy";
-  version = "1.4.2";
-  format = "pyproject";
+  version = "1.5.3";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-CjhqV4jb14t7IN0HFSTsY2yPpys2KOafGrxxTI+YEeU=";
+  src = fetchFromGitHub {
+    owner = "cvxpy";
+    repo = "cvxpy";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-6RaEyFckvF3WhbfeffysMB/zt+aU1NU6B7Nm06znt9k=";
   };
 
-  patches = [
-    # fix QP tests. remove on next update
-    # https://github.com/cvxpy/cvxpy/pull/2343
-    (fetchpatch {
-      name = "fix-QP-tests.patch";
-      url = "https://github.com/cvxpy/cvxpy/commit/4c8549b9820e64c1b06f5d71c5d3f36528dd4a76.patch";
-      hash = "sha256-43zjS1STEBaGgj1jEOlX3XzMsE4wjoKAk8ApJo98AzY=";
-    })
-  ];
-
   # we need to patch out numpy version caps from upstream
   postPatch = ''
-    sed -i 's/\(numpy>=[0-9.]*\),<[0-9.]*;/\1;/g' pyproject.toml
+    substituteInPlace pyproject.toml \
+      --replace-fail "numpy >= 2.0.0" "numpy"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
+  build-system = [
+    numpy
     pybind11
+    setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     clarabel
     cvxopt
     ecos
@@ -61,9 +60,7 @@ buildPythonPackage rec {
     scs
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Required flags from https://github.com/cvxpy/cvxpy/releases/tag/v1.1.11
   preBuild = lib.optionalString useOpenmp ''
@@ -71,32 +68,24 @@ buildPythonPackage rec {
     export LDFLAGS="-lgomp"
   '';
 
-  pytestFlagsArray = [
-    "cvxpy"
-  ];
+  pytestFlagsArray = [ "cvxpy" ];
 
   disabledTests = [
-   # Disable the slowest benchmarking tests, cuts test time in half
+    # Disable the slowest benchmarking tests, cuts test time in half
     "test_tv_inpainting"
     "test_diffcp_sdp_example"
     "test_huber"
     "test_partial_problem"
-    # https://github.com/cvxpy/cvxpy/issues/2174
-    "test_scipy_mi_time_limit_reached"
-  ] ++ lib.optionals stdenv.isAarch64 [
-    "test_ecos_bb_mi_lp_2" # https://github.com/cvxpy/cvxpy/issues/1241#issuecomment-780912155
   ];
 
-  pythonImportsCheck = [
-    "cvxpy"
-  ];
+  pythonImportsCheck = [ "cvxpy" ];
 
-  meta = with lib; {
-    description = "A domain-specific language for modeling convex optimization problems in Python";
+  meta = {
+    description = "Domain-specific language for modeling convex optimization problems in Python";
     homepage = "https://www.cvxpy.org/";
     downloadPage = "https://github.com/cvxpy/cvxpy//releases";
     changelog = "https://github.com/cvxpy/cvxpy/releases/tag/v${version}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ drewrisinger ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ drewrisinger ];
   };
 }
diff --git a/pkgs/development/python-modules/cwcwidth/default.nix b/pkgs/development/python-modules/cwcwidth/default.nix
index 85d20fc6f464b..75b8b091c39b4 100644
--- a/pkgs/development/python-modules/cwcwidth/default.nix
+++ b/pkgs/development/python-modules/cwcwidth/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi, cython, pytestCheckHook, setuptools }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cython,
+  pytestCheckHook,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "cwcwidth";
@@ -10,7 +17,10 @@ buildPythonPackage rec {
     hash = "sha256-8Z0RoBSNSoys0GTJbpO8qM40FaGGroIEA49F4Qjbdrg=";
   };
 
-  nativeBuildInputs = [ cython setuptools ];
+  nativeBuildInputs = [
+    cython
+    setuptools
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
   preCheck = ''
@@ -34,6 +44,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/sebastinas/cwcwidth";
     changelog = "https://github.com/sebastinas/cwcwidth/blob/main/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cwl-upgrader/default.nix b/pkgs/development/python-modules/cwl-upgrader/default.nix
index d3f3978dc0b79..8e5e2d1c3d24d 100644
--- a/pkgs/development/python-modules/cwl-upgrader/default.nix
+++ b/pkgs/development/python-modules/cwl-upgrader/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mypy-extensions
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, ruamel-yaml
-, schema-salad
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mypy-extensions,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  ruamel-yaml,
+  schema-salad,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
       --replace '"schema_salad",' ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     mypy-extensions
@@ -45,9 +44,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "cwlupgrader"
-  ];
+  pythonImportsCheck = [ "cwlupgrader" ];
 
   meta = with lib; {
     description = "Library to upgrade CWL syntax to a newer version";
diff --git a/pkgs/development/python-modules/cwl-utils/default.nix b/pkgs/development/python-modules/cwl-utils/default.nix
index fe6c94829e0e4..8e5eb6dd772db 100644
--- a/pkgs/development/python-modules/cwl-utils/default.nix
+++ b/pkgs/development/python-modules/cwl-utils/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "cwl-utils";
-  version = "0.33";
+  version = "0.34";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
     owner = "common-workflow-language";
     repo = "cwl-utils";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+GvG5Uu2nQWYCcuAkBkegsmMCWhf269jH6Zcex99I4M=";
+    hash = "sha256-HzLDUhiFegYPWAKt3YoiWiunNHcDEx9FvRXwxKd7wp0=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/cwlformat/default.nix b/pkgs/development/python-modules/cwlformat/default.nix
index 0703175d02752..2433203eda22d 100644
--- a/pkgs/development/python-modules/cwlformat/default.nix
+++ b/pkgs/development/python-modules/cwlformat/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pytestCheckHook
-, pythonOlder
-, ruamel-yaml
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pytestCheckHook,
+  pythonOlder,
+  ruamel-yaml,
 }:
 
 buildPythonPackage rec {
@@ -30,17 +31,11 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [
-    ruamel-yaml
-  ];
+  propagatedBuildInputs = [ ruamel-yaml ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "cwlformat"
-  ];
+  pythonImportsCheck = [ "cwlformat" ];
 
   meta = with lib; {
     description = "Code formatter for CWL";
diff --git a/pkgs/development/python-modules/cx-freeze/default.nix b/pkgs/development/python-modules/cx-freeze/default.nix
index 1c147ddbb88b9..d8e05e3e70fe0 100644
--- a/pkgs/development/python-modules/cx-freeze/default.nix
+++ b/pkgs/development/python-modules/cx-freeze/default.nix
@@ -1,46 +1,53 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, ncurses
-, importlib-metadata
-, setuptools
-, wheel
-, patchelf
+{
+  lib,
+  buildPythonPackage,
+  distutils,
+  fetchPypi,
+  pythonOlder,
+  ncurses,
+  packaging,
+  setuptools,
+  filelock,
+  wheel,
+  patchelf,
 }:
 
 buildPythonPackage rec {
   pname = "cx-freeze";
-  version = "6.15.16";
+  version = "7.2.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.11";
 
   src = fetchPypi {
-    pname = "cx_Freeze";
+    pname = "cx_freeze";
     inherit version;
-    hash = "sha256-xjmRiG/ypTGfjw0HwDSaa74aZbXzIPi5JDiI5jyaSiI=";
+    hash = "sha256-xX9xAbTTUTJGSx7IjLiUjDt8W07OS7NUwWCRWJyzNYM=";
   };
 
-  nativeBuildInputs = [
+  postPatch = ''
+    sed -i /patchelf/d pyproject.toml
+    # Build system requirements
+    substituteInPlace pyproject.toml \
+      --replace-fail "setuptools>=65.6.3,<71" "setuptools" \
+      --replace-fail "wheel>=0.42.0,<=0.43.0" "wheel"
+  '';
+
+  build-system = [
     setuptools
     wheel
   ];
 
-  propagatedBuildInputs = [
-    importlib-metadata # upstream has this for 3.8 as well
-    ncurses
+  buildInputs = [ ncurses ];
+
+  dependencies = [
+    distutils
+    filelock
+    packaging
     setuptools
+    wheel
   ];
 
-  postPatch = ''
-    # timestamp need to come after 1980 for zipfiles and nix store is set to epoch
-    substituteInPlace cx_Freeze/freezer.py \
-      --replace "st.st_mtime" "time.time()"
-
-    sed -i /patchelf/d pyproject.toml
-  '';
-
   makeWrapperArgs = [
     "--prefix"
     "PATH"
@@ -48,15 +55,15 @@ buildPythonPackage rec {
     (lib.makeBinPath [ patchelf ])
   ];
 
-  # fails to find Console even though it exists on python 3.x
+  # Fails to find Console even though it exists on python 3.x
   doCheck = false;
 
   meta = with lib; {
-    description = "A set of scripts and modules for freezing Python scripts into executables";
+    description = "Set of scripts and modules for freezing Python scripts into executables";
     homepage = "https://marcelotduarte.github.io/cx_Freeze/";
     changelog = "https://github.com/marcelotduarte/cx_Freeze/releases/tag/${version}";
     license = licenses.psfl;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     mainProgram = "cxfreeze";
   };
 }
diff --git a/pkgs/development/python-modules/cx-oracle/default.nix b/pkgs/development/python-modules/cx-oracle/default.nix
index 040f762c9f21c..aa52a0695abb9 100644
--- a/pkgs/development/python-modules/cx-oracle/default.nix
+++ b/pkgs/development/python-modules/cx-oracle/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, odpic }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  odpic,
+}:
 
 buildPythonPackage rec {
   pname = "cx-oracle";
diff --git a/pkgs/development/python-modules/cxxfilt/default.nix b/pkgs/development/python-modules/cxxfilt/default.nix
index 2bf02c5642569..e82f5c6e880e8 100644
--- a/pkgs/development/python-modules/cxxfilt/default.nix
+++ b/pkgs/development/python-modules/cxxfilt/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, gcc-unwrapped
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  gcc-unwrapped,
 }:
 buildPythonPackage rec {
   pname = "cxxfilt";
@@ -14,22 +15,22 @@ buildPythonPackage rec {
     sha256 = "7df6464ba5e8efbf0d8974c0b2c78b32546676f06059a83515dbdfa559b34214";
   };
 
-  postPatch = let
-    libstdcpp = "${lib.getLib gcc-unwrapped}/lib/libstdc++${stdenv.hostPlatform.extensions.sharedLibrary}";
-  in ''
-    substituteInPlace cxxfilt/__init__.py \
-      --replace "find_any_library('stdc++', 'c++')" '"${libstdcpp}"'
-  '';
+  postPatch =
+    let
+      libstdcpp = "${lib.getLib gcc-unwrapped}/lib/libstdc++${stdenv.hostPlatform.extensions.sharedLibrary}";
+    in
+    ''
+      substituteInPlace cxxfilt/__init__.py \
+        --replace "find_any_library('stdc++', 'c++')" '"${libstdcpp}"'
+    '';
 
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "cxxfilt"
-  ];
+  pythonImportsCheck = [ "cxxfilt" ];
 
   meta = with lib; {
-    description = "Demangling C++ symbols in Python / interface to abi::__cxa_demangle ";
+    description = "Demangling C++ symbols in Python / interface to abi::__cxa_demangle";
     homepage = "https://github.com/afq984/python-cxxfilt";
     license = licenses.bsd2;
     maintainers = [ ];
diff --git a/pkgs/development/python-modules/cxxheaderparser/default.nix b/pkgs/development/python-modules/cxxheaderparser/default.nix
new file mode 100644
index 0000000000000..ba53da3679a20
--- /dev/null
+++ b/pkgs/development/python-modules/cxxheaderparser/default.nix
@@ -0,0 +1,39 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pcpp,
+  pytestCheckHook,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "cxxheaderparser";
+  version = "1.3.4";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "robotpy";
+    repo = "cxxheaderparser";
+    rev = version;
+    hash = "sha256-Cyo+18mH1p5Zy4dWP3mjZRIkZZOyb61ABedk/amDi0g=";
+  };
+
+  postPatch = ''
+    # version.py is generated based on latest git tag
+    echo "__version__ = '${version}'" > cxxheaderparser/version.py
+  '';
+
+  build-system = [ setuptools ];
+
+  checkInputs = [ pcpp ];
+  nativeCheckInputs = [ pytestCheckHook ];
+  pythonImportsCheck = [ "cxxheaderparser" ];
+
+  meta = {
+    description = "Modern pure python C++ header parser";
+    homepage = "https://github.com/robotpy/cxxheaderparser";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ nim65s ];
+  };
+}
diff --git a/pkgs/development/python-modules/cybox/default.nix b/pkgs/development/python-modules/cybox/default.nix
new file mode 100644
index 0000000000000..24c991a05862e
--- /dev/null
+++ b/pkgs/development/python-modules/cybox/default.nix
@@ -0,0 +1,56 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  lxml,
+  mixbox,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "cybox";
+  version = "2.1.0.21";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "CybOXProject";
+    repo = "python-cybox";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-Gn/gH7pvvOqLIGExgCNa5KswPazIZUZXdQe3LRAUVjw=";
+  };
+
+  patches = [
+    # Import ABC from collections.abc for Python 3 compatibility, https://github.com/CybOXProject/python-cybox/pull/332
+    (fetchpatch {
+      name = "collections-abc.patch";
+      url = "https://github.com/CybOXProject/python-cybox/commit/fd4631dac12943d89e9ea2e94105cbc3b81d52f9.patch";
+      hash = "sha256-dXEsJujtbU/SuUBge8abWgMPeYO1ZR3c5758Bd0dnwE=";
+    })
+  ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    lxml
+    mixbox
+    python-dateutil
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "cybox" ];
+
+  meta = {
+    description = "Library for parsing, manipulating, and generating CybOX content";
+    homepage = "https://github.com/CybOXProject/python-cybox/";
+    changelog = "https://github.com/CybOXProject/python-cybox/blob/${src.rev}/CHANGES.txt";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/cycler/default.nix b/pkgs/development/python-modules/cycler/default.nix
index d7bfe37562733..fae2ae30b3366 100644
--- a/pkgs/development/python-modules/cycler/default.nix
+++ b/pkgs/development/python-modules/cycler/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# tests
-, pytest-xdist
-, pytestCheckHook
+  # tests
+  pytest-xdist,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-5L0APSi/mJ85SuKCVz+c6Fn8zZNpRm6vCeBO0fpGKxg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pytest-xdist
diff --git a/pkgs/development/python-modules/cyclonedx-python-lib/default.nix b/pkgs/development/python-modules/cyclonedx-python-lib/default.nix
index 10cd64f83e622..09689a8447519 100644
--- a/pkgs/development/python-modules/cyclonedx-python-lib/default.nix
+++ b/pkgs/development/python-modules/cyclonedx-python-lib/default.nix
@@ -1,29 +1,29 @@
-{ lib
-, buildPythonPackage
-, ddt
-, fetchFromGitHub
-, importlib-metadata
-, jsonschema
-, license-expression
-, lxml
-, packageurl-python
-, py-serializable
-, pythonRelaxDepsHook
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, requirements-parser
-, sortedcontainers
-, setuptools
-, toml
-, types-setuptools
-, types-toml
-, xmldiff
+{
+  lib,
+  buildPythonPackage,
+  ddt,
+  fetchFromGitHub,
+  importlib-metadata,
+  jsonschema,
+  license-expression,
+  lxml,
+  packageurl-python,
+  py-serializable,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  requirements-parser,
+  sortedcontainers,
+  setuptools,
+  toml,
+  types-setuptools,
+  types-toml,
+  xmldiff,
 }:
 
 buildPythonPackage rec {
   pname = "cyclonedx-python-lib";
-  version = "6.4.4";
+  version = "7.6.1";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -32,15 +32,14 @@ buildPythonPackage rec {
     owner = "CycloneDX";
     repo = "cyclonedx-python-lib";
     rev = "refs/tags/v${version}";
-    hash = "sha256-PNacp16WZHNblFyA117hSL87IKGMrW0OYNXCSoBoO8Q=";
+    hash = "sha256-KvP3msV2qIn26pSLv0XrxnwqRx7uWcllLTJg9vig5V0=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  pythonRelaxDeps = [ "py-serializable" ];
+
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     importlib-metadata
     license-expression
     packageurl-python
@@ -53,29 +52,32 @@ buildPythonPackage rec {
     types-toml
   ];
 
+  passthru.optional-dependencies = {
+    validation = [
+      jsonschema
+      lxml
+    ];
+    json-validation = [
+      jsonschema
+    ];
+    xml-validation = [
+      lxml
+    ];
+  };
+
   nativeCheckInputs = [
     ddt
-    jsonschema
-    lxml
     pytestCheckHook
     xmldiff
-  ];
+  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "cyclonedx"
-  ];
-
-  pythonRelaxDeps = [
-    "py-serializable"
-  ];
+  pythonImportsCheck = [ "cyclonedx" ];
 
   preCheck = ''
     export PYTHONPATH=tests''${PYTHONPATH+:$PYTHONPATH}
   '';
 
-  pytestFlagsArray = [
-    "tests/"
-  ];
+  pytestFlagsArray = [ "tests/" ];
 
   disabledTests = [
     # These tests require network access
diff --git a/pkgs/development/python-modules/cyclopts/default.nix b/pkgs/development/python-modules/cyclopts/default.nix
new file mode 100644
index 0000000000000..5948f958438e5
--- /dev/null
+++ b/pkgs/development/python-modules/cyclopts/default.nix
@@ -0,0 +1,64 @@
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  docstring-parser,
+  fetchFromGitHub,
+  importlib-metadata,
+  poetry-core,
+  poetry-dynamic-versioning,
+  pydantic,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  rich,
+  rich-rst,
+  typing-extensions,
+}:
+
+buildPythonPackage rec {
+  pname = "cyclopts";
+  version = "2.9.9";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "BrianPugh";
+    repo = "cyclopts";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-gU/oqFrOzA6PQTwwGS9si19F+LIondO3MozNDwPDtgs=";
+  };
+
+  build-system = [
+    poetry-core
+    poetry-dynamic-versioning
+  ];
+
+  dependencies = [
+    attrs
+    docstring-parser
+    importlib-metadata
+    rich
+    rich-rst
+    typing-extensions
+  ];
+
+  nativeCheckInputs = [
+    pydantic
+    pytest-mock
+    pytestCheckHook
+    pyyaml
+  ];
+
+  pythonImportsCheck = [ "cyclopts" ];
+
+  meta = with lib; {
+    description = "Module to create CLIs based on Python type hints";
+    homepage = "https://github.com/BrianPugh/cyclopts";
+    changelog = "https://github.com/BrianPugh/cyclopts/releases/tag/v${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/cymem/default.nix b/pkgs/development/python-modules/cymem/default.nix
index 52e24928ec229..ef7db6848cbdd 100644
--- a/pkgs/development/python-modules/cymem/default.nix
+++ b/pkgs/development/python-modules/cymem/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, cython
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  cython,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     cython
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     # remove src module, so tests use the installed module instead
@@ -36,9 +35,7 @@ buildPythonPackage rec {
     rm -r ./cymem
   '';
 
-  pythonImportsCheck = [
-    "cymem"
-  ];
+  pythonImportsCheck = [ "cymem" ];
 
   meta = with lib; {
     description = "Cython memory pool for RAII-style memory management";
diff --git a/pkgs/development/python-modules/cypari2/default.nix b/pkgs/development/python-modules/cypari2/default.nix
index 025692de1f740..f987ee07a64e1 100644
--- a/pkgs/development/python-modules/cypari2/default.nix
+++ b/pkgs/development/python-modules/cypari2/default.nix
@@ -1,12 +1,16 @@
-{ lib
-, buildPythonPackage
-, python
-, fetchpatch
-, fetchPypi
-, pari
-, gmp
-, cython
-, cysignals
+{
+  lib,
+  buildPythonPackage,
+  python,
+  fetchpatch,
+  fetchPypi,
+  pari,
+  gmp,
+  cython,
+  cysignals,
+
+  # Reverse dependency
+  sage,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +21,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-GiWGXDTyCx3JWDB5jjSrZDbieLjgyA3HvwqzTF2wOrg=";
+    hash = "sha256-GiWGXDTyCx3JWDB5jjSrZDbieLjgyA3HvwqzTF2wOrg=";
   };
 
   patches = [
@@ -35,13 +39,9 @@ buildPythonPackage rec {
     ${python.pythonOnBuildForHost.interpreter} setup.py build_ext --inplace
   '';
 
-  nativeBuildInputs = [
-    pari
-  ];
+  nativeBuildInputs = [ pari ];
 
-  buildInputs = [
-    gmp
-  ];
+  buildInputs = [ gmp ];
 
   propagatedBuildInputs = [
     cysignals
@@ -53,6 +53,10 @@ buildPythonPackage rec {
     make check
   '';
 
+  passthru.tests = {
+    inherit sage;
+  };
+
   meta = with lib; {
     description = "Cython bindings for PARI";
     license = licenses.gpl2Plus;
diff --git a/pkgs/development/python-modules/cypherpunkpay/default.nix b/pkgs/development/python-modules/cypherpunkpay/default.nix
index 9bf5e8fcd85d2..fe5874db533f7 100644
--- a/pkgs/development/python-modules/cypherpunkpay/default.nix
+++ b/pkgs/development/python-modules/cypherpunkpay/default.nix
@@ -1,26 +1,25 @@
-{ lib
-, stdenv
-, apscheduler
-, bitstring
-, buildPythonPackage
-, cffi
-, ecdsa
-, fetchFromGitHub
-, monero
-, poetry-core
-, pypng
-, pyqrcode
-, pyramid
-, pyramid-jinja2
-, pysocks
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
-, tzlocal
-, waitress
-, webtest
-, yoyo-migrations
+{
+  lib,
+  apscheduler,
+  bitstring,
+  buildPythonPackage,
+  cffi,
+  ecdsa,
+  fetchFromGitHub,
+  monero,
+  poetry-core,
+  pypng,
+  pyqrcode,
+  pyramid,
+  pyramid-jinja2,
+  pysocks,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  tzlocal,
+  waitress,
+  webtest,
+  yoyo-migrations,
 }:
 
 buildPythonPackage rec {
@@ -44,11 +43,11 @@ buildPythonPackage rec {
     "pypng"
     "tzlocal"
     "yoyo-migrations"
+    "waitress"
   ];
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -102,15 +101,16 @@ buildPythonPackage rec {
     "tests/acceptance/views_dummystore"
   ];
 
-  pythonImportsCheck = [
-    "cypherpunkpay"
-  ];
+  pythonImportsCheck = [ "cypherpunkpay" ];
 
   meta = with lib; {
     description = "Modern self-hosted software for accepting Bitcoin";
     homepage = "https://github.com/CypherpunkPay/CypherpunkPay";
     changelog = "https://github.com/CypherpunkPay/CypherpunkPay/releases/tag/v${version}";
-    license = with licenses; [ mit /* or */ unlicense ];
+    license = with licenses; [
+      mit # or
+      unlicense
+    ];
     maintainers = with maintainers; [ prusnak ];
   };
 }
diff --git a/pkgs/development/python-modules/cyrtranslit/default.nix b/pkgs/development/python-modules/cyrtranslit/default.nix
new file mode 100644
index 0000000000000..6d524bcf222a2
--- /dev/null
+++ b/pkgs/development/python-modules/cyrtranslit/default.nix
@@ -0,0 +1,35 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  unittestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "cyrtranslit";
+  version = "1.1.1";
+  pyproject = true;
+
+  # Pypi tarball doesn't contain tests/
+  src = fetchFromGitHub {
+    owner = "opendatakosovo";
+    repo = "cyrillic-transliteration";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-t8UTOmjGqjmxU7+Po0/HmOPWAvcgZibaUC9dMlttA/0=";
+  };
+
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ unittestCheckHook ];
+
+  pythonImportsCheck = [ "cyrtranslit" ];
+
+  meta = with lib; {
+    description = "Transliterate Cyrillic script to Latin script and vice versa";
+    homepage = "https://github.com/opendatakosovo/cyrillic-transliteration";
+    license = licenses.mit;
+    maintainers = with maintainers; [ erictapen ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/cysignals/default.nix b/pkgs/development/python-modules/cysignals/default.nix
index 62cc3dd30d8af..9e90eaf38f19d 100644
--- a/pkgs/development/python-modules/cysignals/default.nix
+++ b/pkgs/development/python-modules/cysignals/default.nix
@@ -1,9 +1,14 @@
-{ lib
-, autoreconfHook
-, fetchPypi
-, buildPythonPackage
-, cython
-, pariSupport ? true, pari # for interfacing with the PARI/GP signal handler
+{
+  lib,
+  autoreconfHook,
+  fetchPypi,
+  buildPythonPackage,
+  cython,
+  pariSupport ? true,
+  pari, # for interfacing with the PARI/GP signal handler
+
+  # Reverse dependency
+  sage,
 }:
 
 assert pariSupport -> pari != null;
@@ -20,9 +25,7 @@ buildPythonPackage rec {
 
   # explicit check:
   # build/src/cysignals/implementation.c:27:2: error: #error "cysignals must be compiled without _FORTIFY_SOURCE"
-  hardeningDisable = [
-    "fortify"
-  ];
+  hardeningDisable = [ "fortify" ];
 
   # known failure: https://github.com/sagemath/cysignals/blob/582dbf6a7b0f9ade0abe7a7b8720b7fb32435c3c/testgdb.py#L5
   doCheck = false;
@@ -33,19 +36,23 @@ buildPythonPackage rec {
     export PATH="$out/bin:$PATH"
   '';
 
-  propagatedBuildInputs = [
-    cython
-  ] ++ lib.optionals pariSupport [
-    # When cysignals is built with pari, including cysignals into the
-    # buildInputs of another python package will cause cython to link against
-    # pari.
-    pari
-  ];
+  propagatedBuildInputs =
+    [ cython ]
+    ++ lib.optionals pariSupport [
+      # When cysignals is built with pari, including cysignals into the
+      # buildInputs of another python package will cause cython to link against
+      # pari.
+      pari
+    ];
 
   nativeBuildInputs = [ autoreconfHook ];
 
   enableParallelBuilding = true;
 
+  passthru.tests = {
+    inherit sage;
+  };
+
   meta = with lib; {
     description = "Interrupt and signal handling for Cython";
     mainProgram = "cysignals-CSI";
diff --git a/pkgs/development/python-modules/cython-test-exception-raiser/default.nix b/pkgs/development/python-modules/cython-test-exception-raiser/default.nix
index e6f3f8b451b36..70a2746b1c60b 100644
--- a/pkgs/development/python-modules/cython-test-exception-raiser/default.nix
+++ b/pkgs/development/python-modules/cython-test-exception-raiser/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cython
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cython,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -24,15 +25,16 @@ buildPythonPackage rec {
     wheel
   ];
 
-  pythonImportsCheck = [
-    "cython_test_exception_raiser"
-  ];
+  pythonImportsCheck = [ "cython_test_exception_raiser" ];
 
   meta = with lib; {
     description = "Testing only. A cython simple extension which is used as helper for twisted/twisted Failure tests";
     homepage = "https://github.com/twisted/cython-test-exception-raiser";
     changelog = "https://github.com/twisted/cython-test-exception-raiser/blob/${src.rev}/CHANGELOG.rst";
-    license = with licenses; [ publicDomain mit ];
-    maintainers = with maintainers; [ ];
+    license = with licenses; [
+      publicDomain
+      mit
+    ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cython/0.nix b/pkgs/development/python-modules/cython/0.nix
index e0b6c02d8accb..a484892c00400 100644
--- a/pkgs/development/python-modules/cython/0.nix
+++ b/pkgs/development/python-modules/cython/0.nix
@@ -1,29 +1,36 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, setuptools
-, python
-, pkg-config
-, gdb
-, numpy
-, ncurses
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  setuptools,
+  python,
+  pkg-config,
+  gdb,
+  numpy,
+  ncurses,
 }:
 
 let
-  excludedTests = [ "reimport_from_subinterpreter" ]
+  excludedTests =
+    [ "reimport_from_subinterpreter" ]
     # cython's testsuite is not working very well with libc++
     # We are however optimistic about things outside of testsuite still working
-    ++ lib.optionals (stdenv.cc.isClang or false) [ "cpdef_extern_func" "libcpp_algo" ]
+    ++ lib.optionals (stdenv.cc.isClang or false) [
+      "cpdef_extern_func"
+      "libcpp_algo"
+    ]
     # Some tests in the test suite isn't working on aarch64. Disable them for
     # now until upstream finds a workaround.
     # Upstream issue here: https://github.com/cython/cython/issues/2308
-    ++ lib.optionals stdenv.isAarch64 [ "numpy_memoryview" ]
-    ++ lib.optionals stdenv.isi686 [ "future_division" "overflow_check_longlong" ]
-  ;
-
-in buildPythonPackage rec {
+    ++ lib.optionals stdenv.hostPlatform.isAarch64 [ "numpy_memoryview" ]
+    ++ lib.optionals stdenv.hostPlatform.isi686 [
+      "future_division"
+      "overflow_check_longlong"
+    ];
+in
+buildPythonPackage rec {
   pname = "cython";
   version = "0.29.36";
   pyproject = true;
@@ -40,7 +47,9 @@ in buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
-    gdb numpy ncurses
+    gdb
+    numpy
+    ncurses
   ];
 
   LC_ALL = "en_US.UTF-8";
@@ -68,14 +77,17 @@ in buildPythonPackage rec {
     export HOME="$NIX_BUILD_TOP"
     ${python.interpreter} runtests.py -j$NIX_BUILD_CORES \
       --no-code-style \
-      ${lib.optionalString (builtins.length excludedTests != 0)
-        ''--exclude="(${builtins.concatStringsSep "|" excludedTests})"''}
+      ${
+        lib.optionalString (
+          builtins.length excludedTests != 0
+        ) ''--exclude="(${builtins.concatStringsSep "|" excludedTests})"''
+      }
   '';
 
   # https://github.com/cython/cython/issues/2785
   # Temporary solution
   doCheck = false;
-  # doCheck = !stdenv.isDarwin;
+  # doCheck = !stdenv.hostPlatform.isDarwin;
 
   # force regeneration of generated code in source distributions
   # https://github.com/cython/cython/issues/5089
@@ -83,7 +95,7 @@ in buildPythonPackage rec {
 
   meta = {
     changelog = "https://github.com/cython/cython/blob/${version}/CHANGES.rst";
-    description = "An optimising static compiler for both the Python programming language and the extended Cython programming language";
+    description = "Optimising static compiler for both the Python programming language and the extended Cython programming language";
     homepage = "https://cython.org";
     license = lib.licenses.asl20;
   };
diff --git a/pkgs/development/python-modules/cython/default.nix b/pkgs/development/python-modules/cython/default.nix
index 2062ae03863ba..63e2821cde39b 100644
--- a/pkgs/development/python-modules/cython/default.nix
+++ b/pkgs/development/python-modules/cython/default.nix
@@ -1,36 +1,46 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, python
-, pkg-config
-, gdb
-, numpy
-, ncurses
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  python,
+  pkg-config,
+  gdb,
+  numpy,
+  ncurses,
+
+  # Reverse dependency
+  sage,
 }:
 
 let
-  excludedTests = [ "reimport_from_subinterpreter" ]
+  excludedTests =
+    [ "reimport_from_subinterpreter" ]
     # cython's testsuite is not working very well with libc++
     # We are however optimistic about things outside of testsuite still working
-    ++ lib.optionals (stdenv.cc.isClang or false) [ "cpdef_extern_func" "libcpp_algo" ]
+    ++ lib.optionals (stdenv.cc.isClang or false) [
+      "cpdef_extern_func"
+      "libcpp_algo"
+    ]
     # Some tests in the test suite isn't working on aarch64. Disable them for
     # now until upstream finds a workaround.
     # Upstream issue here: https://github.com/cython/cython/issues/2308
-    ++ lib.optionals stdenv.isAarch64 [ "numpy_memoryview" ]
-    ++ lib.optionals stdenv.isi686 [ "future_division" "overflow_check_longlong" ]
-  ;
-
-in buildPythonPackage rec {
+    ++ lib.optionals stdenv.hostPlatform.isAarch64 [ "numpy_memoryview" ]
+    ++ lib.optionals stdenv.hostPlatform.isi686 [
+      "future_division"
+      "overflow_check_longlong"
+    ];
+in
+buildPythonPackage rec {
   pname = "cython";
-  version = "3.0.9";
+  version = "3.0.11";
   pyproject = true;
 
   src = fetchPypi {
-    pname = "Cython";
+    pname = "cython";
     inherit version;
-    hash = "sha256-otNU8FnR8FXTTPqmLFtovHisLOq2QHFI1H+1CM87pPM=";
+    hash = "sha256-cUbdKvhoK0ymEzGFHmrrzp/lFY51MAND+AwHyoCx+v8=";
   };
 
   build-system = [
@@ -39,7 +49,9 @@ in buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
-    gdb numpy ncurses
+    gdb
+    numpy
+    ncurses
   ];
 
   env.LC_ALL = "en_US.UTF-8";
@@ -48,14 +60,21 @@ in buildPythonPackage rec {
     export HOME="$NIX_BUILD_TOP"
     ${python.interpreter} runtests.py -j$NIX_BUILD_CORES \
       --no-code-style \
-      ${lib.optionalString (builtins.length excludedTests != 0)
-        ''--exclude="(${builtins.concatStringsSep "|" excludedTests})"''}
+      ${
+        lib.optionalString (
+          builtins.length excludedTests != 0
+        ) ''--exclude="(${builtins.concatStringsSep "|" excludedTests})"''
+      }
   '';
 
   # https://github.com/cython/cython/issues/2785
   # Temporary solution
   doCheck = false;
-  # doCheck = !stdenv.isDarwin;
+  # doCheck = !stdenv.hostPlatform.isDarwin;
+
+  passthru.tests = {
+    inherit sage;
+  };
 
   # force regeneration of generated code in source distributions
   # https://github.com/cython/cython/issues/5089
@@ -63,7 +82,7 @@ in buildPythonPackage rec {
 
   meta = {
     changelog = "https://github.com/cython/cython/blob/${version}/CHANGES.rst";
-    description = "An optimising static compiler for both the Python programming language and the extended Cython programming language";
+    description = "Optimising static compiler for both the Python programming language and the extended Cython programming language";
     homepage = "https://cython.org";
     license = lib.licenses.asl20;
   };
diff --git a/pkgs/development/python-modules/cytoolz/default.nix b/pkgs/development/python-modules/cytoolz/default.nix
index ddb7b7df0d5e2..befb71963c792 100644
--- a/pkgs/development/python-modules/cytoolz/default.nix
+++ b/pkgs/development/python-modules/cytoolz/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPyPy
-, pytestCheckHook
-, cython
-, setuptools
-, toolz
-, python
-, isPy27
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  pytestCheckHook,
+  cython,
+  setuptools,
+  toolz,
+  python,
+  isPy27,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/dacite/default.nix b/pkgs/development/python-modules/dacite/default.nix
index fca71b11a0e0d..c6c5e01df2132 100644
--- a/pkgs/development/python-modules/dacite/default.nix
+++ b/pkgs/development/python-modules/dacite/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -24,17 +25,11 @@ buildPythonPackage rec {
       --replace "--benchmark-autosave --benchmark-json=benchmark.json" ""
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dacite"
-  ];
+  pythonImportsCheck = [ "dacite" ];
 
-  disabledTestPaths = [
-    "tests/performance"
-  ];
+  disabledTestPaths = [ "tests/performance" ];
 
   meta = with lib; {
     description = "Python helper to create data classes from dictionaries";
diff --git a/pkgs/development/python-modules/daemonize/default.nix b/pkgs/development/python-modules/daemonize/default.nix
index bdff79e29aa7a..c71b3be587019 100644
--- a/pkgs/development/python-modules/daemonize/default.nix
+++ b/pkgs/development/python-modules/daemonize/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -18,5 +19,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/thesharp/daemonize";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/daemonocle/default.nix b/pkgs/development/python-modules/daemonocle/default.nix
index 5acec6393632e..abe58995650fc 100644
--- a/pkgs/development/python-modules/daemonocle/default.nix
+++ b/pkgs/development/python-modules/daemonocle/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, click
-, psutil
-, pytestCheckHook
-, lsof
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  click,
+  psutil,
+  pytestCheckHook,
+  lsof,
 }:
 
 buildPythonPackage rec {
@@ -40,12 +41,10 @@ buildPythonPackage rec {
     "test_exec_worker"
   ];
 
-  pythonImportsCheck = [
-    "daemonocle"
-  ];
+  pythonImportsCheck = [ "daemonocle" ];
 
   meta = with lib; {
-    description = "A Python library for creating super fancy Unix daemons";
+    description = "Python library for creating super fancy Unix daemons";
     longDescription = ''
       daemonocle is a library for creating your own Unix-style daemons
       written in Python.  It solves many problems that other daemon
@@ -54,7 +53,7 @@ buildPythonPackage rec {
     '';
     homepage = "https://github.com/jnrbsn/daemonocle";
     license = licenses.mit;
-    maintainers = with maintainers; [ AluisioASG ];
+    maintainers = [ ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/daff/default.nix b/pkgs/development/python-modules/daff/default.nix
index 59c2e1bfc38b6..d12b3245879b7 100644
--- a/pkgs/development/python-modules/daff/default.nix
+++ b/pkgs/development/python-modules/daff/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -9,15 +10,13 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-ItDan9ajJ1tUySapyXsYD5JYqtZRE+oY8/7FLLrc2Bg=";
+    hash = "sha256-ItDan9ajJ1tUySapyXsYD5JYqtZRE+oY8/7FLLrc2Bg=";
   };
 
   # there are no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "daff"
-  ];
+  pythonImportsCheck = [ "daff" ];
 
   meta = with lib; {
     description = "Library for comparing tables, producing a summary of their differences, and using such a summary as a patch file";
diff --git a/pkgs/development/python-modules/dahlia/default.nix b/pkgs/development/python-modules/dahlia/default.nix
new file mode 100644
index 0000000000000..6762d6e666abe
--- /dev/null
+++ b/pkgs/development/python-modules/dahlia/default.nix
@@ -0,0 +1,31 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+}:
+
+buildPythonPackage rec {
+  pname = "dahlia";
+  version = "3.0.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "dahlia-lib";
+    repo = "dahlia";
+    rev = "refs/tags/${version}";
+    hash = "sha256-t8m/7TSzVvETvn3Jar29jCh55Ti+B0NA8Az/8GHwQAg=";
+  };
+
+  build-system = [ poetry-core ];
+  pythonImportsCheck = [ "dahlia" ];
+
+  meta = {
+    changelog = "https://github.com/dahlia-lib/dahlia/blob/${src.rev}/CHANGELOG.md";
+    description = "Simple text formatting package, inspired by the game Minecraft";
+    license = lib.licenses.mit;
+    homepage = "https://github.com/dahlia-lib/dahlia";
+    maintainers = with lib.maintainers; [ sigmanificient ];
+    mainProgram = "dahlia";
+  };
+}
diff --git a/pkgs/development/python-modules/daiquiri/default.nix b/pkgs/development/python-modules/daiquiri/default.nix
index c3e5436de9699..172253d600887 100644
--- a/pkgs/development/python-modules/daiquiri/default.nix
+++ b/pkgs/development/python-modules/daiquiri/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, python-json-logger
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  python-json-logger,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -22,13 +23,9 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    python-json-logger
-  ];
+  propagatedBuildInputs = [ python-json-logger ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "daiquiri" ];
 
@@ -36,6 +33,6 @@ buildPythonPackage rec {
     description = "Library to configure Python logging easily";
     homepage = "https://github.com/Mergifyio/daiquiri";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dalle-mini/default.nix b/pkgs/development/python-modules/dalle-mini/default.nix
index 0c768ba5dbe14..2ea9b0c2d0c11 100644
--- a/pkgs/development/python-modules/dalle-mini/default.nix
+++ b/pkgs/development/python-modules/dalle-mini/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, einops
-, emoji
-, flax
-, ftfy
-, jax
-, jaxlib
-, pillow
-, transformers
-, unidecode
-, wandb
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  einops,
+  emoji,
+  flax,
+  ftfy,
+  jax,
+  jaxlib,
+  pillow,
+  transformers,
+  unidecode,
+  wandb,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/daphne/default.nix b/pkgs/development/python-modules/daphne/default.nix
index 1cb0a1998493e..7e85adb0c29df 100644
--- a/pkgs/development/python-modules/daphne/default.nix
+++ b/pkgs/development/python-modules/daphne/default.nix
@@ -1,32 +1,51 @@
-{ lib
-, stdenv
-, asgiref
-, autobahn
-, buildPythonPackage
-, django
-, fetchFromGitHub
-, hypothesis
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, twisted
+{
+  lib,
+  stdenv,
+  asgiref,
+  autobahn,
+  buildPythonPackage,
+  django,
+  fetchFromGitHub,
+  fetchpatch2,
+  hypothesis,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  twisted,
 }:
 
 buildPythonPackage rec {
   pname = "daphne";
-  version = "4.0.0";
-  format = "setuptools";
+  version = "4.1.2";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "django";
-    repo = pname;
-    rev = version;
-    hash = "sha256-vPMrmC2B0Pcvk8Y1FsJ4PXnzIMtPod7lL2u0IYNVUxc=";
+    repo = "daphne";
+    rev = "refs/tags/${version}";
+    hash = "sha256-RAK2CaKKVmVIv1MBK+9xyADOrHq664MQOry4KaGTNCw=";
   };
 
-  propagatedBuildInputs = [
+  patches = [
+    # https://github.com/django/daphne/pull/526
+    (fetchpatch2 {
+      name = "fix-tests-with-Twisted-24.7.0.patch";
+      url = "https://github.com/django/daphne/commit/0370c7a0937011d5345b14d484ec171d3ae9f875.patch";
+      hash = "sha256-/3d2pRcEtGvINGHRQF3RZ8IVIETSZb6rhf+ZHUFSQQo=";
+    })
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace-fail "pytest-runner" ""
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     asgiref
     autobahn
     twisted
@@ -39,23 +58,17 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "pytest-runner" ""
-  '';
-
   # Most tests fail on darwin
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
-  pythonImportsCheck = [
-    "daphne"
-  ];
+  pythonImportsCheck = [ "daphne" ];
 
   meta = with lib; {
     description = "Django ASGI (HTTP/WebSocket) server";
-    mainProgram = "daphne";
     homepage = "https://github.com/django/daphne";
+    changelog = "https://github.com/django/daphne/blob/${version}/CHANGELOG.txt";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
+    mainProgram = "daphne";
   };
 }
diff --git a/pkgs/development/python-modules/daqp/default.nix b/pkgs/development/python-modules/daqp/default.nix
index e5ae5e62be901..4497d546714df 100644
--- a/pkgs/development/python-modules/daqp/default.nix
+++ b/pkgs/development/python-modules/daqp/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, unittestCheckHook
-, cython_0
-, setuptools
-, wheel
-, numpy
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  unittestCheckHook,
+  cython_0,
+  setuptools,
+  wheel,
+  numpy,
 }:
 buildPythonPackage rec {
   pname = "daqp";
@@ -28,7 +29,13 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [ "-s" "test" "-p" "'*.py'" "-v" ];
+  unittestFlagsArray = [
+    "-s"
+    "test"
+    "-p"
+    "'*.py'"
+    "-v"
+  ];
 
   nativeBuildInputs = [
     cython_0
@@ -36,14 +43,12 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   pythonImportsCheck = [ "daqp" ];
 
   meta = with lib; {
-    description = "A dual active-set algorithm for convex quadratic programming";
+    description = "Dual active-set algorithm for convex quadratic programming";
     homepage = "https://github.com/darnstrom/daqp";
     license = licenses.mit;
     maintainers = with maintainers; [ renesat ];
diff --git a/pkgs/development/python-modules/darkdetect/default.nix b/pkgs/development/python-modules/darkdetect/default.nix
index 28e3c141a1eee..c51f22fb368d4 100644
--- a/pkgs/development/python-modules/darkdetect/default.nix
+++ b/pkgs/development/python-modules/darkdetect/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, stdenv
-
-, glib
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  stdenv,
+
+  glib,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,15 +23,11 @@ buildPythonPackage rec {
     hash = "sha256-OOINgrgjSLr3L07E9zf1+mlTPr+7ZlgN3CfkWE8+LoE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "darkdetect"
-  ];
+  pythonImportsCheck = [ "darkdetect" ];
 
-  postPatch = lib.optionalString (stdenv.isLinux) ''
+  postPatch = lib.optionalString (stdenv.hostPlatform.isLinux) ''
     substituteInPlace darkdetect/_linux_detect.py \
       --replace "'gsettings'" "'${glib.bin}/bin/gsettings'"
   '';
@@ -39,6 +36,6 @@ buildPythonPackage rec {
     description = "Detect OS Dark Mode from Python";
     homepage = "https://github.com/albertosottile/darkdetect";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dasbus/default.nix b/pkgs/development/python-modules/dasbus/default.nix
index dceb2e74ca86b..f95508612a714 100644
--- a/pkgs/development/python-modules/dasbus/default.nix
+++ b/pkgs/development/python-modules/dasbus/default.nix
@@ -1,20 +1,40 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pygobject3, dbus, hatchling, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pygobject3,
+  dbus,
+  hatchling,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "dasbus";
   version = "unstable-11-10-2022";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "rhinstaller";
-    repo = pname;
+    repo = "dasbus";
     rev = "64b6b4d9e37cd7e0cbf4a7bf75faa7cdbd01086d";
     hash = "sha256-TmhhDrfpP+nUErAd7dUb+RtGBRtWwn3bYOoIqa0VRoc=";
   };
 
-  nativeBuildInputs = [ hatchling ];
-  propagatedBuildInputs = [ pygobject3 ];
-  nativeCheckInputs = [ dbus pytestCheckHook ];
+  build-system = [ hatchling ];
+
+  dependencies = [ pygobject3 ];
+
+  nativeCheckInputs = [
+    dbus
+    pytestCheckHook
+  ];
+
+  disabledTestPaths = [
+    # https://github.com/dasbus-project/dasbus/issues/128
+    "tests/lib_dbus.py"
+    "tests/test_dbus.py"
+    "tests/test_unix.py"
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/rhinstaller/dasbus";
diff --git a/pkgs/development/python-modules/dash-bootstrap-components/default.nix b/pkgs/development/python-modules/dash-bootstrap-components/default.nix
new file mode 100644
index 0000000000000..ce39e11af1f59
--- /dev/null
+++ b/pkgs/development/python-modules/dash-bootstrap-components/default.nix
@@ -0,0 +1,39 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  dash,
+  setuptools,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "dash-bootstrap-components";
+  version = "1.6.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    inherit version;
+    pname = "dash_bootstrap_components";
+    hash = "sha256-lgoeyTl1dHkvSagkECT6POzeD1kwyXGj/IHwFsvrEJU=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ dash ];
+
+  # Tests a additional requirements
+  doCheck = false;
+
+  pythonImportsCheck = [ "dash_bootstrap_components" ];
+
+  meta = with lib; {
+    description = "Bootstrap components for Plotly Dash";
+    homepage = "https://github.com/facultyai/dash-bootstrap-components";
+    changelog = "https://github.com/facultyai/dash-bootstrap-components/releases/tag/${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/dash-core-components/default.nix b/pkgs/development/python-modules/dash-core-components/default.nix
index 109facaff4e5e..9d15db47e8bab 100644
--- a/pkgs/development/python-modules/dash-core-components/default.nix
+++ b/pkgs/development/python-modules/dash-core-components/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -18,7 +19,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A dash component starter pack";
+    description = "Dash component starter pack";
     homepage = "https://dash.plot.ly/dash-core-components";
     license = licenses.mit;
     maintainers = [ maintainers.antoinerg ];
diff --git a/pkgs/development/python-modules/dash-html-components/default.nix b/pkgs/development/python-modules/dash-html-components/default.nix
index 9d7f7d4a54ba6..968a6f5bd6151 100644
--- a/pkgs/development/python-modules/dash-html-components/default.nix
+++ b/pkgs/development/python-modules/dash-html-components/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/dash-renderer/default.nix b/pkgs/development/python-modules/dash-renderer/default.nix
index bc489ff8f96c1..46936194b4472 100644
--- a/pkgs/development/python-modules/dash-renderer/default.nix
+++ b/pkgs/development/python-modules/dash-renderer/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/dash-table/default.nix b/pkgs/development/python-modules/dash-table/default.nix
index b40602585ae5b..717ed9acd7d62 100644
--- a/pkgs/development/python-modules/dash-table/default.nix
+++ b/pkgs/development/python-modules/dash-table/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -18,7 +19,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A First-Class Interactive DataTable for Dash";
+    description = "First-Class Interactive DataTable for Dash";
     homepage = "https://dash.plot.ly/datatable";
     license = licenses.mit;
     maintainers = [ maintainers.antoinerg ];
diff --git a/pkgs/development/python-modules/dash/default.nix b/pkgs/development/python-modules/dash/default.nix
index 89601f3f482d5..d514c8b454e7b 100644
--- a/pkgs/development/python-modules/dash/default.nix
+++ b/pkgs/development/python-modules/dash/default.nix
@@ -1,58 +1,54 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-
-, setuptools
-, nodejs
-, yarn
-, fixup-yarn-lock
-, fetchYarnDeps
-
-, flask
-, werkzeug
-, plotly
-, dash-html-components
-, dash-core-components
-, dash-table
-, importlib-metadata
-, typing-extensions
-, requests
-, retrying
-, nest-asyncio
-
-, celery
-, redis
-, diskcache
-, multiprocess
-, psutil
-, flask-compress
-
-, pytestCheckHook
-, pytest-mock
-, mock
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  yarnConfigHook,
+  fetchYarnDeps,
+  nodejs,
+
+  setuptools,
+
+  flask,
+  werkzeug,
+  plotly,
+  dash-html-components,
+  dash-core-components,
+  dash-table,
+  importlib-metadata,
+  typing-extensions,
+  requests,
+  retrying,
+  nest-asyncio,
+
+  celery,
+  redis,
+  diskcache,
+  multiprocess,
+  psutil,
+  flask-compress,
+
+  pytestCheckHook,
+  pytest-mock,
+  mock,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
   pname = "dash";
-  version = "2.16.1";
+  version = "2.18.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
-
   src = fetchFromGitHub {
     owner = "plotly";
     repo = "dash";
     rev = "refs/tags/v${version}";
-    hash = "sha256-IPyGQXrC2FTTSIC4IFGwKTceyzPYAe4jwDoO5C9YeF0=";
+    hash = "sha256-2LwM1lrJNdekoDN+wDHgaSlGOnpK618r65UHj7cP59E=";
   };
 
   nativeBuildInputs = [
-    setuptools
+    yarnConfigHook
     nodejs
-    yarn
-    fixup-yarn-lock
   ];
 
   yarnOfflineCache = fetchYarnDeps {
@@ -60,25 +56,25 @@ buildPythonPackage rec {
     hash = "sha256-L/or8jO6uEypI5krwy/ElIxa6jJrXGsCRZ9mh+0kcGA=";
   };
 
-  preBuild = ''
+  # as of writing this yarnConfigHook has no parameter that changes in which directory it will be run
+  # until then we use preConfigure for entering the directory and preBuild for exiting it
+  preConfigure = ''
     pushd @plotly/dash-jupyterlab
 
-    export HOME=$(mktemp -d)
-
-    yarn config --offline set yarn-offline-mirror ${yarnOfflineCache}
-    fixup-yarn-lock yarn.lock
-
-    substituteInPlace package.json --replace jlpm yarn
-    yarn install --offline --frozen-lockfile --ignore-engines --ignore-scripts
-    patchShebangs node_modules
+    substituteInPlace package.json \
+        --replace-fail 'jlpm' 'yarn'
+  '';
 
-    # Generates the jupyterlab extension files
-    yarn run build:pack
+  preBuild = ''
+    # Generate the jupyterlab extension files
+    yarn --offline run build:pack
 
     popd
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     flask
     werkzeug
     plotly
@@ -92,7 +88,7 @@ buildPythonPackage rec {
     nest-asyncio
   ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     celery = [
       celery
       redis
@@ -102,9 +98,7 @@ buildPythonPackage rec {
       multiprocess
       psutil
     ];
-    compress = [
-      flask-compress
-    ];
+    compress = [ flask-compress ];
   };
 
   nativeCheckInputs = [
@@ -127,6 +121,9 @@ buildPythonPackage rec {
     description = "Python framework for building analytical web applications";
     homepage = "https://dash.plot.ly/";
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ antoinerg tomasajt ];
+    maintainers = with lib.maintainers; [
+      antoinerg
+      tomasajt
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/dashing/default.nix b/pkgs/development/python-modules/dashing/default.nix
index 9caa56a87649a..7382adf521b59 100644
--- a/pkgs/development/python-modules/dashing/default.nix
+++ b/pkgs/development/python-modules/dashing/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, blessed
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  blessed,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-JRRgjg8pp3Xb0bERFWEhnOg9U8+kuqL+QQH6uE/Vbxs=";
   };
 
-  propagatedBuildInputs = [
-    blessed
-  ];
+  propagatedBuildInputs = [ blessed ];
 
   meta = with lib; {
     homepage = "https://github.com/FedericoCeratto/dashing";
diff --git a/pkgs/development/python-modules/dask-awkward/default.nix b/pkgs/development/python-modules/dask-awkward/default.nix
index e24b06a23b68c..8f14ceb76e1f9 100644
--- a/pkgs/development/python-modules/dask-awkward/default.nix
+++ b/pkgs/development/python-modules/dask-awkward/default.nix
@@ -1,58 +1,56 @@
-{ lib
-, awkward
-, buildPythonPackage
-, cachetools
-, dask
-, dask-histogram
-, distributed
-, fetchFromGitHub
-, hatch-vcs
-, hatchling
-, hist
-, pandas
-, pyarrow
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, typing-extensions
-, uproot
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  hatch-vcs,
+  hatchling,
+
+  # dependencies
+  awkward,
+  cachetools,
+  dask,
+  typing-extensions,
+
+  # optional-dependencies
+  pyarrow,
+
+  # checks
+  dask-histogram,
+  distributed,
+  hist,
+  pandas,
+  pytestCheckHook,
+  uproot,
 }:
 
 buildPythonPackage rec {
   pname = "dask-awkward";
-  version = "2024.3.0";
+  version = "2024.9.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
-
   src = fetchFromGitHub {
     owner = "dask-contrib";
     repo = "dask-awkward";
     rev = "refs/tags/${version}";
-    hash = "sha256-Lkbp/XrDHOekMpT71pbxtuozgzU9iiGF2GJZ+tuV/yM=";
+    hash = "sha256-4CwixPj0bJHVjnwZ7fPkRdiDHs8/IzvNlwSPynXvcAo=";
   };
 
-  pythonRelaxDeps = [
-    "awkward"
-  ];
-
-  nativeBuildInputs = [
+  build-system = [
     hatch-vcs
     hatchling
-    pythonRelaxDepsHook
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     awkward
     cachetools
     dask
     typing-extensions
   ];
 
-  passthru.optional-dependencies = {
-    io = [
-      pyarrow
-    ];
+  optional-dependencies = {
+    io = [ pyarrow ];
   };
 
   checkInputs = [
@@ -62,11 +60,9 @@ buildPythonPackage rec {
     pandas
     pytestCheckHook
     uproot
-  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+  ] ++ lib.flatten (builtins.attrValues optional-dependencies);
 
-  pythonImportsCheck = [
-    "dask_awkward"
-  ];
+  pythonImportsCheck = [ "dask_awkward" ];
 
   disabledTests = [
     # Tests require network access
@@ -77,11 +73,13 @@ buildPythonPackage rec {
     "test_basic_root_works"
   ];
 
-  meta = with lib; {
+  __darwinAllowLocalNetworking = true;
+
+  meta = {
     description = "Native Dask collection for awkward arrays, and the library to use it";
     homepage = "https://github.com/dask-contrib/dask-awkward";
     changelog = "https://github.com/dask-contrib/dask-awkward/releases/tag/${version}";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ veprbl ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ veprbl ];
   };
 }
diff --git a/pkgs/development/python-modules/dask-expr/default.nix b/pkgs/development/python-modules/dask-expr/default.nix
index 68dca5fe42fe0..b7130a40ceb9b 100644
--- a/pkgs/development/python-modules/dask-expr/default.nix
+++ b/pkgs/development/python-modules/dask-expr/default.nix
@@ -1,30 +1,33 @@
 {
   lib,
   buildPythonPackage,
-  pythonOlder,
   fetchFromGitHub,
+
+  # build-system
   setuptools,
   versioneer,
-  wheel,
+
+  # dependencies
   dask,
   pandas,
   pyarrow,
+
+  # checks
   distributed,
   pytestCheckHook,
+  xarray
 }:
 
 buildPythonPackage rec {
   pname = "dask-expr";
-  version = "1.0.12";
+  version = "1.1.14";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
-
   src = fetchFromGitHub {
     owner = "dask";
     repo = "dask-expr";
     rev = "refs/tags/v${version}";
-    hash = "sha256-B/BkLOZhvUyjinaFKp0ecUfzvLb5S90q+YHmJwS6WSQ=";
+    hash = "sha256-yDNkIATN6AuGzcxTwAQyaQaDQ48v45hTC2fUqEThl/g=";
   };
 
   postPatch = ''
@@ -32,13 +35,12 @@ buildPythonPackage rec {
       --replace-fail "versioneer[toml]==0.28" "versioneer[toml]"
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     versioneer
-    wheel
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dask
     pandas
     pyarrow
@@ -49,12 +51,15 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     distributed
     pytestCheckHook
+    xarray
   ];
 
-  meta = with lib; {
-    description = "";
+  __darwinAllowLocalNetworking = true;
+
+  meta = {
+    description = "Rewrite of Dask DataFrame that includes query optimization and generally improved organization";
     homepage = "https://github.com/dask/dask-expr";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/dask-gateway-server/default.nix b/pkgs/development/python-modules/dask-gateway-server/default.nix
index 98e955894f2ca..8935e536996af 100644
--- a/pkgs/development/python-modules/dask-gateway-server/default.nix
+++ b/pkgs/development/python-modules/dask-gateway-server/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, colorlog
-, cryptography
-, fetchFromGitHub
-, go
-, pykerberos
-, pythonOlder
-, skein
-, sqlalchemy
-, traitlets
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  colorlog,
+  cryptography,
+  fetchFromGitHub,
+  go,
+  pykerberos,
+  pythonOlder,
+  skein,
+  sqlalchemy,
+  traitlets,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
 
   sourceRoot = "${src.name}/${pname}";
 
-  nativeBuildInputs = [
-    go
-  ];
+  nativeBuildInputs = [ go ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -40,15 +39,9 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    kerberos = [
-      pykerberos
-    ];
-    jobqueue = [
-      sqlalchemy
-    ];
-    local = [
-      sqlalchemy
-    ];
+    kerberos = [ pykerberos ];
+    jobqueue = [ sqlalchemy ];
+    local = [ sqlalchemy ];
     yarn = [
       skein
       sqlalchemy
@@ -62,14 +55,12 @@ buildPythonPackage rec {
   # Tests requires cluster for testing
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dask_gateway_server"
-  ];
+  pythonImportsCheck = [ "dask_gateway_server" ];
 
   meta = with lib; {
-    description = "A multi-tenant server for securely deploying and managing multiple Dask clusters";
+    description = "Multi-tenant server for securely deploying and managing multiple Dask clusters";
     homepage = "https://gateway.dask.org/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dask-gateway/default.nix b/pkgs/development/python-modules/dask-gateway/default.nix
index 270999b55070f..b3f63835c3a4f 100644
--- a/pkgs/development/python-modules/dask-gateway/default.nix
+++ b/pkgs/development/python-modules/dask-gateway/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, aiohttp
-, dask
-, distributed
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  aiohttp,
+  dask,
+  distributed,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,9 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "dask_gateway" ];
 
   meta = with lib; {
-    description = "A client library for interacting with a dask-gateway server";
+    description = "Client library for interacting with a dask-gateway server";
     homepage = "https://gateway.dask.org/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dask-glm/default.nix b/pkgs/development/python-modules/dask-glm/default.nix
index dd5cfe0d29811..a4bead52b43ba 100644
--- a/pkgs/development/python-modules/dask-glm/default.nix
+++ b/pkgs/development/python-modules/dask-glm/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, cloudpickle
-, dask
-, distributed
-, fetchPypi
-, multipledispatch
-, pytestCheckHook
-, pythonOlder
-, scikit-learn
-, scipy
-, setuptools-scm
-, sparse
+{
+  lib,
+  buildPythonPackage,
+  cloudpickle,
+  dask,
+  distributed,
+  fetchPypi,
+  multipledispatch,
+  pytestCheckHook,
+  pythonOlder,
+  scikit-learn,
+  scipy,
+  setuptools-scm,
+  sparse,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-yUelZoZmmKAdeZeK5zIzy16DitXq1ghRQ1gsXpMLmko=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     cloudpickle
@@ -43,9 +42,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "dask_glm"
-  ];
+  pythonImportsCheck = [ "dask_glm" ];
 
   disabledTestPaths = [
     # Circular dependency with dask-ml
@@ -59,10 +56,12 @@ buildPythonPackage rec {
     "test_determinism_distributed"
   ];
 
+  __darwinAllowLocalNetworking = true;
+
   meta = with lib; {
     description = "Generalized Linear Models with Dask";
     homepage = "https://github.com/dask/dask-glm/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dask-histogram/default.nix b/pkgs/development/python-modules/dask-histogram/default.nix
index a1a7c64197173..032f978cdef95 100644
--- a/pkgs/development/python-modules/dask-histogram/default.nix
+++ b/pkgs/development/python-modules/dask-histogram/default.nix
@@ -1,48 +1,51 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, boost-histogram
-, dask
-, hatchling
-, hatch-vcs
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  hatchling,
+  hatch-vcs,
+
+  # dependencies
+  boost-histogram,
+  dask,
+
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "dask-histogram";
-  version = "2024.3.0";
+  version = "2024.9.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "dask-contrib";
     repo = "dask-histogram";
     rev = "refs/tags/${version}";
-    hash = "sha256-RqZMAEGFqEXNmNv7SWCyQw9cI+I+Oa6s8O/7Jp+9id8=";
+    hash = "sha256-k+hD5y9K6Jsm++H+IAWJ/Z3wlCN4fV8RIcyAnvOvem0=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatchling
     hatch-vcs
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     boost-histogram
     dask
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dask_histogram"
-  ];
+  pythonImportsCheck = [ "dask_histogram" ];
 
-  meta = with lib; {
+  meta = {
     description = "Histograms with task scheduling";
     homepage = "https://dask-histogram.readthedocs.io/";
     changelog = "https://github.com/dask-contrib/dask-histogram/releases/tag/${version}";
-    license = with licenses; [ bsd3 ];
-    maintainers = with maintainers; [ veprbl ];
+    license = with lib.licenses; [ bsd3 ];
+    maintainers = with lib.maintainers; [ veprbl ];
   };
 }
diff --git a/pkgs/development/python-modules/dask-image/default.nix b/pkgs/development/python-modules/dask-image/default.nix
index 92c0e9074603f..2a181fa66c156 100644
--- a/pkgs/development/python-modules/dask-image/default.nix
+++ b/pkgs/development/python-modules/dask-image/default.nix
@@ -1,32 +1,43 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, dask
-, fetchPypi
-, numpy
-, pims
-, pytestCheckHook
-, pythonOlder
-, scikit-image
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  dask,
+  numpy,
+  scipy,
+  pandas,
+  pims,
+  pytestCheckHook,
+  scikit-image,
 }:
 
 buildPythonPackage rec {
   pname = "dask-image";
-  version = "2023.8.1";
-  format = "setuptools";
+  version = "2024.5.3";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-XpqJhbBSehtZQsan50Tg5X0mTiIscFjwW664HDdNBLY=";
+  src = fetchFromGitHub {
+    owner = "dask";
+    repo = "dask-image";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-kXCAqJ2Zgo/2Khvo2YcK+n4oGM219GyQ2Hsq9re1Lac=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
     dask
     numpy
     scipy
+    pandas
     pims
   ];
 
@@ -35,19 +46,12 @@ buildPythonPackage rec {
     scikit-image
   ];
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "--flake8" ""
-  '';
-
-  pythonImportsCheck = [
-    "dask_image"
-  ];
+  pythonImportsCheck = [ "dask_image" ];
 
-  meta = with lib; {
+  meta = {
     description = "Distributed image processing";
     homepage = "https://github.com/dask/dask-image";
-    license = licenses.bsdOriginal;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.bsdOriginal;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/dask-jobqueue/default.nix b/pkgs/development/python-modules/dask-jobqueue/default.nix
index dc668ea2639ab..8c43fc9f260f8 100644
--- a/pkgs/development/python-modules/dask-jobqueue/default.nix
+++ b/pkgs/development/python-modules/dask-jobqueue/default.nix
@@ -1,32 +1,39 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, cryptography
-, dask
-, distributed
-, docrep
-, fetchPypi
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  dask,
+  distributed,
+
+  # checks
+  cryptography,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "dask-jobqueue";
-  version = "0.8.5";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.8";
+  version = "0.9.0";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-9pI/nX/4lLlu+/cGEYss03/Td1HVZ+kcIt/T4uqpMgI=";
+  src = fetchFromGitHub {
+    owner = "dask";
+    repo = "dask-jobqueue";
+    rev = "refs/tags/${version}";
+    hash = "sha256-YujfhjOJzl4xsjjsyrQkEu/CBR04RwJ79c1iSTcMIgw=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     dask
     distributed
-    docrep
   ];
 
   nativeCheckInputs = [
@@ -35,53 +42,63 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTests = [
-    # Tests have additional requirements (e.g., sge, etc.)
-    "test_adapt_parameters"
-    "test_adapt"
-    "test_adaptive_cores_mem"
-    "test_adaptive_grouped"
-    "test_adaptive"
-    "test_basic"
-    "test_basic_scale_edge_cases"
-    "test_cluster_error_scheduler_arguments_should_use_scheduler_options"
-    "test_cluster_has_cores_and_memory"
-    "test_cluster"
-    "test_command_template"
-    "test_complex_cancel_command"
-    "test_config"
-    "test_dashboard_link"
-    "test_default_number_of_worker_processes"
-    "test_deprecation_env_extra"
-    "test_deprecation_extra"
-    "test_deprecation_job_extra"
-    "test_different_interfaces_on_scheduler_and_workers"
-    "test_docstring_cluster"
-    "test_extra_args_broken_cancel"
-    "test_forward_ip"
-    "test_import_scheduler_options_from_config"
-    "test_job"
-    "test_log_directory"
-    "test_scale_cores_memory"
-    "test_scale_grouped"
-    "test_scheduler_options_interface"
-    "test_scheduler_options"
-    "test_security"
-    "test_shebang_settings"
-    "test_use_stdin"
-    "test_worker_name_uses_cluster_name"
-    "test_wrong_parameter_error"
-  ];
+  disabledTests =
+    [
+      # Require some unavailable pytest fixtures
+      "test_adapt"
+      "test_adaptive"
+      "test_adaptive_cores_mem"
+      "test_adaptive_grouped"
+      "test_adapt_parameters"
+      "test_basic"
+      "test_basic_scale_edge_cases"
+      "test_cluster"
+      "test_cluster_error_scheduler_arguments_should_use_scheduler_options"
+      "test_cluster_has_cores_and_memory"
+      "test_command_template"
+      "test_complex_cancel_command"
+      "test_config"
+      "test_dashboard_link"
+      "test_default_number_of_worker_processes"
+      "test_deprecation_env_extra"
+      "test_deprecation_extra"
+      "test_deprecation_job_extra"
+      "test_different_interfaces_on_scheduler_and_workers"
+      "test_docstring_cluster"
+      "test_extra_args_broken_cancel"
+      "test_forward_ip"
+      "test_import_scheduler_options_from_config"
+      "test_job"
+      "test_jobqueue_job_call"
+      "test_log_directory"
+      "test_scale_cores_memory"
+      "test_scale_grouped"
+      "test_scheduler_options"
+      "test_scheduler_options_interface"
+      "test_security"
+      "test_security_temporary"
+      "test_security_temporary_defaults"
+      "test_shebang_settings"
+      "test_use_stdin"
+      "test_worker_name_uses_cluster_name"
+      "test_wrong_parameter_error"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # ValueError: invalid operation on non-started TCPListener
+      "test_header"
+      "test_lsf_unit_detection"
+      "test_lsf_unit_detection_without_file"
+      "test_runner"
+    ];
 
-  pythonImportsCheck = [
-    "dask_jobqueue"
-  ];
+  pythonImportsCheck = [ "dask_jobqueue" ];
+
+  __darwinAllowLocalNetworking = true;
 
-  meta = with lib; {
-    broken = stdenv.isDarwin;
+  meta = {
     description = "Deploy Dask on job schedulers like PBS, SLURM, and SGE";
     homepage = "https://github.com/dask/dask-jobqueue";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/dask-ml/default.nix b/pkgs/development/python-modules/dask-ml/default.nix
index 3cb7ed9618b15..6b96c3d2199a1 100644
--- a/pkgs/development/python-modules/dask-ml/default.nix
+++ b/pkgs/development/python-modules/dask-ml/default.nix
@@ -1,37 +1,48 @@
-{ lib
-, buildPythonPackage
-, dask
-, dask-glm
-, distributed
-, fetchPypi
-, multipledispatch
-, numba
-, numpy
-, packaging
-, pandas
-, pythonOlder
-, scikit-learn
-, scipy
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  hatch-vcs,
+  hatchling,
+  setuptools-scm,
+  dask,
+  dask-expr,
+  dask-glm,
+  distributed,
+  multipledispatch,
+  numba,
+  numpy,
+  packaging,
+  pandas,
+  scikit-learn,
+  scipy,
+  pytest-mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "dask-ml";
-  version = "2023.3.24";
-  format = "setuptools";
+  version = "2024.4.4";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-lsCQ220yg2U24/Ccpk3rWZ6GRYeqjj1NLGtK9YhzMwc=";
+  src = fetchFromGitHub {
+    owner = "dask";
+    repo = "dask-ml";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-ZiBpCk3b4Tk0Hwb4uapJLEx+Nb/qHFROCnkBTNGDzoU=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
+    hatch-vcs
+    hatchling
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    dask-expr
     dask-glm
     distributed
     multipledispatch
@@ -41,11 +52,7 @@ buildPythonPackage rec {
     pandas
     scikit-learn
     scipy
-  ] ++ dask.optional-dependencies.array
-    ++ dask.optional-dependencies.dataframe;
-
-  # has non-standard build from source, and pypi doesn't include tests
-  doCheck = false;
+  ] ++ dask.optional-dependencies.array ++ dask.optional-dependencies.dataframe;
 
   pythonImportsCheck = [
     "dask_ml"
@@ -54,10 +61,28 @@ buildPythonPackage rec {
     "dask_ml.utils"
   ];
 
-  meta = with lib; {
+  nativeCheckInputs = [
+    pytest-mock
+    pytestCheckHook
+  ];
+
+  disabledTestPaths = [
+    # AttributeError: 'csr_matrix' object has no attribute 'A'
+    # Fixed in https://github.com/dask/dask-ml/pull/996
+    "tests/test_svd.py"
+  ];
+
+  disabledTests = [
+    # Flaky: `Arrays are not almost equal to 3 decimals` (although values do actually match)
+    "test_whitening"
+  ];
+
+  __darwinAllowLocalNetworking = true;
+
+  meta = {
     description = "Scalable Machine Learn with Dask";
     homepage = "https://github.com/dask/dask-ml";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/dask-mpi/default.nix b/pkgs/development/python-modules/dask-mpi/default.nix
index ea9ff170908c9..f51dccdc0377d 100644
--- a/pkgs/development/python-modules/dask-mpi/default.nix
+++ b/pkgs/development/python-modules/dask-mpi/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, dask
-, distributed
-, mpi4py
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  dask,
+  distributed,
+  mpi4py,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -38,15 +39,13 @@ buildPythonPackage rec {
   # Hardcoded mpirun path in tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dask_mpi"
-  ];
+  pythonImportsCheck = [ "dask_mpi" ];
 
   meta = with lib; {
     description = "Deploy Dask using mpi4py";
     mainProgram = "dask-mpi";
     homepage = "https://github.com/dask/dask-mpi";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dask-yarn/default.nix b/pkgs/development/python-modules/dask-yarn/default.nix
index acea511b24952..a7ba751c3b869 100644
--- a/pkgs/development/python-modules/dask-yarn/default.nix
+++ b/pkgs/development/python-modules/dask-yarn/default.nix
@@ -1,20 +1,22 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, dask
-, distributed
-, fetchFromGitHub
-, fetchpatch
-, grpcio
-, pytestCheckHook
-, pythonOlder
-, skein
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  fetchpatch,
+  setuptools,
+  versioneer,
+  dask,
+  distributed,
+  grpcio,
+  skein,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "dask-yarn";
   version = "0.9";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -26,31 +28,37 @@ buildPythonPackage rec {
   };
 
   patches = [
-    (fetchpatch {  # https://github.com/dask/dask-yarn/pull/150
+    (fetchpatch {
+      # https://github.com/dask/dask-yarn/pull/150
       name = "address-deprecations-introduced-in-distributed-2021-07-0";
       url = "https://github.com/dask/dask-yarn/pull/150/commits/459848afcdc22568905ee98622c74e4071496423.patch";
       hash = "sha256-LS46QBdiAmsp4jQq4DdYdmmk1qzx5JZNTQUlRcRwY5k=";
     })
   ];
 
-  propagatedBuildInputs = [
-    distributed
+  postPatch = ''
+    rm versioneer.py
+  '';
+
+  build-system = [
+    setuptools
+    versioneer
+  ];
+
+  dependencies = [
     dask
+    distributed
     grpcio
     skein
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export HOME=$TMPDIR
   '';
 
-  pythonImportsCheck = [
-    "dask_yarn"
-  ];
+  pythonImportsCheck = [ "dask_yarn" ];
 
   disabledTests = [
     # skein.exceptions.DriverError: Failed to start java process
@@ -66,14 +74,14 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Deploy dask on YARN clusters";
     mainProgram = "dask-yarn";
-    longDescription = ''Dask-Yarn deploys Dask on YARN clusters,
-      such as are found in traditional Hadoop installations.
-      Dask-Yarn provides an easy interface to quickly start,
-      stop, and scale Dask clusters natively from Python.
+    longDescription = ''
+      Dask-Yarn deploys Dask on YARN clusters,
+            such as are found in traditional Hadoop installations.
+            Dask-Yarn provides an easy interface to quickly start,
+            stop, and scale Dask clusters natively from Python.
     '';
     homepage = "https://yarn.dask.org/";
     license = licenses.bsd3;
     maintainers = with maintainers; [ illustris ];
-    broken = stdenv.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/dask/default.nix b/pkgs/development/python-modules/dask/default.nix
index 0327aebaaf846..d26caf858cd08 100644
--- a/pkgs/development/python-modules/dask/default.nix
+++ b/pkgs/development/python-modules/dask/default.nix
@@ -1,195 +1,189 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-
-# build-system
-, setuptools
-, wheel
-
-# dependencies
-, click
-, cloudpickle
-, fsspec
-, importlib-metadata
-, packaging
-, partd
-, pyyaml
-, toolz
-
-# optional-dependencies
-, numpy
-, pyarrow
-, lz4
-, pandas
-, distributed
-, bokeh
-, jinja2
-
-# tests
-, arrow-cpp
-, dask-expr
-, hypothesis
-, pytest-asyncio
-, pytest-rerunfailures
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  click,
+  cloudpickle,
+  fsspec,
+  importlib-metadata,
+  packaging,
+  partd,
+  pyyaml,
+  toolz,
+
+  # optional-dependencies
+  numpy,
+  pyarrow,
+  lz4,
+  pandas,
+  distributed,
+  bokeh,
+  jinja2,
+
+  # tests
+  arrow-cpp,
+  dask-expr,
+  hypothesis,
+  pytest-asyncio,
+  pytest-rerunfailures,
+  pytest-xdist,
+  pytestCheckHook,
 }:
 
-let self = buildPythonPackage rec {
-  pname = "dask";
-  version = "2024.4.2";
-  pyproject = true;
-
-  disabled = pythonOlder "3.9";
+let
+  self = buildPythonPackage rec {
+    pname = "dask";
+    version = "2024.9.0";
+    pyproject = true;
+
+    src = fetchFromGitHub {
+      owner = "dask";
+      repo = "dask";
+      rev = "refs/tags/${version}";
+      hash = "sha256-CaTxhYT2diFOBylLH36iIR1ooWzi2e/RNOnvc11DtDY=";
+    };
+
+    build-system = [ setuptools ];
+
+    dependencies = [
+      click
+      cloudpickle
+      fsspec
+      packaging
+      partd
+      pyyaml
+      importlib-metadata
+      toolz
+    ];
 
-  src = fetchFromGitHub {
-    owner = "dask";
-    repo = "dask";
-    rev = "refs/tags/${version}";
-    hash = "sha256-iD+diwctXaQlOpL0fjOiFoWVONtlMq7AonbC0vCmXc0=";
-  };
+    optional-dependencies = lib.fix (self: {
+      array = [ numpy ];
+      complete = [
+        pyarrow
+        lz4
+      ] ++ self.array ++ self.dataframe ++ self.distributed ++ self.diagnostics;
+      dataframe = [
+        # dask-expr -> circular dependency with dask-expr
+        numpy
+        pandas
+      ];
+      distributed = [ distributed ];
+      diagnostics = [
+        bokeh
+        jinja2
+      ];
+    });
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
-  ];
-
-  propagatedBuildInputs = [
-    click
-    cloudpickle
-    fsspec
-    packaging
-    partd
-    pyyaml
-    importlib-metadata
-    toolz
-  ];
-
-  passthru.optional-dependencies = lib.fix (self: {
-    array = [
-      numpy
-    ];
-    complete = [
-      pyarrow
-      lz4
-    ]
-    ++ self.array
-    ++ self.dataframe
-    ++ self.distributed
-    ++ self.diagnostics;
-    dataframe = [
-      # dask-expr -> circular dependency with dask-expr
-      numpy
-      pandas
+    nativeCheckInputs =
+      [
+        dask-expr
+        pytestCheckHook
+        pytest-rerunfailures
+        pytest-xdist
+        # from panda[test]
+        hypothesis
+        pytest-asyncio
+      ]
+      ++ self.optional-dependencies.array
+      ++ self.optional-dependencies.dataframe
+      ++ lib.optionals (!arrow-cpp.meta.broken) [
+        # support is sparse on aarch64
+        pyarrow
+      ];
+
+    dontUseSetuptoolsCheck = true;
+
+    postPatch = ''
+      # versioneer hack to set version of GitHub package
+      echo "def get_versions(): return {'dirty': False, 'error': None, 'full-revisionid': None, 'version': '${version}'}" > dask/_version.py
+
+      substituteInPlace setup.py \
+        --replace-fail "import versioneer" "" \
+        --replace-fail "version=versioneer.get_version()," "version='${version}'," \
+        --replace-fail "cmdclass=versioneer.get_cmdclass()," ""
+
+      substituteInPlace pyproject.toml \
+        --replace-fail ', "versioneer[toml]==0.29"' "" \
+        --replace-fail " --durations=10" "" \
+        --replace-fail " --cov-config=pyproject.toml" "" \
+        --replace-fail "\"-v" "\" "
+    '';
+
+    pytestFlagsArray = [
+      # Rerun failed tests up to three times
+      "--reruns 3"
+      # Don't run tests that require network access
+      "-m 'not network'"
     ];
-    distributed = [
-      distributed
-    ];
-    diagnostics = [
-      bokeh
-      jinja2
-    ];
-  });
-
-  nativeCheckInputs = [
-    dask-expr
-    pytestCheckHook
-    pytest-rerunfailures
-    pytest-xdist
-    # from panda[test]
-    hypothesis
-    pytest-asyncio
-  ]
-  ++ passthru.optional-dependencies.array
-  ++ passthru.optional-dependencies.dataframe
-  ++ lib.optionals (!arrow-cpp.meta.broken) [ # support is sparse on aarch64
-    pyarrow
-  ];
-
-  dontUseSetuptoolsCheck = true;
-
-  postPatch = ''
-    # versioneer hack to set version of GitHub package
-    echo "def get_versions(): return {'dirty': False, 'error': None, 'full-revisionid': None, 'version': '${version}'}" > dask/_version.py
-
-    substituteInPlace setup.py \
-      --replace "import versioneer" "" \
-      --replace "version=versioneer.get_version()," "version='${version}'," \
-      --replace "cmdclass=versioneer.get_cmdclass()," ""
-
-    substituteInPlace pyproject.toml \
-      --replace ', "versioneer[toml]==0.29"' "" \
-      --replace " --durations=10" "" \
-      --replace " --cov-config=pyproject.toml" "" \
-      --replace "\"-v" "\" "
-  '';
-
-  pytestFlagsArray = [
-    # Rerun failed tests up to three times
-    "--reruns 3"
-    # Don't run tests that require network access
-    "-m 'not network'"
-  ];
-
-  disabledTests = lib.optionals stdenv.isDarwin [
-    # Test requires features of python3Packages.psutil that are
-    # blocked in sandboxed-builds
-    "test_auto_blocksize_csv"
-    # AttributeError: 'str' object has no attribute 'decode'
-    "test_read_dir_nometa"
-  ] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
-    # concurrent.futures.process.BrokenProcessPool: A process in the process pool terminated abpruptly...
-    "test_foldby_tree_reduction"
-    "test_to_bag"
-  ] ++ [
-    # https://github.com/dask/dask/issues/10347#issuecomment-1589683941
-    "test_concat_categorical"
-    # AttributeError: 'ArrowStringArray' object has no attribute 'tobytes'. Did you mean: 'nbytes'?
-    "test_dot"
-    "test_dot_nan"
-    "test_merge_column_with_nulls"
-    # FileNotFoundError: [Errno 2] No such file or directory: '/build/tmp301jryv_/createme/0.part'
-    "test_to_csv_nodir"
-    "test_to_json_results"
-    # FutureWarning: Those tests should be working fine when pandas will have been upgraded to 2.1.1
-    "test_apply"
-    "test_apply_infer_columns"
-  ];
-
-  __darwinAllowLocalNetworking = true;
-
-  pythonImportsCheck = [
-    "dask"
-    "dask.bag"
-    "dask.bytes"
-    "dask.diagnostics"
-  ];
-
-  doCheck = false;
-
-  # Enable tests via passthru to avoid cyclic dependency with dask-expr.
-  passthru.tests = {
-    check = self.overridePythonAttrs (old: {
-      doCheck = true;
-      pythonImportsCheck = [
-        # Requires the `dask.optional-dependencies.array` that are only in `nativeCheckInputs`
-        "dask.array"
-        # Requires the `dask.optional-dependencies.dataframe` that are only in `nativeCheckInputs`
-        "dask.dataframe"
-        "dask.dataframe.io"
-        "dask.dataframe.tseries"
-      ] ++ old.pythonImportsCheck;
-    });
-  };
 
+    disabledTests =
+      lib.optionals stdenv.hostPlatform.isDarwin [
+        # Test requires features of python3Packages.psutil that are
+        # blocked in sandboxed-builds
+        "test_auto_blocksize_csv"
+        # AttributeError: 'str' object has no attribute 'decode'
+        "test_read_dir_nometa"
+      ]
+      ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
+        # concurrent.futures.process.BrokenProcessPool: A process in the process pool terminated abpruptly...
+        "test_foldby_tree_reduction"
+        "test_to_bag"
+      ]
+      ++ [
+        # https://github.com/dask/dask/issues/10347#issuecomment-1589683941
+        "test_concat_categorical"
+        # AttributeError: 'ArrowStringArray' object has no attribute 'tobytes'. Did you mean: 'nbytes'?
+        "test_dot"
+        "test_dot_nan"
+        "test_merge_column_with_nulls"
+        # FileNotFoundError: [Errno 2] No such file or directory: '/build/tmp301jryv_/createme/0.part'
+        "test_to_csv_nodir"
+        "test_to_json_results"
+        # FutureWarning: Those tests should be working fine when pandas will have been upgraded to 2.1.1
+        "test_apply"
+        "test_apply_infer_columns"
+      ];
+
+    __darwinAllowLocalNetworking = true;
+
+    pythonImportsCheck = [
+      "dask"
+      "dask.bag"
+      "dask.bytes"
+      "dask.diagnostics"
+    ];
 
-  meta = with lib; {
-    description = "Minimal task scheduling abstraction";
-    mainProgram = "dask";
-    homepage = "https://dask.org/";
-    changelog = "https://docs.dask.org/en/latest/changelog.html";
-    license = licenses.bsd3;
+    doCheck = false;
+
+    # Enable tests via passthru to avoid cyclic dependency with dask-expr.
+    passthru.tests = {
+      check = self.overridePythonAttrs (old: {
+        doCheck = true;
+        pythonImportsCheck = [
+          # Requires the `dask.optional-dependencies.array` that are only in `nativeCheckInputs`
+          "dask.array"
+          # Requires the `dask.optional-dependencies.dataframe` that are only in `nativeCheckInputs`
+          "dask.dataframe"
+          "dask.dataframe.io"
+          "dask.dataframe.tseries"
+        ] ++ old.pythonImportsCheck;
+      });
+    };
+
+    meta = {
+      description = "Minimal task scheduling abstraction";
+      mainProgram = "dask";
+      homepage = "https://dask.org/";
+      changelog = "https://docs.dask.org/en/latest/changelog.html";
+      license = lib.licenses.bsd3;
+      maintainers = with lib.maintainers; [ GaetanLepage ];
+    };
   };
-}; in self
+in
+self
diff --git a/pkgs/development/python-modules/databases/default.nix b/pkgs/development/python-modules/databases/default.nix
index 7cd05be5b8e14..33fd15cded4b1 100644
--- a/pkgs/development/python-modules/databases/default.nix
+++ b/pkgs/development/python-modules/databases/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiomysql
-, aiopg
-, aiosqlite
-, asyncmy
-, asyncpg
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, sqlalchemy
+{
+  lib,
+  aiomysql,
+  aiopg,
+  aiosqlite,
+  asyncmy,
+  asyncpg,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  sqlalchemy,
 }:
 
 buildPythonPackage rec {
@@ -26,44 +27,22 @@ buildPythonPackage rec {
     hash = "sha256-Zf9QqBgDhWAnHdNvzjXtri5rdT00BOjc4YTNzJALldM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    sqlalchemy
-  ];
+  propagatedBuildInputs = [ sqlalchemy ];
 
   passthru.optional-dependencies = {
-    postgresql = [
-      asyncpg
-    ];
-    asyncpg = [
-      asyncpg
-    ];
-    aiopg = [
-      aiopg
-    ];
-    mysql = [
-      aiomysql
-    ];
-    aiomysql = [
-      aiomysql
-    ];
-    asyncmy = [
-      asyncmy
-    ];
-    sqlite = [
-      aiosqlite
-    ];
-    aiosqlite = [
-      aiosqlite
-    ];
+    postgresql = [ asyncpg ];
+    asyncpg = [ asyncpg ];
+    aiopg = [ aiopg ];
+    mysql = [ aiomysql ];
+    aiomysql = [ aiomysql ];
+    asyncmy = [ asyncmy ];
+    sqlite = [ aiosqlite ];
+    aiosqlite = [ aiosqlite ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # circular dependency on starlette
@@ -73,15 +52,13 @@ buildPythonPackage rec {
     "tests/test_connection_options.py"
   ];
 
-  pythonImportsCheck = [
-    "databases"
-  ];
+  pythonImportsCheck = [ "databases" ];
 
   meta = with lib; {
     description = "Async database support for Python";
     homepage = "https://github.com/encode/databases";
     changelog = "https://github.com/encode/databases/releases/tag/${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/databricks-cli/default.nix b/pkgs/development/python-modules/databricks-cli/default.nix
index 92d6adf55a11e..4aeaec10aa049 100644
--- a/pkgs/development/python-modules/databricks-cli/default.nix
+++ b/pkgs/development/python-modules/databricks-cli/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, click
-, configparser
-, decorator
-, fetchFromGitHub
-, mock
-, oauthlib
-, pyjwt
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
-, six
-, tabulate
+{
+  lib,
+  buildPythonPackage,
+  click,
+  configparser,
+  decorator,
+  fetchFromGitHub,
+  mock,
+  oauthlib,
+  pyjwt,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
+  six,
+  tabulate,
 }:
 
 buildPythonPackage rec {
@@ -52,9 +53,7 @@ buildPythonPackage rec {
     "integration/workspace/test_integration.py"
   ];
 
-  pythonImportsCheck = [
-    "databricks_cli"
-  ];
+  pythonImportsCheck = [ "databricks_cli" ];
 
   meta = with lib; {
     description = "Command line interface for Databricks";
diff --git a/pkgs/development/python-modules/databricks-connect/default.nix b/pkgs/development/python-modules/databricks-connect/default.nix
index 2e3132fb5b50f..7f06b59df3e20 100644
--- a/pkgs/development/python-modules/databricks-connect/default.nix
+++ b/pkgs/development/python-modules/databricks-connect/default.nix
@@ -1,42 +1,51 @@
-{ lib
-, jdk8
-, buildPythonPackage
-, fetchPypi
-, six
-, py4j
-, pythonOlder
+{
+  lib,
+  jdk8,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  six,
+  py4j,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "databricks-connect";
-  version = "11.3.26";
-  format = "setuptools";
+  version = "11.3.33";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-YjUY4i8PtXc+fWcGjvnRbZkiINprKcS1K9HT5+86E8c=";
+    hash = "sha256-KcqJ2B2df85H/VIx4ToX0pJ7rYbjDRp3eR7jAFW67do=";
   };
 
   sourceRoot = ".";
 
-  propagatedBuildInputs = [ py4j six jdk8 ];
+  build-system = [ setuptools ];
+
+  dependencies = [
+    py4j
+    six
+    jdk8
+  ];
 
   # requires network access
   doCheck = false;
 
-  prePatch = ''
-    substituteInPlace setup.py \
-      --replace "py4j==0.10.9" "py4j"
-  '';
+  pythonRelaxDeps = [ "py4j" ];
 
   preFixup = ''
     substituteInPlace "$out/bin/find-spark-home" \
-      --replace find_spark_home.py .find_spark_home.py-wrapped
+      --replace-fail find_spark_home.py .find_spark_home.py-wrapped
   '';
 
-  pythonImportsCheck = [ "pyspark" "six" "py4j" ];
+  pythonImportsCheck = [
+    "pyspark"
+    "six"
+    "py4j"
+  ];
 
   meta = with lib; {
     description = "Client for connecting to remote Databricks clusters";
diff --git a/pkgs/development/python-modules/databricks-sql-connector/default.nix b/pkgs/development/python-modules/databricks-sql-connector/default.nix
index b7cb1311b6b49..b48284aae3212 100644
--- a/pkgs/development/python-modules/databricks-sql-connector/default.nix
+++ b/pkgs/development/python-modules/databricks-sql-connector/default.nix
@@ -1,24 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, alembic
-, lz4
-, numpy
-, oauthlib
-, openpyxl
-, pandas
-, poetry-core
-, pyarrow
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, sqlalchemy
-, thrift
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  alembic,
+  lz4,
+  numpy,
+  oauthlib,
+  openpyxl,
+  pandas,
+  poetry-core,
+  pyarrow,
+  pytestCheckHook,
+  pythonOlder,
+  sqlalchemy,
+  thrift,
+  requests,
+  urllib3,
+  fetchpatch,
 }:
 
 buildPythonPackage rec {
   pname = "databricks-sql-connector";
-  version = "3.1.0";
+  version = "3.3.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -27,17 +30,23 @@ buildPythonPackage rec {
     owner = "databricks";
     repo = "databricks-sql-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-LiA+zZuhPPXgBb8B1vZ/PuAYMrBXzxgd1CXwugf0mk8=";
+    hash = "sha256-a3OeKJ3c2UCClsPMah7iJY2YvIVLfHmmBuHAx8vdXZs=";
   };
 
+  patches = [
+    (fetchpatch {
+      name = "fix-pandas.patch";
+      url = "https://patch-diff.githubusercontent.com/raw/databricks/databricks-sql-python/pull/416.patch";
+      sha256 = "sha256-sNCp8xSSmKP2yNzDK4wyWC5Hoe574AeHnKTeNcIxaek=";
+    })
+  ];
+
   pythonRelaxDeps = [
-    "numpy"
-    "thrift"
+    "pyarrow"
   ];
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -50,19 +59,15 @@ buildPythonPackage rec {
     pyarrow
     sqlalchemy
     thrift
+    requests
+    urllib3
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests/unit"
-  ];
+  pytestFlagsArray = [ "tests/unit" ];
 
-  pythonImportsCheck = [
-    "databricks"
-  ];
+  pythonImportsCheck = [ "databricks" ];
 
   meta = with lib; {
     description = "Databricks SQL Connector for Python";
@@ -70,8 +75,5 @@ buildPythonPackage rec {
     changelog = "https://github.com/databricks/databricks-sql-python/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
     maintainers = with maintainers; [ harvidsen ];
-    # No SQLAlchemy 2.0 support
-    # https://github.com/databricks/databricks-sql-python/issues/91
-    broken = true;
   };
 }
diff --git a/pkgs/development/python-modules/dataclass-factory/default.nix b/pkgs/development/python-modules/dataclass-factory/default.nix
index b6ce77a51f00a..83de3f7218324 100644
--- a/pkgs/development/python-modules/dataclass-factory/default.nix
+++ b/pkgs/development/python-modules/dataclass-factory/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nose2
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  nose2,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-0BIWgyAV1hJzFX4xYFqswvQi5F1Ce+V9FKSmNYuJfZM=";
   };
 
-  nativeCheckInputs = [
-    nose2
-  ];
+  nativeCheckInputs = [ nose2 ];
 
-  checkInputs = [
-    typing-extensions
-  ];
+  checkInputs = [ typing-extensions ];
 
   pythonImportsCheck = [ "dataclass_factory" ];
 
diff --git a/pkgs/development/python-modules/dataclass-wizard/default.nix b/pkgs/development/python-modules/dataclass-wizard/default.nix
index 0cc0eed0f51fe..39f0f0aa39fa7 100644
--- a/pkgs/development/python-modules/dataclass-wizard/default.nix
+++ b/pkgs/development/python-modules/dataclass-wizard/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
-, pythonAtLeast
-, pytimeparse
-, pyyaml
-, pytestCheckHook
-, pytest-mock
-, typing-extensions
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  pythonAtLeast,
+  pytimeparse,
+  pyyaml,
+  pytestCheckHook,
+  pytest-mock,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -22,41 +23,34 @@ buildPythonPackage rec {
     hash = "sha256-Ufi4lZc+UkM6NZr4bS2OibpOmMjyiBEoVKxmrqauW50=";
   };
 
-  propagatedBuildInputs = [
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ ] ++ lib.optionals (pythonOlder "3.9") [ typing-extensions ];
 
   passthru.optional-dependencies = {
-    timedelta = [
-      pytimeparse
-    ];
-    yaml = [
-      pyyaml
-    ];
+    timedelta = [ pytimeparse ];
+    yaml = [ pyyaml ];
   };
 
   nativeCheckInputs = [
     pytestCheckHook
     pytest-mock
-  ] ++ passthru.optional-dependencies.timedelta
-  ++ passthru.optional-dependencies.yaml;
-
-  disabledTests = [
-  ] ++ lib.optionals (pythonAtLeast "3.11") [
-    # Any/None internal changes, tests need adjusting upstream
-    "without_type_hinting"
-    "default_dict"
-    "test_frozenset"
-    "test_set"
-    "date_times_with_custom_pattern"
-    "from_dict_handles_identical_cased_json_keys"
-  ];
+  ] ++ passthru.optional-dependencies.timedelta ++ passthru.optional-dependencies.yaml;
+
+  disabledTests =
+    [ ]
+    ++ lib.optionals (pythonAtLeast "3.11") [
+      # Any/None internal changes, tests need adjusting upstream
+      "without_type_hinting"
+      "default_dict"
+      "test_frozenset"
+      "test_set"
+      "date_times_with_custom_pattern"
+      "from_dict_handles_identical_cased_json_keys"
+    ];
 
   pythonImportsCheck = [ "dataclass_wizard" ];
 
   meta = with lib; {
-    description = "A set of simple, yet elegant wizarding tools for interacting with the Python dataclasses module";
+    description = "Set of simple, yet elegant wizarding tools for interacting with the Python dataclasses module";
     mainProgram = "wiz";
     homepage = "https://github.com/rnag/dataclass-wizard";
     changelog = "https://github.com/rnag/dataclass-wizard/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/dataclasses-json/default.nix b/pkgs/development/python-modules/dataclasses-json/default.nix
index 2718a88379c92..bb8a949bc8ae2 100644
--- a/pkgs/development/python-modules/dataclasses-json/default.nix
+++ b/pkgs/development/python-modules/dataclasses-json/default.nix
@@ -1,42 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hypothesis
-, marshmallow-enum
-, poetry-core
-, poetry-dynamic-versioning
-, pytestCheckHook
-, pythonOlder
-, typing-inspect
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hypothesis,
+  marshmallow,
+  poetry-core,
+  poetry-dynamic-versioning,
+  pytestCheckHook,
+  pythonOlder,
+  typing-inspect,
 }:
 
 buildPythonPackage rec {
   pname = "dataclasses-json";
-  version = "0.6.4";
-  format = "pyproject";
+  version = "0.6.7";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "lidatong";
-    repo = pname;
+    repo = "dataclasses-json";
     rev = "refs/tags/v${version}";
-    hash = "sha256-izNDvljUWw60joi5WfCfoqL5SDM8Jz5Pz+lI/RP35n8=";
+    hash = "sha256-AH/T6pa/CHtQNox67fqqs/BBnUcmThvbnSHug2p33qM=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace 'version = "0.0.0"' 'version = "${version}"'
+      --replace-fail 'version = "0.0.0"' 'version = "${version}"'
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
     poetry-dynamic-versioning
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     typing-inspect
-    marshmallow-enum
+    marshmallow
   ];
 
   nativeCheckInputs = [
@@ -51,9 +52,7 @@ buildPythonPackage rec {
     "tests/test_annotations.py"
   ];
 
-  pythonImportsCheck = [
-    "dataclasses_json"
-  ];
+  pythonImportsCheck = [ "dataclasses_json" ];
 
   meta = with lib; {
     description = "Simple API for encoding and decoding dataclasses to and from JSON";
diff --git a/pkgs/development/python-modules/dataclasses-serialization/default.nix b/pkgs/development/python-modules/dataclasses-serialization/default.nix
index a52135ddaf6fe..b1e014f0c1630 100644
--- a/pkgs/development/python-modules/dataclasses-serialization/default.nix
+++ b/pkgs/development/python-modules/dataclasses-serialization/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, more-properties
-, typing-inspect
-, toolz
-, toposort
-, bson
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  more-properties,
+  typing-inspect,
+  toolz,
+  toposort,
+  bson,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/datadiff/default.nix b/pkgs/development/python-modules/datadiff/default.nix
index a971509ca823a..926f8a9f08a16 100644
--- a/pkgs/development/python-modules/datadiff/default.nix
+++ b/pkgs/development/python-modules/datadiff/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,14 +20,12 @@ buildPythonPackage rec {
   # Tests are not part of the PyPI releases
   doCheck = false;
 
-  pythonImportsCheck = [
-    "datadiff"
-  ];
+  pythonImportsCheck = [ "datadiff" ];
 
   meta = with lib; {
     description = "Library to provide human-readable diffs of Python data structures";
     homepage = "https://sourceforge.net/projects/datadiff/";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/datadog/default.nix b/pkgs/development/python-modules/datadog/default.nix
index 8b0b0956b89d3..da178007ba92e 100644
--- a/pkgs/development/python-modules/datadog/default.nix
+++ b/pkgs/development/python-modules/datadog/default.nix
@@ -1,38 +1,34 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchPypi
-, freezegun
-, hatchling
-, mock
-, pytest-vcr
-, pytestCheckHook
-, python-dateutil
-, pythonAtLeast
-, pythonOlder
-, requests
-, vcrpy
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchPypi,
+  freezegun,
+  hatchling,
+  mock,
+  pytest-vcr,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  requests,
+  vcrpy,
 }:
 
 buildPythonPackage rec {
   pname = "datadog";
-  version = "0.49.1";
+  version = "0.50.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-TLenmRr2ytuGj+RQzUVkc+ZfEfxni3189hBE/xxgdNg=";
+    hash = "sha256-V51NtUvW75GMUlAhftsVuAt7EVgrjiT85DcCdow/Li0=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -58,15 +54,13 @@ buildPythonPackage rec {
     "TestDogshell"
   ];
 
-  pythonImportsCheck = [
-    "datadog"
-  ];
+  pythonImportsCheck = [ "datadog" ];
 
   meta = with lib; {
-    description = "The Datadog Python library";
+    description = "Datadog Python library";
     homepage = "https://github.com/DataDog/datadogpy";
     changelog = "https://github.com/DataDog/datadogpy/blob/v${version}/CHANGELOG.md";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/datafusion/default.nix b/pkgs/development/python-modules/datafusion/default.nix
index baf905f11fa71..b7c68f839e876 100644
--- a/pkgs/development/python-modules/datafusion/default.nix
+++ b/pkgs/development/python-modules/datafusion/default.nix
@@ -1,15 +1,17 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, rustPlatform
-, pytestCheckHook
-, libiconv
-, numpy
-, protobuf
-, pyarrow
-, Security
-, SystemConfiguration
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  rustPlatform,
+  pytestCheckHook,
+  libiconv,
+  numpy,
+  protobuf,
+  pyarrow,
+  Security,
+  SystemConfiguration,
+  typing-extensions,
 }:
 
 let
@@ -32,21 +34,21 @@ in
 
 buildPythonPackage rec {
   pname = "datafusion";
-  version = "35.0.0";
-  format = "pyproject";
+  version = "40.1.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     name = "datafusion-source";
     owner = "apache";
     repo = "arrow-datafusion-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-43XY7j/8x+7SCY4W8nysaeWax2nvTTHZXMmy3hSz6pI=";
+    hash = "sha256-5WOSlx4XW9zO6oTY16lWQElShLv0ubflVPfSSEGrFgg=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     name = "datafusion-cargo-deps";
-    inherit src pname version;
-    hash = "sha256-YWAyEMojw0bc/fu5kIZKMNPEgsAIpWqjVNodWXbgTl4=";
+    inherit src;
+    hash = "sha256-hN03tbnH77VsMDxSMddMHIH00t7lUs5h8rTHbiMIExw=";
   };
 
   nativeBuildInputs = with rustPlatform; [
@@ -54,17 +56,30 @@ buildPythonPackage rec {
     maturinBuildHook
   ];
 
-  buildInputs = [ protobuf ] ++ lib.optionals stdenv.isDarwin [
-    libiconv
-    Security
-    SystemConfiguration
+  buildInputs =
+    [ protobuf ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      libiconv
+      Security
+      SystemConfiguration
+    ];
+
+  dependencies = [
+    pyarrow
+    typing-extensions
   ];
 
-  propagatedBuildInputs = [ pyarrow ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    numpy
+  ];
 
-  nativeCheckInputs = [ pytestCheckHook numpy ];
   pythonImportsCheck = [ "datafusion" ];
-  pytestFlagsArray = [ "--pyargs" pname ];
+
+  pytestFlagsArray = [
+    "--pyargs"
+    pname
+  ];
 
   preCheck = ''
     pushd $TMPDIR
diff --git a/pkgs/development/python-modules/datalad-gooey/default.nix b/pkgs/development/python-modules/datalad-gooey/default.nix
new file mode 100644
index 0000000000000..fcc3fa3763302
--- /dev/null
+++ b/pkgs/development/python-modules/datalad-gooey/default.nix
@@ -0,0 +1,64 @@
+{
+  buildPythonPackage,
+  lib,
+  git,
+  fetchFromGitHub,
+  darwin,
+  setuptools,
+  stdenv,
+  git-annex,
+  pyside6,
+  pyqtdarktheme,
+  datalad-next,
+  outdated,
+  datalad,
+  pytestCheckHook,
+  pytest-qt,
+}:
+
+buildPythonPackage {
+  pname = "datalad-gooey";
+  # many bug fixes on `master` but no new release
+  version = "unstable-2024-02-20";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "datalad";
+    repo = "datalad-gooey";
+    rev = "5bd6b9257ff1569439d2a77663271f5d665e61b6";
+    hash = "sha256-8779SLcV4wwJ3124lteGzvimDxgijyxa818ZrumPMs4=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    pyside6
+    pyqtdarktheme
+    datalad-next
+    outdated
+    datalad
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.apple_sdk.frameworks.AppleScriptKit ];
+
+  pythonRemoveDeps = [ "applescript" ];
+
+  preCheck = ''
+    export HOME=$TMPDIR
+  '';
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-qt
+    git
+    git-annex
+  ];
+
+  pythonImportsCheck = [ "datalad_gooey" ];
+
+  meta = {
+    description = "Graphical user interface (GUI) for DataLad";
+    homepage = "https://github.com/datalad/datalad-gooey";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ gador ];
+    mainProgram = "datalad-gooey";
+  };
+}
diff --git a/pkgs/development/python-modules/datalad-next/default.nix b/pkgs/development/python-modules/datalad-next/default.nix
new file mode 100644
index 0000000000000..19b651db3ac61
--- /dev/null
+++ b/pkgs/development/python-modules/datalad-next/default.nix
@@ -0,0 +1,115 @@
+{
+  annexremote,
+  buildPythonPackage,
+  datalad,
+  datasalad,
+  fetchFromGitHub,
+  git,
+  git-annex,
+  humanize,
+  lib,
+  more-itertools,
+  psutil,
+  pytestCheckHook,
+  setuptools,
+  openssh,
+  unzip,
+  versioneer,
+  webdavclient3,
+}:
+
+buildPythonPackage rec {
+  pname = "datalad-next";
+  version = "1.5.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "datalad";
+    repo = "datalad-next";
+    rev = "refs/tags/${version}";
+    hash = "sha256-fqP6nG2ncDRg48kvlsmPjNBOzfQp9+7wTcGvsYVrRzA=";
+  };
+
+  postPatch = ''
+    # Remove vendorized versioneer.py
+    rm versioneer.py
+  '';
+
+  nativeBuildInputs = [ git ];
+
+  build-system = [
+    setuptools
+    versioneer
+  ];
+
+  dependencies = [
+    annexremote
+    datasalad
+    datalad
+    humanize
+    more-itertools
+  ];
+
+  preCheck = ''
+    export HOME=$TMPDIR
+  '';
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    webdavclient3
+    psutil
+    git-annex
+    datalad
+    openssh
+    unzip
+  ];
+
+  disabledTests = [
+    # remotes available after datalad-next install (through `console_scripts`), but not yet in $PATH during test
+    "test_uncurl_addurl_unredirected"
+    "test_uncurl"
+    "test_uncurl_ria_access"
+    "test_uncurl_store"
+    "test_uncurl_remove"
+    "test_uncurl_testremote"
+    "test_replace_add_archive_content"
+    "test_annex_remote"
+    "test_export_remote"
+    "test_annex_remote_autorepush"
+    "test_export_remote_autorepush"
+    "test_typeweb_annex"
+    "test_typeweb_annex_uncompressed"
+    "test_typeweb_export"
+    "test_submodule_url"
+    "test_uncurl_progress_reporting_to_annex"
+    "test_archivist_retrieval"
+    "test_archivist_retrieval_legacy"
+
+    # hardcoded /bin path
+    "test_auto_if_wanted_data_transfer_path_restriction"
+
+    # requires internet access
+    "test_push_wanted"
+    "test_auto_data_transfer"
+    "test_http_url_operations"
+    "test_transparent_decompression"
+    "test_compressed_file_stay_compressed"
+    "test_ls_file_collection_tarfile"
+    "test_iter_tar"
+  ];
+
+  disabledTestPaths = [
+    # requires internet access
+    "datalad_next/commands/tests/test_download.py"
+    "datalad_next/archive_operations/tests/test_tarfile.py"
+  ];
+  pythonImportsCheck = [ "datalad_next" ];
+
+  meta = {
+    description = "DataLad extension with a staging area for additional functionality, or for improved performance and user experience";
+    changelog = "https://github.com/datalad/datalad-next/blob/main/CHANGELOG.md";
+    homepage = "https://github.com/datalad/datalad-next";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ gador ];
+  };
+}
diff --git a/pkgs/development/python-modules/datalad/default.nix b/pkgs/development/python-modules/datalad/default.nix
new file mode 100644
index 0000000000000..2ab56ef6da2da
--- /dev/null
+++ b/pkgs/development/python-modules/datalad/default.nix
@@ -0,0 +1,242 @@
+{
+  buildPythonPackage,
+  lib,
+  setuptools,
+  stdenv,
+  fetchFromGitHub,
+  installShellFiles,
+  git,
+  coreutils,
+  versioneer,
+  # core
+  platformdirs,
+  chardet,
+  iso8601,
+  humanize,
+  fasteners,
+  packaging,
+  patool,
+  tqdm,
+  annexremote,
+  looseversion,
+  git-annex,
+  # downloaders
+  boto3,
+  keyrings-alt,
+  keyring,
+  msgpack,
+  requests,
+  # publish
+  python-gitlab,
+  # misc
+  argcomplete,
+  pyperclip,
+  python-dateutil,
+  # duecredit
+  duecredit,
+  # python>=3.8
+  distro,
+  # win
+  colorama,
+  # python-version-dependent
+  pythonOlder,
+  importlib-resources,
+  importlib-metadata,
+  typing-extensions,
+  # tests
+  pytestCheckHook,
+  p7zip,
+  curl,
+  httpretty,
+}:
+
+buildPythonPackage rec {
+  pname = "datalad";
+  version = "1.1.3";
+
+  src = fetchFromGitHub {
+    owner = "datalad";
+    repo = pname;
+    rev = "refs/tags/${version}";
+    hash = "sha256-Y7P9vRfFUJ5ZhVRTAYeImI9cv1LtWVAeBoBl6wANnrc=";
+  };
+
+  postPatch = ''
+    substituteInPlace datalad/distribution/create_sibling.py \
+      --replace-fail "/bin/ls" "${coreutils}/bin/ls"
+    # Remove vendorized versioneer.py
+    rm versioneer.py
+  '';
+
+  nativeBuildInputs = [
+    installShellFiles
+    git
+  ];
+
+  build-system = [
+    setuptools
+    versioneer
+  ];
+
+  dependencies =
+    [
+      # core
+      platformdirs
+      chardet
+      iso8601
+      humanize
+      fasteners
+      packaging
+      patool
+      tqdm
+      annexremote
+      looseversion
+      setuptools
+      git-annex
+
+      # downloaders-extra
+      # requests-ftp # not in nixpkgs yet
+
+      # downloaders
+      boto3
+      keyrings-alt
+      keyring
+      msgpack
+      requests
+
+      # publish
+      python-gitlab
+
+      # misc
+      argcomplete
+      pyperclip
+      python-dateutil
+
+      # duecredit
+      duecredit
+
+      # python>=3.8
+      distro
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isWindows [ colorama ]
+    ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ]
+    ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ]
+    ++ lib.optionals (pythonOlder "3.11") [ typing-extensions ];
+
+  postInstall = ''
+    installShellCompletion --cmd datalad \
+         --bash <($out/bin/datalad shell-completion) \
+         --zsh  <($out/bin/datalad shell-completion)
+    wrapProgram $out/bin/datalad --prefix PYTHONPATH : "$PYTHONPATH"
+  '';
+
+  preCheck = ''
+    export HOME=$TMPDIR
+  '';
+
+  # tests depend on apps in $PATH which only will get installed after the test
+  disabledTests = [
+    # No such file or directory: 'datalad'
+    "test_script_shims"
+    "test_cfg_override"
+    "test_completion"
+    "test_nested_pushclone_cycle_allplatforms"
+    "test_create_sub_gh3463"
+    "test_create_sub_dataset_dot_no_path"
+    "test_cfg_passthrough"
+    "test_addurls_stdin_input_command_line"
+    "test_run_datalad_help"
+    "test_status_custom_summary_no_repeats"
+    "test_quoting"
+
+    #  No such file or directory: 'git-annex-remote-[...]"
+    "test_create"
+    "test_ensure_datalad_remote_maybe_enable"
+
+    # "git-annex: unable to use external special remote git-annex-remote-datalad"
+    "test_ria_postclonecfg"
+    "test_ria_postclone_noannex"
+    "test_ria_push"
+    "test_basic_scenario"
+    "test_annex_get_from_subdir"
+    "test_ensure_datalad_remote_init_and_enable_needed"
+    "test_ensure_datalad_remote_maybe_enable[False]"
+    "test_ensure_datalad_remote_maybe_enable[True]"
+    "test_create_simple"
+    "test_create_alias"
+    "test_storage_only"
+    "test_initremote"
+    "test_read_access"
+    "test_ephemeral"
+    "test_initremote_basic_fileurl"
+    "test_initremote_basic_httpurl"
+    "test_remote_layout"
+    "test_version_check"
+    "test_gitannex_local"
+    "test_push_url"
+    "test_url_keys"
+    "test_obtain_permission_root"
+    "test_source_candidate_subdataset"
+    "test_update_fetch_all"
+    "test_add_archive_dirs"
+    "test_add_archive_content"
+    "test_add_archive_content_strip_leading"
+    "test_add_archive_content_zip"
+    "test_add_archive_content_absolute_path"
+    "test_add_archive_use_archive_dir"
+    "test_add_archive_single_file"
+    "test_add_delete"
+    "test_add_archive_leading_dir"
+    "test_add_delete_after_and_drop"
+    "test_add_delete_after_and_drop_subdir"
+    "test_override_existing_under_git"
+    "test_copy_file_datalad_specialremote"
+    "test_download_url_archive"
+    "test_download_url_archive_from_subdir"
+    "test_download_url_archive_trailing_separator"
+    "test_download_url_need_datalad_remote"
+    "test_datalad_credential_helper - assert False"
+
+    # need internet access
+    "test_clone_crcns"
+    "test_clone_datasets_root"
+    "test_reckless"
+    "test_autoenabled_remote_msg"
+    "test_ria_http_storedataladorg"
+    "test_gin_cloning"
+    "test_nonuniform_adjusted_subdataset"
+    "test_install_datasets_root"
+    "test_install_simple_local"
+    "test_install_dataset_from_just_source"
+    "test_install_dataset_from_just_source_via_path"
+    "test_datasets_datalad_org"
+    "test_get_cached_dataset"
+    "test_cached_dataset"
+    "test_cached_url"
+    "test_anonymous_s3"
+    "test_protocols"
+    "test_get_versioned_url_anon"
+    "test_install_recursive_github"
+    "test_failed_install_multiple"
+
+    # pbcopy not found
+    "test_wtf"
+  ];
+
+  nativeCheckInputs = [
+    p7zip
+    pytestCheckHook
+    git-annex
+    curl
+    httpretty
+  ];
+
+  pythonImportsCheck = [ "datalad" ];
+
+  meta = {
+    description = "Keep code, data, containers under control with git and git-annex";
+    homepage = "https://www.datalad.org";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ renesat ];
+  };
+}
diff --git a/pkgs/development/python-modules/datamodeldict/default.nix b/pkgs/development/python-modules/datamodeldict/default.nix
index 3804298098360..e7c8f0b3af2cb 100644
--- a/pkgs/development/python-modules/datamodeldict/default.nix
+++ b/pkgs/development/python-modules/datamodeldict/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, xmltodict
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
@@ -18,21 +19,17 @@ buildPythonPackage rec {
     hash = "sha256-DadBRsc8qEu9PWgMNllGS2ESKL7kgBLDhg4yDr87WRk=";
   };
 
-  propagatedBuildInputs = [
-    xmltodict
-  ];
+  propagatedBuildInputs = [ xmltodict ];
 
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "DataModelDict"
-  ];
+  pythonImportsCheck = [ "DataModelDict" ];
 
   meta = with lib; {
     description = "Class allowing for data models equivalently represented as Python dictionaries, JSON, and XML";
     homepage = "https://github.com/usnistgov/DataModelDict/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/datapoint/default.nix b/pkgs/development/python-modules/datapoint/default.nix
index 9f9c0b55c2359..aec91a0e548b8 100644
--- a/pkgs/development/python-modules/datapoint/default.nix
+++ b/pkgs/development/python-modules/datapoint/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch2
-, appdirs
-, pytz
-, requests
-, pytestCheckHook
-, requests-mock
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  appdirs,
+  pytz,
+  requests,
+  pytestCheckHook,
+  requests-mock,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,7 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     appdirs
diff --git a/pkgs/development/python-modules/dataprep-ml/default.nix b/pkgs/development/python-modules/dataprep-ml/default.nix
index 3bb919b6dc100..df952df2bd0a6 100644
--- a/pkgs/development/python-modules/dataprep-ml/default.nix
+++ b/pkgs/development/python-modules/dataprep-ml/default.nix
@@ -1,20 +1,20 @@
-{ lib
-, buildPythonPackage
-, colorlog
-, dataclasses-json
-, fetchPypi
-, nltk-data
-, numpy
-, pandas
-, poetry-core
-, pydantic
-, pydateinfer
-, python-dateutil
-, pythonOlder
-, pythonRelaxDepsHook
-, scipy
-, symlinkJoin
-, type-infer
+{
+  lib,
+  buildPythonPackage,
+  colorlog,
+  dataclasses-json,
+  fetchPypi,
+  nltk-data,
+  numpy,
+  pandas,
+  poetry-core,
+  pydantic,
+  pydateinfer,
+  python-dateutil,
+  pythonOlder,
+  scipy,
+  symlinkJoin,
+  type-infer,
 }:
 let
   testNltkData = symlinkJoin {
@@ -27,7 +27,7 @@ let
 in
 buildPythonPackage rec {
   pname = "dataprep-ml";
-  version = "0.0.23";
+  version = "24.5.1.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -36,16 +36,13 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "dataprep_ml";
     inherit version;
-    hash = "sha256-NYlKLdV2xZPODXpHvaFB8cRFTdCndl3UOd6bCfNbsZo=";
+    hash = "sha256-pZhHlNcQJLBww7ur2Z6Yb2IdbRsBtjzQAzfa4UzGKt4=";
   };
 
-  pythonRelaxDeps = [
-    "pydantic"
-  ];
+  pythonRelaxDeps = [ "pydantic" ];
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/dataproperty/default.nix b/pkgs/development/python-modules/dataproperty/default.nix
index 539c3324204e7..b82fa0900fbb4 100644
--- a/pkgs/development/python-modules/dataproperty/default.nix
+++ b/pkgs/development/python-modules/dataproperty/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, loguru
-, mbstrdecoder
-, pytestCheckHook
-, pythonOlder
-, tcolorpy
-, termcolor
-, typepy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  loguru,
+  mbstrdecoder,
+  pytestCheckHook,
+  pythonOlder,
+  tcolorpy,
+  termcolor,
+  typepy,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
   ] ++ typepy.optional-dependencies.datetime;
 
   passthru.optional-dependencies = {
-    logging = [
-      loguru
-    ];
+    logging = [ loguru ];
   };
 
   nativeCheckInputs = [
@@ -41,9 +40,7 @@ buildPythonPackage rec {
     termcolor
   ];
 
-  pythonImportsCheck = [
-    "dataproperty"
-  ];
+  pythonImportsCheck = [ "dataproperty" ];
 
   meta = with lib; {
     description = "Library for extracting properties from data";
diff --git a/pkgs/development/python-modules/datasalad/default.nix b/pkgs/development/python-modules/datasalad/default.nix
new file mode 100644
index 0000000000000..66303c1ff0cdb
--- /dev/null
+++ b/pkgs/development/python-modules/datasalad/default.nix
@@ -0,0 +1,46 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  hatch-vcs,
+  lib,
+  more-itertools,
+  psutil,
+  pytestCheckHook,
+  unzip,
+}:
+
+buildPythonPackage rec {
+  pname = "datasalad";
+  version = "0.2.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "datalad";
+    repo = "datasalad";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-qgHWTokNBzJcBbEPCA/YfklzqyX1lM2yro7ElqBfrig=";
+  };
+
+  build-system = [
+    hatchling
+    hatch-vcs
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    more-itertools
+    psutil
+    unzip
+  ];
+
+  pythonImportsCheck = [ "datasalad" ];
+
+  meta = {
+    description = "Pure-Python library with a collection of utilities for working with Git and git-annex";
+    changelog = "https://github.com/datalad/datasalad/blob/main/CHANGELOG.md";
+    homepage = "https://github.com/datalad/datasalad";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ gador ];
+  };
+}
diff --git a/pkgs/development/python-modules/dataset/default.nix b/pkgs/development/python-modules/dataset/default.nix
index 9446920d0b051..778082fc276f7 100644
--- a/pkgs/development/python-modules/dataset/default.nix
+++ b/pkgs/development/python-modules/dataset/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, alembic
-, banal
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, sqlalchemy
+{
+  lib,
+  alembic,
+  banal,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  sqlalchemy,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # checks attempt to import nonexistent module 'test.test' and fail
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dataset"
-  ];
+  pythonImportsCheck = [ "dataset" ];
 
   meta = with lib; {
     description = "Toolkit for Python-based database access";
diff --git a/pkgs/development/python-modules/datasets/default.nix b/pkgs/development/python-modules/datasets/default.nix
index 3555387b3ab10..14779ee62cabc 100644
--- a/pkgs/development/python-modules/datasets/default.nix
+++ b/pkgs/development/python-modules/datasets/default.nix
@@ -1,27 +1,27 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, dill
-, fetchFromGitHub
-, fetchpatch
-, fsspec
-, huggingface-hub
-, importlib-metadata
-, multiprocess
-, numpy
-, packaging
-, pandas
-, pyarrow
-, pythonOlder
-, requests
-, responses
-, tqdm
-, xxhash
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  dill,
+  fetchFromGitHub,
+  fsspec,
+  huggingface-hub,
+  importlib-metadata,
+  multiprocess,
+  numpy,
+  packaging,
+  pandas,
+  pyarrow,
+  pythonOlder,
+  requests,
+  responses,
+  tqdm,
+  xxhash,
 }:
 
 buildPythonPackage rec {
   pname = "datasets";
-  version = "2.18.0";
+  version = "2.20.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -30,7 +30,7 @@ buildPythonPackage rec {
     owner = "huggingface";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-mLiIE1RYUNUhh8nhG7TBr7XUdWlJzeWDuUNvoBk0eyw=";
+    hash = "sha256-9mB4RXJVkmaK+fLEmyZAdf64YKGoAhE3RzMoj4/8K98=";
   };
 
   # remove pyarrow<14.0.1 vulnerability fix
@@ -53,9 +53,7 @@ buildPythonPackage rec {
     responses
     tqdm
     xxhash
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   # Tests require pervasive internet access
   doCheck = false;
@@ -63,9 +61,7 @@ buildPythonPackage rec {
   # Module import will attempt to create a cache directory
   postFixup = "export HF_MODULES_CACHE=$TMPDIR";
 
-  pythonImportsCheck = [
-    "datasets"
-  ];
+  pythonImportsCheck = [ "datasets" ];
 
   meta = with lib; {
     description = "Open-access datasets and evaluation metrics for natural language processing";
@@ -74,6 +70,6 @@ buildPythonPackage rec {
     changelog = "https://github.com/huggingface/datasets/releases/tag/${version}";
     license = licenses.asl20;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/datasette-publish-fly/default.nix b/pkgs/development/python-modules/datasette-publish-fly/default.nix
index a9c04618ee312..9e20a5fd7849a 100644
--- a/pkgs/development/python-modules/datasette-publish-fly/default.nix
+++ b/pkgs/development/python-modules/datasette-publish-fly/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, cogapp
-, datasette
-, fetchFromGitHub
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  cogapp,
+  datasette,
+  fetchFromGitHub,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-diaxr+fNNgkJvLGkLo+lK0ThTsXYDePFsvTetMbDRMk=";
   };
 
-  propagatedBuildInputs = [
-    datasette
-  ];
+  propagatedBuildInputs = [ datasette ];
 
   nativeCheckInputs = [
     cogapp
@@ -32,9 +31,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "datasette_publish_fly"
-  ];
+  pythonImportsCheck = [ "datasette_publish_fly" ];
 
   meta = with lib; {
     description = "Datasette plugin for publishing data using Fly";
diff --git a/pkgs/development/python-modules/datasette-template-sql/default.nix b/pkgs/development/python-modules/datasette-template-sql/default.nix
index a4ba47add5cf4..5bdb48aa28cb6 100644
--- a/pkgs/development/python-modules/datasette-template-sql/default.nix
+++ b/pkgs/development/python-modules/datasette-template-sql/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, datasette
-, fetchFromGitHub
-, pytest-asyncio
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  datasette,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-VmdIEDk3iCBFrTPMm6ud00Z5CWqO0Wk707IQ4oVx5ak=";
   };
 
-  propagatedBuildInputs = [
-    datasette
-  ];
+  propagatedBuildInputs = [ datasette ];
 
   # Tests require a running datasette instance
   doCheck = false;
 
-  pythonImportsCheck = [
-    "datasette_template_sql"
-  ];
+  pythonImportsCheck = [ "datasette_template_sql" ];
 
   meta = with lib; {
     description = "Datasette plugin for executing SQL queries from templates";
diff --git a/pkgs/development/python-modules/datasette/default.nix b/pkgs/development/python-modules/datasette/default.nix
index a3c43a528aab3..29cf78eeed88c 100644
--- a/pkgs/development/python-modules/datasette/default.nix
+++ b/pkgs/development/python-modules/datasette/default.nix
@@ -1,35 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, aiofiles
-, asgi-csrf
-, click
-, click-default-group
-, itsdangerous
-, janus
-, jinja2
-, hupper
-, mergedeep
-, pint
-, pluggy
-, python-baseconv
-, pyyaml
-, uvicorn
-, httpx
-, pytestCheckHook
-, pytest-asyncio
-, pytest-timeout
-, aiohttp
-, beautifulsoup4
-, asgiref
-, setuptools
-, trustme
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  aiofiles,
+  asgi-csrf,
+  click,
+  click-default-group,
+  itsdangerous,
+  janus,
+  jinja2,
+  hupper,
+  mergedeep,
+  pint,
+  pluggy,
+  python-baseconv,
+  pyyaml,
+  uvicorn,
+  httpx,
+  pytestCheckHook,
+  pytest-asyncio,
+  pytest-timeout,
+  aiohttp,
+  beautifulsoup4,
+  asgiref,
+  setuptools,
+  trustme,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "datasette";
-  version = "0.64.6";
+  version = "0.64.8";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -38,7 +39,7 @@ buildPythonPackage rec {
     owner = "simonw";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-chU0AFaVfkJMRwraX/Ky0e6/g3ZSZ2efNIJ15veqFmg=";
+    hash = "sha256-Nt/e0j1mF5Qkpp/dRa9W7En1WoGD2MsR3iREv9IQu5E=";
   };
 
   postPatch = ''
@@ -79,6 +80,9 @@ buildPythonPackage rec {
   # with pytest-xdist, it still takes around 10 mins with 32 cores
   # just run the csv tests, as this should give some indictation of correctness
   pytestFlagsArray = [
+    # datasette/app.py:14: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
+    "-W"
+    "ignore::DeprecationWarning"
     "tests/test_csv.py"
   ];
 
@@ -103,6 +107,6 @@ buildPythonPackage rec {
     homepage = "https://datasette.io/";
     changelog = "https://github.com/simonw/datasette/releases/tag/${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/datashader/default.nix b/pkgs/development/python-modules/datashader/default.nix
index 899da93bfc5d4..c7e3237a1f65e 100644
--- a/pkgs/development/python-modules/datashader/default.nix
+++ b/pkgs/development/python-modules/datashader/default.nix
@@ -1,38 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, dask
-, bokeh
-, toolz
-, datashape
-, numba
-, numpy
-, pandas
-, pillow
-, xarray
-, colorcet
-, param
-, pyct
-, scipy
-, pytestCheckHook
-, pythonOlder
-, nbsmoke
-, fastparquet
-, nbconvert
-, pytest-xdist
-, netcdf4
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  dask,
+  bokeh,
+  toolz,
+  datashape,
+  numba,
+  numpy,
+  pandas,
+  pillow,
+  xarray,
+  colorcet,
+  param,
+  pyct,
+  scipy,
+  pytestCheckHook,
+  pythonOlder,
+  nbsmoke,
+  fastparquet,
+  nbconvert,
+  pytest-xdist,
+  netcdf4,
 }:
 
 buildPythonPackage rec {
   pname = "datashader";
-  version = "0.16.0";
+  version = "0.16.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-7UwRGVdXjcs/z/ly2VT3dYba/XGnNF/VzQadn7BQ0NE=";
+    hash = "sha256-eJmXm0wa26a0/S6GyqP175TE5qsjTLtzBspr/iQ/xN8=";
   };
 
   propagatedBuildInputs = [
@@ -72,9 +73,7 @@ buildPythonPackage rec {
     export HOME=$TMPDIR
   '';
 
-  pytestFlagsArray = [
-    "datashader"
-  ];
+  pytestFlagsArray = [ "datashader" ];
 
   disabledTests = [
     # Not compatible with current version of bokeh
@@ -90,15 +89,13 @@ buildPythonPackage rec {
     "datashader/tests/test_datatypes.py"
   ];
 
-  pythonImportsCheck = [
-    "datashader"
-  ];
+  pythonImportsCheck = [ "datashader" ];
 
-  meta = with lib;{
+  meta = with lib; {
     description = "Data visualization toolchain based on aggregating into a grid";
     mainProgram = "datashader";
     homepage = "https://datashader.org";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/datashape/default.nix b/pkgs/development/python-modules/datashape/default.nix
index 459fc548463de..7077087d35875 100644
--- a/pkgs/development/python-modules/datashape/default.nix
+++ b/pkgs/development/python-modules/datashape/default.nix
@@ -1,36 +1,62 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest
-, mock
-, numpy
-, multipledispatch
-, python-dateutil
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
+  mock,
+  numpy,
+  multipledispatch,
+  python-dateutil,
+  setuptools,
+  versioneer,
 }:
 
 let
   # Fetcher function looks similar to fetchPypi.
   # Allows for easier overriding, without having to know
   # how the source is actually fetched.
-  fetcher = {pname, version, sha256}: fetchFromGitHub {
-    owner = "blaze";
-    repo = pname;
-    rev = version;
-    inherit sha256;
-  };
-
-in buildPythonPackage rec {
+  fetcher =
+    {
+      pname,
+      version,
+      sha256,
+    }:
+    fetchFromGitHub {
+      owner = "blaze";
+      repo = pname;
+      rev = version;
+      inherit sha256;
+    };
+in
+buildPythonPackage rec {
   pname = "datashape";
   version = "0.5.4";
-  format = "setuptools";
+
+  pyproject = true;
+  build-system = [
+    setuptools
+    versioneer
+  ];
 
   src = fetcher {
     inherit pname version;
     sha256 = "0rhlj2kjj1vx5m73wnc5518rd6cs1zsbgpsvzk893n516k69shcf";
   };
 
-  nativeCheckInputs = [ pytest mock ];
-  propagatedBuildInputs = [ numpy multipledispatch python-dateutil ];
+  postPatch = ''
+    # Remove vendorized versioneer.py
+    rm versioneer.py
+  '';
+
+  nativeCheckInputs = [
+    pytest
+    mock
+  ];
+  dependencies = [
+    numpy
+    multipledispatch
+    python-dateutil
+  ];
 
   # Disable several tests
   # https://github.com/blaze/datashape/issues/232
@@ -44,7 +70,7 @@ in buildPythonPackage rec {
 
   meta = {
     homepage = "https://github.com/ContinuumIO/datashape";
-    description = "A data description language";
+    description = "Data description language";
     license = lib.licenses.bsd2;
   };
 }
diff --git a/pkgs/development/python-modules/datashaper/default.nix b/pkgs/development/python-modules/datashaper/default.nix
new file mode 100644
index 0000000000000..3ad28d2228ed3
--- /dev/null
+++ b/pkgs/development/python-modules/datashaper/default.nix
@@ -0,0 +1,49 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  poetry-core,
+  dacite,
+  diskcache,
+  jsonschema,
+  pandas,
+  pyarrow,
+}:
+
+buildPythonPackage rec {
+  pname = "datashaper";
+  version = "0.0.49";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-Bb+6WWRHSmK91SWew/oBc9AeNlIItqSv9OoOYwlqdTM=";
+  };
+
+  build-system = [ poetry-core ];
+
+  pythonRelaxDeps = [ "pyarrow" ];
+
+  dependencies = [
+    dacite
+    diskcache
+    jsonschema
+    pandas
+    pyarrow
+  ];
+
+  pythonImportsCheck = [ "datashaper" ];
+
+  # pypi tarball has no tests
+  doCheck = false;
+
+  meta = {
+    description = "Collection of utilities for doing lightweight data wrangling";
+    homepage = "https://github.com/microsoft/datashaper/tree/main/python/datashaper";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
+  };
+}
diff --git a/pkgs/development/python-modules/datatable/default.nix b/pkgs/development/python-modules/datatable/default.nix
index 599d2e6cec72b..1608ec12e8f21 100644
--- a/pkgs/development/python-modules/datatable/default.nix
+++ b/pkgs/development/python-modules/datatable/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pipInstallHook
-, writeText
-, blessed
-, docutils
-, libcxx
-, llvm
-, pytestCheckHook
-, typesentry
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pipInstallHook,
+  blessed,
+  docutils,
+  libcxx,
+  llvm,
+  pytestCheckHook,
+  typesentry,
 }:
 
 buildPythonPackage rec {
@@ -39,12 +39,21 @@ buildPythonPackage rec {
   '';
   DT_RELEASE = "1";
 
-  propagatedBuildInputs = [ typesentry blessed ];
-  buildInputs = [ llvm pipInstallHook ];
-  nativeCheckInputs = [ docutils pytestCheckHook ];
+  propagatedBuildInputs = [
+    typesentry
+    blessed
+  ];
+  buildInputs = [
+    llvm
+    pipInstallHook
+  ];
+  nativeCheckInputs = [
+    docutils
+    pytestCheckHook
+  ];
 
   LLVM = llvm;
-  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-isystem ${lib.getDev libcxx}/include/c++/v1";
+  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin "-isystem ${lib.getDev libcxx}/include/c++/v1";
 
   # test suite is very cpu intensive, only run small subset to ensure package is working as expected
   pytestFlagsArray = [ "tests/test-sets.py" ];
diff --git a/pkgs/development/python-modules/datauri/default.nix b/pkgs/development/python-modules/datauri/default.nix
index d5ed9bf0525e9..4bf82cf464ca4 100644
--- a/pkgs/development/python-modules/datauri/default.nix
+++ b/pkgs/development/python-modules/datauri/default.nix
@@ -1,43 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pydantic
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pydantic,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "datauri";
-  version = "2.0.0";
-  format = "pyproject";
+  version = "2.2.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "fcurella";
     repo = "python-datauri";
     rev = "refs/tags/v${version}";
-    hash = "sha256-k4tlWRasGa2oQykCD9QJl65UAoZQMJVdyCfqlUBBgqY=";
+    hash = "sha256-9BCYC8PW44pB348kkH7aB1YqXXN1VNcBHphlN503M6g=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [
-    "datauri"
-  ];
+  dependencies = [ typing-extensions ];
 
   nativeCheckInputs = [
     pydantic
     pytestCheckHook
   ];
 
-  disabledTests = [
-    "test_pydantic" # incompatible with pydantic v2
-  ];
+  pythonImportsCheck = [ "datauri" ];
 
   meta = with lib; {
-    description = "Data URI manipulation made easy.";
+    description = "Module for Data URI manipulation";
     homepage = "https://github.com/fcurella/python-datauri";
+    changelog = "https://github.com/fcurella/python-datauri/releases/tag/v${version}";
     license = licenses.unlicense;
     maintainers = with maintainers; [ yuu ];
   };
diff --git a/pkgs/development/python-modules/datefinder/default.nix b/pkgs/development/python-modules/datefinder/default.nix
index 938f25ee1d702..ff7ebf54c6993 100644
--- a/pkgs/development/python-modules/datefinder/default.nix
+++ b/pkgs/development/python-modules/datefinder/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, python-dateutil
-, pytz
-, regex
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  python-dateutil,
+  pytz,
+  regex,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     python-dateutil
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "datefinder" ];
 
diff --git a/pkgs/development/python-modules/dateparser/default.nix b/pkgs/development/python-modules/dateparser/default.nix
index b97dabbc2d918..3f1fec78aeb30 100644
--- a/pkgs/development/python-modules/dateparser/default.nix
+++ b/pkgs/development/python-modules/dateparser/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, python-dateutil
-, pytz
-, regex
-, tzlocal
-, hijri-converter
-, convertdate
-, fasttext
-, langdetect
-, parameterized
-, pytestCheckHook
-, gitpython
-, parsel
-, requests
-, ruamel-yaml
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  python-dateutil,
+  pytz,
+  regex,
+  tzlocal,
+  hijri-converter,
+  convertdate,
+  fasttext,
+  langdetect,
+  parameterized,
+  pytestCheckHook,
+  gitpython,
+  parsel,
+  requests,
+  ruamel-yaml,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     hash = "sha256-mnL44hojebOwP6qtEBHs5QM4uRmLuGlVNr+sM3jZEKE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     python-dateutil
@@ -46,7 +45,10 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    calendars = [ hijri-converter convertdate ];
+    calendars = [
+      hijri-converter
+      convertdate
+    ];
     fasttext = [ fasttext ];
     langdetect = [ langdetect ];
   };
diff --git a/pkgs/development/python-modules/datetime/default.nix b/pkgs/development/python-modules/datetime/default.nix
index 332babd307de9..b782b923dff2c 100644
--- a/pkgs/development/python-modules/datetime/default.nix
+++ b/pkgs/development/python-modules/datetime/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pytz
-, zope-interface
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pytz,
+  zope-interface,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     zope-interface
   ];
 
-  pythonImportsCheck = [
-    "DateTime"
-  ];
+  pythonImportsCheck = [ "DateTime" ];
 
   meta = with lib; {
     description = "DateTime data type, as known from Zope";
diff --git a/pkgs/development/python-modules/dateutils/default.nix b/pkgs/development/python-modules/dateutils/default.nix
index f9efbb47eb053..f52c467fd3dd2 100644
--- a/pkgs/development/python-modules/dateutils/default.nix
+++ b/pkgs/development/python-modules/dateutils/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, python-dateutil, pytz }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python-dateutil,
+  pytz,
+}:
 
 buildPythonPackage rec {
   pname = "dateutils";
@@ -18,9 +24,9 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "dateutils" ];
 
   meta = with lib; {
-    description = "Utilities for working with datetime objects.";
+    description = "Utilities for working with datetime objects";
     homepage = "https://github.com/jmcantrell/python-dateutils";
     license = licenses.bsd0;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/datrie/default.nix b/pkgs/development/python-modules/datrie/default.nix
index 73f4764d742dc..4c6de5beccd94 100644
--- a/pkgs/development/python-modules/datrie/default.nix
+++ b/pkgs/development/python-modules/datrie/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, wheel
-, cython
-, pytestCheckHook
-, hypothesis
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  wheel,
+  cython,
+  pytestCheckHook,
+  hypothesis,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/dawg-python/default.nix b/pkgs/development/python-modules/dawg-python/default.nix
index 015e6a1d5c348..997600122d01f 100644
--- a/pkgs/development/python-modules/dawg-python/default.nix
+++ b/pkgs/development/python-modules/dawg-python/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
 }:
 
 buildPythonPackage rec {
@@ -20,6 +21,6 @@ buildPythonPackage rec {
     description = "Pure Python reader for DAWGs created by dawgdic C++ library or DAWG Python extension";
     homepage = "https://github.com/pytries/DAWG-Python";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dazl/default.nix b/pkgs/development/python-modules/dazl/default.nix
index 8e26c9194f9ba..3c1c982b74a5b 100644
--- a/pkgs/development/python-modules/dazl/default.nix
+++ b/pkgs/development/python-modules/dazl/default.nix
@@ -1,50 +1,50 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
 
-, poetry-core
+  poetry-core,
 
-, aiohttp
-, googleapis-common-protos
-, grpcio
-, protobuf
-, requests
-, semver
-, toposort
+  aiohttp,
+  googleapis-common-protos,
+  grpcio,
+  protobuf,
+  requests,
+  semver,
+  toposort,
 
-#, async_exit_stack
-#, dataclasses
-, google-auth
-, oauthlib
-, prometheus-client
-, pygments
-, pyopenssl
-, typing-extensions
+  #, async_exit_stack
+  #, dataclasses
+  google-auth,
+  oauthlib,
+  prometheus-client,
+  pygments,
+  pyopenssl,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "dazl";
-  version = "7.11.0";
+  version = "7.12.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-IErym/Fd8G75NOa+xOyV87UNmEaB31XPvg8GWCSP7k8=";
+    hash = "sha256-fbemLaOh1PHBvQAmMy06JWgnOqdy/kLByAZh4U8ghxc=";
   };
 
   patches = [
     # Merged, remove this next release
     (fetchpatch {
-      url = "https://github.com/digital-asset/dazl-client/pull/428.patch";
+      name = "428.patch"; # https://github.com/digital-asset/dazl-client/pull/428
+      url = "https://github.com/digital-asset/dazl-client/commit/a68bad0471d22210f0abf31447a7732477de39d4.patch";
       sha256 = "sha256-Gx9W1XkvMPg8FAOAXijDF5QnMbntk5mR0q5+o5i2KAE=";
     })
   ];
 
   format = "pyproject";
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
diff --git a/pkgs/development/python-modules/db-dtypes/default.nix b/pkgs/development/python-modules/db-dtypes/default.nix
index 528134f7349b6..c082433f9f3c2 100644
--- a/pkgs/development/python-modules/db-dtypes/default.nix
+++ b/pkgs/development/python-modules/db-dtypes/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, packaging
-, pandas
-, pyarrow
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  packaging,
+  pandas,
+  pyarrow,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "db-dtypes";
-  version = "1.2.0";
+  version = "1.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -21,33 +22,27 @@ buildPythonPackage rec {
     owner = "googleapis";
     repo = "python-db-dtypes-pandas";
     rev = "refs/tags/v${version}";
-    hash = "sha256-FVRqh30mYVfC8zuhPteuvqGYGTp3PW+pi1bquUjYFAg=";
+    hash = "sha256-DjLgzJ/OivrhHJQGBkIiRNJyi5xWLFp9nBEetD8H0YY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
     packaging
     pandas
     pyarrow
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "db_dtypes"
-  ];
+  pythonImportsCheck = [ "db_dtypes" ];
 
   meta = with lib; {
     description = "Pandas Data Types for SQL systems (BigQuery, Spanner)";
     homepage = "https://github.com/googleapis/python-db-dtypes-pandas";
     changelog = "https://github.com/googleapis/python-db-dtypes-pandas/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dbf/default.nix b/pkgs/development/python-modules/dbf/default.nix
index eb64e37959374..0be997c9fc2ad 100644
--- a/pkgs/development/python-modules/dbf/default.nix
+++ b/pkgs/development/python-modules/dbf/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, aenum
-, pythonOlder
-, python
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  aenum,
+  pythonOlder,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -18,22 +19,18 @@ buildPythonPackage rec {
     hash = "sha256-MFEi1U0RNvrfDtV4HpvPgKTCibAh76z7Gnmj32IubYw=";
   };
 
-  propagatedBuildInputs = [
-    aenum
-  ];
+  propagatedBuildInputs = [ aenum ];
 
   checkPhase = ''
     ${python.interpreter} -m dbf.test
   '';
 
-  pythonImportsCheck = [
-    "dbf"
-  ];
+  pythonImportsCheck = [ "dbf" ];
 
   meta = with lib; {
     description = "Module for reading/writing dBase, FoxPro, and Visual FoxPro .dbf files";
     homepage = "https://github.com/ethanfurman/dbf";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ vrthra ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dbfread/default.nix b/pkgs/development/python-modules/dbfread/default.nix
index 2e7f12e0f061c..26d8046ea8f25 100644
--- a/pkgs/development/python-modules/dbfread/default.nix
+++ b/pkgs/development/python-modules/dbfread/default.nix
@@ -1,19 +1,23 @@
-{ lib, fetchPypi, buildPythonPackage }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+}:
 
 buildPythonPackage rec {
-    pname = "dbfread";
-    version = "2.0.7";
-    format = "setuptools";
+  pname = "dbfread";
+  version = "2.0.7";
+  format = "setuptools";
 
-    src = fetchPypi {
-      inherit pname version;
-      sha256 = "07c8a9af06ffad3f6f03e8fe91ad7d2733e31a26d2b72c4dd4cfbae07ee3b73d";
-    };
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "07c8a9af06ffad3f6f03e8fe91ad7d2733e31a26d2b72c4dd4cfbae07ee3b73d";
+  };
 
-    meta = with lib; {
-      description = "Read DBF Files with Python";
-      homepage    = "https://dbfread.readthedocs.org/";
-      license     = with licenses; [ mit ];
-      maintainers = with maintainers; [ vrthra ];
-    };
+  meta = with lib; {
+    description = "Read DBF Files with Python";
+    homepage = "https://dbfread.readthedocs.org/";
+    license = with licenses; [ mit ];
+    maintainers = [ ];
+  };
 }
diff --git a/pkgs/development/python-modules/dbglib/default.nix b/pkgs/development/python-modules/dbglib/default.nix
index c928e5bb71e02..706d5018e2336 100644
--- a/pkgs/development/python-modules/dbglib/default.nix
+++ b/pkgs/development/python-modules/dbglib/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -14,12 +15,8 @@ buildPythonPackage rec {
     inherit pname version;
     sha256 = "7b4fd5c4949af435a7ab558f87b406acd5ddf9dc7f01fc3b3e99ebcec9a4674c";
   };
-  propagatedBuildInputs = [
-    poetry-core
-  ];
-  pythonImportsCheck = [
-    "dbglib"
-  ];
+  propagatedBuildInputs = [ poetry-core ];
+  pythonImportsCheck = [ "dbglib" ];
   meta = with lib; {
     homepage = "https://github.com/savioxavier/dbglib/";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/dbt-adapters/default.nix b/pkgs/development/python-modules/dbt-adapters/default.nix
new file mode 100644
index 0000000000000..50a775edfa4e9
--- /dev/null
+++ b/pkgs/development/python-modules/dbt-adapters/default.nix
@@ -0,0 +1,52 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  agate,
+  dbt-common,
+  mashumaro,
+  protobuf,
+  pytz,
+  typing-extensions,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "dbt-adapters";
+  version = "1.7.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "dbt-labs";
+    repo = "dbt-adapters";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-I3A3rIMpT+MAq+ebid9RMr6I3W1l4ir78UmfeEr5U3U=";
+  };
+
+  build-system = [ hatchling ];
+
+  dependencies = [
+    agate
+    dbt-common
+    mashumaro
+    protobuf
+    pytz
+    typing-extensions
+  ] ++ mashumaro.optional-dependencies.msgpack;
+
+  pythonImportsCheck = [ "dbt.adapters" ];
+
+  # circular dependencies
+  doCheck = false;
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "The set of adapter protocols and base functionality that supports integration with dbt-core";
+    homepage = "https://github.com/dbt-labs/dbt-adapters";
+    changelog = "https://github.com/dbt-labs/dbt-adapters/blob/${src.rev}/CHANGELOG.md";
+    license = lib.licenses.asl20;
+    maintainers = [ ];
+  };
+}
diff --git a/pkgs/development/python-modules/dbt-bigquery/default.nix b/pkgs/development/python-modules/dbt-bigquery/default.nix
index d6401c6502a0b..e9eb98b93ca39 100644
--- a/pkgs/development/python-modules/dbt-bigquery/default.nix
+++ b/pkgs/development/python-modules/dbt-bigquery/default.nix
@@ -1,21 +1,20 @@
-{ lib
-, agate
-, buildPythonPackage
-, dbt-core
-, fetchFromGitHub
-, google-cloud-bigquery
-, google-cloud-dataproc
-, google-cloud-storage
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools
-, urllib3
+{
+  lib,
+  agate,
+  buildPythonPackage,
+  dbt-core,
+  fetchFromGitHub,
+  google-cloud-bigquery,
+  google-cloud-dataproc,
+  google-cloud-storage,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "dbt-bigquery";
-  version = "1.7.7";
+  version = "1.8.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -24,15 +23,12 @@ buildPythonPackage rec {
     owner = "dbt-labs";
     repo = "dbt-bigquery";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+UF49ReSxKQ8ouutOv1b9JcU/6CNk7Yw8f1/tlRvwnU=";
+    hash = "sha256-SYQAFvu7nw54X4jxicEA9+lnvMgj/Yp460xz3BFGYCM=";
   };
 
-  pythonRelaxDeps = [
-    "agate"
-  ];
+  pythonRelaxDeps = [ "agate" ];
 
   build-system = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -44,17 +40,11 @@ buildPythonPackage rec {
     google-cloud-dataproc
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests/unit"
-  ];
+  pytestFlagsArray = [ "tests/unit" ];
 
-  pythonImportsCheck = [
-    "dbt.adapters.bigquery"
-  ];
+  pythonImportsCheck = [ "dbt.adapters.bigquery" ];
 
   meta = with lib; {
     description = "Plugin enabling dbt to operate on a BigQuery database";
diff --git a/pkgs/development/python-modules/dbt-common/default.nix b/pkgs/development/python-modules/dbt-common/default.nix
new file mode 100644
index 0000000000000..0bb43248db080
--- /dev/null
+++ b/pkgs/development/python-modules/dbt-common/default.nix
@@ -0,0 +1,74 @@
+{
+  lib,
+  agate,
+  buildPythonPackage,
+  colorama,
+  deepdiff,
+  fetchPypi,
+  hatchling,
+  isodate,
+  jinja2,
+  jsonschema,
+  mashumaro,
+  pathspec,
+  protobuf,
+  pytest-mock,
+  pytest-xdist,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  requests,
+  typing-extensions,
+}:
+
+buildPythonPackage rec {
+  pname = "dbt-common";
+  version = "1.8.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    pname = "dbt_common";
+    inherit version;
+    hash = "sha256-ehZ+a3zznnWMY9NJx9LfRtkV1vHiIH0HEhsYWfMbmb4=";
+  };
+
+  build-system = [ hatchling ];
+
+  pythonRelaxDeps = [ "agate" ];
+
+  dependencies = [
+    agate
+    colorama
+    deepdiff
+    isodate
+    jinja2
+    jsonschema
+    mashumaro
+    pathspec
+    protobuf
+    python-dateutil
+    requests
+    typing-extensions
+  ] ++ mashumaro.optional-dependencies.msgpack;
+
+  # Upstream stopped to tag the source fo rnow
+  doCheck = false;
+
+  nativeCheckInputs = [
+    pytest-mock
+    pytest-xdist
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "dbt_common" ];
+
+  meta = {
+    description = "Shared common utilities for dbt-core and adapter implementations use";
+    homepage = "https://github.com/dbt-labs/dbt-common";
+    changelog = "https://github.com/dbt-labs/dbt-common/blob/${version}/CHANGELOG.md";
+    license = lib.licenses.asl20;
+    maintainers = [ ];
+  };
+}
diff --git a/pkgs/development/python-modules/dbt-core/default.nix b/pkgs/development/python-modules/dbt-core/default.nix
index e440fb6919b11..4388c972c4d62 100644
--- a/pkgs/development/python-modules/dbt-core/default.nix
+++ b/pkgs/development/python-modules/dbt-core/default.nix
@@ -1,39 +1,35 @@
-{ lib
-, agate
-, buildPythonPackage
-, cffi
-, click
-, colorama
-, dbt-extractor
-, dbt-semantic-interfaces
-, fetchFromGitHub
-, hologram
-, idna
-, isodate
-, jinja2
-, logbook
-, mashumaro
-, minimal-snowplow-tracker
-, networkx
-, packaging
-, pathspec
-, protobuf
-, python3
-, pythonOlder
-, pythonRelaxDepsHook
-, pytz
-, pyyaml
-, requests
-, setuptools
-, sqlparse
-, typing-extensions
-, urllib3
-, werkzeug
+{
+  lib,
+  agate,
+  buildPythonPackage,
+  click,
+  daff,
+  dbt-adapters,
+  dbt-common,
+  dbt-extractor,
+  dbt-semantic-interfaces,
+  fetchFromGitHub,
+  jinja2,
+  logbook,
+  mashumaro,
+  minimal-snowplow-tracker,
+  networkx,
+  packaging,
+  pathspec,
+  protobuf,
+  callPackage,
+  pythonOlder,
+  pytz,
+  pyyaml,
+  requests,
+  setuptools,
+  sqlparse,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "dbt-core";
-  version = "1.7.12";
+  version = "1.8.7";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -42,7 +38,7 @@ buildPythonPackage rec {
     owner = "dbt-labs";
     repo = "dbt-core";
     rev = "refs/tags/v${version}";
-    hash = "sha256-mkqtlItr6oRsF5S+CPw4fAP/INJ2yw3vcKxEYeB3ItI=";
+    hash = "sha256-1NvdRAr8T2dDgtyj5tUIqhjHIu4sZYS+oj7hOMEqs0A=";
   };
 
   sourceRoot = "${src.name}/core";
@@ -50,6 +46,7 @@ buildPythonPackage rec {
   pythonRelaxDeps = [
     "agate"
     "click"
+    "dbt-semantic-interfaces"
     "mashumaro"
     "networkx"
     "logbook"
@@ -58,20 +55,17 @@ buildPythonPackage rec {
   ];
 
   build-system = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
   dependencies = [
     agate
-    cffi
     click
-    colorama
+    daff
+    dbt-adapters
+    dbt-common
     dbt-extractor
     dbt-semantic-interfaces
-    hologram
-    idna
-    isodate
     jinja2
     logbook
     mashumaro
@@ -85,15 +79,13 @@ buildPythonPackage rec {
     requests
     sqlparse
     typing-extensions
-    urllib3
-    werkzeug
   ] ++ mashumaro.optional-dependencies.msgpack;
 
   # tests exist for the dbt tool but not for this package specifically
   doCheck = false;
 
   passthru = {
-    withAdapters = python3.pkgs.callPackage ./with-adapters.nix { };
+    withAdapters = callPackage ./with-adapters.nix { };
   };
 
   meta = with lib; {
@@ -117,7 +109,10 @@ buildPythonPackage rec {
     homepage = "https://github.com/dbt-labs/dbt-core";
     changelog = "https://github.com/dbt-labs/dbt-core/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ mausch tjni ];
+    maintainers = with maintainers; [
+      mausch
+      tjni
+    ];
     mainProgram = "dbt";
   };
 }
diff --git a/pkgs/development/python-modules/dbt-core/with-adapters.nix b/pkgs/development/python-modules/dbt-core/with-adapters.nix
index 006f4a96b853b..b5fe0a527f0ea 100644
--- a/pkgs/development/python-modules/dbt-core/with-adapters.nix
+++ b/pkgs/development/python-modules/dbt-core/with-adapters.nix
@@ -1,18 +1,24 @@
-{ python3
-, dbt-bigquery
-, dbt-core
-, dbt-postgres
-, dbt-redshift
-, dbt-snowflake
+{
+  python,
+  dbt-bigquery,
+  dbt-core,
+  dbt-postgres,
+  dbt-redshift,
+  dbt-snowflake,
 }:
 let
   adapters = {
-    inherit dbt-bigquery dbt-postgres dbt-redshift dbt-snowflake;
+    inherit
+      dbt-bigquery
+      dbt-postgres
+      dbt-redshift
+      dbt-snowflake
+      ;
   };
 in
-adapterFun: (python3.buildEnv.override {
+adapterFun:
+(python.buildEnv.override {
   extraLibs = [ dbt-core ] ++ (adapterFun adapters);
   ignoreCollisions = true;
-}).overrideAttrs {
-  meta.mainProgram = dbt-core.meta.mainProgram;
-}
+}).overrideAttrs
+  { meta.mainProgram = dbt-core.meta.mainProgram; }
diff --git a/pkgs/development/python-modules/dbt-extractor/default.nix b/pkgs/development/python-modules/dbt-extractor/default.nix
index 74b1bb4d3d24c..89066e5c9c506 100644
--- a/pkgs/development/python-modules/dbt-extractor/default.nix
+++ b/pkgs/development/python-modules/dbt-extractor/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, libiconv
-, pythonOlder
-, rustPlatform
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  libiconv,
+  pythonOlder,
+  rustPlatform,
 }:
 
 buildPythonPackage rec {
@@ -32,22 +33,21 @@ buildPythonPackage rec {
     rustPlatform.maturinBuildHook
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [
-    libiconv
-  ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
   # no python tests exist
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dbt_extractor"
-  ];
+  pythonImportsCheck = [ "dbt_extractor" ];
 
   meta = with lib; {
-    description = "A tool that processes the most common jinja value templates in dbt model files";
+    description = "Tool that processes the most common jinja value templates in dbt model files";
     homepage = "https://github.com/dbt-labs/dbt-extractor";
     changelog = "https://github.com/dbt-labs/dbt-extractor/blob/main/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ mausch tjni ];
+    maintainers = with maintainers; [
+      mausch
+      tjni
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/dbt-postgres/default.nix b/pkgs/development/python-modules/dbt-postgres/default.nix
index d2669cb2357e4..f3503eac82d02 100644
--- a/pkgs/development/python-modules/dbt-postgres/default.nix
+++ b/pkgs/development/python-modules/dbt-postgres/default.nix
@@ -1,30 +1,40 @@
-{ lib
-, agate
-, buildPythonPackage
-, dbt-core
-, psycopg2
-, pythonOlder
-, setuptools
+{
+  lib,
+  agate,
+  buildPythonPackage,
+  fetchFromGitHub,
+  dbt-adapters,
+  dbt-common,
+  dbt-core,
+  hatchling,
+  psycopg2,
+  pythonOlder,
 }:
 
-buildPythonPackage {
+buildPythonPackage rec {
   pname = "dbt-postgres";
+  version = "1.8.2";
   pyproject = true;
 
-  inherit (dbt-core) version src;
+  disabled = pythonOlder "3.8";
 
-  disabled = pythonOlder "3.7";
-
-  sourceRoot = "${dbt-core.src.name}/plugins/postgres";
+  src = fetchFromGitHub {
+    owner = "dbt-labs";
+    repo = "dbt-postgres";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-E7Y2lY8aCiAZx5sLWwpOBLTrdOsCQAdWWJTvR2jGOaA=";
+  };
 
   env.DBT_PSYCOPG2_NAME = "psycopg2";
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ hatchling ];
+
+  pythonRemoveDeps = [ "psycopg2-binary" ];
 
   dependencies = [
     agate
+    dbt-adapters
+    dbt-common
     dbt-core
     psycopg2
   ];
@@ -32,9 +42,7 @@ buildPythonPackage {
   # tests exist for the dbt tool but not for this package specifically
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dbt.adapters.postgres"
-  ];
+  pythonImportsCheck = [ "dbt.adapters.postgres" ];
 
   meta = with lib; {
     description = "Plugin enabling dbt to work with a Postgres database";
diff --git a/pkgs/development/python-modules/dbt-redshift/default.nix b/pkgs/development/python-modules/dbt-redshift/default.nix
index ea543b6ee4af5..deffc3b313d13 100644
--- a/pkgs/development/python-modules/dbt-redshift/default.nix
+++ b/pkgs/development/python-modules/dbt-redshift/default.nix
@@ -1,20 +1,20 @@
-{ lib
-, agate
-, boto3
-, buildPythonPackage
-, dbt-core
-, dbt-postgres
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, redshift-connector
-, setuptools
+{
+  lib,
+  agate,
+  boto3,
+  buildPythonPackage,
+  dbt-core,
+  dbt-postgres,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  redshift-connector,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "dbt-redshift";
-  version = "1.7.7";
+  version = "1.8.1";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "dbt-labs";
     repo = "dbt-redshift";
     rev = "refs/tags/v${version}";
-    hash = "sha256-DKqJ/8hEPe9O9YrAjrTL2Gh1lj6QrdtHtd7aarZ7GkQ=";
+    hash = "sha256-SmFN1GXX14L+3jtAo5Vqm53HLRaear2U/KI2Afx0ztU=";
   };
 
   pythonRelaxDeps = [
@@ -31,13 +31,8 @@ buildPythonPackage rec {
     "redshift-connector"
   ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     agate
@@ -47,17 +42,11 @@ buildPythonPackage rec {
     redshift-connector
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests/unit"
-  ];
+  pytestFlagsArray = [ "tests/unit" ];
 
-  pythonImportsCheck = [
-    "dbt.adapters.redshift"
-  ];
+  pythonImportsCheck = [ "dbt.adapters.redshift" ];
 
   meta = with lib; {
     description = "Plugin enabling dbt to work with Amazon Redshift";
diff --git a/pkgs/development/python-modules/dbt-semantic-interfaces/default.nix b/pkgs/development/python-modules/dbt-semantic-interfaces/default.nix
index d63a0cee0447a..9eb306074a573 100644
--- a/pkgs/development/python-modules/dbt-semantic-interfaces/default.nix
+++ b/pkgs/development/python-modules/dbt-semantic-interfaces/default.nix
@@ -1,26 +1,25 @@
-{ lib
-, buildPythonPackage
-, click
-, dateutils
-, dbt-postgres
-, fetchFromGitHub
-, hatchling
-, pythonRelaxDepsHook
-, hypothesis
-, importlib-metadata
-, jinja2
-, jsonschema
-, more-itertools
-, pydantic
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  click,
+  dateutils,
+  fetchFromGitHub,
+  hatchling,
+  hypothesis,
+  importlib-metadata,
+  jinja2,
+  jsonschema,
+  more-itertools,
+  pydantic,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "dbt-semantic-interfaces";
-  version = "0.4.4";
+  version = "0.6.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -29,16 +28,13 @@ buildPythonPackage rec {
     owner = "dbt-labs";
     repo = "dbt-semantic-interfaces";
     rev = "refs/tags/v${version}";
-    hash = "sha256-uvwcnOKjwxEmA+/QRGSRofpoE4jZzmE02mGSDLINrJw=";
+    hash = "sha256-V6yMT9Fkug+T3smBEu0Szg5GPMRxEOZc4gtJybWXbrs=";
   };
 
-  pythonRelaxDeps = [
-    "importlib-metadata"
-  ];
+  pythonRelaxDeps = [ "importlib-metadata" ];
 
   build-system = [
     hatchling
-    pythonRelaxDepsHook
   ];
 
   dependencies = [
@@ -58,9 +54,7 @@ buildPythonPackage rec {
     hypothesis
   ];
 
-  pythonImportsCheck = [
-    "dbt_semantic_interfaces"
-  ];
+  pythonImportsCheck = [ "dbt_semantic_interfaces" ];
 
   meta = with lib; {
     description = "Shared interfaces used by dbt-core and MetricFlow projects";
diff --git a/pkgs/development/python-modules/dbt-snowflake/default.nix b/pkgs/development/python-modules/dbt-snowflake/default.nix
index a25ffaba5581b..17e9cd092709d 100644
--- a/pkgs/development/python-modules/dbt-snowflake/default.nix
+++ b/pkgs/development/python-modules/dbt-snowflake/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, dbt-core
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, snowflake-connector-python
+{
+  lib,
+  buildPythonPackage,
+  dbt-core,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  snowflake-connector-python,
 }:
 
 buildPythonPackage rec {
   pname = "dbt-snowflake";
-  version = "1.7.3";
+  version = "1.8.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -19,29 +20,21 @@ buildPythonPackage rec {
     owner = "dbt-labs";
     repo = "dbt-snowflake";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ksnLQdoXR8KVtYTFdlaWT8UYjAsLNyEVVap/QHtm+j8=";
+    hash = "sha256-jvhjf+Ce/oyHXFxMryz5Uy6Hq5Sx6vKgaGEJVAzqSdA=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     dbt-core
     snowflake-connector-python
   ] ++ snowflake-connector-python.optional-dependencies.secure-local-storage;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests/unit"
-  ];
+  pytestFlagsArray = [ "tests/unit" ];
 
-  pythonImportsCheck = [
-    "dbt.adapters.snowflake"
-  ];
+  pythonImportsCheck = [ "dbt.adapters.snowflake" ];
 
   meta = with lib; {
     description = "Plugin enabling dbt to work with Snowflake";
diff --git a/pkgs/development/python-modules/dbus-client-gen/default.nix b/pkgs/development/python-modules/dbus-client-gen/default.nix
index fdc173258e50e..bdc13650ff710 100644
--- a/pkgs/development/python-modules/dbus-client-gen/default.nix
+++ b/pkgs/development/python-modules/dbus-client-gen/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -14,7 +15,7 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "A Python Library for Generating D-Bus Client Code";
+    description = "Python Library for Generating D-Bus Client Code";
     homepage = "https://github.com/stratis-storage/dbus-client-gen";
     license = licenses.mpl20;
     maintainers = with maintainers; [ nickcao ];
diff --git a/pkgs/development/python-modules/dbus-deviation/default.nix b/pkgs/development/python-modules/dbus-deviation/default.nix
index 739c9ba43aca8..3f455b68a9612 100644
--- a/pkgs/development/python-modules/dbus-deviation/default.nix
+++ b/pkgs/development/python-modules/dbus-deviation/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, lxml
-, setuptools
-, setuptools-git
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  lxml,
+  setuptools,
+  setuptools-git,
 }:
 
 buildPythonPackage rec {
@@ -25,16 +26,14 @@ buildPythonPackage rec {
     setuptools-git
   ];
 
-  propagatedBuildInputs = [
-    lxml
-  ];
+  propagatedBuildInputs = [ lxml ];
 
   pythonImportsCheck = [ "dbusdeviation" ];
 
   meta = with lib; {
     homepage = "https://tecnocode.co.uk/dbus-deviation/";
-    description = "A project for parsing D-Bus introspection XML and processing it in various ways";
+    description = "Project for parsing D-Bus introspection XML and processing it in various ways";
     license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [ lilyinstarlight ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dbus-fast/default.nix b/pkgs/development/python-modules/dbus-fast/default.nix
index d4db4490415b3..552207472c4dd 100644
--- a/pkgs/development/python-modules/dbus-fast/default.nix
+++ b/pkgs/development/python-modules/dbus-fast/default.nix
@@ -1,55 +1,52 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  cython,
+  dbus,
+  fetchFromGitHub,
+  poetry-core,
+  pytest,
+  pytest-asyncio,
+  pytest-cov-stub,
+  python,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "dbus-fast";
-  version = "2.21.1";
-  format = "pyproject";
+  version = "2.24.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "Bluetooth-Devices";
-    repo = pname;
+    repo = "dbus-fast";
     rev = "refs/tags/v${version}";
-    hash = "sha256-L3PZjxbcVfqWktWuN5l8JxfR1GyxuA+1ZtO/W2YqFZA=";
+    hash = "sha256-8M2SRyAkuxNbwT5NRN6cwJ82OtprfBZXi9Yqwh1NLVY=";
   };
 
   # The project can build both an optimized cython version and an unoptimized
   # python version. This ensures we fail if we build the wrong one.
   env.REQUIRE_CYTHON = 1;
 
-  nativeBuildInputs = [
+  build-system = [
     cython
     poetry-core
     setuptools
-    wheel
   ];
 
-  propagatedBuildInputs = [
-    async-timeout
-  ];
+  dependencies = [ async-timeout ];
 
   nativeCheckInputs = [
+    dbus
+    pytest
     pytest-asyncio
-    pytestCheckHook
+    pytest-cov-stub
   ];
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace " --cov=dbus_fast --cov-report=term-missing:skip-covered" ""
-  '';
-
   pythonImportsCheck = [
     "dbus_fast"
     "dbus_fast.aio"
@@ -57,51 +54,21 @@ buildPythonPackage rec {
     "dbus_fast.message"
   ];
 
-  disabledTests = [
-    # Test require a running Dbus instance
-    "test_aio_big_message"
-    "test_aio_properties"
-    "test_aio_proxy_object"
-    "test_bus_disconnect_before_reply"
-    "test_export_alias"
-    "test_export_introspection"
-    "test_export_unexport"
-    "test_fast_disconnect"
-    "test_glib_big_message"
-    "test_high_level_service_fd_passing"
-    "test_interface_add_remove_signal"
-    "test_introspectable_interface"
-    "test_methods"
-    "test_multiple_flags_in_message"
-    "test_name_requests"
-    "test_object_manager"
-    "test_peer_interface"
-    "test_property_changed_signal"
-    "test_property_changed_signal"
-    "test_property_methods"
-    "test_sending_file_descriptor_low_level"
-    "test_sending_file_descriptor_with_proxy"
-    "test_sending_messages_between_buses"
-    "test_sending_signals_between_buses"
-    "test_signals"
-    "test_standard_interface_properties"
-    "test_standard_interfaces"
-    "test_tcp_connection_with_forwarding"
-    "test_unexpected_disconnect"
-    # NameError: name '_cast_uint32_native' is not defined
-    "test_unmarshall_bluez_interfaces_added_message"
-    "test_unmarshall_bluez_interfaces_removed_message"
-    "test_unmarshall_bluez_message"
-    "test_unmarshall_bluez_properties_changed_with_service_data"
-    "test_unmarshall_can_resume"
-    "test_unmarshalling_with_table"
-    "test_ay_buffer"
-  ];
+  checkPhase = ''
+    runHook preCheck
+
+    # test_peer_interface times out
+    dbus-run-session \
+      --config-file=${dbus}/share/dbus-1/session.conf \
+      ${python.interpreter} -m pytest -k "not test_peer_interface"
+
+    runHook postCheck
+  '';
 
   meta = with lib; {
     description = "Faster version of dbus-next";
     homepage = "https://github.com/bluetooth-devices/dbus-fast";
-    changelog = "https://github.com/Bluetooth-Devices/dbus-fast/releases/tag/v${version}";
+    changelog = "https://github.com/Bluetooth-Devices/dbus-fast/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/dbus-next/default.nix b/pkgs/development/python-modules/dbus-next/default.nix
index 0ce5b2f903948..117fa8c089481 100644
--- a/pkgs/development/python-modules/dbus-next/default.nix
+++ b/pkgs/development/python-modules/dbus-next/default.nix
@@ -1,23 +1,30 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, dbus, pytest, pytest-cov, pytest-asyncio, pytest-timeout
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  setuptools,
+  dbus,
+  pytest,
+  pytest-cov,
+  pytest-asyncio,
+  pytest-timeout,
 }:
 
 buildPythonPackage rec {
   pname = "dbus-next";
   version = "0.2.3";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "altdesktop";
     repo = "python-dbus-next";
-    rev = "v${version}";
+    rev = "refs/tags/v${version}";
     hash = "sha256-EKEQZFRUe+E65Z6DNCJFL5uCI5kbXrN7Tzd4O0X5Cqo=";
   };
 
+  build-system = [ setuptools ];
+
   nativeCheckInputs = [
     dbus
     pytest
@@ -30,17 +37,18 @@ buildPythonPackage rec {
   # test_tcp_connection_with_forwarding fails due to dbus
   # creating unix socket anyway on v1.14.4
   checkPhase = ''
+    runHook preCheck
     dbus-run-session --config-file=${dbus}/share/dbus-1/session.conf \
       ${python.interpreter} -m pytest -sv --cov=dbus_next \
       -k "not test_peer_interface and not test_tcp_connection_with_forwarding"
+    runHook postCheck
   '';
 
   meta = with lib; {
-    description = "A zero-dependency DBus library for Python with asyncio support";
+    description = "Zero-dependency DBus library for Python with asyncio support";
     homepage = "https://github.com/altdesktop/python-dbus-next";
     changelog = "https://github.com/altdesktop/python-dbus-next/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ sfrijters ];
-    broken = stdenv.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/dbus-python-client-gen/default.nix b/pkgs/development/python-modules/dbus-python-client-gen/default.nix
index 15b696f62bdb8..5b4bd5121d052 100644
--- a/pkgs/development/python-modules/dbus-python-client-gen/default.nix
+++ b/pkgs/development/python-modules/dbus-python-client-gen/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, into-dbus-python
-, dbus-python
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  into-dbus-python,
+  dbus-python,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,14 +27,12 @@ buildPythonPackage rec {
     dbus-python
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "dbus_python_client_gen" ];
 
   meta = with lib; {
-    description = "A Python library for generating dbus-python client code";
+    description = "Python library for generating dbus-python client code";
     homepage = "https://github.com/stratis-storage/dbus-python-client-gen";
     changelog = "https://github.com/stratis-storage/dbus-python-client-gen/blob/v${version}/CHANGES.txt";
     license = licenses.mpl20;
diff --git a/pkgs/development/python-modules/dbus-python/default.nix b/pkgs/development/python-modules/dbus-python/default.nix
index be7504e5dc372..b6664daa25768 100644
--- a/pkgs/development/python-modules/dbus-python/default.nix
+++ b/pkgs/development/python-modules/dbus-python/default.nix
@@ -1,49 +1,106 @@
-{ lib, stdenv, fetchPypi, buildPythonPackage, python, pkg-config, dbus, dbus-glib, isPyPy
-, ncurses, pygobject3, isPy3k, pythonAtLeast }:
-
-buildPythonPackage rec {
-  pname = "dbus-python";
-  version = "1.2.18";
-
-  # ModuleNotFoundError: No module named 'distutils'
-  disabled = isPyPy || pythonAtLeast "3.12";
-  format = "other";
-  outputs = [ "out" "dev" ];
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0q3jrw515z98mqdk9x822nd95rky455zz9876f1nqna5igkd3gcj";
-  };
-
-  patches = [
-    ./fix-includedir.patch
-  ];
-
-  preConfigure = lib.optionalString (lib.versionAtLeast stdenv.hostPlatform.darwinMinVersion "11" && stdenv.isDarwin) ''
-    MACOSX_DEPLOYMENT_TARGET=10.16
-  '';
-
-  configureFlags = [
-    "PYTHON=${python.pythonOnBuildForHost.interpreter}"
-  ];
-
-  nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ dbus dbus-glib ]
-    # My guess why it's sometimes trying to -lncurses.
-    # It seems not to retain the dependency anyway.
-    ++ lib.optional (! python ? modules) ncurses;
-
-  doCheck = isPy3k;
-  nativeCheckInputs = [ dbus.out pygobject3 ];
-
-  postInstall = ''
-    cp -r dbus_python.egg-info $out/${python.sitePackages}/
-  '';
-
-  meta = with lib; {
-    description = "Python DBus bindings";
-    license = licenses.mit;
-    platforms = dbus.meta.platforms;
-    maintainers = with maintainers; [ ];
-  };
-}
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  fetchpatch,
+  isPyPy,
+  python,
+
+  # build-system
+  meson,
+  meson-python,
+  pkg-config,
+
+  # native dependencies
+  dbus,
+  dbus-glib,
+}:
+
+lib.fix (
+  finalPackage:
+  buildPythonPackage rec {
+    pname = "dbus-python";
+    version = "1.3.2";
+    pyproject = true;
+
+    disabled = isPyPy;
+
+    outputs = [
+      "out"
+      "dev"
+    ];
+
+    src = fetchPypi {
+      inherit pname version;
+      hash = "sha256-rWeBkwhhi1BpU3viN/jmjKHH/Mle5KEh/mhFsUGCSPg=";
+    };
+
+    patches = [
+      # reduce required dependencies
+      # https://gitlab.freedesktop.org/dbus/dbus-python/-/merge_requests/23
+      (fetchpatch {
+        url = "https://gitlab.freedesktop.org/dbus/dbus-python/-/commit/d5e19698a8d6e1485f05b67a5b2daa2392819aaf.patch";
+        hash = "sha256-Rmj/ByRLiLnIF3JsMBElJugxsG8IARcBdixLhoWgIYU=";
+      })
+    ];
+
+    postPatch = ''
+      # we provide patchelf natively, not through the python package
+      sed -i '/patchelf/d' pyproject.toml
+
+      # dont run autotols configure phase
+      rm configure.ac configure
+
+      patchShebangs test/*.sh
+    '';
+
+    nativeBuildInputs = [
+      dbus # build systems checks for `dbus-run-session` in PATH
+      meson
+      meson-python
+      pkg-config
+    ];
+
+    buildInputs = [
+      dbus
+      dbus-glib
+    ];
+
+    pypaBuildFlags = [
+      # Don't discard meson build directory, still needed for tests!
+      "-Cbuild-dir=_meson-build"
+    ];
+
+    mesonFlags = [ (lib.mesonBool "tests" finalPackage.doInstallCheck) ];
+
+    # workaround bug in meson-python
+    # https://github.com/mesonbuild/meson-python/issues/240
+    postInstall = ''
+      mkdir -p $dev/lib
+      mv $out/${python.sitePackages}/.dbus_python.mesonpy.libs/pkgconfig/ $dev/lib
+    '';
+
+    # make sure the Cflags in the pkgconfig file are correct and make the structure backwards compatible
+    postFixup = ''
+      ln -s $dev/include/*/dbus_python/dbus-1.0/ $dev/include/dbus-1.0
+    '';
+
+    nativeCheckInputs = [ dbus.out ];
+
+    checkPhase = ''
+      runHook preCheck
+
+      meson test -C _meson-build --no-rebuild --print-errorlogs
+
+      runHook postCheck
+    '';
+
+    meta = with lib; {
+      description = "Python DBus bindings";
+      homepage = "https://gitlab.freedesktop.org/dbus/dbus-python";
+      license = licenses.mit;
+      platforms = dbus.meta.platforms;
+      maintainers = [ ];
+    };
+  }
+)
diff --git a/pkgs/development/python-modules/dbus-python/fix-includedir.patch b/pkgs/development/python-modules/dbus-python/fix-includedir.patch
deleted file mode 100644
index e3bb0682b5c44..0000000000000
--- a/pkgs/development/python-modules/dbus-python/fix-includedir.patch
+++ /dev/null
@@ -1,8 +0,0 @@
---- a/dbus-python.pc.in
-+++ b/dbus-python.pc.in
-@@ -9,4 +9,4 @@
- Description: Python bindings for D-Bus
- Requires: dbus-1 >= 1.0
- Version: @VERSION@
--Cflags: -I${includedir}
-+Cflags: -I${includedir}/dbus-1.0
diff --git a/pkgs/development/python-modules/dbus-signature-pyparsing/default.nix b/pkgs/development/python-modules/dbus-signature-pyparsing/default.nix
index 083a4d7dc7dc3..aa3892ee9aaa8 100644
--- a/pkgs/development/python-modules/dbus-signature-pyparsing/default.nix
+++ b/pkgs/development/python-modules/dbus-signature-pyparsing/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyparsing
-, pytestCheckHook
-, hypothesis
-, hs-dbus-signature
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyparsing,
+  pytestCheckHook,
+  hypothesis,
+  hs-dbus-signature,
 }:
 
 buildPythonPackage rec {
@@ -29,7 +30,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "dbus_signature_pyparsing" ];
 
   meta = with lib; {
-    description = "A Parser for a D-Bus Signature";
+    description = "Parser for a D-Bus Signature";
     homepage = "https://github.com/stratis-storage/dbus-signature-pyparsing";
     license = licenses.asl20;
     maintainers = with maintainers; [ nickcao ];
diff --git a/pkgs/development/python-modules/dbutils/default.nix b/pkgs/development/python-modules/dbutils/default.nix
index 570f770e7777b..2995db09d4a67 100644
--- a/pkgs/development/python-modules/dbutils/default.nix
+++ b/pkgs/development/python-modules/dbutils/default.nix
@@ -1,35 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dbutils";
-  version = "3.0.3";
-  format = "setuptools";
+  version = "3.1.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit version;
     pname = "DBUtils";
-    hash = "sha256-jkhWWxKtK0sfIU3gKU3utLKFePWyq7QNaMKSS2TX4Ac=";
+    hash = "sha256-6lKLoRBjJA7qgjRevG98yTJMBuQulCCwC80kWpW/zCQ=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "dbutils"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  meta = with lib; {
+  pythonImportsCheck = [ "dbutils" ];
+
+  meta = {
     description = "Database connections for multi-threaded environments";
     homepage = "https://webwareforpython.github.io/DBUtils/";
-    license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    changelog = "https://webwareforpython.github.io/DBUtils/changelog.html";
+    license = lib.licenses.mit;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dcmstack/default.nix b/pkgs/development/python-modules/dcmstack/default.nix
index 8e7b74fc8dd38..fd84640e8d788 100644
--- a/pkgs/development/python-modules/dcmstack/default.nix
+++ b/pkgs/development/python-modules/dcmstack/default.nix
@@ -1,27 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, nibabel
-, pydicom
-, pylibjpeg-libjpeg
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  nibabel,
+  pydicom,
+  pylibjpeg-libjpeg,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "dcmstack";
   version = "0.9";
-  format = "setuptools";
+  pyproject = true;
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "moloney";
-    repo = pname;
+    repo = "dcmstack";
     rev = "refs/tags/v${version}";
     hash = "sha256-GVzih9H2m2ZGSuZMRuaDG78b95PI3j0WQw5M3l4KNCs=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     nibabel
     pydicom
     pylibjpeg-libjpeg
@@ -29,9 +34,16 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ pytestCheckHook ];
 
+  pythonImportsCheck = [ "dcmstack" ];
+
+  disabledTestPaths = [
+    # AttributeError: 'TestNitoolCli' object has no attribute 'out_dir'
+    "test/test_cli.py"
+  ];
+
   meta = with lib; {
-    homepage = "https://github.com/moloney/dcmstack";
     description = "DICOM to Nifti conversion preserving metadata";
+    homepage = "https://github.com/moloney/dcmstack";
     license = licenses.mit;
     maintainers = with maintainers; [ bcdarwin ];
   };
diff --git a/pkgs/development/python-modules/dctorch/default.nix b/pkgs/development/python-modules/dctorch/default.nix
index d44d00629cffc..90bfbceae4c26 100644
--- a/pkgs/development/python-modules/dctorch/default.nix
+++ b/pkgs/development/python-modules/dctorch/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, poetry-core
-, numpy
-, scipy
-, torch
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  numpy,
+  scipy,
+  torch,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-TmfLAkiofrQNWYBhIlY4zafbZPgFftISCGloO/rlEG4=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     numpy
@@ -27,9 +26,7 @@ buildPythonPackage rec {
     torch
   ];
 
-  pythonImportsCheck = [
-    "dctorch"
-  ];
+  pythonImportsCheck = [ "dctorch" ];
 
   doCheck = false; # no tests
 
diff --git a/pkgs/development/python-modules/ddt/default.nix b/pkgs/development/python-modules/ddt/default.nix
index 1923fb5733c14..541ac2a3cdda0 100644
--- a/pkgs/development/python-modules/ddt/default.nix
+++ b/pkgs/development/python-modules/ddt/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-
-# build-system
-, setuptools
-
-# tests
-, aiounittest
-, mock
-, pytestCheckHook
-, pyyaml
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+
+  # build-system
+  setuptools,
+
+  # tests
+  aiounittest,
+  mock,
+  pytestCheckHook,
+  pyyaml,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-0hXWsIOWMBPEoZseTc1qlugOQ6t3UZWXpqz88umj4Es=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # aiounittest is not compatible with Python 3.12.
   doCheck = pythonOlder "3.12";
@@ -43,7 +42,7 @@ buildPythonPackage rec {
     changelog = "https://github.com/datadriventests/ddt/releases/tag/${version}";
     description = "Data-Driven/Decorated Tests, a library to multiply test cases";
     homepage = "https://github.com/txels/ddt";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/deal-solver/default.nix b/pkgs/development/python-modules/deal-solver/default.nix
index c47d5d1c92b4c..8acefba226a8b 100644
--- a/pkgs/development/python-modules/deal-solver/default.nix
+++ b/pkgs/development/python-modules/deal-solver/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, flit-core
-, z3-solver
-, astroid
-, pytestCheckHook
-, hypothesis
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  flit-core,
+  z3-solver,
+  astroid,
+  pytestCheckHook,
+  hypothesis,
 }:
 
 buildPythonPackage rec {
@@ -26,7 +26,6 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     flit-core
-    pythonRelaxDepsHook
   ];
 
   # z3 does not provide a dist-info, so python-runtime-deps-check will fail
diff --git a/pkgs/development/python-modules/deal/default.nix b/pkgs/development/python-modules/deal/default.nix
index 7c75c5b0f608f..2af4c31acca75 100644
--- a/pkgs/development/python-modules/deal/default.nix
+++ b/pkgs/development/python-modules/deal/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, astroid
-, buildPythonPackage
-, deal-solver
-, docstring-parser
-, fetchFromGitHub
-, flit-core
-, hypothesis
-, marshmallow
-, pygments
-, pytestCheckHook
-, pythonOlder
-, sphinx
-, typeguard
-, urllib3
-, vaa
+{
+  lib,
+  astroid,
+  buildPythonPackage,
+  deal-solver,
+  docstring-parser,
+  fetchFromGitHub,
+  flit-core,
+  hypothesis,
+  marshmallow,
+  pygments,
+  pytestCheckHook,
+  pythonOlder,
+  sphinx,
+  typeguard,
+  urllib3,
+  vaa,
 }:
 
 buildPythonPackage rec {
@@ -39,9 +40,7 @@ buildPythonPackage rec {
       --replace-fail '"--cov-report=term-missing:skip-covered",' ""
   '';
 
-  build-system = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
   dependencies = [
     astroid
@@ -89,9 +88,7 @@ buildPythonPackage rec {
     "tests/test_testing.py"
   ];
 
-  pythonImportsCheck = [
-    "deal"
-  ];
+  pythonImportsCheck = [ "deal" ];
 
   meta = with lib; {
     description = "Library for design by contract (DbC) and checking values, exceptions, and side-effects";
diff --git a/pkgs/development/python-modules/deap/default.nix b/pkgs/development/python-modules/deap/default.nix
index aa581062c5f9d..ec804ae1ba936 100644
--- a/pkgs/development/python-modules/deap/default.nix
+++ b/pkgs/development/python-modules/deap/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, matplotlib
-, numpy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  matplotlib,
+  numpy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,13 +17,19 @@ buildPythonPackage rec {
     hash = "sha256-zAHemJLfp9G8mAPasoiS/q0XfwGCyB20c2CiQOrXeP8=";
   };
 
-  propagatedBuildInputs = [ matplotlib numpy ];
+  propagatedBuildInputs = [
+    matplotlib
+    numpy
+  ];
   nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A novel evolutionary computation framework for rapid prototyping and testing of ideas";
+    description = "Novel evolutionary computation framework for rapid prototyping and testing of ideas";
     homepage = "https://github.com/DEAP/deap";
     license = licenses.lgpl3Plus;
-    maintainers = with maintainers; [ getpsyched psyanticy ];
+    maintainers = with maintainers; [
+      getpsyched
+      psyanticy
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/debian-inspector/default.nix b/pkgs/development/python-modules/debian-inspector/default.nix
index 0add3d134ec72..b5785b93132fe 100644
--- a/pkgs/development/python-modules/debian-inspector/default.nix
+++ b/pkgs/development/python-modules/debian-inspector/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, chardet
-, attrs
-, commoncode
-, pytestCheckHook
-, setuptools-scm
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  chardet,
+  attrs,
+  commoncode,
+  pytestCheckHook,
+  setuptools-scm,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "debian-inspector";
   version = "31.1.0";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     pname = "debian_inspector";
@@ -24,28 +25,28 @@ buildPythonPackage rec {
 
   dontConfigure = true;
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     chardet
     attrs
-    commoncode
   ];
 
   nativeCheckInputs = [
+    commoncode
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "debian_inspector"
-  ];
+  pythonImportsCheck = [ "debian_inspector" ];
 
   meta = with lib; {
     description = "Utilities to parse Debian package, copyright and control files";
     homepage = "https://github.com/nexB/debian-inspector";
-    license = with licenses; [ asl20 bsd3 mit ];
+    license = with licenses; [
+      asl20
+      bsd3
+      mit
+    ];
     maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/debian/default.nix b/pkgs/development/python-modules/debian/default.nix
index 70b33cfa7a3b7..f20370b864989 100644
--- a/pkgs/development/python-modules/debian/default.nix
+++ b/pkgs/development/python-modules/debian/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, chardet
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  chardet,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-jPZ3ow28tL56mVNsF+ETCKgnpNIgKNxZpn9sbdPw9Yw=";
   };
 
-  propagatedBuildInputs = [
-    chardet
-  ];
+  propagatedBuildInputs = [ chardet ];
 
   # No tests in archive
   doCheck = false;
 
-  pythonImportsCheck = [
-    "debian"
-  ];
+  pythonImportsCheck = [ "debian" ];
 
   meta = with lib; {
     description = "Debian package related modules";
diff --git a/pkgs/development/python-modules/debianbts/default.nix b/pkgs/development/python-modules/debianbts/default.nix
index 013f8724067ce..3131f9077d10d 100644
--- a/pkgs/development/python-modules/debianbts/default.nix
+++ b/pkgs/development/python-modules/debianbts/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pysimplesoap
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pysimplesoap,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,20 +23,14 @@ buildPythonPackage rec {
     sed -i "/--cov/d" pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pysimplesoap
-  ];
+  propagatedBuildInputs = [ pysimplesoap ];
 
   # Most tests require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "debianbts"
-  ];
+  pythonImportsCheck = [ "debianbts" ];
 
   meta = with lib; {
     description = "Python interface to Debian's Bug Tracking System";
diff --git a/pkgs/development/python-modules/debtcollector/default.nix b/pkgs/development/python-modules/debtcollector/default.nix
index 14fdff4243caf..d9b2011b17f2f 100644
--- a/pkgs/development/python-modules/debtcollector/default.nix
+++ b/pkgs/development/python-modules/debtcollector/default.nix
@@ -1,18 +1,39 @@
-{ lib, buildPythonPackage, fetchPypi, pbr, six, wrapt, callPackage }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  openstackdocstheme,
+  pbr,
+  six,
+  setuptools,
+  sphinxHook,
+  wrapt,
+  callPackage,
+}:
 
 buildPythonPackage rec {
   pname = "debtcollector";
   version = "3.0.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-KokX0lsOHx0NNl08HG7Px6UiselxbooaSpFRJvfM6m8=";
   };
 
-  nativeBuildInputs = [ pbr ];
+  build-system = [
+    openstackdocstheme
+    pbr
+    setuptools
+    sphinxHook
+  ];
 
-  propagatedBuildInputs = [ six wrapt ];
+  sphinxBuilders = [ "man" ];
+
+  dependencies = [
+    six
+    wrapt
+  ];
 
   # check in passthru.tests.pytest to escape infinite recursion with other oslo components
   doCheck = false;
@@ -24,7 +45,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "debtcollector" ];
 
   meta = with lib; {
-    description = "A collection of Python deprecation patterns and strategies that help you collect your technical debt in a non-destructive manner";
+    description = "Collection of Python deprecation patterns and strategies that help you collect your technical debt in a non-destructive manner";
     homepage = "https://github.com/openstack/debtcollector";
     license = licenses.asl20;
     maintainers = teams.openstack.members;
diff --git a/pkgs/development/python-modules/debtcollector/tests.nix b/pkgs/development/python-modules/debtcollector/tests.nix
index 19386cdb53b8e..846db4f0bf697 100644
--- a/pkgs/development/python-modules/debtcollector/tests.nix
+++ b/pkgs/development/python-modules/debtcollector/tests.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, debtcollector
-, stestr
+{
+  buildPythonPackage,
+  debtcollector,
+  stestr,
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/debts/default.nix b/pkgs/development/python-modules/debts/default.nix
index c82a65500451b..36e51d2b4477b 100644
--- a/pkgs/development/python-modules/debts/default.nix
+++ b/pkgs/development/python-modules/debts/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, python
-, buildPythonPackage
-, fetchFromGitLab
-, isPy27
-, jinja2
-, pytest
+{
+  lib,
+  python,
+  buildPythonPackage,
+  fetchFromGitLab,
+  isPy27,
+  jinja2,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -36,7 +37,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     inherit (src.meta) homepage;
-    description = "A simple library and cli-tool to help you solve some debts settlement scenarios";
+    description = "Simple library and cli-tool to help you solve some debts settlement scenarios";
     mainProgram = "debts";
     license = licenses.beerware;
     maintainers = [ maintainers.symphorien ];
diff --git a/pkgs/development/python-modules/debuglater/default.nix b/pkgs/development/python-modules/debuglater/default.nix
index 8eabbacf7c863..503dc862497b6 100644
--- a/pkgs/development/python-modules/debuglater/default.nix
+++ b/pkgs/development/python-modules/debuglater/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, colorama
-, dill
-, fetchFromGitHub
-, numpy
-, pandas
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  colorama,
+  dill,
+  fetchFromGitHub,
+  numpy,
+  pandas,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,14 +24,10 @@ buildPythonPackage rec {
     hash = "sha256-o9IAk3EN8ghEft7Y7Xx+sEjWMNgoyiZ0eiBqnCyXkm8=";
   };
 
-  propagatedBuildInputs = [
-    colorama
-  ];
+  propagatedBuildInputs = [ colorama ];
 
   passthru.optional-dependencies = {
-    all = [
-      dill
-    ];
+    all = [ dill ];
   };
 
   nativeCheckInputs = [
@@ -39,9 +36,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ passthru.optional-dependencies.all;
 
-  pythonImportsCheck = [
-    "debuglater"
-  ];
+  pythonImportsCheck = [ "debuglater" ];
 
   meta = with lib; {
     description = "Module for post-mortem debugging of Python programs";
diff --git a/pkgs/development/python-modules/debugpy/default.nix b/pkgs/development/python-modules/debugpy/default.nix
index 4ba770e251c65..3dea1af5b3787 100644
--- a/pkgs/development/python-modules/debugpy/default.nix
+++ b/pkgs/development/python-modules/debugpy/default.nix
@@ -1,26 +1,28 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, substituteAll
-, gdb
-, lldb
-, pytestCheckHook
-, pytest-xdist
-, pytest-timeout
-, importlib-metadata
-, psutil
-, django
-, requests
-, gevent
-, numpy
-, flask
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  pythonAtLeast,
+  fetchFromGitHub,
+  substituteAll,
+  gdb,
+  lldb,
+  pytestCheckHook,
+  pytest-xdist,
+  pytest-timeout,
+  importlib-metadata,
+  psutil,
+  django,
+  requests,
+  gevent,
+  numpy,
+  flask,
 }:
 
 buildPythonPackage rec {
   pname = "debugpy";
-  version = "1.8.1";
+  version = "1.8.5";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -29,60 +31,70 @@ buildPythonPackage rec {
     owner = "microsoft";
     repo = "debugpy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-2TkieSQYxnlUroSD9wNKNaHUTLRksFWL/6XmSNGTCA4=";
+    hash = "sha256-SmSYhmLnVpBPEPO2o40wIv+e3cBbmZXSz+IKMRcnScw=";
   };
 
-  patches = [
-    # Use nixpkgs version instead of versioneer
-    (substituteAll {
-      src = ./hardcode-version.patch;
-      inherit version;
-    })
-
-    # Fix importing debugpy in:
-    # - test_nodebug[module-launch(externalTerminal)]
-    # - test_nodebug[module-launch(integratedTerminal)]
-    #
-    # NOTE: The import failures seen in these tests without the patch
-    # will be seen if a user "installs" debugpy by adding it to PYTHONPATH.
-    # To avoid this issue, debugpy should be installed using python.withPackages:
-    # python.withPackages (ps: with ps; [ debugpy ])
-    ./fix-test-pythonpath.patch
-
-    # Attach pid tests are disabled by default on windows & macos,
-    # but are also flaky on linux:
-    # - https://github.com/NixOS/nixpkgs/issues/262000
-    # - https://github.com/NixOS/nixpkgs/issues/251045
-    ./skip-attach-pid-tests.patch
-  ] ++ lib.optionals stdenv.isLinux [
-    # Hard code GDB path (used to attach to process)
-    (substituteAll {
-      src = ./hardcode-gdb.patch;
-      inherit gdb;
-    })
-  ] ++ lib.optionals stdenv.isDarwin [
-    # Hard code LLDB path (used to attach to process)
-    (substituteAll {
-      src = ./hardcode-lldb.patch;
-      inherit lldb;
-    })
-  ];
+  patches =
+    [
+      # Use nixpkgs version instead of versioneer
+      (substituteAll {
+        src = ./hardcode-version.patch;
+        inherit version;
+      })
+
+      # Fix importing debugpy in:
+      # - test_nodebug[module-launch(externalTerminal)]
+      # - test_nodebug[module-launch(integratedTerminal)]
+      #
+      # NOTE: The import failures seen in these tests without the patch
+      # will be seen if a user "installs" debugpy by adding it to PYTHONPATH.
+      # To avoid this issue, debugpy should be installed using python.withPackages:
+      # python.withPackages (ps: with ps; [ debugpy ])
+      ./fix-test-pythonpath.patch
+
+      # Attach pid tests are disabled by default on windows & macos,
+      # but are also flaky on linux:
+      # - https://github.com/NixOS/nixpkgs/issues/262000
+      # - https://github.com/NixOS/nixpkgs/issues/251045
+      ./skip-attach-pid-tests.patch
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isLinux [
+      # Hard code GDB path (used to attach to process)
+      (substituteAll {
+        src = ./hardcode-gdb.patch;
+        inherit gdb;
+      })
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Hard code LLDB path (used to attach to process)
+      (substituteAll {
+        src = ./hardcode-lldb.patch;
+        inherit lldb;
+      })
+    ];
 
   # Remove pre-compiled "attach" libraries and recompile for host platform
   # Compile flags taken from linux_and_mac/compile_linux.sh & linux_and_mac/compile_mac.sh
-  preBuild = ''(
-    set -x
-    cd src/debugpy/_vendored/pydevd/pydevd_attach_to_process
-    rm *.so *.dylib *.dll *.exe *.pdb
-    $CXX linux_and_mac/attach.cpp -Ilinux_and_mac -std=c++11 -fPIC -nostartfiles ${{
-      "x86_64-linux"   = "-shared -o attach_linux_amd64.so";
-      "i686-linux"     = "-shared -o attach_linux_x86.so";
-      "aarch64-linux"  = "-shared -o attach_linux_arm64.so";
-      "x86_64-darwin"  = "-D_REENTRANT -dynamiclib -lc -o attach_x86_64.dylib";
-      "i686-darwin"    = "-D_REENTRANT -dynamiclib -lc -o attach_x86.dylib";
-      "aarch64-darwin" = "-D_REENTRANT -dynamiclib -lc -o attach_arm64.dylib";
-    }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}")}
-  )'';
+  preBuild = ''
+    (
+        set -x
+        cd src/debugpy/_vendored/pydevd/pydevd_attach_to_process
+        rm *.so *.dylib *.dll *.exe *.pdb
+        $CXX linux_and_mac/attach.cpp -Ilinux_and_mac -std=c++11 -fPIC -nostartfiles ${
+          {
+            "x86_64-linux" = "-shared -o attach_linux_amd64.so";
+            "i686-linux" = "-shared -o attach_linux_x86.so";
+            "aarch64-linux" = "-shared -o attach_linux_arm64.so";
+            "x86_64-darwin" = "-D_REENTRANT -dynamiclib -lc -o attach_x86_64.dylib";
+            "i686-darwin" = "-D_REENTRANT -dynamiclib -lc -o attach_x86.dylib";
+            "aarch64-darwin" = "-D_REENTRANT -dynamiclib -lc -o attach_arm64.dylib";
+          }
+          .${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}")
+        }
+      )'';
+
+  # Disable tests for unmaintained versions of python
+  doCheck = pythonAtLeast "3.11";
 
   nativeCheckInputs = [
     ## Used to run the tests:
@@ -102,36 +114,41 @@ buildPythonPackage rec {
     requests
   ];
 
-  preCheck = ''
-    export DEBUGPY_PROCESS_SPAWN_TIMEOUT=0
-    export DEBUGPY_PROCESS_EXIT_TIMEOUT=0
-  '' + lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) ''
-    # https://github.com/python/cpython/issues/74570#issuecomment-1093748531
-    export no_proxy='*';
-  '';
-
-  postCheck = lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) ''
+  preCheck =
+    ''
+      export DEBUGPY_PROCESS_SPAWN_TIMEOUT=0
+      export DEBUGPY_PROCESS_EXIT_TIMEOUT=0
+    ''
+    + lib.optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) ''
+      # https://github.com/python/cpython/issues/74570#issuecomment-1093748531
+      export no_proxy='*';
+    '';
+
+  postCheck = lib.optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) ''
     unset no_proxy
   '';
 
   # Override default arguments in pytest.ini
-  pytestFlagsArray = [
-    "--timeout=0"
-  ];
+  pytestFlagsArray = [ "--timeout=0" ];
 
   # Fixes hanging tests on Darwin
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [
-    "debugpy"
-  ];
+  pythonImportsCheck = [ "debugpy" ];
 
   meta = with lib; {
-    description = "An implementation of the Debug Adapter Protocol for Python";
+    description = "Implementation of the Debug Adapter Protocol for Python";
     homepage = "https://github.com/microsoft/debugpy";
     changelog = "https://github.com/microsoft/debugpy/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ kira-bruneau ];
-    platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "i686-darwin" "aarch64-darwin" ];
+    platforms = [
+      "x86_64-linux"
+      "i686-linux"
+      "aarch64-linux"
+      "x86_64-darwin"
+      "i686-darwin"
+      "aarch64-darwin"
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/decli/default.nix b/pkgs/development/python-modules/decli/default.nix
index a1d6e0db2eadc..0298d04cf2476 100644
--- a/pkgs/development/python-modules/decli/default.nix
+++ b/pkgs/development/python-modules/decli/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-FZYKNKkQExx/YBn5y/W0+0aMlenuwEctYTL7LAXMZGE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "decli"
-  ];
+  pythonImportsCheck = [ "decli" ];
 
   meta = with lib; {
     description = "Minimal, easy to use, declarative command line interface tool";
diff --git a/pkgs/development/python-modules/decopatch/default.nix b/pkgs/development/python-modules/decopatch/default.nix
index 71e302a8b538a..ec263a48aa090 100644
--- a/pkgs/development/python-modules/decopatch/default.nix
+++ b/pkgs/development/python-modules/decopatch/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, makefun
-, setuptools-scm
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  makefun,
+  setuptools-scm,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,22 +19,16 @@ buildPythonPackage rec {
     hash = "sha256-lX9JyT9BUBgsI/j7UdE7syE+DxenngnIzKcFdZi1VyA=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    makefun
-  ];
+  propagatedBuildInputs = [ makefun ];
 
   postPatch = ''
     substituteInPlace setup.cfg \
       --replace "pytest-runner" ""
   '';
 
-  pythonImportsCheck = [
-    "decopatch"
-  ];
+  pythonImportsCheck = [ "decopatch" ];
 
   # Tests would introduce multiple cirucular dependencies
   # Affected: makefun, pytest-cases
diff --git a/pkgs/development/python-modules/decorator/default.nix b/pkgs/development/python-modules/decorator/default.nix
index c86721f9c7362..5a0bc26763a46 100644
--- a/pkgs/development/python-modules/decorator/default.nix
+++ b/pkgs/development/python-modules/decorator/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -14,22 +15,16 @@ buildPythonPackage rec {
     hash = "sha256-Y3mWIRA2tjhe+RQ15PriKYlHL51XH6uoknuoJTrLwzA=";
   };
 
-  pythonImportsCheck = [
-    "decorator"
-  ];
+  pythonImportsCheck = [ "decorator" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "src/tests/test.py"
-  ];
+  pytestFlagsArray = [ "src/tests/test.py" ];
 
   meta = with lib; {
     homepage = "https://github.com/micheles/decorator";
     description = "Better living through Python with decorators";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/deebot-client/default.nix b/pkgs/development/python-modules/deebot-client/default.nix
index 31c5b2d4e9596..59564f4eefc58 100644
--- a/pkgs/development/python-modules/deebot-client/default.nix
+++ b/pkgs/development/python-modules/deebot-client/default.nix
@@ -7,21 +7,21 @@
   defusedxml,
   docker,
   fetchFromGitHub,
+  hatch-vcs,
+  hatchling,
   numpy,
   pillow,
   pycountry,
   pytest-asyncio,
   pytestCheckHook,
   pythonOlder,
-  setuptools,
-  setuptools-scm,
   svg-py,
   testfixtures,
 }:
 
 buildPythonPackage rec {
   pname = "deebot-client";
-  version = "7.0.0";
+  version = "8.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.12";
@@ -30,12 +30,17 @@ buildPythonPackage rec {
     owner = "DeebotUniverse";
     repo = "client.py";
     rev = "refs/tags/${version}";
-    hash = "sha256-RlLWC1TLjrwQ7t727WpjePJA1zGj4460Ioj6efm/jSw=";
+    hash = "sha256-VWXJykG9XSrpTjnv5radUAp/OMCH2YVlmkT6L8S+wyI=";
   };
 
+  pythonRelaxDeps = [
+    "aiohttp"
+    "defusedxml"
+  ];
+
   build-system = [
-    setuptools
-    setuptools-scm
+    hatch-vcs
+    hatchling
   ];
 
   dependencies = [
diff --git a/pkgs/development/python-modules/deemix/default.nix b/pkgs/development/python-modules/deemix/default.nix
index d9eaddb7bf4a2..40ee84f52aa21 100644
--- a/pkgs/development/python-modules/deemix/default.nix
+++ b/pkgs/development/python-modules/deemix/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, spotipy
-, click
-, pycryptodomex
-, mutagen
-, requests
-, deezer-py
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  spotipy,
+  click,
+  pycryptodomex,
+  mutagen,
+  requests,
+  deezer-py,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -34,14 +35,12 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "deezer"
-  ];
+  pythonImportsCheck = [ "deezer" ];
 
   meta = with lib; {
     description = "Deezer downloader built from the ashes of Deezloader Remix";
     mainProgram = "deemix";
-    homepage = "https://git.freezerapp.xyz/RemixDev/deemix-py";
+    homepage = "https://gitlab.com/RemixDev/deemix-py";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ natto1784 ];
   };
diff --git a/pkgs/development/python-modules/deep-chainmap/default.nix b/pkgs/development/python-modules/deep-chainmap/default.nix
index 9a6d7eaee693c..15238b0f5f17c 100644
--- a/pkgs/development/python-modules/deep-chainmap/default.nix
+++ b/pkgs/development/python-modules/deep-chainmap/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,7 @@ buildPythonPackage rec {
 
   # See the guide for more information: https://nixos.org/nixpkgs/manual/#chap-meta
   meta = with lib; {
-    description = "A recursive subclass of ChainMap";
+    description = "Recursive subclass of ChainMap";
     homepage = "https://github.com/neutrinoceros/deep-chainmap";
     license = licenses.mit;
     maintainers = with maintainers; [ rehno-lindeque ];
diff --git a/pkgs/development/python-modules/deep-translator/default.nix b/pkgs/development/python-modules/deep-translator/default.nix
index 614affcc3fcb8..a0bbfd89d8e02 100644
--- a/pkgs/development/python-modules/deep-translator/default.nix
+++ b/pkgs/development/python-modules/deep-translator/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, beautifulsoup4
-, requests
-, click
-, pythonOlder
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  beautifulsoup4,
+  requests,
+  click,
+  pythonOlder,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-gBJgxpIxE4cH6oiglV5ITbfUDiEMngrg93Ny/9pfS/U=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     beautifulsoup4
@@ -45,6 +44,6 @@ buildPythonPackage rec {
     homepage = "https://deep-translator.readthedocs.io";
     changelog = "https://github.com/nidhaloff/deep-translator/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ wolfangaukang ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/deepdiff/default.nix b/pkgs/development/python-modules/deepdiff/default.nix
index 350ce76eca49e..af4500ffd5806 100644
--- a/pkgs/development/python-modules/deepdiff/default.nix
+++ b/pkgs/development/python-modules/deepdiff/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, click
-, ordered-set
-, orjson
-, clevercsv
-, jsonpickle
-, numpy
-, pytestCheckHook
-, python-dateutil
-, pyyaml
-, toml
-, tomli-w
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  click,
+  ordered-set,
+  orjson,
+  clevercsv,
+  jsonpickle,
+  numpy,
+  pytestCheckHook,
+  python-dateutil,
+  pyyaml,
+  toml,
+  tomli-w,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "deepdiff";
-  version = "6.7.1";
+  version = "7.0.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -26,7 +27,7 @@ buildPythonPackage rec {
     owner = "seperman";
     repo = "deepdiff";
     rev = "refs/tags/${version}";
-    hash = "sha256-YGYprSC5j06Ozg0dUJN5xnba0HUgiXa+d9Ci3czGWoY=";
+    hash = "sha256-HqmAE5sLwyjyUahIUeRIJW0c5eliq/qEzE2FydHwc70=";
   };
 
   postPatch = ''
@@ -35,6 +36,7 @@ buildPythonPackage rec {
   '';
 
   propagatedBuildInputs = [
+    click
     ordered-set
     orjson
   ];
@@ -62,9 +64,7 @@ buildPythonPackage rec {
     "test_pydantic2"
   ];
 
-  pythonImportsCheck = [
-    "deepdiff"
-  ];
+  pythonImportsCheck = [ "deepdiff" ];
 
   meta = with lib; {
     description = "Deep Difference and Search of any Python object/data";
diff --git a/pkgs/development/python-modules/deepdish/default.nix b/pkgs/development/python-modules/deepdish/default.nix
index 7033e2f9f851d..04062db872a79 100644
--- a/pkgs/development/python-modules/deepdish/default.nix
+++ b/pkgs/development/python-modules/deepdish/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, numpy
-, scipy
-, tables
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  numpy,
+  scipy,
+  tables,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     tables
   ];
 
-  pythonImportsCheck = [
-    "deepdish"
-  ];
+  pythonImportsCheck = [ "deepdish" ];
 
   # nativeCheckInputs = [
   #   pandas
@@ -34,7 +33,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "Flexible HDF5 saving/loading and other data science tools from the University of Chicago.";
+    description = "Flexible HDF5 saving/loading and other data science tools from the University of Chicago";
     mainProgram = "ddls";
     homepage = "https://github.com/uchicago-cs/deepdish";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/deepl/default.nix b/pkgs/development/python-modules/deepl/default.nix
index cf934f75b70f5..1dd175a10d556 100644
--- a/pkgs/development/python-modules/deepl/default.nix
+++ b/pkgs/development/python-modules/deepl/default.nix
@@ -1,24 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, poetry-core
-, keyring
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  poetry-core,
+  keyring,
 }:
 
 buildPythonPackage rec {
   pname = "deepl";
-  version = "1.18.0";
+  version = "1.19.1";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-WuQXY5OUQe28p2QP00QoDL7kfUkGQc41IGkQqLAed44=";
+    hash = "sha256-ufsikWgcQsc/ex/LP5P5fVN3IvfAD9ZOPatwGM+bsqY=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     requests
@@ -28,12 +27,10 @@ buildPythonPackage rec {
   # Requires internet access and an API key
   doCheck = false;
 
-  pythonImportsCheck = [
-    "deepl"
-  ];
+  pythonImportsCheck = [ "deepl" ];
 
   meta = with lib; {
-    description = "A language translation API that allows other computer programs to send texts and documents to DeepL's servers and receive high-quality translations";
+    description = "Language translation API that allows other computer programs to send texts and documents to DeepL's servers and receive high-quality translations";
     mainProgram = "deepl";
     homepage = "https://github.com/DeepLcom/deepl-python";
     changelog = "https://github.com/DeepLcom/deepl-python/blob/v${version}/CHANGELOG.md";
diff --git a/pkgs/development/python-modules/deepmerge/default.nix b/pkgs/development/python-modules/deepmerge/default.nix
index 0a22573e2dfab..4dffa0322f1e4 100644
--- a/pkgs/development/python-modules/deepmerge/default.nix
+++ b/pkgs/development/python-modules/deepmerge/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build-system
-, setuptools
-, setuptools-scm
+  # build-system
+  setuptools,
+  setuptools-scm,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,17 +26,13 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "deepmerge"
-  ];
+  pythonImportsCheck = [ "deepmerge" ];
 
   meta = with lib; {
     changelog = "https://github.com/toumorokoshi/deepmerge/releases/tag/v${version}";
-    description = "A toolset to deeply merge python dictionaries.";
+    description = "Toolset to deeply merge python dictionaries";
     downloadPage = "https://github.com/toumorokoshi/deepmerge";
     homepage = "http://deepmerge.readthedocs.io/en/latest/";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/deeptoolsintervals/default.nix b/pkgs/development/python-modules/deeptoolsintervals/default.nix
index 7f78a92877a7d..d3003ee0dc2b0 100644
--- a/pkgs/development/python-modules/deeptoolsintervals/default.nix
+++ b/pkgs/development/python-modules/deeptoolsintervals/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, zlib
-, xz
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  zlib,
+  xz,
 }:
 
 buildPythonPackage rec {
@@ -16,7 +17,10 @@ buildPythonPackage rec {
     sha256 = "1xnl80nblysj6dylj4683wgrfa425rkx4dp5k65hvwdns9pw753x";
   };
 
-  buildInputs = [ zlib xz ];
+  buildInputs = [
+    zlib
+    xz
+  ];
 
   nativeCheckInputs = [ pytest ];
 
diff --git a/pkgs/development/python-modules/deepwave/default.nix b/pkgs/development/python-modules/deepwave/default.nix
index 6f3018aba4320..56b9765686e84 100644
--- a/pkgs/development/python-modules/deepwave/default.nix
+++ b/pkgs/development/python-modules/deepwave/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, torch
-, ninja
-, scipy
-, which
-, pybind11
-, pytest-xdist
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  torch,
+  ninja,
+  scipy,
+  which,
+  pybind11,
+  pytest-xdist,
+  pytestCheckHook,
 }:
 
 let
@@ -48,7 +49,10 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d)
   '';
 
-  propagatedBuildInputs = [ torch pybind11 ];
+  propagatedBuildInputs = [
+    torch
+    pybind11
+  ];
 
   nativeCheckInputs = [
     which
diff --git a/pkgs/development/python-modules/deezer-py/default.nix b/pkgs/development/python-modules/deezer-py/default.nix
index 109f873138c66..48228fcace341 100644
--- a/pkgs/development/python-modules/deezer-py/default.nix
+++ b/pkgs/development/python-modules/deezer-py/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,7 +25,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://gitlab.com/RemixDev/deezer-py";
-    description = "A wrapper for all Deezer's APIs";
+    description = "Wrapper for all Deezer's APIs";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ natto1784 ];
   };
diff --git a/pkgs/development/python-modules/deezer-python/default.nix b/pkgs/development/python-modules/deezer-python/default.nix
index 84c7972ccd120..e0b4b3907c37a 100644
--- a/pkgs/development/python-modules/deezer-python/default.nix
+++ b/pkgs/development/python-modules/deezer-python/default.nix
@@ -1,37 +1,41 @@
-{ lib
-, buildPythonPackage
-, environs
-, fetchFromGitHub
-, poetry-core
-, pytest-mock
-, pytest-vcr
-, pytestCheckHook
-, pythonOlder
-, requests
-, tornado
+{
+  lib,
+  buildPythonPackage,
+  environs,
+  fetchFromGitHub,
+  httpx,
+  poetry-core,
+  pytest-mock,
+  pytest-vcr,
+  pytestCheckHook,
+  pythonOlder,
+  tornado,
 }:
 
 buildPythonPackage rec {
   pname = "deezer-python";
-  version = "6.1.1";
+  version = "7.0.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "browniebroke";
     repo = "deezer-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-pzEXiWKMP2Wqme/pqfTMHxWH/4YcCS6u865wslHrUqI=";
+    hash = "sha256-V4M6qRTa7XKbl962Z3y70+v3YCeW65VjeSIv/1Oxnws=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace " --cov=deezer" ""
+      --replace-fail " --cov=deezer" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    httpx
+    tornado
   ];
 
   nativeCheckInputs = [
@@ -41,14 +45,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  propagatedBuildInputs = [
-    requests
-    tornado
-  ];
-
-  pythonImportsCheck = [
-    "deezer"
-  ];
+  pythonImportsCheck = [ "deezer" ];
 
   disabledTests = [
     # JSONDecodeError issue
diff --git a/pkgs/development/python-modules/defang/default.nix b/pkgs/development/python-modules/defang/default.nix
index d51573c0dc4ff..ea9bfe22478c9 100644
--- a/pkgs/development/python-modules/defang/default.nix
+++ b/pkgs/development/python-modules/defang/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromBitbucket
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromBitbucket,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-OJfayJeVf2H1/jg7/fu2NiHhRHNCaLGI29SY8BnJyxI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "defang"
-  ];
+  pythonImportsCheck = [ "defang" ];
 
   meta = with lib; {
     description = "Module to defang and refang malicious URLs";
diff --git a/pkgs/development/python-modules/defcon/default.nix b/pkgs/development/python-modules/defcon/default.nix
index 3203f0bb973e9..309b02d14fa1b 100644
--- a/pkgs/development/python-modules/defcon/default.nix
+++ b/pkgs/development/python-modules/defcon/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools-scm
-, fonttools
-, fontpens
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools-scm,
+  fonttools,
+  fontpens,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,23 +22,15 @@ buildPythonPackage rec {
     extension = "zip";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     fonttools
-  ]
-  ++ fonttools.optional-dependencies.ufo
-  ++ fonttools.optional-dependencies.unicode;
+  ] ++ fonttools.optional-dependencies.ufo ++ fonttools.optional-dependencies.unicode;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "defcon"
-  ];
+  pythonImportsCheck = [ "defcon" ];
 
   passthru.optional-dependencies = {
     pens = [ fontpens ];
@@ -45,7 +38,7 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "A set of UFO based objects for use in font editing applications";
+    description = "Set of UFO based objects for use in font editing applications";
     homepage = "https://github.com/robotools/defcon";
     changelog = "https://github.com/robotools/defcon/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/deform/default.nix b/pkgs/development/python-modules/deform/default.nix
index b094b46c663af..082c0a8ff4475 100644
--- a/pkgs/development/python-modules/deform/default.nix
+++ b/pkgs/development/python-modules/deform/default.nix
@@ -1,18 +1,34 @@
-{ lib, buildPythonPackage, fetchPypi
-, chameleon, colander, iso8601, peppercorn, translationstring, zope-deprecation
-, nose, coverage, beautifulsoup4, flaky, pyramid, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  chameleon,
+  colander,
+  iso8601,
+  peppercorn,
+  translationstring,
+  zope-deprecation,
+  setuptools,
+  coverage,
+  beautifulsoup4,
+  flaky,
+  pyramid,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "deform";
   version = "2.0.15";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1e912937650c1dbb830079dd9c039950762a230223a567740fbf1b23f1090367";
+    hash = "sha256-HpEpN2UMHbuDAHndnAOZUHYqIwIjpWd0D78bI/EJA2c=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     chameleon
     colander
     iso8601
@@ -22,7 +38,6 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
-    nose
     coverage
     beautifulsoup4
     flaky
@@ -30,10 +45,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Form library with advanced features like nested forms";
     homepage = "https://docs.pylonsproject.org/projects/deform/en/latest/";
-    license = licenses.free; # http://www.repoze.org/LICENSE.txt
-    maintainers = with maintainers; [ domenkozar ];
+    # https://github.com/Pylons/deform/blob/fdc43d59de7d11b0e3ba1b92835b780cfe181719/LICENSE.txt
+    license = [ lib.licenses.bsd3 lib.licenses.cc-by-30 ];
+    maintainers = with lib.maintainers; [ domenkozar ];
   };
 }
diff --git a/pkgs/development/python-modules/defusedcsv/default.nix b/pkgs/development/python-modules/defusedcsv/default.nix
index 5e44ce731748a..bb62a9a7f997c 100644
--- a/pkgs/development/python-modules/defusedcsv/default.nix
+++ b/pkgs/development/python-modules/defusedcsv/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "defusedcsv";
-  version =  "2.0.0";
+  version = "2.0.0";
   format = "setuptools";
 
   src = fetchFromGitHub {
@@ -18,13 +19,9 @@ buildPythonPackage rec {
     hash = "sha256-y8qLVfdkxRrDjtrTOLK5Zvi/1Vyv8eOnCueUkaRp4sQ=";
   };
 
-  pythonImportsCheck = [
-    "defusedcsv.csv"
-  ];
+  pythonImportsCheck = [ "defusedcsv.csv" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Python library to protect your users from Excel injections in CSV-format exports, drop-in replacement for standard library's csv module";
diff --git a/pkgs/development/python-modules/defusedxml/default.nix b/pkgs/development/python-modules/defusedxml/default.nix
index e2e7de205c8ce..ce997d1fcb820 100644
--- a/pkgs/development/python-modules/defusedxml/default.nix
+++ b/pkgs/development/python-modules/defusedxml/default.nix
@@ -1,26 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  lxml,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "defusedxml";
-  version = "0.7.1";
-  format = "setuptools";
+  version = "0.8.0rc2";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69";
+  src = fetchFromGitHub {
+    owner = "tiran";
+    repo = "defusedxml";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-X88A5V9uXP3wJQ+olK6pZJT66LP2uCXLK8goa5bPARA=";
   };
 
+  build-system = [ setuptools ] ;
+
+  nativeCheckInputs = [ lxml ];
+
   checkPhase = ''
+    runHook preCheck
     ${python.interpreter} tests.py
+    runHook postCheck
   '';
 
   pythonImportsCheck = [ "defusedxml" ];
 
   meta = with lib; {
+    changelog = "https://github.com/tiran/defusedxml/blob/v${version}/CHANGES.txt";
     description = "Python module to defuse XML issues";
     homepage = "https://github.com/tiran/defusedxml";
     license = licenses.psfl;
diff --git a/pkgs/development/python-modules/dehinter/default.nix b/pkgs/development/python-modules/dehinter/default.nix
index 276959b84b329..e621b2979bcc4 100644
--- a/pkgs/development/python-modules/dehinter/default.nix
+++ b/pkgs/development/python-modules/dehinter/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fonttools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fonttools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,14 +19,10 @@ buildPythonPackage rec {
     hash = "sha256-l988SW6OWKXzJK0WGAJZR/QDFvgnSir+5TwMMvFcOxg=";
   };
 
-  propagatedBuildInputs = [
-    fonttools
-  ];
+  propagatedBuildInputs = [ fonttools ];
 
   doCheck = true;
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Utility for removing hinting data from TrueType and OpenType fonts";
@@ -35,4 +32,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ danc86 ];
   };
 }
-
diff --git a/pkgs/development/python-modules/deid/default.nix b/pkgs/development/python-modules/deid/default.nix
index 5edfd4afc3417..180b7a8e2947d 100644
--- a/pkgs/development/python-modules/deid/default.nix
+++ b/pkgs/development/python-modules/deid/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, matplotlib
-, pydicom
-, python-dateutil
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  matplotlib,
+  pydicom,
+  python-dateutil,
+  setuptools,
 }:
 
 let
@@ -61,9 +62,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "deid"
-  ];
+  pythonImportsCheck = [ "deid" ];
 
   meta = with lib; {
     description = "Best-effort anonymization for medical images";
diff --git a/pkgs/development/python-modules/dek/default.nix b/pkgs/development/python-modules/dek/default.nix
index 147cc40e316b2..4f528b8551339 100644
--- a/pkgs/development/python-modules/dek/default.nix
+++ b/pkgs/development/python-modules/dek/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, xmod
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  xmod,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,27 +19,19 @@ buildPythonPackage rec {
     hash = "sha256-DYODdImTRCukGmGbkZ+9TQeI9DYaeRd/EHS6VND5IDs=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  dependencies = [
-    xmod
-  ];
+  dependencies = [ xmod ];
 
-  nativeBuildInputs = [
-    pytestCheckHook
-  ];
+  nativeBuildInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dek"
-  ];
+  pythonImportsCheck = [ "dek" ];
 
   meta = with lib; {
-    description = "The decorator-decorator";
+    description = "Decorator-decorator";
     homepage = "https://github.com/rec/dek";
     changelog = "https://github.com/rec/dek/blob/${src.rev}/CHANGELOG";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/delegator-py/default.nix b/pkgs/development/python-modules/delegator-py/default.nix
index 89cbd991a6631..0e4fc71161a79 100644
--- a/pkgs/development/python-modules/delegator-py/default.nix
+++ b/pkgs/development/python-modules/delegator-py/default.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
-, lib
-, fetchFromGitHub
-, pexpect
+{
+  buildPythonPackage,
+  lib,
+  fetchFromGitHub,
+  pexpect,
 }:
 
 buildPythonPackage rec {
@@ -24,6 +25,6 @@ buildPythonPackage rec {
     description = "Subprocesses for Humans 2.0";
     homepage = "https://github.com/amitt001/delegator.py";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/delorean/default.nix b/pkgs/development/python-modules/delorean/default.nix
index 81f1a1e44469c..f056cde2a6e81 100644
--- a/pkgs/development/python-modules/delorean/default.nix
+++ b/pkgs/development/python-modules/delorean/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, babel
-, humanize
-, python-dateutil
-, pytz
-, tzlocal
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  babel,
+  humanize,
+  python-dateutil,
+  pytz,
+  tzlocal,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     tzlocal
   ];
 
-  pythonImportsCheck = [
-    "delorean"
-  ];
+  pythonImportsCheck = [ "delorean" ];
 
   # test data not included
   doCheck = false;
diff --git a/pkgs/development/python-modules/deltachat-rpc-client/default.nix b/pkgs/development/python-modules/deltachat-rpc-client/default.nix
new file mode 100644
index 0000000000000..ad33634739adb
--- /dev/null
+++ b/pkgs/development/python-modules/deltachat-rpc-client/default.nix
@@ -0,0 +1,38 @@
+{
+  buildPythonPackage,
+  deltachat-rpc-server,
+  imap-tools,
+  lib,
+  pytestCheckHook,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "deltachat-rpc-client";
+  inherit (deltachat-rpc-server) version src;
+  pyproject = true;
+
+  sourceRoot = "${src.name}/deltachat-rpc-client";
+
+  postPatch = ''
+    substituteInPlace src/deltachat_rpc_client/rpc.py \
+      --replace-fail deltachat-rpc-server "${lib.getExe deltachat-rpc-server}"
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [ imap-tools ];
+
+  pythonImportsCheck = [ "deltachat_rpc_client" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  # requires a chatmail server
+  doCheck = false;
+
+  meta = {
+    inherit (deltachat-rpc-server.meta) changelog license maintainers;
+    description = "Python client for Delta Chat core JSON-RPC interface";
+    homepage = "https://github.com/deltachat/deltachat-core-rust/tree/main/deltachat-rpc-client";
+  };
+}
diff --git a/pkgs/development/python-modules/deltachat/default.nix b/pkgs/development/python-modules/deltachat/default.nix
index 4b5b0d8f73627..964921eda9f47 100644
--- a/pkgs/development/python-modules/deltachat/default.nix
+++ b/pkgs/development/python-modules/deltachat/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, pkg-config
-, pkgconfig
-, setuptools-scm
-, libdeltachat
-, cffi
-, imap-tools
-, requests
-, pluggy
-, pytestCheckHook
+{
+  buildPythonPackage,
+  pythonOlder,
+  pkg-config,
+  pkgconfig,
+  setuptools-scm,
+  libdeltachat,
+  cffi,
+  imap-tools,
+  requests,
+  pluggy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +27,7 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  buildInputs = [
-    libdeltachat
-  ];
+  buildInputs = [ libdeltachat ];
 
   propagatedBuildInputs = [
     cffi
@@ -38,9 +36,7 @@ buildPythonPackage rec {
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [
     "deltachat"
diff --git a/pkgs/development/python-modules/deltachat2/default.nix b/pkgs/development/python-modules/deltachat2/default.nix
new file mode 100644
index 0000000000000..cbd9fd791e6fb
--- /dev/null
+++ b/pkgs/development/python-modules/deltachat2/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, deltachat-rpc-server
+, setuptools-scm
+, substituteAll
+}:
+
+buildPythonPackage rec {
+  pname = "deltachat2";
+  version = "0.6.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "adbenitez";
+    repo = "deltachat2";
+    rev = "refs/tags/${version}";
+    hash = "sha256-bp4bi+EeMaWP8zOaPp0eaPKn71F055QgMOOSDzIJUH4=";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./paths.patch;
+      deltachatrpcserver = lib.getExe deltachat-rpc-server;
+    })
+  ];
+
+  build-system = [
+    setuptools-scm
+  ];
+
+  pythonImportsCheck = [ "deltachat2" ];
+
+  meta = {
+    description = "Client library for Delta Chat core JSON-RPC interface";
+    homepage = "https://github.com/adbenitez/deltachat2";
+    license = lib.licenses.mpl20;
+    mainProgram = "deltachat2";
+    inherit (deltachat-rpc-server.meta) maintainers;
+  };
+}
diff --git a/pkgs/development/python-modules/deltachat2/paths.patch b/pkgs/development/python-modules/deltachat2/paths.patch
new file mode 100644
index 0000000000000..92cfe11fc6f0e
--- /dev/null
+++ b/pkgs/development/python-modules/deltachat2/paths.patch
@@ -0,0 +1,13 @@
+diff --git a/deltachat2/transport.py b/deltachat2/transport.py
+index a93dc7e..251947b 100644
+--- a/deltachat2/transport.py
++++ b/deltachat2/transport.py
+@@ -71,7 +71,7 @@ class IOTransport:
+             # `process_group` is not supported before Python 3.11.
+             kwargs = {"preexec_fn": os.setpgrp, **self._kwargs}  # noqa: PLW1509
+         self.process = subprocess.Popen(  # noqa: R1732
+-            "deltachat-rpc-server",
++            "@deltachatrpcserver@",
+             stdin=subprocess.PIPE,
+             stdout=subprocess.PIPE,
+             **kwargs,
diff --git a/pkgs/development/python-modules/deltalake/default.nix b/pkgs/development/python-modules/deltalake/default.nix
new file mode 100644
index 0000000000000..e4065fa10b971
--- /dev/null
+++ b/pkgs/development/python-modules/deltalake/default.nix
@@ -0,0 +1,86 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, rustPlatform
+, pyarrow
+, pyarrow-hotfix
+, openssl
+, stdenv
+, darwin
+, libiconv
+, pkg-config
+, pytestCheckHook
+, pytest-benchmark
+, pytest-cov
+, pytest-mock
+, pandas
+, azure-storage-blob
+}:
+
+buildPythonPackage rec {
+  pname = "deltalake";
+  version = "0.19.1";
+  format = "pyproject";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-Xgn6uyIfuB6YnCg8FieOr/tuhXBtmDZKvNpcDGynNZg=";
+  };
+
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit src;
+    hash = "sha256-ebX51/ztIdhY81sd0fdPsKvaGtCEk8oofrj/Nrt8nfA=";
+  };
+
+  env.OPENSSL_NO_VENDOR = 1;
+
+  dependencies = [
+    pyarrow
+    pyarrow-hotfix
+  ];
+
+  buildInputs = [
+    openssl
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
+    darwin.apple_sdk.frameworks.Security
+    darwin.apple_sdk.frameworks.SystemConfiguration
+    libiconv
+  ];
+
+  nativeBuildInputs = [
+    pkg-config # openssl-sys needs this
+  ] ++ (with rustPlatform; [
+    cargoSetupHook
+    maturinBuildHook
+  ]);
+
+  pythonImportsCheck = [ "deltalake" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pandas
+    pytest-benchmark
+    pytest-cov
+    pytest-mock
+    azure-storage-blob
+  ];
+
+  preCheck = ''
+    # For paths in test to work, we have to be in python dir
+    cp pyproject.toml python/
+    cd python
+
+    # In tests we want to use deltalake that we have built
+    rm -rf deltalake
+  '';
+
+  pytestFlagsArray = [ "-m 'not integration'" ];
+
+  meta = with lib; {
+    description = "Native Rust library for Delta Lake, with bindings into Python";
+    homepage = "https://github.com/delta-io/delta-rs";
+    changelog = "https://github.com/delta-io/delta-rs/blob/python-v${version}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ kfollesdal mslingsby harvidsen andershus ];
+  };
+}
diff --git a/pkgs/development/python-modules/deluge-client/default.nix b/pkgs/development/python-modules/deluge-client/default.nix
index 219ebf5143b5c..f03a347450d2f 100644
--- a/pkgs/development/python-modules/deluge-client/default.nix
+++ b/pkgs/development/python-modules/deluge-client/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-OIGu48Tgyp3YpWtxAEe4N+HQh6g+QhY2oHR3H5Kp8bU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # it will try to connect to a running instance
   doCheck = false;
 
-  pythonImportsCheck = [
-    "deluge_client"
-  ];
+  pythonImportsCheck = [ "deluge_client" ];
 
   meta = with lib; {
     description = "Lightweight pure-python rpc client for deluge";
diff --git a/pkgs/development/python-modules/demes/default.nix b/pkgs/development/python-modules/demes/default.nix
index 522b075d2a6e2..658acdb8156fd 100644
--- a/pkgs/development/python-modules/demes/default.nix
+++ b/pkgs/development/python-modules/demes/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, ruamel-yaml
-, attrs
-, pythonOlder
-, pytest7CheckHook
-, pytest-xdist
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  ruamel-yaml,
+  attrs,
+  pythonOlder,
+  pytest7CheckHook,
+  pytest-xdist,
+  numpy,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-nmE7ZbR126J3vKdR3h83qJ/V602Fa6J3M6IJnIqCNhc=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     ruamel-yaml
@@ -41,13 +40,9 @@ buildPythonPackage rec {
     numpy
   ];
 
-  disabledTestPaths = [
-    "tests/test_spec.py"
-  ];
+  disabledTestPaths = [ "tests/test_spec.py" ];
 
-  pythonImportsCheck = [
-    "demes"
-  ];
+  pythonImportsCheck = [ "demes" ];
 
   meta = with lib; {
     description = "Tools for describing and manipulating demographic models";
diff --git a/pkgs/development/python-modules/demesdraw/default.nix b/pkgs/development/python-modules/demesdraw/default.nix
index 2672f87146854..6a3c4d44e99a6 100644
--- a/pkgs/development/python-modules/demesdraw/default.nix
+++ b/pkgs/development/python-modules/demesdraw/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, demes
-, matplotlib
-, numpy
-, scipy
-, pythonOlder
-, pytestCheckHook
-, pytest-xdist
-, mpmath
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  demes,
+  matplotlib,
+  numpy,
+  scipy,
+  pythonOlder,
+  pytestCheckHook,
+  pytest-xdist,
+  mpmath,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-n7dz+kYf2yyr66TBx452W6z4qT6bT81u0J4aMAYuGCc=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     demes
@@ -42,7 +41,7 @@ buildPythonPackage rec {
 
   # This variable is needed to suppress the "Trace/BPT trap: 5" error in Darwin's checkPhase.
   # Not sure of the details, but we can avoid it by changing the matplotlib backend during testing.
-  env.MPLBACKEND = lib.optionalString stdenv.isDarwin "Agg";
+  env.MPLBACKEND = lib.optionalString stdenv.hostPlatform.isDarwin "Agg";
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -50,9 +49,7 @@ buildPythonPackage rec {
     mpmath
   ];
 
-  pythonImportsCheck = [
-    "demesdraw"
-  ];
+  pythonImportsCheck = [ "demesdraw" ];
 
   meta = with lib; {
     description = "Drawing functions for Demes demographic models";
diff --git a/pkgs/development/python-modules/demetriek/default.nix b/pkgs/development/python-modules/demetriek/default.nix
index 68f2660f6bb7b..2a9a466c9ab06 100644
--- a/pkgs/development/python-modules/demetriek/default.nix
+++ b/pkgs/development/python-modules/demetriek/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, aiohttp
-, aresponses
-, awesomeversion
-, backoff
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, pydantic
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  awesomeversion,
+  backoff,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  poetry-core,
+  pydantic,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -34,7 +34,10 @@ buildPythonPackage rec {
     (fetchpatch {
       name = "pydantic_2-compatibility.patch";
       url = "https://github.com/frenck/python-demetriek/commit/e677fe5b735b6b28572e3e5fd6aab56fc056f5e6.patch";
-      excludes = [ "pyproject.toml" "poetry.lock" ];
+      excludes = [
+        "pyproject.toml"
+        "poetry.lock"
+      ];
       hash = "sha256-oMVR45KHDhcPId/0X9obJXCPE8s1gk5IgsGsgZesdZw=";
     })
   ];
@@ -46,13 +49,10 @@ buildPythonPackage rec {
       --replace "--cov" ""
   '';
 
-  pythonRelaxDeps = [
-    "pydantic"
-  ];
+  pythonRelaxDeps = [ "pydantic" ];
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -69,9 +69,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "demetriek"
-  ];
+  pythonImportsCheck = [ "demetriek" ];
 
   __darwinAllowLocalNetworking = true;
 
diff --git a/pkgs/development/python-modules/demjson3/default.nix b/pkgs/development/python-modules/demjson3/default.nix
index 6e83b001e6e1d..091a80cf81845 100644
--- a/pkgs/development/python-modules/demjson3/default.nix
+++ b/pkgs/development/python-modules/demjson3/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     ${python.interpreter} test/test_demjson3.py
   '';
 
-  pythonImportsCheck = [
-    "demjson3"
-  ];
+  pythonImportsCheck = [ "demjson3" ];
 
   meta = with lib; {
     description = "Encoder/decoder and lint/validator for JSON (JavaScript Object Notation)";
diff --git a/pkgs/development/python-modules/demoji/default.nix b/pkgs/development/python-modules/demoji/default.nix
index f8ce40a77de16..4538f6c9c8be5 100644
--- a/pkgs/development/python-modules/demoji/default.nix
+++ b/pkgs/development/python-modules/demoji/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pythonOlder
-, pytestCheckHook
-, ujson
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
+  pytestCheckHook,
+  ujson,
 }:
 
 buildPythonPackage rec {
@@ -26,23 +27,15 @@ buildPythonPackage rec {
       --replace-fail "pytest-runner" ""
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   passthru.optional-dependencies = {
-    ujson = [
-      ujson
-    ];
+    ujson = [ ujson ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "demoji"
-  ];
+  pythonImportsCheck = [ "demoji" ];
 
   meta = with lib; {
     description = "Module to find/replace/remove emojis in text strings";
diff --git a/pkgs/development/python-modules/dendropy/default.nix b/pkgs/development/python-modules/dendropy/default.nix
index d37d188a257a3..8cc15b7210c71 100644
--- a/pkgs/development/python-modules/dendropy/default.nix
+++ b/pkgs/development/python-modules/dendropy/default.nix
@@ -1,48 +1,54 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  nix-update-script,
+  setuptools,
+  paup,
+  paupIntegration ? false,
 }:
 
+let
+  paupPath = if paupIntegration then lib.getExe paup else "NONE";
+in
 buildPythonPackage rec {
   pname = "dendropy";
-  version = "4.5.1";
-  format = "setuptools";
+  version = "5.0.2";
 
-  disabled = pythonOlder "3.7";
+  pyproject = true;
+  build-system = [ setuptools ];
 
   src = fetchFromGitHub {
     owner = "jeetsukumaran";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-FP0+fJkkFtSysPxoHXjyMgF8pPin7aRyzmHe9bH8LlM=";
+    repo = "dendropy";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-OiFei/6226FDtL4w1XrXL2OVn3/hfQwnIhTzM4OneKc=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-
-  disabledTests = [
-    # FileNotFoundError: [Errno 2] No such file or directory: 'paup'
-    "test_basic_split_count_with_incorrect_rootings_raises_error"
-    "test_basic_split_count_with_incorrect_weight_treatment_raises_error"
-    "test_basic_split_counting_under_different_rootings"
-    "test_group1"
-    # AssertionError: 6 != 5
-    "test_by_num_lineages"
-    # AttributeError: module 'collections' has no attribute 'Iterable'
-    "test_findall_multiple"
-  ];
-
-  pythonImportsCheck = [
-    "dendropy"
-  ];
-
-  meta = with lib; {
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace '["pytest-runner"],' '[],'
+
+    substituteInPlace src/dendropy/interop/paup.py \
+      --replace 'PAUP_PATH = os.environ.get(metavar.DENDROPY_PAUP_PATH_ENVAR, "paup")' 'PAUP_PATH = os.environ.get(metavar.DENDROPY_PAUP_PATH_ENVAR, "${paupPath}")'
+  '';
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "dendropy" ];
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = {
     description = "Python library for phylogenetic computing";
-    homepage = "https://dendropy.org/";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ unode ];
+    homepage = "https://jeetsukumaran.github.io/DendroPy/";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [
+      unode
+      pandapip1
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/denonavr/default.nix b/pkgs/development/python-modules/denonavr/default.nix
index 61930b92818cb..5f113865c388b 100644
--- a/pkgs/development/python-modules/denonavr/default.nix
+++ b/pkgs/development/python-modules/denonavr/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, async-timeout
-, asyncstdlib
-, attrs
-, buildPythonPackage
-, defusedxml
-, fetchFromGitHub
-, ftfy
-, httpx
-, netifaces
-, pytest-asyncio
-, pytestCheckHook
-, pytest-httpx
-, pytest-timeout
-, pythonOlder
-, setuptools
+{
+  lib,
+  async-timeout,
+  asyncstdlib,
+  attrs,
+  buildPythonPackage,
+  defusedxml,
+  fetchFromGitHub,
+  ftfy,
+  httpx,
+  netifaces,
+  pytest-asyncio,
+  pytestCheckHook,
+  pytest-httpx,
+  pytest-timeout,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,9 @@ buildPythonPackage rec {
     hash = "sha256-VxoRK1qeGrIunsiCzeZJUHxW/sxk+PFpntInL+G/yI8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  pythonRelaxDeps = [ "defusedxml" ];
+
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     asyncstdlib
@@ -41,9 +42,7 @@ buildPythonPackage rec {
     ftfy
     httpx
     netifaces
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    async-timeout
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ async-timeout ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -52,9 +51,7 @@ buildPythonPackage rec {
     pytest-timeout
   ];
 
-  pythonImportsCheck = [
-    "denonavr"
-  ];
+  pythonImportsCheck = [ "denonavr" ];
 
   meta = with lib; {
     description = "Automation Library for Denon AVR receivers";
diff --git a/pkgs/development/python-modules/dep-logic/default.nix b/pkgs/development/python-modules/dep-logic/default.nix
index b8c27334a868b..ac79804624650 100644
--- a/pkgs/development/python-modules/dep-logic/default.nix
+++ b/pkgs/development/python-modules/dep-logic/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pdm-backend
-, packaging
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pdm-backend,
+  packaging,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "dep-logic";
-  version = "0.2.0";
+  version = "0.4.9";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,27 +19,19 @@ buildPythonPackage rec {
     owner = "pdm-project";
     repo = "dep-logic";
     rev = "refs/tags/${version}";
-    hash = "sha256-NB0TR7fCtjSm4cAl+Fy+6c+z1ZBDiRw7nXux/s6ON/c=";
+    hash = "sha256-5PEHkxwIgDz3Qs993qI4eaQZ5Him4i/MAnUam820AWc=";
   };
 
-  nativeBuildInputs = [
-    pdm-backend
-  ];
+  nativeBuildInputs = [ pdm-backend ];
 
-  propagatedBuildInputs = [
-    packaging
-  ];
+  propagatedBuildInputs = [ packaging ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dep_logic"
-  ];
+  pythonImportsCheck = [ "dep_logic" ];
 
   meta = {
-    changelog = "https://github.com/pdm-project/dep-logic/releases/tag/${src.rev}";
+    changelog = "https://github.com/pdm-project/dep-logic/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     description = "Python dependency specifications supporting logical operations";
     homepage = "https://github.com/pdm-project/dep-logic";
     license = lib.licenses.asl20;
diff --git a/pkgs/development/python-modules/dependency-injector/default.nix b/pkgs/development/python-modules/dependency-injector/default.nix
index 0b575412e8541..be655a971dd49 100644
--- a/pkgs/development/python-modules/dependency-injector/default.nix
+++ b/pkgs/development/python-modules/dependency-injector/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fastapi
-, fetchFromGitHub
-, flask
-, httpx
-, mypy-boto3-s3
-, numpy
-, pydantic
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, scipy
-, six
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fastapi,
+  fetchFromGitHub,
+  flask,
+  httpx,
+  mypy-boto3-s3,
+  numpy,
+  pydantic,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  scipy,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -30,41 +31,31 @@ buildPythonPackage rec {
     hash = "sha256-U3U/L8UuYrfpm4KwVNmViTbam7QdZd2vp1p+ENtOJlw=";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   passthru.optional-dependencies = {
-    aiohttp = [
-      aiohttp
-    ];
-    pydantic = [
-      pydantic
-    ];
-    flask = [
-      flask
-    ];
-    yaml = [
-      pyyaml
-    ];
+    aiohttp = [ aiohttp ];
+    pydantic = [ pydantic ];
+    flask = [ flask ];
+    yaml = [ pyyaml ];
   };
 
-  nativeCheckInputs = [
-    fastapi
-    httpx
-    mypy-boto3-s3
-    numpy
-    pytest-asyncio
-    pytestCheckHook
-    scipy
-  ] ++ passthru.optional-dependencies.aiohttp
-  ++ passthru.optional-dependencies.pydantic
-  ++ passthru.optional-dependencies.yaml
-  ++ passthru.optional-dependencies.flask;
+  nativeCheckInputs =
+    [
+      fastapi
+      httpx
+      mypy-boto3-s3
+      numpy
+      pytest-asyncio
+      pytestCheckHook
+      scipy
+    ]
+    ++ passthru.optional-dependencies.aiohttp
+    ++ passthru.optional-dependencies.pydantic
+    ++ passthru.optional-dependencies.yaml
+    ++ passthru.optional-dependencies.flask;
 
-  pythonImportsCheck = [
-    "dependency_injector"
-  ];
+  pythonImportsCheck = [ "dependency_injector" ];
 
   disabledTestPaths = [
     # Exclude tests for EOL Python releases
diff --git a/pkgs/development/python-modules/deploykit/default.nix b/pkgs/development/python-modules/deploykit/default.nix
index 9668ec25c3591..e2882a7fa7f54 100644
--- a/pkgs/development/python-modules/deploykit/default.nix
+++ b/pkgs/development/python-modules/deploykit/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, bash
-, openssh
-, pytestCheckHook
-, pythonOlder
-, stdenv
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  bash,
+  openssh,
+  pytestCheckHook,
+  pythonOlder,
+  stdenv,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-7PiXq1bQJ1jswLHNqCDSYZabgfp8HRuRt5YPGzd5Ej0=";
   };
 
-  buildInputs = [
-    setuptools
-  ];
+  buildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     bash
@@ -33,21 +32,22 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [ "test_ssh" ];
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [ "test_ssh" ];
 
   # don't swallow stdout/stderr
   pytestFlagsArray = [ "-s" ];
 
-  pythonImportsCheck = [
-    "deploykit"
-  ];
+  pythonImportsCheck = [ "deploykit" ];
 
   meta = with lib; {
     description = "Execute commands remote via ssh and locally in parallel with python";
     homepage = "https://github.com/numtide/deploykit";
     changelog = "https://github.com/numtide/deploykit/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ mic92 zowoq ];
+    maintainers = with maintainers; [
+      mic92
+      zowoq
+    ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/deprecat/default.nix b/pkgs/development/python-modules/deprecat/default.nix
index a87394dea289b..1635a99d71378 100644
--- a/pkgs/development/python-modules/deprecat/default.nix
+++ b/pkgs/development/python-modules/deprecat/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
-, wrapt
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  wrapt,
 }:
 
 buildPythonPackage rec {
   pname = "deprecat";
-  version = "2.1.2";
+  version = "2.1.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,24 +19,16 @@ buildPythonPackage rec {
     owner = "mjhajharia";
     repo = "deprecat";
     rev = "refs/tags/v${version}";
-    hash = "sha256-uAabZAtZDhcX6TfiM0LnrAzxxS64ys+vdodmxO//0x8=";
+    hash = "sha256-CvW4SQ78FG8GqBs6/a0yHWfTAn64sH54GVSETooMa6A=";
   };
 
-  build-system = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  dependencies = [
-    wrapt
-  ];
+  dependencies = [ wrapt ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "deprecat"
-  ];
+  pythonImportsCheck = [ "deprecat" ];
 
   disabledTestPaths = [
     # https://github.com/mjhajharia/deprecat/issues/13
diff --git a/pkgs/development/python-modules/deprecated/default.nix b/pkgs/development/python-modules/deprecated/default.nix
index 09664f977a051..e32aab6be8a27 100644
--- a/pkgs/development/python-modules/deprecated/default.nix
+++ b/pkgs/development/python-modules/deprecated/default.nix
@@ -1,16 +1,20 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, wrapt
-, pytestCheckHook
-, sphinxHook
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  wrapt,
+  pytestCheckHook,
+  sphinxHook,
 }:
 
 buildPythonPackage rec {
   pname = "deprecated";
   version = "1.2.14";
   format = "setuptools";
-  outputs = [ "out" "doc" ];
+  outputs = [
+    "out"
+    "doc"
+  ];
 
   src = fetchFromGitHub {
     owner = "tantale";
@@ -19,17 +23,11 @@ buildPythonPackage rec {
     hash = "sha256-H5Gp2F/ChMeEH4fSYXIB34syDIzDymfN949ksJnS0k4=";
   };
 
-  nativeBuildInputs = [
-    sphinxHook
-  ];
+  nativeBuildInputs = [ sphinxHook ];
 
-  propagatedBuildInputs = [
-    wrapt
-  ];
+  propagatedBuildInputs = [ wrapt ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "deprecated" ];
 
diff --git a/pkgs/development/python-modules/deprecation-alias/default.nix b/pkgs/development/python-modules/deprecation-alias/default.nix
new file mode 100644
index 0000000000000..da60ac253a237
--- /dev/null
+++ b/pkgs/development/python-modules/deprecation-alias/default.nix
@@ -0,0 +1,39 @@
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  setuptools,
+  deprecation,
+  packaging,
+}:
+buildPythonPackage rec {
+  pname = "deprecation-alias";
+  version = "0.3.3";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-5zJm1MhmwEAHnXoEf5KsLNRotGCAMkht8f/X7xR+ZRU=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    deprecation
+    packaging
+  ];
+
+  nativeCheckInputs = [ ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail '"setuptools!=61.*,<=67.1.0,>=40.6.0"' '"setuptools"'
+  '';
+
+  meta = {
+    description = "A wrapper around ‘deprecation’ providing support for deprecated aliases.";
+    homepage = "https://github.com/domdfcoding/deprecation-alias";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tyberius-prime ];
+  };
+}
diff --git a/pkgs/development/python-modules/deprecation/default.nix b/pkgs/development/python-modules/deprecation/default.nix
index 3fccbde6e8b65..7c3715cbfe785 100644
--- a/pkgs/development/python-modules/deprecation/default.nix
+++ b/pkgs/development/python-modules/deprecation/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, packaging
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  packaging,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -30,7 +31,7 @@ buildPythonPackage rec {
   nativeCheckInputs = [ unittestCheckHook ];
 
   meta = with lib; {
-    description = "A library to handle automated deprecations";
+    description = "Library to handle automated deprecations";
     homepage = "https://deprecation.readthedocs.io/";
     license = licenses.asl20;
   };
diff --git a/pkgs/development/python-modules/derpconf/default.nix b/pkgs/development/python-modules/derpconf/default.nix
index b3a4dd9d35d81..a3fbc61e2c042 100644
--- a/pkgs/development/python-modules/derpconf/default.nix
+++ b/pkgs/development/python-modules/derpconf/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,19 +18,15 @@ buildPythonPackage rec {
     hash = "sha256-66MOqcWIiqJrORJDgAH5iUblHyqJvuf9DIBN56XjKwU=";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
-  pythonImportsCheck = [
-    "derpconf"
-  ];
+  pythonImportsCheck = [ "derpconf" ];
 
   meta = with lib; {
     description = "Module to abstract loading configuration files for your app";
     homepage = "https://github.com/globocom/derpconf";
     changelog = "https://github.com/globocom/derpconf/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/desktop-entry-lib/default.nix b/pkgs/development/python-modules/desktop-entry-lib/default.nix
index 5a6d3c00e7f03..6582d0fd283a5 100644
--- a/pkgs/development/python-modules/desktop-entry-lib/default.nix
+++ b/pkgs/development/python-modules/desktop-entry-lib/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, pytestCheckHook
-, fetchFromGitea
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  pytestCheckHook,
+  fetchFromGitea,
+  setuptools,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/desktop-notifier/default.nix b/pkgs/development/python-modules/desktop-notifier/default.nix
index 708c971943ec8..30c5275edbf95 100644
--- a/pkgs/development/python-modules/desktop-notifier/default.nix
+++ b/pkgs/development/python-modules/desktop-notifier/default.nix
@@ -1,46 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, stdenv
-, packaging
-, setuptools
-, dbus-next
-, rubicon-objc
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  stdenv,
+  bidict,
+  packaging,
+  setuptools,
+  dbus-fast,
+  rubicon-objc,
 }:
 
 buildPythonPackage rec {
   pname = "desktop-notifier";
-  version = "3.5.6";
-  format = "pyproject";
+  version = "6.0.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "SamSchott";
-    repo = pname;
+    repo = "desktop-notifier";
     rev = "refs/tags/v${version}";
-    hash = "sha256-txUWRCWLQ6jWrdEJ/D5+CsflNad5Onr/wLycENri1z8=";
+    hash = "sha256-HynREkiPxv/1y1/ICVwqANIe9tAkIvdpDy4oXxQarec=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    packaging
-  ] ++ lib.optionals stdenv.isLinux [
-    dbus-next
-  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
-    rubicon-objc
-  ];
+  dependencies =
+    [
+      bidict
+      packaging
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isLinux [ dbus-fast ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [ rubicon-objc ];
 
   # no tests available, do the imports check instead
   doCheck = false;
 
-  pythonImportsCheck = [
-    "desktop_notifier"
-  ];
+  pythonImportsCheck = [ "desktop_notifier" ];
 
   meta = with lib; {
     description = "Python library for cross-platform desktop notifications";
diff --git a/pkgs/development/python-modules/detect-secrets/default.nix b/pkgs/development/python-modules/detect-secrets/default.nix
index ae0e2c4cda2d0..820e204e118a4 100644
--- a/pkgs/development/python-modules/detect-secrets/default.nix
+++ b/pkgs/development/python-modules/detect-secrets/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, gibberish-detector
-, mock
-, pkgs
-, pyahocorasick
-, pytest7CheckHook
-, pythonOlder
-, pyyaml
-, requests
-, responses
-, unidiff
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gibberish-detector,
+  mock,
+  pkgs,
+  pyahocorasick,
+  pytest7CheckHook,
+  pythonOlder,
+  pyyaml,
+  requests,
+  responses,
+  unidiff,
 }:
 
 buildPythonPackage rec {
   pname = "detect-secrets";
-  version = "1.4.0";
+  version = "1.5.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -23,8 +24,8 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "Yelp";
     repo = pname;
-    rev = "v${version}";
-    hash = "sha256-6EmL6XPySqcA3EA+FFkfw7Dkxl5LvyBorIw0hesV5eU=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-pNLAZUJhjZ3b01XaltJUJ9O7Blv6/pHQrRvURe7MJ5A=";
     leaveDotGit = true;
   };
 
@@ -60,14 +61,12 @@ buildPythonPackage rec {
     "test_start_halfway"
   ];
 
-  pythonImportsCheck = [
-    "detect_secrets"
-  ];
+  pythonImportsCheck = [ "detect_secrets" ];
 
   meta = with lib; {
-    description = "An enterprise friendly way of detecting and preventing secrets in code";
+    description = "Enterprise friendly way of detecting and preventing secrets in code";
     homepage = "https://github.com/Yelp/detect-secrets";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/detectron2/default.nix b/pkgs/development/python-modules/detectron2/default.nix
index badf5bb087713..95506510e2149 100644
--- a/pkgs/development/python-modules/detectron2/default.nix
+++ b/pkgs/development/python-modules/detectron2/default.nix
@@ -1,42 +1,42 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonRelaxDepsHook
-, ninja
-, which
-# build inputs
-, pillow
-, matplotlib
-, pycocotools
-, termcolor
-, yacs
-, tabulate
-, cloudpickle
-, tqdm
-, tensorboard
-, fvcore
-, iopath
-, omegaconf
-, hydra-core
-, packaging
-, torch
-, pydot
-, black
-# optional dependencies
-, fairscale
-, timm
-, scipy
-, shapely
-, pygments
-, psutil
-# check inputs
-, pytestCheckHook
-, torchvision
-, av
-, opencv4
-, pytest-mock
-, pybind11
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ninja,
+  which,
+  # build inputs
+  pillow,
+  matplotlib,
+  pycocotools,
+  termcolor,
+  yacs,
+  tabulate,
+  cloudpickle,
+  tqdm,
+  tensorboard,
+  fvcore,
+  iopath,
+  omegaconf,
+  hydra-core,
+  packaging,
+  torch,
+  pydot,
+  black,
+  # optional dependencies
+  fairscale,
+  timm,
+  scipy,
+  shapely,
+  pygments,
+  psutil,
+  # check inputs
+  pytestCheckHook,
+  torchvision,
+  av,
+  opencv4,
+  pytest-mock,
+  pybind11,
 }:
 
 let
@@ -71,16 +71,13 @@ buildPythonPackage {
   '';
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     ninja
     which
   ];
 
   buildInputs = [ pybind11 ];
 
-  pythonRelaxDeps = [
-    "black"
-  ];
+  pythonRelaxDeps = [ "black" ];
 
   propagatedBuildInputs = [
     pillow
@@ -136,40 +133,42 @@ buildPythonPackage {
     "tests/data/test_coco_evaluation.py"
   ];
 
-  disabledTests = [
-    # fails for some reason
-    "test_checkpoint_resume"
-    "test_map_style"
-    # requires shapely
-    "test_resize_and_crop"
-    # require caffe2
-    "test_predict_boxes_tracing"
-    "test_predict_probs_tracing"
-    "testMaskRCNN"
-    "testRetinaNet"
-    # require coco dataset
-    "test_default_trainer"
-    "test_unknown_category"
-    "test_build_dataloader_train"
-    "test_build_iterable_dataloader_train"
-    # require network access
-    "test_opencv_exif_orientation"
-    "test_read_exif_orientation"
-    # use deprecated api, numpy.bool
-    "test_BWmode_nomask"
-    "test_draw_binary_mask"
-    "test_draw_empty_mask_predictions"
-    "test_draw_instance_predictions"
-    "test_draw_no_metadata"
-    "test_overlay_instances"
-    "test_overlay_instances_no_boxes"
-    "test_get_bounding_box"
-  ] ++ lib.optionals (stdenv.isLinux && stdenv.isAarch64) [
-    "test_build_batch_dataloader_inference"
-    "test_build_dataloader_inference"
-    "test_build_iterable_dataloader_inference"
-    "test_to_iterable"
-  ];
+  disabledTests =
+    [
+      # fails for some reason
+      "test_checkpoint_resume"
+      "test_map_style"
+      # requires shapely
+      "test_resize_and_crop"
+      # require caffe2
+      "test_predict_boxes_tracing"
+      "test_predict_probs_tracing"
+      "testMaskRCNN"
+      "testRetinaNet"
+      # require coco dataset
+      "test_default_trainer"
+      "test_unknown_category"
+      "test_build_dataloader_train"
+      "test_build_iterable_dataloader_train"
+      # require network access
+      "test_opencv_exif_orientation"
+      "test_read_exif_orientation"
+      # use deprecated api, numpy.bool
+      "test_BWmode_nomask"
+      "test_draw_binary_mask"
+      "test_draw_empty_mask_predictions"
+      "test_draw_instance_predictions"
+      "test_draw_no_metadata"
+      "test_overlay_instances"
+      "test_overlay_instances_no_boxes"
+      "test_get_bounding_box"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
+      "test_build_batch_dataloader_inference"
+      "test_build_dataloader_inference"
+      "test_build_iterable_dataloader_inference"
+      "test_to_iterable"
+    ];
 
   pythonImportsCheck = [ "detectron2" ];
 
diff --git a/pkgs/development/python-modules/devgoldyutils/default.nix b/pkgs/development/python-modules/devgoldyutils/default.nix
new file mode 100644
index 0000000000000..db7b236e19eed
--- /dev/null
+++ b/pkgs/development/python-modules/devgoldyutils/default.nix
@@ -0,0 +1,30 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+}:
+
+buildPythonPackage rec {
+  pname = "devgoldyutils";
+  version = "3.0.0";
+  format = "pyproject";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "2kGu9QPP5WqKv2gO9DAkE9SNDerzNaEDRt5DrrYD9nQ=";
+  };
+
+  doCheck = false;
+
+  nativeBuildInputs = [ setuptools-scm ];
+
+  pythonImportsCheck = [ "devgoldyutils" ];
+
+  meta = {
+    description = "Collection of utility functions for Python used by mov-cli";
+    homepage = "https://github.com/THEGOLDENPRO/devgoldyutils";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ youhaveme9 ];
+  };
+}
diff --git a/pkgs/development/python-modules/devialet/default.nix b/pkgs/development/python-modules/devialet/default.nix
index 60f57090f40bb..a9490581ce348 100644
--- a/pkgs/development/python-modules/devialet/default.nix
+++ b/pkgs/development/python-modules/devialet/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,20 +21,14 @@ buildPythonPackage rec {
     hash = "sha256-oGa5tRCJAWBg/877UmmXnX7fkFLoxhyuG6gpXmyhRKo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "devialet"
-  ];
+  pythonImportsCheck = [ "devialet" ];
 
   meta = with lib; {
     description = "Library to interact with the Devialet API";
diff --git a/pkgs/development/python-modules/devito/default.nix b/pkgs/development/python-modules/devito/default.nix
index 064899b8e78eb..47340bd1325cb 100644
--- a/pkgs/development/python-modules/devito/default.nix
+++ b/pkgs/development/python-modules/devito/default.nix
@@ -1,57 +1,56 @@
-{ lib
-, stdenv
-, anytree
-, buildPythonPackage
-, cached-property
-, cgen
-, click
-, codepy
-, distributed
-, fetchFromGitHub
-, gcc
-, llvmPackages
-, matplotlib
-, multidict
-, nbval
-, psutil
-, py-cpuinfo
-, pyrevolve
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, scipy
-, sympy
+{
+  lib,
+  stdenv,
+  anytree,
+  buildPythonPackage,
+  setuptools,
+  cached-property,
+  cgen,
+  click,
+  codepy,
+  distributed,
+  fetchFromGitHub,
+  gcc,
+  llvmPackages,
+  matplotlib,
+  multidict,
+  nbval,
+  psutil,
+  py-cpuinfo,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  scipy,
+  sympy,
 }:
 
 buildPythonPackage rec {
   pname = "devito";
-  version = "4.8.3";
-  format = "setuptools";
+  version = "4.8.11";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "devitocodes";
     repo = "devito";
     rev = "refs/tags/v${version}";
-    hash = "sha256-g9rRJF1JrZ6+s3tj4RZHuGOjt5LJjtK9I5CJmq4CJL4=";
+    hash = "sha256-c8/b2dRwfH4naSVRaRon6/mBDva7RSDmi/TJUJp26g0=";
   };
 
-  pythonRemoveDeps = [
-    "codecov"
-    "flake8"
-    "pytest-runner"
-    "pytest-cov"
-  ];
+  # packaging.metadata.InvalidMetadata: 'python_version_3.8_' is invalid for 'provides-extra'
+  postPatch = ''
+    substituteInPlace requirements-testing.txt \
+      --replace-fail 'pooch; python_version >= "3.8"' "pooch"
+  '';
+
+  pythonRemoveDeps = [ "pip" ];
 
   pythonRelaxDeps = true;
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     anytree
     cached-property
     cgen
@@ -62,12 +61,9 @@ buildPythonPackage rec {
     multidict
     psutil
     py-cpuinfo
-    pyrevolve
     scipy
     sympy
-  ] ++ lib.optionals stdenv.cc.isClang [
-    llvmPackages.openmp
-  ];
+  ] ++ lib.optionals stdenv.cc.isClang [ llvmPackages.openmp ];
 
   nativeCheckInputs = [
     gcc
@@ -80,46 +76,68 @@ buildPythonPackage rec {
 
   # I've had to disable the following tests since they fail while using nix-build, but they do pass
   # outside the build. They mostly related to the usage of MPI in a sandboxed environment.
-  disabledTests = [
-    "test_assign_parallel"
-    "test_cache_blocking_structure_distributed"
-    "test_codegen_quality0"
-    "test_coefficients_w_xreplace"
-    "test_docstrings"
-    "test_docstrings[finite_differences.coefficients]"
-    "test_gs_parallel"
-    "test_if_halo_mpi"
-    "test_if_parallel"
-    "test_init_omp_env_w_mpi"
-    "test_loop_bounds_forward"
-    "test_mpi_nocomms"
-    "test_mpi"
-    "test_index_derivative"
-    "test_new_distributor"
-    "test_setupWOverQ"
-    "test_shortcuts"
-    "test_subdomainset_mpi"
-  ];
+  disabledTests =
+    [
+      "test_assign_parallel"
+      "test_cache_blocking_structure_distributed"
+      "test_codegen_quality0"
+      "test_coefficients_w_xreplace"
+      "test_docstrings"
+      "test_docstrings[finite_differences.coefficients]"
+      "test_gs_parallel"
+      "test_if_halo_mpi"
+      "test_if_parallel"
+      "test_index_derivative"
+      "test_init_omp_env_w_mpi"
+      "test_loop_bounds_forward"
+      "test_min_max_mpi"
+      "test_mpi"
+      "test_mpi_nocomms"
+      "test_new_distributor"
+      "test_setupWOverQ"
+      "test_shortcuts"
+      "test_stability_mpi"
+      "test_subdomainset_mpi"
+      "test_subdomains_mpi"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
+      # FAILED tests/test_unexpansion.py::Test2Pass::test_v0 - assert False
+      "test_v0"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # FAILED tests/test_caching.py::TestCaching::test_special_symbols - ValueError: not enough values to unpack (expected 3, got 2)
+      "test_special_symbols"
 
-  disabledTestPaths = [
-    "tests/test_pickle.py"
-    "tests/test_benchmark.py"
-    "tests/test_mpi.py"
-    "tests/test_autotuner.py"
-    "tests/test_data.py"
-    "tests/test_dse.py"
-    "tests/test_gradient.py"
-  ];
+      # FAILED tests/test_unexpansion.py::Test2Pass::test_v0 - codepy.CompileError: module compilation failed
+      "test_v0"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
+      # Numerical tests
+      "test_lm_fb"
+      "test_lm_ds"
+    ];
 
-  pythonImportsCheck = [
-    "devito"
-  ];
+  disabledTestPaths =
+    [
+      "tests/test_pickle.py"
+      "tests/test_benchmark.py"
+      "tests/test_mpi.py"
+      "tests/test_autotuner.py"
+      "tests/test_data.py"
+      "tests/test_dse.py"
+      "tests/test_gradient.py"
+    ]
+    ++ lib.optionals (
+      (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) || stdenv.hostPlatform.isDarwin
+    ) [ "tests/test_dle.py" ];
+
+  pythonImportsCheck = [ "devito" ];
 
-  meta = with lib; {
+  meta = {
     description = "Code generation framework for automated finite difference computation";
     homepage = "https://www.devitoproject.org/";
     changelog = "https://github.com/devitocodes/devito/releases/tag/v${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ atila ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ atila ];
   };
 }
diff --git a/pkgs/development/python-modules/devolo-home-control-api/default.nix b/pkgs/development/python-modules/devolo-home-control-api/default.nix
index 8d06b409d5781..b4f3ea395e0f9 100644
--- a/pkgs/development/python-modules/devolo-home-control-api/default.nix
+++ b/pkgs/development/python-modules/devolo-home-control-api/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools-scm
-, websocket-client
-, zeroconf
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools-scm,
+  websocket-client,
+  zeroconf,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-4AyC1DDYtKl8SwJf75BbzoOAhbZXmBZ05ma9YmLzksM=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     requests
diff --git a/pkgs/development/python-modules/devolo-plc-api/default.nix b/pkgs/development/python-modules/devolo-plc-api/default.nix
index ad34b49280f6b..da12ca39dbd0d 100644
--- a/pkgs/development/python-modules/devolo-plc-api/default.nix
+++ b/pkgs/development/python-modules/devolo-plc-api/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, httpx
-, protobuf
-, pytest-asyncio
-, pytest-httpx
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, segno
-, setuptools-scm
-, syrupy
-, zeroconf
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpx,
+  protobuf,
+  pytest-asyncio,
+  pytest-httpx,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  segno,
+  setuptools-scm,
+  syrupy,
+  zeroconf,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,7 @@ buildPythonPackage rec {
       --replace "protobuf>=4.22.0" "protobuf"
   '';
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     httpx
@@ -54,9 +53,7 @@ buildPythonPackage rec {
     syrupy
   ];
 
-  pythonImportsCheck = [
-    "devolo_plc_api"
-  ];
+  pythonImportsCheck = [ "devolo_plc_api" ];
 
   meta = with lib; {
     description = "Module to interact with Devolo PLC devices";
diff --git a/pkgs/development/python-modules/devpi-common/default.nix b/pkgs/development/python-modules/devpi-common/default.nix
index 19b6b43f311f6..218db0fe558d0 100644
--- a/pkgs/development/python-modules/devpi-common/default.nix
+++ b/pkgs/development/python-modules/devpi-common/default.nix
@@ -1,49 +1,54 @@
-{ lib, buildPythonPackage, fetchPypi
-, pythonOlder
-, setuptools
-, setuptools-changelog-shortener
-, requests
-, tomli
-, pytestCheckHook
-, lazy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  lazy,
+  packaging-legacy,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools-changelog-shortener,
+  setuptools,
+  tomli,
 }:
 
 buildPythonPackage rec {
   pname = "devpi-common";
-  version = "4.0.3";
+  version = "4.0.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-+OAbT23wgPYihMzljFuxzh6GmwwjSqx60TVgl0X8Fz0=";
+    pname = "devpi_common";
+    inherit version;
+    hash = "sha256-I1oKmkXJblTGC6a6L3fYVs+Q8aacG+6UmIfp7cA6Qcw=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-changelog-shortener
   ];
 
-  propagatedBuildInputs = [
-    requests
+  dependencies = [
     lazy
+    packaging-legacy
+    requests
     tomli
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "devpi_common"
-  ];
+  pythonImportsCheck = [ "devpi_common" ];
 
   meta = with lib; {
     homepage = "https://github.com/devpi/devpi";
     description = "Utilities jointly used by devpi-server and devpi-client";
     changelog = "https://github.com/devpi/devpi/blob/common-${version}/common/CHANGELOG";
     license = licenses.mit;
-    maintainers = with maintainers; [ lewo makefu ];
+    maintainers = with maintainers; [
+      lewo
+      makefu
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/devtools/default.nix b/pkgs/development/python-modules/devtools/default.nix
index a36da40bece4c..03cec87fef30b 100644
--- a/pkgs/development/python-modules/devtools/default.nix
+++ b/pkgs/development/python-modules/devtools/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, asttokens
-, buildPythonPackage
-, executing
-, hatchling
-, fetchFromGitHub
-, pygments
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  asttokens,
+  buildPythonPackage,
+  executing,
+  hatchling,
+  fetchFromGitHub,
+  pygments,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-1HFbNswdKa/9cQX0Gf6lLW1V5Kt/N4X6/5kQDdzp1Wo=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     asttokens
@@ -53,9 +52,7 @@ buildPythonPackage rec {
     "tests/test_insert_assert.py"
   ];
 
-  pythonImportsCheck = [
-    "devtools"
-  ];
+  pythonImportsCheck = [ "devtools" ];
 
   meta = with lib; {
     description = "Python's missing debug print command and other development tools";
diff --git a/pkgs/development/python-modules/dfdiskcache/default.nix b/pkgs/development/python-modules/dfdiskcache/default.nix
index d7a7de367a286..6008180900245 100644
--- a/pkgs/development/python-modules/dfdiskcache/default.nix
+++ b/pkgs/development/python-modules/dfdiskcache/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pandas
-, setuptools
-, simplesqlite
-, typing-extensions
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pandas,
+  setuptools,
+  simplesqlite,
+  typing-extensions,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/diagrams/default.nix b/pkgs/development/python-modules/diagrams/default.nix
index 963161e7c77eb..85eafa12893b6 100644
--- a/pkgs/development/python-modules/diagrams/default.nix
+++ b/pkgs/development/python-modules/diagrams/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, jinja2
-, poetry-core
-, round
-, graphviz
-, inkscape
-, imagemagick
-, pytestCheckHook
-, typed-ast
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  jinja2,
+  poetry-core,
+  round,
+  graphviz,
+  inkscape,
+  imagemagick,
+  pytestCheckHook,
+  typed-ast,
 }:
 
 buildPythonPackage rec {
@@ -45,7 +46,8 @@ buildPythonPackage rec {
   # Despite living in 'tool.poetry.dependencies',
   # these are only used at build time to process the image resource files
   nativeBuildInputs = [
-    inkscape imagemagick
+    inkscape
+    imagemagick
     jinja2
     poetry-core
     round
@@ -56,13 +58,9 @@ buildPythonPackage rec {
     typed-ast
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "diagrams"
-  ];
+  pythonImportsCheck = [ "diagrams" ];
 
   meta = with lib; {
     description = "Diagram as Code";
diff --git a/pkgs/development/python-modules/diceware/default.nix b/pkgs/development/python-modules/diceware/default.nix
index 4f4094e2cf9c5..7780fd5327bdf 100644
--- a/pkgs/development/python-modules/diceware/default.nix
+++ b/pkgs/development/python-modules/diceware/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,22 +24,16 @@ buildPythonPackage rec {
       --replace "'pytest_runner'," ""
   '';
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  propagatedBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pytestFlagsArray = [
     # see https://github.com/ulif/diceware/commit/a7d844df76cd4b95a717f21ef5aa6167477b6733
     "-m 'not packaging'"
   ];
 
-  pythonImportsCheck = [
-    "diceware"
-  ];
+  pythonImportsCheck = [ "diceware" ];
 
   meta = with lib; {
     description = "Generates passphrases by concatenating words randomly picked from wordlists";
diff --git a/pkgs/development/python-modules/dicom-numpy/default.nix b/pkgs/development/python-modules/dicom-numpy/default.nix
index 84ec407606b66..aeb867e0a019c 100644
--- a/pkgs/development/python-modules/dicom-numpy/default.nix
+++ b/pkgs/development/python-modules/dicom-numpy/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, numpy
-, pydicom
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  numpy,
+  pydicom,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     pydicom
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dicom_numpy"
-  ];
+  pythonImportsCheck = [ "dicom_numpy" ];
 
   meta = with lib; {
     description = "Read DICOM files into Numpy arrays";
diff --git a/pkgs/development/python-modules/dicom2nifti/default.nix b/pkgs/development/python-modules/dicom2nifti/default.nix
index f6dc8cd20a687..0e12fe09c775b 100644
--- a/pkgs/development/python-modules/dicom2nifti/default.nix
+++ b/pkgs/development/python-modules/dicom2nifti/default.nix
@@ -1,38 +1,49 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, gdcm
-, nibabel
-, numpy
-, pydicom
-, scipy
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  gdcm,
+  nibabel,
+  numpy,
+  pydicom,
+  scipy,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "dicom2nifti";
-  version = "2.4.8";
-  format = "setuptools";
+  version = "2.4.11";
+  pyproject = true;
+
   disabled = pythonOlder "3.6";
 
   # no tests in PyPI dist
   src = fetchFromGitHub {
     owner = "icometrix";
     repo = pname;
-    rev = version;
-    hash = "sha256-2Pspxdeu3pHwXpbjS6bQQnvdeMuITRwYarPuLlmNcv8";
+    rev = "refs/tags/${version}";
+    hash = "sha256-/JauQZcCQDl1ukcSE3YPbf1SyhVxDNJUlqnFwdlwYQY=";
   };
 
-  propagatedBuildInputs = [ gdcm nibabel numpy pydicom scipy setuptools ];
+  build-system = [ setuptools ];
+
+  propagatedBuildInputs = [
+    gdcm
+    nibabel
+    numpy
+    pydicom
+    scipy
+  ];
 
   # python-gdcm just builds the python interface provided by the "gdcm" package, so
   # we should be able to replace "python-gdcm" with "gdcm" but this doesn't work
   # (similar to https://github.com/NixOS/nixpkgs/issues/84774)
   postPatch = ''
-    substituteInPlace setup.py --replace "python-gdcm" ""
-    substituteInPlace tests/test_generic.py --replace "from common" "from dicom2nifti.common"
+    substituteInPlace setup.py --replace-fail "python-gdcm" ""
+    substituteInPlace tests/test_generic.py --replace-fail "from common" "from dicom2nifti.common"
+    substituteInPlace tests/test_ge.py --replace-fail "import convert_generic" "import dicom2nifti.convert_generic as convert_generic"
   '';
 
   nativeCheckInputs = [ pytestCheckHook ];
diff --git a/pkgs/development/python-modules/dicomweb-client/default.nix b/pkgs/development/python-modules/dicomweb-client/default.nix
index 1a4f528ec11e9..c5624deaf46e2 100644
--- a/pkgs/development/python-modules/dicomweb-client/default.nix
+++ b/pkgs/development/python-modules/dicomweb-client/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, pytest-localserver
-, numpy
-, pillow
-, pydicom
-, requests
-, retrying
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  pytest-localserver,
+  numpy,
+  pillow,
+  pydicom,
+  requests,
+  retrying,
 }:
 
 buildPythonPackage rec {
@@ -37,9 +38,7 @@ buildPythonPackage rec {
     pytest-localserver
   ];
 
-  pythonImportsCheck = [
-    "dicomweb_client"
-  ];
+  pythonImportsCheck = [ "dicomweb_client" ];
 
   meta = with lib; {
     description = "Python client for DICOMweb RESTful services";
diff --git a/pkgs/development/python-modules/dict2xml/default.nix b/pkgs/development/python-modules/dict2xml/default.nix
index 6a68a695fbbb1..6887f8a13ac73 100644
--- a/pkgs/development/python-modules/dict2xml/default.nix
+++ b/pkgs/development/python-modules/dict2xml/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, hatchling
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  hatchling,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-GNvG1VFz/qkkTrKleMrq8n6kcIYtfhUlQMyCqH9uQzw=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   # Tests are inplemented in a custom DSL (RSpec)
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dict2xml"
-  ];
+  pythonImportsCheck = [ "dict2xml" ];
 
   meta = with lib; {
     description = "Library to convert a Python dictionary into an XML string";
diff --git a/pkgs/development/python-modules/dictdiffer/default.nix b/pkgs/development/python-modules/dictdiffer/default.nix
index acbc3996fbc6b..496c3d51af71f 100644
--- a/pkgs/development/python-modules/dictdiffer/default.nix
+++ b/pkgs/development/python-modules/dictdiffer/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -20,13 +21,9 @@ buildPythonPackage rec {
     hash = "sha256-lQyPs3lQWtsvNPuvvwJUTDzrFaOX5uwGuRHe3yWUheU=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace setup.py \
@@ -35,9 +32,7 @@ buildPythonPackage rec {
       --replace ' --isort --pydocstyle --pycodestyle --doctest-glob="*.rst" --doctest-modules --cov=dictdiffer --cov-report=term-missing' ""
   '';
 
-  pythonImportsCheck = [
-    "dictdiffer"
-  ];
+  pythonImportsCheck = [ "dictdiffer" ];
 
   meta = with lib; {
     description = "Module to diff and patch dictionaries";
diff --git a/pkgs/development/python-modules/dictionaries/default.nix b/pkgs/development/python-modules/dictionaries/default.nix
index 0395c7796d9f4..1574d2e9e7e7a 100644
--- a/pkgs/development/python-modules/dictionaries/default.nix
+++ b/pkgs/development/python-modules/dictionaries/default.nix
@@ -1,4 +1,9 @@
-{ buildPythonPackage, fetchPypi, lib, six }:
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  six,
+}:
 
 buildPythonPackage rec {
   pname = "dictionaries";
diff --git a/pkgs/development/python-modules/dicttoxml/default.nix b/pkgs/development/python-modules/dicttoxml/default.nix
index d205aa0cd4714..43ef9df098207 100644
--- a/pkgs/development/python-modules/dicttoxml/default.nix
+++ b/pkgs/development/python-modules/dicttoxml/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/dicttoxml2/default.nix b/pkgs/development/python-modules/dicttoxml2/default.nix
index 8730634985354..d056efe699195 100644
--- a/pkgs/development/python-modules/dicttoxml2/default.nix
+++ b/pkgs/development/python-modules/dicttoxml2/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,11 +20,9 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dicttoxml2"
-  ];
+  pythonImportsCheck = [ "dicttoxml2" ];
 
-  meta = with lib;{
+  meta = with lib; {
     description = "Converts a Python dictionary or other native data type into a valid XML string";
     homepage = "https://pypi.org/project/dicttoxml2/";
     license = licenses.gpl2Only;
diff --git a/pkgs/development/python-modules/diff-cover/default.nix b/pkgs/development/python-modules/diff-cover/default.nix
index 9ca63fd2b533e..9a15282ef9385 100644
--- a/pkgs/development/python-modules/diff-cover/default.nix
+++ b/pkgs/development/python-modules/diff-cover/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, chardet
-, fetchPypi
-, jinja2
-, jinja2-pluralize
-, pluggy
-, poetry-core
-, pycodestyle
-, pyflakes
-, pygments
-, pylint
-, pytest-datadir
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, tomli
+{
+  lib,
+  buildPythonPackage,
+  chardet,
+  fetchPypi,
+  jinja2,
+  jinja2-pluralize,
+  pluggy,
+  poetry-core,
+  pycodestyle,
+  pyflakes,
+  pygments,
+  pylint,
+  pytest-datadir,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  tomli,
 }:
 
 buildPythonPackage rec {
   pname = "diff-cover";
-  version = "9.0.0";
+  version = "9.2.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -27,12 +28,10 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "diff_cover";
     inherit version;
-    hash = "sha256-HchR0/PzIMBI0DYY5MDZhh+koVBrQl0tCaVksgyVZ0o=";
+    hash = "sha256-haCzU+u7Z4+eh+owP3W1Rb0LrKOPVjIZu3LyroYrujY=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     chardet
@@ -59,9 +58,7 @@ buildPythonPackage rec {
     "console"
   ];
 
-  pythonImportsCheck = [
-    "diff_cover"
-  ];
+  pythonImportsCheck = [ "diff_cover" ];
 
   meta = with lib; {
     description = "Automatically find diff lines that need test coverage";
diff --git a/pkgs/development/python-modules/diff-match-patch/default.nix b/pkgs/development/python-modules/diff-match-patch/default.nix
index 93d9e3288ddae..7c7936ec88166 100644
--- a/pkgs/development/python-modules/diff-match-patch/default.nix
+++ b/pkgs/development/python-modules/diff-match-patch/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -15,18 +16,14 @@ buildPythonPackage rec {
     hash = "sha256-lTAZzbnJ0snke1sSvP889HRvxFmOtAYHb6H8J+ah8Vw=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   meta = with lib; {
     homepage = "https://github.com/diff-match-patch-python/diff-match-patch";
     description = "Diff, Match and Patch libraries for Plain Text";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/diffenator2/default.nix b/pkgs/development/python-modules/diffenator2/default.nix
new file mode 100644
index 0000000000000..e5297364fc183
--- /dev/null
+++ b/pkgs/development/python-modules/diffenator2/default.nix
@@ -0,0 +1,95 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonRelaxDepsHook,
+  pytestCheckHook,
+  poetry-core,
+  poetry-dynamic-versioning,
+  blackrenderer,
+  fonttools,
+  freetype-py,
+  gflanguages,
+  glyphsets,
+  jinja2,
+  ninja,
+  pillow,
+  protobuf,
+  pyahocorasick,
+  python-bidi,
+  selenium,
+  tqdm,
+  uharfbuzz,
+  unicodedata2,
+  youseedee,
+  numpy,
+}:
+
+buildPythonPackage rec {
+  pname = "diffenator2";
+  version = "0.4.3";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "googlefonts";
+    repo = "diffenator2";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-zeNcNR14ieY6Inp4kOwIPXd6S+/wFdMFp6wbiqgB/iA=";
+  };
+
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
+
+  pythonRelaxDeps = [ "protobuf" ];
+
+  build-system = [
+    poetry-core
+    poetry-dynamic-versioning
+  ];
+
+  dependencies = [
+    blackrenderer
+    fonttools
+    freetype-py
+    gflanguages
+    glyphsets
+    jinja2
+    ninja
+    pillow
+    protobuf
+    pyahocorasick
+    python-bidi
+    selenium
+    tqdm
+    uharfbuzz
+    unicodedata2
+    youseedee
+    numpy
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  disabledTests = [
+    # requires internet
+    "test_download_google_fonts_family_to_file"
+    "test_download_google_fonts_family_to_bytes"
+    "test_download_google_fonts_family_not_existing"
+    "test_download_latest_github_release"
+  ];
+
+  disabledTestPaths = [
+    # Want the files downloaded by the tests above
+    "tests/test_functional.py"
+    "tests/test_html.py"
+    "tests/test_matcher.py"
+    "tests/test_font.py"
+  ];
+
+  meta = {
+    description = "Font comparison tool that will not stop until your fonts are exhaustively compared";
+    homepage = "https://github.com/googlefonts/diffenator2";
+    changelog = "https://github.com/googlefonts/diffenator2/releases/tag/v${version}";
+    license = lib.licenses.asl20;
+    mainProgram = "diffenator2";
+    maintainers = with lib.maintainers; [ jopejoe1 ];
+  };
+}
diff --git a/pkgs/development/python-modules/diffimg/default.nix b/pkgs/development/python-modules/diffimg/default.nix
index c1769d118f90b..4136041f7d82e 100644
--- a/pkgs/development/python-modules/diffimg/default.nix
+++ b/pkgs/development/python-modules/diffimg/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pillow
-, unittestCheckHook
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pillow,
+  unittestCheckHook,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
@@ -20,23 +21,21 @@ buildPythonPackage rec {
 
   # it imports the wrong diff,
   # fix offered to upstream https://github.com/nicolashahn/diffimg/pull/6
-  postPatch = ''
-    substituteInPlace diffimg/test.py \
-      --replace-warn "from diff import diff" "from diffimg.diff import diff"
-  '' + lib.optionalString (pythonAtLeast "3.12") ''
-    substituteInPlace diffimg/test.py \
-      --replace-warn "3503192421617232" "3503192421617233"
-  '';
+  postPatch =
+    ''
+      substituteInPlace diffimg/test.py \
+        --replace-warn "from diff import diff" "from diffimg.diff import diff"
+    ''
+    + lib.optionalString (pythonAtLeast "3.12") ''
+      substituteInPlace diffimg/test.py \
+        --replace-warn "3503192421617232" "3503192421617233"
+    '';
 
-  propagatedBuildInputs = [
-    pillow
-  ];
+  propagatedBuildInputs = [ pillow ];
 
   pythonImportsCheck = [ "diffimg" ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   meta = with lib; {
     description = "Differentiate images in python - get a ratio or percentage difference, and generate a diff image";
diff --git a/pkgs/development/python-modules/diffsync/default.nix b/pkgs/development/python-modules/diffsync/default.nix
index ff96650b920f2..28ea4eb3a9f52 100644
--- a/pkgs/development/python-modules/diffsync/default.nix
+++ b/pkgs/development/python-modules/diffsync/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, buildPythonPackage
-, colorama
-, fetchFromGitHub
-, packaging
-, poetry-core
-, pydantic
-, pythonRelaxDepsHook
-, redis
-, structlog
+{
+  lib,
+  buildPythonPackage,
+  colorama,
+  fetchFromGitHub,
+  packaging,
+  poetry-core,
+  pydantic,
+  redis,
+  structlog,
 }:
 
 buildPythonPackage rec {
@@ -24,7 +24,6 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = [
@@ -40,9 +39,7 @@ buildPythonPackage rec {
     structlog
   ];
 
-  pythonImportsCheck = [
-    "diffsync"
-  ];
+  pythonImportsCheck = [ "diffsync" ];
 
   meta = with lib; {
     description = "Utility library for comparing and synchronizing different datasets";
diff --git a/pkgs/development/python-modules/diffusers/default.nix b/pkgs/development/python-modules/diffusers/default.nix
index 39464efe47fdb..ee540ee7e9c80 100644
--- a/pkgs/development/python-modules/diffusers/default.nix
+++ b/pkgs/development/python-modules/diffusers/default.nix
@@ -1,45 +1,46 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, writeText
-, setuptools
-, wheel
-, filelock
-, huggingface-hub
-, importlib-metadata
-, numpy
-, pillow
-, regex
-, requests
-, safetensors
-# optional dependencies
-, accelerate
-, datasets
-, flax
-, jax
-, jaxlib
-, jinja2
-, peft
-, protobuf
-, tensorboard
-, torch
-# test dependencies
-, parameterized
-, pytest-timeout
-, pytest-xdist
-, pytestCheckHook
-, requests-mock
-, scipy
-, sentencepiece
-, torchsde
-, transformers
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  writeText,
+  setuptools,
+  filelock,
+  huggingface-hub,
+  importlib-metadata,
+  numpy,
+  pillow,
+  regex,
+  requests,
+  safetensors,
+  # optional dependencies
+  accelerate,
+  datasets,
+  flax,
+  jax,
+  jaxlib,
+  jinja2,
+  peft,
+  protobuf,
+  tensorboard,
+  torch,
+  # test dependencies
+  parameterized,
+  pytest-timeout,
+  pytest-xdist,
+  pytestCheckHook,
+  requests-mock,
+  scipy,
+  sentencepiece,
+  torchsde,
+  transformers,
+  pythonAtLeast,
+  diffusers,
 }:
 
 buildPythonPackage rec {
   pname = "diffusers";
-  version = "0.27.2";
+  version = "0.30.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -48,15 +49,12 @@ buildPythonPackage rec {
     owner = "huggingface";
     repo = "diffusers";
     rev = "refs/tags/v${version}";
-    hash = "sha256-aRnbU3jN40xaCsoMFyRt1XB+hyIYMJP2b/T1yZho90c=";
+    hash = "sha256-fry16HDAjpuosSHSDDm/Y5dTNkpsGM6S33hOJ3n2x7M=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     filelock
     huggingface-hub
     importlib-metadata
@@ -87,12 +85,12 @@ buildPythonPackage rec {
     ];
   };
 
-  pythonImportsCheck = [
-    "diffusers"
-  ];
+  pythonImportsCheck = [ "diffusers" ];
 
-  # tests crash due to torch segmentation fault
-  doCheck = !(stdenv.isLinux && stdenv.isAarch64);
+  # it takes a few hours
+  doCheck = false;
+
+  passthru.tests.pytest = diffusers.overridePythonAttrs { doCheck = true; };
 
   nativeCheckInputs = [
     parameterized
@@ -106,50 +104,56 @@ buildPythonPackage rec {
     transformers
   ] ++ passthru.optional-dependencies.torch;
 
-  preCheck = let
-    # This pytest hook mocks and catches attempts at accessing the network
-    # tests that try to access the network will raise, get caught, be marked as skipped and tagged as xfailed.
-    # cf. python3Packages.shap
-    conftestSkipNetworkErrors = writeText "conftest.py" ''
-      from _pytest.runner import pytest_runtest_makereport as orig_pytest_runtest_makereport
-      import urllib3
-
-      class NetworkAccessDeniedError(RuntimeError): pass
-      def deny_network_access(*a, **kw):
-        raise NetworkAccessDeniedError
-
-      urllib3.connection.HTTPSConnection._new_conn = deny_network_access
-
-      def pytest_runtest_makereport(item, call):
-        tr = orig_pytest_runtest_makereport(item, call)
-        if call.excinfo is not None and call.excinfo.type is NetworkAccessDeniedError:
-            tr.outcome = 'skipped'
-            tr.wasxfail = "reason: Requires network access."
-        return tr
+  preCheck =
+    let
+      # This pytest hook mocks and catches attempts at accessing the network
+      # tests that try to access the network will raise, get caught, be marked as skipped and tagged as xfailed.
+      # cf. python3Packages.shap
+      conftestSkipNetworkErrors = writeText "conftest.py" ''
+        from _pytest.runner import pytest_runtest_makereport as orig_pytest_runtest_makereport
+        import urllib3
+
+        class NetworkAccessDeniedError(RuntimeError): pass
+        def deny_network_access(*a, **kw):
+          raise NetworkAccessDeniedError
+
+        urllib3.connection.HTTPSConnection._new_conn = deny_network_access
+
+        def pytest_runtest_makereport(item, call):
+          tr = orig_pytest_runtest_makereport(item, call)
+          if call.excinfo is not None and call.excinfo.type is NetworkAccessDeniedError:
+              tr.outcome = 'skipped'
+              tr.wasxfail = "reason: Requires network access."
+          return tr
+      '';
+    in
+    ''
+      export HOME=$TMPDIR
+      cat ${conftestSkipNetworkErrors} >> tests/conftest.py
     '';
-  in ''
-    export HOME=$TMPDIR
-    cat ${conftestSkipNetworkErrors} >> tests/conftest.py
-  '';
 
-  pytestFlagsArray = [
-    "tests/"
-  ];
-
-  disabledTests = [
-    # depends on current working directory
-    "test_deprecate_stacklevel"
-    # fails due to precision of floating point numbers
-    "test_model_cpu_offload_forward_pass"
-    # tries to run ruff which we have intentionally removed from nativeCheckInputs
-    "test_is_copy_consistent"
-  ];
+  pytestFlagsArray = [ "tests/" ];
+
+  disabledTests =
+    [
+      # depends on current working directory
+      "test_deprecate_stacklevel"
+      # fails due to precision of floating point numbers
+      "test_model_cpu_offload_forward_pass"
+      # tries to run ruff which we have intentionally removed from nativeCheckInputs
+      "test_is_copy_consistent"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+
+      # RuntimeError: Dynamo is not supported on Python 3.12+
+      "test_from_save_pretrained_dynamo"
+    ];
 
   meta = with lib; {
     description = "State-of-the-art diffusion models for image and audio generation in PyTorch";
     mainProgram = "diffusers-cli";
     homepage = "https://github.com/huggingface/diffusers";
-    changelog = "https://github.com/huggingface/diffusers/releases/tag/${src.rev}";
+    changelog = "https://github.com/huggingface/diffusers/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = licenses.asl20;
     maintainers = with maintainers; [ natsukium ];
   };
diff --git a/pkgs/development/python-modules/digi-xbee/default.nix b/pkgs/development/python-modules/digi-xbee/default.nix
index 7514ba8609d00..8ba90f4d8ac57 100644
--- a/pkgs/development/python-modules/digi-xbee/default.nix
+++ b/pkgs/development/python-modules/digi-xbee/default.nix
@@ -1,4 +1,11 @@
-{ buildPythonPackage, fetchPypi, isPy27, pyserial, srp, lib }:
+{
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  pyserial,
+  srp,
+  lib,
+}:
 
 buildPythonPackage rec {
   pname = "digi-xbee";
@@ -11,7 +18,10 @@ buildPythonPackage rec {
     sha256 = "3b10e749431f406d80c189d872f4673b8d3cd510f7b411f817780a0e72499cd2";
   };
 
-  propagatedBuildInputs = [ pyserial srp ];
+  propagatedBuildInputs = [
+    pyserial
+    srp
+  ];
 
   # Upstream doesn't contain unit tests, only functional tests which require specific hardware
   doCheck = false;
diff --git a/pkgs/development/python-modules/dill/default.nix b/pkgs/development/python-modules/dill/default.nix
index cdfdb401e94d4..790cb9ce0cd63 100644
--- a/pkgs/development/python-modules/dill/default.nix
+++ b/pkgs/development/python-modules/dill/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, pythonOlder
-, setuptools
-
-# passthru tests
-, apache-beam
-, datasets
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  pythonOlder,
+  setuptools,
+
+  # passthru tests
+  apache-beam,
+  datasets,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-r65JgQH+5raiRX8NYELUB9B0zLy4z606EkFJaNpapNc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   checkPhase = ''
     runHook preCheck
diff --git a/pkgs/development/python-modules/dinghy/default.nix b/pkgs/development/python-modules/dinghy/default.nix
index f7f099b3bb1a7..451f4c6578f67 100644
--- a/pkgs/development/python-modules/dinghy/default.nix
+++ b/pkgs/development/python-modules/dinghy/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, aiofiles
-, aiohttp
-, backports-datetime-fromisoformat
-, click
-, click-log
-, emoji
-, glom
-, jinja2
-, pyyaml
-, freezegun
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  aiofiles,
+  aiohttp,
+  backports-datetime-fromisoformat,
+  click,
+  click-log,
+  emoji,
+  glom,
+  jinja2,
+  pyyaml,
+  freezegun,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     hash = "sha256-0U08QHQuNm7qaxhU8sNxeN0fZ4S8N0RYRsWjFUqhZSU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiofiles
@@ -51,16 +50,17 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "dinghy.cli"
-  ];
+  pythonImportsCheck = [ "dinghy.cli" ];
 
   meta = with lib; {
-    description = "A GitHub activity digest tool";
+    description = "GitHub activity digest tool";
     mainProgram = "dinghy";
     homepage = "https://github.com/nedbat/dinghy";
     changelog = "https://github.com/nedbat/dinghy/blob/${version}/CHANGELOG.rst";
     license = licenses.asl20;
-    maintainers = with maintainers; [ trundle veehaitch ];
+    maintainers = with maintainers; [
+      trundle
+      veehaitch
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/dingz/default.nix b/pkgs/development/python-modules/dingz/default.nix
index 10354264861e0..9f8d8a4a551f1 100644
--- a/pkgs/development/python-modules/dingz/default.nix
+++ b/pkgs/development/python-modules/dingz/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dingz"
-  ];
+  pythonImportsCheck = [ "dingz" ];
 
   meta = with lib; {
     description = "Python API for interacting with Dingz devices";
diff --git a/pkgs/development/python-modules/dio-chacon-wifi-api/default.nix b/pkgs/development/python-modules/dio-chacon-wifi-api/default.nix
new file mode 100644
index 0000000000000..0e0230424558a
--- /dev/null
+++ b/pkgs/development/python-modules/dio-chacon-wifi-api/default.nix
@@ -0,0 +1,48 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  aiohttp,
+
+  # tests
+  aioresponses,
+  pytest-aiohttp,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "dio-chacon-wifi-api";
+  version = "1.2.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "cnico";
+    repo = "dio-chacon-wifi-api";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-4qE4laKQyfnAq2f/bkAqIfY/LnEmW+LTvNOCkTNFbAo=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [ aiohttp ];
+
+  nativeCheckInputs = [
+    aioresponses
+    pytest-aiohttp
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "dio_chacon_wifi_api" ];
+
+  meta = with lib; {
+    description = "Python API via wifi for DIO devices from Chacon. Useful for homeassistant or other automations";
+    homepage = "https://github.com/cnico/dio-chacon-wifi-api";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/development/python-modules/diofant/default.nix b/pkgs/development/python-modules/diofant/default.nix
index 303d00bbff297..9fa09e0df0704 100644
--- a/pkgs/development/python-modules/diofant/default.nix
+++ b/pkgs/development/python-modules/diofant/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchpatch
-, fetchPypi
-, gmpy2
-, mpmath
-, numpy
-, pythonOlder
-, scipy
-, setuptools-scm
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchpatch,
+  fetchPypi,
+  gmpy2,
+  mpmath,
+  numpy,
+  pythonOlder,
+  scipy,
+  setuptools-scm,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -37,9 +38,7 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    mpmath
-  ];
+  propagatedBuildInputs = [ mpmath ];
 
   passthru.optional-dependencies = {
     exports = [
@@ -47,9 +46,7 @@ buildPythonPackage rec {
       numpy
       scipy
     ];
-    gmpy = [
-      gmpy2
-    ];
+    gmpy = [ gmpy2 ];
   };
 
   # tests take ~1h
@@ -58,7 +55,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "diofant" ];
 
   meta = with lib; {
-    description = "A Python CAS library";
+    description = "Python CAS library";
     homepage = "https://diofant.readthedocs.io/";
     license = licenses.bsd3;
     maintainers = with maintainers; [ suhr ];
diff --git a/pkgs/development/python-modules/dipy/default.nix b/pkgs/development/python-modules/dipy/default.nix
index 22290b692240c..d1f9fdd4209cc 100644
--- a/pkgs/development/python-modules/dipy/default.nix
+++ b/pkgs/development/python-modules/dipy/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, packaging
-, cython
-, numpy
-, scipy
-, h5py
-, nibabel
-, tqdm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  packaging,
+  cython,
+  numpy,
+  scipy,
+  h5py,
+  nibabel,
+  tqdm,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/directv/default.nix b/pkgs/development/python-modules/directv/default.nix
index d8aaa9b7df677..66526a2d09754 100644
--- a/pkgs/development/python-modules/directv/default.nix
+++ b/pkgs/development/python-modules/directv/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, aiohttp
-, yarl
-, aresponses
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  aiohttp,
+  yarl,
+  aresponses,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/dirigera/default.nix b/pkgs/development/python-modules/dirigera/default.nix
index 36789741f83aa..7bb2a1150aef8 100644
--- a/pkgs/development/python-modules/dirigera/default.nix
+++ b/pkgs/development/python-modules/dirigera/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "dirigera";
-  version = "1.1.6";
+  version = "1.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "Leggin";
     repo = "dirigera";
     rev = "refs/tags/v${version}";
-    hash = "sha256-OXq8eJyZQBsJEK81GxstfMHqDShlZyOWSXLwP9Zfpqw=";
+    hash = "sha256-JmrKeHypWhqOWO0LpzNe1qyeXuYnMyZoM+2IQbz6WDU=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/dirty-equals/default.nix b/pkgs/development/python-modules/dirty-equals/default.nix
index 8ef6259761678..aa3434a050891 100644
--- a/pkgs/development/python-modules/dirty-equals/default.nix
+++ b/pkgs/development/python-modules/dirty-equals/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, pydantic
-, pytest-examples
-, pytestCheckHook
-, pythonOlder
-, pytz
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  pydantic,
+  pytest-examples,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
 }:
 
 let
@@ -24,13 +25,9 @@ let
       hash = "sha256-U6DNluthDgxzh6IOaKrN/JhX4u+ztY/jVp9IKh0iP34=";
     };
 
-    nativeBuildInputs = [
-      hatchling
-    ];
+    nativeBuildInputs = [ hatchling ];
 
-    propagatedBuildInputs = [
-      pytz
-    ];
+    propagatedBuildInputs = [ pytz ];
 
     doCheck = false;
     passthru.tests.pytest = dirty-equals.overrideAttrs { doCheck = true; };
@@ -41,9 +38,7 @@ let
       pytestCheckHook
     ];
 
-    pythonImportsCheck = [
-      "dirty_equals"
-    ];
+    pythonImportsCheck = [ "dirty_equals" ];
 
     meta = with lib; {
       description = "Module for doing dirty (but extremely useful) things with equals";
@@ -53,4 +48,5 @@ let
       maintainers = with maintainers; [ fab ];
     };
   };
-in dirty-equals
+in
+dirty-equals
diff --git a/pkgs/development/python-modules/dirtyjson/default.nix b/pkgs/development/python-modules/dirtyjson/default.nix
index 7cd4fce0e6509..3519d8ff4a568 100644
--- a/pkgs/development/python-modules/dirtyjson/default.nix
+++ b/pkgs/development/python-modules/dirtyjson/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,22 +19,19 @@ buildPythonPackage rec {
     hash = "sha256-kMpKGPP/MM6EnRANz0oAOVPHnTojSO8Fbx2cIiMaJf0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dirtyjson"
-  ];
+  pythonImportsCheck = [ "dirtyjson" ];
 
   meta = with lib; {
     description = "JSON decoder for Python that can extract data from the muck";
     homepage = "https://github.com/codecobblers/dirtyjson";
-    license = with licenses; [ afl21 /* and */ mit];
+    license = with licenses; [
+      afl21 # and
+      mit
+    ];
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/discid/default.nix b/pkgs/development/python-modules/discid/default.nix
index ec921be17ddb3..83cc31223521c 100644
--- a/pkgs/development/python-modules/discid/default.nix
+++ b/pkgs/development/python-modules/discid/default.nix
@@ -1,4 +1,10 @@
-{ lib, stdenv, libdiscid, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  stdenv,
+  libdiscid,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "discid";
@@ -11,7 +17,9 @@ buildPythonPackage rec {
   };
 
   patchPhase =
-    let extension = stdenv.hostPlatform.extensions.sharedLibrary; in
+    let
+      extension = stdenv.hostPlatform.extensions.sharedLibrary;
+    in
     ''
       substituteInPlace discid/libdiscid.py \
         --replace "_open_library(_LIB_NAME)" \
@@ -20,7 +28,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python binding of libdiscid";
-    homepage    = "https://python-discid.readthedocs.org/";
-    license     = licenses.lgpl3Plus;
+    homepage = "https://python-discid.readthedocs.org/";
+    license = licenses.lgpl3Plus;
   };
 }
diff --git a/pkgs/development/python-modules/discogs-client/default.nix b/pkgs/development/python-modules/discogs-client/default.nix
index ad4268b8f7121..cf7e28c54c3a9 100644
--- a/pkgs/development/python-modules/discogs-client/default.nix
+++ b/pkgs/development/python-modules/discogs-client/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, oauthlib
-, python-dateutil
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  oauthlib,
+  python-dateutil,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,13 +29,9 @@ buildPythonPackage rec {
     python-dateutil
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "discogs_client"
-  ];
+  pythonImportsCheck = [ "discogs_client" ];
 
   meta = with lib; {
     description = "Unofficial Python API client for Discogs";
diff --git a/pkgs/development/python-modules/discordpy/default.nix b/pkgs/development/python-modules/discordpy/default.nix
index a13eba26b7e12..73d8cdc7abd4e 100644
--- a/pkgs/development/python-modules/discordpy/default.nix
+++ b/pkgs/development/python-modules/discordpy/default.nix
@@ -1,43 +1,41 @@
-{ lib
-, stdenv
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, libopus
-, pynacl
-, pythonOlder
-, withVoice ? true
-, ffmpeg
+{
+  lib,
+  stdenv,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  libopus,
+  pynacl,
+  withVoice ? true,
+  ffmpeg,
+  setuptools,
 }:
 
-buildPythonPackage rec {
+let
   pname = "discord.py";
-  version = "2.3.2";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.8";
+  version = "2.4.0";
+in
+buildPythonPackage {
+  inherit pname version;
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "Rapptz";
-    repo = pname;
+    repo = "discord.py";
     rev = "refs/tags/v${version}";
-    hash = "sha256-bZoYdDpk34x+Vw1pAZ3EcTFp2JJ/Ow0Jfof/XjqeRmY=";
+    hash = "sha256-GIwXx7bRCH2+G3zlilJ/Tb8el50SDbxGGX2/1bqL3+U=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ] ++ lib.optionals withVoice [
-    libopus
-    pynacl
-    ffmpeg
-  ];
+  build-system = [ setuptools ];
 
-  patchPhase = ''
+  dependencies = [ aiohttp ] ++ lib.optionals withVoice [ pynacl ];
+
+  patchPhase = lib.optionalString withVoice ''
     substituteInPlace "discord/opus.py" \
-      --replace "ctypes.util.find_library('opus')" "'${libopus}/lib/libopus${stdenv.hostPlatform.extensions.sharedLibrary}'"
-  '' + lib.optionalString withVoice ''
+      --replace-fail "ctypes.util.find_library('opus')" "'${libopus}/lib/libopus${stdenv.hostPlatform.extensions.sharedLibrary}'"
+
     substituteInPlace "discord/player.py" \
-      --replace "executable='ffmpeg'" "executable='${ffmpeg}/bin/ffmpeg'"
+      --replace-fail "executable: str = 'ffmpeg'" "executable: str = '${lib.getExe ffmpeg}'"
   '';
 
   # Only have integration tests with discord
@@ -45,20 +43,19 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [
     "discord"
-    "discord.file"
-    "discord.member"
-    "discord.user"
-    "discord.state"
-    "discord.guild"
+    "discord.types"
+    "discord.ui"
     "discord.webhook"
-    "discord.ext.commands.bot"
+    "discord.app_commands"
+    "discord.ext.commands"
+    "discord.ext.tasks"
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Python wrapper for the Discord API";
     homepage = "https://discordpy.rtfd.org/";
     changelog = "https://github.com/Rapptz/discord.py/blob/v${version}/docs/whats_new.rst";
-    license = licenses.mit;
-    maintainers = with maintainers; [ ivar ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ getpsyched ];
   };
 }
diff --git a/pkgs/development/python-modules/discovery30303/default.nix b/pkgs/development/python-modules/discovery30303/default.nix
index fb3904046b8b7..d6a8a50d93b83 100644
--- a/pkgs/development/python-modules/discovery30303/default.nix
+++ b/pkgs/development/python-modules/discovery30303/default.nix
@@ -1,53 +1,48 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "discovery30303";
-  version = "0.2.1";
-  format = "pyproject";
+  version = "0.3.2";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "bdraco";
-    repo = pname;
-    # Commit points to 0.2.1, https://github.com/bdraco/discovery30303/issues/1
-    rev = "0d0b0fdca1a98662dd2e6174d25853703bd6bf07";
-    hash = "sha256-WSVMhiJxASxAkxs6RGuAVvEFS8TPxDKE9M99Rp8HKGM=";
+    repo = "discovery30303";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-P31P5GjIrMotdIXqqZ6LCbk5MIl2Kq4MzlWDw+aOcrE=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail " --cov=discovery30303" ""
+  '';
+
+  nativeBuildInputs = [ poetry-core ];
 
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "--asyncio-mode=auto"
-  ];
+  pytestFlagsArray = [ "--asyncio-mode=auto" ];
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace " --cov=discovery30303" ""
-  '';
-
-  pythonImportsCheck = [
-    "discovery30303"
-  ];
+  pythonImportsCheck = [ "discovery30303" ];
 
   meta = with lib; {
     description = "Module to discover devices that respond on port 30303";
     homepage = "https://github.com/bdraco/discovery30303";
-    license = with licenses; [ asl20 ];
+    changelog = "https://github.com/bdraco/discovery30303/releases/tag/v${version}";
+    license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/discum/default.nix b/pkgs/development/python-modules/discum/default.nix
new file mode 100644
index 0000000000000..ffa8b9957993e
--- /dev/null
+++ b/pkgs/development/python-modules/discum/default.nix
@@ -0,0 +1,59 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  brotli,
+  colorama,
+  filetype,
+  requests,
+  requests-toolbelt,
+  ua-parser,
+  websocket-client,
+  pycryptodome,
+  pypng,
+  pyqrcode,
+}:
+
+buildPythonPackage rec {
+  pname = "discum";
+  version = "1.4.1";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-/8TaAmfSPv/7kuymockSvC2uxXgHfuP+FXN8vuA9WHY=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    brotli
+    colorama
+    filetype
+    requests
+    requests-toolbelt
+    ua-parser
+    websocket-client
+  ];
+
+  passthru.optional-dependencies = {
+    ra = [
+      pycryptodome
+      pypng
+      pyqrcode
+    ];
+  };
+
+  pythonImportsCheck = [ "discum" ];
+
+  pythonRelaxDeps = [ "websocket-client" ];
+
+  meta = {
+    description = "Discord API Wrapper for Userbots/Selfbots written in Python";
+    homepage = "https://pypi.org/project/discum/";
+    changelog = "https://github.com/Merubokkusu/Discord-S.C.U.M/blob/v${version}/changelog.md";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ jokatzke ];
+  };
+}
diff --git a/pkgs/development/python-modules/diskcache/default.nix b/pkgs/development/python-modules/diskcache/default.nix
index 328777370782f..8211267f2eb09 100644
--- a/pkgs/development/python-modules/diskcache/default.nix
+++ b/pkgs/development/python-modules/diskcache/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-django
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-django,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -33,7 +34,7 @@ buildPythonPackage rec {
   '';
 
   # Darwin sandbox causes most tests to fail
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   disabledTests = [
     # Very time sensitive, can fail on over subscribed machines
@@ -47,14 +48,12 @@ buildPythonPackage rec {
     "test_cache_write_unpicklable_object"
   ];
 
-  pythonImportsCheck = [
-    "diskcache"
-  ];
+  pythonImportsCheck = [ "diskcache" ];
 
   meta = with lib; {
     description = "Disk and file backed persistent cache";
     homepage = "http://www.grantjenks.com/docs/diskcache/";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dissect-archive/default.nix b/pkgs/development/python-modules/dissect-archive/default.nix
new file mode 100644
index 0000000000000..95382864a6a81
--- /dev/null
+++ b/pkgs/development/python-modules/dissect-archive/default.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+}:
+
+buildPythonPackage rec {
+  pname = "dissect-archive";
+  version = "1.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "fox-it";
+    repo = "dissect.archive";
+    rev = "refs/tags/${version}";
+    hash = "sha256-j+p42DTRM/StP9S/5Kotfz8xrmdKaNLIyCkEZr9f5Nw=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    dissect-cstruct
+    dissect-util
+  ];
+
+  pythonImportsCheck = [ "dissect.archive" ];
+
+  meta = with lib; {
+    description = "Dissect module implementing parsers for various archive and backup formats";
+    homepage = "https://github.com/fox-it/dissect.archive";
+    changelog = "https://github.com/fox-it/dissect.archive/releases/tag/${version}";
+    license = licenses.agpl3Only;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/dissect-btrfs/default.nix b/pkgs/development/python-modules/dissect-btrfs/default.nix
index 8b492ae66701d..ef7f8fdd9f4ac 100644
--- a/pkgs/development/python-modules/dissect-btrfs/default.nix
+++ b/pkgs/development/python-modules/dissect-btrfs/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, google-crc32c
-, python-lzo
-, pythonOlder
-, setuptools
-, setuptools-scm
-, zstandard
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  google-crc32c,
+  python-lzo,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  zstandard,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-btrfs";
-  version = "1.2";
+  version = "1.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -22,7 +23,7 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect.btrfs";
     rev = "refs/tags/${version}";
-    hash = "sha256-nWgeChHHCAjD5I98h2/1HrO5688aZUM4j2PJiD1xP0g=";
+    hash = "sha256-cQC9lY80JOgLJZpNCwpvDldWjfbbI14uc9q/miAOBGM=";
   };
 
   nativeBuildInputs = [
@@ -40,17 +41,13 @@ buildPythonPackage rec {
       python-lzo
       zstandard
     ];
-    gcrc32 = [
-      google-crc32c
-    ];
+    gcrc32 = [ google-crc32c ];
   };
 
   # Issue with the test file handling
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dissect.btrfs"
-  ];
+  pythonImportsCheck = [ "dissect.btrfs" ];
 
   meta = with lib; {
     description = "Dissect module implementing a parser for the BTRFS file system";
diff --git a/pkgs/development/python-modules/dissect-cim/default.nix b/pkgs/development/python-modules/dissect-cim/default.nix
index c9aef3e961ec9..9c841cbf3e157 100644
--- a/pkgs/development/python-modules/dissect-cim/default.nix
+++ b/pkgs/development/python-modules/dissect-cim/default.nix
@@ -1,45 +1,42 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-cim";
-  version = "3.8";
-  format = "pyproject";
+  version = "3.10";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.cim";
     rev = "refs/tags/${version}";
-    hash = "sha256-NbGI6d1C3X7PbTsbDSCS4AUK6ueCBOuQDTNhkULrLYc=";
+    hash = "sha256-7Mv8yiWEs/mj/JKDrD1BxT75tQr13VgGj0yHdRltcYM=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dissect-cstruct
     dissect-util
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dissect.cim"
-  ];
+  pythonImportsCheck = [ "dissect.cim" ];
 
   meta = with lib; {
     description = "Dissect module implementing a parser for the Windows Common Information Model (CIM) database";
diff --git a/pkgs/development/python-modules/dissect-clfs/default.nix b/pkgs/development/python-modules/dissect-clfs/default.nix
index 1007dcc07c62b..3f3be066d2c49 100644
--- a/pkgs/development/python-modules/dissect-clfs/default.nix
+++ b/pkgs/development/python-modules/dissect-clfs/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-clfs";
-  version = "1.7";
+  version = "1.9";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -19,25 +20,19 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect.clfs";
     rev = "refs/tags/${version}";
-    hash = "sha256-DBnZlyk7rjuTpOjgFUmSNxqvIZk8OxACNqyFDcENFHM=";
+    hash = "sha256-VK17Q28Bqdu/NckBZNMJciWbnGkhfEbPmBeVo0etnW0=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    dissect-cstruct
-  ];
+  dependencies = [ dissect-cstruct ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dissect.clfs"
-  ];
+  pythonImportsCheck = [ "dissect.clfs" ];
 
   meta = with lib; {
     description = "Dissect module implementing a parser for the CLFS (Common Log File System) file system";
diff --git a/pkgs/development/python-modules/dissect-cobaltstrike/default.nix b/pkgs/development/python-modules/dissect-cobaltstrike/default.nix
index 7b25a817aa649..973cd01a7aa4f 100644
--- a/pkgs/development/python-modules/dissect-cobaltstrike/default.nix
+++ b/pkgs/development/python-modules/dissect-cobaltstrike/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, flow-record
-, httpx
-, lark
-, pycryptodome
-, pyshark
-, pytest-httpserver
-, pytestCheckHook
-, pythonOlder
-, rich
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  flow-record,
+  httpx,
+  lark,
+  pycryptodome,
+  pyshark,
+  pytest-httpserver,
+  pytestCheckHook,
+  pythonOlder,
+  rich,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-cobaltstrike";
   version = "1.0.0";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -30,12 +31,12 @@ buildPythonPackage rec {
     hash = "sha256-CS50c3r7sdxp3CRS6XJ4QUmUFtmhFg6rSdKfYzJSOV4=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dissect-cstruct
     dissect-util
     lark
@@ -69,9 +70,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "dissect.cobaltstrike"
-  ];
+  pythonImportsCheck = [ "dissect.cobaltstrike" ];
 
   meta = with lib; {
     description = "Dissect module implementing a parser for Cobalt Strike related data";
@@ -79,5 +78,8 @@ buildPythonPackage rec {
     changelog = "https://github.com/fox-it/dissect.cobaltstrike/releases/tag/${version}";
     license = licenses.agpl3Only;
     maintainers = with maintainers; [ fab ];
+    # Compatibility with dissect.struct 4.x
+    # https://github.com/fox-it/dissect.cobaltstrike/issues/53
+    broken = versionAtLeast dissect-cstruct.version "4";
   };
 }
diff --git a/pkgs/development/python-modules/dissect-cstruct/default.nix b/pkgs/development/python-modules/dissect-cstruct/default.nix
index a1ed699aef371..05127c50e84dd 100644
--- a/pkgs/development/python-modules/dissect-cstruct/default.nix
+++ b/pkgs/development/python-modules/dissect-cstruct/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-cstruct";
-  version = "3.13";
+  version = "4.1";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -18,21 +19,17 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect.cstruct";
     rev = "refs/tags/${version}";
-    hash = "sha256-QfnvWCI67y8GdCfXIRaehzb26IVZ8N0muUnNpr1NGJo=";
+    hash = "sha256-8CEvn2TJTXm0t4GBG9OQo9TgSy1+sTZIusaiiGNu05M=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dissect.cstruct"
-  ];
+  pythonImportsCheck = [ "dissect.cstruct" ];
 
   meta = with lib; {
     description = "Dissect module implementing a parser for C-like structures";
diff --git a/pkgs/development/python-modules/dissect-esedb/default.nix b/pkgs/development/python-modules/dissect-esedb/default.nix
index 0a6810749b6d7..5286413d55f6f 100644
--- a/pkgs/development/python-modules/dissect-esedb/default.nix
+++ b/pkgs/development/python-modules/dissect-esedb/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-esedb";
-  version = "3.12";
+  version = "3.14";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -20,7 +21,7 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect.esedb";
     rev = "refs/tags/${version}";
-    hash = "sha256-s3ZIK4ZtHU5B3f9ojVTC2Aqn3G7CosTvdV6U3cwEatY=";
+    hash = "sha256-IDLarSiI7GHjOOLibk2s/KqKwmozgIHdSfClPQXOsXI=";
   };
 
   nativeBuildInputs = [
@@ -33,13 +34,9 @@ buildPythonPackage rec {
     dissect-util
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dissect.esedb"
-  ];
+  pythonImportsCheck = [ "dissect.esedb" ];
 
   meta = with lib; {
     description = "Dissect module implementing a parser for Microsofts Extensible Storage Engine Database (ESEDB)";
diff --git a/pkgs/development/python-modules/dissect-etl/default.nix b/pkgs/development/python-modules/dissect-etl/default.nix
index c7b9236c75c33..598886447c5f3 100644
--- a/pkgs/development/python-modules/dissect-etl/default.nix
+++ b/pkgs/development/python-modules/dissect-etl/default.nix
@@ -1,45 +1,44 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  defusedxml,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-etl";
-  version = "3.8";
+  version = "3.10";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.etl";
     rev = "refs/tags/${version}";
-    hash = "sha256-yGpDZAaw11Sr5OPWxbY/NpZAV3jJUIgtTgDykCvYDtM=";
+    hash = "sha256-c8qbh0LSTAV23J//Kx76eeIjptW1cVcxBSqO22okRkU=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    defusedxml
     dissect-cstruct
     dissect-util
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dissect.etl"
-  ];
+  pythonImportsCheck = [ "dissect.etl" ];
 
   meta = with lib; {
     description = "Dissect module implementing a parser for Event Trace Log (ETL) files";
diff --git a/pkgs/development/python-modules/dissect-eventlog/default.nix b/pkgs/development/python-modules/dissect-eventlog/default.nix
index d8ace92854349..bdc1bb48112e0 100644
--- a/pkgs/development/python-modules/dissect-eventlog/default.nix
+++ b/pkgs/development/python-modules/dissect-eventlog/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-eventlog";
-  version = "3.7";
+  version = "3.9";
   format = "pyproject";
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.eventlog";
     rev = "refs/tags/${version}";
-    hash = "sha256-YiWW1olaIKoBfiZfr4TfIEsnj/C4cmn6sYosvjeiEfM=";
+    hash = "sha256-MXjWHbw/iEzKo4cgiYAHLzt6/Y7s9o9cPNV5TD0gqW8=";
   };
 
   nativeBuildInputs = [
@@ -33,13 +34,9 @@ buildPythonPackage rec {
     dissect-util
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dissect.eventlog"
-  ];
+  pythonImportsCheck = [ "dissect.eventlog" ];
 
   meta = with lib; {
     description = "Dissect module implementing parsers for the Windows EVT, EVTX and WEVT log file formats";
diff --git a/pkgs/development/python-modules/dissect-evidence/default.nix b/pkgs/development/python-modules/dissect-evidence/default.nix
index d8f9823634f47..ba44d902b5dd8 100644
--- a/pkgs/development/python-modules/dissect-evidence/default.nix
+++ b/pkgs/development/python-modules/dissect-evidence/default.nix
@@ -1,45 +1,42 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-evidence";
-  version = "3.8";
+  version = "3.10";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.evidence";
     rev = "refs/tags/${version}";
-    hash = "sha256-/zmMPSVR6F6SIU7xuotErmU2SsKEV43rs/4oTVKAWz0=";
+    hash = "sha256-VUdJkMtJkWGn79iopeZCTjAoD7mZkRxQaJ9Lem7Wkt8=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dissect-cstruct
     dissect-util
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dissect.evidence"
-  ];
+  pythonImportsCheck = [ "dissect.evidence" ];
 
   meta = with lib; {
     description = "Dissect module implementing a parsers for various forensic evidence file containers";
diff --git a/pkgs/development/python-modules/dissect-executable/default.nix b/pkgs/development/python-modules/dissect-executable/default.nix
index 8511b2df94485..8d7cf33acb59f 100644
--- a/pkgs/development/python-modules/dissect-executable/default.nix
+++ b/pkgs/development/python-modules/dissect-executable/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-executable";
-  version = "1.5";
+  version = "1.7";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -19,22 +20,20 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect.executable";
     rev = "refs/tags/${version}";
-    hash = "sha256-aAalU0TUqXc13WnxJvirG3QzQyMstecOfnXMdFT8IzU=";
+    hash = "sha256-qr8t+k0m9VoF2hLNilCLJ9BfATLRlZupF2C9l+6OMDo=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dissect-cstruct
     dissect-util
   ];
 
-  pythonImportsCheck = [
-    "dissect.executable"
-  ];
+  pythonImportsCheck = [ "dissect.executable" ];
 
   meta = with lib; {
     description = "Dissect module implementing a parser for various executable formats such as PE, ELF and Macho-O";
diff --git a/pkgs/development/python-modules/dissect-extfs/default.nix b/pkgs/development/python-modules/dissect-extfs/default.nix
index 6838350cb8dee..a9a2c7064c3df 100644
--- a/pkgs/development/python-modules/dissect-extfs/default.nix
+++ b/pkgs/development/python-modules/dissect-extfs/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-extfs";
-  version = "3.9";
+  version = "3.11";
   format = "pyproject";
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.extfs";
     rev = "refs/tags/${version}";
-    hash = "sha256-xZEULUm0I754f9MEIUZEua76SaY/WMFp4Q5BMNZ8fWU=";
+    hash = "sha256-i77pxr0+GbrGK5skevkb+g5JKB/aEmetJc+sbqO1o4I=";
   };
 
   nativeBuildInputs = [
@@ -33,13 +34,9 @@ buildPythonPackage rec {
     dissect-util
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dissect.extfs"
-  ];
+  pythonImportsCheck = [ "dissect.extfs" ];
 
   # Archive files seems to be corrupt
   doCheck = false;
diff --git a/pkgs/development/python-modules/dissect-fat/default.nix b/pkgs/development/python-modules/dissect-fat/default.nix
index 636265f4129c6..8cfd011f2c560 100644
--- a/pkgs/development/python-modules/dissect-fat/default.nix
+++ b/pkgs/development/python-modules/dissect-fat/default.nix
@@ -1,33 +1,34 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-fat";
-  version = "3.8";
+  version = "3.10";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.fat";
     rev = "refs/tags/${version}";
-    hash = "sha256-xFfB7QOZ3KjsOPQ1cPTRkqb0hgD4waOq8kkSTJStQ+E=";
+    hash = "sha256-jwTHvh1fqmVisW5rYDa5mOD1MMdBb10EHo945WHBnp8=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dissect-cstruct
     dissect-util
   ];
@@ -35,9 +36,7 @@ buildPythonPackage rec {
   # dissect.fat.exceptions.InvalidBPB: Invalid BS_jmpBoot
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dissect.fat"
-  ];
+  pythonImportsCheck = [ "dissect.fat" ];
 
   meta = with lib; {
     description = "Dissect module implementing a parser for the FAT file system";
diff --git a/pkgs/development/python-modules/dissect-ffs/default.nix b/pkgs/development/python-modules/dissect-ffs/default.nix
index f95319ade1353..29d5e3a68380d 100644
--- a/pkgs/development/python-modules/dissect-ffs/default.nix
+++ b/pkgs/development/python-modules/dissect-ffs/default.nix
@@ -1,45 +1,42 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-ffs";
-  version = "3.7";
-  format = "pyproject";
+  version = "3.9";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.ffs";
     rev = "refs/tags/${version}";
-    hash = "sha256-f7lXYJ2U8M+rZXrlbrAXAjizCVz6rAAZbeSg+iOmKdo=";
+    hash = "sha256-PRf3w9s0N3Zfcaoo3RtBEYcv7Ocs4h6V+3XshRI2XXI=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dissect-cstruct
     dissect-util
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dissect.ffs"
-  ];
+  pythonImportsCheck = [ "dissect.ffs" ];
 
   meta = with lib; {
     description = "Dissect module implementing a parser for the FFS file system";
diff --git a/pkgs/development/python-modules/dissect-hypervisor/default.nix b/pkgs/development/python-modules/dissect-hypervisor/default.nix
index 27bf9056e258f..26cf663c5ae27 100644
--- a/pkgs/development/python-modules/dissect-hypervisor/default.nix
+++ b/pkgs/development/python-modules/dissect-hypervisor/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, defusedxml
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, pycryptodome
-, pytestCheckHook
-, pythonOlder
-, rich
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  defusedxml,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  pycryptodome,
+  pytestCheckHook,
+  pythonOlder,
+  rich,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-hypervisor";
-  version = "3.12";
+  version = "3.15";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -23,15 +24,15 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect.hypervisor";
     rev = "refs/tags/${version}";
-    hash = "sha256-uQt+oyETjZHPa1QZfswpUX92ZCdzkR5x9deo15J+Fxo=";
+    hash = "sha256-bSDO8MMkDbyJ8ylB5PXmVHnzp/4UYQ4NKhOTXONVBzc=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     defusedxml
     dissect-cstruct
     dissect-util
@@ -44,13 +45,9 @@ buildPythonPackage rec {
     ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dissect.hypervisor"
-  ];
+  pythonImportsCheck = [ "dissect.hypervisor" ];
 
   meta = with lib; {
     description = "Dissect module implementing parsers for various hypervisor disk, backup and configuration files";
diff --git a/pkgs/development/python-modules/dissect-jffs/default.nix b/pkgs/development/python-modules/dissect-jffs/default.nix
index 234f61e007e33..a8c9fed87a46a 100644
--- a/pkgs/development/python-modules/dissect-jffs/default.nix
+++ b/pkgs/development/python-modules/dissect-jffs/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-jffs";
-  version = "1.1";
+  version = "1.3";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -19,7 +20,7 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect.jffs";
     rev = "refs/tags/${version}";
-    hash = "sha256-jzSPR4pkvXRQ3Q/qL7Oa3mLX3hW2IhbXuuO0jTc8Gvg=";
+    hash = "sha256-hpCgo3Qj8nWvqVdKESrR6Tafgvxuc7xzhq8oiHApbwM=";
   };
 
   nativeBuildInputs = [
@@ -35,9 +36,7 @@ buildPythonPackage rec {
   # Test file handling fails
   doCheck = true;
 
-  pythonImportsCheck = [
-    "dissect.jffs"
-  ];
+  pythonImportsCheck = [ "dissect.jffs" ];
 
   meta = with lib; {
     description = "Dissect module implementing a parser for the JFFS2 file system";
diff --git a/pkgs/development/python-modules/dissect-ntfs/default.nix b/pkgs/development/python-modules/dissect-ntfs/default.nix
index 61f3eaa645606..772df769ae392 100644
--- a/pkgs/development/python-modules/dissect-ntfs/default.nix
+++ b/pkgs/development/python-modules/dissect-ntfs/default.nix
@@ -1,45 +1,42 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-ntfs";
-  version = "3.9";
-  format = "pyproject";
+  version = "3.12";
+  pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.ntfs";
     rev = "refs/tags/${version}";
-    hash = "sha256-gjmxoxz4Qf2FsCP72siEpVLeqlZfvhuFZHSGr1n+cY0=";
+    hash = "sha256-zRAZqziVS4I7FDa7E4j67ekl9FXt0X+0oUpwmpNeI+I=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dissect-cstruct
     dissect-util
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dissect.ntfs"
-  ];
+  pythonImportsCheck = [ "dissect.ntfs" ];
 
   disabledTestPaths = [
     # Test is very time consuming
diff --git a/pkgs/development/python-modules/dissect-ole/default.nix b/pkgs/development/python-modules/dissect-ole/default.nix
index 1d527d33ab08d..e3a11e4e8a461 100644
--- a/pkgs/development/python-modules/dissect-ole/default.nix
+++ b/pkgs/development/python-modules/dissect-ole/default.nix
@@ -1,33 +1,34 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-ole";
-  version = "3.7";
-  format = "pyproject";
+  version = "3.9";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.ole";
     rev = "refs/tags/${version}";
-    hash = "sha256-Df6OU1vVsQl7d119W8+8YmUiy2+m6Dw3LpKnMVSRRR4=";
+    hash = "sha256-MW76O7JH9hkDlIncPqoydZ8bzpmXqmvvm0i1IOF6Pnk=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dissect-cstruct
     dissect-util
   ];
@@ -35,9 +36,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dissect.ole"
-  ];
+  pythonImportsCheck = [ "dissect.ole" ];
 
   meta = with lib; {
     description = "Dissect module implementing a parser for the Object Linking & Embedding (OLE) format";
diff --git a/pkgs/development/python-modules/dissect-regf/default.nix b/pkgs/development/python-modules/dissect-regf/default.nix
index 8f8ae56b383d7..8165c7ca2e3b5 100644
--- a/pkgs/development/python-modules/dissect-regf/default.nix
+++ b/pkgs/development/python-modules/dissect-regf/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-regf";
-  version = "3.9";
+  version = "3.11";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.regf";
     rev = "refs/tags/${version}";
-    hash = "sha256-NLhZnStcJCtXMBkayLjvuG7aK2aN3sWGZaPKVXIoRew=";
+    hash = "sha256-PzGA5OZ74bS25lC77pi6tG1x7BZcr9GtKbyKf9i/MwM=";
   };
 
   nativeBuildInputs = [
@@ -33,13 +34,9 @@ buildPythonPackage rec {
     dissect-util
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dissect.regf"
-  ];
+  pythonImportsCheck = [ "dissect.regf" ];
 
   meta = with lib; {
     description = "Dissect module implementing a parser for Windows registry file format";
diff --git a/pkgs/development/python-modules/dissect-shellitem/default.nix b/pkgs/development/python-modules/dissect-shellitem/default.nix
index 6ee624cc4256b..e8fbec0f8b133 100644
--- a/pkgs/development/python-modules/dissect-shellitem/default.nix
+++ b/pkgs/development/python-modules/dissect-shellitem/default.nix
@@ -1,45 +1,42 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-shellitem";
-  version = "3.7";
-  format = "pyproject";
+  version = "3.10";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.shellitem";
     rev = "refs/tags/${version}";
-    hash = "sha256-E5v7WuAd47X/1LSeaje4EUv+GuFq5Ksg4ndOScFreYE=";
+    hash = "sha256-BS+c9QbMMsaoZHyuv6jMxbQFQNJeLt3da8Fq/wwXesQ=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dissect-cstruct
     dissect-util
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dissect.shellitem"
-  ];
+  pythonImportsCheck = [ "dissect.shellitem" ];
 
   meta = with lib; {
     description = "Dissect module implementing a parser for the Shellitem structures";
diff --git a/pkgs/development/python-modules/dissect-sql/default.nix b/pkgs/development/python-modules/dissect-sql/default.nix
index 275e1a2913d38..e2b3341dfdaae 100644
--- a/pkgs/development/python-modules/dissect-sql/default.nix
+++ b/pkgs/development/python-modules/dissect-sql/default.nix
@@ -1,45 +1,42 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-sql";
-  version = "3.8";
-  format = "pyproject";
+  version = "3.10";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.sql";
     rev = "refs/tags/${version}";
-    hash = "sha256-f19l1NxIdkQRaqEAgeTIuloPY079TmnNZ/DLQEXFQIA=";
+    hash = "sha256-mhZvvPmREBY29U31POH8OfktVdNqNpQVIICPBin5WyI=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dissect-cstruct
     dissect-util
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dissect.sql"
-  ];
+  pythonImportsCheck = [ "dissect.sql" ];
 
   meta = with lib; {
     description = "Dissect module implementing a parsers for the SQLite database file format";
diff --git a/pkgs/development/python-modules/dissect-squashfs/default.nix b/pkgs/development/python-modules/dissect-squashfs/default.nix
index 9deecad417732..88f7f3ab84671 100644
--- a/pkgs/development/python-modules/dissect-squashfs/default.nix
+++ b/pkgs/development/python-modules/dissect-squashfs/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, lz4
-, python-lzo
-, pythonOlder
-, setuptools
-, setuptools-scm
-, zstandard
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  lz4,
+  python-lzo,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  zstandard,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-squashfs";
-  version = "1.4";
-  format = "pyproject";
+  version = "1.7";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -22,15 +23,15 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect.squashfs";
     rev = "refs/tags/${version}";
-    hash = "sha256-y6RXtHJev83m7mYdNLG640TRUPEGbi6l942zlMWXky0=";
+    hash = "sha256-ZRMCh/ycF594pADnX01S9oVxuY/cnJa4LLXP4ARoDs0=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dissect-cstruct
     dissect-util
   ];
@@ -43,9 +44,7 @@ buildPythonPackage rec {
     ];
   };
 
-  pythonImportsCheck = [
-    "dissect.squashfs"
-  ];
+  pythonImportsCheck = [ "dissect.squashfs" ];
 
   meta = with lib; {
     description = "Dissect module implementing a parser for the SquashFS file system";
diff --git a/pkgs/development/python-modules/dissect-target/default.nix b/pkgs/development/python-modules/dissect-target/default.nix
index 0e6e14be7239c..d2c632a1f564e 100644
--- a/pkgs/development/python-modules/dissect-target/default.nix
+++ b/pkgs/development/python-modules/dissect-target/default.nix
@@ -1,45 +1,50 @@
-{ lib
-, stdenv
-, asn1crypto
-, buildPythonPackage
-, defusedxml
-, dissect-cim
-, dissect-clfs
-, dissect-cstruct
-, dissect-esedb
-, dissect-etl
-, dissect-eventlog
-, dissect-evidence
-, dissect-extfs
-, dissect-fat
-, dissect-ffs
-, dissect-hypervisor
-, dissect-ntfs
-, dissect-regf
-, dissect-sql
-, dissect-shellitem
-, dissect-thumbcache
-, dissect-util
-, dissect-volume
-, dissect-xfs
-, fetchFromGitHub
-, flow-record
-, fusepy
-, ipython
-, pycryptodome
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, setuptools
-, setuptools-scm
-, structlog
-, yara-python
-, zstandard
+{
+  lib,
+  stdenv,
+  asn1crypto,
+  buildPythonPackage,
+  defusedxml,
+  dissect-btrfs,
+  dissect-cim,
+  dissect-clfs,
+  dissect-cstruct,
+  dissect-esedb,
+  dissect-etl,
+  dissect-eventlog,
+  dissect-evidence,
+  dissect-extfs,
+  dissect-fat,
+  dissect-ffs,
+  dissect-hypervisor,
+  dissect-ntfs,
+  dissect-regf,
+  dissect-shellitem,
+  dissect-sql,
+  dissect-thumbcache,
+  dissect-util,
+  dissect-volume,
+  dissect-xfs,
+  fetchFromGitHub,
+  flow-record,
+  fusepy,
+  impacket,
+  ipython,
+  paho-mqtt,
+  pycryptodome,
+  pytestCheckHook,
+  pythonOlder,
+  ruamel-yaml,
+  setuptools,
+  setuptools-scm,
+  structlog,
+  tomli,
+  yara-python,
+  zstandard,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-target";
-  version = "3.16";
+  version = "3.18";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -48,20 +53,20 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect.target";
     rev = "refs/tags/${version}";
-    hash = "sha256-2c8OFwbgSc7zwbjQm2g8y1ZyiYM0KPFjTEUrk06c174=";
+    hash = "sha256-jR+f4t0QXmm007lrGdMyF9vFa3NW35gZxs7pe9sdjfg=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace-warn "flow.record~=" "flow.record>="
+      --replace-fail "flow.record~=" "flow.record>="
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     defusedxml
     dissect-cstruct
     dissect-eventlog
@@ -78,6 +83,7 @@ buildPythonPackage rec {
   passthru.optional-dependencies = {
     full = [
       asn1crypto
+      dissect-btrfs
       dissect-cim
       dissect-clfs
       dissect-esedb
@@ -92,47 +98,64 @@ buildPythonPackage rec {
       fusepy
       ipython
       pycryptodome
-      pyyaml
+      ruamel-yaml
       yara-python
       zstandard
-    ];
+    ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
+    yara = [ yara-python ] ++ passthru.optional-dependencies.full;
+    smb = [ impacket ] ++ passthru.optional-dependencies.full;
+    mqtt = [ paho-mqtt ] ++ passthru.optional-dependencies.full;
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.full;
+  nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.full;
 
-  pythonImportsCheck = [
-    "dissect.target"
-  ];
+  pythonImportsCheck = [ "dissect.target" ];
 
-  disabledTests = [
-    "test_cpio"
-    # Test requires rdump
-    "test_exec_target_command"
-    # Issue with tar file
-    "test_dpapi_decrypt_blob"
-    "test_md"
-    "test_nested_md_lvm"
-    "test_notifications_appdb"
-    "test_notifications_wpndatabase"
-    "test_tar_anonymous_filesystems"
-    "test_tar_sensitive_drive_letter"
-    # Tests compare dates and times
-    "yum"
-    # Filesystem access, windows defender tests
-    "test_defender_quarantine_recovery"
-  ] ++
-  # test is broken on Darwin
-  lib.optional stdenv.hostPlatform.isDarwin "test_fs_attrs_no_os_listxattr";
+  disabledTests =
+    [
+      "test_cpio"
+      # Test requires rdump
+      "test_exec_target_command"
+      # Issue with tar file
+      "test_dpapi_decrypt_blob"
+      "test_md"
+      "test_nested_md_lvm"
+      "test_notifications_appdb"
+      "test_notifications_wpndatabase"
+      "test_tar_anonymous_filesystems"
+      "test_tar_sensitive_drive_letter"
+      # Tests compare dates and times
+      "yum"
+      # Filesystem access, windows defender tests
+      "test_config_tree_plugin"
+      "test_defender_quarantine_recovery"
+      "test_execute_pipeline"
+      "test_keychain_register_keychain_file"
+      "test_plugins_child_docker"
+      "test_plugins_child_wsl"
+      "test_reg_output"
+      "test_regflex"
+      "test_systemd_basic_syntax"
+      "test_target_cli_unicode_argparse"
+      "test_target_query"
+    ]
+    ++
+    # test is broken on Darwin
+    lib.optional stdenv.hostPlatform.isDarwin "test_fs_attrs_no_os_listxattr";
 
   disabledTestPaths = [
-    # Tests are using Windows paths
-    "tests/plugins/apps/browser/"
+    # Tests are using Windows paths, missing test files
+    "tests/plugins/apps/"
     # ValueError: Invalid Locate file magic. Expected /x00LOCATE02/x00
     "tests/plugins/os/unix/locate/"
     # Missing plugin support
-    "tests/tools/test_reg.py"
+    "tests/tools/test_dump.py"
+    "tests/plugins/os/"
+    "tests/plugins/filesystem/"
+    "tests/test_registration.py"
+    "tests/filesystems/"
+    "tests/test_filesystem.py"
+    "tests/loaders/"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/dissect-thumbcache/default.nix b/pkgs/development/python-modules/dissect-thumbcache/default.nix
index 6c1a68b64785d..4fed8a55122c2 100644
--- a/pkgs/development/python-modules/dissect-thumbcache/default.nix
+++ b/pkgs/development/python-modules/dissect-thumbcache/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-thumbcache";
-  version = "1.7";
+  version = "1.9";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -20,26 +21,22 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect.thumbcache";
     rev = "refs/tags/${version}";
-    hash = "sha256-t5LovLS+YMWQWMCFP6jh3SNiLb/Jy9we4FX6MmsIJmY=";
+    hash = "sha256-ab7Ci64eeeUcmY2opa16weuVvsWn5UgvSauE55gVH/w=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dissect-cstruct
     dissect-util
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dissect.thumbcache"
-  ];
+  pythonImportsCheck = [ "dissect.thumbcache" ];
 
   disabledTests = [
     # Don't run Windows related tests
diff --git a/pkgs/development/python-modules/dissect-util/default.nix b/pkgs/development/python-modules/dissect-util/default.nix
index d085d842b7119..a303691f3dd8b 100644
--- a/pkgs/development/python-modules/dissect-util/default.nix
+++ b/pkgs/development/python-modules/dissect-util/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-util";
-  version = "3.15";
+  version = "3.17";
   format = "pyproject";
 
   disabled = pythonOlder "3.9";
@@ -18,7 +19,7 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect.util";
     rev = "refs/tags/${version}";
-    hash = "sha256-JIrk6YRuW5B30d9fNaRFesO01ajcSy8ErkpFtM1Coaw=";
+    hash = "sha256-uCmHvpZ5/TjUb9A8+GhaTAAEfCM9LxQdUDPWAvd7P7w=";
   };
 
   nativeBuildInputs = [
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dissect.util"
-  ];
+  pythonImportsCheck = [ "dissect.util" ];
 
   meta = with lib; {
     description = "Dissect module implementing various utility functions for the other Dissect modules";
diff --git a/pkgs/development/python-modules/dissect-vmfs/default.nix b/pkgs/development/python-modules/dissect-vmfs/default.nix
index 147b048aee7d2..57511b5af47d0 100644
--- a/pkgs/development/python-modules/dissect-vmfs/default.nix
+++ b/pkgs/development/python-modules/dissect-vmfs/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-vmfs";
-  version = "3.7";
+  version = "3.9";
   format = "pyproject";
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.vmfs";
     rev = "refs/tags/${version}";
-    hash = "sha256-HJV7cwNMFvHURt2dk/c1YbgFaHXRESREJ5ucmUsuS78=";
+    hash = "sha256-855Rqz4WuTwopJo1yT8zsSvods3p+7EoB1sAXu3U5QU=";
   };
 
   nativeBuildInputs = [
@@ -33,13 +34,9 @@ buildPythonPackage rec {
     dissect-util
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dissect.vmfs"
-  ];
+  pythonImportsCheck = [ "dissect.vmfs" ];
 
   meta = with lib; {
     description = "Dissect module implementing a parser for the VMFS file system";
diff --git a/pkgs/development/python-modules/dissect-volume/default.nix b/pkgs/development/python-modules/dissect-volume/default.nix
index abddcf5d1d611..3a094cbd78801 100644
--- a/pkgs/development/python-modules/dissect-volume/default.nix
+++ b/pkgs/development/python-modules/dissect-volume/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-volume";
-  version = "3.9";
+  version = "3.11";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.volume";
     rev = "refs/tags/${version}";
-    hash = "sha256-Bhi3p0joTNx1y/yBhehhG06WmM7gUJhIJbmqZY4DzLQ=";
+    hash = "sha256-eHIInoquuyukKuPVvVB6qtovx1NloHHVGKfFBHxVd+o=";
   };
 
   nativeBuildInputs = [
@@ -33,13 +34,9 @@ buildPythonPackage rec {
     dissect-util
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dissect.volume"
-  ];
+  pythonImportsCheck = [ "dissect.volume" ];
 
   disabledTests = [
     # gzip.BadGzipFile: Not a gzipped file
diff --git a/pkgs/development/python-modules/dissect-xfs/default.nix b/pkgs/development/python-modules/dissect-xfs/default.nix
index 1843ff00f8e0b..a8891ef7f2cbe 100644
--- a/pkgs/development/python-modules/dissect-xfs/default.nix
+++ b/pkgs/development/python-modules/dissect-xfs/default.nix
@@ -1,45 +1,42 @@
-{ lib
-, buildPythonPackage
-, dissect-cstruct
-, dissect-util
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dissect-cstruct,
+  dissect-util,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dissect-xfs";
-  version = "3.8";
-  format = "pyproject";
+  version = "3.10";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.xfs";
     rev = "refs/tags/${version}";
-    hash = "sha256-U/VDFeCyOPlefFL/QVRVknpCBDLuVYvVHI49QSe+QFM=";
+    hash = "sha256-VZu6XmEKYcmqGM2eJMpABRTOBxDTwsYd7Pn662kO13o=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dissect-cstruct
     dissect-util
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dissect.xfs"
-  ];
+  pythonImportsCheck = [ "dissect.xfs" ];
 
   # Archive files seems to be corrupt
   doCheck = false;
diff --git a/pkgs/development/python-modules/dissect/default.nix b/pkgs/development/python-modules/dissect/default.nix
index 6827b7e5f701f..3873a87d53099 100644
--- a/pkgs/development/python-modules/dissect/default.nix
+++ b/pkgs/development/python-modules/dissect/default.nix
@@ -1,41 +1,41 @@
-{ lib
-, buildPythonPackage
-, dissect-btrfs
-, dissect-cim
-, dissect-clfs
-, dissect-cobaltstrike
-, dissect-cstruct
-, dissect-esedb
-, dissect-etl
-, dissect-eventlog
-, dissect-evidence
-, dissect-executable
-, dissect-extfs
-, dissect-fat
-, dissect-ffs
-, dissect-hypervisor
-, dissect-jffs
-, dissect-ntfs
-, dissect-ole
-, dissect-regf
-, dissect-shellitem
-, dissect-sql
-, dissect-squashfs
-, dissect-target
-, dissect-util
-, dissect-vmfs
-, dissect-volume
-, dissect-xfs
-, fetchFromGitHub
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  dissect-archive,
+  dissect-btrfs,
+  dissect-cim,
+  dissect-clfs,
+  dissect-cstruct,
+  dissect-esedb,
+  dissect-etl,
+  dissect-eventlog,
+  dissect-evidence,
+  dissect-executable,
+  dissect-extfs,
+  dissect-fat,
+  dissect-ffs,
+  dissect-hypervisor,
+  dissect-jffs,
+  dissect-ntfs,
+  dissect-ole,
+  dissect-regf,
+  dissect-shellitem,
+  dissect-sql,
+  dissect-squashfs,
+  dissect-target,
+  dissect-util,
+  dissect-vmfs,
+  dissect-volume,
+  dissect-xfs,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "dissect";
-  version = "3.13";
+  version = "3.16.1";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -44,22 +44,21 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect";
     rev = "refs/tags/${version}";
-    hash = "sha256-cnNaqXECePP2DmLRAm/Fi9m88rYSsVVMrpcqYd0iL1E=";
+    hash = "sha256-OpTznjOVV3hyreJv4WCHwP09ULMTz+vjjcmBtYL685E=";
   };
 
   pythonRelaxDeps = true;
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    dissect-archive
     dissect-btrfs
     dissect-cim
     dissect-clfs
-    dissect-cobaltstrike
     dissect-cstruct
     dissect-esedb
     dissect-etl
@@ -87,9 +86,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dissect"
-  ];
+  pythonImportsCheck = [ "dissect" ];
 
   meta = with lib; {
     description = "Dissect meta module";
diff --git a/pkgs/development/python-modules/dissononce/default.nix b/pkgs/development/python-modules/dissononce/default.nix
index da783408efd81..b4745c059465c 100644
--- a/pkgs/development/python-modules/dissononce/default.nix
+++ b/pkgs/development/python-modules/dissononce/default.nix
@@ -1,4 +1,11 @@
-{ buildPythonPackage, fetchFromGitHub, lib, pytest, cryptography, transitions }:
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pytest,
+  cryptography,
+  transitions,
+}:
 
 buildPythonPackage rec {
   pname = "dissononce";
@@ -17,11 +24,14 @@ buildPythonPackage rec {
     HOME=$(mktemp -d) py.test tests/
   '';
 
-  propagatedBuildInputs = [ cryptography transitions ];
+  propagatedBuildInputs = [
+    cryptography
+    transitions
+  ];
 
   meta = with lib; {
     homepage = "https://pypi.org/project/dissononce/";
     license = licenses.mit;
-    description = "A python implementation for Noise Protocol Framework";
+    description = "Python implementation for Noise Protocol Framework";
   };
 }
diff --git a/pkgs/development/python-modules/dist-meta/default.nix b/pkgs/development/python-modules/dist-meta/default.nix
new file mode 100644
index 0000000000000..6b7520440a3d9
--- /dev/null
+++ b/pkgs/development/python-modules/dist-meta/default.nix
@@ -0,0 +1,41 @@
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  setuptools,
+  domdf-python-tools,
+  handy-archives,
+  packaging,
+}:
+buildPythonPackage rec {
+  pname = "dist-meta";
+  version = "0.8.1";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-5zuHOwg2GDXiVZLU10Ep8DU7ykRR3RK/oQqvFK9GguQ=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    domdf-python-tools
+    handy-archives
+    packaging
+  ];
+
+  nativeCheckInputs = [ ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail '"setuptools!=61.*,<=67.1.0,>=40.6.0"' '"setuptools"'
+  '';
+
+  meta = {
+    description = "Parse and create Python distribution metadata.";
+    homepage = "https://github.com/repo-helper/dist-meta";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tyberius-prime ];
+  };
+}
diff --git a/pkgs/development/python-modules/distlib/default.nix b/pkgs/development/python-modules/distlib/default.nix
index 1f2d17395065b..f9da72b61c3f6 100644
--- a/pkgs/development/python-modules/distlib/default.nix
+++ b/pkgs/development/python-modules/distlib/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
     hash = "sha256-FTDqE+NQAxtjEthYDdtrJ6EEJ1oxEGUjuPEjeH9JT2Q=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   postFixup = lib.optionalString (!stdenv.hostPlatform.isWindows) ''
     find $out -name '*.exe' -delete
diff --git a/pkgs/development/python-modules/distorm3/default.nix b/pkgs/development/python-modules/distorm3/default.nix
index 0471855b79d34..583e4cc857428 100644
--- a/pkgs/development/python-modules/distorm3/default.nix
+++ b/pkgs/development/python-modules/distorm3/default.nix
@@ -1,40 +1,47 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, yasm
+{
+  lib,
+  buildPythonPackage,
+  distutils,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools,
+  yasm,
 }:
 
 buildPythonPackage rec {
   pname = "distorm3";
   version = "3.5.2";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "gdabah";
     repo = "distorm";
-    rev = version;
-    sha256 = "012bh1l2w7i9q8rcnznj3x0lra09d5yxd3r42cbrqdwl1mmg26qn";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Fhvxag2UN5wXEySP1n1pCahMQR/SfssywikeLmiASwQ=";
   };
 
+  build-system = [
+    distutils
+    setuptools
+  ];
+
   nativeCheckInputs = [
     pytestCheckHook
     yasm
   ];
 
-  disabledTests = [
-    # TypeError: __init__() missing 3 required positional...
-    "test_dummy"
-  ];
+  # TypeError: __init__() missing 3 required positional...
+  doCheck = false;
 
   pythonImportsCheck = [ "distorm3" ];
 
   meta = with lib; {
     description = "Disassembler library for x86/AMD64";
     homepage = "https://github.com/gdabah/distorm";
+    changelog = "https://github.com/gdabah/distorm/releases/tag/${version}";
     license = licenses.bsd3;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/distrax/default.nix b/pkgs/development/python-modules/distrax/default.nix
index bdd443356a8cf..83a4a16d650ee 100644
--- a/pkgs/development/python-modules/distrax/default.nix
+++ b/pkgs/development/python-modules/distrax/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, chex
-, jaxlib
-, numpy
-, tensorflow-probability
-, dm-haiku
-, pytest-xdist
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  chex,
+  jaxlib,
+  numpy,
+  tensorflow-probability,
+  dm-haiku,
+  pytest-xdist,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -38,9 +39,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "distrax"
-  ];
+  pythonImportsCheck = [ "distrax" ];
 
   disabledTests = [
     # AssertionError on numerical values
diff --git a/pkgs/development/python-modules/distributed/default.nix b/pkgs/development/python-modules/distributed/default.nix
index 890f579207cac..4df88aaf493d2 100644
--- a/pkgs/development/python-modules/distributed/default.nix
+++ b/pkgs/development/python-modules/distributed/default.nix
@@ -1,60 +1,58 @@
-{ lib
-, buildPythonPackage
-, click
-, cloudpickle
-, dask
-, fetchFromGitHub
-, jinja2
-, locket
-, msgpack
-, packaging
-, psutil
-, pythonOlder
-, pythonRelaxDepsHook
-, pyyaml
-, setuptools
-, setuptools-scm
-, sortedcontainers
-, tblib
-, toolz
-, tornado
-, urllib3
-, versioneer
-, zict
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+  versioneer,
+
+  # dependencies
+  click,
+  cloudpickle,
+  dask,
+  jinja2,
+  locket,
+  msgpack,
+  packaging,
+  psutil,
+  pyyaml,
+  sortedcontainers,
+  tblib,
+  toolz,
+  tornado,
+  urllib3,
+  zict,
 }:
 
 buildPythonPackage rec {
   pname = "distributed";
-  version = "2024.4.2";
+  version = "2024.9.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
-
   src = fetchFromGitHub {
     owner = "dask";
     repo = "distributed";
     rev = "refs/tags/${version}";
-    hash = "sha256-xoQ+b7qzstZl9gRNs4jssNOsGQHDdvTXU7pTjBSuyWs=";
+    hash = "sha256-jzifqTGHAto+7LExUs0kSd8852EfELEL8acSElXlEx0=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "versioneer[toml]==" "versioneer[toml]>=" \
-      --replace 'dynamic = ["version"]' 'version = "${version}"'
+      --replace-fail "versioneer[toml]==" "versioneer[toml]>=" \
+      --replace-fail 'dynamic = ["version"]' 'version = "${version}"'
   '';
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
+  build-system = [
     setuptools
     setuptools-scm
     versioneer
   ] ++ versioneer.optional-dependencies.toml;
 
-  pythonRelaxDeps = [
-    "dask"
-  ];
+  pythonRelaxDeps = [ "dask" ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     click
     cloudpickle
     dask
@@ -75,15 +73,13 @@ buildPythonPackage rec {
   # When tested random tests would fail and not repeatably
   doCheck = false;
 
-  pythonImportsCheck = [
-    "distributed"
-  ];
+  pythonImportsCheck = [ "distributed" ];
 
-  meta = with lib; {
+  meta = {
     description = "Distributed computation in Python";
     homepage = "https://distributed.readthedocs.io/";
-    changelog = "https://github.com/dask/distributed/blob/${version}/docs/source/changelog.rst";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ teh ];
+    changelog = "https://github.com/dask/distributed/releases/tag/${version}";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ teh ];
   };
 }
diff --git a/pkgs/development/python-modules/distro/default.nix b/pkgs/development/python-modules/distro/default.nix
index 9aab5f47e4300..0de0aee0c165f 100644
--- a/pkgs/development/python-modules/distro/default.nix
+++ b/pkgs/development/python-modules/distro/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, setuptools
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-L6d8b9iUDxFu4da5Si+QsTteqNAZuYvIuv3KvN2b2+0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # tests are very targeted at individual linux distributions
   doCheck = false;
@@ -25,9 +24,9 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/nir0s/distro";
-    description = "Linux Distribution - a Linux OS platform information API.";
+    description = "Linux Distribution - a Linux OS platform information API";
     mainProgram = "distro";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/distutils-cfg/default.nix b/pkgs/development/python-modules/distutils-cfg/default.nix
index fb616c65d036c..89bd841560604 100644
--- a/pkgs/development/python-modules/distutils-cfg/default.nix
+++ b/pkgs/development/python-modules/distutils-cfg/default.nix
@@ -1,22 +1,32 @@
 # global distutils configuration, see http://docs.python.org/2/install/index.html#distutils-configuration-files
 
-{ stdenv, python, writeText, extraCfg ? "", overrideCfg ? "" }:
-
+{
+  stdenv,
+  python,
+  writeText,
+  extraCfg ? "",
+  overrideCfg ? "",
+}:
 
 let
   distutilsCfg = writeText "distutils.cfg" (
-  if overrideCfg != "" then overrideCfg else ''
-    [easy_install]
-
-    # don't allow network connections during build to ensure purity
-    allow-hosts = None
-
-    # make sure we always unzip installed packages otherwise setup hooks won't work
-    zip_ok = 0
-
-    ${extraCfg}
-  '');
-in stdenv.mkDerivation {
+    if overrideCfg != "" then
+      overrideCfg
+    else
+      ''
+        [easy_install]
+
+        # don't allow network connections during build to ensure purity
+        allow-hosts = None
+
+        # make sure we always unzip installed packages otherwise setup hooks won't work
+        zip_ok = 0
+
+        ${extraCfg}
+      ''
+  );
+in
+stdenv.mkDerivation {
   name = "${python.libPrefix}-distutils.cfg";
 
   buildInputs = [ python ];
diff --git a/pkgs/development/python-modules/distutils-extra/default.nix b/pkgs/development/python-modules/distutils-extra/default.nix
index 37ef77947b3f6..013ab75d37c3c 100644
--- a/pkgs/development/python-modules/distutils-extra/default.nix
+++ b/pkgs/development/python-modules/distutils-extra/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchurl
+{
+  lib,
+  buildPythonPackage,
+  fetchurl,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
   # Tests are out-dated as the last upstream release is from 2016
   doCheck = false;
 
-  pythonImportsCheck = [
-    "DistUtilsExtra"
-  ];
+  pythonImportsCheck = [ "DistUtilsExtra" ];
 
   meta = with lib; {
     description = "Enhancements to Python's distutils";
diff --git a/pkgs/development/python-modules/distutils/default.nix b/pkgs/development/python-modules/distutils/default.nix
new file mode 100644
index 0000000000000..4e0a2d10d26e9
--- /dev/null
+++ b/pkgs/development/python-modules/distutils/default.nix
@@ -0,0 +1,54 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  setuptools,
+  python,
+  jaraco-envs,
+  jaraco-path,
+  jaraco-text,
+  more-itertools,
+  path,
+  pyfakefs,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "distutils";
+  inherit (setuptools) version;
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "pypa";
+    repo = "distutils";
+    rev = "813ab9868b353991ec7324eb09619ee5beb9183f";
+    hash = "sha256-/YtITDuZlTJRisqsQ6SrgRRUrqLZpj+k3drrouURZlc=";
+  };
+
+  build-system = [ setuptools-scm ];
+
+  postInstall = ''
+    rm -r $out/${python.sitePackages}/distutils
+    ln -s ${setuptools}/${python.sitePackages}/setuptools/_distutils $out/${python.sitePackages}/distutils
+  '';
+
+  pythonImportsCheck = [ "distutils" ];
+
+  nativeCheckInputs = [
+    jaraco-envs
+    jaraco-path
+    jaraco-text
+    more-itertools
+    path
+    pyfakefs
+    pytestCheckHook
+  ];
+
+  meta = {
+    description = "Distutils as found in cpython";
+    homepage = "https://github.com/pypa/distutils";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/dj-database-url/default.nix b/pkgs/development/python-modules/dj-database-url/default.nix
index 6ac924227f1ad..aee96dfd6cc7c 100644
--- a/pkgs/development/python-modules/dj-database-url/default.nix
+++ b/pkgs/development/python-modules/dj-database-url/default.nix
@@ -1,38 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, django
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "dj-database-url";
-  version = "2.1.0";
-  format = "setuptools";
+  version = "2.2.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-8gQs7+EIblOcnaOfrVrX9hFzv3lmXmm/fk3lX6iLE18=";
+  src = fetchFromGitHub {
+    owner = "jazzband";
+    repo = "dj-database-url";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-i2btutob+5R+FFPlGwRSNF01MTfxVop8xaePDHxnqLE=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     django
+    typing-extensions
   ];
 
   # Tests access a DB via network
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dj_database_url"
-  ];
+  pythonImportsCheck = [ "dj_database_url" ];
 
   meta = with lib; {
     description = "Use Database URLs in your Django Application";
     homepage = "https://github.com/jazzband/dj-database-url";
     changelog = "https://github.com/jazzband/dj-database-url/blob/v${version}/CHANGELOG.md";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dj-email-url/default.nix b/pkgs/development/python-modules/dj-email-url/default.nix
index 5f043f008e16c..1214234bf8dd1 100644
--- a/pkgs/development/python-modules/dj-email-url/default.nix
+++ b/pkgs/development/python-modules/dj-email-url/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,6 +29,6 @@ buildPythonPackage rec {
     description = "Use an URL to configure email backend settings in your Django Application";
     homepage = "https://github.com/migonzalvar/dj-email-url";
     license = licenses.bsd0;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dj-rest-auth/default.nix b/pkgs/development/python-modules/dj-rest-auth/default.nix
index e415977d86374..1f0ac3747c878 100644
--- a/pkgs/development/python-modules/dj-rest-auth/default.nix
+++ b/pkgs/development/python-modules/dj-rest-auth/default.nix
@@ -1,61 +1,46 @@
-{ lib
-, buildPythonPackage
-, django
-, django-allauth
-, djangorestframework
-, djangorestframework-simplejwt
-, fetchFromGitHub
-, fetchpatch
-, python
-, pythonOlder
-, responses
-, setuptools
-, unittest-xml-reporting
+{
+  lib,
+  buildPythonPackage,
+  django,
+  django-allauth,
+  djangorestframework,
+  djangorestframework-simplejwt,
+  fetchFromGitHub,
+  python,
+  pythonOlder,
+  responses,
+  setuptools,
+  unittest-xml-reporting,
 }:
 
 buildPythonPackage rec {
   pname = "dj-rest-auth";
-  version = "5.0.2";
+  version = "6.0.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "iMerica";
     repo = "dj-rest-auth";
     rev = "refs/tags/${version}";
-    hash = "sha256-TqeNpxXn+v89fEiJ4AVNhp8blCfYQKFQfYmZ6/QlRbQ=";
+    hash = "sha256-fNy1uN3oH54Wd9+EqYpiV0ot1MbSSC7TZoAARQeR81s=";
   };
 
-  patches = [
-    # https://github.com/iMerica/dj-rest-auth/pull/597
-    (fetchpatch {
-      name = "disable-email-confirmation-ratelimit-in-tests-to-support-new-allauth.patch";
-      url = "https://github.com/iMerica/dj-rest-auth/commit/c8f19e18a93f4959da875f9c5cdd32f7d9363bba.patch";
-      hash = "sha256-Y/YBjV+c5Gw1wMR5r/4VnyV/ewUVG0z4pjY/MB4ca9Y=";
-    })
-  ];
-
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "==" ">="
+      --replace-fail "==" ">="
+    substituteInPlace dj_rest_auth/tests/test_api.py \
+      --replace-fail "assertEquals" "assertEqual"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  buildInputs = [
-    django
-  ];
+  buildInputs = [ django ];
 
-  propagatedBuildInputs = [
-    djangorestframework
-  ];
+  dependencies = [ djangorestframework ];
 
-  passthru.optional-dependencies.with_social = [
-    django-allauth
-  ];
+  passthru.optional-dependencies.with_social = [ django-allauth ];
 
   nativeCheckInputs = [
     djangorestframework-simplejwt
@@ -66,7 +51,7 @@ buildPythonPackage rec {
   preCheck = ''
     # Test connects to graph.facebook.com
     substituteInPlace dj_rest_auth/tests/test_serializers.py \
-      --replace "def test_http_error" "def dont_test_http_error"
+      --replace-fail "def test_http_error" "def dont_test_http_error"
   '';
 
   checkPhase = ''
@@ -75,15 +60,13 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "dj_rest_auth"
-  ];
+  pythonImportsCheck = [ "dj_rest_auth" ];
 
   meta = with lib; {
     description = "Authentication for Django Rest Framework";
     homepage = "https://github.com/iMerica/dj-rest-auth";
     changelog = "https://github.com/iMerica/dj-rest-auth/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dj-search-url/default.nix b/pkgs/development/python-modules/dj-search-url/default.nix
index 057d2c6acdaca..e57e66be59b84 100644
--- a/pkgs/development/python-modules/dj-search-url/default.nix
+++ b/pkgs/development/python-modules/dj-search-url/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -19,5 +20,4 @@ buildPythonPackage rec {
     license = licenses.bsd0;
     maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/dj-static/default.nix b/pkgs/development/python-modules/dj-static/default.nix
index 167fbf88bd51f..83e07a45bc045 100644
--- a/pkgs/development/python-modules/dj-static/default.nix
+++ b/pkgs/development/python-modules/dj-static/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
-, static3
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  static3,
 }:
 
 buildPythonPackage rec {
@@ -17,17 +18,11 @@ buildPythonPackage rec {
     hash = "sha256-B6TydlezbDkmfFgJjdFniZIYo/JjzPvFj43co+HYCdc=";
   };
 
-  buildInputs = [
-    django
-  ];
+  buildInputs = [ django ];
 
-  propagatedBuildInputs = [
-    static3
-  ];
+  propagatedBuildInputs = [ static3 ];
 
-  pythonImportsCheck = [
-    "dj_static"
-  ];
+  pythonImportsCheck = [ "dj_static" ];
 
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/django-admin-datta/default.nix b/pkgs/development/python-modules/django-admin-datta/default.nix
index 44be722da51aa..8b12a79aea2e6 100644
--- a/pkgs/development/python-modules/django-admin-datta/default.nix
+++ b/pkgs/development/python-modules/django-admin-datta/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, django
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-VV7mb3501aZVuXUqzVqQYUttvkYa4pAECYWn7HksOmI=";
   };
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "admin_datta"
-  ];
+  pythonImportsCheck = [ "admin_datta" ];
 
   meta = with lib; {
     description = "Modern template for Django that covers Admin Section";
diff --git a/pkgs/development/python-modules/django-admin-sortable2/default.nix b/pkgs/development/python-modules/django-admin-sortable2/default.nix
index d9987f5b5decd..1fb7a4c825a74 100644
--- a/pkgs/development/python-modules/django-admin-sortable2/default.nix
+++ b/pkgs/development/python-modules/django-admin-sortable2/default.nix
@@ -1,38 +1,40 @@
-{ lib
-, buildPythonPackage
-, django_4
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  django,
 }:
 
 buildPythonPackage rec {
   pname = "django-admin-sortable2";
-  version = "2.1.10";
-  format = "setuptools";
+  version = "2.2.3";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
-  src = fetchPypi {
-    inherit version pname;
-    hash = "sha256-N1awLH0JxbN+/mV3GNWq4rdfRv0Bu/4cOdTmBlEBnXk=";
+  src = fetchFromGitHub {
+    owner = "jrief";
+    repo = "django-admin-sortable2";
+    rev = "refs/tags/${version}";
+    hash = "sha256-ZXaLe6H6il27DXMwclKR4iRGyus6zyYt3rNWRsLPHSU=";
   };
 
-  propagatedBuildInputs = [
-    django_4
-  ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [
-    "adminsortable2"
-  ];
+  dependencies = [ django ];
+
+  pythonImportsCheck = [ "adminsortable2" ];
 
   # Tests are very slow (end-to-end with playwright)
   doCheck = false;
 
-  meta = with lib; {
+  meta = {
     description = "Generic drag-and-drop ordering for objects in the Django admin interface";
     homepage = "https://github.com/jrief/django-admin-sortable2";
     changelog = "https://github.com/jrief/django-admin-sortable2/blob/${version}/CHANGELOG.md";
-    license = licenses.mit;
-    maintainers = with maintainers; [ sephi ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sephi ];
   };
 }
diff --git a/pkgs/development/python-modules/django-allauth-2fa/default.nix b/pkgs/development/python-modules/django-allauth-2fa/default.nix
index 60a2d61bac275..b04d760d39b30 100644
--- a/pkgs/development/python-modules/django-allauth-2fa/default.nix
+++ b/pkgs/development/python-modules/django-allauth-2fa/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, django
-, django-allauth
-, django-otp
-, fetchFromGitHub
-, pythonOlder
-, qrcode
-, hatchling
+{
+  lib,
+  buildPythonPackage,
+  django,
+  django-allauth,
+  django-otp,
+  fetchFromGitHub,
+  pythonOlder,
+  qrcode,
+  hatchling,
 }:
 
 buildPythonPackage rec {
@@ -23,10 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-bm2RwhvX2nfhYs74MM0iZl9U2gHgm0lLlh2tuRRcGso=";
   };
 
-
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     django
@@ -35,9 +33,7 @@ buildPythonPackage rec {
     qrcode
   ];
 
-  pythonImportsCheck = [
-    "allauth_2fa"
-  ];
+  pythonImportsCheck = [ "allauth_2fa" ];
 
   meta = with lib; {
     description = "django-allauth-2fa adds two-factor authentication to django-allauth";
diff --git a/pkgs/development/python-modules/django-allauth/default.nix b/pkgs/development/python-modules/django-allauth/default.nix
index 8a1f6dc8ac06f..fb7eb5ffac844 100644
--- a/pkgs/development/python-modules/django-allauth/default.nix
+++ b/pkgs/development/python-modules/django-allauth/default.nix
@@ -1,29 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# build-system
-, setuptools
-
-# dependencies
-, django
-, python3-openid
-, requests
-, requests-oauthlib
-, pyjwt
-
-# optional-dependencies
-, python3-saml
-, qrcode
-
-# tests
-, pillow
-, pytestCheckHook
-, pytest-django
-
-# passthru tests
-, dj-rest-auth
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  python,
+
+  # build-system
+  setuptools,
+
+  # build-time dependencies
+  gettext,
+
+  # dependencies
+  django,
+  python3-openid,
+  requests,
+  requests-oauthlib,
+  pyjwt,
+
+  # optional-dependencies
+  python3-saml,
+  qrcode,
+
+  # tests
+  pillow,
+  pytestCheckHook,
+  pytest-django,
+
+  # passthru tests
+  dj-rest-auth,
 }:
 
 buildPythonPackage rec {
@@ -41,6 +46,7 @@ buildPythonPackage rec {
   };
 
   nativeBuildInputs = [
+    gettext
     setuptools
   ];
 
@@ -52,18 +58,14 @@ buildPythonPackage rec {
     requests-oauthlib
   ] ++ pyjwt.optional-dependencies.crypto;
 
+  preBuild = "${python.interpreter} -m django compilemessages";
+
   passthru.optional-dependencies = {
-    saml = [
-      python3-saml
-    ];
-    mfa = [
-      qrcode
-    ];
+    saml = [ python3-saml ];
+    mfa = [ qrcode ];
   };
 
-  pythonImportsCheck = [
-    "allauth"
-  ];
+  pythonImportsCheck = [ "allauth" ];
 
   nativeCheckInputs = [
     pillow
diff --git a/pkgs/development/python-modules/django-annoying/default.nix b/pkgs/development/python-modules/django-annoying/default.nix
index 5259a974d6483..bfe0d6f944ba6 100644
--- a/pkgs/development/python-modules/django-annoying/default.nix
+++ b/pkgs/development/python-modules/django-annoying/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, django
-, six
-, pytest-django
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  django,
+  six,
+  pytest-django,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -41,7 +42,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A django application that tries to eliminate annoying things in the Django framework";
+    description = "Django application that tries to eliminate annoying things in the Django framework";
     homepage = "https://skorokithakis.github.io/django-annoying/";
     license = licenses.bsd3;
     maintainers = with maintainers; [ ambroisie ];
diff --git a/pkgs/development/python-modules/django-anymail/default.nix b/pkgs/development/python-modules/django-anymail/default.nix
index 1e619035bd054..2c69453d79598 100644
--- a/pkgs/development/python-modules/django-anymail/default.nix
+++ b/pkgs/development/python-modules/django-anymail/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, boto3
-, buildPythonPackage
-, django
-, fetchFromGitHub
-, hatchling
-, mock
-, python
-, pythonOlder
-, requests
-, responses
-, urllib3
+{
+  lib,
+  boto3,
+  buildPythonPackage,
+  django,
+  fetchFromGitHub,
+  hatchling,
+  mock,
+  python,
+  pythonOlder,
+  requests,
+  responses,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "django-anymail";
-  version = "10.3";
+  version = "12.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -23,14 +24,12 @@ buildPythonPackage rec {
     owner = "anymail";
     repo = "django-anymail";
     rev = "refs/tags/v${version}";
-    hash = "sha256-5uSpPeXpMkpuzMXzsGE6uQJWP/Dt/oqakB8Xb5G1eZY=";
+    hash = "sha256-TuEEwxwgZVv97Ns4sRWdQjaNymE03nj8CTiU9S6ynZ8=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     django
     requests
     urllib3
@@ -39,12 +38,10 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     mock
     responses
-  ] ++ passthru.optional-dependencies.amazon-ses;
+  ] ++ optional-dependencies.amazon-ses;
 
-  passthru.optional-dependencies = {
-    amazon-ses = [
-      boto3
-    ];
+  optional-dependencies = {
+    amazon-ses = [ boto3 ];
   };
 
   checkPhase = ''
@@ -53,9 +50,7 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "anymail"
-  ];
+  pythonImportsCheck = [ "anymail" ];
 
   meta = with lib; {
     description = "Django email backends and webhooks for Mailgun";
diff --git a/pkgs/development/python-modules/django-appconf/default.nix b/pkgs/development/python-modules/django-appconf/default.nix
index 66eef9d472886..4c9712305ea0c 100644
--- a/pkgs/development/python-modules/django-appconf/default.nix
+++ b/pkgs/development/python-modules/django-appconf/default.nix
@@ -1,29 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, django
-, six
-, python
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchFromGitHub,
+  python,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "django-appconf";
-  version = "1.0.5";
-  format = "setuptools";
+  version = "1.0.6";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "django-compressor";
     repo = "django-appconf";
-    rev = "v${version}";
-    hash = "sha256-nS4Hwp/NYg1XGvZO1tiE9mzJA7WFifyvgAjyp3YpqS4=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-H9MwX5LtHkYN6TshP7rRKlX/iOJZHbQVsZeki95yks4=";
   };
 
-  propagatedBuildInputs = [
-    django
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ django ];
 
   preCheck = ''
     # prove we're running tests against installed package, not build dir
@@ -32,13 +33,18 @@ buildPythonPackage rec {
 
   checkPhase = ''
     runHook preCheck
+
     ${python.interpreter} -m django test --settings=tests.test_settings
+
     runHook postCheck
   '';
 
+  pythonImportsCheck = [ "appconf" ];
+
   meta = with lib; {
-    description = "A helper class for handling configuration defaults of packaged apps gracefully";
+    description = "Helper class for handling configuration defaults of packaged apps gracefully";
     homepage = "https://django-appconf.readthedocs.org/";
+    changelog = "https://github.com/django-compressor/django-appconf/blob/v${version}/docs/changelog.rst";
     license = licenses.bsd2;
     maintainers = with maintainers; [ desiderius ];
   };
diff --git a/pkgs/development/python-modules/django-auditlog/default.nix b/pkgs/development/python-modules/django-auditlog/default.nix
index 4a176b0b14ec3..387250090dedf 100644
--- a/pkgs/development/python-modules/django-auditlog/default.nix
+++ b/pkgs/development/python-modules/django-auditlog/default.nix
@@ -1,27 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, django
-, python-dateutil
-, freezegun
-, psycopg2
-, postgresql
-, postgresqlTestHook
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  django,
+  python-dateutil,
+  freezegun,
+  psycopg2,
+  postgresql,
+  postgresqlTestHook,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "django-auditlog";
-  version = "2.2.2";
+  version = "3.0.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "jazzband";
-    repo = pname;
+    repo = "django-auditlog";
     rev = "v${version}";
-    hash = "sha256-QHSGqtpkOgltAg+RlG/Ik3DfEjtSWt45sqlD+Zw4Bh0=";
+    hash = "sha256-SJ4GJp/gVIxiLbdAj3ZS+weevqIDZCMQnW/pqc5liJU=";
   };
 
   nativeBuildInputs = [
@@ -46,9 +47,11 @@ buildPythonPackage rec {
   checkPhase = ''
     runHook preCheck
 
+    # strip escape codes otherwise tests fail
+    # see https://github.com/jazzband/django-auditlog/issues/644
     TEST_DB_USER=$PGUSER \
     TEST_DB_HOST=$PGHOST \
-    ${python.interpreter} runtests.py
+    ${python.interpreter} runtests.py | cat
 
     runHook postCheck
   '';
@@ -57,7 +60,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     changelog = "https://github.com/jazzband/django-auditlog/blob/v${version}/CHANGELOG.md";
-    description = "A Django app that keeps a log of changes made to an object";
+    description = "Django app that keeps a log of changes made to an object";
     downloadPage = "https://github.com/jazzband/django-auditlog";
     license = licenses.mit;
     maintainers = with maintainers; [ leona ];
diff --git a/pkgs/development/python-modules/django-auth-ldap/default.nix b/pkgs/development/python-modules/django-auth-ldap/default.nix
index 3983cf3f3661a..0abd5d344e413 100644
--- a/pkgs/development/python-modules/django-auth-ldap/default.nix
+++ b/pkgs/development/python-modules/django-auth-ldap/default.nix
@@ -1,35 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-
-# buildtime
-, setuptools-scm
-
-# runtime
-, django
-, python-ldap
-
-# tests
-, python
-, pkgs
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+
+  # buildtime
+  setuptools-scm,
+
+  # runtime
+  django,
+  python-ldap,
+
+  # tests
+  python,
+  pkgs,
 }:
 
 buildPythonPackage rec {
   pname = "django-auth-ldap";
-  version = "4.7.0";
+  version = "4.8.0";
   format = "pyproject";
 
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-jeplN2uLL6G+7lI0h2DjCC5kKTmlA4y+iBpeY4G2W4o=";
+    hash = "sha256-YEJQk43cn9phnyR8elmwsvBuU6fT9GoVbyiqMN1xpzg=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     django
diff --git a/pkgs/development/python-modules/django-autocomplete-light/default.nix b/pkgs/development/python-modules/django-autocomplete-light/default.nix
index 08390b00efd0e..eb83b99d8befb 100644
--- a/pkgs/development/python-modules/django-autocomplete-light/default.nix
+++ b/pkgs/development/python-modules/django-autocomplete-light/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
-, six
-, pytestCheckHook
-, django-debug-toolbar
-, django-extensions
-, django-taggit
-, django-tagging
-, mock
-, pytest-django
-, selenium
-, splinter
-, sqlparse
-, tenacity
-, whitenoise
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  six,
+  pytestCheckHook,
+  django-debug-toolbar,
+  django-extensions,
+  django-taggit,
+  django-tagging,
+  mock,
+  pytest-django,
+  selenium,
+  splinter,
+  sqlparse,
+  tenacity,
+  whitenoise,
 }:
 
 buildPythonPackage rec {
@@ -66,7 +67,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "dal" ];
 
   meta = with lib; {
-    description = "A fresh approach to autocomplete implementations, specially for Django";
+    description = "Fresh approach to autocomplete implementations, specially for Django";
     homepage = "https://django-autocomplete-light.readthedocs.io";
     license = licenses.bsd3;
     maintainers = with maintainers; [ ambroisie ];
diff --git a/pkgs/development/python-modules/django-bootstrap3/default.nix b/pkgs/development/python-modules/django-bootstrap3/default.nix
index 6a29fc7630aa1..fb8a2bca0de99 100644
--- a/pkgs/development/python-modules/django-bootstrap3/default.nix
+++ b/pkgs/development/python-modules/django-bootstrap3/default.nix
@@ -1,29 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
-, setuptools-scm
+  # build-system
+  setuptools,
+  setuptools-scm,
 
-# non-propagates
-, django
+  # non-propagates
+  django,
 
-# tests
-, pytest-django
-, pytestCheckHook
+  # tests
+  pytest-django,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "django-bootstrap3";
-  version = "23.6";
+  version = "24.3";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "zostera";
     repo = "django-bootstrap3";
     rev = "refs/tags/v${version}";
-    hash = "sha256-qqG9w0bQYoQgWXCks/WwwQVoh2DhIMLaFXDQ4z6D84g=";
+    hash = "sha256-7aHGTa98NaHg6C+fxuQsrPk/8XjHB3awp+gAWysOhAw=";
   };
 
   nativeBuildInputs = [
@@ -31,13 +32,9 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  buildInputs = [
-    django
-  ];
+  buildInputs = [ django ];
 
-  pythonImportsCheck = [
-    "bootstrap3"
-  ];
+  pythonImportsCheck = [ "bootstrap3" ];
 
   nativeCheckInputs = [
     pytest-django
@@ -54,5 +51,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ hexa ];
   };
 }
-
-
diff --git a/pkgs/development/python-modules/django-bootstrap4/default.nix b/pkgs/development/python-modules/django-bootstrap4/default.nix
index b0a11d9044d37..e34ce0f4b6249 100644
--- a/pkgs/development/python-modules/django-bootstrap4/default.nix
+++ b/pkgs/development/python-modules/django-bootstrap4/default.nix
@@ -1,31 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
-, setuptools-scm
+  # build-system
+  setuptools,
+  setuptools-scm,
 
-# non-propagates
-, django
+  # non-propagates
+  django,
 
-# dependencies
-, beautifulsoup4
+  # dependencies
+  beautifulsoup4,
 
-# tests
-, python
+  # tests
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "django-bootstrap4";
-  version = "24.1";
+  version = "24.3";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "zostera";
     repo = "django-bootstrap4";
     rev = "refs/tags/v${version}";
-    hash = "sha256-TCHie5h/VRJ9NSg7wKnWotFHm328kxIp+xFXEa8wL1c=";
+    hash = "sha256-sZY/0f1PbYQu9fN65H6H7xLvsdE9AXK0cMt9TyAKuUw=";
   };
 
   nativeBuildInputs = [
@@ -33,17 +34,11 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    beautifulsoup4
-  ];
+  propagatedBuildInputs = [ beautifulsoup4 ];
 
-  pythonImportsCheck = [
-    "bootstrap4"
-  ];
+  pythonImportsCheck = [ "bootstrap4" ];
 
-  nativeCheckInputs = [
-    (django.override { withGdal = true; })
-  ];
+  nativeCheckInputs = [ (django.override { withGdal = true; }) ];
 
   checkPhase = ''
     runHook preCheck
diff --git a/pkgs/development/python-modules/django-bootstrap5/default.nix b/pkgs/development/python-modules/django-bootstrap5/default.nix
index 76405e9e5cd61..b35c586efa360 100644
--- a/pkgs/development/python-modules/django-bootstrap5/default.nix
+++ b/pkgs/development/python-modules/django-bootstrap5/default.nix
@@ -1,44 +1,61 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# build-system
-, hatchling
-
-# dependencies
-, beautifulsoup4
-, pillow
-, django
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+
+  # dependencies
+  django,
+
+  # tests
+  beautifulsoup4,
+  pillow,
+  pytest-django,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "django-bootstrap5";
-  version = "23.3";
-  format = "pyproject";
+  version = "24.1";
+  pyproject = true;
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "zostera";
     repo = "django-bootstrap5";
     rev = "v${version}";
-    hash = "sha256-FIwDyZ5I/FSaEiQKRfanzAGij86u8y85Wal0B4TrI7c=";
+    hash = "sha256-JbmwEPkj34tsK3tUtb56FPjU0emwERVXEc4fzlepdXY=";
   };
 
-  nativeBuildInputs = [
-    hatchling
+  build-system = [
+    setuptools
+    setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    django
+  nativeCheckInputs = [
     beautifulsoup4
+    (django.override { withGdal = true; })
     pillow
+    pytest-django
+    pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "django_bootstrap5"
+  preCheck = ''
+    export DJANGO_SETTINGS_MODULE=tests.app.settings
+  '';
+
+  disabledTests = [
+    # urllib.error.URLError: <urlopen error [Errno -3] Temporary failure in name resolution>
+    "test_get_bootstrap_setting"
   ];
 
+  pythonImportsCheck = [ "django_bootstrap5" ];
+
   meta = with lib; {
     description = "Bootstrap 5 integration with Django";
     homepage = "https://github.com/zostera/django-bootstrap5";
diff --git a/pkgs/development/python-modules/django-cachalot/default.nix b/pkgs/development/python-modules/django-cachalot/default.nix
index eca0cff7c8d30..95772d937b6c1 100644
--- a/pkgs/development/python-modules/django-cachalot/default.nix
+++ b/pkgs/development/python-modules/django-cachalot/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
-, django-debug-toolbar
-, psycopg2
-, beautifulsoup4
-, python
-, pytz
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  django-debug-toolbar,
+  psycopg2,
+  beautifulsoup4,
+  python,
+  pytz,
 }:
 
 buildPythonPackage rec {
   pname = "django-cachalot";
-  version = "2.6.2";
+  version = "2.6.3";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "noripyt";
     repo = "django-cachalot";
     rev = "refs/tags/v${version}";
-    hash = "sha256-8sC0uvfnGh3rp6C9/GsEevVDxAiI6MafIBfUuvnPeas=";
+    hash = "sha256-q4w2goxdDqivGVZCRDGOvYARbzmx6P8Gnw9YlYn9Few=";
   };
 
   patches = [
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     ./disable-unsupported-tests.patch
   ];
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
   checkInputs = [
     beautifulsoup4
diff --git a/pkgs/development/python-modules/django-cache-url/default.nix b/pkgs/development/python-modules/django-cache-url/default.nix
index d2167350874c7..89fdb9df9d83f 100644
--- a/pkgs/development/python-modules/django-cache-url/default.nix
+++ b/pkgs/development/python-modules/django-cache-url/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/django-cacheops/default.nix b/pkgs/development/python-modules/django-cacheops/default.nix
index 5416cf359f354..ab29fb9d843ca 100644
--- a/pkgs/development/python-modules/django-cacheops/default.nix
+++ b/pkgs/development/python-modules/django-cacheops/default.nix
@@ -1,21 +1,20 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, pythonRelaxDepsHook
-, django
-, funcy
-, redis
-, six
-, pytestCheckHook
-, pytest-django
-, mock
-, dill
-, jinja2
-, before-after
-, pythonOlder
-, nettools
-, pkgs
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  django,
+  funcy,
+  redis,
+  six,
+  pytestCheckHook,
+  pytest-django,
+  mock,
+  dill,
+  jinja2,
+  before-after,
+  pythonOlder,
+  nettools,
+  pkgs,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +29,6 @@ buildPythonPackage rec {
     hash = "sha256-d6N8c9f6z8cpk2XtZqEr56SH3XRd2GwdM8ouv9OzKHg=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
   pythonRelaxDeps = [ "funcy" ];
 
   propagatedBuildInputs = [
@@ -71,7 +67,7 @@ buildPythonPackage rec {
   DJANGO_SETTINGS_MODULE = "tests.settings";
 
   meta = with lib; {
-    description = "A slick ORM cache with automatic granular event-driven invalidation for Django";
+    description = "Slick ORM cache with automatic granular event-driven invalidation for Django";
     homepage = "https://github.com/Suor/django-cacheops";
     changelog = "https://github.com/Suor/django-cacheops/blob/${version}/CHANGELOG";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/django-celery-beat/default.nix b/pkgs/development/python-modules/django-celery-beat/default.nix
index 2ed27afb27ad7..64127acc69234 100644
--- a/pkgs/development/python-modules/django-celery-beat/default.nix
+++ b/pkgs/development/python-modules/django-celery-beat/default.nix
@@ -1,37 +1,39 @@
-{ lib
-, buildPythonPackage
-, case
-, celery
-, cron-descriptor
-, django-timezone-field
-, ephem
-, fetchPypi
-, pytest-django
-, pytest-timeout
-, pytestCheckHook
-, python-crontab
-, pythonOlder
-, setuptools
-, tzdata
+{
+  lib,
+  buildPythonPackage,
+  celery,
+  cron-descriptor,
+  django-timezone-field,
+  ephem,
+  fetchFromGitHub,
+  pytest-django,
+  pytest-timeout,
+  pytestCheckHook,
+  python-crontab,
+  pythonOlder,
+  setuptools,
+  tzdata,
 }:
 
 buildPythonPackage rec {
   pname = "django-celery-beat";
-  version = "2.6.0";
+  version = "2.7.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-91stEpcx8SFL6Dg+GPrmv+rNtV3/shFs6EkiLAEG+a0=";
+  src = fetchFromGitHub {
+    owner = "celery";
+    repo = "django-celery-beat";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-XWcmKQXNw8eoGkld77E3rHpR9ofa1i2qO/JI8Hnpi9M=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  pythonRelaxDeps = [ "django" ];
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cron-descriptor
     python-crontab
     celery
@@ -43,7 +45,6 @@ buildPythonPackage rec {
     ephem
     pytest-timeout
     pytest-django
-    case
     pytestCheckHook
   ];
 
@@ -52,9 +53,7 @@ buildPythonPackage rec {
     "t/unit/test_schedulers.py"
   ];
 
-  pythonImportsCheck = [
-    "django_celery_beat"
-  ];
+  pythonImportsCheck = [ "django_celery_beat" ];
 
   meta = with lib; {
     description = "Celery Periodic Tasks backed by the Django ORM";
diff --git a/pkgs/development/python-modules/django-celery-email/default.nix b/pkgs/development/python-modules/django-celery-email/default.nix
index d403ee8d41037..ea7608ffca476 100644
--- a/pkgs/development/python-modules/django-celery-email/default.nix
+++ b/pkgs/development/python-modules/django-celery-email/default.nix
@@ -1,12 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
-, django-appconf
-, celery
-, pytest-django
-, pytestCheckHook
-, python }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  django-appconf,
+  celery,
+  pytest-django,
+  pytestCheckHook,
+  python,
+}:
 
 buildPythonPackage rec {
   pname = "django-celery-email";
diff --git a/pkgs/development/python-modules/django-celery-results/default.nix b/pkgs/development/python-modules/django-celery-results/default.nix
index 080d63b75bff8..e2a0a47a7f90f 100644
--- a/pkgs/development/python-modules/django-celery-results/default.nix
+++ b/pkgs/development/python-modules/django-celery-results/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, celery
-, django
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  celery,
+  django,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -37,6 +38,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/celery/django-celery-results";
     changelog = "https://github.com/celery/django-celery-results/blob/v{version}/Changelog";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ babariviere ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/django-ckeditor/default.nix b/pkgs/development/python-modules/django-ckeditor/default.nix
index 530efc2a56140..1396b45d60243 100644
--- a/pkgs/development/python-modules/django-ckeditor/default.nix
+++ b/pkgs/development/python-modules/django-ckeditor/default.nix
@@ -1,35 +1,34 @@
-{ lib
-, buildPythonPackage
-, django
-, django-extensions
-, django-js-asset
-, fetchFromGitHub
-, pillow
-, python
-, pythonOlder
-, selenium
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  django,
+  django-extensions,
+  django-js-asset,
+  fetchFromGitHub,
+  pillow,
+  python,
+  pythonOlder,
+  selenium,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "django-ckeditor";
-  version = "6.7";
-  format = "pyproject";
+  version = "6.7.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "django-ckeditor";
-    repo = pname;
+    repo = "django-ckeditor";
     rev = "refs/tags/${version}";
-    hash = "sha256-mZQ5s3YbumYmT0zRWPFIvzt2TbtDLvVcJjZVAwn31E8=";
+    hash = "sha256-tPwWXQAKoHPpZDZ+fnEoOA29at6gUXBw6CcPdireTr8=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     django
     django-js-asset
     pillow
@@ -48,9 +47,7 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "ckeditor"
-  ];
+  pythonImportsCheck = [ "ckeditor" ];
 
   meta = with lib; {
     description = " Django admin CKEditor integration";
diff --git a/pkgs/development/python-modules/django-classy-tags/default.nix b/pkgs/development/python-modules/django-classy-tags/default.nix
index a4d363f8bc57c..a115015facee7 100644
--- a/pkgs/development/python-modules/django-classy-tags/default.nix
+++ b/pkgs/development/python-modules/django-classy-tags/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, django
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  django,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,22 +18,18 @@ buildPythonPackage rec {
     hash = "sha256-yNnRqi+m5xxNhm303RHSOmm40lu7dQskkKF7Fhd07lk=";
   };
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
   # pypi version doesn't include runtest.py, needed to run tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "classytags"
-  ];
+  pythonImportsCheck = [ "classytags" ];
 
   meta = with lib; {
     description = "Class based template tags for Django";
     homepage = "https://github.com/divio/django-classy-tags";
     changelog = "https://github.com/django-cms/django-classy-tags/blob/${version}/CHANGELOG.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/django-cleanup/default.nix b/pkgs/development/python-modules/django-cleanup/default.nix
index a465ffefc6a6b..b2a5a737f3bf8 100644
--- a/pkgs/development/python-modules/django-cleanup/default.nix
+++ b/pkgs/development/python-modules/django-cleanup/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, django
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  django,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-cN+QUHakTnoRGzEZgZmvYz3uCIduGZ5tzjbKjda4sQ8=";
   };
 
-  nativeCheckInputs = [
-    django
-  ];
+  nativeCheckInputs = [ django ];
 
   meta = with lib; {
     description = "Automatically deletes old file for FileField and ImageField. It also deletes files on models instance deletion";
diff --git a/pkgs/development/python-modules/django-colorful/default.nix b/pkgs/development/python-modules/django-colorful/default.nix
index 093be1ab607ea..6318cc8d99bd1 100644
--- a/pkgs/development/python-modules/django-colorful/default.nix
+++ b/pkgs/development/python-modules/django-colorful/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, django
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  django,
 }:
 
 buildPythonPackage rec {
@@ -25,5 +26,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/charettes/django-colorful";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/django-compression-middleware/default.nix b/pkgs/development/python-modules/django-compression-middleware/default.nix
index c26ee8434dd8e..ca893d0f9223a 100644
--- a/pkgs/development/python-modules/django-compression-middleware/default.nix
+++ b/pkgs/development/python-modules/django-compression-middleware/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, django
-, zstandard
-, brotli
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  django,
+  zstandard,
+  brotli,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/django-compressor/default.nix b/pkgs/development/python-modules/django-compressor/default.nix
index 543c483023df2..0344868d2c302 100644
--- a/pkgs/development/python-modules/django-compressor/default.nix
+++ b/pkgs/development/python-modules/django-compressor/default.nix
@@ -1,42 +1,41 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, calmjs
-, django-appconf
-, jinja2
-, rcssmin
-, rjsmin
+  # dependencies
+  calmjs,
+  django-appconf,
+  jinja2,
+  rcssmin,
+  rjsmin,
 
-# tests
-, beautifulsoup4
-, brotli
-, csscompressor
-, django-sekizai
-, pytestCheckHook
-, pytest-django
+  # tests
+  beautifulsoup4,
+  brotli,
+  csscompressor,
+  django-sekizai,
+  pytestCheckHook,
+  pytest-django,
 
 }:
 
 buildPythonPackage rec {
   pname = "django-compressor";
-  version = "4.4";
+  version = "4.5.1";
   pyproject = true;
 
   src = fetchPypi {
     pname = "django_compressor";
     inherit version;
-    hash = "sha256-GwrMnPup9pvDjnxB2psNcKILyVWHtkP/75YJz0YGT2c=";
+    hash = "sha256-wdikii7k2LfyPEEeucl+LYjbGKGLocnoF41fW4NmqCI=";
   };
 
   build-system = [
     setuptools
-    pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = [
@@ -67,9 +66,7 @@ buildPythonPackage rec {
   # Getting error: compressor.exceptions.OfflineGenerationError: You have
   # offline compression enabled but key "..." is missing from offline manifest.
   # You may need to run "python manage.py compress"
-  disabledTestPaths = [
-    "compressor/tests/test_offline.py"
-  ];
+  disabledTestPaths = [ "compressor/tests/test_offline.py" ];
 
   pythonImportsCheck = [ "compressor" ];
 
diff --git a/pkgs/development/python-modules/django-configurations/default.nix b/pkgs/development/python-modules/django-configurations/default.nix
index 087ffab301391..a7c944f981678 100644
--- a/pkgs/development/python-modules/django-configurations/default.nix
+++ b/pkgs/development/python-modules/django-configurations/default.nix
@@ -1,38 +1,33 @@
-{ lib
-, buildPythonPackage
-, dj-database-url
-, dj-email-url
-, dj-search-url
-, django
-, django-cache-url
-, fetchPypi
-, importlib-metadata
-, mock
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  dj-database-url,
+  dj-email-url,
+  dj-search-url,
+  django,
+  django-cache-url,
+  fetchPypi,
+  importlib-metadata,
+  mock,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "django-configurations";
-  version = "2.5";
+  version = "2.5.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Y/olLEDciOoXuLkPX0oxonJuWGrLH/Dtx0wijGHxnl0=";
+    hash = "sha256-blCDdX4rvfm7eFBWdTa5apNRX2sXUD10ko/2KNsuDpQ=";
   };
 
-  buildInputs = [
-    setuptools-scm
-  ];
+  buildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    django
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  propagatedBuildInputs = [ django ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   nativeCheckInputs = [
     mock
@@ -52,15 +47,13 @@ buildPythonPackage rec {
   # django.core.exceptions.ImproperlyConfigured: django-configurations settings importer wasn't correctly installed
   doCheck = false;
 
-  pythonImportsCheck = [
-    "configurations"
-  ];
+  pythonImportsCheck = [ "configurations" ];
 
   meta = with lib; {
-    description = "A helper for organizing Django settings";
+    description = "Helper for organizing Django settings";
     mainProgram = "django-cadmin";
     homepage = "https://django-configurations.readthedocs.io/";
     license = licenses.bsd0;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/django-context-decorator/default.nix b/pkgs/development/python-modules/django-context-decorator/default.nix
index 00f4a80e95267..e1c6d17259fb7 100644
--- a/pkgs/development/python-modules/django-context-decorator/default.nix
+++ b/pkgs/development/python-modules/django-context-decorator/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, django
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  django,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,13 +19,9 @@ buildPythonPackage rec {
     hash = "sha256-lNmZDsguOu2+gtMVjbwr709sbLCQOQ1sAePN7UJQbcw=";
   };
 
-  build-system = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
-  pythonImportsCheck = [
-    "django_context_decorator"
-  ];
+  pythonImportsCheck = [ "django_context_decorator" ];
 
   nativeCheckInputs = [
     django
diff --git a/pkgs/development/python-modules/django-contrib-comments/default.nix b/pkgs/development/python-modules/django-contrib-comments/default.nix
index fe0ce82b52a0e..ae5872b120b73 100644
--- a/pkgs/development/python-modules/django-contrib-comments/default.nix
+++ b/pkgs/development/python-modules/django-contrib-comments/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, django
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  django,
 }:
 
 buildPythonPackage rec {
@@ -18,8 +19,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/django/django-contrib-comments";
-    description = "The code formerly known as django.contrib.comments";
+    description = "Code formerly known as django.contrib.comments";
     license = licenses.bsd0;
   };
-
 }
diff --git a/pkgs/development/python-modules/django-cors-headers/default.nix b/pkgs/development/python-modules/django-cors-headers/default.nix
index a3b79ca10a3f6..6271f6ade6f41 100644
--- a/pkgs/development/python-modules/django-cors-headers/default.nix
+++ b/pkgs/development/python-modules/django-cors-headers/default.nix
@@ -1,36 +1,40 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, django
-, pytest-django
-, pytestCheckHook
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  django,
+  pytest-django,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "django-cors-headers";
-  version = "3.13.0";
-  format = "setuptools";
+  version = "4.4.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "adamchainz";
-    repo = "django-cors-headers";
+    repo = pname;
     rev = version;
-    hash = "sha256-pIyf4poW8/slxj4PVvmXpuYp//v5w00yU0Vz6Jiy2yM=";
+    hash = "sha256-/uTQ09zIjRV1Ilb/mXyr4zn5tJI/mNFHpfql2ptuER4=";
   };
 
-  propagatedBuildInputs = [
-    django
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ django ];
 
   nativeCheckInputs = [
     pytest-django
     pytestCheckHook
   ];
 
+  pythonImportsCheck = [ "corsheaders" ];
+
   meta = with lib; {
     description = "Django app for handling server Cross-Origin Resource Sharing (CORS) headers";
     homepage = "https://github.com/OttoYiu/django-cors-headers";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/django-countries/default.nix b/pkgs/development/python-modules/django-countries/default.nix
index 69262c0840626..761d9edc8fc70 100644
--- a/pkgs/development/python-modules/django-countries/default.nix
+++ b/pkgs/development/python-modules/django-countries/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# build-system
-, setuptools
-
-# dependencies
-, asgiref
-, typing-extensions
-
-# tests
-, django
-, djangorestframework
-, graphene-django
-, pytestCheckHook
-, pytest-django
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  asgiref,
+  typing-extensions,
+
+  # tests
+  django,
+  djangorestframework,
+  graphene-django,
+  pytestCheckHook,
+  pytest-django,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
     hash = "sha256-IR9cJbDVkZrcF3Ti70mV8VeXINQDK8OpwUTWVjD4Zn0=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     asgiref
diff --git a/pkgs/development/python-modules/django-crispy-bootstrap3/default.nix b/pkgs/development/python-modules/django-crispy-bootstrap3/default.nix
new file mode 100644
index 0000000000000..3fe7e0c74978f
--- /dev/null
+++ b/pkgs/development/python-modules/django-crispy-bootstrap3/default.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  setuptools,
+  pytestCheckHook,
+  pytest-django,
+  django-crispy-forms,
+}:
+
+buildPythonPackage rec {
+  pname = "django-crispy-bootstrap3";
+  version = "2024.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "django-crispy-forms";
+    repo = "crispy-bootstrap3";
+    rev = "refs/tags/${version}";
+    hash = "sha256-w5CGWf14Wa8hndpk5r4hlz6gGykvRL+1AhA5Pz5Ejtk=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    django
+    django-crispy-forms
+  ];
+
+  nativeCheckInputs = [
+    pytest-django
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "crispy_bootstrap3" ];
+
+  meta = with lib; {
+    description = "Bootstrap 3 template pack for django-crispy-forms";
+    homepage = "https://github.com/django-crispy-forms/crispy-bootstrap3";
+    changelog = "https://github.com/django-crispy-forms/crispy-bootstrap3/blob/${version}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ erictapen ];
+  };
+}
diff --git a/pkgs/development/python-modules/django-crispy-bootstrap4/default.nix b/pkgs/development/python-modules/django-crispy-bootstrap4/default.nix
index d1a66ed8f704d..eb533ddec43f0 100644
--- a/pkgs/development/python-modules/django-crispy-bootstrap4/default.nix
+++ b/pkgs/development/python-modules/django-crispy-bootstrap4/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
-, setuptools
-, pytestCheckHook
-, pytest-django
-, django-crispy-forms
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  setuptools,
+  pytestCheckHook,
+  pytest-django,
+  django-crispy-forms,
 }:
 
 buildPythonPackage rec {
   pname = "django-crispy-bootstrap4";
   version = "2024.1";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "django-crispy-forms";
@@ -20,15 +21,16 @@ buildPythonPackage rec {
     hash = "sha256-upHrNDhoY+8qD+aeXPcY452xUIyYjW0apf8mVo6pqY4=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     django
-    setuptools
+    django-crispy-forms
   ];
 
   nativeCheckInputs = [
     pytest-django
     pytestCheckHook
-    django-crispy-forms
   ];
 
   pythonImportsCheck = [ "crispy_bootstrap4" ];
@@ -36,6 +38,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Bootstrap 4 template pack for django-crispy-forms";
     homepage = "https://github.com/django-crispy-forms/crispy-bootstrap4";
+    changelog = "https://github.com/django-crispy-forms/crispy-bootstrap4/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ onny ];
   };
diff --git a/pkgs/development/python-modules/django-crispy-bootstrap5/default.nix b/pkgs/development/python-modules/django-crispy-bootstrap5/default.nix
index 4d14ce5129a72..87ccaa6a9e6ae 100644
--- a/pkgs/development/python-modules/django-crispy-bootstrap5/default.nix
+++ b/pkgs/development/python-modules/django-crispy-bootstrap5/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
-, setuptools
-, pytestCheckHook
-, pytest-django
-, django-crispy-forms
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  setuptools,
+  pytestCheckHook,
+  pytest-django,
+  django-crispy-forms,
 }:
 
 buildPythonPackage rec {
   pname = "django-crispy-bootstrap5";
   version = "2024.2";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "django-crispy-forms";
@@ -20,15 +21,16 @@ buildPythonPackage rec {
     hash = "sha256-ehcDwy53pZCqouvUm6qJG2FJzlFZaygTZxNYPOqH1q0=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     django
-    setuptools
+    django-crispy-forms
   ];
 
   nativeCheckInputs = [
     pytest-django
     pytestCheckHook
-    django-crispy-forms
   ];
 
   pythonImportsCheck = [ "crispy_bootstrap5" ];
@@ -36,6 +38,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Bootstrap 5 template pack for django-crispy-forms";
     homepage = "https://github.com/django-crispy-forms/crispy-bootstrap5";
+    changelog = "https://github.com/django-crispy-forms/crispy-bootstrap5/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ onny ];
   };
diff --git a/pkgs/development/python-modules/django-crispy-forms/default.nix b/pkgs/development/python-modules/django-crispy-forms/default.nix
index 81aecd208ae84..2406715f4f245 100644
--- a/pkgs/development/python-modules/django-crispy-forms/default.nix
+++ b/pkgs/development/python-modules/django-crispy-forms/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
-, setuptools
-, pytestCheckHook
-, pytest-django
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  setuptools,
+  pytestCheckHook,
+  pytest-django,
 }:
 
 buildPythonPackage rec {
   pname = "django-crispy-forms";
-  version = "2.1";
+  version = "2.3";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "django-crispy-forms";
     repo = "django-crispy-forms";
     rev = "refs/tags/${version}";
-    hash = "sha256-UQ5m0JWir20TdLgS+DVVLcMBlIEIfmzv8pkMJtaC0LA=";
+    hash = "sha256-R2s2dUsVw5p7xn4yWeFcE7au8yHWXjFgS5jjCBveg04=";
   };
 
   propagatedBuildInputs = [
@@ -40,7 +41,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "crispy_forms" ];
 
   meta = with lib; {
-    description = "The best way to have DRY Django forms.";
+    description = "Best way to have DRY Django forms";
     homepage = "https://django-crispy-forms.readthedocs.io/en/latest/";
     license = licenses.mit;
     maintainers = with maintainers; [ ambroisie ];
diff --git a/pkgs/development/python-modules/django-crontab/default.nix b/pkgs/development/python-modules/django-crontab/default.nix
deleted file mode 100644
index 27ecce4a1ddb8..0000000000000
--- a/pkgs/development/python-modules/django-crontab/default.nix
+++ /dev/null
@@ -1,52 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
-, setuptools
-, pytestCheckHook
-, pytest-django
-, mock
-, nose
-}:
-
-buildPythonPackage rec {
-  pname = "django-crontab";
-  version = "0.7.1";
-  format = "pyproject";
-
-  src = fetchFromGitHub {
-    owner = "kraiz";
-    repo = "django-crontab";
-    rev = "refs/tags/${version}";
-    hash = "sha256-qX+N3SMUyhMWoWluRCeOPGYKCMBnjg61P281HXHkfJk=";
-  };
-
-  propagatedBuildInputs = [
-    django
-    setuptools
-  ];
-
-  nativeCheckInputs = [
-    django
-    mock
-    nose
-    pytestCheckHook
-    pytest-django
-  ];
-
-  # Tests currently fail with: RuntimeError: setup_test_environment() was
-  # already called and can't be called again without first calling
-  # teardown_test_environment()
-  doCheck = false;
-
-  DJANGO_SETTINGS_MODULE = "tests.settings";
-
-  pythonImportsCheck = [ "django_crontab" ];
-
-  meta = with lib; {
-    description = "Simple crontab powered job scheduling for Django";
-    homepage = "https://github.com/kraiz/django-crontab";
-    license = licenses.mit;
-    maintainers = with maintainers; [ onny ];
-  };
-}
diff --git a/pkgs/development/python-modules/django-cryptography/default.nix b/pkgs/development/python-modules/django-cryptography/default.nix
index a49a519394032..ffa5efa39aa55 100644
--- a/pkgs/development/python-modules/django-cryptography/default.nix
+++ b/pkgs/development/python-modules/django-cryptography/default.nix
@@ -1,13 +1,13 @@
-{ buildPythonPackage
-, cryptography
-, django
-, django-appconf
-, fetchFromGitHub
-, fetchpatch
-, lib
-, python
-, pythonOlder
-, setuptools
+{
+  buildPythonPackage,
+  cryptography,
+  django,
+  django-appconf,
+  fetchFromGitHub,
+  lib,
+  python,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-C3E2iT9JdLvF+1g+xhZ8dPDjjh25JUxLAtTMnalIxPk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     cryptography
@@ -48,7 +46,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/georgemarshall/django-cryptography";
-    description = "A set of primitives for performing cryptography in Django";
+    description = "Set of primitives for performing cryptography in Django";
     license = licenses.bsd3;
     maintainers = with maintainers; [ centromere ];
   };
diff --git a/pkgs/development/python-modules/django-csp/default.nix b/pkgs/development/python-modules/django-csp/default.nix
index e8f04f188a54f..5c5920404fbc8 100644
--- a/pkgs/development/python-modules/django-csp/default.nix
+++ b/pkgs/development/python-modules/django-csp/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, django
+  # dependencies
+  django,
 
-# tests
-, jinja2
-, pytest-django
-, pytestCheckHook
+  # tests
+  jinja2,
+  pytest-django,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -29,13 +30,9 @@ buildPythonPackage rec {
     sed -i "/addopts =/d" pyproject.toml
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    django
-  ];
+  dependencies = [ django ];
 
   nativeCheckInputs = [
     jinja2
diff --git a/pkgs/development/python-modules/django-currentuser/default.nix b/pkgs/development/python-modules/django-currentuser/default.nix
index 1b1c5a3f33deb..4bbbe4fdb9556 100644
--- a/pkgs/development/python-modules/django-currentuser/default.nix
+++ b/pkgs/development/python-modules/django-currentuser/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python3
-, pythonOlder
-, django
-, hatchling
-, pyhamcrest
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  pythonOlder,
+  django,
+  hatchling,
+  pyhamcrest,
 }:
 let
   version = "0.6.1";
@@ -37,7 +38,7 @@ buildPythonPackage {
 
   checkPhase = ''
     runHook preCheck
-    ${python3.interpreter} manage.py test testapp
+    ${python.interpreter} manage.py test testapp
     runHook postCheck
   '';
 
diff --git a/pkgs/development/python-modules/django-debug-toolbar/default.nix b/pkgs/development/python-modules/django-debug-toolbar/default.nix
index ee1a557b8eb06..f4c3d8e27ed3d 100644
--- a/pkgs/development/python-modules/django-debug-toolbar/default.nix
+++ b/pkgs/development/python-modules/django-debug-toolbar/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, fetchFromGitHub
-, pythonOlder
-, buildPythonPackage
-, python
-, hatchling
-, django
-, jinja2
-, sqlparse
-, html5lib
+{
+  lib,
+  fetchFromGitHub,
+  pythonOlder,
+  buildPythonPackage,
+  python,
+  hatchling,
+  django,
+  jinja2,
+  sqlparse,
+  html5lib,
 }:
 
 buildPythonPackage rec {
   pname = "django-debug-toolbar";
-  version = "4.3";
+  version = "4.4.6";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -21,12 +22,10 @@ buildPythonPackage rec {
     owner = "jazzband";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-8rwEM+YSO9TtkC1UWS4JrzFH+TlGOHzL+WmxNwMJIWQ=";
+    hash = "sha256-eLC3GnhYuEunKkKXNMtaFCqjyf8rn5cTkjL7Ep4Qp3c=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     django
@@ -39,9 +38,7 @@ buildPythonPackage rec {
   TEST_ARGS = "tests";
   DJANGO_SETTINGS_MODULE = "tests.settings";
 
-  nativeCheckInputs = [
-    html5lib
-  ];
+  nativeCheckInputs = [ html5lib ];
 
   checkPhase = ''
     runHook preCheck
@@ -49,9 +46,7 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "debug_toolbar"
-  ];
+  pythonImportsCheck = [ "debug_toolbar" ];
 
   meta = with lib; {
     description = "Configurable set of panels that display debug information about the current request/response";
diff --git a/pkgs/development/python-modules/django-dynamic-preferences/default.nix b/pkgs/development/python-modules/django-dynamic-preferences/default.nix
index bdb6c1d8229c5..28f9368de776b 100644
--- a/pkgs/development/python-modules/django-dynamic-preferences/default.nix
+++ b/pkgs/development/python-modules/django-dynamic-preferences/default.nix
@@ -1,16 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# dependencies
-, django
-, persisting-theory
-, six
-
-# tests
-, djangorestframework
-, pytest-django
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # dependencies
+  django,
+  persisting-theory,
+  six,
+
+  # tests
+  djangorestframework,
+  pytest-django,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-S0PAlSrMOQ68mX548pZzARfau/lytXWC4S5uVO1rUmo=";
   };
 
-  buildInputs = [
-    django
-  ];
+  buildInputs = [ django ];
 
   propagatedBuildInputs = [
     six
@@ -40,6 +40,11 @@ buildPythonPackage rec {
     pytest-django
   ];
 
+  pythonImportsCheck = [ "dynamic_preferences" ];
+
+  # Remove once https://github.com/agateblue/django-dynamic-preferences/issues/309 is fixed
+  doCheck = pythonOlder "3.12";
+
   env.DJANGO_SETTINGS = "tests.settings";
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/django-encrypted-model-fields/default.nix b/pkgs/development/python-modules/django-encrypted-model-fields/default.nix
index 242d173db68a1..52109a7a529be 100644
--- a/pkgs/development/python-modules/django-encrypted-model-fields/default.nix
+++ b/pkgs/development/python-modules/django-encrypted-model-fields/default.nix
@@ -1,10 +1,12 @@
-{ buildPythonPackage
-, cryptography
-, django
-, fetchPypi
-, lib
-, poetry-core
-, pythonOlder }:
+{
+  buildPythonPackage,
+  cryptography,
+  django,
+  fetchPypi,
+  lib,
+  poetry-core,
+  pythonOlder,
+}:
 buildPythonPackage rec {
   pname = "django-encrypted-model-fields";
   version = "0.6.5";
@@ -16,9 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-i9IcVWXA1k7E29N1rTT+potNotuHHew/px/nteQiHJk=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     cryptography
@@ -28,7 +28,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "encrypted_model_fields" ];
 
   meta = with lib; {
-    description = "A set of fields that wrap standard Django fields with encryption provided by the python cryptography library";
+    description = "Set of fields that wrap standard Django fields with encryption provided by the python cryptography library";
     homepage = "https://gitlab.com/lansharkconsulting/django/django-encrypted-model-fields";
     license = licenses.mit;
     maintainers = with maintainers; [ centromere ];
diff --git a/pkgs/development/python-modules/django-environ/default.nix b/pkgs/development/python-modules/django-environ/default.nix
index c9c6b99717443..4820a064658e3 100644
--- a/pkgs/development/python-modules/django-environ/default.nix
+++ b/pkgs/development/python-modules/django-environ/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, django
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  django,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -17,12 +18,14 @@ buildPythonPackage rec {
 
   # The testsuite fails to modify the base environment
   doCheck = false;
-  propagatedBuildInputs = [ django six ];
+  propagatedBuildInputs = [
+    django
+    six
+  ];
 
   meta = with lib; {
     description = "Utilize environment variables to configure your Django application";
     homepage = "https://github.com/joke2k/django-environ/";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/django-extensions/default.nix b/pkgs/development/python-modules/django-extensions/default.nix
index 5e77c5bfc5902..8e10c4c1f567e 100644
--- a/pkgs/development/python-modules/django-extensions/default.nix
+++ b/pkgs/development/python-modules/django-extensions/default.nix
@@ -1,37 +1,64 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
-, factory-boy
-, mock
-, pip
-, pygments
-, pytest-django
-, pytestCheckHook
-, shortuuid
-, vobject
-, werkzeug
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  aiosmtpd,
+  django,
+  looseversion,
+
+  # tests
+  factory-boy,
+  mock,
+  pip,
+  pygments,
+  pytestCheckHook,
+  pytest-django,
+  shortuuid,
+  vobject,
+  werkzeug,
 }:
 
 buildPythonPackage rec {
   pname = "django-extensions";
   version = "3.2.3";
-  format = "setuptools";
+  pyproject = true;
 
-  src = fetchFromGitHub {
+   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "refs/tags/${version}";
     hash = "sha256-A2+5FBv0IhTJPkwgd7je+B9Ac64UHJEa3HRBbWr2FxM=";
   };
 
+  patches = [
+    (fetchpatch2 {
+      # Replace dead asyncore, smtp implementation with aiosmtpd
+      name = "django-extensions-aiosmtpd.patch";
+      url = "https://github.com/django-extensions/django-extensions/commit/37d56c4a4704c823ac6a4ef7c3de4c0232ceee64.patch";
+      hash = "sha256-49UeJQKO0epwY/7tqoiHgOXdgPcB/JBIZaCn3ulaHTg=";
+    })
+  ];
+
   postPatch = ''
     substituteInPlace setup.cfg \
-      --replace "--cov=django_extensions --cov-report html --cov-report term" ""
+      --replace-fail "--cov=django_extensions --cov-report html --cov-report term" ""
+
+    substituteInPlace django_extensions/management/commands/pipchecker.py \
+      --replace-fail "from distutils.version" "from looseversion"
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
+    aiosmtpd
     django
+    looseversion
   ];
 
   __darwinAllowLocalNetworking = true;
@@ -48,16 +75,20 @@ buildPythonPackage rec {
     werkzeug
   ];
 
+  disabledTests = [
+    # Mismatch in expectation of exception message
+    "test_installed_apps_no_resolve_conflicts_function"
+  ];
+
   disabledTestPaths = [
     # requires network access
     "tests/management/commands/test_pipchecker.py"
     # django.db.utils.OperationalError: no such table: django_extensions_permmodel
     "tests/test_dumpscript.py"
-
   ];
 
   meta = with lib; {
-    description = "A collection of custom extensions for the Django Framework";
+    description = "Collection of custom extensions for the Django Framework";
     homepage = "https://github.com/django-extensions/django-extensions";
     license = licenses.mit;
   };
diff --git a/pkgs/development/python-modules/django-filter/default.nix b/pkgs/development/python-modules/django-filter/default.nix
index 926851b7fe005..212d5318b3fd7 100644
--- a/pkgs/development/python-modules/django-filter/default.nix
+++ b/pkgs/development/python-modules/django-filter/default.nix
@@ -1,35 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, django
-, djangorestframework
-, pytestCheckHook
-, pytest-django
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  django,
+  djangorestframework,
+  pytestCheckHook,
+  pytest-django,
+  pytz,
 }:
 
 buildPythonPackage rec {
   pname = "django-filter";
-  version = "24.2";
+  version = "24.3";
   pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-SOX8HaPM1soNX5u1UJc1GM6Xek7d6dKooVSn9PC5+W4=";
+  src = fetchFromGitHub {
+    owner = "carltongibson";
+    repo = "django-filter";
+    rev = "refs/tags/${version}";
+    hash = "sha256-4q/x9FO9ErKnGeJDEXDMcvUKA4nlA7nkwwM2xj3WGWs=";
   };
 
   build-system = [ flit-core ];
 
   dependencies = [ django ];
 
-  pythonImportsCheck = [
-    "django_filters"
-  ];
+  pythonImportsCheck = [ "django_filters" ];
 
   nativeCheckInputs = [
     djangorestframework
     pytestCheckHook
     pytest-django
+    pytz
   ];
 
   env.DJANGO_SETTINGS_MODULE = "tests.settings";
diff --git a/pkgs/development/python-modules/django-formset-js-improved/default.nix b/pkgs/development/python-modules/django-formset-js-improved/default.nix
index b14306f06f788..0f3a54b688e48 100644
--- a/pkgs/development/python-modules/django-formset-js-improved/default.nix
+++ b/pkgs/development/python-modules/django-formset-js-improved/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
-, django-jquery-js
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  django-jquery-js,
 }:
 
 buildPythonPackage rec {
@@ -17,22 +18,16 @@ buildPythonPackage rec {
     hash = "sha256-bOM24ldXk9WeV0jl6LIJB3BJ5hVWLA1PJTBBnJBoprU=";
   };
 
-  buildInputs = [
-    django
-  ];
+  buildInputs = [ django ];
 
-  propagatedBuildInputs = [
-    django-jquery-js
-  ];
+  propagatedBuildInputs = [ django-jquery-js ];
 
-  pythonImportsCheck = [
-    "djangoformsetjs"
-  ];
+  pythonImportsCheck = [ "djangoformsetjs" ];
 
   doCheck = false; # no tests
 
   meta = with lib; {
-    description = "A wrapper for a JavaScript formset helper";
+    description = "Wrapper for a JavaScript formset helper";
     homepage = "https://github.com/pretix/django-formset-js";
     license = licenses.bsd2;
     maintainers = with maintainers; [ hexa ];
diff --git a/pkgs/development/python-modules/django-formtools/default.nix b/pkgs/development/python-modules/django-formtools/default.nix
index 94dd9f3708825..0bd2d30e34133 100644
--- a/pkgs/development/python-modules/django-formtools/default.nix
+++ b/pkgs/development/python-modules/django-formtools/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, django
-, fetchPypi
-, python
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchPypi,
+  python,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-R8s0VSxu/KCIhj1pMoTQT8NuqvNQ6yHhodk14N9SPJM=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
   checkPhase = ''
     runHook preCheck
@@ -35,15 +32,16 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "formtools"
-  ];
+  pythonImportsCheck = [ "formtools" ];
 
   meta = with lib; {
-    description = "A set of high-level abstractions for Django forms";
+    description = "Set of high-level abstractions for Django forms";
     homepage = "https://github.com/jazzband/django-formtools";
     changelog = "https://github.com/jazzband/django-formtools/blob/master/docs/changelog.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ greizgh schmittlauch ];
+    maintainers = with maintainers; [
+      greizgh
+      schmittlauch
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/django-google-analytics-app/default.nix b/pkgs/development/python-modules/django-google-analytics-app/default.nix
index ad9262f844a5e..8dd5cda3ee744 100644
--- a/pkgs/development/python-modules/django-google-analytics-app/default.nix
+++ b/pkgs/development/python-modules/django-google-analytics-app/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, celery
-, django
-, fetchFromGitHub
-, importlib-metadata
-, python
-, pythonOlder
-, requests
-, structlog
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  celery,
+  django,
+  fetchFromGitHub,
+  importlib-metadata,
+  python,
+  pythonOlder,
+  requests,
+  structlog,
 }:
 
 buildPythonPackage rec {
@@ -40,9 +41,7 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "google_analytics"
-  ];
+  pythonImportsCheck = [ "google_analytics" ];
 
   meta = with lib; {
     description = "Django Google Analytics brings the power of server side/non-js Google Analytics to your Django projects";
diff --git a/pkgs/development/python-modules/django-graphiql-debug-toolbar/default.nix b/pkgs/development/python-modules/django-graphiql-debug-toolbar/default.nix
index 26a82254a7a67..cbd1e348c74d4 100644
--- a/pkgs/development/python-modules/django-graphiql-debug-toolbar/default.nix
+++ b/pkgs/development/python-modules/django-graphiql-debug-toolbar/default.nix
@@ -1,18 +1,27 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, django
-, django-debug-toolbar
-, graphene-django
-, python
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  fetchpatch,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  django,
+  django-debug-toolbar,
+  graphene-django,
+
+  # tests
+  pytest-django,
+  pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "django-graphiql-debug-toolbar";
   version = "0.2.0";
-  format = "pyproject";
+  pyproject = true;
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
@@ -22,31 +31,38 @@ buildPythonPackage rec {
     sha256 = "0fikr7xl786jqfkjdifymqpqnxy4qj8g3nlkgfm24wwq0za719dw";
   };
 
-  nativeBuildInputs = [
-    poetry-core
+  patches = [
+    # Add compatibility for py-django-debug-toolbar >= 4.4.6
+    # https://github.com/flavors/django-graphiql-debug-toolbar/pull/27
+    (fetchpatch {
+      url = "https://github.com/flavors/django-graphiql-debug-toolbar/commit/2b42fdb1bc40109d9bb0ae1fb4d2163d13904724.patch";
+      hash = "sha256-ywTLqXlAxA2DCacrJOqmB7jSzfpeuGTX2ETu0fKmhq4=";
+     })
   ];
 
-  propagatedBuildInputs = [
+  build-system = [ poetry-core ];
+
+  dependencies = [
     django
     django-debug-toolbar
     graphene-django
   ];
 
-  pythonImportsCheck = [
-    "graphiql_debug_toolbar"
-  ];
+  pythonImportsCheck = [ "graphiql_debug_toolbar" ];
 
-  DB_BACKEND = "sqlite";
-  DB_NAME = ":memory:";
-  DJANGO_SETTINGS_MODULE = "tests.settings";
+  nativeCheckInputs = [
+    pytest-django
+    pytestCheckHook
+  ];
 
-  checkPhase = ''
-    runHook preCheck
-    ${python.interpreter} -m django test tests
-    runHook postCheck
+  preCheck = ''
+    export DB_BACKEND=sqlite
+    export DB_NAME=:memory:
+    export DJANGO_SETTINGS_MODULE=tests.settings
   '';
 
   meta = with lib; {
+    changelog = "https://github.com/flavors/django-graphiql-debug-toolbar/releases/tag/${src.rev}";
     description = "Django Debug Toolbar for GraphiQL IDE";
     homepage = "https://github.com/flavors/django-graphiql-debug-toolbar";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/django-gravatar2/default.nix b/pkgs/development/python-modules/django-gravatar2/default.nix
index d43748448c51d..214a5ed4ddd0b 100644
--- a/pkgs/development/python-modules/django-gravatar2/default.nix
+++ b/pkgs/development/python-modules/django-gravatar2/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "django-gravatar2";
diff --git a/pkgs/development/python-modules/django-guardian/default.nix b/pkgs/development/python-modules/django-guardian/default.nix
index 968e82b5849db..a6727b8f055b8 100644
--- a/pkgs/development/python-modules/django-guardian/default.nix
+++ b/pkgs/development/python-modules/django-guardian/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, django-environ
-, mock
-, django
-, pytestCheckHook
-, pytest-django
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  django-environ,
+  mock,
+  django,
+  pytestCheckHook,
+  pytest-django,
 }:
 
 buildPythonPackage rec {
@@ -32,7 +33,10 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Per object permissions for Django";
     homepage = "https://github.com/django-guardian/django-guardian";
-    license = with licenses; [ mit bsd2 ];
-    maintainers = with maintainers; [ ];
+    license = with licenses; [
+      mit
+      bsd2
+    ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/django-haystack/default.nix b/pkgs/development/python-modules/django-haystack/default.nix
index d9d6fb8ecd6fc..f74215dd1e8d5 100644
--- a/pkgs/development/python-modules/django-haystack/default.nix
+++ b/pkgs/development/python-modules/django-haystack/default.nix
@@ -1,68 +1,59 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
 
-# build dependencies
-, setuptools
-, setuptools-scm
+  # build dependencies
+  setuptools,
+  setuptools-scm,
 
-# dependencies
-, django
+  # dependencies
+  django,
+  packaging,
 
-# tests
-, elasticsearch
-, geopy
-, nose
-, pysolr
-, python-dateutil
-, requests
-, whoosh
+  # tests
+  elasticsearch,
+  geopy,
+  pysolr,
+  python-dateutil,
+  requests,
+  whoosh,
 }:
 
 buildPythonPackage rec {
   pname = "django-haystack";
-  version = "3.2.1";
+  version = "3.3.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-l+MZeu/CJf5AW28XYAolNL+CfLTWdDEwwgvBoG9yk6Q=";
+    pname = "django_haystack";
+    inherit version;
+    hash = "sha256-487ta4AAYl2hTUCetNrGmJSQXirIrBj5v9tZMjygLqs=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "geopy==" "geopy>="
-  '';
-
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  buildInputs = [
-    django
-  ];
+  buildInputs = [ django ];
+  propagatedBuildInputs = [ packaging ];
 
-  passthru.optional-dependencies = {
-    elasticsearch = [
-      elasticsearch
-    ];
+  optional-dependencies = {
+    elasticsearch = [ elasticsearch ];
   };
 
-  doCheck = lib.versionOlder django.version "4";
-
   nativeCheckInputs = [
     geopy
-    nose
     pysolr
     python-dateutil
     requests
     whoosh
-  ]
-  ++ passthru.optional-dependencies.elasticsearch;
+  ] ++ optional-dependencies.elasticsearch;
+
 
   checkPhase = ''
     runHook preCheck
@@ -74,6 +65,6 @@ buildPythonPackage rec {
     description = "Pluggable search for Django";
     homepage = "http://haystacksearch.org/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/django-hcaptcha/default.nix b/pkgs/development/python-modules/django-hcaptcha/default.nix
index 9daf8330331c7..7f0eff2377007 100644
--- a/pkgs/development/python-modules/django-hcaptcha/default.nix
+++ b/pkgs/development/python-modules/django-hcaptcha/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, django
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  django,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
     hash = "sha256-slGerwzJeGWscvglMBEixc9h4eSFLWiVmUFgIirLbBo=";
   };
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
   # No tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/django-health-check/default.nix b/pkgs/development/python-modules/django-health-check/default.nix
index 6716c1f003a2f..fa4e5bcb12ca6 100644
--- a/pkgs/development/python-modules/django-health-check/default.nix
+++ b/pkgs/development/python-modules/django-health-check/default.nix
@@ -1,26 +1,30 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, sphinx
-, setuptools-scm
-, django
-, redis
-, celery
-, pytest-django
-, pytestCheckHook
-, mock
-, gitMinimal }:
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  sphinx,
+  setuptools-scm,
+  django,
+  redis,
+  celery,
+  boto3,
+  django-storages,
+  pytest-django,
+  pytestCheckHook,
+  mock,
+  gitMinimal,
+}:
 
 buildPythonPackage rec {
   pname = "django-health-check";
-  version = "3.18.1";
+  version = "3.18.3";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "KristianOellegaard";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-4fl7x0pleI1yL+tEWGt5Gmcl6ZKETQz2AsNQDVIAwy8=";
+    hash = "sha256-+6+YxB/x4JdKUCwxxe+YIc+r1YAzngFUHiS6atupWM8=";
   };
 
   buildInputs = [
@@ -34,6 +38,8 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
+    boto3
+    django-storages
     pytest-django
     pytestCheckHook
     mock
diff --git a/pkgs/development/python-modules/django-hierarkey/default.nix b/pkgs/development/python-modules/django-hierarkey/default.nix
index 77f33f0b526c5..488783094f54f 100644
--- a/pkgs/development/python-modules/django-hierarkey/default.nix
+++ b/pkgs/development/python-modules/django-hierarkey/default.nix
@@ -1,36 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# propagates
-, python-dateutil
+  # build-system
+  setuptools,
 
-# tests
-, django-extensions
-, pytest-django
-, pytestCheckHook
+  # propagates
+  python-dateutil,
+
+  # tests
+  django-extensions,
+  pytest-django,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "django-hierarkey";
-  version = "1.1.0";
-  format = "setuptools";
+  version = "1.2.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "raphaelm";
     repo = "django-hierarkey";
-    # https://github.com/raphaelm/django-hierarkey/commit/c81ace02ca404a8756e2931bb6faf55b6365e140
-    rev = "c81ace02ca404a8756e2931bb6faf55b6365e140";
-    hash = "sha256-sCARyTjuuAUptlOsFmApnsQpcksP+uYnq0lukXDMcuk=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-1LSH9GwoNF3NrDVNUIHDAVsktyKIprDgB5XlIHeM3fM=";
   };
 
-  propagatedBuildInputs = [
-    python-dateutil
-  ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [
-    "hierarkey"
-  ];
+  dependencies = [ python-dateutil ];
+
+  pythonImportsCheck = [ "hierarkey" ];
 
   nativeCheckInputs = [
     django-extensions
@@ -40,9 +41,7 @@ buildPythonPackage rec {
 
   DJANGO_SETTINGS_MODULE = "tests.settings";
 
-  pytestFlagsArray = [
-    "tests"
-  ];
+  pytestFlagsArray = [ "tests" ];
 
   meta = with lib; {
     description = "Flexible and powerful hierarchical key-value store for your Django models";
diff --git a/pkgs/development/python-modules/django-hijack/default.nix b/pkgs/development/python-modules/django-hijack/default.nix
index 427a8e2311398..5900e4a42ff5e 100644
--- a/pkgs/development/python-modules/django-hijack/default.nix
+++ b/pkgs/development/python-modules/django-hijack/default.nix
@@ -1,77 +1,72 @@
-{ lib
-, fetchFromGitHub
-, fetchNpmDeps
-, buildPythonPackage
-, nix-update-script
+{
+  lib,
+  fetchFromGitHub,
+  fetchNpmDeps,
+  buildPythonPackage,
+  nix-update-script,
 
-# build-system
-, gettext
-, nodejs
-, npmHooks
-, setuptools-scm
+  # build-system
+  flit-gettext,
+  flit-scm,
+  nodejs,
+  npmHooks,
 
-# dependencies
-, django
+  # dependencies
+  django,
 
-# tests
-, pytest-django
-, pytestCheckHook
+  # tests
+  pytest-django,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "django-hijack";
-  version = "3.4.5";
-  format = "setuptools";
+  version = "3.6.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "django-hijack";
     repo = "django-hijack";
     rev = "refs/tags/${version}";
-    hash = "sha256-FXh5OFMTjsKgjEeIS+CiOwyGOs4AisJA+g49rCILDsQ=";
+    hash = "sha256-uece+tR3Nd32nfKn1gtcWqckN4z5iUP+C0dJxyDPXBA=";
   };
 
   postPatch = ''
-    substituteInPlace setup.py \
-      --replace 'cmd = ["npm", "ci"]' 'cmd = ["true"]' \
-      --replace 'f"{self.build_lib}/{name}.mo"' 'f"{name}.mo"'
+    sed -i "/addopts/d" pyproject.toml
 
-    sed -i "/addopts/d" setup.cfg
+  # missing integrity hashes for yocto-queue, yargs-parser
+    cp ${./package-lock.json} package-lock.json
   '';
 
   npmDeps = fetchNpmDeps {
-    inherit src;
-    hash = "sha256-cZEr/7FW4vCR8gpraT+/rPwYK9Xn22b5WH7lnuK5L4U=";
+    inherit src postPatch;
+    hash = "sha256-npAFpdqGdttE4facBimS/y2SqwnCvOHJhd60SPR/IaA=";
   };
 
-  nativeBuildInputs = [
-    gettext
+  build-system = [
+    flit-gettext
+    flit-scm
     nodejs
     npmHooks.npmConfigHook
-    setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    django
-  ];
+  dependencies = [ django ];
 
   nativeCheckInputs = [
     pytestCheckHook
     pytest-django
   ];
 
-  env.DJANGO_SETTINGS_MODULE = "hijack.tests.test_app.settings";
-
-  pytestFlagsArray = [
-    "--pyargs" "hijack"
-    "-W" "ignore::DeprecationWarning"
-  ];
+  preCheck = ''
+    export DJANGO_SETTINGS_MODULE=tests.test_app.settings
+  '';
 
   # needed for npmDeps update
   passthru.updateScript = nix-update-script { };
 
   meta = with lib; {
     description = "Allows superusers to hijack (=login as) and work on behalf of another user";
-    homepage = "https://github.com/arteria/django-hijack";
+    homepage = "https://github.com/django-hijack/django-hijack";
     changelog = "https://github.com/django-hijack/django-hijack/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ ris ];
diff --git a/pkgs/development/python-modules/django-hijack/package-lock.json b/pkgs/development/python-modules/django-hijack/package-lock.json
new file mode 100644
index 0000000000000..74de400e4d82d
--- /dev/null
+++ b/pkgs/development/python-modules/django-hijack/package-lock.json
@@ -0,0 +1,7875 @@
+{
+  "name": "django-hijack",
+  "version": "1.0.0",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "django-hijack",
+      "version": "1.0.0",
+      "license": "MIT",
+      "devDependencies": {
+        "jest": "*",
+        "jest-environment-jsdom": "*",
+        "standard": "*",
+        "stylelint": "*",
+        "stylelint-config-standard-scss": "*",
+        "stylelint-scss": "*"
+      }
+    },
+    "node_modules/@ampproject/remapping": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+      "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/gen-mapping": "^0.3.5",
+        "@jridgewell/trace-mapping": "^0.3.24"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/code-frame": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
+      "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/highlight": "^7.24.7",
+        "picocolors": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/compat-data": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz",
+      "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/core": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz",
+      "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==",
+      "dev": true,
+      "dependencies": {
+        "@ampproject/remapping": "^2.2.0",
+        "@babel/code-frame": "^7.24.7",
+        "@babel/generator": "^7.24.7",
+        "@babel/helper-compilation-targets": "^7.24.7",
+        "@babel/helper-module-transforms": "^7.24.7",
+        "@babel/helpers": "^7.24.7",
+        "@babel/parser": "^7.24.7",
+        "@babel/template": "^7.24.7",
+        "@babel/traverse": "^7.24.7",
+        "@babel/types": "^7.24.7",
+        "convert-source-map": "^2.0.0",
+        "debug": "^4.1.0",
+        "gensync": "^1.0.0-beta.2",
+        "json5": "^2.2.3",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/babel"
+      }
+    },
+    "node_modules/@babel/generator": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz",
+      "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.24.7",
+        "@jridgewell/gen-mapping": "^0.3.5",
+        "@jridgewell/trace-mapping": "^0.3.25",
+        "jsesc": "^2.5.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-compilation-targets": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz",
+      "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/compat-data": "^7.24.7",
+        "@babel/helper-validator-option": "^7.24.7",
+        "browserslist": "^4.22.2",
+        "lru-cache": "^5.1.1",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-environment-visitor": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz",
+      "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-function-name": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz",
+      "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/template": "^7.24.7",
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-hoist-variables": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz",
+      "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-imports": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
+      "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/traverse": "^7.24.7",
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-transforms": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz",
+      "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-environment-visitor": "^7.24.7",
+        "@babel/helper-module-imports": "^7.24.7",
+        "@babel/helper-simple-access": "^7.24.7",
+        "@babel/helper-split-export-declaration": "^7.24.7",
+        "@babel/helper-validator-identifier": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-plugin-utils": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz",
+      "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-simple-access": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
+      "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/traverse": "^7.24.7",
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-split-export-declaration": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz",
+      "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-string-parser": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz",
+      "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
+      "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-option": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz",
+      "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helpers": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz",
+      "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/template": "^7.24.7",
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/highlight": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
+      "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.24.7",
+        "chalk": "^2.4.2",
+        "js-tokens": "^4.0.0",
+        "picocolors": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "dev": true
+    },
+    "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz",
+      "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==",
+      "dev": true,
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-async-generators": {
+      "version": "7.8.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+      "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-bigint": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
+      "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-class-properties": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+      "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-import-meta": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+      "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-json-strings": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+      "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-jsx": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz",
+      "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+      "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+      "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-numeric-separator": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+      "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-object-rest-spread": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+      "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+      "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-optional-chaining": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+      "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-top-level-await": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+      "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-typescript": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz",
+      "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/template": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz",
+      "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.24.7",
+        "@babel/parser": "^7.24.7",
+        "@babel/types": "^7.24.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/traverse": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz",
+      "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.24.7",
+        "@babel/generator": "^7.24.7",
+        "@babel/helper-environment-visitor": "^7.24.7",
+        "@babel/helper-function-name": "^7.24.7",
+        "@babel/helper-hoist-variables": "^7.24.7",
+        "@babel/helper-split-export-declaration": "^7.24.7",
+        "@babel/parser": "^7.24.7",
+        "@babel/types": "^7.24.7",
+        "debug": "^4.3.1",
+        "globals": "^11.1.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/types": {
+      "version": "7.24.7",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz",
+      "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-string-parser": "^7.24.7",
+        "@babel/helper-validator-identifier": "^7.24.7",
+        "to-fast-properties": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@bcoe/v8-coverage": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+      "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+      "dev": true
+    },
+    "node_modules/@csstools/css-parser-algorithms": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.0.tgz",
+      "integrity": "sha512-qvBMcOU/uWFCH/VO0MYe0AMs0BGMWAt6FTryMbFIKYtZtVnqTZtT8ktv5o718llkaGZWomJezJZjq3vJDHeJNQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "engines": {
+        "node": "^14 || ^16 || >=18"
+      },
+      "peerDependencies": {
+        "@csstools/css-tokenizer": "^2.3.2"
+      }
+    },
+    "node_modules/@csstools/css-tokenizer": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.3.2.tgz",
+      "integrity": "sha512-0xYOf4pQpAaE6Sm2Q0x3p25oRukzWQ/O8hWVvhIt9Iv98/uu053u2CGm/g3kJ+P0vOYTAYzoU8Evq2pg9ZPXtw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "engines": {
+        "node": "^14 || ^16 || >=18"
+      }
+    },
+    "node_modules/@csstools/media-query-list-parser": {
+      "version": "2.1.12",
+      "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.12.tgz",
+      "integrity": "sha512-t1/CdyVJzOQUiGUcIBXRzTAkWTFPxiPnoKwowKW2z9Uj78c2bBWI/X94BeVfUwVq1xtCjD7dnO8kS6WONgp8Jw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "engines": {
+        "node": "^14 || ^16 || >=18"
+      },
+      "peerDependencies": {
+        "@csstools/css-parser-algorithms": "^2.7.0",
+        "@csstools/css-tokenizer": "^2.3.2"
+      }
+    },
+    "node_modules/@csstools/selector-specificity": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz",
+      "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "engines": {
+        "node": "^14 || ^16 || >=18"
+      },
+      "peerDependencies": {
+        "postcss-selector-parser": "^6.0.13"
+      }
+    },
+    "node_modules/@dual-bundle/import-meta-resolve": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz",
+      "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==",
+      "dev": true,
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/@eslint-community/eslint-utils": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+      "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+      "dev": true,
+      "dependencies": {
+        "eslint-visitor-keys": "^3.3.0"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+      }
+    },
+    "node_modules/@eslint-community/regexpp": {
+      "version": "4.11.0",
+      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz",
+      "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==",
+      "dev": true,
+      "engines": {
+        "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+      }
+    },
+    "node_modules/@eslint/eslintrc": {
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+      "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+      "dev": true,
+      "dependencies": {
+        "ajv": "^6.12.4",
+        "debug": "^4.3.2",
+        "espree": "^9.6.0",
+        "globals": "^13.19.0",
+        "ignore": "^5.2.0",
+        "import-fresh": "^3.2.1",
+        "js-yaml": "^4.1.0",
+        "minimatch": "^3.1.2",
+        "strip-json-comments": "^3.1.1"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/@eslint/eslintrc/node_modules/argparse": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+      "dev": true
+    },
+    "node_modules/@eslint/eslintrc/node_modules/globals": {
+      "version": "13.24.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+      "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+      "dev": true,
+      "dependencies": {
+        "type-fest": "^0.20.2"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@eslint/eslintrc/node_modules/js-yaml": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+      "dev": true,
+      "dependencies": {
+        "argparse": "^2.0.1"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/@eslint/eslintrc/node_modules/type-fest": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+      "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@eslint/js": {
+      "version": "8.57.0",
+      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
+      "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
+      "dev": true,
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      }
+    },
+    "node_modules/@humanwhocodes/config-array": {
+      "version": "0.11.14",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
+      "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
+      "deprecated": "Use @eslint/config-array instead",
+      "dev": true,
+      "dependencies": {
+        "@humanwhocodes/object-schema": "^2.0.2",
+        "debug": "^4.3.1",
+        "minimatch": "^3.0.5"
+      },
+      "engines": {
+        "node": ">=10.10.0"
+      }
+    },
+    "node_modules/@humanwhocodes/module-importer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+      "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+      "dev": true,
+      "engines": {
+        "node": ">=12.22"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/nzakas"
+      }
+    },
+    "node_modules/@humanwhocodes/object-schema": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+      "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+      "deprecated": "Use @eslint/object-schema instead",
+      "dev": true
+    },
+    "node_modules/@istanbuljs/load-nyc-config": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
+      "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
+      "dev": true,
+      "dependencies": {
+        "camelcase": "^5.3.1",
+        "find-up": "^4.1.0",
+        "get-package-type": "^0.1.0",
+        "js-yaml": "^3.13.1",
+        "resolve-from": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@istanbuljs/schema": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+      "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jest/console": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz",
+      "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==",
+      "dev": true,
+      "dependencies": {
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "jest-message-util": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/core": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz",
+      "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==",
+      "dev": true,
+      "dependencies": {
+        "@jest/console": "^29.7.0",
+        "@jest/reporters": "^29.7.0",
+        "@jest/test-result": "^29.7.0",
+        "@jest/transform": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.0.0",
+        "ci-info": "^3.2.0",
+        "exit": "^0.1.2",
+        "graceful-fs": "^4.2.9",
+        "jest-changed-files": "^29.7.0",
+        "jest-config": "^29.7.0",
+        "jest-haste-map": "^29.7.0",
+        "jest-message-util": "^29.7.0",
+        "jest-regex-util": "^29.6.3",
+        "jest-resolve": "^29.7.0",
+        "jest-resolve-dependencies": "^29.7.0",
+        "jest-runner": "^29.7.0",
+        "jest-runtime": "^29.7.0",
+        "jest-snapshot": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "jest-validate": "^29.7.0",
+        "jest-watcher": "^29.7.0",
+        "micromatch": "^4.0.4",
+        "pretty-format": "^29.7.0",
+        "slash": "^3.0.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+      },
+      "peerDependenciesMeta": {
+        "node-notifier": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@jest/environment": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz",
+      "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/fake-timers": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "jest-mock": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/expect": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz",
+      "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==",
+      "dev": true,
+      "dependencies": {
+        "expect": "^29.7.0",
+        "jest-snapshot": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/expect-utils": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz",
+      "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==",
+      "dev": true,
+      "dependencies": {
+        "jest-get-type": "^29.6.3"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/fake-timers": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz",
+      "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==",
+      "dev": true,
+      "dependencies": {
+        "@jest/types": "^29.6.3",
+        "@sinonjs/fake-timers": "^10.0.2",
+        "@types/node": "*",
+        "jest-message-util": "^29.7.0",
+        "jest-mock": "^29.7.0",
+        "jest-util": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/globals": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz",
+      "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==",
+      "dev": true,
+      "dependencies": {
+        "@jest/environment": "^29.7.0",
+        "@jest/expect": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "jest-mock": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/reporters": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz",
+      "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==",
+      "dev": true,
+      "dependencies": {
+        "@bcoe/v8-coverage": "^0.2.3",
+        "@jest/console": "^29.7.0",
+        "@jest/test-result": "^29.7.0",
+        "@jest/transform": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "@jridgewell/trace-mapping": "^0.3.18",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "collect-v8-coverage": "^1.0.0",
+        "exit": "^0.1.2",
+        "glob": "^7.1.3",
+        "graceful-fs": "^4.2.9",
+        "istanbul-lib-coverage": "^3.0.0",
+        "istanbul-lib-instrument": "^6.0.0",
+        "istanbul-lib-report": "^3.0.0",
+        "istanbul-lib-source-maps": "^4.0.0",
+        "istanbul-reports": "^3.1.3",
+        "jest-message-util": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "jest-worker": "^29.7.0",
+        "slash": "^3.0.0",
+        "string-length": "^4.0.1",
+        "strip-ansi": "^6.0.0",
+        "v8-to-istanbul": "^9.0.1"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+      },
+      "peerDependenciesMeta": {
+        "node-notifier": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@jest/schemas": {
+      "version": "29.6.3",
+      "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
+      "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
+      "dev": true,
+      "dependencies": {
+        "@sinclair/typebox": "^0.27.8"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/source-map": {
+      "version": "29.6.3",
+      "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz",
+      "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/trace-mapping": "^0.3.18",
+        "callsites": "^3.0.0",
+        "graceful-fs": "^4.2.9"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/test-result": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz",
+      "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==",
+      "dev": true,
+      "dependencies": {
+        "@jest/console": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "collect-v8-coverage": "^1.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/test-sequencer": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz",
+      "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/test-result": "^29.7.0",
+        "graceful-fs": "^4.2.9",
+        "jest-haste-map": "^29.7.0",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/transform": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz",
+      "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/core": "^7.11.6",
+        "@jest/types": "^29.6.3",
+        "@jridgewell/trace-mapping": "^0.3.18",
+        "babel-plugin-istanbul": "^6.1.1",
+        "chalk": "^4.0.0",
+        "convert-source-map": "^2.0.0",
+        "fast-json-stable-stringify": "^2.1.0",
+        "graceful-fs": "^4.2.9",
+        "jest-haste-map": "^29.7.0",
+        "jest-regex-util": "^29.6.3",
+        "jest-util": "^29.7.0",
+        "micromatch": "^4.0.4",
+        "pirates": "^4.0.4",
+        "slash": "^3.0.0",
+        "write-file-atomic": "^4.0.2"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/types": {
+      "version": "29.6.3",
+      "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
+      "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/schemas": "^29.6.3",
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^17.0.8",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jridgewell/gen-mapping": {
+      "version": "0.3.5",
+      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+      "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/set-array": "^1.2.1",
+        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/trace-mapping": "^0.3.24"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/resolve-uri": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+      "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/set-array": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+      "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.4.15",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+      "dev": true
+    },
+    "node_modules/@jridgewell/trace-mapping": {
+      "version": "0.3.25",
+      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+      "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/resolve-uri": "^3.1.0",
+        "@jridgewell/sourcemap-codec": "^1.4.14"
+      }
+    },
+    "node_modules/@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.stat": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+      "dev": true,
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.walk": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@sinclair/typebox": {
+      "version": "0.27.8",
+      "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
+      "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
+      "dev": true
+    },
+    "node_modules/@sinonjs/commons": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz",
+      "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==",
+      "dev": true,
+      "dependencies": {
+        "type-detect": "4.0.8"
+      }
+    },
+    "node_modules/@sinonjs/fake-timers": {
+      "version": "10.3.0",
+      "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
+      "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
+      "dev": true,
+      "dependencies": {
+        "@sinonjs/commons": "^3.0.0"
+      }
+    },
+    "node_modules/@tootallnate/once": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
+      "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+      "dev": true,
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/@types/babel__core": {
+      "version": "7.20.5",
+      "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+      "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/parser": "^7.20.7",
+        "@babel/types": "^7.20.7",
+        "@types/babel__generator": "*",
+        "@types/babel__template": "*",
+        "@types/babel__traverse": "*"
+      }
+    },
+    "node_modules/@types/babel__generator": {
+      "version": "7.6.8",
+      "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
+      "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "node_modules/@types/babel__template": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+      "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+      "dev": true,
+      "dependencies": {
+        "@babel/parser": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "node_modules/@types/babel__traverse": {
+      "version": "7.20.6",
+      "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz",
+      "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.20.7"
+      }
+    },
+    "node_modules/@types/graceful-fs": {
+      "version": "4.1.9",
+      "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
+      "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/istanbul-lib-coverage": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+      "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
+      "dev": true
+    },
+    "node_modules/@types/istanbul-lib-report": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
+      "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
+      "dev": true,
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "*"
+      }
+    },
+    "node_modules/@types/istanbul-reports": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
+      "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
+      "dev": true,
+      "dependencies": {
+        "@types/istanbul-lib-report": "*"
+      }
+    },
+    "node_modules/@types/jsdom": {
+      "version": "20.0.1",
+      "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz",
+      "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*",
+        "@types/tough-cookie": "*",
+        "parse5": "^7.0.0"
+      }
+    },
+    "node_modules/@types/json5": {
+      "version": "0.0.29",
+      "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+      "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+      "dev": true
+    },
+    "node_modules/@types/node": {
+      "version": "20.14.9",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz",
+      "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==",
+      "dev": true,
+      "dependencies": {
+        "undici-types": "~5.26.4"
+      }
+    },
+    "node_modules/@types/stack-utils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz",
+      "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
+      "dev": true
+    },
+    "node_modules/@types/tough-cookie": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz",
+      "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==",
+      "dev": true
+    },
+    "node_modules/@types/yargs": {
+      "version": "17.0.32",
+      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz",
+      "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==",
+      "dev": true,
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/@types/yargs-parser": {
+      "version": "21.0.3",
+      "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
+      "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
+      "dev": true
+    },
+    "node_modules/@ungap/structured-clone": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+      "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+      "dev": true
+    },
+    "node_modules/abab": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
+      "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
+      "deprecated": "Use your platform's native atob() and btoa() methods instead",
+      "dev": true
+    },
+    "node_modules/acorn": {
+      "version": "8.12.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz",
+      "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==",
+      "dev": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/acorn-globals": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz",
+      "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==",
+      "dev": true,
+      "dependencies": {
+        "acorn": "^8.1.0",
+        "acorn-walk": "^8.0.2"
+      }
+    },
+    "node_modules/acorn-jsx": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+      "dev": true,
+      "peerDependencies": {
+        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+      }
+    },
+    "node_modules/acorn-walk": {
+      "version": "8.3.3",
+      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz",
+      "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==",
+      "dev": true,
+      "dependencies": {
+        "acorn": "^8.11.0"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/agent-base": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+      "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+      "dev": true,
+      "dependencies": {
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
+    "node_modules/ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+      "dev": true,
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
+    },
+    "node_modules/ansi-escapes": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+      "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+      "dev": true,
+      "dependencies": {
+        "type-fest": "^0.21.3"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/anymatch": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+      "dev": true,
+      "dependencies": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dev": true,
+      "dependencies": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "node_modules/array-buffer-byte-length": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
+      "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.5",
+        "is-array-buffer": "^3.0.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/array-includes": {
+      "version": "3.1.8",
+      "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz",
+      "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.2",
+        "es-object-atoms": "^1.0.0",
+        "get-intrinsic": "^1.2.4",
+        "is-string": "^1.0.7"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/array-union": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+      "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/array.prototype.findlast": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz",
+      "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.2",
+        "es-errors": "^1.3.0",
+        "es-object-atoms": "^1.0.0",
+        "es-shim-unscopables": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/array.prototype.findlastindex": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz",
+      "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.2",
+        "es-errors": "^1.3.0",
+        "es-object-atoms": "^1.0.0",
+        "es-shim-unscopables": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/array.prototype.flat": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
+      "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.2.0",
+        "es-abstract": "^1.22.1",
+        "es-shim-unscopables": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/array.prototype.flatmap": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
+      "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.2.0",
+        "es-abstract": "^1.22.1",
+        "es-shim-unscopables": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/array.prototype.toreversed": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz",
+      "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.2.0",
+        "es-abstract": "^1.22.1",
+        "es-shim-unscopables": "^1.0.0"
+      }
+    },
+    "node_modules/array.prototype.tosorted": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz",
+      "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.3",
+        "es-errors": "^1.3.0",
+        "es-shim-unscopables": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/arraybuffer.prototype.slice": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
+      "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
+      "dev": true,
+      "dependencies": {
+        "array-buffer-byte-length": "^1.0.1",
+        "call-bind": "^1.0.5",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.22.3",
+        "es-errors": "^1.2.1",
+        "get-intrinsic": "^1.2.3",
+        "is-array-buffer": "^3.0.4",
+        "is-shared-array-buffer": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/astral-regex": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+      "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+      "dev": true
+    },
+    "node_modules/available-typed-arrays": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+      "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+      "dev": true,
+      "dependencies": {
+        "possible-typed-array-names": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/babel-jest": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz",
+      "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==",
+      "dev": true,
+      "dependencies": {
+        "@jest/transform": "^29.7.0",
+        "@types/babel__core": "^7.1.14",
+        "babel-plugin-istanbul": "^6.1.1",
+        "babel-preset-jest": "^29.6.3",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.9",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.8.0"
+      }
+    },
+    "node_modules/babel-plugin-istanbul": {
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
+      "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@istanbuljs/load-nyc-config": "^1.0.0",
+        "@istanbuljs/schema": "^0.1.2",
+        "istanbul-lib-instrument": "^5.0.4",
+        "test-exclude": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+      "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/core": "^7.12.3",
+        "@babel/parser": "^7.14.7",
+        "@istanbuljs/schema": "^0.1.2",
+        "istanbul-lib-coverage": "^3.2.0",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/babel-plugin-jest-hoist": {
+      "version": "29.6.3",
+      "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz",
+      "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/template": "^7.3.3",
+        "@babel/types": "^7.3.3",
+        "@types/babel__core": "^7.1.14",
+        "@types/babel__traverse": "^7.0.6"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/babel-preset-current-node-syntax": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
+      "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/plugin-syntax-async-generators": "^7.8.4",
+        "@babel/plugin-syntax-bigint": "^7.8.3",
+        "@babel/plugin-syntax-class-properties": "^7.8.3",
+        "@babel/plugin-syntax-import-meta": "^7.8.3",
+        "@babel/plugin-syntax-json-strings": "^7.8.3",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+        "@babel/plugin-syntax-numeric-separator": "^7.8.3",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+        "@babel/plugin-syntax-top-level-await": "^7.8.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/babel-preset-jest": {
+      "version": "29.6.3",
+      "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz",
+      "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==",
+      "dev": true,
+      "dependencies": {
+        "babel-plugin-jest-hoist": "^29.6.3",
+        "babel-preset-current-node-syntax": "^1.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/braces": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+      "dev": true,
+      "dependencies": {
+        "fill-range": "^7.1.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/browserslist": {
+      "version": "4.23.1",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz",
+      "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "dependencies": {
+        "caniuse-lite": "^1.0.30001629",
+        "electron-to-chromium": "^1.4.796",
+        "node-releases": "^2.0.14",
+        "update-browserslist-db": "^1.0.16"
+      },
+      "bin": {
+        "browserslist": "cli.js"
+      },
+      "engines": {
+        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+      }
+    },
+    "node_modules/bser": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
+      "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+      "dev": true,
+      "dependencies": {
+        "node-int64": "^0.4.0"
+      }
+    },
+    "node_modules/buffer-from": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+      "dev": true
+    },
+    "node_modules/builtins": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz",
+      "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==",
+      "dev": true,
+      "dependencies": {
+        "semver": "^7.0.0"
+      }
+    },
+    "node_modules/builtins/node_modules/semver": {
+      "version": "7.6.2",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+      "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/call-bind": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+      "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+      "dev": true,
+      "dependencies": {
+        "es-define-property": "^1.0.0",
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "get-intrinsic": "^1.2.4",
+        "set-function-length": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/caniuse-lite": {
+      "version": "1.0.30001639",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001639.tgz",
+      "integrity": "sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ]
+    },
+    "node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/char-regex": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
+      "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/ci-info": {
+      "version": "3.9.0",
+      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
+      "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/sibiraj-s"
+        }
+      ],
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cjs-module-lexer": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz",
+      "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==",
+      "dev": true
+    },
+    "node_modules/cliui": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+      "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+      "dev": true,
+      "dependencies": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.1",
+        "wrap-ansi": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/co": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+      "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+      "dev": true,
+      "engines": {
+        "iojs": ">= 1.0.0",
+        "node": ">= 0.12.0"
+      }
+    },
+    "node_modules/collect-v8-coverage": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
+      "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
+      "dev": true
+    },
+    "node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
+    },
+    "node_modules/colord": {
+      "version": "2.9.3",
+      "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
+      "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
+      "dev": true
+    },
+    "node_modules/combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "dev": true,
+      "dependencies": {
+        "delayed-stream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+      "dev": true
+    },
+    "node_modules/convert-source-map": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+      "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+      "dev": true
+    },
+    "node_modules/cosmiconfig": {
+      "version": "9.0.0",
+      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
+      "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
+      "dev": true,
+      "dependencies": {
+        "env-paths": "^2.2.1",
+        "import-fresh": "^3.3.0",
+        "js-yaml": "^4.1.0",
+        "parse-json": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/d-fischer"
+      },
+      "peerDependencies": {
+        "typescript": ">=4.9.5"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/cosmiconfig/node_modules/argparse": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+      "dev": true
+    },
+    "node_modules/cosmiconfig/node_modules/js-yaml": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+      "dev": true,
+      "dependencies": {
+        "argparse": "^2.0.1"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/create-jest": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz",
+      "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==",
+      "dev": true,
+      "dependencies": {
+        "@jest/types": "^29.6.3",
+        "chalk": "^4.0.0",
+        "exit": "^0.1.2",
+        "graceful-fs": "^4.2.9",
+        "jest-config": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "prompts": "^2.0.1"
+      },
+      "bin": {
+        "create-jest": "bin/create-jest.js"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/cross-spawn": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+      "dev": true,
+      "dependencies": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/css-functions-list": {
+      "version": "3.2.2",
+      "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz",
+      "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=12 || >=16"
+      }
+    },
+    "node_modules/css-tree": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
+      "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
+      "dev": true,
+      "dependencies": {
+        "mdn-data": "2.0.30",
+        "source-map-js": "^1.0.1"
+      },
+      "engines": {
+        "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+      }
+    },
+    "node_modules/cssesc": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+      "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+      "dev": true,
+      "bin": {
+        "cssesc": "bin/cssesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cssom": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz",
+      "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==",
+      "dev": true
+    },
+    "node_modules/cssstyle": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
+      "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+      "dev": true,
+      "dependencies": {
+        "cssom": "~0.3.6"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cssstyle/node_modules/cssom": {
+      "version": "0.3.8",
+      "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+      "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+      "dev": true
+    },
+    "node_modules/data-urls": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz",
+      "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==",
+      "dev": true,
+      "dependencies": {
+        "abab": "^2.0.6",
+        "whatwg-mimetype": "^3.0.0",
+        "whatwg-url": "^11.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/data-view-buffer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
+      "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.6",
+        "es-errors": "^1.3.0",
+        "is-data-view": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/data-view-byte-length": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
+      "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "es-errors": "^1.3.0",
+        "is-data-view": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/data-view-byte-offset": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
+      "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.6",
+        "es-errors": "^1.3.0",
+        "is-data-view": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/debug": {
+      "version": "4.3.5",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
+      "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/decimal.js": {
+      "version": "10.4.3",
+      "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
+      "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
+      "dev": true
+    },
+    "node_modules/dedent": {
+      "version": "1.5.3",
+      "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz",
+      "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==",
+      "dev": true,
+      "peerDependencies": {
+        "babel-plugin-macros": "^3.1.0"
+      },
+      "peerDependenciesMeta": {
+        "babel-plugin-macros": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/deep-is": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+      "dev": true
+    },
+    "node_modules/deepmerge": {
+      "version": "4.3.1",
+      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+      "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/define-data-property": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+      "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+      "dev": true,
+      "dependencies": {
+        "es-define-property": "^1.0.0",
+        "es-errors": "^1.3.0",
+        "gopd": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/define-properties": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+      "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+      "dev": true,
+      "dependencies": {
+        "define-data-property": "^1.0.1",
+        "has-property-descriptors": "^1.0.0",
+        "object-keys": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/detect-newline": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
+      "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/diff-sequences": {
+      "version": "29.6.3",
+      "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
+      "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
+      "dev": true,
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/dir-glob": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+      "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+      "dev": true,
+      "dependencies": {
+        "path-type": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/doctrine": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+      "dev": true,
+      "dependencies": {
+        "esutils": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/domexception": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
+      "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==",
+      "deprecated": "Use your platform's native DOMException instead",
+      "dev": true,
+      "dependencies": {
+        "webidl-conversions": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/electron-to-chromium": {
+      "version": "1.4.815",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.815.tgz",
+      "integrity": "sha512-OvpTT2ItpOXJL7IGcYakRjHCt8L5GrrN/wHCQsRB4PQa1X9fe+X9oen245mIId7s14xvArCGSTIq644yPUKKLg==",
+      "dev": true
+    },
+    "node_modules/emittery": {
+      "version": "0.13.1",
+      "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
+      "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/emittery?sponsor=1"
+      }
+    },
+    "node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "dev": true
+    },
+    "node_modules/entities": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+      "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.12"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
+      }
+    },
+    "node_modules/env-paths": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+      "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/error-ex": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+      "dev": true,
+      "dependencies": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "node_modules/es-abstract": {
+      "version": "1.23.3",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
+      "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==",
+      "dev": true,
+      "dependencies": {
+        "array-buffer-byte-length": "^1.0.1",
+        "arraybuffer.prototype.slice": "^1.0.3",
+        "available-typed-arrays": "^1.0.7",
+        "call-bind": "^1.0.7",
+        "data-view-buffer": "^1.0.1",
+        "data-view-byte-length": "^1.0.1",
+        "data-view-byte-offset": "^1.0.0",
+        "es-define-property": "^1.0.0",
+        "es-errors": "^1.3.0",
+        "es-object-atoms": "^1.0.0",
+        "es-set-tostringtag": "^2.0.3",
+        "es-to-primitive": "^1.2.1",
+        "function.prototype.name": "^1.1.6",
+        "get-intrinsic": "^1.2.4",
+        "get-symbol-description": "^1.0.2",
+        "globalthis": "^1.0.3",
+        "gopd": "^1.0.1",
+        "has-property-descriptors": "^1.0.2",
+        "has-proto": "^1.0.3",
+        "has-symbols": "^1.0.3",
+        "hasown": "^2.0.2",
+        "internal-slot": "^1.0.7",
+        "is-array-buffer": "^3.0.4",
+        "is-callable": "^1.2.7",
+        "is-data-view": "^1.0.1",
+        "is-negative-zero": "^2.0.3",
+        "is-regex": "^1.1.4",
+        "is-shared-array-buffer": "^1.0.3",
+        "is-string": "^1.0.7",
+        "is-typed-array": "^1.1.13",
+        "is-weakref": "^1.0.2",
+        "object-inspect": "^1.13.1",
+        "object-keys": "^1.1.1",
+        "object.assign": "^4.1.5",
+        "regexp.prototype.flags": "^1.5.2",
+        "safe-array-concat": "^1.1.2",
+        "safe-regex-test": "^1.0.3",
+        "string.prototype.trim": "^1.2.9",
+        "string.prototype.trimend": "^1.0.8",
+        "string.prototype.trimstart": "^1.0.8",
+        "typed-array-buffer": "^1.0.2",
+        "typed-array-byte-length": "^1.0.1",
+        "typed-array-byte-offset": "^1.0.2",
+        "typed-array-length": "^1.0.6",
+        "unbox-primitive": "^1.0.2",
+        "which-typed-array": "^1.1.15"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/es-define-property": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+      "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+      "dev": true,
+      "dependencies": {
+        "get-intrinsic": "^1.2.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es-errors": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+      "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es-iterator-helpers": {
+      "version": "1.0.19",
+      "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz",
+      "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.3",
+        "es-errors": "^1.3.0",
+        "es-set-tostringtag": "^2.0.3",
+        "function-bind": "^1.1.2",
+        "get-intrinsic": "^1.2.4",
+        "globalthis": "^1.0.3",
+        "has-property-descriptors": "^1.0.2",
+        "has-proto": "^1.0.3",
+        "has-symbols": "^1.0.3",
+        "internal-slot": "^1.0.7",
+        "iterator.prototype": "^1.1.2",
+        "safe-array-concat": "^1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es-object-atoms": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
+      "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+      "dev": true,
+      "dependencies": {
+        "es-errors": "^1.3.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es-set-tostringtag": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
+      "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
+      "dev": true,
+      "dependencies": {
+        "get-intrinsic": "^1.2.4",
+        "has-tostringtag": "^1.0.2",
+        "hasown": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es-shim-unscopables": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
+      "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
+      "dev": true,
+      "dependencies": {
+        "hasown": "^2.0.0"
+      }
+    },
+    "node_modules/es-to-primitive": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+      "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+      "dev": true,
+      "dependencies": {
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/escalade": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
+      "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/escape-string-regexp": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+      "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/escodegen": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+      "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+      "dev": true,
+      "dependencies": {
+        "esprima": "^4.0.1",
+        "estraverse": "^5.2.0",
+        "esutils": "^2.0.2"
+      },
+      "bin": {
+        "escodegen": "bin/escodegen.js",
+        "esgenerate": "bin/esgenerate.js"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "optionalDependencies": {
+        "source-map": "~0.6.1"
+      }
+    },
+    "node_modules/eslint": {
+      "version": "8.57.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
+      "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
+      "dev": true,
+      "dependencies": {
+        "@eslint-community/eslint-utils": "^4.2.0",
+        "@eslint-community/regexpp": "^4.6.1",
+        "@eslint/eslintrc": "^2.1.4",
+        "@eslint/js": "8.57.0",
+        "@humanwhocodes/config-array": "^0.11.14",
+        "@humanwhocodes/module-importer": "^1.0.1",
+        "@nodelib/fs.walk": "^1.2.8",
+        "@ungap/structured-clone": "^1.2.0",
+        "ajv": "^6.12.4",
+        "chalk": "^4.0.0",
+        "cross-spawn": "^7.0.2",
+        "debug": "^4.3.2",
+        "doctrine": "^3.0.0",
+        "escape-string-regexp": "^4.0.0",
+        "eslint-scope": "^7.2.2",
+        "eslint-visitor-keys": "^3.4.3",
+        "espree": "^9.6.1",
+        "esquery": "^1.4.2",
+        "esutils": "^2.0.2",
+        "fast-deep-equal": "^3.1.3",
+        "file-entry-cache": "^6.0.1",
+        "find-up": "^5.0.0",
+        "glob-parent": "^6.0.2",
+        "globals": "^13.19.0",
+        "graphemer": "^1.4.0",
+        "ignore": "^5.2.0",
+        "imurmurhash": "^0.1.4",
+        "is-glob": "^4.0.0",
+        "is-path-inside": "^3.0.3",
+        "js-yaml": "^4.1.0",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "levn": "^0.4.1",
+        "lodash.merge": "^4.6.2",
+        "minimatch": "^3.1.2",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.9.3",
+        "strip-ansi": "^6.0.1",
+        "text-table": "^0.2.0"
+      },
+      "bin": {
+        "eslint": "bin/eslint.js"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/eslint-config-standard": {
+      "version": "17.1.0",
+      "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz",
+      "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "peerDependencies": {
+        "eslint": "^8.0.1",
+        "eslint-plugin-import": "^2.25.2",
+        "eslint-plugin-n": "^15.0.0 || ^16.0.0 ",
+        "eslint-plugin-promise": "^6.0.0"
+      }
+    },
+    "node_modules/eslint-config-standard-jsx": {
+      "version": "11.0.0",
+      "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz",
+      "integrity": "sha512-+1EV/R0JxEK1L0NGolAr8Iktm3Rgotx3BKwgaX+eAuSX8D952LULKtjgZD3F+e6SvibONnhLwoTi9DPxN5LvvQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "peerDependencies": {
+        "eslint": "^8.8.0",
+        "eslint-plugin-react": "^7.28.0"
+      }
+    },
+    "node_modules/eslint-import-resolver-node": {
+      "version": "0.3.9",
+      "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
+      "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
+      "dev": true,
+      "dependencies": {
+        "debug": "^3.2.7",
+        "is-core-module": "^2.13.0",
+        "resolve": "^1.22.4"
+      }
+    },
+    "node_modules/eslint-import-resolver-node/node_modules/debug": {
+      "version": "3.2.7",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/eslint-module-utils": {
+      "version": "2.8.1",
+      "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz",
+      "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==",
+      "dev": true,
+      "dependencies": {
+        "debug": "^3.2.7"
+      },
+      "engines": {
+        "node": ">=4"
+      },
+      "peerDependenciesMeta": {
+        "eslint": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/eslint-module-utils/node_modules/debug": {
+      "version": "3.2.7",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/eslint-plugin-es": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz",
+      "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==",
+      "dev": true,
+      "dependencies": {
+        "eslint-utils": "^2.0.0",
+        "regexpp": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8.10.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/mysticatea"
+      },
+      "peerDependencies": {
+        "eslint": ">=4.19.1"
+      }
+    },
+    "node_modules/eslint-plugin-es/node_modules/eslint-utils": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
+      "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
+      "dev": true,
+      "dependencies": {
+        "eslint-visitor-keys": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/mysticatea"
+      }
+    },
+    "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+      "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint-plugin-import": {
+      "version": "2.29.1",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz",
+      "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==",
+      "dev": true,
+      "dependencies": {
+        "array-includes": "^3.1.7",
+        "array.prototype.findlastindex": "^1.2.3",
+        "array.prototype.flat": "^1.3.2",
+        "array.prototype.flatmap": "^1.3.2",
+        "debug": "^3.2.7",
+        "doctrine": "^2.1.0",
+        "eslint-import-resolver-node": "^0.3.9",
+        "eslint-module-utils": "^2.8.0",
+        "hasown": "^2.0.0",
+        "is-core-module": "^2.13.1",
+        "is-glob": "^4.0.3",
+        "minimatch": "^3.1.2",
+        "object.fromentries": "^2.0.7",
+        "object.groupby": "^1.0.1",
+        "object.values": "^1.1.7",
+        "semver": "^6.3.1",
+        "tsconfig-paths": "^3.15.0"
+      },
+      "engines": {
+        "node": ">=4"
+      },
+      "peerDependencies": {
+        "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/debug": {
+      "version": "3.2.7",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/doctrine": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+      "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+      "dev": true,
+      "dependencies": {
+        "esutils": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/eslint-plugin-n": {
+      "version": "15.7.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz",
+      "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==",
+      "dev": true,
+      "dependencies": {
+        "builtins": "^5.0.1",
+        "eslint-plugin-es": "^4.1.0",
+        "eslint-utils": "^3.0.0",
+        "ignore": "^5.1.1",
+        "is-core-module": "^2.11.0",
+        "minimatch": "^3.1.2",
+        "resolve": "^1.22.1",
+        "semver": "^7.3.8"
+      },
+      "engines": {
+        "node": ">=12.22.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/mysticatea"
+      },
+      "peerDependencies": {
+        "eslint": ">=7.0.0"
+      }
+    },
+    "node_modules/eslint-plugin-n/node_modules/semver": {
+      "version": "7.6.2",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+      "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/eslint-plugin-promise": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.2.0.tgz",
+      "integrity": "sha512-QmAqwizauvnKOlifxyDj2ObfULpHQawlg/zQdgEixur9vl0CvZGv/LCJV2rtj3210QCoeGBzVMfMXqGAOr/4fA==",
+      "dev": true,
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      },
+      "peerDependencies": {
+        "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0"
+      }
+    },
+    "node_modules/eslint-plugin-react": {
+      "version": "7.34.3",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.3.tgz",
+      "integrity": "sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA==",
+      "dev": true,
+      "dependencies": {
+        "array-includes": "^3.1.8",
+        "array.prototype.findlast": "^1.2.5",
+        "array.prototype.flatmap": "^1.3.2",
+        "array.prototype.toreversed": "^1.1.2",
+        "array.prototype.tosorted": "^1.1.4",
+        "doctrine": "^2.1.0",
+        "es-iterator-helpers": "^1.0.19",
+        "estraverse": "^5.3.0",
+        "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+        "minimatch": "^3.1.2",
+        "object.entries": "^1.1.8",
+        "object.fromentries": "^2.0.8",
+        "object.hasown": "^1.1.4",
+        "object.values": "^1.2.0",
+        "prop-types": "^15.8.1",
+        "resolve": "^2.0.0-next.5",
+        "semver": "^6.3.1",
+        "string.prototype.matchall": "^4.0.11"
+      },
+      "engines": {
+        "node": ">=4"
+      },
+      "peerDependencies": {
+        "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+      }
+    },
+    "node_modules/eslint-plugin-react/node_modules/doctrine": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+      "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+      "dev": true,
+      "dependencies": {
+        "esutils": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/eslint-plugin-react/node_modules/resolve": {
+      "version": "2.0.0-next.5",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
+      "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
+      "dev": true,
+      "dependencies": {
+        "is-core-module": "^2.13.0",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      },
+      "bin": {
+        "resolve": "bin/resolve"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/eslint-scope": {
+      "version": "7.2.2",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+      "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+      "dev": true,
+      "dependencies": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/eslint-utils": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
+      "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
+      "dev": true,
+      "dependencies": {
+        "eslint-visitor-keys": "^2.0.0"
+      },
+      "engines": {
+        "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/mysticatea"
+      },
+      "peerDependencies": {
+        "eslint": ">=5"
+      }
+    },
+    "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+      "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/eslint-visitor-keys": {
+      "version": "3.4.3",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+      "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+      "dev": true,
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/eslint/node_modules/argparse": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+      "dev": true
+    },
+    "node_modules/eslint/node_modules/escape-string-regexp": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/eslint/node_modules/find-up": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+      "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^6.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/eslint/node_modules/globals": {
+      "version": "13.24.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+      "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+      "dev": true,
+      "dependencies": {
+        "type-fest": "^0.20.2"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/eslint/node_modules/js-yaml": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+      "dev": true,
+      "dependencies": {
+        "argparse": "^2.0.1"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/eslint/node_modules/locate-path": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+      "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+      "dev": true,
+      "dependencies": {
+        "p-locate": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/eslint/node_modules/p-locate": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+      "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/eslint/node_modules/type-fest": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+      "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/espree": {
+      "version": "9.6.1",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+      "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+      "dev": true,
+      "dependencies": {
+        "acorn": "^8.9.0",
+        "acorn-jsx": "^5.3.2",
+        "eslint-visitor-keys": "^3.4.1"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+      "dev": true,
+      "bin": {
+        "esparse": "bin/esparse.js",
+        "esvalidate": "bin/esvalidate.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/esquery": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+      "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+      "dev": true,
+      "dependencies": {
+        "estraverse": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/esrecurse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+      "dev": true,
+      "dependencies": {
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/estraverse": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/execa": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+      "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+      "dev": true,
+      "dependencies": {
+        "cross-spawn": "^7.0.3",
+        "get-stream": "^6.0.0",
+        "human-signals": "^2.1.0",
+        "is-stream": "^2.0.0",
+        "merge-stream": "^2.0.0",
+        "npm-run-path": "^4.0.1",
+        "onetime": "^5.1.2",
+        "signal-exit": "^3.0.3",
+        "strip-final-newline": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/execa?sponsor=1"
+      }
+    },
+    "node_modules/exit": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+      "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/expect": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz",
+      "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/expect-utils": "^29.7.0",
+        "jest-get-type": "^29.6.3",
+        "jest-matcher-utils": "^29.7.0",
+        "jest-message-util": "^29.7.0",
+        "jest-util": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/fast-deep-equal": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+      "dev": true
+    },
+    "node_modules/fast-glob": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+      "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.2",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.4"
+      },
+      "engines": {
+        "node": ">=8.6.0"
+      }
+    },
+    "node_modules/fast-glob/node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+      "dev": true
+    },
+    "node_modules/fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+      "dev": true
+    },
+    "node_modules/fastest-levenshtein": {
+      "version": "1.0.16",
+      "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
+      "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 4.9.1"
+      }
+    },
+    "node_modules/fastq": {
+      "version": "1.17.1",
+      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+      "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+      "dev": true,
+      "dependencies": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "node_modules/fb-watchman": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
+      "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
+      "dev": true,
+      "dependencies": {
+        "bser": "2.1.1"
+      }
+    },
+    "node_modules/file-entry-cache": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+      "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+      "dev": true,
+      "dependencies": {
+        "flat-cache": "^3.0.4"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      }
+    },
+    "node_modules/fill-range": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+      "dev": true,
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/find-up": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/flat-cache": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+      "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+      "dev": true,
+      "dependencies": {
+        "flatted": "^3.2.9",
+        "keyv": "^4.5.3",
+        "rimraf": "^3.0.2"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      }
+    },
+    "node_modules/flatted": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
+      "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
+      "dev": true
+    },
+    "node_modules/for-each": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+      "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+      "dev": true,
+      "dependencies": {
+        "is-callable": "^1.1.3"
+      }
+    },
+    "node_modules/form-data": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+      "dev": true,
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+      "dev": true
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/function-bind": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/function.prototype.name": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
+      "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.2.0",
+        "es-abstract": "^1.22.1",
+        "functions-have-names": "^1.2.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/functions-have-names": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/gensync": {
+      "version": "1.0.0-beta.2",
+      "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+      "dev": true,
+      "engines": {
+        "node": "6.* || 8.* || >= 10.*"
+      }
+    },
+    "node_modules/get-intrinsic": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+      "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+      "dev": true,
+      "dependencies": {
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "has-proto": "^1.0.1",
+        "has-symbols": "^1.0.3",
+        "hasown": "^2.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/get-package-type": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
+      "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/get-stdin": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
+      "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/get-stream": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+      "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/get-symbol-description": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
+      "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.5",
+        "es-errors": "^1.3.0",
+        "get-intrinsic": "^1.2.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/glob": {
+      "version": "7.2.3",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "deprecated": "Glob versions prior to v9 are no longer supported",
+      "dev": true,
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.1.1",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+      "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^4.0.3"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/global-modules": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
+      "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
+      "dev": true,
+      "dependencies": {
+        "global-prefix": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/global-prefix": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
+      "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
+      "dev": true,
+      "dependencies": {
+        "ini": "^1.3.5",
+        "kind-of": "^6.0.2",
+        "which": "^1.3.1"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/global-prefix/node_modules/which": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+      "dev": true,
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "which": "bin/which"
+      }
+    },
+    "node_modules/globals": {
+      "version": "11.12.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/globalthis": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+      "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+      "dev": true,
+      "dependencies": {
+        "define-properties": "^1.2.1",
+        "gopd": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/globby": {
+      "version": "11.1.0",
+      "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+      "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+      "dev": true,
+      "dependencies": {
+        "array-union": "^2.1.0",
+        "dir-glob": "^3.0.1",
+        "fast-glob": "^3.2.9",
+        "ignore": "^5.2.0",
+        "merge2": "^1.4.1",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/globjoin": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz",
+      "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==",
+      "dev": true
+    },
+    "node_modules/gopd": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+      "dev": true,
+      "dependencies": {
+        "get-intrinsic": "^1.1.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/graceful-fs": {
+      "version": "4.2.11",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+      "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+      "dev": true
+    },
+    "node_modules/graphemer": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+      "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+      "dev": true
+    },
+    "node_modules/has-bigints": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/has-property-descriptors": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+      "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+      "dev": true,
+      "dependencies": {
+        "es-define-property": "^1.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-proto": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+      "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-symbols": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-tostringtag": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+      "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+      "dev": true,
+      "dependencies": {
+        "has-symbols": "^1.0.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/hasown": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+      "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+      "dev": true,
+      "dependencies": {
+        "function-bind": "^1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/html-encoding-sniffer": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
+      "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
+      "dev": true,
+      "dependencies": {
+        "whatwg-encoding": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/html-escaper": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+      "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+      "dev": true
+    },
+    "node_modules/html-tags": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
+      "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/http-proxy-agent": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+      "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+      "dev": true,
+      "dependencies": {
+        "@tootallnate/once": "2",
+        "agent-base": "6",
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/https-proxy-agent": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+      "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+      "dev": true,
+      "dependencies": {
+        "agent-base": "6",
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/human-signals": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+      "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+      "dev": true,
+      "engines": {
+        "node": ">=10.17.0"
+      }
+    },
+    "node_modules/iconv-lite": {
+      "version": "0.6.3",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+      "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+      "dev": true,
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/ignore": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
+      "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/import-fresh": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+      "dev": true,
+      "dependencies": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/import-fresh/node_modules/resolve-from": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/import-local": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
+      "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
+      "dev": true,
+      "dependencies": {
+        "pkg-dir": "^4.2.0",
+        "resolve-cwd": "^3.0.0"
+      },
+      "bin": {
+        "import-local-fixture": "fixtures/cli.js"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8.19"
+      }
+    },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+      "dev": true,
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "dev": true
+    },
+    "node_modules/ini": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+      "dev": true
+    },
+    "node_modules/internal-slot": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
+      "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
+      "dev": true,
+      "dependencies": {
+        "es-errors": "^1.3.0",
+        "hasown": "^2.0.0",
+        "side-channel": "^1.0.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/is-array-buffer": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
+      "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+      "dev": true
+    },
+    "node_modules/is-async-function": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz",
+      "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==",
+      "dev": true,
+      "dependencies": {
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-bigint": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+      "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+      "dev": true,
+      "dependencies": {
+        "has-bigints": "^1.0.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-boolean-object": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+      "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-callable": {
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+      "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-core-module": {
+      "version": "2.14.0",
+      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz",
+      "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==",
+      "dev": true,
+      "dependencies": {
+        "hasown": "^2.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-data-view": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
+      "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
+      "dev": true,
+      "dependencies": {
+        "is-typed-array": "^1.1.13"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-date-object": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+      "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+      "dev": true,
+      "dependencies": {
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-finalizationregistry": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz",
+      "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-generator-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+      "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/is-generator-function": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+      "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+      "dev": true,
+      "dependencies": {
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dev": true,
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-map": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
+      "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-negative-zero": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+      "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/is-number-object": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+      "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+      "dev": true,
+      "dependencies": {
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-path-inside": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-plain-object": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+      "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-potential-custom-element-name": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+      "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
+      "dev": true
+    },
+    "node_modules/is-regex": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-set": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
+      "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-shared-array-buffer": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
+      "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-stream": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/is-string": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+      "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+      "dev": true,
+      "dependencies": {
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-symbol": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+      "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+      "dev": true,
+      "dependencies": {
+        "has-symbols": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-typed-array": {
+      "version": "1.1.13",
+      "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
+      "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
+      "dev": true,
+      "dependencies": {
+        "which-typed-array": "^1.1.14"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-weakmap": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
+      "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-weakref": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+      "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-weakset": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz",
+      "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "get-intrinsic": "^1.2.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/isarray": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+      "dev": true
+    },
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+      "dev": true
+    },
+    "node_modules/istanbul-lib-coverage": {
+      "version": "3.2.2",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
+      "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/istanbul-lib-instrument": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz",
+      "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/core": "^7.23.9",
+        "@babel/parser": "^7.23.9",
+        "@istanbuljs/schema": "^0.1.3",
+        "istanbul-lib-coverage": "^3.2.0",
+        "semver": "^7.5.4"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/istanbul-lib-instrument/node_modules/semver": {
+      "version": "7.6.2",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+      "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/istanbul-lib-report": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
+      "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
+      "dev": true,
+      "dependencies": {
+        "istanbul-lib-coverage": "^3.0.0",
+        "make-dir": "^4.0.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/istanbul-lib-source-maps": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+      "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+      "dev": true,
+      "dependencies": {
+        "debug": "^4.1.1",
+        "istanbul-lib-coverage": "^3.0.0",
+        "source-map": "^0.6.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/istanbul-reports": {
+      "version": "3.1.7",
+      "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz",
+      "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==",
+      "dev": true,
+      "dependencies": {
+        "html-escaper": "^2.0.0",
+        "istanbul-lib-report": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/iterator.prototype": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz",
+      "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==",
+      "dev": true,
+      "dependencies": {
+        "define-properties": "^1.2.1",
+        "get-intrinsic": "^1.2.1",
+        "has-symbols": "^1.0.3",
+        "reflect.getprototypeof": "^1.0.4",
+        "set-function-name": "^2.0.1"
+      }
+    },
+    "node_modules/jest": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
+      "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/core": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "import-local": "^3.0.2",
+        "jest-cli": "^29.7.0"
+      },
+      "bin": {
+        "jest": "bin/jest.js"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+      },
+      "peerDependenciesMeta": {
+        "node-notifier": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jest-changed-files": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz",
+      "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==",
+      "dev": true,
+      "dependencies": {
+        "execa": "^5.0.0",
+        "jest-util": "^29.7.0",
+        "p-limit": "^3.1.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-circus": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz",
+      "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/environment": "^29.7.0",
+        "@jest/expect": "^29.7.0",
+        "@jest/test-result": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "co": "^4.6.0",
+        "dedent": "^1.0.0",
+        "is-generator-fn": "^2.0.0",
+        "jest-each": "^29.7.0",
+        "jest-matcher-utils": "^29.7.0",
+        "jest-message-util": "^29.7.0",
+        "jest-runtime": "^29.7.0",
+        "jest-snapshot": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "p-limit": "^3.1.0",
+        "pretty-format": "^29.7.0",
+        "pure-rand": "^6.0.0",
+        "slash": "^3.0.0",
+        "stack-utils": "^2.0.3"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-cli": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz",
+      "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==",
+      "dev": true,
+      "dependencies": {
+        "@jest/core": "^29.7.0",
+        "@jest/test-result": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "chalk": "^4.0.0",
+        "create-jest": "^29.7.0",
+        "exit": "^0.1.2",
+        "import-local": "^3.0.2",
+        "jest-config": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "jest-validate": "^29.7.0",
+        "yargs": "^17.3.1"
+      },
+      "bin": {
+        "jest": "bin/jest.js"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+      },
+      "peerDependenciesMeta": {
+        "node-notifier": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jest-config": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz",
+      "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/core": "^7.11.6",
+        "@jest/test-sequencer": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "babel-jest": "^29.7.0",
+        "chalk": "^4.0.0",
+        "ci-info": "^3.2.0",
+        "deepmerge": "^4.2.2",
+        "glob": "^7.1.3",
+        "graceful-fs": "^4.2.9",
+        "jest-circus": "^29.7.0",
+        "jest-environment-node": "^29.7.0",
+        "jest-get-type": "^29.6.3",
+        "jest-regex-util": "^29.6.3",
+        "jest-resolve": "^29.7.0",
+        "jest-runner": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "jest-validate": "^29.7.0",
+        "micromatch": "^4.0.4",
+        "parse-json": "^5.2.0",
+        "pretty-format": "^29.7.0",
+        "slash": "^3.0.0",
+        "strip-json-comments": "^3.1.1"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "@types/node": "*",
+        "ts-node": ">=9.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/node": {
+          "optional": true
+        },
+        "ts-node": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jest-diff": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz",
+      "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^4.0.0",
+        "diff-sequences": "^29.6.3",
+        "jest-get-type": "^29.6.3",
+        "pretty-format": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-docblock": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz",
+      "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==",
+      "dev": true,
+      "dependencies": {
+        "detect-newline": "^3.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-each": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz",
+      "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==",
+      "dev": true,
+      "dependencies": {
+        "@jest/types": "^29.6.3",
+        "chalk": "^4.0.0",
+        "jest-get-type": "^29.6.3",
+        "jest-util": "^29.7.0",
+        "pretty-format": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-environment-jsdom": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz",
+      "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==",
+      "dev": true,
+      "dependencies": {
+        "@jest/environment": "^29.7.0",
+        "@jest/fake-timers": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "@types/jsdom": "^20.0.0",
+        "@types/node": "*",
+        "jest-mock": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "jsdom": "^20.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "canvas": "^2.5.0"
+      },
+      "peerDependenciesMeta": {
+        "canvas": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jest-environment-node": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz",
+      "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/environment": "^29.7.0",
+        "@jest/fake-timers": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "jest-mock": "^29.7.0",
+        "jest-util": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-get-type": {
+      "version": "29.6.3",
+      "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
+      "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
+      "dev": true,
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-haste-map": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz",
+      "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==",
+      "dev": true,
+      "dependencies": {
+        "@jest/types": "^29.6.3",
+        "@types/graceful-fs": "^4.1.3",
+        "@types/node": "*",
+        "anymatch": "^3.0.3",
+        "fb-watchman": "^2.0.0",
+        "graceful-fs": "^4.2.9",
+        "jest-regex-util": "^29.6.3",
+        "jest-util": "^29.7.0",
+        "jest-worker": "^29.7.0",
+        "micromatch": "^4.0.4",
+        "walker": "^1.0.8"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "^2.3.2"
+      }
+    },
+    "node_modules/jest-leak-detector": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz",
+      "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==",
+      "dev": true,
+      "dependencies": {
+        "jest-get-type": "^29.6.3",
+        "pretty-format": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-matcher-utils": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz",
+      "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^4.0.0",
+        "jest-diff": "^29.7.0",
+        "jest-get-type": "^29.6.3",
+        "pretty-format": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-message-util": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz",
+      "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.12.13",
+        "@jest/types": "^29.6.3",
+        "@types/stack-utils": "^2.0.0",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.9",
+        "micromatch": "^4.0.4",
+        "pretty-format": "^29.7.0",
+        "slash": "^3.0.0",
+        "stack-utils": "^2.0.3"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-mock": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz",
+      "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "jest-util": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-pnp-resolver": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
+      "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      },
+      "peerDependencies": {
+        "jest-resolve": "*"
+      },
+      "peerDependenciesMeta": {
+        "jest-resolve": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jest-regex-util": {
+      "version": "29.6.3",
+      "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz",
+      "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==",
+      "dev": true,
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-resolve": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz",
+      "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.9",
+        "jest-haste-map": "^29.7.0",
+        "jest-pnp-resolver": "^1.2.2",
+        "jest-util": "^29.7.0",
+        "jest-validate": "^29.7.0",
+        "resolve": "^1.20.0",
+        "resolve.exports": "^2.0.0",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-resolve-dependencies": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz",
+      "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==",
+      "dev": true,
+      "dependencies": {
+        "jest-regex-util": "^29.6.3",
+        "jest-snapshot": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-runner": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz",
+      "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==",
+      "dev": true,
+      "dependencies": {
+        "@jest/console": "^29.7.0",
+        "@jest/environment": "^29.7.0",
+        "@jest/test-result": "^29.7.0",
+        "@jest/transform": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "emittery": "^0.13.1",
+        "graceful-fs": "^4.2.9",
+        "jest-docblock": "^29.7.0",
+        "jest-environment-node": "^29.7.0",
+        "jest-haste-map": "^29.7.0",
+        "jest-leak-detector": "^29.7.0",
+        "jest-message-util": "^29.7.0",
+        "jest-resolve": "^29.7.0",
+        "jest-runtime": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "jest-watcher": "^29.7.0",
+        "jest-worker": "^29.7.0",
+        "p-limit": "^3.1.0",
+        "source-map-support": "0.5.13"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-runtime": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz",
+      "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==",
+      "dev": true,
+      "dependencies": {
+        "@jest/environment": "^29.7.0",
+        "@jest/fake-timers": "^29.7.0",
+        "@jest/globals": "^29.7.0",
+        "@jest/source-map": "^29.6.3",
+        "@jest/test-result": "^29.7.0",
+        "@jest/transform": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "cjs-module-lexer": "^1.0.0",
+        "collect-v8-coverage": "^1.0.0",
+        "glob": "^7.1.3",
+        "graceful-fs": "^4.2.9",
+        "jest-haste-map": "^29.7.0",
+        "jest-message-util": "^29.7.0",
+        "jest-mock": "^29.7.0",
+        "jest-regex-util": "^29.6.3",
+        "jest-resolve": "^29.7.0",
+        "jest-snapshot": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "slash": "^3.0.0",
+        "strip-bom": "^4.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-snapshot": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz",
+      "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/core": "^7.11.6",
+        "@babel/generator": "^7.7.2",
+        "@babel/plugin-syntax-jsx": "^7.7.2",
+        "@babel/plugin-syntax-typescript": "^7.7.2",
+        "@babel/types": "^7.3.3",
+        "@jest/expect-utils": "^29.7.0",
+        "@jest/transform": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "babel-preset-current-node-syntax": "^1.0.0",
+        "chalk": "^4.0.0",
+        "expect": "^29.7.0",
+        "graceful-fs": "^4.2.9",
+        "jest-diff": "^29.7.0",
+        "jest-get-type": "^29.6.3",
+        "jest-matcher-utils": "^29.7.0",
+        "jest-message-util": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "natural-compare": "^1.4.0",
+        "pretty-format": "^29.7.0",
+        "semver": "^7.5.3"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-snapshot/node_modules/semver": {
+      "version": "7.6.2",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+      "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jest-util": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
+      "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
+      "dev": true,
+      "dependencies": {
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "ci-info": "^3.2.0",
+        "graceful-fs": "^4.2.9",
+        "picomatch": "^2.2.3"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-validate": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz",
+      "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/types": "^29.6.3",
+        "camelcase": "^6.2.0",
+        "chalk": "^4.0.0",
+        "jest-get-type": "^29.6.3",
+        "leven": "^3.1.0",
+        "pretty-format": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-validate/node_modules/camelcase": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+      "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/jest-watcher": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz",
+      "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==",
+      "dev": true,
+      "dependencies": {
+        "@jest/test-result": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.0.0",
+        "emittery": "^0.13.1",
+        "jest-util": "^29.7.0",
+        "string-length": "^4.0.1"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-worker": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
+      "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*",
+        "jest-util": "^29.7.0",
+        "merge-stream": "^2.0.0",
+        "supports-color": "^8.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-worker/node_modules/supports-color": {
+      "version": "8.1.1",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+      "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/supports-color?sponsor=1"
+      }
+    },
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "dev": true
+    },
+    "node_modules/js-yaml": {
+      "version": "3.14.1",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+      "dev": true,
+      "dependencies": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/jsdom": {
+      "version": "20.0.3",
+      "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz",
+      "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==",
+      "dev": true,
+      "dependencies": {
+        "abab": "^2.0.6",
+        "acorn": "^8.8.1",
+        "acorn-globals": "^7.0.0",
+        "cssom": "^0.5.0",
+        "cssstyle": "^2.3.0",
+        "data-urls": "^3.0.2",
+        "decimal.js": "^10.4.2",
+        "domexception": "^4.0.0",
+        "escodegen": "^2.0.0",
+        "form-data": "^4.0.0",
+        "html-encoding-sniffer": "^3.0.0",
+        "http-proxy-agent": "^5.0.0",
+        "https-proxy-agent": "^5.0.1",
+        "is-potential-custom-element-name": "^1.0.1",
+        "nwsapi": "^2.2.2",
+        "parse5": "^7.1.1",
+        "saxes": "^6.0.0",
+        "symbol-tree": "^3.2.4",
+        "tough-cookie": "^4.1.2",
+        "w3c-xmlserializer": "^4.0.0",
+        "webidl-conversions": "^7.0.0",
+        "whatwg-encoding": "^2.0.0",
+        "whatwg-mimetype": "^3.0.0",
+        "whatwg-url": "^11.0.0",
+        "ws": "^8.11.0",
+        "xml-name-validator": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "peerDependencies": {
+        "canvas": "^2.5.0"
+      },
+      "peerDependenciesMeta": {
+        "canvas": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jsesc": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+      "dev": true,
+      "bin": {
+        "jsesc": "bin/jsesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/json-buffer": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+      "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+      "dev": true
+    },
+    "node_modules/json-parse-better-errors": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+      "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+      "dev": true
+    },
+    "node_modules/json-parse-even-better-errors": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+      "dev": true
+    },
+    "node_modules/json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+      "dev": true
+    },
+    "node_modules/json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+      "dev": true
+    },
+    "node_modules/json5": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+      "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+      "dev": true,
+      "bin": {
+        "json5": "lib/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/jsx-ast-utils": {
+      "version": "3.3.5",
+      "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
+      "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
+      "dev": true,
+      "dependencies": {
+        "array-includes": "^3.1.6",
+        "array.prototype.flat": "^1.3.1",
+        "object.assign": "^4.1.4",
+        "object.values": "^1.1.6"
+      },
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/keyv": {
+      "version": "4.5.4",
+      "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+      "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+      "dev": true,
+      "dependencies": {
+        "json-buffer": "3.0.1"
+      }
+    },
+    "node_modules/kind-of": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/kleur": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+      "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/known-css-properties": {
+      "version": "0.31.0",
+      "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.31.0.tgz",
+      "integrity": "sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==",
+      "dev": true
+    },
+    "node_modules/leven": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+      "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/levn": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+      "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+      "dev": true,
+      "dependencies": {
+        "prelude-ls": "^1.2.1",
+        "type-check": "~0.4.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/lines-and-columns": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+      "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+      "dev": true
+    },
+    "node_modules/load-json-file": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz",
+      "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.15",
+        "parse-json": "^4.0.0",
+        "pify": "^4.0.1",
+        "strip-bom": "^3.0.0",
+        "type-fest": "^0.3.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/load-json-file/node_modules/parse-json": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+      "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+      "dev": true,
+      "dependencies": {
+        "error-ex": "^1.3.1",
+        "json-parse-better-errors": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/load-json-file/node_modules/strip-bom": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+      "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/load-json-file/node_modules/type-fest": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz",
+      "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/locate-path": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+      "dev": true,
+      "dependencies": {
+        "p-locate": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lodash.merge": {
+      "version": "4.6.2",
+      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+      "dev": true
+    },
+    "node_modules/lodash.truncate": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+      "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
+      "dev": true
+    },
+    "node_modules/loose-envify": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+      "dev": true,
+      "dependencies": {
+        "js-tokens": "^3.0.0 || ^4.0.0"
+      },
+      "bin": {
+        "loose-envify": "cli.js"
+      }
+    },
+    "node_modules/lru-cache": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+      "dev": true,
+      "dependencies": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "node_modules/make-dir": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
+      "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+      "dev": true,
+      "dependencies": {
+        "semver": "^7.5.3"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/make-dir/node_modules/semver": {
+      "version": "7.6.2",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+      "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/makeerror": {
+      "version": "1.0.12",
+      "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
+      "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+      "dev": true,
+      "dependencies": {
+        "tmpl": "1.0.5"
+      }
+    },
+    "node_modules/mathml-tag-names": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
+      "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==",
+      "dev": true,
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/mdn-data": {
+      "version": "2.0.30",
+      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
+      "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
+      "dev": true
+    },
+    "node_modules/meow": {
+      "version": "13.2.0",
+      "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
+      "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
+      "dev": true,
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/merge-stream": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+      "dev": true
+    },
+    "node_modules/merge2": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/micromatch": {
+      "version": "4.0.7",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
+      "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
+      "dev": true,
+      "dependencies": {
+        "braces": "^3.0.3",
+        "picomatch": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/mime-db": {
+      "version": "1.52.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime-types": {
+      "version": "2.1.35",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+      "dev": true,
+      "dependencies": {
+        "mime-db": "1.52.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mimic-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/minimist": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+      "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
+    },
+    "node_modules/nanoid": {
+      "version": "3.3.7",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+      "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "node_modules/natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+      "dev": true
+    },
+    "node_modules/node-int64": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+      "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
+      "dev": true
+    },
+    "node_modules/node-releases": {
+      "version": "2.0.14",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+      "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
+      "dev": true
+    },
+    "node_modules/normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npm-run-path": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+      "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+      "dev": true,
+      "dependencies": {
+        "path-key": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/nwsapi": {
+      "version": "2.2.10",
+      "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz",
+      "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==",
+      "dev": true
+    },
+    "node_modules/object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-inspect": {
+      "version": "1.13.2",
+      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
+      "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object-keys": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/object.assign": {
+      "version": "4.1.5",
+      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
+      "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.5",
+        "define-properties": "^1.2.1",
+        "has-symbols": "^1.0.3",
+        "object-keys": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object.entries": {
+      "version": "1.1.8",
+      "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz",
+      "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-object-atoms": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/object.fromentries": {
+      "version": "2.0.8",
+      "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
+      "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.2",
+        "es-object-atoms": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object.groupby": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz",
+      "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/object.hasown": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz",
+      "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==",
+      "dev": true,
+      "dependencies": {
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.2",
+        "es-object-atoms": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object.values": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz",
+      "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-object-atoms": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "dev": true,
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/onetime": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+      "dev": true,
+      "dependencies": {
+        "mimic-fn": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/optionator": {
+      "version": "0.9.4",
+      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+      "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+      "dev": true,
+      "dependencies": {
+        "deep-is": "^0.1.3",
+        "fast-levenshtein": "^2.0.6",
+        "levn": "^0.4.1",
+        "prelude-ls": "^1.2.1",
+        "type-check": "^0.4.0",
+        "word-wrap": "^1.2.5"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/p-limit": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+      "dev": true,
+      "dependencies": {
+        "yocto-queue": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-locate": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/p-locate/node_modules/p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+      "dev": true,
+      "dependencies": {
+        "p-try": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "dev": true,
+      "dependencies": {
+        "callsites": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/parse-json": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+      "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "error-ex": "^1.3.1",
+        "json-parse-even-better-errors": "^2.3.0",
+        "lines-and-columns": "^1.1.6"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/parse5": {
+      "version": "7.1.2",
+      "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
+      "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+      "dev": true,
+      "dependencies": {
+        "entities": "^4.4.0"
+      },
+      "funding": {
+        "url": "https://github.com/inikulin/parse5?sponsor=1"
+      }
+    },
+    "node_modules/path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-key": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-parse": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+      "dev": true
+    },
+    "node_modules/path-type": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/picocolors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
+      "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
+      "dev": true
+    },
+    "node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/pify": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/pirates": {
+      "version": "4.0.6",
+      "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+      "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/pkg-conf": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz",
+      "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==",
+      "dev": true,
+      "dependencies": {
+        "find-up": "^3.0.0",
+        "load-json-file": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/pkg-conf/node_modules/find-up": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/pkg-conf/node_modules/locate-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+      "dev": true,
+      "dependencies": {
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/pkg-conf/node_modules/p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+      "dev": true,
+      "dependencies": {
+        "p-try": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/pkg-conf/node_modules/p-locate": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/pkg-conf/node_modules/path-exists": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+      "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-dir": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+      "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+      "dev": true,
+      "dependencies": {
+        "find-up": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/possible-typed-array-names": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
+      "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/postcss": {
+      "version": "8.4.39",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz",
+      "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/postcss"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "dependencies": {
+        "nanoid": "^3.3.7",
+        "picocolors": "^1.0.1",
+        "source-map-js": "^1.2.0"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      }
+    },
+    "node_modules/postcss-media-query-parser": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
+      "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==",
+      "dev": true
+    },
+    "node_modules/postcss-resolve-nested-selector": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz",
+      "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==",
+      "dev": true
+    },
+    "node_modules/postcss-safe-parser": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz",
+      "integrity": "sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "engines": {
+        "node": ">=18.0"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4.31"
+      }
+    },
+    "node_modules/postcss-scss": {
+      "version": "4.0.9",
+      "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz",
+      "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/postcss-scss"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "engines": {
+        "node": ">=12.0"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4.29"
+      }
+    },
+    "node_modules/postcss-selector-parser": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz",
+      "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==",
+      "dev": true,
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss-value-parser": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+      "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+      "dev": true
+    },
+    "node_modules/prelude-ls": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+      "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/pretty-format": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+      "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
+      "dev": true,
+      "dependencies": {
+        "@jest/schemas": "^29.6.3",
+        "ansi-styles": "^5.0.0",
+        "react-is": "^18.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/pretty-format/node_modules/ansi-styles": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+      "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/prompts": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+      "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+      "dev": true,
+      "dependencies": {
+        "kleur": "^3.0.3",
+        "sisteransi": "^1.0.5"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/prop-types": {
+      "version": "15.8.1",
+      "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+      "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+      "dev": true,
+      "dependencies": {
+        "loose-envify": "^1.4.0",
+        "object-assign": "^4.1.1",
+        "react-is": "^16.13.1"
+      }
+    },
+    "node_modules/prop-types/node_modules/react-is": {
+      "version": "16.13.1",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+      "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+      "dev": true
+    },
+    "node_modules/psl": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
+      "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
+      "dev": true
+    },
+    "node_modules/punycode": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+      "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/pure-rand": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz",
+      "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://github.com/sponsors/dubzzz"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/fast-check"
+        }
+      ]
+    },
+    "node_modules/querystringify": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+      "dev": true
+    },
+    "node_modules/queue-microtask": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ]
+    },
+    "node_modules/react-is": {
+      "version": "18.3.1",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+      "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+      "dev": true
+    },
+    "node_modules/reflect.getprototypeof": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz",
+      "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.1",
+        "es-errors": "^1.3.0",
+        "get-intrinsic": "^1.2.4",
+        "globalthis": "^1.0.3",
+        "which-builtin-type": "^1.1.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/regexp.prototype.flags": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
+      "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.6",
+        "define-properties": "^1.2.1",
+        "es-errors": "^1.3.0",
+        "set-function-name": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/regexpp": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
+      "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/mysticatea"
+      }
+    },
+    "node_modules/require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/require-from-string": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+      "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/requires-port": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+      "dev": true
+    },
+    "node_modules/resolve": {
+      "version": "1.22.8",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+      "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+      "dev": true,
+      "dependencies": {
+        "is-core-module": "^2.13.0",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      },
+      "bin": {
+        "resolve": "bin/resolve"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/resolve-cwd": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+      "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+      "dev": true,
+      "dependencies": {
+        "resolve-from": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/resolve-from": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+      "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/resolve.exports": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
+      "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/reusify": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+      "dev": true,
+      "engines": {
+        "iojs": ">=1.0.0",
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/rimraf": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+      "deprecated": "Rimraf versions prior to v4 are no longer supported",
+      "dev": true,
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/run-parallel": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "dependencies": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
+    "node_modules/safe-array-concat": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
+      "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "get-intrinsic": "^1.2.4",
+        "has-symbols": "^1.0.3",
+        "isarray": "^2.0.5"
+      },
+      "engines": {
+        "node": ">=0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/safe-regex-test": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
+      "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.6",
+        "es-errors": "^1.3.0",
+        "is-regex": "^1.1.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+      "dev": true
+    },
+    "node_modules/saxes": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
+      "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
+      "dev": true,
+      "dependencies": {
+        "xmlchars": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=v12.22.7"
+      }
+    },
+    "node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/set-function-length": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+      "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+      "dev": true,
+      "dependencies": {
+        "define-data-property": "^1.1.4",
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "get-intrinsic": "^1.2.4",
+        "gopd": "^1.0.1",
+        "has-property-descriptors": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/set-function-name": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+      "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+      "dev": true,
+      "dependencies": {
+        "define-data-property": "^1.1.4",
+        "es-errors": "^1.3.0",
+        "functions-have-names": "^1.2.3",
+        "has-property-descriptors": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/shebang-command": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+      "dev": true,
+      "dependencies": {
+        "shebang-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/shebang-regex": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/side-channel": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+      "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "es-errors": "^1.3.0",
+        "get-intrinsic": "^1.2.4",
+        "object-inspect": "^1.13.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/signal-exit": {
+      "version": "3.0.7",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+      "dev": true
+    },
+    "node_modules/sisteransi": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+      "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+      "dev": true
+    },
+    "node_modules/slash": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/slice-ansi": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+      "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "astral-regex": "^2.0.0",
+        "is-fullwidth-code-point": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+      }
+    },
+    "node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-js": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
+      "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-support": {
+      "version": "0.5.13",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
+      "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
+      "dev": true,
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      }
+    },
+    "node_modules/sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+      "dev": true
+    },
+    "node_modules/stack-utils": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
+      "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
+      "dev": true,
+      "dependencies": {
+        "escape-string-regexp": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/standard": {
+      "version": "17.1.0",
+      "resolved": "https://registry.npmjs.org/standard/-/standard-17.1.0.tgz",
+      "integrity": "sha512-jaDqlNSzLtWYW4lvQmU0EnxWMUGQiwHasZl5ZEIwx3S/ijZDjZOzs1y1QqKwKs5vqnFpGtizo4NOYX2s0Voq/g==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "dependencies": {
+        "eslint": "^8.41.0",
+        "eslint-config-standard": "17.1.0",
+        "eslint-config-standard-jsx": "^11.0.0",
+        "eslint-plugin-import": "^2.27.5",
+        "eslint-plugin-n": "^15.7.0",
+        "eslint-plugin-promise": "^6.1.1",
+        "eslint-plugin-react": "^7.32.2",
+        "standard-engine": "^15.0.0",
+        "version-guard": "^1.1.1"
+      },
+      "bin": {
+        "standard": "bin/cmd.cjs"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      }
+    },
+    "node_modules/standard-engine": {
+      "version": "15.1.0",
+      "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-15.1.0.tgz",
+      "integrity": "sha512-VHysfoyxFu/ukT+9v49d4BRXIokFRZuH3z1VRxzFArZdjSCFpro6rEIU3ji7e4AoAtuSfKBkiOmsrDqKW5ZSRw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "dependencies": {
+        "get-stdin": "^8.0.0",
+        "minimist": "^1.2.6",
+        "pkg-conf": "^3.1.0",
+        "xdg-basedir": "^4.0.0"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      }
+    },
+    "node_modules/string-length": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
+      "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+      "dev": true,
+      "dependencies": {
+        "char-regex": "^1.0.2",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dev": true,
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/string.prototype.matchall": {
+      "version": "4.0.11",
+      "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz",
+      "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.2",
+        "es-errors": "^1.3.0",
+        "es-object-atoms": "^1.0.0",
+        "get-intrinsic": "^1.2.4",
+        "gopd": "^1.0.1",
+        "has-symbols": "^1.0.3",
+        "internal-slot": "^1.0.7",
+        "regexp.prototype.flags": "^1.5.2",
+        "set-function-name": "^2.0.2",
+        "side-channel": "^1.0.6"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/string.prototype.trim": {
+      "version": "1.2.9",
+      "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
+      "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.0",
+        "es-object-atoms": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/string.prototype.trimend": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
+      "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-object-atoms": "^1.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/string.prototype.trimstart": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+      "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-object-atoms": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dev": true,
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-bom": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
+      "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-final-newline": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+      "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/stylelint": {
+      "version": "16.6.1",
+      "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.6.1.tgz",
+      "integrity": "sha512-yNgz2PqWLkhH2hw6X9AweV9YvoafbAD5ZsFdKN9BvSDVwGvPh+AUIrn7lYwy1S7IHmtFin75LLfX1m0D2tHu8Q==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/stylelint"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/stylelint"
+        }
+      ],
+      "dependencies": {
+        "@csstools/css-parser-algorithms": "^2.6.3",
+        "@csstools/css-tokenizer": "^2.3.1",
+        "@csstools/media-query-list-parser": "^2.1.11",
+        "@csstools/selector-specificity": "^3.1.1",
+        "@dual-bundle/import-meta-resolve": "^4.1.0",
+        "balanced-match": "^2.0.0",
+        "colord": "^2.9.3",
+        "cosmiconfig": "^9.0.0",
+        "css-functions-list": "^3.2.2",
+        "css-tree": "^2.3.1",
+        "debug": "^4.3.4",
+        "fast-glob": "^3.3.2",
+        "fastest-levenshtein": "^1.0.16",
+        "file-entry-cache": "^9.0.0",
+        "global-modules": "^2.0.0",
+        "globby": "^11.1.0",
+        "globjoin": "^0.1.4",
+        "html-tags": "^3.3.1",
+        "ignore": "^5.3.1",
+        "imurmurhash": "^0.1.4",
+        "is-plain-object": "^5.0.0",
+        "known-css-properties": "^0.31.0",
+        "mathml-tag-names": "^2.1.3",
+        "meow": "^13.2.0",
+        "micromatch": "^4.0.7",
+        "normalize-path": "^3.0.0",
+        "picocolors": "^1.0.1",
+        "postcss": "^8.4.38",
+        "postcss-resolve-nested-selector": "^0.1.1",
+        "postcss-safe-parser": "^7.0.0",
+        "postcss-selector-parser": "^6.1.0",
+        "postcss-value-parser": "^4.2.0",
+        "resolve-from": "^5.0.0",
+        "string-width": "^4.2.3",
+        "strip-ansi": "^7.1.0",
+        "supports-hyperlinks": "^3.0.0",
+        "svg-tags": "^1.0.0",
+        "table": "^6.8.2",
+        "write-file-atomic": "^5.0.1"
+      },
+      "bin": {
+        "stylelint": "bin/stylelint.mjs"
+      },
+      "engines": {
+        "node": ">=18.12.0"
+      }
+    },
+    "node_modules/stylelint-config-recommended": {
+      "version": "14.0.1",
+      "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz",
+      "integrity": "sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/stylelint"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/stylelint"
+        }
+      ],
+      "engines": {
+        "node": ">=18.12.0"
+      },
+      "peerDependencies": {
+        "stylelint": "^16.1.0"
+      }
+    },
+    "node_modules/stylelint-config-recommended-scss": {
+      "version": "14.0.0",
+      "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.0.0.tgz",
+      "integrity": "sha512-HDvpoOAQ1RpF+sPbDOT2Q2/YrBDEJDnUymmVmZ7mMCeNiFSdhRdyGEimBkz06wsN+HaFwUh249gDR+I9JR7Onw==",
+      "dev": true,
+      "dependencies": {
+        "postcss-scss": "^4.0.9",
+        "stylelint-config-recommended": "^14.0.0",
+        "stylelint-scss": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=18.12.0"
+      },
+      "peerDependencies": {
+        "postcss": "^8.3.3",
+        "stylelint": "^16.0.2"
+      },
+      "peerDependenciesMeta": {
+        "postcss": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/stylelint-config-standard": {
+      "version": "36.0.1",
+      "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.1.tgz",
+      "integrity": "sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/stylelint"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/stylelint"
+        }
+      ],
+      "dependencies": {
+        "stylelint-config-recommended": "^14.0.1"
+      },
+      "engines": {
+        "node": ">=18.12.0"
+      },
+      "peerDependencies": {
+        "stylelint": "^16.1.0"
+      }
+    },
+    "node_modules/stylelint-config-standard-scss": {
+      "version": "13.1.0",
+      "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-13.1.0.tgz",
+      "integrity": "sha512-Eo5w7/XvwGHWkeGLtdm2FZLOMYoZl1omP2/jgFCXyl2x5yNz7/8vv4Tj6slHvMSSUNTaGoam/GAZ0ZhukvalfA==",
+      "dev": true,
+      "dependencies": {
+        "stylelint-config-recommended-scss": "^14.0.0",
+        "stylelint-config-standard": "^36.0.0"
+      },
+      "engines": {
+        "node": ">=18.12.0"
+      },
+      "peerDependencies": {
+        "postcss": "^8.3.3",
+        "stylelint": "^16.3.1"
+      },
+      "peerDependenciesMeta": {
+        "postcss": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/stylelint-scss": {
+      "version": "6.3.2",
+      "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.3.2.tgz",
+      "integrity": "sha512-pNk9mXOVKkQtd+SROPC9io8ISSgX+tOVPhFdBE+LaKQnJMLdWPbGKAGYv4Wmf/RrnOjkutunNTN9kKMhkdE5qA==",
+      "dev": true,
+      "dependencies": {
+        "known-css-properties": "^0.31.0",
+        "postcss-media-query-parser": "^0.2.3",
+        "postcss-resolve-nested-selector": "^0.1.1",
+        "postcss-selector-parser": "^6.1.0",
+        "postcss-value-parser": "^4.2.0"
+      },
+      "engines": {
+        "node": ">=18.12.0"
+      },
+      "peerDependencies": {
+        "stylelint": "^16.0.2"
+      }
+    },
+    "node_modules/stylelint/node_modules/ansi-regex": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+      }
+    },
+    "node_modules/stylelint/node_modules/balanced-match": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
+      "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
+      "dev": true
+    },
+    "node_modules/stylelint/node_modules/file-entry-cache": {
+      "version": "9.0.0",
+      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz",
+      "integrity": "sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==",
+      "dev": true,
+      "dependencies": {
+        "flat-cache": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/stylelint/node_modules/flat-cache": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz",
+      "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==",
+      "dev": true,
+      "dependencies": {
+        "flatted": "^3.3.1",
+        "keyv": "^4.5.4"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/stylelint/node_modules/signal-exit": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+      "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+      "dev": true,
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/stylelint/node_modules/strip-ansi": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+      "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+      "dev": true,
+      "dependencies": {
+        "ansi-regex": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+      }
+    },
+    "node_modules/stylelint/node_modules/write-file-atomic": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
+      "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
+      "dev": true,
+      "dependencies": {
+        "imurmurhash": "^0.1.4",
+        "signal-exit": "^4.0.1"
+      },
+      "engines": {
+        "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+      }
+    },
+    "node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/supports-hyperlinks": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz",
+      "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0",
+        "supports-color": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=14.18"
+      }
+    },
+    "node_modules/supports-preserve-symlinks-flag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/svg-tags": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+      "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+      "dev": true
+    },
+    "node_modules/symbol-tree": {
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+      "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+      "dev": true
+    },
+    "node_modules/table": {
+      "version": "6.8.2",
+      "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz",
+      "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==",
+      "dev": true,
+      "dependencies": {
+        "ajv": "^8.0.1",
+        "lodash.truncate": "^4.4.2",
+        "slice-ansi": "^4.0.0",
+        "string-width": "^4.2.3",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=10.0.0"
+      }
+    },
+    "node_modules/table/node_modules/ajv": {
+      "version": "8.16.0",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz",
+      "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==",
+      "dev": true,
+      "dependencies": {
+        "fast-deep-equal": "^3.1.3",
+        "json-schema-traverse": "^1.0.0",
+        "require-from-string": "^2.0.2",
+        "uri-js": "^4.4.1"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
+    },
+    "node_modules/table/node_modules/json-schema-traverse": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+      "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+      "dev": true
+    },
+    "node_modules/test-exclude": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
+      "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+      "dev": true,
+      "dependencies": {
+        "@istanbuljs/schema": "^0.1.2",
+        "glob": "^7.1.4",
+        "minimatch": "^3.0.4"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/text-table": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+      "dev": true
+    },
+    "node_modules/tmpl": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
+      "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
+      "dev": true
+    },
+    "node_modules/to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/tough-cookie": {
+      "version": "4.1.4",
+      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz",
+      "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
+      "dev": true,
+      "dependencies": {
+        "psl": "^1.1.33",
+        "punycode": "^2.1.1",
+        "universalify": "^0.2.0",
+        "url-parse": "^1.5.3"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/tr46": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
+      "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
+      "dev": true,
+      "dependencies": {
+        "punycode": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/tsconfig-paths": {
+      "version": "3.15.0",
+      "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
+      "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==",
+      "dev": true,
+      "dependencies": {
+        "@types/json5": "^0.0.29",
+        "json5": "^1.0.2",
+        "minimist": "^1.2.6",
+        "strip-bom": "^3.0.0"
+      }
+    },
+    "node_modules/tsconfig-paths/node_modules/json5": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+      "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+      "dev": true,
+      "dependencies": {
+        "minimist": "^1.2.0"
+      },
+      "bin": {
+        "json5": "lib/cli.js"
+      }
+    },
+    "node_modules/tsconfig-paths/node_modules/strip-bom": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+      "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/type-check": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+      "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+      "dev": true,
+      "dependencies": {
+        "prelude-ls": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/type-detect": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+      "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/type-fest": {
+      "version": "0.21.3",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+      "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/typed-array-buffer": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
+      "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "es-errors": "^1.3.0",
+        "is-typed-array": "^1.1.13"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/typed-array-byte-length": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
+      "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "for-each": "^0.3.3",
+        "gopd": "^1.0.1",
+        "has-proto": "^1.0.3",
+        "is-typed-array": "^1.1.13"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/typed-array-byte-offset": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
+      "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
+      "dev": true,
+      "dependencies": {
+        "available-typed-arrays": "^1.0.7",
+        "call-bind": "^1.0.7",
+        "for-each": "^0.3.3",
+        "gopd": "^1.0.1",
+        "has-proto": "^1.0.3",
+        "is-typed-array": "^1.1.13"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/typed-array-length": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz",
+      "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "for-each": "^0.3.3",
+        "gopd": "^1.0.1",
+        "has-proto": "^1.0.3",
+        "is-typed-array": "^1.1.13",
+        "possible-typed-array-names": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/unbox-primitive": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+      "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-bigints": "^1.0.2",
+        "has-symbols": "^1.0.3",
+        "which-boxed-primitive": "^1.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/undici-types": {
+      "version": "5.26.5",
+      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+      "dev": true
+    },
+    "node_modules/universalify": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
+      "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 4.0.0"
+      }
+    },
+    "node_modules/update-browserslist-db": {
+      "version": "1.0.16",
+      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz",
+      "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "dependencies": {
+        "escalade": "^3.1.2",
+        "picocolors": "^1.0.1"
+      },
+      "bin": {
+        "update-browserslist-db": "cli.js"
+      },
+      "peerDependencies": {
+        "browserslist": ">= 4.21.0"
+      }
+    },
+    "node_modules/uri-js": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+      "dev": true,
+      "dependencies": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "node_modules/url-parse": {
+      "version": "1.5.10",
+      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+      "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+      "dev": true,
+      "dependencies": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "node_modules/util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+      "dev": true
+    },
+    "node_modules/v8-to-istanbul": {
+      "version": "9.3.0",
+      "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz",
+      "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/trace-mapping": "^0.3.12",
+        "@types/istanbul-lib-coverage": "^2.0.1",
+        "convert-source-map": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10.12.0"
+      }
+    },
+    "node_modules/version-guard": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/version-guard/-/version-guard-1.1.2.tgz",
+      "integrity": "sha512-D8d+YxCUpoqtCnQzDxm6SF7DLU3gr2535T4khAtMq4osBahsQnmSxuwXFdrbAdDGG8Uokzfis/jvyeFPdmlc7w==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.48"
+      }
+    },
+    "node_modules/w3c-xmlserializer": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
+      "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==",
+      "dev": true,
+      "dependencies": {
+        "xml-name-validator": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=14"
+      }
+    },
+    "node_modules/walker": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
+      "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
+      "dev": true,
+      "dependencies": {
+        "makeerror": "1.0.12"
+      }
+    },
+    "node_modules/webidl-conversions": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+      "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/whatwg-encoding": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
+      "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
+      "dev": true,
+      "dependencies": {
+        "iconv-lite": "0.6.3"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/whatwg-mimetype": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
+      "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/whatwg-url": {
+      "version": "11.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
+      "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
+      "dev": true,
+      "dependencies": {
+        "tr46": "^3.0.0",
+        "webidl-conversions": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/which": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+      "dev": true,
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "node-which": "bin/node-which"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/which-boxed-primitive": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+      "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+      "dev": true,
+      "dependencies": {
+        "is-bigint": "^1.0.1",
+        "is-boolean-object": "^1.1.0",
+        "is-number-object": "^1.0.4",
+        "is-string": "^1.0.5",
+        "is-symbol": "^1.0.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/which-builtin-type": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz",
+      "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==",
+      "dev": true,
+      "dependencies": {
+        "function.prototype.name": "^1.1.5",
+        "has-tostringtag": "^1.0.0",
+        "is-async-function": "^2.0.0",
+        "is-date-object": "^1.0.5",
+        "is-finalizationregistry": "^1.0.2",
+        "is-generator-function": "^1.0.10",
+        "is-regex": "^1.1.4",
+        "is-weakref": "^1.0.2",
+        "isarray": "^2.0.5",
+        "which-boxed-primitive": "^1.0.2",
+        "which-collection": "^1.0.1",
+        "which-typed-array": "^1.1.9"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/which-collection": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
+      "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
+      "dev": true,
+      "dependencies": {
+        "is-map": "^2.0.3",
+        "is-set": "^2.0.3",
+        "is-weakmap": "^2.0.2",
+        "is-weakset": "^2.0.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/which-typed-array": {
+      "version": "1.1.15",
+      "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
+      "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
+      "dev": true,
+      "dependencies": {
+        "available-typed-arrays": "^1.0.7",
+        "call-bind": "^1.0.7",
+        "for-each": "^0.3.3",
+        "gopd": "^1.0.1",
+        "has-tostringtag": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/word-wrap": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+      "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/wrap-ansi": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+      "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+      }
+    },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+      "dev": true
+    },
+    "node_modules/write-file-atomic": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
+      "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
+      "dev": true,
+      "dependencies": {
+        "imurmurhash": "^0.1.4",
+        "signal-exit": "^3.0.7"
+      },
+      "engines": {
+        "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+      }
+    },
+    "node_modules/ws": {
+      "version": "8.17.1",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+      "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": ">=5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/xdg-basedir": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
+      "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/xml-name-validator": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+      "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/xmlchars": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
+      "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
+      "dev": true
+    },
+    "node_modules/y18n": {
+      "version": "5.0.8",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+      "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yallist": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+      "dev": true
+    },
+    "node_modules/yargs": {
+      "version": "17.7.2",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+      "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+      "dev": true,
+      "dependencies": {
+        "cliui": "^8.0.1",
+        "escalade": "^3.1.1",
+        "get-caller-file": "^2.0.5",
+        "require-directory": "^2.1.1",
+        "string-width": "^4.2.3",
+        "y18n": "^5.0.5",
+        "yargs-parser": "^21.1.1"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/yargs-parser": {
+      "version": "21.1.1",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+      "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/yocto-queue": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    }
+  }
+}
diff --git a/pkgs/development/python-modules/django-i18nfield/default.nix b/pkgs/development/python-modules/django-i18nfield/default.nix
index 62d0770a693ad..0e9d109712935 100644
--- a/pkgs/development/python-modules/django-i18nfield/default.nix
+++ b/pkgs/development/python-modules/django-i18nfield/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# tests
-, djangorestframework
-, html5lib
-, lxml
-, pytest-django
-, pytestCheckHook
-, pyyaml
+  # tests
+  djangorestframework,
+  html5lib,
+  lxml,
+  pytest-django,
+  pytestCheckHook,
+  pyyaml,
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/django-import-export/default.nix b/pkgs/development/python-modules/django-import-export/default.nix
index 50e60202dc975..52f1ff4d5b4c3 100644
--- a/pkgs/development/python-modules/django-import-export/default.nix
+++ b/pkgs/development/python-modules/django-import-export/default.nix
@@ -1,41 +1,58 @@
-{ lib
-, buildPythonPackage
-, chardet
-, diff-match-patch
-, django
-, fetchFromGitHub
-, psycopg2
-, python
-, pythonOlder
-, pytz
-, tablib
+{
+  lib,
+  buildPythonPackage,
+  chardet,
+  diff-match-patch,
+  django,
+  fetchFromGitHub,
+  psycopg2,
+  python,
+  pythonOlder,
+  pytz,
+  setuptools-scm,
+  tablib,
 }:
 
 buildPythonPackage rec {
   pname = "django-import-export";
-  version = "3.3.8";
-  format = "setuptools";
+  version = "4.1.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "django-import-export";
-    repo = pname;
+    repo = "django-import-export";
     rev = "refs/tags/${version}";
-    hash = "sha256-9BsaYLAkd6UvQxMtwk+pI7HyOWNU4rUmingkyemRCz4=";
+    hash = "sha256-kD/9cpFqjipP3onMHCfimu0ffzGQAoEspjc4IfyuZak=";
   };
 
-  propagatedBuildInputs = [
+  pythonRelaxDeps = [ "tablib" ];
+
+  build-system = [ setuptools-scm ];
+
+
+  dependencies = [
     diff-match-patch
     django
     tablib
-  ] ++ (with tablib.optional-dependencies; html ++ ods ++ xls ++ xlsx ++ yaml);
+  ];
+
+  passthru.optional-dependencies = {
+    all = [ tablib ] ++ tablib.optional-dependencies.all;
+    cli = [ tablib ] ++ tablib.optional-dependencies.cli;
+    ods = [ tablib ] ++ tablib.optional-dependencies.ods;
+    pandas = [ tablib ] ++ tablib.optional-dependencies.pandas;
+    xls = [ tablib ] ++ tablib.optional-dependencies.xls;
+    xlsx = [ tablib ] ++ tablib.optional-dependencies.xlsx;
+    yaml = [ tablib ] ++ tablib.optional-dependencies.yaml;
+  };
 
   nativeCheckInputs = [
     chardet
     psycopg2
     pytz
-  ];
+  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
   checkPhase = ''
     runHook preCheck
@@ -43,9 +60,7 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "import_export"
-  ];
+  pythonImportsCheck = [ "import_export" ];
 
   meta = with lib; {
     description = "Django application and library for importing and exporting data with admin integration";
diff --git a/pkgs/development/python-modules/django-ipware/default.nix b/pkgs/development/python-modules/django-ipware/default.nix
index 26b4cc7308b82..b778e0a93d7d0 100644
--- a/pkgs/development/python-modules/django-ipware/default.nix
+++ b/pkgs/development/python-modules/django-ipware/default.nix
@@ -1,23 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, django
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  django,
+  python-ipware,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "django-ipware";
-  version = "6.0.5";
+  version = "7.0.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-s54nQDKH1r6wUT5pQCQBfbpY0Sn9QQoQFKyKFYTnP84=";
+    hash = "sha256-2exD0r983yFv7Y1JSghN61dhpUhgpTsudDRqTzhM/0c=";
   };
 
-  propagatedBuildInputs = [ django ];
+  propagatedBuildInputs = [ django python-ipware ];
 
   # django.core.exceptions.ImproperlyConfigured: Requested setting IPWARE_TRUSTED_PROXY_LIST, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
   doCheck = false;
@@ -26,10 +28,10 @@ buildPythonPackage rec {
   # django.core.exceptions.ImproperlyConfigured: Requested setting IPWARE_META_PRECEDENCE_ORDER, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
 
   meta = with lib; {
-    description = "A Django application to retrieve user's IP address";
+    description = "Django application to retrieve user's IP address";
     homepage = "https://github.com/un33k/django-ipware";
     changelog = "https://github.com/un33k/django-ipware/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/django-jinja2/default.nix b/pkgs/development/python-modules/django-jinja2/default.nix
index 77d50b65ce6fc..69168c6e80579 100644
--- a/pkgs/development/python-modules/django-jinja2/default.nix
+++ b/pkgs/development/python-modules/django-jinja2/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, django
-, jinja2
-, python
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  django,
+  jinja2,
+  python,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/django-jquery-js/default.nix b/pkgs/development/python-modules/django-jquery-js/default.nix
index 2487dc61e0fc6..ed2441f312820 100644
--- a/pkgs/development/python-modules/django-jquery-js/default.nix
+++ b/pkgs/development/python-modules/django-jquery-js/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromBitbucket
-, django
+{
+  lib,
+  buildPythonPackage,
+  fetchFromBitbucket,
+  django,
 }:
 
 buildPythonPackage rec {
@@ -16,13 +17,9 @@ buildPythonPackage rec {
     hash = "sha256-TzMo31jFhcvlrmq2TJgQyds9n8eATaChnyhnQ7bwdzs=";
   };
 
-  buildInputs = [
-    django
-  ];
+  buildInputs = [ django ];
 
-  pythonImportsCheck = [
-    "jquery"
-  ];
+  pythonImportsCheck = [ "jquery" ];
 
   doCheck = false; # no tests
 
diff --git a/pkgs/development/python-modules/django-js-asset/default.nix b/pkgs/development/python-modules/django-js-asset/default.nix
index 54c4c4b90eb45..7b1390ffbcbfa 100644
--- a/pkgs/development/python-modules/django-js-asset/default.nix
+++ b/pkgs/development/python-modules/django-js-asset/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, django
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  django,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -18,17 +19,11 @@ buildPythonPackage rec {
     hash = "sha256-qAkE5ubzfTNO1LuMQXMW2Sot1cn/bhuXlWa/J/wD5SI=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
-  pythonImportsCheck = [
-    "js_asset"
-  ];
+  pythonImportsCheck = [ "js_asset" ];
 
   checkPhase = ''
     runHook preCheck
diff --git a/pkgs/development/python-modules/django-js-reverse/default.nix b/pkgs/development/python-modules/django-js-reverse/default.nix
index a30330fcd9e49..3e344f881395d 100644
--- a/pkgs/development/python-modules/django-js-reverse/default.nix
+++ b/pkgs/development/python-modules/django-js-reverse/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, buildPythonPackage
-, pythonAtLeast
-, fetchpatch
-, fetchFromGitHub
-, python
-, django
-, packaging
-, nodejs
-, js2py
-, six
+{
+  lib,
+  buildPythonPackage,
+  pythonAtLeast,
+  fetchFromGitHub,
+  python,
+  django,
+  packaging,
+  nodejs,
+  js2py,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -23,11 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-i78UsxVwxyDAc8LrOVEXLG0tdidoQhvUx7GvPDaH0KY=";
   };
 
-  propagatedBuildInputs = [
-    django
-  ] ++ lib.optionals (pythonAtLeast "3.7") [
-    packaging
-  ];
+  propagatedBuildInputs = [ django ] ++ lib.optionals (pythonAtLeast "3.7") [ packaging ];
 
   nativeCheckInputs = [
     nodejs
diff --git a/pkgs/development/python-modules/django-leaflet/default.nix b/pkgs/development/python-modules/django-leaflet/default.nix
index aeb37f5aa99a5..628cae9403d29 100644
--- a/pkgs/development/python-modules/django-leaflet/default.nix
+++ b/pkgs/development/python-modules/django-leaflet/default.nix
@@ -1,25 +1,28 @@
-{ pkgs
-, buildPythonPackage
-, django
-, fetchPypi
-, pythonOlder
+{
+  pkgs,
+  buildPythonPackage,
+  django,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "django-leaflet";
-  version = "0.29.1";
-  format = "setuptools";
+  version = "0.30.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-ECtocPJHYR1DsFLeVMVdtlia4UNOJyNMsU1CrX1aVsQ=";
+    pname = "django_leaflet";
+    inherit version;
+    hash = "sha256-jsG2RcUe0Zob9GAZVKSIr8iPPubqqsh679uhUioNR0Y=";
   };
 
-  propagatedBuildInputs = [
-    django
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ django ];
 
   # The tests seem to be impure.
   # They are throwing a error about unset configs:
@@ -34,6 +37,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/makinacorpus/django-leaflet";
     changelog = "https://github.com/makinacorpus/django-leaflet/blob/${version}/CHANGES";
     license = licenses.lgpl3Only;
-    maintainers = with maintainers; [ janik ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/django-libsass/default.nix b/pkgs/development/python-modules/django-libsass/default.nix
index 181abfafd148f..ee6631cd3a000 100644
--- a/pkgs/development/python-modules/django-libsass/default.nix
+++ b/pkgs/development/python-modules/django-libsass/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# dependencies
-, django-compressor
-, libsass
-
-# tests
-, django
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # dependencies
+  django-compressor,
+  libsass,
+
+  # tests
+  django,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     libsass
   ];
 
-  nativeCheckInputs = [
-    django
-  ];
+  nativeCheckInputs = [ django ];
 
   checkPhase = ''
     runHook preCheck
@@ -39,7 +38,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A django-compressor filter to compile SASS files using libsass";
+    description = "Django-compressor filter to compile SASS files using libsass";
     homepage = "https://github.com/torchbox/django-libsass";
     changelog = "https://github.com/torchbox/django-libsass/blob/${src.rev}/CHANGELOG.txt";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/django-localflavor/default.nix b/pkgs/development/python-modules/django-localflavor/default.nix
index 5f63532ad96e7..0a2575d87a361 100644
--- a/pkgs/development/python-modules/django-localflavor/default.nix
+++ b/pkgs/development/python-modules/django-localflavor/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# bring your own
-, django
+  # bring your own
+  django,
 
-# propagates
-, python-stdnum
+  # propagates
+  python-stdnum,
 
-# tests
-, pytest-django
-, pytestCheckHook
+  # tests
+  pytest-django,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,13 +26,9 @@ buildPythonPackage rec {
     hash = "sha256-UWp3ei1VlEsEfjbJIE+MpffSzYF4X1HEQw+z+5kZoP0=";
   };
 
-  buildInputs = [
-    django
-  ];
+  buildInputs = [ django ];
 
-  propagatedBuildInputs = [
-    python-stdnum
-  ];
+  propagatedBuildInputs = [ python-stdnum ];
 
   pythonImportsCheck = [
     # samples
diff --git a/pkgs/development/python-modules/django-logentry-admin/default.nix b/pkgs/development/python-modules/django-logentry-admin/default.nix
index af208427a63a4..8a8f7a8effe99 100644
--- a/pkgs/development/python-modules/django-logentry-admin/default.nix
+++ b/pkgs/development/python-modules/django-logentry-admin/default.nix
@@ -1,4 +1,11 @@
-{ lib, fetchFromGitHub, buildPythonPackage, django, pytest, pytest-django }:
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  django,
+  pytest,
+  pytest-django,
+}:
 
 buildPythonPackage rec {
   pname = "django-logentry-admin";
@@ -12,7 +19,10 @@ buildPythonPackage rec {
     sha256 = "1bndxgvisw8kk52zfdifvly6dl4833wqilxf77pg473172yaf5gq";
   };
 
-  nativeCheckInputs = [ pytest pytest-django ];
+  nativeCheckInputs = [
+    pytest
+    pytest-django
+  ];
   checkPhase = ''
     rm -r logentry_admin __init__.py
     pytest
@@ -27,4 +37,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ mrmebelman ];
   };
 }
-
diff --git a/pkgs/development/python-modules/django-login-required-middleware/default.nix b/pkgs/development/python-modules/django-login-required-middleware/default.nix
index b288e79290599..7dbbbcd9a411a 100644
--- a/pkgs/development/python-modules/django-login-required-middleware/default.nix
+++ b/pkgs/development/python-modules/django-login-required-middleware/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, django
-, djangorestframework
-, fetchFromGitHub
-, python
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  django,
+  djangorestframework,
+  fetchFromGitHub,
+  python,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -19,21 +20,13 @@ buildPythonPackage rec {
     hash = "sha256-WFQ/JvKh6gkUxPV27QBd2TzwFS8hfQGmcTInTnmh6iA=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
-  checkInputs = [
-    djangorestframework
-  ];
+  checkInputs = [ djangorestframework ];
 
-  pythonImportsCheck = [
-    "login_required"
-  ];
+  pythonImportsCheck = [ "login_required" ];
 
   checkPhase = ''
     ${python.interpreter} -m django test --settings tests.settings
diff --git a/pkgs/development/python-modules/django-mailman3/default.nix b/pkgs/development/python-modules/django-mailman3/default.nix
index 026788caf646e..d139e4666842b 100644
--- a/pkgs/development/python-modules/django-mailman3/default.nix
+++ b/pkgs/development/python-modules/django-mailman3/default.nix
@@ -1,36 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-
-# propagates
-, django-gravatar2
-, django-allauth
-, mailmanclient
-, pytz
-
-# tests
-, django
-, pytest-django
-, pytestCheckHook
-, nixosTests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+
+  # build-system
+  pdm-backend,
+
+  # dependencies
+  django-gravatar2,
+  django-allauth,
+  mailmanclient,
+  pytz,
+
+  # tests
+  django,
+  pytest-django,
+  pytestCheckHook,
+  nixosTests,
 }:
 
 buildPythonPackage rec {
   pname = "django-mailman3";
-  version = "1.3.11";
-  format = "setuptools";
+  version = "1.3.12";
+  pyproject = true;
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-uIjJaZHWL2evj+oISLprvKWT5Sm5f2EKgUD1twL1VbQ=";
+    pname = "django_mailman3";
+    inherit version;
+    hash = "sha256-MnQlT5ElNnStLUKyOXnI7ZDDaBwfp+h9tbOC+cwB0es=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace 'django>=3.2,<4.2' 'django>=3.2,<4.3'
-  '';
+  build-system = [ pdm-backend ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     django-allauth
     django-gravatar2
     mailmanclient
@@ -43,11 +45,15 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "django_mailman3"
-  ];
+  preCheck = ''
+    export DJANGO_SETTINGS_MODULE=django_mailman3.tests.settings_test
+  '';
 
-  passthru.tests = { inherit (nixosTests) mailman; };
+  pythonImportsCheck = [ "django_mailman3" ];
+
+  passthru.tests = {
+    inherit (nixosTests) mailman;
+  };
 
   meta = with lib; {
     description = "Django library for Mailman UIs";
diff --git a/pkgs/development/python-modules/django-maintenance-mode/default.nix b/pkgs/development/python-modules/django-maintenance-mode/default.nix
index 6b0dbb8d3b9d8..8e278b607ae21 100644
--- a/pkgs/development/python-modules/django-maintenance-mode/default.nix
+++ b/pkgs/development/python-modules/django-maintenance-mode/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, django
-, fetchFromGitHub
-, python
-, python-fsutil
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchFromGitHub,
+  python,
+  python-fsutil,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-rZo0yru+y5TkdULBQDMGAVb494PSLtbnNX/7cuphKNk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     django
@@ -39,9 +38,7 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "maintenance_mode"
-  ];
+  pythonImportsCheck = [ "maintenance_mode" ];
 
   meta = with lib; {
     description = "Shows a 503 error page when maintenance-mode is on";
diff --git a/pkgs/development/python-modules/django-markdownx/default.nix b/pkgs/development/python-modules/django-markdownx/default.nix
index e6275ee50441f..a40aa21c5915c 100644
--- a/pkgs/development/python-modules/django-markdownx/default.nix
+++ b/pkgs/development/python-modules/django-markdownx/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, django
-, fetchFromGitHub
-, markdown
-, pillow
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchFromGitHub,
+  markdown,
+  pillow,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-FZPUlogVd3FMGeH1vfKHA3tXVps0ET+UCQJflpiV2lE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     django
@@ -35,9 +34,7 @@ buildPythonPackage rec {
   # tests only executeable in vagrant
   doCheck = false;
 
-  pythonImportsCheck = [
-    "markdownx"
-  ];
+  pythonImportsCheck = [ "markdownx" ];
 
   meta = with lib; {
     description = "Comprehensive Markdown plugin built for Django";
diff --git a/pkgs/development/python-modules/django-markup/default.nix b/pkgs/development/python-modules/django-markup/default.nix
index ed33d09372365..dce53f40ad93d 100644
--- a/pkgs/development/python-modules/django-markup/default.nix
+++ b/pkgs/development/python-modules/django-markup/default.nix
@@ -1,26 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, django
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# optionals
-, bleach
-, docutils
-, markdown
-, pygments
-, python-creole
-, smartypants
-, textile
+  # build-system
+  poetry-core,
 
-# tests
-, pytest-django
-, pytestCheckHook
+  # dependencies
+  django,
+
+  # optionals
+  bleach,
+  docutils,
+  markdown,
+  pygments,
+  python-creole,
+  smartypants,
+  textile,
+
+  # tests
+  pytest-django,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "django-markup";
-  version = "1.8.1";
+  version = "1.9";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -29,16 +35,16 @@ buildPythonPackage rec {
     owner = "bartTC";
     repo = "django-markup";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Hhcp4wVJEcYV1lEZ2jWf7nOlt5m4lVAfC6VmKIdxf4c=";
+    hash = "sha256-HSszXZ86hLxRgBZHIs1TA7F7MHLlS58oAhG50yrTquE=";
   };
 
   postPatch = ''
     sed -i "/--cov/d" pyproject.toml
   '';
 
-  buildInputs = [
-    django
-  ];
+  build-system = [ poetry-core ];
+
+  dependencies = [ django ];
 
   passthru.optional-dependencies = {
     all_filter_dependencies = [
@@ -52,19 +58,19 @@ buildPythonPackage rec {
     ];
   };
 
-  pythonImportsCheck = [
-    "django_markup"
-  ];
+  pythonImportsCheck = [ "django_markup" ];
 
   nativeCheckInputs = [
     pytest-django
     pytestCheckHook
   ] ++ passthru.optional-dependencies.all_filter_dependencies;
 
-  env.DJANGO_SETTINGS_MODULE = "django_markup.tests";
+  preCheck = ''
+    export DJANGO_SETTINGS_MODULE=django_markup.tests
+  '';
 
   meta = with lib; {
-    description = "Generic Django application to convert text with specific markup to html.";
+    description = "Generic Django application to convert text with specific markup to html";
     homepage = "https://github.com/bartTC/django-markup";
     changelog = "https://github.com/bartTC/django-markup/blob/v${version}/CHANGELOG.rst";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/django-mdeditor/default.nix b/pkgs/development/python-modules/django-mdeditor/default.nix
index dc58e3cd665d0..96b5c93bae2d5 100644
--- a/pkgs/development/python-modules/django-mdeditor/default.nix
+++ b/pkgs/development/python-modules/django-mdeditor/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
 }:
 let
   version = "0.1.20";
diff --git a/pkgs/development/python-modules/django-model-utils/default.nix b/pkgs/development/python-modules/django-model-utils/default.nix
index 0e39d901aae8d..8ddb17d2b3506 100644
--- a/pkgs/development/python-modules/django-model-utils/default.nix
+++ b/pkgs/development/python-modules/django-model-utils/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "django-model-utils";
-  version = "4.5.0";
+  version = "5.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,29 +18,23 @@ buildPythonPackage rec {
     owner = "jazzband";
     repo = "django-model-utils";
     rev = "refs/tags/${version}";
-    hash = "sha256-ZEnDk4kCXyhLvq3CZTK/zP3IK6BsNRqbkfqKAuU6Mfk=";
+    hash = "sha256-iRtTYXsgD8NYG3k9ZWAr2Nwazo3HUa6RgdbMeDxc7NI=";
   };
 
-  build-system = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  dependencies = [
-    django
-  ];
+  dependencies = [ django ];
 
   # Test requires postgres database
   doCheck = false;
 
-  pythonImportsCheck = [
-    "model_utils"
-  ];
+  pythonImportsCheck = [ "model_utils" ];
 
   meta = with lib; {
     homepage = "https://github.com/jazzband/django-model-utils";
     description = "Django model mixins and utilities";
     changelog = "https://github.com/jazzband/django-model-utils/blob/${version}/CHANGES.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/django-modelcluster/default.nix b/pkgs/development/python-modules/django-modelcluster/default.nix
index 6d8776a9528ff..a7efa70261fbc 100644
--- a/pkgs/development/python-modules/django-modelcluster/default.nix
+++ b/pkgs/development/python-modules/django-modelcluster/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# dependencies
-, django
-, pytz
-
-# optionals
-, django-taggit
-
-# tests
-, pytest-django
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # dependencies
+  django,
+  pytz,
+
+  # optionals
+  django-taggit,
+
+  # tests
+  pytest-django,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     pytz
   ];
 
-  passthru.optional-dependencies.taggit = [
-    django-taggit
-  ];
+  passthru.optional-dependencies.taggit = [ django-taggit ];
 
   env.DJANGO_SETTINGS_MODULE = "tests.settings";
 
@@ -56,5 +55,4 @@ buildPythonPackage rec {
     license = licenses.bsd2;
     maintainers = with maintainers; [ desiderius ];
   };
-
 }
diff --git a/pkgs/development/python-modules/django-modeltranslation/default.nix b/pkgs/development/python-modules/django-modeltranslation/default.nix
index f57dc25640e08..3b7cd55b494cd 100644
--- a/pkgs/development/python-modules/django-modeltranslation/default.nix
+++ b/pkgs/development/python-modules/django-modeltranslation/default.nix
@@ -1,16 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, django
-, pytestCheckHook
-, pytest-django
-, parameterized
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  django,
+  django-stubs,
+  pytestCheckHook,
+  pytest-cov-stub,
+  pytest-django,
+  parameterized,
 }:
 let
   # 0.18.12 was yanked from PyPI, it refers to this issue:
   # https://github.com/deschler/django-modeltranslation/issues/701
-  version = "0.18.12";
+  version = "0.19.9";
 in
 buildPythonPackage {
   pname = "django-modeltranslation";
@@ -20,22 +23,20 @@ buildPythonPackage {
     owner = "deschler";
     repo = "django-modeltranslation";
     rev = "refs/tags/v${version}";
-    hash = "sha256-6rAAu3Fd4D93rX8kvkcqhykzBu/lDByQ6zpjWq7J8mg=";
+    hash = "sha256-2GTz+niXfEsi++KyL6+HtwdzO1YFhpKQsDK3F8GAl4A=";
   };
 
-  # Remove all references to pytest-cov
-  postPatch = ''
-    substituteInPlace pytest.ini \
-      --replace "--no-cov-on-fail" "" \
-      --replace "--cov-report=\"\"" "" \
-      --replace "--cov modeltranslation" ""
-  '';
-
   disabled = pythonOlder "3.6";
 
   propagatedBuildInputs = [ django ];
 
-  nativeCheckInputs = [ pytestCheckHook pytest-django parameterized ];
+  nativeCheckInputs = [
+    django-stubs
+    pytestCheckHook
+    pytest-cov-stub
+    pytest-django
+    parameterized
+  ];
 
   meta = with lib; {
     description = "Translates Django models using a registration approach";
diff --git a/pkgs/development/python-modules/django-mptt/default.nix b/pkgs/development/python-modules/django-mptt/default.nix
index 53dac2a781f40..419bb9c8eebc9 100644
--- a/pkgs/development/python-modules/django-mptt/default.nix
+++ b/pkgs/development/python-modules/django-mptt/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
-, django-js-asset
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  django-js-asset,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     django-js-asset
   ];
 
-  pythonImportsCheck = [
-    "mptt"
-  ];
+  pythonImportsCheck = [ "mptt" ];
 
   checkPhase = ''
     runHook preCheck
diff --git a/pkgs/development/python-modules/django-multiselectfield/default.nix b/pkgs/development/python-modules/django-multiselectfield/default.nix
index 6864d0c8f9f19..9e7da31291a7b 100644
--- a/pkgs/development/python-modules/django-multiselectfield/default.nix
+++ b/pkgs/development/python-modules/django-multiselectfield/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, django
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  django,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/django-mysql/default.nix b/pkgs/development/python-modules/django-mysql/default.nix
deleted file mode 100644
index 9db6be33ed0dc..0000000000000
--- a/pkgs/development/python-modules/django-mysql/default.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# build-system
-, setuptools
-
-# dependencies
-, django
-, mysqlclient
-
-# tests
-, pytest-django
-, pytestCheckHook
-}:
-
-buildPythonPackage rec {
-  pname = "django-mysql";
-  version = "4.12.0";
-  pyproject = true;
-
-  src = fetchFromGitHub {
-    owner = "adamchainz";
-    repo = "django-mysql";
-    rev = "refs/tags/${version}";
-    hash = "sha256-AieI6zUPFXQsrvoms5bu/Bb3J+DvfLA4rCCsjhYBEZQ=";
-  };
-
-  nativeBuildInputs = [
-    setuptools
-  ];
-
-  buildInputs = [
-    django
-    mysqlclient
-  ];
-
-  doCheck = false; # requires mysql/mariadb server
-
-  env.DJANGO_SETTINGS_MODULE = "tests.settings";
-
-  nativeCheckInputs = [
-    pytest-django
-    pytestCheckHook
-  ];
-
-  meta = with lib; {
-    changelog = "https://github.com/adamchainz/django-mysql/blob/${version}/docs/changelog.rst";
-    description = "Extensions to Django for use with MySQL/MariaD";
-    homepage = "https://github.com/adamchainz/django-mysql";
-    license = licenses.mit;
-    maintainers = with maintainers; [ hexa ];
-  };
-}
diff --git a/pkgs/development/python-modules/django-ninja/default.nix b/pkgs/development/python-modules/django-ninja/default.nix
index a39fc17429036..4a953cfed3fd9 100644
--- a/pkgs/development/python-modules/django-ninja/default.nix
+++ b/pkgs/development/python-modules/django-ninja/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, django
-, fetchFromGitHub
-, flit-core
-, psycopg2
-, pydantic
-, pytest-asyncio
-, pytest-django
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchFromGitHub,
+  flit-core,
+  psycopg2,
+  pydantic,
+  pytest-asyncio,
+  pytest-django,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "django-ninja";
-  version = "1.1.0";
+  version = "1.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -22,10 +23,13 @@ buildPythonPackage rec {
     owner = "vitalik";
     repo = "django-ninja";
     rev = "refs/tags/v${version}";
-    hash = "sha256-pvpYDuUZi0Gr5RbBWc91LzgmRLhihrhsKaD/AWN5+Bo=";
+    hash = "sha256-fPlw9iTt1V8VXd0d5hw1i9LT96BcDkAlpBu9SPPd+hI=";
   };
 
-  propagatedBuildInputs = [ django pydantic ];
+  propagatedBuildInputs = [
+    django
+    pydantic
+  ];
 
   nativeBuildInputs = [ flit-core ];
 
diff --git a/pkgs/development/python-modules/django-nose/default.nix b/pkgs/development/python-modules/django-nose/default.nix
deleted file mode 100644
index 86aa7b3a4e4a5..0000000000000
--- a/pkgs/development/python-modules/django-nose/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, django
-}:
-
-buildPythonPackage rec {
-  pname = "django-nose";
-  version = "1.4.7";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "a4885cd002d65fd2de96e2bb2563ef477c3fbe207009360c015fca5c3b5561b7";
-  };
-
-  # vast dependency list
-  doCheck = false;
-
-  propagatedBuildInputs = [ django nose ];
-
-  meta = with lib; {
-    description = "Provides all the goodness of nose in your Django tests";
-    homepage = "https://github.com/django-nose/django-nose";
-    license = licenses.bsd3;
-  };
-
-}
diff --git a/pkgs/development/python-modules/django-oauth-toolkit/default.nix b/pkgs/development/python-modules/django-oauth-toolkit/default.nix
index ce03a1330f5f5..ae4a56d8790bc 100644
--- a/pkgs/development/python-modules/django-oauth-toolkit/default.nix
+++ b/pkgs/development/python-modules/django-oauth-toolkit/default.nix
@@ -1,32 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# propagates
-, django
-, jwcrypto
-, requests
-, oauthlib
+  # propagates
+  django,
+  jwcrypto,
+  requests,
+  oauthlib,
 
-# tests
-, djangorestframework
-, pytest-django
-, pytest-xdist
-, pytest-mock
-, pytestCheckHook
+  # tests
+  djangorestframework,
+  pytest-django,
+  pytest-mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "django-oauth-toolkit";
-  version = "2.3.0";
+  version = "2.4.0";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "jazzband";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-oGg5MD9p4PSUVkt5pGLwjAF4SHHf4Aqr+/3FsuFaybY=";
+    hash = "sha256-nfLjjVp+6OsjFdJHUZ2gzZic/E/sCklj+YeFyb/EZdw=";
   };
 
   postPatch = ''
@@ -40,10 +39,7 @@ buildPythonPackage rec {
     requests
   ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
-  pythonRelaxDeps = [
-    "django"
-  ];
+  pythonRelaxDeps = [ "django" ];
 
   DJANGO_SETTINGS_MODULE = "tests.settings";
 
diff --git a/pkgs/development/python-modules/django-otp-webauthn/default.nix b/pkgs/development/python-modules/django-otp-webauthn/default.nix
new file mode 100644
index 0000000000000..304d6f543ae42
--- /dev/null
+++ b/pkgs/development/python-modules/django-otp-webauthn/default.nix
@@ -0,0 +1,44 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  django,
+  django-otp,
+  djangorestframework,
+  webauthn,
+}:
+
+buildPythonPackage rec {
+  pname = "django-otp-webauthn";
+  version = "0.3.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit version;
+    pname = "django_otp_webauthn";
+    hash = "sha256-+Y46/PDeXL9zayoZykaU63faQmnLHzYPmqJJeRBx+hs=";
+  };
+
+  build-system = [ hatchling ];
+
+  dependencies = [
+    django
+    django-otp
+    djangorestframework
+    webauthn
+  ];
+
+  # Tests are on the roadmap, but not yet implemented
+
+  pythonImportsCheck = [ "django_otp_webauthn" ];
+
+  meta = with lib; {
+    description = "Passkey support for Django";
+    homepage = "https://github.com/Stormbase/django-otp-webauthn";
+    changelog = "https://github.com/Stormbase/django-otp-webauthn/blob/v${version}/CHANGELOG.md";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ erictapen ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/django-otp/default.nix b/pkgs/development/python-modules/django-otp/default.nix
index c1078160b6ebc..791ee2716d32d 100644
--- a/pkgs/development/python-modules/django-otp/default.nix
+++ b/pkgs/development/python-modules/django-otp/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, django
-, freezegun
-, qrcode
-, pytest
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  django,
+  freezegun,
+  qrcode,
+  pytest,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "django-otp";
-  version = "1.3.0post1";
+  version = "1.5.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "django-otp";
     repo = "django-otp";
     rev = "v${version}";
-    hash = "sha256-Q8YTCYERyoAXenSiDabxuxaWiD6ZeJKKKgaR/Rg3y20=";
+    hash = "sha256-fn3MptdlnqY0rOLwcPhKiLfrhYvov4YVLZ58Jp/j6zc=";
   };
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   dependencies = [
     django
@@ -47,19 +46,15 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pytestFlagsArray = [
-    "src/django_otp/test.py"
-  ];
+  pytestFlagsArray = [ "src/django_otp/test.py" ];
 
-  pythonImportsCheck = [
-    "django_otp"
-  ];
+  pythonImportsCheck = [ "django_otp" ];
 
   meta = with lib; {
     homepage = "https://github.com/django-otp/django-otp";
     changelog = "https://github.com/django-otp/django-otp/blob/${src.rev}/CHANGES.rst";
     description = "Pluggable framework for adding two-factor authentication to Django using one-time passwords";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/django-paintstore/default.nix b/pkgs/development/python-modules/django-paintstore/default.nix
index edafdf1649116..6d4dd2d365355 100644
--- a/pkgs/development/python-modules/django-paintstore/default.nix
+++ b/pkgs/development/python-modules/django-paintstore/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "django-paintstore";
diff --git a/pkgs/development/python-modules/django-parler/default.nix b/pkgs/development/python-modules/django-parler/default.nix
index 3afaa8ae262c6..b963f709a4d3b 100644
--- a/pkgs/development/python-modules/django-parler/default.nix
+++ b/pkgs/development/python-modules/django-parler/default.nix
@@ -1,11 +1,10 @@
-{ lib
-, buildPythonPackage
-, django
-, fetchFromGitHub
-, pytest
-, pytest-django
-, pythonOlder
-, python
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchFromGitHub,
+  pythonOlder,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-tRGifFPCXF3aa3PQWKw3tl1H1TY+lgcChUP1VdwG1cE=";
   };
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
   checkPhase = ''
     runHook preCheck
diff --git a/pkgs/development/python-modules/django-pattern-library/default.nix b/pkgs/development/python-modules/django-pattern-library/default.nix
index 12a229ce9da8f..0aaa35f940dc0 100644
--- a/pkgs/development/python-modules/django-pattern-library/default.nix
+++ b/pkgs/development/python-modules/django-pattern-library/default.nix
@@ -1,20 +1,20 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, lib
-
-# build-system
-, poetry-core
-
-# dependencies
-, django
-, markdown
-, pyyaml
-
-# tests
-, beautifulsoup4
-, pytestCheckHook
-, pytest-django
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  django,
+  markdown,
+  pyyaml,
+
+  # tests
+  beautifulsoup4,
+  pytestCheckHook,
+  pytest-django,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +29,7 @@ buildPythonPackage rec {
     hash = "sha256-hrdJYVioY6y9D29DuKPMZjdWj92GcbHXANWiEHadimI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     django
diff --git a/pkgs/development/python-modules/django-payments/default.nix b/pkgs/development/python-modules/django-payments/default.nix
index d470bb57a2e50..33824cb5b2554 100644
--- a/pkgs/development/python-modules/django-payments/default.nix
+++ b/pkgs/development/python-modules/django-payments/default.nix
@@ -1,23 +1,25 @@
-{ lib
-, buildPythonPackage
-, braintree
-, cryptography
-, django
-, django-phonenumber-field
-, fetchFromGitHub
-, mercadopago
-, pythonOlder
-, requests
-, setuptools-scm
-, sphinx-rtd-theme
-, stripe
-, xmltodict
+{
+  lib,
+  buildPythonPackage,
+  braintree,
+  cryptography,
+  django,
+  django-phonenumber-field,
+  fetchFromGitHub,
+  mercadopago,
+  pythonOlder,
+  requests,
+  setuptools,
+  setuptools-scm,
+  stripe,
+  suds-community,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
   pname = "django-payments";
-  version = "2.0.0";
-  format = "setuptools";
+  version = "3.0.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -25,36 +27,28 @@ buildPythonPackage rec {
     owner = "jazzband";
     repo = "django-payments";
     rev = "refs/tags/v${version}";
-    hash = "sha256-6WPV08CV+rko/tRnsT5GyTGYaJbiIKTvpisfRwizBIo=";
+    hash = "sha256-/XsqtExnNtUGqI40XvvcO/nGq56gbC/mPdtHv1QQyGo=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "django-phonenumber-field[phonenumberslite]" "django-phonenumber-field"
-  '';
-
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     django
     django-phonenumber-field
     requests
-  ] ++ django-phonenumber-field.optional-dependencies.phonenumbers;
+  ] ++ django-phonenumber-field.optional-dependencies.phonenumberslite;
 
   # require internet connection
   doCheck = false;
 
-  pythonImportsCheck = [
-    "payments"
-  ];
+  pythonImportsCheck = [ "payments" ];
 
-  passthru.optional-dependencies = {
-    all = [ braintree /* suds-community */ mercadopago cryptography xmltodict stripe ];
+  optional-dependencies = {
     braintree = [ braintree ];
-    cybersource = [ /* suds-community */ ];
-    docs = [ sphinx-rtd-theme ];
+    cybersource = [ suds-community ];
     mercadopago = [ mercadopago ];
     sagepay = [ cryptography ];
     sofort = [ xmltodict ];
@@ -62,9 +56,9 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "Universal payment handling for Django.";
+    description = "Universal payment handling for Django";
     homepage = "https://github.com/jazzband/django-payments/";
-    changelog = "https://github.com/jazzband/django-payments/releases/tag/v${version}";
+    changelog = "https://github.com/jazzband/django-payments/blob/${src.rev}/CHANGELOG.rst";
     license = licenses.bsd3;
     maintainers = with maintainers; [ derdennisop ];
   };
diff --git a/pkgs/development/python-modules/django-pglocks/default.nix b/pkgs/development/python-modules/django-pglocks/default.nix
index dae4fd2ad0ecd..0142c0d5bcef4 100644
--- a/pkgs/development/python-modules/django-pglocks/default.nix
+++ b/pkgs/development/python-modules/django-pglocks/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, django, six }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  django,
+  six,
+}:
 
 buildPythonPackage rec {
   pname = "django-pglocks";
@@ -6,7 +12,7 @@ buildPythonPackage rec {
   format = "setuptools";
 
   meta = {
-    description = "PostgreSQL locking context managers and functions for Django.";
+    description = "PostgreSQL locking context managers and functions for Django";
     homepage = "https://github.com/Xof/django-pglocks";
     license = lib.licenses.mit;
   };
@@ -17,7 +23,10 @@ buildPythonPackage rec {
   };
 
   buildInputs = [ django ];
-  propagatedBuildInputs = [ django six ];
+  propagatedBuildInputs = [
+    django
+    six
+  ];
 
   # tests need a postgres database
   doCheck = false;
diff --git a/pkgs/development/python-modules/django-phonenumber-field/default.nix b/pkgs/development/python-modules/django-phonenumber-field/default.nix
index 6f952c9865a9e..39cd78b2f495b 100644
--- a/pkgs/development/python-modules/django-phonenumber-field/default.nix
+++ b/pkgs/development/python-modules/django-phonenumber-field/default.nix
@@ -1,54 +1,57 @@
-{ lib
-, babel
-, buildPythonPackage
-, django
-, djangorestframework
-, fetchPypi
-, phonenumbers
-, python
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  babel,
+  buildPythonPackage,
+  django,
+  djangorestframework,
+  fetchFromGitHub,
+  phonenumbers,
+  phonenumberslite,
+  python,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "django-phonenumber-field";
-  version = "7.3.0";
-  format = "pyproject";
+  version = "8.0.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-+c2z3ghfmcJJMoKTo7k9Tl+kQMDI47mesND1R0hil5c=";
+  src = fetchFromGitHub {
+    owner = "stefanfoulis";
+    repo = "django-phonenumber-field";
+    rev = "refs/tags/${version}";
+    hash = "sha256-l+BAh7QYGN0AgDHICvlQnBYAcpEn8acu+JBmoo85kF0=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    django
-  ] ++ passthru.optional-dependencies.phonenumbers;
+  # Upstream doesn't put phonenumbers in dependencies but the package doesn't
+  # make sense without either of the two optional dependencies. Since, in
+  # Nixpkgs, phonenumberslite depends on phonenumbers, add the latter
+  # unconditionally.
+  dependencies = [ django ] ++ optional-dependencies.phonenumbers;
 
   nativeCheckInputs = [
     babel
     djangorestframework
   ];
 
-  pythonImportsCheck = [
-    "phonenumber_field"
-  ];
+  pythonImportsCheck = [ "phonenumber_field" ];
 
   checkPhase = ''
     ${python.interpreter} -m django test --settings tests.settings
   '';
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     phonenumbers = [ phonenumbers ];
+    phonenumberslite = [ phonenumberslite ];
   };
 
   meta = with lib; {
-    description = "A django model and form field for normalised phone numbers using python-phonenumbers";
+    description = "Django model and form field for normalised phone numbers using python-phonenumbers";
     homepage = "https://github.com/stefanfoulis/django-phonenumber-field/";
     changelog = "https://github.com/stefanfoulis/django-phonenumber-field/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/django-picklefield/default.nix b/pkgs/development/python-modules/django-picklefield/default.nix
index b1dab2e73c917..25b9e1c34c8d4 100644
--- a/pkgs/development/python-modules/django-picklefield/default.nix
+++ b/pkgs/development/python-modules/django-picklefield/default.nix
@@ -1,8 +1,14 @@
-{ lib, buildPythonPackage, fetchFromGitHub, django, pytest, pytest-django, python }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  python,
+}:
 
 buildPythonPackage rec {
   pname = "django-picklefield";
-  version = "3.0.1";
+  version = "3.2.0";
   format = "setuptools";
 
   # The PyPi source doesn't contain tests
@@ -10,15 +16,11 @@ buildPythonPackage rec {
     owner = "gintas";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0ni7bc86k0ra4pc8zv451pzlpkhs1nyil1sq9jdb4m2mib87b5fk";
+    sha256 = "sha256-UMMbJoSHWcdumZOFPhKNUjThGzU/8nhP2J8YsDjgbHo=";
   };
 
   propagatedBuildInputs = [ django ];
 
-  # Tests are failing with Django 3.2
-  # https://github.com/gintas/django-picklefield/issues/58
-  doCheck = false;
-
   checkPhase = ''
     runHook preCheck
     ${python.interpreter} -m django test --settings=tests.settings
@@ -26,9 +28,9 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A pickled object field for Django";
+    description = "Pickled object field for Django";
     homepage = "https://github.com/gintas/django-picklefield";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/django-polymorphic/default.nix b/pkgs/development/python-modules/django-polymorphic/default.nix
index 4df2a1406ef72..b313276bbf6b6 100644
--- a/pkgs/development/python-modules/django-polymorphic/default.nix
+++ b/pkgs/development/python-modules/django-polymorphic/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchFromGitHub, python, django, dj-database-url }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  django,
+  dj-database-url,
+}:
 
 buildPythonPackage rec {
   pname = "django-polymorphic";
@@ -26,6 +33,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/django-polymorphic/django-polymorphic";
     description = "Improved Django model inheritance with automatic downcasting";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/django-postgresql-netfields/default.nix b/pkgs/development/python-modules/django-postgresql-netfields/default.nix
index 1f0600b68a84f..cf9685e0b2acd 100644
--- a/pkgs/development/python-modules/django-postgresql-netfields/default.nix
+++ b/pkgs/development/python-modules/django-postgresql-netfields/default.nix
@@ -1,18 +1,19 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, django
-, netaddr
-, six
-, fetchFromGitHub
-, pythonOlder
-, djangorestframework
-# required for tests
-, postgresql
-, postgresqlTestHook
-, psycopg2
-, pytestCheckHook
-, pytest-django
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  django,
+  netaddr,
+  six,
+  fetchFromGitHub,
+  pythonOlder,
+  djangorestframework,
+  # required for tests
+  postgresql,
+  postgresqlTestHook,
+  psycopg2,
+  pytestCheckHook,
+  pytest-django,
 }:
 
 buildPythonPackage rec {
@@ -35,7 +36,7 @@ buildPythonPackage rec {
     six
   ];
 
-  doCheck = !stdenv.isDarwin; # could not create shared memory segment: Operation not permitted
+  doCheck = !stdenv.hostPlatform.isDarwin; # could not create shared memory segment: Operation not permitted
 
   nativeCheckInputs = [
     djangorestframework
@@ -54,6 +55,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/jimfunk/django-postgresql-netfields";
     changelog = "https://github.com/jimfunk/django-postgresql-netfields/blob/v${version}/CHANGELOG";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/django-prometheus/default.nix b/pkgs/development/python-modules/django-prometheus/default.nix
index 40bdf4e57ff79..e15174d56ae42 100644
--- a/pkgs/development/python-modules/django-prometheus/default.nix
+++ b/pkgs/development/python-modules/django-prometheus/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, prometheus-client
-, pytest-django
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  prometheus-client,
+  pytest-django,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,22 +21,16 @@ buildPythonPackage rec {
     hash = "sha256-JiLH+4mmNdb9BN81J5YFiMPna/3gaKUK6ARjmCa3fE8=";
   };
 
-  patches = [
-    ./drop-untestable-database-backends.patch
-  ];
+  patches = [ ./drop-untestable-database-backends.patch ];
 
   postPatch = ''
     substituteInPlace setup.py \
       --replace '"pytest-runner"' ""
   '';
 
-  propagatedBuildInputs = [
-    prometheus-client
-  ];
+  propagatedBuildInputs = [ prometheus-client ];
 
-  pythonImportsCheck = [
-    "django_prometheus"
-  ];
+  pythonImportsCheck = [ "django_prometheus" ];
 
   nativeCheckInputs = [
     pytest-django
diff --git a/pkgs/development/python-modules/django-pwa/default.nix b/pkgs/development/python-modules/django-pwa/default.nix
index 91a216f0ac5cd..134a84852f661 100644
--- a/pkgs/development/python-modules/django-pwa/default.nix
+++ b/pkgs/development/python-modules/django-pwa/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, django
-, fetchFromGitHub
-, python
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchFromGitHub,
+  python,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,17 +22,11 @@ buildPythonPackage rec {
     hash = "sha256-tP1+Jm9hdvN/ZliuVHN8tqy24/tOK1LUUiJv1xUqRrY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
-  pyImportCheck = [
-    "pwa"
-  ];
+  pyImportCheck = [ "pwa" ];
 
   checkPhase = ''
     runHook preCheck
@@ -40,7 +35,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A Django app to include a manifest.json and Service Worker instance to enable progressive web app behavoir";
+    description = "Django app to include a manifest.json and Service Worker instance to enable progressive web app behavoir";
     homepage = "https://github.com/silviolleite/django-pwa";
     changelog = "https://github.com/silviolleite/django-pwa/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/django-q/default.nix b/pkgs/development/python-modules/django-q/default.nix
index 7ce4d4b6b7d9c..0cc7ea246e8cc 100644
--- a/pkgs/development/python-modules/django-q/default.nix
+++ b/pkgs/development/python-modules/django-q/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, stdenv
-, arrow
-, blessed
-, buildPythonPackage
-, croniter
-, django
-, django-picklefield
-, django-redis
-, fetchFromGitHub
-, future
-, pkgs
-, poetry-core
-, pytest-django
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, redis
-, setuptools
+{
+  lib,
+  stdenv,
+  arrow,
+  blessed,
+  buildPythonPackage,
+  croniter,
+  django,
+  django-picklefield,
+  django-redis,
+  fetchFromGitHub,
+  future,
+  pkgs,
+  poetry-core,
+  pytest-django,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  redis,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -35,9 +36,7 @@ buildPythonPackage rec {
 
   # fixes empty version string
   # analog to https://github.com/NixOS/nixpkgs/pull/171200
-  patches = [
-    ./pep-621.patch
-  ];
+  patches = [ ./pep-621.patch ];
 
   nativeBuildInputs = [
     poetry-core
@@ -60,9 +59,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ django-redis.optional-dependencies.hiredis;
 
-  pythonImportsCheck = [
-    "django_q"
-  ];
+  pythonImportsCheck = [ "django_q" ];
 
   preCheck = ''
     ${pkgs.redis}/bin/redis-server &
@@ -79,10 +76,10 @@ buildPythonPackage rec {
     "test_mongo"
   ];
 
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   meta = with lib; {
-    description = "A multiprocessing distributed task queue for Django";
+    description = "Multiprocessing distributed task queue for Django";
     homepage = "https://django-q.readthedocs.org";
     changelog = "https://github.com/Koed00/django-q/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/django-ranged-response/default.nix b/pkgs/development/python-modules/django-ranged-response/default.nix
index 35f4bb2a7e836..6391b3eb2091a 100644
--- a/pkgs/development/python-modules/django-ranged-response/default.nix
+++ b/pkgs/development/python-modules/django-ranged-response/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchPypi, buildPythonPackage, django }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  django,
+}:
 
 buildPythonPackage rec {
   pname = "django-ranged-response";
@@ -16,7 +21,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ django ];
 
   meta = with lib; {
-    description = "A modified FileResponse that returns `Content-Range` headers with the HTTP response, so browsers (read Safari 9+) that request the file, can stream the response properly";
+    description = "Modified FileResponse that returns `Content-Range` headers with the HTTP response, so browsers (read Safari 9+) that request the file, can stream the response properly";
     homepage = "https://github.com/wearespindle/django-ranged-fileresponse";
     license = licenses.mit;
     maintainers = with maintainers; [ mrmebelman ];
diff --git a/pkgs/development/python-modules/django-raster/default.nix b/pkgs/development/python-modules/django-raster/default.nix
index d5a01cd195dae..fc59c21893e79 100644
--- a/pkgs/development/python-modules/django-raster/default.nix
+++ b/pkgs/development/python-modules/django-raster/default.nix
@@ -1,6 +1,17 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k,
-  numpy, django-colorful, pillow, psycopg2,
-  pyparsing, django, celery, boto3, importlib-metadata
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  numpy,
+  django-colorful,
+  pillow,
+  psycopg2,
+  pyparsing,
+  django,
+  celery,
+  boto3,
+  importlib-metadata,
 }:
 
 buildPythonPackage rec {
@@ -18,8 +29,17 @@ buildPythonPackage rec {
   # Tests require a postgresql + postgis server
   doCheck = false;
 
-  propagatedBuildInputs = [ numpy django-colorful pillow psycopg2
-                            pyparsing django celery boto3 importlib-metadata ];
+  propagatedBuildInputs = [
+    numpy
+    django-colorful
+    pillow
+    psycopg2
+    pyparsing
+    django
+    celery
+    boto3
+    importlib-metadata
+  ];
 
   meta = with lib; {
     description = "Basic raster data integration for Django";
diff --git a/pkgs/development/python-modules/django-ratelimit/default.nix b/pkgs/development/python-modules/django-ratelimit/default.nix
new file mode 100644
index 0000000000000..ca0216a9de5c3
--- /dev/null
+++ b/pkgs/development/python-modules/django-ratelimit/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, buildPythonPackage
+, django
+, django-redis
+, fetchFromGitHub
+, pymemcache
+, pythonOlder
+, setuptools
+}:
+
+buildPythonPackage rec {
+  pname = "django-ratelimit";
+  version = "4.1.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "jsocol";
+    repo = "django-ratelimit";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-ZMtZSKOIIRSqH6eyC7bBeua7YLKyWW6NOXN/MDv9fy4=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+  ];
+
+  propagatedBuildInputs = [
+    django
+    django-redis
+    pymemcache
+  ];
+
+  pythonImportsCheck = [
+    "django_ratelimit"
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+
+    export DJANGO_SETTINGS_MODULE=test_settings
+    python -m django test django_ratelimit
+
+    runHook postCheck
+  '';
+
+
+  meta = with lib; {
+    description = "Cache-based rate-limiting for Django";
+    homepage = "https://github.com/jsocol/django-ratelimit";
+    changelog = "https://github.com/jsocol/django-ratelimit/releases/tag/v${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ derdennisop ];
+  };
+}
diff --git a/pkgs/development/python-modules/django-redis/default.nix b/pkgs/development/python-modules/django-redis/default.nix
index eeb845d095638..eefb715e17088 100644
--- a/pkgs/development/python-modules/django-redis/default.nix
+++ b/pkgs/development/python-modules/django-redis/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, fetchFromGitHub
-, pythonOlder
-, buildPythonPackage
-, setuptools
-
-# propagated
-, django
-, hiredis
-, lz4
-, msgpack
-, redis
-
-# testing
-, pkgs
-, pytest-django
-, pytest-mock
-, pytestCheckHook
+{
+  lib,
+  fetchFromGitHub,
+  pythonOlder,
+  buildPythonPackage,
+  setuptools,
+
+  # propagated
+  django,
+  hiredis,
+  lz4,
+  msgpack,
+  redis,
+
+  # testing
+  pkgs,
+  pytest-django,
+  pytest-mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
     sed -i '/-cov/d' setup.cfg
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     django
@@ -48,14 +47,10 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    hiredis = [
-      redis
-    ] ++ redis.optional-dependencies.hiredis;
+    hiredis = [ redis ] ++ redis.optional-dependencies.hiredis;
   };
 
-  pythonImportsCheck = [
-    "django_redis"
-  ];
+  pythonImportsCheck = [ "django_redis" ];
 
   DJANGO_SETTINGS_MODULE = "tests.settings.sqlite";
 
@@ -91,6 +86,8 @@ buildPythonPackage rec {
     "test_delete_pattern_calls_scan_iter_with_count_if_itersize_given"
   ];
 
+  __darwinAllowLocalNetworking = true;
+
   meta = with lib; {
     description = "Full featured redis cache backend for Django";
     homepage = "https://github.com/jazzband/django-redis";
diff --git a/pkgs/development/python-modules/django-rest-auth/default.nix b/pkgs/development/python-modules/django-rest-auth/default.nix
index eb14a6a3c316e..316b07a274e0a 100644
--- a/pkgs/development/python-modules/django-rest-auth/default.nix
+++ b/pkgs/development/python-modules/django-rest-auth/default.nix
@@ -1,12 +1,13 @@
-{ lib
- , buildPythonPackage
-, fetchFromGitHub
-, django
-, django-allauth
-, djangorestframework
-, drf-jwt
-, responses
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  django-allauth,
+  djangorestframework,
+  drf-jwt,
+  responses,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -47,6 +48,6 @@ buildPythonPackage rec {
     description = "Django app that makes registration and authentication easy";
     homepage = "https://github.com/Tivix/django-rest-auth";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/django-rest-polymorphic/default.nix b/pkgs/development/python-modules/django-rest-polymorphic/default.nix
index 5cf6f84ad5546..73196ccfbcf00 100644
--- a/pkgs/development/python-modules/django-rest-polymorphic/default.nix
+++ b/pkgs/development/python-modules/django-rest-polymorphic/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
-, django-polymorphic
-, djangorestframework
-, pytest-django
-, pytest-mock
-, pytestCheckHook
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  django-polymorphic,
+  djangorestframework,
+  pytest-django,
+  pytest-mock,
+  pytestCheckHook,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -18,7 +19,7 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "apirobot";
     repo = "django-rest-polymorphic";
-     # https://github.com/denisorehovsky/django-rest-polymorphic/issues/42
+    # https://github.com/denisorehovsky/django-rest-polymorphic/issues/42
     rev = "9d920eb91ef13144094426f9ebc0ca80247c0fe3";
     hash = "sha256-k7Cl2QYkaGOZaTo8v5Wg9Wqh8x0WC5i9Sggqj8eeECY=";
   };
@@ -42,6 +43,6 @@ buildPythonPackage rec {
     description = "Polymorphic serializers for Django REST Framework";
     homepage = "https://github.com/apirobot/django-rest-polymorphic";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/django-rest-registration/default.nix b/pkgs/development/python-modules/django-rest-registration/default.nix
index 7c5f0b455c6dc..eb6fcafac1d04 100644
--- a/pkgs/development/python-modules/django-rest-registration/default.nix
+++ b/pkgs/development/python-modules/django-rest-registration/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, django
-, djangorestframework
-, fetchFromGitHub
-, pytest-django
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  django,
+  djangorestframework,
+  fetchFromGitHub,
+  pytest-django,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     pytest-django
   ];
 
-  pythonImportsCheck = [
-    "rest_registration"
-  ];
+  pythonImportsCheck = [ "rest_registration" ];
 
   disabledTests = [
     # This test fails on Python 3.10
diff --git a/pkgs/development/python-modules/django-reversion/default.nix b/pkgs/development/python-modules/django-reversion/default.nix
index 35d54194f07d4..9d795c9346474 100644
--- a/pkgs/development/python-modules/django-reversion/default.nix
+++ b/pkgs/development/python-modules/django-reversion/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, django
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  django,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -13,31 +14,25 @@ buildPythonPackage rec {
 
   disabled = pythonOlder "3.7";
 
-src = fetchPypi {
+  src = fetchPypi {
     inherit pname version;
     hash = "sha256-wEfMmanxukqubbicOsJDR41t6Y7Ipgxwc/zIddicXNs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
   # Tests assume the availability of a mysql/postgresql database
   doCheck = false;
 
-  pythonImportsCheck = [
-    "reversion"
-  ];
+  pythonImportsCheck = [ "reversion" ];
 
   meta = with lib; {
-    description = "An extension to the Django web framework that provides comprehensive version control facilities";
+    description = "Extension to the Django web framework that provides comprehensive version control facilities";
     homepage = "https://github.com/etianen/django-reversion";
     changelog = "https://github.com/etianen/django-reversion/blob/v${version}/CHANGELOG.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/django-rosetta/default.nix b/pkgs/development/python-modules/django-rosetta/default.nix
index d9337081ba3e3..a2ae0c0b34aef 100644
--- a/pkgs/development/python-modules/django-rosetta/default.nix
+++ b/pkgs/development/python-modules/django-rosetta/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, django
-, fetchFromGitHub
-, polib
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchFromGitHub,
+  polib,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
   # require internet connection
   doCheck = false;
 
-  pythonImportsCheck = [
-    "rosetta"
-  ];
+  pythonImportsCheck = [ "rosetta" ];
 
   meta = with lib; {
     description = "Rosetta is a Django application that facilitates the translation process of your Django projects";
@@ -42,4 +41,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ derdennisop ];
   };
 }
-
diff --git a/pkgs/development/python-modules/django-rq/default.nix b/pkgs/development/python-modules/django-rq/default.nix
index 4d4a63aeb6245..3e37822ed5cc2 100644
--- a/pkgs/development/python-modules/django-rq/default.nix
+++ b/pkgs/development/python-modules/django-rq/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, isPy27
-, fetchFromGitHub
-, django
-, redis
-, rq
-, sentry-sdk
+{
+  lib,
+  buildPythonPackage,
+  isPy27,
+  fetchFromGitHub,
+  django,
+  redis,
+  rq,
+  sentry-sdk,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     sentry-sdk
   ];
 
-  pythonImportsCheck = [
-    "django_rq"
-  ];
+  pythonImportsCheck = [ "django_rq" ];
 
   doCheck = false; # require redis-server
 
diff --git a/pkgs/development/python-modules/django-scheduler/default.nix b/pkgs/development/python-modules/django-scheduler/default.nix
index d8db8c596173f..f03dd71d0e3a1 100644
--- a/pkgs/development/python-modules/django-scheduler/default.nix
+++ b/pkgs/development/python-modules/django-scheduler/default.nix
@@ -1,14 +1,13 @@
-{ lib
-, buildPythonPackage
-, django
-, fetchFromGitHub
-, icalendar
-, pytest
-, pytest-django
-, python
-, python-dateutil
-, pythonOlder
-, pytz
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchFromGitHub,
+  icalendar,
+  python,
+  python-dateutil,
+  pythonOlder,
+  pytz,
 }:
 
 buildPythonPackage rec {
@@ -38,12 +37,10 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "schedule"
-  ];
+  pythonImportsCheck = [ "schedule" ];
 
   meta = with lib; {
-    description = "A calendar app for Django";
+    description = "Calendar app for Django";
     homepage = "https://github.com/llazzaro/django-scheduler";
     changelog = "https://github.com/llazzaro/django-scheduler/releases/tag/${version}";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/django-scim2/default.nix b/pkgs/development/python-modules/django-scim2/default.nix
index d4eab102d719c..bb4b5d7c508cf 100644
--- a/pkgs/development/python-modules/django-scim2/default.nix
+++ b/pkgs/development/python-modules/django-scim2/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# build-system
-, poetry-core
-
-# propagates
-, django
-, scim2-filter-parser
-
-# tests
-, mock
-, pytest-django
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # propagates
+  django,
+  scim2-filter-parser,
+
+  # tests
+  mock,
+  pytest-django,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "django-scim2";
   version = "0.19.0";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "15five";
-    repo = pname;
+    repo = "django-scim2";
     rev = "refs/tags/${version}";
     hash = "sha256-larDh4f9/xVr11/n/WfkJ2Tx45DMQqyK3ZzkWAvzeig=";
   };
@@ -30,22 +31,18 @@ buildPythonPackage rec {
   # remove this when upstream releases a new version > 0.19.0
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "poetry>=0.12" "poetry-core>=1.5.2" \
-      --replace "poetry.masonry.api" "poetry.core.masonry.api"
+      --replace-fail "poetry>=0.12" "poetry-core>=1.5.2" \
+      --replace-fail "poetry.masonry.api" "poetry.core.masonry.api"
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     django
     scim2-filter-parser
   ];
 
-  pythonImportsCheck = [
-    "django_scim"
-  ];
+  pythonImportsCheck = [ "django_scim" ];
 
   nativeCheckInputs = [
     mock
@@ -55,7 +52,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     changelog = "https://github.com/15five/django-scim2/blob/${src.rev}/CHANGES.txt";
-    description = "A SCIM 2.0 Service Provider Implementation (for Django)";
+    description = "SCIM 2.0 Service Provider Implementation (for Django)";
     homepage = "https://github.com/15five/django-scim2";
     license = licenses.mit;
     maintainers = with maintainers; [ s1341 ];
diff --git a/pkgs/development/python-modules/django-scopes/default.nix b/pkgs/development/python-modules/django-scopes/default.nix
index df4cd3599fac5..108d95a815346 100644
--- a/pkgs/development/python-modules/django-scopes/default.nix
+++ b/pkgs/development/python-modules/django-scopes/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
-, pytestCheckHook
-, pytest-django
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  pytestCheckHook,
+  pytest-django,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-CtToztLVvSb91pMpPNL8RysQJzlRkeXuQbpvbkX3jfM=";
   };
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
   nativeCheckInputs = [
     pytest-django
diff --git a/pkgs/development/python-modules/django-sekizai/default.nix b/pkgs/development/python-modules/django-sekizai/default.nix
index 5c040ee026bac..5727b5ac9990d 100644
--- a/pkgs/development/python-modules/django-sekizai/default.nix
+++ b/pkgs/development/python-modules/django-sekizai/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, django-classy-tags
-, pytestCheckHook
-, pytest-django
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  django-classy-tags,
+  pytestCheckHook,
+  pytest-django,
 }:
 
 buildPythonPackage rec {
@@ -13,12 +14,10 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-Kso2y64LXAzv7ZVlQW7EQjNXZ/sxRb/xHlhiL8ZTza0=";
+    hash = "sha256-Kso2y64LXAzv7ZVlQW7EQjNXZ/sxRb/xHlhiL8ZTza0=";
   };
 
-  propagatedBuildInputs = [
-    django-classy-tags
-  ];
+  propagatedBuildInputs = [ django-classy-tags ];
 
   checkInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/django-sesame/default.nix b/pkgs/development/python-modules/django-sesame/default.nix
index a8953369304a4..5aad0ccdc321d 100644
--- a/pkgs/development/python-modules/django-sesame/default.nix
+++ b/pkgs/development/python-modules/django-sesame/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, django
-, fetchFromGitHub
-, poetry-core
-, python
-, pythonOlder
-, ua-parser
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchFromGitHub,
+  poetry-core,
+  python,
+  pythonOlder,
+  ua-parser,
 }:
 
 buildPythonPackage rec {
@@ -22,18 +23,14 @@ buildPythonPackage rec {
     hash = "sha256-8jbYhD/PfPnutJZonmdrqLIQdXiUHF12w0M9tuyyDz0=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   nativeCheckInputs = [
     django
     ua-parser
   ];
 
-  pythonImportsCheck = [
-    "sesame"
-  ];
+  pythonImportsCheck = [ "sesame" ];
 
   checkPhase = ''
     runHook preCheck
@@ -48,6 +45,5 @@ buildPythonPackage rec {
     homepage = "https://github.com/aaugustin/django-sesame";
     changelog = "https://github.com/aaugustin/django-sesame/blob/${version}/docs/changelog.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ elohmeier ];
   };
 }
diff --git a/pkgs/development/python-modules/django-shortuuidfield/default.nix b/pkgs/development/python-modules/django-shortuuidfield/default.nix
index dd999963a1150..fe2580e205037 100644
--- a/pkgs/development/python-modules/django-shortuuidfield/default.nix
+++ b/pkgs/development/python-modules/django-shortuuidfield/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, django
-, fetchPypi
-, shortuuid
-, six
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchPypi,
+  shortuuid,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "shortuuidfield"
-  ];
+  pythonImportsCheck = [ "shortuuidfield" ];
 
   meta = with lib; {
     description = "Short UUIDField for Django. Good for use in urls & file names";
diff --git a/pkgs/development/python-modules/django-silk/default.nix b/pkgs/development/python-modules/django-silk/default.nix
index 5cb38385284c8..0825ee658b93c 100644
--- a/pkgs/development/python-modules/django-silk/default.nix
+++ b/pkgs/development/python-modules/django-silk/default.nix
@@ -1,31 +1,31 @@
-{ lib
-, autopep8
-, buildPythonPackage
-, django
-, factory-boy
-, fetchFromGitHub
-, fetchpatch
-, freezegun
-, gprof2dot
-, jinja2
-, mock
-, networkx
-, pillow
-, pydot
-, pygments
-, python
-, python-dateutil
-, pythonOlder
-, pytz
-, requests
-, setuptools-scm
-, simplejson
-, sqlparse
+{
+  lib,
+  autopep8,
+  buildPythonPackage,
+  django,
+  factory-boy,
+  fetchFromGitHub,
+  freezegun,
+  gprof2dot,
+  jinja2,
+  mock,
+  networkx,
+  pillow,
+  pydot,
+  pygments,
+  python,
+  python-dateutil,
+  pythonOlder,
+  pytz,
+  requests,
+  setuptools-scm,
+  simplejson,
+  sqlparse,
 }:
 
 buildPythonPackage rec {
   pname = "django-silk";
-  version = "5.1.0";
+  version = "5.2.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -34,7 +34,7 @@ buildPythonPackage rec {
     owner = "jazzband";
     repo = "django-silk";
     rev = "refs/tags/${version}";
-    hash = "sha256-QqY1bRa0v4DZ2/gDbssyhJA9Kb+5jig4hZEBVKZiowY=";
+    hash = "sha256-wSQ0yV9+UyjgsaQGNn+MdeUkx9eeRqaHvDpUxIGRmGM=";
   };
 
   # "test_time_taken" tests aren't suitable for reproducible execution, but Django's
@@ -47,13 +47,9 @@ buildPythonPackage rec {
       --replace 'use_scm_version=True' 'version="${version}"'
   '';
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    mock
-  ];
+  buildInputs = [ mock ];
 
   propagatedBuildInputs = [
     autopep8
@@ -76,9 +72,7 @@ buildPythonPackage rec {
     factory-boy
   ];
 
-  pythonImportsCheck = [
-    "silk"
-  ];
+  pythonImportsCheck = [ "silk" ];
 
   checkPhase = ''
     runHook preCheck
diff --git a/pkgs/development/python-modules/django-simple-captcha/default.nix b/pkgs/development/python-modules/django-simple-captcha/default.nix
index 11c3e862804ad..2e6d9b8727f30 100644
--- a/pkgs/development/python-modules/django-simple-captcha/default.nix
+++ b/pkgs/development/python-modules/django-simple-captcha/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, testfixtures
-, django
-, django-ranged-response
-, pillow
-, withTTS ? true
-, flite
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  testfixtures,
+  django,
+  django-ranged-response,
+  pillow,
+  withTTS ? true,
+  flite,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-0YhRbTJvrdLVrQduuJZJ1VwCyrr+P9zCFUrBjp9tS5c=";
   };
 
-  nativeCheckInputs = [
-    testfixtures
-  ];
+  nativeCheckInputs = [ testfixtures ];
 
   checkPhase = ''
     cd testproject
@@ -40,6 +39,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/mbi/django-simple-captcha";
     changelog = "https://github.com/mbi/django-simple-captcha/blob/v${version}/CHANGES";
     license = licenses.mit;
-    maintainers = with maintainers; [ mrmebelman schmittlauch ];
+    maintainers = with maintainers; [
+      mrmebelman
+      schmittlauch
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/django-simple-history/default.nix b/pkgs/development/python-modules/django-simple-history/default.nix
index 4c31b8725763d..45e1854de8d94 100644
--- a/pkgs/development/python-modules/django-simple-history/default.nix
+++ b/pkgs/development/python-modules/django-simple-history/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, buildPythonPackage
-, django
-, fetchFromGitHub
-, pytest-django
-, python
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchFromGitHub,
+  hatch-fancy-pypi-readme,
+  hatchling,
+  hatch-vcs,
+  python,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "django-simple-history";
-  version = "3.5.0";
-  format = "setuptools";
+  version = "3.7.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -19,27 +21,27 @@ buildPythonPackage rec {
     owner = "jazzband";
     repo = "django-simple-history";
     rev = "refs/tags/${version}";
-    hash = "sha256-BW/F+RBf1KvwGRY9IK00+n69Jtx/ndEuvpHSi8/odSE=";
+    hash = "sha256-bPdMdtiEDRvRD00ZBwUQkeCDKCx2SW65+FsbuMwVdK0=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
+  build-system = [
+    hatch-fancy-pypi-readme
+    hatchling
+    hatch-vcs
   ];
 
-  propagatedBuildInputs = [
-    django
-  ];
+  dependencies = [ django ];
 
   checkPhase = ''
+    runHook preCheck
     ${python.interpreter} runtests.py
+    runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "simple_history"
-  ];
+  pythonImportsCheck = [ "simple_history" ];
 
   meta = with lib; {
-    description = "django-simple-history stores Django model state on every create/update/delete";
+    description = "Module to store Django model state on every create/update/delete";
     homepage = "https://github.com/jazzband/django-simple-history/";
     changelog = "https://github.com/jazzband/django-simple-history/releases/tag/${version}";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/django-sites/default.nix b/pkgs/development/python-modules/django-sites/default.nix
index 52c78b8f5e3db..e83ab1239f453 100644
--- a/pkgs/development/python-modules/django-sites/default.nix
+++ b/pkgs/development/python-modules/django-sites/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
-, django-jinja
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  django-jinja,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -18,13 +19,9 @@ buildPythonPackage rec {
     hash = "sha256-MQtQC+9DyS1ICXXovbqPpkKIQ5wpuJDgq3Lcd/1kORU=";
   };
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
-  nativeCheckInputs = [
-    django-jinja
-  ];
+  nativeCheckInputs = [ django-jinja ];
 
   checkPhase = ''
     runHook preCheck
diff --git a/pkgs/development/python-modules/django-soft-delete/default.nix b/pkgs/development/python-modules/django-soft-delete/default.nix
new file mode 100644
index 0000000000000..05f2ebeb1c274
--- /dev/null
+++ b/pkgs/development/python-modules/django-soft-delete/default.nix
@@ -0,0 +1,31 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  django,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "django-soft-delete";
+  version = "1.0.13";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-RDwApUwG0jb/iAbDJgJD13XMU2WB1zd8J4UICxBBzh0=";
+  };
+
+  dependencies = [ django ];
+
+  build-system = [ setuptools ];
+
+  # No tests
+  doCheck = false;
+
+  meta = {
+    description = "Soft delete models, managers, queryset for Django";
+    homepage = "https://github.com/san4ezy/django_softdelete";
+    license = lib.licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/django-sr/default.nix b/pkgs/development/python-modules/django-sr/default.nix
deleted file mode 100644
index d14935d414bdf..0000000000000
--- a/pkgs/development/python-modules/django-sr/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, django, nose }:
-
-buildPythonPackage rec {
-  pname = "django-sr";
-  version = "0.0.4";
-  format = "setuptools";
-
-  meta = {
-    description = "Django settings resolver";
-    homepage = "https://github.com/jespino/django-sr";
-    license = lib.licenses.bsd3;
-  };
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0d3yqppi1q3crcn9nxx58wzm4yw61d5m7435g6rb9wcamr9bi1im";
-  };
-
-  buildInputs = [ django nose ];
-  propagatedBuildInputs = [ django ];
-}
diff --git a/pkgs/development/python-modules/django-statici18n/default.nix b/pkgs/development/python-modules/django-statici18n/default.nix
index 8ce7bc0340a94..88f4994c91b6e 100644
--- a/pkgs/development/python-modules/django-statici18n/default.nix
+++ b/pkgs/development/python-modules/django-statici18n/default.nix
@@ -1,44 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, django
-, django-appconf
+  # dependencies
+  django,
+  django-appconf,
 
-# tests
-, pytest-django
-, pytestCheckHook
+  # tests
+  pytest-django,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "django-statici18n";
-  version = "2.4.0";
+  version = "2.5.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "zyegfryed";
     repo = "django-statici18n";
-    # https://github.com/zyegfryed/django-statici18n/issues/59
-    rev = "9b83a8f0f2e625dd5f56d53cfe4e07aca9479ab6";
-    hash = "sha256-KrIlWmN7um9ad2avfANOza579bjYkxTo9F0UFpvLu3A=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-n6HqHcXvz2ihwN+gJr5P+/Yt4RpuOu2yAjo9fiNZB54=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     django
     django-appconf
   ];
 
-  pythonImportsCheck = [
-    "statici18n"
-  ];
+  pythonImportsCheck = [ "statici18n" ];
 
   env.DJANGO_SETTINGS_MODULE = "tests.test_project.project.settings";
 
@@ -51,6 +47,9 @@ buildPythonPackage rec {
     description = "Helper for generating Javascript catalog to static files";
     homepage = "https://github.com/zyegfryed/django-statici18n";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ greizgh schmittlauch ];
+    maintainers = with maintainers; [
+      greizgh
+      schmittlauch
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/django-storages/default.nix b/pkgs/development/python-modules/django-storages/default.nix
index b835a6fb0766b..84378ee311a86 100644
--- a/pkgs/development/python-modules/django-storages/default.nix
+++ b/pkgs/development/python-modules/django-storages/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, azure-storage-blob
-, boto3
-, buildPythonPackage
-, cryptography
-, django
-, dropbox
-, fetchFromGitHub
-, google-cloud-storage
-, libcloud
-, moto
-, paramiko
-, pytestCheckHook
-, pythonOlder
-, rsa
-, setuptools
+{
+  lib,
+  azure-storage-blob,
+  boto3,
+  buildPythonPackage,
+  cryptography,
+  django,
+  dropbox,
+  fetchFromGitHub,
+  google-cloud-storage,
+  libcloud,
+  moto,
+  paramiko,
+  pytestCheckHook,
+  pythonOlder,
+  rsa,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "django-storages";
-  version = "1.14.2";
+  version = "1.14.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -27,39 +28,21 @@ buildPythonPackage rec {
     owner = "jschneier";
     repo = "django-storages";
     rev = "refs/tags/${version}";
-    hash = "sha256-V0uFZvnBi0B31b/j/u3Co6dd9XcdVefiSkl3XmCTJG4=";
+    hash = "sha256-nlM/XPot3auLzNsnHCVtog2WmiaibDRgbPOw9A5F9QI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
   passthru.optional-dependencies = {
-    azure = [
-      azure-storage-blob
-    ];
-    boto3 = [
-      boto3
-    ];
-    dropbox = [
-      dropbox
-    ];
-    google = [
-      google-cloud-storage
-    ];
-    libcloud = [
-      libcloud
-    ];
-    s3 = [
-      boto3
-    ];
-    sftp = [
-      paramiko
-    ];
+    azure = [ azure-storage-blob ];
+    boto3 = [ boto3 ];
+    dropbox = [ dropbox ];
+    google = [ google-cloud-storage ];
+    libcloud = [ libcloud ];
+    s3 = [ boto3 ];
+    sftp = [ paramiko ];
   };
 
   nativeCheckInputs = [
@@ -69,9 +52,7 @@ buildPythonPackage rec {
     rsa
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "storages"
-  ];
+  pythonImportsCheck = [ "storages" ];
 
   env.DJANGO_SETTINGS_MODULE = "tests.settings";
 
diff --git a/pkgs/development/python-modules/django-stubs-ext/default.nix b/pkgs/development/python-modules/django-stubs-ext/default.nix
index e863e3ebc47bd..e899451185cc0 100644
--- a/pkgs/development/python-modules/django-stubs-ext/default.nix
+++ b/pkgs/development/python-modules/django-stubs-ext/default.nix
@@ -1,41 +1,44 @@
-{ lib
-, buildPythonPackage
-, django
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchPypi,
+  oracledb,
+  pytestCheckHook,
+  pythonOlder,
+  redis,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "django-stubs-ext";
-  version = "4.2.7";
+  version = "5.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-UZNCrAhJzaFVl0bJpWPwP/mfY2sOvnwUt16BagDf3cM=";
+    pname = "django_stubs_ext";
+    inherit version;
+    hash = "sha256-7X1RwLcxZRh5/HXzMfsIBtmLZ7+rRk6W4nJNtrRu+SY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     django
     typing-extensions
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  optional-dependencies = {
+    redis = [ redis ];
+    oracle = [ oracledb ];
+  };
 
-  pythonImportsCheck = [
-    "django_stubs_ext"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "django_stubs_ext" ];
 
   meta = with lib; {
     description = "Extensions and monkey-patching for django-stubs";
diff --git a/pkgs/development/python-modules/django-stubs/default.nix b/pkgs/development/python-modules/django-stubs/default.nix
index a0b8d8128a769..0bdd73e774884 100644
--- a/pkgs/development/python-modules/django-stubs/default.nix
+++ b/pkgs/development/python-modules/django-stubs/default.nix
@@ -1,33 +1,33 @@
-{ lib
-, buildPythonPackage
-, django
-, django-stubs-ext
-, fetchPypi
-, mypy
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, tomli
-, types-pytz
-, types-pyyaml
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  django,
+  django-stubs-ext,
+  fetchPypi,
+  mypy,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  tomli,
+  types-pytz,
+  types-pyyaml,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "django-stubs";
-  version = "4.2.7";
+  version = "5.0.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-jM0v9O5a3yK547expRbS4cIZHp2U5nLDXMK8PdYeD2s=";
+    pname = "django_stubs";
+    inherit version;
+    hash = "sha256-eON2RIj9/SaV8SUCE2VI7CL41LF4BUGoNQQrgjjRFRQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     django
@@ -35,23 +35,17 @@ buildPythonPackage rec {
     types-pytz
     types-pyyaml
     typing-extensions
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   passthru.optional-dependencies = {
-    compatible-mypy = [
-      mypy
-    ];
+    compatible-mypy = [ mypy ];
   };
 
   nativeCheckInputs = [
     pytestCheckHook
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "django-stubs"
-  ];
+  pythonImportsCheck = [ "django-stubs" ];
 
   meta = with lib; {
     description = "PEP-484 stubs for Django";
diff --git a/pkgs/development/python-modules/django-tables2/default.nix b/pkgs/development/python-modules/django-tables2/default.nix
index a6a873bee00ef..cb1f2307d527e 100644
--- a/pkgs/development/python-modules/django-tables2/default.nix
+++ b/pkgs/development/python-modules/django-tables2/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, django
-, tablib
+  # dependencies
+  django,
+  tablib,
 
-# tests
-, lxml
-, openpyxl
-, psycopg2
-, pytz
-, pyyaml
-, pytest-django
-, pytestCheckHook
+  # tests
+  lxml,
+  openpyxl,
+  psycopg2,
+  pytz,
+  pyyaml,
+  pytest-django,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -34,20 +35,12 @@ buildPythonPackage rec {
     hash = "sha256-VB7xmcBncTUYllzKS4o7G7u+KoivMiiEQGZ4x+Rnces=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
   passthru.optional-dependencies = {
-    tablib = [
-      tablib
-    ]
-    ++ tablib.optional-dependencies.xls
-    ++ tablib.optional-dependencies.yaml;
+    tablib = [ tablib ] ++ tablib.optional-dependencies.xls ++ tablib.optional-dependencies.yaml;
   };
 
   env.DJANGO_SETTINGS_MODULE = "tests.app.settings";
diff --git a/pkgs/development/python-modules/django-tagging/default.nix b/pkgs/development/python-modules/django-tagging/default.nix
index ba62d65825e37..405e7c8069745 100644
--- a/pkgs/development/python-modules/django-tagging/default.nix
+++ b/pkgs/development/python-modules/django-tagging/default.nix
@@ -1,4 +1,8 @@
-{ buildPythonPackage, fetchPypi, django }:
+{
+  buildPythonPackage,
+  fetchPypi,
+  django,
+}:
 
 buildPythonPackage rec {
   pname = "django-tagging";
@@ -16,7 +20,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ django ];
 
   meta = {
-    description = "A generic tagging application for Django projects";
+    description = "Generic tagging application for Django projects";
     homepage = "https://github.com/Fantomas42/django-tagging";
   };
 }
diff --git a/pkgs/development/python-modules/django-taggit/default.nix b/pkgs/development/python-modules/django-taggit/default.nix
index eb1f4a994e12e..20f65e36f4657 100644
--- a/pkgs/development/python-modules/django-taggit/default.nix
+++ b/pkgs/development/python-modules/django-taggit/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, django
-, djangorestframework
-, python
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  django,
+  djangorestframework,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -19,17 +20,11 @@ buildPythonPackage rec {
     hash = "sha256-7c19seDzXDBOCCovYx3awuFu9SlgKVJOt5KvdDDKtMw=";
   };
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
-  pythonImportsCheck = [
-    "taggit"
-  ];
+  pythonImportsCheck = [ "taggit" ];
 
-  nativeCheckInputs = [
-    djangorestframework
-  ];
+  nativeCheckInputs = [ djangorestframework ];
 
   checkPhase = ''
     # prove we're running tests against installed package, not build dir
diff --git a/pkgs/development/python-modules/django-timezone-field/default.nix b/pkgs/development/python-modules/django-timezone-field/default.nix
index cfca863be096c..978ae2e8e39e4 100644
--- a/pkgs/development/python-modules/django-timezone-field/default.nix
+++ b/pkgs/development/python-modules/django-timezone-field/default.nix
@@ -1,58 +1,52 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, django
-, djangorestframework
-, pytz
-, pytest
-, pytest-lazy-fixture
-, python
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  django,
+  djangorestframework,
+  pytestCheckHook,
+  pytest-django,
+  pytest-lazy-fixture,
+  pytz,
 }:
 
 buildPythonPackage rec {
   pname = "django-timezone-field";
-  version = "5.1";
-  disabled = pythonOlder "3.5";
-  format = "pyproject";
+  version = "7.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "mfogel";
     repo = pname;
     rev = version;
-    hash = "sha256-FAYO8OEE/h4rsbC4Oc57ylWV7TqQ6DOd6/2M+mb/AsM=";
+    hash = "sha256-q06TuYkBA4z6tJdT3an6Z8o1i/o85XbYa1JYZBHC8lI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    django
-    djangorestframework
-    pytz
-  ];
+  dependencies = [ django ];
 
   pythonImportsCheck = [
-    "timezone_field"
+    # Requested setting USE_DEPRECATED_PYTZ, but settings are not configured.
+    #"timezone_field"
   ];
 
-  # Uses pytest.lazy_fixture directly which is broken in pytest-lazy-fixture
-  # https://github.com/TvoroG/pytest-lazy-fixture/issues/22
-  doCheck = false;
-
-  DJANGO_SETTINGS_MODULE = "tests.settings";
+  preCheck = ''
+    export DJANGO_SETTINGS_MODULE=tests.settings
+  '';
 
   nativeCheckInputs = [
-    pytest
+    djangorestframework
+    pytestCheckHook
+    pytest-django
     pytest-lazy-fixture
+    pytz
   ];
 
-  checkPhase = ''
-    ${python.interpreter} -m django test
-  '';
-
   meta = with lib; {
     description = "Django app providing database, form and serializer fields for pytz timezone objects";
     homepage = "https://github.com/mfogel/django-timezone-field";
diff --git a/pkgs/development/python-modules/django-treebeard/default.nix b/pkgs/development/python-modules/django-treebeard/default.nix
index 6b26ece7dd50e..fa687c99549f5 100644
--- a/pkgs/development/python-modules/django-treebeard/default.nix
+++ b/pkgs/development/python-modules/django-treebeard/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, django
-, fetchPypi
-, pytest-django
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchPypi,
+  pytest-django,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,18 +20,14 @@ buildPythonPackage rec {
     hash = "sha256-hG5GKQS0NxVfduBJB7pOSEgHFoVfiLiY30Eivc+9bpg=";
   };
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
   nativeCheckInputs = [
     pytest-django
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "treebeard"
-  ];
+  pythonImportsCheck = [ "treebeard" ];
 
   meta = with lib; {
     description = "Efficient tree implementations for Django";
diff --git a/pkgs/development/python-modules/django-two-factor-auth/default.nix b/pkgs/development/python-modules/django-two-factor-auth/default.nix
index dfb726a55b016..718d2206700b4 100644
--- a/pkgs/development/python-modules/django-two-factor-auth/default.nix
+++ b/pkgs/development/python-modules/django-two-factor-auth/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, buildPythonPackage
-, django
-, django-formtools
-, django-otp
-, django-phonenumber-field
-, fetchFromGitHub
-, phonenumbers
-, pydantic
-, pythonOlder
-, pythonRelaxDepsHook
-, qrcode
-, setuptools-scm
-, twilio
-, webauthn
+{
+  lib,
+  buildPythonPackage,
+  django,
+  django-formtools,
+  django-otp,
+  django-phonenumber-field,
+  fetchFromGitHub,
+  phonenumbers,
+  pydantic,
+  pythonOlder,
+  qrcode,
+  setuptools-scm,
+  twilio,
+  webauthn,
 }:
 
 buildPythonPackage rec {
@@ -30,13 +30,10 @@ buildPythonPackage rec {
   };
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools-scm
   ];
 
-  pythonRelaxDeps = [
-    "django-phonenumber-field"
-  ];
+  pythonRelaxDeps = [ "django-phonenumber-field" ];
 
   propagatedBuildInputs = [
     django
@@ -47,12 +44,8 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    call = [
-      twilio
-    ];
-    sms = [
-      twilio
-    ];
+    call = [ twilio ];
+    sms = [ twilio ];
     webauthn = [
       pydantic
       webauthn
@@ -60,9 +53,7 @@ buildPythonPackage rec {
     # yubikey = [
     #   django-otp-yubikey
     # ];
-    phonenumbers = [
-      phonenumbers
-    ];
+    phonenumbers = [ phonenumbers ];
     # phonenumberslite = [
     #   phonenumberslite
     # ];
@@ -71,9 +62,7 @@ buildPythonPackage rec {
   # Tests require internet connection
   doCheck = false;
 
-  pythonImportsCheck = [
-    "two_factor"
-  ];
+  pythonImportsCheck = [ "two_factor" ];
 
   meta = with lib; {
     description = "Complete Two-Factor Authentication for Django";
diff --git a/pkgs/development/python-modules/django-types/default.nix b/pkgs/development/python-modules/django-types/default.nix
index 908fb1bd0ed1f..bbcf238a10f21 100644
--- a/pkgs/development/python-modules/django-types/default.nix
+++ b/pkgs/development/python-modules/django-types/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, poetry-core
-, types-psycopg2
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  types-psycopg2,
 }:
 
 buildPythonPackage rec {
@@ -16,18 +17,14 @@ buildPythonPackage rec {
     hash = "sha256-WueYhhLPb7w1ewGLvDs6h4tl4EJ1zEbg011mpwja/xI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    types-psycopg2
-  ];
+  propagatedBuildInputs = [ types-psycopg2 ];
 
   meta = with lib; {
     description = "Type stubs for Django";
     homepage = "https://github.com/sbdchd/django-types";
     license = licenses.mit;
-    maintainers = with maintainers; [ thubrecht ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/django-versatileimagefield/default.nix b/pkgs/development/python-modules/django-versatileimagefield/default.nix
index 89fd6e85c954c..3545f011407c2 100644
--- a/pkgs/development/python-modules/django-versatileimagefield/default.nix
+++ b/pkgs/development/python-modules/django-versatileimagefield/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, django
-, pillow
-, python-magic
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  django,
+  pillow,
+  python-magic,
 }:
 
 buildPythonPackage rec {
@@ -15,7 +16,10 @@ buildPythonPackage rec {
     inherit pname version;
     hash = "sha256-M5DiAEgJjol78pmwNgdj0QzQiWZbeu+OupAO7Lrq0Ng=";
   };
-  propagatedBuildInputs = [ pillow python-magic ];
+  propagatedBuildInputs = [
+    pillow
+    python-magic
+  ];
 
   nativeCheckInputs = [ django ];
 
@@ -31,4 +35,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ mmai ];
   };
 }
-
diff --git a/pkgs/development/python-modules/django-vite/default.nix b/pkgs/development/python-modules/django-vite/default.nix
index b3527b9176b85..cb3160ed814a9 100644
--- a/pkgs/development/python-modules/django-vite/default.nix
+++ b/pkgs/development/python-modules/django-vite/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, django
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  django,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "django-vite";
-  version = "3.0.4";
+  version = "3.0.5";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -16,19 +17,15 @@ buildPythonPackage rec {
     owner = "MrBin99";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-rIT4WA45v353vSV56fBOa0euiuwnXWmhbxniAWPAkMo=";
+    hash = "sha256-v6jmtiQjTJegD7aeuu3HkuKnYWgMZ7TqW5onkSnc7Xs=";
   };
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
   # Package doesn’t have any tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "django_vite"
-  ];
+  pythonImportsCheck = [ "django_vite" ];
 
   meta = with lib; {
     description = "Integration of ViteJS in a Django project";
diff --git a/pkgs/development/python-modules/django-webpack-loader/default.nix b/pkgs/development/python-modules/django-webpack-loader/default.nix
index ea1d808aed5ae..30bd093ac061d 100644
--- a/pkgs/development/python-modules/django-webpack-loader/default.nix
+++ b/pkgs/development/python-modules/django-webpack-loader/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "django-webpack-loader";
-  version = "3.1.0";
+  version = "3.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-sGuDyoGe1Lu4WKtXuNjLZ6JcSlftgi3t1On+5MCXr9U=";
+    hash = "sha256-8Rt5cA0b/BKZExvfS6R5wewgD4OhQA4aL+tcK6e2+MQ=";
   };
 
   build-system = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/django-webpush/default.nix b/pkgs/development/python-modules/django-webpush/default.nix
index 5f04dccb1ca64..803de4851118a 100644
--- a/pkgs/development/python-modules/django-webpush/default.nix
+++ b/pkgs/development/python-modules/django-webpush/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, django
-, fetchFromGitHub
-, pythonOlder
-, pythonRelaxDepsHook
-, pywebpush
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchFromGitHub,
+  pythonOlder,
+  pywebpush,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -22,12 +22,9 @@ buildPythonPackage rec {
     hash = "sha256-Mwp53apdPpBcn7VfDbyDlvLAVAG65UUBhT0w9OKjKbU=";
   };
 
-  pythonRelaxDeps = [
-    "pywebpush"
-  ];
+  pythonRelaxDeps = [ "pywebpush" ];
 
   build-system = [
-    pythonRelaxDepsHook
     setuptools-scm
   ];
 
@@ -39,14 +36,12 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "webpush"
-  ];
+  pythonImportsCheck = [ "webpush" ];
 
   meta = with lib; {
     description = "Module for integrating and sending Web Push Notification in Django Application";
     homepage = "https://github.com/safwanrahman/django-webpush/";
-    changelog = "https://github.com/safwanrahman/django-webpush/releases/tag/${src.rev}";
+    changelog = "https://github.com/safwanrahman/django-webpush/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ derdennisop ];
   };
diff --git a/pkgs/development/python-modules/django-widget-tweaks/default.nix b/pkgs/development/python-modules/django-widget-tweaks/default.nix
index 547df7c7fdfbd..36fff55d31ce3 100644
--- a/pkgs/development/python-modules/django-widget-tweaks/default.nix
+++ b/pkgs/development/python-modules/django-widget-tweaks/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools-scm
-, django
-, python
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  django,
+  python,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,13 +22,9 @@ buildPythonPackage rec {
     hash = "sha256-/3UIsg75X3R9YGv9cEcoPw3IN2vkhUb+HCy68813d2E=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
   checkPhase = ''
     ${python.interpreter} -m django test --settings=tests.settings
diff --git a/pkgs/development/python-modules/django/3.nix b/pkgs/development/python-modules/django/3.nix
index af4f123ee01e2..b4d478e3d8bd4 100644
--- a/pkgs/development/python-modules/django/3.nix
+++ b/pkgs/development/python-modules/django/3.nix
@@ -1,16 +1,17 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, substituteAll
-, geos_3_9
-, gdal
-, asgiref
-, pytz
-, sqlparse
-, tzdata
-, pythonOlder
-, withGdal ? false
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  substituteAll,
+  geos_3_9,
+  gdal,
+  asgiref,
+  pytz,
+  sqlparse,
+  tzdata,
+  pythonOlder,
+  withGdal ? false,
 }:
 
 buildPythonPackage rec {
@@ -25,13 +26,14 @@ buildPythonPackage rec {
     hash = "sha256-fKOKeGVK7nI3hZTWPlFjbAS44oV09VBd/2MIlbVHJ3c=";
   };
 
-  patches = [
-    (substituteAll {
-      src = ./django_3_set_zoneinfo_dir.patch;
-      zoneinfo = tzdata + "/share/zoneinfo";
-    })
-  ] ++ lib.optional withGdal
-    (substituteAll {
+  patches =
+    [
+      (substituteAll {
+        src = ./django_3_set_zoneinfo_dir.patch;
+        zoneinfo = tzdata + "/share/zoneinfo";
+      })
+    ]
+    ++ lib.optional withGdal (substituteAll {
       src = ./django_3_set_geos_gdal_lib.patch;
       inherit geos_3_9;
       inherit gdal;
@@ -50,9 +52,12 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "django" ];
 
   meta = with lib; {
-    description = "A high-level Python Web framework";
+    description = "High-level Python Web framework";
     homepage = "https://www.djangoproject.com/";
     license = licenses.bsd3;
     maintainers = with maintainers; [ georgewhewell ];
+    knownVulnerabilities = [
+      "Support for Django 3.2 ended on 2024-04-01, see https://www.djangoproject.com/download/#supported-versions."
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/django/4.nix b/pkgs/development/python-modules/django/4.nix
index bc1fcbdfe9c8d..2d7bb6ce9dde2 100644
--- a/pkgs/development/python-modules/django/4.nix
+++ b/pkgs/development/python-modules/django/4.nix
@@ -1,98 +1,93 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, fetchpatch2
-, pythonAtLeast
-, pythonOlder
-, substituteAll
-
-# build
-, setuptools
-
-# patched in
-, geos
-, gdal
-, withGdal ? false
-
-# propagates
-, asgiref
-, sqlparse
-
-# extras
-, argon2-cffi
-, bcrypt
-
-# tests
-, aiosmtpd
-, docutils
-, geoip2
-, jinja2
-, numpy
-, pillow
-, pylibmc
-, pymemcache
-, python
-, pywatchman
-, pyyaml
-, pytz
-, redis
-, selenium
-, tblib
-, tzdata
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonAtLeast,
+  pythonOlder,
+  substituteAll,
+
+  # build
+  setuptools,
+
+  # patched in
+  geos,
+  gdal,
+  withGdal ? false,
+
+  # propagates
+  asgiref,
+  sqlparse,
+
+  # extras
+  argon2-cffi,
+  bcrypt,
+
+  # tests
+  aiosmtpd,
+  docutils,
+  geoip2,
+  jinja2,
+  numpy,
+  pillow,
+  pylibmc,
+  pymemcache,
+  python,
+  pywatchman,
+  pyyaml,
+  pytz,
+  redis,
+  selenium,
+  tblib,
+  tzdata,
 }:
 
 buildPythonPackage rec {
   pname = "django";
-  version = "4.2.11";
+  version = "4.2.16";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    pname = "Django";
-    inherit version;
-    hash = "sha256-bm/z2y2N0MmGtO7IVUyOT5GbXB/2KltDkMF6/y7W5cQ=";
+  src = fetchFromGitHub {
+    owner = "django";
+    repo = "django";
+    rev = "refs/tags/${version}";
+    hash = "sha256-VW/qfqOadivtU8Xg70FLqENtOV7GqJM4bR2Ik6Yag+o=";
   };
 
-  patches = [
-    (substituteAll {
-      src = ./django_4_set_zoneinfo_dir.patch;
-      zoneinfo = tzdata + "/share/zoneinfo";
-    })
-    # make sure the tests don't remove packages from our pythonpath
-    # and disable failing tests
-    ./django_4_tests.patch
-
-    (fetchpatch2 {
-      # https://github.com/django/django/pull/17979
-      name = "django-mime-utf8-surrogates.patch";
-      url = "https://github.com/django/django/commit/0d3ddcaf2c74638a32781f361d467af572ced95f.patch";
-      hash = "sha256-AoIFvehBsXIrzIlCsqOZ++RqtDFl/H+zXqA25OMQr7g=";
-    })
-
-  ] ++ lib.optionals withGdal [
-    (substituteAll {
-      src = ./django_4_set_geos_gdal_lib.patch;
-      geos = geos;
-      gdal = gdal;
-      extension = stdenv.hostPlatform.extensions.sharedLibrary;
-    })
-  ];
+  patches =
+    [
+      (substituteAll {
+        src = ./django_4_set_zoneinfo_dir.patch;
+        zoneinfo = tzdata + "/share/zoneinfo";
+      })
+      # make sure the tests don't remove packages from our pythonpath
+      # and disable failing tests
+      ./django_4_tests.patch
+    ]
+    ++ lib.optionals withGdal [
+      (substituteAll {
+        src = ./django_4_set_geos_gdal_lib.patch;
+        geos = geos;
+        gdal = gdal;
+        extension = stdenv.hostPlatform.extensions.sharedLibrary;
+      })
+    ];
 
-  postPatch = ''
-    substituteInPlace tests/utils_tests/test_autoreload.py \
-      --replace "/usr/bin/python" "${python.interpreter}"
-  '' + lib.optionalString (pythonAtLeast "3.12" && stdenv.hostPlatform.system == "aarch64-linux") ''
-    # Test regression after xz was reverted from 5.6.0 to 5.4.6
-    # https://hydra.nixos.org/build/254630990
-    substituteInPlace tests/view_tests/tests/test_debug.py \
-      --replace-fail "test_files" "dont_test_files"
-  '';
+  postPatch =
+    ''
+      substituteInPlace tests/utils_tests/test_autoreload.py \
+        --replace "/usr/bin/python" "${python.interpreter}"
+    ''
+    + lib.optionalString (pythonAtLeast "3.12" && stdenv.hostPlatform.system == "aarch64-linux") ''
+      # Test regression after xz was reverted from 5.6.0 to 5.4.6
+      # https://hydra.nixos.org/build/254630990
+      substituteInPlace tests/view_tests/tests/test_debug.py \
+        --replace-fail "test_files" "dont_test_files"
+    '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     asgiref
@@ -100,12 +95,8 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    argon2 = [
-      argon2-cffi
-    ];
-    bcrypt = [
-      bcrypt
-    ];
+    argon2 = [ argon2-cffi ];
+    bcrypt = [ bcrypt ];
   };
 
   nativeCheckInputs = [
@@ -127,7 +118,7 @@ buildPythonPackage rec {
     tzdata
   ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
 
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   preCheck = ''
     # make sure the installed library gets imported
@@ -151,7 +142,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     changelog = "https://docs.djangoproject.com/en/${lib.versions.majorMinor version}/releases/${version}/";
-    description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design.";
+    description = "High-level Python Web framework that encourages rapid development and clean, pragmatic design";
     mainProgram = "django-admin";
     homepage = "https://www.djangoproject.com";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/django/5.nix b/pkgs/development/python-modules/django/5.nix
index fc4ba20245fce..6cf85445c4020 100644
--- a/pkgs/development/python-modules/django/5.nix
+++ b/pkgs/development/python-modules/django/5.nix
@@ -1,99 +1,89 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, fetchpatch2
-, pythonAtLeast
-, pythonOlder
-, substituteAll
-
-# build-system
-, setuptools
-
-# patched in
-, geos
-, gdal
-, withGdal ? false
-
-# dependencies
-, asgiref
-, sqlparse
-
-# optional-dependencies
-, argon2-cffi
-, bcrypt
-
-# tests
-, aiosmtpd
-, docutils
-, geoip2
-, jinja2
-, numpy
-, pillow
-, pylibmc
-, pymemcache
-, python
-, pywatchman
-, pyyaml
-, pytz
-, redis
-, selenium
-, tblib
-, tzdata
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  substituteAll,
+
+  # build-system
+  setuptools,
+
+  # patched in
+  geos,
+  gdal,
+  withGdal ? false,
+
+  # dependencies
+  asgiref,
+  sqlparse,
+
+  # optional-dependencies
+  argon2-cffi,
+  bcrypt,
+
+  # tests
+  aiosmtpd,
+  docutils,
+  geoip2,
+  jinja2,
+  numpy,
+  pillow,
+  pylibmc,
+  pymemcache,
+  python,
+  pywatchman,
+  pyyaml,
+  pytz,
+  redis,
+  selenium,
+  tblib,
+  tzdata,
 }:
 
 buildPythonPackage rec {
   pname = "django";
-  version = "5.0.4";
+  version = "5.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
 
-  src = fetchPypi {
-    pname = "Django";
-    inherit version;
-    hash = "sha256-S9AajIMLt3qKOw59iyW4h+U2rReoG6Lc5UdhNcczEr0=";
+  src = fetchFromGitHub {
+    owner = "django";
+    repo = "django";
+    rev = "refs/tags/${version}";
+    hash = "sha256-4w5MSu3xdF9Pl0iRcD6bOgUF0tLMiZdCWt3JKsx/Rqc=";
   };
 
-  patches = [
-    (substituteAll {
-      src = ./django_5_set_zoneinfo_dir.patch;
-      zoneinfo = tzdata + "/share/zoneinfo";
-    })
-    # prevent tests from messing with our pythonpath
-    ./django_5_tests_pythonpath.patch
-    # disable test that excpects timezone issues
-    ./django_5_disable_failing_tests.patch
-
-    (fetchpatch2 {
-      # https://github.com/django/django/pull/17979
-      name = "django-mime-utf8-surrogates.patch";
-      url = "https://github.com/django/django/commit/b231bcd19e57267ce1fc21d42d46f0b65fdcfcf8.patch";
-      hash = "sha256-HhmRwi24VkoPoh+NygAThCoMywoMwrLijU4ZsDfVU34=";
-    })
-
-  ] ++ lib.optionals withGdal [
-    (substituteAll {
-      src = ./django_5_set_geos_gdal_lib.patch;
-      geos = geos;
-      gdal = gdal;
-      extension = stdenv.hostPlatform.extensions.sharedLibrary;
-    })
-  ];
+  patches =
+    [
+      (substituteAll {
+        src = ./django_5_set_zoneinfo_dir.patch;
+        zoneinfo = tzdata + "/share/zoneinfo";
+      })
+      # prevent tests from messing with our pythonpath
+      ./django_5_tests_pythonpath.patch
+      # disable test that excpects timezone issues
+      ./django_5_disable_failing_tests.patch
+    ]
+    ++ lib.optionals withGdal [
+      (substituteAll {
+        src = ./django_5_set_geos_gdal_lib.patch;
+        geos = geos;
+        gdal = gdal;
+        extension = stdenv.hostPlatform.extensions.sharedLibrary;
+      })
+    ];
 
   postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "setuptools>=61.0.0,<69.3.0" setuptools
+
     substituteInPlace tests/utils_tests/test_autoreload.py \
-      --replace "/usr/bin/python" "${python.interpreter}"
-  '' + lib.optionalString (pythonAtLeast "3.12" && stdenv.hostPlatform.system == "aarch64-linux") ''
-    # Test regression after xz was reverted from 5.6.0 to 5.4.6
-    # https://hydra.nixos.org/build/254532197
-    substituteInPlace tests/view_tests/tests/test_debug.py \
-      --replace-fail "test_files" "dont_test_files"
+      --replace-fail "/usr/bin/python" "${python.interpreter}"
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     asgiref
@@ -101,12 +91,8 @@ buildPythonPackage rec {
   ];
 
   optional-dependencies = {
-    argon2 = [
-      argon2-cffi
-    ];
-    bcrypt = [
-      bcrypt
-    ];
+    argon2 = [ argon2-cffi ];
+    bcrypt = [ bcrypt ];
   };
 
   nativeCheckInputs = [
@@ -128,14 +114,19 @@ buildPythonPackage rec {
     tzdata
   ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   preCheck = ''
     # make sure the installed library gets imported
     rm -rf django
 
+    # fails to import github_links from docs/_ext/github_links.py
+    rm tests/sphinx/test_github_links.py
+
     # provide timezone data, works only on linux
     export TZDIR=${tzdata}/${python.sitePackages}/tzdata/zoneinfo
+
+    export PYTHONPATH=$PWD/docs/_ext:$PYTHONPATH
   '';
 
   checkPhase = ''
@@ -152,7 +143,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     changelog = "https://docs.djangoproject.com/en/${lib.versions.majorMinor version}/releases/${version}/";
-    description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design.";
+    description = "High-level Python Web framework that encourages rapid development and clean, pragmatic design";
     homepage = "https://www.djangoproject.com";
     license = licenses.bsd3;
     maintainers = with maintainers; [ hexa ];
diff --git a/pkgs/development/python-modules/djangoql/default.nix b/pkgs/development/python-modules/djangoql/default.nix
index 52316ee4444ec..198dea2ec53b5 100644
--- a/pkgs/development/python-modules/djangoql/default.nix
+++ b/pkgs/development/python-modules/djangoql/default.nix
@@ -1,5 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi, python
-, django, ply }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  django,
+  ply,
+}:
 
 buildPythonPackage rec {
   pname = "djangoql";
diff --git a/pkgs/development/python-modules/djangorestframework-camel-case/default.nix b/pkgs/development/python-modules/djangorestframework-camel-case/default.nix
index c9bfc512b7386..1c1a0c14740da 100644
--- a/pkgs/development/python-modules/djangorestframework-camel-case/default.nix
+++ b/pkgs/development/python-modules/djangorestframework-camel-case/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, djangorestframework
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  djangorestframework,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -15,13 +16,9 @@ buildPythonPackage rec {
     hash = "sha256-za51hGZIq7ZYXHRwY5odL7Bk3EX46LYqqlC+fxp6YfQ=";
   };
 
-  propagatedBuildInputs = [
-    djangorestframework
-  ];
+  propagatedBuildInputs = [ djangorestframework ];
 
-  nativeCheckInputs = [
-    six
-  ];
+  nativeCheckInputs = [ six ];
 
   # tests are only on GitHub but there are no tags
   # https://github.com/vbabiy/djangorestframework-camel-case/issues/116
@@ -33,6 +30,6 @@ buildPythonPackage rec {
     description = "Camel case JSON support for Django REST framework";
     homepage = "https://github.com/vbabiy/djangorestframework-camel-case";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/djangorestframework-dataclasses/default.nix b/pkgs/development/python-modules/djangorestframework-dataclasses/default.nix
index 69dc84e0c1993..3fa7cbb024906 100644
--- a/pkgs/development/python-modules/djangorestframework-dataclasses/default.nix
+++ b/pkgs/development/python-modules/djangorestframework-dataclasses/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, djangorestframework
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  djangorestframework,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -17,20 +18,16 @@ buildPythonPackage rec {
     hash = "sha256-12EdSaGpsX0qDXgJ2QWYj6qAUbsrITQjWowk+gJFwwY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   postPatch = ''
     patchShebangs manage.py
   '';
 
-  propagatedBuildInputs = [
-    djangorestframework
-  ];
+  propagatedBuildInputs = [ djangorestframework ];
 
   checkPhase = ''
-   ./manage.py test
+    ./manage.py test
   '';
 
   pythonImportsCheck = [ "rest_framework_dataclasses" ];
@@ -39,6 +36,6 @@ buildPythonPackage rec {
     description = " Dataclasses serializer for Django REST framework";
     homepage = "https://github.com/oxan/djangorestframework-dataclasses";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/djangorestframework-guardian/default.nix b/pkgs/development/python-modules/djangorestframework-guardian/default.nix
index 4e8a941d411f1..4d4a1d45fc9c1 100644
--- a/pkgs/development/python-modules/djangorestframework-guardian/default.nix
+++ b/pkgs/development/python-modules/djangorestframework-guardian/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
-, django-guardian
-, djangorestframework
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  django-guardian,
+  djangorestframework,
 }:
 
 buildPythonPackage rec {
@@ -38,7 +39,7 @@ buildPythonPackage rec {
     description = "Django-guardian support for Django REST Framework";
     homepage = "https://github.com/rpkilby/django-rest-framework-guardian";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     # unmaintained, last compatible version is 3.x, use djangorestframework-guardian2 instead
     broken = lib.versionAtLeast django.version "4";
   };
diff --git a/pkgs/development/python-modules/djangorestframework-guardian2/default.nix b/pkgs/development/python-modules/djangorestframework-guardian2/default.nix
index d2e7ea08af8ae..4356d82262351 100644
--- a/pkgs/development/python-modules/djangorestframework-guardian2/default.nix
+++ b/pkgs/development/python-modules/djangorestframework-guardian2/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django-guardian
-, djangorestframework
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django-guardian,
+  djangorestframework,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/djangorestframework-recursive/default.nix b/pkgs/development/python-modules/djangorestframework-recursive/default.nix
index e51fa173a8036..cdb68b5164f3a 100644
--- a/pkgs/development/python-modules/djangorestframework-recursive/default.nix
+++ b/pkgs/development/python-modules/djangorestframework-recursive/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, django
-, djangorestframework
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  django,
+  djangorestframework,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
@@ -25,14 +26,12 @@ buildPythonPackage rec {
   # incompatible with newer django versions
   doCheck = false;
 
-  pythonImportsCheck = [
-    "rest_framework_recursive"
-  ];
+  pythonImportsCheck = [ "rest_framework_recursive" ];
 
   meta = with lib; {
-    description = " Recursive Serialization for Django REST framework ";
+    description = " Recursive Serialization for Django REST framework";
     homepage = "https://github.com/heywbj/django-rest-framework-recursive";
     license = licenses.isc;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/djangorestframework-simplejwt/default.nix b/pkgs/development/python-modules/djangorestframework-simplejwt/default.nix
index 043731f0054c4..abf6c29ed81b2 100644
--- a/pkgs/development/python-modules/djangorestframework-simplejwt/default.nix
+++ b/pkgs/development/python-modules/djangorestframework-simplejwt/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, django
-, djangorestframework
-, fetchPypi
-, pyjwt
-, python-jose
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  django,
+  djangorestframework,
+  fetchPypi,
+  pyjwt,
+  python-jose,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-bEvTdTdEC8Q5Vk6/fWCF50xUEUhRlwc/UI69+jS8n64=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     django
@@ -34,20 +33,14 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    python-jose = [
-      python-jose
-    ];
-    crypto = [
-      cryptography
-    ];
+    python-jose = [ python-jose ];
+    crypto = [ cryptography ];
   };
 
   # Test raises django.core.exceptions.ImproperlyConfigured
   doCheck = false;
 
-  pythonImportsCheck = [
-    "rest_framework_simplejwt"
-  ];
+  pythonImportsCheck = [ "rest_framework_simplejwt" ];
 
   meta = with lib; {
     description = "JSON Web Token authentication plugin for Django REST Framework";
diff --git a/pkgs/development/python-modules/djangorestframework-stubs/default.nix b/pkgs/development/python-modules/djangorestframework-stubs/default.nix
index 6cb2e76e857ca..19e771ebbeec2 100644
--- a/pkgs/development/python-modules/djangorestframework-stubs/default.nix
+++ b/pkgs/development/python-modules/djangorestframework-stubs/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, buildPythonPackage
-, django-stubs
-, fetchFromGitHub
-, mypy
-, py
-, coreapi
-, pytest-mypy-plugins
-, pytestCheckHook
-, pythonOlder
-, requests
-, types-pyyaml
-, setuptools
-, types-markdown
-, types-requests
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  django-stubs,
+  fetchFromGitHub,
+  mypy,
+  py,
+  coreapi,
+  pytest-mypy-plugins,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  types-pyyaml,
+  setuptools,
+  types-markdown,
+  types-requests,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "djangorestframework-stubs";
-  version = "3.14.5";
+  version = "3.15.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -27,12 +28,10 @@ buildPythonPackage rec {
     owner = "typeddjango";
     repo = "djangorestframework-stubs";
     rev = "refs/tags/${version}";
-    hash = "sha256-AOhNlhTZ6Upevb/7Z1sUQoIkIlwYlIcf1CC+Ag7H4bg=";
+    hash = "sha256-m9KxC3dGe+uRB3YIykV/SCOHeItRYNKopF9fqCd10Vk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     django-stubs
@@ -43,15 +42,9 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    compatible-mypy = [
-      mypy
-    ] ++ django-stubs.optional-dependencies.compatible-mypy;
-    coreapi = [
-      coreapi
-    ];
-    markdown = [
-      types-markdown
-    ];
+    compatible-mypy = [ mypy ] ++ django-stubs.optional-dependencies.compatible-mypy;
+    coreapi = [ coreapi ];
+    markdown = [ types-markdown ];
   };
 
   nativeCheckInputs = [
@@ -63,9 +56,7 @@ buildPythonPackage rec {
   # Upstream recommends mypy > 1.7 which we don't have yet, thus all testsare failing with 3.14.5 and below
   doCheck = false;
 
-  pythonImportsCheck = [
-    "rest_framework-stubs"
-  ];
+  pythonImportsCheck = [ "rest_framework-stubs" ];
 
   meta = with lib; {
     description = "PEP-484 stubs for Django REST Framework";
@@ -75,4 +66,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ elohmeier ];
   };
 }
-
diff --git a/pkgs/development/python-modules/djangorestframework/default.nix b/pkgs/development/python-modules/djangorestframework/default.nix
index 8bec94e665198..108ec71a29784 100644
--- a/pkgs/development/python-modules/djangorestframework/default.nix
+++ b/pkgs/development/python-modules/djangorestframework/default.nix
@@ -1,49 +1,76 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, coreapi
-, django
-, django-guardian
-, pythonOlder
-, pytest-django
-, pytest7CheckHook
-, pytz
-, pyyaml
-, uritemplate
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  django,
+  pytz,
+
+  # optional-dependencies
+  coreapi,
+  coreschema,
+  django-guardian,
+  inflection,
+  psycopg2,
+  pygments,
+  pyyaml,
+
+  # tests
+  pytestCheckHook,
+  pytest-django,
 }:
 
 buildPythonPackage rec {
   pname = "djangorestframework";
-  version = "3.14.0";
-  format = "setuptools";
+  version = "3.15.2";
+  pyproject = true;
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "encode";
     repo = "django-rest-framework";
     rev = version;
-    hash = "sha256-Fnj0n3NS3SetOlwSmGkLE979vNJnYE6i6xwVBslpNz4=";
+    hash = "sha256-ne0sk4m11Ha77tNmCsdhj7QVmCkYj5GjLn/dLF4qxU8=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     django
-    pytz
-  ];
+    pygments
+  ] ++ (lib.optional (lib.versionOlder django.version "5.0.0") pytz);
+
+  optional-dependencies = {
+    complete = [
+      coreapi
+      coreschema
+      django-guardian
+      inflection
+      psycopg2
+      pygments
+      pyyaml
+    ];
+  };
 
   nativeCheckInputs = [
     pytest-django
-    pytest7CheckHook
+    pytestCheckHook
+  ] ++ optional-dependencies.complete;
 
-    # optional tests
-    coreapi
-    django-guardian
-    pyyaml
-    uritemplate
+  disabledTests = [
+    # https://github.com/encode/django-rest-framework/issues/9422
+    "test_urlpatterns"
   ];
 
   pythonImportsCheck = [ "rest_framework" ];
 
   meta = with lib; {
+    changelog = "https://github.com/encode/django-rest-framework/releases/tag/3.15.1";
     description = "Web APIs for Django, made easy";
     homepage = "https://www.django-rest-framework.org/";
     maintainers = with maintainers; [ desiderius ];
diff --git a/pkgs/development/python-modules/djmail/default.nix b/pkgs/development/python-modules/djmail/default.nix
index 28e9b88d3c32b..432e09e41aeee 100644
--- a/pkgs/development/python-modules/djmail/default.nix
+++ b/pkgs/development/python-modules/djmail/default.nix
@@ -1,6 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi
-, glibcLocales
-, celery, django, psycopg2
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  glibcLocales,
+  celery,
+  django,
+  psycopg2,
 }:
 
 buildPythonPackage rec {
@@ -23,7 +28,11 @@ buildPythonPackage rec {
 
   LC_ALL = "en_US.UTF-8";
 
-  propagatedBuildInputs = [ celery django psycopg2 ];
+  propagatedBuildInputs = [
+    celery
+    django
+    psycopg2
+  ];
 
   # django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
   doCheck = false;
diff --git a/pkgs/development/python-modules/dkimpy/default.nix b/pkgs/development/python-modules/dkimpy/default.nix
index 6b639f8cc8c3e..b22d1cbc884e0 100644
--- a/pkgs/development/python-modules/dkimpy/default.nix
+++ b/pkgs/development/python-modules/dkimpy/default.nix
@@ -1,18 +1,32 @@
-{ lib, fetchPypi, openssl, buildPythonPackage
-, pytest, dnspython, pynacl, authres, python }:
+{
+  lib,
+  fetchPypi,
+  openssl,
+  buildPythonPackage,
+  pytest,
+  dnspython,
+  pynacl,
+  authres,
+  python,
+}:
 
 buildPythonPackage rec {
   pname = "dkimpy";
-  version = "1.1.5";
+  version = "1.1.8";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-mmZ/hmS3Lrn4qhJQsHV8w5gqto9wxIrzkxe1jPYvLXU=";
-};
+    hash = "sha256-tfYPtHu/XY12LxNLzqDDiOumtJg0KmgqIfFoZUUJS3c=";
+  };
 
   nativeCheckInputs = [ pytest ];
-  propagatedBuildInputs =  [ openssl dnspython pynacl authres ];
+  propagatedBuildInputs = [
+    openssl
+    dnspython
+    pynacl
+    authres
+  ];
 
   patchPhase = ''
     substituteInPlace dkim/dknewkey.py --replace \
diff --git a/pkgs/development/python-modules/dlib/build-cores.patch b/pkgs/development/python-modules/dlib/build-cores.patch
index eebc69a330fa0..072519975c433 100644
--- a/pkgs/development/python-modules/dlib/build-cores.patch
+++ b/pkgs/development/python-modules/dlib/build-cores.patch
@@ -1,15 +1,17 @@
 diff --git a/setup.py b/setup.py
-index 0c8d8f16..565ef8ef 100644
+index 219583b..3ca5f88 100644
 --- a/setup.py
 +++ b/setup.py
-@@ -172,21 +172,7 @@ class CMakeBuild(build_ext):
+@@ -170,23 +170,7 @@ class CMakeBuild(build_ext):
          subprocess.check_call(cmake_build, cwd=build_folder)
  
  def num_available_cpu_cores(ram_per_build_process_in_gb):
 -    if 'TRAVIS' in os.environ and os.environ['TRAVIS']=='true':
 -        # When building on travis-ci, just use 2 cores since travis-ci limits
 -        # you to that regardless of what the hardware might suggest.
--        return 2 
+-        return 2
+-    elif 'CMAKE_BUILD_PARALLEL_LEVEL' in os.environ and os.environ['CMAKE_BUILD_PARALLEL_LEVEL'].isnumeric():
+-        return int(os.environ['CMAKE_BUILD_PARALLEL_LEVEL'])
 -    try:
 -        mem_bytes = os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES')  
 -        mem_gib = mem_bytes/(1024.**3)
diff --git a/pkgs/development/python-modules/dlib/default.nix b/pkgs/development/python-modules/dlib/default.nix
index 224c8ccd4e15c..f66fe4bf484f2 100644
--- a/pkgs/development/python-modules/dlib/default.nix
+++ b/pkgs/development/python-modules/dlib/default.nix
@@ -1,18 +1,32 @@
-{ stdenv, buildPythonPackage, dlib, python, pytest, more-itertools
-, sse4Support ? stdenv.hostPlatform.sse4_1Support
-, avxSupport ? stdenv.hostPlatform.avxSupport
+{
+  stdenv,
+  buildPythonPackage,
+  dlib,
+  python,
+  pytest,
+  more-itertools,
+  sse4Support ? stdenv.hostPlatform.sse4_1Support,
+  avxSupport ? stdenv.hostPlatform.avxSupport,
 }:
 
 buildPythonPackage {
-  inherit (dlib) pname version src nativeBuildInputs buildInputs meta;
+  inherit (dlib)
+    pname
+    version
+    src
+    nativeBuildInputs
+    buildInputs
+    meta
+    ;
 
   format = "setuptools";
 
-  patches = [
-    ./build-cores.patch
-  ];
+  patches = [ ./build-cores.patch ];
 
-  nativeCheckInputs = [ pytest more-itertools ];
+  nativeCheckInputs = [
+    pytest
+    more-itertools
+  ];
 
   postPatch = ''
     substituteInPlace setup.py \
diff --git a/pkgs/development/python-modules/dlinfo/default.nix b/pkgs/development/python-modules/dlinfo/default.nix
index b51c71913f5f0..1b774b8e85c03 100644
--- a/pkgs/development/python-modules/dlinfo/default.nix
+++ b/pkgs/development/python-modules/dlinfo/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     sha256 = "5f6f43b47f3aa5fe12bd347cf536dc8fca6068c61a0a260e408bec7f6eb4bd38";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "dlinfo" ];
 
@@ -32,6 +29,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/cloudflightio/python-dlinfo";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ dotlambda ];
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/dllogger/default.nix b/pkgs/development/python-modules/dllogger/default.nix
index 2ae7bd683e01e..df0b7cec7906b 100644
--- a/pkgs/development/python-modules/dllogger/default.nix
+++ b/pkgs/development/python-modules/dllogger/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -38,7 +39,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "dllogger" ];
 
   meta = with lib; {
-    description = "A logging tool for deep learning";
+    description = "Logging tool for deep learning";
     homepage = "https://github.com/NVIDIA/dllogger";
     changelog = "https://github.com/NVIDIA/dllogger/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/dlms-cosem/default.nix b/pkgs/development/python-modules/dlms-cosem/default.nix
index a285a538fa08f..18a1031abb636 100644
--- a/pkgs/development/python-modules/dlms-cosem/default.nix
+++ b/pkgs/development/python-modules/dlms-cosem/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, asn1crypto
-, attrs
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, pyserial
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, setuptools
-, structlog
-, typing-extensions
+{
+  lib,
+  asn1crypto,
+  attrs,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  pyserial,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  setuptools,
+  structlog,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     hash = "sha256-NeTaU8i18Zb39Y2JnYzr87Ozt7Rj074xusL4xaNe0q0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     asn1crypto
@@ -41,13 +40,9 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dlms_cosem"
-  ];
+  pythonImportsCheck = [ "dlms_cosem" ];
 
   meta = with lib; {
     description = "Python module to parse DLMS/COSEM";
diff --git a/pkgs/development/python-modules/dlx/default.nix b/pkgs/development/python-modules/dlx/default.nix
index c8f89b7db7c1b..3917dd4540ccd 100644
--- a/pkgs/development/python-modules/dlx/default.nix
+++ b/pkgs/development/python-modules/dlx/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/dm-control/default.nix b/pkgs/development/python-modules/dm-control/default.nix
new file mode 100644
index 0000000000000..567b79ab9bd79
--- /dev/null
+++ b/pkgs/development/python-modules/dm-control/default.nix
@@ -0,0 +1,93 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  absl-py,
+  mujoco,
+  pyparsing,
+  setuptools,
+
+  # dependencies
+  dm-env,
+  dm-tree,
+  fsspec,
+  glfw,
+  h5py,
+  lxml,
+  mock,
+  numpy,
+  pillow,
+  protobuf,
+  pyopengl,
+  requests,
+  scipy,
+  tqdm,
+  etils,
+}:
+
+buildPythonPackage rec {
+  pname = "dm-control";
+  version = "1.0.22";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "google-deepmind";
+    repo = "dm_control";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Tw4VZmunSeb0H7ltPnLCEidSZ2cvcoWLei1DB32vWpw=";
+  };
+
+  build-system = [
+    absl-py
+    mujoco
+    pyparsing
+    setuptools
+  ];
+
+  pythonRemoveDeps = [
+    # Unpackaged
+    "labmaze"
+  ];
+
+  dependencies = [
+    absl-py
+    dm-env
+    dm-tree
+    fsspec
+    glfw
+    h5py
+    lxml
+    mock
+    mujoco
+    numpy
+    pillow
+    protobuf
+    pyopengl
+    pyparsing
+    requests
+    scipy
+    setuptools
+    tqdm
+  ] ++ etils.optional-dependencies.epath;
+
+  pythonImportsCheck = [ "dm_control" ];
+
+  # The installed library clashes with the `dm_control` directory remaining in the source path.
+  # Usually, we get around this by `rm -rf` the python source files to ensure that the installed package is used.
+  # Here, we cannot do that as it would also remove the tests which are also in the `dm_control` directory.
+  # See https://github.com/google-deepmind/dm_control/issues/6
+  doCheck = false;
+
+  meta = {
+    changelog = "https://github.com/google-deepmind/dm_control/releases/tag/${version}";
+    description = "Google DeepMind's software stack for physics-based simulation and Reinforcement Learning environments, using MuJoCo";
+    homepage = "https://github.com/google-deepmind/dm_control";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/pkgs/development/python-modules/dm-env/default.nix b/pkgs/development/python-modules/dm-env/default.nix
index a11d35495575e..2b751b345cf88 100644
--- a/pkgs/development/python-modules/dm-env/default.nix
+++ b/pkgs/development/python-modules/dm-env/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, dm-tree
-, numpy
-, absl-py
-, pytestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  dm-tree,
+  numpy,
+  absl-py,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,9 @@ buildPythonPackage rec {
     numpy
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dm_env"
-  ];
+  pythonImportsCheck = [ "dm_env" ];
 
   meta = with lib; {
     description = "Pure Python client for Apache Kafka";
diff --git a/pkgs/development/python-modules/dm-haiku/default.nix b/pkgs/development/python-modules/dm-haiku/default.nix
index e35baffb40669..e5f44feb69c56 100644
--- a/pkgs/development/python-modules/dm-haiku/default.nix
+++ b/pkgs/development/python-modules/dm-haiku/default.nix
@@ -1,116 +1,117 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, absl-py
-, flax
-, jaxlib
-, jmp
-, numpy
-, tabulate
-, pytest-xdist
-, pytestCheckHook
-, bsuite
-, chex
-, cloudpickle
-, dill
-, dm-env
-, dm-tree
-, optax
-, rlax
-, tensorflow
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  absl-py,
+  flax,
+  jaxlib,
+  jmp,
+  numpy,
+  tabulate,
+  pytest-xdist,
+  pytestCheckHook,
+  bsuite,
+  chex,
+  cloudpickle,
+  dill,
+  dm-env,
+  dm-tree,
+  optax,
+  rlax,
+  tensorflow,
 }:
 
-let dm-haiku = buildPythonPackage rec {
-  pname = "dm-haiku";
-  version = "0.0.12";
-  format = "setuptools";
+let
+  dm-haiku = buildPythonPackage rec {
+    pname = "dm-haiku";
+    version = "0.0.12";
+    format = "setuptools";
 
-  src = fetchFromGitHub {
-    owner = "deepmind";
-    repo = "dm-haiku";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-aJRXlMq4CNMH3ZSTDP8MgnVltdSc8l5raw4//KccL48=";
-  };
+    src = fetchFromGitHub {
+      owner = "deepmind";
+      repo = "dm-haiku";
+      rev = "refs/tags/v${version}";
+      hash = "sha256-aJRXlMq4CNMH3ZSTDP8MgnVltdSc8l5raw4//KccL48=";
+    };
 
-  patches = [
-    # https://github.com/deepmind/dm-haiku/pull/672
-    (fetchpatch {
-      name = "fix-find-namespace-packages.patch";
-      url = "https://github.com/deepmind/dm-haiku/commit/728031721f77d9aaa260bba0eddd9200d107ba5d.patch";
-      hash = "sha256-qV94TdJnphlnpbq+B0G3KTx5CFGPno+8FvHyu/aZeQE=";
-    })
-  ];
+    patches = [
+      # https://github.com/deepmind/dm-haiku/pull/672
+      (fetchpatch {
+        name = "fix-find-namespace-packages.patch";
+        url = "https://github.com/deepmind/dm-haiku/commit/728031721f77d9aaa260bba0eddd9200d107ba5d.patch";
+        hash = "sha256-qV94TdJnphlnpbq+B0G3KTx5CFGPno+8FvHyu/aZeQE=";
+      })
+    ];
 
-  propagatedBuildInputs = [
-    absl-py
-    flax
-    jaxlib
-    jmp
-    numpy
-    tabulate
-  ];
+    propagatedBuildInputs = [
+      absl-py
+      flax
+      jaxlib
+      jmp
+      numpy
+      tabulate
+    ];
 
-  pythonImportsCheck = [
-    "haiku"
-  ];
+    pythonImportsCheck = [ "haiku" ];
 
-  nativeCheckInputs = [
-    bsuite
-    chex
-    cloudpickle
-    dill
-    dm-env
-    dm-haiku
-    dm-tree
-    jaxlib
-    optax
-    pytest-xdist
-    pytestCheckHook
-    rlax
-    tensorflow
-  ];
+    nativeCheckInputs = [
+      bsuite
+      chex
+      cloudpickle
+      dill
+      dm-env
+      dm-haiku
+      dm-tree
+      jaxlib
+      optax
+      pytest-xdist
+      pytestCheckHook
+      rlax
+      tensorflow
+    ];
 
-  disabledTests = [
-    # See https://github.com/deepmind/dm-haiku/issues/366.
-    "test_jit_Recurrent"
+    disabledTests = [
+      # See https://github.com/deepmind/dm-haiku/issues/366.
+      "test_jit_Recurrent"
 
-    # Assertion errors
-    "testShapeChecking0"
-    "testShapeChecking1"
+      # Assertion errors
+      "testShapeChecking0"
+      "testShapeChecking1"
 
-    # This test requires a more recent version of tensorflow. The current one (2.13) is not enough.
-    "test_reshape_convert"
+      # This test requires a more recent version of tensorflow. The current one (2.13) is not enough.
+      "test_reshape_convert"
 
-    # This test requires JAX support for double precision (64bit), but enabling this causes several
-    # other tests to fail.
-    # https://jax.readthedocs.io/en/latest/notebooks/Common_Gotchas_in_JAX.html#double-64bit-precision
-    "test_doctest_haiku.experimental"
-  ];
+      # This test requires JAX support for double precision (64bit), but enabling this causes several
+      # other tests to fail.
+      # https://jax.readthedocs.io/en/latest/notebooks/Common_Gotchas_in_JAX.html#double-64bit-precision
+      "test_doctest_haiku.experimental"
+    ];
 
-  disabledTestPaths = [
-    # Those tests requires a more recent version of tensorflow. The current one (2.13) is not enough.
-    "haiku/_src/integration/jax2tf_test.py"
-  ];
+    disabledTestPaths = [
+      # Those tests requires a more recent version of tensorflow. The current one (2.13) is not enough.
+      "haiku/_src/integration/jax2tf_test.py"
+    ];
 
-  doCheck = false;
+    doCheck = false;
 
-  # check in passthru.tests.pytest to escape infinite recursion with bsuite
-  passthru.tests.pytest = dm-haiku.overridePythonAttrs (_: {
-    pname = "${pname}-tests";
-    doCheck = true;
+    # check in passthru.tests.pytest to escape infinite recursion with bsuite
+    passthru.tests.pytest = dm-haiku.overridePythonAttrs (_: {
+      pname = "${pname}-tests";
+      doCheck = true;
 
-    # We don't have to install because the only purpose
-    # of this passthru test is to, well, test.
-    # This fixes having to set `catchConflicts` to false.
-    dontInstall = true;
-  });
+      # We don't have to install because the only purpose
+      # of this passthru test is to, well, test.
+      # This fixes having to set `catchConflicts` to false.
+      dontInstall = true;
+    });
 
-  meta = with lib; {
-    description = "Haiku is a simple neural network library for JAX developed by some of the authors of Sonnet.";
-    homepage = "https://github.com/deepmind/dm-haiku";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ ndl ];
+    meta = with lib; {
+      description = "Haiku is a simple neural network library for JAX developed by some of the authors of Sonnet";
+      homepage = "https://github.com/deepmind/dm-haiku";
+      license = licenses.asl20;
+      maintainers = with maintainers; [ ndl ];
+    };
   };
-};
-in dm-haiku
+in
+dm-haiku
diff --git a/pkgs/development/python-modules/dm-sonnet/default.nix b/pkgs/development/python-modules/dm-sonnet/default.nix
index 457ad4de643d1..7290b31b7f37b 100644
--- a/pkgs/development/python-modules/dm-sonnet/default.nix
+++ b/pkgs/development/python-modules/dm-sonnet/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, click
-, dm-tree
-, docutils
-, etils
-, fetchFromGitHub
-, fetchpatch
-, numpy
-, pythonOlder
-, tabulate
-, tensorflow
-, tensorflow-datasets
-, wrapt
+{
+  lib,
+  buildPythonPackage,
+  click,
+  dm-tree,
+  docutils,
+  etils,
+  fetchFromGitHub,
+  fetchpatch,
+  numpy,
+  pythonOlder,
+  tabulate,
+  tensorflow,
+  tensorflow-datasets,
+  wrapt,
 }:
 
 buildPythonPackage rec {
@@ -45,9 +46,7 @@ buildPythonPackage rec {
   ] ++ etils.optional-dependencies.epath;
 
   passthru.optional-dependencies = {
-    tensorflow = [
-      tensorflow
-    ];
+    tensorflow = [ tensorflow ];
   };
 
   nativeCheckInputs = [
@@ -57,9 +56,7 @@ buildPythonPackage rec {
     tensorflow-datasets
   ];
 
-  pythonImportsCheck = [
-    "sonnet"
-  ];
+  pythonImportsCheck = [ "sonnet" ];
 
   meta = with lib; {
     description = "Library for building neural networks in TensorFlow";
diff --git a/pkgs/development/python-modules/dm-tree/0003-don-t-configure-apple.patch b/pkgs/development/python-modules/dm-tree/0003-don-t-configure-apple.patch
new file mode 100644
index 0000000000000..ac51e3bd50d15
--- /dev/null
+++ b/pkgs/development/python-modules/dm-tree/0003-don-t-configure-apple.patch
@@ -0,0 +1,21 @@
+diff --git a/tree/CMakeLists.txt b/tree/CMakeLists.txt
+index 4fd1b1a..2d1d9d3 100644
+--- a/tree/CMakeLists.txt
++++ b/tree/CMakeLists.txt
+@@ -40,16 +40,6 @@ if (NOT (WIN32 OR MSVC))
+   endif()
+ endif()
+ 
+-if(APPLE)
+-  # On MacOS:
+-  #   -undefined dynamic_lookup is necessary for pybind11 linking
+-  set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-everything -w -undefined dynamic_lookup")
+-
+-  # On MacOS, we need this so that CMake will use the right Python if the user
+-  # has a virtual environment active
+-  set (CMAKE_FIND_FRAMEWORK LAST)
+-endif()
+-
+ # Fetch pybind to be able to use pybind11_add_module symbol.
+ set(PYBIND_VER v2.10.1)
+ include(FetchContent)
diff --git a/pkgs/development/python-modules/dm-tree/cmake.patch b/pkgs/development/python-modules/dm-tree/cmake.patch
deleted file mode 100644
index 28f201a30f71b..0000000000000
--- a/pkgs/development/python-modules/dm-tree/cmake.patch
+++ /dev/null
@@ -1,141 +0,0 @@
-diff --git a/tree/CMakeLists.txt b/tree/CMakeLists.txt
-index 4fd1b1a..f0d072b 100644
---- a/tree/CMakeLists.txt
-+++ b/tree/CMakeLists.txt
-@@ -50,70 +50,79 @@ if(APPLE)
-   set (CMAKE_FIND_FRAMEWORK LAST)
- endif()
- 
--# Fetch pybind to be able to use pybind11_add_module symbol.
--set(PYBIND_VER v2.10.1)
--include(FetchContent)
--FetchContent_Declare(
--  pybind11
--  GIT_REPOSITORY https://github.com/pybind/pybind11
--  GIT_TAG        ${PYBIND_VER}
--)
--if(NOT pybind11_POPULATED)
--    FetchContent_Populate(pybind11)
--    add_subdirectory(${pybind11_SOURCE_DIR} ${pybind11_BINARY_DIR})
--    include_directories(${pybind11_INCLUDE_DIR})
--endif()
--
--# Needed to disable Abseil tests.
--set (BUILD_TESTING OFF)
--
--# Include abseil-cpp.
--set(ABSEIL_VER 20210324.2)
--include(ExternalProject)
--set(ABSEIL_CMAKE_ARGS
--    "-DCMAKE_INSTALL_PREFIX=${CMAKE_SOURCE_DIR}/abseil-cpp"
--    "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}"
--    "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
--    "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}"
--    "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
--    "-DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}"
--    "-DLIBRARY_OUTPUT_PATH=${CMAKE_SOURCE_DIR}/abseil-cpp/lib")
--if(DEFINED CMAKE_OSX_ARCHITECTURES)
--    set(ABSEIL_CMAKE_ARGS
--        ${ABSEIL_CMAKE_ARGS}
--        "-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}")
-+find_package(pybind11 CONFIG)
-+
-+if (NOT pybind11_FOUND)
-+  # Fetch pybind to be able to use pybind11_add_module symbol.
-+  set(PYBIND_VER v2.10.1)
-+  include(FetchContent)
-+  FetchContent_Declare(
-+    pybind11
-+    GIT_REPOSITORY https://github.com/pybind/pybind11
-+    GIT_TAG        ${PYBIND_VER}
-+  )
-+  if(NOT pybind11_POPULATED)
-+      FetchContent_Populate(pybind11)
-+      add_subdirectory(${pybind11_SOURCE_DIR} ${pybind11_BINARY_DIR})
-+      include_directories(${pybind11_INCLUDE_DIR})
-+  endif()
- endif()
--ExternalProject_Add(abseil-cpp
--  GIT_REPOSITORY    https://github.com/abseil/abseil-cpp.git
--  GIT_TAG           ${ABSEIL_VER}
--  PREFIX            ${CMAKE_SOURCE_DIR}/abseil-cpp
--  CMAKE_ARGS        ${ABSEIL_CMAKE_ARGS}
--)
--ExternalProject_Get_Property(abseil-cpp install_dir)
--set(abseil_install_dir ${install_dir})
--include_directories (${abseil_install_dir}/include)
--
- 
- # Define pybind11 tree module.
- pybind11_add_module(_tree tree.h tree.cc)
--add_dependencies(_tree abseil-cpp)
--
-+find_package(absl)
-+
-+if (NOT absl_FOUND)
-+  # Needed to disable Abseil tests.
-+  set (BUILD_TESTING OFF)
-+
-+  # Include abseil-cpp.
-+  set(ABSEIL_VER 20210324.2)
-+  include(ExternalProject)
-+  set(ABSEIL_CMAKE_ARGS
-+      "-DCMAKE_INSTALL_PREFIX=${CMAKE_SOURCE_DIR}/abseil-cpp"
-+      "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}"
-+      "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
-+      "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}"
-+      "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
-+      "-DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}"
-+      "-DLIBRARY_OUTPUT_PATH=${CMAKE_SOURCE_DIR}/abseil-cpp/lib")
-+  if(DEFINED CMAKE_OSX_ARCHITECTURES)
-+      set(ABSEIL_CMAKE_ARGS
-+          ${ABSEIL_CMAKE_ARGS}
-+          "-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}")
-+  endif()
-+  ExternalProject_Add(abseil-cpp
-+    GIT_REPOSITORY    https://github.com/abseil/abseil-cpp.git
-+    GIT_TAG           ${ABSEIL_VER}
-+    PREFIX            ${CMAKE_SOURCE_DIR}/abseil-cpp
-+    CMAKE_ARGS        ${ABSEIL_CMAKE_ARGS}
-+  )
-+  ExternalProject_Get_Property(abseil-cpp install_dir)
-+  set(abseil_install_dir ${install_dir})
-+  include_directories (${abseil_install_dir}/include)
-+
-+  add_dependencies(_tree abseil-cpp)
-+
-+  if (WIN32 OR MSVC)
-+      set(ABSEIL_LIB_PREF "absl")
-+      set(LIB_SUFF "lib")
-+  else()
-+      set(ABSEIL_LIB_PREF "libabsl")
-+      set(LIB_SUFF "a")
-+  endif()
-+
--if (WIN32 OR MSVC)
--    set(ABSEIL_LIB_PREF "absl")
--    set(LIB_SUFF "lib")
-+  # Link abseil static libs.
-+  # We don't use find_library here to force cmake to build abseil before linking.
-+  set(ABSEIL_LIBS int128 raw_hash_set raw_logging_internal strings throw_delegate)
-+  foreach(ABSEIL_LIB IN LISTS ABSEIL_LIBS)
-+    target_link_libraries(_tree PRIVATE
-+        "${abseil_install_dir}/lib/${ABSEIL_LIB_PREF}_${ABSEIL_LIB}.${LIB_SUFF}")
-+  endforeach()
- else()
--    set(ABSEIL_LIB_PREF "libabsl")
--    set(LIB_SUFF "a")
-+  target_link_libraries(_tree PRIVATE absl::int128 absl::raw_hash_set absl::raw_logging_internal absl::strings absl::throw_delegate)
- endif()
- 
--# Link abseil static libs.
--# We don't use find_library here to force cmake to build abseil before linking.
--set(ABSEIL_LIBS int128 raw_hash_set raw_logging_internal strings throw_delegate)
--foreach(ABSEIL_LIB IN LISTS ABSEIL_LIBS)
--  target_link_libraries(_tree PRIVATE
--      "${abseil_install_dir}/lib/${ABSEIL_LIB_PREF}_${ABSEIL_LIB}.${LIB_SUFF}")
--endforeach()
--
- # Make the module private to tree package.
- set_target_properties(_tree PROPERTIES OUTPUT_NAME tree/_tree)
- 
diff --git a/pkgs/development/python-modules/dm-tree/default.nix b/pkgs/development/python-modules/dm-tree/default.nix
index 071a0fee432e6..909cd3aa523a0 100644
--- a/pkgs/development/python-modules/dm-tree/default.nix
+++ b/pkgs/development/python-modules/dm-tree/default.nix
@@ -1,20 +1,42 @@
-{ stdenv
-, abseil-cpp
-, absl-py
-, attrs
-, buildPythonPackage
-, cmake
-, fetchFromGitHub
-, lib
-, numpy
-, pybind11
-, wrapt
-}:
+{
+  lib,
+  buildPythonPackage,
+  fetchpatch,
+  fetchFromGitHub,
+  stdenv,
+
+  # nativeBuildInputs
+  cmake,
+  pybind11,
+
+  # buildInputs
+  abseil-cpp,
 
+  # build-system
+  setuptools,
+
+  # checks
+  absl-py,
+  attrs,
+  numpy,
+  wrapt,
+}:
+let
+  patchCMakeAbseil = fetchpatch {
+    name = "0001-don-t-rebuild-abseil.patch";
+    url = "https://raw.githubusercontent.com/conda-forge/dm-tree-feedstock/93a91aa2c13240cecf88133e2885ade9121b464a/recipe/patches/0001-don-t-rebuild-abseil.patch";
+    hash = "sha256-bho7lXAV5xHkPmWy94THJtx+6i+px5w6xKKfThvBO/M=";
+  };
+  patchCMakePybind = fetchpatch {
+    name = "0002-don-t-fetch-pybind11.patch";
+    url = "https://raw.githubusercontent.com/conda-forge/dm-tree-feedstock/93a91aa2c13240cecf88133e2885ade9121b464a/recipe/patches/0002-don-t-fetch-pybind11.patch";
+    hash = "sha256-41XIouQ4Fm1yewaxK9erfcnkGBS6vgdvMm/DyF0rsKg=";
+  };
+in
 buildPythonPackage rec {
   pname = "dm-tree";
   version = "0.1.8";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "deepmind";
@@ -24,8 +46,9 @@ buildPythonPackage rec {
   };
 
   patches = [
-    ./cmake.patch
-  ];
+    patchCMakeAbseil
+    patchCMakePybind
+  ] ++ (lib.optional stdenv.hostPlatform.isDarwin ./0003-don-t-configure-apple.patch);
 
   dontUseCmakeConfigure = true;
 
@@ -39,6 +62,8 @@ buildPythonPackage rec {
     pybind11
   ];
 
+  build-system = [ setuptools ];
+
   nativeCheckInputs = [
     absl-py
     attrs
@@ -48,11 +73,14 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "tree" ];
 
-  meta = with lib; {
-    broken = stdenv.isDarwin;
-    description = "Tree is a library for working with nested data structures.";
+  meta = {
+    description = "Tree is a library for working with nested data structures";
     homepage = "https://github.com/deepmind/tree";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ samuela ndl ];
+    changelog = "https://github.com/google-deepmind/tree/releases/tag/${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [
+      samuela
+      ndl
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/dmenu/default.nix b/pkgs/development/python-modules/dmenu/default.nix
index 130110173eedc..747c666a94639 100644
--- a/pkgs/development/python-modules/dmenu/default.nix
+++ b/pkgs/development/python-modules/dmenu/default.nix
@@ -1,4 +1,9 @@
-{ buildPythonPackage, lib, fetchPypi, dmenu }:
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+  dmenu,
+}:
 
 buildPythonPackage rec {
   pname = "dmenu-python";
@@ -16,7 +21,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = {
-    description = "A Python wrapper for dmenu";
+    description = "Python wrapper for dmenu";
     homepage = "https://dmenu.readthedocs.io";
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.nico202 ];
diff --git a/pkgs/development/python-modules/dnachisel/default.nix b/pkgs/development/python-modules/dnachisel/default.nix
index 5a70ae1c16df6..c931f25fcf988 100644
--- a/pkgs/development/python-modules/dnachisel/default.nix
+++ b/pkgs/development/python-modules/dnachisel/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, biopython
-, docopt
-, flametree
-, numpy
-, proglog
-, pytestCheckHook
-, pythonOlder
-, python-codon-tables
-, primer3
-, genome-collector
-, matplotlib
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  biopython,
+  docopt,
+  flametree,
+  numpy,
+  proglog,
+  pytestCheckHook,
+  pythonOlder,
+  python-codon-tables,
+  primer3,
+  genome-collector,
+  matplotlib,
 }:
 
 buildPythonPackage rec {
@@ -56,9 +57,7 @@ buildPythonPackage rec {
     "test_avoid_matches_with_phage"
   ];
 
-  pythonImportsCheck = [
-    "dnachisel"
-  ];
+  pythonImportsCheck = [ "dnachisel" ];
 
   meta = with lib; {
     homepage = "https://github.com/Edinburgh-Genome-Foundry/DnaChisel";
diff --git a/pkgs/development/python-modules/dnf-plugins-core/default.nix b/pkgs/development/python-modules/dnf-plugins-core/default.nix
index 3a9c062679253..e03d80c6fc14b 100644
--- a/pkgs/development/python-modules/dnf-plugins-core/default.nix
+++ b/pkgs/development/python-modules/dnf-plugins-core/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
   # dependencies
-, cmake
-, python-dateutil
-, dbus-python
-, dnf4
-, gettext
-, libcomps
-, libdnf
-, python
-, rpm
-, sphinx
-, systemd
+  cmake,
+  python-dateutil,
+  dbus-python,
+  dnf4,
+  gettext,
+  libcomps,
+  libdnf,
+  python,
+  rpm,
+  sphinx,
+  systemd,
 }:
 
 let
@@ -22,21 +23,22 @@ in
 
 buildPythonPackage rec {
   pname = "dnf-plugins-core";
-  version = "4.7.0";
+  version = "4.9.0";
   format = "other";
 
-  outputs = [ "out" "man" ];
+  outputs = [
+    "out"
+    "man"
+  ];
 
   src = fetchFromGitHub {
     owner = "rpm-software-management";
     repo = "dnf-plugins-core";
     rev = "refs/tags/${version}";
-    hash = "sha256-AQnnXjkUajztbyoKzKhxiKxZsb2o2+7C15fsrxGkWcM=";
+    hash = "sha256-MQ7QZ5qn/0OU0slohwEP83w8NvSP2M+hpCDKvYqlezY=";
   };
 
-  patches = [
-    ./fix-python-install-dir.patch
-  ];
+  patches = [ ./fix-python-install-dir.patch ];
 
   postPatch = ''
     substituteInPlace CMakeLists.txt \
@@ -108,9 +110,7 @@ buildPythonPackage rec {
     done
   '';
 
-  makeWrapperArgs = [
-    ''--add-flags "--setopt=pluginpath=$out/${python.sitePackages}/dnf-plugins"''
-  ];
+  makeWrapperArgs = [ ''--add-flags "--setopt=pluginpath=$out/${python.sitePackages}/dnf-plugins"'' ];
 
   meta = with lib; {
     description = "Core plugins to use with DNF package manager";
diff --git a/pkgs/development/python-modules/dnf4/default.nix b/pkgs/development/python-modules/dnf4/default.nix
index 31d617d613448..b462e395669e1 100644
--- a/pkgs/development/python-modules/dnf4/default.nix
+++ b/pkgs/development/python-modules/dnf4/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, cmake
-, fetchFromGitHub
-, gettext
-, libcomps
-, libdnf
-, python
-, rpm
-, sphinx
-, nix-update-script
+{
+  lib,
+  buildPythonPackage,
+  cmake,
+  fetchFromGitHub,
+  gettext,
+  libcomps,
+  libdnf,
+  python,
+  rpm,
+  sphinx,
+  nix-update-script,
 }:
 
 let
@@ -17,21 +18,23 @@ in
 
 buildPythonPackage rec {
   pname = "dnf4";
-  version = "4.20.0";
+  version = "4.21.1";
   format = "other";
 
-  outputs = [ "out" "man" "py" ];
+  outputs = [
+    "out"
+    "man"
+    "py"
+  ];
 
   src = fetchFromGitHub {
     owner = "rpm-software-management";
     repo = "dnf";
     rev = version;
-    hash = "sha256-0BwnUb0ZORjJmB70Jca/CnyysIOGB7azVzUUIGplmso=";
+    hash = "sha256-VYQhOlLtEzWesrMZ/d6KW0OlUjz5MvoEmPy71qEUEL4=";
   };
 
-  patches = [
-    ./fix-python-install-dir.patch
-  ];
+  patches = [ ./fix-python-install-dir.patch ];
 
   postPatch = ''
     substituteInPlace CMakeLists.txt \
@@ -59,9 +62,7 @@ buildPythonPackage rec {
     rpm
   ];
 
-  cmakeFlags = [
-    "-DPYTHON_DESIRED=${pyMajor}"
-  ];
+  cmakeFlags = [ "-DPYTHON_DESIRED=${pyMajor}" ];
 
   dontWrapPythonPrograms = true;
 
diff --git a/pkgs/development/python-modules/dnf4/wrapper.nix b/pkgs/development/python-modules/dnf4/wrapper.nix
index 254bd7f27d2ae..c8cd1c1c261dd 100644
--- a/pkgs/development/python-modules/dnf4/wrapper.nix
+++ b/pkgs/development/python-modules/dnf4/wrapper.nix
@@ -1,33 +1,37 @@
-{ lib
-, wrapPython
-, python3
-, stdenv
-, dnf-plugins-core
-, plugins ? [ dnf-plugins-core ]
+{
+  lib,
+  wrapPython,
+  python,
+  stdenv,
+  dnf4,
+  dnf-plugins-core,
+  plugins ? [ dnf-plugins-core ],
 }:
 let
-  pluginPaths = map (p: "${p}/${python3.sitePackages}/dnf-plugins") plugins;
+  pluginPaths = map (p: "${p}/${python.sitePackages}/dnf-plugins") plugins;
 
-  dnf4-unwrapped = python3.pkgs.dnf4;
+  dnf4-unwrapped = dnf4;
 in
 
 stdenv.mkDerivation {
   pname = "dnf4";
   inherit (dnf4-unwrapped) version;
 
-  outputs = [ "out" "man" "py" ];
+  outputs = [
+    "out"
+    "man"
+    "py"
+  ];
 
   dontUnpack = true;
 
-  nativeBuildInputs = [
-    wrapPython
-  ];
+  nativeBuildInputs = [ wrapPython ];
 
-  propagatedBuildInputs = [
-    dnf4-unwrapped
-  ] ++ plugins;
+  propagatedBuildInputs = [ dnf4-unwrapped ] ++ plugins;
 
-  makeWrapperArgs = lib.optional (plugins != [ ]) ''--add-flags "--setopt=pluginpath=${lib.concatStringsSep "," pluginPaths}"'';
+  makeWrapperArgs = lib.optional (
+    plugins != [ ]
+  ) ''--add-flags "--setopt=pluginpath=${lib.concatStringsSep "," pluginPaths}"'';
 
   installPhase = ''
     runHook preInstall
@@ -48,6 +52,6 @@ stdenv.mkDerivation {
   };
 
   meta = dnf4-unwrapped.meta // {
-    priority = (dnf4-unwrapped.meta.priority or 0) - 1;
+    priority = (dnf4-unwrapped.meta.priority or lib.meta.defaultPriority) - 1;
   };
 }
diff --git a/pkgs/development/python-modules/dnfile/default.nix b/pkgs/development/python-modules/dnfile/default.nix
index 40b97b6b6d8ac..e9bff0525de3c 100644
--- a/pkgs/development/python-modules/dnfile/default.nix
+++ b/pkgs/development/python-modules/dnfile/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pefile
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pefile,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,25 +23,17 @@ buildPythonPackage rec {
     fetchSubmodules = true;
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    pefile
-  ];
+  dependencies = [ pefile ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dnfile"
-  ];
+  pythonImportsCheck = [ "dnfile" ];
 
   meta = with lib; {
     description = "Module to parse .NET executable files";
-    homepage = "hhttps://github.com/malwarefrank/dnfile";
+    homepage = "https://github.com/malwarefrank/dnfile";
     changelog = "https://github.com/malwarefrank/dnfile/blob/v${version}/HISTORY.rst";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/development/python-modules/dns-lexicon/default.nix b/pkgs/development/python-modules/dns-lexicon/default.nix
index b9647c5ed804d..225a04ee5342b 100644
--- a/pkgs/development/python-modules/dns-lexicon/default.nix
+++ b/pkgs/development/python-modules/dns-lexicon/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, beautifulsoup4
-, boto3
-, buildPythonPackage
-, cryptography
-, dnspython
-, fetchFromGitHub
-, importlib-metadata
-, localzone
-, oci
-, poetry-core
-, pyotp
-, pytest-vcr
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, requests
-, softlayer
-, tldextract
-, zeep
+{
+  lib,
+  beautifulsoup4,
+  boto3,
+  buildPythonPackage,
+  cryptography,
+  dnspython,
+  fetchFromGitHub,
+  importlib-metadata,
+  localzone,
+  oci,
+  poetry-core,
+  pyotp,
+  pytest-vcr,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  requests,
+  softlayer,
+  tldextract,
+  zeep,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     hash = "sha256-79/zz0TOCpx26TEo6gi9JDBQeVW2azWnxAjWr/FGRLA=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     beautifulsoup4
@@ -45,29 +44,15 @@ buildPythonPackage rec {
     pyyaml
     requests
     tldextract
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
   passthru.optional-dependencies = {
-    route53 = [
-      boto3
-    ];
-    localzone = [
-      localzone
-    ];
-    softlayer = [
-      softlayer
-    ];
-    ddns = [
-      dnspython
-    ];
-    duckdns = [
-      dnspython
-    ];
-    oci = [
-      oci
-    ];
+    route53 = [ boto3 ];
+    localzone = [ localzone ];
+    softlayer = [ softlayer ];
+    ddns = [ dnspython ];
+    duckdns = [ dnspython ];
+    oci = [ oci ];
     full = [
       boto3
       dnspython
@@ -83,9 +68,7 @@ buildPythonPackage rec {
     pytest-vcr
   ] ++ passthru.optional-dependencies.full;
 
-  pytestFlagsArray = [
-    "tests/"
-  ];
+  pytestFlagsArray = [ "tests/" ];
 
   disabledTestPaths = [
     # Needs network access
@@ -104,9 +87,7 @@ buildPythonPackage rec {
     "action_is_correctly"
   ];
 
-  pythonImportsCheck = [
-    "lexicon"
-  ];
+  pythonImportsCheck = [ "lexicon" ];
 
   meta = with lib; {
     description = "Manipulate DNS records on various DNS providers in a standardized way";
diff --git a/pkgs/development/python-modules/dnslib/default.nix b/pkgs/development/python-modules/dnslib/default.nix
index 63bf4634cf09c..65d908605b9e0 100644
--- a/pkgs/development/python-modules/dnslib/default.nix
+++ b/pkgs/development/python-modules/dnslib/default.nix
@@ -1,34 +1,33 @@
-{ lib
-, python
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  python,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dnslib";
-  version = "0.9.24";
+  version = "0.9.25";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-7xZ4aKMNTOfJC5ISedfs+5hr6OvFMPPmBQouy2hwfHY=";
+    hash = "sha256-aH3yCG4oCGyzK5R9r6TApOYT8UKbqjvmHYuU5pQYtO8=";
   };
 
   checkPhase = ''
     VERSIONS=${python.interpreter} ./run_tests.sh
   '';
 
-  pythonImportsCheck = [
-    "dnslib"
-  ];
+  pythonImportsCheck = [ "dnslib" ];
 
   meta = with lib; {
     description = "Simple library to encode/decode DNS wire-format packets";
     homepage = "https://github.com/paulc/dnslib";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dnspython/default.nix b/pkgs/development/python-modules/dnspython/default.nix
index 5c359635ba5ab..56098c6250c5b 100644
--- a/pkgs/development/python-modules/dnspython/default.nix
+++ b/pkgs/development/python-modules/dnspython/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, aioquic
-, buildPythonPackage
-, cacert
-, cryptography
-, curio
-, fetchPypi
-, h2
-, httpcore
-, httpx
-, idna
-, hatchling
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-toolbelt
-, sniffio
-, trio
+{
+  lib,
+  aioquic,
+  buildPythonPackage,
+  cacert,
+  cryptography,
+  curio,
+  fetchPypi,
+  h2,
+  httpcore,
+  httpx,
+  idna,
+  hatchling,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-toolbelt,
+  sniffio,
+  trio,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     hash = "sha256-6PD5wjp7fLmd7WTmw6bz5wHXj1DFXgArg53qciXP98w=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   passthru.optional-dependencies = {
     DOH = [
@@ -42,43 +41,29 @@ buildPythonPackage rec {
       requests-toolbelt
       httpcore
     ];
-    IDNA = [
-      idna
-    ];
-    DNSSEC = [
-      cryptography
-    ];
-    trio = [
-      trio
-    ];
+    IDNA = [ idna ];
+    DNSSEC = [ cryptography ];
+    trio = [ trio ];
     curio = [
       curio
       sniffio
     ];
-    DOQ = [
-      aioquic
-    ];
+    DOQ = [ aioquic ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  checkInputs = [
-    cacert
-  ] ++ passthru.optional-dependencies.DNSSEC;
+  checkInputs = [ cacert ] ++ passthru.optional-dependencies.DNSSEC;
 
   disabledTests = [
     # dns.exception.SyntaxError: protocol not found
     "test_misc_good_WKS_text"
   ];
 
-  pythonImportsCheck = [
-    "dns"
-  ];
+  pythonImportsCheck = [ "dns" ];
 
   meta = with lib; {
-    description = "A DNS toolkit for Python";
+    description = "DNS toolkit for Python";
     homepage = "https://www.dnspython.org";
     changelog = "https://github.com/rthalley/dnspython/blob/v${version}/doc/whatsnew.rst";
     license = with licenses; [ isc ];
diff --git a/pkgs/development/python-modules/doc8/default.nix b/pkgs/development/python-modules/doc8/default.nix
index 48c00b0d5cc3f..68c9377d3bffe 100644
--- a/pkgs/development/python-modules/doc8/default.nix
+++ b/pkgs/development/python-modules/doc8/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, chardet
-, docutils
-, fetchpatch
-, fetchPypi
-, pbr
-, pygments
-, pytestCheckHook
-, pythonOlder
-, restructuredtext-lint
-, setuptools-scm
-, stevedore
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  chardet,
+  docutils,
+  fetchpatch,
+  fetchPypi,
+  pbr,
+  pygments,
+  pytestCheckHook,
+  pythonOlder,
+  restructuredtext-lint,
+  setuptools-scm,
+  stevedore,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -40,9 +41,7 @@ buildPythonPackage rec {
     wheel
   ];
 
-  buildInputs = [
-    pbr
-  ];
+  buildInputs = [ pbr ];
 
   propagatedBuildInputs = [
     docutils
@@ -52,13 +51,11 @@ buildPythonPackage rec {
     pygments
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "doc8"
-  ];
+  pythonRelaxDeps = [ "docutils" ];
+
+  pythonImportsCheck = [ "doc8" ];
 
   meta = with lib; {
     description = "Style checker for Sphinx (or other) RST documentation";
diff --git a/pkgs/development/python-modules/docformatter/default.nix b/pkgs/development/python-modules/docformatter/default.nix
index 517b777735d78..d6cd2f308ec06 100644
--- a/pkgs/development/python-modules/docformatter/default.nix
+++ b/pkgs/development/python-modules/docformatter/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, charset-normalizer
-, tomli
-, untokenize
-, mock
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  charset-normalizer,
+  tomli,
+  untokenize,
+  mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-QUjeG84KwI5Y3MU1wrmjHBXU2tEJ0CuiR3Y/S+dX7Gs=";
   };
 
-  patches = [
-    ./test-path.patch
-  ];
+  patches = [ ./test-path.patch ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
@@ -36,9 +35,7 @@ buildPythonPackage rec {
       --subst-var-by docformatter $out/bin/docformatter
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     charset-normalizer
@@ -51,6 +48,12 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  # Disable failing tests until https://github.com/PyCQA/docformatter/issues/274 is fixed upstream
+  disabledTests = [
+    "test_do_format_code.py"
+    "test_docformatter.py"
+  ];
+
   pythonImportsCheck = [ "docformatter" ];
 
   meta = {
diff --git a/pkgs/development/python-modules/docker-py/default.nix b/pkgs/development/python-modules/docker-py/default.nix
deleted file mode 100644
index 392e4767e8c3a..0000000000000
--- a/pkgs/development/python-modules/docker-py/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, six, requests, websocket-client, docker-pycreds }:
-
-buildPythonPackage rec {
-  version = "1.10.6";
-  format = "setuptools";
-  pname = "docker-py";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "05f49f6hnl7npmi7kigg0ibqk8s3fhzx1ivvz1kqvlv4ay3paajc";
-  };
-
-  # The tests access the network.
-  doCheck = false;
-
-  propagatedBuildInputs = [
-    six
-    requests
-    websocket-client
-    docker-pycreds
-  ];
-
-  meta = {
-    description = "Python library for the Docker Remote API";
-    homepage = "https://github.com/docker/docker-py/";
-    license = lib.licenses.asl20;
-    maintainers = [ lib.maintainers.pmiddend ];
-  };
-}
diff --git a/pkgs/development/python-modules/docker-pycreds/default.nix b/pkgs/development/python-modules/docker-pycreds/default.nix
index 2c6c0ad2038d8..16b8a420f4a7f 100644
--- a/pkgs/development/python-modules/docker-pycreds/default.nix
+++ b/pkgs/development/python-modules/docker-pycreds/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, six }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+}:
 
 buildPythonPackage rec {
   pname = "docker-pycreds";
@@ -16,7 +21,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ six ];
 
   meta = with lib; {
-    description = "Python bindings for the docker credentials store API.";
+    description = "Python bindings for the docker credentials store API";
     homepage = "https://github.com/shin-/dockerpy-creds";
     license = licenses.asl20;
   };
diff --git a/pkgs/development/python-modules/docker/default.nix b/pkgs/development/python-modules/docker/default.nix
index 579584c531049..59ab52857824a 100644
--- a/pkgs/development/python-modules/docker/default.nix
+++ b/pkgs/development/python-modules/docker/default.nix
@@ -1,72 +1,68 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build-system
-, setuptools
-, setuptools-scm
+  # build-system
+  hatchling,
+  hatch-vcs,
 
-# dependencies
-, packaging
-, requests
-, urllib3
+  # dependencies
+  packaging,
+  requests,
+  urllib3,
 
-# optional-dependenices
-, paramiko
-, websocket-client
+  # optional-dependenices
+  paramiko,
+  websocket-client,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "docker";
-  version = "7.0.0";
-  format = "pyproject";
+  version = "7.1.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-Mjc2+5LNlBj8XnEzvJU+EanaBPRIP4KLUn21U/Hn5aM=";
+  src = fetchFromGitHub {
+    owner = "docker";
+    repo = "docker-py";
+    rev = "refs/tags/${version}";
+    hash = "sha256-sk6TZLek+fRkKq7kG9g6cR9lvfPC8v8qUXKb7Tq4pLU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    setuptools-scm
+  build-system = [
+    hatchling
+    hatch-vcs
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     packaging
     requests
     urllib3
   ];
 
-  passthru.optional-dependencies = {
-    ssh = [
-      paramiko
-    ];
-    websockets = [
-      websocket-client
-    ];
+  optional-dependencies = {
+    ssh = [ paramiko ];
+    tls = [];
+    websockets = [ websocket-client ];
   };
 
-  pythonImportsCheck = [
-    "docker"
-  ];
+  pythonImportsCheck = [ "docker" ];
 
   nativeCheckInputs = [
     pytestCheckHook
-  ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
-  pytestFlagsArray = [
-    "tests/unit"
-  ];
+  pytestFlagsArray = [ "tests/unit" ];
 
   # Deselect socket tests on Darwin because it hits the path length limit for a Unix domain socket
-  disabledTests = lib.optionals stdenv.isDarwin [
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
     "api_test"
     "stream_response"
     "socket_file"
@@ -74,9 +70,9 @@ buildPythonPackage rec {
 
   meta = with lib; {
     changelog = "https://github.com/docker/docker-py/releases/tag/${version}";
-    description = "An API client for docker written in Python";
+    description = "API client for docker written in Python";
     homepage = "https://github.com/docker/docker-py";
     license = licenses.asl20;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dockerfile-parse/default.nix b/pkgs/development/python-modules/dockerfile-parse/default.nix
index 88a568ed258b3..ae829a65e71dc 100644
--- a/pkgs/development/python-modules/dockerfile-parse/default.nix
+++ b/pkgs/development/python-modules/dockerfile-parse/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-MYTM3FEyIZg+UDrADhqlBKKqj4Tl3mc8RrC27umex7w=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dockerfile_parse"
-  ];
+  pythonImportsCheck = [ "dockerfile_parse" ];
 
   disabledTests = [
     # python-dockerfile-parse.spec is not present
diff --git a/pkgs/development/python-modules/dockerpty/default.nix b/pkgs/development/python-modules/dockerpty/default.nix
index 1dc5ff6a83165..0e4fe12546df9 100644
--- a/pkgs/development/python-modules/dockerpty/default.nix
+++ b/pkgs/development/python-modules/dockerpty/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, six }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+}:
 
 buildPythonPackage rec {
   pname = "dockerpty";
diff --git a/pkgs/development/python-modules/dockerspawner/default.nix b/pkgs/development/python-modules/dockerspawner/default.nix
index 44f269d50c642..d90710fc3d84b 100644
--- a/pkgs/development/python-modules/dockerspawner/default.nix
+++ b/pkgs/development/python-modules/dockerspawner/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, jupyterhub
-, escapism
-, docker
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  jupyterhub,
+  escapism,
+  docker,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-POlTZ9luS9wQ/vt9w8VMfTEqGzg/DhfB45ePfvnyito=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     jupyterhub
@@ -30,15 +29,13 @@ buildPythonPackage rec {
   # tests require docker
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dockerspawner"
-  ];
+  pythonImportsCheck = [ "dockerspawner" ];
 
   meta = with lib; {
-    description = "A custom spawner for Jupyterhub";
+    description = "Custom spawner for Jupyterhub";
     homepage = "https://github.com/jupyterhub/dockerspawner";
     changelog = "https://github.com/jupyterhub/dockerspawner/blob/${version}/docs/source/changelog.md";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/docloud/default.nix b/pkgs/development/python-modules/docloud/default.nix
index 9e30ea3899549..5c7c57811543e 100644
--- a/pkgs/development/python-modules/docloud/default.nix
+++ b/pkgs/development/python-modules/docloud/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -25,7 +26,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "docloud" ];
 
   meta = with lib; {
-    description = "The IBM Decision Optimization on Cloud Python client";
+    description = "IBM Decision Optimization on Cloud Python client";
     homepage = "https://onboarding-oaas.docloud.ibmcloud.com/software/analytics/docloud/";
     license = licenses.asl20;
     maintainers = with maintainers; [ drewrisinger ];
diff --git a/pkgs/development/python-modules/docopt-ng/default.nix b/pkgs/development/python-modules/docopt-ng/default.nix
index cdeda778e0dc0..5fde32a380bbc 100644
--- a/pkgs/development/python-modules/docopt-ng/default.nix
+++ b/pkgs/development/python-modules/docopt-ng/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pdm-backend
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pdm-backend,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
     hash = "sha256-kcbaELW7by6eJTRYKfuCeMeK8Bn2/ECIetSbBgSDsdc=";
   };
 
-  nativeBuildInputs = [
-    pdm-backend
-  ];
+  nativeBuildInputs = [ pdm-backend ];
 
   pythonImportsCheck = [ "docopt" ];
   doCheck = false; # no tests in the package
diff --git a/pkgs/development/python-modules/docopt/default.nix b/pkgs/development/python-modules/docopt/default.nix
index d909162d7f188..3f7c7c7a0ece2 100644
--- a/pkgs/development/python-modules/docopt/default.nix
+++ b/pkgs/development/python-modules/docopt/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "docopt";
diff --git a/pkgs/development/python-modules/docplex/default.nix b/pkgs/development/python-modules/docplex/default.nix
index 2f5c485cf631d..464552809ddb9 100644
--- a/pkgs/development/python-modules/docplex/default.nix
+++ b/pkgs/development/python-modules/docplex/default.nix
@@ -1,23 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, futures ? null
-, docloud
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  setuptools,
+  futures ? null,
+  docloud,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "docplex";
-  version = "2.25.236";
-  format = "setuptools";
+  version = "2.27.239";
+  pyproject = true;
 
   # No source available from official repo
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-JWkUtMAROk4cePMuogx9dtyO/ihv6JAnDnXPrVD+UQ8=";
+    hash = "sha256-Ug5+jDBBbamqd0JebzHvjLZoTRRPYWQiJl6g8BK0aMQ=";
   };
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "setuptools~=68.2.2" "setuptools>=68.2.2"
+  '';
+
+  build-system = [ setuptools ];
+
   propagatedBuildInputs = [
     docloud
     requests
diff --git a/pkgs/development/python-modules/docrep/default.nix b/pkgs/development/python-modules/docrep/default.nix
index e507b8d022b46..2aeb00ebe324b 100644
--- a/pkgs/development/python-modules/docrep/default.nix
+++ b/pkgs/development/python-modules/docrep/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -29,6 +30,6 @@ buildPythonPackage rec {
     description = "Python package for docstring repetition";
     homepage = "https://github.com/Chilipp/docrep";
     license = lib.licenses.gpl2;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/docstr-coverage/default.nix b/pkgs/development/python-modules/docstr-coverage/default.nix
index b9a6080fa7df8..2310ac6ffab70 100644
--- a/pkgs/development/python-modules/docstr-coverage/default.nix
+++ b/pkgs/development/python-modules/docstr-coverage/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, click
-, pyyaml
-, tqdm
-, pytestCheckHook
-, pytest-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  click,
+  pyyaml,
+  tqdm,
+  pytestCheckHook,
+  pytest-mock,
 }:
 let
-  version = "2.3.1";
+  version = "2.3.2";
 in
 buildPythonPackage {
   pname = "docstr-coverage";
@@ -18,12 +19,19 @@ buildPythonPackage {
     owner = "HunterMcGushion";
     repo = "docstr_coverage";
     rev = "refs/tags/v${version}";
-    hash = "sha256-QmQE6KZ2NdXKQun+uletxYPktWvfkrj6NPAVl/mmpAY=";
+    hash = "sha256-k1ny4fWS+CmgLNWPlYPsscjei2UZ6h8QJrZSay5abck=";
   };
 
-  propagatedBuildInputs = [ click pyyaml tqdm ];
+  propagatedBuildInputs = [
+    click
+    pyyaml
+    tqdm
+  ];
 
-  nativeCheckInputs = [ pytestCheckHook pytest-mock ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-mock
+  ];
 
   disabledTests = [
     # AssertionError: assert 'docstr_coverage' in '/build/source/tests'
diff --git a/pkgs/development/python-modules/docstring-parser/default.nix b/pkgs/development/python-modules/docstring-parser/default.nix
index e3e47d1c90794..d1a06935e0fd9 100644
--- a/pkgs/development/python-modules/docstring-parser/default.nix
+++ b/pkgs/development/python-modules/docstring-parser/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-rnDitZn/xI0I9KMQv6gxzVYevWUymDgyFETjAnRlEHw=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "docstring_parser"
-  ];
+  pythonImportsCheck = [ "docstring_parser" ];
 
   meta = with lib; {
     description = "Parse Python docstrings in various flavors";
diff --git a/pkgs/development/python-modules/docstring-to-markdown/default.nix b/pkgs/development/python-modules/docstring-to-markdown/default.nix
index 5a720d1954ddf..2595c6d6d1544 100644
--- a/pkgs/development/python-modules/docstring-to-markdown/default.nix
+++ b/pkgs/development/python-modules/docstring-to-markdown/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,9 @@ buildPythonPackage rec {
     sed -i -E '/--(cov|flake8)/d' setup.cfg
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "docstring_to_markdown"
-  ];
+  pythonImportsCheck = [ "docstring_to_markdown" ];
 
   meta = with lib; {
     homepage = "https://github.com/python-lsp/docstring-to-markdown";
diff --git a/pkgs/development/python-modules/doctest-ignore-unicode/default.nix b/pkgs/development/python-modules/doctest-ignore-unicode/default.nix
deleted file mode 100644
index 0ca439d9dcb64..0000000000000
--- a/pkgs/development/python-modules/doctest-ignore-unicode/default.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, nose }:
-
-buildPythonPackage rec {
-  pname = "doctest-ignore-unicode";
-  version = "0.1.2";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1m9aa4qnyj21lbq4sbvmv1vcz7zksss4rz37ddf2hxv4hk8b547w";
-  };
-
-  propagatedBuildInputs = [ nose ];
-
-  meta = with lib; {
-    description = "Add flag to ignore unicode literal prefixes in doctests";
-    license = with licenses; [ asl20 ];
-    homepage = "https://github.com/gnublade/doctest-ignore-unicode";
-  };
-}
diff --git a/pkgs/development/python-modules/docutils/default.nix b/pkgs/development/python-modules/docutils/default.nix
index 136f679fcf6e2..695d351f03ca5 100644
--- a/pkgs/development/python-modules/docutils/default.nix
+++ b/pkgs/development/python-modules/docutils/default.nix
@@ -1,41 +1,65 @@
-{ stdenv
-, lib
-, fetchPypi
-, buildPythonPackage
-, python
-, pythonOlder
+{
+  stdenv,
+  lib,
+  fetchFromRepoOrCz,
+  buildPythonPackage,
+  flit-core,
+  pillow,
+  python,
+  pythonOlder,
 }:
 
-buildPythonPackage rec {
-  pname = "docutils";
-  version = "0.20.1";
+# Note: this package is used to build LLVM’s documentation, which is part of the Darwin stdenv.
+# It cannot use `fetchgit` because that would pull curl into the bootstrap, which is disallowed.
 
-  disabled = pythonOlder "3.7";
+let
+  self = buildPythonPackage rec {
+    pname = "docutils";
+    version = "0.21.2";
+    pyproject = true;
 
-  format = "setuptools";
+    disabled = pythonOlder "3.7";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-8IpOJ2w6FYOobc4+NKuj/gTQK7ot1R7RYQYkToqSPjs=";
-  };
+    src = fetchFromRepoOrCz {
+      repo = "docutils";
+      rev = "docutils-${version}";
+      hash = "sha256-Q+9yW+BYUEvPYV504368JsAoKKoaTZTeKh4tVeiNv5Y=";
+    };
+
+    build-system = [ flit-core ];
+
+    # infinite recursion via sphinx and pillow
+    doCheck = false;
+    passthru.tests.pytest = self.overridePythonAttrs { doCheck = true; };
+
+    nativeCheckInputs = [ pillow ];
+
+    # Only Darwin needs LANG, but we could set it in general.
+    # It's done here conditionally to prevent mass-rebuilds.
+    checkPhase =
+      lib.optionalString stdenv.hostPlatform.isDarwin ''LANG="en_US.UTF-8" LC_ALL="en_US.UTF-8" ''
+      + ''
+        ${python.interpreter} test/alltests.py
+      '';
+
+    # Create symlinks lacking a ".py" suffix, many programs depend on these names
+    postFixup = ''
+      for f in $out/bin/*.py; do
+        ln -s $(basename $f) $out/bin/$(basename $f .py)
+      done
+    '';
 
-  # Only Darwin needs LANG, but we could set it in general.
-  # It's done here conditionally to prevent mass-rebuilds.
-  checkPhase = lib.optionalString stdenv.isDarwin ''LANG="en_US.UTF-8" LC_ALL="en_US.UTF-8" '' + ''
-    ${python.interpreter} test/alltests.py
-  '';
-
-  # Create symlinks lacking a ".py" suffix, many programs depend on these names
-  postFixup = ''
-    for f in $out/bin/*.py; do
-      ln -s $(basename $f) $out/bin/$(basename $f .py)
-    done
-  '';
-
-  meta = with lib; {
-    description = "Python Documentation Utilities";
-    homepage = "http://docutils.sourceforge.net/";
-    license = with licenses; [ publicDomain bsd2 psfl gpl3Plus ];
-    maintainers = with maintainers; [ AndersonTorres ];
+    meta = with lib; {
+      description = "Python Documentation Utilities";
+      homepage = "http://docutils.sourceforge.net/";
+      license = with licenses; [
+        publicDomain
+        bsd2
+        psfl
+        gpl3Plus
+      ];
+      maintainers = with maintainers; [ AndersonTorres ];
+    };
   };
-}
+in
+self
diff --git a/pkgs/development/python-modules/docx2python/default.nix b/pkgs/development/python-modules/docx2python/default.nix
index f65f4f7c9075e..374a840050e10 100644
--- a/pkgs/development/python-modules/docx2python/default.nix
+++ b/pkgs/development/python-modules/docx2python/default.nix
@@ -1,15 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, poetry-core
-, lxml
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxml,
+  paragraphs,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "docx2python";
-  version = "2.11.0";
+  version = "3.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,15 +22,18 @@ buildPythonPackage rec {
     owner = "ShayHill";
     repo = "docx2python";
     rev = "refs/tags/${version}";
-    hash = "sha256-SavRYnNbESRQh9Elk8qCt/qdI2x+sYZJFMYy+Gojg2k=";
+    hash = "sha256-ucLDdfmLAWcGunOKvh8tBQknXTPI1qOqyXgVGjQOGoQ=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
+  build-system = [
+    setuptools
+    setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     lxml
+    paragraphs
+    typing-extensions
   ];
 
   nativeCheckInputs = [ pytestCheckHook ];
@@ -34,10 +41,10 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "docx2python" ];
 
   meta = with lib; {
-    homepage = "https://github.com/ShayHill/docx2python";
     description = "Extract docx headers, footers, (formatted) text, footnotes, endnotes, properties, and images";
+    homepage = "https://github.com/ShayHill/docx2python";
     changelog = "https://github.com/ShayHill/docx2python/blob/${src.rev}/CHANGELOG.md";
-    maintainers = [ maintainers.ivar ];
     license = licenses.mit;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/docx2txt/default.nix b/pkgs/development/python-modules/docx2txt/default.nix
index 97c7f2b77692d..75969bc1da3ff 100644
--- a/pkgs/development/python-modules/docx2txt/default.nix
+++ b/pkgs/development/python-modules/docx2txt/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -13,12 +14,10 @@ buildPythonPackage rec {
     hash = "sha256-LAbZjXz+LTlH5XYKV9kk4/8HdFs3nIc3cjki5wCSNuU=";
   };
 
-  pythonImportsCheck = [
-    "docx2txt"
-  ];
+  pythonImportsCheck = [ "docx2txt" ];
 
   meta = with lib; {
-    description = "A pure python-based utility to extract text and images from docx files";
+    description = "Pure python-based utility to extract text and images from docx files";
     mainProgram = "docx2txt";
     homepage = "https://github.com/ankushshah89/python-docx2txt";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/dodgy/default.nix b/pkgs/development/python-modules/dodgy/default.nix
index ada91ac3181e4..3e4569f3035a9 100644
--- a/pkgs/development/python-modules/dodgy/default.nix
+++ b/pkgs/development/python-modules/dodgy/default.nix
@@ -1,42 +1,40 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, isPy3k
-, lib
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
 
-# pythonPackages
-, mock
-, nose
+  # pythonPackages
+  mock,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "dodgy";
   version = "0.2.1";
-  format = "setuptools";
-  disabled = !isPy3k;
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "landscapeio";
-    repo = pname;
+    repo = "dodgy";
     rev = version;
     sha256 = "0ywwjpz0p6ls3hp1lndjr9ql6s5lkj7dgpll1h87w04kwan70j0x";
   };
 
+  build-system = [ setuptools ];
+
   nativeCheckInputs = [
     mock
-    nose
+    pytestCheckHook
   ];
 
-  checkPhase = ''
-    nosetests tests/test_checks.py
-  '';
+  pytestFlagsArray = [ "tests/test_checks.py" ];
 
-  meta = with lib; {
+  meta = {
     description = "Looks at Python code to search for things which look \"dodgy\" such as passwords or diffs";
     mainProgram = "dodgy";
     homepage = "https://github.com/landscapeio/dodgy";
-    license = licenses.mit;
-    maintainers = with maintainers; [
-      kamadorueda
-    ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ kamadorueda ];
   };
 }
diff --git a/pkgs/development/python-modules/dogpile-cache/default.nix b/pkgs/development/python-modules/dogpile-cache/default.nix
index 51d799b90f13f..c6b78aa0504b0 100644
--- a/pkgs/development/python-modules/dogpile-cache/default.nix
+++ b/pkgs/development/python-modules/dogpile-cache/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, pytestCheckHook
-, mako
-, decorator
-, stevedore
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  pytestCheckHook,
+  mako,
+  decorator,
+  stevedore,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "dogpile-cache";
-  version = "1.3.2";
+  version = "1.3.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -20,12 +21,10 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "dogpile.cache";
     inherit version;
-    hash = "sha256-T3HcAzOtNRycb3BPW6Kje/Ucbu0EN9Gt9W4HWVmv5js=";
+    hash = "sha256-+EuO0LD7KX0VEFVEf6jcr3uuVm1Nve/s3MHzdmKrWIs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     decorator
@@ -39,9 +38,9 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A caching front-end based on the Dogpile lock";
+    description = "Caching front-end based on the Dogpile lock";
     homepage = "https://github.com/sqlalchemy/dogpile.cache";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dogtag-pki/default.nix b/pkgs/development/python-modules/dogtag-pki/default.nix
index 53e49e7d7608d..2731e184eed25 100644
--- a/pkgs/development/python-modules/dogtag-pki/default.nix
+++ b/pkgs/development/python-modules/dogtag-pki/default.nix
@@ -1,5 +1,12 @@
-{ stdenv, lib, fetchPypi, buildPythonPackage, cryptography,
-python-ldap, requests, six }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  cryptography,
+  python-ldap,
+  requests,
+  six,
+}:
 
 buildPythonPackage rec {
   pname = "dogtag-pki";
@@ -8,17 +15,23 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-rQSnQPNYr5SyeNbKoFAbnGb2X/8utrfWLa8gu93hy2w=";
+    hash = "sha256-rQSnQPNYr5SyeNbKoFAbnGb2X/8utrfWLa8gu93hy2w=";
   };
 
-  buildInputs = [ cryptography python-ldap ];
+  buildInputs = [
+    cryptography
+    python-ldap
+  ];
   pythonImportsCheck = [ "pki" ];
-  propagatedBuildInputs = [ requests six ];
+  propagatedBuildInputs = [
+    requests
+    six
+  ];
 
   meta = with lib; {
-    description = "An enterprise-class Certificate Authority";
-    homepage    = "https://github.com/dogtagpki/pki";
-    license     = licenses.gpl2;
+    description = "Enterprise-class Certificate Authority";
+    homepage = "https://github.com/dogtagpki/pki";
+    license = licenses.gpl2;
     maintainers = with maintainers; [ s1341 ];
   };
 }
diff --git a/pkgs/development/python-modules/dogtail/default.nix b/pkgs/development/python-modules/dogtail/default.nix
index d0b7e983a0994..04067083b56aa 100644
--- a/pkgs/development/python-modules/dogtail/default.nix
+++ b/pkgs/development/python-modules/dogtail/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, python
-, pygobject3
-, pyatspi
-, pycairo
-, at-spi2-core
-, gobject-introspection
-, gtk3
-, gsettings-desktop-schemas
-, fetchurl
-, dbus
-, xvfb-run
-, wrapGAppsHook
+{
+  lib,
+  buildPythonPackage,
+  python,
+  pygobject3,
+  pyatspi,
+  pycairo,
+  at-spi2-core,
+  gobject-introspection,
+  gtk3,
+  gsettings-desktop-schemas,
+  fetchurl,
+  dbus,
+  xvfb-run,
+  wrapGAppsHook3,
 # , fetchPypi
 }:
 
@@ -20,7 +21,10 @@ buildPythonPackage {
   version = "0.9.11";
   format = "setuptools";
 
-  outputs = [ "out" "dev" ];
+  outputs = [
+    "out"
+    "dev"
+  ];
 
   # https://gitlab.com/dogtail/dogtail/issues/1
   # src = fetchPypi {
@@ -32,12 +36,21 @@ buildPythonPackage {
     sha256 = "EGyxYopupfXPYtTL9mm9ujZorvh8AGaNXVKBPWsGy3c=";
   };
 
-  patches = [
-    ./nix-support.patch
-  ];
+  patches = [ ./nix-support.patch ];
 
-  nativeBuildInputs = [ gobject-introspection dbus xvfb-run wrapGAppsHook ]; # for setup hooks
-  propagatedBuildInputs = [ at-spi2-core gtk3 pygobject3 pyatspi pycairo ];
+  nativeBuildInputs = [
+    gobject-introspection
+    dbus
+    xvfb-run
+    wrapGAppsHook3
+  ]; # for setup hooks
+  propagatedBuildInputs = [
+    at-spi2-core
+    gtk3
+    pygobject3
+    pyatspi
+    pycairo
+  ];
 
   checkPhase = ''
     runHook preCheck
@@ -63,6 +76,6 @@ buildPythonPackage {
     description = "GUI test tool and automation framework that uses Accessibility technologies to communicate with desktop applications";
     homepage = "https://gitlab.com/dogtail/dogtail";
     license = lib.licenses.gpl2Only;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dohq-artifactory/default.nix b/pkgs/development/python-modules/dohq-artifactory/default.nix
new file mode 100644
index 0000000000000..2e44d4464791e
--- /dev/null
+++ b/pkgs/development/python-modules/dohq-artifactory/default.nix
@@ -0,0 +1,57 @@
+{
+  lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonAtLeast
+, setuptools
+, requests
+, python-dateutil
+, pyjwt
+, pytestCheckHook
+, responses
+, nix-update-script
+}:
+
+buildPythonPackage rec {
+  pname = "dohq-artifactory";
+  version = "0.10.1";
+
+  src = fetchFromGitHub {
+    owner = "devopshq";
+    repo = "artifactory";
+    rev = version;
+    hash = "sha256-lMT1b6JUDT01fJzQrVc0lMqeGrJnvk6ms4KIYtfTQps=";
+  };
+
+  # https://github.com/devopshq/artifactory/issues/430
+  disabled = pythonAtLeast "3.12";
+
+  pyproject = true;
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    requests
+    python-dateutil
+    pyjwt
+  ];
+
+  pythonImportsCheck = [ "artifactory" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    responses
+  ];
+
+  pytestFlagsArray = [ "tests/unit" ];
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = with lib; {
+    description = "Python interface library for JFrog Artifactory";
+    homepage = "https://devopshq.github.io/artifactory/";
+    changelog = "https://github.com/devopshq/artifactory/releases/tag/${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ h7x4 ];
+  };
+}
diff --git a/pkgs/development/python-modules/doit-py/default.nix b/pkgs/development/python-modules/doit-py/default.nix
index ee10af6396e70..8ebaadbcf2e76 100644
--- a/pkgs/development/python-modules/doit-py/default.nix
+++ b/pkgs/development/python-modules/doit-py/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, doit
-, configclass
-, mergedict
-, pytestCheckHook
-, hunspell
-, hunspellDicts
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  doit,
+  configclass,
+  mergedict,
+  pytestCheckHook,
+  hunspell,
+  hunspellDicts,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/doit/default.nix b/pkgs/development/python-modules/doit/default.nix
index f855de38ffa2a..188fb1ddbb3b7 100644
--- a/pkgs/development/python-modules/doit/default.nix
+++ b/pkgs/development/python-modules/doit/default.nix
@@ -1,72 +1,79 @@
-{ lib
-, stdenv
-, fetchPypi
-, buildPythonPackage
-, importlib-metadata
-, isPy3k
-, mock
-, pytestCheckHook
-, cloudpickle
-, pyinotify
-, macfsevents
-, toml
-, doit-py
-, pyflakes
-, configclass
-, mergedict
+{
+  lib,
+  stdenv,
+  fetchPypi,
+  buildPythonPackage,
+  importlib-metadata,
+  isPy3k,
+  mock,
+  pytestCheckHook,
+  cloudpickle,
+  pyinotify,
+  macfsevents,
+  toml,
+  doit-py,
+  pyflakes,
+  configclass,
+  mergedict,
 }:
 
-let doit = buildPythonPackage rec {
-  pname = "doit";
-  version = "0.36.0";
-  format = "setuptools";
+let
+  doit = buildPythonPackage rec {
+    pname = "doit";
+    version = "0.36.0";
+    format = "setuptools";
 
-  disabled = !isPy3k;
+    disabled = !isPy3k;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-cdB8zJUUyyL+WdmJmVd2ZeqrV+FvZE0EM2rgtLriNLw=";
-  };
+    src = fetchPypi {
+      inherit pname version;
+      hash = "sha256-cdB8zJUUyyL+WdmJmVd2ZeqrV+FvZE0EM2rgtLriNLw=";
+    };
 
-  propagatedBuildInputs = [
-    cloudpickle
-    importlib-metadata
-    toml
-  ] ++ lib.optional stdenv.isLinux pyinotify
-    ++ lib.optional stdenv.isDarwin macfsevents;
+    propagatedBuildInputs =
+      [
+        cloudpickle
+        importlib-metadata
+        toml
+      ]
+      ++ lib.optional stdenv.hostPlatform.isLinux pyinotify
+      ++ lib.optional stdenv.hostPlatform.isDarwin macfsevents;
 
-  nativeCheckInputs = [
-    configclass
-    doit-py
-    mergedict
-    mock
-    pyflakes
-    pytestCheckHook
-  ];
+    nativeCheckInputs = [
+      configclass
+      doit-py
+      mergedict
+      mock
+      pyflakes
+      pytestCheckHook
+    ];
 
-  # escape infinite recursion with doit-py
-  doCheck = false;
+    # escape infinite recursion with doit-py
+    doCheck = false;
 
-  passthru.tests = {
-    # hangs on darwin
-    check = doit.overridePythonAttrs (_: { doCheck = !stdenv.isDarwin; });
-  };
+    passthru.tests = {
+      # hangs on darwin
+      check = doit.overridePythonAttrs (_: {
+        doCheck = !stdenv.hostPlatform.isDarwin;
+      });
+    };
 
-  pythonImportsCheck = [ "doit" ];
+    pythonImportsCheck = [ "doit" ];
 
-  meta = with lib; {
-    homepage = "https://pydoit.org/";
-    description = "A task management & automation tool";
-    mainProgram = "doit";
-    license = licenses.mit;
-    longDescription = ''
-      doit is a modern open-source build-tool written in python
-      designed to be simple to use and flexible to deal with complex
-      work-flows. It is specially suitable for building and managing
-      custom work-flows where there is no out-of-the-box solution
-      available.
-    '';
-    maintainers = with maintainers; [ pSub ];
+    meta = with lib; {
+      homepage = "https://pydoit.org/";
+      description = "Task management & automation tool";
+      mainProgram = "doit";
+      license = licenses.mit;
+      longDescription = ''
+        doit is a modern open-source build-tool written in python
+        designed to be simple to use and flexible to deal with complex
+        work-flows. It is specially suitable for building and managing
+        custom work-flows where there is no out-of-the-box solution
+        available.
+      '';
+      maintainers = with maintainers; [ pSub ];
+    };
   };
-
-}; in doit
+in
+doit
diff --git a/pkgs/development/python-modules/dokuwiki/default.nix b/pkgs/development/python-modules/dokuwiki/default.nix
index 0d221c3b73b00..698c370ce8e7b 100644
--- a/pkgs/development/python-modules/dokuwiki/default.nix
+++ b/pkgs/development/python-modules/dokuwiki/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
 }:
 
 buildPythonPackage rec {
@@ -13,13 +14,11 @@ buildPythonPackage rec {
     hash = "sha256-gtTyO6jmjQT0ZwmxvH+RAe1v5aruNStfP1qz1+AqYXs=";
   };
 
-  pythonImportsCheck = [
-    "dokuwiki"
-  ];
+  pythonImportsCheck = [ "dokuwiki" ];
 
   meta = with lib; {
     homepage = "https://github.com/fmenabe/python-dokuwiki";
-    description = "A python module that aims to manage DokuWiki wikis by using the provided XML-RPC API";
+    description = "Python module that aims to manage DokuWiki wikis by using the provided XML-RPC API";
     license = licenses.mit;
     maintainers = with maintainers; [ netali ];
   };
diff --git a/pkgs/development/python-modules/dom-toml/default.nix b/pkgs/development/python-modules/dom-toml/default.nix
new file mode 100644
index 0000000000000..36dafc9a86cc4
--- /dev/null
+++ b/pkgs/development/python-modules/dom-toml/default.nix
@@ -0,0 +1,38 @@
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  flit-core,
+  setuptools,
+  domdf-python-tools,
+  tomli,
+}:
+buildPythonPackage rec {
+  pname = "dom-toml";
+  version = "2.0.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit version;
+    pname = "dom_toml";
+    hash = "sha256-PAfoQ2U4mUl0Ensa4DdmHRp3mskVxE/Qazq1/hQP9Yk=";
+  };
+
+  build-system = [ flit-core ];
+
+  nativeBuildInputs = [ setuptools ];
+
+  dependencies = [
+    domdf-python-tools
+    tomli
+  ];
+
+  nativeCheckInputs = [ ];
+
+  meta = {
+    description = "Dom's tools for Tom's Obvious, Minimal Language.";
+    homepage = "https://github.com/domdfcoding/dom_toml";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tyberius-prime ];
+  };
+}
diff --git a/pkgs/development/python-modules/domdf-python-tools/default.nix b/pkgs/development/python-modules/domdf-python-tools/default.nix
new file mode 100644
index 0000000000000..bf73369c19c33
--- /dev/null
+++ b/pkgs/development/python-modules/domdf-python-tools/default.nix
@@ -0,0 +1,40 @@
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  setuptools,
+  natsort,
+  typing-extensions,
+}:
+buildPythonPackage rec {
+  pname = "domdf-python-tools";
+  version = "3.9.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit version;
+    pname = "domdf_python_tools";
+    hash = "sha256-H4qWlxF4MzpV4IPjVhDXaIzXYgrSuZeQFk4fwaNhTBg=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    natsort
+    typing-extensions
+  ];
+
+  nativeCheckInputs = [ ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail '"setuptools!=61.*,<=67.1.0,>=40.6.0"' '"setuptools"'
+  '';
+
+  meta = {
+    description = "Helpful functions for Python";
+    homepage = "https://github.com/domdfcoding/domdf_python_tools";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tyberius-prime ];
+  };
+}
diff --git a/pkgs/development/python-modules/domeneshop/default.nix b/pkgs/development/python-modules/domeneshop/default.nix
index 8778dfc6aa935..a099301f52262 100644
--- a/pkgs/development/python-modules/domeneshop/default.nix
+++ b/pkgs/development/python-modules/domeneshop/default.nix
@@ -1,13 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, urllib3
-, pyopenssl
-, cryptography
-, idna
-, certifi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  urllib3,
+  certifi,
 }:
 
 buildPythonPackage rec {
@@ -15,16 +12,12 @@ buildPythonPackage rec {
   version = "0.4.4";
   pyproject = true;
 
-  disabled = pythonOlder "3.4";
-
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-UCxIDnhIAkxZ1oQXYRyAMdGgUsUZ6AlYXwsxL49TFAg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   dependencies = [
     certifi
diff --git a/pkgs/development/python-modules/dominate/default.nix b/pkgs/development/python-modules/dominate/default.nix
index 2e1f9b7b3559a..f2eae14e99a97 100644
--- a/pkgs/development/python-modules/dominate/default.nix
+++ b/pkgs/development/python-modules/dominate/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,23 +19,17 @@ buildPythonPackage rec {
     hash = "sha256-VYKEaH2biq4ZBOPWBRrRMt1KjAz1UbN+pOfkKjHRncQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dominate"
-  ];
+  pythonImportsCheck = [ "dominate" ];
 
   meta = with lib; {
     description = "Library for creating and manipulating HTML documents using an elegant DOM API";
     homepage = "https://github.com/Knio/dominate/";
     changelog = "https://github.com/Knio/dominate/releases/tag/${version}";
     license = licenses.lgpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/doorbirdpy/default.nix b/pkgs/development/python-modules/doorbirdpy/default.nix
index c06ab09a4d6fe..acb4fab9c31b1 100644
--- a/pkgs/development/python-modules/doorbirdpy/default.nix
+++ b/pkgs/development/python-modules/doorbirdpy/default.nix
@@ -1,37 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitLab
-, requests
-, pytestCheckHook
-, requests-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  setuptools,
+  aiohttp,
+  aioresponses,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "doorbirdpy";
-  version = "2.2.2";
-  format = "setuptools";
+  version = "3.0.3";
+  pyproject = true;
 
   src = fetchFromGitLab {
     owner = "klikini";
     repo = "doorbirdpy";
-    rev = version;
-    hash = "sha256-pgL4JegD1gANefp7jLYb74N9wgpkDgQc/Fe+NyLBrkA=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-0UvzMFYKM/Sb9B2XwZwl+a9v7lTxAc1H59vR88VwDww=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ aiohttp ];
 
   nativeCheckInputs = [
+    aioresponses
+    pytest-asyncio
     pytestCheckHook
-    requests-mock
   ];
 
-  pythonImportsCheck = [
-    "doorbirdpy"
-  ];
+  pythonImportsCheck = [ "doorbirdpy" ];
 
   meta = with lib; {
+    changelog = "https://gitlab.com/klikini/doorbirdpy/-/tags/${version}";
     description = "Python wrapper for the DoorBird LAN API";
     homepage = "https://gitlab.com/klikini/doorbirdpy";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/dopy/default.nix b/pkgs/development/python-modules/dopy/default.nix
index 036a7658fa387..684f4c17ad459 100644
--- a/pkgs/development/python-modules/dopy/default.nix
+++ b/pkgs/development/python-modules/dopy/default.nix
@@ -1,7 +1,8 @@
-{ pkgs
-, buildPythonPackage
-, requests
-, six
+{
+  pkgs,
+  buildPythonPackage,
+  requests,
+  six,
 }:
 
 buildPythonPackage {
@@ -16,7 +17,10 @@ buildPythonPackage {
     sha256 = "0ams289qcgna96aak96jbz6wybs6qb95h2gn8lb4lmx2p5sq4q56";
   };
 
-  propagatedBuildInputs = [ requests six ];
+  propagatedBuildInputs = [
+    requests
+    six
+  ];
 
   # contains no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/dot2tex/default.nix b/pkgs/development/python-modules/dot2tex/default.nix
index fdf7705469eee..acd9bbc34a1f9 100644
--- a/pkgs/development/python-modules/dot2tex/default.nix
+++ b/pkgs/development/python-modules/dot2tex/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, substituteAll
-, pyparsing
-, graphviz
-, pytestCheckHook
-, texliveSmall
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  substituteAll,
+  pyparsing,
+  graphviz,
+  pytestCheckHook,
+  texliveSmall,
 }:
 
 buildPythonPackage rec {
@@ -30,13 +30,16 @@ buildPythonPackage rec {
     ./remove-duplicate-script.patch
   ];
 
-  propagatedBuildInputs = [
-    pyparsing
-  ];
+  propagatedBuildInputs = [ pyparsing ];
 
   nativeCheckInputs = [
     pytestCheckHook
-    (texliveSmall.withPackages (ps: with ps; [ preview pstricks ]))
+    (texliveSmall.withPackages (
+      ps: with ps; [
+        preview
+        pstricks
+      ]
+    ))
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/dotmap/default.nix b/pkgs/development/python-modules/dotmap/default.nix
index 2300ac013a248..dcac1f08ae5a0 100644
--- a/pkgs/development/python-modules/dotmap/default.nix
+++ b/pkgs/development/python-modules/dotmap/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,17 +18,11 @@ buildPythonPackage rec {
     hash = "sha256-WCGnkz8HX7R1Y0F8DpLgt8AxFYtMmmp+VhY0ebZYs2g=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "dotmap/test.py"
-  ];
+  pytestFlagsArray = [ "dotmap/test.py" ];
 
-  pythonImportsCheck = [
-    "dotmap"
-  ];
+  pythonImportsCheck = [ "dotmap" ];
 
   meta = with lib; {
     description = "Python for dot-access dictionaries";
diff --git a/pkgs/development/python-modules/dotty-dict/default.nix b/pkgs/development/python-modules/dotty-dict/default.nix
index 69da618a5a494..166f3cac9705b 100644
--- a/pkgs/development/python-modules/dotty-dict/default.nix
+++ b/pkgs/development/python-modules/dotty-dict/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, setuptools-scm
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/dotwiz/default.nix b/pkgs/development/python-modules/dotwiz/default.nix
index f7fcd7847b760..2c6b588cbb935 100644
--- a/pkgs/development/python-modules/dotwiz/default.nix
+++ b/pkgs/development/python-modules/dotwiz/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyheck
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyheck,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-ABmkwpJ40JceNJieW5bhg0gqWNrR6Wxj84nLCjKU11A=";
   };
 
-  propagatedBuildInputs = [
-    pyheck
-  ];
+  propagatedBuildInputs = [ pyheck ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dotwiz"
-  ];
+  pythonImportsCheck = [ "dotwiz" ];
 
   pytestFlagsArray = [
     "--ignore=benchmarks"
diff --git a/pkgs/development/python-modules/downloader-cli/default.nix b/pkgs/development/python-modules/downloader-cli/default.nix
index 248bafca3967d..719d84d00888f 100644
--- a/pkgs/development/python-modules/downloader-cli/default.nix
+++ b/pkgs/development/python-modules/downloader-cli/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, urllib3
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  urllib3,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-E2K3n9qCQofm4gXu1l7/0iMoJsniuzhsBUplr4aZ39s=";
   };
 
-  propagatedBuildInputs = [
-    urllib3
-  ];
+  propagatedBuildInputs = [ urllib3 ];
 
   # Disable checks due to networking (Errno 101)
   doCheck = false;
 
-  pythonImportsCheck = [
-    "downloader_cli"
-  ];
+  pythonImportsCheck = [ "downloader_cli" ];
 
   meta = with lib; {
     description = "Downloader with an awesome customizable progressbar";
diff --git a/pkgs/development/python-modules/dparse/default.nix b/pkgs/development/python-modules/dparse/default.nix
index 44649dd0e991a..59a19b30caeba 100644
--- a/pkgs/development/python-modules/dparse/default.nix
+++ b/pkgs/development/python-modules/dparse/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, fetchpatch2
-, setuptools
-, packaging
-, tomli
-, pyyaml
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  fetchpatch2,
+  setuptools,
+  packaging,
+  tomli,
+  pyyaml,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -30,15 +31,9 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    packaging
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  propagatedBuildInputs = [ packaging ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   passthru.optional-dependencies = {
     # FIXME pipenv = [ pipenv ];
@@ -49,9 +44,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "dparse"
-  ];
+  pythonImportsCheck = [ "dparse" ];
 
   disabledTests = [
     # requires unpackaged dependency pipenv
@@ -59,7 +52,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A parser for Python dependency files";
+    description = "Parser for Python dependency files";
     homepage = "https://github.com/pyupio/dparse";
     changelog = "https://github.com/pyupio/dparse/blob/${version}/HISTORY.rst";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/dparse2/default.nix b/pkgs/development/python-modules/dparse2/default.nix
index 9d6cb9b085f2e..5b5848d28a752 100644
--- a/pkgs/development/python-modules/dparse2/default.nix
+++ b/pkgs/development/python-modules/dparse2/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, toml
-, pyyaml
-, packvers
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  toml,
+  pyyaml,
+  packvers,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -28,18 +29,14 @@ buildPythonPackage rec {
     packvers
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # Requries pipenv
     "tests/test_parse.py"
   ];
 
-  pythonImportsCheck = [
-    "dparse2"
-  ];
+  pythonImportsCheck = [ "dparse2" ];
 
   meta = with lib; {
     description = "Module to parse Python dependency files";
diff --git a/pkgs/development/python-modules/dpath/default.nix b/pkgs/development/python-modules/dpath/default.nix
index 7ef15b2379c62..808a83238c36b 100644
--- a/pkgs/development/python-modules/dpath/default.nix
+++ b/pkgs/development/python-modules/dpath/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hypothesis
-, pythonOlder
-, mock
-, nose2
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hypothesis,
+  pythonOlder,
+  mock,
+  nose2,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "dpath";
-  version = "2.1.6";
+  version = "2.2.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-8eB8cuhgXGqegLZLyPQnFN4Ip4nH3kF+ScP4ehlpLkc=";
+    hash = "sha256-NPfmMNxV6j8hnlVXJvXaS0sl8iADGcjmkCw5Qljdaj4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     hypothesis
@@ -32,9 +31,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "dpath"
-  ];
+  pythonImportsCheck = [ "dpath" ];
 
   meta = with lib; {
     description = "Python library for accessing and searching dictionaries via /slashed/paths ala xpath";
diff --git a/pkgs/development/python-modules/dpcontracts/default.nix b/pkgs/development/python-modules/dpcontracts/default.nix
index 5a6491b7ee094..df423a46d4784 100644
--- a/pkgs/development/python-modules/dpcontracts/default.nix
+++ b/pkgs/development/python-modules/dpcontracts/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/dpkt/default.nix b/pkgs/development/python-modules/dpkt/default.nix
index 0e339ac00c9f9..564a1aade8923 100644
--- a/pkgs/development/python-modules/dpkt/default.nix
+++ b/pkgs/development/python-modules/dpkt/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/dploot/default.nix b/pkgs/development/python-modules/dploot/default.nix
index d8afa8317043f..13ea26e68c2c5 100644
--- a/pkgs/development/python-modules/dploot/default.nix
+++ b/pkgs/development/python-modules/dploot/default.nix
@@ -8,19 +8,18 @@
   poetry-core,
   pyasn1,
   pythonOlder,
-  pythonRelaxDepsHook,
 }:
 
 buildPythonPackage rec {
   pname = "dploot";
-  version = "2.7.1";
+  version = "3.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-vNL5xrZkfYO11i8ERqD9637vrMb3Gkmo3RjvQ1ONXbY=";
+    hash = "sha256-G39dzP5A6ZySo7AhDIZWXjhtk2zm15wSnrdknLqHHcY=";
   };
 
   pythonRelaxDeps = [
@@ -29,7 +28,6 @@ buildPythonPackage rec {
     "pyasn1"
   ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   build-system = [ poetry-core ];
 
diff --git a/pkgs/development/python-modules/drafthorse/default.nix b/pkgs/development/python-modules/drafthorse/default.nix
new file mode 100644
index 0000000000000..4efde1b74bb8a
--- /dev/null
+++ b/pkgs/development/python-modules/drafthorse/default.nix
@@ -0,0 +1,40 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  lxml,
+  pypdf,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "drafthorse";
+  version = "2.4.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "pretix";
+    repo = "python-drafthorse";
+    rev = version;
+    hash = "sha256-3W5rQ0YhyhIoZ+KsaOjlEJOrcoejPoTIJaylK7DOwKc=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    lxml
+    pypdf
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "drafthorse" ];
+
+  meta = with lib; {
+    description = "Pure-python ZUGFeRD implementation";
+    homepage = "https://github.com/pretix/python-drafthorse";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/development/python-modules/draftjs-exporter/default.nix b/pkgs/development/python-modules/draftjs-exporter/default.nix
index dd03080277b53..29205e3d5dd4b 100644
--- a/pkgs/development/python-modules/draftjs-exporter/default.nix
+++ b/pkgs/development/python-modules/draftjs-exporter/default.nix
@@ -1,10 +1,11 @@
-{ beautifulsoup4
-, buildPythonPackage
-, fetchFromGitHub
-, html5lib
-, lib
-, lxml
-, python
+{
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitHub,
+  html5lib,
+  lib,
+  lxml,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,10 @@ buildPythonPackage rec {
 
   passthru.optional-dependencies = {
     lxml = [ lxml ];
-    html5lib = [ beautifulsoup4 html5lib ];
+    html5lib = [
+      beautifulsoup4
+      html5lib
+    ];
   };
 
   checkInputs = passthru.optional-dependencies.lxml ++ passthru.optional-dependencies.html5lib;
diff --git a/pkgs/development/python-modules/dragonfly/default.nix b/pkgs/development/python-modules/dragonfly/default.nix
index 57b10f4a7c9de..072192a23b5d9 100644
--- a/pkgs/development/python-modules/dragonfly/default.nix
+++ b/pkgs/development/python-modules/dragonfly/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, decorator
-, packaging
-, pynput
-, regex
-, lark
-, enum34
-, pyperclip
-, six
-, requests
-, psutil
-, json-rpc
-, werkzeug
-, kaldi-active-grammar
-, sounddevice
-, webrtcvad
-, setuptools
-, xdotool
-, wmctrl
-, xorg
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  decorator,
+  packaging,
+  pynput,
+  regex,
+  lark,
+  enum34,
+  pyperclip,
+  six,
+  requests,
+  psutil,
+  json-rpc,
+  werkzeug,
+  kaldi-active-grammar,
+  sounddevice,
+  webrtcvad,
+  setuptools,
+  xdotool,
+  wmctrl,
+  xorg,
 }:
 
 buildPythonPackage rec {
@@ -73,6 +74,6 @@ buildPythonPackage rec {
     description = "Speech recognition framework allowing powerful Python-based scripting";
     homepage = "https://github.com/dictation-toolbox/dragonfly";
     license = licenses.lgpl3Plus;
-    maintainers = with maintainers; [ ckie ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dramatiq/default.nix b/pkgs/development/python-modules/dramatiq/default.nix
index 35c2b79c438dd..9eec4bba08fb4 100644
--- a/pkgs/development/python-modules/dramatiq/default.nix
+++ b/pkgs/development/python-modules/dramatiq/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, gevent
-, pika
-, prometheus-client
-, pylibmc
-, pytestCheckHook
-, redis
-, watchdog
-, watchdog-gevent
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  gevent,
+  pika,
+  prometheus-client,
+  pylibmc,
+  pytestCheckHook,
+  redis,
+  watchdog,
+  watchdog-gevent,
 }:
 
 buildPythonPackage rec {
   pname = "dramatiq";
-  version = "1.16.0";
+  version = "1.17.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -24,12 +25,10 @@ buildPythonPackage rec {
     owner = "Bogdanp";
     repo = "dramatiq";
     rev = "refs/tags/v${version}";
-    hash = "sha256-gC1vWnG3zDuFT61i2VgDrP/qIwmGN5GkGv6EVxqUf4U=";
+    hash = "sha256-xKHTBo2AirxDXe/CLSqo++3AgxP4pVkGTNdgS5CCZ3c=";
   };
 
-  propagatedBuildInputs = [
-    prometheus-client
-  ];
+  propagatedBuildInputs = [ prometheus-client ];
 
   passthru.optional-dependencies = {
     all = [
@@ -40,25 +39,22 @@ buildPythonPackage rec {
       watchdog
       watchdog-gevent
     ];
-    gevent = [
-      gevent
-    ];
-    memcached = [
-      pylibmc
-    ];
-    rabbitmq = [
-      pika
-    ];
-    redis = [
-      redis
-    ];
+    gevent = [ gevent ];
+    memcached = [ pylibmc ];
+    rabbitmq = [ pika ];
+    redis = [ redis ];
     watch = [
       watchdog
       watchdog-gevent
     ];
   };
 
-  nativeCheckInputs = [ pytestCheckHook pika redis pylibmc ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pika
+    redis
+    pylibmc
+  ];
 
   postPatch = ''
     sed -i ./setup.cfg \
@@ -68,32 +64,34 @@ buildPythonPackage rec {
       -e 's:--benchmark-compare::' \
   '';
 
-  disabledTests = [
-    # Requires a running redis
-    "test_after_process_boot_call_has_no_blocked_signals"
-    "test_cli_can_be_reloaded_on_sighup"
-    "test_cli_can_watch_for_source_code_changes"
-    "test_cli_fork_functions_have_no_blocked_signals"
-    "test_consumer_threads_have_no_blocked_signals"
-    "test_middleware_fork_functions_have_no_blocked_signals"
-    "test_redis_broker_can_connect_via_client"
-    "test_redis_broker_can_connect_via_url"
-    "test_redis_process_100k_messages_with_cli"
-    "test_redis_process_10k_fib_with_cli"
-    "test_redis_process_1k_latency_with_cli"
-    "test_worker_threads_have_no_blocked_signals"
-    # Requires a running rabbitmq
-    "test_rabbitmq_broker_can_be_passed_a_list_of_parameters_for_failover"
-    "test_rabbitmq_broker_can_be_passed_a_list_of_uri_for_failover"
-    "test_rabbitmq_broker_can_be_passed_a_semicolon_separated_list_of_uris"
-    "test_rabbitmq_broker_connections_are_lazy"
-    "test_rabbitmq_process_100k_messages_with_cli"
-    "test_rabbitmq_process_10k_fib_with_cli"
-    "test_rabbitmq_process_1k_latency_with_cli"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # Takes too long for darwin ofborg
-    "test_retry_exceptions_can_specify_a_delay"
-  ];
+  disabledTests =
+    [
+      # Requires a running redis
+      "test_after_process_boot_call_has_no_blocked_signals"
+      "test_cli_can_be_reloaded_on_sighup"
+      "test_cli_can_watch_for_source_code_changes"
+      "test_cli_fork_functions_have_no_blocked_signals"
+      "test_consumer_threads_have_no_blocked_signals"
+      "test_middleware_fork_functions_have_no_blocked_signals"
+      "test_redis_broker_can_connect_via_client"
+      "test_redis_broker_can_connect_via_url"
+      "test_redis_process_100k_messages_with_cli"
+      "test_redis_process_10k_fib_with_cli"
+      "test_redis_process_1k_latency_with_cli"
+      "test_worker_threads_have_no_blocked_signals"
+      # Requires a running rabbitmq
+      "test_rabbitmq_broker_can_be_passed_a_list_of_parameters_for_failover"
+      "test_rabbitmq_broker_can_be_passed_a_list_of_uri_for_failover"
+      "test_rabbitmq_broker_can_be_passed_a_semicolon_separated_list_of_uris"
+      "test_rabbitmq_broker_connections_are_lazy"
+      "test_rabbitmq_process_100k_messages_with_cli"
+      "test_rabbitmq_process_10k_fib_with_cli"
+      "test_rabbitmq_process_1k_latency_with_cli"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Takes too long for darwin ofborg
+      "test_retry_exceptions_can_specify_a_delay"
+    ];
 
   pythonImportsCheck = [ "dramatiq" ];
 
diff --git a/pkgs/development/python-modules/drawille/default.nix b/pkgs/development/python-modules/drawille/default.nix
index a00b0b16892b2..dbb88dc6fe37b 100644
--- a/pkgs/development/python-modules/drawille/default.nix
+++ b/pkgs/development/python-modules/drawille/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
 
   doCheck = false; # pypi package has no tests, git has no tags
 
-  pythonImportsCheck = [
-    "drawille"
-  ];
+  pythonImportsCheck = [ "drawille" ];
 
   meta = with lib; {
     description = "Drawing in terminal with unicode braille characters";
diff --git a/pkgs/development/python-modules/drawilleplot/default.nix b/pkgs/development/python-modules/drawilleplot/default.nix
index 1ed452c1d1090..b1efda4769455 100644
--- a/pkgs/development/python-modules/drawilleplot/default.nix
+++ b/pkgs/development/python-modules/drawilleplot/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, drawille
-, matplotlib
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  drawille,
+  matplotlib,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     matplotlib
   ];
 
-  pythonImportsCheck = [
-    "drawilleplot"
-  ];
+  pythonImportsCheck = [ "drawilleplot" ];
 
   meta = with lib; {
     description = "matplotlib backend for graph output in unicode terminals using drawille";
diff --git a/pkgs/development/python-modules/drawsvg/default.nix b/pkgs/development/python-modules/drawsvg/default.nix
index 84fd89373ffcd..8feb1a1151ea6 100644
--- a/pkgs/development/python-modules/drawsvg/default.nix
+++ b/pkgs/development/python-modules/drawsvg/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "drawsvg";
-  version = "2.3.0";
+  version = "2.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "cduck";
     repo = "drawsvg";
     rev = "refs/tags/${version}";
-    hash = "sha256-LoA5yYeHO4GqS3dk7EMg1ZC42HBgmM6rSfigWMc4yUQ=";
+    hash = "sha256-JC7u6bEB7RCJVLeYnNqACmddLI5F5PyaaBxaAZ+N/5s=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/dremel3dpy/default.nix b/pkgs/development/python-modules/dremel3dpy/default.nix
index 628b765768603..d2bcddbe180b2 100644
--- a/pkgs/development/python-modules/dremel3dpy/default.nix
+++ b/pkgs/development/python-modules/dremel3dpy/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, decorator
-, fetchPypi
-, imageio
-, imutils
-, pythonOlder
-, requests
-, urllib3
-, tqdm
-, validators
-, yarl
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  decorator,
+  fetchPypi,
+  imageio,
+  imutils,
+  pythonOlder,
+  requests,
+  urllib3,
+  tqdm,
+  validators,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -40,9 +41,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dremel3dpy"
-  ];
+  pythonImportsCheck = [ "dremel3dpy" ];
 
   meta = with lib; {
     description = "Module for interacting with Dremel 3D printers";
diff --git a/pkgs/development/python-modules/drf-jwt/default.nix b/pkgs/development/python-modules/drf-jwt/default.nix
index f4d70949c67aa..5e49603858032 100644
--- a/pkgs/development/python-modules/drf-jwt/default.nix
+++ b/pkgs/development/python-modules/drf-jwt/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyjwt
-, djangorestframework
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyjwt,
+  djangorestframework,
 }:
 
 buildPythonPackage rec {
@@ -20,8 +21,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     pyjwt
     djangorestframework
-  ]
-  ++ pyjwt.optional-dependencies.crypto;
+  ] ++ pyjwt.optional-dependencies.crypto;
 
   # requires setting up a django instance
   doCheck = false;
diff --git a/pkgs/development/python-modules/drf-nested-routers/default.nix b/pkgs/development/python-modules/drf-nested-routers/default.nix
index 849fe8bb130c4..0cdf185fac680 100644
--- a/pkgs/development/python-modules/drf-nested-routers/default.nix
+++ b/pkgs/development/python-modules/drf-nested-routers/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, django
-, djangorestframework
-, pytestCheckHook
-, pytest-django
-, ipdb
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  django,
+  djangorestframework,
+  pytestCheckHook,
+  pytest-django,
+  ipdb,
 }:
 
 buildPythonPackage rec {
@@ -37,13 +38,9 @@ buildPythonPackage rec {
     })
   ];
 
-  buildInputs = [
-    django
-  ];
+  buildInputs = [ django ];
 
-  propagatedBuildInputs = [
-    djangorestframework
-  ];
+  propagatedBuildInputs = [ djangorestframework ];
 
   nativeCheckInputs = [
     ipdb
diff --git a/pkgs/development/python-modules/drf-spectacular-sidecar/default.nix b/pkgs/development/python-modules/drf-spectacular-sidecar/default.nix
index 2ce7b3e92074e..426a9e440013c 100644
--- a/pkgs/development/python-modules/drf-spectacular-sidecar/default.nix
+++ b/pkgs/development/python-modules/drf-spectacular-sidecar/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-EoQKbxzXEuKC50/W1/tBB2wASJZmNNwg9r1qhIB4Ws8=";
   };
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
   # no tests
   doCheck = false;
@@ -29,6 +28,6 @@ buildPythonPackage rec {
     description = "Serve self-contained distribution builds of Swagger UI and Redoc with Django";
     homepage = "https://github.com/tfranzel/drf-spectacular-sidecar";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/drf-spectacular/default.nix b/pkgs/development/python-modules/drf-spectacular/default.nix
index f38a2fbf86bc7..cb9adc54051d9 100644
--- a/pkgs/development/python-modules/drf-spectacular/default.nix
+++ b/pkgs/development/python-modules/drf-spectacular/default.nix
@@ -1,42 +1,47 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, dj-rest-auth
-, django
-, django-allauth
-, django-filter
-, django-oauth-toolkit
-, django-polymorphic
-, django-rest-auth
-, django-rest-polymorphic
-, djangorestframework
-, djangorestframework-camel-case
-, djangorestframework-dataclasses
-, djangorestframework-recursive
-, djangorestframework-simplejwt
-, drf-jwt
-, drf-nested-routers
-, drf-spectacular-sidecar
-, inflection
-, jsonschema
-, psycopg2
-, pytest-django
-, pytestCheckHook
-, pyyaml
-, uritemplate
+{
+  lib,
+  buildPythonPackage,
+  dj-rest-auth,
+  django,
+  django-allauth,
+  django-filter,
+  django-oauth-toolkit,
+  django-polymorphic,
+  django-rest-auth,
+  django-rest-polymorphic,
+  djangorestframework,
+  djangorestframework-camel-case,
+  djangorestframework-dataclasses,
+  djangorestframework-recursive,
+  djangorestframework-simplejwt,
+  drf-jwt,
+  drf-nested-routers,
+  drf-spectacular-sidecar,
+  fetchFromGitHub,
+  fetchpatch,
+  inflection,
+  jsonschema,
+  psycopg2,
+  pytest-django,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  setuptools,
+  uritemplate,
 }:
 
 buildPythonPackage rec {
   pname = "drf-spectacular";
-  version = "0.27.1";
-  format = "setuptools";
+  version = "0.27.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "tfranzel";
     repo = "drf-spectacular";
     rev = "refs/tags/${version}";
-    hash = "sha256-R6rxEo9SNNziXRWB+01UUInParpGcFDIkDZtN4k+dFE=";
+    hash = "sha256-lOgFDkAY+PqSeyLSvWFT7KPVicSJZxd6yl17GAGHbRs=";
   };
 
   patches = [
@@ -47,7 +52,9 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     django
     djangorestframework
     inflection
@@ -77,10 +84,11 @@ buildPythonPackage rec {
   ];
 
   disabledTests = [
-    # requires django with gdal
+    # Test requires django with gdal
     "test_rest_framework_gis"
-    # outdated test artifact
+    # Outdated test artifact
     "test_pydantic_decoration"
+    "test_knox_auth_token"
   ];
 
   pythonImportsCheck = [ "drf_spectacular" ];
@@ -90,6 +98,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/tfranzel/drf-spectacular";
     changelog = "https://github.com/tfranzel/drf-spectacular/releases/tag/${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/drf-ujson2/default.nix b/pkgs/development/python-modules/drf-ujson2/default.nix
index 58277fca7ed61..bf500258a0252 100644
--- a/pkgs/development/python-modules/drf-ujson2/default.nix
+++ b/pkgs/development/python-modules/drf-ujson2/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# dependencies
-, django
-, djangorestframework
-, ujson
-
-# tests
-, pytest-django
-, pytest-mock
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # dependencies
+  django,
+  djangorestframework,
+  ujson,
+
+  # tests
+  pytest-django,
+  pytest-mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
     sed -i '/--cov/d' setup.cfg
   '';
 
-  buildInputs = [
-    django
-  ];
+  buildInputs = [ django ];
 
   propagatedBuildInputs = [
     djangorestframework
diff --git a/pkgs/development/python-modules/drf-writable-nested/default.nix b/pkgs/development/python-modules/drf-writable-nested/default.nix
index 2368c584a457c..2211073b3235f 100644
--- a/pkgs/development/python-modules/drf-writable-nested/default.nix
+++ b/pkgs/development/python-modules/drf-writable-nested/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
-, djangorestframework
-, pytestCheckHook
-, pytest-django
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  djangorestframework,
+  pytestCheckHook,
+  pytest-django,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/drf-yasg/default.nix b/pkgs/development/python-modules/drf-yasg/default.nix
index a8665ecc126f0..1463ae7880b9b 100644
--- a/pkgs/development/python-modules/drf-yasg/default.nix
+++ b/pkgs/development/python-modules/drf-yasg/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, inflection
-, ruamel-yaml
-, setuptools-scm
-, six
-, coreapi
-, djangorestframework
-, pytestCheckHook
-, pytest-django
-, datadiff
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  inflection,
+  ruamel-yaml,
+  setuptools-scm,
+  six,
+  coreapi,
+  djangorestframework,
+  pytestCheckHook,
+  pytest-django,
+  datadiff,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     sed -i "/packaging/d" requirements/base.txt
   '';
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     six
@@ -53,7 +52,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Generation of Swagger/OpenAPI schemas for Django REST Framework";
     homepage = "https://github.com/axnsan12/drf-yasg";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     license = licenses.bsd3;
   };
 }
diff --git a/pkgs/development/python-modules/drivelib/default.nix b/pkgs/development/python-modules/drivelib/default.nix
index 5125be5a418da..0135ca72954cf 100644
--- a/pkgs/development/python-modules/drivelib/default.nix
+++ b/pkgs/development/python-modules/drivelib/default.nix
@@ -1,37 +1,53 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, expiringdict
-, google-auth-httplib2
-, google-auth-oauthlib
-, google-api-python-client
+{
+  lib,
+  buildPythonPackage,
+  expiringdict,
+  fetchPypi,
+  google-api-python-client,
+  google-auth-httplib2,
+  google-auth-oauthlib,
+  pythonOlder,
+  setuptools,
+  versioneer,
 }:
 
 buildPythonPackage rec {
   pname = "drivelib";
   version = "0.3.0";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1bz3dn6wm9mlm2w8czwjmhvf3ws3iggr57hvd8z8acl1qafr2g4m";
+    hash = "sha256-lTyRncKBMoU+ahuekt+LQ/PhNqySf4a4qLSmyo1t468=";
   };
 
-  propagatedBuildInputs = [
+  postPatch = ''
+    # Remove vendorized versioneer.py
+    rm versioneer.py
+  '';
+
+  build-system = [
+    setuptools
+    versioneer
+  ];
+
+  dependencies = [
+    expiringdict
     google-api-python-client
-    google-auth-oauthlib
     google-auth-httplib2
-    expiringdict
+    google-auth-oauthlib
   ];
 
-  # tests depend on a google auth token
+  # Tests depend on a google auth token
   doCheck = false;
 
   pythonImportsCheck = [ "drivelib" ];
 
   meta = with lib; {
     description = "Easy access to the most common Google Drive API calls";
-    homepage = "https://pypi.org/project/drivelib/";
+    homepage = "https://github.com/Lykos153/python-drivelib";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ gravndal ];
   };
diff --git a/pkgs/development/python-modules/drms/default.nix b/pkgs/development/python-modules/drms/default.nix
index 8615edf31338f..e2f2c295a37ae 100644
--- a/pkgs/development/python-modules/drms/default.nix
+++ b/pkgs/development/python-modules/drms/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, pandas
-, six
-, astropy
-, oldest-supported-numpy
-, pytestCheckHook
-, pytest-doctestplus
-, pythonOlder
-, setuptools-scm
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  pandas,
+  six,
+  astropy,
+  oldest-supported-numpy,
+  pytestCheckHook,
+  pytest-doctestplus,
+  pythonOlder,
+  setuptools-scm,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -43,13 +44,9 @@ buildPythonPackage rec {
     pytest-doctestplus
   ];
 
-  disabledTests = [
-    "test_query_hexadecimal_strings"
-  ];
+  disabledTests = [ "test_query_hexadecimal_strings" ];
 
-  disabledTestPaths = [
-    "docs/tutorial.rst"
-  ];
+  disabledTestPaths = [ "docs/tutorial.rst" ];
 
   pythonImportsCheck = [ "drms" ];
 
@@ -57,6 +54,6 @@ buildPythonPackage rec {
     description = "Access HMI, AIA and MDI data with Python";
     homepage = "https://github.com/sunpy/drms";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dronecan/default.nix b/pkgs/development/python-modules/dronecan/default.nix
index 49c5dbb51db42..fc0c3e5e15f1b 100644
--- a/pkgs/development/python-modules/dronecan/default.nix
+++ b/pkgs/development/python-modules/dronecan/default.nix
@@ -1,28 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "dronecan";
   version = "1.0.26";
   format = "setuptools";
-  disabled = pythonOlder "3.3";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-D2odxa9ADswrg6rgKLTyQulHpGec1r0lWRUZDV5YvyE=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dronecan"
-  ];
+  pythonImportsCheck = [ "dronecan" ];
 
   meta = with lib; {
     description = "Python implementation of the DroneCAN v1 protocol stack";
diff --git a/pkgs/development/python-modules/dropbox/default.nix b/pkgs/development/python-modules/dropbox/default.nix
index 762b9b7ff8cf2..73a551a5c278a 100644
--- a/pkgs/development/python-modules/dropbox/default.nix
+++ b/pkgs/development/python-modules/dropbox/default.nix
@@ -1,35 +1,42 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, requests
-, setuptools
-, six
-, stone
-, mock
-, pytest-mock
-, pytestCheckHook
-, sphinxHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  requests,
+  six,
+  stone,
+  mock,
+  pytest-mock,
+  pytestCheckHook,
+  sphinxHook,
+  sphinx-rtd-theme,
 }:
 
 buildPythonPackage rec {
   pname = "dropbox";
-  version = "11.36.2";
-  format = "setuptools";
+  version = "12.0.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
-  outputs = ["out" "doc"];
+
+  outputs = [
+    "out"
+    "doc"
+  ];
 
   src = fetchFromGitHub {
     owner = "dropbox";
     repo = "dropbox-sdk-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-d++lxsbwPxnz1JPguWkImHXB+GQpMa9Uo3JNIxIe2ok=";
+    hash = "sha256-9Fsh06V226vIyJhrlLkh9Xr4UGoEIISnIFCtuKqI218=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     requests
-    setuptools
     six
     stone
   ];
@@ -42,16 +49,24 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "'pytest-runner == 5.2.0'," ""
+      --replace "'pytest-runner==5.2.0'," ""
   '';
 
   doCheck = true;
 
-  pythonImportsCheck = [
-    "dropbox"
+  pythonImportsCheck = [ "dropbox" ];
+
+  nativeBuildInputs = [
+    sphinxHook
+    sphinx-rtd-theme
   ];
 
-  nativeBuildInputs = [ sphinxHook ];
+  # Version 12.0.0 re-introduced Python 2 support and set some very restrictive version bounds
+  # https://github.com/dropbox/dropbox-sdk-python/commit/75596daf316b4a806f18057e2797a15bdf83cf6d
+  # This will be the last major version to support Python 2, so version bounds might be more reasonable again in the future.
+  pythonRelaxDeps = [
+    "stone"
+  ];
 
   # Set SCOPED_USER_DROPBOX_TOKEN environment variable to a valid value.
   disabledTests = [
@@ -73,6 +88,8 @@ buildPythonPackage rec {
     "test_as_user"
     "test_as_admin"
     "test_clone_when_team_linked"
+    "test_bad_pins"
+    "test_bad_pins_session"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/ds-store/default.nix b/pkgs/development/python-modules/ds-store/default.nix
index 70fc1198916d1..0e2986b3a8a6c 100644
--- a/pkgs/development/python-modules/ds-store/default.nix
+++ b/pkgs/development/python-modules/ds-store/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mac-alias
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mac-alias,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-45lmkE61uXVCBUMyVVzowTJoALY1m9JI68s7Yb0vCks=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    mac-alias
-  ];
+  propagatedBuildInputs = [ mac-alias ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ds_store"
-  ];
+  pythonImportsCheck = [ "ds_store" ];
 
   meta = with lib; {
     homepage = "https://github.com/al45tair/ds_store";
diff --git a/pkgs/development/python-modules/ds4drv/default.nix b/pkgs/development/python-modules/ds4drv/default.nix
index ab08f7b9c2ed8..d4ebc468f9ef5 100644
--- a/pkgs/development/python-modules/ds4drv/default.nix
+++ b/pkgs/development/python-modules/ds4drv/default.nix
@@ -1,12 +1,19 @@
-{ lib, fetchFromGitHub, buildPythonPackage
-, evdev, pyudev
-, bluez
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  evdev,
+  pyudev,
+  bluez,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "ds4drv";
   version = "0.5.1";
-  format = "setuptools";
+
+  pyproject = true;
+  build-system = [ setuptools ];
 
   # PyPi only carries py3 wheel
   src = fetchFromGitHub {
@@ -16,7 +23,15 @@ buildPythonPackage rec {
     sha256 = "0vinpla0apizzykcyfis79mrm1i6fhns83nkzw85svypdhkx2g8v";
   };
 
-  propagatedBuildInputs = [ evdev pyudev ];
+  postPatch = ''
+    substituteInPlace ds4drv/config.py \
+      --replace-fail SafeConfigParser ConfigParser
+  '';
+
+  dependencies = [
+    evdev
+    pyudev
+  ];
 
   buildInputs = [ bluez ];
 
diff --git a/pkgs/development/python-modules/dscribe/default.nix b/pkgs/development/python-modules/dscribe/default.nix
new file mode 100644
index 0000000000000..59ff3cdd88d32
--- /dev/null
+++ b/pkgs/development/python-modules/dscribe/default.nix
@@ -0,0 +1,46 @@
+{ buildPythonPackage
+, lib
+, fetchFromGitHub
+, numpy
+, scipy
+, ase
+, joblib
+, sparse
+, pybind11
+, scikit-learn
+}:
+
+buildPythonPackage rec {
+  name = "dscribe";
+  version = "2.1.1";
+
+  src = fetchFromGitHub {
+    owner = "singroup";
+    repo = "dscribe";
+    rev = "v${version}";
+    fetchSubmodules = true; # Bundles a specific version of Eigen
+    hash = "sha256-2JY24cR2ie4+4svVWC4rm3Iy6Wfg0n2vkINz032kPWc=";
+  };
+
+  pyproject = true;
+
+  build-system = [
+    pybind11
+  ];
+
+  dependencies = [
+    numpy
+    scipy
+    ase
+    joblib
+    sparse
+    scikit-learn
+  ];
+
+  meta = with lib; {
+    description = "Machine learning descriptors for atomistic systems";
+    homepage = "https://github.com/SINGROUP/dscribe";
+    license = licenses.asl20;
+    maintainers = [ maintainers.sheepforce ];
+  };
+}
diff --git a/pkgs/development/python-modules/dsinternals/default.nix b/pkgs/development/python-modules/dsinternals/default.nix
index 93b600c04484d..ef827f13ba158 100644
--- a/pkgs/development/python-modules/dsinternals/default.nix
+++ b/pkgs/development/python-modules/dsinternals/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pycryptodomex
-, pyopenssl
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pycryptodomex,
+  pyopenssl,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,17 +27,11 @@ buildPythonPackage rec {
     pycryptodomex
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "dsinternals"
-  ];
+  pythonImportsCheck = [ "dsinternals" ];
 
-  pytestFlagsArray = [
-    "tests/*.py"
-  ];
+  pytestFlagsArray = [ "tests/*.py" ];
 
   meta = with lib; {
     description = "Module to interact with Windows Active Directory";
diff --git a/pkgs/development/python-modules/dsl2html/default.nix b/pkgs/development/python-modules/dsl2html/default.nix
index c3c2621ca2a9e..258f7a389a94d 100644
--- a/pkgs/development/python-modules/dsl2html/default.nix
+++ b/pkgs/development/python-modules/dsl2html/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-, setuptools
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
     hash = "sha256-LUtTMqQuwahIeMm9QvMe6rdHEw5LEjMQdyZFZvf/HRU=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   pythonImportsCheck = [ "dsl" ];
 
diff --git a/pkgs/development/python-modules/dsmr-parser/default.nix b/pkgs/development/python-modules/dsmr-parser/default.nix
index 22e76d6036cb0..81d5e0376b58c 100644
--- a/pkgs/development/python-modules/dsmr-parser/default.nix
+++ b/pkgs/development/python-modules/dsmr-parser/default.nix
@@ -1,20 +1,22 @@
-{ lib
-, buildPythonPackage
-, dlms-cosem
-, fetchFromGitHub
-, pyserial
-, pyserial-asyncio
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, pytz
-, tailer
+{
+  lib,
+  buildPythonPackage,
+  dlms-cosem,
+  fetchFromGitHub,
+  pyserial,
+  pyserial-asyncio-fast,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  pytz,
+  setuptools,
+  tailer,
 }:
 
 buildPythonPackage rec {
   pname = "dsmr-parser";
-  version = "1.4.0";
-  format = "setuptools";
+  version = "1.4.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -22,35 +24,33 @@ buildPythonPackage rec {
     owner = "ndokter";
     repo = "dsmr_parser";
     rev = "refs/tags/v${version}";
-    hash = "sha256-4L7hLDd/hYYdhnkcPRK48FnHutbyDXpnhQoVXUQLoDo=";
+    hash = "sha256-NfleByW9MF7FS4n/cMv297382LucP6Z629CuA6chm20=";
   };
 
-  propagatedBuildInputs = [
+  pythonRelaxDeps = [ "dlms-cosem" ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     dlms-cosem
     pyserial
-    pyserial-asyncio
+    pyserial-asyncio-fast
     pytz
     tailer
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = lib.optionals (pythonAtLeast "3.12") [
-    "test_receive_packet"
-  ];
+  disabledTests = lib.optionals (pythonAtLeast "3.12") [ "test_receive_packet" ];
 
-  pythonImportsCheck = [
-    "dsmr_parser"
-  ];
+  pythonImportsCheck = [ "dsmr_parser" ];
 
   meta = with lib; {
     description = "Python module to parse Dutch Smart Meter Requirements (DSMR)";
-    mainProgram = "dsmr_console";
     homepage = "https://github.com/ndokter/dsmr_parser";
     changelog = "https://github.com/ndokter/dsmr_parser/releases/tag/v${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "dsmr_console";
   };
 }
diff --git a/pkgs/development/python-modules/dtlssocket/default.nix b/pkgs/development/python-modules/dtlssocket/default.nix
index bad1a6c733777..a9810c51cb07a 100644
--- a/pkgs/development/python-modules/dtlssocket/default.nix
+++ b/pkgs/development/python-modules/dtlssocket/default.nix
@@ -1,27 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, autoconf
-, cython_0
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  autoconf,
+  automake,
+  cython,
+  pkg-config,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "dtlssocket";
-  version = "0.1.16";
-
-  format = "pyproject";
+  version = "0.2.2";
+  pyproject = true;
 
   src = fetchPypi {
-    pname = "DTLSSocket";
-    inherit version;
-    hash = "sha256-MLEIrkX84cAz4+9sLd1+dBgGKuN0Io46f6lpslQ2ajk=";
+    inherit pname version;
+    hash = "sha256-TnbXFXJuDEbcCeNdqbZxewY8I4mwbBcj3sw7o4tzh/Q=";
   };
 
+  build-system = [
+    cython
+    setuptools
+  ];
+
   nativeBuildInputs = [
     autoconf
-    cython_0
-    setuptools
+    automake
+    pkg-config
   ];
 
   # no tests on PyPI, no tags on GitLab
diff --git a/pkgs/development/python-modules/dtschema/default.nix b/pkgs/development/python-modules/dtschema/default.nix
index 4647dbbb3002b..2dffd2d5bc95d 100644
--- a/pkgs/development/python-modules/dtschema/default.nix
+++ b/pkgs/development/python-modules/dtschema/default.nix
@@ -1,13 +1,14 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, jsonschema
-, pythonOlder
-, rfc3987
-, ruamel-yaml
-, setuptools-scm
-, libfdt
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jsonschema,
+  pythonOlder,
+  rfc3987,
+  ruamel-yaml,
+  setuptools-scm,
+  libfdt,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
     ./fix_libfdt_name.patch
   ];
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     jsonschema
@@ -43,24 +42,25 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dtschema"
-  ];
+  pythonImportsCheck = [ "dtschema" ];
 
   meta = with lib; {
     description = "Tooling for devicetree validation using YAML and jsonschema";
     homepage = "https://github.com/devicetree-org/dt-schema/";
     changelog = "https://github.com/devicetree-org/dt-schema/releases/tag/v${version}";
-    license = with licenses; [ bsd2 /* or */ gpl2Only ];
+    license = with licenses; [
+      bsd2 # or
+      gpl2Only
+    ];
     maintainers = with maintainers; [ sorki ];
 
     broken = (
       # Library not loaded: @rpath/libfdt.1.dylib
-      stdenv.isDarwin ||
+      stdenv.hostPlatform.isDarwin
+      ||
 
-      # see https://github.com/devicetree-org/dt-schema/issues/108
-      versionAtLeast jsonschema.version "4.18"
+        # see https://github.com/devicetree-org/dt-schema/issues/108
+        versionAtLeast jsonschema.version "4.18"
     );
   };
 }
-
diff --git a/pkgs/development/python-modules/dtw-python/default.nix b/pkgs/development/python-modules/dtw-python/default.nix
index 02e4176e9b978..a8481e78c7440 100644
--- a/pkgs/development/python-modules/dtw-python/default.nix
+++ b/pkgs/development/python-modules/dtw-python/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cython
-, oldest-supported-numpy
-, setuptools
-, wheel
-, scipy
-, numpy
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cython,
+  oldest-supported-numpy,
+  setuptools,
+  wheel,
+  scipy,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dtw-python";
-  version = "1.4.2";
+  version = "1.4.4";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -22,7 +23,7 @@ buildPythonPackage rec {
     owner = "DynamicTimeWarping";
     repo = "dtw-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Y0XzAPc2iJIp799gXTO7bUcHuOrDyqkd64DulLbdcAg=";
+    hash = "sha256-9+0NxQAvhVeH9RcBPTr1CjIjTqTsiUz68UIne5dErvw=";
   };
 
   nativeBuildInputs = [
@@ -41,9 +42,7 @@ buildPythonPackage rec {
   preCheck = "cd $out";
   nativeCheckInputs = [ pytestCheckHook ];
   # tests/ are not included to output package, so we have to set path explicitly
-  pytestFlagsArray = [
-    "$src/tests"
-  ];
+  pytestFlagsArray = [ "$src/tests" ];
 
   pythonImportsCheck = [ "dtw" ];
 
diff --git a/pkgs/development/python-modules/ducc0/default.nix b/pkgs/development/python-modules/ducc0/default.nix
index aa44378f6c793..d42085999e851 100644
--- a/pkgs/development/python-modules/ducc0/default.nix
+++ b/pkgs/development/python-modules/ducc0/default.nix
@@ -1,5 +1,4 @@
 {
-  stdenv,
   lib,
   buildPythonPackage,
   fetchFromGitLab,
@@ -36,7 +35,6 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "ducc0" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
     homepage = "https://gitlab.mpcdf.mpg.de/mtr/ducc";
     description = "Efficient algorithms for Fast Fourier transforms and more";
     license = licenses.gpl2Plus;
diff --git a/pkgs/development/python-modules/duckdb-engine/default.nix b/pkgs/development/python-modules/duckdb-engine/default.nix
index be851c7e16fa9..1a560f24f7705 100644
--- a/pkgs/development/python-modules/duckdb-engine/default.nix
+++ b/pkgs/development/python-modules/duckdb-engine/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, duckdb
-, hypothesis
-, ipython-sql
-, pandas
-, poetry-core
-, pytest-remotedata
-, snapshottest
-, sqlalchemy
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  duckdb,
+  hypothesis,
+  pandas,
+  poetry-core,
+  pytest-remotedata,
+  snapshottest,
+  sqlalchemy,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "duckdb-engine";
-  version = "0.12.0";
+  version = "0.13.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,12 +26,10 @@ buildPythonPackage rec {
     repo = "duckdb_engine";
     owner = "Mause";
     rev = "refs/tags/v${version}";
-    hash = "sha256-cm0vbz0VZ2Ws6FDWJO16q4KZW2obs0CBNrfY9jmR+6A=";
+    hash = "sha256-zao8kzzQbnjwJqjHyqDkgmXa3E9nlBH2W0wh7Kjk/qw=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     duckdb
@@ -41,32 +40,31 @@ buildPythonPackage rec {
     export HOME="$(mktemp -d)"
   '';
 
-  disabledTests = [
-    # test should be skipped based on sqlalchemy version but isn't and fails
-    "test_commit"
-  ];
-
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   checkInputs = [
     hypothesis
-    ipython-sql
     pandas
     pytest-remotedata
-    snapshottest
     typing-extensions
+  ] ++ lib.optionals (pythonOlder "3.12") [
+    # requires wasmer which is broken for python 3.12
+    # https://github.com/wasmerio/wasmer-python/issues/778
+    snapshottest
   ];
 
   pytestFlagsArray = [
-    "-m" "'not remote_data'"
+    "-m"
+    "'not remote_data'"
   ];
 
-  pythonImportsCheck = [
-    "duckdb_engine"
+  disabledTestPaths = lib.optionals (pythonAtLeast "3.12") [
+    # requires snapshottest
+    "duckdb_engine/tests/test_datatypes.py"
   ];
 
+  pythonImportsCheck = [ "duckdb_engine" ];
+
   meta = with lib; {
     description = "SQLAlchemy driver for duckdb";
     homepage = "https://github.com/Mause/duckdb_engine";
diff --git a/pkgs/development/python-modules/duckdb/default.nix b/pkgs/development/python-modules/duckdb/default.nix
index 34f20998ef3d5..77b348e271f00 100644
--- a/pkgs/development/python-modules/duckdb/default.nix
+++ b/pkgs/development/python-modules/duckdb/default.nix
@@ -1,37 +1,46 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, duckdb
-, fsspec
-, google-cloud-storage
-, numpy
-, openssl
-, pandas
-, psutil
-, pybind11
-, setuptools-scm
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  duckdb,
+  fsspec,
+  google-cloud-storage,
+  numpy,
+  openssl,
+  pandas,
+  psutil,
+  pybind11,
+  setuptools-scm,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
-  inherit (duckdb) patches pname rev src version;
+  inherit (duckdb)
+    patches
+    pname
+    rev
+    src
+    version
+    ;
   pyproject = true;
 
-  postPatch = (duckdb.postPatch or "") + ''
-    # we can't use sourceRoot otherwise patches don't apply, because the patches apply to the C++ library
-    cd tools/pythonpkg
+  postPatch =
+    (duckdb.postPatch or "")
+    + ''
+      # we can't use sourceRoot otherwise patches don't apply, because the patches apply to the C++ library
+      cd tools/pythonpkg
 
-    # 1. let nix control build cores
-    # 2. default to extension autoload & autoinstall disabled
-    substituteInPlace setup.py \
-      --replace-fail "ParallelCompile()" 'ParallelCompile("NIX_BUILD_CORES")' \
-      --replace-fail "define_macros.extend([('DUCKDB_EXTENSION_AUTOLOAD_DEFAULT', '1'), ('DUCKDB_EXTENSION_AUTOINSTALL_DEFAULT', '1')])" "pass"
-  '';
+      # 1. let nix control build cores
+      # 2. default to extension autoload & autoinstall disabled
+      substituteInPlace setup.py \
+        --replace-fail "ParallelCompile()" 'ParallelCompile("NIX_BUILD_CORES")' \
+        --replace-fail "define_macros.extend([('DUCKDB_EXTENSION_AUTOLOAD_DEFAULT', '1'), ('DUCKDB_EXTENSION_AUTOINSTALL_DEFAULT', '1')])" "pass"
+    '';
 
   env = {
     BUILD_HTTPFS = 1;
     DUCKDB_BUILD_UNITY = 1;
-    OVERRIDE_GIT_DESCRIBE="v${version}-0-g${rev}";
+    OVERRIDE_GIT_DESCRIBE = "v${version}-0-g${rev}";
   };
 
   nativeBuildInputs = [
@@ -54,11 +63,7 @@ buildPythonPackage rec {
   ];
 
   # test flags from .github/workflows/Python.yml
-  pytestFlagsArray = [
-    "--verbose"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "tests/fast"
-  ];
+  pytestFlagsArray = [ "--verbose" ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ "tests/fast" ];
 
   disabledTestPaths = [
     # avoid dependency on mypy
@@ -69,6 +74,9 @@ buildPythonPackage rec {
     # tries to make http request
     "test_install_non_existent_extension"
 
+    # test is flaky https://github.com/duckdb/duckdb/issues/11961
+    "test_fetchmany"
+
     # https://github.com/duckdb/duckdb/issues/10702
     # tests are racy and interrupt can be delivered before or after target point
     # causing a later test to fail with a spurious KeyboardInterrupt
@@ -82,9 +90,7 @@ buildPythonPackage rec {
     rm -rf duckdb
   '';
 
-  pythonImportsCheck = [
-    "duckdb"
-  ];
+  pythonImportsCheck = [ "duckdb" ];
 
   meta = with lib; {
     description = "Python binding for DuckDB";
diff --git a/pkgs/development/python-modules/duckduckgo-search/default.nix b/pkgs/development/python-modules/duckduckgo-search/default.nix
index 708762bb2622f..ca69dba4338fd 100644
--- a/pkgs/development/python-modules/duckduckgo-search/default.nix
+++ b/pkgs/development/python-modules/duckduckgo-search/default.nix
@@ -1,20 +1,19 @@
-{ lib
-, aiofiles
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, h2
-, httpx
-, lxml
-, pythonOlder
-, requests
-, setuptools
-, socksio
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  pyreqwest-impersonate,
+
+  # Optional dependencies
+  lxml,
 }:
 
 buildPythonPackage rec {
   pname = "duckduckgo-search";
-  version = "5.0";
+  version = "6.1.12";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -23,35 +22,30 @@ buildPythonPackage rec {
     owner = "deedy5";
     repo = "duckduckgo_search";
     rev = "refs/tags/v${version}";
-    hash = "sha256-OZFkSFyXC2MFP2MbKwF/qR8zvCFzPKgLmX+nuIztOpw=";
+    hash = "sha256-HidBPd69Fihx6+fGifil0PSZ7lGfW+qStzma8Npfmes=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    aiofiles
+  dependencies = [
     click
-    h2
-    httpx
-    lxml
-    requests
-    socksio
-  ] ++ httpx.optional-dependencies.brotli
-    ++ httpx.optional-dependencies.http2
-    ++ httpx.optional-dependencies.socks;
-
-  pythonImportsCheck = [
-    "duckduckgo_search"
+    pyreqwest-impersonate
   ];
 
-  meta = with lib; {
+  optional-dependencies = {
+    lxml = [ lxml ];
+  };
+
+  doCheck = false; # tests require network access
+
+  pythonImportsCheck = [ "duckduckgo_search" ];
+
+  meta = {
     description = "Python CLI and library for searching for words, documents, images, videos, news, maps and text translation using the DuckDuckGo.com search engine";
     mainProgram = "ddgs";
     homepage = "https://github.com/deedy5/duckduckgo_search";
-    changelog = "https://github.com/deedy5/duckduckgo_search/releases/tag/v${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    changelog = "https://github.com/deedy5/duckduckgo_search/releases/tag/${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ drawbu ];
   };
 }
diff --git a/pkgs/development/python-modules/duct-py/default.nix b/pkgs/development/python-modules/duct-py/default.nix
index 6a79305e90b5b..2d9b7ca504ce8 100644
--- a/pkgs/development/python-modules/duct-py/default.nix
+++ b/pkgs/development/python-modules/duct-py/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "duct" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # This test completely empties the environment then tries to run a Python command.
@@ -30,7 +29,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A Python library for running child processes";
+    description = "Python library for running child processes";
     homepage = "https://github.com/oconnor663/duct.py";
     license = licenses.mit;
     maintainers = with maintainers; [ zmitchell ];
diff --git a/pkgs/development/python-modules/duden/default.nix b/pkgs/development/python-modules/duden/default.nix
index 6381da7271eee..a4da49d62f179 100644
--- a/pkgs/development/python-modules/duden/default.nix
+++ b/pkgs/development/python-modules/duden/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, crayons
-, fetchFromGitHub
-, poetry-core
-, pyxdg
-, pyyaml
-, requests
-, setuptools
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  crayons,
+  fetchFromGitHub,
+  poetry-core,
+  pyxdg,
+  pyyaml,
+  requests,
+  setuptools,
 }:
 
 let
@@ -23,9 +24,7 @@ let
       hash = "sha256-c6IItrjFVbsdYg3sDrExcxv7aRcKhd/M5hiZD+wBZ2Y=";
     };
 
-    nativeBuildInputs = [
-      poetry-core
-    ];
+    nativeBuildInputs = [ poetry-core ];
 
     propagatedBuildInputs = [
       beautifulsoup4
@@ -49,7 +48,10 @@ let
       '';
       license = with lib.licenses; [ mit ];
       mainProgram = "duden";
-      maintainers = with lib.maintainers; [ AndersonTorres linuxissuper ];
+      maintainers = with lib.maintainers; [
+        AndersonTorres
+        linuxissuper
+      ];
     };
   };
 in
diff --git a/pkgs/development/python-modules/duecredit/default.nix b/pkgs/development/python-modules/duecredit/default.nix
index 582d572a44203..5aa4505b91961 100644
--- a/pkgs/development/python-modules/duecredit/default.nix
+++ b/pkgs/development/python-modules/duecredit/default.nix
@@ -1,31 +1,46 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, pytestCheckHook
-, vcrpy
-, citeproc-py
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  pytestCheckHook,
+  vcrpy,
+  citeproc-py,
+  looseversion,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "duecredit";
-  version = "0.9.3";
+  version = "0.10.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-+DeOqQ0R+XUlkuSHySFj2oDZqf85mT64PAi/LtTso3I=";
+    hash = "sha256-/nOiDk+7LZcroB7fN97BsLoeZG7+XvTMrwxnJMoofUI=";
   };
 
-  nativeBuildInputs = [ setuptools ];
-  propagatedBuildInputs = [ citeproc-py requests ];
+  postPatch = ''
+    substituteInPlace tox.ini  \
+      --replace-fail "--cov=duecredit" ""  \
+      --replace-fail "--cov-config=tox.ini" ""
+  '';
 
-  nativeCheckInputs = [ pytestCheckHook vcrpy ];
-  disabledTests = [ "test_import_doi" ];  # tries to access network
+  nativeBuildInputs = [ setuptools ];
+  propagatedBuildInputs = [
+    citeproc-py
+    looseversion
+    requests
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    vcrpy
+  ];
+  disabledTests = [ "test_import_doi" ]; # tries to access network
 
   preCheck = ''
     export HOME=$(mktemp -d)
@@ -33,12 +48,12 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "duecredit" ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://github.com/duecredit/duecredit";
     description = "Simple framework to embed references in code";
     mainProgram = "duecredit";
     changelog = "https://github.com/duecredit/duecredit/releases/tag/${version}";
-    license = licenses.bsd2;
-    maintainers = with maintainers; [ bcdarwin ];
+    license = lib.licenses.bsd2;
+    maintainers = [ lib.maintainers.bcdarwin ];
   };
 }
diff --git a/pkgs/development/python-modules/duet/default.nix b/pkgs/development/python-modules/duet/default.nix
index 1bde4c0f65fce..2f9720bc0de1a 100644
--- a/pkgs/development/python-modules/duet/default.nix
+++ b/pkgs/development/python-modules/duet/default.nix
@@ -1,28 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "duet";
-  version = "0.2.7";
-  format = "setuptools";
+  version = "0.2.9";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "google";
     repo = "duet";
-    rev = "v${version}";
-    hash = "sha256-9CTAupAxZI1twoLpgr7VfECw70QunE6pk+SskiT3JDw=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-P7JxUigD7ZyhtocV+YuAVxuUYVa4F7PpXuA1CCmcMvg=";
   };
 
-  propagatedBuildInputs = [ typing-extensions ];
+  build-system = [ setuptools ];
+
+  dependencies = [ typing-extensions ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
+  pythonImportsCheck = [ "duet" ];
+
   meta = with lib; {
-    description = "A simple future-based async library for python";
+    description = "Simple future-based async library for python";
     homepage = "https://github.com/google/duet";
     maintainers = with maintainers; [ drewrisinger ];
   };
diff --git a/pkgs/development/python-modules/dufte/default.nix b/pkgs/development/python-modules/dufte/default.nix
index b112e481a9cc9..53ef911b8814e 100644
--- a/pkgs/development/python-modules/dufte/default.nix
+++ b/pkgs/development/python-modules/dufte/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, importlib-metadata
-, matplotlib
-, numpy
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  importlib-metadata,
+  matplotlib,
+  numpy,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,16 +23,12 @@ buildPythonPackage rec {
     hash = "sha256:0ccsmpj160xj6w503a948aw8icj55mw9414xnmijmmjvlwhm0p48";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     matplotlib
     numpy
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   preCheck = ''
     export HOME=$(mktemp -d)
@@ -40,9 +37,7 @@ buildPythonPackage rec {
     ln -s $HOME/.config/matplotlib $HOME/.matplotlib
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "dufte" ];
 
diff --git a/pkgs/development/python-modules/dugong/default.nix b/pkgs/development/python-modules/dugong/default.nix
index 7cfc29c9ff813..345161c8350ff 100644
--- a/pkgs/development/python-modules/dugong/default.nix
+++ b/pkgs/development/python-modules/dugong/default.nix
@@ -1,16 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pythonAtLeast
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "dugong";
   version = "3.8.1";
   format = "setuptools";
-  disabled = pythonOlder "3.3";
 
   src = fetchFromGitHub {
     owner = "python-dugong";
@@ -19,9 +18,7 @@ buildPythonPackage rec {
     sha256 = "1063c1779idc5nrjzfv5w1xqvyy3crapb2a2xll9y6xphxclnkjc";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Lots of tests hang during teardown with:
   #   ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:2396)
@@ -32,7 +29,10 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "HTTP 1.1 client designed for REST-ful APIs";
     homepage = "https://github.com/python-dugong/python-dugong/";
-    license = with licenses; [ psfl asl20 ];
-    maintainers = with maintainers; [ ];
+    license = with licenses; [
+      psfl
+      asl20
+    ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dukpy/default.nix b/pkgs/development/python-modules/dukpy/default.nix
new file mode 100644
index 0000000000000..453d68e8534e9
--- /dev/null
+++ b/pkgs/development/python-modules/dukpy/default.nix
@@ -0,0 +1,53 @@
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  mutf8,
+  webassets,
+  pytestCheckHook,
+  mock,
+}:
+
+buildPythonPackage rec {
+  pname = "dukpy";
+  version = "0.4.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "amol-";
+    repo = "dukpy";
+    rev = "refs/tags/${version}";
+    hash = "sha256-8RDMz9SfBoUe7LQ9/atsZlJ/2uwLUb0hZxeYdsUOGpU=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ mutf8 ];
+
+  optional-dependencies = {
+    webassets = [ webassets ];
+  };
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    mock
+  ] ++ optional-dependencies.webassets;
+
+  disabledTests = [ "test_installer" ];
+
+  preCheck = ''
+    rm -r dukpy
+  '';
+
+  pythonImportsCheck = [ "dukpy" ];
+
+  meta = {
+    description = "Simple JavaScript interpreter for Python";
+    homepage = "https://github.com/amol-/dukpy";
+    changelog = "https://github.com/amol-/dukpy/releases/tag/${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ ruby0b ];
+    mainProgram = "dukpy";
+  };
+}
diff --git a/pkgs/development/python-modules/dulwich/default.nix b/pkgs/development/python-modules/dulwich/default.nix
index 49789421af346..e4b3663dda90d 100644
--- a/pkgs/development/python-modules/dulwich/default.nix
+++ b/pkgs/development/python-modules/dulwich/default.nix
@@ -1,26 +1,26 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, certifi
-, fastimport
-, fetchFromGitHub
-, gevent
-, geventhttpclient
-, git
-, glibcLocales
-, gnupg
-, gpgme
-, paramiko
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-rust
-, urllib3
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fastimport,
+  fetchFromGitHub,
+  fetchpatch2,
+  gevent,
+  geventhttpclient,
+  git,
+  glibcLocales,
+  gnupg,
+  gpgme,
+  paramiko,
+  unittestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-rust,
+  urllib3,
 }:
 
 buildPythonPackage rec {
-  version = "0.21.7";
+  version = "0.22.1";
   pname = "dulwich";
   format = "setuptools";
 
@@ -29,65 +29,61 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "jelmer";
     repo = "dulwich";
-    rev = "refs/tags/${pname}-${version}";
-    hash = "sha256-iP+6KtaQ8tfOobovSLSJZogS/XWW0LuHgE2oV8uQW/8=";
+    rev = "refs/tags/dulwich-${version}";
+    hash = "sha256-bf3ZUMX4afpdTBpFnx0HMyzCNG6V/p4eOl36djxGbtk=";
   };
 
+  patches = [
+    (fetchpatch2 {
+      name = "dulwich-geventhttpclient-api-breakage.patch";
+      url = "https://github.com/jelmer/dulwich/commit/5f0497de9c37ac4f4e8f27bed8decce13765d3df.patch";
+      hash = "sha256-0GgDgmYuLCsMc9nRRLNL2W6WYrkZ/1ZnZBQusEAzLKI=";
+    })
+  ];
+
   build-system = [
     setuptools
     setuptools-rust
   ];
 
   propagatedBuildInputs = [
-    certifi
     urllib3
   ];
 
-  passthru.optional-dependencies = {
-    fastimport = [
-      fastimport
-    ];
+  optional-dependencies = {
+    fastimport = [ fastimport ];
+    https = [ urllib3 ];
     pgp = [
       gpgme
       gnupg
     ];
-    paramiko = [
-      paramiko
-    ];
+    paramiko = [ paramiko ];
   };
 
-  nativeCheckInputs = [
-    gevent
-    geventhttpclient
-    git
-    glibcLocales
-    pytest-xdist
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.fastimport
-  ++ passthru.optional-dependencies.pgp
-  ++ passthru.optional-dependencies.paramiko;
+  nativeCheckInputs =
+    [
+      gevent
+      geventhttpclient
+      git
+      glibcLocales
+      unittestCheckHook
+    ]
+    ++ lib.flatten (lib.attrValues optional-dependencies);
 
-  doCheck = !stdenv.isDarwin;
+  preCheck = ''
+    # requires swift config file
+    rm tests/contrib/test_swift_smoke.py
 
-  disabledTests = [
-    # OSError: [Errno 84] Invalid or incomplete multibyte or wide character: b'/build/tmpsqwlbpd1/\xc0'
-    "test_no_decode_encode"
-    # OSError: [Errno 84] Invalid or incomplete multibyte or wide character: b'/build/tmpwmtfyvo2/refs.git/refs/heads/\xcd\xee\xe2\xe0\xff\xe2\xe5\xf2\xea\xe01'
-    "test_cyrillic"
-    # OSError: [Errno 84] Invalid or incomplete multibyte or wide character: b'/build/tmpfseetobk/test/\xc0'
-    "test_commit_no_encode_decode"
-  ];
+    # ImportError: attempted relative import beyond top-level package
+    rm tests/test_greenthreads.py
 
-  disabledTestPaths = [
-    # missing test inputs
-    "dulwich/contrib/test_swift_smoke.py"
-    # flaky on high core count >4
-    "dulwich/tests/compat/test_client.py"
-  ];
+    # git crashes; https://github.com/jelmer/dulwich/issues/1359
+    rm tests/compat/test_pack.py
+  '';
 
-  pythonImportsCheck = [
-    "dulwich"
-  ];
+  doCheck = !stdenv.hostPlatform.isDarwin;
+
+  pythonImportsCheck = [ "dulwich" ];
 
   meta = with lib; {
     description = "Implementation of the Git file formats and protocols";
@@ -97,7 +93,10 @@ buildPythonPackage rec {
     '';
     homepage = "https://www.dulwich.io/";
     changelog = "https://github.com/jelmer/dulwich/blob/dulwich-${version}/NEWS";
-    license = with licenses; [ asl20 gpl2Plus ];
+    license = with licenses; [
+      asl20
+      gpl2Plus
+    ];
     maintainers = with maintainers; [ koral ];
   };
 }
diff --git a/pkgs/development/python-modules/dunamai/default.nix b/pkgs/development/python-modules/dunamai/default.nix
index f4929849869eb..3ee9866f98c57 100644
--- a/pkgs/development/python-modules/dunamai/default.nix
+++ b/pkgs/development/python-modules/dunamai/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, poetry-core
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, importlib-metadata
-, packaging
-, pytestCheckHook
-, git
+{
+  lib,
+  poetry-core,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  importlib-metadata,
+  packaging,
+  pytestCheckHook,
+  git,
 }:
 
 buildPythonPackage rec {
   pname = "dunamai";
-  version = "1.19.2";
-  format = "pyproject";
+  version = "1.21.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -20,18 +21,12 @@ buildPythonPackage rec {
     owner = "mtkennerly";
     repo = "dunamai";
     rev = "refs/tags/v${version}";
-    hash = "sha256-oLJlBytdp9uVdKEdYDMz/IYnPP7XVnCUcThKO3IiW10=";
+    hash = "sha256-dsL1MhlL1Yjj06D0z2FzZ53Frfp4U+5dXA9vPjU+pvY=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    packaging
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  propagatedBuildInputs = [ packaging ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   # needs to be able to run dunami from PATH
   preCheck = ''
@@ -52,9 +47,7 @@ buildPythonPackage rec {
     "test__version__from_git__shallow"
   ];
 
-  pythonImportsCheck = [
-    "dunamai"
-  ];
+  pythonImportsCheck = [ "dunamai" ];
 
   meta = with lib; {
     description = "Dynamic version generation";
diff --git a/pkgs/development/python-modules/dungeon-eos/default.nix b/pkgs/development/python-modules/dungeon-eos/default.nix
index 9f357168b0b5e..d4282575c88b2 100644
--- a/pkgs/development/python-modules/dungeon-eos/default.nix
+++ b/pkgs/development/python-modules/dungeon-eos/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchFromGitHub }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+}:
 
 buildPythonPackage rec {
   pname = "dungeon-eos";
@@ -17,7 +21,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/SkyTemple/dungeon-eos";
-    description = "A package that simulates PMD EoS dungeon generation";
+    description = "Package that simulates PMD EoS dungeon generation";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ marius851000 ];
   };
diff --git a/pkgs/development/python-modules/duo-client/default.nix b/pkgs/development/python-modules/duo-client/default.nix
index 38b83c7b131f7..fe5fd07044cae 100644
--- a/pkgs/development/python-modules/duo-client/default.nix
+++ b/pkgs/development/python-modules/duo-client/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, freezegun
-, mock
-, pytestCheckHook
-, pythonOlder
-, pytz
-, setuptools
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -30,13 +31,9 @@ buildPythonPackage rec {
       --replace-fail "flake8" ""
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    six
-  ];
+  dependencies = [ six ];
 
   nativeCheckInputs = [
     freezegun
@@ -45,9 +42,7 @@ buildPythonPackage rec {
     pytz
   ];
 
-  pythonImportsCheck = [
-    "duo_client"
-  ];
+  pythonImportsCheck = [ "duo_client" ];
 
   disabledTests = [
     # Tests require network access
@@ -65,6 +60,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/duosecurity/duo_client_python";
     changelog = "https://github.com/duosecurity/duo_client_python/releases/tag/${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/durus/default.nix b/pkgs/development/python-modules/durus/default.nix
index 43884551c7314..2c651f7b22201 100644
--- a/pkgs/development/python-modules/durus/default.nix
+++ b/pkgs/development/python-modules/durus/default.nix
@@ -1,4 +1,8 @@
-{ stdenv, lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "durus";
@@ -7,7 +11,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "Durus";
     inherit version;
-    sha256 = "sha256:1gzxg43zawwgqjrfixvcrilwpikb1ix9b7710rsl5ffk7q50yi3c";
+    hash = "sha256:1gzxg43zawwgqjrfixvcrilwpikb1ix9b7710rsl5ffk7q50yi3c";
   };
 
   # Checks disabled due to missing python unittest framework 'sancho' in nixpkgs
diff --git a/pkgs/development/python-modules/dvc-azure/default.nix b/pkgs/development/python-modules/dvc-azure/default.nix
index dc166c55027ec..7aada9f9e75ac 100644
--- a/pkgs/development/python-modules/dvc-azure/default.nix
+++ b/pkgs/development/python-modules/dvc-azure/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, adlfs
-, azure-identity
-, buildPythonPackage
-, dvc-objects
-, fetchPypi
-, knack
-, pythonRelaxDepsHook
-, setuptools-scm
+{
+  lib,
+  adlfs,
+  azure-identity,
+  buildPythonPackage,
+  dvc-objects,
+  fetchPypi,
+  knack,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -20,13 +20,10 @@ buildPythonPackage rec {
   };
 
   # Prevent circular dependency
-  pythonRemoveDeps = [
-    "dvc"
-  ];
+  pythonRemoveDeps = [ "dvc" ];
 
   nativeBuildInputs = [
     setuptools-scm
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/dvc-data/default.nix b/pkgs/development/python-modules/dvc-data/default.nix
index d4a9573f9a9b7..9732318367675 100644
--- a/pkgs/development/python-modules/dvc-data/default.nix
+++ b/pkgs/development/python-modules/dvc-data/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, dictdiffer
-, diskcache
-, dvc-objects
-, fetchFromGitHub
-, funcy
-, pygtrie
-, pythonOlder
-, setuptools-scm
-, shortuuid
-, sqltrie
+{
+  lib,
+  buildPythonPackage,
+  dictdiffer,
+  diskcache,
+  dvc-objects,
+  fetchFromGitHub,
+  funcy,
+  pygtrie,
+  pythonOlder,
+  setuptools-scm,
+  shortuuid,
+  sqltrie,
 }:
 
 buildPythonPackage rec {
   pname = "dvc-data";
-  version = "3.15.1";
+  version = "3.16.6";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -23,14 +24,12 @@ buildPythonPackage rec {
     owner = "iterative";
     repo = "dvc-data";
     rev = "refs/tags/${version}";
-    hash = "sha256-pr5RtVlGKKtpcmmCNGqcLiBFzJcajpqtPjBbzeCCHF8=";
+    hash = "sha256-2KYAFNCh6QfGdTzHE5LCumWoi+DM4t857qg6LrFO5x4=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dictdiffer
     diskcache
     dvc-objects
@@ -43,9 +42,7 @@ buildPythonPackage rec {
   # Tests depend on upath which is unmaintained and only available as wheel
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dvc_data"
-  ];
+  pythonImportsCheck = [ "dvc_data" ];
 
   meta = with lib; {
     description = "DVC's data management subsystem";
diff --git a/pkgs/development/python-modules/dvc-gdrive/default.nix b/pkgs/development/python-modules/dvc-gdrive/default.nix
index e7b2b0d7c499c..1cecf014856d7 100644
--- a/pkgs/development/python-modules/dvc-gdrive/default.nix
+++ b/pkgs/development/python-modules/dvc-gdrive/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, dvc
-, fetchFromGitHub
-, pydrive2
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  dvc,
+  fetchFromGitHub,
+  pydrive2,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -35,9 +36,7 @@ buildPythonPackage rec {
   # Circular dependency with dvc
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dvc_gdrive"
-  ];
+  pythonImportsCheck = [ "dvc_gdrive" ];
 
   meta = with lib; {
     description = "Google Drive plugin for DVC";
diff --git a/pkgs/development/python-modules/dvc-gs/default.nix b/pkgs/development/python-modules/dvc-gs/default.nix
index fa01c64c8daf5..f457d2e1d3e82 100644
--- a/pkgs/development/python-modules/dvc-gs/default.nix
+++ b/pkgs/development/python-modules/dvc-gs/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, dvc-objects
-, fetchPypi
-, gcsfs
-, pythonRelaxDepsHook
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  dvc-objects,
+  fetchPypi,
+  gcsfs,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -18,13 +18,10 @@ buildPythonPackage rec {
   };
 
   # Prevent circular dependency
-  pythonRemoveDeps = [
-    "dvc"
-  ];
+  pythonRemoveDeps = [ "dvc" ];
 
   nativeBuildInputs = [
     setuptools-scm
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/dvc-hdfs/default.nix b/pkgs/development/python-modules/dvc-hdfs/default.nix
index b532941e42ba5..7047f832c0458 100644
--- a/pkgs/development/python-modules/dvc-hdfs/default.nix
+++ b/pkgs/development/python-modules/dvc-hdfs/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, dvc
-, fetchFromGitHub
-, fsspec
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  dvc,
+  fetchFromGitHub,
+  fsspec,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -35,9 +36,7 @@ buildPythonPackage rec {
   # Circular dependency with dvc
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dvc_hdfs"
-  ];
+  pythonImportsCheck = [ "dvc_hdfs" ];
 
   meta = with lib; {
     description = "HDFS/WebHDFS plugin for dvc";
diff --git a/pkgs/development/python-modules/dvc-http/default.nix b/pkgs/development/python-modules/dvc-http/default.nix
index 48fb723cbc54e..ddd707736ae42 100644
--- a/pkgs/development/python-modules/dvc-http/default.nix
+++ b/pkgs/development/python-modules/dvc-http/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, aiohttp-retry
-, buildPythonPackage
-, fetchFromGitHub
-, dvc-objects
-, fsspec
-, funcy
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools-scm
+{
+  lib,
+  aiohttp-retry,
+  buildPythonPackage,
+  fetchFromGitHub,
+  dvc-objects,
+  fsspec,
+  funcy,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-ru/hOFv/RcS/7SBpTJU8xFxdllmaiH4dV1ouS6GGKkY=";
   };
 
-  build-system = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
   dependencies = [
     aiohttp-retry
@@ -39,9 +37,7 @@ buildPythonPackage rec {
   # ModuleNotFoundError: No module named 'dvc.testing'
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dvc_http"
-  ];
+  pythonImportsCheck = [ "dvc_http" ];
 
   meta = with lib; {
     description = "HTTP plugin for dvc";
diff --git a/pkgs/development/python-modules/dvc-objects/default.nix b/pkgs/development/python-modules/dvc-objects/default.nix
index 7911c1c411ad3..91e2ca8b7807e 100644
--- a/pkgs/development/python-modules/dvc-objects/default.nix
+++ b/pkgs/development/python-modules/dvc-objects/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fsspec
-, funcy
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, reflink
-, setuptools-scm
-, shortuuid
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fsspec,
+  funcy,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  reflink,
+  setuptools-scm,
+  shortuuid,
 }:
 
 buildPythonPackage rec {
@@ -31,15 +32,9 @@ buildPythonPackage rec {
       --replace " --benchmark-skip" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    fsspec
-  ]  ++ lib.optionals (pythonOlder "3.12") [
-    funcy
-  ];
+  propagatedBuildInputs = [ fsspec ] ++ lib.optionals (pythonOlder "3.12") [ funcy ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -49,9 +44,7 @@ buildPythonPackage rec {
     shortuuid
   ];
 
-  pythonImportsCheck = [
-    "dvc_objects"
-  ];
+  pythonImportsCheck = [ "dvc_objects" ];
 
   disabledTestPaths = [
     # Disable benchmarking
diff --git a/pkgs/development/python-modules/dvc-render/default.nix b/pkgs/development/python-modules/dvc-render/default.nix
index 2cab268fecf6e..f4df5623013db 100644
--- a/pkgs/development/python-modules/dvc-render/default.nix
+++ b/pkgs/development/python-modules/dvc-render/default.nix
@@ -48,7 +48,7 @@ buildPythonPackage rec {
     pytest-test-utils
   ] ++ passthru.optional-dependencies.table ++ passthru.optional-dependencies.markdown;
 
-  disabledTestPaths = lib.optionals stdenv.isDarwin [ "tests/test_vega.py" ];
+  disabledTestPaths = lib.optionals stdenv.hostPlatform.isDarwin [ "tests/test_vega.py" ];
 
   pythonImportsCheck = [ "dvc_render" ];
 
diff --git a/pkgs/development/python-modules/dvc-s3/default.nix b/pkgs/development/python-modules/dvc-s3/default.nix
index e112eca578c73..eaed1006a500b 100644
--- a/pkgs/development/python-modules/dvc-s3/default.nix
+++ b/pkgs/development/python-modules/dvc-s3/default.nix
@@ -1,45 +1,43 @@
-{ lib
-, aiobotocore
-, boto3
-, buildPythonPackage
-, dvc-objects
-, fetchPypi
-, flatten-dict
-, pythonRelaxDepsHook
-, s3fs
-, setuptools-scm
+{
+  lib,
+  aiobotocore,
+  boto3,
+  buildPythonPackage,
+  dvc-objects,
+  fetchPypi,
+  flatten-dict,
+  s3fs,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "dvc-s3";
-  version = "3.1.0";
+  version = "3.2.0";
   pyproject = true;
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-0yD5FsinQat3cbmY5teClFS0KEGUvED2Ah/JCbTtZ/s=";
+    pname = "dvc_s3";
+    inherit version;
+    hash = "sha256-HQEqwdzkdlmYb5GBI7SJMc+bNCmrC0oi/UsCRIGFzrY=";
   };
 
   # Prevent circular dependency
-  pythonRemoveDeps = [
-    "dvc"
-  ];
+  pythonRemoveDeps = [ "dvc" ];
 
   # dvc-s3 uses boto3 directly, we add in propagatedBuildInputs
   postPatch = ''
-    substituteInPlace setup.cfg --replace 'aiobotocore[boto3]' 'aiobotocore'
+    substituteInPlace pyproject.toml \
+      --replace-fail "aiobotocore[boto3]" "aiobotocore"
   '';
 
-  nativeBuildInputs = [
-    setuptools-scm
-    pythonRelaxDepsHook
-  ];
+  build-system = [ setuptools-scm  ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiobotocore
     boto3
     dvc-objects
-    flatten-dict s3fs
+    flatten-dict
+    s3fs
   ];
 
   # Network access is needed for tests
diff --git a/pkgs/development/python-modules/dvc-ssh/default.nix b/pkgs/development/python-modules/dvc-ssh/default.nix
index 3a1ef111c0cd5..3578e1b572ebe 100644
--- a/pkgs/development/python-modules/dvc-ssh/default.nix
+++ b/pkgs/development/python-modules/dvc-ssh/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, bcrypt
-, buildPythonPackage
-, dvc-objects
-, fetchPypi
-, pythonRelaxDepsHook
-, setuptools-scm
-, sshfs
+{
+  lib,
+  bcrypt,
+  buildPythonPackage,
+  dvc-objects,
+  fetchPypi,
+  setuptools-scm,
+  sshfs,
 }:
 
 buildPythonPackage rec {
@@ -25,7 +25,6 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     setuptools-scm
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/dvc-studio-client/default.nix b/pkgs/development/python-modules/dvc-studio-client/default.nix
index c336f5a3cc74b..ce592806ceeb3 100644
--- a/pkgs/development/python-modules/dvc-studio-client/default.nix
+++ b/pkgs/development/python-modules/dvc-studio-client/default.nix
@@ -1,42 +1,39 @@
-{ lib
-, buildPythonPackage
-, dulwich
-, fetchFromGitHub
-, gitpython
-, pythonOlder
-, requests
-, setuptools-scm
-, voluptuous
+{
+  lib,
+  buildPythonPackage,
+  dulwich,
+  fetchFromGitHub,
+  gitpython,
+  pythonOlder,
+  requests,
+  setuptools-scm,
+  voluptuous,
 }:
 
 buildPythonPackage rec {
   pname = "dvc-studio-client";
-  version = "0.20.0";
-  format = "pyproject";
+  version = "0.21.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "iterative";
-    repo = pname;
+    repo = "dvc-studio-client";
     rev = "refs/tags/${version}";
-    hash = "sha256-JLrsbgifoUnN1Mwml9tO3/SkA6miE14AGjxrFwEcRks=";
+    hash = "sha256-SCRMBZKOt8JtDi5aGgk6TCxetvG3QU1jOv6U5/6ChTE=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dulwich
     gitpython
     requests
     voluptuous
   ];
 
-  pythonImportsCheck = [
-    "dvc_studio_client"
-  ];
+  pythonImportsCheck = [ "dvc_studio_client" ];
 
   # Tests try to access network
   doCheck = false;
diff --git a/pkgs/development/python-modules/dvc-task/default.nix b/pkgs/development/python-modules/dvc-task/default.nix
index b84a19b494acf..63b2ed18e41c0 100644
--- a/pkgs/development/python-modules/dvc-task/default.nix
+++ b/pkgs/development/python-modules/dvc-task/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools-scm
-, kombu
-, shortuuid
-, celery
-, funcy
-, pytest-celery
-, pytest-mock
-, pytest-test-utils
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  celery,
+  fetchFromGitHub,
+  funcy,
+  kombu,
+  pytest-celery,
+  pytest-mock,
+  pytest-test-utils,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  shortuuid,
 }:
 
 buildPythonPackage rec {
@@ -27,15 +28,13 @@ buildPythonPackage rec {
     hash = "sha256-zSPv+eMGSsGXKtgi9r4EiGY1ZURXeJXWBKvR2GnfP8I=";
   };
 
-  build-system = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
   dependencies = [
-    kombu
-    shortuuid
     celery
     funcy
+    kombu
+    shortuuid
   ];
 
   nativeCheckInputs = [
@@ -45,8 +44,13 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "dvc_task"
+  pythonImportsCheck = [ "dvc_task" ];
+
+  disabledTests = [
+    # Test is flaky
+    "test_start_already_exists"
+    # Tests require a Docker setup
+    "celery_setup_worker"
   ];
 
   meta = with lib; {
@@ -54,6 +58,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/iterative/dvc-task";
     changelog = "https://github.com/iterative/dvc-task/releases/tag/${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/dvc/default.nix b/pkgs/development/python-modules/dvc/default.nix
index f9190e727a1da..284de4ad026b4 100644
--- a/pkgs/development/python-modules/dvc/default.nix
+++ b/pkgs/development/python-modules/dvc/default.nix
@@ -36,7 +36,6 @@
   pygtrie,
   pyparsing,
   pythonOlder,
-  pythonRelaxDepsHook,
   requests,
   rich,
   ruamel-yaml,
@@ -58,7 +57,7 @@
 
 buildPythonPackage rec {
   pname = "dvc";
-  version = "3.50.0";
+  version = "3.55.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -67,7 +66,7 @@ buildPythonPackage rec {
     owner = "iterative";
     repo = "dvc";
     rev = "refs/tags/${version}";
-    hash = "sha256-/MvKWpJzKWLj1+y8nPMQiAwdktmQyJNM+s6ctYNk9u0=";
+    hash = "sha256-yNnOSYh4lCefTnIgNstsKaRbrPCgSiWEgKeF66KD66k=";
   };
 
   pythonRelaxDeps = [
@@ -84,7 +83,6 @@ buildPythonPackage rec {
 
   build-system = [ setuptools-scm ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies =
     [
diff --git a/pkgs/development/python-modules/dvclive/default.nix b/pkgs/development/python-modules/dvclive/default.nix
index 7090433431a9e..7973a0e769676 100644
--- a/pkgs/development/python-modules/dvclive/default.nix
+++ b/pkgs/development/python-modules/dvclive/default.nix
@@ -1,38 +1,39 @@
-{ lib
-, buildPythonPackage
-, datasets
-, dvc
-, dvc-render
-, dvc-studio-client
-, fastai
-, fetchFromGitHub
-, funcy
-, gto
-, jsonargparse
-, lightgbm
-, lightning
-, matplotlib
-, mmcv
-, numpy
-, optuna
-, pandas
-, pillow
-, psutil
-, pynvml
-, pythonOlder
-, ruamel-yaml
-, scikit-learn
-, scmrepo
-, setuptools-scm
-, tensorflow
-, torch
-, transformers
-, xgboost
+{
+  lib,
+  buildPythonPackage,
+  datasets,
+  dvc,
+  dvc-render,
+  dvc-studio-client,
+  fastai,
+  fetchFromGitHub,
+  funcy,
+  gto,
+  jsonargparse,
+  lightgbm,
+  lightning,
+  matplotlib,
+  mmcv,
+  numpy,
+  optuna,
+  pandas,
+  pillow,
+  psutil,
+  pynvml,
+  pythonOlder,
+  ruamel-yaml,
+  scikit-learn,
+  scmrepo,
+  setuptools-scm,
+  tensorflow,
+  torch,
+  transformers,
+  xgboost,
 }:
 
 buildPythonPackage rec {
   pname = "dvclive";
-  version = "3.45.0";
+  version = "3.48.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -41,12 +42,10 @@ buildPythonPackage rec {
     owner = "iterative";
     repo = "dvclive";
     rev = "refs/tags/${version}";
-    hash = "sha256-76PjBPr3m1y5osW024dkhuvuXl2FiZ5oxlJ1Ucq8msI=";
+    hash = "sha256-WIVRpJD7B6OI7ZfdHT+DunRRiaxHhri5Ge/B1BQ1kJY=";
   };
 
-  build-system = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
   dependencies = [
     dvc
@@ -81,29 +80,17 @@ buildPythonPackage rec {
       numpy
       pillow
     ];
-    sklearn = [
-      scikit-learn
-    ];
+    sklearn = [ scikit-learn ];
     plots = [
       pandas
       scikit-learn
       numpy
     ];
-    markdown = [
-      matplotlib
-    ];
-    mmcv = [
-      mmcv
-    ];
-    tf = [
-      tensorflow
-    ];
-    xgb = [
-      xgboost
-    ];
-    lgbm = [
-      lightgbm
-    ];
+    markdown = [ matplotlib ];
+    mmcv = [ mmcv ];
+    tf = [ tensorflow ];
+    xgb = [ xgboost ];
+    lgbm = [ lightgbm ];
     huggingface = [
       datasets
       transformers
@@ -111,25 +98,19 @@ buildPythonPackage rec {
     # catalyst = [
     #   catalyst
     # ];
-    fastai = [
-      fastai
-    ];
+    fastai = [ fastai ];
     lightning = [
       lightning
       torch
       jsonargparse
     ] ++ jsonargparse.optional-dependencies.signatures;
-    optuna = [
-      optuna
-    ];
+    optuna = [ optuna ];
   };
 
   # Circular dependency with dvc
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dvclive"
-  ];
+  pythonImportsCheck = [ "dvclive" ];
 
   meta = with lib; {
     description = "Library for logging machine learning metrics and other metadata in simple file formats";
diff --git a/pkgs/development/python-modules/dwdwfsapi/default.nix b/pkgs/development/python-modules/dwdwfsapi/default.nix
index 58b62032e33bc..8f72d8c974b77 100644
--- a/pkgs/development/python-modules/dwdwfsapi/default.nix
+++ b/pkgs/development/python-modules/dwdwfsapi/default.nix
@@ -1,24 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, ciso8601
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  requests,
+  ciso8601,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "dwdwfsapi";
-  version = "1.0.7";
-  format = "setuptools";
+  version = "1.1.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-7le1F+581JwrBX/C1aaqsDaSpIt0yNsNKiGnJtHUg5s=";
+    hash = "sha256-7dIVD+4MiYtsjAM5j67MlbiUN2Q5DpK6bUU0ZuHN2rk=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ hatchling ];
+
+  dependencies = [
     requests
     ciso8601
   ];
@@ -26,15 +30,12 @@ buildPythonPackage rec {
   # All tests require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dwdwfsapi"
-  ];
+  pythonImportsCheck = [ "dwdwfsapi" ];
 
   meta = with lib; {
     description = "Python client to retrieve data provided by DWD via their geoserver WFS API";
     homepage = "https://github.com/stephan192/dwdwfsapi";
     changelog = "https://github.com/stephan192/dwdwfsapi/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ mit ];
-    maintainers = with maintainers; [ elohmeier ];
   };
 }
diff --git a/pkgs/development/python-modules/dyn/default.nix b/pkgs/development/python-modules/dyn/default.nix
index c391250d95179..bd40c29d8dd09 100644
--- a/pkgs/development/python-modules/dyn/default.nix
+++ b/pkgs/development/python-modules/dyn/default.nix
@@ -1,33 +1,35 @@
-{ lib, buildPythonPackage, fetchPypi, pytest, pytest-cov, mock
-, pytest-xdist, cov-core, glibcLocales }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "dyn";
   version = "1.8.6";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-933etYrKRgSqJfOMIuIDL4Uv4/RdSEFMNWFtW5qiPpA=";
+    hash = "sha256-933etYrKRgSqJfOMIuIDL4Uv4/RdSEFMNWFtW5qiPpA=";
   };
 
-  buildInputs = [ glibcLocales ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytest
-    pytest-cov
-    mock
-    pytest-xdist
-    cov-core
-  ];
-  # Disable checks because they are not stateless and require internet access.
+  # Module has no tests
   doCheck = false;
 
-  LC_ALL="en_US.UTF-8";
+  pythonImportsCheck = [ "dyn" ];
 
   meta = with lib; {
     description = "Dynect dns lib";
-    homepage = "https://dyn.readthedocs.org/en/latest/intro.html";
+    homepage = "https://dyn.readthedocs.org";
+    changelog = "https://github.com/dyninc/dyn-python/blob/${version}/HISTORY.rst";
     license = licenses.bsd3;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/dynalite-devices/default.nix b/pkgs/development/python-modules/dynalite-devices/default.nix
index e07190f981045..e1ede4c3046b7 100644
--- a/pkgs/development/python-modules/dynalite-devices/default.nix
+++ b/pkgs/development/python-modules/dynalite-devices/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -25,28 +26,22 @@ buildPythonPackage rec {
     sed -i '/^addopts/d' setup.cfg
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "--asyncio-mode=auto"
-  ];
+  pytestFlagsArray = [ "--asyncio-mode=auto" ];
 
-  pythonImportsCheck = [
-    "dynalite_devices_lib"
-  ];
+  pythonImportsCheck = [ "dynalite_devices_lib" ];
 
   # it would use the erroneous tag v0.47
   passthru.skipBulkUpdate = true;
 
   meta = with lib; {
-    description = "An unofficial Dynalite DyNET interface creating devices";
+    description = "Unofficial Dynalite DyNET interface creating devices";
     homepage = "https://github.com/ziv1234/python-dynalite-devices";
     changelog = "https://github.com/ziv1234/python-dynalite-devices/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/dynalite-panel/default.nix b/pkgs/development/python-modules/dynalite-panel/default.nix
index 33be58906c750..8b0f711a571a1 100644
--- a/pkgs/development/python-modules/dynalite-panel/default.nix
+++ b/pkgs/development/python-modules/dynalite-panel/default.nix
@@ -1,8 +1,8 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -10,8 +10,6 @@ buildPythonPackage rec {
   version = "0.0.4";
   pyproject = true;
 
-  disabled = pythonOlder "3.4";
-
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-m7nQzbxRe2qXUWAMeQlDZtc9F01DsbTzF/kI0ci3TFE=";
@@ -22,9 +20,7 @@ buildPythonPackage rec {
       --replace "~=" ">="
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   pythonImportsCheck = [ "dynalite_panel" ];
 
diff --git a/pkgs/development/python-modules/dynd/default.nix b/pkgs/development/python-modules/dynd/default.nix
index ff9364207c76d..b60e57b34c9c4 100644
--- a/pkgs/development/python-modules/dynd/default.nix
+++ b/pkgs/development/python-modules/dynd/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, cython
-, numpy
-, libdynd
-, fetchpatch
-, cmake
-, fetchFromGitHub
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  numpy,
+  libdynd,
+  fetchpatch,
+  cmake,
+  fetchFromGitHub,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
@@ -65,5 +66,4 @@ buildPythonPackage rec {
     description = "Python exposure of dynd";
     maintainers = with maintainers; [ teh ];
   };
-
 }
diff --git a/pkgs/development/python-modules/e3-core/0001-use-distro-over-ld.patch b/pkgs/development/python-modules/e3-core/0001-use-distro-over-ld.patch
deleted file mode 100644
index 15548b7aec1ca..0000000000000
--- a/pkgs/development/python-modules/e3-core/0001-use-distro-over-ld.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 189681bbfb703a7026ca7bbb3b21ef554807b144 Mon Sep 17 00:00:00 2001
-From: tali auster <taliauster@gmail.com>
-Date: Wed, 15 Nov 2023 12:15:34 -0700
-Subject: [PATCH] use distro over ld
-
-The `ld` module (linux distribution) was renamed to `distro`, presumably
-so as not to subsume binutils name.
-
----
- setup.py              | 2 +-
- src/e3/os/platform.py | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/setup.py b/setup.py
-index c32f46f..de1ada6 100644
---- a/setup.py
-+++ b/setup.py
-@@ -25,7 +25,7 @@ for p in ("darwin", "linux", "linux2", "win32"):
-     platform_string = ":sys_platform=='%s'" % p
-     extras_require[platform_string] = ["psutil"]
-     if p in ("linux", "linux2"):
--        extras_require[platform_string].append("ld")
-+        extras_require[platform_string].append("distro")
- 
- # Get e3 version from the VERSION file.
- version_file = os.path.join(os.path.dirname(__file__), "VERSION")
-diff --git a/src/e3/os/platform.py b/src/e3/os/platform.py
-index 2d4e174..a9d12d3 100644
---- a/src/e3/os/platform.py
-+++ b/src/e3/os/platform.py
-@@ -78,7 +78,7 @@ class SystemInfo:
- 
-         # Fetch linux distribution info on linux OS
-         if cls.uname.system == "Linux":  # linux-only
--            import ld
-+            import distro as ld
- 
-             cls.ld_info = {
-                 "name": ld.name(),
--- 
-2.40.1
-
diff --git a/pkgs/development/python-modules/e3-core/default.nix b/pkgs/development/python-modules/e3-core/default.nix
index ef0b31b177ab2..9f37786ba4d6f 100644
--- a/pkgs/development/python-modules/e3-core/default.nix
+++ b/pkgs/development/python-modules/e3-core/default.nix
@@ -1,67 +1,60 @@
-{ autoPatchelfHook
-, buildPythonPackage
-, colorama
-, coverage
-, distro
-, fetchFromGitHub
-, httpretty
-, lib
-, mock
-, packaging
-, psutil
-, pytest
-, pytest-socket
-, python-dateutil
-, pyyaml
-, requests
-, requests-cache
-, requests-toolbelt
-, stdenv
-, setuptools
-, stevedore
-, tomlkit
-, tox
-, tqdm
-, typeguard
+{
+  lib,
+  stdenv,
+  autoPatchelfHook,
+  buildPythonPackage,
+  colorama,
+  distro,
+  fetchFromGitHub,
+  packaging,
+  psutil,
+  python-dateutil,
+  pythonOlder,
+  pyyaml,
+  requests-cache,
+  requests-toolbelt,
+  requests,
+  setuptools,
+  stevedore,
+  tqdm,
 }:
 
 buildPythonPackage rec {
   pname = "e3-core";
-  version = "22.4.0";
+  version = "22.6.0";
   pyproject = true;
 
+  disabled = pythonOlder "3.6";
+
   src = fetchFromGitHub {
     owner = "AdaCore";
     repo = "e3-core";
-    rev = "v${version}";
-    hash = "sha256-dgEk2/qRfAYwUz+e5TWKUy/aPLpmyWZ32OV1i7QM9Fs=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-6rClGDo8KhBbOg/Rw0nVISVtOAACf5cwSafNInlBGCw=";
   };
 
-  patches = [
-    ./0001-use-distro-over-ld.patch
-  ];
+  build-system = [ setuptools ];
 
-  nativeBuildInputs = [
-    autoPatchelfHook
-    setuptools
-  ];
+  nativeBuildInputs = [ autoPatchelfHook ];
 
-  propagatedBuildInputs = [
-    colorama
-    packaging
-    pyyaml
-    python-dateutil
-    requests
-    requests-cache
-    requests-toolbelt
-    tqdm
-    stevedore
-  ] ++ lib.optional stdenv.isLinux [
-    # See setup.py:24. These are required only on Linux. Darwin has its own set
-    # of requirements.
-    psutil
-    distro
-  ];
+  dependencies =
+    [
+      colorama
+      packaging
+      python-dateutil
+      pyyaml
+      requests
+      requests-cache
+      requests-toolbelt
+      stevedore
+      tqdm
+    ]
+    ++ lib.optional stdenv.hostPlatform.isLinux [
+      # See https://github.com/AdaCore/e3-core/blob/v22.6.0/pyproject.toml#L37-L42
+      # These are required only on Linux. Darwin has its own set of requirements
+      psutil
+      distro
+    ];
 
   pythonImportsCheck = [ "e3" ];
 
@@ -69,7 +62,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    changelog = "https://github.com/AdaCore/e3-core/releases/tag/${src.rev}";
+    changelog = "https://github.com/AdaCore/e3-core/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     homepage = "https://github.com/AdaCore/e3-core/";
     description = "Core framework for developing portable automated build systems";
     license = licenses.gpl3Only;
diff --git a/pkgs/development/python-modules/e3-testsuite/default.nix b/pkgs/development/python-modules/e3-testsuite/default.nix
index 6c13bbb5a08e3..9ec1dc51addfc 100644
--- a/pkgs/development/python-modules/e3-testsuite/default.nix
+++ b/pkgs/development/python-modules/e3-testsuite/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, e3-core
-, fetchFromGitHub
-, lib
-, setuptools
-, stdenv
+{
+  lib,
+  buildPythonPackage,
+  e3-core,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -11,27 +12,25 @@ buildPythonPackage rec {
   version = "26.0";
   pyproject = true;
 
+  disabled = pythonOlder "3.9";
+
   src = fetchFromGitHub {
     owner = "AdaCore";
     repo = "e3-testsuite";
-    rev = "v${version}";
+    rev = "refs/tags/v${version}";
     hash = "sha256-V20tX0zi2DRHO42udUcW/CDMyBxh1uSTgac0zZGubsI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    e3-core
-  ];
+  dependencies = [ e3-core ];
 
   pythonImportsCheck = [ "e3" ];
 
   meta = with lib; {
+    description = "Generic testsuite framework in Python";
     changelog = "https://github.com/AdaCore/e3-testsuite/releases/tag/${src.rev}";
     homepage = "https://github.com/AdaCore/e3-testsuite/";
-    description = "Generic testsuite framework in Python";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ heijligen ];
     platforms = platforms.linux;
diff --git a/pkgs/development/python-modules/eagle100/default.nix b/pkgs/development/python-modules/eagle100/default.nix
index 9d5e5d795028f..6d1bf6b349382 100644
--- a/pkgs/development/python-modules/eagle100/default.nix
+++ b/pkgs/development/python-modules/eagle100/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-eyYY1x8IjIfUx5OiaOomiWunsO1++seFwXlI/iKDDLw=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "eagle100"
-  ];
+  pythonImportsCheck = [ "eagle100" ];
 
   meta = with lib; {
     description = "Python library for interacting with Rainforest EAGLE devices";
diff --git a/pkgs/development/python-modules/easy-thumbnails/default.nix b/pkgs/development/python-modules/easy-thumbnails/default.nix
index 97afb19058f13..9c801e132f8b0 100644
--- a/pkgs/development/python-modules/easy-thumbnails/default.nix
+++ b/pkgs/development/python-modules/easy-thumbnails/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, django
-, fetchPypi
-, pillow
-, pytestCheckHook
-, pythonOlder
-, reportlab
-, svglib
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchPypi,
+  pillow,
+  pythonOlder,
+  reportlab,
+  svglib,
 }:
 
 buildPythonPackage rec {
@@ -31,15 +31,13 @@ buildPythonPackage rec {
   # Tests require a Django instance which is setup
   doCheck = false;
 
-  pythonImportsCheck = [
-    "easy_thumbnails"
-  ];
+  pythonImportsCheck = [ "easy_thumbnails" ];
 
   meta = with lib; {
     description = "Easy thumbnails for Django";
     homepage = "https://github.com/SmileyChris/easy-thumbnails";
     changelog = "https://github.com/SmileyChris/easy-thumbnails/blob/${version}/CHANGES.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/easydict/default.nix b/pkgs/development/python-modules/easydict/default.nix
index 14aae92ef5c4f..2194fcf112469 100644
--- a/pkgs/development/python-modules/easydict/default.nix
+++ b/pkgs/development/python-modules/easydict/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
 
   doCheck = false; # No tests in archive
 
-  pythonImportsCheck = [
-    "easydict"
-  ];
+  pythonImportsCheck = [ "easydict" ];
 
   meta = with lib; {
     homepage = "https://github.com/makinacorpus/easydict";
diff --git a/pkgs/development/python-modules/easyenergy/default.nix b/pkgs/development/python-modules/easyenergy/default.nix
index 5e3cc6b94f5cb..c85dba7993600 100644
--- a/pkgs/development/python-modules/easyenergy/default.nix
+++ b/pkgs/development/python-modules/easyenergy/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytest-freezer
-, pytestCheckHook
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytest-freezer,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "easyenergy";
-  version = "2.1.1";
+  version = "2.1.2";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -22,7 +23,7 @@ buildPythonPackage rec {
     owner = "klaasnicolaas";
     repo = "python-easyenergy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-UHCwxdtziWIZMf3ORIZoQFE3MI8qbBQo5PEbvppvwD4=";
+    hash = "sha256-tWKfcGznxck8VLK3YshOIbPet2CEbUZbT8JzgaAhAso=";
   };
 
   postPatch = ''
@@ -31,9 +32,7 @@ buildPythonPackage rec {
       --replace 'addopts = "--cov"' ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -47,9 +46,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "easyenergy"
-  ];
+  pythonImportsCheck = [ "easyenergy" ];
 
   disabledTests = [
     # Tests require network access
diff --git a/pkgs/development/python-modules/easygui/default.nix b/pkgs/development/python-modules/easygui/default.nix
index 96b1dbb16a24f..d19d378fde5d3 100644
--- a/pkgs/development/python-modules/easygui/default.nix
+++ b/pkgs/development/python-modules/easygui/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchPypi, buildPythonPackage, tkinter }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  tkinter,
+}:
 
 buildPythonPackage rec {
   pname = "easygui";
@@ -10,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-1lP/ee4fQvY7WgkPL5jOAjNdhq2JY7POJmGAXK/pmgQ=";
   };
 
-  propagatedBuildInputs = [
-    tkinter
-  ];
+  propagatedBuildInputs = [ tkinter ];
 
   doCheck = false; # No tests available
 
@@ -22,6 +25,6 @@ buildPythonPackage rec {
     description = "Very simple, very easy GUI programming in Python";
     homepage = "https://github.com/robertlugg/easygui";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/easyocr/default.nix b/pkgs/development/python-modules/easyocr/default.nix
index 18d76f8e67663..a1ff17f2b3602 100644
--- a/pkgs/development/python-modules/easyocr/default.nix
+++ b/pkgs/development/python-modules/easyocr/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hdf5
-, numpy
-, onnx
-, opencv4
-, pillow
-, pyaml
-, pyclipper
-, python-bidi
-, pythonOlder
-, scikit-image
-, scipy
-, shapely
-, torch
-, torchvision
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hdf5,
+  numpy,
+  onnx,
+  opencv4,
+  pillow,
+  pyaml,
+  pyclipper,
+  python-bidi,
+  pythonOlder,
+  scikit-image,
+  scipy,
+  shapely,
+  torch,
+  torchvision,
 }:
 
 buildPythonPackage rec {
   pname = "easyocr";
-  version = "1.7.1";
+  version = "1.7.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -28,7 +29,7 @@ buildPythonPackage rec {
     owner = "JaidedAI";
     repo = "EasyOCR";
     rev = "refs/tags/v${version}";
-    hash = "sha256-EiiJ2LJ3uYIvgPd2y25MraV5kTa47JalDR7SLbkM9UI=";
+    hash = "sha256-9mrAxt2lphYtLW81lGO5SYHsnMnSA/VpHiY2NffD/Js=";
   };
 
   postPatch = ''
@@ -52,13 +53,9 @@ buildPythonPackage rec {
     torchvision
   ];
 
-  nativeCheckInputs = [
-    onnx
-  ];
+  nativeCheckInputs = [ onnx ];
 
-  pythonImportsCheck = [
-    "easyocr"
-  ];
+  pythonImportsCheck = [ "easyocr" ];
 
   meta = with lib; {
     description = "Ready-to-use OCR with 80+ supported languages and all popular writing scripts";
diff --git a/pkgs/development/python-modules/easyprocess/default.nix b/pkgs/development/python-modules/easyprocess/default.nix
index 7a82d78a1dbd8..17d20b2b65dce 100644
--- a/pkgs/development/python-modules/easyprocess/default.nix
+++ b/pkgs/development/python-modules/easyprocess/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "easyprocess";
diff --git a/pkgs/development/python-modules/easywatch/default.nix b/pkgs/development/python-modules/easywatch/default.nix
index ecc7cc068ff7a..b51b4c5e8d78c 100644
--- a/pkgs/development/python-modules/easywatch/default.nix
+++ b/pkgs/development/python-modules/easywatch/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, watchdog
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  watchdog,
 }:
 
 buildPythonPackage rec {
@@ -27,4 +28,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ fgaz ];
   };
 }
-
diff --git a/pkgs/development/python-modules/ebaysdk/default.nix b/pkgs/development/python-modules/ebaysdk/default.nix
index 27b3f8a29fbb3..dcaa761e8d238 100644
--- a/pkgs/development/python-modules/ebaysdk/default.nix
+++ b/pkgs/development/python-modules/ebaysdk/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, lxml
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  lxml,
+  requests,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/ebcdic/default.nix b/pkgs/development/python-modules/ebcdic/default.nix
index 430ebfe24c58b..8bf1308939f2a 100644
--- a/pkgs/development/python-modules/ebcdic/default.nix
+++ b/pkgs/development/python-modules/ebcdic/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,13 +23,9 @@ buildPythonPackage rec {
 
   sourceRoot = "${src.name}/${pname}";
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # https://github.com/roskakori/CodecMapper/issues/18
@@ -38,9 +35,7 @@ buildPythonPackage rec {
     "test_has_ignored_codec_names"
   ];
 
-  pythonImportsCheck = [
-    "ebcdic"
-  ];
+  pythonImportsCheck = [ "ebcdic" ];
 
   meta = with lib; {
     description = "Additional EBCDIC codecs";
diff --git a/pkgs/development/python-modules/ebooklib/default.nix b/pkgs/development/python-modules/ebooklib/default.nix
index 63ea0b4d06d20..67e00275f3b97 100644
--- a/pkgs/development/python-modules/ebooklib/default.nix
+++ b/pkgs/development/python-modules/ebooklib/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, lxml
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxml,
+  six,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/ecdsa/default.nix b/pkgs/development/python-modules/ecdsa/default.nix
index 2ce07e5b6b2b8..85eee5a8a953b 100644
--- a/pkgs/development/python-modules/ecdsa/default.nix
+++ b/pkgs/development/python-modules/ecdsa/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pkgs
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pkgs,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "ecdsa";
-  version = "0.18.0";
+  version = "0.19.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-GQNIBBVZ4hsiodZc7khSgsoRpvgdUD/duE1QF+ntHkk=";
+    hash = "sha256-YOqtEZllmQDdCvUh7UYreTu9+GdDKzlI6HQWrkyva/g=";
   };
 
   propagatedBuildInputs = [ six ];
@@ -24,5 +25,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/warner/python-ecdsa";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/echo/default.nix b/pkgs/development/python-modules/echo/default.nix
index abf6c957b0479..a07f10e8a4b11 100644
--- a/pkgs/development/python-modules/echo/default.nix
+++ b/pkgs/development/python-modules/echo/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, setuptools-scm
-, libxcrypt
-, numpy
-, qt6
-, qtpy
-, pyqt6
-, pytestCheckHook
-, pytest-cov
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  libxcrypt,
+  numpy,
+  qt6,
+  qtpy,
+  pyqt6,
+  pytestCheckHook,
+  pytest-cov,
 }:
 
 buildPythonPackage rec {
   pname = "echo";
-  version = "0.8.0";
+  version = "0.9.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -23,16 +24,18 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "glue-viz";
     repo = pname;
-    rev = "v${version}";
-    sha256 = "sha256-0FmUA7kOFSRZXwbj8d7asujBPOjE2pFhu6TDNSGD4r0=";
+    rev = "refs/tags/v${version}";
+    sha256 = "sha256-IKd5n8+U6+0dgV4PbLcPaormXCX4srGcXmvYSrnCt60=";
   };
 
-  nativeBuildInputs = [ setuptools setuptools-scm qt6.wrapQtAppsHook ];
-
-  buildInputs = lib.optionals (pythonOlder "3.9") [
-    libxcrypt
+  nativeBuildInputs = [
+    setuptools
+    setuptools-scm
+    qt6.wrapQtAppsHook
   ];
 
+  buildInputs = lib.optionals (pythonOlder "3.9") [ libxcrypt ];
+
   propagatedBuildInputs = [
     qt6.qtconnectivity
     qt6.qtbase
diff --git a/pkgs/development/python-modules/ecoaliface/default.nix b/pkgs/development/python-modules/ecoaliface/default.nix
index 1764eceeaf461..5906455093047 100644
--- a/pkgs/development/python-modules/ecoaliface/default.nix
+++ b/pkgs/development/python-modules/ecoaliface/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     sha256 = "f17b3452cfd31bb8c3509d59b846889c81db5fb85082c061c32703162cbe9083";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/ecos/default.nix b/pkgs/development/python-modules/ecos/default.nix
index 0327845506b87..6daec8eb775d7 100644
--- a/pkgs/development/python-modules/ecos/default.nix
+++ b/pkgs/development/python-modules/ecos/default.nix
@@ -1,48 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nose
-, numpy
-, pythonOlder
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  oldest-supported-numpy,
+  pytestCheckHook,
+  pythonOlder,
+  scipy,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "ecos";
-  version = "2.0.11";
-  format = "setuptools";
+  version = "2.0.13";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "embotech";
     repo = "ecos-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-jflmXR7fuGRSyI6NoQrHFvkKqF/D4iq47StNSCdLbqQ=";
+    hash = "sha256-3NcZBZ7fnwiMelGssa74b5PgmXmNZhP4etNRpyrCkpo=";
     fetchSubmodules = true;
   };
 
-  propagatedBuildInputs = [
-    numpy
-    scipy
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    nose
+  dependencies = [
+    oldest-supported-numpy
+    scipy
   ];
 
-  checkPhase = ''
-    cd ./src
-    nosetests test_interface.py test_interface_bb.py
-  '';
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ecos"
-  ];
+  pythonImportsCheck = [ "ecos" ];
 
   meta = with lib; {
     description = "Python interface for ECOS";
     homepage = "https://github.com/embotech/ecos-python";
+    changelog = "https://github.com/embotech/ecos-python/releases/tag/v${version}";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ drewrisinger ];
   };
diff --git a/pkgs/development/python-modules/ecpy/default.nix b/pkgs/development/python-modules/ecpy/default.nix
index 5f18e814cfe7f..208ff118c83b3 100644
--- a/pkgs/development/python-modules/ecpy/default.nix
+++ b/pkgs/development/python-modules/ecpy/default.nix
@@ -1,4 +1,10 @@
-{ lib, fetchPypi, buildPythonPackage, isPy3k, future }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  isPy3k,
+  future,
+}:
 
 buildPythonPackage rec {
   pname = "ecpy";
diff --git a/pkgs/development/python-modules/ecs-logging/default.nix b/pkgs/development/python-modules/ecs-logging/default.nix
index cd55d1c4c2b9c..9654844075f51 100644
--- a/pkgs/development/python-modules/ecs-logging/default.nix
+++ b/pkgs/development/python-modules/ecs-logging/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "ecs-logging";
-  version = "2.1.0";
+  version = "2.2.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -17,19 +17,15 @@ buildPythonPackage rec {
     owner = "elastic";
     repo = "ecs-logging-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-Gf44bT3/gmHy+yaQ1+bhCFB33ym2G14tzNqTQyC3BJU=";
+    hash = "sha256-djCEutZqcyRfRme+omiwl3ofBUBli71TnfVu59i7vlE=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   # Circular dependency elastic-apm
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ecs_logging"
-  ];
+  pythonImportsCheck = [ "ecs_logging" ];
 
   meta = with lib; {
     description = "Logging formatters for the Elastic Common Schema (ECS) in Python";
diff --git a/pkgs/development/python-modules/ed25519-blake2b/default.nix b/pkgs/development/python-modules/ed25519-blake2b/default.nix
index 1260261adf46f..a034bbb6424b8 100644
--- a/pkgs/development/python-modules/ed25519-blake2b/default.nix
+++ b/pkgs/development/python-modules/ed25519-blake2b/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-cx6fk80awaZGSVdfNRmpn/4LseTPe/X18L5ROjnfc2M=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "ed25519_blake2b"
-  ];
+  pythonImportsCheck = [ "ed25519_blake2b" ];
 
   meta = with lib; {
     description = "Ed25519 public-key signatures (BLAKE2b fork)";
@@ -31,6 +28,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/Matoking/python-ed25519-blake2b";
     changelog = "https://github.com/Matoking/python-ed25519-blake2b/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ onny stargate01 ];
+    maintainers = with maintainers; [
+      onny
+      stargate01
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/ed25519/default.nix b/pkgs/development/python-modules/ed25519/default.nix
index 80e405313cbc0..1f10b9be005d8 100644
--- a/pkgs/development/python-modules/ed25519/default.nix
+++ b/pkgs/development/python-modules/ed25519/default.nix
@@ -2,7 +2,6 @@
   lib,
   buildPythonPackage,
   fetchFromGitHub,
-  fetchpatch,
   pythonOlder,
   setuptools,
   versioneer,
@@ -31,9 +30,7 @@ buildPythonPackage rec {
     versioneer
   ];
 
-  pythonImportsCheck = [
-    "ed25519"
-  ];
+  pythonImportsCheck = [ "ed25519" ];
 
   meta = with lib; {
     description = "Ed25519 public-key signatures";
diff --git a/pkgs/development/python-modules/edalize/default.nix b/pkgs/development/python-modules/edalize/default.nix
index 33cf25b0305a2..e710689aaa26e 100644
--- a/pkgs/development/python-modules/edalize/default.nix
+++ b/pkgs/development/python-modules/edalize/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, coreutils
-, jinja2
-, pandas
-, pyparsing
-, pytestCheckHook
-, pythonOlder
-, which
-, yosys
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  coreutils,
+  jinja2,
+  pandas,
+  pyparsing,
+  pytestCheckHook,
+  pythonOlder,
+  which,
+  yosys,
 }:
 
 buildPythonPackage rec {
@@ -38,9 +39,7 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    jinja2
-  ];
+  propagatedBuildInputs = [ jinja2 ];
 
   passthru.optional-dependencies = {
     reporting = [
@@ -55,9 +54,7 @@ buildPythonPackage rec {
     yosys
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "edalize"
-  ];
+  pythonImportsCheck = [ "edalize" ];
 
   disabledTests = [
     # disable failures related to pandas 2.1.0 apply(...,errors="ignore")
diff --git a/pkgs/development/python-modules/editables/default.nix b/pkgs/development/python-modules/editables/default.nix
index f3db3a96d26fd..32030cff7d467 100644
--- a/pkgs/development/python-modules/editables/default.nix
+++ b/pkgs/development/python-modules/editables/default.nix
@@ -1,37 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "editables";
   version = "0.5";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-MJYn2bXErcDmaNjG+nusG6fIxdQVwtJ/YPCB+OgNHeI=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Tests not included in archive.
   doCheck = false;
 
   pythonImportsCheck = [ "editables" ];
 
-  meta = with lib; {
+  meta = {
     description = "Editable installations";
-    maintainers = with maintainers; [ ];
     homepage = "https://github.com/pfmoore/editables";
-    license = licenses.mit;
+    changelog = "https://github.com/pfmoore/editables/blob/${version}/CHANGELOG.md";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ getchoo ];
   };
 }
diff --git a/pkgs/development/python-modules/editdistance-s/default.nix b/pkgs/development/python-modules/editdistance-s/default.nix
index b6eca2e0242c9..e0ae8a91703db 100644
--- a/pkgs/development/python-modules/editdistance-s/default.nix
+++ b/pkgs/development/python-modules/editdistance-s/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, cffi
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  cffi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/editdistance/default.nix b/pkgs/development/python-modules/editdistance/default.nix
index b4f62dd6e8239..acfc12fb1ff83 100644
--- a/pkgs/development/python-modules/editdistance/default.nix
+++ b/pkgs/development/python-modules/editdistance/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, cython
-, pdm-backend
-, setuptools
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  cython,
+  pdm-backend,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "editdistance";
   version = "0.8.1";
-  pyproject =true;
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -28,13 +29,9 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "editdistance"
-  ];
+  pythonImportsCheck = [ "editdistance" ];
 
   meta = with lib; {
     description = "Python implementation of the edit distance (Levenshtein distance)";
diff --git a/pkgs/development/python-modules/editdistpy/default.nix b/pkgs/development/python-modules/editdistpy/default.nix
index 5a53b3e868008..f6b18b372149b 100644
--- a/pkgs/development/python-modules/editdistpy/default.nix
+++ b/pkgs/development/python-modules/editdistpy/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-, pytestCheckHook
+  pytestCheckHook,
 
-, pythonOlder
+  pythonOlder,
 
-, setuptools
-, cython
+  setuptools,
+  cython,
 
-, symspellpy
-, numpy
-, editdistpy
+  symspellpy,
+  numpy,
+  editdistpy,
 }:
 
 buildPythonPackage rec {
@@ -47,23 +48,18 @@ buildPythonPackage rec {
   '';
 
   passthru.tests = {
-    check = editdistpy.overridePythonAttrs (
-      _: {
-        doCheck = true;
-      }
-    );
+    check = editdistpy.overridePythonAttrs (_: {
+      doCheck = true;
+    });
   };
 
-  pythonImportsCheck = [
-    "editdistpy"
-  ];
+  pythonImportsCheck = [ "editdistpy" ];
 
-  meta = with lib;
-    {
-      description = "Fast Levenshtein and Damerau optimal string alignment algorithms";
-      homepage = "https://github.com/mammothb/editdistpy";
-      changelog = "https://github.com/mammothb/editdistpy/releases/tag/v${version}";
-      license = licenses.mit;
-      maintainers = with maintainers; [ vizid ];
-    };
+  meta = with lib; {
+    description = "Fast Levenshtein and Damerau optimal string alignment algorithms";
+    homepage = "https://github.com/mammothb/editdistpy";
+    changelog = "https://github.com/mammothb/editdistpy/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ vizid ];
+  };
 }
diff --git a/pkgs/development/python-modules/editor/default.nix b/pkgs/development/python-modules/editor/default.nix
index 3cbc44cc5dff6..5cf8a6d2de331 100644
--- a/pkgs/development/python-modules/editor/default.nix
+++ b/pkgs/development/python-modules/editor/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, runs
-, xmod
-, pytestCheckHook
-, tdir
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  runs,
+  xmod,
+  pytestCheckHook,
+  tdir,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-FVtat3gUsK5Lv6XSkVXj0hY6NkMGw6LxRWMJrZ/cIis=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     runs
@@ -34,15 +33,13 @@ buildPythonPackage rec {
     tdir
   ];
 
-  pythonImportsCheck = [
-    "editor"
-  ];
+  pythonImportsCheck = [ "editor" ];
 
   meta = with lib; {
     description = "Open the default text editor";
     homepage = "https://github.com/rec/editor";
     changelog = "https://github.com/rec/editor/blob/${src.rev}/CHANGELOG";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/editorconfig/default.nix b/pkgs/development/python-modules/editorconfig/default.nix
index f074fcc4634af..d31b0717f09b3 100644
--- a/pkgs/development/python-modules/editorconfig/default.nix
+++ b/pkgs/development/python-modules/editorconfig/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, cmake
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  cmake,
 }:
 
 buildPythonPackage rec {
@@ -18,13 +19,9 @@ buildPythonPackage rec {
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    cmake
-  ];
+  nativeCheckInputs = [ cmake ];
 
   dontUseCmakeConfigure = true;
 
diff --git a/pkgs/development/python-modules/edk2-pytool-library/default.nix b/pkgs/development/python-modules/edk2-pytool-library/default.nix
index 20e417950b12a..41479c4f2659a 100644
--- a/pkgs/development/python-modules/edk2-pytool-library/default.nix
+++ b/pkgs/development/python-modules/edk2-pytool-library/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pyasn1
-, pyasn1-modules
-, cryptography
-, joblib
-, gitpython
-, sqlalchemy
-, pygount
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pyasn1,
+  pyasn1-modules,
+  cryptography,
+  joblib,
+  gitpython,
+  sqlalchemy,
+  pygount,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "edk2-pytool-library";
-  version = "0.21.5";
+  version = "0.21.11";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -25,7 +26,7 @@ buildPythonPackage rec {
     owner = "tianocore";
     repo = "edk2-pytool-library";
     rev = "refs/tags/v${version}";
-    hash = "sha256-4Sb8Lu/nYUXgGt9gVv+j32cwW7TjXfH8z+fwzKaOeM8=";
+    hash = "sha256-5d/IEa7IGbQ2FIAl6Y8tBJIzCNDPibmhy35CSpcWQ8A=";
   };
 
   build-system = [
@@ -43,18 +44,14 @@ buildPythonPackage rec {
     pygount
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # requires network access
     "test_basic_parse"
   ];
 
-  pythonImportsCheck = [
-    "edk2toollib"
-  ];
+  pythonImportsCheck = [ "edk2toollib" ];
 
   meta = with lib; {
     description = "Python library package that supports UEFI development";
diff --git a/pkgs/development/python-modules/edlib/default.nix b/pkgs/development/python-modules/edlib/default.nix
index b451480d3be10..5a16cd6e023f2 100644
--- a/pkgs/development/python-modules/edlib/default.nix
+++ b/pkgs/development/python-modules/edlib/default.nix
@@ -1,10 +1,9 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, edlib
-, cython
-, python
+{
+  buildPythonPackage,
+  pythonOlder,
+  edlib,
+  cython,
+  python,
 }:
 
 buildPythonPackage {
@@ -33,5 +32,4 @@ buildPythonPackage {
   '';
 
   pythonImportsCheck = [ "edlib" ];
-
 }
diff --git a/pkgs/development/python-modules/eduvpn-common/default.nix b/pkgs/development/python-modules/eduvpn-common/default.nix
index 8dfce8d9ebb28..9d2bfda4ee8d7 100644
--- a/pkgs/development/python-modules/eduvpn-common/default.nix
+++ b/pkgs/development/python-modules/eduvpn-common/default.nix
@@ -1,10 +1,8 @@
-{ lib
-, buildPythonPackage
-, callPackage
-, fetchurl
-, libeduvpn-common
-, selenium
-, setuptools
+{
+  buildPythonPackage,
+  libeduvpn-common,
+  selenium,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +25,7 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  nativeCheckInputs = [
-    selenium
-  ];
+  nativeCheckInputs = [ selenium ];
 
   pythonImportsCheck = [ "eduvpn_common" ];
 
diff --git a/pkgs/development/python-modules/eduvpn-common/use-nix-lib.patch b/pkgs/development/python-modules/eduvpn-common/use-nix-lib.patch
index a8f4975280c2f..ea40fe496e963 100644
--- a/pkgs/development/python-modules/eduvpn-common/use-nix-lib.patch
+++ b/pkgs/development/python-modules/eduvpn-common/use-nix-lib.patch
@@ -1,25 +1,10 @@
-diff --git a/eduvpn_common/loader.py b/eduvpn_common/loader.py
-index 673d180..195f8c1 100644
 --- a/eduvpn_common/loader.py
 +++ b/eduvpn_common/loader.py
-@@ -21,6 +21,7 @@ def load_lib() -> CDLL:
+@@ -22,6 +22,7 @@ def load_lib() -> CDLL:
      :return: The Go shared library loaded with cdll.LoadLibrary from ctypes
      :rtype: CDLL
      """
 +    return cdll.LoadLibrary("@libeduvpn-common@")
-     lib_prefixes = defaultdict(
-         lambda: "lib",
-         {
-diff --git a/setup.py b/setup.py
-index 0d23379..a9d7926 100755
---- a/setup.py
-+++ b/setup.py
-@@ -92,4 +92,6 @@ class bdist_wheel(_bdist_wheel):
-         self.exports_lib_path = "../../exports/lib"  # default
-
-     def run(self):
-+        _bdist_wheel.run(self)
-+        return
-         self.plat_name_supplied = True  # Force use platform
-
-         libpath = getlibpath(self.plat_name)
+     libfile = f"libeduvpn_common-{__version__}.so"
+ 
+     lib = None
diff --git a/pkgs/development/python-modules/edward/default.nix b/pkgs/development/python-modules/edward/default.nix
index 1343bbc51d739..84a0b03b16e8f 100644
--- a/pkgs/development/python-modules/edward/default.nix
+++ b/pkgs/development/python-modules/edward/default.nix
@@ -1,5 +1,15 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27, pythonAtLeast
-, keras, numpy, scipy, six, tensorflow }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  pythonAtLeast,
+  keras,
+  numpy,
+  scipy,
+  six,
+  tensorflow,
+}:
 
 buildPythonPackage rec {
   pname = "edward";
@@ -16,7 +26,13 @@ buildPythonPackage rec {
   # disabled for now due to Tensorflow trying to create files in $HOME:
   doCheck = false;
 
-  propagatedBuildInputs = [ keras numpy scipy six tensorflow ];
+  propagatedBuildInputs = [
+    keras
+    numpy
+    scipy
+    six
+    tensorflow
+  ];
 
   meta = with lib; {
     description = "Probabilistic programming language using Tensorflow";
diff --git a/pkgs/development/python-modules/effdet/default.nix b/pkgs/development/python-modules/effdet/default.nix
index e6a7945ae0be6..30fcee96fb76c 100644
--- a/pkgs/development/python-modules/effdet/default.nix
+++ b/pkgs/development/python-modules/effdet/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-# build inputs
-, torch
-, torchvision
-, timm
-, pycocotools
-, omegaconf
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  # build inputs
+  torch,
+  torchvision,
+  timm,
+  pycocotools,
+  omegaconf,
 }:
 let
   pname = "effdet";
@@ -35,7 +36,7 @@ buildPythonPackage {
   pythonImportsCheck = [ "effdet" ];
 
   meta = {
-    description = "A PyTorch implementation of EfficientDet";
+    description = "PyTorch implementation of EfficientDet";
     homepage = "https://pypi.org/project/effdet";
     license = lib.licenses.asl20;
     maintainers = with lib.maintainers; [ happysalada ];
diff --git a/pkgs/development/python-modules/effect/default.nix b/pkgs/development/python-modules/effect/default.nix
index b9c49e30a560e..fbc88f69d874a 100644
--- a/pkgs/development/python-modules/effect/default.nix
+++ b/pkgs/development/python-modules/effect/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, attrs
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, six
-, testtools
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  six,
+  testtools,
 }:
 
 buildPythonPackage rec {
@@ -30,23 +31,17 @@ buildPythonPackage rec {
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  checkInputs = [
-    testtools
-  ];
+  checkInputs = [ testtools ];
 
-  pythonImportsCheck = [
-    "effect"
-  ];
+  pythonImportsCheck = [ "effect" ];
 
   meta = with lib; {
     description = "Pure effects for Python";
     homepage = "https://effect.readthedocs.io/";
     changelog = "https://github.com/python-effect/effect/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/eggdeps/default.nix b/pkgs/development/python-modules/eggdeps/default.nix
index 5ce1552c519c1..474c5fa036f7c 100644
--- a/pkgs/development/python-modules/eggdeps/default.nix
+++ b/pkgs/development/python-modules/eggdeps/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, zope-interface
-, zope-testing
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  zope-interface,
+  zope-testing,
 }:
 
 buildPythonPackage rec {
@@ -15,16 +16,18 @@ buildPythonPackage rec {
     sha256 = "a094ed7961a3dd38fcaaa69cf7a58670038acdff186360166d9e3d964b7a7323";
   };
 
-  propagatedBuildInputs = [ zope-interface zope-testing ];
+  propagatedBuildInputs = [
+    zope-interface
+    zope-testing
+  ];
 
   # tests fail, see https://hydra.nixos.org/build/4316603/log/raw
   doCheck = false;
 
   meta = with lib; {
-    description = "A tool which computes a dependency graph between active Python eggs";
+    description = "Tool which computes a dependency graph between active Python eggs";
     mainProgram = "eggdeps";
     homepage = "http://thomas-lotze.de/en/software/eggdeps/";
     license = licenses.zpl20;
   };
-
 }
diff --git a/pkgs/development/python-modules/eigenpy/default.nix b/pkgs/development/python-modules/eigenpy/default.nix
index 6a87f879db898..e45b5424a4b0d 100644
--- a/pkgs/development/python-modules/eigenpy/default.nix
+++ b/pkgs/development/python-modules/eigenpy/default.nix
@@ -1,6 +1,6 @@
 {
   lib,
-  stdenv,
+  buildPythonPackage,
   fetchFromGitHub,
   cmake,
   doxygen,
@@ -11,15 +11,16 @@
   scipy,
 }:
 
-stdenv.mkDerivation (finalAttrs: {
+buildPythonPackage rec {
   pname = "eigenpy";
-  version = "3.5.1";
+  version = "3.9.1";
+  pyproject = false; # Built with cmake
 
   src = fetchFromGitHub {
     owner = "stack-of-tasks";
     repo = "eigenpy";
-    rev = "v${finalAttrs.version}";
-    hash = "sha256-nTS9FNXGrak5g83BHHNSsk5V5khpOpRz5zWE8D1gDUo=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-nRslQMnVaVN7S20RuJDp+e9p+oMhsR03EjHYpvkuBYk=";
   };
 
   outputs = [
@@ -55,7 +56,7 @@ stdenv.mkDerivation (finalAttrs: {
   meta = with lib; {
     description = "Bindings between Numpy and Eigen using Boost.Python";
     homepage = "https://github.com/stack-of-tasks/eigenpy";
-    changelog = "https://github.com/stack-of-tasks/eigenpy/releases/tag/v${finalAttrs.version}";
+    changelog = "https://github.com/stack-of-tasks/eigenpy/releases/tag/v${version}";
     license = licenses.bsd2;
     maintainers = with maintainers; [
       nim65s
@@ -63,4 +64,4 @@ stdenv.mkDerivation (finalAttrs: {
     ];
     platforms = platforms.unix;
   };
-})
+}
diff --git a/pkgs/development/python-modules/einops/default.nix b/pkgs/development/python-modules/einops/default.nix
index 9c2de1bad9cef..4a6dfc6ab777e 100644
--- a/pkgs/development/python-modules/einops/default.nix
+++ b/pkgs/development/python-modules/einops/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, jupyter
-, nbconvert
-, numpy
-, parameterized
-, pillow
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  jupyter,
+  nbconvert,
+  numpy,
+  parameterized,
+  pillow,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "einops";
-  version = "0.7.0";
+  version = "0.8.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -22,7 +23,7 @@ buildPythonPackage rec {
     owner = "arogozhnikov";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-wCs3rMnYCk07kJ3iPItxwCQATflKBYHk6tfBCjiF+bc=";
+    hash = "sha256-6x9AttvSvgYrHaS5ESKOwyEnXxD2BitYTGtqqSKur+0=";
   };
 
   nativeBuildInputs = [ hatchling ];
@@ -42,9 +43,7 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d);
   '';
 
-  pythonImportsCheck = [
-    "einops"
-  ];
+  pythonImportsCheck = [ "einops" ];
 
   disabledTests = [
     # Tests are failing as mxnet is not pulled-in
@@ -54,9 +53,9 @@ buildPythonPackage rec {
     "test_backends_installed"
   ];
 
-  disabledTestPaths = [
-    "tests/test_layers.py"
-  ];
+  disabledTestPaths = [ "tests/test_layers.py" ];
+
+  __darwinAllowLocalNetworking = true;
 
   meta = with lib; {
     description = "Flexible and powerful tensor operations for readable and reliable code";
@@ -65,4 +64,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ yl3dy ];
   };
 }
-
diff --git a/pkgs/development/python-modules/eiswarnung/default.nix b/pkgs/development/python-modules/eiswarnung/default.nix
index c4a3cf9339cb7..ff5fb07f11c0d 100644
--- a/pkgs/development/python-modules/eiswarnung/default.nix
+++ b/pkgs/development/python-modules/eiswarnung/default.nix
@@ -1,20 +1,22 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, pytz
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "eiswarnung";
   version = "2.0.0";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.11";
 
@@ -29,16 +31,14 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace '"0.0.0"' '"${version}"' \
-      --replace 'addopts = "--cov"' "" \
-      --replace 'pytz = ">=2022.7.1,<2024.0.0"' 'pytz = "*"'
+      --replace-fail '"0.0.0"' '"${version}"'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  pythonRelaxDeps = [ "pytz" ];
+
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     pytz
     yarl
@@ -47,12 +47,11 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     aresponses
     pytest-asyncio
+    pytest-cov-stub
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "eiswarnung"
-  ];
+  pythonImportsCheck = [ "eiswarnung" ];
 
   meta = with lib; {
     description = "Module for getting Eiswarning API forecasts";
diff --git a/pkgs/development/python-modules/elastic-apm/default.nix b/pkgs/development/python-modules/elastic-apm/default.nix
index 25ef39efea064..fb27b98608dd2 100644
--- a/pkgs/development/python-modules/elastic-apm/default.nix
+++ b/pkgs/development/python-modules/elastic-apm/default.nix
@@ -19,7 +19,6 @@
   pytest-random-order,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
   sanic,
   sanic-testing,
   setuptools,
@@ -33,7 +32,7 @@
 
 buildPythonPackage rec {
   pname = "elastic-apm";
-  version = "6.22.0";
+  version = "6.23.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -42,14 +41,13 @@ buildPythonPackage rec {
     owner = "elastic";
     repo = "apm-agent-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-VuVx+QUiV4M/ebyv2uF/YZwfvcaPDJAEi55fXfoIttU=";
+    hash = "sha256-S1Ebo9AWN+Mf3OFwxNTiR/AZtje3gNiYkZnVqGb7D4c=";
   };
 
   pythonRelaxDeps = [ "wrapt" ];
 
   build-system = [ setuptools ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     aiohttp
@@ -87,7 +85,7 @@ buildPythonPackage rec {
       # Exclude tornado tests
       "tests/contrib/asyncio/tornado/tornado_tests.py"
     ]
-    ++ lib.optionals stdenv.isDarwin [
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
       # Flaky tests on Darwin
       "tests/utils/threading_tests.py"
     ];
diff --git a/pkgs/development/python-modules/elastic-transport/default.nix b/pkgs/development/python-modules/elastic-transport/default.nix
index ac2acebc6f7f1..4f569fc29a53e 100644
--- a/pkgs/development/python-modules/elastic-transport/default.nix
+++ b/pkgs/development/python-modules/elastic-transport/default.nix
@@ -1,22 +1,28 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, certifi
-, fetchFromGitHub
-, mock
-, pytest-asyncio
-, pytest-httpserver
-, pytestCheckHook
-, pythonOlder
-, requests
-, trustme
-, urllib3
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  certifi,
+  fetchFromGitHub,
+  mock,
+  opentelemetry-api,
+  opentelemetry-sdk,
+  orjson,
+  pytest-asyncio,
+  pytest-httpserver,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  respx,
+  setuptools,
+  trustme,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "elastic-transport";
-  version = "8.12.0";
-  format = "setuptools";
+  version = "8.13.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -24,7 +30,7 @@ buildPythonPackage rec {
     owner = "elastic";
     repo = "elastic-transport-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ZLzaCiopdkhpqjzZzv/NT1+f5bHZYuqQvSgM5jeMaqg=";
+    hash = "sha256-zxx5BvqQf5ipaOANKpThWUTsfhDkNMJqUejAWH68wpo=";
   };
 
   postPatch = ''
@@ -32,6 +38,8 @@ buildPythonPackage rec {
       --replace " --cov-report=term-missing --cov=elastic_transport" ""
   '';
 
+  build-system = [ setuptools ];
+
   propagatedBuildInputs = [
     urllib3
     certifi
@@ -40,16 +48,18 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     aiohttp
     mock
+    opentelemetry-api
+    opentelemetry-sdk
+    orjson
     pytest-asyncio
     pytest-httpserver
     pytestCheckHook
     requests
+    respx
     trustme
   ];
 
-  pythonImportsCheck = [
-    "elastic_transport"
-  ];
+  pythonImportsCheck = [ "elastic_transport" ];
 
   disabledTests = [
     # Tests require network access
diff --git a/pkgs/development/python-modules/elasticsearch-dsl/default.nix b/pkgs/development/python-modules/elasticsearch-dsl/default.nix
index 53778ce0b4e1f..bd9b460356cb5 100644
--- a/pkgs/development/python-modules/elasticsearch-dsl/default.nix
+++ b/pkgs/development/python-modules/elasticsearch-dsl/default.nix
@@ -1,22 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, elasticsearch
-, python-dateutil
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  elasticsearch,
+  python-dateutil,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "elasticsearch-dsl";
-  version = "8.13.0";
+  version = "8.14.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-cy/IEae7B2O8P7WJLk6nzwbTG7o1XoezM1PpLfrNebQ=";
+    hash = "sha256-MmxtzPMvH/PUyEiJOIWQd4REuhj3cK3uUvJHIcuXxMc=";
   };
 
-  propagatedBuildInputs = [ elasticsearch python-dateutil six ];
+  propagatedBuildInputs = [
+    elasticsearch
+    python-dateutil
+    six
+  ];
 
   # ImportError: No module named test_elasticsearch_dsl
   # Tests require a local instance of elasticsearch
diff --git a/pkgs/development/python-modules/elasticsearch/default.nix b/pkgs/development/python-modules/elasticsearch/default.nix
index a89cb3f0a4c5e..562d66e9bc2a6 100644
--- a/pkgs/development/python-modules/elasticsearch/default.nix
+++ b/pkgs/development/python-modules/elasticsearch/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, certifi
-, elastic-transport
-, fetchPypi
-, pythonOlder
-, requests
-, urllib3
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  certifi,
+  elastic-transport,
+  fetchPypi,
+  pythonOlder,
+  requests,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "elasticsearch";
-  version = "8.12.1";
+  version = "8.14.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-AMmXcg+9Dyr+VBfIGTz2XRFoF6AlDeBSHjDD6B8AuKw=";
+    hash = "sha256-qiSQAp3Zb0AVszPBgnqiH9bApNIjsA37D+kzuNCaURs=";
   };
 
-  nativeBuildInputs = [
-    elastic-transport
-  ];
+  nativeBuildInputs = [ elastic-transport ];
 
   propagatedBuildInputs = [
     urllib3
@@ -31,17 +30,11 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    requests = [
-      requests
-    ];
-    async = [
-      aiohttp
-    ];
+    requests = [ requests ];
+    async = [ aiohttp ];
   };
 
-  pythonImportsCheck = [
-    "elasticsearch"
-  ];
+  pythonImportsCheck = [ "elasticsearch" ];
 
   # Check is disabled because running them destroy the content of the local cluster!
   # https://github.com/elasticsearch/elasticsearch-py/tree/master/test_elasticsearch
diff --git a/pkgs/development/python-modules/elasticsearch8/default.nix b/pkgs/development/python-modules/elasticsearch8/default.nix
index c83de92d03bf4..3d3594ae4b344 100644
--- a/pkgs/development/python-modules/elasticsearch8/default.nix
+++ b/pkgs/development/python-modules/elasticsearch8/default.nix
@@ -1,46 +1,42 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, elastic-transport
-, fetchPypi
-, pythonOlder
-, requests
-, urllib3
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  elastic-transport,
+  fetchPypi,
+  orjson,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "elasticsearch8";
-  version = "8.12.1";
-  format = "setuptools";
+  version = "8.14.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-RuL1zYmEZEaaXb2LEW+BUmo7TcdGHH/5fjgesxXtbls=";
+    hash = "sha256-JiiJSjdWAocHvQ9RCGTUJD05hoSE23LYxvzMlELJUfM=";
   };
 
-  nativeBuildInputs = [
-    elastic-transport
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  dependencies = [ elastic-transport ];
 
   passthru.optional-dependencies = {
-    async = [
-      aiohttp
-    ];
+    async = [ aiohttp ];
+    requests = [ requests ];
+    orjson = [ orjson ];
   };
 
   # Check is disabled because running them destroy the content of the local cluster!
   # https://github.com/elasticsearch/elasticsearch-py/tree/main/test_elasticsearch
   doCheck = false;
 
-  pythonImportsCheck = [
-    "elasticsearch8"
-  ];
+  pythonImportsCheck = [ "elasticsearch8" ];
 
   meta = with lib; {
     description = "Official low-level client for Elasticsearch";
diff --git a/pkgs/development/python-modules/elegy/default.nix b/pkgs/development/python-modules/elegy/default.nix
index 14b87970537ca..966b8731f2429 100644
--- a/pkgs/development/python-modules/elegy/default.nix
+++ b/pkgs/development/python-modules/elegy/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, cloudpickle
-, deepdish
-, deepmerge
-, dm-haiku
-, fetchFromGitHub
-, fetchpatch
-, jaxlib
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, sh
-, tables
-, tabulate
-, tensorboardx
-, tensorflow
-, toolz
-, torch
-, treex
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  cloudpickle,
+  deepdish,
+  deepmerge,
+  dm-haiku,
+  fetchFromGitHub,
+  fetchpatch,
+  jaxlib,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  sh,
+  tables,
+  tabulate,
+  tensorboardx,
+  tensorflow,
+  toolz,
+  torch,
+  treex,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -54,13 +55,9 @@ buildPythonPackage rec {
       --replace 'wandb = { version = "^0.12.10", optional = true }' ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  buildInputs = [
-    jaxlib
-  ];
+  buildInputs = [ jaxlib ];
 
   propagatedBuildInputs = [
     cloudpickle
@@ -76,9 +73,7 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  pythonImportsCheck = [
-    "elegy"
-  ];
+  pythonImportsCheck = [ "elegy" ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/elementpath/default.nix b/pkgs/development/python-modules/elementpath/default.nix
index e9144961c6d79..9c2532d6132c9 100644
--- a/pkgs/development/python-modules/elementpath/default.nix
+++ b/pkgs/development/python-modules/elementpath/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "elementpath";
-  version = "4.4.0";
+  version = "4.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "sissaschool";
     repo = "elementpath";
     rev = "refs/tags/v${version}";
-    hash = "sha256-n1Ps0CybeLeDR5E4UnqmSkbFe0SXyplomEGDchAweSY=";
+    hash = "sha256-zyJ+UtPTGEziIlucIXN1dIzfN5sfLkeOia7tiqOGFjk=";
   };
 
   build-system = [ setuptools ];
@@ -32,6 +32,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/sissaschool/elementpath";
     changelog = "https://github.com/sissaschool/elementpath/blob/v${version}/CHANGELOG.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/elevate/default.nix b/pkgs/development/python-modules/elevate/default.nix
index 4a8bf40e30fc8..0db78266d3208 100644
--- a/pkgs/development/python-modules/elevate/default.nix
+++ b/pkgs/development/python-modules/elevate/default.nix
@@ -1,4 +1,10 @@
-{ lib, fetchPypi, buildPythonPackage, fetchpatch, setuptools-scm }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  fetchpatch,
+  setuptools-scm,
+}:
 
 buildPythonPackage rec {
   pname = "elevate";
@@ -12,15 +18,13 @@ buildPythonPackage rec {
 
   patches = [
     (fetchpatch {
-    # This is for not calling shell wrappers through Python, which fails.
-    url = "https://github.com/rkitover/elevate/commit/148b2bf698203ea39c9fe5d635ecd03cd94051af.patch";
-    sha256 = "1ky3z1jxl1g28wbwbx8qq8jgx8sa8pr8s3fdcpdhdx1blw28cv61";
+      # This is for not calling shell wrappers through Python, which fails.
+      url = "https://github.com/rkitover/elevate/commit/148b2bf698203ea39c9fe5d635ecd03cd94051af.patch";
+      sha256 = "1ky3z1jxl1g28wbwbx8qq8jgx8sa8pr8s3fdcpdhdx1blw28cv61";
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   # No tests included
   doCheck = false;
diff --git a/pkgs/development/python-modules/elevenlabs/default.nix b/pkgs/development/python-modules/elevenlabs/default.nix
new file mode 100644
index 0000000000000..d2d661cb3b0fd
--- /dev/null
+++ b/pkgs/development/python-modules/elevenlabs/default.nix
@@ -0,0 +1,49 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpx,
+  lib,
+  poetry-core,
+  pydantic,
+  pydantic-core,
+  requests,
+  typing-extensions,
+  websockets,
+}:
+
+buildPythonPackage rec {
+  pname = "elevenlabs";
+  version = "1.8.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "elevenlabs";
+    repo = "elevenlabs-python";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-puYRVPWMNV+nOHwa//hZQAq1pAkNeU5CFjlMls9C7MM=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    httpx
+    pydantic
+    pydantic-core
+    requests
+    typing-extensions
+    websockets
+  ];
+
+  pythonImportsCheck = [ "elevenlabs" ];
+
+  # tests access the API on the internet
+  doCheck = false;
+
+  meta = {
+    changelog = "https://github.com/elevenlabs/elevenlabs-python/releases/tag/v${version}";
+    description = "Official Python API for ElevenLabs Text to Speech";
+    homepage = "https://github.com/elevenlabs/elevenlabs-python";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/elgato/default.nix b/pkgs/development/python-modules/elgato/default.nix
index f17b502826ceb..40dc9b740c79f 100644
--- a/pkgs/development/python-modules/elgato/default.nix
+++ b/pkgs/development/python-modules/elgato/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, mashumaro
-, orjson
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mashumaro,
+  orjson,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,7 @@ buildPythonPackage rec {
       --replace "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -50,9 +49,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "elgato"
-  ];
+  pythonImportsCheck = [ "elgato" ];
 
   meta = with lib; {
     description = "Python client for Elgato Key Lights";
diff --git a/pkgs/development/python-modules/eliot/default.nix b/pkgs/development/python-modules/eliot/default.nix
index 4bf4f45a29cbd..04cb574509c2b 100644
--- a/pkgs/development/python-modules/eliot/default.nix
+++ b/pkgs/development/python-modules/eliot/default.nix
@@ -1,65 +1,76 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, aiocontextvars
-, boltons
-, hypothesis
-, pyrsistent
-, pytestCheckHook
-, setuptools
-, six
-, testtools
-, zope-interface
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pythonAtLeast,
+
+  setuptools,
+
+  boltons,
+  orjson,
+  pyrsistent,
+  zope-interface,
+
+  daemontools,
+  dask,
+  distributed,
+  hypothesis,
+  pandas,
+  pytestCheckHook,
+  testtools,
+  twisted,
 }:
 
 buildPythonPackage rec {
   pname = "eliot";
-  version = "1.14.0";
-  format = "setuptools";
+  version = "1.15.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8" || pythonAtLeast "3.13";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-wvCZo+jV7PwidFdm58xmSkjbZLa4nZht/ycEkdhoMUk=";
+  src = fetchFromGitHub {
+    owner = "itamarst";
+    repo = "eliot";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Ur7q7PZ5HH4ttD3b0HyBTe1B7eQ2nEWcTBR/Hjeg9yw=";
   };
 
-  propagatedBuildInputs = [
-    aiocontextvars
+  build-system = [ setuptools ];
+
+  dependencies = [
     boltons
+    orjson
     pyrsistent
-    setuptools
-    six
     zope-interface
   ];
 
   nativeCheckInputs = [
+    dask
+    distributed
     hypothesis
+    pandas
     pytestCheckHook
     testtools
-  ];
+    twisted
+  ] ++ lib.optionals stdenv.hostPlatform.isLinux [ daemontools ];
 
-  pythonImportsCheck = [
-    "eliot"
-  ];
+  __darwinAllowLocalNetworking = true;
+
+  pythonImportsCheck = [ "eliot" ];
 
   # Tests run eliot-prettyprint in out/bin.
   preCheck = ''
     export PATH=$out/bin:$PATH
   '';
 
-  disabledTests = [
-    "test_parse_stream"
-    # AttributeError: module 'inspect' has no attribute 'getargspec'
-    "test_default"
-  ];
-
-  meta = with lib; {
+  meta = {
     homepage = "https://eliot.readthedocs.io";
     description = "Logging library that tells you why it happened";
+    changelog = "https://github.com/itamarst/eliot/blob/${version}/docs/source/news.rst";
     mainProgram = "eliot-prettyprint";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ dpausp ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ dpausp ];
   };
 }
diff --git a/pkgs/development/python-modules/eliqonline/default.nix b/pkgs/development/python-modules/eliqonline/default.nix
index 3d3261071bbc1..2b9b0e53c0bf5 100644
--- a/pkgs/development/python-modules/eliqonline/default.nix
+++ b/pkgs/development/python-modules/eliqonline/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, docopt
-, fetchPypi
-, pythonOlder
-, pyyaml
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  docopt,
+  fetchPypi,
+  pythonOlder,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "eliqonline"
-  ];
+  pythonImportsCheck = [ "eliqonline" ];
 
   meta = with lib; {
     description = "Python client to the Eliq Online API";
diff --git a/pkgs/development/python-modules/elkm1-lib/default.nix b/pkgs/development/python-modules/elkm1-lib/default.nix
index cf8c39c308dd9..a1c04262a5bb8 100644
--- a/pkgs/development/python-modules/elkm1-lib/default.nix
+++ b/pkgs/development/python-modules/elkm1-lib/default.nix
@@ -3,7 +3,6 @@
   async-timeout,
   buildPythonPackage,
   fetchFromGitHub,
-  fetchpatch,
   poetry-core,
   pyserial-asyncio-fast,
   pytest-asyncio,
diff --git a/pkgs/development/python-modules/elmax-api/default.nix b/pkgs/development/python-modules/elmax-api/default.nix
index b3e94cca5f02e..27b1689863392 100644
--- a/pkgs/development/python-modules/elmax-api/default.nix
+++ b/pkgs/development/python-modules/elmax-api/default.nix
@@ -1,16 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, httpx
-, pyjwt
-, pythonOlder
-, yarl
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  httpx,
+  pyjwt,
+  pythonOlder,
+  websockets,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "elmax-api";
   version = "0.0.5";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -21,18 +24,19 @@ buildPythonPackage rec {
     hash = "sha256-57pmmH7f893H71CMhdnahvbN/5F2yfrVZ6MFpYQ4+mQ=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     httpx
     pyjwt
+    websockets
     yarl
   ];
 
   # Test require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "elmax_api"
-  ];
+  pythonImportsCheck = [ "elmax_api" ];
 
   meta = with lib; {
     description = "Python library for interacting with the Elmax cloud";
diff --git a/pkgs/development/python-modules/elmax/default.nix b/pkgs/development/python-modules/elmax/default.nix
index a538be01ae9dd..30bcb15c21066 100644
--- a/pkgs/development/python-modules/elmax/default.nix
+++ b/pkgs/development/python-modules/elmax/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, httpx
-, poetry-core
-, pythonOlder
-, pytest-asyncio
-, pytest-httpx
-, pytestCheckHook
-, yarl
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpx,
+  poetry-core,
+  pythonOlder,
+  pytest-asyncio,
+  pytest-httpx,
+  pytestCheckHook,
+  yarl,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/email-validator/default.nix b/pkgs/development/python-modules/email-validator/default.nix
index eea86196c2290..78463781f75da 100644
--- a/pkgs/development/python-modules/email-validator/default.nix
+++ b/pkgs/development/python-modules/email-validator/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, dnspython
-, fetchPypi
-, idna
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dnspython,
+  fetchPypi,
+  idna,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "email-validator";
-  version = "2.1.1";
+  version = "2.2.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -17,17 +18,15 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "email_validator";
     inherit version;
-    hash = "sha256-IApwaAugiQS+bR7vcpIFzA1odjQ5mlkk2EJTPvuCS4Q=";
+    hash = "sha256-y2kPNExhenFPIuZq53FEWhzrRoIRUt+OFlxfmjZFgrc=";
   };
 
-  propagatedBuildInputs = [
+  dependencies = [
     dnspython
     idna
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # dns.resolver.NoResolverConfiguration: cannot open /etc/resolv.conf
@@ -35,9 +34,7 @@ buildPythonPackage rec {
     "tests/test_main.py"
   ];
 
-  pythonImportsCheck = [
-    "email_validator"
-  ];
+  pythonImportsCheck = [ "email_validator" ];
 
   meta = with lib; {
     description = "Email syntax and deliverability validation library";
diff --git a/pkgs/development/python-modules/emailthreads/default.nix b/pkgs/development/python-modules/emailthreads/default.nix
index 236ab931f939d..b18d0f1e6d7b1 100644
--- a/pkgs/development/python-modules/emailthreads/default.nix
+++ b/pkgs/development/python-modules/emailthreads/default.nix
@@ -1,5 +1,10 @@
-{ lib, fetchFromGitHub, buildPythonPackage
-, python, isPy3k, unittestCheckHook }:
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  isPy3k,
+  unittestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "emailthreads";
diff --git a/pkgs/development/python-modules/embedding-reader/default.nix b/pkgs/development/python-modules/embedding-reader/default.nix
index 9a1a8a0b1dfc6..0f4d3c54a34b9 100644
--- a/pkgs/development/python-modules/embedding-reader/default.nix
+++ b/pkgs/development/python-modules/embedding-reader/default.nix
@@ -1,12 +1,12 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, fsspec
-, lib
-, numpy
-, pandas
-, pyarrow
-, pytestCheckHook
-, pythonRelaxDepsHook
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  fsspec,
+  lib,
+  numpy,
+  pandas,
+  pyarrow,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,11 +21,15 @@ buildPythonPackage rec {
     hash = "sha256-paN6rAyH3L7qCfWPr5kXo9Xl57gRMhdcDnoyLJ7II2w=";
   };
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   pythonRelaxDeps = [ "pyarrow" ];
 
-  propagatedBuildInputs = [ fsspec numpy pandas pyarrow ];
+  propagatedBuildInputs = [
+    fsspec
+    numpy
+    pandas
+    pyarrow
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
diff --git a/pkgs/development/python-modules/emborg/default.nix b/pkgs/development/python-modules/emborg/default.nix
index d20a7ea6e246b..6a48c2b84b83a 100644
--- a/pkgs/development/python-modules/emborg/default.nix
+++ b/pkgs/development/python-modules/emborg/default.nix
@@ -1,26 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, flit-core
-, pytestCheckHook
-, pythonOlder
-, borgbackup
-, appdirs
-, arrow
-, docopt
-, inform
-, nestedtext
-, parametrize-from-file
-, quantiphy
-, requests
-, shlib
-, voluptuous
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pytestCheckHook,
+  pythonOlder,
+  borgbackup,
+  appdirs,
+  arrow,
+  docopt,
+  inform,
+  nestedtext,
+  parametrize-from-file,
+  quantiphy,
+  requests,
+  shlib,
+  voluptuous,
 }:
 
 buildPythonPackage rec {
   pname = "emborg";
-  version = "1.38";
+  version = "1.40";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -29,12 +29,10 @@ buildPythonPackage rec {
     owner = "KenKundert";
     repo = "emborg";
     rev = "refs/tags/v${version}";
-    hash = "sha256-dK/6y1cjegomiy3fta2grUm4T0ZrylmstXfkJo4mDCE=";
+    hash = "sha256-1cgTKYt2/HiPxsar/nIr4kk2dRMYCJZQilhr+zs1AEg=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     appdirs
@@ -61,17 +59,7 @@ buildPythonPackage rec {
     patchShebangs .
   '';
 
-  # this patch fixes a whitespace issue in the message that a test is expecting, https://github.com/KenKundert/emborg/pull/67
-  patches = [
-    (fetchpatch {
-      url = "https://github.com/KenKundert/emborg/commit/afac6d1ddcecdb4bddbec87b6c8eed4cfbf4ebf9.diff";
-      sha256 = "3xg2z03FLKH4ckmiBZqE1FDjpgjgdO8OZL1ewrJlQ4o=";
-    })
-  ];
-
-  pythonImportsCheck = [
-    "emborg"
-  ];
+  pythonImportsCheck = [ "emborg" ];
 
   meta = with lib; {
     description = "Interactive command line interface to Borg Backup";
diff --git a/pkgs/development/python-modules/embrace/default.nix b/pkgs/development/python-modules/embrace/default.nix
index 3c51a01ca816e..4ad658d7736c5 100644
--- a/pkgs/development/python-modules/embrace/default.nix
+++ b/pkgs/development/python-modules/embrace/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromSourcehut
-, pytestCheckHook
-, pythonOlder
-, sqlparse
-, wrapt
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromSourcehut,
+  pytestCheckHook,
+  pythonOlder,
+  sqlparse,
+  wrapt,
 }:
 
 buildPythonPackage rec {
@@ -28,17 +29,13 @@ buildPythonPackage rec {
     wrapt
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "embrace"
-  ];
+  pythonImportsCheck = [ "embrace" ];
 
   # Some test for hot-reload fails on Darwin, but the rest of the library
   # should remain usable. (https://todo.sr.ht/~olly/embrace-sql/4)
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   meta = with lib; {
     description = "Embrace SQL keeps your SQL queries in SQL files";
diff --git a/pkgs/development/python-modules/emcee/default.nix b/pkgs/development/python-modules/emcee/default.nix
index 624faffed8efb..cefe2c87cd8a2 100644
--- a/pkgs/development/python-modules/emcee/default.nix
+++ b/pkgs/development/python-modules/emcee/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, pytestCheckHook
-, setuptools-scm
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  pytestCheckHook,
+  setuptools-scm,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "emcee";
-  version = "3.1.5";
+  version = "3.1.6";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -18,30 +19,22 @@ buildPythonPackage rec {
     owner = "dfm";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-83v7O/eo8LQux75IkLWU8moj3rYiyRjZdNeAwtjrJ60=";
+    hash = "sha256-JVZK3kvDwWENho0OxZ9OxATcm3XpGmX+e7alPclRsHY=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "emcee"
-  ];
+  pythonImportsCheck = [ "emcee" ];
 
   meta = with lib; {
     description = "Kick ass affine-invariant ensemble MCMC sampling";
     homepage = "https://emcee.readthedocs.io/";
     changelog = "https://github.com/dfm/emcee/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/emoji/default.nix b/pkgs/development/python-modules/emoji/default.nix
index f2c036f7be024..0a0bb89d89bde 100644
--- a/pkgs/development/python-modules/emoji/default.nix
+++ b/pkgs/development/python-modules/emoji/default.nix
@@ -1,35 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  typing-extensions,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "emoji";
-  version = "2.10.1";
-  format = "setuptools";
+  version = "2.13.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "carpedm20";
-    repo = pname;
+    repo = "emoji";
     rev = "refs/tags/v${version}";
-    hash = "sha256-cCYZ+0IFHIR9++RfUbFTRMKYB9nC5dBaPMH6dSiAXK0=";
+    hash = "sha256-FTQTbp5Ud3CyqkAiGvY8hBOKnvFR29CgZPbz4eZp/ik=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  build-system = [ setuptools ];
 
-  disabledTests = [
-    "test_emojize_name_only"
-  ];
+  dependencies = [ typing-extensions ];
 
-  pythonImportsCheck = [
-    "emoji"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  disabledTests = [ "test_emojize_name_only" ];
+
+  pythonImportsCheck = [ "emoji" ];
 
   meta = with lib; {
     description = "Emoji for Python";
diff --git a/pkgs/development/python-modules/empty-files/default.nix b/pkgs/development/python-modules/empty-files/default.nix
index 264e4543a20f6..4cd481da50387 100644
--- a/pkgs/development/python-modules/empty-files/default.nix
+++ b/pkgs/development/python-modules/empty-files/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-P/woyAN9cYdxryX1iM36C53c9dL6lo4eoTzBWT2cd3A=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # cyclic dependency with approvaltests
   doCheck = false;
@@ -29,6 +28,6 @@ buildPythonPackage rec {
     description = "Null Object pattern for files";
     homepage = "https://github.com/approvals/EmptyFiles.Python";
     license = licenses.asl20;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/empy/default.nix b/pkgs/development/python-modules/empy/default.nix
index 0d49b0a8a21a8..018e0240ca65d 100644
--- a/pkgs/development/python-modules/empy/default.nix
+++ b/pkgs/development/python-modules/empy/default.nix
@@ -1,4 +1,8 @@
-{ lib, fetchPypi, buildPythonPackage }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+}:
 
 buildPythonPackage rec {
   pname = "empy";
@@ -6,12 +10,12 @@ buildPythonPackage rec {
   format = "setuptools";
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-nXEul8E5WFm+E9K0V4jJGGzZfxwE2sUQOZEw8yhkM2c=";
+    hash = "sha256-nXEul8E5WFm+E9K0V4jJGGzZfxwE2sUQOZEw8yhkM2c=";
   };
   pythonImportsCheck = [ "em" ];
   meta = with lib; {
     homepage = "http://www.alcyone.com/software/empy/";
-    description = "A templating system for Python.";
+    description = "Templating system for Python";
     mainProgram = "em.py";
     maintainers = with maintainers; [ nkalupahana ];
     license = licenses.lgpl21Only;
diff --git a/pkgs/development/python-modules/emulated-roku/default.nix b/pkgs/development/python-modules/emulated-roku/default.nix
index 90807521cde82..1e29bead57fbd 100644
--- a/pkgs/development/python-modules/emulated-roku/default.nix
+++ b/pkgs/development/python-modules/emulated-roku/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, aiohttp
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  aiohttp,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-7DbJl1e1ESWPCNuQX7m/ggXNDyPYZ5eNGwSz+jnxZj0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # no tests implemented
   doCheck = false;
diff --git a/pkgs/development/python-modules/emv/default.nix b/pkgs/development/python-modules/emv/default.nix
index c7be7ba9e7fa6..69d3a9ef910e8 100644
--- a/pkgs/development/python-modules/emv/default.nix
+++ b/pkgs/development/python-modules/emv/default.nix
@@ -1,58 +1,59 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, click
-, pyscard
-, pycountry
-, terminaltables
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  click,
+  pyscard,
+  pycountry,
+  terminaltables,
+  pytestCheckHook,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "emv";
   version = "1.0.14";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = pythonOlder "3.4";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "russss";
     repo = "python-emv";
-    rev = "v${version}";
+    rev = "refs/tags/v${version}";
     hash = "sha256-MnaeQZ0rA3i0CoUA6HgJQpwk5yo4rm9e+pc5XzRd1eg=";
   };
 
-  propagatedBuildInputs = [
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace-fail '"enum-compat==0.0.3",' "" \
+      --replace-fail '"argparse==1.4.0",' "" \
+      --replace-fail "click==7.1.2" "click" \
+      --replace-fail "pyscard==2.0.0" "pyscard" \
+      --replace-fail "pycountry==20.7.3" "pycountry" \
+      --replace-fail "terminaltables==3.1.0" "terminaltables"
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     click
     pyscard
     pycountry
     terminaltables
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace '"enum-compat==0.0.3",' "" \
-      --replace '"argparse==1.4.0",' "" \
-      --replace "click==7.1.2" "click" \
-      --replace "pyscard==2.0.0" "pyscard" \
-      --replace "pycountry==20.7.3" "pycountry" \
-      --replace "terminaltables==3.1.0" "terminaltables"
-  '';
-
-  pythonImportsCheck = [
-    "emv"
-  ];
+  pythonImportsCheck = [ "emv" ];
 
   meta = with lib; {
     description = "Implementation of the EMV chip-and-pin smartcard protocol";
-    mainProgram = "emvtool";
     homepage = "https://github.com/russss/python-emv";
+    changelog = "https://github.com/russss/python-emv/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ lukegb ];
+    mainProgram = "emvtool";
   };
 }
diff --git a/pkgs/development/python-modules/enaml/default.nix b/pkgs/development/python-modules/enaml/default.nix
index 4479f50659279..d08c69cee9e57 100644
--- a/pkgs/development/python-modules/enaml/default.nix
+++ b/pkgs/development/python-modules/enaml/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, atom
-, buildPythonPackage
-, bytecode
-, cppy
-, fetchFromGitHub
-, kiwisolver
-, pegen
-, ply
-, qtpy
-, setuptools
-, setuptools-scm
-, pythonOlder
-, sip
+{
+  lib,
+  atom,
+  buildPythonPackage,
+  bytecode,
+  cppy,
+  fetchFromGitHub,
+  kiwisolver,
+  pegen,
+  ply,
+  qtpy,
+  setuptools,
+  setuptools-scm,
+  pythonOlder,
+  sip,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/enamlx/default.nix b/pkgs/development/python-modules/enamlx/default.nix
index 7c90d8a4b9717..4d181fab70321 100644
--- a/pkgs/development/python-modules/enamlx/default.nix
+++ b/pkgs/development/python-modules/enamlx/default.nix
@@ -1,10 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, enaml
-, pyqtgraph
-, pythonocc-core
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  enaml,
+  pyqtgraph,
+  pyqt5,
+  pythonocc-core,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -23,6 +25,7 @@ buildPythonPackage rec {
     enaml
     # Until https://github.com/inkcut/inkcut/issues/105 perhaps
     pyqtgraph
+    pyqt5
     pythonocc-core
     typing-extensions
   ];
diff --git a/pkgs/development/python-modules/encodec/default.nix b/pkgs/development/python-modules/encodec/default.nix
index 179ab69aa9ff8..6c8c363e75ec8 100644
--- a/pkgs/development/python-modules/encodec/default.nix
+++ b/pkgs/development/python-modules/encodec/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# dependencies
-, einops
-, numpy
-, torch-bin
-, torchaudio-bin
+  # dependencies
+  einops,
+  numpy,
+  torch-bin,
+  torchaudio-bin,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/energyflip-client/default.nix b/pkgs/development/python-modules/energyflip-client/default.nix
index 50cb9e1884e8a..ae25755ec26de 100644
--- a/pkgs/development/python-modules/energyflip-client/default.nix
+++ b/pkgs/development/python-modules/energyflip-client/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "energyflip"
-  ];
+  pythonImportsCheck = [ "energyflip" ];
 
   meta = with lib; {
     description = "Library to communicate with the API behind EnergyFlip";
diff --git a/pkgs/development/python-modules/energyflow/default.nix b/pkgs/development/python-modules/energyflow/default.nix
index 7308d0289023f..4c6ce4df58dd3 100644
--- a/pkgs/development/python-modules/energyflow/default.nix
+++ b/pkgs/development/python-modules/energyflow/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, h5py
-, numpy
-, six
-, wasserstein
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  h5py,
+  numpy,
+  six,
+  wasserstein,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -32,12 +33,8 @@ buildPythonPackage rec {
     wasserstein
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-  pytestFlagsArray = [
-    "energyflow/tests"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+  pytestFlagsArray = [ "energyflow/tests" ];
   disabledTestPaths = [
     "energyflow/tests/test_archs.py" # requires tensorflow
     "energyflow/tests/test_emd.py" # requires "ot"
diff --git a/pkgs/development/python-modules/energyzero/default.nix b/pkgs/development/python-modules/energyzero/default.nix
index 0c99ced94a138..262691535d502 100644
--- a/pkgs/development/python-modules/energyzero/default.nix
+++ b/pkgs/development/python-modules/energyzero/default.nix
@@ -1,20 +1,22 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytest-freezer
-, pytestCheckHook
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytest-freezer,
+  pytestCheckHook,
+  pythonOlder,
+  syrupy,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "energyzero";
-  version = "2.1.0";
-  format = "pyproject";
+  version = "2.1.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.11";
 
@@ -22,18 +24,16 @@ buildPythonPackage rec {
     owner = "klaasnicolaas";
     repo = "python-energyzero";
     rev = "refs/tags/v${version}";
-    hash = "sha256-NZbCiLCZC+hTcV0twOeCoKKD3eZ0/ZzPTnVpFyMLSfw=";
+    hash = "sha256-KOeYdTruD8AN/NkLEKKJDUB/JkOoQwfAMZkp/RvvUQE=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace '"0.0.0"' '"${version}"' \
-      --replace 'addopts = "--cov"' ""
+      --replace-fail '"0.0.0"' '"${version}"' \
+      --replace-fail 'addopts = "--cov"' ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -45,11 +45,10 @@ buildPythonPackage rec {
     pytest-asyncio
     pytest-freezer
     pytestCheckHook
+    syrupy
   ];
 
-  pythonImportsCheck = [
-    "energyzero"
-  ];
+  pythonImportsCheck = [ "energyzero" ];
 
   meta = with lib; {
     description = "Module for getting the dynamic prices from EnergyZero";
diff --git a/pkgs/development/python-modules/enlighten/default.nix b/pkgs/development/python-modules/enlighten/default.nix
index 713370bbb786c..ca0916c610a4b 100644
--- a/pkgs/development/python-modules/enlighten/default.nix
+++ b/pkgs/development/python-modules/enlighten/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, blessed
-, prefixed
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  blessed,
+  prefixed,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,24 +26,22 @@ buildPythonPackage rec {
     prefixed
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-
-  pythonImportsCheck = [
-    "enlighten"
-  ];
-
-  disabledTests = [
-    # AssertionError: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'> is not...
-    "test_init"
-    # AssertionError: Invalid format specifier (deprecated since prefixed 0.4.0)
-    "test_floats_prefixed"
-    "test_subcounter_prefixed"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # https://github.com/Rockhopper-Technologies/enlighten/issues/44
-    "test_autorefresh"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "enlighten" ];
+
+  disabledTests =
+    [
+      # AssertionError: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'> is not...
+      "test_init"
+      # AssertionError: Invalid format specifier (deprecated since prefixed 0.4.0)
+      "test_floats_prefixed"
+      "test_subcounter_prefixed"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # https://github.com/Rockhopper-Technologies/enlighten/issues/44
+      "test_autorefresh"
+    ];
 
   meta = with lib; {
     description = "Enlighten Progress Bar for Python Console Apps";
diff --git a/pkgs/development/python-modules/enocean/default.nix b/pkgs/development/python-modules/enocean/default.nix
index 925c87ed3f8eb..eeef7703dd926 100644
--- a/pkgs/development/python-modules/enocean/default.nix
+++ b/pkgs/development/python-modules/enocean/default.nix
@@ -1,41 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, beautifulsoup4
-, enum-compat
-, pyserial
-, pynose
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  setuptools,
+  beautifulsoup4,
+  enum-compat,
+  pyserial,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "enocean";
   version = "0.60.1";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "kipe";
     repo = "enocean";
-    rev = version;
-    sha256 = "0cbcvvy3qaqv8925z608qmkc1l914crzw79krwrz2vpm2fyribab";
+    rev = "refs/tags/${version}";
+    hash = "sha256-S62YvRP1bvEzzzMd/jMjIdHAZsUImF9EQhsrPPzebDE=";
   };
 
-  propagatedBuildInputs = [
+  patches = [
+    (fetchpatch2 {
+      name = "replace-nose-with-pytest.patch";
+      url = "https://github.com/kipe/enocean/commit/e5ca3b70f0920f129219c980ad549d7f3a4576de.patch";
+      hash = "sha256-cDBvI0I4W5YkGTpg+rKy08TUAmKlhKa/5+Muou9iArs=";
+    })
+  ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     beautifulsoup4
     enum-compat
     pyserial
   ];
 
-  nativeCheckInputs = [
-    pynose
-  ];
-
-  checkPhase = ''
-    runHook preCheck
-
-    nosetests
-
-    runHook postCheck
-  '';
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [
     "enocean.communicators"
@@ -44,6 +47,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
+    changelog = "https://github.com/kipe/enocean/releases/tag/${version}";
     description = "EnOcean serial protocol implementation";
     mainProgram = "enocean_example.py";
     homepage = "https://github.com/kipe/enocean";
diff --git a/pkgs/development/python-modules/enochecker-core/default.nix b/pkgs/development/python-modules/enochecker-core/default.nix
index 806bd4a14e9f0..eb4971e7a88f8 100644
--- a/pkgs/development/python-modules/enochecker-core/default.nix
+++ b/pkgs/development/python-modules/enochecker-core/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,10 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-N41p2XRCp55rcPXLpA4rPIARsva/dQzK8qafjzXtavI=";
   };
 
-
-  pythonImportsCheck = [
-    "enochecker_core"
-  ];
+  pythonImportsCheck = [ "enochecker_core" ];
 
   # no tests upstream
   doCheck = false;
diff --git a/pkgs/development/python-modules/enrich/default.nix b/pkgs/development/python-modules/enrich/default.nix
index 71e1cd1b2e59f..bccb74b2f8378 100644
--- a/pkgs/development/python-modules/enrich/default.nix
+++ b/pkgs/development/python-modules/enrich/default.nix
@@ -1,4 +1,12 @@
-{ lib, buildPythonPackage, fetchPypi, pytestCheckHook, setuptools-scm, rich, pytest-mock }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  setuptools-scm,
+  rich,
+  pytest-mock,
+}:
 
 buildPythonPackage rec {
   pname = "enrich";
@@ -14,7 +22,10 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ rich ];
 
-  nativeCheckInputs = [ pytestCheckHook pytest-mock ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-mock
+  ];
 
   disabledTests = [
     # console output order is racy
@@ -27,6 +38,6 @@ buildPythonPackage rec {
     description = "Enrich adds few missing features to the wonderful rich library";
     homepage = "https://github.com/pycontribs/enrich";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/enterpriseattack/default.nix b/pkgs/development/python-modules/enterpriseattack/default.nix
index 745cc331c6043..96ebfdf12f57f 100644
--- a/pkgs/development/python-modules/enterpriseattack/default.nix
+++ b/pkgs/development/python-modules/enterpriseattack/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, requests
-, setuptools
-, ujson
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
+  setuptools,
+  ujson,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-cxbGc9iQe94Th6MSUldI17oVCclFhUM78h1w+6KXzm4=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     requests
@@ -33,9 +32,7 @@ buildPythonPackage rec {
   # Tests require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "enterpriseattack"
-  ];
+  pythonImportsCheck = [ "enterpriseattack" ];
 
   meta = with lib; {
     description = "Module to interact with the Mitre Att&ck Enterprise dataset";
diff --git a/pkgs/development/python-modules/entrance/default.nix b/pkgs/development/python-modules/entrance/default.nix
index aa6c06e5bf5e7..960e629d1474b 100644
--- a/pkgs/development/python-modules/entrance/default.nix
+++ b/pkgs/development/python-modules/entrance/default.nix
@@ -1,25 +1,43 @@
-{ lib, fetchPypi, buildPythonPackage, pythonOlder, routerFeatures
-, janus, ncclient, paramiko, pyyaml, sanic }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
+  routerFeatures,
+  setuptools,
+  janus,
+  ncclient,
+  paramiko,
+  pyyaml,
+  sanic,
+}:
 
 let
   # The `routerFeatures` flag optionally brings in some somewhat heavy
   # dependencies, in order to enable interacting with routers
-  opts = if routerFeatures then {
-      prePatch = ''
-        substituteInPlace ./setup.py --replace "extra_deps = []" "extra_deps = router_feature_deps"
-      '';
-      extraBuildInputs = [ janus ncclient paramiko ];
-    } else {
-      prePatch = "";
-      extraBuildInputs = [];
-    };
-
+  opts =
+    if routerFeatures then
+      {
+        prePatch = ''
+          substituteInPlace ./setup.py --replace-fail "extra_deps = []" "extra_deps = router_feature_deps"
+        '';
+        extraBuildInputs = [
+          janus
+          ncclient
+          paramiko
+        ];
+      }
+    else
+      {
+        prePatch = "";
+        extraBuildInputs = [ ];
+      };
 in
 
 buildPythonPackage rec {
   pname = "entrance";
   version = "1.1.20";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
@@ -32,15 +50,19 @@ buildPythonPackage rec {
   # No useful tests
   doCheck = false;
 
-  propagatedBuildInputs = [ pyyaml sanic ] ++ opts.extraBuildInputs;
+  build-system = [ setuptools ];
+
+  dependencies = [
+    pyyaml
+    sanic
+  ] ++ opts.extraBuildInputs;
 
   prePatch = opts.prePatch;
 
   meta = with lib; {
-    description = "A server framework for web apps with an Elm frontend";
+    description = "Server framework for web apps with an Elm frontend";
     homepage = "https://github.com/ensoft/entrance";
     license = licenses.mit;
     maintainers = with maintainers; [ simonchatts ];
   };
 }
-
diff --git a/pkgs/development/python-modules/entry-points-txt/default.nix b/pkgs/development/python-modules/entry-points-txt/default.nix
index cac8c41f16f26..84dd8ffb1548d 100644
--- a/pkgs/development/python-modules/entry-points-txt/default.nix
+++ b/pkgs/development/python-modules/entry-points-txt/default.nix
@@ -1,9 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pytest-cov-stub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,22 +22,14 @@ buildPythonPackage rec {
     hash = "sha256-klFSt3Od7xYgenpMP4DBFoZeQanGrmtJxDm5qeZ1Psc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
   ];
 
-  postPatch = ''
-    substituteInPlace tox.ini \
-      --replace " --cov=entry_points_txt --no-cov-on-fail" ""
-  '';
-
-  pythonImportsCheck = [
-    "entry_points_txt"
-  ];
+  pythonImportsCheck = [ "entry_points_txt" ];
 
   meta = with lib; {
     description = "Read & write entry_points.txt files";
diff --git a/pkgs/development/python-modules/entrypoint2/default.nix b/pkgs/development/python-modules/entrypoint2/default.nix
index 6e81b70f5991f..2e6ecc1a0bbd6 100644
--- a/pkgs/development/python-modules/entrypoint2/default.nix
+++ b/pkgs/development/python-modules/entrypoint2/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, easyprocess
-, path
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  easyprocess,
+  path,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "entrypoint2"
-  ];
+  pythonImportsCheck = [ "entrypoint2" ];
 
   meta = with lib; {
     description = "Easy to use command-line interface for python modules";
diff --git a/pkgs/development/python-modules/entrypoints/default.nix b/pkgs/development/python-modules/entrypoints/default.nix
index fe83e797d97aa..5277106f01d23 100644
--- a/pkgs/development/python-modules/entrypoints/default.nix
+++ b/pkgs/development/python-modules/entrypoints/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, flit-core
-, configparser
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  flit-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,18 +19,14 @@ buildPythonPackage rec {
     hash = "sha256-twbt2qkhihnrzWe1aBjwW7J1ibHKno15e3Sv+tTMrNQ=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Discover and load entry points from installed packages";
     homepage = "https://github.com/takluyver/entrypoints";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/enturclient/default.nix b/pkgs/development/python-modules/enturclient/default.nix
index 7140ded8bc4a8..1b62fc88ef50f 100644
--- a/pkgs/development/python-modules/enturclient/default.nix
+++ b/pkgs/development/python-modules/enturclient/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-Y2sBPikCAxumylP1LUy8XgjBRCWaNryn5XHSrRjJIIo=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -38,9 +37,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "enturclient"
-  ];
+  pythonImportsCheck = [ "enturclient" ];
 
   meta = with lib; {
     description = "Python library for interacting with the Entur.org API";
diff --git a/pkgs/development/python-modules/enum-compat/default.nix b/pkgs/development/python-modules/enum-compat/default.nix
index a8409353d4897..fcf14cf94e722 100644
--- a/pkgs/development/python-modules/enum-compat/default.nix
+++ b/pkgs/development/python-modules/enum-compat/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, enum34 }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  enum34,
+}:
 
 buildPythonPackage rec {
   pname = "enum-compat";
diff --git a/pkgs/development/python-modules/enum34/default.nix b/pkgs/development/python-modules/enum34/default.nix
index 8ec22fc1cd730..940fe7af28d30 100644
--- a/pkgs/development/python-modules/enum34/default.nix
+++ b/pkgs/development/python-modules/enum34/default.nix
@@ -1,25 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonAtLeast
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonAtLeast,
+  unittestCheckHook,
 }:
 
-if pythonAtLeast "3.4" then null else buildPythonPackage rec {
-  pname = "enum34";
-  version = "1.1.10";
+if pythonAtLeast "3.4" then
+  null
+else
+  buildPythonPackage rec {
+    pname = "enum34";
+    version = "1.1.10";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "cce6a7477ed816bd2542d03d53db9f0db935dd013b70f336a95c73979289f248";
-  };
+    src = fetchPypi {
+      inherit pname version;
+      sha256 = "cce6a7477ed816bd2542d03d53db9f0db935dd013b70f336a95c73979289f248";
+    };
 
-  nativeCheckInputs = [ unittestCheckHook ];
+    nativeCheckInputs = [ unittestCheckHook ];
 
-  meta = with lib; {
-    homepage = "https://pypi.python.org/pypi/enum34";
-    description = "Python 3.4 Enum backported to 3.3, 3.2, 3.1, 2.7, 2.6, 2.5, and 2.4";
-    license = licenses.bsd0;
-  };
-
-}
+    meta = with lib; {
+      homepage = "https://pypi.python.org/pypi/enum34";
+      description = "Python 3.4 Enum backported to 3.3, 3.2, 3.1, 2.7, 2.6, 2.5, and 2.4";
+      license = licenses.bsd0;
+    };
+  }
diff --git a/pkgs/development/python-modules/env-canada/default.nix b/pkgs/development/python-modules/env-canada/default.nix
index 4b0fab97e95f7..d2424a76c004d 100644
--- a/pkgs/development/python-modules/env-canada/default.nix
+++ b/pkgs/development/python-modules/env-canada/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, geopy
-, imageio
-, lxml
-, pandas
-, pillow
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, setuptools
-, voluptuous
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  geopy,
+  imageio,
+  lxml,
+  pandas,
+  pillow,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  setuptools,
+  voluptuous,
 }:
 
 buildPythonPackage rec {
   pname = "env-canada";
-  version = "0.6.2";
+  version = "0.7.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,12 +26,10 @@ buildPythonPackage rec {
     owner = "michaeldavie";
     repo = "env_canada";
     rev = "refs/tags/v${version}";
-    hash = "sha256-2lrZpjOdijE/udGRzUXT63xI+f9yI+04arfWdt6fMSA=";
+    hash = "sha256-3SVpzWii9/ViJ7mbrqzKmN5FkOOYTeYdhJll6q/IseU=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     aiohttp
@@ -43,9 +42,7 @@ buildPythonPackage rec {
     voluptuous
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Tests require network access
@@ -60,9 +57,7 @@ buildPythonPackage rec {
     "test_ecradar"
   ];
 
-  pythonImportsCheck = [
-    "env_canada"
-  ];
+  pythonImportsCheck = [ "env_canada" ];
 
   meta = with lib; {
     description = "Python library to get Environment Canada weather data";
diff --git a/pkgs/development/python-modules/environmental-override/default.nix b/pkgs/development/python-modules/environmental-override/default.nix
index 3418f4169666f..c61823ff7a19d 100644
--- a/pkgs/development/python-modules/environmental-override/default.nix
+++ b/pkgs/development/python-modules/environmental-override/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/environs/default.nix b/pkgs/development/python-modules/environs/default.nix
index 67bca70171e4a..34620e3b52f13 100644
--- a/pkgs/development/python-modules/environs/default.nix
+++ b/pkgs/development/python-modules/environs/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, dj-database-url
-, dj-email-url
-, django-cache-url
-, fetchFromGitHub
-, flit-core
-, marshmallow
-, pytestCheckHook
-, python-dotenv
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dj-database-url,
+  dj-email-url,
+  django-cache-url,
+  fetchFromGitHub,
+  flit-core,
+  marshmallow,
+  pytestCheckHook,
+  python-dotenv,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-9BqIlA2HcUlBiyTB7zxaLO0CzBRkx5mKMMdhvdr2Uqg=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     marshmallow
@@ -41,9 +40,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "environs"
-  ];
+  pythonImportsCheck = [ "environs" ];
 
   meta = with lib; {
     description = "Python modle for environment variable parsing";
diff --git a/pkgs/development/python-modules/envisage/default.nix b/pkgs/development/python-modules/envisage/default.nix
index 74f70ee4979b3..9c6e90c8d0484 100644
--- a/pkgs/development/python-modules/envisage/default.nix
+++ b/pkgs/development/python-modules/envisage/default.nix
@@ -1,54 +1,45 @@
-{ lib
-, apptools
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, ipython
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, setuptools
-, traits
+{
+  lib,
+  apptools,
+  buildPythonPackage,
+  fetchPypi,
+  pyface,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  traits,
+  traitsui,
 }:
 
 buildPythonPackage rec {
   pname = "envisage";
   version = "7.0.3";
-  format = "pyproject";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-97GviL86j/8qmsbja7SN6pkp4/YSIEz+lK7WKwMWyeM=";
   };
 
-  # for the optional dependency ipykernel, only versions < 6 are
-  # supported, so it's not included in the tests, and not propagated
-  propagatedBuildInputs = [
-    traits
+  build-system = [ setuptools ];
+
+  dependencies = [
     apptools
+    pyface
     setuptools
-  ];
+    traits
+    traitsui
+  ] ++ apptools.optional-dependencies.preferences;
 
   preCheck = ''
     export HOME=$PWD/HOME
   '';
 
-  nativeCheckInputs = [
-    ipython
-    pytestCheckHook
-  ];
-
-  disabledTestPaths = lib.optionals (pythonAtLeast "3.10") [
-    # https://github.com/enthought/envisage/issues/455
-    "envisage/tests/test_egg_basket_plugin_manager.py"
-    "envisage/tests/test_egg_plugin_manager.py"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "envisage"
-  ];
+  pythonImportsCheck = [ "envisage" ];
 
   meta = with lib; {
     description = "Framework for building applications whose functionalities can be extended by adding plug-ins";
diff --git a/pkgs/development/python-modules/envoy-reader/default.nix b/pkgs/development/python-modules/envoy-reader/default.nix
index 15603b59d23d9..46a8249d9e2f3 100644
--- a/pkgs/development/python-modules/envoy-reader/default.nix
+++ b/pkgs/development/python-modules/envoy-reader/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, envoy-utils
-, fetchFromGitHub
-, fetchpatch
-, httpx
-, pyjwt
-, pytest-asyncio
-, pytestCheckHook
-, pytest-raises
-, pythonOlder
-, respx
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  envoy-utils,
+  fetchFromGitHub,
+  setuptools,
+  httpx,
+  pyjwt,
+  pytest-asyncio,
+  pytestCheckHook,
+  pytest-raises,
+  pythonOlder,
+  respx,
 }:
 
 buildPythonPackage rec {
   pname = "envoy-reader";
   version = "0.21.3";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -27,7 +28,9 @@ buildPythonPackage rec {
     hash = "sha256-aIpZ4ln4L57HwK8H0FqsyNnXosnAp3ingrJI6/MPS90=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     beautifulsoup4
     envoy-utils
     httpx
@@ -41,15 +44,14 @@ buildPythonPackage rec {
     respx
   ];
 
+  pythonRelaxDeps = [ "pyjwt" ];
+
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "pytest-runner>=5.2" "" \
-      --replace "pyjwt==2.1.0" "pyjwt>=2.1.0"
+      --replace-fail "pytest-runner>=5.2" ""
   '';
 
-  pythonImportsCheck = [
-    "envoy_reader"
-  ];
+  pythonImportsCheck = [ "envoy_reader" ];
 
   meta = with lib; {
     description = "Python module to read from Enphase Envoy units";
diff --git a/pkgs/development/python-modules/envoy-utils/default.nix b/pkgs/development/python-modules/envoy-utils/default.nix
index ff795aa62e3de..6827f97271820 100644
--- a/pkgs/development/python-modules/envoy-utils/default.nix
+++ b/pkgs/development/python-modules/envoy-utils/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, zeroconf
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  zeroconf,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     sha256 = "13zn0d6k2a4nls9vp8cs0w07bgg4138vz18cadjadhm8p6r3bi0c";
   };
 
-  propagatedBuildInputs = [
-    zeroconf
-  ];
+  propagatedBuildInputs = [ zeroconf ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/envs/default.nix b/pkgs/development/python-modules/envs/default.nix
index b22660efb6f67..10fc95fbb13b4 100644
--- a/pkgs/development/python-modules/envs/default.nix
+++ b/pkgs/development/python-modules/envs/default.nix
@@ -1,13 +1,12 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchPypi
-, jinja2
-, mock
-, pynose
-, poetry-core
-, pythonOlder
-, terminaltables
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchPypi,
+  jinja2,
+  pytestCheckHook,
+  poetry-core,
+  terminaltables,
 }:
 
 buildPythonPackage rec {
@@ -15,45 +14,32 @@ buildPythonPackage rec {
   version = "1.4";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
-
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-nYQ1xphdHN1oKZ4ExY4r24rmz2ayWWqAeeb5qT8qA5g=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     click
     jinja2
     terminaltables
   ];
 
-  nativeCheckInputs = [
-    mock
-    pynose
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  checkPhase = ''
-    runHook preCheck
+  pytestFlagsArray = [ "envs/tests.py" ];
 
-    nosetests --with-isolation
+  disabledTests = [ "test_list_envs" ];
 
-    runHook postCheck
-  '';
-
-  pythonImportsCheck = [
-    "envs"
-  ];
+  pythonImportsCheck = [ "envs" ];
 
-  meta = with lib; {
+  meta = {
     description = "Easy access to environment variables from Python";
     mainProgram = "envs";
     homepage = "https://github.com/capless/envs";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ peterhoeg ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ peterhoeg ];
   };
 }
diff --git a/pkgs/development/python-modules/enzyme/default.nix b/pkgs/development/python-modules/enzyme/default.nix
index 9e043782585fc..5d969858c00fb 100644
--- a/pkgs/development/python-modules/enzyme/default.nix
+++ b/pkgs/development/python-modules/enzyme/default.nix
@@ -1,21 +1,28 @@
-{ lib, fetchPypi, buildPythonPackage }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "enzyme";
-  version = "0.4.1";
-  format = "setuptools";
+  version = "0.5.2";
+  pyproject = true;
 
   # Tests rely on files obtained over the network
   doCheck = false;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1fv2kh2v4lwj0hhrhj9pib1pdjh01yr4xgyljhx11l94gjlpy5pj";
+    hash = "sha256-fPd5FI2eZusoOGA+rOFAxTw878i4/l1NWgOl+11Xs8E=";
   };
 
+  nativeBuildInputs = [ setuptools ];
+
   meta = with lib; {
     homepage = "https://github.com/Diaoul/enzyme";
-    license = licenses.asl20;
+    license = licenses.mit;
     description = "Python video metadata parser";
   };
 }
diff --git a/pkgs/development/python-modules/epc/default.nix b/pkgs/development/python-modules/epc/default.nix
index b9d96558bb6f5..81864a3de9f1c 100644
--- a/pkgs/development/python-modules/epc/default.nix
+++ b/pkgs/development/python-modules/epc/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, sexpdata
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  sexpdata,
 }:
 
 buildPythonPackage rec {
@@ -22,5 +23,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/tkf/python-epc";
     license = licenses.gpl3;
   };
-
 }
diff --git a/pkgs/development/python-modules/ephem/default.nix b/pkgs/development/python-modules/ephem/default.nix
index 3b9f4fba9f505..6b0b760b978f9 100644
--- a/pkgs/development/python-modules/ephem/default.nix
+++ b/pkgs/development/python-modules/ephem/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, glibcLocales
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  glibcLocales,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     LC_ALL="en_US.UTF-8" pytest --pyargs ephem.tests -k "not JPLTest"
   '';
 
-  pythonImportsCheck = [
-    "ephem"
-  ];
+  pythonImportsCheck = [ "ephem" ];
 
   meta = with lib; {
     description = "Compute positions of the planets and stars";
diff --git a/pkgs/development/python-modules/ephemeral-port-reserve/default.nix b/pkgs/development/python-modules/ephemeral-port-reserve/default.nix
index 09db4df764d64..d582c5cfc37c8 100644
--- a/pkgs/development/python-modules/ephemeral-port-reserve/default.nix
+++ b/pkgs/development/python-modules/ephemeral-port-reserve/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 let
@@ -20,20 +21,16 @@ buildPythonPackage {
     hash = "sha256-R6NRpfaT05PO/cTWgCakiGfCuCyucjVOXbAezn5x1cU=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
     # can't find hostname in our darwin build environment
     "test_fqdn"
   ];
 
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [
-    "ephemeral_port_reserve"
-  ];
+  pythonImportsCheck = [ "ephemeral_port_reserve" ];
 
   meta = with lib; {
     description = "Find an unused port, reliably";
diff --git a/pkgs/development/python-modules/epicstore-api/default.nix b/pkgs/development/python-modules/epicstore-api/default.nix
new file mode 100644
index 0000000000000..e31ab47d04953
--- /dev/null
+++ b/pkgs/development/python-modules/epicstore-api/default.nix
@@ -0,0 +1,40 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pytestCheckHook,
+  requests,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "epicstore-api";
+  version = "0.1.9";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "SD4RK";
+    repo = "epicstore_api";
+    rev = "refs/tags/v_${version}";
+    hash = "sha256-9Gh9bsNgZx/SinKr7t1dvqrOUP+z4Gs8BFMLYtboFmg=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ requests ];
+
+  pythonImportsCheck = [ "epicstore_api" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  # tests directory exists but contains no test cases
+  doCheck = false;
+
+  meta = {
+    changelog = "https://github.com/SD4RK/epicstore_api/releases/tag/v_${version}";
+    description = "Epic Games Store Web API Wrapper written in Python";
+    homepage = "https://github.com/SD4RK/epicstore_api";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/epion/default.nix b/pkgs/development/python-modules/epion/default.nix
index 69afe290652ad..293917b954daf 100644
--- a/pkgs/development/python-modules/epion/default.nix
+++ b/pkgs/development/python-modules/epion/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, docopt
-, fetchFromGitHub
-, pythonOlder
-, pytz
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  docopt,
+  fetchFromGitHub,
+  pythonOlder,
+  pytz,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-9tE/SqR+GHZXeE+bOtXkLu+4jy1vO8WoiLjb6MJazxQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     docopt
@@ -35,9 +34,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "epion"
-  ];
+  pythonImportsCheck = [ "epion" ];
 
   meta = with lib; {
     description = "Module to access Epion sensor data";
diff --git a/pkgs/development/python-modules/epitran/default.nix b/pkgs/development/python-modules/epitran/default.nix
index 8495d81d97237..f512ff0d0ccbb 100644
--- a/pkgs/development/python-modules/epitran/default.nix
+++ b/pkgs/development/python-modules/epitran/default.nix
@@ -1,7 +1,6 @@
 {
   lib,
   buildPythonPackage,
-  fetchPypi,
   fetchFromGitHub,
 
   unittestCheckHook,
diff --git a/pkgs/development/python-modules/epson-projector/default.nix b/pkgs/development/python-modules/epson-projector/default.nix
index 30e021842e76f..93afde3804c58 100644
--- a/pkgs/development/python-modules/epson-projector/default.nix
+++ b/pkgs/development/python-modules/epson-projector/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, aiohttp
-, async-timeout
-, pyserial-asyncio
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  aiohttp,
+  async-timeout,
+  pyserial-asyncio,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/eq3btsmart/default.nix b/pkgs/development/python-modules/eq3btsmart/default.nix
new file mode 100644
index 0000000000000..5fc267fe2e219
--- /dev/null
+++ b/pkgs/development/python-modules/eq3btsmart/default.nix
@@ -0,0 +1,47 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  bleak,
+  construct,
+  construct-typing,
+  pytest-asyncio,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "eq3btsmart";
+  version = "1.1.9";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "EuleMitKeule";
+    repo = "eq3btsmart";
+    rev = "refs/tags/${version}";
+    hash = "sha256-7kJqPygX2Oc7fz31qZWrS1ZA+kANZr8vxOwarUzgp/M=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    bleak
+    construct
+    construct-typing
+  ];
+
+  pythonImportsCheck = [ "eq3btsmart" ];
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  meta = {
+    changelog = "https://github.com/EuleMitKeule/eq3btsmart/releases/tag/${version}";
+    description = "Python library that allows interaction with eQ-3 Bluetooth smart thermostats";
+    homepage = "https://github.com/EuleMitKeule/eq3btsmart";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/equinox/default.nix b/pkgs/development/python-modules/equinox/default.nix
index 976406b399b1e..80f1b114f4733 100644
--- a/pkgs/development/python-modules/equinox/default.nix
+++ b/pkgs/development/python-modules/equinox/default.nix
@@ -1,37 +1,39 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, hatchling
-, jax
-, jaxlib
-, jaxtyping
-, typing-extensions
-, beartype
-, optax
-, pytest-xdist
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  hatchling,
+
+  # dependencies
+  jax,
+  jaxlib,
+  jaxtyping,
+  typing-extensions,
+
+  # checks
+  beartype,
+  optax,
+  pytest-xdist,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "equinox";
-  version = "0.11.4";
+  version = "0.11.7";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
-
   src = fetchFromGitHub {
     owner = "patrick-kidger";
     repo = "equinox";
     rev = "refs/tags/v${version}";
-    hash = "sha256-3OwHND1YEdg/SppqiB7pCdp6v+lYwTbtX07tmyEMWDo=";
+    hash = "sha256-0waIpsVWoABtf4M0IOie9nJDk+e75ArTVmGqYg9AlnI=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     jax
     jaxlib
     jaxtyping
@@ -47,16 +49,11 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "equinox" ];
 
-  disabledTests = [
-    # Failed: DID NOT WARN. No warnings of type (<class 'UserWarning'>,) were emitted.
-    "test_tracetime"
-  ];
-
-  meta = with lib; {
-    description = "A JAX library based around a simple idea: represent parameterised functions (such as neural networks) as PyTrees";
+  meta = {
+    description = "JAX library based around a simple idea: represent parameterised functions (such as neural networks) as PyTrees";
     changelog = "https://github.com/patrick-kidger/equinox/releases/tag/v${version}";
     homepage = "https://github.com/patrick-kidger/equinox";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/eradicate/default.nix b/pkgs/development/python-modules/eradicate/default.nix
index 10fed495d6eae..b3586d07432db 100644
--- a/pkgs/development/python-modules/eradicate/default.nix
+++ b/pkgs/development/python-modules/eradicate/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,17 +20,11 @@ buildPythonPackage rec {
     hash = "sha256-ikiqNe1a+OeRraNBbtAx6v3LsTajWlgxm4wR2Tcbmjk=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "eradicate"
-  ];
+  pythonImportsCheck = [ "eradicate" ];
 
-  pytestFlagsArray = [
-    "test_eradicate.py"
-  ];
+  pytestFlagsArray = [ "test_eradicate.py" ];
 
   meta = with lib; {
     description = "Library to remove commented-out code from Python files";
diff --git a/pkgs/development/python-modules/es-client/default.nix b/pkgs/development/python-modules/es-client/default.nix
index 3204da1d5a977..f997ff471ef92 100644
--- a/pkgs/development/python-modules/es-client/default.nix
+++ b/pkgs/development/python-modules/es-client/default.nix
@@ -3,6 +3,7 @@
   buildPythonPackage,
   certifi,
   click,
+  dotmap,
   ecs-logging,
   elastic-transport,
   elasticsearch8,
@@ -12,7 +13,6 @@
   pytest-asyncio,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
   pyyaml,
   requests,
   six,
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "es-client";
-  version = "8.13.1";
+  version = "8.14.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -30,18 +30,17 @@ buildPythonPackage rec {
     owner = "untergeek";
     repo = "es_client";
     rev = "refs/tags/v${version}";
-    hash = "sha256-4v9SRWVG9p4kCob4C3by2JxNqX6L3yMHpbnMYEAM7A0=";
+    hash = "sha256-CJhiSDmIlhTWV7LLWd2ZCzuj5cWXwgh0lkKJvhmaDFw=";
   };
 
   pythonRelaxDeps = true;
 
   build-system = [ hatchling ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
-
   dependencies = [
     certifi
     click
+    dotmap
     ecs-logging
     elastic-transport
     elasticsearch8
@@ -70,6 +69,8 @@ buildPythonPackage rec {
     "test_multiple_hosts_raises"
     "test_non_dict_passed"
     "test_skip_version_check"
+    # es_client.exceptions.ConfigurationError: Must populate both username and password, or leave both empty
+    "test_exit_if_not_master "
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/escapism/default.nix b/pkgs/development/python-modules/escapism/default.nix
index 484a608ba910f..1146c3cb67d91 100644
--- a/pkgs/development/python-modules/escapism/default.nix
+++ b/pkgs/development/python-modules/escapism/default.nix
@@ -1,6 +1,7 @@
-{ pkgs
-, buildPythonPackage
-, fetchPypi
+{
+  pkgs,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/esig/default.nix b/pkgs/development/python-modules/esig/default.nix
index f0183917c2c69..68af34c82e3a4 100644
--- a/pkgs/development/python-modules/esig/default.nix
+++ b/pkgs/development/python-modules/esig/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cmake
-, ninja
-, oldest-supported-numpy
-, scikit-build
-, setuptools
-, numpy
-, iisignature
-, boost
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cmake,
+  ninja,
+  oldest-supported-numpy,
+  scikit-build,
+  setuptools,
+  numpy,
+  iisignature,
+  boost,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-BGZaJSrpNSwZMHBYFDmDVPZOtgam/EVyh5Y5FAB8e1o=";
   };
 
-  buildInputs = [
-    boost
-  ];
+  buildInputs = [ boost ];
 
   dontUseCmakeConfigure = true;
 
@@ -35,14 +34,10 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   passthru.optional-dependencies = {
-    iisignature = [
-      iisignature
-    ];
+    iisignature = [ iisignature ];
   };
 
   # PyPI tarball has no tests
diff --git a/pkgs/development/python-modules/espeak-phonemizer/default.nix b/pkgs/development/python-modules/espeak-phonemizer/default.nix
index 5b9352905374e..ff25558aee93b 100644
--- a/pkgs/development/python-modules/espeak-phonemizer/default.nix
+++ b/pkgs/development/python-modules/espeak-phonemizer/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, substituteAll
-, espeak-ng
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  substituteAll,
+  espeak-ng,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     changelog = "https://github.com/rhasspy/espeak-phonemizer/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/esper/default.nix b/pkgs/development/python-modules/esper/default.nix
new file mode 100644
index 0000000000000..5a284970e74fa
--- /dev/null
+++ b/pkgs/development/python-modules/esper/default.nix
@@ -0,0 +1,33 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  lib,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "esper";
+  version = "3.3";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "benmoran56";
+    repo = "esper";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-DZAF2B40ulSn2MQadklT32Svcm1j0e/hIxrxISO07TI=";
+  };
+
+  build-system = [ flit-core ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+  pythonImportsCheck = [ "esper" ];
+
+  meta = {
+    description = "ECS (Entity Component System) for Python";
+    homepage = "https://github.com/benmoran56/esper";
+    changelog = "https://github.com/benmoran56/esper/blob/${src.rev}/RELEASE_NOTES";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/esphome-dashboard-api/default.nix b/pkgs/development/python-modules/esphome-dashboard-api/default.nix
index 0cb49cd6486ee..9f45c3460ee92 100644
--- a/pkgs/development/python-modules/esphome-dashboard-api/default.nix
+++ b/pkgs/development/python-modules/esphome-dashboard-api/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, aiohttp
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  aiohttp,
 }:
 
 buildPythonPackage rec {
@@ -29,15 +30,11 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   doCheck = false; # no tests
 
-  pythonImportsCheck = [
-    "esphome_dashboard_api"
-  ];
+  pythonImportsCheck = [ "esphome_dashboard_api" ];
 
   meta = with lib; {
     description = "API to interact with ESPHome Dashboard";
diff --git a/pkgs/development/python-modules/esprima/default.nix b/pkgs/development/python-modules/esprima/default.nix
index 774288c699438..8969ec7922821 100644
--- a/pkgs/development/python-modules/esprima/default.nix
+++ b/pkgs/development/python-modules/esprima/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,17 +20,11 @@ buildPythonPackage rec {
     sha256 = "WtkPCReXhxyr6pOzE9gsdIeBlLk+nSnbxkS3OowEaHo=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "test/__main__.py::TestEsprima"
-  ];
+  pytestFlagsArray = [ "test/__main__.py::TestEsprima" ];
 
-  pythonImportsCheck = [
-    "esprima"
-  ];
+  pythonImportsCheck = [ "esprima" ];
 
   meta = with lib; {
     description = "Python parser for standard-compliant ECMAScript";
diff --git a/pkgs/development/python-modules/essentials-openapi/default.nix b/pkgs/development/python-modules/essentials-openapi/default.nix
index 5fc8251476566..7438c2ef6e981 100644
--- a/pkgs/development/python-modules/essentials-openapi/default.nix
+++ b/pkgs/development/python-modules/essentials-openapi/default.nix
@@ -11,10 +11,9 @@
   markupsafe,
   pydantic,
   pytestCheckHook,
-  pythonImportsCheckHook,
   pyyaml,
   rich,
-  setuptools
+  setuptools,
 }:
 buildPythonPackage rec {
   pname = "essentials-openapi";
@@ -28,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-/NYv0NrE8+0kQg5G3Qf2DtesMHlmKQYczNT8pFlNFZE=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   nativeCheckInputs = [
     flask
@@ -48,18 +45,24 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    full = [ click jinja2 rich httpx ];
+    full = [
+      click
+      jinja2
+      rich
+      httpx
+    ];
   };
 
-  pythonImportsCheck = [
-    "openapidocs"
-  ];
+  pythonImportsCheck = [ "openapidocs" ];
 
   meta = with lib; {
     homepage = "https://github.com/Neoteroi/essentials-openapi";
     description = "Functions to handle OpenAPI Documentation";
     changelog = "https://github.com/Neoteroi/essentials-openapi/releases/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [aldoborrero zimbatm];
+    maintainers = with maintainers; [
+      aldoborrero
+      zimbatm
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/essentials/default.nix b/pkgs/development/python-modules/essentials/default.nix
index 69a494a0eb5de..e94a3ccf98b83 100644
--- a/pkgs/development/python-modules/essentials/default.nix
+++ b/pkgs/development/python-modules/essentials/default.nix
@@ -3,7 +3,6 @@
   fetchFromGitHub,
   setuptools,
   pytestCheckHook,
-  pythonImportsCheckHook,
   lib,
 }:
 buildPythonPackage rec {
@@ -20,19 +19,18 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "essentials"
-  ];
+  pythonImportsCheck = [ "essentials" ];
 
   meta = with lib; {
     homepage = "https://github.com/Neoteroi/essentials";
     description = "General purpose classes and functions";
     changelog = "https://github.com/Neoteroi/essentials/releases/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [aldoborrero zimbatm];
+    maintainers = with maintainers; [
+      aldoborrero
+      zimbatm
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/et-xmlfile/default.nix b/pkgs/development/python-modules/et-xmlfile/default.nix
index b744d2a693dd4..67d26aa36a070 100644
--- a/pkgs/development/python-modules/et-xmlfile/default.nix
+++ b/pkgs/development/python-modules/et-xmlfile/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitLab
-, lxml
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  lxml,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,12 +27,10 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "et_xmlfile"
-  ];
+  pythonImportsCheck = [ "et_xmlfile" ];
 
   meta = with lib; {
-    description = "An implementation of lxml.xmlfile for the standard library";
+    description = "Implementation of lxml.xmlfile for the standard library";
     longDescription = ''
       et_xmlfile is a low memory library for creating large XML files.
 
@@ -42,6 +41,6 @@ buildPythonPackage rec {
     '';
     homepage = "https://foss.heptapod.net/openpyxl/et_xmlfile";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/etcd/default.nix b/pkgs/development/python-modules/etcd/default.nix
index 3cc989636f1b2..d9dc4fcd07532 100644
--- a/pkgs/development/python-modules/etcd/default.nix
+++ b/pkgs/development/python-modules/etcd/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, simplejson
-, pytz
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  simplejson,
+  pytz,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -23,15 +24,19 @@ buildPythonPackage rec {
     sed -i -e '13,14d;37d' setup.py
   '';
 
-  propagatedBuildInputs = [ simplejson pytz requests ];
+  propagatedBuildInputs = [
+    simplejson
+    pytz
+    requests
+  ];
 
   # No proper tests are available
   doCheck = false;
 
   meta = with lib; {
-    description = "A Python etcd client that just works";
+    description = "Python etcd client that just works";
     homepage = "https://github.com/dsoprea/PythonEtcdClient";
     license = licenses.gpl2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/etcd3/default.nix b/pkgs/development/python-modules/etcd3/default.nix
index 494f70ddf4da6..e105afb48ae48 100644
--- a/pkgs/development/python-modules/etcd3/default.nix
+++ b/pkgs/development/python-modules/etcd3/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, etcd
-, fetchFromGitHub
-, grpcio
-, hypothesis
-, mock
-, pifpaf
-, protobuf
-, pytestCheckHook
-, six
-, tenacity
+{
+  lib,
+  buildPythonPackage,
+  etcd,
+  fetchFromGitHub,
+  grpcio,
+  hypothesis,
+  mock,
+  pifpaf,
+  protobuf,
+  pytestCheckHook,
+  six,
+  tenacity,
 }:
 
 buildPythonPackage rec {
@@ -46,14 +47,12 @@ buildPythonPackage rec {
     pifpaf -e PYTHON run etcd --cluster
   '';
 
-  pythonImportsCheck = [
-    "etcd3"
-  ];
+  pythonImportsCheck = [ "etcd3" ];
 
   meta = with lib; {
     description = "Python client for the etcd API v3";
     homepage = "https://github.com/kragniz/python-etcd3";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ete3/default.nix b/pkgs/development/python-modules/ete3/default.nix
index f36128784dad6..ee5881128336b 100644
--- a/pkgs/development/python-modules/ete3/default.nix
+++ b/pkgs/development/python-modules/ete3/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, numpy
-, six
-, withTreeVisualization ? false
-, lxml
-, withXmlSupport ? false
-, pyqt5
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  six,
+  withTreeVisualization ? false,
+  lxml,
+  withXmlSupport ? false,
+  pyqt5,
 }:
 
 buildPythonPackage rec {
@@ -17,19 +17,19 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-BqO3+o7ZAYewdqjbvlsbYqzulCAdPG6CL1X0SWAe9vI=";
+    hash = "sha256-BqO3+o7ZAYewdqjbvlsbYqzulCAdPG6CL1X0SWAe9vI=";
   };
 
-
   doCheck = false; # Tests are (i) not 3.x compatible, (ii) broken under 2.7
   pythonImportsCheck = [ "ete3" ];
 
-  propagatedBuildInputs = [ six numpy ]
-    ++ lib.optional withTreeVisualization pyqt5
-    ++ lib.optional withXmlSupport lxml;
+  propagatedBuildInputs = [
+    six
+    numpy
+  ] ++ lib.optional withTreeVisualization pyqt5 ++ lib.optional withXmlSupport lxml;
 
   meta = with lib; {
-    description = "A Python framework for the analysis and visualization of trees";
+    description = "Python framework for the analysis and visualization of trees";
     mainProgram = "ete3";
     homepage = "http://etetoolkit.org/";
     license = licenses.gpl3Only;
diff --git a/pkgs/development/python-modules/etebase/default.nix b/pkgs/development/python-modules/etebase/default.nix
index 15815f33ee4fd..5157aa329dcd4 100644
--- a/pkgs/development/python-modules/etebase/default.nix
+++ b/pkgs/development/python-modules/etebase/default.nix
@@ -1,33 +1,51 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, buildPythonPackage
-, rustPlatform
-, cargo
-, pkg-config
-, rustc
-, rustfmt
-, setuptools-rust
-, openssl
-, Security
-, msgpack
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  buildPythonPackage,
+  rustPlatform,
+  cargo,
+  pkg-config,
+  rustc,
+  rustfmt,
+  setuptools-rust,
+  openssl,
+  Security,
+  msgpack,
+  fetchpatch,
+  nixosTests,
 }:
 
 buildPythonPackage rec {
   pname = "etebase";
-  version = "0.31.6";
+  version = "0.31.7";
 
   src = fetchFromGitHub {
     owner = "etesync";
     repo = "etebase-py";
     rev = "v${version}";
-    hash = "sha256-T61nPW3wjBRjmJ81w59T1b/Kxrwwqvyj3gILE9OF/5Q=";
+    hash = "sha256-ZNUUp/0fGJxL/Rt8sAZ864rg8uCcNybIYSk4POt0vqg=";
   };
 
+  # https://github.com/etesync/etebase-py/pull/54
+  patches = [
+    # fix python 3.12 build
+    (fetchpatch {
+      url = "https://github.com/etesync/etebase-py/commit/898eb3aca1d4eb30d4aeae15e35d0bc45dd7b3c8.patch";
+      hash = "sha256-0BDUTztiC4MiwwNEDFtfc5ruc69Qk+svepQZRixNJgA=";
+    })
+    # replace flapigen git dependency in Cargo.lock
+    (fetchpatch {
+      url = "https://github.com/etesync/etebase-py/commit/7e9e4244a144dd46383d8be950d3df79e28eb069.patch";
+      hash = "sha256-8EH8Sc3UnmuCrSwDf3+as218HiG2Ed3r+FCMrUi5YrI=";
+    })
+  ];
+
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-wrMNtcaLAsWBVeJbYbYo+Xmobl01lnUbR9NUqqUzUgU=";
+    hash = "sha256-We19laZd6b2fLSPNLegyNp0eQSeCvUJeTIXqvG7o08c=";
+    inherit patches;
   };
 
   format = "pyproject";
@@ -41,11 +59,9 @@ buildPythonPackage rec {
     rustc
   ];
 
-  buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ Security ];
+  buildInputs = [ openssl ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ Security ];
 
-  propagatedBuildInputs = [
-    msgpack
-  ];
+  propagatedBuildInputs = [ msgpack ];
 
   postPatch = ''
     # Use system OpenSSL, which gets security updates.
@@ -55,11 +71,14 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "etebase" ];
 
+  passthru.tests = {
+    inherit (nixosTests) etebase-server;
+  };
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     homepage = "https://www.etebase.com/";
-    description = "A Python client library for Etebase";
+    description = "Python client library for Etebase";
     license = licenses.bsd3;
     maintainers = with maintainers; [ _3699n ];
   };
diff --git a/pkgs/development/python-modules/etelemetry/default.nix b/pkgs/development/python-modules/etelemetry/default.nix
index a3b9008fc1caa..8227fb9536cc7 100644
--- a/pkgs/development/python-modules/etelemetry/default.nix
+++ b/pkgs/development/python-modules/etelemetry/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, ci-info
-, ci-py
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  ci-info,
+  ci-py,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -44,6 +45,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/sensein/etelemetry-client";
     changelog = "https://github.com/sensein/etelemetry-client/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/eternalegypt/default.nix b/pkgs/development/python-modules/eternalegypt/default.nix
index 2065d603fae14..ef6c599625c85 100644
--- a/pkgs/development/python-modules/eternalegypt/default.nix
+++ b/pkgs/development/python-modules/eternalegypt/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, attrs
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  attrs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "eternalegypt"
-  ];
+  pythonImportsCheck = [ "eternalegypt" ];
 
   meta = with lib; {
     description = "Python API for Netgear LTE modems";
diff --git a/pkgs/development/python-modules/etesync/default.nix b/pkgs/development/python-modules/etesync/default.nix
index d65698c07ad66..a871f3fb3a910 100644
--- a/pkgs/development/python-modules/etesync/default.nix
+++ b/pkgs/development/python-modules/etesync/default.nix
@@ -1,8 +1,28 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27,
-  appdirs, asn1crypto, cffi, cryptography, furl, idna, orderedmultidict,
-  packaging, peewee, py, pyasn1, pycparser, pyparsing, pyscrypt,
-  python-dateutil, pytz, requests, six, vobject,
-  pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  appdirs,
+  asn1crypto,
+  cffi,
+  cryptography,
+  furl,
+  idna,
+  orderedmultidict,
+  packaging,
+  peewee,
+  py,
+  pyasn1,
+  pycparser,
+  pyparsing,
+  pyscrypt,
+  python-dateutil,
+  pytz,
+  requests,
+  six,
+  vobject,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -38,9 +58,7 @@ buildPythonPackage rec {
     vobject
   ];
 
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
   checkPhase = ''
     pytest tests/test_collections.py
@@ -49,7 +67,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://www.etesync.com/";
-    description = "A python API to interact with an EteSync server.";
+    description = "Python API to interact with an EteSync server";
     license = licenses.lgpl3;
     maintainers = with maintainers; [ valodim ];
   };
diff --git a/pkgs/development/python-modules/eth-abi/default.nix b/pkgs/development/python-modules/eth-abi/default.nix
index 8e45e945218fd..2b5d280562084 100644
--- a/pkgs/development/python-modules/eth-abi/default.nix
+++ b/pkgs/development/python-modules/eth-abi/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, eth-hash
-, eth-typing
-, eth-utils
-, hypothesis
-, parsimonious
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  eth-hash,
+  eth-typing,
+  eth-utils,
+  hypothesis,
+  parsimonious,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -57,6 +58,6 @@ buildPythonPackage rec {
     description = "Ethereum ABI utilities";
     homepage = "https://github.com/ethereum/eth-abi";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/eth-account/default.nix b/pkgs/development/python-modules/eth-account/default.nix
index a56ad36be6398..7be6722f233b6 100644
--- a/pkgs/development/python-modules/eth-account/default.nix
+++ b/pkgs/development/python-modules/eth-account/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, bitarray
-, eth-abi
-, eth-keyfile
-, eth-keys
-, eth-rlp
-, eth-utils
-, websockets
-, hexbytes
-, pythonOlder
-, rlp
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  bitarray,
+  eth-abi,
+  eth-keyfile,
+  eth-keys,
+  eth-rlp,
+  eth-utils,
+  websockets,
+  hexbytes,
+  pythonOlder,
+  rlp,
 }:
 
 buildPythonPackage rec {
@@ -47,6 +48,6 @@ buildPythonPackage rec {
     description = "Account abstraction library for web3.py";
     homepage = "https://github.com/ethereum/eth-account";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/eth-hash/default.nix b/pkgs/development/python-modules/eth-hash/default.nix
index 991bd28aff18a..c53e052b76fcb 100644
--- a/pkgs/development/python-modules/eth-hash/default.nix
+++ b/pkgs/development/python-modules/eth-hash/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pythonAtLeast
-, pythonOlder
-, pytest
-, safe-pysha3
-, pycryptodome
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonAtLeast,
+  pythonOlder,
+  pytest,
+  safe-pysha3,
+  pycryptodome,
 }:
 
 buildPythonPackage rec {
@@ -21,19 +22,21 @@ buildPythonPackage rec {
     hash = "sha256-6UN+kvLjjAtkmLgUaovjZC/6n3FZtXCwyXZH7ijQObU=";
   };
 
-  nativeCheckInputs = [
-    pytest
-  ] ++ passthru.optional-dependencies.pycryptodome
-  # eth-hash can use either safe-pysha3 or pycryptodome;
-  # safe-pysha3 requires Python 3.9+ while pycryptodome does not.
-  # https://github.com/ethereum/eth-hash/issues/46#issuecomment-1314029211
-  ++ lib.optional (pythonAtLeast "3.9") passthru.optional-dependencies.pysha3;
+  nativeCheckInputs =
+    [ pytest ]
+    ++ passthru.optional-dependencies.pycryptodome
+    # eth-hash can use either safe-pysha3 or pycryptodome;
+    # safe-pysha3 requires Python 3.9+ while pycryptodome does not.
+    # https://github.com/ethereum/eth-hash/issues/46#issuecomment-1314029211
+    ++ lib.optional (pythonAtLeast "3.9") passthru.optional-dependencies.pysha3;
 
-  checkPhase = ''
-    pytest tests/backends/pycryptodome/
-  '' + lib.optionalString (pythonAtLeast "3.9") ''
-    pytest tests/backends/pysha3/
-  '';
+  checkPhase =
+    ''
+      pytest tests/backends/pycryptodome/
+    ''
+    + lib.optionalString (pythonAtLeast "3.9") ''
+      pytest tests/backends/pysha3/
+    '';
 
   passthru.optional-dependencies = {
     pycryptodome = [ pycryptodome ];
@@ -41,9 +44,9 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "The Ethereum hashing function keccak256";
+    description = "Ethereum hashing function keccak256";
     homepage = "https://github.com/ethereum/eth-hash";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/eth-keyfile/default.nix b/pkgs/development/python-modules/eth-keyfile/default.nix
index e8e42a56c60fe..8175b2cfe7613 100644
--- a/pkgs/development/python-modules/eth-keyfile/default.nix
+++ b/pkgs/development/python-modules/eth-keyfile/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, eth-keys
-, eth-utils
-, pycryptodome
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  eth-keys,
+  eth-utils,
+  pycryptodome,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,7 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-797yhHuU9/lm96YKxl3SZ5IQAwDxDSYkLkiBdAHh0Uk=";
   };
 
-  build-system = [ setuptools];
+  build-system = [ setuptools ];
 
   propagatedBuildInputs = [
     eth-keys
@@ -31,9 +32,7 @@ buildPythonPackage rec {
     pycryptodome
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "eth_keyfile" ];
 
@@ -41,6 +40,6 @@ buildPythonPackage rec {
     description = "Tools for handling the encrypted keyfile format used to store private keys";
     homepage = "https://github.com/ethereum/eth-keyfile";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/eth-keys/default.nix b/pkgs/development/python-modules/eth-keys/default.nix
index edf83f0657019..964f4f08326dc 100644
--- a/pkgs/development/python-modules/eth-keys/default.nix
+++ b/pkgs/development/python-modules/eth-keys/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, asn1tools
-, coincurve
-, eth-hash
-, eth-typing
-, eth-utils
-, factory-boy
-, hypothesis
-, isPyPy
-, pyasn1
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  asn1tools,
+  coincurve,
+  eth-hash,
+  eth-typing,
+  eth-utils,
+  factory-boy,
+  hypothesis,
+  isPyPy,
+  pyasn1,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,22 +29,24 @@ buildPythonPackage rec {
     hash = "sha256-vyyaLCG2uIHXX0t93DmFq8/u0rZL+nsBsH2gfgjziyo=";
   };
 
-  build-system = [ setuptools];
+  build-system = [ setuptools ];
 
   propagatedBuildInputs = [
     eth-typing
     eth-utils
   ];
 
-  nativeCheckInputs = [
-    asn1tools
-    factory-boy
-    hypothesis
-    pyasn1
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.coincurve
-  ++ lib.optional (!isPyPy) eth-hash.optional-dependencies.pysha3
-  ++ lib.optional isPyPy eth-hash.optional-dependencies.pycryptodome;
+  nativeCheckInputs =
+    [
+      asn1tools
+      factory-boy
+      hypothesis
+      pyasn1
+      pytestCheckHook
+    ]
+    ++ passthru.optional-dependencies.coincurve
+    ++ lib.optional (!isPyPy) eth-hash.optional-dependencies.pysha3
+    ++ lib.optional isPyPy eth-hash.optional-dependencies.pycryptodome;
 
   disabledTests = [
     # tests are broken
@@ -68,6 +71,6 @@ buildPythonPackage rec {
     description = "Common API for Ethereum key operations";
     homepage = "https://github.com/ethereum/eth-keys";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/eth-rlp/default.nix b/pkgs/development/python-modules/eth-rlp/default.nix
index 081abf233ef91..3bc8d7c35b836 100644
--- a/pkgs/development/python-modules/eth-rlp/default.nix
+++ b/pkgs/development/python-modules/eth-rlp/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, eth-hash
-, eth-utils
-, hexbytes
-, pytestCheckHook
-, pythonOlder
-, rlp
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  eth-hash,
+  eth-utils,
+  hexbytes,
+  pytestCheckHook,
+  pythonOlder,
+  rlp,
 }:
 
 buildPythonPackage rec {
@@ -23,7 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-FTqIutndf+epmO5XNEUoRAUEmn299aTLIZNe5SMcxAQ=";
   };
 
-  build-system = [ setuptools];
+  build-system = [ setuptools ];
 
   propagatedBuildInputs = [
     hexbytes
@@ -31,9 +32,7 @@ buildPythonPackage rec {
     rlp
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ eth-hash.optional-dependencies.pycryptodome;
+  nativeCheckInputs = [ pytestCheckHook ] ++ eth-hash.optional-dependencies.pycryptodome;
 
   pythonImportsCheck = [ "eth_rlp" ];
 
@@ -41,6 +40,6 @@ buildPythonPackage rec {
     description = "RLP definitions for common Ethereum objects";
     homepage = "https://github.com/ethereum/eth-rlp";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/eth-typing/default.nix b/pkgs/development/python-modules/eth-typing/default.nix
index 60bafffaea2ab..cbf0c4df19b9e 100644
--- a/pkgs/development/python-modules/eth-typing/default.nix
+++ b/pkgs/development/python-modules/eth-typing/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,23 +21,17 @@ buildPythonPackage rec {
     hash = "sha256-JT/2bCPYFSRNt3V7QnHSAJR7HrZ1JpRKdU7gQpoYIn0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "eth_typing"
-  ];
+  pythonImportsCheck = [ "eth_typing" ];
 
   meta = with lib; {
     description = "Common type annotations for Ethereum Python packages";
     homepage = "https://github.com/ethereum/eth-typing";
     changelog = "https://github.com/ethereum/eth-typing/blob/v${version}/docs/release_notes.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/eth-utils/default.nix b/pkgs/development/python-modules/eth-utils/default.nix
index 8686da98d92a9..2167c3e1abdde 100644
--- a/pkgs/development/python-modules/eth-utils/default.nix
+++ b/pkgs/development/python-modules/eth-utils/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, eth-hash
-, eth-typing
-, cytoolz
-, hypothesis
-, isPyPy
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, toolz
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  eth-hash,
+  eth-typing,
+  cytoolz,
+  hypothesis,
+  isPyPy,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  toolz,
 }:
 
 buildPythonPackage rec {
@@ -25,15 +26,12 @@ buildPythonPackage rec {
     hash = "sha256-k2pHM1eKPzoGxZlU6yT7bZMv4CCWGaZaSnFHSbT76Zo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     eth-hash
     eth-typing
-  ] ++ lib.optional (!isPyPy) cytoolz
-  ++ lib.optional isPyPy toolz;
+  ] ++ lib.optional (!isPyPy) cytoolz ++ lib.optional isPyPy toolz;
 
   nativeCheckInputs = [
     hypothesis
@@ -42,9 +40,7 @@ buildPythonPackage rec {
 
   # Removing a poorly written test case from test suite.
   # TODO work with the upstream
-  disabledTestPaths = [
-    "tests/functional-utils/test_type_inference.py"
-  ];
+  disabledTestPaths = [ "tests/functional-utils/test_type_inference.py" ];
 
   pythonImportsCheck = [ "eth_utils" ];
 
@@ -53,6 +49,6 @@ buildPythonPackage rec {
     description = "Common utility functions for codebases which interact with ethereum";
     homepage = "https://github.com/ethereum/eth-utils";
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ethtool/default.nix b/pkgs/development/python-modules/ethtool/default.nix
new file mode 100644
index 0000000000000..497e6cc888513
--- /dev/null
+++ b/pkgs/development/python-modules/ethtool/default.nix
@@ -0,0 +1,57 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  setuptools,
+  pkg-config,
+  libnl,
+  nettools,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "ethtool";
+  version = "0.15";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "fedora-python";
+    repo = "python-ethtool";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-0XzGaqpkEv3mpUsbfOtRl8E62iNdS7kRoo4oYrBjMys=";
+  };
+
+  patches = [
+    # https://github.com/fedora-python/python-ethtool/pull/60
+    (fetchpatch2 {
+      url = "https://github.com/fedora-python/python-ethtool/commit/f82dd763bd50affda993b9afe3b141069a1a7466.patch";
+      hash = "sha256-mtI7XsoyM43s2DFQdsBNpB8jJff7ZyO2J6SHodBrdrI=";
+    })
+  ];
+
+  postPatch = ''
+    substituteInPlace tests/parse_ifconfig.py \
+      --replace-fail "Popen('ifconfig'," "Popen('${lib.getExe' nettools "ifconfig"}',"
+  '';
+
+  build-system = [ setuptools ];
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ libnl ];
+
+  pythonImportsCheck = [ "ethtool" ];
+
+  nativeCheckInputs = [
+    nettools
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    changelog = "https://github.com/fedora-python/python-ethtool/blob/${src.rev}/CHANGES.rst";
+    description = "Python bindings for the ethtool kernel interface";
+    homepage = "https://github.com/fedora-python/python-ethtool";
+    license = licenses.gpl2Plus;
+  };
+}
diff --git a/pkgs/development/python-modules/etils/default.nix b/pkgs/development/python-modules/etils/default.nix
index fd1d034138e95..a78831b4aedf3 100644
--- a/pkgs/development/python-modules/etils/default.nix
+++ b/pkgs/development/python-modules/etils/default.nix
@@ -1,67 +1,88 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, flit-core
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  flit-core,
 
   # tests
-, chex
-, jaxlib
-, pytest-subtests
-, pytest-xdist
-, pytestCheckHook
-, yapf
+  chex,
+  jaxlib,
+  pytest-subtests,
+  pytest-xdist,
+  pytestCheckHook,
+  yapf,
 
   # optional
-, jupyter
-, mediapy
-, numpy
-, importlib-resources
-, typing-extensions
-, zipp
-, absl-py
-, tqdm
-, dm-tree
-, jax
-, tensorflow
+  jupyter,
+  mediapy,
+  numpy,
+  importlib-resources,
+  typing-extensions,
+  zipp,
+  absl-py,
+  tqdm,
+  dm-tree,
+  jax,
+  tensorflow,
 }:
 
 buildPythonPackage rec {
   pname = "etils";
-  version = "1.8.0";
+  version = "1.9.4";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-+0ePV/7CAuJg5UyRkrMXaS/WPbLRHZk+cLzf+inMzVg=";
+    hash = "sha256-+tlQQU8KHKWMcMcJFbABT5lT3ZvPiqlRoPdf+b7L6yQ=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   passthru.optional-dependencies = rec {
     array-types = enp;
-    eapp = [ absl-py /* FIXME package simple-parsing */ ] ++ epy;
-    ecolab = [ jupyter numpy mediapy ] ++ enp ++ epy;
+    eapp = [
+      absl-py # FIXME package simple-parsing
+    ] ++ epy;
+    ecolab = [
+      jupyter
+      numpy
+      mediapy
+    ] ++ enp ++ epy;
     edc = epy;
     enp = [ numpy ] ++ epy;
-    epath = [ importlib-resources typing-extensions zipp ] ++ epy;
+    epath = [
+      importlib-resources
+      typing-extensions
+      zipp
+    ] ++ epy;
     epy = [ typing-extensions ];
-    etqdm = [ absl-py tqdm ] ++ epy;
+    etqdm = [
+      absl-py
+      tqdm
+    ] ++ epy;
     etree = array-types ++ epy ++ enp ++ etqdm;
     etree-dm = [ dm-tree ] ++ etree;
     etree-jax = [ jax ] ++ etree;
     etree-tf = [ tensorflow ] ++ etree;
-    all = array-types ++ eapp ++ ecolab ++ edc ++ enp ++ epath ++ epy ++ etqdm
-      ++ etree ++ etree-dm ++ etree-jax ++ etree-tf;
+    all =
+      array-types
+      ++ eapp
+      ++ ecolab
+      ++ edc
+      ++ enp
+      ++ epath
+      ++ epy
+      ++ etqdm
+      ++ etree
+      ++ etree-dm
+      ++ etree-jax
+      ++ etree-tf;
   };
 
-  pythonImportsCheck = [
-    "etils"
-  ];
+  pythonImportsCheck = [ "etils" ];
 
   nativeCheckInputs = [
     chex
@@ -70,8 +91,7 @@ buildPythonPackage rec {
     pytest-xdist
     pytestCheckHook
     yapf
-  ]
-  ++ passthru.optional-dependencies.all;
+  ] ++ passthru.optional-dependencies.all;
 
   disabledTests = [
     "test_public_access" # requires network access
diff --git a/pkgs/development/python-modules/etuples/default.nix b/pkgs/development/python-modules/etuples/default.nix
index a78cb3dc98977..d1a122162d2b0 100644
--- a/pkgs/development/python-modules/etuples/default.nix
+++ b/pkgs/development/python-modules/etuples/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cons
-, multipledispatch
-, py
-, pytestCheckHook
-, pytest-html
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cons,
+  multipledispatch,
+  py,
+  pytestCheckHook,
+  pytest-html,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -39,9 +40,7 @@ buildPythonPackage rec {
     "--self-contained-html"
   ];
 
-  pythonImportsCheck = [
-    "etuples"
-  ];
+  pythonImportsCheck = [ "etuples" ];
 
   meta = with lib; {
     description = "Python S-expression emulation using tuple-like objects";
diff --git a/pkgs/development/python-modules/euclid3/default.nix b/pkgs/development/python-modules/euclid3/default.nix
index 3d723eca56584..f929b4b7c0a1b 100644
--- a/pkgs/development/python-modules/euclid3/default.nix
+++ b/pkgs/development/python-modules/euclid3/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
 }:
 buildPythonPackage rec {
   pname = "euclid3";
@@ -12,14 +13,15 @@ buildPythonPackage rec {
     hash = "sha256-JbgnpXrb/Zo/qGJeQ6vD6Qf2HeYiND5+U4SC75tG/Qs=";
   };
 
-  pythonImportsCheck = [
-    "euclid3"
-  ];
+  pythonImportsCheck = [ "euclid3" ];
 
   meta = with lib; {
-    description = "2D and 3D vector, matrix, quaternion and geometry module.";
+    description = "2D and 3D vector, matrix, quaternion and geometry module";
     homepage = "http://code.google.com/p/pyeuclid/";
     license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [ jfly matusf ];
+    maintainers = with maintainers; [
+      jfly
+      matusf
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/eufylife-ble-client/default.nix b/pkgs/development/python-modules/eufylife-ble-client/default.nix
index d6216634232a2..88c488907e282 100644
--- a/pkgs/development/python-modules/eufylife-ble-client/default.nix
+++ b/pkgs/development/python-modules/eufylife-ble-client/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, bleak
-, bleak-retry-connector
-, buildPythonPackage
-, cryptography
-, fetchPypi
-, poetry-core
-, pythonOlder
+{
+  lib,
+  bleak,
+  bleak-retry-connector,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-1pnT5B+m2/IDqHqOIZdDx8WwBdZpJe1Bj/HaxY+VW1Y=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     bleak
@@ -34,9 +33,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "eufylife_ble_client"
-  ];
+  pythonImportsCheck = [ "eufylife_ble_client" ];
 
   meta = with lib; {
     description = "Module for parsing data from Eufy smart scales";
diff --git a/pkgs/development/python-modules/eval-type-backport/default.nix b/pkgs/development/python-modules/eval-type-backport/default.nix
index 1231d106fa58e..d74d24b58ac0e 100644
--- a/pkgs/development/python-modules/eval-type-backport/default.nix
+++ b/pkgs/development/python-modules/eval-type-backport/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,12 +23,10 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = {
-    description = "Like `typing._eval_type`, but lets older Python versions use newer typing features.";
+    description = "Like `typing._eval_type`, but lets older Python versions use newer typing features";
     homepage = "https://github.com/alexmojaki/eval_type_backport";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ perchun ];
diff --git a/pkgs/development/python-modules/evaluate/default.nix b/pkgs/development/python-modules/evaluate/default.nix
index fa9a894b032a7..9eeb02422a47d 100644
--- a/pkgs/development/python-modules/evaluate/default.nix
+++ b/pkgs/development/python-modules/evaluate/default.nix
@@ -1,44 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pythonRelaxDepsHook
-, cookiecutter
-, datasets
-, dill
-, fsspec
-, huggingface-hub
-, importlib-metadata
-, multiprocess
-, numpy
-, packaging
-, pandas
-, pyarrow
-, requests
-, responses
-, tqdm
-, xxhash
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  datasets,
+  dill,
+  fsspec,
+  huggingface-hub,
+  importlib-metadata,
+  multiprocess,
+  numpy,
+  packaging,
+  pandas,
+  requests,
+  setuptools,
+  tqdm,
+  xxhash,
 }:
 
 buildPythonPackage rec {
   pname = "evaluate";
-  version = "0.4.1";
-  format = "setuptools";
+  version = "0.4.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "huggingface";
-    repo = pname;
+    repo = "evaluate";
     rev = "refs/tags/v${version}";
-    hash = "sha256-axcJg0ZalEd4FOySCiFReKL7wmTCtLaw71YqyLHq8fc=";
+    hash = "sha256-CGBluY7wFr+RdUW4QTUN18z1WKAB104ayrkzzPZHZ/w=";
   };
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
-  pythonRelaxDeps = [ "responses" ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    cookiecutter
+  dependencies = [
     datasets
     numpy
     dill
@@ -50,18 +46,12 @@ buildPythonPackage rec {
     fsspec
     huggingface-hub
     packaging
-    pyarrow
-    responses
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   # most tests require internet access.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "evaluate"
-  ];
+  pythonImportsCheck = [ "evaluate" ];
 
   meta = with lib; {
     homepage = "https://huggingface.co/docs/evaluate/index";
diff --git a/pkgs/development/python-modules/evdev/default.nix b/pkgs/development/python-modules/evdev/default.nix
index fd34a11241cff..5cb92f9c66159 100644
--- a/pkgs/development/python-modules/evdev/default.nix
+++ b/pkgs/development/python-modules/evdev/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, linuxHeaders
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  linuxHeaders,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "evdev";
-  version = "1.7.0";
+  version = "1.7.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-lb0qHgxs4s16LsxubNlzb/eUs61ctU2B2MvC5BTQuHA=";
+    hash = "sha256-DHLDcL2inYV+GI2TEBnDJlGpweqXfAjI2TmxztFjf94=";
   };
 
   patchPhase = ''
@@ -23,26 +24,20 @@ buildPythonPackage rec {
       --replace-fail /usr/include ${linuxHeaders}/include
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  buildInputs = [
-    linuxHeaders
-  ];
+  buildInputs = [ linuxHeaders ];
 
   doCheck = false;
 
-  pythonImportsCheck = [
-    "evdev"
-  ];
+  pythonImportsCheck = [ "evdev" ];
 
   meta = with lib; {
     description = "Provides bindings to the generic input event interface in Linux";
     homepage = "https://python-evdev.readthedocs.io/";
     changelog = "https://github.com/gvalkov/python-evdev/blob/v${version}/docs/changelog.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/python-modules/eve/default.nix b/pkgs/development/python-modules/eve/default.nix
index f6ed465c48cdc..ef664651a542e 100644
--- a/pkgs/development/python-modules/eve/default.nix
+++ b/pkgs/development/python-modules/eve/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, flask
-, events
-, pymongo
-, simplejson
-, cerberus
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  flask,
+  events,
+  pymongo,
+  simplejson,
+  cerberus,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -37,9 +38,7 @@ buildPythonPackage rec {
       --replace "events>=0.3,<0.4" "events>=0.3"
   '';
 
-  pythonImportsCheck = [
-    "eve"
-  ];
+  pythonImportsCheck = [ "eve" ];
 
   # tests call a running mongodb instance
   doCheck = false;
diff --git a/pkgs/development/python-modules/eventkit/default.nix b/pkgs/development/python-modules/eventkit/default.nix
index f0bda6bf4d0f0..fb25e87fd953f 100644
--- a/pkgs/development/python-modules/eventkit/default.nix
+++ b/pkgs/development/python-modules/eventkit/default.nix
@@ -1,18 +1,18 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
-, numpy
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+  numpy,
 }:
 let
   pname = "eventkit";
   version = "1.0.3";
   hash = "sha256-mUl/bzxjilD/dhby+M2Iexi7/zdl3BvYaBVU2xRnyTM=";
-in buildPythonPackage {
+in
+buildPythonPackage {
   inherit pname version;
 
-  src = fetchPypi {
-    inherit pname version hash;
-  };
+  src = fetchPypi { inherit pname version hash; };
 
   propagatedBuildInputs = [ numpy ];
   dontUseSetuptoolsCheck = true;
diff --git a/pkgs/development/python-modules/eventlet/default.nix b/pkgs/development/python-modules/eventlet/default.nix
index dbdc82bd35acb..24f9ef57ed687 100644
--- a/pkgs/development/python-modules/eventlet/default.nix
+++ b/pkgs/development/python-modules/eventlet/default.nix
@@ -1,23 +1,23 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, hatch-vcs
-, hatchling
+  # build-system
+  hatch-vcs,
+  hatchling,
 
-# dependencies
-, dnspython
-, greenlet
-, isPyPy
-, six
+  # dependencies
+  dnspython,
+  greenlet,
+  isPyPy,
+  six,
 
-# tests
-, iana-etc
-, pytestCheckHook
-, libredirect
+  # tests
+  iana-etc,
+  pytestCheckHook,
+  libredirect,
 }:
 
 buildPythonPackage rec {
@@ -43,13 +43,11 @@ buildPythonPackage rec {
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # libredirect is not available on darwin
   # tests hang on pypy indefinitely
-  doCheck = !stdenv.isDarwin && !isPyPy;
+  doCheck = !stdenv.hostPlatform.isDarwin && !isPyPy;
 
   preCheck = lib.optionalString doCheck ''
     echo "nameserver 127.0.0.1" > resolv.conf
@@ -71,7 +69,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     changelog = "https://github.com/eventlet/eventlet/blob/v${version}/NEWS";
-    description = "A concurrent networking library for Python";
+    description = "Concurrent networking library for Python";
     homepage = "https://github.com/eventlet/eventlet/";
     license = licenses.mit;
     maintainers = with maintainers; [ SuperSandro2000 ];
diff --git a/pkgs/development/python-modules/events/default.nix b/pkgs/development/python-modules/events/default.nix
index f4e9dcd250f0f..ecf7fa96bc25f 100644
--- a/pkgs/development/python-modules/events/default.nix
+++ b/pkgs/development/python-modules/events/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,23 +20,17 @@ buildPythonPackage rec {
     hash = "sha256-GGhIKHbJ31IN0Uoe689X9V/MZvtseE47qx2CmM4MYUs=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "events"
-  ];
+  pythonImportsCheck = [ "events" ];
 
-  pytestFlagsArray = [
-    "events/tests/tests.py"
-  ];
+  pytestFlagsArray = [ "events/tests/tests.py" ];
 
   meta = with lib; {
     description = "Bringing the elegance of C# EventHanlder to Python";
     homepage = "https://events.readthedocs.org";
     changelog = "https://github.com/pyeve/events/blob/v0.5/CHANGES";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/evernote/default.nix b/pkgs/development/python-modules/evernote/default.nix
index aac789909199e..9d9b9cc9ad02e 100644
--- a/pkgs/development/python-modules/evernote/default.nix
+++ b/pkgs/development/python-modules/evernote/default.nix
@@ -1,28 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, oauth2
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  oauth2,
 }:
 
 buildPythonPackage rec {
   pname = "evernote";
   version = "1.25.3";
   format = "setuptools";
-  disabled = ! isPy27; #some dependencies do not work with py3
+  disabled = !isPy27; # some dependencies do not work with py3
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "796847e0b7517e729041c5187fa1665c3f6fc0491cb4d71fb95a62c4f22e64eb";
   };
 
-   propagatedBuildInputs = [ oauth2 ];
+  propagatedBuildInputs = [ oauth2 ];
 
-   meta = with lib; {
+  meta = with lib; {
     description = "Evernote SDK for Python";
     homepage = "https://dev.evernote.com";
     license = licenses.asl20;
     maintainers = with maintainers; [ hbunke ];
-   };
-
+  };
 }
diff --git a/pkgs/development/python-modules/evohome-async/default.nix b/pkgs/development/python-modules/evohome-async/default.nix
index b2f512ea973c3..09c108747b398 100644
--- a/pkgs/development/python-modules/evohome-async/default.nix
+++ b/pkgs/development/python-modules/evohome-async/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, hatchling
-, pythonOlder
-, voluptuous
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  hatchling,
+  pythonOlder,
+  voluptuous,
 }:
 
 buildPythonPackage rec {
   pname = "evohome-async";
-  version = "0.4.19";
+  version = "0.4.20";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -19,12 +20,10 @@ buildPythonPackage rec {
     owner = "zxdavb";
     repo = "evohome-async";
     rev = "refs/tags/${version}";
-    hash = "sha256-B7LvGXAZO1pd9iCuZjW/bRWdB5PEzfcQjZWokGzMN70=";
+    hash = "sha256-06ziExAcb9PZdtWjoksPIUiOuUZaSJnQi5CI0v6nla0=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -35,9 +34,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "evohomeasync2"
-  ];
+  pythonImportsCheck = [ "evohomeasync2" ];
 
   meta = with lib; {
     description = "Python client for connecting to Honeywell's TCC RESTful API";
diff --git a/pkgs/development/python-modules/evolutionhttp/default.nix b/pkgs/development/python-modules/evolutionhttp/default.nix
new file mode 100644
index 0000000000000..bb9151973627c
--- /dev/null
+++ b/pkgs/development/python-modules/evolutionhttp/default.nix
@@ -0,0 +1,48 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+
+  # build-system
+  hatchling,
+
+  # dependencies
+  aiofiles,
+  aiohttp,
+
+  # tests
+  mock,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "evolutionhttp";
+  version = "0.0.18";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-LZ9IQJ2qVdCbhOECbPOjikeJA0aGKLdZURG6tjIrkT4=";
+  };
+
+  build-system = [ hatchling ];
+
+  dependencies = [
+    aiofiles
+    aiohttp
+  ];
+
+  nativeCheckInputs = [
+    mock
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "evolutionhttp" ];
+
+  meta = with lib; {
+    description = "An HTTP client for controlling a Bryant Evolution HVAC system";
+    homepage = "https://github.com/danielsmyers/evolutionhttp";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/development/python-modules/evosax/default.nix b/pkgs/development/python-modules/evosax/default.nix
new file mode 100644
index 0000000000000..08771810c948c
--- /dev/null
+++ b/pkgs/development/python-modules/evosax/default.nix
@@ -0,0 +1,84 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  chex,
+  dotmap,
+  flax,
+  jax,
+  jaxlib,
+  matplotlib,
+  numpy,
+  pyyaml,
+
+  # checks
+  # brax, (unpackaged)
+  # gymnax, (unpackaged)
+  pytestCheckHook,
+  torch,
+  torchvision,
+}:
+
+buildPythonPackage rec {
+  pname = "evosax";
+  version = "0.1.6";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "RobertTLange";
+    repo = "evosax";
+    rev = "refs/tags/v.${version}";
+    hash = "sha256-v8wRiWZlJPF9pIXocQ6/caHl1W4QBNjkmuImJ6MAueo=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    chex
+    dotmap
+    flax
+    jax
+    jaxlib
+    matplotlib
+    numpy
+    pyyaml
+  ];
+
+  pythonImportsCheck = [ "evosax" ];
+
+  preCheck = ''
+    export HOME=$(mktemp -d)
+  '';
+
+  nativeCheckInputs = [
+    # brax
+    # gymnax
+    pytestCheckHook
+    torch
+    torchvision
+  ];
+
+  disabledTests = [
+    # Requires unpackaged gymnax
+    "test_env_ffw_rollout"
+
+    # Tries to download a data set from the internet
+    "test_vision_fitness"
+  ];
+
+  meta = {
+    description = "Evolution Strategies in JAX";
+    homepage = "https://github.com/RobertTLange/evosax";
+    changelog = "https://github.com/RobertTLange/evosax/blob/${src.rev}/CHANGELOG.md";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/pkgs/development/python-modules/evtx/default.nix b/pkgs/development/python-modules/evtx/default.nix
index b949864dc7aaf..a31b963462a39 100644
--- a/pkgs/development/python-modules/evtx/default.nix
+++ b/pkgs/development/python-modules/evtx/default.nix
@@ -1,16 +1,17 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, rustPlatform
-, libiconv
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  rustPlatform,
+  libiconv,
 }:
 
 buildPythonPackage rec {
   pname = "evtx";
-  version = "0.8.2";
+  version = "0.8.5";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -19,13 +20,13 @@ buildPythonPackage rec {
     owner = "omerbenamram";
     repo = "pyevtx-rs";
     rev = "refs/tags/${version}";
-    hash = "sha256-t//oNvD+7wnv5KkriKBX4xgGS8pQpZgCsKxAEXsj0X8=";
+    hash = "sha256-wo6CeHlEBbu3klzzC4dUbjSfu7XwLo/cmtmZsVIKgS8=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-DPEL36cYNV5v4iW3+Fg1eEeuBuK9S7Qe78xOzZs8aJw=";
+    hash = "sha256-qBpc3PwvAceOMuRH4vrgURCsvKYhG2Id62n7sxW5AAg=";
   };
 
   nativeBuildInputs = with rustPlatform; [
@@ -33,17 +34,11 @@ buildPythonPackage rec {
     maturinBuildHook
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [
-    libiconv
-  ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "evtx"
-  ];
+  pythonImportsCheck = [ "evtx" ];
 
   meta = with lib; {
     description = "Bindings for evtx";
diff --git a/pkgs/development/python-modules/ewmh/default.nix b/pkgs/development/python-modules/ewmh/default.nix
index c1fc19e13d1bc..9819f036887b7 100644
--- a/pkgs/development/python-modules/ewmh/default.nix
+++ b/pkgs/development/python-modules/ewmh/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, xlib }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  xlib,
+}:
 
 buildPythonPackage rec {
   pname = "ewmh";
@@ -17,7 +22,7 @@ buildPythonPackage rec {
 
   meta = {
     homepage = "https://github.com/parkouss/pyewmh";
-    description = "An implementation of EWMH (Extended Window Manager Hints), based on Xlib";
+    description = "Implementation of EWMH (Extended Window Manager Hints), based on Xlib";
     license = lib.licenses.lgpl3Plus;
     maintainers = with lib.maintainers; [ bandresen ];
   };
diff --git a/pkgs/development/python-modules/exceptiongroup/default.nix b/pkgs/development/python-modules/exceptiongroup/default.nix
index 2dca56aa91763..c39354ac24cc5 100644
--- a/pkgs/development/python-modules/exceptiongroup/default.nix
+++ b/pkgs/development/python-modules/exceptiongroup/default.nix
@@ -1,45 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-scm
-, pytestCheckHook
-, pythonOlder
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-scm,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "exceptiongroup";
-  version = "1.2.0";
-  format = "pyproject";
+  version = "1.2.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "agronholm";
     repo = "exceptiongroup";
-    rev = version;
-    hash = "sha256-iGeaRVJeFAWfJpwr7N4kST7d8YxpX3WgDqQemlR0cLU=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-87HmZsbsoV7QPHux50sYsFY2RaIc3627dH3WAwqXfQU=";
   };
 
-  nativeBuildInputs = [
-    flit-scm
-  ];
+  nativeBuildInputs = [ flit-scm ];
 
-  doCheck = pythonAtLeast "3.11"; # infinite recursion with pytest
-
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = if pythonAtLeast "3.12" then [
-    # https://github.com/agronholm/exceptiongroup/issues/116
-    "test_deep_split"
-    "test_deep_subgroup"
-  ] else null;
+  doCheck = pythonAtLeast "3.11"; # infinite recursion with pytest
 
-  pythonImportsCheck = [
-    "exceptiongroup"
-  ];
+  pythonImportsCheck = [ "exceptiongroup" ];
 
   meta = with lib; {
     description = "Backport of PEP 654 (exception groups)";
diff --git a/pkgs/development/python-modules/exchangelib/default.nix b/pkgs/development/python-modules/exchangelib/default.nix
index c41a7da3a8075..5be910888a8e1 100644
--- a/pkgs/development/python-modules/exchangelib/default.nix
+++ b/pkgs/development/python-modules/exchangelib/default.nix
@@ -29,18 +29,20 @@
 
 buildPythonPackage rec {
   pname = "exchangelib";
-  version = "5.3.0";
+  version = "5.4.3";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "ecederstrand";
     repo = "exchangelib";
     rev = "refs/tags/v${version}";
-    hash = "sha256-rcXQJYjyWLPrlMci/j8IY7EbDEyyc+5uSOOXo0YwjKo=";
+    hash = "sha256-SX5F0OXKdxA2HoDwvCe4M7RftdjUEdQuFbxRyuABC4E=";
   };
 
+  pythonRelaxDeps = [ "defusedxml" ];
+
   build-system = [ setuptools ];
 
   dependencies = [
diff --git a/pkgs/development/python-modules/exdown/default.nix b/pkgs/development/python-modules/exdown/default.nix
index 937e90250a863..9221ae0a16936 100644
--- a/pkgs/development/python-modules/exdown/default.nix
+++ b/pkgs/development/python-modules/exdown/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, isPy27
-, fetchPypi
-, pythonOlder
-, setuptools
-, importlib-metadata
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  isPy27,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  importlib-metadata,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,15 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-r0SCigkUpOiba4MDf80+dLjOjjruVNILh/raWfvjXA0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "exdown" ];
 
@@ -36,6 +33,6 @@ buildPythonPackage rec {
     description = "Extract code blocks from markdown";
     homepage = "https://github.com/nschloe/exdown";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/execnb/default.nix b/pkgs/development/python-modules/execnb/default.nix
index 56b1bf1388ed9..bd3d91a10e513 100644
--- a/pkgs/development/python-modules/execnb/default.nix
+++ b/pkgs/development/python-modules/execnb/default.nix
@@ -1,34 +1,45 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fastcore
-, traitlets
-, ipython
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fastcore,
+  fetchPypi,
+  ipython,
+  pythonOlder,
+  setuptools,
+  traitlets,
 }:
 
 buildPythonPackage rec {
   pname = "execnb";
-  version = "0.1.5";
-  format = "setuptools";
+  version = "0.1.6";
+  pyproject = true;
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-nuAp4OMAfA3u3DJyORjFw7y7ZLsLCKEfxSFIXqNh+k0=";
+    hash = "sha256-KJ2XEHqFY0SxbAiVPWBFO0cyC0EWgGDso8wt7lBLTgU=";
   };
 
-  propagatedBuildInputs = [ fastcore traitlets ipython ];
+  build-system = [ setuptools ];
+
+  dependencies = [
+    fastcore
+    ipython
+    traitlets
+  ];
 
   # no real tests
   doCheck = false;
+
   pythonImportsCheck = [ "execnb" ];
 
   meta = with lib; {
-    homepage = "https://github.com/fastai/execnb";
     description = "Execute a jupyter notebook, fast, without needing jupyter";
-    mainProgram = "exec_nb";
+    homepage = "https://github.com/fastai/execnb";
+    changelog = "https://github.com/fastai/execnb/releases/tag/${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ rxiao ];
+    mainProgram = "exec_nb";
   };
 }
diff --git a/pkgs/development/python-modules/execnet/default.nix b/pkgs/development/python-modules/execnet/default.nix
index eb184c180d5b9..5c67eb0444646 100644
--- a/pkgs/development/python-modules/execnet/default.nix
+++ b/pkgs/development/python-modules/execnet/default.nix
@@ -1,34 +1,37 @@
-{ lib
-, buildPythonPackage
-, isPyPy
-, fetchPypi
-, hatchling
-, hatch-vcs
-, gevent
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  isPyPy,
+  fetchPypi,
+  hatchling,
+  hatch-vcs,
+  gevent,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "execnet";
-  version = "2.0.2";
-  format = "pyproject";
+  version = "2.1.1";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-zFm8RCN0L9ca0icSLrDdRNtR77PcQJW0WsmgjHcAlq8=";
+    hash = "sha256-UYm1LGEhwk/q4ogWarQbMlScfiNIZSc2VAuebn1OcuM=";
   };
 
-  postPatch = ''
-    # remove vbox tests
-    rm testing/test_termination.py
-    rm testing/test_channel.py
-    rm testing/test_xspec.py
-    rm testing/test_gateway.py
-  '' + lib.optionalString isPyPy ''
-    rm testing/test_multi.py
-  '';
+  postPatch =
+    ''
+      # remove vbox tests
+      rm testing/test_termination.py
+      rm testing/test_channel.py
+      rm testing/test_xspec.py
+      rm testing/test_gateway.py
+    ''
+    + lib.optionalString isPyPy ''
+      rm testing/test_multi.py
+    '';
 
-  nativeBuildInputs = [
+  build-system = [
     hatchling
     hatch-vcs
   ];
@@ -50,17 +53,15 @@ buildPythonPackage rec {
 
   pytestFlagsArray = [ "-vvv" ];
 
-  pythonImportsCheck = [
-    "execnet"
-  ];
+  pythonImportsCheck = [ "execnet" ];
 
   __darwinAllowLocalNetworking = true;
 
-  meta = with lib; {
-    changelog = "https://github.com/pytest-dev/execnet/blob/v${version}/CHANGELOG.rst";
+  meta = {
     description = "Distributed Python deployment and communication";
     homepage = "https://execnet.readthedocs.io/";
-    license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    changelog = "https://github.com/pytest-dev/execnet/blob/v${version}/CHANGELOG.rst";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ getchoo ];
   };
 }
diff --git a/pkgs/development/python-modules/executing/default.nix b/pkgs/development/python-modules/executing/default.nix
index aad9455156d1f..e9bdb9bf737c4 100644
--- a/pkgs/development/python-modules/executing/default.nix
+++ b/pkgs/development/python-modules/executing/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
-, pythonOlder
-
-# build-system
-, setuptools
-, setuptools-scm
-
-# tests
-, asttokens
-, littleutils
-, rich
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonAtLeast,
+  pythonOlder,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+
+  # tests
+  asttokens,
+  littleutils,
+  rich,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -29,6 +30,11 @@ buildPythonPackage rec {
     hash = "sha256-PBvfkv9GQ5Vj5I5SygtmHXtqqHMJ4XgNV1/I+lSU0/U=";
   };
 
+  patches = [
+    # TODO: replace after the PR is merged or tagged
+    ./get_iter.patch
+  ];
+
   nativeBuildInputs = [
     setuptools
     setuptools-scm
@@ -38,19 +44,20 @@ buildPythonPackage rec {
     asttokens
     littleutils
     pytestCheckHook
-  ] ++ lib.optionals (pythonAtLeast "3.11") [
-    rich
-  ];
+  ] ++ lib.optionals (pythonAtLeast "3.11") [ rich ];
 
   disabledTests = [
     # requires ipython, which causes a circular dependency
     "test_two_statement_lookups"
-  ];
 
-  pythonImportsCheck = [
-    "executing"
+    # Asserts against time passed using time.time() to estimate
+    # if the test runs fast enough. That makes the test flaky when
+    # running on slow systems or cross- / emulated building
+    "test_many_source_for_filename_calls"
   ];
 
+  pythonImportsCheck = [ "executing" ];
+
   meta = with lib; {
     description = "Get information about what a frame is currently doing, particularly the AST node being executed";
     homepage = "https://github.com/alexmojaki/executing";
diff --git a/pkgs/development/python-modules/executing/get_iter.patch b/pkgs/development/python-modules/executing/get_iter.patch
new file mode 100644
index 0000000000000..c8d5bc7a1d563
--- /dev/null
+++ b/pkgs/development/python-modules/executing/get_iter.patch
@@ -0,0 +1,192 @@
+https://github.com/alexmojaki/executing/pull/83#pullrequestreview-2244302661
+
+
+From 0b913873b9db8c157a8dd581e8771242bcb8864b Mon Sep 17 00:00:00 2001
+From: Frank Hoffmann <15r10nk-git@polarbit.de>
+Date: Fri, 16 Aug 2024 22:51:32 +0200
+Subject: [PATCH 1/4] fix: backward compatibility fix for changed source
+ positions in 3.12.5 (#82)
+
+---
+ executing/_position_node_finder.py | 27 +++++++++++++++++++++++++++
+ 1 file changed, 27 insertions(+)
+
+diff --git a/executing/_position_node_finder.py b/executing/_position_node_finder.py
+index 8ca21a6..9a3f8b3 100644
+--- a/executing/_position_node_finder.py
++++ b/executing/_position_node_finder.py
+@@ -156,6 +156,8 @@ def __init__(self, frame: FrameType, stmts: Set[EnhancedAST], tree: ast.Module,
+                 typ=typ,
+             )
+ 
++        self.result = self.fix_result(self.result, self.instruction(lasti))
++
+         self.known_issues(self.result, self.instruction(lasti))
+ 
+         self.test_for_decorator(self.result, lasti)
+@@ -213,6 +215,31 @@ def test_for_decorator(self, node: EnhancedAST, index: int) -> None:
+                 if sys.version_info < (3, 12):
+                     index += 4
+ 
++    def fix_result(
++        self, node: EnhancedAST, instruction: dis.Instruction
++    ) -> EnhancedAST:
++        if (
++            sys.version_info >= (3, 12, 5)
++            and instruction.opname in ("GET_ITER", "FOR_ITER")
++            and isinstance(node, ast.For)
++        ):
++            # node positions have changed in 3.13
++            # https://github.com/python/cpython/issues/93691#event-13151024246
++            # `for` calls __iter__ and __next__ during execution, the calling
++            # expression of these calls was the ast.For node since cpython 3.11 (see test_iter).
++            # cpython 3.13 changed this to the `iter` node of the loop, to make tracebacks easier to read.
++            # This keeps backward compatibility with older executing versions.
++
++            # there are also cases like:
++            #
++            # for a in iter(l): pass
++            #
++            # where `iter(l)` would be otherwise the resulting node for the `iter()` call and the __iter__ call of the for implementation.
++            # keeping the old behaviour makes it possible to distinguish both cases.
++
++            return self.result.parent
++        return node
++
+     def known_issues(self, node: EnhancedAST, instruction: dis.Instruction) -> None:
+         if instruction.opname in ("COMPARE_OP", "IS_OP", "CONTAINS_OP") and isinstance(
+             node, types_cmp_issue
+
+From d421795d8213abb4fea30067af0149d3a767fed4 Mon Sep 17 00:00:00 2001
+From: Frank Hoffmann <15r10nk-git@polarbit.de>
+Date: Tue, 4 Jun 2024 19:46:57 +0200
+Subject: [PATCH 2/4] feat!: dropped support for 3.5, 3.6 and 3.7
+
+---
+ .github/workflows/test.yml | 2 +-
+ setup.cfg                  | 5 +----
+ tox.ini                    | 4 ++--
+ 3 files changed, 4 insertions(+), 7 deletions(-)
+
+diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
+index 8fca81a..140de04 100644
+--- a/.github/workflows/test.yml
++++ b/.github/workflows/test.yml
+@@ -12,7 +12,7 @@ jobs:
+     runs-on: ubuntu-20.04
+     strategy:
+       matrix:
+-        python-version: [3.5, 3.6, 3.7, 3.8, 3.9, '3.10', 3.11, 3.12-dev, pypy-3.6]
++        python-version: [3.8, 3.9, '3.10', 3.11, 3.12-dev]
+ 
+     steps:
+     - uses: actions/checkout@v2
+diff --git a/setup.cfg b/setup.cfg
+index fdf901f..ed446d0 100644
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -11,9 +11,6 @@ classifiers =
+     License :: OSI Approved :: MIT License
+     Programming Language :: Python
+     Programming Language :: Python :: 3
+-    Programming Language :: Python :: 3.5
+-    Programming Language :: Python :: 3.6
+-    Programming Language :: Python :: 3.7
+     Programming Language :: Python :: 3.8
+     Programming Language :: Python :: 3.9
+     Programming Language :: Python :: 3.10
+@@ -25,7 +22,7 @@ packages = executing
+ zip_safe = False
+ include_package_data = True
+ setup_requires = setuptools; setuptools_scm[toml]
+-python_requires = >=3.5
++python_requires = >=3.8
+ 
+ [options.extras_require]
+ tests=
+diff --git a/tox.ini b/tox.ini
+index 3566691..6c68c4e 100644
+--- a/tox.ini
++++ b/tox.ini
+@@ -1,5 +1,5 @@
+ [tox]
+-envlist = py35,py36,py37,py38,py39,py310,py311,py312,pypy35,pypy36
++envlist = py38,py39,py310,py311,py312,pypy35,pypy36
+ 
+ [testenv]
+ commands =
+@@ -10,7 +10,7 @@ passenv =
+     ADD_EXECUTING_TESTS
+     EXECUTING_SLOW_TESTS
+ 
+-[testenv:generate_small_sample-py{35,36,37,38,39,310,311}]
++[testenv:generate_small_sample-py{38,39,310,311,312}]
+ extras = tests
+ deps = pysource-minimize
+ commands =
+
+From 3c5ae436a4cff833606ce22c637d088481442154 Mon Sep 17 00:00:00 2001
+From: Frank Hoffmann <15r10nk-git@polarbit.de>
+Date: Sat, 17 Aug 2024 11:32:44 +0200
+Subject: [PATCH 3/4] test: skip module tests for python.py
+
+---
+ tests/test_main.py | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/tests/test_main.py b/tests/test_main.py
+index bc015cd..84b1305 100644
+--- a/tests/test_main.py
++++ b/tests/test_main.py
+@@ -810,6 +810,9 @@ def test_module_files(self):
+                         or 'pyparsing.py' in filename
+                         or 'enum' in filename
+                     )
++                    or sys.version_info < (3,11) and (
++                        'python.py' in filename
++                    )   
+             ):
+                 continue
+ 
+
+From f15a55201be20f30664df4381f4a81407e0d25fb Mon Sep 17 00:00:00 2001
+From: Frank Hoffmann <15r10nk-git@polarbit.de>
+Date: Sun, 18 Aug 2024 14:02:30 +0200
+Subject: [PATCH 4/4] refactor: review changes
+
+---
+ executing/_position_node_finder.py | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/executing/_position_node_finder.py b/executing/_position_node_finder.py
+index 9a3f8b3..7a0cca6 100644
+--- a/executing/_position_node_finder.py
++++ b/executing/_position_node_finder.py
+@@ -221,13 +221,14 @@ def fix_result(
+         if (
+             sys.version_info >= (3, 12, 5)
+             and instruction.opname in ("GET_ITER", "FOR_ITER")
+-            and isinstance(node, ast.For)
++            and isinstance(node.parent, ast.For)
++            and node is node.parent.iter
+         ):
+-            # node positions have changed in 3.13
+-            # https://github.com/python/cpython/issues/93691#event-13151024246
++            # node positions have changed in 3.12.5
++            # https://github.com/python/cpython/issues/93691
+             # `for` calls __iter__ and __next__ during execution, the calling
+             # expression of these calls was the ast.For node since cpython 3.11 (see test_iter).
+-            # cpython 3.13 changed this to the `iter` node of the loop, to make tracebacks easier to read.
++            # cpython 3.12.5 changed this to the `iter` node of the loop, to make tracebacks easier to read.
+             # This keeps backward compatibility with older executing versions.
+ 
+             # there are also cases like:
+@@ -237,7 +238,7 @@ def fix_result(
+             # where `iter(l)` would be otherwise the resulting node for the `iter()` call and the __iter__ call of the for implementation.
+             # keeping the old behaviour makes it possible to distinguish both cases.
+ 
+-            return self.result.parent
++            return node.parent
+         return node
+ 
+     def known_issues(self, node: EnhancedAST, instruction: dis.Instruction) -> None:
diff --git a/pkgs/development/python-modules/executor/default.nix b/pkgs/development/python-modules/executor/default.nix
index 40d15a9fa594d..e51249e49fd1a 100644
--- a/pkgs/development/python-modules/executor/default.nix
+++ b/pkgs/development/python-modules/executor/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy27
-, coloredlogs
-, humanfriendly
-, property-manager
-, fasteners
-, six
-, pytestCheckHook
-, mock
-, virtualenv
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  coloredlogs,
+  humanfriendly,
+  property-manager,
+  fasteners,
+  six,
+  pytestCheckHook,
+  mock,
+  virtualenv,
 }:
 
 buildPythonPackage rec {
@@ -47,7 +48,7 @@ buildPythonPackage rec {
     "ssh"
     "foreach"
     "local_context"
-    "release"  # meant to be ran on ubuntu to succeed
+    "release" # meant to be ran on ubuntu to succeed
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/exif/default.nix b/pkgs/development/python-modules/exif/default.nix
index c1619436477a8..129e6e2863f3c 100644
--- a/pkgs/development/python-modules/exif/default.nix
+++ b/pkgs/development/python-modules/exif/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitLab
-, pythonOlder
-, plum-py
-, pytestCheckHook
-, baseline
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  pythonOlder,
+  plum-py,
+  pytestCheckHook,
+  baseline,
 }:
 
 buildPythonPackage rec {
@@ -21,18 +22,14 @@ buildPythonPackage rec {
     hash = "sha256-uiHL3m0C6+YnAHRLwzMCSzffrQsSyVcuem6FBtTLxek=";
   };
 
-  propagatedBuildInputs = [
-    plum-py
-  ];
+  propagatedBuildInputs = [ plum-py ];
 
   nativeCheckInputs = [
     pytestCheckHook
     baseline
   ];
 
-  pythonImportsCheck = [
-    "exif"
-  ];
+  pythonImportsCheck = [ "exif" ];
 
   meta = with lib; {
     description = "Read and modify image EXIF metadata using Python";
diff --git a/pkgs/development/python-modules/exifread/default.nix b/pkgs/development/python-modules/exifread/default.nix
index 31edf9707eba2..942b5b761abd3 100644
--- a/pkgs/development/python-modules/exifread/default.nix
+++ b/pkgs/development/python-modules/exifread/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,8 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Easy to use Python module to extract Exif metadata from tiff and jpeg files";
     mainProgram = "EXIF.py";
-    homepage    = "https://github.com/ianare/exif-py";
-    license     = licenses.bsd0;
-    maintainers = with maintainers; [ ];
+    homepage = "https://github.com/ianare/exif-py";
+    license = licenses.bsd0;
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/exitcode/default.nix b/pkgs/development/python-modules/exitcode/default.nix
index e3d91f53de874..1127a42abdcdb 100644
--- a/pkgs/development/python-modules/exitcode/default.nix
+++ b/pkgs/development/python-modules/exitcode/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-MZeLwU1gODqH752y/nc9WkUArl48pyq9Vun7tX620No=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "exitcode"
-  ];
+  pythonImportsCheck = [ "exitcode" ];
 
   meta = with lib; {
     description = "Preferred system exit codes as defined by sysexits.h";
diff --git a/pkgs/development/python-modules/exiv2/default.nix b/pkgs/development/python-modules/exiv2/default.nix
new file mode 100644
index 0000000000000..9529615d0b1dd
--- /dev/null
+++ b/pkgs/development/python-modules/exiv2/default.nix
@@ -0,0 +1,64 @@
+{
+  lib,
+  pkg-config,
+  exiv2,
+  gettext,
+  fetchFromGitHub,
+  gitUpdater,
+  buildPythonPackage,
+  setuptools,
+  toml,
+  unittestCheckHook,
+}:
+buildPythonPackage rec {
+  pname = "exiv2";
+  version = "0.17.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "jim-easterbrook";
+    repo = "python-exiv2";
+    rev = "refs/tags/${version}";
+    hash = "sha256-AXBhCe7AvhQkGZaLMTGExwgUYQGdRkk14Rtceugexag=";
+  };
+
+  # FAIL: test_localisation (test_types.TestTypesModule.test_localisation)
+  # FAIL: test_TimeValue (test_value.TestValueModule.test_TimeValue)
+  postPatch = ''
+    substituteInPlace tests/test_value.py \
+      --replace-fail "def test_TimeValue(self):" "@unittest.skip('skipping')
+        def test_TimeValue(self):"
+    substituteInPlace tests/test_types.py \
+      --replace-fail "def test_localisation(self):" "@unittest.skip('skipping')
+        def test_localisation(self):"
+  '';
+
+  build-system = [
+    setuptools
+    toml
+  ];
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [
+    exiv2
+    gettext
+  ];
+
+  pythonImportsCheck = [ "exiv2" ];
+  nativeCheckInputs = [ unittestCheckHook ];
+  unittestFlagsArray = [
+    "-s"
+    "tests"
+    "-v"
+  ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = {
+    description = "Low level Python interface to the Exiv2 C++ library";
+    homepage = "https://github.com/jim-easterbrook/python-exiv2";
+    changelog = "https://python-exiv2.readthedocs.io/en/release-${version}/misc/changelog.html";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ zebreus ];
+  };
+}
diff --git a/pkgs/development/python-modules/expandvars/default.nix b/pkgs/development/python-modules/expandvars/default.nix
index 14d637fa63cec..b295a8c6640eb 100644
--- a/pkgs/development/python-modules/expandvars/default.nix
+++ b/pkgs/development/python-modules/expandvars/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 
-# build-system
-, hatchling
+  # build-system
+  hatchling,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,18 +23,11 @@ buildPythonPackage rec {
     hash = "sha256-fRrfpVcoz0tdgS7OPQh3A/rqlT4MChp4QV3p31Ak2EQ=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
-  pythonImportsCheck = [
-    "expandvars"
-  ];
-
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  pythonImportsCheck = [ "expandvars" ];
 
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Expand system variables Unix style";
diff --git a/pkgs/development/python-modules/expects/default.nix b/pkgs/development/python-modules/expects/default.nix
index df9b06590981f..a36769259e365 100644
--- a/pkgs/development/python-modules/expects/default.nix
+++ b/pkgs/development/python-modules/expects/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/expecttest/default.nix b/pkgs/development/python-modules/expecttest/default.nix
index 5c1a27751e070..0d52c20ba8f0e 100644
--- a/pkgs/development/python-modules/expecttest/default.nix
+++ b/pkgs/development/python-modules/expecttest/default.nix
@@ -1,26 +1,30 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, hypothesis
-, lib
-, poetry-core
-, pytestCheckHook
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  hypothesis,
+  lib,
+  poetry-core,
+  pytestCheckHook,
 }:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "expecttest";
-  version = "0.1.4";
-  format = "pyproject";
+  version = "0.2.1";
+  pyproject = true;
 
   src = fetchFromGitHub {
-    owner = "ezyang";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-BFM0jFWXfH72n9XuFtU9URW8LWGPVJncXniBV5547W4=";
+    owner = "pytorch";
+    repo = "expecttest";
+    rev = "683b09a352cc426851adc2e3a9f46e0ab25e4dee"; # no tags
+    hash = "sha256-e9/KxPN/w0mrFYgesRGqaiDQ6gor7BpX/5/B0NPtXLY=";
   };
 
-  nativeBuildInputs = [ poetry-core ];
+  build-system = [ poetry-core ];
 
-  nativeCheckInputs = [ hypothesis pytestCheckHook ];
+  nativeCheckInputs = [
+    hypothesis
+    pytestCheckHook
+  ];
 
   pythonImportsCheck = [ "expecttest" ];
 
@@ -28,7 +32,7 @@ buildPythonPackage rec {
     maintainers = [ lib.maintainers.SomeoneSerge ];
     license = lib.licenses.mit;
     description = ''EZ Yang "golden" tests (testing against a reference implementation)'';
-    homepage = "https://github.com/ezyang/expecttest";
+    homepage = "https://github.com/pytorch/expecttest";
     platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/experiment-utilities/default.nix b/pkgs/development/python-modules/experiment-utilities/default.nix
index a984a95de8258..816133f0b4a4b 100644
--- a/pkgs/development/python-modules/experiment-utilities/default.nix
+++ b/pkgs/development/python-modules/experiment-utilities/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, cloudpickle
-, dill
-, fasteners
-, fetchFromGitLab
-, qgrid
-, ipynbname
-, ipywidgets
-, odfpy
-, scipy
-, plotly
-, pytestCheckHook
-, pyyaml
-, tabulate
-, tensorboard
-, torch
+{
+  lib,
+  buildPythonPackage,
+  cloudpickle,
+  dill,
+  fasteners,
+  fetchFromGitLab,
+  qgrid,
+  ipynbname,
+  ipywidgets,
+  odfpy,
+  scipy,
+  plotly,
+  pytestCheckHook,
+  pyyaml,
+  tabulate,
+  tensorboard,
+  torch,
 }:
 
 buildPythonPackage rec {
@@ -57,14 +58,12 @@ buildPythonPackage rec {
     torch
   ];
 
-  disabledTests = [
-    "test_experimentstarter"
-  ];
+  disabledTests = [ "test_experimentstarter" ];
 
   pythonImportsCheck = [ "exputils" ];
 
   meta = with lib; {
-    description = "Various tools to run scientific computer experiments.";
+    description = "Various tools to run scientific computer experiments";
     homepage = "https://gitlab.inria.fr/creinke/exputils";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ GaetanLepage ];
diff --git a/pkgs/development/python-modules/expiring-dict/default.nix b/pkgs/development/python-modules/expiring-dict/default.nix
index be2b5c875d20c..ba846ebbab32e 100644
--- a/pkgs/development/python-modules/expiring-dict/default.nix
+++ b/pkgs/development/python-modules/expiring-dict/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, sortedcontainers
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  sortedcontainers,
 }:
 
 buildPythonPackage rec {
@@ -14,18 +15,14 @@ buildPythonPackage rec {
     hash = "sha256-PEBK2x5DaUaMt+Ub+8nEcNfi6GPv4qHHXU7XBtDc4aY=";
   };
 
-  propagatedBuildInputs = [
-    sortedcontainers
-  ];
+  propagatedBuildInputs = [ sortedcontainers ];
 
-  pythonImportsCheck = [
-    "expiring_dict"
-  ];
+  pythonImportsCheck = [ "expiring_dict" ];
 
   meta = with lib; {
     description = "Python dict with TTL support for auto-expiring caches";
     homepage = "https://github.com/dparker2/py-expiring-dict";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/expiringdict/default.nix b/pkgs/development/python-modules/expiringdict/default.nix
index e4e6dd8b7824d..4b5591d055257 100644
--- a/pkgs/development/python-modules/expiringdict/default.nix
+++ b/pkgs/development/python-modules/expiringdict/default.nix
@@ -1,46 +1,54 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, dill
-, coverage
-, coveralls
-, mock
-, nose
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  dill,
+  mock,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "expiringdict";
   version = "1.2.2";
-  format = "setuptools";
+  pyproject = true;
 
   # use fetchFromGitHub instead of fetchPypi because the test suite of
   # the package is not included into the PyPI tarball
   src = fetchFromGitHub {
     owner = "mailgun";
-    repo = pname;
+    repo = "expiringdict";
     rev = "refs/tags/v${version}";
     hash = "sha256-vRhJSHIqc51I+s/wndtfANM44CKW3QS1iajqyoSBf0I=";
   };
 
+  patches = [
+    # apply mailgun/expiringdict#49 to address NixOS/nixpkgs#326513
+    (fetchpatch2 {
+      url = "https://github.com/mailgun/expiringdict/commit/1c0f82232d20f8b3b31c9269a4d0e9510c1721a6.patch";
+      hash = "sha256-IeeJVb2tOwRhEPNGqM30fNZyz3jFcnZNWC3I6K1+hSY=";
+    })
+
+    # apply mailgun/expiringdict#56 for compatibility with Python 3.12
+    (fetchpatch2 {
+      url = "https://github.com/mailgun/expiringdict/commit/976faf3664d54049e443aca054f5819db834577b.patch";
+      hash = "sha256-FNdnU6iUMyED5j8oAjhmJTR7zQeEc/Z5s64pdeT4F8w=";
+    })
+  ];
+
+  build-system = [ setuptools ];
+
   nativeCheckInputs = [
     dill
-    coverage
-    coveralls
     mock
-    nose
+    pytestCheckHook
   ];
 
-  checkPhase = ''
-    runHook preCheck
-    nosetests -v --with-coverage --cover-package=expiringdict
-    runHook postCheck
-  '';
-
-  pythonImportsCheck = [
-    "expiringdict"
-  ];
+  pythonImportsCheck = [ "expiringdict" ];
 
   meta = with lib; {
+    changelog = "https://github.com/mailgun/expiringdict/blob/${src.rev}/CHANGELOG.rst";
     description = "Dictionary with auto-expiring values for caching purposes";
     homepage = "https://github.com/mailgun/expiringdict";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/explorerscript/default.nix b/pkgs/development/python-modules/explorerscript/default.nix
index 4adc91b25dbae..391881204e29a 100644
--- a/pkgs/development/python-modules/explorerscript/default.nix
+++ b/pkgs/development/python-modules/explorerscript/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, antlr4
-, antlr4-python3-runtime
-, igraph
-, pygments
-, pytestCheckHook
-, pythonRelaxDepsHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  antlr4,
+  antlr4-python3-runtime,
+  igraph,
+  pygments,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -24,7 +24,6 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     antlr4
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -48,21 +47,15 @@ buildPythonPackage rec {
     igraph
   ];
 
-  passthru.optional-dependencies.pygments = [
-    pygments
-  ];
+  passthru.optional-dependencies.pygments = [ pygments ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.pygments;
+  nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.pygments;
 
-  pythonImportsCheck = [
-    "explorerscript"
-  ];
+  pythonImportsCheck = [ "explorerscript" ];
 
   meta = with lib; {
     homepage = "https://github.com/SkyTemple/explorerscript";
-    description = "A programming language + compiler/decompiler for creating scripts for Pokémon Mystery Dungeon Explorers of Sky";
+    description = "Programming language + compiler/decompiler for creating scripts for Pokémon Mystery Dungeon Explorers of Sky";
     license = licenses.mit;
     maintainers = with maintainers; [ marius851000 ];
   };
diff --git a/pkgs/development/python-modules/exrex/default.nix b/pkgs/development/python-modules/exrex/default.nix
index fd7982ee778c3..ab54bd684f6fd 100644
--- a/pkgs/development/python-modules/exrex/default.nix
+++ b/pkgs/development/python-modules/exrex/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -25,18 +26,14 @@ buildPythonPackage rec {
       --replace "version=about['__version__']," "version='${version}',"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   dontWrapPythonPrograms = true;
 
   # Projec thas no released tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "exrex"
-  ];
+  pythonImportsCheck = [ "exrex" ];
 
   meta = with lib; {
     description = "Irregular methods on regular expressions";
diff --git a/pkgs/development/python-modules/extension-helpers/default.nix b/pkgs/development/python-modules/extension-helpers/default.nix
new file mode 100644
index 0000000000000..d8429d0869eee
--- /dev/null
+++ b/pkgs/development/python-modules/extension-helpers/default.nix
@@ -0,0 +1,55 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pip,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  setuptools,
+  tomli,
+}:
+
+buildPythonPackage rec {
+  pname = "extension-helpers";
+  version = "1.1.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "astropy";
+    repo = "extension-helpers";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-pYCSLb6uuQ9ZtMZOQH0DxLlfgFv3tgH+AL35IN71cNI=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [ setuptools ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pip
+  ];
+
+  pythonImportsCheck = [ "extension_helpers" ];
+
+  pytestFlagsArray = [ "extension_helpers/tests" ];
+
+  disabledTests = [
+    # Test require network access
+    "test_only_pyproject"
+  ];
+
+  meta = with lib; {
+    description = "Helpers to assist with building Python packages with compiled C/Cython extensions";
+    homepage = "https://github.com/astropy/extension-helpers";
+    changelog = "https://github.com/astropy/extension-helpers/blob/${version}/CHANGES.md";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/extract-msg/default.nix b/pkgs/development/python-modules/extract-msg/default.nix
index c687ef3272f7b..9ed39dae6783b 100644
--- a/pkgs/development/python-modules/extract-msg/default.nix
+++ b/pkgs/development/python-modules/extract-msg/default.nix
@@ -8,7 +8,6 @@
   olefile,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
   red-black-tree-mod,
   rtfde,
   setuptools,
@@ -17,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "extract-msg";
-  version = "0.48.5";
+  version = "0.49.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -26,7 +25,7 @@ buildPythonPackage rec {
     owner = "TeamMsgExtractor";
     repo = "msg-extractor";
     rev = "refs/tags/v${version}";
-    hash = "sha256-GBX6VRXXja18azyiJZJ3niKPhAKZxDR8kcFbiC2XgeU=";
+    hash = "sha256-o9kf88IYYpjZDpg1liIaIpxzg0cfFepRx0BdxeLRTz0=";
   };
 
   pythonRelaxDeps = [
@@ -35,7 +34,6 @@ buildPythonPackage rec {
   ];
 
   build-system = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
diff --git a/pkgs/development/python-modules/extractcode/7z.nix b/pkgs/development/python-modules/extractcode/7z.nix
index 89a0bd110d4b1..bc1ae9e07ab99 100644
--- a/pkgs/development/python-modules/extractcode/7z.nix
+++ b/pkgs/development/python-modules/extractcode/7z.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, plugincode
-, p7zip
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  plugincode,
+  p7zip,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
 
   sourceRoot = "${src.name}/builtins/extractcode_7z-linux";
 
-  propagatedBuildInputs = [
-    plugincode
-  ];
+  propagatedBuildInputs = [ plugincode ];
 
   preBuild = ''
     pushd src/extractcode_7z/bin
@@ -35,14 +34,15 @@ buildPythonPackage rec {
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "extractcode_7z"
-  ];
+  pythonImportsCheck = [ "extractcode_7z" ];
 
   meta = with lib; {
-    description = "A ScanCode Toolkit plugin to provide pre-built binary libraries and utilities and their locations";
+    description = "ScanCode Toolkit plugin to provide pre-built binary libraries and utilities and their locations";
     homepage = "https://github.com/nexB/scancode-plugins/tree/main/builtins/extractcode_7z-linux";
-    license = with licenses; [ asl20 lgpl21 ];
+    license = with licenses; [
+      asl20
+      lgpl21
+    ];
     maintainers = [ ];
     platforms = platforms.linux;
   };
diff --git a/pkgs/development/python-modules/extractcode/default.nix b/pkgs/development/python-modules/extractcode/default.nix
index 55027f8813c14..350ff622f6c25 100644
--- a/pkgs/development/python-modules/extractcode/default.nix
+++ b/pkgs/development/python-modules/extractcode/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, extractcode-7z
-, extractcode-libarchive
-, fetchPypi
-, patch
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
-, six
-, typecode
+{
+  lib,
+  buildPythonPackage,
+  extractcode-7z,
+  extractcode-libarchive,
+  fetchPypi,
+  patch,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  six,
+  typecode,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
 
   dontConfigure = true;
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     typecode
@@ -70,9 +69,7 @@ buildPythonPackage rec {
     "test_patch_info_patch_patches_misc_linux_st710x_patches_motorola_rootdisk_c_patch"
   ];
 
-  pythonImportsCheck = [
-    "extractcode"
-  ];
+  pythonImportsCheck = [ "extractcode" ];
 
   meta = with lib; {
     description = "Universal archive extractor using z7zip, libarchive, other libraries and the Python standard library";
diff --git a/pkgs/development/python-modules/extractcode/libarchive.nix b/pkgs/development/python-modules/extractcode/libarchive.nix
index 0031c7a279413..2168fc0f3b7a5 100644
--- a/pkgs/development/python-modules/extractcode/libarchive.nix
+++ b/pkgs/development/python-modules/extractcode/libarchive.nix
@@ -1,15 +1,16 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, libarchive
-, libb2
-, bzip2
-, expat
-, lz4
-, xz
-, zlib
-, zstd
-, plugincode
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  libarchive,
+  libb2,
+  bzip2,
+  expat,
+  lz4,
+  xz,
+  zlib,
+  zstd,
+  plugincode,
 }:
 
 buildPythonPackage rec {
@@ -41,21 +42,20 @@ buildPythonPackage rec {
     popd
   '';
 
-  propagatedBuildInputs = [
-    plugincode
-  ];
+  propagatedBuildInputs = [ plugincode ];
 
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "extractcode_libarchive"
-  ];
+  pythonImportsCheck = [ "extractcode_libarchive" ];
 
   meta = with lib; {
-    description = "A ScanCode Toolkit plugin to provide pre-built binary libraries and utilities and their locations";
+    description = "ScanCode Toolkit plugin to provide pre-built binary libraries and utilities and their locations";
     homepage = "https://github.com/nexB/scancode-plugins/tree/main/builtins/extractcode_libarchive-linux";
-    license = with licenses; [ asl20 bsd2 ];
+    license = with licenses; [
+      asl20
+      bsd2
+    ];
     maintainers = [ ];
     platforms = platforms.linux;
   };
diff --git a/pkgs/development/python-modules/extras/default.nix b/pkgs/development/python-modules/extras/default.nix
index db076ea95d9cf..d73a0c050ea71 100644
--- a/pkgs/development/python-modules/extras/default.nix
+++ b/pkgs/development/python-modules/extras/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/extruct/default.nix b/pkgs/development/python-modules/extruct/default.nix
index 0673643de0db5..bc4c50ef292b8 100644
--- a/pkgs/development/python-modules/extruct/default.nix
+++ b/pkgs/development/python-modules/extruct/default.nix
@@ -1,24 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, html-text
-, jstyleson
-, lxml
-, mf2py
-, mock
-, pyrdfa3
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, rdflib
-, setuptools
-, six
-, w3lib
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  html-text,
+  jstyleson,
+  lxml,
+  mf2py,
+  mock,
+  pyrdfa3,
+  pytestCheckHook,
+  pythonOlder,
+  rdflib,
+  setuptools,
+  six,
+  w3lib,
 }:
 
 buildPythonPackage rec {
   pname = "extruct";
-  version = "0.16.0";
+  version = "0.17.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -27,12 +27,10 @@ buildPythonPackage rec {
     owner = "scrapinghub";
     repo = "extruct";
     rev = "refs/tags/v${version}";
-    hash = "sha256-6lAb17EoR0FKyIOb9hk1jcpmPtZ7vClfuCrDZ83XBeg=";
+    hash = "sha256-CfhIqbhrZkJ232grhHxrmj4H1/Bq33ZXe8kovSOWSK0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     html-text
@@ -50,9 +48,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "extruct"
-  ];
+  pythonImportsCheck = [ "extruct" ];
 
   disabledTests = [
     # AssertionError: Lists differ
diff --git a/pkgs/development/python-modules/eyed3/default.nix b/pkgs/development/python-modules/eyed3/default.nix
index 46678654f25e4..7efaaa64937f0 100644
--- a/pkgs/development/python-modules/eyed3/default.nix
+++ b/pkgs/development/python-modules/eyed3/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, isPyPy
-, six
-, filetype
-, deprecation
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  six,
+  filetype,
+  deprecation,
 }:
 
 buildPythonPackage rec {
   version = "0.9.7";
-  pname    = "eyeD3";
+  pname = "eyeD3";
   disabled = isPyPy;
 
   src = fetchPypi {
@@ -29,12 +29,12 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A Python module and command line program for processing ID3 tags";
+    description = "Python module and command line program for processing ID3 tags";
     mainProgram = "eyeD3";
-    homepage    = "https://eyed3.nicfit.net/";
-    license     = licenses.gpl2;
+    homepage = "https://eyed3.nicfit.net/";
+    license = licenses.gpl2;
     maintainers = with maintainers; [ lovek323 ];
-    platforms   = platforms.unix;
+    platforms = platforms.unix;
     longDescription = ''
       eyeD3 is a Python module and command line program for processing ID3
       tags. Information about mp3 files (i.e bit rate, sample frequency, play
diff --git a/pkgs/development/python-modules/ezdxf/default.nix b/pkgs/development/python-modules/ezdxf/default.nix
index 3619db37b8129..74e0519107773 100644
--- a/pkgs/development/python-modules/ezdxf/default.nix
+++ b/pkgs/development/python-modules/ezdxf/default.nix
@@ -1,16 +1,27 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pyparsing
-, typing-extensions
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pyparsing,
+  typing-extensions,
+  pytestCheckHook,
+  setuptools,
+  cython,
+  numpy,
+  fonttools,
+  pillow,
+  pyside6,
+  matplotlib,
+  pymupdf,
+  pyqt5,
 }:
 
 buildPythonPackage rec {
-  version = "0.18.1";
+  version = "1.3.2";
   pname = "ezdxf";
-  format = "setuptools";
+
+  pyproject = true;
 
   disabled = pythonOlder "3.5";
 
@@ -18,30 +29,40 @@ buildPythonPackage rec {
     owner = "mozman";
     repo = "ezdxf";
     rev = "refs/tags/v${version}";
-    hash = "sha256-x1p9dWrbDtDreXdBuzOA4Za+ZC40y4xdEU7MGb9uUec=";
+    hash = "sha256-BzdLl2GjLh2ABJzJ6bhdbic9jlSABIVR3XGrYiLJHa0=";
   };
 
-  propagatedBuildInputs = [
+  dependencies = [
     pyparsing
     typing-extensions
+    numpy
+    fonttools
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  optional-dependencies = {
+    draw = [
+      pyside6
+      matplotlib
+      pymupdf
+      pillow
+    ];
+    draw5 = [
+      pyqt5
+      matplotlib
+      pymupdf
+      pillow
+    ];
+  };
 
-  disabledTests = [
-    # requires geomdl dependency
-    "TestNurbsPythonCorrectness"
-    "test_rational_spline_curve_points_by_nurbs_python"
-    "test_rational_spline_derivatives_by_nurbs_python"
-    "test_from_nurbs_python_curve_to_ezdxf_bspline"
-    "test_from_ezdxf_bspline_to_nurbs_python_curve_non_rational"
-    "test_from_ezdxf_bspline_to_nurbs_python_curve_rational"
-    # AssertionError: assert 44.99999999999999 == 45
-    "test_dimension_transform_interface"
+  build-system = [
+    setuptools
+    cython
   ];
 
+  checkInputs = [ pillow ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
   pythonImportsCheck = [
     "ezdxf"
     "ezdxf.addons"
diff --git a/pkgs/development/python-modules/ezyrb/default.nix b/pkgs/development/python-modules/ezyrb/default.nix
index ee9b16acdbe11..3ed46178f1e87 100644
--- a/pkgs/development/python-modules/ezyrb/default.nix
+++ b/pkgs/development/python-modules/ezyrb/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, future
-, numpy
-, scipy
-, matplotlib
-, scikit-learn
-, torch
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  future,
+  numpy,
+  scipy,
+  matplotlib,
+  scikit-learn,
+  torch,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -35,13 +35,9 @@ buildPythonPackage rec {
     torch
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ezyrb"
-  ];
+  pythonImportsCheck = [ "ezyrb" ];
 
   disabledTestPaths = [
     # Exclude long tests
diff --git a/pkgs/development/python-modules/f5-icontrol-rest/default.nix b/pkgs/development/python-modules/f5-icontrol-rest/default.nix
index f5dde3911546d..81390efdbc8ae 100644
--- a/pkgs/development/python-modules/f5-icontrol-rest/default.nix
+++ b/pkgs/development/python-modules/f5-icontrol-rest/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
   # needs to be updated to newer pytest version and requires physical device
   doCheck = false;
 
-  pytestFlags = [
-    "icontrol/test"
-  ];
+  pytestFlags = [ "icontrol/test" ];
 
   pythonImportsCheck = [ "icontrol" ];
 
diff --git a/pkgs/development/python-modules/f5-sdk/default.nix b/pkgs/development/python-modules/f5-sdk/default.nix
index b73afcec0fab3..304f1daabbfbd 100644
--- a/pkgs/development/python-modules/f5-sdk/default.nix
+++ b/pkgs/development/python-modules/f5-sdk/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, f5-icontrol-rest
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  f5-icontrol-rest,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -12,7 +13,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-IokMj9mCMsFMVFYO4CpZUB2i32cOamhS5u2mNkNjljo=";
+    hash = "sha256-IokMj9mCMsFMVFYO4CpZUB2i32cOamhS5u2mNkNjljo=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/f90nml/default.nix b/pkgs/development/python-modules/f90nml/default.nix
index ad2d1c8c604d0..0a0f735e901ac 100644
--- a/pkgs/development/python-modules/f90nml/default.nix
+++ b/pkgs/development/python-modules/f90nml/default.nix
@@ -1,9 +1,15 @@
-{ lib, buildPythonPackage, fetchFromGitHub, python, setuptools-scm }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  unittestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "f90nml";
   version = "1.4.1";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "marshallward";
@@ -12,19 +18,17 @@ buildPythonPackage rec {
     hash = "sha256-nSpVBAS2VvXIQwYK/qVVzEc13bicAQ+ScXpO4Rn2O+8=";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
+  build-system = [ setuptools-scm ];
 
-  checkPhase = ''
-    ${python.interpreter} setup.py test
-  '';
+  nativeCheckInputs = [ unittestCheckHook ];
 
   pythonImportsCheck = [ "f90nml" ];
 
-  meta = with lib; {
+  meta = {
     description = "Python module for working with Fortran Namelists";
     mainProgram = "f90nml";
     homepage = "https://f90nml.readthedocs.io";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ loicreynier ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ loicreynier ];
   };
 }
diff --git a/pkgs/development/python-modules/faadelays/default.nix b/pkgs/development/python-modules/faadelays/default.nix
index e19b3192e3503..a0d13daecdca5 100644
--- a/pkgs/development/python-modules/faadelays/default.nix
+++ b/pkgs/development/python-modules/faadelays/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,20 +19,14 @@ buildPythonPackage rec {
     hash = "sha256-ngMFd+BE3hKeaeGEX4xHpzDIrtGFDsSwxBbrc4ZMFas=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "faadelays"
-  ];
+  pythonImportsCheck = [ "faadelays" ];
 
   meta = with lib; {
     changelog = "https://github.com/ntilley905/faadelays/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/fabric/default.nix b/pkgs/development/python-modules/fabric/default.nix
index 3494c89517122..001abb7883a86 100644
--- a/pkgs/development/python-modules/fabric/default.nix
+++ b/pkgs/development/python-modules/fabric/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cryptography
-, decorator
-, invoke
-, mock
-, paramiko
-, pytestCheckHook
-, pytest-relaxed
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cryptography,
+  decorator,
+  invoke,
+  mock,
+  paramiko,
+  pytestCheckHook,
+  pytest-relaxed,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,18 @@ buildPythonPackage rec {
         --replace ', "pathlib2"' ' '
   '';
 
-  propagatedBuildInputs = [ invoke paramiko cryptography decorator ];
-
-  nativeCheckInputs = [ pytestCheckHook pytest-relaxed mock ];
+  propagatedBuildInputs = [
+    invoke
+    paramiko
+    cryptography
+    decorator
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-relaxed
+    mock
+  ];
 
   # ==================================== ERRORS ====================================
   # ________________________ ERROR collecting test session _________________________
diff --git a/pkgs/development/python-modules/fabulous/default.nix b/pkgs/development/python-modules/fabulous/default.nix
index eba74ab121bee..d94227989c490 100644
--- a/pkgs/development/python-modules/fabulous/default.nix
+++ b/pkgs/development/python-modules/fabulous/default.nix
@@ -1,14 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pillow
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  pillow,
+  setuptools,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "fabulous";
   version = "0.4.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "jart";
@@ -19,11 +22,16 @@ buildPythonPackage rec {
 
   patches = [
     ./relative_import.patch
+    # https://github.com/jart/fabulous/pull/22
+    (fetchpatch2 {
+      url = "https://github.com/jart/fabulous/commit/5779f2dfbc88fd81b5b5865247913d4775e67959.patch?full_index=1";
+      hash = "sha256-miWFt4vDpwWhSUgnWDjWUXoibijcDa1c1dDOSkfWoUg=";
+    })
   ];
 
-  propagatedBuildInputs = [
-    pillow
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ pillow ];
 
   checkPhase = ''
     for i in tests/*.py; do
@@ -31,10 +39,10 @@ buildPythonPackage rec {
     done
   '';
 
-  meta = with lib; {
+  meta = {
     description = "Make the output of terminal applications look fabulous";
     homepage = "https://jart.github.io/fabulous";
-    license = licenses.asl20;
-    maintainers = [ maintainers.symphorien ];
+    license = lib.licenses.asl20;
+    maintainers = [ lib.maintainers.symphorien ];
   };
 }
diff --git a/pkgs/development/python-modules/face-recognition/default.nix b/pkgs/development/python-modules/face-recognition/default.nix
index ef1d57e3eb67a..6385b51b936c7 100644
--- a/pkgs/development/python-modules/face-recognition/default.nix
+++ b/pkgs/development/python-modules/face-recognition/default.nix
@@ -1,18 +1,19 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
 
   # propagates
-, click
-, dlib
-, face-recognition-models
-, numpy
-, pillow
+  click,
+  dlib,
+  face-recognition-models,
+  numpy,
+  pillow,
 
   # tests
-, pytestCheckHook
-, config
-, cudaSupport ? config.cudaSupport
+  pytestCheckHook,
+  config,
+  cudaSupport ? config.cudaSupport,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     pillow
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Disables tests when running with cuda due to https://github.com/NixOS/nixpkgs/issues/225912
   doCheck = !config.cudaSupport;
@@ -44,7 +43,7 @@ buildPythonPackage rec {
   meta = with lib; {
     license = licenses.mit;
     homepage = "https://github.com/ageitgey/face_recognition";
-    maintainers = with maintainers; [ ];
-    description = "The world's simplest facial recognition api for Python and the command line";
+    maintainers = [ ];
+    description = "World's simplest facial recognition api for Python and the command line";
   };
 }
diff --git a/pkgs/development/python-modules/face-recognition/models.nix b/pkgs/development/python-modules/face-recognition/models.nix
index 9df1ac0605899..cc7dbe6481ada 100644
--- a/pkgs/development/python-modules/face-recognition/models.nix
+++ b/pkgs/development/python-modules/face-recognition/models.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
-, setuptools
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -15,21 +16,17 @@ buildPythonPackage rec {
     hash = "sha256-t5vSAKiMh8mp1EbJkK5xxaYm0fNzAXTm1XAVf/HYls8=";
   };
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  propagatedBuildInputs = [ setuptools ];
 
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "face_recognition_models"
-  ];
+  pythonImportsCheck = [ "face_recognition_models" ];
 
   meta = with lib; {
     homepage = "https://github.com/ageitgey/face_recognition_models";
     license = licenses.cc0;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     description = "Trained models for the face_recognition python library";
   };
 }
diff --git a/pkgs/development/python-modules/face/default.nix b/pkgs/development/python-modules/face/default.nix
index cd024c1fb22b2..731479b3bf4b1 100644
--- a/pkgs/development/python-modules/face/default.nix
+++ b/pkgs/development/python-modules/face/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, boltons
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  boltons,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,17 +19,11 @@ buildPythonPackage rec {
     hash = "sha256-1daS+QvI9Zh7Y25H42OEubvaSZqvCneqCwu+g0x2kj0=";
   };
 
-  propagatedBuildInputs = [
-    boltons
-  ];
+  propagatedBuildInputs = [ boltons ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "face"
-  ];
+  pythonImportsCheck = [ "face" ];
 
   disabledTests = [
     # Assertion error as we take the Python release into account
@@ -36,7 +31,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A command-line interface parser and framework";
+    description = "Command-line interface parser and framework";
     longDescription = ''
       A command-line interface parser and framework, friendly for
       users, full-featured for developers.
diff --git a/pkgs/development/python-modules/facebook-sdk/default.nix b/pkgs/development/python-modules/facebook-sdk/default.nix
index 2789829da57a4..7ef73d1a1fa6d 100644
--- a/pkgs/development/python-modules/facebook-sdk/default.nix
+++ b/pkgs/development/python-modules/facebook-sdk/default.nix
@@ -1,8 +1,9 @@
-{ pkgs
-, buildPythonPackage
-, fetchPypi
-, requests
-, python
+{
+  pkgs,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -27,7 +28,7 @@ buildPythonPackage rec {
   meta = with pkgs.lib; {
     description = "Client library that supports the Facebook Graph API and the official Facebook JavaScript SDK";
     homepage = "https://github.com/pythonforfacebook/facebook-sdk";
-    license = licenses.asl20 ;
+    license = licenses.asl20;
     maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/facedancer/default.nix b/pkgs/development/python-modules/facedancer/default.nix
index 1db882a86bb65..516eb08e4f46c 100644
--- a/pkgs/development/python-modules/facedancer/default.nix
+++ b/pkgs/development/python-modules/facedancer/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k, pyusb, pyserial }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  pyusb,
+  pyserial,
+}:
 
 buildPythonPackage rec {
   pname = "facedancer";
@@ -12,7 +19,10 @@ buildPythonPackage rec {
 
   disabled = !isPy3k;
 
-  propagatedBuildInputs = [ pyusb pyserial ];
+  propagatedBuildInputs = [
+    pyusb
+    pyserial
+  ];
 
   preBuild = ''
     echo "$version" > VERSION
diff --git a/pkgs/development/python-modules/facenet-pytorch/default.nix b/pkgs/development/python-modules/facenet-pytorch/default.nix
index 153408761c0af..191818bc6b3d1 100644
--- a/pkgs/development/python-modules/facenet-pytorch/default.nix
+++ b/pkgs/development/python-modules/facenet-pytorch/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, fetchPypi
-, pillow
-, torchvision
-, lib
+{
+  buildPythonPackage,
+  fetchPypi,
+  pillow,
+  torchvision,
+  lib,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,12 @@ buildPythonPackage rec {
 
   doCheck = false; # pypi version doesn't ship with tests
 
-  pythonImportsCheck = ["facenet_pytorch"];
+  pythonImportsCheck = [ "facenet_pytorch" ];
 
-  propagatedBuildInputs = [ pillow torchvision ];
+  propagatedBuildInputs = [
+    pillow
+    torchvision
+  ];
 
   meta = {
     description = "Pretrained Pytorch face detection (MTCNN) and facial recognition (InceptionResnet) models";
diff --git a/pkgs/development/python-modules/factory-boy/default.nix b/pkgs/development/python-modules/factory-boy/default.nix
index 2269445282bdf..8b93fec4f8d98 100644
--- a/pkgs/development/python-modules/factory-boy/default.nix
+++ b/pkgs/development/python-modules/factory-boy/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, django
-, faker
-, fetchPypi
-, flask
-, flask-sqlalchemy
-, mongoengine
-, pytestCheckHook
-, pythonOlder
-, sqlalchemy
-, sqlalchemy-utils
+{
+  lib,
+  buildPythonPackage,
+  django,
+  faker,
+  fetchPypi,
+  flask,
+  flask-sqlalchemy,
+  mongoengine,
+  pytestCheckHook,
+  pythonOlder,
+  sqlalchemy,
+  sqlalchemy-utils,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
       --replace '"3.2.1.dev0")' '"${version}")'
   '';
 
-  propagatedBuildInputs = [
-    faker
-  ];
+  propagatedBuildInputs = [ faker ];
 
   nativeCheckInputs = [
     django
@@ -45,18 +44,14 @@ buildPythonPackage rec {
   ];
 
   # Checks for MongoDB requires an a running DB
-  disabledTests = [
-    "MongoEngineTestCase"
-  ];
+  disabledTests = [ "MongoEngineTestCase" ];
 
   disabledTestPaths = [
     # incompatible with latest flask-sqlalchemy
     "examples/flask_alchemy/test_demoapp.py"
   ];
 
-  pythonImportsCheck = [
-    "factory"
-  ];
+  pythonImportsCheck = [ "factory" ];
 
   meta = with lib; {
     description = "Python package to create factories for complex objects";
diff --git a/pkgs/development/python-modules/fairscale/default.nix b/pkgs/development/python-modules/fairscale/default.nix
index 3041ac51de6aa..4472d6e24a4fd 100644
--- a/pkgs/development/python-modules/fairscale/default.nix
+++ b/pkgs/development/python-modules/fairscale/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-# build inputs
-, torch
-, numpy
-, ninja
-# check inputs
-, pytestCheckHook
-, parameterized
-, pytest-cov
-, pytest-timeout
-, remote-pdb
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  # build inputs
+  torch,
+  numpy,
+  ninja,
+  # check inputs
+  pytestCheckHook,
+  parameterized,
+  pytest-cov,
+  pytest-timeout,
+  remote-pdb,
 }:
 let
   pname = "fairscale";
@@ -58,16 +59,18 @@ buildPythonPackage {
   # Some tests try to build distributed models, which doesn't work in the sandbox.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "fairscale"
-  ];
+  pythonImportsCheck = [ "fairscale" ];
 
   meta = with lib; {
     description = "PyTorch extensions for high performance and large scale training";
     mainProgram = "wgit";
     homepage = "https://github.com/facebookresearch/fairscale";
     changelog = "https://github.com/facebookresearch/fairscale/releases/tag/v${version}";
-    license = with licenses; [ mit asl20 bsd3 ];
+    license = with licenses; [
+      mit
+      asl20
+      bsd3
+    ];
     maintainers = with maintainers; [ happysalada ];
   };
 }
diff --git a/pkgs/development/python-modules/fairseq/default.nix b/pkgs/development/python-modules/fairseq/default.nix
index e784f8ec0b0d4..5cea23e2bda6a 100644
--- a/pkgs/development/python-modules/fairseq/default.nix
+++ b/pkgs/development/python-modules/fairseq/default.nix
@@ -1,32 +1,32 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, fetchpatch
-
-# Native build inputs
-, cython
-, pythonRelaxDepsHook
-, which
-
-# Propagated build inputs
-, cffi
-, hydra-core
-, omegaconf
-, sacrebleu
-, numpy
-, regex
-, torch
-, tqdm
-, bitarray
-, torchaudio
-, scikit-learn
-, packaging
-
-# Check inputs
-, expecttest
-, hypothesis
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  fetchpatch,
+
+  # Native build inputs
+  cython,
+  which,
+
+  # Propagated build inputs
+  cffi,
+  hydra-core,
+  omegaconf,
+  sacrebleu,
+  numpy,
+  regex,
+  torch,
+  tqdm,
+  bitarray,
+  torchaudio,
+  scikit-learn,
+  packaging,
+
+  # Check inputs
+  expecttest,
+  hypothesis,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -52,7 +52,6 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     cython
-    pythonRelaxDepsHook
     which
   ];
 
@@ -89,9 +88,7 @@ buildPythonPackage rec {
     cd tests
   '';
 
-  pytestFlagsArray = [
-    "--import-mode append"
-  ];
+  pytestFlagsArray = [ "--import-mode append" ];
 
   disabledTests = [
     # this test requires xformers
@@ -120,7 +117,7 @@ buildPythonPackage rec {
     homepage = "https://github.com/pytorch/fairseq";
     license = licenses.mit;
     platforms = platforms.linux;
-    hydraPlatforms = [];
+    hydraPlatforms = [ ];
     maintainers = with maintainers; [ happysalada ];
   };
 }
diff --git a/pkgs/development/python-modules/faiss/default.nix b/pkgs/development/python-modules/faiss/default.nix
new file mode 100644
index 0000000000000..f6eee8cc5e329
--- /dev/null
+++ b/pkgs/development/python-modules/faiss/default.nix
@@ -0,0 +1,55 @@
+{
+  lib,
+  buildPythonPackage,
+  callPackage,
+  faiss-build,
+  numpy,
+  packaging,
+  setuptools,
+  pip,
+  wheel,
+}:
+
+buildPythonPackage {
+  inherit (faiss-build) pname version;
+  pyproject = true;
+
+  src = "${lib.getOutput "dist" faiss-build}";
+
+  postPatch = ''
+    mkdir dist
+    mv *.whl dist/
+  '';
+
+  build-system = [
+    setuptools
+    pip
+    wheel
+  ];
+
+  dependencies = [
+    numpy
+    packaging
+  ];
+
+  # E.g. cuda libraries; needed because reference scanning
+  # can't see inside the wheels
+  inherit (faiss-build) buildInputs;
+
+  dontBuild = true;
+
+  pythonImportsCheck = [ "faiss" ];
+
+  passthru = {
+    inherit (faiss-build) cudaSupport cudaPackages pythonSupport;
+
+    tests = {
+      pytest = callPackage ./pytest.nix { inherit faiss-build; };
+    };
+  };
+
+  meta = lib.pipe (faiss-build.meta or { }) [
+    (lib.flip builtins.removeAttrs [ "mainProgram" ])
+    (m: m // { description = "Bindings for faiss, the similarity search library"; })
+  ];
+}
diff --git a/pkgs/development/python-modules/faiss/pytest.nix b/pkgs/development/python-modules/faiss/pytest.nix
new file mode 100644
index 0000000000000..b90ee9c244c67
--- /dev/null
+++ b/pkgs/development/python-modules/faiss/pytest.nix
@@ -0,0 +1,40 @@
+{
+  lib,
+  buildPythonPackage,
+  faiss,
+  faiss-build,
+  scipy,
+  pytestCheckHook,
+}:
+
+assert faiss.pythonSupport;
+
+buildPythonPackage {
+  pname = "faiss-pytest-suite";
+  inherit (faiss) version;
+
+  format = "other";
+
+  src = "${faiss-build.src}/tests";
+
+  dontBuild = true;
+  dontInstall = true;
+
+  # Tests that need GPUs and would fail in the sandbox
+  disabledTestPaths = lib.optionals faiss.cudaSupport [ "test_contrib.py" ];
+
+  disabledTests = [
+    # https://github.com/facebookresearch/faiss/issues/2836
+    "test_update_codebooks_with_double"
+  ];
+
+  nativeCheckInputs = [
+    faiss
+    pytestCheckHook
+    scipy
+  ];
+
+  meta = faiss.meta // {
+    description = "Faiss test suite";
+  };
+}
diff --git a/pkgs/development/python-modules/fake-useragent/default.nix b/pkgs/development/python-modules/fake-useragent/default.nix
index 7e6d5c76cfb25..138c7ab0980d3 100644
--- a/pkgs/development/python-modules/fake-useragent/default.nix
+++ b/pkgs/development/python-modules/fake-useragent/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, importlib-metadata
-, importlib-resources
-, setuptools
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  importlib-metadata,
+  importlib-resources,
+  setuptools,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -26,24 +27,16 @@ buildPythonPackage rec {
     sed -i '/addopts/d' pytest.ini
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-resources
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  propagatedBuildInputs =
+    [ ]
+    ++ lib.optionals (pythonOlder "3.10") [ importlib-resources ]
+    ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "fake_useragent"
-  ];
+  pythonImportsCheck = [ "fake_useragent" ];
 
   meta = with lib; {
     description = "Up to date simple useragent faker with real world database";
diff --git a/pkgs/development/python-modules/faker/default.nix b/pkgs/development/python-modules/faker/default.nix
index ec667330a62bc..babcc2423d358 100644
--- a/pkgs/development/python-modules/faker/default.nix
+++ b/pkgs/development/python-modules/faker/default.nix
@@ -1,30 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, freezegun
-, pillow
-, pytestCheckHook
-, python-dateutil
-, setuptools
-, text-unidecode
-, ukpostcodeparser
-, validators
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  freezegun,
+  pillow,
+  pytestCheckHook,
+  python-dateutil,
+  setuptools,
+  text-unidecode,
+  ukpostcodeparser,
+  validators,
 }:
 
 buildPythonPackage rec {
   pname = "faker";
-  version = "24.0.0";
+  version = "25.8.0";
   pyproject = true;
 
   src = fetchPypi {
     pname = "Faker";
     inherit version;
-    hash = "sha256-6m94TEBzDeD3cGfknnjN1ZDvsAvsPTP1d0kiYiBsF/w=";
+    hash = "sha256-vexfL7BX0kTr724O0xj+pNy98yw6GgEHZvxF9daPxo0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     python-dateutil
@@ -40,9 +39,7 @@ buildPythonPackage rec {
   ];
 
   # avoid tests which import random2, an abandoned library
-  pytestFlagsArray = [
-    "--ignore=tests/providers/test_ssn.py"
-  ];
+  pytestFlagsArray = [ "--ignore=tests/providers/test_ssn.py" ];
   pythonImportsCheck = [ "faker" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/fakeredis/default.nix b/pkgs/development/python-modules/fakeredis/default.nix
index 45a2a512d5137..fa62b17548938 100644
--- a/pkgs/development/python-modules/fakeredis/default.nix
+++ b/pkgs/development/python-modules/fakeredis/default.nix
@@ -1,23 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hypothesis
-, jsonpath-ng
-, lupa
-, poetry-core
-, pybloom-live
-, pyprobables
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, redis
-, sortedcontainers
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hypothesis,
+  jsonpath-ng,
+  lupa,
+  poetry-core,
+  pyprobables,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  redis,
+  sortedcontainers,
 }:
 
 buildPythonPackage rec {
   pname = "fakeredis";
-  version = "2.21.3";
+  version = "2.23.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -26,14 +26,12 @@ buildPythonPackage rec {
     owner = "dsoftwareinc";
     repo = "fakeredis-py";
     rev = "refs/tags/v${version}";
-    hash = "sha256-GIg+a8G5S0dmbvMKqS/Vn+wzNM6iNIs3bKPqhecsQt4=";
+    hash = "sha256-gwTOtwBOHl6FNL0ekOq2rewwT/XoQ31+cyxU/OCBOTA=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     redis
     sortedcontainers
   ];
@@ -46,25 +44,18 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    lua = [
-      lupa
-    ];
-    json = [
-      jsonpath-ng
-    ];
-    bf = [
-      pyprobables
-    ];
-    cf = [
-      pyprobables
-    ];
-    probabilistic = [
-      pyprobables
-    ];
+    lua = [ lupa ];
+    json = [ jsonpath-ng ];
+    bf = [ pyprobables ];
+    cf = [ pyprobables ];
+    probabilistic = [ pyprobables ];
   };
 
-  pythonImportsCheck = [
-    "fakeredis"
+  pythonImportsCheck = [ "fakeredis" ];
+
+  disabledTests = [
+    # AssertionError
+    "test_command"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/falcon/default.nix b/pkgs/development/python-modules/falcon/default.nix
index 51f9bfd79a358..cb2ff6942eb24 100644
--- a/pkgs/development/python-modules/falcon/default.nix
+++ b/pkgs/development/python-modules/falcon/default.nix
@@ -1,30 +1,31 @@
-{ lib
-, buildPythonPackage
-, pythonAtLeast
-, pythonOlder
-, isPyPy
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  pythonAtLeast,
+  pythonOlder,
+  isPyPy,
+  fetchFromGitHub,
 
-# build
-, cython
-, setuptools
+  # build
+  cython,
+  setuptools,
 
-# tests
-, aiofiles
-, cbor2
-, httpx
-, msgpack
-, mujson
-, orjson
-, pytest-asyncio
-, pytest7CheckHook
-, pyyaml
-, rapidjson
-, requests
-, testtools
-, ujson
-, uvicorn
-, websockets
+  # tests
+  aiofiles,
+  cbor2,
+  httpx,
+  msgpack,
+  mujson,
+  orjson,
+  pytest-asyncio,
+  pytest7CheckHook,
+  pyyaml,
+  rapidjson,
+  requests,
+  testtools,
+  ujson,
+  uvicorn,
+  websockets,
 }:
 
 buildPythonPackage rec {
@@ -40,11 +41,7 @@ buildPythonPackage rec {
     hash = "sha256-7719gOM8WQVjODwOSo7HpH3HMFFeCGQQYBKktBAevig=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ] ++ lib.optionals (!isPyPy) [
-    cython
-  ];
+  nativeBuildInputs = [ setuptools ] ++ lib.optionals (!isPyPy) [ cython ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -78,27 +75,24 @@ buildPythonPackage rec {
     msgpack
     mujson
     ujson
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    testtools
-  ];
+  ] ++ lib.optionals (pythonOlder "3.10") [ testtools ];
 
-  pytestFlagsArray = [
-    "tests"
-  ];
+  pytestFlagsArray = [ "tests" ];
 
-  disabledTestPaths = [
-    # needs a running server
-    "tests/asgi/test_asgi_servers.py"
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    # ModuleNotFoundError: No module named 'distutils'
-    "tests/asgi/test_cythonized_asgi.py"
-  ];
+  disabledTestPaths =
+    [
+      # needs a running server
+      "tests/asgi/test_asgi_servers.py"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      # ModuleNotFoundError: No module named 'distutils'
+      "tests/asgi/test_cythonized_asgi.py"
+    ];
 
   meta = with lib; {
-    description = "An unladen web framework for building APIs and app backends";
+    description = "Unladen web framework for building APIs and app backends";
     homepage = "https://falconframework.org/";
     license = licenses.asl20;
     maintainers = with maintainers; [ desiderius ];
   };
-
 }
diff --git a/pkgs/development/python-modules/faraday-agent-parameters-types/default.nix b/pkgs/development/python-modules/faraday-agent-parameters-types/default.nix
index b906a22bea572..a9ce3ef4a4513 100644
--- a/pkgs/development/python-modules/faraday-agent-parameters-types/default.nix
+++ b/pkgs/development/python-modules/faraday-agent-parameters-types/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, marshmallow
-, packaging
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  marshmallow,
+  packaging,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "faraday-agent-parameters-types";
-  version = "1.5.1";
+  version = "1.7.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,7 +19,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "faraday_agent_parameters_types";
     inherit version;
-    hash = "sha256-Bh1s0IeUEa4EnGElQn5ruBxFSbcOqsrDqbw1nVjdi5s=";
+    hash = "sha256-ypr5/6mnATFswZPX4aeusH8PoYRa+yVL1gk+pdz7r0w=";
   };
 
   postPatch = ''
@@ -26,18 +27,14 @@ buildPythonPackage rec {
       --replace-warn '"pytest-runner",' ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     marshmallow
     packaging
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [
     "faraday_agent_parameters_types"
@@ -53,7 +50,7 @@ buildPythonPackage rec {
     description = "Collection of Faraday agent parameters types";
     homepage = "https://github.com/infobyte/faraday_agent_parameters_types";
     changelog = "https://github.com/infobyte/faraday_agent_parameters_types/blob/${version}/CHANGELOG.md";
-    license = with licenses; [ gpl3Plus ];
+    license = licenses.gpl3Plus;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/faraday-plugins/default.nix b/pkgs/development/python-modules/faraday-plugins/default.nix
index 6919123258da7..9111890efd0f3 100644
--- a/pkgs/development/python-modules/faraday-plugins/default.nix
+++ b/pkgs/development/python-modules/faraday-plugins/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, click
-, colorama
-, fetchFromGitHub
-, html2text
-, lxml
-, markdown
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, pytz
-, requests
-, setuptools
-, simplejson
-, tabulate
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  click,
+  colorama,
+  fetchFromGitHub,
+  html2text,
+  lxml,
+  markdown,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  pytz,
+  requests,
+  setuptools,
+  simplejson,
+  tabulate,
 }:
 
 buildPythonPackage rec {
   pname = "faraday-plugins";
-  version = "1.17.0";
+  version = "1.19.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -28,19 +29,17 @@ buildPythonPackage rec {
     owner = "infobyte";
     repo = "faraday_plugins";
     rev = "refs/tags/${version}";
-    hash = "sha256-EE61RPantD1u9NNhyPRjoRkBifM3u16b0BC2aQC8UBA=";
+    hash = "sha256-XWPj348kAuA9BF7Y2/hX712eLRfUZ9kH3oL1jb17/K0=";
   };
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace-warn "version=version," "version='${version}',"
+      --replace-fail "version=version," "version='${version}',"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     beautifulsoup4
     click
     colorama
@@ -54,9 +53,7 @@ buildPythonPackage rec {
     tabulate
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # faraday itself is currently not available
@@ -72,16 +69,14 @@ buildPythonPackage rec {
     "test_process_report_tags"
   ];
 
-  pythonImportsCheck = [
-    "faraday_plugins"
-  ];
+  pythonImportsCheck = [ "faraday_plugins" ];
 
   meta = with lib; {
     description = "Security tools report parsers for Faraday";
-    mainProgram = "faraday-plugins";
     homepage = "https://github.com/infobyte/faraday_plugins";
     changelog = "https://github.com/infobyte/faraday_plugins/releases/tag/${version}";
-    license = with licenses; [ gpl3Only ];
+    license = licenses.gpl3Only;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "faraday-plugins";
   };
 }
diff --git a/pkgs/development/python-modules/farama-notifications/default.nix b/pkgs/development/python-modules/farama-notifications/default.nix
index eb449b53c1c91..c04c3a50a584d 100644
--- a/pkgs/development/python-modules/farama-notifications/default.nix
+++ b/pkgs/development/python-modules/farama-notifications/default.nix
@@ -1,8 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/fast-histogram/default.nix b/pkgs/development/python-modules/fast-histogram/default.nix
index d3e4e3eb67207..d0621c1b539ef 100644
--- a/pkgs/development/python-modules/fast-histogram/default.nix
+++ b/pkgs/development/python-modules/fast-histogram/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, pytestCheckHook
-, fetchFromGitHub
-, python
-, pythonOlder
-, setuptools
-, setuptools-scm
-, numpy
-, wheel
-, hypothesis
-, pytest-cov
+{
+  lib,
+  buildPythonPackage,
+  pytestCheckHook,
+  fetchFromGitHub,
+  python,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  numpy,
+  wheel,
+  hypothesis,
+  pytest-cov,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/fastai/default.nix b/pkgs/development/python-modules/fastai/default.nix
index ff8ac701cf274..620b992fb2025 100644
--- a/pkgs/development/python-modules/fastai/default.nix
+++ b/pkgs/development/python-modules/fastai/default.nix
@@ -1,31 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fastprogress
-, fastcore
-, fastdownload
-, torch
-, torchvision
-, matplotlib
-, pillow
-, scikit-learn
-, scipy
-, spacy
-, pandas
-, requests
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fastprogress,
+  fastcore,
+  fastdownload,
+  torchvision,
+  matplotlib,
+  pillow,
+  scikit-learn,
+  scipy,
+  spacy,
+  pandas,
+  requests,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "fastai";
-  version = "2.7.14";
+  version = "2.7.15";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-QiVyYojI/xs7wYl3umhky0j+xzptNS7Fv+fLMRy/4jc=";
+    hash = "sha256-8swg/RjN9exzjMVtKdVN51iH1IrRX501z1DDjTqFaSM=";
   };
 
   propagatedBuildInputs = [
@@ -47,7 +47,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/fastai/fastai";
-    description = "The fastai deep learning library";
+    description = "Fastai deep learning library";
     mainProgram = "configure_accelerate";
     changelog = "https://github.com/fastai/fastai/blob/${version}/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/fastapi-cli/default.nix b/pkgs/development/python-modules/fastapi-cli/default.nix
new file mode 100644
index 0000000000000..bfbfa0509a21a
--- /dev/null
+++ b/pkgs/development/python-modules/fastapi-cli/default.nix
@@ -0,0 +1,64 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pdm-backend
+, typer
+, fastapi
+, uvicorn
+
+# checks
+, pytestCheckHook
+, rich
+}:
+
+let self = buildPythonPackage rec {
+  pname = "fastapi-cli";
+  version = "0.0.4";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "tiangolo";
+    repo = "fastapi-cli";
+    rev = version;
+    hash = "sha256-eWvZn7ZeLnQZAvGOzY77o6oO5y+QV2cx+peBov9YpJE=";
+  };
+
+  build-system = [ pdm-backend ];
+
+  dependencies = [ typer ];
+
+  optional-dependencies = {
+    standard = [
+      fastapi
+      uvicorn
+    ];
+  };
+
+  doCheck = false;
+
+  passthru.tests.pytest = self.overridePythonAttrs { doCheck = true; };
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    rich
+  ] ++ optional-dependencies.standard;
+
+  # coverage
+  disabledTests = [ "test_script" ];
+
+  pythonImportsCheck = [ "fastapi_cli" ];
+
+  meta = with lib; {
+    description = "Run and manage FastAPI apps from the command line with FastAPI CLI";
+    homepage = "https://github.com/tiangolo/fastapi-cli";
+    changelog = "https://github.com/tiangolo/fastapi-cli/releases/tag/${version}";
+    mainProgram = "fastapi";
+    license = licenses.mit;
+    maintainers = [ ];
+    # This package provides a `fastapi`-executable that is in conflict with the one from
+    # python3Packages.fastapi. Because this package is primarily used for the purpose of
+    # implementing the CLI for python3Packages.fastapi, we reduce the executable's priority
+    priority = 10;
+  };
+};
+in self
diff --git a/pkgs/development/python-modules/fastapi-mail/default.nix b/pkgs/development/python-modules/fastapi-mail/default.nix
index 258425e35f852..16a3e0c676661 100644
--- a/pkgs/development/python-modules/fastapi-mail/default.nix
+++ b/pkgs/development/python-modules/fastapi-mail/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, aioredis
-, aiosmtplib
-, blinker
-, buildPythonPackage
-, email-validator
-, fakeredis
-, fastapi
-, fetchFromGitHub
-, httpx
-, jinja2
-, poetry-core
-, pydantic
-, pydantic-settings
-, pytest-asyncio
-, pytestCheckHook
-, python-multipart
-, pythonOlder
+{
+  lib,
+  aioredis,
+  aiosmtplib,
+  blinker,
+  buildPythonPackage,
+  email-validator,
+  fakeredis,
+  fastapi,
+  fetchFromGitHub,
+  httpx,
+  jinja2,
+  poetry-core,
+  pydantic,
+  pydantic-settings,
+  pytest-asyncio,
+  pytestCheckHook,
+  python-multipart,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -32,18 +33,19 @@ buildPythonPackage rec {
     hash = "sha256-2iTZqZIxlt1GKhElasTcnys18UbNNDwHoZziHBOIGBo=";
   };
 
+  pythonRelaxDeps = [
+    "aiosmtplib"
+    "pydantic"
+  ];
+
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace 'version = "1.2.5"' 'version = "${version}"' \
-      --replace 'aiosmtplib = "^2.0"' 'aiosmtplib = "*"' \
-      --replace 'pydantic = "^2.0"' 'pydantic = "*"' \
+      --replace-fail 'version = "1.2.5"' 'version = "${version}"'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aioredis
     aiosmtplib
     blinker
@@ -68,9 +70,7 @@ buildPythonPackage rec {
     "test_redis_checker"
   ];
 
-  pythonImportsCheck = [
-    "fastapi_mail"
-  ];
+  pythonImportsCheck = [ "fastapi_mail" ];
 
   meta = with lib; {
     description = "Module for sending emails and attachments";
diff --git a/pkgs/development/python-modules/fastapi-sso/default.nix b/pkgs/development/python-modules/fastapi-sso/default.nix
index fa4342cf170b6..c5ca2e98e2b0d 100644
--- a/pkgs/development/python-modules/fastapi-sso/default.nix
+++ b/pkgs/development/python-modules/fastapi-sso/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "fastapi-sso";
-  version = "0.14.2";
+  version = "0.15.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "tomasvotava";
     repo = "fastapi-sso";
     rev = "refs/tags/${version}";
-    hash = "sha256-mkaQY+fIc4zw+ESe3ybxAMgMQOOpjCIJDv+dDj76oAg=";
+    hash = "sha256-jSUogf2Dup8k4BOQAXJwg8R96Blgieg82/X/n1TLnL0=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/fastapi/default.nix b/pkgs/development/python-modules/fastapi/default.nix
index 67193638dd5a6..81e51b02150f1 100644
--- a/pkgs/development/python-modules/fastapi/default.nix
+++ b/pkgs/development/python-modules/fastapi/default.nix
@@ -1,44 +1,45 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pythonRelaxDepsHook
-
-# build-system
-, hatchling
-
-# dependencies
-, starlette
-, pydantic
-, typing-extensions
-
-# tests
-, dirty-equals
-, flask
-, passlib
-, pytest-asyncio
-, pytestCheckHook
-, python-jose
-, sqlalchemy
-, trio
-
-# optional-dependencies
-, httpx
-, jinja2
-, python-multipart
-, itsdangerous
-, pyyaml
-, ujson
-, orjson
-, email-validator
-, uvicorn
-, pydantic-settings
-, pydantic-extra-types
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  pdm-backend,
+
+  # dependencies
+  fastapi-cli,
+  starlette,
+  pydantic,
+  typing-extensions,
+
+  # tests
+  dirty-equals,
+  flask,
+  passlib,
+  pyjwt,
+  pytest-asyncio,
+  pytestCheckHook,
+  sqlalchemy,
+  trio,
+
+  # optional-dependencies
+  httpx,
+  jinja2,
+  python-multipart,
+  itsdangerous,
+  pyyaml,
+  ujson,
+  orjson,
+  email-validator,
+  uvicorn,
+  pydantic-settings,
+  pydantic-extra-types,
 }:
 
 buildPythonPackage rec {
   pname = "fastapi";
-  version = "0.110.0";
+  version = "0.112.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -47,57 +48,64 @@ buildPythonPackage rec {
     owner = "tiangolo";
     repo = "fastapi";
     rev = "refs/tags/${version}";
-    hash = "sha256-OXWJ1PKJSJGzYNT8HHXvxMxjUtI4K6edpI+Z5B3TvhI=";
+    hash = "sha256-M09yte0BGC5w3AZSwDUr9qKUrotqVklO8mwyms9B95Y=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-    pythonRelaxDepsHook
-  ];
+  build-system = [ pdm-backend ];
 
   pythonRelaxDeps = [
     "anyio"
-    # https://github.com/tiangolo/fastapi/pull/9636
     "starlette"
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    fastapi-cli
     starlette
     pydantic
     typing-extensions
   ];
 
-  passthru.optional-dependencies.all = [
-    httpx
-    jinja2
-    python-multipart
-    itsdangerous
-    pyyaml
-    ujson
-    orjson
-    email-validator
-    uvicorn
-  ] ++ lib.optionals (lib.versionAtLeast pydantic.version "2") [
-    pydantic-settings
-    pydantic-extra-types
-  ] ++ uvicorn.optional-dependencies.standard;
+  optional-dependencies.all =
+    [
+      httpx
+      jinja2
+      python-multipart
+      itsdangerous
+      pyyaml
+      ujson
+      orjson
+      email-validator
+      uvicorn
+    ]
+    ++ lib.optionals (lib.versionAtLeast pydantic.version "2") [
+      pydantic-settings
+      pydantic-extra-types
+    ]
+    ++ uvicorn.optional-dependencies.standard;
 
   nativeCheckInputs = [
     dirty-equals
     flask
     passlib
+    pyjwt
     pytestCheckHook
     pytest-asyncio
-    python-jose
     trio
     sqlalchemy
-  ] ++ passthru.optional-dependencies.all
-  ++ python-jose.optional-dependencies.cryptography;
+  ] ++ optional-dependencies.all;
 
   pytestFlagsArray = [
     # ignoring deprecation warnings to avoid test failure from
     # tests/test_tutorial/test_testing/test_tutorial001.py
     "-W ignore::DeprecationWarning"
+    "-W ignore::pytest.PytestUnraisableExceptionWarning"
+  ];
+
+  disabledTests = [
+    # Coverage test
+    "test_fastapi_cli"
+    # ResourceWarning: Unclosed <MemoryObjectSendStream>
+    "test_openapi_schema"
   ];
 
   disabledTestPaths = [
@@ -108,9 +116,7 @@ buildPythonPackage rec {
     "tests/test_tutorial/test_sql_databases"
   ];
 
-  pythonImportsCheck = [
-    "fastapi"
-  ];
+  pythonImportsCheck = [ "fastapi" ];
 
   meta = with lib; {
     changelog = "https://github.com/tiangolo/fastapi/releases/tag/${version}";
diff --git a/pkgs/development/python-modules/fastavro/default.nix b/pkgs/development/python-modules/fastavro/default.nix
index fed754d72945d..16ede5ab211ed 100644
--- a/pkgs/development/python-modules/fastavro/default.nix
+++ b/pkgs/development/python-modules/fastavro/default.nix
@@ -1,23 +1,25 @@
-{ buildPythonPackage
-, cython
-, fetchFromGitHub
-, isPy38
-, lib
-, lz4
-, numpy
-, pandas
-, pytestCheckHook
-, python-dateutil
-, python-snappy
-, pythonOlder
-, zlib-ng
-, zstandard
+{
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+  isPy38,
+  lib,
+  lz4,
+  numpy,
+  pandas,
+  pytestCheckHook,
+  python-dateutil,
+  cramjam,
+  pythonOlder,
+  setuptools,
+  zlib-ng,
+  zstandard,
 }:
 
 buildPythonPackage rec {
   pname = "fastavro";
-  version = "1.9.4";
-  format = "setuptools";
+  version = "1.9.7";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
@@ -25,30 +27,27 @@ buildPythonPackage rec {
     owner = pname;
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-UWvNEi6vzQknUws+b7UCFUajMUJkfnQkfBeCR0XfqQY=";
+    hash = "sha256-hKhwQqNJ+QvYf4x9FesNOPg36m8zC6D6dmlhANXCcsk=";
   };
 
   preBuild = ''
     export FASTAVRO_USE_CYTHON=1
   '';
 
-  nativeBuildInputs = [ cython ];
+  build-system = [
+    cython
+    setuptools
+  ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     codecs = [
+      cramjam
       lz4
-      python-snappy
       zstandard
     ];
-    snappy = [
-      python-snappy
-    ];
-    zstandard = [
-      zstandard
-    ];
-    lz4 = [
-      lz4
-    ];
+    snappy = [ cramjam ];
+    zstandard = [ zstandard ];
+    lz4 = [ lz4 ];
   };
 
   nativeCheckInputs = [
@@ -57,7 +56,7 @@ buildPythonPackage rec {
     pytestCheckHook
     python-dateutil
     zlib-ng
-  ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
   # Fails with "AttributeError: module 'fastavro._read_py' has no attribute
   # 'CYTHON_MODULE'." Doesn't appear to be serious. See https://github.com/fastavro/fastavro/issues/112#issuecomment-387638676.
diff --git a/pkgs/development/python-modules/fastbencode/default.nix b/pkgs/development/python-modules/fastbencode/default.nix
index 369d991aaa939..195491ec8ab66 100644
--- a/pkgs/development/python-modules/fastbencode/default.nix
+++ b/pkgs/development/python-modules/fastbencode/default.nix
@@ -1,30 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, pythonOlder
-, cython
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchPypi,
+  python,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "fastbencode";
-  version = "0.2";
-  format = "setuptools";
+  version = "0.3.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-V465xHANZwXXH7yNfVe8os2Yfsos7B2ed7ngcC2x5W8=";
+    hash = "sha256-X+DLfRc2iRr2HSreQM6UiUHUbpCLFvU4P1XxJ4SNoZc=";
   };
 
-  nativeBuildInputs = [
-    cython
-  ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [
-    "fastbencode"
-  ];
+  nativeBuildInputs = [ cython ];
+
+  pythonImportsCheck = [ "fastbencode" ];
 
   checkPhase = ''
     ${python.interpreter} -m unittest fastbencode.tests.test_suite
@@ -33,7 +33,8 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Fast implementation of bencode";
     homepage = "https://github.com/breezy-team/fastbencode";
+    changelog = "https://github.com/breezy-team/fastbencode/releases/tag/v${version}";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/fastcache/default.nix b/pkgs/development/python-modules/fastcache/default.nix
index b29b45e87821f..ac411b4c06255 100644
--- a/pkgs/development/python-modules/fastcache/default.nix
+++ b/pkgs/development/python-modules/fastcache/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "fastcache";
diff --git a/pkgs/development/python-modules/fastcore/default.nix b/pkgs/development/python-modules/fastcore/default.nix
index 544bb26936d6f..f1047b6adac2a 100644
--- a/pkgs/development/python-modules/fastcore/default.nix
+++ b/pkgs/development/python-modules/fastcore/default.nix
@@ -1,35 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, packaging
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  packaging,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "fastcore";
-  version = "1.5.29";
-  format = "setuptools";
+  version = "1.7.10";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "fastai";
-    repo = pname;
+    repo = "fastcore";
     rev = "refs/tags/${version}";
-    hash = "sha256-yCPOF150TdkPHfLl8Jo2oow+91IzRKgnXo3eQMn5wK0=";
+    hash = "sha256-ksHJrgNju2rEVHcKU6jpW6izQPFgrWvDrvDZy0/Cgug=";
   };
 
-  propagatedBuildInputs = [
-    packaging
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ packaging ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "fastcore"
-  ];
+  pythonImportsCheck = [ "fastcore" ];
 
   meta = with lib; {
     description = "Python module for Fast AI";
diff --git a/pkgs/development/python-modules/fastdiff/default.nix b/pkgs/development/python-modules/fastdiff/default.nix
index 42418076ba356..4b906c6d6c1dc 100644
--- a/pkgs/development/python-modules/fastdiff/default.nix
+++ b/pkgs/development/python-modules/fastdiff/default.nix
@@ -1,12 +1,13 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, wasmer
-, wasmer-compiler-cranelift
-, py
-, pytestCheckHook
-, pytest-benchmark
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  wasmer,
+  wasmer-compiler-cranelift,
+  py,
+  pytestCheckHook,
+  pytest-benchmark,
 }:
 
 buildPythonPackage rec {
@@ -37,20 +38,16 @@ buildPythonPackage rec {
     pytest-benchmark
   ];
 
-  pytestFlagsArray = [
-    "--benchmark-skip"
-  ];
+  pytestFlagsArray = [ "--benchmark-skip" ];
 
-  pythonImportsCheck = [
-    "fastdiff"
-  ];
+  pythonImportsCheck = [ "fastdiff" ];
 
   meta = with lib; {
-    description = "A fast native implementation of diff algorithm with a pure Python fallback";
+    description = "Fast native implementation of diff algorithm with a pure Python fallback";
     homepage = "https://github.com/syrusakbary/fastdiff";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     # resulting compiled object panics at import
-    broken = stdenv.is32bit;
+    broken = stdenv.hostPlatform.is32bit;
   };
 }
diff --git a/pkgs/development/python-modules/fastdownload/default.nix b/pkgs/development/python-modules/fastdownload/default.nix
index 934ce6861ad6c..363230edcf816 100644
--- a/pkgs/development/python-modules/fastdownload/default.nix
+++ b/pkgs/development/python-modules/fastdownload/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fastprogress
-, fastcore
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fastprogress,
+  fastcore,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -14,10 +15,13 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-IFB+246JQGofvXd15uKj2BpN1jPdUGsOnPDhYT6DHWo=";
+    hash = "sha256-IFB+246JQGofvXd15uKj2BpN1jPdUGsOnPDhYT6DHWo=";
   };
 
-  propagatedBuildInputs = [ fastprogress fastcore ];
+  propagatedBuildInputs = [
+    fastprogress
+    fastcore
+  ];
 
   # no real tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/fastdtw/default.nix b/pkgs/development/python-modules/fastdtw/default.nix
index ce973d218417a..09c03c5b433c5 100644
--- a/pkgs/development/python-modules/fastdtw/default.nix
+++ b/pkgs/development/python-modules/fastdtw/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, cython
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  cython,
+  numpy,
   # Check Inputs
-, pytestCheckHook
-, python
+  pytestCheckHook,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -30,17 +31,13 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   pythonImportsCheck = [ "fastdtw.fastdtw" ];
   nativeCheckInputs = [ pytestCheckHook ];
-  dontUseSetuptoolsCheck = true;  # looks for pytest-runner
+  dontUseSetuptoolsCheck = true; # looks for pytest-runner
   preCheck = ''
     echo "Temporarily moving tests to $OUT to find cython modules"
     export PACKAGEDIR=$out/${python.sitePackages}
@@ -52,7 +49,6 @@ buildPythonPackage rec {
     popd
   '';
 
-
   meta = with lib; {
     description = "Python implementation of FastDTW (Dynamic Time Warping)";
     longDescription = ''
diff --git a/pkgs/development/python-modules/fastecdsa/default.nix b/pkgs/development/python-modules/fastecdsa/default.nix
index d46bf58d861c2..53968a07b40ba 100644
--- a/pkgs/development/python-modules/fastecdsa/default.nix
+++ b/pkgs/development/python-modules/fastecdsa/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, gmp
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  gmp,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,13 +19,9 @@ buildPythonPackage rec {
     hash = "sha256-81JVptPkEQkWa11LCIZtWsu5ny4eZNOn50x3RmTNqEI=";
   };
 
-  buildInputs = [
-    gmp
-  ];
+  buildInputs = [ gmp ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # skip tests which require being online to download test vectors
@@ -37,9 +34,7 @@ buildPythonPackage rec {
   # but the installed package works just fine
   doCheck = false;
 
-  pythonImportsCheck = [
-    "fastecdsa"
-  ];
+  pythonImportsCheck = [ "fastecdsa" ];
 
   meta = with lib; {
     description = "Fast elliptic curve digital signatures";
diff --git a/pkgs/development/python-modules/fastembed/default.nix b/pkgs/development/python-modules/fastembed/default.nix
index a2c8173fe42a6..b0a9d175c2b0a 100644
--- a/pkgs/development/python-modules/fastembed/default.nix
+++ b/pkgs/development/python-modules/fastembed/default.nix
@@ -1,21 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, huggingface-hub
-, pythonOlder
-, pythonRelaxDepsHook
-, poetry-core
-, onnx
-, onnxruntime
-, requests
-, tokenizers
-, tqdm
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  huggingface-hub,
+  loguru,
+  mmh3,
+  numpy,
+  onnx,
+  onnxruntime,
+  pillow,
+  pystemmer,
+  requests,
+  snowballstemmer,
+  tokenizers,
+  tqdm,
 }:
 
 buildPythonPackage rec {
   pname = "fastembed";
-  version = "0.2.2";
+  version = "0.3.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,42 +33,41 @@ buildPythonPackage rec {
     owner = "qdrant";
     repo = "fastembed";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ufgco5wPBG19GM99rZV7LKQqEzzCv24I8026SMz0CH4=";
+    hash = "sha256-IdIGht4RcejXoBTJ8eHi5fNw2ffxIi/chuoQBNjA98g=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
+
 
-  propagatedBuildInputs = [
+  dependencies = [
     huggingface-hub
+    loguru
+    mmh3
+    numpy
     onnx
     onnxruntime
+    pillow
+    pystemmer
     requests
+    snowballstemmer
     tokenizers
     tqdm
   ];
 
-  pythonImportsCheck = [
-    "fastembed"
-  ];
-
-  pythonRelaxDeps = [
-    "huggingface-hub"
-  ];
+  pythonImportsCheck = [ "fastembed" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  pythonRelaxDeps = [ "onnxruntime" ];
 
   # there is one test and it requires network
   doCheck = false;
 
-  meta = with lib; {
+  meta = {
     description = "Fast, Accurate, Lightweight Python library to make State of the Art Embedding";
     homepage = "https://github.com/qdrant/fastembed";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ happysalada ];
+    changelog = "https://github.com/qdrant/fastembed/releases/tag/v${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ happysalada ];
+    # terminate called after throwing an instance of 'onnxruntime::OnnxRuntimeException'
+    badPlatforms = [ "aarch64-linux" ];
   };
 }
diff --git a/pkgs/development/python-modules/fasteners/default.nix b/pkgs/development/python-modules/fasteners/default.nix
index 3dcdb073aeea6..4460c71f3c314 100644
--- a/pkgs/development/python-modules/fasteners/default.nix
+++ b/pkgs/development/python-modules/fasteners/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, diskcache
-, eventlet
-, fetchFromGitHub
-, more-itertools
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  diskcache,
+  eventlet,
+  fetchFromGitHub,
+  more-itertools,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-XFa1ItFqkSYE940p/imWFp5e9gS6n+D1uM6Cj+Vzmmg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     diskcache
@@ -34,19 +33,15 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "fasteners"
-  ];
+  pythonImportsCheck = [ "fasteners" ];
 
-  pytestFlagsArray = [
-    "tests/"
-  ];
+  pytestFlagsArray = [ "tests/" ];
 
   meta = with lib; {
     description = "Module that provides useful locks";
     homepage = "https://github.com/harlowja/fasteners";
     changelog = "https://github.com/harlowja/fasteners/releases/tag/${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/fastentrypoints/default.nix b/pkgs/development/python-modules/fastentrypoints/default.nix
index 5e18509e79fda..1c6de8a70c8d9 100644
--- a/pkgs/development/python-modules/fastentrypoints/default.nix
+++ b/pkgs/development/python-modules/fastentrypoints/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "fastentrypoints";
diff --git a/pkgs/development/python-modules/faster-fifo/default.nix b/pkgs/development/python-modules/faster-fifo/default.nix
deleted file mode 100644
index 1d77707b6aa55..0000000000000
--- a/pkgs/development/python-modules/faster-fifo/default.nix
+++ /dev/null
@@ -1,46 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# build-system
-, cython
-, setuptools
-
-# tests
-, numpy
-, unittestCheckHook
-}:
-
-buildPythonPackage rec {
-  pname = "faster-fifo";
-  version = "1.4.5";
-  format = "pyproject";
-
-  src = fetchFromGitHub {
-    owner = "alex-petrenko";
-    repo = "faster-fifo";
-    rev = "v${version}";
-    hash = "sha256-35kD+RWXwUXHG5leTVj4wY6hJAjDka69YczgSTIbCeg=";
-  };
-
-  nativeBuildInputs = [
-    cython
-    setuptools
-  ];
-
-  pythonImportsCheck = [
-    "faster_fifo"
-  ];
-
-  nativeCheckInputs = [
-    numpy
-    unittestCheckHook
-  ];
-
-  meta = with lib; {
-    description = "Faster alternative to Python's multiprocessing.Queue (IPC FIFO queue";
-    homepage = "https://github.com/alex-petrenko/faster-fifo";
-    license = licenses.mit;
-    maintainers = with maintainers; [ hexa ];
-  };
-}
diff --git a/pkgs/development/python-modules/faster-whisper/default.nix b/pkgs/development/python-modules/faster-whisper/default.nix
index 2fe0b785cea6e..8dff7f5a3944a 100644
--- a/pkgs/development/python-modules/faster-whisper/default.nix
+++ b/pkgs/development/python-modules/faster-whisper/default.nix
@@ -1,42 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, av
-, ctranslate2
-, huggingface-hub
-, onnxruntime
-, tokenizers
+  # dependencies
+  av,
+  ctranslate2,
+  huggingface-hub,
+  onnxruntime,
+  tokenizers,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "faster-whisper";
-  version = "1.0.1";
+  version = "1.0.3";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "SYSTRAN";
     repo = "faster-whisper";
     rev = "refs/tags/v${version}";
-    hash = "sha256-b8P9fI32ubOrdayA0vnjLhpZ4qffB6W+8TEOA1YLKqo=";
+    hash = "sha256-C/O+wt3dykQJmH+VsVkpQwEAdyW8goMUMKR0Z3Y7jdo=";
   };
 
   build-system = [
     setuptools
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "tokenizers"
-  ];
+  pythonRelaxDeps = [ "tokenizers" ];
 
   dependencies = [
     av
@@ -46,25 +43,21 @@ buildPythonPackage rec {
     tokenizers
   ];
 
-  pythonImportsCheck = [
-    "faster_whisper"
-  ];
+  pythonImportsCheck = [ "faster_whisper" ];
 
   # all tests require downloads
   doCheck = false;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export HOME=$TMPDIR
   '';
 
   meta = with lib; {
-    changelog = "https://github.com/guillaumekln/faster-whisper/releases/tag/${version}";
+    changelog = "https://github.com/SYSTRAN/faster-whisper/releases/tag/v${version}";
     description = "Faster Whisper transcription with CTranslate2";
-    homepage = "https://github.com/guillaumekln/faster-whisper";
+    homepage = "https://github.com/SYSTRAN/faster-whisper";
     license = licenses.mit;
     maintainers = with maintainers; [ hexa ];
   };
diff --git a/pkgs/development/python-modules/fastimport/default.nix b/pkgs/development/python-modules/fastimport/default.nix
index 904aac3069c65..93ce891c7d958 100644
--- a/pkgs/development/python-modules/fastimport/default.nix
+++ b/pkgs/development/python-modules/fastimport/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, pythonOlder
-, buildPythonPackage
-, fetchPypi
-, unittestCheckHook
+{
+  lib,
+  pythonOlder,
+  buildPythonPackage,
+  fetchPypi,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/fastjsonschema/default.nix b/pkgs/development/python-modules/fastjsonschema/default.nix
index 330bf096b2cee..4b518e5f8ef1d 100644
--- a/pkgs/development/python-modules/fastjsonschema/default.nix
+++ b/pkgs/development/python-modules/fastjsonschema/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch2
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,24 +31,22 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   dontUseSetuptoolsCheck = true;
 
-  disabledTests = [
-    "benchmark"
-    # these tests require network access
-    "remote ref"
-    "definitions"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_compile_to_code_custom_format"  # cannot import temporary module created during test
-  ];
-
-  pythonImportsCheck = [
-    "fastjsonschema"
-  ];
+  disabledTests =
+    [
+      "benchmark"
+      # these tests require network access
+      "remote ref"
+      "definitions"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      "test_compile_to_code_custom_format" # cannot import temporary module created during test
+    ];
+
+  pythonImportsCheck = [ "fastjsonschema" ];
 
   meta = with lib; {
     description = "JSON schema validator for Python";
diff --git a/pkgs/development/python-modules/fastnumbers/default.nix b/pkgs/development/python-modules/fastnumbers/default.nix
index 69cdd4c3e3782..9bdbd7dfd6684 100644
--- a/pkgs/development/python-modules/fastnumbers/default.nix
+++ b/pkgs/development/python-modules/fastnumbers/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, hypothesis
-, numpy
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, typing-extensions
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hypothesis,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -24,13 +25,9 @@ buildPythonPackage rec {
     hash = "sha256-TC9+xOvskABpChlrSJcHy6O7D7EnIKL6Ekt/vaLBX2E=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ typing-extensions ];
 
   # Tests fail due to numeric precision differences on ARM
   # See https://github.com/SethMMorton/fastnumbers/issues/28
@@ -42,13 +39,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "--hypothesis-profile=standard"
-  ];
+  pytestFlagsArray = [ "--hypothesis-profile=standard" ];
 
-  pythonImportsCheck = [
-    "fastnumbers"
-  ];
+  pythonImportsCheck = [ "fastnumbers" ];
 
   meta = with lib; {
     description = "Python module for number conversion";
diff --git a/pkgs/development/python-modules/fastparquet/default.nix b/pkgs/development/python-modules/fastparquet/default.nix
index 1ceeecafb6384..4add91da09261 100644
--- a/pkgs/development/python-modules/fastparquet/default.nix
+++ b/pkgs/development/python-modules/fastparquet/default.nix
@@ -1,72 +1,68 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, cython
-, oldest-supported-numpy
-, setuptools
-, setuptools-scm
-, numpy
-, pandas
-, cramjam
-, fsspec
-, thrift
-, python-lzo
-, pytestCheckHook
-, pythonOlder
-, packaging
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  cramjam,
+  cython,
+  fetchFromGitHub,
+  fsspec,
+  git,
+  numpy,
+  oldest-supported-numpy,
+  packaging,
+  pandas,
+  pytestCheckHook,
+  python-lzo,
+  python,
+  pythonOlder,
+  setuptools-scm,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "fastparquet";
-  version = "2024.2.0";
+  version = "2024.5.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "dask";
     repo = "fastparquet";
     rev = "refs/tags/${version}";
-    hash = "sha256-e0gnC/HMYdrYdEwy6qNOD1J52xgN2x81oCG03YNsYjg=";
+    hash = "sha256-YiaVkpPzH8ZmTiEtCom9xLbKzByIt7Ilig/WlmGrYH4=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace-fail '"pytest-runner"' ""
-
-    sed -i \
-      -e "/pytest-runner/d" \
-      -e '/"git", "status"/d' setup.py
+      --replace-fail "numpy>=2.0.0rc1" "oldest-supported-numpy"
   '';
 
-  nativeBuildInputs = [
-    cython
-    oldest-supported-numpy
+  build-system = [
     setuptools
     setuptools-scm
     wheel
   ];
 
-  propagatedBuildInputs = [
+  nativeBuildInputs = [
+    cython
+    git
+    oldest-supported-numpy
+  ];
+
+  dependencies = [
     cramjam
     fsspec
     numpy
-    pandas
-    thrift
     packaging
+    pandas
   ];
 
   passthru.optional-dependencies = {
-    lzo = [
-      python-lzo
-    ];
+    lzo = [ python-lzo ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Workaround https://github.com/NixOS/nixpkgs/issues/123561
   preCheck = ''
@@ -80,14 +76,13 @@ buildPythonPackage rec {
     rm "$fastparquet_test"
   '';
 
-  pythonImportsCheck = [
-    "fastparquet"
-  ];
+  pythonImportsCheck = [ "fastparquet" ];
 
   meta = with lib; {
     description = "Implementation of the parquet format";
     homepage = "https://github.com/dask/fastparquet";
-    license = with licenses; [ asl20 ];
+    changelog = "https://github.com/dask/fastparquet/blob/${version}/docs/source/releasenotes.rst";
+    license = licenses.asl20;
     maintainers = with maintainers; [ veprbl ];
   };
 }
diff --git a/pkgs/development/python-modules/fastpbkdf2/default.nix b/pkgs/development/python-modules/fastpbkdf2/default.nix
index 99ad26f0e7352..2d6d68a3842d0 100644
--- a/pkgs/development/python-modules/fastpbkdf2/default.nix
+++ b/pkgs/development/python-modules/fastpbkdf2/default.nix
@@ -1,5 +1,12 @@
-{ lib, fetchFromGitHub, buildPythonPackage
-, openssl, pytest, cffi, six }:
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  openssl,
+  pytest,
+  cffi,
+  six,
+}:
 
 buildPythonPackage rec {
   pname = "fastpbkdf2";
@@ -8,15 +15,18 @@ buildPythonPackage rec {
 
   # Fetching from GitHub as tests are missing in PyPI
   src = fetchFromGitHub {
-    owner  = "Ayrx";
-    repo   = "python-fastpbkdf2";
-    rev    = "v${version}";
+    owner = "Ayrx";
+    repo = "python-fastpbkdf2";
+    rev = "v${version}";
     sha256 = "1hvvlk3j28i6nswb6gy3mq7278nq0mgfnpxh1rv6jvi7xhd7qmlc";
   };
 
   buildInputs = [ openssl ];
   nativeCheckInputs = [ pytest ];
-  propagatedBuildInputs = [ cffi six ];
+  propagatedBuildInputs = [
+    cffi
+    six
+  ];
   propagatedNativeBuildInputs = [ cffi ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/fastprogress/default.nix b/pkgs/development/python-modules/fastprogress/default.nix
index 3a1dc5a30c43c..576a9784a0558 100644
--- a/pkgs/development/python-modules/fastprogress/default.nix
+++ b/pkgs/development/python-modules/fastprogress/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,5 +29,4 @@ buildPythonPackage rec {
     license = licenses.asl20;
     maintainers = with maintainers; [ ris ];
   };
-
 }
diff --git a/pkgs/development/python-modules/fastrlock/default.nix b/pkgs/development/python-modules/fastrlock/default.nix
index 26da544933d0f..547ab78b759e4 100644
--- a/pkgs/development/python-modules/fastrlock/default.nix
+++ b/pkgs/development/python-modules/fastrlock/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,20 +21,14 @@ buildPythonPackage rec {
     hash = "sha256-2h+rhP/EVMG3IkJVkE74p4GeBTwV3BS7fUkKpwedr2k=";
   };
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
   # Todo: Check why the tests have an import error
   doCheck = false;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "fastrlock"
-  ];
+  pythonImportsCheck = [ "fastrlock" ];
 
   meta = with lib; {
     description = "RLock implementation for CPython";
diff --git a/pkgs/development/python-modules/fasttext-predict/default.nix b/pkgs/development/python-modules/fasttext-predict/default.nix
index f1d56ef7185fc..bdd19640609ef 100644
--- a/pkgs/development/python-modules/fasttext-predict/default.nix
+++ b/pkgs/development/python-modules/fasttext-predict/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pybind11
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pybind11,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,12 @@ buildPythonPackage rec {
     hash = "sha256-rMbf09pCHvVYI9g/aq74+PcsuU2LezpmDz4b/w9vRyc=";
   };
 
-  nativeBuildInputs = [
-    pybind11
-  ];
+  postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
+    substituteInPlace setup.py \
+      --replace-fail "-flto" ""
+  '';
+
+  nativeBuildInputs = [ pybind11 ];
 
   # tests are removed from fork
   doCheck = false;
@@ -29,7 +33,5 @@ buildPythonPackage rec {
     homepage = "https://github.com/searxng/fasttext-predict/";
     license = licenses.mit;
     maintainers = with maintainers; [ SuperSandro2000 ];
-    # ImportError: dynamic module does not define module export function (PyInit_fasttext_pybind)
-    broken = stdenv.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/fasttext/default.nix b/pkgs/development/python-modules/fasttext/default.nix
index 71db9277ab2c8..11d5ef13a2488 100644
--- a/pkgs/development/python-modules/fasttext/default.nix
+++ b/pkgs/development/python-modules/fasttext/default.nix
@@ -1,4 +1,10 @@
-{lib, buildPythonPackage, numpy, pkgs, pybind11 }:
+{
+  lib,
+  buildPythonPackage,
+  numpy,
+  pkgs,
+  pybind11,
+}:
 
 buildPythonPackage rec {
   inherit (pkgs.fasttext) pname version src;
@@ -19,6 +25,6 @@ buildPythonPackage rec {
     description = "Python module for text classification and representation learning";
     homepage = "https://fasttext.cc/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/faust-cchardet/default.nix b/pkgs/development/python-modules/faust-cchardet/default.nix
index 6a1c8ad2ed818..ff3cd46700c94 100644
--- a/pkgs/development/python-modules/faust-cchardet/default.nix
+++ b/pkgs/development/python-modules/faust-cchardet/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, cython
-, pkgconfig
-, setuptools
-, wheel
-, pytestCheckHook
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cython,
+  pkgconfig,
+  setuptools,
+  wheel,
+  pytestCheckHook,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -36,13 +36,9 @@ buildPythonPackage rec {
     ln -s $out/${python.sitePackages}/{faust_,}cchardet-${version}.dist-info
   '';
 
-  pythonImportsCheck = [
-    "cchardet"
-  ];
+  pythonImportsCheck = [ "cchardet" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = {
     changelog = "https://github.com/faust-streaming/cChardet/blob/${src.rev}/CHANGES.rst";
@@ -50,6 +46,9 @@ buildPythonPackage rec {
     mainProgram = "cchardetect";
     homepage = "https://github.com/faust-streaming/cChardet";
     license = lib.licenses.mpl11;
-    maintainers = with lib.maintainers; [ dotlambda ivan ];
+    maintainers = with lib.maintainers; [
+      dotlambda
+      ivan
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/favicon/default.nix b/pkgs/development/python-modules/favicon/default.nix
index db6b70cbf8932..46c9517337104 100644
--- a/pkgs/development/python-modules/favicon/default.nix
+++ b/pkgs/development/python-modules/favicon/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchPypi
-, pytest7CheckHook
-, pythonOlder
-, requests
-, requests-mock
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchPypi,
+  pytest7CheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
 }:
 
 buildPythonPackage rec {
@@ -34,15 +35,12 @@ buildPythonPackage rec {
     requests-mock
   ];
 
-  pythonImportsCheck = [
-    "favicon"
-  ];
+  pythonImportsCheck = [ "favicon" ];
 
   meta = with lib; {
     description = "Find a website's favicon";
     homepage = "https://github.com/scottwernervt/favicon";
     changelog = "https://github.com/scottwernervt/favicon/blob/${version}/CHANGELOG.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ elohmeier ];
   };
 }
diff --git a/pkgs/development/python-modules/fb-re2/default.nix b/pkgs/development/python-modules/fb-re2/default.nix
index e5f41003495be..11defafe39539 100644
--- a/pkgs/development/python-modules/fb-re2/default.nix
+++ b/pkgs/development/python-modules/fb-re2/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, re2
+{
+  lib,
+  buildPythonPackage,
+  fetchpatch,
+  fetchPypi,
+  re2,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/fe25519/default.nix b/pkgs/development/python-modules/fe25519/default.nix
index 819c7cc34df66..4f47b634030e2 100644
--- a/pkgs/development/python-modules/fe25519/default.nix
+++ b/pkgs/development/python-modules/fe25519/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, bitlist
-, buildPythonPackage
-, fetchPypi
-, fountains
-, parts
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  bitlist,
+  buildPythonPackage,
+  fetchPypi,
+  fountains,
+  parts,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -33,18 +34,14 @@ buildPythonPackage rec {
     parts
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace "--doctest-modules --ignore=docs --cov=fe25519 --cov-report term-missing" ""
   '';
 
-  pythonImportsCheck = [
-    "fe25519"
-  ];
+  pythonImportsCheck = [ "fe25519" ];
 
   meta = with lib; {
     description = "Python field operations for Curve25519's prime";
diff --git a/pkgs/development/python-modules/feather-format/default.nix b/pkgs/development/python-modules/feather-format/default.nix
new file mode 100644
index 0000000000000..956b107695ada
--- /dev/null
+++ b/pkgs/development/python-modules/feather-format/default.nix
@@ -0,0 +1,32 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pyarrow,
+}:
+
+buildPythonPackage rec {
+  pname = "feather-format";
+  version = "0.4.1";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+
+    hash = "sha256-RfZ+N0XTlNTxYMptY2u/1Pi2jQEZncFkm25IfT6HiQM=";
+  };
+
+  build-system = [ setuptools ];
+  dependencies = [ pyarrow ];
+
+  pythonImportsCheck = [ "feather" ];
+  doCheck = false; # no tests
+
+  meta = {
+    description = "Simple wrapper library to the Apache Arrow-based Feather File Format";
+    homepage = "https://github.com/wesm/feather";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/feedfinder2/default.nix b/pkgs/development/python-modules/feedfinder2/default.nix
index bb5528815294f..0858653d8f16a 100644
--- a/pkgs/development/python-modules/feedfinder2/default.nix
+++ b/pkgs/development/python-modules/feedfinder2/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-, setuptools
+  setuptools,
 
-, six
-, requests
-, beautifulsoup4
+  six,
+  requests,
+  beautifulsoup4,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-NwHuAabIX4uGWgScMLoLRgiFjIA/6OMNHSif2+idDv4=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     six
@@ -35,7 +34,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "feedfinder2" ];
 
   meta = with lib; {
-    description = "A Python library for finding feed links on websites";
+    description = "Python library for finding feed links on websites";
     homepage = "https://github.com/dfm/feedfinder2";
     license = licenses.mit;
     maintainers = with maintainers; [ vizid ];
diff --git a/pkgs/development/python-modules/feedgen/default.nix b/pkgs/development/python-modules/feedgen/default.nix
index 46e51c49bda18..e6b7866b0cd0d 100644
--- a/pkgs/development/python-modules/feedgen/default.nix
+++ b/pkgs/development/python-modules/feedgen/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, python-dateutil, lxml }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python-dateutil,
+  lxml,
+}:
 
 buildPythonPackage rec {
   pname = "feedgen";
@@ -7,19 +13,25 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-2b1Rw7XpVqKlKZjDcIxNLHKfL8wxEYjh5dO5cmOTVGo=";
+    hash = "sha256-2b1Rw7XpVqKlKZjDcIxNLHKfL8wxEYjh5dO5cmOTVGo=";
   };
 
-  propagatedBuildInputs = [ python-dateutil lxml ];
+  propagatedBuildInputs = [
+    python-dateutil
+    lxml
+  ];
 
   # No tests in archive
   doCheck = false;
 
   meta = with lib; {
-    description = "Python module to generate ATOM feeds, RSS feeds and Podcasts.";
+    description = "Python module to generate ATOM feeds, RSS feeds and Podcasts";
     downloadPage = "https://github.com/lkiesow/python-feedgen/releases";
     homepage = "https://github.com/lkiesow/python-feedgen";
-    license = with licenses; [ bsd2 lgpl3 ];
+    license = with licenses; [
+      bsd2
+      lgpl3
+    ];
     maintainers = with maintainers; [ casey ];
   };
 }
diff --git a/pkgs/development/python-modules/feedgenerator/default.nix b/pkgs/development/python-modules/feedgenerator/default.nix
index 4fd5808aa236f..725150b18fb63 100644
--- a/pkgs/development/python-modules/feedgenerator/default.nix
+++ b/pkgs/development/python-modules/feedgenerator/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, glibcLocales
-, pytestCheckHook
-, pythonOlder
-, pytz
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  glibcLocales,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -16,16 +17,14 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-8HXyPyj9In8JfDayEhYcbPAS4cbKr3/1PV1rsCzUK50=";
+    hash = "sha256-8HXyPyj9In8JfDayEhYcbPAS4cbKr3/1PV1rsCzUK50=";
   };
 
   postPatch = ''
     sed -i '/cov/d' setup.cfg
   '';
 
-  buildInputs = [
-    glibcLocales
-  ];
+  buildInputs = [ glibcLocales ];
 
   LC_ALL = "en_US.UTF-8";
 
@@ -34,9 +33,7 @@ buildPythonPackage rec {
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "feedgenerator" ];
 
@@ -44,6 +41,6 @@ buildPythonPackage rec {
     description = "Standalone version of Django's feedgenerator module";
     homepage = "https://github.com/getpelican/feedgenerator";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/feedparser/default.nix b/pkgs/development/python-modules/feedparser/default.nix
index 0367e1e8a1063..3d1bd3f4ee3ba 100644
--- a/pkgs/development/python-modules/feedparser/default.nix
+++ b/pkgs/development/python-modules/feedparser/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, pythonOlder
-, setuptools
-, sgmllib3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  pythonOlder,
+  setuptools,
+  sgmllib3k,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-ydBAe2TG8qBl0OuyksKzXAEFDMDcM3V0Yaqr3ExBhNU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    sgmllib3k
-  ];
+  propagatedBuildInputs = [ sgmllib3k ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -36,9 +33,7 @@ buildPythonPackage rec {
     ${python.interpreter} -Wd tests/runtests.py
   '';
 
-  pythonImportsCheck = [
-    "feedparser"
-  ];
+  pythonImportsCheck = [ "feedparser" ];
 
   meta = with lib; {
     description = "Universal feed parser";
diff --git a/pkgs/development/python-modules/fenics/default.nix b/pkgs/development/python-modules/fenics/default.nix
index e9aa27bd9e21a..b2750f7a7054c 100644
--- a/pkgs/development/python-modules/fenics/default.nix
+++ b/pkgs/development/python-modules/fenics/default.nix
@@ -1,32 +1,33 @@
-{ lib, stdenv
-, fetchurl
-, fetchpatch
-, blas
-, boost
-, cmake
-, doxygen
-, eigen
-, gtest
-, hdf5
-, lapack
-, mpi
-, mpi4py
-, numpy
-, pkg-config
-, ply
-, pybind11
-, pytest
-, python
-, pythonPackages
-, scotch
-, setuptools
-, six
-, sphinx
-, suitesparse
-, swig
-, sympy
-, zlib
-, nixosTests
+{
+  lib,
+  stdenv,
+  fetchurl,
+  fetchpatch,
+  blas,
+  boost,
+  cmake,
+  doxygen,
+  eigen,
+  hdf5,
+  lapack,
+  mpi,
+  mpi4py,
+  numpy,
+  pkg-config,
+  ply,
+  pybind11,
+  pytest,
+  python,
+  pythonPackages,
+  scotch,
+  setuptools,
+  six,
+  sphinx,
+  suitesparse,
+  swig,
+  sympy,
+  zlib,
+  nixosTests,
 }:
 
 let
@@ -39,7 +40,10 @@ let
       url = "https://bitbucket.org/fenics-project/dijitso/downloads/dijitso-${version}.tar.gz";
       sha256 = "1ncgbr0bn5cvv16f13g722a0ipw6p9y6p4iasxjziwsp8kn5x97a";
     };
-    propagatedBuildInputs = [ numpy six ];
+    propagatedBuildInputs = [
+      numpy
+      six
+    ];
     nativeCheckInputs = [ pytest ];
     preCheck = ''
       export HOME=$PWD
@@ -64,7 +68,11 @@ let
       url = "https://bitbucket.org/fenics-project/fiat/downloads/fiat-${version}.tar.gz";
       sha256 = "1sbi0fbr7w9g9ajr565g3njxrc3qydqjy3334vmz5xg0rd3106il";
     };
-    propagatedBuildInputs = [ numpy six sympy ];
+    propagatedBuildInputs = [
+      numpy
+      six
+      sympy
+    ];
     nativeCheckInputs = [ pytest ];
 
     preCheck = ''
@@ -100,7 +108,10 @@ let
       url = "https://bitbucket.org/fenics-project/ufl/downloads/ufl-${version}.tar.gz";
       sha256 = "04daxwg4y9c51sdgvwgmlc82nn0fjw7i2vzs15ckdc7dlazmcfi1";
     };
-    propagatedBuildInputs = [ numpy six ];
+    propagatedBuildInputs = [
+      numpy
+      six
+    ];
     nativeCheckInputs = [ pytest ];
     checkPhase = ''
       runHook preCheck
@@ -108,7 +119,7 @@ let
       runHook postCheck
     '';
     meta = {
-      description = "A domain-specific language for finite element variational forms";
+      description = "Domain-specific language for finite element variational forms";
       homepage = "https://fenicsproject.org/";
       platforms = lib.platforms.all;
       license = lib.licenses.lgpl3;
@@ -122,9 +133,7 @@ let
       url = "https://bitbucket.org/fenics-project/ffc/downloads/ffc-${version}.tar.gz";
       sha256 = "1zdg6pziss4va74pd7jjl8sc3ya2gmhpypccmyd8p7c66ji23y2g";
     };
-    nativeBuildInputs = [
-      pybind11
-    ];
+    nativeBuildInputs = [ pybind11 ];
     propagatedBuildInputs = [
       dijitso
       fiat
@@ -145,7 +154,7 @@ let
       runHook postCheck
     '';
     meta = {
-      description = "A compiler for finite element variational forms";
+      description = "Compiler for finite element variational forms";
       homepage = "https://fenicsproject.org/";
       platforms = lib.platforms.all;
       license = lib.licenses.lgpl3;
@@ -231,7 +240,7 @@ let
       make runtests
     '';
     meta = {
-      description = "The FEniCS Problem Solving Environment in Python and C++";
+      description = "FEniCS Problem Solving Environment in Python and C++";
       homepage = "https://fenicsproject.org/";
       license = lib.licenses.lgpl3;
     };
@@ -269,7 +278,9 @@ let
       pythonPackages.pybind11
     ];
     doCheck = false; # Tries to orte_ess_init and call ssh to localhost
-    passthru.tests = { inherit (nixosTests) fenics; };
+    passthru.tests = {
+      inherit (nixosTests) fenics;
+    };
     meta = {
       description = "Python bindings for the DOLFIN FEM compiler";
       homepage = "https://fenicsproject.org/";
@@ -277,4 +288,5 @@ let
       license = lib.licenses.lgpl3;
     };
   };
-in python-dolfin
+in
+python-dolfin
diff --git a/pkgs/development/python-modules/ffcv/default.nix b/pkgs/development/python-modules/ffcv/default.nix
index a3dd531c1285f..447dbb8e0f24e 100644
--- a/pkgs/development/python-modules/ffcv/default.nix
+++ b/pkgs/development/python-modules/ffcv/default.nix
@@ -1,20 +1,32 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, libjpeg
-, numba
-, opencv4
-, pandas
-, pkg-config
-, pytorch-pfn-extras
-, terminaltables
-, tqdm
+{
+  buildPythonPackage,
+  pythonAtLeast,
+  fetchFromGitHub,
+  setuptools,
+  lib,
+  libjpeg,
+  numba,
+  opencv4,
+  pandas,
+  pkg-config,
+  pytorch-pfn-extras,
+  terminaltables,
+  tqdm,
+  pytestCheckHook,
+  assertpy,
+  psutil,
+  torchvision,
+  webdataset,
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "ffcv";
   version = "1.0.0";
-  format = "setuptools";
+  pyproject = true;
+
+  # version 1.0.0 uses distutils which was removed in Python 3.12
+  disabled = pythonAtLeast "3.12";
 
   src = fetchFromGitHub {
     owner = "libffcv";
@@ -26,29 +38,79 @@ buildPythonPackage rec {
   # See https://github.com/libffcv/ffcv/issues/159.
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "'assertpy'," "" \
-      --replace "'fastargs'," "" \
-      --replace "'imgcat'," "" \
-      --replace "'matplotlib'," "" \
-      --replace "'psutil'," "" \
-      --replace "'sklearn'," "" \
-      --replace "'webdataset'," ""
+      --replace-fail "'assertpy'," "" \
+      --replace-fail "'fastargs'," "" \
+      --replace-fail "'opencv-python'," "" \
+      --replace-fail "'psutil'," "" \
   '';
 
+  build-system = [ setuptools ];
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [ libjpeg ];
-  propagatedBuildInputs = [ opencv4 numba pandas pytorch-pfn-extras terminaltables tqdm ];
-
-  # `ffcv._libffcv*.so` cannot be loaded in the nix build environment for some
-  # reason. See https://github.com/NixOS/nixpkgs/pull/160441#issuecomment-1045204722.
-  doCheck = false;
+  propagatedBuildInputs = [
+    opencv4
+    numba
+    pandas
+    pytorch-pfn-extras
+    terminaltables
+    tqdm
+  ];
 
   pythonImportsCheck = [ "ffcv" ];
 
-  meta = with lib; {
+  # C/C++ python modules are only in the installed output and not in the build
+  # directory. Since tests are run from the build directory python prefers to
+  # import the local module first which does not contain the C/C++ python
+  # modules and results in an import error. By changing the directory to
+  # 'tests' the build directory is no long available and python will import
+  # from the installed output in the nix store which does contain the C/C++
+  # python modules.
+  preCheck = ''
+    cd tests
+  '';
+
+  nativeCheckInputs = [
+    assertpy
+    psutil
+    pytestCheckHook
+    torchvision
+    webdataset
+  ];
+
+  disabledTestPaths = [
+    # Tests require network access and do not work in the sandbox
+    "test_augmentations.py"
+    # Occasionally causes the testing phase to hang
+    "test_basic_pipeline.py"
+  ];
+
+  disabledTests = [
+    # Tests require network access and do not work in the sandbox
+    "test_cifar_subset"
+    # Requires CUDA which is unfree and unfree packages are not built by Hydra
+    "test_cuda"
+    "test_gpu_normalization"
+    # torch.multiprocessing.spawn.ProcessRaisedException
+    "test_traversal_sequential_2"
+    "test_traversal_sequential_3"
+    "test_traversal_sequential_4"
+    "test_traversal_random_2"
+    "test_traversal_random_3"
+    "test_traversal_random_4"
+    "test_traversal_sequential_distributed_with_indices"
+    "test_traversal_random_distributed_with_indices"
+  ];
+
+  meta = {
     description = "FFCV: Fast Forward Computer Vision";
     homepage = "https://ffcv.io";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ samuela ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [
+      samuela
+      djacu
+    ];
+    # OSError: dlopen(libc.so.6, 0x0006): tried: '/usr/lib/libc.so.6' (no such file, not in dyld cache),
+    # 'libc.so.6' (no such file), '/usr/local/lib/libc.so.6' (no such file), '/usr/lib/libc.so.6' (no such file, not in dyld cache)
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/ffmpeg-progress-yield/default.nix b/pkgs/development/python-modules/ffmpeg-progress-yield/default.nix
index fc3cad7892e3b..288389dea8372 100644
--- a/pkgs/development/python-modules/ffmpeg-progress-yield/default.nix
+++ b/pkgs/development/python-modules/ffmpeg-progress-yield/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, colorama
-, tqdm
-, pytestCheckHook
-, pythonOlder
-, ffmpeg
-, procps
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  colorama,
+  tqdm,
+  pytestCheckHook,
+  pythonOlder,
+  ffmpeg,
+  procps,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,16 @@ buildPythonPackage rec {
     hash = "sha256-muauX4Mq58ew9lGPE0H+bu4bqPydNADLocujjy6qRh4=";
   };
 
-  propagatedBuildInputs = [ colorama tqdm ];
+  propagatedBuildInputs = [
+    colorama
+    tqdm
+  ];
 
-  nativeCheckInputs = [ pytestCheckHook ffmpeg procps ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    ffmpeg
+    procps
+  ];
 
   disabledTests = [
     "test_quit"
diff --git a/pkgs/development/python-modules/ffmpeg-python/default.nix b/pkgs/development/python-modules/ffmpeg-python/default.nix
index 0fb0c68d4cba5..c337d64dc7ee7 100644
--- a/pkgs/development/python-modules/ffmpeg-python/default.nix
+++ b/pkgs/development/python-modules/ffmpeg-python/default.nix
@@ -1,62 +1,68 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, ffmpeg_4
-, future
-, pytest-mock
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, substituteAll
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  substituteAll,
+  fetchpatch2,
+  setuptools,
+  pytestCheckHook,
+  pytest-mock,
+  ffmpeg_7,
 }:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "ffmpeg-python";
-  version = "0.2.0";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.7";
+  version = "0.2.0-unstable-2022-07-11";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "kkroening";
     repo = "ffmpeg-python";
-    rev = version;
-    hash = "sha256-Dk3nHuYVlIiFF6nORZ5TVFkBXdoZUxLfoiz68V1tvlY=";
+    rev = "df129c7ba30aaa9ffffb81a48f53aa7253b0b4e6";
+    hash = "sha256-jPiFhYRwfuS+vo6LsLw0+65NWy2A+B+EdC8SewZTRP4=";
   };
 
-  propagatedBuildInputs = [
-    future
-  ];
-
-  nativeCheckInputs = [
-    pytestCheckHook
-    pytest-mock
-  ];
-
   patches = [
     (substituteAll {
       src = ./ffmpeg-location.patch;
-      ffmpeg = ffmpeg_4;
+      ffmpeg = ffmpeg_7;
     })
-  ];
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "'pytest-runner'" ""
-  '';
+    # Remove dependency on `future`
+    # https://github.com/kkroening/ffmpeg-python/pull/795
+    (fetchpatch2 {
+      url = "https://github.com/kkroening/ffmpeg-python/commit/dce459d39ace25f03edbabdad1735064787568f7.patch?full_index=1";
+      hash = "sha256-ZptCFplL88d0p2s741ymHiwyDsDGVFylBJ8FTrZDGMc=";
+    })
+
+    # Fix ffmpeg/tests/test_ffmpeg.py: test_pipe() (v1: ignore duplicate frames)
+    # https://github.com/kkroening/ffmpeg-python/pull/726
+    (fetchpatch2 {
+      url = "https://github.com/kkroening/ffmpeg-python/commit/557ed8e81ff48c5931c9249ec4aae525347ecf85.patch?full_index=1";
+      hash = "sha256-XrL9yLaBg1tu63OYZauEb/4Ghp2zHtiF6vB+1YYbv1Y=";
+    })
 
-  pythonImportsCheck = [
-    "ffmpeg"
+    # Fix `test__probe` on FFmpeg 7
+    # https://github.com/kkroening/ffmpeg-python/pull/848
+    (fetchpatch2 {
+      url = "https://github.com/kkroening/ffmpeg-python/commit/eeaa83398ba1d4e5b470196f7d4c7ca4ba9e8ddf.patch?full_index=1";
+      hash = "sha256-/qxez4RF/RPRr9nA+wp+XB49L3VNgnMwMQhFD2NwijU=";
+    })
   ];
 
-  disabledTests = lib.optionals (pythonAtLeast "3.10") [
-    "test__output__video_size"
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-mock
   ];
 
-  meta = with lib; {
+  pythonImportsCheck = [ "ffmpeg" ];
+
+  meta = {
     description = "Python bindings for FFmpeg - with complex filtering support";
     homepage = "https://github.com/kkroening/ffmpeg-python";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ AluisioASG ];
+    license = lib.licenses.asl20;
+    maintainers = [ lib.maintainers.emily ];
   };
 }
diff --git a/pkgs/development/python-modules/ffmpeg-python/ffmpeg-location.patch b/pkgs/development/python-modules/ffmpeg-python/ffmpeg-location.patch
index a192504e12675..c29a1c3d92cb8 100644
--- a/pkgs/development/python-modules/ffmpeg-python/ffmpeg-location.patch
+++ b/pkgs/development/python-modules/ffmpeg-python/ffmpeg-location.patch
@@ -1,21 +1,21 @@
-diff --git i/ffmpeg/_probe.py w/ffmpeg/_probe.py
-index 41e8168..eb83b54 100644
---- i/ffmpeg/_probe.py
-+++ w/ffmpeg/_probe.py
-@@ -4,7 +4,7 @@ from ._run import Error
+diff --git a/ffmpeg/_probe.py b/ffmpeg/_probe.py
+index 090d7abf9e..07fb4d9459 100644
+--- a/ffmpeg/_probe.py
++++ b/ffmpeg/_probe.py
+@@ -4,7 +4,7 @@
  from ._utils import convert_kwargs_to_cmd_line_args
  
  
--def probe(filename, cmd='ffprobe', **kwargs):
-+def probe(filename, cmd='@ffmpeg@/bin/ffprobe', **kwargs):
+-def probe(filename, cmd='ffprobe', timeout=None, **kwargs):
++def probe(filename, cmd='@ffmpeg@/bin/ffprobe', timeout=None, **kwargs):
      """Run ffprobe on the specified file and return a JSON representation of the output.
  
      Raises:
-diff --git i/ffmpeg/_run.py w/ffmpeg/_run.py
-index afc504d..9445cca 100644
---- i/ffmpeg/_run.py
-+++ w/ffmpeg/_run.py
-@@ -172,7 +172,7 @@ def get_args(stream_spec, overwrite_output=False):
+diff --git a/ffmpeg/_run.py b/ffmpeg/_run.py
+index f42d1d7309..d3e1df9c80 100644
+--- a/ffmpeg/_run.py
++++ b/ffmpeg/_run.py
+@@ -174,7 +174,7 @@
  
  
  @output_operator()
@@ -23,8 +23,8 @@ index afc504d..9445cca 100644
 +def compile(stream_spec, cmd='@ffmpeg@/bin/ffmpeg', overwrite_output=False):
      """Build command-line for invoking ffmpeg.
  
-     The :meth:`run` function uses this to build the commnad line
-@@ -193,7 +193,7 @@ def compile(stream_spec, cmd='ffmpeg', overwrite_output=False):
+     The :meth:`run` function uses this to build the command line
+@@ -195,7 +195,7 @@
  @output_operator()
  def run_async(
      stream_spec,
@@ -33,7 +33,7 @@ index afc504d..9445cca 100644
      pipe_stdin=False,
      pipe_stdout=False,
      pipe_stderr=False,
-@@ -289,7 +289,7 @@ def run_async(
+@@ -299,7 +299,7 @@
  @output_operator()
  def run(
      stream_spec,
@@ -42,11 +42,11 @@ index afc504d..9445cca 100644
      capture_stdout=False,
      capture_stderr=False,
      input=None,
-diff --git i/ffmpeg/tests/test_ffmpeg.py w/ffmpeg/tests/test_ffmpeg.py
-index 279a323..8d3b35c 100644
---- i/ffmpeg/tests/test_ffmpeg.py
-+++ w/ffmpeg/tests/test_ffmpeg.py
-@@ -24,7 +24,7 @@ TEST_OUTPUT_FILE2 = os.path.join(SAMPLE_DATA_DIR, 'out2.mp4')
+diff --git a/ffmpeg/tests/test_ffmpeg.py b/ffmpeg/tests/test_ffmpeg.py
+index 8dbc271a79..168e662e8d 100644
+--- a/ffmpeg/tests/test_ffmpeg.py
++++ b/ffmpeg/tests/test_ffmpeg.py
+@@ -26,7 +26,7 @@
  BOGUS_INPUT_FILE = os.path.join(SAMPLE_DATA_DIR, 'bogus')
  
  
@@ -55,7 +55,13 @@ index 279a323..8d3b35c 100644
  
  
  def test_escape_chars():
-@@ -423,7 +423,7 @@ def test_filter_text_arg_str_escape():
+@@ -450,12 +450,12 @@
+ 
+ 
+ # def test_version():
+-#    subprocess.check_call(['ffmpeg', '-version'])
++#    subprocess.check_call(['@ffmpeg@/bin/ffmpeg', '-version'])
+ 
  
  def test__compile():
      out_file = ffmpeg.input('dummy.mp4').output('dummy2.mp4')
@@ -64,7 +70,7 @@ index 279a323..8d3b35c 100644
      assert out_file.compile(cmd='ffmpeg.old') == [
          'ffmpeg.old',
          '-i',
-@@ -490,7 +490,7 @@ def test__run__input_output(mocker):
+@@ -530,7 +530,7 @@
  @pytest.mark.parametrize('capture_stdout', [True, False])
  @pytest.mark.parametrize('capture_stderr', [True, False])
  def test__run__error(mocker, capture_stdout, capture_stderr):
@@ -73,12 +79,12 @@ index 279a323..8d3b35c 100644
      stream = _get_complex_filter_example()
      with pytest.raises(ffmpeg.Error) as excinfo:
          out, err = ffmpeg.run(
-@@ -684,7 +684,7 @@ def test_pipe():
+@@ -724,7 +724,7 @@
          'pipe:1',
      ]
  
 -    cmd = ['ffmpeg'] + args
 +    cmd = ['@ffmpeg@/bin/ffmpeg'] + args
      p = subprocess.Popen(
-         cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE
-     )
+         cmd,
+         stdin=subprocess.PIPE,
diff --git a/pkgs/development/python-modules/ffmpy/default.nix b/pkgs/development/python-modules/ffmpy/default.nix
index 974e2bcd8fdac..ec639f9ef821c 100644
--- a/pkgs/development/python-modules/ffmpy/default.nix
+++ b/pkgs/development/python-modules/ffmpy/default.nix
@@ -1,31 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, pytestCheckHook
-, go
-, ffmpeg-headless
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  poetry-core,
+  pytestCheckHook,
+  go,
+  ffmpeg-headless,
 }:
 
 buildPythonPackage rec {
   pname = "ffmpy";
-  version = "0.3.2";
+  version = "0.4.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8.1";
 
   src = fetchFromGitHub {
     owner = "Ch00k";
     repo = "ffmpy";
     rev = "refs/tags/${version}";
-    hash = "sha256-q41JjAWcIiD2nJck5Zzb/lhfIZ3xJGU1I2crsMN0T8Q=";
+    hash = "sha256-XWI0Hq4vf9Q0/dRzmu1B7EQHdQRkWaNJaBaqusWW7YM=";
   };
 
   postPatch = ''
     # default to store ffmpeg
     substituteInPlace ffmpy.py \
-      --replace-fail 'executable="ffmpeg",' 'executable="${ffmpeg-headless}/bin/ffmpeg",'
+      --replace-fail \
+        'executable: str = "ffmpeg",' \
+        'executable: str = "${ffmpeg-headless}/bin/ffmpeg",'
 
     #  The tests test a mock that does not behave like ffmpeg. If we default to the nix-store ffmpeg they fail.
     for fname in tests/*.py; do
@@ -35,24 +39,27 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "ffmpy" ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   nativeCheckInputs = [
     pytestCheckHook
     go
   ];
 
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
+    # expects a FFExecutableNotFoundError, gets a NotADirectoryError raised by os
+    "test_invalid_executable_path"
+  ];
+
   # the vendored ffmpeg mock binary assumes FHS
   preCheck = ''
     rm -v tests/ffmpeg/ffmpeg
-    HOME=$(mktemp -d) go build -o ffmpeg tests/ffmpeg/ffmpeg.go
-    export PATH=".:$PATH"
+    echo Building tests/ffmpeg/ffmpeg...
+    HOME=$(mktemp -d) go build -o tests/ffmpeg/ffmpeg tests/ffmpeg/ffmpeg.go
   '';
 
   meta = with lib; {
-    description = "A simple python interface for FFmpeg/FFprobe";
+    description = "Simple python interface for FFmpeg/FFprobe";
     homepage = "https://github.com/Ch00k/ffmpy";
     license = licenses.mit;
     maintainers = with maintainers; [ pbsds ];
diff --git a/pkgs/development/python-modules/fhir-py/default.nix b/pkgs/development/python-modules/fhir-py/default.nix
index e4072aaf4633c..518687e15d7e2 100644
--- a/pkgs/development/python-modules/fhir-py/default.nix
+++ b/pkgs/development/python-modules/fhir-py/default.nix
@@ -1,19 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, flit-core
-, aiohttp
-, pytz
-, requests
-, pytestCheckHook
-, pytest-asyncio
-, responses
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  flit-core,
+  aiohttp,
+  pytz,
+  requests,
+  pytestCheckHook,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pydantic,
+  responses,
 }:
 
 buildPythonPackage rec {
   pname = "fhir-py";
-  version = "1.4.2";
+  version = "2.0.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -22,20 +25,12 @@ buildPythonPackage rec {
     owner = "beda-software";
     repo = "fhir-py";
     rev = "refs/tags/v${version}";
-    hash = "sha256-kYqoRso1ypN5novRxMMzz1h2NGNybbw5lK4+HErG79I=";
+    hash = "sha256-WDYDQqeNwt4cKEgF+HqMOuEwUezS10YUOZp+eAui6nM=";
   };
 
-  preBuild = ''
-    substituteInPlace pyproject.toml  \
-      --replace "--cov=fhirpy" ""  \
-      --replace "--cov-report=xml" ""
-  '';
+  build-system = [ flit-core ];
 
-  nativeBuildInputs = [
-    flit-core
-  ];
-
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     pytz
     requests
@@ -44,6 +39,8 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     pytestCheckHook
     pytest-asyncio
+    pytest-cov-stub
+    pydantic
     responses
   ];
 
diff --git a/pkgs/development/python-modules/fiblary3-fork/default.nix b/pkgs/development/python-modules/fiblary3-fork/default.nix
index 99413e54d6342..ab971979d692b 100644
--- a/pkgs/development/python-modules/fiblary3-fork/default.nix
+++ b/pkgs/development/python-modules/fiblary3-fork/default.nix
@@ -1,18 +1,17 @@
-{ lib
-, buildPythonPackage
-, isPy3k
-, fetchPypi
-, fixtures
-, jsonpatch
-, netaddr
-, prettytable
-, python-dateutil
-, pytestCheckHook
-, requests
-, requests-mock
-, six
-, sphinx
-, testtools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fixtures,
+  jsonpatch,
+  netaddr,
+  prettytable,
+  python-dateutil,
+  pytestCheckHook,
+  requests,
+  requests-mock,
+  six,
+  testtools,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/fickling/default.nix b/pkgs/development/python-modules/fickling/default.nix
new file mode 100644
index 0000000000000..44bb00c6bec67
--- /dev/null
+++ b/pkgs/development/python-modules/fickling/default.nix
@@ -0,0 +1,53 @@
+{
+  lib,
+  astunparse,
+  buildPythonPackage,
+  distutils,
+  fetchFromGitHub,
+  flit-core,
+  pytestCheckHook,
+  pythonOlder,
+  torch,
+  torchvision,
+}:
+
+buildPythonPackage rec {
+  pname = "fickling";
+  version = "0.1.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "trailofbits";
+    repo = "fickling";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-/cV1XhJ8KMFby9nZ/qXEYxf+P6352Q2DZOLuvebyuHQ=";
+  };
+
+  build-system = [
+    distutils
+    flit-core
+  ];
+
+  dependencies = [ astunparse ];
+
+  optional-dependencies = {
+    torch = [
+      torch
+      torchvision
+    ];
+  };
+
+  nativeCheckInputs = [ pytestCheckHook ] ++ lib.flatten (builtins.attrValues optional-dependencies);
+
+  pythonImportsCheck = [ "fickling" ];
+
+  meta = with lib; {
+    description = "A Python pickling decompiler and static analyzer";
+    homepage = "https://github.com/trailofbits/fickling";
+    changelog = "https://github.com/trailofbits/fickling/releases/tag/v${version}";
+    license = licenses.lgpl3Plus;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/pkgs/development/python-modules/fido2/default.nix b/pkgs/development/python-modules/fido2/default.nix
index 82d635d8d0f60..8b5a06c4a1fc5 100644
--- a/pkgs/development/python-modules/fido2/default.nix
+++ b/pkgs/development/python-modules/fido2/default.nix
@@ -1,49 +1,39 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchPypi
-, mock
-, poetry-core
-, pyfakefs
-, pythonOlder
-, six
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  poetry-core,
+  pyscard,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "fido2";
   version = "1.1.3";
-  format = "pyproject";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-JhAPIm0SztYhymGYUozhft9nt430KHruEoX+481aqfw=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    cryptography
-    six
-  ];
+  dependencies = [ cryptography ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-    mock
-    pyfakefs
-  ];
+  passthru.optional-dependencies = {
+    pcsc = [ pyscard ];
+  };
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  unittestFlagsArray = [
-    "-v"
-  ];
+  unittestFlagsArray = [ "-v" ];
 
-  pythonImportsCheck = [
-    "fido2"
-  ];
+  pythonImportsCheck = [ "fido2" ];
 
   meta = with lib; {
     description = "Provides library functionality for FIDO 2.0, including communication with a device over USB";
diff --git a/pkgs/development/python-modules/fields/default.nix b/pkgs/development/python-modules/fields/default.nix
index bbe14dd638d76..de8a7250da958 100644
--- a/pkgs/development/python-modules/fields/default.nix
+++ b/pkgs/development/python-modules/fields/default.nix
@@ -1,4 +1,8 @@
-{ buildPythonPackage, lib, fetchPypi }:
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "fields";
diff --git a/pkgs/development/python-modules/file-read-backwards/default.nix b/pkgs/development/python-modules/file-read-backwards/default.nix
index 9317021f45069..ddb141b8ac7cf 100644
--- a/pkgs/development/python-modules/file-read-backwards/default.nix
+++ b/pkgs/development/python-modules/file-read-backwards/default.nix
@@ -1,22 +1,39 @@
-{ lib, buildPythonPackage, fetchPypi, mock }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  pythonOlder,
+  setuptools,
+  unittestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "file-read-backwards";
-  version = "3.0.0";
-  format = "setuptools";
+  version = "3.1.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     pname = "file_read_backwards";
     inherit version;
-    sha256 = "sha256-USw+U0BDUnqPrioLcVGqJV8towPnf9QPfc9CoeCRzCY=";
+    hash = "sha256-vQRZO8GTigAyJL5FHV1zXx9EkOHnClaM6NMwu3ZSpoQ=";
   };
 
-  nativeCheckInputs = [ mock ];
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [
+    mock
+    unittestCheckHook
+  ];
+
   pythonImportsCheck = [ "file_read_backwards" ];
 
   meta = with lib; {
-    homepage = "https://github.com/RobinNil/file_read_backwards";
     description = "Memory efficient way of reading files line-by-line from the end of file";
+    homepage = "https://github.com/RobinNil/file_read_backwards";
+    changelog = "https://github.com/RobinNil/file_read_backwards/blob/v${version}/HISTORY.rst";
     license = licenses.mit;
     maintainers = with maintainers; [ j0hax ];
   };
diff --git a/pkgs/development/python-modules/filebrowser-safe/default.nix b/pkgs/development/python-modules/filebrowser-safe/default.nix
index ab6840c832bf4..6e9d84b1763ed 100644
--- a/pkgs/development/python-modules/filebrowser-safe/default.nix
+++ b/pkgs/development/python-modules/filebrowser-safe/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, django
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  django,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,15 +19,13 @@ buildPythonPackage rec {
     sha256 = "499c5dbd9e112dfc436cae7713b2fb664a59015021f6c9d131e3b7980aeb5c94";
   };
 
-  buildInputs = [
-    django
-  ];
+  buildInputs = [ django ];
 
   # There is no test embedded
   doCheck = false;
 
   meta = with lib; {
-    description = "A snapshot of django-filebrowser for the Mezzanine CMS";
+    description = "Snapshot of django-filebrowser for the Mezzanine CMS";
     longDescription = ''
       filebrowser-safe was created to provide a snapshot of the
       FileBrowser asset manager for Django, to be referenced as a
@@ -38,5 +37,4 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ prikhi ];
     platforms = platforms.unix;
   };
-
 }
diff --git a/pkgs/development/python-modules/filebytes/default.nix b/pkgs/development/python-modules/filebytes/default.nix
index 9dd04c3c4cb70..edfe2556fa748 100644
--- a/pkgs/development/python-modules/filebytes/default.nix
+++ b/pkgs/development/python-modules/filebytes/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -19,5 +20,4 @@ buildPythonPackage rec {
     description = "Scripts to parse ELF, PE, Mach-O and OAT (Android Runtime)";
     maintainers = with maintainers; [ bennofs ];
   };
-
 }
diff --git a/pkgs/development/python-modules/filecheck/default.nix b/pkgs/development/python-modules/filecheck/default.nix
index 2ce3e7c1fe8a6..a42c824a92f01 100644
--- a/pkgs/development/python-modules/filecheck/default.nix
+++ b/pkgs/development/python-modules/filecheck/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,17 +18,11 @@ buildPythonPackage rec {
     hash = "sha256-VbMlCqGd3MVpj0jEKjSGC2L0s/3e/d53b+2eZcXZneo=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "filecheck"
-  ];
+  pythonImportsCheck = [ "filecheck" ];
 
   meta = with lib; {
     changelog = "https://github.com/mull-project/FileCheck.py/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/filedate/default.nix b/pkgs/development/python-modules/filedate/default.nix
new file mode 100644
index 0000000000000..5317169caa68c
--- /dev/null
+++ b/pkgs/development/python-modules/filedate/default.nix
@@ -0,0 +1,59 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  python-dateutil,
+  setuptools,
+}:
+buildPythonPackage rec {
+  pname = "filedate";
+  version = "3.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "kubinka0505";
+    repo = "filedate";
+    rev = version;
+    hash = "sha256-HvuGP+QlUlfAUfFmaVVvtPHGdrbWVxghQipnqTTvAQc=";
+  };
+
+  sourceRoot = "${src.name}/Files";
+
+  # The repo stores everything in "src" and uses setup.py to move "src" ->
+  # "filedate" before calling setup() and then tries to rename "filedate" back
+  # to "src" after.
+  postPatch = ''
+    mv src filedate
+    substituteInPlace setup.py \
+      --replace-fail "__title__ = os.path.basename(os.path.dirname(os.path.dirname(__file__)))" '__title__ = "filedate"'
+    substituteInPlace setup.py \
+      --replace-fail "cleanup = True" "cleanup = False"
+
+    # Disable renaming "filedate" dir back to "src"
+    substituteInPlace setup.py \
+      --replace-fail "if os.path.exists(__title__):" ""
+    substituteInPlace setup.py \
+      --replace-fail "	os.rename(__title__, directory)" ""
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [ python-dateutil ];
+
+  pythonImportsCheck = [ "filedate" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pytestFlagsArray = [ "tests/unit.py" ];
+
+  disabledTests = [ "test_created" ];
+
+  meta = {
+    description = "Simple, convenient and cross-platform file date changing library";
+    homepage = "https://github.com/kubinka0505/filedate";
+    changelog = "https://github.com/kubinka0505/filedate/blob/${src.rev}/Documents/ChangeLog.md";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ thornycrackers ];
+  };
+}
diff --git a/pkgs/development/python-modules/filedepot/default.nix b/pkgs/development/python-modules/filedepot/default.nix
index b567a3d8322a7..1b5d554045d8a 100644
--- a/pkgs/development/python-modules/filedepot/default.nix
+++ b/pkgs/development/python-modules/filedepot/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, anyascii
-, buildPythonPackage
-, fetchFromGitHub
-, flaky
-, google-cloud-storage
-, mock
-, pillow
-, pymongo
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
-, sqlalchemy
+{
+  lib,
+  anyascii,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flaky,
+  google-cloud-storage,
+  mock,
+  pillow,
+  pymongo,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
+  sqlalchemy,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     hash = "sha256-693H/u+Wg2G9sdoUkC6DQo9WkmIlKnh8NKv3ufK/eyQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     anyascii
@@ -57,9 +56,7 @@ buildPythonPackage rec {
     "tests/test_wsgi_middleware.py"
   ];
 
-  pythonImportsCheck = [
-    "depot"
-  ];
+  pythonImportsCheck = [ "depot" ];
 
   meta = with lib; {
     description = "Toolkit for storing files and attachments in web applications";
diff --git a/pkgs/development/python-modules/filelock/default.nix b/pkgs/development/python-modules/filelock/default.nix
index b32335bb24754..7edfa503f2e94 100644
--- a/pkgs/development/python-modules/filelock/default.nix
+++ b/pkgs/development/python-modules/filelock/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatch-vcs
-, hatchling
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatch-vcs,
+  hatchling,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "filelock";
-  version = "3.13.1";
+  version = "3.15.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Uh9fVsUPhCb14DrTsoG0kKh+8VvGxSbxaCkPDHFI1E4=";
+    hash = "sha256-WKJUmv354C4Qcg6qTURw9WOG16b3Lt19BZYzevjtetg=";
   };
 
   nativeBuildInputs = [
@@ -32,7 +33,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     changelog = "https://github.com/tox-dev/py-filelock/releases/tag/${version}";
-    description = "A platform independent file lock for Python";
+    description = "Platform independent file lock for Python";
     homepage = "https://github.com/benediktschmitt/py-filelock";
     license = licenses.unlicense;
     maintainers = with maintainers; [ hyphon81 ];
diff --git a/pkgs/development/python-modules/filetype/default.nix b/pkgs/development/python-modules/filetype/default.nix
index b4479e61baa33..99292c8668cd2 100644
--- a/pkgs/development/python-modules/filetype/default.nix
+++ b/pkgs/development/python-modules/filetype/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-ZrVs1kdL9B2MVGYDR9N6/MP30ZcGSN42XBAu93VIqts=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "filetype"
-  ];
+  pythonImportsCheck = [ "filetype" ];
 
   disabledTests = [
     # https://github.com/h2non/filetype.py/issues/119
diff --git a/pkgs/development/python-modules/filterpy/default.nix b/pkgs/development/python-modules/filterpy/default.nix
index 7d45d7f979b47..039c2e863ac75 100644
--- a/pkgs/development/python-modules/filterpy/default.nix
+++ b/pkgs/development/python-modules/filterpy/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, scipy
-, matplotlib
-, pytestCheckHook
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  scipy,
+  matplotlib,
+  pytestCheckHook,
+  isPy3k,
 }:
 
 buildPythonPackage {
@@ -22,9 +23,7 @@ buildPythonPackage {
     hash = "sha256-KuuVu0tqrmQuNKYmDmdy+TU6BnnhDxh4G8n9BGzjGag=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   propagatedBuildInputs = [
     numpy
diff --git a/pkgs/development/python-modules/finalfusion/default.nix b/pkgs/development/python-modules/finalfusion/default.nix
index 14b13d7184be8..2452a6cbf07de 100644
--- a/pkgs/development/python-modules/finalfusion/default.nix
+++ b/pkgs/development/python-modules/finalfusion/default.nix
@@ -1,11 +1,12 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, isPy3k
-, cython
-, numpy
-, toml
-, pytest
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  isPy3k,
+  cython,
+  numpy,
+  toml,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -22,18 +23,14 @@ buildPythonPackage rec {
     sha256 = "0pwzflamxqvpl1wcz0zbhhd6aa4xn18rmza6rggaic3ckidhyrh4";
   };
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
   propagatedBuildInputs = [
     numpy
     toml
   ];
 
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
   postPatch = ''
     patchShebangs tests/integration
@@ -54,7 +51,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python module for using finalfusion, word2vec, and fastText word embeddings";
     homepage = "https://github.com/finalfusion/finalfusion-python/";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     platforms = platforms.all;
     license = licenses.blueOak100;
   };
diff --git a/pkgs/development/python-modules/find-libpython/default.nix b/pkgs/development/python-modules/find-libpython/default.nix
index 33dcb7e812a6d..657c051c0396e 100644
--- a/pkgs/development/python-modules/find-libpython/default.nix
+++ b/pkgs/development/python-modules/find-libpython/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "find-libpython";
-  version = "0.3.1";
+  version = "0.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,7 +19,7 @@ buildPythonPackage rec {
     owner = "ktbarrett";
     repo = "find_libpython";
     rev = "refs/tags/v${version}";
-    hash = "sha256-DBBAgfYQ4UBFn5Osb1kpVBWbrZVBAvcVGQ/J4rJO/rQ=";
+    hash = "sha256-rYVGE9P5Xtm32kMoiqaZVMgnDbX3JBnI1uV80aNNOfw=";
   };
 
   nativeBuildInputs = [
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "find_libpython"
-  ];
+  pythonImportsCheck = [ "find_libpython" ];
 
   meta = with lib; {
     description = "Finds the libpython associated with your environment, wherever it may be hiding";
diff --git a/pkgs/development/python-modules/findimports/default.nix b/pkgs/development/python-modules/findimports/default.nix
index edd442729237b..7eb31b29b69bc 100644
--- a/pkgs/development/python-modules/findimports/default.nix
+++ b/pkgs/development/python-modules/findimports/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "findimports";
-  version = "2.4.0";
+  version = "2.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     owner = "mgedmin";
     repo = "findimports";
     rev = "refs/tags/${version}";
-    hash = "sha256-ar05DYSc/raYC1RJyLCxDYnd7Zjx20aczywlb6wc67Y=";
+    hash = "sha256-kHm0TiLe7zvUnU6+MR1M0xOt0gpMDJ5FJ5+HgY0LPeo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "findimports"
-  ];
+  pythonImportsCheck = [ "findimports" ];
 
   checkPhase = ''
     # Tests fails
@@ -42,7 +39,10 @@ buildPythonPackage rec {
     mainProgram = "findimports";
     homepage = "https://github.com/mgedmin/findimports";
     changelog = "https://github.com/mgedmin/findimports/blob/${version}/CHANGES.rst";
-    license = with licenses; [ gpl2Only /* or */ gpl3Only ];
+    license = with licenses; [
+      gpl2Only # or
+      gpl3Only
+    ];
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/findpython/default.nix b/pkgs/development/python-modules/findpython/default.nix
index 702f3b77bd895..140c912543edb 100644
--- a/pkgs/development/python-modules/findpython/default.nix
+++ b/pkgs/development/python-modules/findpython/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 
-# build time
-, pdm-backend
+  # build time
+  pdm-backend,
 
-# runtime
-, packaging
+  # runtime
+  packaging,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 let
@@ -28,24 +29,16 @@ buildPythonPackage {
     hash = "sha256-VuUrQJqSvL1JXPmByFrPE387PlHMdptG66IZuxq3Uzw=";
   };
 
-  nativeBuildInputs = [
-    pdm-backend
-  ];
+  nativeBuildInputs = [ pdm-backend ];
 
-  propagatedBuildInputs = [
-    packaging
-  ];
+  propagatedBuildInputs = [ packaging ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "findpython"
-  ];
+  pythonImportsCheck = [ "findpython" ];
 
   meta = with lib; {
-    description = "A utility to find python versions on your system";
+    description = "Utility to find python versions on your system";
     mainProgram = "findpython";
     homepage = "https://github.com/frostming/findpython";
     changelog = "https://github.com/frostming/findpython/releases/tag/${version}";
diff --git a/pkgs/development/python-modules/finetuning-scheduler/default.nix b/pkgs/development/python-modules/finetuning-scheduler/default.nix
new file mode 100644
index 0000000000000..808c8e1ab6962
--- /dev/null
+++ b/pkgs/development/python-modules/finetuning-scheduler/default.nix
@@ -0,0 +1,63 @@
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
+  pytestCheckHook,
+  torch,
+  pytorch-lightning,
+}:
+
+buildPythonPackage rec {
+  pname = "finetuning-scheduler";
+  version = "2.4.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "speediedan";
+    repo = "finetuning-scheduler";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-uSFGZseSJv519LpaddO6yP6AsIMZutEA0Y7Yr+mEWTQ=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    pytorch-lightning
+    torch
+  ];
+
+  # needed while lightning is installed as package `pytorch-lightning` rather than`lightning`:
+  env.PACKAGE_NAME = "pytorch";
+
+  nativeCheckInputs = [ pytestCheckHook ];
+  pytestFlagsArray = [ "tests" ];
+  disabledTests =
+    # torch._dynamo.exc.BackendCompilerFailed: backend='inductor' raised:
+    # LoweringException: ImportError: cannot import name 'triton_key' from 'triton.compiler.compiler'
+    lib.optionals (pythonOlder "3.12") [
+      "test_fts_dynamo_enforce_p0"
+      "test_fts_dynamo_resume"
+      "test_fts_dynamo_intrafit"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux) [
+      # slightly exceeds numerical tolerance on aarch64-linux:
+      "test_fts_frozen_bn_track_running_stats"
+    ];
+
+  pythonImportsCheck = [ "finetuning_scheduler" ];
+
+  meta = {
+    description = "PyTorch Lightning extension for foundation model experimentation with flexible fine-tuning schedules";
+    homepage = "https://finetuning-scheduler.readthedocs.io";
+    changelog = "https://github.com/speediedan/finetuning-scheduler/blob/${src.rev}/CHANGELOG.md";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ bcdarwin ];
+    # "No module named 'torch._C._distributed_c10d'; 'torch._C' is not a package" at import time:
+    broken = stdenv.hostPlatform.isDarwin;
+  };
+}
diff --git a/pkgs/development/python-modules/fingerprints/default.nix b/pkgs/development/python-modules/fingerprints/default.nix
index a4e3be44b06fa..6b3bf80810f67 100644
--- a/pkgs/development/python-modules/fingerprints/default.nix
+++ b/pkgs/development/python-modules/fingerprints/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, normality
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  normality,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,26 +22,18 @@ buildPythonPackage rec {
     hash = "sha256-U2UslCy1OagVTtllCKsEBX4zI/qIczbxs2Cxzy+/Xys=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    normality
-  ];
+  propagatedBuildInputs = [ normality ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "fingerprints"
-  ];
+  pythonImportsCheck = [ "fingerprints" ];
 
   meta = with lib; {
-    description = "A library to generate entity fingerprints";
+    description = "Library to generate entity fingerprints";
     homepage = "https://github.com/alephdata/fingerprints";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/finitude/default.nix b/pkgs/development/python-modules/finitude/default.nix
index d7f1af78750f0..cf2e80928f060 100644
--- a/pkgs/development/python-modules/finitude/default.nix
+++ b/pkgs/development/python-modules/finitude/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, prometheus-client
-, pyserial
-, pythonOlder
-, pyyaml
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  prometheus-client,
+  pyserial,
+  pythonOlder,
+  pyyaml,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-yCI5UCRDhw+dJoTKyjmHbAGBm3by2AyxHKlqCywnLcs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     pyserial
@@ -35,9 +34,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "finitude"
-  ];
+  pythonImportsCheck = [ "finitude" ];
 
   meta = with lib; {
     description = "Python module to get data from ABCD bus (RS-485) used by Carrier Infinity and Bryant Evolution HVAC systems";
diff --git a/pkgs/development/python-modules/fints/default.nix b/pkgs/development/python-modules/fints/default.nix
index 5cb94f04c61f5..f63a5a37324c3 100644
--- a/pkgs/development/python-modules/fints/default.nix
+++ b/pkgs/development/python-modules/fints/default.nix
@@ -1,37 +1,59 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, bleach
-, mt-940
-, requests
-, sepaxml
-, pytestCheckHook
-, pytest-mock
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  setuptools,
+  fetchFromGitHub,
+  bleach,
+  mt-940,
+  requests,
+  sepaxml,
+  pytestCheckHook,
+  pytest-mock,
 }:
 
 buildPythonPackage rec {
-  version = "4.0.0";
+  version = "4.1.0";
   pname = "fints";
-  disabled = pythonOlder "3.6";
+  pyproject = true;
 
-  format = "setuptools";
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "raphaelm";
     repo = "python-fints";
     rev = "v${version}";
-    hash = "sha256-SREprcrIdeKVpL22IViexwiKmFfbT2UbKEmxtVm6iu0=";
+    hash = "sha256-1k6ZeYlv0vxNkqQse9vi/NT6ag3DJONKCWB594LvER0=";
   };
 
-  propagatedBuildInputs = [ requests mt-940 sepaxml bleach ];
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace-fail "enum-tools~=0.9.0" ""
+    sed -i "/document_enum/d" fints/formals.py
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    bleach
+    mt-940
+    requests
+    sepaxml
+  ];
+
+  pythonImportsCheck = [ "fints" ];
 
-  nativeCheckInputs = [ pytestCheckHook pytest-mock ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-mock
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/raphaelm/python-fints/";
     description = "Pure-python FinTS (formerly known as HBCI) implementation";
     license = licenses.lgpl3Only;
-    maintainers = with maintainers; [ elohmeier dotlambda ];
+    maintainers = with maintainers; [
+      dotlambda
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/finvizfinance/default.nix b/pkgs/development/python-modules/finvizfinance/default.nix
index a953795b86637..0c3ff788d4684 100644
--- a/pkgs/development/python-modules/finvizfinance/default.nix
+++ b/pkgs/development/python-modules/finvizfinance/default.nix
@@ -1,20 +1,22 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, beautifulsoup4
-, datetime
-, lxml
-, pandas
-, pytest-mock
-, pytestCheckHook
-, requests
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  beautifulsoup4,
+  datetime,
+  lxml,
+  pandas,
+  pytest-mock,
+  pytestCheckHook,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "finvizfinance";
-  version = "0.14.7";
-  format = "setuptools";
+  version = "1.0.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.5";
 
@@ -22,20 +24,17 @@ buildPythonPackage rec {
     owner = "lit26";
     repo = "finvizfinance";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ht1bez04MAgugsQqa47q2ED7z8xpiXmzkOYBR7/PZHU=";
+    hash = "sha256-4aR1x9GgbxnJUpn1+i95djZEVBFTAIzhMLxHe2FaciY=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "bs4" "beautifulsoup4"
-  '';
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     pytest-mock
     pytestCheckHook
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     beautifulsoup4
     datetime
     lxml
@@ -43,9 +42,7 @@ buildPythonPackage rec {
     requests
   ];
 
-  pythonImportsCheck = [
-    "finvizfinance"
-  ];
+  pythonImportsCheck = [ "finvizfinance" ];
 
   disabledTests = [
     # Tests require network access
@@ -68,4 +65,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ icyrockcom ];
   };
 }
-
diff --git a/pkgs/development/python-modules/fiona/default.nix b/pkgs/development/python-modules/fiona/default.nix
index 35c9b57ce5555..eabd53ac55553 100644
--- a/pkgs/development/python-modules/fiona/default.nix
+++ b/pkgs/development/python-modules/fiona/default.nix
@@ -1,68 +1,75 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, cython
-, gdal
-, oldest-supported-numpy
-, setuptools
-, wheel
-, attrs
-, certifi
-, click
-, click-plugins
-, cligj
-, munch
-, shapely
-, boto3
-, pytestCheckHook
-, pytz
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  cython,
+  gdal,
+  setuptools,
+
+  # dependencies
+  attrs,
+  certifi,
+  click,
+  click-plugins,
+  cligj,
+
+  # optional-dependencies
+  pyparsing,
+  shapely,
+  boto3,
+
+  # tests
+  fsspec,
+  pytestCheckHook,
+  pytz,
+  snuggs,
 }:
 
 buildPythonPackage rec {
   pname = "fiona";
-  version = "1.9.6";
+  version = "1.10.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
-
   src = fetchFromGitHub {
     owner = "Toblerity";
     repo = "Fiona";
     rev = "refs/tags/${version}";
-    hash = "sha256-MboM3IwGF8cuz+jMQ3QVZFAHjpspQ6kVJincq7OEkCM=";
+    hash = "sha256-5NN6PBh+6HS9OCc9eC2TcBvkcwtI4DV8qXnz4tlaMXc=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     cython
     gdal # for gdal-config
-    oldest-supported-numpy
     setuptools
-    wheel
   ];
 
-  buildInputs = [
-    gdal
-  ];
+  buildInputs = [ gdal ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     attrs
     certifi
     click
-    cligj
     click-plugins
-    munch
+    cligj
   ];
 
-  passthru.optional-dependencies = {
-    calc = [ shapely ];
+  optional-dependencies = {
+    calc = [
+      pyparsing
+      shapely
+    ];
     s3 = [ boto3 ];
   };
 
   nativeCheckInputs = [
+    fsspec
     pytestCheckHook
     pytz
-  ] ++ passthru.optional-dependencies.s3;
+    shapely
+    snuggs
+  ] ++ optional-dependencies.s3;
 
   preCheck = ''
     rm -r fiona # prevent importing local fiona
@@ -84,18 +91,16 @@ buildPythonPackage rec {
     "test_append_memoryfile_drivers"
   ];
 
-  pythonImportsCheck = [
-    "fiona"
-  ];
+  pythonImportsCheck = [ "fiona" ];
 
   doInstallCheck = true;
 
-  meta = with lib; {
+  meta = {
     changelog = "https://github.com/Toblerity/Fiona/blob/${src.rev}/CHANGES.txt";
     description = "OGR's neat, nimble, no-nonsense API for Python";
     mainProgram = "fio";
     homepage = "https://fiona.readthedocs.io/";
-    license = licenses.bsd3;
-    maintainers = teams.geospatial.members;
+    license = lib.licenses.bsd3;
+    maintainers = lib.teams.geospatial.members;
   };
 }
diff --git a/pkgs/development/python-modules/fipy/default.nix b/pkgs/development/python-modules/fipy/default.nix
index d8f7c808a9aff..2be37738ebb18 100644
--- a/pkgs/development/python-modules/fipy/default.nix
+++ b/pkgs/development/python-modules/fipy/default.nix
@@ -1,33 +1,38 @@
-{ lib
-, buildPythonPackage
-, numpy
-, scipy
-, pyamg
-, future
-, matplotlib
-, tkinter
-, mpi4py
-, scikit-fmm
-, gmsh
-, python
-, stdenv
-, openssh
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  numpy,
+  scipy,
+  pyamg,
+  future,
+  matplotlib,
+  tkinter,
+  mpi4py,
+  scikit-fmm,
+  gmsh,
+  python,
+  stdenv,
+  openssh,
+  fetchFromGitHub,
+  pythonAtLeast,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "fipy";
-  version = "3.4.4";
+  version = "3.4.5";
   format = "setuptools";
 
-  disabled = pythonOlder "3.7";
+  # Python 3.12 is not yet supported.
+  # https://github.com/usnistgov/fipy/issues/997
+  # https://github.com/usnistgov/fipy/pull/1023
+  disabled = pythonOlder "3.7" || pythonAtLeast "3.12";
 
   src = fetchFromGitHub {
     owner = "usnistgov";
     repo = "fipy";
     rev = "refs/tags/${version}";
-    hash = "sha256-XZpm+gzysR2OXBcxWUEjP1PlaLuOL2NpmeKMCH+OEb4=";
+    hash = "sha256-345YrGQgHNq0FULjJjLqHksyfm/EHl+KyGfxwS6xK9U=";
   };
 
   propagatedBuildInputs = [
@@ -40,26 +45,26 @@ buildPythonPackage rec {
     future
     scikit-fmm
     openssh
-  ] ++ lib.optionals (!stdenv.isDarwin) [
-    gmsh
-  ];
+  ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ gmsh ];
 
-  nativeCheckInputs = lib.optionals (!stdenv.isDarwin) [
-    gmsh
-  ];
+  nativeCheckInputs = lib.optionals (!stdenv.hostPlatform.isDarwin) [ gmsh ];
+
+  # NOTE: Two of the doctests in fipy.matrices.scipyMatrix._ScipyMatrix.CSR fail, and there is no
+  # clean way to disable them.
+  doCheck = false;
 
   checkPhase = ''
     export OMPI_MCA_plm_rsh_agent=${openssh}/bin/ssh
     ${python.interpreter} setup.py test --modules
   '';
 
-  pythonImportsCheck = [
-    "fipy"
-  ];
+  # NOTE: Importing fipy within the sandbox will fail because plm_rsh_agent isn't set and the process isn't able
+  # to start a daemon on the builder.
+  # pythonImportsCheck = [ "fipy" ];
 
   meta = with lib; {
     homepage = "https://www.ctcms.nist.gov/fipy/";
-    description = "A Finite Volume PDE Solver Using Python";
+    description = "Finite Volume PDE Solver Using Python";
     changelog = "https://github.com/usnistgov/fipy/blob/${version}/CHANGELOG.rst";
     license = licenses.free;
     maintainers = with maintainers; [ wd15 ];
diff --git a/pkgs/development/python-modules/fire/default.nix b/pkgs/development/python-modules/fire/default.nix
index 1055bada787e4..05a94d1f2dc37 100644
--- a/pkgs/development/python-modules/fire/default.nix
+++ b/pkgs/development/python-modules/fire/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, six
-, hypothesis
-, mock
-, levenshtein
-, pytestCheckHook
-, termcolor
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  six,
+  hypothesis,
+  mock,
+  levenshtein,
+  pytestCheckHook,
+  termcolor,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "fire";
-  version = "0.5.0";
-  format = "setuptools";
+  version = "0.6.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -22,19 +23,12 @@ buildPythonPackage rec {
     owner = "google";
     repo = "python-fire";
     rev = "refs/tags/v${version}";
-    hash = "sha256-cwY1RRNtpAn6LnBASQLTNf4XXSPnfhOa1WgglGEM2/s=";
+    hash = "sha256-tBmsy0MuJu0Ei+4lUy/XfKoOU+OuH4xqmjPv/uKVuwg=";
   };
 
-  patches = [
-    # https://github.com/google/python-fire/pull/440
-    (fetchpatch {
-      name = "remove-asyncio-coroutine.patch";
-      url = "https://github.com/google/python-fire/pull/440/commits/30b775a7b36ce7fbc04656c7eec4809f99d3e178.patch";
-      hash = "sha256-GDAAlvZKbJl3OhajsEO0SZvWIXcPDi3eNKKVgbwSNKk=";
-    })
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     six
     termcolor
   ];
@@ -46,12 +40,10 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "fire"
-  ];
+  pythonImportsCheck = [ "fire" ];
 
   meta = with lib; {
-    description = "A library for automatically generating command line interfaces";
+    description = "Library for automatically generating command line interfaces";
     longDescription = ''
       Python Fire is a library for automatically generating command line
       interfaces (CLIs) from absolutely any Python object.
diff --git a/pkgs/development/python-modules/firebase-messaging/default.nix b/pkgs/development/python-modules/firebase-messaging/default.nix
index 5acd1ff480225..0d6118e44c4e8 100644
--- a/pkgs/development/python-modules/firebase-messaging/default.nix
+++ b/pkgs/development/python-modules/firebase-messaging/default.nix
@@ -1,26 +1,29 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, http-ece
-, poetry-core
-, protobuf
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
-, sphinx
-, sphinx-autodoc-typehints
-, sphinx-rtd-theme
-, sphinxHook
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  async-timeout,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  http-ece,
+  poetry-core,
+  protobuf,
+  pytest-asyncio,
+  pytest-mock,
+  pytest-socket,
+  pytestCheckHook,
+  pythonOlder,
+  requests-mock,
+  sphinx,
+  sphinx-autodoc-typehints,
+  sphinx-rtd-theme,
+  sphinxHook,
 }:
 
 buildPythonPackage rec {
   pname = "firebase-messaging";
-  version = "0.2.1";
+  version = "0.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -29,7 +32,7 @@ buildPythonPackage rec {
     owner = "sdb9696";
     repo = "firebase-messaging";
     rev = "refs/tags/${version}";
-    hash = "sha256-8e+S12ZMqAmK7OR7O45QsRa0UKQq6cngeaqz2ugi6iY=";
+    hash = "sha256-pZpnekJ11yx3L8l56vZOa4uS+jJMxUkYODgNAqysVeY=";
   };
 
   outputs = [
@@ -43,10 +46,10 @@ buildPythonPackage rec {
   ] ++ passthru.optional-dependencies.docs;
 
   propagatedBuildInputs = [
+    aiohttp
     cryptography
     http-ece
     protobuf
-    requests
   ];
 
   passthru.optional-dependencies = {
@@ -57,15 +60,15 @@ buildPythonPackage rec {
     ];
   };
 
-  pythonImportsCheck = [
-    "firebase_messaging"
-  ];
+  pythonImportsCheck = [ "firebase_messaging" ];
 
   nativeCheckInputs = [
+    aioresponses
     async-timeout
     requests-mock
     pytest-asyncio
     pytest-mock
+    pytest-socket
     pytestCheckHook
   ];
 
@@ -74,6 +77,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/sdb9696/firebase-messaging";
     changelog = "https://github.com/sdb9696/firebase-messaging/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/fireflyalgorithm/default.nix b/pkgs/development/python-modules/fireflyalgorithm/default.nix
index 2a51a96f114fd..96c7e0674ba68 100644
--- a/pkgs/development/python-modules/fireflyalgorithm/default.nix
+++ b/pkgs/development/python-modules/fireflyalgorithm/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "fireflyalgorithm";
-  version = "0.4.4";
+  version = "0.4.5";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -18,27 +19,19 @@ buildPythonPackage rec {
     owner = "firefly-cpp";
     repo = "FireflyAlgorithm";
     rev = "refs/tags/${version}";
-    hash = "sha256-xsTgSHBtN4gGw+9YvprcLubnCXSNRdn4abcz391cMEE=";
+    hash = "sha256-dJnjeJN9NI8G/haYeOiMtAl56cExqMk0iTWpaybl4nE=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "fireflyalgorithm"
-  ];
+  pythonImportsCheck = [ "fireflyalgorithm" ];
 
   meta = with lib; {
-    description = "An implementation of the stochastic nature-inspired algorithm for optimization";
+    description = "Implementation of the stochastic nature-inspired algorithm for optimization";
     mainProgram = "firefly-algorithm";
     homepage = "https://github.com/firefly-cpp/FireflyAlgorithm";
     changelog = "https://github.com/firefly-cpp/FireflyAlgorithm/blob/${version}/CHANGELOG.md";
diff --git a/pkgs/development/python-modules/firetv/default.nix b/pkgs/development/python-modules/firetv/default.nix
index 71525fe802f7e..baba36b127aad 100644
--- a/pkgs/development/python-modules/firetv/default.nix
+++ b/pkgs/development/python-modules/firetv/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, adb-homeassistant
-, flask
-, pure-python-adb-homeassistant
-, pycryptodome
-, pyyaml
-, rsa
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  adb-homeassistant,
+  flask,
+  pure-python-adb-homeassistant,
+  pycryptodome,
+  pyyaml,
+  rsa,
 }:
 buildPythonPackage rec {
   pname = "firetv";
diff --git a/pkgs/development/python-modules/first/default.nix b/pkgs/development/python-modules/first/default.nix
index 0e75f61a9f706..70edb11145427 100644
--- a/pkgs/development/python-modules/first/default.nix
+++ b/pkgs/development/python-modules/first/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,12 +19,10 @@ buildPythonPackage rec {
 
   doCheck = false; # no tests
 
-  pythonImportsCheck = [
-    "first"
-  ];
+  pythonImportsCheck = [ "first" ];
 
   meta = with lib; {
-    description = "The function you always missed in Python";
+    description = "Function you always missed in Python";
     homepage = "https://github.com/hynek/first/";
     changelog = "https://github.com/hynek/first/blob/${version}/HISTORY.rst";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/fissix/default.nix b/pkgs/development/python-modules/fissix/default.nix
new file mode 100644
index 0000000000000..d600d8410795f
--- /dev/null
+++ b/pkgs/development/python-modules/fissix/default.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  appdirs,
+  pytestCheckHook,
+}:
+
+let
+  version = "24.4.24";
+in
+
+buildPythonPackage {
+  pname = "fissix";
+  inherit version;
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "amyreese";
+    repo = "fissix";
+    rev = "v${version}";
+    hash = "sha256-geGctke+1PWFqJyiH1pQ0zWj9wVIjV/SQ5njOOk9gOw=";
+  };
+
+  build-system = [ flit-core ];
+
+  dependencies = [ appdirs ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  preCheck = ''
+    export HOME=$(mktemp -d)
+  '';
+
+  pythonImportsCheck = [ "fissix" ];
+
+  meta = {
+    description = "Backport of latest lib2to3, with enhancements";
+    homepage = "https://github.com/amyreese/fissix";
+    sourceProvenance = [ lib.sourceTypes.fromSource ];
+    license = lib.licenses.psfl;
+    maintainers = [ lib.maintainers.emily ];
+  };
+}
diff --git a/pkgs/development/python-modules/fitbit/default.nix b/pkgs/development/python-modules/fitbit/default.nix
index 439d74a26a3df..f53eba81b2ea1 100644
--- a/pkgs/development/python-modules/fitbit/default.nix
+++ b/pkgs/development/python-modules/fitbit/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, freezegun
-, mock
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, requests-mock
-, requests-oauthlib
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  mock,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  requests-mock,
+  requests-oauthlib,
 }:
 
 buildPythonPackage rec {
@@ -41,14 +42,12 @@ buildPythonPackage rec {
     requests-mock
   ];
 
-  pythonImportsCheck = [
-    "fitbit"
-  ];
+  pythonImportsCheck = [ "fitbit" ];
 
   meta = with lib; {
     description = "Fitbit API Python Client Implementation";
     homepage = "https://github.com/orcasgit/python-fitbit";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/fivem-api/default.nix b/pkgs/development/python-modules/fivem-api/default.nix
index aef6fc342129f..747509a838680 100644
--- a/pkgs/development/python-modules/fivem-api/default.nix
+++ b/pkgs/development/python-modules/fivem-api/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -18,20 +19,14 @@ buildPythonPackage rec {
     hash = "sha256-6llrMGWbDRmysEw+B6B115hLS5xlktQEXiSHzPLbV5s=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "fivem"
-  ];
+  pythonImportsCheck = [ "fivem" ];
 
   meta = with lib; {
     description = "Module for interacting with FiveM servers";
diff --git a/pkgs/development/python-modules/fixerio/default.nix b/pkgs/development/python-modules/fixerio/default.nix
index 56ba061b42331..5501817652631 100644
--- a/pkgs/development/python-modules/fixerio/default.nix
+++ b/pkgs/development/python-modules/fixerio/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, pytestCheckHook
-, httpretty
-, responses
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  pytestCheckHook,
+  httpretty,
+  responses,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     sha256 = "009h1mys175xdyznn5bl980vly40544s4ph1zcgqwg2i2ic93gvb";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     httpretty
diff --git a/pkgs/development/python-modules/fixtures/default.nix b/pkgs/development/python-modules/fixtures/default.nix
index 2570b1a274b64..a14f24cb8e5fd 100644
--- a/pkgs/development/python-modules/fixtures/default.nix
+++ b/pkgs/development/python-modules/fixtures/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pbr
-, setuptools
-, testtools
-, mock
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pbr,
+  setuptools,
+  testtools,
+  mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,14 +24,10 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  propagatedBuildInputs = [
-    pbr
-  ];
+  propagatedBuildInputs = [ pbr ];
 
   passthru.optional-dependencies = {
-    streams = [
-      testtools
-    ];
+    streams = [ testtools ];
   };
 
   nativeCheckInputs = [
diff --git a/pkgs/development/python-modules/fjaraskupan/default.nix b/pkgs/development/python-modules/fjaraskupan/default.nix
index 533847786c891..0763fa17b1f5e 100644
--- a/pkgs/development/python-modules/fjaraskupan/default.nix
+++ b/pkgs/development/python-modules/fjaraskupan/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, bleak
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  bleak,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-3jw42lsCwNkFptMNpnhtbrPIkZP/8lUCcMigzq8Hbc4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  dependencies = [
-    bleak
-  ];
+  dependencies = [ bleak ];
 
   nativeCheckInputs = [
     pytest-mock
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "fjaraskupan"
-  ];
+  pythonImportsCheck = [ "fjaraskupan" ];
 
   meta = with lib; {
     description = "Module for controlling Fjäråskupan kitchen fans";
diff --git a/pkgs/development/python-modules/flake8-blind-except/default.nix b/pkgs/development/python-modules/flake8-blind-except/default.nix
index c25985e16819d..b3fe8f160cb84 100644
--- a/pkgs/development/python-modules/flake8-blind-except/default.nix
+++ b/pkgs/development/python-modules/flake8-blind-except/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pycodestyle
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pycodestyle,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,19 +18,15 @@ buildPythonPackage rec {
     hash = "sha256-8lpXWp3LPus8dgv5wi22C4taIxICJO0fqppD913X3RY=";
   };
 
-  propagatedBuildInputs = [
-    pycodestyle
-  ];
+  propagatedBuildInputs = [ pycodestyle ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "flake8_blind_except"
-  ];
+  pythonImportsCheck = [ "flake8_blind_except" ];
 
   meta = with lib; {
-    description = "A flake8 extension that checks for blind except: statements";
+    description = "Flake8 extension that checks for blind except: statements";
     homepage = "https://github.com/elijahandrews/flake8-blind-except";
     license = licenses.mit;
     maintainers = with maintainers; [ johbo ];
diff --git a/pkgs/development/python-modules/flake8-bugbear/default.nix b/pkgs/development/python-modules/flake8-bugbear/default.nix
index 5a6305744dbd8..d8315d9bd5be0 100644
--- a/pkgs/development/python-modules/flake8-bugbear/default.nix
+++ b/pkgs/development/python-modules/flake8-bugbear/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, attrs
-, flake8
-, pytestCheckHook
-, pythonOlder
-, hypothesis
-, hypothesmith
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  attrs,
+  flake8,
+  pytestCheckHook,
+  pythonOlder,
+  hypothesis,
+  hypothesmith,
 }:
 
 buildPythonPackage rec {
   pname = "flake8-bugbear";
-  version = "24.4.26";
+  version = "24.8.19";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -20,7 +21,7 @@ buildPythonPackage rec {
     owner = "PyCQA";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-jJ4/l2nzjqJDCe1pFrdkMvB5WJ+GJarOHgGZSzCS6nc=";
+    hash = "sha256-YAWGXlgcxSvCucv886UjcC+JU1xp5ZP/lK+AXFI353k=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/flake8-debugger/default.nix b/pkgs/development/python-modules/flake8-debugger/default.nix
index 32885570ba764..aa7e23ecd8df3 100644
--- a/pkgs/development/python-modules/flake8-debugger/default.nix
+++ b/pkgs/development/python-modules/flake8-debugger/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flake8
-, pycodestyle
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flake8,
+  pycodestyle,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,13 +25,9 @@ buildPythonPackage rec {
     pycodestyle
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "flake8_debugger"
-  ];
+  pythonImportsCheck = [ "flake8_debugger" ];
 
   meta = with lib; {
     description = "ipdb/pdb statement checker plugin for flake8";
diff --git a/pkgs/development/python-modules/flake8-docstrings/default.nix b/pkgs/development/python-modules/flake8-docstrings/default.nix
index c3a08f9315573..3cd84284a1c41 100644
--- a/pkgs/development/python-modules/flake8-docstrings/default.nix
+++ b/pkgs/development/python-modules/flake8-docstrings/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flake8
-, pydocstyle
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flake8,
+  pydocstyle,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "flake8_docstrings"
-  ];
+  pythonImportsCheck = [ "flake8_docstrings" ];
 
   meta = with lib; {
     description = "Extension for flake8 which uses pydocstyle to check docstrings";
diff --git a/pkgs/development/python-modules/flake8-future-import/default.nix b/pkgs/development/python-modules/flake8-future-import/default.nix
index 7b58dddb853a5..8ea9f8c7d73d4 100644
--- a/pkgs/development/python-modules/flake8-future-import/default.nix
+++ b/pkgs/development/python-modules/flake8-future-import/default.nix
@@ -1,19 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy27
-, isPy38
-, isPy39
-, pythonAtLeast
-, flake8
-, six
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  isPy38,
+  isPy39,
+  pythonAtLeast,
+  setuptools,
+  flake8,
+  six,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "flake8-future-import";
   version = "0.4.7";
-  format = "setuptools";
+  pyproject = true;
 
   # PyPI tarball doesn't include the test suite
   src = fetchFromGitHub {
@@ -23,23 +25,24 @@ buildPythonPackage rec {
     hash = "sha256-2EcCOx3+PCk9LYpQjHCFNpQVI2Pdi+lWL8R6bNadFe0=";
   };
 
-  patches = lib.optionals (pythonAtLeast "3.10") [
-    ./fix-annotations-version-11.patch
-  ] ++ lib.optionals (isPy38 || isPy39) [
-    ./fix-annotations-version-10.patch
-  ] ++ lib.optionals isPy27 [
-    # Upstream disables this test case naturally on python 3, but it also fails
-    # inside NixPkgs for python 2. Since it's going to be deleted, we just skip it
-    # on py2 as well.
-    ./skip-test.patch
-  ];
+  patches =
+    lib.optionals (pythonAtLeast "3.10") [ ./fix-annotations-version-11.patch ]
+    ++ lib.optionals (isPy38 || isPy39) [ ./fix-annotations-version-10.patch ]
+    ++ lib.optionals isPy27 [
+      # Upstream disables this test case naturally on python 3, but it also fails
+      # inside NixPkgs for python 2. Since it's going to be deleted, we just skip it
+      # on py2 as well.
+      ./skip-test.patch
+    ];
 
   postPatch = ''
     substituteInPlace "test_flake8_future_import.py" \
-      --replace "'flake8'" "'${lib.getExe flake8}'"
+      --replace-fail "'flake8'" "'${lib.getExe flake8}'"
   '';
 
-  propagatedBuildInputs = [ flake8 ];
+  build-system = [ setuptools ];
+
+  dependencies = [ flake8 ];
 
   nativeCheckInputs = [ six ];
 
@@ -52,7 +55,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A flake8 extension to check for the imported __future__ modules to make it easier to have a consistent code base";
+    description = "Flake8 extension to check for the imported __future__ modules to make it easier to have a consistent code base";
     homepage = "https://github.com/xZise/flake8-future-import";
     license = licenses.mit;
   };
diff --git a/pkgs/development/python-modules/flake8-import-order/default.nix b/pkgs/development/python-modules/flake8-import-order/default.nix
index 51c9b9eb569ed..ea860b563edb1 100644
--- a/pkgs/development/python-modules/flake8-import-order/default.nix
+++ b/pkgs/development/python-modules/flake8-import-order/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flake8
-, pycodestyle
-, pylama
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flake8,
+  pycodestyle,
+  pylama,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-4jlB+JLaPgwJ1xG6u7DHO8c1JC6bIWtyZhZ1ipINkA4=";
   };
 
-  propagatedBuildInputs = [
-    pycodestyle
-  ];
+  propagatedBuildInputs = [ pycodestyle ];
 
   nativeCheckInputs = [
     flake8
@@ -31,15 +30,16 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "flake8_import_order"
-  ];
+  pythonImportsCheck = [ "flake8_import_order" ];
 
   meta = with lib; {
     description = "Flake8 and pylama plugin that checks the ordering of import statements";
     homepage = "https://github.com/PyCQA/flake8-import-order";
     changelog = "https://github.com/PyCQA/flake8-import-order/blob/${version}/CHANGELOG.rst";
-    license = with licenses; [ lgpl3 mit ];
-    maintainers = with maintainers; [ ];
+    license = with licenses; [
+      lgpl3
+      mit
+    ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/flake8-length/default.nix b/pkgs/development/python-modules/flake8-length/default.nix
index 9214a92ce5171..1e88a0280cc8b 100644
--- a/pkgs/development/python-modules/flake8-length/default.nix
+++ b/pkgs/development/python-modules/flake8-length/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flake8
-, flit-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flake8,
+  flit-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,25 +20,15 @@ buildPythonPackage rec {
     hash = "sha256-Dr1hTCU2G1STczXJsUPMGFYs1NpIAk1I95vxXsRTtRA=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    flake8
-  ];
+  propagatedBuildInputs = [ flake8 ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "flake8_length"
-  ];
+  pythonImportsCheck = [ "flake8_length" ];
 
-  pytestFlagsArray = [
-    "tests/"
-  ];
+  pytestFlagsArray = [ "tests/" ];
 
   meta = with lib; {
     description = "Flake8 plugin for a smart line length validation";
diff --git a/pkgs/development/python-modules/flake8-polyfill/default.nix b/pkgs/development/python-modules/flake8-polyfill/default.nix
index aef7cab9d1fc9..faf3c0bdb030f 100644
--- a/pkgs/development/python-modules/flake8-polyfill/default.nix
+++ b/pkgs/development/python-modules/flake8-polyfill/default.nix
@@ -1,26 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, flake8
-, mock
-, pep8
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchpatch,
+  fetchPypi,
+  setuptools,
+  flake8,
+  mock,
+  pep8,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "flake8-polyfill";
   version = "1.0.2";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "1nlf1mkqw856vi6782qcglqhaacb23khk9wkcgn55npnjxshhjz4";
   };
 
-  propagatedBuildInputs = [
-    flake8
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ flake8 ];
 
   nativeCheckInputs = [
     mock
@@ -40,12 +42,10 @@ buildPythonPackage rec {
   postPatch = ''
     # Failed: [pytest] section in setup.cfg files is no longer supported, change to [tool:pytest] instead.
     substituteInPlace setup.cfg \
-      --replace pytest 'tool:pytest'
+      --replace-fail pytest 'tool:pytest'
   '';
 
-  pythonImportsCheck = [
-    "flake8_polyfill"
-  ];
+  pythonImportsCheck = [ "flake8_polyfill" ];
 
   meta = with lib; {
     homepage = "https://gitlab.com/pycqa/flake8-polyfill";
diff --git a/pkgs/development/python-modules/flake8/default.nix b/pkgs/development/python-modules/flake8/default.nix
index 9efb1fab948c7..624f36a7447aa 100644
--- a/pkgs/development/python-modules/flake8/default.nix
+++ b/pkgs/development/python-modules/flake8/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, mccabe
-, pycodestyle
-, pyflakes
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  mccabe,
+  pycodestyle,
+  pyflakes,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "flake8";
-  version = "7.0.0";
+  version = "7.1.1";
 
   disabled = pythonOlder "3.8";
 
@@ -21,25 +22,22 @@ buildPythonPackage rec {
     owner = "PyCQA";
     repo = "flake8";
     rev = version;
-    hash = "sha256-2oVvchDhH3cX90RTIquYLyr+rzHxzQgYA4k4ReTxpH8=";
+    hash = "sha256-6iCZEapftHqd9okJS1wMzIjjmWahrmmZtXd7SUMVcmE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     mccabe
     pycodestyle
     pyflakes
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "The modular source code checker: pep8, pyflakes and co";
+    changelog = "https://github.com/PyCQA/flake8/blob/${src.rev}/docs/source/release-notes/${version}.rst";
+    description = "Modular source code checker: pep8, pyflakes and co";
     homepage = "https://github.com/PyCQA/flake8";
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/pkgs/development/python-modules/flaky/default.nix b/pkgs/development/python-modules/flaky/default.nix
index 884593dbabfa8..ef6b8d64655cf 100644
--- a/pkgs/development/python-modules/flaky/default.nix
+++ b/pkgs/development/python-modules/flaky/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, mock
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  mock,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-RyBKgeyQXz1az71h2uq8raj51AMWFtm8sGGEYXKWmfU=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     mock
@@ -39,5 +38,4 @@ buildPythonPackage rec {
     description = "Plugin for nose or py.test that automatically reruns flaky tests";
     license = licenses.asl20;
   };
-
 }
diff --git a/pkgs/development/python-modules/flametree/default.nix b/pkgs/development/python-modules/flametree/default.nix
index 2a3ff69235c39..84d8a5370a092 100644
--- a/pkgs/development/python-modules/flametree/default.nix
+++ b/pkgs/development/python-modules/flametree/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fontconfig
-, matplotlib
-, pandas
-, pytestCheckHook
-, weasyprint
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fontconfig,
+  matplotlib,
+  pandas,
+  pytestCheckHook,
+  weasyprint,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/flammkuchen/default.nix b/pkgs/development/python-modules/flammkuchen/default.nix
index 61758ae482b86..8af55dfe7c028 100644
--- a/pkgs/development/python-modules/flammkuchen/default.nix
+++ b/pkgs/development/python-modules/flammkuchen/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, pandas
-, pytestCheckHook
-, scipy
-, setuptools
-, tables
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  pandas,
+  pytestCheckHook,
+  scipy,
+  setuptools,
+  tables,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-z68HBsU9J6oe8+YL4OOQiMYQRs3TZUDM+e2ssqo6BFI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     numpy
diff --git a/pkgs/development/python-modules/flasgger/default.nix b/pkgs/development/python-modules/flasgger/default.nix
index 1be41854b52ea..7d52055c8956b 100644
--- a/pkgs/development/python-modules/flasgger/default.nix
+++ b/pkgs/development/python-modules/flasgger/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
 
-# dependencies
-, flask
-, jsonschema
-, mistune
-, pyyaml
-, six
-, werkzeug
+  # dependencies
+  flask,
+  jsonschema,
+  mistune,
+  pyyaml,
+  six,
+  werkzeug,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -49,13 +50,9 @@ buildPythonPackage rec {
     werkzeug
   ];
 
-  pythonImportsCheck = [
-    "flasgger"
-  ];
+  pythonImportsCheck = [ "flasgger" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   doCheck = false; # missing flex dependency
 
@@ -63,6 +60,6 @@ buildPythonPackage rec {
     description = "Easy OpenAPI specs and Swagger UI for your Flask API";
     homepage = "https://github.com/flasgger/flasgger/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/flashtext/default.nix b/pkgs/development/python-modules/flashtext/default.nix
index e4aa3a60c7eb5..7988af840628a 100644
--- a/pkgs/development/python-modules/flashtext/default.nix
+++ b/pkgs/development/python-modules/flashtext/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/flask-admin/default.nix b/pkgs/development/python-modules/flask-admin/default.nix
index ae12e6353e2b8..e9da4f44b6659 100644
--- a/pkgs/development/python-modules/flask-admin/default.nix
+++ b/pkgs/development/python-modules/flask-admin/default.nix
@@ -1,24 +1,24 @@
-{ lib
-, azure-storage-blob
-, boto
-, buildPythonPackage
-, fetchpatch
-, fetchFromGitHub
-, flask
-, flask-mongoengine
-, flask-sqlalchemy
-, geoalchemy2
-, mongoengine
-, pillow
-, psycopg2
-, pymongo
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, shapely
-, sqlalchemy
-, wtf-peewee
-, wtforms
+{
+  lib,
+  azure-storage-blob,
+  buildPythonPackage,
+  fetchpatch,
+  fetchFromGitHub,
+  flask,
+  flask-mongoengine,
+  flask-sqlalchemy,
+  geoalchemy2,
+  mongoengine,
+  pillow,
+  psycopg2,
+  pymongo,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  shapely,
+  sqlalchemy,
+  wtf-peewee,
+  wtforms,
 }:
 
 buildPythonPackage rec {
@@ -44,9 +44,7 @@ buildPythonPackage rec {
     })
   ];
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     flask
@@ -54,7 +52,6 @@ buildPythonPackage rec {
   ];
 
   optional-dependencies = {
-    aws = [ boto ];
     azure = [ azure-storage-blob ];
   };
 
@@ -91,9 +88,7 @@ buildPythonPackage rec {
     "flask_admin/tests/peeweemodel/test_basic.py"
   ];
 
-  pythonImportsCheck = [
-    "flask_admin"
-  ];
+  pythonImportsCheck = [ "flask_admin" ];
 
   meta = with lib; {
     description = "Admin interface framework for Flask";
diff --git a/pkgs/development/python-modules/flask-api/default.nix b/pkgs/development/python-modules/flask-api/default.nix
index e837dc71df379..7b15e047ae19e 100644
--- a/pkgs/development/python-modules/flask-api/default.nix
+++ b/pkgs/development/python-modules/flask-api/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, fetchpatch
-
-# build-system
-, setuptools
-
-# dependencies
-, flask
-
-# tests
-, markdown
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  fetchpatch,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  flask,
+
+  # tests
+  markdown,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -37,13 +38,9 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    flask
-  ];
+  propagatedBuildInputs = [ flask ];
 
   nativeCheckInputs = [
     markdown
diff --git a/pkgs/development/python-modules/flask-appbuilder/default.nix b/pkgs/development/python-modules/flask-appbuilder/default.nix
index 3598500e37f56..64efa21f8ced2 100644
--- a/pkgs/development/python-modules/flask-appbuilder/default.nix
+++ b/pkgs/development/python-modules/flask-appbuilder/default.nix
@@ -1,33 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, apispec
-, colorama
-, click
-, email-validator
-, flask
-, flask-babel
-, flask-limiter
-, flask-login
-, flask-openid
-, flask-sqlalchemy
-, flask-wtf
-, flask-jwt-extended
-, jsonschema
-, marshmallow
-, marshmallow-enum
-, marshmallow-sqlalchemy
-, python-dateutil
-, pythonOlder
-, prison
-, pyjwt
-, pyyaml
-, sqlalchemy-utils
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  apispec,
+  colorama,
+  click,
+  email-validator,
+  flask,
+  flask-babel,
+  flask-limiter,
+  flask-login,
+  flask-openid,
+  flask-sqlalchemy,
+  flask-wtf,
+  flask-jwt-extended,
+  jsonschema,
+  marshmallow,
+  marshmallow-sqlalchemy,
+  python-dateutil,
+  pythonOlder,
+  prison,
+  pyjwt,
+  pyyaml,
+  sqlalchemy-utils,
 }:
 
 buildPythonPackage rec {
   pname = "flask-appbuilder";
-  version = "4.4.1";
+  version = "4.5.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -35,7 +35,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "Flask-AppBuilder";
     inherit version;
-    hash = "sha256-pk1MO1GXVHdEx8QffrD+Aga6Fnc2nOR5A90Iw8m3U70=";
+    hash = "sha256-CoQ5/pOR1xy71koUm1uwTJDLTDROTjJQMW9ZcgtzV50=";
   };
 
   propagatedBuildInputs = [
@@ -53,7 +53,6 @@ buildPythonPackage rec {
     flask-jwt-extended
     jsonschema
     marshmallow
-    marshmallow-enum
     marshmallow-sqlalchemy
     python-dateutil
     prison
@@ -74,16 +73,14 @@ buildPythonPackage rec {
   # Majority of tests require network access or mongo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "flask_appbuilder"
-  ];
+  pythonImportsCheck = [ "flask_appbuilder" ];
 
   meta = with lib; {
     description = "Application development framework, built on top of Flask";
     homepage = "https://github.com/dpgaspar/flask-appbuilder/";
     changelog = "https://github.com/dpgaspar/Flask-AppBuilder/blob/v${version}/CHANGELOG.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     # Support for flask-sqlalchemy >= 3.0 is missing, https://github.com/dpgaspar/Flask-AppBuilder/pull/1940
     broken = true;
   };
diff --git a/pkgs/development/python-modules/flask-assets/default.nix b/pkgs/development/python-modules/flask-assets/default.nix
index def8f7b7754fb..46e225783493f 100644
--- a/pkgs/development/python-modules/flask-assets/default.nix
+++ b/pkgs/development/python-modules/flask-assets/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, flask
-, webassets
-, flask-script
-, nose
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  flask,
+  webassets,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,17 +25,19 @@ buildPythonPackage rec {
     substituteInPlace tests/test_integration.py --replace "'/foo'" "'/x/foo'"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     flask
     webassets
-    flask-script
-    nose
   ];
 
+  doCheck = false; # tests are broken with webassets 2.0
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "flask_assets" ];
+
   meta = with lib; {
     homepage = "https://github.com/miracle2k/flask-assets";
     description = "Asset management for Flask, to compress and merge CSS and Javascript files";
diff --git a/pkgs/development/python-modules/flask-babel/default.nix b/pkgs/development/python-modules/flask-babel/default.nix
index f8a6d3b31000a..dfeda89807aaf 100644
--- a/pkgs/development/python-modules/flask-babel/default.nix
+++ b/pkgs/development/python-modules/flask-babel/default.nix
@@ -1,24 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, poetry-core
+  # build-system
+  poetry-core,
 
-# docs
-, furo
-, sphinxHook
+  # docs
+  furo,
+  sphinxHook,
 
-# runtime
-, babel
-, flask
-, jinja2
-, pytz
+  # runtime
+  babel,
+  flask,
+  jinja2,
+  pytz,
 
-# tests
-, pytest-mock
-, pytestCheckHook
+  # tests
+  pytest-mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -51,9 +51,7 @@ buildPythonPackage rec {
     pytz
   ];
 
-  pythonImportsCheck = [
-    "flask_babel"
-  ];
+  pythonImportsCheck = [ "flask_babel" ];
 
   checkInputs = [
     pytest-mock
diff --git a/pkgs/development/python-modules/flask-babelex/default.nix b/pkgs/development/python-modules/flask-babelex/default.nix
index 7d3679e8f5881..6fc4381c602fa 100644
--- a/pkgs/development/python-modules/flask-babelex/default.nix
+++ b/pkgs/development/python-modules/flask-babelex/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flask
-, babel
-, speaklater
-, jinja2
-, pytestCheckHook
-, pytz
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flask,
+  babel,
+  speaklater,
+  jinja2,
+  pytestCheckHook,
+  pytz,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     pytz
   ];
 
-  pytestFlagsArray = [
-    "tests/tests.py"
-  ];
+  pytestFlagsArray = [ "tests/tests.py" ];
 
   disabledTests = [
     # Disabled 3 tests failing due to string representations of dates:
diff --git a/pkgs/development/python-modules/flask-bcrypt/default.nix b/pkgs/development/python-modules/flask-bcrypt/default.nix
index 1d9db3cb22f24..da98864cf818a 100644
--- a/pkgs/development/python-modules/flask-bcrypt/default.nix
+++ b/pkgs/development/python-modules/flask-bcrypt/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flask
-, bcrypt
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flask,
+  bcrypt,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ unittestCheckHook ];
 
-  pythonImportsCheck = [
-    "flask_bcrypt"
-  ];
+  pythonImportsCheck = [ "flask_bcrypt" ];
 
   meta = with lib; {
     description = "Brcrypt hashing for Flask";
diff --git a/pkgs/development/python-modules/flask-bootstrap/default.nix b/pkgs/development/python-modules/flask-bootstrap/default.nix
index 3088e7392a484..4c4e24aa7225c 100644
--- a/pkgs/development/python-modules/flask-bootstrap/default.nix
+++ b/pkgs/development/python-modules/flask-bootstrap/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi, flask, visitor, dominate }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flask,
+  visitor,
+  dominate,
+}:
 
 buildPythonPackage rec {
   pname = "flask-bootstrap";
@@ -10,12 +17,16 @@ buildPythonPackage rec {
     sha256 = "1j1s2bplaifsnmr8vfxa3czca4rz78xyhrg4chx39xl306afs26b";
   };
 
-  propagatedBuildInputs = [ flask visitor dominate ];
+  propagatedBuildInputs = [
+    flask
+    visitor
+    dominate
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/mbr/flask-bootstrap";
-    description = "Ready-to-use Twitter-bootstrap for use in Flask.";
+    description = "Ready-to-use Twitter-bootstrap for use in Flask";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/flask-caching/default.nix b/pkgs/development/python-modules/flask-caching/default.nix
index 7ac2830bcf185..29e997acdf9a9 100644
--- a/pkgs/development/python-modules/flask-caching/default.nix
+++ b/pkgs/development/python-modules/flask-caching/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, cachelib
-, flask
-, asgiref
-, pytest-asyncio
-, pytest-xprocess
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  cachelib,
+  flask,
+  asgiref,
+  pytest-asyncio,
+  pytest-xprocess,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "flask-caching";
-  version = "2.1.0";
+  version = "2.3.0";
   format = "setuptools";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    pname = "Flask-Caching";
+    pname = "flask_caching";
     inherit version;
-    hash = "sha256-t1AMFFE1g2qVLj3jqAiB2WVOMnopyFLJJlYH9cRJI1w=";
+    hash = "sha256-1+TKZKM7Sf6zOfzdF+a6JfXgEWjPiF5TeQ6IX4Ok0s8=";
   };
 
   postPatch = ''
@@ -40,23 +41,25 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTests = [
-    # backend_cache relies on pytest-cache, which is a stale package from 2013
-    "backend_cache"
-    # optional backends
-    "Redis"
-    "Memcache"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # ignore flaky test
-    "test_cache_timeout_dynamic"
-    "test_cached_view_class"
-  ];
+  disabledTests =
+    [
+      # backend_cache relies on pytest-cache, which is a stale package from 2013
+      "backend_cache"
+      # optional backends
+      "Redis"
+      "Memcache"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # ignore flaky test
+      "test_cache_timeout_dynamic"
+      "test_cached_view_class"
+    ];
 
   meta = with lib; {
-    description = "A caching extension for Flask";
+    description = "Caching extension for Flask";
     homepage = "https://github.com/pallets-eco/flask-caching";
     changelog = "https://github.com/pallets-eco/flask-caching/blob/v${version}/CHANGES.rst";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     license = licenses.bsd3;
   };
 }
diff --git a/pkgs/development/python-modules/flask-common/default.nix b/pkgs/development/python-modules/flask-common/default.nix
index 54c8ef95e5a0b..00881d7d8fe56 100644
--- a/pkgs/development/python-modules/flask-common/default.nix
+++ b/pkgs/development/python-modules/flask-common/default.nix
@@ -1,5 +1,15 @@
-{ lib, fetchPypi, buildPythonPackage
-, crayons, flask, flask-caching, gunicorn, maya, meinheld, whitenoise }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  crayons,
+  flask,
+  flask-caching,
+  gunicorn,
+  maya,
+  meinheld,
+  whitenoise,
+}:
 
 buildPythonPackage rec {
   pname = "flask-common";
@@ -11,7 +21,15 @@ buildPythonPackage rec {
     sha256 = "13d99f2dbc0a332b8bc4b2cc394d3e48f89672c266868e372cd9d7b433d921a9";
   };
 
-  propagatedBuildInputs = [ crayons flask flask-caching gunicorn maya meinheld whitenoise ];
+  propagatedBuildInputs = [
+    crayons
+    flask
+    flask-caching
+    gunicorn
+    maya
+    meinheld
+    whitenoise
+  ];
 
   meta = with lib; {
     description = "Flask extension with lots of common time-savers";
diff --git a/pkgs/development/python-modules/flask-compress/default.nix b/pkgs/development/python-modules/flask-compress/default.nix
index 2810ab2270081..130c767c39f46 100644
--- a/pkgs/development/python-modules/flask-compress/default.nix
+++ b/pkgs/development/python-modules/flask-compress/default.nix
@@ -1,53 +1,53 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, isPyPy
-, setuptools
-, setuptools-scm
-, flask
-, brotli
-, brotlicffi
-, pytestCheckHook
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  isPyPy,
+  setuptools,
+  setuptools-scm,
+  flask,
+  zstandard,
+  brotli,
+  brotlicffi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
-  version = "1.14";
-  pname = "Flask-Compress";
-  format = "pyproject";
+  version = "1.15";
+  pname = "flask-compress";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "colour-science";
     repo = "flask-compress";
     rev = "refs/tags/v${version}";
-    hash = "sha256-eP6i4h+O4vkjlhfy3kyB+PY7iHVzOnRBRD8lj5yHehU=";
+    hash = "sha256-J7d/OIUsDWM6DoXS0P4EOE3k6txXKm6m4Yq/EJk6FRE=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     flask
-  ] ++ lib.optionals (!isPyPy) [
-    brotli
-  ] ++ lib.optionals isPyPy [
-    brotlicffi
-  ];
+    zstandard
+  ] ++ lib.optionals (!isPyPy) [ brotli ] ++ lib.optionals isPyPy [ brotlicffi ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "flask_compress"
-  ];
+  pythonImportsCheck = [ "flask_compress" ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "setuptools_scm[toml]<8" "setuptools_scm"
+  '';
 
-  meta = with lib; {
+  meta = {
     description = "Compress responses in your Flask app with gzip, deflate or brotli";
     homepage = "https://github.com/colour-science/flask-compress";
     changelog = "https://github.com/colour-science/flask-compress/blob/v${version}/CHANGELOG.md";
-    license = licenses.mit;
-    maintainers = with maintainers; [ nickcao ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ nickcao ];
   };
 }
diff --git a/pkgs/development/python-modules/flask-cors/default.nix b/pkgs/development/python-modules/flask-cors/default.nix
index abc90cdbb0e39..b9d62fcbd8e04 100644
--- a/pkgs/development/python-modules/flask-cors/default.nix
+++ b/pkgs/development/python-modules/flask-cors/default.nix
@@ -1,39 +1,44 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, flask
-, packaging
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  flask,
+  packaging,
+  pytestCheckHook,
+  setuptools,
+
+  # for passthru.tests
+  aiobotocore,
+  moto,
 }:
 
 buildPythonPackage rec {
   pname = "flask-cors";
-  version = "4.0.0";
+  version = "4.0.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "corydolphin";
     repo = "flask-cors";
     rev = "refs/tags/${version}";
-    hash = "sha256-o//ulROKKBv/CBJIGPBFP/+T0TpMHUVjr23Y5g1V05g=";
+    hash = "sha256-ISot5KglCjfbJNsnveDLK44vVaapHRAFdS+1tOd08pw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    flask
-  ];
+  propagatedBuildInputs = [ flask ];
 
   nativeCheckInputs = [
     pytestCheckHook
     packaging
   ];
 
+  passthru.tests = {
+    inherit aiobotocore moto;
+  };
+
   meta = with lib; {
-    description = "A Flask extension adding a decorator for CORS support";
+    description = "Flask extension adding a decorator for CORS support";
     homepage = "https://github.com/corydolphin/flask-cors";
     changelog = "https://github.com/corydolphin/flask-cors/releases/tag/v${version}";
     license = with licenses; [ mit ];
diff --git a/pkgs/development/python-modules/flask-dramatiq/default.nix b/pkgs/development/python-modules/flask-dramatiq/default.nix
index 6f8884516f498..df943b1d8ed10 100644
--- a/pkgs/development/python-modules/flask-dramatiq/default.nix
+++ b/pkgs/development/python-modules/flask-dramatiq/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitLab
-, poetry-core
-, dramatiq
-, flask
-, requests
-, pytestCheckHook
-, flask-migrate
-, periodiq
-, postgresql
-, postgresqlTestHook
-, psycopg2
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitLab,
+  poetry-core,
+  dramatiq,
+  flask,
+  requests,
+  pytestCheckHook,
+  flask-migrate,
+  periodiq,
+  postgresql,
+  postgresqlTestHook,
+  psycopg2,
 }:
 
 buildPythonPackage {
@@ -40,13 +41,9 @@ buildPythonPackage {
       -e 's:--cov-report=term-missing::'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    dramatiq
-  ];
+  propagatedBuildInputs = [ dramatiq ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -66,7 +63,11 @@ buildPythonPackage {
     python3 ./example.py db upgrade
   '';
 
-  pytestFlagsArray = [ "-x" "tests/func/" "tests/unit"];
+  pytestFlagsArray = [
+    "-x"
+    "tests/func/"
+    "tests/unit"
+  ];
 
   pythonImportsCheck = [ "flask_dramatiq" ];
 
diff --git a/pkgs/development/python-modules/flask-elastic/default.nix b/pkgs/development/python-modules/flask-elastic/default.nix
index ea7bcb557b98a..6697a9f714ef6 100644
--- a/pkgs/development/python-modules/flask-elastic/default.nix
+++ b/pkgs/development/python-modules/flask-elastic/default.nix
@@ -1,5 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi
-, flask, elasticsearch }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flask,
+  elasticsearch,
+}:
 
 buildPythonPackage rec {
   pname = "flask-elastic";
@@ -12,7 +17,10 @@ buildPythonPackage rec {
     hash = "sha256-XwGm/FQbXSV2qbAlHyAbT4DLcQnIseDm1Qqdb5zjE0M=";
   };
 
-  propagatedBuildInputs = [ flask elasticsearch ];
+  propagatedBuildInputs = [
+    flask
+    elasticsearch
+  ];
   doCheck = false; # no tests
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/flask-expects-json/default.nix b/pkgs/development/python-modules/flask-expects-json/default.nix
index fd608b5044514..a0598642d4971 100644
--- a/pkgs/development/python-modules/flask-expects-json/default.nix
+++ b/pkgs/development/python-modules/flask-expects-json/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flask
-, jsonschema
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flask,
+  jsonschema,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,9 @@ buildPythonPackage rec {
     jsonschema
   ] ++ flask.optional-dependencies.async;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "flask_expects_json"
-  ];
+  pythonImportsCheck = [ "flask_expects_json" ];
 
   disabledTests = [
     # https://github.com/Fischerfredl/flask-expects-json/issues/26
@@ -46,8 +43,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/fischerfredl/flask-expects-json";
-    description = "Decorator for REST endpoints in flask. Validate JSON request data.";
+    description = "Decorator for REST endpoints in flask. Validate JSON request data";
     license = licenses.mit;
-    maintainers = [];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/flask-gravatar/default.nix b/pkgs/development/python-modules/flask-gravatar/default.nix
index 1a305f017cee3..81a29a3c56fab 100644
--- a/pkgs/development/python-modules/flask-gravatar/default.nix
+++ b/pkgs/development/python-modules/flask-gravatar/default.nix
@@ -1,23 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, flask
+  # dependencies
+  flask,
 
-# tests
-, pytestCheckHook
-, pygments
+  # tests
+  pytestCheckHook,
+  pytest-cov-stub,
+  pygments,
 }:
 
 buildPythonPackage rec {
   pname = "flask-gravatar";
   version = "0.5.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     pname = "Flask-Gravatar";
@@ -38,28 +40,22 @@ buildPythonPackage rec {
      -e "s|tests_require=tests_require,||g" \
      -e "s|extras_require=extras_require,||g" \
      -e "s|setup_requires=setup_requires,||g"
-    # pep8 is deprecated and cov not needed
+    # pep8 is deprecated
     substituteInPlace pytest.ini \
-     --replace "--pep8" "" \
-     --replace "--cov=flask_gravatar --cov-report=term-missing" ""
+     --replace-fail "--pep8" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    flask
-  ];
+  dependencies = [ flask ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
     pygments
   ];
 
-  pythonImportsCheck = [
-    "flask_gravatar"
-  ];
+  pythonImportsCheck = [ "flask_gravatar" ];
 
   meta = with lib; {
     homepage = "https://github.com/zzzsochi/Flask-Gravatar";
diff --git a/pkgs/development/python-modules/flask-httpauth/default.nix b/pkgs/development/python-modules/flask-httpauth/default.nix
index 71e5d2bcfc6ae..f44384247552e 100644
--- a/pkgs/development/python-modules/flask-httpauth/default.nix
+++ b/pkgs/development/python-modules/flask-httpauth/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, setuptools
-, flask
-, pythonOlder
- }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  setuptools,
+  flask,
+  pythonOlder,
+}:
 
 buildPythonPackage rec {
   pname = "flask-httpauth";
@@ -20,21 +21,13 @@ buildPythonPackage rec {
     hash = "sha256-ZlaKBbxzlCxl8eIgGudGKVgW3ACe3YS0gsRMdY11CXo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    flask
-  ];
+  propagatedBuildInputs = [ flask ];
 
-  pythonImportsCheck = [
-    "flask_httpauth"
-  ];
+  pythonImportsCheck = [ "flask_httpauth" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ flask.optional-dependencies.async;
+  nativeCheckInputs = [ pytestCheckHook ] ++ flask.optional-dependencies.async;
 
   meta = with lib; {
     description = "Extension that provides HTTP authentication for Flask routes";
diff --git a/pkgs/development/python-modules/flask-jwt-extended/default.nix b/pkgs/development/python-modules/flask-jwt-extended/default.nix
index ba7d9dcf18321..d05524e905fb0 100644
--- a/pkgs/development/python-modules/flask-jwt-extended/default.nix
+++ b/pkgs/development/python-modules/flask-jwt-extended/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cryptography
-, flask
-, pyjwt
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, werkzeug
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cryptography,
+  flask,
+  pyjwt,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  werkzeug,
 }:
 
 buildPythonPackage rec {
@@ -30,18 +31,13 @@ buildPythonPackage rec {
     werkzeug
   ];
 
-  passthru.optional-dependencies.asymmetric_crypto = [
-    cryptography
-  ];
+  passthru.optional-dependencies.asymmetric_crypto = [ cryptography ];
 
   nativeCheckInputs = [
     pytestCheckHook
-  ]
-  ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
+  ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "flask_jwt_extended"
-  ];
+  pythonImportsCheck = [ "flask_jwt_extended" ];
 
   meta = with lib; {
     changelog = "https://github.com/vimalloc/flask-jwt-extended/releases/tag/${version}";
diff --git a/pkgs/development/python-modules/flask-limiter/default.nix b/pkgs/development/python-modules/flask-limiter/default.nix
index 3aab9046cdc8e..6b0f52f6384b8 100644
--- a/pkgs/development/python-modules/flask-limiter/default.nix
+++ b/pkgs/development/python-modules/flask-limiter/default.nix
@@ -1,48 +1,47 @@
-{ lib
-, asgiref
-, buildPythonPackage
-, fetchFromGitHub
-, flask
-, hiro
-, limits
-, ordered-set
-, pymemcache
-, pymongo
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, redis
-, rich
-, setuptools
-, typing-extensions
+{
+  lib,
+  asgiref,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flask,
+  hiro,
+  limits,
+  ordered-set,
+  pymemcache,
+  pymongo,
+  pytest-cov-stub,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  redis,
+  rich,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "flask-limiter";
-  version = "3.5.1";
+  version = "3.8.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "alisaifee";
     repo = "flask-limiter";
     rev = "refs/tags/${version}";
-    hash = "sha256-U7qgl8yg0ddKDPXqYE2Vqyc2ofxSP+6liWs5j4qD6fM=";
+    hash = "sha256-RkeG5XdanSp2syKrQgYUZ4r8D28Zt33/MsW0UxWxaU0=";
   };
 
   postPatch = ''
-    sed -i "/--cov/d" pytest.ini
-
     # flask-restful is unmaintained and breaks regularly, don't depend on it
-    sed -i "/import flask_restful/d" tests/test_views.py
+    substituteInPlace tests/test_views.py \
+      --replace-fail "import flask_restful" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     flask
     limits
     ordered-set
@@ -50,8 +49,15 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
+  optional-dependencies = {
+    redis = limits.optional-dependencies.redis;
+    memcached = limits.optional-dependencies.memcached;
+    mongodb = limits.optional-dependencies.mongodb;
+  };
+
   nativeCheckInputs = [
     asgiref
+    pytest-cov-stub
     pytest-mock
     pytestCheckHook
     hiro
@@ -85,15 +91,13 @@ buildPythonPackage rec {
     "tests/test_storage.py"
   ];
 
-  pythonImportsCheck = [
-    "flask_limiter"
-  ];
+  pythonImportsCheck = [ "flask_limiter" ];
 
   meta = with lib; {
     description = "Rate limiting for flask applications";
     homepage = "https://flask-limiter.readthedocs.org/";
     changelog = "https://github.com/alisaifee/flask-limiter/blob/${version}/HISTORY.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/flask-login/default.nix b/pkgs/development/python-modules/flask-login/default.nix
index 134dc8f2e44b4..ce9da8b158dc4 100644
--- a/pkgs/development/python-modules/flask-login/default.nix
+++ b/pkgs/development/python-modules/flask-login/default.nix
@@ -1,47 +1,45 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-
-# build-system
-, setuptools
-
-# dependencies
-, flask
-, werkzeug
-
-# tests
-, asgiref
-, blinker
-, pytestCheckHook
-, semantic-version
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  flit-core,
+
+  # dependencies
+  flask,
+  werkzeug,
+
+  # tests
+  asgiref,
+  blinker,
+  pytestCheckHook,
+  semantic-version,
 }:
 
 buildPythonPackage rec {
   pname = "flask-login";
-  version = "0.6.3";
+  version = "0.7.0dev0-2024-06-18";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
-  src = fetchPypi {
-    pname = "Flask-Login";
-    inherit version;
-    hash = "sha256-XiPRSmB+8SgGxplZC4nQ8ODWe67sWZ11lHv5wUczAzM=";
+  src = fetchFromGitHub {
+    owner = "maxcountryman";
+    repo = "flask-login";
+    rev = "30675c56b651389d47b47eeb1ad114decb35b8fc";
+    hash = "sha256-mIEYZnYWerjCetQuV2HRcmerMh2uLWNvHV7tfo5j4PU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ flit-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     flask
     werkzeug
   ];
 
-  pythonImportsCheck = [
-    "flask_login"
-  ];
+  pythonImportsCheck = [ "flask_login" ];
 
   nativeCheckInputs = [
     asgiref
diff --git a/pkgs/development/python-modules/flask-mail/default.nix b/pkgs/development/python-modules/flask-mail/default.nix
index 16e02683495f3..104d6f3da2b03 100644
--- a/pkgs/development/python-modules/flask-mail/default.nix
+++ b/pkgs/development/python-modules/flask-mail/default.nix
@@ -1,26 +1,40 @@
-{ lib, buildPythonPackage, fetchPypi,
-  blinker, flask, mock, nose, speaklater
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  blinker,
+  flit-core,
+  flask,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "flask-mail";
-  version = "0.9.1";
-  format = "setuptools";
+  version = "0.10.0";
+  pyproject = true;
 
-  meta = {
-    description = "Flask-Mail is a Flask extension providing simple email sending capabilities.";
-    homepage = "https://pypi.python.org/pypi/Flask-Mail";
-    license = lib.licenses.bsd3;
+  src = fetchFromGitHub {
+    owner = "pallets-eco";
+    repo = "flask-mail";
+    rev = "refs/tags/${version}";
+    hash = "sha256-G2Z8dj1/IuLsZoNJVrL6LYu0XjTEHtWB9Z058aqG9Ic=";
   };
 
-  src = fetchPypi {
-    pname = "Flask-Mail";
-    inherit version;
-    hash = "sha256-IuXrmpQL9Ae88wQQ7MNwjzxWzESynDThcm/oUAaTX0E=";
-  };
+  build-system = [ flit-core ];
+
+  dependencies = [
+    blinker
+    flask
+  ];
 
-  propagatedBuildInputs = [ blinker flask ];
-  buildInputs = [ blinker mock nose speaklater ];
+  pythonImportsCheck = [ "flask_mail" ];
 
-  doCheck = false;
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "Flask extension providing simple email sending capabilities";
+    homepage = "https://github.com/pallets-eco/flask-mail";
+    changelog = "https://github.com/pallets-eco/flask-mail/blob/${src.rev}/CHANGES.md";
+    license = lib.licenses.bsd3;
+  };
 }
diff --git a/pkgs/development/python-modules/flask-mailman/default.nix b/pkgs/development/python-modules/flask-mailman/default.nix
index 035005545ec45..e76561dc8ca13 100644
--- a/pkgs/development/python-modules/flask-mailman/default.nix
+++ b/pkgs/development/python-modules/flask-mailman/default.nix
@@ -1,45 +1,47 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, mkdocs-material-extensions
-, flask
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiosmtpd,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  mkdocs-material-extensions,
+  flask,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "flask-mailman";
-  version = "1.0.0";
-  format = "pyproject";
+  version = "1.1.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "waynerv";
-    repo = pname;
+    repo = "flask-mailman";
     rev = "refs/tags/v${version}";
-    hash = "sha256-wfbMz9k9cy9m95mc0Y0lqmpJczrfjhmumO31gRQy704=";
+    hash = "sha256-0kD3rxFDJ7FcmBLVju75z1nf6U/7XfjiLD/oM/VP4jQ=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     flask
     mkdocs-material-extensions
   ];
 
   nativeCheckInputs = [
+    aiosmtpd
     pytestCheckHook
   ];
 
   pythonImportsCheck = [ "flask_mailman" ];
 
   meta = with lib; {
+    changelog = "https://github.com/waynerv/flask-mailman/blob/${src.rev}/CHANGELOG.md";
     homepage = "https://github.com/waynerv/flask-mailman";
-    description = "Flask extension providing simple email sending capabilities.";
+    description = "Flask extension providing simple email sending capabilities";
     license = licenses.bsd3;
     maintainers = with maintainers; [ gador ];
   };
diff --git a/pkgs/development/python-modules/flask-marshmallow/default.nix b/pkgs/development/python-modules/flask-marshmallow/default.nix
index 9d1c889dda4c2..69ad443789edd 100644
--- a/pkgs/development/python-modules/flask-marshmallow/default.nix
+++ b/pkgs/development/python-modules/flask-marshmallow/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flask
-, flask-sqlalchemy
-, flit-core
-, marshmallow
-, marshmallow-sqlalchemy
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flask,
+  flask-sqlalchemy,
+  flit-core,
+  marshmallow,
+  marshmallow-sqlalchemy,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-GQLkt/CJf/QI8emvlW8xSRziGnncwfMSxBccW0Bb8I0=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     flask
@@ -40,13 +39,9 @@ buildPythonPackage rec {
     ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.sqlalchemy;
+  nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.sqlalchemy;
 
-  pythonImportsCheck = [
-    "flask_marshmallow"
-  ];
+  pythonImportsCheck = [ "flask_marshmallow" ];
 
   pytestFlagsArray = [
     "-W"
diff --git a/pkgs/development/python-modules/flask-migrate/default.nix b/pkgs/development/python-modules/flask-migrate/default.nix
index 804eed53ab04f..2809af9a4ac74 100644
--- a/pkgs/development/python-modules/flask-migrate/default.nix
+++ b/pkgs/development/python-modules/flask-migrate/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, alembic
-, flask
-, flask-script
-, flask-sqlalchemy
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  alembic,
+  flask,
+  flask-script,
+  flask-sqlalchemy,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-TnihrZ+JQ1XCBlFp6k8lrNpZr4P2/Z6AmFwWZbabz+8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     alembic
@@ -34,9 +33,7 @@ buildPythonPackage rec {
     flask-sqlalchemy
   ];
 
-  pythonImportsCheck = [
-    "flask_migrate"
-  ];
+  pythonImportsCheck = [ "flask_migrate" ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/flask-mongoengine/default.nix b/pkgs/development/python-modules/flask-mongoengine/default.nix
index dad4b6ddb8716..65ba830e91035 100644
--- a/pkgs/development/python-modules/flask-mongoengine/default.nix
+++ b/pkgs/development/python-modules/flask-mongoengine/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, email-validator
-, fetchFromGitHub
-, flask
-, flask-wtf
-, markupsafe
-, mongoengine
-, pythonOlder
-, setuptools
-, setuptools-scm
-, typing-extensions
-, wtforms
+{
+  lib,
+  buildPythonPackage,
+  email-validator,
+  fetchFromGitHub,
+  flask,
+  flask-wtf,
+  markupsafe,
+  mongoengine,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  typing-extensions,
+  wtforms,
 }:
 
 buildPythonPackage rec {
@@ -39,9 +40,7 @@ buildPythonPackage rec {
     flask
     flask-wtf
     mongoengine
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
   passthru.optional-dependencies = {
     wtf = [
@@ -51,23 +50,19 @@ buildPythonPackage rec {
     # toolbar = [
     #   flask-debugtoolbar
     # ];
-    legacy = [
-      markupsafe
-    ];
+    legacy = [ markupsafe ];
   };
 
   # Tests require working mongodb connection
   doCheck = false;
 
-  pythonImportsCheck = [
-    "flask_mongoengine"
-  ];
+  pythonImportsCheck = [ "flask_mongoengine" ];
 
   meta = with lib; {
     description = "Flask extension that provides integration with MongoEngine and WTF model forms";
     homepage = "https://github.com/mongoengine/flask-mongoengine";
     changelog = "https://github.com/MongoEngine/flask-mongoengine/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/flask-mysqldb/default.nix b/pkgs/development/python-modules/flask-mysqldb/default.nix
index f0b7d59206feb..995d44efcc578 100644
--- a/pkgs/development/python-modules/flask-mysqldb/default.nix
+++ b/pkgs/development/python-modules/flask-mysqldb/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, flask
-, mysqlclient
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  flask,
+  mysqlclient,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-RHAB9WGRzojH6eAOG61QguwF+4LssO9EcFjbWxoOtF4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     flask
     mysqlclient
   ];
 
-  pythonImportsCheck = [
-    "flask_mysqldb"
-  ];
+  pythonImportsCheck = [ "flask_mysqldb" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "MySQL connection support for Flask";
diff --git a/pkgs/development/python-modules/flask-openid/default.nix b/pkgs/development/python-modules/flask-openid/default.nix
index 9d65a5cab26e0..6fbcb0b29c8d7 100644
--- a/pkgs/development/python-modules/flask-openid/default.nix
+++ b/pkgs/development/python-modules/flask-openid/default.nix
@@ -1,23 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flask
-, python3-openid
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  flask,
+  python3-openid,
 }:
 
 buildPythonPackage rec {
   pname = "flask-openid";
-  version = "1.3.0";
-  format = "setuptools";
+  version = "1.3.1";
+  pyproject = true;
 
   src = fetchPypi {
-    pname = "Flask-OpenID";
+    pname = "flask_openid";
     inherit version;
-    sha256 = "539289ed2d19af61ae38d8fe46aec9e4de2b56f9f8b46da0b98c0d387f1d975a";
+    hash = "sha256-J2KLwKN+ZTCUiCMZPgaNeQNa2Ulth7dAQEQ+xITHZXo=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     flask
     python3-openid
   ];
diff --git a/pkgs/development/python-modules/flask-paginate/default.nix b/pkgs/development/python-modules/flask-paginate/default.nix
index ee15641a9d5cb..5624141f671d9 100644
--- a/pkgs/development/python-modules/flask-paginate/default.nix
+++ b/pkgs/development/python-modules/flask-paginate/default.nix
@@ -37,6 +37,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/lixxu/flask-paginate";
     changelog = "https://github.com/lixxu/flask-paginate/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/flask-paranoid/default.nix b/pkgs/development/python-modules/flask-paranoid/default.nix
index 5e200137941bb..0e4d49127ae95 100644
--- a/pkgs/development/python-modules/flask-paranoid/default.nix
+++ b/pkgs/development/python-modules/flask-paranoid/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flask
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flask,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,13 +23,9 @@ buildPythonPackage rec {
     substituteInPlace tests/test_paranoid.py --replace "01-Jan-1970" "01 Jan 1970"
   '';
 
-  propagatedBuildInputs = [
-    flask
-  ];
+  propagatedBuildInputs = [ flask ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "flask_paranoid" ];
 
diff --git a/pkgs/development/python-modules/flask-principal/default.nix b/pkgs/development/python-modules/flask-principal/default.nix
index 7343a15398dbb..5fe11b282c0d6 100644
--- a/pkgs/development/python-modules/flask-principal/default.nix
+++ b/pkgs/development/python-modules/flask-principal/default.nix
@@ -1,24 +1,42 @@
-{ lib, buildPythonPackage, fetchPypi, flask, blinker, nose }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  blinker,
+  flask,
+  pytestCheckHook,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "flask-principal";
   version = "0.4.0";
-  format = "setuptools";
+  pyproject = true;
 
-  src = fetchPypi {
-    pname = "Flask-Principal";
-    inherit version;
-    hash = "sha256-9dYTS1yuv9u4bzLVbRjuRLCAh2onJpVgqW6jX3XJlFM=";
+  src = fetchFromGitHub {
+    owner = "pallets-eco";
+    repo = "flask-principal";
+    rev = "refs/tags/${version}";
+    hash = "sha256-E9urzZc7/QtzAohSNAJsQtykrplb+MC189VGZI5kmEE=";
   };
 
-  propagatedBuildInputs = [ flask blinker ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [ nose ];
+  dependencies = [
+    flask
+    blinker
+  ];
+
+  pythonImportsCheck = [ "flask_principal" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pytestFlagsArray = [ "test_principal.py" ];
 
   meta = with lib; {
     homepage = "http://packages.python.org/Flask-Principal/";
     description = "Identity management for flask";
-    license = licenses.bsd2;
+    license = licenses.mit;
     maintainers = with maintainers; [ abbradar ];
   };
 }
diff --git a/pkgs/development/python-modules/flask-pymongo/default.nix b/pkgs/development/python-modules/flask-pymongo/default.nix
index 721de186417f6..6a6ae8f31d3bf 100644
--- a/pkgs/development/python-modules/flask-pymongo/default.nix
+++ b/pkgs/development/python-modules/flask-pymongo/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, vcversioner
-, flask
-, pymongo
-, six
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  vcversioner,
+  flask,
+  pymongo,
+  six,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,7 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "flask_pymongo" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # requires running MongoDB
   doCheck = false;
diff --git a/pkgs/development/python-modules/flask-restful/default.nix b/pkgs/development/python-modules/flask-restful/default.nix
index 3107d4c7f5bc2..ca27a3292c052 100644
--- a/pkgs/development/python-modules/flask-restful/default.nix
+++ b/pkgs/development/python-modules/flask-restful/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, aniso8601
-, blinker
-, buildPythonPackage
-, fetchPypi
-, flask
-, mock
-, nose
-, pytestCheckHook
-, pythonOlder
-, pytz
-, six
-, werkzeug
+{
+  lib,
+  aniso8601,
+  blinker,
+  buildPythonPackage,
+  fetchPypi,
+  flask,
+  fetchpatch2,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  six,
+  werkzeug,
 }:
 
 buildPythonPackage rec {
@@ -27,11 +28,17 @@ buildPythonPackage rec {
   };
 
   # conditional so that overrides are easier for web applications
-  patches = lib.optionals (lib.versionAtLeast werkzeug.version "2.1.0") [
-    ./werkzeug-2.1.0-compat.patch
-  ] ++ lib.optionals (lib.versionAtLeast flask.version "3.0.0") [
-    ./flask-3.0-compat.patch
-  ];
+  patches =
+    lib.optionals (lib.versionAtLeast werkzeug.version "2.1.0") [ ./werkzeug-2.1.0-compat.patch ]
+    ++ lib.optionals (lib.versionAtLeast flask.version "3.0.0") [ ./flask-3.0-compat.patch ]
+    ++ [
+      # replace use nose by pytest: https://github.com/flask-restful/flask-restful/pull/970
+      (fetchpatch2 {
+        url = "https://github.com/flask-restful/flask-restful/commit/6cc4b057e5450e0c84b3ee5f6f7a97e648a816d6.patch?full_index=1";
+        hash = "sha256-kIjrkyL0OfX+gjoiYfchU0QYTPHz4JMCQcHLFH9oEF4=";
+      })
+      ./fix-test-inputs.patch
+    ];
 
   propagatedBuildInputs = [
     aniso8601
@@ -43,7 +50,6 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     blinker
     mock
-    nose
     pytestCheckHook
   ];
 
@@ -55,9 +61,7 @@ buildPythonPackage rec {
     "test_media_types_q"
   ];
 
-  pythonImportsCheck = [
-    "flask_restful"
-  ];
+  pythonImportsCheck = [ "flask_restful" ];
 
   meta = with lib; {
     description = "Framework for creating REST APIs";
@@ -67,6 +71,6 @@ buildPythonPackage rec {
       REST API.
     '';
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/flask-restful/fix-test-inputs.patch b/pkgs/development/python-modules/flask-restful/fix-test-inputs.patch
new file mode 100644
index 0000000000000..5f58c675f2aa6
--- /dev/null
+++ b/pkgs/development/python-modules/flask-restful/fix-test-inputs.patch
@@ -0,0 +1,173 @@
+diff --git a/tests/test_inputs.py b/tests/test_inputs.py
+index 7c30d45..645b728 100644
+--- a/tests/test_inputs.py
++++ b/tests/test_inputs.py
+@@ -5,6 +5,7 @@ import re
+ 
+ #noinspection PyUnresolvedReferences
+ import six
++import pytest
+ 
+ from flask_restful import inputs
+ 
+@@ -17,7 +18,7 @@ def test_reverse_rfc822_datetime():
+     ]
+ 
+     for date_string, expected in dates:
+-        yield assert_equal, inputs.datetime_from_rfc822(date_string), expected
++        assert inputs.datetime_from_rfc822(date_string) == expected
+ 
+ 
+ def test_reverse_iso8601_datetime():
+@@ -29,7 +30,7 @@ def test_reverse_iso8601_datetime():
+     ]
+ 
+     for date_string, expected in dates:
+-        yield assert_equal, inputs.datetime_from_iso8601(date_string), expected
++        assert inputs.datetime_from_iso8601(date_string) == expected
+ 
+ 
+ def test_urls():
+@@ -53,7 +54,7 @@ def test_urls():
+     ]
+ 
+     for value in urls:
+-        yield assert_equal, inputs.url(value), value
++        assert inputs.url(value) == value
+ 
+ 
+ def check_bad_url_raises(value):
+@@ -118,7 +119,8 @@ def test_regex_bad_input():
+     num_only = inputs.regex(r'^[0-9]+$')
+ 
+     for value in cases:
+-        yield assert_raises, ValueError, lambda: num_only(value)
++        with pytest.raises(ValueError):
++            num_only(value)
+ 
+ 
+ def test_regex_good_input():
+@@ -131,12 +133,13 @@ def test_regex_good_input():
+     num_only = inputs.regex(r'^[0-9]+$')
+ 
+     for value in cases:
+-        yield assert_equal, num_only(value), value
++        assert num_only(value) == value
+ 
+ 
+ def test_regex_bad_pattern():
+     """Regex error raised immediately when regex input parser is created."""
+-    assert_raises(re.error, inputs.regex, '[')
++    with pytest.raises(re.error):
++        inputs.regex('[')
+ 
+ 
+ def test_regex_flags_good_input():
+@@ -149,7 +152,7 @@ def test_regex_flags_good_input():
+     case_insensitive = inputs.regex(r'^[A-Z]+$', re.IGNORECASE)
+ 
+     for value in cases:
+-        yield assert_equal, case_insensitive(value), value
++        assert case_insensitive(value) == value
+ 
+ 
+ def test_regex_flags_bad_input():
+@@ -161,7 +164,8 @@ def test_regex_flags_bad_input():
+     case_sensitive = inputs.regex(r'^[A-Z]+$')
+ 
+     for value in cases:
+-        yield assert_raises, ValueError, lambda: case_sensitive(value)
++        with pytest.raises(ValueError):
++            case_sensitive(value)
+ 
+ 
+ class TypesTestCase(unittest.TestCase):
+@@ -191,35 +195,41 @@ class TypesTestCase(unittest.TestCase):
+         assert inputs.boolean(False) == False
+ 
+     def test_bad_boolean(self):
+-        assert_raises(ValueError, lambda: inputs.boolean("blah"))
++        with pytest.raises(ValueError):
++            inputs.boolean("blah")
+ 
+     def test_date_later_than_1900(self):
+         assert inputs.date("1900-01-01") == datetime(1900, 1, 1)
+ 
+     def test_date_input_error(self):
+-        assert_raises(ValueError, lambda: inputs.date("2008-13-13"))
++        with pytest.raises(ValueError):
++            inputs.date("2008-13-13")
+ 
+     def test_date_input(self):
+         assert inputs.date("2008-08-01") == datetime(2008, 8, 1)
+ 
+     def test_natual_negative(self):
+-        assert_raises(ValueError, lambda: inputs.natural(-1))
++        with pytest.raises(ValueError):
++            inputs.natural(-1)
+ 
+     def test_natural(self):
+         assert 3 == inputs.natural(3)
+ 
+     def test_natual_string(self):
+-        assert_raises(ValueError, lambda: inputs.natural('foo'))
++        with pytest.raises(ValueError):
++            inputs.natural('foo')
+ 
+     def test_positive(self):
+         assert 1 == inputs.positive(1)
+         assert 10000 == inputs.positive(10000)
+ 
+     def test_positive_zero(self):
+-        assert_raises(ValueError, lambda: inputs.positive(0))
++        with pytest.raises(ValueError):
++            inputs.positive(0)
+ 
+     def test_positive_negative_input(self):
+-        assert_raises(ValueError, lambda: inputs.positive(-1))
++        with pytest.raises(ValueError):
++            inputs.positive(-1)
+ 
+     def test_int_range_good(self):
+         int_range = inputs.int_range(1, 5)
+@@ -231,11 +241,13 @@ class TypesTestCase(unittest.TestCase):
+ 
+     def test_int_range_low(self):
+         int_range = inputs.int_range(0, 5)
+-        assert_raises(ValueError, lambda: int_range(-1))
++        with pytest.raises(ValueError):
++            int_range(-1)
+ 
+     def test_int_range_high(self):
+         int_range = inputs.int_range(0, 5)
+-        assert_raises(ValueError, lambda: int_range(6))
++        with pytest.raises(ValueError):
++            int_range(6)
+ 
+ 
+ def test_isointerval():
+@@ -389,7 +401,7 @@ def test_isointerval():
+     ]
+ 
+     for value, expected in intervals:
+-        yield assert_equal, inputs.iso8601interval(value), expected
++        assert inputs.iso8601interval(value) == expected
+ 
+ 
+ def test_invalid_isointerval_error():
+@@ -413,12 +425,9 @@ def test_bad_isointervals():
+     ]
+ 
+     for bad_interval in bad_intervals:
+-        yield (
+-            assert_raises,
+-            Exception,
+-            inputs.iso8601interval,
+-            bad_interval,
+-        )
++        with pytest.raises(Exception):
++            inputs.iso8601interval(bad_interval)
++
+ 
+ if __name__ == '__main__':
+     unittest.main()
diff --git a/pkgs/development/python-modules/flask-restx/default.nix b/pkgs/development/python-modules/flask-restx/default.nix
index 052bf4ac5da31..85f0218fd91b5 100644
--- a/pkgs/development/python-modules/flask-restx/default.nix
+++ b/pkgs/development/python-modules/flask-restx/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, aniso8601
-, jsonschema
-, flask
-, importlib-resources
-, werkzeug
-, pytz
-, faker
-, mock
-, blinker
-, py
-, pytest-flask
-, pytest-mock
-, pytest-benchmark
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  aniso8601,
+  jsonschema,
+  flask,
+  importlib-resources,
+  werkzeug,
+  pytz,
+  faker,
+  mock,
+  blinker,
+  py,
+  pytest-flask,
+  pytest-mock,
+  pytest-benchmark,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -35,9 +36,7 @@ buildPythonPackage rec {
     hash = "sha256-CBReP/u96fsr28lMV1BfLjjdBMXEvsD03wvsxkIcteI=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     aniso8601
@@ -59,14 +58,16 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "--benchmark-disable"
-    "--deselect=tests/test_inputs.py::URLTest::test_check"
-    "--deselect=tests/test_inputs.py::EmailTest::test_valid_value_check"
-    "--deselect=tests/test_logging.py::LoggingTest::test_override_app_level"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "--deselect=tests/test_inputs.py::EmailTest::test_invalid_values_check"
-  ];
+  pytestFlagsArray =
+    [
+      "--benchmark-disable"
+      "--deselect=tests/test_inputs.py::URLTest::test_check"
+      "--deselect=tests/test_inputs.py::EmailTest::test_valid_value_check"
+      "--deselect=tests/test_logging.py::LoggingTest::test_override_app_level"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      "--deselect=tests/test_inputs.py::EmailTest::test_invalid_values_check"
+    ];
 
   disabledTests = [
     # broken in werkzeug 2.3 upgrade
@@ -74,9 +75,7 @@ buildPythonPackage rec {
     "test_media_types_q"
   ];
 
-  pythonImportsCheck = [
-    "flask_restx"
-  ];
+  pythonImportsCheck = [ "flask_restx" ];
 
   meta = with lib; {
     description = "Fully featured framework for fast, easy and documented API development with Flask";
diff --git a/pkgs/development/python-modules/flask-reverse-proxy-fix/default.nix b/pkgs/development/python-modules/flask-reverse-proxy-fix/default.nix
index 6d079b66f149d..a4ea585c909ca 100644
--- a/pkgs/development/python-modules/flask-reverse-proxy-fix/default.nix
+++ b/pkgs/development/python-modules/flask-reverse-proxy-fix/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flask
-, werkzeug
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flask,
+  werkzeug,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/flask-script/default.nix b/pkgs/development/python-modules/flask-script/default.nix
index afd56302a562c..3a7a8693385ee 100644
--- a/pkgs/development/python-modules/flask-script/default.nix
+++ b/pkgs/development/python-modules/flask-script/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, flask, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flask,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "flask-script";
diff --git a/pkgs/development/python-modules/flask-seasurf/default.nix b/pkgs/development/python-modules/flask-seasurf/default.nix
index 1764e2762059a..4ea3134fefa8a 100644
--- a/pkgs/development/python-modules/flask-seasurf/default.nix
+++ b/pkgs/development/python-modules/flask-seasurf/default.nix
@@ -1,4 +1,13 @@
-{ lib, fetchFromGitHub, fetchpatch, buildPythonPackage, isPy3k, flask, mock, unittestCheckHook }:
+{
+  lib,
+  fetchFromGitHub,
+  fetchpatch,
+  buildPythonPackage,
+  isPy3k,
+  flask,
+  mock,
+  unittestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "flask-seasurf";
@@ -36,7 +45,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "flask_seasurf" ];
 
   meta = with lib; {
-    description = "A Flask extension for preventing cross-site request forgery";
+    description = "Flask extension for preventing cross-site request forgery";
     homepage = "https://github.com/maxcountryman/flask-seasurf";
     license = licenses.bsd3;
     maintainers = with maintainers; [ zhaofengli ];
diff --git a/pkgs/development/python-modules/flask-security-too/default.nix b/pkgs/development/python-modules/flask-security-too/default.nix
deleted file mode 100644
index 29947460055b1..0000000000000
--- a/pkgs/development/python-modules/flask-security-too/default.nix
+++ /dev/null
@@ -1,132 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-
-# extras: babel
-, babel
-, flask-babel
-
-# extras: common
-, bcrypt
-, bleach
-, flask-mailman
-
-# extras: fsqla
-, flask-sqlalchemy
-, sqlalchemy
-, sqlalchemy-utils
-
-# extras: mfa
-, cryptography
-, phonenumbers
-, webauthn
-, qrcode
-
-# propagates
-, email-validator
-, flask
-, flask-login
-, flask-principal
-, flask-wtf
-, passlib
-, importlib-resources
-, wtforms
-
-# tests
-, argon2-cffi
-, freezegun
-, mongoengine
-, mongomock
-, peewee
-, pony
-, pytestCheckHook
-, zxcvbn
-}:
-
-buildPythonPackage rec {
-  pname = "flask-security-too";
-  version = "5.4.3";
-  pyproject = true;
-
-  disabled = pythonOlder "3.7";
-
-  src = fetchPypi {
-    pname = "Flask-Security-Too";
-    inherit version;
-    hash = "sha256-YrGTl+jXGo1MuNwNRAnMehSXmCVJAwOWlgruUYdV5YM=";
-  };
-
-  nativeBuildInputs = [
-    setuptools
-  ];
-
-  propagatedBuildInputs = [
-    email-validator
-    flask
-    flask-login
-    flask-principal
-    flask-wtf
-    passlib
-    importlib-resources
-    wtforms
-  ];
-
-  passthru.optional-dependencies = {
-    babel = [
-      babel
-      flask-babel
-    ];
-    common = [
-      bcrypt
-      bleach
-      flask-mailman
-    ];
-    fsqla = [
-      flask-sqlalchemy
-      sqlalchemy
-      sqlalchemy-utils
-    ];
-    mfa = [
-      cryptography
-      phonenumbers
-      webauthn
-      qrcode
-    ];
-  };
-
-  nativeCheckInputs = [
-    argon2-cffi
-    freezegun
-    mongoengine
-    mongomock
-    peewee
-    pony
-    pytestCheckHook
-    zxcvbn
-    freezegun
-  ]
-  ++ passthru.optional-dependencies.babel
-  ++ passthru.optional-dependencies.common
-  ++ passthru.optional-dependencies.fsqla
-  ++ passthru.optional-dependencies.mfa;
-
-
-  disabledTests = [
-    # needs /etc/resolv.conf
-    "test_login_email_whatever"
-  ];
-
-  pythonImportsCheck = [
-    "flask_security"
-  ];
-
-  meta = with lib; {
-    changelog = "https://github.com/Flask-Middleware/flask-security/blob/${version}/CHANGES.rst";
-    homepage = "https://github.com/Flask-Middleware/flask-security";
-    description = "Simple security for Flask apps (fork)";
-    license = licenses.mit;
-    maintainers = with maintainers; [ gador ];
-  };
-}
diff --git a/pkgs/development/python-modules/flask-security/default.nix b/pkgs/development/python-modules/flask-security/default.nix
new file mode 100644
index 0000000000000..558880850878e
--- /dev/null
+++ b/pkgs/development/python-modules/flask-security/default.nix
@@ -0,0 +1,144 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  flit-core,
+
+  # extras: babel
+  babel,
+  flask-babel,
+
+  # extras: common
+  argon2-cffi,
+  bcrypt,
+  bleach,
+  flask-mailman,
+
+  # extras: fsqla
+  flask-sqlalchemy,
+  sqlalchemy,
+  sqlalchemy-utils,
+
+  # extras: mfa
+  cryptography,
+  phonenumberslite,
+  webauthn,
+  qrcode,
+
+  # propagates
+  email-validator,
+  flask,
+  flask-login,
+  flask-principal,
+  flask-wtf,
+  markupsafe,
+  passlib,
+  importlib-resources,
+  wtforms,
+
+  # tests
+  authlib,
+  flask-sqlalchemy-lite,
+  freezegun,
+  mongoengine,
+  mongomock,
+  peewee,
+  pony,
+  pytestCheckHook,
+  requests,
+  zxcvbn,
+}:
+
+buildPythonPackage rec {
+  pname = "flask-security";
+  version = "5.5.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "pallets-eco";
+    repo = "flask-security";
+    rev = "refs/tags/${version}";
+    hash = "sha256-RGRwgrDFe+0v8NYyajMikdoi1DQf1I+B5y8KJyF+cZs=";
+  };
+
+  build-system = [ flit-core ];
+
+  # flask-login>=0.6.2 not satisfied by version 0.7.0.dev0
+  pythonRelaxDeps = [ "flask-login" ];
+
+  dependencies = [
+    email-validator
+    flask
+    flask-login
+    flask-principal
+    flask-wtf
+    markupsafe
+    passlib
+    importlib-resources
+    wtforms
+  ];
+
+  optional-dependencies = {
+    babel = [
+      babel
+      flask-babel
+    ];
+    common = [
+      argon2-cffi
+      bcrypt
+      bleach
+      flask-mailman
+    ];
+    fsqla = [
+      flask-sqlalchemy
+      sqlalchemy
+      sqlalchemy-utils
+    ];
+    mfa = [
+      cryptography
+      phonenumberslite
+      webauthn
+      qrcode
+    ];
+  };
+
+  nativeCheckInputs =
+    [
+      authlib
+      flask-sqlalchemy-lite
+      freezegun
+      mongoengine
+      mongomock
+      peewee
+      pony
+      pytestCheckHook
+      requests
+      zxcvbn
+    ]
+    ++ optional-dependencies.babel
+    ++ optional-dependencies.common
+    ++ optional-dependencies.fsqla
+    ++ optional-dependencies.mfa;
+
+  preCheck = ''
+    pybabel compile --domain flask_security -d flask_security/translations
+  '';
+
+  disabledTests = [
+    # needs /etc/resolv.conf
+    "test_login_email_whatever"
+  ];
+
+  pythonImportsCheck = [ "flask_security" ];
+
+  meta = with lib; {
+    changelog = "https://github.com/pallets-eco/flask-security/blob/${version}/CHANGES.rst";
+    homepage = "https://github.com/pallets-eco/flask-security";
+    description = "Quickly add security features to your Flask application";
+    license = licenses.mit;
+    maintainers = with maintainers; [ gador ];
+  };
+}
diff --git a/pkgs/development/python-modules/flask-session-captcha/default.nix b/pkgs/development/python-modules/flask-session-captcha/default.nix
index 115867f1c63cc..675afdcb2b384 100644
--- a/pkgs/development/python-modules/flask-session-captcha/default.nix
+++ b/pkgs/development/python-modules/flask-session-captcha/default.nix
@@ -43,7 +43,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "flask_session_captcha" ];
 
   meta = with lib; {
-    description = "A captcha implemention for flask";
+    description = "Captcha implemention for flask";
     homepage = "https://github.com/Tethik/flask-session-captcha";
     changelog = "https://github.com/Tethik/flask-session-captcha/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/flask-session/default.nix b/pkgs/development/python-modules/flask-session/default.nix
index e3c4abf8da8a0..dcfb8bfe4a36d 100644
--- a/pkgs/development/python-modules/flask-session/default.nix
+++ b/pkgs/development/python-modules/flask-session/default.nix
@@ -1,49 +1,75 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, flit-core
-, flask
-, cachelib
-, pytestCheckHook
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+
+  # build-system
+  flit-core,
+
+  # dependencies
+  flask,
+  cachelib,
+  msgspec,
+
+  # checks
+  boto3,
+  flask-sqlalchemy,
+  pytestCheckHook,
+  redis,
+  pymongo,
+  pymemcache,
+  python-memcached,
+  pkgs,
 }:
 
 buildPythonPackage rec {
   pname = "flask-session";
-  version = "0.5.0";
-  format = "pyproject";
+  version = "0.8.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pallets-eco";
     repo = "flask-session";
     rev = "refs/tags/${version}";
-    hash = "sha256-t8w6ZS4gBDpnnKvL3DLtn+rRLQNJbrT2Hxm4f3+a3Xc=";
+    hash = "sha256-QLtsM0MFgZbuLJPLc5/mUwyYc3bYxildNKNxOF8Z/3Y=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
-  propagatedBuildInputs = [
-    flask
+  dependencies = [
     cachelib
+    flask
+    msgspec
   ];
 
   nativeCheckInputs = [
+    flask-sqlalchemy
     pytestCheckHook
+    redis
+    pymongo
+    pymemcache
+    python-memcached
+    boto3
   ];
 
-  # The rest of the tests require database servers and optional db connector dependencies
-  pytestFlagsArray = [
-    "-k"
-    "'null_session or filesystem_session'"
-  ];
+  preCheck = ''
+    ${pkgs.redis}/bin/redis-server &
+    ${pkgs.memcached}/bin/memcached &
+  '';
 
-  pythonImportsCheck = [
-    "flask_session"
-  ];
+  postCheck = ''
+    kill %%
+    kill %%
+  '';
+
+  disabledTests = [ "test_mongo_default" ]; # unfree
+
+  disabledTestPaths = [ "tests/test_dynamodb.py" ];
+
+  pythonImportsCheck = [ "flask_session" ];
 
   meta = with lib; {
-    description = "A Flask extension that adds support for server-side sessions";
+    description = "Flask extension that adds support for server-side sessions";
     homepage = "https://github.com/pallets-eco/flask-session";
     changelog = "https://github.com/pallets-eco/flask-session/releases/tag/${version}";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/flask-silk/default.nix b/pkgs/development/python-modules/flask-silk/default.nix
index ddee5077970da..db54dcf8ef791 100644
--- a/pkgs/development/python-modules/flask-silk/default.nix
+++ b/pkgs/development/python-modules/flask-silk/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flask
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flask,
 }:
 
 buildPythonPackage {
@@ -17,9 +18,7 @@ buildPythonPackage {
     sha256 = "0mplziqw52jfspas6vsm210lmxqqzgj0dxm8y0i3gpbyyykwcmh0";
   };
 
-  propagatedBuildInputs = [
-    flask
-  ];
+  propagatedBuildInputs = [ flask ];
 
   meta = with lib; {
     description = "Adds silk icons to your Flask application or module, or extension";
diff --git a/pkgs/development/python-modules/flask-sock/default.nix b/pkgs/development/python-modules/flask-sock/default.nix
index 36ef8a093e1e3..bb5f82925cfb1 100644
--- a/pkgs/development/python-modules/flask-sock/default.nix
+++ b/pkgs/development/python-modules/flask-sock/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pytestCheckHook
-, pythonOlder
-, fetchFromGitHub
-, flask
-, setuptools
-, simple-websocket
+{
+  lib,
+  buildPythonPackage,
+  pytestCheckHook,
+  pythonOlder,
+  fetchFromGitHub,
+  flask,
+  setuptools,
+  simple-websocket,
 }:
 
 buildPythonPackage rec {
@@ -22,24 +23,18 @@ buildPythonPackage rec {
     hash = "sha256-GKfOVdeLPag2IKGCWrMjQp4NTL1/9GiyLhXhf9jQKhQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     flask
     simple-websocket
   ];
 
-  pytestFlagsArray = [
-    "tests/test_flask_sock.py"
-  ];
+  pytestFlagsArray = [ "tests/test_flask_sock.py" ];
 
   pythonImportsCheck = [ "flask_sock" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "WebSocket support for Flask";
diff --git a/pkgs/development/python-modules/flask-socketio/default.nix b/pkgs/development/python-modules/flask-socketio/default.nix
index 7460bf2309d47..75a8044d85b02 100644
--- a/pkgs/development/python-modules/flask-socketio/default.nix
+++ b/pkgs/development/python-modules/flask-socketio/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, flask
-, pytestCheckHook
-, python-socketio
-, pythonOlder
-, redis
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  flask,
+  pytestCheckHook,
+  python-socketio,
+  pythonOlder,
+  redis,
 }:
 
 buildPythonPackage rec {
   pname = "flask-socketio";
-  version = "5.3.6";
+  version = "5.3.7";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -20,12 +21,10 @@ buildPythonPackage rec {
     owner = "miguelgrinberg";
     repo = "Flask-SocketIO";
     rev = "refs/tags/v${version}";
-    hash = "sha256-YjCe34Mvt7tvp3w5yH52lrq4bWi7aIYAUssNqxlQ8CA=";
+    hash = "sha256-3vqhxz+NPrpjTxNt4scZtPxaFfnM3+gyE+jegwgan2E=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     flask
@@ -37,13 +36,9 @@ buildPythonPackage rec {
     redis
   ];
 
-  pytestFlagsArray = [
-    "test_socketio.py"
-  ];
+  pytestFlagsArray = [ "test_socketio.py" ];
 
-  pythonImportsCheck = [
-    "flask_socketio"
-  ];
+  pythonImportsCheck = [ "flask_socketio" ];
 
   meta = with lib; {
     description = "Socket.IO integration for Flask applications";
diff --git a/pkgs/development/python-modules/flask-sockets/default.nix b/pkgs/development/python-modules/flask-sockets/default.nix
index aa29fd4fbc943..6879b64fdb75f 100644
--- a/pkgs/development/python-modules/flask-sockets/default.nix
+++ b/pkgs/development/python-modules/flask-sockets/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flask
-, gevent
-, gevent-websocket
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flask,
+  gevent,
+  gevent-websocket,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
   # upstream doesn't have any tests, single file
   doCheck = false;
 
-  pythonImportsCheck = [
-    "flask_sockets"
-  ];
+  pythonImportsCheck = [ "flask_sockets" ];
 
   meta = with lib; {
     description = "Elegant WebSockets for your Flask apps";
diff --git a/pkgs/development/python-modules/flask-sqlalchemy-lite/default.nix b/pkgs/development/python-modules/flask-sqlalchemy-lite/default.nix
new file mode 100644
index 0000000000000..a6afc09f4edf2
--- /dev/null
+++ b/pkgs/development/python-modules/flask-sqlalchemy-lite/default.nix
@@ -0,0 +1,45 @@
+{
+  aiosqlite,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flask,
+  flit-core,
+  lib,
+  pytestCheckHook,
+  sqlalchemy,
+}:
+
+buildPythonPackage rec {
+  pname = "flask-sqlalchemy-lite";
+  version = "0.1.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "pallets-eco";
+    repo = "flask-sqlalchemy-lite";
+    rev = "refs/tags/${version}";
+    hash = "sha256-LpdPp5Gp74DSJqD1DJqwNeaMKdN5pEAUkxnKGYZcVis=";
+  };
+
+  build-system = [ flit-core ];
+
+  dependencies = [
+    flask
+    sqlalchemy
+  ] ++ flask.optional-dependencies.async ++ sqlalchemy.optional-dependencies.asyncio;
+
+  pythonImportsCheck = [ "flask_sqlalchemy_lite" ];
+
+  nativeCheckInputs = [
+    aiosqlite
+    pytestCheckHook
+  ];
+
+  meta = {
+    changelog = "https://github.com/pallets-eco/flask-sqlalchemy-lite/blob/${src.rev}/CHANGES.md";
+    description = "Integrate SQLAlchemy with Flask";
+    homepage = "https://github.com/pallets-eco/flask-sqlalchemy-lite";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/flask-sqlalchemy/default.nix b/pkgs/development/python-modules/flask-sqlalchemy/default.nix
index 7f1775418f1c1..4a9de0f4dd6d1 100644
--- a/pkgs/development/python-modules/flask-sqlalchemy/default.nix
+++ b/pkgs/development/python-modules/flask-sqlalchemy/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flask
-, mock
-, flit-core
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, sqlalchemy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flask,
+  mock,
+  flit-core,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  sqlalchemy,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-5LaLuIGALdoafYeLL8hMBtHuV/tAuHTT3Jfav6NrgxI=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     flask
@@ -46,12 +45,11 @@ buildPythonPackage rec {
 
   pytestFlagsArray = lib.optionals (pythonAtLeast "3.12") [
     # datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version.
-    "-W" "ignore::DeprecationWarning"
+    "-W"
+    "ignore::DeprecationWarning"
   ];
 
-  pythonImportsCheck = [
-    "flask_sqlalchemy"
-  ];
+  pythonImportsCheck = [ "flask_sqlalchemy" ];
 
   meta = with lib; {
     description = "SQLAlchemy extension for Flask";
diff --git a/pkgs/development/python-modules/flask-sslify/default.nix b/pkgs/development/python-modules/flask-sslify/default.nix
index bb3ef6c8cd1a7..f384c875a7704 100644
--- a/pkgs/development/python-modules/flask-sslify/default.nix
+++ b/pkgs/development/python-modules/flask-sslify/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchPypi, buildPythonPackage, flask }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  flask,
+}:
 
 buildPythonPackage rec {
   pname = "flask-sslify";
@@ -16,7 +21,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "flask_sslify" ];
 
   meta = with lib; {
-    description = "A Flask extension that redirects all incoming requests to HTTPS";
+    description = "Flask extension that redirects all incoming requests to HTTPS";
     homepage = "https://github.com/kennethreitz42/flask-sslify";
     license = licenses.bsd2;
     maintainers = with maintainers; [ zhaofengli ];
diff --git a/pkgs/development/python-modules/flask-swagger-ui/default.nix b/pkgs/development/python-modules/flask-swagger-ui/default.nix
index 8fa18aecc924d..b8fbada07ee9f 100644
--- a/pkgs/development/python-modules/flask-swagger-ui/default.nix
+++ b/pkgs/development/python-modules/flask-swagger-ui/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, flask }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flask,
+}:
 
 buildPythonPackage rec {
   pname = "flask-swagger-ui";
@@ -10,11 +15,9 @@ buildPythonPackage rec {
     hash = "sha256-o3AZmngNZ4sy448b4Q1Nge+g7mPp/i+3Zv8aS2w32sg=";
   };
 
-  doCheck = false;  # there are no tests
+  doCheck = false; # there are no tests
 
-  propagatedBuildInputs = [
-    flask
-  ];
+  propagatedBuildInputs = [ flask ];
 
   meta = with lib; {
     homepage = "https://github.com/sveint/flask-swagger-ui";
diff --git a/pkgs/development/python-modules/flask-swagger/default.nix b/pkgs/development/python-modules/flask-swagger/default.nix
index 4f968505edaa5..e71d148cb4652 100644
--- a/pkgs/development/python-modules/flask-swagger/default.nix
+++ b/pkgs/development/python-modules/flask-swagger/default.nix
@@ -1,5 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi
-, flask, pyyaml }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flask,
+  pyyaml,
+}:
 
 buildPythonPackage rec {
   version = "0.2.14";
diff --git a/pkgs/development/python-modules/flask-talisman/default.nix b/pkgs/development/python-modules/flask-talisman/default.nix
index 76a79e5f09111..ba46319e52106 100644
--- a/pkgs/development/python-modules/flask-talisman/default.nix
+++ b/pkgs/development/python-modules/flask-talisman/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flask
-, six
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flask,
+  six,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,17 +17,11 @@ buildPythonPackage rec {
     hash = "sha256-xfSG9fVEIHKfhLPDhQzWP5bosDOpYpvuZsUk6jY3l/8=";
   };
 
-  buildInputs = [
-    flask
-  ];
+  buildInputs = [ flask ];
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
-  nativeBuildInputs = [
-    pytestCheckHook
-  ];
+  nativeBuildInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "HTTP security headers for Flask";
diff --git a/pkgs/development/python-modules/flask-testing/default.nix b/pkgs/development/python-modules/flask-testing/default.nix
index cb1c3cf79bd18..07d410fa1b17d 100644
--- a/pkgs/development/python-modules/flask-testing/default.nix
+++ b/pkgs/development/python-modules/flask-testing/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, stdenv
-, blinker
-, pytestCheckHook
-, buildPythonPackage
-, fetchPypi
-, flask
-, pythonOlder
+{
+  lib,
+  stdenv,
+  blinker,
+  pytestCheckHook,
+  buildPythonPackage,
+  fetchPypi,
+  flask,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-CnNNe2jmOpQQtBPNex+WRW+ahYvQmmIi1GVlDMeC6wE=";
   };
 
-  propagatedBuildInputs = [
-    flask
-  ];
+  propagatedBuildInputs = [ flask ];
 
   nativeCheckInputs = [
     blinker
@@ -31,7 +30,7 @@ buildPythonPackage rec {
   ];
 
   # Some of the tests use localhost networking on darwin
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   disabledTests = [
     # RuntimeError and NotImplementedError
@@ -47,9 +46,7 @@ buildPythonPackage rec {
     "tests/test_twill.py"
   ];
 
-  pythonImportsCheck = [
-    "flask_testing"
-  ];
+  pythonImportsCheck = [ "flask_testing" ];
 
   meta = with lib; {
     description = "Extension provides unit testing utilities for Flask";
diff --git a/pkgs/development/python-modules/flask-themes2/default.nix b/pkgs/development/python-modules/flask-themes2/default.nix
index b4cd08bdcf09b..745e1e91655eb 100644
--- a/pkgs/development/python-modules/flask-themes2/default.nix
+++ b/pkgs/development/python-modules/flask-themes2/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools
-, flask
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  flask,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-gsMgQQXjhDfQRhm7H0kBy8jKxd75WY+PhHR6Rk/PUPs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    flask
-  ];
+  propagatedBuildInputs = [ flask ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Easily theme your Flask app";
diff --git a/pkgs/development/python-modules/flask-versioned/default.nix b/pkgs/development/python-modules/flask-versioned/default.nix
index 1d54e49e417d2..07bb5cbe40b15 100644
--- a/pkgs/development/python-modules/flask-versioned/default.nix
+++ b/pkgs/development/python-modules/flask-versioned/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchFromGitHub, flask }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flask,
+}:
 
 buildPythonPackage rec {
   pname = "flask-versioned";
@@ -17,6 +22,6 @@ buildPythonPackage rec {
     description = "Flask plugin to rewrite file paths to add version info";
     homepage = "https://github.com/pilt/flask-versioned";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/flask-wtf/default.nix b/pkgs/development/python-modules/flask-wtf/default.nix
index a106945df060c..487c2c997b8ee 100644
--- a/pkgs/development/python-modules/flask-wtf/default.nix
+++ b/pkgs/development/python-modules/flask-wtf/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, hatchling
-, flask
-, itsdangerous
-, wtforms
-, email-validator
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
+  hatchling,
+  flask,
+  itsdangerous,
+  wtforms,
+  email-validator,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -39,18 +40,20 @@ buildPythonPackage rec {
     email = [ email-validator ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pytestFlagsArray = [
-    "-W" "ignore::DeprecationWarning"
+    "-W"
+    "ignore::DeprecationWarning"
   ];
 
   meta = with lib; {
-    description = "Simple integration of Flask and WTForms.";
+    description = "Simple integration of Flask and WTForms";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ mic92 anthonyroussel ];
+    maintainers = with maintainers; [
+      mic92
+      anthonyroussel
+    ];
     homepage = "https://github.com/lepture/flask-wtf/";
     changelog = "https://github.com/wtforms/flask-wtf/releases/tag/v${version}";
   };
diff --git a/pkgs/development/python-modules/flask/default.nix b/pkgs/development/python-modules/flask/default.nix
index 8c60066b1975d..d8effec2045e5 100644
--- a/pkgs/development/python-modules/flask/default.nix
+++ b/pkgs/development/python-modules/flask/default.nix
@@ -1,47 +1,46 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 
-# build-system
-, flit-core
+  # build-system
+  flit-core,
 
-# dependencies
-, blinker
-, click
-, importlib-metadata
-, itsdangerous
-, jinja2
-, werkzeug
+  # dependencies
+  blinker,
+  click,
+  importlib-metadata,
+  itsdangerous,
+  jinja2,
+  werkzeug,
 
-# optional-dependencies
-, asgiref
-, python-dotenv
+  # optional-dependencies
+  asgiref,
+  python-dotenv,
 
-# tests
-, greenlet
-, pytestCheckHook
+  # tests
+  greenlet,
+  pytestCheckHook,
 
-# reverse dependencies
-, flask-limiter
-, flask-restful
-, flask-restx
-, moto
+  # reverse dependencies
+  flask-limiter,
+  flask-restful,
+  flask-restx,
+  moto,
 }:
 
 buildPythonPackage rec {
   pname = "flask";
-  version = "3.0.2";
+  version = "3.0.3";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-giwD9LeZIEJQp+6Ese3cQGZTlTM5c9+53uv+Ql/vy30=";
+    hash = "sha256-zrJ7CvOCPqJzeSik2Z0SWgYXW4USxEXL2anOIA73aEI=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     click
@@ -49,33 +48,33 @@ buildPythonPackage rec {
     itsdangerous
     jinja2
     werkzeug
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
   passthru.optional-dependencies = {
-    async = [
-      asgiref
-    ];
-    dotenv = [
-      python-dotenv
-    ];
+    async = [ asgiref ];
+    dotenv = [ python-dotenv ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    greenlet
-  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+  nativeCheckInputs =
+    [ pytestCheckHook ]
+    ++ lib.optionals (pythonOlder "3.11") [ greenlet ]
+    ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
   passthru.tests = {
-    inherit flask-limiter flask-restful flask-restx moto;
+    inherit
+      flask-limiter
+      flask-restful
+      flask-restx
+      moto
+      ;
   };
 
   meta = with lib; {
-    changelog = "https://flask.palletsprojects.com/en/${versions.majorMinor version}.x/changes/#version-${replaceStrings [ "." ] [ "-" ] version}";
+    changelog = "https://flask.palletsprojects.com/en/${versions.majorMinor version}.x/changes/#version-${
+      replaceStrings [ "." ] [ "-" ] version
+    }";
     homepage = "https://flask.palletsprojects.com/";
-    description = "The Python micro framework for building web applications";
+    description = "Python micro framework for building web applications";
     mainProgram = "flask";
     longDescription = ''
       Flask is a lightweight WSGI web application framework. It is
diff --git a/pkgs/development/python-modules/flatbuffers/default.nix b/pkgs/development/python-modules/flatbuffers/default.nix
index 74719b2415865..db0405cc34d11 100644
--- a/pkgs/development/python-modules/flatbuffers/default.nix
+++ b/pkgs/development/python-modules/flatbuffers/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, flatbuffers
+{
+  lib,
+  buildPythonPackage,
+  flatbuffers,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/flatdict/default.nix b/pkgs/development/python-modules/flatdict/default.nix
index c96d905860269..d0aacabfbbca1 100644
--- a/pkgs/development/python-modules/flatdict/default.nix
+++ b/pkgs/development/python-modules/flatdict/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
     hash = "sha256-CWsTiCNdIKSQtjpQC07lhZoU1hXT/MGpXdj649x2GlU=";
   };
 
-  pythonImportsCheck = [
-    "flatdict"
-  ];
+  pythonImportsCheck = [ "flatdict" ];
 
   meta = with lib; {
     description = "Python module for interacting with nested dicts as a single level dict with delimited keys";
diff --git a/pkgs/development/python-modules/flatten-dict/default.nix b/pkgs/development/python-modules/flatten-dict/default.nix
index 41929f9f671f0..9f50f2c7dab92 100644
--- a/pkgs/development/python-modules/flatten-dict/default.nix
+++ b/pkgs/development/python-modules/flatten-dict/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-uHenKoD4eLm9sMREVuV0BB/oUgh4NMiuj+IWd0hlxNQ=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "flatten_dict"
-  ];
+  pythonImportsCheck = [ "flatten_dict" ];
 
   meta = with lib; {
     description = "Module for flattening and unflattening dict-like objects";
diff --git a/pkgs/development/python-modules/flax/default.nix b/pkgs/development/python-modules/flax/default.nix
index ce41f8e561394..098e6cf28e6b5 100644
--- a/pkgs/development/python-modules/flax/default.nix
+++ b/pkgs/development/python-modules/flax/default.nix
@@ -1,49 +1,54 @@
-{ lib
-, buildPythonPackage
-, cloudpickle
-, einops
-, fetchFromGitHub
-, jax
-, jaxlib
-, keras
-, matplotlib
-, msgpack
-, numpy
-, optax
-, orbax-checkpoint
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, pyyaml
-, rich
-, setuptools-scm
-, tensorflow
-, tensorstore
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  jaxlib,
+  setuptools-scm,
+
+  # dependencies
+  jax,
+  msgpack,
+  numpy,
+  optax,
+  orbax-checkpoint,
+  pyyaml,
+  rich,
+  tensorstore,
+  typing-extensions,
+
+  # checks
+  cloudpickle,
+  einops,
+  keras,
+  pytest-xdist,
+  pytestCheckHook,
+  tensorflow,
+  treescope,
+
+  # optional-dependencies
+  matplotlib,
 }:
 
 buildPythonPackage rec {
   pname = "flax";
-  version = "0.8.2";
+  version = "0.9.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
-
   src = fetchFromGitHub {
     owner = "google";
     repo = "flax";
     rev = "refs/tags/v${version}";
-    hash = "sha256-UABgJGe1grUSkwOJpjeIoFqhXsqG//HlC1YyYPxXV+g=";
+    hash = "sha256-iDWuUJKO7V4QrbVsS4ALgy6fbllOC43o7W4mhjtZ9xc=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     jaxlib
-    pythonRelaxDepsHook
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     jax
     msgpack
     numpy
@@ -59,9 +64,7 @@ buildPythonPackage rec {
     all = [ matplotlib ];
   };
 
-  pythonImportsCheck = [
-    "flax"
-  ];
+  pythonImportsCheck = [ "flax" ];
 
   nativeCheckInputs = [
     cloudpickle
@@ -70,6 +73,7 @@ buildPythonPackage rec {
     pytest-xdist
     pytestCheckHook
     tensorflow
+    treescope
   ];
 
   pytestFlagsArray = [
@@ -87,23 +91,28 @@ buildPythonPackage rec {
     # `tensorflow_datasets`, `vocabulary`) so the benefits of trying to run them
     # would be limited anyway.
     "examples/*"
-    "flax/experimental/nnx/examples/*"
+    "flax/nnx/examples/*"
     # See https://github.com/google/flax/issues/3232.
     "tests/jax_utils_test.py"
-    # Requires tree
+    # Too old version of tensorflow:
+    # ModuleNotFoundError: No module named 'keras.api._v2'
     "tests/tensorboard_test.py"
   ];
 
   disabledTests = [
     # ValueError: Checkpoint path should be absolute
     "test_overwrite_checkpoints0"
+    # Fixed in more recent versions of jax: https://github.com/google/flax/issues/4211
+    # TODO: Re-enable when jax>0.4.28 will be available in nixpkgs
+    "test_vmap_and_cond_passthrough" # ValueError: vmap has mapped output but out_axes is None
+    "test_vmap_and_cond_passthrough_error" # AssertionError: "at vmap.*'broadcast'.*got axis spec ...
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Neural network library for JAX";
     homepage = "https://github.com/google/flax";
     changelog = "https://github.com/google/flax/releases/tag/v${version}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ ndl ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ ndl ];
   };
 }
diff --git a/pkgs/development/python-modules/fleep/default.nix b/pkgs/development/python-modules/fleep/default.nix
index f41cb01094029..4f178a836c22f 100644
--- a/pkgs/development/python-modules/fleep/default.nix
+++ b/pkgs/development/python-modules/fleep/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-TaU7njx98nxkhZawGMFqWj4g+yCtIX9aPWQHoamzfMY=";
   };
 
-  patches = [
-    ./0001-Fixing-paths-on-tests.patch
-  ];
+  patches = [ ./0001-Fixing-paths-on-tests.patch ];
 
   checkPhase = ''
     ${python.interpreter} tests/maintest.py
@@ -32,6 +31,6 @@ buildPythonPackage rec {
     description = "File format determination library";
     homepage = "https://github.com/floyernick/fleep-py";
     license = licenses.mit;
-    maintainers = with maintainers; [ wolfangaukang ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/flet-core/default.nix b/pkgs/development/python-modules/flet-core/default.nix
index 99612c52b5adc..dd65e60e13297 100644
--- a/pkgs/development/python-modules/flet-core/default.nix
+++ b/pkgs/development/python-modules/flet-core/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, flet-client-flutter
+{
+  lib,
+  buildPythonPackage,
+  flet-client-flutter,
 
-# build-system
-, poetry-core
+  # build-system
+  poetry-core,
 
-# propagates
-, typing-extensions
-, repath
+  # propagates
+  typing-extensions,
+  repath,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
 
   sourceRoot = "${src.name}/sdk/python/packages/flet-core";
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     repath
@@ -30,9 +29,12 @@ buildPythonPackage rec {
 
   meta = {
     changelog = "https://github.com/flet-dev/flet/releases/tag/v${version}";
-    description = "The library is the foundation of Flet framework and is not intended to be used directly";
+    description = "Library is the foundation of Flet framework and is not intended to be used directly";
     homepage = "https://flet.dev/";
     license = lib.licenses.asl20;
-    maintainers = with lib.maintainers; [ heyimnova lucasew ];
+    maintainers = with lib.maintainers; [
+      heyimnova
+      lucasew
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/flet-runtime/default.nix b/pkgs/development/python-modules/flet-runtime/default.nix
index 585fba6795c15..d9679fdc4f45f 100644
--- a/pkgs/development/python-modules/flet-runtime/default.nix
+++ b/pkgs/development/python-modules/flet-runtime/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, flet-client-flutter
-, poetry-core
-, pythonRelaxDepsHook
-, flet-core
-, httpx
-, oauthlib
+{
+  lib,
+  buildPythonPackage,
+  flet-client-flutter,
+  poetry-core,
+  flet-core,
+  httpx,
+  oauthlib,
 }:
 
 buildPythonPackage rec {
@@ -25,12 +25,9 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "httpx"
-  ];
+  pythonRelaxDeps = [ "httpx" ];
 
   propagatedBuildInputs = [
     flet-core
@@ -38,13 +35,11 @@ buildPythonPackage rec {
     oauthlib
   ];
 
-  pythonImportsCheck = [
-    "flet_runtime"
-  ];
+  pythonImportsCheck = [ "flet_runtime" ];
 
   meta = {
     changelog = "https://github.com/flet-dev/flet/releases/tag/v${version}";
-    description = "A base package for Flet desktop and Flet mobile";
+    description = "Base package for Flet desktop and Flet mobile";
     homepage = "https://flet.dev/";
     license = lib.licenses.asl20;
     maintainers = with lib.maintainers; [ lucasew ];
diff --git a/pkgs/development/python-modules/flet/default.nix b/pkgs/development/python-modules/flet/default.nix
index 3e9a7d1f7bf0e..7857ff5627371 100644
--- a/pkgs/development/python-modules/flet/default.nix
+++ b/pkgs/development/python-modules/flet/default.nix
@@ -1,24 +1,24 @@
-{ lib
-, buildPythonPackage
-, flet-client-flutter
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  flet-client-flutter,
 
-# build-system
-, poetry-core
+  # build-system
+  poetry-core,
 
-# propagates
-, fastapi
-, flet-core
-, flet-runtime
-, httpx
-, oauthlib
-, packaging
-, qrcode
-, cookiecutter
-, uvicorn
-, watchdog
-, websocket-client
-, websockets
+  # propagates
+  fastapi,
+  flet-core,
+  flet-runtime,
+  httpx,
+  oauthlib,
+  packaging,
+  qrcode,
+  cookiecutter,
+  uvicorn,
+  watchdog,
+  websocket-client,
+  websockets,
 
 }:
 
@@ -32,7 +32,10 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
+  ];
+
+  makeWrapperArgs = [
+    "--prefix" "PYTHONPATH" ":" "$PYTHONPATH"
   ];
 
   pythonRelaxDeps = [
@@ -61,16 +64,17 @@ buildPythonPackage rec {
 
   doCheck = false;
 
-  pythonImportsCheck = [
-    "flet"
-  ];
+  pythonImportsCheck = [ "flet" ];
 
   meta = {
-    description = "A framework that enables you to easily build realtime web, mobile, and desktop apps in Python";
+    description = "Framework that enables you to easily build realtime web, mobile, and desktop apps in Python";
     homepage = "https://flet.dev/";
     changelog = "https://github.com/flet-dev/flet/releases/tag/v${version}";
     license = lib.licenses.asl20;
-    maintainers = with lib.maintainers; [ heyimnova lucasew ];
+    maintainers = with lib.maintainers; [
+      heyimnova
+      lucasew
+    ];
     mainProgram = "flet";
   };
 }
diff --git a/pkgs/development/python-modules/flexcache/default.nix b/pkgs/development/python-modules/flexcache/default.nix
new file mode 100644
index 0000000000000..a15801505ca9a
--- /dev/null
+++ b/pkgs/development/python-modules/flexcache/default.nix
@@ -0,0 +1,55 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+  wheel,
+
+  # dependencies
+  typing-extensions,
+
+  # checks
+  pytestCheckHook,
+  pytest-mpl,
+  pytest-subtests,
+}:
+
+buildPythonPackage rec {
+  pname = "flexcache";
+  version = "0.3";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "hgrecco";
+    repo = "flexcache";
+    rev = version;
+    hash = "sha256-MAbTe7NxzfRPzo/Wnb5SnPJvJWf6zVeYsaw/g9OJYSE=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+    wheel
+  ];
+
+  dependencies = [ typing-extensions ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-mpl
+    pytest-subtests
+  ];
+
+  pythonImportsCheck = [ "flexcache" ];
+
+  meta = with lib; {
+    description = "An robust and extensible package to cache on disk the result of expensive calculations";
+    homepage = "https://github.com/hgrecco/flexcache";
+    changelog = "https://github.com/hgrecco/flexcache/blob/${src.rev}/CHANGES";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ doronbehar ];
+  };
+}
diff --git a/pkgs/development/python-modules/flexit-bacnet/default.nix b/pkgs/development/python-modules/flexit-bacnet/default.nix
new file mode 100644
index 0000000000000..1fdad51d39b01
--- /dev/null
+++ b/pkgs/development/python-modules/flexit-bacnet/default.nix
@@ -0,0 +1,34 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "flexit-bacnet";
+  version = "2.2.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "piotrbulinski";
+    repo = "flexit_bacnet";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Cy/WHKtJoZWSFOs+9rBYSLqZTF/68WRM1HiYXDyb9KM=";
+  };
+
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "flexit_bacnet" ];
+
+  # upstream has no tests
+  doCheck = false;
+
+  meta = {
+    changelog = "https://github.com/piotrbulinski/flexit_bacnet/releases/tag/${version}";
+    description = "Client BACnet library for Flexit Nordic series of air handling units";
+    homepage = "https://github.com/piotrbulinski/flexit_bacnet";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/flexmock/default.nix b/pkgs/development/python-modules/flexmock/default.nix
index 45b2981ba9596..5088c3bcd605c 100644
--- a/pkgs/development/python-modules/flexmock/default.nix
+++ b/pkgs/development/python-modules/flexmock/default.nix
@@ -1,28 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, poetry-core
-, teamcity-messages
-, testtools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  poetry-core,
+  teamcity-messages,
+  testtools,
 }:
 
 buildPythonPackage rec {
   pname = "flexmock";
-  version = "0.12.0";
+  version = "0.12.1";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-YdBvPRRCuBW3qoWh9HvoONBW9fXRTO/teuv7A0c9FKs=";
+    hash = "sha256-ILaQr6T/jG8xVI2JbW1BzKH8kFCkz2KLll6kNOxUjuM=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -30,14 +29,12 @@ buildPythonPackage rec {
     testtools
   ];
 
-  pythonImportsCheck = [
-    "flexmock"
-  ];
+  pythonImportsCheck = [ "flexmock" ];
 
   meta = with lib; {
     description = "Testing library that makes it easy to create mocks,stubs and fakes";
     homepage = "https://flexmock.readthedocs.org";
     license = licenses.bsdOriginal;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/flexparser/default.nix b/pkgs/development/python-modules/flexparser/default.nix
new file mode 100644
index 0000000000000..60ab74a5546ef
--- /dev/null
+++ b/pkgs/development/python-modules/flexparser/default.nix
@@ -0,0 +1,55 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+  wheel,
+
+  # dependencies
+  typing-extensions,
+
+  # checks
+  pytestCheckHook,
+  pytest-mpl,
+  pytest-subtests,
+}:
+
+buildPythonPackage rec {
+  pname = "flexparser";
+  version = "0.3.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "hgrecco";
+    repo = "flexparser";
+    rev = version;
+    hash = "sha256-9ImG8uh1SZ+pAbqzWBkTVn+3EBAGzzdP8vqqP59IgIw=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+    setuptools-scm
+    wheel
+  ];
+
+  propagatedBuildInputs = [ typing-extensions ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-mpl
+    pytest-subtests
+  ];
+
+  pythonImportsCheck = [ "flexparser" ];
+
+  meta = with lib; {
+    description = "Parsing made fun ... using typing";
+    homepage = "https://github.com/hgrecco/flexparser";
+    changelog = "https://github.com/hgrecco/flexparser/blob/${src.rev}/CHANGES";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ doronbehar ];
+  };
+}
diff --git a/pkgs/development/python-modules/flickrapi/default.nix b/pkgs/development/python-modules/flickrapi/default.nix
index ca04c9110eef2..9bbd11bd65b6b 100644
--- a/pkgs/development/python-modules/flickrapi/default.nix
+++ b/pkgs/development/python-modules/flickrapi/default.nix
@@ -1,30 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, requests-toolbelt
-, requests-oauthlib
-, six
-, pytestCheckHook
-, responses
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  requests-toolbelt,
+  requests-oauthlib,
+  six,
+  pytestCheckHook,
+  responses,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "flickrapi";
   version = "2.4";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "sybrenstuvel";
-    repo = pname;
+    repo = "flickrapi";
     rev = "version-${version}";
     hash = "sha256-vRZrlXKI0UDdmDevh3XUngH4X8G3VlOCSP0z/rxhIgw=";
   };
 
-  propagatedBuildInputs = [
+  postPatch = ''
+    substituteInPlace tests/test_tokencache.py \
+      --replace-fail "assertEquals" "assertEqual" \
+      --replace-fail "assertNotEquals" "assertNotEqual"
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     requests
     requests-toolbelt
     requests-oauthlib
@@ -55,13 +65,12 @@ buildPythonPackage rec {
     "test_xmlnode_format_error"
   ];
 
-  pythonImportsCheck = [
-    "flickrapi"
-  ];
+  pythonImportsCheck = [ "flickrapi" ];
 
   meta = with lib; {
-    description = "A Python interface to the Flickr API";
+    description = "Python interface to the Flickr API";
     homepage = "https://stuvel.eu/flickrapi";
+    changelog = "https://github.com/sybrenstuvel/flickrapi/blob/version-${version}/CHANGELOG.md";
     license = licenses.psfl;
     maintainers = with maintainers; [ obadz ];
   };
diff --git a/pkgs/development/python-modules/flipr-api/default.nix b/pkgs/development/python-modules/flipr-api/default.nix
index 650573d73fc5a..8b725ccc20509 100644
--- a/pkgs/development/python-modules/flipr-api/default.nix
+++ b/pkgs/development/python-modules/flipr-api/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, requests-mock
-, pythonOlder
-, pytest-asyncio
-, pytestCheckHook
-, python-dateutil
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  requests-mock,
+  pythonOlder,
+  pytest-asyncio,
+  pytestCheckHook,
+  python-dateutil,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "flipr-api";
-  version = "1.5.1";
+  version = "1.6.1";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -21,14 +22,12 @@ buildPythonPackage rec {
     owner = "cnico";
     repo = "flipr-api";
     rev = "refs/tags/${version}";
-    hash = "sha256-xgLi2lH+EPPNlMixqOzdBGVLuoJh5dhZ2tHZ0UH+lOk=";
+    hash = "sha256-/px8NuBwukAPMxdXvHdyfO/j/a9UatKbdrjDNuT0f4k=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     python-dateutil
     requests
   ];
@@ -39,16 +38,20 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "flipr_api"
-  ];
+  env = {
+    # used in test_session
+    FLIPR_USERNAME = "foobar";
+    FLIPR_PASSWORD = "secret";
+  };
+
+  pythonImportsCheck = [ "flipr_api" ];
 
   meta = with lib; {
     description = "Python client for Flipr API";
     mainProgram = "flipr-api";
     homepage = "https://github.com/cnico/flipr-api";
     changelog = "https://github.com/cnico/flipr-api/releases/tag/${version}";
-    license = licenses.mit;
+    license = licenses.gpl3Plus;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/flit-core/default.nix b/pkgs/development/python-modules/flit-core/default.nix
index a4e0716cf344a..05157efb8648f 100644
--- a/pkgs/development/python-modules/flit-core/default.nix
+++ b/pkgs/development/python-modules/flit-core/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, flit
+{
+  lib,
+  buildPythonPackage,
+  flit,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/flit-gettext/default.nix b/pkgs/development/python-modules/flit-gettext/default.nix
new file mode 100644
index 0000000000000..311861da7f711
--- /dev/null
+++ b/pkgs/development/python-modules/flit-gettext/default.nix
@@ -0,0 +1,79 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  substituteAll,
+
+  # build-system
+  flit-scm,
+  wheel,
+
+  # dependencies
+  flit-core,
+  gettext,
+
+  # tests
+  build,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "flit-gettext";
+  version = "1.0.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "codingjoe";
+    repo = "flit-gettext";
+    rev = version;
+    hash = "sha256-YsRfpciSrHmivEJKfzdp6UaPx2tSr3VdjU4ZIbYQX6c=";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./msgfmt-path.patch;
+      msgfmt = lib.getExe' gettext "msgfmt";
+    })
+  ];
+
+  postPatch = ''
+    sed -i "s/--cov//" pyproject.toml
+  '';
+
+  nativeBuildInputs = [
+    flit-scm
+    wheel
+  ];
+
+  propagatedBuildInputs = [ flit-core ];
+
+  optional-dependencies = {
+    scm = [ flit-scm ];
+  };
+
+  nativeCheckInputs = [
+    build
+    pytestCheckHook
+    wheel
+  ] ++ optional-dependencies.scm;
+
+  disabledTests = [
+    # tests for missing msgfmt, but we always provide it
+    "test_compile_gettext_translations__no_gettext"
+  ];
+
+  disabledTestPaths = [
+    # calls python -m build, but can't find build
+    "tests/test_core.py"
+    "tests/test_scm.py"
+  ];
+
+  pythonImportsCheck = [ "flit_gettext" ];
+
+  meta = with lib; {
+    description = "Compiling gettext i18n messages during project bundling";
+    homepage = "https://github.com/codingjoe/flit-gettext";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/development/python-modules/flit-gettext/msgfmt-path.patch b/pkgs/development/python-modules/flit-gettext/msgfmt-path.patch
new file mode 100644
index 0000000000000..957eb513f7720
--- /dev/null
+++ b/pkgs/development/python-modules/flit-gettext/msgfmt-path.patch
@@ -0,0 +1,13 @@
+diff --git a/flit_gettext/utils.py b/flit_gettext/utils.py
+index dd1b135..1c8877c 100644
+--- a/flit_gettext/utils.py
++++ b/flit_gettext/utils.py
+@@ -7,7 +7,7 @@ def compile_gettext_translations(config):
+     """Compile gettext translations."""
+     print("\33[1m* Compiling gettext translations...\33[0m")
+ 
+-    msgfmt = shutil.which("msgfmt")
++    msgfmt = shutil.which("msgfmt") or "@msgfmt@"
+ 
+     if msgfmt is None:
+         raise OSError("msgfmt not found, please install gettext or check your PATH.")
diff --git a/pkgs/development/python-modules/flit-scm/default.nix b/pkgs/development/python-modules/flit-scm/default.nix
index 24075891c61e9..0592be831f6d8 100644
--- a/pkgs/development/python-modules/flit-scm/default.nix
+++ b/pkgs/development/python-modules/flit-scm/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitLab
-, pythonOlder
-, flit-core
-, setuptools-scm
-, tomli
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  pythonOlder,
+  flit-core,
+  setuptools-scm,
+  tomli,
 }:
 
 buildPythonPackage rec {
@@ -22,26 +23,19 @@ buildPythonPackage rec {
   nativeBuildInputs = [
     flit-core
     setuptools-scm
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   propagatedBuildInputs = [
     flit-core
     setuptools-scm
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
-
-  pythonImportsCheck = [
-    "flit_scm"
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
+  pythonImportsCheck = [ "flit_scm" ];
 
   doCheck = false; # no tests
 
   meta = with lib; {
-    description = "A PEP 518 build backend that uses setuptools_scm to generate a version file from your version control system, then flit to build the package.";
+    description = "PEP 518 build backend that uses setuptools_scm to generate a version file from your version control system, then flit to build the package";
     homepage = "https://gitlab.com/WillDaSilva/flit_scm";
     license = licenses.mit;
     maintainers = with maintainers; [ cpcloud ];
diff --git a/pkgs/development/python-modules/flit/default.nix b/pkgs/development/python-modules/flit/default.nix
index b623d1ec26ecc..9284de7d11844 100644
--- a/pkgs/development/python-modules/flit/default.nix
+++ b/pkgs/development/python-modules/flit/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, docutils
-, requests
-, pytestCheckHook
-, testpath
-, responses
-, flit-core
-, tomli-w
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  docutils,
+  requests,
+  pytestCheckHook,
+  testpath,
+  responses,
+  flit-core,
+  tomli-w,
 }:
 
 # Flit is actually an application to build universal wheels.
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     hash = "sha256-yl2+PcKr7xRW4oIBWl+gzh/nKhSNu5GH9fWKRGgaNHU=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     docutils
@@ -38,7 +37,11 @@ buildPythonPackage rec {
     tomli-w
   ];
 
-  nativeCheckInputs = [ pytestCheckHook testpath responses ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    testpath
+    responses
+  ];
 
   disabledTests = [
     # needs some ini file.
@@ -52,7 +55,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     changelog = "https://github.com/pypa/flit/blob/${version}/doc/history.rst";
-    description = "A simple packaging tool for simple packages";
+    description = "Simple packaging tool for simple packages";
     mainProgram = "flit";
     homepage = "https://github.com/pypa/flit";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/floret/default.nix b/pkgs/development/python-modules/floret/default.nix
index 6ca020ac81df1..b2e1099e20158 100644
--- a/pkgs/development/python-modules/floret/default.nix
+++ b/pkgs/development/python-modules/floret/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pybind11
-, setuptools
-, wheel
-, numpy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pybind11,
+  setuptools,
+  wheel,
+  numpy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,7 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-7vkw6H0ZQoHEwNusY6QWh/vPbSCdP1ZaaqABHsZH6hQ=";
   };
 
-  patches = [./cstdint.patch ];
+  patches = [ ./cstdint.patch ];
 
   nativeBuildInputs = [
     pybind11
@@ -38,9 +39,7 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "floret" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "FastText + Bloom embeddings for compact, full-coverage vectors with spaCy";
diff --git a/pkgs/development/python-modules/flow-record/default.nix b/pkgs/development/python-modules/flow-record/default.nix
index 3e836772aa851..d9c61a791615b 100644
--- a/pkgs/development/python-modules/flow-record/default.nix
+++ b/pkgs/development/python-modules/flow-record/default.nix
@@ -1,21 +1,21 @@
-{ lib
-, buildPythonPackage
-, elasticsearch
-, fastavro
-, fetchFromGitHub
-, lz4
-, msgpack
-, pytest7CheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
-, wheel
-, zstandard
+{
+  lib,
+  buildPythonPackage,
+  elasticsearch,
+  fastavro,
+  fetchFromGitHub,
+  lz4,
+  msgpack,
+  pytest7CheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  zstandard,
 }:
 
 buildPythonPackage rec {
   pname = "flow-record";
-  version = "3.14";
+  version = "3.15";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,48 +24,37 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "flow.record";
     rev = "refs/tags/${version}";
-    hash = "sha256-8XQeXfrgTk+jHR1ABlEEIn3E/MkUkGnvkgzePws4qhQ=";
+    hash = "sha256-j5N66p7feB9Ae+Fu5RhVzh8XCHiq55jJMg0Fe+C6Jvg=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
-    wheel
   ];
 
-  propagatedBuildInputs = [
-    msgpack
-  ];
+  dependencies = [ msgpack ];
 
   passthru.optional-dependencies = {
     compression = [
       lz4
       zstandard
     ];
-    elastic = [
-      elasticsearch
-    ];
-    avro = [
-      fastavro
-    ] ++ fastavro.optional-dependencies.snappy;
+    elastic = [ elasticsearch ];
+    avro = [ fastavro ] ++ fastavro.optional-dependencies.snappy;
   };
 
   nativeCheckInputs = [
     pytest7CheckHook
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "flow.record"
-  ];
+  pythonImportsCheck = [ "flow.record" ];
 
   disabledTestPaths = [
     # Test requires rdump
     "tests/test_rdump.py"
   ];
 
-  disabledTests = [
-    "test_rdump_fieldtype_path_json"
-  ];
+  disabledTests = [ "test_rdump_fieldtype_path_json" ];
 
   meta = with lib; {
     description = "Library for defining and creating structured data";
diff --git a/pkgs/development/python-modules/flower/default.nix b/pkgs/development/python-modules/flower/default.nix
index a7d69d06fd783..6999a333f284c 100644
--- a/pkgs/development/python-modules/flower/default.nix
+++ b/pkgs/development/python-modules/flower/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, celery
-, humanize
-, pytz
-, tornado
-, prometheus-client
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  celery,
+  humanize,
+  pytz,
+  tornado,
+  prometheus-client,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,7 +17,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-WrcXuXlTB3DBavtItQ0qmNI8Pp/jmFHc9rxNAYRaAqA=";
+    hash = "sha256-WrcXuXlTB3DBavtItQ0qmNI8Pp/jmFHc9rxNAYRaAqA=";
   };
 
   postPatch = ''
@@ -35,13 +36,9 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "flower"
-  ];
+  pythonImportsCheck = [ "flower" ];
 
   meta = with lib; {
     description = "Real-time monitor and web admin for Celery distributed task queue";
diff --git a/pkgs/development/python-modules/flowlogs-reader/default.nix b/pkgs/development/python-modules/flowlogs-reader/default.nix
index 7769bdcb427b1..ee7d9f4cc2152 100644
--- a/pkgs/development/python-modules/flowlogs-reader/default.nix
+++ b/pkgs/development/python-modules/flowlogs-reader/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, boto3
-, botocore
-, buildPythonPackage
-, fetchFromGitHub
-, parquet
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
+{
+  lib,
+  boto3,
+  botocore,
+  buildPythonPackage,
+  fetchFromGitHub,
+  parquet,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -31,13 +32,9 @@ buildPythonPackage rec {
     python-dateutil
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "flowlogs_reader"
-  ];
+  pythonImportsCheck = [ "flowlogs_reader" ];
 
   meta = with lib; {
     description = "Python library to make retrieving Amazon VPC Flow Logs from CloudWatch Logs a bit easier";
diff --git a/pkgs/development/python-modules/flowmc/default.nix b/pkgs/development/python-modules/flowmc/default.nix
new file mode 100644
index 0000000000000..27127b93b5784
--- /dev/null
+++ b/pkgs/development/python-modules/flowmc/default.nix
@@ -0,0 +1,60 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  corner,
+  equinox,
+  evosax,
+  jax,
+  jaxlib,
+  optax,
+  tqdm,
+
+  # checks
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "flowmc";
+  version = "0.3.4";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "kazewong";
+    repo = "flowMC";
+    rev = "refs/tags/flowMC-${version}";
+    hash = "sha256-unvbNs0AOzW4OI+9y6KxoBC5yEjEz+q0PZblQLXCC/Y=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    corner
+    equinox
+    evosax
+    jax
+    jaxlib
+    optax
+    tqdm
+  ];
+
+  pythonImportsCheck = [ "flowMC" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "Normalizing-flow enhanced sampling package for probabilistic inference in Jax";
+    homepage = "https://github.com/kazewong/flowMC";
+    changelog = "https://github.com/kazewong/flowMC/releases/tag/flowMC-${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/pkgs/development/python-modules/fluent-logger/default.nix b/pkgs/development/python-modules/fluent-logger/default.nix
index 8d9610d2d4483..320cb1343f461 100644
--- a/pkgs/development/python-modules/fluent-logger/default.nix
+++ b/pkgs/development/python-modules/fluent-logger/default.nix
@@ -1,40 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, hatchling
+  # build-system
+  hatchling,
 
-# dependencies
-, msgpack
+  # dependencies
+  msgpack,
 
-# tests
-, pytestCheckHook,
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "fluent-logger";
-  version = "0.11.0";
+  version = "0.11.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "fluent";
     repo = "fluent-logger-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-PfyjJZT5K/IMsyyWNZdh/CZf+uZHeJGfhyAPuu0IhJk=";
+    hash = "sha256-i6S5S2ZUwC5gQPdVjefUXrKj43iLIqxd8tdXbMBJNnA=";
   };
 
-  build-system  = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  dependencies = [
-    msgpack
-  ];
+  dependencies = [ msgpack ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [
     "fluent"
@@ -44,7 +39,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A structured logger for Fluentd (Python)";
+    description = "Structured logger for Fluentd (Python)";
     homepage = "https://github.com/fluent/fluent-logger-python";
     license = licenses.asl20;
   };
diff --git a/pkgs/development/python-modules/flufl/bounce.nix b/pkgs/development/python-modules/flufl/bounce.nix
index 7c6738bc3cd65..c527d036200b7 100644
--- a/pkgs/development/python-modules/flufl/bounce.nix
+++ b/pkgs/development/python-modules/flufl/bounce.nix
@@ -1,10 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, atpublic
-, zope-interface
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch2,
+  setuptools,
+  atpublic,
+  zope-interface,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,32 +20,32 @@ buildPythonPackage rec {
     hash = "sha256-JVBK65duwP5aGc1sQTo0EMtRT9zb3Kn5tdjTQ6hgODE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
+  patches = [
+    (fetchpatch2 {
+      # Replace deprecated failIf with assertFalse for Python 3.12 compatibility.
+      url = "https://gitlab.com/warsaw/flufl.bounce/-/commit/e0b9fd0f24572e024a8d0484a3c9fb4542337d18.patch";
+      hash = "sha256-HJHEbRVjiiP5Z7W0sQCj6elUMyaWOTqQw6UpYOYCVZM=";
+    })
   ];
 
+  nativeBuildInputs = [ setuptools ];
+
   propagatedBuildInputs = [
     atpublic
     zope-interface
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "flufl.bounce"
-  ];
+  pythonImportsCheck = [ "flufl.bounce" ];
 
-  pythonNamespaces = [
-    "flufl"
-  ];
+  pythonNamespaces = [ "flufl" ];
 
   meta = with lib; {
     description = "Email bounce detectors";
     homepage = "https://gitlab.com/warsaw/flufl.bounce";
     changelog = "https://gitlab.com/warsaw/flufl.bounce/-/blob/${version}/flufl/bounce/NEWS.rst";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     license = licenses.asl20;
   };
 }
diff --git a/pkgs/development/python-modules/flufl/i18n.nix b/pkgs/development/python-modules/flufl/i18n.nix
index bd5bcb62fe6c7..3a7295e0a0877 100644
--- a/pkgs/development/python-modules/flufl/i18n.nix
+++ b/pkgs/development/python-modules/flufl/i18n.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, atpublic
-, pdm-pep517
-, pytestCheckHook
-, sybil
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  atpublic,
+  pdm-pep517,
+  pytestCheckHook,
+  sybil,
 }:
 
 buildPythonPackage rec {
@@ -37,15 +38,13 @@ buildPythonPackage rec {
     sybil
   ];
 
-  pythonNamespaces = [
-    "flufl"
-  ];
+  pythonNamespaces = [ "flufl" ];
 
   meta = with lib; {
-    description = "A high level API for internationalizing Python libraries and applications";
+    description = "High level API for internationalizing Python libraries and applications";
     homepage = "https://gitlab.com/warsaw/flufl.i18n";
     changelog = "https://gitlab.com/warsaw/flufl.i18n/-/raw/${version}/docs/NEWS.rst";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/flufl/lock.nix b/pkgs/development/python-modules/flufl/lock.nix
index 8a3e391fee15d..3c1b2ce83efde 100644
--- a/pkgs/development/python-modules/flufl/lock.nix
+++ b/pkgs/development/python-modules/flufl/lock.nix
@@ -1,43 +1,56 @@
-{ lib, buildPythonPackage, fetchPypi, pytestCheckHook, pythonOlder
-, atpublic, psutil, pytest-cov, sybil
-, pdm-pep517
+{
+  lib,
+  atpublic,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  psutil,
+  pytest-cov,
+  pytestCheckHook,
+  pythonOlder,
+  sybil,
 }:
 
 buildPythonPackage rec {
   pname = "flufl-lock";
-  version = "7.1.1";
+  version = "8.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    pname = "flufl.lock";
+    pname = "flufl_lock";
     inherit version;
-    hash = "sha256-rxQXKzW7xYaHvQa3DRaT/Y1Iy/D/3n5RphjBSK4kBC0=";
+    hash = "sha256-2IMCAFaSpj2YtgCAFY+vCJvl7K5pafcGQJ2oJ2/c58s=";
   };
 
-  nativeBuildInputs = [ pdm-pep517 ];
-  propagatedBuildInputs = [ atpublic psutil ];
-  nativeCheckInputs = [ pytestCheckHook pytest-cov sybil ];
+  build-system = [ hatchling ];
+
+  dependencies = [
+    atpublic
+    psutil
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-cov
+    sybil
+  ];
 
   # disable code coverage checks for all OS. Upstream does not enforce these
   # checks on Darwin, and code coverage cannot be improved downstream nor is it
   # relevant to the user.
   pytestFlagsArray = [ "--no-cov" ];
 
-  pythonImportsCheck = [
-    "flufl.lock"
-  ];
+  pythonImportsCheck = [ "flufl.lock" ];
 
-  pythonNamespaces = [
-    "flufl"
-  ];
+  pythonNamespaces = [ "flufl" ];
 
   meta = with lib; {
-    homepage = "https://flufllock.readthedocs.io/";
     description = "NFS-safe file locking with timeouts for POSIX and Windows";
+    homepage = "https://flufllock.readthedocs.io/";
     changelog = "https://gitlab.com/warsaw/flufl.lock/-/blob/${version}/docs/NEWS.rst";
-    maintainers = with maintainers; [ qyliss ];
     license = licenses.asl20;
+    maintainers = with maintainers; [ qyliss ];
   };
 }
diff --git a/pkgs/development/python-modules/flux-led/default.nix b/pkgs/development/python-modules/flux-led/default.nix
index d33e21a43a24d..291b56d32cb6c 100644
--- a/pkgs/development/python-modules/flux-led/default.nix
+++ b/pkgs/development/python-modules/flux-led/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, webcolors
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  webcolors,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -26,22 +27,16 @@ buildPythonPackage rec {
     webcolors
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace setup.py \
       --replace '"pytest-runner>=5.2",' ""
   '';
 
-  pytestFlagsArray = [
-    "tests.py"
-  ];
+  pytestFlagsArray = [ "tests.py" ];
 
-  pythonImportsCheck = [
-    "flux_led"
-  ];
+  pythonImportsCheck = [ "flux_led" ];
 
   meta = with lib; {
     description = "Python library to communicate with the flux_led smart bulbs";
diff --git a/pkgs/development/python-modules/flyingsquid/default.nix b/pkgs/development/python-modules/flyingsquid/default.nix
index dcaf664e4acf5..2fe656646db35 100644
--- a/pkgs/development/python-modules/flyingsquid/default.nix
+++ b/pkgs/development/python-modules/flyingsquid/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pgmpy
-, torch
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pgmpy,
+  torch,
 }:
 let
   pname = "flyingsquid";
diff --git a/pkgs/development/python-modules/fn/default.nix b/pkgs/development/python-modules/fn/default.nix
index 71608387b4faa..186937474c9fa 100644
--- a/pkgs/development/python-modules/fn/default.nix
+++ b/pkgs/development/python-modules/fn/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchpatch,
+  fetchPypi,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     (fetchpatch {
       url = "https://github.com/kachayev/fn.py/commit/a54fc0bd8aeae277de2db726131d249ce607c0c2.patch";
       hash = "sha256-I0ZISOgVibsc1k7gwSfeW6qV9PspQqdaHlRLr/IusQ8=";
-      excludes = [
-        "fn/monad.py"
-      ];
+      excludes = [ "fn/monad.py" ];
     })
   ];
 
diff --git a/pkgs/development/python-modules/fnv-hash-fast/default.nix b/pkgs/development/python-modules/fnv-hash-fast/default.nix
index 01e57845d3bb1..26730aa7f434f 100644
--- a/pkgs/development/python-modules/fnv-hash-fast/default.nix
+++ b/pkgs/development/python-modules/fnv-hash-fast/default.nix
@@ -1,52 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cython
-, poetry-core
-, setuptools
-, wheel
-, fnvhash
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cython,
+  poetry-core,
+  setuptools,
+  fnvhash,
+  pytest-cov-stub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "fnv-hash-fast";
-  version = "0.5.0";
-  format = "pyproject";
+  version = "1.0.2";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "bdraco";
     repo = "fnv-hash-fast";
-    rev = "v${version}";
-    hash = "sha256-gAHCssJC6sTR6ftkQHrtF/5Nf9dXE4ykRhVusb0Gu3I=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-kJQZnj1ja7cVZSDOuUI3rkNIvyH508wFKAvJ5XfwCNU=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace "--cov=fnv_hash_fast --cov-report=term-missing:skip-covered" ""
-  '';
-
-  nativeBuildInputs = [
+  build-system = [
     cython
     poetry-core
     setuptools
-    wheel
   ];
 
-  propagatedBuildInputs = [
-    fnvhash
-  ];
+  dependencies = [ fnvhash ];
 
-  pythonImportsCheck = [
-    "fnv_hash_fast"
-  ];
+  pythonImportsCheck = [ "fnv_hash_fast" ];
 
   nativeCheckInputs = [
+    pytest-cov-stub
     pytestCheckHook
   ];
 
   meta = with lib; {
-    description = "A fast version of fnv1a";
+    description = "Fast version of fnv1a";
     homepage = "https://github.com/bdraco/fnv-hash-fast";
     changelog = "https://github.com/bdraco/fnv-hash-fast/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/fnvhash/default.nix b/pkgs/development/python-modules/fnvhash/default.nix
index ac80ac564fa17..76ec4ed770b43 100644
--- a/pkgs/development/python-modules/fnvhash/default.nix
+++ b/pkgs/development/python-modules/fnvhash/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/folium/default.nix b/pkgs/development/python-modules/folium/default.nix
index 1478e274c8c3d..8be25eafc613a 100644
--- a/pkgs/development/python-modules/folium/default.nix
+++ b/pkgs/development/python-modules/folium/default.nix
@@ -1,26 +1,28 @@
-{ lib
-, branca
-, buildPythonPackage
-, fetchFromGitHub
-, geopandas
-, jinja2
-, nbconvert
-, numpy
-, pandas
-, pillow
-, pytestCheckHook
-, pythonOlder
-, requests
-, selenium
-, setuptools
-, setuptools-scm
-, wheel
-, xyzservices
+{
+  lib,
+  branca,
+  buildPythonPackage,
+  fetchFromGitHub,
+  geodatasets,
+  geopandas,
+  jinja2,
+  nbconvert,
+  numpy,
+  pandas,
+  pillow,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  selenium,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  xyzservices,
 }:
 
 buildPythonPackage rec {
   pname = "folium";
-  version = "0.16.0";
+  version = "0.17.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -29,7 +31,7 @@ buildPythonPackage rec {
     owner = "python-visualization";
     repo = "folium";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ADDqjZUQVI4K/Bf38905g1K9TD2/e1RYvYWddvFtdrU=";
+    hash = "sha256-uKT6WqT3pI3rqfV/3CA+mXBk3F7h4RWW1h2FPIy0JH4=";
   };
 
   nativeBuildInputs = [
@@ -47,6 +49,7 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
+    geodatasets
     geopandas
     nbconvert
     pandas
@@ -64,16 +67,17 @@ buildPythonPackage rec {
     "test_notebook"
     "test_valid_png_size"
     "test_valid_png"
+    # pooch tries to write somewhere it can, and geodatasets does not give us an env var to customize this.
+    "test_timedynamic_geo_json"
   ];
 
-  pythonImportsCheck = [
-    "folium"
-  ];
+  pythonImportsCheck = [ "folium" ];
 
   meta = {
     description = "Make beautiful maps with Leaflet.js & Python";
     homepage = "https://github.com/python-visualization/folium";
     changelog = "https://github.com/python-visualization/folium/blob/v${version}/CHANGES.txt";
     license = with lib.licenses; [ mit ];
+    maintainers = lib.teams.geospatial.members;
   };
 }
diff --git a/pkgs/development/python-modules/font-v/default.nix b/pkgs/development/python-modules/font-v/default.nix
index 09ed7270ebd36..4f1a22a640d0a 100644
--- a/pkgs/development/python-modules/font-v/default.nix
+++ b/pkgs/development/python-modules/font-v/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fonttools
-, git
-, gitpython
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fonttools,
+  git,
+  gitpython,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -52,4 +53,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ danc86 ];
   };
 }
-
diff --git a/pkgs/development/python-modules/fontawesomefree/default.nix b/pkgs/development/python-modules/fontawesomefree/default.nix
index dea884ab0b30b..ebdf6c247cfcf 100644
--- a/pkgs/development/python-modules/fontawesomefree/default.nix
+++ b/pkgs/development/python-modules/fontawesomefree/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
   pname = "fontawesomefree";
-  version = "6.5.1";
+  version = "6.6.0";
   format = "wheel";
 
   # they only provide a wheel
@@ -13,17 +14,18 @@ buildPythonPackage rec {
     inherit pname version format;
     dist = "py3";
     python = "py3";
-    hash = "sha256-jexKLuN7+OUzeeu/DTjO/sTgbHySJ/Wa8527exYygXs=";
+    hash = "sha256-WZtXRDHJvZLtX8BU0QRaB8QjNdo2wXiE8rk0dV7vkIk=";
   };
 
-  pythonImportsCheck = [
-    "fontawesomefree"
-  ];
+  pythonImportsCheck = [ "fontawesomefree" ];
 
   meta = with lib; {
     homepage = "https://github.com/FortAwesome/Font-Awesome";
     description = "Icon library and toolkit";
-    license = with licenses; [ ofl cc-by-40 ];
+    license = with licenses; [
+      ofl
+      cc-by-40
+    ];
     maintainers = with maintainers; [ netali ];
   };
 }
diff --git a/pkgs/development/python-modules/fontbakery/default.nix b/pkgs/development/python-modules/fontbakery/default.nix
index 3076e6a4c469c..c875392e62f32 100644
--- a/pkgs/development/python-modules/fontbakery/default.nix
+++ b/pkgs/development/python-modules/fontbakery/default.nix
@@ -1,60 +1,76 @@
-{ lib
-, buildPythonPackage
-, callPackage
-, fetchpatch
-, fetchPypi
-, axisregistry
-, babelfont
-, beautifulsoup4
-, beziers
-, cmarkgfm
-, collidoscope
-, defcon
-, dehinter
-, fonttools
-, font-v
-, freetype-py
-, gflanguages
-, gfsubsets
-, git
-, glyphsets
-, lxml
-, installShellFiles
-, jinja2
-, munkres
-, opentypespec
-, ots-python
-, packaging
-, pip-api
-, protobuf
-, pytestCheckHook
-, pytest-xdist
-, pythonRelaxDepsHook
-, pyyaml
-, requests
-, requests-mock
-, rich
-, setuptools
-, setuptools-scm
-, shaperglot
-, stringbrewer
-, toml
-, unicodedata2
-, ufo2ft
-, ufolint
-, vharfbuzz
+{
+  lib,
+  axisregistry,
+  babelfont,
+  beautifulsoup4,
+  beziers,
+  buildPythonPackage,
+  callPackage,
+  cmarkgfm,
+  collidoscope,
+  defcon,
+  dehinter,
+  fetchPypi,
+  font-v,
+  fonttools,
+  freetype-py,
+  gflanguages,
+  gfsubsets,
+  git,
+  glyphsets,
+  installShellFiles,
+  jinja2,
+  lxml,
+  munkres,
+  opentypespec,
+  ots-python,
+  packaging,
+  pip-api,
+  protobuf,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  requests-mock,
+  requests,
+  rich,
+  setuptools-scm,
+  setuptools,
+  shaperglot,
+  stringbrewer,
+  toml,
+  ufo2ft,
+  ufolint,
+  unicodedata2,
+  vharfbuzz,
 }:
 
 buildPythonPackage rec {
   pname = "fontbakery";
-  version = "0.11.2";
+  version = "0.12.9";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-61EXlf+d5kJeUF41OEnGNLaOcSvFWUDFgarVvHQZYmw=";
+    hash = "sha256-Cl0jRQqF83IIldkp1VuVSS4ZeVsQH1NNpyEkpMJqhA8=";
   };
 
-  pyproject = true;
+  pythonRelaxDeps = [
+    "collidoscope"
+    "protobuf"
+    "vharfbuzz"
+  ];
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  nativeBuildInputs = [
+    installShellFiles
+  ];
 
   dependencies = [
     axisregistry
@@ -65,17 +81,17 @@ buildPythonPackage rec {
     collidoscope
     defcon
     dehinter
-    fonttools
     font-v
+    fonttools
     freetype-py
     gflanguages
     gfsubsets
     glyphsets
-    lxml
     jinja2
+    lxml
     munkres
-    ots-python
     opentypespec
+    ots-python
     packaging
     pip-api
     protobuf
@@ -85,27 +101,12 @@ buildPythonPackage rec {
     shaperglot
     stringbrewer
     toml
+    ufo2ft
     ufolint
     unicodedata2
     vharfbuzz
-    ufo2ft
-  ];
-  build-system = [
-    setuptools
-    setuptools-scm
-  ];
-  nativeBuildInputs = [
-    installShellFiles
-    pythonRelaxDepsHook
-  ];
-
-  pythonRelaxDeps = [
-    "collidoscope"
-    "protobuf"
-    "vharfbuzz"
   ];
 
-  doCheck = true;
   nativeCheckInputs = [
     git
     pytestCheckHook
@@ -113,6 +114,7 @@ buildPythonPackage rec {
     requests-mock
     ufolint
   ];
+
   preCheck = ''
     # Let the tests invoke 'fontbakery' command.
     export PATH="$out/bin:$PATH"
@@ -123,6 +125,7 @@ buildPythonPackage rec {
     git config user.name Test
     git commit --allow-empty --message 'Dummy commit for tests'
   '';
+
   disabledTests = [
     # These require network access:
     "test_check_description_broken_links"
@@ -147,8 +150,8 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Tool for checking the quality of font projects";
     homepage = "https://github.com/googlefonts/fontbakery";
+    changelog = "https://github.com/fonttools/fontbakery/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
     maintainers = with maintainers; [ danc86 ];
   };
 }
-
diff --git a/pkgs/development/python-modules/fontbakery/tests.nix b/pkgs/development/python-modules/fontbakery/tests.nix
index 4725b1fee3e31..5fdebb6f3aa80 100644
--- a/pkgs/development/python-modules/fontbakery/tests.nix
+++ b/pkgs/development/python-modules/fontbakery/tests.nix
@@ -1,6 +1,4 @@
-{ runCommand
-, fontbakery
-}:
+{ runCommand, fontbakery }:
 
 let
   inherit (fontbakery) pname version src;
@@ -10,13 +8,10 @@ runCommand "${pname}-tests" { meta.timeout = 5; } ''
   # Check the version matches what we packaged.
   ${fontbakery}/bin/fontbakery --version | grep -q "${version}"
 
-  # Can it list its own subcommands?
-  ${fontbakery}/bin/fontbakery --list-subcommands >>$out
-
   # Unpack src to get some test fonts.
   tar -xzf ${src} --strip-components=1 ${pname}-${version}/data/test
 
   # Run some font checks.
-  ${fontbakery}/bin/fontbakery check-ufo-sources --no-progress --no-colors data/test/test.ufo >>$out
+  ${fontbakery}/bin/fontbakery check-ufo --no-progress --no-colors data/test/test.ufo >>$out
   # TODO add more
 ''
diff --git a/pkgs/development/python-modules/fontfeatures/default.nix b/pkgs/development/python-modules/fontfeatures/default.nix
index 17ea4ec4813cd..b6a4482b4ba40 100644
--- a/pkgs/development/python-modules/fontfeatures/default.nix
+++ b/pkgs/development/python-modules/fontfeatures/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, beziers
-, fonttools
-, fs
-, glyphtools
-, lxml
-, pytestCheckHook
-, youseedee
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  beziers,
+  fonttools,
+  fs,
+  glyphtools,
+  lxml,
+  pytestCheckHook,
+  youseedee,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +32,7 @@ buildPythonPackage rec {
   ];
 
   doCheck = true;
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
   disabledTestPaths = [
     # These tests require babelfont but we have to leave it out and skip them
     # to break the cyclic dependency with babelfont.
diff --git a/pkgs/development/python-modules/fontmake/default.nix b/pkgs/development/python-modules/fontmake/default.nix
index 7911750bbeeb5..7a4bca9d1fb91 100644
--- a/pkgs/development/python-modules/fontmake/default.nix
+++ b/pkgs/development/python-modules/fontmake/default.nix
@@ -1,42 +1,63 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, glyphslib
-, setuptools-scm
-, ufo2ft
-, fonttools
-, fontmath
-, lxml
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  fontmath,
+  fonttools,
+  glyphslib,
+  setuptools,
+  setuptools-scm,
+  skia-pathops,
+  ttfautohint-py,
+  ufo2ft,
+  ufolib2,
 }:
 
 buildPythonPackage rec {
   pname = "fontmake";
-  version = "3.8.1";
-  format = "setuptools";
+  version = "3.9.0";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-m0cRLm9Jbqlsf9NwR7Lma2NZYUjy5IDJYOorVbdLDuw=";
-    extension = "zip";
+  src = fetchFromGitHub {
+    owner = "googlefonts";
+    repo = "fontmake";
+    rev = "v${version}";
+    hash = "sha256-q6ul9MYbq85RpZE0ozHOCBNAR4r9InIjumadT1GyJ6k=";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
-
-  propagatedBuildInputs = [
-    glyphslib
-    ufo2ft
-    fonttools
-    fontmath
-    lxml
+  build-system = [
     setuptools
+    setuptools-scm
   ];
 
+  dependencies =
+    [
+      fontmath
+      fonttools
+      glyphslib
+      ufo2ft
+      ufolib2
+    ]
+    ++ fonttools.optional-dependencies.ufo
+    ++ fonttools.optional-dependencies.lxml
+    ++ fonttools.optional-dependencies.unicode;
+
+  optional-dependencies = {
+    pathops = [ skia-pathops ];
+    autohint = [ ttfautohint-py ];
+    json = ufolib2.optional-dependencies.json;
+    repacker = fonttools.optional-dependencies.repacker;
+  };
+
+  nativeCheckInputs = [ pytestCheckHook ] ++ optional-dependencies.autohint;
+
   pythonImportsCheck = [ "fontmake" ];
 
   meta = {
     description = "Compiles fonts from various sources (.glyphs, .ufo, designspace) into binaries formats (.otf, .ttf)";
     homepage = "https://github.com/googlefonts/fontmake";
+    changelog = "https://github.com/googlefonts/fontmake/releases/tag/v${version}";
     license = lib.licenses.asl20;
     maintainers = [ lib.maintainers.BarinovMaxim ];
   };
diff --git a/pkgs/development/python-modules/fontmath/default.nix b/pkgs/development/python-modules/fontmath/default.nix
index 81e70c51fee38..e37bdd0ade4d1 100644
--- a/pkgs/development/python-modules/fontmath/default.nix
+++ b/pkgs/development/python-modules/fontmath/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fonttools
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fonttools,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,20 +22,14 @@ buildPythonPackage rec {
     extension = "zip";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    fonttools
-  ];
+  propagatedBuildInputs = [ fonttools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A collection of objects that implement fast font, glyph, etc. math";
+    description = "Collection of objects that implement fast font, glyph, etc. math";
     homepage = "https://github.com/robotools/fontMath/";
     changelog = "https://github.com/robotools/fontMath/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/fontparts/default.nix b/pkgs/development/python-modules/fontparts/default.nix
index d543220c4b25d..d8eb655b49240 100644
--- a/pkgs/development/python-modules/fontparts/default.nix
+++ b/pkgs/development/python-modules/fontparts/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch2
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch2,
+  pythonOlder,
 
-# build-system
-, setuptools
-, setuptools-scm
+  # build-system
+  setuptools,
+  setuptools-scm,
 
-# dependencies
-, fonttools
-, defcon
-, fontmath
-, booleanoperations
+  # dependencies
+  fonttools,
+  defcon,
+  fontmath,
+  booleanoperations,
 
-# tests
-, python
+  # tests
+  python,
 }:
 
 buildPythonPackage rec {
@@ -46,16 +47,17 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    booleanoperations
-    defcon
-    fontmath
-    fonttools
-  ]
-  ++ defcon.optional-dependencies.pens
-  ++ fonttools.optional-dependencies.ufo
-  ++ fonttools.optional-dependencies.lxml
-  ++ fonttools.optional-dependencies.unicode;
+  propagatedBuildInputs =
+    [
+      booleanoperations
+      defcon
+      fontmath
+      fonttools
+    ]
+    ++ defcon.optional-dependencies.pens
+    ++ fonttools.optional-dependencies.ufo
+    ++ fonttools.optional-dependencies.lxml
+    ++ fonttools.optional-dependencies.unicode;
 
   checkPhase = ''
     runHook preCheck
@@ -64,7 +66,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "An API for interacting with the parts of fonts during the font development process.";
+    description = "API for interacting with the parts of fonts during the font development process";
     homepage = "https://github.com/robotools/fontParts";
     changelog = "https://github.com/robotools/fontParts/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/fontpens/default.nix b/pkgs/development/python-modules/fontpens/default.nix
index aaa1d119111c9..f7cd8e7de47da 100644
--- a/pkgs/development/python-modules/fontpens/default.nix
+++ b/pkgs/development/python-modules/fontpens/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, fonttools }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fonttools,
+}:
 
 buildPythonPackage rec {
   pname = "fontpens";
@@ -15,23 +20,25 @@ buildPythonPackage rec {
 
   # can't run normal tests due to circular dependency with fontParts
   doCheck = false;
-  pythonImportsCheck = [ "fontPens" ] ++ (builtins.map (s: "fontPens." + s) [
-    "angledMarginPen"
-    "digestPointPen"
-    "flattenPen"
-    "guessSmoothPointPen"
-    "marginPen"
-    "penTools"
-    "printPen"
-    "printPointPen"
-    "recordingPointPen"
-    "thresholdPen"
-    "thresholdPointPen"
-    "transformPointPen"
-  ]);
+  pythonImportsCheck =
+    [ "fontPens" ]
+    ++ (builtins.map (s: "fontPens." + s) [
+      "angledMarginPen"
+      "digestPointPen"
+      "flattenPen"
+      "guessSmoothPointPen"
+      "marginPen"
+      "penTools"
+      "printPen"
+      "printPointPen"
+      "recordingPointPen"
+      "thresholdPen"
+      "thresholdPointPen"
+      "transformPointPen"
+    ]);
 
   meta = with lib; {
-    description = "A collection of classes implementing the pen protocol for manipulating glyphs";
+    description = "Collection of classes implementing the pen protocol for manipulating glyphs";
     homepage = "https://github.com/robotools/fontPens";
     license = licenses.bsd3;
     maintainers = [ maintainers.sternenseemann ];
diff --git a/pkgs/development/python-modules/fonttools/default.nix b/pkgs/development/python-modules/fonttools/default.nix
index be573a627e99e..6898f34cb1331 100644
--- a/pkgs/development/python-modules/fonttools/default.nix
+++ b/pkgs/development/python-modules/fonttools/default.nix
@@ -1,41 +1,42 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, isPyPy
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, fs
-, lxml
-, brotli
-, brotlicffi
-, zopfli
-, unicodedata2
-, lz4
-, scipy
-, munkres
-, pycairo
-, matplotlib
-, sympy
-, xattr
-, skia-pathops
-, uharfbuzz
-, pytest7CheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  isPyPy,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  fs,
+  lxml,
+  brotli,
+  brotlicffi,
+  zopfli,
+  unicodedata2,
+  lz4,
+  scipy,
+  munkres,
+  pycairo,
+  matplotlib,
+  sympy,
+  xattr,
+  skia-pathops,
+  uharfbuzz,
+  pytest7CheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "fonttools";
-  version = "4.49.0";
+  version = "4.53.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
-    owner  = pname;
-    repo   = pname;
+    owner = "fonttools";
+    repo = "fonttools";
     rev = "refs/tags/${version}";
-    hash = "sha256-8xQVuAnIS/mwYKwI+ow0YArIP8wFTKWGLZ+NCgIFYok=";
+    hash = "sha256-9fxC6OKXZkhih3BFyBqO4t6sKXyarYfFIqBk+WOSiRY=";
   };
 
   build-system = [
@@ -43,37 +44,49 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  optional-dependencies = let
-    extras = {
-      ufo = [ fs ];
-      lxml = [ lxml ];
-      woff = [ (if isPyPy then brotlicffi else brotli) zopfli ];
-      unicode = lib.optional (pythonOlder "3.11") unicodedata2;
-      graphite = [ lz4 ];
-      interpolatable = [ pycairo (if isPyPy then munkres else scipy) ];
-      plot = [ matplotlib ];
-      symfont = [ sympy ];
-      type1 = lib.optional stdenv.isDarwin xattr;
-      pathops = [ skia-pathops ];
-      repacker = [ uharfbuzz ];
-    };
-  in extras // {
-    all = lib.concatLists (lib.attrValues extras);
-  };
+  optional-dependencies =
+    let
+      extras = {
+        ufo = [ fs ];
+        lxml = [ lxml ];
+        woff = [
+          (if isPyPy then brotlicffi else brotli)
+          zopfli
+        ];
+        unicode = lib.optional (pythonOlder "3.11") unicodedata2;
+        graphite = [ lz4 ];
+        interpolatable = [
+          pycairo
+          (if isPyPy then munkres else scipy)
+        ];
+        plot = [ matplotlib ];
+        symfont = [ sympy ];
+        type1 = lib.optional stdenv.hostPlatform.isDarwin xattr;
+        pathops = [ skia-pathops ];
+        repacker = [ uharfbuzz ];
+      };
+    in
+    extras // { all = lib.concatLists (lib.attrValues extras); };
 
-  nativeCheckInputs = [
-    # test suite fails with pytest>=8.0.1
-    # https://github.com/fonttools/fonttools/issues/3458
-    pytest7CheckHook
-  ] ++ lib.concatLists (lib.attrVals ([
-    "woff"
-    # "interpolatable" is not included because it only contains 2 tests at the time of writing but adds 270 extra dependencies
-    "ufo"
-  ] ++ lib.optionals (!skia-pathops.meta.broken) [
-    "pathops" # broken
-  ] ++ [
-    "repacker"
-  ]) optional-dependencies);
+  nativeCheckInputs =
+    [
+      # test suite fails with pytest>=8.0.1
+      # https://github.com/fonttools/fonttools/issues/3458
+      pytest7CheckHook
+    ]
+    ++ lib.concatLists (
+      lib.attrVals (
+        [
+          "woff"
+          # "interpolatable" is not included because it only contains 2 tests at the time of writing but adds 270 extra dependencies
+          "ufo"
+        ]
+        ++ lib.optionals (!skia-pathops.meta.broken) [
+          "pathops" # broken
+        ]
+        ++ [ "repacker" ]
+      ) optional-dependencies
+    );
 
   pythonImportsCheck = [ "fontTools" ];
 
@@ -105,7 +118,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/fonttools/fonttools";
-    description = "A library to manipulate font files from Python";
+    description = "Library to manipulate font files from Python";
     changelog = "https://github.com/fonttools/fonttools/blob/${version}/NEWS.rst";
     license = licenses.mit;
     maintainers = [ maintainers.sternenseemann ];
diff --git a/pkgs/development/python-modules/foobot-async/default.nix b/pkgs/development/python-modules/foobot-async/default.nix
index 50029f232a1c2..dd12bd185a95f 100644
--- a/pkgs/development/python-modules/foobot-async/default.nix
+++ b/pkgs/development/python-modules/foobot-async/default.nix
@@ -1,27 +1,31 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, aiohttp
-, async-timeout
-, aioresponses
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  aiohttp,
+  async-timeout,
+  aioresponses,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "foobot-async";
-  version = "1.0.0";
-  format = "setuptools";
+  version = "1.0.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.5";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     pname = "foobot_async";
     inherit version;
-    sha256 = "fa557a22de925139cb4a21034ffdbcd01d28bf166c0e680eaf84a99206327f40";
+    hash = "sha256-QQjysk2m8QkOpLBdC8kfuoA9PcljgEwzKyrIAhxHB4c=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     aiohttp
     async-timeout
   ];
diff --git a/pkgs/development/python-modules/foolscap/default.nix b/pkgs/development/python-modules/foolscap/default.nix
index 2da82762195bc..a5f3eb9c60b18 100644
--- a/pkgs/development/python-modules/foolscap/default.nix
+++ b/pkgs/development/python-modules/foolscap/default.nix
@@ -1,31 +1,42 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mock
-, pyopenssl
-, pytestCheckHook
-, pythonOlder
-, service-identity
-, six
-, twisted
-, txi2p-tahoe
-, txtorcon
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  mock,
+  pyopenssl,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  six,
+  twisted,
+  txi2p-tahoe,
+  txtorcon,
+  versioneer,
 }:
 
 buildPythonPackage rec {
   pname = "foolscap";
-  version = "23.3.0";
+  version = "24.9.0";
 
-  disabled = pythonOlder "3.7";
+  pyproject = true;
+  build-system = [
+    setuptools
+    versioneer
+  ];
 
-  format = "setuptools";
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Vu7oXC1brsgBwr2q59TAgx8j1AFRbi5mjRNIWZTbkUU=";
+    hash = "sha256-vWsAdUDbWQuG3e0oAtLq8rA4Ys2wg38fD/h+E1ViQQg=";
   };
 
-  propagatedBuildInputs = [
+  postPatch = ''
+    # Remove vendorized versioneer.py
+    rm versioneer.py
+  '';
+
+  dependencies = [
     six
     twisted
     pyopenssl
@@ -52,6 +63,6 @@ buildPythonPackage rec {
     '';
     homepage = "https://github.com/warner/foolscap";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/forbiddenfruit/default.nix b/pkgs/development/python-modules/forbiddenfruit/default.nix
deleted file mode 100644
index 838dc60d0db0a..0000000000000
--- a/pkgs/development/python-modules/forbiddenfruit/default.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nose
-}:
-
-buildPythonPackage rec {
-  version = "0.1.4";
-  format = "setuptools";
-  pname = "forbiddenfruit";
-
-  src = fetchFromGitHub {
-    owner = "clarete";
-    repo = "forbiddenfruit";
-    rev = version;
-    sha256 = "16chhrxbbmg6lfbzm532fq0v00z8qihcsj0kg2b5jlgnb6qijwn8";
-  };
-
-  nativeCheckInputs = [ nose ];
-
-  preBuild = ''
-    export FFRUIT_EXTENSION="true";
-  '';
-
-  # https://github.com/clarete/forbiddenfruit/pull/47 required to switch to pytest
-  checkPhase = ''
-    find ./build -name '*.so' -exec mv {} tests/unit \;
-    nosetests
-  '';
-
-  meta = with lib; {
-    description = "Patch python built-in objects";
-    homepage = "https://github.com/clarete/forbiddenfruit";
-    license = licenses.mit;
-  };
-
-}
diff --git a/pkgs/development/python-modules/fordpass/default.nix b/pkgs/development/python-modules/fordpass/default.nix
index 3ddef9d172c37..0a7d9f68e6ec3 100644
--- a/pkgs/development/python-modules/fordpass/default.nix
+++ b/pkgs/development/python-modules/fordpass/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, requests
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  requests,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     sha256 = "0i1dlswxc2bv1smc5d4r1adbxbl7sgr1swh2cjfajp73vs43xa0m";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/forecast-solar/default.nix b/pkgs/development/python-modules/forecast-solar/default.nix
index 4e329a100c8e4..8a955b514440a 100644
--- a/pkgs/development/python-modules/forecast-solar/default.nix
+++ b/pkgs/development/python-modules/forecast-solar/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pythonOlder
-, aiodns
-, aiohttp
-, backports-zoneinfo
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
+  aiodns,
+  aiohttp,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -14,6 +14,8 @@ buildPythonPackage rec {
   version = "3.1.0";
   pyproject = true;
 
+  disabled = pythonOlder "3.11";
+
   src = fetchFromGitHub {
     owner = "home-assistant-libs";
     repo = "forecast_solar";
@@ -21,24 +23,18 @@ buildPythonPackage rec {
     hash = "sha256-iol0XtfPZI95o/uEyBcXgeQjcfl2kI+4mugtywa6BXI=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   env.PACKAGE_VERSION = version;
 
   dependencies = [
     aiodns
     aiohttp
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    backports-zoneinfo
   ];
 
   pythonImportsCheck = [ "forecast_solar" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     changelog = "https://github.com/home-assistant-libs/forecast_solar/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/formbox/default.nix b/pkgs/development/python-modules/formbox/default.nix
index 7f825cb251e35..a67216ebf30f2 100644
--- a/pkgs/development/python-modules/formbox/default.nix
+++ b/pkgs/development/python-modules/formbox/default.nix
@@ -1,23 +1,34 @@
-{ lib, buildPythonPackage, pythonOlder, fetchzip, flit-core, mistune, nh3 }:
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchzip,
+  flit-core,
+  mistune,
+  nh3,
+}:
 
 buildPythonPackage rec {
   pname = "formbox";
-  version = "0.4.3";
+  version = "1.0.0";
   format = "pyproject";
   disabled = pythonOlder "3.6";
 
   src = fetchzip {
     url = "https://trong.loang.net/~cnx/formbox/snapshot/formbox-${version}.tar.gz";
-    hash = "sha256-sRu0otyeYpxot/Fyiz3wyQJsJvl8nsgIVitzT8frxLE=";
+    hash = "sha256-YS0hkmEly7SXQvMIPLmqY89ux6E951twAy7iA3K+asA=";
   };
 
   nativeBuildInputs = [ flit-core ];
-  propagatedBuildInputs = [ mistune nh3 ];
+  propagatedBuildInputs = [
+    mistune
+    nh3
+  ];
   doCheck = false; # there's no test
   pythonImportsCheck = [ "formbox" ];
 
   meta = with lib; {
-    description = "A script to format mbox as HTML/XML";
+    description = "Script to format mbox as HTML/XML";
     mainProgram = "formbox";
     homepage = "https://trong.loang.net/~cnx/formbox";
     license = licenses.agpl3Plus;
diff --git a/pkgs/development/python-modules/formencode/default.nix b/pkgs/development/python-modules/formencode/default.nix
index 9cccd8d9f39bb..216e48dd1ff2c 100644
--- a/pkgs/development/python-modules/formencode/default.nix
+++ b/pkgs/development/python-modules/formencode/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, isPy27
-, fetchPypi
-, setuptools-scm
-, six
-, dnspython
-, pycountry
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  isPy27,
+  fetchPypi,
+  setuptools-scm,
+  six,
+  dnspython,
+  pycountry,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "FormEncode";
     inherit version;
-    sha256 = "sha256-63TSIweKKM8BX6iJZsbjTy0Y11EnMY1lwUS+2a/EJj8=";
+    hash = "sha256-63TSIweKKM8BX6iJZsbjTy0Y11EnMY1lwUS+2a/EJj8=";
   };
 
   postPatch = ''
@@ -46,6 +47,6 @@ buildPythonPackage rec {
     description = "FormEncode validates and converts nested structures";
     homepage = "http://formencode.org";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/formulae/default.nix b/pkgs/development/python-modules/formulae/default.nix
index 02dcfd0fbd6e1..57c26378761f7 100644
--- a/pkgs/development/python-modules/formulae/default.nix
+++ b/pkgs/development/python-modules/formulae/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, numpy
-, pandas
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  numpy,
+  pandas,
+  scipy,
 }:
 
 buildPythonPackage rec {
   pname = "formulae";
-  version = "0.5.3";
+  version = "0.5.4";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -21,7 +22,7 @@ buildPythonPackage rec {
     owner = "bambinos";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-A0CI0bpoRYFAcPiNAf5haQu9BEqmBgxF7HfIl4qcML0=";
+    hash = "sha256-SSyQa7soIp+wSXX5wek9LG95q7J7K34mztzx01lPiWo=";
   };
 
   nativeBuildInputs = [
@@ -37,7 +38,10 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ pytestCheckHook ];
   # use assertions of form `assert pytest.approx(...)`, which is now disallowed:
-  disabledTests = [ "test_basic" "test_degree" ];
+  disabledTests = [
+    "test_basic"
+    "test_degree"
+  ];
   pythonImportsCheck = [
     "formulae"
     "formulae.matrices"
diff --git a/pkgs/development/python-modules/formulaic/default.nix b/pkgs/development/python-modules/formulaic/default.nix
index bf448a42c95bc..ee149c96832c7 100644
--- a/pkgs/development/python-modules/formulaic/default.nix
+++ b/pkgs/development/python-modules/formulaic/default.nix
@@ -1,24 +1,24 @@
-{ lib
-, astor
-, buildPythonPackage
-, fetchFromGitHub
-, git
-, hatch-vcs
-, hatchling
-, interface-meta
-, numpy
-, pandas
-, pytestCheckHook
-, pythonOlder
-, scipy
-, sympy
-, typing-extensions
-, wrapt
+{
+  lib,
+  astor,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatch-vcs,
+  hatchling,
+  interface-meta,
+  numpy,
+  pandas,
+  pytestCheckHook,
+  pythonOlder,
+  scipy,
+  sympy,
+  typing-extensions,
+  wrapt,
 }:
 
 buildPythonPackage rec {
   pname = "formulaic";
-  version = "1.0.1";
+  version = "1.0.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
     owner = "matthewwardrop";
     repo = "formulaic";
     rev = "refs/tags/v${version}";
-    hash = "sha256-qivWv1LtFkW55tVKD/Zjd8Q5gVbxhDpZ0inkV6NR7bA=";
+    hash = "sha256-1Ygu4o6RXXTnvve8XZi+QMhCjvUyMspYWTyUH3p6+dg=";
   };
 
   env.SETUPTOOLS_SCM_PRETEND_VERSION = version;
@@ -48,17 +48,11 @@ buildPythonPackage rec {
     sympy
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "formulaic"
-  ];
+  pythonImportsCheck = [ "formulaic" ];
 
-  disabledTestPaths = [
-    "tests/transforms/test_poly.py"
-  ];
+  disabledTestPaths = [ "tests/transforms/test_poly.py" ];
 
   meta = with lib; {
     description = "High-performance implementation of Wilkinson formulas";
diff --git a/pkgs/development/python-modules/fortiosapi/default.nix b/pkgs/development/python-modules/fortiosapi/default.nix
index 5b6bce687ea3f..233ebce089dee 100644
--- a/pkgs/development/python-modules/fortiosapi/default.nix
+++ b/pkgs/development/python-modules/fortiosapi/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, oyaml
-, packaging
-, paramiko
-, pexpect
-, pythonOlder
-, requests
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  oyaml,
+  packaging,
+  paramiko,
+  pexpect,
+  pythonOlder,
+  requests,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
   # Tests require a local VM
   doCheck = false;
 
-  pythonImportsCheck = [
-    "fortiosapi"
-  ];
+  pythonImportsCheck = [ "fortiosapi" ];
 
   meta = with lib; {
     description = "Python module to work with Fortigate/Fortios devices";
diff --git a/pkgs/development/python-modules/fountains/default.nix b/pkgs/development/python-modules/fountains/default.nix
index d6efde228fbdc..8a5e4e923dfe6 100644
--- a/pkgs/development/python-modules/fountains/default.nix
+++ b/pkgs/development/python-modules/fountains/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, wheel
-, bitlist
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  wheel,
+  bitlist,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,16 +25,12 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    bitlist
-  ];
+  propagatedBuildInputs = [ bitlist ];
 
   # Module has no test
   doCheck = false;
 
-  pythonImportsCheck = [
-    "fountains"
-  ];
+  pythonImportsCheck = [ "fountains" ];
 
   meta = with lib; {
     description = "Python library for generating and embedding data for unit testing";
diff --git a/pkgs/development/python-modules/foxdot/default.nix b/pkgs/development/python-modules/foxdot/default.nix
index faa6bedd47998..f9faef8be2bdf 100644
--- a/pkgs/development/python-modules/foxdot/default.nix
+++ b/pkgs/development/python-modules/foxdot/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, tkinter
-, supercollider
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  tkinter,
+  supercollider,
 }:
 
 buildPythonPackage rec {
@@ -16,10 +17,11 @@ buildPythonPackage rec {
     sha256 = "528999da55ad630e540a39c0eaeacd19c58c36f49d65d24ea9704d0781e18c90";
   };
 
-  propagatedBuildInputs = [ tkinter ]
+  propagatedBuildInputs =
+    [ tkinter ]
     # we currently build SuperCollider only on Linux
     # but FoxDot is totally usable on macOS with the official SuperCollider binary
-    ++ lib.optionals stdenv.isLinux [ supercollider ];
+    ++ lib.optionals stdenv.hostPlatform.isLinux [ supercollider ];
 
   # Requires a running SuperCollider instance
   doCheck = false;
diff --git a/pkgs/development/python-modules/fpdf/default.nix b/pkgs/development/python-modules/fpdf/default.nix
index 091757160e163..4ceac163a46ed 100644
--- a/pkgs/development/python-modules/fpdf/default.nix
+++ b/pkgs/development/python-modules/fpdf/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "fpdf";
diff --git a/pkgs/development/python-modules/fpdf2/default.nix b/pkgs/development/python-modules/fpdf2/default.nix
index fdd43f1ca5c84..2cd654ded25ae 100644
--- a/pkgs/development/python-modules/fpdf2/default.nix
+++ b/pkgs/development/python-modules/fpdf2/default.nix
@@ -1,30 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-, setuptools
+  setuptools,
 
-, defusedxml
-, pillow
-, fonttools
+  defusedxml,
+  pillow,
+  fonttools,
 
-, pytestCheckHook
-, qrcode
-, camelot
-, uharfbuzz
-, lxml
+  pytestCheckHook,
+  qrcode,
+  camelot,
+  uharfbuzz,
+  lxml,
 }:
 
 buildPythonPackage rec {
   pname = "fpdf2";
-  version = "2.7.8";
+  version = "2.7.9";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "py-pdf";
     repo = "fpdf2";
     rev = "refs/tags/${version}";
-    hash = "sha256-6aedXr8Yhes1aYIslBvw2HzRc4BwYDIiGJvEdp1tFSc=";
+    hash = "sha256-8CuK8ZFn4msOSNIdgOFjD3ygVeiBUw4/Bc3w1J6Kn9U=";
   };
 
   postPatch = ''
@@ -57,6 +58,9 @@ buildPythonPackage rec {
     "test_png_url" # tries to download file
     "test_page_background" # tries to download file
     "test_share_images_cache" # uses timing functions
+    "test_bidi_character" # tries to download file
+    "test_bidi_conformance" # tries to download file
+    "test_insert_jpg_jpxdecode" # JPEG2000 is broken
   ];
 
   meta = {
diff --git a/pkgs/development/python-modules/fpylll/default.nix b/pkgs/development/python-modules/fpylll/default.nix
index 95358d5f4aaf9..c1fcae710db87 100644
--- a/pkgs/development/python-modules/fpylll/default.nix
+++ b/pkgs/development/python-modules/fpylll/default.nix
@@ -1,22 +1,26 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, fetchpatch
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  fetchpatch,
 
-# build-system
-, cysignals
-, cython
-, pkgconfig
-, setuptools
+  # build-system
+  cysignals,
+  cython,
+  pkgconfig,
+  setuptools,
 
-, gmp
-, pari
-, mpfr
-, fplll
-, numpy
+  gmp,
+  pari,
+  mpfr,
+  fplll,
+  numpy,
 
-# tests
-, pytestCheckHook
+  # Reverse dependency
+  sage,
+
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -56,13 +60,9 @@ buildPythonPackage rec {
     fplll
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     # Since upstream introduced --doctest-modules in
@@ -72,8 +72,12 @@ buildPythonPackage rec {
     export PY_IGNORE_IMPORTMISMATCH=1
   '';
 
+  passthru.tests = {
+    inherit sage;
+  };
+
   meta = with lib; {
-    description = "A Python interface for fplll";
+    description = "Python interface for fplll";
     changelog = "https://github.com/fplll/fpylll/releases/tag/${version}";
     homepage = "https://github.com/fplll/fpylll";
     maintainers = teams.sage.members;
diff --git a/pkgs/development/python-modules/fpyutils/default.nix b/pkgs/development/python-modules/fpyutils/default.nix
index a81067e1ffb3b..7b867da840c6b 100644
--- a/pkgs/development/python-modules/fpyutils/default.nix
+++ b/pkgs/development/python-modules/fpyutils/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, atomicwrites
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  atomicwrites,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,31 +23,23 @@ buildPythonPackage rec {
     hash = "sha256-VVR1zsejO6kHlMjqqlftDKu3/SyDzgPov9f48HYL/Bk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     atomicwrites
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "fpyutils/tests/*.py"
-  ];
+  pytestFlagsArray = [ "fpyutils/tests/*.py" ];
 
   disabledTests = [
     # Don't run test which requires bash
     "test_execute_command_live_output"
   ];
 
-  pythonImportsCheck = [
-    "fpyutils"
-  ];
+  pythonImportsCheck = [ "fpyutils" ];
 
   meta = with lib; {
     description = "Collection of useful non-standard Python functions";
diff --git a/pkgs/development/python-modules/fqdn/default.nix b/pkgs/development/python-modules/fqdn/default.nix
index 2b7182569b299..dd8f5b8d8ca8a 100644
--- a/pkgs/development/python-modules/fqdn/default.nix
+++ b/pkgs/development/python-modules/fqdn/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-T0CdWWr8p3JVhp3nol5hyxsrD3951JE2EDpFt+m+3bE=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "fqdn"
-  ];
+  pythonImportsCheck = [ "fqdn" ];
 
   meta = with lib; {
     description = "RFC-compliant FQDN validation and manipulation";
diff --git a/pkgs/development/python-modules/free-proxy/default.nix b/pkgs/development/python-modules/free-proxy/default.nix
new file mode 100644
index 0000000000000..4d67d28961496
--- /dev/null
+++ b/pkgs/development/python-modules/free-proxy/default.nix
@@ -0,0 +1,37 @@
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  pip-chill,
+  lxml,
+  requests,
+}:
+
+buildPythonPackage rec {
+  pname = "free-proxy";
+  version = "1.1.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "jundymek";
+    repo = "free-proxy";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-5eYioshdqUC5QWHqMIU6+GvInihSOJxWvMlJ/xad/3I=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    pip-chill
+    lxml
+    requests
+  ];
+
+  meta = {
+    description = "Free proxy scraper written in python";
+    homepage = "https://github.com/jundymek/free-proxy";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tochiaha ];
+  };
+}
diff --git a/pkgs/development/python-modules/freebox-api/default.nix b/pkgs/development/python-modules/freebox-api/default.nix
index cb56a789dedab..ec5df36417374 100644
--- a/pkgs/development/python-modules/freebox-api/default.nix
+++ b/pkgs/development/python-modules/freebox-api/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, urllib3
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  urllib3,
 }:
 
 buildPythonPackage rec {
@@ -25,25 +25,18 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "urllib3"
-  ];
+  pythonRelaxDeps = [ "urllib3" ];
 
   propagatedBuildInputs = [
     aiohttp
     urllib3
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "freebox_api"
-  ];
+  pythonImportsCheck = [ "freebox_api" ];
 
   meta = with lib; {
     description = "Python module to interact with the Freebox OS API";
diff --git a/pkgs/development/python-modules/freenub/default.nix b/pkgs/development/python-modules/freenub/default.nix
new file mode 100644
index 0000000000000..fec4d3180bc41
--- /dev/null
+++ b/pkgs/development/python-modules/freenub/default.nix
@@ -0,0 +1,60 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  aiohttp,
+  cbor2,
+  pycryptodomex,
+  busypie,
+  pytest-asyncio,
+  pytest-vcr,
+  pytestCheckHook,
+  requests,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "freenub";
+  version = "0.1.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "bdraco";
+    repo = "freenub";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-UkW/7KUQ4uCu3cxDSL+kw0gjKjs4KnmxRIOLVP4hwyA=";
+  };
+
+  postPatch = ''
+    sed -i "/--cov/d" pyproject.toml
+  '';
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    aiohttp
+    cbor2
+    pycryptodomex
+    requests
+  ];
+
+  nativeCheckInputs = [
+    busypie
+    pytest-asyncio
+    pytest-vcr
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "pubnub" ];
+
+  meta = with lib; {
+    description = "Fork of pubnub";
+    homepage = "https://github.com/bdraco/freenub";
+    changelog = "https://github.com/bdraco/freenub/blob/${version}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/freertos-gdb/default.nix b/pkgs/development/python-modules/freertos-gdb/default.nix
new file mode 100644
index 0000000000000..f932925762134
--- /dev/null
+++ b/pkgs/development/python-modules/freertos-gdb/default.nix
@@ -0,0 +1,23 @@
+{ lib, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+  pname = "freertos-gdb";
+  version = "1.0.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-5rkB01OdbD5Z4vA6dbqhWp5pGwqI1IlE4IE1dSdT1QE=";
+  };
+
+  # Project has no tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "User-friendly view of FreeRTOS kernel objects in GDB";
+    homepage = "https://github.com/espressif/freertos-gdb";
+    license = licenses.asl20;
+    maintainers = with maintainers; [
+      danc86
+    ];
+  };
+}
diff --git a/pkgs/development/python-modules/freesasa/default.nix b/pkgs/development/python-modules/freesasa/default.nix
new file mode 100644
index 0000000000000..92b2359862f01
--- /dev/null
+++ b/pkgs/development/python-modules/freesasa/default.nix
@@ -0,0 +1,47 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  cython,
+  freesasa,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "freesasa";
+  version = "2.2.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "freesasa";
+    repo = "freesasa-python";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-/7ymItwXOemY0+IL0k6rWnJI8fAwTFjNXzTV+uf9x9A=";
+  };
+
+  postPatch = ''
+    ln -s ${freesasa.src}/* lib/
+  '';
+
+  build-system = [
+    cython
+    setuptools
+  ];
+
+  env.USE_CYTHON = true;
+
+  pythonImportsCheck = [ "freesasa" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pytestFlagsArray = [ "test.py" ];
+
+  meta = {
+    description = "FreeSASA Python Module";
+    homepage = "https://github.com/freesasa/freesasa-python";
+    changelog = "https://github.com/freesasa/freesasa-python/blob/${src.rev}/CHANGELOG.md";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
+  };
+}
diff --git a/pkgs/development/python-modules/freetype-py/default.nix b/pkgs/development/python-modules/freetype-py/default.nix
index 172225968218a..5ec8f6c1b0ffc 100644
--- a/pkgs/development/python-modules/freetype-py/default.nix
+++ b/pkgs/development/python-modules/freetype-py/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, substituteAll
-, setuptools-scm
-, freetype
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  substituteAll,
+  setuptools-scm,
+  freetype,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -33,11 +34,9 @@ buildPythonPackage rec {
     cd tests
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck =  [ "freetype" ];
+  pythonImportsCheck = [ "freetype" ];
 
   meta = with lib; {
     homepage = "https://github.com/rougier/freetype-py";
diff --git a/pkgs/development/python-modules/freezegun/default.nix b/pkgs/development/python-modules/freezegun/default.nix
index 2279e70ada6a8..046b3f20046fe 100644
--- a/pkgs/development/python-modules/freezegun/default.nix
+++ b/pkgs/development/python-modules/freezegun/default.nix
@@ -1,40 +1,41 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  python-dateutil,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "freezegun";
-  version = "1.4.0";
+  version = "1.5.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-EJObC6D/Wtrs87BqXC9zBx2WeOUHxertsjx2HVasd0s=";
+    hash = "sha256-sp3t/NptXo4IPOcbK1QnU61Iz+xEA3s/x5cC4pgKiek=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    python-dateutil
-  ];
+  dependencies = [ python-dateutil ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "freezegun"
+  disabledTests = lib.optionals (pythonAtLeast "3.13") [
+    # https://github.com/spulec/freezegun/issues/547
+    "test_method_decorator_works_on_unittest_kwarg_frozen_time"
+    "test_method_decorator_works_on_unittest_kwarg_frozen_time_with_func"
+    "test_method_decorator_works_on_unittest_kwarg_hello"
   ];
 
+  pythonImportsCheck = [ "freezegun" ];
+
   meta = with lib; {
     description = "Library that allows your Python tests to travel through time";
     homepage = "https://github.com/spulec/freezegun";
diff --git a/pkgs/development/python-modules/frelatage/default.nix b/pkgs/development/python-modules/frelatage/default.nix
index 519e981b69998..1203cab94216d 100644
--- a/pkgs/development/python-modules/frelatage/default.nix
+++ b/pkgs/development/python-modules/frelatage/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, timeout-decorator
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  timeout-decorator,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-eHVqp6govBV9FvSQyaZuEEImHQRs/mbLaW86RCvtDbM=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     numpy
     timeout-decorator
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "frelatage"
-  ];
+  pythonImportsCheck = [ "frelatage" ];
 
   meta = with lib; {
     description = "Greybox and Coverage-based library to fuzz Python applications";
diff --git a/pkgs/development/python-modules/freud/default.nix b/pkgs/development/python-modules/freud/default.nix
new file mode 100644
index 0000000000000..9fa555e281700
--- /dev/null
+++ b/pkgs/development/python-modules/freud/default.nix
@@ -0,0 +1,103 @@
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  cmake,
+  cython,
+  oldest-supported-numpy,
+  scikit-build,
+  setuptools,
+  tbb,
+  numpy,
+  rowan,
+  scipy,
+  pytestCheckHook,
+  python,
+  gsd,
+  matplotlib,
+  sympy,
+}:
+
+buildPythonPackage rec {
+  pname = "freud";
+  version = "3.1.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "glotzerlab";
+    repo = "freud";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-jlscEHQ1q4oqxE06NhVWCOlPRcjDcJVrvy4h6iYrkz0=";
+    fetchSubmodules = true;
+  };
+
+  patches = [
+    # https://github.com/glotzerlab/freud/issues/1269
+    (fetchpatch {
+      url = "https://github.com/glotzerlab/freud/commit/8f636e3815737945e45da5b9996b5f69df07c9a5.patch";
+      hash = "sha256-PLorRrYj16oBWHYzXDq62kECzVTtyr+1Z20DJqTkXxg=";
+    })
+  ];
+
+  # Because we prefer to not `leaveDotGit`, we need to fool upstream into
+  # thinking we left the .git files in the submodules, so cmake won't think we
+  # didn't initialize them. Upstream doesn't support using the system wide
+  # installed version of these libraries, and it's probably aint's worth the
+  # hassle, because upstream also doesn't distribute all of these dependencies'
+  # libraries, and probably it uses only what it needs.
+  preConfigure = ''
+    touch extern/{voro++,fsph,Eigen}/.git
+  '';
+
+  # Scipy still depends on numpy 1, and so we'd get 'package duplicates in
+  # closure' error if we'd use numpy_2
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail 'numpy>=2.0.0rc1' 'numpy' \
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    cython
+    oldest-supported-numpy
+    scikit-build
+    setuptools
+  ];
+  dontUseCmakeConfigure = true;
+  buildInputs = [ tbb ];
+
+  propagatedBuildInputs = [
+    numpy
+    rowan
+    scipy
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    gsd
+    matplotlib
+    sympy
+  ];
+  disabledTests = lib.optionals stdenv.hostPlatform.isAarch64 [
+    # https://github.com/glotzerlab/freud/issues/961
+    "test_docstring"
+  ];
+  # On top of cd $out due to https://github.com/NixOS/nixpkgs/issues/255262 ,
+  # we need to also copy the tests because otherwise pytest won't find them.
+  preCheck = ''
+    cp -R tests $out/${python.sitePackages}/freud/tests
+    cd $out
+  '';
+
+  pythonImportsCheck = [ "freud" ];
+
+  meta = {
+    description = "Powerful, efficient particle trajectory analysis in scientific Python";
+    homepage = "https://github.com/glotzerlab/freud";
+    changelog = "https://github.com/glotzerlab/freud/blob/${src.rev}/ChangeLog.md";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ doronbehar ];
+  };
+}
diff --git a/pkgs/development/python-modules/frida-python/default.nix b/pkgs/development/python-modules/frida-python/default.nix
index 144d88cc80b82..8bef789110cf7 100644
--- a/pkgs/development/python-modules/frida-python/default.nix
+++ b/pkgs/development/python-modules/frida-python/default.nix
@@ -1,12 +1,31 @@
-{ lib, stdenv, fetchurl, fetchPypi, buildPythonPackage, typing-extensions }:
+{
+  lib,
+  stdenv,
+  fetchurl,
+  fetchPypi,
+  buildPythonPackage,
+  typing-extensions,
+  darwin,
+}:
 let
   version = "16.0.19";
   format = "setuptools";
-  devkit = fetchurl {
-    url = "https://github.com/frida/frida/releases/download/${version}/frida-core-devkit-${version}-linux-x86_64.tar.xz";
-    hash = "sha256-yNXNqv8eCbpdQKFShpAh6rUCEuItrOSNNLOjESimPdk=";
-  };
-in buildPythonPackage rec {
+
+  devkit = {
+    aarch64-darwin = fetchurl {
+      url = "https://github.com/frida/frida/releases/download/${version}/frida-core-devkit-${version}-macos-arm64.tar.xz";
+      hash = "sha256-5VAZnpHQ5wjl7IM96GhIKOfFYHFDKKOoSjN1STna2UA=";
+    };
+
+    x86_64-linux = fetchurl {
+      url = "https://github.com/frida/frida/releases/download/${version}/frida-core-devkit-${version}-linux-x86_64.tar.xz";
+      hash = "sha256-yNXNqv8eCbpdQKFShpAh6rUCEuItrOSNNLOjESimPdk=";
+    };
+  }.${stdenv.hostPlatform.system}
+    or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
+
+in
+buildPythonPackage rec {
   pname = "frida-python";
   inherit version;
 
@@ -24,17 +43,25 @@ in buildPythonPackage rec {
     popd
   '';
 
+  env.NIX_LDFLAGS = lib.optionalString stdenv.hostPlatform.isDarwin "-framework AppKit";
+
   propagatedBuildInputs = [ typing-extensions ];
 
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
+    darwin.apple_sdk.frameworks.AppKit
+  ];
+
   pythonImportsCheck = [ "frida" ];
 
-  passthru = { inherit devkit; };
+  passthru = {
+    inherit devkit;
+  };
 
   meta = {
     description = "Dynamic instrumentation toolkit for developers, reverse-engineers, and security researchers (Python bindings)";
     homepage = "https://www.frida.re";
     license = lib.licenses.wxWindows;
     maintainers = with lib.maintainers; [ s1341 ];
-    platforms = [ "x86_64-linux" ];
+    platforms = [ "aarch64-darwin" "x86_64-linux" ];
   };
 }
diff --git a/pkgs/development/python-modules/frigidaire/default.nix b/pkgs/development/python-modules/frigidaire/default.nix
index e33581ed0ac52..4914314384b88 100644
--- a/pkgs/development/python-modules/frigidaire/default.nix
+++ b/pkgs/development/python-modules/frigidaire/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, certifi
-, chardet
-, fetchFromGitHub
-, idna
-, pythonOlder
-, requests
-, setuptools
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  certifi,
+  chardet,
+  fetchFromGitHub,
+  idna,
+  pythonOlder,
+  requests,
+  setuptools,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "frigidaire";
-  version = "0.18.16";
+  version = "0.18.23";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,7 +22,7 @@ buildPythonPackage rec {
     owner = "bm1549";
     repo = "frigidaire";
     rev = "refs/tags/${version}";
-    hash = "sha256-PQrQM9AuudDmmsmMcZJjBm+rLA/juDgr3+SORuVurqQ=";
+    hash = "sha256-RzwTQRo5cIh6I8VQAJNcLg5TBiF6dAnZICGfvwCvx5Y=";
   };
 
   postPatch = ''
@@ -29,9 +30,7 @@ buildPythonPackage rec {
       --replace-warn 'version = "SNAPSHOT"' 'version = "${version}"'
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     certifi
@@ -44,9 +43,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "frigidaire"
-  ];
+  pythonImportsCheck = [ "frigidaire" ];
 
   meta = with lib; {
     description = "Python API for the Frigidaire devices";
diff --git a/pkgs/development/python-modules/frilouz/default.nix b/pkgs/development/python-modules/frilouz/default.nix
index 3f5ea414129fd..962c0bc458849 100644
--- a/pkgs/development/python-modules/frilouz/default.nix
+++ b/pkgs/development/python-modules/frilouz/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, astunparse
-, buildPythonPackage
-, fetchFromGitHub
-, isPy3k
+{
+  lib,
+  astunparse,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/fritzconnection/default.nix b/pkgs/development/python-modules/fritzconnection/default.nix
index 36d4dbd5b1923..4ed60bd8a704f 100644
--- a/pkgs/development/python-modules/fritzconnection/default.nix
+++ b/pkgs/development/python-modules/fritzconnection/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pytestCheckHook
-, requests
-, segno
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pytestCheckHook,
+  requests,
+  segno,
 }:
 
 buildPythonPackage rec {
@@ -21,27 +22,19 @@ buildPythonPackage rec {
     hash = "sha256-nWXtXhF2pUBxHdrivi4DA7+bFiZPyxb2nqsiN3j4HdI=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   passthru.optional-dependencies = {
-    qr = [
-      segno
-    ];
+    qr = [ segno ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export HOME=$TEMP
   '';
 
-  pythonImportsCheck = [
-    "fritzconnection"
-  ];
+  pythonImportsCheck = [ "fritzconnection" ];
 
   disabledTestPaths = [
     # Functional tests require network access
@@ -53,6 +46,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/kbr/fritzconnection";
     changelog = "https://fritzconnection.readthedocs.io/en/${version}/sources/version_history.html";
     license = licenses.mit;
-    maintainers = with maintainers; [ dotlambda valodim ];
+    maintainers = with maintainers; [
+      dotlambda
+      valodim
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/frozendict/default.nix b/pkgs/development/python-modules/frozendict/default.nix
index 5405e570ed8dc..6e1d469ba34f0 100644
--- a/pkgs/development/python-modules/frozendict/default.nix
+++ b/pkgs/development/python-modules/frozendict/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "frozendict";
-  version = "2.4.2";
+  version = "2.4.4";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "Marco-Sulla";
     repo = "python-frozendict";
     rev = "refs/tags/v${version}";
-    hash = "sha256-SXUPzFDVw8+CmD/Jxm/EB70UBdOmauQs69hNr0l3l90=";
+    hash = "sha256-TgXhffUvx74fU2SgDV04R1yS9xGbiP/ksQ+3KGT5bdQ=";
   };
 
   # build C version if it exists
@@ -33,17 +33,11 @@ buildPythonPackage rec {
     fi
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "frozendict"
-  ];
+  pythonImportsCheck = [ "frozendict" ];
 
   meta = with lib; {
     description = "Module for immutable dictionary";
diff --git a/pkgs/development/python-modules/frozenlist/default.nix b/pkgs/development/python-modules/frozenlist/default.nix
index 73860b6f79ff1..c4c4613163ed0 100644
--- a/pkgs/development/python-modules/frozenlist/default.nix
+++ b/pkgs/development/python-modules/frozenlist/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, cython
-, expandvars
-, fetchFromGitHub
-, pep517
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  expandvars,
+  fetchFromGitHub,
+  pep517,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -36,17 +37,13 @@ buildPythonPackage rec {
     wheel
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preBuild = ''
     cython frozenlist/_frozenlist.pyx
   '';
 
-  pythonImportsCheck = [
-    "frozenlist"
-  ];
+  pythonImportsCheck = [ "frozenlist" ];
 
   meta = with lib; {
     description = "Python module for list-like structure";
diff --git a/pkgs/development/python-modules/frozenlist2/default.nix b/pkgs/development/python-modules/frozenlist2/default.nix
index 2cbac731c577e..ca7ab067ea064 100644
--- a/pkgs/development/python-modules/frozenlist2/default.nix
+++ b/pkgs/development/python-modules/frozenlist2/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, setuptools
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -17,14 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-fF0oFZ2q1wRH7IKBlCjm3Za4xtEMSHyEaGL09rHgtTY=";
   };
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  propagatedBuildInputs = [ setuptools ];
 
   pythonImportsCheck = [ "frozenlist2" ];
 
   meta = with lib; {
-    description = "An immutable list for Python";
+    description = "Immutable list for Python";
     homepage = "https://github.com/rohanpm/frozenlist2";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ t4ccer ];
diff --git a/pkgs/development/python-modules/fs-s3fs/default.nix b/pkgs/development/python-modules/fs-s3fs/default.nix
index 9310e46e82d45..5372eb0b6d0c7 100644
--- a/pkgs/development/python-modules/fs-s3fs/default.nix
+++ b/pkgs/development/python-modules/fs-s3fs/default.nix
@@ -1,4 +1,11 @@
-{ buildPythonPackage, fetchPypi, lib, fs, six, boto3 }:
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  fs,
+  six,
+  boto3,
+}:
 
 buildPythonPackage rec {
   pname = "fs-s3fs";
@@ -10,7 +17,11 @@ buildPythonPackage rec {
     sha256 = "b57f8c7664460ff7b451b4b44ca2ea9623a374d74e1284c2d5e6df499dc7976c";
   };
 
-  propagatedBuildInputs = [ fs six boto3 ];
+  propagatedBuildInputs = [
+    fs
+    six
+    boto3
+  ];
 
   # tests try to integrate an s3 bucket which can't be tested properly in an isolated environment.
   doCheck = false;
@@ -19,6 +30,6 @@ buildPythonPackage rec {
     homepage = "https://pypi.org/project/fs-s3fs/";
     license = licenses.mit;
     description = "Amazon S3 filesystem for PyFilesystem2";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/fs/default.nix b/pkgs/development/python-modules/fs/default.nix
index da03c963bd754..e0c07195df497 100644
--- a/pkgs/development/python-modules/fs/default.nix
+++ b/pkgs/development/python-modules/fs/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, glibcLocales
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, six
-, appdirs
-, scandir ? null
-, backports_os ? null
-, typing ? null
-, pytz
-, enum34
-, pyftpdlib
-, psutil
-, mock
-, pythonAtLeast
-, isPy3k
-, pytestCheckHook
-, stdenv
+{
+  lib,
+  glibcLocales,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  six,
+  appdirs,
+  scandir ? null,
+  backports_os ? null,
+  typing ? null,
+  pytz,
+  enum34,
+  pyftpdlib,
+  psutil,
+  mock,
+  pythonAtLeast,
+  isPy3k,
+  pytestCheckHook,
+  stdenv,
 }:
 
 buildPythonPackage rec {
@@ -33,14 +34,25 @@ buildPythonPackage rec {
 
   # strong cycle with parameterized
   doCheck = false;
-  nativeCheckInputs = [ pyftpdlib mock psutil pytestCheckHook ];
-  propagatedBuildInputs = [ six appdirs pytz setuptools ]
+  nativeCheckInputs = [
+    pyftpdlib
+    mock
+    psutil
+    pytestCheckHook
+  ];
+  propagatedBuildInputs =
+    [
+      six
+      appdirs
+      pytz
+      setuptools
+    ]
     ++ lib.optionals (!isPy3k) [ backports_os ]
     ++ lib.optionals (!pythonAtLeast "3.6") [ typing ]
     ++ lib.optionals (!pythonAtLeast "3.5") [ scandir ]
     ++ lib.optionals (!pythonAtLeast "3.5") [ enum34 ];
 
-  LC_ALL="en_US.utf-8";
+  LC_ALL = "en_US.utf-8";
 
   preCheck = ''
     HOME=$(mktemp -d)
@@ -48,24 +60,25 @@ buildPythonPackage rec {
 
   pytestFlagsArray = [ "--ignore=tests/test_opener.py" ];
 
-  disabledTests = [
-    "user_data_repr"
-  ] ++ lib.optionals (stdenv.isDarwin) [ # remove if https://github.com/PyFilesystem/pyfilesystem2/issues/430#issue-707878112 resolved
-    "test_ftpfs"
-  ] ++ lib.optionals (pythonAtLeast "3.9") [
-    # update friend version of this commit: https://github.com/PyFilesystem/pyfilesystem2/commit/3e02968ce7da7099dd19167815c5628293e00040
-    # merged into master, able to be removed after >2.4.1
-    "test_copy_sendfile"
-  ];
+  disabledTests =
+    [ "user_data_repr" ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin) [
+      # remove if https://github.com/PyFilesystem/pyfilesystem2/issues/430#issue-707878112 resolved
+      "test_ftpfs"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.9") [
+      # update friend version of this commit: https://github.com/PyFilesystem/pyfilesystem2/commit/3e02968ce7da7099dd19167815c5628293e00040
+      # merged into master, able to be removed after >2.4.1
+      "test_copy_sendfile"
+    ];
 
   __darwinAllowLocalNetworking = true;
 
   meta = with lib; {
     description = "Filesystem abstraction";
-    homepage    = "https://github.com/PyFilesystem/pyfilesystem2";
-    license     = licenses.bsd3;
+    homepage = "https://github.com/PyFilesystem/pyfilesystem2";
+    license = licenses.bsd3;
     maintainers = with maintainers; [ lovek323 ];
-    platforms   = platforms.unix;
+    platforms = platforms.unix;
   };
-
 }
diff --git a/pkgs/development/python-modules/fschat/default.nix b/pkgs/development/python-modules/fschat/default.nix
index 5f9c4b3532b48..d086073f1a4d0 100644
--- a/pkgs/development/python-modules/fschat/default.nix
+++ b/pkgs/development/python-modules/fschat/default.nix
@@ -1,32 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, aiohttp
-, fastapi
-, httpx
-, markdown2
-, nh3
-, numpy
-, prompt-toolkit
-, pydantic
-, requests
-, rich
-, shortuuid
-, tiktoken
-, uvicorn
-, anthropic
-, openai
-, ray
-, wandb
-, einops
-, gradio
-, accelerate
-, peft
-, sentencepiece
-, torch
-, transformers
-, protobuf
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  aiohttp,
+  fastapi,
+  httpx,
+  markdown2,
+  nh3,
+  numpy,
+  prompt-toolkit,
+  pydantic,
+  requests,
+  rich,
+  shortuuid,
+  tiktoken,
+  uvicorn,
+  anthropic,
+  openai,
+  ray,
+  wandb,
+  einops,
+  gradio,
+  accelerate,
+  peft,
+  sentencepiece,
+  torch,
+  transformers,
+  protobuf,
 }:
 let
   version = "0.2.36";
@@ -43,9 +44,7 @@ buildPythonPackage {
     hash = "sha256-tQuvQXzQbQjU16DfS1o55VHW6eklngEvIigzZGgrKB8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -61,7 +60,7 @@ buildPythonPackage {
     shortuuid
     tiktoken
     uvicorn
-  # ] ++ markdown2.optional-dependencies.all;
+    # ] ++ markdown2.optional-dependencies.all;
   ];
 
   passthru.optional-dependencies = {
@@ -75,9 +74,7 @@ buildPythonPackage {
       wandb
       einops
     ];
-    webui = [
-      gradio
-    ];
+    webui = [ gradio ];
     model_worker = [
       accelerate
       peft
@@ -94,7 +91,7 @@ buildPythonPackage {
   doCheck = false;
 
   meta = with lib; {
-    description = "An open platform for training, serving, and evaluating large language models. Release repo for Vicuna and Chatbot Arena";
+    description = "Open platform for training, serving, and evaluating large language models. Release repo for Vicuna and Chatbot Arena";
     homepage = "https://github.com/lm-sys/FastChat";
     license = licenses.asl20;
     maintainers = with maintainers; [ happysalada ];
diff --git a/pkgs/development/python-modules/fsspec-xrootd/default.nix b/pkgs/development/python-modules/fsspec-xrootd/default.nix
index d2d72257100eb..73799c933f802 100644
--- a/pkgs/development/python-modules/fsspec-xrootd/default.nix
+++ b/pkgs/development/python-modules/fsspec-xrootd/default.nix
@@ -1,43 +1,45 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, fsspec
-, xrootd
-, pkgs
-, pytestCheckHook
-, stdenv
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+
+  # dependencies
+  fsspec,
+  xrootd,
+
+  # tests
+  pkgs,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "fsspec-xrootd";
-  version = "0.3.0";
+  version = "0.4.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
-
   src = fetchFromGitHub {
     owner = "CoffeaTeam";
     repo = "fsspec-xrootd";
     rev = "refs/tags/v${version}";
-    hash = "sha256-fhamfMWlsiiqfU9c9XDfLEEkRbMAqm74rc2bGF3fRaM=";
+    hash = "sha256-Ge7pVrcCYNp8yNV+ZkBftLeCCSUhtO+HJHsSHT58jcs=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     fsspec
     xrootd
   ];
 
-  pythonImportsCheck = [
-    "fsspec_xrootd"
-  ];
+  pythonImportsCheck = [ "fsspec_xrootd" ];
 
   nativeCheckInputs = [
     pkgs.xrootd
@@ -51,15 +53,13 @@ buildPythonPackage rec {
   ];
 
   # Timeout related tests hang indifinetely
-  disabledTestPaths = lib.optionals stdenv.hostPlatform.isDarwin [
-    "tests/test_basicio.py"
-  ];
+  disabledTestPaths = lib.optionals stdenv.hostPlatform.isDarwin [ "tests/test_basicio.py" ];
 
-  meta = with lib; {
-    description = "An XRootD implementation for fsspec";
+  meta = {
+    description = "XRootD implementation for fsspec";
     homepage = "https://github.com/CoffeaTeam/fsspec-xrootd";
     changelog = "https://github.com/CoffeaTeam/fsspec-xrootd/releases/tag/v${version}";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/fsspec/default.nix b/pkgs/development/python-modules/fsspec/default.nix
index 648879ec85cbc..832920986a39d 100644
--- a/pkgs/development/python-modules/fsspec/default.nix
+++ b/pkgs/development/python-modules/fsspec/default.nix
@@ -1,30 +1,31 @@
-{ lib
-, stdenv
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, paramiko
-, pytest-asyncio
-, pytest-mock
-, pytest-vcr
-, pytestCheckHook
-, pythonOlder
-, requests
-, smbprotocol
-, tqdm
-, adlfs
-, dask
-, distributed
-, dropbox
-, fusepy
-, gcsfs
-, libarchive-c
-, ocifs
-, panel
-, pyarrow
-, pygit2
-, s3fs
+{
+  lib,
+  stdenv,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  paramiko,
+  pytest-asyncio,
+  pytest-mock,
+  pytest-vcr,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  smbprotocol,
+  tqdm,
+  adlfs,
+  dask,
+  distributed,
+  dropbox,
+  fusepy,
+  gcsfs,
+  libarchive-c,
+  ocifs,
+  panel,
+  pyarrow,
+  pygit2,
+  s3fs,
 }:
 
 buildPythonPackage rec {
@@ -50,14 +51,9 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    entrypoints = [
-    ];
-    abfs = [
-      adlfs
-    ];
-    adl = [
-      adlfs
-    ];
+    entrypoints = [ ];
+    abfs = [ adlfs ];
+    adl = [ adlfs ];
     dask = [
       dask
       distributed
@@ -67,55 +63,25 @@ buildPythonPackage rec {
       requests
       dropbox
     ];
-    gcs = [
-      gcsfs
-    ];
-    git = [
-      pygit2
-    ];
-    github = [
-      requests
-    ];
-    gs = [
-      gcsfs
-    ];
-    hdfs = [
-      pyarrow
-    ];
-    arrow = [
-      pyarrow
-    ];
+    gcs = [ gcsfs ];
+    git = [ pygit2 ];
+    github = [ requests ];
+    gs = [ gcsfs ];
+    hdfs = [ pyarrow ];
+    arrow = [ pyarrow ];
     http = [
       aiohttp
       requests
     ];
-    sftp = [
-      paramiko
-    ];
-    s3 = [
-      s3fs
-    ];
-    oci = [
-      ocifs
-    ];
-    smb = [
-      smbprotocol
-    ];
-    ssh = [
-      paramiko
-    ];
-    fuse = [
-      fusepy
-    ];
-    libarchive = [
-      libarchive-c
-    ];
-    gui = [
-      panel
-    ];
-    tqdm = [
-      tqdm
-    ];
+    sftp = [ paramiko ];
+    s3 = [ s3fs ];
+    oci = [ ocifs ];
+    smb = [ smbprotocol ];
+    ssh = [ paramiko ];
+    fuse = [ fusepy ];
+    libarchive = [ libarchive-c ];
+    gui = [ panel ];
+    tqdm = [ tqdm ];
   };
 
   nativeCheckInputs = [
@@ -132,40 +98,40 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  disabledTests = [
-    # Test assumes user name is part of $HOME
-    # AssertionError: assert 'nixbld' in '/homeless-shelter/foo/bar'
-    "test_strip_protocol_expanduser"
-    # test accesses this remote ftp server:
-    # https://ftp.fau.de/debian-cd/current/amd64/log/success
-    "test_find"
-    # Tests want to access S3
-    "test_urlpath_inference_errors"
-    "test_mismatch"
-  ] ++ lib.optionals (stdenv.isDarwin) [
-    # works locally on APFS, fails on hydra with AssertionError comparing timestamps
-    # darwin hydra builder uses HFS+ and has only one second timestamp resolution
-    # this two tests however, assume nanosecond resolution
-    "test_modified"
-    "test_touch"
-    # tries to access /home, ignores $HOME
-    "test_directories"
-  ];
+  disabledTests =
+    [
+      # Test assumes user name is part of $HOME
+      # AssertionError: assert 'nixbld' in '/homeless-shelter/foo/bar'
+      "test_strip_protocol_expanduser"
+      # test accesses this remote ftp server:
+      # https://ftp.fau.de/debian-cd/current/amd64/log/success
+      "test_find"
+      # Tests want to access S3
+      "test_urlpath_inference_errors"
+      "test_mismatch"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin) [
+      # works locally on APFS, fails on hydra with AssertionError comparing timestamps
+      # darwin hydra builder uses HFS+ and has only one second timestamp resolution
+      # this two tests however, assume nanosecond resolution
+      "test_modified"
+      "test_touch"
+      # tries to access /home, ignores $HOME
+      "test_directories"
+    ];
 
   disabledTestPaths = [
     # JSON decoding issues
     "fsspec/implementations/tests/test_dbfs.py"
   ];
 
-  pythonImportsCheck = [
-    "fsspec"
-  ];
+  pythonImportsCheck = [ "fsspec" ];
 
   meta = with lib; {
-    description = "A specification that Python filesystems should adhere to";
+    description = "Specification that Python filesystems should adhere to";
     homepage = "https://github.com/fsspec/filesystem_spec";
     changelog = "https://github.com/fsspec/filesystem_spec/raw/${version}/docs/source/changelog.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/fst-pso/default.nix b/pkgs/development/python-modules/fst-pso/default.nix
index 00bcf551b5b1b..3096bb743d11c 100644
--- a/pkgs/development/python-modules/fst-pso/default.nix
+++ b/pkgs/development/python-modules/fst-pso/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, miniful
-, numpy
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  miniful,
+  numpy,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "fstpso"
-  ];
+  pythonImportsCheck = [ "fstpso" ];
 
   meta = with lib; {
     description = "Fuzzy Self-Tuning PSO global optimization library";
diff --git a/pkgs/development/python-modules/ftfy/default.nix b/pkgs/development/python-modules/ftfy/default.nix
index c05b375424173..d51041828a648 100644
--- a/pkgs/development/python-modules/ftfy/default.nix
+++ b/pkgs/development/python-modules/ftfy/default.nix
@@ -1,39 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 
-# build-system
-, poetry-core
+  # build-system
+  poetry-core,
 
-# dependencies
-, wcwidth
+  # dependencies
+  wcwidth,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
+  versionCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "ftfy";
-  version = "6.2.0";
+  version = "6.2.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-XkIUPHAl75eUTKJhnWthsGGfxmVPmHcdOehiwUJMdcA=";
+    hash = "sha256-ebUFmI8p1XelipBpr+dVU6AqRuQt5gkcBmDNxngSutw=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    wcwidth
-  ];
+  dependencies = [ wcwidth ];
+
+  pythonImportsCheck = [ "ftfy" ];
 
   nativeCheckInputs = [
+    versionCheckHook
     pytestCheckHook
   ];
 
@@ -46,12 +47,11 @@ buildPythonPackage rec {
     "tests/test_cli.py"
   ];
 
-
   meta = with lib; {
     description = "Given Unicode text, make its representation consistent and possibly less broken";
     mainProgram = "ftfy";
     homepage = "https://github.com/LuminosoInsight/python-ftfy";
-    license = licenses.mit;
+    license = licenses.asl20;
     maintainers = with maintainers; [ aborsu ];
   };
 }
diff --git a/pkgs/development/python-modules/ftputil/default.nix b/pkgs/development/python-modules/ftputil/default.nix
index 9c143389928fd..01ec0e9d616af 100644
--- a/pkgs/development/python-modules/ftputil/default.nix
+++ b/pkgs/development/python-modules/ftputil/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, freezegun
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  freezegun,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -32,14 +32,12 @@ buildPythonPackage rec {
     "test_upload"
   ];
 
-  pythonImportsCheck = [
-    "ftputil"
-  ];
+  pythonImportsCheck = [ "ftputil" ];
 
   meta = with lib; {
     description = "High-level FTP client library (virtual file system and more)";
     homepage = "https://ftputil.sschwarzer.net/";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/fugashi/default.nix b/pkgs/development/python-modules/fugashi/default.nix
index 64f5ef9afcdb8..99c0853b461c6 100644
--- a/pkgs/development/python-modules/fugashi/default.nix
+++ b/pkgs/development/python-modules/fugashi/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, buildPythonPackage
-, cython_0
-, mecab
-, setuptools-scm
-, ipadic
-, unidic
-, unidic-lite
+{
+  lib,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  buildPythonPackage,
+  cython_0,
+  mecab,
+  setuptools-scm,
+  ipadic,
+  unidic,
+  unidic-lite,
 }:
 
 buildPythonPackage rec {
@@ -24,10 +25,16 @@ buildPythonPackage rec {
     hash = "sha256-4i7Q+TtXTQNSJ1EIcS8KHrVPdCJAgZh86Y6lB8772XU=";
   };
 
-  nativeBuildInputs = [ cython_0 mecab setuptools-scm ];
+  nativeBuildInputs = [
+    cython_0
+    mecab
+    setuptools-scm
+  ];
 
-  nativeCheckInputs = [ ipadic pytestCheckHook ]
-    ++ passthru.optional-dependencies.unidic-lite;
+  nativeCheckInputs = [
+    ipadic
+    pytestCheckHook
+  ] ++ passthru.optional-dependencies.unidic-lite;
 
   passthru.optional-dependencies = {
     unidic-lite = [ unidic-lite ];
@@ -41,7 +48,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "fugashi" ];
 
   meta = with lib; {
-    description = "A Cython MeCab wrapper for fast, pythonic Japanese tokenization and morphological analysis";
+    description = "Cython MeCab wrapper for fast, pythonic Japanese tokenization and morphological analysis";
     homepage = "https://github.com/polm/fugashi";
     changelog = "https://github.com/polm/fugashi/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/func-timeout/default.nix b/pkgs/development/python-modules/func-timeout/default.nix
index 654b950b48d89..33446197f52d3 100644
--- a/pkgs/development/python-modules/func-timeout/default.nix
+++ b/pkgs/development/python-modules/func-timeout/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
     sha256 = "74cd3c428ec94f4edfba81f9b2f14904846d5ffccc27c92433b8b5939b5575dd";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "func_timeout" ];
 
@@ -25,6 +24,6 @@ buildPythonPackage rec {
     description = "Allows you to specify timeouts when calling any existing function. Also provides support for stoppable-threads";
     homepage = "https://github.com/kata198/func_timeout";
     license = licenses.lgpl3Only;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/funcparserlib/default.nix b/pkgs/development/python-modules/funcparserlib/default.nix
index e8f5f10b45338..4c67565fd5f3c 100644
--- a/pkgs/development/python-modules/funcparserlib/default.nix
+++ b/pkgs/development/python-modules/funcparserlib/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, python
-, pytestCheckHook
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -22,18 +22,14 @@ buildPythonPackage rec {
     hash = "sha256-LE9ItCaEzEGeahpM3M3sSnDBXEr6uX5ogEkO5x2Jgzc=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   nativeCheckInputs = [
     pytestCheckHook
     six
   ];
 
-  pythonImportsCheck = [
-    "funcparserlib"
-  ];
+  pythonImportsCheck = [ "funcparserlib" ];
 
   meta = with lib; {
     description = "Recursive descent parsing library based on functional combinators";
diff --git a/pkgs/development/python-modules/funcsigs/default.nix b/pkgs/development/python-modules/funcsigs/default.nix
index 4def50699d840..bafdd58d56ce5 100644
--- a/pkgs/development/python-modules/funcsigs/default.nix
+++ b/pkgs/development/python-modules/funcsigs/default.nix
@@ -1,5 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi
-, isPyPy, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -23,7 +27,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python function signatures from PEP362 for Python 2.6, 2.7 and 3.2+";
     homepage = "https://github.com/aliles/funcsigs";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     license = licenses.asl20;
   };
 }
diff --git a/pkgs/development/python-modules/functiontrace/default.nix b/pkgs/development/python-modules/functiontrace/default.nix
index 0b34da111b36d..0982baa619e27 100644
--- a/pkgs/development/python-modules/functiontrace/default.nix
+++ b/pkgs/development/python-modules/functiontrace/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, toml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  toml,
 }:
 
 buildPythonPackage rec {
@@ -24,7 +25,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://functiontrace.com";
-    description = "The Python module for Functiontrace";
+    description = "Python module for Functiontrace";
     license = licenses.prosperity30;
     maintainers = with maintainers; [ mathiassven ];
   };
diff --git a/pkgs/development/python-modules/functools32/default.nix b/pkgs/development/python-modules/functools32/default.nix
deleted file mode 100644
index be907e963c100..0000000000000
--- a/pkgs/development/python-modules/functools32/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-}:
-
-if isPy3k then null else buildPythonPackage rec {
-  pname = "functools32";
-  version = "3.2.3-2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn";
-  };
-
-  meta = with lib; {
-    description = "This is a backport of the functools standard library module from";
-    homepage = "https://github.com/MiCHiLU/python-functools32";
-    license = licenses.psfl;
-  };
-
-}
diff --git a/pkgs/development/python-modules/funcy/default.nix b/pkgs/development/python-modules/funcy/default.nix
index bafaf0fdb1f10..45359c9adc181 100644
--- a/pkgs/development/python-modules/funcy/default.nix
+++ b/pkgs/development/python-modules/funcy/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,7 +25,6 @@ buildPythonPackage rec {
     homepage = "https://funcy.readthedocs.org/";
     changelog = "https://github.com/Suor/funcy/blob/2.0/CHANGELOG";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/funsor/default.nix b/pkgs/development/python-modules/funsor/default.nix
index dcd3c67a394bb..dda85f2c798d6 100644
--- a/pkgs/development/python-modules/funsor/default.nix
+++ b/pkgs/development/python-modules/funsor/default.nix
@@ -1,28 +1,38 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, makefun
-, multipledispatch
-, numpy
-, opt-einsum
-, typing-extensions
-, pyro-ppl
-, torch
-, pandas
-, pillow
-, pyro-api
-, pytest
-, pytest-xdist
-, requests
-, scipy
-, torchvision
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  makefun,
+  multipledispatch,
+  numpy,
+  opt-einsum,
+  typing-extensions,
+
+  # checks
+  pyro-ppl,
+  torch,
+  pandas,
+  pillow,
+  pyro-api,
+  pytestCheckHook,
+  pytest-xdist,
+  requests,
+  scipy,
+  torchvision,
+
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "funsor";
   version = "0.4.6";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -33,12 +43,9 @@ buildPythonPackage rec {
     hash = "sha256-Prj1saT0yoPAP8rDE0ipBEpR3QMk4PS12VSJlxc22p8=";
   };
 
-  # Disable the tests that rely on downloading assets from the internet as well as the linting checks.
-  patches = [
-    ./patch-makefile-for-tests.patch
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     makefun
     multipledispatch
     numpy
@@ -54,26 +61,38 @@ buildPythonPackage rec {
     pandas
     pillow
     pyro-api
-    pytest
+    pytestCheckHook
     pytest-xdist
     requests
     scipy
     torchvision
   ];
 
-  # Use the included Makefile to run the tests.
-  checkPhase = ''
+  preCheck = ''
     export FUNSOR_BACKEND=torch
-    make test
   '';
 
   pythonImportsCheck = [ "funsor" ];
 
-  meta = with lib; {
+  disabledTests =
+    [
+      # `test_torch_save` got broken by the update of torch (2.3.1 -> 2.4.0):
+      # FutureWarning: You are using `torch.load` with `weights_only=False`...
+      # TODO: Try to re-enable this test at next release
+      "test_torch_save"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Failures related to JIT
+      # RuntimeError: required keyword attribute 'Subgraph' has the wrong type
+      "test_local_param_ok"
+      "test_plate_ok"
+    ];
+
+  meta = {
     description = "Functional tensors for probabilistic programming";
     homepage = "https://funsor.pyro.ai";
     changelog = "https://github.com/pyro-ppl/funsor/releases/tag/${version}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/funsor/patch-makefile-for-tests.patch b/pkgs/development/python-modules/funsor/patch-makefile-for-tests.patch
deleted file mode 100644
index ca59bf75bb7d7..0000000000000
--- a/pkgs/development/python-modules/funsor/patch-makefile-for-tests.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff --git a/Makefile b/Makefile
-index d4b862c..755dfe3 100644
---- a/Makefile
-+++ b/Makefile
-@@ -23,7 +23,7 @@ format: license FORCE
- 	black .
- 	isort .
- 
--test: lint FORCE
-+test: FORCE
- ifeq (${FUNSOR_BACKEND}, torch)
- 	pytest -v -n auto test/
- 	FUNSOR_DEBUG=1 pytest -v test/test_gaussian.py
-@@ -45,10 +45,10 @@ ifeq (${FUNSOR_BACKEND}, torch)
- 	python examples/slds.py -n 2 -t 50
- 	python examples/pcfg.py --size 3
- 	python examples/talbot.py -n 2
--	python examples/vae.py --smoke-test
-+	# python examples/vae.py --smoke-test
- 	python examples/eeg_slds.py --num-steps 2 --fon --test
--	python examples/mixed_hmm/experiment.py -d seal -i discrete -g discrete -zi --smoke
--	python examples/mixed_hmm/experiment.py -d seal -i discrete -g discrete -zi --parallel --smoke
-+	# python examples/mixed_hmm/experiment.py -d seal -i discrete -g discrete -zi --smoke
-+	# python examples/mixed_hmm/experiment.py -d seal -i discrete -g discrete -zi --parallel --smoke
- 	python examples/sensor.py --seed=0 --num-frames=2 -n 1
- 	python examples/adam.py --num-steps=21
- 	@echo PASS
diff --git a/pkgs/development/python-modules/furl/default.nix b/pkgs/development/python-modules/furl/default.nix
index 062ab8aebe081..4b4f81d1a2aad 100644
--- a/pkgs/development/python-modules/furl/default.nix
+++ b/pkgs/development/python-modules/furl/default.nix
@@ -1,10 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flake8
-, orderedmultidict
-, pytestCheckHook
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonAtLeast,
+  flake8,
+  orderedmultidict,
+  pytestCheckHook,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -34,6 +36,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  disabledTests = lib.optionals (pythonAtLeast "3.12") [
+    # AssertionError: assert '//////path' == '////path'
+    "test_odd_urls"
+  ];
+
   pythonImportsCheck = [ "furl" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/furo/default.nix b/pkgs/development/python-modules/furo/default.nix
index fb024e18c4f6b..26eab2292967e 100644
--- a/pkgs/development/python-modules/furo/default.nix
+++ b/pkgs/development/python-modules/furo/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, pythonRelaxDepsHook
-, sphinx
-, beautifulsoup4
-, sphinx-basic-ng
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  sphinx,
+  beautifulsoup4,
+  sphinx-basic-ng,
 }:
 
 buildPythonPackage rec {
   pname = "furo";
-  version = "2024.1.29";
+  version = "2024.5.6";
   format = "wheel";
 
   disabled = pythonOlder "3.8";
@@ -19,16 +19,11 @@ buildPythonPackage rec {
     inherit pname version format;
     dist = "py3";
     python = "py3";
-    hash = "sha256-NUi+LO9Foy+M3AJy1BX8s+X6ag603f4h3z7PH+RaE88=";
+    hash = "sha256-SQoA0IwKN+zJDeA66SJ+jrXW9/dQ7fmAfzmKK98jWN4=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
-  pythonRelaxDeps = [
-    "sphinx"
-  ];
+  pythonRelaxDeps = [ "sphinx" ];
 
   propagatedBuildInputs = [
     sphinx
@@ -47,12 +42,10 @@ buildPythonPackage rec {
     cd -
   '';
 
-  pythonImportsCheck = [
-    "furo"
-  ];
+  pythonImportsCheck = [ "furo" ];
 
   meta = with lib; {
-    description = "A clean customizable documentation theme for Sphinx";
+    description = "Clean customizable documentation theme for Sphinx";
     homepage = "https://github.com/pradyunsg/furo";
     changelog = "https://github.com/pradyunsg/furo/blob/${version}/docs/changelog.md";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/fuse-python/default.nix b/pkgs/development/python-modules/fuse-python/default.nix
index 8bcb486a6311c..35eab496d91b1 100644
--- a/pkgs/development/python-modules/fuse-python/default.nix
+++ b/pkgs/development/python-modules/fuse-python/default.nix
@@ -1,4 +1,11 @@
-{ stdenv, lib, buildPythonPackage, fetchPypi, pkg-config, fuse }:
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pkg-config,
+  fuse,
+}:
 
 buildPythonPackage rec {
   pname = "fuse-python";
@@ -19,7 +26,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "fuse" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     description = "Python bindings for FUSE";
     homepage = "https://github.com/libfuse/python-fuse";
     license = licenses.lgpl21;
diff --git a/pkgs/development/python-modules/fusepy/default.nix b/pkgs/development/python-modules/fusepy/default.nix
index 8c51fcebe559d..6e33666d69516 100644
--- a/pkgs/development/python-modules/fusepy/default.nix
+++ b/pkgs/development/python-modules/fusepy/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pkgs
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pkgs,
 }:
 
 buildPythonPackage rec {
@@ -22,7 +23,7 @@ buildPythonPackage rec {
 
   # On macOS, users are expected to install macFUSE. This means fusepy should
   # be able to find libfuse in /usr/local/lib.
-  patchPhase = lib.optionalString (!stdenv.isDarwin) ''
+  patchPhase = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
     substituteInPlace fuse.py --replace \
       "find_library('fuse')" "'${pkgs.fuse}/lib/libfuse.so'"
   '';
@@ -37,5 +38,4 @@ buildPythonPackage rec {
     license = licenses.isc;
     platforms = platforms.unix;
   };
-
 }
diff --git a/pkgs/development/python-modules/future-fstrings/default.nix b/pkgs/development/python-modules/future-fstrings/default.nix
index 57cf42f38ab58..b9c347e647c43 100644
--- a/pkgs/development/python-modules/future-fstrings/default.nix
+++ b/pkgs/development/python-modules/future-fstrings/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+}:
 
 buildPythonPackage rec {
   pname = "future-fstrings";
@@ -16,7 +21,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/asottile/future-fstrings";
-    description = "A backport of fstrings to python<3.6";
+    description = "Backport of fstrings to python<3.6";
     mainProgram = "future-fstrings-show";
     license = licenses.mit;
     maintainers = with maintainers; [ nyanloutre ];
diff --git a/pkgs/development/python-modules/future-typing/default.nix b/pkgs/development/python-modules/future-typing/default.nix
index 04d4af30e07a4..291b26c8c4522 100644
--- a/pkgs/development/python-modules/future-typing/default.nix
+++ b/pkgs/development/python-modules/future-typing/default.nix
@@ -1,8 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/future/default.nix b/pkgs/development/python-modules/future/default.nix
index cc54a7744292a..47ed954e1b1a1 100644
--- a/pkgs/development/python-modules/future/default.nix
+++ b/pkgs/development/python-modules/future/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-vSloMJMHhh7a4UWKT4pPNZjAO+Q7l1IQdq6/XZTAewU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   pythonImportsCheck = [
     "future.builtins"
diff --git a/pkgs/development/python-modules/fuzzyfinder/default.nix b/pkgs/development/python-modules/fuzzyfinder/default.nix
index 76f7e977cc32e..f5f23158a3d80 100644
--- a/pkgs/development/python-modules/fuzzyfinder/default.nix
+++ b/pkgs/development/python-modules/fuzzyfinder/default.nix
@@ -1,26 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "fuzzyfinder";
-  version = "2.1.0";
-  format = "setuptools";
+  version = "2.2.0";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "c56d86f110866becad6690c7518f7036c20831c0f82fc87eba8fdb943132f04b";
+  src = fetchFromGitHub {
+    owner = "amjith";
+    repo = "fuzzyfinder";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-QWUABljgtzsZONl1klCrxEh0tPYodMOXokEb3YvWsyg=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "fuzzyfinder" ];
 
   meta = with lib; {
+    changelog = "https://github.com/amjith/fuzzyfinder/blob/${src.rev}/CHANGELOG.rst";
     description = "Fuzzy Finder implemented in Python";
     homepage = "https://github.com/amjith/fuzzyfinder";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/fuzzytm/default.nix b/pkgs/development/python-modules/fuzzytm/default.nix
index e7dae0d02ee19..3a86d0c553974 100644
--- a/pkgs/development/python-modules/fuzzytm/default.nix
+++ b/pkgs/development/python-modules/fuzzytm/default.nix
@@ -1,28 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, gensim
-, numpy
-, pandas
-, pyfume
-, scipy
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  gensim,
+  numpy,
+  pandas,
+  pyfume,
+  setuptools,
+  scipy,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "fuzzytm";
-  version = "2.0.5";
-  format = "setuptools";
+  version = "2.0.9";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     pname = "FuzzyTM";
     inherit version;
-    hash = "sha256-IELkjd3/yc2lBYsLP6mms9LEcXOfVtNNooEKCMf9BtU=";
+    hash = "sha256-z0ESYtB7BqssxIHlrd0F+/qapOM1nrDi3Zih5SvgDGY=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     gensim
     numpy
     pandas
@@ -33,9 +37,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "FuzzyTM"
-  ];
+  pythonImportsCheck = [ "FuzzyTM" ];
 
   meta = with lib; {
     description = "Library for Fuzzy Topic Models";
diff --git a/pkgs/development/python-modules/fuzzywuzzy/default.nix b/pkgs/development/python-modules/fuzzywuzzy/default.nix
index 79754a30a078b..c3681fb1da832 100644
--- a/pkgs/development/python-modules/fuzzywuzzy/default.nix
+++ b/pkgs/development/python-modules/fuzzywuzzy/default.nix
@@ -1,4 +1,12 @@
-{ lib, buildPythonPackage, fetchPypi, levenshtein, pycodestyle, hypothesis, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  levenshtein,
+  pycodestyle,
+  hypothesis,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "fuzzywuzzy";
@@ -11,7 +19,11 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [ levenshtein ];
-  nativeCheckInputs = [ pycodestyle hypothesis pytest ];
+  nativeCheckInputs = [
+    pycodestyle
+    hypothesis
+    pytest
+  ];
 
   meta = with lib; {
     description = "Fuzzy string matching for Python";
diff --git a/pkgs/development/python-modules/fvcore/default.nix b/pkgs/development/python-modules/fvcore/default.nix
index 884f50a0cb4ad..6d00d662b0550 100644
--- a/pkgs/development/python-modules/fvcore/default.nix
+++ b/pkgs/development/python-modules/fvcore/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-# build inputs
-, numpy
-, yacs
-, pyyaml
-, tqdm
-, termcolor
-, pillow
-, tabulate
-, iopath
-, shapely
-# check inputs
-, torch
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  # build inputs
+  numpy,
+  yacs,
+  pyyaml,
+  tqdm,
+  termcolor,
+  pillow,
+  tabulate,
+  iopath,
+  shapely,
+  # check inputs
+  torch,
 }:
 let
   pname = "fvcore";
@@ -44,20 +45,16 @@ buildPythonPackage {
     iopath
   ];
 
-  nativeCheckInputs = [
-    torch
-  ];
+  nativeCheckInputs = [ torch ];
 
   # TypeError: flop_count() missing 2 required positional arguments: 'model' and 'inputs'
   doCheck = false;
 
-  pythonImportsCheck = [
-    "fvcore"
-  ];
+  pythonImportsCheck = [ "fvcore" ];
 
   passthru.optional-dependencies = optional-dependencies;
 
-   meta = with lib; {
+  meta = with lib; {
     description = "Collection of common code that's shared among different research projects in FAIR computer vision team";
     homepage = "https://github.com/facebookresearch/fvcore";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/fvs/default.nix b/pkgs/development/python-modules/fvs/default.nix
index 8a8df6b325ace..5298a51a84403 100644
--- a/pkgs/development/python-modules/fvs/default.nix
+++ b/pkgs/development/python-modules/fvs/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, orjson}:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  orjson,
+}:
 
 buildPythonPackage rec {
   pname = "fvs";
@@ -12,16 +17,12 @@ buildPythonPackage rec {
     hash = "sha256-yYd0HzdwbqB9kexJjBRRYmdsoWtZtcjCNRz0ZJVM5CI=";
   };
 
-  propagatedBuildInputs = [
-    orjson
-  ];
+  propagatedBuildInputs = [ orjson ];
 
   # no tests in src
   doCheck = false;
 
-  pythonImportsCheck = [
-    "fvs"
-  ];
+  pythonImportsCheck = [ "fvs" ];
 
   meta = with lib; {
     description = "File Versioning System with hash comparison and data storage to create unlinked states that can be deleted";
diff --git a/pkgs/development/python-modules/fx2/default.nix b/pkgs/development/python-modules/fx2/default.nix
index 3fa79dbe3f1c7..7e99404d942a0 100644
--- a/pkgs/development/python-modules/fx2/default.nix
+++ b/pkgs/development/python-modules/fx2/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, python
-, fetchFromGitHub
-, sdcc
-, libusb1
-, crcmod
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  sdcc,
+  libusb1,
+  setuptools-scm,
+  crcmod,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,15 @@ buildPythonPackage rec {
     hash = "sha256-PtWxjT+97+EeNMN36zOT1+ost/w3lRRkaON3Cl3dpp4=";
   };
 
-  nativeBuildInputs = [ sdcc ];
+  nativeBuildInputs = [
+    setuptools-scm
+    sdcc
+  ];
 
-  propagatedBuildInputs = [ libusb1 crcmod ];
+  propagatedBuildInputs = [
+    libusb1
+    crcmod
+  ];
 
   preBuild = ''
     make -C firmware
@@ -42,6 +49,6 @@ buildPythonPackage rec {
     mainProgram = "fx2tool";
     homepage = "https://github.com/whitequark/libfx2";
     license = licenses.bsd0;
-    maintainers = with maintainers; [ emily ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/fyta-cli/default.nix b/pkgs/development/python-modules/fyta-cli/default.nix
index 7e0b2971be508..e3cf900417ac0 100644
--- a/pkgs/development/python-modules/fyta-cli/default.nix
+++ b/pkgs/development/python-modules/fyta-cli/default.nix
@@ -1,35 +1,49 @@
 {
   lib,
   aiohttp,
+  aioresponses,
   buildPythonPackage,
   fetchFromGitHub,
   hatchling,
+  mashumaro,
+  pytest-asyncio,
+  pytestCheckHook,
   pythonOlder,
+  syrupy,
 }:
 
 buildPythonPackage rec {
   pname = "fyta-cli";
-  version = "0.4.0";
+  version = "0.6.6";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "dontinelli";
     repo = "fyta_cli";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ThxC+s0vkvFQw9FKMWO+cHJB1ci+USdxQa4PRqHrKLM=";
+    hash = "sha256-yuTfrWiGxoiEmQ1zaYM2ZrlrssZ+hCupPxar9SUP4uU=";
   };
 
   build-system = [ hatchling ];
 
-  dependencies = [ aiohttp ];
+  dependencies = [
+    aiohttp
+    mashumaro
+  ];
 
-  # Module has no tests
-  doCheck = false;
+  nativeCheckInputs = [
+    aioresponses
+    pytest-asyncio
+    pytestCheckHook
+    syrupy
+  ];
 
   pythonImportsCheck = [ "fyta_cli" ];
 
+  pytestFlagsArray = [ "--snapshot-update" ];
+
   meta = with lib; {
     description = "Module to access the FYTA API";
     homepage = "https://github.com/dontinelli/fyta_cli";
diff --git a/pkgs/development/python-modules/g2pkk/default.nix b/pkgs/development/python-modules/g2pkk/default.nix
index 98e03806d2ff2..31246604cfb8e 100644
--- a/pkgs/development/python-modules/g2pkk/default.nix
+++ b/pkgs/development/python-modules/g2pkk/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jamo
-, nltk
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jamo,
+  nltk,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     nltk
   ];
 
-  pythonImportsCheck = [
-    "g2pkk"
-  ];
+  pythonImportsCheck = [ "g2pkk" ];
 
   doCheck = false;
 
@@ -33,4 +32,3 @@ buildPythonPackage rec {
     maintainers = teams.tts.members;
   };
 }
-
diff --git a/pkgs/development/python-modules/galois/default.nix b/pkgs/development/python-modules/galois/default.nix
index 8c927b96019f4..50999a139bf01 100644
--- a/pkgs/development/python-modules/galois/default.nix
+++ b/pkgs/development/python-modules/galois/default.nix
@@ -1,20 +1,20 @@
-{ lib
-, buildPythonPackage
-, setuptools-scm
-, pythonOlder
-, pythonRelaxDepsHook
-, fetchFromGitHub
-, pytestCheckHook
-, pytest-xdist
-, numpy
-, numba
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  setuptools-scm,
+  pythonOlder,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pytest-xdist,
+  numpy,
+  numba,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "galois";
-  version = "0.3.8";
-  format = "pyproject";
+  version = "0.4.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -22,15 +22,17 @@ buildPythonPackage rec {
     owner = "mhostetter";
     repo = "galois";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Nfr9gD2FLZ+KvHh1mcpReUWnzFr/NxpvperzZPoFeT4=";
+    hash = "sha256-DbmrrNw7XwTL4i6pJIfkBOUs+KGEmdV2FmQa1xfOHYU=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-    pythonRelaxDepsHook
+  pythonRelaxDeps = [
+    "numpy"
+    "numba"
   ];
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools-scm ];
+
+  dependencies = [
     numpy
     numba
     typing-extensions
@@ -41,8 +43,6 @@ buildPythonPackage rec {
     pytest-xdist
   ];
 
-  pythonRelaxDeps = [ "numpy" "numba" ];
-
   pythonImportsCheck = [ "galois" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/gamble/default.nix b/pkgs/development/python-modules/gamble/default.nix
index 6cdfc4410b34e..4f39dd06556be 100644
--- a/pkgs/development/python-modules/gamble/default.nix
+++ b/pkgs/development/python-modules/gamble/default.nix
@@ -1,29 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
   pname = "gamble";
-  version = "0.11";
-  format = "setuptools";
+  version = "0.14.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.10";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-zsEBqhKidgO1e0lpKhw+LY75I2Df+IefNLaSkBBFKFU=";
+  src = fetchFromGitHub {
+    owner = "jpetrucciani";
+    repo = "gamble";
+    rev = "refs/tags/${version}";
+    hash = "sha256-vzaY5gJ0Ou2ArUJ0kuTWzTeLfiRDhUt/Hxpns9rFiDk=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  build-system = [ poetry-core ];
 
-  pythonImportsCheck = [
-    "gamble"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "gamble" ];
 
   meta = with lib; {
     description = "Collection of gambling classes/tools";
diff --git a/pkgs/development/python-modules/gaphas/default.nix b/pkgs/development/python-modules/gaphas/default.nix
index 479d51683023e..3742f02083d54 100644
--- a/pkgs/development/python-modules/gaphas/default.nix
+++ b/pkgs/development/python-modules/gaphas/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, poetry-core
-, gobject-introspection
-, gtk3
-, pycairo
-, pygobject3
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  poetry-core,
+  gobject-introspection,
+  gtk3,
+  pycairo,
+  pygobject3,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "gaphas";
-  version = "4.0.0";
+  version = "4.1.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-x4CVY2i/SCjq/c1Xfx3gdx7jTims1aKd05ziN4DdE1g=";
+    hash = "sha256-cZ25AJliym2D9SOJAg9wrAIGp32gz3aTPNGRijlT1eo=";
   };
 
   nativeBuildInputs = [
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     gobject-introspection
   ];
 
-  buildInputs = [
-    gtk3
-  ];
+  buildInputs = [ gtk3 ];
 
   propagatedBuildInputs = [
     pycairo
@@ -37,15 +36,13 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  pythonImportsCheck = [
-    "gaphas"
-  ];
+  pythonImportsCheck = [ "gaphas" ];
 
   meta = with lib; {
     description = "GTK+ based diagramming widget";
     homepage = "https://github.com/gaphor/gaphas";
     changelog = "https://github.com/gaphor/gaphas/releases/tag/${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ wolfangaukang ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/gardena-bluetooth/default.nix b/pkgs/development/python-modules/gardena-bluetooth/default.nix
index fb71990c99dfb..38ad47244f225 100644
--- a/pkgs/development/python-modules/gardena-bluetooth/default.nix
+++ b/pkgs/development/python-modules/gardena-bluetooth/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, asyncclick
-, bleak
-, bleak-retry-connector
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, tzlocal
+{
+  lib,
+  asyncclick,
+  bleak,
+  bleak-retry-connector,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  tzlocal,
 }:
 
 buildPythonPackage rec {
   pname = "gardena-bluetooth";
-  version = "1.4.1";
+  version = "1.4.3";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -22,23 +23,19 @@ buildPythonPackage rec {
     owner = "elupus";
     repo = "gardena-bluetooth";
     rev = "refs/tags/${version}";
-    hash = "sha256-WnurxoSzzNTNxz6S1HSKb/lTuOyox6fG2I0Hlj95Ub0=";
+    hash = "sha256-H2v96G/mu17puq8jNyk6L9iuWUvRombPd+s6byNQ4Zw=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     bleak
     bleak-retry-connector
     tzlocal
   ];
 
   passthru.optional-dependencies = {
-    cli = [
-      asyncclick
-     ];
+    cli = [ asyncclick ];
   };
 
   nativeCheckInputs = [
@@ -46,9 +43,7 @@ buildPythonPackage rec {
     pytest-asyncio
   ];
 
-  pythonImportsCheck = [
-    "gardena_bluetooth"
-  ];
+  pythonImportsCheck = [ "gardena_bluetooth" ];
 
   meta = with lib; {
     description = "Module for interacting with Gardena Bluetooth";
diff --git a/pkgs/development/python-modules/garminconnect-aio/default.nix b/pkgs/development/python-modules/garminconnect-aio/default.nix
index abdd1f9f2f26b..362ffd393e4e6 100644
--- a/pkgs/development/python-modules/garminconnect-aio/default.nix
+++ b/pkgs/development/python-modules/garminconnect-aio/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, brotlipy
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  brotlipy,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "garminconnect_aio"
-  ];
+  pythonImportsCheck = [ "garminconnect_aio" ];
 
   meta = with lib; {
     description = "Python module to interact with Garmin Connect";
diff --git a/pkgs/development/python-modules/garminconnect/default.nix b/pkgs/development/python-modules/garminconnect/default.nix
index 8ca9ec7ba7d38..1d1585521b233 100644
--- a/pkgs/development/python-modules/garminconnect/default.nix
+++ b/pkgs/development/python-modules/garminconnect/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "garminconnect";
-  version = "0.2.17";
+  version = "0.2.19";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "cyberjunky";
     repo = "python-garminconnect";
     rev = "refs/tags/${version}";
-    hash = "sha256-F853wLzcqD+cQdPdvgGcItL+v8nBPoRYSyLgOJ5ld1A=";
+    hash = "sha256-v3Z6cUHqE52BJUgfyWMojwdbxWIEyNR8c/oNS9QEFeA=";
   };
 
   build-system = [ pdm-backend ];
diff --git a/pkgs/development/python-modules/garth/default.nix b/pkgs/development/python-modules/garth/default.nix
index c3e6bae9ed42c..5ab18ebb69054 100644
--- a/pkgs/development/python-modules/garth/default.nix
+++ b/pkgs/development/python-modules/garth/default.nix
@@ -1,32 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pdm-backend
-, pydantic
-, pytest-vcr
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-oauthlib
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pdm-backend,
+  pydantic,
+  pytest-vcr,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-oauthlib,
 }:
 
 buildPythonPackage rec {
   pname = "garth";
-  version = "0.4.45";
+  version = "0.4.46";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-dN4WQZ2FLkyqCGYFBICodHR7yBdrLvx4NE6OqB0SgZo=";
+    hash = "sha256-WuGeZ2EggyhbEDIbjg4ffIFaj2DyHi8Tvowhoi5k2Os=";
   };
 
-  nativeBuildInputs = [
-    pdm-backend
-  ];
+  pythonRelaxDeps = [ "requests-oauthlib" ];
+
+  build-system = [ pdm-backend ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pydantic
     requests
     requests-oauthlib
@@ -37,9 +38,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "garth"
-  ];
+  pythonImportsCheck = [ "garth" ];
 
   disabledTests = [
     # Tests require network access
diff --git a/pkgs/development/python-modules/gassist-text/default.nix b/pkgs/development/python-modules/gassist-text/default.nix
index a8e7b14de8925..bbd02fd31a54f 100644
--- a/pkgs/development/python-modules/gassist-text/default.nix
+++ b/pkgs/development/python-modules/gassist-text/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchFromGitHub
-, google-auth
-, grpcio
-, protobuf
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitHub,
+  google-auth,
+  grpcio,
+  protobuf,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-XFHyI48TuPBJjHA4dLSpYv62Y5zK0knrIqNKBoWnEeU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     beautifulsoup4
@@ -37,13 +36,9 @@ buildPythonPackage rec {
     requests
   ];
 
-  checkInputs = [
-    pytestCheckHook
-  ];
+  checkInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "gassist_text"
-  ];
+  pythonImportsCheck = [ "gassist_text" ];
 
   meta = with lib; {
     description = "Module for interacting with Google Assistant API via text";
diff --git a/pkgs/development/python-modules/gast/default.nix b/pkgs/development/python-modules/gast/default.nix
index 32e4df0ae1976..d62c2bc4cd418 100644
--- a/pkgs/development/python-modules/gast/default.nix
+++ b/pkgs/development/python-modules/gast/default.nix
@@ -1,38 +1,43 @@
-{ lib
-, astunparse
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  astunparse,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "gast";
-  version = "0.5.3";
-  format = "setuptools";
+  version = "0.6.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "serge-sans-paille";
-    repo = pname;
-    rev = version;
-    hash = "sha256-0y2bHT7YEfTvDxTm6yLl3GmnPUYEieoGEnwkzfA6mOg=";
+    repo = "gast";
+    rev = "refs/tags/${version}";
+    hash = "sha256-zrbxW8qWhCY6tObP+/WDReoCnlCpMEzQucX2inpRTL4=";
   };
 
+  build-system = [ setuptools ];
+
   nativeCheckInputs = [
     astunparse
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "gast"
-  ];
+  pythonImportsCheck = [ "gast" ];
 
-  meta = with lib; {
+  meta = {
     description = "Compatibility layer between the AST of various Python versions";
     homepage = "https://github.com/serge-sans-paille/gast/";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ jyp cpcloud ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [
+      jyp
+      cpcloud
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/gatt/default.nix b/pkgs/development/python-modules/gatt/default.nix
index 9543aa6a5e04c..5a928d5c79914 100644
--- a/pkgs/development/python-modules/gatt/default.nix
+++ b/pkgs/development/python-modules/gatt/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, dbus-python
-, pygobject3
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  dbus-python,
+  pygobject3,
 }:
 
 buildPythonPackage rec {
@@ -29,6 +30,6 @@ buildPythonPackage rec {
     mainProgram = "gattctl";
     homepage = "https://github.com/getsenic/gatt-python/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/gattlib/default.nix b/pkgs/development/python-modules/gattlib/default.nix
index c7450d6b6b5b8..370b773c8934c 100644
--- a/pkgs/development/python-modules/gattlib/default.nix
+++ b/pkgs/development/python-modules/gattlib/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, substituteAll
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  substituteAll,
 
-# build
-, pkg-config
-, glibc
-, python
+  # build
+  pkg-config,
+  glibc,
+  python,
 
-# runtime
-, bluez
-, boost
-, glib
+  # runtime
+  bluez,
+  boost,
+  glib,
 
 }:
 
@@ -23,7 +24,6 @@ buildPythonPackage {
   inherit pname version;
   format = "setuptools";
 
-
   src = fetchFromGitHub {
     owner = "oscaracena";
     repo = "pygattlib";
@@ -34,9 +34,10 @@ buildPythonPackage {
   patches = [
     (substituteAll {
       src = ./setup.patch;
-      boost_version = let
-        pythonVersion = with lib.versions; "${major python.version}${minor python.version}";
-      in
+      boost_version =
+        let
+          pythonVersion = with lib.versions; "${major python.version}${minor python.version}";
+        in
         "boost_python${pythonVersion}";
     })
   ];
@@ -55,9 +56,7 @@ buildPythonPackage {
   # has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "gattlib"
-  ];
+  pythonImportsCheck = [ "gattlib" ];
 
   meta = with lib; {
     description = "Python library to use the GATT Protocol for Bluetooth LE devices";
diff --git a/pkgs/development/python-modules/gawd/default.nix b/pkgs/development/python-modules/gawd/default.nix
index 3fee09a5d5b56..b3afe56d9daf1 100644
--- a/pkgs/development/python-modules/gawd/default.nix
+++ b/pkgs/development/python-modules/gawd/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, ruamel-yaml
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  ruamel-yaml,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -24,13 +25,9 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    ruamel-yaml
-  ];
+  propagatedBuildInputs = [ ruamel-yaml ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "gawd" ];
 
diff --git a/pkgs/development/python-modules/gb-io/default.nix b/pkgs/development/python-modules/gb-io/default.nix
index ab12d42d77c4a..233d12f3eac6c 100644
--- a/pkgs/development/python-modules/gb-io/default.nix
+++ b/pkgs/development/python-modules/gb-io/default.nix
@@ -1,12 +1,13 @@
-{ stdenv
-, lib
-, fetchFromGitHub
-, buildPythonPackage
-, rustPlatform
-, cargo
-, rustc
-, setuptools-rust
-, unittestCheckHook
+{
+  stdenv,
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  rustPlatform,
+  cargo,
+  rustc,
+  setuptools-rust,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -41,9 +42,9 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "gb_io" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     homepage = "https://github.com/althonos/gb-io.py";
-    description = "A Python interface to gb-io, a fast GenBank parser written in Rust";
+    description = "Python interface to gb-io, a fast GenBank parser written in Rust";
     license = licenses.mit;
     maintainers = with lib.maintainers; [ dlesl ];
   };
diff --git a/pkgs/development/python-modules/gbinder-python/default.nix b/pkgs/development/python-modules/gbinder-python/default.nix
index bb64e0c5e6a89..d5ba3d6ad82c0 100644
--- a/pkgs/development/python-modules/gbinder-python/default.nix
+++ b/pkgs/development/python-modules/gbinder-python/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, cython_0
-, pkg-config
-, libgbinder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  cython_0,
+  pkg-config,
+  libgbinder,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     sha256 = "1X9gAux9w/mCEVmE3Yqvvq3kU7hu4iAFaZWNZZZxt3E=";
   };
 
-  buildInputs = [
-    libgbinder
-  ];
+  buildInputs = [ libgbinder ];
 
   nativeBuildInputs = [
     cython_0
diff --git a/pkgs/development/python-modules/gbulb/default.nix b/pkgs/development/python-modules/gbulb/default.nix
index d36d1182f55ff..7dd4d3a2c1267 100644
--- a/pkgs/development/python-modules/gbulb/default.nix
+++ b/pkgs/development/python-modules/gbulb/default.nix
@@ -1,29 +1,37 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, pygobject3
-, pytestCheckHook
-, gtk3
-, gobject-introspection
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  pygobject3,
+  pytestCheckHook,
+  gtk3,
+  gobject-introspection,
 }:
 
 buildPythonPackage rec {
   pname = "gbulb";
-  version = "0.6.4";
-  format = "setuptools";
+  version = "0.6.5";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "beeware";
     repo = "gbulb";
     rev = "refs/tags/v${version}";
-    hash = "sha256-AdZSvxix0cpoFQSrslGl+hB/s6Nh0EsWMQmXZAJVJOg=";
+    hash = "sha256-03Ott+V3Y4+Y72Llsug5coqG3C+pjAdLkPYbaY/6Uow=";
   };
 
-  propagatedBuildInputs = [
-    pygobject3
-    gtk3
-  ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "==" ">="
+  '';
+
+  build-system = [ setuptools-scm ];
+
+  dependencies = [ pygobject3 ];
+
+  buildInputs = [ gtk3 ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -37,7 +45,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "gbulb" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     description = "GLib implementation of PEP 3156";
     homepage = "https://github.com/beeware/gbulb";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/gcal-sync/default.nix b/pkgs/development/python-modules/gcal-sync/default.nix
index 7a2ce7e511971..2c42a1008ad1b 100644
--- a/pkgs/development/python-modules/gcal-sync/default.nix
+++ b/pkgs/development/python-modules/gcal-sync/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, freezegun
-, ical
-, pydantic
-, pytest-aiohttp
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  ical,
+  pydantic,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "gcal-sync";
-  version = "6.0.4";
+  version = "6.1.4";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -23,12 +24,10 @@ buildPythonPackage rec {
     owner = "allenporter";
     repo = "gcal_sync";
     rev = "refs/tags/${version}";
-    hash = "sha256-ufoe9+4zhlixcSGMAhuhJx2Y2vrN036N8UvyP3xuTRQ=";
+    hash = "sha256-aKLuv/hH9ZVM8WeUwCtJ6BB2/aQh6NHJKh890hR23eM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -45,9 +44,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "gcal_sync"
-  ];
+  pythonImportsCheck = [ "gcal_sync" ];
 
   meta = with lib; {
     description = "Library for syncing Google Calendar to local storage";
diff --git a/pkgs/development/python-modules/gcodepy/default.nix b/pkgs/development/python-modules/gcodepy/default.nix
index 51f32d2022414..6e62d9bb3bf67 100644
--- a/pkgs/development/python-modules/gcodepy/default.nix
+++ b/pkgs/development/python-modules/gcodepy/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -16,13 +17,9 @@ buildPythonPackage rec {
     hash = "sha256-+amBkwwISPyes8ABdqgCw50Zg5ioDa46WZgQsZZgl+8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "gcodepy"
-  ];
+  pythonImportsCheck = [ "gcodepy" ];
 
   meta = with lib; {
     description = "G-code generator for 3D printers that use Marlin Firmware";
diff --git a/pkgs/development/python-modules/gcovr/default.nix b/pkgs/development/python-modules/gcovr/default.nix
index 7b8b32b2c5de2..c6ec91b5946b9 100644
--- a/pkgs/development/python-modules/gcovr/default.nix
+++ b/pkgs/development/python-modules/gcovr/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, colorlog
-, jinja2
-, lxml
-, pygments
-, pythonOlder
-, tomli
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  colorlog,
+  jinja2,
+  lxml,
+  pygments,
+  pythonOlder,
+  tomli,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     jinja2
     lxml
     pygments
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   # There are no unit tests in the pypi tarball. Most of the unit tests on the
   # github repository currently only work with gcc5, so we just disable them.
@@ -40,12 +39,12 @@ buildPythonPackage rec {
     "gcovr.configuration"
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Python script for summarizing gcov data";
     mainProgram = "gcovr";
     homepage = "https://www.gcovr.com/";
     changelog = "https://github.com/gcovr/gcovr/blob/${version}/CHANGELOG.rst";
-    license = licenses.bsd0;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.bsd0;
+    maintainers = with lib.maintainers; [ sigmanificient ];
   };
 }
diff --git a/pkgs/development/python-modules/gcs-oauth2-boto-plugin/default.nix b/pkgs/development/python-modules/gcs-oauth2-boto-plugin/default.nix
deleted file mode 100644
index 85e18fb12499a..0000000000000
--- a/pkgs/development/python-modules/gcs-oauth2-boto-plugin/default.nix
+++ /dev/null
@@ -1,66 +0,0 @@
-{ lib
-, boto
-, buildPythonPackage
-, fasteners
-, fetchFromGitHub
-, freezegun
-, google-reauth
-, httplib2
-, oauth2client
-, pyopenssl
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, retry-decorator
-, rsa
-, six
-}:
-
-buildPythonPackage rec {
-  pname = "gcs-oauth2-boto-plugin";
-  version = "3.0";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.7";
-
-  src = fetchFromGitHub {
-    owner = "GoogleCloudPlatform";
-    repo = pname;
-    rev = "refs/tags/v${version}";
-    hash = "sha256-slTxh2j9VhLiSyiTmJIFFakzpzH/+mgilDRxx0VqqKQ=";
-  };
-
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "rsa==4.7.2" "rsa" \
-      --replace "version='2.7'" "version='${version}'"
-  '';
-
-  propagatedBuildInputs = [
-    boto
-    freezegun
-    google-reauth
-    httplib2
-    oauth2client
-    pyopenssl
-    retry-decorator
-    rsa
-    six
-  ];
-
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-
-  pythonImportsCheck = [
-    "gcs_oauth2_boto_plugin"
-  ];
-
-  meta = with lib; {
-    description = "Auth plugin allowing use the use of OAuth 2.0 credentials for Google Cloud Storage";
-    homepage = "https://github.com/GoogleCloudPlatform/gcs-oauth2-boto-plugin";
-    changelog = "https://github.com/GoogleCloudPlatform/gcs-oauth2-boto-plugin/releases/tag/v${version}";
-    license = with licenses; [ asl20 ];
-    maintainers = with maintainers; [ fab ];
-  };
-}
diff --git a/pkgs/development/python-modules/gcsa/default.nix b/pkgs/development/python-modules/gcsa/default.nix
index c4ffcabeb94de..c487881f92b45 100644
--- a/pkgs/development/python-modules/gcsa/default.nix
+++ b/pkgs/development/python-modules/gcsa/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, pyfakefs
-, tzlocal
-, google-api-python-client
-, google-auth-httplib2
-, google-auth-oauthlib
-, python-dateutil
-, beautiful-date
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  pyfakefs,
+  tzlocal,
+  google-api-python-client,
+  google-auth-httplib2,
+  google-auth-oauthlib,
+  python-dateutil,
+  beautiful-date,
 }:
 
 buildPythonPackage rec {
@@ -34,7 +35,10 @@ buildPythonPackage rec {
     beautiful-date
   ];
 
-  nativeCheckInputs = [ pytestCheckHook pyfakefs ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pyfakefs
+  ];
   pythonImportsCheck = [ "gcsa" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/gcsfs/default.nix b/pkgs/development/python-modules/gcsfs/default.nix
index 71d52947b0c4f..2cc70ba25e1bf 100644
--- a/pkgs/development/python-modules/gcsfs/default.nix
+++ b/pkgs/development/python-modules/gcsfs/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, google-auth
-, google-auth-oauthlib
-, google-cloud-storage
-, requests
-, decorator
-, fsspec
-, ujson
-, aiohttp
-, crcmod
-, pytest-timeout
-, pytest-vcr
-, vcrpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  google-auth,
+  google-auth-oauthlib,
+  google-cloud-storage,
+  requests,
+  decorator,
+  fsspec,
+  ujson,
+  aiohttp,
+  crcmod,
+  pytest-timeout,
+  pytest-vcr,
+  vcrpy,
 }:
 
 buildPythonPackage rec {
@@ -50,7 +51,7 @@ buildPythonPackage rec {
     vcrpy
   ];
 
-  disabledTests =[
+  disabledTests = [
     # Cannot connect to host storage.googleapis.com:443
     "test_credentials_from_raw_token"
   ];
@@ -64,13 +65,9 @@ buildPythonPackage rec {
     "gcsfs/tests/test_inventory_report_listing.py"
   ];
 
-  pytestFlagsArray = [
-    "-x"
-  ];
+  pytestFlagsArray = [ "-x" ];
 
-  pythonImportsCheck = [
-    "gcsfs"
-  ];
+  pythonImportsCheck = [ "gcsfs" ];
 
   meta = with lib; {
     description = "Convenient Filesystem interface over GCS";
diff --git a/pkgs/development/python-modules/gdata/default.nix b/pkgs/development/python-modules/gdata/default.nix
index bb334d63435b7..e572a20f30f63 100644
--- a/pkgs/development/python-modules/gdata/default.nix
+++ b/pkgs/development/python-modules/gdata/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchurl
+{
+  lib,
+  buildPythonPackage,
+  fetchurl,
 }:
 
 buildPythonPackage rec {
@@ -21,5 +22,4 @@ buildPythonPackage rec {
     description = "Python client library for Google data APIs";
     license = licenses.asl20;
   };
-
 }
diff --git a/pkgs/development/python-modules/gdb-pt-dump/default.nix b/pkgs/development/python-modules/gdb-pt-dump/default.nix
index 5687828e9e503..591583510cd8c 100644
--- a/pkgs/development/python-modules/gdb-pt-dump/default.nix
+++ b/pkgs/development/python-modules/gdb-pt-dump/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/gdown/default.nix b/pkgs/development/python-modules/gdown/default.nix
index 1b0b3aa70b92a..610a99aeaf894 100644
--- a/pkgs/development/python-modules/gdown/default.nix
+++ b/pkgs/development/python-modules/gdown/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchPypi
-, hatchling
-, hatch-vcs
-, hatch-fancy-pypi-readme
-, filelock
-, requests
-, tqdm
-, setuptools
-, six
-, pythonOlder
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  hatch-vcs,
+  hatch-fancy-pypi-readme,
+  filelock,
+  requests,
+  tqdm,
+  setuptools,
+  six,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "gdown";
-  version = "5.1.0";
+  version = "5.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-VQpy3FyigZ/kvMFdgNBdfJjAuQ5XJWJUt30CVrnfRoM=";
+    hash = "sha256-IUUWUGLYVSCjzZizVsntUixeeYTUCFNUCf1G+U3vx4c=";
   };
 
   build-system = [
@@ -44,12 +45,10 @@ buildPythonPackage rec {
     $out/bin/gdown --help > /dev/null
   '';
 
-  pythonImportsCheck = [
-    "gdown"
-  ];
+  pythonImportsCheck = [ "gdown" ];
 
   meta = with lib; {
-    description = "A CLI tool for downloading large files from Google Drive";
+    description = "CLI tool for downloading large files from Google Drive";
     mainProgram = "gdown";
     homepage = "https://github.com/wkentaro/gdown";
     changelog = "https://github.com/wkentaro/gdown/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/ge25519/default.nix b/pkgs/development/python-modules/ge25519/default.nix
index 60bc2b5dbba13..d3e92913b1283 100644
--- a/pkgs/development/python-modules/ge25519/default.nix
+++ b/pkgs/development/python-modules/ge25519/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, bitlist
-, buildPythonPackage
-, fe25519
-, fetchPypi
-, fountains
-, parts
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  bitlist,
+  buildPythonPackage,
+  fe25519,
+  fetchPypi,
+  fountains,
+  parts,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -35,18 +36,14 @@ buildPythonPackage rec {
     fountains
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace "--doctest-modules --ignore=docs --cov=ge25519 --cov-report term-missing" ""
   '';
 
-  pythonImportsCheck = [
-    "ge25519"
-  ];
+  pythonImportsCheck = [ "ge25519" ];
 
   meta = with lib; {
     description = "Python implementation of Ed25519 group elements and operations";
diff --git a/pkgs/development/python-modules/geeknote/default.nix b/pkgs/development/python-modules/geeknote/default.nix
index a0ee274beabb5..1aeeabd92f295 100644
--- a/pkgs/development/python-modules/geeknote/default.nix
+++ b/pkgs/development/python-modules/geeknote/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy27
-, thrift
-, beautifulsoup4
-, markdown2
-, sqlalchemy
-, html2text
-, evernote
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  thrift,
+  beautifulsoup4,
+  markdown2,
+  sqlalchemy,
+  html2text,
+  evernote,
 }:
 
 buildPythonPackage {
   version = "2015-05-11";
   format = "setuptools";
   pname = "geeknote";
-  disabled = ! isPy27;
+  disabled = !isPy27;
 
   src = fetchFromGitHub {
     owner = "VitaliyRodnenko";
@@ -23,11 +24,20 @@ buildPythonPackage {
     sha256 = "0l16v4xnyqnsf84b1pma0jmdyxvmfwcv3sm8slrv3zv7zpmcm3lf";
   };
 
-  /* build with tests fails with "Can not create application dirictory :
-   /homeless-shelter/.geeknotebuilder". */
+  /*
+    build with tests fails with "Can not create application dirictory :
+    /homeless-shelter/.geeknotebuilder".
+  */
   doCheck = false;
 
-  propagatedBuildInputs = [ thrift beautifulsoup4 markdown2 sqlalchemy html2text evernote ];
+  propagatedBuildInputs = [
+    thrift
+    beautifulsoup4
+    markdown2
+    sqlalchemy
+    html2text
+    evernote
+  ];
 
   meta = with lib; {
     description = "Work with Evernote from command line";
@@ -35,5 +45,4 @@ buildPythonPackage {
     license = licenses.gpl1Only;
     maintainers = with maintainers; [ hbunke ];
   };
-
 }
diff --git a/pkgs/development/python-modules/gehomesdk/default.nix b/pkgs/development/python-modules/gehomesdk/default.nix
index 62fca9823a12c..84e5eea815831 100644
--- a/pkgs/development/python-modules/gehomesdk/default.nix
+++ b/pkgs/development/python-modules/gehomesdk/default.nix
@@ -1,34 +1,33 @@
-{ lib
-, aiohttp
-, bidict
-, buildPythonPackage
-, fetchPypi
-, humanize
-, lxml
-, pythonOlder
-, requests
-, setuptools
-, slixmpp
-, websockets
+{
+  lib,
+  aiohttp,
+  bidict,
+  buildPythonPackage,
+  fetchPypi,
+  humanize,
+  lxml,
+  pythonOlder,
+  requests,
+  setuptools,
+  slixmpp,
+  websockets,
 }:
 
 buildPythonPackage rec {
   pname = "gehomesdk";
-  version = "0.5.27";
+  version = "0.5.28";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-H76y784lYzETgq5XSsQOSGka/kvM+hyMHzUHEJuXTuk=";
+    hash = "sha256-TAPuP0VFhKuWDzko/+Upq6GDGZJO9y6GuuV6GsSqi2I=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     bidict
     humanize
@@ -42,16 +41,14 @@ buildPythonPackage rec {
   # https://github.com/simbaja/gehome/issues/32
   doCheck = false;
 
-  pythonImportsCheck = [
-    "gehomesdk"
-  ];
+  pythonImportsCheck = [ "gehomesdk" ];
 
   meta = with lib; {
     description = "Python SDK for GE smart appliances";
-    mainProgram = "gehome-appliance-data";
     homepage = "https://github.com/simbaja/gehome";
     changelog = "https://github.com/simbaja/gehome/blob/master/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "gehome-appliance-data";
   };
 }
diff --git a/pkgs/development/python-modules/gekitchen/default.nix b/pkgs/development/python-modules/gekitchen/default.nix
index a06dada36dc77..615be02d17858 100644
--- a/pkgs/development/python-modules/gekitchen/default.nix
+++ b/pkgs/development/python-modules/gekitchen/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiohttp
-, bidict
-, buildPythonPackage
-, fetchFromGitHub
-, humanize
-, lxml
-, pytestCheckHook
-, pythonOlder
-, requests
-, slixmpp
-, websockets
+{
+  lib,
+  aiohttp,
+  bidict,
+  buildPythonPackage,
+  fetchFromGitHub,
+  humanize,
+  lxml,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  slixmpp,
+  websockets,
 }:
 
 buildPythonPackage rec {
@@ -36,13 +37,9 @@ buildPythonPackage rec {
     websockets
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "gekitchen"
-  ];
+  pythonImportsCheck = [ "gekitchen" ];
 
   meta = with lib; {
     description = "Python SDK for GE smart appliances";
diff --git a/pkgs/development/python-modules/gekko/default.nix b/pkgs/development/python-modules/gekko/default.nix
index d62c1f3dbfd1b..1a4461a1b472c 100644
--- a/pkgs/development/python-modules/gekko/default.nix
+++ b/pkgs/development/python-modules/gekko/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "gekko";
-  version = "1.1.1";
+  version = "1.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-xc6NfPCvkEYjUG82QmFqDuu02QNwKfoS6DDpkdaMWJ8=";
+    hash = "sha256-a3Iy61B3JddLeEilaa5Z0smQepjkfyNr4mOCEx+1LlM=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/gemfileparser/default.nix b/pkgs/development/python-modules/gemfileparser/default.nix
index e6b91d24f804e..057898dded4e0 100644
--- a/pkgs/development/python-modules/gemfileparser/default.nix
+++ b/pkgs/development/python-modules/gemfileparser/default.nix
@@ -1,31 +1,38 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
+
 buildPythonPackage rec {
   pname = "gemfileparser";
   version = "0.8.0";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "839592e49ea3fd985cec003ef58f8e77009a69ed7644a0c0acc94cf6dd9b8d6e";
+    hash = "sha256-g5WS5J6j/Zhc7AA+9Y+OdwCaae12RKDArMlM9t2bjW4=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "gemfileparser"
-  ];
+  pythonImportsCheck = [ "gemfileparser" ];
 
   meta = with lib; {
-    description = "A library to parse Ruby Gemfile, .gemspec and Cocoapod .podspec file using Python";
-    mainProgram = "parsegemfile";
+    description = "Library to parse Ruby Gemfile, .gemspec and Cocoapod .podspec file using Python";
     homepage = "https://github.com/gemfileparser/gemfileparser";
-    license = with licenses; [ gpl3Plus /* or */ mit ];
+    license = with licenses; [
+      gpl3Plus
+      mit
+    ];
     maintainers = [ ];
+    mainProgram = "parsegemfile";
   };
 }
diff --git a/pkgs/development/python-modules/gemfileparser2/default.nix b/pkgs/development/python-modules/gemfileparser2/default.nix
index 4a24fb07d7b11..de981df2e4aae 100644
--- a/pkgs/development/python-modules/gemfileparser2/default.nix
+++ b/pkgs/development/python-modules/gemfileparser2/default.nix
@@ -1,48 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "gemfileparser2";
-  version = "0.9.3";
-  format = "pyproject";
+  version = "0.9.4";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-BFKJZOf0W2b0YNbKIwnrmoKGvtP8A6R9PrUt7kYC/Dk=";
+    hash = "sha256-ezfioBwlZMGb1cEzzwa1afXUrTnxsgpzX0CNOTyVzgY=";
   };
 
   dontConfigure = true;
 
-  postPatch = ''
-    # https://github.com/nexB/gemfileparser2/pull/8
-    substituteInPlace setup.cfg \
-      --replace ">=3.6.*" ">=3.6"
-  '';
-
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "gemfileparser2"
-  ];
+  pythonImportsCheck = [ "gemfileparser2" ];
 
   meta = with lib; {
     description = "Library to parse Rubygem gemspec and Gemfile files";
-    homepage = "https://github.com/nexB/gemfileparser2";
-    changelog = "https://github.com/nexB/gemfileparser2/blob/v${version}/CHANGELOG.rst";
-    license = with licenses; [ mit /* or */ gpl3Plus ];
+    homepage = "https://github.com/aboutcode-org/gemfileparser2";
+    changelog = "https://github.com/aboutcode-org/gemfileparser2/blob/v${version}/CHANGELOG.rst";
+    license = with licenses; [
+      mit # or
+      gpl3Plus
+    ];
     maintainers = with maintainers; [ harvidsen ];
   };
 }
diff --git a/pkgs/development/python-modules/genanki/default.nix b/pkgs/development/python-modules/genanki/default.nix
index 64159dd7b755f..0d3371813e5db 100644
--- a/pkgs/development/python-modules/genanki/default.nix
+++ b/pkgs/development/python-modules/genanki/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, cached-property
-, chevron
-, fetchPypi
-, frozendict
-, pystache
-, pythonOlder
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  cached-property,
+  chevron,
+  fetchPypi,
+  frozendict,
+  pystache,
+  pythonOlder,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -37,9 +38,7 @@ buildPythonPackage rec {
   # relies on upstream anki
   doCheck = false;
 
-  pythonImportsCheck = [
-    "genanki"
-  ];
+  pythonImportsCheck = [ "genanki" ];
 
   meta = with lib; {
     description = "Generate Anki decks programmatically";
diff --git a/pkgs/development/python-modules/generic/default.nix b/pkgs/development/python-modules/generic/default.nix
index 77952b5046b47..c9bd2b520c3b5 100644
--- a/pkgs/development/python-modules/generic/default.nix
+++ b/pkgs/development/python-modules/generic/default.nix
@@ -1,36 +1,33 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, exceptiongroup
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  exceptiongroup,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
   pname = "generic";
-  version = "1.1.2";
+  version = "1.1.3";
   disabled = pythonOlder "3.7";
 
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-NfUvmkUIAdm+UZqmBWh0MZTViLJSkeRonPNSnVd+RbA=";
+    hash = "sha256-d4+CRv1uecIdS4t23cAI34s/PdIFYNQXfABuRWjzCUQ=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    exceptiongroup
-  ];
+  propagatedBuildInputs = [ exceptiongroup ];
 
   pythonImportsCheck = [ "generic" ];
 
   meta = with lib; {
     description = "Generic programming (Multiple dispatch) library for Python";
-    maintainers = with maintainers; [ wolfangaukang ];
+    maintainers = [ ];
     homepage = "https://github.com/gaphor/generic";
     changelog = "https://github.com/gaphor/generic/releases/tag/${version}";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/genie-partner-sdk/default.nix b/pkgs/development/python-modules/genie-partner-sdk/default.nix
new file mode 100644
index 0000000000000..f55cff75cd6e4
--- /dev/null
+++ b/pkgs/development/python-modules/genie-partner-sdk/default.nix
@@ -0,0 +1,38 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  hatchling,
+  aiohttp,
+  fetchPypi,
+}:
+
+buildPythonPackage rec {
+  pname = "genie-partner-sdk";
+  version = "1.0.4";
+  pyproject = true;
+
+  disabled = pythonOlder "3.11";
+
+  src = fetchPypi {
+    inherit version;
+    pname = "genie_partner_sdk";
+    hash = "sha256-DwbIe1pq1YKAA3hRlhYCVJ9xtvfxvoqLLjDSQicUKuw=";
+  };
+
+  nativeBuildInputs = [ hatchling ];
+
+  propagatedBuildInputs = [ aiohttp ];
+
+  # No tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "genie_partner_sdk" ];
+
+  meta = with lib; {
+    description = "An SDK to interact with the AladdinConnect (or OHD) partner API";
+    homepage = "https://github.com/Genie-Garage/aladdin-python-sdk";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ jamiemagee ];
+  };
+}
diff --git a/pkgs/development/python-modules/geniushub-client/default.nix b/pkgs/development/python-modules/geniushub-client/default.nix
index 54b36c7de608f..50a1013bc1085 100644
--- a/pkgs/development/python-modules/geniushub-client/default.nix
+++ b/pkgs/development/python-modules/geniushub-client/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,17 +27,11 @@ buildPythonPackage rec {
       --replace "version=VERSION," 'version="${version}",'
   '';
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "geniushubclient"
-  ];
+  pythonImportsCheck = [ "geniushubclient" ];
 
   meta = with lib; {
     description = "Module to interact with Genius Hub systems";
diff --git a/pkgs/development/python-modules/genome-collector/default.nix b/pkgs/development/python-modules/genome-collector/default.nix
index 70589912520ae..84f34bedd80ed 100644
--- a/pkgs/development/python-modules/genome-collector/default.nix
+++ b/pkgs/development/python-modules/genome-collector/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, appdirs
-, biopython
-, fetchPypi
-, proglog
+{
+  lib,
+  buildPythonPackage,
+  appdirs,
+  biopython,
+  fetchPypi,
+  proglog,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/genpy/default.nix b/pkgs/development/python-modules/genpy/default.nix
index d89efc6b4b405..90686b3ec4704 100644
--- a/pkgs/development/python-modules/genpy/default.nix
+++ b/pkgs/development/python-modules/genpy/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytools
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytools,
+  numpy,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/genshi/default.nix b/pkgs/development/python-modules/genshi/default.nix
index 67c66eea90708..78ee38cfa32ac 100644
--- a/pkgs/development/python-modules/genshi/default.nix
+++ b/pkgs/development/python-modules/genshi/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "genshi";
-  version = "0.7.7";
+  version = "0.7.9";
 
   src = fetchPypi {
     pname = "Genshi";
     inherit version;
-    hash = "sha256-wQBSCGLNaQhdEO4ah+kSief1n2s9m9Yiv1iygE5rmqs=";
+    hash = "sha256-x2FwqLLcGJROCRUQPChMuInfzuNODhQLozY8gPdUGtI=";
   };
 
   # FAIL: test_sanitize_remove_script_elem (genshi.filters.tests.html.HTMLSanitizerTestCase)
@@ -20,7 +21,8 @@ buildPythonPackage rec {
   doCheck = false;
 
   propagatedBuildInputs = [
-    setuptools six
+    setuptools
+    six
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/gensim/default.nix b/pkgs/development/python-modules/gensim/default.nix
index f43bfb518cfb8..61ce59689b64e 100644
--- a/pkgs/development/python-modules/gensim/default.nix
+++ b/pkgs/development/python-modules/gensim/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchPypi
-, mock
-, numpy
-, scipy
-, smart-open
-, testfixtures
-, pyemd
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchPypi,
+  fetchpatch,
+  mock,
+  numpy,
+  scipy,
+  smart-open,
+  pyemd,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,10 +25,18 @@ buildPythonPackage rec {
     hash = "sha256-maxq9v/UBoLnAVXtn5Lsv0OE1Z+1CvEg00PqXuGzCKs=";
   };
 
-  nativeBuildInputs = [
-    cython
+  patches = [
+    # https://github.com/piskvorky/gensim/pull/3524
+    # Import deprecated scipy.linalg.triu from numpy.triu. remove on next update
+    (fetchpatch {
+      name = "scipi-linalg-triu-fix.patch";
+      url = "https://github.com/piskvorky/gensim/commit/ad68ee3f105fc37cf8db333bfb837fe889ff74ac.patch";
+      hash = "sha256-Ij6HvVD8M2amzcjihu5bo8Lk0iCPl3iIq0lcOnI6G2s=";
+    })
   ];
 
+  nativeBuildInputs = [ cython ];
+
   propagatedBuildInputs = [
     smart-open
     numpy
@@ -40,16 +49,12 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "gensim"
-  ];
+  pythonImportsCheck = [ "gensim" ];
 
   # Test setup takes several minutes
   doCheck = false;
 
-  pytestFlagsArray = [
-    "gensim/test"
-  ];
+  pytestFlagsArray = [ "gensim/test" ];
 
   meta = with lib; {
     description = "Topic-modelling library";
diff --git a/pkgs/development/python-modules/gentools/default.nix b/pkgs/development/python-modules/gentools/default.nix
index 7dd95925f4ba2..d2bb35462ead5 100644
--- a/pkgs/development/python-modules/gentools/default.nix
+++ b/pkgs/development/python-modules/gentools/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, importlib-metadata
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  importlib-metadata,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,27 +22,19 @@ buildPythonPackage rec {
     hash = "sha256-+6KTFxOpwvGOCqy6JU87gOZmDa6MvjR10qES5wIfrjI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "gentools"
-  ];
+  pythonImportsCheck = [ "gentools" ];
 
   meta = with lib; {
     description = "Tools for generators, generator functions, and generator-based coroutines";
     homepage = "https://gentools.readthedocs.io/";
     changelog = "https://github.com/ariebovenberg/gentools/blob/v${version}/CHANGELOG.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ mredaelli ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/genzshcomp/default.nix b/pkgs/development/python-modules/genzshcomp/default.nix
index 7ab4c747f21d2..58e267927773c 100644
--- a/pkgs/development/python-modules/genzshcomp/default.nix
+++ b/pkgs/development/python-modules/genzshcomp/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,5 +23,4 @@ buildPythonPackage rec {
     homepage = "https://bitbucket.org/hhatto/genzshcomp/";
     license = licenses.bsd0;
   };
-
 }
diff --git a/pkgs/development/python-modules/geoalchemy2/default.nix b/pkgs/development/python-modules/geoalchemy2/default.nix
index 8e49a7d14b71e..bd3cd71bfa471 100644
--- a/pkgs/development/python-modules/geoalchemy2/default.nix
+++ b/pkgs/development/python-modules/geoalchemy2/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, packaging
-, setuptools
-, setuptools-scm
-, shapely
-, sqlalchemy
-, alembic
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  packaging,
+  setuptools,
+  setuptools-scm,
+  shapely,
+  sqlalchemy,
+  alembic,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "geoalchemy2";
-  version = "0.15.0";
+  version = "0.15.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -22,7 +23,7 @@ buildPythonPackage rec {
     owner = "geoalchemy";
     repo = "geoalchemy2";
     rev = "refs/tags/${version}";
-    hash = "sha256-cQixNLtjHPQrnNcxg0MrIdzvun2f1BqKY/2SxfcM2Nc=";
+    hash = "sha256-c5PvkQdfKajQha2nAtqYq7aHCgP/n41ekE04Rl2Pnr0=";
   };
 
   build-system = [
@@ -56,9 +57,7 @@ buildPythonPackage rec {
     "tests/test_pickle.py"
   ];
 
-  pythonImportsCheck = [
-    "geoalchemy2"
-  ];
+  pythonImportsCheck = [ "geoalchemy2" ];
 
   optional-dependencies = {
     shapely = [ shapely ];
diff --git a/pkgs/development/python-modules/geocachingapi/default.nix b/pkgs/development/python-modules/geocachingapi/default.nix
index d7ad9cb5fd8a0..55e817ce2748c 100644
--- a/pkgs/development/python-modules/geocachingapi/default.nix
+++ b/pkgs/development/python-modules/geocachingapi/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, aiohttp
-, backoff
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools-scm
-, yarl
+{
+  lib,
+  aiohttp,
+  backoff,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools-scm,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-C4nj4KFEwsY5V5f0Q1x+9sD8Ihz5m7b3jg2pOyB/pDg=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -35,9 +34,7 @@ buildPythonPackage rec {
   # Tests require a token and network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "geocachingapi"
-  ];
+  pythonImportsCheck = [ "geocachingapi" ];
 
   meta = with lib; {
     description = "Python API to control the Geocaching API";
diff --git a/pkgs/development/python-modules/geocoder/default.nix b/pkgs/development/python-modules/geocoder/default.nix
index d3152b6a63c54..8703ba774d461 100644
--- a/pkgs/development/python-modules/geocoder/default.nix
+++ b/pkgs/development/python-modules/geocoder/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchPypi
-, future
-, pythonOlder
-, ratelim
-, requests
-, setuptools
-, six
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchPypi,
+  future,
+  pythonOlder,
+  ratelim,
+  requests,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-yZJTdMlhV30K7kA7Ceb46hlx2RPwEfAMpwx2vq96d+c=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     click
@@ -34,9 +33,7 @@ buildPythonPackage rec {
     six
   ];
 
-  pythonImportsCheck = [
-    "geocoder"
-  ];
+  pythonImportsCheck = [ "geocoder" ];
 
   meta = with lib; {
     description = "Module for geocoding";
diff --git a/pkgs/development/python-modules/geodatasets/default.nix b/pkgs/development/python-modules/geodatasets/default.nix
new file mode 100644
index 0000000000000..d056d10fe0571
--- /dev/null
+++ b/pkgs/development/python-modules/geodatasets/default.nix
@@ -0,0 +1,54 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+
+  geopandas,
+  pooch,
+  pyogrio,
+  setuptools-scm,
+}:
+
+buildPythonPackage rec {
+  pname = "geodatasets";
+  version = "2024.8.0";
+  pyproject = true;
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "geopandas";
+    repo = "geodatasets";
+    rev = "refs/tags/${version}";
+    hash = "sha256-GJ7RyFlohlRz0RbQ80EewZUmIX9CJkSfUMY/uMNTtEM=";
+  };
+
+  build-system = [ setuptools-scm ];
+
+  propagatedBuildInputs = [ pooch ];
+
+  nativeCheckInputs = [
+    geopandas
+    pyogrio
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    export HOME=$TMPDIR
+  '';
+
+  pytestFlagsArray = [
+    # disable tests which require network access
+    "-m 'not request'"
+  ];
+
+  pythonImportsCheck = [ "geodatasets" ];
+
+  meta = {
+    description = "Spatial data examples";
+    homepage = "https://geodatasets.readthedocs.io/";
+    license = lib.licenses.bsd3;
+    maintainers = lib.teams.geospatial.members;
+  };
+}
diff --git a/pkgs/development/python-modules/geographiclib/default.nix b/pkgs/development/python-modules/geographiclib/default.nix
index d9f7211a820d8..4d91f5fb8a2e9 100644
--- a/pkgs/development/python-modules/geographiclib/default.nix
+++ b/pkgs/development/python-modules/geographiclib/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-9/Qchdw+HC09k17IZmDcOyyEjIPhf5qeUbqdUUahWFk=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "geographiclib" ];
 
@@ -26,6 +25,6 @@ buildPythonPackage rec {
     homepage = "https://geographiclib.sourceforge.io";
     description = "Algorithms for geodesics (Karney, 2013) for solving the direct and inverse problems for an ellipsoid of revolution";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/geoip/default.nix b/pkgs/development/python-modules/geoip/default.nix
index 6f66b3d67e1f8..d2af48f5049f8 100644
--- a/pkgs/development/python-modules/geoip/default.nix
+++ b/pkgs/development/python-modules/geoip/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, libgeoip
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  libgeoip,
 }:
 
 buildPythonPackage rec {
@@ -16,13 +17,9 @@ buildPythonPackage rec {
     sha256 = "1rphxf3vrn8wywjgr397f49s0s22m83lpwcq45lm0h2p45mdm458";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    libgeoip
-  ];
+  propagatedBuildInputs = [ libgeoip ];
 
   # Tests cannot be run because they require data that isn't included in the
   # release tarball.
diff --git a/pkgs/development/python-modules/geoip2/default.nix b/pkgs/development/python-modules/geoip2/default.nix
index 4a0bec9476e8b..45b9545397ab9 100644
--- a/pkgs/development/python-modules/geoip2/default.nix
+++ b/pkgs/development/python-modules/geoip2/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, setuptools-scm
-, maxminddb
-, mocket
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, requests
-, requests-mock
-, urllib3
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  maxminddb,
+  mocket,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  requests,
+  requests-mock,
+  urllib3,
 }:
 
 buildPythonPackage rec {
@@ -44,22 +45,20 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "geoip2"
-  ];
+  pythonImportsCheck = [ "geoip2" ];
 
-  disabledTests = lib.optionals (pythonAtLeast "3.11") [
-    # https://github.com/maxmind/GeoIP2-python/pull/136
-    "TestAsyncClient"
-  ] ++ lib.optionals (pythonAtLeast "3.10") [
-    "test_request"
-  ];
+  disabledTests =
+    lib.optionals (pythonAtLeast "3.10") [
+      # https://github.com/maxmind/GeoIP2-python/pull/136
+      "TestAsyncClient"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.10") [ "test_request" ];
 
   meta = with lib; {
     description = "GeoIP2 webservice client and database reader";
     homepage = "https://github.com/maxmind/GeoIP2-python";
     changelog = "https://github.com/maxmind/GeoIP2-python/blob/v${version}/HISTORY.rst";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/geojson-client/default.nix b/pkgs/development/python-modules/geojson-client/default.nix
index f315d99d8dd8b..694a27dcfc11d 100644
--- a/pkgs/development/python-modules/geojson-client/default.nix
+++ b/pkgs/development/python-modules/geojson-client/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, geojson
-, haversine
-, pytz
-, requests
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  geojson,
+  haversine,
+  pytz,
+  requests,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,13 +31,9 @@ buildPythonPackage rec {
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "geojson_client"
-  ];
+  pythonImportsCheck = [ "geojson_client" ];
 
   meta = with lib; {
     description = "Python module for convenient access to GeoJSON feeds";
diff --git a/pkgs/development/python-modules/geojson/default.nix b/pkgs/development/python-modules/geojson/default.nix
index 28e05315861da..a8c1ea9990776 100644
--- a/pkgs/development/python-modules/geojson/default.nix
+++ b/pkgs/development/python-modules/geojson/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, unittestCheckHook
- }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  unittestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "geojson";
@@ -17,17 +18,11 @@ buildPythonPackage rec {
     hash = "sha256-OL+7ntgzpA63ALQ8whhKRePsKxcp81PLuU1bHJvxN9U=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "geojson"
-  ];
+  pythonImportsCheck = [ "geojson" ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   meta = {
     homepage = "https://github.com/jazzband/geojson";
diff --git a/pkgs/development/python-modules/geomet/default.nix b/pkgs/development/python-modules/geomet/default.nix
index 622027f8aff7d..0172159ec6bd2 100644
--- a/pkgs/development/python-modules/geomet/default.nix
+++ b/pkgs/development/python-modules/geomet/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, click
-, setuptools
-, six
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  click,
+  setuptools,
+  six,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,18 +22,14 @@ buildPythonPackage rec {
     hash = "sha256-YfI29925nffzRBMJb6Gm3muvlpwP3zSw2YJ2vWcf+Bo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     click
     six
   ];
 
-  pythonImportsCheck = [
-    "geomet"
-  ];
+  pythonImportsCheck = [ "geomet" ];
 
   meta = with lib; {
     description = "Convert GeoJSON to WKT/WKB (Well-Known Text/Binary) and vice versa";
@@ -40,6 +37,8 @@ buildPythonPackage rec {
     homepage = "https://github.com/geomet/geomet";
     changelog = "https://github.com/geomet/geomet/releases/tag/${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ turion ris ];
+    maintainers = with maintainers; [
+      ris
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/geometric/default.nix b/pkgs/development/python-modules/geometric/default.nix
index becd876ee8606..6abdda570d8b3 100644
--- a/pkgs/development/python-modules/geometric/default.nix
+++ b/pkgs/development/python-modules/geometric/default.nix
@@ -1,12 +1,13 @@
-{ buildPythonPackage
-, lib
-, fetchFromGitHub
-, fetchpatch
-, networkx
-, numpy
-, scipy
-, six
-, pytestCheckHook
+{
+  buildPythonPackage,
+  lib,
+  fetchFromGitHub,
+  fetchpatch,
+  networkx,
+  numpy,
+  scipy,
+  six,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,11 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-DmrKLVQrPQDzTMxqEImnvRr3Wb2R3+hxtDVCN9XUcFM=";
   };
 
-  patches = [ (fetchpatch {
-    name = "ase-is-optional";
-    url = "https://github.com/leeping/geomeTRIC/commit/aff6e4411980ac9cbe112a050c3a34ba7e305a43.patch";
-    hash = "sha256-JGGPX+JwkQ8Imgmyx+ReRTV+k6mxHYgm+Nd8WUjbFEg=";
-  }) ];
+  patches = [
+    (fetchpatch {
+      name = "ase-is-optional";
+      url = "https://github.com/leeping/geomeTRIC/commit/aff6e4411980ac9cbe112a050c3a34ba7e305a43.patch";
+      hash = "sha256-JGGPX+JwkQ8Imgmyx+ReRTV+k6mxHYgm+Nd8WUjbFEg=";
+    })
+  ];
 
   propagatedBuildInputs = [
     networkx
@@ -48,4 +51,3 @@ buildPythonPackage rec {
     maintainers = [ maintainers.markuskowa ];
   };
 }
-
diff --git a/pkgs/development/python-modules/geopandas/default.nix b/pkgs/development/python-modules/geopandas/default.nix
index f786d3b252938..4b8f06c50b08c 100644
--- a/pkgs/development/python-modules/geopandas/default.nix
+++ b/pkgs/development/python-modules/geopandas/default.nix
@@ -1,22 +1,34 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 
-, fiona
-, packaging
-, pandas
-, pyproj
-, rtree
-, shapely
+  packaging,
+  pandas,
+  pyogrio,
+  pyproj,
+  rtree,
+  shapely,
+
+  # optional-dependencies
+  folium,
+  geoalchemy2,
+  geopy,
+  mapclassify,
+  matplotlib,
+  psycopg,
+  pyarrow,
+  sqlalchemy,
+  xyzservices,
 }:
 
 buildPythonPackage rec {
   pname = "geopandas";
-  version = "0.14.4";
+  version = "1.0.1";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -25,27 +37,45 @@ buildPythonPackage rec {
     owner = "geopandas";
     repo = "geopandas";
     rev = "refs/tags/v${version}";
-    hash = "sha256-FBhPcae8bnNnsfr14I1p22VhoOf9USF9DAcrAqx+zso=";
+    hash = "sha256-SZizjwkx8dsnaobDYpeQm9jeXZ4PlzYyjIScnQrH63Q=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   propagatedBuildInputs = [
-    fiona
     packaging
     pandas
+    pyogrio
     pyproj
     shapely
   ];
 
+  optional-dependencies = {
+    all = [
+      # prevent infinite recursion
+      (folium.overridePythonAttrs (prevAttrs: {
+        doCheck = false;
+      }))
+      geoalchemy2
+      geopy
+      # prevent infinite recursion
+      (mapclassify.overridePythonAttrs (prevAttrs: {
+        doCheck = false;
+      }))
+      matplotlib
+      psycopg
+      pyarrow
+      sqlalchemy
+      xyzservices
+    ];
+  };
+
   nativeCheckInputs = [
     pytestCheckHook
     rtree
-  ];
+  ] ++ optional-dependencies.all;
 
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   preCheck = ''
     export HOME=$(mktemp -d);
@@ -56,13 +86,9 @@ buildPythonPackage rec {
     "test_read_file_url"
   ];
 
-  pytestFlagsArray = [
-    "geopandas"
-  ];
+  pytestFlagsArray = [ "geopandas" ];
 
-  pythonImportsCheck = [
-    "geopandas"
-  ];
+  pythonImportsCheck = [ "geopandas" ];
 
   meta = with lib; {
     description = "Python geospatial data analysis framework";
diff --git a/pkgs/development/python-modules/geoparquet/default.nix b/pkgs/development/python-modules/geoparquet/default.nix
new file mode 100644
index 0000000000000..d4b54610c506b
--- /dev/null
+++ b/pkgs/development/python-modules/geoparquet/default.nix
@@ -0,0 +1,47 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pandas,
+  pyarrow,
+  pyproj,
+  shapely,
+  geopandas,
+  pytestCheckHook,
+}:
+
+buildPythonPackage {
+  pname = "geoparquet";
+  version = "0.7.5";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "darcy-r";
+    repo = "geoparquet-python";
+    rev = "b09b12dd0ebc34d73f082c3d97ccb69a889167e3";
+    hash = "sha256-WGZfDQh7Abh83n8jsCGr41IlKKq7QVDlauuWi20llh8=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    pandas
+    pyarrow
+    pyproj
+    shapely
+    geopandas
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+  pythonImportsCheck = [ "geoparquet" ];
+
+  doCheck = false; # no tests
+
+  meta = {
+    description = "API between Parquet files and GeoDataFrames for fast input/output of GIS data";
+    homepage = "https://github.com/darcy-r/geoparquet-python";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/geopy/default.nix b/pkgs/development/python-modules/geopy/default.nix
index 4616dd3866c8d..2634edb0d856a 100644
--- a/pkgs/development/python-modules/geopy/default.nix
+++ b/pkgs/development/python-modules/geopy/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, docutils
-, fetchFromGitHub
-, geographiclib
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, pytz
+{
+  lib,
+  buildPythonPackage,
+  docutils,
+  fetchFromGitHub,
+  geographiclib,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  pytz,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-mlOXDEtYry1IUAZWrP2FuY/CGliUnCPYLULnLNN0n4Y=";
   };
 
-  propagatedBuildInputs = [
-    geographiclib
-  ];
+  propagatedBuildInputs = [ geographiclib ];
 
   nativeCheckInputs = [
     docutils
@@ -37,9 +36,7 @@ buildPythonPackage rec {
     "test_user_agent_default"
   ];
 
-  disabledTestPaths = lib.optionals (pythonAtLeast "3.12") [
-    "test/test_init.py"
-  ];
+  disabledTestPaths = lib.optionals (pythonAtLeast "3.12") [ "test/test_init.py" ];
 
   pytestFlagsArray = [ "--skip-tests-requiring-internet" ];
 
diff --git a/pkgs/development/python-modules/georss-client/default.nix b/pkgs/development/python-modules/georss-client/default.nix
index 51d895456da34..dfd4531c283d3 100644
--- a/pkgs/development/python-modules/georss-client/default.nix
+++ b/pkgs/development/python-modules/georss-client/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, dateparser
-, fetchFromGitHub
-, haversine
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
-, xmltodict
+{
+  lib,
+  buildPythonPackage,
+  dateparser,
+  fetchFromGitHub,
+  haversine,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-DvQifO/jirpacWZccK4WPxnm/iYs1qT5nAYQUDoleO4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     haversine
@@ -35,13 +34,9 @@ buildPythonPackage rec {
     dateparser
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "georss_client"
-  ];
+  pythonImportsCheck = [ "georss_client" ];
 
   meta = with lib; {
     description = "Python library for accessing GeoRSS feeds";
diff --git a/pkgs/development/python-modules/georss-generic-client/default.nix b/pkgs/development/python-modules/georss-generic-client/default.nix
index b3679a93a2fd3..d0ac06cf8122c 100644
--- a/pkgs/development/python-modules/georss-generic-client/default.nix
+++ b/pkgs/development/python-modules/georss-generic-client/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, georss-client
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  georss-client,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-Y19zMHL6DjAqiDi47Lmst8m9d9kEtTgyRiECKo6CqZY=";
   };
 
-  propagatedBuildInputs = [
-    georss-client
-  ];
+  propagatedBuildInputs = [ georss-client ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "georss_generic_client" ];
 
diff --git a/pkgs/development/python-modules/georss-ign-sismologia-client/default.nix b/pkgs/development/python-modules/georss-ign-sismologia-client/default.nix
index 5c3b095a2c3f2..133a68ba06e14 100644
--- a/pkgs/development/python-modules/georss-ign-sismologia-client/default.nix
+++ b/pkgs/development/python-modules/georss-ign-sismologia-client/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, dateparser
-, fetchFromGitHub
-, georss-client
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  dateparser,
+  fetchFromGitHub,
+  georss-client,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-geIxF4GumxRoetJ6mIZCzI3pAvWjJJoY66aQYd2Mzik=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     dateparser
     georss-client
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "georss_ign_sismologia_client"
-  ];
+  pythonImportsCheck = [ "georss_ign_sismologia_client" ];
 
   meta = with lib; {
     description = "Python library for accessing the IGN Sismologia GeoRSS feed";
diff --git a/pkgs/development/python-modules/georss-ingv-centro-nazionale-terremoti-client/default.nix b/pkgs/development/python-modules/georss-ingv-centro-nazionale-terremoti-client/default.nix
index e74f3670f223a..83f1e307cf262 100644
--- a/pkgs/development/python-modules/georss-ingv-centro-nazionale-terremoti-client/default.nix
+++ b/pkgs/development/python-modules/georss-ingv-centro-nazionale-terremoti-client/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, georss-client
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  georss-client,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-J72yd1D4mKCOsBRLMUXKnxmjr6g0IQApTTrWjklczN8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    georss-client
-  ];
+  propagatedBuildInputs = [ georss-client ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "georss_ingv_centro_nazionale_terremoti_client"
-  ];
+  pythonImportsCheck = [ "georss_ingv_centro_nazionale_terremoti_client" ];
 
   meta = with lib; {
     description = "Python library for accessing the INGV Centro Nazionale Terremoti GeoRSS feed";
diff --git a/pkgs/development/python-modules/georss-nrcan-earthquakes-client/default.nix b/pkgs/development/python-modules/georss-nrcan-earthquakes-client/default.nix
index ef8ea220e9e1f..299d78bd3c825 100644
--- a/pkgs/development/python-modules/georss-nrcan-earthquakes-client/default.nix
+++ b/pkgs/development/python-modules/georss-nrcan-earthquakes-client/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, georss-client
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  georss-client,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-FFm37+dCkdoZXgvAjYhcHOYFf0oQ37bxJb7vzbWDTro=";
   };
 
-  propagatedBuildInputs = [
-    georss-client
-  ];
+  propagatedBuildInputs = [ georss-client ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "georss_nrcan_earthquakes_client"
-  ];
+  pythonImportsCheck = [ "georss_nrcan_earthquakes_client" ];
 
   meta = with lib; {
     description = "Python library for accessing Natural Resources Canada Earthquakes feed";
diff --git a/pkgs/development/python-modules/georss-qld-bushfire-alert-client/default.nix b/pkgs/development/python-modules/georss-qld-bushfire-alert-client/default.nix
index 6e346b402c723..bd356f044af48 100644
--- a/pkgs/development/python-modules/georss-qld-bushfire-alert-client/default.nix
+++ b/pkgs/development/python-modules/georss-qld-bushfire-alert-client/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, georss-client
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  georss-client,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "georss-qld-bushfire-alert-client";
-  version = "0.7";
+  version = "0.8";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,24 +19,16 @@ buildPythonPackage rec {
     owner = "exxamalte";
     repo = "python-georss-qld-bushfire-alert-client";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ajCw1m7Qm1kZE/hOsBzFXPWAxl/pFD8pOOQo6qvachE=";
+    hash = "sha256-/MyjYLu29PANe17KxJCkmHPjvjlPfswn7ZBAKFSwohc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    georss-client
-  ];
+  dependencies = [ georss-client ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "georss_qld_bushfire_alert_client"
-  ];
+  pythonImportsCheck = [ "georss_qld_bushfire_alert_client" ];
 
   meta = with lib; {
     description = "Python library for accessing Queensland Bushfire Alert feed";
diff --git a/pkgs/development/python-modules/georss-tfs-incidents-client/default.nix b/pkgs/development/python-modules/georss-tfs-incidents-client/default.nix
index adb89685d9bf3..764fc3fc92f86 100644
--- a/pkgs/development/python-modules/georss-tfs-incidents-client/default.nix
+++ b/pkgs/development/python-modules/georss-tfs-incidents-client/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, georss-client
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  georss-client,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-Cz0PRcGReAE0mg04ktCUaoLqPTjvyU1TiB/Pdz7o7zo=";
   };
 
-  propagatedBuildInputs = [
-    georss-client
-  ];
+  propagatedBuildInputs = [ georss-client ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "georss_tfs_incidents_client"
-  ];
+  pythonImportsCheck = [ "georss_tfs_incidents_client" ];
 
   meta = with lib; {
     description = "Python library for accessing Tasmania Fire Service Incidents feed";
diff --git a/pkgs/development/python-modules/georss-wa-dfes-client/default.nix b/pkgs/development/python-modules/georss-wa-dfes-client/default.nix
index 170bae63567cd..d686f5049aefc 100644
--- a/pkgs/development/python-modules/georss-wa-dfes-client/default.nix
+++ b/pkgs/development/python-modules/georss-wa-dfes-client/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, georss-client
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  georss-client,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,20 +18,14 @@ buildPythonPackage rec {
     owner = "exxamalte";
     repo = "python-georss-wa-dfes-client";
     rev = "v${version}";
-     hash = "sha256-s7qGTlWFdOtw0eMK7idld7HPOxO8CjODCmUi0WmRLdI=";
+    hash = "sha256-s7qGTlWFdOtw0eMK7idld7HPOxO8CjODCmUi0WmRLdI=";
   };
 
-  propagatedBuildInputs = [
-    georss-client
-  ];
+  propagatedBuildInputs = [ georss-client ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "georss_wa_dfes_client"
-  ];
+  pythonImportsCheck = [ "georss_wa_dfes_client" ];
 
   meta = with lib; {
     description = "Python library for accessing WA Department of Fire and Emergency Services (DFES) feed";
diff --git a/pkgs/development/python-modules/gerbonara/default.nix b/pkgs/development/python-modules/gerbonara/default.nix
index 15ec60ccc3856..46a226f5637d6 100644
--- a/pkgs/development/python-modules/gerbonara/default.nix
+++ b/pkgs/development/python-modules/gerbonara/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytest
-, click
-, numpy
-, scipy
-, rtree
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gitUpdater,
+  setuptools,
+  click,
+  numpy,
+  scipy,
+  rtree,
 }:
 
 buildPythonPackage rec {
   pname = "gerbonara";
-  version = "1.2.0";
+  version = "1.4.0";
   src = fetchFromGitHub {
     owner = "jaseg";
     repo = "gerbonara";
     rev = "v${version}";
-    hash = "sha256-VU4Of90YUPoLuiUpIDwSUfxQOoKChNbZE0klHkHEmaY=";
+    hash = "sha256-SwXoCA9ru5VgH4geKUDgdcPrgEYgNoVwNb5YUBAcXlo=";
   };
 
   format = "setuptools";
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     click
@@ -44,6 +43,8 @@ buildPythonPackage rec {
   # Test environment is exceptionally tricky to get set up, so skip for now.
   doCheck = false;
 
+  passthru.updateScript = gitUpdater { rev-prefix = "v"; };
+
   meta = with lib; {
     description = "Pythonic library for reading/modifying/writing Gerber/Excellon/IPC-356 files";
     mainProgram = "gerbonara";
diff --git a/pkgs/development/python-modules/get-video-properties/default.nix b/pkgs/development/python-modules/get-video-properties/default.nix
index 98fe8e9b1d424..70b2c568f6b70 100644
--- a/pkgs/development/python-modules/get-video-properties/default.nix
+++ b/pkgs/development/python-modules/get-video-properties/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, ffmpeg-headless
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ffmpeg-headless,
 }:
 
 buildPythonPackage rec {
@@ -35,5 +36,4 @@ buildPythonPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ globin ];
   };
-
 }
diff --git a/pkgs/development/python-modules/getjump/default.nix b/pkgs/development/python-modules/getjump/default.nix
index 4d3851c913c40..153f25ad2cb11 100644
--- a/pkgs/development/python-modules/getjump/default.nix
+++ b/pkgs/development/python-modules/getjump/default.nix
@@ -1,26 +1,25 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchPypi
-, pillow
-, poetry-core
-, requests
-, rich
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchPypi,
+  pillow,
+  poetry-core,
+  requests,
+  rich,
 }:
 
 buildPythonPackage rec {
   pname = "getjump";
-  version = "2.4.2";
+  version = "2.5.0";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-WSLfhVCqP+N+2Rs2PUXOknnlNx3UtWdFYrK1lTW1fqQ=";
+    hash = "sha256-3VxsKum6aB35XYjz9ZKkUBdPuofOWzG+ttkX9pnzu7U=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     beautifulsoup4
@@ -29,9 +28,7 @@ buildPythonPackage rec {
     rich
   ];
 
-  pythonImportsCheck = [
-    "getjump"
-  ];
+  pythonImportsCheck = [ "getjump" ];
 
   # all the tests talk to the internet
   doCheck = false;
diff --git a/pkgs/development/python-modules/getkey/default.nix b/pkgs/development/python-modules/getkey/default.nix
index a5adb534e3e77..98863e84816a6 100644
--- a/pkgs/development/python-modules/getkey/default.nix
+++ b/pkgs/development/python-modules/getkey/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, flake8
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  flake8,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/getmac/default.nix b/pkgs/development/python-modules/getmac/default.nix
index a62f47c2ece59..4c3339e7580af 100644
--- a/pkgs/development/python-modules/getmac/default.nix
+++ b/pkgs/development/python-modules/getmac/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, py
-, pytest-benchmark
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  py,
+  pytest-benchmark,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "getmac";
-  version = "0.9.4";
+  version = "0.9.5";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -19,7 +20,7 @@ buildPythonPackage rec {
     owner = "GhostofGoes";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-B9agBmSrD3ZhqpGclZdMQNRSLSkepR6iduP1yrYz9tU=";
+    hash = "sha256-ZbTCbbASs7+ChmgcDePXSbiHOst6/eCkq9SiKgYhFyM=";
   };
 
   nativeCheckInputs = [
@@ -41,9 +42,7 @@ buildPythonPackage rec {
     "test_initialize_method_cache_valid_types"
   ];
 
-  pythonImportsCheck = [
-    "getmac"
-  ];
+  pythonImportsCheck = [ "getmac" ];
 
   meta = with lib; {
     description = "Python package to get the MAC address of network interfaces and hosts on the local network";
diff --git a/pkgs/development/python-modules/gevent-socketio/default.nix b/pkgs/development/python-modules/gevent-socketio/default.nix
index 3383987144945..aa592a876e1b5 100644
--- a/pkgs/development/python-modules/gevent-socketio/default.nix
+++ b/pkgs/development/python-modules/gevent-socketio/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, gevent
-, gevent-websocket
-, mock
-, versiontools
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  gevent,
+  gevent-websocket,
+  versiontools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,29 +20,21 @@ buildPythonPackage rec {
     hash = "sha256-UzlKuT+9hNnbuyvvhTSfalA7/FPYapvoZTJQ8aBBKv8=";
   };
 
-  nativeBuildInputs = [
-    versiontools
-  ];
+  nativeBuildInputs = [ versiontools ];
 
-  buildInputs = [
-    gevent-websocket
-  ];
+  buildInputs = [ gevent-websocket ];
 
-  propagatedBuildInputs = [
-    gevent
-  ];
+  propagatedBuildInputs = [ gevent ];
 
   # Tests are not ported to Python 3
   doCheck = false;
 
-  pythonImportsCheck = [
-    "socketio"
-  ];
+  pythonImportsCheck = [ "socketio" ];
 
   meta = with lib; {
     description = "SocketIO server based on the Gevent pywsgi server";
     homepage = "https://github.com/abourget/gevent-socketio";
     license = licenses.bsd0;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/gevent-websocket/default.nix b/pkgs/development/python-modules/gevent-websocket/default.nix
index 66709d8fafa58..a93c3dc6b925f 100644
--- a/pkgs/development/python-modules/gevent-websocket/default.nix
+++ b/pkgs/development/python-modules/gevent-websocket/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, gevent
-, gunicorn
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  gevent,
+  gunicorn,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,14 +27,12 @@ buildPythonPackage rec {
   # Module has no test
   doCheck = false;
 
-  pythonImportsCheck = [
-    "geventwebsocket"
-  ];
+  pythonImportsCheck = [ "geventwebsocket" ];
 
   meta = with lib; {
     description = "Websocket handler for the gevent pywsgi server";
     homepage = "https://www.gitlab.com/noppo/gevent-websocket";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/gevent/default.nix b/pkgs/development/python-modules/gevent/default.nix
index cee0b07bdf8f2..1e38def4560ec 100644
--- a/pkgs/development/python-modules/gevent/default.nix
+++ b/pkgs/development/python-modules/gevent/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, isPyPy
-, python
-, libev
-, cffi
-, cython
-, greenlet
-, importlib-metadata
-, setuptools
-, wheel
-, zope-event
-, zope-interface
-, pythonOlder
-, c-ares
-, libuv
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  isPyPy,
+  python,
+  libev,
+  cffi,
+  cython,
+  greenlet,
+  importlib-metadata,
+  setuptools,
+  wheel,
+  zope-event,
+  zope-interface,
+  pythonOlder,
+  c-ares,
+  libuv,
 
-# for passthru.tests
-, dulwich
-, gunicorn
-, opentracing
-, pika
+  # for passthru.tests
+  dulwich,
+  gunicorn,
+  opentracing,
+  pika,
 }:
 
 buildPythonPackage rec {
@@ -39,9 +40,7 @@ buildPythonPackage rec {
     cython
     setuptools
     wheel
-  ] ++ lib.optionals (!isPyPy) [
-    cffi
-  ];
+  ] ++ lib.optionals (!isPyPy) [ cffi ];
 
   buildInputs = [
     libev
@@ -53,9 +52,7 @@ buildPythonPackage rec {
     importlib-metadata
     zope-event
     zope-interface
-  ] ++ lib.optionals (!isPyPy) [
-    greenlet
-  ];
+  ] ++ lib.optionals (!isPyPy) [ greenlet ];
 
   # Bunch of failures.
   doCheck = false;
@@ -70,7 +67,8 @@ buildPythonPackage rec {
       dulwich
       gunicorn
       opentracing
-      pika;
+      pika
+      ;
   } // lib.filterAttrs (k: v: lib.hasInfix "gevent" k) python.pkgs;
 
   GEVENTSETUP_EMBED = "0";
diff --git a/pkgs/development/python-modules/geventhttpclient/default.nix b/pkgs/development/python-modules/geventhttpclient/default.nix
index 1943888df752b..3e9c51c7dcd1d 100644
--- a/pkgs/development/python-modules/geventhttpclient/default.nix
+++ b/pkgs/development/python-modules/geventhttpclient/default.nix
@@ -1,61 +1,60 @@
-{ lib
-, brotli
-, buildPythonPackage
-, certifi
-, dpkt
-, fetchPypi
-, gevent
-, pytestCheckHook
-, pythonOlder
-, six
-, stdenv
-, urllib3
+{
+  lib,
+  brotli,
+  buildPythonPackage,
+  certifi,
+  dpkt,
+  fetchFromGitHub,
+  gevent,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  stdenv,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "geventhttpclient";
-  version = "2.0.12";
-  format = "setuptools";
+  version = "2.3.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-6+oI55wap9A7Q5NrNHwPhzVub7HGhFc1oR8jyUnGVfc=";
+  src = fetchFromGitHub {
+    owner = "geventhttpclient";
+    repo = "geventhttpclient";
+    rev = "refs/tags/${version}";
+    # TODO: unvendor llhttp
+    fetchSubmodules = true;
+    hash = "sha256-uOGnwPbvTam14SFTUT0UrwxHfP4a5cn3a7EhLoGBUrA=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     brotli
     certifi
     gevent
-    six
+    urllib3
   ];
 
   nativeCheckInputs = [
     dpkt
     pytestCheckHook
-    urllib3
   ];
 
   # lots of: [Errno 48] Address already in use: ('127.0.0.1', 54323)
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   __darwinAllowLocalNetworking = true;
 
-  disabledTests = [
-    # socket.gaierror: [Errno -3] Temporary failure in name resolution
-    "test_client_simple"
-    "test_client_without_leading_slas"
-    "test_request_with_headers"
-    "test_response_context_manager"
-    "test_client_ssl"
-    "test_ssl_fail_invalid_certificate"
-    "test_multi_queries_greenlet_safe"
-  ];
+  preCheck = ''
+    rm -rf geventhttpclient
+  '';
 
-  pythonImportsCheck = [
-    "geventhttpclient"
-  ];
+  pytestFlagsArray = [ "-m 'not network'" ];
+
+  pythonImportsCheck = [ "geventhttpclient" ];
 
   meta = with lib; {
     homepage = "https://github.com/geventhttpclient/geventhttpclient";
diff --git a/pkgs/development/python-modules/gfal2-python/default.nix b/pkgs/development/python-modules/gfal2-python/default.nix
index d9ffbe8a23e7c..52cb5ad1b2274 100644
--- a/pkgs/development/python-modules/gfal2-python/default.nix
+++ b/pkgs/development/python-modules/gfal2-python/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cmake
-, pkg-config
-, boost
-, gfal2
-, glib
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cmake,
+  pkg-config,
+  boost,
+  gfal2,
+  glib,
+  pythonAtLeast,
   # For tests
-, gfal2-util ? null
+  gfal2-util ? null,
 }:
 buildPythonPackage rec {
   pname = "gfal2-python";
@@ -31,15 +32,12 @@ buildPythonPackage rec {
   # We don't want setup.py to (re-)execute cmake in buildPhase
   # Besides, this package is totally handled by CMake, which means no additional configuration is needed.
   dontConfigure = true;
-  pythonImportsCheck = [
-    "gfal2"
-  ];
+  pythonImportsCheck = [ "gfal2" ];
   passthru = {
     inherit gfal2;
     tests = {
       inherit gfal2-util;
-    }
-    // lib.optionalAttrs (gfal2-util != null) gfal2-util.tests or { };
+    } // lib.optionalAttrs (gfal2-util != null) gfal2-util.tests or { };
   };
   meta = with lib; {
     description = "Python binding for gfal2";
diff --git a/pkgs/development/python-modules/gfal2-util/default.nix b/pkgs/development/python-modules/gfal2-util/default.nix
index 2aabf3b43e88d..4294aa48b741c 100644
--- a/pkgs/development/python-modules/gfal2-util/default.nix
+++ b/pkgs/development/python-modules/gfal2-util/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, callPackage
-, fetchFromGitHub
-, runCommandLocal
+{
+  lib,
+  buildPythonPackage,
+  callPackage,
+  fetchFromGitHub,
+  runCommandLocal,
   # Build inputs
-, gfal2-python
+  gfal2-python,
   # For tests
-, xrootd # pkgs.xrootd
+  xrootd, # pkgs.xrootd
 }:
 (buildPythonPackage rec {
   pname = "gfal2-util";
@@ -27,13 +28,9 @@
     done
   '';
 
-  propagatedBuildInputs = [
-    gfal2-python
-  ];
+  propagatedBuildInputs = [ gfal2-python ];
 
-  pythonImportsCheck = [
-    "gfal2_util"
-  ];
+  pythonImportsCheck = [ "gfal2_util" ];
 
   meta = with lib; {
     description = "CLI for gfal2";
@@ -41,63 +38,74 @@
     license = licenses.asl20;
     maintainers = with maintainers; [ ShamrockLee ];
   };
-}).overrideAttrs (finalAttrs: previousAttrs: lib.recursiveUpdate previousAttrs {
-  passthru = {
-    inherit (gfal2-python) gfal2;
+}).overrideAttrs
+  (
+    finalAttrs: previousAttrs:
+    lib.recursiveUpdate previousAttrs {
+      passthru = {
+        inherit (gfal2-python) gfal2;
 
-    fetchGfal2 = lib.makeOverridable (callPackage ./fetchgfal2.nix { gfal2-util = finalAttrs.finalPackage; });
+        fetchGfal2 = lib.makeOverridable (
+          callPackage ./fetchgfal2.nix { gfal2-util = finalAttrs.finalPackage; }
+        );
 
-    # With these functionality tests, it should be safe to merge version bumps once all the tests are passed.
-    tests =
-      let
-        # Use the the bin output hash of gfal2-util as version to ensure that
-        # the test gets rebuild everytime gfal2-util gets rebuild
-        versionFODTests = finalAttrs.version + "-" + lib.substring (lib.stringLength builtins.storeDir + 1) 32 "${self}";
-        self = finalAttrs.finalPackage;
-      in
-      lib.optionalAttrs gfal2-python.gfal2.enablePluginStatus.xrootd (
-        let
-          # Test against a real-world dataset from CERN Open Data
-          # borrowed from `xrootd.tests`.
-          urlTestFile = xrootd.tests.test-xrdcp.url;
-          hashTestFile = xrootd.tests.test-xrdcp.outputHash;
-          urlTestDir = dirOf urlTestFile;
-        in
-        {
-          test-copy-file-xrootd = finalAttrs.passthru.fetchGfal2 {
-            url = urlTestFile;
-            hash = hashTestFile;
-            extraGfalCopyFlags = [ "--verbose" ];
-            pname = "gfal2-util-test-copy-file-xrootd";
-            version = versionFODTests;
-            allowSubstitutes = false;
-          };
+        # With these functionality tests, it should be safe to merge version bumps once all the tests are passed.
+        tests =
+          let
+            # Use the the bin output hash of gfal2-util as version to ensure that
+            # the test gets rebuild everytime gfal2-util gets rebuild
+            versionFODTests =
+              finalAttrs.version + "-" + lib.substring (lib.stringLength builtins.storeDir + 1) 32 "${self}";
+            self = finalAttrs.finalPackage;
+          in
+          lib.optionalAttrs gfal2-python.gfal2.enablePluginStatus.xrootd (
+            let
+              # Test against a real-world dataset from CERN Open Data
+              # borrowed from `xrootd.tests`.
+              urlTestFile = xrootd.tests.test-xrdcp.url;
+              hashTestFile = xrootd.tests.test-xrdcp.outputHash;
+              urlTestDir = dirOf urlTestFile;
+            in
+            {
+              test-copy-file-xrootd = finalAttrs.passthru.fetchGfal2 {
+                url = urlTestFile;
+                hash = hashTestFile;
+                extraGfalCopyFlags = [ "--verbose" ];
+                pname = "gfal2-util-test-copy-file-xrootd";
+                version = versionFODTests;
+                allowSubstitutes = false;
+              };
 
-          test-copy-dir-xrootd = finalAttrs.passthru.fetchGfal2 {
-            url = urlTestDir;
-            hash = "sha256-vOahIhvx1oE9sfkqANMGUvGeLHS737wyfYWo4rkvrxw=";
-            recursive = true;
-            extraGfalCopyFlags = [ "--verbose" ];
-            pname = "gfal2-util-test-copy-dir-xrootd";
-            version = versionFODTests;
-            allowSubstitutes = false;
-          };
+              test-copy-dir-xrootd = finalAttrs.passthru.fetchGfal2 {
+                url = urlTestDir;
+                hash = "sha256-vOahIhvx1oE9sfkqANMGUvGeLHS737wyfYWo4rkvrxw=";
+                recursive = true;
+                extraGfalCopyFlags = [ "--verbose" ];
+                pname = "gfal2-util-test-copy-dir-xrootd";
+                version = versionFODTests;
+                allowSubstitutes = false;
+              };
 
-          test-ls-dir-xrootd = (runCommandLocal "test-gfal2-util-ls-dir-xrootd" { } ''
-            set -eu -o pipefail
-            gfal-ls "$url" | grep "$baseNameExpected" | tee "$out"
-          '').overrideAttrs (finalAttrs: previousAttrs: {
-            pname = previousAttrs.name;
-            version = versionFODTests;
-            name = "${finalAttrs.pname}-${finalAttrs.version}";
-            nativeBuildInputs = [ self ];
-            url = urlTestDir;
-            baseNameExpected = baseNameOf urlTestFile;
-            outputHashMode = "flat";
-            outputHashAlgo = "sha256";
-            outputHash = builtins.hashString finalAttrs.outputHashAlgo (finalAttrs.baseNameExpected + "\n");
-          });
-        }
-      );
-  };
-})
+              test-ls-dir-xrootd =
+                (runCommandLocal "test-gfal2-util-ls-dir-xrootd" { } ''
+                  set -eu -o pipefail
+                  gfal-ls "$url" | grep "$baseNameExpected" | tee "$out"
+                '').overrideAttrs
+                  (
+                    finalAttrs: previousAttrs: {
+                      pname = previousAttrs.name;
+                      version = versionFODTests;
+                      name = "${finalAttrs.pname}-${finalAttrs.version}";
+                      nativeBuildInputs = [ self ];
+                      url = urlTestDir;
+                      baseNameExpected = baseNameOf urlTestFile;
+                      outputHashMode = "flat";
+                      outputHashAlgo = "sha256";
+                      outputHash = builtins.hashString finalAttrs.outputHashAlgo (finalAttrs.baseNameExpected + "\n");
+                    }
+                  );
+            }
+          );
+      };
+    }
+  )
diff --git a/pkgs/development/python-modules/gfal2-util/fetchgfal2.nix b/pkgs/development/python-modules/gfal2-util/fetchgfal2.nix
index ab5ae45ef160a..d92cb9b96c064 100644
--- a/pkgs/development/python-modules/gfal2-util/fetchgfal2.nix
+++ b/pkgs/development/python-modules/gfal2-util/fetchgfal2.nix
@@ -1,19 +1,21 @@
-{ lib
-, runCommandLocal
-, gfal2-util
+{
+  lib,
+  runCommandLocal,
+  gfal2-util,
 }:
 
 # `url` and `urls` should only be overriden via `<pkg>.override`, but not `<pkg>.overrideAttrs`.
-{ name ? ""
-, pname ? ""
-, version ? ""
-, urls ? [ ]
-, url ? if urls == [ ] then abort "Expect either non-empty `urls` or `url`" else lib.head urls
-, hash ? lib.fakeHash
-, recursive ? false
-, intermediateDestUrls ? [ ]
-, extraGfalCopyFlags ? [ ]
-, allowSubstitutes ? true
+{
+  name ? "",
+  pname ? "",
+  version ? "",
+  urls ? [ ],
+  url ? if urls == [ ] then abort "Expect either non-empty `urls` or `url`" else lib.head urls,
+  hash ? lib.fakeHash,
+  recursive ? false,
+  intermediateDestUrls ? [ ],
+  extraGfalCopyFlags ? [ ],
+  allowSubstitutes ? true,
 }:
 
 (runCommandLocal name { } ''
@@ -26,23 +28,28 @@
     echo "gfal-copy failed trying to download from any of the urls" >&2
     exit "$ret"
   fi
-'').overrideAttrs (finalAttrs: previousAttrs:
-{
-  __structuredAttrs = true;
-  inherit allowSubstitutes;
-  nativeBuildInputs = [ gfal2-util ];
-  outputHashAlgo = null;
-  outputHashMode = if finalAttrs.recursive then "recursive" else "flat";
-  outputHash = hash;
-  inherit url;
-  urls = if urls == [ ] then lib.singleton url else urls;
-  gfalCopyFlags = extraGfalCopyFlags
-  ++ lib.optional finalAttrs.recursive "--recursive"
-  ;
-  inherit recursive intermediateDestUrls;
-} // (if (pname != "" && version != "") then {
-  inherit pname version;
-  name = "${finalAttrs.pname}-${finalAttrs.version}";
-} else {
-  name = if (name != "") then name else (baseNameOf url);
-}))
+'').overrideAttrs
+  (
+    finalAttrs: previousAttrs:
+    {
+      __structuredAttrs = true;
+      inherit allowSubstitutes;
+      nativeBuildInputs = [ gfal2-util ];
+      outputHashAlgo = null;
+      outputHashMode = if finalAttrs.recursive then "recursive" else "flat";
+      outputHash = hash;
+      inherit url;
+      urls = if urls == [ ] then lib.singleton url else urls;
+      gfalCopyFlags = extraGfalCopyFlags ++ lib.optional finalAttrs.recursive "--recursive";
+      inherit recursive intermediateDestUrls;
+    }
+    // (
+      if (pname != "" && version != "") then
+        {
+          inherit pname version;
+          name = "${finalAttrs.pname}-${finalAttrs.version}";
+        }
+      else
+        { name = if (name != "") then name else (baseNameOf url); }
+    )
+  )
diff --git a/pkgs/development/python-modules/gflags/default.nix b/pkgs/development/python-modules/gflags/default.nix
index 2cef0c11a900c..7e205f85f8811 100644
--- a/pkgs/development/python-modules/gflags/default.nix
+++ b/pkgs/development/python-modules/gflags/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, six, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  pytest,
+}:
 
 buildPythonPackage rec {
   version = "3.1.2";
@@ -21,7 +27,7 @@ buildPythonPackage rec {
 
   meta = {
     homepage = "https://github.com/google/python-gflags";
-    description = "A module for command line handling, similar to Google's gflags for C++";
+    description = "Module for command line handling, similar to Google's gflags for C++";
     license = lib.licenses.bsd3;
   };
 }
diff --git a/pkgs/development/python-modules/gflanguages/default.nix b/pkgs/development/python-modules/gflanguages/default.nix
index 9a3f77f957c02..058f241d37d76 100644
--- a/pkgs/development/python-modules/gflanguages/default.nix
+++ b/pkgs/development/python-modules/gflanguages/default.nix
@@ -1,25 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, protobuf
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools
-, setuptools-scm
-, uharfbuzz
-, youseedee
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  protobuf,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  uharfbuzz,
+  youseedee,
 }:
 
 buildPythonPackage rec {
   pname = "gflanguages";
-  version = "0.5.17";
+  version = "0.6.2";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-dScgRQ6usjSqV0FqDyP+KGvHL06wlTFVcO+MmZ2NMAs=";
+    hash = "sha256-v93mXDwHT/8Tau78ApLUR+dQCpL9jmRQp0BT5y/sfq4=";
   };
 
   pyproject = true;
@@ -28,21 +28,16 @@ buildPythonPackage rec {
   # ecosystem have begun upgrading from protobuf 3 to protobuf 4,
   # so we need to use protobuf 4 here as well to avoid a conflict
   # in the closure of fontbakery. It seems to be compatible enough.
-  pythonRelaxDeps = [
-    "protobuf"
-  ];
+  pythonRelaxDeps = [ "protobuf" ];
 
   build-system = [
     setuptools
     setuptools-scm
   ];
 
-  dependencies = [
-    protobuf
-  ];
+  dependencies = [ protobuf ];
 
   nativeCheckInputs = [
-    pythonRelaxDepsHook
     pytestCheckHook
     uharfbuzz
     youseedee
diff --git a/pkgs/development/python-modules/gfsubsets/default.nix b/pkgs/development/python-modules/gfsubsets/default.nix
index 31aa36151644b..ff2db29a1eb26 100644
--- a/pkgs/development/python-modules/gfsubsets/default.nix
+++ b/pkgs/development/python-modules/gfsubsets/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fonttools
-, importlib-resources
-, setuptools
-, setuptools-scm
-, youseedee
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fonttools,
+  importlib-resources,
+  setuptools,
+  setuptools-scm,
+  youseedee,
 }:
 
 buildPythonPackage rec {
   pname = "gfsubsets";
-  version = "2024.2.5";
+  version = "2024.5.9";
   gitTag = "v2024.02.05";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-g9QxLa3B1MMTs+jmj4CyJySZRU0zoFNYdbOZwHjKPaQ=";
+    hash = "sha256-OgpdcOJWX0o0Hy6LjRsxsZMAVWgKziM+bqe/FfJniZY=";
   };
 
   pyproject = true;
@@ -33,9 +34,7 @@ buildPythonPackage rec {
 
   # Package has no unit tests.
   doCheck = false;
-  pythonImportsCheck = [
-    "gfsubsets"
-  ];
+  pythonImportsCheck = [ "gfsubsets" ];
 
   meta = with lib; {
     description = "Codepoint definitions for the Google Fonts subsetter";
diff --git a/pkgs/development/python-modules/gftools/default.nix b/pkgs/development/python-modules/gftools/default.nix
new file mode 100644
index 0000000000000..2aec534c5353b
--- /dev/null
+++ b/pkgs/development/python-modules/gftools/default.nix
@@ -0,0 +1,207 @@
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pytestCheckHook,
+  setuptools,
+  setuptools-scm,
+  absl-py,
+  afdko,
+  axisregistry,
+  babelfont,
+  beautifulsoup4,
+  black,
+  brotli,
+  bumpfontversion,
+  coreutils,
+  diffenator2,
+  font-v,
+  fontbakery,
+  fontfeatures,
+  fontmake,
+  fonttools,
+  gflanguages,
+  gfsubsets,
+  glyphsets,
+  glyphslib,
+  harfbuzz,
+  jinja2,
+  nanoemoji,
+  networkx,
+  ninja,
+  opentype-feature-freezer,
+  ots-python,
+  packaging,
+  paintcompiler,
+  pillow,
+  protobuf,
+  pycairo,
+  pygit2,
+  pygithub,
+  pytest,
+  pyyaml,
+  requests,
+  rich,
+  ruamel-yaml,
+  skia-pathops,
+  statmake,
+  strictyaml,
+  tabulate,
+  ttfautohint-py,
+  ufomerge,
+  unidecode,
+  vharfbuzz,
+  vttlib,
+  python,
+}:
+
+let
+  fontmake' = python.withPackages (ps: [ ps.fontmake ] ++ ps.fontmake.optional-dependencies.json);
+  fonttools' = python.withPackages (ps: [ ps.fonttools ] ++ ps.fonttools.optional-dependencies.ufo);
+in
+buildPythonPackage rec {
+  pname = "gftools";
+  version = "0.9.70";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "googlefonts";
+    repo = "gftools";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-mZGkcIODzc2nuhAWU83BkhjWg4+8vnmCA4eXgDsyFy8=";
+  };
+
+  postPatch = ''
+    substituteInPlace \
+      Lib/gftools/builder/operations/{buildTTF,glyphs2ds,buildVariable,buildOTF}.py \
+      --replace-fail '"fontmake' '"${lib.getExe' fontmake' "fontmake"}'
+
+    substituteInPlace \
+      Lib/gftools/builder/operations/instantiateUfo.py \
+      --replace-fail "'fontmake" "'${lib.getExe' fontmake' "fontmake"}"
+
+    substituteInPlace \
+      Lib/gftools/builder/operations/{compress,subspace}.py \
+      --replace-fail '"fonttools' '"${lib.getExe' fonttools' "fonttools"}'
+
+    substituteInPlace \
+      Lib/gftools/builder/operations/hbsubset.py \
+      --replace-fail '"pyftsubset"' '"${lib.getExe' fonttools' "pyftsubset"}"' \
+      --replace-fail '"hb-subset"' '"${lib.getExe' harfbuzz "hb-subset"}"'
+
+    substituteInPlace \
+      Lib/gftools/builder/operations/autohintOTF.py \
+      --replace-fail '"otfautohint' '"${lib.getExe' afdko "otfautohint"}'
+
+    substituteInPlace \
+      Lib/gftools/builder/operations/paintcompiler.py \
+      --replace-fail '"paintcompiler' '"${lib.getExe paintcompiler}'
+
+    substituteInPlace \
+      Lib/gftools/builder/operations/featureFreeze.py \
+      --replace-fail '"pyftfeatfreeze' '"${lib.getExe opentype-feature-freezer}'
+
+    substituteInPlace \
+      Lib/gftools/builder/operations/copy.py \
+      --replace-fail '"cp' '"${lib.getExe' coreutils "cp"}'
+
+    substituteInPlace \
+      Lib/gftools/builder/operations/{fix,remap,autohint,buildStat,addSubset,remapLayout,buildVTT}.py \
+      --replace-fail '"gftools' '"${placeholder "out"}/bin/gftools'
+
+    substituteInPlace \
+      Lib/gftools/builder/operations/rename.py \
+      --replace-fail "'gftools" "'${placeholder "out"}t/bin/gftools"
+  '';
+
+  pythonRelaxDeps = [
+    "protobuf"
+    "pygit2"
+  ];
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    absl-py
+    afdko
+    axisregistry
+    babelfont
+    beautifulsoup4
+    brotli
+    bumpfontversion
+    font-v
+    fontfeatures
+    fontmake
+    fonttools
+    gflanguages
+    gfsubsets
+    glyphsets
+    glyphslib
+    jinja2
+    nanoemoji
+    networkx
+    ninja
+    ots-python
+    packaging
+    pillow
+    protobuf
+    pygit2
+    pygithub
+    pyyaml
+    requests
+    rich
+    ruamel-yaml
+    setuptools
+    skia-pathops
+    statmake
+    strictyaml
+    tabulate
+    ttfautohint-py
+    ufomerge
+    unidecode
+    vharfbuzz
+    vttlib
+  ] ++ fonttools.optional-dependencies.ufo ++ fontmake.optional-dependencies.json;
+
+  optional-dependencies = {
+    qa = [
+      diffenator2
+      fontbakery
+      pycairo
+    ];
+    test = [
+      black
+      pytest
+    ];
+  };
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  disabledTestPaths = [
+    # Wants none exsiting module
+    "bin/test_args.py"
+    # Requires internet
+    "tests/push/test_items.py"
+    "tests/test_gfgithub.py"
+    "tests/test_usage.py"
+    "tests/push/test_servers.py"
+    # Can't find directory
+    "tests/test_builder.py"
+    "tests/test_dependencies.py"
+    "tests/test_fix.py"
+  ];
+
+  pythonImportsCheck = [ "gftools" ];
+
+  meta = with lib; {
+    description = "Misc tools for working with the Google Fonts library";
+    homepage = "https://github.com/googlefonts/gftools";
+    changelog = "https://github.com/googlefonts/gftools/releases/tag/v${version}";
+    license = licenses.asl20;
+    mainProgram = "gftools";
+    maintainers = with maintainers; [ jopejoe1 ];
+  };
+}
diff --git a/pkgs/development/python-modules/gguf/default.nix b/pkgs/development/python-modules/gguf/default.nix
new file mode 100644
index 0000000000000..64b96698cc62f
--- /dev/null
+++ b/pkgs/development/python-modules/gguf/default.nix
@@ -0,0 +1,34 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  poetry-core,
+  pythonOlder,
+  tqdm,
+}:
+buildPythonPackage rec {
+  pname = "gguf";
+  version = "0.9.1";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-9ecJh+FbGcVF9qn3UztAM/swYzDrHzxclf0osUw/0zs=";
+  };
+
+  dependencies = [
+    numpy
+    poetry-core
+    tqdm
+  ];
+
+  meta = with lib; {
+    description = "Module for writing binary files in the GGUF format";
+    homepage = "https://ggml.ai/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ mitchmindtree ];
+  };
+}
diff --git a/pkgs/development/python-modules/ghapi/default.nix b/pkgs/development/python-modules/ghapi/default.nix
index c613809b347d1..feb509d4d87ee 100644
--- a/pkgs/development/python-modules/ghapi/default.nix
+++ b/pkgs/development/python-modules/ghapi/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, fastcore
-, packaging
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fastcore,
+  packaging,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "ghapi";
-  version = "1.0.3";
-  format = "setuptools";
+  version = "1.0.6";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -18,10 +19,12 @@ buildPythonPackage rec {
     owner = "fastai";
     repo = "ghapi";
     rev = "refs/tags/${version}";
-    hash = "sha256-nH3OciLhet4620WAEmm8mUAmlnpniyIsF2oIzqbZ7FI=";
+    hash = "sha256-ii19wuFAxMiGce37TNXRNSdvMcGWQjCfPukeqxySYnc=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     fastcore
     packaging
   ];
@@ -29,13 +32,12 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ghapi"
-  ];
+  pythonImportsCheck = [ "ghapi" ];
 
   meta = with lib; {
     description = "Python interface to GitHub's API";
     homepage = "https://github.com/fastai/ghapi";
+    changelog = "https://github.com/fastai/ghapi/releases/tag/${version}";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/ghdiff/default.nix b/pkgs/development/python-modules/ghdiff/default.nix
index 4bcde153ba326..6930655869d08 100644
--- a/pkgs/development/python-modules/ghdiff/default.nix
+++ b/pkgs/development/python-modules/ghdiff/default.nix
@@ -1,5 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi
-, zope-testrunner, six, chardet}:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  zope-testrunner,
+  six,
+  chardet,
+}:
 
 buildPythonPackage rec {
   pname = "ghdiff";
@@ -12,12 +18,15 @@ buildPythonPackage rec {
   };
 
   nativeCheckInputs = [ zope-testrunner ];
-  propagatedBuildInputs = [ six chardet ];
+  propagatedBuildInputs = [
+    six
+    chardet
+  ];
 
   meta = with lib; {
-    homepage =  "https://github.com/kilink/ghdiff";
+    homepage = "https://github.com/kilink/ghdiff";
     license = licenses.mit;
-    description = "Generate Github-style HTML for unified diffs.";
+    description = "Generate Github-style HTML for unified diffs";
     mainProgram = "ghdiff";
     maintainers = [ maintainers.mic92 ];
   };
diff --git a/pkgs/development/python-modules/ghp-import/default.nix b/pkgs/development/python-modules/ghp-import/default.nix
index 8d7ec98b13c75..f0e3938081325 100644
--- a/pkgs/development/python-modules/ghp-import/default.nix
+++ b/pkgs/development/python-modules/ghp-import/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python-dateutil
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python-dateutil,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-nFNcTGEZPC34hxIiVn1/1+UBTYNfl9x7dDkGniQT00M=";
   };
 
-  propagatedBuildInputs = [
-    python-dateutil
-  ];
+  propagatedBuildInputs = [ python-dateutil ];
 
   # Does not include any unit tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ghp_import"
-  ];
+  pythonImportsCheck = [ "ghp_import" ];
 
   meta = with lib; {
     description = "Copy your docs directly to the gh-pages branch";
diff --git a/pkgs/development/python-modules/ghrepo-stats/default.nix b/pkgs/development/python-modules/ghrepo-stats/default.nix
index 18bd6124b1529..e3532c3825a73 100644
--- a/pkgs/development/python-modules/ghrepo-stats/default.nix
+++ b/pkgs/development/python-modules/ghrepo-stats/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchFromGitHub
-, matplotlib
-, pygithub
-, pythonOlder
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitHub,
+  matplotlib,
+  pygithub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ghrepo_stats"
-  ];
+  pythonImportsCheck = [ "ghrepo_stats" ];
 
   meta = with lib; {
     description = "Python module and CLI tool for GitHub repo statistics";
diff --git a/pkgs/development/python-modules/gibberish-detector/default.nix b/pkgs/development/python-modules/gibberish-detector/default.nix
index b9d06fc34ccee..d03703b37e965 100644
--- a/pkgs/development/python-modules/gibberish-detector/default.nix
+++ b/pkgs/development/python-modules/gibberish-detector/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy27
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     sha256 = "1si0fkpnk9vjkwl31sq5jkyv3rz8a5f2nh3xq7591j9wv2b6dn0b";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "gibberish_detector" ];
 
diff --git a/pkgs/development/python-modules/gidgethub/default.nix b/pkgs/development/python-modules/gidgethub/default.nix
index e109f4fa04871..ac7549c9891e6 100644
--- a/pkgs/development/python-modules/gidgethub/default.nix
+++ b/pkgs/development/python-modules/gidgethub/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, flit
-, uritemplate
-, pyjwt
-, pytestCheckHook
-, aiohttp
-, httpx
-, importlib-resources
-, pytest-asyncio
-, pytest-tornasync
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  flit,
+  uritemplate,
+  pyjwt,
+  pytestCheckHook,
+  aiohttp,
+  httpx,
+  importlib-resources,
+  pytest-asyncio,
+  pytest-tornasync,
 }:
 
 buildPythonPackage rec {
@@ -25,15 +26,12 @@ buildPythonPackage rec {
     hash = "sha256-ns59N/vOuBm4BWDn7Vj5NuSKZdN+xfVtt5FFFWtCaiU=";
   };
 
-  nativeBuildInputs = [
-    flit
-  ];
+  nativeBuildInputs = [ flit ];
 
   propagatedBuildInputs = [
     uritemplate
     pyjwt
-  ]
-  ++ pyjwt.optional-dependencies.crypto;
+  ] ++ pyjwt.optional-dependencies.crypto;
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -51,7 +49,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "An async GitHub API library";
+    description = "Async GitHub API library";
     homepage = "https://github.com/brettcannon/gidgethub";
     license = licenses.asl20;
     maintainers = [ ];
diff --git a/pkgs/development/python-modules/gin-config/default.nix b/pkgs/development/python-modules/gin-config/default.nix
index 1f3105a8a8820..a64a1683d3730 100644
--- a/pkgs/development/python-modules/gin-config/default.nix
+++ b/pkgs/development/python-modules/gin-config/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-, enum34
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  enum34,
 }:
 
 buildPythonPackage rec {
@@ -13,17 +14,19 @@ buildPythonPackage rec {
   src = fetchPypi {
     inherit pname version;
     sha256 = "0c6ea5026ded927c8c93c990b01c695257c1df446e45e549a158cfbc79e19ed6";
-
   };
 
-  propagatedBuildInputs = [ six enum34 ];
+  propagatedBuildInputs = [
+    six
+    enum34
+  ];
 
   # PyPI archive does not ship with tests
-  doCheck= false;
+  doCheck = false;
 
   meta = with lib; {
     homepage = "https://github.com/google/gin-config";
-    description = "Gin provides a lightweight configuration framework for Python, based on dependency injection.";
+    description = "Gin provides a lightweight configuration framework for Python, based on dependency injection";
     license = licenses.asl20;
     maintainers = with maintainers; [ jethro ];
   };
diff --git a/pkgs/development/python-modules/gios/default.nix b/pkgs/development/python-modules/gios/default.nix
index 1d972641d3923..0a5632ad31de0 100644
--- a/pkgs/development/python-modules/gios/default.nix
+++ b/pkgs/development/python-modules/gios/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, dacite
-, fetchFromGitHub
-, pytest-asyncio
-, pytest-error-for-skips
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, syrupy
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  dacite,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytest-error-for-skips,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  syrupy,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-rjC4zWWtaPxuBcjiO9dVsXD4dTa47iwkKuSFx+QXeXw=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     aiohttp
@@ -48,9 +47,7 @@ buildPythonPackage rec {
     "test_invalid_station_id"
   ];
 
-  pythonImportsCheck = [
-    "gios"
-  ];
+  pythonImportsCheck = [ "gios" ];
 
   meta = with lib; {
     description = "Python client for getting air quality data from GIOS";
diff --git a/pkgs/development/python-modules/gipc/default.nix b/pkgs/development/python-modules/gipc/default.nix
index 297b6c9865dec..aed16c67ce017 100644
--- a/pkgs/development/python-modules/gipc/default.nix
+++ b/pkgs/development/python-modules/gipc/default.nix
@@ -1,33 +1,56 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, gevent
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gevent,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "gipc";
-  version = "1.4.0";
-  format = "setuptools";
+  version = "1.6.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "jgehrcke";
     repo = "gipc";
     rev = "refs/tags/${version}";
-    hash = "sha256-T5TqLanODyzJGyjDZz+75bbz3THxoobYnfJFQxAB76E=";
+    hash = "sha256-eYE7A1VDJ0NSshvdJKxPwGyVdW6BnyWoRSR1i1iTr8Y=";
   };
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "gevent>=1.5,<=21.12.0" "gevent>=1.5"
+      --replace-fail "gevent>=1.5,<=23.9.1" "gevent>=1.5"
   '';
 
-  propagatedBuildInputs = [
-    gevent
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ gevent ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "gipc" ];
+
+  disabledTests = [
+    # AttributeError
+    "test_all_handles_length"
+    "test_child"
+    "test_closeread"
+    "test_closewrite"
+    "test_early_readchild_exit"
+    "test_handlecount"
+    "test_handler"
+    "test_onewriter"
+    "test_readclose"
+    "test_singlemsg"
+    "test_twochannels_singlemsg"
+    "test_twoclose"
+    "test_twowriters"
+    "test_write_closewrite_read"
   ];
 
   meta = with lib; {
@@ -41,7 +64,8 @@ buildPythonPackage rec {
       anywhere within your gevent-powered application.
     '';
     homepage = "http://gehrcke.de/gipc";
+    changelog = "https://github.com/jgehrcke/gipc/blob/${version}/CHANGELOG.rst";
     license = licenses.mit;
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/gistyc/default.nix b/pkgs/development/python-modules/gistyc/default.nix
index 923f2069d052d..eaa216ee63c60 100644
--- a/pkgs/development/python-modules/gistyc/default.nix
+++ b/pkgs/development/python-modules/gistyc/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, certifi
-, click
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  certifi,
+  click,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -22,13 +23,11 @@ buildPythonPackage rec {
     requests
   ];
 
-  pythonImportsCheck = [
-    "gistyc"
-  ];
+  pythonImportsCheck = [ "gistyc" ];
 
   meta = with lib; {
     homepage = "https://github.com/ThomasAlbin/gistyc";
-    description = "A Python based GitHub GIST management tool";
+    description = "Python based GitHub GIST management tool";
     longDescription = ''
       gistyc is a Python-based library that enables developers to create, update
       and delete their GitHub GISTs. CLI capabilities allow you to execute the
diff --git a/pkgs/development/python-modules/git-annex-adapter/default.nix b/pkgs/development/python-modules/git-annex-adapter/default.nix
index 8af128e895a0c..7778ecd9ca883 100644
--- a/pkgs/development/python-modules/git-annex-adapter/default.nix
+++ b/pkgs/development/python-modules/git-annex-adapter/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, buildPythonPackage
-, cacert
-, fetchFromGitHub
-, fetchpatch
-, git-annex
-, gitMinimal
-, pygit2
-, pytestCheckHook
-, python
-, pythonOlder
-, setuptools
-, substituteAll
-, util-linux
+{
+  lib,
+  buildPythonPackage,
+  cacert,
+  fetchFromGitHub,
+  fetchpatch,
+  git-annex,
+  gitMinimal,
+  pygit2,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  substituteAll,
+  util-linux,
 }:
 
 buildPythonPackage rec {
@@ -48,9 +48,7 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     pygit2
@@ -63,9 +61,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "git_annex_adapter"
-  ];
+  pythonImportsCheck = [ "git_annex_adapter" ];
 
   disabledTests = [
     # KeyError and AssertionError
diff --git a/pkgs/development/python-modules/git-filter-repo/default.nix b/pkgs/development/python-modules/git-filter-repo/default.nix
index fa0fa0148b8d3..5591d87dd5a3d 100644
--- a/pkgs/development/python-modules/git-filter-repo/default.nix
+++ b/pkgs/development/python-modules/git-filter-repo/default.nix
@@ -1,44 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchPypi
-, fetchpatch
-, installShellFiles
-, pythonOlder
-, setuptools-scm
-, writeScript
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchPypi,
+  installShellFiles,
+  pythonOlder,
+  setuptools-scm,
+  writeScript,
 }:
 
 buildPythonPackage rec {
   pname = "git-filter-repo";
-  version = "2.38.0";
-  docs_version = "01ead411966a83dfcfb35f9d2e8a9f7f215eaa65";
+  version = "2.45.0";
+  docs_version = "71d71d4be238628bf9cb9b27be79b8bb824ed1a9";
   pyproject = true;
 
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-/hdT4Y8L1tPJtXhoyAEa59BWpuurcGcGOWoV71MScl4=";
+    pname = "git_filter_repo";
+    inherit version;
+    hash = "sha256-L6gP+NpUOCpuGJvBUi3Jhu56UqvL6eKBkvc8D2yLXqk=";
   };
 
   docs = fetchFromGitHub {
     owner = "newren";
     repo = "git-filter-repo";
     rev = docs_version;
-    hash = "sha256-Z/3w3Rguo8sfuc/OQ25eFbMfiOHjxQqPY6S32zuvoY4=";
+    hash = "sha256-m9NI7bLR5F+G7f3Dyi4sP6n4qz2i8cdBRuIn0OcpHAw=";
   };
 
-  patches = [
-    # https://github.com/newren/git-filter-repo/pull/498
-    (fetchpatch {
-      name = "remove-duplicate-script.patch";
-      url = "https://github.com/newren/git-filter-repo/commit/a59e67e7918e577147ca36a70916741be029c878.patch";
-      hash = "sha256-b0QHy9wMWuBWQoptdvLRT+9SRx2u2+11PnzEEB5F0Yo=";
-      stripLen = 1;
-    })
-  ];
-
   postInstall = ''
     installManPage ${docs}/man1/git-filter-repo.1
   '';
@@ -51,16 +42,21 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "git_filter_repo"
-  ];
+  pythonImportsCheck = [ "git_filter_repo" ];
 
   meta = with lib; {
     description = "Quickly rewrite git repository history";
-    mainProgram = "git-filter-repo";
     homepage = "https://github.com/newren/git-filter-repo";
-    license = with licenses; [ mit /* or */ gpl2Plus ];
-    maintainers = with maintainers; [ aiotter fab ];
+    changelog = "https://github.com/newren/git-filter-repo/releases/tag/v${version}";
+    license = with licenses; [
+      mit # or
+      gpl2Plus
+    ];
+    maintainers = with maintainers; [
+      aiotter
+      fab
+    ];
+    mainProgram = "git-filter-repo";
   };
 
   passthru.updateScript = writeScript "update-${pname}" ''
diff --git a/pkgs/development/python-modules/git-find-repos/default.nix b/pkgs/development/python-modules/git-find-repos/default.nix
new file mode 100644
index 0000000000000..d97d153ee6c11
--- /dev/null
+++ b/pkgs/development/python-modules/git-find-repos/default.nix
@@ -0,0 +1,28 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  setuptools-scm,
+}:
+buildPythonPackage rec {
+  pname = "git-find-repos";
+  version = "2.1.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "acroz";
+    repo = "git-find-repos";
+    rev = version;
+    sha256 = "sha256-4TuZlt6XH4//DBHPuIMl/i3Tp6Uft62dGCTAuZ2rseE=";
+  };
+
+  build-system = [ setuptools-scm ];
+
+  meta = {
+    description = "Simple CLI tool for finding git repositories";
+    homepage = "https://github.com/acroz/git-find-repos";
+    license = lib.licenses.mit;
+    mainProgram = "git-find-repos";
+    maintainers = [ lib.maintainers.yajo ];
+  };
+}
diff --git a/pkgs/development/python-modules/git-revise/default.nix b/pkgs/development/python-modules/git-revise/default.nix
index f64e4afa61ada..78fdc254baaab 100644
--- a/pkgs/development/python-modules/git-revise/default.nix
+++ b/pkgs/development/python-modules/git-revise/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, git
-, gnupg
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  git,
+  gnupg,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,7 +23,11 @@ buildPythonPackage rec {
 
   disabled = pythonOlder "3.8";
 
-  nativeCheckInputs = [ git gnupg pytestCheckHook ];
+  nativeCheckInputs = [
+    git
+    gnupg
+    pytestCheckHook
+  ];
 
   meta = with lib; {
     description = "Efficiently update, split, and rearrange git commits";
diff --git a/pkgs/development/python-modules/git-sweep/default.nix b/pkgs/development/python-modules/git-sweep/default.nix
index ac18f2604f83d..2adc0a2c9ed02 100644
--- a/pkgs/development/python-modules/git-sweep/default.nix
+++ b/pkgs/development/python-modules/git-sweep/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, gitpython
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  gitpython,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,19 +18,15 @@ buildPythonPackage rec {
     hash = "sha256-zSnxw3JHsFru9fOZSJZX+XOu144uJ0DaIKYlAtoHV7M=";
   };
 
-  propagatedBuildInputs = [
-    gitpython
-  ];
+  propagatedBuildInputs = [ gitpython ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "gitsweep"
-  ];
+  pythonImportsCheck = [ "gitsweep" ];
 
   meta = with lib; {
-    description = "A command-line tool that helps you clean up Git branches";
+    description = "Command-line tool that helps you clean up Git branches";
     mainProgram = "git-sweep";
     homepage = "https://github.com/arc90/git-sweep";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/git-url-parse/default.nix b/pkgs/development/python-modules/git-url-parse/default.nix
index b0c4c2077faf0..f49bf677ecc84 100644
--- a/pkgs/development/python-modules/git-url-parse/default.nix
+++ b/pkgs/development/python-modules/git-url-parse/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pbr
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pbr,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,27 +23,21 @@ buildPythonPackage rec {
       --replace " --cov giturlparse --cov-report term-missing" ""
   '';
 
-
   # Manually set version because prb wants to get it from the git
   # upstream repository (and we are installing from tarball instead)
   env.PBR_VERSION = version;
 
-  propagatedBuildInputs = [
-    pbr
-  ];
+  propagatedBuildInputs = [ pbr ];
 
   pythonImportsCheck = [ "giturlparse" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A simple GIT URL parser";
+    description = "Simple GIT URL parser";
     homepage = "https://github.com/coala/git-url-parse";
     changelog = "https://github.com/coala/git-url-parse/blob/${src.rev}/CHANGELOG.rst";
     license = licenses.mit;
     maintainers = with maintainers; [ blaggacao ];
   };
 }
-
diff --git a/pkgs/development/python-modules/git-versioner/default.nix b/pkgs/development/python-modules/git-versioner/default.nix
index 564bf1af9f610..ed2fc5ec732ee 100644
--- a/pkgs/development/python-modules/git-versioner/default.nix
+++ b/pkgs/development/python-modules/git-versioner/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, setuptools-scm
-, fetchFromGitLab
+{
+  lib,
+  buildPythonPackage,
+  setuptools-scm,
+  fetchFromGitLab,
 }:
 
 buildPythonPackage rec {
@@ -16,13 +17,9 @@ buildPythonPackage rec {
     hash = "sha256-bnpuFJSd4nBXJA75V61kiB+nU5pUzdEAIScfKx7aaGU=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  pythonImportsCheck = [
-    "__version__"
-  ];
+  pythonImportsCheck = [ "__version__" ];
 
   meta = with lib; {
     description = "Manage current / next version for project";
@@ -30,5 +27,4 @@ buildPythonPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ slotThe ];
   };
-
 }
diff --git a/pkgs/development/python-modules/gitdb/default.nix b/pkgs/development/python-modules/gitdb/default.nix
index 996387f45135c..6de58d1edd01a 100644
--- a/pkgs/development/python-modules/gitdb/default.nix
+++ b/pkgs/development/python-modules/gitdb/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools
-, smmap
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  smmap,
 }:
 
 buildPythonPackage rec {
@@ -22,24 +22,15 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     setuptools
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "smmap"
-  ];
+  pythonRelaxDeps = [ "smmap" ];
 
-  propagatedBuildInputs = [
-    smmap
-  ];
+  propagatedBuildInputs = [ smmap ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "gitdb"
-  ];
+  pythonImportsCheck = [ "gitdb" ];
 
   disabledTests = [
     # Tests need part which are not shipped with PyPI releases
@@ -58,6 +49,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/gitpython-developers/gitdb";
     changelog = "https://github.com/gitpython-developers/gitdb/releases/tag/${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/github-to-sqlite/default.nix b/pkgs/development/python-modules/github-to-sqlite/default.nix
index 67ec970bda7b6..20ca2879ae3f8 100644
--- a/pkgs/development/python-modules/github-to-sqlite/default.nix
+++ b/pkgs/development/python-modules/github-to-sqlite/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy3k
-, pytestCheckHook
-, pyyaml
-, requests
-, requests-mock
-, sqlite-utils
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy3k,
+  pytestCheckHook,
+  pyyaml,
+  requests,
+  requests-mock,
+  sqlite-utils,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,7 @@ buildPythonPackage rec {
     requests-mock
   ];
 
-  disabledTests = [
-    "test_scrape_dependents"
-  ];
+  disabledTests = [ "test_scrape_dependents" ];
 
   meta = with lib; {
     description = "Save data from GitHub to a SQLite database";
diff --git a/pkgs/development/python-modules/github-webhook/default.nix b/pkgs/development/python-modules/github-webhook/default.nix
index 9f05b74a2202a..5f01cdb0536f1 100644
--- a/pkgs/development/python-modules/github-webhook/default.nix
+++ b/pkgs/development/python-modules/github-webhook/default.nix
@@ -1,6 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi
-, flask
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flask,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -13,13 +16,16 @@ buildPythonPackage rec {
     sha256 = "b2444dbfd03deda35792bd00ebd1692597c2605c61445da79da6322afaca7a8d";
   };
 
-  propagatedBuildInputs = [ flask six ];
+  propagatedBuildInputs = [
+    flask
+    six
+  ];
 
   # touches network
   doCheck = false;
 
   meta = with lib; {
-    description = "A framework for writing webhooks for GitHub";
+    description = "Framework for writing webhooks for GitHub";
     homepage = "https://github.com/bloomberg/python-github-webhook";
     license = licenses.mit;
   };
diff --git a/pkgs/development/python-modules/github3-py/default.nix b/pkgs/development/python-modules/github3-py/default.nix
index 72fd8108f0c47..59535eb25a70e 100644
--- a/pkgs/development/python-modules/github3-py/default.nix
+++ b/pkgs/development/python-modules/github3-py/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, requests
-, uritemplate
-, python-dateutil
-, pyjwt
-, pytestCheckHook
-, betamax
-, betamax-matchers
-, hatchling
-, fetchpatch
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  requests,
+  uritemplate,
+  python-dateutil,
+  pyjwt,
+  pytestCheckHook,
+  betamax,
+  betamax-matchers,
+  hatchling,
+  fetchpatch,
 }:
 
 buildPythonPackage rec {
@@ -25,17 +26,14 @@ buildPythonPackage rec {
     hash = "sha256-MNVxB2dT78OJ7cf5qu8zik/LJLVNiWjV85sTQvRd3TY=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     pyjwt
     python-dateutil
     requests
     uritemplate
-  ]
-  ++ pyjwt.optional-dependencies.crypto;
+  ] ++ pyjwt.optional-dependencies.crypto;
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -63,7 +61,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github3py.readthedocs.org/en/master/";
-    description = "A wrapper for the GitHub API written in python";
+    description = "Wrapper for the GitHub API written in python";
     license = licenses.bsd3;
     maintainers = with maintainers; [ pSub ];
   };
diff --git a/pkgs/development/python-modules/githubkit/default.nix b/pkgs/development/python-modules/githubkit/default.nix
index 3a8f62f6a02d6..d27a9e672da20 100644
--- a/pkgs/development/python-modules/githubkit/default.nix
+++ b/pkgs/development/python-modules/githubkit/default.nix
@@ -8,6 +8,7 @@
   poetry-core,
   pydantic,
   pyjwt,
+  pytest-cov-stub,
   pytest-xdist,
   pytestCheckHook,
   pythonOlder,
@@ -16,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "githubkit";
-  version = "0.11.4";
+  version = "0.11.10";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,16 +26,14 @@ buildPythonPackage rec {
     owner = "yanyongyu";
     repo = "githubkit";
     rev = "refs/tags/v${version}";
-    hash = "sha256-uxXRDavp5c3e1MOZR2B4wUxEHh6K81avTeaIVsOdup8=";
+    hash = "sha256-04Cy4NtC3+/qv4kFcDB1aszmO6x1TguhCOF0CqxYPtw=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail "--cov=githubkit --cov-append --cov-report=term-missing" ""
-  '';
+  pythonRelaxDeps = [ "hishel" ];
 
   build-system = [ poetry-core ];
 
+
   dependencies = [
     hishel
     httpx
@@ -58,6 +57,7 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
     pytest-xdist
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
diff --git a/pkgs/development/python-modules/gitignore-parser/default.nix b/pkgs/development/python-modules/gitignore-parser/default.nix
index 50239a9b26532..2db2f54c9094c 100644
--- a/pkgs/development/python-modules/gitignore-parser/default.nix
+++ b/pkgs/development/python-modules/gitignore-parser/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,20 +21,14 @@ buildPythonPackage rec {
     hash = "sha256-y8A8OLgJccYWvKTJs7um8RwFFM0CswbwRojknBmk3TY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  pythonImportsCheck = [
-    "gitignore_parser"
-  ];
+  pythonImportsCheck = [ "gitignore_parser" ];
 
   meta = with lib; {
-    description = "A spec-compliant gitignore parser";
+    description = "Spec-compliant gitignore parser";
     homepage = "https://github.com/mherrmann/gitignore_parser";
     changelog = "https://github.com/mherrmann/gitignore_parser/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/gitlike-commands/default.nix b/pkgs/development/python-modules/gitlike-commands/default.nix
index c5e8ab506696f..1f1b7dbe3bf29 100644
--- a/pkgs/development/python-modules/gitlike-commands/default.nix
+++ b/pkgs/development/python-modules/gitlike-commands/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-Z0l8nCKov1iMJvI3YTHvg0ey+oPju3rgaKtmk6OX44g=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   # Module has no real tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "gitlike_commands"
-  ];
+  pythonImportsCheck = [ "gitlike_commands" ];
 
   meta = with lib; {
     description = "Easy python module for creating git-style subcommand handling";
diff --git a/pkgs/development/python-modules/gitpython/default.nix b/pkgs/development/python-modules/gitpython/default.nix
index eca3c326d0eba..8b6e93e2fe802 100644
--- a/pkgs/development/python-modules/gitpython/default.nix
+++ b/pkgs/development/python-modules/gitpython/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, ddt
-, fetchFromGitHub
-, gitdb
-, pkgs
-, pythonOlder
-, substituteAll
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  ddt,
+  fetchFromGitHub,
+  gitdb,
+  pkgs,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +27,7 @@ buildPythonPackage rec {
     ddt
     gitdb
     pkgs.gitMinimal
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.10") [ typing-extensions ];
 
   postPatch = ''
     substituteInPlace git/cmd.py \
@@ -39,9 +37,7 @@ buildPythonPackage rec {
   # Tests require a git repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "git"
-  ];
+  pythonImportsCheck = [ "git" ];
 
   meta = with lib; {
     description = "Python Git Library";
diff --git a/pkgs/development/python-modules/glad/default.nix b/pkgs/development/python-modules/glad/default.nix
index def3766765e89..8c9b40345a73d 100644
--- a/pkgs/development/python-modules/glad/default.nix
+++ b/pkgs/development/python-modules/glad/default.nix
@@ -1,4 +1,8 @@
-{ buildPythonPackage, fetchPypi, lib }:
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+}:
 
 buildPythonPackage rec {
   pname = "glad";
@@ -15,6 +19,6 @@ buildPythonPackage rec {
     mainProgram = "glad";
     homepage = "https://github.com/Dav1dde/glad";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/glad2/default.nix b/pkgs/development/python-modules/glad2/default.nix
index f38c944f64034..f5aeb99254317 100644
--- a/pkgs/development/python-modules/glad2/default.nix
+++ b/pkgs/development/python-modules/glad2/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jinja2
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jinja2,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-CGFa7TIZ6hx3WEvVlh2CO6sib4rDgx0JrfZcb6h3+Ow=";
   };
 
-  propagatedBuildInputs = [
-    jinja2
-  ];
+  propagatedBuildInputs = [ jinja2 ];
 
   # no python tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/glances-api/default.nix b/pkgs/development/python-modules/glances-api/default.nix
index 40c8d0698f186..bceb44eb0b6fd 100644
--- a/pkgs/development/python-modules/glances-api/default.nix
+++ b/pkgs/development/python-modules/glances-api/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "glances-api";
-  version = "0.6.0";
+  version = "0.8.0";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "home-assistant-ecosystem";
     repo = "python-glances-api";
     rev = "refs/tags/${version}";
-    hash = "sha256-k/F4q1+bO6p/PW8iEiiCX6yXKbS8SHXVR8mEGezOrRE=";
+    hash = "sha256-QAnwFX53jf7yWWa308/XTARNw5Qeo9K2zfD+6+HiFuM=";
   };
 
   build-system = [ poetry-core ];
diff --git a/pkgs/development/python-modules/glcontext/default.nix b/pkgs/development/python-modules/glcontext/default.nix
index 4014de18e12b5..900441f57bee3 100644
--- a/pkgs/development/python-modules/glcontext/default.nix
+++ b/pkgs/development/python-modules/glcontext/default.nix
@@ -1,34 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy3k
-, libGL
-, libX11
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  libGL,
+  libX11,
 }:
 
 buildPythonPackage rec {
   pname = "glcontext";
-  version = "2.5.0";
-  format = "setuptools";
+  version = "3.0.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "moderngl";
-    repo = pname;
+    repo = "glcontext";
     rev = "refs/tags/${version}";
-    hash = "sha256-ld+INKIGDZA2Y+sTxDPY7MI1nru6x+FeixngaJQzKkg=";
+    hash = "sha256-GC2sb6xQjg99xLcXSynLOOyyqNwCHZwZqrs9RZh99pY=";
   };
 
-  disabled = !isPy3k;
+  build-system = [ setuptools ];
 
-  buildInputs = [ libGL libX11 ];
+  buildInputs = [
+    libGL
+    libX11
+  ];
 
   postPatch = ''
     substituteInPlace glcontext/x11.cpp \
-      --replace '"libGL.so"' '"${libGL}/lib/libGL.so"' \
-      --replace '"libX11.so"' '"${libX11}/lib/libX11.so"'
+      --replace-fail '"libGL.so"' '"${libGL}/lib/libGL.so"' \
+      --replace-fail '"libX11.so"' '"${libX11}/lib/libX11.so"'
     substituteInPlace glcontext/egl.cpp \
-      --replace '"libGL.so"' '"${libGL}/lib/libGL.so"' \
-      --replace '"libEGL.so"' '"${libGL}/lib/libEGL.so"'
+      --replace-fail '"libGL.so"' '"${libGL}/lib/libGL.so"' \
+      --replace-fail '"libEGL.so"' '"${libGL}/lib/libEGL.so"'
   '';
 
   # Tests fail because they try to open display. See
@@ -43,6 +47,6 @@ buildPythonPackage rec {
     description = "OpenGL implementation for ModernGL";
     license = licenses.mit;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ friedelino ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/glean-parser/default.nix b/pkgs/development/python-modules/glean-parser/default.nix
index 86a4c6248f5d4..837c2d5d786bf 100644
--- a/pkgs/development/python-modules/glean-parser/default.nix
+++ b/pkgs/development/python-modules/glean-parser/default.nix
@@ -1,54 +1,49 @@
-{ lib
-, appdirs
-, buildPythonPackage
-, click
-, diskcache
-, fetchPypi
-, jinja2
-, jsonschema
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, setuptools-scm
-, yamllint
+{
+  lib,
+  appdirs,
+  buildPythonPackage,
+  click,
+  diskcache,
+  fetchPypi,
+  jinja2,
+  jsonschema,
+  pytestCheckHook,
+  pyyaml,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "glean-parser";
-  version = "13.0.1";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.8";
+  version = "14.5.2";
+  pyproject = true;
 
   src = fetchPypi {
     pname = "glean_parser";
     inherit version;
-    hash = "sha256-/urUy+xpMO04pI31uunrTuSGu0Am3fLzIGuF+AJ50ec=";
+    hash = "sha256-7EZtFRYYk477A/F8FsrrEmZr2InGRWK440vNLZXgcvc=";
   };
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "pytest-runner" "" \
-      --replace "MarkupSafe>=1.1.1,<=2.0.1" "MarkupSafe>=1.1.1"
+      --replace-fail "pytest-runner" ""
   '';
 
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     appdirs
     click
     diskcache
     jinja2
     jsonschema
     pyyaml
-    yamllint
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export HOME=$TMPDIR
@@ -62,16 +57,14 @@ buildPythonPackage rec {
     "test_yaml_lint"
   ];
 
-  pythonImportsCheck = [
-    "glean_parser"
-  ];
+  pythonImportsCheck = [ "glean_parser" ];
 
-  meta = with lib; {
+  meta = {
     description = "Tools for parsing the metadata for Mozilla's glean telemetry SDK";
     mainProgram = "glean_parser";
     homepage = "https://github.com/mozilla/glean_parser";
     changelog = "https://github.com/mozilla/glean_parser/blob/v${version}/CHANGELOG.md";
-    license = licenses.mpl20;
-    maintainers = with maintainers; [];
+    license = lib.licenses.mpl20;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/glean-sdk/default.nix b/pkgs/development/python-modules/glean-sdk/default.nix
index 83abb1089e30e..11b7157f4b12b 100644
--- a/pkgs/development/python-modules/glean-sdk/default.nix
+++ b/pkgs/development/python-modules/glean-sdk/default.nix
@@ -1,57 +1,42 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, cargo
-, cffi
-, fetchPypi
-, glean-parser
-, iso8601
-, lmdb
-, pkg-config
-, pytest-localserver
-, pytestCheckHook
-, python
-, pythonOlder
-, rustc
-, rustPlatform
-, semver
-, setuptools-rust
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  glean-parser,
+  pytest-localserver,
+  pytestCheckHook,
+  rustPlatform,
+  semver,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "glean-sdk";
-  version = "52.7.0";
-  format = "setuptools";
+  version = "60.4.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
-
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-sLjdGHiS7Co/oA9gQyAFkD14tAYjmwjWcPr4CRrzw/0=";
+  src = fetchFromGitHub {
+    owner = "mozilla";
+    repo = "glean";
+    rev = "v${version}";
+    hash = "sha256-C3wQdxPNBPQN6eUK6Vq0bA6Wpqb28e9BTBf7c/hTQxU=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-5TlgWcLmjklxhtDbB0aRF71iIRTJwetFj1Jii1DGdvU=";
+    hash = "sha256-XqOCHnvM64kZNifU5Wt/bFAvyRVy28ozWSwlvm/sMk8=";
   };
 
-  nativeBuildInputs = [
-    cargo
-    pkg-config
-    rustc
+  build-system = [
     rustPlatform.cargoSetupHook
-    setuptools-rust
-  ];
-
-  buildInputs = [
-    lmdb
+    rustPlatform.maturinBuildHook
+    setuptools
   ];
 
-  propagatedBuildInputs = [
-    cffi
+  dependencies = [
     glean-parser
-    iso8601
     semver
   ];
 
@@ -60,25 +45,23 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  pytestFlagsArray = [ "glean-core/python/tests" ];
+
   disabledTests = [
     # RuntimeError: No ping received.
     "test_client_activity_api"
     "test_flipping_upload_enabled_respects_order_of_events"
+    # A warning causes this test to fail
+    "test_get_language_tag_reports_the_tag_for_the_default_locale"
   ];
 
-  postInstallCheck = lib.optionalString stdenv.hostPlatform.isElf ''
-    readelf -a $out/${python.sitePackages}/glean/libglean_ffi.so | grep -F 'Shared library: [liblmdb.so'
-  '';
-
-  pythonImportsCheck = [
-    "glean"
-  ];
+  pythonImportsCheck = [ "glean" ];
 
-  meta = with lib; {
-    broken = stdenv.isDarwin;
+  meta = {
+    broken = stdenv.hostPlatform.isDarwin;
     description = "Telemetry client libraries and are a part of the Glean project";
     homepage = "https://mozilla.github.io/glean/book/index.html";
-    license = licenses.mpl20;
-    maintainers = with maintainers; [ melling ];
+    license = lib.licenses.mpl20;
+    maintainers = with lib.maintainers; [ melling ];
   };
 }
diff --git a/pkgs/development/python-modules/glfw/default.nix b/pkgs/development/python-modules/glfw/default.nix
index 16b4d2d21cfc1..56bb2a091748f 100644
--- a/pkgs/development/python-modules/glfw/default.nix
+++ b/pkgs/development/python-modules/glfw/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, glfw3
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  glfw3,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,16 +25,12 @@ buildPythonPackage rec {
     substituteInPlace glfw/library.py --replace "_get_library_search_paths()," "[ '${glfw3}/lib' ],"
   '';
 
-  propagatedBuildInputs = [
-    glfw3
-  ];
+  propagatedBuildInputs = [ glfw3 ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "glfw"
-  ];
+  pythonImportsCheck = [ "glfw" ];
 
   meta = with lib; {
     description = "Python bindings for GLFW";
diff --git a/pkgs/development/python-modules/glob2/default.nix b/pkgs/development/python-modules/glob2/default.nix
index 5d75da953ed59..6ceaca44406b4 100644
--- a/pkgs/development/python-modules/glob2/default.nix
+++ b/pkgs/development/python-modules/glob2/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -18,10 +19,10 @@ buildPythonPackage rec {
     ${python.interpreter} test.py
   '';
 
-  meta = with lib; {
+  meta = {
     description = "Version of the glob module that can capture patterns and supports recursive wildcards";
     homepage = "https://github.com/miracle2k/python-glob2/";
-    license = licenses.bsd3;
-    maintainers = [ ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ sigmanificient ];
   };
 }
diff --git a/pkgs/development/python-modules/globre/default.nix b/pkgs/development/python-modules/globre/default.nix
deleted file mode 100644
index a270a2b4c430c..0000000000000
--- a/pkgs/development/python-modules/globre/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib
-, pythonAtLeast
-, buildPythonPackage
-, fetchPypi
-, nose
-, coverage
-}:
-
-buildPythonPackage rec {
-  pname = "globre";
-  version = "0.1.5";
-  format = "setuptools";
-  # https://github.com/metagriffin/globre/issues/7
-  disabled = pythonAtLeast "3.7";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1qhjpg0722871dm5m7mmldf6c7mx58fbdvk1ix5i3s9py82448gf";
-  };
-
-  nativeCheckInputs = [ nose coverage ];
-
-  meta = with lib; {
-    homepage = "https://github.com/metagriffin/globre";
-    description = "A python glob-like regular expression generation library.";
-    maintainers = with maintainers; [ glittershark ];
-    license = licenses.gpl3;
-  };
-}
diff --git a/pkgs/development/python-modules/globus-sdk/default.nix b/pkgs/development/python-modules/globus-sdk/default.nix
index cd8528125780a..6f62566508727 100644
--- a/pkgs/development/python-modules/globus-sdk/default.nix
+++ b/pkgs/development/python-modules/globus-sdk/default.nix
@@ -1,19 +1,22 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, pyjwt
-, pytestCheckHook
-, pythonOlder
-, requests
-, responses
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  flaky,
+  pyjwt,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  responses,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "globus-sdk";
-  version = "3.39.0";
-  format = "setuptools";
+  version = "3.41.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -21,39 +24,29 @@ buildPythonPackage rec {
     owner = "globus";
     repo = "globus-sdk-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-DjGwwpXzYRq5/hiUs/l8kD/yA58vbhvrKirKDlWoAmY=";
+    hash = "sha256-FQO1D960mg0G/zYMo4J5MtJbPID4oE8UWNpTPKWtsic=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     cryptography
     requests
     pyjwt
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.10") [ typing-extensions ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-    responses
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  postPatch = ''
-    substituteInPlace setup.py \
-    --replace "pyjwt[crypto]>=2.0.0,<3.0.0" "pyjwt[crypto]>=2.0.0,<3.0.0"
-  '';
-
-  pytestFlagsArray = [
-    "-W"
-    "ignore::DeprecationWarning"
+  checkInputs = [
+    flaky
+    responses
   ];
 
-  pythonImportsCheck = [
-    "globus_sdk"
-  ];
+  pythonImportsCheck = [ "globus_sdk" ];
 
   meta = with lib; {
     description = "Interface to Globus REST APIs, including the Transfer API and the Globus Auth API";
-    homepage =  "https://github.com/globus/globus-sdk-python";
+    homepage = "https://github.com/globus/globus-sdk-python";
     changelog = "https://github.com/globus/globus-sdk-python/releases/tag/${version}";
     license = licenses.asl20;
   };
diff --git a/pkgs/development/python-modules/glom/default.nix b/pkgs/development/python-modules/glom/default.nix
index eb770051f09df..366f75e3bfedc 100644
--- a/pkgs/development/python-modules/glom/default.nix
+++ b/pkgs/development/python-modules/glom/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, attrs
-, boltons
-, buildPythonPackage
-, face
-, fetchPypi
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, pyyaml
+{
+  lib,
+  attrs,
+  boltons,
+  buildPythonPackage,
+  face,
+  fetchPypi,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -43,17 +44,17 @@ buildPythonPackage rec {
     export PATH=$out/bin:$PATH
   '';
 
-  disabledTests = [
-    # Test is outdated (was made for PyYAML 3.x)
-    "test_main_yaml_target"
-  ] ++ lib.optionals (pythonAtLeast "3.11") [
-    "test_regular_error_stack"
-    "test_long_target_repr"
-  ];
+  disabledTests =
+    [
+      # Test is outdated (was made for PyYAML 3.x)
+      "test_main_yaml_target"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.11") [
+      "test_regular_error_stack"
+      "test_long_target_repr"
+    ];
 
-  pythonImportsCheck = [
-    "glom"
-  ];
+  pythonImportsCheck = [ "glom" ];
 
   meta = with lib; {
     description = "Restructuring data, the Python way";
diff --git a/pkgs/development/python-modules/glueviz/default.nix b/pkgs/development/python-modules/glueviz/default.nix
index bb25d2edd3a91..4f13f73214e73 100644
--- a/pkgs/development/python-modules/glueviz/default.nix
+++ b/pkgs/development/python-modules/glueviz/default.nix
@@ -1,66 +1,68 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, dill
-, astropy
-, numpy
-, pandas
-, qt6
-, pyqt6
-, pyqt-builder
-, qtconsole
-, setuptools
-, setuptools-scm
-, scipy
-, ipython
-, ipykernel
-, h5py
-, matplotlib
-, xlrd
-, mpl-scatter-density
-, pvextractor
-, openpyxl
-, echo
-, pytest
-, pytest-flakes
-, pytest-cov
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  astropy,
+  dill,
+  echo,
+  fast-histogram,
+  h5py,
+  ipython,
+  matplotlib,
+  mpl-scatter-density,
+  numpy,
+  openpyxl,
+  pandas,
+  pyqt-builder,
+  pytestCheckHook,
+  qt6,
+  scipy,
+  setuptools,
+  setuptools-scm,
+  shapely,
+  xlrd,
 }:
 
 buildPythonPackage rec {
   pname = "glueviz";
-  version = "1.17.1";
-  format = "setuptools";
+  version = "1.21.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "glue-viz";
     repo = "glue";
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-nr84GJAGnpKzjZEFNsQujPysSQENwGxdNfPIYUCJkK4=";
+    hash = "sha256-/awIgfKbDFKM2WFlfpo5f/Px/N1aMXkV9eSTXts0aGo=";
   };
 
   buildInputs = [ pyqt-builder ];
-  nativeBuildInputs = [ setuptools setuptools-scm qt6.wrapQtAppsHook ];
-  propagatedBuildInputs = [
+
+  nativeBuildInputs = [ qt6.wrapQtAppsHook ];
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
     astropy
     dill
-    setuptools
-    scipy
-    numpy
-    matplotlib
-    pandas
-    pyqt6
-    qtconsole
-    ipython
-    ipykernel
+    echo
+    fast-histogram
     h5py
-    xlrd
+    ipython
+    matplotlib
     mpl-scatter-density
-    pvextractor
+    numpy
     openpyxl
-    echo
+    pandas
+    scipy
+    setuptools
+    shapely
+    xlrd
   ];
 
   dontConfigure = true;
@@ -69,10 +71,12 @@ buildPythonPackage rec {
   # qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
   doCheck = false;
 
-  nativeCheckInputs = [ pytest pytest-flakes pytest-cov ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "glue" ];
 
+  dontWrapQtApps = true;
+
   preFixup = ''
     makeWrapperArgs+=("''${qtWrapperArgs[@]}")
   '';
diff --git a/pkgs/development/python-modules/glymur/default.nix b/pkgs/development/python-modules/glymur/default.nix
index 4ff23443e40d2..b9a37779603cf 100644
--- a/pkgs/development/python-modules/glymur/default.nix
+++ b/pkgs/development/python-modules/glymur/default.nix
@@ -1,66 +1,78 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, lxml
-, numpy
-, openjpeg
-, pytestCheckHook
-, pythonOlder
-, scikit-image
-, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  substituteAll,
+  glibc,
+  libtiff,
+  openjpeg,
+  fetchFromGitHub,
+  lxml,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  scikit-image,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "glymur";
-  version = "0.12.5";
-  format = "pyproject";
+  version = "0.13.4";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "quintusdias";
-    repo = pname;
+    repo = "glymur";
     rev = "refs/tags/v${version}";
-    hash = "sha256-9NMSAt5yFRnlCUDP37/ozhDsS8FTdRkfjUz8kQwWzVc=";
+    hash = "sha256-RzRZuSNvlUrB+J93a1ob7dDMacZB082JwVHQ9Fce2JA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
+  patches = [
+    (substituteAll {
+      src = ./set-lib-paths.patch;
+      openjp2_lib = "${lib.getLib openjpeg}/lib/libopenjp2${stdenv.hostPlatform.extensions.sharedLibrary}";
+      tiff_lib = "${lib.getLib libtiff}/lib/libtiff${stdenv.hostPlatform.extensions.sharedLibrary}";
+    })
   ];
 
-  propagatedBuildInputs = [
+  postPatch = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
+    substituteInPlace glymur/lib/tiff.py \
+        --replace-fail "glymur_config('c')" "ctypes.CDLL('${lib.getLib glibc}/lib/libc.so.6')"
+  '';
+
+  __propagatedImpureHostDeps = lib.optional stdenv.hostPlatform.isDarwin "/usr/lib/libc.dylib";
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    lxml
     numpy
   ];
 
   nativeCheckInputs = [
-    lxml
     pytestCheckHook
     scikit-image
   ];
 
-  postConfigure = ''
-    substituteInPlace glymur/config.py \
-    --replace "path = read_config_file(libname)" "path = '${openjpeg}/lib/lib' + libname + ${if stdenv.isDarwin then "'.dylib'" else "'.so'"}"
+  preCheck = ''
+    export PATH="$out/bin:$PATH"
   '';
 
   disabledTestPaths = [
     # this test involves glymur's different ways of finding the openjpeg path on
     # fsh systems by reading an .rc file and such, and is obviated by the patch
-    # in postConfigure
     "tests/test_config.py"
-    "tests/test_tiff2jp2.py"
   ];
 
-  pythonImportsCheck = [
-    "glymur"
-  ];
+  pythonImportsCheck = [ "glymur" ];
 
-  meta = with lib; {
+  meta = {
     description = "Tools for accessing JPEG2000 files";
     homepage = "https://github.com/quintusdias/glymur";
-    changelog = "https://github.com/quintusdias/glymur/blob/v${version}/CHANGES.txt";
-    license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    changelog = "https://github.com/quintusdias/glymur/blob/${src.rev}/CHANGES.txt";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tomasajt ];
   };
 }
diff --git a/pkgs/development/python-modules/glymur/set-lib-paths.patch b/pkgs/development/python-modules/glymur/set-lib-paths.patch
new file mode 100644
index 0000000000000..4ae7b58b1cdc0
--- /dev/null
+++ b/pkgs/development/python-modules/glymur/set-lib-paths.patch
@@ -0,0 +1,16 @@
+diff --git a/glymur/config.py b/glymur/config.py
+index 962e299..dab44ba 100644
+--- a/glymur/config.py
++++ b/glymur/config.py
+@@ -53,6 +53,11 @@ def _determine_full_path(libname):
+     if path is not None:
+         return path
+ 
++    if libname == "openjp2":
++        return "@openjp2_lib@"
++    if libname == "tiff":
++        return "@tiff_lib@"
++
+     # No joy on config file.  Cygwin?  Cygwin is a bit of an odd case.
+     if platform.system().startswith('CYGWIN'):
+         g = pathlib.Path('/usr/bin').glob('cygopenjp2*.dll')
diff --git a/pkgs/development/python-modules/glyphsets/default.nix b/pkgs/development/python-modules/glyphsets/default.nix
index f59e7f09607d7..e918de58ae85a 100644
--- a/pkgs/development/python-modules/glyphsets/default.nix
+++ b/pkgs/development/python-modules/glyphsets/default.nix
@@ -1,47 +1,55 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, defcon
-, fonttools
-, gflanguages
-, glyphslib
-, pytestCheckHook
-, requests
-, setuptools
-, setuptools-scm
-, unicodedata2
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  defcon,
+  fonttools,
+  gflanguages,
+  glyphslib,
+  pytestCheckHook,
+  pyyaml,
+  requests,
+  setuptools,
+  setuptools-scm,
+  unicodedata2,
 }:
 
 buildPythonPackage rec {
   pname = "glyphsets";
-  version = "0.6.14";
+  version = "1.0.0";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-lMRgchadgKyfFLw6ZF1sJAKBAK75zmw77L34MW9p7TI=";
+    hash = "sha256-fa+W1IGIZcn1P1xNKm1Yb/TOuf4QdDVnIvlDkOLOcLY=";
   };
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace-fail "setuptools_scm>=8.0.4,<8.1" "setuptools_scm"
+  '';
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
   dependencies = [
     defcon
     fonttools
     gflanguages
     glyphslib
+    pyyaml
     requests
-    setuptools
     unicodedata2
   ];
-  build-system = [
-    setuptools-scm
-  ];
 
-  doCheck = true;
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
   preCheck = ''
     export PATH="$out/bin:$PATH"
   '';
+
   disabledTests = [
     # This "test" just tries to connect to PyPI and look for newer releases. Not needed.
     "test_dependencies"
diff --git a/pkgs/development/python-modules/glyphslib/default.nix b/pkgs/development/python-modules/glyphslib/default.nix
index 37f527f29e1b1..f490c9328fb12 100644
--- a/pkgs/development/python-modules/glyphslib/default.nix
+++ b/pkgs/development/python-modules/glyphslib/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fonttools
-, openstep-plist
-, ufolib2
-, pytestCheckHook
-, unicodedata2
-, setuptools-scm
-, ufonormalizer
-, xmldiff
-, defcon
-, ufo2ft
-, skia-pathops
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fonttools,
+  openstep-plist,
+  ufolib2,
+  pytestCheckHook,
+  unicodedata2,
+  setuptools-scm,
+  ufonormalizer,
+  xmldiff,
+  defcon,
+  ufo2ft,
+  skia-pathops,
 }:
 
 buildPythonPackage rec {
   pname = "glyphslib";
-  version = "6.7.0";
+  version = "6.8.2";
 
   format = "pyproject";
 
@@ -24,7 +25,7 @@ buildPythonPackage rec {
     owner = "googlefonts";
     repo = "glyphsLib";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Fhp/2nK1LFgpJ3J7ZTxl2jKT6sCDyqT5qlLCtbnUejM=";
+    hash = "sha256-AcAk9lFueIWYsDK1ESSK6D0/i1qW7udDfUa1pFRqGQs=";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/glyphtools/default.nix b/pkgs/development/python-modules/glyphtools/default.nix
index 0f1f2066c02b4..814c7a74d037b 100644
--- a/pkgs/development/python-modules/glyphtools/default.nix
+++ b/pkgs/development/python-modules/glyphtools/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, beziers
-, glyphslib
-, numpy
-, setuptoolsCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  beziers,
+  glyphslib,
+  numpy,
 }:
 
 buildPythonPackage rec {
@@ -24,12 +24,10 @@ buildPythonPackage rec {
   ];
 
   # A unit test suite does exist, but it only contains a dummy test that
-  # doesn't test anything. It does import the module though so we still run it.
-  doCheck = true;
-  nativeCheckInputs = [
-    # Upstream apparently prefers the deprecated setuptools 'test' command.
-    setuptoolsCheckHook
-  ];
+  # imports the library.
+  doCheck = false;
+
+  pythonImportsCheck = [ "glyphtools" ];
 
   meta = with lib; {
     description = "Python library for extracting information from font glyphs";
diff --git a/pkgs/development/python-modules/gmpy/default.nix b/pkgs/development/python-modules/gmpy/default.nix
index 072ef985dc01c..d68f038ec3b96 100644
--- a/pkgs/development/python-modules/gmpy/default.nix
+++ b/pkgs/development/python-modules/gmpy/default.nix
@@ -1,28 +1,39 @@
-{ buildPythonPackage, fetchurl, isPyPy, gmp, pythonAtLeast } :
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPyPy,
+  pythonAtLeast,
+  setuptools,
+  gmp,
+}:
 
-let
+buildPythonPackage rec {
   pname = "gmpy";
   version = "1.17";
-  format = "setuptools";
-in
-
-buildPythonPackage {
-  inherit pname version;
+  pyproject = true;
 
   # Python 3.11 has finally made changes to its C API for which gmpy 1.17,
   # published in 2013, would require patching. It seems unlikely that any
   # patches will be forthcoming.
   disabled = isPyPy || pythonAtLeast "3.11";
 
-  src = fetchurl {
-    url = "mirror://pypi/g/gmpy/${pname}-${version}.zip";
-    sha256 = "1a79118a5332b40aba6aa24b051ead3a31b9b3b9642288934da754515da8fa14";
+  src = fetchFromGitHub {
+    owner = "aleaxit";
+    repo = "gmpy";
+    rev = "refs/tags/gmpy_${lib.replaceStrings [ "." ] [ "_" ] version}";
+    hash = "sha256-kMidOjhKJlDRu2qaiq9c+XcwD1tNAoPhRTvvGcOJe8I=";
   };
 
+  build-system = [ setuptools ];
+
   buildInputs = [ gmp ];
 
+  pythonImportsCheck = [ "gmpy" ];
+
   meta = {
     description = "GMP or MPIR interface to Python 2.4+ and 3.x";
     homepage = "https://github.com/aleaxit/gmpy/";
+    license = lib.licenses.lgpl21Plus;
   };
 }
diff --git a/pkgs/development/python-modules/gmpy2/default.nix b/pkgs/development/python-modules/gmpy2/default.nix
index b5a602d4f222f..713cb42faef8d 100644
--- a/pkgs/development/python-modules/gmpy2/default.nix
+++ b/pkgs/development/python-modules/gmpy2/default.nix
@@ -1,37 +1,79 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPyPy
-, gmp
-, mpfr
-, libmpc
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPyPy,
+  pythonOlder,
+  setuptools,
+  gmp,
+  mpfr,
+  libmpc,
+  pytestCheckHook,
+  hypothesis,
+  cython,
+  mpmath,
+  # Reverse dependency
+  sage,
 }:
 
-let
+buildPythonPackage rec {
   pname = "gmpy2";
-  version = "2.1.2";
-  format = "setuptools";
-in
+  version = "2.2.0a2";
+  pyproject = true;
 
-buildPythonPackage {
-  inherit pname version;
-
-  disabled = isPyPy;
+  disabled = isPyPy || pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "aleaxit";
     repo = "gmpy";
-    rev = "gmpy2-${version}";
-    hash = "sha256-ARCttNzRA+Ji2j2NYaSCDXgvoEg01T9BnYadyqON2o0=";
+    rev = "refs/tags/gmpy2-${version}";
+    hash = "sha256-luLEDEY1cezhzZo4fXmM/MUg2YyAaz7n0HwSpbNayP8=";
   };
 
-  buildInputs = [ gmp mpfr libmpc ];
+  build-system = [ setuptools ];
+
+  buildInputs = [
+    gmp
+    mpfr
+    libmpc
+  ];
+
+  # make relative imports in tests work properly
+  preCheck = ''
+    rm gmpy2 -r
+  '';
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    hypothesis
+    cython
+    mpmath
+  ];
+
+  disabledTests =
+    lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
+      # issue with some overflow logic
+      "test_mpz_to_bytes"
+      "test_mpz_from_bytes"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # TypeError: mpq() requires numeric or string argument
+      # not sure why it only fails on Darwin
+      "test_mpq_from_Decimal"
+    ];
 
   pythonImportsCheck = [ "gmpy2" ];
 
-  meta = with lib; {
-    description = "GMP/MPIR, MPFR, and MPC interface to Python 2.6+ and 3.x";
+  passthru.tests = {
+    inherit sage;
+  };
+
+  meta = {
+    changelog = "https://github.com/aleaxit/gmpy/blob/${src.rev}/docs/history.rst";
+    description = "Interface to GMP, MPFR, and MPC for Python 3.7+";
     homepage = "https://github.com/aleaxit/gmpy/";
-    license = licenses.gpl3Plus;
+    license = lib.licenses.lgpl3Plus;
+    maintainers = with lib.maintainers; [ tomasajt ];
   };
 }
diff --git a/pkgs/development/python-modules/gmqtt/default.nix b/pkgs/development/python-modules/gmqtt/default.nix
new file mode 100644
index 0000000000000..e56b9f4cfed11
--- /dev/null
+++ b/pkgs/development/python-modules/gmqtt/default.nix
@@ -0,0 +1,41 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+
+  # build-system
+  setuptools,
+
+  # tests
+  pytestCheckHook,
+  pytest-asyncio,
+}:
+
+buildPythonPackage rec {
+  pname = "gmqtt";
+  version = "0.6.16";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-3dH9wcauYE50N3z3DpnwZ+V5wDwccaas1JThmek7f6Q=";
+  };
+
+  build-system = [ setuptools ];
+
+  # Tests require local socket connection which is forbidden in the sandbox
+  doCheck = false;
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-asyncio
+  ];
+  pythonImportsCheck = [ "gmqtt" ];
+
+  meta = {
+    description = "Python MQTT v5.0 async client";
+    homepage = "https://github.com/wialon/gmqtt";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ doronbehar ];
+  };
+}
diff --git a/pkgs/development/python-modules/gntp/default.nix b/pkgs/development/python-modules/gntp/default.nix
index 4376a03782239..2f2661700d925 100644
--- a/pkgs/development/python-modules/gntp/default.nix
+++ b/pkgs/development/python-modules/gntp/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "gntp";
@@ -10,7 +14,10 @@ buildPythonPackage rec {
     sha256 = "1q6scs8lp84v0aph6b5c9jhv51rhq2vmzpdd38db92ybkq0g597l";
   };
 
-  pythonImportsCheck = [ "gntp" "gntp.notifier" ];
+  pythonImportsCheck = [
+    "gntp"
+    "gntp.notifier"
+  ];
 
   # requires a growler service to be running
   doCheck = false;
diff --git a/pkgs/development/python-modules/gnureadline/default.nix b/pkgs/development/python-modules/gnureadline/default.nix
index c3a2434eeea68..f0db91f45cc09 100644
--- a/pkgs/development/python-modules/gnureadline/default.nix
+++ b/pkgs/development/python-modules/gnureadline/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPyPy
-, pkgs
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  pkgs,
 }:
 
 buildPythonPackage rec {
-  version = "8.1.2";
+  version = "8.2.10";
   format = "setuptools";
   pname = "gnureadline";
   disabled = isPyPy;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-QmKmqjVqsi72QvQ6f5TrQqctbwxTLttOjGuTP1cwVtI=";
+    hash = "sha256-p0a6mNTeN7B55C2Um3BMM8FoswvR+QcaHSXJ2ppEmZc=";
   };
 
   buildInputs = [ pkgs.ncurses ];
@@ -22,9 +23,8 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "The standard Python readline extension statically linked against the GNU readline library";
+    description = "Standard Python readline extension statically linked against the GNU readline library";
     homepage = "https://github.com/ludwigschwardt/python-gnureadline";
     license = licenses.gpl3;
   };
-
 }
diff --git a/pkgs/development/python-modules/goalzero/default.nix b/pkgs/development/python-modules/goalzero/default.nix
index 806d486d79cd9..21cdfcdc594db 100644
--- a/pkgs/development/python-modules/goalzero/default.nix
+++ b/pkgs/development/python-modules/goalzero/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-h/EaEOe0zvnO5BYfcIyC3Vq8sPED6ts1IeI/GM+vm7c=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # no tests implemented
   doCheck = false;
 
-  pythonImportsCheck = [
-    "goalzero"
-  ];
+  pythonImportsCheck = [ "goalzero" ];
 
   meta = with lib; {
     description = "Goal Zero Yeti REST Api Library";
diff --git a/pkgs/development/python-modules/gocardless-pro/default.nix b/pkgs/development/python-modules/gocardless-pro/default.nix
index a1c5cff80ddab..c87af7633b86f 100644
--- a/pkgs/development/python-modules/gocardless-pro/default.nix
+++ b/pkgs/development/python-modules/gocardless-pro/default.nix
@@ -1,25 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, six
-, pytestCheckHook
-, responses
-, nose
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  six,
+  setuptools,
+  pytestCheckHook,
+  responses,
 }:
 
 buildPythonPackage rec {
   pname = "gocardless-pro";
-  version = "1.51.0";
-  format = "setuptools";
+  version = "1.53.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "gocardless";
     repo = "gocardless-pro-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-4pyVcyEa8iex7ngTibxWYu4HeW+6V5OASkxqjHIOe2Y=";
+    hash = "sha256-Z58akjaYuvKVQWFfiP5TZlM/+4CB/vmLzd4eWmnWV90=";
   };
 
+  build-system = [ setuptools ];
+
   propagatedBuildInputs = [
     requests
     six
@@ -30,15 +33,13 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     pytestCheckHook
     responses
-    nose
   ];
 
   meta = with lib; {
-    description = "A client library for the GoCardless Pro API";
+    description = "Client library for the GoCardless Pro API";
     homepage = "https://github.com/gocardless/gocardless-pro-python";
     changelog = "https://github.com/gocardless/gocardless-pro-python/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ blaggacao ];
   };
 }
-
diff --git a/pkgs/development/python-modules/goobook/default.nix b/pkgs/development/python-modules/goobook/default.nix
index 2f3884aa07ff0..921c08f8bbec9 100644
--- a/pkgs/development/python-modules/goobook/default.nix
+++ b/pkgs/development/python-modules/goobook/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitLab
-, pythonOlder
-, docutils
-, installShellFiles
-, poetry-core
-, google-api-python-client
-, simplejson
-, oauth2client
-, setuptools
-, pyxdg
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  pythonOlder,
+  docutils,
+  installShellFiles,
+  poetry-core,
+  google-api-python-client,
+  simplejson,
+  oauth2client,
+  setuptools,
+  pyxdg,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/goocalendar/default.nix b/pkgs/development/python-modules/goocalendar/default.nix
index a9d69447c2cee..75111fd1bc78e 100644
--- a/pkgs/development/python-modules/goocalendar/default.nix
+++ b/pkgs/development/python-modules/goocalendar/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, gobject-introspection
-, goocanvas2
-, gtk3
-, pkg-config
-, pygobject3
-, pythonOlder
- }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  gobject-introspection,
+  goocanvas2,
+  gtk3,
+  pkg-config,
+  pygobject3,
+  pythonOlder,
+}:
 
 buildPythonPackage rec {
   pname = "goocalendar";
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     gobject-introspection
   ];
 
-  propagatedBuildInputs = [
-    pygobject3
-  ];
+  propagatedBuildInputs = [ pygobject3 ];
 
   buildInputs = [
     gtk3
@@ -39,12 +38,10 @@ buildPythonPackage rec {
   # No upstream tests available
   doCheck = false;
 
-  pythonImportsCheck = [
-    "goocalendar"
-  ];
+  pythonImportsCheck = [ "goocalendar" ];
 
   meta = with lib; {
-    description = "A calendar widget for GTK using PyGoocanvas";
+    description = "Calendar widget for GTK using PyGoocanvas";
     homepage = "https://goocalendar.tryton.org/";
     changelog = "https://foss.heptapod.net/tryton/goocalendar/-/blob/${version}/CHANGELOG";
     license = licenses.gpl2Only;
diff --git a/pkgs/development/python-modules/goodwe/default.nix b/pkgs/development/python-modules/goodwe/default.nix
index 8e4eb71a97dc3..2bc0b940952a4 100644
--- a/pkgs/development/python-modules/goodwe/default.nix
+++ b/pkgs/development/python-modules/goodwe/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "goodwe";
-  version = "0.3.3";
+  version = "0.4.8";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "marcelblijleven";
     repo = "goodwe";
     rev = "refs/tags/v${version}";
-    hash = "sha256-CIEv3srjyVWQ1UGKVRwPXpzrND/8hTbw6HSlko9+AIk=";
+    hash = "sha256-EsMv4hzGsAV9OTFo2b/omM4hx7XxUcdO6rrMzQ3DmNQ=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/google-ai-generativelanguage/default.nix b/pkgs/development/python-modules/google-ai-generativelanguage/default.nix
index f19df6658fd22..662631c36fb2a 100644
--- a/pkgs/development/python-modules/google-ai-generativelanguage/default.nix
+++ b/pkgs/development/python-modules/google-ai-generativelanguage/default.nix
@@ -17,14 +17,14 @@
 
 buildPythonPackage rec {
   pname = "google-ai-generativelanguage";
-  version = "0.6.2";
+  version = "0.6.7";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-MIeRrDudrQFbNZFylwc5qjdT3VQhQqQW0H+foEfiI4Y=";
+    hash = "sha256-6eLvojtiwxGPhkFu75zEgBkjDScVxVWsYfnh6oBQMTI=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/google-api-core/default.nix b/pkgs/development/python-modules/google-api-core/default.nix
index 3a9b0f17c9a8b..ccfeaa3debacb 100644
--- a/pkgs/development/python-modules/google-api-core/default.nix
+++ b/pkgs/development/python-modules/google-api-core/default.nix
@@ -1,36 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-auth
-, googleapis-common-protos
-, grpcio
-, grpcio-gcp
-, grpcio-status
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-auth,
+  googleapis-common-protos,
+  grpcio,
+  grpcio-gcp,
+  grpcio-status,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-api-core";
-  version = "2.18.0";
+  version = "2.19.0";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Ytl0F7/GdNbO8lHlxNY5qWVeAMRVKMQ2T7/rtHjOcqk=";
+    hash = "sha256-zxt8JpQEeIbSrxEooDrpnjkRCKCIBPh8/TWXDknJzRA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     googleapis-common-protos
@@ -45,12 +44,8 @@ buildPythonPackage rec {
       grpcio
       grpcio-status
     ];
-    grpcgcp = [
-      grpcio-gcp
-    ];
-    grpcio-gcp = [
-      grpcio-gcp
-    ];
+    grpcgcp = [ grpcio-gcp ];
+    grpcio-gcp = [ grpcio-gcp ];
   };
 
   nativeCheckInputs = [
@@ -79,9 +74,7 @@ buildPythonPackage rec {
     "test_exception_with_error_code"
   ];
 
-  pythonImportsCheck = [
-    "google.api_core"
-  ];
+  pythonImportsCheck = [ "google.api_core" ];
 
   meta = with lib; {
     description = "Core Library for Google Client Libraries";
@@ -92,6 +85,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/python-api-core";
     changelog = "https://github.com/googleapis/python-api-core/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-api-python-client/default.nix b/pkgs/development/python-modules/google-api-python-client/default.nix
index e88ee4650f060..3cb93fc574194 100644
--- a/pkgs/development/python-modules/google-api-python-client/default.nix
+++ b/pkgs/development/python-modules/google-api-python-client/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "google-api-python-client";
-  version = "2.126.0";
+  version = "2.135.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-l8BBBjDivr0ZTZnpG9Yg2rW8a27AvwM/mpEJtwC4Oss=";
+    hash = "sha256-tVKigSPtlUkwNWmNuA6O14yRBqi0IuY6F1FQubVbcE4=";
   };
 
   build-system = [ setuptools ];
@@ -41,7 +41,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "googleapiclient" ];
 
   meta = with lib; {
-    description = "The official Python client library for Google's discovery based APIs";
+    description = "Official Python client library for Google's discovery based APIs";
     longDescription = ''
       These client libraries are officially supported by Google. However, the
       libraries are considered complete and are in maintenance mode. This means
@@ -51,6 +51,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/google/google-api-python-client";
     changelog = "https://github.com/googleapis/google-api-python-client/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-auth-httplib2/default.nix b/pkgs/development/python-modules/google-auth-httplib2/default.nix
index daf7a64de53a3..ef1ad2a2fa901 100644
--- a/pkgs/development/python-modules/google-auth-httplib2/default.nix
+++ b/pkgs/development/python-modules/google-auth-httplib2/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flask
-, google-auth
-, httplib2
-, mock
-, pytest-localserver
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flask,
+  google-auth,
+  httplib2,
+  mock,
+  pytest-localserver,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -41,6 +42,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/GoogleCloudPlatform/google-auth-library-python-httplib2";
     changelog = "https://github.com/googleapis/google-auth-library-python-httplib2/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-auth-oauthlib/default.nix b/pkgs/development/python-modules/google-auth-oauthlib/default.nix
index 84693b839de93..2d4e0bed73acd 100644
--- a/pkgs/development/python-modules/google-auth-oauthlib/default.nix
+++ b/pkgs/development/python-modules/google-auth-oauthlib/default.nix
@@ -1,64 +1,64 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, click
-, mock
-, pytestCheckHook
-, google-auth
-, requests-oauthlib
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  click,
+  mock,
+  pytestCheckHook,
+  google-auth,
+  requests-oauthlib,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "google-auth-oauthlib";
-  version = "1.2.0";
+  version = "1.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-KS0tN4M0nysHNKCgIHseHjIqwZPCwJ2PfGE/t8xQHqg=";
+    pname = "google_auth_oauthlib";
+    inherit version;
+    hash = "sha256-r9DK0JKi6qU82OgphVfW3hA0xstKdAUAtTV7ZIr5cmM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-auth
     requests-oauthlib
   ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     tool = [ click ];
   };
 
   nativeCheckInputs = [
     mock
     pytestCheckHook
-  ] ++ passthru.optional-dependencies.tool;
+  ] ++ optional-dependencies.tool;
 
-  disabledTests = [
-    # Flaky test. See https://github.com/NixOS/nixpkgs/issues/288424#issuecomment-1941609973.
-    "test_run_local_server_occupied_port"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # This test fails if the hostname is not associated with an IP (e.g., in `/etc/hosts`).
-    "test_run_local_server_bind_addr"
-  ];
+  disabledTests =
+    [
+      # Flaky test. See https://github.com/NixOS/nixpkgs/issues/288424#issuecomment-1941609973.
+      "test_run_local_server_occupied_port"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # This test fails if the hostname is not associated with an IP (e.g., in `/etc/hosts`).
+      "test_run_local_server_bind_addr"
+    ];
 
-  pythonImportsCheck = [
-    "google_auth_oauthlib"
-  ];
+  pythonImportsCheck = [ "google_auth_oauthlib" ];
 
   meta = with lib; {
-    changelog = "https://github.com/googleapis/google-auth-library-python-oauthlib/blob/v${version}/CHANGELOG.md";
     description = "Google Authentication Library: oauthlib integration";
     homepage = "https://github.com/GoogleCloudPlatform/google-auth-library-python-oauthlib";
+    changelog = "https://github.com/googleapis/google-auth-library-python-oauthlib/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    mainProgram = "google-oauthlib-tool";
     maintainers = with maintainers; [ terlar ];
+    mainProgram = "google-oauthlib-tool";
   };
 }
diff --git a/pkgs/development/python-modules/google-auth/default.nix b/pkgs/development/python-modules/google-auth/default.nix
index efe5dcd33541d..30ea8208ff8ef 100644
--- a/pkgs/development/python-modules/google-auth/default.nix
+++ b/pkgs/development/python-modules/google-auth/default.nix
@@ -1,44 +1,43 @@
-{ lib
-, stdenv
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, cachetools
-, cryptography
-, fetchPypi
-, flask
-, freezegun
-, grpcio
-, mock
-, oauth2client
-, pyasn1-modules
-, pyopenssl
-, pytest-asyncio
-, pytest-localserver
-, pytestCheckHook
-, pythonOlder
-, pyu2f
-, requests
-, responses
-, rsa
-, setuptools
+{
+  lib,
+  stdenv,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  cachetools,
+  cryptography,
+  fetchPypi,
+  flask,
+  freezegun,
+  grpcio,
+  mock,
+  oauth2client,
+  pyasn1-modules,
+  pyopenssl,
+  pytest-asyncio,
+  pytest-localserver,
+  pytestCheckHook,
+  pythonOlder,
+  pyu2f,
+  requests,
+  responses,
+  rsa,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-auth";
-  version = "2.28.1";
+  version = "2.30.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-NPwwRsJXztzxYi/Esx/Cvnkj2bTUSXPUgRJezFDYOIU=";
+    hash = "sha256-q2MKEyD2cgkJrXan29toQc31xmsyjWkAJ+SGe9+xZog=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     cachetools
@@ -59,35 +58,33 @@ buildPythonPackage rec {
       cryptography
       pyopenssl
     ];
-    reauth = [
-      pyu2f
-    ];
-    requests = [
-      requests
-    ];
+    reauth = [ pyu2f ];
+    requests = [ requests ];
   };
 
-  nativeCheckInputs = [
-    aioresponses
-    flask
-    freezegun
-    grpcio
-    mock
-    oauth2client
-    pytest-asyncio
-    pytest-localserver
-    pytestCheckHook
-    responses
-  ] ++ passthru.optional-dependencies.aiohttp
-  ++ passthru.optional-dependencies.enterprise_cert
-  ++ passthru.optional-dependencies.reauth;
+  nativeCheckInputs =
+    [
+      aioresponses
+      flask
+      freezegun
+      grpcio
+      mock
+      oauth2client
+      pytest-asyncio
+      pytest-localserver
+      pytestCheckHook
+      responses
+    ]
+    ++ passthru.optional-dependencies.aiohttp
+    ++ passthru.optional-dependencies.enterprise_cert
+    ++ passthru.optional-dependencies.reauth;
 
   pythonImportsCheck = [
     "google.auth"
     "google.oauth2"
   ];
 
-  disabledTestPaths = lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
+  disabledTestPaths = lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
     # Disable tests using pyOpenSSL as it does not build on M1 Macs
     "tests/transport/test__mtls_helper.py"
     "tests/transport/test_requests.py"
@@ -106,6 +103,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/google-auth-library-python";
     changelog = "https://github.com/googleapis/google-auth-library-python/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix b/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix
index 409cfc2bc4a47..671a72368381b 100644
--- a/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix
+++ b/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix
@@ -1,29 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, pythonOlder
-, protobuf
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  pythonOlder,
+  protobuf,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-access-context-manager";
-  version = "0.2.0";
+  version = "0.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-pbQkMSwISwK2+Ywev7avKBMvwB5dcZgX+kmeeMh+BLc=";
+    pname = "google_cloud_access_context_manager";
+    inherit version;
+    hash = "sha256-O/rGqO4ub5UQWo7s9OGJCxp5Y3AuuMZV/s8CVX00joo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     protobuf
   ] ++ google-api-core.optional-dependencies.grpc;
@@ -31,9 +31,7 @@ buildPythonPackage rec {
   # No tests in repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "google.identity.accesscontextmanager"
-  ];
+  pythonImportsCheck = [ "google.identity.accesscontextmanager" ];
 
   meta = with lib; {
     description = "Protobufs for Google Access Context Manager";
diff --git a/pkgs/development/python-modules/google-cloud-appengine-logging/default.nix b/pkgs/development/python-modules/google-cloud-appengine-logging/default.nix
index d9f5f38c36ece..0aa83d81b55a2 100644
--- a/pkgs/development/python-modules/google-cloud-appengine-logging/default.nix
+++ b/pkgs/development/python-modules/google-cloud-appengine-logging/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, grpc-google-iam-v1
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  grpc-google-iam-v1,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-appengine-logging";
-  version = "1.4.3";
+  version = "1.4.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-+1BOYZn+jehbqp0xzs9ndod4Uf5Yhn3mAzF+x8xzmYc=";
+    pname = "google_cloud_appengine_logging";
+    inherit version;
+    hash = "sha256-3n12bl1nsZ/Fgzl0tQWzLSpbvfsoP9lB4yDnz9rky4M=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     grpc-google-iam-v1
     proto-plus
diff --git a/pkgs/development/python-modules/google-cloud-artifact-registry/default.nix b/pkgs/development/python-modules/google-cloud-artifact-registry/default.nix
index 07e965918652c..3f4a7b9e52ff4 100644
--- a/pkgs/development/python-modules/google-cloud-artifact-registry/default.nix
+++ b/pkgs/development/python-modules/google-cloud-artifact-registry/default.nix
@@ -1,33 +1,33 @@
-{ buildPythonPackage
-, fetchPypi
-, google-api-core
-, google-auth
-, grpc-google-iam-v1
-, lib
-, proto-plus
-, protobuf
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  google-auth,
+  grpc-google-iam-v1,
+  lib,
+  proto-plus,
+  protobuf,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-artifact-registry";
-  version = "1.11.3";
+  version = "1.11.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-wsSeFbtZHWXeoiyC2lUUjFE09xkZuu+OtNNb4dHLIM0=";
+    pname = "google_cloud_artifact_registry";
+    inherit version;
+    hash = "sha256-lNWDbgu9DDNRSh7cC1TfiYvy237bH16QduskPzQt9Mg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     google-auth
     grpc-google-iam-v1
@@ -35,9 +35,7 @@ buildPythonPackage rec {
     protobuf
   ] ++ google-api-core.optional-dependencies.grpc;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [
     "google.cloud.artifactregistry"
diff --git a/pkgs/development/python-modules/google-cloud-asset/default.nix b/pkgs/development/python-modules/google-cloud-asset/default.nix
index 88ec60d0c1d75..5f6c9c54f2b44 100644
--- a/pkgs/development/python-modules/google-cloud-asset/default.nix
+++ b/pkgs/development/python-modules/google-cloud-asset/default.nix
@@ -20,14 +20,15 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-asset";
-  version = "3.26.1";
+  version = "3.26.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-5O3ge5/ot0zQoLKKPP6E7M2RVtDxnYfe2J0iYJISWX4=";
+    pname = "google_cloud_asset";
+    inherit version;
+    hash = "sha256-c/xmHAD8zXdi+2ifs4bHWPS2B49Fcnr4RqLfrpGwQzs=";
   };
 
   build-system = [ setuptools ];
@@ -43,7 +44,7 @@ buildPythonPackage rec {
     protobuf
   ] ++ google-api-core.optional-dependencies.grpc;
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     libcst = [ libcst ];
   };
 
@@ -68,6 +69,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-asset";
     changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-asset-v${version}/packages/google-cloud-asset/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-audit-log/default.nix b/pkgs/development/python-modules/google-cloud-audit-log/default.nix
index 60515a9c65dc2..aa05e225fd9b8 100644
--- a/pkgs/development/python-modules/google-cloud-audit-log/default.nix
+++ b/pkgs/development/python-modules/google-cloud-audit-log/default.nix
@@ -1,37 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, googleapis-common-protos
-, protobuf
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  googleapis-common-protos,
+  protobuf,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-audit-log";
-  version = "0.2.5";
-  format = "setuptools";
+  version = "0.3.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-huL6ujODrcj9BKW9f9T5YLPkrtqn7ZUPL4kc4WkC62s=";
+    pname = "google_cloud_audit_log";
+    inherit version;
+    hash = "sha256-kBQoslcCDYwdETPg+gBBZKVV5aOVx8o827hIZRPfOmU=";
   };
 
-  propagatedBuildInputs = [ googleapis-common-protos protobuf ];
+  build-system = [ setuptools ];
 
-  # tests are a bit wonky to setup and are not very deep either
+  dependencies = [
+    googleapis-common-protos
+    protobuf
+  ];
+
+  # Tests are a bit wonky to setup and are not very deep either
   doCheck = false;
 
-  pythonImportsCheck = [
-    "google.cloud.audit"
-  ];
+  pythonImportsCheck = [ "google.cloud.audit" ];
 
   meta = with lib; {
     description = "Google Cloud Audit Protos";
     homepage = "https://github.com/googleapis/python-audit-log";
     changelog = "https://github.com/googleapis/python-audit-log/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-automl/default.nix b/pkgs/development/python-modules/google-cloud-automl/default.nix
index 34b49c9b19990..83e861edd52da 100644
--- a/pkgs/development/python-modules/google-cloud-automl/default.nix
+++ b/pkgs/development/python-modules/google-cloud-automl/default.nix
@@ -1,52 +1,46 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, google-cloud-storage
-, google-cloud-testutils
-, libcst
-, mock
-, pandas
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  google-cloud-storage,
+  google-cloud-testutils,
+  libcst,
+  mock,
+  pandas,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-automl";
-  version = "2.13.3";
+  version = "2.13.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-iRqQgurt6xe8W7ck/BULdwLGhNdCD58irj98X8YRxxo=";
+    pname = "google_cloud_automl";
+    inherit version;
+    hash = "sha256-ypmK9Gq7HF2ozS6OFbAJZDPiW8sngucN86b5FHLuiTE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     proto-plus
     protobuf
   ] ++ google-api-core.optional-dependencies.grpc;
 
-  passthru.optional-dependencies = {
-    libcst = [
-      libcst
-    ];
-    pandas = [
-      pandas
-    ];
-    storage = [
-      google-cloud-storage
-    ];
+  optional-dependencies = {
+    libcst = [ libcst ];
+    pandas = [ pandas ];
+    storage = [ google-cloud-storage ];
   };
 
   nativeCheckInputs = [
@@ -81,6 +75,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-automl";
     changelog = "https://github.com/googleapis/google-cloud-python/tree/google-cloud-automl-v${version}/packages/google-cloud-automl";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix b/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
index e7eaf3bd595e5..e830e78dd09db 100644
--- a/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
+++ b/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
@@ -16,14 +16,15 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-bigquery-datatransfer";
-  version = "3.15.2";
+  version = "3.15.7";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-oX4E3G3PB9qqCo5ZWt+p702oV5KUzlIdXNczthJ73Q0=";
+    pname = "google_cloud_bigquery_datatransfer";
+    inherit version;
+    hash = "sha256-GLarRvI2eud/iNwj7ujZwIpK/b0ClhO0XUdBi4J9Lp0=";
   };
 
   build-system = [ setuptools ];
@@ -57,6 +58,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-bigquery-datatransfer";
     changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-bigquery-datatransfer-v${version}/packages/google-cloud-bigquery-datatransfer/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-bigquery-logging/default.nix b/pkgs/development/python-modules/google-cloud-bigquery-logging/default.nix
index da43db7a3cc44..7f671c9eff4e3 100644
--- a/pkgs/development/python-modules/google-cloud-bigquery-logging/default.nix
+++ b/pkgs/development/python-modules/google-cloud-bigquery-logging/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, grpc-google-iam-v1
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  grpc-google-iam-v1,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-bigquery-logging";
-  version = "1.4.3";
+  version = "1.4.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-7RqwaSthQcwGebhi5F/V//WxBIp5upVS0ToDDsjyURY=";
+    pname = "google_cloud_bigquery_logging";
+    inherit version;
+    hash = "sha256-XrBXr0Y1vpxWceSR59ERQJKziMBI4+QBoHWK0Wt1cec=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     grpc-google-iam-v1
     proto-plus
diff --git a/pkgs/development/python-modules/google-cloud-bigquery-storage/default.nix b/pkgs/development/python-modules/google-cloud-bigquery-storage/default.nix
index 1cda61e137576..4eae86bbbf46e 100644
--- a/pkgs/development/python-modules/google-cloud-bigquery-storage/default.nix
+++ b/pkgs/development/python-modules/google-cloud-bigquery-storage/default.nix
@@ -1,44 +1,43 @@
-{ lib
-, buildPythonPackage
-, fastavro
-, fetchPypi
-, google-api-core
-, google-auth
-, google-cloud-bigquery
-, pandas
-, protobuf
-, pyarrow
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fastavro,
+  fetchPypi,
+  google-api-core,
+  google-auth,
+  google-cloud-bigquery,
+  pandas,
+  protobuf,
+  pyarrow,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-bigquery-storage";
-  version = "2.24.0";
-  format = "setuptools";
+  version = "2.26.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-tK9bmqzYOWuEB9G4d2AaN22O6m0ZKCOop4gb0v3Ads4=";
+    pname = "google_cloud_bigquery_storage";
+    inherit version;
+    hash = "sha256-hAJ1vQpLIHwKyCG8xnQUBv+zte+UD6BQiakOtEA0U/o=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     google-api-core
     protobuf
   ] ++ google-api-core.optional-dependencies.grpc;
 
   passthru.optional-dependencies = {
-    fastavro = [
-      fastavro
-    ];
-    pandas = [
-      pandas
-    ];
-    pyarrow = [
-      pyarrow
-    ];
+    fastavro = [ fastavro ];
+    pandas = [ pandas ];
+    pyarrow = [ pyarrow ];
   };
 
   nativeCheckInputs = [
@@ -62,10 +61,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "BigQuery Storage API API client library";
-    mainProgram = "fixup_bigquery_storage_v1_keywords.py";
     homepage = "https://github.com/googleapis/python-bigquery-storage";
     changelog = "https://github.com/googleapis/python-bigquery-storage/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
+    mainProgram = "fixup_bigquery_storage_v1_keywords.py";
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-bigquery/default.nix b/pkgs/development/python-modules/google-cloud-bigquery/default.nix
index a079fffd2510c..d9ea0eba51ba7 100644
--- a/pkgs/development/python-modules/google-cloud-bigquery/default.nix
+++ b/pkgs/development/python-modules/google-cloud-bigquery/default.nix
@@ -30,14 +30,14 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-bigquery";
-  version = "3.21.0";
+  version = "3.25.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-YmXDn51b31DxHLganCoGBdKF3zSsE53g0jM7ElCt0P8=";
+    hash = "sha256-Wyr/MgWoVEgRF0NoNq4UA/EfJZTmgQqYiGr9V+2ihQk=";
   };
 
   build-system = [ setuptools ];
@@ -93,8 +93,10 @@ buildPythonPackage rec {
     "test_arrow_extension_types_same_for_storage_and_REST_APIs_894"
     "test_list_rows_empty_table"
     "test_list_rows_page_size"
-    "test_list_rows_scalars"
+    "test_list_rows_range_csv"
+    "test_list_rows_range"
     "test_list_rows_scalars_extreme"
+    "test_list_rows_scalars"
     "test_dry_run"
     "test_session"
     # Mocking of _ensure_bqstorage_client fails
@@ -130,6 +132,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/python-bigquery";
     changelog = "https://github.com/googleapis/python-bigquery/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-bigtable/default.nix b/pkgs/development/python-modules/google-cloud-bigtable/default.nix
index dd6485aa5d24a..91896114390e5 100644
--- a/pkgs/development/python-modules/google-cloud-bigtable/default.nix
+++ b/pkgs/development/python-modules/google-cloud-bigtable/default.nix
@@ -17,14 +17,15 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-bigtable";
-  version = "2.23.1";
+  version = "2.26.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-FHWiK/zhY7XELN9O717AUyPuozWFUpT5zk4j+qIk8Cg=";
+    pname = "google_cloud_bigtable";
+    inherit version;
+    hash = "sha256-g88QrbMzNISzme+uWk0kEhfBiFxj/bmwTCaTAXYrGLc=";
   };
 
   build-system = [ setuptools ];
@@ -65,6 +66,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/python-bigtable";
     changelog = "https://github.com/googleapis/python-bigtable/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-compute/default.nix b/pkgs/development/python-modules/google-cloud-compute/default.nix
index e3f504e500931..7535e9f3f8c10 100644
--- a/pkgs/development/python-modules/google-cloud-compute/default.nix
+++ b/pkgs/development/python-modules/google-cloud-compute/default.nix
@@ -1,33 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, google-api-core
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  google-api-core,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-compute";
-  version = "1.18.0";
+  version = "1.19.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-QSI3GDh36yg4qm4Izaps8X85lFGhZuOpqjOuiUzBWh0=";
+    pname = "google_cloud_compute";
+    inherit version;
+    hash = "sha256-P86Cq+FOdvqqgSNNmnvh5jSy7Yon9V/u/PKxRkZ/f6s=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     proto-plus
     protobuf
diff --git a/pkgs/development/python-modules/google-cloud-container/default.nix b/pkgs/development/python-modules/google-cloud-container/default.nix
index 5283cb448d264..386b240f6b1f8 100644
--- a/pkgs/development/python-modules/google-cloud-container/default.nix
+++ b/pkgs/development/python-modules/google-cloud-container/default.nix
@@ -1,32 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, libcst
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  libcst,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-container";
-  version = "2.45.0";
+  version = "2.51.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-8vaSLR+cIKohDpbC679cKydLsnBKhewtTpdBDymxjss=";
+    pname = "google_cloud_container";
+    inherit version;
+    hash = "sha256-q1F+/uzyVY10pP/XrF1sL0+6o7uKfITSuZTc+NqA/Zw=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     google-api-core
@@ -57,6 +57,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-container";
     changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-container-v${version}/packages/google-cloud-container/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-core/default.nix b/pkgs/development/python-modules/google-cloud-core/default.nix
index 84168c911f28e..bd5fbf7ee044b 100644
--- a/pkgs/development/python-modules/google-cloud-core/default.nix
+++ b/pkgs/development/python-modules/google-cloud-core/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, google-auth
-, grpcio
-, mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  google-auth,
+  grpcio,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    grpc = [
-      grpcio
-    ];
+    grpc = [ grpcio ];
   };
 
   nativeCheckInputs = [
@@ -42,15 +41,13 @@ buildPythonPackage rec {
     rm -r google
   '';
 
-  pythonImportsCheck = [
-    "google.cloud"
-  ];
+  pythonImportsCheck = [ "google.cloud" ];
 
   meta = with lib; {
     description = "API Client library for Google Cloud: Core Helpers";
     homepage = "https://github.com/googleapis/python-cloud-core";
     changelog = "https://github.com/googleapis/python-cloud-core/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-datacatalog/default.nix b/pkgs/development/python-modules/google-cloud-datacatalog/default.nix
index 4248a857bb48b..74cce025116a4 100644
--- a/pkgs/development/python-modules/google-cloud-datacatalog/default.nix
+++ b/pkgs/development/python-modules/google-cloud-datacatalog/default.nix
@@ -1,33 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, grpc-google-iam-v1
-, libcst
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  grpc-google-iam-v1,
+  libcst,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-datacatalog";
-  version = "3.19.0";
+  version = "3.20.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-Oo0O94fw7dRwPn4nyRobX4W9vgTWFgkTLsdyaffVJpI=";
+    pname = "google_cloud_datacatalog";
+    inherit version;
+    hash = "sha256-ggzQ85PzgEk4nnD9ykYd1VGPmtf2T6guAzv51SLlkmI=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     google-api-core
@@ -43,15 +43,13 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "google.cloud.datacatalog"
-  ];
+  pythonImportsCheck = [ "google.cloud.datacatalog" ];
 
   meta = with lib; {
     description = "Google Cloud Data Catalog API API client library";
     homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-datacatalog";
     changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-datacatalog-v${version}/packages/google-cloud-datacatalog/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-dataproc/default.nix b/pkgs/development/python-modules/google-cloud-dataproc/default.nix
index 6e22cb60c2672..34e3ab0ceae1d 100644
--- a/pkgs/development/python-modules/google-cloud-dataproc/default.nix
+++ b/pkgs/development/python-modules/google-cloud-dataproc/default.nix
@@ -1,35 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, grpc-google-iam-v1
-, mock
-, libcst
-, proto-plus
-, protobuf
-, pytestCheckHook
-, pytest-asyncio
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  grpc-google-iam-v1,
+  mock,
+  libcst,
+  proto-plus,
+  protobuf,
+  pytestCheckHook,
+  pytest-asyncio,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-dataproc";
-  version = "5.9.3";
+  version = "5.11.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-l9ZHiR5/TNJfa4Oa5XzTVYCd8so5ZlPtJK9itO8C9BI=";
+    pname = "google_cloud_dataproc";
+    inherit version;
+    hash = "sha256-6jiAOYf9eBjRMyQ9tvR3EWfnqk1MfYIUTm98Plnfkhg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     grpc-google-iam-v1
     libcst
@@ -58,6 +58,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-dataproc";
     changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-dataproc-v${version}/packages/google-cloud-dataproc/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-datastore/default.nix b/pkgs/development/python-modules/google-cloud-datastore/default.nix
index 00e07713a6351..e826e6c77bc3a 100644
--- a/pkgs/development/python-modules/google-cloud-datastore/default.nix
+++ b/pkgs/development/python-modules/google-cloud-datastore/default.nix
@@ -1,41 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, google-cloud-core
-, google-cloud-testutils
-, libcst
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  google-cloud-core,
+  google-cloud-testutils,
+  libcst,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-datastore";
-  version = "2.19.0";
-  format = "setuptools";
+  version = "2.20.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-B/xYcKAmHyVGbFV8E035Wpbf0lN6vQiLnVN/ur6ZuXQ=";
+    pname = "google_cloud_datastore";
+    inherit version;
+    hash = "sha256-B5ULnIhlCHxWX0X6P916BdTD2ZrfeeEMP1lv8Ip9m7o=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     google-api-core
     google-cloud-core
     proto-plus
     protobuf
   ] ++ google-api-core.optional-dependencies.grpc;
 
-  passthru.optional-dependencies = {
-    libcst = [
-      libcst
-    ];
+  optional-dependencies = {
+    libcst = [ libcst ];
   };
 
   nativeCheckInputs = [
@@ -71,6 +74,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/python-datastore";
     changelog = "https://github.com/googleapis/python-datastore/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-dlp/default.nix b/pkgs/development/python-modules/google-cloud-dlp/default.nix
index f3895b8e3ef17..15bbab8155a34 100644
--- a/pkgs/development/python-modules/google-cloud-dlp/default.nix
+++ b/pkgs/development/python-modules/google-cloud-dlp/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, google-cloud-testutils
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  google-cloud-testutils,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-dlp";
-  version = "3.16.0";
+  version = "3.22.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-DWmh96XviHVsmeVrivTDnq5A0hBog/DieUxcs2QmltU=";
+    pname = "google_cloud_dlp";
+    inherit version;
+    hash = "sha256-SabiX00pD91acxz83PdkDnPynLp5L9MAqKGY/IIUDAU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     proto-plus
     protobuf
@@ -42,7 +42,7 @@ buildPythonPackage rec {
   ];
 
   disabledTests = [
-    # Test requires credentials
+    # Tests require credentials
     "test_inspect_content"
     "test_list_dlp_jobs"
   ];
@@ -54,9 +54,9 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Cloud Data Loss Prevention (DLP) API API client library";
-    homepage = "https://github.com/googleapis/python-dlp";
-    changelog = "https://github.com/googleapis/python-dlp/blob/v${version}/CHANGELOG.md";
+    homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-dlp";
+    changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-dlp-v${version}/packages/google-cloud-dlp/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-dns/default.nix b/pkgs/development/python-modules/google-cloud-dns/default.nix
index f076591c02de0..12da5d31a7cf3 100644
--- a/pkgs/development/python-modules/google-cloud-dns/default.nix
+++ b/pkgs/development/python-modules/google-cloud-dns/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, google-cloud-core
-, mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  google-cloud-core,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -40,15 +41,13 @@ buildPythonPackage rec {
     "test_quota"
   ];
 
-  pythonImportsCheck = [
-    "google.cloud.dns"
-  ];
+  pythonImportsCheck = [ "google.cloud.dns" ];
 
   meta = with lib; {
     description = "Google Cloud DNS API client library";
     homepage = "https://github.com/googleapis/python-dns";
     changelog = "https://github.com/googleapis/python-dns/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-error-reporting/default.nix b/pkgs/development/python-modules/google-cloud-error-reporting/default.nix
index 7705598e80971..56e898a15bfd1 100644
--- a/pkgs/development/python-modules/google-cloud-error-reporting/default.nix
+++ b/pkgs/development/python-modules/google-cloud-error-reporting/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, google-cloud-logging
-, google-cloud-testutils
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-,setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  google-cloud-logging,
+  google-cloud-testutils,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-+oeVT/ag00BEObbqzkC/EazEwnrWvRURnz3gnCBbn4k=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     google-api-core
@@ -66,6 +65,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/python-error-reporting";
     changelog = "https://github.com/googleapis/python-error-reporting/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-firestore/default.nix b/pkgs/development/python-modules/google-cloud-firestore/default.nix
index 71bcfd699dc13..2c3dcdf790632 100644
--- a/pkgs/development/python-modules/google-cloud-firestore/default.nix
+++ b/pkgs/development/python-modules/google-cloud-firestore/default.nix
@@ -1,35 +1,35 @@
-{ lib
-, aiounittest
-, buildPythonPackage
-, fetchPypi
-, freezegun
-, google-api-core
-, google-cloud-core
-, google-cloud-testutils
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiounittest,
+  buildPythonPackage,
+  fetchPypi,
+  freezegun,
+  google-api-core,
+  google-cloud-core,
+  google-cloud-testutils,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-firestore";
-  version = "2.16.0";
+  version = "2.19.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-5hrnAimm5TLkOcjRZEejICREfy7kojA/xNBUwljWh38=";
+    pname = "google_cloud_firestore";
+    inherit version;
+    hash = "sha256-Gyzm4LeRruiaHk8HK+uhASJH6Juso2Hu1yH7Rn/gVLA=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     google-api-core
@@ -75,6 +75,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/python-firestore";
     changelog = "https://github.com/googleapis/python-firestore/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-iam-logging/default.nix b/pkgs/development/python-modules/google-cloud-iam-logging/default.nix
index bea85e0283890..a5fd7575a29c9 100644
--- a/pkgs/development/python-modules/google-cloud-iam-logging/default.nix
+++ b/pkgs/development/python-modules/google-cloud-iam-logging/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, grpc-google-iam-v1
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  grpc-google-iam-v1,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-iam-logging";
-  version = "1.3.3";
+  version = "1.3.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-99YYGGrI8zg+cwdVKqFVneL0jTzO7GJq91O/Kk0lGJM=";
+    pname = "google_cloud_iam_logging";
+    inherit version;
+    hash = "sha256-B/OE8m6CpTddR+nAv9OP/y1V1c32/cUZPzfptAOuMrw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     grpc-google-iam-v1
     proto-plus
diff --git a/pkgs/development/python-modules/google-cloud-iam/default.nix b/pkgs/development/python-modules/google-cloud-iam/default.nix
index 93c85687dd4cc..0b3f31b643b7a 100644
--- a/pkgs/development/python-modules/google-cloud-iam/default.nix
+++ b/pkgs/development/python-modules/google-cloud-iam/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, libcst
-, mock
-, proto-plus
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  libcst,
+  mock,
+  proto-plus,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-iam";
-  version = "2.14.3";
+  version = "2.15.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-yC6ZP4qSGcW6H84TnDSu1vAZ3V+bRc6VbVQwWD0q8m4=";
+    hash = "sha256-6TgaGCPlFi9owoBI/xowe6Og5Tja9getfUHP47dWpvA=";
   };
 
   propagatedBuildInputs = [
@@ -34,6 +35,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  disabledTestPaths = [
+    # unmaintained, reference wrong import path for google.cloud.iam.v1
+    "tests/unit/gapic/iam_admin_v1/test_iam.py"
+  ];
+
   pythonImportsCheck = [
     "google.cloud.iam_credentials"
     "google.cloud.iam_credentials_v1"
diff --git a/pkgs/development/python-modules/google-cloud-iot/default.nix b/pkgs/development/python-modules/google-cloud-iot/default.nix
index 3cd2f397a6b8d..4cd4dc257fda9 100644
--- a/pkgs/development/python-modules/google-cloud-iot/default.nix
+++ b/pkgs/development/python-modules/google-cloud-iot/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, grpc-google-iam-v1
-, libcst
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  grpc-google-iam-v1,
+  libcst,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -53,6 +54,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/python-iot";
     changelog = "https://github.com/googleapis/python-iot/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-kms/default.nix b/pkgs/development/python-modules/google-cloud-kms/default.nix
index 45fd8082d3d05..ff28fe3dfcb68 100644
--- a/pkgs/development/python-modules/google-cloud-kms/default.nix
+++ b/pkgs/development/python-modules/google-cloud-kms/default.nix
@@ -1,32 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, grpc-google-iam-v1
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  grpc-google-iam-v1,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-kms";
-  version = "2.21.3";
+  version = "2.23.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-XofVp7fY9bXJ8PZI81KniGlRqLTHJwPrnOe6gHb8JTM=";
+    hash = "sha256-UrX8b3CxY1FvrWEKr8CI++eI9QHVu+HV9FjNw/y6/Sw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     grpc-google-iam-v1
@@ -58,6 +57,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-kms";
     changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-kms-v${version}/packages/google-cloud-kms/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-language/default.nix b/pkgs/development/python-modules/google-cloud-language/default.nix
index 98f4355facbd6..6571959153ddc 100644
--- a/pkgs/development/python-modules/google-cloud-language/default.nix
+++ b/pkgs/development/python-modules/google-cloud-language/default.nix
@@ -1,32 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-language";
-  version = "2.13.3";
+  version = "2.14.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-Vp01Jgr5Bt4luOKna2Nk4FgJuEU6/Ynac41KT8uQhG8=";
+    pname = "google_cloud_language";
+    inherit version;
+    hash = "sha256-BeXnoiGavnq9TvUaMpzFy7ZMMd0CS9U3LZ+iv2GVF6k=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     proto-plus
     protobuf
@@ -48,6 +48,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-language";
     changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-language-v${version}/packages/google-cloud-language/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-logging/default.nix b/pkgs/development/python-modules/google-cloud-logging/default.nix
index 546ab8cb544e4..cd8eab718411a 100644
--- a/pkgs/development/python-modules/google-cloud-logging/default.nix
+++ b/pkgs/development/python-modules/google-cloud-logging/default.nix
@@ -1,47 +1,49 @@
-{ lib
-, buildPythonPackage
-, django
-, fetchPypi
-, flask
-, google-api-core
-, google-cloud-appengine-logging
-, google-cloud-audit-log
-, google-cloud-core
-, google-cloud-testutils
-, grpc-google-iam-v1
-, mock
-, pandas
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, rich
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchPypi,
+  flask,
+  google-api-core,
+  google-cloud-appengine-logging,
+  google-cloud-audit-log,
+  google-cloud-core,
+  google-cloud-testutils,
+  grpc-google-iam-v1,
+  mock,
+  opentelemetry-api,
+  pandas,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  rich,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-logging";
-  version = "3.10.0";
+  version = "3.11.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-2T00c1EkDdsUz+IBmHotMs+df0eLiy+r7TAVtCWzJ08=";
+    pname = "google_cloud_logging";
+    inherit version;
+    hash = "sha256-SJdEHCt09u2pGBwjqIFyI7YUWUMxSoIdZLcp0wdmyys=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     google-cloud-appengine-logging
     google-cloud-audit-log
     google-cloud-core
     grpc-google-iam-v1
+    opentelemetry-api
     proto-plus
     protobuf
   ] ++ google-api-core.optional-dependencies.grpc;
@@ -87,6 +89,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/python-logging";
     changelog = "https://github.com/googleapis/python-logging/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-monitoring/default.nix b/pkgs/development/python-modules/google-cloud-monitoring/default.nix
index f3cafa489d6e5..ff4f7bb7ed49c 100644
--- a/pkgs/development/python-modules/google-cloud-monitoring/default.nix
+++ b/pkgs/development/python-modules/google-cloud-monitoring/default.nix
@@ -16,14 +16,15 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-monitoring";
-  version = "2.21.0";
+  version = "2.22.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-57HIdY/DVj/7mjR7xRcuJ4L0TBIbyA/BUoPiic/2db8=";
+    pname = "google_cloud_monitoring";
+    inherit version;
+    hash = "sha256-n8ItrEjRTdHH+4PuSlT3pXv5hS7mtcncqeO7CTsEx+4=";
   };
 
   build-system = [ setuptools ];
@@ -34,7 +35,7 @@ buildPythonPackage rec {
     protobuf
   ] ++ google-api-core.optional-dependencies.grpc;
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     pandas = [ pandas ];
   };
 
@@ -43,7 +44,7 @@ buildPythonPackage rec {
     mock
     pytestCheckHook
     pytest-asyncio
-  ] ++ passthru.optional-dependencies.pandas;
+  ] ++ optional-dependencies.pandas;
 
   disabledTests = [
     # Test requires credentials
@@ -62,6 +63,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-monitoring";
     changelog = "https://github.com/googleapis/google-cloud-python/tree/google-cloud-monitoring-v${version}/packages/google-cloud-monitoring";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-netapp/default.nix b/pkgs/development/python-modules/google-cloud-netapp/default.nix
index 6f9162b757a78..4fd68969054e2 100644
--- a/pkgs/development/python-modules/google-cloud-netapp/default.nix
+++ b/pkgs/development/python-modules/google-cloud-netapp/default.nix
@@ -1,32 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, google-auth
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  google-auth,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-netapp";
-  version = "0.3.9";
+  version = "0.3.14";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-Vohliy9W+fkY4YmSIvw6WiWVlLBk+Fo9CvZG/VKeU1o=";
+    pname = "google_cloud_netapp";
+    inherit version;
+    hash = "sha256-XjhNY4YG51+9OTZBj3jivgA2Del7RafXCIE/ATtyqWE=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     google-api-core
@@ -51,6 +51,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-netapp";
     changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-netapp-v${version}/packages/google-cloud-netapp/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-network-connectivity/default.nix b/pkgs/development/python-modules/google-cloud-network-connectivity/default.nix
new file mode 100644
index 0000000000000..eaa3d4e435e0c
--- /dev/null
+++ b/pkgs/development/python-modules/google-cloud-network-connectivity/default.nix
@@ -0,0 +1,56 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  google-api-core,
+  grpc-google-iam-v1,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "google-cloud-network-connectivity";
+  version = "2.4.5";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit version;
+    pname = "google_cloud_network_connectivity";
+    hash = "sha256-g2N39pKk0HG8f9NkSh/iOmDQNapnTyMf85mPBM0LIe4=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    google-api-core
+    grpc-google-iam-v1
+    proto-plus
+    protobuf
+  ] ++ google-api-core.optional-dependencies.grpc;
+
+  nativeCheckInputs = [
+    mock
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "google.cloud.networkconnectivity"
+    "google.cloud.networkconnectivity_v1"
+  ];
+
+  meta = with lib; {
+    description = "API Client library for Google Cloud Network Connectivity Center";
+    homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-network-connectivity";
+    changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-network-connectivity-v${version}/packages/google-cloud-network-connectivity/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ aksiksi ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-org-policy/default.nix b/pkgs/development/python-modules/google-cloud-org-policy/default.nix
index d7365d31aa069..569583b66649d 100644
--- a/pkgs/development/python-modules/google-cloud-org-policy/default.nix
+++ b/pkgs/development/python-modules/google-cloud-org-policy/default.nix
@@ -1,30 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-org-policy";
-  version = "1.11.0";
-  format = "setuptools";
+  version = "1.11.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-3BJDTwbIDhscHDR8rcjLQP/JYZrktcW+tcK9WFyV2X8=";
+    pname = "google_cloud_org_policy";
+    inherit version;
+    hash = "sha256-E+H/y5UGlWselMwoHU4B9APkmEeQnTLxhMelowEJsa8=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     google-api-core
@@ -42,9 +42,7 @@ buildPythonPackage rec {
     rm -r google
   '';
 
-  pythonImportsCheck = [
-    "google.cloud.orgpolicy"
-  ];
+  pythonImportsCheck = [ "google.cloud.orgpolicy" ];
 
   meta = with lib; {
     description = "Protobufs for Google Cloud Organization Policy";
diff --git a/pkgs/development/python-modules/google-cloud-os-config/default.nix b/pkgs/development/python-modules/google-cloud-os-config/default.nix
index 7abcde5174c0c..ab2af5b45cbfa 100644
--- a/pkgs/development/python-modules/google-cloud-os-config/default.nix
+++ b/pkgs/development/python-modules/google-cloud-os-config/default.nix
@@ -1,32 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, protobuf
-, proto-plus
-, pytestCheckHook
-, pytest-asyncio
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  protobuf,
+  proto-plus,
+  pytestCheckHook,
+  pytest-asyncio,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-os-config";
-  version = "1.17.3";
+  version = "1.17.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-oKOqWVmAP14dKpbVDlcX2KSRceTqVES/UGlLsYtnWHA=";
+    pname = "google_cloud_os_config";
+    inherit version;
+    hash = "sha256-O4yGoidanx9zdMb+KhjTljEjaXTC0A2kbejzL0VWTCg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     proto-plus
     protobuf
@@ -37,9 +37,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "google.cloud.osconfig"
-  ];
+  pythonImportsCheck = [ "google.cloud.osconfig" ];
 
   disabledTests = [
     # Test requires a project ID
@@ -53,6 +51,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-os-config";
     changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-os-config-v${version}/packages/google-cloud-os-config/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-pubsub/default.nix b/pkgs/development/python-modules/google-cloud-pubsub/default.nix
index 079d482b35e7a..a564a85d45d62 100644
--- a/pkgs/development/python-modules/google-cloud-pubsub/default.nix
+++ b/pkgs/development/python-modules/google-cloud-pubsub/default.nix
@@ -18,14 +18,15 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-pubsub";
-  version = "2.21.1";
+  version = "2.23.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-MfzwdES3+BOmFsS2UOH78dyZigiP4AWadhZIVawX8Fw=";
+    pname = "google_cloud_pubsub";
+    inherit version;
+    hash = "sha256-4f3nm1tktyEpCvTAIpB6/LuDUS2S9OXDNMORz7sCKss=";
   };
 
   build-system = [ setuptools ];
@@ -64,10 +65,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Google Cloud Pub/Sub API client library";
-    mainProgram = "fixup_pubsub_v1_keywords.py";
     homepage = "https://github.com/googleapis/python-pubsub";
     changelog = "https://github.com/googleapis/python-pubsub/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
+    mainProgram = "fixup_pubsub_v1_keywords.py";
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-redis/default.nix b/pkgs/development/python-modules/google-cloud-redis/default.nix
index 588a156d745dc..7944da13d9320 100644
--- a/pkgs/development/python-modules/google-cloud-redis/default.nix
+++ b/pkgs/development/python-modules/google-cloud-redis/default.nix
@@ -1,32 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-redis";
-  version = "2.15.3";
+  version = "2.15.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-5qIx5FEHA4z+SY360fba0sp73KOpMTI3ML4Dq3oACo8=";
+    pname = "google_cloud_redis";
+    inherit version;
+    hash = "sha256-0k3Ww3mznGAUQ4uQMAA+/5gTr71a8rj730cz3GXzZ2A=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     proto-plus
     protobuf
@@ -45,9 +45,9 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Google Cloud Memorystore for Redis API client library";
-    homepage = "https://github.com/googleapis/python-redis";
-    changelog = "https://github.com/googleapis/python-redis/blob/v${version}/CHANGELOG.md";
+    homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-redis";
+    changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-redis-v${version}/packages/google-cloud-redis/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-resource-manager/default.nix b/pkgs/development/python-modules/google-cloud-resource-manager/default.nix
index 299f2f1f3a804..d1dd18cd342a6 100644
--- a/pkgs/development/python-modules/google-cloud-resource-manager/default.nix
+++ b/pkgs/development/python-modules/google-cloud-resource-manager/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, google-cloud-core
-, grpc-google-iam-v1
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  google-cloud-core,
+  grpc-google-iam-v1,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-resource-manager";
-  version = "1.12.3";
+  version = "1.12.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-gJhRgkEZg05PIxCyxPOGIcHRayuxTVufEy5px501Xn8=";
+    pname = "google_cloud_resource_manager";
+    inherit version;
+    hash = "sha256-t69CVEAe1O+jq6OpKcs924A/prr5GnhIXkVYNZfeWJE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     google-cloud-core
     grpc-google-iam-v1
@@ -41,7 +41,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  # prevent google directory from shadowing google imports
+  # Prevent google directory from shadowing google imports
   preCheck = ''
     rm -r google
   '';
@@ -56,6 +56,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-resource-manager";
     changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-resource-manager-v${version}/packages/google-cloud-resource-manager/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-runtimeconfig/default.nix b/pkgs/development/python-modules/google-cloud-runtimeconfig/default.nix
index 915f00961bcad..7f6cc83c1c974 100644
--- a/pkgs/development/python-modules/google-cloud-runtimeconfig/default.nix
+++ b/pkgs/development/python-modules/google-cloud-runtimeconfig/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, google-cloud-core
-, mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  google-cloud-core,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -31,24 +32,20 @@ buildPythonPackage rec {
   ];
 
   # Client tests require credentials
-  disabledTests = [
-    "client_options"
-  ];
+  disabledTests = [ "client_options" ];
 
   # prevent google directory from shadowing google imports
   preCheck = ''
     rm -r google
   '';
 
-  pythonImportsCheck = [
-    "google.cloud.runtimeconfig"
-  ];
+  pythonImportsCheck = [ "google.cloud.runtimeconfig" ];
 
   meta = with lib; {
     description = "Google Cloud RuntimeConfig API client library";
     homepage = "https://github.com/googleapis/python-runtimeconfig";
     changelog = "https://github.com/googleapis/python-runtimeconfig/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-secret-manager/default.nix b/pkgs/development/python-modules/google-cloud-secret-manager/default.nix
index 01a271e84ae6b..c89f4d0576fa9 100644
--- a/pkgs/development/python-modules/google-cloud-secret-manager/default.nix
+++ b/pkgs/development/python-modules/google-cloud-secret-manager/default.nix
@@ -14,14 +14,15 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-secret-manager";
-  version = "2.20.0";
+  version = "2.20.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-oIanQTqvT/+9HE/pIp7wzpvPSPWo31tEnEoy3rWiz94=";
+    pname = "google_cloud_secret_manager";
+    inherit version;
+    hash = "sha256-u+JIJeM0+eZ56CXnDZMhGKf/U25nwc6wSNpEERyHpFw=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/google-cloud-securitycenter/default.nix b/pkgs/development/python-modules/google-cloud-securitycenter/default.nix
index bbcab9f59bb9f..fb6365ec61b29 100644
--- a/pkgs/development/python-modules/google-cloud-securitycenter/default.nix
+++ b/pkgs/development/python-modules/google-cloud-securitycenter/default.nix
@@ -14,14 +14,15 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-securitycenter";
-  version = "1.31.0";
+  version = "1.34.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-1BbYIjVlAEz3cnPx3tzQ5z8z415X3TZJjUsr5aXcs4w=";
+    pname = "google_cloud_securitycenter";
+    inherit version;
+    hash = "sha256-GDvl7W6gFe3c8MHtAOyjzDw/ByNnkxHe2NjgviP10LI=";
   };
 
   build-system = [ setuptools ];
@@ -50,6 +51,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-securitycenter";
     changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-securitycenter-v${version}/packages/google-cloud-securitycenter/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-shell/default.nix b/pkgs/development/python-modules/google-cloud-shell/default.nix
index e2dd38444b563..1e9bbb918ff18 100644
--- a/pkgs/development/python-modules/google-cloud-shell/default.nix
+++ b/pkgs/development/python-modules/google-cloud-shell/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, google-auth
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  google-auth,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-shell";
-  version = "1.9.3";
+  version = "1.9.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-33TZcRsOWP8PBAXFHy9DQn20bVECwD2wv7hcaYl0E8Y=";
+    pname = "google_cloud_shell";
+    inherit version;
+    hash = "sha256-UpDomrWUTrsiI+OdrI5nJKC/J+eaZiNDmMt0QgcP5Fw==";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     google-auth
     proto-plus
diff --git a/pkgs/development/python-modules/google-cloud-spanner/default.nix b/pkgs/development/python-modules/google-cloud-spanner/default.nix
index 671c5fc37e2ad..14527a19a43a7 100644
--- a/pkgs/development/python-modules/google-cloud-spanner/default.nix
+++ b/pkgs/development/python-modules/google-cloud-spanner/default.nix
@@ -2,7 +2,7 @@
   lib,
   buildPythonPackage,
   deprecated,
-  fetchPypi,
+  fetchFromGitHub,
   google-api-core,
   google-cloud-core,
   google-cloud-testutils,
@@ -21,14 +21,16 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-spanner";
-  version = "3.45.0";
+  version = "3.49.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-MKtW6krGqnQ3hCmPgh4N5lRAGTe0DGDMegpUUoSpG0M=";
+  src = fetchFromGitHub {
+    owner = "googleapis";
+    repo = "python-spanner";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-KwANiuzVyqsz+KKTqNPM1WftuoMtUXRI8xbIdAzZF+s=";
   };
 
   build-system = [ setuptools ];
@@ -60,6 +62,13 @@ buildPythonPackage rec {
     rm -r google
   '';
 
+  disabledTests = [
+    # Requires credentials
+    "test_list_backup"
+    "test_list_database"
+    "test_list_instance"
+  ];
+
   disabledTestPaths = [
     # Requires credentials
     "tests/system/test_backup_api.py"
@@ -72,6 +81,7 @@ buildPythonPackage rec {
     "tests/unit/spanner_dbapi/test_connect.py"
     "tests/unit/spanner_dbapi/test_connection.py"
     "tests/unit/spanner_dbapi/test_cursor.py"
+    "samples/samples/"
   ];
 
   pythonImportsCheck = [
@@ -86,6 +96,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/python-spanner";
     changelog = "https://github.com/googleapis/python-spanner/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-speech/default.nix b/pkgs/development/python-modules/google-cloud-speech/default.nix
index 2780b5bdfc7fe..38e430bca5dd8 100644
--- a/pkgs/development/python-modules/google-cloud-speech/default.nix
+++ b/pkgs/development/python-modules/google-cloud-speech/default.nix
@@ -1,33 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-speech";
-  version = "2.26.0";
+  version = "2.27.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-0xVqeElq6s/0A0KUCKGxPv6ZbabwVEolVnkErYAWcdU=";
+    pname = "google_cloud_speech";
+    inherit version;
+    hash = "sha256-YXTTIcyBpYs2veboOZ11MdUBI5OVOHKkaMtmTkKGg4U=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     proto-plus
     protobuf
@@ -55,6 +55,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-speech";
     changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-speech-v${version}/packages/google-cloud-speech/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-storage/default.nix b/pkgs/development/python-modules/google-cloud-storage/default.nix
index 1c17e2a0867d9..4a5081468f9c5 100644
--- a/pkgs/development/python-modules/google-cloud-storage/default.nix
+++ b/pkgs/development/python-modules/google-cloud-storage/default.nix
@@ -1,41 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-auth
-, google-cloud-core
-, google-cloud-iam
-, google-cloud-kms
-, google-cloud-testutils
-, google-resumable-media
-, mock
-, protobuf
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-auth,
+  google-cloud-core,
+  google-cloud-iam,
+  google-cloud-kms,
+  google-cloud-testutils,
+  google-resumable-media,
+  mock,
+  protobuf,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-storage";
-  version = "2.16.0";
+  version = "2.17.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-3aSF+lA3EKgo0BJGvRbOnbCCPcUbvKdCzpamgX1YZp8=";
+    hash = "sha256-STeKv/VO9la1Lcpe8PLrqaqD3CsscseHFLA6GpX+k4g=";
   };
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
-  pythonRelaxDeps = [
-    "google-auth"
-  ];
+  pythonRelaxDeps = [ "google-auth" ];
 
   propagatedBuildInputs = [
     google-auth
@@ -45,9 +42,7 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    protobuf = [
-      protobuf
-    ];
+    protobuf = [ protobuf ];
   };
 
   nativeCheckInputs = [
@@ -92,15 +87,13 @@ buildPythonPackage rec {
     rm tests/conformance/test_conformance.py
   '';
 
-  pythonImportsCheck = [
-    "google.cloud.storage"
-  ];
+  pythonImportsCheck = [ "google.cloud.storage" ];
 
   meta = with lib; {
     description = "Google Cloud Storage API client library";
     homepage = "https://github.com/googleapis/python-storage";
     changelog = "https://github.com/googleapis/python-storage/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-tasks/default.nix b/pkgs/development/python-modules/google-cloud-tasks/default.nix
index a76e4e50f7f00..a5388a85cf08f 100644
--- a/pkgs/development/python-modules/google-cloud-tasks/default.nix
+++ b/pkgs/development/python-modules/google-cloud-tasks/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, grpc-google-iam-v1
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  grpc-google-iam-v1,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-tasks";
-  version = "2.16.3";
+  version = "2.16.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-2JH+cAbbTWEig4qm3krKbgB3urIk7crmhGZq4+MDxF8=";
+    pname = "google_cloud_tasks";
+    inherit version;
+    hash = "sha256-i9wpSgnjRkfhIKLkDdfsIIcwJNX04JOLL/DDn/N07aw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     grpc-google-iam-v1
     proto-plus
@@ -58,6 +58,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-tasks";
     changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-tasks-v${version}/packages/google-cloud-tasks/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-testutils/default.nix b/pkgs/development/python-modules/google-cloud-testutils/default.nix
index 146f4c726d1c9..e62d47e372496 100644
--- a/pkgs/development/python-modules/google-cloud-testutils/default.nix
+++ b/pkgs/development/python-modules/google-cloud-testutils/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchPypi
-, google-auth
-, packaging
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchPypi,
+  google-auth,
+  packaging,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,16 +29,14 @@ buildPythonPackage rec {
   # does not contain tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "test_utils"
-  ];
+  pythonImportsCheck = [ "test_utils" ];
 
   meta = with lib; {
     description = "System test utilities for google-cloud-python";
     mainProgram = "lower-bound-checker";
     homepage = "https://github.com/googleapis/python-test-utils";
-    changelog  ="https://github.com/googleapis/python-test-utils/blob/v${version}/CHANGELOG.md";
+    changelog = "https://github.com/googleapis/python-test-utils/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-texttospeech/default.nix b/pkgs/development/python-modules/google-cloud-texttospeech/default.nix
index 76b0c2a1f269c..5387654ffc7c4 100644
--- a/pkgs/development/python-modules/google-cloud-texttospeech/default.nix
+++ b/pkgs/development/python-modules/google-cloud-texttospeech/default.nix
@@ -1,33 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-texttospeech";
-  version = "2.16.3";
+  version = "2.17.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-+rwxUDLRN9oHELtMJoc00zYhLY+oMWsjsnfdOoTOchw=";
+    pname = "google_cloud_texttospeech";
+    inherit version;
+    hash = "sha256-hRzD46MqUA/edzeEBh6c6l6ZYKxXaIOid19w1hNZhQo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     proto-plus
     protobuf
@@ -40,7 +40,7 @@ buildPythonPackage rec {
   ];
 
   disabledTests = [
-    # Disable tests that require credentials
+    # Tests that require credentials
     "test_list_voices"
     "test_synthesize_speech"
   ];
@@ -56,6 +56,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-texttospeech";
     changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-texttospeech-v${version}/packages/google-cloud-texttospeech/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-trace/default.nix b/pkgs/development/python-modules/google-cloud-trace/default.nix
index 4a276b5f05a72..18f08c81820e4 100644
--- a/pkgs/development/python-modules/google-cloud-trace/default.nix
+++ b/pkgs/development/python-modules/google-cloud-trace/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, google-cloud-testutils
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  google-cloud-testutils,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-trace";
-  version = "1.13.3";
+  version = "1.13.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-NqwuM94NsBf/0vY9jWTct1vpETzPpN5JYvRzfv1srIA=";
+    pname = "google_cloud_trace";
+    inherit version;
+    hash = "sha256-aJVMHEriU29cw3RzbQZc6WNwi9NcnZXvNuiz1L8HxqI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     proto-plus
     protobuf
@@ -42,7 +42,7 @@ buildPythonPackage rec {
   ];
 
   disabledTests = [
-    # require credentials
+    # Tests require credentials
     "test_batch_write_spans"
     "test_list_traces"
   ];
@@ -58,6 +58,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-trace";
     changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-trace-v${version}/packages/google-cloud-trace/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-translate/default.nix b/pkgs/development/python-modules/google-cloud-translate/default.nix
index 2eb65c2a61a23..ef1a3925b957e 100644
--- a/pkgs/development/python-modules/google-cloud-translate/default.nix
+++ b/pkgs/development/python-modules/google-cloud-translate/default.nix
@@ -1,37 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, google-cloud-core
-, google-cloud-testutils
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  google-cloud-core,
+  google-cloud-testutils,
+  grpc-google-iam-v1,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-translate";
-  version = "3.15.3";
+  version = "3.16.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-7Vh6HmDPhHw7Gt1rKCVuLRci+nOkKFM09excqTPmFvI=";
+    pname = "google_cloud_translate";
+    inherit version;
+    hash = "sha256-B5fZVMT26gcyKelQASugg6TMl1K0MdwGJOJZTih0ae8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     google-cloud-core
+    grpc-google-iam-v1
     proto-plus
     protobuf
   ] ++ google-api-core.optional-dependencies.grpc;
@@ -65,6 +67,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/python-translate";
     changelog = "https://github.com/googleapis/python-translate/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-videointelligence/default.nix b/pkgs/development/python-modules/google-cloud-videointelligence/default.nix
index d7d39587fe5a0..835a80491cd00 100644
--- a/pkgs/development/python-modules/google-cloud-videointelligence/default.nix
+++ b/pkgs/development/python-modules/google-cloud-videointelligence/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, google-cloud-testutils
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  google-cloud-testutils,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-videointelligence";
-  version = "2.13.3";
+  version = "2.13.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-FGByHYEgZhxHfAGvDt09sDhFhX9SFGpKOfFrSs+zb20=";
+    pname = "google_cloud_videointelligence";
+    inherit version;
+    hash = "sha256-cpx3TA+1Ukr8rsRjN7lGCI2qWu2RoOLhXwA1TXw7+KM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     proto-plus
     protobuf
@@ -60,6 +60,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-videointelligence";
     changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-videointelligence-v${version}/packages/google-cloud-videointelligence/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-vision/default.nix b/pkgs/development/python-modules/google-cloud-vision/default.nix
index a771cba345074..c1c89e10081b7 100644
--- a/pkgs/development/python-modules/google-cloud-vision/default.nix
+++ b/pkgs/development/python-modules/google-cloud-vision/default.nix
@@ -1,33 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-vision";
-  version = "3.7.2";
+  version = "3.7.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-BEMwrWGMgQMz/yKWzSf/0UXySWONGzWycN5rRgsA6NI=";
+    pname = "google_cloud_vision";
+    inherit version;
+    hash = "sha256-gLZ/Ci3Fh6MddILT0mkqdz8l+9CUaP2d5F0AtnGq2Zk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     proto-plus
     protobuf
@@ -59,6 +59,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/python-vision";
     changelog = "https://github.com/googleapis/python-vision/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-vpc-access/default.nix b/pkgs/development/python-modules/google-cloud-vpc-access/default.nix
index 0c6bbf6ace671..8bdcc432a84b7 100644
--- a/pkgs/development/python-modules/google-cloud-vpc-access/default.nix
+++ b/pkgs/development/python-modules/google-cloud-vpc-access/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, google-auth
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  google-auth,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-vpc-access";
-  version = "1.10.3";
+  version = "1.10.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-mkDYB4HFJEu1ZRKo58s5a9lZjQ0pUs6nOBMnm27ajeM=";
+    pname = "google_cloud_vpc_access";
+    inherit version;
+    hash = "sha256-ee0O0MDo3VEUuansbm0Io35g/8aRA2ShoZh+IfwQAww=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     google-auth
     proto-plus
diff --git a/pkgs/development/python-modules/google-cloud-webrisk/default.nix b/pkgs/development/python-modules/google-cloud-webrisk/default.nix
index 8457ab9180d03..0a11573eb6828 100644
--- a/pkgs/development/python-modules/google-cloud-webrisk/default.nix
+++ b/pkgs/development/python-modules/google-cloud-webrisk/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, google-auth
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  google-auth,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-webrisk";
-  version = "1.14.3";
+  version = "1.14.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-VrfIVy3qGEMfFUiJ27zZPjBaWIPZX/qraga/+FfJol4=";
+    pname = "google_cloud_webrisk";
+    inherit version;
+    hash = "sha256-zlJhVcoqagtodRCVUVlWZODH+C7/H1KIj7vBYkZUs2A=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     google-auth
     proto-plus
diff --git a/pkgs/development/python-modules/google-cloud-websecurityscanner/default.nix b/pkgs/development/python-modules/google-cloud-websecurityscanner/default.nix
index 4703ba3aadb0e..880802fdbd6f9 100644
--- a/pkgs/development/python-modules/google-cloud-websecurityscanner/default.nix
+++ b/pkgs/development/python-modules/google-cloud-websecurityscanner/default.nix
@@ -1,33 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-websecurityscanner";
-  version = "1.14.3";
+  version = "1.14.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-Wp88cJqlAaAkaemHzkgKuhU4v4dFpgn5Sf+uqGKTeWQ=";
+    pname = "google_cloud_websecurityscanner";
+    inherit version;
+    hash = "sha256-H2yBAljtBaJ23+Y0AAi9wu5mC6sohvuJSOTNqtvGAjs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     proto-plus
     protobuf
@@ -49,6 +49,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-websecurityscanner";
     changelog = "https://github.com/googleapis/google-cloud-python/tree/google-cloud-websecurityscanner-v${version}/packages/google-cloud-websecurityscanner";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-cloud-workflows/default.nix b/pkgs/development/python-modules/google-cloud-workflows/default.nix
index bc54419923f33..9d77226951ea5 100644
--- a/pkgs/development/python-modules/google-cloud-workflows/default.nix
+++ b/pkgs/development/python-modules/google-cloud-workflows/default.nix
@@ -1,33 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-workflows";
-  version = "1.14.3";
+  version = "1.14.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-IUC5f3gDe5Z9QYVXaIZ3L+F7530q6ZltIHozTtWnf/4=";
+    pname = "google_cloud_workflows";
+    inherit version;
+    hash = "sha256-HNur2TEVRf8+sg6r8qmE62ZsOP0lF2ma1Fpp85lmfoM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     proto-plus
     protobuf
diff --git a/pkgs/development/python-modules/google-cloud-workstations/default.nix b/pkgs/development/python-modules/google-cloud-workstations/default.nix
index 1341eae06f2aa..7fb70589b7181 100644
--- a/pkgs/development/python-modules/google-cloud-workstations/default.nix
+++ b/pkgs/development/python-modules/google-cloud-workstations/default.nix
@@ -1,35 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, google-auth
-, grpc-google-iam-v1
-, mock
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  google-auth,
+  grpc-google-iam-v1,
+  mock,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-workstations";
-  version = "0.5.6";
+  version = "0.5.8";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-K6Qq243bX3waymyGcirLAANqmP0UAUgFS3kidwCFYBE=";
+    pname = "google_cloud_workstations";
+    inherit version;
+    hash = "sha256-Xu7oL5R/K3oHMea1xCwRLPoxgPNMFRSMYCQ73K9sMgQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     google-auth
     grpc-google-iam-v1
diff --git a/pkgs/development/python-modules/google-crc32c/default.nix b/pkgs/development/python-modules/google-crc32c/default.nix
index 38c6eea798fa5..fc6bcf95b4a27 100644
--- a/pkgs/development/python-modules/google-crc32c/default.nix
+++ b/pkgs/development/python-modules/google-crc32c/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchFromGitHub, cffi, crc32c, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cffi,
+  crc32c,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "google-crc32c";
@@ -19,7 +26,10 @@ buildPythonPackage rec {
   LDFLAGS = "-L${crc32c}/lib";
   CFLAGS = "-I${crc32c}/include";
 
-  nativeCheckInputs = [ pytestCheckHook crc32c ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    crc32c
+  ];
 
   pythonImportsCheck = [ "google_crc32c" ];
 
diff --git a/pkgs/development/python-modules/google-generativeai/default.nix b/pkgs/development/python-modules/google-generativeai/default.nix
index 4425966a00638..ae1bdc82ae7f5 100644
--- a/pkgs/development/python-modules/google-generativeai/default.nix
+++ b/pkgs/development/python-modules/google-generativeai/default.nix
@@ -9,7 +9,6 @@
   protobuf,
   pydantic,
   pythonOlder,
-  pythonRelaxDepsHook,
   setuptools,
   tqdm,
   typing-extensions,
@@ -17,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "google-generativeai";
-  version = "0.5.2";
+  version = "0.7.2";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -26,14 +25,13 @@ buildPythonPackage rec {
     owner = "google";
     repo = "generative-ai-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-R1ndVzGKXWRNkWvvuP4HFBXbuk54bCZZvMJY+yalJGU=";
+    hash = "sha256-KVKoPCpMaaVMU6VqYXD7vHmhv1AS5slRobRVDDuaDHc=";
   };
 
   pythonRelaxDeps = [ "google-ai-generativelanguage" ];
 
   build-system = [ setuptools ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     google-ai-generativelanguage
diff --git a/pkgs/development/python-modules/google-i18n-address/default.nix b/pkgs/development/python-modules/google-i18n-address/default.nix
index 88c60e45e134c..49d081c8efa65 100644
--- a/pkgs/development/python-modules/google-i18n-address/default.nix
+++ b/pkgs/development/python-modules/google-i18n-address/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, requests
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  requests,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "google-i18n-address";
-  version = "3.1.0";
-  format = "pyproject";
+  version = "3.1.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -18,31 +19,23 @@ buildPythonPackage rec {
     owner = "mirumee";
     repo = "google-i18n-address";
     rev = "refs/tags/${version}";
-    hash = "sha256-dW/1wwnFDjYpym1ZaSZ7mOLpkHxsvuAHC8zBRekxWaw=";
+    hash = "sha256-7RqS/+6zInlhWydJwp4xf2uGpfmSdiSwvJugpL8Mlpk=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  dependencies = [ requests ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "i18naddress"
-  ];
+  pythonImportsCheck = [ "i18naddress" ];
 
   meta = with lib; {
     description = "Google's i18n address data packaged for Python";
-    mainProgram = "update-validation-files";
     homepage = "https://github.com/mirumee/google-i18n-address";
     changelog = "https://github.com/mirumee/google-i18n-address/releases/tag/${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
+    mainProgram = "update-validation-files";
   };
 }
diff --git a/pkgs/development/python-modules/google-nest-sdm/default.nix b/pkgs/development/python-modules/google-nest-sdm/default.nix
index 2fb82e23543f4..699430682d4be 100644
--- a/pkgs/development/python-modules/google-nest-sdm/default.nix
+++ b/pkgs/development/python-modules/google-nest-sdm/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, coreutils
-, fetchFromGitHub
-, google-auth
-, google-auth-oauthlib
-, google-cloud-pubsub
-, pydantic
-, pytest-aiohttp
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, requests-oauthlib
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  coreutils,
+  fetchFromGitHub,
+  google-auth,
+  google-auth-oauthlib,
+  google-cloud-pubsub,
+  mashumaro,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  requests-oauthlib,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-nest-sdm";
-  version = "3.0.4";
+  version = "5.0.1";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -26,19 +27,17 @@ buildPythonPackage rec {
     owner = "allenporter";
     repo = "python-google-nest-sdm";
     rev = "refs/tags/${version}";
-    hash = "sha256-zYHrS9y15dcyDhOoky7sB2BYkpTL3PoyNbNewKKl19E=";
+    hash = "sha256-oooWPQ4O7+FjCzIoBwm+jgGTkG7eFwekbIAEbJh44I4=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     aiohttp
     google-auth
     google-auth-oauthlib
     google-cloud-pubsub
-    pydantic
+    mashumaro
     requests-oauthlib
   ];
 
@@ -51,9 +50,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "google_nest_sdm"
-  ];
+  pythonImportsCheck = [ "google_nest_sdm" ];
 
   disabledTests = [
     "test_clip_preview_transcode"
diff --git a/pkgs/development/python-modules/google-pasta/default.nix b/pkgs/development/python-modules/google-pasta/default.nix
index 99a2a98f1fdbf..d9692217a5207 100644
--- a/pkgs/development/python-modules/google-pasta/default.nix
+++ b/pkgs/development/python-modules/google-pasta/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,14 @@ buildPythonPackage rec {
       --replace-fail assertRaisesRegexp assertRaisesRegex
   '';
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   meta = {
-    description = "An AST-based Python refactoring library";
-    homepage    = "https://github.com/google/pasta";
+    description = "AST-based Python refactoring library";
+    homepage = "https://github.com/google/pasta";
     # Usually the tag message contains a one-line summary of the changes.
-    changelog   = "https://github.com/google/pasta/releases/tag/v${version}";
-    license     = lib.licenses.asl20;
+    changelog = "https://github.com/google/pasta/releases/tag/v${version}";
+    license = lib.licenses.asl20;
     maintainers = with lib.maintainers; [ timokau ];
   };
 }
diff --git a/pkgs/development/python-modules/google-re2/default.nix b/pkgs/development/python-modules/google-re2/default.nix
index 1528cb1a59e1c..dea16732f29a7 100644
--- a/pkgs/development/python-modules/google-re2/default.nix
+++ b/pkgs/development/python-modules/google-re2/default.nix
@@ -1,33 +1,35 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, pybind11
-, re2
-, six
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  pybind11,
+  re2,
 }:
 
 buildPythonPackage rec {
   pname = "google-re2";
-  version = "1.1";
-  format = "setuptools";
+  version = "1.1.20240702";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-06lGfuUrRqx3ypKPbQy+rM/ZLwPKDw9lud9qlRhPOhw=";
+    pname = "google_re2";
+    inherit version;
+    hash = "sha256-h4jbafbJPLIp32LHSy2aqOZL91TpSVcA+FgSr6Mu/Ss=";
   };
 
-  propagatedBuildInputs = [
-    pybind11
-    re2
-    six
-  ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [
-    "re2"
-  ];
+  buildInputs = [ re2 ];
+
+  dependencies = [ pybind11 ];
+
+  doCheck = false; # no tests in sdist
+
+  pythonImportsCheck = [ "re2" ];
 
   meta = with lib; {
     description = "RE2 Python bindings";
diff --git a/pkgs/development/python-modules/google-reauth/default.nix b/pkgs/development/python-modules/google-reauth/default.nix
index 5a4524926d4dc..854fee0506970 100644
--- a/pkgs/development/python-modules/google-reauth/default.nix
+++ b/pkgs/development/python-modules/google-reauth/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, oauth2client
-, pytestCheckHook
-, pythonOlder
-, pyu2f
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  oauth2client,
+  pytestCheckHook,
+  pythonOlder,
+  pyu2f,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "google_reauth"
-  ];
+  pythonImportsCheck = [ "google_reauth" ];
 
   meta = with lib; {
     description = "Auth plugin allowing use the use of OAuth 2.0 credentials for Google Cloud Storage";
diff --git a/pkgs/development/python-modules/google-resumable-media/default.nix b/pkgs/development/python-modules/google-resumable-media/default.nix
index e740bc4048670..504987669e7e3 100644
--- a/pkgs/development/python-modules/google-resumable-media/default.nix
+++ b/pkgs/development/python-modules/google-resumable-media/default.nix
@@ -1,27 +1,28 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, google-auth
-, google-cloud-testutils
-, google-crc32c
-, mock
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  google-auth,
+  google-cloud-testutils,
+  google-crc32c,
+  mock,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "google-resumable-media";
-  version = "2.7.0";
+  version = "2.7.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Xxj1+pg29LCDFiBkocLJjBcjm/2pylCtlwzPkF8+Yls=";
+    hash = "sha256-6uRRp7LizbqqD9LrAMyKHuXpXha1VZc1nLw9J9fZDjM=";
   };
 
   propagatedBuildInputs = [
@@ -30,12 +31,8 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    requests = [
-      requests
-    ];
-    aiohttp = [
-      aiohttp
-    ];
+    requests = [ requests ];
+    aiohttp = [ aiohttp ];
   };
 
   nativeCheckInputs = [
@@ -64,6 +61,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/GoogleCloudPlatform/google-resumable-media-python";
     changelog = "https://github.com/googleapis/google-resumable-media-python/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/google-search-results/default.nix b/pkgs/development/python-modules/google-search-results/default.nix
index 9130ad9ddb05c..7a982370ec867 100644
--- a/pkgs/development/python-modules/google-search-results/default.nix
+++ b/pkgs/development/python-modules/google-search-results/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -18,16 +19,12 @@ buildPythonPackage rec {
     hash = "sha256-YDow7K4q+OYAsiY1dXpt8nXa1Lk0+XXmeHjM1kC3gkU=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # almost all tests require an API key or network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "serpapi"
-  ];
+  pythonImportsCheck = [ "serpapi" ];
 
   meta = with lib; {
     description = "Scrape and search localized results from Google, Bing, Baidu, Yahoo, Yandex, Ebay, Homedepot, youtube at scale using SerpApi.com";
diff --git a/pkgs/development/python-modules/google/default.nix b/pkgs/development/python-modules/google/default.nix
index 3dc2cdb345148..8d55893002793 100644
--- a/pkgs/development/python-modules/google/default.nix
+++ b/pkgs/development/python-modules/google/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, beautifulsoup4
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  beautifulsoup4,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-FDUwEi7lEwUJrV6YnwUS98shiy1O3br7rUD9EOjYzL4=";
   };
 
-  propagatedBuildInputs = [
-    beautifulsoup4
-  ];
+  propagatedBuildInputs = [ beautifulsoup4 ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "googlesearch"
-  ];
+  pythonImportsCheck = [ "googlesearch" ];
 
   meta = with lib; {
     description = "Python bindings to the Google search engine";
diff --git a/pkgs/development/python-modules/googleapis-common-protos/default.nix b/pkgs/development/python-modules/googleapis-common-protos/default.nix
index 4efc119a01254..eb4d8e5944aeb 100644
--- a/pkgs/development/python-modules/googleapis-common-protos/default.nix
+++ b/pkgs/development/python-modules/googleapis-common-protos/default.nix
@@ -1,24 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, grpc
-, protobuf
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  grpc,
+  protobuf,
 }:
 
 buildPythonPackage rec {
   pname = "googleapis-common-protos";
-  version = "1.63.0";
+  version = "1.63.1";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-F60BsR1fHQFxwG07pcBMVEdOiDtmuUlyK0k47iaU704=";
+    hash = "sha256-xkQvegprKoA2lFfXnmZyu33LqriOCEgwJJfj7IB4Cmo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     grpc
@@ -40,6 +39,6 @@ buildPythonPackage rec {
     description = "Common protobufs used in Google APIs";
     homepage = "https://github.com/googleapis/python-api-common-protos";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/googlemaps/default.nix b/pkgs/development/python-modules/googlemaps/default.nix
index d2e67e4676e79..0e936dd7e1836 100644
--- a/pkgs/development/python-modules/googlemaps/default.nix
+++ b/pkgs/development/python-modules/googlemaps/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-cov
-, pytestCheckHook
-, pythonOlder
-, requests
-, responses
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-cov,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  responses,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-8oGZEMKUGaDHKq4qIZy10cbLNMmVclJnQE/dx877pNQ=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     pytest-cov
@@ -38,9 +37,7 @@ buildPythonPackage rec {
     "test_transit_without_time"
   ];
 
-  pythonImportsCheck = [
-    "googlemaps"
-  ];
+  pythonImportsCheck = [ "googlemaps" ];
 
   meta = with lib; {
     description = "Python client library for Google Maps API Web Services";
diff --git a/pkgs/development/python-modules/googletrans/default.nix b/pkgs/development/python-modules/googletrans/default.nix
index 3ffd029c26926..1ed302a6c0908 100644
--- a/pkgs/development/python-modules/googletrans/default.nix
+++ b/pkgs/development/python-modules/googletrans/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchFromGitHub, requests }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+}:
 
 buildPythonPackage rec {
   pname = "googletrans";
diff --git a/pkgs/development/python-modules/gophish/default.nix b/pkgs/development/python-modules/gophish/default.nix
new file mode 100644
index 0000000000000..48b4e880e5fcf
--- /dev/null
+++ b/pkgs/development/python-modules/gophish/default.nix
@@ -0,0 +1,63 @@
+{
+  lib,
+  appdirs,
+  buildPythonPackage,
+  certifi,
+  chardet,
+  fetchFromGitHub,
+  idna,
+  packaging,
+  pyparsing,
+  python-dateutil,
+  pythonOlder,
+  requests,
+  setuptools,
+  six,
+  urllib3,
+}:
+
+buildPythonPackage rec {
+  pname = "gophish";
+  version = "0.5.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "gophish";
+    repo = "api-client-python";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-ITwwU/Xixyi9JSWbYf606HB7S5E4jiI0lEYcOdNg3mo=";
+  };
+
+  pythonRelaxDeps = true;
+
+  build-system = [ setuptools ];
+
+
+  dependencies = [
+    appdirs
+    certifi
+    chardet
+    idna
+    packaging
+    pyparsing
+    python-dateutil
+    requests
+    six
+    urllib3
+  ];
+
+  pythonImportsCheck = [ "gophish" ];
+
+  # Module has no test
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Module to interact with Gophish";
+    homepage = "https://github.com/gophish/api-client-python";
+    changelog = "https://github.com/gophish/api-client-python/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/gotailwind/default.nix b/pkgs/development/python-modules/gotailwind/default.nix
index f1ae7880a2799..8593c49ddc115 100644
--- a/pkgs/development/python-modules/gotailwind/default.nix
+++ b/pkgs/development/python-modules/gotailwind/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, aiohttp
-, aresponses
-, awesomeversion
-, backoff
-, buildPythonPackage
-, fetchFromGitHub
-, mashumaro
-, orjson
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, syrupy
-, typer
-, yarl
-, zeroconf
+{
+  lib,
+  aiohttp,
+  aresponses,
+  awesomeversion,
+  backoff,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mashumaro,
+  orjson,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  syrupy,
+  typer,
+  yarl,
+  zeroconf,
 }:
 
 buildPythonPackage rec {
   pname = "gotailwind";
-  version = "0.2.2";
+  version = "0.2.3";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -28,21 +29,19 @@ buildPythonPackage rec {
     owner = "frenck";
     repo = "python-gotailwind";
     rev = "refs/tags/v${version}";
-    hash = "sha256-JtMBud3iON4xLc9dQdXniv51EBqs7zkat8cYm3q0uEE=";
+    hash = "sha256-FRFcFn5aRg+H9M6ZwEfLO1Dwcybvs0ODQv2ruCG+4v0=";
   };
 
   postPatch = ''
     # Upstream doesn't set a version for the pyproject.toml
     substituteInPlace pyproject.toml \
-      --replace "0.0.0" "${version}" \
-      --replace "--cov" ""
+      --replace-fail "0.0.0" "${version}" \
+      --replace-fail "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     awesomeversion
     backoff
@@ -53,9 +52,7 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    cli = [
-      typer
-    ];
+    cli = [ typer ];
   };
 
   nativeCheckInputs = [
@@ -65,16 +62,14 @@ buildPythonPackage rec {
     syrupy
   ];
 
-  pythonImportsCheck = [
-    "gotailwind"
-  ];
+  pythonImportsCheck = [ "gotailwind" ];
 
   meta = with lib; {
     description = "Modul to communicate with Tailwind garage door openers";
-    mainProgram = "tailwind";
     homepage = "https://github.com/frenck/python-gotailwind";
     changelog = "https://github.com/frenck/python-gotailwind/releases/tag/v$version";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "tailwind";
   };
 }
diff --git a/pkgs/development/python-modules/gotenberg-client/default.nix b/pkgs/development/python-modules/gotenberg-client/default.nix
index 947936616fd18..e86eb4e6e0e48 100644
--- a/pkgs/development/python-modules/gotenberg-client/default.nix
+++ b/pkgs/development/python-modules/gotenberg-client/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, hatchling
-, httpx
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  hatchling,
+  httpx,
+  typing-extensions,
 }:
 buildPythonPackage rec {
   pname = "gotenberg-client";
-  version = "0.5.0";
+  version = "0.6.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,25 +18,19 @@ buildPythonPackage rec {
     owner = "stumpylog";
     repo = "gotenberg-client";
     rev = "refs/tags/${version}";
-    hash = "sha256-38s7XLCh55uXxu/Go04Ku/m4xeqAAa2sRe4SiqIXolU=";
+    hash = "sha256-rF4msWYWgNUtOnMAB11vdAPNWZeAoeglnzMPWEM503I=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     httpx
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    typing-extensions
-  ] ++ httpx.optional-dependencies.http2;
+  ] ++ lib.optionals (pythonOlder "3.11") [ typing-extensions ] ++ httpx.optional-dependencies.http2;
 
-  pythonImportsCheck = [
-    "gotenberg_client"
-  ];
+  pythonImportsCheck = [ "gotenberg_client" ];
 
   meta = with lib; {
-    description = "A Python client for interfacing with the Gotenberg API";
+    description = "Python client for interfacing with the Gotenberg API";
     homepage = "https://github.com/stumpylog/gotenberg-client";
     changelog = "https://github.com/stumpylog/gotenberg-client/blob/${version}/CHANGELOG.md";
     license = licenses.mpl20;
diff --git a/pkgs/development/python-modules/govee-ble/default.nix b/pkgs/development/python-modules/govee-ble/default.nix
index 07e60b09b516a..840c0d0ae65ff 100644
--- a/pkgs/development/python-modules/govee-ble/default.nix
+++ b/pkgs/development/python-modules/govee-ble/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "govee-ble";
-  version = "0.31.2";
+  version = "0.40.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "Bluetooth-Devices";
     repo = "govee-ble";
     rev = "refs/tags/v${version}";
-    hash = "sha256-aWSf80WmVopkvqCzQKHEw9McrfepZcN+fhrUP90gf5U=";
+    hash = "sha256-w21paR1VTV/ZFnl9SKkJmFFDZMPgA3d7P6blceVvnVk=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/govee-led-wez/default.nix b/pkgs/development/python-modules/govee-led-wez/default.nix
index 727be405b2163..25b60113a8da7 100644
--- a/pkgs/development/python-modules/govee-led-wez/default.nix
+++ b/pkgs/development/python-modules/govee-led-wez/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, aiohttp
-, bleak
-, bleak-retry-connector
-, buildPythonPackage
-, certifi
-, fetchFromGitHub
-, hatchling
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  bleak,
+  bleak-retry-connector,
+  buildPythonPackage,
+  certifi,
+  fetchFromGitHub,
+  hatchling,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage {
@@ -26,9 +27,7 @@ buildPythonPackage {
     hash = "sha256-VMH7sot9e2SYMyBNutyW6oCCjp2N+EKukxn1Dla3AlY=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -42,9 +41,7 @@ buildPythonPackage {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "govee_led_wez"
-  ];
+  pythonImportsCheck = [ "govee_led_wez" ];
 
   meta = with lib; {
     description = "Control Govee Lights from Python";
diff --git a/pkgs/development/python-modules/govee-local-api/default.nix b/pkgs/development/python-modules/govee-local-api/default.nix
index 6cf2fa9b29c20..e2e6976b602eb 100644
--- a/pkgs/development/python-modules/govee-local-api/default.nix
+++ b/pkgs/development/python-modules/govee-local-api/default.nix
@@ -3,14 +3,13 @@
   buildPythonPackage,
   fetchFromGitHub,
   poetry-core,
-  poetry-dynamic-versioning,
   pytestCheckHook,
   pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "govee-local-api";
-  version = "1.4.4";
+  version = "1.5.2";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -19,13 +18,10 @@ buildPythonPackage rec {
     owner = "Galorhallen";
     repo = "govee-local-api";
     rev = "refs/tags/v${version}";
-    hash = "sha256-J4SG4n6LIZ/G6pEXAzliV7uTWzqsH7rtFe3Y7BJ2dWE=";
+    hash = "sha256-sxxw/XAPENtNeY/64+pxnPgMBBM7+lpF52ixRm18d48=";
   };
 
-  build-system = [
-    poetry-core
-    poetry-dynamic-versioning
-  ];
+  build-system = [ poetry-core ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
diff --git a/pkgs/development/python-modules/goveelights/default.nix b/pkgs/development/python-modules/goveelights/default.nix
index 254ae57d32f62..f12caa93c6be3 100644
--- a/pkgs/development/python-modules/goveelights/default.nix
+++ b/pkgs/development/python-modules/goveelights/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-A7tfY+aFzhfruCZ43usj1/CsTejbPMzHM8SYrY/TU1s=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "goveelights"
-  ];
+  pythonImportsCheck = [ "goveelights" ];
 
   meta = with lib; {
     description = "Python module for interacting with the Govee API";
diff --git a/pkgs/development/python-modules/gpapi/default.nix b/pkgs/development/python-modules/gpapi/default.nix
index 307e8dfb63b80..cd6ce736d2a62 100644
--- a/pkgs/development/python-modules/gpapi/default.nix
+++ b/pkgs/development/python-modules/gpapi/default.nix
@@ -1,18 +1,17 @@
-{ buildPythonPackage
-, cryptography
-, fetchPypi
-, lib
-, pythonOlder
-, protobuf
-, pycryptodome
-, requests
+{
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  lib,
+  protobuf,
+  pycryptodome,
+  requests,
 }:
 
 buildPythonPackage rec {
   version = "0.4.4";
   format = "setuptools";
   pname = "gpapi";
-  disabled = pythonOlder "3.3"; # uses shutil.which(), added in 3.3
 
   src = fetchPypi {
     inherit version pname;
@@ -25,12 +24,17 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "gpapi.googleplay" ];
 
-  propagatedBuildInputs = [ cryptography protobuf pycryptodome requests ];
+  propagatedBuildInputs = [
+    cryptography
+    protobuf
+    pycryptodome
+    requests
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/NoMore201/googleplay-api";
     license = licenses.gpl3Only;
     description = "Google Play Unofficial Python API";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/gpaw/default.nix b/pkgs/development/python-modules/gpaw/default.nix
index 37b12c6f5ed49..9b647af6e2b18 100644
--- a/pkgs/development/python-modules/gpaw/default.nix
+++ b/pkgs/development/python-modules/gpaw/default.nix
@@ -1,27 +1,29 @@
-{ buildPythonPackage
-, lib
-, fetchFromGitLab
-, writeTextFile
-, fetchurl
-, blas
-, lapack
-, mpi
-, scalapack
-, libxc
-, libvdwxc
-, which
-, ase
-, numpy
-, scipy
-, pyyaml
-, inetutils
+{
+  buildPythonPackage,
+  lib,
+  fetchFromGitLab,
+  writeTextFile,
+  fetchurl,
+  blas,
+  lapack,
+  mpi,
+  fftw,
+  scalapack,
+  libxc,
+  libvdwxc,
+  which,
+  ase,
+  numpy,
+  scipy,
+  pyyaml,
+  inetutils,
 }:
 
-assert lib.asserts.assertMsg (!blas.isILP64)
-  "A 32 bit integer implementation of BLAS is required.";
+assert lib.asserts.assertMsg (!blas.isILP64) "A 32 bit integer implementation of BLAS is required.";
 
-assert lib.asserts.assertMsg (!lapack.isILP64)
-  "A 32 bit integer implementation of LAPACK is required.";
+assert lib.asserts.assertMsg (
+  !lapack.isILP64
+) "A 32 bit integer implementation of LAPACK is required.";
 
 let
   gpawConfig = writeTextFile {
@@ -71,8 +73,8 @@ let
     url = "https://wiki.fysik.dtu.dk/gpaw-files/gpaw-setups-${setupVersion}.tar.gz";
     sha256 = "07yldxnn38gky39fxyv3rfzag9p4lb0xfpzn15wy2h9aw4mnhwbc";
   };
-
-in buildPythonPackage rec {
+in
+buildPythonPackage rec {
   pname = "gpaw";
   version = "24.1.0";
   format = "setuptools";
@@ -87,11 +89,26 @@ in buildPythonPackage rec {
   # `inetutils` is required because importing `gpaw`, as part of
   # pythonImportsCheck, tries to execute its binary, which in turn tries to
   # execute `rsh` as a side-effect.
-  nativeBuildInputs = [ which inetutils ];
-
-  buildInputs = [ blas scalapack libxc libvdwxc ];
-
-  propagatedBuildInputs = [ ase scipy numpy mpi pyyaml ];
+  nativeBuildInputs = [
+    which
+    inetutils
+  ];
+
+  buildInputs = [
+    blas
+    scalapack
+    libxc
+    libvdwxc
+    fftw
+  ];
+
+  propagatedBuildInputs = [
+    ase
+    scipy
+    numpy
+    (lib.getBin mpi)
+    pyyaml
+  ];
 
   patches = [ ./SetupPath.patch ];
 
@@ -117,7 +134,9 @@ in buildPythonPackage rec {
   doCheck = false; # Requires MPI runtime to work in the sandbox
   pythonImportsCheck = [ "gpaw" ];
 
-  passthru = { inherit mpi; };
+  passthru = {
+    inherit mpi;
+  };
 
   meta = with lib; {
     description = "Density functional theory and beyond within the projector-augmented wave method";
diff --git a/pkgs/development/python-modules/gphoto2/default.nix b/pkgs/development/python-modules/gphoto2/default.nix
index 6ea7744cab6dc..7f1e5ce0e4764 100644
--- a/pkgs/development/python-modules/gphoto2/default.nix
+++ b/pkgs/development/python-modules/gphoto2/default.nix
@@ -1,8 +1,12 @@
-{ lib, fetchPypi, fetchpatch, buildPythonPackage
-, pkg-config
-, libgphoto2
-, setuptools
-, toml
+{
+  lib,
+  fetchPypi,
+  fetchpatch,
+  buildPythonPackage,
+  pkg-config,
+  libgphoto2,
+  setuptools,
+  toml,
 }:
 
 buildPythonPackage rec {
@@ -22,7 +26,11 @@ buildPythonPackage rec {
     hash = "sha256-EXtXlhBx2jCKtMl7HmN87liqiHVAFSeXr11y830AlpY=";
   };
 
-  nativeBuildInputs = [ pkg-config setuptools toml ];
+  nativeBuildInputs = [
+    pkg-config
+    setuptools
+    toml
+  ];
 
   buildInputs = [ libgphoto2 ];
 
@@ -34,6 +42,6 @@ buildPythonPackage rec {
     description = "Python interface to libgphoto2";
     homepage = "https://github.com/jim-easterbrook/python-gphoto2";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/gpib-ctypes/default.nix b/pkgs/development/python-modules/gpib-ctypes/default.nix
index 42c07a9ef4218..98feeb7749fa4 100644
--- a/pkgs/development/python-modules/gpib-ctypes/default.nix
+++ b/pkgs/development/python-modules/gpib-ctypes/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, pytestCheckHook
-, linux-gpib
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  pytestCheckHook,
+  linux-gpib,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-c9l6TNmM4PtbvopnnFi5R1dQ9o3MI39BHHHPSGqfjCY=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace gpib_ctypes/gpib/gpib.py \
@@ -30,9 +29,7 @@ buildPythonPackage rec {
       --replace "'pytest-runner'," ""
   '';
 
-  pythonImportsCheck = [
-    "gpib_ctypes.gpib"
-  ];
+  pythonImportsCheck = [ "gpib_ctypes.gpib" ];
 
   meta = with lib; {
     description = "Cross-platform Python bindings for the NI GPIB and linux-gpib C interfaces";
diff --git a/pkgs/development/python-modules/gpiozero/default.nix b/pkgs/development/python-modules/gpiozero/default.nix
index 3aaa5ba775067..f8314696f9fa4 100644
--- a/pkgs/development/python-modules/gpiozero/default.nix
+++ b/pkgs/development/python-modules/gpiozero/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# docs
-, sphinx-rtd-theme
-, sphinxHook
+  # docs
+  sphinx-rtd-theme,
+  sphinxHook,
 
-# dependencies
-, colorzero
+  # dependencies
+  colorzero,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -47,13 +48,9 @@ buildPythonPackage rec {
     sphinxHook
   ];
 
-  propagatedBuildInputs = [
-    colorzero
-  ];
+  propagatedBuildInputs = [ colorzero ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [
     "gpiozero"
@@ -66,7 +63,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A simple interface to GPIO devices with Raspberry Pi";
+    description = "Simple interface to GPIO devices with Raspberry Pi";
     homepage = "https://github.com/gpiozero/gpiozero";
     changelog = "https://github.com/gpiozero/gpiozero/blob/v${version}/docs/changelog.rst";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/gplaycli/default.nix b/pkgs/development/python-modules/gplaycli/default.nix
index 1c70d37b0dbb3..9303ef9d1450e 100644
--- a/pkgs/development/python-modules/gplaycli/default.nix
+++ b/pkgs/development/python-modules/gplaycli/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, args
-, buildPythonPackage
-, clint
-, fetchFromGitHub
-, libffi
-, matlink-gpapi
-, ndg-httpsclient
-, protobuf
-, pyasn1
-, pyaxmlparser
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  args,
+  buildPythonPackage,
+  clint,
+  fetchFromGitHub,
+  libffi,
+  matlink-gpapi,
+  ndg-httpsclient,
+  protobuf,
+  pyasn1,
+  pyaxmlparser,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -42,13 +43,9 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "gplaycli"
-  ];
+  pythonImportsCheck = [ "gplaycli" ];
 
   preCheck = ''
     export PATH="$PATH:$out/bin";
@@ -73,6 +70,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/matlink/gplaycli";
     changelog = "https://github.com/matlink/gplaycli/releases/tag/${version}";
     license = licenses.agpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/gprof2dot/default.nix b/pkgs/development/python-modules/gprof2dot/default.nix
index f9823ffbdfdb8..e12d999dd82c4 100644
--- a/pkgs/development/python-modules/gprof2dot/default.nix
+++ b/pkgs/development/python-modules/gprof2dot/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, python
-, graphviz
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  python,
+  graphviz,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "gprof2dot";
-  version = "2022.07.29";
+  version = "2024.06.06";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -17,17 +18,13 @@ buildPythonPackage rec {
     owner = "jrfonseca";
     repo = "gprof2dot";
     rev = "refs/tags/${version}";
-    hash = "sha256-nIsBO6KTyG2VZZRXrkU/T/a9Ki1x6hda5Vv3rZv/mJM=";
+    hash = "sha256-6TTshVbfYh/2Ss1uysGW0nxmNQdIiAhe4LldMS7hpCo=";
   };
 
-  makeWrapperArgs = [
-    "--prefix PATH : ${lib.makeBinPath [ graphviz ]}"
-  ];
+  makeWrapperArgs = [ "--prefix PATH : ${lib.makeBinPath [ graphviz ]}" ];
 
   # Needed so dot is on path of the test script
-  nativeCheckInputs = [
-    graphviz
-  ];
+  nativeCheckInputs = [ graphviz ];
 
   checkPhase = ''
     runHook preCheck
diff --git a/pkgs/development/python-modules/gps3/default.nix b/pkgs/development/python-modules/gps3/default.nix
index 4d4182063b404..4f5cfb5d5b866 100644
--- a/pkgs/development/python-modules/gps3/default.nix
+++ b/pkgs/development/python-modules/gps3/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/gpsoauth/default.nix b/pkgs/development/python-modules/gpsoauth/default.nix
index 08fdfa6d01c0b..d40d2f3c61747 100644
--- a/pkgs/development/python-modules/gpsoauth/default.nix
+++ b/pkgs/development/python-modules/gpsoauth/default.nix
@@ -1,27 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, poetry-core
-, pycryptodomex
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  pycryptodomex,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "gpsoauth";
-  version = "1.1.0";
+  version = "1.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-BA+2aFxpFpi6cWGl4yepba7s7BmZ1ijvSBhtS23v3QM=";
+    hash = "sha256-WCAu0wM5fSkntGTcleJxS///haGw+Iv2jzrWOFnr5DU=";
   };
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     poetry-core
   ];
 
@@ -30,9 +29,7 @@ buildPythonPackage rec {
     requests
   ];
 
-  pythonRelaxDeps = [
-    "urllib3"
-  ];
+  pythonRelaxDeps = [ "urllib3" ];
 
   # upstream tests are not very comprehensive
   doCheck = false;
diff --git a/pkgs/development/python-modules/gpt-2-simple/default.nix b/pkgs/development/python-modules/gpt-2-simple/default.nix
index aae6dfbfbc400..6d12f2629793d 100644
--- a/pkgs/development/python-modules/gpt-2-simple/default.nix
+++ b/pkgs/development/python-modules/gpt-2-simple/default.nix
@@ -1,10 +1,20 @@
-{ lib, buildPythonPackage, fetchFromGitHub, regex, requests, tqdm, numpy
-, toposort, tensorflow }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  regex,
+  requests,
+  setuptools,
+  tqdm,
+  numpy,
+  toposort,
+  tensorflow,
+}:
 
 buildPythonPackage rec {
   pname = "gpt-2-simple";
   version = "0.8.1";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "minimaxir";
@@ -13,15 +23,23 @@ buildPythonPackage rec {
     hash = "sha256-WwD4sDcc28zXEOISJsq8e+rgaNrrgIy79Wa4J3E7Ovc=";
   };
 
-  propagatedBuildInputs = [ regex requests tqdm numpy toposort tensorflow ];
+  build-system = [ setuptools ];
 
-  dontCheck = true; # no tests in upstream
+  propagatedBuildInputs = [
+    regex
+    requests
+    tqdm
+    numpy
+    toposort
+    tensorflow
+  ];
+
+  doCheck = false; # no tests in upstream
 
   meta = with lib; {
-    description =
-      "Easily retrain OpenAI's GPT-2 text-generating model on new texts";
+    description = "Easily retrain OpenAI's GPT-2 text-generating model on new texts";
     homepage = "https://github.com/minimaxir/gpt-2-simple";
     license = licenses.mit;
-    maintainers = with maintainers; [ ckie ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/gptcache/default.nix b/pkgs/development/python-modules/gptcache/default.nix
index 8b54055072928..78bd67682c4fb 100644
--- a/pkgs/development/python-modules/gptcache/default.nix
+++ b/pkgs/development/python-modules/gptcache/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cachetools
-, numpy
-, pythonOlder
-, redis
-, redis-om
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cachetools,
+  numpy,
+  pythonOlder,
+  redis,
+  redis-om,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "gptcache";
-  version = "0.1.43";
+  version = "0.1.44";
   format = "setuptools";
 
   disabled = pythonOlder "3.8.1";
@@ -20,7 +21,7 @@ buildPythonPackage rec {
     owner = "zilliztech";
     repo = "GPTCache";
     rev = "refs/tags/${version}";
-    hash = "sha256-EDsHzl55j4sehbKk0/be+WOl83f1/7zPLvPyzKnTBP4=";
+    hash = "sha256-FRqngDyGO0ReTRtm9617TFLHVXWY9/NQlZHlBP8ukg0=";
   };
 
   propagatedBuildInputs = [
@@ -40,7 +41,7 @@ buildPythonPackage rec {
     description = "Semantic cache for LLMs and fully integrated with LangChain and llama_index";
     mainProgram = "gptcache_server";
     homepage = "https://github.com/zilliztech/GPTCache";
-    changelog = "https://github.com/zilliztech/GPTCache/releases/tag/${src.rev}";
+    changelog = "https://github.com/zilliztech/GPTCache/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ natsukium ];
   };
diff --git a/pkgs/development/python-modules/gpuctypes/default.nix b/pkgs/development/python-modules/gpuctypes/default.nix
index e5987f78ee07e..32a61a6550934 100644
--- a/pkgs/development/python-modules/gpuctypes/default.nix
+++ b/pkgs/development/python-modules/gpuctypes/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, config
-, buildPythonPackage
-, fetchFromGitHub
-, substituteAll
-, addDriverRunpath
-, cudaSupport ? config.cudaSupport
-, rocmSupport ? config.rocmSupport
-, cudaPackages
-, setuptools
-, ocl-icd
-, rocmPackages
-, pytestCheckHook
-, gpuctypes
-, testCudaRuntime ? false
-, testOpenclRuntime ? false
-, testRocmRuntime ? false
+{
+  lib,
+  config,
+  buildPythonPackage,
+  fetchFromGitHub,
+  substituteAll,
+  addDriverRunpath,
+  cudaSupport ? config.cudaSupport,
+  rocmSupport ? config.rocmSupport,
+  cudaPackages,
+  setuptools,
+  ocl-icd,
+  rocmPackages,
+  pytestCheckHook,
+  gpuctypes,
+  testCudaRuntime ? false,
+  testOpenclRuntime ? false,
+  testRocmRuntime ? false,
 }:
 assert testCudaRuntime -> cudaSupport;
 assert testRocmRuntime -> rocmSupport;
@@ -36,75 +37,68 @@ buildPythonPackage rec {
       src = ./0001-fix-dlopen-cuda.patch;
       inherit (addDriverRunpath) driverLink;
       libnvrtc =
-        if cudaSupport
-        then "${lib.getLib cudaPackages.cuda_nvrtc}/lib/libnvrtc.so"
-        else "Please import nixpkgs with `config.cudaSupport = true`";
+        if cudaSupport then
+          "${lib.getLib cudaPackages.cuda_nvrtc}/lib/libnvrtc.so"
+        else
+          "Please import nixpkgs with `config.cudaSupport = true`";
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  postPatch = ''
-    substituteInPlace gpuctypes/opencl.py \
-      --replace "ctypes.util.find_library('OpenCL')" "'${ocl-icd}/lib/libOpenCL.so'"
-  ''
-  # hipGetDevicePropertiesR0600 is a symbol from rocm-6. We are currently at rocm-5.
-  # We are not sure that this works. Remove when rocm gets updated to version 6.
-  + lib.optionalString rocmSupport ''
-    substituteInPlace gpuctypes/hip.py \
-      --replace "/opt/rocm/lib/libamdhip64.so" "${rocmPackages.clr}/lib/libamdhip64.so" \
-      --replace "/opt/rocm/lib/libhiprtc.so" "${rocmPackages.clr}/lib/libhiprtc.so" \
-      --replace "hipGetDevicePropertiesR0600" "hipGetDeviceProperties"
+  postPatch =
+    ''
+      substituteInPlace gpuctypes/opencl.py \
+        --replace "ctypes.util.find_library('OpenCL')" "'${ocl-icd}/lib/libOpenCL.so'"
+    ''
+    # hipGetDevicePropertiesR0600 is a symbol from rocm-6. We are currently at rocm-5.
+    # We are not sure that this works. Remove when rocm gets updated to version 6.
+    + lib.optionalString rocmSupport ''
+      substituteInPlace gpuctypes/hip.py \
+        --replace "/opt/rocm/lib/libamdhip64.so" "${rocmPackages.clr}/lib/libamdhip64.so" \
+        --replace "/opt/rocm/lib/libhiprtc.so" "${rocmPackages.clr}/lib/libhiprtc.so" \
+        --replace "hipGetDevicePropertiesR0600" "hipGetDeviceProperties"
 
-    substituteInPlace gpuctypes/comgr.py \
-      --replace "/opt/rocm/lib/libamd_comgr.so" "${rocmPackages.rocm-comgr}/lib/libamd_comgr.so"
-  '';
+      substituteInPlace gpuctypes/comgr.py \
+        --replace "/opt/rocm/lib/libamd_comgr.so" "${rocmPackages.rocm-comgr}/lib/libamd_comgr.so"
+    '';
 
   pythonImportsCheck = [ "gpuctypes" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTestPaths = lib.optionals (!testOpenclRuntime) [
-    "test/test_opencl.py"
-  ] ++ lib.optionals (!rocmSupport) [
-    "test/test_hip.py"
-  ] ++ lib.optionals (!cudaSupport) [
-    "test/test_cuda.py"
-  ];
+  disabledTestPaths =
+    lib.optionals (!testOpenclRuntime) [ "test/test_opencl.py" ]
+    ++ lib.optionals (!rocmSupport) [ "test/test_hip.py" ]
+    ++ lib.optionals (!cudaSupport) [ "test/test_cuda.py" ];
 
   # Require GPU access to run (not available in the sandbox)
-  pytestFlagsArray = lib.optionals (!testCudaRuntime) [
-    "-k" "'not TestCUDADevice'"
-  ] ++ lib.optionals (!testRocmRuntime) [
-    "-k" "'not TestHIPDevice'"
-  ] ++ lib.optionals (testCudaRuntime || testOpenclRuntime || testRocmRuntime) [
-    "-v"
-  ];
+  pytestFlagsArray =
+    lib.optionals (!testCudaRuntime) [
+      "-k"
+      "'not TestCUDADevice'"
+    ]
+    ++ lib.optionals (!testRocmRuntime) [
+      "-k"
+      "'not TestHIPDevice'"
+    ]
+    ++ lib.optionals (testCudaRuntime || testOpenclRuntime || testRocmRuntime) [ "-v" ];
 
   # Running these tests requires special configuration on the builder.
   # e.g. https://github.com/NixOS/nixpkgs/pull/256230 implements a nix
   # pre-build hook which exposes the devices and the drivers in the sandbox
   # based on requiredSystemFeatures:
-  requiredSystemFeatures = lib.optionals testCudaRuntime [
-    "cuda"
-  ] ++ lib.optionals testOpenclRuntime [
-    "opencl"
-  ] ++ lib.optionals testRocmRuntime [
-    "rocm"
-  ];
+  requiredSystemFeatures =
+    lib.optionals testCudaRuntime [ "cuda" ]
+    ++ lib.optionals testOpenclRuntime [ "opencl" ]
+    ++ lib.optionals testRocmRuntime [ "rocm" ];
 
   passthru.gpuChecks = {
     cuda = gpuctypes.override {
       cudaSupport = true;
       testCudaRuntime = true;
     };
-    opencl = gpuctypes.override {
-      testOpenclRuntime = true;
-    };
+    opencl = gpuctypes.override { testOpenclRuntime = true; };
     rocm = gpuctypes.override {
       rocmSupport = true;
       testRocmRuntime = true;
@@ -122,6 +116,10 @@ buildPythonPackage rec {
     description = "Ctypes wrappers for HIP, CUDA, and OpenCL";
     homepage = "https://github.com/tinygrad/gpuctypes";
     license = licenses.mit;
-    maintainers = with maintainers; [ GaetanLepage matthewcroughan wozeparrot ];
+    maintainers = with maintainers; [
+      GaetanLepage
+      matthewcroughan
+      wozeparrot
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/gpuctypes/fix-dlopen-cuda.patch b/pkgs/development/python-modules/gpuctypes/fix-dlopen-cuda.patch
deleted file mode 100644
index 8d3b69e35e110..0000000000000
--- a/pkgs/development/python-modules/gpuctypes/fix-dlopen-cuda.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-diff --git a/gpuctypes/cuda.py b/gpuctypes/cuda.py
-index acba81c..aac5fc7 100644
---- a/gpuctypes/cuda.py
-+++ b/gpuctypes/cuda.py
-@@ -143,9 +143,25 @@ def char_pointer_cast(string, encoding='utf-8'):
- 
- 
- 
-+NAME_TO_PATHS = {
-+    "libcuda.so": ["@driverLink@/lib/libcuda.so"],
-+    "libnvrtc.so": ["@libnvrtc@"],
-+}
-+def _try_dlopen(name):
-+    try:
-+        return ctypes.CDLL(name)
-+    except OSError:
-+        pass
-+    for candidate in NAME_TO_PATHS.get(name, []):
-+        try:
-+            return ctypes.CDLL(candidate)
-+        except OSError:
-+	     pass
-+    raise RuntimeError(f"{name} not found")
-+
- _libraries = {}
--_libraries['libcuda.so'] = ctypes.CDLL(ctypes.util.find_library('cuda'))
--_libraries['libnvrtc.so'] = ctypes.CDLL(ctypes.util.find_library('nvrtc'))
-+_libraries['libcuda.so'] = _try_dlopen('libcuda.so')
-+_libraries['libnvrtc.so'] = _try_dlopen('libnvrtc.so')
- 
- 
- cuuint32_t = ctypes.c_uint32
diff --git a/pkgs/development/python-modules/gpustat/default.nix b/pkgs/development/python-modules/gpustat/default.nix
index e6a35531f55f4..d3a06d7f89003 100644
--- a/pkgs/development/python-modules/gpustat/default.nix
+++ b/pkgs/development/python-modules/gpustat/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, blessed
-, buildPythonPackage
-, fetchPypi
-, mockito
-, nvidia-ml-py
-, psutil
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools-scm
+{
+  lib,
+  blessed,
+  buildPythonPackage,
+  fetchPypi,
+  mockito,
+  nvidia-ml-py,
+  psutil,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -23,12 +23,9 @@ buildPythonPackage rec {
     hash = "sha256-wY0+1VGPwWMAxC1pTevHCuuzvlXK6R8dtk1jtfqK+dg=";
   };
 
-  pythonRelaxDeps = [
-    "nvidia-ml-py"
-  ];
+  pythonRelaxDeps = [ "nvidia-ml-py" ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools-scm
   ];
 
@@ -43,12 +40,10 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "gpustat"
-  ];
+  pythonImportsCheck = [ "gpustat" ];
 
   meta = with lib; {
-    description = "A simple command-line utility for querying and monitoring GPU status";
+    description = "Simple command-line utility for querying and monitoring GPU status";
     mainProgram = "gpustat";
     homepage = "https://github.com/wookayin/gpustat";
     changelog = "https://github.com/wookayin/gpustat/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/gpxpy/default.nix b/pkgs/development/python-modules/gpxpy/default.nix
index 2f8e07cccf45d..640f2b4d6fe17 100644
--- a/pkgs/development/python-modules/gpxpy/default.nix
+++ b/pkgs/development/python-modules/gpxpy/default.nix
@@ -1,4 +1,11 @@
-{ lib, fetchFromGitHub, buildPythonPackage, python, lxml, pythonOlder }:
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  python,
+  lxml,
+  pythonOlder,
+}:
 
 buildPythonPackage rec {
   pname = "gpxpy";
diff --git a/pkgs/development/python-modules/gpy/default.nix b/pkgs/development/python-modules/gpy/default.nix
index 33da65d155cc2..9bca05da8e5ab 100644
--- a/pkgs/development/python-modules/gpy/default.nix
+++ b/pkgs/development/python-modules/gpy/default.nix
@@ -1,33 +1,38 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, setuptools
-, numpy
-, scipy
-, six
-, paramz
-, matplotlib
-, cython
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools,
+  numpy,
+  scipy,
+  six,
+  paramz,
+  matplotlib,
+  cython,
 }:
 
 buildPythonPackage rec {
   pname = "gpy";
-  version = "1.13.0";
+  version = "1.13.2";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
 
-  # 1.13.0 not on PyPI yet
   src = fetchFromGitHub {
     owner = "SheffieldML";
     repo = "GPy";
-    rev = "refs/tags/v.${version}";
-    hash = "sha256-2HKKKBD/JFSeLQGvvgObxqxv9IHEKFnpaejdKbYZbmY=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-kggXePDKJcgw8qwLIBTxbwhiLw2H4dkx7082FguKP0Y=";
   };
 
+  pythonRelaxDeps = [
+    "paramz"
+    "scipy"
+  ];
+
   nativeBuildInputs = [ setuptools ];
   buildInputs = [ cython ];
   propagatedBuildInputs = [
@@ -46,14 +51,18 @@ buildPythonPackage rec {
     done
   '';
 
+  disabledTests = lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) [
+    # Rounding difference break comparison
+    "TestGradientMultiOutputGPModel"
+  ];
+
   pythonImportsCheck = [ "GPy" ];
 
   meta = with lib; {
     description = "Gaussian process framework in Python";
     homepage = "https://sheffieldml.github.io/GPy";
-    changelog = "https://github.com/SheffieldML/GPy/releases/tag/v.${version}";
+    changelog = "https://github.com/SheffieldML/GPy/releases/tag/v${version}";
     license = licenses.bsd3;
     maintainers = with maintainers; [ bcdarwin ];
-    broken = stdenv.isDarwin; # See inscrutable error message here: https://github.com/NixOS/nixpkgs/pull/107653#issuecomment-751527547
   };
 }
diff --git a/pkgs/development/python-modules/gpytorch/default.nix b/pkgs/development/python-modules/gpytorch/default.nix
index c4664bc04ee7a..cb449dc56d611 100644
--- a/pkgs/development/python-modules/gpytorch/default.nix
+++ b/pkgs/development/python-modules/gpytorch/default.nix
@@ -1,27 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, linear-operator
-, scikit-learn
-, setuptools
-, setuptools-scm
-, wheel
-, torch
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  linear-operator,
+  scikit-learn,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  torch,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "gpytorch";
-  version = "1.11";
+  version = "1.12";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "cornellius-gp";
     repo = pname;
-    rev = "v${version}";
-    hash = "sha256-cpkfjx5G/4duL1Rr4nkHTHi03TDcYbcx3bKP2Ny7Ijo=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-8W0QSiXl+C86m5yaI9KfGN92uA2VGjGwQt6DI/1NaQE=";
   };
 
+  patches = [
+    (fetchpatch {
+      # https://github.com/cornellius-gp/gpytorch/pull/2545
+      name = "scipy-1.14-compatibility.patch";
+      url = "https://github.com/cornellius-gp/gpytorch/commit/2562be472521b8aec366de2619e3130a96fab982.patch";
+      excludes = [ "setup.py" ];
+      hash = "sha256-znOFpN6go2iIxP24VjJLKF3Laxcr4xV/IyP2y36g4QY=";
+    })
+  ];
+
   nativeBuildInputs = [
     setuptools
     setuptools-scm
@@ -34,9 +46,7 @@ buildPythonPackage rec {
     torch
   ];
 
-  checkInputs = [
-    pytestCheckHook
-  ];
+  checkInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "gpytorch" ];
 
@@ -51,7 +61,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A highly efficient and modular implementation of Gaussian Processes, with GPU acceleration";
+    description = "Highly efficient and modular implementation of Gaussian Processes, with GPU acceleration";
     homepage = "https://gpytorch.ai";
     license = licenses.mit;
     maintainers = with maintainers; [ veprbl ];
diff --git a/pkgs/development/python-modules/gql/default.nix b/pkgs/development/python-modules/gql/default.nix
index 25b5ed25bae42..1a664c0e936e4 100644
--- a/pkgs/development/python-modules/gql/default.nix
+++ b/pkgs/development/python-modules/gql/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, aiofiles
-, aiohttp
-, anyio
-, backoff
-, botocore
-, buildPythonPackage
-, fetchFromGitHub
-, graphql-core
-, httpx
-, mock
-, parse
-, pytest-asyncio
-, pytest-console-scripts
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-toolbelt
-, setuptools
-, urllib3
-, vcrpy
-, websockets
-, yarl
+{
+  lib,
+  aiofiles,
+  aiohttp,
+  anyio,
+  backoff,
+  botocore,
+  buildPythonPackage,
+  fetchFromGitHub,
+  graphql-core,
+  httpx,
+  mock,
+  parse,
+  pytest-asyncio,
+  pytest-console-scripts,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-toolbelt,
+  setuptools,
+  urllib3,
+  vcrpy,
+  websockets,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -43,9 +44,7 @@ buildPythonPackage rec {
       "websockets>=10,<12;python_version>'3.6'"
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     anyio
@@ -74,32 +73,22 @@ buildPythonPackage rec {
       urllib3
       websockets
     ];
-    aiohttp = [
-      aiohttp
-    ];
-    httpx = [
-      httpx
-    ];
+    aiohttp = [ aiohttp ];
+    httpx = [ httpx ];
     requests = [
       requests
       requests-toolbelt
       urllib3
     ];
-    websockets = [
-      websockets
-    ];
-    botocore = [
-      botocore
-    ];
+    websockets = [ websockets ];
+    botocore = [ botocore ];
   };
 
   preCheck = ''
     export PATH=$out/bin:$PATH
   '';
 
-  pytestFlagsArray = [
-    "--asyncio-mode=auto"
-  ];
+  pytestFlagsArray = [ "--asyncio-mode=auto" ];
 
   disabledTests = [
     # Tests requires network access
@@ -129,9 +118,7 @@ buildPythonPackage rec {
     "tests/test_websocket_subscription.py"
   ];
 
-  pythonImportsCheck = [
-    "gql"
-  ];
+  pythonImportsCheck = [ "gql" ];
 
   meta = with lib; {
     description = "GraphQL client in Python";
diff --git a/pkgs/development/python-modules/grad-cam/default.nix b/pkgs/development/python-modules/grad-cam/default.nix
index 42d65ae433b7b..e632650a40a63 100644
--- a/pkgs/development/python-modules/grad-cam/default.nix
+++ b/pkgs/development/python-modules/grad-cam/default.nix
@@ -1,29 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, matplotlib
-, numpy
-, opencv4
-, pillow
-, scikit-learn
-, setuptools
-, torch
-, torchvision
-, ttach
-, tqdm
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  matplotlib,
+  numpy,
+  opencv4,
+  pillow,
+  scikit-learn,
+  torch,
+  torchvision,
+  ttach,
+  tqdm,
 }:
 
 buildPythonPackage rec {
   pname = "grad-cam";
-  version = "1.5.0";
+  version = "1.5.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-aw7Z/6/AMKH2PVBcOr8HxsmRDa6c3v8Xd4xa8HTiFGA=";
+    hash = "sha256-WhC3QjMDh4E8NnO8SyCtg9rFgDJkYP6/xdWNcTvlKFU=";
   };
 
   postPatch = ''
@@ -32,10 +33,17 @@ buildPythonPackage rec {
   '';
 
   nativeBuildInputs = [
+  ];
+
+  pythonRelaxDeps = [
+    "torchvision"
+  ];
+
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     matplotlib
     numpy
     opencv4
@@ -47,11 +55,9 @@ buildPythonPackage rec {
   ];
 
   # Let the user bring their own instance (as with torchmetrics)
-  buildInputs = [
-    torch
-  ];
+  buildInputs = [ torch ];
 
-  doCheck = false;  # every nontrivial test tries to download a pretrained model
+  doCheck = false; # every nontrivial test tries to download a pretrained model
 
   pythonImportsCheck = [
     "pytorch_grad_cam"
@@ -63,10 +69,10 @@ buildPythonPackage rec {
     "pytorch_grad_cam.utils.model_targets"
   ];
 
-  meta = with lib; {
-    description = "Advanced AI explainability for computer vision.";
+  meta = {
+    description = "Advanced AI explainability for computer vision";
     homepage = "https://jacobgil.github.io/pytorch-gradcam-book";
-    license = licenses.mit;
-    maintainers = with maintainers; [ bcdarwin ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ bcdarwin ];
   };
 }
diff --git a/pkgs/development/python-modules/gradient-statsd/default.nix b/pkgs/development/python-modules/gradient-statsd/default.nix
index d7c5c258ab5e6..4e6dc0f1424d4 100644
--- a/pkgs/development/python-modules/gradient-statsd/default.nix
+++ b/pkgs/development/python-modules/gradient-statsd/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, certifi
-, chardet
-, datadog
-, decorator
-, fetchPypi
-, idna
-, requests
-, urllib3
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  certifi,
+  chardet,
+  datadog,
+  decorator,
+  fetchPypi,
+  idna,
+  requests,
+  urllib3,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     urllib3
   ];
 
-  pythonImportsCheck = [
-    "gradient_statsd"
-  ];
+  pythonImportsCheck = [ "gradient_statsd" ];
 
   # Pypi does not contain tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/gradient-utils/default.nix b/pkgs/development/python-modules/gradient-utils/default.nix
index 3d3cd47cf41eb..b384b85e0f229 100644
--- a/pkgs/development/python-modules/gradient-utils/default.nix
+++ b/pkgs/development/python-modules/gradient-utils/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hyperopt
-, mock
-, numpy
-, poetry-core
-, prometheus-client
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hyperopt,
+  mock,
+  numpy,
+  poetry-core,
+  prometheus-client,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-swnl0phdOsBSP8AX/OySI/aYI9z60Ss3SsJox/mb9KY=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     hyperopt
@@ -59,9 +58,7 @@ buildPythonPackage rec {
     "tests/integration/test_metrics.py"
   ];
 
-  pythonImportsCheck = [
-    "gradient_utils"
-  ];
+  pythonImportsCheck = [ "gradient_utils" ];
 
   meta = with lib; {
     description = "Python utils and helpers library for Gradient";
diff --git a/pkgs/development/python-modules/gradient/default.nix b/pkgs/development/python-modules/gradient/default.nix
index 584de835e0d07..36c3e2d82495d 100644
--- a/pkgs/development/python-modules/gradient/default.nix
+++ b/pkgs/development/python-modules/gradient/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, attrs
-, boto3
-, buildPythonPackage
-, click-completion
-, click-didyoumean
-, click-help-colors
-, colorama
-, fetchPypi
-, gradient-statsd
-, gradient-utils
-, gql
-, halo
-, marshmallow
-, progressbar2
-, pyopenssl
-, pyyaml
-, requests
-, requests-toolbelt
-, terminaltables
-, websocket-client
+{
+  lib,
+  attrs,
+  boto3,
+  buildPythonPackage,
+  click-completion,
+  click-didyoumean,
+  click-help-colors,
+  colorama,
+  fetchPypi,
+  gradient-statsd,
+  gradient-utils,
+  gql,
+  halo,
+  marshmallow,
+  progressbar2,
+  pyopenssl,
+  pyyaml,
+  requests,
+  requests-toolbelt,
+  terminaltables,
+  websocket-client,
 }:
 
 buildPythonPackage rec {
@@ -72,7 +73,7 @@ buildPythonPackage rec {
   # ];
 
   meta = with lib; {
-    description = "The command line interface for Gradient";
+    description = "Command line interface for Gradient";
     mainProgram = "gradient";
     homepage = "https://github.com/Paperspace/gradient-cli";
     license = licenses.isc;
diff --git a/pkgs/development/python-modules/gradio-pdf/default.nix b/pkgs/development/python-modules/gradio-pdf/default.nix
index 4a5128455e6d5..abceb8b1c5c0b 100644
--- a/pkgs/development/python-modules/gradio-pdf/default.nix
+++ b/pkgs/development/python-modules/gradio-pdf/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatch-fancy-pypi-readme
-, hatch-requirements-txt
-, hatchling
-, gradio
-, gradio-client
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatch-fancy-pypi-readme,
+  hatch-requirements-txt,
+  hatchling,
+  gradio,
+  gradio-client,
 }:
 
 buildPythonPackage rec {
   pname = "gradio-pdf";
-  version = "0.0.7";
+  version = "0.0.15";
   format = "pyproject";
 
   src = fetchPypi {
     pname = "gradio_pdf";
     inherit version;
-    hash = "sha256-3OJiBnp79woCUtiNiaePwfJCAS42WYkv9GFeScesFv8=";
+    hash = "sha256-R+4CDJo84/+PUTTxoz9CsZlHUVsldgjufWsRkALrfN4=";
   };
 
   nativeBuildInputs = [
@@ -25,16 +26,10 @@ buildPythonPackage rec {
     hatchling
   ];
 
-  dependencies = [
-    gradio-client
-  ];
+  dependencies = [ gradio-client ];
 
-  buildInputs = [
-    gradio.sans-reverse-dependencies
-  ];
-  disallowedReferences = [
-    gradio.sans-reverse-dependencies
-  ];
+  buildInputs = [ gradio.sans-reverse-dependencies ];
+  disallowedReferences = [ gradio.sans-reverse-dependencies ];
 
   pythonImportsCheck = [ "gradio_pdf" ];
 
diff --git a/pkgs/development/python-modules/gradio/client.nix b/pkgs/development/python-modules/gradio/client.nix
index 96c293d399c55..d07f962b2668a 100644
--- a/pkgs/development/python-modules/gradio/client.nix
+++ b/pkgs/development/python-modules/gradio/client.nix
@@ -1,35 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, gitUpdater
-, pythonOlder
-, pythonRelaxDepsHook
-# pyproject
-, hatchling
-, hatch-requirements-txt
-, hatch-fancy-pypi-readme
-# runtime
-, setuptools
-, fsspec
-, httpx
-, huggingface-hub
-, packaging
-, requests
-, typing-extensions
-, websockets
-# checkInputs
-, pytestCheckHook
-, pytest-asyncio
-, pydub
-, rich
-, tomlkit
-, gradio
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  nix-update-script,
+  pythonOlder,
+  # pyproject
+  hatchling,
+  hatch-requirements-txt,
+  hatch-fancy-pypi-readme,
+  # runtime
+  setuptools,
+  fsspec,
+  httpx,
+  huggingface-hub,
+  packaging,
+  typing-extensions,
+  websockets,
+  # checkInputs
+  pytestCheckHook,
+  pytest-asyncio,
+  pydub,
+  rich,
+  tomlkit,
+  gradio,
 }:
 
 buildPythonPackage rec {
   pname = "gradio-client";
-  version = "0.14.0";
-  format = "pyproject";
+  version = "1.3.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -37,9 +37,10 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "gradio-app";
     repo = "gradio";
-    rev = "refs/tags/@gradio/client@${version}";
+    # not to be confused with @gradio/client@${version}
+    rev = "refs/tags/gradio_client@${version}";
     sparseCheckout = [ "client/python" ];
-    hash = "sha256-7oC/Z3YUiOFZdv/60q7PkfluV77broRkHgWiY9Vim9Y=";
+    hash = "sha256-UZQWguUN3l0cj2wb2f7A61RTLy9nPYcIEwHIo+F1kR0=";
   };
   prePatch = ''
     cd client/python
@@ -52,11 +53,10 @@ buildPythonPackage rec {
     "websockets"
   ];
 
-  nativeBuildInputs = [
+  build-system = [
     hatchling
     hatch-requirements-txt
     hatch-fancy-pypi-readme
-    pythonRelaxDepsHook
   ];
 
   dependencies = [
@@ -92,11 +92,21 @@ buildPythonPackage rec {
     #"-x" "-W" "ignore" # uncomment for debugging help
   ];
 
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
+    # flaky: OSError: Cannot find empty port in range: 7860-7959
+    "test_layout_components_in_output"
+    "test_layout_and_state_components_in_output"
+    "test_upstream_exceptions"
+    "test_httpx_kwargs"
+  ];
+
   pythonImportsCheck = [ "gradio_client" ];
 
   __darwinAllowLocalNetworking = true;
 
-  passthru.updateScript = gitUpdater { rev-prefix = "@gradio/client@"; };
+  passthru.updateScript = nix-update-script {
+    extraArgs = [ "--version-regex" "gradio_client@(.*)" ];
+  };
 
   meta = with lib; {
     homepage = "https://www.gradio.app/";
diff --git a/pkgs/development/python-modules/gradio/default.nix b/pkgs/development/python-modules/gradio/default.nix
index 6c735123aca18..68d0da3d5660d 100644
--- a/pkgs/development/python-modules/gradio/default.nix
+++ b/pkgs/development/python-modules/gradio/default.nix
@@ -1,77 +1,78 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pythonRelaxDepsHook
-, writeShellScriptBin
-, gradio
-
-# pyproject
-, hatchling
-, hatch-requirements-txt
-, hatch-fancy-pypi-readme
-
-# runtime
-, setuptools
-, aiofiles
-, altair
-, diffusers
-, fastapi
-, ffmpy
-, gradio-client
-, httpx
-, huggingface-hub
-, importlib-resources
-, jinja2
-, markupsafe
-, matplotlib
-, numpy
-, orjson
-, packaging
-, pandas
-, pillow
-, pydantic
-, python-multipart
-, pydub
-, pyyaml
-, semantic-version
-, typing-extensions
-, uvicorn
-, typer
-, tomlkit
-
-# oauth
-, authlib
-, itsdangerous
-
-# check
-, pytestCheckHook
-, boto3
-, gradio-pdf
-, ffmpeg
-, ipython
-, pytest-asyncio
-, respx
-, scikit-image
-, torch
-, tqdm
-, transformers
-, vega-datasets
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  writeShellScriptBin,
+  gradio,
+
+  # pyproject
+  hatchling,
+  hatch-requirements-txt,
+  hatch-fancy-pypi-readme,
+
+  # runtime
+  setuptools,
+  aiofiles,
+  anyio,
+  diffusers,
+  fastapi,
+  ffmpy,
+  gradio-client,
+  httpx,
+  huggingface-hub,
+  importlib-resources,
+  jinja2,
+  markupsafe,
+  matplotlib,
+  numpy,
+  orjson,
+  packaging,
+  pandas,
+  pillow,
+  pydantic,
+  python-multipart,
+  pydub,
+  pyyaml,
+  semantic-version,
+  typing-extensions,
+  uvicorn,
+  typer,
+  tomlkit,
+
+  # oauth
+  authlib,
+  itsdangerous,
+
+  # check
+  pytestCheckHook,
+  hypothesis,
+  altair,
+  boto3,
+  gradio-pdf,
+  ffmpeg,
+  ipython,
+  pytest-asyncio,
+  respx,
+  scikit-image,
+  torch,
+  tqdm,
+  transformers,
+  vega-datasets,
 }:
 
 buildPythonPackage rec {
   pname = "gradio";
-  version = "4.22.0";
+  version = "4.44.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
-  # We use the Pypi release, since it provides prebuilt webui assets,
-  # and upstream has stopped tagging releases since 3.41.0
+  # We use the Pypi release, since it provides prebuilt webui assets
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-nhrT509xB3+R+HF6TF5AQGnfufT6iNmzjxZgcVL7fBo=";
+    hash = "sha256-ovjRJ52giPZxVCOv8TuD3kcbgHbDTBqaSBNrrTN1MkE=";
   };
 
   # fix packaging.ParserSyntaxError, which can't handle comments
@@ -82,9 +83,7 @@ buildPythonPackage rec {
     rm -rf venv/
   '';
 
-  pythonRelaxDeps = [
-    "tomlkit"
-  ];
+  pythonRelaxDeps = [ "tomlkit" ];
 
   pythonRemoveDeps = [
     # our package is presented as a binary, not a python lib - and
@@ -93,7 +92,6 @@ buildPythonPackage rec {
   ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     hatchling
     hatch-requirements-txt
     hatch-fancy-pypi-readme
@@ -102,7 +100,7 @@ buildPythonPackage rec {
   dependencies = [
     setuptools # needed for 'pkg_resources'
     aiofiles
-    altair
+    anyio
     diffusers
     fastapi
     ffmpy
@@ -127,7 +125,7 @@ buildPythonPackage rec {
     uvicorn
     typer
     tomlkit
-  ] ++ typer.passthru.optional-dependencies.all;
+  ];
 
   passthru.optional-dependencies.oauth = [
     authlib
@@ -136,6 +134,8 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
+    hypothesis
+    altair
     boto3
     gradio-pdf
     ffmpeg
@@ -151,19 +151,19 @@ buildPythonPackage rec {
 
     # mock calls to `shutil.which(...)`
     (writeShellScriptBin "npm" "false")
-  ]
-  ++ passthru.optional-dependencies.oauth
-  ++ pydantic.passthru.optional-dependencies.email;
+  ] ++ passthru.optional-dependencies.oauth ++ pydantic.optional-dependencies.email;
 
   # Add a pytest hook skipping tests that access network, marking them as "Expected fail" (xfail).
   # We additionally xfail FileNotFoundError, since the gradio devs often fail to upload test assets to pypi.
-  preCheck = ''
-    export HOME=$TMPDIR
-    cat ${./conftest-skip-network-errors.py} >> test/conftest.py
-  '' + lib.optionalString stdenv.isDarwin ''
-    # OSError: [Errno 24] Too many open files
-    ulimit -n 4096
-  '';
+  preCheck =
+    ''
+      export HOME=$TMPDIR
+      cat ${./conftest-skip-network-errors.py} >> test/conftest.py
+    ''
+    + lib.optionalString stdenv.hostPlatform.isDarwin ''
+      # OSError: [Errno 24] Too many open files
+      ulimit -n 4096
+    '';
 
   disabledTests = [
     # Actually broken
@@ -187,17 +187,75 @@ buildPythonPackage rec {
     # fails without network
     "test_download_if_url_correct_parse"
 
+    # flaky: OSError: Cannot find empty port in range: 7860-7959
+    "test_docs_url"
+    "test_orjson_serialization"
+    "test_dataset_is_updated"
+    "test_multimodal_api"
+
     # tests if pip and other tools are installed
     "test_get_executable_path"
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
+    # flaky on darwin (depend on port availability)
+    "test_all_status_messages"
+    "test_async_generators"
+    "test_async_generators_interface"
+    "test_async_iterator_update_with_new_component"
+    "test_concurrency_limits"
+    "test_default_concurrency_limits"
+    "test_default_flagging_callback"
+    "test_end_to_end"
+    "test_end_to_end_cache_examples"
+    "test_event_data"
+    "test_every_does_not_block_queue"
+    "test_example_caching_relaunch"
+    "test_example_caching_relaunch"
+    "test_exit_called_at_launch"
+    "test_file_component_uploads"
+    "test_files_saved_as_file_paths"
+    "test_flagging_does_not_create_unnecessary_directories"
+    "test_flagging_no_permission_error_with_flagging_disabled"
+    "test_info_and_warning_alerts"
+    "test_info_isolation"
+    "test_launch_analytics_does_not_error_with_invalid_blocks"
+    "test_no_empty_audio_files"
+    "test_no_empty_image_files"
+    "test_no_empty_video_files"
+    "test_non_streaming_api"
+    "test_non_streaming_api_async"
+    "test_pil_images_hashed"
+    "test_progress_bar"
+    "test_progress_bar_track_tqdm"
+    "test_queue_when_using_auth"
+    "test_restart_after_close"
+    "test_set_share_in_colab"
+    "test_show_error"
+    "test_simple_csv_flagging_callback"
+    "test_single_request"
+    "test_socket_reuse"
+    "test_start_server"
+    "test_state_holder_is_used_in_postprocess"
+    "test_state_stored_up_to_capacity"
+    "test_static_files_single_app"
+    "test_streaming_api"
+    "test_streaming_api_async"
+    "test_streaming_api_with_additional_inputs"
+    "test_sync_generators"
+    "test_time_to_live_and_delete_callback_for_state"
+    "test_updates_stored_up_to_capacity"
+    "test_varying_output_forms_with_generators"
   ];
   disabledTestPaths = [
     # 100% touches network
     "test/test_networking.py"
     # makes pytest freeze 50% of the time
     "test/test_interfaces.py"
+
+    # Local network tests dependant on port availability (port 7860-7959)
+    "test/test_routes.py"
   ];
   pytestFlagsArray = [
-    "-x"  # abort on first failure
+    "-x" # abort on first failure
     "-m 'not flaky'"
     #"-W" "ignore" # uncomment for debugging help
   ];
@@ -212,17 +270,19 @@ buildPythonPackage rec {
 
   # Cyclic dependencies are fun!
   # This is gradio without gradio-client and gradio-pdf
-  passthru.sans-reverse-dependencies = (gradio.override (old: {
+  passthru.sans-reverse-dependencies =
+    (gradio.override (old: {
       gradio-client = null;
       gradio-pdf = null;
-    })).overridePythonAttrs (old: {
-      pname = old.pname + "-sans-reverse-dependencies";
-      pythonRemoveDeps = (old.pythonRemoveDeps or []) ++ [ "gradio-client" ];
-      doInstallCheck = false;
-      doCheck = false;
-      pythonImportsCheck = null;
-      dontCheckRuntimeDeps = true;
-    });
+    })).overridePythonAttrs
+      (old: {
+        pname = old.pname + "-sans-reverse-dependencies";
+        pythonRemoveDeps = (old.pythonRemoveDeps or [ ]) ++ [ "gradio-client" ];
+        doInstallCheck = false;
+        doCheck = false;
+        pythonImportsCheck = null;
+        dontCheckRuntimeDeps = true;
+      });
 
   meta = with lib; {
     homepage = "https://www.gradio.app/";
diff --git a/pkgs/development/python-modules/grafanalib/default.nix b/pkgs/development/python-modules/grafanalib/default.nix
index aba3fbe4ec951..4e03786a71479 100644
--- a/pkgs/development/python-modules/grafanalib/default.nix
+++ b/pkgs/development/python-modules/grafanalib/default.nix
@@ -1,11 +1,11 @@
-{ attrs
-, buildPythonPackage
-, fetchFromGitHub
-, fetchPypi
-, lib
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  attrs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-vXnyAfC9avKz8U4+MJVnu2zoPD0nR2qarWYidhEPW5s=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    attrs
-  ];
+  propagatedBuildInputs = [ attrs ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "grafanalib"
-  ];
+  pythonImportsCheck = [ "grafanalib" ];
 
   meta = with lib; {
     description = "Library for building Grafana dashboards";
diff --git a/pkgs/development/python-modules/grammalecte/default.nix b/pkgs/development/python-modules/grammalecte/default.nix
index 395f97a62d370..5167b6112731b 100644
--- a/pkgs/development/python-modules/grammalecte/default.nix
+++ b/pkgs/development/python-modules/grammalecte/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, bottle
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchurl,
+  bottle,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -28,7 +29,7 @@ buildPythonPackage rec {
   disabled = !isPy3k;
 
   meta = {
-    description = "An open source grammar and typographic corrector for the French language";
+    description = "Open source grammar and typographic corrector for the French language";
     homepage = "https://grammalecte.net";
     license = lib.licenses.gpl3Only;
     maintainers = with lib.maintainers; [ apeyroux ];
diff --git a/pkgs/development/python-modules/grandalf/default.nix b/pkgs/development/python-modules/grandalf/default.nix
index 1852364fbfe2e..c447d061e4a25 100644
--- a/pkgs/development/python-modules/grandalf/default.nix
+++ b/pkgs/development/python-modules/grandalf/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyparsing
-, future
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyparsing,
+  future,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,17 +27,11 @@ buildPythonPackage rec {
     future
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  patches = [
-    ./no-setup-requires-pytestrunner.patch
-  ];
+  patches = [ ./no-setup-requires-pytestrunner.patch ];
 
-  pythonImportsCheck = [
-    "grandalf"
-  ];
+  pythonImportsCheck = [ "grandalf" ];
 
   meta = with lib; {
     description = "Module for experimentations with graphs and drawing algorithms";
diff --git a/pkgs/development/python-modules/graph-tool/default.nix b/pkgs/development/python-modules/graph-tool/default.nix
index 61545e3a2ec93..4d639639e3fe9 100644
--- a/pkgs/development/python-modules/graph-tool/default.nix
+++ b/pkgs/development/python-modules/graph-tool/default.nix
@@ -1,53 +1,76 @@
-{ buildPythonPackage
-, lib
-, fetchurl
+{
+  buildPythonPackage,
+  lib,
+  fetchurl,
+  stdenv,
 
-, autoreconfHook
-, boost
-, cairomm
-, cgal
-, expat
-, gmp
-, gobject-introspection
-, gtk3
-, matplotlib
-, mpfr
-, numpy
-, pkg-config
-, pycairo
-, pygobject3
-, python
-, scipy
-, sparsehash
+  autoreconfHook,
+  boost185,
+  cairomm,
+  cgal,
+  expat,
+  gmp,
+  gobject-introspection,
+  gtk3,
+  llvmPackages,
+  matplotlib,
+  mpfr,
+  numpy,
+  pkg-config,
+  pycairo,
+  pygobject3,
+  python,
+  scipy,
+  sparsehash,
+  gitUpdater,
 }:
 
+let
+  # graph-tool doesn't build against boost181 on Darwin
+  boost = boost185.override {
+    enablePython = true;
+    inherit python;
+  };
+in
 buildPythonPackage rec {
   pname = "graph-tool";
+  version = "2.77";
   format = "other";
-  version = "2.45";
 
   src = fetchurl {
     url = "https://downloads.skewed.de/graph-tool/graph-tool-${version}.tar.bz2";
-    hash = "sha256-+S2nrM/aArKXke/k8LPtkzKfJyMq9NOvwHySQh7Ghmg=";
+    hash = "sha256-mu/6r1Uo836ZTxuIL3UdsKvuUz+H1FZY9Y3ZbEBK0LQ=";
   };
 
+  # Remove error messages about tput during build process without adding ncurses,
+  # and replace unavailable git commit hash and date.
+  postPatch = ''
+    substituteInPlace configure.ac \
+      --replace-fail 'tput setaf $1' : \
+      --replace-fail 'tput sgr0' : \
+      --replace-fail \
+        "\"esyscmd(git show | head -n 1 | sed 's/commit //' |  grep -o -e '.\{8\}' | head -n 1 |tr -d '\n')\"" \
+        '["(nixpkgs-${version})"]' \
+      --replace-fail \
+        "\"esyscmd(git log -1 | head -n 3 | grep 'Date:' | sed s/'Date:   '// | tr -d '\n')\"" \
+        '["(unavailable)"]'
+  '';
+
   configureFlags = [
     "--with-python-module-path=$(out)/${python.sitePackages}"
     "--with-boost-libdir=${boost}/lib"
-    "--with-expat=${expat}"
     "--with-cgal=${cgal}"
-    "--enable-openmp"
   ];
 
   enableParallelBuilding = true;
 
-  nativeBuildInputs = [
+  build-system = [
     autoreconfHook
     pkg-config
   ];
 
-  # https://git.skewed.de/count0/graph-tool/-/wikis/installation-instructions#manual-compilation
-  propagatedBuildInputs = [
+  # https://graph-tool.skewed.de/installation.html#manual-compilation
+  dependencies = [
     boost
     cairomm
     cgal
@@ -62,12 +85,20 @@ buildPythonPackage rec {
     pygobject3
     scipy
     sparsehash
-  ];
+  ] ++ lib.optionals stdenv.cc.isClang [ llvmPackages.openmp ];
+
+  pythonImportsCheck = [ "graph_tool" ];
+
+  passthru.updateScript = gitUpdater {
+    url = "https://git.skewed.de/count0/graph-tool";
+    rev-prefix = "release-";
+  };
 
-  meta = with lib; {
+  meta = {
     description = "Python module for manipulation and statistical analysis of graphs";
     homepage = "https://graph-tool.skewed.de";
-    license = licenses.lgpl3Plus;
-    maintainers = with maintainers; [ ];
+    changelog = "https://git.skewed.de/count0/graph-tool/commits/release-${version}";
+    license = lib.licenses.lgpl3Plus;
+    maintainers = [ lib.maintainers.mjoerg ];
   };
 }
diff --git a/pkgs/development/python-modules/grapheme/default.nix b/pkgs/development/python-modules/grapheme/default.nix
index 965b1a1d21975..d16224cca557f 100644
--- a/pkgs/development/python-modules/grapheme/default.nix
+++ b/pkgs/development/python-modules/grapheme/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
   # https://github.com/alvinlindstam/grapheme/issues/18
   doCheck = false;
 
-  pythonImportsCheck = [
-    "grapheme"
-  ];
+  pythonImportsCheck = [ "grapheme" ];
 
   meta = with lib; {
     description = "Python package for grapheme aware string handling";
diff --git a/pkgs/development/python-modules/graphene-django/default.nix b/pkgs/development/python-modules/graphene-django/default.nix
index a7248d1b80650..2ebc4dbfe9a2d 100644
--- a/pkgs/development/python-modules/graphene-django/default.nix
+++ b/pkgs/development/python-modules/graphene-django/default.nix
@@ -1,27 +1,28 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
 
-, graphene
-, graphql-core
-, django
-, djangorestframework
-, promise
-, text-unidecode
+  graphene,
+  graphql-core,
+  django,
+  djangorestframework,
+  promise,
+  text-unidecode,
 
-, django-filter
-, mock
-, py
-, pytest-django
-, pytest-random-order
-, pytest7CheckHook
+  django-filter,
+  mock,
+  py,
+  pytest-django,
+  pytest-random-order,
+  pytest7CheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "graphene-django";
-  version = "3.2.1";
+  version = "3.2.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -30,7 +31,7 @@ buildPythonPackage rec {
     owner = "graphql-python";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-wzU9U4mYvBf43qBQi20ewKtmw1eFskQk+nnsdaM7HQM=";
+    hash = "sha256-12ue7Pq7TFMSBAfaj8Si6KrpuKYp5T2EEesJpc8wRho=";
   };
 
   postPatch = ''
@@ -60,16 +61,18 @@ buildPythonPackage rec {
     pytest7CheckHook
   ];
 
-  disabledTests = [
-    # https://github.com/graphql-python/graphene-django/issues/1510
-    "test_should_filepath_convert_string"
-    "test_should_choice_convert_enum"
-    "test_should_multiplechoicefield_convert_to_list_of_enum"
-    "test_perform_mutate_success_with_enum_choice_field"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # this test touches files in the "/" directory and fails in darwin sandbox
-    "test_should_filepath_convert_string"
-  ];
+  disabledTests =
+    [
+      # https://github.com/graphql-python/graphene-django/issues/1510
+      "test_should_filepath_convert_string"
+      "test_should_choice_convert_enum"
+      "test_should_multiplechoicefield_convert_to_list_of_enum"
+      "test_perform_mutate_success_with_enum_choice_field"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # this test touches files in the "/" directory and fails in darwin sandbox
+      "test_should_filepath_convert_string"
+    ];
 
   meta = with lib; {
     description = "Integrate GraphQL into your Django project";
diff --git a/pkgs/development/python-modules/graphene/default.nix b/pkgs/development/python-modules/graphene/default.nix
index e6de2b449cf42..db44239de0b57 100644
--- a/pkgs/development/python-modules/graphene/default.nix
+++ b/pkgs/development/python-modules/graphene/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, aniso8601
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, graphql-core
-, graphql-relay
-, pytest-asyncio
-, pytest-benchmark
-, pytest-mock
-, pytest7CheckHook
-, pythonOlder
-, pytz
-, snapshottest
+{
+  lib,
+  aniso8601,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  graphql-core,
+  graphql-relay,
+  pytest-asyncio,
+  pytest-benchmark,
+  pytest-mock,
+  pytest7CheckHook,
+  pythonOlder,
+  pytz,
+  snapshottest,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     hash = "sha256-DGxicCXZp9kW/OFkr0lAWaQ+GaECx+HD8+X4aW63vgQ=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     aniso8601
@@ -38,6 +37,9 @@ buildPythonPackage rec {
     graphql-relay
   ];
 
+  # snaphottest->fastdiff->wasmer dependency chain does not support 3.12.
+  doCheck = pythonOlder "3.12";
+
   nativeCheckInputs = [
     pytest7CheckHook
     pytest-asyncio
@@ -47,19 +49,15 @@ buildPythonPackage rec {
     snapshottest
   ];
 
-  pytestFlagsArray = [
-    "--benchmark-disable"
-  ];
+  pytestFlagsArray = [ "--benchmark-disable" ];
 
-  pythonImportsCheck = [
-    "graphene"
-  ];
+  pythonImportsCheck = [ "graphene" ];
 
   meta = with lib; {
     description = "GraphQL Framework for Python";
     homepage = "https://github.com/graphql-python/graphene";
     changelog = "https://github.com/graphql-python/graphene/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/graphite-web/default.nix b/pkgs/development/python-modules/graphite-web/default.nix
index d80ed27297ccf..cda30828836dd 100644
--- a/pkgs/development/python-modules/graphite-web/default.nix
+++ b/pkgs/development/python-modules/graphite-web/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, python
-, cairocffi
-, django
-, django-tagging
-, fetchFromGitHub
-, fetchpatch
-, gunicorn
-, mock
-, pyparsing
-, python-memcached
-, pythonOlder
-, pytz
-, six
-, txamqp
-, urllib3
-, whisper
+{
+  lib,
+  buildPythonPackage,
+  python,
+  cairocffi,
+  django,
+  django-tagging,
+  fetchFromGitHub,
+  fetchpatch,
+  gunicorn,
+  mock,
+  pyparsing,
+  python-memcached,
+  pythonOlder,
+  pytz,
+  six,
+  txamqp,
+  urllib3,
+  whisper,
+  nixosTests,
 }:
 
 buildPythonPackage rec {
@@ -92,14 +93,19 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "graphite"
-  ];
+  pythonImportsCheck = [ "graphite" ];
+
+  passthru.tests = {
+    inherit (nixosTests) graphite;
+  };
 
   meta = with lib; {
     description = "Enterprise scalable realtime graphing";
     homepage = "http://graphiteapp.org/";
     license = licenses.asl20;
-    maintainers = with maintainers; [ offline basvandijk ];
+    maintainers = with maintainers; [
+      offline
+      basvandijk
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/graphlib-backport/default.nix b/pkgs/development/python-modules/graphlib-backport/default.nix
index 54d166a88ba2a..7f91976b4c21d 100644
--- a/pkgs/development/python-modules/graphlib-backport/default.nix
+++ b/pkgs/development/python-modules/graphlib-backport/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, setuptools
-, poetry-core
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/graphql-core/default.nix b/pkgs/development/python-modules/graphql-core/default.nix
index 0d866a29bd287..7986f0cd32464 100644
--- a/pkgs/development/python-modules/graphql-core/default.nix
+++ b/pkgs/development/python-modules/graphql-core/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, py
-, pytest-benchmark
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  py,
+  pytest-benchmark,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "graphql"
-  ];
+  pythonImportsCheck = [ "graphql" ];
 
   meta = with lib; {
     description = "Port of graphql-js to Python";
diff --git a/pkgs/development/python-modules/graphql-relay/default.nix b/pkgs/development/python-modules/graphql-relay/default.nix
index ac91b749070de..a358ab4fe9141 100644
--- a/pkgs/development/python-modules/graphql-relay/default.nix
+++ b/pkgs/development/python-modules/graphql-relay/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-, pythonOlder
+  pythonOlder,
 
-# build
-, poetry-core
+  # build
+  poetry-core,
 
-# runtime
-, graphql-core
-, typing-extensions
+  # runtime
+  graphql-core,
+  typing-extensions,
 
-# tests
-, pytest-asyncio
-, pytest-describe
-, pytestCheckHook
+  # tests
+  pytest-asyncio,
+  pytest-describe,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -37,15 +38,9 @@ buildPythonPackage rec {
       --replace ', "setuptools>=59,<70"' ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    graphql-core
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ graphql-core ] ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -56,9 +51,9 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "graphql_relay" ];
 
   meta = with lib; {
-    description = "A library to help construct a graphql-py server supporting react-relay";
+    description = "Library to help construct a graphql-py server supporting react-relay";
     homepage = "https://github.com/graphql-python/graphql-relay-py/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/graphql-server-core/default.nix b/pkgs/development/python-modules/graphql-server-core/default.nix
index a098f9c85e704..7d19247c2a34b 100644
--- a/pkgs/development/python-modules/graphql-server-core/default.nix
+++ b/pkgs/development/python-modules/graphql-server-core/default.nix
@@ -1,11 +1,12 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, graphql-core
-, promise
-, fetchpatch
-, pythonOlder
-, pytestCheckHook
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  graphql-core,
+  promise,
+  fetchpatch,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
   # fail with: cannot import name 'format_error' from 'graphql'
   doCheck = false;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Core package for using GraphQL in a custom server easily";
diff --git a/pkgs/development/python-modules/graphql-subscription-manager/default.nix b/pkgs/development/python-modules/graphql-subscription-manager/default.nix
index feaf6432fedd0..a0307dfa8032b 100644
--- a/pkgs/development/python-modules/graphql-subscription-manager/default.nix
+++ b/pkgs/development/python-modules/graphql-subscription-manager/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, websockets
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  websockets,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # no tests implemented
   doCheck = false;
 
-  pythonImportsCheck = [
-    "graphql_subscription_manager"
-  ];
+  pythonImportsCheck = [ "graphql_subscription_manager" ];
 
   meta = with lib; {
     description = "Python3 library for graphql subscription manager";
diff --git a/pkgs/development/python-modules/graphqlclient/default.nix b/pkgs/development/python-modules/graphqlclient/default.nix
index 81bdddf00ee41..34d7889513dbc 100644
--- a/pkgs/development/python-modules/graphqlclient/default.nix
+++ b/pkgs/development/python-modules/graphqlclient/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     sha256 = "0b6r3ng78qsn7c9zksx4rgdkmp5296d40kbmjn8q614cz0ymyc5k";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/graphrag/default.nix b/pkgs/development/python-modules/graphrag/default.nix
new file mode 100644
index 0000000000000..0bc8f6f59dc0f
--- /dev/null
+++ b/pkgs/development/python-modules/graphrag/default.nix
@@ -0,0 +1,117 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  poetry-dynamic-versioning,
+  aiofiles,
+  aiolimiter,
+  azure-identity,
+  azure-search-documents,
+  azure-storage-blob,
+  datashaper,
+  devtools,
+  environs,
+  graspologic,
+  json-repair,
+  lancedb,
+  matplotlib,
+  networkx,
+  nltk,
+  numpy,
+  openai,
+  pandas,
+  pyaml-env,
+  pyarrow,
+  pydantic,
+  python-dotenv,
+  pyyaml,
+  rich,
+  tenacity,
+  tiktoken,
+  typing-extensions,
+  umap-learn,
+  nbformat,
+  pytest-asyncio,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "graphrag";
+  version = "0.3.6";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "microsoft";
+    repo = "graphrag";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-H5ITK4m3l+rlIEYXoMIpsE9faCu6rRZuB5zaZQeArOU=";
+  };
+
+  build-system = [
+    poetry-core
+    poetry-dynamic-versioning
+  ];
+
+  pythonRelaxDeps = true;
+
+  dependencies = [
+    aiofiles
+    aiolimiter
+    azure-identity
+    azure-search-documents
+    azure-storage-blob
+    datashaper
+    devtools
+    environs
+    graspologic
+    json-repair
+    lancedb
+    matplotlib
+    networkx
+    nltk
+    numpy
+    openai
+    pandas
+    pyaml-env
+    pyarrow
+    pydantic
+    python-dotenv
+    pyyaml
+    rich
+    tenacity
+    tiktoken
+    typing-extensions
+    umap-learn
+  ];
+
+  env.NUMBA_CACHE_DIR = "$TMPDIR";
+
+  pythonImportsCheck = [ "graphrag" ];
+
+  nativeCheckInputs = [
+    nbformat
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [ "tests/unit" ];
+
+  disabledTests = [
+    # touch the network
+    "test_child"
+    "test_dotprefix"
+    "test_find"
+    "test_run_extract_entities_multiple_documents"
+    "test_run_extract_entities_single_document"
+    "test_sort_context_max_tokens"
+  ];
+
+  meta = {
+    description = "Modular graph-based Retrieval-Augmented Generation (RAG) system";
+    homepage = "https://github.com/microsoft/graphrag";
+    changelog = "https://github.com/microsoft/graphrag/blob/v${version}/CHANGELOG.md";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
+  };
+}
diff --git a/pkgs/development/python-modules/graphtage/default.nix b/pkgs/development/python-modules/graphtage/default.nix
index 815e6775c177a..5b3f70dcc1f3e 100644
--- a/pkgs/development/python-modules/graphtage/default.nix
+++ b/pkgs/development/python-modules/graphtage/default.nix
@@ -1,38 +1,45 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, colorama
-, intervaltree
-, json5
-, pyyaml
-, scipy
-, tqdm
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  colorama,
+  distutils,
+  fetchFromGitHub,
+  fickling,
+  intervaltree,
+  json5,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  scipy,
+  setuptools,
+  tqdm,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "graphtage";
   version = "0.3.1";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "trailofbits";
-    repo = pname;
+    repo = "graphtage";
     rev = "refs/tags/v${version}";
     hash = "sha256-Bz2T8tVdVOdXt23yPITkDNL46Y5LZPhY3SXZ5bF3CHw=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "json5==0.9.5" "json5>=0.9.5"
-  '';
+  pythonRelaxDeps = [ "json5" ];
 
-  propagatedBuildInputs = [
+  build-system = [
+    distutils
+    setuptools
+  ];
+
+  dependencies = [
     colorama
+    fickling
     intervaltree
     json5
     pyyaml
@@ -41,20 +48,16 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "graphtage"
-  ];
+  pythonImportsCheck = [ "graphtage" ];
 
   meta = with lib; {
-    description = "A utility to diff tree-like files such as JSON and XML";
-    mainProgram = "graphtage";
+    description = "Utility to diff tree-like files such as JSON and XML";
     homepage = "https://github.com/trailofbits/graphtage";
     changelog = "https://github.com/trailofbits/graphtage/releases/tag/v${version}";
     license = licenses.lgpl3Plus;
     maintainers = with maintainers; [ veehaitch ];
+    mainProgram = "graphtage";
   };
 }
diff --git a/pkgs/development/python-modules/graphviz/default.nix b/pkgs/development/python-modules/graphviz/default.nix
index 9d783b7bde227..7ce60f9f06ff8 100644
--- a/pkgs/development/python-modules/graphviz/default.nix
+++ b/pkgs/development/python-modules/graphviz/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, substituteAll
-, graphviz-nox
-, xdg-utils
-, makeFontsConf
-, freefont_ttf
-, setuptools
-, mock
-, pytest_7
-, pytest-mock
-, python
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  substituteAll,
+  graphviz-nox,
+  xdg-utils,
+  makeFontsConf,
+  freefont_ttf,
+  setuptools,
+  mock,
+  pytest_7,
+  pytest-mock,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -43,13 +44,9 @@ buildPythonPackage rec {
   '';
 
   # Fontconfig error: Cannot load default config file
-  FONTCONFIG_FILE = makeFontsConf {
-    fontDirectories = [ freefont_ttf ];
-  };
+  FONTCONFIG_FILE = makeFontsConf { fontDirectories = [ freefont_ttf ]; };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     mock
@@ -66,7 +63,7 @@ buildPythonPackage rec {
   '';
 
   # Too many failures due to attempting to connect to com.apple.fonts daemon
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   meta = with lib; {
     description = "Simple Python interface for Graphviz";
diff --git a/pkgs/development/python-modules/grappelli-safe/default.nix b/pkgs/development/python-modules/grappelli-safe/default.nix
index 916ac606473b7..8c7207f8a6b0f 100644
--- a/pkgs/development/python-modules/grappelli-safe/default.nix
+++ b/pkgs/development/python-modules/grappelli-safe/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,19 +19,15 @@ buildPythonPackage rec {
     hash = "sha256-7jSz4qNxFJix+No9naqKEjnv3yVaISGBdCtqWJD6wDk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # upstream has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "grappelli_safe"
-  ];
+  pythonImportsCheck = [ "grappelli_safe" ];
 
   meta = with lib; {
-    description = "A snapshot of django-grappelli for the Mezzanine CMS";
+    description = "Snapshot of django-grappelli for the Mezzanine CMS";
     longDescription = ''
       grappelli_safe was created to provide a snapshot of the
       Grappelli admin skin for Django, to be referenced as a
diff --git a/pkgs/development/python-modules/graspologic-native/Cargo.lock b/pkgs/development/python-modules/graspologic-native/Cargo.lock
new file mode 100644
index 0000000000000..e2133ee8c5d53
--- /dev/null
+++ b/pkgs/development/python-modules/graspologic-native/Cargo.lock
@@ -0,0 +1,652 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "ansi_term"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "atty"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bumpalo"
+version = "3.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
+
+[[package]]
+name = "cc"
+version = "1.0.104"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74b6a57f98764a267ff415d50a25e6e166f3831a5071af4995296ea97d210490"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "chrono"
+version = "0.4.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
+dependencies = [
+ "android-tzdata",
+ "iana-time-zone",
+ "js-sys",
+ "num-traits",
+ "wasm-bindgen",
+ "windows-targets",
+]
+
+[[package]]
+name = "clap"
+version = "2.34.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
+dependencies = [
+ "ansi_term",
+ "atty",
+ "bitflags",
+ "strsim",
+ "textwrap",
+ "unicode-width",
+ "vec_map",
+]
+
+[[package]]
+name = "cli"
+version = "0.1.0"
+dependencies = [
+ "clap",
+ "network_partitions",
+ "rand",
+ "rand_xorshift",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+
+[[package]]
+name = "getrandom"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi",
+]
+
+[[package]]
+name = "graspologic_native"
+version = "1.2.1"
+dependencies = [
+ "chrono",
+ "network_partitions",
+ "pyo3",
+ "rand",
+ "rand_xorshift",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "windows-core",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "indoc"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47741a8bc60fb26eb8d6e0238bbb26d8575ff623fdc97b1a2c00c050b9684ed8"
+dependencies = [
+ "indoc-impl",
+ "proc-macro-hack",
+]
+
+[[package]]
+name = "indoc-impl"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce046d161f000fffde5f432a0d034d0341dc152643b2598ed5bfce44c4f3a8f0"
+dependencies = [
+ "proc-macro-hack",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "unindent",
+]
+
+[[package]]
+name = "instant"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "js-sys"
+version = "0.3.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.155"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
+
+[[package]]
+name = "lock_api"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
+
+[[package]]
+name = "network_partitions"
+version = "0.1.0"
+dependencies = [
+ "chrono",
+ "rand",
+ "rand_xorshift",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+
+[[package]]
+name = "parking_lot"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
+dependencies = [
+ "instant",
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc"
+dependencies = [
+ "cfg-if",
+ "instant",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "winapi",
+]
+
+[[package]]
+name = "paste"
+version = "0.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880"
+dependencies = [
+ "paste-impl",
+ "proc-macro-hack",
+]
+
+[[package]]
+name = "paste-impl"
+version = "0.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6"
+dependencies = [
+ "proc-macro-hack",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+
+[[package]]
+name = "proc-macro-hack"
+version = "0.5.20+deprecated"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.86"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "pyo3"
+version = "0.15.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d41d50a7271e08c7c8a54cd24af5d62f73ee3a6f6a314215281ebdec421d5752"
+dependencies = [
+ "cfg-if",
+ "indoc",
+ "libc",
+ "parking_lot",
+ "paste",
+ "pyo3-build-config",
+ "pyo3-macros",
+ "unindent",
+]
+
+[[package]]
+name = "pyo3-build-config"
+version = "0.15.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "779239fc40b8e18bc8416d3a37d280ca9b9fb04bda54b98037bb6748595c2410"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "pyo3-macros"
+version = "0.15.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00b247e8c664be87998d8628e86f282c25066165f1f8dda66100c48202fdb93a"
+dependencies = [
+ "pyo3-macros-backend",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "pyo3-macros-backend"
+version = "0.15.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a8c2812c412e00e641d99eeb79dd478317d981d938aa60325dfa7157b607095"
+dependencies = [
+ "proc-macro2",
+ "pyo3-build-config",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "rand_xorshift"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f"
+dependencies = [
+ "rand_core",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "smallvec"
+version = "1.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+
+[[package]]
+name = "strsim"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "201fcda3845c23e8212cd466bfebf0bd20694490fc0356ae8e428e0824a915a6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "textwrap"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
+dependencies = [
+ "unicode-width",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
+
+[[package]]
+name = "unindent"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1766d682d402817b5ac4490b3c3002d91dfa0d22812f341609f97b08757359c"
+
+[[package]]
+name = "vec_map"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.69",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.69",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-core"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
diff --git a/pkgs/development/python-modules/graspologic-native/default.nix b/pkgs/development/python-modules/graspologic-native/default.nix
new file mode 100644
index 0000000000000..3f014562f40ab
--- /dev/null
+++ b/pkgs/development/python-modules/graspologic-native/default.nix
@@ -0,0 +1,50 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  rustPlatform,
+  libiconv,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "graspologic-native";
+  version = "1.2.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "graspologic-org";
+    repo = "graspologic-native";
+    rev = "refs/tags/${version}";
+    hash = "sha256-fgiBUzYBerYX59uj+I0Yret94vA+FpQK+MckskCBqj4=";
+  };
+
+  cargoDeps = rustPlatform.importCargoLock { lockFile = ./Cargo.lock; };
+
+  postPatch = ''
+    ln -s ${./Cargo.lock} Cargo.lock
+  '';
+
+  buildAndTestSubdir = "packages/pyo3";
+
+  nativeBuildInputs = [ rustPlatform.cargoSetupHook ];
+
+  buildInputs = [ libiconv ];
+
+  build-system = [ rustPlatform.maturinBuildHook ];
+
+  pythonImportsCheck = [ "graspologic_native" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  preCheck = ''
+    cd packages/pyo3
+  '';
+
+  meta = with lib; {
+    description = "Library of rust components to add additional capability to graspologic a python library for intelligently building networks and network embeddings, and for analyzing connected data";
+    homepage = "https://github.com/graspologic-org/graspologic-native";
+    license = licenses.mit;
+    maintainers = with maintainers; [ natsukium ];
+  };
+}
diff --git a/pkgs/development/python-modules/graspologic/default.nix b/pkgs/development/python-modules/graspologic/default.nix
index 745cf90b4b9e6..c6a72fc6ee345 100644
--- a/pkgs/development/python-modules/graspologic/default.nix
+++ b/pkgs/development/python-modules/graspologic/default.nix
@@ -1,57 +1,91 @@
-{ lib
-, buildPythonPackage
-, isPy27
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
-, pytest-cov
-, hyppo
-, matplotlib
-, networkx
-, numpy
-, scikit-learn
-, scipy
-, seaborn
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  poetry-dynamic-versioning,
+  pytestCheckHook,
+  testfixtures,
+  anytree,
+  beartype,
+  gensim,
+  graspologic-native,
+  hyppo,
+  joblib,
+  matplotlib,
+  networkx,
+  numpy,
+  pot,
+  scikit-learn,
+  scipy,
+  seaborn,
+  statsmodels,
+  typing-extensions,
+  umap-learn,
 }:
 
 buildPythonPackage rec {
   pname = "graspologic";
-  version = "3.3.0";
+  version = "3.4.1";
   pyproject = true;
 
-  disabled = isPy27;
-
   src = fetchFromGitHub {
-    owner = "microsoft";
+    owner = "graspologic-org";
     repo = "graspologic";
     rev = "refs/tags/v${version}";
-    hash = "sha256-hd3OyV95N8vhc4s50HbKkrcUOeSegn66Dkw7dixim00=";
+    hash = "sha256-taX/4/uCQXW7yFykVHY78hJIGThEIycHwrEOZ3h1LPY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
+  build-system = [
+    poetry-core
+    poetry-dynamic-versioning
   ];
 
-  propagatedBuildInputs = [
+  pythonRelaxDeps = [ "scipy" ];
+
+  dependencies = [
+    anytree
+    beartype
+    gensim
+    graspologic-native
     hyppo
+    joblib
     matplotlib
     networkx
     numpy
+    pot
     scikit-learn
     scipy
     seaborn
+    statsmodels
+    typing-extensions
+    umap-learn
   ];
 
-  nativeCheckInputs = [ pytestCheckHook pytest-cov ];
-  pytestFlagsArray = [ "tests" "--ignore=docs" "--ignore=tests/test_sklearn.py" ];
+  env.NUMBA_CACHE_DIR = "$TMPDIR";
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    testfixtures
+  ];
+  pytestFlagsArray = [
+    "tests"
+    "--ignore=docs"
+    "--ignore=tests/test_sklearn.py"
+  ];
   disabledTests = [ "gridplot_outputs" ];
 
+  disabledTestPaths = lib.optionals stdenv.hostPlatform.isDarwin [
+    # SIGABRT
+    "tests/test_plot.py"
+    "tests/test_plot_matrix.py"
+  ];
+
   meta = with lib; {
-    homepage = "https://graspologic.readthedocs.io";
-    description = "A package for graph statistical algorithms";
-    license = licenses.asl20;  # changing to `licenses.mit` in next release
+    homepage = "https://graspologic-org.github.io/graspologic";
+    description = "Package for graph statistical algorithms";
+    license = licenses.mit;
     maintainers = with maintainers; [ bcdarwin ];
-    # graspologic-native is not available
-    broken = true;
   };
 }
diff --git a/pkgs/development/python-modules/great-tables/default.nix b/pkgs/development/python-modules/great-tables/default.nix
new file mode 100644
index 0000000000000..bca215084c168
--- /dev/null
+++ b/pkgs/development/python-modules/great-tables/default.nix
@@ -0,0 +1,89 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+
+  # dependencies
+  babel,
+  commonmark,
+  htmltools,
+  importlib-metadata,
+  importlib-resources,
+  numpy,
+  typing-extensions,
+
+  # tests
+  ipykernel,
+  ipython,
+  pandas,
+  polars,
+  pyarrow,
+  pytestCheckHook,
+  pytest-cov-stub,
+  requests,
+  shiny,
+  syrupy,
+}:
+
+buildPythonPackage rec {
+  pname = "great-tables";
+  version = "0.11.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "posit-dev";
+    repo = "great-tables";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-IlukgnhOT8NF1WxRJCnNuNEI31DByWoNzbk/x458atA=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    babel
+    commonmark
+    htmltools
+    importlib-metadata
+    importlib-resources
+    numpy
+    typing-extensions
+  ];
+
+  pythonImportsCheck = [ "great_tables" ];
+
+  nativeCheckInputs = [
+    ipykernel
+    ipython
+    pandas
+    polars
+    pyarrow
+    pytestCheckHook
+    pytest-cov-stub
+    requests
+    shiny
+    syrupy
+  ];
+
+  disabledTests = [
+    # require selenium with chrome driver:
+    "test_save_image_file"
+    "test_save_non_png"
+  ];
+
+  __darwinAllowLocalNetworking = true;
+
+  meta = {
+    description = "Library for rendering and formatting dataframes";
+    homepage = "https://github.com/posit-dev/great-tables";
+    changelog = "https://github.com/posit-dev/great-tables/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ bcdarwin ];
+  };
+}
diff --git a/pkgs/development/python-modules/greatfet/default.nix b/pkgs/development/python-modules/greatfet/default.nix
index 7f7c53f70ea35..2ed9792df3b23 100644
--- a/pkgs/development/python-modules/greatfet/default.nix
+++ b/pkgs/development/python-modules/greatfet/default.nix
@@ -1,32 +1,69 @@
-{ lib, fetchFromGitHub, buildPythonPackage, isPy3k, future, pyusb, ipython, pygreat }:
+{
+  buildPythonPackage,
+  cmsis-svd,
+  fetchFromGitHub,
+  future,
+  ipython,
+  lib,
+  prompt-toolkit,
+  pyfwup,
+  pygreat,
+  pythonOlder,
+  pyusb,
+  setuptools,
+  tabulate,
+  tqdm,
+}:
 
 buildPythonPackage rec {
   pname = "greatfet";
-  version = "2019.5.1.dev0";
+  version = "2024.0.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "greatscottgadgets";
     repo = "greatfet";
-    rev = "v${version}";
-    sha256 = "054vkx4xkbhxhh5grjbs9kw3pjkv1zapp91ysrqr0c8mg1pc7zxv";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-1GfyhxwA6Nhf/umvllR/hkh5hyn42141QOT7+6IGAis=";
   };
 
-  disabled = !isPy3k;
+  sourceRoot = "${src.name}/host";
 
-  propagatedBuildInputs = [ future pyusb ipython pygreat ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail ', "setuptools-git-versioning<2"' "" \
+      --replace-fail 'dynamic = ["version"]' 'version = "${version}"'
+  '';
 
-  doCheck = false;
+  build-system = [ setuptools ];
 
-  preBuild = ''
-    cd host
-    echo "$version" > ../VERSION
-  '';
+  dependencies = [
+    cmsis-svd
+    future
+    ipython
+    prompt-toolkit
+    pyfwup
+    pygreat
+    pyusb
+    tabulate
+    tqdm
+  ];
+
+  # Tests seem to require devices (or simulators) which are
+  # not available in the build sandbox.
+  doCheck = false;
 
   meta = {
     description = "Hardware hacking with the greatfet";
     homepage = "https://greatscottgadgets.com/greatfet";
     license = lib.licenses.bsd3;
     platforms = lib.platforms.all;
-    maintainers = with lib.maintainers; [ mog ];
+    mainProgram = "gf";
+    maintainers = with lib.maintainers; [
+      mog
+      msanft
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/greeclimate/default.nix b/pkgs/development/python-modules/greeclimate/default.nix
index 30a724c07c44f..50aa51e82e927 100644
--- a/pkgs/development/python-modules/greeclimate/default.nix
+++ b/pkgs/development/python-modules/greeclimate/default.nix
@@ -1,29 +1,33 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, netifaces
-, pycryptodome
-, pytest-asyncio
-, pytestCheckHook
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  netifaces,
+  pycryptodome,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "greeclimate";
-  version = "1.4.1";
-  format = "setuptools";
+  version = "2.1.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "cmroche";
     repo = "greeclimate";
     rev = "refs/tags/v${version}";
-    hash = "sha256-M4oxFi/PpqhJgZX/wM+9rSrraIZcqzubbxnihfK0W2E=";
+    hash = "sha256-SO7/uheAPVFZ1C2qrzP7jB88u6EH79f1+qMZIgHZaCE=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     netifaces
     pycryptodome
   ];
@@ -33,6 +37,23 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  disabledTests = [
+    # OSError: [Errno 101] Network is unreachable
+    "test_get_device_info"
+    "test_device_bind"
+    "test_device_late_bind"
+    "test_update_properties"
+    "test_set_properties"
+    "test_uninitialized_properties"
+    "test_update_current_temp"
+    "test_send_temperature"
+    "test_enable_disable_sleep_mode"
+    "test_mismatch_temrec_farenheit"
+    "test_device_equality"
+    "test_issue_69_TemSen_40_should_not_set_firmware_v4"
+    "test_issue_87_quiet_should_set_2"
+  ];
+
   pythonImportsCheck = [
     "greeclimate"
     "greeclimate.device"
@@ -42,7 +63,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     description = "Discover, connect and control Gree based minisplit systems";
     homepage = "https://github.com/cmroche/greeclimate";
     changelog = "https://github.com/cmroche/greeclimate/blob/${src.rev}/CHANGELOG.md";
diff --git a/pkgs/development/python-modules/greek-accentuation/default.nix b/pkgs/development/python-modules/greek-accentuation/default.nix
new file mode 100644
index 0000000000000..a40448f569a9b
--- /dev/null
+++ b/pkgs/development/python-modules/greek-accentuation/default.nix
@@ -0,0 +1,19 @@
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+}:
+buildPythonPackage rec {
+  pname = "greek-accentuation";
+  version = "1.2.0";
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-l2HZXdqlLubvy2bWhhZVYGMpF0DXVKTDFehkcGF5xdk=";
+  };
+  meta = with lib; {
+    description = "Python 3 library for accenting (and analyzing the accentuation of) Ancient Greek words";
+    homepage = "https://github.com/jtauber/greek-accentuation";
+    license = licenses.mit;
+    maintainers = with maintainers; [ kmein ];
+  };
+}
diff --git a/pkgs/development/python-modules/green/default.nix b/pkgs/development/python-modules/green/default.nix
index eef23f6ce0dff..6e0e4af49b7ea 100644
--- a/pkgs/development/python-modules/green/default.nix
+++ b/pkgs/development/python-modules/green/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, django
-, colorama
-, coverage
-, unidecode
-, lxml
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  colorama,
+  coverage,
+  unidecode,
+  lxml,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-pAZ8P5/CpkTtNfU2ZJUGQzROxGLm0uu1vXS3YpcVprE=";
   };
 
-  patches = [
-    ./tests.patch
-  ];
+  patches = [ ./tests.patch ];
 
   postPatch = ''
     substituteInPlace green/test/test_integration.py \
@@ -42,17 +40,14 @@ buildPythonPackage rec {
     $out/bin/green -tvvv \
       green.test.test_version \
       green.test.test_cmdline \
-      green.test.test_command
   '';
 
-  pythonImportsCheck = [
-    "green"
-  ];
+  pythonImportsCheck = [ "green" ];
 
   meta = with lib; {
     description = "Python test runner";
     homepage = "https://github.com/CleanCut/green";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/greeneye-monitor/default.nix b/pkgs/development/python-modules/greeneye-monitor/default.nix
index aa206825e7f66..c5eb557cd8148 100644
--- a/pkgs/development/python-modules/greeneye-monitor/default.nix
+++ b/pkgs/development/python-modules/greeneye-monitor/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, siobrultech-protocols
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  siobrultech-protocols,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-7EDuQ+wECcTzxkEufMpg3WSzosWeiwfxcVIVtQi+0BI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
     siobrultech-protocols
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "greeneye.monitor"
-  ];
+  pythonImportsCheck = [ "greeneye.monitor" ];
 
   meta = with lib; {
     description = "Receive data packets from GreenEye Monitor";
diff --git a/pkgs/development/python-modules/greenlet/default.nix b/pkgs/development/python-modules/greenlet/default.nix
index 6839b2340961c..2ea828cd4174d 100644
--- a/pkgs/development/python-modules/greenlet/default.nix
+++ b/pkgs/development/python-modules/greenlet/default.nix
@@ -1,62 +1,68 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-
-# build-system
-, setuptools
-
-# tests
-, objgraph
-, psutil
-, python
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+
+  # build-system
+  setuptools,
+
+  # tests
+  objgraph,
+  psutil,
+  python,
+  unittestCheckHook,
 }:
 
-let greenlet = buildPythonPackage rec {
-  pname = "greenlet";
-  version = "3.0.3";
-  pyproject = true;
+let
+  greenlet = buildPythonPackage rec {
+    pname = "greenlet";
+    version = "3.0.3";
+    pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-QzdEQjUyWVVM4zWZ2otpLVqpb4l21WfUut8mM3H75JE=";
-  };
+    src = fetchPypi {
+      inherit pname version;
+      hash = "sha256-QzdEQjUyWVVM4zWZ2otpLVqpb4l21WfUut8mM3H75JE=";
+    };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+    patches = [
+      # https://github.com/python-greenlet/greenlet/pull/396
+      ./python-3.13-compat.patch
+    ];
 
-  # tests in passthru, infinite recursion via objgraph/graphviz
-  doCheck = false;
+    nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    objgraph
-    psutil
-    unittestCheckHook
-  ];
+    # tests in passthru, infinite recursion via objgraph/graphviz
+    doCheck = false;
 
-  preCheck = ''
-    pushd ${placeholder "out"}/${python.sitePackages}
-  '';
+    nativeCheckInputs = [
+      objgraph
+      psutil
+      unittestCheckHook
+    ];
 
-  unittestFlagsArray = [
-    "greenlet.tests"
-  ];
+    preCheck = ''
+      pushd ${placeholder "out"}/${python.sitePackages}
+    '';
 
-  postCheck = ''
-    popd
-  '';
+    unittestFlagsArray = [ "greenlet.tests" ];
 
-  passthru.tests.pytest = greenlet.overridePythonAttrs (_: { doCheck = true; });
+    postCheck = ''
+      popd
+    '';
 
-  meta = with lib; {
-    changelog = "https://github.com/python-greenlet/greenlet/blob/${version}/CHANGES.rst";
-    homepage = "https://github.com/python-greenlet/greenlet";
-    description = "Module for lightweight in-process concurrent programming";
-    license = with licenses; [
-      psfl # src/greenlet/slp_platformselect.h & files in src/greenlet/platform/ directory
-      mit
-    ];
+    passthru.tests.pytest = greenlet.overridePythonAttrs (_: {
+      doCheck = true;
+    });
+
+    meta = with lib; {
+      changelog = "https://github.com/python-greenlet/greenlet/blob/${version}/CHANGES.rst";
+      homepage = "https://github.com/python-greenlet/greenlet";
+      description = "Module for lightweight in-process concurrent programming";
+      license = with licenses; [
+        psfl # src/greenlet/slp_platformselect.h & files in src/greenlet/platform/ directory
+        mit
+      ];
+    };
   };
-};
-in greenlet
+in
+greenlet
diff --git a/pkgs/development/python-modules/greenlet/python-3.13-compat.patch b/pkgs/development/python-modules/greenlet/python-3.13-compat.patch
new file mode 100644
index 0000000000000..9f5488b831d32
--- /dev/null
+++ b/pkgs/development/python-modules/greenlet/python-3.13-compat.patch
@@ -0,0 +1,313 @@
+Port of https://github.com/python-greenlet/greenlet/pull/396
+
+From 94979488f841fcb41bd2bd3b80b5c0b011af4c94 Mon Sep 17 00:00:00 2001
+From: Victor Stinner <vstinner@python.org>
+Date: Wed, 14 Feb 2024 16:37:42 +0100
+Subject: [PATCH 1/5] Fix #392: Port to Python 3.13
+
+* Replace C_RECURSION_LIMIT with Py_C_RECURSION_LIMIT.
+* Add Py_C_RECURSION_LIMIT for Python 3.12 and older.
+* Disable GREENLET_USE_CFRAME on Python 3.13.
+* Define Py_BUILD_CORE to include pycore_frame.h.
+---
+ src/greenlet/TPythonState.cpp            | 10 +++++++---
+ src/greenlet/greenlet_cpython_compat.hpp | 13 +++++++++++--
+ src/greenlet/greenlet_greenlet.hpp       |  1 +
+ 3 files changed, 19 insertions(+), 5 deletions(-)
+
+diff --git a/src/greenlet/TPythonState.cpp b/src/greenlet/TPythonState.cpp
+index 465d4174..c0dbf703 100644
+--- a/src/greenlet/TPythonState.cpp
++++ b/src/greenlet/TPythonState.cpp
+@@ -130,11 +130,13 @@ void PythonState::operator<<(const PyThreadState *const tstate) noexcept
+ #if GREENLET_PY311
+   #if GREENLET_PY312
+     this->py_recursion_depth = tstate->py_recursion_limit - tstate->py_recursion_remaining;
+-    this->c_recursion_depth = C_RECURSION_LIMIT - tstate->c_recursion_remaining;
++    this->c_recursion_depth = Py_C_RECURSION_LIMIT - tstate->c_recursion_remaining;
+   #else // not 312
+     this->recursion_depth = tstate->recursion_limit - tstate->recursion_remaining;
+   #endif // GREENLET_PY312
++  #if GREENLET_USE_CFRAME
+     this->current_frame = tstate->cframe->current_frame;
++  #endif
+     this->datastack_chunk = tstate->datastack_chunk;
+     this->datastack_top = tstate->datastack_top;
+     this->datastack_limit = tstate->datastack_limit;
+@@ -199,12 +201,14 @@ void PythonState::operator>>(PyThreadState *const tstate) noexcept
+ #if GREENLET_PY311
+   #if GREENLET_PY312
+     tstate->py_recursion_remaining = tstate->py_recursion_limit - this->py_recursion_depth;
+-    tstate->c_recursion_remaining = C_RECURSION_LIMIT - this->c_recursion_depth;
++    tstate->c_recursion_remaining = Py_C_RECURSION_LIMIT - this->c_recursion_depth;
+     this->unexpose_frames();
+   #else // \/ 3.11
+     tstate->recursion_remaining = tstate->recursion_limit - this->recursion_depth;
+   #endif // GREENLET_PY312
++  #if GREENLET_USE_CFRAME
+     tstate->cframe->current_frame = this->current_frame;
++  #endif
+     tstate->datastack_chunk = this->datastack_chunk;
+     tstate->datastack_top = this->datastack_top;
+     tstate->datastack_limit = this->datastack_limit;
+@@ -238,7 +242,7 @@ void PythonState::set_initial_state(const PyThreadState* const tstate) noexcept
+ #if GREENLET_PY312
+     this->py_recursion_depth = tstate->py_recursion_limit - tstate->py_recursion_remaining;
+     // XXX: TODO: Comment from a reviewer:
+-    //     Should this be ``C_RECURSION_LIMIT - tstate->c_recursion_remaining``?
++    //     Should this be ``Py_C_RECURSION_LIMIT - tstate->c_recursion_remaining``?
+     // But to me it looks more like that might not be the right
+     // initialization either?
+     this->c_recursion_depth = tstate->py_recursion_limit - tstate->py_recursion_remaining;
+diff --git a/src/greenlet/greenlet_cpython_compat.hpp b/src/greenlet/greenlet_cpython_compat.hpp
+index cdc1617f..c0fb94c5 100644
+--- a/src/greenlet/greenlet_cpython_compat.hpp
++++ b/src/greenlet/greenlet_cpython_compat.hpp
+@@ -12,19 +12,24 @@
+ 
+ #if PY_VERSION_HEX >= 0x30A00B1
+ #    define GREENLET_PY310 1
++#else
++#    define GREENLET_PY310 0
++#endif
++
+ /*
+ Python 3.10 beta 1 changed tstate->use_tracing to a nested cframe member.
+ See https://github.com/python/cpython/pull/25276
+ We have to save and restore this as well.
++
++Python 3.13 removed PyThreadState.cframe (GH-108035).
+ */
++#if GREENLET_PY310 && PY_VERSION_HEX < 0x30D0000
+ #    define GREENLET_USE_CFRAME 1
+ #else
+ #    define GREENLET_USE_CFRAME 0
+-#    define GREENLET_PY310 0
+ #endif
+ 
+ 
+-
+ #if PY_VERSION_HEX >= 0x30B00A4
+ /*
+ Greenlet won't compile on anything older than Python 3.11 alpha 4 (see
+@@ -124,4 +129,8 @@ static inline void PyThreadState_LeaveTracing(PyThreadState *tstate)
+ }
+ #endif
+ 
++#if !defined(Py_C_RECURSION_LIMIT) && defined(C_RECURSION_LIMIT)
++#  define Py_C_RECURSION_LIMIT C_RECURSION_LIMIT
++#endif
++
+ #endif /* GREENLET_CPYTHON_COMPAT_H */
+diff --git a/src/greenlet/greenlet_greenlet.hpp b/src/greenlet/greenlet_greenlet.hpp
+index d52ce1fd..6da6841f 100644
+--- a/src/greenlet/greenlet_greenlet.hpp
++++ b/src/greenlet/greenlet_greenlet.hpp
+@@ -23,6 +23,7 @@ using greenlet::refs::BorrowedGreenlet;
+ #endif
+ 
+ #if GREENLET_PY312
++#  define Py_BUILD_CORE
+ #  include "internal/pycore_frame.h"
+ #endif
+ 
+
+From 00611d7567d09869973fe314f60575674cc877d8 Mon Sep 17 00:00:00 2001
+From: Victor Stinner <vstinner@python.org>
+Date: Mon, 3 Jun 2024 10:55:14 +0200
+Subject: [PATCH 3/5] Support delete_later
+
+---
+ src/greenlet/TPythonState.cpp            | 14 ++++++++++++--
+ src/greenlet/greenlet.cpp                |  4 ++++
+ src/greenlet/greenlet_cpython_compat.hpp |  6 ++++++
+ src/greenlet/greenlet_greenlet.hpp       |  4 ++++
+ 4 files changed, 26 insertions(+), 2 deletions(-)
+
+diff --git a/src/greenlet/TPythonState.cpp b/src/greenlet/TPythonState.cpp
+index c0dbf703..bfb40cac 100644
+--- a/src/greenlet/TPythonState.cpp
++++ b/src/greenlet/TPythonState.cpp
+@@ -18,7 +18,11 @@ PythonState::PythonState()
+ #else
+     ,recursion_depth(0)
+ #endif
++#if GREENLET_PY313
++    ,delete_later(nullptr)
++#else
+     ,trash_delete_nesting(0)
++#endif
+ #if GREENLET_PY311
+     ,current_frame(nullptr)
+     ,datastack_chunk(nullptr)
+@@ -145,7 +149,9 @@ void PythonState::operator<<(const PyThreadState *const tstate) noexcept
+     Py_XDECREF(frame);  // PyThreadState_GetFrame gives us a new
+                         // reference.
+     this->_top_frame.steal(frame);
+-  #if GREENLET_PY312
++  #if GREENLET_PY313
++    this->delete_later = Py_XNewRef(tstate->delete_later);
++  #elif GREENLET_PY312
+     this->trash_delete_nesting = tstate->trash.delete_nesting;
+   #else // not 312
+     this->trash_delete_nesting = tstate->trash_delete_nesting;
+@@ -213,7 +219,11 @@ void PythonState::operator>>(PyThreadState *const tstate) noexcept
+     tstate->datastack_top = this->datastack_top;
+     tstate->datastack_limit = this->datastack_limit;
+     this->_top_frame.relinquish_ownership();
+-  #if GREENLET_PY312
++  #if GREENLET_PY313
++    Py_XDECREF(tstate->delete_later);
++    tstate->delete_later = this->delete_later;
++    Py_CLEAR(this->delete_later);
++  #elif GREENLET_PY312
+     tstate->trash.delete_nesting = this->trash_delete_nesting;
+   #else // not 3.12
+     tstate->trash_delete_nesting = this->trash_delete_nesting;
+diff --git a/src/greenlet/greenlet.cpp b/src/greenlet/greenlet.cpp
+index 5a9818e8..dfc748a8 100644
+--- a/src/greenlet/greenlet.cpp
++++ b/src/greenlet/greenlet.cpp
+@@ -1328,6 +1328,7 @@ mod_enable_optional_cleanup(PyObject* UNUSED(module), PyObject* flag)
+     Py_RETURN_NONE;
+ }
+ 
++#if !GREENLET_PY313
+ PyDoc_STRVAR(mod_get_tstate_trash_delete_nesting_doc,
+              "get_tstate_trash_delete_nesting() -> Integer\n"
+              "\n"
+@@ -1343,6 +1344,7 @@ mod_get_tstate_trash_delete_nesting(PyObject* UNUSED(module))
+     return PyLong_FromLong(tstate->trash_delete_nesting);
+ #endif
+ }
++#endif
+ 
+ static PyMethodDef GreenMethods[] = {
+     {"getcurrent",
+@@ -1356,7 +1358,9 @@ static PyMethodDef GreenMethods[] = {
+     {"get_total_main_greenlets", (PyCFunction)mod_get_total_main_greenlets, METH_NOARGS, mod_get_total_main_greenlets_doc},
+     {"get_clocks_used_doing_optional_cleanup", (PyCFunction)mod_get_clocks_used_doing_optional_cleanup, METH_NOARGS, mod_get_clocks_used_doing_optional_cleanup_doc},
+     {"enable_optional_cleanup", (PyCFunction)mod_enable_optional_cleanup, METH_O, mod_enable_optional_cleanup_doc},
++#if !GREENLET_PY313
+     {"get_tstate_trash_delete_nesting", (PyCFunction)mod_get_tstate_trash_delete_nesting, METH_NOARGS, mod_get_tstate_trash_delete_nesting_doc},
++#endif
+     {NULL, NULL} /* Sentinel */
+ };
+ 
+diff --git a/src/greenlet/greenlet_cpython_compat.hpp b/src/greenlet/greenlet_cpython_compat.hpp
+index c0fb94c5..ce5fd882 100644
+--- a/src/greenlet/greenlet_cpython_compat.hpp
++++ b/src/greenlet/greenlet_cpython_compat.hpp
+@@ -55,6 +55,12 @@ Greenlet won't compile on anything older than Python 3.11 alpha 4 (see
+ #    define GREENLET_PY312 0
+ #endif
+ 
++#if PY_VERSION_HEX >= 0x30D0000
++#    define GREENLET_PY313 1
++#else
++#    define GREENLET_PY313 0
++#endif
++
+ #ifndef Py_SET_REFCNT
+ /* Py_REFCNT and Py_SIZE macros are converted to functions
+ https://bugs.python.org/issue39573 */
+diff --git a/src/greenlet/greenlet_greenlet.hpp b/src/greenlet/greenlet_greenlet.hpp
+index 6da6841f..fbfdfbfc 100644
+--- a/src/greenlet/greenlet_greenlet.hpp
++++ b/src/greenlet/greenlet_greenlet.hpp
+@@ -111,7 +111,11 @@ namespace greenlet
+ #else
+         int recursion_depth;
+ #endif
++#if GREENLET_PY313
++        PyObject *delete_later;
++#else
+         int trash_delete_nesting;
++#endif
+ #if GREENLET_PY311
+         _PyInterpreterFrame* current_frame;
+         _PyStackChunk* datastack_chunk;
+
+From b65558ec962d3d81ae09787ebca8686d233e2a4c Mon Sep 17 00:00:00 2001
+From: Victor Stinner <vstinner@python.org>
+Date: Wed, 5 Jun 2024 12:04:21 +0200
+Subject: [PATCH 4/5] Fix current_frame
+
+---
+ src/greenlet/TPythonState.cpp | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/src/greenlet/TPythonState.cpp b/src/greenlet/TPythonState.cpp
+index bfb40cac..82eb34f0 100644
+--- a/src/greenlet/TPythonState.cpp
++++ b/src/greenlet/TPythonState.cpp
+@@ -138,7 +138,9 @@ void PythonState::operator<<(const PyThreadState *const tstate) noexcept
+   #else // not 312
+     this->recursion_depth = tstate->recursion_limit - tstate->recursion_remaining;
+   #endif // GREENLET_PY312
+-  #if GREENLET_USE_CFRAME
++  #if GREENLET_PY313
++    this->current_frame = tstate->current_frame;
++  #elif GREENLET_USE_CFRAME
+     this->current_frame = tstate->cframe->current_frame;
+   #endif
+     this->datastack_chunk = tstate->datastack_chunk;
+@@ -212,7 +214,9 @@ void PythonState::operator>>(PyThreadState *const tstate) noexcept
+   #else // \/ 3.11
+     tstate->recursion_remaining = tstate->recursion_limit - this->recursion_depth;
+   #endif // GREENLET_PY312
+-  #if GREENLET_USE_CFRAME
++  #if GREENLET_PY313
++    tstate->current_frame = this->current_frame;
++  #elif GREENLET_USE_CFRAME
+     tstate->cframe->current_frame = this->current_frame;
+   #endif
+     tstate->datastack_chunk = this->datastack_chunk;
+
+From b7cfc1748766cac351fe5fca32fa7c8cacdea2ae Mon Sep 17 00:00:00 2001
+From: Victor Stinner <vstinner@python.org>
+Date: Wed, 5 Jun 2024 12:17:28 +0200
+Subject: [PATCH 5/5] Update tests
+
+---
+ src/greenlet/tests/test_greenlet.py       | 4 +++-
+ src/greenlet/tests/test_greenlet_trash.py | 9 +++++++++
+ 2 files changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/src/greenlet/tests/test_greenlet.py b/src/greenlet/tests/test_greenlet.py
+index 51849cd6..259707ae 100644
+--- a/src/greenlet/tests/test_greenlet.py
++++ b/src/greenlet/tests/test_greenlet.py
+@@ -471,7 +471,9 @@ def creator():
+         # Unfortunately, this doesn't actually clear the references, they're in the
+         # fast local array.
+         if not wait_for_cleanup:
+-            result[0].gr_frame.f_locals.clear()
++            # f_locals has no clear method in Python 3.13
++            if hasattr(result[0].gr_frame.f_locals, 'clear'):
++                result[0].gr_frame.f_locals.clear()
+         else:
+             self.assertIsNone(result[0].gr_frame)
+ 
+diff --git a/src/greenlet/tests/test_greenlet_trash.py b/src/greenlet/tests/test_greenlet_trash.py
+index 8d9716e9..2bce8fd0 100644
+--- a/src/greenlet/tests/test_greenlet_trash.py
++++ b/src/greenlet/tests/test_greenlet_trash.py
+@@ -29,8 +29,17 @@
+ 
+ import unittest
+ 
++try:
++    from greenlet._greenlet import get_tstate_trash_delete_nesting
++except ImportError:
++    get_tstate_trash_delete_nesting = None
++
++
+ class TestTrashCanReEnter(unittest.TestCase):
+ 
++    # Python 3.13 has not "trash delete nesting" anymore (but "delete later")
++    @unittest.skipIf(get_tstate_trash_delete_nesting is None,
++                     'need get_tstate_trash_delete_nesting()')
+     def test_it(self):
+         # Try several times to trigger it, because it isn't 100%
+         # reliable.
diff --git a/pkgs/development/python-modules/gremlinpython/default.nix b/pkgs/development/python-modules/gremlinpython/default.nix
index 49401b44532ac..f6539af40f5f0 100644
--- a/pkgs/development/python-modules/gremlinpython/default.nix
+++ b/pkgs/development/python-modules/gremlinpython/default.nix
@@ -1,21 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, aenum
-, aiohttp
-, importlib-metadata
-, isodate
-, nest-asyncio
-, pytestCheckHook
-, pythonOlder
-, mock
-, pyhamcrest
-, radish-bdd
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  aenum,
+  aiohttp,
+  importlib-metadata,
+  isodate,
+  nest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  mock,
+  pyhamcrest,
+  pyyaml,
+  radish-bdd,
 }:
 
 buildPythonPackage rec {
   pname = "gremlinpython";
-  version = "3.6.4";
+  version = "3.7.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -24,7 +26,7 @@ buildPythonPackage rec {
     owner = "apache";
     repo = "tinkerpop";
     rev = "refs/tags/${version}";
-    hash = "sha256-SQ+LcHeHDB1Hd5wXGDJBZmBG4KEZ3NsV4+4X9WgPb9E=";
+    hash = "sha256-2viZXksHNFynOm6+1Vo2a8xrXl4pQcAxAVgehp5y6us=";
   };
 
   sourceRoot = "${src.name}/gremlin-python/src/main/python";
@@ -38,9 +40,7 @@ buildPythonPackage rec {
   '';
 
   # setup-requires requirements
-  nativeBuildInputs = [
-    importlib-metadata
-  ];
+  nativeBuildInputs = [ importlib-metadata ];
 
   propagatedBuildInputs = [
     aenum
@@ -53,6 +53,7 @@ buildPythonPackage rec {
     pytestCheckHook
     mock
     pyhamcrest
+    pyyaml
     radish-bdd
   ];
 
@@ -66,14 +67,29 @@ buildPythonPackage rec {
   disabledTestPaths = [
     "tests/driver/test_client.py"
     "tests/driver/test_driver_remote_connection.py"
+    "tests/driver/test_driver_remote_connection_http.py"
     "tests/driver/test_driver_remote_connection_threaded.py"
+    "tests/driver/test_web_socket_client_behavior.py"
     "tests/process/test_dsl.py"
     "tests/structure/io/test_functionalityio.py"
   ];
-  pytestFlagsArray = [
-    # disabledTests doesn't quite allow us to be precise enough for this
-    "-k 'not (TestFunctionalGraphSONIO and (test_timestamp or test_datetime or test_uuid))'"
-  ];
+  pytestFlagsArray =
+    let
+      fullDisabled = builtins.concatStringsSep " or " [
+        "test_transaction_commit"
+        "test_transaction_rollback"
+        "test_transaction_no_begin"
+        "test_multi_commit_transaction"
+        "test_multi_rollback_transaction"
+        "test_multi_commit_and_rollback"
+        "test_transaction_close_tx"
+        "test_transaction_close_tx_from_parent"
+      ];
+    in
+    [
+      # disabledTests doesn't quite allow us to be precise enough for this
+      "-k 'not ((TestFunctionalGraphSONIO and (test_timestamp or test_datetime or test_uuid)) or ${fullDisabled})'"
+    ];
 
   meta = with lib; {
     description = "Gremlin-Python implements Gremlin, the graph traversal language of Apache TinkerPop, within the Python language";
diff --git a/pkgs/development/python-modules/grep-ast/default.nix b/pkgs/development/python-modules/grep-ast/default.nix
new file mode 100644
index 0000000000000..01d164bacdc13
--- /dev/null
+++ b/pkgs/development/python-modules/grep-ast/default.nix
@@ -0,0 +1,41 @@
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+
+  pathspec,
+  pytestCheckHook,
+  setuptools,
+  tree-sitter-languages,
+}:
+
+buildPythonPackage rec {
+  pname = "grep-ast";
+  version = "0.3.3";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit version;
+    pname = "grep_ast";
+    hash = "sha256-QriIfVcwHcVWNDaPjVSenEnJE9r7TRnJtUw922BPzPQ=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    pathspec
+    tree-sitter-languages
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "grep_ast" ];
+
+  meta = {
+    homepage = "https://github.com/paul-gauthier/grep-ast";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ greg ];
+    description = "Python implementation of the ast-grep tool";
+    mainProgram = "grep-ast";
+  };
+}
diff --git a/pkgs/development/python-modules/grequests/default.nix b/pkgs/development/python-modules/grequests/default.nix
index 40ff7ab61d413..a442a6e5d727a 100644
--- a/pkgs/development/python-modules/grequests/default.nix
+++ b/pkgs/development/python-modules/grequests/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, gevent
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  gevent,
 }:
 
 buildPythonPackage rec {
@@ -12,13 +13,16 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-XDPxQmjfW4+hEH2FN4Fb5v67rW7FYFJNakBLd3jPa6Y=";
+    hash = "sha256-XDPxQmjfW4+hEH2FN4Fb5v67rW7FYFJNakBLd3jPa6Y=";
   };
 
   # No tests in archive
   doCheck = false;
 
-  propagatedBuildInputs = [ requests gevent ];
+  propagatedBuildInputs = [
+    requests
+    gevent
+  ];
 
   meta = with lib; {
     description = "Asynchronous HTTP requests";
@@ -26,5 +30,4 @@ buildPythonPackage rec {
     license = with licenses; [ bsd2 ];
     maintainers = with maintainers; [ matejc ];
   };
-
 }
diff --git a/pkgs/development/python-modules/greynoise/default.nix b/pkgs/development/python-modules/greynoise/default.nix
index 0e127c6ce8252..eb3e4f3c11782 100644
--- a/pkgs/development/python-modules/greynoise/default.nix
+++ b/pkgs/development/python-modules/greynoise/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, click
-, ansimarkup
-, cachetools
-, colorama
-, click-default-group
-, click-repl
-, dict2xml
-, jinja2
-, more-itertools
-, requests
-, six
-, pytestCheckHook
-, mock
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  click,
+  ansimarkup,
+  cachetools,
+  colorama,
+  click-default-group,
+  click-repl,
+  dict2xml,
+  jinja2,
+  more-itertools,
+  requests,
+  six,
+  pytestCheckHook,
+  mock,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "greynoise";
-  version = "2.1.0";
+  version = "2.3.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -28,7 +29,7 @@ buildPythonPackage rec {
     owner = "GreyNoise-Intelligence";
     repo = "pygreynoise";
     rev = "refs/tags/v${version}";
-    hash = "sha256-bMQfGkCjMBimNaYzSi78GaLiDiLdmxMB8RfFCVTxD5U=";
+    hash = "sha256-17NieDQ57qVT2i4S26vLS9N6zALZ+eTtCCcBbhQ8fhQ=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/gridnet/default.nix b/pkgs/development/python-modules/gridnet/default.nix
index 46a3f3f1b839e..8b8be88367d84 100644
--- a/pkgs/development/python-modules/gridnet/default.nix
+++ b/pkgs/development/python-modules/gridnet/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "gridnet";
-  version = "5.0.0";
+  version = "5.0.1";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -21,7 +22,7 @@ buildPythonPackage rec {
     owner = "klaasnicolaas";
     repo = "python-gridnet";
     rev = "refs/tags/v${version}";
-    hash = "sha256-7tLT5sRoUjWs1DOIuUEbnJJkg9LHZqrN/eu+Mjx5Yd4=";
+    hash = "sha256-HVBUAasK7lFsj/tT0j70x/2w4RJtnHWfX/1XbfKKLf8=";
   };
 
   postPatch = ''
@@ -30,9 +31,7 @@ buildPythonPackage rec {
       --replace "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -45,9 +44,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "gridnet"
-  ];
+  pythonImportsCheck = [ "gridnet" ];
 
   meta = with lib; {
     description = "Asynchronous Python client for NET2GRID devices";
diff --git a/pkgs/development/python-modules/griffe/default.nix b/pkgs/development/python-modules/griffe/default.nix
index 6f385ff9fb7c9..ddb9195df7f8b 100644
--- a/pkgs/development/python-modules/griffe/default.nix
+++ b/pkgs/development/python-modules/griffe/default.nix
@@ -6,6 +6,7 @@
   fetchFromGitHub,
   git,
   jsonschema,
+  mkdocstrings,
   pdm-backend,
   pytestCheckHook,
   pythonOlder,
@@ -13,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "griffe";
-  version = "0.44.0";
+  version = "1.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -22,12 +23,15 @@ buildPythonPackage rec {
     owner = "mkdocstrings";
     repo = "griffe";
     rev = "refs/tags/${version}";
-    hash = "sha256-jZ5QK6HiQ0C5miFYGavIlScJHmocy6frzC2c8xTvYOw=";
+    hash = "sha256-aRztItjmCTAJuA/ZkQBJFx/uyH64Us2h5ad1kVsmKlY=";
   };
 
   build-system = [ pdm-backend ];
 
-  dependencies = [ colorama ];
+  dependencies = [
+    colorama
+    mkdocstrings
+  ];
 
   nativeCheckInputs = [
     git
diff --git a/pkgs/development/python-modules/grip/default.nix b/pkgs/development/python-modules/grip/default.nix
index f76fd2548b037..f29e44d2f440d 100644
--- a/pkgs/development/python-modules/grip/default.nix
+++ b/pkgs/development/python-modules/grip/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, fetchFromGitHub
-, fetchpatch
-# Python bits:
-, buildPythonPackage
-, pytest
-, responses
-, docopt
-, flask
-, markdown
-, path-and-address
-, pygments
-, requests
-, tabulate
+{
+  lib,
+  fetchFromGitHub,
+  fetchpatch,
+  # Python bits:
+  buildPythonPackage,
+  pytest,
+  responses,
+  docopt,
+  flask,
+  markdown,
+  path-and-address,
+  pygments,
+  requests,
+  tabulate,
 }:
 
 buildPythonPackage rec {
@@ -35,13 +36,24 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeCheckInputs = [ pytest responses ];
+  nativeCheckInputs = [
+    pytest
+    responses
+  ];
 
-  propagatedBuildInputs = [ docopt flask markdown path-and-address pygments requests tabulate ];
+  propagatedBuildInputs = [
+    docopt
+    flask
+    markdown
+    path-and-address
+    pygments
+    requests
+    tabulate
+  ];
 
   checkPhase = ''
-      export PATH="$PATH:$out/bin"
-      py.test -xm "not assumption"
+    export PATH="$PATH:$out/bin"
+    py.test -xm "not assumption"
   '';
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/groestlcoin-hash/default.nix b/pkgs/development/python-modules/groestlcoin-hash/default.nix
index e5dc1f045eaab..369b7a93b148d 100644
--- a/pkgs/development/python-modules/groestlcoin-hash/default.nix
+++ b/pkgs/development/python-modules/groestlcoin-hash/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     sha256 = "31a8f6fa4c19db5258c3c73c071b71702102c815ba862b6015d9e4b75ece231e";
   };
 
-  pythonImportsCheck = [
-    "groestlcoin_hash"
-  ];
+  pythonImportsCheck = [ "groestlcoin_hash" ];
 
   meta = with lib; {
     description = "Bindings for groestl key derivation function library used in Groestlcoin";
diff --git a/pkgs/development/python-modules/growattserver/default.nix b/pkgs/development/python-modules/growattserver/default.nix
index 1cd8d8e735d4b..ba873ae059da8 100644
--- a/pkgs/development/python-modules/growattserver/default.nix
+++ b/pkgs/development/python-modules/growattserver/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,20 +21,14 @@ buildPythonPackage rec {
     hash = "sha256-ATxXjIF5QRsdLuXZCOWMwvbBzawrhlYZ+wodITz36sE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "growattServer"
-  ];
+  pythonImportsCheck = [ "growattServer" ];
 
   meta = with lib; {
     description = "Python package to retrieve information from Growatt units";
diff --git a/pkgs/development/python-modules/grpc-google-iam-v1/default.nix b/pkgs/development/python-modules/grpc-google-iam-v1/default.nix
index 98f550a047f68..17ede6dee378a 100644
--- a/pkgs/development/python-modules/grpc-google-iam-v1/default.nix
+++ b/pkgs/development/python-modules/grpc-google-iam-v1/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, googleapis-common-protos
-, grpcio
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  googleapis-common-protos,
+  grpcio,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -19,18 +20,14 @@ buildPythonPackage rec {
     hash = "sha256-pmwHDzOaXrgqXZiaxIn01CtiAG+XRBGr8BgzbG/F1uw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     grpcio
     googleapis-common-protos
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [
     "google.iam"
@@ -47,6 +44,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/googleapis/python-grpc-google-iam-v1";
     changelog = "https://github.com/googleapis/python-grpc-google-iam-v1/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/grpc-interceptor/default.nix b/pkgs/development/python-modules/grpc-interceptor/default.nix
index 0cac6c05106fb..8c54fd33fdb61 100644
--- a/pkgs/development/python-modules/grpc-interceptor/default.nix
+++ b/pkgs/development/python-modules/grpc-interceptor/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, poetry-core
-, grpcio
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  poetry-core,
+  grpcio,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-GJkVCslPXShJNDrqhFtCsAK5+VaG8qFJo0RQTsiMIFY=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     grpcio
@@ -39,9 +38,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "grpc_interceptor"
-  ];
+  pythonImportsCheck = [ "grpc_interceptor" ];
 
   meta = with lib; {
     description = "Simplified gRPC interceptors";
diff --git a/pkgs/development/python-modules/grpcio-channelz/default.nix b/pkgs/development/python-modules/grpcio-channelz/default.nix
index ba66ffe4e3440..3c72da10f9d85 100644
--- a/pkgs/development/python-modules/grpcio-channelz/default.nix
+++ b/pkgs/development/python-modules/grpcio-channelz/default.nix
@@ -1,29 +1,31 @@
-{ lib
-, buildPythonPackage
-, pythonRelaxDepsHook
-, fetchPypi
-, grpcio
-, protobuf
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  grpcio,
+  protobuf,
 }:
 
 buildPythonPackage rec {
   pname = "grpcio-channelz";
-  version = "1.62.1";
-  format = "setuptools";
+  version = "1.65.4";
+  pyproject = true;
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-e+8XBt/tt4lNbgNGemBjrBCxUAR7aWXi+0gU1MKmQkU=";
+    pname = "grpcio_channelz";
+    inherit version;
+    hash = "sha256-Ia92P8FT3+bv18k402znrt3QTDovPBCgCJ/Eqm8WDic=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
+  build-system = [ setuptools ];
+
   pythonRelaxDeps = [
     "grpcio"
+    "protobuf"
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     grpcio
     protobuf
   ];
diff --git a/pkgs/development/python-modules/grpcio-gcp/default.nix b/pkgs/development/python-modules/grpcio-gcp/default.nix
index 60706fba8ee68..74c2d76f6c4ae 100644
--- a/pkgs/development/python-modules/grpcio-gcp/default.nix
+++ b/pkgs/development/python-modules/grpcio-gcp/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, grpcio
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  grpcio,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/grpcio-health-checking/default.nix b/pkgs/development/python-modules/grpcio-health-checking/default.nix
index d14710b17b96e..f23b61a8b8037 100644
--- a/pkgs/development/python-modules/grpcio-health-checking/default.nix
+++ b/pkgs/development/python-modules/grpcio-health-checking/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, pythonRelaxDepsHook
-, fetchPypi
-, grpcio
-, protobuf
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  grpcio,
+  protobuf,
 }:
 
 buildPythonPackage rec {
   pname = "grpcio-health-checking";
-  version = "1.62.2";
+  version = "1.65.4";
   format = "setuptools";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-pE0eoeFRC1xiJl2toE2GYhuxSR113ph3E8nA6gBcEKg=";
+    pname = "grpcio_health_checking";
+    inherit version;
+    hash = "sha256-HoQfbbBaAFGmLMSNQN0tzJ5xdYS7GQSa1R+2cygbnEo=";
   };
 
   propagatedBuildInputs = [
@@ -21,12 +22,7 @@ buildPythonPackage rec {
     protobuf
   ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
-  pythonRelaxDeps = [
-    "grpcio"
-  ];
+  pythonRelaxDeps = [ "grpcio" ];
 
   pythonImportsCheck = [ "grpc_health" ];
 
diff --git a/pkgs/development/python-modules/grpcio-reflection/default.nix b/pkgs/development/python-modules/grpcio-reflection/default.nix
index 4001d3663fbdb..3ed0064e081f2 100644
--- a/pkgs/development/python-modules/grpcio-reflection/default.nix
+++ b/pkgs/development/python-modules/grpcio-reflection/default.nix
@@ -1,29 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonRelaxDepsHook
-, grpcio
-, protobuf
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  grpcio,
+  protobuf,
 }:
 
 buildPythonPackage rec {
   pname = "grpcio-reflection";
-  version = "1.62.2";
-  format = "setuptools";
+  version = "1.65.4";
+  pyproject = true;
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-LdRIBtaNAAZjZSm9pXMBKxmkIoFHjC0FHNquu5HiUWw=";
+    pname = "grpcio_reflection";
+    inherit version;
+    hash = "sha256-jGuWDD9DBoHoivWfafq1pXW3eyn1xqHXFuqsXPHBpJ0=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
+  build-system = [ setuptools ];
+
   pythonRelaxDeps = [
     "grpcio"
+    "protobuf"
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     grpcio
     protobuf
   ];
diff --git a/pkgs/development/python-modules/grpcio-status/default.nix b/pkgs/development/python-modules/grpcio-status/default.nix
index 4fd21a8bf1597..2486ba8aa7cda 100644
--- a/pkgs/development/python-modules/grpcio-status/default.nix
+++ b/pkgs/development/python-modules/grpcio-status/default.nix
@@ -1,22 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, googleapis-common-protos
-, grpcio
-, protobuf
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  googleapis-common-protos,
+  grpcio,
+  protobuf,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "grpcio-status";
-  version = "1.62.1";
+  version = "1.64.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-NDHIq7qwBUkSxB31xy8D3fO3pnvoooe7PBijRW+W/3c=";
+    pname = "grpcio_status";
+    inherit version;
+    hash = "sha256-xQvRTrZQbYWApsVTvqRj18CEmbLA6T9tGGTF6Oq7EGY=";
   };
 
   postPatch = ''
@@ -33,9 +35,7 @@ buildPythonPackage rec {
   # Projec thas no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "grpc_status"
-  ];
+  pythonImportsCheck = [ "grpc_status" ];
 
   meta = with lib; {
     description = "GRPC Python status proto mapping";
diff --git a/pkgs/development/python-modules/grpcio-testing/default.nix b/pkgs/development/python-modules/grpcio-testing/default.nix
index c5cdf76a5ef67..7e4c7d8b206e3 100644
--- a/pkgs/development/python-modules/grpcio-testing/default.nix
+++ b/pkgs/development/python-modules/grpcio-testing/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, grpcio
-, protobuf
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  grpcio,
+  protobuf,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "grpcio-testing";
-  version = "1.62.1";
+  version = "1.65.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-yyaVEAqykAtRz9vbVv4SEA1JWA8QrgZ6LKsRfo/HRu0=";
+    pname = "grpcio_testing";
+    inherit version;
+    hash = "sha256-iCbY9Ika+NWuBuFqt+FG+8VZTvQZMj4wMW9NDdBnWcY=";
   };
 
   postPatch = ''
@@ -25,18 +26,18 @@ buildPythonPackage rec {
       --replace-fail '"grpcio>={version}".format(version=grpc_version.VERSION)' '"grpcio"'
   '';
 
-  nativeBuildInputs = [
-    setuptools
+  build-system = [ setuptools ];
+
+  pythonRelaxDeps = [
+    "protobuf"
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     grpcio
     protobuf
   ];
 
-  pythonImportsCheck = [
-    "grpc_testing"
-  ];
+  pythonImportsCheck = [ "grpc_testing" ];
 
   # Module has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/grpcio-tools/default.nix b/pkgs/development/python-modules/grpcio-tools/default.nix
index 4aef9f5fbd0f4..acd09b1eb425c 100644
--- a/pkgs/development/python-modules/grpcio-tools/default.nix
+++ b/pkgs/development/python-modules/grpcio-tools/default.nix
@@ -1,25 +1,42 @@
-{ lib, buildPythonPackage, fetchPypi, protobuf, grpcio, setuptools }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  protobuf,
+  grpcio,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "grpcio-tools";
-  version = "1.62.1";
-  format = "setuptools";
+  version = "1.65.1";
+  pyproject = true;
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-pJkeXuipereRKW079+hwCxRFY1zBgozJjflFyhgC1/I=";
+    pname = "grpcio_tools";
+    inherit version;
+    hash = "sha256-JM/+i8kPuCN/C88kC9bHAwQlX+J7adsyYBSZoEP4cb4=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace 'protobuf>=4.21.6,<5.0dev' 'protobuf'
-  '';
-
-  outputs = [ "out" "dev" ];
+  outputs = [
+    "out"
+    "dev"
+  ];
 
   enableParallelBuilding = true;
 
-  propagatedBuildInputs = [ protobuf grpcio setuptools ];
+  build-system = [ setuptools ];
+
+  pythonRelaxDeps = [
+    "protobuf"
+    "grpcio"
+  ];
+
+  dependencies = [
+    protobuf
+    grpcio
+    setuptools
+  ];
 
   # no tests in the package
   doCheck = false;
@@ -30,6 +47,6 @@ buildPythonPackage rec {
     description = "Protobuf code generator for gRPC";
     license = licenses.asl20;
     homepage = "https://grpc.io/grpc/python/";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/grpcio/default.nix b/pkgs/development/python-modules/grpcio/default.nix
index e890280c676c5..5dc26d50be2b5 100644
--- a/pkgs/development/python-modules/grpcio/default.nix
+++ b/pkgs/development/python-modules/grpcio/default.nix
@@ -1,46 +1,66 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, grpc
-, six
-, protobuf
-, enum34 ? null
-, futures ? null
-, isPy27
-, pkg-config
-, cython
-, c-ares
-, openssl
-, zlib
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  grpc,
+  six,
+  protobuf,
+  enum34 ? null,
+  futures ? null,
+  isPy27,
+  pkg-config,
+  cython,
+  c-ares,
+  openssl,
+  zlib,
 }:
 
 buildPythonPackage rec {
   pname = "grpcio";
   format = "setuptools";
-  version = "1.62.1";
+  version = "1.64.1";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-bEVeAI+obZ6anYW7dtpCd8DX2WaKO/pw2+hunzx1mUc=";
+    hash = "sha256-jVHdHFnV+g80JmuAo4BewpofJkJcKlRzYTP22H/Eloo=";
   };
 
-  outputs = [ "out" "dev" ];
+  outputs = [
+    "out"
+    "dev"
+  ];
 
-  nativeBuildInputs = [ cython pkg-config ];
+  nativeBuildInputs = [
+    cython
+    pkg-config
+  ];
 
-  buildInputs = [ c-ares openssl zlib ];
-  propagatedBuildInputs = [ six protobuf ]
-    ++ lib.optionals (isPy27) [ enum34 futures ];
+  buildInputs = [
+    c-ares
+    openssl
+    zlib
+  ];
+  propagatedBuildInputs =
+    [
+      six
+      protobuf
+    ]
+    ++ lib.optionals (isPy27) [
+      enum34
+      futures
+    ];
 
-  preBuild = ''
-    export GRPC_PYTHON_BUILD_EXT_COMPILER_JOBS="$NIX_BUILD_CORES"
-    if [ -z "$enableParallelBuilding" ]; then
-      GRPC_PYTHON_BUILD_EXT_COMPILER_JOBS=1
-    fi
-  '' + lib.optionalString stdenv.isDarwin ''
-    unset AR
-  '';
+  preBuild =
+    ''
+      export GRPC_PYTHON_BUILD_EXT_COMPILER_JOBS="$NIX_BUILD_CORES"
+      if [ -z "$enableParallelBuilding" ]; then
+        GRPC_PYTHON_BUILD_EXT_COMPILER_JOBS=1
+      fi
+    ''
+    + lib.optionalString stdenv.hostPlatform.isDarwin ''
+      unset AR
+    '';
 
   GRPC_BUILD_WITH_BORING_SSL_ASM = "";
   GRPC_PYTHON_BUILD_SYSTEM_OPENSSL = 1;
@@ -58,6 +78,6 @@ buildPythonPackage rec {
     description = "HTTP/2-based RPC framework";
     license = licenses.asl20;
     homepage = "https://grpc.io/grpc/python/";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/gruut-ipa/default.nix b/pkgs/development/python-modules/gruut-ipa/default.nix
index 717a439393e12..5ebc3f1f33612 100644
--- a/pkgs/development/python-modules/gruut-ipa/default.nix
+++ b/pkgs/development/python-modules/gruut-ipa/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, espeak
-, numpy
-, python
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  espeak,
+  numpy,
+  python,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -26,15 +27,11 @@ buildPythonPackage rec {
       --replace "do espeak" "do ${espeak}/bin/espeak"
   '';
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   nativeCheckInputs = [ unittestCheckHook ];
 
-  pythonImportsCheck = [
-    "gruut_ipa"
-  ];
+  pythonImportsCheck = [ "gruut_ipa" ];
 
   meta = with lib; {
     description = "Library for manipulating pronunciations using the International Phonetic Alphabet (IPA)";
diff --git a/pkgs/development/python-modules/gruut/default.nix b/pkgs/development/python-modules/gruut/default.nix
index 8d18dee9cd8e6..e5ad36e1b19b5 100644
--- a/pkgs/development/python-modules/gruut/default.nix
+++ b/pkgs/development/python-modules/gruut/default.nix
@@ -1,22 +1,35 @@
-{ lib
-, buildPythonPackage
-, callPackage
-, fetchFromGitHub
-, babel
-, gruut-ipa
-, dateparser
-, jsonlines
-, num2words
-, python-crfsuite
-, python
-, networkx
-, glibcLocales
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  callPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  babel,
+  dateparser,
+  gruut-ipa,
+  jsonlines,
+  networkx,
+  num2words,
+  numpy,
+  python-crfsuite,
+
+  # optional dependencies
+  pydub,
+  rapidfuzz,
+
+  # checks
+  glibcLocales,
+  pytestCheckHook,
 }:
 
 let
   langPkgs = [
     "ar"
+    "ca"
     "cs"
     "de"
     "en"
@@ -34,36 +47,53 @@ let
 in
 buildPythonPackage rec {
   pname = "gruut";
-  version = "2.3.4";
-  format = "setuptools";
+  version = "2.4.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "rhasspy";
-    repo = pname;
+    repo = "gruut";
     rev = "refs/tags/v${version}";
-    hash = "sha256-DD7gnvH9T2R6E19+exWE7Si+XEpfh0Iy5FYbycjgzgM=";
+    hash = "sha256-iwde6elsAbICZ+Rc7CPgcZTOux1hweVZc/gf4K+hP9M=";
   };
 
-  postPatch = ''
-    substituteInPlace requirements.txt \
-      --replace "gruut_lang_en~=2.0.0" "gruut_lang_en" \
-      --replace "jsonlines~=1.2.0" "jsonlines" \
-      --replace "networkx>=2.5.0,<3.0.0" "networkx"
-  '';
+  pythonRelaxDeps = true;
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     babel
+    dateparser
     gruut-ipa
     jsonlines
+    networkx
     num2words
+    numpy
     python-crfsuite
-    dateparser
-    networkx
-  ] ++ (map (lang: callPackage ./language-pack.nix {
-    inherit lang version format src;
-  }) langPkgs);
+  ] ++ optional-dependencies.en;
+
+  optional-dependencies =
+    {
+      train = [
+        pydub
+        rapidfuzz
+      ];
+    }
+    // lib.genAttrs langPkgs (lang: [
+      (callPackage ./language-pack.nix {
+        inherit
+          lang
+          version
+          src
+          build-system
+          ;
+      })
+    ]);
 
-  nativeCheckInputs = [ glibcLocales pytestCheckHook ];
+  nativeCheckInputs = [
+    glibcLocales
+    pytestCheckHook
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
   disabledTests = [
     # https://github.com/rhasspy/gruut/issues/25
@@ -72,19 +102,16 @@ buildPythonPackage rec {
     # requires mishkal library
     "test_fa"
     "test_ar"
-    "test_lb"
   ];
 
   preCheck = ''
     export LC_ALL=en_US.utf-8
   '';
 
-  pythonImportsCheck = [
-    "gruut"
-  ];
+  pythonImportsCheck = [ "gruut" ];
 
   meta = with lib; {
-    description = "A tokenizer, text cleaner, and phonemizer for many human languages";
+    description = "Tokenizer, text cleaner, and phonemizer for many human languages";
     mainProgram = "gruut";
     homepage = "https://github.com/rhasspy/gruut";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/gruut/language-pack.nix b/pkgs/development/python-modules/gruut/language-pack.nix
index 2d3cfa9cc5185..b3a9e58287786 100644
--- a/pkgs/development/python-modules/gruut/language-pack.nix
+++ b/pkgs/development/python-modules/gruut/language-pack.nix
@@ -1,23 +1,23 @@
-{ lib
-, buildPythonPackage
+{
+  lib,
+  buildPythonPackage,
 
-, lang
-, version
-, format
-, src
+  lang,
+  version,
+  src,
+  build-system,
 }:
 
 buildPythonPackage rec {
   pname = "gruut-lang-${lang}";
-  inherit version format src;
+  pyproject = true;
+  inherit version src build-system;
 
   prePatch = ''
     cd "${pname}"
   '';
 
-  pythonImportsCheck = [
-    "gruut_lang_${lang}"
-  ];
+  pythonImportsCheck = [ "gruut_lang_${lang}" ];
 
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/gsd/default.nix b/pkgs/development/python-modules/gsd/default.nix
index 3148c3f2e70c3..e0b270c95c076 100644
--- a/pkgs/development/python-modules/gsd/default.nix
+++ b/pkgs/development/python-modules/gsd/default.nix
@@ -1,42 +1,40 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, numpy
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+  numpy,
+  numpy_2,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "gsd";
-  version = "3.2.1";
-  format = "setuptools";
+  version = "3.3.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "glotzerlab";
-    repo = pname;
+    repo = "gsd";
     rev = "refs/tags/v${version}";
-    hash = "sha256-huMM98An/DG8PIVblS3b6AxF6vJ5IoKOs1f9kBnR3ik=";
+    hash = "sha256-4NxZPu4DrwQW6qHeYairefabfN7J0+48tvVwi6ti4vk=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     cython
+    numpy_2
+    setuptools
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
-
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  dependencies = [ numpy ];
 
-  pythonImportsCheck = [
-    "gsd"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
+  pythonImportsCheck = [ "gsd" ];
 
   preCheck = ''
     pushd gsd/test
@@ -52,6 +50,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/glotzerlab/gsd";
     changelog = "https://github.com/glotzerlab/gsd/blob/v${version}/CHANGELOG.rst";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/gsm0338/default.nix b/pkgs/development/python-modules/gsm0338/default.nix
index 029204c987305..e6153f48a58fc 100644
--- a/pkgs/development/python-modules/gsm0338/default.nix
+++ b/pkgs/development/python-modules/gsm0338/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage {
@@ -17,13 +18,9 @@ buildPythonPackage {
     hash = "sha256-EkUVd4d4Te8brHerygDc6KQSpiX11NrHYkcZSDRi05w=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "gsm0338" ];
 
@@ -31,6 +28,6 @@ buildPythonPackage {
     description = "Python codec for GSM 03.38";
     homepage = "https://github.com/dsch/gsm0338";
     license = licenses.mit;
-    maintainers = with maintainers; [ flokli janik ];
+    maintainers = with maintainers; [ flokli ];
   };
 }
diff --git a/pkgs/development/python-modules/gspread/default.nix b/pkgs/development/python-modules/gspread/default.nix
index e8c54b19788ec..efcc03f3bc2bd 100644
--- a/pkgs/development/python-modules/gspread/default.nix
+++ b/pkgs/development/python-modules/gspread/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, google-auth
-, google-auth-oauthlib
-, pytest-vcr
-, pytestCheckHook
-, pythonOlder
-, strenum
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  google-auth,
+  google-auth-oauthlib,
+  pytest-vcr,
+  pytestCheckHook,
+  pythonOlder,
+  strenum,
 }:
 
 buildPythonPackage rec {
   pname = "gspread";
-  version = "6.1.0";
+  version = "6.1.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -21,12 +22,10 @@ buildPythonPackage rec {
     owner = "burnash";
     repo = "gspread";
     rev = "refs/tags/v${version}";
-    hash = "sha256-kuXPX+VY0qz4fldGYPbzZMFx+blzsmueews1W+AjQb0=";
+    hash = "sha256-hvT4e1l3MTT3WMDSfKvZ7BU8dzkzgPROHrnx5mKyCR4=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     google-auth
@@ -39,15 +38,13 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "gspread"
-  ];
+  pythonImportsCheck = [ "gspread" ];
 
   meta = with lib; {
     description = "Google Spreadsheets client library";
     homepage = "https://github.com/burnash/gspread";
     changelog = "https://github.com/burnash/gspread/blob/v${version}/HISTORY.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/gssapi/default.nix b/pkgs/development/python-modules/gssapi/default.nix
index 8ca5f8ebc6f7c..525cfa3208a69 100644
--- a/pkgs/development/python-modules/gssapi/default.nix
+++ b/pkgs/development/python-modules/gssapi/default.nix
@@ -1,24 +1,32 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, six
-, decorator
-, nose
-, krb5
-, GSS
-, parameterized
-, shouldbe
-, cython
-, python
-, k5test
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  cython,
+  setuptools,
+
+  # dependencies
+  decorator,
+
+  # native dependencies
+  GSS,
+  krb5-c, # C krb5 library, not PyPI krb5
+
+  # tests
+  parameterized,
+  k5test,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "gssapi";
   version = "1.8.3";
-  format = "setuptools";
+  pyproject = true;
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
@@ -28,52 +36,43 @@ buildPythonPackage rec {
     hash = "sha256-H1JfdvxJvX5dmC9aTqIOkjAqFEL44KoUXEhoYj2uRY8=";
   };
 
-  # It's used to locate headers
   postPatch = ''
     substituteInPlace setup.py \
-      --replace 'get_output(f"{kc} gssapi --prefix")' '"${lib.getDev krb5}"'
+      --replace 'get_output(f"{kc} gssapi --prefix")' '"${lib.getDev krb5-c}"'
   '';
 
   env = lib.optionalAttrs (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) {
     GSSAPI_SUPPORT_DETECT = "false";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     cython
-    krb5
+    krb5-c
+    setuptools
   ];
 
-  propagatedBuildInputs =  [
-    decorator
-    six
-  ];
+  dependencies = [ decorator ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [
-    GSS
-  ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ GSS ];
+
+  # k5test is marked as broken on darwin
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   nativeCheckInputs = [
     k5test
-    nose
     parameterized
-    shouldbe
-    six
+    pytestCheckHook
   ];
 
-  doCheck = pythonOlder "3.8"  # `shouldbe` not available
-    && !stdenv.isDarwin;  # many failures on darwin
-
-  # skip tests which fail possibly due to be an upstream issue (see
-  # https://github.com/pythongssapi/python-gssapi/issues/220)
-  checkPhase = ''
-    # some tests don't respond to being disabled through nosetests -x
-    echo $'\ndel CredsTestCase.test_add_with_impersonate' >> gssapi/tests/test_high_level.py
-    echo $'\ndel TestBaseUtilities.test_acquire_creds_impersonate_name' >> gssapi/tests/test_raw.py
-    echo $'\ndel TestBaseUtilities.test_add_cred_impersonate_name' >> gssapi/tests/test_raw.py
+  preCheck = ''
+    mv gssapi/tests $TMPDIR/
+    pushd $TMPDIR
+  '';
 
-    export PYTHONPATH="$out/${python.sitePackages}:$PYTHONPATH"
-    nosetests -e 'ext_test_\d.*'
+  postCheck = ''
+    popd
   '';
+
   pythonImportsCheck = [ "gssapi" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/gst-python/default.nix b/pkgs/development/python-modules/gst-python/default.nix
index 7b557a605a5b7..27d4d0f869641 100644
--- a/pkgs/development/python-modules/gst-python/default.nix
+++ b/pkgs/development/python-modules/gst-python/default.nix
@@ -1,36 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, meson
-, ninja
+{
+  lib,
+  buildPythonPackage,
+  fetchurl,
+  meson,
+  ninja,
 
-, pkg-config
-, python
-, pygobject3
-, gobject-introspection
-, gst_all_1
-, isPy3k
+  pkg-config,
+  python,
+  pygobject3,
+  gobject-introspection,
+  gst_all_1,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
   pname = "gst-python";
-  version = "1.22.9";
+  version = "1.24.3";
 
   format = "other";
 
-  outputs = [ "out" "dev" ];
+  outputs = [
+    "out"
+    "dev"
+  ];
 
   src = fetchurl {
     url = "https://gstreamer.freedesktop.org/src/gst-python/${pname}-${version}.tar.xz";
-    hash = "sha256-P51cb/79omhwN0S1kqazmDqmcjJzsSIOy8tiwqWAAAk=";
+    hash = "sha256-7Ns+K6lOosgrk6jHFdWn4E+XJqiDjAprF2lJKP0ehZU=";
   };
 
   # Python 2.x is not supported.
   disabled = !isPy3k;
 
-  depsBuildBuild = [
-    pkg-config
-  ];
+  depsBuildBuild = [ pkg-config ];
 
   nativeBuildInputs = [
     meson
@@ -61,6 +63,6 @@ buildPythonPackage rec {
     homepage = "https://gstreamer.freedesktop.org";
     description = "Python bindings for GStreamer";
     license = licenses.lgpl2Plus;
-    maintainers = with maintainers; [ lilyinstarlight ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/gstools/default.nix b/pkgs/development/python-modules/gstools/default.nix
new file mode 100644
index 0000000000000..e110489539863
--- /dev/null
+++ b/pkgs/development/python-modules/gstools/default.nix
@@ -0,0 +1,64 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  numpy,
+  cython,
+  extension-helpers,
+  hankel,
+  emcee,
+  meshio,
+  pyevtk,
+  scipy,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "gstools";
+  version = "1.6.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "GeoStat-Framework";
+    repo = "GSTools";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-QpdOARzcSRVFl/DbnE2JLBFZmTSh/fBOmzweuf+zfEs=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+    numpy
+    cython
+    extension-helpers
+  ];
+
+  dependencies = [
+    emcee
+    hankel
+    meshio
+    numpy
+    pyevtk
+    scipy
+  ];
+
+  # scipy derivation dont support numpy_2 and is patched to use version 1
+  # Using numpy_2 in the derivation will cause a clojure duplicate error
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail 'numpy>=2.0.0rc1,' 'numpy' \
+  '';
+
+  pythonImportsCheck = [ "gstools" ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "Geostatistical toolbox";
+    homepage = "https://github.com/GeoStat-Framework/GSTools";
+    changelog = "https://github.com/GeoStat-Framework/GSTools/blob/${src.rev}/CHANGELOG.md";
+    license = lib.licenses.lgpl3Only;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/gtfs-realtime-bindings/default.nix b/pkgs/development/python-modules/gtfs-realtime-bindings/default.nix
index 99348cb443633..50979a36d10aa 100644
--- a/pkgs/development/python-modules/gtfs-realtime-bindings/default.nix
+++ b/pkgs/development/python-modules/gtfs-realtime-bindings/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, protobuf
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  protobuf,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -14,19 +15,15 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-LoztiQRADMk6t+hSCttpNM+mAe2sxvWT/Cy0RIZiu0c=";
+    hash = "sha256-LoztiQRADMk6t+hSCttpNM+mAe2sxvWT/Cy0RIZiu0c=";
   };
 
-  propagatedBuildInputs = [
-    protobuf
-  ];
+  propagatedBuildInputs = [ protobuf ];
 
   # Tests are not shipped, only a tarball for Java is present
   doCheck = false;
 
-  pythonImportsCheck = [
-    "google.transit"
-  ];
+  pythonImportsCheck = [ "google.transit" ];
 
   meta = with lib; {
     description = "Python bindings generated from the GTFS Realtime protocol buffer spec";
diff --git a/pkgs/development/python-modules/gto/default.nix b/pkgs/development/python-modules/gto/default.nix
index 79347e1ce3d80..a41a7262dcdd4 100644
--- a/pkgs/development/python-modules/gto/default.nix
+++ b/pkgs/development/python-modules/gto/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, buildPythonPackage
-, entrypoints
-, fastentrypoints
-, fetchFromGitHub
-, freezegun
-, funcy
-, git
-, pydantic
-, pytest-mock
-, pytest-test-utils
-, pytestCheckHook
-, pythonOlder
-, rich
-, ruamel-yaml
-, scmrepo
-, semver
-, setuptools
-, setuptools-scm
-, tabulate
-, typer
+{
+  lib,
+  buildPythonPackage,
+  entrypoints,
+  fastentrypoints,
+  fetchFromGitHub,
+  freezegun,
+  funcy,
+  git,
+  pydantic,
+  pytest-mock,
+  pytest-test-utils,
+  pytestCheckHook,
+  pythonOlder,
+  rich,
+  ruamel-yaml,
+  scmrepo,
+  semver,
+  setuptools,
+  setuptools-scm,
+  tabulate,
+  typer,
 }:
 
 buildPythonPackage rec {
@@ -82,9 +83,7 @@ buildPythonPackage rec {
     "test_action_doesnt_push_even_if_repo_has_remotes_set"
   ];
 
-  pythonImportsCheck = [
-    "gto"
-  ];
+  pythonImportsCheck = [ "gto" ];
 
   meta = with lib; {
     description = "Module for Git Tag Operations";
diff --git a/pkgs/development/python-modules/gtts-token/default.nix b/pkgs/development/python-modules/gtts-token/default.nix
index da46799ec7809..a747522827ca8 100644
--- a/pkgs/development/python-modules/gtts-token/default.nix
+++ b/pkgs/development/python-modules/gtts-token/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     sha256 = "0vr52zc0jqyfvsccl67j1baims3cdx2is1y2lpx2kav9gadkn8hp";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
@@ -33,4 +32,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ makefu ];
   };
 }
-
diff --git a/pkgs/development/python-modules/gtts/default.nix b/pkgs/development/python-modules/gtts/default.nix
index d53fd34abd698..d4d724c4b8c57 100644
--- a/pkgs/development/python-modules/gtts/default.nix
+++ b/pkgs/development/python-modules/gtts/default.nix
@@ -1,34 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, beautifulsoup4
-, click
-, gtts-token
-, mock
-, pytest
-, requests
-, six
-, testfixtures
-, twine
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  beautifulsoup4,
+  click,
+  gtts-token,
+  mock,
+  pytest,
+  requests,
+  six,
+  testfixtures,
+  twine,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "gtts";
-  version = "2.5.1";
-  format = "pyproject";
+  version = "2.5.3";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pndurette";
     repo = "gTTS";
     rev = "refs/tags/v${version}";
-    hash = "sha256-CCxD73fpHGsO4zSifWLQtgDkbPvPEnA2357umhOCNoI=";
+    hash = "sha256-8FPKAMVXqw/4X050tAnOAx/wGboZPPJs72VwwaOEamE=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     beautifulsoup4
@@ -40,7 +39,11 @@ buildPythonPackage rec {
     twine
   ];
 
-  nativeCheckInputs = [ pytest mock testfixtures ];
+  nativeCheckInputs = [
+    pytest
+    mock
+    testfixtures
+  ];
 
   # majority of tests just try to call out to Google's Translate API endpoint
   doCheck = false;
@@ -51,7 +54,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "gtts" ];
 
   meta = with lib; {
-    description = "A Python library and CLI tool to interface with Google Translate text-to-speech API";
+    description = "Python library and CLI tool to interface with Google Translate text-to-speech API";
     mainProgram = "gtts-cli";
     homepage = "https://gtts.readthedocs.io";
     changelog = "https://gtts.readthedocs.io/en/latest/changelog.html";
diff --git a/pkgs/development/python-modules/gudhi/default.nix b/pkgs/development/python-modules/gudhi/default.nix
index 1c8810ffe427a..064758489e266 100644
--- a/pkgs/development/python-modules/gudhi/default.nix
+++ b/pkgs/development/python-modules/gudhi/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, cmake
-, setuptools
-, boost
-, eigen
-, gmp
-, cgal  # see https://github.com/NixOS/nixpkgs/pull/94875 about cgal
-, mpfr
-, tbb
-, numpy
-, cython
-, pybind11
-, matplotlib
-, scipy
-, pytest
-, enableTBB ? false
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  cmake,
+  setuptools,
+  boost,
+  eigen,
+  gmp,
+  cgal,
+  mpfr,
+  tbb,
+  numpy,
+  cython,
+  pybind11,
+  matplotlib,
+  scipy,
+  pytest,
+  enableTBB ? false,
 }:
 
 buildPythonPackage rec {
   pname = "gudhi";
-  version = "3.9.0";
+  version = "3.10.1";
   pyproject = true;
 
   src = fetchFromGitHub {
@@ -28,13 +29,28 @@ buildPythonPackage rec {
     repo = "gudhi-devel";
     rev = "tags/gudhi-release-${version}";
     fetchSubmodules = true;
-    hash = "sha256-VL6RIPe8a2/cUHnHOql9e9EUMBB9QU311kMCaMZTbGI=";
+    hash = "sha256-zHjSGm3hk3FZQmyQ03y14vJp5xeoofvij1hczKidvVA=";
   };
 
-  nativeBuildInputs = [ cmake numpy cython pybind11 matplotlib setuptools ];
-  buildInputs = [ boost eigen gmp cgal mpfr ]
-    ++ lib.optionals enableTBB [ tbb ];
-  propagatedBuildInputs = [ numpy scipy ];
+  nativeBuildInputs = [
+    cmake
+    numpy
+    cython
+    pybind11
+    matplotlib
+    setuptools
+  ];
+  buildInputs = [
+    boost
+    eigen
+    gmp
+    cgal
+    mpfr
+  ] ++ lib.optionals enableTBB [ tbb ];
+  propagatedBuildInputs = [
+    numpy
+    scipy
+  ];
   nativeCheckInputs = [ pytest ];
 
   cmakeFlags = [
@@ -60,13 +76,21 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [ "gudhi" "gudhi.hera" "gudhi.point_cloud" "gudhi.clustering" ];
+  pythonImportsCheck = [
+    "gudhi"
+    "gudhi.hera"
+    "gudhi.point_cloud"
+    "gudhi.clustering"
+  ];
 
   meta = {
     description = "Library for Computational Topology and Topological Data Analysis (TDA)";
     homepage = "https://gudhi.inria.fr/python/latest/";
     downloadPage = "https://github.com/GUDHI/gudhi-devel";
-    license = with lib.licenses; [ mit gpl3 ];
+    license = with lib.licenses; [
+      mit
+      gpl3
+    ];
     maintainers = with lib.maintainers; [ yl3dy ];
   };
 }
diff --git a/pkgs/development/python-modules/guessit/default.nix b/pkgs/development/python-modules/guessit/default.nix
index fce9cc928b51b..c86ecb59ef33e 100644
--- a/pkgs/development/python-modules/guessit/default.nix
+++ b/pkgs/development/python-modules/guessit/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python-dateutil
-, babelfish
-, rebulk
-, pythonOlder
-, importlib-resources
-, py
-, pytestCheckHook
-, pytest-mock
-, pytest-benchmark
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python-dateutil,
+  babelfish,
+  rebulk,
+  pythonOlder,
+  importlib-resources,
+  py,
+  pytestCheckHook,
+  pytest-mock,
+  pytest-benchmark,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     rebulk
     babelfish
     python-dateutil
-  ] ++ lib.optionals (pythonOlder "3.9") [
-   importlib-resources
- ];
+  ] ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ];
 
   nativeCheckInputs = [
     py
@@ -44,11 +43,11 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "guessit" ];
 
   meta = with lib; {
-    description = "A Python library that extracts as much information as possible from a video filename";
+    description = "Python library that extracts as much information as possible from a video filename";
     mainProgram = "guessit";
     homepage = "https://guessit-io.github.io/guessit/";
     changelog = "https://github.com/guessit-io/guessit/raw/v${version}/CHANGELOG.md";
     license = licenses.lgpl3Only;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/guestfs/default.nix b/pkgs/development/python-modules/guestfs/default.nix
index ddc456171eb4b..8c10cb697ef5d 100644
--- a/pkgs/development/python-modules/guestfs/default.nix
+++ b/pkgs/development/python-modules/guestfs/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchurl, libguestfs, qemu }:
+{
+  lib,
+  buildPythonPackage,
+  fetchurl,
+  libguestfs,
+  qemu,
+}:
 
 buildPythonPackage rec {
   pname = "guestfs";
@@ -10,7 +16,10 @@ buildPythonPackage rec {
     sha256 = "06a4b5xf1rkhnzfvck91n0z9mlkrgy90s9na5a8da2g4p776lhkf";
   };
 
-  propagatedBuildInputs = [ libguestfs qemu ];
+  propagatedBuildInputs = [
+    libguestfs
+    qemu
+  ];
 
   # no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/guidance/default.nix b/pkgs/development/python-modules/guidance/default.nix
index 732a107f2a399..754d7109c6929 100644
--- a/pkgs/development/python-modules/guidance/default.nix
+++ b/pkgs/development/python-modules/guidance/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, pybind11
-, setuptools
-, wheel
-, aiohttp
-, diskcache
-, fastapi
-, gptcache
-, msal
-, numpy
-, openai
-, ordered-set
-, platformdirs
-, protobuf
-, pyformlang
-, requests
-, tiktoken
-, torch
-, uvicorn
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  pybind11,
+  setuptools,
+  wheel,
+  aiohttp,
+  diskcache,
+  fastapi,
+  gptcache,
+  msal,
+  numpy,
+  openai,
+  ordered-set,
+  platformdirs,
+  protobuf,
+  pyformlang,
+  requests,
+  tiktoken,
+  torch,
+  uvicorn,
 }:
 
 buildPythonPackage rec {
@@ -37,9 +38,7 @@ buildPythonPackage rec {
     hash = "sha256-dvIJeSur3DdNBhrEPNPghxqmDEEig59Iz83LWksim6U=";
   };
 
-  nativeBuildInputs = [
-    pybind11
-  ];
+  nativeBuildInputs = [ pybind11 ];
 
   build-system = [
     setuptools
@@ -80,6 +79,9 @@ buildPythonPackage rec {
     "test_recursion_error"
     "test_openai_class_detection"
     "test_openai_chat_without_roles"
+
+    # flaky tests
+    "test_remote_mock_gen" # frequently fails when building packages in parallel
   ];
 
   disabledTestPaths = [
@@ -96,9 +98,9 @@ buildPythonPackage rec {
   __darwinAllowLocalNetworking = true;
 
   meta = with lib; {
-    description = "A guidance language for controlling large language models";
+    description = "Guidance language for controlling large language models";
     homepage = "https://github.com/guidance-ai/guidance";
-    changelog = "https://github.com/guidance-ai/guidance/releases/tag/${src.rev}";
+    changelog = "https://github.com/guidance-ai/guidance/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ natsukium ];
   };
diff --git a/pkgs/development/python-modules/gumath/default.nix b/pkgs/development/python-modules/gumath/default.nix
index 7b052fa429c2f..f478acffb27ef 100644
--- a/pkgs/development/python-modules/gumath/default.nix
+++ b/pkgs/development/python-modules/gumath/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchpatch
-, python
-, numba
-, ndtypes
-, xnd
-, libndtypes
-, libxnd
-, libgumath
-, isPy27
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchpatch,
+  python,
+  numba,
+  ndtypes,
+  xnd,
+  libndtypes,
+  libxnd,
+  libgumath,
+  isPy27,
 }:
 
 buildPythonPackage {
@@ -34,7 +35,10 @@ buildPythonPackage {
 
   nativeCheckInputs = [ numba ];
 
-  propagatedBuildInputs = [ ndtypes xnd ];
+  propagatedBuildInputs = [
+    ndtypes
+    xnd
+  ];
 
   postPatch = ''
     substituteInPlace setup.py \
@@ -46,7 +50,7 @@ buildPythonPackage {
                 'add_runtime_library_dirs = ["${libndtypes}/lib", "${libxnd}/lib", "${libgumath}/lib"]'
   '';
 
-  postInstall = lib.optionalString stdenv.isDarwin ''
+  postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
     install_name_tool -add_rpath ${libgumath}/lib $out/${python.sitePackages}/gumath/_gumath.*.so
   '';
 
@@ -60,4 +64,3 @@ buildPythonPackage {
     popd
   '';
 }
-
diff --git a/pkgs/development/python-modules/gunicorn/default.nix b/pkgs/development/python-modules/gunicorn/default.nix
index ec2ed2aaf63d6..45a7b68624211 100644
--- a/pkgs/development/python-modules/gunicorn/default.nix
+++ b/pkgs/development/python-modules/gunicorn/default.nix
@@ -1,80 +1,64 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, packaging
+  # dependencies
+  packaging,
 
-# optional-dependencies
-, eventlet
-, gevent
-, tornado
-, setproctitle
+  # optional-dependencies
+  eventlet,
+  gevent,
+  tornado,
+  setproctitle,
 
-, pytestCheckHook
+  pytestCheckHook,
+  pytest-cov,
 }:
 
 buildPythonPackage rec {
   pname = "gunicorn";
-  version = "21.2.0";
+  version = "23.0.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.5";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "benoitc";
     repo = "gunicorn";
-    rev = version;
-    hash = "sha256-xP7NNKtz3KNrhcAc00ovLZRx2h6ZqHbwiFOpCiuwf98=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Dq/mrQwo3II6DBvYfD1FHsKHaIlyHlJCZ+ZyrM4Efe0=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "--cov=gunicorn --cov-report=xml" ""
-  '';
+  build-system = [ setuptools ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  dependencies = [ packaging ];
 
-  propagatedBuildInputs = [
-    packaging
-  ];
-
-  passthru.optional-dependencies = {
-    gevent = [
-      gevent
-    ];
-    eventlet = [
-      eventlet
-    ];
-    tornado = [
-      tornado
-    ];
-    gthread = [];
-    setproctitle = [
-      setproctitle
-    ];
+  optional-dependencies = {
+    gevent = [ gevent ];
+    eventlet = [ eventlet ];
+    tornado = [ tornado ];
+    gthread = [ ];
+    setproctitle = [ setproctitle ];
   };
 
-  pythonImportsCheck = [
-    "gunicorn"
-  ];
+  pythonImportsCheck = [ "gunicorn" ];
 
   nativeCheckInputs = [
     pytestCheckHook
-  ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
+    pytest-cov
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
-  meta = with lib; {
-    changelog = "https://github.com/benoitc/gunicorn/releases/tag/${version}";
-    homepage = "https://github.com/benoitc/gunicorn";
+  meta = {
     description = "gunicorn 'Green Unicorn' is a WSGI HTTP Server for UNIX, fast clients and sleepy applications";
-    license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    homepage = "https://github.com/benoitc/gunicorn";
+    changelog = "https://github.com/benoitc/gunicorn/releases/tag/${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ getchoo ];
     mainProgram = "gunicorn";
   };
 }
diff --git a/pkgs/development/python-modules/guppy3/default.nix b/pkgs/development/python-modules/guppy3/default.nix
index 2c4389549afff..2609a0bf8eabc 100644
--- a/pkgs/development/python-modules/guppy3/default.nix
+++ b/pkgs/development/python-modules/guppy3/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, tkinter
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  tkinter,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-HHy57P6WEHZKygAbdjEh6XAApFlQueiYGr02eSQMWfc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [ tkinter ];
 
diff --git a/pkgs/development/python-modules/gurobipy/default.nix b/pkgs/development/python-modules/gurobipy/default.nix
index 7793009abe963..fe25ace59a5f1 100644
--- a/pkgs/development/python-modules/gurobipy/default.nix
+++ b/pkgs/development/python-modules/gurobipy/default.nix
@@ -17,14 +17,14 @@ let
   };
   platform = platforms.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}");
   hashes = rec {
-    cp311-aarch64-darwin = "sha256-pMwq4TXvr0mrKxZppeW2MQE/KrplWWFGmjKRLKwbHCI=";
-    cp311-aarch64-linux = "sha256-fxJSQUt+nk7JBGtkDi+qTl/js0hnWGZGyht4AqD9g60=";
+    cp311-aarch64-darwin = "sha256-E4tL6PtC1JS4SEvUz6meoeUR6IYM2xFxNJ9PzgbZqgE=";
+    cp311-aarch64-linux = "sha256-hMWOFkyQ/B3ovAqsitJagrSp0webUGRzWCLOz1UrGyY=";
     cp311-x86_64-darwin = cp311-aarch64-darwin;
-    cp311-x86_64-linux = "sha256-q1nmuWmlDPeNWWw4bX3KECOChNQkwU+6hItYqWcyY4M=";
-    cp312-aarch64-darwin = "sha256-5+1QxYOhjbs01S3gqhkQ9Bx/0/NhbXEi710BGpiC5kM=";
-    cp312-aarch64-linux = "sha256-N7cFtibenj+SrZ7ZtevZtDUdW48DnLC4p5jB9vrWlb8=";
+    cp311-x86_64-linux = "sha256-2O7Vykgx0fELCM1wH3VIOyeBBzR1DUFKWzy25LpMF/M=";
+    cp312-aarch64-darwin = "sha256-BXAJeUaVEa7fy00BNsFhB30IU5O2pEnJjp/3gYdHJ5w=";
+    cp312-aarch64-linux = "sha256-t1KopNiYo8xZsGcKpEne6OIVnU9CDzADO6+W8Uo2UW0=";
     cp312-x86_64-darwin = cp312-aarch64-darwin;
-    cp312-x86_64-linux = "sha256-Aw5xxvCwdgfdT7HMrWT/jKWx3RDjs8IuB4in0ZGdqcw=";
+    cp312-x86_64-linux = "sha256-0IppqYhLLHq4Q8mWe0R3DBfHOsVybbeoeUroXXwfxEY=";
   };
   hash =
     hashes."${pyShortVersion}-${stdenv.system}"
@@ -32,7 +32,7 @@ let
 in
 buildPythonPackage rec {
   pname = "gurobipy";
-  version = "11.0.1";
+  version = "11.0.3";
   inherit format;
 
   src = fetchPypi {
diff --git a/pkgs/development/python-modules/guzzle-sphinx-theme/default.nix b/pkgs/development/python-modules/guzzle-sphinx-theme/default.nix
index 48d87c8dd7d8c..59fdf748e2ca3 100644
--- a/pkgs/development/python-modules/guzzle-sphinx-theme/default.nix
+++ b/pkgs/development/python-modules/guzzle-sphinx-theme/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -16,17 +17,13 @@ buildPythonPackage rec {
     hash = "sha256-m4wWOcNDwCw/PbffZg3fb1M7VFTukqX3sC7apXP+0+Y=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   doCheck = false; # no tests
 
   propagatedBuildInputs = [ sphinx ];
 
-  pythonImportsCheck = [
-    "guzzle_sphinx_theme"
-  ];
+  pythonImportsCheck = [ "guzzle_sphinx_theme" ];
 
   meta = with lib; {
     description = "Sphinx theme used by Guzzle: http://guzzlephp.org";
diff --git a/pkgs/development/python-modules/gviz-api/default.nix b/pkgs/development/python-modules/gviz-api/default.nix
index 04ba3b9520faf..72e1692aa851e 100644
--- a/pkgs/development/python-modules/gviz-api/default.nix
+++ b/pkgs/development/python-modules/gviz-api/default.nix
@@ -1,5 +1,8 @@
-{ lib, fetchPypi, buildPythonPackage
-, six
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -12,9 +15,7 @@ buildPythonPackage rec {
     sha256 = "a05055fed8c279f34f4b496eace7648c7fe9c1b06851e8a36e748541f1adbb05";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   meta = with lib; {
     description = "Python API for Google Visualization";
diff --git a/pkgs/development/python-modules/gvm-tools/default.nix b/pkgs/development/python-modules/gvm-tools/default.nix
index 59d0da14b17dc..73184dcad346e 100644
--- a/pkgs/development/python-modules/gvm-tools/default.nix
+++ b/pkgs/development/python-modules/gvm-tools/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, python-gvm
-, pythonAtLeast
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  python-gvm,
+  pythonAtLeast,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "gvm-tools";
-  version = "24.3.0";
+  version = "24.8.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -19,33 +20,23 @@ buildPythonPackage rec {
     owner = "greenbone";
     repo = "gvm-tools";
     rev = "refs/tags/v${version}";
-    hash = "sha256-LLXMdT1q6IWsbsRjflpGN5pcjUCXWzdFK3gMw4mBm0U=";
+    hash = "sha256-MwLwJyxKu4O0cEabBjcdhqtqW3uwgbyVlezZysUDYa4=";
   };
 
   __darwinAllowLocalNetworking = true;
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    python-gvm
-  ];
+  propagatedBuildInputs = [ python-gvm ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Don't test sending
     "SendTargetTestCase"
-  ] ++ lib.optionals (pythonAtLeast "3.10") [
-    "HelpFormattingParserTestCase"
-  ];
+  ] ++ lib.optionals (pythonAtLeast "3.10") [ "HelpFormattingParserTestCase" ];
 
-  pythonImportsCheck = [
-    "gvmtools"
-  ];
+  pythonImportsCheck = [ "gvmtools" ];
 
   meta = with lib; {
     description = "Collection of APIs that help with remote controlling a Greenbone Security Manager";
diff --git a/pkgs/development/python-modules/gwcs/default.nix b/pkgs/development/python-modules/gwcs/default.nix
new file mode 100644
index 0000000000000..07b235b410800
--- /dev/null
+++ b/pkgs/development/python-modules/gwcs/default.nix
@@ -0,0 +1,60 @@
+{
+  lib,
+  asdf-astropy,
+  asdf-wcs-schemas,
+  asdf,
+  astropy,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  pytest-astropy,
+  pytestCheckHook,
+  pythonOlder,
+  scipy,
+  setuptools-scm,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "gwcs";
+  version = "0.21.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "spacetelescope";
+    repo = "gwcs";
+    rev = "refs/tags/${version}";
+    hash = "sha256-76h2lDIaPHj7HarVcE0t5k6CA/hLCwquaz+2wMsKj+Y=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    asdf
+    asdf-astropy
+    asdf-wcs-schemas
+    astropy
+    numpy
+    scipy
+  ];
+
+  nativeCheckInputs = [
+    pytest-astropy
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "gwcs" ];
+
+  meta = with lib; {
+    description = "Module to manage the Generalized World Coordinate System";
+    homepage = "https://github.com/spacetelescope/gwcs";
+    changelog = "https://github.com/spacetelescope/gwcs/blob/${version}/CHANGES.rst";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/gym-notices/default.nix b/pkgs/development/python-modules/gym-notices/default.nix
index 5b48ea524347d..0a4e2bd4089cc 100644
--- a/pkgs/development/python-modules/gym-notices/default.nix
+++ b/pkgs/development/python-modules/gym-notices/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -22,4 +23,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ billhuang ];
   };
 }
-
diff --git a/pkgs/development/python-modules/gym/default.nix b/pkgs/development/python-modules/gym/default.nix
index e7d4c9f4a4119..fa8394411a951 100644
--- a/pkgs/development/python-modules/gym/default.nix
+++ b/pkgs/development/python-modules/gym/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, cloudpickle
-, gym-notices
-, importlib-metadata
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  cloudpickle,
+  gym-notices,
+  importlib-metadata,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -32,7 +33,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "gym" ];
 
   meta = with lib; {
-    description = "A toolkit for developing and comparing your reinforcement learning agents";
+    description = "Toolkit for developing and comparing your reinforcement learning agents";
     homepage = "https://gym.openai.com/";
     license = licenses.mit;
     maintainers = with maintainers; [ hyphon81 ];
diff --git a/pkgs/development/python-modules/gymnasium/default.nix b/pkgs/development/python-modules/gymnasium/default.nix
index ca7ba30927ab3..d7642559e537f 100644
--- a/pkgs/development/python-modules/gymnasium/default.nix
+++ b/pkgs/development/python-modules/gymnasium/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, numpy
-, cloudpickle
-, gym-notices
-, jax-jumpy
-, typing-extensions
-, farama-notifications
-, importlib-metadata
-, pythonOlder
-, ffmpeg
-, jax
-, jaxlib
-, matplotlib
-, moviepy
-, opencv4
-, pybox2d
-, pygame
-, pytestCheckHook
-, scipy
-, stdenv
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  numpy,
+  cloudpickle,
+  gym-notices,
+  jax-jumpy,
+  typing-extensions,
+  farama-notifications,
+  importlib-metadata,
+  pythonOlder,
+  ffmpeg,
+  jax,
+  jaxlib,
+  matplotlib,
+  moviepy,
+  opencv4,
+  pybox2d,
+  pygame,
+  pytestCheckHook,
+  scipy,
+  stdenv,
 }:
 
 buildPythonPackage rec {
@@ -65,7 +66,7 @@ buildPythonPackage rec {
   # marked as broken and throws an error during evaluation if the package is evaluated anyway.
   # disabling checks on Darwin avoids this and allows the package to be built.
   # if jaxlib is ever fixed on Darwin, remove this.
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   disabledTestPaths = [
     # mujoco is required for those tests but the mujoco python bindings are not packaged in nixpkgs.
@@ -79,7 +80,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A standard API for reinforcement learning and a diverse set of reference environments (formerly Gym)";
+    description = "Standard API for reinforcement learning and a diverse set of reference environments (formerly Gym)";
     homepage = "https://github.com/Farama-Foundation/Gymnasium";
     license = licenses.mit;
     maintainers = with maintainers; [ GaetanLepage ];
diff --git a/pkgs/development/python-modules/gyp/default.nix b/pkgs/development/python-modules/gyp/default.nix
index 50e60cfe7bfd7..b8d52cd944c49 100644
--- a/pkgs/development/python-modules/gyp/default.nix
+++ b/pkgs/development/python-modules/gyp/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitiles
-, six
-, python
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitiles,
+  six,
+  python,
 }:
 
 buildPythonPackage {
@@ -17,16 +18,17 @@ buildPythonPackage {
     hash = "sha256-LUlF2VhRnuDwJLdITgmXIQV/IuKdx1KXQkiPVHKrl4Q=";
   };
 
-  patches = lib.optionals stdenv.isDarwin [
+  patches = lib.optionals stdenv.hostPlatform.isDarwin [
     ./no-darwin-cflags.patch
     ./no-xcode.patch
   ];
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
-  pythonImportsCheck = [ "gyp" "gyp.generator" ];
+  pythonImportsCheck = [
+    "gyp"
+    "gyp.generator"
+  ];
 
   # Make mac_tool.py executable so that patchShebangs hook processes it. This
   # file is copied and run by builds using gyp on macOS
@@ -35,7 +37,7 @@ buildPythonPackage {
   '';
 
   meta = with lib; {
-    description = "A tool to generate native build files";
+    description = "Tool to generate native build files";
     mainProgram = "gyp";
     homepage = "https://gyp.gsrc.io";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/h11/default.nix b/pkgs/development/python-modules/h11/default.nix
index a03c7b0ea4778..a7e4271006d77 100644
--- a/pkgs/development/python-modules/h11/default.nix
+++ b/pkgs/development/python-modules/h11/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, httpcore
-, httpx
-, wsproto
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  httpcore,
+  httpx,
+  wsproto,
 }:
 
 buildPythonPackage rec {
@@ -32,6 +33,6 @@ buildPythonPackage rec {
     description = "Pure-Python, bring-your-own-I/O implementation of HTTP/1.1";
     homepage = "https://github.com/python-hyper/h11";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/h2/default.nix b/pkgs/development/python-modules/h2/default.nix
index bb37c4d1607b0..3666c7db9e648 100644
--- a/pkgs/development/python-modules/h2/default.nix
+++ b/pkgs/development/python-modules/h2/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, fetchpatch
-, hpack
-, hyperframe
-, pytestCheckHook
-, hypothesis
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  fetchpatch,
+  hpack,
+  hyperframe,
+  pytestCheckHook,
+  hypothesis,
 }:
 
 buildPythonPackage rec {
@@ -54,6 +55,6 @@ buildPythonPackage rec {
     description = "HTTP/2 State-Machine based protocol implementation";
     homepage = "https://github.com/python-hyper/h2";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/h3/default.nix b/pkgs/development/python-modules/h3/default.nix
index 64be91a04fd9c..828bcc1b1ea9e 100644
--- a/pkgs/development/python-modules/h3/default.nix
+++ b/pkgs/development/python-modules/h3/default.nix
@@ -1,14 +1,15 @@
-{ autoPatchelfHook
-, buildPythonPackage
-, cmake
-, cython
-, fetchFromGitHub
-, h3
-, lib
-, numpy
-, pytestCheckHook
-, scikit-build
-, stdenv
+{
+  autoPatchelfHook,
+  buildPythonPackage,
+  cmake,
+  cython,
+  fetchFromGitHub,
+  h3,
+  lib,
+  numpy,
+  pytestCheckHook,
+  scikit-build,
+  stdenv,
 }:
 
 buildPythonPackage rec {
@@ -28,14 +29,18 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ pytestCheckHook ];
 
-  nativeBuildInputs = [
-    scikit-build cmake cython
-  ] ++ lib.optionals stdenv.hostPlatform.isLinux [
-    # On Linux the .so files ends up referring to libh3.so instead of the full
-    # Nix store path. I'm not sure why this is happening! On Darwin it works
-    # fine.
-    autoPatchelfHook
-  ];
+  nativeBuildInputs =
+    [
+      scikit-build
+      cmake
+      cython
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isLinux [
+      # On Linux the .so files ends up referring to libh3.so instead of the full
+      # Nix store path. I'm not sure why this is happening! On Darwin it works
+      # fine.
+      autoPatchelfHook
+    ];
 
   # This is not needed per-se, it's only added for autoPatchelfHook to work
   # correctly. See the note above ^^
@@ -53,7 +58,8 @@ buildPythonPackage rec {
         include_directories(${lib.getDev h3}/include/h3)
         link_directories(${h3}/lib)
       '';
-    in ''
+    in
+    ''
       rm -r src/h3lib
       substituteInPlace CMakeLists.txt --replace "add_subdirectory(src/h3lib)" "${cmakeCommands}"
     '';
diff --git a/pkgs/development/python-modules/h5io/default.nix b/pkgs/development/python-modules/h5io/default.nix
index e9f8af129f1c9..f41e815a6f21d 100644
--- a/pkgs/development/python-modules/h5io/default.nix
+++ b/pkgs/development/python-modules/h5io/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, numpy
-, h5py
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  numpy,
+  h5py,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -36,16 +37,14 @@ buildPythonPackage rec {
     h5py
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "h5io" ];
 
   meta = with lib; {
     description = "Read and write simple Python objects using HDF5";
     homepage = "https://github.com/h5io/h5io";
-    changelog = "https://github.com/h5io/h5io/releases/tag/${src.rev}";
+    changelog = "https://github.com/h5io/h5io/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = licenses.bsd3;
     maintainers = with maintainers; [ mbalatsko ];
   };
diff --git a/pkgs/development/python-modules/h5netcdf/default.nix b/pkgs/development/python-modules/h5netcdf/default.nix
index 334289b034e2d..cc43f6d6dff2d 100644
--- a/pkgs/development/python-modules/h5netcdf/default.nix
+++ b/pkgs/development/python-modules/h5netcdf/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, h5py
-, pytestCheckHook
-, netcdf4
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  h5py,
+  pytestCheckHook,
+  netcdf4,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    h5py
-  ];
+  propagatedBuildInputs = [ h5py ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -37,15 +36,13 @@ buildPythonPackage rec {
 
   dontUseSetuptoolsCheck = true;
 
-  pythonImportsCheck = [
-    "h5netcdf"
-  ];
+  pythonImportsCheck = [ "h5netcdf" ];
 
   meta = with lib; {
     description = "netCDF4 via h5py";
     homepage = "https://github.com/shoyer/h5netcdf";
     changelog = "https://github.com/h5netcdf/h5netcdf/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/h5py/default.nix b/pkgs/development/python-modules/h5py/default.nix
index 4afd562e033dc..14f7532f8c56d 100644
--- a/pkgs/development/python-modules/h5py/default.nix
+++ b/pkgs/development/python-modules/h5py/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, oldest-supported-numpy
-, setuptools
-, wheel
-, numpy
-, hdf5
-, cython_0
-, pkgconfig
-, mpi4py ? null
-, openssh
-, pytestCheckHook
-, cached-property
+{
+  lib,
+  fetchPypi,
+  fetchpatch,
+  buildPythonPackage,
+  pythonOlder,
+  setuptools,
+  numpy,
+  hdf5,
+  cython_0,
+  pkgconfig,
+  mpi4py ? null,
+  openssh,
+  pytestCheckHook,
+  pytest-mpi,
+  cached-property,
 }:
 
 assert hdf5.mpiSupport -> mpi4py != null && hdf5.mpi == mpi4py.mpi;
@@ -20,23 +21,37 @@ assert hdf5.mpiSupport -> mpi4py != null && hdf5.mpi == mpi4py.mpi;
 let
   mpi = hdf5.mpi;
   mpiSupport = hdf5.mpiSupport;
-in buildPythonPackage rec {
-  version = "3.10.0";
+in
+buildPythonPackage rec {
+  version = "3.11.0";
   pname = "h5py";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-2TrcSM7rMzR+skpjT7eH78euRkTm6kunM9CZYFBFwEk=";
+    hash = "sha256-e36PeAcqLt7IfJg28l80ID/UkqRHVwmhi0F6M8+yH6k=";
   };
 
-  # avoid strict pinning of numpy
+  patches = [
+    # Unlock an overly strict locking of mpi4py version (seems not to be necessary).
+    # See also: https://github.com/h5py/h5py/pull/2418/files#r1589372479
+    ./mpi4py-requirement.patch
+    # Fix 16-bit float dtype and tests on darwin (remove in next release)
+    (fetchpatch {
+      url = "https://github.com/h5py/h5py/commit/a27a1f49ce92d985e14b8a24fa80d30e5174add2.patch";
+      hash = "sha256-7TcmNSJucknq+Vnv4ViT6S0nWeH1+krarWxq6WXLYEA=";
+    })
+  ];
+
+  # avoid strict pinning of numpy, can't be replaced with pythonRelaxDepsHook,
+  # see: https://github.com/NixOS/nixpkgs/issues/327941
   postPatch = ''
-    substituteInPlace setup.py \
-      --replace "mpi4py ==" "mpi4py >="
+    substituteInPlace pyproject.toml \
+      --replace-fail "numpy >=2.0.0rc1" "numpy"
   '';
+  pythonRelaxDeps = [ "mpi4py" ];
 
   HDF5_DIR = "${hdf5}";
   HDF5_MPI = if mpiSupport then "ON" else "OFF";
@@ -51,30 +66,41 @@ in buildPythonPackage rec {
 
   nativeBuildInputs = [
     cython_0
-    oldest-supported-numpy
     pkgconfig
     setuptools
-    wheel
   ];
 
-  buildInputs = [ hdf5 ]
-    ++ lib.optional mpiSupport mpi;
+  buildInputs = [ hdf5 ] ++ lib.optional mpiSupport mpi;
 
-  propagatedBuildInputs = [ numpy ]
-    ++ lib.optionals mpiSupport [ mpi4py openssh ]
+  propagatedBuildInputs =
+    [ numpy ]
+    ++ lib.optionals mpiSupport [
+      mpi4py
+      openssh
+    ]
     ++ lib.optionals (pythonOlder "3.8") [ cached-property ];
 
-  # tests now require pytest-mpi, which isn't available and difficult to package
-  doCheck = false;
-  nativeCheckInputs = [ pytestCheckHook openssh ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-mpi
+    openssh
+  ];
+  # https://github.com/NixOS/nixpkgs/issues/255262
+  preCheck = ''
+    cd $out
+  '';
+  # For some reason these fail when mpi support is enabled, due to concurrent
+  # writings. There are a few open issues about this in the bug tracker, but
+  # not related to the tests.
+  disabledTests = lib.optionals mpiSupport [ "TestPageBuffering" ];
 
   pythonImportsCheck = [ "h5py" ];
 
-  meta = with lib; {
+  meta = {
     changelog = "https://github.com/h5py/h5py/blob/${version}/docs/whatsnew/${lib.versions.majorMinor version}.rst";
     description = "Pythonic interface to the HDF5 binary data format";
     homepage = "http://www.h5py.org/";
-    license = licenses.bsd3;
-    maintainers = [ ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ doronbehar ];
   };
 }
diff --git a/pkgs/development/python-modules/h5py/mpi4py-requirement.patch b/pkgs/development/python-modules/h5py/mpi4py-requirement.patch
new file mode 100644
index 0000000000000..b32e804ebe5ff
--- /dev/null
+++ b/pkgs/development/python-modules/h5py/mpi4py-requirement.patch
@@ -0,0 +1,13 @@
+diff --git a/setup.py b/setup.py
+index b1463422..7f0c7b10 100755
+--- a/setup.py
++++ b/setup.py
+@@ -47,7 +47,7 @@ if setup_configure.mpi_enabled():
+     # incompatible with newer setuptools.
+     RUN_REQUIRES.append('mpi4py >=3.1.1')
+     SETUP_REQUIRES.append("mpi4py ==3.1.1; python_version<'3.11'")
+-    SETUP_REQUIRES.append("mpi4py ==3.1.4; python_version>='3.11'")
++    SETUP_REQUIRES.append("mpi4py >=3.1.4; python_version>='3.11'")
+ 
+ # Set the environment variable H5PY_SETUP_REQUIRES=0 if we need to skip
+ # setup_requires for any reason.
diff --git a/pkgs/development/python-modules/ha-ffmpeg/default.nix b/pkgs/development/python-modules/ha-ffmpeg/default.nix
index 5a11243d594ed..991eaf9f602b2 100644
--- a/pkgs/development/python-modules/ha-ffmpeg/default.nix
+++ b/pkgs/development/python-modules/ha-ffmpeg/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, async-timeout
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  async-timeout,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,13 +19,9 @@ buildPythonPackage rec {
     hash = "sha256-FW8WlrhVL+ryupHAKii8fKBku/6uxdw1uLCKUszkP50=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    async-timeout
-  ];
+  propagatedBuildInputs = [ async-timeout ];
 
   # only manual tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/ha-mqtt-discoverable/default.nix b/pkgs/development/python-modules/ha-mqtt-discoverable/default.nix
index 1420362dc622f..32024f892556b 100644
--- a/pkgs/development/python-modules/ha-mqtt-discoverable/default.nix
+++ b/pkgs/development/python-modules/ha-mqtt-discoverable/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, gitlike-commands
-, paho-mqtt
-, poetry-core
-, pyaml
-, pydantic
-, pythonOlder
-, thelogrus
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gitlike-commands,
+  paho-mqtt,
+  poetry-core,
+  pyaml,
+  pydantic,
+  pythonOlder,
+  thelogrus,
 }:
 
 buildPythonPackage rec {
   pname = "ha-mqtt-discoverable";
-  version = "0.13.1";
+  version = "0.14.0";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -21,14 +22,15 @@ buildPythonPackage rec {
     owner = "unixorn";
     repo = "ha-mqtt-discoverable";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Ue8az6Q7uU02IJJyyHk64Ji4J6sf/bShvTeHhN9U92Y=";
+    hash = "sha256-vL4EzeU+8nUPyLR22MJtLhknWF4DWMo49EKvkIqIWhA=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  pythonRelaxDeps = [ "pyaml" ];
+
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+
+  dependencies = [
     gitlike-commands
     paho-mqtt
     pyaml
@@ -39,9 +41,7 @@ buildPythonPackage rec {
   # Test require a running Mosquitto instance
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ha_mqtt_discoverable"
-  ];
+  pythonImportsCheck = [ "ha_mqtt_discoverable" ];
 
   meta = with lib; {
     description = "Python module to create MQTT entities that are automatically discovered by Home Assistant";
@@ -49,6 +49,5 @@ buildPythonPackage rec {
     changelog = "https://github.com/unixorn/ha-mqtt-discoverable/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
-    broken = versionAtLeast pydantic.version "2";
   };
 }
diff --git a/pkgs/development/python-modules/ha-philipsjs/default.nix b/pkgs/development/python-modules/ha-philipsjs/default.nix
index 5530cfe070f1b..800c28f0651ac 100644
--- a/pkgs/development/python-modules/ha-philipsjs/default.nix
+++ b/pkgs/development/python-modules/ha-philipsjs/default.nix
@@ -1,30 +1,34 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, httpx
-, pytest-aiohttp
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, respx
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  httpx,
+  pytest-aiohttp,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  respx,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "ha-philipsjs";
-  version = "3.1.1";
-  format = "setuptools";
+  version = "3.2.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "danielperna84";
-    repo = pname;
+    repo = "ha-philipsjs";
     rev = "refs/tags/${version}";
-    hash = "sha256-r8uqToxkJg9j89UUZpxsPXutWPefAYDW95zFBKU9Al4=";
+    hash = "sha256-zP8cuXdhvCDvnbc20GbFwgickdqeJ17b0vk0zK8ze9Q=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     cryptography
     httpx
   ];
@@ -36,12 +40,10 @@ buildPythonPackage rec {
     respx
   ];
 
-  pythonImportsCheck = [
-    "haphilipsjs"
-  ];
+  pythonImportsCheck = [ "haphilipsjs" ];
 
   meta = with lib; {
-    description = "Python library to interact with Philips TVs with jointSPACE API";
+    description = "Library to interact with Philips TVs with jointSPACE API";
     homepage = "https://github.com/danielperna84/ha-philipsjs";
     changelog = "https://github.com/danielperna84/ha-philipsjs/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/habanero/default.nix b/pkgs/development/python-modules/habanero/default.nix
index 51dcfdcc91c7e..c08ffcd12132f 100644
--- a/pkgs/development/python-modules/habanero/default.nix
+++ b/pkgs/development/python-modules/habanero/default.nix
@@ -1,21 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools-scm
-, requests
-, tqdm
-, nose
-, vcrpy
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  requests,
+  tqdm,
+  vcrpy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "habanero";
   version = "1.2.6";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.7";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "sckott";
@@ -24,11 +21,9 @@ buildPythonPackage rec {
     hash = "sha256-Pw0TgXxDRmR565hdNGipfDZ7P32pxWkmPWfaYK0RaI4=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     requests
     tqdm
   ];
@@ -38,19 +33,15 @@ buildPythonPackage rec {
     vcrpy
   ];
 
-  pythonImportsCheck = [
-    "habanero"
-  ];
+  pythonImportsCheck = [ "habanero" ];
 
   # almost the entirety of the test suite makes network calls
-  pytestFlagsArray = [
-    "test/test-filters.py"
-  ];
+  pytestFlagsArray = [ "test/test-filters.py" ];
 
-  meta = with lib; {
+  meta = {
     description = "Python interface to Library Genesis";
     homepage = "https://habanero.readthedocs.io/";
-    license = licenses.mit;
-    maintainers = with maintainers; [ nico202 ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ nico202 ];
   };
 }
diff --git a/pkgs/development/python-modules/habitipy/default.nix b/pkgs/development/python-modules/habitipy/default.nix
index 5ec42c4df5e4a..980dc0726991b 100644
--- a/pkgs/development/python-modules/habitipy/default.nix
+++ b/pkgs/development/python-modules/habitipy/default.nix
@@ -1,27 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, plumbum
-, requests
-, setuptools
-, hypothesis
-, pynose
-, responses
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  plumbum,
+  requests,
+  setuptools,
+  hypothesis,
+  pytestCheckHook,
+  responses,
 }:
 
 buildPythonPackage rec {
   pname = "habitipy";
-  version = "0.3.0";
-  format = "setuptools";
+  version = "0.3.1";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "ASMfreaK";
     repo = "habitipy";
-    rev = "v${version}";
-    sha256 = "1vf485z5m4h61p64zr3sgkcil2s3brq7dja4n7m49d1fvzcirylv";
+    # TODO: https://github.com/ASMfreaK/habitipy/issues/27
+    rev = "faaca8840575fe8b807bf17acea6266d5ce92a99";
+    hash = "sha256-BGFUAntSNH0YYWn9nfKjIlpevF7MFs0csCPSp6IT6Ro=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     plumbum
     requests
     setuptools
@@ -29,14 +33,21 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     hypothesis
-    pynose
+    pytestCheckHook
     responses
   ];
 
-  checkPhase = ''
-    HOME=$TMPDIR nosetests
+  preCheck = ''
+    export HOME=$TMPDIR
   '';
 
+  disabledTests = [
+    # network access
+    "test_content_cache"
+    # hypothesis.errors.InvalidArgument: tests/test_cli.py::test_data is a function that returns a Hypothesis strategy, but pytest has collected it as a test function.
+    "test_data"
+  ];
+
   pythonImportsCheck = [ "habitipy" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/habluetooth/default.nix b/pkgs/development/python-modules/habluetooth/default.nix
index e84fa94ae0c12..a23e54ff53fda 100644
--- a/pkgs/development/python-modules/habluetooth/default.nix
+++ b/pkgs/development/python-modules/habluetooth/default.nix
@@ -1,46 +1,44 @@
-{ lib
-, bleak
-, bleak-retry-connector
-, bluetooth-adapters
-, bluetooth-auto-recovery
-, bluetooth-data-tools
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  async-interrupt,
+  bleak,
+  bleak-retry-connector,
+  bluetooth-adapters,
+  bluetooth-auto-recovery,
+  bluetooth-data-tools,
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "habluetooth";
-  version = "2.4.2";
+  version = "3.4.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.10";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "Bluetooth-Devices";
     repo = "habluetooth";
     rev = "refs/tags/v${version}";
-    hash = "sha256-IoVXmq9ShwLpGtoxVOtoirSirJJ1DqBI/mP7PmK7OUs=";
+    hash = "sha256-qmb7hfrcKWSs1dkyozuTPsVbI0cjVAJ9Em0JIIKsyck=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace " --cov=habluetooth --cov-report=term-missing:skip-covered" ""
-  '';
-
-  nativeBuildInputs = [
+  build-system = [
     cython
     poetry-core
     setuptools
-    wheel
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    async-interrupt
     bleak
     bleak-retry-connector
     bluetooth-adapters
@@ -49,12 +47,12 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
+    pytest-asyncio
+    pytest-cov-stub
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "habluetooth"
-  ];
+  pythonImportsCheck = [ "habluetooth" ];
 
   meta = with lib; {
     description = "Library for high availability Bluetooth";
diff --git a/pkgs/development/python-modules/hachoir/default.nix b/pkgs/development/python-modules/hachoir/default.nix
index 4480dd8932758..e6c3b64f8e62d 100644
--- a/pkgs/development/python-modules/hachoir/default.nix
+++ b/pkgs/development/python-modules/hachoir/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, urwid
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  urwid,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-sTUJx8Xyhw4Z6juRtREw/okuVjSTSVWpSLKeZ7T8IR8=";
   };
 
-  propagatedBuildInputs = [
-    urwid
-  ];
+  propagatedBuildInputs = [ urwid ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "hachoir"
-  ];
+  pythonImportsCheck = [ "hachoir" ];
 
   meta = with lib; {
     description = "Python library to view and edit a binary stream";
diff --git a/pkgs/development/python-modules/hacking/default.nix b/pkgs/development/python-modules/hacking/default.nix
index cd121822e651a..02690ec7b936f 100644
--- a/pkgs/development/python-modules/hacking/default.nix
+++ b/pkgs/development/python-modules/hacking/default.nix
@@ -1,37 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pbr
-, flake8
-, stestr
-, ddt
-, testscenarios
+{
+  lib,
+  buildPythonPackage,
+  ddt,
+  fetchPypi,
+  flake8,
+  pbr,
+  pythonOlder,
+  setuptools,
+  stestr,
+  testscenarios,
 }:
 
 buildPythonPackage rec {
   pname = "hacking";
-  version = "6.1.0";
-  format = "setuptools";
+  version = "7.0.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-3lBqMSQDThi046acld5JjDRgvLxJwWQ9MXjRW8barBQ=";
+    hash = "sha256-ubbC5SgPfVT6gsWP4JmD9oxbb2NKw/ozn4uhalcVyrc=";
   };
 
   postPatch = ''
     sed -i 's/flake8.*/flake8/' requirements.txt
-    substituteInPlace hacking/checks/python23.py \
-      --replace 'H236: class Foo(object):\n    __metaclass__ = \' 'Okay: class Foo(object):\n    __metaclass__ = \'
-    substituteInPlace hacking/checks/except_checks.py \
-      --replace 'H201: except:' 'Okay: except:'
   '';
 
-  nativeBuildInputs = [ pbr ];
-
-  propagatedBuildInputs = [
-    flake8
+  build-system = [
+    pbr
+    setuptools
   ];
 
+  dependencies = [ flake8 ];
+
   nativeCheckInputs = [
     ddt
     stestr
@@ -39,10 +41,9 @@ buildPythonPackage rec {
   ];
 
   checkPhase = ''
-    # tries to trigger flake8 and fails
-    rm hacking/tests/test_doctest.py
-
+    runHook preCheck
     stestr run
+    runHook postCheck
   '';
 
   pythonImportsCheck = [ "hacking" ];
diff --git a/pkgs/development/python-modules/hahomematic/default.nix b/pkgs/development/python-modules/hahomematic/default.nix
index be2dcf471e7ae..37c13fdfe1a5e 100644
--- a/pkgs/development/python-modules/hahomematic/default.nix
+++ b/pkgs/development/python-modules/hahomematic/default.nix
@@ -1,23 +1,22 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, freezegun
-, orjson
-, pydevccu
-, pytest-aiohttp
-, pytestCheckHook
-, python-slugify
-, pythonOlder
-, setuptools
-, voluptuous
-, websocket-client
-, xmltodict
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  orjson,
+  pydevccu,
+  pytest-aiohttp,
+  pytestCheckHook,
+  python-slugify,
+  pythonOlder,
+  setuptools,
+  voluptuous,
 }:
 
 buildPythonPackage rec {
   pname = "hahomematic";
-  version = "2024.4.12";
+  version = "2024.8.13";
   pyproject = true;
 
   disabled = pythonOlder "3.12";
@@ -26,7 +25,7 @@ buildPythonPackage rec {
     owner = "danielperna84";
     repo = "hahomematic";
     rev = "refs/tags/${version}";
-    hash = "sha256-iWl9kDLRh9CAk0tOibDOHcBV7lwVY/TWKYMBZW9G2k0=";
+    hash = "sha256-dojgIKF3AGkJm2USspV0rm8UZnTLxYf4dgt86WwonQk=";
   };
 
   __darwinAllowLocalNetworking = true;
@@ -37,9 +36,7 @@ buildPythonPackage rec {
       --replace-fail "wheel~=0.43.0" "wheel"
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     aiohttp
@@ -55,15 +52,16 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "hahomematic"
-  ];
+  pythonImportsCheck = [ "hahomematic" ];
 
   meta = with lib; {
     description = "Python module to interact with HomeMatic devices";
     homepage = "https://github.com/danielperna84/hahomematic";
     changelog = "https://github.com/danielperna84/hahomematic/blob/${src.rev}/changelog.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ dotlambda fab ];
+    maintainers = with maintainers; [
+      dotlambda
+      fab
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/hakuin/default.nix b/pkgs/development/python-modules/hakuin/default.nix
new file mode 100644
index 0000000000000..d8b9ff2441d02
--- /dev/null
+++ b/pkgs/development/python-modules/hakuin/default.nix
@@ -0,0 +1,42 @@
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jinja2,
+  nltk,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "hakuin";
+  version = "0-unstable-2024-03-31";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "pruzko";
+    repo = "hakuin";
+    rev = "3b7b76dcbfb8ab2b98e6dee08df02158327af772";
+    hash = "sha256-tRjo9a0ZCBjKxbXTkiKFzfL4pL5awF5vXmsJlYxwoIw=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    aiohttp
+    jinja2
+    nltk
+  ];
+
+  # Module has no test
+  doCheck = false;
+
+  pythonImportsCheck = [ "hakuin" ];
+
+  meta = with lib; {
+    description = "Blind SQL Injection optimization and automation framework";
+    homepage = "https://github.com/pruzko/hakuin";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/halo/default.nix b/pkgs/development/python-modules/halo/default.nix
index cc1d3022fcb83..a2372b73eb4cc 100644
--- a/pkgs/development/python-modules/halo/default.nix
+++ b/pkgs/development/python-modules/halo/default.nix
@@ -1,12 +1,14 @@
-{ buildPythonPackage
-, colorama
-, fetchPypi
-, isPy27
-, lib
-, log-symbols
-, six
-, spinners
-, termcolor }:
+{
+  buildPythonPackage,
+  colorama,
+  fetchPypi,
+  isPy27,
+  lib,
+  log-symbols,
+  six,
+  spinners,
+  termcolor,
+}:
 
 buildPythonPackage rec {
   pname = "halo";
@@ -19,14 +21,20 @@ buildPythonPackage rec {
     sha256 = "1mn97h370ggbc9vi6x8r6akd5q8i512y6kid2nvm67g93r9a6rvv";
   };
 
-  propagatedBuildInputs = [ colorama log-symbols termcolor six spinners ];
+  propagatedBuildInputs = [
+    colorama
+    log-symbols
+    termcolor
+    six
+    spinners
+  ];
 
   # Tests are not included in the PyPI distribution and the git repo does not have tagged releases
   doCheck = false;
   pythonImportsCheck = [ "halo" ];
 
   meta = with lib; {
-    description = "Beautiful Spinners for Terminal, IPython and Jupyter.";
+    description = "Beautiful Spinners for Terminal, IPython and Jupyter";
     homepage = "https://github.com/manrajgrover/halo";
     license = licenses.mit;
     maintainers = with maintainers; [ urbas ];
diff --git a/pkgs/development/python-modules/halohome/default.nix b/pkgs/development/python-modules/halohome/default.nix
index 2ef4acd0770d8..0b5ac1bf61f00 100644
--- a/pkgs/development/python-modules/halohome/default.nix
+++ b/pkgs/development/python-modules/halohome/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, bleak
-, buildPythonPackage
-, csrmesh
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  bleak,
+  buildPythonPackage,
+  csrmesh,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "halohome"
-  ];
+  pythonImportsCheck = [ "halohome" ];
 
   meta = with lib; {
     description = "Python library to control Eaton HALO Home Smart Lights";
diff --git a/pkgs/development/python-modules/handout/default.nix b/pkgs/development/python-modules/handout/default.nix
index b42a8f018a302..975e3003ba59f 100644
--- a/pkgs/development/python-modules/handout/default.nix
+++ b/pkgs/development/python-modules/handout/default.nix
@@ -1,5 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi
-, imageio, imageio-ffmpeg }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  imageio,
+  imageio-ffmpeg,
+}:
 
 buildPythonPackage rec {
   pname = "handout";
@@ -11,7 +16,10 @@ buildPythonPackage rec {
     sha256 = "52daaf1f9a4cb2ceb88c1dedf85d22ef449b9422b424a2534d21f941e57bc915";
   };
 
-  propagatedBuildInputs = [ imageio imageio-ffmpeg ];
+  propagatedBuildInputs = [
+    imageio
+    imageio-ffmpeg
+  ];
 
   meta = with lib; {
     description = "Turn Python scripts into handouts with Markdown and figures";
diff --git a/pkgs/development/python-modules/handy-archives/default.nix b/pkgs/development/python-modules/handy-archives/default.nix
new file mode 100644
index 0000000000000..079d2bc995553
--- /dev/null
+++ b/pkgs/development/python-modules/handy-archives/default.nix
@@ -0,0 +1,32 @@
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  flit-core,
+}:
+buildPythonPackage rec {
+  pname = "handy-archives";
+  version = "0.2.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit version;
+    pname = "handy_archives";
+    hash = "sha256-+6IRAf2eKdXjtygjJhqq4GuTUGhvDSBneG1k3Oc+s/Y=";
+  };
+
+  build-system = [ flit-core ];
+
+  dependencies =
+    [
+    ];
+
+  nativeCheckInputs = [ ];
+
+  meta = {
+    description = "Some handy archive helpers for Python.";
+    homepage = "https://github.com/domdfcoding/handy-archives";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tyberius-prime ];
+  };
+}
diff --git a/pkgs/development/python-modules/hankel/default.nix b/pkgs/development/python-modules/hankel/default.nix
new file mode 100644
index 0000000000000..ae04ed26f3c9c
--- /dev/null
+++ b/pkgs/development/python-modules/hankel/default.nix
@@ -0,0 +1,49 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  mpmath,
+  numpy,
+  scipy,
+  pytestCheckHook,
+  pytest-xdist,
+}:
+
+buildPythonPackage rec {
+  pname = "hankel";
+  version = "1.2.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "steven-murray";
+    repo = "hankel";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-/5PvbH8zz2siLS1YJYRSrl/Cpi0WToBu1TJhlek8VEE=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+  dependencies = [
+    mpmath
+    numpy
+    scipy
+  ];
+
+  pythonImportsCheck = [ "hankel" ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-xdist
+  ];
+
+  meta = {
+    description = "Implementation of Ogata's (2005) method for Hankel transforms";
+    homepage = "https://github.com/steven-murray/hankel";
+    changelog = "https://github.com/steven-murray/hankel/${src.rev}/CHANGELOG.rst";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/hap-python/default.nix b/pkgs/development/python-modules/hap-python/default.nix
index 0bb7f35e288f9..97b5c1f480e30 100644
--- a/pkgs/development/python-modules/hap-python/default.nix
+++ b/pkgs/development/python-modules/hap-python/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, base36
-, chacha20poly1305-reuseable
-, cryptography
-, fetchFromGitHub
-, h11
-, orjson
-, pyqrcode
-, pytest-asyncio
-, pytest-timeout
-, pytestCheckHook
-, pythonOlder
-, zeroconf
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  base36,
+  chacha20poly1305-reuseable,
+  cryptography,
+  fetchFromGitHub,
+  h11,
+  orjson,
+  pyqrcode,
+  pytest-asyncio,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonOlder,
+  zeroconf,
 }:
 
 buildPythonPackage rec {
@@ -47,8 +48,7 @@ buildPythonPackage rec {
     pytest-asyncio
     pytest-timeout
     pytestCheckHook
-  ]
-  ++ passthru.optional-dependencies.QRCode;
+  ] ++ passthru.optional-dependencies.QRCode;
 
   disabledTestPaths = [
     # Disable tests requiring network access
@@ -67,9 +67,7 @@ buildPythonPackage rec {
     "test_migration_to_include_client_properties"
   ];
 
-  pythonImportsCheck = [
-    "pyhap"
-  ];
+  pythonImportsCheck = [ "pyhap" ];
 
   meta = with lib; {
     description = "HomeKit Accessory Protocol implementation";
diff --git a/pkgs/development/python-modules/hass-client/default.nix b/pkgs/development/python-modules/hass-client/default.nix
new file mode 100644
index 0000000000000..29b1a94965c2a
--- /dev/null
+++ b/pkgs/development/python-modules/hass-client/default.nix
@@ -0,0 +1,56 @@
+{
+  aiodns,
+  aiohttp,
+  brotli,
+  buildPythonPackage,
+  faust-cchardet,
+  fetchFromGitHub,
+  lib,
+  orjson,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "hass-client";
+  version = "1.2.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "music-assistant";
+    repo = "python-hass-client";
+    rev = "refs/tags/${version}";
+    hash = "sha256-FA3acaXLWcBMDsabLPxVk6EArSxcTAnmFeO1ixTXB1Q=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
+    aiohttp
+  ];
+
+  optional-dependencies = {
+    speedups = [
+      aiodns
+      brotli
+      faust-cchardet
+      orjson
+    ];
+  };
+
+  pythonImportsCheck = [
+    "hass_client"
+  ];
+
+  # upstream has no tests
+  doCheck = false;
+
+  meta = {
+    changelog = "https://github.com/music-assistant/python-hass-client/releases/tag/${version}";
+    description = "Basic client for connecting to Home Assistant over websockets and REST";
+    homepage = "https://github.com/music-assistant/python-hass-client";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/hass-nabucasa/default.nix b/pkgs/development/python-modules/hass-nabucasa/default.nix
index ac32e43cf9322..62ccb7ef91d02 100644
--- a/pkgs/development/python-modules/hass-nabucasa/default.nix
+++ b/pkgs/development/python-modules/hass-nabucasa/default.nix
@@ -14,7 +14,6 @@
   pytest-timeout,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
   setuptools,
   snitun,
   syrupy,
@@ -23,7 +22,7 @@
 
 buildPythonPackage rec {
   pname = "hass-nabucasa";
-  version = "0.80.0";
+  version = "0.81.1";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -32,12 +31,11 @@ buildPythonPackage rec {
     owner = "nabucasa";
     repo = "hass-nabucasa";
     rev = "refs/tags/${version}";
-    hash = "sha256-8KxnS6LTK077/hr81JOiOj8GaNWBXO8XlvpYBm/sZbI=";
+    hash = "sha256-/sY/JijBCcGcbMjoX0yuhFIWvU+TFVN8sRxBx+CDVVs=";
   };
 
   pythonRelaxDeps = [ "acme" ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   build-system = [ setuptools ];
 
diff --git a/pkgs/development/python-modules/hass-splunk/default.nix b/pkgs/development/python-modules/hass-splunk/default.nix
new file mode 100644
index 0000000000000..b5183c52b145d
--- /dev/null
+++ b/pkgs/development/python-modules/hass-splunk/default.nix
@@ -0,0 +1,36 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  aiohttp,
+}:
+
+buildPythonPackage rec {
+  pname = "hass-splunk";
+  version = "0.1.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "Bre77";
+    repo = "hass_splunk";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-bgF6gHAA57MiWdmpwilGa+l05/ETKdpyi2naVagkRlc=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ aiohttp ];
+
+  pythonImportsCheck = [ "hass_splunk" ];
+
+  # upstream has no tests
+  doCheck = false;
+
+  meta = {
+    description = "Async single threaded connector to Splunk HEC using an asyncio session";
+    homepage = "https://github.com/Bre77/hass_splunk";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/hassil/default.nix b/pkgs/development/python-modules/hassil/default.nix
index 98c4181d48c21..30b18f8303663 100644
--- a/pkgs/development/python-modules/hassil/default.nix
+++ b/pkgs/development/python-modules/hassil/default.nix
@@ -1,42 +1,48 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# propagates
-, pyyaml
-, unicode-rbnf
+  # build-system
+  setuptools,
 
-# tests
-, pytestCheckHook
+  # dependencies
+  pyyaml,
+  unicode-rbnf,
+
+  # tests
+  pytestCheckHook,
 }:
 
 let
   pname = "hassil";
-  version = "1.6.1";
+  version = "1.7.4";
 in
 buildPythonPackage {
   inherit pname version;
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-jkPo02Jy6UqyC5YvwMw+DDkT8rG5Xe4EiNVED/JHzKc=";
+  src = fetchFromGitHub {
+    owner = "home-assistant";
+    repo = "hassil";
+    rev = "refs/tags/${version}";
+    hash = "sha256-FRP5iVE2KBiHVriWhnYxWFff0y4q2/gC9iO8ZzN3AbI=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     pyyaml
     unicode-rbnf
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    changelog  = "https://github.com/home-assistant/hassil/blob/v${version}/CHANGELOG.md";
+    changelog = "https://github.com/home-assistant/hassil/blob/${version}/CHANGELOG.md";
     description = "Intent parsing for Home Assistant";
     mainProgram = "hassil";
     homepage = "https://github.com/home-assistant/hassil";
diff --git a/pkgs/development/python-modules/hatasmota/default.nix b/pkgs/development/python-modules/hatasmota/default.nix
index 6dcd50f3c46a5..8b7c477c84947 100644
--- a/pkgs/development/python-modules/hatasmota/default.nix
+++ b/pkgs/development/python-modules/hatasmota/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, attrs
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, voluptuous
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  voluptuous,
 }:
 
 buildPythonPackage rec {
   pname = "hatasmota";
-  version = "0.8.0";
+  version = "0.9.2";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -18,12 +19,10 @@ buildPythonPackage rec {
     owner = "emontnemery";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-Kbz/ETSJGx6u0ZNfEWfl9klBIB3yPcfHGy1uKK50TGA=";
+    hash = "sha256-m40ZK1+cfWgrwWftFqExUZidCrbDMC1Sfshugqrp5QM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     attrs
@@ -33,9 +32,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "hatasmota"
-  ];
+  pythonImportsCheck = [ "hatasmota" ];
 
   meta = with lib; {
     description = "Python module to help parse and construct Tasmota MQTT messages";
diff --git a/pkgs/development/python-modules/hatch-fancy-pypi-readme/default.nix b/pkgs/development/python-modules/hatch-fancy-pypi-readme/default.nix
index b3f71b73eed34..2c96dd85be1ec 100644
--- a/pkgs/development/python-modules/hatch-fancy-pypi-readme/default.nix
+++ b/pkgs/development/python-modules/hatch-fancy-pypi-readme/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, build
-, hatchling
-, tomli
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  build,
+  hatchling,
+  tomli,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -22,17 +23,12 @@ buildPythonPackage rec {
     hash = "sha256-RN0jnxp3m53PjryUAaYR/X9+PhRXjc8iwmXfr3wVFLg=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
-  propagatedBuildInputs = [
-    hatchling
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  propagatedBuildInputs =
+    [ hatchling ]
+    ++ lib.optionals (pythonOlder "3.11") [ tomli ]
+    ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
   nativeCheckInputs = [
     build
@@ -41,13 +37,11 @@ buildPythonPackage rec {
 
   # Requires network connection
   disabledTests = [
-    "test_build"  # Requires internet
+    "test_build" # Requires internet
     "test_invalid_config"
   ];
 
-  pythonImportsCheck = [
-    "hatch_fancy_pypi_readme"
-  ];
+  pythonImportsCheck = [ "hatch_fancy_pypi_readme" ];
 
   meta = with lib; {
     description = "Fancy PyPI READMEs with Hatch";
diff --git a/pkgs/development/python-modules/hatch-jupyter-builder/default.nix b/pkgs/development/python-modules/hatch-jupyter-builder/default.nix
index 0c827ac42cd31..7a070285d382a 100644
--- a/pkgs/development/python-modules/hatch-jupyter-builder/default.nix
+++ b/pkgs/development/python-modules/hatch-jupyter-builder/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, pytest-mock
-, pytestCheckHook
-, tomli
-, twine
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  pytest-mock,
+  pytestCheckHook,
+  tomli,
+  twine,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,15 @@ buildPythonPackage rec {
     hash = "sha256-QDWHVdjtexUNGRL+dVehdBwahSW2HmNkZKkQyuOghyI=";
   };
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  dependencies = [
-    hatchling
-  ];
+  dependencies = [ hatchling ];
 
   nativeCheckInputs = [
     pytest-mock
     pytestCheckHook
     twine
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   disabledTests = [
     # tests pip install, which unsuprisingly fails
@@ -48,6 +43,6 @@ buildPythonPackage rec {
     mainProgram = "hatch-jupyter-builder";
     homepage = "https://github.com/jupyterlab/hatch-jupyter-builder";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/hatch-nodejs-version/default.nix b/pkgs/development/python-modules/hatch-nodejs-version/default.nix
index 806bffe56cc1e..2c0a724d939b0 100644
--- a/pkgs/development/python-modules/hatch-nodejs-version/default.nix
+++ b/pkgs/development/python-modules/hatch-nodejs-version/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, hatchling
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  hatchling,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-hknlb11DCe+b55CfF3Pr62ccWPxVrjQ197ZagSiH/zU=";
   };
 
-  propagatedBuildInputs = [
-    hatchling
-  ];
+  propagatedBuildInputs = [ hatchling ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "hatch_nodejs_version"
-  ];
+  pythonImportsCheck = [ "hatch_nodejs_version" ];
 
   meta = with lib; {
     description = "Plugins for dealing with NodeJS versions";
diff --git a/pkgs/development/python-modules/hatch-odoo/default.nix b/pkgs/development/python-modules/hatch-odoo/default.nix
new file mode 100644
index 0000000000000..e3c0c26dbebf8
--- /dev/null
+++ b/pkgs/development/python-modules/hatch-odoo/default.nix
@@ -0,0 +1,40 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatch-vcs,
+  hatchling,
+  lib,
+  manifestoo-core,
+  pythonOlder,
+  tomli,
+}:
+buildPythonPackage rec {
+  pname = "hatch-odoo";
+  version = "1.0.2";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "acsone";
+    repo = pname;
+    rev = "refs/tags/${version}";
+    sha256 = "sha256-I3jaiG0Xu8B34q30p7zTs+FeBXUQiPKTAJLSVxE9gYE=";
+  };
+
+  buildInputs = [hatch-vcs];
+
+  propagatedBuildInputs =
+    [
+      hatchling
+      manifestoo-core
+    ]
+    ++ lib.optionals (pythonOlder "3.11") [
+      tomli
+    ];
+
+  meta = with lib; {
+    description = "A hatch plugin to develop and package Odoo projects";
+    homepage = "https://github.com/acsone/hatch-odoo";
+    license = licenses.mit;
+    maintainers = with maintainers; [yajo];
+  };
+}
diff --git a/pkgs/development/python-modules/hatch-regex-commit/default.nix b/pkgs/development/python-modules/hatch-regex-commit/default.nix
new file mode 100644
index 0000000000000..5c8afe46301cb
--- /dev/null
+++ b/pkgs/development/python-modules/hatch-regex-commit/default.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "hatch-regex-commit";
+  version = "0.0.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "frankie567";
+    repo = "hatch-regex-commit";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-E0DIBBaDmTCsZQ41NcjcbzgJ16BwhdexlrGWBdf77oA=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail 'dynamic = ["version"]' 'version = "${version}"' \
+      --replace-fail ', "hatch-regex-commit"' "" \
+      --replace-fail " --cov-report=term-missing --cov-config=pyproject.toml --cov=hatch_regex_commit --cov=tests" ""
+  '';
+
+  build-system = [ hatchling ];
+
+  dependencies = [ hatchling ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "hatch_regex_commit" ];
+
+  meta = with lib; {
+    description = "Hatch plugin to create a commit and tag when bumping version";
+    homepage = "https://github.com/frankie567/hatch-regex-commit";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/hatch-requirements-txt/default.nix b/pkgs/development/python-modules/hatch-requirements-txt/default.nix
index 9995966805050..3d4c69fec005e 100644
--- a/pkgs/development/python-modules/hatch-requirements-txt/default.nix
+++ b/pkgs/development/python-modules/hatch-requirements-txt/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, packaging
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  packaging,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-Kd3rDfTBn/t/NiSJMPkHRWD5solUF7MAN8EiZokxHrk=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     hatchling
@@ -29,16 +28,13 @@ buildPythonPackage rec {
 
   doCheck = false; # missing coincidence dependency
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     changelog = "https://github.com/repo-helper/hatch-requirements-txt/releases/tag/${version}";
     description = "Hatchling plugin to read project dependencies from requirements.txt";
     homepage = "https://github.com/repo-helper/hatch-requirements-txt";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
-
diff --git a/pkgs/development/python-modules/hatch-vcs/default.nix b/pkgs/development/python-modules/hatch-vcs/default.nix
index 25884829b5d2b..ec89847abc248 100644
--- a/pkgs/development/python-modules/hatch-vcs/default.nix
+++ b/pkgs/development/python-modules/hatch-vcs/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, git
-, hatchling
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  git,
+  hatchling,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-CTgQdI/gHbDUUfq88sGsJojK79Iy1O3pZwkLHBsH2fc=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     hatchling
@@ -39,15 +38,18 @@ buildPythonPackage rec {
     # incompatible with setuptools-scm>=7
     # https://github.com/ofek/hatch-vcs/issues/8
     "test_write"
+  ] ++ lib.optionals (pythonOlder "3.11") [
+    # https://github.com/pypa/setuptools_scm/issues/1038, fixed in setuptools_scm@8.1.0
+    "test_basic"
+    "test_root"
+    "test_metadata"
   ];
 
-  pythonImportsCheck = [
-    "hatch_vcs"
-  ];
+  pythonImportsCheck = [ "hatch_vcs" ];
 
   meta = with lib; {
     changelog = "https://github.com/ofek/hatch-vcs/releases/tag/v${version}";
-    description = "A plugin for Hatch that uses your preferred version control system (like Git) to determine project versions";
+    description = "Plugin for Hatch that uses your preferred version control system (like Git) to determine project versions";
     homepage = "https://github.com/ofek/hatch-vcs";
     license = licenses.mit;
     maintainers = with maintainers; [ cpcloud ];
diff --git a/pkgs/development/python-modules/hatchling/default.nix b/pkgs/development/python-modules/hatchling/default.nix
index 4d5d345d625dd..069cd5374b4c3 100644
--- a/pkgs/development/python-modules/hatchling/default.nix
+++ b/pkgs/development/python-modules/hatchling/default.nix
@@ -1,32 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 
-# runtime
-, editables
-, packaging
-, pathspec
-, pluggy
-, tomli
-, trove-classifiers
+  # runtime
+  editables,
+  packaging,
+  pathspec,
+  pluggy,
+  tomli,
+  trove-classifiers,
 
-# tests
-, build
-, python
-, requests
-, virtualenv
+  # tests
+  build,
+  python,
+  requests,
+  virtualenv,
 }:
 
 buildPythonPackage rec {
   pname = "hatchling";
-  version = "1.22.4";
+  version = "1.25.0";
   format = "pyproject";
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ii3OyW1/uEg4LvWEjlrEP9rmQfNaCKP6tRFr1JXzQW4=";
+    hash = "sha256-cGRjGlEmELUiUKTT/xvYFVHW0UMcTre3LnNN9sdPQmI=";
   };
 
   # listed in backend/pyproject.toml
@@ -36,9 +37,7 @@ buildPythonPackage rec {
     pathspec
     pluggy
     trove-classifiers
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   pythonImportsCheck = [
     "hatchling"
@@ -71,6 +70,9 @@ buildPythonPackage rec {
     homepage = "https://hatch.pypa.io/latest/";
     changelog = "https://github.com/pypa/hatch/releases/tag/hatchling-v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ hexa ofek ];
+    maintainers = with maintainers; [
+      hexa
+      ofek
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/haversine/default.nix b/pkgs/development/python-modules/haversine/default.nix
index 68f3940a382b1..5264545cca5a7 100644
--- a/pkgs/development/python-modules/haversine/default.nix
+++ b/pkgs/development/python-modules/haversine/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,18 +22,14 @@ buildPythonPackage rec {
     hash = "sha256-MKOg2awpamupvuXstiH7VoIY4ax+hy2h2cFXDFKJ2mA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     numpy
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "haversine"
-  ];
+  pythonImportsCheck = [ "haversine" ];
 
   meta = with lib; {
     description = "Python module the distance between 2 points on earth";
diff --git a/pkgs/development/python-modules/hawkauthlib/default.nix b/pkgs/development/python-modules/hawkauthlib/default.nix
index 9df850b788297..ae7933207c3c9 100644
--- a/pkgs/development/python-modules/hawkauthlib/default.nix
+++ b/pkgs/development/python-modules/hawkauthlib/default.nix
@@ -1,28 +1,45 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, webob
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  requests,
+  webob,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "hawkauthlib";
   version = "0.1.1";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "mozilla-services";
-    repo = pname;
+    repo = "hawkauthlib";
     rev = "refs/tags/v${version}";
-    sha256 = "0mr1mpx4j9q7sch9arwfvpysnpf2p7ijy7072wilxm8pnj0bwvsi";
+    hash = "sha256-UW++gLQX1U4jFwccL+O5wl2r/d2OZ5Ug0wcnSfqtIVc=";
   };
 
-  propagatedBuildInputs = [ requests webob ];
+  postPatch = ''
+    substituteInPlace hawkauthlib/tests/* \
+        --replace-warn 'assertEquals' 'assertEqual'
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    requests
+    webob
+  ];
+
+  pythonImportsCheck = [ "hawkauthlib" ];
+
+  nativeCheckInputs = [ unittestCheckHook ];
 
   meta = with lib; {
     homepage = "https://github.com/mozilla-services/hawkauthlib";
     description = "Hawk Access Authentication protocol";
     license = licenses.mpl20;
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/farm-haystack/default.nix b/pkgs/development/python-modules/haystack-ai/default.nix
index e090778735d31..65227f54d5ab2 100644
--- a/pkgs/development/python-modules/farm-haystack/default.nix
+++ b/pkgs/development/python-modules/haystack-ai/default.nix
@@ -1,109 +1,108 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonRelaxDepsHook
-, hatchling
-, boilerpy3
-, events
-, httpx
-, jsonschema
-, lazy-imports
-, more-itertools
-, networkx
-, pandas
-, pillow
-, platformdirs
-, posthog
-, prompthub-py
-, pydantic
-, quantulum3
-, rank-bm25
-, requests
-, requests-cache
-, scikit-learn
-, sseclient-py
-, tenacity
-, tiktoken
-, tqdm
-, transformers
-, openai-whisper
-, boto3
-, botocore
-# , beir
-, selenium
-, coverage
-, dulwich
-# , jupytercontrib
-, mkdocs
-, mypy
-, pre-commit
-, psutil
-# , pydoc-markdown
-, pylint
-, pytest
-, pytest-asyncio
-, pytest-cov
-# , pytest-custom-exit-code
-, python-multipart
-, reno
-, responses
-, toml
-, tox
-, watchdog
-, elastic-transport
-, elasticsearch
-# , azure-ai-formrecognizer
-, beautifulsoup4
-, markdown
-, python-docx
-, python-frontmatter
-, python-magic
-, tika
-, black
-, huggingface-hub
-, sentence-transformers
-, mlflow
-, rapidfuzz
-, scipy
-, seqeval
-, pdf2image
-, pytesseract
-, faiss
-# , faiss-gpu
-, pinecone-client
-, onnxruntime
-, onnxruntime-tools
-# , onnxruntime-gpu
-, opensearch-py
-, pymupdf
-, langdetect
-, nltk
-, canals
-, jinja2
-, openai
-, aiorwlock
-, ray
-, psycopg2
-, sqlalchemy
-, sqlalchemy-utils
-, weaviate-client
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  boilerpy3,
+  events,
+  httpx,
+  jsonschema,
+  lazy-imports,
+  more-itertools,
+  networkx,
+  pandas,
+  pillow,
+  platformdirs,
+  posthog,
+  prompthub-py,
+  pydantic,
+  quantulum3,
+  rank-bm25,
+  requests,
+  requests-cache,
+  scikit-learn,
+  sseclient-py,
+  tenacity,
+  tiktoken,
+  tqdm,
+  transformers,
+  openai-whisper,
+  boto3,
+  botocore,
+  # , beir
+  selenium,
+  coverage,
+  dulwich,
+  # , jupytercontrib
+  mkdocs,
+  mypy,
+  pre-commit,
+  psutil,
+  # , pydoc-markdown
+  pylint,
+  pytest,
+  pytest-asyncio,
+  pytest-cov,
+  # , pytest-custom-exit-code
+  python-multipart,
+  reno,
+  responses,
+  toml,
+  tox,
+  watchdog,
+  elastic-transport,
+  elasticsearch,
+  # , azure-ai-formrecognizer
+  beautifulsoup4,
+  markdown,
+  python-docx,
+  python-frontmatter,
+  python-magic,
+  tika,
+  black,
+  huggingface-hub,
+  sentence-transformers,
+  mlflow,
+  rapidfuzz,
+  scipy,
+  seqeval,
+  pdf2image,
+  pytesseract,
+  faiss,
+  # , faiss-gpu
+  pinecone-client,
+  onnxruntime,
+  onnxruntime-tools,
+  # , onnxruntime-gpu
+  opensearch-py,
+  pymupdf,
+  langdetect,
+  nltk,
+  canals,
+  jinja2,
+  openai,
+  aiorwlock,
+  ray,
+  psycopg2,
+  sqlalchemy,
+  sqlalchemy-utils,
+  weaviate-client,
 }:
 
 buildPythonPackage rec {
-  pname = "farm-haystack";
-  version = "1.25.0";
+  pname = "haystack-ai";
+  version = "2.2.3";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "deepset-ai";
     repo = "haystack";
     rev = "refs/tags/v${version}";
-    hash = "sha256-lAXzWnHpOBVjgleFTYqlZ34hmZkcrPJ/h1kk4iVVvec=";
+    hash = "sha256-vaZ8bn36Eezf3/SnJ6ao0CvFZaHrpgbX+nM0IOqG2oo=";
   };
 
   nativeBuildInputs = [
     hatchling
-    pythonRelaxDepsHook
   ];
 
   pythonRemoveDeps = [
@@ -146,9 +145,7 @@ buildPythonPackage rec {
     # all-gpu = [
     #   farm-haystack
     # ];
-    audio = [
-      openai-whisper
-    ];
+    audio = [ openai-whisper ];
     aws = [
       boto3
       botocore
@@ -156,12 +153,8 @@ buildPythonPackage rec {
     # beir = [
     #   beir
     # ];
-    colab = [
-      pillow
-    ];
-    crawler = [
-      selenium
-    ];
+    colab = [ pillow ];
+    crawler = [ selenium ];
     dev = [
       coverage
       dulwich
@@ -201,9 +194,7 @@ buildPythonPackage rec {
       # python-magic-bin
       tika
     ];
-    formatting = [
-      black
-    ];
+    formatting = [ black ];
     inference = [
       huggingface-hub
       sentence-transformers
@@ -219,15 +210,11 @@ buildPythonPackage rec {
       pdf2image
       pytesseract
     ];
-    only-faiss = [
-      faiss
-    ];
+    only-faiss = [ faiss ];
     # only-faiss-gpu = [
     #   faiss-gpu
     # ];
-    only-pinecone = [
-      pinecone-client
-    ];
+    only-pinecone = [ pinecone-client ];
     onnx = [
       onnxruntime
       onnxruntime-tools
@@ -236,12 +223,8 @@ buildPythonPackage rec {
     #   onnxruntime-gpu
     #   onnxruntime-tools
     # ];
-    opensearch = [
-      opensearch-py
-    ];
-    pdf = [
-      pymupdf
-    ];
+    opensearch = [ opensearch-py ];
+    pdf = [ pymupdf ];
     preprocessing = [
       langdetect
       nltk
@@ -266,23 +249,20 @@ buildPythonPackage rec {
       sqlalchemy
       sqlalchemy-utils
     ];
-    weaviate = [
-      weaviate-client
-    ];
+    weaviate = [ weaviate-client ];
   };
 
   # the setup for test is intensive, hopefully can be done at some point
   doCheck = false;
 
-
   pythonImportsCheck = [ "haystack" ];
 
   meta = with lib; {
     description = "LLM orchestration framework to build customizable, production-ready LLM applications";
     longDescription = ''
-    LLM orchestration framework to build customizable, production-ready LLM applications. Connect components (models, vector DBs, file converters) to pipelines or agents that can interact with your data. With advanced retrieval methods, it's best suited for building RAG, question answering, semantic search or conversational agent chatbots
+      LLM orchestration framework to build customizable, production-ready LLM applications. Connect components (models, vector DBs, file converters) to pipelines or agents that can interact with your data. With advanced retrieval methods, it's best suited for building RAG, question answering, semantic search or conversational agent chatbots
     '';
-    changelog = "https://github.com/deepset-ai/haystack/releases/tag/${src.rev}";
+    changelog = "https://github.com/deepset-ai/haystack/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     homepage = "https://github.com/deepset-ai/haystack";
     license = licenses.asl20;
     maintainers = with maintainers; [ happysalada ];
diff --git a/pkgs/development/python-modules/hcloud/default.nix b/pkgs/development/python-modules/hcloud/default.nix
index 09d6f07756d6a..f3e0ae54c4ab8 100644
--- a/pkgs/development/python-modules/hcloud/default.nix
+++ b/pkgs/development/python-modules/hcloud/default.nix
@@ -1,30 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, future
-, mock
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  future,
+  mock,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "hcloud";
-  version = "1.35.0";
+  version = "2.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-sZSatje+UXt69r7Nv4QMR3IvlHHGuHDm813h72/Oo+M=";
+    hash = "sha256-3Bcvj+VkIdoU2AiGtbkgwrqwgb8RjHMqQxjBf03iWG4=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     future
@@ -37,9 +36,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "hcloud"
-  ];
+  pythonImportsCheck = [ "hcloud" ];
 
   meta = with lib; {
     description = "Library for the Hetzner Cloud API";
diff --git a/pkgs/development/python-modules/hcs-utils/default.nix b/pkgs/development/python-modules/hcs-utils/default.nix
index 2dc90870b6143..646e6a636cce7 100644
--- a/pkgs/development/python-modules/hcs-utils/default.nix
+++ b/pkgs/development/python-modules/hcs-utils/default.nix
@@ -1,33 +1,48 @@
-{ lib, pythonOlder, buildPythonPackage, fetchPypi, six, glibcLocales, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  six,
+  versioneer,
+}:
 
 buildPythonPackage rec {
   pname = "hcs-utils";
   version = "2.0";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     pname = "hcs_utils";
     inherit version;
-    sha256 = "04xq69hrys8lf9kp8pva0c4aphjjfw412km7c32ydkwq0i59rhp2";
+    hash = "sha256-4sKcSgSYz+bFYKdOEQh3UsKrCANqX3RnchRpn2EyuBM=";
   };
 
-  LC_ALL="en_US.UTF-8";
-
-  checkPhase = ''
-    # root does not has /root as home in sandbox
-    py.test -k 'not test_expand' hcs_utils/test
+  postPatch = ''
+    # Remove vendorized versioneer.py
+    rm versioneer.py
   '';
 
-  buildInputs = [ six glibcLocales ];
-  nativeCheckInputs = [ pytest ];
+  build-system = [
+    setuptools
+    versioneer
+  ];
+
+  dependencies = [ six ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabled = pythonOlder "3.4";
+  disabledTests = [ "test_expand" ];
 
   meta = with lib; {
     description = "Library collecting some useful snippets";
-    homepage    = "https://pypi.python.org/pypi/hcs_utils/1.3";
-    license     = licenses.isc;
+    homepage = "https://gitlab.com/hcs/hcs_utils";
+    license = licenses.isc;
     maintainers = with maintainers; [ lovek323 ];
-    platforms   = platforms.unix;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/hdate/default.nix b/pkgs/development/python-modules/hdate/default.nix
index 3c45b7ff08d66..9fe99f93b30e5 100644
--- a/pkgs/development/python-modules/hdate/default.nix
+++ b/pkgs/development/python-modules/hdate/default.nix
@@ -1,59 +1,52 @@
-{ lib
-, astral
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, pytz
+{
+  lib,
+  astral,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pdm-backend,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
 }:
 
 buildPythonPackage rec {
   pname = "hdate";
-  version = "0.10.4";
-  format = "pyproject";
+  version = "0.10.11";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "py-libhdate";
     repo = "py-libhdate";
     rev = "refs/tags/v${version}";
-    hash = "sha256-NF2ZA9ruW7sL2tLY11VAtyPRxGg2o5/mpv3ZsH/Zxb8=";
+    hash = "sha256-HmdXTvtNiIE2XPFhqs7WpcceEQU7F7RsLFp6/+63yDw=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace 'pytz = ">= 2020.0"' 'pytz = "*"' \
-      --replace 'astral = {version = "^2.2", python = "^3.6"}' 'astral = "*"'
-  '';
+  pythonRelaxDeps = [
+    "astral"
+  ];
 
-  nativeBuildInputs = [
-    poetry-core
+  build-system = [
+    pdm-backend
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     astral
     pytz
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests"
-  ];
+  pytestFlagsArray = [ "tests" ];
 
-  pythonImportsCheck = [
-    "hdate"
-  ];
+  pythonImportsCheck = [ "hdate" ];
 
   meta = with lib; {
     description = "Python module for Jewish/Hebrew date and Zmanim";
     homepage = "https://github.com/py-libhdate/py-libhdate";
     changelog = "https://github.com/py-libhdate/py-libhdate/releases/tag/v${version}";
-    license = with licenses; [ gpl3Plus ];
+    license = licenses.gpl3Plus;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/hdbscan/default.nix b/pkgs/development/python-modules/hdbscan/default.nix
index 0c6acf729f692..e56d4fd171237 100644
--- a/pkgs/development/python-modules/hdbscan/default.nix
+++ b/pkgs/development/python-modules/hdbscan/default.nix
@@ -1,30 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, cython
-, numpy
-, pytestCheckHook
-, scipy
-, scikit-learn
-, fetchPypi
-, joblib
-, six
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  numpy,
+  pytestCheckHook,
+  scipy,
+  scikit-learn,
+  fetchPypi,
+  joblib,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "hdbscan";
-  version = "0.8.33";
+  version = "0.8.37";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-V/q8Xw5F9I0kB7NccxGSq8iWN2QR/n5LuDb/oD04+Q0=";
+    hash = "sha256-3EeHE0DRhT5WnF2Pb4/IB+nDEx7dKRafx3pHBnSqibA=";
   };
 
   pythonRemoveDeps = [ "cython" ];
-  nativeBuildInputs = [ pythonRelaxDepsHook cython ];
-  propagatedBuildInputs = [ numpy scipy scikit-learn joblib six ];
+  nativeBuildInputs = [
+    cython
+  ];
+  propagatedBuildInputs = [
+    numpy
+    scipy
+    scikit-learn
+    joblib
+    six
+  ];
   preCheck = ''
     cd hdbscan/tests
     rm __init__.py
@@ -46,7 +53,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Hierarchical Density-Based Spatial Clustering of Applications with Noise, a clustering algorithm with a scikit-learn compatible API";
-    homepage =  "https://github.com/scikit-learn-contrib/hdbscan";
+    homepage = "https://github.com/scikit-learn-contrib/hdbscan";
     license = licenses.bsd3;
   };
 }
diff --git a/pkgs/development/python-modules/hdf5plugin/default.nix b/pkgs/development/python-modules/hdf5plugin/default.nix
index 7d4019d28ce29..5e139ab76cce7 100644
--- a/pkgs/development/python-modules/hdf5plugin/default.nix
+++ b/pkgs/development/python-modules/hdf5plugin/default.nix
@@ -1,31 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, h5py
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  py-cpuinfo,
+  h5py,
 }:
 
 buildPythonPackage rec {
   pname = "hdf5plugin";
-  version = "4.4.0";
-  format = "setuptools";
+  version = "5.0.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "silx-kit";
     repo = "hdf5plugin";
     rev = "refs/tags/v${version}";
-    hash = "sha256-MnqY1PyGzo31H696J9CekiA2rJrUYzUMDC3UJMZaFLA=";
+    hash = "sha256-6lEU8ZGJKazDqloel5QcaXAbNGzV1fAbAjYC/hFUOdI=";
   };
 
-  dependencies = [
-    h5py
+  build-system = [
+    setuptools
+    py-cpuinfo
   ];
 
+  dependencies = [ h5py ];
+
   checkPhase = ''
     python test/test.py
   '';
-  pythonImportsCheck = [
-    "hdf5plugin"
-  ];
+  pythonImportsCheck = [ "hdf5plugin" ];
 
   preBuild = ''
     mkdir src/hdf5plugin/plugins
@@ -41,5 +45,4 @@ buildPythonPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ pbsds ];
   };
-
 }
diff --git a/pkgs/development/python-modules/hdfs/default.nix b/pkgs/development/python-modules/hdfs/default.nix
index 2217ee5567cfc..c887d87178902 100644
--- a/pkgs/development/python-modules/hdfs/default.nix
+++ b/pkgs/development/python-modules/hdfs/default.nix
@@ -1,29 +1,39 @@
-{ buildPythonPackage
-, docopt
-, fastavro
-, fetchFromGitHub
-, lib
-, nose
-, pytestCheckHook
-, requests
-, six
+{
+  buildPythonPackage,
+  docopt,
+  fastavro,
+  fetchFromGitHub,
+  lib,
+  pytestCheckHook,
+  requests,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "hdfs";
   version = "2.7.3";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "mtth";
-    repo = pname;
+    repo = "hdfs";
     rev = "refs/tags/v${version}";
     hash = "sha256-Pm2E8hB0wbu7npi/sLt9D8jQsH69qNOHLji9CYqST/8=";
   };
 
-  propagatedBuildInputs = [ docopt requests six ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [ fastavro nose pytestCheckHook ];
+  dependencies = [
+    docopt
+    requests
+    six
+  ];
+
+  nativeCheckInputs = [
+    fastavro
+    pytestCheckHook
+  ];
 
   pythonImportsCheck = [ "hdfs" ];
 
@@ -33,5 +43,6 @@ buildPythonPackage rec {
     changelog = "https://github.com/mtth/hdfs/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ samuela ];
+    mainProgram = "hdfscli";
   };
 }
diff --git a/pkgs/development/python-modules/hdmedians/default.nix b/pkgs/development/python-modules/hdmedians/default.nix
index f2342aebfe011..0b175669db515 100644
--- a/pkgs/development/python-modules/hdmedians/default.nix
+++ b/pkgs/development/python-modules/hdmedians/default.nix
@@ -1,36 +1,56 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, cython
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cython,
+  numpy,
+  oldest-supported-numpy,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   version = "0.14.2";
-  format = "setuptools";
   pname = "hdmedians";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b47aecb16771e1ba0736557255d80ae0240b09156bff434321de559b359ac2d6";
+    hash = "sha256-tHrssWdx4boHNlVyVdgK4CQLCRVr/0NDId5VmzWawtY=";
   };
 
-  # nose was specified in setup.py as a build dependency...
-  buildInputs = [ cython nose ];
-  propagatedBuildInputs = [ numpy ];
+  patches = [
+    # https://github.com/daleroberts/hdmedians/pull/10
+    ./replace-nose.patch
+  ];
 
-  # cannot resolve path for packages in tests
-  doCheck = false;
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace-fail "'nose>=1.0'," ""
+  '';
+
+  build-system = [
+    cython
+    oldest-supported-numpy
+    setuptools
+  ];
+
+  dependencies = [ numpy ];
+
+  pythonImportsCheck = [ "hdmedians" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
 
-  checkPhase = ''
-    nosetests
+  preCheck = ''
+    cd $out
   '';
 
   meta = with lib; {
     homepage = "https://github.com/daleroberts/hdmedians";
     description = "High-dimensional medians";
-    license = licenses.gpl3;
+    license = licenses.asl20;
     maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/hdmedians/replace-nose.patch b/pkgs/development/python-modules/hdmedians/replace-nose.patch
new file mode 100644
index 0000000000000..3cf12e42e3491
--- /dev/null
+++ b/pkgs/development/python-modules/hdmedians/replace-nose.patch
@@ -0,0 +1,91 @@
+diff --git a/hdmedians/tests/test_geomedian.py b/hdmedians/tests/test_geomedian.py
+index 0bc37e9..ff5f938 100644
+--- a/hdmedians/tests/test_geomedian.py
++++ b/hdmedians/tests/test_geomedian.py
+@@ -4,9 +4,9 @@ Tests.
+ 
+ import numpy as np
+ import hdmedians as hd
++import pytest
+ 
+ from numpy.testing import assert_equal, assert_array_almost_equal
+-from nose.tools import assert_true, assert_raises
+ 
+ # shape (6, 25)
+ DATA1 = np.array([[693, 990, 1281, 2101, 3524, 2577],
+@@ -124,10 +124,12 @@ def test_nangeomedian_axis_one_two_good():
+ def test_nangeomedian_axis_bad():
+     data = np.array([[1.0, np.nan, 1.0],
+                      [2.0, 1.0, 1.0]])
+-    assert_raises(IndexError, hd.nangeomedian, data, axis=2)
++    with pytest.raises(IndexError):
++        hd.nangeomedian(data, axis=2)
+ 
+ 
+ def test_nangeomedian_all_nan():
+     data = np.array([[np.nan, np.nan, np.nan],
+                      [np.nan, np.nan, np.nan]])
+-    assert_raises(ValueError, hd.nangeomedian, data)
++    with pytest.raises(ValueError):
++        hd.nangeomedian(data)
+diff --git a/hdmedians/tests/test_medoid.py b/hdmedians/tests/test_medoid.py
+index c5e0a7f..4fbdf80 100644
+--- a/hdmedians/tests/test_medoid.py
++++ b/hdmedians/tests/test_medoid.py
+@@ -4,9 +4,9 @@ Tests.
+ 
+ import numpy as np
+ import hdmedians as hd
++import pytest
+ 
+ from numpy.testing import assert_equal, assert_array_almost_equal
+-from nose.tools import assert_true, assert_raises
+ 
+ # shape (6, 25)
+ DATA1 = np.array([[693, 990, 1281, 2101, 3524, 2577],
+@@ -59,7 +59,7 @@ def test_medoid_in_set_random():
+     s = [list(x) for x in a.T]
+     m = hd.medoid(a)
+     idx = s.index(list(m))
+-    assert_true(idx > -1)
++    assert(idx > -1)
+ 
+ 
+ def test_medoid_noaxis():
+@@ -85,7 +85,8 @@ def test_medoid_axis_one():
+ 
+ 
+ def test_medoid_axis_bad():
+-    assert_raises(IndexError, hd.medoid, DATA1, axis=2)
++    with pytest.raises(IndexError):
++        hd.medoid(DATA1, axis=2)
+ 
+ 
+ def test_medoid_noaxis_indexonly():
+@@ -136,7 +137,8 @@ def test_nanmedoid_two_obs():
+ def test_nanmedoid_all_nan():
+     data = np.array([[np.nan, np.nan, np.nan],
+                      [np.nan, np.nan, np.nan]])
+-    assert_raises(ValueError, hd.nanmedoid, data)
++    with pytest.raises(ValueError):
++        hd.nanmedoid(data)
+ 
+ 
+ def test_nanmedoid_axis_zero():
+@@ -170,7 +172,8 @@ def test_nanmedoid_axis_one_indexonly():
+ 
+ 
+ def test_nanmedoid_axis_bad():
+-    assert_raises(IndexError, hd.nanmedoid, DATA1, axis=2)
++    with pytest.raises(IndexError):
++        hd.nanmedoid(DATA1, axis=2)
+ 
+ 
+ def test_nanmedoid_two_obs():
+@@ -184,4 +187,5 @@ def test_nanmedoid_two_obs():
+ def test_nanmedoid_all_nan():
+     data = np.array([[np.nan, np.nan, np.nan],
+                      [np.nan, np.nan, np.nan]])
+-    assert_raises(ValueError, hd.nanmedoid, data)
++    with pytest.raises(ValueError):
++        hd.nanmedoid(data)
diff --git a/pkgs/development/python-modules/headerparser/default.nix b/pkgs/development/python-modules/headerparser/default.nix
index 71cad63ef70f7..d75e26f955113 100644
--- a/pkgs/development/python-modules/headerparser/default.nix
+++ b/pkgs/development/python-modules/headerparser/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, attrs
-, buildPythonPackage
-, deprecated
-, fetchFromGitHub
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  deprecated,
+  fetchFromGitHub,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-CWXha7BYVO5JFuhWP8OZ95fhUsZ3Jo0cgPAM+O5bfec=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     attrs
@@ -37,9 +36,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "headerparser"
-  ];
+  pythonImportsCheck = [ "headerparser" ];
 
   meta = with lib; {
     description = "Module to parse key-value pairs in the style of RFC 822 (e-mail) headers";
diff --git a/pkgs/development/python-modules/heapdict/default.nix b/pkgs/development/python-modules/heapdict/default.nix
index 44852a3bf4bde..e2a7aa3ed44c9 100644
--- a/pkgs/development/python-modules/heapdict/default.nix
+++ b/pkgs/development/python-modules/heapdict/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+}:
 
 buildPythonPackage rec {
   pname = "heapdict";
@@ -13,7 +18,7 @@ buildPythonPackage rec {
   doCheck = !isPy3k;
 
   meta = with lib; {
-    description = "a heap with decrease-key and increase-key operations.";
+    description = "Heap with decrease-key and increase-key operations";
     homepage = "http://stutzbachenterprises.com";
     license = licenses.bsd3;
     maintainers = with maintainers; [ teh ];
diff --git a/pkgs/development/python-modules/heatmiserv3/default.nix b/pkgs/development/python-modules/heatmiserv3/default.nix
new file mode 100644
index 0000000000000..5d7ed86f225bc
--- /dev/null
+++ b/pkgs/development/python-modules/heatmiserv3/default.nix
@@ -0,0 +1,46 @@
+{
+  appdirs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  importlib-resources,
+  lib,
+  poetry-core,
+  pyserial,
+  pyserial-asyncio,
+  pytestCheckHook,
+  pyyaml,
+}:
+
+buildPythonPackage rec {
+  pname = "heatmiserv3";
+  version = "2.0.3";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "andylockran";
+    repo = "heatmiserV3";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Ia0QUMDvuvn2af52lW7ObSQ9MSPNOgWyBuFBnqfYrpM=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    appdirs
+    importlib-resources
+    pyserial
+    pyserial-asyncio
+    pyyaml
+  ];
+
+  pythonImportsCheck = [ "heatmiserv3" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "Library to interact with Heatmiser Themostats using V3 protocol";
+    homepage = "https://github.com/andylockran/heatmiserV3";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/heatshrink2/default.nix b/pkgs/development/python-modules/heatshrink2/default.nix
index dd37c7c0c0ad7..034857ba63613 100644
--- a/pkgs/development/python-modules/heatshrink2/default.nix
+++ b/pkgs/development/python-modules/heatshrink2/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-JthHYq78SYr49+sTNtLZ8GjtrHcr1dzXcPskTrb4M3o=";
   };
 
-  pythonImportsCheck = [
-    "heatshrink2"
-  ];
+  pythonImportsCheck = [ "heatshrink2" ];
 
   meta = with lib; {
     description = "Compression using the Heatshrink algorithm";
diff --git a/pkgs/development/python-modules/heatzypy/default.nix b/pkgs/development/python-modules/heatzypy/default.nix
index 843c8cbf1348b..4227da42494dd 100644
--- a/pkgs/development/python-modules/heatzypy/default.nix
+++ b/pkgs/development/python-modules/heatzypy/default.nix
@@ -3,7 +3,6 @@
   aiohttp,
   buildPythonPackage,
   fetchFromGitHub,
-  pytestCheckHook,
   pythonOlder,
   setuptools,
   setuptools-scm,
@@ -11,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "heatzypy";
-  version = "2.5.4";
+  version = "2.5.5";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -20,7 +19,7 @@ buildPythonPackage rec {
     owner = "Cyr-ius";
     repo = "heatzypy";
     rev = "refs/tags/${version}";
-    hash = "sha256-A01e3duNQmVv9vyOs6+gF/BdevLiYi/uXSq5bKmuRao=";
+    hash = "sha256-S1wIVeUTbtF5omImt38YNvZEutyCEYMGExccs0FIK44=";
   };
 
   build-system = [
diff --git a/pkgs/development/python-modules/help2man/default.nix b/pkgs/development/python-modules/help2man/default.nix
index edcd479458fef..df9398fcb265d 100644
--- a/pkgs/development/python-modules/help2man/default.nix
+++ b/pkgs/development/python-modules/help2man/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, jinja2
-, setuptools-scm
-, shtab
-, tomli
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  jinja2,
+  setuptools-scm,
+  shtab,
+  tomli,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -30,13 +31,9 @@ buildPythonPackage rec {
     tomli
   ];
 
-  propagatedBuildInputs = [
-    jinja2
-  ];
+  propagatedBuildInputs = [ jinja2 ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "help2man" ];
 
diff --git a/pkgs/development/python-modules/helpdev/default.nix b/pkgs/development/python-modules/helpdev/default.nix
index 160797c9327ca..2faf262f6ed24 100644
--- a/pkgs/development/python-modules/helpdev/default.nix
+++ b/pkgs/development/python-modules/helpdev/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, importlib-metadata
-, psutil
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  importlib-metadata,
+  psutil,
 }:
 
 buildPythonPackage rec {
@@ -28,5 +29,4 @@ buildPythonPackage rec {
     mainProgram = "helpdev";
     license = lib.licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/helper/default.nix b/pkgs/development/python-modules/helper/default.nix
index 7d55d498d5d47..930d743b7bf00 100644
--- a/pkgs/development/python-modules/helper/default.nix
+++ b/pkgs/development/python-modules/helper/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyyaml
-, pytestCheckHook
-, mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyyaml,
+  pytestCheckHook,
+  mock,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     sha256 = "0zypjv8rncvrsgl200v7d3bn08gs48dwqvgamfqv71h07cj6zngp";
   };
 
-  propagatedBuildInputs = [
-    pyyaml
-  ];
+  propagatedBuildInputs = [ pyyaml ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/hepunits/default.nix b/pkgs/development/python-modules/hepunits/default.nix
index 8089deecf0068..8664d4b23665b 100644
--- a/pkgs/development/python-modules/hepunits/default.nix
+++ b/pkgs/development/python-modules/hepunits/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatch-vcs
-, hatchling
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatch-vcs,
+  hatchling,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "hepunits";
-  version = "2.3.3";
+  version = "2.3.4";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Z9fMd81U1ytpwmpo5e+teEK29o+ovGJ7uQ5BF3q+aUU=";
+    hash = "sha256-qEK4hqZ7oFY6NHFVJ3z9yPtnAggjNmG8urnyip34zWA=";
   };
 
   nativeBuildInputs = [
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hatchling
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = {
     description = "Units and constants in the HEP system of units";
@@ -32,4 +31,3 @@ buildPythonPackage rec {
     maintainers = with lib.maintainers; [ doronbehar ];
   };
 }
-
diff --git a/pkgs/development/python-modules/here-routing/default.nix b/pkgs/development/python-modules/here-routing/default.nix
index c1ca069b51d6e..d8e6e4a3c8009 100644
--- a/pkgs/development/python-modules/here-routing/default.nix
+++ b/pkgs/development/python-modules/here-routing/default.nix
@@ -1,40 +1,39 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, aiohttp
-, async-timeout
-, yarl
-, aresponses
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  hatchling,
+  aiohttp,
+  async-timeout,
+  yarl,
+  aresponses,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "here-routing";
-  version = "1.0.0";
+  version = "1.0.1";
 
   disabled = pythonOlder "3.10";
 
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "eifinger";
     repo = "here_routing";
     rev = "v${version}";
-    hash = "sha256-wdjPbM9J+2q3NisdlOHIddSWHHIfwQY/83v6IBAXSq0=";
+    hash = "sha256-sdNs5QNYvL1Cpbk9Yi+7PSiDZ6LEgAXQ19IYSAY78p0=";
   };
 
   postPatch = ''
     sed -i "/^addopts/d" pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     async-timeout
     yarl
@@ -49,7 +48,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "here_routing" ];
 
   meta = {
-    changelog = "https://github.com/eifinger/here_routing/blob/${src.rev}/CHANGELOG.md";
+    changelog = "https://github.com/eifinger/here_routing/releases/tag/v${version}";
     description = "Asynchronous Python client for the HERE Routing V8 API";
     homepage = "https://github.com/eifinger/here_routing";
     license = lib.licenses.mit;
diff --git a/pkgs/development/python-modules/here-transit/default.nix b/pkgs/development/python-modules/here-transit/default.nix
index 638f46af434f1..2aae9b51fe53d 100644
--- a/pkgs/development/python-modules/here-transit/default.nix
+++ b/pkgs/development/python-modules/here-transit/default.nix
@@ -1,40 +1,39 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, aiohttp
-, async-timeout
-, yarl
-, aresponses
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  hatchling,
+  aiohttp,
+  async-timeout,
+  yarl,
+  aresponses,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "here-transit";
-  version = "1.2.0";
+  version = "1.2.1";
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.10";
 
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "eifinger";
     repo = "here_transit";
     rev = "v${version}";
-    hash = "sha256-C5HZZCmK9ILUUXyx1i/cUggSM3xbOzXiJ13hrT2DWAI=";
+    hash = "sha256-fORg1iqRcD75Is1EW9XeAu8astibypmnNXo3vHduQdk=";
   };
 
   postPatch = ''
     sed -i "/^addopts/d" pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     async-timeout
     yarl
@@ -49,7 +48,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "here_transit" ];
 
   meta = {
-    changelog = "https://github.com/eifinger/here_transit/blob/${src.rev}/CHANGELOG.md";
+    changelog = "https://github.com/eifinger/here_transit/releases/tag/v${version}";
     description = "Asynchronous Python client for the HERE Routing V8 API";
     homepage = "https://github.com/eifinger/here_transit";
     license = lib.licenses.mit;
diff --git a/pkgs/development/python-modules/herepy/default.nix b/pkgs/development/python-modules/herepy/default.nix
index ac7ad29191391..64c39bb8f830a 100644
--- a/pkgs/development/python-modules/herepy/default.nix
+++ b/pkgs/development/python-modules/herepy/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, requests
-, pytestCheckHook
-, responses
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  requests,
+  pytestCheckHook,
+  responses,
 }:
 
 buildPythonPackage rec {
   pname = "herepy";
-  version = "3.6.2";
+  version = "3.6.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,25 +20,19 @@ buildPythonPackage rec {
     owner = "abdullahselek";
     repo = "HerePy";
     rev = "refs/tags/${version}";
-    hash = "sha256-+DI9wjYVAUKdGEXWhbV9Xp0oOazcB+sS89ugIZuZM2w=";
+    hash = "sha256-ht4EZBfREU7tDNo6tCPyECjm0H+yuhjsfJ60M4ss0jE=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    requests
-  ];
+  dependencies = [ requests ];
 
   nativeCheckInputs = [
     pytestCheckHook
     responses
   ];
 
-  pythonImportsCheck = [
-    "herepy"
-  ];
+  pythonImportsCheck = [ "herepy" ];
 
   meta = with lib; {
     changelog = "https://github.com/abdullahselek/HerePy/releases/tag/${version}";
diff --git a/pkgs/development/python-modules/hetzner/default.nix b/pkgs/development/python-modules/hetzner/default.nix
index 07b8f0ed2d423..fd4eb8496ce94 100644
--- a/pkgs/development/python-modules/hetzner/default.nix
+++ b/pkgs/development/python-modules/hetzner/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/heudiconv/default.nix b/pkgs/development/python-modules/heudiconv/default.nix
index 9c78027e0a83f..698bf15e02ec7 100644
--- a/pkgs/development/python-modules/heudiconv/default.nix
+++ b/pkgs/development/python-modules/heudiconv/default.nix
@@ -1,52 +1,51 @@
-{ lib
-, buildPythonPackage
-, datalad
-, dcm2niix
-, dcmstack
-, etelemetry
-, fetchPypi
-, filelock
-, git
-, nibabel
-, nipype
-, pydicom
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, versioningit
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  datalad,
+  dcm2niix,
+  dcmstack,
+  etelemetry,
+  fetchPypi,
+  filelock,
+  git,
+  nibabel,
+  nipype,
+  pydicom,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  versioningit,
 }:
 
 buildPythonPackage rec {
   pname = "heudiconv";
-  version = "1.1.0";
-  format = "pyproject";
+  version = "1.1.6";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-zRLRdP3LpytHCTrehhPYMmJnss5v6ojjkIPuB8fKR5w=";
+    hash = "sha256-hCHG5zpoEx4w7Jq842RWwMtsn5NskPq/Wahp4neOun4=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "versioningit ~=" "versioningit >="
+      --replace-fail "versioningit ~=" "versioningit >="
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     versioningit
-    wheel
   ];
 
-  propagatedBuildInputs = [
-    nibabel
-    pydicom
-    nipype
+  dependencies = [
     dcmstack
     etelemetry
     filelock
+    nibabel
+    nipype
+    pydicom
   ];
 
   nativeCheckInputs = [
@@ -60,13 +59,16 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d)
   '';
 
-  pythonImportsCheck = [
-    "heudiconv"
+  pythonImportsCheck = [ "heudiconv" ];
+
+  disabledTests = [
+    # No such file or directory
+    "test_bvals_are_zero"
   ];
 
   meta = with lib; {
-    homepage = "https://heudiconv.readthedocs.io";
     description = "Flexible DICOM converter for organizing imaging data";
+    homepage = "https://heudiconv.readthedocs.io";
     changelog = "https://github.com/nipy/heudiconv/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ bcdarwin ];
diff --git a/pkgs/development/python-modules/hexbytes/default.nix b/pkgs/development/python-modules/hexbytes/default.nix
index 654471ca0f297..5d0845c9725b8 100644
--- a/pkgs/development/python-modules/hexbytes/default.nix
+++ b/pkgs/development/python-modules/hexbytes/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, eth-utils
-, hypothesis
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  eth-utils,
+  hypothesis,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-8st1nQiGApt+aNl8/cftYk0ZzA+MxbLyGi53UWUlAjM=";
   };
 
-  build-system = [ setuptools];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     eth-utils
@@ -29,15 +30,13 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "hexbytes"
-  ];
+  pythonImportsCheck = [ "hexbytes" ];
 
   meta = with lib; {
     description = "`bytes` subclass that decodes hex, with a readable console output";
     homepage = "https://github.com/ethereum/hexbytes";
     changelog = "https://github.com/ethereum/hexbytes/blob/v${version}/docs/release_notes.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/hexdump/default.nix b/pkgs/development/python-modules/hexdump/default.nix
index 7ebf919038b25..0a2c57ab7bbbf 100644
--- a/pkgs/development/python-modules/hexdump/default.nix
+++ b/pkgs/development/python-modules/hexdump/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "hexdump";
@@ -29,6 +33,9 @@ buildPythonPackage rec {
     description = "Library to dump binary data to hex format and restore from there";
     homepage = "https://pypi.org/project/hexdump/"; # BitBucket site returns 404
     license = licenses.publicDomain;
-    maintainers = with maintainers; [ frogamic sbruder ];
+    maintainers = with maintainers; [
+      frogamic
+      sbruder
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/hfst/default.nix b/pkgs/development/python-modules/hfst/default.nix
index 8b720c12a9a94..37869ffad3e3e 100644
--- a/pkgs/development/python-modules/hfst/default.nix
+++ b/pkgs/development/python-modules/hfst/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, pkgs
-, stdenv
-, buildPythonPackage
-, foma
-, icu
-, swig
+{
+  lib,
+  pkgs,
+  stdenv,
+  buildPythonPackage,
+  foma,
+  icu,
+  swig,
 }:
 
 buildPythonPackage rec {
@@ -19,21 +20,17 @@ buildPythonPackage rec {
     sed -i 's/libhfst_swig/hfst/' setup.py;
   '';
 
-  nativeBuildInputs = [
-    swig
-  ];
+  nativeBuildInputs = [ swig ];
 
   buildInputs = [
     icu
     pkgs.hfst
   ];
 
-  setupPyBuildFlags = [
-    "--inplace"
-  ];
+  setupPyBuildFlags = [ "--inplace" ];
 
   # Find foma in Darwin tests
-  preCheck = lib.optionalString stdenv.isDarwin ''
+  preCheck = lib.optionalString stdenv.hostPlatform.isDarwin ''
     export DYLD_LIBRARY_PATH="${foma}/lib"
   '';
 
diff --git a/pkgs/development/python-modules/hg-commitsigs/default.nix b/pkgs/development/python-modules/hg-commitsigs/default.nix
index 7a97bff33316b..be96f45368ac2 100644
--- a/pkgs/development/python-modules/hg-commitsigs/default.nix
+++ b/pkgs/development/python-modules/hg-commitsigs/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, fetchhg
-, stdenv
-, python
+{
+  lib,
+  fetchhg,
+  stdenv,
+  python,
 }:
 
 stdenv.mkDerivation rec {
diff --git a/pkgs/development/python-modules/hg-evolve/default.nix b/pkgs/development/python-modules/hg-evolve/default.nix
index 8a1e07c574f80..4ff230e62cd11 100644
--- a/pkgs/development/python-modules/hg-evolve/default.nix
+++ b/pkgs/development/python-modules/hg-evolve/default.nix
@@ -1,22 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mercurial
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mercurial,
 }:
 
 buildPythonPackage rec {
   pname = "hg-evolve";
-  version = "11.1.3";
+  version = "11.1.4";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-WUPOok/tpZJSookzCIEHRKAlTzeZ6RJY0IiclgQUOs8=";
+    hash = "sha256-Yph2g254fSnPVfgmkmeRSqlmsUfHgP+wqN0GHLIV/wc=";
   };
 
-  nativeCheckInputs = [
-    mercurial
-  ];
+  nativeCheckInputs = [ mercurial ];
 
   checkPhase = ''
     runHook preCheck
@@ -54,7 +53,10 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Enables the “changeset evolution” feature of Mercurial core";
     homepage = "https://www.mercurial-scm.org/doc/evolution/";
-    maintainers = with maintainers; [ xavierzwirtz lukegb ];
+    maintainers = with maintainers; [
+      xavierzwirtz
+      lukegb
+    ];
     license = licenses.gpl2Plus;
   };
 }
diff --git a/pkgs/development/python-modules/hg-git/default.nix b/pkgs/development/python-modules/hg-git/default.nix
index 86145ee03ab4d..25ed4d5d95052 100644
--- a/pkgs/development/python-modules/hg-git/default.nix
+++ b/pkgs/development/python-modules/hg-git/default.nix
@@ -1,36 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, dulwich
-, mercurial
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  dulwich,
+  mercurial,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "hg-git";
-  version = "1.1.1";
-  format = "pyproject";
+  version = "1.1.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-r04Q6zbt8VM1jYkoGOdJZqKPPxXy4jC1X1d9nJ+fEWY=";
+    pname = "hg_git";
+    inherit version;
+    hash = "sha256-BZzcElZa0pMBSGXSiSB+d+YFhJMM5PAdT2Txq5qLZCU=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dulwich
     mercurial
   ];
 
-  pythonImportsCheck = [
-    "hggit"
-  ];
+  pythonImportsCheck = [ "hggit" ];
 
   meta = with lib; {
     description = "Push and pull from a Git server using Mercurial";
diff --git a/pkgs/development/python-modules/hickle/default.nix b/pkgs/development/python-modules/hickle/default.nix
index ec802955c0d3d..4837f210b3f65 100644
--- a/pkgs/development/python-modules/hickle/default.nix
+++ b/pkgs/development/python-modules/hickle/default.nix
@@ -10,6 +10,7 @@
   scipy,
   pandas,
   pytestCheckHook,
+  pytest-cov-stub,
   setuptools,
 }:
 
@@ -18,18 +19,13 @@ buildPythonPackage rec {
   version = "5.0.3";
   pyproject = true;
 
-  disabled = pythonOlder "3.5";
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-An5RzK0nnRaBI6JEUl5shLrA22RgWzEbC9NJiRvgxT4=";
   };
 
-  postPatch = ''
-    substituteInPlace tox.ini \
-      --replace-fail "--cov=./hickle" ""
-  '';
-
   build-system = [ setuptools ];
 
   dependencies = [
@@ -42,22 +38,12 @@ buildPythonPackage rec {
     astropy
     pandas
     pytestCheckHook
+    pytest-cov-stub
     scipy
   ];
 
   pythonImportsCheck = [ "hickle" ];
 
-  disabledTests = [
-    # broken in 5.0.2 with recent NumPy
-    # see https://github.com/telegraphic/hickle/issues/174
-    "test_scalar_compression"
-    # broken in 5.0.2 with Python 3.11
-    # see https://github.com/telegraphic/hickle/issues/169
-    "test_H5NodeFilterProxy"
-    # broken in 5.0.2
-    "test_slash_dict_keys"
-  ];
-
   meta = with lib; {
     description = "Serialize Python data to HDF5";
     homepage = "https://github.com/telegraphic/hickle";
diff --git a/pkgs/development/python-modules/hid-parser/default.nix b/pkgs/development/python-modules/hid-parser/default.nix
index dc0bbb433fd11..1106accebf073 100644
--- a/pkgs/development/python-modules/hid-parser/default.nix
+++ b/pkgs/development/python-modules/hid-parser/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pytest7CheckHook
-, hypothesis
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytest7CheckHook,
+  hypothesis,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-zbm+h+ieDmd1K0uH+9B8EWtYScxqYJXVpY9bXdBivA4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pytest7CheckHook
diff --git a/pkgs/development/python-modules/hid/default.nix b/pkgs/development/python-modules/hid/default.nix
index deb4006dfe78a..e1232bc85934c 100644
--- a/pkgs/development/python-modules/hid/default.nix
+++ b/pkgs/development/python-modules/hid/default.nix
@@ -1,30 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hidapi
-, nose
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  hidapi,
 }:
 
 buildPythonPackage rec {
   pname = "hid";
   version = "1.0.6";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-SNdk166XRroSO5bb9FeJPKgCaLd5HEsdLgUTEO64OGA=";
   };
 
-  propagatedBuildInputs = [ hidapi ];
-
-  nativeCheckInputs = [ nose ];
-
- postPatch = ''
+  postPatch = ''
     hidapi=${hidapi}/lib/
     test -d $hidapi || { echo "ERROR: $hidapi doesn't exist, please update/fix this build expression."; exit 1; }
     sed -i -e "s|libhidapi|$hidapi/libhidapi|" hid/__init__.py
   '';
 
+  build-system = [ setuptools ];
+
+  dependencies = [ hidapi ];
+
+  doCheck = false; # no tests
+
+  pythonImportsCheck = [ "hid" ];
+
   meta = with lib; {
     description = "hidapi bindings in ctypes";
     homepage = "https://github.com/apmorton/pyhidapi";
diff --git a/pkgs/development/python-modules/hidapi/default.nix b/pkgs/development/python-modules/hidapi/default.nix
index 6ad7b62d05a83..976961d2164be 100644
--- a/pkgs/development/python-modules/hidapi/default.nix
+++ b/pkgs/development/python-modules/hidapi/default.nix
@@ -1,32 +1,43 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, xcbuild
-, cython_0
-, libusb1
-, udev
-, darwin
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  xcbuild,
+  cython_0,
+  libusb1,
+  udev,
+  darwin,
 }:
 
 buildPythonPackage rec {
   pname = "hidapi";
-  version = "0.14.0";
+  version = "0.14.0.post2";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a7cb029286ced5426a381286526d9501846409701a29c2538615c3d1a612b8be";
+    sha256 = "sha256-bA6XumsFmjCdUbSVqPDV77zqh1a2QNmLb2u5/e8kWKw=";
   };
 
-  nativeBuildInputs = [ cython_0 ]
-    ++ lib.optionals stdenv.isDarwin [ xcbuild ];
+  nativeBuildInputs = [ cython_0 ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ xcbuild ];
 
-  propagatedBuildInputs = lib.optionals stdenv.isLinux [ libusb1 udev ]
-    ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ AppKit CoreFoundation IOKit ]);
+  propagatedBuildInputs =
+    lib.optionals stdenv.hostPlatform.isLinux [
+      libusb1
+      udev
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin (
+      with darwin.apple_sdk.frameworks;
+      [
+        AppKit
+        CoreFoundation
+        IOKit
+      ]
+    );
 
   # Fix the USB backend library lookup
-  postPatch = lib.optionalString stdenv.isLinux ''
+  postPatch = lib.optionalString stdenv.hostPlatform.isLinux ''
     libusb=${libusb1.dev}/include/libusb-1.0
     test -d $libusb || { echo "ERROR: $libusb doesn't exist, please update/fix this build expression."; exit 1; }
     sed -i -e "s|/usr/include/libusb-1.0|$libusb|" setup.py
@@ -35,11 +46,17 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "hid" ];
 
   meta = with lib; {
-    description = "A Cython interface to the hidapi from https://github.com/libusb/hidapi";
+    description = "Cython interface to the hidapi from https://github.com/libusb/hidapi";
     homepage = "https://github.com/trezor/cython-hidapi";
     # license can actually be either bsd3 or gpl3
     # see https://github.com/trezor/cython-hidapi/blob/master/LICENSE-orig.txt
-    license = with licenses; [ bsd3 gpl3Only ];
-    maintainers = with maintainers; [ np prusnak ];
+    license = with licenses; [
+      bsd3
+      gpl3Only
+    ];
+    maintainers = with maintainers; [
+      np
+      prusnak
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/hieroglyph/default.nix b/pkgs/development/python-modules/hieroglyph/default.nix
index d2f3168a76a1d..30670a8716c25 100644
--- a/pkgs/development/python-modules/hieroglyph/default.nix
+++ b/pkgs/development/python-modules/hieroglyph/default.nix
@@ -1,4 +1,10 @@
-{ lib, fetchPypi, buildPythonPackage, isPy27, sphinx }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  isPy27,
+  sphinx,
+}:
 
 buildPythonPackage rec {
   pname = "hieroglyph";
@@ -24,4 +30,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ juliendehos ];
   };
 }
-
diff --git a/pkgs/development/python-modules/highdicom/default.nix b/pkgs/development/python-modules/highdicom/default.nix
index b4420e6de9d45..25148892a0b40 100644
--- a/pkgs/development/python-modules/highdicom/default.nix
+++ b/pkgs/development/python-modules/highdicom/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, numpy
-, pillow
-, pillow-jpls
-, pydicom
-, pylibjpeg
-, pylibjpeg-libjpeg
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  numpy,
+  pillow,
+  pillow-jpls,
+  pydicom,
+  pylibjpeg,
+  pylibjpeg-libjpeg,
 }:
 
 let
@@ -44,13 +45,11 @@ buildPythonPackage rec {
     libjpeg = [
       pylibjpeg
       pylibjpeg-libjpeg
-      #pylibjpeg-openjpeg  # not in nixpkgs yet
+      #pylibjpeg-openjpeg  # broken on aarch64-linux
     ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.libjpeg;
+  nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.libjpeg;
   preCheck = ''
     export HOME=$TMP/test-home
     mkdir -p $HOME/.pydicom/
diff --git a/pkgs/development/python-modules/highspy/default.nix b/pkgs/development/python-modules/highspy/default.nix
new file mode 100644
index 0000000000000..6d1847d100ddb
--- /dev/null
+++ b/pkgs/development/python-modules/highspy/default.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  buildPythonPackage,
+  pytestCheckHook,
+  pythonOlder,
+  scikit-build-core,
+  pybind11,
+  numpy,
+  cmake,
+  ninja,
+  pathspec,
+  highs,
+}:
+buildPythonPackage {
+  pname = "highspy";
+  version = highs.version;
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  inherit (highs) src;
+
+  build-system = [
+    cmake
+    ninja
+    pathspec
+    scikit-build-core
+    pybind11
+  ];
+
+  dontUseCmakeConfigure = true;
+
+  dependencies = [ numpy ];
+
+  pythonImportsCheck = [ "highspy" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = with lib; {
+    description = "Linear optimization software";
+    homepage = "https://github.com/ERGO-Code/HiGHS";
+    license = licenses.mit;
+    maintainers = with maintainers; [ renesat ];
+  };
+}
diff --git a/pkgs/development/python-modules/hijri-converter/default.nix b/pkgs/development/python-modules/hijri-converter/default.nix
index 7c6d0d85d2cef..f99bddec45936 100644
--- a/pkgs/development/python-modules/hijri-converter/default.nix
+++ b/pkgs/development/python-modules/hijri-converter/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-BptniSkeCDD0hgp53NNPs87qO5VRbtQBAgK5ZWuhq2E=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "hijri_converter"
-  ];
+  pythonImportsCheck = [ "hijri_converter" ];
 
   meta = with lib; {
     description = "Accurate Hijri-Gregorian date converter based on the Umm al-Qura calendar";
diff --git a/pkgs/development/python-modules/hikari-crescent/default.nix b/pkgs/development/python-modules/hikari-crescent/default.nix
new file mode 100644
index 0000000000000..3d450a68de13d
--- /dev/null
+++ b/pkgs/development/python-modules/hikari-crescent/default.nix
@@ -0,0 +1,59 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  hikari,
+  sigparse,
+  pytestCheckHook,
+  python-dotenv,
+  pytest-asyncio,
+  croniter,
+  pynacl
+}:
+
+buildPythonPackage rec {
+  pname = "hikari-crescent";
+  version = "1.0.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "hikari-crescent";
+    repo = "hikari-crescent";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-0eDPdN+3lalgHiBNXuZUEJllAKFxdKK6paTFNHU5jIM=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    hikari
+    sigparse
+  ];
+
+  postPatch = ''
+    # pythonRelaxDepsHook did not work
+    substituteInPlace pyproject.toml \
+      --replace-fail 'hikari = "==' 'hikari = ">='
+  '';
+
+  pythonImportsCheck = [ "crescent" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    python-dotenv
+    pytest-asyncio
+    croniter
+    pynacl
+  ];
+
+  disabledTests = [ "test_handle_resp" ];
+
+  meta = {
+    description = "A command handler for Hikari that keeps your project neat and tidy";
+    license = lib.licenses.mit;
+    homepage = "https://github.com/hikari-crescent/hikari-crescent";
+    maintainers = with lib.maintainers; [ sigmanificient ];
+    mainProgram = "hikari-crescent";
+  };
+}
diff --git a/pkgs/development/python-modules/hikari-lightbulb/default.nix b/pkgs/development/python-modules/hikari-lightbulb/default.nix
new file mode 100644
index 0000000000000..9fb3952ce0a77
--- /dev/null
+++ b/pkgs/development/python-modules/hikari-lightbulb/default.nix
@@ -0,0 +1,48 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  hikari,
+  croniter,
+}:
+
+buildPythonPackage rec {
+  pname = "hikari-lightbulb";
+  version = "2.3.5";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "tandemdude";
+    repo = "hikari-lightbulb";
+    rev = version;
+    hash = "sha256-gqbbex2xj48LZqW4bVSPDW1UZEFVeOHbNQVM6nhpl1Y=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+    wheel
+  ];
+
+  propagatedBuildInputs = [ hikari ];
+
+  passthru.optional-dependencies = {
+    crontrigger = [ croniter ];
+  };
+
+  pythonImportsCheck = [ "lightbulb" ];
+
+  meta = with lib; {
+    description = "Command handler for Hikari, the Python Discord API wrapper library";
+    longDescription = ''
+      Lightbulb is designed to be an easy to use command handler library that integrates with the Discord API wrapper library for Python, Hikari.
+
+      This library aims to make it simple for you to make your own Discord bots and provide all the utilities and functions you need to help make this job easier.
+    '';
+    homepage = "https://hikari-lightbulb.readthedocs.io/en/latest/";
+    # https://github.com/tandemdude/hikari-lightbulb/blob/d87df463488d1c1d947144ac0bafa4304e12ddfd/setup.py#L68
+    license = licenses.lgpl3Only;
+    maintainers = with maintainers; [ tomodachi94 ];
+  };
+}
diff --git a/pkgs/development/python-modules/hikari/default.nix b/pkgs/development/python-modules/hikari/default.nix
index e76d7780c0bfa..dbc853b926aaa 100644
--- a/pkgs/development/python-modules/hikari/default.nix
+++ b/pkgs/development/python-modules/hikari/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, pytest-runner
-, aiohttp
-, attrs
-, multidict
-, colorlog
-, pynacl
-, pytest-cov
-, pytest-randomly
-, pytest-asyncio
-, mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  aiohttp,
+  attrs,
+  multidict,
+  colorlog,
+  pynacl,
+  pytest-cov-stub,
+  pytest-randomly,
+  pytest-asyncio,
+  mock,
 }:
 buildPythonPackage rec {
   pname = "hikari";
-  version = "2.0.0.dev124";
+  version = "2.0.0.dev126";
 
   src = fetchFromGitHub {
     owner = "hikari-py";
     repo = "hikari";
     rev = version;
-    hash = "sha256-zDgU3Ol/I3YNnwXm+aBh20KwonW746p5TObuwuWORog=";
+    hash = "sha256-KpF9P92IciILV7zlYTCgtMqhudT9uOR2SQJdWDtxYaA=";
     # The git commit is part of the `hikari.__git_sha1__` original output;
     # leave that output the same in nixpkgs. Use the `.git` directory
     # to retrieve the commit SHA, and remove the directory afterwards,
@@ -36,9 +35,6 @@ buildPythonPackage rec {
     '';
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -55,26 +51,26 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
-    pytest-runner
     pytest-asyncio
-    pytest-cov
+    pytest-cov-stub
     pytest-randomly
     mock
   ];
 
-  pythonImportChecks = [ "hikari" ];
+  pythonImportsCheck = [ "hikari" ];
 
   disabled = pythonOlder "3.7";
 
   postPatch = ''
-    substituteInPlace hikari/_about.py --replace "__git_sha1__: typing.Final[str] = \"HEAD\"" "__git_sha1__: typing.Final[str] = \"$(cat $src/COMMIT)\""
+    substituteInPlace hikari/_about.py \
+      --replace-fail "__git_sha1__: typing.Final[str] = \"HEAD\"" "__git_sha1__: typing.Final[str] = \"$(cat $src/COMMIT)\""
   '';
 
-  meta = with lib; {
+  meta = {
     description = "Discord API wrapper for Python written with asyncio";
     homepage = "https://www.hikari-py.dev/";
     changelog = "https://github.com/hikari-py/hikari/releases/tag/${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ tomodachi94 ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tomodachi94 sigmanificient ];
   };
 }
diff --git a/pkgs/development/python-modules/hikvision/default.nix b/pkgs/development/python-modules/hikvision/default.nix
index 23f6387853a82..354edc5d77981 100644
--- a/pkgs/development/python-modules/hikvision/default.nix
+++ b/pkgs/development/python-modules/hikvision/default.nix
@@ -1,35 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "hikvision";
   version = "2.0.4";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "fbradyirl";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "1l0zvir4hf1pcwwcmrhkspbdljzmi4lknxar5bkipdanpsm588mn";
+    repo = "hikvision";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-tiJUqr5WtRvnKll1OymJ9Uva1tUT5so4Zzc4SHLcH9A=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ requests ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "hikvision.api" ];
 
   meta = with lib; {
     description = "Python module for interacting with Hikvision IP Cameras";
     homepage = "https://github.com/fbradyirl/hikvision";
+    changelog = "https://github.com/fbradyirl/hikvision/releases/tag/v${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/hiredis/default.nix b/pkgs/development/python-modules/hiredis/default.nix
index 2408fa2d7e1c5..d9a6917ae5d8f 100644
--- a/pkgs/development/python-modules/hiredis/default.nix
+++ b/pkgs/development/python-modules/hiredis/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# tested using
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # tested using
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,13 +23,9 @@ buildPythonPackage rec {
     hash = "sha256-7hTGXHNECy+dSsop0ULsNZvGFecCIEv+q46s7t/K7k8=";
   };
 
-  pythonImportsCheck = [
-    "hiredis"
-  ];
+  pythonImportsCheck = [ "hiredis" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     rm -rf hiredis
@@ -42,4 +39,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ mmai ];
   };
 }
-
diff --git a/pkgs/development/python-modules/hiro/default.nix b/pkgs/development/python-modules/hiro/default.nix
index 2656c13274ba4..7b7f7d8dbf054 100644
--- a/pkgs/development/python-modules/hiro/default.nix
+++ b/pkgs/development/python-modules/hiro/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, six, mock }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  mock,
+}:
 buildPythonPackage rec {
   pname = "hiro";
   version = "1.1.1";
@@ -9,7 +15,10 @@ buildPythonPackage rec {
     hash = "sha256-2jM5rx3JpZTMqdycccclJysuMGYE5F0OBXXNE8X5XWg=";
   };
 
-  propagatedBuildInputs = [ six mock ];
+  propagatedBuildInputs = [
+    six
+    mock
+  ];
 
   meta = with lib; {
     description = "Time manipulation utilities for Python";
diff --git a/pkgs/development/python-modules/hishel/default.nix b/pkgs/development/python-modules/hishel/default.nix
index 03dfcf4cf8ec7..e86b6382a83f6 100644
--- a/pkgs/development/python-modules/hishel/default.nix
+++ b/pkgs/development/python-modules/hishel/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "hishel";
-  version = "0.0.26";
+  version = "0.0.31";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
     owner = "karpetrosyan";
     repo = "hishel";
     rev = "refs/tags/${version}";
-    hash = "sha256-+HjVxcTbY9nRj2938fqguOXuTM3XzJWccx0J6RK2h4A=";
+    hash = "sha256-mJPvzGmu0veFlG7jlWdf919qOp3KfGv6SPRcFVFjhnc=";
   };
 
   build-system = [
diff --git a/pkgs/development/python-modules/hist/default.nix b/pkgs/development/python-modules/hist/default.nix
index 17bca6ecb8fab..063bc93b6aa8a 100644
--- a/pkgs/development/python-modules/hist/default.nix
+++ b/pkgs/development/python-modules/hist/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, boost-histogram
-, histoprint
-, hatchling
-, hatch-vcs
-, numpy
-, pytestCheckHook
-, pytest-mpl
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  boost-histogram,
+  histoprint,
+  hatchling,
+  hatch-vcs,
+  numpy,
+  pytestCheckHook,
+  pytest-mpl,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "hist";
-  version = "2.7.2";
+  version = "2.7.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-JrGrgQ2LECIttdFh1KyvZKqgT+a6rtKWbUHB2sVgHQY=";
+    hash = "sha256-+fm1aAmxkLtUZph4nMDX0ECTT8UUHSdjxuSdZegdvAs=";
   };
 
   buildInputs = [
diff --git a/pkgs/development/python-modules/histoprint/default.nix b/pkgs/development/python-modules/histoprint/default.nix
index 94f38aacb6745..14551898283e5 100644
--- a/pkgs/development/python-modules/histoprint/default.nix
+++ b/pkgs/development/python-modules/histoprint/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, click
-, numpy
-, setuptools
-, setuptools-scm
-, uhi
-, pytestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  click,
+  numpy,
+  setuptools,
+  setuptools-scm,
+  uhi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     uhi
   ];
 
-  checkInputs = [
-    pytestCheckHook
-  ];
+  checkInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Pretty print histograms to the console";
diff --git a/pkgs/development/python-modules/hiyapyco/default.nix b/pkgs/development/python-modules/hiyapyco/default.nix
index 96baf1790b04e..1e2b45a7dc60a 100644
--- a/pkgs/development/python-modules/hiyapyco/default.nix
+++ b/pkgs/development/python-modules/hiyapyco/default.nix
@@ -1,26 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pyyaml
-, jinja2
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pyyaml,
+  jinja2,
 }:
 
 buildPythonPackage rec {
   pname = "hiyapyco";
-  version = "0.5.5";
+  version = "0.6.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "zerwes";
     repo = pname;
     rev = "refs/tags/release-${version}";
-    hash = "sha256-LuENNwVB/1GyPLsfMRwHjz87c7+3/7U82m1MnHfRHdU=";
+    hash = "sha256-KB/KFrR7IScIWyYbsU+4BbV0+SCeeWxYDD8lbxosRLc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     pyyaml
diff --git a/pkgs/development/python-modules/hjson/default.nix b/pkgs/development/python-modules/hjson/default.nix
index 44aa789f0d043..a5caa19be3586 100644
--- a/pkgs/development/python-modules/hjson/default.nix
+++ b/pkgs/development/python-modules/hjson/default.nix
@@ -1,25 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, makeWrapper
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  makeWrapper,
+  pytestCheckHook,
+  python,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "hjson";
   version = "3.0.2";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.5";
 
-  # N.B. pypi src tarball does not have tests
   src = fetchFromGitHub {
     owner = "hjson";
     repo = "hjson-py";
-    rev = "v${version}";
-    sha256 = "1jc7j790rcqnhbrfj4lhnz3f6768dc55aij840wmx16jylfqpc2n";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-VrCLHfXShF45IEhGVQpryBzjxreQEunyghazDNKRh8k=";
   };
 
+  build-system = [ setuptools ];
+
   nativeBuildInputs = [ makeWrapper ];
 
+  nativeCheckInputs = [ pytestCheckHook ];
+
   pythonImportsCheck = [ "hjson" ];
 
   postInstall = ''
@@ -29,11 +38,17 @@ buildPythonPackage rec {
       --prefix PATH : ${lib.makeBinPath [ python ]}
   '';
 
+  disabledTestPaths = [
+    # AttributeError:  b'/build/source/hjson/tool.py:14: Deprecati[151 chars]ools' != b''
+    "hjson/tests/test_tool.py"
+  ];
+
   meta = with lib; {
-    description = "A user interface for JSON";
-    mainProgram = "hjson";
+    description = "User interface for JSON";
     homepage = "https://github.com/hjson/hjson-py";
+    changelog = "https://github.com/hjson/hjson-py/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ bhipple ];
+    mainProgram = "hjson";
   };
 }
diff --git a/pkgs/development/python-modules/hkavr/default.nix b/pkgs/development/python-modules/hkavr/default.nix
index 851150ea1dd8f..c981affe092cf 100644
--- a/pkgs/development/python-modules/hkavr/default.nix
+++ b/pkgs/development/python-modules/hkavr/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-wa0yS0KPdrQUuxxViweESD6Itn2rFlTwwrPQ0COWIPc=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "hkavr"
-  ];
+  pythonImportsCheck = [ "hkavr" ];
 
   meta = with lib; {
     description = "Library for interacting with Harman Kardon AVR controllers";
diff --git a/pkgs/development/python-modules/hkdf/default.nix b/pkgs/development/python-modules/hkdf/default.nix
index e82489fd12fd0..f04e486fd73ca 100644
--- a/pkgs/development/python-modules/hkdf/default.nix
+++ b/pkgs/development/python-modules/hkdf/default.nix
@@ -1,32 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  nose,
+  setuptools,
 }:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "hkdf";
   version = "0.0.3";
-  format = "setuptools";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1jhxk5vhxmxxjp3zj526ry521v9inzzl8jqaaf0ma65w6k332ak2";
+  src = fetchFromGitHub {
+    owner = "casebeer";
+    repo = "python-hkdf";
+    rev = "cc3c9dbf0a271b27a7ac5cd04cc1485bbc3b4307";
+    hash = "sha256-i3vJzUI7dpZbgZkz7Agd5RAeWisNWftdk/mkJBZkkLg=";
   };
 
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "hkdf" ];
+
   nativeCheckInputs = [ nose ];
 
   checkPhase = ''
+    runHook preCheck
+
     nosetests
-  '';
 
-  # no tests in PyPI tarball
-  doCheck = false;
+    runHook postCheck
+  '';
 
   meta = with lib; {
     description = "HMAC-based Extract-and-Expand Key Derivation Function (HKDF)";
     homepage = "https://github.com/casebeer/python-hkdf";
     license = licenses.bsd2;
   };
-
 }
diff --git a/pkgs/development/python-modules/hledger-utils/default.nix b/pkgs/development/python-modules/hledger-utils/default.nix
index c2485c217a4c8..0dd811f5a7be5 100644
--- a/pkgs/development/python-modules/hledger-utils/default.nix
+++ b/pkgs/development/python-modules/hledger-utils/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitLab
-, setuptools
-, setuptools-scm
-, unittestCheckHook
-, hledger
-, perl
-, rich
-, pandas
-, scipy
-, psutil
-, matplotlib
-, drawilleplot
-, asteval
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  setuptools,
+  setuptools-scm,
+  unittestCheckHook,
+  hledger,
+  perl,
+  rich,
+  pandas,
+  scipy,
+  psutil,
+  matplotlib,
+  drawilleplot,
+  asteval,
 }:
 
 buildPythonPackage rec {
@@ -43,9 +44,7 @@ buildPythonPackage rec {
     asteval
   ];
 
-  checkInputs = [
-    unittestCheckHook
-  ];
+  checkInputs = [ unittestCheckHook ];
 
   nativeCheckInputs = [
     hledger
@@ -59,7 +58,11 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Utilities extending hledger";
     homepage = "https://gitlab.com/nobodyinperson/hledger-utils";
-    license = with licenses; [cc0 cc-by-40 gpl3];
+    license = with licenses; [
+      cc0
+      cc-by-40
+      gpl3
+    ];
     maintainers = with maintainers; [ nobbz ];
     platforms = platforms.all;
   };
diff --git a/pkgs/development/python-modules/hlk-sw16/default.nix b/pkgs/development/python-modules/hlk-sw16/default.nix
index 0674829a7af6e..49a2da2686e45 100644
--- a/pkgs/development/python-modules/hlk-sw16/default.nix
+++ b/pkgs/development/python-modules/hlk-sw16/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/hmmlearn/default.nix b/pkgs/development/python-modules/hmmlearn/default.nix
index 84014ba128993..27bad37620619 100644
--- a/pkgs/development/python-modules/hmmlearn/default.nix
+++ b/pkgs/development/python-modules/hmmlearn/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, numpy
-, scikit-learn
-, pybind11
-, setuptools-scm
-, cython
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  numpy,
+  scikit-learn,
+  pybind11,
+  setuptools-scm,
+  cython,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -33,13 +34,9 @@ buildPythonPackage rec {
     scikit-learn
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "hmmlearn"
-  ];
+  pythonImportsCheck = [ "hmmlearn" ];
 
   pytestFlagsArray = [
     "--pyargs"
diff --git a/pkgs/development/python-modules/hnswlib/default.nix b/pkgs/development/python-modules/hnswlib/default.nix
index c3dab17f5336b..b5a8c9def6670 100644
--- a/pkgs/development/python-modules/hnswlib/default.nix
+++ b/pkgs/development/python-modules/hnswlib/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, hnswlib
-, numpy
-, pybind11
-, setuptools
-, unittestCheckHook
+{
+  buildPythonPackage,
+  hnswlib,
+  numpy,
+  pybind11,
+  setuptools,
+  unittestCheckHook,
 }:
 
 buildPythonPackage {
@@ -17,16 +18,12 @@ buildPythonPackage {
     pybind11
   ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   unittestFlagsArray = [
     "tests/python"
     "--pattern 'bindings_test*.py'"
   ];
 
-  pythonImportsCheck = [
-    "hnswlib"
-  ];
+  pythonImportsCheck = [ "hnswlib" ];
 }
diff --git a/pkgs/development/python-modules/hocr-tools/default.nix b/pkgs/development/python-modules/hocr-tools/default.nix
index d5886a8893db6..40d2653d6c0d2 100644
--- a/pkgs/development/python-modules/hocr-tools/default.nix
+++ b/pkgs/development/python-modules/hocr-tools/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lxml
-, pillow
-, reportlab
-, lib
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxml,
+  pillow,
+  reportlab,
+  lib,
 }:
 buildPythonPackage rec {
   pname = "hocr-tools";
@@ -20,13 +21,17 @@ buildPythonPackage rec {
   # hocr-tools uses a test framework that requires internet access
   doCheck = false;
 
-  propagatedBuildInputs = [ pillow lxml reportlab ];
+  propagatedBuildInputs = [
+    pillow
+    lxml
+    reportlab
+  ];
 
   meta = with lib; {
     description = "
 Tools for manipulating and evaluating the hOCR format for representing multi-lingual OCR results by embedding them into HTML";
     homepage = "https://github.com/tmbdev/hocr-tools";
     license = licenses.asl20;
-    maintainers = [ maintainers.kiwi ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/hole/default.nix b/pkgs/development/python-modules/hole/default.nix
index 37ac10cdfcafa..0f4b1aef89e26 100644
--- a/pkgs/development/python-modules/hole/default.nix
+++ b/pkgs/development/python-modules/hole/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,12 +27,10 @@ buildPythonPackage rec {
   # no tests are present
   doCheck = false;
 
-  pythonImportsCheck = [
-    "hole"
-  ];
+  pythonImportsCheck = [ "hole" ];
 
   meta = with lib; {
-    description = "Python API for interacting with a Pihole instance.";
+    description = "Python API for interacting with a Pihole instance";
     homepage = "https://github.com/home-assistant-ecosystem/python-hole";
     changelog = "https://github.com/home-assistant-ecosystem/python-hole/releases/tag/${version}";
     license = with licenses; [ mit ];
diff --git a/pkgs/development/python-modules/holidays/default.nix b/pkgs/development/python-modules/holidays/default.nix
index 82dc5a9882cfe..12c868ea1f44b 100644
--- a/pkgs/development/python-modules/holidays/default.nix
+++ b/pkgs/development/python-modules/holidays/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "holidays";
-  version = "0.47";
+  version = "0.57";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "vacanza";
     repo = "python-holidays";
     rev = "refs/tags/v${version}";
-    hash = "sha256-A4viSzUia4QBdD0svkqYtsCq/la7Nrf2xu/fVDZHb00=";
+    hash = "sha256-/aijcDD0gzg217NuD7A9qdgArek1fHWjb2SfA2H4gww=";
   };
 
   build-system = [
diff --git a/pkgs/development/python-modules/hologram/default.nix b/pkgs/development/python-modules/hologram/default.nix
index 30f50456bad9e..bedeb1f17dfbb 100644
--- a/pkgs/development/python-modules/hologram/default.nix
+++ b/pkgs/development/python-modules/hologram/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, jsonschema
-, pytestCheckHook
-, python-dateutil
-, pythonRelaxDepsHook
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  jsonschema,
+  pytestCheckHook,
+  python-dateutil,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -32,7 +32,6 @@ buildPythonPackage rec {
   ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
     wheel
   ];
@@ -42,22 +41,19 @@ buildPythonPackage rec {
     python-dateutil
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonRelaxDeps = [
-    "python-dateutil"
-  ];
+  pythonRelaxDeps = [ "python-dateutil" ];
 
-  pythonImportsCheck = [
-    "hologram"
-  ];
+  pythonImportsCheck = [ "hologram" ];
 
   meta = with lib; {
-    description = "A library for automatically generating Draft 7 JSON Schemas from Python dataclasses";
+    description = "Library for automatically generating Draft 7 JSON Schemas from Python dataclasses";
     homepage = "https://github.com/dbt-labs/hologram";
     license = licenses.mit;
-    maintainers = with maintainers; [ mausch tjni ];
+    maintainers = with maintainers; [
+      mausch
+      tjni
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/holoviews/default.nix b/pkgs/development/python-modules/holoviews/default.nix
index 03e4d80a4dfa5..eb17dd0534001 100644
--- a/pkgs/development/python-modules/holoviews/default.nix
+++ b/pkgs/development/python-modules/holoviews/default.nix
@@ -1,33 +1,36 @@
-{ lib
-, bokeh
-, buildPythonPackage
-, colorcet
-, fetchPypi
-, ipython
-, matplotlib
-, notebook
-, numpy
-, pandas
-, panel
-, param
-, pythonOlder
-, pyviz-comms
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  colorcet,
+  fetchPypi,
+  hatch-vcs,
+  hatchling,
+  numpy,
+  pandas,
+  panel,
+  param,
+  pythonOlder,
+  pyviz-comms,
 }:
 
 buildPythonPackage rec {
   pname = "holoviews";
-  version = "1.18.3";
-  format = "setuptools";
+  version = "1.19.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-V44w6J1ydU+XqD6+CBmP7I6HzH5JslufMew5P5OcpQA=";
+    hash = "sha256-yrFSL3WptGN3+TZLZ1vv15gS4iAFlxRHCljiFHXVMbo=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    hatch-vcs
+    hatchling
+  ];
+
+  dependencies = [
     colorcet
     numpy
     pandas
@@ -39,15 +42,13 @@ buildPythonPackage rec {
   # tests not fully included with pypi release
   doCheck = false;
 
-  pythonImportsCheck = [
-    "holoviews"
-  ];
+  pythonImportsCheck = [ "holoviews" ];
 
   meta = with lib; {
     description = "Python data analysis and visualization seamless and simple";
     mainProgram = "holoviews";
     homepage = "https://www.holoviews.org/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/home-assistant-bluetooth/default.nix b/pkgs/development/python-modules/home-assistant-bluetooth/default.nix
index de204e5fb4259..fc288114c374a 100644
--- a/pkgs/development/python-modules/home-assistant-bluetooth/default.nix
+++ b/pkgs/development/python-modules/home-assistant-bluetooth/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# build-system
-, cython
-, poetry-core
-, setuptools
-
-# dependencies
-, habluetooth
-
-# tests
-, bleak
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  cython,
+  poetry-core,
+  setuptools,
+
+  # dependencies
+  habluetooth,
+
+  # tests
+  bleak,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "home-assistant-bluetooth";
-  version = "1.12.0";
+  version = "1.12.2";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -27,7 +28,7 @@ buildPythonPackage rec {
     owner = "home-assistant-libs";
     repo = "home-assistant-bluetooth";
     rev = "refs/tags/v${version}";
-    hash = "sha256-KTaZ3xbZpBIN5zP73YdJW6QeCQThGdqejnfWwvL+0R8=";
+    hash = "sha256-WAsgiOmYqmt/PCKp+vZA2To95YZAgnYCF8ysCn5N9nc=";
   };
 
   postPatch = ''
@@ -35,25 +36,21 @@ buildPythonPackage rec {
     sed -i '/addopts/d' pyproject.toml
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     cython
     poetry-core
     setuptools
   ];
 
-  propagatedBuildInputs = [
-    habluetooth
-  ];
-
-  pythonImportsCheck = [
-    "home_assistant_bluetooth"
-  ];
+  dependencies = [ habluetooth ];
 
   nativeCheckInputs = [
     bleak
     pytestCheckHook
   ];
 
+  pythonImportsCheck = [ "home_assistant_bluetooth" ];
+
   meta = with lib; {
     description = "Basic bluetooth models used by Home Assistant";
     changelog = "https://github.com/home-assistant-libs/home-assistant-bluetooth/blob/v${version}/CHANGELOG.md";
diff --git a/pkgs/development/python-modules/home-assistant-chip-clusters/default.nix b/pkgs/development/python-modules/home-assistant-chip-clusters/default.nix
index 396ff052182e2..04e71d133e192 100644
--- a/pkgs/development/python-modules/home-assistant-chip-clusters/default.nix
+++ b/pkgs/development/python-modules/home-assistant-chip-clusters/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, aenum
-, dacite
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  aenum,
+  dacite,
 }:
 
 buildPythonPackage rec {
   pname = "home-assistant-chip-clusters";
-  version = "2024.3.2";
+  version = "2024.7.0";
   format = "wheel";
 
   src = fetchPypi {
@@ -15,7 +16,7 @@ buildPythonPackage rec {
     pname = "home_assistant_chip_clusters";
     dist = "py3";
     python = "py3";
-    hash = "sha256-Imdpqy7m81oxfkzj+82afSX9juK/SOCBIMoaPjK8G+Y=";
+    hash = "sha256-1yR8Z+R16u099XtxPasmocFbdQPH1Rr6sqngNpWmuWE=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/home-assistant-chip-core/default.nix b/pkgs/development/python-modules/home-assistant-chip-core/default.nix
index 8f05913fbd830..c9c18a722d1c1 100644
--- a/pkgs/development/python-modules/home-assistant-chip-core/default.nix
+++ b/pkgs/development/python-modules/home-assistant-chip-core/default.nix
@@ -1,62 +1,65 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 
-# build
-, autoPatchelfHook
+  # build
+  autoPatchelfHook,
 
-# runtime
-, glib
-, libnl
+  # runtime
+  glib,
+  libnl,
 
-# propagates
-, aenum
-, coloredlogs
-, construct
-, cryptography
-, dacite
-, ecdsa
-, rich
-, pyyaml
-, ipdb
-, deprecation
-, mobly
-, pygobject3
+  # propagates
+  aenum,
+  coloredlogs,
+  construct,
+  cryptography,
+  dacite,
+  ecdsa,
+  rich,
+  pyyaml,
+  ipdb,
+  deprecation,
+  mobly,
+  pygobject3,
 }:
 
 buildPythonPackage rec {
   pname = "home-assistant-chip-core";
-  version = "2024.3.2";
+  version = "2024.7.0";
   format = "wheel";
 
   disabled = pythonOlder "3.7";
 
-  src = let
-    system = {
-      "aarch64-linux" = {
-        name = "aarch64";
-        hash = "sha256-li+fmEikVnTAkgQnoiWjoZaVRwGRadTYuQySR5s8VB4=";
-      };
-      "x86_64-linux" = {
-        name = "x86_64";
-        hash = "sha256-iUKtAz00qFklTW2ilUPGAWhpqDmnLb6D3Zdy1oHpQl0=";
-      };
-    }.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}");
-  in fetchPypi {
-    pname = "home_assistant_chip_core";
-    inherit version format;
-    dist = "cp37";
-    python = "cp37";
-    abi = "abi3";
-    platform = "manylinux_2_31_${system.name}";
-    hash = system.hash;
-  };
+  src =
+    let
+      system =
+        {
+          "aarch64-linux" = {
+            name = "aarch64";
+            hash = "sha256-omEYZXAqkB5+trALBTqJ8SBGasTHD2mT2km6FizBvS8=";
+          };
+          "x86_64-linux" = {
+            name = "x86_64";
+            hash = "sha256-mTMXCpYRon8SqZB+0+P4IM+NUUOKBfxjf/NmLTElB+A=";
+          };
+        }
+        .${stdenv.system} or (throw "Unsupported system: ${stdenv.system}");
+    in
+    fetchPypi {
+      pname = "home_assistant_chip_core";
+      inherit version format;
+      dist = "cp37";
+      python = "cp37";
+      abi = "abi3";
+      platform = "manylinux_2_31_${system.name}";
+      hash = system.hash;
+    };
 
-  nativeBuildInputs = [
-    autoPatchelfHook
-  ];
+  nativeBuildInputs = [ autoPatchelfHook ];
 
   buildInputs = [
     glib
@@ -101,7 +104,10 @@ buildPythonPackage rec {
     changelog = "https://github.com/home-assistant-libs/chip-wheels/releases/tag/${version}";
     license = licenses.asl20;
     maintainers = teams.home-assistant.members;
-    platforms = [ "aarch64-linux" "x86_64-linux" ];
+    platforms = [
+      "aarch64-linux"
+      "x86_64-linux"
+    ];
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
   };
 }
diff --git a/pkgs/development/python-modules/homeconnect/default.nix b/pkgs/development/python-modules/homeconnect/default.nix
index 296fb482c16d9..ad1ce2a29102c 100644
--- a/pkgs/development/python-modules/homeconnect/default.nix
+++ b/pkgs/development/python-modules/homeconnect/default.nix
@@ -1,47 +1,42 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, requests-oauthlib
-, pythonOlder
-, setuptools
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  requests-oauthlib,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "homeconnect";
-  version = "0.7.4";
-  format = "pyproject";
+  version = "0.8.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-lkal6Dy4cRRZ893I3/jyQ3+sDZMrHN0UMGff0ab4pvk=";
+    hash = "sha256-W475a+TlGiKRR1EDYiFVmApmQfmft85iBQLRnbEmcuA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     requests
     requests-oauthlib
-    six
   ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "homeconnect"
-  ];
+  pythonImportsCheck = [ "homeconnect" ];
 
   meta = with lib; {
     description = "Python client for the BSH Home Connect REST API";
     homepage = "https://github.com/DavidMStraub/homeconnect";
     changelog = "https://github.com/DavidMStraub/homeconnect/releases/tag/v${version}";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/homematicip/default.nix b/pkgs/development/python-modules/homematicip/default.nix
index 34016262e93bb..28a7cfb3b969b 100644
--- a/pkgs/development/python-modules/homematicip/default.nix
+++ b/pkgs/development/python-modules/homematicip/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, aenum
-, aiohttp
-, aiohttp-wsgi
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, pytest7CheckHook
-, pythonAtLeast
-, pythonOlder
-, pytest-aiohttp
-, pytest-asyncio
-, requests
-, setuptools
-, setuptools-scm
-, websocket-client
-, websockets
+{
+  lib,
+  aenum,
+  aiohttp,
+  aiohttp-wsgi,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest7CheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  pytest-aiohttp,
+  pytest-asyncio,
+  requests,
+  setuptools,
+  setuptools-scm,
+  websocket-client,
+  websockets,
 }:
 
 buildPythonPackage rec {
   pname = "homematicip";
-  version = "1.1.0";
+  version = "1.1.2";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -28,15 +29,15 @@ buildPythonPackage rec {
     owner = "hahn-th";
     repo = "homematicip-rest-api";
     rev = "refs/tags/${version}";
-    hash = "sha256-tx7/amXG3rLdUFgRPQcuf57qkBLAPxPWjLGSO7MrcWU=";
+    hash = "sha256-f1KjBYwLqQbA6TbQ3ZZ8TgvGe1USbYYNjsni2vsnTP8=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aenum
     aiohttp
     async-timeout
@@ -52,44 +53,42 @@ buildPythonPackage rec {
     pytest7CheckHook
   ];
 
-  pytestFlagsArray = [
-    "--asyncio-mode=auto"
-  ];
+  pytestFlagsArray = [ "--asyncio-mode=auto" ];
 
-  disabledTests = [
-    # Assert issues with datetime
-    "test_contact_interface_device"
-    "test_dimmer"
-    "test_external_device"
-    "test_heating_failure_alert_group"
-    "test_heating"
-    "test_humidity_warning_rule_group"
-    "test_meta_group"
-    "test_pluggable_switch_measuring"
-    "test_rotary_handle_sensor"
-    "test_security_group"
-    "test_security_zone"
-    "test_shutter_device"
-    "test_smoke_detector"
-    "test_switching_group"
-    "test_temperature_humidity_sensor_outdoor"
-    "test_wall_mounted_thermostat_pro"
-    "test_weather_sensor"
-    # Random failures
-    "test_home_getSecurityJournal"
-    "test_home_unknown_types"
-    # Requires network access
-    "test_websocket"
-  ] ++ lib.optionals (pythonAtLeast "3.10") [
-    "test_connection_lost"
-    "test_user_disconnect_and_reconnect"
-    "test_ws_message"
-    "test_ws_no_pong"
-  ];
+  disabledTests =
+    [
+      # Assert issues with datetime
+      "test_contact_interface_device"
+      "test_dimmer"
+      "test_external_device"
+      "test_heating_failure_alert_group"
+      "test_heating"
+      "test_humidity_warning_rule_group"
+      "test_meta_group"
+      "test_pluggable_switch_measuring"
+      "test_rotary_handle_sensor"
+      "test_security_group"
+      "test_security_zone"
+      "test_shutter_device"
+      "test_smoke_detector"
+      "test_switching_group"
+      "test_temperature_humidity_sensor_outdoor"
+      "test_wall_mounted_thermostat_pro"
+      "test_weather_sensor"
+      # Random failures
+      "test_home_getSecurityJournal"
+      "test_home_unknown_types"
+      # Requires network access
+      "test_websocket"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.10") [
+      "test_connection_lost"
+      "test_user_disconnect_and_reconnect"
+      "test_ws_message"
+      "test_ws_no_pong"
+    ];
 
-  pythonImportsCheck = [
-    "homematicip"
-  ];
+  pythonImportsCheck = [ "homematicip" ];
 
   meta = with lib; {
     description = "Module for the homematicIP REST API";
diff --git a/pkgs/development/python-modules/homepluscontrol/default.nix b/pkgs/development/python-modules/homepluscontrol/default.nix
index 1e33118b191e7..7af19f73f6fec 100644
--- a/pkgs/development/python-modules/homepluscontrol/default.nix
+++ b/pkgs/development/python-modules/homepluscontrol/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, pyjwt
-, pytestCheckHook
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyjwt,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/homf/default.nix b/pkgs/development/python-modules/homf/default.nix
new file mode 100644
index 0000000000000..cd58234c23498
--- /dev/null
+++ b/pkgs/development/python-modules/homf/default.nix
@@ -0,0 +1,55 @@
+{
+  lib,
+  buildPythonPackage,
+  callPackage,
+  fetchFromGitHub,
+  # pytestCheckHook,
+  pythonOlder,
+  versionCheckHook,
+
+  hatchling,
+  packaging,
+}:
+
+buildPythonPackage rec {
+  pname = "homf";
+  version = "1.1.1";
+  pyproject = true;
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "duckinator";
+    repo = "homf";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-fDH6uJ2d/Jsnuudv+Qlv1tr3slxOJWh7b4smGS32n9A=";
+  };
+
+  build-system = [ hatchling ];
+
+  pythonRelaxDeps = [ "packaging" ];
+  dependencies = [ packaging ];
+
+  pythonImportsCheck = [
+    "homf"
+    "homf.api"
+    "homf.api.github"
+    "homf.api.pypi"
+  ];
+
+  # There are currently no checks which do not require network access, which breaks the check hook somehow?
+  # nativeCheckInputs = [ pytestCheckHook ];
+  # pytestFlagsArray = [ "-m 'not network'" ];
+
+  nativeBuildInputs = [ versionCheckHook ];
+
+  # (Ab)using `callPackage` as a fix-point operator, so tests can use the `homf` drv
+  passthru.tests = callPackage ./tests.nix { };
+
+  meta = with lib; {
+    description = "Asset download tool for GitHub Releases, PyPi, etc.";
+    mainProgram = "homf";
+    homepage = "https://github.com/duckinator/homf";
+    license = licenses.mit;
+    maintainers = with maintainers; [ nicoo ];
+  };
+}
diff --git a/pkgs/development/python-modules/homf/tests.nix b/pkgs/development/python-modules/homf/tests.nix
new file mode 100644
index 0000000000000..a883334ce40dc
--- /dev/null
+++ b/pkgs/development/python-modules/homf/tests.nix
@@ -0,0 +1,43 @@
+{
+  lib,
+  runCommand,
+  testers,
+
+  cacert,
+  homf,
+}:
+let
+  # runs homf, putting the fetched artefacts in the drv output
+  Homf =
+    subcommand:
+    {
+      pkgName,
+      version,
+      hash,
+    }:
+    # testers.runCommand ensures we have an FOD, so the command has network access,
+    #  yet the test is rerun whenever one of its inputs changes.
+    testers.runCommand {
+      name = "homf-${subcommand}-${pkgName}";
+      script = "homf ${subcommand} --directory $out ${pkgName} ${version}";
+      nativeBuildInputs = [
+        cacert
+        homf
+      ];
+      inherit hash;
+    };
+in
+
+lib.mapAttrs Homf {
+  pypi = {
+    pkgName = "homf";
+    version = "1.1.1"; # pinned so updating homf won't invalidate hashes
+    hash = "sha256-zpdt7+zTaGkLG6xYoTZVw/kUek0/MrCqvljfLxNB94A=";
+  };
+
+  github = {
+    pkgName = "duckinator/homf";
+    version = "v1.1.1";
+    hash = "sha256-NeEz8wZqDWYUnrgsknXWHzhWdk8cPW8mknKS3+/dngQ=";
+  };
+}
diff --git a/pkgs/development/python-modules/hoomd-blue/default.nix b/pkgs/development/python-modules/hoomd-blue/default.nix
index 421ef73275c9e..248a2f8cb258f 100644
--- a/pkgs/development/python-modules/hoomd-blue/default.nix
+++ b/pkgs/development/python-modules/hoomd-blue/default.nix
@@ -1,22 +1,28 @@
-{ lib, stdenv, fetchgit
-, cmake, pkgconfig
-, python
-, mpi ? null
+{
+  lib,
+  buildPythonPackage,
+  fetchgit,
+  cmake,
+  pkgconfig,
+  python,
+  mpi ? null,
 }:
 
-let components = {
-     cgcmm = true;
-     depreciated = true;
-     hpmc = true;
-     md = true;
-     metal = true;
-   };
-   onOffBool = b: if b then "ON" else "OFF";
-   withMPI = (mpi != null);
+let
+  components = {
+    cgcmm = true;
+    depreciated = true;
+    hpmc = true;
+    md = true;
+    metal = true;
+  };
+  onOffBool = b: if b then "ON" else "OFF";
+  withMPI = (mpi != null);
 in
-stdenv.mkDerivation rec {
+buildPythonPackage rec {
   version = "2.3.4";
   pname = "hoomd-blue";
+  pyproject = false; # Built with cmake
 
   src = fetchgit {
     url = "https://bitbucket.org/glotzer/hoomd-blue";
@@ -28,26 +34,24 @@ stdenv.mkDerivation rec {
     inherit components mpi;
   };
 
-  nativeBuildInputs = [ cmake pkgconfig ];
+  nativeBuildInputs = [
+    cmake
+    pkgconfig
+  ];
   buildInputs = lib.optionals withMPI [ mpi ];
-  propagatedBuildInputs = [ python.pkgs.numpy ]
-   ++ lib.optionals withMPI [ python.pkgs.mpi4py ];
+  propagatedBuildInputs = [ python.pkgs.numpy ] ++ lib.optionals withMPI [ python.pkgs.mpi4py ];
 
   dontAddPrefix = true;
   cmakeFlags = [
-       "-DENABLE_MPI=${onOffBool withMPI}"
-       "-DBUILD_CGCMM=${onOffBool components.cgcmm}"
-       "-DBUILD_DEPRECIATED=${onOffBool components.depreciated}"
-       "-DBUILD_HPMC=${onOffBool components.hpmc}"
-       "-DBUILD_MD=${onOffBool components.md}"
-       "-DBUILD_METAL=${onOffBool components.metal}"
+    "-DENABLE_MPI=${onOffBool withMPI}"
+    "-DBUILD_CGCMM=${onOffBool components.cgcmm}"
+    "-DBUILD_DEPRECIATED=${onOffBool components.depreciated}"
+    "-DBUILD_HPMC=${onOffBool components.hpmc}"
+    "-DBUILD_MD=${onOffBool components.md}"
+    "-DBUILD_METAL=${onOffBool components.metal}"
+    "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}/${python.sitePackages}"
   ];
 
-  preConfigure = ''
-    # Since we can't expand $out in `cmakeFlags`
-    cmakeFlags="$cmakeFlags -DCMAKE_INSTALL_PREFIX=$out/${python.sitePackages}"
-  '';
-
   # tests fail but have tested that package runs properly
   doCheck = false;
   checkTarget = "test";
@@ -58,6 +62,8 @@ stdenv.mkDerivation rec {
     license = licenses.bsdOriginal;
     platforms = [ "x86_64-linux" ];
     maintainers = [ ];
+    # Has compilation errors since some dependencies got updated, will probably
+    # be fixed if updated by itself to the latest version.
+    broken = true;
   };
-
 }
diff --git a/pkgs/development/python-modules/hopcroftkarp/default.nix b/pkgs/development/python-modules/hopcroftkarp/default.nix
index 9386bdd861fc2..defbcdeaeb8de 100644
--- a/pkgs/development/python-modules/hopcroftkarp/default.nix
+++ b/pkgs/development/python-modules/hopcroftkarp/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/horizon-eda/default.nix b/pkgs/development/python-modules/horizon-eda/default.nix
index d2385e190e774..f1b64a71ae32b 100644
--- a/pkgs/development/python-modules/horizon-eda/default.nix
+++ b/pkgs/development/python-modules/horizon-eda/default.nix
@@ -1,19 +1,23 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, callPackage
-, horizon-eda
-, mesa
-, pycairo
-, python
-, pythonOlder
+{
+  buildPythonPackage,
+  horizon-eda,
+  mesa,
+  pycairo,
+  python,
+  pythonOlder,
 }:
 
 let
   base = horizon-eda.passthru.base;
 in
 buildPythonPackage {
-  inherit (base) pname version src meta CASROOT;
+  inherit (base)
+    pname
+    version
+    src
+    meta
+    CASROOT
+    ;
 
   pyproject = false;
 
@@ -25,19 +29,17 @@ buildPythonPackage {
     python
   ];
 
-  propagatedBuildInputs = [
-    pycairo
-  ];
+  propagatedBuildInputs = [ pycairo ];
 
   nativeBuildInputs = base.nativeBuildInputs;
 
-  buildFlags = ["pymodule"];
+  ninjaFlags = [ "horizon.so" ];
 
   installPhase = ''
     runHook preInstall
 
     mkdir -p $out/${python.sitePackages}
-    cp build/horizon.so $out/${python.sitePackages}
+    cp horizon.so $out/${python.sitePackages}
 
     runHook postInstall
   '';
diff --git a/pkgs/development/python-modules/howdoi/default.nix b/pkgs/development/python-modules/howdoi/default.nix
index 4a910af1b988c..4a716b8b037b2 100644
--- a/pkgs/development/python-modules/howdoi/default.nix
+++ b/pkgs/development/python-modules/howdoi/default.nix
@@ -1,36 +1,50 @@
-{ stdenv
-, lib
-, appdirs
-, buildPythonPackage
-, cachelib
-, colorama
-, cssselect
-, fetchFromGitHub
-, keep
-, lxml
-, pygments
-, pyquery
-, requests
-, rich
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  appdirs,
+  buildPythonPackage,
+  cachelib,
+  colorama,
+  cssselect,
+  fetchFromGitHub,
+  fetchpatch,
+  keep,
+  lxml,
+  pygments,
+  pyquery,
+  requests,
+  rich,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "howdoi";
   version = "2.0.20";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "gleitz";
-    repo = pname;
-    rev = "v${version}";
+    repo = "howdoi";
+    rev = "refs/tags/v${version}";
     hash = "sha256-u0k+h7Sp2t/JUnfPqRzDpEA+vNXB7CpyZ/SRvk+B9t0=";
   };
 
-  propagatedBuildInputs = [
+  patches = [
+    # Bad test case fix: comparing hardcoded string to internet search result
+    # PR merged: https://github.com/gleitz/howdoi/pull/497
+    # Please remove on the next release
+    (fetchpatch {
+      url = "https://github.com/gleitz/howdoi/commit/7d24e9e1c87811a6e66d60f504381383cf1ac3fd.patch";
+      hash = "sha256-AFQMnMEijaExqiimbNaVeIRmZJ4Yj0nGUOEjfsvBLh8=";
+    })
+  ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     appdirs
     cachelib
     colorama
@@ -43,9 +57,7 @@ buildPythonPackage rec {
     rich
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export HOME=$(mktemp -d)
@@ -53,18 +65,24 @@ buildPythonPackage rec {
 
   disabledTests = [
     "test_colorize"
+    # Tests are flaky, OSError: [Errno 24] Too many open files happpens
+    "test_answer_links_using_l_option"
+    "test_answers_bing"
+    "test_answers"
+    "test_json_output"
+    "test_missing_pre_or_code_query"
+    "test_multiple_answers"
+    "test_position"
+    "test_unicode_answer"
   ];
 
-  pythonImportsCheck = [
-    "howdoi"
-  ];
+  pythonImportsCheck = [ "howdoi" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
-    changelog = "https://github.com/gleitz/howdoi/blob/v${version}/CHANGES.txt";
     description = "Instant coding answers via the command line";
     homepage = "https://github.com/gleitz/howdoi";
+    changelog = "https://github.com/gleitz/howdoi/blob/v${version}/CHANGES.txt";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/hpack/default.nix b/pkgs/development/python-modules/hpack/default.nix
index 1b45fc67d62ee..df23b4ec3c8ee 100644
--- a/pkgs/development/python-modules/hpack/default.nix
+++ b/pkgs/development/python-modules/hpack/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, hypothesis
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  hypothesis,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -30,6 +31,6 @@ buildPythonPackage rec {
     description = "Pure-Python HPACK header compression";
     homepage = "https://github.com/python-hyper/hpack";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/hpccm/default.nix b/pkgs/development/python-modules/hpccm/default.nix
index 35380d7171b6f..1ab5e163a0bc4 100644
--- a/pkgs/development/python-modules/hpccm/default.nix
+++ b/pkgs/development/python-modules/hpccm/default.nix
@@ -1,26 +1,40 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, six
-, archspec
-, pytestCheckHook
-, pytest-xdist
+{
+  lib,
+  archspec,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "hpccm";
-  version = "22.10.0";
-  format = "setuptools";
+  version = "23.11.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "NVIDIA";
     repo = "hpc-container-maker";
-    rev = "v${version}";
-    hash = "sha256-dLMbwtvn7HTVVlWHAzXU19ERdJxytf9NlnqMXW6ShKI=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-uB2+1Nc+SgPzB5hJI1L6yD8gn0hGOkIZF6rejq4rYg8=";
   };
 
-  propagatedBuildInputs = [ six archspec ];
-  nativeCheckInputs = [ pytestCheckHook pytest-xdist ];
+  build-system = [ setuptools ];
+
+  dependencies = [
+    six
+    archspec
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-xdist
+  ];
 
   disabledTests = [
     # tests require git
@@ -32,10 +46,11 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "HPC Container Maker";
-    mainProgram = "hpccm";
     homepage = "https://github.com/NVIDIA/hpc-container-maker";
+    changelog = "https://github.com/NVIDIA/hpc-container-maker/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    platforms = platforms.x86;
     maintainers = with maintainers; [ atila ];
+    mainProgram = "hpccm";
+    platforms = platforms.x86;
   };
 }
diff --git a/pkgs/development/python-modules/hs-dbus-signature/default.nix b/pkgs/development/python-modules/hs-dbus-signature/default.nix
index 9b96788589517..2656b55e7f0f1 100644
--- a/pkgs/development/python-modules/hs-dbus-signature/default.nix
+++ b/pkgs/development/python-modules/hs-dbus-signature/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, hypothesis
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  hypothesis,
 }:
 
 buildPythonPackage rec {
@@ -23,7 +24,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "hs_dbus_signature" ];
 
   meta = with lib; {
-    description = "A Hypothesis Strategy for Generating Arbitrary DBus Signatures";
+    description = "Hypothesis Strategy for Generating Arbitrary DBus Signatures";
     homepage = "https://github.com/stratis-storage/hs-dbus-signature";
     license = licenses.mpl20;
     maintainers = with maintainers; [ nickcao ];
diff --git a/pkgs/development/python-modules/hsaudiotag3k/default.nix b/pkgs/development/python-modules/hsaudiotag3k/default.nix
index 8fd245d17868d..39d4546ee53ea 100644
--- a/pkgs/development/python-modules/hsaudiotag3k/default.nix
+++ b/pkgs/development/python-modules/hsaudiotag3k/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,8 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A pure Python library that lets one to read metadata from media files";
+    description = "Pure Python library that lets one to read metadata from media files";
     homepage = "http://hg.hardcoded.net/hsaudiotag/";
     license = licenses.bsd3;
   };
-
 }
diff --git a/pkgs/development/python-modules/hsh/default.nix b/pkgs/development/python-modules/hsh/default.nix
index 2bc68d3aac9d4..f7efbc14e8aec 100644
--- a/pkgs/development/python-modules/hsh/default.nix
+++ b/pkgs/development/python-modules/hsh/default.nix
@@ -1,13 +1,13 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, commandlines
-, unittestCheckHook
-, pexpect
-, naked
-, nix-update-script
-, setuptools
-, wheel
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  commandlines,
+  unittestCheckHook,
+  pexpect,
+  naked,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +24,16 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ commandlines ];
 
-  nativeBuildInputs = [ setuptools wheel ];
+  nativeBuildInputs = [
+    setuptools
+    wheel
+  ];
 
-  nativeCheckInputs = [ unittestCheckHook pexpect naked ];
+  nativeCheckInputs = [
+    unittestCheckHook
+    pexpect
+    naked
+  ];
 
   preCheck = "cd tests";
 
diff --git a/pkgs/development/python-modules/hsluv/default.nix b/pkgs/development/python-modules/hsluv/default.nix
index 9ddf64330770d..063137b74e4d9 100644
--- a/pkgs/development/python-modules/hsluv/default.nix
+++ b/pkgs/development/python-modules/hsluv/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-bjivmPTU3Gp3pcC0ru4GSZANdhPqS1QSTMeiPGN8GCI=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "hsluv" ];
 
diff --git a/pkgs/development/python-modules/hstspreload/default.nix b/pkgs/development/python-modules/hstspreload/default.nix
index 692cd31354ed0..12de293358e86 100644
--- a/pkgs/development/python-modules/hstspreload/default.nix
+++ b/pkgs/development/python-modules/hstspreload/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "hstspreload";
-  version = "2024.5.1";
+  version = "2024.9.1";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "sethmlarson";
     repo = "hstspreload";
     rev = "refs/tags/${version}";
-    hash = "sha256-Ut2VhU2+o4wm4WY4zz/25EyDLvrYoBu3iVFkx3FZVYo=";
+    hash = "sha256-mpHJG2TqhlTNZ9fbyOZsoKusAvx8EiiP7dATCZh19dQ=";
   };
 
   build-system = [ setuptools ];
@@ -31,6 +31,6 @@ buildPythonPackage rec {
     description = "Chromium HSTS Preload list as a Python package and updated daily";
     homepage = "https://github.com/sethmlarson/hstspreload";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/html-sanitizer/default.nix b/pkgs/development/python-modules/html-sanitizer/default.nix
index e1ecf2764e4f7..5a3ff0947db83 100644
--- a/pkgs/development/python-modules/html-sanitizer/default.nix
+++ b/pkgs/development/python-modules/html-sanitizer/default.nix
@@ -1,16 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, lxml
-, beautifulsoup4
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  lxml,
+  lxml-html-clean,
+  beautifulsoup4,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "html-sanitizer";
-  version = "2.3.1";
+  version = "2.4.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -19,25 +21,20 @@ buildPythonPackage rec {
     owner = "matthiask";
     repo = "html-sanitizer";
     rev = "refs/tags/${version}";
-    hash = "sha256-NWJLD70783Ie6efyCvGopxMIlP3rLz0uM/D1rLQwBXE=";
+    hash = "sha256-6OWFLsuefeDzQ1uHnLmboKDgrbY/xJCwqsSQlDaJlRs=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     lxml
+    lxml-html-clean
     beautifulsoup4
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "html_sanitizer/tests.py"
-  ];
+  pytestFlagsArray = [ "html_sanitizer/tests.py" ];
 
   disabledTests = [
     # Tests are sensitive to output
@@ -45,9 +42,7 @@ buildPythonPackage rec {
     "test_10_broken_html"
   ];
 
-  pythonImportsCheck = [
-    "html_sanitizer"
-  ];
+  pythonImportsCheck = [ "html_sanitizer" ];
 
   meta = with lib; {
     description = "Allowlist-based and very opinionated HTML sanitizer";
diff --git a/pkgs/development/python-modules/html-table-parser-python3/default.nix b/pkgs/development/python-modules/html-table-parser-python3/default.nix
new file mode 100644
index 0000000000000..c4f3f8fc46aaf
--- /dev/null
+++ b/pkgs/development/python-modules/html-table-parser-python3/default.nix
@@ -0,0 +1,33 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "html-table-parser-python3";
+  version = "0.3.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "schmijos";
+    repo = "html-table-parser-python3";
+    rev = "v${version}";
+    hash = "sha256-okYl0T12wVld7GVbFQH2hgEVKXSScipJN/vYaiRVdGY=";
+  };
+
+  build-system = [ poetry-core ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "html_table_parser" ];
+
+  meta = {
+    description = "Small and simple HTML table parser not requiring any external dependency.";
+    homepage = "https://github.com/schmijos/html-table-parser-python3";
+    license = lib.licenses.agpl3Only;
+    maintainers = with lib.maintainers; [ pyrox0 ];
+  };
+}
diff --git a/pkgs/development/python-modules/html-tag-names/default.nix b/pkgs/development/python-modules/html-tag-names/default.nix
index 543ef8686dc95..e61fee5d89abf 100644
--- a/pkgs/development/python-modules/html-tag-names/default.nix
+++ b/pkgs/development/python-modules/html-tag-names/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-2YywP4/0yocejuJwanC5g9BR7mcy5C+zMhCjNZ9FRH4=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/html-text/default.nix b/pkgs/development/python-modules/html-text/default.nix
index 00d2fb426d381..43d7ca228bb0e 100644
--- a/pkgs/development/python-modules/html-text/default.nix
+++ b/pkgs/development/python-modules/html-text/default.nix
@@ -1,37 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, lxml
-, six
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxml,
+  lxml-html-clean,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "html-text";
-  version = "0.5.2";
-  format = "setuptools";
+  version = "0.6.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
-    owner = "TeamHG-Memex";
+    owner = "zytedata";
     repo = "html-text";
-    rev = version;
-    hash = "sha256-jw/hpz0QfcgP5OEJcmre0h1OzOfpPtaROxHm+YUqces=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-e9gkibQv8mn1Jbt77UmpauOeTqhJQhY9R5Sge/iYi+U=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     lxml
+    lxml-html-clean
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-    six
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "html_text" ];
 
   meta = with lib; {
     description = "Extract text from HTML";
-    homepage = "https://github.com/TeamHG-Memex/html-text";
+    homepage = "https://github.com/zytedata/html-text";
+    changelog = "https://github.com/zytedata/html-text/blob/${version}/CHANGES.rst";
     license = licenses.mit;
     maintainers = with maintainers; [ ambroisie ];
   };
diff --git a/pkgs/development/python-modules/html-void-elements/default.nix b/pkgs/development/python-modules/html-void-elements/default.nix
index bef3d92080266..41cbefbf7adab 100644
--- a/pkgs/development/python-modules/html-void-elements/default.nix
+++ b/pkgs/development/python-modules/html-void-elements/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-Q5OEczTdgCCyoOsKv3MKRE3w4t/qyPG4YKbF19jlC88=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/html2image/default.nix b/pkgs/development/python-modules/html2image/default.nix
index 2b99f6bffeee6..bcf78da3db8f1 100644
--- a/pkgs/development/python-modules/html2image/default.nix
+++ b/pkgs/development/python-modules/html2image/default.nix
@@ -1,34 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, requests
-, websocket-client
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  requests,
+  websocket-client,
 }:
 
 buildPythonPackage rec {
   pname = "html2image";
-  version = "2.0.4.3";
+  version = "2.0.5";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "vgalin";
     repo = "html2image";
-    rev = version;
-    hash = "sha256-BDl2Kibp1WOAOYNlXa2aaEgQTitk+OZu72OgytciZYI=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-k5y89nUF+fhUj9uzTAPkkAdOb2TsTL2jm/ZXwHlxu/A=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-    --replace poetry.masonry.api poetry.core.masonry.api \
-    --replace "poetry>=" "poetry-core>="
+    --replace-fail poetry.masonry.api poetry.core.masonry.api \
+    --replace-fail "poetry>=" "poetry-core>="
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     requests
     websocket-client
   ];
@@ -36,7 +35,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "html2image" ];
 
   meta = with lib; {
-    description = "A package acting as a wrapper around the headless mode of existing web browsers to generate images from URLs and from HTML+CSS strings or files";
+    description = "Package acting as a wrapper around the headless mode of existing web browsers to generate images from URLs and from HTML+CSS strings or files";
     homepage = "https://github.com/vgalin/html2image";
     changelog = "https://github.com/vgalin/html2image/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/html2text/default.nix b/pkgs/development/python-modules/html2text/default.nix
index bda7879eab0a4..b114029aadacb 100644
--- a/pkgs/development/python-modules/html2text/default.nix
+++ b/pkgs/development/python-modules/html2text/default.nix
@@ -1,38 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "html2text";
   version = "2024.2.26";
   pyproject = true;
+
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "Alir3z4";
     repo = "html2text";
     rev = "refs/tags/${version}";
-    sha256 = "sha256-1CLkTFR+/XQ428WjMF7wliyAG6CB+n8JSsLDdLHPO7I=";
+    hash = "sha256-1CLkTFR+/XQ428WjMF7wliyAG6CB+n8JSsLDdLHPO7I=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "html2text" ];
 
   meta = with lib; {
-    changelog = "https://github.com/Alir3z4/html2text/blob/${src.rev}/ChangeLog.rst";
     description = "Turn HTML into equivalent Markdown-structured text";
     homepage = "https://github.com/Alir3z4/html2text/";
+    changelog = "https://github.com/Alir3z4/html2text/blob/${src.rev}/ChangeLog.rst";
     license = licenses.gpl3Only;
-    mainProgram = "html2text";
     maintainers = [ ];
+    mainProgram = "html2text";
   };
 }
diff --git a/pkgs/development/python-modules/html5-parser/default.nix b/pkgs/development/python-modules/html5-parser/default.nix
index 67f05cb8e7f63..2a3e0dfb42c3d 100644
--- a/pkgs/development/python-modules/html5-parser/default.nix
+++ b/pkgs/development/python-modules/html5-parser/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, chardet
-, fetchFromGitHub
-, lxml
-, pkg-config
-, pkgs
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  chardet,
+  fetchFromGitHub,
+  lxml,
+  pkg-config,
+  pkgs,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,13 +25,9 @@ buildPythonPackage rec {
     hash = "sha256-0Qn+To/d3+HMx+KhhgJBEHVYPOfIeBnngBraY7r4uSs=";
   };
 
-  nativeBuildInputs = [
-    pkg-config
-  ];
+  nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [
-    pkgs.libxml2
-  ];
+  buildInputs = [ pkgs.libxml2 ];
 
   propagatedBuildInputs = [
     chardet
@@ -42,18 +39,14 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "html5_parser"
-  ];
+  pythonImportsCheck = [ "html5_parser" ];
 
-  pytestFlagsArray = [
-    "test/*.py"
-  ];
+  pytestFlagsArray = [ "test/*.py" ];
 
   meta = with lib; {
     description = "Fast C based HTML 5 parsing for python";
     homepage = "https://html5-parser.readthedocs.io";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/html5lib/default.nix b/pkgs/development/python-modules/html5lib/default.nix
index b35cfee63dad7..0d294f93b7a64 100644
--- a/pkgs/development/python-modules/html5lib/default.nix
+++ b/pkgs/development/python-modules/html5lib/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, six
-, webencodings
-, mock
-, pytest-expect
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  six,
+  webencodings,
+  mock,
+  pytest-expect,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -51,6 +52,9 @@ buildPythonPackage rec {
       major web browsers.
     '';
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ domenkozar prikhi ];
+    maintainers = with lib.maintainers; [
+      domenkozar
+      prikhi
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/html5tagger/default.nix b/pkgs/development/python-modules/html5tagger/default.nix
index e9a96b8ddd113..527e3660481b1 100644
--- a/pkgs/development/python-modules/html5tagger/default.nix
+++ b/pkgs/development/python-modules/html5tagger/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -16,21 +17,17 @@ buildPythonPackage rec {
     hash = "sha256-Or0EizZC9FMjTcbgecDvgGB09KNGyxHreSDojgB7ysg=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "html5tagger"
-  ];
+  pythonImportsCheck = [ "html5tagger" ];
 
   meta = with lib; {
     description = "Create HTML documents from Python";
     homepage = "https://github.com/sanic-org/html5tagger";
     license = licenses.unlicense;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/htmldate/default.nix b/pkgs/development/python-modules/htmldate/default.nix
index 7ba14ca5e7147..3f504f7729b6f 100644
--- a/pkgs/development/python-modules/htmldate/default.nix
+++ b/pkgs/development/python-modules/htmldate/default.nix
@@ -5,7 +5,7 @@
   charset-normalizer,
   dateparser,
   faust-cchardet,
-  fetchPypi,
+  fetchFromGitHub,
   lxml,
   pytestCheckHook,
   python-dateutil,
@@ -16,14 +16,16 @@
 
 buildPythonPackage rec {
   pname = "htmldate";
-  version = "1.8.1";
+  version = "1.9.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-yvFobPdcYd0fBh7eXXpG51mxXV+Zh82OE8jEI3URJj0=";
+  src = fetchFromGitHub {
+    owner = "adbar";
+    repo = "htmldate";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-sddPlVaYenR8sQG/ronkYIcVH5nyQzcjF8rfeMr5I78=";
   };
 
   build-system = [ setuptools ];
@@ -34,7 +36,7 @@ buildPythonPackage rec {
     lxml
     python-dateutil
     urllib3
-  ] ++ lib.optionals (pythonOlder "3.7") [ backports-datetime-fromisoformat ];
+  ];
 
   passthru.optional-dependencies = {
     speed =
@@ -55,11 +57,12 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ pytestCheckHook ];
 
-  # disable tests that require an internet connection
   disabledTests = [
+    # Tests that require an internet connection
     "test_input"
     "test_cli"
     "test_download"
+    "test_readme_examples"
   ];
 
   pythonImportsCheck = [ "htmldate" ];
diff --git a/pkgs/development/python-modules/htmllaundry/default.nix b/pkgs/development/python-modules/htmllaundry/default.nix
deleted file mode 100644
index 0c7a3b8df81ab..0000000000000
--- a/pkgs/development/python-modules/htmllaundry/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi, nose
-, six
-, lxml
-}:
-
-buildPythonPackage rec {
-  pname = "htmllaundry";
-  version = "2.2";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "9124f067d3c06ef2613e2cc246b2fde2299802280a8b0e60dc504137085f0334";
-  };
-
-  buildInputs = [ nose ];
-  propagatedBuildInputs = [ six lxml ];
-
-  # some tests fail, probably because of changes in lxml
-  # not relevant for me, if releavnt for you, fix it...
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Simple HTML cleanup utilities";
-    license = licenses.bsd3;
-    homepage = "https://pypi.org/project/htmllaundry/";
-  };
-
-}
diff --git a/pkgs/development/python-modules/htmllistparse/default.nix b/pkgs/development/python-modules/htmllistparse/default.nix
index 01fa41eae2fee..5bd467bed3851 100644
--- a/pkgs/development/python-modules/htmllistparse/default.nix
+++ b/pkgs/development/python-modules/htmllistparse/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, beautifulsoup4
-, html5lib
-, requests
-, fusepy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  beautifulsoup4,
+  html5lib,
+  requests,
+  fusepy,
 }:
 
 buildPythonPackage rec {
@@ -19,20 +20,23 @@ buildPythonPackage rec {
   };
 
   nativeBuildInputs = [ setuptools ];
-  propagatedBuildInputs = [ beautifulsoup4 html5lib requests fusepy ];
+  propagatedBuildInputs = [
+    beautifulsoup4
+    html5lib
+    requests
+    fusepy
+  ];
 
   # upstream has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "htmllistparse"
-  ];
+  pythonImportsCheck = [ "htmllistparse" ];
 
   meta = with lib; {
     homepage = "https://github.com/gumblex/htmllisting-parser";
     description = "Python parser for Apache/nginx-style HTML directory listing";
     mainProgram = "rehttpfs";
     license = licenses.mit;
-    maintainers = with maintainers; [ hexchen ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/htmlmin/default.nix b/pkgs/development/python-modules/htmlmin/default.nix
index 0f0d5222feae8..fd19103e41ace 100644
--- a/pkgs/development/python-modules/htmlmin/default.nix
+++ b/pkgs/development/python-modules/htmlmin/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "htmlmin";
@@ -13,10 +17,10 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A configurable HTML Minifier with safety features";
+    description = "Configurable HTML Minifier with safety features";
     mainProgram = "htmlmin";
     homepage = "https://pypi.python.org/pypi/htmlmin";
     license = licenses.bsd3;
-    maintainers = [];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/htmltools/default.nix b/pkgs/development/python-modules/htmltools/default.nix
new file mode 100644
index 0000000000000..f7375cab0b772
--- /dev/null
+++ b/pkgs/development/python-modules/htmltools/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, setuptools
+, packaging
+, typing-extensions
+, pytestCheckHook
+, syrupy
+}:
+
+buildPythonPackage rec {
+  pname = "htmltools";
+  version = "0.5.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "posit-dev";
+    repo = "py-htmltools";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-+BSbJdWmqoEQGEJWBgoTVe4bbvlGJiMyfvvj0lAy9ZA=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
+    packaging
+    typing-extensions
+  ];
+
+  pythonImportsCheck = [ "htmltools" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    syrupy
+  ];
+
+  meta = {
+    description = "Tools for HTML generation and output";
+    homepage = "https://github.com/posit-dev/py-htmltools";
+    changelog = "https://github.com/posit-dev/py-htmltools/blob/${src.rev}/CHANGELOG.md";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ bcdarwin ];
+  };
+}
diff --git a/pkgs/development/python-modules/htseq/default.nix b/pkgs/development/python-modules/htseq/default.nix
index 9d69a8bfef542..f5327c0edb400 100644
--- a/pkgs/development/python-modules/htseq/default.nix
+++ b/pkgs/development/python-modules/htseq/default.nix
@@ -1,29 +1,79 @@
-{ lib, buildPythonPackage, fetchFromGitHub, cython, numpy, pysam, matplotlib, python, isPy27, isPy3k }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  swig,
+  cython,
+  matplotlib,
+  numpy,
+  pandas,
+  pysam,
+  setuptools,
+  pytestCheckHook,
+  nix-update-script,
+}:
 buildPythonPackage rec {
-  version = "0.12.4";
-  format = "setuptools";
   pname = "htseq";
+  version = "2.0.4";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "htseq";
     repo = "htseq";
     rev = "release_${version}";
-    sha256 = "0y7vh249sljqjnv81060w4xkdx6f1y5zdqkh38yk926x6v9riijm";
+    hash = "sha256-7ocrmuj9LOtPz9XbI5rKGcdE5JbFz/pZh00Nie65XxE=";
   };
 
-  nativeBuildInputs = [ cython ];
-  propagatedBuildInputs = [ numpy pysam matplotlib ];
+  patches = [
+    # https://github.com/htseq/htseq/pull/84
+    (fetchpatch {
+      name = "replace-distutils-with-sysconfig.patch";
+      url = "https://github.com/htseq/htseq/commit/f0f1e464ee9aee56f0b44f905e7b3355b0bb8f29.patch";
+      hash = "sha256-yDYkXCPy+YFgnk1rnXwCB998aZwVd5nJeejZIgeEzAo=";
+    })
+  ];
 
-  checkPhase = lib.optionalString isPy27 ''
-    ${python.interpreter} python2/test/test_general.py
-  '' + lib.optionalString isPy3k ''
-    ${python.interpreter} python3/test/test_general.py
+  nativeBuildInputs = [ swig ];
+
+  build-system = [
+    cython
+    numpy
+    pysam
+    setuptools
+  ];
+
+  dependencies = [
+    numpy
+    pysam
+  ];
+
+  optional-dependencies = {
+    htseq-qa = [ matplotlib ];
+  };
+
+  pythonImportsCheck = [ "HTSeq" ];
+
+  nativeCheckInputs = [
+    pandas
+    pytestCheckHook
+  ] ++ optional-dependencies.htseq-qa;
+
+  preCheck = ''
+    rm -r src HTSeq
+    export PATH=$out/bin:$PATH
   '';
 
+  passthru.updateScript = nix-update-script {
+    extraArgs = [
+      "--version-regex"
+      "release_(.+)"
+    ];
+  };
+
   meta = with lib; {
     homepage = "https://htseq.readthedocs.io/";
-    description = "A framework to work with high-throughput sequencing data";
+    description = "Framework to work with high-throughput sequencing data";
     maintainers = with maintainers; [ unode ];
-    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/httmock/default.nix b/pkgs/development/python-modules/httmock/default.nix
index a305ec1f7baf5..6428b99868f2c 100644
--- a/pkgs/development/python-modules/httmock/default.nix
+++ b/pkgs/development/python-modules/httmock/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -27,7 +28,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "httmock" ];
 
   meta = with lib; {
-    description = "A mocking library for requests";
+    description = "Mocking library for requests";
     homepage = "https://github.com/patrys/httmock";
     license = licenses.asl20;
     maintainers = with maintainers; [ nyanloutre ];
diff --git a/pkgs/development/python-modules/http-ece/default.nix b/pkgs/development/python-modules/http-ece/default.nix
index 0f69315edb6d1..d4010abc52426 100644
--- a/pkgs/development/python-modules/http-ece/default.nix
+++ b/pkgs/development/python-modules/http-ece/default.nix
@@ -1,35 +1,40 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchPypi
-, mock
-, pynose
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  pytest-cov-stub,
 }:
 
 buildPythonPackage rec {
   pname = "http-ece";
-  version = "1.2.0";
+  version = "1.2.1";
+  pyproject = true;
 
-  src = fetchPypi {
-    pname = "http_ece";
-    inherit version;
-    sha256 = "sha256-tZIPjvuOG1+wJXE+Ozb9pUM2JiAQY0sm3B+Y+F0es94=";
+  src = fetchFromGitHub {
+    owner = "web-push-libs";
+    repo = "encrypted-content-encoding";
+    rev = version;
+    hash = "sha256-HjXJWoOvCVOdEto4Ss4HPUuf+uNcQkfvj/cxJGHOhQ8=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace-fail '"nose",' "" \
-      --replace-fail '"coverage",' ""
-  '';
+  sourceRoot = "${src.name}/python";
 
-  propagatedBuildInputs = [ cryptography ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [ mock pynose ];
+  dependencies = [ cryptography ];
 
-  meta = with lib; {
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-cov-stub
+  ];
+
+  meta = {
     description = "Encipher HTTP Messages";
-    homepage = "https://github.com/martinthomson/encrypted-content-encoding";
-    license = licenses.mit;
-    maintainers = with maintainers; [ peterhoeg ];
+    homepage = "https://github.com/web-push-libs/encrypted-content-encoding";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ peterhoeg ];
   };
 }
diff --git a/pkgs/development/python-modules/http-message-signatures/default.nix b/pkgs/development/python-modules/http-message-signatures/default.nix
index b9ccede6714eb..47041ff971fa3 100644
--- a/pkgs/development/python-modules/http-message-signatures/default.nix
+++ b/pkgs/development/python-modules/http-message-signatures/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, http-sfv
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
-, requests
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  http-sfv,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-Jsivw4lNA/2oqsOGGx8D4gUPftzuys877A9RXyapnSQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     cryptography
@@ -37,13 +36,9 @@ buildPythonPackage rec {
     requests
   ];
 
-  pytestFlagsArray = [
-    "test/test.py"
-  ];
+  pytestFlagsArray = [ "test/test.py" ];
 
-  pythonImportsCheck = [
-    "http_message_signatures"
-  ];
+  pythonImportsCheck = [ "http_message_signatures" ];
 
   meta = with lib; {
     description = "Requests authentication module for HTTP Signature";
diff --git a/pkgs/development/python-modules/http-parser/default.nix b/pkgs/development/python-modules/http-parser/default.nix
index 05cd4397dbf93..7e53465939f28 100644
--- a/pkgs/development/python-modules/http-parser/default.nix
+++ b/pkgs/development/python-modules/http-parser/default.nix
@@ -1,9 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cython
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cython,
+  setuptools,
+  pytestCheckHook,
+  fetchpatch,
 }:
 
 buildPythonPackage rec {
@@ -28,18 +30,24 @@ buildPythonPackage rec {
     make -B
   '';
 
-  pythonImportsCheck = [
-    "http_parser"
-  ];
+  pythonImportsCheck = [ "http_parser" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
+  # The imp module is deprecated since version 3.4, and was removed in 3.12
+  # https://docs.python.org/3.11/library/imp.html
+  # Fix from: https://github.com/benoitc/http-parser/pull/101/
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/benoitc/http-parser/commit/4d4984ce129253f9de475bfd3c683301c916e8b1.patch";
+      hash = "sha256-d3k1X41/D9PpPWsDety2AiYyLv9LJIhpkOo3a6qKcB8=";
+    })
   ];
 
-  meta = with lib; {
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
     description = "HTTP request/response parser for python in C";
     homepage = "https://github.com/benoitc/http-parser";
-    license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.mit;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/http-sfv/default.nix b/pkgs/development/python-modules/http-sfv/default.nix
index 205b9c7423dd9..0afeba88c0827 100644
--- a/pkgs/development/python-modules/http-sfv/default.nix
+++ b/pkgs/development/python-modules/http-sfv/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -20,20 +21,14 @@ buildPythonPackage rec {
     hash = "sha256-xf9bGDfsEcQnFQ2b1bLRGYug+H4e5jeV/LJstQtp6Bw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ typing-extensions ];
 
   # Tests require external data (https://github.com/httpwg/structured-field-tests)
   doCheck = false;
 
-  pythonImportsCheck = [
-    "http_sfv"
-  ];
+  pythonImportsCheck = [ "http_sfv" ];
 
   meta = with lib; {
     description = "Module to parse and serialise HTTP structured field values";
diff --git a/pkgs/development/python-modules/httpagentparser/default.nix b/pkgs/development/python-modules/httpagentparser/default.nix
index bc7a8e33f4aca..b85f773984533 100644
--- a/pkgs/development/python-modules/httpagentparser/default.nix
+++ b/pkgs/development/python-modules/httpagentparser/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
   # PyPi version does not include test directory
   doCheck = false;
 
-  pythonImportsCheck = [
-    "httpagentparser"
-  ];
+  pythonImportsCheck = [ "httpagentparser" ];
 
   meta = with lib; {
     description = "Module to extract OS, Browser, etc. information from http user agent string";
diff --git a/pkgs/development/python-modules/httpauth/default.nix b/pkgs/development/python-modules/httpauth/default.nix
index 032830d539651..80362a801d36b 100644
--- a/pkgs/development/python-modules/httpauth/default.nix
+++ b/pkgs/development/python-modules/httpauth/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
-  version = "0.3";
+  version = "0.4.1";
   format = "setuptools";
   pname = "httpauth";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0qas7876igyz978pgldp5r7n7pis8n4vf0v87gxr9l7p7if5lr3l";
+    hash = "sha256-C6rnFroAd5vOULBMwsLSyeSK5zPXOEgGHDSYt+Pm2dQ=";
   };
 
   doCheck = false;
@@ -19,7 +20,6 @@ buildPythonPackage rec {
     description = "WSGI HTTP Digest Authentication middleware";
     homepage = "https://github.com/jonashaag/httpauth";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/httpbin/default.nix b/pkgs/development/python-modules/httpbin/default.nix
index 076babe49b462..4b670b4c17bde 100644
--- a/pkgs/development/python-modules/httpbin/default.nix
+++ b/pkgs/development/python-modules/httpbin/default.nix
@@ -1,26 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, brotlicffi
-, decorator
-, flasgger
-, flask
-, greenlet
-, six
-, werkzeug
+  # dependencies
+  brotlicffi,
+  decorator,
+  flasgger,
+  flask,
+  greenlet,
+  six,
+  werkzeug,
 
-# optional-dependencies
-, gunicorn
-, gevent
+  # optional-dependencies
+  gunicorn,
+  gevent,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -35,12 +35,9 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     setuptools
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "greenlet"
-  ];
+  pythonRelaxDeps = [ "greenlet" ];
 
   propagatedBuildInputs = [
     brotlicffi
@@ -59,9 +56,7 @@ buildPythonPackage rec {
     ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Tests seems to be outdated
@@ -74,14 +69,12 @@ buildPythonPackage rec {
     "test_relative_redirect_n_higher_than_1"
   ];
 
-  pythonImportsCheck = [
-    "httpbin"
-  ];
+  pythonImportsCheck = [ "httpbin" ];
 
   meta = with lib; {
     description = "HTTP Request and Response Service";
     homepage = "https://github.com/psf/httpbin";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/httpcore/default.nix b/pkgs/development/python-modules/httpcore/default.nix
index 212db973e9e0a..b1d64e6526be4 100644
--- a/pkgs/development/python-modules/httpcore/default.nix
+++ b/pkgs/development/python-modules/httpcore/default.nix
@@ -1,28 +1,30 @@
-{ lib
-, anyio
-, buildPythonPackage
-, certifi
-, fetchFromGitHub
-, hatchling
-, hatch-fancy-pypi-readme
-, h11
-, h2
-, pproxy
-, pytest-asyncio
-, pytest-httpbin
-, pytest-trio
-, pytestCheckHook
-, pythonOlder
-, socksio
-, trio
-# for passthru.tests
-, httpx
-, httpx-socks
+{
+  lib,
+  anyio,
+  buildPythonPackage,
+  certifi,
+  fetchFromGitHub,
+  hatchling,
+  hatch-fancy-pypi-readme,
+  h11,
+  h2,
+  pproxy,
+  pytest-asyncio,
+  pytest-httpbin,
+  pytest-trio,
+  pytestCheckHook,
+  pythonOlder,
+  socksio,
+  trio,
+  # for passthru.tests
+  httpx,
+  httpx-socks,
+  respx,
 }:
 
 buildPythonPackage rec {
   pname = "httpcore";
-  version = "1.0.4";
+  version = "1.0.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -31,7 +33,7 @@ buildPythonPackage rec {
     owner = "encode";
     repo = "httpcore";
     rev = "refs/tags/${version}";
-    hash = "sha256-DK5avYEtQcTFogpdEjw0NB4qkzDm5cZKPjAE8MC6Sng=";
+    hash = "sha256-05jYLrBiPRg1qQEz8mRvYJKHFsfneh7z9yHIXuYYa5o=";
   };
 
   nativeBuildInputs = [
@@ -45,18 +47,10 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    asyncio = [
-      anyio
-    ];
-    http2 = [
-      h2
-    ];
-    socks = [
-      socksio
-    ];
-    trio = [
-      trio
-    ];
+    asyncio = [ anyio ];
+    http2 = [ h2 ];
+    socks = [ socksio ];
+    trio = [ trio ];
   };
 
   nativeCheckInputs = [
@@ -67,19 +61,17 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "httpcore"
-  ];
+  pythonImportsCheck = [ "httpcore" ];
 
   __darwinAllowLocalNetworking = true;
 
   passthru.tests = {
-    inherit httpx httpx-socks;
+    inherit httpx httpx-socks respx;
   };
 
   meta = with lib; {
     changelog = "https://github.com/encode/httpcore/blob/${version}/CHANGELOG.md";
-    description = "A minimal low-level HTTP client";
+    description = "Minimal low-level HTTP client";
     homepage = "https://github.com/encode/httpcore";
     license = licenses.bsd3;
     maintainers = with maintainers; [ ris ];
diff --git a/pkgs/development/python-modules/httpie-ntlm/default.nix b/pkgs/development/python-modules/httpie-ntlm/default.nix
index cbf3b29bcf03e..fddee51c99fcc 100644
--- a/pkgs/development/python-modules/httpie-ntlm/default.nix
+++ b/pkgs/development/python-modules/httpie-ntlm/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, httpie
-, requests-ntlm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  httpie,
+  requests-ntlm,
 }:
 
 buildPythonPackage rec {
@@ -15,7 +16,10 @@ buildPythonPackage rec {
     sha256 = "b1f757180c0bd60741ea16cf91fc53d47df402a5c287c4a61a14b335ea0552b3";
   };
 
-  propagatedBuildInputs = [ httpie requests-ntlm ];
+  propagatedBuildInputs = [
+    httpie
+    requests-ntlm
+  ];
 
   # Package have no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/httpie/default.nix b/pkgs/development/python-modules/httpie/default.nix
index 43f69ecd3c9bb..86b4e4e51224f 100644
--- a/pkgs/development/python-modules/httpie/default.nix
+++ b/pkgs/development/python-modules/httpie/default.nix
@@ -1,48 +1,52 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, installShellFiles
-, pandoc
-, pythonOlder
-# BuildInputs
-, charset-normalizer
-, defusedxml
-, multidict
-, pygments
-, requests
-, requests-toolbelt
-, setuptools
-, rich
-, pysocks
-# CheckInputs
-, pip
-, pytest-httpbin
-, pytest-lazy-fixture
-, pytest-mock
-, pytestCheckHook
-, responses
-, werkzeug
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  charset-normalizer,
+  defusedxml,
+  fetchFromGitHub,
+  installShellFiles,
+  multidict,
+  pandoc,
+  pip,
+  pygments,
+  pytest-httpbin,
+  pytest-lazy-fixture,
+  pytest-mock,
+  pytestCheckHook,
+  requests-toolbelt,
+  requests,
+  responses,
+  rich,
+  setuptools,
+  werkzeug,
 }:
 
 buildPythonPackage rec {
   pname = "httpie";
-  version = "3.2.2";
-  format = "setuptools";
+  version = "3.2.3";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "httpie";
     repo = "httpie";
-    rev = version;
-    hash = "sha256-hPsjEpvT6tnPm68AUB2Tv3Gon4DfSzO2VYCGqP8ozSI=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-ogUqhMVY1fm+hKCMFYqfYsqHX+Gj6y8CMOUsxA3q29g=";
   };
 
+  pythonRelaxDeps = [
+    "defusedxml"
+    "requests"
+  ];
+
+  build-system = [ setuptools ];
+
   nativeBuildInputs = [
     installShellFiles
     pandoc
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     charset-normalizer
     defusedxml
     multidict
@@ -81,46 +85,37 @@ buildPythonPackage rec {
     "tests"
   ];
 
-  pythonImportsCheck = [
-    "httpie"
-  ];
+  pythonImportsCheck = [ "httpie" ];
 
-  disabledTestPaths = lib.optionals stdenv.isDarwin [
-    # flaky
+  disabledTestPaths = [
+    # Tests are flaky
     "tests/test_plugins_cli.py"
   ];
 
-  disabledTests = [
-    # flaky
-    "test_stdin_read_warning"
-    # Re-evaluate those tests with the next release
-    "test_duplicate_keys_support_from_response"
-    "test_invalid_xml"
-    "test_json_formatter_with_body_preceded_by_non_json_data"
-    "test_pretty_options_with_and_without_stream_with_converter"
-    "test_response_mime_overwrite"
-    "test_terminal_output_response_charset_detection"
-    "test_terminal_output_response_charset_override"
-    "test_terminal_output_response_content_type_charset_with_stream"
-    "test_terminal_output_response_content_type_charset"
-    "test_valid_xml"
-    "test_xml_format_options"
-    "test_xml_xhtm"
-    # httpbin compatibility issues
-    "test_compress_form"
-    "test_binary_suppresses_when_terminal"
-    "test_binary_suppresses_when_not_terminal_but_pretty"
-    "test_binary_included_and_correct_when_suitable"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # flaky
-    "test_daemon_runner"
-  ];
+  disabledTests =
+    [
+      # Test is flaky
+      "test_stdin_read_warning"
+      # httpbin compatibility issues
+      "test_compress_form"
+      "test_binary_suppresses_when_terminal"
+      "test_binary_suppresses_when_not_terminal_but_pretty"
+      "test_binary_included_and_correct_when_suitable"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Test is flaky
+      "test_daemon_runner"
+    ];
 
   meta = with lib; {
-    description = "A command line HTTP client whose goal is to make CLI human-friendly";
+    description = "Command line HTTP client whose goal is to make CLI human-friendly";
     homepage = "https://httpie.org/";
     changelog = "https://github.com/httpie/httpie/blob/${version}/CHANGELOG.md";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ antono relrod schneefux ];
+    maintainers = with maintainers; [
+      antono
+      relrod
+      schneefux
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/httplib2/default.nix b/pkgs/development/python-modules/httplib2/default.nix
index aa4abf313d201..a6c3e42a5317f 100644
--- a/pkgs/development/python-modules/httplib2/default.nix
+++ b/pkgs/development/python-modules/httplib2/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, isPy27
-, mock
-, pyparsing
-, pytest-forked
-, pytest-randomly
-, pytest-timeout
-, pytestCheckHook
-, pythonAtLeast
-, six
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  mock,
+  pyparsing,
+  pytest-forked,
+  pytest-randomly,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonAtLeast,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +30,7 @@ buildPythonPackage rec {
     sed -i "/--cov/d" setup.cfg
   '';
 
-  propagatedBuildInputs = [
-    pyparsing
-  ];
+  propagatedBuildInputs = [ pyparsing ];
 
   nativeCheckInputs = [
     cryptography
@@ -49,32 +47,30 @@ buildPythonPackage rec {
   # Don't run tests for older Pythons
   doCheck = pythonAtLeast "3.9";
 
-  disabledTests = [
-    # ValueError: Unable to load PEM file.
-    # https://github.com/httplib2/httplib2/issues/192#issuecomment-993165140
-    "test_client_cert_password_verified"
+  disabledTests =
+    [
+      # ValueError: Unable to load PEM file.
+      # https://github.com/httplib2/httplib2/issues/192#issuecomment-993165140
+      "test_client_cert_password_verified"
 
-    # improper pytest marking
-    "test_head_301"
-    "test_303"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # fails with "ConnectionResetError: [Errno 54] Connection reset by peer"
-    "test_connection_close"
-    # fails with HTTP 408 Request Timeout, instead of expected 200 OK
-    "test_timeout_subsequent"
-    "test_connection_close"
-  ];
+      # improper pytest marking
+      "test_head_301"
+      "test_303"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # fails with "ConnectionResetError: [Errno 54] Connection reset by peer"
+      "test_connection_close"
+      # fails with HTTP 408 Request Timeout, instead of expected 200 OK
+      "test_timeout_subsequent"
+      "test_connection_close"
+    ];
 
-  pytestFlagsArray = [
-    "--ignore python2"
-  ];
+  pytestFlagsArray = [ "--ignore python2" ];
 
-  pythonImportsCheck = [
-    "httplib2"
-  ];
+  pythonImportsCheck = [ "httplib2" ];
 
   meta = with lib; {
-    description = "A comprehensive HTTP client library";
+    description = "Comprehensive HTTP client library";
     homepage = "https://github.com/httplib2/httplib2";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/development/python-modules/httpretty/default.nix b/pkgs/development/python-modules/httpretty/default.nix
index ecde40353f316..0eb948bea4745 100644
--- a/pkgs/development/python-modules/httpretty/default.nix
+++ b/pkgs/development/python-modules/httpretty/default.nix
@@ -1,33 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, sure
-, six
-, pytest
-, freezegun
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+
+  # tests
+  freezegun,
+  mock,
+  pytestCheckHook,
+  sure,
 }:
 
 buildPythonPackage rec {
   pname = "httpretty";
   version = "1.1.4";
-  format = "setuptools";
-
-  # drop this for version > 0.9.7
-  # Flaky tests: https://github.com/gabrielfalcao/HTTPretty/pull/394
-  doCheck = lib.versionAtLeast version "0.9.8";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "20de0e5dd5a18292d36d928cc3d6e52f8b2ac73daec40d41eb62dee154933b68";
   };
 
-  propagatedBuildInputs = [ six ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
-    sure
     freezegun
+    mock
     pytestCheckHook
+    sure
   ];
 
   disabledTestPaths = [
diff --git a/pkgs/development/python-modules/httpserver/default.nix b/pkgs/development/python-modules/httpserver/default.nix
index 6d13740758863..9b65a6341ced6 100644
--- a/pkgs/development/python-modules/httpserver/default.nix
+++ b/pkgs/development/python-modules/httpserver/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchPypi, buildPythonPackage, docopt, pythonOlder }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  docopt,
+}:
 
 buildPythonPackage rec {
   pname = "httpserver";
@@ -11,9 +16,6 @@ buildPythonPackage rec {
   # drivers.
   doCheck = false;
 
-  # Because it uses asyncio
-  disabled = pythonOlder "3.4";
-
   src = fetchPypi {
     inherit pname version;
     sha256 = "1q62g324dvb0hqdwwrnj41sqr4d3ly78v9nc26rz1whj4pwdmhsv";
diff --git a/pkgs/development/python-modules/httpsig/default.nix b/pkgs/development/python-modules/httpsig/default.nix
index fe7ed11c2fffe..f18ee0857bfc5 100644
--- a/pkgs/development/python-modules/httpsig/default.nix
+++ b/pkgs/development/python-modules/httpsig/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, setuptools-scm
-, pycryptodome
-, requests
-, six
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  pycryptodome,
+  requests,
+  six,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "httpsig" ];
 
diff --git a/pkgs/development/python-modules/httptools/default.nix b/pkgs/development/python-modules/httptools/default.nix
index 116ab28dc9895..c6d2c176a5f6d 100644
--- a/pkgs/development/python-modules/httptools/default.nix
+++ b/pkgs/development/python-modules/httptools/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,15 +20,13 @@ buildPythonPackage rec {
   # Tests are not included in pypi tarball
   doCheck = false;
 
-  pythonImportsCheck = [
-    "httptools"
-  ];
+  pythonImportsCheck = [ "httptools" ];
 
   meta = with lib; {
-    description = "A collection of framework independent HTTP protocol utils";
+    description = "Collection of framework independent HTTP protocol utils";
     homepage = "https://github.com/MagicStack/httptools";
     changelog = "https://github.com/MagicStack/httptools/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/httpx-auth/default.nix b/pkgs/development/python-modules/httpx-auth/default.nix
index 5fc267bfb25f2..b811a2c1c0820 100644
--- a/pkgs/development/python-modules/httpx-auth/default.nix
+++ b/pkgs/development/python-modules/httpx-auth/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, httpx
-, pyjwt
-, pytest-asyncio
-, pytest-httpx
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
-, time-machine
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpx,
+  pyjwt,
+  pytest-asyncio,
+  pytest-httpx,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  time-machine,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    httpx
-  ];
+  propagatedBuildInputs = [ httpx ];
 
   nativeCheckInputs = [
     pyjwt
@@ -43,9 +42,7 @@ buildPythonPackage rec {
     time-machine
   ];
 
-  pythonImportsCheck = [
-    "httpx_auth"
-  ];
+  pythonImportsCheck = [ "httpx_auth" ];
 
   __darwinAllowLocalNetworking = true;
 
diff --git a/pkgs/development/python-modules/httpx-ntlm/default.nix b/pkgs/development/python-modules/httpx-ntlm/default.nix
index 8d8a5e838b793..de83c397d68aa 100644
--- a/pkgs/development/python-modules/httpx-ntlm/default.nix
+++ b/pkgs/development/python-modules/httpx-ntlm/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, httpx
-, pyspnego
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  httpx,
+  pyspnego,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
   # https://github.com/ulodciv/httpx-ntlm/issues/5
   doCheck = false;
 
-  pythonImportsCheck = [
-    "httpx_ntlm"
-  ];
+  pythonImportsCheck = [ "httpx_ntlm" ];
 
   meta = with lib; {
     description = "NTLM authentication support for HTTPX";
diff --git a/pkgs/development/python-modules/httpx-socks/default.nix b/pkgs/development/python-modules/httpx-socks/default.nix
index 65dedd26c02fc..64049235003aa 100644
--- a/pkgs/development/python-modules/httpx-socks/default.nix
+++ b/pkgs/development/python-modules/httpx-socks/default.nix
@@ -1,24 +1,23 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, curio
-, fetchFromGitHub
-, flask
-, httpcore
-, httpx
-, hypercorn
-, pytest-asyncio
-, pytest-trio
-, pytestCheckHook
-, python-socks
-, pythonOlder
-, setuptools
-, sniffio
-, starlette
-, tiny-proxy
-, trio
-, trustme
-, yarl
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flask,
+  httpcore,
+  httpx,
+  hypercorn,
+  pytest-asyncio,
+  pytest-trio,
+  pytestCheckHook,
+  python-socks,
+  pythonOlder,
+  setuptools,
+  starlette,
+  tiny-proxy,
+  trio,
+  trustme,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -35,9 +34,7 @@ buildPythonPackage rec {
     hash = "sha256-9v5DfxEtM7jq+b8wR0M1klTSnSdFjQ4aDl8ZSZWxbFA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     httpx
@@ -46,12 +43,8 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    asyncio = [
-      async-timeout
-    ];
-    trio = [
-      trio
-    ];
+    asyncio = [ async-timeout ];
+    trio = [ trio ];
   };
 
   __darwinAllowLocalNetworking = true;
@@ -68,9 +61,7 @@ buildPythonPackage rec {
     yarl
   ];
 
-  pythonImportsCheck = [
-    "httpx_socks"
-  ];
+  pythonImportsCheck = [ "httpx_socks" ];
 
   disabledTests = [
     # Tests don't work in the sandbox
diff --git a/pkgs/development/python-modules/httpx-ws/default.nix b/pkgs/development/python-modules/httpx-ws/default.nix
new file mode 100644
index 0000000000000..fd02d918f04f4
--- /dev/null
+++ b/pkgs/development/python-modules/httpx-ws/default.nix
@@ -0,0 +1,68 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  hatchling,
+  anyio,
+  httpcore,
+  httpx,
+  wsproto,
+  pytestCheckHook,
+  starlette,
+  trio,
+  uvicorn,
+}:
+
+buildPythonPackage rec {
+  pname = "httpx-ws";
+  version = "0.6.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "frankie567";
+    repo = "httpx-ws";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-eDc21FiGHi98doS4Zbubb/MVw4IjQ1q496TFHCX4xB4=";
+  };
+
+  # we don't need to use the hatch-regex-commit plugin
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail 'source = "regex_commit"' "" \
+      --replace-fail 'commit_extra_args = ["-e"]' "" \
+      --replace-fail '"hatch-regex-commit"' "" \
+      --replace-fail 'addopts = "--cov=httpx_ws/ --cov-report=term-missing"' ""
+  '';
+
+  build-system = [ hatchling ];
+
+  dependencies = [
+    anyio
+    httpcore
+    httpx
+    wsproto
+  ];
+
+  pythonImportsCheck = [ "httpx_ws" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    starlette
+    trio
+    uvicorn
+  ];
+
+  disabledTestPaths = [
+    # hang
+    "tests/test_api.py"
+  ];
+
+  meta = with lib; {
+    description = "WebSocket support for HTTPX";
+    homepage = "https://github.com/frankie567/httpx-ws";
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/httpx/default.nix b/pkgs/development/python-modules/httpx/default.nix
index 5c6a296820bef..eb91fa3fce1e1 100644
--- a/pkgs/development/python-modules/httpx/default.nix
+++ b/pkgs/development/python-modules/httpx/default.nix
@@ -1,31 +1,32 @@
-{ lib
-, stdenv
-, anyio
-, brotli
-, brotlicffi
-, buildPythonPackage
-, certifi
-, chardet
-, click
-, fetchFromGitHub
-, h2
-, hatch-fancy-pypi-readme
-, hatchling
-, httpcore
-, idna
-, isPyPy
-, multipart
-, pygments
-, python
-, pythonOlder
-, rich
-, sniffio
-, socksio
-, pytestCheckHook
-, pytest-asyncio
-, pytest-trio
-, trustme
-, uvicorn
+{
+  lib,
+  stdenv,
+  anyio,
+  brotli,
+  brotlicffi,
+  buildPythonPackage,
+  certifi,
+  chardet,
+  click,
+  fetchFromGitHub,
+  h2,
+  hatch-fancy-pypi-readme,
+  hatchling,
+  httpcore,
+  idna,
+  isPyPy,
+  multipart,
+  pygments,
+  python,
+  pythonOlder,
+  rich,
+  sniffio,
+  socksio,
+  pytestCheckHook,
+  pytest-asyncio,
+  pytest-trio,
+  trustme,
+  uvicorn,
 }:
 
 buildPythonPackage rec {
@@ -56,17 +57,9 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    http2 = [
-      h2
-    ];
-    socks = [
-      socksio
-    ];
-    brotli = if isPyPy then [
-      brotlicffi
-    ] else [
-      brotli
-    ];
+    http2 = [ h2 ];
+    socks = [ socksio ];
+    brotli = if isPyPy then [ brotlicffi ] else [ brotli ];
     cli = [
       click
       rich
@@ -75,7 +68,7 @@ buildPythonPackage rec {
   };
 
   # trustme uses pyopenssl
-  doCheck = !(stdenv.isDarwin && stdenv.isAarch64);
+  doCheck = !(stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64);
 
   nativeCheckInputs = [
     chardet
@@ -93,8 +86,10 @@ buildPythonPackage rec {
   '';
 
   pytestFlagsArray = [
-    "-W" "ignore::DeprecationWarning"
-    "-W" "ignore::trio.TrioDeprecationWarning"
+    "-W"
+    "ignore::DeprecationWarning"
+    "-W"
+    "ignore::trio.TrioDeprecationWarning"
   ];
 
   disabledTests = [
@@ -105,19 +100,15 @@ buildPythonPackage rec {
     "test_sync_proxy_close"
   ];
 
-  disabledTestPaths = [
-    "tests/test_main.py"
-  ];
+  disabledTestPaths = [ "tests/test_main.py" ];
 
-  pythonImportsCheck = [
-    "httpx"
-  ];
+  pythonImportsCheck = [ "httpx" ];
 
   __darwinAllowLocalNetworking = true;
 
   meta = with lib; {
     changelog = "https://github.com/encode/httpx/blob/${src.rev}/CHANGELOG.md";
-    description = "The next generation HTTP client";
+    description = "Next generation HTTP client";
     mainProgram = "httpx";
     homepage = "https://github.com/encode/httpx";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/huawei-lte-api/default.nix b/pkgs/development/python-modules/huawei-lte-api/default.nix
index 4aa7b40ec2daf..232add95bf758 100644
--- a/pkgs/development/python-modules/huawei-lte-api/default.nix
+++ b/pkgs/development/python-modules/huawei-lte-api/default.nix
@@ -1,36 +1,38 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pycryptodomex
-, pytestCheckHook
-, requests
-, xmltodict
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pycryptodomex,
+  pytestCheckHook,
+  requests,
+  setuptools,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
   pname = "huawei-lte-api";
-  version = "1.8.1";
-  format = "setuptools";
+  version = "1.10";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "Salamek";
     repo = "huawei-lte-api";
     rev = "refs/tags/${version}";
-    hash = "sha256-KmkoCQDZ1NC3CKfV5DZBukExF9fUTojvWv2ZLTCzRZU=";
+    hash = "sha256-L6xCX+NHASunB876N1R++xMOx55Z8zc77j5QwKqHsNY=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     pycryptodomex
     requests
     xmltodict
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [
     "huawei_lte_api.AuthorizedConnection"
diff --git a/pkgs/development/python-modules/huepy/default.nix b/pkgs/development/python-modules/huepy/default.nix
new file mode 100644
index 0000000000000..541011ea2b50e
--- /dev/null
+++ b/pkgs/development/python-modules/huepy/default.nix
@@ -0,0 +1,33 @@
+{
+  lib,
+  fetchPypi,
+  setuptools,
+  buildPythonPackage,
+}:
+
+buildPythonPackage rec {
+  pname = "huepy";
+  version = "1.2.1";
+  pyproject = true;
+
+  src = fetchPypi {
+    pname = "huepy";
+    inherit version;
+    hash = "sha256-Wym+73lzEvt2BhiLxc2Y94q49+AVdkJ6kxLxybILdZ0=";
+  };
+
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "huepy" ];
+
+  # no test
+  doCheck = false;
+
+  meta = {
+    description = "Print awesomely in terminals";
+    homepage = "https://pypi.org/project/huepy/";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ tochiaha ];
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/pkgs/development/python-modules/huey/default.nix b/pkgs/development/python-modules/huey/default.nix
index 0b0b02b09714f..5b50ba6b2566f 100644
--- a/pkgs/development/python-modules/huey/default.nix
+++ b/pkgs/development/python-modules/huey/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, redis
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  redis,
 }:
 
 buildPythonPackage rec {
   pname = "huey";
-  version = "2.5.0";
+  version = "2.5.2";
 
   format = "pyproject";
 
@@ -16,7 +17,7 @@ buildPythonPackage rec {
     owner = "coleifer";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-t767eqZ6U12mG8nWEYC9Hoq/jW2yfrPkCxB3/xLKQww=";
+    hash = "sha256-0X4gUIFqkE4GLW5Eqbolpk7KZdsvjkRxD20YmLPG11A=";
   };
 
   nativeBuildInputs = [
@@ -31,9 +32,9 @@ buildPythonPackage rec {
 
   meta = with lib; {
     changelog = "https://github.com/coleifer/huey/blob/${src.rev}/CHANGELOG.md";
-    description = "A little task queue for python";
+    description = "Little task queue for python";
     homepage = "https://github.com/coleifer/huey";
     license = licenses.mit;
-    maintainers = [];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/hug/default.nix b/pkgs/development/python-modules/hug/default.nix
index 46dfab1cd52c4..2bd9cc3a20db3 100644
--- a/pkgs/development/python-modules/hug/default.nix
+++ b/pkgs/development/python-modules/hug/default.nix
@@ -1,10 +1,14 @@
-{ lib , buildPythonPackage, fetchFromGitHub, isPy27
-, falcon
-, requests
-, pytestCheckHook
-, marshmallow
-, mock
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  falcon,
+  requests,
+  pytestCheckHook,
+  marshmallow,
+  mock,
+  numpy,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +24,17 @@ buildPythonPackage rec {
     sha256 = "05rsv16g7ph100p8kl4l2jba0y4wcpp3xblc02mfp67zp1279vaq";
   };
 
-  propagatedBuildInputs = [ falcon requests ];
+  propagatedBuildInputs = [
+    falcon
+    requests
+  ];
 
-  nativeCheckInputs = [ mock marshmallow pytestCheckHook numpy ];
+  nativeCheckInputs = [
+    mock
+    marshmallow
+    pytestCheckHook
+    numpy
+  ];
 
   postPatch = ''
     substituteInPlace setup.py --replace '"pytest-runner"' ""
@@ -45,7 +57,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A Python framework that makes developing APIs as simple as possible, but no simpler";
+    description = "Python framework that makes developing APIs as simple as possible, but no simpler";
     homepage = "https://github.com/hugapi/hug";
     license = licenses.mit;
     # Missing support for later falcon releases
diff --git a/pkgs/development/python-modules/huggingface-hub/default.nix b/pkgs/development/python-modules/huggingface-hub/default.nix
index 91669ec3710e7..6573cdd1ac893 100644
--- a/pkgs/development/python-modules/huggingface-hub/default.nix
+++ b/pkgs/development/python-modules/huggingface-hub/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, filelock
-, fsspec
-, packaging
-, pyyaml
-, requests
-, tqdm
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  filelock,
+  fsspec,
+  packaging,
+  pyyaml,
+  requests,
+  tqdm,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "huggingface-hub";
-  version = "0.23.0";
+  version = "0.25.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
-
   src = fetchFromGitHub {
     owner = "huggingface";
     repo = "huggingface_hub";
     rev = "refs/tags/v${version}";
-    hash = "sha256-FfevPGec++3auA4Zxu84mhpD0RGatcPgDKi7LkmOVss=";
+    hash = "sha256-MloCUtvJ3A7t6NbCCPp4kcR+7apTrIjbvm6Ppe0SgdA=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     filelock
@@ -43,16 +43,14 @@ buildPythonPackage rec {
   # Tests require network access.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "huggingface_hub"
-  ];
+  pythonImportsCheck = [ "huggingface_hub" ];
 
-  meta = with lib; {
+  meta = {
     description = "Download and publish models and other files on the huggingface.co hub";
     mainProgram = "huggingface-cli";
     homepage = "https://github.com/huggingface/huggingface_hub";
     changelog = "https://github.com/huggingface/huggingface_hub/releases/tag/v${version}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/huisbaasje-client/default.nix b/pkgs/development/python-modules/huisbaasje-client/default.nix
index 1a9cfddd8661c..65d12537cda8a 100644
--- a/pkgs/development/python-modules/huisbaasje-client/default.nix
+++ b/pkgs/development/python-modules/huisbaasje-client/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, aiohttp
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  aiohttp,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,13 +21,9 @@ buildPythonPackage rec {
     sha256 = "113aymffyz1nki3a43j5cyj87qa0762j38qlz0wd5px7diwjxsfl";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "huisbaasje.huisbaasje" ];
 
diff --git a/pkgs/development/python-modules/human-readable/default.nix b/pkgs/development/python-modules/human-readable/default.nix
index 3c67a04b143a0..9081398d7a59b 100644
--- a/pkgs/development/python-modules/human-readable/default.nix
+++ b/pkgs/development/python-modules/human-readable/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, hatchling
-, hatch-vcs
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  hatchling,
+  hatch-vcs,
 }:
 
 buildPythonPackage rec {
@@ -26,8 +27,6 @@ buildPythonPackage rec {
     description = "Library to make data intended for machines, readable to humans";
     homepage = "https://github.com/staticdev/human-readable";
     license = licenses.mit;
-    maintainers = with maintainers; [
-      mkg20001
-    ];
+    maintainers = with maintainers; [ mkg20001 ];
   };
 }
diff --git a/pkgs/development/python-modules/humanfriendly/default.nix b/pkgs/development/python-modules/humanfriendly/default.nix
index d8a3fa92e4832..8c217e3ac228b 100644
--- a/pkgs/development/python-modules/humanfriendly/default.nix
+++ b/pkgs/development/python-modules/humanfriendly/default.nix
@@ -1,21 +1,30 @@
-{ lib
-, pythonOlder
-, buildPythonPackage
-, fetchPypi
-, monotonic
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch2,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "humanfriendly";
   version = "10.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc";
   };
 
-  propagatedBuildInputs = lib.optional (pythonOlder "3.3") monotonic;
+  patches = [
+    (fetchpatch2 {
+      # https://github.com/xolox/python-humanfriendly/pull/75
+      url = "https://github.com/musicinmybrain/python-humanfriendly/commit/13d05b8057010121acd2a402a337ef4ee5834062.patch";
+      hash = "sha256-m7cySiIx0gNhh6KKhT71DJFOtFu2Copk9ic2yaiCulk=";
+    })
+  ];
+
+  build-system = [ setuptools ];
 
   # humanfriendly tests depends on coloredlogs which itself depends on
   # humanfriendly. This lead to infinite recursion when trying to
diff --git a/pkgs/development/python-modules/humanize/default.nix b/pkgs/development/python-modules/humanize/default.nix
index 1ae941be385d4..dbc0bdf1caef4 100644
--- a/pkgs/development/python-modules/humanize/default.nix
+++ b/pkgs/development/python-modules/humanize/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, freezegun
-, gettext
-, pytestCheckHook
-, pythonOlder
-, hatch-vcs
-, hatchling
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  gettext,
+  pytestCheckHook,
+  pythonOlder,
+  python,
+  hatch-vcs,
+  hatchling,
 }:
 
 buildPythonPackage rec {
   pname = "humanize";
-  version = "4.9.0";
+  version = "4.10.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -20,7 +22,7 @@ buildPythonPackage rec {
     owner = "python-humanize";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-sLlgR6c65RmUNZdH2pHuxzo7dm71uUZXGqzcqyxCrk4=";
+    hash = "sha256-zzasFAaWH284IEnWwWKvCL1lt/ItNfdbWhq1K30gSPU=";
   };
 
   nativeBuildInputs = [
@@ -29,12 +31,18 @@ buildPythonPackage rec {
     gettext
   ];
 
+  postPatch = ''
+    # Remove dependency on pytest-cov
+    substituteInPlace pyproject.toml --replace-fail \
+      '"ignore:sys.monitoring isn'"'"'t available, using default core:coverage.exceptions.CoverageWarning",' ""
+  '';
+
   postBuild = ''
     scripts/generate-translation-binaries.sh
   '';
 
   postInstall = ''
-    cp -r 'src/humanize/locale' "$out/lib/"*'/site-packages/humanize/'
+    cp -r 'src/humanize/locale' "$out/${python.sitePackages}/humanize/"
   '';
 
   nativeCheckInputs = [
@@ -42,15 +50,16 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "humanize"
-  ];
+  pythonImportsCheck = [ "humanize" ];
 
   meta = with lib; {
     description = "Python humanize utilities";
     homepage = "https://github.com/python-humanize/humanize";
     changelog = "https://github.com/python-humanize/humanize/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ rmcgibbo Luflosi ];
+    maintainers = with maintainers; [
+      rmcgibbo
+      Luflosi
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/humblewx/default.nix b/pkgs/development/python-modules/humblewx/default.nix
index 71b76fe8c73e3..2a60e7e97212c 100644
--- a/pkgs/development/python-modules/humblewx/default.nix
+++ b/pkgs/development/python-modules/humblewx/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, wxpython
-, python
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  wxpython,
+  python,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/hupper/default.nix b/pkgs/development/python-modules/hupper/default.nix
index 315370de4c2c5..0c69762ec8f1e 100644
--- a/pkgs/development/python-modules/hupper/default.nix
+++ b/pkgs/development/python-modules/hupper/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, watchdog
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  watchdog,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
   # segfaults in the testsuite that end up failing the tests in a background thread (in myapp)
   nativeCheckInputs = [
     pytestCheckHook
-  ] ++ lib.optionals (!stdenv.isDarwin) [
-    watchdog
-  ];
+  ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ watchdog ];
 
   disabledTestPaths = [
     # Doesn't work with an exported home, RuntimeError: timeout waiting for change to file=/build/tmpgfn145cx
@@ -36,6 +35,6 @@ buildPythonPackage rec {
     mainProgram = "hupper";
     homepage = "https://github.com/Pylons/hupper";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/hurry-filesize/default.nix b/pkgs/development/python-modules/hurry-filesize/default.nix
index 62bd1f810f9d5..e9eb079cf518b 100644
--- a/pkgs/development/python-modules/hurry-filesize/default.nix
+++ b/pkgs/development/python-modules/hurry-filesize/default.nix
@@ -1,10 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-
-, pythonOlder
-
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -12,8 +10,6 @@ buildPythonPackage rec {
   version = "0.9";
   pyproject = true;
 
-  disabled = pythonOlder "3.3";
-
   src = fetchPypi {
     pname = "hurry.filesize";
     inherit version;
@@ -24,14 +20,12 @@ buildPythonPackage rec {
   # fix implicit namespaces (PEP 420) warning
   patches = [ ./use-pep-420-implicit-namespace-package.patch ];
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   pythonImportsCheck = [ "hurry.filesize" ];
 
   meta = with lib; {
-    description = "A simple Python library for human readable file sizes (or anything sized in bytes)";
+    description = "Simple Python library for human readable file sizes (or anything sized in bytes)";
     homepage = "https://pypi.org/project/hurry.filesize/";
     license = licenses.zpl21;
     maintainers = with maintainers; [ vizid ];
diff --git a/pkgs/development/python-modules/huum/default.nix b/pkgs/development/python-modules/huum/default.nix
index 42a44a04a9eb7..7e8d4ff033b7d 100644
--- a/pkgs/development/python-modules/huum/default.nix
+++ b/pkgs/development/python-modules/huum/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, mashumaro
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mashumaro,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-INW6d/Zc5UZZOgN6wW+Xbm/wH1K/V6bviu3mID1R+BY=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -37,9 +36,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "huum"
-  ];
+  pythonImportsCheck = [ "huum" ];
 
   meta = with lib; {
     description = "Library for Huum saunas";
diff --git a/pkgs/development/python-modules/hvac/default.nix b/pkgs/development/python-modules/hvac/default.nix
index 42f09f7266cc2..67429f81efe0d 100644
--- a/pkgs/development/python-modules/hvac/default.nix
+++ b/pkgs/development/python-modules/hvac/default.nix
@@ -1,27 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyhcl
-, requests
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyhcl,
+  requests,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "hvac";
-  version = "2.1.0";
+  version = "2.3.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-tIvNoRpKsKe2xHIyx7p8h/2jGK4tSnZigAxGWnh0KJQ=";
+    hash = "sha256-G4XjMg6GQt2C8jTbYyU82haagXWJ6CNxPcX8qDEZseI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     pyhcl
@@ -31,15 +30,13 @@ buildPythonPackage rec {
   # Requires running a Vault server
   doCheck = false;
 
-  pythonImportsCheck = [
-    "hvac"
-  ];
+  pythonImportsCheck = [ "hvac" ];
 
   meta = with lib; {
     description = "HashiCorp Vault API client";
     homepage = "https://github.com/ianunruh/hvac";
     changelog = "https://github.com/hvac/hvac/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/hvplot/default.nix b/pkgs/development/python-modules/hvplot/default.nix
index ded23a070c12f..7884f61cbcb6e 100644
--- a/pkgs/development/python-modules/hvplot/default.nix
+++ b/pkgs/development/python-modules/hvplot/default.nix
@@ -1,26 +1,30 @@
-{ lib
-, bokeh
-, buildPythonPackage
-, colorcet
-, fetchPypi
-, holoviews
-, pandas
-, pythonOlder
+{
+  lib,
+  bokeh,
+  buildPythonPackage,
+  colorcet,
+  fetchPypi,
+  holoviews,
+  pandas,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "hvplot";
-  version = "0.9.2";
-  format = "setuptools";
+  version = "0.10.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-moyekkkTmqo97l8c6g+TzzY3TReemGcF/N3CuSxHB5M=";
+    hash = "sha256-6HSGqVv+FRq1LvFjpek9nL0EOZLPC3Vcyt0r82/t03Y=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools-scm ];
+
+  dependencies = [
     bokeh
     colorcet
     holoviews
@@ -30,15 +34,13 @@ buildPythonPackage rec {
   # Many tests require a network connection
   doCheck = false;
 
-  pythonImportsCheck = [
-    "hvplot.pandas"
-  ];
+  pythonImportsCheck = [ "hvplot.pandas" ];
 
   meta = with lib; {
-    description = "A high-level plotting API for the PyData ecosystem built on HoloViews";
+    description = "High-level plotting API for the PyData ecosystem built on HoloViews";
     homepage = "https://hvplot.pyviz.org";
     changelog = "https://github.com/holoviz/hvplot/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/hwdata/default.nix b/pkgs/development/python-modules/hwdata/default.nix
index 9e73fb6101703..2931839bf6c96 100644
--- a/pkgs/development/python-modules/hwdata/default.nix
+++ b/pkgs/development/python-modules/hwdata/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pkgs
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pkgs,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -17,17 +18,13 @@ buildPythonPackage rec {
     hash = "sha256-hmvxVF9LOkezXnJdbtbEJWhU4uvUJgxQHYeWUoiniF0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   patchPhase = ''
     substituteInPlace hwdata.py --replace "/usr/share/hwdata" "${pkgs.hwdata}/share/hwdata"
   '';
 
-  pythonImportsCheck = [
-    "hwdata"
-  ];
+  pythonImportsCheck = [ "hwdata" ];
 
   doCheck = false; # no tests
 
diff --git a/pkgs/development/python-modules/hwi/default.nix b/pkgs/development/python-modules/hwi/default.nix
index 311036b388247..70f8b48fce924 100644
--- a/pkgs/development/python-modules/hwi/default.nix
+++ b/pkgs/development/python-modules/hwi/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, bitbox02
-, buildPythonPackage
-, cbor
-, ecdsa
-, fetchFromGitHub
-, hidapi
-, libusb1
-, mnemonic
-, pyaes
-, pyserial
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  bitbox02,
+  buildPythonPackage,
+  cbor,
+  ecdsa,
+  fetchFromGitHub,
+  hidapi,
+  libusb1,
+  mnemonic,
+  pyaes,
+  pyserial,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "hwi";
-  version = "3.0.0";
+  version = "3.1.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -24,7 +25,7 @@ buildPythonPackage rec {
     owner = "bitcoin-core";
     repo = "HWI";
     rev = "refs/tags/${version}";
-    hash = "sha256-hpMH3Zy3/TTBYUukJQZw63f0KuE3O9G2aYcGdL6Q3eM=";
+    hash = "sha256-sQqft+5M+X+91bFqpUrbDRrFzpe/l1+w+pnIHwqezR8=";
   };
 
   propagatedBuildInputs = [
@@ -42,9 +43,7 @@ buildPythonPackage rec {
   # Tests require to clone quite a few firmwares
   doCheck = false;
 
-  pythonImportsCheck = [
-    "hwilib"
-  ];
+  pythonImportsCheck = [ "hwilib" ];
 
   meta = with lib; {
     description = "Bitcoin Hardware Wallet Interface";
diff --git a/pkgs/development/python-modules/hy/default.nix b/pkgs/development/python-modules/hy/default.nix
index 6d9f50f9f8c97..8a8b29315f8e5 100644
--- a/pkgs/development/python-modules/hy/default.nix
+++ b/pkgs/development/python-modules/hy/default.nix
@@ -1,42 +1,39 @@
-{ lib
-, astor
-, buildPythonPackage
-, fetchFromGitHub
-, funcparserlib
-, hy
-, pytestCheckHook
-, python
-, pythonOlder
-, testers
+{
+  lib,
+  astor,
+  buildPythonPackage,
+  fetchFromGitHub,
+  funcparserlib,
+  hy,
+  pytestCheckHook,
+  python,
+  pythonOlder,
+  setuptools,
+  testers,
 }:
 
 buildPythonPackage rec {
   pname = "hy";
-  version = "0.28.0";
-  format = "setuptools";
+  version = "0.29.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "hylang";
-    repo = pname;
+    repo = "hy";
     rev = "refs/tags/${version}";
-    hash = "sha256-XH8qZ6OsTrFXcv/8ZyrTtN6l50JXIUcHJbfCRXHzSTs=";
+    hash = "sha256-8b2V78mwzSThmVl1SfMGBw8VSpE5rCuucnIyD0nq5To=";
   };
 
   # https://github.com/hylang/hy/blob/1.0a4/get_version.py#L9-L10
   HY_VERSION = version;
 
-  propagatedBuildInputs = [
-    funcparserlib
-  ] ++
-  lib.optionals (pythonOlder "3.9") [
-    astor
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  dependencies = [ funcparserlib ] ++ lib.optionals (pythonOlder "3.9") [ astor ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     # For test_bin_hy
@@ -53,21 +50,23 @@ buildPythonPackage rec {
     # For backwards compatibility with removed pkgs/development/interpreters/hy
     # Example usage:
     #   hy.withPackages (ps: with ps; [ hyrule requests ])
-    withPackages = python-packages:
-      (python.withPackages
-        (ps: (python-packages ps) ++ [ ps.hy ])).overrideAttrs (old: {
-          name = "${hy.name}-env";
-          meta = lib.mergeAttrs (builtins.removeAttrs hy.meta [ "license" ]) {
-            mainProgram = "hy";
-          };
-        });
+    withPackages =
+      python-packages:
+      (python.withPackages (ps: (python-packages ps) ++ [ ps.hy ])).overrideAttrs (old: {
+        name = "${hy.name}-env";
+        meta = lib.mergeAttrs (builtins.removeAttrs hy.meta [ "license" ]) { mainProgram = "hy"; };
+      });
   };
 
   meta = with lib; {
-    description = "A LISP dialect embedded in Python";
+    description = "LISP dialect embedded in Python";
     homepage = "https://hylang.org/";
     changelog = "https://github.com/hylang/hy/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ fab mazurel nixy thiagokokada ];
+    maintainers = with maintainers; [
+      mazurel
+      nixy
+      thiagokokada
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/hydra-check/default.nix b/pkgs/development/python-modules/hydra-check/default.nix
index 78e96dea26ce1..ab9c197113d6d 100644
--- a/pkgs/development/python-modules/hydra-check/default.nix
+++ b/pkgs/development/python-modules/hydra-check/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, requests
-, beautifulsoup4
-, colorama
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  requests,
+  beautifulsoup4,
+  colorama,
 }:
 
 buildPythonPackage rec {
@@ -36,6 +37,9 @@ buildPythonPackage rec {
     mainProgram = "hydra-check";
     homepage = "https://github.com/nix-community/hydra-check";
     license = licenses.mit;
-    maintainers = with maintainers; [ makefu artturin ];
+    maintainers = with maintainers; [
+      makefu
+      artturin
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/hydra-core/default.nix b/pkgs/development/python-modules/hydra-core/default.nix
index fb73910aaf1f8..ea72eddf47499 100644
--- a/pkgs/development/python-modules/hydra-core/default.nix
+++ b/pkgs/development/python-modules/hydra-core/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, antlr4
-, antlr4-python3-runtime
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, importlib-resources
-, jre_headless
-, omegaconf
-, packaging
-, pytestCheckHook
-, pythonOlder
-, substituteAll
+{
+  lib,
+  antlr4,
+  antlr4-python3-runtime,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  importlib-resources,
+  jre_headless,
+  omegaconf,
+  packaging,
+  pytestCheckHook,
+  pythonOlder,
+  substituteAll,
 }:
 
 buildPythonPackage rec {
@@ -48,24 +49,19 @@ buildPythonPackage rec {
     sed -i 's/antlr4-python3-runtime==.*/antlr4-python3-runtime/' requirements/requirements.txt
   '';
 
-  nativeBuildInputs = [
-    jre_headless
-  ];
+  nativeBuildInputs = [ jre_headless ];
 
   propagatedBuildInputs = [
     antlr4-python3-runtime
     omegaconf
     packaging
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    importlib-resources
-  ];
+  ] ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pytestFlagsArray = [
-    "-W" "ignore::UserWarning"
+    "-W"
+    "ignore::UserWarning"
   ];
 
   # Test environment setup broken under Nix for a few tests:
@@ -77,9 +73,7 @@ buildPythonPackage rec {
     "test_initialize_compat_version_base"
   ];
 
-  disabledTestPaths = [
-    "tests/test_hydra.py"
-  ];
+  disabledTestPaths = [ "tests/test_hydra.py" ];
 
   pythonImportsCheck = [
     "hydra"
@@ -88,7 +82,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A framework for configuring complex applications";
+    description = "Framework for configuring complex applications";
     homepage = "https://hydra.cc";
     license = licenses.mit;
     maintainers = with maintainers; [ bcdarwin ];
diff --git a/pkgs/development/python-modules/hydrawiser/default.nix b/pkgs/development/python-modules/hydrawiser/default.nix
index f04509d0854cf..84ffe3bcc7e3b 100644
--- a/pkgs/development/python-modules/hydrawiser/default.nix
+++ b/pkgs/development/python-modules/hydrawiser/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytest-cov
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
 }:
 
 buildPythonPackage rec {
@@ -26,7 +27,7 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytest-asyncio
-    pytest-cov
+    pytest-cov-stub
     pytestCheckHook
     requests
     requests-mock
diff --git a/pkgs/development/python-modules/hydrus-api/default.nix b/pkgs/development/python-modules/hydrus-api/default.nix
index 17449fdf66ce1..9d62af64cea77 100644
--- a/pkgs/development/python-modules/hydrus-api/default.nix
+++ b/pkgs/development/python-modules/hydrus-api/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, poetry-core
-, requests
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  poetry-core,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "hydrus-api";
   version = "5.0.1";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
@@ -19,19 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-3Roeab9/woGF/aZYm9nbqrcyYN8CKA1k66cTRxx6jM4=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml --replace \
-      "poetry.masonry.api" \
-      "poetry.core.masonry.api"
-  '';
+  build-system = [ poetry-core ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
-
-  propagatedBuildInputs = [
-    requests
-  ];
+  dependencies = [ requests ];
 
   pythonImportsCheck = [ "hydrus_api" ];
 
diff --git a/pkgs/development/python-modules/hypchat/default.nix b/pkgs/development/python-modules/hypchat/default.nix
index 58a1c3dffdc82..a1e3a703955dd 100644
--- a/pkgs/development/python-modules/hypchat/default.nix
+++ b/pkgs/development/python-modules/hypchat/default.nix
@@ -1,15 +1,27 @@
-{ buildPythonPackage, fetchPypi
-, requests, six, python-dateutil }:
+{
+  buildPythonPackage,
+  pythonAtLeast,
+  fetchPypi,
+  requests,
+  six,
+  python-dateutil,
+}:
 
 buildPythonPackage rec {
   pname = "hypchat";
   version = "0.21";
   format = "setuptools";
 
+  disabled = pythonAtLeast "3.12";
+
   src = fetchPypi {
     inherit pname version;
     sha256 = "1sd8f3gihagaqd848dqy6xw457fa4f9bla1bfyni7fq3h76sjdzg";
   };
 
-  propagatedBuildInputs = [ requests six python-dateutil ];
+  propagatedBuildInputs = [
+    requests
+    six
+    python-dateutil
+  ];
 }
diff --git a/pkgs/development/python-modules/hypercorn/default.nix b/pkgs/development/python-modules/hypercorn/default.nix
index 57d56fa417cac..2ac0cb8e381aa 100644
--- a/pkgs/development/python-modules/hypercorn/default.nix
+++ b/pkgs/development/python-modules/hypercorn/default.nix
@@ -1,54 +1,63 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, typing-extensions
-, wsproto
-, toml
-, h2
-, priority
-, mock
-, poetry-core
-, pytest-asyncio
-, pytest-trio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  exceptiongroup,
+  h11,
+  h2,
+  priority,
+  wsproto,
+  poetry-core,
+  pytest-asyncio,
+  pytest-trio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "hypercorn";
-  version = "0.14.3";
-  disabled = pythonOlder "3.7";
+  version = "0.16.0";
   format = "pyproject";
 
+  disabled = pythonOlder "3.11"; # missing taskgroup dependency
+
   src = fetchFromGitHub {
     owner = "pgjones";
     repo = "Hypercorn";
     rev = version;
-    hash = "sha256-ECREs8UwqTWUweUrwnUwpVotCII2v4Bz7ZCk3DSAd8I=";
+    hash = "sha256-pIUZCQmC3c6FiV0iMMwJGs9TMi6B/YM+vaSx//sAmKE=";
   };
 
   postPatch = ''
     sed -i "/^addopts/d" pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [ wsproto toml h2 priority ]
-    ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
+  dependencies = [
+    exceptiongroup
+    h11
+    h2
+    priority
+    wsproto
+  ];
 
   nativeCheckInputs = [
     pytest-asyncio
     pytest-trio
     pytestCheckHook
-  ] ++ lib.optionals (pythonOlder "3.8") [ mock ];
+  ];
+
+  disabledTests = [
+    # https://github.com/pgjones/hypercorn/issues/217
+    "test_startup_failure"
+  ];
 
   pythonImportsCheck = [ "hypercorn" ];
 
   meta = with lib; {
     homepage = "https://github.com/pgjones/hypercorn";
-    description = "The ASGI web server inspired by Gunicorn";
+    description = "ASGI web server inspired by Gunicorn";
     mainProgram = "hypercorn";
     license = licenses.mit;
     maintainers = with maintainers; [ dgliwka ];
diff --git a/pkgs/development/python-modules/hyperframe/default.nix b/pkgs/development/python-modules/hyperframe/default.nix
index e42ee0a46f684..e82b3b21c8b62 100644
--- a/pkgs/development/python-modules/hyperframe/default.nix
+++ b/pkgs/development/python-modules/hyperframe/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "hyperframe";
@@ -18,6 +23,6 @@ buildPythonPackage rec {
     description = "HTTP/2 framing layer for Python";
     homepage = "https://github.com/python-hyper/hyperframe/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/hyperion-py/default.nix b/pkgs/development/python-modules/hyperion-py/default.nix
index 1e0f08936fb4a..6c0285e8cadd6 100644
--- a/pkgs/development/python-modules/hyperion-py/default.nix
+++ b/pkgs/development/python-modules/hyperion-py/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pytestCheckHook
-, pythonOlder
-, pythonAtLeast
-, poetry-core
-, pytest-aiohttp
-, pytest-asyncio
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pytestCheckHook,
+  pythonOlder,
+  poetry-core,
+  pytest-aiohttp,
+  pytest-asyncio,
 }:
 
 buildPythonPackage rec {
@@ -32,13 +32,9 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   nativeCheckInputs = [
     pytest-asyncio
diff --git a/pkgs/development/python-modules/hyperlink/default.nix b/pkgs/development/python-modules/hyperlink/default.nix
index 1b617cf1b7c9e..579cfb065fa6c 100644
--- a/pkgs/development/python-modules/hyperlink/default.nix
+++ b/pkgs/development/python-modules/hyperlink/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, idna
-, typing ? null
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  idna,
+  typing ? null,
 }:
 
 buildPythonPackage rec {
@@ -16,11 +17,10 @@ buildPythonPackage rec {
     sha256 = "0sx50lkivsfjxx9zr4yh7l9gll2l9kvl0v0w8w4wk2x5v9bzjyj2";
   };
 
-  propagatedBuildInputs = [ idna ]
-    ++ lib.optionals isPy27 [ typing ];
+  propagatedBuildInputs = [ idna ] ++ lib.optionals isPy27 [ typing ];
 
   meta = with lib; {
-    description = "A featureful, correct URL for Python";
+    description = "Featureful, correct URL for Python";
     homepage = "https://github.com/python-hyper/hyperlink";
     license = licenses.mit;
     platforms = platforms.all;
diff --git a/pkgs/development/python-modules/hyperopt/default.nix b/pkgs/development/python-modules/hyperopt/default.nix
index 6cc92ff3ae79b..5d3d07c92f52a 100644
--- a/pkgs/development/python-modules/hyperopt/default.nix
+++ b/pkgs/development/python-modules/hyperopt/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, cloudpickle
-, fetchPypi
-, future
-, networkx
-, numpy
-, py4j
-, pymongo
-, pyspark
-, scipy
-, six
-, tqdm
+{
+  lib,
+  buildPythonPackage,
+  cloudpickle,
+  fetchPypi,
+  future,
+  networkx,
+  numpy,
+  py4j,
+  pymongo,
+  pyspark,
+  scipy,
+  six,
+  tqdm,
 }:
 
 buildPythonPackage rec {
@@ -39,9 +40,7 @@ buildPythonPackage rec {
   # tries to use /homeless-shelter to mimic container usage, etc
   doCheck = false;
 
-  pythonImportsCheck = [
-    "hyperopt"
-  ];
+  pythonImportsCheck = [ "hyperopt" ];
 
   meta = with lib; {
     description = "Distributed Asynchronous Hyperparameter Optimization";
diff --git a/pkgs/development/python-modules/hyperpyyaml/default.nix b/pkgs/development/python-modules/hyperpyyaml/default.nix
index 9395b299fea01..46c27720e74be 100644
--- a/pkgs/development/python-modules/hyperpyyaml/default.nix
+++ b/pkgs/development/python-modules/hyperpyyaml/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyyaml
-, ruamel-yaml
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyyaml,
+  ruamel-yaml,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     ruamel-yaml
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "hyperpyyaml" ];
 
diff --git a/pkgs/development/python-modules/hyperscan/default.nix b/pkgs/development/python-modules/hyperscan/default.nix
index 0d568e15f25b7..338ad67b966ad 100644
--- a/pkgs/development/python-modules/hyperscan/default.nix
+++ b/pkgs/development/python-modules/hyperscan/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, pkgs
-, buildPythonPackage
-, fetchFromGitHub
-, pdm-backend
-, setuptools
-, wheel
-, pcre
-, pkg-config
-, pytestCheckHook
-, pytest-mock
+{
+  lib,
+  pkgs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pdm-backend,
+  setuptools,
+  wheel,
+  pcre,
+  pkg-config,
+  pytestCheckHook,
+  pytest-mock,
 }:
 
 buildPythonPackage rec {
@@ -44,10 +45,13 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A CPython extension for the Hyperscan regular expression matching library";
+    description = "CPython extension for the Hyperscan regular expression matching library";
     homepage = "https://github.com/darvid/python-hyperscan";
     changelog = "https://github.com/darvid/python-hyperscan/blob/${src.rev}/CHANGELOG.md";
-    platforms = [ "x86_64-linux" "x86_64-darwin" ];
+    platforms = [
+      "x86_64-linux"
+      "x86_64-darwin"
+    ];
     license = licenses.mit;
     maintainers = with maintainers; [ mbalatsko ];
   };
diff --git a/pkgs/development/python-modules/hypothesis-auto/default.nix b/pkgs/development/python-modules/hypothesis-auto/default.nix
index ad6ae8dbd96c2..eca2ca1014572 100644
--- a/pkgs/development/python-modules/hypothesis-auto/default.nix
+++ b/pkgs/development/python-modules/hypothesis-auto/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hypothesis
-, poetry-core
-, pydantic
-, pytest
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hypothesis,
+  poetry-core,
+  pydantic,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-U0vcOB9jXmUV5v2IwybVu2arY1FpPnKkP7m2kbD1kRw=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     pydantic
@@ -32,18 +31,14 @@ buildPythonPackage rec {
     pytest
   ];
 
-  pythonImportsCheck = [
-    "hypothesis_auto"
-  ];
+  pythonImportsCheck = [ "hypothesis_auto" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Enables fully automatic tests for type annotated functions";
     homepage = "https://github.com/timothycrosley/hypothesis-auto/";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/hypothesis/default.nix b/pkgs/development/python-modules/hypothesis/default.nix
index 5cf3408c89b73..4379303f3dba7 100644
--- a/pkgs/development/python-modules/hypothesis/default.nix
+++ b/pkgs/development/python-modules/hypothesis/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, buildPythonPackage
-, isPyPy
-, fetchFromGitHub
-, setuptools
-, attrs
-, exceptiongroup
-, pexpect
-, doCheck ? true
-, pytestCheckHook
-, pytest-xdist
-, python
-, sortedcontainers
-, stdenv
-, pythonOlder
-, sphinxHook
-, sphinx-rtd-theme
-, sphinx-hoverxref
-, sphinx-codeautolink
-, tzdata
+{
+  lib,
+  buildPythonPackage,
+  isPyPy,
+  fetchFromGitHub,
+  setuptools,
+  attrs,
+  exceptiongroup,
+  pexpect,
+  doCheck ? true,
+  pytestCheckHook,
+  pytest-xdist,
+  python,
+  sortedcontainers,
+  stdenv,
+  pythonOlder,
+  sphinxHook,
+  sphinx-rtd-theme,
+  sphinx-hoverxref,
+  sphinx-codeautolink,
+  tzdata,
 }:
 
 buildPythonPackage rec {
   pname = "hypothesis";
-  version = "6.99.12";
+  version = "6.108.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -31,7 +32,7 @@ buildPythonPackage rec {
     owner = "HypothesisWorks";
     repo = "hypothesis";
     rev = "hypothesis-python-${version}";
-    hash = "sha256-0nzjRDv4L3bxxnC0lBY5S7FP9CFhyzHzNchWXoX91Zg=";
+    hash = "sha256-APZTI7AxbtLT+2mkxUapr1sPcq4ViMXy1J6g0I30s5A=";
   };
 
   # I tried to package sphinx-selective-exclude, but it throws
@@ -49,24 +50,18 @@ buildPythonPackage rec {
 
   postUnpack = "sourceRoot=$sourceRoot/hypothesis-python";
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     attrs
     sortedcontainers
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    exceptiongroup
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ exceptiongroup ];
 
   nativeCheckInputs = [
     pexpect
     pytest-xdist
     pytestCheckHook
-  ] ++ lib.optionals isPyPy [
-    tzdata
-  ];
+  ] ++ lib.optionals isPyPy [ tzdata ];
 
   inherit doCheck;
 
@@ -75,21 +70,23 @@ buildPythonPackage rec {
     rm tox.ini
   '';
 
-  pytestFlagsArray = [
-    "tests/cover"
-  ];
+  pytestFlagsArray = [ "tests/cover" ];
 
-  disabledTests = if (pythonOlder "3.10") then [
-    # not sure why these tests fail with only 3.9
-    # FileNotFoundError: [Errno 2] No such file or directory: 'git'
-    "test_observability"
-    "test_assume_has_status_reason"
-    "test_observability_captures_stateful_reprs"
-  ] else null;
+  disabledTests =
+    [
+      # racy, fails to find a file sometimes
+      "test_recreate_charmap"
+      "test_uses_cached_charmap"
+    ]
+    ++ lib.optionals (pythonOlder "3.10") [
+      # not sure why these tests fail with only 3.9
+      # FileNotFoundError: [Errno 2] No such file or directory: 'git'
+      "test_observability"
+      "test_assume_has_status_reason"
+      "test_observability_captures_stateful_reprs"
+    ];
 
-  pythonImportsCheck = [
-    "hypothesis"
-  ];
+  pythonImportsCheck = [ "hypothesis" ];
 
   passthru = {
     doc = stdenv.mkDerivation {
@@ -119,8 +116,10 @@ buildPythonPackage rec {
     description = "Library for property based testing";
     mainProgram = "hypothesis";
     homepage = "https://github.com/HypothesisWorks/hypothesis";
-    changelog = "https://hypothesis.readthedocs.io/en/latest/changes.html#v${lib.replaceStrings [ "." ] [ "-" ] version}";
+    changelog = "https://hypothesis.readthedocs.io/en/latest/changes.html#v${
+      lib.replaceStrings [ "." ] [ "-" ] version
+    }";
     license = licenses.mpl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/hypothesmith/default.nix b/pkgs/development/python-modules/hypothesmith/default.nix
index 9aa3406c60066..c53c3c2e3670c 100644
--- a/pkgs/development/python-modules/hypothesmith/default.nix
+++ b/pkgs/development/python-modules/hypothesmith/default.nix
@@ -1,60 +1,52 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hypothesis
-, lark
-, libcst
-, parso
-, pytestCheckHook
-, pytest-xdist
-, pythonOlder
+{
+  lib,
+  black,
+  buildPythonPackage,
+  fetchPypi,
+  hypothesis,
+  lark,
+  libcst,
+  parso,
+  pytestCheckHook,
+  pytest-cov-stub,
+  pytest-xdist,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "hypothesmith";
   version = "0.3.3";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-lsFIAtbI6F2JdSZBdoeNtUso0u2SH9v+3C5rjOPIFxY=";
   };
 
-  patches = [
-    ./remove-black.patch
-  ];
-
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "lark-parser" "lark"
-
-    substituteInPlace tox.ini \
-      --replace "--cov=hypothesmith" "" \
-      --replace "--cov-branch" "" \
-      --replace "--cov-report=term-missing:skip-covered" "" \
-      --replace "--cov-fail-under=100" ""
-  '';
-
-  propagatedBuildInputs = [ hypothesis lark libcst ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [ parso pytestCheckHook pytest-xdist ];
+  dependencies = [
+    hypothesis
+    lark
+    libcst
+  ];
 
-  pytestFlagsArray = [
-    "-v"
+  nativeCheckInputs = [
+    black
+    parso
+    pytestCheckHook
+    pytest-cov-stub
+    pytest-xdist
   ];
 
   disabledTests = [
-    # https://github.com/Zac-HD/hypothesmith/issues/21
+    # super slow
     "test_source_code_from_libcst_node_type"
   ];
 
-  disabledTestPaths = [
-    # missing blib2to3
-    "tests/test_syntactic.py"
-  ];
-
   pythonImportsCheck = [ "hypothesmith" ];
 
   meta = with lib; {
@@ -62,6 +54,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Zac-HD/hypothesmith";
     changelog = "https://github.com/Zac-HD/hypothesmith/blob/master/CHANGELOG.md";
     license = licenses.mpl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/hypothesmith/remove-black.patch b/pkgs/development/python-modules/hypothesmith/remove-black.patch
deleted file mode 100644
index d37222ef4b2ce..0000000000000
--- a/pkgs/development/python-modules/hypothesmith/remove-black.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-diff --git a/tests/test_cst.py b/tests/test_cst.py
-index 8532240..bdba2d7 100644
---- a/tests/test_cst.py
-+++ b/tests/test_cst.py
-@@ -3,7 +3,6 @@ import ast
- from inspect import isabstract
- from operator import attrgetter
- 
--import black
- import libcst
- import parso
- import pytest
-@@ -51,27 +50,6 @@ def test_ast_unparse_from_nodes(source_code):
-     assert ast.dump(first) == ast.dump(second)
- 
- 
--@pytest.mark.xfail
--@example("A\u2592", black.Mode())
--@given(
--    source_code=hypothesmith.from_node(),
--    mode=st.builds(
--        black.Mode,
--        line_length=st.just(88) | st.integers(0, 200),
--        string_normalization=st.booleans(),
--        is_pyi=st.booleans(),
--    ),
--)
--def test_black_autoformatter_from_nodes(source_code, mode):
--    try:
--        result = black.format_file_contents(source_code, fast=False, mode=mode)
--    except black.NothingChanged:
--        pass
--    else:
--        with pytest.raises(black.NothingChanged):
--            black.format_file_contents(result, fast=False, mode=mode)
--
--
- @given(source_code=hypothesmith.from_node())
- def test_from_node_always_compilable(source_code):
-     compile(source_code, "<string>", "exec")
-diff --git a/tests/test_syntactic.py b/tests/test_syntactic.py
-index 7fe9835..17c4f7c 100644
---- a/tests/test_syntactic.py
-+++ b/tests/test_syntactic.py
-@@ -3,7 +3,6 @@ import ast
- import io
- import tokenize
- 
--import black
- import blib2to3
- import parso
- import pytest
-@@ -58,34 +57,6 @@ def test_ast_unparse_from_grammar(source_code):
-     assert ast.dump(first) == ast.dump(second)
- 
- 
--@example("\\", black.Mode())
--@example("A#\r#", black.Mode())
--@given(
--    source_code=hypothesmith.from_grammar(),
--    mode=st.builds(
--        black.Mode,
--        line_length=st.just(88) | st.integers(0, 200),
--        string_normalization=st.booleans(),
--        is_pyi=st.booleans(),
--    ),
--)
--def test_black_autoformatter_from_grammar(source_code, mode):
--    try:
--        result = black.format_file_contents(source_code, fast=False, mode=mode)
--    except black.NothingChanged:
--        pass
--    except blib2to3.pgen2.tokenize.TokenError:
--        # Fails to tokenise e.g. "\\", though compile("\\", "<string>", "exec") works.
--        # See https://github.com/psf/black/issues/1012
--        reject()
--    except black.InvalidInput:
--        # e.g. "A#\r#", see https://github.com/psf/black/issues/970
--        reject()
--    else:
--        with pytest.raises(black.NothingChanged):
--            black.format_file_contents(result, fast=False, mode=mode)
--
--
- @given(source_code=hypothesmith.from_grammar("eval_input"))
- def test_eval_input_generation(source_code):
-     compile(source_code, filename="<string>", mode="eval")
diff --git a/pkgs/development/python-modules/hyppo/default.nix b/pkgs/development/python-modules/hyppo/default.nix
index 8b2d73f68c5af..2d3f2563ad011 100644
--- a/pkgs/development/python-modules/hyppo/default.nix
+++ b/pkgs/development/python-modules/hyppo/default.nix
@@ -1,21 +1,23 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pytestCheckHook
-, autograd
-, numba
-, numpy
-, scikit-learn
-, scipy
-, matplotlib
-, seaborn
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  autograd,
+  numba,
+  numpy,
+  scikit-learn,
+  scipy,
+  matplotlib,
+  seaborn,
 }:
 
 buildPythonPackage rec {
   pname = "hyppo";
   version = "0.4.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
@@ -26,6 +28,14 @@ buildPythonPackage rec {
     hash = "sha256-QRE3oSxTEobTQ/7DzCAUOdjzIZmWUn9bgPmJWj6JuZg=";
   };
 
+  # some of the doctests (4/21) are broken, e.g. unbound variables, nondeterministic with insufficient tolerance, etc.
+  # (note upstream's .circleci/config.yml only tests test_*.py files despite their pytest.ini adding --doctest-modules)
+  postPatch = ''
+    substituteInPlace pytest.ini --replace-fail "addopts = --doctest-modules" ""
+  '';
+
+  build-system = [ setuptools ];
+
   propagatedBuildInputs = [
     autograd
     numba
@@ -34,16 +44,19 @@ buildPythonPackage rec {
     scipy
   ];
 
-  nativeCheckInputs = [ pytestCheckHook matplotlib seaborn ];
-  disabledTestPaths = [
-    "docs"
-    "benchmarks"
-    "examples"
+  nativeCheckInputs = [
+    pytestCheckHook
+    matplotlib
+    seaborn
+  ];
+  pytestFlagsArray = [
+    "hyppo"
   ];
 
   meta = with lib; {
     homepage = "https://github.com/neurodata/hyppo";
     description = "Python package for multivariate hypothesis testing";
+    changelog = "https://github.com/neurodata/hyppo/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ bcdarwin ];
   };
diff --git a/pkgs/development/python-modules/hyrule/default.nix b/pkgs/development/python-modules/hyrule/default.nix
index 241306c895d2f..3229e5137ea12 100644
--- a/pkgs/development/python-modules/hyrule/default.nix
+++ b/pkgs/development/python-modules/hyrule/default.nix
@@ -1,32 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hy
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hy,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "hyrule";
-  version = "0.5.0";
-  format = "setuptools";
+  version = "0.6.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "hylang";
-    repo = pname;
+    repo = "hyrule";
     rev = "refs/tags/${version}";
-    hash = "sha256-MARpQFEypTJ4KpojVRxcHYvo6e6Gvk4B6tnrViV6QmY=";
+    hash = "sha256-pmJhhOpNxVEUH8YwBUKSywYgYu43oLSmpWJM4HXGMiI=";
   };
 
-  propagatedBuildInputs = [
-    hy
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  propagatedBuildInputs = [ hy ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Some tests depends on hy on PATH
   preCheck = "PATH=${hy}/bin:$PATH";
@@ -34,7 +34,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "hyrule" ];
 
   meta = with lib; {
-    description = "Hyrule is a utility library for the Hy programming language";
+    description = "Utility library for the Hy programming language";
     homepage = "https://github.com/hylang/hyrule";
     changelog = "https://github.com/hylang/hylure/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/i-pi/default.nix b/pkgs/development/python-modules/i-pi/default.nix
index 046823d23c43f..2ad38a1ea4acd 100644
--- a/pkgs/development/python-modules/i-pi/default.nix
+++ b/pkgs/development/python-modules/i-pi/default.nix
@@ -1,31 +1,50 @@
-{ buildPythonPackage, lib, fetchFromGitHub, gfortran
-, makeWrapper, numpy, pytest, mock, pytest-mock
-} :
+{
+  buildPythonPackage,
+  lib,
+  fetchFromGitHub,
+  gfortran,
+  makeWrapper,
+  setuptools,
+  numpy,
+  scipy,
+  distutils,
+  pytestCheckHook,
+  mock,
+  pytest-mock,
+  pythonAtLeast,
+}:
 
 buildPythonPackage rec {
   pname = "i-pi";
-  version = "2.6.1";
-  format = "setuptools";
+  version = "3.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "i-pi";
     repo = "i-pi";
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-c1bs8ZI/dfDwKx5Df8ndtsDxESQrdbMkvrjfI6b9JTg=";
+    hash = "sha256-SJ0qTwwdIOR1nXs9MV6O1oxJPR6/6H86wscDy/sLc/g=";
   };
 
+  build-system = [ setuptools ];
+
   nativeBuildInputs = [
     gfortran
     makeWrapper
   ];
 
-  propagatedBuildInputs = [ numpy ];
+  dependencies = [
+    numpy
+    scipy
+  ];
 
   nativeCheckInputs = [
-    pytest
+    pytestCheckHook
     mock
     pytest-mock
-  ];
+  ] ++ lib.optional (pythonAtLeast "3.12") distutils;
+
+  pytestFlagsArray = [ "ipi_tests/unit_tests" ];
 
   postFixup = ''
     wrapProgram $out/bin/i-pi \
@@ -33,8 +52,11 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A universal force engine for ab initio and force field driven (path integral) molecular dynamics";
-    license = with licenses; [ gpl3Only mit ];
+    description = "Universal force engine for ab initio and force field driven (path integral) molecular dynamics";
+    license = with licenses; [
+      gpl3Only
+      mit
+    ];
     homepage = "http://ipi-code.org/";
     platforms = platforms.linux;
     maintainers = [ maintainers.sheepforce ];
diff --git a/pkgs/development/python-modules/i2c-tools/default.nix b/pkgs/development/python-modules/i2c-tools/default.nix
index fd2fdaba347ca..8b88b07b95ac9 100644
--- a/pkgs/development/python-modules/i2c-tools/default.nix
+++ b/pkgs/development/python-modules/i2c-tools/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, i2c-tools
+{
+  lib,
+  buildPythonPackage,
+  i2c-tools,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/i2csense/default.nix b/pkgs/development/python-modules/i2csense/default.nix
index 6923b1d0c3c82..2aa74cedb2f8e 100644
--- a/pkgs/development/python-modules/i2csense/default.nix
+++ b/pkgs/development/python-modules/i2csense/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, smbus-cffi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  smbus-cffi,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     sha256 = "6f9c0a37d971e5b8a60c54982bd580cff84bf94fedc08c097e603a8e5609c33f";
   };
 
-  propagatedBuildInputs = [
-    smbus-cffi
-  ];
+  propagatedBuildInputs = [ smbus-cffi ];
 
   # no tests implemented
   doCheck = false;
@@ -28,7 +27,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A library to handle i2c sensors with the Raspberry Pi";
+    description = "Library to handle i2c sensors with the Raspberry Pi";
     mainProgram = "i2csense";
     homepage = "https://github.com/azogue/i2csense";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/i3-py/default.nix b/pkgs/development/python-modules/i3-py/default.nix
index 83a0dd8d2700e..b90e0aeafafef 100644
--- a/pkgs/development/python-modules/i3-py/default.nix
+++ b/pkgs/development/python-modules/i3-py/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Tools for i3 users and developers";
-    homepage =  "https://github.com/ziberna/i3-py";
+    homepage = "https://github.com/ziberna/i3-py";
     license = licenses.gpl3;
     platforms = platforms.unix;
   };
-
 }
diff --git a/pkgs/development/python-modules/i3ipc/default.nix b/pkgs/development/python-modules/i3ipc/default.nix
index 5aca692cbe058..febac35bc4a45 100644
--- a/pkgs/development/python-modules/i3ipc/default.nix
+++ b/pkgs/development/python-modules/i3ipc/default.nix
@@ -1,6 +1,15 @@
-{ lib, buildPythonPackage, fetchFromGitHub
-, xorgserver, pytest, pytest-xvfb, i3, xlib, xdpyinfo
-, makeFontsConf, coreutils
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  xorg,
+  pytest,
+  pytest-xvfb,
+  i3,
+  xlib,
+  xdpyinfo,
+  makeFontsConf,
+  coreutils,
 }:
 
 buildPythonPackage rec {
@@ -9,18 +18,22 @@ buildPythonPackage rec {
   format = "setuptools";
 
   src = fetchFromGitHub {
-    owner  = "acrisci";
-    repo   = "i3ipc-python";
-    rev    = "v${version}";
+    owner = "acrisci";
+    repo = "i3ipc-python";
+    rev = "v${version}";
     sha256 = "13bzs9dcv27czpnnbgz7a037lm8h991c8gk0qzzk5mq5yak24715";
   };
   propagatedBuildInputs = [ xlib ];
 
-  fontsConf = makeFontsConf {
-    fontDirectories = [ ];
-  };
+  fontsConf = makeFontsConf { fontDirectories = [ ]; };
   FONTCONFIG_FILE = fontsConf; # Fontconfig error: Cannot load default config file
-  nativeCheckInputs = [ pytest xdpyinfo pytest-xvfb xorgserver i3 ];
+  nativeCheckInputs = [
+    pytest
+    xdpyinfo
+    pytest-xvfb
+    xorg.xvfb
+    i3
+  ];
 
   postPatch = ''
     substituteInPlace test/i3.config \
@@ -32,11 +45,10 @@ buildPythonPackage rec {
             --ignore=test/test_shutdown_event.py
   '';
 
-
   meta = with lib; {
-    description = "An improved Python library to control i3wm and sway";
-    homepage    = "https://github.com/acrisci/i3ipc-python";
-    license     = licenses.bsd3;
+    description = "Improved Python library to control i3wm and sway";
+    homepage = "https://github.com/acrisci/i3ipc-python";
+    license = licenses.bsd3;
     maintainers = with maintainers; [ vanzef ];
   };
 }
diff --git a/pkgs/development/python-modules/iammeter/default.nix b/pkgs/development/python-modules/iammeter/default.nix
index 7747e53f5bab1..4a9ba50b91ac2 100644
--- a/pkgs/development/python-modules/iammeter/default.nix
+++ b/pkgs/development/python-modules/iammeter/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "iammeter"
-  ];
+  pythonImportsCheck = [ "iammeter" ];
 
   meta = with lib; {
     description = "Module to work with the IamMeter API";
diff --git a/pkgs/development/python-modules/iapws/default.nix b/pkgs/development/python-modules/iapws/default.nix
index 8e2e3fd07a81d..2b373aa359da4 100644
--- a/pkgs/development/python-modules/iapws/default.nix
+++ b/pkgs/development/python-modules/iapws/default.nix
@@ -1,13 +1,18 @@
-{ lib, buildPythonPackage, fetchPypi, scipy }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  scipy,
+}:
 
 buildPythonPackage rec {
   pname = "iapws";
-  version = "1.5.3";
+  version = "1.5.4";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-QVxbf9EF9YwAVPewAqhc1WZD6jVr/rFXQUw/jJ7kkDU=";
+    hash = "sha256-nw+qOaln12/F5flfYdki4TVFMZLgK/h10HJC8T1uqlU=";
   };
 
   propagatedBuildInputs = [ scipy ];
diff --git a/pkgs/development/python-modules/iaqualink/default.nix b/pkgs/development/python-modules/iaqualink/default.nix
index 56dde70d3e3be..e436b599d95d1 100644
--- a/pkgs/development/python-modules/iaqualink/default.nix
+++ b/pkgs/development/python-modules/iaqualink/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatch-vcs
-, hatchling
-, httpx
-, pytestCheckHook
-, pythonOlder
-, respx
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatch-vcs,
+  hatchling,
+  httpx,
+  pytestCheckHook,
+  pythonOlder,
+  respx,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     hatchling
   ];
 
-  propagatedBuildInputs = [
-    httpx
-  ] ++ httpx.optional-dependencies.http2;
+  propagatedBuildInputs = [ httpx ] ++ httpx.optional-dependencies.http2;
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -42,9 +41,7 @@ buildPythonPackage rec {
       --replace "pytest --cov-config=pyproject.toml --cov-report=xml --cov-report=term --cov=src --cov=tests" ""
   '';
 
-  pythonImportsCheck = [
-    "iaqualink"
-  ];
+  pythonImportsCheck = [ "iaqualink" ];
 
   meta = with lib; {
     description = "Python library for Jandy iAqualink";
diff --git a/pkgs/development/python-modules/ibeacon-ble/default.nix b/pkgs/development/python-modules/ibeacon-ble/default.nix
index acbc955f10891..e0f9fc6823559 100644
--- a/pkgs/development/python-modules/ibeacon-ble/default.nix
+++ b/pkgs/development/python-modules/ibeacon-ble/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, aiohttp
-, aiooui
-, buildPythonPackage
-, fetchFromGitHub
-, home-assistant-bluetooth
-, mac-vendor-lookup
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aiooui,
+  buildPythonPackage,
+  fetchFromGitHub,
+  home-assistant-bluetooth,
+  mac-vendor-lookup,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
       --replace-fail " --cov=ibeacon_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -40,13 +39,9 @@ buildPythonPackage rec {
     mac-vendor-lookup
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ibeacon_ble"
-  ];
+  pythonImportsCheck = [ "ibeacon_ble" ];
 
   meta = with lib; {
     description = "Library for iBeacon BLE devices";
diff --git a/pkgs/development/python-modules/ibis-framework/default.nix b/pkgs/development/python-modules/ibis-framework/default.nix
index c6d68d83dbff2..abaabb11f1bb1 100644
--- a/pkgs/development/python-modules/ibis-framework/default.nix
+++ b/pkgs/development/python-modules/ibis-framework/default.nix
@@ -1,89 +1,91 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, atpublic
-, bidict
-, black
-, clickhouse-connect
-, dask
-, datafusion
-, db-dtypes
-, duckdb
-, duckdb-engine
-, filelock
-, geoalchemy2
-, geopandas
-, google-cloud-bigquery
-, google-cloud-bigquery-storage
-, graphviz
-, hypothesis
-, multipledispatch
-, numpy
-, oracledb
-, packaging
-, pandas
-, parsy
-, pins
-, poetry-core
-, poetry-dynamic-versioning
-, polars
-, psycopg2
-, pyarrow
-, pyarrow-hotfix
-, pydata-google-auth
-, pydruid
-, pymysql
-, pyodbc
-, pyspark
-, pytest-benchmark
-, pytest-httpserver
-, pytest-mock
-, pytest-randomly
-, pytest-snapshot
-, pytest-xdist
-, python-dateutil
-, pytz
-, regex
-, rich
-, shapely
-, snowflake-connector-python
-, snowflake-sqlalchemy
-, sqlalchemy
-, sqlalchemy-views
-, sqlglot
-, sqlite
-, toolz
-, trino-python-client
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  atpublic,
+  bidict,
+  black,
+  clickhouse-connect,
+  dask,
+  datafusion,
+  db-dtypes,
+  duckdb,
+  filelock,
+  geopandas,
+  google-cloud-bigquery,
+  google-cloud-bigquery-storage,
+  graphviz,
+  hypothesis,
+  multipledispatch,
+  numpy,
+  oracledb,
+  packaging,
+  pandas,
+  parsy,
+  pins,
+  poetry-core,
+  poetry-dynamic-versioning,
+  polars,
+  psycopg2,
+  pyarrow,
+  pyarrow-hotfix,
+  pydata-google-auth,
+  pydruid,
+  pymysql,
+  pyodbc,
+  pyspark,
+  pytest-benchmark,
+  pytest-httpserver,
+  pytest-mock,
+  pytest-randomly,
+  pytest-snapshot,
+  pytest-timeout,
+  pytest-xdist,
+  python-dateutil,
+  pytz,
+  regex,
+  rich,
+  shapely,
+  snowflake-connector-python,
+  sqlglot,
+  sqlite,
+  toolz,
+  trino-python-client,
+  typing-extensions,
 }:
 let
-  testBackends = [ "datafusion" "duckdb" "pandas" "sqlite" ];
+  testBackends = [
+    "datafusion"
+    "duckdb"
+    "pandas"
+    "sqlite"
+  ];
 
   ibisTestingData = fetchFromGitHub {
     name = "ibis-testing-data";
     owner = "ibis-project";
     repo = "testing-data";
-    # https://github.com/ibis-project/ibis/blob/8.0.0/nix/overlay.nix#L20-L26
-    rev = "2c6a4bb5d5d525058d8d5b2312a9fee5dafc5476";
-    hash = "sha256-Lq503bqh9ESZJSk6yVq/uZwkAubzmSmoTBZSsqMm0DY=";
+    # https://github.com/ibis-project/ibis/blob/9.1.0/nix/overlay.nix#L20-L26
+    rev = "6737d1cb5951cabaccd095a3ae62a93dbd11ecb9";
+    hash = "sha256-MoVTZPWh4KVlrICYACrgfeLdl/fqoa1iweNg3zUtdrs=";
   };
 in
 
 buildPythonPackage rec {
   pname = "ibis-framework";
-  version = "8.0.0";
+  version = "9.1.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     name = "ibis-source";
     repo = "ibis";
     owner = "ibis-project";
     rev = "refs/tags/${version}";
-    hash = "sha256-KcNZslqmSbu8uPYKpkyvd7d8Fsf0nQt80y0auXsI8fs=";
+    hash = "sha256-GmzmXzYMs7K7B//is3ZoD4muPAkb0tM56zFBbsA+NEo=";
   };
 
   nativeBuildInputs = [
@@ -91,7 +93,8 @@ buildPythonPackage rec {
     poetry-dynamic-versioning
   ];
 
-  POETRY_DYNAMIC_VERSIONING_BYPASS = version;
+  dontBypassPoetryDynamicVersioning = true;
+  env.POETRY_DYNAMIC_VERSIONING_BYPASS = lib.head (lib.strings.splitString "-" version);
 
   propagatedBuildInputs = [
     atpublic
@@ -120,6 +123,7 @@ buildPythonPackage rec {
     pytest-mock
     pytest-randomly
     pytest-snapshot
+    pytest-timeout
     pytest-xdist
   ] ++ lib.concatMap (name: passthru.optional-dependencies.${name}) testBackends;
 
@@ -130,25 +134,16 @@ buildPythonPackage rec {
   ];
 
   disabledTests = [
-    # breakage from sqlalchemy2 truediv changes
-    "test_tpc_h17"
     # tries to download duckdb extensions
-    "test_register_sqlite"
+    "test_attach_sqlite"
+    "test_connect_extensions"
+    "test_load_extension"
     "test_read_sqlite"
-    # duckdb does not respect sample_size=2 (reads 3 lines of csv).
-    "test_csv_reregister_schema"
-    # duckdb fails with:
-    # "This function can not be called with an active transaction!, commit or abort the existing one first"
-    "test_vectorized_udf"
+    "test_register_sqlite"
+    # requires network connection
     "test_s3_403_fallback"
-    "test_map_merge_udf"
-    "test_udf"
-    "test_map_udf"
-    # DataFusion error
-    "datafusion"
-    # pluggy.PluggyTeardownRaisedWarning
-    "test_repr_png_is_not_none_in_not_interactive"
-    "test_interval_arithmetic"
+    # requires pytest 8.2+
+    "test_roundtrip_delta"
   ];
 
   # patch out tests that check formatting with black
@@ -170,30 +165,52 @@ buildPythonPackage rec {
     rm -r "$IBIS_TEST_DATA_DIRECTORY"
   '';
 
-  pythonImportsCheck = [
-    "ibis"
-  ] ++ map (backend: "ibis.backends.${backend}") testBackends;
+  pythonImportsCheck = [ "ibis" ] ++ map (backend: "ibis.backends.${backend}") testBackends;
 
   passthru = {
     optional-dependencies = {
-      bigquery = [ db-dtypes google-cloud-bigquery google-cloud-bigquery-storage pydata-google-auth ];
-      clickhouse = [ clickhouse-connect sqlalchemy ];
-      dask = [ dask regex ];
+      bigquery = [
+        db-dtypes
+        google-cloud-bigquery
+        google-cloud-bigquery-storage
+        pydata-google-auth
+      ];
+      clickhouse = [ clickhouse-connect ];
+      dask = [
+        dask
+        regex
+        packaging
+      ];
       datafusion = [ datafusion ];
-      druid = [ pydruid sqlalchemy ];
-      duckdb = [ duckdb duckdb-engine sqlalchemy sqlalchemy-views ];
+      druid = [ pydruid ];
+      duckdb = [ duckdb ];
       flink = [ ];
-      geospatial = [ geoalchemy2 geopandas shapely ];
-      mssql = [ sqlalchemy pyodbc sqlalchemy-views ];
-      mysql = [ sqlalchemy pymysql sqlalchemy-views ];
-      oracle = [ sqlalchemy oracledb packaging sqlalchemy-views ];
-      pandas = [ regex ];
-      polars = [ polars packaging ];
-      postgres = [ psycopg2 sqlalchemy sqlalchemy-views ];
-      pyspark = [ pyspark sqlalchemy packaging ];
-      snowflake = [ snowflake-connector-python snowflake-sqlalchemy sqlalchemy-views packaging ];
-      sqlite = [ regex sqlalchemy sqlalchemy-views ];
-      trino = [ trino-python-client sqlalchemy sqlalchemy-views ];
+      geospatial = [
+        geopandas
+        shapely
+      ];
+      mssql = [ pyodbc ];
+      mysql = [ pymysql ];
+      oracle = [
+        oracledb
+        packaging
+      ];
+      pandas = [
+        regex
+        packaging
+      ];
+      polars = [
+        polars
+        packaging
+      ];
+      postgres = [ psycopg2 ];
+      pyspark = [
+        pyspark
+        packaging
+      ];
+      snowflake = [ snowflake-connector-python ];
+      sqlite = [ regex ];
+      trino = [ trino-python-client ];
       visualization = [ graphviz ];
       decompiler = [ black ];
       examples = [ pins ] ++ pins.optional-dependencies.gcs;
diff --git a/pkgs/development/python-modules/ibis/default.nix b/pkgs/development/python-modules/ibis/default.nix
index e012ca20e2d7b..2300af2347841 100644
--- a/pkgs/development/python-modules/ibis/default.nix
+++ b/pkgs/development/python-modules/ibis/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,14 +24,12 @@ buildPythonPackage rec {
     ${python.interpreter} test_ibis.py
   '';
 
-  pythonImportsCheck = [
-    "ibis"
-  ];
+  pythonImportsCheck = [ "ibis" ];
 
   meta = with lib; {
     description = "Lightweight template engine";
     homepage = "https://github.com/dmulholland/ibis";
     license = licenses.publicDomain;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix b/pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix
index 46a5eb3e36912..81ce3ddee218a 100644
--- a/pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix
+++ b/pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix
@@ -1,32 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyjwt
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, requests
-, responses
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyjwt,
+  pytestCheckHook,
+  python-dateutil,
+  pythonAtLeast,
+  pythonOlder,
+  requests,
+  responses,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "ibm-cloud-sdk-core";
-  version = "3.19.2";
+  version = "3.20.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-qodN9ALyAfzsrCAiPT3t02JJRCBqFCNVWlsQP+4d3do=";
+    hash = "sha256-nE1JIlYlJ5O3L7FQD5L+JvLnVs7nq4Ff6dmHvgXjj0M=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  pythonRelaxDeps = [ "requests" ];
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pyjwt
     python-dateutil
     requests
@@ -37,22 +39,28 @@ buildPythonPackage rec {
     responses
   ];
 
-  disabledTests = [
-    # Various tests try to access credential files which are not included with the source distribution
-    "test_configure_service"
-    "test_cp4d_authenticator"
-    "test_cwd"
-    "test_files_dict"
-    "test_files_duplicate_parts"
-    "test_files_list"
-    "test_get_authenticator"
-    "test_gzip_compression_external"
-    "test_iam"
-    "test_read_external_sources_2"
-    "test_retry_config_external"
-    # assertion error due to requests brotli support
-    "test_http_client"
-  ];
+  disabledTests =
+    [
+      # Various tests try to access credential files which are not included with the source distribution
+      "test_configure_service"
+      "test_cp4d_authenticator"
+      "test_cwd"
+      "test_files_dict"
+      "test_files_duplicate_parts"
+      "test_files_list"
+      "test_get_authenticator"
+      "test_gzip_compression_external"
+      "test_iam"
+      "test_read_external_sources_2"
+      "test_retry_config_external"
+      # assertion error due to requests brotli support
+      "test_http_client"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      # Tests are blocking or failing
+      "test_abstract_class_instantiation"
+      "test_abstract_class_instantiation"
+    ];
 
   disabledTestPaths = [
     "test/test_container_token_manager.py"
diff --git a/pkgs/development/python-modules/ibm-watson/default.nix b/pkgs/development/python-modules/ibm-watson/default.nix
index c15ec2005a297..74ce5e9884529 100644
--- a/pkgs/development/python-modules/ibm-watson/default.nix
+++ b/pkgs/development/python-modules/ibm-watson/default.nix
@@ -1,21 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, ibm-cloud-sdk-core
-, pytest-rerunfailures
-, pytestCheckHook
-, python-dateutil
-, python-dotenv
-, pythonOlder
-, requests
-, responses
-, websocket-client
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ibm-cloud-sdk-core,
+  pytest-rerunfailures,
+  pytestCheckHook,
+  python-dateutil,
+  python-dotenv,
+  pythonOlder,
+  requests,
+  setuptools,
+  responses,
+  websocket-client,
 }:
 
 buildPythonPackage rec {
   pname = "ibm-watson";
-  version = "8.0.0";
-  format = "setuptools";
+  version = "8.1.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -23,10 +25,12 @@ buildPythonPackage rec {
     owner = "watson-developer-cloud";
     repo = "python-sdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-p2LyR7Fxd0Ny6QCypAWIusnINuhWAhWOnRfZ14FKvro=";
+    hash = "sha256-r7A5i17KIy1pBrj01yeknfrOFjb5yZco8ZOc7tlFM7k=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     ibm-cloud-sdk-core
     python-dateutil
     requests
@@ -40,9 +44,7 @@ buildPythonPackage rec {
     responses
   ];
 
-  pythonImportsCheck = [
-    "ibm_watson"
-  ];
+  pythonImportsCheck = [ "ibm_watson" ];
 
   meta = with lib; {
     description = "Client library to use the IBM Watson Services";
diff --git a/pkgs/development/python-modules/ical/default.nix b/pkgs/development/python-modules/ical/default.nix
index 7807d5d7b2798..e021c6574a85e 100644
--- a/pkgs/development/python-modules/ical/default.nix
+++ b/pkgs/development/python-modules/ical/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, emoji
-, fetchFromGitHub
-, freezegun
-, tzdata
-, pyparsing
-, pydantic
-, pytest-benchmark
-, pytestCheckHook
-, pythonOlder
-, python-dateutil
-, setuptools
-, syrupy
+{
+  lib,
+  buildPythonPackage,
+  emoji,
+  fetchFromGitHub,
+  freezegun,
+  tzdata,
+  pyparsing,
+  pydantic,
+  pytest-benchmark,
+  pytestCheckHook,
+  pythonOlder,
+  python-dateutil,
+  setuptools,
+  syrupy,
 }:
 
 buildPythonPackage rec {
   pname = "ical";
-  version = "8.0.0";
+  version = "8.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -25,12 +26,10 @@ buildPythonPackage rec {
     owner = "allenporter";
     repo = "ical";
     rev = "refs/tags/${version}";
-    hash = "sha256-nwF6iInQzHdOtmcC1fi6CS2LnYRCxc/DS9bg8IxTlFg=";
+    hash = "sha256-9mnyhDKcZTZAGRxojQN9I9ZAgBmsSSsBPzCMZO6Rl5k=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     python-dateutil
@@ -47,9 +46,7 @@ buildPythonPackage rec {
     syrupy
   ];
 
-  pythonImportsCheck = [
-    "ical"
-  ];
+  pythonImportsCheck = [ "ical" ];
 
   meta = with lib; {
     description = "Library for handling iCalendar";
diff --git a/pkgs/development/python-modules/icalendar/default.nix b/pkgs/development/python-modules/icalendar/default.nix
index e848cb79cf483..1170485bf39f9 100644
--- a/pkgs/development/python-modules/icalendar/default.nix
+++ b/pkgs/development/python-modules/icalendar/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, backports-zoneinfo
-, python-dateutil
-, pytz
-, hypothesis
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  backports-zoneinfo,
+  python-dateutil,
+  pytz,
+  hypothesis,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
-  version = "5.0.12";
+  version = "5.0.13";
   pname = "icalendar";
   pyproject = true;
 
@@ -19,19 +20,15 @@ buildPythonPackage rec {
     owner = "collective";
     repo = "icalendar";
     rev = "refs/tags/v${version}";
-    hash = "sha256-313NcknY2zad4lI+/P0szDVjEQ8VatnSiBiaG/Ta1Bw=";
+    hash = "sha256-2gpWfLXR4HThw23AWxY2rY9oiK6CF3Qiad8DWHCs4Qk=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     python-dateutil
     pytz
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    backports-zoneinfo
-  ];
+  ] ++ lib.optionals (pythonOlder "3.9") [ backports-zoneinfo ];
 
   nativeCheckInputs = [
     hypothesis
@@ -42,11 +39,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     changelog = "https://github.com/collective/icalendar/blob/v${version}/CHANGES.rst";
-    description = "A parser/generator of iCalendar files";
+    description = "Parser/generator of iCalendar files";
     mainProgram = "icalendar";
     homepage = "https://github.com/collective/icalendar";
     license = licenses.bsd2;
     maintainers = with maintainers; [ olcai ];
   };
-
 }
diff --git a/pkgs/development/python-modules/icalevents/default.nix b/pkgs/development/python-modules/icalevents/default.nix
index 41b6f1bd34f72..8c08395906764 100644
--- a/pkgs/development/python-modules/icalevents/default.nix
+++ b/pkgs/development/python-modules/icalevents/default.nix
@@ -1,38 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, poetry-core
-, pythonRelaxDepsHook
-, datetime
-, httplib2
-, icalendar
-, python-dateutil
-, pytz
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  poetry-core,
+  httplib2,
+  icalendar,
+  python-dateutil,
+  pytz,
 }:
 
 buildPythonPackage rec {
   pname = "icalevents";
-  version = "0.1.27";
+  version = "0.1.29";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "jazzband";
-    repo = pname;
+    repo = "icalevents";
     rev = "refs/tags/v${version}";
-    hash = "sha256-vSYQEJFBjXUF4WwEAtkLtcO3y/am00jGS+8Vj+JMMqQ=";
+    hash = "sha256-Bp+Wz88q65Gem8LyRz0A4xE5hIgOD+iZ7E1UlnfFiD4=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  propagatedBuildInputs = [
-    datetime
+  dependencies = [
     httplib2
     icalendar
     python-dateutil
@@ -40,15 +37,12 @@ buildPythonPackage rec {
   ];
 
   pythonRelaxDeps = [
-    "datetime"
     "httplib2"
     "icalendar"
     "pytz"
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Makes HTTP calls
diff --git a/pkgs/development/python-modules/icecream/default.nix b/pkgs/development/python-modules/icecream/default.nix
index db9e56bb8b6e3..c93fe2f7042d1 100644
--- a/pkgs/development/python-modules/icecream/default.nix
+++ b/pkgs/development/python-modules/icecream/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-
-# build-system
-, setuptools
-
-# dependencies
-, asttokens
-, colorama
-, executing
-, pygments
-
-# tests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  asttokens,
+  colorama,
+  executing,
+  pygments,
+
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
       --replace assertRegexpMatches assertRegex
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     asttokens
@@ -41,9 +40,7 @@ buildPythonPackage rec {
     pygments
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # icecream.icecream.NoSourceAvailableError
@@ -53,7 +50,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A little library for sweet and creamy print debugging";
+    description = "Little library for sweet and creamy print debugging";
     homepage = "https://github.com/gruns/icecream";
     license = licenses.mit;
     maintainers = with maintainers; [ renatoGarcia ];
diff --git a/pkgs/development/python-modules/iceportal/default.nix b/pkgs/development/python-modules/iceportal/default.nix
index a587503bc0725..0ec332e10dfd3 100644
--- a/pkgs/development/python-modules/iceportal/default.nix
+++ b/pkgs/development/python-modules/iceportal/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, httpx
-, pytest-asyncio
-, pytest-httpx
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  httpx,
+  pytest-asyncio,
+  pytest-httpx,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,9 @@ buildPythonPackage rec {
     hash = "sha256-kpAUgGi2fAHzQYuZAaQW9wdrYjwbduRsoTwSuzcjJa8=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  dependencies = [
-    httpx
-  ];
+  dependencies = [ httpx ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -37,9 +34,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "iceportal"
-  ];
+  pythonImportsCheck = [ "iceportal" ];
 
   meta = with lib; {
     description = "Library for getting data from the ICE Portal";
diff --git a/pkgs/development/python-modules/icmplib/default.nix b/pkgs/development/python-modules/icmplib/default.nix
index 0d42526c8ca98..1ea2b702001b0 100644
--- a/pkgs/development/python-modules/icmplib/default.nix
+++ b/pkgs/development/python-modules/icmplib/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pbr
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pbr,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/icnsutil/default.nix b/pkgs/development/python-modules/icnsutil/default.nix
index 46c1fcae3facb..8061c62feb228 100644
--- a/pkgs/development/python-modules/icnsutil/default.nix
+++ b/pkgs/development/python-modules/icnsutil/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     ${python.interpreter} tests/test_cli.py
   '';
 
-  pythonImportsCheck = [
-    "icnsutil"
-  ];
+  pythonImportsCheck = [ "icnsutil" ];
 
   meta = with lib; {
     description = "Create and extract .icns files";
diff --git a/pkgs/development/python-modules/icoextract/default.nix b/pkgs/development/python-modules/icoextract/default.nix
deleted file mode 100644
index beb39a32aa393..0000000000000
--- a/pkgs/development/python-modules/icoextract/default.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, pefile, pillow}:
-
-buildPythonPackage rec {
-  pname = "icoextract";
-  version = "0.1.4";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    extension = "tar.gz";
-    hash = "sha256-x0GEV0PUbkAzoUJgAqup9bHd7iYttGyzIZNdo8KsFyo=";
-  };
-
-  propagatedBuildInputs = [
-    pefile
-    pillow
-  ];
-
-  # tests expect mingw and multiarch
-  doCheck = false;
-
-  pythonImportsCheck = [
-    "icoextract"
-  ];
-
-  postInstall = ''
-    mkdir -p $out/share/thumbnailers
-    substituteAll ${./exe-thumbnailer.thumbnailer} $out/share/thumbnailers/exe-thumbnailer.thumbnailer
-  '';
-
-  meta = with lib; {
-    description = "Extract icons from Windows PE files";
-    homepage = "https://github.com/jlu5/icoextract";
-    license = licenses.mit;
-    maintainers = with maintainers; [ bryanasdev000 donovanglover ];
-  };
-}
diff --git a/pkgs/development/python-modules/icoextract/exe-thumbnailer.thumbnailer b/pkgs/development/python-modules/icoextract/exe-thumbnailer.thumbnailer
deleted file mode 100644
index c275ac919b6ba..0000000000000
--- a/pkgs/development/python-modules/icoextract/exe-thumbnailer.thumbnailer
+++ /dev/null
@@ -1,3 +0,0 @@
-[Thumbnailer Entry]
-Exec=@out@/bin/exe-thumbnailer -v -s %s %i %o
-MimeType=application/x-ms-dos-executable;application/x-dosexec;application/x-msdownload
diff --git a/pkgs/development/python-modules/icontract/default.nix b/pkgs/development/python-modules/icontract/default.nix
index f8b9fd589f186..b372a31b2c255 100644
--- a/pkgs/development/python-modules/icontract/default.nix
+++ b/pkgs/development/python-modules/icontract/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, astor
-, asttokens
-, asyncstdlib
-, buildPythonPackage
-, deal
-, dpcontracts
-, fetchFromGitHub
-, numpy
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, typing-extensions
+{
+  lib,
+  astor,
+  asttokens,
+  asyncstdlib,
+  buildPythonPackage,
+  deal,
+  dpcontracts,
+  fetchFromGitHub,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "icontract";
-  version = "2.6.6";
+  version = "2.7.0";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -24,7 +25,7 @@ buildPythonPackage rec {
     owner = "Parquery";
     repo = "icontract";
     rev = "refs/tags/v${version}";
-    hash = "sha256-R5/FBfuTvXItfTlNZMSnO18Q+etnHbQyXFWpaOpOLes=";
+    hash = "sha256-+0h3Zb7lTxtaWTv2/MmvQCcccUKhTOxGqbqKELE8mQY=";
   };
 
   preCheck = ''
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     export ICONTRACT_SLOW=1
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     asttokens
@@ -67,18 +66,20 @@ buildPythonPackage rec {
 
   pytestFlagsArray = [
     # RuntimeWarning: coroutine '*' was never awaited
-    "-W" "ignore::RuntimeWarning"
+    "-W"
+    "ignore::RuntimeWarning"
   ];
 
-  pythonImportsCheck = [
-    "icontract"
-  ];
+  pythonImportsCheck = [ "icontract" ];
 
   meta = with lib; {
     description = "Provide design-by-contract with informative violation messages";
     homepage = "https://github.com/Parquery/icontract";
     changelog = "https://github.com/Parquery/icontract/blob/v${version}/CHANGELOG.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ gador thiagokokada ];
+    maintainers = with maintainers; [
+      gador
+      thiagokokada
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/ics/default.nix b/pkgs/development/python-modules/ics/default.nix
index f6e86242c612f..b1d4dd9a1f052 100644
--- a/pkgs/development/python-modules/ics/default.nix
+++ b/pkgs/development/python-modules/ics/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, arrow
-, attrs
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-flakes
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, tatsu
+{
+  lib,
+  arrow,
+  attrs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-flakes,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  tatsu,
 }:
 
 buildPythonPackage rec {
@@ -15,7 +16,7 @@ buildPythonPackage rec {
   version = "0.7.2";
   pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "ics-py";
@@ -24,11 +25,14 @@ buildPythonPackage rec {
     hash = "sha256-hdtnET7YfSb85+TGwpwzoxOfxPT7VSj9eKSiV6AXUS8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace-fail "--pep8" ""
+  '';
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     attrs
     arrow
     tatsu
@@ -39,23 +43,16 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  postPatch = ''
-    # 0.8 will move to python-dateutil
-    substituteInPlace requirements.txt \
-      --replace "arrow>=0.11,<0.15" "arrow"
-    substituteInPlace setup.cfg --replace "--pep8" ""
-  '';
-
   disabledTests = [
     # Failure seems to be related to arrow > 1.0
     "test_event"
     # Broke with TatSu 5.7:
     "test_many_lines"
+    # AssertionError: 'Europe/Berlin' not found in "tzfile('Atlantic/Jan_Mayen')"
+    "test_timezone_not_dropped"
   ];
 
-  pythonImportsCheck = [
-    "ics"
-  ];
+  pythonImportsCheck = [ "ics" ];
 
   meta = with lib; {
     description = "Pythonic and easy iCalendar library (RFC 5545)";
@@ -66,6 +63,6 @@ buildPythonPackage rec {
     homepage = "http://icspy.readthedocs.org/";
     changelog = "https://github.com/ics-py/ics-py/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/id/default.nix b/pkgs/development/python-modules/id/default.nix
index 2845f47ebc5f6..7ca8930f4fc46 100644
--- a/pkgs/development/python-modules/id/default.nix
+++ b/pkgs/development/python-modules/id/default.nix
@@ -39,7 +39,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "id" ];
 
   meta = with lib; {
-    description = "A tool for generating OIDC identities";
+    description = "Tool for generating OIDC identities";
     homepage = "https://github.com/di/id";
     changelog = "https://github.com/di/id/blob/${version}/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/idasen-ha/default.nix b/pkgs/development/python-modules/idasen-ha/default.nix
new file mode 100644
index 0000000000000..2c93133cf6ad9
--- /dev/null
+++ b/pkgs/development/python-modules/idasen-ha/default.nix
@@ -0,0 +1,41 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  idasen,
+  lib,
+  pytest-asyncio,
+  pytestCheckHook,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "idasen-ha";
+  version = "2.6.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "abmantis";
+    repo = "idasen-ha";
+    rev = "refs/tags/${version}";
+    hash = "sha256-lqqSx4jxQVq2pjVv9lvaX6nNK6OqtMjPqOtLMLpVMUU=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ idasen ];
+
+  pythonImportsCheck = [ "idasen_ha" ];
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  meta = {
+    changelog = "https://github.com/abmantis/idasen-ha/releases/tag/${version}";
+    description = "Home Assistant helper lib for the IKEA Idasen Desk integration";
+    homepage = "https://github.com/abmantis/idasen-ha";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/idasen/default.nix b/pkgs/development/python-modules/idasen/default.nix
index 122ff64eb0887..8f1c36006f93c 100644
--- a/pkgs/development/python-modules/idasen/default.nix
+++ b/pkgs/development/python-modules/idasen/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, bleak
-, pyyaml
-, voluptuous
-, pytestCheckHook
-, pytest-asyncio
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  bleak,
+  pyyaml,
+  voluptuous,
+  pytestCheckHook,
+  pytest-asyncio,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
   pname = "idasen";
   version = "0.12.0";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -24,11 +25,9 @@ buildPythonPackage rec {
     hash = "sha256-TQ+DBFpG+IeZ4/dN+YKMw3AM4Dl1rpqA1kRcb3Tb3jA=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     bleak
     pyyaml
     voluptuous
@@ -39,9 +38,7 @@ buildPythonPackage rec {
     pytest-asyncio
   ];
 
-  pythonImportsCheck = [
-    "idasen"
-  ];
+  pythonImportsCheck = [ "idasen" ];
 
   meta = with lib; {
     description = "Python API and CLI for the ikea IDÅSEN desk";
diff --git a/pkgs/development/python-modules/identify/default.nix b/pkgs/development/python-modules/identify/default.nix
index e6e8f306bf0d5..a04317e4ed9ed 100644
--- a/pkgs/development/python-modules/identify/default.nix
+++ b/pkgs/development/python-modules/identify/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "identify";
-  version = "2.5.36";
+  version = "2.6.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "pre-commit";
     repo = "identify";
     rev = "refs/tags/v${version}";
-    hash = "sha256-CO+qP0FIUdPFXy6/7FgrKZbUp48XbgqqGV2GAX9ogMY=";
+    hash = "sha256-EbJiMTDE9eumhkWTXlcB38rHrX5DPAZdqix2H4ocnkE=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/idna-ssl/default.nix b/pkgs/development/python-modules/idna-ssl/default.nix
index a26aecb49d047..cc0c12f709993 100644
--- a/pkgs/development/python-modules/idna-ssl/default.nix
+++ b/pkgs/development/python-modules/idna-ssl/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, idna }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  idna,
+}:
 
 buildPythonPackage rec {
   pname = "idna-ssl";
diff --git a/pkgs/development/python-modules/idna/default.nix b/pkgs/development/python-modules/idna/default.nix
index 77aeb4483dc3d..e44da7b58abe6 100644
--- a/pkgs/development/python-modules/idna/default.nix
+++ b/pkgs/development/python-modules/idna/default.nix
@@ -1,30 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "idna";
-  version = "3.6";
-  format = "pyproject";
+  version = "3.7";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ns270IOwZ5iuHoaty/6KsUec+GTk7jD+TkagA9Ekkco=";
+    hash = "sha256-Ao/zqt8GCcH9J42OowiSmUEqeoub0AXdCLn4KFvLXPw=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = {
     homepage = "https://github.com/kjd/idna/";
+    changelog = "https://github.com/kjd/idna/releases/tag/v${version}";
     description = "Internationalized Domain Names in Applications (IDNA)";
     license = lib.licenses.bsd3;
   };
diff --git a/pkgs/development/python-modules/ifaddr/default.nix b/pkgs/development/python-modules/ifaddr/default.nix
index 2f5d8e202dba1..e313d7bc71025 100644
--- a/pkgs/development/python-modules/ifaddr/default.nix
+++ b/pkgs/development/python-modules/ifaddr/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-zAy/yqv3ZdRFlYJfuWqZuxLHlxa3O0QzDqOO4rDErtQ=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "ifaddr" ];
 
diff --git a/pkgs/development/python-modules/ifcopenshell/default.nix b/pkgs/development/python-modules/ifcopenshell/default.nix
index 3fc63b13bb391..f9b1fb66ec202 100644
--- a/pkgs/development/python-modules/ifcopenshell/default.nix
+++ b/pkgs/development/python-modules/ifcopenshell/default.nix
@@ -1,31 +1,38 @@
-{ lib, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, gcc10
-, cmake
-, boost179
-, icu
-, swig
-, pcre
-, opencascade-occt
-, opencollada
-, libxml2
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gcc10,
+  cmake,
+  boost179,
+  icu,
+  swig,
+  pcre,
+  opencascade-occt_7_6,
+  opencollada,
+  libxml2,
 }:
-
+let
+  opencascade-occt = opencascade-occt_7_6;
+in
 buildPythonPackage rec {
   pname = "ifcopenshell";
-  version = "240306";
+  version = "240611";
   format = "other";
 
   src = fetchFromGitHub {
-    owner  = "IfcOpenShell";
-    repo   = "IfcOpenShell";
+    owner = "IfcOpenShell";
+    repo = "IfcOpenShell";
     rev = "refs/tags/blenderbim-${version}";
     fetchSubmodules = true;
-    sha256 = "sha256-DtA8KeWipPfOnztKG/lrgLZeOCUG3nWR9oW7OST7koc=";
+    hash = "sha256-fCgxSambC01qb14EoZTrVxNNw8H3nX8oMi6gk0O/HmQ=";
   };
 
-  nativeBuildInputs = [ gcc10 cmake ];
+  nativeBuildInputs = [
+    gcc10
+    cmake
+  ];
 
   buildInputs = [
     boost179
@@ -38,7 +45,7 @@ buildPythonPackage rec {
     cd cmake
   '';
 
-  PYTHONUSERBASE=".";
+  PYTHONUSERBASE = ".";
   cmakeFlags = [
     "-DUSERSPACE_PYTHON_PREFIX=ON"
     "-DOCC_INCLUDE_DIR=${opencascade-occt}/include/opencascade"
@@ -51,10 +58,10 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     description = "Open source IFC library and geometry engine";
-    homepage    = "http://ifcopenshell.org/";
-    license     = licenses.lgpl3;
+    homepage = "http://ifcopenshell.org/";
+    license = licenses.lgpl3;
     maintainers = with maintainers; [ fehnomenal ];
   };
 }
diff --git a/pkgs/development/python-modules/ignite/default.nix b/pkgs/development/python-modules/ignite/default.nix
index 174ba8312745a..26009c97d47e4 100644
--- a/pkgs/development/python-modules/ignite/default.nix
+++ b/pkgs/development/python-modules/ignite/default.nix
@@ -1,32 +1,47 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pytest-xdist
-, torchvision
-, pythonOlder
-, matplotlib
-, mock
-, packaging
-, torch
-, scikit-learn
-, tqdm
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  pytestCheckHook,
+  pytest-xdist,
+  torchvision,
+  matplotlib,
+  mock,
+  packaging,
+  torch,
 }:
 
 buildPythonPackage rec {
   pname = "ignite";
-  version = "0.5.0.post2";
-  format = "setuptools";
+  version = "0.5.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "pytorch";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-Lg7ASODYwWWhC45X4+Bk50gSlSWwgn2tM4atLXWbQLI=";
+    hash = "sha256-J0xrqAGwH0bAs59T7zA8irMWOGbE2+Zd9kwqxYUYYMA=";
   };
 
-  nativeCheckInputs = [ pytestCheckHook matplotlib mock pytest-xdist torchvision ];
-  propagatedBuildInputs = [ packaging torch scikit-learn tqdm ];
+  build-system = [ setuptools ];
+
+  dependencies = [
+    packaging
+    torch
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    matplotlib
+    mock
+    pytest-xdist
+    torchvision
+  ];
 
   # runs successfully in 3.9, however, async isn't correctly closed so it will fail after test suite.
   doCheck = pythonOlder "3.9";
@@ -64,10 +79,24 @@ buildPythonPackage rec {
     "visdom"
   ];
 
-  meta = with lib; {
+  pythonImportsCheck = [
+    "ignite"
+    "ignite.engine"
+    "ignite.handlers"
+    "ignite.metrics"
+    "ignite.distributed"
+    "ignite.exceptions"
+    "ignite.utils"
+    "ignite.contrib"
+  ];
+
+  meta = {
     description = "High-level training library for PyTorch";
-    homepage = "https://pytorch.org/ignite";
-    license = licenses.bsd3;
-    maintainers = [ maintainers.bcdarwin ];
+    homepage = "https://pytorch-ignite.ai";
+    changelog = "https://github.com/pytorch/ignite/releases/tag/v${version}";
+    license = lib.licenses.bsd3;
+    maintainers = [ lib.maintainers.bcdarwin ];
+    # ModuleNotFoundError: No module named 'torch._C._distributed_c10d'; 'torch._C' is not a package
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/igraph/default.nix b/pkgs/development/python-modules/igraph/default.nix
index 98f38528c1442..3f13cf77b7293 100644
--- a/pkgs/development/python-modules/igraph/default.nix
+++ b/pkgs/development/python-modules/igraph/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pkg-config
-, setuptools
-, igraph
-, texttable
-, cairocffi
-, matplotlib
-, plotly
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pkg-config,
+  setuptools,
+  igraph,
+  texttable,
+  cairocffi,
+  matplotlib,
+  plotly,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "igraph";
-  version = "0.11.4";
+  version = "0.11.6";
 
   disabled = pythonOlder "3.8";
 
@@ -24,25 +25,24 @@ buildPythonPackage rec {
     owner = "igraph";
     repo = "python-igraph";
     rev = "refs/tags/${version}";
-    hash = "sha256-sR9OqsBxP2DvcYz1dhIP29rrQ56CRKW02oNAXUNttio=";
+    postFetch = ''
+      # export-subst prevents reproducability
+      rm $out/.git_archival.json
+    '';
+    hash = "sha256-DXYNFSvmKiulMnWL8w5l9lWGtS9Sff/Hn4x538nrvzo=";
   };
 
   postPatch = ''
     rm -r vendor
   '';
 
-  nativeBuildInputs = [
-    pkg-config
-    setuptools
-  ];
+  nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [
-    igraph
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    texttable
-  ];
+  buildInputs = [ igraph ];
+
+  dependencies = [ texttable ];
 
   passthru.optional-dependencies = {
     cairo = [ cairocffi ];
@@ -73,6 +73,9 @@ buildPythonPackage rec {
     homepage = "https://igraph.org/python/";
     changelog = "https://github.com/igraph/python-igraph/blob/${src.rev}/CHANGELOG.md";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ MostAwesomeDude dotlambda ];
+    maintainers = with maintainers; [
+      MostAwesomeDude
+      dotlambda
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/ihcsdk/default.nix b/pkgs/development/python-modules/ihcsdk/default.nix
new file mode 100644
index 0000000000000..7750e89c27fae
--- /dev/null
+++ b/pkgs/development/python-modules/ihcsdk/default.nix
@@ -0,0 +1,41 @@
+{
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  lib,
+  requests,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "ihcsdk";
+  version = "2.8.6";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "dingusdk";
+    repo = "PythonIhcSdk";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-0meYr/SywtRfp/TBW3t8QUMlenb5KnzvKfn6c7Przpc=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    cryptography
+    requests
+  ];
+
+  pythonImportsCheck = [ "ihcsdk" ];
+
+  # upstream has no tests
+  doCheck = false;
+
+  meta = {
+    changelog = "https://github.com/dingusdk/PythonIhcSdk/releases/tag/v${version}";
+    description = "SDK for connection to the LK IHC Controller";
+    homepage = "https://github.com/dingusdk/PythonIhcSdk";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/ihm/default.nix b/pkgs/development/python-modules/ihm/default.nix
index 2cfb69178b109..fe73c3ece1770 100644
--- a/pkgs/development/python-modules/ihm/default.nix
+++ b/pkgs/development/python-modules/ihm/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, swig
-, wheel
-, msgpack
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  swig,
+  wheel,
+  msgpack,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "ihm";
-  version = "1.0";
+  version = "1.4";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "ihmwg";
     repo = "python-ihm";
     rev = "refs/tags/${version}";
-    hash = "sha256-a1M3YihN71M9TnkldAzN6N1UuPksDk6SPiBgr4HyC8g=";
+    hash = "sha256-Ls0o/PkJlHt9kx0IvR2Tpwo2QgXxug+Y+LVziTXXDpY=";
   };
 
   nativeBuildInputs = [
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    msgpack
-  ];
+  propagatedBuildInputs = [ msgpack ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # requires network access
diff --git a/pkgs/development/python-modules/iisignature/default.nix b/pkgs/development/python-modules/iisignature/default.nix
index 1ddfd05b53266..8be12a0ef76f3 100644
--- a/pkgs/development/python-modules/iisignature/default.nix
+++ b/pkgs/development/python-modules/iisignature/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, wheel
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  wheel,
+  numpy,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   # PyPI tarball has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/ijson/default.nix b/pkgs/development/python-modules/ijson/default.nix
index 4f99055f5ad11..c23fc8ad870f1 100644
--- a/pkgs/development/python-modules/ijson/default.nix
+++ b/pkgs/development/python-modules/ijson/default.nix
@@ -1,50 +1,41 @@
-{ lib
-, buildPythonPackage
-, cffi
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, yajl
+{
+  lib,
+  buildPythonPackage,
+  cffi,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  yajl,
 }:
 
 buildPythonPackage rec {
   pname = "ijson";
-  version = "3.2.3";
+  version = "3.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-EClOm/ictxPaBbxHkL3/YWYQQy21YZZIJwdImOF0+Rc=";
+    hash = "sha256-fxcua6G+4NTI+OvWOVd7/kKd7g8/lndaBnuLrkSS2KA=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  buildInputs = [
-    yajl
-  ];
+  buildInputs = [ yajl ];
 
-  dependencies = [
-    cffi
-  ];
+  dependencies = [ cffi ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ijson"
-  ];
+  pythonImportsCheck = [ "ijson" ];
 
   meta = with lib; {
     description = "Iterative JSON parser with a standard Python iterator interface";
     homepage = "https://github.com/ICRAR/ijson";
     changelog = "https://github.com/ICRAR/ijson/blob/v${version}/CHANGELOG.md";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ilcli/default.nix b/pkgs/development/python-modules/ilcli/default.nix
new file mode 100644
index 0000000000000..f2cb741931db9
--- /dev/null
+++ b/pkgs/development/python-modules/ilcli/default.nix
@@ -0,0 +1,34 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pytestCheckHook,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "ilcli";
+  version = "0.3.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "cloudant";
+    repo = "ilcli";
+    # no tags
+    rev = "2c033240a18603dd99c2dd8f6185ad0f0169c8c7";
+    hash = "sha256-6aLkzpeS1xeIbTwFFIT7V1KWOaFLLq3opjIxnUuXOBE=";
+  };
+
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "ilcli" ];
+
+  meta = {
+    description = "I like command-line interfaces";
+    homepage = "https://github.com/cloudant/ilcli";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ tochiaha ];
+  };
+}
diff --git a/pkgs/development/python-modules/ilua/default.nix b/pkgs/development/python-modules/ilua/default.nix
index 119c6b17f5e30..4e4899ebc74d5 100644
--- a/pkgs/development/python-modules/ilua/default.nix
+++ b/pkgs/development/python-modules/ilua/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jupyter-console
-, jupyter-core
-, pygments
-, setuptools
-, termcolor
-, txzmq
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jupyter-console,
+  jupyter-core,
+  pygments,
+  setuptools,
+  termcolor,
+  txzmq,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-YxV6xC7GS5NXyMPRZN9YIJxamgP2etwrZUAZjk5PjtU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     jupyter-console
@@ -41,6 +40,6 @@ buildPythonPackage rec {
     mainProgram = "ilua";
     homepage = "https://github.com/guysv/ilua";
     license = licenses.gpl2Only;
-    maintainers = with maintainers; [ wolfangaukang ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/image-diff/default.nix b/pkgs/development/python-modules/image-diff/default.nix
index 8f65994b3885b..1b64799cb0af7 100644
--- a/pkgs/development/python-modules/image-diff/default.nix
+++ b/pkgs/development/python-modules/image-diff/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, python
-, buildPythonPackage
-, fetchFromGitHub
-, pillow
-, click
-, click-default-group
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pillow,
+  click,
+  click-default-group,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/image-go-nord/default.nix b/pkgs/development/python-modules/image-go-nord/default.nix
index 4daa574e79e75..5350b3180d290 100644
--- a/pkgs/development/python-modules/image-go-nord/default.nix
+++ b/pkgs/development/python-modules/image-go-nord/default.nix
@@ -1,8 +1,15 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pillow, pytestCheckHook, pythonOlder }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pillow,
+  pytestCheckHook,
+  pythonOlder,
+}:
 
 buildPythonPackage rec {
   pname = "image-go-nord";
-  version = "0.1.7";
+  version = "1.1.0";
   format = "setuptools";
   disabled = pythonOlder "3.7";
 
@@ -10,7 +17,7 @@ buildPythonPackage rec {
     owner = "Schrodinger-Hat";
     repo = "ImageGoNord-pip";
     rev = "refs/tags/v${version}";
-    hash = "sha256-vXABG3aJ6bwT37hfo909oF8qfAY3ZW18xvr1V8vSy5w=";
+    hash = "sha256-2Dnl0dcdMo4PnhHTb/5cJ7C0CvW84av4CCbrTLPqopg=";
   };
 
   propagatedBuildInputs = [ pillow ];
@@ -18,7 +25,7 @@ buildPythonPackage rec {
   nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A tool that can convert rgb images to nordtheme palette";
+    description = "Tool that can convert rgb images to nordtheme palette";
     homepage = "https://github.com/Schrodinger-Hat/ImageGoNord-pip";
     license = licenses.mit;
     maintainers = with maintainers; [ kranzes ];
diff --git a/pkgs/development/python-modules/imagecodecs-lite/default.nix b/pkgs/development/python-modules/imagecodecs-lite/default.nix
index cef23d308f4b5..b21b80c7c6949 100644
--- a/pkgs/development/python-modules/imagecodecs-lite/default.nix
+++ b/pkgs/development/python-modules/imagecodecs-lite/default.nix
@@ -1,8 +1,11 @@
-{ stdenv
-, lib, fetchPypi, buildPythonPackage
-, pytest
-, numpy
-, cython
+{
+  stdenv,
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pytest,
+  numpy,
+  cython,
 }:
 
 buildPythonPackage rec {
@@ -15,24 +18,19 @@ buildPythonPackage rec {
     sha256 = "0s4xb17qd7vimc46rafbjnibj4sf0lnv8cwl22k1h6zb7jhqmlcm";
   };
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   checkPhase = ''
     pytest
   '';
 
   meta = with lib; {
-    broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin;
+    broken =
+      (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) || stdenv.hostPlatform.isDarwin;
     description = "Block-oriented, in-memory buffer transformation, compression, and decompression functions";
     homepage = "https://www.lfd.uci.edu/~gohlke/";
     maintainers = [ maintainers.tbenst ];
diff --git a/pkgs/development/python-modules/imagecorruptions/default.nix b/pkgs/development/python-modules/imagecorruptions/default.nix
index 5642812f80401..fa92484160e1a 100644
--- a/pkgs/development/python-modules/imagecorruptions/default.nix
+++ b/pkgs/development/python-modules/imagecorruptions/default.nix
@@ -1,27 +1,28 @@
-{ buildPythonPackage
-, fetchPypi
-, numpy
-, scikit-image
-, lib
-, opencv4
+{
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  numpy,
+  scikit-image,
+  lib,
+  opencv4,
 }:
 
 buildPythonPackage rec {
   pname = "imagecorruptions";
   version = "1.1.2";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "044e173f24d5934899bdbf3596bfbec917e8083e507eed583ab217abebbe084d";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "'opencv-python >= 3.4.5'," ""
-  '';
+  pythonRemoveDeps = [ "opencv-python" ];
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     numpy
     scikit-image
     opencv4
diff --git a/pkgs/development/python-modules/imagededup/default.nix b/pkgs/development/python-modules/imagededup/default.nix
index a8de28de438e7..e6152a3d586aa 100644
--- a/pkgs/development/python-modules/imagededup/default.nix
+++ b/pkgs/development/python-modules/imagededup/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, fetchurl
-, matplotlib
-, pillow
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, pywavelets
-, scikit-learn
-, setuptools
-, torch
-, torchvision
-, tqdm
-, fetchpatch
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+  fetchurl,
+  matplotlib,
+  pillow,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  pywavelets,
+  scikit-learn,
+  setuptools,
+  torch,
+  torchvision,
+  tqdm,
+  fetchpatch,
 }:
 let
   MobileNetV3 = fetchurl {
@@ -74,9 +75,7 @@ buildPythonPackage rec {
     ln -s ${EfficientNet} $HOME/.cache/torch/hub/checkpoints/${EfficientNet.name}
   '';
 
-  pythonImportsCheck = [
-    "imagededup"
-  ];
+  pythonImportsCheck = [ "imagededup" ];
 
   patches = [
     # https://github.com/idealo/imagededup/pull/217
@@ -89,7 +88,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://idealo.github.io/imagededup/";
-    changelog = "https://github.com/idealo/imagededup/releases/tag/${src.rev}";
+    changelog = "https://github.com/idealo/imagededup/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     description = "Finding duplicate images made easy";
     license = licenses.asl20;
     maintainers = with maintainers; [ stunkymonkey ];
diff --git a/pkgs/development/python-modules/imagehash/default.nix b/pkgs/development/python-modules/imagehash/default.nix
index 55ce39e8648a9..782aab2360d45 100644
--- a/pkgs/development/python-modules/imagehash/default.nix
+++ b/pkgs/development/python-modules/imagehash/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, numpy
-, six
-, scipy
-, pillow
-, pywavelets
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  numpy,
+  six,
+  scipy,
+  pillow,
+  pywavelets,
 }:
 
 buildPythonPackage rec {
@@ -32,7 +33,7 @@ buildPythonPackage rec {
   nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A Python Perceptual Image Hashing Module";
+    description = "Python Perceptual Image Hashing Module";
     mainProgram = "find_similar_images.py";
     homepage = "https://github.com/JohannesBuchner/imagehash";
     license = licenses.bsd2;
diff --git a/pkgs/development/python-modules/imageio-ffmpeg/default.nix b/pkgs/development/python-modules/imageio-ffmpeg/default.nix
index 3f2b7de89dde7..b000d560a56f5 100644
--- a/pkgs/development/python-modules/imageio-ffmpeg/default.nix
+++ b/pkgs/development/python-modules/imageio-ffmpeg/default.nix
@@ -1,51 +1,66 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, substituteAll
-, ffmpeg_4
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  substituteAll,
+  ffmpeg,
+
+  # build-system
+  setuptools,
+
+  # checks
+  psutil,
+  pytestCheckHook,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "imageio-ffmpeg";
-  version = "0.4.9";
-  format = "setuptools";
+  version = "0.5.1";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-ObzRZgEY7zYPpAR0VlAQcTZGYaqdkCHT0mxY8e4ggfU=";
+  src = fetchFromGitHub {
+    owner = "imageio";
+    repo = "imageio-ffmpeg";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-i9DBEhRyW5shgnhpaqpPLTI50q+SATJnxur8PAauYX4=";
   };
 
   patches = [
     (substituteAll {
       src = ./ffmpeg-path.patch;
-      ffmpeg = "${ffmpeg_4}/bin/ffmpeg";
+      ffmpeg = lib.getExe ffmpeg;
     })
   ];
 
-  # https://github.com/imageio/imageio-ffmpeg/issues/59
-  postPatch = ''
-    sed -i '/setup_requires=\["pip>19"\]/d' setup.py
-  '';
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [
+    psutil
+    pytestCheckHook
+  ];
 
-  checkPhase = ''
-    runHook preCheck
+  disabledTestPaths = [
+    # network access
+    "tests/test_io.py"
+    "tests/test_special.py"
+    "tests/test_terminate.py"
+  ];
 
+  postCheck = ''
     ${python.interpreter} << EOF
     from imageio_ffmpeg import get_ffmpeg_version
-    assert get_ffmpeg_version() == '${ffmpeg_4.version}'
+    assert get_ffmpeg_version() == '${ffmpeg.version}'
     EOF
-
-    runHook postCheck
   '';
 
   pythonImportsCheck = [ "imageio_ffmpeg" ];
 
   meta = with lib; {
+    changelog = "https://github.com/imageio/imageio-ffmpeg/releases/tag/v${version}";
     description = "FFMPEG wrapper for Python";
     homepage = "https://github.com/imageio/imageio-ffmpeg";
     license = licenses.bsd2;
     maintainers = [ maintainers.pmiddend ];
   };
-
 }
diff --git a/pkgs/development/python-modules/imageio-ffmpeg/ffmpeg-path.patch b/pkgs/development/python-modules/imageio-ffmpeg/ffmpeg-path.patch
index 33e2f9695d80e..aef4d1f2364fc 100644
--- a/pkgs/development/python-modules/imageio-ffmpeg/ffmpeg-path.patch
+++ b/pkgs/development/python-modules/imageio-ffmpeg/ffmpeg-path.patch
@@ -1,16 +1,13 @@
-diff --git a/imageio_ffmpeg/_utils.py b/imageio_ffmpeg/_utils.py
-index 6387834..e5e312d 100644
 --- a/imageio_ffmpeg/_utils.py
 +++ b/imageio_ffmpeg/_utils.py
-@@ -38,29 +38,7 @@ def get_ffmpeg_exe():
+@@ -38,28 +38,7 @@ def get_ffmpeg_exe():
  
  @lru_cache()
  def _get_ffmpeg_exe():
 -    plat = get_platform()
 -
 -    # 2. Try from here
--    bin_dir = resource_filename("imageio_ffmpeg", "binaries")
--    exe = os.path.join(bin_dir, FNAME_PER_PLATFORM.get(plat, ""))
+-    exe = os.path.join(_get_bin_dir(), FNAME_PER_PLATFORM.get(plat, ""))
 -    if exe and os.path.isfile(exe) and _is_valid_exe(exe):
 -        return exe
 -
@@ -32,4 +29,4 @@ index 6387834..e5e312d 100644
 +    return "@ffmpeg@"
  
  
- def _popen_kwargs(prevent_sigint=False):
+ def _get_bin_dir():
diff --git a/pkgs/development/python-modules/imageio/default.nix b/pkgs/development/python-modules/imageio/default.nix
index a5a71c38bc972..47018744c6b45 100644
--- a/pkgs/development/python-modules/imageio/default.nix
+++ b/pkgs/development/python-modules/imageio/default.nix
@@ -1,37 +1,38 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, isPyPy
-, substituteAll
-
-# build-system
-, setuptools
-
-# native dependencies
-, libGL
-
-# dependencies
-, numpy
-, pillow
-
-# optional-dependencies
-, astropy
-, av
-, imageio-ffmpeg
-, pillow-heif
-, psutil
-, tifffile
-
-# tests
-, pytestCheckHook
-, fsspec
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  isPyPy,
+  substituteAll,
+
+  # build-system
+  setuptools,
+
+  # native dependencies
+  libGL,
+
+  # dependencies
+  numpy,
+  pillow,
+
+  # optional-dependencies
+  astropy,
+  av,
+  imageio-ffmpeg,
+  pillow-heif,
+  psutil,
+  tifffile,
+
+  # tests
+  pytestCheckHook,
+  fsspec,
 }:
 
 buildPythonPackage rec {
   pname = "imageio";
-  version = "2.34.1";
+  version = "2.35.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -40,65 +41,51 @@ buildPythonPackage rec {
     owner = "imageio";
     repo = "imageio";
     rev = "refs/tags/v${version}";
-    hash = "sha256-/VZUifiz8iImq+JLvckFDr7YMIqu0Xro2t3GFj0obg0=";
+    hash = "sha256-WeoZE2TPBAhzBBcZNQqoiqvribMCLSZWk/XpdMydvCQ=";
   };
 
-  patches = lib.optionals (!stdenv.isDarwin) [
+  patches = lib.optionals (!stdenv.hostPlatform.isDarwin) [
     (substituteAll {
       src = ./libgl-path.patch;
       libgl = "${libGL.out}/lib/libGL${stdenv.hostPlatform.extensions.sharedLibrary}";
     })
   ];
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     numpy
     pillow
   ];
 
-  passthru.optional-dependencies = {
-    bsdf = [];
-    dicom = [];
-    feisem = [];
+  optional-dependencies = {
+    bsdf = [ ];
+    dicom = [ ];
+    feisem = [ ];
     ffmpeg = [
       imageio-ffmpeg
       psutil
     ];
-    fits = lib.optionals (!isPyPy) [
-      astropy
-    ];
-    freeimage = [];
-    lytro = [];
-    numpy = [];
-    pillow = [];
-    simpleitk = [];
-    spe = [];
-    swf = [];
-    tifffile = [
-      tifffile
-    ];
-    pyav = [
-      av
-    ];
-    heif = [
-      pillow-heif
-    ];
+    fits = lib.optionals (!isPyPy) [ astropy ];
+    freeimage = [ ];
+    lytro = [ ];
+    numpy = [ ];
+    pillow = [ ];
+    simpleitk = [ ];
+    spe = [ ];
+    swf = [ ];
+    tifffile = [ tifffile ];
+    pyav = [ av ];
+    heif = [ pillow-heif ];
   };
 
   nativeCheckInputs = [
     fsspec
     psutil
     pytestCheckHook
-  ]
-  ++ fsspec.optional-dependencies.github
-  ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+  ] ++ fsspec.optional-dependencies.github ++ lib.flatten (builtins.attrValues optional-dependencies);
 
-  pytestFlagsArray = [
-    "-m 'not needs_internet'"
-  ];
+  pytestFlagsArray = [ "-m 'not needs_internet'" ];
 
   preCheck = ''
     export IMAGEIO_USERDIR="$TMP"
@@ -113,7 +100,7 @@ buildPythonPackage rec {
     "tests/test_swf.py"
   ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
     # Segmentation fault
     "test_bayer_write"
     # RuntimeError: No valid H.264 encoder was found with the ffmpeg installation
@@ -123,11 +110,11 @@ buildPythonPackage rec {
     "test_reverse_read"
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Library for reading and writing a wide range of image, video, scientific, and volumetric data formats";
     homepage = "https://imageio.readthedocs.io";
     changelog = "https://github.com/imageio/imageio/blob/v${version}/CHANGELOG.md";
-    license = licenses.bsd2;
-    maintainers = with maintainers; [ Luflosi ];
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ Luflosi ];
   };
 }
diff --git a/pkgs/development/python-modules/imagesize/default.nix b/pkgs/development/python-modules/imagesize/default.nix
index ab41410b7ad84..4420190e98de3 100644
--- a/pkgs/development/python-modules/imagesize/default.nix
+++ b/pkgs/development/python-modules/imagesize/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -18,5 +19,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/shibukawa/imagesize_py";
     license = with licenses; [ mit ];
   };
-
 }
diff --git a/pkgs/development/python-modules/imantics/default.nix b/pkgs/development/python-modules/imantics/default.nix
index d6815f2a26ae3..2204450bed74e 100644
--- a/pkgs/development/python-modules/imantics/default.nix
+++ b/pkgs/development/python-modules/imantics/default.nix
@@ -1,17 +1,19 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, numpy
-, opencv4
-, lxml
-, xmljson
-, pytestCheckHook
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  setuptools,
+  numpy,
+  opencv4,
+  lxml,
+  xmljson,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "imantics";
   version = "0.1.12";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "jsbroks";
@@ -20,18 +22,17 @@ buildPythonPackage rec {
     sha256 = "1zv2gj8cbakhh2fyr2611cbqhfk37a56x973ny9n43y70n26pzm8";
   };
 
-  propagatedBuildInputs = [
+  pythonRemoveDeps = [ "opencv-python" ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     numpy
     opencv4
     lxml
     xmljson
   ];
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "'opencv-python>=3'," ""
-  '';
-
   nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "imantics" ];
diff --git a/pkgs/development/python-modules/imap-tools/default.nix b/pkgs/development/python-modules/imap-tools/default.nix
index 6f9182bc1220c..d914f72b94bcb 100644
--- a/pkgs/development/python-modules/imap-tools/default.nix
+++ b/pkgs/development/python-modules/imap-tools/default.nix
@@ -1,28 +1,30 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "imap-tools";
-  version = "1.5.0";
+  version = "1.7.2";
 
   disabled = pythonOlder "3.5";
 
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "ikvk";
     repo = "imap_tools";
     rev = "refs/tags/v${version}";
-    hash = "sha256-kY6Y8Uu1HwSkcmlKL5+zPh4n+4mofX2aoPVXAZvInlI=";
+    hash = "sha256-KW6YyArM3rHOkhXJCRWWy9OSwMwRFr16njeN+EcSGz0=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # tests require a network connection
diff --git a/pkgs/development/python-modules/imapclient/default.nix b/pkgs/development/python-modules/imapclient/default.nix
index 6301970392ac9..5a231c13a3ee0 100644
--- a/pkgs/development/python-modules/imapclient/default.nix
+++ b/pkgs/development/python-modules/imapclient/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, six
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  six,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -34,6 +35,9 @@ buildPythonPackage rec {
     homepage = "https://imapclient.readthedocs.io";
     description = "Easy-to-use, Pythonic and complete IMAP client library";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ almac dotlambda ];
+    maintainers = with maintainers; [
+      almac
+      dotlambda
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/imaplib2/default.nix b/pkgs/development/python-modules/imaplib2/default.nix
index 7c4c215bfabbc..5df25d7ca5ee0 100644
--- a/pkgs/development/python-modules/imaplib2/default.nix
+++ b/pkgs/development/python-modules/imaplib2/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,14 +20,12 @@ buildPythonPackage rec {
     sha256 = "14asi3xnvf4bb394k5j8c3by6svvmrr75pawzy6kaax5jx0h793m";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "imaplib2" ];
 
   meta = with lib; {
-    description = "A threaded Python IMAP4 client";
+    description = "Threaded Python IMAP4 client";
     homepage = "https://github.com/jazzband/imaplib2";
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/pkgs/development/python-modules/imbalanced-learn/default.nix b/pkgs/development/python-modules/imbalanced-learn/default.nix
index 412b0424a2185..e3bdcc2a059e9 100644
--- a/pkgs/development/python-modules/imbalanced-learn/default.nix
+++ b/pkgs/development/python-modules/imbalanced-learn/default.nix
@@ -1,35 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, joblib
-, keras
-, numpy
-, pandas
-, scikit-learn
-, scipy
-, tensorflow
-, threadpoolctl
-, pytest-xdist
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  joblib,
+  keras,
+  numpy,
+  pandas,
+  scikit-learn,
+  scipy,
+  tensorflow,
+  threadpoolctl,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "imbalanced-learn";
-  version = "0.12.2";
+  version = "0.12.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-qAxWztywcSTyZr5i06XSq1tXeZCac0P98bmTR5Zi9sE=";
+    hash = "sha256-WwB5agFBnpECvUJeJ8MZ1Y0fbPLfp1HgLtf07fZ8PBs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     joblib
@@ -47,11 +45,12 @@ buildPythonPackage rec {
     ];
   };
 
-  pythonImportsCheck = [
-    "imblearn"
-  ];
+  pythonImportsCheck = [ "imblearn" ];
 
-  nativeCheckInputs = [ pytestCheckHook pandas ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pandas
+  ];
 
   preCheck = ''
     export HOME=$TMPDIR
diff --git a/pkgs/development/python-modules/img2pdf/default.nix b/pkgs/development/python-modules/img2pdf/default.nix
index 2dc389f70ecc1..62efb51697af6 100644
--- a/pkgs/development/python-modules/img2pdf/default.nix
+++ b/pkgs/development/python-modules/img2pdf/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, buildPythonPackage
-, isPy27
-, fetchFromGitea
-, substituteAll
-, fetchpatch
-, colord
-, setuptools
-, pikepdf
-, pillow
-, stdenv
-, exiftool
-, ghostscript
-, imagemagick
-, mupdf-headless
-, netpbm
-, numpy
-, poppler_utils
-, pytestCheckHook
-, runCommand
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  isPy27,
+  fetchFromGitea,
+  substituteAll,
+  fetchpatch,
+  colord,
+  setuptools,
+  pikepdf,
+  pillow,
+  stdenv,
+  exiftool,
+  ghostscript,
+  imagemagick,
+  mupdf-headless,
+  netpbm,
+  numpy,
+  poppler_utils,
+  pytestCheckHook,
+  runCommand,
+  scipy,
 }:
 
 buildPythonPackage rec {
@@ -39,25 +40,23 @@ buildPythonPackage rec {
   patches = [
     (substituteAll {
       src = ./default-icc-profile.patch;
-      srgbProfile = if stdenv.isDarwin then
-        "/System/Library/ColorSync/Profiles/sRGB Profile.icc"
-      else
-        # break runtime dependency chain all of colord dependencies
-        runCommand "sRGC.icc" { } ''
-          cp ${colord}/share/color/icc/colord/sRGB.icc $out
-        '';
+      srgbProfile =
+        if stdenv.hostPlatform.isDarwin then
+          "/System/Library/ColorSync/Profiles/sRGB Profile.icc"
+        else
+          # break runtime dependency chain all of colord dependencies
+          runCommand "sRGC.icc" { } ''
+            cp ${colord}/share/color/icc/colord/sRGB.icc $out
+          '';
     })
     (fetchpatch {
       # https://gitlab.mister-muffin.de/josch/img2pdf/issues/178
       url = "https://salsa.debian.org/debian/img2pdf/-/raw/4a7dbda0f473f7c5ffcaaf68ea4ad3f435e0920d/debian/patches/fix_tests.patch";
       hash = "sha256-A1zK6yINhS+dvyckZjqoSO1XJRTaf4OXFdq5ufUrBs8=";
     })
-
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     pikepdf
@@ -66,7 +65,7 @@ buildPythonPackage rec {
 
   # FIXME: Only add "sRGB Profile.icc" to __impureHostDeps once
   # https://github.com/NixOS/nix/issues/9301 is fixed.
-  __impureHostDeps = lib.optionals stdenv.isDarwin [
+  __impureHostDeps = lib.optionals stdenv.hostPlatform.isDarwin [
     "/System/Library/ColorSync/Profiles"
   ];
 
@@ -99,6 +98,9 @@ buildPythonPackage rec {
     homepage = "https://gitlab.mister-muffin.de/josch/img2pdf";
     license = licenses.lgpl3Plus;
     mainProgram = "img2pdf";
-    maintainers = with maintainers; [ veprbl dotlambda ];
+    maintainers = with maintainers; [
+      veprbl
+      dotlambda
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/imgcat/default.nix b/pkgs/development/python-modules/imgcat/default.nix
index 1d0c91e177c09..e17c249670e2b 100644
--- a/pkgs/development/python-modules/imgcat/default.nix
+++ b/pkgs/development/python-modules/imgcat/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, matplotlib
-, numpy
-, pillow
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, tensorflow
-, torch
-, torchvision
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  matplotlib,
+  numpy,
+  pillow,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  tensorflow,
+  torch,
+  torchvision,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
       --replace-fail "'pytest-runner<5.0'" ""
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     matplotlib
@@ -45,9 +44,7 @@ buildPythonPackage rec {
     torchvision
   ];
 
-  pythonImportsCheck = [
-    "imgcat"
-  ];
+  pythonImportsCheck = [ "imgcat" ];
 
   meta = with lib; {
     description = "Imgcat in Python";
diff --git a/pkgs/development/python-modules/imgdiff/default.nix b/pkgs/development/python-modules/imgdiff/default.nix
index 6cb92f3293349..6a168c965d675 100644
--- a/pkgs/development/python-modules/imgdiff/default.nix
+++ b/pkgs/development/python-modules/imgdiff/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pillow
-, mock
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pillow,
+  mock,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-Y5nUnjihRpVVehhP1LUgfuJN5nCxEJu6P1w99Igpxjs=";
   };
 
-  propagatedBuildInputs = [
-    pillow
-  ];
+  propagatedBuildInputs = [ pillow ];
 
   pythonImportsCheck = [ "imgdiff" ];
 
diff --git a/pkgs/development/python-modules/imgsize/default.nix b/pkgs/development/python-modules/imgsize/default.nix
index fe08f4f7288fe..c368a67085d0c 100644
--- a/pkgs/development/python-modules/imgsize/default.nix
+++ b/pkgs/development/python-modules/imgsize/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/imgtool/default.nix b/pkgs/development/python-modules/imgtool/default.nix
index dc8a9ec630891..ba083666336f5 100644
--- a/pkgs/development/python-modules/imgtool/default.nix
+++ b/pkgs/development/python-modules/imgtool/default.nix
@@ -1,30 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, cbor2
-, click
-, cryptography
-, intelhex
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  cbor2,
+  click,
+  cryptography,
+  intelhex,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
   pname = "imgtool";
-  version = "2.0.0";
+  version = "2.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-elQSVeae7B8Sqjjc4fHU/iDYISZ3xoqbbsY0ypGgZhI=";
+    hash = "sha256-T3+831PETqqmImUEUQzLUvfvAMmXUDz5STSzMMlge2A=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     cbor2
@@ -34,9 +33,7 @@ buildPythonPackage rec {
     pyyaml
   ];
 
-  pythonImportsCheck = [
-    "imgtool"
-  ];
+  pythonImportsCheck = [ "imgtool" ];
 
   meta = with lib; {
     description = "MCUboot's image signing and key management";
diff --git a/pkgs/development/python-modules/imgw-pib/default.nix b/pkgs/development/python-modules/imgw-pib/default.nix
new file mode 100644
index 0000000000000..f7ca3a58c29a2
--- /dev/null
+++ b/pkgs/development/python-modules/imgw-pib/default.nix
@@ -0,0 +1,47 @@
+{
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  lib,
+  pytest-asyncio,
+  pytestCheckHook,
+  setuptools,
+  syrupy,
+}:
+
+buildPythonPackage rec {
+  pname = "imgw-pib";
+  version = "1.0.5";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "bieniu";
+    repo = "imgw-pib";
+    rev = "refs/tags/${version}";
+    hash = "sha256-2t1dzumDVUr+Lma1lnri8l2x6fUx1LKEQne7Qzh7pwc=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ aiohttp ];
+
+  pythonImportsCheck = [ "imgw_pib" ];
+
+  nativeCheckInputs = [
+    aioresponses
+    freezegun
+    pytest-asyncio
+    pytestCheckHook
+    syrupy
+  ];
+
+  meta = {
+    changelog = "https://github.com/bieniu/imgw-pib/releases/tag/${version}";
+    description = "Python async wrapper for IMGW-PIB API";
+    homepage = "https://github.com/bieniu/imgw-pib";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/imia/default.nix b/pkgs/development/python-modules/imia/default.nix
index b5b855c92d742..1caa1f607f422 100644
--- a/pkgs/development/python-modules/imia/default.nix
+++ b/pkgs/development/python-modules/imia/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, poetry-core
-, starlette
-, fastapi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  starlette,
+  fastapi,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-4CzevO7xgo8Hb1JHe/eGEtq/KCrJM0hV/7SRV2wmux8=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     starlette
@@ -30,7 +29,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "imia" ];
 
   meta = with lib; {
-    description = "An authentication library for Starlette and FastAPI";
+    description = "Authentication library for Starlette and FastAPI";
     changelog = "https://github.com/alex-oleshkevich/imia/releases/tag/v${version}";
     homepage = "https://github.com/alex-oleshkevich/imia";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/iminuit/default.nix b/pkgs/development/python-modules/iminuit/default.nix
index 113d19928d10c..17fa94212c770 100644
--- a/pkgs/development/python-modules/iminuit/default.nix
+++ b/pkgs/development/python-modules/iminuit/default.nix
@@ -1,33 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-
-# build-system
-, cmake
-, scikit-build-core
-, pybind11
-, pathspec
-, ninja
-, pyproject-metadata
-
-# dependencies
-, numpy
-
-# tests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+
+  # build-system
+  cmake,
+  scikit-build-core,
+  pybind11,
+  pathspec,
+  ninja,
+  pyproject-metadata,
+
+  # dependencies
+  numpy,
+
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "iminuit";
-  version = "2.25.2";
+  version = "2.30.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-O/ihuWhlpgzt8pE19P6uCfp8ZiN9KfaN7WTpeoI6mz4=";
+    hash = "sha256-jeC4K7azOBFls46VdhoCcBiaAIPNuS4VTfFlfsZRmkA=";
   };
 
   nativeBuildInputs = [
@@ -37,22 +38,21 @@ buildPythonPackage rec {
     pathspec
     ninja
     pyproject-metadata
-  ] ++ scikit-build-core.optional-dependencies.pyproject;
-
-  propagatedBuildInputs = [
-    numpy
   ];
 
+  propagatedBuildInputs = [ numpy ];
+
   dontUseCmakeConfigure = true;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     homepage = "https://github.com/scikit-hep/iminuit";
     description = "Python interface for the Minuit2 C++ library";
-    license = with licenses; [ mit lgpl2Only ];
+    license = with licenses; [
+      mit
+      lgpl2Only
+    ];
     maintainers = with maintainers; [ veprbl ];
   };
 }
diff --git a/pkgs/development/python-modules/immutabledict/default.nix b/pkgs/development/python-modules/immutabledict/default.nix
index 5c1530263d224..47e062ab35d67 100644
--- a/pkgs/development/python-modules/immutabledict/default.nix
+++ b/pkgs/development/python-modules/immutabledict/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,20 +21,14 @@ buildPythonPackage rec {
     hash = "sha256-NpNS8HAacgXm3rFtyd5uFgSURNbDf+YVS1aFx51kwEA=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  pythonImportsCheck = [
-    "immutabledict"
-  ];
+  pythonImportsCheck = [ "immutabledict" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A fork of frozendict, an immutable wrapper around dictionaries";
+    description = "Fork of frozendict, an immutable wrapper around dictionaries";
     homepage = "https://github.com/corenting/immutabledict";
     changelog = "https://github.com/corenting/immutabledict/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/immutables/default.nix b/pkgs/development/python-modules/immutables/default.nix
index c01fa75e5447b..8ea8d2a890201 100644
--- a/pkgs/development/python-modules/immutables/default.nix
+++ b/pkgs/development/python-modules/immutables/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     rm tests/conftest.py
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Version mismatch
@@ -37,12 +36,10 @@ buildPythonPackage rec {
     "tests/test_mypy.py"
   ];
 
-  pythonImportsCheck = [
-    "immutables"
-  ];
+  pythonImportsCheck = [ "immutables" ];
 
   meta = with lib; {
-    description = "An immutable mapping type";
+    description = "Immutable mapping type";
     homepage = "https://github.com/MagicStack/immutables";
     changelog = "https://github.com/MagicStack/immutables/releases/tag/v${version}";
     license = with licenses; [ asl20 ];
diff --git a/pkgs/development/python-modules/impacket/default.nix b/pkgs/development/python-modules/impacket/default.nix
index f216aad5e431b..b9ca971b1e4c8 100644
--- a/pkgs/development/python-modules/impacket/default.nix
+++ b/pkgs/development/python-modules/impacket/default.nix
@@ -1,35 +1,37 @@
-{ lib
-, buildPythonPackage
-, charset-normalizer
-, dsinternals
-, fetchPypi
-, flask
-, ldap3
-, ldapdomaindump
-, pyasn1
-, pycryptodomex
-, pyopenssl
-, pythonOlder
-, setuptools
-, pytestCheckHook
-, six
+{
+  lib,
+  buildPythonPackage,
+  charset-normalizer,
+  dsinternals,
+  fetchPypi,
+  flask,
+  ldap3,
+  ldapdomaindump,
+  pyasn1,
+  pyasn1-modules,
+  pycryptodomex,
+  pyopenssl,
+  pythonOlder,
+  setuptools,
+  pytestCheckHook,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "impacket";
-  version = "0.11.0";
+  version = "0.12.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-7kA5tNKu3o9fZEeLxZ+qyGA2eWviTeqNwY8An7CQXko=";
+    hash = "sha256-iVh9G4NqUiDXSEjJNHV5YrOCiG3KixtKDETWk/JgBkM=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  pythonRelaxDeps = [ "pyopenssl" ];
+
+  build-system = [ setuptools ];
 
   dependencies = [
     charset-normalizer
@@ -38,19 +40,16 @@ buildPythonPackage rec {
     ldap3
     ldapdomaindump
     pyasn1
+    pyasn1-modules
     pycryptodomex
     pyopenssl
     setuptools
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "impacket"
-  ];
+  pythonImportsCheck = [ "impacket" ];
 
   disabledTestPaths = [
     # Skip all RPC related tests
@@ -61,7 +60,8 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Network protocols Constructors and Dissectors";
     homepage = "https://github.com/SecureAuthCorp/impacket";
-    changelog = "https://github.com/fortra/impacket/releases/tag/impacket_"
+    changelog =
+      "https://github.com/fortra/impacket/releases/tag/impacket_"
       + replaceStrings [ "." ] [ "_" ] version;
     # Modified Apache Software License, Version 1.1
     license = licenses.free;
diff --git a/pkgs/development/python-modules/import-expression/default.nix b/pkgs/development/python-modules/import-expression/default.nix
index 42182cadc0811..369495b96e29a 100644
--- a/pkgs/development/python-modules/import-expression/default.nix
+++ b/pkgs/development/python-modules/import-expression/default.nix
@@ -1,32 +1,24 @@
-{ lib,
+{
+  lib,
   buildPythonPackage,
-  fetchFromGitHub,
-  fetchpatch,
+  fetchPypi,
   pytestCheckHook,
   astunparse,
-  setuptools
+  setuptools,
 }:
 buildPythonPackage rec {
   pname = "import-expression";
-  version = "1.1.4";
+  version = "2.0.0";
   pyproject = true;
 
-  src = fetchFromGitHub {
-    owner = "ioistired";
-    repo = "import-expression-parser";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-mll2NePB7fthzltLOk6D9BgaDpH6GaW4psqcGun/0qM=";
+  src = fetchPypi {
+    inherit version;
+    pname = "import_expression";
+    hash = "sha256-Biw7dIOPKbDcqYJSCyeqC/seREcVihSZuaKNFfgjTew=";
   };
 
-  patches = [
-    (fetchpatch {
-      url = "https://github.com/ioistired/import-expression-parser/commit/3daf968c3163b64685aa529740e132f0df5ab262.patch";
-      hash = "sha256-2Ubv3onor2D26udZbDDMb3iNLopEIRnIcO/X6WUVmJU=";
-    })
-  ];
-
-  nativeBuildInputs = [ setuptools ];
-  propagatedBuildInputs = [ astunparse ];
+  build-system = [ setuptools ];
+  dependencies = [ astunparse ];
   nativeCheckInputs = [ pytestCheckHook ];
   pytestFlagsArray = [ "tests.py" ];
 
@@ -38,8 +30,11 @@ buildPythonPackage rec {
   meta = {
     description = "Transpiles a superset of python to allow easy inline imports";
     homepage = "https://github.com/ioistired/import-expression-parser";
-    license = with lib.licenses; [ mit psfl ];
+    license = with lib.licenses; [
+      mit
+      psfl
+    ];
     mainProgram = "import-expression";
-    maintainers = with lib.maintainers; [ lychee ];
+    maintainers = with lib.maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/importlab/default.nix b/pkgs/development/python-modules/importlab/default.nix
index 65b2df8bef6a5..2341129dfec50 100644
--- a/pkgs/development/python-modules/importlab/default.nix
+++ b/pkgs/development/python-modules/importlab/default.nix
@@ -1,9 +1,9 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, networkx
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  networkx,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -28,7 +28,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "importlab" ];
 
   meta = with lib; {
-    description = "A library that automatically infers dependencies for Python files";
+    description = "Library that automatically infers dependencies for Python files";
     mainProgram = "importlab";
     homepage = "https://github.com/google/importlab";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/importlib-metadata/default.nix b/pkgs/development/python-modules/importlib-metadata/default.nix
index 995d625f56048..c5de999be223a 100644
--- a/pkgs/development/python-modules/importlib-metadata/default.nix
+++ b/pkgs/development/python-modules/importlib-metadata/default.nix
@@ -1,17 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, setuptools-scm
-, typing-extensions
-, toml
-, zipp
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  typing-extensions,
+  toml,
+  zipp,
+
+  # Reverse dependency
+  sage,
 }:
 
 buildPythonPackage rec {
   pname = "importlib-metadata";
-  version = "7.0.2";
+  version = "7.1.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -19,7 +23,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "importlib_metadata";
     inherit version;
-    hash = "sha256-GY9WjzIwh4yxtE+9eXX4eQbCIzbbouSn8FJ4woH715I=";
+    hash = "sha256-t4k4uSbujV8CD8R3LUhwRYBaVd260uzyHG1gk43H/NI=";
   };
 
   nativeBuildInputs = [
@@ -30,21 +34,24 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     toml
     zipp
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
   # Cyclic dependencies due to pyflakefs
   doCheck = false;
 
-  pythonImportsCheck = [
-    "importlib_metadata"
-  ];
+  pythonImportsCheck = [ "importlib_metadata" ];
+
+  passthru.tests = {
+    inherit sage;
+  };
 
   meta = with lib; {
     description = "Read metadata from Python packages";
     homepage = "https://importlib-metadata.readthedocs.io/";
     license = licenses.asl20;
-    maintainers = with maintainers; [ fab AndersonTorres ];
+    maintainers = with maintainers; [
+      fab
+      AndersonTorres
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/importlib-resources/default.nix b/pkgs/development/python-modules/importlib-resources/default.nix
index 79012fa9677a1..eea1111ff05e9 100644
--- a/pkgs/development/python-modules/importlib-resources/default.nix
+++ b/pkgs/development/python-modules/importlib-resources/default.nix
@@ -1,23 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-
-# build-system
-, setuptools
-, setuptools-scm
-
-# dependencies
-, importlib-metadata
-
-# tests
-, jaraco-collections
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+
+  # dependencies
+  importlib-metadata,
+
+  # Reverse dependency
+  sage,
+
+  # tests
+  jaraco-collections,
+  jaraco-test,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "importlib-resources";
-  version = "6.1.3";
+  version = "6.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -25,7 +30,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "importlib_resources";
     inherit version;
-    hash = "sha256-VvtFJRl7eFRKM1TqJ3k5UquT+TW7S/dGuEa7EBUCDys=";
+    hash = "sha256-zbK0U7gEbKTjeY6x2E88zhRGoOjnte9O+2APGfw5gUU=";
   };
 
   build-system = [
@@ -33,18 +38,19 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  dependencies = [
-    importlib-metadata
-  ];
+  dependencies = [ importlib-metadata ];
 
   nativeCheckInputs = [
     pytestCheckHook
     jaraco-collections
+    jaraco-test
   ];
 
-  pythonImportsCheck = [
-    "importlib_resources"
-  ];
+  pythonImportsCheck = [ "importlib_resources" ];
+
+  passthru.tests = {
+    inherit sage;
+  };
 
   meta = with lib; {
     description = "Read resources from Python packages";
diff --git a/pkgs/development/python-modules/importmagic/default.nix b/pkgs/development/python-modules/importmagic/default.nix
index a94b104094199..a2d32b55808da 100644
--- a/pkgs/development/python-modules/importmagic/default.nix
+++ b/pkgs/development/python-modules/importmagic/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -27,5 +28,4 @@ buildPythonPackage rec {
     license = licenses.bsd0;
     maintainers = with maintainers; [ onny ];
   };
-
 }
diff --git a/pkgs/development/python-modules/imread/default.nix b/pkgs/development/python-modules/imread/default.nix
index 8d2823356e32a..632a3aefb8d90 100644
--- a/pkgs/development/python-modules/imread/default.nix
+++ b/pkgs/development/python-modules/imread/default.nix
@@ -1,31 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pkg-config
-, setuptools
-, libjpeg
-, libpng
-, libtiff
-, libwebp
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pkg-config,
+  setuptools,
+  libjpeg,
+  libpng,
+  libtiff,
+  libwebp,
+  numpy,
 }:
 
 buildPythonPackage rec {
   pname = "imread";
-  version = "0.7.5";
+  version = "0.7.6";
   pyproject = true;
 
   src = fetchPypi {
-    inherit version;
-    pname = "imread";
-    hash = "sha256-GiWpA128GuLlbBW1CQQHHVVeoZfu9Yyh2RFzSdtHDbc=";
+    inherit pname version;
+    hash = "sha256-ULPXCJyGJQTCKyVu9R/kWFGzRhbbFMDr/FU2AByZYBU=";
   };
 
-  nativeBuildInputs = [
-    pkg-config
-    setuptools
-  ];
+  build-system = [ setuptools ];
+
+  nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [
     libjpeg
@@ -34,22 +33,19 @@ buildPythonPackage rec {
     libwebp
   ];
 
-  propagatedBuildInputs = [ numpy ];
+  dependencies = [ numpy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pytestFlagsArray = [
     # verbose build outputs needed to debug hard-to-reproduce hydra failures
     "-v"
-    "--pyargs" "imread"
-  ];
-
-  pythonImportsCheck = [
+    "--pyargs"
     "imread"
   ];
 
+  pythonImportsCheck = [ "imread" ];
+
   preCheck = ''
     cd $TMPDIR
     export HOME=$TMPDIR
@@ -58,10 +54,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python package to load images as numpy arrays";
-    homepage = "https://imread.readthedocs.io/en/latest/";
+    homepage = "https://imread.readthedocs.io/";
+    changelog = "https://github.com/luispedro/imread/blob/v${version}/ChangeLog";
     maintainers = with maintainers; [ luispedro ];
     license = licenses.mit;
     platforms = platforms.unix;
   };
-
 }
diff --git a/pkgs/development/python-modules/imutils/default.nix b/pkgs/development/python-modules/imutils/default.nix
index 655fb82c8b791..03a1dd03a4262 100644
--- a/pkgs/development/python-modules/imutils/default.nix
+++ b/pkgs/development/python-modules/imutils/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, opencv4
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  opencv4,
 }:
 
 buildPythonPackage rec {
@@ -29,7 +30,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/jrosebr1/imutils";
-    description = "A series of convenience functions to make basic image processing functions";
+    description = "Series of convenience functions to make basic image processing functions";
     mainProgram = "range-detector";
     license = licenses.mit;
     maintainers = [ ];
diff --git a/pkgs/development/python-modules/in-n-out/default.nix b/pkgs/development/python-modules/in-n-out/default.nix
index f0fdb5d45fb81..3a5e3287b0225 100644
--- a/pkgs/development/python-modules/in-n-out/default.nix
+++ b/pkgs/development/python-modules/in-n-out/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchPypi
-, future
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, hatchling
-, hatch-vcs
-, toolz
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchPypi,
+  future,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  hatchling,
+  hatch-vcs,
+  toolz,
 }:
 
 buildPythonPackage rec {
@@ -30,18 +31,14 @@ buildPythonPackage rec {
     hatch-vcs
   ];
 
-  propagatedBuildInputs = [
-    future
-  ];
+  propagatedBuildInputs = [ future ];
 
   nativeCheckInputs = [
     pytestCheckHook
     toolz
   ];
 
-  pythonImportsCheck = [
-    "in_n_out"
-  ];
+  pythonImportsCheck = [ "in_n_out" ];
 
   disabledTestPaths = lib.optionals (pythonAtLeast "3.11") [
     # Fatal Python error
diff --git a/pkgs/development/python-modules/in-place/default.nix b/pkgs/development/python-modules/in-place/default.nix
index 324cd61537fe7..69bdc2a16c7f2 100644
--- a/pkgs/development/python-modules/in-place/default.nix
+++ b/pkgs/development/python-modules/in-place/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     substituteInPlace tox.ini --replace "--cov=in_place --no-cov-on-fail" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
diff --git a/pkgs/development/python-modules/incomfort-client/default.nix b/pkgs/development/python-modules/incomfort-client/default.nix
index 496c984889103..7af06bcc03682 100644
--- a/pkgs/development/python-modules/incomfort-client/default.nix
+++ b/pkgs/development/python-modules/incomfort-client/default.nix
@@ -1,47 +1,45 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "incomfort-client";
-  version = "0.5.0";
-  format = "setuptools";
+  version = "0.6.3-1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "zxdavb";
-    repo = pname;
-    rev = "refs/tags/${version}";
-    hash = "sha256-kdPue3IfF85O+0dgvX+dN6S4WoQmjxdCfwfv83SnO8E=";
+    repo = "incomfort-client";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-I6MAFvODkw2QadzXJacFl/TwA6exfBB1PSDslmT7Ysw=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  dependencies = [ aiohttp ];
 
-  checkInputs = [
+  nativeCheckInputs = [
     aioresponses
     pytest-asyncio
+    pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "incomfortclient"
-  ];
+  pythonImportsCheck = [ "incomfortclient" ];
 
   meta = with lib; {
     description = "Python module to poll Intergas boilers via a Lan2RF gateway";
     homepage = "https://github.com/zxdavb/incomfort-client";
+    changelog = "https://github.com/jbouwh/incomfort-client/releases/tag/v${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/incremental/default.nix b/pkgs/development/python-modules/incremental/default.nix
index 3b10dff45ca06..e64c5275d5d62 100644
--- a/pkgs/development/python-modules/incremental/default.nix
+++ b/pkgs/development/python-modules/incremental/default.nix
@@ -1,45 +1,61 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, click
-, twisted
+{
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  lib,
+  pythonOlder,
+  setuptools,
+  tomli,
+  twisted,
 }:
 
-let incremental = buildPythonPackage rec {
-  pname = "incremental";
-  version = "22.10.0";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-kS/uteD34BiOb0IkHS9FAALhG7wJN8ZYZQRYVMJMC9A=";
-  };
-
-  propagatedBuildInputs = [
-    click
-  ];
-
-  # escape infinite recursion with twisted
-  doCheck = false;
-
-  nativeCheckInputs = [
-    twisted
-  ];
-
-  checkPhase = ''
-    trial incremental
-  '';
-
-  passthru.tests = {
-    check = incremental.overridePythonAttrs (_: { doCheck = true; });
-  };
-
-  pythonImportsCheck = [ "incremental" ];
-
-  meta = with lib; {
-    homepage = "https://github.com/twisted/incremental";
-    description = "Incremental is a small library that versions your Python projects";
-    license = licenses.mit;
-    maintainers = with maintainers; [ ];
+let
+  incremental = buildPythonPackage rec {
+    pname = "incremental";
+    version = "24.7.2";
+    pyproject = true;
+
+    src = fetchFromGitHub {
+      owner = "twisted";
+      repo = "incremental";
+      rev = "refs/tags/incremental-${version}";
+      hash = "sha256-5MlIKUaBUwLTet23Rjd2Opf5e54LcHuZDowcGon0lOE=";
+    };
+
+    # From upstream's pyproject.toml:
+    # "Keep this aligned with the project dependencies."
+    build-system = dependencies;
+
+    dependencies = [ setuptools ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
+
+    optional-dependencies = {
+      scripts = [ click ];
+    };
+
+    # escape infinite recursion with twisted
+    doCheck = false;
+
+    nativeCheckInputs = [ twisted ];
+
+    checkPhase = ''
+      trial incremental
+    '';
+
+    passthru.tests = {
+      check = incremental.overridePythonAttrs (_: {
+        doCheck = true;
+      });
+    };
+
+    pythonImportsCheck = [ "incremental" ];
+
+    meta = {
+      changelog = "https://github.com/twisted/incremental/blob/${src.rev}/NEWS.rst";
+      homepage = "https://github.com/twisted/incremental";
+      description = "Small library that versions your Python projects";
+      license = lib.licenses.mit;
+      maintainers = with lib.maintainers; [ dotlambda ];
+    };
   };
-}; in incremental
+in
+incremental
diff --git a/pkgs/development/python-modules/indexed-bzip2/default.nix b/pkgs/development/python-modules/indexed-bzip2/default.nix
index d15e075e5d57e..20205ebfc4a67 100644
--- a/pkgs/development/python-modules/indexed-bzip2/default.nix
+++ b/pkgs/development/python-modules/indexed-bzip2/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchPypi
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,7 +19,10 @@ buildPythonPackage rec {
     hash = "sha256-3HUiigZR91/nbOAMOuSHGcPtqkkEaj3VepyMhmKOHpI=";
   };
 
-  nativeBuildInputs = [ cython setuptools ];
+  nativeBuildInputs = [
+    cython
+    setuptools
+  ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/indexed-gzip/default.nix b/pkgs/development/python-modules/indexed-gzip/default.nix
index bfe9e894ce5fb..8bab1b6c5f89f 100644
--- a/pkgs/development/python-modules/indexed-gzip/default.nix
+++ b/pkgs/development/python-modules/indexed-gzip/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, cython
-, zlib
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  cython,
+  zlib,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,10 @@ buildPythonPackage rec {
     hash = "sha256-dryq1LLC+lVHj/i+m60ubGGItlX5/clCnwNGrexI92I=";
   };
 
-  nativeBuildInputs = [ cython setuptools ];
+  nativeBuildInputs = [
+    cython
+    setuptools
+  ];
 
   buildInputs = [ zlib ];
 
diff --git a/pkgs/development/python-modules/indexed-zstd/default.nix b/pkgs/development/python-modules/indexed-zstd/default.nix
index 88cb6f05930ae..a689a37fbbdad 100644
--- a/pkgs/development/python-modules/indexed-zstd/default.nix
+++ b/pkgs/development/python-modules/indexed-zstd/default.nix
@@ -1,25 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, cython
-, zstd
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  cython,
+  zstd,
 }:
 
 buildPythonPackage rec {
   pname = "indexed_zstd";
-  version = "1.6.0";
+  version = "1.6.1";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-icCerrv6ihBjSTS4Fsw7qhoA5ha8yegfMVRiIOhTvvY=";
+    hash = "sha256-i3Q3j5Rh/OqxdSFbZeHEiYZN2zS9gWBYk2pifwzKOos=";
   };
 
-  nativeBuildInputs = [ cython setuptools ];
+  nativeBuildInputs = [
+    cython
+    setuptools
+  ];
 
   buildInputs = [ zstd.dev ];
 
diff --git a/pkgs/development/python-modules/inequality/default.nix b/pkgs/development/python-modules/inequality/default.nix
new file mode 100644
index 0000000000000..3e01771193099
--- /dev/null
+++ b/pkgs/development/python-modules/inequality/default.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+
+  libpysal,
+  numpy,
+  scipy,
+  setuptools-scm,
+}:
+
+buildPythonPackage rec {
+  pname = "inequality";
+  version = "1.0.1";
+  pyproject = true;
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "pysal";
+    repo = "inequality";
+    rev = "v${version}";
+    hash = "sha256-dy1/KXnmIh5LnTxuyYfIvtt1p2CIpNQ970o5pTg6diQ=";
+  };
+
+  build-system = [ setuptools-scm ];
+
+  propagatedBuildInputs = [
+    libpysal
+    numpy
+    scipy
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "inequality" ];
+
+  meta = {
+    description = "Spatial inequality analysis";
+    homepage = "https://github.com/pysal/inequality";
+    license = lib.licenses.bsd3;
+    maintainers = lib.teams.geospatial.members;
+  };
+}
diff --git a/pkgs/development/python-modules/infinity/default.nix b/pkgs/development/python-modules/infinity/default.nix
index 8cf05e8111df8..a2f24331a697c 100644
--- a/pkgs/development/python-modules/infinity/default.nix
+++ b/pkgs/development/python-modules/infinity/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "All-in-one infinity value for Python. Can be compared to any object.";
+    description = "All-in-one infinity value for Python. Can be compared to any object";
     homepage = "https://github.com/kvesteri/infinity";
     license = licenses.bsd3;
     maintainers = with maintainers; [ mupdt ];
diff --git a/pkgs/development/python-modules/inflect/default.nix b/pkgs/development/python-modules/inflect/default.nix
index d6317d00841ba..50d7deb1660bb 100644
--- a/pkgs/development/python-modules/inflect/default.nix
+++ b/pkgs/development/python-modules/inflect/default.nix
@@ -1,26 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, setuptools-scm
-, pydantic
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+
+  # dependencies
+  more-itertools,
+  typeguard,
+
+  # checks
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "inflect";
-  version = "7.0.0";
-  disabled = isPy27;
-  format = "pyproject";
+  version = "7.3.1";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-Y9qTJa0p2oHsI+BVtBIleVq3k7TstIO+XcH6Nj/UcX4=";
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "jaraco";
+    repo = "inflect";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-J0XgSKPzZIt/7WnMGARXpyYzagBGiqRiuNmNnGKDBrs=";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
 
-  propagatedBuildInputs = [ pydantic ];
+  dependencies = [
+    more-itertools
+    typeguard
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
@@ -31,11 +49,11 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "inflect" ];
 
-  meta = with lib; {
+  meta = {
     description = "Correctly generate plurals, singular nouns, ordinals, indefinite articles";
     homepage = "https://github.com/jaraco/inflect";
     changelog = "https://github.com/jaraco/inflect/blob/v${version}/CHANGES.rst";
-    license = licenses.mit;
-    maintainers = teams.tts.members;
+    license = lib.licenses.mit;
+    maintainers = lib.teams.tts.members;
   };
 }
diff --git a/pkgs/development/python-modules/inflection/default.nix b/pkgs/development/python-modules/inflection/default.nix
index c09114e386e6d..effa0f2cd4e21 100644
--- a/pkgs/development/python-modules/inflection/default.nix
+++ b/pkgs/development/python-modules/inflection/default.nix
@@ -1,4 +1,10 @@
-{ lib, fetchPypi, buildPythonPackage, isPy27, pytest } :
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  isPy27,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "inflection";
@@ -7,8 +13,8 @@ buildPythonPackage rec {
   disabled = isPy27;
 
   src = fetchPypi {
-   inherit pname version;
-   sha256 = "1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417";
+    inherit pname version;
+    sha256 = "1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417";
   };
 
   nativeCheckInputs = [ pytest ];
@@ -16,10 +22,12 @@ buildPythonPackage rec {
   checkPhase = "pytest >/dev/null || pytest";
 
   meta = {
-   homepage = "https://github.com/jpvanhal/inflection";
-   description = "A port of Ruby on Rails inflector to Python";
-   maintainers = with lib.maintainers; [ NikolaMandic ilya-kolpakov ];
-   license = lib.licenses.mit;
+    homepage = "https://github.com/jpvanhal/inflection";
+    description = "Port of Ruby on Rails inflector to Python";
+    maintainers = with lib.maintainers; [
+      NikolaMandic
+      ilya-kolpakov
+    ];
+    license = lib.licenses.mit;
   };
 }
-
diff --git a/pkgs/development/python-modules/influxdb-client/default.nix b/pkgs/development/python-modules/influxdb-client/default.nix
index b2480e4684b79..0bf65299a561b 100644
--- a/pkgs/development/python-modules/influxdb-client/default.nix
+++ b/pkgs/development/python-modules/influxdb-client/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, aiohttp
-, aiocsv
-, buildPythonPackage
-, certifi
-, ciso8601
-, fetchFromGitHub
-, numpy
-, pandas
-, python-dateutil
-, pythonOlder
-, reactivex
-, setuptools
-, urllib3
+{
+  lib,
+  aiohttp,
+  aiocsv,
+  buildPythonPackage,
+  certifi,
+  ciso8601,
+  fetchFromGitHub,
+  numpy,
+  pandas,
+  python-dateutil,
+  pythonOlder,
+  reactivex,
+  setuptools,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "influxdb-client";
-  version = "1.42.0";
-  format = "setuptools";
+  version = "1.46.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -25,10 +26,12 @@ buildPythonPackage rec {
     owner = "influxdata";
     repo = "influxdb-client-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-PY0GpwO1OG4DKutMR3MF9HtTJbLFRCWypeoqVoiRD4o=";
+    hash = "sha256-oq6VXsCizqs7ZGocFWvD6SK1HRgQerlAEDW6+SBoM+A=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     certifi
     python-dateutil
     reactivex
@@ -41,9 +44,7 @@ buildPythonPackage rec {
       aiocsv
       aiohttp
     ];
-    ciso = [
-      ciso8601
-    ];
+    ciso = [ ciso8601 ];
     extra = [
       numpy
       pandas
@@ -53,9 +54,7 @@ buildPythonPackage rec {
   # Requires influxdb server
   doCheck = false;
 
-  pythonImportsCheck = [
-    "influxdb_client"
-  ];
+  pythonImportsCheck = [ "influxdb_client" ];
 
   meta = with lib; {
     description = "InfluxDB client library";
diff --git a/pkgs/development/python-modules/influxdb/default.nix b/pkgs/development/python-modules/influxdb/default.nix
index ca962f4e47929..b2270ef112486 100644
--- a/pkgs/development/python-modules/influxdb/default.nix
+++ b/pkgs/development/python-modules/influxdb/default.nix
@@ -1,28 +1,34 @@
-{ lib
-, buildPythonPackage
-, python-dateutil
-, fetchPypi
-, mock
-, msgpack
-, pynose
-, pandas
-, pytestCheckHook
-, pytz
-, requests
-, requests-mock
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  msgpack,
+  pandas,
+  pytestCheckHook,
+  python-dateutil,
+  pytz,
+  requests,
+  requests-mock,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "influxdb";
-  version = "5.3.1";
-  format = "setuptools";
+  version = "5.3.2";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0ymjv322mv6y424fmpd70f87152w55mbwwj6i7p3sjzf0ixmxy26";
+    hash = "sha256-WMZH9gQ3Et2G6a7hLrTM+7tUFUZ7yZEKSKqMdMEQiXA=";
   };
 
+  patches = [
+    # https://github.com/influxdata/influxdb-python/pull/835
+    ./remove-nose.patch
+  ];
+
   postPatch = ''
     for f in influxdb/tests/dataframe_client_test.py influxdb/tests/influxdb08/dataframe_client_test.py; do
       substituteInPlace "$f" \
@@ -35,25 +41,27 @@ buildPythonPackage rec {
     done
   '';
 
-  propagatedBuildInputs = [
-    requests
+  build-system = [ setuptools ];
+
+  dependencies = [
+    msgpack
     python-dateutil
     pytz
+    requests
     six
-    msgpack
   ];
 
   __darwinAllowLocalNetworking = true;
 
   nativeCheckInputs = [
-    pytestCheckHook
-    requests-mock
     mock
-    pynose
     pandas
+    pytestCheckHook
+    requests-mock
   ];
 
   disabledTests = [
+    "socket"
     # Tests cause FutureWarning due to use of 'record' instead of 'records' in pandas.
     #   https://github.com/influxdata/influxdb-python/pull/845
     # Also type mismatches in assertEqual on DataFrame:
@@ -78,6 +86,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python client for InfluxDB";
     homepage = "https://github.com/influxdb/influxdb-python";
+    changelog = "https://github.com/influxdata/influxdb-python/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/influxdb/remove-nose.patch b/pkgs/development/python-modules/influxdb/remove-nose.patch
new file mode 100644
index 0000000000000..b3d00c999581d
--- /dev/null
+++ b/pkgs/development/python-modules/influxdb/remove-nose.patch
@@ -0,0 +1,713 @@
+diff --git a/influxdb/tests/client_test.py b/influxdb/tests/client_test.py
+index 115fbc4..5b348c7 100644
+--- a/influxdb/tests/client_test.py
++++ b/influxdb/tests/client_test.py
+@@ -32,7 +32,6 @@ import requests
+ import requests.exceptions
+ import requests_mock
+ 
+-from nose.tools import raises
+ from urllib3.connection import HTTPConnection
+ 
+ from influxdb import InfluxDBClient
+@@ -383,12 +382,12 @@ class TestInfluxDBClient(unittest.TestCase):
+             received_data.decode()
+         )
+ 
+-    @raises(Exception)
+     def test_write_points_fails(self):
+         """Test write points fail for TestInfluxDBClient object."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+-        with _mocked_session(cli, 'post', 500):
+-            cli.write_points([])
++        with self.assertRaises(Exception):
++            with _mocked_session(cli, 'post', 500):
++                cli.write_points([])
+ 
+     def test_write_points_with_precision(self):
+         """Test write points with precision for TestInfluxDBClient object."""
+@@ -541,12 +540,12 @@ class TestInfluxDBClient(unittest.TestCase):
+                 consistency='boo'
+             )
+ 
+-    @raises(Exception)
+     def test_write_points_with_precision_fails(self):
+         """Test write points w/precision fail for TestInfluxDBClient object."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+-        with _mocked_session(cli, 'post', 500):
+-            cli.write_points_with_precision([])
++        with self.assertRaises(Exception):
++            with _mocked_session(cli, 'post', 500):
++                cli.write_points_with_precision([])
+ 
+     def test_query(self):
+         """Test query method for TestInfluxDBClient object."""
+@@ -651,11 +650,11 @@ class TestInfluxDBClient(unittest.TestCase):
+                 [example_object, example_object]
+             )
+ 
+-    @raises(Exception)
+     def test_query_fail(self):
+         """Test query failed for TestInfluxDBClient object."""
+-        with _mocked_session(self.cli, 'get', 401):
+-            self.cli.query('select column_one from foo;')
++        with self.assertRaises(Exception):
++            with _mocked_session(self.cli, 'get', 401):
++                self.cli.query('select column_one from foo;')
+ 
+     def test_ping(self):
+         """Test ping querying InfluxDB version."""
+@@ -697,11 +696,11 @@ class TestInfluxDBClient(unittest.TestCase):
+                 'create database "123"'
+             )
+ 
+-    @raises(Exception)
+     def test_create_database_fails(self):
+         """Test create database fail for TestInfluxDBClient object."""
+-        with _mocked_session(self.cli, 'post', 401):
+-            self.cli.create_database('new_db')
++        with self.assertRaises(Exception):
++            with _mocked_session(self.cli, 'post', 401):
++                self.cli.create_database('new_db')
+ 
+     def test_drop_database(self):
+         """Test drop database for TestInfluxDBClient object."""
+@@ -762,12 +761,12 @@ class TestInfluxDBClient(unittest.TestCase):
+                 [{'name': 'new_db_1'}, {'name': 'new_db_2'}]
+             )
+ 
+-    @raises(Exception)
+     def test_get_list_database_fails(self):
+         """Test get list of dbs fail for TestInfluxDBClient object."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password')
+-        with _mocked_session(cli, 'get', 401):
+-            cli.get_list_database()
++        with self.assertRaises(Exception):
++            with _mocked_session(cli, 'get', 401):
++                cli.get_list_database()
+ 
+     def test_get_list_measurements(self):
+         """Test get list of measurements for TestInfluxDBClient object."""
+@@ -840,12 +839,12 @@ class TestInfluxDBClient(unittest.TestCase):
+                 self.cli.get_list_series(tags={'region': 'us-west'}),
+                 ['cpu_load_short,host=server01,region=us-west'])
+ 
+-    @raises(Exception)
+     def test_get_list_series_fails(self):
+         """Test get a list of series from the database but fail."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password')
+-        with _mocked_session(cli, 'get', 401):
+-            cli.get_list_series()
++        with self.assertRaises(Exception):
++            with _mocked_session(cli, 'get', 401):
++                cli.get_list_series()
+ 
+     def test_create_retention_policy_default(self):
+         """Test create default ret policy for TestInfluxDBClient object."""
+@@ -971,12 +970,12 @@ class TestInfluxDBClient(unittest.TestCase):
+                 'alter retention policy "somename" on "db" default'
+             )
+ 
+-    @raises(Exception)
+     def test_alter_retention_policy_invalid(self):
+         """Test invalid alter ret policy for TestInfluxDBClient object."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password')
+-        with _mocked_session(cli, 'get', 400):
+-            self.cli.alter_retention_policy('somename', 'db')
++        with self.assertRaises(Exception):
++            with _mocked_session(cli, 'get', 400):
++                self.cli.alter_retention_policy('somename', 'db')
+ 
+     def test_drop_retention_policy(self):
+         """Test drop retention policy for TestInfluxDBClient object."""
+@@ -994,12 +993,12 @@ class TestInfluxDBClient(unittest.TestCase):
+                 'drop retention policy "somename" on "db"'
+             )
+ 
+-    @raises(Exception)
+     def test_drop_retention_policy_fails(self):
+         """Test failed drop ret policy for TestInfluxDBClient object."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password')
+-        with _mocked_session(cli, 'delete', 401):
+-            cli.drop_retention_policy('default', 'db')
++        with self.assertRaises(Exception):
++            with _mocked_session(cli, 'delete', 401):
++                cli.drop_retention_policy('default', 'db')
+ 
+     def test_get_list_retention_policies(self):
+         """Test get retention policies for TestInfluxDBClient object."""
+@@ -1179,12 +1178,12 @@ class TestInfluxDBClient(unittest.TestCase):
+                 'grant all privileges to "test"'
+             )
+ 
+-    @raises(Exception)
+     def test_grant_admin_privileges_invalid(self):
+         """Test grant invalid admin privs for TestInfluxDBClient object."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password')
+-        with _mocked_session(cli, 'get', 400):
+-            self.cli.grant_admin_privileges('')
++        with self.assertRaises(Exception):
++            with _mocked_session(cli, 'get', 400):
++                self.cli.grant_admin_privileges('')
+ 
+     def test_revoke_admin_privileges(self):
+         """Test revoke admin privs for TestInfluxDBClient object."""
+@@ -1203,12 +1202,12 @@ class TestInfluxDBClient(unittest.TestCase):
+                 'revoke all privileges from "test"'
+             )
+ 
+-    @raises(Exception)
+     def test_revoke_admin_privileges_invalid(self):
+         """Test revoke invalid admin privs for TestInfluxDBClient object."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password')
+-        with _mocked_session(cli, 'get', 400):
+-            self.cli.revoke_admin_privileges('')
++        with self.assertRaises(Exception):
++            with _mocked_session(cli, 'get', 400):
++                self.cli.revoke_admin_privileges('')
+ 
+     def test_grant_privilege(self):
+         """Test grant privs for TestInfluxDBClient object."""
+@@ -1227,12 +1226,12 @@ class TestInfluxDBClient(unittest.TestCase):
+                 'grant read on "testdb" to "test"'
+             )
+ 
+-    @raises(Exception)
+     def test_grant_privilege_invalid(self):
+         """Test grant invalid privs for TestInfluxDBClient object."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password')
+-        with _mocked_session(cli, 'get', 400):
+-            self.cli.grant_privilege('', 'testdb', 'test')
++        with self.assertRaises(Exception):
++            with _mocked_session(cli, 'get', 400):
++                self.cli.grant_privilege('', 'testdb', 'test')
+ 
+     def test_revoke_privilege(self):
+         """Test revoke privs for TestInfluxDBClient object."""
+@@ -1251,12 +1250,12 @@ class TestInfluxDBClient(unittest.TestCase):
+                 'revoke read on "testdb" from "test"'
+             )
+ 
+-    @raises(Exception)
+     def test_revoke_privilege_invalid(self):
+         """Test revoke invalid privs for TestInfluxDBClient object."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password')
+-        with _mocked_session(cli, 'get', 400):
+-            self.cli.revoke_privilege('', 'testdb', 'test')
++        with self.assertRaises(Exception):
++            with _mocked_session(cli, 'get', 400):
++                self.cli.revoke_privilege('', 'testdb', 'test')
+ 
+     def test_get_list_privileges(self):
+         """Test get list of privs for TestInfluxDBClient object."""
+@@ -1278,12 +1277,12 @@ class TestInfluxDBClient(unittest.TestCase):
+                  {'database': 'db3', 'privilege': 'NO PRIVILEGES'}]
+             )
+ 
+-    @raises(Exception)
+     def test_get_list_privileges_fails(self):
+         """Test failed get list of privs for TestInfluxDBClient object."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password')
+-        with _mocked_session(cli, 'get', 401):
+-            cli.get_list_privileges('test')
++        with self.assertRaises(Exception):
++            with _mocked_session(cli, 'get', 401):
++                cli.get_list_privileges('test')
+ 
+     def test_get_list_continuous_queries(self):
+         """Test getting a list of continuous queries."""
+@@ -1333,11 +1332,11 @@ class TestInfluxDBClient(unittest.TestCase):
+                 ]
+             )
+ 
+-    @raises(Exception)
+     def test_get_list_continuous_queries_fails(self):
+         """Test failing to get a list of continuous queries."""
+-        with _mocked_session(self.cli, 'get', 400):
+-            self.cli.get_list_continuous_queries()
++        with self.assertRaises(Exception):
++            with _mocked_session(self.cli, 'get', 400):
++                self.cli.get_list_continuous_queries()
+ 
+     def test_create_continuous_query(self):
+         """Test continuous query creation."""
+@@ -1366,11 +1365,12 @@ class TestInfluxDBClient(unittest.TestCase):
+                 '"6_months"."events" from "events" group by time(10m) end'
+             )
+ 
+-    @raises(Exception)
+     def test_create_continuous_query_fails(self):
+         """Test failing to create a continuous query."""
+-        with _mocked_session(self.cli, 'get', 400):
+-            self.cli.create_continuous_query('cq_name', 'select', 'db_name')
++        with self.assertRaises(Exception):
++            with _mocked_session(self.cli, 'get', 400):
++                self.cli.create_continuous_query('cq_name', 'select',
++                                                 'db_name')
+ 
+     def test_drop_continuous_query(self):
+         """Test dropping a continuous query."""
+@@ -1387,11 +1387,11 @@ class TestInfluxDBClient(unittest.TestCase):
+                 'drop continuous query "cq_name" on "db_name"'
+             )
+ 
+-    @raises(Exception)
+     def test_drop_continuous_query_fails(self):
+         """Test failing to drop a continuous query."""
+-        with _mocked_session(self.cli, 'get', 400):
+-            self.cli.drop_continuous_query('cq_name', 'db_name')
++        with self.assertRaises(Exception):
++            with _mocked_session(self.cli, 'get', 400):
++                self.cli.drop_continuous_query('cq_name', 'db_name')
+ 
+     def test_invalid_port_fails(self):
+         """Test invalid port fail for TestInfluxDBClient object."""
+diff --git a/influxdb/tests/dataframe_client_test.py b/influxdb/tests/dataframe_client_test.py
+index 87b8e0d..a8c8416 100644
+--- a/influxdb/tests/dataframe_client_test.py
++++ b/influxdb/tests/dataframe_client_test.py
+@@ -13,7 +13,6 @@ import unittest
+ import warnings
+ import requests_mock
+ 
+-from nose.tools import raises
+ from influxdb.tests import skip_if_pypy, using_pypy
+ 
+ from .client_test import _mocked_session
+@@ -597,35 +596,35 @@ class TestDataFrameClient(unittest.TestCase):
+                 m.last_request.body,
+             )
+ 
+-    @raises(TypeError)
+     def test_write_points_from_dataframe_fails_without_time_index(self):
+         """Test failed write points from df without time index."""
+         dataframe = pd.DataFrame(data=[["1", 1, 1.0], ["2", 2, 2.0]],
+                                  columns=["column_one", "column_two",
+                                           "column_three"])
+ 
+-        with requests_mock.Mocker() as m:
+-            m.register_uri(requests_mock.POST,
+-                           "http://localhost:8086/db/db/series",
+-                           status_code=204)
++        with self.assertRaises(TypeError):
++            with requests_mock.Mocker() as m:
++                m.register_uri(requests_mock.POST,
++                               "http://localhost:8086/db/db/series",
++                               status_code=204)
+ 
+-            cli = DataFrameClient(database='db')
+-            cli.write_points(dataframe, "foo")
++                cli = DataFrameClient(database='db')
++                cli.write_points(dataframe, "foo")
+ 
+-    @raises(TypeError)
+     def test_write_points_from_dataframe_fails_with_series(self):
+         """Test failed write points from df with series."""
+         now = pd.Timestamp('1970-01-01 00:00+00:00')
+         dataframe = pd.Series(data=[1.0, 2.0],
+                               index=[now, now + timedelta(hours=1)])
+ 
+-        with requests_mock.Mocker() as m:
+-            m.register_uri(requests_mock.POST,
+-                           "http://localhost:8086/db/db/series",
+-                           status_code=204)
++        with self.assertRaises(TypeError):
++            with requests_mock.Mocker() as m:
++                m.register_uri(requests_mock.POST,
++                               "http://localhost:8086/db/db/series",
++                               status_code=204)
+ 
+-            cli = DataFrameClient(database='db')
+-            cli.write_points(dataframe, "foo")
++                cli = DataFrameClient(database='db')
++                cli.write_points(dataframe, "foo")
+ 
+     def test_create_database(self):
+         """Test create database for TestInfluxDBClient object."""
+@@ -657,12 +656,12 @@ class TestDataFrameClient(unittest.TestCase):
+                 'create database "123"'
+             )
+ 
+-    @raises(Exception)
+     def test_create_database_fails(self):
+         """Test create database fail for TestInfluxDBClient object."""
+         cli = DataFrameClient(database='db')
+-        with _mocked_session(cli, 'post', 401):
+-            cli.create_database('new_db')
++        with self.assertRaises(Exception):
++            with _mocked_session(cli, 'post', 401):
++                cli.create_database('new_db')
+ 
+     def test_drop_database(self):
+         """Test drop database for TestInfluxDBClient object."""
+@@ -709,12 +708,12 @@ class TestDataFrameClient(unittest.TestCase):
+                 'drop database "123"'
+             )
+ 
+-    @raises(Exception)
+     def test_get_list_database_fails(self):
+         """Test get list of dbs fail for TestInfluxDBClient object."""
+         cli = DataFrameClient('host', 8086, 'username', 'password')
+-        with _mocked_session(cli, 'get', 401):
+-            cli.get_list_database()
++        with self.assertRaises(Exception):
++            with _mocked_session(cli, 'get', 401):
++                cli.get_list_database()
+ 
+     def test_get_list_measurements(self):
+         """Test get list of measurements for TestInfluxDBClient object."""
+@@ -819,12 +818,12 @@ class TestDataFrameClient(unittest.TestCase):
+                 'alter retention policy "somename" on "db" default'
+             )
+ 
+-    @raises(Exception)
+     def test_alter_retention_policy_invalid(self):
+         """Test invalid alter ret policy for TestInfluxDBClient object."""
+         cli = DataFrameClient('host', 8086, 'username', 'password')
+-        with _mocked_session(cli, 'get', 400):
+-            cli.alter_retention_policy('somename', 'db')
++        with self.assertRaises(Exception):
++            with _mocked_session(cli, 'get', 400):
++                cli.alter_retention_policy('somename', 'db')
+ 
+     def test_drop_retention_policy(self):
+         """Test drop retention policy for TestInfluxDBClient object."""
+@@ -843,12 +842,12 @@ class TestDataFrameClient(unittest.TestCase):
+                 'drop retention policy "somename" on "db"'
+             )
+ 
+-    @raises(Exception)
+     def test_drop_retention_policy_fails(self):
+         """Test failed drop ret policy for TestInfluxDBClient object."""
+         cli = DataFrameClient('host', 8086, 'username', 'password')
+-        with _mocked_session(cli, 'delete', 401):
+-            cli.drop_retention_policy('default', 'db')
++        with self.assertRaises(Exception):
++            with _mocked_session(cli, 'delete', 401):
++                cli.drop_retention_policy('default', 'db')
+ 
+     def test_get_list_retention_policies(self):
+         """Test get retention policies for TestInfluxDBClient object."""
+diff --git a/influxdb/tests/influxdb08/client_test.py b/influxdb/tests/influxdb08/client_test.py
+index 39ab52d..d20a411 100644
+--- a/influxdb/tests/influxdb08/client_test.py
++++ b/influxdb/tests/influxdb08/client_test.py
+@@ -13,7 +13,6 @@ import requests
+ import requests.exceptions
+ import requests_mock
+ 
+-from nose.tools import raises
+ from mock import patch
+ 
+ from influxdb.influxdb08 import InfluxDBClient
+@@ -131,12 +130,12 @@ class TestInfluxDBClient(unittest.TestCase):
+         cli.switch_database('another_database')
+         self.assertEqual(cli._database, 'another_database')
+ 
+-    @raises(FutureWarning)
+     def test_switch_db_deprecated(self):
+         """Test deprecated switch database for TestInfluxDBClient object."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password', 'database')
+-        cli.switch_db('another_database')
+-        self.assertEqual(cli._database, 'another_database')
++        with self.assertRaises(FutureWarning):
++            cli.switch_db('another_database')
++            self.assertEqual(cli._database, 'another_database')
+ 
+     def test_switch_user(self):
+         """Test switch user for TestInfluxDBClient object."""
+@@ -288,12 +287,13 @@ class TestInfluxDBClient(unittest.TestCase):
+                 time_precision='ms'
+             )
+ 
+-    @raises(Exception)
+     def test_write_points_fails(self):
+         """Test failed write points for TestInfluxDBClient object."""
+-        with _mocked_session('post', 500):
+-            cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+-            cli.write_points([])
++        with self.assertRaises(Exception):
++            with _mocked_session('post', 500):
++                cli = InfluxDBClient('host', 8086, 'username',
++                                     'password', 'db')
++                cli.write_points([])
+ 
+     def test_write_points_with_precision(self):
+         """Test write points with precision."""
+@@ -313,12 +313,13 @@ class TestInfluxDBClient(unittest.TestCase):
+                 time_precision='g'
+             )
+ 
+-    @raises(Exception)
+     def test_write_points_with_precision_fails(self):
+         """Test write points where precision fails."""
+-        with _mocked_session('post', 500):
+-            cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+-            cli.write_points_with_precision([])
++        with self.assertRaises(Exception):
++            with _mocked_session('post', 500):
++                cli = InfluxDBClient('host', 8086, 'username',
++                                     'password', 'db')
++                cli.write_points_with_precision([])
+ 
+     def test_delete_points(self):
+         """Test delete points for TestInfluxDBClient object."""
+@@ -333,30 +334,31 @@ class TestInfluxDBClient(unittest.TestCase):
+                              {'u': 'username', 'p': 'password'})
+             self.assertEqual(kwds['url'], 'http://host:8086/db/db/series/foo')
+ 
+-    @raises(Exception)
+     def test_delete_points_with_wrong_name(self):
+         """Test delete points with wrong name."""
+-        with _mocked_session('delete', 400):
+-            cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+-            cli.delete_points("nonexist")
++        with self.assertRaises(Exception):
++            with _mocked_session('delete', 400):
++                cli = InfluxDBClient('host', 8086, 'username',
++                                     'password', 'db')
++                cli.delete_points("nonexist")
+ 
+-    @raises(NotImplementedError)
+     def test_create_scheduled_delete(self):
+         """Test create scheduled deletes."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+-        cli.create_scheduled_delete([])
++        with self.assertRaises(NotImplementedError):
++            cli.create_scheduled_delete([])
+ 
+-    @raises(NotImplementedError)
+     def test_get_list_scheduled_delete(self):
+         """Test get schedule list of deletes TestInfluxDBClient."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+-        cli.get_list_scheduled_delete()
++        with self.assertRaises(NotImplementedError):
++            cli.get_list_scheduled_delete()
+ 
+-    @raises(NotImplementedError)
+     def test_remove_scheduled_delete(self):
+         """Test remove scheduled delete TestInfluxDBClient."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+-        cli.remove_scheduled_delete(1)
++        with self.assertRaises(NotImplementedError):
++            cli.remove_scheduled_delete(1)
+ 
+     def test_query(self):
+         """Test query for TestInfluxDBClient object."""
+@@ -438,12 +440,13 @@ class TestInfluxDBClient(unittest.TestCase):
+                 [example_object, example_object]
+             )
+ 
+-    @raises(Exception)
+     def test_query_fail(self):
+         """Test failed query for TestInfluxDBClient."""
+-        with _mocked_session('get', 401):
+-            cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+-            cli.query('select column_one from foo;')
++        with self.assertRaises(Exception):
++            with _mocked_session('get', 401):
++                cli = InfluxDBClient('host', 8086, 'username',
++                                     'password', 'db')
++                cli.query('select column_one from foo;')
+ 
+     def test_query_bad_precision(self):
+         """Test query with bad precision for TestInfluxDBClient."""
+@@ -460,12 +463,13 @@ class TestInfluxDBClient(unittest.TestCase):
+             cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+             self.assertTrue(cli.create_database('new_db'))
+ 
+-    @raises(Exception)
+     def test_create_database_fails(self):
+         """Test failed create database for TestInfluxDBClient."""
+-        with _mocked_session('post', 401):
+-            cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+-            cli.create_database('new_db')
++        with self.assertRaises(Exception):
++            with _mocked_session('post', 401):
++                cli = InfluxDBClient('host', 8086, 'username',
++                                     'password', 'db')
++                cli.create_database('new_db')
+ 
+     def test_delete_database(self):
+         """Test delete database for TestInfluxDBClient."""
+@@ -473,12 +477,13 @@ class TestInfluxDBClient(unittest.TestCase):
+             cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+             self.assertTrue(cli.delete_database('old_db'))
+ 
+-    @raises(Exception)
+     def test_delete_database_fails(self):
+         """Test failed delete database for TestInfluxDBClient."""
+-        with _mocked_session('delete', 401):
+-            cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+-            cli.delete_database('old_db')
++        with self.assertRaises(Exception):
++            with _mocked_session('delete', 401):
++                cli = InfluxDBClient('host', 8086, 'username',
++                                     'password', 'db')
++                cli.delete_database('old_db')
+ 
+     def test_get_list_database(self):
+         """Test get list of databases for TestInfluxDBClient."""
+@@ -490,23 +495,23 @@ class TestInfluxDBClient(unittest.TestCase):
+             self.assertEqual(len(cli.get_list_database()), 1)
+             self.assertEqual(cli.get_list_database()[0]['name'], 'a_db')
+ 
+-    @raises(Exception)
+     def test_get_list_database_fails(self):
+         """Test failed get list of databases for TestInfluxDBClient."""
+-        with _mocked_session('get', 401):
+-            cli = InfluxDBClient('host', 8086, 'username', 'password')
+-            cli.get_list_database()
++        with self.assertRaises(Exception):
++            with _mocked_session('get', 401):
++                cli = InfluxDBClient('host', 8086, 'username', 'password')
++                cli.get_list_database()
+ 
+-    @raises(FutureWarning)
+     def test_get_database_list_deprecated(self):
+         """Test deprecated get database list for TestInfluxDBClient."""
+         data = [
+             {"name": "a_db"}
+         ]
+-        with _mocked_session('get', 200, data):
+-            cli = InfluxDBClient('host', 8086, 'username', 'password')
+-            self.assertEqual(len(cli.get_database_list()), 1)
+-            self.assertEqual(cli.get_database_list()[0]['name'], 'a_db')
++        with self.assertRaises(FutureWarning):
++            with _mocked_session('get', 200, data):
++                cli = InfluxDBClient('host', 8086, 'username', 'password')
++                self.assertEqual(len(cli.get_database_list()), 1)
++                self.assertEqual(cli.get_database_list()[0]['name'], 'a_db')
+ 
+     def test_delete_series(self):
+         """Test delete series for TestInfluxDBClient."""
+@@ -514,12 +519,13 @@ class TestInfluxDBClient(unittest.TestCase):
+             cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+             cli.delete_series('old_series')
+ 
+-    @raises(Exception)
+     def test_delete_series_fails(self):
+         """Test failed delete series for TestInfluxDBClient."""
+-        with _mocked_session('delete', 401):
+-            cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+-            cli.delete_series('old_series')
++        with self.assertRaises(Exception):
++            with _mocked_session('delete', 401):
++                cli = InfluxDBClient('host', 8086, 'username',
++                                     'password', 'db')
++                cli.delete_series('old_series')
+ 
+     def test_get_series_list(self):
+         """Test get list of series for TestInfluxDBClient."""
+@@ -662,29 +668,30 @@ class TestInfluxDBClient(unittest.TestCase):
+                 }
+             )
+ 
+-    @raises(NotImplementedError)
+     def test_get_list_database_admins(self):
+         """Test get list of database admins for TestInfluxDBClient."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+-        cli.get_list_database_admins()
++        with self.assertRaises(NotImplementedError):
++            cli.get_list_database_admins()
+ 
+-    @raises(NotImplementedError)
+     def test_add_database_admin(self):
+         """Test add database admins for TestInfluxDBClient."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+-        cli.add_database_admin('admin', 'admin_secret_password')
++        with self.assertRaises(NotImplementedError):
++            cli.add_database_admin('admin', 'admin_secret_password')
+ 
+-    @raises(NotImplementedError)
+     def test_update_database_admin_password(self):
+         """Test update database admin pass for TestInfluxDBClient."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+-        cli.update_database_admin_password('admin', 'admin_secret_password')
++        with self.assertRaises(NotImplementedError):
++            cli.update_database_admin_password('admin',
++                                               'admin_secret_password')
+ 
+-    @raises(NotImplementedError)
+     def test_delete_database_admin(self):
+         """Test delete database admin for TestInfluxDBClient."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+-        cli.delete_database_admin('admin')
++        with self.assertRaises(NotImplementedError):
++            cli.delete_database_admin('admin')
+ 
+     def test_get_database_users(self):
+         """Test get database users for TestInfluxDBClient."""
+@@ -842,11 +849,11 @@ class TestInfluxDBClient(unittest.TestCase):
+ 
+             self.assertIsNone(m.last_request.body)
+ 
+-    @raises(NotImplementedError)
+     def test_update_permission(self):
+         """Test update permission for TestInfluxDBClient."""
+         cli = InfluxDBClient('host', 8086, 'username', 'password', 'db')
+-        cli.update_permission('admin', [])
++        with self.assertRaises(NotImplementedError):
++            cli.update_permission('admin', [])
+ 
+     @mock.patch('requests.Session.request')
+     def test_request_retry(self, mock_request):
+diff --git a/influxdb/tests/influxdb08/dataframe_client_test.py b/influxdb/tests/influxdb08/dataframe_client_test.py
+index 0a766af..104ae6b 100644
+--- a/influxdb/tests/influxdb08/dataframe_client_test.py
++++ b/influxdb/tests/influxdb08/dataframe_client_test.py
+@@ -10,8 +10,6 @@ import warnings
+ 
+ import requests_mock
+ 
+-from nose.tools import raises
+-
+ from influxdb.tests import skip_if_pypy, using_pypy
+ 
+ from .client_test import _mocked_session
+@@ -191,33 +189,33 @@ class TestDataFrameClient(unittest.TestCase):
+             cli.write_points({"foo": dataframe}, time_precision='u')
+             self.assertListEqual(json.loads(m.last_request.body), points_us)
+ 
+-    @raises(TypeError)
+     def test_write_points_from_dataframe_fails_without_time_index(self):
+         """Test write points from dataframe that fails without time index."""
+         dataframe = pd.DataFrame(data=[["1", 1, 1.0], ["2", 2, 2.0]],
+                                  columns=["column_one", "column_two",
+                                           "column_three"])
+ 
+-        with requests_mock.Mocker() as m:
+-            m.register_uri(requests_mock.POST,
+-                           "http://localhost:8086/db/db/series")
++        with self.assertRaises(TypeError):
++            with requests_mock.Mocker() as m:
++                m.register_uri(requests_mock.POST,
++                               "http://localhost:8086/db/db/series")
+ 
+-            cli = DataFrameClient(database='db')
+-            cli.write_points({"foo": dataframe})
++                cli = DataFrameClient(database='db')
++                cli.write_points({"foo": dataframe})
+ 
+-    @raises(TypeError)
+     def test_write_points_from_dataframe_fails_with_series(self):
+         """Test failed write points from dataframe with series."""
+         now = pd.Timestamp('1970-01-01 00:00+00:00')
+         dataframe = pd.Series(data=[1.0, 2.0],
+                               index=[now, now + timedelta(hours=1)])
+ 
+-        with requests_mock.Mocker() as m:
+-            m.register_uri(requests_mock.POST,
+-                           "http://localhost:8086/db/db/series")
++        with self.assertRaises(TypeError):
++            with requests_mock.Mocker() as m:
++                m.register_uri(requests_mock.POST,
++                               "http://localhost:8086/db/db/series")
+ 
+-            cli = DataFrameClient(database='db')
+-            cli.write_points({"foo": dataframe})
++                cli = DataFrameClient(database='db')
++                cli.write_points({"foo": dataframe})
+ 
+     def test_query_into_dataframe(self):
+         """Test query into a dataframe."""
diff --git a/pkgs/development/python-modules/influxdb3-python/default.nix b/pkgs/development/python-modules/influxdb3-python/default.nix
index 23b4bcc4c3bf5..6c96217d9efd8 100644
--- a/pkgs/development/python-modules/influxdb3-python/default.nix
+++ b/pkgs/development/python-modules/influxdb3-python/default.nix
@@ -4,7 +4,6 @@
   certifi,
   fetchFromGitHub,
   pyarrow,
-  pytestCheckHook,
   python-dateutil,
   pythonOlder,
   reactivex,
@@ -14,16 +13,16 @@
 
 buildPythonPackage rec {
   pname = "influxdb3-python";
-  version = "0.4.0";
+  version = "0.9.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "InfluxCommunity";
     repo = "influxdb3-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-qFcXqbYsjn27BPeKxTsWxKJdF6y8Oz3VBrmSyO0vCGo=";
+    hash = "sha256-4P+bQEldyBNh4qsIkoZLXnUOrQ5wVGbr55xbS0oQMMM=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/inform/default.nix b/pkgs/development/python-modules/inform/default.nix
index a95e9e9cc8e8c..ab08f740e6747 100644
--- a/pkgs/development/python-modules/inform/default.nix
+++ b/pkgs/development/python-modules/inform/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, arrow
-, six
-, hypothesis
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  arrow,
+  six,
+  hypothesis,
+  num2words,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "inform";
-  version = "1.28";
+  version = "1.31";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -20,12 +22,10 @@ buildPythonPackage rec {
     owner = "KenKundert";
     repo = "inform";
     rev = "refs/tags/v${version}";
-    hash = "sha256-RA8/or3HTS/rQmG4A/Eg5j24YElaTEpnHa1yksARVMQ=";
+    hash = "sha256-o7yH7jCNn9gbcr7NMJVaYQOJ7hvwaY2ur1FyEP40Cco=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     arrow
@@ -33,13 +33,12 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
+    num2words
     pytestCheckHook
     hypothesis
   ];
 
-  disabledTests = [
-    "test_prostrate"
-  ];
+  disabledTests = [ "test_prostrate" ];
 
   meta = with lib; {
     description = "Print and logging utilities";
diff --git a/pkgs/development/python-modules/iniconfig/default.nix b/pkgs/development/python-modules/iniconfig/default.nix
index b9c6e8e205fa3..fcf045c944114 100644
--- a/pkgs/development/python-modules/iniconfig/default.nix
+++ b/pkgs/development/python-modules/iniconfig/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, substituteAll
-, fetchPypi
-, hatch-vcs
-, hatchling
+{
+  lib,
+  buildPythonPackage,
+  substituteAll,
+  fetchPypi,
+  hatchling,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +16,7 @@ buildPythonPackage rec {
     hash = "sha256-LZHhNb9y0xpBCxfBbaYQqCy1X2sEd9GpAhNLJKRVuLM=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   patches = [
     # Cannot use hatch-vcs, due to an inifinite recursion
@@ -28,9 +26,7 @@ buildPythonPackage rec {
     })
   ];
 
-  pythonImportsCheck = [
-    "iniconfig"
-  ];
+  pythonImportsCheck = [ "iniconfig" ];
 
   # Requires pytest, which in turn requires this package - causes infinite
   # recursion. See also: https://github.com/NixOS/nixpkgs/issues/63168
@@ -40,6 +36,6 @@ buildPythonPackage rec {
     description = "brain-dead simple parsing of ini files";
     homepage = "https://github.com/pytest-dev/iniconfig";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/inifile/default.nix b/pkgs/development/python-modules/inifile/default.nix
index c3b1edfb89d0d..a03e4070326f4 100644
--- a/pkgs/development/python-modules/inifile/default.nix
+++ b/pkgs/development/python-modules/inifile/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -14,10 +15,9 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "A small INI library for Python";
-    homepage    = "https://github.com/mitsuhiko/python-inifile";
-    license     = licenses.bsd0;
-    maintainers = with maintainers; [ ];
+    description = "Small INI library for Python";
+    homepage = "https://github.com/mitsuhiko/python-inifile";
+    license = licenses.bsd0;
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/iniparse/default.nix b/pkgs/development/python-modules/iniparse/default.nix
index 16324612b2af6..3d0c93c07e271 100644
--- a/pkgs/development/python-modules/iniparse/default.nix
+++ b/pkgs/development/python-modules/iniparse/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -30,5 +31,4 @@ buildPythonPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ danbst ];
   };
-
 }
diff --git a/pkgs/development/python-modules/injector/default.nix b/pkgs/development/python-modules/injector/default.nix
index 1f15e496f5cc4..7ce90c23f6229 100644
--- a/pkgs/development/python-modules/injector/default.nix
+++ b/pkgs/development/python-modules/injector/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, typing-extensions
-, pytestCheckHook
-, pytest-cov
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  typing-extensions,
+  pytestCheckHook,
+  pytest-cov,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-5O4vJSXfYNTrUzmv5XuT9pSUndNSvTZTxfVwiAd+0ck=";
   };
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.9") [
-    typing-extensions
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.9") [ typing-extensions ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -33,7 +32,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python dependency injection framework, inspired by Guice";
     homepage = "https://github.com/alecthomas/injector";
-    maintainers = [ maintainers.ivar ];
+    maintainers = [ ];
     license = licenses.bsd3;
   };
 }
diff --git a/pkgs/development/python-modules/inkbird-ble/default.nix b/pkgs/development/python-modules/inkbird-ble/default.nix
index fc5eb2d12ba4d..4722aa1902411 100644
--- a/pkgs/development/python-modules/inkbird-ble/default.nix
+++ b/pkgs/development/python-modules/inkbird-ble/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, bluetooth-data-tools
-, bluetooth-sensor-state-data
-, buildPythonPackage
-, fetchFromGitHub
-, home-assistant-bluetooth
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, sensor-state-data
+{
+  lib,
+  bluetooth-data-tools,
+  bluetooth-sensor-state-data,
+  buildPythonPackage,
+  fetchFromGitHub,
+  home-assistant-bluetooth,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  sensor-state-data,
 }:
 
 buildPythonPackage rec {
   pname = "inkbird-ble";
-  version = "0.5.6";
+  version = "0.5.8";
   format = "pyproject";
 
   disabled = pythonOlder "3.9";
@@ -21,12 +22,10 @@ buildPythonPackage rec {
     owner = "Bluetooth-Devices";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-re5HjPtssFkpcltCr0HEJmJyHbXJdkr2wDgaAHfy2Tk=";
+    hash = "sha256-cUqU4XaY7CORhzy0AGjXI5c5ka+PnF4cHdyopyEBcLo=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     bluetooth-data-tools
@@ -35,18 +34,14 @@ buildPythonPackage rec {
     sensor-state-data
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace " --cov=inkbird_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  pythonImportsCheck = [
-    "inkbird_ble"
-  ];
+  pythonImportsCheck = [ "inkbird_ble" ];
 
   meta = with lib; {
     description = "Library for Inkbird BLE devices";
diff --git a/pkgs/development/python-modules/inkex/default.nix b/pkgs/development/python-modules/inkex/default.nix
index e6c1b5da2806f..2435c7e467868 100644
--- a/pkgs/development/python-modules/inkex/default.nix
+++ b/pkgs/development/python-modules/inkex/default.nix
@@ -1,20 +1,22 @@
-{ lib
-, buildPythonPackage
-, inkscape
-, fetchFromGitLab
-, poetry-core
-, cssselect
-, lxml
-, numpy
-, packaging
-, pillow
-, pygobject3
-, pyparsing
-, pyserial
-, scour
-, gobject-introspection
-, pytestCheckHook
-, gtk3
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  inkscape,
+  fetchpatch,
+  poetry-core,
+  cssselect,
+  lxml,
+  numpy,
+  packaging,
+  pillow,
+  pygobject3,
+  pyparsing,
+  pyserial,
+  scour,
+  gobject-introspection,
+  pytestCheckHook,
+  gtk3,
 }:
 
 buildPythonPackage {
@@ -25,10 +27,19 @@ buildPythonPackage {
 
   inherit (inkscape) src;
 
-  nativeBuildInputs = [
-    poetry-core
+  patches = [
+    # Fix “distribute along path” test with Python 3.12.
+    # https://gitlab.com/inkscape/extensions/-/issues/580
+    (fetchpatch {
+      url = "https://gitlab.com/inkscape/extensions/-/commit/c576043c195cd044bdfc975e6367afb9b655eb14.patch";
+      extraPrefix = "share/extensions/";
+      stripLen = 1;
+      hash = "sha256-D9HxBx8RNkD7hHuExJqdu3oqlrXX6IOUw9m9Gx6+Dr8=";
+    })
   ];
 
+  nativeBuildInputs = [ poetry-core ];
+
   propagatedBuildInputs = [
     cssselect
     lxml
@@ -52,10 +63,16 @@ buildPythonPackage {
     scour
   ];
 
-  disabledTests = [
-    "test_extract_multiple"
-    "test_lookup_and"
-  ];
+  disabledTests =
+    [
+      "test_extract_multiple"
+      "test_lookup_and"
+    ]
+    ++ lib.optional stdenv.hostPlatform.isDarwin [
+      "test_image_extract"
+      "test_path_number_nodes"
+      "test_plotter" # Hangs
+    ];
 
   disabledTestPaths = [
     # Fatal Python error: Segmentation fault
diff --git a/pkgs/development/python-modules/inline-snapshot/default.nix b/pkgs/development/python-modules/inline-snapshot/default.nix
new file mode 100644
index 0000000000000..37e3657815732
--- /dev/null
+++ b/pkgs/development/python-modules/inline-snapshot/default.nix
@@ -0,0 +1,73 @@
+{
+  lib,
+  asttokens,
+  black,
+  buildPythonPackage,
+  click,
+  dirty-equals,
+  executing,
+  fetchFromGitHub,
+  hypothesis,
+  poetry-core,
+  pyright,
+  pytest-subtests,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  rich,
+  time-machine,
+  toml,
+  types-toml,
+}:
+
+buildPythonPackage rec {
+  pname = "inline-snapshot";
+  version = "0.10.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "15r10nk";
+    repo = "inline-snapshot";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-19rvhqYkM3QiD0La5TRi/2uKza8HW/bnXeGAhOZ/bgs=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    asttokens
+    black
+    click
+    executing
+    rich
+    toml
+    types-toml
+  ];
+
+  nativeCheckInputs = [
+    dirty-equals
+    hypothesis
+    pyright
+    pytest-subtests
+    pytest-xdist
+    pytestCheckHook
+    time-machine
+  ];
+
+  pythonImportsCheck = [ "inline_snapshot" ];
+
+  disabledTestPaths = [
+    # Tests don't play nice with pytest-xdist
+    "tests/test_typing.py"
+  ];
+
+  meta = with lib; {
+    description = "Create and update inline snapshots in Python tests";
+    homepage = "https://github.com/15r10nk/inline-snapshot/";
+    changelog = "https://github.com/15r10nk/inline-snapshot/blob/${version}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/inlinestyler/default.nix b/pkgs/development/python-modules/inlinestyler/default.nix
index 88e0e3e5469ee..2fd63571eb286 100644
--- a/pkgs/development/python-modules/inlinestyler/default.nix
+++ b/pkgs/development/python-modules/inlinestyler/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch2
-
-# build system
-, setuptools
-
-# dependencies
-, cssutils
-, lxml
-, requests
-
-# tests
-, ipdb
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+
+  # build system
+  setuptools,
+
+  # dependencies
+  cssutils,
+  lxml,
+  requests,
+
+  # tests
+  ipdb,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
     })
   ];
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     cssutils
@@ -46,9 +45,7 @@ buildPythonPackage rec {
     requests
   ];
 
-  pythonImportsCheck = [
-    "inlinestyler"
-  ];
+  pythonImportsCheck = [ "inlinestyler" ];
 
   nativeCheckInputs = [
     ipdb
@@ -56,10 +53,10 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A simple CSS inliner for generating HTML email messages";
+    description = "Simple CSS inliner for generating HTML email messages";
     homepage = "https://github.com/dlanger/inlinestyler";
     changelog = "https://github.com/dlanger/inlinestyler/blob/${src.rev}/CHANGELOG";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/inotify-simple/default.nix b/pkgs/development/python-modules/inotify-simple/default.nix
index 2d2100ddf7057..e5f523ffeb9ae 100644
--- a/pkgs/development/python-modules/inotify-simple/default.nix
+++ b/pkgs/development/python-modules/inotify-simple/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "inotify-simple";
@@ -17,7 +21,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "inotify_simple" ];
 
   meta = with lib; {
-    description = "A simple Python wrapper around inotify";
+    description = "Simple Python wrapper around inotify";
     homepage = "https://github.com/chrisjbillington/inotify_simple";
     license = licenses.bsd2;
     maintainers = with maintainers; [ erikarvstedt ];
diff --git a/pkgs/development/python-modules/inotify/default.nix b/pkgs/development/python-modules/inotify/default.nix
index 04ca13d5ec4f2..6e8e7f0aba67e 100644
--- a/pkgs/development/python-modules/inotify/default.nix
+++ b/pkgs/development/python-modules/inotify/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nose
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  nose,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     fetchSubmodules = false;
   };
 
-  nativeCheckInputs = [
-    nose
-  ];
+  nativeCheckInputs = [ nose ];
 
   # dunno what's wrong but the module works regardless
   doCheck = false;
diff --git a/pkgs/development/python-modules/inotifyrecursive/default.nix b/pkgs/development/python-modules/inotifyrecursive/default.nix
index 63ff4ede039ae..678e45c14d20b 100644
--- a/pkgs/development/python-modules/inotifyrecursive/default.nix
+++ b/pkgs/development/python-modules/inotifyrecursive/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, inotify-simple
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  inotify-simple,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/inquirer/default.nix b/pkgs/development/python-modules/inquirer/default.nix
index ff73187938f25..63db32d65b53e 100644
--- a/pkgs/development/python-modules/inquirer/default.nix
+++ b/pkgs/development/python-modules/inquirer/default.nix
@@ -1,41 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# native
-, poetry-core
-
-# propagated
-, blessed
-, editor
-, readchar
-
-# tests
-, pytest-mock
-, pytestCheckHook
-, pexpect
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # native
+  poetry-core,
+
+  # propagated
+  blessed,
+  editor,
+  readchar,
+
+  # tests
+  pytest-mock,
+  pytestCheckHook,
+  pexpect,
 }:
 
 buildPythonPackage rec {
   pname = "inquirer";
-  version = "3.2.4";
-  format = "pyproject";
+  version = "3.3.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
-  src = fetchFromGitHub rec {
+  src = fetchFromGitHub {
     owner = "magmax";
     repo = "python-inquirer";
     rev = "refs/tags/v${version}";
-    hash = "sha256-LsZ2SYgBOKZegk7b9DwForwMA49XvIe+Z6WvI1/YscY=";
+    hash = "sha256-M4EgQ/DX00CtAXRNvXoVKVWxj1jRpnNdG4qxOv20/MI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     blessed
     editor
     readchar
@@ -47,13 +46,10 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-
-  pythonImportsCheck = [
-    "inquirer"
-  ];
+  pythonImportsCheck = [ "inquirer" ];
 
   meta = with lib; {
-    description = "A collection of common interactive command line user interfaces, based on Inquirer.js";
+    description = "Collection of common interactive command line user interfaces, based on Inquirer.js";
     homepage = "https://github.com/magmax/python-inquirer";
     changelog = "https://github.com/magmax/python-inquirer/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/inquirerpy/default.nix b/pkgs/development/python-modules/inquirerpy/default.nix
index 37d08f41512f6..315670df3f751 100644
--- a/pkgs/development/python-modules/inquirerpy/default.nix
+++ b/pkgs/development/python-modules/inquirerpy/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pfzy
-, poetry-core
-, prompt-toolkit
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pfzy,
+  poetry-core,
+  prompt-toolkit,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-Ap0xZHEU458tjm6oEN5EtDoSRlnpZ7jvDq1L7fTlQQc=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     pfzy
     prompt-toolkit
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "InquirerPy"
-  ];
+  pythonImportsCheck = [ "InquirerPy" ];
 
   disabledTestPaths = [
     # AttributeError: '_GeneratorContextManager' object has no attribute 'close'
diff --git a/pkgs/development/python-modules/inscriptis/default.nix b/pkgs/development/python-modules/inscriptis/default.nix
index 454106d28b566..b98b7fdfa07b4 100644
--- a/pkgs/development/python-modules/inscriptis/default.nix
+++ b/pkgs/development/python-modules/inscriptis/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, lxml
-, fastapi
-, httpx
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  lxml,
+  fastapi,
+  httpx,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-9KEkXcdZ7USXfyIXGDrp4p4kJTzF2q30fvOccxF1hBU=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   propagatedBuildInputs = [
     lxml
@@ -39,9 +38,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "inscriptis"
-  ];
+  pythonImportsCheck = [ "inscriptis" ];
 
   meta = with lib; {
     description = "HTML to text converter";
@@ -49,6 +46,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/weblyzard/inscriptis";
     changelog = "https://github.com/weblyzard/inscriptis/releases/tag/${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/insegel/default.nix b/pkgs/development/python-modules/insegel/default.nix
index 9fb9d9296ec2c..57f87a5a7b074 100644
--- a/pkgs/development/python-modules/insegel/default.nix
+++ b/pkgs/development/python-modules/insegel/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pygments }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pygments,
+}:
 
 buildPythonPackage rec {
   pname = "insegel";
@@ -15,13 +20,11 @@ buildPythonPackage rec {
   # No tests included
   doCheck = false;
 
-  pythonImportsCheck = [
-    "insegel"
-  ];
+  pythonImportsCheck = [ "insegel" ];
 
   meta = with lib; {
     homepage = "https://github.com/autophagy/insegel";
-    description = "A monochrome 2 column Sphinx theme";
+    description = "Monochrome 2 column Sphinx theme";
     license = licenses.mit;
     maintainers = with maintainers; [ autophagy ];
   };
diff --git a/pkgs/development/python-modules/insightface/default.nix b/pkgs/development/python-modules/insightface/default.nix
index 35d434de760f0..1199e09eae0d9 100644
--- a/pkgs/development/python-modules/insightface/default.nix
+++ b/pkgs/development/python-modules/insightface/default.nix
@@ -1,29 +1,31 @@
-{ lib
-, albumentations
-, buildPythonPackage
-, cython
-, easydict
-, fetchPypi
-, insightface
-, matplotlib
-, mxnet
-, numpy
-, onnx
-, onnxruntime
-, opencv4
-, prettytable
-, pythonOlder
-, scikit-image
-, scikit-learn
-, tensorboard
-, testers
-, tqdm
+{
+  lib,
+  albumentations,
+  buildPythonPackage,
+  cython,
+  easydict,
+  fetchPypi,
+  insightface,
+  matplotlib,
+  mxnet,
+  numpy,
+  onnx,
+  onnxruntime,
+  opencv4,
+  prettytable,
+  pythonOlder,
+  scikit-image,
+  scikit-learn,
+  tensorboard,
+  testers,
+  tqdm,
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "insightface";
   version = "0.7.3";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -32,11 +34,9 @@ buildPythonPackage rec {
     hash = "sha256-8ZH3GWEuuzcBj0GTaBRQBUTND4bm/NZ2wCPzVMZo3fc=";
   };
 
-  nativeBuildInputs = [
-    cython
-  ];
+  build-system = [ cython ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     easydict
     matplotlib
     mxnet
@@ -68,11 +68,13 @@ buildPythonPackage rec {
 
   doCheck = false; # Upstream has no tests
 
-  meta = with lib; {
+  meta = {
     description = "State-of-the-art 2D and 3D Face Analysis Project";
     mainProgram = "insightface-cli";
     homepage = "https://github.com/deepinsight/insightface";
-    license = licenses.mit;
-    maintainers = with maintainers; [ oddlama ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ oddlama ];
+    # terminate called after throwing an instance of 'onnxruntime::OnnxRuntimeException'
+    broken = stdenv.system == "aarch64-linux";
   };
 }
diff --git a/pkgs/development/python-modules/installer/default.nix b/pkgs/development/python-modules/installer/default.nix
index c26dae01c2373..64e9a3191a674 100644
--- a/pkgs/development/python-modules/installer/default.nix
+++ b/pkgs/development/python-modules/installer/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonAtLeast
-, fetchFromGitHub
-, pytestCheckHook
-, flit-core
-, installer
-, mock
+{
+  lib,
+  buildPythonPackage,
+  pythonAtLeast,
+  fetchFromGitHub,
+  pytestCheckHook,
+  flit-core,
+  installer,
+  mock,
 }:
 
 buildPythonPackage rec {
@@ -50,7 +51,7 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "A low-level library for installing a Python package from a wheel distribution";
+    description = "Low-level library for installing a Python package from a wheel distribution";
     homepage = "https://github.com/pypa/installer";
     changelog = "https://github.com/pypa/installer/blob/${src.rev}/docs/changelog.md";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/insteon-frontend-home-assistant/default.nix b/pkgs/development/python-modules/insteon-frontend-home-assistant/default.nix
index 7c8536e1466ac..946e807c44c45 100644
--- a/pkgs/development/python-modules/insteon-frontend-home-assistant/default.nix
+++ b/pkgs/development/python-modules/insteon-frontend-home-assistant/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,20 +18,16 @@ buildPythonPackage rec {
     hash = "sha256-NZwnx8tlXnsVCk4nvNjOg3cjSr2CnjqWcZG7xFTC2wA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # upstream has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "insteon_frontend"
-  ];
+  pythonImportsCheck = [ "insteon_frontend" ];
 
   meta = with lib; {
     changelog = "https://github.com/pyinsteon/insteon-panel/releases/tag/${version}";
-    description = "The Insteon frontend for Home Assistant";
+    description = "Insteon frontend for Home Assistant";
     homepage = "https://github.com/pyinsteon/insteon-panel";
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/pkgs/development/python-modules/instructor/default.nix b/pkgs/development/python-modules/instructor/default.nix
index bb36e7a8abf21..31207450761fd 100644
--- a/pkgs/development/python-modules/instructor/default.nix
+++ b/pkgs/development/python-modules/instructor/default.nix
@@ -5,6 +5,7 @@
   buildPythonPackage,
   docstring-parser,
   fetchFromGitHub,
+  jiter,
   openai,
   poetry-core,
   pydantic,
@@ -15,7 +16,6 @@
   diskcache,
   redis,
   pythonOlder,
-  pythonRelaxDepsHook,
   rich,
   tenacity,
   typer,
@@ -23,7 +23,7 @@
 
 buildPythonPackage rec {
   pname = "instructor";
-  version = "1.2.3";
+  version = "1.3.7";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -32,21 +32,22 @@ buildPythonPackage rec {
     owner = "jxnl";
     repo = "instructor";
     rev = "refs/tags/${version}";
-    hash = "sha256-LmorlFKIG7iPAK4pDbQqjxjiwB1md3u52B4u5WlqqTk=";
+    hash = "sha256-XouTXv8wNPPBKVs2mCue1o4hfHlPlq6uXBuDXiZLIHI=";
   };
 
   pythonRelaxDeps = [
     "docstring-parser"
+    "jiter"
     "pydantic"
+    "tenacity"
   ];
 
   build-system = [ poetry-core ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
-
   dependencies = [
     aiohttp
     docstring-parser
+    jiter
     openai
     pydantic
     rich
@@ -68,14 +69,14 @@ buildPythonPackage rec {
 
   disabledTests = [
     # Tests require OpenAI API key
-    "test_partial"
     "successfully"
+    "test_mode_functions_deprecation_warning"
+    "test_partial"
   ];
 
   disabledTestPaths = [
     # Tests require OpenAI API key
     "tests/test_distil.py"
-    "tests/test_new_client.py"
     "tests/llm/"
   ];
 
diff --git a/pkgs/development/python-modules/intake-parquet/default.nix b/pkgs/development/python-modules/intake-parquet/default.nix
index 809d9efcc7cac..fe6fa3b2a656d 100644
--- a/pkgs/development/python-modules/intake-parquet/default.nix
+++ b/pkgs/development/python-modules/intake-parquet/default.nix
@@ -1,12 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pandas
-, dask
-, fastparquet
-, pyarrow
-, setuptools
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dask,
+  fastparquet,
+  fetchFromGitHub,
+  pandas,
+  pyarrow,
+  pythonOlder,
+  setuptools,
+  versioneer,
 }:
 
 buildPythonPackage rec {
@@ -27,13 +29,17 @@ buildPythonPackage rec {
     # Break circular dependency
     substituteInPlace requirements.txt \
       --replace-fail "intake" ""
+
+    # Remove vendorized versioneer.py
+    rm versioneer.py
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
+    versioneer
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pandas
     dask
     fastparquet
diff --git a/pkgs/development/python-modules/intake/default.nix b/pkgs/development/python-modules/intake/default.nix
index b15e90cda27fc..ba078d1f90c37 100644
--- a/pkgs/development/python-modules/intake/default.nix
+++ b/pkgs/development/python-modules/intake/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, stdenv
-, appdirs
-, bokeh
-, buildPythonPackage
-, dask
-, entrypoints
-, fetchFromGitHub
-, fsspec
-, hvplot
-, intake-parquet
-, jinja2
-, msgpack
-, msgpack-numpy
-, pandas
-, panel
-, pyarrow
-, pytestCheckHook
-, python-snappy
-, pythonOlder
-, pyyaml
-, requests
-, setuptools
-, setuptools-scm
-, tornado
+{
+  lib,
+  stdenv,
+  appdirs,
+  bokeh,
+  buildPythonPackage,
+  dask,
+  entrypoints,
+  fetchFromGitHub,
+  fsspec,
+  hvplot,
+  intake-parquet,
+  jinja2,
+  msgpack,
+  msgpack-numpy,
+  pandas,
+  panel,
+  pyarrow,
+  pytestCheckHook,
+  python-snappy,
+  pythonOlder,
+  pyyaml,
+  requests,
+  setuptools,
+  setuptools-scm,
+  tornado,
 }:
 
 buildPythonPackage rec {
@@ -75,9 +76,7 @@ buildPythonPackage rec {
       bokeh
       panel
     ];
-    remote = [
-      requests
-    ];
+    remote = [ requests ];
   };
 
   __darwinAllowLocalNetworking = true;
@@ -101,42 +100,44 @@ buildPythonPackage rec {
     "intake/tests/test_top_level.py"
   ];
 
-  disabledTests = [
-    # Disable tests which touch network
-    "http"
-    "test_address_flag"
-    "test_dir"
-    "test_discover"
-    "test_filtered_compressed_cache"
-    "test_flatten_flag"
-    "test_get_dir"
-    "test_pagination"
-    "test_port_flag"
-    "test_read_part_compressed"
-    "test_read_partition"
-    "test_read_pattern"
-    "test_remote_arr"
-    "test_remote_cat"
-    "test_remote_env"
-    # ValueError
-    "test_datasource_python_to_dask"
-    "test_catalog_passthrough"
-    # Timing-based, flaky on darwin and possibly others
-    "test_idle_timer"
-  ] ++ lib.optionals (stdenv.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "10.13") [
-    # Flaky with older low-res mtime on darwin < 10.13 (#143987)
-    "test_second_load_timestamp"
-  ];
+  disabledTests =
+    [
+      # Disable tests which touch network
+      "http"
+      "test_address_flag"
+      "test_dir"
+      "test_discover"
+      "test_filtered_compressed_cache"
+      "test_flatten_flag"
+      "test_get_dir"
+      "test_pagination"
+      "test_port_flag"
+      "test_read_part_compressed"
+      "test_read_partition"
+      "test_read_pattern"
+      "test_remote_arr"
+      "test_remote_cat"
+      "test_remote_env"
+      # ValueError
+      "test_datasource_python_to_dask"
+      "test_catalog_passthrough"
+      # Timing-based, flaky on darwin and possibly others
+      "test_idle_timer"
+    ]
+    ++ lib.optionals
+      (stdenv.hostPlatform.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "10.13")
+      [
+        # Flaky with older low-res mtime on darwin < 10.13 (#143987)
+        "test_second_load_timestamp"
+      ];
 
-  pythonImportsCheck = [
-    "intake"
-  ];
+  pythonImportsCheck = [ "intake" ];
 
   meta = with lib; {
     description = "Data load and catalog system";
     homepage = "https://github.com/ContinuumIO/intake";
     changelog = "https://github.com/intake/intake/blob/${version}/docs/source/changelog.rst";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/intbitset/default.nix b/pkgs/development/python-modules/intbitset/default.nix
index 96e1698002f01..4c3d1d477c5a6 100644
--- a/pkgs/development/python-modules/intbitset/default.nix
+++ b/pkgs/development/python-modules/intbitset/default.nix
@@ -1,14 +1,16 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "intbitset";
   version = "3.1.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -17,19 +19,16 @@ buildPythonPackage rec {
     hash = "sha256-boPFun/aJSCqhWVCi7r4Qt63KT1mXzzYKByzklTS/3E=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  build-system = [ setuptools ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "intbitset"
-  ];
+  pythonImportsCheck = [ "intbitset" ];
 
-  meta = with lib; {
+  meta = {
     description = "C-based extension implementing fast integer bit sets";
     homepage = "https://github.com/inveniosoftware/intbitset";
     changelog = "https://github.com/inveniosoftware-contrib/intbitset/blob/v${version}/CHANGELOG.rst";
-    license = licenses.lgpl3Plus;
-    maintainers = [ ];
+    license = lib.licenses.lgpl3Plus;
+    maintainers = with lib.maintainers; [ sigmanificient ];
   };
 }
diff --git a/pkgs/development/python-modules/intelhex/default.nix b/pkgs/development/python-modules/intelhex/default.nix
index 4e25fa8793b19..7cb117943ed73 100644
--- a/pkgs/development/python-modules/intelhex/default.nix
+++ b/pkgs/development/python-modules/intelhex/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/intellifire4py/default.nix b/pkgs/development/python-modules/intellifire4py/default.nix
index ccfd6afe31253..5984654c7be32 100644
--- a/pkgs/development/python-modules/intellifire4py/default.nix
+++ b/pkgs/development/python-modules/intellifire4py/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, aenum
-, buildPythonPackage
-, fetchFromGitHub
-, aiohttp
-, aioresponses
-, poetry-core
-, pydantic
-, pytest-asyncio
-, pytest-httpx
-, pytestCheckHook
-, pythonOlder
-, rich
+{
+  lib,
+  aenum,
+  buildPythonPackage,
+  fetchFromGitHub,
+  aiohttp,
+  aioresponses,
+  poetry-core,
+  pydantic,
+  pytest-asyncio,
+  pytest-httpx,
+  pytestCheckHook,
+  pythonOlder,
+  rich,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     hash = "sha256-dMhm2gntLV7ev6UIfHFMATytZo5blTlALuh9sBirkqI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -45,9 +44,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "intellifire4py"
-  ];
+  pythonImportsCheck = [ "intellifire4py" ];
 
   meta = with lib; {
     description = "Module to read Intellifire fireplace status data";
diff --git a/pkgs/development/python-modules/intensity-normalization/default.nix b/pkgs/development/python-modules/intensity-normalization/default.nix
index 19253b17fe66c..f6c38f32cad61 100644
--- a/pkgs/development/python-modules/intensity-normalization/default.nix
+++ b/pkgs/development/python-modules/intensity-normalization/default.nix
@@ -1,20 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pytestCheckHook
-, pythonRelaxDepsHook
-, matplotlib
-, nibabel
-, numpy
-, pydicom
-, pymedio
-, scikit-fuzzy
-, scikit-image
-, scikit-learn
-, scipy
-, simpleitk
-, statsmodels
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytestCheckHook,
+  matplotlib,
+  nibabel,
+  numpy,
+  pydicom,
+  pymedio,
+  scikit-fuzzy,
+  scikit-image,
+  scikit-learn,
+  scipy,
+  simpleitk,
+  statsmodels,
 }:
 
 buildPythonPackage rec {
@@ -35,7 +35,6 @@ buildPythonPackage rec {
     substituteInPlace setup.cfg --replace "pytest-runner" ""
   '';
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
   pythonRelaxDeps = [ "nibabel" ];
 
   propagatedBuildInputs = [
@@ -52,9 +51,7 @@ buildPythonPackage rec {
     statsmodels
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
   pytestFlagsArray = [ "tests" ];
 
   pythonImportsCheck = [
@@ -64,7 +61,6 @@ buildPythonPackage rec {
     "intensity_normalization.util"
   ];
 
-
   meta = with lib; {
     homepage = "https://github.com/jcreinhold/intensity-normalization";
     description = "MRI intensity normalization tools";
diff --git a/pkgs/development/python-modules/interegular/default.nix b/pkgs/development/python-modules/interegular/default.nix
index e1f0fc79c0915..5e61db9b2b912 100644
--- a/pkgs/development/python-modules/interegular/default.nix
+++ b/pkgs/development/python-modules/interegular/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -11,12 +12,10 @@ buildPythonPackage rec {
     hash = "sha256-2baXshs0iEcROZug8DdpFLgYmc5nADJIbQ0Eg0SnZgA=";
   };
 
-  pythonImportsCheck = [
-    "interegular"
-  ];
+  pythonImportsCheck = [ "interegular" ];
 
   meta = with lib; {
-    description = "A library to check a subset of python regexes for intersections";
+    description = "Library to check a subset of python regexes for intersections";
     homepage = "https://github.com/MegaIng/interegular";
     license = licenses.mit;
     maintainers = with maintainers; [ lach ];
diff --git a/pkgs/development/python-modules/interface-meta/default.nix b/pkgs/development/python-modules/interface-meta/default.nix
index 04daece781e5e..34754618b5a5b 100644
--- a/pkgs/development/python-modules/interface-meta/default.nix
+++ b/pkgs/development/python-modules/interface-meta/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pytestCheckHook, poetry-core, poetry-dynamic-versioning }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  poetry-core,
+  poetry-dynamic-versioning,
+}:
 
 buildPythonPackage rec {
   pname = "interface-meta";
@@ -13,17 +20,11 @@ buildPythonPackage rec {
     sha256 = "0rzh11wnab33b11391vc2ynf8ncxn22b12wn46lmgkrc5mqza8hd";
   };
 
-  patches = [
-    ./0001-fix-version.patch
-  ];
+  patches = [ ./0001-fix-version.patch ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    poetry-dynamic-versioning
-  ];
+  propagatedBuildInputs = [ poetry-dynamic-versioning ];
 
   pythonImportsCheck = [ "interface_meta" ];
 
diff --git a/pkgs/development/python-modules/internetarchive/default.nix b/pkgs/development/python-modules/internetarchive/default.nix
index 11a089b376d3a..f6f93c25a7732 100644
--- a/pkgs/development/python-modules/internetarchive/default.nix
+++ b/pkgs/development/python-modules/internetarchive/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, docopt
-, fetchFromGitHub
-, pytestCheckHook
-, requests
-, jsonpatch
-, schema
-, responses
-, setuptools
-, tqdm
-, urllib3
-, pythonOlder
-, importlib-metadata
+{
+  lib,
+  buildPythonPackage,
+  docopt,
+  fetchFromGitHub,
+  pytestCheckHook,
+  requests,
+  jsonpatch,
+  schema,
+  responses,
+  setuptools,
+  tqdm,
+  urllib3,
+  pythonOlder,
+  importlib-metadata,
 }:
 
 buildPythonPackage rec {
   pname = "internetarchive";
-  version = "4.0.1";
+  version = "4.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,12 +26,10 @@ buildPythonPackage rec {
     owner = "jjjake";
     repo = "internetarchive";
     rev = "refs/tags/v${version}";
-    hash = "sha256-U6idxc5U2Bt581c/vnGgIou5+hoEJJZSPCo97MEDaW4=";
+    hash = "sha256-CqfwAKhrq4VEBU258x19JT8+ay2vOYIzVoFWjAzh3wY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     tqdm
@@ -39,9 +38,7 @@ buildPythonPackage rec {
     jsonpatch
     schema
     urllib3
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
   nativeCheckInputs = [
     responses
@@ -64,12 +61,10 @@ buildPythonPackage rec {
     "tests/cli/test_ia_download.py"
   ];
 
-  pythonImportsCheck = [
-    "internetarchive"
-  ];
+  pythonImportsCheck = [ "internetarchive" ];
 
   meta = with lib; {
-    description = "A Python and Command-Line Interface to Archive.org";
+    description = "Python and Command-Line Interface to Archive.org";
     homepage = "https://github.com/jjjake/internetarchive";
     changelog = "https://github.com/jjjake/internetarchive/blob/v${version}/HISTORY.rst";
     license = licenses.agpl3Plus;
diff --git a/pkgs/development/python-modules/interruptingcow/default.nix b/pkgs/development/python-modules/interruptingcow/default.nix
index 41744b690fd96..300b39b2d8021 100644
--- a/pkgs/development/python-modules/interruptingcow/default.nix
+++ b/pkgs/development/python-modules/interruptingcow/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 buildPythonPackage rec {
   pname = "interruptingcow";
   version = "0.8";
@@ -10,7 +14,7 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "A watchdog that interrupts long running code";
+    description = "Watchdog that interrupts long running code";
     homepage = "https://bitbucket.org/evzijst/interruptingcow";
     license = licenses.mit;
     maintainers = with maintainers; [ benley ];
diff --git a/pkgs/development/python-modules/intervaltree/default.nix b/pkgs/development/python-modules/intervaltree/default.nix
index 8e80be209b23c..eb9511c9e70ab 100644
--- a/pkgs/development/python-modules/intervaltree/default.nix
+++ b/pkgs/development/python-modules/intervaltree/default.nix
@@ -1,31 +1,36 @@
-{ lib, buildPythonPackage, fetchPypi
-, python, pytest, sortedcontainers }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
+  sortedcontainers,
+}:
 
 buildPythonPackage rec {
   version = "3.1.0";
-  format = "setuptools";
   pname = "intervaltree";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "902b1b88936918f9b2a19e0e5eb7ccb430ae45cde4f39ea4b36932920d33952d";
   };
 
-  buildInputs = [ pytest ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [ sortedcontainers ];
+  dependencies = [ sortedcontainers ];
 
-  checkPhase = ''
-    runHook preCheck
-    rm build -rf
-    ${python.interpreter} nix_run_setup test
-    runHook postCheck
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  preCheck = ''
+    rm -rf build
   '';
 
   meta = with lib; {
     description = "Editable interval tree data structure for Python 2 and 3";
-    homepage =  "https://github.com/chaimleib/intervaltree";
+    homepage = "https://github.com/chaimleib/intervaltree";
     license = [ licenses.asl20 ];
-    maintainers =  [ maintainers.bennofs ];
+    maintainers = [ maintainers.bennofs ];
   };
 }
diff --git a/pkgs/development/python-modules/into-dbus-python/default.nix b/pkgs/development/python-modules/into-dbus-python/default.nix
index b7ea90b26f9d0..004138c13bdb5 100644
--- a/pkgs/development/python-modules/into-dbus-python/default.nix
+++ b/pkgs/development/python-modules/into-dbus-python/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, dbus-signature-pyparsing
-, dbus-python
-, pytestCheckHook
-, hypothesis
-, hs-dbus-signature
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  dbus-signature-pyparsing,
+  dbus-python,
+  pytestCheckHook,
+  hypothesis,
+  hs-dbus-signature,
 }:
 
 buildPythonPackage rec {
@@ -34,7 +35,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "into_dbus_python" ];
 
   meta = with lib; {
-    description = "A transformer to dbus-python types";
+    description = "Transformer to dbus-python types";
     homepage = "https://github.com/stratis-storage/into-dbus-python";
     license = licenses.asl20;
     maintainers = with maintainers; [ nickcao ];
diff --git a/pkgs/development/python-modules/invisible-watermark/default.nix b/pkgs/development/python-modules/invisible-watermark/default.nix
index a69a0f8f85f68..445774979df72 100644
--- a/pkgs/development/python-modules/invisible-watermark/default.nix
+++ b/pkgs/development/python-modules/invisible-watermark/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, opencv4
-, torch
-, onnx
-, onnxruntime
-, pillow
-, pywavelets
-, numpy
-, callPackage
-, withOnnx ? false # Enables the rivaGan en- and decoding method
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  opencv4,
+  torch,
+  onnx,
+  onnxruntime,
+  pillow,
+  pywavelets,
+  numpy,
+  callPackage,
+  withOnnx ? false, # Enables the rivaGan en- and decoding method
 }:
 
 buildPythonPackage rec {
@@ -27,16 +28,18 @@ buildPythonPackage rec {
     hash = "sha256-6SjVpKFtiiLLU7tZ3hBQr0KT/YEQyywJj0e21/dJRzk=";
   };
 
-  propagatedBuildInputs = [
-    opencv4
-    torch
-    pillow
-    pywavelets
-    numpy
-  ] ++ lib.optionals withOnnx [
-    onnx
-    onnxruntime
-  ];
+  propagatedBuildInputs =
+    [
+      opencv4
+      torch
+      pillow
+      pywavelets
+      numpy
+    ]
+    ++ lib.optionals withOnnx [
+      onnx
+      onnxruntime
+    ];
 
   postPatch = ''
     substituteInPlace setup.py \
@@ -46,29 +49,53 @@ buildPythonPackage rec {
       'You can install it with an override: `python3Packages.invisible-watermark.override { withOnnx = true; };`.'
   '';
 
-  passthru.tests = let
-    image = "${src}/test_vectors/original.jpg";
-    methods = [ "dwtDct" "dwtDctSvd" "rivaGan" ];
-    testCases = builtins.concatMap (method: [
-      { method = method; withOnnx = true; }
-      { method = method; withOnnx = false; }
-    ]) methods;
-    createTest = { method, withOnnx }: let
-      testName = "${if withOnnx then "withOnnx" else "withoutOnnx"}-${method}";
-    # This test fails in the sandbox on aarch64-linux, see https://github.com/microsoft/onnxruntime/issues/10038
-    skipTest = stdenv.isLinux && stdenv.isAarch64 && withOnnx && method == "rivaGan";
-    in lib.optionalAttrs (!skipTest) {
-      "${testName}" = callPackage ./tests/cli.nix { inherit image method testName withOnnx; };
+  passthru.tests =
+    let
+      image = "${src}/test_vectors/original.jpg";
+      methods = [
+        "dwtDct"
+        "dwtDctSvd"
+        "rivaGan"
+      ];
+      testCases = builtins.concatMap (method: [
+        {
+          method = method;
+          withOnnx = true;
+        }
+        {
+          method = method;
+          withOnnx = false;
+        }
+      ]) methods;
+      createTest =
+        { method, withOnnx }:
+        let
+          testName = "${if withOnnx then "withOnnx" else "withoutOnnx"}-${method}";
+          # This test fails in the sandbox on aarch64-linux, see https://github.com/microsoft/onnxruntime/issues/10038
+          skipTest =
+            stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64 && withOnnx && method == "rivaGan";
+        in
+        lib.optionalAttrs (!skipTest) {
+          "${testName}" = callPackage ./tests/cli.nix {
+            inherit
+              image
+              method
+              testName
+              withOnnx
+              ;
+          };
+        };
+      allTests = builtins.map createTest testCases;
+    in
+    (lib.attrsets.mergeAttrsList allTests)
+    // {
+      python = callPackage ./tests/python { inherit image; };
     };
-    allTests = builtins.map createTest testCases;
-  in (lib.attrsets.mergeAttrsList allTests) // {
-    python = callPackage ./tests/python { inherit image; };
-  };
 
   pythonImportsCheck = [ "imwatermark" ];
 
   meta = with lib; {
-    description = "A library for creating and decoding invisible image watermarks";
+    description = "Library for creating and decoding invisible image watermarks";
     mainProgram = "invisible-watermark";
     homepage = "https://github.com/ShieldMnt/invisible-watermark";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/invisible-watermark/tests/cli.nix b/pkgs/development/python-modules/invisible-watermark/tests/cli.nix
index 9cb936465786b..a1563d67c7169 100644
--- a/pkgs/development/python-modules/invisible-watermark/tests/cli.nix
+++ b/pkgs/development/python-modules/invisible-watermark/tests/cli.nix
@@ -1,9 +1,10 @@
-{ image
-, method
-, python3Packages
-, runCommand
-, testName
-, withOnnx
+{
+  image,
+  method,
+  invisible-watermark,
+  runCommand,
+  testName,
+  withOnnx,
 }:
 
 # This file runs one test case.
@@ -18,47 +19,49 @@
 # if the message was decoded correctly.
 
 let
-  message = if method == "rivaGan" then
-    "asdf" # rivaGan only supports 32 bits
-  else
-    "fnörd1";
+  message =
+    if method == "rivaGan" then
+      "asdf" # rivaGan only supports 32 bits
+    else
+      "fnörd1";
   length = (builtins.stringLength message) * 8;
-  invisible-watermark' = python3Packages.invisible-watermark.override { inherit withOnnx; };
+  invisible-watermark' = invisible-watermark.override { inherit withOnnx; };
   expected-exit-code = if method == "rivaGan" && !withOnnx then "1" else "0";
 in
-runCommand "invisible-watermark-test-${testName}" { nativeBuildInputs = [ invisible-watermark' ]; } ''
-  set +e
-  invisible-watermark \
-    --verbose \
-    --action encode \
-    --type bytes \
-    --method '${method}' \
-    --watermark '${message}' \
-    --output output.png \
-    '${image}'
-  exit_code="$?"
-  set -euf -o pipefail
-  if [ "$exit_code" != '${expected-exit-code}' ]; then
-    echo "Exit code of invisible-watermark was $exit_code while ${expected-exit-code} was expected."
-    exit 1
-  fi
-  if [ '${expected-exit-code}' == '1' ]; then
-    echo 'invisible-watermark failed as expected.'
-    touch "$out"
-    exit 0
-  fi
-  decoded_message="$(invisible-watermark \
-                      --action decode \
-                      --type bytes \
-                      --method '${method}' \
-                      --length '${toString length}' \
-                      output.png \
-                    )"
+runCommand "invisible-watermark-test-${testName}" { nativeBuildInputs = [ invisible-watermark' ]; }
+  ''
+    set +e
+    invisible-watermark \
+      --verbose \
+      --action encode \
+      --type bytes \
+      --method '${method}' \
+      --watermark '${message}' \
+      --output output.png \
+      '${image}'
+    exit_code="$?"
+    set -euf -o pipefail
+    if [ "$exit_code" != '${expected-exit-code}' ]; then
+      echo "Exit code of invisible-watermark was $exit_code while ${expected-exit-code} was expected."
+      exit 1
+    fi
+    if [ '${expected-exit-code}' == '1' ]; then
+      echo 'invisible-watermark failed as expected.'
+      touch "$out"
+      exit 0
+    fi
+    decoded_message="$(invisible-watermark \
+                        --action decode \
+                        --type bytes \
+                        --method '${method}' \
+                        --length '${toString length}' \
+                        output.png \
+                      )"
 
-  if [ '${message}' != "$decoded_message" ]; then
-    echo "invisible-watermark did not decode the watermark correctly."
-    echo "The original message was ${message} but the decoded message was $decoded_message."
-    exit 1
-  fi
-  touch "$out"
-''
+    if [ '${message}' != "$decoded_message" ]; then
+      echo "invisible-watermark did not decode the watermark correctly."
+      echo "The original message was ${message} but the decoded message was $decoded_message."
+      exit 1
+    fi
+    touch "$out"
+  ''
diff --git a/pkgs/development/python-modules/invisible-watermark/tests/python/default.nix b/pkgs/development/python-modules/invisible-watermark/tests/python/default.nix
index 63db588673711..617dd0bb13cb0 100644
--- a/pkgs/development/python-modules/invisible-watermark/tests/python/default.nix
+++ b/pkgs/development/python-modules/invisible-watermark/tests/python/default.nix
@@ -1,9 +1,10 @@
-{ image
-, invisible-watermark
-, opencv4
-, python3
-, runCommand
-, stdenvNoCC
+{
+  image,
+  invisible-watermark,
+  opencv4,
+  python,
+  runCommand,
+  stdenvNoCC,
 }:
 
 # This test checks if the python code shown in the README works correctly
@@ -12,7 +13,10 @@ let
   message = "fnörd1";
   method = "dwtDct";
 
-  pythonWithPackages = python3.withPackages (pp: with pp; [ invisible-watermark opencv4 ]);
+  pythonWithPackages = python.withPackages (_: [
+    invisible-watermark
+    opencv4
+  ]);
   pythonInterpreter = pythonWithPackages.interpreter;
 
   encode = stdenvNoCC.mkDerivation {
diff --git a/pkgs/development/python-modules/invocations/default.nix b/pkgs/development/python-modules/invocations/default.nix
index 828c089d29318..68160afc5435c 100644
--- a/pkgs/development/python-modules/invocations/default.nix
+++ b/pkgs/development/python-modules/invocations/default.nix
@@ -1,14 +1,20 @@
-{ lib
-, buildPythonPackage
-, blessings
-, fetchFromGitHub
-, invoke
-, pythonOlder
-, releases
-, semantic-version
-, tabulate
-, tqdm
-, twine
+{
+  lib,
+  buildPythonPackage,
+  blessed,
+  fetchFromGitHub,
+  invoke,
+  pythonOlder,
+  releases,
+  semantic-version,
+  tabulate,
+  tqdm,
+  twine,
+  pytestCheckHook,
+  pytest-relaxed,
+  pytest-mock,
+  icecream,
+  pip,
 }:
 
 buildPythonPackage rec {
@@ -25,13 +31,15 @@ buildPythonPackage rec {
     hash = "sha256-JnhdcxhBNsYgDMcljtGKjOT1agujlao/66QifGuh6I0=";
   };
 
+  patches = [ ./replace-blessings-with-blessed.patch ];
+
   postPatch = ''
     substituteInPlace setup.py \
       --replace "semantic_version>=2.4,<2.7" "semantic_version"
   '';
 
   propagatedBuildInputs = [
-    blessings
+    blessed
     invoke
     releases
     semantic-version
@@ -40,11 +48,25 @@ buildPythonPackage rec {
     twine
   ];
 
-  # There's an error loading the test suite. See https://github.com/pyinvoke/invocations/issues/29.
-  doCheck = false;
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-relaxed
+    pytest-mock
+    icecream
+    pip
+  ];
+
+  pythonImportsCheck = [ "invocations" ];
+
+  disabledTests = [
+    # invoke.exceptions.UnexpectedExit
+    "autodoc_"
 
-  pythonImportsCheck = [
-    "invocations"
+    # ValueError: Call either Version('1.2.3') or Version(major=1, ...)
+    "component_state_enums_contain_human_readable_values"
+    "load_version_"
+    "prepare_"
+    "status_"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/invocations/replace-blessings-with-blessed.patch b/pkgs/development/python-modules/invocations/replace-blessings-with-blessed.patch
new file mode 100644
index 0000000000000..fe03889e85550
--- /dev/null
+++ b/pkgs/development/python-modules/invocations/replace-blessings-with-blessed.patch
@@ -0,0 +1,26 @@
+diff --git a/invocations/packaging/release.py b/invocations/packaging/release.py
+index 54322c3..81ac173 100644
+--- a/invocations/packaging/release.py
++++ b/invocations/packaging/release.py
+@@ -23,7 +23,7 @@ from shutil import rmtree
+ 
+ from invoke.vendor.lexicon import Lexicon
+ 
+-from blessings import Terminal
++from blessed import Terminal
+ from docutils.utils import Reporter
+ from enum import Enum
+ from invoke import Collection, task, Exit
+diff --git a/setup.py b/setup.py
+index 78ae28b..c78a74c 100644
+--- a/setup.py
++++ b/setup.py
+@@ -16,7 +16,7 @@ requirements = [
+     # time if missing), but that got hairy fast, and these are all
+     # pure-Python packages, so it shouldn't be a huge burden for users to
+     # obtain them.
+-    "blessings>=1.6",
++    "blessed",
+     "releases>=1.6",
+     "semantic_version>=2.4,<2.7",
+     "tabulate>=0.7.5",
diff --git a/pkgs/development/python-modules/invoke/default.nix b/pkgs/development/python-modules/invoke/default.nix
index bf23cfbbcdd56..019ebd243f2cd 100644
--- a/pkgs/development/python-modules/invoke/default.nix
+++ b/pkgs/development/python-modules/invoke/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, bash
-, buildPythonPackage
-, fetchPypi
-, stdenv
+{
+  lib,
+  bash,
+  buildPythonPackage,
+  fetchPypi,
+  stdenv,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
   # errors with vendored libs
   doCheck = false;
 
-  pythonImportsCheck = [
-    "invoke"
-  ];
+  pythonImportsCheck = [ "invoke" ];
 
   postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
     mkdir -p $out/share/{bash-completion/completions,fish/vendor_completions.d,zsh/site-functions}
@@ -38,6 +37,6 @@ buildPythonPackage rec {
     description = "Pythonic task execution";
     homepage = "https://www.pyinvoke.org/";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/iocapture/default.nix b/pkgs/development/python-modules/iocapture/default.nix
index b47c18874a922..a36a01eeeead9 100644
--- a/pkgs/development/python-modules/iocapture/default.nix
+++ b/pkgs/development/python-modules/iocapture/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flexmock
-, pytest
-, pytest-cov
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flexmock,
+  pytest,
+  pytest-cov,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -28,7 +29,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "Capture stdout, stderr easily.";
+    description = "Capture stdout, stderr easily";
     homepage = "https://github.com/oinume/iocapture";
     license = licenses.mit;
   };
diff --git a/pkgs/development/python-modules/iocextract/default.nix b/pkgs/development/python-modules/iocextract/default.nix
index fd00ff991f00a..97d587195ab04 100644
--- a/pkgs/development/python-modules/iocextract/default.nix
+++ b/pkgs/development/python-modules/iocextract/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, regex
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  regex,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -26,17 +27,11 @@ buildPythonPackage rec {
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "iocextract"
-  ];
+  pythonImportsCheck = [ "iocextract" ];
 
-  pytestFlagsArray = [
-    "tests.py"
-  ];
+  pytestFlagsArray = [ "tests.py" ];
 
   disabledTests = [
     # AssertionError: 'http://exampledotcom/test' != 'http://example.com/test'
diff --git a/pkgs/development/python-modules/iocsearcher/default.nix b/pkgs/development/python-modules/iocsearcher/default.nix
index a485e3df6219c..26d3939d1772a 100644
--- a/pkgs/development/python-modules/iocsearcher/default.nix
+++ b/pkgs/development/python-modules/iocsearcher/default.nix
@@ -1,27 +1,27 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchFromGitHub
-, base58
-, bech32
-, cashaddress
-, cbor
-, eth-hash
-, intervaltree
-, langdetect
-, lxml
-, pdfminer-six
-, phonenumbers
-, python-magic
-, readabilipy
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitHub,
+  base58,
+  bech32,
+  cashaddress,
+  cbor,
+  eth-hash,
+  intervaltree,
+  langdetect,
+  lxml,
+  pdfminer-six,
+  phonenumbers,
+  python-magic,
+  readabilipy,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "iocsearcher";
-  version = "2.3-unstable-2024-03-04";
+  version = "1.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -33,9 +33,7 @@ buildPythonPackage rec {
     hash = "sha256-SYh0+JEZa95iBznNzXut/9Vwof6VFeSlt0/g+XmMPC0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     base58
@@ -56,9 +54,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "iocsearcher"
-  ];
+  pythonImportsCheck = [ "iocsearcher" ];
 
   meta = with lib; {
     description = "Library and command line tool for extracting indicators of compromise (IOCs)";
diff --git a/pkgs/development/python-modules/iodata/default.nix b/pkgs/development/python-modules/iodata/default.nix
index 50a6a87eac865..e412d4fcbd89e 100644
--- a/pkgs/development/python-modules/iodata/default.nix
+++ b/pkgs/development/python-modules/iodata/default.nix
@@ -1,22 +1,45 @@
-{ buildPythonPackage, lib, fetchFromGitHub, numpy, scipy, attrs, cython, nose }:
+{
+  buildPythonPackage,
+  lib,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  numpy,
+  scipy,
+  attrs,
+  pytest-xdist,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "iodata";
-  version = "1.0.0a2";
-  format = "setuptools";
+  version = "1.0.0a4";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "theochem";
     repo = pname;
-    rev = version;
-    hash = "sha256-GFTCYE19Re7WLhV8eU+0i8OMp/Tsms/Xj9DRTcgjcz4=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-ld6V+/8lg4Du6+mHU5XuXXyMpWwyepXurerScg/bf2Q=";
   };
 
-  nativeBuildInputs = [ cython nose ];
-  propagatedBuildInputs = [ numpy scipy attrs ];
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    numpy
+    scipy
+    attrs
+  ];
 
   pythonImportsCheck = [ "iodata" ];
-  doCheck = false; # Requires roberto or nose and a lenghtly setup to find the cython modules
+
+  nativeCheckInputs = [
+    pytest-xdist
+    pytestCheckHook
+  ];
 
   meta = with lib; {
     description = "Python library for reading, writing, and converting computational chemistry file formats and generating input files";
diff --git a/pkgs/development/python-modules/ionhash/default.nix b/pkgs/development/python-modules/ionhash/default.nix
index 0eca4e663331a..8d99e24101f35 100644
--- a/pkgs/development/python-modules/ionhash/default.nix
+++ b/pkgs/development/python-modules/ionhash/default.nix
@@ -1,4 +1,12 @@
-{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch, amazon-ion, six, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  amazon-ion,
+  six,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "ionhash";
@@ -24,7 +32,10 @@ buildPythonPackage rec {
     substituteInPlace setup.py --replace "'pytest-runner'," ""
   '';
 
-  propagatedBuildInputs = [ amazon-ion six ];
+  propagatedBuildInputs = [
+    amazon-ion
+    six
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
@@ -35,5 +46,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/amzn/ion-hash-python";
     license = licenses.asl20;
     maintainers = [ maintainers.terlar ];
+    broken = true; # last successful build 2023-09-28
   };
 }
diff --git a/pkgs/development/python-modules/ionoscloud/default.nix b/pkgs/development/python-modules/ionoscloud/default.nix
index 02e01f194c396..a9942a37580f0 100644
--- a/pkgs/development/python-modules/ionoscloud/default.nix
+++ b/pkgs/development/python-modules/ionoscloud/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, urllib3
-, six
-, certifi
-, python-dateutil
-, asn1crypto
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  urllib3,
+  six,
+  certifi,
+  python-dateutil,
+  asn1crypto,
 }:
 
 buildPythonPackage rec {
@@ -16,25 +17,29 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    hash= "sha256-IpDhuZ8KrqT8g3UKgdEmjzKRlK1SXq1fgrTDFy/fvpU=";
+    hash = "sha256-IpDhuZ8KrqT8g3UKgdEmjzKRlK1SXq1fgrTDFy/fvpU=";
   };
 
   nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [ urllib3 six certifi python-dateutil asn1crypto ];
+  propagatedBuildInputs = [
+    urllib3
+    six
+    certifi
+    python-dateutil
+    asn1crypto
+  ];
 
   # upstream only has codecoverage tests, but no actual tests to go with them
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ionoscloud"
-  ];
+  pythonImportsCheck = [ "ionoscloud" ];
 
   meta = with lib; {
     homepage = "https://github.com/ionos-cloud/sdk-python";
     description = "Python API client for ionoscloud";
     changelog = "https://github.com/ionos-cloud/sdk-python/blob/v${version}/docs/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ hexchen ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/iopath/default.nix b/pkgs/development/python-modules/iopath/default.nix
index 0a85de0fc9ec6..53159f5a84571 100644
--- a/pkgs/development/python-modules/iopath/default.nix
+++ b/pkgs/development/python-modules/iopath/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-# build inputs
-, tqdm
-, portalocker
-, boto3
-# check inputs
-, pytestCheckHook
-, torch
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  # build inputs
+  tqdm,
+  portalocker,
+  boto3,
+  # check inputs
+  pytestCheckHook,
+  torch,
 }:
 let
   pname = "iopath";
@@ -50,16 +50,14 @@ buildPythonPackage {
     "tests/async_writes_test.py"
   ];
 
-  pythonImportsCheck = [
-    "iopath"
-  ];
+  pythonImportsCheck = [ "iopath" ];
 
   passthru.optional-dependencies = {
     aws = [ boto3 ];
   };
 
   meta = with lib; {
-    description = "A python library that provides common I/O interface across different storage backends.";
+    description = "Python library that provides common I/O interface across different storage backends";
     homepage = "https://github.com/facebookresearch/iopath";
     changelog = "https://github.com/facebookresearch/iopath/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/iotawattpy/default.nix b/pkgs/development/python-modules/iotawattpy/default.nix
index 7eca486eea0b8..d7a4be359467a 100644
--- a/pkgs/development/python-modules/iotawattpy/default.nix
+++ b/pkgs/development/python-modules/iotawattpy/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, httpx
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  httpx,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     sha256 = "1pyxm87lvd6zy0rx7r9jivk2li267r3xr0b9p6vf0v0vp9fmgsw3";
   };
 
-  propagatedBuildInputs = [
-    httpx
-  ];
+  propagatedBuildInputs = [ httpx ];
 
   # Project doesn't tag releases or ship the tests with PyPI
   # https://github.com/gtdiehl/iotawattpy/issues/14
diff --git a/pkgs/development/python-modules/iottycloud/default.nix b/pkgs/development/python-modules/iottycloud/default.nix
new file mode 100644
index 0000000000000..0f9b72bd91862
--- /dev/null
+++ b/pkgs/development/python-modules/iottycloud/default.nix
@@ -0,0 +1,41 @@
+{
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  lib,
+  pytestCheckHook,
+  requests,
+}:
+
+buildPythonPackage rec {
+  pname = "iottycloud";
+  version = "0.2.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "pburgio";
+    repo = "iottyCloud";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-EtAAUyVL7FTn0VoGmU5bU9XouMuEQUOx2t6j/wd1OEo=";
+  };
+
+  build-system = [ hatchling ];
+
+  dependencies = [ aiohttp ];
+
+  pythonImportsCheck = [ "iottycloud" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    requests
+  ];
+
+  meta = {
+    changelog = "https://github.com/pburgio/iottyCloud/releases/tag/v${version}";
+    description = "Python library to interact with iotty CloudApi";
+    homepage = "https://github.com/pburgio/iottyCloud";
+    license = lib.licenses.agpl3Only;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/ipaddr/default.nix b/pkgs/development/python-modules/ipaddr/default.nix
index 959d5c878f07d..f42decd345b38 100644
--- a/pkgs/development/python-modules/ipaddr/default.nix
+++ b/pkgs/development/python-modules/ipaddr/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "ipaddr";
diff --git a/pkgs/development/python-modules/ipadic/default.nix b/pkgs/development/python-modules/ipadic/default.nix
index bb7724a505768..2702f6888c40d 100644
--- a/pkgs/development/python-modules/ipadic/default.nix
+++ b/pkgs/development/python-modules/ipadic/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, mecab
-, setuptools-scm
-, cython
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  mecab,
+  setuptools-scm,
+  cython,
 }:
 
 buildPythonPackage rec {
@@ -23,7 +24,11 @@ buildPythonPackage rec {
   # no tests
   doCheck = false;
 
-  nativeBuildInputs = [ cython mecab setuptools-scm ];
+  nativeBuildInputs = [
+    cython
+    mecab
+    setuptools-scm
+  ];
 
   pythonImportsCheck = [ "ipadic" ];
 
diff --git a/pkgs/development/python-modules/ipdb/default.nix b/pkgs/development/python-modules/ipdb/default.nix
index 96a4274bac1ec..84123590fe1b2 100644
--- a/pkgs/development/python-modules/ipdb/default.nix
+++ b/pkgs/development/python-modules/ipdb/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, decorator
-, ipython
-, isPyPy
-, exceptiongroup
-, tomli
-, setuptools
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  decorator,
+  ipython,
+  isPyPy,
+  exceptiongroup,
+  tomli,
+  setuptools,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,28 +17,26 @@ buildPythonPackage rec {
   version = "0.13.13";
   format = "pyproject";
 
-  disabled = isPyPy;  # setupterm: could not find terminfo database
+  disabled = isPyPy; # setupterm: could not find terminfo database
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-46xgGO8FEm1EKvaAqthjAG7BnQIpBWGsiLixwLDPxyY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    ipython
-    decorator
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    exceptiongroup
-    tomli
-  ];
+  propagatedBuildInputs =
+    [
+      ipython
+      decorator
+    ]
+    ++ lib.optionals (pythonOlder "3.11") [
+      exceptiongroup
+      tomli
+    ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   preCheck = ''
     export HOME=$(mktemp -d)
@@ -50,5 +49,4 @@ buildPythonPackage rec {
     license = licenses.bsd0;
     maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/ipdbplugin/default.nix b/pkgs/development/python-modules/ipdbplugin/default.nix
deleted file mode 100644
index 1dd69b112f560..0000000000000
--- a/pkgs/development/python-modules/ipdbplugin/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, ipython
-}:
-
-buildPythonPackage rec {
-  pname = "ipdbplugin";
-  version = "1.5.0";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "cdcd6bc1e995c3c2c4971ed95f207e680aa44980b716fa43fb675ff2dcc7894f";
-  };
-
-  propagatedBuildInputs = [ nose ipython ];
-
-  meta = with lib; {
-    homepage = "https://github.com/flavioamieiro/nose-ipdb/tree/master";
-    description = "Nose plugin to use iPdb instead of Pdb when tests fail";
-    license = licenses.lgpl2;
-    maintainers = [ ];
-  };
-
-}
diff --git a/pkgs/development/python-modules/ipfshttpclient/default.nix b/pkgs/development/python-modules/ipfshttpclient/default.nix
index 1ac7fdd3cf750..e441273721725 100644
--- a/pkgs/development/python-modules/ipfshttpclient/default.nix
+++ b/pkgs/development/python-modules/ipfshttpclient/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pythonOlder
-, python
-, py-multiaddr
-, requests
-, pytestCheckHook
-, pytest-cov
-, pytest-dependency
-, pytest-localserver
-, pytest-mock
-, pytest-order
-, pytest-cid
-, mock
-, kubo
-, httpx
-, httpcore
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pythonOlder,
+  python,
+  py-multiaddr,
+  requests,
+  pytestCheckHook,
+  pytest-cov,
+  pytest-dependency,
+  pytest-localserver,
+  pytest-mock,
+  pytest-order,
+  pytest-cid,
+  mock,
+  kubo,
+  httpx,
+  httpcore,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     hash = "sha256-OmC67pN2BbuGwM43xNDKlsLhwVeUbpvfOazyIDvoMEA=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     py-multiaddr
@@ -89,9 +88,12 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "ipfshttpclient" ];
 
   meta = with lib; {
-    description = "A python client library for the IPFS API";
+    description = "Python client library for the IPFS API";
     homepage = "https://github.com/ipfs-shipyard/py-ipfs-http-client";
     license = licenses.mit;
-    maintainers = with maintainers; [ mguentner Luflosi ];
+    maintainers = with maintainers; [
+      mguentner
+      Luflosi
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/iptools/default.nix b/pkgs/development/python-modules/iptools/default.nix
index fe400465382bc..c3d14b161c02d 100644
--- a/pkgs/development/python-modules/iptools/default.nix
+++ b/pkgs/development/python-modules/iptools/default.nix
@@ -1,25 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   version = "0.7.0";
-  format = "setuptools";
   pname = "iptools";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1sp2v76qqsgqjk0vqfbm2s4sc4mi0gkkpzjnvwih3ymmidilz2hi";
+  src = fetchFromGitHub {
+    owner = "bd808";
+    repo = "python-iptools";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-340Wc4QGwUqEEANM5EQzFaXxIWVf2fDr4qfCuxNEVBQ=";
   };
 
-  buildInputs = [ nose ];
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "iptools" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pytestFlagsArray = [ "tests/iptools/iptools_test.py" ];
 
   meta = with lib; {
     description = "Utilities for manipulating IP addresses including a class that can be used to include CIDR network blocks in Django's INTERNAL_IPS setting";
-    homepage = "https://pypi.python.org/pypi/iptools";
+    homepage = "https://github.com/bd808/python-iptools";
     license = licenses.bsd0;
   };
-
 }
diff --git a/pkgs/development/python-modules/ipwhl/default.nix b/pkgs/development/python-modules/ipwhl/default.nix
index 6e6d0e21ef02d..c7f2f621a2f69 100644
--- a/pkgs/development/python-modules/ipwhl/default.nix
+++ b/pkgs/development/python-modules/ipwhl/default.nix
@@ -1,5 +1,13 @@
-{ lib, buildPythonPackage, pythonOlder, fetchFromSourcehut
-, kubo, packaging, tomli, flit-core }:
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromSourcehut,
+  kubo,
+  packaging,
+  tomli,
+  flit-core,
+}:
 
 buildPythonPackage rec {
   pname = "ipwhl";
@@ -16,7 +24,10 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [ flit-core ];
   buildInputs = [ kubo ];
-  propagatedBuildInputs = [ packaging tomli ];
+  propagatedBuildInputs = [
+    packaging
+    tomli
+  ];
   doCheck = false; # there's no test
   pythonImportsCheck = [ "ipwhl" ];
 
diff --git a/pkgs/development/python-modules/ipwhois/default.nix b/pkgs/development/python-modules/ipwhois/default.nix
index c6e50535bad40..ea8fa078833db 100644
--- a/pkgs/development/python-modules/ipwhois/default.nix
+++ b/pkgs/development/python-modules/ipwhois/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, dnspython
-, fetchFromGitHub
-, fetchpatch
-, iana-etc
-, libredirect
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  dnspython,
+  fetchFromGitHub,
+  fetchpatch,
+  iana-etc,
+  libredirect,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -37,28 +37,19 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  pythonRelaxDeps = [
-    "dnspython"
-  ];
+  pythonRelaxDeps = [ "dnspython" ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
-  propagatedBuildInputs = [
-    dnspython
-  ];
+  propagatedBuildInputs = [ dnspython ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ipwhois"
-  ];
+  pythonImportsCheck = [ "ipwhois" ];
 
-  preCheck = lib.optionalString stdenv.isLinux ''
+  preCheck = lib.optionalString stdenv.hostPlatform.isLinux ''
     echo "nameserver 127.0.0.1" > resolv.conf
     export NIX_REDIRECTS=/etc/protocols=${iana-etc}/etc/protocols:/etc/resolv.conf=$(realpath resolv.conf) \
       LD_PRELOAD=${libredirect}/lib/libredirect.so
diff --git a/pkgs/development/python-modules/ipy/default.nix b/pkgs/development/python-modules/ipy/default.nix
index 8a2f64ce3638b..5a5876b8b2be3 100644
--- a/pkgs/development/python-modules/ipy/default.nix
+++ b/pkgs/development/python-modules/ipy/default.nix
@@ -1,21 +1,27 @@
-{ lib, buildPythonPackage, fetchPypi, nose }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "ipy";
   version = "1.01";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     pname = "IPy";
     inherit version;
-    sha256 = "edeca741dea2d54aca568fa23740288c3fe86c0f3ea700344571e9ef14a7cc1a";
+    hash = "sha256-7eynQd6i1UrKVo+iN0AojD/obA8+pwA0RXHp7xSnzBo=";
   };
 
-  nativeCheckInputs = [ nose ];
+  build-system = [ setuptools ];
 
-  checkPhase = ''
-    nosetests -e fuzz
-  '';
+  pythonImportsCheck = [ "IPy" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Class and tools for handling of IPv4 and IPv6 addresses and networks";
diff --git a/pkgs/development/python-modules/ipycanvas/default.nix b/pkgs/development/python-modules/ipycanvas/default.nix
index 2222c0bdad0d3..2a0e06c9ec025 100644
--- a/pkgs/development/python-modules/ipycanvas/default.nix
+++ b/pkgs/development/python-modules/ipycanvas/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, hatchling
-, ipywidgets
-, numpy
-, pillow
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  hatchling,
+  ipywidgets,
+  numpy,
+  pillow,
 }:
 
 buildPythonPackage rec {
   pname = "ipycanvas";
-  version = "0.13.2";
+  version = "0.13.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Ujh9nYf2WVXzlVL7eSfEReXl5JN9hTgU2RDL6O+g+3k=";
+    hash = "sha256-ToZ8UJsB9cTPwAn32SHjLloSoCmshW54wE/xW2VpLEo=";
   };
 
   # We relax dependencies here instead of pulling in a patch because upstream
@@ -29,15 +30,17 @@ buildPythonPackage rec {
       --replace-fail '"jupyterlab>=3,<5",' "" \
   '';
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   env.HATCH_BUILD_NO_HOOKS = true;
 
-  dependencies = [ ipywidgets numpy pillow ];
+  dependencies = [
+    ipywidgets
+    numpy
+    pillow
+  ];
 
-  doCheck = false;  # tests are in Typescript and require `npx` and `chromium`
+  doCheck = false; # tests are in Typescript and require `npx` and `chromium`
   pythonImportsCheck = [ "ipycanvas" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/ipydatawidgets/default.nix b/pkgs/development/python-modules/ipydatawidgets/default.nix
index e6f68a111ba8c..cacce82794b83 100644
--- a/pkgs/development/python-modules/ipydatawidgets/default.nix
+++ b/pkgs/development/python-modules/ipydatawidgets/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, pytest
-, pytest-cov
-, nbval
-, jupyter-packaging
-, ipywidgets
-, numpy
-, six
-, traittypes
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  pytestCheckHook,
+  nbval,
+  jupyter-packaging,
+  ipywidgets,
+  numpy,
+  six,
+  traittypes,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-OU8kiVdlh8/XVTd6CaBn9GytIggZZQkgIf0avL54Uqg=";
   };
 
-  nativeBuildInputs = [
-    jupyter-packaging
-  ];
+  nativeBuildInputs = [ jupyter-packaging ];
 
   setupPyBuildFlags = [ "--skip-npm" ];
 
@@ -37,9 +35,10 @@ buildPythonPackage rec {
     traittypes
   ];
 
-  nativeCheckInputs = [ pytest pytest-cov nbval ];
-
-  checkPhase = "pytest ipydatawidgets/tests";
+  nativeCheckInputs = [
+    pytestCheckHook
+    nbval
+  ];
 
   meta = {
     description = "Widgets to help facilitate reuse of large datasets across different widgets";
diff --git a/pkgs/development/python-modules/ipykernel/default.nix b/pkgs/development/python-modules/ipykernel/default.nix
index 394974103537c..4da948088c9a3 100644
--- a/pkgs/development/python-modules/ipykernel/default.nix
+++ b/pkgs/development/python-modules/ipykernel/default.nix
@@ -1,49 +1,47 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, callPackage
-, fetchPypi
-, hatchling
-, pythonOlder
-, appnope
-, comm
-, debugpy
-, ipython
-, jupyter-client
-, jupyter-core
-, matplotlib-inline
-, nest-asyncio
-, packaging
-, psutil
-, pyzmq
-, tornado
-, traitlets
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  callPackage,
+  fetchPypi,
+  hatchling,
+  pythonOlder,
+  appnope,
+  comm,
+  ipython,
+  jupyter-client,
+  jupyter-core,
+  matplotlib-inline,
+  nest-asyncio,
+  packaging,
+  psutil,
+  pyzmq,
+  tornado,
+  traitlets,
+
+  # Reverse dependency
+  sage,
 }:
 
 buildPythonPackage rec {
   pname = "ipykernel";
-  version = "6.29.4";
+  version = "6.29.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-PUQHAGD5R1rCCSt2ASP63xBdLiSTwkhItmkafE9Cr1w=";
+    hash = "sha256-8JOiLEpA+IKPjjMKnCl8uT3KsTvZZ43tbejlz4HFYhU=";
   };
 
   # debugpy is optional, see https://github.com/ipython/ipykernel/pull/767
-  postPatch = ''
-    sed -i "/debugpy/d" pyproject.toml
-  '';
+  pythonRemoveDeps = [ "debugpy" ];
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     comm
-    debugpy
     ipython
     jupyter-client
     jupyter-core
@@ -54,15 +52,14 @@ buildPythonPackage rec {
     pyzmq
     tornado
     traitlets
-  ] ++ lib.optionals stdenv.isDarwin [
-    appnope
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ appnope ];
 
   # check in passthru.tests.pytest to escape infinite recursion with ipyparallel
   doCheck = false;
 
   passthru.tests = {
     pytest = callPackage ./tests.nix { };
+    inherit sage;
   };
 
   meta = {
diff --git a/pkgs/development/python-modules/ipykernel/tests.nix b/pkgs/development/python-modules/ipykernel/tests.nix
index 0de6d2feb4aef..89ac0be2d3d60 100644
--- a/pkgs/development/python-modules/ipykernel/tests.nix
+++ b/pkgs/development/python-modules/ipykernel/tests.nix
@@ -1,14 +1,15 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, flaky
-, ipykernel
-, ipyparallel
-, pre-commit
-, pytestCheckHook
-, pytest-asyncio
-, pytest-timeout
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  flaky,
+  ipykernel,
+  ipyparallel,
+  pre-commit,
+  pytestCheckHook,
+  pytest-asyncio,
+  pytest-timeout,
 }:
 
 buildPythonPackage {
@@ -33,35 +34,41 @@ buildPythonPackage {
     export HOME=$(mktemp -d)
   '';
 
-  disabledTests = [ # The follwing three tests fail for unclear reasons.
-    # pytest.PytestUnhandledThreadExceptionWarning: Exception in thread Thread-8
-    "test_asyncio_interrupt"
+  disabledTests =
+    [
+      # The follwing three tests fail for unclear reasons.
+      # pytest.PytestUnhandledThreadExceptionWarning: Exception in thread Thread-8
+      "test_asyncio_interrupt"
 
-    # DeprecationWarning: Passing unrecognized arguments to super(IPythonKernel)
-    "test_embed_kernel_func"
+      # DeprecationWarning: Passing unrecognized arguments to super(IPythonKernel)
+      "test_embed_kernel_func"
 
-    # traitlets.config.configurable.MultipleInstanceError: An incompatible siblin...
-    "test_install_kernelspec"
-  ] ++ lib.optionals stdenv.isDarwin ([
-    # see https://github.com/NixOS/nixpkgs/issues/76197
-    "test_subprocess_print"
-    "test_subprocess_error"
-    "test_ipython_start_kernel_no_userns"
+      # traitlets.config.configurable.MultipleInstanceError: An incompatible siblin...
+      "test_install_kernelspec"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin (
+      [
+        # see https://github.com/NixOS/nixpkgs/issues/76197
+        "test_subprocess_print"
+        "test_subprocess_error"
+        "test_ipython_start_kernel_no_userns"
 
-    # https://github.com/ipython/ipykernel/issues/506
-    "test_unc_paths"
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    # flaky test https://github.com/ipython/ipykernel/issues/485
-    "test_shutdown"
+        # https://github.com/ipython/ipykernel/issues/506
+        "test_unc_paths"
+      ]
+      ++ lib.optionals (pythonOlder "3.8") [
+        # flaky test https://github.com/ipython/ipykernel/issues/485
+        "test_shutdown"
 
-    # test regression https://github.com/ipython/ipykernel/issues/486
-    "test_sys_path_profile_dir"
-    "test_save_history"
-    "test_help_output"
-    "test_write_kernel_spec"
-    "test_ipython_start_kernel_userns"
-    "ZMQDisplayPublisherTests"
-  ]);
+        # test regression https://github.com/ipython/ipykernel/issues/486
+        "test_sys_path_profile_dir"
+        "test_save_history"
+        "test_help_output"
+        "test_write_kernel_spec"
+        "test_ipython_start_kernel_userns"
+        "ZMQDisplayPublisherTests"
+      ]
+    );
 
   # Some of the tests use localhost networking.
   __darwinAllowLocalNetworking = true;
diff --git a/pkgs/development/python-modules/ipymarkup/default.nix b/pkgs/development/python-modules/ipymarkup/default.nix
index a2698771ab22e..10dccf3f262a9 100644
--- a/pkgs/development/python-modules/ipymarkup/default.nix
+++ b/pkgs/development/python-modules/ipymarkup/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, intervaltree
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  intervaltree,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/ipympl/default.nix b/pkgs/development/python-modules/ipympl/default.nix
index f461659c6500b..f9905bdfc4461 100644
--- a/pkgs/development/python-modules/ipympl/default.nix
+++ b/pkgs/development/python-modules/ipympl/default.nix
@@ -1,26 +1,29 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, ipykernel
-, ipython-genutils
-, ipywidgets
-, matplotlib
-, numpy
-, pillow
-, traitlets
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  ipykernel,
+  ipython-genutils,
+  ipywidgets,
+  matplotlib,
+  numpy,
+  pillow,
+  traitlets,
 }:
 
 buildPythonPackage rec {
   pname = "ipympl";
-  version = "0.9.3";
+  version = "0.9.4";
   format = "wheel";
 
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version format;
-    hash = "sha256-0RPNVYkbr+myfvmbbdERqHvra7KuVQxAQpInIQO+gBM=";
+    hash = "sha256-WwwIxvT26mVbpYI5NjRXwQ+5IVV/UDjBpG20RX1taw4=";
+    dist = "py3";
+    python = "py3";
   };
 
   propagatedBuildInputs = [
@@ -35,12 +38,18 @@ buildPythonPackage rec {
 
   # There are no unit tests in repository
   doCheck = false;
-  pythonImportsCheck = [ "ipympl" "ipympl.backend_nbagg" ];
+  pythonImportsCheck = [
+    "ipympl"
+    "ipympl.backend_nbagg"
+  ];
 
   meta = with lib; {
     description = "Matplotlib Jupyter Extension";
     homepage = "https://github.com/matplotlib/jupyter-matplotlib";
-    maintainers = with maintainers; [ jluttine fabiangd ];
+    maintainers = with maintainers; [
+      jluttine
+      fabiangd
+    ];
     license = licenses.bsd3;
   };
 }
diff --git a/pkgs/development/python-modules/ipynbname/default.nix b/pkgs/development/python-modules/ipynbname/default.nix
index 03a27ec19d8cc..24e8f73930989 100644
--- a/pkgs/development/python-modules/ipynbname/default.nix
+++ b/pkgs/development/python-modules/ipynbname/default.nix
@@ -1,22 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, ipykernel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  ipykernel,
 }:
 
 buildPythonPackage rec {
   pname = "ipynbname";
-  version = "2023.2.0.0";
-  format = "setuptools";
+  version = "2024.1.0.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Riu915VmJIdtxOqB+nkoRas4cOREyh9res2uo32Mnr8=";
+    hash = "sha256-HTxpze6Kl4FPRWpyBOnMGVtLu0ueRcvnV3lrFiST9gY=";
   };
 
-  propagatedBuildInputs = [
-    ipykernel
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ ipykernel ];
 
   pythonImportsCheck = [ "ipynbname" ];
 
diff --git a/pkgs/development/python-modules/ipyniivue/default.nix b/pkgs/development/python-modules/ipyniivue/default.nix
index 14667b0942ed4..52bb55afff106 100644
--- a/pkgs/development/python-modules/ipyniivue/default.nix
+++ b/pkgs/development/python-modules/ipyniivue/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, hatchling
-, hatch-vcs
-, anywidget
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  hatchling,
+  hatch-vcs,
+  anywidget,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/ipyparallel/default.nix b/pkgs/development/python-modules/ipyparallel/default.nix
index 9548ab254bec1..90a1aa3971a6d 100644
--- a/pkgs/development/python-modules/ipyparallel/default.nix
+++ b/pkgs/development/python-modules/ipyparallel/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, decorator
-, entrypoints
-, fetchPypi
-, hatchling
-, ipykernel
-, ipython
-, jupyter-client
-, psutil
-, python-dateutil
-, pythonOlder
-, pyzmq
-, tornado
-, tqdm
-, traitlets
+{
+  lib,
+  buildPythonPackage,
+  decorator,
+  entrypoints,
+  fetchPypi,
+  hatchling,
+  ipykernel,
+  ipython,
+  jupyter-client,
+  psutil,
+  python-dateutil,
+  pythonOlder,
+  pyzmq,
+  tornado,
+  tqdm,
+  traitlets,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
       --replace '"jupyterlab==4.*",' ""
   '';
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   dependencies = [
     decorator
@@ -57,11 +56,9 @@ buildPythonPackage rec {
   # Requires access to cluster
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ipyparallel"
-  ];
+  pythonImportsCheck = [ "ipyparallel" ];
 
-  meta = with lib;{
+  meta = with lib; {
     description = "Interactive Parallel Computing with IPython";
     homepage = "https://ipyparallel.readthedocs.io/";
     changelog = "https://github.com/ipython/ipyparallel/blob/${version}/docs/source/changelog.md";
diff --git a/pkgs/development/python-modules/ipytablewidgets/default.nix b/pkgs/development/python-modules/ipytablewidgets/default.nix
index 4aad3219eb52b..0f54bb3105678 100644
--- a/pkgs/development/python-modules/ipytablewidgets/default.nix
+++ b/pkgs/development/python-modules/ipytablewidgets/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, ipywidgets
-, jupyter-packaging
-, jupyterlab
-, lz4
-, numpy
-, pandas
-, setuptools
-, traitlets
-, traittypes
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  ipywidgets,
+  jupyter-packaging,
+  jupyterlab,
+  lz4,
+  numpy,
+  pandas,
+  setuptools,
+  traitlets,
+  traittypes,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -52,9 +53,7 @@ buildPythonPackage rec {
     traittypes
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "ipytablewidgets" ];
 
diff --git a/pkgs/development/python-modules/ipython-genutils/default.nix b/pkgs/development/python-modules/ipython-genutils/default.nix
index 4e8487f3f2c46..980e828c44a54 100644
--- a/pkgs/development/python-modules/ipython-genutils/default.nix
+++ b/pkgs/development/python-modules/ipython-genutils/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, nose
-, pytestCheckHook
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -12,33 +12,25 @@ buildPythonPackage rec {
   version = "0.2.0";
   pyproject = true;
 
-  # uses the imp module, upstream says "DO NOT USE"
-  disabled = pythonAtLeast "3.12";
-
   src = fetchPypi {
     pname = "ipython_genutils";
     inherit version;
     hash = "sha256-6y4RbnXs751NIo/cZq9UJpr6JqtEYwQuM3hbiHxii6g=";
   };
 
-  nativeBuildInputs = [
-    setuptools
+  patches = [
+    (fetchpatch {
+      name = "ipython_genutils-denose.patch";
+      url = "https://build.opensuse.org/public/source/devel:languages:python:jupyter/python-ipython_genutils/denose.patch?rev=9";
+      hash = "sha256-At0aq6rLw/L64Own069m0p/WQm7iDa24fm0SPLLRBdE=";
+    })
   ];
 
-  nativeCheckInputs = [
-    nose
-    pytestCheckHook
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  preCheck = ''
-    substituteInPlace ipython_genutils/tests/test_path.py \
-      --replace "setUp" "setup_method" \
-      --replace "tearDown" "teardown_method"
-  '';
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ipython_genutils"
-  ];
+  pythonImportsCheck = [ "ipython_genutils" ];
 
   meta = {
     description = "Vestigial utilities from IPython";
diff --git a/pkgs/development/python-modules/ipython-sql/default.nix b/pkgs/development/python-modules/ipython-sql/default.nix
index a87c359c967a0..a65eac31eb3c4 100644
--- a/pkgs/development/python-modules/ipython-sql/default.nix
+++ b/pkgs/development/python-modules/ipython-sql/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, ipython
-, ipython-genutils
-, prettytable
-, sqlalchemy
-, sqlparse
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  ipython,
+  ipython-genutils,
+  prettytable,
+  sqlalchemy,
+  sqlparse,
 }:
 buildPythonPackage rec {
   pname = "ipython-sql";
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-PbPOf5qV369Dh2+oCxa9u5oE3guhIELKsT6fWW/P/b4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     ipython
@@ -39,7 +38,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "sql" ];
 
   meta = with lib; {
-    description = "Introduces a %sql (or %%sql) magic.";
+    description = "Introduces a %sql (or %%sql) magic";
     homepage = "https://github.com/catherinedevlin/ipython-sql";
     license = licenses.mit;
     maintainers = with maintainers; [ cpcloud ];
diff --git a/pkgs/development/python-modules/ipython/default.nix b/pkgs/development/python-modules/ipython/default.nix
index 7a10725f24515..077ea0e4ac10d 100644
--- a/pkgs/development/python-modules/ipython/default.nix
+++ b/pkgs/development/python-modules/ipython/default.nix
@@ -1,70 +1,71 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-
-# Build dependencies
-, setuptools
-
-# Runtime dependencies
-, decorator
-, exceptiongroup
-, jedi
-, matplotlib-inline
-, pexpect
-, prompt-toolkit
-, pygments
-, stack-data
-, traitlets
-, typing-extensions
-
-# Optional dependencies
-, ipykernel
-, ipyparallel
-, ipywidgets
-, matplotlib
-, nbconvert
-, nbformat
-, notebook
-, qtconsole
-
-# Test dependencies
-, pickleshare
-, pytest-asyncio
-, pytest7CheckHook
-, testpath
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+
+  # Build dependencies
+  setuptools,
+
+  # Runtime dependencies
+  decorator,
+  exceptiongroup,
+  jedi,
+  matplotlib-inline,
+  pexpect,
+  prompt-toolkit,
+  pygments,
+  stack-data,
+  traitlets,
+  typing-extensions,
+
+  # Optional dependencies
+  ipykernel,
+  ipyparallel,
+  ipywidgets,
+  matplotlib,
+  nbconvert,
+  nbformat,
+  notebook,
+  qtconsole,
+
+  # Reverse dependency
+  sage,
+
+  # Test dependencies
+  pickleshare,
+  pytest-asyncio,
+  pytestCheckHook,
+  testpath,
 }:
 
 buildPythonPackage rec {
   pname = "ipython";
-  version = "8.23.0";
+  version = "8.26.0";
   pyproject = true;
   disabled = pythonOlder "3.10";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-dGjtr09t4+G5EuV/ZsJB5v08cJny7CE24jnhQugAJ00=";
+    hash = "sha256-HOwPu6hASvE/rOvoPQRDanQ0x0AOWfR6z0Z8ZKvQlWw=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    decorator
-    jedi
-    matplotlib-inline
-    pexpect
-    prompt-toolkit
-    pygments
-    stack-data
-    traitlets
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    exceptiongroup
-  ] ++ lib.optionals (pythonOlder "3.12") [
-    typing-extensions
-  ];
+  dependencies =
+    [
+      decorator
+      jedi
+      matplotlib-inline
+      pexpect
+      prompt-toolkit
+      pygments
+      stack-data
+      traitlets
+    ]
+    ++ lib.optionals (pythonOlder "3.11") [ exceptiongroup ]
+    ++ lib.optionals (pythonOlder "3.12") [ typing-extensions ];
 
   optional-dependencies = {
     kernel = [ ipykernel ];
@@ -79,32 +80,36 @@ buildPythonPackage rec {
     matplotlib = [ matplotlib ];
   };
 
-  pythonImportsCheck = [
-    "IPython"
-  ];
+  pythonImportsCheck = [ "IPython" ];
 
   preCheck = ''
     export HOME=$TMPDIR
 
     # doctests try to fetch an image from the internet
     substituteInPlace pyproject.toml \
-      --replace '"--ipdoctest-modules",' '"--ipdoctest-modules", "--ignore=IPython/core/display.py",'
+      --replace-fail '"--ipdoctest-modules",' '"--ipdoctest-modules", "--ignore=IPython/core/display.py",'
   '';
 
   nativeCheckInputs = [
     pickleshare
     pytest-asyncio
-    pytest7CheckHook
+    pytestCheckHook
     testpath
   ];
 
-  disabledTests = [
-    # UnboundLocalError: local variable 'child' referenced before assignment
-    "test_system_interrupt"
-  ] ++ lib.optionals (stdenv.isDarwin) [
-    # FileNotFoundError: [Errno 2] No such file or directory: 'pbpaste'
-    "test_clipboard_get"
-  ];
+  disabledTests =
+    [
+      # UnboundLocalError: local variable 'child' referenced before assignment
+      "test_system_interrupt"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin) [
+      # FileNotFoundError: [Errno 2] No such file or directory: 'pbpaste'
+      "test_clipboard_get"
+    ];
+
+  passthru.tests = {
+    inherit sage;
+  };
 
   meta = with lib; {
     description = "IPython: Productive Interactive Computing";
@@ -112,6 +117,6 @@ buildPythonPackage rec {
     homepage = "https://ipython.org/";
     changelog = "https://github.com/ipython/ipython/blob/${version}/docs/source/whatsnew/version${lib.versions.major version}.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ bjornfor ];
+    maintainers = with maintainers; [ bjornfor ] ++ teams.jupyter.members;
   };
 }
diff --git a/pkgs/development/python-modules/ipyvue/default.nix b/pkgs/development/python-modules/ipyvue/default.nix
index 2be0ddfe80755..7ab3a9170b185 100644
--- a/pkgs/development/python-modules/ipyvue/default.nix
+++ b/pkgs/development/python-modules/ipyvue/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, isPy27
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
   # Python Inputs
-, ipywidgets
+  setuptools,
+  ipywidgets,
 }:
 
 buildPythonPackage rec {
   pname = "ipyvue";
-  version = "1.11.0";
-  format = "setuptools";
-
-  disabled = isPy27;
+  version = "1.11.1";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ez2ygBvgU12FX/+qDkARlizq50rEgZYp4UH5Sx4E2QA=";
+    hash = "sha256-AwgE/5GgRK0/oHrjTjlSo9IxmDdnhDSqqZrkiLp0mls=";
   };
 
-  propagatedBuildInputs = [ ipywidgets ];
+  build-system = [ setuptools ];
+
+  dependencies = [ ipywidgets ];
 
-  doCheck = false;  # No tests in package or GitHub
+  doCheck = false; # No tests in package or GitHub
   pythonImportsCheck = [ "ipyvue" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/ipyvuetify/default.nix b/pkgs/development/python-modules/ipyvuetify/default.nix
index cd2a597d6c171..85a1b016ac062 100644
--- a/pkgs/development/python-modules/ipyvuetify/default.nix
+++ b/pkgs/development/python-modules/ipyvuetify/default.nix
@@ -1,52 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
   # Python Inputs
-, jupyter-packaging
-, jupyterlab
-, setuptools
-, wheel
-, ipyvue
+  setuptools,
+  ipyvue,
 }:
 
 buildPythonPackage rec {
   pname = "ipyvuetify";
-  version = "1.9.4";
+  version = "1.10.0";
   pyproject = true;
 
   # GitHub version tries to run npm (Node JS)
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-wpwfN68wpj2+lLb4w0erAZYa7OrbVhNfGMv0635oiVs=";
+    hash = "sha256-h97mqq3zFu4n7Ymnmz08P14PLltjjaBoFzYEhTJUWsE=";
   };
 
   # drop pynpm which tries to install node_modules
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace-fail "jupyter_packaging~=0.7.9" "jupyter_packaging" \
-      --replace-fail "jupyterlab~=3.0" "jupyterlab" \
+      --replace-fail '"jupyterlab~=4.0",' "" \
       --replace-fail '"pynpm"' ""
-
-    substituteInPlace setup.py \
-      --replace-fail "from pynpm import NPMPackage" "" \
-      --replace-fail "from generate_source import generate_source" "" \
-      --replace-fail 'setup(cmdclass={"egg_info": js_prerelease(egg_info)})' 'setup()'
   '';
 
-  nativeBuildInputs = [
-    jupyter-packaging
-    jupyterlab
-    setuptools
-    wheel
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [ ipyvue ];
+  dependencies = [ ipyvue ];
 
-  doCheck = false;  # no tests on PyPi/GitHub
+  doCheck = false; # no tests on PyPi/GitHub
   pythonImportsCheck = [ "ipyvuetify" ];
 
   meta = with lib; {
-    description = "Jupyter widgets based on Vuetify UI Components.";
+    description = "Jupyter widgets based on Vuetify UI Components";
     homepage = "https://github.com/mariobuikhuizen/ipyvuetify";
     license = licenses.mit;
     maintainers = with maintainers; [ drewrisinger ];
diff --git a/pkgs/development/python-modules/ipywidgets/default.nix b/pkgs/development/python-modules/ipywidgets/default.nix
index 69468ec28f2f4..e21b5ac8bbf02 100644
--- a/pkgs/development/python-modules/ipywidgets/default.nix
+++ b/pkgs/development/python-modules/ipywidgets/default.nix
@@ -1,35 +1,32 @@
-{ buildPythonPackage
-, fetchPypi
-, setuptools
-, wheel
-, comm
-, ipykernel
-, ipython
-, jsonschema
-, jupyterlab-widgets
-, lib
-, pytest7CheckHook
-, pytz
-, traitlets
-, widgetsnbextension
+{
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  comm,
+  ipykernel,
+  ipython,
+  jsonschema,
+  jupyterlab-widgets,
+  lib,
+  pytestCheckHook,
+  pytz,
+  traitlets,
+  widgetsnbextension,
 }:
 
 buildPythonPackage rec {
   pname = "ipywidgets";
-  version = "8.1.2";
+  version = "8.1.5";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-0Lm0Hkm66SaoZuYTo5sPAJd0XSufHz3UBmQbSlfsQsk=";
+    hash = "sha256-hw5DsaNWVqgMGMlQO78tFoAtsctIfuxvqyfWgzgd3hc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     comm
     ipython
     jupyterlab-widgets
@@ -40,7 +37,7 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     ipykernel
     jsonschema
-    pytest7CheckHook
+    pytestCheckHook
     pytz
   ];
 
diff --git a/pkgs/development/python-modules/ipyxact/default.nix b/pkgs/development/python-modules/ipyxact/default.nix
index 5cf7bfa9b2e69..803ed5378cb49 100644
--- a/pkgs/development/python-modules/ipyxact/default.nix
+++ b/pkgs/development/python-modules/ipyxact/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, pyyaml
-, six
-, lxml
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pyyaml,
+  six,
+  lxml,
 }:
 
 buildPythonPackage rec {
@@ -12,7 +13,10 @@ buildPythonPackage rec {
   format = "setuptools";
 
   propagatedBuildInputs = [ pyyaml ];
-  checkInputs = [ six lxml ];
+  checkInputs = [
+    six
+    lxml
+  ];
 
   src = fetchFromGitHub {
     owner = "olofk";
diff --git a/pkgs/development/python-modules/irc/default.nix b/pkgs/development/python-modules/irc/default.nix
index 4e724207a26f4..c7408868ad916 100644
--- a/pkgs/development/python-modules/irc/default.nix
+++ b/pkgs/development/python-modules/irc/default.nix
@@ -1,32 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jaraco-collections
-, jaraco-itertools
-, jaraco-logging
-, jaraco-stream
-, jaraco-text
-, pytestCheckHook
-, pythonOlder
-, pytz
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jaraco-collections,
+  jaraco-itertools,
+  jaraco-logging,
+  jaraco-stream,
+  jaraco-text,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "irc";
-  version = "20.4.0";
+  version = "20.4.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-fSUX9VZta/Oqhdf5jHdYth8NY+6RW/2fb1ZxOXNmRPk=";
+    hash = "sha256-dXguOB679BBEP3kU/XTKF/vcRBTRTUjaVhSZ6wlY0AI=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     jaraco-collections
@@ -37,19 +36,15 @@ buildPythonPackage rec {
     pytz
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "irc"
-  ];
+  pythonImportsCheck = [ "irc" ];
 
   meta = with lib; {
     description = "IRC (Internet Relay Chat) protocol library for Python";
     homepage = "https://github.com/jaraco/irc";
     changelog = "https://github.com/jaraco/irc/blob/v${version}/NEWS.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ircrobots/default.nix b/pkgs/development/python-modules/ircrobots/default.nix
index 76fe922fa0c6c..370040f2b6feb 100644
--- a/pkgs/development/python-modules/ircrobots/default.nix
+++ b/pkgs/development/python-modules/ircrobots/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, anyio
-, asyncio-rlock
-, asyncio-throttle
-, ircstates
-, async-stagger
-, async-timeout
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  anyio,
+  asyncio-rlock,
+  asyncio-throttle,
+  ircstates,
+  async-stagger,
+  async-timeout,
+  python,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/ircstates/default.nix b/pkgs/development/python-modules/ircstates/default.nix
index d6d72166c80f5..ab28fb911aa3a 100644
--- a/pkgs/development/python-modules/ircstates/default.nix
+++ b/pkgs/development/python-modules/ircstates/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, irctokens
-, pendulum
-, freezegun
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  irctokens,
+  pendulum,
+  freezegun,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "ircstates";
   version = "0.12.1";
   format = "setuptools";
-  disabled = pythonOlder "3.6";  # f-strings
+  disabled = pythonOlder "3.6"; # f-strings
 
   src = fetchFromGitHub {
     owner = "jesopo";
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     pendulum
   ];
 
-  nativeCheckInputs = [
-    freezegun
-  ];
+  nativeCheckInputs = [ freezegun ];
 
   checkPhase = ''
     ${python.interpreter} -m unittest test
diff --git a/pkgs/development/python-modules/irctokens/default.nix b/pkgs/development/python-modules/irctokens/default.nix
index 68b8bb1535e8a..5ad937806155a 100644
--- a/pkgs/development/python-modules/irctokens/default.nix
+++ b/pkgs/development/python-modules/irctokens/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pyyaml
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pyyaml,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "irctokens";
   version = "2.0.2";
   format = "setuptools";
-  disabled = pythonOlder "3.6";  # f-strings
+  disabled = pythonOlder "3.6"; # f-strings
 
   src = fetchFromGitHub {
     owner = "jesopo";
diff --git a/pkgs/development/python-modules/isal/default.nix b/pkgs/development/python-modules/isal/default.nix
new file mode 100644
index 0000000000000..0594330edaf84
--- /dev/null
+++ b/pkgs/development/python-modules/isal/default.nix
@@ -0,0 +1,72 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  substituteAll,
+
+  # build-system
+  setuptools,
+  versioningit,
+
+  # native dependencies
+  isa-l,
+
+  # tests
+  pytest-timeout,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "isal";
+  version = "1.7.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "pycompression";
+    repo = "python-isal";
+    rev = "v${version}";
+    hash = "sha256-KLnSE7QLM3q8DdoWnCEN6dOxsMr8eSH9k3FqFquZFlE=";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./version.patch;
+      inherit version;
+    })
+  ];
+
+  build-system = [
+    setuptools
+    versioningit
+  ];
+
+  buildInputs = [ isa-l ];
+
+  env.PYTHON_ISAL_LINK_DYNAMIC = true;
+
+  nativeCheckInputs = [
+    pytest-timeout
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [ "tests" ];
+
+  disabledTests = [
+    # calls `python -m isal` and fails on import
+    "test_compress_fast_best_are_exclusive"
+    "test_compress_infile_outfile"
+    "test_compress_infile_outfile_default"
+    "test_decompress_cannot_have_flags_compression"
+    "test_decompress_infile_outfile_error"
+  ];
+
+  pythonImportsCheck = [ "isal" ];
+
+  meta = with lib; {
+    changelog = "https://github.com/pycompression/python-isal/blob/${src.rev}/CHANGELOG.rst";
+    description = "Faster zlib and gzip compatible compression and decompression by providing python bindings for the isa-l library";
+    homepage = "https://github.com/pycompression/python-isal";
+    license = licenses.psfl;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/development/python-modules/isal/version.patch b/pkgs/development/python-modules/isal/version.patch
new file mode 100644
index 0000000000000..9a8500a12d469
--- /dev/null
+++ b/pkgs/development/python-modules/isal/version.patch
@@ -0,0 +1,16 @@
+diff --git a/pyproject.toml b/pyproject.toml
+index bf5fe99..b559255 100644
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -2,9 +2,8 @@
+ requires = ["setuptools>=64", "versioningit>=1.1.0"]
+ build-backend = "setuptools.build_meta"
+ 
+-[tool.versioningit.vcs]
+-method="git"
+-default-tag = "v0.0.0"
++[tool.versioningit]
++default-version = "@version@"
+ 
+ [tool.versioningit.write]
+ file = "src/isal/_version.py"
diff --git a/pkgs/development/python-modules/isbnlib/default.nix b/pkgs/development/python-modules/isbnlib/default.nix
index a1af373ad58ed..8bf7e67b9ecd2 100644
--- a/pkgs/development/python-modules/isbnlib/default.nix
+++ b/pkgs/development/python-modules/isbnlib/default.nix
@@ -1,30 +1,55 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, coverage
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pytest-cov,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "isbnlib";
   version = "3.10.14";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
-
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-lvkIZMd7AfVfoR5b/Kn9kJUB2YQvO8cQ1Oq4UZXZBTk=";
+  src = fetchFromGitHub {
+    owner = "xlcnd";
+    repo = "isbnlib";
+    rev = "v${version}";
+    hash = "sha256-d6p0wv7kj+NOZJRE2rzQgb7PXv+E3tASIibYCjzCdx8=";
   };
 
+  build-system = [ setuptools ];
+
   nativeCheckInputs = [
-    nose
-    coverage
+    pytestCheckHook
+    pytest-cov
+  ];
+
+  pytestFlagsArray = [ "isbnlib/test/" ];
+
+  # All disabled tests require a network connection
+  disabledTests = [
+    "test_cache"
+    "test_editions_any"
+    "test_editions_merge"
+    "test_editions_thingl"
+    "test_editions_wiki"
+    "test_isbn_from_words"
+    "test_desc"
+    "test_cover"
   ];
 
-  # requires network connection
-  doCheck = false;
+  disabledTestPaths = [
+    "isbnlib/test/test_cache_decorator.py"
+    "isbnlib/test/test_goom.py"
+    "isbnlib/test/test_metadata.py"
+    "isbnlib/test/test_openl.py"
+    "isbnlib/test/test_rename.py"
+    "isbnlib/test/test_webservice.py"
+    "isbnlib/test/test_wiki.py"
+    "isbnlib/test/test_words.py"
+  ];
 
   pythonImportsCheck = [
     "isbnlib"
diff --git a/pkgs/development/python-modules/islpy/default.nix b/pkgs/development/python-modules/islpy/default.nix
index ca84beae2eeff..5cded1ba84a5c 100644
--- a/pkgs/development/python-modules/islpy/default.nix
+++ b/pkgs/development/python-modules/islpy/default.nix
@@ -1,41 +1,72 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isl
-, pybind11
-, pytestCheckHook
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  cmake,
+  nanobind,
+  ninja,
+  pcpp,
+  scikit-build,
+  setuptools,
+
+  # buildInputs
+  isl,
+
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "islpy";
-  version = "2023.2.5";
-  format = "setuptools";
+  version = "2024.2";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-3XQ5i682k4q7fCqdmCjMGi5UnGyASFzsiwaymr+q0Y8=";
+  src = fetchFromGitHub {
+    owner = "inducer";
+    repo = "islpy";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-ixw9U4WqcXBW6KGBOsUImjsxmvG5XKCv4jCbTjJ4pjg=";
   };
 
-  postConfigure = ''
-    substituteInPlace setup.py \
-      --replace "\"pytest>=2\"," ""
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+        --replace-fail "setuptools>=42,<64;python_version<'3.12'" "setuptools>=42"
   '';
 
-  buildInputs = [ isl pybind11 ];
-  propagatedBuildInputs = [ six ];
+  build-system = [
+    cmake
+    nanobind
+    ninja
+    pcpp
+    scikit-build
+    setuptools
+  ];
+
+  buildInputs = [ isl ];
+
+  dontUseCmakeConfigure = true;
+
+  preConfigure = ''
+    python ./configure.py \
+        --no-use-shipped-isl \
+        --isl-inc-dir=${lib.getDev isl}/include \
+  '';
+
+  # Force resolving the package from $out to make generated ext files usable by tests
+  preCheck = ''
+    mv islpy islpy.hidden
+  '';
 
-  preCheck = "mv islpy islpy.hidden";
   nativeCheckInputs = [ pytestCheckHook ];
+
   pythonImportsCheck = [ "islpy" ];
 
-  meta = with lib; {
+  meta = {
     description = "Python wrapper around isl, an integer set library";
     homepage = "https://github.com/inducer/islpy";
-    license = licenses.mit;
-    maintainers = [ ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tomasajt ];
   };
 }
diff --git a/pkgs/development/python-modules/ismartgate/default.nix b/pkgs/development/python-modules/ismartgate/default.nix
index 1a61b002aa3ae..6764e3c6c3eed 100644
--- a/pkgs/development/python-modules/ismartgate/default.nix
+++ b/pkgs/development/python-modules/ismartgate/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, click
-, defusedxml
-, dicttoxml
-, fetchFromGitHub
-, httpx
-, pycryptodome
-, pytest-asyncio
-, pytest-raises
-, pytestCheckHook
-, pythonOlder
-, respx
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  click,
+  defusedxml,
+  dicttoxml,
+  fetchFromGitHub,
+  httpx,
+  pycryptodome,
+  pytest-asyncio,
+  pytest-raises,
+  pytestCheckHook,
+  pythonOlder,
+  respx,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -49,9 +50,7 @@ buildPythonPackage rec {
     respx
   ];
 
-  pythonImportsCheck = [
-    "ismartgate"
-  ];
+  pythonImportsCheck = [ "ismartgate" ];
 
   meta = with lib; {
     description = "Python module to work with the ismartgate and gogogate2 API";
diff --git a/pkgs/development/python-modules/iso-639/default.nix b/pkgs/development/python-modules/iso-639/default.nix
index 22d66ef9f14f0..a971722a4194f 100644
--- a/pkgs/development/python-modules/iso-639/default.nix
+++ b/pkgs/development/python-modules/iso-639/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchPypi, buildPythonPackage, setuptools }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "iso-639";
diff --git a/pkgs/development/python-modules/iso3166/default.nix b/pkgs/development/python-modules/iso3166/default.nix
index d166ea496fca8..bec420de051f6 100644
--- a/pkgs/development/python-modules/iso3166/default.nix
+++ b/pkgs/development/python-modules/iso3166/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-/y7c2qSA6+WKUP9YTSaMBjBxtqAuF4nB3MKvL5P6vL0=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "iso3166"
-  ];
+  pythonImportsCheck = [ "iso3166" ];
 
   meta = with lib; {
     description = "Self-contained ISO 3166-1 country definitions";
diff --git a/pkgs/development/python-modules/iso4217/default.nix b/pkgs/development/python-modules/iso4217/default.nix
index 50268536bda57..56945d3ed07ab 100644
--- a/pkgs/development/python-modules/iso4217/default.nix
+++ b/pkgs/development/python-modules/iso4217/default.nix
@@ -1,40 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchurl
-, importlib-resources
-, pytestCheckHook
-, python
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchurl,
+  importlib-resources,
+  pytestCheckHook,
+  python,
+  pythonOlder,
+  setuptools,
 }:
 let
   table = fetchurl {
     # See https://github.com/dahlia/iso4217/blob/main/setup.py#L19
-    url = "http://www.currency-iso.org/dam/downloads/lists/list_one.xml";
-    hash = "sha256-bp8uTMR1YRaI2cJLo0kdt9xD4nNaWK+LdlheWQ26qy0=";
+    url = "https://www.six-group.com/dam/download/financial-information/data-center/iso-currrency/lists/list-one.xml";
+    hash = "sha256-r1mRvI/qcOYOGKVzXHJGFdYxc+YlzpcdnWJExaF0Mp0=";
   };
 in
 buildPythonPackage rec {
   pname = "iso4217";
-  version = "1.11";
-  format = "setuptools";
+  version = "1.12";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "dahlia";
-    repo = pname;
-    rev = version;
-    hash = "sha256-zJYtEIrsuHKPwnSoRjyZC/0rgAZoNMZ0Oh8gQcIb20Q=";
+    repo = "iso4217";
+    rev = "refs/tags/${version}";
+    hash = "sha256-xOKfdk8Bn9f5oszS0IHUD6HgzL9VSa5GBZ28n4fvAck=";
   };
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.9") [
-    importlib-resources
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  dependencies = lib.optionals (pythonOlder "3.9") [ importlib-resources ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preBuild = ''
     # The table is already downloaded
@@ -48,13 +48,9 @@ buildPythonPackage rec {
     cp -r ${table} $out/${python.sitePackages}/$pname/table.xml
   '';
 
-  pytestFlagsArray = [
-    "$pname/test.py"
-  ];
+  pytestFlagsArray = [ "$pname/test.py" ];
 
-  pythonImportsCheck = [
-    "iso4217"
-  ];
+  pythonImportsCheck = [ "iso4217" ];
 
   meta = with lib; {
     description = "ISO 4217 currency data package for Python";
diff --git a/pkgs/development/python-modules/iso8601/default.nix b/pkgs/development/python-modules/iso8601/default.nix
index a4982c27f852b..ab2eb3045dc35 100644
--- a/pkgs/development/python-modules/iso8601/default.nix
+++ b/pkgs/development/python-modules/iso8601/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hypothesis
-, poetry-core
-, pytestCheckHook
-, pytz
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hypothesis,
+  poetry-core,
+  pytestCheckHook,
+  pytz,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-ax04Ke6JIcQwGZjJCfeCn6ntPL2sDTsWry10Ou0bqN8=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   nativeCheckInputs = [
     hypothesis
@@ -30,13 +29,9 @@ buildPythonPackage rec {
     pytz
   ];
 
-  pytestFlagsArray = [
-    "iso8601"
-  ];
+  pytestFlagsArray = [ "iso8601" ];
 
-  pythonImportsCheck = [
-    "iso8601"
-  ];
+  pythonImportsCheck = [ "iso8601" ];
 
   meta = with lib; {
     description = "Simple module to parse ISO 8601 dates";
diff --git a/pkgs/development/python-modules/isodate/default.nix b/pkgs/development/python-modules/isodate/default.nix
index 0697f17c01f03..e48cdcc0e8611 100644
--- a/pkgs/development/python-modules/isodate/default.nix
+++ b/pkgs/development/python-modules/isodate/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, unittestCheckHook
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  unittestCheckHook,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -19,12 +20,14 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [ "-s" "src/isodate/tests" ];
+  unittestFlagsArray = [
+    "-s"
+    "src/isodate/tests"
+  ];
 
   meta = with lib; {
     description = "ISO 8601 date/time parser";
     homepage = "http://cheeseshop.python.org/pypi/isodate";
     license = licenses.bsd0;
   };
-
 }
diff --git a/pkgs/development/python-modules/isoduration/default.nix b/pkgs/development/python-modules/isoduration/default.nix
index e37e44361a100..613f21105d9bc 100644
--- a/pkgs/development/python-modules/isoduration/default.nix
+++ b/pkgs/development/python-modules/isoduration/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, arrow
-, buildPythonPackage
-, fetchFromGitHub
-, hypothesis
-, isodate
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  arrow,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hypothesis,
+  isodate,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-6LqsH+3V/K0s2YD1gvmelo+cCH+yCAmmyTYGhUegVdk=";
   };
 
-  propagatedBuildInputs = [
-    arrow
-  ];
+  propagatedBuildInputs = [ arrow ];
 
   nativeCheckInputs = [
     hypothesis
@@ -37,9 +36,7 @@ buildPythonPackage rec {
     "tests/test_benchmark.py"
   ];
 
-  pythonImportsCheck = [
-    "isoduration"
-  ];
+  pythonImportsCheck = [ "isoduration" ];
 
   meta = with lib; {
     description = "Library for operations with ISO 8601 durations";
diff --git a/pkgs/development/python-modules/isort/default.nix b/pkgs/development/python-modules/isort/default.nix
index 100155f83a2ee..32ff65a391448 100644
--- a/pkgs/development/python-modules/isort/default.nix
+++ b/pkgs/development/python-modules/isort/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, colorama
-, hypothesis
-, poetry-core
-, setuptools
-, pylama
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  colorama,
+  hypothesis,
+  poetry-core,
+  setuptools,
+  pylama,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -77,7 +78,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A Python utility / library to sort Python imports";
+    description = "Python utility / library to sort Python imports";
     homepage = "https://github.com/PyCQA/isort";
     license = licenses.mit;
     maintainers = with maintainers; [ couchemar ];
diff --git a/pkgs/development/python-modules/isosurfaces/default.nix b/pkgs/development/python-modules/isosurfaces/default.nix
index c1caa00b980de..79de8ce0df387 100644
--- a/pkgs/development/python-modules/isosurfaces/default.nix
+++ b/pkgs/development/python-modules/isosurfaces/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
 }:
 
 buildPythonPackage rec {
@@ -11,7 +12,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-+lHr6GTqk1WyaDDif91qQdWli0GfqNS0fjuLgHGNbiE=";
+    hash = "sha256-+lHr6GTqk1WyaDDif91qQdWli0GfqNS0fjuLgHGNbiE=";
   };
 
   propagatedBuildInputs = [ numpy ];
@@ -32,6 +33,6 @@ buildPythonPackage rec {
       many far from the implicit surface.
     '';
     license = licenses.mit;
-    maintainers = with maintainers; [ friedelino ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/isounidecode/default.nix b/pkgs/development/python-modules/isounidecode/default.nix
index 70736a54a1fe6..c8b0607b0244b 100644
--- a/pkgs/development/python-modules/isounidecode/default.nix
+++ b/pkgs/development/python-modules/isounidecode/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "isounidecode";
@@ -19,6 +23,6 @@ buildPythonPackage rec {
     description = "Python package for conversion and transliteration of unicode into ascii or iso-8859-1";
     homepage = "https://github.com/redvasily/isounidecode";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/isoweek/default.nix b/pkgs/development/python-modules/isoweek/default.nix
index e16d27c47bcff..70c38d7904309 100644
--- a/pkgs/development/python-modules/isoweek/default.nix
+++ b/pkgs/development/python-modules/isoweek/default.nix
@@ -1,20 +1,35 @@
-{ lib, fetchPypi, buildPythonPackage }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools,
+  unittestCheckHook,
+  pythonOlder,
+}:
 
 buildPythonPackage rec {
   pname = "isoweek";
   version = "1.3.3";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1s7zsf0pab0l9gn6456qadnz5i5h90hafcjwnhx5mq23qjxggwvk";
+    hash = "sha256-c/P3usRD4Fo6tFwypyBIsMTybVPYFGLsSxQsdYHT/+g=";
   };
 
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ unittestCheckHook ];
+
+  pythonImportsCheck = [ "isoweek" ];
+
   meta = with lib; {
-    description = "The module provide the class Week. Instances represent specific weeks spanning Monday to Sunday.";
+    description = "Module work with ISO weeks";
     homepage = "https://github.com/gisle/isoweek";
+    changelog = "https://github.com/gisle/isoweek/releases/tag/v${version}";
     license = licenses.bsd2;
     maintainers = with maintainers; [ mrmebelman ];
   };
 }
-
diff --git a/pkgs/development/python-modules/israel-rail-api/default.nix b/pkgs/development/python-modules/israel-rail-api/default.nix
new file mode 100644
index 0000000000000..b90306fa07e87
--- /dev/null
+++ b/pkgs/development/python-modules/israel-rail-api/default.nix
@@ -0,0 +1,41 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pytestCheckHook,
+  pytz,
+  requests,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "israel-rail-api";
+  version = "0.1.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "sh0oki";
+    repo = "israel-rail-api";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-OiWK3gi7dQ7SF4fvusKtSFzdhrsvePlscX0EYQ/hlYk=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    pytz
+    requests
+  ];
+
+  pythonImportsCheck = [ "israelrailapi" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    changelog = "https://github.com/sh0oki/israel-rail-api/releases/tag/v${version}";
+    description = "Python wrapping of the Israeli Rail API";
+    homepage = "https://github.com/sh0oki/israel-rail-api";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/itanium-demangler/default.nix b/pkgs/development/python-modules/itanium-demangler/default.nix
index 67b71c9bf217d..37073b5a0bb5d 100644
--- a/pkgs/development/python-modules/itanium-demangler/default.nix
+++ b/pkgs/development/python-modules/itanium-demangler/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,22 +20,19 @@ buildPythonPackage rec {
     hash = "sha256-I6NUfckt2cocQt5dZSFadpshTCuA/6bVNauNXypWh+A=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests/test.py"
-  ];
+  pytestFlagsArray = [ "tests/test.py" ];
 
-  pythonImportsCheck = [
-    "itanium_demangler"
-  ];
+  pythonImportsCheck = [ "itanium_demangler" ];
 
   meta = with lib; {
     description = "Python parser for the Itanium C++ ABI symbol mangling language";
     homepage = "https://github.com/whitequark/python-itanium_demangler";
     license = licenses.bsd0;
-    maintainers = with maintainers; [ fab pamplemousse ];
+    maintainers = with maintainers; [
+      fab
+      pamplemousse
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/item-synchronizer/default.nix b/pkgs/development/python-modules/item-synchronizer/default.nix
index 2f568499eb086..5e8ecf2029956 100644
--- a/pkgs/development/python-modules/item-synchronizer/default.nix
+++ b/pkgs/development/python-modules/item-synchronizer/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, bidict
-, bubop
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  bidict,
+  bubop,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     substituteInPlace pyproject.toml --replace-fail 'bidict = "^0.21.4"' 'bidict = "^0.23"'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     bidict
diff --git a/pkgs/development/python-modules/itemadapter/default.nix b/pkgs/development/python-modules/itemadapter/default.nix
index 0a93eda903d60..b501fa5927c4c 100644
--- a/pkgs/development/python-modules/itemadapter/default.nix
+++ b/pkgs/development/python-modules/itemadapter/default.nix
@@ -1,33 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "itemadapter";
-  version = "0.8.0";
+  version = "0.9.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-d3WEhfsKwQcw1LExNj431ly42yRQv+x6V8PzJx9KSKk=";
+    hash = "sha256-5PlYpra29YMfogc3MBADGgvX7QQp3dCbUZecARR1yv0=";
   };
 
   # Infinite recursion with Scrapy
   doCheck = false;
 
-  pythonImportsCheck = [
-    "itemadapter"
-  ];
+  pythonImportsCheck = [ "itemadapter" ];
 
   meta = with lib; {
     description = "Common interface for data container classes";
     homepage = "https://github.com/scrapy/itemadapter";
     changelog = "https://github.com/scrapy/itemadapter/raw/v${version}/Changelog.md";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/itemdb/default.nix b/pkgs/development/python-modules/itemdb/default.nix
index 6ac5deae5eaa1..8af1e84a972b5 100644
--- a/pkgs/development/python-modules/itemdb/default.nix
+++ b/pkgs/development/python-modules/itemdb/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
@@ -23,5 +24,3 @@ buildPythonPackage rec {
     maintainers = [ maintainers.matthiasbeyer ];
   };
 }
-
-
diff --git a/pkgs/development/python-modules/itemloaders/default.nix b/pkgs/development/python-modules/itemloaders/default.nix
index 554882957f2ee..bd6e8b884ac10 100644
--- a/pkgs/development/python-modules/itemloaders/default.nix
+++ b/pkgs/development/python-modules/itemloaders/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, w3lib
-, parsel
-, jmespath
-, itemadapter
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  w3lib,
+  parsel,
+  jmespath,
+  itemadapter,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "itemloaders";
-  version = "1.2.0";
+  version = "1.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,12 +22,10 @@ buildPythonPackage rec {
     owner = "scrapy";
     repo = "itemloaders";
     rev = "refs/tags/v${version}";
-    hash = "sha256-DatHJnAIomVoN/GrDzM2fNnFHcXqo6zs3ucKCOCf9DU=";
+    hash = "sha256-u0/WsvLn2YlYd/FuH26T9qEGRGscipnOQbV9uPv4F+M=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     w3lib
@@ -35,19 +34,15 @@ buildPythonPackage rec {
     itemadapter
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "itemloaders"
-  ];
+  pythonImportsCheck = [ "itemloaders" ];
 
   meta = with lib; {
     description = "Library to populate items using XPath and CSS with a convenient API";
     homepage = "https://github.com/scrapy/itemloaders";
     changelog = "https://github.com/scrapy/itemloaders/raw/v${version}/docs/release-notes.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/iterable-io/default.nix b/pkgs/development/python-modules/iterable-io/default.nix
new file mode 100644
index 0000000000000..81799c7aec4fa
--- /dev/null
+++ b/pkgs/development/python-modules/iterable-io/default.nix
@@ -0,0 +1,37 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "iterable-io";
+  version = "1.0.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "pR0Ps";
+    repo = "iterable-io";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-+PSINKS7/FeGHYvkOASA5m+1pBpKfURfylZ8CwKijgA=";
+  };
+
+  nativeBuildInputs = [ setuptools ];
+
+  pythonImportsCheck = [ "iterableio" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "Library to adapt iterables to a file-like interface";
+    homepage = "https://github.com/pR0Ps/iterable-io";
+    changelog = "https://github.com/pR0Ps/iterable-io/blob/v${version}/CHANGELOG.md";
+    license = lib.licenses.lgpl3Only;
+    maintainers = [ lib.maintainers.mjoerg ];
+  };
+}
diff --git a/pkgs/development/python-modules/iteration-utilities/default.nix b/pkgs/development/python-modules/iteration-utilities/default.nix
index 59399e39aca4a..ae4db9f10b3ec 100644
--- a/pkgs/development/python-modules/iteration-utilities/default.nix
+++ b/pkgs/development/python-modules/iteration-utilities/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,19 +20,15 @@ buildPythonPackage rec {
     hash = "sha256-BiBbmZHo5B/u//LItqEcKtGXOA6xK+T1zoitR9XIiSU=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "iteration_utilities"
-  ];
+  pythonImportsCheck = [ "iteration_utilities" ];
 
   meta = with lib; {
     description = "Utilities based on Pythons iterators and generators";
     homepage = "https://github.com/MSeifert04/iteration_utilities";
     changelog = "https://github.com/MSeifert04/iteration_utilities/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/iterative-telemetry/default.nix b/pkgs/development/python-modules/iterative-telemetry/default.nix
index ed5066dcc5fad..a3c57d4e07985 100644
--- a/pkgs/development/python-modules/iterative-telemetry/default.nix
+++ b/pkgs/development/python-modules/iterative-telemetry/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, appdirs
-, buildPythonPackage
-, distro
-, fetchFromGitHub
-, filelock
-, pytestCheckHook
-, pytest-mock
-, pythonOlder
-, requests
-, setuptools-scm
+{
+  lib,
+  appdirs,
+  buildPythonPackage,
+  distro,
+  fetchFromGitHub,
+  filelock,
+  pytestCheckHook,
+  pytest-mock,
+  pythonOlder,
+  requests,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "iterative-telemtry";
-  version = "0.0.8";
-  format = "pyproject";
+  version = "0.0.9";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -22,14 +23,12 @@ buildPythonPackage rec {
     owner = "iterative";
     repo = "telemetry-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-jD1AyQTdz/NfTRpvEuTE/gUfgNIhNlnimuCks5ImhwA=";
+    hash = "sha256-bcGniytjlN3JFPeMQYjyIP8Ruty9/dnzp9neclbdsfU=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     requests
     appdirs
     filelock
@@ -41,9 +40,7 @@ buildPythonPackage rec {
     pytest-mock
   ];
 
-  pythonImportsCheck = [
-    "iterative_telemetry"
-  ];
+  pythonImportsCheck = [ "iterative_telemetry" ];
 
   meta = with lib; {
     description = "Common library to send usage telemetry";
diff --git a/pkgs/development/python-modules/iterfzf/default.nix b/pkgs/development/python-modules/iterfzf/default.nix
new file mode 100644
index 0000000000000..07710e18466bb
--- /dev/null
+++ b/pkgs/development/python-modules/iterfzf/default.nix
@@ -0,0 +1,62 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  fzf,
+  packaging,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "iterfzf";
+  version = "1.4.0.54.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "dahlia";
+    repo = "iterfzf";
+    rev = "refs/tags/${version}";
+    hash = "sha256-DvEFCHK+1TA/TTXG//hvXXbRclBkelonA3QsB4h7eRM=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail 'dynamic = ["version"]' 'version = "${version}"' \
+      --replace-fail 'backend-path = ["."]' '# backend-path = ["."]' \
+      --replace-fail 'build-backend = "build_dist"' '# build-backend = "build_dist"'
+
+    substituteInPlace iterfzf/test_iterfzf.py \
+      --replace-fail 'executable="fzf"' 'executable="${fzf}/bin/fzf"'
+  '';
+
+  build-system = [
+    flit-core
+    setuptools
+    packaging
+  ];
+
+  dependencies = [ fzf ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  disabledTests = [
+    # AttributeError
+    "test_no_query"
+    "test_select_one_ambiguous"
+  ];
+
+  pythonImportsCheck = [ "iterfzf" ];
+
+  meta = with lib; {
+    description = "Pythonic interface to fzf, a CLI fuzzy finder";
+    homepage = "https://github.com/dahlia/iterfzf";
+    changelog = "https://github.com/dahlia/iterfzf/releases/tag/${version}";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/iterm2/default.nix b/pkgs/development/python-modules/iterm2/default.nix
index 6d12086851c6c..61e835890c325 100644
--- a/pkgs/development/python-modules/iterm2/default.nix
+++ b/pkgs/development/python-modules/iterm2/default.nix
@@ -1,6 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi
-, protobuf
-, websockets
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  protobuf,
+  websockets,
 }:
 
 buildPythonPackage rec {
@@ -13,7 +16,10 @@ buildPythonPackage rec {
     hash = "sha256-9vC+xGwyzsr3vn/YIpbsRpfUvyEB8MSqskzBI5kfojA=";
   };
 
-  propagatedBuildInputs = [ protobuf websockets ];
+  propagatedBuildInputs = [
+    protobuf
+    websockets
+  ];
 
   # The tests require pyobjc. We can't use pyobjc because at
   # time of writing the pyobjc derivation is disabled on python 3.
diff --git a/pkgs/development/python-modules/itsdangerous/default.nix b/pkgs/development/python-modules/itsdangerous/default.nix
index cfc364a4a3997..29d9ea285a550 100644
--- a/pkgs/development/python-modules/itsdangerous/default.nix
+++ b/pkgs/development/python-modules/itsdangerous/default.nix
@@ -1,35 +1,36 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, freezegun
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  flit-core,
+  freezegun,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "itsdangerous";
-  version = "2.1.2";
-  format = "setuptools";
+  version = "2.2.0";
+  pyproject = true;
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-XbvGizF+XkLzJ/kCF2NUXcP8O/4i5t65aq8fw4h0FWo=";
+    hash = "sha256-4AUMC32h7qU/+vFJwM+7XG4uK2nEvvIsgfputz5fYXM=";
   };
 
+  build-system = [ flit-core ];
+
   nativeCheckInputs = [
     freezegun
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "-W" "ignore::DeprecationWarning"
-  ];
-
   meta = with lib; {
+    changelog = "https://github.com/pallets/itsdangerous/blob/${version}/CHANGES.rst";
     description = "Safely pass data to untrusted environments and back";
     homepage = "https://itsdangerous.palletsprojects.com";
     license = licenses.bsd3;
   };
-
 }
diff --git a/pkgs/development/python-modules/itunespy/default.nix b/pkgs/development/python-modules/itunespy/default.nix
index cd1f174c24b8a..12b647499c732 100644
--- a/pkgs/development/python-modules/itunespy/default.nix
+++ b/pkgs/development/python-modules/itunespy/default.nix
@@ -1,18 +1,27 @@
-{ lib, buildPythonPackage, fetchFromGitHub, requests, pycountry }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  pycountry,
+}:
 
 buildPythonPackage rec {
   pname = "itunespy";
-  version = "1.6";
+  version = "1.6.1";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "sleepyfran";
     repo = pname;
-    rev = version;
-    sha256 = "0yc3az5531qs8nbcw4rhgrszwczgy4bikfwfar7xb2044360sslw";
+    rev = "refs/tags/v${version}";
+    sha256 = "sha256-QvSKJAZa8v0tGURXwo4Dwo73JqsYs1xsBHW0lcaM7bk=";
   };
 
-  propagatedBuildInputs = [ requests pycountry ];
+  propagatedBuildInputs = [
+    requests
+    pycountry
+  ];
 
   # This module has no tests
   doCheck = false;
@@ -20,7 +29,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "itunespy" ];
 
   meta = with lib; {
-    description = "A simple library to fetch data from the iTunes Store API";
+    description = "Simple library to fetch data from the iTunes Store API";
     homepage = "https://github.com/sleepyfran/itunespy";
     license = licenses.mit;
     maintainers = with maintainers; [ j0hax ];
diff --git a/pkgs/development/python-modules/itypes/default.nix b/pkgs/development/python-modules/itypes/default.nix
index 771f91a461acf..a1e83de89c125 100644
--- a/pkgs/development/python-modules/itypes/default.nix
+++ b/pkgs/development/python-modules/itypes/default.nix
@@ -27,6 +27,6 @@ buildPythonPackage rec {
     description = "Simple immutable types for python";
     homepage = "https://github.com/tomchristie/itypes";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/iwlib/default.nix b/pkgs/development/python-modules/iwlib/default.nix
index 0a881ef1f370c..01f83b80a0038 100644
--- a/pkgs/development/python-modules/iwlib/default.nix
+++ b/pkgs/development/python-modules/iwlib/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi, wirelesstools, cffi, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  wirelesstools,
+  cffi,
+  pytest,
+}:
 buildPythonPackage rec {
   pname = "iwlib";
   version = "1.7.0";
@@ -9,7 +16,10 @@ buildPythonPackage rec {
     sha256 = "a805f6597a70ee3001aba8f039fb7b2dcb75dc15c4e7852f5594fd6379196da1";
   };
 
-  propagatedBuildInputs = [ wirelesstools cffi ];
+  propagatedBuildInputs = [
+    wirelesstools
+    cffi
+  ];
   nativeBuildInputs = [ pytest ];
   pythonImportsCheck = [ "iwlib" ];
 
diff --git a/pkgs/development/python-modules/ixia/default.nix b/pkgs/development/python-modules/ixia/default.nix
new file mode 100644
index 0000000000000..cf9001cb7edb3
--- /dev/null
+++ b/pkgs/development/python-modules/ixia/default.nix
@@ -0,0 +1,30 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+}:
+
+buildPythonPackage rec {
+  pname = "ixia";
+  version = "1.3.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "trag1c";
+    repo = "ixia";
+    rev = "refs/tags/${version}";
+    hash = "sha256-lsov5AIT5uRf9nmS8ZsFmInKUFAxUATTbpfhV1fabhA=";
+  };
+
+  build-system = [ poetry-core ];
+  pythonImportsCheck = [ "ixia" ];
+
+  meta = {
+    changelog = "https://github.com/trag1c/ixia/blob/${src.rev}/CHANGELOG.md";
+    description = "Connecting secrets' security with random's versatility";
+    license = lib.licenses.mit;
+    homepage = "https://trag1c.github.io/ixia";
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/j2cli/default.nix b/pkgs/development/python-modules/j2cli/default.nix
index b779010bc5793..87cd4d3e022f1 100644
--- a/pkgs/development/python-modules/j2cli/default.nix
+++ b/pkgs/development/python-modules/j2cli/default.nix
@@ -1,15 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jinja2
-, pyyaml
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jinja2,
+  pythonAtLeast,
+  pyyaml,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "j2cli";
   version = "0.3.10";
   format = "setuptools";
+  disabled = pythonAtLeast "3.12";
 
   src = fetchPypi {
     inherit pname version;
@@ -17,7 +20,11 @@ buildPythonPackage rec {
   };
 
   doCheck = false; # tests aren't installed thus aren't found, so skip
-  propagatedBuildInputs = [ jinja2 pyyaml setuptools ];
+  propagatedBuildInputs = [
+    jinja2
+    pyyaml
+    setuptools
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/kolypto/j2cli";
@@ -28,7 +35,9 @@ buildPythonPackage rec {
       J2Cli is a command-line tool for templating in shell-scripts,
       leveraging the Jinja2 library.
     '';
-    maintainers = with maintainers; [ rushmorem SuperSandro2000 ];
+    maintainers = with maintainers; [
+      rushmorem
+      SuperSandro2000
+    ];
   };
-
 }
diff --git a/pkgs/development/python-modules/jaconv/default.nix b/pkgs/development/python-modules/jaconv/default.nix
index a7800b783a884..d56e02f9d6748 100644
--- a/pkgs/development/python-modules/jaconv/default.nix
+++ b/pkgs/development/python-modules/jaconv/default.nix
@@ -1,33 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nose
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "jaconv";
   version = "0.3.4";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "ikegami-yukino";
-    repo = pname;
+    repo = "jaconv";
     rev = "refs/tags/v${version}";
     hash = "sha256-9ruhOLaYNESeKOwJs3IN6ct66fSq7My9DOyA7/cH3d0=";
   };
 
-  nativeCheckInputs = [
-    nose
-    pytestCheckHook
-  ];
+  patches = [ ./use-pytest.patch ];
 
-  pythonImportsCheck = [
-    "jaconv"
-  ];
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "jaconv" ];
 
   meta = with lib; {
     description = "Python Japanese character interconverter for Hiragana, Katakana, Hankaku and Zenkaku";
diff --git a/pkgs/development/python-modules/jaconv/use-pytest.patch b/pkgs/development/python-modules/jaconv/use-pytest.patch
new file mode 100644
index 0000000000000..b91704ee4f32d
--- /dev/null
+++ b/pkgs/development/python-modules/jaconv/use-pytest.patch
@@ -0,0 +1,34 @@
+diff --git a/test_jaconv.py b/test_jaconv.py
+index 7e0a169..aaf180d 100644
+--- a/test_jaconv.py
++++ b/test_jaconv.py
+@@ -1,11 +1,8 @@
+ # -*- coding: utf-8 -*-
+ from __future__ import unicode_literals
+-from nose.tools import assert_equal, nottest
+ import jaconv
+ from functools import partial
+ 
+-assert_equal.__self__.maxDiff = None
+-
+ HIRAGANA = ('ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞた',
+             'だちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽま',
+             'みむめもゃやゅゆょよらりるれろわをんーゎゐゑゕゖゔゝゞ・「」。、')
+@@ -25,13 +22,15 @@ FULL_ASCII = ('!"#$%&'()*+,-./:;<=>?
+ FULL_DIGIT = '0123456789'
+ 
+ 
+-@nottest
++def assert_equal(x, y):
++    assert x == y
++
++
+ def _compare(mathod, lhs, rhs):
+     for i in range(len(lhs)):
+         assert_equal(mathod(lhs[i]), rhs[i])
+ 
+ 
+-@nottest
+ def _concat(*iterables):
+     result = ''
+     for iterable in iterables:
diff --git a/pkgs/development/python-modules/jaeger-client/default.nix b/pkgs/development/python-modules/jaeger-client/default.nix
index c7130c8afc9dc..c976fca5d6344 100644
--- a/pkgs/development/python-modules/jaeger-client/default.nix
+++ b/pkgs/development/python-modules/jaeger-client/default.nix
@@ -1,10 +1,11 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
-, opentracing
-, threadloop
-, thrift
-, tornado
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  opentracing,
+  threadloop,
+  thrift,
+  tornado,
 }:
 
 buildPythonPackage rec {
@@ -36,6 +37,6 @@ buildPythonPackage rec {
     downloadPage = "https://pypi.org/project/jaeger-client/";
     homepage = "https://github.com/jaegertracing/jaeger-client-python";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jamo/default.nix b/pkgs/development/python-modules/jamo/default.nix
index 058df62cb0419..cccd9fe6c3463 100644
--- a/pkgs/development/python-modules/jamo/default.nix
+++ b/pkgs/development/python-modules/jamo/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,13 +17,9 @@ buildPythonPackage rec {
     hash = "sha256-QHI3Rqf1aQOsW49A/qnIwRnPuerbtyerf+eWIiEvyho=";
   };
 
-  pythonImportsCheck = [
-    "jamo"
-  ];
+  pythonImportsCheck = [ "jamo" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     changelog = "https://github.com/JDongian/python-jamo/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/janus/default.nix b/pkgs/development/python-modules/janus/default.nix
index 15b75bc2aa3b2..62041277358a2 100644
--- a/pkgs/development/python-modules/janus/default.nix
+++ b/pkgs/development/python-modules/janus/default.nix
@@ -1,5 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi, pytestCheckHook, pythonOlder, pytest-asyncio
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  pytest-asyncio,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -14,11 +20,12 @@ buildPythonPackage rec {
 
   disabled = pythonOlder "3.6";
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ typing-extensions ];
 
-  nativeCheckInputs = [ pytest-asyncio pytestCheckHook ];
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
 
   # also fails upstream: https://github.com/aio-libs/janus/pull/258
   disabledTests = [ "test_format" ];
diff --git a/pkgs/development/python-modules/jaraco-abode/default.nix b/pkgs/development/python-modules/jaraco-abode/default.nix
index d113028361fe2..666f527fce405 100644
--- a/pkgs/development/python-modules/jaraco-abode/default.nix
+++ b/pkgs/development/python-modules/jaraco-abode/default.nix
@@ -1,30 +1,31 @@
-{ lib
-, buildPythonPackage
-, bx-py-utils
-, colorlog
-, fetchFromGitHub
-, importlib-resources
-, jaraco-classes
-, jaraco-collections
-, jaraco-itertools
-, jaraco-context
-, jaraco-net
-, keyring
-, lomond
-, more-itertools
-, platformdirs
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
-, requests-toolbelt
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  bx-py-utils,
+  colorlog,
+  fetchFromGitHub,
+  importlib-resources,
+  jaraco-classes,
+  jaraco-collections,
+  jaraco-itertools,
+  jaraco-context,
+  jaraco-net,
+  keyring,
+  lomond,
+  more-itertools,
+  platformdirs,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
+  requests-toolbelt,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "jaraco-abode";
-  version = "5.1.1";
+  version = "5.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -33,7 +34,7 @@ buildPythonPackage rec {
     owner = "jaraco";
     repo = "jaraco.abode";
     rev = "refs/tags/v${version}";
-    hash = "sha256-TUxljF1k/fvQoNcHx6jMRJrYgzxjXefvMl+mBD0DL8o=";
+    hash = "sha256-1omRBbUNS2/U2laK7E1M0uZfejZVMdGezG5oIGILj70=";
   };
 
   nativeBuildInputs = [
@@ -63,9 +64,7 @@ buildPythonPackage rec {
     requests-mock
   ];
 
-  pythonImportsCheck = [
-    "jaraco.abode"
-  ];
+  pythonImportsCheck = [ "jaraco.abode" ];
 
   preCheck = ''
     export HOME=$TEMP
@@ -86,6 +85,9 @@ buildPythonPackage rec {
     description = "Library interfacing to the Abode home security system";
     mainProgram = "abode";
     license = licenses.mit;
-    maintainers = with maintainers; [ jamiemagee dotlambda ];
+    maintainers = with maintainers; [
+      jamiemagee
+      dotlambda
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/jaraco-classes/default.nix b/pkgs/development/python-modules/jaraco-classes/default.nix
index 8408e80217b2d..e80c2add69f26 100644
--- a/pkgs/development/python-modules/jaraco-classes/default.nix
+++ b/pkgs/development/python-modules/jaraco-classes/default.nix
@@ -1,12 +1,16 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy27
-, setuptools-scm
-, more-itertools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  setuptools-scm,
+  more-itertools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "jaraco-classes";
-  version = "3.3.1";
+  version = "3.4.0";
   format = "pyproject";
 
   disabled = isPy27;
@@ -15,7 +19,7 @@ buildPythonPackage rec {
     owner = "jaraco";
     repo = "jaraco.classes";
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-ds84jNEx/2/BnMTbLMvXf/nxKSqyCBM7B7S0NNYagVE=";
+    sha256 = "sha256-pXDsLKiEru+UXcEBT4/cP1u8s9vSn1Zhf7Qnwy9Zr0I=";
   };
 
   pythonNamespaces = [ "jaraco" ];
diff --git a/pkgs/development/python-modules/jaraco-collections/default.nix b/pkgs/development/python-modules/jaraco-collections/default.nix
index bab89a3f7a60e..5b08f94e984d1 100644
--- a/pkgs/development/python-modules/jaraco-collections/default.nix
+++ b/pkgs/development/python-modules/jaraco-collections/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, setuptools-scm
-, jaraco-classes
-, jaraco-text
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  jaraco-classes,
+  jaraco-text,
 }:
 
 buildPythonPackage rec {
   pname = "jaraco-collections";
-  version = "5.0.0";
+  version = "5.0.1";
   format = "pyproject";
 
   src = fetchPypi {
     pname = "jaraco.collections";
     inherit version;
-    hash = "sha256-FoDo0J8pX2Jce6kmiAF1om/b5wkrTHbRmOMEdrIc/mg=";
+    hash = "sha256-gIYxsXS4Sk4qWSSQ1i9i38FdgEeg9xVyYJjcQ7gabPo=";
   };
 
   postPatch = ''
@@ -44,6 +45,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/jaraco/jaraco.collections";
     changelog = "https://github.com/jaraco/jaraco.collections/blob/v${version}/NEWS.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jaraco-context/default.nix b/pkgs/development/python-modules/jaraco-context/default.nix
index 637e23b2cdd86..c0ea092b0fc1d 100644
--- a/pkgs/development/python-modules/jaraco-context/default.nix
+++ b/pkgs/development/python-modules/jaraco-context/default.nix
@@ -1,13 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools-scm,
+  backports-tarfile,
 }:
 
 buildPythonPackage rec {
   pname = "jaraco-context";
-  version = "4.3.0";
+  version = "5.3.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -16,23 +18,19 @@ buildPythonPackage rec {
     owner = "jaraco";
     repo = "jaraco.context";
     rev = "refs/tags/v${version}";
-    hash = "sha256-YdbkpKv7k62uyhmjKoxeA9uf5BWnRD/rK+z46FJN4xk=";
+    hash = "sha256-Caj51qBLHbuiey023iLc+N2M8QiJKH8G/Pzu1v3AToU=";
   };
 
-  pythonNamespaces = [
-    "jaraco"
-  ];
+  pythonNamespaces = [ "jaraco" ];
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
+
+  dependencies = lib.optionals (pythonOlder "3.12") [ backports-tarfile ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "jaraco.context"
-  ];
+  pythonImportsCheck = [ "jaraco.context" ];
 
   meta = with lib; {
     description = "Python module for context management";
diff --git a/pkgs/development/python-modules/jaraco-email/default.nix b/pkgs/development/python-modules/jaraco-email/default.nix
index b6ff349a533b7..ef5e99a93fd13 100644
--- a/pkgs/development/python-modules/jaraco-email/default.nix
+++ b/pkgs/development/python-modules/jaraco-email/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, aiosmtpd
-, jaraco-text
-, jaraco-collections
-, keyring
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  aiosmtpd,
+  jaraco-text,
+  jaraco-collections,
+  keyring,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -40,9 +41,7 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "jaraco.email" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = {
     changelog = "https://github.com/jaraco/jaraco.email/blob/${src.rev}/CHANGES.rst";
diff --git a/pkgs/development/python-modules/jaraco-envs/default.nix b/pkgs/development/python-modules/jaraco-envs/default.nix
new file mode 100644
index 0000000000000..c2485c7fe7e3f
--- /dev/null
+++ b/pkgs/development/python-modules/jaraco-envs/default.nix
@@ -0,0 +1,48 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  path,
+  tox,
+  virtualenv,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "jaraco-envs";
+  version = "2.6.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "jaraco";
+    repo = "jaraco.envs";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-yRMX0H6yWN8TiO/LGAr4HyrVS8ZhBjuR885/+UQscP0=";
+  };
+
+  build-system = [ setuptools-scm ];
+
+  dependencies = [
+    path
+    tox
+    virtualenv
+  ];
+
+  pythonImportsCheck = [ "jaraco.envs" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  disabledTestPaths = [
+    # requires networking
+    "jaraco/envs.py"
+  ];
+
+  meta = {
+    changelog = "https://github.com/jaraco/jaraco.envs/blob/${src.rev}/NEWS.rst";
+    description = "Classes for orchestrating Python (virtual) environments";
+    homepage = "https://github.com/jaraco/jaraco.envs";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/jaraco-functools/default.nix b/pkgs/development/python-modules/jaraco-functools/default.nix
index 28a7d64e11f96..4af7e125b83d6 100644
--- a/pkgs/development/python-modules/jaraco-functools/default.nix
+++ b/pkgs/development/python-modules/jaraco-functools/default.nix
@@ -1,27 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, more-itertools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  more-itertools,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "jaraco-functools";
-  version = "4.0.0";
-  format = "pyproject";
+  version = "4.0.1";
+  pyproject = true;
 
   src = fetchPypi {
-    pname = "jaraco.functools";
+    pname = "jaraco_functools";
     inherit version;
-    hash = "sha256-wnnLJMk9aU73Jw+XDUmcq004E/TggnP5U5hlGmNPCSU=";
+    hash = "sha256-0z+nZTdMBhG1L4s6eV+JAIaaqIyEdp1NF0bNaPsow+g=";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
-
-  propagatedBuildInputs = [
-    more-itertools
+  nativeBuildInputs = [
+    setuptools
+    setuptools-scm
   ];
 
+  propagatedBuildInputs = [ more-itertools ];
+
   doCheck = false;
 
   pythonNamespaces = [ "jaraco" ];
@@ -32,6 +35,6 @@ buildPythonPackage rec {
     description = "Additional functools in the spirit of stdlib's functools";
     homepage = "https://github.com/jaraco/jaraco.functools";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jaraco-itertools/default.nix b/pkgs/development/python-modules/jaraco-itertools/default.nix
index 23722cc20c4b9..07c1cd3385186 100644
--- a/pkgs/development/python-modules/jaraco-itertools/default.nix
+++ b/pkgs/development/python-modules/jaraco-itertools/default.nix
@@ -1,5 +1,12 @@
-{ lib, buildPythonPackage, fetchPypi, setuptools-scm
-, inflect, more-itertools, six, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  inflect,
+  more-itertools,
+  six,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +24,11 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [ inflect more-itertools six ];
+  propagatedBuildInputs = [
+    inflect
+    more-itertools
+    six
+  ];
   nativeCheckInputs = [ pytest ];
 
   # tests no longer available through pypi
diff --git a/pkgs/development/python-modules/jaraco-logging/default.nix b/pkgs/development/python-modules/jaraco-logging/default.nix
index e87d01a869a67..3368ac4ae19e6 100644
--- a/pkgs/development/python-modules/jaraco-logging/default.nix
+++ b/pkgs/development/python-modules/jaraco-logging/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, setuptools-scm
-, tempora
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  tempora,
 }:
 
 buildPythonPackage rec {
@@ -20,31 +21,25 @@ buildPythonPackage rec {
     hash = "sha256-9KfPusuGqDTCiGwBo7UrxM3icowdlxfEnU3OHWJI8Hs=";
   };
 
-  pythonNamespaces = [
-    "jaraco"
-  ];
+  pythonNamespaces = [ "jaraco" ];
 
   nativeBuildInputs = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    tempora
-  ];
+  propagatedBuildInputs = [ tempora ];
 
   # test no longer packaged with pypi
   doCheck = false;
 
-  pythonImportsCheck = [
-    "jaraco.logging"
-  ];
+  pythonImportsCheck = [ "jaraco.logging" ];
 
   meta = with lib; {
     description = "Support for Python logging facility";
     homepage = "https://github.com/jaraco/jaraco.logging";
     changelog = "https://github.com/jaraco/jaraco.logging/blob/v${version}/NEWS.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jaraco-net/default.nix b/pkgs/development/python-modules/jaraco-net/default.nix
index e278c1a3832df..de22f3eda857c 100644
--- a/pkgs/development/python-modules/jaraco-net/default.nix
+++ b/pkgs/development/python-modules/jaraco-net/default.nix
@@ -1,33 +1,34 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, more-itertools
-, beautifulsoup4
-, mechanize
-, keyring
-, requests
-, feedparser
-, icmplib
-, jaraco-text
-, jaraco-logging
-, jaraco-email
-, jaraco-functools
-, jaraco-collections
-, path
-, python-dateutil
-, pathvalidate
-, jsonpickle
-, ifconfig-parser
-, pytestCheckHook
-, cherrypy
-, importlib-resources
-, pyparsing
-, requests-mock
-, nettools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  more-itertools,
+  beautifulsoup4,
+  mechanize,
+  keyring,
+  requests,
+  feedparser,
+  icmplib,
+  jaraco-text,
+  jaraco-logging,
+  jaraco-email,
+  jaraco-functools,
+  jaraco-collections,
+  path,
+  python-dateutil,
+  pathvalidate,
+  jsonpickle,
+  ifconfig-parser,
+  pytestCheckHook,
+  cherrypy,
+  importlib-resources,
+  pyparsing,
+  requests-mock,
+  nettools,
 }:
 
 buildPythonPackage rec {
@@ -67,9 +68,7 @@ buildPythonPackage rec {
     python-dateutil
     pathvalidate
     jsonpickle
-  ] ++ lib.optionals stdenv.isDarwin [
-    ifconfig-parser
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ ifconfig-parser ];
 
   pythonImportsCheck = [ "jaraco.net" ];
 
@@ -79,9 +78,7 @@ buildPythonPackage rec {
     importlib-resources
     pyparsing
     requests-mock
-  ] ++ lib.optionals stdenv.isDarwin [
-    nettools
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ nettools ];
 
   disabledTestPaths = [
     # doesn't actually contain tests
diff --git a/pkgs/development/python-modules/jaraco-path/default.nix b/pkgs/development/python-modules/jaraco-path/default.nix
new file mode 100644
index 0000000000000..48ee8b4fdd2b7
--- /dev/null
+++ b/pkgs/development/python-modules/jaraco-path/default.nix
@@ -0,0 +1,36 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  pytestCheckHook,
+  stdenv,
+}:
+
+buildPythonPackage rec {
+  pname = "jaraco-path";
+  version = "3.7.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "jaraco";
+    repo = "jaraco.path";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-i6FPM4aPfpwLdde1COXZNoKel3sRK8PXnkzy50XvVdw=";
+  };
+
+  build-system = [ setuptools-scm ];
+
+  pythonImportsCheck = [ "jaraco.path" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    changelog = "https://github.com/jaraco/jaraco.path/blob/${src.rev}/NEWS.rst";
+    description = "Miscellaneous path functions";
+    homepage = "https://github.com/jaraco/jaraco.path";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+    broken = stdenv.hostPlatform.isDarwin; # pyobjc is missing
+  };
+}
diff --git a/pkgs/development/python-modules/jaraco-stream/default.nix b/pkgs/development/python-modules/jaraco-stream/default.nix
index 1c926b831ffb8..a516bf33b0b38 100644
--- a/pkgs/development/python-modules/jaraco-stream/default.nix
+++ b/pkgs/development/python-modules/jaraco-stream/default.nix
@@ -1,4 +1,9 @@
-{ buildPythonPackage, fetchPypi, setuptools-scm, six }:
+{
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  six,
+}:
 
 buildPythonPackage rec {
   pname = "jaraco-stream";
diff --git a/pkgs/development/python-modules/jaraco-test/default.nix b/pkgs/development/python-modules/jaraco-test/default.nix
index fb6c3a883e93d..47510c9c4a6e2 100644
--- a/pkgs/development/python-modules/jaraco-test/default.nix
+++ b/pkgs/development/python-modules/jaraco-test/default.nix
@@ -1,32 +1,32 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools-scm
-, toml
-, jaraco-functools
-, jaraco-context
-, more-itertools
-, jaraco-collections
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools-scm,
+  toml,
+  jaraco-functools,
+  jaraco-context,
+  more-itertools,
+  jaraco-collections,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "jaraco-test";
-  version = "5.4.0";
+  version = "5.5.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    pname = "jaraco.test";
-    inherit version;
-    hash = "sha256-29NDh4dYrcVER9YRXEYXia2zH8QHOyEpUCQwk7oxfsI=";
+  src = fetchFromGitHub {
+    owner = "jaraco";
+    repo = "jaraco.test";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-jbnU6PFVUd/eD9CWHyJvaTFkcZaIIwztkN9UbQZH1RU=";
   };
 
-  build-system = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
   dependencies = [
     toml
@@ -36,23 +36,19 @@ buildPythonPackage rec {
     jaraco-collections
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # https://github.com/jaraco/jaraco.test/issues/6
     "jaraco/test/cpython.py"
   ];
 
-  pythonImportsCheck = [
-    "jaraco.test"
-  ];
+  pythonImportsCheck = [ "jaraco.test" ];
 
   meta = with lib; {
     description = "Testing support by jaraco";
     homepage = "https://github.com/jaraco/jaraco.test";
-    changelog = "https://github.com/jaraco/jaraco.test/blob/v${version}/CHANGES.rst";
+    changelog = "https://github.com/jaraco/jaraco.test/blob/${src.rev}/NEWS.rst";
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
   };
diff --git a/pkgs/development/python-modules/jaraco-text/default.nix b/pkgs/development/python-modules/jaraco-text/default.nix
index 5f6bc4021c0ff..5ff8b117eb80d 100644
--- a/pkgs/development/python-modules/jaraco-text/default.nix
+++ b/pkgs/development/python-modules/jaraco-text/default.nix
@@ -1,61 +1,50 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, autocommand
-, importlib-resources
-, jaraco-functools
-, jaraco-context
-, inflect
-, pathlib2
-, pytestCheckHook
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  autocommand,
+  importlib-resources,
+  jaraco-functools,
+  jaraco-context,
+  inflect,
+  pathlib2,
+  pytestCheckHook,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "jaraco-text";
-  version = "3.12.0";
+  version = "3.12.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
-    pname = "jaraco.text";
+    pname = "jaraco_text";
     inherit version;
-    hash = "sha256-OJ4lyNSzLpcVv1MFlvqw9c06pHKW5DlpOS4YpUGvWSw=";
+    hash = "sha256-tplJH50HS0/q/f2gQH+lu8XYP0hWB6AS6TRyuhYfaEM=";
   };
 
-  pythonNamespaces = [
-    "jaraco"
-  ];
+  pythonNamespaces = [ "jaraco" ];
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     autocommand
     jaraco-context
     jaraco-functools
     inflect
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    importlib-resources
-  ];
+  ] ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    pathlib2
-  ];
+  nativeCheckInputs = [ pytestCheckHook ] ++ lib.optionals (pythonOlder "3.10") [ pathlib2 ];
 
-  pythonImportsCheck = [
-    "jaraco.text"
-  ];
+  pythonImportsCheck = [ "jaraco.text" ];
 
   meta = with lib; {
     description = "Module for text manipulation";
     homepage = "https://github.com/jaraco/jaraco.text";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jarowinkler/default.nix b/pkgs/development/python-modules/jarowinkler/default.nix
index a0196265b8455..a14d2341dad5c 100644
--- a/pkgs/development/python-modules/jarowinkler/default.nix
+++ b/pkgs/development/python-modules/jarowinkler/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, rapidfuzz
-, hypothesis
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  rapidfuzz,
+  hypothesis,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,9 @@ buildPythonPackage rec {
     hash = "sha256-B3upTBNqMyi+CH7Zx04wceEXjGJnr6S3BIl87AQkfbo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    rapidfuzz
-  ];
+  propagatedBuildInputs = [ rapidfuzz ];
 
   nativeCheckInputs = [
     hypothesis
diff --git a/pkgs/development/python-modules/javaobj-py3/default.nix b/pkgs/development/python-modules/javaobj-py3/default.nix
index 2c303784a87a8..fecd77a50300c 100644
--- a/pkgs/development/python-modules/javaobj-py3/default.nix
+++ b/pkgs/development/python-modules/javaobj-py3/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, fetchPypi
-, isPy27
-, lib
-, numpy
+{
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  lib,
+  numpy,
 }:
 
 buildPythonPackage rec {
@@ -13,7 +14,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-5OMlfvLPgaMzl4ek1c+STlTJHwlacj9tJYTa5h1Dlu0=";
+    hash = "sha256-5OMlfvLPgaMzl4ek1c+STlTJHwlacj9tJYTa5h1Dlu0=";
   };
 
   propagatedBuildInputs = [ numpy ];
diff --git a/pkgs/development/python-modules/javaproperties/default.nix b/pkgs/development/python-modules/javaproperties/default.nix
index 28ab53ce98a41..bd8c9085a25d8 100644
--- a/pkgs/development/python-modules/javaproperties/default.nix
+++ b/pkgs/development/python-modules/javaproperties/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, six
-, pytestCheckHook
-, python-dateutil
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  six,
+  pytestCheckHook,
+  python-dateutil,
 }:
 
 buildPythonPackage rec {
@@ -19,31 +20,23 @@ buildPythonPackage rec {
     sha256 = "16rcdw5gd4a21v2xb1j166lc9z2dqcv68gqvk5mvpnm0x6nwadgp";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   nativeCheckInputs = [
     python-dateutil
     pytestCheckHook
   ];
 
-  disabledTests = [
-    "time"
-  ];
+  disabledTests = [ "time" ];
 
-  disabledTestPaths = [
-    "test/test_propclass.py"
-  ];
+  disabledTestPaths = [ "test/test_propclass.py" ];
 
   meta = with lib; {
     description = "Microsoft Azure API Management Client Library for Python";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jax-jumpy/default.nix b/pkgs/development/python-modules/jax-jumpy/default.nix
index f37677da02830..1fbda8b2cd3e0 100644
--- a/pkgs/development/python-modules/jax-jumpy/default.nix
+++ b/pkgs/development/python-modules/jax-jumpy/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  setuptools,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/jax/default.nix b/pkgs/development/python-modules/jax/default.nix
index e160eec612cf1..ba9a621b1eab7 100644
--- a/pkgs/development/python-modules/jax/default.nix
+++ b/pkgs/development/python-modules/jax/default.nix
@@ -1,35 +1,33 @@
-{ lib
-, blas
-, buildPythonPackage
-, callPackage
-, setuptools
-, importlib-metadata
-, fetchFromGitHub
-, jaxlib
-, jaxlib-bin
-, hypothesis
-, lapack
-, matplotlib
-, ml-dtypes
-, numpy
-, opt-einsum
-, pytestCheckHook
-, pytest-xdist
-, pythonOlder
-, scipy
-, stdenv
+{
+  lib,
+  blas,
+  buildPythonPackage,
+  callPackage,
+  setuptools,
+  importlib-metadata,
+  fetchFromGitHub,
+  jaxlib,
+  jaxlib-bin,
+  jaxlib-build,
+  hypothesis,
+  lapack,
+  matplotlib,
+  ml-dtypes,
+  numpy,
+  opt-einsum,
+  pytestCheckHook,
+  pytest-xdist,
+  pythonOlder,
+  scipy,
+  stdenv,
 }:
 
 let
   usingMKL = blas.implementation == "mkl" || lapack.implementation == "mkl";
-  # jaxlib is broken on aarch64-* as of 2023-03-05, but the binary wheels work
-  # fine. jaxlib is only used in the checkPhase, so switching backends does not
-  # impact package behavior. Get rid of this once jaxlib is fixed on aarch64-*.
-  jaxlib' = if jaxlib.meta.broken then jaxlib-bin else jaxlib;
 in
 buildPythonPackage rec {
   pname = "jax";
-  version = "0.4.25";
+  version = "0.4.28";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -39,12 +37,10 @@ buildPythonPackage rec {
     repo = "jax";
     # google/jax contains tags for jax and jaxlib. Only use jax tags!
     rev = "refs/tags/jax-v${version}";
-    hash = "sha256-poQQo2ZgEhPYzK3aCs+BjaHTNZbezJAECd+HOdY1Yok=";
+    hash = "sha256-qSHPwi3is6Ts7pz5s4KzQHBMbcjGp+vAOsejW3o36Ek=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # The version is automatically set to ".dev" if this variable is not set.
   # https://github.com/google/jax/commit/e01f2617b85c5bdffc5ffb60b3d8d8ca9519a1f3
@@ -62,7 +58,7 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     hypothesis
-    jaxlib'
+    jaxlib
     matplotlib
     pytestCheckHook
     pytest-xdist
@@ -81,46 +77,61 @@ buildPythonPackage rec {
     "tests/"
   ];
 
-  disabledTests = [
-    # Exceeds tolerance when the machine is busy
-    "test_custom_linear_solve_aux"
-    # UserWarning: Explicitly requested dtype <class 'numpy.float64'>
-    #  requested in astype is not available, and will be truncated to
-    # dtype float32. (With numpy 1.24)
-    "testKde3"
-    "testKde5"
-    "testKde6"
-    # Invokes python manually in a subprocess, which does not have the correct dependencies
-    # ImportError: This version of jax requires jaxlib version >= 0.4.19.
-    "test_no_log_spam"
-  ] ++ lib.optionals usingMKL [
-    # See
-    #  * https://github.com/google/jax/issues/9705
-    #  * https://discourse.nixos.org/t/getting-different-results-for-the-same-build-on-two-equally-configured-machines/17921
-    #  * https://github.com/NixOS/nixpkgs/issues/161960
-    "test_custom_linear_solve_cholesky"
-    "test_custom_root_with_aux"
-    "testEigvalsGrad_shape"
-  ] ++ lib.optionals stdenv.isAarch64 [
-    # See https://github.com/google/jax/issues/14793.
-    "test_for_loop_fixpoint_correctly_identifies_loop_varying_residuals_unrolled_for_loop"
-    "testQdwhWithRandomMatrix3"
-    "testScanGrad_jit_scan"
-
-    # See https://github.com/google/jax/issues/17867.
-    "test_array"
-    "test_async"
-    "test_copy0"
-    "test_device_put"
-    "test_make_array_from_callback"
-    "test_make_array_from_single_device_arrays"
-
-    # Fails on some hardware due to some numerical error
-    # See https://github.com/google/jax/issues/18535
-    "testQdwhWithOnRankDeficientInput5"
-  ];
-
-  disabledTestPaths = lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
+  # Prevents `tests/export_back_compat_test.py::CompatTest::test_*` tests from failing on darwin with
+  # PermissionError: [Errno 13] Permission denied: '/tmp/back_compat_testdata/test_*.py'
+  # See https://github.com/google/jax/blob/jaxlib-v0.4.27/jax/_src/internal_test_util/export_back_compat_test_util.py#L240-L241
+  # NOTE: this doesn't seem to be an issue on linux
+  preCheck = lib.optionalString stdenv.hostPlatform.isDarwin ''
+    export TEST_UNDECLARED_OUTPUTS_DIR=$(mktemp -d)
+  '';
+
+  disabledTests =
+    [
+      # Exceeds tolerance when the machine is busy
+      "test_custom_linear_solve_aux"
+      # UserWarning: Explicitly requested dtype <class 'numpy.float64'>
+      #  requested in astype is not available, and will be truncated to
+      # dtype float32. (With numpy 1.24)
+      "testKde3"
+      "testKde5"
+      "testKde6"
+      # Invokes python manually in a subprocess, which does not have the correct dependencies
+      # ImportError: This version of jax requires jaxlib version >= 0.4.19.
+      "test_no_log_spam"
+    ]
+    ++ lib.optionals usingMKL [
+      # See
+      #  * https://github.com/google/jax/issues/9705
+      #  * https://discourse.nixos.org/t/getting-different-results-for-the-same-build-on-two-equally-configured-machines/17921
+      #  * https://github.com/NixOS/nixpkgs/issues/161960
+      "test_custom_linear_solve_cholesky"
+      "test_custom_root_with_aux"
+      "testEigvalsGrad_shape"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isAarch64 [
+      # See https://github.com/google/jax/issues/14793.
+      "test_for_loop_fixpoint_correctly_identifies_loop_varying_residuals_unrolled_for_loop"
+      "testQdwhWithRandomMatrix3"
+      "testScanGrad_jit_scan"
+
+      # See https://github.com/google/jax/issues/17867.
+      "test_array"
+      "test_async"
+      "test_copy0"
+      "test_device_put"
+      "test_make_array_from_callback"
+      "test_make_array_from_single_device_arrays"
+
+      # Fails on some hardware due to some numerical error
+      # See https://github.com/google/jax/issues/18535
+      "testQdwhWithOnRankDeficientInput5"
+    ];
+
+  disabledTestPaths = [
+    # Segmentation fault. See https://gist.github.com/zimbatm/e9b61891f3bcf5e4aaefd13f94344fba
+    "tests/linalg_test.py"
+  ]
+  ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
     # RuntimeWarning: invalid value encountered in cast
     "tests/lax_test.py"
   ];
@@ -137,7 +148,7 @@ buildPythonPackage rec {
   #   NIXPKGS_ALLOW_UNFREE=1 nixglhost -- nix run --impure .#python3Packages.jax.passthru.tests.test_cuda_jaxlibBin
   passthru.tests = {
     test_cuda_jaxlibSource = callPackage ./test-cuda.nix {
-      jaxlib = jaxlib.override { cudaSupport = true; };
+      jaxlib = jaxlib-build.override { cudaSupport = true; };
     };
     test_cuda_jaxlibBin = callPackage ./test-cuda.nix {
       jaxlib = jaxlib-bin.override { cudaSupport = true; };
@@ -148,7 +159,11 @@ buildPythonPackage rec {
   passthru.skipBulkUpdate = true;
 
   meta = with lib; {
-    description = "Differentiate, compile, and transform Numpy code";
+    description = "Source-built JAX frontend: differentiate, compile, and transform Numpy code";
+    longDescription = ''
+      This is the JAX frontend package, it's meant to be used together with one of the jaxlib implementations,
+      e.g. `python3Packages.jaxlib`, `python3Packages.jaxlib-bin`, or `python3Packages.jaxlibWithCuda`.
+    '';
     homepage = "https://github.com/google/jax";
     license = licenses.asl20;
     maintainers = with maintainers; [ samuela ];
diff --git a/pkgs/development/python-modules/jax/test-cuda.nix b/pkgs/development/python-modules/jax/test-cuda.nix
index d156061f38495..5aca523f31775 100644
--- a/pkgs/development/python-modules/jax/test-cuda.nix
+++ b/pkgs/development/python-modules/jax/test-cuda.nix
@@ -1,17 +1,25 @@
-{ jax
-, jaxlib
-, pkgs
+{
+  jax,
+  jaxlib,
+  pkgs,
 }:
 
-pkgs.writers.writePython3Bin "jax-test-cuda" { libraries = [ jax jaxlib ]; } ''
-  import jax
-  from jax import random
+pkgs.writers.writePython3Bin "jax-test-cuda"
+  {
+    libraries = [
+      jax
+      jaxlib
+    ];
+  }
+  ''
+    import jax
+    from jax import random
 
-  assert jax.devices()[0].platform == "gpu"
+    assert jax.devices()[0].platform == "gpu"
 
-  rng = random.PRNGKey(0)
-  x = random.normal(rng, (100, 100))
-  x @ x
+    rng = random.PRNGKey(0)
+    x = random.normal(rng, (100, 100))
+    x @ x
 
-  print("success!")
-''
+    print("success!")
+  ''
diff --git a/pkgs/development/python-modules/jaxlib/bin.nix b/pkgs/development/python-modules/jaxlib/bin.nix
index 54abdfe48c345..a08264849770a 100644
--- a/pkgs/development/python-modules/jaxlib/bin.nix
+++ b/pkgs/development/python-modules/jaxlib/bin.nix
@@ -4,117 +4,132 @@
 
 # See `python3Packages.jax.passthru` for CUDA tests.
 
-{ absl-py
-, autoAddDriverRunpath
-, autoPatchelfHook
-, buildPythonPackage
-, config
-, fetchPypi
-, fetchurl
-, flatbuffers
-, jaxlib-build
-, lib
-, ml-dtypes
-, python
-, scipy
-, stdenv
+{
+  absl-py,
+  autoAddDriverRunpath,
+  autoPatchelfHook,
+  buildPythonPackage,
+  config,
+  fetchPypi,
+  fetchurl,
+  flatbuffers,
+  jaxlib-build,
+  lib,
+  ml-dtypes,
+  python,
+  scipy,
+  stdenv,
   # Options:
-, cudaSupport ? config.cudaSupport
-, cudaPackagesGoogle
+  cudaSupport ? config.cudaSupport,
+  cudaPackages,
 }:
 
 let
-  inherit (cudaPackagesGoogle) cudaVersion;
+  inherit (cudaPackages) cudaVersion;
 
-  version = "0.4.24";
+  version = "0.4.28";
 
   inherit (python) pythonVersion;
 
-  cudaLibPath = lib.makeLibraryPath (with cudaPackagesGoogle; [
-    cuda_cudart.lib # libcudart.so
-    cuda_cupti.lib # libcupti.so
-    cudnn.lib # libcudnn.so
-    libcufft.lib # libcufft.so
-    libcusolver.lib # libcusolver.so
-    libcusparse.lib # libcusparse.so
-  ]);
+  cudaLibPath = lib.makeLibraryPath (
+    with cudaPackages;
+    [
+      (lib.getLib cuda_cudart) # libcudart.so
+      (lib.getLib cuda_cupti) # libcupti.so
+      (lib.getLib cudnn) # libcudnn.so
+      (lib.getLib libcufft) # libcufft.so
+      (lib.getLib libcusolver) # libcusolver.so
+      (lib.getLib libcusparse) # libcusparse.so
+    ]
+  );
 
   # As of 2023-06-06, google/jax upstream is no longer publishing CPU-only wheels to their GCS bucket. Instead the
   # official instructions recommend installing CPU-only versions via PyPI.
   cpuSrcs =
     let
-      getSrcFromPypi = { platform, dist, hash }: fetchPypi {
-        inherit version platform dist hash;
-        pname = "jaxlib";
-        format = "wheel";
-        # See the `disabled` attr comment below.
-        python = dist;
-        abi = dist;
-      };
+      getSrcFromPypi =
+        {
+          platform,
+          dist,
+          hash,
+        }:
+        fetchPypi {
+          inherit
+            version
+            platform
+            dist
+            hash
+            ;
+          pname = "jaxlib";
+          format = "wheel";
+          # See the `disabled` attr comment below.
+          python = dist;
+          abi = dist;
+        };
     in
     {
       "3.9-x86_64-linux" = getSrcFromPypi {
         platform = "manylinux2014_x86_64";
         dist = "cp39";
-        hash = "sha256-6P5ArMoLZiUkHUoQ/mJccbNj5/7el/op+Qo6cGQ33xE=";
+        hash = "sha256-Slbr8FtKTBeRaZ2HTgcvP4CPCYa0AQsU+1SaackMqdw=";
       };
       "3.9-aarch64-darwin" = getSrcFromPypi {
         platform = "macosx_11_0_arm64";
         dist = "cp39";
-        hash = "sha256-23JQZRwMLtt7sK/JlCBqqRyfTVIAVJFN2sL+nAkQgvU=";
+        hash = "sha256-sBVi7IrXVxm30DiXUkiel+trTctMjBE75JFjTVKCrTw=";
       };
       "3.9-x86_64-darwin" = getSrcFromPypi {
         platform = "macosx_10_14_x86_64";
         dist = "cp39";
-        hash = "sha256-OgMedn9GHGs5THZf3pkP3Aw/jJ0vL5qK1b+Lzf634Ik=";
+        hash = "sha256-T5jMg3srbG3P4Kt/+esQkxSSCUYRmqOvn6oTlxj/J4c=";
       };
 
       "3.10-x86_64-linux" = getSrcFromPypi {
         platform = "manylinux2014_x86_64";
         dist = "cp310";
-        hash = "sha256-/VwUIIa7mTs/wLz0ArsEfNrz2pGriVVT5GX9XRFRxfY=";
+        hash = "sha256-47zcb45g+FVPQVwU2TATTmAuPKM8OOVGJ0/VRfh1dps=";
       };
       "3.10-aarch64-darwin" = getSrcFromPypi {
         platform = "macosx_11_0_arm64";
         dist = "cp310";
-        hash = "sha256-LgICOyDGts840SQQJh+yOMobMASb62llvJjpGvhzrSw=";
+        hash = "sha256-8Djmi9ENGjVUcisLvjbmpEg4RDenWqnSg/aW8O2fjAk=";
       };
       "3.10-x86_64-darwin" = getSrcFromPypi {
         platform = "macosx_10_14_x86_64";
         dist = "cp310";
-        hash = "sha256-vhyULw+zBpz1UEi2tqgBMQEzY9a6YBgEIg6A4PPh3bQ=";
+        hash = "sha256-pCHSN/jCXShQFm0zRgPGc925tsJvUrxJZwS4eCKXvWY=";
       };
 
       "3.11-x86_64-linux" = getSrcFromPypi {
         platform = "manylinux2014_x86_64";
         dist = "cp311";
-        hash = "sha256-VJO/VVwBFkOEtq4y/sLVgAV8Cung01JULiuT6W96E/8=";
+        hash = "sha256-Rc4PPIQM/4I2z/JsN/Jsn/B4aV+T4MFiwyDCgfUEEnU=";
       };
       "3.11-aarch64-darwin" = getSrcFromPypi {
         platform = "macosx_11_0_arm64";
         dist = "cp311";
-        hash = "sha256-VtuwXxurpSp1KI8ty1bizs5cdy8GEBN2MgS227sOCmE=";
+        hash = "sha256-eThX+vN/Nxyv51L+pfyBH0NeQ7j7S1AgWERKf17M+Ck=";
       };
       "3.11-x86_64-darwin" = getSrcFromPypi {
         platform = "macosx_10_14_x86_64";
         dist = "cp311";
-        hash = "sha256-4Dj5dEGKb9hpg3HlVogNO1Gc9UibJhy1eym2mjivxAQ=";
+        hash = "sha256-L/gpDtx7ksfq5SUX9lSSYz4mey6QZ7rT5MMj0hPnfPU=";
       };
 
       "3.12-x86_64-linux" = getSrcFromPypi {
         platform = "manylinux2014_x86_64";
         dist = "cp312";
-        hash = "sha256-TlrGVtb3NTLmhnILWPLJR+jISCZ5SUV4wxNFpSfkCBo=";
+        hash = "sha256-RqGqhX9P7uikP8upXA4Kti1AwmzJcwtsaWVZCLo1n40=";
       };
       "3.12-aarch64-darwin" = getSrcFromPypi {
         platform = "macosx_11_0_arm64";
         dist = "cp312";
-        hash = "sha256-FIwK5CGykQjteuWzLZnbtAggIxLQeGV96bXlZGEytN0=";
+        hash = "sha256-jdi//jhTcC9jzZJNoO4lc0pNGc1ckmvgM9dyun0cF10=";
       };
       "3.12-x86_64-darwin" = getSrcFromPypi {
         platform = "macosx_10_14_x86_64";
         dist = "cp312";
-        hash = "sha256-9/jw/wr6oUD9pOadVAaMRL086iVMUXwVgnUMcG1UNvE=";
+        hash = "sha256-1sCaVFMpciRhrwVuc1FG0sjHTCKsdCaoRetp8ya096A=";
       };
     };
 
@@ -130,57 +145,48 @@ let
   gpuSrcs = {
     "cuda12.2-3.9" = fetchurl {
       url = "https://storage.googleapis.com/jax-releases/cuda12/jaxlib-${version}+cuda12.cudnn89-cp39-cp39-manylinux2014_x86_64.whl";
-      hash = "sha256-xdJKLPtx+CIza2CrWKM3M0cZJzyNFVTTTsvlgh38bfM=";
+      hash = "sha256-d8LIl22gIvmWfoyKfXKElZJXicPQIZxdS4HumhwQGCw=";
     };
     "cuda12.2-3.10" = fetchurl {
       url = "https://storage.googleapis.com/jax-releases/cuda12/jaxlib-${version}+cuda12.cudnn89-cp310-cp310-manylinux2014_x86_64.whl";
-      hash = "sha256-QCjrOczD2mp+CDwVXBc0/4rJnAizeV62AK0Dpx9X6TE=";
+      hash = "sha256-PXtWv+UEcMWF8LhWe6Z1UGkf14PG3dkJ0Iop0LiimnQ=";
     };
     "cuda12.2-3.11" = fetchurl {
       url = "https://storage.googleapis.com/jax-releases/cuda12/jaxlib-${version}+cuda12.cudnn89-cp311-cp311-manylinux2014_x86_64.whl";
-      hash = "sha256-Ipy3vk1yUplpNzECAFt63aOIhgEWgXG7hkoeTIk9bQQ=";
+      hash = "sha256-QO2WSOzmJ48VaCha596mELiOfPsAGLpGctmdzcCHE/o=";
     };
     "cuda12.2-3.12" = fetchurl {
       url = "https://storage.googleapis.com/jax-releases/cuda12/jaxlib-${version}+cuda12.cudnn89-cp312-cp312-manylinux2014_x86_64.whl";
-      hash = "sha256-LSnZHaUga/8Z65iKXWBnZDk4yUpNykFTu3vukCchO6Q=";
-    };
-    "cuda11.8-3.9" = fetchurl {
-      url = "https://storage.googleapis.com/jax-releases/cuda11/jaxlib-${version}+cuda11.cudnn86-cp39-cp39-manylinux2014_x86_64.whl";
-      hash = "sha256-UmyugL0VjlXkiD7fuDPWgW8XUpr/QaP5ggp6swoZTzU=";
-    };
-    "cuda11.8-3.10" = fetchurl {
-      url = "https://storage.googleapis.com/jax-releases/cuda11/jaxlib-${version}+cuda11.cudnn86-cp310-cp310-manylinux2014_x86_64.whl";
-      hash = "sha256-luKULEiV1t/sO6eckDxddJTiOFa0dtJeDlrvp+WYmHk=";
-    };
-    "cuda11.8-3.11" = fetchurl {
-      url = "https://storage.googleapis.com/jax-releases/cuda11/jaxlib-${version}+cuda11.cudnn86-cp311-cp311-manylinux2014_x86_64.whl";
-      hash = "sha256-4+uJ8Ij6mFGEmjFEgi3fLnSLZs+v18BRoOt7mZuqydw=";
-    };
-    "cuda11.8-3.12" = fetchurl {
-      url = "https://storage.googleapis.com/jax-releases/cuda11/jaxlib-${version}+cuda11.cudnn86-cp312-cp312-manylinux2014_x86_64.whl";
-      hash = "sha256-bUDFb94Ar/65SzzR9RLIs/SL/HdjaPT1Su5whmjkS00=";
+      hash = "sha256-ixWMaIChy4Ammsn23/3cCoala0lFibuUxyUr3tjfFKU=";
     };
   };
-
 in
 buildPythonPackage {
   pname = "jaxlib";
   inherit version;
   format = "wheel";
 
-  disabled = !(pythonVersion == "3.9" || pythonVersion == "3.10" || pythonVersion == "3.11" || pythonVersion == "3.12");
+  disabled =
+    !(
+      pythonVersion == "3.9"
+      || pythonVersion == "3.10"
+      || pythonVersion == "3.11"
+      || pythonVersion == "3.12"
+    );
 
   # See https://discourse.nixos.org/t/ofborg-does-not-respect-meta-platforms/27019/6.
   src =
     if !cudaSupport then
-      (
-        cpuSrcs."${pythonVersion}-${stdenv.hostPlatform.system}"
-          or (throw "jaxlib-bin is not supported on ${stdenv.hostPlatform.system}")
-      ) else gpuSrcs."${gpuSrcVersionString}";
+      (cpuSrcs."${pythonVersion}-${stdenv.hostPlatform.system}"
+        or (throw "jaxlib-bin is not supported on ${stdenv.hostPlatform.system}")
+      )
+    else
+      gpuSrcs."${gpuSrcVersionString}" or (throw "jaxlib-bin: No gpuSrc for ${gpuSrcVersionString}");
 
   # Prebuilt wheels are dynamically linked against things that nix can't find.
   # Run `autoPatchelfHook` to automagically fix them.
-  nativeBuildInputs = lib.optionals stdenv.isLinux [ autoPatchelfHook ]
+  nativeBuildInputs =
+    lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ]
     ++ lib.optionals cudaSupport [ autoAddDriverRunpath ];
   # Dynamic link dependencies
   buildInputs = [ stdenv.cc.cc.lib ];
@@ -213,22 +219,31 @@ buildPythonPackage {
   # for more info.
   postInstall = lib.optional cudaSupport ''
     mkdir -p $out/${python.sitePackages}/jaxlib/cuda/bin
-    ln -s ${lib.getExe' cudaPackagesGoogle.cuda_nvcc "ptxas"} $out/${python.sitePackages}/jaxlib/cuda/bin/ptxas
+    ln -s ${lib.getExe' cudaPackages.cuda_nvcc "ptxas"} $out/${python.sitePackages}/jaxlib/cuda/bin/ptxas
   '';
 
   inherit (jaxlib-build) pythonImportsCheck;
 
   meta = with lib; {
-    description = "XLA library for JAX";
+    description = "Prebuilt jaxlib backend from PyPi";
     homepage = "https://github.com/google/jax";
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.asl20;
     maintainers = with maintainers; [ samuela ];
-    platforms = [ "aarch64-darwin" "x86_64-linux" "x86_64-darwin" ];
+    platforms = [
+      "aarch64-darwin"
+      "x86_64-linux"
+      "x86_64-darwin"
+    ];
     broken =
       !(cudaSupport -> lib.versionAtLeast cudaVersion "11.1")
-      || !(cudaSupport -> lib.versionAtLeast cudaPackagesGoogle.cudnn.version "8.2")
-      || !(cudaSupport -> stdenv.isLinux)
-      || !(cudaSupport -> (gpuSrcs ? "cuda${cudaVersion}-${pythonVersion}"));
+      || !(cudaSupport -> lib.versionAtLeast cudaPackages.cudnn.version "8.2")
+      || !(cudaSupport -> stdenv.hostPlatform.isLinux)
+      || !(cudaSupport -> (gpuSrcs ? "cuda${cudaVersion}-${pythonVersion}"))
+      # Fails at pythonImportsCheckPhase:
+      # ...-python-imports-check-hook.sh/nix-support/setup-hook: line 10: 28017 Illegal instruction: 4
+      # /nix/store/5qpssbvkzfh73xih07xgmpkj5r565975-python3-3.11.9/bin/python3.11 -c
+      # 'import os; import importlib; list(map(lambda mod: importlib.import_module(mod), os.environ["pythonImportsCheck"].split()))'
+      || (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64);
   };
 }
diff --git a/pkgs/development/python-modules/jaxlib/default.nix b/pkgs/development/python-modules/jaxlib/default.nix
index cfca1f170ea4c..de7fea0a26e8a 100644
--- a/pkgs/development/python-modules/jaxlib/default.nix
+++ b/pkgs/development/python-modules/jaxlib/default.nix
@@ -1,115 +1,131 @@
-{ lib
-, pkgs
-, stdenv
+{
+  lib,
+  pkgs,
+  stdenv,
 
   # Build-time dependencies:
-, addOpenGLRunpath
-, autoAddDriverRunpath
-, bazel_6
-, binutils
-, buildBazelPackage
-, buildPythonPackage
-, cctools
-, curl
-, cython
-, fetchFromGitHub
-, fetchpatch
-, git
-, IOKit
-, jsoncpp
-, nsync
-, openssl
-, pybind11
-, setuptools
-, symlinkJoin
-, wheel
-, build
-, which
+  addDriverRunpath,
+  autoAddDriverRunpath,
+  bazel_6,
+  binutils,
+  buildBazelPackage,
+  buildPythonPackage,
+  cctools,
+  curl,
+  cython,
+  fetchFromGitHub,
+  git,
+  IOKit,
+  jsoncpp,
+  nsync,
+  openssl,
+  pybind11,
+  setuptools,
+  symlinkJoin,
+  wheel,
+  build,
+  which,
 
   # Python dependencies:
-, absl-py
-, flatbuffers
-, ml-dtypes
-, numpy
-, scipy
-, six
+  absl-py,
+  flatbuffers,
+  ml-dtypes,
+  numpy,
+  scipy,
+  six,
 
   # Runtime dependencies:
-, double-conversion
-, giflib
-, libjpeg_turbo
-, python
-, snappy
-, zlib
-
-, config
+  double-conversion,
+  giflib,
+  libjpeg_turbo,
+  python,
+  snappy,
+  zlib,
+
+  config,
   # CUDA flags:
-, cudaSupport ? config.cudaSupport
-, cudaPackagesGoogle
+  cudaSupport ? config.cudaSupport,
+  cudaPackages,
 
   # MKL:
-, mklSupport ? true
+  mklSupport ? true,
 }@inputs:
 
 let
-  inherit (cudaPackagesGoogle) cudaFlags cudaVersion cudnn nccl;
+  inherit (cudaPackages)
+    cudaFlags
+    cudaVersion
+    nccl
+    ;
 
   pname = "jaxlib";
-  version = "0.4.24";
+  version = "0.4.28";
 
   # It's necessary to consistently use backendStdenv when building with CUDA
   # support, otherwise we get libstdc++ errors downstream
   stdenv = throw "Use effectiveStdenv instead";
-  effectiveStdenv = if cudaSupport then cudaPackagesGoogle.backendStdenv else inputs.stdenv;
+  effectiveStdenv = if cudaSupport then cudaPackages.backendStdenv else inputs.stdenv;
 
   meta = with lib; {
-    description = "JAX is Autograd and XLA, brought together for high-performance machine learning research.";
+    description = "Source-built JAX backend. JAX is Autograd and XLA, brought together for high-performance machine learning research";
     homepage = "https://github.com/google/jax";
     license = licenses.asl20;
     maintainers = with maintainers; [ ndl ];
-    platforms = platforms.unix;
+
+    # Make this platforms.unix once Darwin is supported.
+    # The top-level jaxlib now falls back to jaxlib-bin on unsupported platforms.
     # aarch64-darwin is broken because of https://github.com/bazelbuild/rules_cc/pull/136
     # however even with that fix applied, it doesn't work for everyone:
     # https://github.com/NixOS/nixpkgs/pull/184395#issuecomment-1207287129
-    # NOTE: We always build with NCCL; if it is unsupported, then our build is broken.
-    broken = effectiveStdenv.isDarwin || nccl.meta.unsupported;
+    platforms = platforms.linux;
+  };
+
+  # Bazel wants a merged cudnn at configuration time
+  cudnnMerged = symlinkJoin {
+    name = "cudnn-merged";
+    paths = with cudaPackages; [
+      (lib.getDev cudnn)
+      (lib.getLib cudnn)
+    ];
   };
 
   # These are necessary at build time and run time.
   cuda_libs_joined = symlinkJoin {
     name = "cuda-joined";
-    paths = with cudaPackagesGoogle; [
-      cuda_cudart.lib # libcudart.so
-      cuda_cudart.static # libcudart_static.a
-      cuda_cupti.lib # libcupti.so
-      libcublas.lib # libcublas.so
-      libcufft.lib # libcufft.so
-      libcurand.lib # libcurand.so
-      libcusolver.lib # libcusolver.so
-      libcusparse.lib # libcusparse.so
+    paths = with cudaPackages; [
+      (lib.getLib cuda_cudart) # libcudart.so
+      (lib.getLib cuda_cupti) # libcupti.so
+      (lib.getLib libcublas) # libcublas.so
+      (lib.getLib libcufft) # libcufft.so
+      (lib.getLib libcurand) # libcurand.so
+      (lib.getLib libcusolver) # libcusolver.so
+      (lib.getLib libcusparse) # libcusparse.so
     ];
   };
   # These are only necessary at build time.
   cuda_build_deps_joined = symlinkJoin {
     name = "cuda-build-deps-joined";
-    paths = with cudaPackagesGoogle; [
+    paths = with cudaPackages; [
       cuda_libs_joined
 
       # Binaries
-      cudaPackagesGoogle.cuda_nvcc.bin # nvcc
+      (lib.getBin cuda_nvcc) # nvcc
+
+      # Archives
+      (lib.getOutput "static" cuda_cudart) # libcudart_static.a
 
       # Headers
-      cuda_cccl.dev # block_load.cuh
-      cuda_cudart.dev # cuda.h
-      cuda_cupti.dev # cupti.h
-      cuda_nvcc.dev # See https://github.com/google/jax/issues/19811
-      cuda_nvml_dev # nvml.h
-      cuda_nvtx.dev # nvToolsExt.h
-      libcublas.dev # cublas_api.h
-      libcufft.dev # cufft.h
-      libcurand.dev # curand.h
-      libcusolver.dev # cusolver_common.h
-      libcusparse.dev # cusparse.h
+      (lib.getDev cuda_cccl) # block_load.cuh
+      (lib.getDev cuda_cudart) # cuda.h
+      (lib.getDev cuda_cupti) # cupti.h
+      (lib.getDev cuda_nvcc) # See https://github.com/google/jax/issues/19811
+      (lib.getDev cuda_nvml_dev) # nvml.h
+      (lib.getDev cuda_nvtx) # nvToolsExt.h
+      (lib.getDev libcublas) # cublas_api.h
+      (lib.getDev libcufft) # cufft.h
+      (lib.getDev libcurand) # curand.h
+      (lib.getDev libcusolver) # cusolver_common.h
+      (lib.getDev libcusparse) # cusparse.h
     ];
   };
 
@@ -170,8 +186,10 @@ let
 
   arch =
     # KeyError: ('Linux', 'arm64')
-    if effectiveStdenv.hostPlatform.isLinux && effectiveStdenv.hostPlatform.linuxArch == "arm64" then "aarch64"
-    else effectiveStdenv.hostPlatform.linuxArch;
+    if effectiveStdenv.hostPlatform.isLinux && effectiveStdenv.hostPlatform.linuxArch == "arm64" then
+      "aarch64"
+    else
+      effectiveStdenv.hostPlatform.linuxArch;
 
   xla = effectiveStdenv.mkDerivation {
     pname = "xla-src";
@@ -181,19 +199,10 @@ let
       owner = "openxla";
       repo = "xla";
       # Update this according to https://github.com/google/jax/blob/jaxlib-v${version}/third_party/xla/workspace.bzl.
-      rev = "12eee889e1f2ad41e27d7b0e970cb92d282d3ec5";
-      hash = "sha256-68kjjgwYjRlcT0TVJo9BN6s+WTkdu5UMJqQcfHpBT90=";
+      rev = "e8247c3ea1d4d7f31cf27def4c7ac6f2ce64ecd4";
+      hash = "sha256-ZhgMIVs3Z4dTrkRWDqaPC/i7yJz2dsYXrZbjzqvPX3E=";
     };
 
-    patches = [
-      # Resolves "could not convert ‘result’ from ‘SmallVector<[...],6>’ to
-      # ‘SmallVector<[...],4>’" compilation error. See https://github.com/google/jax/issues/19814#issuecomment-1945141259.
-      (fetchpatch {
-        url = "https://github.com/openxla/xla/commit/7a614cd346594fc7ea2fe75570c9c53a4a444f60.patch";
-        hash = "sha256-RtuQTH8wzNiJcOtISLhf+gMlH1gg8hekvxEB+4wX6BM=";
-      })
-    ];
-
     dontBuild = true;
 
     # This is necessary for patchShebangs to know the right path to use.
@@ -220,7 +229,7 @@ let
       repo = "jax";
       # google/jax contains tags for jax and jaxlib. Only use jaxlib tags!
       rev = "refs/tags/${pname}-v${version}";
-      hash = "sha256-hmx7eo3pephc6BQfoJ3U0QwWBWmhkAc+7S4QmW32qQs=";
+      hash = "sha256-qSHPwi3is6Ts7pz5s4KzQHBMbcjGp+vAOsejW3o36Ek=";
     };
 
     nativeBuildInputs = [
@@ -231,30 +240,27 @@ let
       wheel
       build
       which
-    ] ++ lib.optionals effectiveStdenv.isDarwin [
-      cctools
-    ];
-
-    buildInputs = [
-      curl
-      double-conversion
-      giflib
-      jsoncpp
-      libjpeg_turbo
-      numpy
-      openssl
-      pkgs.flatbuffers
-      pkgs.protobuf
-      pybind11
-      scipy
-      six
-      snappy
-      zlib
-    ] ++ lib.optionals effectiveStdenv.isDarwin [
-      IOKit
-    ] ++ lib.optionals (!effectiveStdenv.isDarwin) [
-      nsync
-    ];
+    ] ++ lib.optionals effectiveStdenv.hostPlatform.isDarwin [ cctools ];
+
+    buildInputs =
+      [
+        curl
+        double-conversion
+        giflib
+        jsoncpp
+        libjpeg_turbo
+        numpy
+        openssl
+        pkgs.flatbuffers
+        pkgs.protobuf
+        pybind11
+        scipy
+        six
+        snappy
+        zlib
+      ]
+      ++ lib.optionals effectiveStdenv.hostPlatform.isDarwin [ IOKit ]
+      ++ lib.optionals (!effectiveStdenv.hostPlatform.isDarwin) [ nsync ];
 
     # We don't want to be quite so picky regarding bazel version
     postPatch = ''
@@ -285,103 +291,130 @@ let
         echo "#!${effectiveStdenv.shell}" > dummy-ldconfig/ldconfig
         chmod +x dummy-ldconfig/ldconfig
         export PATH="$PWD/dummy-ldconfig:$PATH"
-      '' +
-
-      # Construct .jax_configure.bazelrc. See https://github.com/google/jax/blob/b9824d7de3cb30f1df738cc42e486db3e9d915ff/build/build.py#L259-L345
-      # for more info. We assume
-      # * `cpu = None`
-      # * `enable_nccl = True`
-      # * `target_cpu_features = "release"`
-      # * `rocm_amdgpu_targets = None`
-      # * `enable_rocm = False`
-      # * `build_gpu_plugin = False`
-      # * `use_clang = False` (Should we use `effectiveStdenv.cc.isClang` instead?)
-      #
-      # Note: We should try just running https://github.com/google/jax/blob/ceb198582b62b9e6f6bdf20ab74839b0cf1db16e/build/build.py#L259-L266
-      # instead of duplicating the logic here. Perhaps we can leverage the
-      # `--configure_only` flag (https://github.com/google/jax/blob/ceb198582b62b9e6f6bdf20ab74839b0cf1db16e/build/build.py#L544-L548)?
       ''
-        cat <<CFG > ./.jax_configure.bazelrc
-        build --strategy=Genrule=standalone
-        build --repo_env PYTHON_BIN_PATH="${python}/bin/python"
-        build --action_env=PYENV_ROOT
-        build --python_path="${python}/bin/python"
-        build --distinct_host_configuration=false
-        build --define PROTOBUF_INCLUDE_PATH="${pkgs.protobuf}/include"
-      '' + lib.optionalString cudaSupport ''
+      +
+
+        # Construct .jax_configure.bazelrc. See https://github.com/google/jax/blob/b9824d7de3cb30f1df738cc42e486db3e9d915ff/build/build.py#L259-L345
+        # for more info. We assume
+        # * `cpu = None`
+        # * `enable_nccl = True`
+        # * `target_cpu_features = "release"`
+        # * `rocm_amdgpu_targets = None`
+        # * `enable_rocm = False`
+        # * `build_gpu_plugin = False`
+        # * `use_clang = False` (Should we use `effectiveStdenv.cc.isClang` instead?)
+        #
+        # Note: We should try just running https://github.com/google/jax/blob/ceb198582b62b9e6f6bdf20ab74839b0cf1db16e/build/build.py#L259-L266
+        # instead of duplicating the logic here. Perhaps we can leverage the
+        # `--configure_only` flag (https://github.com/google/jax/blob/ceb198582b62b9e6f6bdf20ab74839b0cf1db16e/build/build.py#L544-L548)?
+        ''
+          cat <<CFG > ./.jax_configure.bazelrc
+          build --strategy=Genrule=standalone
+          build --repo_env PYTHON_BIN_PATH="${python}/bin/python"
+          build --action_env=PYENV_ROOT
+          build --python_path="${python}/bin/python"
+          build --distinct_host_configuration=false
+          build --define PROTOBUF_INCLUDE_PATH="${pkgs.protobuf}/include"
+        ''
+      + lib.optionalString cudaSupport ''
         build --config=cuda
         build --action_env CUDA_TOOLKIT_PATH="${cuda_build_deps_joined}"
-        build --action_env CUDNN_INSTALL_PATH="${cudnn}"
-        build --action_env TF_CUDA_PATHS="${cuda_build_deps_joined},${cudnn},${nccl}"
+        build --action_env CUDNN_INSTALL_PATH="${cudnnMerged}"
+        build --action_env TF_CUDA_PATHS="${cuda_build_deps_joined},${cudnnMerged},${lib.getDev nccl}"
         build --action_env TF_CUDA_VERSION="${lib.versions.majorMinor cudaVersion}"
-        build --action_env TF_CUDNN_VERSION="${lib.versions.major cudnn.version}"
+        build --action_env TF_CUDNN_VERSION="${lib.versions.major cudaPackages.cudnn.version}"
         build:cuda --action_env TF_CUDA_COMPUTE_CAPABILITIES="${builtins.concatStringsSep "," cudaFlags.realArches}"
-      '' +
-      # Note that upstream conditions this on `wheel_cpu == "x86_64"`. We just
-      # rely on `effectiveStdenv.hostPlatform.avxSupport` instead. So far so
-      # good. See https://github.com/google/jax/blob/b9824d7de3cb30f1df738cc42e486db3e9d915ff/build/build.py#L322
-      # for upstream's version.
-      lib.optionalString (effectiveStdenv.hostPlatform.avxSupport && effectiveStdenv.hostPlatform.isUnix) ''
-        build --config=avx_posix
-      '' + lib.optionalString mklSupport ''
+      ''
+      +
+        # Note that upstream conditions this on `wheel_cpu == "x86_64"`. We just
+        # rely on `effectiveStdenv.hostPlatform.avxSupport` instead. So far so
+        # good. See https://github.com/google/jax/blob/b9824d7de3cb30f1df738cc42e486db3e9d915ff/build/build.py#L322
+        # for upstream's version.
+        lib.optionalString (effectiveStdenv.hostPlatform.avxSupport && effectiveStdenv.hostPlatform.isUnix)
+          ''
+            build --config=avx_posix
+          ''
+      + lib.optionalString mklSupport ''
         build --config=mkl_open_source_only
-      '' +
       ''
+      + ''
         CFG
       '';
 
     # Make sure Bazel knows about our configuration flags during fetching so that the
     # relevant dependencies can be downloaded.
-    bazelFlags = [
-      "-c opt"
-      # See https://bazel.build/external/advanced#overriding-repositories for
-      # information on --override_repository flag.
-      "--override_repository=xla=${xla}"
-    ] ++ lib.optionals effectiveStdenv.cc.isClang [
-      # bazel depends on the compiler frontend automatically selecting these flags based on file
-      # extension but our clang doesn't.
-      # https://github.com/NixOS/nixpkgs/issues/150655
-      "--cxxopt=-x"
-      "--cxxopt=c++"
-      "--host_cxxopt=-x"
-      "--host_cxxopt=c++"
-    ];
+    bazelFlags =
+      [
+        "-c opt"
+        # See https://bazel.build/external/advanced#overriding-repositories for
+        # information on --override_repository flag.
+        "--override_repository=xla=${xla}"
+      ]
+      ++ lib.optionals effectiveStdenv.cc.isClang [
+        # bazel depends on the compiler frontend automatically selecting these flags based on file
+        # extension but our clang doesn't.
+        # https://github.com/NixOS/nixpkgs/issues/150655
+        "--cxxopt=-x"
+        "--cxxopt=c++"
+        "--host_cxxopt=-x"
+        "--host_cxxopt=c++"
+      ];
 
     # We intentionally overfetch so we can share the fetch derivation across all the different configurations
     fetchAttrs = {
       TF_SYSTEM_LIBS = lib.concatStringsSep "," tf_system_libs;
       # we have to force @mkl_dnn_v1 since it's not needed on darwin
-      bazelTargets = [ bazelRunTarget "@mkl_dnn_v1//:mkl_dnn" ];
-      bazelFlags = bazelFlags ++ [
-        "--config=avx_posix"
-        "--config=mkl_open_source_only"
-      ] ++ lib.optionals cudaSupport [
-        # ideally we'd add this unconditionally too, but it doesn't work on darwin
-        # we make this conditional on `cudaSupport` instead of the system, so that the hash for both
-        # the cuda and the non-cuda deps can be computed on linux, since a lot of contributors don't
-        # have access to darwin machines
-        "--config=cuda"
+      bazelTargets = [
+        bazelRunTarget
+        "@mkl_dnn_v1//:mkl_dnn"
       ];
-
-      sha256 = (if cudaSupport then {
-        x86_64-linux = "sha256-8JilAoTbqOjOOJa/Zc/n/quaEDcpdcLXCNb34mfB+OM=";
-      } else {
-        x86_64-linux = "sha256-iqS+I1FQLNWXNMsA20cJp7YkyGUeshee5b2QfRBNZtk=";
-        aarch64-linux = "sha256-qmJ0Fm/VGMTmko4PhKs1P8/GLEJmVxb8xg+ss/HsakY==";
-      }).${effectiveStdenv.system} or (throw "jaxlib: unsupported system: ${effectiveStdenv.system}");
+      bazelFlags =
+        bazelFlags
+        ++ [
+          "--config=avx_posix"
+          "--config=mkl_open_source_only"
+        ]
+        ++ lib.optionals cudaSupport [
+          # ideally we'd add this unconditionally too, but it doesn't work on darwin
+          # we make this conditional on `cudaSupport` instead of the system, so that the hash for both
+          # the cuda and the non-cuda deps can be computed on linux, since a lot of contributors don't
+          # have access to darwin machines
+          "--config=cuda"
+        ];
+
+      sha256 =
+        (
+          if cudaSupport then
+            { x86_64-linux = "sha256-Uf0VMRE0jgaWEYiuphWkWloZ5jMeqaWBl3lSvk2y1HI="; }
+          else
+            {
+              x86_64-linux = "sha256-NzJJg6NlrPGMiR8Fn8u4+fu0m+AulfmN5Xqk63Um6sw=";
+              aarch64-linux = "sha256-Ro3qzrUxSR+3TH6ROoJTq+dLSufrDN/9oEo2MRkx7wM=";
+            }
+        ).${effectiveStdenv.system} or (throw "jaxlib: unsupported system: ${effectiveStdenv.system}");
+
+        # Non-reproducible fetch https://github.com/NixOS/nixpkgs/issues/321920#issuecomment-2184940546
+        preInstall = ''
+          cat << \EOF > "$bazelOut/external/go_sdk/versions.json"
+          []
+          EOF
+        '';
     };
 
     buildAttrs = {
       outputs = [ "out" ];
 
-      TF_SYSTEM_LIBS = lib.concatStringsSep "," (tf_system_libs ++ lib.optionals (!effectiveStdenv.isDarwin) [
-        "nsync" # fails to build on darwin
-      ]);
+      TF_SYSTEM_LIBS = lib.concatStringsSep "," (
+        tf_system_libs
+        ++ lib.optionals (!effectiveStdenv.hostPlatform.isDarwin) [
+          "nsync" # fails to build on darwin
+        ]
+      );
 
       # Note: we cannot do most of this patching at `patch` phase as the deps
       # are not available yet. Framework search paths aren't added by bintools
       # hook. See https://github.com/NixOS/nixpkgs/pull/41914.
-      preBuild = lib.optionalString effectiveStdenv.isDarwin ''
+      preBuild = lib.optionalString effectiveStdenv.hostPlatform.isDarwin ''
         export NIX_LDFLAGS+=" -F${IOKit}/Library/Frameworks"
         substituteInPlace ../output/external/rules_cc/cc/private/toolchain/osx_cc_wrapper.sh.tpl \
           --replace "/usr/bin/install_name_tool" "${cctools}/bin/install_name_tool"
@@ -399,31 +432,39 @@ let
       "macosx_10_9_${arch}"
     else if effectiveStdenv.system == "aarch64-darwin" then
       "macosx_11_0_${arch}"
-    else throw "Unsupported target platform: ${effectiveStdenv.hostPlatform}";
-
+    else
+      throw "Unsupported target platform: ${effectiveStdenv.hostPlatform}";
 in
 buildPythonPackage {
-  inherit meta pname version;
+  inherit pname version;
   format = "wheel";
 
   src =
-    let cp = "cp${builtins.replaceStrings ["."] [""] python.pythonVersion}";
-    in "${bazel-build}/jaxlib-${version}-${cp}-${cp}-${platformTag}.whl";
+    let
+      cp = "cp${builtins.replaceStrings [ "." ] [ "" ] python.pythonVersion}";
+    in
+    "${bazel-build}/jaxlib-${version}-${cp}-${cp}-${platformTag}.whl";
 
   # Note that jaxlib looks for "ptxas" in $PATH. See https://github.com/NixOS/nixpkgs/pull/164176#discussion_r828801621
   # for more info.
   postInstall = lib.optionalString cudaSupport ''
     mkdir -p $out/bin
-    ln -s ${cudaPackagesGoogle.cuda_nvcc.bin}/bin/ptxas $out/bin/ptxas
+    ln -s ${lib.getExe' cudaPackages.cuda_nvcc "ptxas"} $out/bin/ptxas
 
     find $out -type f \( -name '*.so' -or -name '*.so.*' \) | while read lib; do
-      patchelf --add-rpath "${lib.makeLibraryPath [cuda_libs_joined cudnn nccl]}" "$lib"
+      patchelf --add-rpath "${
+        lib.makeLibraryPath [
+          cuda_libs_joined
+          (lib.getLib cudaPackages.cudnn)
+          nccl
+        ]
+      }" "$lib"
     done
   '';
 
   nativeBuildInputs = lib.optionals cudaSupport [ autoAddDriverRunpath ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     absl-py
     curl
     double-conversion
@@ -448,4 +489,11 @@ buildPythonPackage {
   # Without it there are complaints about libcudart.so.11.0 not being found
   # because RPATH path entries added above are stripped.
   dontPatchELF = cudaSupport;
+
+  passthru = {
+    # Note "bazel.*.tar.gz" can be accessed as `jaxlib.bazel-build.deps`
+    inherit bazel-build;
+  };
+
+  inherit meta;
 }
diff --git a/pkgs/development/python-modules/jaxopt/default.nix b/pkgs/development/python-modules/jaxopt/default.nix
index af924cea5ab22..b617e21c1c277 100644
--- a/pkgs/development/python-modules/jaxopt/default.nix
+++ b/pkgs/development/python-modules/jaxopt/default.nix
@@ -1,26 +1,28 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, fetchpatch
-, pytest-xdist
-, pytestCheckHook
-, absl-py
-, cvxpy
-, jax
-, jaxlib
-, matplotlib
-, numpy
-, optax
-, scipy
-, scikit-learn
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  fetchpatch,
+  pytest-xdist,
+  pytestCheckHook,
+  setuptools,
+  absl-py,
+  cvxpy,
+  jax,
+  jaxlib,
+  matplotlib,
+  numpy,
+  optax,
+  scipy,
+  scikit-learn,
 }:
 
 buildPythonPackage rec {
   pname = "jaxopt";
   version = "0.8.3";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -41,7 +43,9 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     absl-py
     jax
     jaxlib
@@ -66,18 +70,37 @@ buildPythonPackage rec {
     "jaxopt.tree_util"
   ];
 
-  disabledTests = lib.optionals (stdenv.isLinux && stdenv.isAarch64) [
-    # https://github.com/google/jaxopt/issues/577
-    "test_binary_logit_log_likelihood"
-    "test_solve_sparse"
-    "test_logreg_with_intercept_manual_loop3"
-  ];
+  disabledTests =
+    [
+      # https://github.com/google/jaxopt/issues/592
+      "test_solve_sparse"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
+      # https://github.com/google/jaxopt/issues/577
+      "test_binary_logit_log_likelihood"
+      "test_solve_sparse"
+      "test_logreg_with_intercept_manual_loop3"
+
+      # https://github.com/google/jaxopt/issues/593
+      # Makes the test suite crash
+      "test_dtype_consistency"
+      # AssertionError: Array(0.01411963, dtype=float32) not less than or equal to 0.01
+      "test_multiclass_logreg6"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Fatal Python error: Aborted
+      "test_dtype_consistency"
+
+      # AssertionError (flaky numerical tests)
+      "test_logreg_with_intercept_manual_loop3"
+      "test_binary_logit_log_likelihood"
+    ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://jaxopt.github.io";
     description = "Hardware accelerated, batchable and differentiable optimizers in JAX";
     changelog = "https://github.com/google/jaxopt/releases/tag/jaxopt-v${version}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ bcdarwin ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ bcdarwin ];
   };
 }
diff --git a/pkgs/development/python-modules/jaxtyping/default.nix b/pkgs/development/python-modules/jaxtyping/default.nix
index b64ab981913ac..e741b66f27d38 100644
--- a/pkgs/development/python-modules/jaxtyping/default.nix
+++ b/pkgs/development/python-modules/jaxtyping/default.nix
@@ -1,26 +1,30 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, hatchling
-, pythonRelaxDepsHook
-, numpy
-, typeguard
-, typing-extensions
-, cloudpickle
-, equinox
-, ipython
-, jax
-, jaxlib
-, pytestCheckHook
-, tensorflow
-, torch
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  hatchling,
+
+  # dependencies
+  typeguard,
+
+  # tests
+  cloudpickle,
+  equinox,
+  ipython,
+  jax,
+  jaxlib,
+  pytestCheckHook,
+  tensorflow,
+  torch,
 }:
 
 let
   self = buildPythonPackage rec {
     pname = "jaxtyping";
-    version = "0.2.28";
+    version = "0.2.34";
     pyproject = true;
 
     disabled = pythonOlder "3.9";
@@ -29,23 +33,14 @@ let
       owner = "google";
       repo = "jaxtyping";
       rev = "refs/tags/v${version}";
-      hash = "sha256-xDFrgPecUIfCACg/xkMQ8G1+6hNiUUDg9eCZKNpNfzs=";
+      hash = "sha256-zkB8/+0PmBKDFhj9dd8QZ5Euglm+W3BBUM4dwFUYYW8=";
     };
 
-    nativeBuildInputs = [
-      hatchling
-      pythonRelaxDepsHook
-    ];
+    build-system = [ hatchling ];
 
-    propagatedBuildInputs = [
-      numpy
-      typeguard
-      typing-extensions
-    ];
+    dependencies = [ typeguard ];
 
-    pythonRelaxDeps = [
-      "typeguard"
-    ];
+    pythonRelaxDeps = [ "typeguard" ];
 
     nativeCheckInputs = [
       cloudpickle
@@ -71,11 +66,13 @@ let
 
     pythonImportsCheck = [ "jaxtyping" ];
 
-    meta = with lib; {
+    meta = {
       description = "Type annotations and runtime checking for JAX arrays and PyTrees";
       homepage = "https://github.com/google/jaxtyping";
-      license = licenses.mit;
-      maintainers = with maintainers; [ GaetanLepage ];
+      changelog = "https://github.com/patrick-kidger/jaxtyping/releases/tag/v${version}";
+      license = lib.licenses.mit;
+      maintainers = with lib.maintainers; [ GaetanLepage ];
     };
   };
- in self
+in
+self
diff --git a/pkgs/development/python-modules/jaydebeapi/default.nix b/pkgs/development/python-modules/jaydebeapi/default.nix
index 3aa26ca020f79..0f8b13535ca76 100644
--- a/pkgs/development/python-modules/jaydebeapi/default.nix
+++ b/pkgs/development/python-modules/jaydebeapi/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jpype1
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jpype1,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
     sha256 = "f25e9307fbb5960cb035394c26e37731b64cc465b197c4344cee85ec450ab92f";
   };
 
-  propagatedBuildInputs = [
-    jpype1
-  ];
+  propagatedBuildInputs = [ jpype1 ];
 
   meta = with lib; {
     homepage = "https://github.com/baztian/jaydebeapi";
diff --git a/pkgs/development/python-modules/jc/default.nix b/pkgs/development/python-modules/jc/default.nix
index 0b29b126af6f3..9cf9bb7781433 100644
--- a/pkgs/development/python-modules/jc/default.nix
+++ b/pkgs/development/python-modules/jc/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, stdenv
-, buildPackages
-, buildPythonPackage
-, fetchFromGitHub
-, installShellFiles
-, ruamel-yaml
-, xmltodict
-, pygments
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPackages,
+  buildPythonPackage,
+  fetchFromGitHub,
+  installShellFiles,
+  ruamel-yaml,
+  xmltodict,
+  pygments,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "jc";
-  version = "1.25.2";
+  version = "1.25.3";
   format = "setuptools";
   disabled = pythonOlder "3.6";
 
@@ -21,18 +22,26 @@ buildPythonPackage rec {
     owner = "kellyjonbrazil";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-SDZ92m4TVH5/ldGkVZspzIrR0G1vHOv1OvAOSaWYkZ0=";
+    hash = "sha256-yp5533CzqJ++G6nHip1281ZkB4JyfLb3inR9BwDkxSs=";
   };
 
-  propagatedBuildInputs = [ ruamel-yaml xmltodict pygments ];
+  propagatedBuildInputs = [
+    ruamel-yaml
+    xmltodict
+    pygments
+  ];
 
   nativeBuildInputs = [ installShellFiles ];
 
-  postInstall = let emulator = stdenv.hostPlatform.emulator buildPackages; in ''
-    installShellCompletion --cmd jc \
-      --bash <(${emulator} $out/bin/jc --bash-comp) \
-      --zsh  <(${emulator} $out/bin/jc --zsh-comp)
-  '';
+  postInstall =
+    let
+      emulator = stdenv.hostPlatform.emulator buildPackages;
+    in
+    ''
+      installShellCompletion --cmd jc \
+        --bash <(${emulator} $out/bin/jc --bash-comp) \
+        --zsh  <(${emulator} $out/bin/jc --zsh-comp)
+    '';
 
   nativeCheckInputs = [ pytestCheckHook ];
 
diff --git a/pkgs/development/python-modules/jdatetime/default.nix b/pkgs/development/python-modules/jdatetime/default.nix
index 5d2b4e31aceae..553500c47be67 100644
--- a/pkgs/development/python-modules/jdatetime/default.nix
+++ b/pkgs/development/python-modules/jdatetime/default.nix
@@ -1,34 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "jdatetime";
-  version = "4.1.1";
+  version = "5.0.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-HdDuIQFgx70wACgDxEPmJgrGAuplsGVlKh1WfTv9yno=";
+    hash = "sha256-LMYD2RPA2OMokoRU09KVJhywN+mVAif2fJYpq0cQ/fk=";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
-  pythonImportsCheck = [
-    "jdatetime"
-  ];
+  pythonImportsCheck = [ "jdatetime" ];
 
   meta = with lib; {
     description = "Jalali datetime binding";
     homepage = "https://github.com/slashmili/python-jalali";
     license = licenses.psfl;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jdcal/default.nix b/pkgs/development/python-modules/jdcal/default.nix
index 6278be96e10ca..7303d46384de6 100644
--- a/pkgs/development/python-modules/jdcal/default.nix
+++ b/pkgs/development/python-modules/jdcal/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,7 @@ buildPythonPackage rec {
   '';
 
   meta = {
-    description = "A module containing functions for converting between Julian dates and calendar dates";
+    description = "Module containing functions for converting between Julian dates and calendar dates";
     homepage = "https://github.com/phn/jdcal";
     license = lib.licenses.bsd2;
     maintainers = with lib.maintainers; [ lihop ];
diff --git a/pkgs/development/python-modules/jedi-language-server/default.nix b/pkgs/development/python-modules/jedi-language-server/default.nix
index 0a67730726bc6..e67d04be02c18 100644
--- a/pkgs/development/python-modules/jedi-language-server/default.nix
+++ b/pkgs/development/python-modules/jedi-language-server/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, docstring-to-markdown
-, fetchFromGitHub
-, jedi
-, lsprotocol
-, poetry-core
-, pygls
-, pydantic
-, pyhamcrest
-, pytestCheckHook
-, python-lsp-jsonrpc
-, pythonOlder
-, stdenv
+{
+  lib,
+  buildPythonPackage,
+  docstring-to-markdown,
+  fetchFromGitHub,
+  jedi,
+  lsprotocol,
+  poetry-core,
+  pygls,
+  pydantic,
+  pyhamcrest,
+  pytestCheckHook,
+  python-lsp-jsonrpc,
+  pythonOlder,
+  stdenv,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     hash = "sha256-RDLwL9AZ3G8CzVwDtWqFFZNH/ulpHeFBhglbWNv/ZIk=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     docstring-to-markdown
@@ -50,18 +49,16 @@ buildPythonPackage rec {
     HOME="$(mktemp -d)"
   '';
 
-  disabledTests = lib.optionals stdenv.isDarwin [
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
     # https://github.com/pappasam/jedi-language-server/issues/313
     "test_publish_diagnostics_on_change"
     "test_publish_diagnostics_on_save"
   ];
 
-  pythonImportsCheck = [
-    "jedi_language_server"
-  ];
+  pythonImportsCheck = [ "jedi_language_server" ];
 
   meta = with lib; {
-    description = "A Language Server for the latest version(s) of Jedi";
+    description = "Language Server for the latest version(s) of Jedi";
     mainProgram = "jedi-language-server";
     homepage = "https://github.com/pappasam/jedi-language-server";
     changelog = "https://github.com/pappasam/jedi-language-server/blob/${version}/CHANGELOG.md";
diff --git a/pkgs/development/python-modules/jedi/default.nix b/pkgs/development/python-modules/jedi/default.nix
index eb90d3c907ed3..b88dc9311e91b 100644
--- a/pkgs/development/python-modules/jedi/default.nix
+++ b/pkgs/development/python-modules/jedi/default.nix
@@ -1,18 +1,20 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  fetchpatch2,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, parso
+  # dependencies
+  parso,
 
-# tests
-, attrs
-, pytestCheckHook
+  # tests
+  attrs,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -30,13 +32,17 @@ buildPythonPackage rec {
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [
-    setuptools
+  patches = [
+    (fetchpatch2 {
+      # pytest8 compat
+      url = "https://github.com/davidhalter/jedi/commit/39c8317922f8f0312c12127cad10aea38d0ed7b5.patch";
+      hash = "sha256-wXHWcfoRJUl+ADrNMML0+DYTcRTyLs55Qrs7sDqT8BA=";
+    })
   ];
 
-  propagatedBuildInputs = [
-    parso
-  ];
+  nativeBuildInputs = [ setuptools ];
+
+  propagatedBuildInputs = [ parso ];
 
   nativeCheckInputs = [
     attrs
@@ -47,19 +53,29 @@ buildPythonPackage rec {
     export HOME=$TMPDIR
   '';
 
-  disabledTests = [
-    # sensitive to platform, causes false negatives on darwin
-    "test_import"
-  ] ++ lib.optionals (stdenv.isAarch64 && pythonOlder "3.9") [
-    # AssertionError: assert 'foo' in ['setup']
-    "test_init_extension_module"
-  ];
+  disabledTests =
+    [
+      # sensitive to platform, causes false negatives on darwin
+      "test_import"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isAarch64 && pythonOlder "3.9") [
+      # AssertionError: assert 'foo' in ['setup']
+      "test_init_extension_module"
+    ]
+    ++ lib.optionals (stdenv.targetPlatform.useLLVM or false) [
+      # InvalidPythonEnvironment: The python binary is potentially unsafe.
+      "test_create_environment_executable"
+      # AssertionError: assert ['', '.1000000000000001'] == ['', '.1']
+      "test_dict_keys_completions"
+      # AssertionError: assert ['', '.1000000000000001'] == ['', '.1']
+      "test_dict_completion"
+    ];
 
   meta = with lib; {
-    description = "An autocompletion tool for Python that can be used for text editors";
+    description = "Autocompletion tool for Python that can be used for text editors";
     homepage = "https://github.com/davidhalter/jedi";
     changelog = "https://github.com/davidhalter/jedi/blob/${version}/CHANGELOG.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jeepney/default.nix b/pkgs/development/python-modules/jeepney/default.nix
index 3ba062e1ac54f..fafcfb0df3d8c 100644
--- a/pkgs/development/python-modules/jeepney/default.nix
+++ b/pkgs/development/python-modules/jeepney/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, flit-core
-, async-timeout
-, dbus
-, pytest
-, pytest-trio
-, pytest-asyncio
-, testpath
-, trio
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  flit-core,
+  async-timeout,
+  dbus,
+  pytest,
+  pytest-trio,
+  pytest-asyncio,
+  testpath,
+  trio,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     sha256 = "5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   nativeCheckInputs = [
     async-timeout
diff --git a/pkgs/development/python-modules/jello/default.nix b/pkgs/development/python-modules/jello/default.nix
index 0b2d6cff78824..bd945515fff88 100644
--- a/pkgs/development/python-modules/jello/default.nix
+++ b/pkgs/development/python-modules/jello/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, installShellFiles
-, pygments
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  installShellFiles,
+  pygments,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,17 +19,11 @@ buildPythonPackage rec {
     hash = "sha256-EN09Kcnw4HNT2roCoQyZkoHEfkM9qxqtneZPuBg46z4=";
   };
 
-  nativeBuildInputs = [
-    installShellFiles
-  ];
+  nativeBuildInputs = [ installShellFiles ];
 
-  propagatedBuildInputs = [
-    pygments
-  ];
+  propagatedBuildInputs = [ pygments ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   pythonImportsCheck = [ "jello" ];
 
diff --git a/pkgs/development/python-modules/jellyfin-apiclient-python/default.nix b/pkgs/development/python-modules/jellyfin-apiclient-python/default.nix
index 4413f081a6355..739a0937a4aa9 100644
--- a/pkgs/development/python-modules/jellyfin-apiclient-python/default.nix
+++ b/pkgs/development/python-modules/jellyfin-apiclient-python/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, certifi
-, fetchPypi
-, pythonOlder
-, requests
-, urllib3
-, websocket-client
+{
+  lib,
+  buildPythonPackage,
+  certifi,
+  fetchPypi,
+  pythonOlder,
+  requests,
+  urllib3,
+  websocket-client,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
   # Module has no test
   doCheck = false;
 
-  pythonImportsCheck = [
-    "jellyfin_apiclient_python"
-  ];
+  pythonImportsCheck = [ "jellyfin_apiclient_python" ];
 
   meta = with lib; {
     description = "Python API client for Jellyfin";
diff --git a/pkgs/development/python-modules/jellyfish/default.nix b/pkgs/development/python-modules/jellyfish/default.nix
index 5afe54567cb4e..8517c239de44d 100644
--- a/pkgs/development/python-modules/jellyfish/default.nix
+++ b/pkgs/development/python-modules/jellyfish/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, pytest
-, unicodecsv
-, rustPlatform
-, libiconv
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  pytest,
+  unicodecsv,
+  rustPlatform,
+  libiconv,
 }:
 
 buildPythonPackage rec {
   pname = "jellyfish";
-  version = "1.0.0";
+  version = "1.0.4";
 
   disabled = !isPy3k;
 
@@ -19,7 +20,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-iBquNnGZm7B85QwnaW8pyn6ELz4SOswNtlJcmZmIG9Q=";
+    hash = "sha256-cqq7O+3VE83SBxIkL9URc7WZcsCxRregucbzLxZWKT8=";
   };
 
   nativeBuildInputs = with rustPlatform; [
@@ -27,17 +28,18 @@ buildPythonPackage rec {
     cargoSetupHook
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [
-    libiconv
-  ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}-rust-dependencies";
-    hash = "sha256-Grk+n4VCPjirafcRWWI51jHw/IFUYkBtbXY739j0MFI=";
+    hash = "sha256-HtzgxTO6tbN/tohaiTm9B9jrFYGTt1Szo9qRzpcy8BA=";
   };
 
-  nativeCheckInputs = [ pytest unicodecsv ];
+  nativeCheckInputs = [
+    pytest
+    unicodecsv
+  ];
 
   meta = {
     homepage = "https://github.com/sunlightlabs/jellyfish";
diff --git a/pkgs/development/python-modules/jenkins-job-builder/default.nix b/pkgs/development/python-modules/jenkins-job-builder/default.nix
index 852b529e8bcc1..6e4cb647e8651 100644
--- a/pkgs/development/python-modules/jenkins-job-builder/default.nix
+++ b/pkgs/development/python-modules/jenkins-job-builder/default.nix
@@ -1,27 +1,39 @@
-{ lib, buildPythonPackage, fetchPypi, fasteners
-, jinja2
-, pbr
-, python-jenkins
-, pyyaml
-, six
-, stevedore
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fasteners,
+  jinja2,
+  pbr,
+  python-jenkins,
+  pyyaml,
+  six,
+  stevedore,
 }:
 
 buildPythonPackage rec {
   pname = "jenkins-job-builder";
-  version = "6.2.0";
+  version = "6.3.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-kV2g1qbS5L7bEqfPijj60eK+pbTc8SAs/tctpNv0PFs=";
+    hash = "sha256-RD9VQFlwLJ3TiReKty+q056CjsOnSD2J2bpASmqHIEM=";
   };
 
   postPatch = ''
     export HOME=$(mktemp -d)
   '';
 
-  propagatedBuildInputs = [ pbr python-jenkins pyyaml six stevedore fasteners jinja2 ];
+  propagatedBuildInputs = [
+    pbr
+    python-jenkins
+    pyyaml
+    six
+    stevedore
+    fasteners
+    jinja2
+  ];
 
   # Need to fix test deps, relies on stestr and a few other packages that aren't available on nixpkgs
   checkPhase = "$out/bin/jenkins-jobs --help";
@@ -31,7 +43,6 @@ buildPythonPackage rec {
     mainProgram = "jenkins-jobs";
     homepage = "https://jenkins-job-builder.readthedocs.io/en/latest/";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/jenkinsapi/default.nix b/pkgs/development/python-modules/jenkinsapi/default.nix
index 0fb7c3327db45..72cea1d05e4c5 100644
--- a/pkgs/development/python-modules/jenkinsapi/default.nix
+++ b/pkgs/development/python-modules/jenkinsapi/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, mock
-, pbr
-, pytest-mock
-, pytestCheckHook
-, pytz
-, requests
-, setuptools
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  mock,
+  pbr,
+  pytest-mock,
+  pytestCheckHook,
+  pytz,
+  requests,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-JGqYpj5h9UoV0WEFyxVIjFZwc030HobHrw1dnAryQLk=";
   };
 
-  patches = [
-    ./pytest-warn-none.patch
-  ];
+  patches = [ ./pytest-warn-none.patch ];
 
   nativeBuildInputs = [
     flit-core
@@ -54,10 +53,9 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A Python API for accessing resources on a Jenkins continuous-integration server";
+    description = "Python API for accessing resources on a Jenkins continuous-integration server";
     homepage = "https://github.com/salimfadhley/jenkinsapi";
     maintainers = with maintainers; [ drets ] ++ teams.deshaw.members;
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/jieba/default.nix b/pkgs/development/python-modules/jieba/default.nix
index 99803de03c5b8..d6ea70b400114 100644
--- a/pkgs/development/python-modules/jieba/default.nix
+++ b/pkgs/development/python-modules/jieba/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchFromGitHub, glibcLocales, python, isPy3k }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  glibcLocales,
+  python,
+  isPy3k,
+}:
 
 buildPythonPackage rec {
   pname = "jieba";
diff --git a/pkgs/development/python-modules/jinja2-ansible-filters/default.nix b/pkgs/development/python-modules/jinja2-ansible-filters/default.nix
index 4125a574db2b9..3e007d326d888 100644
--- a/pkgs/development/python-modules/jinja2-ansible-filters/default.nix
+++ b/pkgs/development/python-modules/jinja2-ansible-filters/default.nix
@@ -1,6 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi
-, jinja2
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jinja2,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -27,6 +30,6 @@ buildPythonPackage rec {
     description = "Jinja2 Ansible Filters";
     homepage = "https://pypi.org/project/jinja2-ansible-filters/";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jinja2-git/default.nix b/pkgs/development/python-modules/jinja2-git/default.nix
index 518f62c540300..df9ca0585d3b0 100644
--- a/pkgs/development/python-modules/jinja2-git/default.nix
+++ b/pkgs/development/python-modules/jinja2-git/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, jinja2
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  jinja2,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
   pname = "jinja2-git";
-  version = "1.3.0";
+  version = "1.4.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "wemake-services";
     repo = "jinja2-git";
     rev = "refs/tags/${version}";
-    hash = "sha256-XuN2L3/HLcZ/WPWiCtufDOmkxj+q4I6IOgjrGQHfNLk=";
+    hash = "sha256-ZcKRLHcZ/rpiUyYK4ifDJaZriN+YyRF1RKCjIKum98U=";
   };
 
-  nativeBuildInputs = [ poetry-core ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [ jinja2 ];
+  dependencies = [ jinja2 ];
 
   # the tests need to be run on the git repository
   doCheck = false;
diff --git a/pkgs/development/python-modules/jinja2-pluralize/default.nix b/pkgs/development/python-modules/jinja2-pluralize/default.nix
index 79416be375645..5a6013e884687 100644
--- a/pkgs/development/python-modules/jinja2-pluralize/default.nix
+++ b/pkgs/development/python-modules/jinja2-pluralize/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jinja2
-, inflect
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jinja2,
+  inflect,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,13 +23,9 @@ buildPythonPackage rec {
     inflect
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "jinja2_pluralize"
-  ];
+  pythonImportsCheck = [ "jinja2_pluralize" ];
 
   meta = with lib; {
     description = "Jinja2 pluralize filters";
diff --git a/pkgs/development/python-modules/jinja2-time/default.nix b/pkgs/development/python-modules/jinja2-time/default.nix
index 611bc19df8243..b0783c69f4ba5 100644
--- a/pkgs/development/python-modules/jinja2-time/default.nix
+++ b/pkgs/development/python-modules/jinja2-time/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, arrow
-, freezegun
-, jinja2
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchpatch,
+  fetchPypi,
+  arrow,
+  freezegun,
+  jinja2,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,15 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [ arrow jinja2 ];
+  propagatedBuildInputs = [
+    arrow
+    jinja2
+  ];
 
-  nativeCheckInputs = [ freezegun pytestCheckHook ];
+  nativeCheckInputs = [
+    freezegun
+    pytestCheckHook
+  ];
 
   pythonImportsCheck = [ "jinja2_time" ];
 
@@ -36,6 +43,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/hackebrot/jinja2-time";
     description = "Jinja2 Extension for Dates and Times";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jinja2/default.nix b/pkgs/development/python-modules/jinja2/default.nix
index 1c260e37c7b0b..ee1d27671b5d6 100644
--- a/pkgs/development/python-modules/jinja2/default.nix
+++ b/pkgs/development/python-modules/jinja2/default.nix
@@ -1,53 +1,57 @@
-{ lib
-, stdenv
-, python
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, babel
-, markupsafe
-, pytestCheckHook
-, sphinxHook
-, pallets-sphinx-themes
-, setuptools
-, sphinxcontrib-log-cabinet
-, sphinx-issues
+{
+  lib,
+  stdenv,
+  python,
+  pythonAtLeast,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  flit-core,
+  babel,
+  markupsafe,
+  pytestCheckHook,
+  sphinxHook,
+  pallets-sphinx-themes,
+  sphinxcontrib-log-cabinet,
+  sphinx-issues,
+
+  # Reverse dependency
+  sage,
 }:
 
 buildPythonPackage rec {
   pname = "jinja2";
-  version = "3.1.3";
+  version = "3.1.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    pname = "Jinja2";
-    inherit version;
-    hash = "sha256-rIvWVE1Lssl5K/OhWegLuo/afwfoG8Ou1WVDLVklupA=";
+    inherit pname version;
+    hash = "sha256-Sjruesu+cwOu3o6WSNE7i/iKQpKCqmEiqZPwrIAMs2k=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    markupsafe
-  ];
+  propagatedBuildInputs = [ markupsafe ];
 
   passthru.optional-dependencies = {
-    i18n = [
-      babel
-    ];
+    i18n = [ babel ];
   };
 
   # Multiple tests run out of stack space on 32bit systems with python2.
   # See https://github.com/pallets/jinja/issues/1158
-  doCheck = !stdenv.is32bit;
+  doCheck = !stdenv.hostPlatform.is32bit;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.i18n;
+  nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.i18n;
+
+  disabledTests = lib.optionals (pythonAtLeast "3.13") [
+    # https://github.com/pallets/jinja/issues/1900
+    "test_custom_async_iteratable_filter"
+    "test_first"
+    "test_loop_errors"
+    "test_package_zip_list"
+  ];
 
   passthru.doc = stdenv.mkDerivation {
     # Forge look and feel of multi-output derivation as best as we can.
@@ -76,6 +80,10 @@ buildPythonPackage rec {
     inherit meta;
   };
 
+  passthru.tests = {
+    inherit sage;
+  };
+
   meta = with lib; {
     changelog = "https://github.com/pallets/jinja/blob/${version}/CHANGES.rst";
     description = "Very fast and expressive template engine";
diff --git a/pkgs/development/python-modules/jira/default.nix b/pkgs/development/python-modules/jira/default.nix
index 1963fe2e8e89b..2e2ff91c8b0a3 100644
--- a/pkgs/development/python-modules/jira/default.nix
+++ b/pkgs/development/python-modules/jira/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, defusedxml
-, flaky
-, ipython
-, keyring
-, packaging
-, pillow
-, pyjwt
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-futures
-, requests-mock
-, requests-oauthlib
-, requests-toolbelt
-, setuptools
-, setuptools-scm
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  defusedxml,
+  flaky,
+  ipython,
+  keyring,
+  packaging,
+  pillow,
+  pyjwt,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-futures,
+  requests-mock,
+  requests-oauthlib,
+  requests-toolbelt,
+  setuptools,
+  setuptools-scm,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -60,9 +61,7 @@ buildPythonPackage rec {
       # requests-jwt
       # requests-keyberos
     ];
-    async = [
-      requests-futures
-    ];
+    async = [ requests-futures ];
   };
 
   nativeCheckInputs = [
@@ -76,9 +75,7 @@ buildPythonPackage rec {
       --replace "--cov-report=xml --cov jira" ""
   '';
 
-  pythonImportsCheck = [
-    "jira"
-  ];
+  pythonImportsCheck = [ "jira" ];
 
   # impure tests because of connectivity attempts to jira servers
   doCheck = false;
@@ -88,7 +85,7 @@ buildPythonPackage rec {
     homepage = "https://github.com/pycontribs/jira";
     changelog = "https://github.com/pycontribs/jira/releases/tag/${version}";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     mainProgram = "jirashell";
   };
 }
diff --git a/pkgs/development/python-modules/jishaku/default.nix b/pkgs/development/python-modules/jishaku/default.nix
index 4501ffc68e6b6..32a560a1a1f25 100644
--- a/pkgs/development/python-modules/jishaku/default.nix
+++ b/pkgs/development/python-modules/jishaku/default.nix
@@ -12,7 +12,7 @@
   tabulate,
   pytestCheckHook,
   pytest-asyncio,
-  youtube-dl
+  youtube-dl,
 }:
 buildPythonPackage rec {
   pname = "jishaku";
@@ -62,10 +62,10 @@ buildPythonPackage rec {
   ];
 
   meta = {
-    description = "A debugging and testing cog for discord.py bots";
+    description = "Debugging and testing cog for discord.py bots";
     homepage = "https://jishaku.readthedocs.io/en/latest";
     changelog = "https://github.com/Gorialis/jishaku/releases/tag/${version}";
-    maintainers = with lib.maintainers; [ lychee ];
+    maintainers = with lib.maintainers; [ ];
     mainProgram = "jishaku";
     license = lib.licenses.mit;
   };
diff --git a/pkgs/development/python-modules/jiter/Cargo.lock b/pkgs/development/python-modules/jiter/Cargo.lock
new file mode 100644
index 0000000000000..d19633c580b93
--- /dev/null
+++ b/pkgs/development/python-modules/jiter/Cargo.lock
@@ -0,0 +1,588 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "ahash"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
+dependencies = [
+ "cfg-if",
+ "getrandom",
+ "once_cell",
+ "version_check",
+ "zerocopy",
+]
+
+[[package]]
+name = "arbitrary"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110"
+
+[[package]]
+name = "autocfg"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
+
+[[package]]
+name = "bencher"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7dfdb4953a096c551ce9ace855a604d702e6e62d77fac690575ae347571717f5"
+
+[[package]]
+name = "bitvec"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c"
+dependencies = [
+ "funty",
+ "radium",
+ "tap",
+ "wyz",
+]
+
+[[package]]
+name = "cc"
+version = "1.0.104"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74b6a57f98764a267ff415d50a25e6e166f3831a5071af4995296ea97d210490"
+dependencies = [
+ "jobserver",
+ "libc",
+ "once_cell",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "codspeed"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a104ac948e0188b921eb3fcbdd55dcf62e542df4c7ab7e660623f6288302089"
+dependencies = [
+ "colored",
+ "libc",
+ "serde_json",
+]
+
+[[package]]
+name = "codspeed-bencher-compat"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ceaba84ea2634603a0f199c07fa39ff4dda61f89a3f9149fb89b035bc317b671"
+dependencies = [
+ "bencher",
+ "codspeed",
+]
+
+[[package]]
+name = "colored"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8"
+dependencies = [
+ "lazy_static",
+ "windows-sys",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
+name = "funty"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
+
+[[package]]
+name = "fuzz"
+version = "0.5.0"
+dependencies = [
+ "indexmap",
+ "jiter",
+ "libfuzzer-sys",
+ "num-bigint",
+ "num-traits",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.14.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "indexmap"
+version = "2.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[package]]
+name = "indoc"
+version = "2.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
+
+[[package]]
+name = "itoa"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
+
+[[package]]
+name = "jiter"
+version = "0.5.0"
+dependencies = [
+ "ahash",
+ "bencher",
+ "bitvec",
+ "codspeed-bencher-compat",
+ "lexical-parse-float",
+ "num-bigint",
+ "num-traits",
+ "paste",
+ "pyo3",
+ "pyo3-build-config",
+ "serde",
+ "serde_json",
+ "smallvec",
+]
+
+[[package]]
+name = "jiter-python"
+version = "0.5.0"
+dependencies = [
+ "jiter",
+ "pyo3",
+]
+
+[[package]]
+name = "jobserver"
+version = "0.1.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
+
+[[package]]
+name = "lexical-parse-float"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f"
+dependencies = [
+ "lexical-parse-integer",
+ "lexical-util",
+ "static_assertions",
+]
+
+[[package]]
+name = "lexical-parse-integer"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9"
+dependencies = [
+ "lexical-util",
+ "static_assertions",
+]
+
+[[package]]
+name = "lexical-util"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc"
+dependencies = [
+ "static_assertions",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.155"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
+
+[[package]]
+name = "libfuzzer-sys"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a96cfd5557eb82f2b83fed4955246c988d331975a002961b07c81584d107e7f7"
+dependencies = [
+ "arbitrary",
+ "cc",
+ "once_cell",
+]
+
+[[package]]
+name = "memoffset"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num-bigint"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
+dependencies = [
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+
+[[package]]
+name = "paste"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
+
+[[package]]
+name = "portable-atomic"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.86"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "pyo3"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1962a33ed2a201c637fc14a4e0fd4e06e6edfdeee6a5fede0dab55507ad74cf7"
+dependencies = [
+ "cfg-if",
+ "indoc",
+ "libc",
+ "memoffset",
+ "num-bigint",
+ "once_cell",
+ "portable-atomic",
+ "pyo3-build-config",
+ "pyo3-ffi",
+ "pyo3-macros",
+ "unindent",
+]
+
+[[package]]
+name = "pyo3-build-config"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab7164b2202753bd33afc7f90a10355a719aa973d1f94502c50d06f3488bc420"
+dependencies = [
+ "once_cell",
+ "target-lexicon",
+]
+
+[[package]]
+name = "pyo3-ffi"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6424906ca49013c0829c5c1ed405e20e2da2dc78b82d198564880a704e6a7b7"
+dependencies = [
+ "libc",
+ "pyo3-build-config",
+]
+
+[[package]]
+name = "pyo3-macros"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82b2f19e153122d64afd8ce7aaa72f06a00f52e34e1d1e74b6d71baea396460a"
+dependencies = [
+ "proc-macro2",
+ "pyo3-macros-backend",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "pyo3-macros-backend"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd698c04cac17cf0fe63d47790ab311b8b25542f5cb976b65c374035c50f1eef"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "pyo3-build-config",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "radium"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
+
+[[package]]
+name = "ryu"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
+
+[[package]]
+name = "serde"
+version = "1.0.203"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.203"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.120"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5"
+dependencies = [
+ "indexmap",
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "syn"
+version = "2.0.68"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "tap"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
+
+[[package]]
+name = "target-lexicon"
+version = "0.12.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+
+[[package]]
+name = "unindent"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
+name = "wyz"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed"
+dependencies = [
+ "tap",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
diff --git a/pkgs/development/python-modules/jiter/default.nix b/pkgs/development/python-modules/jiter/default.nix
new file mode 100644
index 0000000000000..4f23966dcc165
--- /dev/null
+++ b/pkgs/development/python-modules/jiter/default.nix
@@ -0,0 +1,51 @@
+{
+  lib,
+  buildPythonPackage,
+  rustPlatform,
+  fetchFromGitHub,
+  libiconv,
+  dirty-equals,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "jiter";
+  version = "0.5.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "pydantic";
+    repo = "jiter";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-EgovddXbwutLaVkosdbJ2Y3BpEms+RoeaO8ghBRNdio=";
+  };
+
+  postPatch = ''
+    cp ${./Cargo.lock} Cargo.lock
+  '';
+
+  cargoDeps = rustPlatform.importCargoLock { lockFile = ./Cargo.lock; };
+
+  buildAndTestSubdir = "crates/jiter-python";
+
+  nativeBuildInputs = [ rustPlatform.cargoSetupHook ];
+
+  build-system = [ rustPlatform.maturinBuildHook ];
+
+  buildInputs = [ libiconv ];
+
+  pythonImportsCheck = [ "jiter" ];
+
+  nativeCheckInputs = [
+    dirty-equals
+    pytestCheckHook
+  ];
+
+  meta = {
+    description = "Fast iterable JSON parser";
+    homepage = "https://github.com/pydantic/jiter/";
+    changelog = "https://github.com/pydantic/jiter/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
+  };
+}
diff --git a/pkgs/development/python-modules/jiwer/default.nix b/pkgs/development/python-modules/jiwer/default.nix
index 2c15663502469..0d200572a7e27 100644
--- a/pkgs/development/python-modules/jiwer/default.nix
+++ b/pkgs/development/python-modules/jiwer/default.nix
@@ -1,47 +1,42 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonRelaxDepsHook
-, rapidfuzz
-, click
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  rapidfuzz,
+  click,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "jiwer";
-  version = "3.0.3";
-  format = "pyproject";
+  version = "3.04";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "jitsi";
-    repo = pname;
+    repo = "jiwer";
     rev = "refs/tags/v${version}";
-    hash = "sha256-32bpSBYl6yxb4lJhHnfnYhtye7DaBZT0VAe9rDcleTc=";
+    hash = "sha256-2LzAOgABK00Pz3v5WWYUAcZOYcTbRKfgw7U5DOohB/Q=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     rapidfuzz
     click
   ];
 
-  pythonRelaxDeps = [
-    "rapidfuzz"
-  ];
+  pythonRelaxDeps = [ "rapidfuzz" ];
 
-  pythonImportsCheck = [
-    "jiwer"
-  ];
+  pythonImportsCheck = [ "jiwer" ];
 
   meta = with lib; {
-    description = "A simple and fast python package to evaluate an automatic speech recognition system";
+    description = "Simple and fast python package to evaluate an automatic speech recognition system";
     mainProgram = "jiwer";
     homepage = "https://github.com/jitsi/jiwer";
     changelog = "https://github.com/jitsi/jiwer/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/jmespath/default.nix b/pkgs/development/python-modules/jmespath/default.nix
index 6a5ef26c4fa57..a01dc0b7984d3 100644
--- a/pkgs/development/python-modules/jmespath/default.nix
+++ b/pkgs/development/python-modules/jmespath/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hypothesis
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hypothesis,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,6 +26,6 @@ buildPythonPackage rec {
     description = "JMESPath allows you to declaratively specify how to extract elements from a JSON document";
     mainProgram = "jp.py";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jmp/default.nix b/pkgs/development/python-modules/jmp/default.nix
index 945e99310366a..b0ec259f0723c 100644
--- a/pkgs/development/python-modules/jmp/default.nix
+++ b/pkgs/development/python-modules/jmp/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, jax
-, jaxlib
-, lib
-, pytestCheckHook
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  jax,
+  jaxlib,
+  lib,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
   };
 
   # Wheel requires only `numpy`, but the import needs `jax`.
-  propagatedBuildInputs = [
-    jax
-  ];
+  propagatedBuildInputs = [ jax ];
 
-  pythonImportsCheck = [
-    "jmp"
-  ];
+  pythonImportsCheck = [ "jmp" ];
 
   nativeCheckInputs = [
     jaxlib
@@ -33,7 +30,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "This library implements support for mixed precision training in JAX.";
+    description = "This library implements support for mixed precision training in JAX";
     homepage = "https://github.com/deepmind/jmp";
     license = licenses.asl20;
     maintainers = with maintainers; [ ndl ];
diff --git a/pkgs/development/python-modules/joblib/default.nix b/pkgs/development/python-modules/joblib/default.nix
index 298a2ce83adfb..0cd4182d42414 100644
--- a/pkgs/development/python-modules/joblib/default.nix
+++ b/pkgs/development/python-modules/joblib/default.nix
@@ -1,48 +1,37 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, fetchpatch
-, pythonAtLeast
-, stdenv
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  pythonAtLeast,
+  stdenv,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# propagates (optional, but unspecified)
-# https://github.com/joblib/joblib#dependencies
-, lz4
-, psutil
+  # propagates (optional, but unspecified)
+  # https://github.com/joblib/joblib#dependencies
+  lz4,
+  psutil,
 
-# tests
-, pytestCheckHook
-, threadpoolctl
+  # tests
+  pytestCheckHook,
+  threadpoolctl,
 }:
 
-
 buildPythonPackage rec {
   pname = "joblib";
-  version = "1.3.2";
+  version = "1.4.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-kvhl5iHhd4TnlVCAttBCSJ47jilJScxExurDBPWXcrE=";
+    hash = "sha256-I4LFgWsmNvvSCgng9Ona1HNnZf37fcpYKUO5wTZrPw4=";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "suppress-deprecation-warnings-with-python312.patch";
-      url = "https://github.com/joblib/joblib/commit/05caf0772d605799e5d2337018fd32ac829b37aa.patch";
-      hash = "sha256-bfqxCLFkCnuWMIkIbcjh+nCTv38A8jxvyCHeJPxoZwg=";
-    })
-  ];
-
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     lz4
@@ -54,27 +43,28 @@ buildPythonPackage rec {
     threadpoolctl
   ];
 
-  pytestFlagsArray = [
-    "joblib/test"
-  ];
+  pytestFlagsArray = [ "joblib/test" ];
 
-  disabledTests = [
-    "test_disk_used" # test_disk_used is broken: https://github.com/joblib/joblib/issues/57
-    "test_parallel_call_cached_function_defined_in_jupyter" # jupyter not available during tests
-    "test_nested_parallel_warnings" # tests is flaky under load
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_dispatch_multiprocessing" # test_dispatch_multiprocessing is broken only on Darwin.
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    # deprecation warnings with python3.12 https://github.com/joblib/joblib/issues/1478
-    "test_main_thread_renamed_no_warning"
-    "test_background_thread_parallelism"
-  ];
+  disabledTests =
+    [
+      "test_disk_used" # test_disk_used is broken: https://github.com/joblib/joblib/issues/57
+      "test_parallel_call_cached_function_defined_in_jupyter" # jupyter not available during tests
+      "test_nested_parallel_warnings" # tests is flaky under load
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      "test_dispatch_multiprocessing" # test_dispatch_multiprocessing is broken only on Darwin.
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      # deprecation warnings with python3.12 https://github.com/joblib/joblib/issues/1478
+      "test_main_thread_renamed_no_warning"
+      "test_background_thread_parallelism"
+    ];
 
   meta = with lib; {
     changelog = "https://github.com/joblib/joblib/releases/tag/${version}";
     description = "Lightweight pipelining: using Python functions as pipeline jobs";
     homepage = "https://joblib.readthedocs.io/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/johnnycanencrypt/default.nix b/pkgs/development/python-modules/johnnycanencrypt/default.nix
index b65fbca46993b..a9d7009e07e90 100644
--- a/pkgs/development/python-modules/johnnycanencrypt/default.nix
+++ b/pkgs/development/python-modules/johnnycanencrypt/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, buildPythonPackage
-, rustPlatform
-, pkg-config
-, pcsclite
-, nettle
-, httpx
-, pytestCheckHook
-, pythonOlder
-, vcrpy
-, PCSC
-, libiconv
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  buildPythonPackage,
+  rustPlatform,
+  pkg-config,
+  pcsclite,
+  nettle,
+  httpx,
+  pytestCheckHook,
+  pythonOlder,
+  vcrpy,
+  PCSC,
+  libiconv,
 }:
 
 buildPythonPackage rec {
@@ -34,26 +35,23 @@ buildPythonPackage rec {
 
   format = "pyproject";
 
-  propagatedBuildInputs = [
-    httpx
-  ];
+  propagatedBuildInputs = [ httpx ];
 
-  nativeBuildInputs = [
-    pkg-config
-  ] ++ (with rustPlatform; [
-    bindgenHook
-    cargoSetupHook
-    maturinBuildHook
-  ]);
+  nativeBuildInputs =
+    [ pkg-config ]
+    ++ (with rustPlatform; [
+      bindgenHook
+      cargoSetupHook
+      maturinBuildHook
+    ]);
 
-  buildInputs = [
-    nettle
-  ] ++ lib.optionals stdenv.isLinux [
-    pcsclite
-  ] ++ lib.optionals stdenv.isDarwin [
-    PCSC
-    libiconv
-  ];
+  buildInputs =
+    [ nettle ]
+    ++ lib.optionals stdenv.hostPlatform.isLinux [ pcsclite ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      PCSC
+      libiconv
+    ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/josepy/default.nix b/pkgs/development/python-modules/josepy/default.nix
index 5332bf6c43817..955bc33cc2239 100644
--- a/pkgs/development/python-modules/josepy/default.nix
+++ b/pkgs/development/python-modules/josepy/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchPypi
-, poetry-core
-, pyopenssl
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  poetry-core,
+  pyopenssl,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,22 +21,16 @@ buildPythonPackage rec {
     hash = "sha256-MIs7+c6CWtTUu6djcs8ZtdwcLOlqnSmPlkKXXmS9E90=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     pyopenssl
     cryptography
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "josepy"
-  ];
+  pythonImportsCheck = [ "josepy" ];
 
   meta = with lib; {
     changelog = "https://github.com/certbot/josepy/blob/v${version}/CHANGELOG.rst";
diff --git a/pkgs/development/python-modules/joserfc/default.nix b/pkgs/development/python-modules/joserfc/default.nix
index ce5e18ec13495..a54844be9213d 100644
--- a/pkgs/development/python-modules/joserfc/default.nix
+++ b/pkgs/development/python-modules/joserfc/default.nix
@@ -1,57 +1,47 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, cryptography
-, pycryptodome
+  # dependencies
+  cryptography,
+  pycryptodome,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "joserfc";
-  version = "0.9.0";
+  version = "0.12.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "authlib";
     repo = "joserfc";
-    rev = version;
-    hash = "sha256-+NFCveMPzE0hSs2Qe20/MDHApXVtU3cR/GPFKPqfVV4=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-mnJzhkdX0+5Y/XwGlHgxLP0me8Cs/Cl3p46KgTKw2ug=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    cryptography
-  ];
+  dependencies = [ cryptography ];
 
   optional-dependencies = {
-    drafts = [
-      pycryptodome
-    ];
+    drafts = [ pycryptodome ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ]
-  ++ lib.flatten (lib.attrValues optional-dependencies);
+  nativeCheckInputs = [ pytestCheckHook ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
-  pythonImportsCheck = [
-    "joserfc"
-  ];
+  pythonImportsCheck = [ "joserfc" ];
 
   meta = with lib; {
     description = "Implementations of JOSE RFCs in Python";
     homepage = "https://github.com/authlib/joserfc";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jplephem/default.nix b/pkgs/development/python-modules/jplephem/default.nix
index ada4c9552e5a5..4fd924c47358f 100644
--- a/pkgs/development/python-modules/jplephem/default.nix
+++ b/pkgs/development/python-modules/jplephem/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, numpy, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+}:
 
 buildPythonPackage rec {
   pname = "jplephem";
diff --git a/pkgs/development/python-modules/jproperties/default.nix b/pkgs/development/python-modules/jproperties/default.nix
index b01f39d0432a9..83ba9855a0e23 100644
--- a/pkgs/development/python-modules/jproperties/default.nix
+++ b/pkgs/development/python-modules/jproperties/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, six
-, pytest-datadir
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  six,
+  pytest-datadir,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-O+ALeGHMNjW1dc9IRyLzO81k8DW2vbGjuZqXxgrhYjo=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   nativeCheckInputs = [
     pytest-datadir
@@ -44,9 +41,7 @@ buildPythonPackage rec {
     "tests/test_simple_utf8.py"
   ];
 
-  pythonImportsCheck = [
-    "jproperties"
-  ];
+  pythonImportsCheck = [ "jproperties" ];
 
   meta = with lib; {
     description = "Java Property file parser and writer for Python";
diff --git a/pkgs/development/python-modules/jpylyzer/default.nix b/pkgs/development/python-modules/jpylyzer/default.nix
index 64b6163825188..951ce91ce43cc 100644
--- a/pkgs/development/python-modules/jpylyzer/default.nix
+++ b/pkgs/development/python-modules/jpylyzer/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, six
-, lxml
-, pytestCheckHook
-, doFullCheck ? false  # weird filenames cause issues on some filesystems
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  six,
+  lxml,
+  pytestCheckHook,
+  doFullCheck ? false, # weird filenames cause issues on some filesystems
 
-# for passthru.tests
-, jpylyzer
+  # for passthru.tests
+  jpylyzer,
 }:
 
 let
@@ -17,40 +18,36 @@ let
   testFiles = fetchFromGitHub {
     owner = "openpreserve";
     repo = "jpylyzer-test-files";
-    rev = "146cb0029b5ea9d8ef22dc6683cec8afae1cc63a";
-    hash = "sha256-uKUau7mYXqGs4dSnXGPnPsH9k81ZCK0aPj5F9HWBMZ8=";
+    rev = "0290e98bae9c5480c995954d3f14b4cf0a0395ff";
+    hash = "sha256-dr3hC6dGd3HNSE4nRj1xrfFSW9cepQ1mdVH8S3YQdtw=";
   };
-
-in buildPythonPackage rec {
+in
+buildPythonPackage rec {
   pname = "jpylyzer";
-  version = "2.2.0";
+  version = "2.2.1";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "openpreserve";
     repo = pname;
     rev = version;
-    hash = "sha256-SK6Z+JkFBD9V99reRZf+jM8Z2SiDNSG72gusp2FPfmI=";
+    hash = "sha256-P42qAks8suI/Xknwd8WAkymbGE7RApRa/a11J/V4LA0=";
   };
 
   propagatedBuildInputs = [ six ];
 
-  nativeCheckInputs = [ pytestCheckHook lxml ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    lxml
+  ];
 
   # don't depend on testFiles unless doFullCheck as it may not be extractable
   # on some filesystems due to weird filenames
   preCheck = lib.optionalString doFullCheck ''
-    sed -i '/^testFilesDir = /ctestFilesDir = "${testFiles}"' tests/unit/test_testfiles.py
+    sed -i '/^testFilesDir = /ctestFilesDir = "${testFiles}/files"' tests/unit/test_testfiles.py
   '';
 
-  disabledTests = [
-    # missing file, but newer test files breaks other tests
-    "test_groundtruth_complete"
-  ];
-
-  disabledTestPaths = lib.optionals (!doFullCheck) [
-    "tests/unit/test_testfiles.py"
-  ];
+  disabledTestPaths = lib.optionals (!doFullCheck) [ "tests/unit/test_testfiles.py" ];
 
   pythonImportsCheck = [ "jpylyzer" ];
 
diff --git a/pkgs/development/python-modules/jpype1/default.nix b/pkgs/development/python-modules/jpype1/default.nix
index 9aafb10c96e07..d9c55f2cbc9bd 100644
--- a/pkgs/development/python-modules/jpype1/default.nix
+++ b/pkgs/development/python-modules/jpype1/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, packaging
-, pythonOlder
-, typing-extensions
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  packaging,
+  pythonOlder,
+  typing-extensions,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -20,15 +21,9 @@ buildPythonPackage rec {
     hash = "sha256-QlpuGWav3VhItgwmiLyut+QLpQSmhvERRYlmjgYx6Hg=";
   };
 
-  propagatedBuildInputs = [
-    packaging
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ packaging ] ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
   # required openjdk (easy) but then there were some class path issues
   # when running the tests
@@ -41,6 +36,6 @@ buildPythonPackage rec {
       binaryBytecode
     ];
     license = licenses.asl20;
-    description = "A Python to Java bridge";
+    description = "Python to Java bridge";
   };
 }
diff --git a/pkgs/development/python-modules/jq/default.nix b/pkgs/development/python-modules/jq/default.nix
index 5b369d513cb13..21a272996cf94 100644
--- a/pkgs/development/python-modules/jq/default.nix
+++ b/pkgs/development/python-modules/jq/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, jq
-, oniguruma
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+  jq,
+  oniguruma,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
 
   env.JQPY_USE_SYSTEM_LIBS = 1;
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
   buildInputs = [
     jq
@@ -37,18 +36,14 @@ buildPythonPackage rec {
     cython jq.pyx
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # intentional behavior change in jq 1.7.1 not reflected upstream
     "test_given_json_text_then_strings_containing_null_characters_are_preserved"
   ];
 
-  pythonImportsCheck = [
-    "jq"
-  ];
+  pythonImportsCheck = [ "jq" ];
 
   meta = with lib; {
     description = "Python bindings for jq, the flexible JSON processor";
diff --git a/pkgs/development/python-modules/js2py/default.nix b/pkgs/development/python-modules/js2py/default.nix
index 3630c0b38eaf5..fd28870e0e761 100644
--- a/pkgs/development/python-modules/js2py/default.nix
+++ b/pkgs/development/python-modules/js2py/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonAtLeast
-, setuptools
-, tzlocal
-, six
-, pyjsparser
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonAtLeast,
+  setuptools,
+  tzlocal,
+  six,
+  pyjsparser,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-OfOmqoRpGA77o8hncnHfJ8MTMv0bRx3xryr1i4e4ly8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     pyjsparser
diff --git a/pkgs/development/python-modules/jsbeautifier/default.nix b/pkgs/development/python-modules/jsbeautifier/default.nix
index 85da49876eb3d..ab898c22d6dbc 100644
--- a/pkgs/development/python-modules/jsbeautifier/default.nix
+++ b/pkgs/development/python-modules/jsbeautifier/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, editorconfig
-, pytestCheckHook
-, pythonOlder
-, six
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  editorconfig,
+  pytestCheckHook,
+  pythonOlder,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -24,17 +25,11 @@ buildPythonPackage rec {
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "jsbeautifier"
-  ];
+  pythonImportsCheck = [ "jsbeautifier" ];
 
-  pytestFlagsArray = [
-    "jsbeautifier/tests/testindentation.py"
-  ];
+  pytestFlagsArray = [ "jsbeautifier/tests/testindentation.py" ];
 
   meta = with lib; {
     description = "JavaScript unobfuscator and beautifier";
diff --git a/pkgs/development/python-modules/jschema-to-python/default.nix b/pkgs/development/python-modules/jschema-to-python/default.nix
index fcd80c652d413..773327b85cfbd 100644
--- a/pkgs/development/python-modules/jschema-to-python/default.nix
+++ b/pkgs/development/python-modules/jschema-to-python/default.nix
@@ -1,8 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi
-, attrs
-, jsonpickle
-, pbr
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  attrs,
+  jsonpickle,
+  pbr,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +25,7 @@ buildPythonPackage rec {
     pbr
   ];
 
-  nativeCheckInputs =[
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "jschema_to_python" ];
 
@@ -32,6 +33,6 @@ buildPythonPackage rec {
     description = "Generate source code for Python classes from a JSON schema";
     homepage = "https://github.com/microsoft/jschema-to-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jschon/default.nix b/pkgs/development/python-modules/jschon/default.nix
new file mode 100644
index 0000000000000..82a125e4460be
--- /dev/null
+++ b/pkgs/development/python-modules/jschon/default.nix
@@ -0,0 +1,80 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools
+, wheel
+, rfc3986
+, pytestCheckHook
+, hypothesis
+, requests
+, pytest-httpserver
+, pytest-xdist
+}:
+
+buildPythonPackage rec {
+  pname = "jschon";
+  version = "0.11.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "marksparkza";
+    repo = "jschon";
+    rev = "v${version}";
+    hash = "sha256-uOvEIEUEILsoLuV5U9AJCQAlT4iHQhsnSt65gfCiW0k=";
+    fetchSubmodules = true;
+  };
+
+  build-system = [
+    setuptools
+    wheel
+  ];
+
+  dependencies = [
+    rfc3986
+  ];
+
+  pythonImportsCheck = [
+    "jschon"
+    "jschon.catalog"
+    "jschon.vocabulary"
+    "jschon.exc"
+    "jschon.exceptions"
+    "jschon.formats"
+    "jschon.json"
+    "jschon.jsonpatch"
+    "jschon.jsonpointer"
+    "jschon.jsonschema"
+    "jschon.output"
+    "jschon.uri"
+    "jschon.utils"
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    hypothesis
+    requests
+    pytest-httpserver
+    #pytest-benchmark # not needed for distribution
+    pytest-xdist # not used upstream, but massive speedup
+  ];
+
+  disabledTests = [
+    # flaky, timing sensitive
+    "test_keyword_dependency_resolution"
+  ];
+
+  disabledTestPaths = [
+    "tests/test_benchmarks.py"
+  ];
+
+  # used in checks
+  __darwinAllowLocalNetworking = true;
+
+  meta = with lib; {
+    description = "An object-oriented JSON Schema implementation for Python";
+    homepage = "https://github.com/marksparkza/jschon";
+    changelog = "https://github.com/marksparkza/jschon/blob/${src.rev}/CHANGELOG.rst";
+    license = licenses.mit;
+    maintainers = with maintainers; [ pbsds ];
+  };
+}
diff --git a/pkgs/development/python-modules/jsmin/default.nix b/pkgs/development/python-modules/jsmin/default.nix
index a36c350264beb..3a15b321e5cd2 100644
--- a/pkgs/development/python-modules/jsmin/default.nix
+++ b/pkgs/development/python-modules/jsmin/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,22 +18,16 @@ buildPythonPackage rec {
     sha256 = "c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "jsmin/test.py"
-  ];
+  pytestFlagsArray = [ "jsmin/test.py" ];
 
-  pythonImportsCheck = [
-    "jsmin"
-  ];
+  pythonImportsCheck = [ "jsmin" ];
 
   meta = with lib; {
     description = "JavaScript minifier";
     homepage = "https://github.com/tikitu/jsmin/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/json-home-client/default.nix b/pkgs/development/python-modules/json-home-client/default.nix
index 5f2fa9eaeb6ee..fa74eec1676a6 100644
--- a/pkgs/development/python-modules/json-home-client/default.nix
+++ b/pkgs/development/python-modules/json-home-client/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-# build inputs
-, typing-extensions
-, uri-template
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  # build inputs
+  typing-extensions,
+  uri-template,
 }:
 
 buildPythonPackage rec {
@@ -36,6 +37,6 @@ buildPythonPackage rec {
     description = "Client class for calling http+json APIs in Python";
     homepage = "https://github.com/plinss/json_home_client";
     license = licenses.mit;
-    maintainers = [];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/json-logging/default.nix b/pkgs/development/python-modules/json-logging/default.nix
index 3d22f4e878baa..90f5d7b8a045f 100644
--- a/pkgs/development/python-modules/json-logging/default.nix
+++ b/pkgs/development/python-modules/json-logging/default.nix
@@ -1,22 +1,24 @@
-{ lib
-, buildPythonPackage
-, fastapi
-, fetchFromGitHub
-, flask
-, httpx
-, pytestCheckHook
-, pythonOlder
-, quart
-, requests
-, sanic
-, uvicorn
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fastapi,
+  fetchFromGitHub,
+  flask,
+  httpx,
+  pytestCheckHook,
+  pythonOlder,
+  pythonAtLeast,
+  quart,
+  requests,
+  sanic,
+  setuptools,
+  uvicorn,
 }:
 
 buildPythonPackage rec {
   pname = "json-logging";
   version = "1.5.0-rc0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -27,25 +29,29 @@ buildPythonPackage rec {
     hash = "sha256-WOAEY1pONH+Gx1b8zHZDMNgJJSn7jvMO60LYTA8z/dE=";
   };
 
-  nativeCheckInputs = [
+  # The logging module introduced the `taskName` field in Python 3.12, which the tests don't expect
+  postPatch = lib.optionalString (pythonAtLeast "3.12") ''
+    substituteInPlace tests/helpers/constants.py \
+        --replace-fail '"written_at",' '"taskName", "written_at",'
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     fastapi
     flask
     httpx
-    pytestCheckHook
     quart
     requests
     sanic
     uvicorn
-    wheel
   ];
 
-  pythonImportsCheck = [
-    "json_logging"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = [
-    "quart"
-  ];
+  pythonImportsCheck = [ "json_logging" ];
+
+  disabledTests = [ "quart" ];
 
   disabledTestPaths = [
     # Smoke tests don't always work
@@ -63,6 +69,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/bobbui/json-logging-python";
     changelog = "https://github.com/bobbui/json-logging-python/releases/tag/${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ AluisioASG ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/json-merge-patch/default.nix b/pkgs/development/python-modules/json-merge-patch/default.nix
index 9cafcc30fd4bd..8e7bce50297e2 100644
--- a/pkgs/development/python-modules/json-merge-patch/default.nix
+++ b/pkgs/development/python-modules/json-merge-patch/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
 }:
 
 buildPythonPackage rec {
@@ -17,11 +18,11 @@ buildPythonPackage rec {
   patches = [
     # This prevented tests from running (was using a relative import)
     # https://github.com/OpenDataServices/json-merge-patch/pull/1
-   (fetchpatch {
-     name = "fully-qualified-json-merge-patch-import-on-tests";
-     url = "https://patch-diff.githubusercontent.com/raw/OpenDataServices/json-merge-patch/pull/1.patch";
-     sha256 = "1k6xsrxsmz03nwcqsf4gf0zsfnl2r20n83npic8z6bqlpl4lidl4";
-   })
+    (fetchpatch {
+      name = "fully-qualified-json-merge-patch-import-on-tests";
+      url = "https://patch-diff.githubusercontent.com/raw/OpenDataServices/json-merge-patch/pull/1.patch";
+      sha256 = "1k6xsrxsmz03nwcqsf4gf0zsfnl2r20n83npic8z6bqlpl4lidl4";
+    })
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/json-repair/default.nix b/pkgs/development/python-modules/json-repair/default.nix
new file mode 100644
index 0000000000000..1a7ef06797b90
--- /dev/null
+++ b/pkgs/development/python-modules/json-repair/default.nix
@@ -0,0 +1,36 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "json-repair";
+  version = "0.27.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "mangiucugna";
+    repo = "json_repair";
+    rev = "refs/tags/${version}";
+    hash = "sha256-NYY76sIp4XirVifOPOs6iEzP93ERzNIHAvpgU4+fi24=";
+  };
+
+  build-system = [ setuptools ];
+
+  nativeBuildInputs = [ pytestCheckHook ];
+
+  disabledTestPaths = [ "tests/test_performance.py" ];
+
+  pythonImportsCheck = [ "json_repair" ];
+
+  meta = with lib; {
+    description = "Module to repair invalid JSON, commonly used to parse the output of LLMs";
+    homepage = "https://github.com/mangiucugna/json_repair/";
+    changelog = "https://github.com/mangiucugna/json_repair/releases/tag/${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ greg ];
+  };
+}
diff --git a/pkgs/development/python-modules/json-rpc/default.nix b/pkgs/development/python-modules/json-rpc/default.nix
index 458f2edd9d9e0..e9d39c3c58635 100644
--- a/pkgs/development/python-modules/json-rpc/default.nix
+++ b/pkgs/development/python-modules/json-rpc/default.nix
@@ -1,8 +1,16 @@
-{ lib, isPy27, buildPythonPackage, fetchPypi, pytestCheckHook, mock }:
+{
+  lib,
+  isPy27,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  mock,
+}:
 
 let
   pythonEnv = lib.optional isPy27 mock;
-in buildPythonPackage rec {
+in
+buildPythonPackage rec {
   pname = "json-rpc";
   version = "1.15.0";
   format = "setuptools";
diff --git a/pkgs/development/python-modules/json-schema-for-humans/default.nix b/pkgs/development/python-modules/json-schema-for-humans/default.nix
index f758ae924496f..95edf974b7775 100644
--- a/pkgs/development/python-modules/json-schema-for-humans/default.nix
+++ b/pkgs/development/python-modules/json-schema-for-humans/default.nix
@@ -1,25 +1,25 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, click
-, dataclasses-json
-, fetchFromGitHub
-, htmlmin
-, jinja2
-, markdown2
-, poetry-core
-, pygments
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, pytz
-, pyyaml
-, requests
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  click,
+  dataclasses-json,
+  fetchFromGitHub,
+  htmlmin,
+  jinja2,
+  markdown2,
+  poetry-core,
+  pygments,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  pyyaml,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "json-schema-for-humans";
-  version = "0.47";
+  version = "1.0.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -28,19 +28,15 @@ buildPythonPackage rec {
     owner = "coveooss";
     repo = "json-schema-for-humans";
     rev = "refs/tags/v${version}";
-    hash = "sha256-yioYsCp+q5YWdIWDlNZkpaLqo++n+dV5jyEeIhUDHr4=";
+    hash = "sha256-QMDbuiHfL8JLYJwceyxGR3Zc8+ZBVlCGHOBeH5x4BmQ=";
   };
 
-  pythonRelaxDeps = [
-    "dataclasses-json"
-  ];
+  pythonRelaxDeps = [ "dataclasses-json" ];
+
+  build-system = [ poetry-core ];
 
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     click
     dataclasses-json
     htmlmin
@@ -64,16 +60,14 @@ buildPythonPackage rec {
     "TestMdGenerate"
   ];
 
-  pythonImportsCheck = [
-    "json_schema_for_humans"
-  ];
+  pythonImportsCheck = [ "json_schema_for_humans" ];
 
   meta = with lib; {
     description = "Quickly generate HTML documentation from a JSON schema";
-    mainProgram = "generate-schema-doc";
     homepage = "https://github.com/coveooss/json-schema-for-humans";
     changelog = "https://github.com/coveooss/json-schema-for-humans/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ astro ];
+    mainProgram = "generate-schema-doc";
   };
 }
diff --git a/pkgs/development/python-modules/json-stream-rs-tokenizer/default.nix b/pkgs/development/python-modules/json-stream-rs-tokenizer/default.nix
index 9609d68c69614..86473e609bfe2 100644
--- a/pkgs/development/python-modules/json-stream-rs-tokenizer/default.nix
+++ b/pkgs/development/python-modules/json-stream-rs-tokenizer/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, cargo
-, darwin
-, fetchFromGitHub
-, json-stream
-, json-stream-rs-tokenizer
-, pythonOlder
-, rustc
-, rustPlatform
-, setuptools
-, setuptools-rust
-, wheel
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cargo,
+  libiconv,
+  fetchFromGitHub,
+  json-stream,
+  json-stream-rs-tokenizer,
+  pythonOlder,
+  rustc,
+  rustPlatform,
+  setuptools,
+  setuptools-rust,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "json-stream-rs-tokenizer";
-  version = "0.4.25";
+  version = "0.4.26";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -25,7 +26,7 @@ buildPythonPackage rec {
     owner = "smheidrich";
     repo = "py-json-stream-rs-tokenizer";
     rev = "refs/tags/v${version}";
-    hash = "sha256-zo/jRAWSwcOnO8eU4KhDNz44P6xDGcrZf9CflwsSvF0=";
+    hash = "sha256-ogX0KsfHRQW7+exRMKGwJiNINrOKPiTKxAqiTZyEWrg=";
   };
 
   cargoDeps = rustPlatform.importCargoLock {
@@ -44,28 +45,24 @@ buildPythonPackage rec {
     wheel
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [
-    darwin.libiconv
-  ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
   # Tests depend on json-stream, which depends on this package.
   # To avoid infinite recursion, we only enable tests when building passthru.tests.
   doCheck = false;
 
-  checkInputs = [
-    json-stream
-  ];
+  checkInputs = [ json-stream ];
 
-  pythonImportsCheck = [
-    "json_stream_rs_tokenizer"
-  ];
+  pythonImportsCheck = [ "json_stream_rs_tokenizer" ];
 
   passthru.tests = {
-    runTests = json-stream-rs-tokenizer.overrideAttrs (_: { doCheck = true; });
+    runTests = json-stream-rs-tokenizer.overrideAttrs (_: {
+      doCheck = true;
+    });
   };
 
   meta = with lib; {
-    description = "A faster tokenizer for the json-stream Python library";
+    description = "Faster tokenizer for the json-stream Python library";
     homepage = "https://github.com/smheidrich/py-json-stream-rs-tokenizer";
     license = licenses.mit;
     maintainers = with maintainers; [ winter ];
diff --git a/pkgs/development/python-modules/json-stream/default.nix b/pkgs/development/python-modules/json-stream/default.nix
index ba191bdcd2e8c..fd5f61399f189 100644
--- a/pkgs/development/python-modules/json-stream/default.nix
+++ b/pkgs/development/python-modules/json-stream/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, iconv
-, pytestCheckHook
-, pythonOlder
-, requests
-, json-stream-rs-tokenizer
-, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  iconv,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  json-stream-rs-tokenizer,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,30 +23,20 @@ buildPythonPackage rec {
     hash = "sha256-uLRQ6o6OPCOenn440S/tk053o1PBSyl/juNFpc6yW5E=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [
-    iconv
-  ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ iconv ];
 
   propagatedBuildInputs = [
     requests
     json-stream-rs-tokenizer
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "json_stream"
-  ];
+  pythonImportsCheck = [ "json_stream" ];
 
-  disabledTests = [
-    "test_writer"
-  ];
+  disabledTests = [ "test_writer" ];
 
   meta = with lib; {
     description = "Streaming JSON parser";
diff --git a/pkgs/development/python-modules/json-tricks/default.nix b/pkgs/development/python-modules/json-tricks/default.nix
index 1576cd141d4e4..f7345149bfc3c 100644
--- a/pkgs/development/python-modules/json-tricks/default.nix
+++ b/pkgs/development/python-modules/json-tricks/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
-, pytest7CheckHook
-, numpy
-, pandas
-, pytz
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  pytest7CheckHook,
+  numpy,
+  pandas,
+  pytz,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
     pytest7CheckHook
   ];
 
-  pythonImportsCheck = [
-    "json_tricks"
-  ];
+  pythonImportsCheck = [ "json_tricks" ];
 
   meta = with lib; {
     description = "Extra features for Python JSON handling";
diff --git a/pkgs/development/python-modules/json2html/default.nix b/pkgs/development/python-modules/json2html/default.nix
new file mode 100644
index 0000000000000..8a7ef46d72418
--- /dev/null
+++ b/pkgs/development/python-modules/json2html/default.nix
@@ -0,0 +1,34 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "json2html";
+  version = "1.3.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "softvar";
+    repo = "json2html";
+    rev = "v${version}";
+    hash = "sha256-Y+mwJ0p4Q2TKMU8qQvuvo08RiMdsReO7psgXaiW9ntk=";
+  };
+
+  build-system = [ setuptools ];
+
+  # no proper test available
+  doCheck = false;
+
+  pythonImportsCheck = [ "json2html" ];
+
+  meta = {
+    description = "Python module for converting complex JSON to HTML Table representation";
+    homepage = "https://github.com/softvar/json2html";
+    changelog = "https://github.com/softvar/json2html/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tochiaha ];
+  };
+}
diff --git a/pkgs/development/python-modules/json5/default.nix b/pkgs/development/python-modules/json5/default.nix
index 1b071aadb59c6..fd8fb22ac0eaf 100644
--- a/pkgs/development/python-modules/json5/default.nix
+++ b/pkgs/development/python-modules/json5/default.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, pytestCheckHook
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,17 +17,13 @@ buildPythonPackage rec {
     hash = "sha256-cshP1kraLENqWuQTlm4HPAP/0ywRRLFOJI8mteWcjR4=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "json5"
-  ];
+  pythonImportsCheck = [ "json5" ];
 
   meta = with lib; {
     homepage = "https://github.com/dpranke/pyjson5";
-    description = "A Python implementation of the JSON5 data format";
+    description = "Python implementation of the JSON5 data format";
     mainProgram = "pyjson5";
     license = licenses.asl20;
     maintainers = with maintainers; [ veehaitch ];
diff --git a/pkgs/development/python-modules/jsonable/default.nix b/pkgs/development/python-modules/jsonable/default.nix
index 075930f645e54..705ff95a2d770 100644
--- a/pkgs/development/python-modules/jsonable/default.nix
+++ b/pkgs/development/python-modules/jsonable/default.nix
@@ -1,14 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nose
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  fetchpatch2,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "jsonable";
   version = "0.3.1";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "halfak";
@@ -17,17 +19,25 @@ buildPythonPackage rec {
     hash = "sha256-3FIzG2djSZOPDdoYeKqs3obQjgHrFtyp0sdBwZakkHA=";
   };
 
-  nativeCheckInputs = [
-    nose
-    pytestCheckHook
+  patches = [
+    # https://github.com/halfak/python-jsonable/pull/2
+    (fetchpatch2 {
+      name = "eq-to-assert.patch";
+      url = "https://github.com/halfak/python-jsonable/pull/2/commits/335e61bb4926e644aef983f7313793bf506d2463.patch";
+      hash = "sha256-tCVA0wG+UMyB6oaNf4nbZ2BPWkNumaGPcjP5VJKegBo=";
+    })
   ];
 
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
   pythonImportsCheck = [ "jsonable" ];
 
-  meta = with lib; {
+  meta = {
     description = "Provides an abstract base class and utilities for defining trivially JSONable python objects";
     homepage = "https://github.com/halfak/python-jsonable";
-    license = licenses.mit;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/jsonargparse/default.nix b/pkgs/development/python-modules/jsonargparse/default.nix
index dfe1e12df9009..4ee82d9af57bf 100644
--- a/pkgs/development/python-modules/jsonargparse/default.nix
+++ b/pkgs/development/python-modules/jsonargparse/default.nix
@@ -1,7 +1,6 @@
 {
   lib,
   argcomplete,
-  attrs,
   buildPythonPackage,
   docstring-parser,
   fetchFromGitHub,
@@ -9,14 +8,12 @@
   jsonnet,
   jsonschema,
   omegaconf,
-  pydantic,
   pytest-subtests,
   pytestCheckHook,
   pythonOlder,
   pyyaml,
   reconplogger,
   requests,
-  responses,
   ruyaml,
   setuptools,
   types-pyyaml,
@@ -26,7 +23,7 @@
 
 buildPythonPackage rec {
   pname = "jsonargparse";
-  version = "4.28.0";
+  version = "4.33.1";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -35,7 +32,7 @@ buildPythonPackage rec {
     owner = "omni-us";
     repo = "jsonargparse";
     rev = "refs/tags/v${version}";
-    hash = "sha256-iw6ntzFkvMg5baOgeUzf3qV1eGGqywINd7e6N781llQ=";
+    hash = "sha256-r3TIuKzFkJ1CzdVwxkKLWqi1uo7Goe9mzgKCRZFxwH8=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/jsonconversion/default.nix b/pkgs/development/python-modules/jsonconversion/default.nix
index 49e3974e73505..ac068b224edcd 100644
--- a/pkgs/development/python-modules/jsonconversion/default.nix
+++ b/pkgs/development/python-modules/jsonconversion/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonRelaxDepsHook
-, pytestCheckHook
-, pdm-backend
-, numpy
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pdm-backend,
+  numpy,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,7 +22,6 @@ buildPythonPackage rec {
 
   build-system = [
     pdm-backend
-    pythonRelaxDepsHook
   ];
 
   pythonRemoveDeps = [
@@ -35,13 +34,9 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "jsonconversion"
-  ];
+  pythonImportsCheck = [ "jsonconversion" ];
 
   meta = with lib; {
     description = "This python module helps converting arbitrary Python objects into JSON strings and back";
diff --git a/pkgs/development/python-modules/jsondate/default.nix b/pkgs/development/python-modules/jsondate/default.nix
index f3b99b259b285..91190c8528fa9 100644
--- a/pkgs/development/python-modules/jsondate/default.nix
+++ b/pkgs/development/python-modules/jsondate/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchFromGitHub, buildPythonPackage, six }:
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  six,
+}:
 
 buildPythonPackage rec {
   version = "0.1.3";
diff --git a/pkgs/development/python-modules/jsondiff/default.nix b/pkgs/development/python-modules/jsondiff/default.nix
index dcfa56d686ae9..5b5f67ce52640 100644
--- a/pkgs/development/python-modules/jsondiff/default.nix
+++ b/pkgs/development/python-modules/jsondiff/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/jsonfield/default.nix b/pkgs/development/python-modules/jsonfield/default.nix
index 5e36636c84090..bf7e67eb6207b 100644
--- a/pkgs/development/python-modules/jsonfield/default.nix
+++ b/pkgs/development/python-modules/jsonfield/default.nix
@@ -1,4 +1,11 @@
-{ lib, fetchPypi, buildPythonPackage, django, pytestCheckHook, pytest-django }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  django,
+  pytestCheckHook,
+  pytest-django,
+}:
 
 buildPythonPackage rec {
   pname = "jsonfield";
@@ -10,7 +17,10 @@ buildPythonPackage rec {
     sha256 = "0yl828cd0m8jsyr4di6hcjdqmi31ijh5vk57mbpfl7p2gmcq8kky";
   };
 
-  nativeCheckInputs = [ pytestCheckHook pytest-django ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-django
+  ];
 
   preCheck = "export DJANGO_SETTINGS_MODULE=tests.settings";
 
diff --git a/pkgs/development/python-modules/jsonformatter/default.nix b/pkgs/development/python-modules/jsonformatter/default.nix
index f800493b2c934..3fac9cadc97cb 100644
--- a/pkgs/development/python-modules/jsonformatter/default.nix
+++ b/pkgs/development/python-modules/jsonformatter/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, setuptools
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "jsonformatter"
-  ];
+  pythonImportsCheck = [ "jsonformatter" ];
 
   meta = with lib; {
     description = "jsonformatter is a formatter for python output json log, e.g. output LogStash needed log";
diff --git a/pkgs/development/python-modules/jsonlines/default.nix b/pkgs/development/python-modules/jsonlines/default.nix
index 6eb818013e9dc..fbe7007b248f1 100644
--- a/pkgs/development/python-modules/jsonlines/default.nix
+++ b/pkgs/development/python-modules/jsonlines/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, attrs
-, fetchFromGitHub
-, buildPythonPackage
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  attrs,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,22 +21,16 @@ buildPythonPackage rec {
     hash = "sha256-eMpUk5s49OyD+cNGdAeKA2LvpXdKta2QjZIFDnIBKC8=";
   };
 
-  propagatedBuildInputs = [
-    attrs
-  ];
+  propagatedBuildInputs = [ attrs ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "jsonlines"
-  ];
+  pythonImportsCheck = [ "jsonlines" ];
 
   meta = with lib; {
     description = "Python library to simplify working with jsonlines and ndjson data";
     homepage = "https://github.com/wbolster/jsonlines";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jsonmerge/default.nix b/pkgs/development/python-modules/jsonmerge/default.nix
index 83275f54a9b4b..208d4dd78fbcb 100644
--- a/pkgs/development/python-modules/jsonmerge/default.nix
+++ b/pkgs/development/python-modules/jsonmerge/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jsonschema
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jsonschema,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,6 +26,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/avian2/jsonmerge";
     changelog = "https://github.com/avian2/jsonmerge/blob/jsonmerge-${version}/ChangeLog";
     license = licenses.mit;
-    maintainers = with maintainers; [ emily ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jsonpatch/default.nix b/pkgs/development/python-modules/jsonpatch/default.nix
index bdae44eb2d425..42712f4e54e90 100644
--- a/pkgs/development/python-modules/jsonpatch/default.nix
+++ b/pkgs/development/python-modules/jsonpatch/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, jsonpointer
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jsonpointer,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,26 +21,18 @@ buildPythonPackage rec {
     hash = "sha256-JHBB64LExzHQVoFF2xcsqGlNWX/YeEBa1M/TmfeQLWI=";
   };
 
-  propagatedBuildInputs = [
-    jsonpointer
-  ];
+  propagatedBuildInputs = [ jsonpointer ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "jsonpatch"
-  ];
+  pythonImportsCheck = [ "jsonpatch" ];
 
-  pytestFlagsArray = [
-    "tests.py"
-  ];
+  pytestFlagsArray = [ "tests.py" ];
 
   meta = with lib; {
     description = "Library to apply JSON Patches according to RFC 6902";
     homepage = "https://github.com/stefankoegl/python-json-patch";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jsonpath-ng/default.nix b/pkgs/development/python-modules/jsonpath-ng/default.nix
index 0496df1622ff0..5e000c6c41317 100644
--- a/pkgs/development/python-modules/jsonpath-ng/default.nix
+++ b/pkgs/development/python-modules/jsonpath-ng/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, ply
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ply,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -26,18 +27,14 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # Exclude tests that require oslotest
     "tests/test_jsonpath_rw_ext.py"
   ];
 
-  pythonImportsCheck = [
-    "jsonpath_ng"
-  ];
+  pythonImportsCheck = [ "jsonpath_ng" ];
 
   meta = with lib; {
     description = "JSONPath implementation";
diff --git a/pkgs/development/python-modules/jsonpath-rw/default.nix b/pkgs/development/python-modules/jsonpath-rw/default.nix
index 5801ba47e21f8..7a7f07f063b4d 100644
--- a/pkgs/development/python-modules/jsonpath-rw/default.nix
+++ b/pkgs/development/python-modules/jsonpath-rw/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPyPy
-, ply
-, six
-, decorator
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  ply,
+  six,
+  decorator,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,19 @@ buildPythonPackage rec {
     sha256 = "05c471281c45ae113f6103d1268ec7a4831a2e96aa80de45edc89b11fac4fbec";
   };
 
-  propagatedBuildInputs = [ ply six decorator ];
+  propagatedBuildInputs = [
+    ply
+    six
+    decorator
+  ];
 
   # ImportError: No module named tests
   doCheck = false;
 
   meta = with lib; {
     homepage = "https://github.com/kennknowles/python-jsonpath-rw";
-    description = "A robust and significantly extended implementation of JSONPath for Python, with a clear AST for metaprogramming";
+    description = "Robust and significantly extended implementation of JSONPath for Python, with a clear AST for metaprogramming";
     mainProgram = "jsonpath.py";
     license = licenses.asl20;
   };
-
 }
diff --git a/pkgs/development/python-modules/jsonpath/default.nix b/pkgs/development/python-modules/jsonpath/default.nix
index 00205eb1907af..be1054c04df73 100644
--- a/pkgs/development/python-modules/jsonpath/default.nix
+++ b/pkgs/development/python-modules/jsonpath/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,20 +18,14 @@ buildPythonPackage rec {
     hash = "sha256-2H7yvLze1o7pa8NMGAm2lFfs7JsMTdRxZYoSvTkQAtE=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "jsonpath"
-  ];
+  pythonImportsCheck = [ "jsonpath" ];
 
-  pytestFlagsArray = [
-    "test/test*.py"
-  ];
+  pytestFlagsArray = [ "test/test*.py" ];
 
   meta = with lib; {
-    description = "An XPath for JSON";
+    description = "XPath for JSON";
     homepage = "https://github.com/json-path/JsonPath";
     license = licenses.mit;
     maintainers = with maintainers; [ mic92 ];
diff --git a/pkgs/development/python-modules/jsonpickle/default.nix b/pkgs/development/python-modules/jsonpickle/default.nix
index 4e3fd813144b0..dfb40be4bb61b 100644
--- a/pkgs/development/python-modules/jsonpickle/default.nix
+++ b/pkgs/development/python-modules/jsonpickle/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonAtLeast
-
-# build-system
-, setuptools
-, setuptools-scm
-
-# tests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonAtLeast,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "jsonpickle";
-  version = "3.0.3";
+  version = "3.2.1";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-VpH0RJUyeFirOpW5xECnm0HjVCG+Gm4JpHtsm5Qh/QY=";
+    hash = "sha256-S212QJdBmfes+QNSlTZbWhpxqREJ7/oVuhcPu0jPhxw=";
   };
 
   nativeBuildInputs = [
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     rm pytest.ini
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = lib.optionals (pythonAtLeast "3.12") [
     # imports distutils
@@ -45,5 +44,4 @@ buildPythonPackage rec {
     homepage = "http://jsonpickle.github.io/";
     license = licenses.bsd3;
   };
-
 }
diff --git a/pkgs/development/python-modules/jsonpointer/default.nix b/pkgs/development/python-modules/jsonpointer/default.nix
index ff44d8ff978cf..5017a0da27d65 100644
--- a/pkgs/development/python-modules/jsonpointer/default.nix
+++ b/pkgs/development/python-modules/jsonpointer/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
   pname = "jsonpointer";
-  version = "2.4";
+  version = "3.0.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-WFzugrcCEfqeYEO3u4nbbhqklSQ0Dd6K1rYyBuponYg=";
+    hash = "sha256-Ky1ynyCRUi1hw7MfguEYcPYLaPQ/vHBct2v0uDKvWe8=";
   };
 
   meta = with lib; {
@@ -19,5 +20,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/stefankoegl/python-json-pointer";
     license = licenses.bsd2; # "Modified BSD license, says pypi"
   };
-
 }
diff --git a/pkgs/development/python-modules/jsonref/default.nix b/pkgs/development/python-modules/jsonref/default.nix
index dc12c60aed48a..fbae39f1b548d 100644
--- a/pkgs/development/python-modules/jsonref/default.nix
+++ b/pkgs/development/python-modules/jsonref/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pdm-backend
-, pdm-pep517
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pdm-backend,
+  pdm-pep517,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,23 +27,17 @@ buildPythonPackage rec {
     pdm-pep517
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests.py"
-  ];
+  pytestFlagsArray = [ "tests.py" ];
 
-  pythonImportsCheck = [
-    "jsonref"
-  ];
+  pythonImportsCheck = [ "jsonref" ];
 
   meta = with lib; {
-    description = "An implementation of JSON Reference for Python";
+    description = "Implementation of JSON Reference for Python";
     homepage = "https://github.com/gazpachoking/jsonref";
     changelog = "https://github.com/gazpachoking/jsonref/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jsonrpc-async/default.nix b/pkgs/development/python-modules/jsonrpc-async/default.nix
index 613d4478af877..52224a0b8dcdf 100644
--- a/pkgs/development/python-modules/jsonrpc-async/default.nix
+++ b/pkgs/development/python-modules/jsonrpc-async/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, jsonrpc-base
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jsonrpc-base,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -32,16 +33,12 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "tests.py"
-  ];
+  pytestFlagsArray = [ "tests.py" ];
 
-  pythonImportsCheck = [
-    "jsonrpc_async"
-  ];
+  pythonImportsCheck = [ "jsonrpc_async" ];
 
   meta = with lib; {
-    description = "A JSON-RPC client library for asyncio";
+    description = "JSON-RPC client library for asyncio";
     homepage = "https://github.com/emlove/jsonrpc-async";
     license = licenses.bsd3;
     maintainers = with maintainers; [ peterhoeg ];
diff --git a/pkgs/development/python-modules/jsonrpc-base/default.nix b/pkgs/development/python-modules/jsonrpc-base/default.nix
index f10f9bbb8b829..2b4f81d0706ce 100644
--- a/pkgs/development/python-modules/jsonrpc-base/default.nix
+++ b/pkgs/development/python-modules/jsonrpc-base/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,25 +22,19 @@ buildPythonPackage rec {
     hash = "sha256-AbpuAW+wuGc+Vj4FDFlyB2YbiwDxPLuyAGiNcmGU+Ss=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "tests.py"
-  ];
+  pytestFlagsArray = [ "tests.py" ];
 
-  pythonImportsCheck = [
-    "jsonrpc_base"
-  ];
+  pythonImportsCheck = [ "jsonrpc_base" ];
 
   meta = with lib; {
-    description = "A JSON-RPC client library base interface";
+    description = "JSON-RPC client library base interface";
     homepage = "https://github.com/emlove/jsonrpc-base";
     license = licenses.bsd3;
     maintainers = with maintainers; [ peterhoeg ];
diff --git a/pkgs/development/python-modules/jsonrpc-websocket/default.nix b/pkgs/development/python-modules/jsonrpc-websocket/default.nix
index eb50c3f3a32ed..1ec395bc5a505 100644
--- a/pkgs/development/python-modules/jsonrpc-websocket/default.nix
+++ b/pkgs/development/python-modules/jsonrpc-websocket/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, jsonrpc-base
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jsonrpc-base,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-CdYa4gcbG3EM1glxLU1hyqbNse87KJKjwSRQSFfDMM0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -44,12 +43,10 @@ buildPythonPackage rec {
     "tests.py"
   ];
 
-  pythonImportsCheck = [
-    "jsonrpc_websocket"
-  ];
+  pythonImportsCheck = [ "jsonrpc_websocket" ];
 
   meta = with lib; {
-    description = "A JSON-RPC websocket client library for asyncio";
+    description = "JSON-RPC websocket client library for asyncio";
     homepage = "https://github.com/emlove/jsonrpc-websocket";
     license = licenses.bsd3;
     maintainers = with maintainers; [ peterhoeg ];
diff --git a/pkgs/development/python-modules/jsonrpclib-pelix/default.nix b/pkgs/development/python-modules/jsonrpclib-pelix/default.nix
index 0ad585b3e2dc2..314e3433dadf2 100644
--- a/pkgs/development/python-modules/jsonrpclib-pelix/default.nix
+++ b/pkgs/development/python-modules/jsonrpclib-pelix/default.nix
@@ -1,16 +1,17 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
 }:
 
 buildPythonPackage rec {
   pname = "jsonrpclib-pelix";
-  version = "0.4.3.2";
+  version = "0.4.3.3";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-6eCzPvqPog2BfdeN/Z5M2zlnyKXTy1p4O+HugcSonHw=";
+    hash = "sha256-xJT+cQCxE5sTEUacKLwy0cuS5P8fRRH7cdaAcgXcN3M=";
   };
 
   doCheck = false; # test_suite="tests" in setup.py but no tests in pypi.
@@ -19,6 +20,6 @@ buildPythonPackage rec {
     description = "JSON RPC client library - Pelix compatible fork";
     homepage = "https://pypi.python.org/pypi/jsonrpclib-pelix/";
     license = lib.licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jsons/default.nix b/pkgs/development/python-modules/jsons/default.nix
index 9a5116c94d6a4..dc23f88173201 100644
--- a/pkgs/development/python-modules/jsons/default.nix
+++ b/pkgs/development/python-modules/jsons/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, attrs
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, typish
-, tzdata
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  typish,
+  tzdata,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-7OIByHvsqhKFOkb1q2kuxmbkkleryavYgp/T4U5hvGk=";
   };
 
-  propagatedBuildInputs = [
-    typish
-  ];
+  propagatedBuildInputs = [ typish ];
 
   nativeCheckInputs = [
     attrs
@@ -44,9 +43,7 @@ buildPythonPackage rec {
     "test_dump_load_parameterized_collections"
   ];
 
-  pythonImportsCheck = [
-    "jsons"
-  ];
+  pythonImportsCheck = [ "jsons" ];
 
   meta = with lib; {
     description = "Turn Python objects into dicts or json strings and back";
diff --git a/pkgs/development/python-modules/jsonschema-path/default.nix b/pkgs/development/python-modules/jsonschema-path/default.nix
index 1fad4ed64e106..9add473d07cdd 100644
--- a/pkgs/development/python-modules/jsonschema-path/default.nix
+++ b/pkgs/development/python-modules/jsonschema-path/default.nix
@@ -1,19 +1,19 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, pythonRelaxDepsHook
-, pathable
-, pyyaml
-, referencing
-, pytestCheckHook
-, responses
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  pathable,
+  pyyaml,
+  referencing,
+  pytestCheckHook,
+  responses,
 }:
 
 buildPythonPackage rec {
   pname = "jsonschema-path";
-  version = "0.3.2";
+  version = "0.3.3";
 
   disabled = pythonOlder "3.8";
 
@@ -22,22 +22,15 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "p1c2u";
     repo = "jsonschema-path";
-    rev = version;
-    hash = "sha256-HC0yfACKFIQEQoIa8/FUKyV8YS8TQ0BY7i3n9xCdKz8=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-oBzB6Ke19QDcMQm4MpnaS132/prrtnCekAXuPMloZx4=";
   };
 
   postPatch = ''
     sed -i '/--cov/d' pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
-
-  pythonRelaxDeps = [
-    "referencing"
-  ];
+  build-system = [ poetry-core ];
 
   propagatedBuildInputs = [
     pathable
@@ -53,6 +46,7 @@ buildPythonPackage rec {
   ];
 
   meta = {
+    changelog = "https://github.com/p1c2u/jsonschema-path/releases/tag/${version}";
     description = "JSONSchema Spec with object-oriented paths";
     homepage = "https://github.com/p1c2u/jsonschema-path";
     license = lib.licenses.asl20;
diff --git a/pkgs/development/python-modules/jsonschema-spec/default.nix b/pkgs/development/python-modules/jsonschema-spec/default.nix
index c41d8b35cf096..4f8246df728ff 100644
--- a/pkgs/development/python-modules/jsonschema-spec/default.nix
+++ b/pkgs/development/python-modules/jsonschema-spec/default.nix
@@ -1,26 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build
-, poetry-core
+  # build
+  poetry-core,
 
-# propagates
-, pathable
-, pyyaml
-, referencing
-, requests
+  # propagates
+  pathable,
+  pyyaml,
+  referencing,
+  requests,
 
-# tests
-, pytestCheckHook
-, responses
+  # tests
+  pytestCheckHook,
+  responses,
 }:
 
 buildPythonPackage rec {
   pname = "jsonschema-spec";
-  version = "0.2.4";
+  version = "0.3.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -29,7 +29,7 @@ buildPythonPackage rec {
     owner = "p1c2u";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-1Flb3XQCGhrAYzTvriSVhHDb/Z/uvCyZdbav2u7f3sg=";
+    hash = "sha256-oBzB6Ke19QDcMQm4MpnaS132/prrtnCekAXuPMloZx4=";
   };
 
   postPatch = ''
@@ -41,12 +41,9 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "referencing"
-  ];
+  pythonRelaxDeps = [ "referencing" ];
 
   propagatedBuildInputs = [
     pathable
diff --git a/pkgs/development/python-modules/jsonschema-specifications/default.nix b/pkgs/development/python-modules/jsonschema-specifications/default.nix
index 6d4a6478374b8..989f5c5cb1e24 100644
--- a/pkgs/development/python-modules/jsonschema-specifications/default.nix
+++ b/pkgs/development/python-modules/jsonschema-specifications/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatch-vcs
-, hatchling
-, importlib-resources
-, pytestCheckHook
-, pythonOlder
-, referencing
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatch-vcs,
+  hatchling,
+  importlib-resources,
+  pytestCheckHook,
+  pythonOlder,
+  referencing,
 }:
 
 buildPythonPackage rec {
@@ -29,17 +30,11 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     referencing
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    importlib-resources
-  ];
+  ] ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "jsonschema_specifications"
-  ];
+  pythonImportsCheck = [ "jsonschema_specifications" ];
 
   meta = with lib; {
     description = "Support files exposing JSON from the JSON Schema specifications";
diff --git a/pkgs/development/python-modules/jsonschema/default.nix b/pkgs/development/python-modules/jsonschema/default.nix
index 97147b055e93b..b0db522f61e91 100644
--- a/pkgs/development/python-modules/jsonschema/default.nix
+++ b/pkgs/development/python-modules/jsonschema/default.nix
@@ -1,41 +1,42 @@
-{ lib
-, attrs
-, buildPythonPackage
-, fetchPypi
-, hatch-fancy-pypi-readme
-, hatch-vcs
-, hatchling
-, importlib-resources
-, jsonschema-specifications
-, pkgutil-resolve-name
-, pip
-, pytestCheckHook
-, pythonOlder
-, referencing
-, rpds-py
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  fetchPypi,
+  hatch-fancy-pypi-readme,
+  hatch-vcs,
+  hatchling,
+  importlib-resources,
+  jsonschema-specifications,
+  pkgutil-resolve-name,
+  pip,
+  pytestCheckHook,
+  pythonOlder,
+  referencing,
+  rpds-py,
 
-# optionals
-, fqdn
-, idna
-, isoduration
-, jsonpointer
-, rfc3339-validator
-, rfc3986-validator
-, rfc3987
-, uri-template
-, webcolors
+  # optionals
+  fqdn,
+  idna,
+  isoduration,
+  jsonpointer,
+  rfc3339-validator,
+  rfc3986-validator,
+  rfc3987,
+  uri-template,
+  webcolors,
 }:
 
 buildPythonPackage rec {
   pname = "jsonschema";
-  version = "4.21.1";
+  version = "4.22.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-hXJ8ACefX6a+2+YjjSqmQDvt2LSGSrESB9B988wbLuU=";
+    hash = "sha256-WyLUNKRZNRGa+ZBVLIYuXW1WTo9mASBrMFph/fZhorc=";
   };
 
   postPatch = ''
@@ -48,15 +49,17 @@ buildPythonPackage rec {
     hatchling
   ];
 
-  propagatedBuildInputs = [
-    attrs
-    jsonschema-specifications
-    referencing
-    rpds-py
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    importlib-resources
-    pkgutil-resolve-name
-  ];
+  propagatedBuildInputs =
+    [
+      attrs
+      jsonschema-specifications
+      referencing
+      rpds-py
+    ]
+    ++ lib.optionals (pythonOlder "3.9") [
+      importlib-resources
+      pkgutil-resolve-name
+    ];
 
   passthru.optional-dependencies = {
     format = [
@@ -86,12 +89,10 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "jsonschema"
-  ];
+  pythonImportsCheck = [ "jsonschema" ];
 
   meta = with lib; {
-    description = "An implementation of JSON Schema validation";
+    description = "Implementation of JSON Schema validation";
     mainProgram = "jsonschema";
     homepage = "https://github.com/python-jsonschema/jsonschema";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/jsonslicer/default.nix b/pkgs/development/python-modules/jsonslicer/default.nix
index 53f5ddb70523c..a7f79e849be34 100644
--- a/pkgs/development/python-modules/jsonslicer/default.nix
+++ b/pkgs/development/python-modules/jsonslicer/default.nix
@@ -1,31 +1,47 @@
 {
-  stdenv,
   lib,
   buildPythonPackage,
   fetchFromGitHub,
+  gitUpdater,
+  pytestCheckHook,
+  unittestCheckHook,
+  setuptools,
   pkg-config,
   yajl,
 }:
 
 buildPythonPackage rec {
   pname = "jsonslicer";
-  version = "0.1.7";
-  format = "setuptools";
+  version = "0.1.8";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "AMDmi3";
     repo = "jsonslicer";
-    rev = version;
-    hash = "sha256-uKIe/nJLCTe8WFIMB7+g3c0Yv3addgZEKYaBI6EpBSY=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-nPifyqr+MaFqoCYFbFSSBDjvifpX0CFnHCdMCvhwYTA=";
   };
 
-  nativeBuildInputs = [ pkg-config ];
+  build-system = [
+    setuptools
+    pkg-config
+  ];
 
   buildInputs = [ yajl ];
 
+  nativeCheckInputs = [
+    pytestCheckHook
+    unittestCheckHook
+  ];
+
+  pythonImportsCheck = [ "jsonslicer" ];
+
+  passthru.updateScript = gitUpdater { };
+
   meta = with lib; {
-    description = "Stream JSON parser for Python ";
+    description = "Stream JSON parser for Python";
     homepage = "https://github.com/AMDmi3/jsonslicer";
+    changelog = "https://github.com/AMDmi3/jsonslicer/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ jopejoe1 ];
   };
diff --git a/pkgs/development/python-modules/jsonstreams/default.nix b/pkgs/development/python-modules/jsonstreams/default.nix
index 6fcd075c8445a..49ffcee24b82b 100644
--- a/pkgs/development/python-modules/jsonstreams/default.nix
+++ b/pkgs/development/python-modules/jsonstreams/default.nix
@@ -1,4 +1,11 @@
-{ stdenv, lib, buildPythonPackage, fetchFromGitHub, pytestCheckHook, six, }:
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  six,
+}:
 
 buildPythonPackage rec {
   pname = "jsonstreams";
@@ -18,8 +25,8 @@ buildPythonPackage rec {
   pytestFlagsArray = [ "tests --doctest-modules jsonstreams" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
-    description = "A JSON streaming writer";
+    broken = stdenv.hostPlatform.isDarwin;
+    description = "JSON streaming writer";
     homepage = "https://github.com/dcbaker/jsonstreams";
     license = licenses.mit;
     maintainers = with maintainers; [ chkno ];
diff --git a/pkgs/development/python-modules/jsonxs/default.nix b/pkgs/development/python-modules/jsonxs/default.nix
new file mode 100644
index 0000000000000..cf71095cf765e
--- /dev/null
+++ b/pkgs/development/python-modules/jsonxs/default.nix
@@ -0,0 +1,31 @@
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+}:
+let
+  pname = "jsonxs";
+  version = "0.6";
+in
+buildPythonPackage {
+  inherit pname version;
+
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "fboender";
+    repo = "jsonxs";
+    rev = "v${version}";
+    hash = "sha256-CmKK+qStb9xjmEACY41tQnffD4cMUUQPb74Cni5FTEk=";
+  };
+
+  build-system = [ setuptools ];
+
+  meta = {
+    description = "A python library that uses path expression strings to get and set values in JSON";
+    homepage = "https://github.com/fboender/jsonxs";
+    license = lib.licenses.mit;
+    maintainers = [ lib.maintainers.tie ];
+  };
+}
diff --git a/pkgs/development/python-modules/jstyleson/default.nix b/pkgs/development/python-modules/jstyleson/default.nix
index 9c2008d1f7f7f..c38e847872753 100644
--- a/pkgs/development/python-modules/jstyleson/default.nix
+++ b/pkgs/development/python-modules/jstyleson/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,14 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-s/0DDfy+07TuUNjHPqKRT3xMMQl6spZCacB7Dweof7A=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "jstyleson" ];
 
   meta = with lib; {
-    description = "A python library to parse JSON with js-style comments";
+    description = "Python library to parse JSON with js-style comments";
     homepage = "https://github.com/linjackson78/jstyleson";
     license = licenses.mit;
     maintainers = with maintainers; [ ambroisie ];
diff --git a/pkgs/development/python-modules/jug/default.nix b/pkgs/development/python-modules/jug/default.nix
index 315b156290417..ed62d63062217 100644
--- a/pkgs/development/python-modules/jug/default.nix
+++ b/pkgs/development/python-modules/jug/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, bottle
-, buildPythonPackage
-, fetchPypi
-, numpy
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, redis
+{
+  lib,
+  bottle,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  redis,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-Y2TWqJi7GjmWUFpe1b150NgwRw9VKhCk5EoN5NDcPXU=";
   };
 
-  propagatedBuildInputs = [
-    bottle
-  ];
+  propagatedBuildInputs = [ bottle ];
 
   nativeCheckInputs = [
     numpy
@@ -33,12 +32,10 @@ buildPythonPackage rec {
     redis
   ];
 
-  pythonImportsCheck = [
-    "jug"
-  ];
+  pythonImportsCheck = [ "jug" ];
 
   meta = with lib; {
-    description = "A Task-Based Parallelization Framework";
+    description = "Task-Based Parallelization Framework";
     homepage = "https://jug.readthedocs.io/";
     changelog = "https://github.com/luispedro/jug/blob/v${version}/ChangeLog";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/julius/default.nix b/pkgs/development/python-modules/julius/default.nix
index a261b43454d62..5efa7622b962c 100644
--- a/pkgs/development/python-modules/julius/default.nix
+++ b/pkgs/development/python-modules/julius/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, wheel
-, torch
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  wheel,
+  torch,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-PA9fUwbX1gFvzJUZaydMrm8H4slZbu0xTk52QVVPuwg=";
   };
 
-  propagatedBuildInputs = [
-    torch
-  ];
+  propagatedBuildInputs = [ torch ];
 
   nativeBuildInputs = [
     setuptools
diff --git a/pkgs/development/python-modules/junit-xml/default.nix b/pkgs/development/python-modules/junit-xml/default.nix
index 1de05ff7e0678..8ec89b19beb7d 100644
--- a/pkgs/development/python-modules/junit-xml/default.nix
+++ b/pkgs/development/python-modules/junit-xml/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, six
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  six,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/junit2html/default.nix b/pkgs/development/python-modules/junit2html/default.nix
index bc21fdb74bf7a..b53bf1edcea8a 100644
--- a/pkgs/development/python-modules/junit2html/default.nix
+++ b/pkgs/development/python-modules/junit2html/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jinja2
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jinja2,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -19,20 +19,14 @@ buildPythonPackage rec {
     hash = "sha256-1q6KpKdrZvp8XvxGCkoorlZDDgvGg/imTX8+NEOBbWs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    jinja2
-  ];
+  propagatedBuildInputs = [ jinja2 ];
 
   # Tests are not shipped with PyPi and source is not tagged
   doCheck = false;
 
-  pythonImportsCheck = [
-    "junit2htmlreport"
-  ];
+  pythonImportsCheck = [ "junit2htmlreport" ];
 
   meta = with lib; {
     description = "Generate HTML reports from Junit results";
diff --git a/pkgs/development/python-modules/junitparser/default.nix b/pkgs/development/python-modules/junitparser/default.nix
index 490f919a712a1..2ff93168391a5 100644
--- a/pkgs/development/python-modules/junitparser/default.nix
+++ b/pkgs/development/python-modules/junitparser/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, future
-, glibcLocales
-, lxml
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  future,
+  glibcLocales,
+  lxml,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,11 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ future ];
 
-  nativeCheckInputs = [ unittestCheckHook lxml glibcLocales ];
+  nativeCheckInputs = [
+    unittestCheckHook
+    lxml
+    glibcLocales
+  ];
 
   unittestFlagsArray = [ "-v" ];
 
diff --git a/pkgs/development/python-modules/jupysql-plugin/default.nix b/pkgs/development/python-modules/jupysql-plugin/default.nix
new file mode 100644
index 0000000000000..40ddfaab803f8
--- /dev/null
+++ b/pkgs/development/python-modules/jupysql-plugin/default.nix
@@ -0,0 +1,48 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  hatchling,
+  hatch-jupyter-builder,
+  hatch-nodejs-version,
+  jupyterlab,
+  ploomber-core,
+}:
+
+buildPythonPackage rec {
+  pname = "jupysql-plugin";
+  version = "0.4.4";
+
+  pyproject = true;
+  disabled = pythonOlder "3.6";
+
+  # using pypi archive which includes pre-built assets
+  src = fetchPypi {
+    pname = "jupysql_plugin";
+    inherit version;
+    hash = "sha256-kuaKknbc00nLGwCUsULgUFT52yoptUH2mnUyGYbYYKk=";
+  };
+
+  build-system = [
+    hatchling
+    hatch-jupyter-builder
+    hatch-nodejs-version
+    jupyterlab
+  ];
+
+  dependencies = [ ploomber-core ];
+
+  # testing requires a circular dependency over jupysql
+  doCheck = false;
+
+  pythonImportsCheck = [ "jupysql_plugin" ];
+
+  meta = with lib; {
+    description = "Better SQL in Jupyter";
+    homepage = "https://github.com/ploomber/jupysql-plugin";
+    changelog = "https://github.com/ploomber/jupysql-plugin/blob/${version}/CHANGELOG.md";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ pacien ];
+  };
+}
diff --git a/pkgs/development/python-modules/jupysql/default.nix b/pkgs/development/python-modules/jupysql/default.nix
new file mode 100644
index 0000000000000..ec9f51237679e
--- /dev/null
+++ b/pkgs/development/python-modules/jupysql/default.nix
@@ -0,0 +1,120 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  ipython-genutils,
+  jinja2,
+  jupysql-plugin,
+  ploomber-core,
+  prettytable,
+  sqlalchemy,
+  sqlglot,
+  sqlparse,
+
+  # optional-dependencies
+  duckdb,
+  duckdb-engine,
+  grpcio,
+  ipython,
+  ipywidgets,
+  js2py,
+  matplotlib,
+  numpy,
+  pandas,
+  polars,
+  pyarrow,
+  pyspark,
+
+  # tests
+  pytestCheckHook,
+  psutil,
+}:
+
+buildPythonPackage rec {
+  pname = "jupysql";
+  version = "0.10.13";
+
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "ploomber";
+    repo = "jupysql";
+    rev = "refs/tags/${version}";
+    hash = "sha256-vNuMGHFkatJS5KjxaOBwZ7JolIDAdYqGq3JNKSV2fKE=";
+  };
+
+  pythonRelaxDeps = [ "sqlalchemy" ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    ipython-genutils
+    jinja2
+    jupysql-plugin
+    ploomber-core
+    prettytable
+    sqlalchemy
+    sqlglot
+    sqlparse
+  ];
+
+  optional-dependencies.dev = [
+    duckdb
+    duckdb-engine
+    grpcio
+    ipython
+    ipywidgets
+    js2py
+    matplotlib
+    numpy
+    pandas
+    polars
+    pyarrow
+    pyspark
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    psutil
+  ] ++ optional-dependencies.dev;
+
+  disabledTests = [
+    # AttributeError: 'DataFrame' object has no attribute 'frame_equal'
+    "test_resultset_polars_dataframe"
+  ];
+
+  disabledTestPaths = [
+    # require docker
+    "src/tests/integration"
+
+    # require network access
+    "src/tests/test_telemetry.py"
+
+    # want to download test data from the network
+    "src/tests/test_parse.py"
+    "src/tests/test_ggplot.py"
+    "src/tests/test_plot.py"
+    "src/tests/test_magic.py"
+    "src/tests/test_magic_plot.py"
+  ];
+
+  preCheck = ''
+    # tests need to write temp data
+    export HOME=$(mktemp -d)
+  '';
+
+  pythonImportsCheck = [ "sql" ];
+
+  meta = {
+    description = "Better SQL in Jupyter";
+    homepage = "https://github.com/ploomber/jupysql";
+    changelog = "https://github.com/ploomber/jupysql/blob/${version}/CHANGELOG.md";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ pacien ];
+  };
+}
diff --git a/pkgs/development/python-modules/jupyter-book/default.nix b/pkgs/development/python-modules/jupyter-book/default.nix
index 202c65e42a087..47e36e157eb10 100644
--- a/pkgs/development/python-modules/jupyter-book/default.nix
+++ b/pkgs/development/python-modules/jupyter-book/default.nix
@@ -1,46 +1,54 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, flit-core
-, click
-, jinja2
-, jsonschema
-, linkify-it-py
-, myst-nb
-, myst-parser
-, pyyaml
-, sphinx
-, sphinx-comments
-, sphinx-copybutton
-, sphinx-external-toc
-, sphinx-jupyterbook-latex
-, sphinx-design
-, sphinx-thebe
-, sphinx-book-theme
-, sphinx-togglebutton
-, sphinxcontrib-bibtex
-, sphinx-multitoc-numbering
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  flit-core,
+  click,
+  jinja2,
+  jsonschema,
+  linkify-it-py,
+  myst-nb,
+  myst-parser,
+  pyyaml,
+  sphinx,
+  sphinx-comments,
+  sphinx-copybutton,
+  sphinx-external-toc,
+  sphinx-jupyterbook-latex,
+  sphinx-design,
+  sphinx-thebe,
+  sphinx-book-theme,
+  sphinx-togglebutton,
+  sphinxcontrib-bibtex,
+  sphinx-multitoc-numbering,
+  pytestCheckHook,
+  texsoup,
+  jupytext,
+  pytest-regressions,
+  pytest-xdist,
+  sphinx-inline-tabs,
 }:
 
 buildPythonPackage rec {
   pname = "jupyter-book";
-  version = "1.0.0";
+  version = "1.0.2";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
 
-  src = fetchPypi {
-    inherit version;
-    pname = "jupyter_book";
-    hash = "sha256-U5xdBJNUYgDZ3ie9S1936uoDEV+JN/gl1P+Cs4AamH4=";
+  src = fetchFromGitHub {
+    owner = "jupyter-book";
+    repo = "jupyter-book";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-NlCMfkfvquonqf7FdaJ7AC9ebM7VSifn+zM7gWh32LQ=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
+
+  pythonRelaxDeps = [ "myst-parser" ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     click
     jinja2
     jsonschema
@@ -66,12 +74,46 @@ buildPythonPackage rec {
     "jupyter_book.cli.main"
   ];
 
+  nativeCheckInputs = [
+    jupytext
+    pytest-regressions
+    pytest-xdist
+    pytestCheckHook
+    sphinx-inline-tabs
+    texsoup
+  ];
+
+  preCheck = ''
+    export HOME=$TMPDIR
+  '';
+
+  disabledTests = [
+    # touch the network
+    "test_create_from_cookiecutter"
+    # flaky?
+    "test_execution_timeout"
+    # require texlive
+    "test_toc"
+    "test_toc_latex_parts"
+    "test_toc_latex_urllink"
+    # WARNING: Executing notebook failed: CellExecutionError [mystnb.exec]
+    "test_build_dirhtml_from_template"
+    "test_build_from_template"
+    "test_build_page"
+    "test_build_singlehtml_from_template"
+  ];
+
+  disabledTestPaths = [
+    # require texlive
+    "tests/test_pdf.py"
+  ];
+
   meta = with lib; {
     description = "Build a book with Jupyter Notebooks and Sphinx";
     homepage = "https://jupyterbook.org/";
-    changelog = "https://github.com/executablebooks/jupyter-book/blob/v${version}/CHANGELOG.md";
+    changelog = "https://github.com/jupyter-book/jupyter-book/blob/${src.rev}/CHANGELOG.md";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = teams.jupyter.members;
     mainProgram = "jupyter-book";
   };
 }
diff --git a/pkgs/development/python-modules/jupyter-c-kernel/default.nix b/pkgs/development/python-modules/jupyter-c-kernel/default.nix
index c15d8dff3f6f7..ba5b3ff85d409 100644
--- a/pkgs/development/python-modules/jupyter-c-kernel/default.nix
+++ b/pkgs/development/python-modules/jupyter-c-kernel/default.nix
@@ -1,14 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, ipykernel
-, gcc
+{
+  lib,
+  buildPythonPackage,
+  setuptools,
+  fetchPypi,
+  ipykernel,
+  gcc,
 }:
 
 buildPythonPackage rec {
   pname = "jupyter-c-kernel";
   version = "1.2.2";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     pname = "jupyter_c_kernel";
@@ -18,10 +20,12 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace jupyter_c_kernel/kernel.py \
-      --replace "'gcc'" "'${gcc}/bin/gcc'"
+      --replace-fail "'gcc'" "'${gcc}/bin/gcc'"
   '';
 
-  propagatedBuildInputs = [ ipykernel ];
+  build-system = [ setuptools ];
+
+  dependencies = [ ipykernel ];
 
   # no tests in repository
   doCheck = false;
diff --git a/pkgs/development/python-modules/jupyter-cache/default.nix b/pkgs/development/python-modules/jupyter-cache/default.nix
index e2e597dd4a85f..2815d9ee8105d 100644
--- a/pkgs/development/python-modules/jupyter-cache/default.nix
+++ b/pkgs/development/python-modules/jupyter-cache/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, attrs
-, click
-, flit-core
-, importlib-metadata
-, nbclient
-, nbformat
-, pyyaml
-, sqlalchemy
-, tabulate
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  attrs,
+  click,
+  flit-core,
+  importlib-metadata,
+  nbclient,
+  nbformat,
+  pyyaml,
+  sqlalchemy,
+  tabulate,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-0Pp9dTPNV5gZjYiJMYJpqME4LtOyL2IsCak1ZSH0hoc=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     attrs
@@ -44,11 +43,11 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "jupyter_cache" ];
 
   meta = with lib; {
-    description = "A defined interface for working with a cache of jupyter notebooks";
+    description = "Defined interface for working with a cache of jupyter notebooks";
     mainProgram = "jcache";
     homepage = "https://github.com/executablebooks/jupyter-cache";
     changelog = "https://github.com/executablebooks/jupyter-cache/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jupyter-client/default.nix b/pkgs/development/python-modules/jupyter-client/default.nix
index a556885e84399..82778299c799c 100644
--- a/pkgs/development/python-modules/jupyter-client/default.nix
+++ b/pkgs/development/python-modules/jupyter-client/default.nix
@@ -1,44 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jupyter-core
-, hatchling
-, python-dateutil
-, pyzmq
-, tornado
-, traitlets
-, pythonOlder
-, importlib-metadata
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jupyter-core,
+  hatchling,
+  python-dateutil,
+  pyzmq,
+  tornado,
+  traitlets,
+  pythonOlder,
+  importlib-metadata,
 }:
 
 buildPythonPackage rec {
   pname = "jupyter-client";
-  version = "8.6.1";
+  version = "8.6.2";
   pyproject = true;
 
   src = fetchPypi {
     pname = "jupyter_client";
     inherit version;
-    hash = "sha256-6EJRXiurjhkYbYn9/qer0V453VgflOOZ8A4q9aFlLT8=";
+    hash = "sha256-K9oU1V7lulhVKoxTrkPSFa2YaIU0iSE/N9oGDO1U2N8=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     jupyter-core
     python-dateutil
     pyzmq
     tornado
     traitlets
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
-  pythonImportsCheck = [
-    "jupyter_client"
-  ];
+  pythonImportsCheck = [ "jupyter_client" ];
 
   # Circular dependency with ipykernel
   doCheck = false;
@@ -48,5 +43,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/jupyter/jupyter_client";
     changelog = "https://github.com/jupyter/jupyter_client/blob/v${version}/CHANGELOG.md";
     license = lib.licenses.bsd3;
+    maintainers = lib.teams.jupyter.members;
   };
 }
diff --git a/pkgs/development/python-modules/jupyter-collaboration/default.nix b/pkgs/development/python-modules/jupyter-collaboration/default.nix
index 1c01c6d4d1d69..4e4bfd7b456c0 100644
--- a/pkgs/development/python-modules/jupyter-collaboration/default.nix
+++ b/pkgs/development/python-modules/jupyter-collaboration/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, hatch-jupyter-builder
-, hatch-nodejs-version
-, hatchling
-, jsonschema
-, jupyter-events
-, jupyter-server
-, jupyter-server-fileid
-, jupyter-ydoc
-, jupyterlab
-, pycrdt-websocket
-, pytest-jupyter
-, pytestCheckHook
-, websockets
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  hatch-jupyter-builder,
+  hatch-nodejs-version,
+  hatchling,
+  jsonschema,
+  jupyter-events,
+  jupyter-server,
+  jupyter-server-fileid,
+  jupyter-ydoc,
+  jupyterlab,
+  pycrdt-websocket,
+  pytest-jupyter,
+  pytestCheckHook,
+  websockets,
 }:
 
 buildPythonPackage rec {
   pname = "jupyter-collaboration";
-  version = "2.0.11";
+  version = "2.1.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -27,7 +28,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "jupyter_collaboration";
     inherit version;
-    hash = "sha256-K7HN5yzadY5Sb6Sfn/K/QCzu14AcDEGHq+TSHkLhgTY=";
+    hash = "sha256-uLbNYzszaSLnU4VcaDr5KBcRN+Xm/B471s+W9qJibsk=";
   };
 
   postPatch = ''
@@ -56,21 +57,19 @@ buildPythonPackage rec {
     websockets
   ];
 
-  pythonImportsCheck = [
-    "jupyter_collaboration"
-  ];
+  pythonImportsCheck = [ "jupyter_collaboration" ];
 
   preCheck = ''
     export HOME=$TEMP
   '';
 
-  pytestFlagsArray = [
-    "-Wignore::DeprecationWarning"
-  ];
+  pytestFlagsArray = [ "-Wignore::DeprecationWarning" ];
 
   disabledTests = [
     # ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
     "test_dirty"
+    # causes a hang
+    "test_rooms"
   ];
 
   __darwinAllowLocalNetworking = true;
diff --git a/pkgs/development/python-modules/jupyter-console/default.nix b/pkgs/development/python-modules/jupyter-console/default.nix
index 81276bcc411eb..5ae844ad91edb 100644
--- a/pkgs/development/python-modules/jupyter-console/default.nix
+++ b/pkgs/development/python-modules/jupyter-console/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, hatchling
-, ipykernel
-, exceptiongroup
-, ipython
-, jupyter-client
-, jupyter-core
-, prompt-toolkit
-, pygments
-, pyzmq
-, traitlets
-, flaky
-, pexpect
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  hatchling,
+  ipykernel,
+  exceptiongroup,
+  ipython,
+  jupyter-client,
+  jupyter-core,
+  prompt-toolkit,
+  pygments,
+  pyzmq,
+  traitlets,
+  flaky,
+  pexpect,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     hash = "sha256-VmpL8xyHrb+t8izfhG4wabWace1dpx1rpNiqrRSlNTk=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   postPatch = ''
     # use wrapped executable in tests
@@ -51,13 +50,9 @@ buildPythonPackage rec {
     pygments
     pyzmq
     traitlets
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    exceptiongroup
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ exceptiongroup ];
 
-  pythonImportsCheck = [
-    "jupyter_console"
-  ];
+  pythonImportsCheck = [ "jupyter_console" ];
 
   nativeCheckInputs = [
     flaky
diff --git a/pkgs/development/python-modules/jupyter-contrib-core/default.nix b/pkgs/development/python-modules/jupyter-contrib-core/default.nix
index 0da8c5f4f1515..a4e77af78b71c 100644
--- a/pkgs/development/python-modules/jupyter-contrib-core/default.nix
+++ b/pkgs/development/python-modules/jupyter-contrib-core/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, jupyter-core
-, notebook
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jupyter-core,
+  notebook,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/jupyter-contrib-nbextensions/default.nix b/pkgs/development/python-modules/jupyter-contrib-nbextensions/default.nix
deleted file mode 100644
index c509a0972bed4..0000000000000
--- a/pkgs/development/python-modules/jupyter-contrib-nbextensions/default.nix
+++ /dev/null
@@ -1,58 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, ipython-genutils
-, jupyter-contrib-core
-, jupyter-highlight-selected-word
-, jupyter-nbextensions-configurator
-, lxml
-, nose
-, pytestCheckHook
-, notebook
-}:
-
-buildPythonPackage rec {
-  pname = "jupyter-contrib-nbextensions";
-  version = "0.7.0";
-  format = "setuptools";
-
-  src = fetchFromGitHub {
-    owner = "ipython-contrib";
-    repo = "jupyter_contrib_nbextensions";
-    rev = "refs/tags/${version}";
-    hash = "sha256-1o8tBfRw6jNcKfNE7xXrQaEhx+KOv7mLOruvuMDtJ1Q=";
-  };
-
-  propagatedBuildInputs = [
-    ipython-genutils
-    jupyter-contrib-core
-    jupyter-highlight-selected-word
-    jupyter-nbextensions-configurator
-    lxml
-  ];
-
-  nativeCheckInputs = [
-    nose
-    pytestCheckHook
-  ];
-
-  disabledTestPaths = [
-    # Thoses tests fail upstream because of nbconvert being too recent
-    # https://github.com/ipython-contrib/jupyter_contrib_nbextensions/issues/1606
-    "tests/test_exporters.py"
-
-    # Requires to run jupyter which is not feasible here
-    "tests/test_application.py"
-  ];
-
-  pythonImportsCheck = [ "jupyter_contrib_nbextensions" ];
-
-  meta = with lib; {
-    description = "A collection of various notebook extensions for Jupyter";
-    homepage = "https://github.com/ipython-contrib/jupyter_contrib_nbextensions";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ GaetanLepage ];
-    # https://github.com/ipython-contrib/jupyter_contrib_nbextensions/issues/1647
-    broken = versionAtLeast notebook.version "7";
-  };
-}
diff --git a/pkgs/development/python-modules/jupyter-core/default.nix b/pkgs/development/python-modules/jupyter-core/default.nix
index 799e098920a8e..22453d078491f 100644
--- a/pkgs/development/python-modules/jupyter-core/default.nix
+++ b/pkgs/development/python-modules/jupyter-core/default.nix
@@ -1,12 +1,16 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, hatchling
-, platformdirs
-, traitlets
-, pip
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  hatchling,
+  platformdirs,
+  traitlets,
+  pip,
+  pytestCheckHook,
+
+  # Reverse dependency
+  sage,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +27,9 @@ buildPythonPackage rec {
     hash = "sha256-qu25ryZreRPHoubFJTFusGdkTPHbl/yl94g+XU5A5Mc=";
   };
 
-  patches = [
-    ./tests_respect_pythonpath.patch
-  ];
+  patches = [ ./tests_respect_pythonpath.patch ];
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     platformdirs
@@ -61,6 +61,10 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "jupyter_core" ];
 
+  passthru.tests = {
+    inherit sage;
+  };
+
   meta = with lib; {
     description = "Base package on which Jupyter projects rely";
     homepage = "https://jupyter.org/";
diff --git a/pkgs/development/python-modules/jupyter-events/default.nix b/pkgs/development/python-modules/jupyter-events/default.nix
index 855034ca4b2a7..66de5a91ff5fd 100644
--- a/pkgs/development/python-modules/jupyter-events/default.nix
+++ b/pkgs/development/python-modules/jupyter-events/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build
-, hatchling
+  # build
+  hatchling,
 
-# runtime
-, jsonschema
-, python-json-logger
-, pyyaml
-, referencing
-, traitlets
+  # runtime
+  jsonschema,
+  python-json-logger,
+  pyyaml,
+  referencing,
+  traitlets,
 
-# optionals
-, click
-, rich
+  # optionals
+  click,
+  rich,
 
-# tests
-, pytest-asyncio
-, pytest-console-scripts
-, pytestCheckHook
+  # tests
+  pytest-asyncio,
+  pytest-console-scripts,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -37,9 +38,7 @@ buildPythonPackage rec {
     hash = "sha256-8aps8aNgXw+XbDgtCvWw+Ij1Cm1N0G+wcL35ySkofOk=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     jsonschema
@@ -47,8 +46,7 @@ buildPythonPackage rec {
     pyyaml
     referencing
     traitlets
-  ]
-  ++ jsonschema.optional-dependencies.format-nongpl;
+  ] ++ jsonschema.optional-dependencies.format-nongpl;
 
   passthru.optional-dependencies = {
     cli = [
@@ -67,9 +65,7 @@ buildPythonPackage rec {
     export PATH="$out/bin:$PATH"
   '';
 
-  pythonImportsCheck = [
-    "jupyter_events"
-  ];
+  pythonImportsCheck = [ "jupyter_events" ];
 
   meta = with lib; {
     changelog = "https://github.com/jupyter/jupyter_events/releases/tag/v${version}";
@@ -77,6 +73,6 @@ buildPythonPackage rec {
     mainProgram = "jupyter-events";
     homepage = "https://github.com/jupyter/jupyter_events";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jupyter-highlight-selected-word/default.nix b/pkgs/development/python-modules/jupyter-highlight-selected-word/default.nix
index 06d7247ed3489..c9d84b130fdd2 100644
--- a/pkgs/development/python-modules/jupyter-highlight-selected-word/default.nix
+++ b/pkgs/development/python-modules/jupyter-highlight-selected-word/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/jupyter-lsp/default.nix b/pkgs/development/python-modules/jupyter-lsp/default.nix
index 2f1342839db30..54ce115af8dfc 100644
--- a/pkgs/development/python-modules/jupyter-lsp/default.nix
+++ b/pkgs/development/python-modules/jupyter-lsp/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, jupyter-server
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  jupyter-server,
 }:
 
 buildPythonPackage rec {
@@ -15,13 +16,9 @@ buildPythonPackage rec {
     hash = "sha256-eTFHoFrURvgJ/VPvHNGan1JW/Qota3zpQ6mCy09UUAE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    jupyter-server
-  ];
+  propagatedBuildInputs = [ jupyter-server ];
   # tests require network
   doCheck = false;
   pythonImportsCheck = [ "jupyter_lsp" ];
@@ -31,7 +28,6 @@ buildPythonPackage rec {
     homepage = "https://jupyterlab-lsp.readthedocs.io/en/latest/";
     license = licenses.bsd3;
     platforms = platforms.all;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
-
diff --git a/pkgs/development/python-modules/jupyter-nbextensions-configurator/default.nix b/pkgs/development/python-modules/jupyter-nbextensions-configurator/default.nix
index bf3506e9572ab..a1e54450fbcbc 100644
--- a/pkgs/development/python-modules/jupyter-nbextensions-configurator/default.nix
+++ b/pkgs/development/python-modules/jupyter-nbextensions-configurator/default.nix
@@ -1,40 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, jupyter-contrib-core
-, jupyter-core
-, jupyter-server
-, notebook
-, pyyaml
-, tornado
-, nose
-, pytestCheckHook
-, selenium
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jupyter-contrib-core,
+  jupyter-core,
+  jupyter-server,
+  notebook,
+  pyyaml,
+  tornado,
+  pytestCheckHook,
+  selenium,
 }:
 
 buildPythonPackage rec {
   pname = "jupyter-nbextensions-configurator";
-  version = "0.6.3";
-  format = "setuptools";
+  version = "0.6.4";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "jupyter-contrib";
     repo = "jupyter_nbextensions_configurator";
     rev = "refs/tags/${version}";
-    hash = "sha256-ovKYHATRAC5a5qTMv32ohU2gJd15/fRKXa5HI0zGp/0=";
+    hash = "sha256-U4M6pGV/DdE+DOVMVaoBXOhfRERt+yUa+gADgqRRLn4=";
   };
 
-  patches = [
-    # https://github.com/Jupyter-contrib/jupyter_nbextensions_configurator/pull/166
-    (fetchpatch {
-      name = "notebook-v7-compat.patch";
-      url = "https://github.com/Jupyter-contrib/jupyter_nbextensions_configurator/commit/a600cef9222ca0c61a6912eb29d8fa0323409705.patch";
-      hash = "sha256-Rt9r5ZOgnhBcs18+ET5+k0/t980I2DiVN8oHkGLp0iw=";
-    })
-  ];
-
-  propagatedBuildInputs = [
+  dependencies = [
     jupyter-contrib-core
     jupyter-core
     jupyter-server
@@ -44,7 +34,6 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
-    nose
     pytestCheckHook
     selenium
   ];
@@ -58,11 +47,12 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "jupyter_nbextensions_configurator" ];
 
-  meta = with lib; {
-    description = "A jupyter notebook serverextension providing config interfaces for nbextensions";
+  meta = {
+    description = "Jupyter notebook serverextension providing config interfaces for nbextensions";
     mainProgram = "jupyter-nbextensions_configurator";
     homepage = "https://github.com/jupyter-contrib/jupyter_nbextensions_configurator";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ GaetanLepage ];
+    changelog = "https://github.com/Jupyter-contrib/jupyter_nbextensions_configurator/releases/tag/${version}";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/jupyter-packaging/default.nix b/pkgs/development/python-modules/jupyter-packaging/default.nix
index 38dd7927d1eb1..b4220824ae93a 100644
--- a/pkgs/development/python-modules/jupyter-packaging/default.nix
+++ b/pkgs/development/python-modules/jupyter-packaging/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, deprecation
-, hatchling
-, pythonOlder
-, packaging
-, pytestCheckHook
-, pytest-timeout
-, setuptools
-, tomlkit
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  deprecation,
+  hatchling,
+  pythonOlder,
+  packaging,
+  pytestCheckHook,
+  pytest-timeout,
+  setuptools,
+  tomlkit,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     deprecation
@@ -69,6 +68,5 @@ buildPythonPackage rec {
     description = "Jupyter Packaging Utilities";
     homepage = "https://github.com/jupyter/jupyter-packaging";
     license = licenses.bsd3;
-    maintainers = [ maintainers.elohmeier ];
   };
 }
diff --git a/pkgs/development/python-modules/jupyter-repo2docker/default.nix b/pkgs/development/python-modules/jupyter-repo2docker/default.nix
index c782bd78540c8..059de94c6982e 100644
--- a/pkgs/development/python-modules/jupyter-repo2docker/default.nix
+++ b/pkgs/development/python-modules/jupyter-repo2docker/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, buildPythonPackage
-, chardet
-, docker
-, entrypoints
-, escapism
-, fetchFromGitHub
-, iso8601
-, jinja2
-, pkgs-docker
-, python-json-logger
-, pythonOlder
-, requests
-, ruamel-yaml
-, semver
-, setuptools
-, toml
-, traitlets
+{
+  lib,
+  buildPythonPackage,
+  chardet,
+  docker,
+  entrypoints,
+  escapism,
+  fetchFromGitHub,
+  iso8601,
+  jinja2,
+  pkgs-docker,
+  python-json-logger,
+  pythonOlder,
+  requests,
+  ruamel-yaml,
+  semver,
+  setuptools,
+  toml,
+  traitlets,
 }:
 
 buildPythonPackage rec {
   pname = "jupyter-repo2docker";
-  version = "2024.03.0";
+  version = "2024.07.0";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -29,12 +30,10 @@ buildPythonPackage rec {
     owner = "jupyterhub";
     repo = "repo2docker";
     rev = "refs/tags/${version}";
-    hash = "sha256-D8sgeyfQjEkBYck/CikAVNZzUSl1R9uXSv75DTXT5U0=";
+    hash = "sha256-ZzZBuJBPDG4to1fSYn2xysupXbPS9Q6wqWr3Iq/Vds8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     chardet
@@ -67,6 +66,6 @@ buildPythonPackage rec {
     homepage = "https://repo2docker.readthedocs.io/";
     changelog = "https://github.com/jupyterhub/repo2docker/blob/${src.rev}/docs/source/changelog.md";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jupyter-server-fileid/default.nix b/pkgs/development/python-modules/jupyter-server-fileid/default.nix
index 9fea67c3faa2c..01355ab24c232 100644
--- a/pkgs/development/python-modules/jupyter-server-fileid/default.nix
+++ b/pkgs/development/python-modules/jupyter-server-fileid/default.nix
@@ -1,38 +1,41 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, hatchling
-, jupyter-events
-, jupyter-server
-, pytest-jupyter
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  hatchling,
+  jupyter-events,
+  jupyter-server,
+  click,
+  pytest-jupyter,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "jupyter-server-fileid";
-  version = "0.9.2";
+  version = "0.9.3";
+  pyproject = true;
 
   disables = pythonOlder "3.7";
 
-  format = "pyproject";
-
   src = fetchFromGitHub {
     owner = "jupyter-server";
     repo = "jupyter_server_fileid";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ApCDBVjJqpkC5FGEjU/LxwWBunTkL6i5Ki85M6MMLE0=";
+    hash = "sha256-ob7hnqU7GdaDHEPF7+gwkmsboKZgiiLzzwxbBUwYHYo=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     jupyter-events
     jupyter-server
   ];
 
+  optional-dependencies = {
+    cli = [ click ];
+  };
+
   pythonImportsCheck = [ "jupyter_server_fileid" ];
 
   checkInputs = [
@@ -48,7 +51,7 @@ buildPythonPackage rec {
 
   meta = {
     changelog = "https://github.com/jupyter-server/jupyter_server_fileid/blob/${src.rev}/CHANGELOG.md";
-    description = "An extension that maintains file IDs for documents in a running Jupyter Server";
+    description = "Extension that maintains file IDs for documents in a running Jupyter Server";
     mainProgram = "jupyter-fileid";
     homepage = "https://github.com/jupyter-server/jupyter_server_fileid";
     license = lib.licenses.bsd3;
diff --git a/pkgs/development/python-modules/jupyter-server-mathjax/default.nix b/pkgs/development/python-modules/jupyter-server-mathjax/default.nix
index 1f6c3b3547694..a3937b5d8bdb1 100644
--- a/pkgs/development/python-modules/jupyter-server-mathjax/default.nix
+++ b/pkgs/development/python-modules/jupyter-server-mathjax/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jupyter-packaging
-, setuptools
-, jupyter-server
-, pytest-jupyter
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jupyter-packaging,
+  setuptools,
+  jupyter-server,
+  pytest-jupyter,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  propagatedBuildInputs = [
-    jupyter-server
-  ];
+  propagatedBuildInputs = [ jupyter-server ];
 
   nativeCheckInputs = [
     pytest-jupyter
@@ -41,6 +40,6 @@ buildPythonPackage rec {
     description = "MathJax resources as a Jupyter Server Extension";
     homepage = "https://github.com/jupyter-server/jupyter_server_mathjax";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jupyter-server-terminals/default.nix b/pkgs/development/python-modules/jupyter-server-terminals/default.nix
index 192d5c6f37112..1d216f7b88055 100644
--- a/pkgs/development/python-modules/jupyter-server-terminals/default.nix
+++ b/pkgs/development/python-modules/jupyter-server-terminals/default.nix
@@ -1,57 +1,58 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build
-, hatchling
+  # build
+  hatchling,
 
-# runtime
-, terminado
+  # runtime
+  terminado,
 
-# tests
-, pytest-jupyter
-, pytest-timeout
-, pytestCheckHook
+  # tests
+  pytest-jupyter,
+  pytest-timeout,
+  pytestCheckHook,
 }:
 
-let self = buildPythonPackage rec {
-  pname = "jupyter-server-terminals";
-  version = "0.5.3";
-  pyproject = true;
-
-  src = fetchFromGitHub {
-    owner = "jupyter-server";
-    repo = "jupyter_server_terminals";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-af7jBscGkbekXgfDxwAfrJSY1uEuIGfzzSsjaPdlYcY=";
-  };
-
-  nativeBuildInputs = [
-    hatchling
-  ];
-
-  propagatedBuildInputs = [
-    terminado
-  ];
-
-  doCheck = false; # infinite recursion
-
-  nativeCheckInputs = [
-    pytest-jupyter
-    pytest-timeout
-    pytestCheckHook
-  ] ++ pytest-jupyter.optional-dependencies.server;
-
-  passthru.tests = {
-    check = self.overridePythonAttrs (_: { doCheck = true; });
-  };
-
-  meta = with lib; {
-    changelog = "https://github.com/jupyter-server/jupyter_server_terminals/releases/tag/v${version}";
-    description = "A Jupyter Server Extension Providing Support for Terminals";
-    homepage = "https://github.com/jupyter-server/jupyter_server_terminals";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+let
+  self = buildPythonPackage rec {
+    pname = "jupyter-server-terminals";
+    version = "0.5.3";
+    pyproject = true;
+
+    src = fetchFromGitHub {
+      owner = "jupyter-server";
+      repo = "jupyter_server_terminals";
+      rev = "refs/tags/v${version}";
+      hash = "sha256-af7jBscGkbekXgfDxwAfrJSY1uEuIGfzzSsjaPdlYcY=";
+    };
+
+    nativeBuildInputs = [ hatchling ];
+
+    propagatedBuildInputs = [ terminado ];
+
+    doCheck = false; # infinite recursion
+
+    nativeCheckInputs = [
+      pytest-jupyter
+      pytest-timeout
+      pytestCheckHook
+    ] ++ pytest-jupyter.optional-dependencies.server;
+
+    passthru.tests = {
+      check = self.overridePythonAttrs (_: {
+        doCheck = true;
+      });
+    };
+
+    meta = with lib; {
+      changelog = "https://github.com/jupyter-server/jupyter_server_terminals/releases/tag/v${version}";
+      description = "Jupyter Server Extension Providing Support for Terminals";
+      homepage = "https://github.com/jupyter-server/jupyter_server_terminals";
+      license = licenses.bsd3;
+      maintainers = [ ];
+    };
   };
-};
-in self
+in
+self
diff --git a/pkgs/development/python-modules/jupyter-server/default.nix b/pkgs/development/python-modules/jupyter-server/default.nix
index f0086e09c6614..071b3707225ba 100644
--- a/pkgs/development/python-modules/jupyter-server/default.nix
+++ b/pkgs/development/python-modules/jupyter-server/default.nix
@@ -1,47 +1,48 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, hatch-jupyter-builder
-, hatchling
-, pytestCheckHook
-, pytest-console-scripts
-, pytest-jupyter
-, pytest-timeout
-, argon2-cffi
-, jinja2
-, tornado
-, pyzmq
-, ipykernel
-, traitlets
-, jupyter-core
-, jupyter-client
-, jupyter-events
-, jupyter-server-terminals
-, nbformat
-, nbconvert
-, packaging
-, send2trash
-, terminado
-, prometheus-client
-, anyio
-, websocket-client
-, overrides
-, requests
-, flaky
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  hatch-jupyter-builder,
+  hatchling,
+  pytestCheckHook,
+  pytest-console-scripts,
+  pytest-jupyter,
+  pytest-timeout,
+  argon2-cffi,
+  jinja2,
+  tornado,
+  pyzmq,
+  ipykernel,
+  traitlets,
+  jupyter-core,
+  jupyter-client,
+  jupyter-events,
+  jupyter-server-terminals,
+  nbformat,
+  nbconvert,
+  packaging,
+  send2trash,
+  terminado,
+  prometheus-client,
+  anyio,
+  websocket-client,
+  overrides,
+  requests,
+  flaky,
 }:
 
 buildPythonPackage rec {
   pname = "jupyter-server";
-  version = "2.14.0";
+  version = "2.14.2";
   pyproject = true;
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     pname = "jupyter_server";
     inherit version;
-    hash = "sha256-ZZFUzqUSCDQ0/XyTt/4Il696L9C53UdJKCtC6qxK5nc=";
+    hash = "sha256-ZglQIaqWOM7SdsJIsdgYYuTFDyktV1kgu+lg3hxWsSs=";
   };
 
   nativeBuildInputs = [
@@ -71,7 +72,7 @@ buildPythonPackage rec {
   ];
 
   # https://github.com/NixOS/nixpkgs/issues/299427
-  stripExclude = lib.optionals stdenv.isDarwin [ "favicon.ico" ];
+  stripExclude = lib.optionals stdenv.hostPlatform.isDarwin [ "favicon.ico" ];
 
   nativeCheckInputs = [
     ipykernel
@@ -84,7 +85,8 @@ buildPythonPackage rec {
   ];
 
   pytestFlagsArray = [
-    "-W" "ignore::DeprecationWarning"
+    "-W"
+    "ignore::DeprecationWarning"
   ];
 
   preCheck = ''
@@ -92,21 +94,24 @@ buildPythonPackage rec {
     export PATH=$out/bin:$PATH
   '';
 
-  disabledTests = [
-    "test_cull_idle"
-    "test_server_extension_list"
-    "test_subscribe_websocket"
-    # test is presumable broken in sandbox
-    "test_authorized_requests"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # attempts to use trashcan, build env doesn't allow this
-    "test_delete"
-    # Insufficient access privileges for operation
-    "test_regression_is_hidden"
-  ] ++ lib.optionals stdenv.isLinux [
-    # Failed: DID NOT RAISE <class 'tornado.web.HTTPError'>
-    "test_copy_big_dir"
-  ];
+  disabledTests =
+    [
+      "test_cull_idle"
+      "test_server_extension_list"
+      "test_subscribe_websocket"
+      # test is presumable broken in sandbox
+      "test_authorized_requests"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # attempts to use trashcan, build env doesn't allow this
+      "test_delete"
+      # Insufficient access privileges for operation
+      "test_regression_is_hidden"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isLinux [
+      # Failed: DID NOT RAISE <class 'tornado.web.HTTPError'>
+      "test_copy_big_dir"
+    ];
 
   disabledTestPaths = [
     "tests/services/kernels/test_api.py"
@@ -120,7 +125,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     changelog = "https://github.com/jupyter-server/jupyter_server/blob/v${version}/CHANGELOG.md";
-    description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications";
+    description = "Backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications";
     mainProgram = "jupyter-server";
     homepage = "https://github.com/jupyter-server/jupyter_server";
     license = licenses.bsdOriginal;
diff --git a/pkgs/development/python-modules/jupyter-sphinx/default.nix b/pkgs/development/python-modules/jupyter-sphinx/default.nix
index 9fb30b5e143ee..cc5769b7c759c 100644
--- a/pkgs/development/python-modules/jupyter-sphinx/default.nix
+++ b/pkgs/development/python-modules/jupyter-sphinx/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, ipykernel
-, ipython
-, ipywidgets
-, nbconvert
-, nbformat
-, pythonOlder
-, sphinx
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  ipykernel,
+  ipython,
+  ipywidgets,
+  nbconvert,
+  nbformat,
+  pythonOlder,
+  sphinx,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-o/i3WravKZPf7uw2H4SVYfAyaZGf19ZJlkmeHCWcGtE=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     ipykernel
@@ -39,15 +38,11 @@ buildPythonPackage rec {
     sphinx
   ];
 
-  pythonImportsCheck = [
-    "jupyter_sphinx"
-  ];
+  pythonImportsCheck = [ "jupyter_sphinx" ];
 
   env.JUPYTER_PLATFORM_DIRS = 1;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export HOME=$TMPDIR
@@ -58,7 +53,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Jupyter Sphinx Extensions";
     homepage = "https://github.com/jupyter/jupyter-sphinx/";
-    changelog = "https://github.com/jupyter/jupyter-sphinx/releases/tag/${src.rev}";
+    changelog = "https://github.com/jupyter/jupyter-sphinx/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = licenses.bsd3;
   };
 }
diff --git a/pkgs/development/python-modules/jupyter-telemetry/default.nix b/pkgs/development/python-modules/jupyter-telemetry/default.nix
index f7efc0a1598c4..c6c73084b12a3 100644
--- a/pkgs/development/python-modules/jupyter-telemetry/default.nix
+++ b/pkgs/development/python-modules/jupyter-telemetry/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, python-json-logger
-, jsonschema
-, ruamel-yaml
-, traitlets
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  python-json-logger,
+  jsonschema,
+  ruamel-yaml,
+  traitlets,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,10 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [
-    python-json-logger jsonschema ruamel-yaml traitlets
+    python-json-logger
+    jsonschema
+    ruamel-yaml
+    traitlets
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/jupyter-ui-poll/default.nix b/pkgs/development/python-modules/jupyter-ui-poll/default.nix
index 2b6a62f886f03..4a3c69c553046 100644
--- a/pkgs/development/python-modules/jupyter-ui-poll/default.nix
+++ b/pkgs/development/python-modules/jupyter-ui-poll/default.nix
@@ -1,38 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, ipython
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  ipython,
 }:
 
 buildPythonPackage rec {
   pname = "jupyter-ui-poll";
-  version = "0.2.2";
-  format = "pyproject";
+  version = "1.0.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "Kirill888";
     repo = "jupyter-ui-poll";
     rev = "refs/tags/v${version}";
-    hash = "sha256-DWZFvzx0aNTmf1x8Rq19OT0PFRxdpKefWYFh8C116Fw";
+    hash = "sha256-mlgLd6uFDSxRBj4+Eidea2CE7FuG6NzJLWGec4KPd9k=";
   };
 
-  nativeBuildInputs = [ setuptools ];
-  propagatedBuildInputs = [
-    ipython
-  ];
+  build-system = [ setuptools ];
 
-  doCheck = false;  # no tests in package :(
+  dependencies = [ ipython ];
+
+  doCheck = false; # no tests in package :(
   pythonImportsCheck = [ "jupyter_ui_poll" ];
 
-  meta = with lib; {
+  meta = {
     description = "Block jupyter cell execution while interacting with widgets";
     homepage = "https://github.com/Kirill888/jupyter-ui-poll";
     changelog = "https://github.com/Kirill888/jupyter-ui-poll/releases/tag/v${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ bcdarwin ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ bcdarwin ];
   };
 }
diff --git a/pkgs/development/python-modules/jupyter-ydoc/default.nix b/pkgs/development/python-modules/jupyter-ydoc/default.nix
index bf0f718796c62..41ba6312e4058 100644
--- a/pkgs/development/python-modules/jupyter-ydoc/default.nix
+++ b/pkgs/development/python-modules/jupyter-ydoc/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, hatch-nodejs-version
-, hatchling
-, importlib-metadata
-, pycrdt
-, pytestCheckHook
-, websockets
-, ypy-websocket
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  hatch-nodejs-version,
+  hatchling,
+  importlib-metadata,
+  pycrdt,
+  pytestCheckHook,
+  websockets,
+  ypy-websocket,
 }:
 
 buildPythonPackage rec {
   pname = "jupyter-ydoc";
-  version = "2.0.1";
+  version = "2.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -21,7 +22,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "jupyter_ydoc";
     inherit version;
-    hash = "sha256-cW3ajLiviB/sL7yIrqP7DTuyS764Cpmor/LgHQidWw0=";
+    hash = "sha256-HcvxOGGzZ4AA1pr07zi0njoS+AgbqFHGgDk8Lhi8S4Q=";
   };
 
   nativeBuildInputs = [
@@ -29,11 +30,7 @@ buildPythonPackage rec {
     hatchling
   ];
 
-  propagatedBuildInputs = [
-    pycrdt
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ];
+  propagatedBuildInputs = [ pycrdt ] ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
   pythonImportsCheck = [ "jupyter_ydoc" ];
 
diff --git a/pkgs/development/python-modules/jupyter/default.nix b/pkgs/development/python-modules/jupyter/default.nix
index 51108eaa7a8f4..a3c9be6510592 100644
--- a/pkgs/development/python-modules/jupyter/default.nix
+++ b/pkgs/development/python-modules/jupyter/default.nix
@@ -1,35 +1,46 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, notebook
-, qtconsole
-, jupyter-console
-, nbconvert
-, ipykernel
-, ipywidgets
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  ipykernel,
+  ipywidgets,
+  jupyter-console,
+  jupyterlab,
+  nbconvert,
+  notebook,
 }:
 
 buildPythonPackage rec {
-  version = "1.0.0";
-  format = "setuptools";
   pname = "jupyter";
+  version = "1.1.1";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f";
+    hash = "sha256-1VRnvOq96knX42JK9+M9WcN//1PtOjUOGslXvtcx3no=";
   };
 
-  propagatedBuildInputs = [ notebook qtconsole jupyter-console nbconvert ipykernel ipywidgets ];
+  build-system = [ setuptools ];
+
+  dependencies = [
+    ipykernel
+    ipywidgets
+    jupyter-console
+    jupyterlab
+    nbconvert
+    notebook
+  ];
 
   # Meta-package, no tests
   doCheck = false;
 
+  dontUsePythonImportsCheck = true;
+
   meta = with lib; {
     description = "Installs all the Jupyter components in one go";
     homepage = "https://jupyter.org/";
     license = licenses.bsd3;
-    platforms = platforms.all;
     priority = 100; # This is a metapackage which is unimportant
   };
-
 }
diff --git a/pkgs/development/python-modules/jupyterhub-ldapauthenticator/default.nix b/pkgs/development/python-modules/jupyterhub-ldapauthenticator/default.nix
index 0c61557c26b63..c4da40729c0f6 100644
--- a/pkgs/development/python-modules/jupyterhub-ldapauthenticator/default.nix
+++ b/pkgs/development/python-modules/jupyterhub-ldapauthenticator/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, jupyterhub
-, ldap3
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  jupyterhub,
+  ldap3,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -18,11 +19,14 @@ buildPythonPackage rec {
   # No tests implemented
   doCheck = false;
 
-  propagatedBuildInputs = [ jupyterhub ldap3 ];
+  propagatedBuildInputs = [
+    jupyterhub
+    ldap3
+  ];
 
   meta = with lib; {
     description = "Simple LDAP Authenticator Plugin for JupyterHub";
-    homepage =  "https://github.com/jupyterhub/ldapauthenticator";
+    homepage = "https://github.com/jupyterhub/ldapauthenticator";
     license = licenses.bsd3;
   };
 }
diff --git a/pkgs/development/python-modules/jupyterhub-systemdspawner/default.nix b/pkgs/development/python-modules/jupyterhub-systemdspawner/default.nix
index 1f45886c84e53..c40866fd3d822 100644
--- a/pkgs/development/python-modules/jupyterhub-systemdspawner/default.nix
+++ b/pkgs/development/python-modules/jupyterhub-systemdspawner/default.nix
@@ -1,16 +1,18 @@
-{ lib
-, bash
-, buildPythonPackage
-, fetchFromGitHub
-, jupyterhub
-, pythonOlder
-, tornado
+{
+  lib,
+  bash,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jupyterhub,
+  pythonOlder,
+  setuptools,
+  tornado,
 }:
 
 buildPythonPackage rec {
   pname = "jupyterhub-systemdspawner";
   version = "1.0.1";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -22,18 +24,13 @@ buildPythonPackage rec {
   };
 
   postPatch = ''
-    substituteInPlace systemdspawner/systemd.py \
-      --replace "/bin/bash" "${bash}/bin/bash"
-
     substituteInPlace systemdspawner/systemdspawner.py \
-      --replace "/bin/bash" "${bash}/bin/bash"
+      --replace-fail "/bin/bash" "${bash}/bin/bash"
   '';
 
-  buildInputs = [
-    bash
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     jupyterhub
     tornado
   ];
@@ -47,9 +44,7 @@ buildPythonPackage rec {
     patchShebangs $out/bin
   '';
 
-  pythonImportsCheck = [
-    "systemdspawner"
-  ];
+  pythonImportsCheck = [ "systemdspawner" ];
 
   meta = with lib; {
     description = "JupyterHub Spawner using systemd for resource isolation";
@@ -57,6 +52,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/jupyterhub/systemdspawner";
     changelog = "https://github.com/jupyterhub/systemdspawner/blob/v${version}/CHANGELOG.md";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jupyterhub-tmpauthenticator/default.nix b/pkgs/development/python-modules/jupyterhub-tmpauthenticator/default.nix
index 0c18569c4b5c5..02c366d34c603 100644
--- a/pkgs/development/python-modules/jupyterhub-tmpauthenticator/default.nix
+++ b/pkgs/development/python-modules/jupyterhub-tmpauthenticator/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, jupyterhub
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  jupyterhub,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-7TuAYP6mRffsZL+O+AMgt5HBu6PhwLYj5A8X8DnMfl0=";
   };
 
-  propagatedBuildInputs = [
-    jupyterhub
-  ];
+  propagatedBuildInputs = [ jupyterhub ];
 
   # No tests available in the package
   doCheck = false;
 
-  pythonImportsCheck = [
-    "tmpauthenticator"
-  ];
+  pythonImportsCheck = [ "tmpauthenticator" ];
 
   meta = with lib; {
     description = "Simple Jupyterhub authenticator that allows anyone to log in";
diff --git a/pkgs/development/python-modules/jupyterhub/default.nix b/pkgs/development/python-modules/jupyterhub/default.nix
index 2aa83c6f85af6..76fbe01ae3d17 100644
--- a/pkgs/development/python-modules/jupyterhub/default.nix
+++ b/pkgs/development/python-modules/jupyterhub/default.nix
@@ -1,170 +1,134 @@
-{ lib
-, stdenv
-, alembic
-, async-generator
-, beautifulsoup4
-, buildPythonPackage
-, certipy
-, configurable-http-proxy
-, cryptography
-, entrypoints
-, fetchPypi
-, fetchzip
-, importlib-metadata
-, jinja2
-, jsonschema
-, jupyter-telemetry
-, jupyterlab
-, jupyter-core
-, jupyter-server
-, mock
-, nbclassic
-, nodePackages
-, notebook
-, oauthlib
-, packaging
-, pamela
-, playwright
-, prometheus-client
-, pytest-asyncio
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, requests
-, requests-mock
-, selenium
-, sqlalchemy
-, tornado
-, traitlets
-, virtualenv
+{
+  lib,
+  stdenv,
+  alembic,
+  async-generator,
+  beautifulsoup4,
+  buildPythonPackage,
+  certipy,
+  configurable-http-proxy,
+  cryptography,
+  fetchFromGitHub,
+  fetchNpmDeps,
+  idna,
+  importlib-metadata,
+  jinja2,
+  jsonschema,
+  jupyter-events,
+  jupyterlab,
+  mock,
+  nbclassic,
+  nodejs,
+  npmHooks,
+  oauthlib,
+  packaging,
+  pamela,
+  playwright,
+  prometheus-client,
+  pydantic,
+  pytest-asyncio,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  requests,
+  requests-mock,
+  setuptools,
+  setuptools-scm,
+  sqlalchemy,
+  tornado,
+  traitlets,
+  virtualenv,
 }:
 
-let
-  # js/css assets that setup.py tries to fetch via `npm install` when building
-  # from source. https://github.com/jupyterhub/jupyterhub/blob/master/package.json
-  bootstrap =
-    fetchzip {
-      url = "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz";
-      sha256 = "1ywmxqdccg0mgx0xknrn1hlrfnhcwphc12y9l91zizx26fqfmzgc";
-    };
-  font-awesome =
-    fetchzip {
-      url = "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz";
-      sha256 = "1xnxbdlfdd60z5ix152m8r2kk9dkwlqwpypky1mm3dv64ajnzdbk";
-    };
-  jquery =
-    fetchzip {
-      url = "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz";
-      sha256 = "0yi9ql493din1qa1s923nd5zvd0klk1sx00xj1wx2yambmq86vm9";
-    };
-  moment =
-    fetchzip {
-      url = "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz";
-      sha256 = "0ifzzla4zffw23g3xvhwx3fj3jny6cjzxfzl1x0317q8wa0c7w5i";
-    };
-  requirejs =
-    fetchzip {
-      url = "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz";
-      sha256 = "165hkli3qcd59cjqvli9r5f92i0h7czkmhcg1cgwamw2d0b7xibz";
-    };
-
-in
-
 buildPythonPackage rec {
   pname = "jupyterhub";
-  version = "4.1.5";
-  format = "setuptools";
+  version = "5.1.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-Y7ofxxhDbBUZRqWKO0A+xP6LP2JPsZW8HY5ww5sz4ZQ=";
+  src = fetchFromGitHub {
+    owner = "jupyterhub";
+    repo = "jupyterhub";
+    rev = "refs/tags/${version}";
+    hash = "sha256-3L83FLhLCdTgOuFRgRMbz316cYbai0Z+hJwxXUCYB2Y=";
   };
 
-  # Most of this only applies when building from source (e.g. js/css assets are
-  # pre-built and bundled in the official release tarball on pypi).
-  #
-  # Stuff that's always needed:
-  #   * At runtime, we need configurable-http-proxy, so we substitute the store
-  #     path.
-  #
-  # Other stuff that's only needed when building from source:
-  #   * js/css assets are fetched from npm.
-  #   * substitute store path for `lessc` commmand.
-  #   * set up NODE_PATH so `lessc` can find `less-plugin-clean-css`.
-  #   * don't run `npm install`.
-  preBuild = ''
-    export NODE_PATH=${nodePackages.less-plugin-clean-css}/lib/node_modules
+  npmDeps = fetchNpmDeps {
+    inherit src;
+    hash = "sha256-b7j6iGYXrwco4YruqRPEEi4yWRF6otTUD2jKCEPcLTE=";
+  };
 
-    substituteInPlace jupyterhub/proxy.py --replace \
+  postPatch = ''
+    substituteInPlace jupyterhub/proxy.py --replace-fail \
       "'configurable-http-proxy'" \
       "'${configurable-http-proxy}/bin/configurable-http-proxy'"
 
-    substituteInPlace jupyterhub/tests/test_proxy.py --replace \
+    substituteInPlace jupyterhub/tests/test_proxy.py --replace-fail \
       "'configurable-http-proxy'" \
       "'${configurable-http-proxy}/bin/configurable-http-proxy'"
-
-    substituteInPlace setup.py --replace \
-      "'npm'" "'true'"
-
-    declare -A deps
-    deps[bootstrap]=${bootstrap}
-    deps[font-awesome]=${font-awesome}
-    deps[jquery]=${jquery}
-    deps[moment]=${moment}
-    deps[requirejs]=${requirejs}
-
-    mkdir -p share/jupyter/hub/static/components
-    for dep in "''${!deps[@]}"; do
-      if [ ! -e share/jupyter/hub/static/components/$dep ]; then
-        cp -r ''${deps[$dep]} share/jupyter/hub/static/components/$dep
-      fi
-    done
   '';
 
-  propagatedBuildInputs = [
-    alembic
-    async-generator
-    certipy
-    python-dateutil
-    entrypoints
-    jinja2
-    jupyter-telemetry
-    oauthlib
-    packaging
-    pamela
-    prometheus-client
-    requests
-    selenium
-    sqlalchemy
-    tornado
-    traitlets
-    jupyter-core
-    jupyter-server
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
+  nativeBuildInputs = [
+    nodejs
+    npmHooks.npmConfigHook
   ];
 
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies =
+    [
+      alembic
+      certipy
+      idna
+      jinja2
+      jupyter-events
+      oauthlib
+      packaging
+      pamela
+      prometheus-client
+      pydantic
+      python-dateutil
+      requests
+      sqlalchemy
+      tornado
+      traitlets
+    ]
+    ++ lib.optionals (pythonOlder "3.10") [
+      async-generator
+      importlib-metadata
+    ];
+
   nativeCheckInputs = [
     beautifulsoup4
     cryptography
-    notebook
     jsonschema
-    nbclassic
-    mock
     jupyterlab
+    mock
+    nbclassic
     playwright
-    pytest-asyncio
+    # require pytest-asyncio<0.23
+    # https://github.com/jupyterhub/jupyterhub/pull/4663
+    (pytest-asyncio.overrideAttrs (
+      final: prev: {
+        version = "0.21.2";
+        src = fetchFromGitHub {
+          inherit (prev.src) owner repo;
+          rev = "refs/tags/v${final.version}";
+          hash = "sha256-AVVvdo/CDF9IU6l779sLc7wKz5h3kzMttdDNTPLYxtQ=";
+        };
+      }
+    ))
     pytestCheckHook
     requests-mock
     virtualenv
   ];
 
   preCheck = ''
-    substituteInPlace jupyterhub/tests/test_spawner.py --replace \
-      "'jupyterhub-singleuser'" "'$out/bin/jupyterhub-singleuser'"
-    export PATH="$PATH:$out/bin";
+    export PATH=$out/bin:$PATH;
   '';
 
   disabledTests = [
@@ -202,11 +166,11 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Serves multiple Jupyter notebook instances";
-    homepage = "https://jupyter.org/";
+    homepage = "https://github.com/jupyterhub/jupyterhub";
     changelog = "https://github.com/jupyterhub/jupyterhub/blob/${version}/docs/source/reference/changelog.md";
     license = licenses.bsd3;
     maintainers = teams.jupyter.members;
     # darwin: E   OSError: dlopen(/nix/store/43zml0mlr17r5jsagxr00xxx91hz9lky-openpam-20170430/lib/libpam.so, 6): image not found
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/jupyterlab-execute-time/default.nix b/pkgs/development/python-modules/jupyterlab-execute-time/default.nix
new file mode 100644
index 0000000000000..3734c7d0bcd5d
--- /dev/null
+++ b/pkgs/development/python-modules/jupyterlab-execute-time/default.nix
@@ -0,0 +1,42 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jupyterlab,
+  jupyter-packaging,
+}:
+
+buildPythonPackage rec {
+  pname = "jupyterlab-execute-time";
+  version = "3.2.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    pname = "jupyterlab_execute_time";
+    inherit version;
+    hash = "sha256-mxO2XCwTm/q7P2/xcGxNM+1aViA6idApdggzThW8nAs=";
+  };
+
+  # jupyterlab is required to build from source but we use the pre-build package
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail '"jupyterlab~=4.0.0"' ""
+  '';
+
+  dependencies = [
+    jupyterlab
+    jupyter-packaging
+  ];
+
+  # has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "jupyterlab_execute_time" ];
+
+  meta = {
+    description = "JupyterLab extension for displaying cell timings";
+    homepage = "https://github.com/deshaw/jupyterlab-execute-time";
+    license = lib.licenses.bsd3;
+    maintainers = [ lib.maintainers.vglfr ];
+  };
+}
diff --git a/pkgs/development/python-modules/jupyterlab-git/default.nix b/pkgs/development/python-modules/jupyterlab-git/default.nix
index 512c799474578..c539c052d4b57 100644
--- a/pkgs/development/python-modules/jupyterlab-git/default.nix
+++ b/pkgs/development/python-modules/jupyterlab-git/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, git
-, jupyter-server
-, hatch-jupyter-builder
-, hatch-nodejs-version
-, hatchling
-, jupyterlab
-, nbdime
-, nbformat
-, pexpect
-, pytest-asyncio
-, pytest-jupyter
-, pytest-tornasync
-, pytestCheckHook
-, pythonOlder
-, traitlets
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  git,
+  jupyter-server,
+  hatch-jupyter-builder,
+  hatch-nodejs-version,
+  hatchling,
+  jupyterlab,
+  nbdime,
+  nbformat,
+  pexpect,
+  pytest-asyncio,
+  pytest-jupyter,
+  pytest-tornasync,
+  pytestCheckHook,
+  pythonOlder,
+  traitlets,
 }:
 
 buildPythonPackage rec {
   pname = "jupyterlab-git";
-  version = "0.50.0";
+  version = "0.50.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -28,7 +29,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "jupyterlab_git";
     inherit version;
-    hash = "sha256-CYWVRtOQE067kYqWXCw/4mBf6v4yfPYWFb592Qtb37s=";
+    hash = "sha256-v08Go/vCsquE6l1SMmqg4LjM9OmjNX+jGKEZVg4cak0=";
   };
 
   nativeBuildInputs = [
@@ -73,9 +74,7 @@ buildPythonPackage rec {
     "test_Git_get_nbdiff_dict"
   ];
 
-  pythonImportsCheck = [
-    "jupyterlab_git"
-  ];
+  pythonImportsCheck = [ "jupyterlab_git" ];
 
   __darwinAllowLocalNetworking = true;
 
diff --git a/pkgs/development/python-modules/jupyterlab-lsp/default.nix b/pkgs/development/python-modules/jupyterlab-lsp/default.nix
index deecae0b7ea51..4f39d7fdc536e 100644
--- a/pkgs/development/python-modules/jupyterlab-lsp/default.nix
+++ b/pkgs/development/python-modules/jupyterlab-lsp/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, jupyterlab
-, jupyter-lsp
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  jupyterlab,
+  jupyter-lsp,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-rqyECTrabSDvV64Ol4EcxXlqDKtyN7Mvjt35k8C7A1Y=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     jupyterlab
@@ -33,6 +32,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/jupyter-lsp/jupyterlab-lsp";
     license = licenses.bsd3;
     platforms = platforms.all;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jupyterlab-pygments/default.nix b/pkgs/development/python-modules/jupyterlab-pygments/default.nix
index 0d46258eb789f..204516e39d5a0 100644
--- a/pkgs/development/python-modules/jupyterlab-pygments/default.nix
+++ b/pkgs/development/python-modules/jupyterlab-pygments/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, hatch-jupyter-builder
-, hatch-nodejs-version
-, hatchling
-, pygments
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  hatch-jupyter-builder,
+  hatch-nodejs-version,
+  hatchling,
+  pygments,
 }:
 
 buildPythonPackage rec {
@@ -44,6 +45,6 @@ buildPythonPackage rec {
     description = "Jupyterlab syntax coloring theme for pygments";
     homepage = "https://github.com/jupyterlab/jupyterlab_pygments";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jupyterlab-server/default.nix b/pkgs/development/python-modules/jupyterlab-server/default.nix
index 059cb1c5ac52a..2461e5ea0de34 100644
--- a/pkgs/development/python-modules/jupyterlab-server/default.nix
+++ b/pkgs/development/python-modules/jupyterlab-server/default.nix
@@ -1,27 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, hatchling
-, babel
-, importlib-metadata
-, jinja2
-, json5
-, jsonschema
-, jupyter-server
-, packaging
-, requests
-, openapi-core
-, pytest-jupyter
-, pytestCheckHook
-, requests-mock
-, ruamel-yaml
-, strict-rfc3339
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  hatchling,
+  babel,
+  importlib-metadata,
+  jinja2,
+  json5,
+  jsonschema,
+  jupyter-server,
+  packaging,
+  requests,
+  openapi-core,
+  pytest-jupyter,
+  pytestCheckHook,
+  requests-mock,
+  ruamel-yaml,
+  strict-rfc3339,
 }:
 
 buildPythonPackage rec {
   pname = "jupyterlab-server";
-  version = "2.27.1";
+  version = "2.27.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -29,18 +30,16 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "jupyterlab_server";
     inherit version;
-    hash = "sha256-CXtaxwm2dscoSsnF43PxGTClYfUs1ahuT8flqcioYx0=";
+    hash = "sha256-6zbKylnnRHGYjwriXHeUVhC4h/d3JVqiH4Bl3vnlHtQ=";
   };
 
   postPatch = ''
     sed -i "/timeout/d" pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     babel
     jinja2
     json5
@@ -48,11 +47,9 @@ buildPythonPackage rec {
     jupyter-server
     packaging
     requests
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     openapi = [
       openapi-core
       ruamel-yaml
@@ -64,14 +61,15 @@ buildPythonPackage rec {
     pytestCheckHook
     requests-mock
     strict-rfc3339
-  ] ++ passthru.optional-dependencies.openapi;
+  ] ++ optional-dependencies.openapi;
 
   preCheck = ''
     export HOME=$(mktemp -d)
   '';
 
   pytestFlagsArray = [
-    "-W" "ignore::DeprecationWarning"
+    "-W"
+    "ignore::DeprecationWarning"
   ];
 
   disabledTestPaths = [
@@ -87,7 +85,7 @@ buildPythonPackage rec {
   __darwinAllowLocalNetworking = true;
 
   meta = with lib; {
-    description = "A set of server components for JupyterLab and JupyterLab like applications";
+    description = "Set of server components for JupyterLab and JupyterLab like applications";
     homepage = "https://github.com/jupyterlab/jupyterlab_server";
     changelog = "https://github.com/jupyterlab/jupyterlab_server/blob/v${version}/CHANGELOG.md";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/jupyterlab-widgets/default.nix b/pkgs/development/python-modules/jupyterlab-widgets/default.nix
index 85ec4d6d48f90..bf8b0a0141aef 100644
--- a/pkgs/development/python-modules/jupyterlab-widgets/default.nix
+++ b/pkgs/development/python-modules/jupyterlab-widgets/default.nix
@@ -1,16 +1,19 @@
-{ lib, buildPythonPackage, fetchPypi
-, jupyter-packaging
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jupyter-packaging,
 }:
 
 buildPythonPackage rec {
   pname = "jupyterlab-widgets";
-  version = "3.0.10";
+  version = "3.0.13";
   pyproject = true;
 
   src = fetchPypi {
     pname = "jupyterlab_widgets";
     inherit version;
-    hash = "sha256-BPKsBJdnJ+T50PqRzcLxq4YPll5QTCnb1qZciCydBMA=";
+    hash = "sha256-opZtOFMowZQraDqM2WuJuN2CyLj4HdqQK7K8BtRvW+0=";
   };
 
   # jupyterlab is required to build from source but we use the pre-build package
@@ -19,9 +22,7 @@ buildPythonPackage rec {
       --replace '"jupyterlab~=4.0"' ""
   '';
 
-  nativeBuildInputs = [
-    jupyter-packaging
-  ];
+  nativeBuildInputs = [ jupyter-packaging ];
 
   # has no tests
   doCheck = false;
@@ -32,6 +33,6 @@ buildPythonPackage rec {
     description = "Jupyter Widgets JupyterLab Extension";
     homepage = "https://github.com/jupyter-widgets/ipywidgets";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jupyterlab/default.nix b/pkgs/development/python-modules/jupyterlab/default.nix
index 7b9a17d91e2ca..8105bf1ebc6fd 100644
--- a/pkgs/development/python-modules/jupyterlab/default.nix
+++ b/pkgs/development/python-modules/jupyterlab/default.nix
@@ -1,41 +1,42 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatch-jupyter-builder
-, hatchling
-, async-lru
-, httpx
-, packaging
-, tornado
-, ipykernel
-, jupyter-core
-, jupyter-lsp
-, jupyterlab-server
-, jupyter-server
-, notebook-shim
-, jinja2
-, tomli
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatch-jupyter-builder,
+  hatchling,
+  async-lru,
+  httpx,
+  packaging,
+  tornado,
+  ipykernel,
+  jupyter-core,
+  jupyter-lsp,
+  jupyterlab-server,
+  jupyter-server,
+  notebook-shim,
+  jinja2,
+  tomli,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "jupyterlab";
-  version = "4.1.8";
+  version = "4.2.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-M4St7YaA585QT9Y7i7iaOd8hycdpTZ59xKaHQs2zD5s=";
+    hash = "sha256-rn86G4y4i09VAJznn6fAb5nXDNY2Ae5KqRgV0FT0b3U=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-jupyter-builder
     hatchling
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     async-lru
     httpx
     packaging
@@ -47,9 +48,7 @@ buildPythonPackage rec {
     jupyter-server
     notebook-shim
     jinja2
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   makeWrapperArgs = [
     "--set"
@@ -60,9 +59,7 @@ buildPythonPackage rec {
   # Depends on npm
   doCheck = false;
 
-  pythonImportsCheck = [
-    "jupyterlab"
-  ];
+  pythonImportsCheck = [ "jupyterlab" ];
 
   meta = with lib; {
     changelog = "https://github.com/jupyterlab/jupyterlab/blob/v${version}/CHANGELOG.md";
diff --git a/pkgs/development/python-modules/jupytext/default.nix b/pkgs/development/python-modules/jupytext/default.nix
index 699cb58e6c387..df0fc676633f3 100644
--- a/pkgs/development/python-modules/jupytext/default.nix
+++ b/pkgs/development/python-modules/jupytext/default.nix
@@ -1,47 +1,47 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, hatch-jupyter-builder
-, hatchling
-, jupyter-client
-, markdown-it-py
-, mdit-py-plugins
-, nbformat
-, notebook
-, packaging
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, toml
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  hatch-jupyter-builder,
+  hatchling,
+  jupyter-client,
+  markdown-it-py,
+  mdit-py-plugins,
+  nbformat,
+  notebook,
+  packaging,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  tomli,
 }:
 
 buildPythonPackage rec {
   pname = "jupytext";
-  version = "1.16.1";
+  version = "1.16.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-aMe2hoXocOgOYP2oKG+9Ymnpx03B30MW32/kbqvJTJk=";
+    hash = "sha256-KOM/RvLOekH7nWd6SiyVMnKFV5tkyhBEN8S56x5BdOk=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-jupyter-builder
     hatchling
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     markdown-it-py
     mdit-py-plugins
     nbformat
     packaging
     pyyaml
-    toml
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   nativeCheckInputs = [
     jupyter-client
@@ -56,11 +56,9 @@ buildPythonPackage rec {
     export PATH=$out/bin:$PATH;
   '';
 
-  disabledTestPaths = [
-    "tests/external"
-  ];
+  disabledTestPaths = [ "tests/external" ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
     # requires access to trash
     "test_load_save_rename"
   ];
diff --git a/pkgs/development/python-modules/justbackoff/default.nix b/pkgs/development/python-modules/justbackoff/default.nix
index f07af6df2d2aa..e8c680a89d37f 100644
--- a/pkgs/development/python-modules/justbackoff/default.nix
+++ b/pkgs/development/python-modules/justbackoff/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,18 +20,14 @@ buildPythonPackage rec {
     sha256 = "097j6jxgl4b3z46x9y9z10643vnr9v831vhagrxzrq6nviil2z6l";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace setup.py \
       --replace "pytest-runner>=5.2" ""
   '';
 
-  pythonImportsCheck = [
-    "justbackoff"
-  ];
+  pythonImportsCheck = [ "justbackoff" ];
 
   meta = with lib; {
     description = "Simple backoff algorithm in Python";
diff --git a/pkgs/development/python-modules/justbases/default.nix b/pkgs/development/python-modules/justbases/default.nix
index 3b24726087be1..c3fc8dcd5ac0d 100644
--- a/pkgs/development/python-modules/justbases/default.nix
+++ b/pkgs/development/python-modules/justbases/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, unittestCheckHook
-, hypothesis
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  unittestCheckHook,
+  hypothesis,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/justbytes/default.nix b/pkgs/development/python-modules/justbytes/default.nix
index 834ced10ab4b9..db5c79de25dd9 100644
--- a/pkgs/development/python-modules/justbytes/default.nix
+++ b/pkgs/development/python-modules/justbytes/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, justbases
-, unittestCheckHook
-, hypothesis
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  justbases,
+  unittestCheckHook,
+  hypothesis,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,10 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [ justbases ];
-  nativeCheckInputs = [ unittestCheckHook hypothesis ];
+  nativeCheckInputs = [
+    unittestCheckHook
+    hypothesis
+  ];
 
   meta = with lib; {
     description = "computing with and displaying bytes";
diff --git a/pkgs/development/python-modules/justext/default.nix b/pkgs/development/python-modules/justext/default.nix
index 82f0aa8045654..299894cae2208 100644
--- a/pkgs/development/python-modules/justext/default.nix
+++ b/pkgs/development/python-modules/justext/default.nix
@@ -1,36 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, lxml
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pytest-cov-stub,
+  lxml,
+  lxml-html-clean,
 }:
 
 buildPythonPackage rec {
   pname = "justext";
-  version = "3.0.0";
+  version = "3.0.1";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "miso-belica";
     repo = "jusText";
     rev = "refs/tags/v${version}";
-    hash = "sha256-WNxDoM5666tEHS9pMl5dOoig4S7dSYaCLZq71tehWqw=";
+    hash = "sha256-9i7hzCK/ijh8xw9l2ZbVhVj5IBf0WD/49/R1tSWgqrQ=";
   };
 
   propagatedBuildInputs = [
     lxml
+    lxml-html-clean
   ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
   ];
 
-  # patch out coverage report
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace " --cov=justext --cov-report=term-missing --no-cov-on-fail" ""
-  '';
-
   pythonImportsCheck = [ "justext" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/justnimbus/default.nix b/pkgs/development/python-modules/justnimbus/default.nix
index 013e4670aa8f5..5bc543a929760 100644
--- a/pkgs/development/python-modules/justnimbus/default.nix
+++ b/pkgs/development/python-modules/justnimbus/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "justnimbus";
-  version = "0.7.3";
+  version = "0.7.4";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -17,23 +18,17 @@ buildPythonPackage rec {
     owner = "kvanzuijlen";
     repo = "justnimbus";
     rev = "refs/tags/${version}";
-    hash = "sha256-JO8T0JItkkNHxlnDKOO8kM9KSzT7QML4sszPymgXSBA=";
+    hash = "sha256-FsuvpmMWBYI1LheO3NFfCeaW4m3YQ41Tc81TP3gdNqo=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "justnimbus"
-  ];
+  pythonImportsCheck = [ "justnimbus" ];
 
   meta = with lib; {
     description = "Library for the JustNimbus API";
@@ -43,4 +38,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ fab ];
   };
 }
-
diff --git a/pkgs/development/python-modules/jwcrypto/default.nix b/pkgs/development/python-modules/jwcrypto/default.nix
index 2c00e2be9f8d3..80e4159a03b74 100644
--- a/pkgs/development/python-modules/jwcrypto/default.nix
+++ b/pkgs/development/python-modules/jwcrypto/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cryptography
-, deprecated
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cryptography,
+  deprecated,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-dxqHdioMCBrmFmlYqVT4CEiCCyqwZpN9yLg3nWWxsDk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     cryptography
@@ -33,15 +32,13 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "jwcrypto"
-  ];
+  pythonImportsCheck = [ "jwcrypto" ];
 
   meta = with lib; {
     description = "Implementation of JOSE Web standards";
     homepage = "https://github.com/latchset/jwcrypto";
     changelog = "https://github.com/latchset/jwcrypto/releases/tag/v${version}";
     license = licenses.lgpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jwt/default.nix b/pkgs/development/python-modules/jwt/default.nix
index 95c01cb64bc1c..fc058f7d7004b 100644
--- a/pkgs/development/python-modules/jwt/default.nix
+++ b/pkgs/development/python-modules/jwt/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, cryptography
-, freezegun
-, pytestCheckHook
-, pytest-cov
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  cryptography,
+  freezegun,
+  pytestCheckHook,
+  pytest-cov,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     substituteInPlace setup.cfg --replace "--flake8" ""
   '';
 
-  propagatedBuildInputs = [
-    cryptography
-  ];
+  propagatedBuildInputs = [ cryptography ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/jxlpy/default.nix b/pkgs/development/python-modules/jxlpy/default.nix
new file mode 100644
index 0000000000000..307e5211be4b2
--- /dev/null
+++ b/pkgs/development/python-modules/jxlpy/default.nix
@@ -0,0 +1,40 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  cython,
+  libjxl,
+}:
+
+buildPythonPackage rec {
+  pname = "jxlpy";
+  version = "0.9.5";
+
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-Kqdm8b3hgO0Q3zE68rSIM4Jd7upjG+SQywSseGwCFUI=";
+  };
+
+  build-system = [
+    setuptools
+    cython
+  ];
+
+  buildInputs = [ libjxl ];
+
+  # no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "jxlpy" ];
+
+  meta = {
+    description = "Cython bindings and Pillow plugin for JPEG XL";
+    homepage = "https://github.com/olokelo/jxlpy";
+    changelog = "https://github.com/olokelo/jxlpy/releases/tag/${version}";
+    license = lib.licenses.mit;
+    maintainers = [ lib.maintainers.huantian ];
+  };
+}
diff --git a/pkgs/development/python-modules/jxmlease/default.nix b/pkgs/development/python-modules/jxmlease/default.nix
index 640b06bf352ec..3364b86686e74 100644
--- a/pkgs/development/python-modules/jxmlease/default.nix
+++ b/pkgs/development/python-modules/jxmlease/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, lxml
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  lxml,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
     sha256 = "17l3w3ak07p72s8kv8hg0ilxs0kkxjn7bfwnl3g2cw58v1siab31";
   };
 
-  propagatedBuildInputs = [
-    lxml
-  ];
+  propagatedBuildInputs = [ lxml ];
 
   # tests broken in expat bump
   # https://github.com/Juniper/jxmlease/issues/26
@@ -31,6 +30,6 @@ buildPythonPackage rec {
     description = "Converts between XML and intelligent Python data structures";
     homepage = "https://github.com/Juniper/jxmlease";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/k-diffusion/default.nix b/pkgs/development/python-modules/k-diffusion/default.nix
index 8393bc6309f02..9b8aa8d17a02f 100644
--- a/pkgs/development/python-modules/k-diffusion/default.nix
+++ b/pkgs/development/python-modules/k-diffusion/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, accelerate
-, buildPythonPackage
-, clean-fid
-, clip-anytorch
-, dctorch
-, einops
-, fetchFromGitHub
-, jsonmerge
-, kornia
-, pillow
-, pythonOlder
-, rotary-embedding-torch
-, safetensors
-, scikit-image
-, scipy
-, torch
-, torchdiffeq
-, torchsde
-, torchvision
-, tqdm
-, wandb
+{
+  lib,
+  accelerate,
+  buildPythonPackage,
+  clean-fid,
+  clip-anytorch,
+  dctorch,
+  einops,
+  fetchFromGitHub,
+  jsonmerge,
+  kornia,
+  pillow,
+  pythonOlder,
+  rotary-embedding-torch,
+  safetensors,
+  scikit-image,
+  scipy,
+  torch,
+  torchdiffeq,
+  torchsde,
+  torchvision,
+  tqdm,
+  wandb,
 }:
 
 buildPythonPackage rec {
@@ -57,9 +58,7 @@ buildPythonPackage rec {
     wandb
   ];
 
-  pythonImportsCheck = [
-    "k_diffusion"
-  ];
+  pythonImportsCheck = [ "k_diffusion" ];
 
   # no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/k5test/default.nix b/pkgs/development/python-modules/k5test/default.nix
index dbab01e01a549..208f24c2b2bf9 100644
--- a/pkgs/development/python-modules/k5test/default.nix
+++ b/pkgs/development/python-modules/k5test/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, substituteAll
-, findutils
-, krb5
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  findutils,
+  krb5-c,
+  pythonOlder,
+  setuptools,
+  substituteAll,
 }:
 
 buildPythonPackage rec {
@@ -24,29 +24,25 @@ buildPythonPackage rec {
   patches = [
     (substituteAll {
       src = ./fix-paths.patch;
-      inherit findutils krb5;
+      inherit findutils;
+      krb5 = krb5-c;
       # krb5-config is in dev output
-      krb5Dev = krb5.dev;
+      krb5Dev = krb5-c.dev;
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # No tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "k5test"
-  ];
+  pythonImportsCheck = [ "k5test" ];
 
   meta = with lib; {
     description = "Library for setting up self-contained Kerberos 5 environment";
     homepage = "https://github.com/pythongssapi/k5test";
     changelog = "https://github.com/pythongssapi/k5test/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
-    broken = stdenv.isDarwin;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/k5test/fix-paths.patch b/pkgs/development/python-modules/k5test/fix-paths.patch
index 04103df36d538..feb24226dc2fc 100644
--- a/pkgs/development/python-modules/k5test/fix-paths.patch
+++ b/pkgs/development/python-modules/k5test/fix-paths.patch
@@ -49,7 +49,7 @@
  
          if provider_cls == K5Realm:
 -            krb5_config = _discover_path("krb5-config", "/usr/bin/krb5-config", kwargs)
-+            krb5_config = _discover_path("krb5-config", "@krb5@/bin/krb5-config", kwargs)
++            krb5_config = _discover_path("krb5-config", "@krb5Dev@/bin/krb5-config", kwargs)
  
              try:
                  krb5_version = subprocess.check_output(
@@ -58,7 +58,7 @@
                  # macOS output doesn't contain Heimdal
                  if "heimdal" in krb5_version.lower() or (
 -                    sys.platform == "darwin" and krb5_config == "/usr/bin/krb5-config"
-+                    sys.platform == "darwin" and krb5_config == "@krb5@/bin/krb5-config"
++                    sys.platform == "darwin" and krb5_config == "@krb5Dev@/bin/krb5-config"
                  ):
                      provider_cls = HeimdalRealm
                  else:
diff --git a/pkgs/development/python-modules/kaa-base/default.nix b/pkgs/development/python-modules/kaa-base/default.nix
index 8d83bdb5b1109..ac4b1cf52f737 100644
--- a/pkgs/development/python-modules/kaa-base/default.nix
+++ b/pkgs/development/python-modules/kaa-base/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPyPy
-, isPy3k
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  isPy3k,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -46,7 +47,6 @@ buildPythonPackage rec {
     description = "Generic application framework, providing the foundation for other modules";
     homepage = "https://github.com/freevo/kaa-base";
     license = licenses.lgpl21;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/kaa-metadata/default.nix b/pkgs/development/python-modules/kaa-metadata/default.nix
index 20ae66f17a9de..bb8fe831c2b91 100644
--- a/pkgs/development/python-modules/kaa-metadata/default.nix
+++ b/pkgs/development/python-modules/kaa-metadata/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, kaa-base
-, isPyPy
-, isPy3k
-, python
-, pkgs
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  kaa-base,
+  isPyPy,
+  isPy3k,
+  python,
+  pkgs,
 }:
 
 buildPythonPackage rec {
@@ -51,7 +52,6 @@ buildPythonPackage rec {
     description = "Python library for parsing media metadata, which can extract metadata (e.g., such as id3 tags) from a wide range of media files";
     homepage = "https://github.com/freevo/kaa-metadata";
     license = licenses.gpl2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/kafka-python-ng/default.nix b/pkgs/development/python-modules/kafka-python-ng/default.nix
new file mode 100644
index 0000000000000..4e3997d5ed1f6
--- /dev/null
+++ b/pkgs/development/python-modules/kafka-python-ng/default.nix
@@ -0,0 +1,56 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools-scm,
+  crc32c,
+  lz4,
+  python-snappy,
+  zstandard,
+  botocore,
+  pytest-mock,
+  pytestCheckHook,
+  xxhash,
+}:
+
+buildPythonPackage rec {
+  version = "2.2.2";
+  pname = "kafka-python-ng";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "wbarnha";
+    repo = "kafka-python-ng";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-ELJvcj91MQ2RTjT1dwgnTGSSG5lP6B6/45dFgtNY2Cc=";
+  };
+
+  build-system = [ setuptools-scm ];
+
+  passthru.optional-dependencies = {
+    crc32c =  [ crc32c ];
+    lz4 = [ lz4 ];
+    snappy = [ python-snappy ];
+    zstd = [ zstandard ];
+    boto = [ botocore ];
+  };
+
+  pythonImportsCheck = [ "kafka" ];
+
+  nativeCheckInputs = [
+    pytest-mock
+    pytestCheckHook
+    xxhash
+  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+
+  meta = {
+    changelog = "https://github.com/wbarnha/kafka-python-ng/releases/tag/v${version}";
+    description = "Pure Python client for Apache Kafka";
+    homepage = "https://github.com/wbarnha/kafka-python-ng";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/kafka-python/default.nix b/pkgs/development/python-modules/kafka-python/default.nix
deleted file mode 100644
index 9e73dbe9bd198..0000000000000
--- a/pkgs/development/python-modules/kafka-python/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, pytest, six, mock }:
-
-buildPythonPackage rec {
-  version = "2.0.2";
-  format = "setuptools";
-  pname = "kafka-python";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "04dfe7fea2b63726cd6f3e79a2d86e709d608d74406638c5da33a01d45a9d7e3";
-  };
-
-  nativeCheckInputs = [ pytest six mock ];
-
-  checkPhase = ''
-    py.test
-  '';
-
-  # Upstream uses tox but we don't on Nix. Running tests manually produces however
-  #     from . import unittest
-  # E   ImportError: cannot import name 'unittest'
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Pure Python client for Apache Kafka";
-    homepage = "https://github.com/dpkp/kafka-python";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ ];
-  };
-}
diff --git a/pkgs/development/python-modules/kaggle/default.nix b/pkgs/development/python-modules/kaggle/default.nix
index 38c3dce531511..ec647cf649f7a 100644
--- a/pkgs/development/python-modules/kaggle/default.nix
+++ b/pkgs/development/python-modules/kaggle/default.nix
@@ -1,36 +1,49 @@
-{ buildPythonPackage
-, bleach
-, certifi
-, fetchPypi
-, lib
-, python-dateutil
-, python-slugify
-, six
-, requests
-, tqdm
-, urllib3
+{
+  bleach,
+  buildPythonPackage,
+  certifi,
+  charset-normalizer,
+  fetchPypi,
+  hatchling,
+  idna,
+  lib,
+  python-dateutil,
+  python-slugify,
+  requests,
+  setuptools,
+  six,
+  text-unidecode,
+  tqdm,
+  urllib3,
+  webencodings,
 }:
 
 buildPythonPackage rec {
   pname = "kaggle";
-  version = "1.6.12";
-  format = "setuptools";
+  version = "1.6.17";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-8SoFuC0q+xCnStxppfinNsZL2ZNNC1rPtP5PlzV1MLQ=";
+    hash = "sha256-Q5p96h1QOfMg/WrV7CG2iNz6cNQFy0IJW4H0HtxAG4E=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ hatchling ];
+
+  dependencies = [
     bleach
     certifi
+    charset-normalizer
+    idna
     python-dateutil
     python-slugify
     requests
+    setuptools
     six
+    text-unidecode
     tqdm
     urllib3
-    bleach
+    webencodings
   ];
 
   # Tests try to access the network.
diff --git a/pkgs/development/python-modules/kaitaistruct/default.nix b/pkgs/development/python-modules/kaitaistruct/default.nix
index 71ad13fadb550..24807eacdc001 100644
--- a/pkgs/development/python-modules/kaitaistruct/default.nix
+++ b/pkgs/development/python-modules/kaitaistruct/default.nix
@@ -1,9 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchFromGitHub
-, brotli
-, lz4
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchFromGitHub,
+  brotli,
+  lz4,
+  setuptools,
 }:
 
 let
@@ -17,7 +19,7 @@ in
 buildPythonPackage rec {
   pname = "kaitaistruct";
   version = "0.10";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
@@ -29,13 +31,14 @@ buildPythonPackage rec {
     sed '32ipackages = kaitai/compress' -i setup.cfg
   '';
 
+  build-system = [ setuptools ];
+
   propagatedBuildInputs = [
     brotli
     lz4
   ];
 
-  # no tests
-  dontCheck = true;
+  doCheck = false; # no tests in upstream
 
   pythonImportsCheck = [
     "kaitaistruct"
diff --git a/pkgs/development/python-modules/kajiki/default.nix b/pkgs/development/python-modules/kajiki/default.nix
index a4c92ea35ed72..4b9e78c77b863 100644
--- a/pkgs/development/python-modules/kajiki/default.nix
+++ b/pkgs/development/python-modules/kajiki/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, babel
-, buildPythonPackage
-, fetchFromGitHub
-, linetable
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  babel,
+  buildPythonPackage,
+  fetchFromGitHub,
+  linetable,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,18 +22,14 @@ buildPythonPackage rec {
     hash = "sha256-EbXe4Jh2IKAYw9GE0kFgKVv9c9uAOiFFYaMF8CGaOfg=";
   };
 
-  propagatedBuildInputs = [
-    linetable
-  ];
+  propagatedBuildInputs = [ linetable ];
 
   nativeCheckInputs = [
     babel
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "kajiki"
-  ];
+  pythonImportsCheck = [ "kajiki" ];
 
   meta = with lib; {
     description = "Module provides fast well-formed XML templates";
diff --git a/pkgs/development/python-modules/kaldi-active-grammar/default.nix b/pkgs/development/python-modules/kaldi-active-grammar/default.nix
index 10d819bf8c52a..14795b0c1268d 100644
--- a/pkgs/development/python-modules/kaldi-active-grammar/default.nix
+++ b/pkgs/development/python-modules/kaldi-active-grammar/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, scikit-build
-, cmake
-, ush
-, requests
-, six
-, numpy
-, cffi
-, openfst
-, substituteAll
-, callPackage
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  scikit-build,
+  cmake,
+  ush,
+  requests,
+  six,
+  numpy,
+  cffi,
+  openfst,
+  substituteAll,
+  callPackage,
 }:
 
 #
@@ -53,17 +54,29 @@ buildPythonPackage rec {
     cd ..
   '';
 
-  buildInputs = [ openfst kaldi ];
-  nativeBuildInputs = [ scikit-build cmake ];
-  propagatedBuildInputs = [ ush requests numpy cffi six ];
+  buildInputs = [
+    openfst
+    kaldi
+  ];
+  nativeBuildInputs = [
+    scikit-build
+    cmake
+  ];
+  propagatedBuildInputs = [
+    ush
+    requests
+    numpy
+    cffi
+    six
+  ];
 
-  doCheck = false;  # no tests exist
+  doCheck = false; # no tests exist
 
   meta = with lib; {
     description = "Python Kaldi speech recognition";
     homepage = "https://github.com/daanzu/kaldi-active-grammar";
     license = licenses.agpl3Plus;
-    maintainers = with maintainers; [ ckie ];
+    maintainers = [ ];
     # Other platforms are supported upstream.
     platforms = platforms.linux;
   };
diff --git a/pkgs/development/python-modules/kaldi-active-grammar/fork.nix b/pkgs/development/python-modules/kaldi-active-grammar/fork.nix
index 7748e34df6f2d..00d2e2802f09d 100644
--- a/pkgs/development/python-modules/kaldi-active-grammar/fork.nix
+++ b/pkgs/development/python-modules/kaldi-active-grammar/fork.nix
@@ -1,15 +1,16 @@
-{ lib
-, stdenv
-, blas
-, lapack
-, openfst
-, icu
-, pkg-config
-, fetchFromGitHub
-, python3
-, openblas
-, zlib
-, gfortran
+{
+  lib,
+  stdenv,
+  blas,
+  lapack,
+  openfst,
+  icu,
+  pkg-config,
+  fetchFromGitHub,
+  python,
+  openblas,
+  zlib,
+  gfortran,
 }:
 
 let
@@ -55,7 +56,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     pkg-config
-    python3
+    python
     gfortran
   ];
 
@@ -105,7 +106,7 @@ stdenv.mkDerivation rec {
     description = "Speech Recognition Toolkit";
     homepage = "https://kaldi-asr.org";
     license = licenses.mit;
-    maintainers = with maintainers; [ ckie ];
+    maintainers = [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/python-modules/kaleido/default.nix b/pkgs/development/python-modules/kaleido/default.nix
new file mode 100644
index 0000000000000..ef889a0aa7152
--- /dev/null
+++ b/pkgs/development/python-modules/kaleido/default.nix
@@ -0,0 +1,118 @@
+{
+  lib,
+  stdenv,
+  python,
+  buildPythonPackage,
+  callPackage,
+  fetchurl,
+  autoPatchelfHook,
+  bash,
+  dejavu_fonts,
+  expat,
+  fontconfig,
+  lato,
+  libGL,
+  makeWrapper,
+  nspr,
+  nss,
+  sbclPackages,
+  sqlite,
+}:
+
+buildPythonPackage rec {
+  pname = "kaleido";
+  version = "0.2.1";
+  format = "wheel";
+
+  src =
+    {
+      # This library is so cursed that I have to use fetchurl instead of fetchPypi. I am not happy.
+      x86_64-linux = fetchurl {
+        url = "https://files.pythonhosted.org/packages/py2.py3/k/kaleido/kaleido-${version}-py2.py3-none-manylinux1_x86_64.whl";
+        hash = "sha256-qiHPG/HHj4+lCp99ReEAPDh709b+CnZ8+780S5W9w6g=";
+      };
+      aarch64-linux = fetchurl {
+        url = "https://files.pythonhosted.org/packages/py2.py3/k/kaleido/kaleido-${version}-py2.py3-none-manylinux2014_aarch64.whl";
+        hash = "sha256-hFgZhEyAgslGnZwX5CYh+/hcKyN++KhuyKhSf5i2USo=";
+      };
+      x86_64-darwin = fetchurl {
+        url = "https://files.pythonhosted.org/packages/py2.py3/k/kaleido/kaleido-${version}-py2.py3-none-macosx_10_11_x86_64.whl";
+        hash = "sha256-ym9z5/8AquvyhD9z8dO6zeGTDvUEEJP+drg6FXhQSac=";
+      };
+      aarch64-darwin = fetchurl {
+        url = "https://files.pythonhosted.org/packages/py2.py3/k/kaleido/kaleido-${version}-py2.py3-none-macosx_11_0_arm64.whl";
+        hash = "sha256-u5pdH3EDV9XUMu4kDvZlim0STD5hCTWBe0tC2px4fAU=";
+      };
+    }
+    ."${stdenv.hostPlatform.system}"
+      or (throw "Unsupported system for ${pname}: ${stdenv.hostPlatform.system}");
+
+  nativeBuildInputs = (lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ]) ++ [
+    makeWrapper
+  ];
+  buildInputs = [
+    bash
+    dejavu_fonts
+    expat
+    fontconfig
+    lato
+    libGL
+    nspr
+    nss
+    sbclPackages.cl-dejavu
+    sqlite
+  ];
+
+  pythonImportsCheck = [ "kaleido" ];
+
+  postInstall = ''
+    # Expose kaleido binary
+    mkdir -p $out/bin
+    ln -s $out/${python.sitePackages}/kaleido/executable/bin/kaleido $out/bin/kaleido
+
+    # Replace bundled swiftshader with libGL
+    rm -rf $out/${python.sitePackages}/kaleido/executable/bin/swiftshader
+    ln -s ${libGL}/lib $out/${python.sitePackages}/kaleido/executable/bin/swiftshader
+
+    # Relace bundled libraries with nixpkgs-packaged libraries
+    rm -rf $out/${python.sitePackages}/kaleido/executable/lib
+    mkdir -p $out/${python.sitePackages}/kaleido/executable/lib
+    ln -s ${expat}/lib/* $out/${python.sitePackages}/kaleido/executable/lib/
+    ln -s ${nspr}/lib/* $out/${python.sitePackages}/kaleido/executable/lib/
+    ln -s ${nss}/lib/* $out/${python.sitePackages}/kaleido/executable/lib/
+    ln -s ${sqlite}/lib/* $out/${python.sitePackages}/kaleido/executable/lib/
+
+    # Replace bundled font configuration with nixpkgs-packaged font configuration
+    rm -rf $out/${python.sitePackages}/kaleido/executable/etc/fonts
+    mkdir -p $out/${python.sitePackages}/kaleido/executable/etc/fonts/conf.d
+    ln -s ${fontconfig}/etc/fonts/fonts.conf $out/${python.sitePackages}/kaleido/executable/etc/fonts/
+    ls -s ${fontconfig}/etc/fonts/conf.d/* $out/${python.sitePackages}/kaleido/executable/etc/fonts/conf.d/
+    ln -s ${sbclPackages.cl-dejavu}/dejavu-fonts-ttf-2.37/fontconfig/* $out/${python.sitePackages}/kaleido/executable/etc/fonts/conf.d/
+
+    # Replace bundled fonts with nixpkgs-packaged fonts
+    # Currently this causes an issue where the fonts aren't found. I'm not sure why, so I'm leaving this commented out for now.
+    #rm -rf $out/${python.sitePackages}/kaleido/executable/xdg/fonts
+    #mkdir -p $out/${python.sitePackages}/kaleido/executable/xdg/fonts/truetype/dejavu $out/${python.sitePackages}/kaleido/executable/xdg/fonts/truetype/lato
+    #ln -s ${dejavu_fonts}/share/fonts/truetype/* $out/${python.sitePackages}/kaleido/executable/xdg/fonts/truetype/dejavu/
+    #ln -s ${lato}/share/fonts/lato/* $out/${python.sitePackages}/kaleido/executable/xdg/fonts/truetype/lato/
+  '';
+
+  passthru.tests = lib.optionalAttrs (!stdenv.hostPlatform.isDarwin) {
+    kaleido = callPackage ./tests.nix { };
+  };
+
+  meta = {
+    description = "Fast static image export for web-based visualization libraries with zero dependencies";
+    homepage = "https://github.com/plotly/Kaleido";
+    changelog = "https://github.com/plotly/Kaleido/releases";
+    platforms = [
+      "x86_64-linux"
+      "x86_64-darwin"
+      "aarch64-linux"
+      "aarch64-darwin"
+    ];
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; # Trust me, I'm not happy. But after literal hours of trying to reverse-engineer their build system and getting nowhere, I'll use the stupid binaries >:(
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ pandapip1 ];
+  };
+}
diff --git a/pkgs/development/python-modules/kaleido/tests.nix b/pkgs/development/python-modules/kaleido/tests.nix
new file mode 100644
index 0000000000000..e09f4947a563e
--- /dev/null
+++ b/pkgs/development/python-modules/kaleido/tests.nix
@@ -0,0 +1,15 @@
+{
+  runCommand,
+  python,
+  plotly,
+  pandas,
+  kaleido,
+}:
+
+runCommand "${kaleido.pname}-tests" {
+  nativeBuildInputs = [
+    python
+    plotly
+    pandas
+  ];
+} "python3 ${./tests.py}"
diff --git a/pkgs/development/python-modules/kaleido/tests.py b/pkgs/development/python-modules/kaleido/tests.py
new file mode 100644
index 0000000000000..0cbcaaae60bed
--- /dev/null
+++ b/pkgs/development/python-modules/kaleido/tests.py
@@ -0,0 +1,11 @@
+import plotly.express as px
+import os
+import os.path
+
+out = os.environ["out"]
+if not os.path.exists(out):
+  os.makedirs(out)
+
+outfile = os.path.join(out, "figure.png")
+fig = px.scatter(px.data.iris(), x="sepal_length", y="sepal_width", color="species")
+fig.write_image(outfile, engine="kaleido")
diff --git a/pkgs/development/python-modules/kanidm/default.nix b/pkgs/development/python-modules/kanidm/default.nix
index 88b98a1b5e797..e565a00196789 100644
--- a/pkgs/development/python-modules/kanidm/default.nix
+++ b/pkgs/development/python-modules/kanidm/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build
-, poetry-core
+  # build
+  poetry-core,
 
-# propagates
-, aiohttp
-, authlib
-, pydantic
-, toml
+  # propagates
+  aiohttp,
+  authlib,
+  pydantic,
+  toml,
 
-# tests
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
+  # tests
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
 }:
 
 let
   pname = "kanidm";
-  version = "0.0.3-unstable-2023-08-23";
+  version = "1.0.0-2024-04-22";
 in
 buildPythonPackage rec {
   inherit pname version;
@@ -31,15 +32,13 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "kanidm";
     repo = "kanidm";
-    rev = "def4420c4c5c3ec4f9b02776e1d5fdb07aa3a729";
-    hash = "sha256-5qQb+Itguw2v1Wdvc2vp00zglfvNd3LFEDvaweRJcOc=";
+    rev = "a0f743d8c8e7a6b6b0775e64774fc5175464cab6";
+    hash = "sha256-W2v3/osDrjRQqz2DqoG90SGcu4K6G2ypMTfE6Xq5qNI=";
   };
 
   sourceRoot = "${src.name}/pykanidm";
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -54,18 +53,17 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "-m 'not network'"
-  ];
+  pytestFlagsArray = [ "-m 'not network'" ];
 
-  pythonImportsCheck = [
-    "kanidm"
-  ];
+  pythonImportsCheck = [ "kanidm" ];
 
   meta = with lib; {
     description = "Kanidm client library";
     homepage = "https://github.com/kanidm/kanidm/tree/master/pykanidm";
     license = licenses.mpl20;
-    maintainers = with maintainers; [ arianvp hexa ];
+    maintainers = with maintainers; [
+      arianvp
+      hexa
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/kaptan/default.nix b/pkgs/development/python-modules/kaptan/default.nix
index d570ae3b00669..c27221611b86e 100644
--- a/pkgs/development/python-modules/kaptan/default.nix
+++ b/pkgs/development/python-modules/kaptan/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyyaml
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyyaml,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,24 +23,17 @@ buildPythonPackage rec {
     substituteInPlace requirements/base.txt --replace 'PyYAML>=3.13,<6' 'PyYAML>=3.13'
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pyyaml
-  ];
+  propagatedBuildInputs = [ pyyaml ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Configuration manager for python applications";
     mainProgram = "kaptan";
     homepage = "https://kaptan.readthedocs.io/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/karton-asciimagic/default.nix b/pkgs/development/python-modules/karton-asciimagic/default.nix
index ffed577e72223..59ec94d592a49 100644
--- a/pkgs/development/python-modules/karton-asciimagic/default.nix
+++ b/pkgs/development/python-modules/karton-asciimagic/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, karton-core
-, unittestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  karton-core,
+  unittestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-sY5ik9efzLBa6Fbh17Vh4q7PlwOGYjuodU9yvp/8E3k=";
   };
 
-  propagatedBuildInputs = [
-    karton-core
-  ];
+  propagatedBuildInputs = [ karton-core ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  pythonImportsCheck = [
-    "karton.asciimagic"
-  ];
+  pythonImportsCheck = [ "karton.asciimagic" ];
 
   meta = with lib; {
     description = "Decoders for ascii-encoded executables for the Karton framework";
diff --git a/pkgs/development/python-modules/karton-autoit-ripper/default.nix b/pkgs/development/python-modules/karton-autoit-ripper/default.nix
index f4a8e2f5868bb..b71bd366ad41d 100644
--- a/pkgs/development/python-modules/karton-autoit-ripper/default.nix
+++ b/pkgs/development/python-modules/karton-autoit-ripper/default.nix
@@ -1,47 +1,48 @@
-{ lib
-, autoit-ripper
-, buildPythonPackage
-, fetchFromGitHub
-, karton-core
-, malduck
-, pythonOlder
-, regex
+{
+  lib,
+  autoit-ripper,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  karton-core,
+  malduck,
+  pythonOlder,
+  regex,
 }:
 
 buildPythonPackage rec {
   pname = "karton-autoit-ripper";
   version = "1.2.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "CERT-Polska";
-    repo = pname;
+    repo = "karton-autoit-ripper";
     rev = "refs/tags/v${version}";
     hash = "sha256-D+M3JsIN8LUWg8GVweEzySHI7KaBb6cNHHn4pXoq55M=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  pythonRelaxDeps = [
+    "autoit-ripper"
+    "malduck"
+    "regex"
+  ];
+
+  dependencies = [
     autoit-ripper
     karton-core
     malduck
     regex
   ];
 
-  postPatch = ''
-    substituteInPlace requirements.txt \
-      --replace "autoit-ripper==" "autoit-ripper>=" \
-      --replace "malduck==" "malduck>=" \
-      --replace "regex==" "regex>="
-  '';
-
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "karton.autoit_ripper"
-  ];
+  pythonImportsCheck = [ "karton.autoit_ripper" ];
 
   meta = with lib; {
     description = "AutoIt script ripper for Karton framework";
diff --git a/pkgs/development/python-modules/karton-classifier/default.nix b/pkgs/development/python-modules/karton-classifier/default.nix
index bb104b291491d..8e98ab9d1d2b9 100644
--- a/pkgs/development/python-modules/karton-classifier/default.nix
+++ b/pkgs/development/python-modules/karton-classifier/default.nix
@@ -1,46 +1,45 @@
-{ lib
-, buildPythonPackage
-, chardet
-, fetchFromGitHub
-, karton-core
-, pytestCheckHook
-, python-magic
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  chardet,
+  fetchFromGitHub,
+  setuptools,
+  karton-core,
+  pytestCheckHook,
+  python-magic,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "karton-classifier";
   version = "2.0.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "CERT-Polska";
-    repo = pname;
+    repo = "karton-classifier";
     rev = "refs/tags/v${version}";
     hash = "sha256-DH8I4Lbbs2TVMvYlvh/P2I/7O4+VechP2JDDVHNsTSg=";
   };
 
-  propagatedBuildInputs = [
+  pythonRelaxDeps = [
+    "chardet"
+    "python-magic"
+  ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     chardet
     karton-core
     python-magic
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-
-  postPatch = ''
-    substituteInPlace requirements.txt \
-      --replace "chardet==3.0.4" "chardet" \
-      --replace "python-magic==0.4.18" "python-magic"
-  '';
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "karton.classifier"
-  ];
+  pythonImportsCheck = [ "karton.classifier" ];
 
   disabledTests = [
     # Tests expecting results from a different version of libmagic
diff --git a/pkgs/development/python-modules/karton-config-extractor/default.nix b/pkgs/development/python-modules/karton-config-extractor/default.nix
index 90ede387f9224..55b0e4f5f0a45 100644
--- a/pkgs/development/python-modules/karton-config-extractor/default.nix
+++ b/pkgs/development/python-modules/karton-config-extractor/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, karton-core
-, malduck
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  karton-core,
+  malduck,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "karton.config_extractor"
-  ];
+  pythonImportsCheck = [ "karton.config_extractor" ];
 
   meta = with lib; {
     description = "Static configuration extractor for the Karton framework";
diff --git a/pkgs/development/python-modules/karton-core/default.nix b/pkgs/development/python-modules/karton-core/default.nix
index e9c0b9cb07c4b..5dbd5f77fbbc8 100644
--- a/pkgs/development/python-modules/karton-core/default.nix
+++ b/pkgs/development/python-modules/karton-core/default.nix
@@ -1,31 +1,30 @@
-{ lib
-, boto3
-, buildPythonPackage
-, fetchFromGitHub
-, orjson
-, pythonOlder
-, redis
-, setuptools
-, unittestCheckHook
+{
+  lib,
+  boto3,
+  buildPythonPackage,
+  fetchFromGitHub,
+  orjson,
+  pythonOlder,
+  redis,
+  setuptools,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "karton-core";
-  version = "5.3.4";
+  version = "5.5.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "CERT-Polska";
     repo = "karton";
     rev = "refs/tags/v${version}";
-    hash = "sha256-q12S80GZFyh7zU6iMeCkyIesMK8qXtZ1B69w8H5LpOU=";
+    hash = "sha256-fjzZPq98AwNT+tiTvKZY2QsSD+FRUFx+oY84hPP7QdI=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     boto3
@@ -33,19 +32,18 @@ buildPythonPackage rec {
     redis
   ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  pythonImportsCheck = [
-    "karton.core"
-  ];
+  pythonImportsCheck = [ "karton.core" ];
 
   meta = with lib; {
     description = "Distributed malware processing framework";
     homepage = "https://karton-core.readthedocs.io/";
     changelog = "https://github.com/CERT-Polska/karton/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ chivay fab ];
+    maintainers = with maintainers; [
+      chivay
+      fab
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/karton-dashboard/default.nix b/pkgs/development/python-modules/karton-dashboard/default.nix
index b90653dddd468..efbff71a3795c 100644
--- a/pkgs/development/python-modules/karton-dashboard/default.nix
+++ b/pkgs/development/python-modules/karton-dashboard/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flask
-, karton-core
-, mistune
-, networkx
-, prometheus-client
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flask,
+  karton-core,
+  mistune,
+  networkx,
+  prometheus-client,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "karton-dashboard";
-  version = "1.5.0";
+  version = "1.6.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "CERT-Polska";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-O7Wrl9+RWkHPO0+9aue1Nlv0263qX8Thnh5FmnoKjxU=";
+    hash = "sha256-VzBC7IATF8QBtTXMv4vmorAzBlImEsayjenQ2Uz5jIo=";
   };
 
   pythonRelaxDeps = [
@@ -31,9 +31,6 @@ buildPythonPackage rec {
     "prometheus-client"
   ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   propagatedBuildInputs = [
     flask
diff --git a/pkgs/development/python-modules/karton-mwdb-reporter/default.nix b/pkgs/development/python-modules/karton-mwdb-reporter/default.nix
index 0fd9713beaf64..d67ff1a31ae21 100644
--- a/pkgs/development/python-modules/karton-mwdb-reporter/default.nix
+++ b/pkgs/development/python-modules/karton-mwdb-reporter/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, karton-core
-, mwdblib
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  karton-core,
+  mwdblib,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "karton.mwdb_reporter"
-  ];
+  pythonImportsCheck = [ "karton.mwdb_reporter" ];
 
   meta = with lib; {
     description = "Karton service that uploads analyzed artifacts and metadata to MWDB Core";
diff --git a/pkgs/development/python-modules/karton-yaramatcher/default.nix b/pkgs/development/python-modules/karton-yaramatcher/default.nix
index 1d5c4d56173ec..c64a248c474f4 100644
--- a/pkgs/development/python-modules/karton-yaramatcher/default.nix
+++ b/pkgs/development/python-modules/karton-yaramatcher/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, karton-core
-, unittestCheckHook
-, pythonOlder
-, yara-python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  karton-core,
+  unittestCheckHook,
+  pythonOlder,
+  yara-python,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     yara-python
   ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  pythonImportsCheck = [
-    "karton.yaramatcher"
-  ];
+  pythonImportsCheck = [ "karton.yaramatcher" ];
 
   meta = with lib; {
     description = "File and analysis artifacts yara matcher for the Karton framework";
diff --git a/pkgs/development/python-modules/kasa-crypt/default.nix b/pkgs/development/python-modules/kasa-crypt/default.nix
index 2247b2ece99d4..2622f3d3bb9a3 100644
--- a/pkgs/development/python-modules/kasa-crypt/default.nix
+++ b/pkgs/development/python-modules/kasa-crypt/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cython
-, poetry-core
-, pytestCheckHook
-, setuptools
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cython,
+  poetry-core,
+  pytestCheckHook,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "kasa-crypt";
-  version = "0.4.1";
-  format = "pyproject";
+  version = "0.4.4";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -19,27 +20,23 @@ buildPythonPackage rec {
     owner = "bdraco";
     repo = "kasa-crypt";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ZAynSL6tIQoe9veYGusel9GQEffeLQ8dBA9HfA6TMzI=";
+    hash = "sha256-9uDloaf9w75O+7r27PK/xOf0TrK43ndxnTUcm4CmOXo=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace " --cov=kasa_crypt --cov-report=term-missing:skip-covered" ""
+      --replace-fail " --cov=kasa_crypt --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     cython
     poetry-core
     setuptools
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "kasa_crypt"
-  ];
+  pythonImportsCheck = [ "kasa_crypt" ];
 
   meta = with lib; {
     description = "Fast kasa crypt";
diff --git a/pkgs/development/python-modules/kazoo/default.nix b/pkgs/development/python-modules/kazoo/default.nix
index eedbd7da41f14..21927ef81def0 100644
--- a/pkgs/development/python-modules/kazoo/default.nix
+++ b/pkgs/development/python-modules/kazoo/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-, eventlet
-, gevent
-, nose
-, mock
-, coverage
-, pkgs
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  eventlet,
+  gevent,
+  mock,
+  coverage,
+  openjdk8_headless,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +21,13 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [ six ];
-  buildInputs = [ eventlet gevent nose mock coverage pkgs.openjdk8 ];
+  buildInputs = [
+    eventlet
+    gevent
+    mock
+    coverage
+    openjdk8_headless
+  ];
 
   # not really needed
   preBuild = ''
@@ -40,6 +46,6 @@ buildPythonPackage rec {
     homepage = "https://kazoo.readthedocs.org";
     description = "Higher Level Zookeeper Client";
     license = licenses.asl20;
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/kbcstorage/default.nix b/pkgs/development/python-modules/kbcstorage/default.nix
index a10b8ddf7316a..eea875bc398cc 100644
--- a/pkgs/development/python-modules/kbcstorage/default.nix
+++ b/pkgs/development/python-modules/kbcstorage/default.nix
@@ -1,22 +1,22 @@
-{ lib
-, azure-storage-blob
-, boto3
-, buildPythonPackage
-, fetchFromGitHub
-, python-dotenv
-, pythonOlder
-, requests
-, responses
-, setuptools
-, setuptools-git-versioning
-, setuptools-scm
-, unittestCheckHook
-, urllib3
+{
+  lib,
+  azure-storage-blob,
+  boto3,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python-dotenv,
+  pythonOlder,
+  requests,
+  responses,
+  setuptools,
+  setuptools-git-versioning,
+  setuptools-scm,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "sapi-python-client";
-  version = "0.8.0";
+  version = "0.9.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "keboola";
     repo = "sapi-python-client";
     rev = "refs/tags/${version}";
-    hash = "sha256-Xc4VD91Nhnj0UyWHpdwEaETJVH8Ue6/kuiKEMaiSR0g=";
+    hash = "sha256-4ykOwSQ1tM0ZviETkjU0ydg7FWjkGNysHQe+f9MS0MM=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/kconfiglib/default.nix b/pkgs/development/python-modules/kconfiglib/default.nix
index 4e133e40df011..12c7ba6170db8 100644
--- a/pkgs/development/python-modules/kconfiglib/default.nix
+++ b/pkgs/development/python-modules/kconfiglib/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "kconfiglib";
@@ -14,7 +18,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A flexible Python 2/3 Kconfig implementation and library";
+    description = "Flexible Python 2/3 Kconfig implementation and library";
     homepage = "https://github.com/ulfalizer/Kconfiglib";
     license = licenses.isc;
     maintainers = with maintainers; [ teto ];
diff --git a/pkgs/development/python-modules/kde-material-you-colors/default.nix b/pkgs/development/python-modules/kde-material-you-colors/default.nix
new file mode 100644
index 0000000000000..5101b7830edb8
--- /dev/null
+++ b/pkgs/development/python-modules/kde-material-you-colors/default.nix
@@ -0,0 +1,44 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+
+  dbus-python,
+  numpy,
+  pillow,
+  materialyoucolor,
+}:
+
+buildPythonPackage rec {
+  pname = "kde-material-you-colors";
+  version = "1.9.3";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "luisbocanegra";
+    repo = "kde-material-you-colors";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-hew+aWbfWmqTsxsNx/0Ow0WZAVl0e6OyzDxcKm+nlzQ=";
+  };
+
+  build-system = [ setuptools ];
+  dependencies = [
+    dbus-python
+    numpy
+    pillow
+    materialyoucolor
+  ];
+
+  pythonImportsCheck = [ "kde_material_you_colors" ];
+
+  doCheck = false; # no unittests, and would require KDE desktop environment
+
+  meta = {
+    homepage = "https://store.kde.org/p/2136963";
+    description = "Automatic color scheme generator from your wallpaper for KDE Plasma powered by Material You";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+    mainProgram = "kde-material-you-colors";
+  };
+}
diff --git a/pkgs/development/python-modules/keba-kecontact/default.nix b/pkgs/development/python-modules/keba-kecontact/default.nix
index 33ece1b408cdc..66ed7604fa05a 100644
--- a/pkgs/development/python-modules/keba-kecontact/default.nix
+++ b/pkgs/development/python-modules/keba-kecontact/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, asyncio-dgram
-, buildPythonPackage
-, fetchFromGitHub
-, netifaces
-, pythonOlder
+{
+  lib,
+  asyncio-dgram,
+  buildPythonPackage,
+  fetchFromGitHub,
+  netifaces,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "keba_kecontact"
-  ];
+  pythonImportsCheck = [ "keba_kecontact" ];
 
   meta = with lib; {
     description = "Python library for controlling KEBA charging stations";
diff --git a/pkgs/development/python-modules/keep/default.nix b/pkgs/development/python-modules/keep/default.nix
index 354ce597e6ec0..f4e0ab5f1250a 100644
--- a/pkgs/development/python-modules/keep/default.nix
+++ b/pkgs/development/python-modules/keep/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pygithub
-, terminaltables
-, click
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pygithub,
+  terminaltables,
+  click,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -30,7 +31,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/orkohunter/keep";
-    description = "A Meta CLI toolkit: Personal shell command keeper and snippets manager";
+    description = "Meta CLI toolkit: Personal shell command keeper and snippets manager";
     mainProgram = "keep";
     platforms = platforms.all;
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/keepalive/default.nix b/pkgs/development/python-modules/keepalive/default.nix
index 94a9b413c4fd1..1228dc78f28ee 100644
--- a/pkgs/development/python-modules/keepalive/default.nix
+++ b/pkgs/development/python-modules/keepalive/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,7 @@ buildPythonPackage rec {
       name = "remove-use_2to3.patch";
       url = "https://github.com/wikier/keepalive/commit/64393f6c5bf9c69d946b584fd664dd4df72604e6.patch";
       hash = "sha256-/G1eEt8a4Qz7x5oQnDZZD/PIQwo9+oPZoy9OrXGHvR4=";
-      excludes = ["README.md"];
+      excludes = [ "README.md" ];
     })
   ];
 
@@ -28,7 +29,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "An HTTP handler for `urllib` that supports HTTP 1.1 and keepalive";
+    description = "HTTP handler for `urllib` that supports HTTP 1.1 and keepalive";
     homepage = "https://github.com/wikier/keepalive";
     license = licenses.lgpl21Plus;
   };
diff --git a/pkgs/development/python-modules/keepkey-agent/default.nix b/pkgs/development/python-modules/keepkey-agent/default.nix
index f9404f183c47b..df3f5444772d3 100644
--- a/pkgs/development/python-modules/keepkey-agent/default.nix
+++ b/pkgs/development/python-modules/keepkey-agent/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, keepkey
-, setuptools
-, libagent
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  keepkey,
+  setuptools,
+  libagent,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,10 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [
-    keepkey libagent setuptools wheel
+    keepkey
+    libagent
+    setuptools
+    wheel
   ];
 
   doCheck = false;
@@ -29,6 +33,10 @@ buildPythonPackage rec {
     description = "Using KeepKey as hardware-based SSH/PGP agent";
     homepage = "https://github.com/romanz/trezor-agent";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ hkjn np mmahut ];
+    maintainers = with maintainers; [
+      hkjn
+      np
+      mmahut
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/keepkey/default.nix b/pkgs/development/python-modules/keepkey/default.nix
index d4a62c74a6397..f0633a06b8389 100644
--- a/pkgs/development/python-modules/keepkey/default.nix
+++ b/pkgs/development/python-modules/keepkey/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, ecdsa
-, hidapi
-, libusb1
-, mnemonic
-, protobuf
-, pytest
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  ecdsa,
+  hidapi,
+  libusb1,
+  mnemonic,
+  protobuf,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,13 @@ buildPythonPackage rec {
     sha256 = "00hqppdj3s9y25x4ad59y8axq94dd4chhw9zixq32sdrd9v8z55a";
   };
 
-  propagatedBuildInputs = [ ecdsa hidapi libusb1 mnemonic protobuf ];
+  propagatedBuildInputs = [
+    ecdsa
+    hidapi
+    libusb1
+    mnemonic
+    protobuf
+  ];
 
   nativeCheckInputs = [ pytest ];
 
diff --git a/pkgs/development/python-modules/kegtron-ble/default.nix b/pkgs/development/python-modules/kegtron-ble/default.nix
index e5ddcf01be1c8..5d1928741b709 100644
--- a/pkgs/development/python-modules/kegtron-ble/default.nix
+++ b/pkgs/development/python-modules/kegtron-ble/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, bluetooth-data-tools
-, bluetooth-sensor-state-data
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, sensor-state-data
+{
+  lib,
+  bluetooth-data-tools,
+  bluetooth-sensor-state-data,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  sensor-state-data,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-O5I5shW8nL2RAQptS2Bp/GI/4L6o0xXXmwYvRq0MM8o=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     bluetooth-data-tools
@@ -33,18 +32,14 @@ buildPythonPackage rec {
     sensor-state-data
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace " --cov=kegtron_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  pythonImportsCheck = [
-    "kegtron_ble"
-  ];
+  pythonImportsCheck = [ "kegtron_ble" ];
 
   meta = with lib; {
     description = "Library for Kegtron BLE devices";
diff --git a/pkgs/development/python-modules/keras-applications/default.nix b/pkgs/development/python-modules/keras-applications/default.nix
index fdfbdba89cb8b..cdb3beb6a4031 100644
--- a/pkgs/development/python-modules/keras-applications/default.nix
+++ b/pkgs/development/python-modules/keras-applications/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, numpy, h5py }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  h5py,
+}:
 
 buildPythonPackage rec {
   pname = "keras-applications";
@@ -18,7 +24,10 @@ buildPythonPackage rec {
   # No tests in PyPI tarball
   doCheck = false;
 
-  propagatedBuildInputs = [ numpy h5py ];
+  propagatedBuildInputs = [
+    numpy
+    h5py
+  ];
 
   meta = with lib; {
     description = "Reference implementations of popular deep learning models";
diff --git a/pkgs/development/python-modules/keras-preprocessing/default.nix b/pkgs/development/python-modules/keras-preprocessing/default.nix
index 833a01c0f2546..0e9b0bf5187f2 100644
--- a/pkgs/development/python-modules/keras-preprocessing/default.nix
+++ b/pkgs/development/python-modules/keras-preprocessing/default.nix
@@ -1,4 +1,14 @@
-{ lib, buildPythonPackage, fetchPypi, numpy, six, scipy, pillow, pytest, keras }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  six,
+  scipy,
+  pillow,
+  pytest,
+  keras,
+}:
 
 buildPythonPackage rec {
   pname = "keras-preprocessing";
@@ -12,13 +22,16 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     # required
-    numpy six
+    numpy
+    six
     # optional
-    scipy pillow
+    scipy
+    pillow
   ];
 
   nativeCheckInputs = [
-    pytest keras
+    pytest
+    keras
   ];
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/keras/default.nix b/pkgs/development/python-modules/keras/default.nix
index c745792962236..ac5d47623a8ac 100644
--- a/pkgs/development/python-modules/keras/default.nix
+++ b/pkgs/development/python-modules/keras/default.nix
@@ -1,39 +1,73 @@
-{ lib, buildPythonPackage, fetchPypi
-, pytest, pytest-cov, pytest-xdist
-, six, numpy, scipy, pyyaml, h5py
-, keras-applications, keras-preprocessing
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  absl-py,
+  dm-tree,
+  h5py,
+  markdown-it-py,
+  ml-dtypes,
+  namex,
+  numpy,
+  optree,
+  packaging,
+  rich,
+  tensorflow,
+  tf-keras,
 }:
 
 buildPythonPackage rec {
   pname = "keras";
-  version = "3.0.5";
-  format = "wheel";
-
-  src = fetchPypi {
-    inherit format pname version;
-    hash = "sha256-SgIvLpfqWj2xLtgJ/8t84e+NNP6urFIxXshVPe0tz5c=";
-    python = "py3";
-    dist = "py3";
+  version = "3.5.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "keras-team";
+    repo = "keras";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-hp+kKsKI2Jmh30/KeUZ+uBW0MG49+QgsyR5yCS63p08=";
   };
 
-  nativeCheckInputs = [
-    pytest
-    pytest-cov
-    pytest-xdist
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
+    absl-py
+    dm-tree
+    h5py
+    markdown-it-py
+    ml-dtypes
+    namex
+    numpy
+    optree
+    packaging
+    rich
+    tensorflow
+    tf-keras
   ];
 
-  propagatedBuildInputs = [
-    six pyyaml numpy scipy h5py
-    keras-applications keras-preprocessing
+  pythonImportsCheck = [
+    "keras"
+    "keras._tf_keras"
   ];
 
   # Couldn't get tests working
   doCheck = false;
 
-  meta = with lib; {
-    description = "Deep Learning library for Theano and TensorFlow";
+  meta = {
+    description = "Multi-backend implementation of the Keras API, with support for TensorFlow, JAX, and PyTorch";
     homepage = "https://keras.io";
-    license = licenses.mit;
-    maintainers = with maintainers; [ NikolaMandic ];
+    changelog = "https://github.com/keras-team/keras/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ NikolaMandic ];
   };
 }
diff --git a/pkgs/development/python-modules/kerberos/default.nix b/pkgs/development/python-modules/kerberos/default.nix
index 4c5a8027e22dd..8f6f8c7682e0f 100644
--- a/pkgs/development/python-modules/kerberos/default.nix
+++ b/pkgs/development/python-modules/kerberos/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, libkrb5
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  libkrb5,
 }:
 
 buildPythonPackage rec {
@@ -23,8 +24,6 @@ buildPythonPackage rec {
     description = "Kerberos high-level interface";
     homepage = "https://pypi.org/project/kerberos/";
     license = licenses.asl20;
-    knownVulnerabilities = [
-      "CVE-2015-3206"
-    ];
+    knownVulnerabilities = [ "CVE-2015-3206" ];
   };
 }
diff --git a/pkgs/development/python-modules/keyboard/default.nix b/pkgs/development/python-modules/keyboard/default.nix
index 20b3453dab0d1..7620e272ea719 100644
--- a/pkgs/development/python-modules/keyboard/default.nix
+++ b/pkgs/development/python-modules/keyboard/default.nix
@@ -1,6 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+}:
 
 buildPythonPackage rec {
   pname = "keyboard";
@@ -25,7 +27,7 @@ buildPythonPackage rec {
     description = "Hook and simulate keyboard events on Windows and Linux";
     homepage = "https://github.com/boppreh/keyboard";
     license = licenses.mit;
-    maintainers = with maintainers; [ wolfangaukang ];
+    maintainers = [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/python-modules/keyring-pass/default.nix b/pkgs/development/python-modules/keyring-pass/default.nix
index 6c8d5f1e915b5..0409bd995c994 100644
--- a/pkgs/development/python-modules/keyring-pass/default.nix
+++ b/pkgs/development/python-modules/keyring-pass/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, gnupg
-, keyring
-, pass
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gnupg,
+  keyring,
+  pass,
+  poetry-core,
+  pythonOlder,
 }:
 buildPythonPackage rec {
   pname = "keyring-pass";
@@ -23,12 +24,10 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace keyring_pass/__init__.py \
-      --replace 'pass_binary = "pass"' 'pass_binary = "${lib.getExe pass}"'
+      --replace-fail 'pass_binary = "pass"' 'pass_binary = "${lib.getExe pass}"'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   nativeCheckInputs = [
     keyring
@@ -65,9 +64,7 @@ buildPythonPackage rec {
     keyring del test-service test-username
   '';
 
-  pythonImportsCheck = [
-    "keyring_pass"
-  ];
+  pythonImportsCheck = [ "keyring_pass" ];
 
   meta = {
     description = "Password Store (pass) backend for python's keyring";
diff --git a/pkgs/development/python-modules/keyring/default.nix b/pkgs/development/python-modules/keyring/default.nix
index ba2c56d99682d..45166fb322b20 100644
--- a/pkgs/development/python-modules/keyring/default.nix
+++ b/pkgs/development/python-modules/keyring/default.nix
@@ -1,44 +1,53 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, installShellFiles
-, setuptools-scm
-, shtab
-, importlib-metadata
-, dbus-python
-, jaraco-classes
-, jeepney
-, secretstorage
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  installShellFiles,
+  setuptools-scm,
+  shtab,
+  importlib-metadata,
+  jaraco-classes,
+  jaraco-context,
+  jaraco-functools,
+  jeepney,
+  secretstorage,
+  pyfakefs,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "keyring";
-  version = "24.3.1";
+  version = "25.4.0";
   pyproject = true;
   disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-wzJ7b/r8DovvvbWXys20ko/+XBIS92RfGG5tmVeomNs=";
+  src = fetchFromGitHub {
+    owner = "jaraco";
+    repo = "keyring";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-B1uU4INod2iSXIftPlDOr7mzWPY3FTpLhUuInl1Hg/M=";
   };
 
+  build-system = [ setuptools-scm ];
+
   nativeBuildInputs = [
     installShellFiles
-    setuptools-scm
     shtab
   ];
 
-  propagatedBuildInputs = [
-    jaraco-classes
-  ] ++ lib.optionals stdenv.isLinux [
-    jeepney
-    secretstorage
-  ] ++ lib.optionals (pythonOlder "3.12") [
-    importlib-metadata
-  ];
+  dependencies =
+    [
+      jaraco-classes
+      jaraco-context
+      jaraco-functools
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isLinux [
+      jeepney
+      secretstorage
+    ]
+    ++ lib.optionals (pythonOlder "3.12") [ importlib-metadata ];
 
   postInstall = ''
     installShellCompletion --cmd keyring \
@@ -52,22 +61,25 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
+    pyfakefs
     pytestCheckHook
   ];
 
-  disabledTestPaths = [
-    "tests/backends/test_macOS.py"
-  ]
-  # These tests fail when sandboxing is enabled because they are unable to get a password from keychain.
-  ++ lib.optional stdenv.isDarwin "tests/test_multiprocess.py";
+  disabledTestPaths =
+    [ "tests/backends/test_macOS.py" ]
+    # These tests fail when sandboxing is enabled because they are unable to get a password from keychain.
+    ++ lib.optional stdenv.hostPlatform.isDarwin "tests/test_multiprocess.py";
 
   meta = with lib; {
     description = "Store and access your passwords safely";
-    homepage    = "https://github.com/jaraco/keyring";
-    changelog   = "https://github.com/jaraco/keyring/blob/v${version}/NEWS.rst";
-    license     = licenses.mit;
+    homepage = "https://github.com/jaraco/keyring";
+    changelog = "https://github.com/jaraco/keyring/blob/v${version}/NEWS.rst";
+    license = licenses.mit;
     mainProgram = "keyring";
-    maintainers = with maintainers; [ lovek323 dotlambda ];
-    platforms   = platforms.unix;
+    maintainers = with maintainers; [
+      lovek323
+      dotlambda
+    ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/keyring_24/default.nix b/pkgs/development/python-modules/keyring_24/default.nix
new file mode 100644
index 0000000000000..05fbb3178147a
--- /dev/null
+++ b/pkgs/development/python-modules/keyring_24/default.nix
@@ -0,0 +1,81 @@
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  installShellFiles,
+  setuptools,
+  setuptools-scm,
+  shtab,
+  importlib-metadata,
+  jaraco-classes,
+  jaraco-context,
+  jaraco-functools,
+  jeepney,
+  secretstorage,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "keyring_24";
+  # nixpkgs-update: no auto update
+  version = "24.3.1";
+  pyproject = true;
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    inherit version;
+    pname = "keyring";
+    hash = "sha256-wzJ7b/r8DovvvbWXys20ko/+XBIS92RfGG5tmVeomNs=";
+  };
+
+  nativeBuildInputs = [
+    installShellFiles
+    shtab
+  ];
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies =
+    [
+      jaraco-classes
+      jaraco-context
+      jaraco-functools
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isLinux [
+      jeepney
+      secretstorage
+    ]
+    ++ lib.optionals (pythonOlder "3.12") [ importlib-metadata ];
+
+  postInstall = ''
+    installShellCompletion --cmd keyring \
+      --bash <($out/bin/keyring --print-completion bash) \
+      --zsh <($out/bin/keyring --print-completion zsh)
+  '';
+
+  pythonImportsCheck = [
+    "keyring"
+    "keyring.backend"
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  disabledTestPaths =
+    [ "tests/backends/test_macOS.py" ]
+    # These tests fail when sandboxing is enabled because they are unable to get a password from keychain.
+    ++ lib.optional stdenv.hostPlatform.isDarwin "tests/test_multiprocess.py";
+
+  meta = with lib; {
+    description = "Store and access your passwords safely";
+    homepage = "https://github.com/jaraco/keyring";
+    changelog = "https://github.com/jaraco/keyring/blob/v${version}/NEWS.rst";
+    license = licenses.mit;
+    mainProgram = "keyring";
+    maintainers = with maintainers; [ jnsgruk ];
+  };
+}
diff --git a/pkgs/development/python-modules/keyrings-alt/default.nix b/pkgs/development/python-modules/keyrings-alt/default.nix
index f463b18950dd4..61d3600204971 100644
--- a/pkgs/development/python-modules/keyrings-alt/default.nix
+++ b/pkgs/development/python-modules/keyrings-alt/default.nix
@@ -1,32 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jaraco-classes
-, keyring
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jaraco-classes,
+  jaraco-context,
+  keyring,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "keyrings-alt";
-  version = "5.0.0";
-  format = "pyproject";
+  version = "5.0.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    pname = "keyrings.alt";
-    inherit version;
-    hash = "sha256-nURstHu86pD/ouzD6AA6z0FXP8IBv0S0vxO9DhFISCg=";
+  src = fetchFromGitHub {
+    owner = "jaraco";
+    repo = "keyrings.alt";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-m/hIXjri3FZ3rPIymiIBy8cKNOwJoj14WjsOyDtcWmU=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     jaraco-classes
+    jaraco-context
   ];
 
   nativeCheckInputs = [
@@ -34,9 +36,7 @@ buildPythonPackage rec {
     keyring
   ];
 
-  pythonImportsCheck = [
-    "keyrings.alt"
-  ];
+  pythonImportsCheck = [ "keyrings.alt" ];
 
   meta = with lib; {
     description = "Alternate keyring implementations";
diff --git a/pkgs/development/python-modules/keyrings-cryptfile/default.nix b/pkgs/development/python-modules/keyrings-cryptfile/default.nix
index 1621bcb30d951..528d4becda6b6 100644
--- a/pkgs/development/python-modules/keyrings-cryptfile/default.nix
+++ b/pkgs/development/python-modules/keyrings-cryptfile/default.nix
@@ -1,48 +1,50 @@
-{ lib
-, argon2-cffi
-, buildPythonPackage
-, fetchPypi
-, keyring
-, pycryptodome
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  argon2-cffi,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  keyring,
+  pycryptodome,
+  pytestCheckHook,
+  pytest-cov-stub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "keyrings-cryptfile";
-  version = "1.3.9";
-  format = "setuptools";
+  version = "1.4.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.5";
 
-  src = fetchPypi {
-    pname = "keyrings.cryptfile";
-    inherit version;
-    hash = "sha256-fCpFPKuZhUJrjCH3rVSlfkn/joGboY4INAvYgBrPAJE=";
+  src = fetchFromGitHub {
+    owner = "frispete";
+    repo = "keyrings.cryptfile";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-cDXx0s3o8hNqgzX4oNkjGhNcaUX5vi1uN2d9sdbiZwk=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "-s --cov=keyrings/cryptfile" ""
-  '';
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     argon2-cffi
     keyring
     pycryptodome
   ];
 
-  pythonImportsCheck = [
-    "keyrings.cryptfile"
-  ];
+  pythonImportsCheck = [ "keyrings.cryptfile" ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
   ];
 
   disabledTests = [
-    # FileNotFoundError: [Errno 2] No such file or directory: '/build/...
-    "test_versions"
+    # correct raise `ValueError`s which pytest fails to catch for some reason:
+    "test_empty_username"
+    # TestEncryptedFileKeyring::test_file raises 'ValueError: Incorrect Password' for some reason, maybe mock related:
+    "TestEncryptedFileKeyring"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/keyrings-google-artifactregistry-auth/default.nix b/pkgs/development/python-modules/keyrings-google-artifactregistry-auth/default.nix
index b9204cbdabe77..337d895674151 100644
--- a/pkgs/development/python-modules/keyrings-google-artifactregistry-auth/default.nix
+++ b/pkgs/development/python-modules/keyrings-google-artifactregistry-auth/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-auth
-, keyring
-, pluggy
-, pythonOlder
-, requests
-, setuptools-scm
-, toml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-auth,
+  keyring,
+  pluggy,
+  pythonOlder,
+  requests,
+  setuptools-scm,
+  toml,
 }:
 
 buildPythonPackage rec {
@@ -35,9 +36,7 @@ buildPythonPackage rec {
     requests
   ];
 
-  pythonImportsCheck = [
-    "keyrings.gauth"
-  ];
+  pythonImportsCheck = [ "keyrings.gauth" ];
 
   # upstream has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/keyrings-passwordstore/default.nix b/pkgs/development/python-modules/keyrings-passwordstore/default.nix
index db8d934c93004..43f35253ddfc5 100644
--- a/pkgs/development/python-modules/keyrings-passwordstore/default.nix
+++ b/pkgs/development/python-modules/keyrings-passwordstore/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 
-, keyring
-, setuptools-scm
+  keyring,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -17,17 +18,11 @@ buildPythonPackage rec {
     hash = "sha256-pylZw45FUtLHzUV4cDyl/nT8tCZwNj4Jf41MMlyskoU=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  nativeCheckInputs = [
-    keyring
-  ];
+  nativeCheckInputs = [ keyring ];
 
-  pythonImportsCheck = [
-    "keyrings.passwordstore.backend"
-  ];
+  pythonImportsCheck = [ "keyrings.passwordstore.backend" ];
 
   meta = {
     license = lib.licenses.mit;
diff --git a/pkgs/development/python-modules/keystone-engine/default.nix b/pkgs/development/python-modules/keystone-engine/default.nix
index 5b392186c9526..4e526346dced9 100644
--- a/pkgs/development/python-modules/keystone-engine/default.nix
+++ b/pkgs/development/python-modules/keystone-engine/default.nix
@@ -1,4 +1,10 @@
-{ lib, stdenv, buildPythonPackage, fetchPypi, keystone }:
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  keystone,
+}:
 
 buildPythonPackage rec {
   pname = "keystone-engine";
@@ -6,11 +12,14 @@ buildPythonPackage rec {
   format = "setuptools";
 
   src = fetchPypi {
-   inherit pname version;
-   sha256 = "1xahdr6bh3dw5swrc2r8kqa8ljhqlb7k2kxv5mrw5rhcmcnzcyig";
+    inherit pname version;
+    sha256 = "1xahdr6bh3dw5swrc2r8kqa8ljhqlb7k2kxv5mrw5rhcmcnzcyig";
   };
 
-  setupPyBuildFlags = lib.optionals stdenv.isLinux [ "--plat-name" "linux" ];
+  setupPyBuildFlags = lib.optionals stdenv.hostPlatform.isLinux [
+    "--plat-name"
+    "linux"
+  ];
 
   preConfigure = ''
     substituteInPlace setup.py --replace \
diff --git a/pkgs/development/python-modules/keystoneauth1/default.nix b/pkgs/development/python-modules/keystoneauth1/default.nix
index 412080ba846fd..a9efd42dc9d2f 100644
--- a/pkgs/development/python-modules/keystoneauth1/default.nix
+++ b/pkgs/development/python-modules/keystoneauth1/default.nix
@@ -1,36 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, betamax
-, hacking
-, iso8601
-, lxml
-, oauthlib
-, os-service-types
-, oslo-config
-, oslo-utils
-, pbr
-, pycodestyle
-, pyyaml
-, requests
-, requests-kerberos
-, requests-mock
-, setuptools
-, six
-, stestr
-, stevedore
-, testresources
-, testtools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  betamax,
+  hacking,
+  iso8601,
+  lxml,
+  oauthlib,
+  os-service-types,
+  oslo-config,
+  oslo-utils,
+  pbr,
+  pycodestyle,
+  pyyaml,
+  requests,
+  requests-kerberos,
+  requests-mock,
+  setuptools,
+  six,
+  stestr,
+  stevedore,
+  testresources,
+  testtools,
 }:
 
 buildPythonPackage rec {
   pname = "keystoneauth1";
-  version = "5.6.0";
-  pyproject= true;
+  version = "5.8.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-7LfzR1nr4QPbNyqwlTwLghkp3dSX8zKqaz72yqz/7Yg=";
+    hash = "sha256-MVfCEuEhFk3mTWPl734dqtK9NkmmjeHpcbdodwGe8cQ=";
   };
 
   postPatch = ''
@@ -39,11 +40,9 @@ buildPythonPackage rec {
     rm test-requirements.txt
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     betamax
     iso8601
     lxml
diff --git a/pkgs/development/python-modules/keyutils/default.nix b/pkgs/development/python-modules/keyutils/default.nix
index 3782a3b23626d..e9b09ba1e0ece 100644
--- a/pkgs/development/python-modules/keyutils/default.nix
+++ b/pkgs/development/python-modules/keyutils/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, keyutils
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+  keyutils,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -33,12 +34,10 @@ buildPythonPackage rec {
 
   buildInputs = [ keyutils ];
   nativeBuildInputs = [ cython ];
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = {
-    description = "A set of python bindings for keyutils";
+    description = "Set of python bindings for keyutils";
     homepage = "https://github.com/sassoftware/python-keyutils";
     license = lib.licenses.asl20;
     maintainers = with lib.maintainers; [ primeos ];
diff --git a/pkgs/development/python-modules/khanaa/default.nix b/pkgs/development/python-modules/khanaa/default.nix
index 8548def29c3df..5c9cf53dc11ca 100644
--- a/pkgs/development/python-modules/khanaa/default.nix
+++ b/pkgs/development/python-modules/khanaa/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-, pythonOlder
+  pythonOlder,
 
-, unittestCheckHook
+  unittestCheckHook,
 
-, setuptools
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "khanaa";
-  version = "0.0.6";
+  version = "0.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,27 +21,25 @@ buildPythonPackage rec {
     owner = "cakimpei";
     repo = "khanaa";
     rev = "refs/tags/v${version}";
-    hash = "sha256-BzxNHYMkp5pdJYQ80EI5jlP654yX9woW7wz1jArCln4=";
+    hash = "sha256-QFvvahVEld3BooINeUYJDahZyfh5xmQNtWRLAOdr6lw=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [ "-s" "tests" ];
+  unittestFlagsArray = [
+    "-s"
+    "tests"
+  ];
 
   pythonImportsCheck = [ "khanaa" ];
 
-  meta = with lib;
-    {
-      description = "A tool to make spelling Thai more convenient";
-      homepage = "https://github.com/cakimpei/khanaa";
-      changelog = "https://github.com/cakimpei/khanaa/blob/main/CHANGELOG.md";
-      license = licenses.mit;
-      maintainers = with maintainers; [ vizid ];
-    };
+  meta = with lib; {
+    description = "Tool to make spelling Thai more convenient";
+    homepage = "https://github.com/cakimpei/khanaa";
+    changelog = "https://github.com/cakimpei/khanaa/blob/main/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ vizid ];
+  };
 }
diff --git a/pkgs/development/python-modules/kinparse/default.nix b/pkgs/development/python-modules/kinparse/default.nix
index 9c3286d1c62cf..a925347da3180 100644
--- a/pkgs/development/python-modules/kinparse/default.nix
+++ b/pkgs/development/python-modules/kinparse/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest
-, future
-, pyparsing
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
+  future,
+  pyparsing,
 }:
 
 buildPythonPackage {
@@ -21,9 +22,7 @@ buildPythonPackage {
   doCheck = true;
   pythonImportsCheck = [ "kinparse" ];
 
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
   propagatedBuildInputs = [
     future
@@ -31,7 +30,7 @@ buildPythonPackage {
   ];
 
   meta = with lib; {
-    description = "A Parser for KiCad EESCHEMA netlists";
+    description = "Parser for KiCad EESCHEMA netlists";
     mainProgram = "kinparse";
     homepage = "https://github.com/xesscorp/kinparse";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/kiss-headers/default.nix b/pkgs/development/python-modules/kiss-headers/default.nix
index 895773678ca89..e7e52dacd187f 100644
--- a/pkgs/development/python-modules/kiss-headers/default.nix
+++ b/pkgs/development/python-modules/kiss-headers/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchFromGitHub, hatchling, requests, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  requests,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "kiss-headers";
@@ -36,6 +43,6 @@ buildPythonPackage rec {
     description = "Python package for HTTP/1.1 style headers";
     homepage = "https://github.com/Ousret/kiss-headers";
     license = licenses.mit;
-    maintainers = with maintainers; [ wolfangaukang ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/kitchen/default.nix b/pkgs/development/python-modules/kitchen/default.nix
index e606505948553..931017a198ff6 100644
--- a/pkgs/development/python-modules/kitchen/default.nix
+++ b/pkgs/development/python-modules/kitchen/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,15 +20,13 @@ buildPythonPackage rec {
   # Waiting for upstream's clean-up
   doCheck = false;
 
-  pythonImportsCheck = [
-    "kitchen"
-  ];
+  pythonImportsCheck = [ "kitchen" ];
 
   meta = with lib; {
     description = "Kitchen contains a cornucopia of useful code";
     homepage = "https://github.com/fedora-infra/kitchen";
     changelog = "https://github.com/fedora-infra/kitchen/blob/${version}/NEWS.rst";
     license = licenses.lgpl2Only;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/kivy-garden/default.nix b/pkgs/development/python-modules/kivy-garden/default.nix
index 1475b4448230d..34792e64d1444 100644
--- a/pkgs/development/python-modules/kivy-garden/default.nix
+++ b/pkgs/development/python-modules/kivy-garden/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -24,7 +25,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "The kivy garden installation script, split into its own package for convenient use in buildozer.";
+    description = "Kivy garden installation script, split into its own package for convenient use in buildozer";
     homepage = "https://github.com/kivy-garden/garden";
     license = licenses.mit;
     maintainers = with maintainers; [ risson ];
diff --git a/pkgs/development/python-modules/kivy/default.nix b/pkgs/development/python-modules/kivy/default.nix
index 0a9e006844a8d..26a1bba38bcef 100644
--- a/pkgs/development/python-modules/kivy/default.nix
+++ b/pkgs/development/python-modules/kivy/default.nix
@@ -1,12 +1,28 @@
-{ lib, stdenv
-, buildPythonPackage, fetchFromGitHub, fetchpatch
-, pkg-config, cython_0, docutils
-, kivy-garden
-, mesa, mtdev, SDL2, SDL2_image, SDL2_ttf, SDL2_mixer
-, Accelerate, ApplicationServices, AVFoundation, libcxx
-, withGstreamer ? true
-, gst_all_1
-, packaging, pillow, pygments, requests
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pkg-config,
+  cython_0,
+  docutils,
+  kivy-garden,
+  mesa,
+  mtdev,
+  SDL2,
+  SDL2_image,
+  SDL2_ttf,
+  SDL2_mixer,
+  Accelerate,
+  ApplicationServices,
+  AVFoundation,
+  libcxx,
+  withGstreamer ? true,
+  gst_all_1,
+  packaging,
+  pillow,
+  pygments,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -26,26 +42,33 @@ buildPythonPackage rec {
     docutils
   ];
 
-  buildInputs = [
-    SDL2
-    SDL2_image
-    SDL2_ttf
-    SDL2_mixer
-  ] ++ lib.optionals stdenv.isLinux [
-    mesa
-    mtdev
-  ] ++ lib.optionals stdenv.isDarwin [
-    Accelerate
-    ApplicationServices
-    AVFoundation
-    libcxx
-  ] ++ lib.optionals withGstreamer (with gst_all_1; [
-    # NOTE: The degree to which gstreamer actually works is unclear
-    gstreamer
-    gst-plugins-base
-    gst-plugins-good
-    gst-plugins-bad
-  ]);
+  buildInputs =
+    [
+      SDL2
+      SDL2_image
+      SDL2_ttf
+      SDL2_mixer
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isLinux [
+      mesa
+      mtdev
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      Accelerate
+      ApplicationServices
+      AVFoundation
+      libcxx
+    ]
+    ++ lib.optionals withGstreamer (
+      with gst_all_1;
+      [
+        # NOTE: The degree to which gstreamer actually works is unclear
+        gstreamer
+        gst-plugins-base
+        gst-plugins-good
+        gst-plugins-bad
+      ]
+    );
 
   propagatedBuildInputs = [
     kivy-garden
@@ -61,9 +84,9 @@ buildPythonPackage rec {
   # prefer pkg-config over hardcoded framework paths
   USE_OSX_FRAMEWORKS = 0;
   # work around python distutils compiling C++ with $CC (see issue #26709)
-  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-I${lib.getDev libcxx}/include/c++/v1";
+  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin "-I${lib.getDev libcxx}/include/c++/v1";
 
-  postPatch = lib.optionalString stdenv.isLinux ''
+  postPatch = lib.optionalString stdenv.hostPlatform.isLinux ''
     substituteInPlace kivy/lib/mtdev.py \
       --replace "LoadLibrary('libmtdev.so.1')" "LoadLibrary('${mtdev}/lib/libmtdev.so.1')"
   '';
@@ -76,7 +99,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "kivy" ];
 
   meta = with lib; {
-    description = "Library for rapid development of hardware-accelerated multitouch applications.";
+    description = "Library for rapid development of hardware-accelerated multitouch applications";
     homepage = "https://pypi.python.org/pypi/kivy";
     license = licenses.mit;
     maintainers = with maintainers; [ risson ];
diff --git a/pkgs/development/python-modules/kiwiki-client/default.nix b/pkgs/development/python-modules/kiwiki-client/default.nix
index 22da8a5236e21..45f328d08fb6e 100644
--- a/pkgs/development/python-modules/kiwiki-client/default.nix
+++ b/pkgs/development/python-modules/kiwiki-client/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python-dateutil
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python-dateutil,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "kiwiki"
-  ];
+  pythonImportsCheck = [ "kiwiki" ];
 
   meta = with lib; {
     description = "Module to interact with the KIWI.KI API";
diff --git a/pkgs/development/python-modules/kiwisolver/default.nix b/pkgs/development/python-modules/kiwisolver/default.nix
index bc905e77269a7..24322524eb93a 100644
--- a/pkgs/development/python-modules/kiwisolver/default.nix
+++ b/pkgs/development/python-modules/kiwisolver/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, stdenv
-, libcxx
-, cppy
-, setuptools-scm
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  stdenv,
+  libcxx,
+  cppy,
+  setuptools-scm,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,24 +21,18 @@ buildPythonPackage rec {
     hash = "sha256-5X5WOlf7IqFC2jTziswvwaXIZLwpyhUXqIq8lj5g1uw=";
   };
 
-  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-I${lib.getDev libcxx}/include/c++/v1";
+  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin "-I${lib.getDev libcxx}/include/c++/v1";
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    cppy
-  ];
+  buildInputs = [ cppy ];
 
-  pythonImportsCheck = [
-    "kiwisolver"
-  ];
+  pythonImportsCheck = [ "kiwisolver" ];
 
   meta = with lib; {
     description = "Implementation of the Cassowary constraint solver";
     homepage = "https://github.com/nucleic/kiwi";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/klaus/default.nix b/pkgs/development/python-modules/klaus/default.nix
index 6b60c78465bbe..c120217683c6a 100644
--- a/pkgs/development/python-modules/klaus/default.nix
+++ b/pkgs/development/python-modules/klaus/default.nix
@@ -1,15 +1,30 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy3k, flask, pygments, dulwich, httpauth, humanize, pytest, requests, python-ctags3, mock }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  isPy3k,
+  flask,
+  pygments,
+  dulwich,
+  httpauth,
+  humanize,
+  pytest,
+  requests,
+  python-ctags3,
+  mock,
+}:
 
 buildPythonPackage rec {
   pname = "klaus";
-  version = "2.0.3";
+  version = "3.0.1";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "jonashaag";
     repo = pname;
     rev = version;
-    hash = "sha256-VAwIdmwdo/Rim2sVlR605Wo5/zkNOMiGkh40qLrENmU=";
+    hash = "sha256-GflSDhBmMsQ34o3ApraEJ6GmlXXP2kK6WW3lsfr6b7g=";
   };
 
   prePatch = ''
@@ -17,12 +32,27 @@ buildPythonPackage rec {
       --replace "mkdir -p \$builddir" "mkdir -p \$builddir && pwd"
   '';
 
+  # TODO: remove in next version
+  patches = [
+    (fetchpatch {
+      name = "distutils.patch";
+      url = "https://github.com/jonashaag/klaus/commit/d50d2aab97fd86c11f3b5a4c1ecbcf1e085f395f.patch";
+      hash = "sha256-gJ/ksm96VRNgqIBp+PX/ljzdfQJYbwTBmZaF2Ctu7Fc=";
+    })
+  ];
+
   propagatedBuildInputs = [
-    flask pygments dulwich httpauth humanize
+    flask
+    pygments
+    dulwich
+    httpauth
+    humanize
   ];
 
   nativeCheckInputs = [
-    pytest requests python-ctags3
+    pytest
+    requests
+    python-ctags3
   ] ++ lib.optional (!isPy3k) mock;
 
   checkPhase = ''
@@ -33,10 +63,10 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "The first Git web viewer that Just Works";
+    description = "First Git web viewer that Just Works";
     mainProgram = "klaus";
-    homepage    = "https://github.com/jonashaag/klaus";
-    license     = licenses.isc;
+    homepage = "https://github.com/jonashaag/klaus";
+    license = licenses.isc;
     maintainers = with maintainers; [ pSub ];
   };
 }
diff --git a/pkgs/development/python-modules/klein/default.nix b/pkgs/development/python-modules/klein/default.nix
index dd9d154cba63a..03580725752da 100644
--- a/pkgs/development/python-modules/klein/default.nix
+++ b/pkgs/development/python-modules/klein/default.nix
@@ -1,47 +1,47 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build-system
-, setuptools
-, wheel
+  # build-system
+  setuptools,
 
-# dependencies
-, attrs
-, hyperlink
-, incremental
-, tubes
-, twisted
-, werkzeug
-, zope-interface
+  # dependencies
+  attrs,
+  hyperlink,
+  incremental,
+  tubes,
+  twisted,
+  werkzeug,
+  zope-interface,
 
-# tests
-, idna
-, python
-, treq
+  # tests
+  idna,
+  python,
+  treq,
 }:
 
 buildPythonPackage rec {
   pname = "klein";
-  version = "unstable-2023-09-05";
-  format = "pyproject";
+  version = "24.8.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "twisted";
-    repo = pname;
-    rev = "44b356ede27a667252ae5392014c802f0492c017";
-    hash = "sha256-zHdyyx5IseFWr25BGLL0dDM8/5BDehsvbxIci+DEo9s=";
+    repo = "klein";
+    rev = "refs/tags/${version}";
+    hash = "sha256-2/zl4fS9ZP73quPmGnz2+brEt84ODgVS89Om/cUsj0M=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
+    incremental
     setuptools
-    wheel
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     attrs
     hyperlink
     incremental
@@ -62,9 +62,7 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "klein"
-  ];
+  pythonImportsCheck = [ "klein" ];
 
   meta = with lib; {
     changelog = "https://github.com/twisted/klein/releases/tag/${version}";
diff --git a/pkgs/development/python-modules/kmapper/default.nix b/pkgs/development/python-modules/kmapper/default.nix
index c4f99ca613f51..2732efae80fd9 100644
--- a/pkgs/development/python-modules/kmapper/default.nix
+++ b/pkgs/development/python-modules/kmapper/default.nix
@@ -1,37 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, scikit-learn
-, numpy
-, scipy
-, jinja2
-, pytestCheckHook
-, networkx
-, matplotlib
-, igraph
-, plotly
-, ipywidgets
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  scikit-learn,
+  numpy,
+  scipy,
+  jinja2,
+  pytestCheckHook,
+  networkx,
+  matplotlib,
+  igraph,
+  plotly,
+  ipywidgets,
 }:
 
 buildPythonPackage rec {
   pname = "kmapper";
-  version = "2.0.1";
-  format = "setuptools";
+  version = "2.1.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "scikit-tda";
     repo = "kepler-mapper";
-    rev = "v${version}";
-    sha256 = "1jqqrn7ig9kylcc8xbslxmchzghr9jgffaab3g3y3nyghk8azlgj";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-i909J0yI8v8BqGbCkcjBAdA02Io+qpILdDkojZj0wv4=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     scikit-learn
     numpy
     scipy
     jinja2
   ];
 
+  pythonImportsCheck = [ "kmapper" ];
+
   nativeCheckInputs = [
     pytestCheckHook
     networkx
@@ -46,6 +52,5 @@ buildPythonPackage rec {
     homepage = "https://kepler-mapper.scikit-tda.org/";
     license = licenses.mit;
     maintainers = [ ];
-    broken = true;
   };
 }
diff --git a/pkgs/development/python-modules/kml2geojson/default.nix b/pkgs/development/python-modules/kml2geojson/default.nix
index 50f0097df7e89..3b392a227aae4 100644
--- a/pkgs/development/python-modules/kml2geojson/default.nix
+++ b/pkgs/development/python-modules/kml2geojson/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, poetry-core
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, click
+{
+  lib,
+  buildPythonPackage,
+  poetry-core,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  click,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-iJEcXpvy+Y3MkxAF2Q1Tkcx8GxUVjeVzv6gl134zdiI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    click
-  ];
+  propagatedBuildInputs = [ click ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "kml2geojson"
-  ];
+  pythonImportsCheck = [ "kml2geojson" ];
 
   meta = with lib; {
     description = "Library to convert KML to GeoJSON";
diff --git a/pkgs/development/python-modules/knack/default.nix b/pkgs/development/python-modules/knack/default.nix
index 7932b49539915..f61fe242dac16 100644
--- a/pkgs/development/python-modules/knack/default.nix
+++ b/pkgs/development/python-modules/knack/default.nix
@@ -1,29 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, argcomplete
-, colorama
-, jmespath
-, pygments
-, pyyaml
-, six
-, tabulate
-, mock
-, vcrpy
-, pytest
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  argcomplete,
+  colorama,
+  jmespath,
+  pygments,
+  pyyaml,
+  six,
+  tabulate,
+  mock,
+  vcrpy,
+  pytest,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "knack";
-  version = "0.11.0";
+  version = "0.12.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-62VoAB6RELGzIJQUMcUQM9EEzJjNoiVKXCsJulaf1JQ=";
+    hash = "sha256-cfKmtCrpowLkMkMyD6Be2wmxkzn88fMx9bbQe/l/UpE=";
   };
 
   propagatedBuildInputs = [
@@ -46,16 +47,14 @@ buildPythonPackage rec {
     HOME=$TMPDIR pytest .
   '';
 
-  pythonImportsCheck = [
-    "knack"
-  ];
+  pythonImportsCheck = [ "knack" ];
 
   meta = with lib; {
     homepage = "https://github.com/microsoft/knack";
-    description = "A Command-Line Interface framework";
+    description = "Command-Line Interface framework";
     changelog = "https://github.com/microsoft/knack/blob/v${version}/HISTORY.rst";
     platforms = platforms.all;
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/kneed/default.nix b/pkgs/development/python-modules/kneed/default.nix
index 4510aaa1cac09..1148522ab5a80 100644
--- a/pkgs/development/python-modules/kneed/default.nix
+++ b/pkgs/development/python-modules/kneed/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, numpy
-, scipy
-, matplotlib
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  numpy,
+  scipy,
+  matplotlib,
+  pytestCheckHook,
+  pytest-cov-stub,
 }:
 
 buildPythonPackage rec {
   pname = "kneed";
   version = "0.8.5";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "arvkevi";
@@ -20,22 +22,16 @@ buildPythonPackage rec {
     sha256 = "sha256-oakP6NkdvTzMZcoXS6cKNsRo//K+CoPLlhvbQLGij00=";
   };
 
-  postPatch = ''
-    substituteInPlace pytest.ini \
-      --replace "--cov=kneed" ""
-  '';
+  build-system = [ hatchling ];
 
-  nativeBuildInputs = [
-    hatchling
-  ];
-
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
     scipy
   ];
 
   checkInputs = [
     pytestCheckHook
+    pytest-cov-stub
     matplotlib
   ];
 
diff --git a/pkgs/development/python-modules/knocki/default.nix b/pkgs/development/python-modules/knocki/default.nix
new file mode 100644
index 0000000000000..c5c5442fdfe77
--- /dev/null
+++ b/pkgs/development/python-modules/knocki/default.nix
@@ -0,0 +1,60 @@
+{
+  aiohttp,
+  aioresponses,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mashumaro,
+  orjson,
+  poetry-core,
+  pythonOlder,
+  pytestCheckHook,
+  pytest-aiohttp,
+  syrupy,
+  yarl,
+}:
+
+buildPythonPackage rec {
+  pname = "knocki";
+  version = "0.3.5";
+  pyproject = true;
+
+  disabled = pythonOlder "3.11";
+
+  src = fetchFromGitHub {
+    owner = "swan-solutions";
+    repo = "knocki-homeassistant";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-Fb3skFttY5gtm80k1LCUQ4Z7/TQGClCNcWt1k6bLQoI=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "addopts = \"--cov\"" ""
+  '';
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    aiohttp
+    mashumaro
+    orjson
+    yarl
+  ];
+
+  nativeCheckInputs = [
+    aioresponses
+    pytestCheckHook
+    pytest-aiohttp
+    syrupy
+  ];
+
+  pythonImportsCheck = [ "knocki" ];
+
+  meta = with lib; {
+    description = "Asynchronous Python client for Knocki vibration / door sensors";
+    homepage = "https://github.com/swan-solutions/knocki-homeassistant";
+    license = licenses.mit;
+    maintainers = with maintainers; [ mindstorms6 ];
+  };
+}
diff --git a/pkgs/development/python-modules/knx-frontend/default.nix b/pkgs/development/python-modules/knx-frontend/default.nix
index 6b6a1cff6700f..e7625b59a46ad 100644
--- a/pkgs/development/python-modules/knx-frontend/default.nix
+++ b/pkgs/development/python-modules/knx-frontend/default.nix
@@ -1,28 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "knx-frontend";
-  version = "2024.1.20.105944";
-  format = "pyproject";
+  version = "2024.9.10.221729";
+  pyproject = true;
 
   # TODO: source build, uses yarn.lock
   src = fetchPypi {
     pname = "knx_frontend";
     inherit version;
-    hash = "sha256-5u+BaZjbGpIpQd3k+u5NC099TQuiwGKdE/EoIWny01I=";
+    hash = "sha256-Imv4DcQCdT5iHIsDtxzLRwTWQqRgR4ASx/kdkmIbK6o=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [
-    "knx_frontend"
-  ];
+  pythonImportsCheck = [ "knx_frontend" ];
 
   # no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/kombu/default.nix b/pkgs/development/python-modules/kombu/default.nix
index a6867075d9b5e..696860862b11d 100644
--- a/pkgs/development/python-modules/kombu/default.nix
+++ b/pkgs/development/python-modules/kombu/default.nix
@@ -1,85 +1,68 @@
-{ lib
-, amqp
-, azure-identity
-, azure-servicebus
-, azure-storage-queue
-, backports-zoneinfo
-, boto3
-, buildPythonPackage
-, case
-, confluent-kafka
-, fetchPypi
-, hypothesis
-, kazoo
-, msgpack
-, pycurl
-, pymongo
+{
+  lib,
+  amqp,
+  azure-identity,
+  azure-servicebus,
+  azure-storage-queue,
+  backports-zoneinfo,
+  boto3,
+  buildPythonPackage,
+  confluent-kafka,
+  fetchPypi,
+  hypothesis,
+  kazoo,
+  msgpack,
+  pycurl,
+  pymongo,
   #, pyro4
-, pytest7CheckHook
-, pythonOlder
-, pyyaml
-, redis
-, sqlalchemy
-, typing-extensions
-, urllib3
-, vine
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  redis,
+  sqlalchemy,
+  typing-extensions,
+  urllib3,
+  vine,
 }:
 
 buildPythonPackage rec {
   pname = "kombu";
-  version = "5.3.5";
+  version = "5.4.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-MORw8aa0nHDcb20Tw+TMTheKpsRpzra81VZFOF/IS5M=";
+    hash = "sha256-7vVy3S/Z/GFLN1gOPK6v3Vr0bB7/Mef7qJE4zbQG8s8=";
   };
 
-  propagatedBuildInputs = [
-    amqp
-    vine
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    typing-extensions
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    backports-zoneinfo
-  ];
+  propagatedBuildInputs =
+    [
+      amqp
+      vine
+    ]
+    ++ lib.optionals (pythonOlder "3.10") [ typing-extensions ]
+    ++ lib.optionals (pythonOlder "3.9") [ backports-zoneinfo ];
 
-  passthru.optional-dependencies = {
-    msgpack = [
-      msgpack
-    ];
-    yaml = [
-      pyyaml
-    ];
-    redis = [
-      redis
-    ];
-    mongodb = [
-      pymongo
-    ];
+  optional-dependencies = {
+    msgpack = [ msgpack ];
+    yaml = [ pyyaml ];
+    redis = [ redis ];
+    mongodb = [ pymongo ];
     sqs = [
       boto3
       urllib3
       pycurl
     ];
-    zookeeper = [
-      kazoo
-    ];
-    sqlalchemy = [
-      sqlalchemy
-    ];
+    zookeeper = [ kazoo ];
+    sqlalchemy = [ sqlalchemy ];
     azurestoragequeues = [
       azure-identity
       azure-storage-queue
     ];
-    azureservicebus = [
-      azure-servicebus
-    ];
-    confluentkafka = [
-      confluent-kafka
-    ];
+    azureservicebus = [ azure-servicebus ];
+    confluentkafka = [ confluent-kafka ];
     # pyro4 doesn't suppport Python 3.11
     #pyro = [
     #  pyro4
@@ -87,14 +70,11 @@ buildPythonPackage rec {
   };
 
   nativeCheckInputs = [
-    case
     hypothesis
-    pytest7CheckHook
-  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+    pytestCheckHook
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
-  pythonImportsCheck = [
-    "kombu"
-  ];
+  pythonImportsCheck = [ "kombu" ];
 
   disabledTests = [
     # Disable pyro4 test
diff --git a/pkgs/development/python-modules/konnected/default.nix b/pkgs/development/python-modules/konnected/default.nix
index c279223a52685..e7d7055dfa7de 100644
--- a/pkgs/development/python-modules/konnected/default.nix
+++ b/pkgs/development/python-modules/konnected/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, aiohttp
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  aiohttp,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     sha256 = "b8b4e15c3228b01c9fad3651e09fea1654357ae8c333096e759a1b7d0eb4e789";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # no tests implemented
   doCheck = false;
diff --git a/pkgs/development/python-modules/korean-lunar-calendar/default.nix b/pkgs/development/python-modules/korean-lunar-calendar/default.nix
index e9c7431b47df7..98c04b0e66658 100644
--- a/pkgs/development/python-modules/korean-lunar-calendar/default.nix
+++ b/pkgs/development/python-modules/korean-lunar-calendar/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -18,7 +19,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "korean_lunar_calendar" ];
 
   meta = with lib; {
-    description = "A library to convert Korean lunar-calendar to Gregorian calendar.";
+    description = "Library to convert Korean lunar-calendar to Gregorian calendar";
     homepage = "https://github.com/usingsky/korean_lunar_calendar_py";
     license = licenses.mit;
     maintainers = [ maintainers.ris ];
diff --git a/pkgs/development/python-modules/kornia-rs/default.nix b/pkgs/development/python-modules/kornia-rs/default.nix
index 57aaa325d2b61..c1337f87f7fae 100644
--- a/pkgs/development/python-modules/kornia-rs/default.nix
+++ b/pkgs/development/python-modules/kornia-rs/default.nix
@@ -1,10 +1,13 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, rustPlatform
-, cmake
-, nasm
-, substituteAll
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  buildPythonPackage,
+  rustPlatform,
+  cmake,
+  nasm,
+  substituteAll,
+  libiconv,
 }:
 
 buildPythonPackage rec {
@@ -26,10 +29,10 @@ buildPythonPackage rec {
     nasm # Only for dependencies.
   ];
 
+  buildInputs = lib.optional stdenv.hostPlatform.isDarwin libiconv;
+
   cargoRoot = "py-kornia";
-  cargoDeps = rustPlatform.importCargoLock {
-    lockFile = ./Cargo.lock;
-  };
+  cargoDeps = rustPlatform.importCargoLock { lockFile = ./Cargo.lock; };
 
   # The path dependency doesn't vendor the dependencies correctly, so get kornia-rs from crates instead.
   patches = [
@@ -43,7 +46,10 @@ buildPythonPackage rec {
     cp ${./Cargo.lock} py-kornia/Cargo.lock
   '';
 
-  maturinBuildFlags = [ "-m" "py-kornia/Cargo.toml" ];
+  maturinBuildFlags = [
+    "-m"
+    "py-kornia/Cargo.toml"
+  ];
 
   dontUseCmakeConfigure = true; # We only want to use CMake to build some Rust dependencies.
 
diff --git a/pkgs/development/python-modules/kornia/default.nix b/pkgs/development/python-modules/kornia/default.nix
index 0663cfecea0cd..013ccbd9010fc 100644
--- a/pkgs/development/python-modules/kornia/default.nix
+++ b/pkgs/development/python-modules/kornia/default.nix
@@ -1,16 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, packaging
-, torch
-, kornia-rs
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  packaging,
+  setuptools,
+  torch,
+  kornia-rs,
 }:
 
 buildPythonPackage rec {
   pname = "kornia";
-  version = "0.7.2";
-  format = "pyproject";
+  version = "0.7.3";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -18,10 +20,12 @@ buildPythonPackage rec {
     owner = pname;
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-DmXttvKoLqny0mt3SUonidNxDkNX7N0LdTxy/H32R/4=";
+    hash = "sha256-iEg27b2JVLtAYLFncaSqIh5FyvmmitKAKP7Tl0WWNdk=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     kornia-rs
     packaging
     torch
@@ -44,13 +48,13 @@ buildPythonPackage rec {
     "kornia.utils"
   ];
 
-  doCheck = false;  # tests hang with no single test clearly responsible
+  doCheck = false; # tests hang with no single test clearly responsible
 
-  meta = with lib; {
-    homepage = "https://kornia.github.io/kornia";
+  meta = {
+    homepage = "https://kornia.readthedocs.io";
     changelog = "https://github.com/kornia/kornia/releases/tag/v${version}";
     description = "Differentiable computer vision library";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ bcdarwin ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ bcdarwin ];
   };
 }
diff --git a/pkgs/development/python-modules/kotsu/default.nix b/pkgs/development/python-modules/kotsu/default.nix
index f1f9389daf5b0..9add6e9733a38 100644
--- a/pkgs/development/python-modules/kotsu/default.nix
+++ b/pkgs/development/python-modules/kotsu/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pandas
-, typing-extensions
-, pytestCheckHook
-, pytest-mock
-, scikit-learn
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pandas,
+  typing-extensions,
+  pytestCheckHook,
+  pytest-mock,
+  scikit-learn,
 }:
 
 buildPythonPackage rec {
@@ -23,11 +24,12 @@ buildPythonPackage rec {
     hash = "sha256-V5OkgiLUTRNbNt6m94+aYUZd9Nw+/60LfhrqqdFhiUw=";
   };
 
-  patches = [
-    ./disable-pytest-coverage-flags.patch
-  ];
+  patches = [ ./disable-pytest-coverage-flags.patch ];
 
-  propagatedBuildInputs = [ pandas typing-extensions ];
+  propagatedBuildInputs = [
+    pandas
+    typing-extensions
+  ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/krakenex/default.nix b/pkgs/development/python-modules/krakenex/default.nix
index 59b0984e956bb..fb756b65ae64a 100644
--- a/pkgs/development/python-modules/krakenex/default.nix
+++ b/pkgs/development/python-modules/krakenex/default.nix
@@ -1,29 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "krakenex";
-  version = "2.2.1";
+  version = "2.2.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "veox";
     repo = "python3-krakenex";
     rev = "v${version}";
-    hash = "sha256-aWALkM79VOm2/EQdp2rD1sm0NxhLKZOXzAs8m+t7M0s=";
+    hash = "sha256-htldEds3vf9bjFkJAew0e0fHDLD15OTcVYybSmIp3DI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  dependencies = [ requests ];
 
   # no tests implemented
   doCheck = false;
diff --git a/pkgs/development/python-modules/krb5/default.nix b/pkgs/development/python-modules/krb5/default.nix
new file mode 100644
index 0000000000000..42c4537bff42e
--- /dev/null
+++ b/pkgs/development/python-modules/krb5/default.nix
@@ -0,0 +1,48 @@
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cython,
+  fetchPypi,
+  k5test,
+  krb5-c, # C krb5 library
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "krb5";
+  version = "0.6.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-cSugkvvjoo7BiCC7Gx7SzBA3t1xccDP5cMaoyXu9Egk=";
+  };
+
+  build-system = [
+    cython
+    setuptools
+  ];
+
+  nativeBuildInputs = [ krb5-c ];
+
+  nativeCheckInputs = [
+    k5test
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "krb5" ];
+
+  meta = with lib; {
+    changelog = "https://github.com/jborean93/pykrb5/blob/v${version}/CHANGELOG.md";
+    description = "Kerberos API bindings for Python";
+    homepage = "https://github.com/jborean93/pykrb5";
+    license = licenses.mit;
+    maintainers = teams.deshaw.members;
+    broken = stdenv.hostPlatform.isDarwin; # TODO: figure out how to build on Darwin
+  };
+}
diff --git a/pkgs/development/python-modules/krfzf-py/default.nix b/pkgs/development/python-modules/krfzf-py/default.nix
index d55334d21e8ce..d1007876591fb 100644
--- a/pkgs/development/python-modules/krfzf-py/default.nix
+++ b/pkgs/development/python-modules/krfzf-py/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
@@ -15,14 +16,12 @@ buildPythonPackage rec {
     hash = "sha256-/M9Atu9MLAGmnEdx6tknMJAit2o4Xt971uQ7pb0CBCk=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   pythonImportsCheck = [ "fzf" ];
 
   meta = with lib; {
-    description = "A Pythonic Fzf Wrapper";
+    description = "Pythonic Fzf Wrapper";
     downloadPage = "https://github.com/justfoolingaround/fzf.py";
     homepage = "https://pypi.org/project/krfzf-py/";
     license = licenses.gpl3Only;
diff --git a/pkgs/development/python-modules/kserve/default.nix b/pkgs/development/python-modules/kserve/default.nix
index 2bbfd3a807613..f4aa517c4ef8b 100644
--- a/pkgs/development/python-modules/kserve/default.nix
+++ b/pkgs/development/python-modules/kserve/default.nix
@@ -1,47 +1,60 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, deprecation
-, poetry-core
-, pythonRelaxDepsHook
-, async-timeout
-, cloudevents
-, fastapi
-, grpcio
-, httpx
-, kubernetes
-, numpy
-, orjson
-, pandas
-, prometheus-client
-, protobuf
-, psutil
-, python-dateutil
-, ray
-, six
-, tabulate
-, timing-asgi
-, uvicorn
-, avro
-, azure-storage-blob
-, azure-storage-file-share
-, boto3
-, botocore
-, google-cloud-storage
-, pytestCheckHook
-, tomlkit
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  deprecation,
+  poetry-core,
+
+  # dependencies
+  async-timeout,
+  cloudevents,
+  fastapi,
+  grpcio,
+  httpx,
+  kubernetes,
+  numpy,
+  orjson,
+  pandas,
+  prometheus-client,
+  protobuf,
+  psutil,
+  pydantic,
+  python-dateutil,
+  pyyaml,
+  ray,
+  six,
+  tabulate,
+  timing-asgi,
+  uvicorn,
+
+  # checks
+  avro,
+  azure-storage-blob,
+  azure-storage-file-share,
+  boto3,
+  botocore,
+  google-cloud-storage,
+  grpcio-testing,
+  pytest-asyncio,
+  pytestCheckHook,
+  tomlkit,
 }:
 
 buildPythonPackage rec {
   pname = "kserve";
-  version = "0.12.1";
+  version = "0.13.1";
   pyproject = true;
 
+  disabled = pythonOlder "3.8";
+
   src = fetchFromGitHub {
     owner = "kserve";
     repo = "kserve";
     rev = "refs/tags/v${version}";
-    hash = "sha256-gKJkG8zJY1sGGpI27YZ/QnEPU8J7KHva3nI+JCglQaQ=";
+    hash = "sha256-wGS001PK+k21oCOaQCiAtytTDjfe0aiTVJ9spyOucYA=";
   };
 
   sourceRoot = "${src.name}/python/kserve";
@@ -51,10 +64,6 @@ buildPythonPackage rec {
     poetry-core
   ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
-
   dependencies = [
     async-timeout
     cloudevents
@@ -68,13 +77,15 @@ buildPythonPackage rec {
     prometheus-client
     protobuf
     psutil
+    pydantic
     python-dateutil
+    pyyaml
     ray
     six
     tabulate
     timing-asgi
     uvicorn
-  ] ++ ray.passthru.optional-dependencies.serve-deps;
+  ] ++ ray.optional-dependencies.serve-deps;
 
   pythonRelaxDeps = [
     "fastapi"
@@ -83,6 +94,7 @@ buildPythonPackage rec {
     "protobuf"
     "ray"
     "uvicorn"
+    "psutil"
   ];
 
   pythonImportsCheck = [ "kserve" ];
@@ -94,6 +106,8 @@ buildPythonPackage rec {
     boto3
     botocore
     google-cloud-storage
+    grpcio-testing
+    pytest-asyncio
     pytestCheckHook
     tomlkit
   ];
@@ -110,10 +124,11 @@ buildPythonPackage rec {
     "test_infer_v2"
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Standardized Serverless ML Inference Platform on Kubernetes";
     homepage = "https://github.com/kserve/kserve/tree/master/python/kserve";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ GaetanLepage ];
+    changelog = "https://github.com/kserve/kserve/releases/tag/v${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/kubernetes/default.nix b/pkgs/development/python-modules/kubernetes/default.nix
index f5bf179d48db0..66a295dcc5a78 100644
--- a/pkgs/development/python-modules/kubernetes/default.nix
+++ b/pkgs/development/python-modules/kubernetes/default.nix
@@ -1,27 +1,27 @@
-{ lib
-, stdenv
-, adal
-, buildPythonPackage
-, certifi
-, fetchFromGitHub
-, google-auth
-, mock
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, pythonRelaxDepsHook
-, pyyaml
-, requests
-, requests-oauthlib
-, setuptools
-, six
-, urllib3
-, websocket-client
+{
+  lib,
+  stdenv,
+  adal,
+  buildPythonPackage,
+  certifi,
+  fetchFromGitHub,
+  google-auth,
+  mock,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  pyyaml,
+  requests,
+  requests-oauthlib,
+  setuptools,
+  six,
+  urllib3,
+  websocket-client,
 }:
 
 buildPythonPackage rec {
   pname = "kubernetes";
-  version = "29.0.0";
+  version = "30.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -30,20 +30,10 @@ buildPythonPackage rec {
     owner = "kubernetes-client";
     repo = "python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-KChfiXYnJTeIW6O7GaK/fMxU2quIvbjc4gB4aZBeTtI=";
+    hash = "sha256-zOooibXkk0iA6IYJViz+SIMgHwG0fr4WR3ZjhgIeUjE=";
   };
 
-  postPatch = ''
-    substituteInPlace kubernetes/base/config/kube_config_test.py \
-      --replace-fail "assertEquals" "assertEqual"
-  '';
-
-  pythonRelaxDeps = [
-    "urllib3"
-  ];
-
   build-system = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -59,22 +49,18 @@ buildPythonPackage rec {
     websocket-client
   ];
 
-  passthru.optional-dependencies = {
-    adal = [
-      adal
-    ];
+  optional-dependencies = {
+    adal = [ adal ];
   };
 
-  pythonImportsCheck = [
-    "kubernetes"
-  ];
+  pythonImportsCheck = [ "kubernetes" ];
 
   nativeCheckInputs = [
     mock
     pytestCheckHook
-  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+  ] ++ lib.flatten (builtins.attrValues optional-dependencies);
 
-  disabledTests = lib.optionals stdenv.isDarwin [
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
     # AssertionError: <class 'urllib3.poolmanager.ProxyManager'> != <class 'urllib3.poolmanager.Poolmanager'>
     "test_rest_proxycare"
   ];
diff --git a/pkgs/development/python-modules/kurbopy/default.nix b/pkgs/development/python-modules/kurbopy/default.nix
index e4665998534d3..3542fb60b2818 100644
--- a/pkgs/development/python-modules/kurbopy/default.nix
+++ b/pkgs/development/python-modules/kurbopy/default.nix
@@ -1,26 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fonttools
-, pytestCheckHook
-, python
-, rustPlatform
-, unzip
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fonttools,
+  pytestCheckHook,
+  rustPlatform,
 }:
 
 buildPythonPackage rec {
   pname = "kurbopy";
-  version = "0.10.40";
+  version = "0.11.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-dhpcDi20Na6SDbRxrC8N3SWdN1J/CWJgCUI3scJX/6s=";
+    hash = "sha256-0TIVx0YH5L8l6at1fcWkj2UZYK0aF1fahTu9/+7MWMI=";
   };
 
-  propagatedBuildInputs = [
-    fonttools
-  ];
+  propagatedBuildInputs = [ fonttools ];
   nativeBuildInputs = [
     rustPlatform.cargoSetupHook
     rustPlatform.maturinBuildHook
@@ -29,13 +26,11 @@ buildPythonPackage rec {
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-V3LeT0dqkfft1ftc+azwvuSzzdUJ7/wAp31fN7te9RQ=";
+    hash = "sha256-W0BebCXC1wqwtQP+zHjISxSJjXHD9U6p9eNS12Nfb2Y=";
   };
 
   doCheck = true;
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
   preCheck = ''
     # pytestCheckHook puts . at the front of Python's sys.path, due to:
     # https://github.com/NixOS/nixpkgs/issues/255262
diff --git a/pkgs/development/python-modules/l18n/default.nix b/pkgs/development/python-modules/l18n/default.nix
index 29c4164097f96..76491a4699ca2 100644
--- a/pkgs/development/python-modules/l18n/default.nix
+++ b/pkgs/development/python-modules/l18n/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
-, pytz
-, six
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  pytz,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -12,10 +13,13 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-GVbokNZz0XE1zCCRMlPBVPa8HAAmbCK31QPMGlpC2Eg=";
+    hash = "sha256-GVbokNZz0XE1zCCRMlPBVPa8HAAmbCK31QPMGlpC2Eg=";
   };
 
-  propagatedBuildInputs = [ pytz six ];
+  propagatedBuildInputs = [
+    pytz
+    six
+  ];
 
   # tests are not included in sdist and building from source is none trivial
   doCheck = false;
diff --git a/pkgs/development/python-modules/labelbox/default.nix b/pkgs/development/python-modules/labelbox/default.nix
index 98c7adcc8e11b..759923d78c233 100644
--- a/pkgs/development/python-modules/labelbox/default.nix
+++ b/pkgs/development/python-modules/labelbox/default.nix
@@ -1,33 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, geojson
-, google-api-core
-, imagesize
-, nbconvert
-, nbformat
-, numpy
-, opencv4
-, packaging
-, pillow
-, pydantic
-, pyproj
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
-, setuptools
-, shapely
-, strenum
-, tqdm
-, typeguard
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  geojson,
+  google-api-core,
+  hatchling,
+  imagesize,
+  mypy,
+  nbconvert,
+  nbformat,
+  numpy,
+  opencv4,
+  pillow,
+  pydantic,
+  pyproj,
+  pytest-cov-stub,
+  pytest-order,
+  pytest-rerunfailures,
+  pytest-xdist,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  requests,
+  shapely,
+  strenum,
+  tqdm,
+  typeguard,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "labelbox";
-  version = "3.67.0";
+  version = "4.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -36,29 +40,16 @@ buildPythonPackage rec {
     owner = "Labelbox";
     repo = "labelbox-python";
     rev = "refs/tags/v.${version}";
-    hash = "sha256-JQTjmYxPBS8JC4HQTtbQ7hb80LPLYE4OEj1lFA6cZ1Y=";
+    hash = "sha256-jIbSKT/jRWVyN2LH6Ih0VFc5QKICR7cYONzGpZ9bJvM=";
   };
 
-  postPatch = ''
-    substituteInPlace pytest.ini \
-      --replace-fail "--reruns 2 --reruns-delay 10 --durations=20 -n 10" ""
+  sourceRoot = "${src.name}/libs/labelbox";
 
-    # disable pytest_plugins which requires `pygeotile`
-    substituteInPlace tests/conftest.py \
-      --replace-fail "pytest_plugins" "_pytest_plugins"
-  '';
+  pythonRelaxDeps = [ "python-dateutil" ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
+  pythonRemoveDeps = [ "opencv-python-headless" ];
 
-  pythonRelaxDeps = [
-    "python-dateutil"
-  ];
-
-  build-system = [
-    setuptools
-  ];
+  build-system = [ hatchling ];
 
   dependencies = [
     google-api-core
@@ -67,12 +58,13 @@ buildPythonPackage rec {
     requests
     strenum
     tqdm
+    geojson
+    mypy
   ];
 
   optional-dependencies = {
     data = [
       shapely
-      geojson
       numpy
       pillow
       opencv4
@@ -81,13 +73,16 @@ buildPythonPackage rec {
       pyproj
       # pygeotile
       typing-extensions
-      packaging
     ];
   };
 
   nativeCheckInputs = [
     nbconvert
     nbformat
+    pytest-cov-stub
+    pytest-order
+    pytest-rerunfailures
+    pytest-xdist
     pytestCheckHook
   ] ++ optional-dependencies.data;
 
@@ -96,16 +91,15 @@ buildPythonPackage rec {
     "tests/integration"
     # Missing requirements
     "tests/data"
+    "tests/unit/test_label_data_type.py"
   ];
 
-  pythonImportsCheck = [
-    "labelbox"
-  ];
+  pythonImportsCheck = [ "labelbox" ];
 
   meta = with lib; {
     description = "Platform API for LabelBox";
     homepage = "https://github.com/Labelbox/labelbox-python";
-    changelog = "https://github.com/Labelbox/labelbox-python/blob/v.${version}/CHANGELOG.md";
+    changelog = "https://github.com/Labelbox/labelbox-python/releases/tag/v.${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ rakesh4g ];
   };
diff --git a/pkgs/development/python-modules/labgrid/default.nix b/pkgs/development/python-modules/labgrid/default.nix
index 31fc50197d20f..f37cbae31a333 100644
--- a/pkgs/development/python-modules/labgrid/default.nix
+++ b/pkgs/development/python-modules/labgrid/default.nix
@@ -1,56 +1,50 @@
-{ ansicolors
-, attrs
-, autobahn
-, buildPythonPackage
-, fetchFromGitHub
-, jinja2
-, lib
-, mock
-, openssh
-, packaging
-, pexpect
-, psutil
-, pyserial
-, pytestCheckHook
-, pytest-dependency
-, pytest-mock
-, pythonRelaxDepsHook
-, pyudev
-, pyusb
-, pyyaml
-, requests
-, setuptools
-, setuptools-scm
-, wheel
-, xmodem
+{
+  ansicolors,
+  attrs,
+  autobahn,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jinja2,
+  lib,
+  mock,
+  openssh,
+  pexpect,
+  psutil,
+  pyserial,
+  pytestCheckHook,
+  pytest-dependency,
+  pytest-mock,
+  pyudev,
+  pyusb,
+  pyyaml,
+  requests,
+  setuptools,
+  setuptools-scm,
+  xmodem,
 }:
 
 buildPythonPackage rec {
   pname = "labgrid";
-  version = "23.0.5";
+  version = "24.0.1";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "labgrid-project";
     repo = "labgrid";
     rev = "refs/tags/v${version}";
-    hash = "sha256-jrapbSrybuLT3V11rvV342tOr7/sRwBMgAdNWDG5obA=";
+    hash = "sha256-KZO6HeB1Kkc3r6OI0ZXIL1WvGLYL5SLxaOn+EX5akOE=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
+  build-system = [
     setuptools
     setuptools-scm
-    wheel
   ];
 
-  pyproject = true;
-
-  propagatedBuildInputs = [
+  dependencies = [
     ansicolors
     attrs
     autobahn
     jinja2
-    packaging
     pexpect
     pyserial
     pyudev
@@ -60,21 +54,9 @@ buildPythonPackage rec {
     xmodem
   ];
 
-  pythonRelaxDeps = [
-    "attrs"
-    "autobahn"
-    "jinja2"
-    "packaging"
-    "pexpect"
-    "pytest"
-    "pyudev"
-    "requests"
-    "xmodem"
-  ];
+  pythonRemoveDeps = [ "pyserial-labgrid" ];
 
-  pythonRemoveDeps = [
-    "pyserial-labgrid"
-  ];
+  pythonImportsCheck = [ "labgrid" ];
 
   nativeCheckInputs = [
     mock
@@ -85,9 +67,14 @@ buildPythonPackage rec {
     pytest-dependency
   ];
 
+  disabledtests = [
+    # flaky, timing sensitive
+    "test_timing"
+  ];
+
   meta = with lib; {
     description = "Embedded control & testing library";
-    homepage = "https://labgrid.org";
+    homepage = "https://github.com/labgrid-project/labgrid";
     license = licenses.lgpl21Plus;
     maintainers = with maintainers; [ emantor ];
     platforms = with platforms; linux;
diff --git a/pkgs/development/python-modules/labmath/default.nix b/pkgs/development/python-modules/labmath/default.nix
index 8ace5b3327e1d..b17fe6ed06983 100644
--- a/pkgs/development/python-modules/labmath/default.nix
+++ b/pkgs/development/python-modules/labmath/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-dzJ4szPxnck0Cgc5IEp5FBmHvIyAC0rqKRVrkt20ntQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   pythonImportsCheck = [ "labmath" ];
 
diff --git a/pkgs/development/python-modules/laces/default.nix b/pkgs/development/python-modules/laces/default.nix
index d29396658150b..9f5c74af83295 100644
--- a/pkgs/development/python-modules/laces/default.nix
+++ b/pkgs/development/python-modules/laces/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, django
-, fetchFromGitHub
-, flit-core
-, python3
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchFromGitHub,
+  flit-core,
 }:
 
 buildPythonPackage rec {
@@ -18,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-N3UUJomlihdM+6w9jmn9t10Q2meIqEOjW/rf3ZLrD78=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
   pythonImportsCheck = [ "laces" ];
 
diff --git a/pkgs/development/python-modules/lacuscore/default.nix b/pkgs/development/python-modules/lacuscore/default.nix
index d03376184bba4..a263fa60c1528 100644
--- a/pkgs/development/python-modules/lacuscore/default.nix
+++ b/pkgs/development/python-modules/lacuscore/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, defang
-, dnspython
-, fetchFromGitHub
-, playwrightcapture
-, poetry-core
-, pythonOlder
-, redis
-, requests
-, pythonRelaxDepsHook
-, sphinx
-, ua-parser
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  defang,
+  dnspython,
+  fetchFromGitHub,
+  playwrightcapture,
+  poetry-core,
+  pydantic,
+  pythonOlder,
+  redis,
+  requests,
+  sphinx,
+  ua-parser,
 }:
 
 buildPythonPackage rec {
   pname = "lacuscore";
-  version = "1.9.3";
+  version = "1.11.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,23 +26,24 @@ buildPythonPackage rec {
     owner = "ail-project";
     repo = "LacusCore";
     rev = "refs/tags/v${version}";
-    hash = "sha256-jfbDg74vHwOFvbOETPSaApFCpzw9Khu8PgGpsoAwSGc=";
+    hash = "sha256-O9nB+hxMrIJDeK6BrxmX/yr0OoIXxshKJxz9fU6b2V0=";
   };
 
   pythonRelaxDeps = [
+    "pydantic"
     "redis"
+    "requests"
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
+
 
-  propagatedBuildInputs = [
+  dependencies = [
     async-timeout
     defang
     dnspython
     playwrightcapture
+    pydantic
     redis
     requests
     sphinx
@@ -51,12 +53,10 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "lacuscore"
-  ];
+  pythonImportsCheck = [ "lacuscore" ];
 
   meta = with lib; {
-    description = "The modulable part of Lacus";
+    description = "Modulable part of Lacus";
     homepage = "https://github.com/ail-project/LacusCore";
     changelog = "https://github.com/ail-project/LacusCore/releases/tag/v${version}";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/lakeside/default.nix b/pkgs/development/python-modules/lakeside/default.nix
index bb33367d9647f..37e0444bd66c4 100644
--- a/pkgs/development/python-modules/lakeside/default.nix
+++ b/pkgs/development/python-modules/lakeside/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, protobuf
-, pycryptodome
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  protobuf,
+  pycryptodome,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "lakeside"
-  ];
+  pythonImportsCheck = [ "lakeside" ];
 
   meta = with lib; {
     description = "Library for controlling LED bulbs from Eufy";
diff --git a/pkgs/development/python-modules/lammps/default.nix b/pkgs/development/python-modules/lammps/default.nix
new file mode 100644
index 0000000000000..b9e0f45402d0b
--- /dev/null
+++ b/pkgs/development/python-modules/lammps/default.nix
@@ -0,0 +1,46 @@
+{
+  lib,
+  lammps,
+  stdenv,
+  buildPythonPackage,
+}:
+
+let
+  LAMMPS_SHARED_LIB = "${lib.getLib lammps}/lib/liblammps${stdenv.hostPlatform.extensions.library}";
+in
+buildPythonPackage {
+  inherit (lammps) pname version src;
+
+  env = {
+    inherit LAMMPS_SHARED_LIB;
+  };
+  preConfigure = ''
+    cd python
+    # Upstream assumes that the shared library is located in the same directory
+    # as the core.py file. We want to separate the shared library (built by
+    # cmake) and the Python library, so we perform this substitution:
+    substituteInPlace lammps/core.py \
+      --replace-fail \
+        "from inspect import getsourcefile" \
+        "getsourcefile = lambda f: \"${LAMMPS_SHARED_LIB}\""
+  '';
+
+  pythonImportsCheck = [
+    "lammps"
+    "lammps.pylammps"
+  ];
+
+  # We could potentially run other examples, but some of them are so old that
+  # they don't run with nowadays' LAMMPS. This one is simple enough and recent
+  # enough and it works.
+  checkPhase = ''
+    python examples/mc.py examples/in.mc
+  '';
+
+  meta = {
+    description = "Python Bindings for LAMMPS";
+    homepage = "https://docs.lammps.org/Python_head.html";
+    inherit (lammps.meta) license;
+    maintainers = with lib.maintainers; [ doronbehar ];
+  };
+}
diff --git a/pkgs/development/python-modules/lancedb/Cargo.lock b/pkgs/development/python-modules/lancedb/Cargo.lock
new file mode 100644
index 0000000000000..9fd06f89770b6
--- /dev/null
+++ b/pkgs/development/python-modules/lancedb/Cargo.lock
@@ -0,0 +1,7787 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "addr2line"
+version = "0.24.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375"
+dependencies = [
+ "gimli",
+]
+
+[[package]]
+name = "adler2"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
+
+[[package]]
+name = "ahash"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
+dependencies = [
+ "cfg-if",
+ "const-random",
+ "getrandom",
+ "once_cell",
+ "version_check",
+ "zerocopy",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "alloc-no-stdlib"
+version = "2.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
+
+[[package]]
+name = "alloc-stdlib"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
+dependencies = [
+ "alloc-no-stdlib",
+]
+
+[[package]]
+name = "allocator-api2"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
+
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "anstream"
+version = "0.6.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "is_terminal_polyfill",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-query"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "3.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8"
+dependencies = [
+ "anstyle",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.88"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e1496f8fb1fbf272686b8d37f523dab3e4a7443300055e74cdaa449f3114356"
+
+[[package]]
+name = "arbitrary"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110"
+dependencies = [
+ "derive_arbitrary",
+]
+
+[[package]]
+name = "arc-swap"
+version = "1.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
+
+[[package]]
+name = "argminmax"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52424b59d69d69d5056d508b260553afd91c57e21849579cd1f50ee8b8b88eaa"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "array-init-cursor"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf7d0a018de4f6aa429b9d33d69edf69072b1c5b1cb8d3e4a5f7ef898fc3eb76"
+
+[[package]]
+name = "arrow"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05048a8932648b63f21c37d88b552ccc8a65afb6dfe9fc9f30ce79174c2e7a85"
+dependencies = [
+ "arrow-arith",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-cast",
+ "arrow-csv",
+ "arrow-data",
+ "arrow-ipc",
+ "arrow-json",
+ "arrow-ord",
+ "arrow-row",
+ "arrow-schema",
+ "arrow-select",
+ "arrow-string",
+ "pyo3",
+]
+
+[[package]]
+name = "arrow-arith"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d8a57966e43bfe9a3277984a14c24ec617ad874e4c0e1d2a1b083a39cfbf22c"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "chrono",
+ "half",
+ "num",
+]
+
+[[package]]
+name = "arrow-array"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16f4a9468c882dc66862cef4e1fd8423d47e67972377d85d80e022786427768c"
+dependencies = [
+ "ahash",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "chrono",
+ "chrono-tz 0.9.0",
+ "half",
+ "hashbrown 0.14.5",
+ "num",
+]
+
+[[package]]
+name = "arrow-buffer"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c975484888fc95ec4a632cdc98be39c085b1bb518531b0c80c5d462063e5daa1"
+dependencies = [
+ "bytes",
+ "half",
+ "num",
+]
+
+[[package]]
+name = "arrow-cast"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da26719e76b81d8bc3faad1d4dbdc1bcc10d14704e63dc17fc9f3e7e1e567c8e"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "arrow-select",
+ "atoi",
+ "base64 0.22.1",
+ "chrono",
+ "comfy-table",
+ "half",
+ "lexical-core",
+ "num",
+ "ryu",
+]
+
+[[package]]
+name = "arrow-csv"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c13c36dc5ddf8c128df19bab27898eea64bf9da2b555ec1cd17a8ff57fba9ec2"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-cast",
+ "arrow-data",
+ "arrow-schema",
+ "chrono",
+ "csv",
+ "csv-core",
+ "lazy_static",
+ "lexical-core",
+ "regex",
+]
+
+[[package]]
+name = "arrow-data"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd9d6f18c65ef7a2573ab498c374d8ae364b4a4edf67105357491c031f716ca5"
+dependencies = [
+ "arrow-buffer",
+ "arrow-schema",
+ "half",
+ "num",
+]
+
+[[package]]
+name = "arrow-ipc"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e786e1cdd952205d9a8afc69397b317cfbb6e0095e445c69cda7e8da5c1eeb0f"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-cast",
+ "arrow-data",
+ "arrow-schema",
+ "flatbuffers",
+ "lz4_flex",
+ "zstd",
+]
+
+[[package]]
+name = "arrow-json"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb22284c5a2a01d73cebfd88a33511a3234ab45d66086b2ca2d1228c3498e445"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-cast",
+ "arrow-data",
+ "arrow-schema",
+ "chrono",
+ "half",
+ "indexmap 2.5.0",
+ "lexical-core",
+ "num",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "arrow-ord"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42745f86b1ab99ef96d1c0bcf49180848a64fe2c7a7a0d945bc64fa2b21ba9bc"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "arrow-select",
+ "half",
+ "num",
+]
+
+[[package]]
+name = "arrow-row"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4cd09a518c602a55bd406bcc291a967b284cfa7a63edfbf8b897ea4748aad23c"
+dependencies = [
+ "ahash",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "half",
+]
+
+[[package]]
+name = "arrow-schema"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e972cd1ff4a4ccd22f86d3e53e835c2ed92e0eea6a3e8eadb72b4f1ac802cf8"
+dependencies = [
+ "bitflags 2.6.0",
+]
+
+[[package]]
+name = "arrow-select"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "600bae05d43483d216fb3494f8c32fdbefd8aa4e1de237e790dbb3d9f44690a3"
+dependencies = [
+ "ahash",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "num",
+]
+
+[[package]]
+name = "arrow-string"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0dc1985b67cb45f6606a248ac2b4a288849f196bab8c657ea5589f47cdd55e6"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "arrow-select",
+ "memchr",
+ "num",
+ "regex",
+ "regex-syntax",
+]
+
+[[package]]
+name = "async-compression"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa"
+dependencies = [
+ "flate2",
+ "futures-core",
+ "memchr",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "async-convert"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d416feee97712e43152cd42874de162b8f9b77295b1c85e5d92725cc8310bae"
+dependencies = [
+ "async-trait",
+]
+
+[[package]]
+name = "async-io"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af"
+dependencies = [
+ "async-lock",
+ "autocfg",
+ "cfg-if",
+ "concurrent-queue",
+ "futures-lite",
+ "log",
+ "parking",
+ "polling",
+ "rustix 0.37.27",
+ "slab",
+ "socket2 0.4.10",
+ "waker-fn",
+]
+
+[[package]]
+name = "async-lock"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b"
+dependencies = [
+ "event-listener 2.5.3",
+]
+
+[[package]]
+name = "async-openai"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "11e97f9c5e0ee3260caee9700ba1bb61a6fdc34d2b6786a31e018c5de5198491"
+dependencies = [
+ "async-convert",
+ "backoff",
+ "base64 0.22.1",
+ "bytes",
+ "derive_builder",
+ "futures",
+ "rand",
+ "reqwest 0.12.7",
+ "reqwest-eventsource",
+ "secrecy",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "tokio",
+ "tokio-stream",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "async-priority-channel"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acde96f444d31031f760c5c43dc786b97d3e1cb2ee49dd06898383fe9a999758"
+dependencies = [
+ "event-listener 4.0.3",
+]
+
+[[package]]
+name = "async-recursion"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "async-trait"
+version = "0.1.82"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "async_cell"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "834eee9ce518130a3b4d5af09ecc43e9d6b57ee76613f227a1ddd6b77c7a62bc"
+
+[[package]]
+name = "atoi"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "atoi_simd"
+version = "0.15.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ae037714f313c1353189ead58ef9eec30a8e8dc101b2622d461418fd59e28a9"
+
+[[package]]
+name = "atomic-waker"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
+
+[[package]]
+name = "autocfg"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
+
+[[package]]
+name = "aws-config"
+version = "1.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "848d7b9b605720989929279fa644ce8f244d0ce3146fcca5b70e4eb7b3c020fc"
+dependencies = [
+ "aws-credential-types",
+ "aws-runtime",
+ "aws-sdk-sso",
+ "aws-sdk-ssooidc",
+ "aws-sdk-sts",
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-json",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-types",
+ "bytes",
+ "fastrand 2.1.1",
+ "hex",
+ "http 0.2.12",
+ "ring",
+ "time",
+ "tokio",
+ "tracing",
+ "url",
+ "zeroize",
+]
+
+[[package]]
+name = "aws-credential-types"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60e8f6b615cb5fc60a98132268508ad104310f0cfb25a1c22eee76efdf9154da"
+dependencies = [
+ "aws-smithy-async",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "zeroize",
+]
+
+[[package]]
+name = "aws-runtime"
+version = "1.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a10d5c055aa540164d9561a0e2e74ad30f0dcf7393c3a92f6733ddf9c5762468"
+dependencies = [
+ "aws-credential-types",
+ "aws-sigv4",
+ "aws-smithy-async",
+ "aws-smithy-eventstream",
+ "aws-smithy-http",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-types",
+ "bytes",
+ "fastrand 2.1.1",
+ "http 0.2.12",
+ "http-body 0.4.6",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "tracing",
+ "uuid",
+]
+
+[[package]]
+name = "aws-sdk-dynamodb"
+version = "1.45.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7f3d9e807092149e3df266e3f4d9760dac439b90f82d8438e5b2c0bbe62007f"
+dependencies = [
+ "aws-credential-types",
+ "aws-runtime",
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-json",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-types",
+ "bytes",
+ "fastrand 2.1.1",
+ "http 0.2.12",
+ "once_cell",
+ "regex-lite",
+ "tracing",
+]
+
+[[package]]
+name = "aws-sdk-kms"
+version = "1.43.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9f7cb482caa5444d445c94417b9c74e49a849beb09ede4f2f4c3c15f8157387"
+dependencies = [
+ "aws-credential-types",
+ "aws-runtime",
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-json",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-types",
+ "bytes",
+ "http 0.2.12",
+ "once_cell",
+ "regex-lite",
+ "tracing",
+]
+
+[[package]]
+name = "aws-sdk-s3"
+version = "1.49.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e518950d4ac43508c8bfc2fe4e24b0752d99eab80134461d5e162dcda0214b55"
+dependencies = [
+ "ahash",
+ "aws-credential-types",
+ "aws-runtime",
+ "aws-sigv4",
+ "aws-smithy-async",
+ "aws-smithy-checksums",
+ "aws-smithy-eventstream",
+ "aws-smithy-http",
+ "aws-smithy-json",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-smithy-xml",
+ "aws-types",
+ "bytes",
+ "fastrand 2.1.1",
+ "hex",
+ "hmac",
+ "http 0.2.12",
+ "http-body 0.4.6",
+ "lru",
+ "once_cell",
+ "percent-encoding",
+ "regex-lite",
+ "sha2",
+ "tracing",
+ "url",
+]
+
+[[package]]
+name = "aws-sdk-sso"
+version = "1.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "27bf24cd0d389daa923e974b0e7c38daf308fc21e963c049f57980235017175e"
+dependencies = [
+ "aws-credential-types",
+ "aws-runtime",
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-json",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-types",
+ "bytes",
+ "http 0.2.12",
+ "once_cell",
+ "regex-lite",
+ "tracing",
+]
+
+[[package]]
+name = "aws-sdk-ssooidc"
+version = "1.43.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b43b3220f1c46ac0e9dcc0a97d94b93305dacb36d1dd393996300c6b9b74364"
+dependencies = [
+ "aws-credential-types",
+ "aws-runtime",
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-json",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-types",
+ "bytes",
+ "http 0.2.12",
+ "once_cell",
+ "regex-lite",
+ "tracing",
+]
+
+[[package]]
+name = "aws-sdk-sts"
+version = "1.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1c46924fb1add65bba55636e12812cae2febf68c0f37361766f627ddcca91ce"
+dependencies = [
+ "aws-credential-types",
+ "aws-runtime",
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-json",
+ "aws-smithy-query",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-smithy-xml",
+ "aws-types",
+ "http 0.2.12",
+ "once_cell",
+ "regex-lite",
+ "tracing",
+]
+
+[[package]]
+name = "aws-sigv4"
+version = "1.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc8db6904450bafe7473c6ca9123f88cc11089e41a025408f992db4e22d3be68"
+dependencies = [
+ "aws-credential-types",
+ "aws-smithy-eventstream",
+ "aws-smithy-http",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "bytes",
+ "crypto-bigint 0.5.5",
+ "form_urlencoded",
+ "hex",
+ "hmac",
+ "http 0.2.12",
+ "http 1.1.0",
+ "once_cell",
+ "p256",
+ "percent-encoding",
+ "ring",
+ "sha2",
+ "subtle",
+ "time",
+ "tracing",
+ "zeroize",
+]
+
+[[package]]
+name = "aws-smithy-async"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62220bc6e97f946ddd51b5f1361f78996e704677afc518a4ff66b7a72ea1378c"
+dependencies = [
+ "futures-util",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "aws-smithy-checksums"
+version = "0.60.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "598b1689d001c4d4dc3cb386adb07d37786783aee3ac4b324bcadac116bf3d23"
+dependencies = [
+ "aws-smithy-http",
+ "aws-smithy-types",
+ "bytes",
+ "crc32c",
+ "crc32fast",
+ "hex",
+ "http 0.2.12",
+ "http-body 0.4.6",
+ "md-5",
+ "pin-project-lite",
+ "sha1",
+ "sha2",
+ "tracing",
+]
+
+[[package]]
+name = "aws-smithy-eventstream"
+version = "0.60.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cef7d0a272725f87e51ba2bf89f8c21e4df61b9e49ae1ac367a6d69916ef7c90"
+dependencies = [
+ "aws-smithy-types",
+ "bytes",
+ "crc32fast",
+]
+
+[[package]]
+name = "aws-smithy-http"
+version = "0.60.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c8bc3e8fdc6b8d07d976e301c02fe553f72a39b7a9fea820e023268467d7ab6"
+dependencies = [
+ "aws-smithy-eventstream",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "bytes",
+ "bytes-utils",
+ "futures-core",
+ "http 0.2.12",
+ "http-body 0.4.6",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "pin-utils",
+ "tracing",
+]
+
+[[package]]
+name = "aws-smithy-json"
+version = "0.60.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4683df9469ef09468dad3473d129960119a0d3593617542b7d52086c8486f2d6"
+dependencies = [
+ "aws-smithy-types",
+]
+
+[[package]]
+name = "aws-smithy-query"
+version = "0.60.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2fbd61ceb3fe8a1cb7352e42689cec5335833cd9f94103a61e98f9bb61c64bb"
+dependencies = [
+ "aws-smithy-types",
+ "urlencoding",
+]
+
+[[package]]
+name = "aws-smithy-runtime"
+version = "1.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1ce695746394772e7000b39fe073095db6d45a862d0767dd5ad0ac0d7f8eb87"
+dependencies = [
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "bytes",
+ "fastrand 2.1.1",
+ "h2 0.3.26",
+ "http 0.2.12",
+ "http-body 0.4.6",
+ "http-body 1.0.1",
+ "httparse",
+ "hyper 0.14.30",
+ "hyper-rustls 0.24.2",
+ "once_cell",
+ "pin-project-lite",
+ "pin-utils",
+ "rustls 0.21.12",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "aws-smithy-runtime-api"
+version = "1.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e086682a53d3aa241192aa110fa8dfce98f2f5ac2ead0de84d41582c7e8fdb96"
+dependencies = [
+ "aws-smithy-async",
+ "aws-smithy-types",
+ "bytes",
+ "http 0.2.12",
+ "http 1.1.0",
+ "pin-project-lite",
+ "tokio",
+ "tracing",
+ "zeroize",
+]
+
+[[package]]
+name = "aws-smithy-types"
+version = "1.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03701449087215b5369c7ea17fef0dd5d24cb93439ec5af0c7615f58c3f22605"
+dependencies = [
+ "base64-simd",
+ "bytes",
+ "bytes-utils",
+ "futures-core",
+ "http 0.2.12",
+ "http 1.1.0",
+ "http-body 0.4.6",
+ "http-body 1.0.1",
+ "http-body-util",
+ "itoa",
+ "num-integer",
+ "pin-project-lite",
+ "pin-utils",
+ "ryu",
+ "serde",
+ "time",
+ "tokio",
+ "tokio-util",
+]
+
+[[package]]
+name = "aws-smithy-xml"
+version = "0.60.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab0b0166827aa700d3dc519f72f8b3a91c35d0b8d042dc5d643a91e6f80648fc"
+dependencies = [
+ "xmlparser",
+]
+
+[[package]]
+name = "aws-types"
+version = "1.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5221b91b3e441e6675310829fd8984801b772cb1546ef6c0e54dec9f1ac13fef"
+dependencies = [
+ "aws-credential-types",
+ "aws-smithy-async",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "rustc_version",
+ "tracing",
+]
+
+[[package]]
+name = "backoff"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1"
+dependencies = [
+ "futures-core",
+ "getrandom",
+ "instant",
+ "pin-project-lite",
+ "rand",
+ "tokio",
+]
+
+[[package]]
+name = "backtrace"
+version = "0.3.74"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a"
+dependencies = [
+ "addr2line",
+ "cfg-if",
+ "libc",
+ "miniz_oxide",
+ "object",
+ "rustc-demangle",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "base16ct"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
+
+[[package]]
+name = "base64"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+
+[[package]]
+name = "base64"
+version = "0.21.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
+
+[[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+
+[[package]]
+name = "base64-simd"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195"
+dependencies = [
+ "outref",
+ "vsimd",
+]
+
+[[package]]
+name = "base64ct"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
+
+[[package]]
+name = "bit-set"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1"
+dependencies = [
+ "bit-vec",
+]
+
+[[package]]
+name = "bit-vec"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
+
+[[package]]
+name = "bitpacking"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c1d3e2bfd8d06048a179f7b17afc3188effa10385e7b00dc65af6aae732ea92"
+dependencies = [
+ "crunchy",
+]
+
+[[package]]
+name = "bitvec"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c"
+dependencies = [
+ "funty",
+ "radium",
+ "tap",
+ "wyz",
+]
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "brotli"
+version = "3.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d640d25bc63c50fb1f0b545ffd80207d2e10a4c965530809b40ba3386825c391"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+ "brotli-decompressor",
+]
+
+[[package]]
+name = "brotli-decompressor"
+version = "2.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
+
+[[package]]
+name = "bytecount"
+version = "0.6.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce"
+
+[[package]]
+name = "bytemuck"
+version = "1.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae"
+dependencies = [
+ "bytemuck_derive",
+]
+
+[[package]]
+name = "bytemuck_derive"
+version = "1.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "bytes"
+version = "1.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50"
+
+[[package]]
+name = "bytes-utils"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35"
+dependencies = [
+ "bytes",
+ "either",
+]
+
+[[package]]
+name = "camino"
+version = "1.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "candle-core"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d5b18de020c2729dbf7ac390325312644808b6ba9b7962f1f724e9185b1d53c7"
+dependencies = [
+ "byteorder",
+ "gemm",
+ "half",
+ "memmap2 0.9.4",
+ "num-traits",
+ "num_cpus",
+ "rand",
+ "rand_distr",
+ "rayon",
+ "safetensors",
+ "thiserror",
+ "yoke",
+ "zip",
+]
+
+[[package]]
+name = "candle-nn"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b006b30f66a0d94fc9cef0ac4de6ce510565f35ae2c6c35ce5d4aacfb0fc8eeb"
+dependencies = [
+ "candle-core",
+ "half",
+ "num-traits",
+ "rayon",
+ "safetensors",
+ "serde",
+ "thiserror",
+]
+
+[[package]]
+name = "candle-transformers"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f0d4eb6a0d9279d5829b06b2bf3caa117904eefd6dcf879d16e687c4a84034c"
+dependencies = [
+ "byteorder",
+ "candle-core",
+ "candle-nn",
+ "fancy-regex",
+ "num-traits",
+ "rand",
+ "rayon",
+ "serde",
+ "serde_json",
+ "serde_plain",
+ "tracing",
+]
+
+[[package]]
+name = "cargo-platform"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cargo_metadata"
+version = "0.14.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa"
+dependencies = [
+ "camino",
+ "cargo-platform",
+ "semver 1.0.23",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "cc"
+version = "1.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476"
+dependencies = [
+ "jobserver",
+ "libc",
+ "shlex",
+]
+
+[[package]]
+name = "census"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f4c707c6a209cbe82d10abd08e1ea8995e9ea937d2550646e02798948992be0"
+
+[[package]]
+name = "cesu8"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "chrono"
+version = "0.4.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
+dependencies = [
+ "android-tzdata",
+ "iana-time-zone",
+ "js-sys",
+ "num-traits",
+ "serde",
+ "wasm-bindgen",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "chrono-tz"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d59ae0466b83e838b81a54256c39d5d7c20b9d7daa10510a242d9b75abd5936e"
+dependencies = [
+ "chrono",
+ "chrono-tz-build 0.2.1",
+ "phf",
+]
+
+[[package]]
+name = "chrono-tz"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93698b29de5e97ad0ae26447b344c482a7284c737d9ddc5f9e52b74a336671bb"
+dependencies = [
+ "chrono",
+ "chrono-tz-build 0.3.0",
+ "phf",
+]
+
+[[package]]
+name = "chrono-tz-build"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "433e39f13c9a060046954e0592a8d0a4bcb1040125cbf91cb8ee58964cfb350f"
+dependencies = [
+ "parse-zoneinfo",
+ "phf",
+ "phf_codegen",
+]
+
+[[package]]
+name = "chrono-tz-build"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c088aee841df9c3041febbb73934cfc39708749bf96dc827e3359cd39ef11b1"
+dependencies = [
+ "parse-zoneinfo",
+ "phf",
+ "phf_codegen",
+]
+
+[[package]]
+name = "colorchoice"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0"
+
+[[package]]
+name = "combine"
+version = "4.6.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd"
+dependencies = [
+ "bytes",
+ "memchr",
+]
+
+[[package]]
+name = "comfy-table"
+version = "7.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b34115915337defe99b2aff5c2ce6771e5fbc4079f4b506301f5cf394c8452f7"
+dependencies = [
+ "crossterm",
+ "strum",
+ "strum_macros 0.26.4",
+ "unicode-width",
+]
+
+[[package]]
+name = "concurrent-queue"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "console"
+version = "0.15.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb"
+dependencies = [
+ "encode_unicode",
+ "lazy_static",
+ "libc",
+ "unicode-width",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "const-oid"
+version = "0.9.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
+
+[[package]]
+name = "const-random"
+version = "0.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359"
+dependencies = [
+ "const-random-macro",
+]
+
+[[package]]
+name = "const-random-macro"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e"
+dependencies = [
+ "getrandom",
+ "once_cell",
+ "tiny-keccak",
+]
+
+[[package]]
+name = "conv"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ff10625fd0ac447827aa30ea8b861fead473bb60aeb73af6c1c58caf0d1299"
+dependencies = [
+ "custom_derive",
+]
+
+[[package]]
+name = "convert_case"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"
+dependencies = [
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "core-foundation"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crc32c"
+version = "0.6.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a47af21622d091a8f0fb295b88bc886ac74efcc613efc19f5d0b21de5c89e47"
+dependencies = [
+ "rustc_version",
+]
+
+[[package]]
+name = "crc32fast"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
+dependencies = [
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-queue"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
+
+[[package]]
+name = "crossterm"
+version = "0.27.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df"
+dependencies = [
+ "bitflags 2.6.0",
+ "crossterm_winapi",
+ "libc",
+ "parking_lot",
+ "winapi",
+]
+
+[[package]]
+name = "crossterm_winapi"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "crunchy"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
+
+[[package]]
+name = "crypto-bigint"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef"
+dependencies = [
+ "generic-array",
+ "rand_core",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "crypto-bigint"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76"
+dependencies = [
+ "rand_core",
+ "subtle",
+]
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
+name = "csv"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe"
+dependencies = [
+ "csv-core",
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "csv-core"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "ctor"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f"
+dependencies = [
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "custom_derive"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9"
+
+[[package]]
+name = "darling"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"
+dependencies = [
+ "darling_core",
+ "darling_macro",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
+dependencies = [
+ "darling_core",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "dashmap"
+version = "5.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
+dependencies = [
+ "cfg-if",
+ "hashbrown 0.14.5",
+ "lock_api",
+ "once_cell",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "datafusion"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab9d55a9cd2634818953809f75ebe5248b00dd43c3227efb2a51a2d5feaad54e"
+dependencies = [
+ "ahash",
+ "arrow",
+ "arrow-array",
+ "arrow-ipc",
+ "arrow-schema",
+ "async-trait",
+ "bytes",
+ "chrono",
+ "dashmap",
+ "datafusion-common",
+ "datafusion-common-runtime",
+ "datafusion-execution",
+ "datafusion-expr",
+ "datafusion-functions",
+ "datafusion-functions-aggregate",
+ "datafusion-functions-array",
+ "datafusion-optimizer",
+ "datafusion-physical-expr",
+ "datafusion-physical-expr-common",
+ "datafusion-physical-plan",
+ "datafusion-sql",
+ "futures",
+ "glob",
+ "half",
+ "hashbrown 0.14.5",
+ "indexmap 2.5.0",
+ "itertools 0.12.1",
+ "log",
+ "num_cpus",
+ "object_store",
+ "parking_lot",
+ "paste",
+ "pin-project-lite",
+ "rand",
+ "sqlparser 0.47.0",
+ "tempfile",
+ "tokio",
+ "url",
+ "uuid",
+]
+
+[[package]]
+name = "datafusion-common"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "def66b642959e7f96f5d2da22e1f43d3bd35598f821e5ce351a0553e0f1b7367"
+dependencies = [
+ "ahash",
+ "arrow",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-schema",
+ "chrono",
+ "half",
+ "hashbrown 0.14.5",
+ "instant",
+ "libc",
+ "num_cpus",
+ "object_store",
+ "sqlparser 0.47.0",
+]
+
+[[package]]
+name = "datafusion-common-runtime"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f104bb9cb44c06c9badf8a0d7e0855e5f7fa5e395b887d7f835e8a9457dc1352"
+dependencies = [
+ "tokio",
+]
+
+[[package]]
+name = "datafusion-execution"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ac0fd8b5d80bbca3fc3b6f40da4e9f6907354824ec3b18bbd83fee8cf5c3c3e"
+dependencies = [
+ "arrow",
+ "chrono",
+ "dashmap",
+ "datafusion-common",
+ "datafusion-expr",
+ "futures",
+ "hashbrown 0.14.5",
+ "log",
+ "object_store",
+ "parking_lot",
+ "rand",
+ "tempfile",
+ "url",
+]
+
+[[package]]
+name = "datafusion-expr"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2103d2cc16fb11ef1fa993a6cac57ed5cb028601db4b97566c90e5fa77aa1e68"
+dependencies = [
+ "ahash",
+ "arrow",
+ "arrow-array",
+ "arrow-buffer",
+ "chrono",
+ "datafusion-common",
+ "paste",
+ "serde_json",
+ "sqlparser 0.47.0",
+ "strum",
+ "strum_macros 0.26.4",
+]
+
+[[package]]
+name = "datafusion-functions"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a369332afd0ef5bd565f6db2139fb9f1dfdd0afa75a7f70f000b74208d76994f"
+dependencies = [
+ "arrow",
+ "base64 0.22.1",
+ "chrono",
+ "datafusion-common",
+ "datafusion-execution",
+ "datafusion-expr",
+ "hashbrown 0.14.5",
+ "hex",
+ "itertools 0.12.1",
+ "log",
+ "rand",
+ "regex",
+ "unicode-segmentation",
+ "uuid",
+]
+
+[[package]]
+name = "datafusion-functions-aggregate"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92718db1aff70c47e5abf9fc975768530097059e5db7c7b78cd64b5e9a11fc77"
+dependencies = [
+ "ahash",
+ "arrow",
+ "arrow-schema",
+ "datafusion-common",
+ "datafusion-execution",
+ "datafusion-expr",
+ "datafusion-physical-expr-common",
+ "log",
+ "paste",
+ "sqlparser 0.47.0",
+]
+
+[[package]]
+name = "datafusion-functions-array"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30bb80f46ff3dcf4bb4510209c2ba9b8ce1b716ac8b7bf70c6bf7dca6260c831"
+dependencies = [
+ "arrow",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-ord",
+ "arrow-schema",
+ "datafusion-common",
+ "datafusion-execution",
+ "datafusion-expr",
+ "datafusion-functions",
+ "datafusion-functions-aggregate",
+ "itertools 0.12.1",
+ "log",
+ "paste",
+]
+
+[[package]]
+name = "datafusion-optimizer"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82f34692011bec4fdd6fc18c264bf8037b8625d801e6dd8f5111af15cb6d71d3"
+dependencies = [
+ "arrow",
+ "async-trait",
+ "chrono",
+ "datafusion-common",
+ "datafusion-expr",
+ "datafusion-physical-expr",
+ "hashbrown 0.14.5",
+ "indexmap 2.5.0",
+ "itertools 0.12.1",
+ "log",
+ "paste",
+ "regex-syntax",
+]
+
+[[package]]
+name = "datafusion-physical-expr"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "45538630defedb553771434a437f7ca8f04b9b3e834344aafacecb27dc65d5e5"
+dependencies = [
+ "ahash",
+ "arrow",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-ord",
+ "arrow-schema",
+ "arrow-string",
+ "base64 0.22.1",
+ "chrono",
+ "datafusion-common",
+ "datafusion-execution",
+ "datafusion-expr",
+ "datafusion-physical-expr-common",
+ "half",
+ "hashbrown 0.14.5",
+ "hex",
+ "indexmap 2.5.0",
+ "itertools 0.12.1",
+ "log",
+ "paste",
+ "petgraph",
+ "regex",
+]
+
+[[package]]
+name = "datafusion-physical-expr-common"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d8a72b0ca908e074aaeca52c14ddf5c28d22361e9cb6bc79bb733cd6661b536"
+dependencies = [
+ "ahash",
+ "arrow",
+ "datafusion-common",
+ "datafusion-expr",
+ "hashbrown 0.14.5",
+ "rand",
+]
+
+[[package]]
+name = "datafusion-physical-plan"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b504eae6107a342775e22e323e9103f7f42db593ec6103b28605b7b7b1405c4a"
+dependencies = [
+ "ahash",
+ "arrow",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-ord",
+ "arrow-schema",
+ "async-trait",
+ "chrono",
+ "datafusion-common",
+ "datafusion-common-runtime",
+ "datafusion-execution",
+ "datafusion-expr",
+ "datafusion-functions-aggregate",
+ "datafusion-physical-expr",
+ "datafusion-physical-expr-common",
+ "futures",
+ "half",
+ "hashbrown 0.14.5",
+ "indexmap 2.5.0",
+ "itertools 0.12.1",
+ "log",
+ "once_cell",
+ "parking_lot",
+ "pin-project-lite",
+ "rand",
+ "tokio",
+]
+
+[[package]]
+name = "datafusion-sql"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5db33f323f41b95ae201318ba654a9bf11113e58a51a1dff977b1a836d3d889"
+dependencies = [
+ "arrow",
+ "arrow-array",
+ "arrow-schema",
+ "datafusion-common",
+ "datafusion-expr",
+ "log",
+ "regex",
+ "sqlparser 0.47.0",
+ "strum",
+]
+
+[[package]]
+name = "deepsize"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cdb987ec36f6bf7bfbea3f928b75590b736fc42af8e54d97592481351b2b96c"
+dependencies = [
+ "deepsize_derive",
+]
+
+[[package]]
+name = "deepsize_derive"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "990101d41f3bc8c1a45641024377ee284ecc338e5ecf3ea0f0e236d897c72796"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "der"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de"
+dependencies = [
+ "const-oid",
+ "zeroize",
+]
+
+[[package]]
+name = "deranged"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
+dependencies = [
+ "powerfmt",
+ "serde",
+]
+
+[[package]]
+name = "derive_arbitrary"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "derive_builder"
+version = "0.20.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd33f37ee6a119146a1781d3356a7c26028f83d779b2e04ecd45fdc75c76877b"
+dependencies = [
+ "derive_builder_macro",
+]
+
+[[package]]
+name = "derive_builder_core"
+version = "0.20.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7431fa049613920234f22c47fdc33e6cf3ee83067091ea4277a3f8c4587aae38"
+dependencies = [
+ "darling",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "derive_builder_macro"
+version = "0.20.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4abae7035bf79b9877b779505d8cf3749285b80c43941eda66604841889451dc"
+dependencies = [
+ "derive_builder_core",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
+ "subtle",
+]
+
+[[package]]
+name = "dirs"
+version = "5.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
+dependencies = [
+ "dirs-sys",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
+dependencies = [
+ "libc",
+ "option-ext",
+ "redox_users",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "displaydoc"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "doc-comment"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
+
+[[package]]
+name = "downcast-rs"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2"
+
+[[package]]
+name = "dyn-clone"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125"
+
+[[package]]
+name = "dyn-stack"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56e53799688f5632f364f8fb387488dd05db9fe45db7011be066fc20e7027f8b"
+dependencies = [
+ "bytemuck",
+ "reborrow",
+]
+
+[[package]]
+name = "ecdsa"
+version = "0.14.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c"
+dependencies = [
+ "der",
+ "elliptic-curve",
+ "rfc6979",
+ "signature",
+]
+
+[[package]]
+name = "either"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
+
+[[package]]
+name = "elliptic-curve"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3"
+dependencies = [
+ "base16ct",
+ "crypto-bigint 0.4.9",
+ "der",
+ "digest",
+ "ff",
+ "generic-array",
+ "group",
+ "pkcs8",
+ "rand_core",
+ "sec1",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "encode_unicode"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "enum-as-inner"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc"
+dependencies = [
+ "heck 0.5.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "enum_dispatch"
+version = "0.3.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd"
+dependencies = [
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "env_filter"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab"
+dependencies = [
+ "log",
+ "regex",
+]
+
+[[package]]
+name = "env_logger"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580"
+dependencies = [
+ "humantime",
+ "is-terminal",
+ "log",
+ "regex",
+ "termcolor",
+]
+
+[[package]]
+name = "env_logger"
+version = "0.11.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "env_filter",
+ "humantime",
+ "log",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
+name = "errno"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "error-chain"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
+name = "esaxx-rs"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d817e038c30374a4bcb22f94d0a8a0e216958d4c3dcde369b1439fec4bdda6e6"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "ethnum"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b90ca2580b73ab6a1f724b76ca11ab632df820fd6040c336200d2c1df7b3c82c"
+
+[[package]]
+name = "event-listener"
+version = "2.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
+
+[[package]]
+name = "event-listener"
+version = "4.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "eventsource-stream"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74fef4569247a5f429d9156b9d0a2599914385dd189c539334c625d8099d90ab"
+dependencies = [
+ "futures-core",
+ "nom",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "fallible-streaming-iterator"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
+
+[[package]]
+name = "fancy-regex"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2"
+dependencies = [
+ "bit-set",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "fast-float"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95765f67b4b18863968b4a1bd5bb576f732b29a4a28c7cd84c09fa3e2875f33c"
+
+[[package]]
+name = "fastdivide"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59668941c55e5c186b8b58c391629af56774ec768f73c08bbcd56f09348eb00b"
+
+[[package]]
+name = "fastrand"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
+dependencies = [
+ "instant",
+]
+
+[[package]]
+name = "fastrand"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
+
+[[package]]
+name = "ff"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160"
+dependencies = [
+ "rand_core",
+ "subtle",
+]
+
+[[package]]
+name = "fixedbitset"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
+
+[[package]]
+name = "flatbuffers"
+version = "24.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8add37afff2d4ffa83bc748a70b4b1370984f6980768554182424ef71447c35f"
+dependencies = [
+ "bitflags 1.3.2",
+ "rustc_version",
+]
+
+[[package]]
+name = "flate2"
+version = "1.0.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "foreign-types"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+dependencies = [
+ "foreign-types-shared",
+]
+
+[[package]]
+name = "foreign-types-shared"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+
+[[package]]
+name = "foreign_vec"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee1b05cbd864bcaecbd3455d6d967862d446e4ebfc3c2e5e5b9841e53cba6673"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "fs4"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7e180ac76c23b45e767bd7ae9579bc0bb458618c4bc71835926e098e61d15f8"
+dependencies = [
+ "rustix 0.38.37",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "fsst"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26212c1db7eee3ec0808bd99107cf62ba4d3edd3489df601e2d0c73c5d739aec"
+dependencies = [
+ "rand",
+]
+
+[[package]]
+name = "funty"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
+
+[[package]]
+name = "futures"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
+
+[[package]]
+name = "futures-lite"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce"
+dependencies = [
+ "fastrand 1.9.0",
+ "futures-core",
+ "futures-io",
+ "memchr",
+ "parking",
+ "pin-project-lite",
+ "waker-fn",
+]
+
+[[package]]
+name = "futures-macro"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
+
+[[package]]
+name = "futures-task"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
+
+[[package]]
+name = "futures-timer"
+version = "3.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24"
+
+[[package]]
+name = "futures-util"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "gemm"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ab24cc62135b40090e31a76a9b2766a501979f3070fa27f689c27ec04377d32"
+dependencies = [
+ "dyn-stack",
+ "gemm-c32",
+ "gemm-c64",
+ "gemm-common",
+ "gemm-f16",
+ "gemm-f32",
+ "gemm-f64",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "raw-cpuid 10.7.0",
+ "seq-macro",
+]
+
+[[package]]
+name = "gemm-c32"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9c030d0b983d1e34a546b86e08f600c11696fde16199f971cd46c12e67512c0"
+dependencies = [
+ "dyn-stack",
+ "gemm-common",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "raw-cpuid 10.7.0",
+ "seq-macro",
+]
+
+[[package]]
+name = "gemm-c64"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbb5f2e79fefb9693d18e1066a557b4546cd334b226beadc68b11a8f9431852a"
+dependencies = [
+ "dyn-stack",
+ "gemm-common",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "raw-cpuid 10.7.0",
+ "seq-macro",
+]
+
+[[package]]
+name = "gemm-common"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2e7ea062c987abcd8db95db917b4ffb4ecdfd0668471d8dc54734fdff2354e8"
+dependencies = [
+ "bytemuck",
+ "dyn-stack",
+ "half",
+ "num-complex",
+ "num-traits",
+ "once_cell",
+ "paste",
+ "pulp",
+ "raw-cpuid 10.7.0",
+ "rayon",
+ "seq-macro",
+ "sysctl",
+]
+
+[[package]]
+name = "gemm-f16"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ca4c06b9b11952071d317604acb332e924e817bd891bec8dfb494168c7cedd4"
+dependencies = [
+ "dyn-stack",
+ "gemm-common",
+ "gemm-f32",
+ "half",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "raw-cpuid 10.7.0",
+ "rayon",
+ "seq-macro",
+]
+
+[[package]]
+name = "gemm-f32"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9a69f51aaefbd9cf12d18faf273d3e982d9d711f60775645ed5c8047b4ae113"
+dependencies = [
+ "dyn-stack",
+ "gemm-common",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "raw-cpuid 10.7.0",
+ "seq-macro",
+]
+
+[[package]]
+name = "gemm-f64"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa397a48544fadf0b81ec8741e5c0fba0043008113f71f2034def1935645d2b0"
+dependencies = [
+ "dyn-stack",
+ "gemm-common",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "raw-cpuid 10.7.0",
+ "seq-macro",
+]
+
+[[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "libc",
+ "wasi",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "gimli"
+version = "0.31.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64"
+
+[[package]]
+name = "glob"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+
+[[package]]
+name = "group"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7"
+dependencies = [
+ "ff",
+ "rand_core",
+ "subtle",
+]
+
+[[package]]
+name = "h2"
+version = "0.3.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
+dependencies = [
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "futures-util",
+ "http 0.2.12",
+ "indexmap 2.5.0",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "h2"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205"
+dependencies = [
+ "atomic-waker",
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "http 1.1.0",
+ "indexmap 2.5.0",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "half"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
+dependencies = [
+ "bytemuck",
+ "cfg-if",
+ "crunchy",
+ "num-traits",
+ "rand",
+ "rand_distr",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+
+[[package]]
+name = "hashbrown"
+version = "0.14.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+dependencies = [
+ "ahash",
+ "allocator-api2",
+ "rayon",
+]
+
+[[package]]
+name = "heck"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "hermit-abi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
+
+[[package]]
+name = "hermit-abi"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
+
+[[package]]
+name = "hex"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+
+[[package]]
+name = "hf-hub"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b780635574b3d92f036890d8373433d6f9fc7abb320ee42a5c25897fc8ed732"
+dependencies = [
+ "dirs",
+ "indicatif",
+ "log",
+ "native-tls",
+ "rand",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "ureq",
+]
+
+[[package]]
+name = "hmac"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
+dependencies = [
+ "digest",
+]
+
+[[package]]
+name = "home"
+version = "0.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "htmlescape"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163"
+
+[[package]]
+name = "http"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
+name = "http"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
+name = "http-body"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
+dependencies = [
+ "bytes",
+ "http 0.2.12",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "http-body"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
+dependencies = [
+ "bytes",
+ "http 1.1.0",
+]
+
+[[package]]
+name = "http-body-util"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
+dependencies = [
+ "bytes",
+ "futures-util",
+ "http 1.1.0",
+ "http-body 1.0.1",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "httparse"
+version = "1.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9"
+
+[[package]]
+name = "httpdate"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
+
+[[package]]
+name = "humantime"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+
+[[package]]
+name = "hyper"
+version = "0.14.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "h2 0.3.26",
+ "http 0.2.12",
+ "http-body 0.4.6",
+ "httparse",
+ "httpdate",
+ "itoa",
+ "pin-project-lite",
+ "socket2 0.5.7",
+ "tokio",
+ "tower-service",
+ "tracing",
+ "want",
+]
+
+[[package]]
+name = "hyper"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-util",
+ "h2 0.4.6",
+ "http 1.1.0",
+ "http-body 1.0.1",
+ "httparse",
+ "itoa",
+ "pin-project-lite",
+ "smallvec",
+ "tokio",
+ "want",
+]
+
+[[package]]
+name = "hyper-rustls"
+version = "0.24.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
+dependencies = [
+ "futures-util",
+ "http 0.2.12",
+ "hyper 0.14.30",
+ "log",
+ "rustls 0.21.12",
+ "rustls-native-certs 0.6.3",
+ "tokio",
+ "tokio-rustls 0.24.1",
+]
+
+[[package]]
+name = "hyper-rustls"
+version = "0.27.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333"
+dependencies = [
+ "futures-util",
+ "http 1.1.0",
+ "hyper 1.4.1",
+ "hyper-util",
+ "rustls 0.23.13",
+ "rustls-native-certs 0.8.0",
+ "rustls-pki-types",
+ "tokio",
+ "tokio-rustls 0.26.0",
+ "tower-service",
+]
+
+[[package]]
+name = "hyper-tls"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
+dependencies = [
+ "bytes",
+ "hyper 0.14.30",
+ "native-tls",
+ "tokio",
+ "tokio-native-tls",
+]
+
+[[package]]
+name = "hyper-util"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-util",
+ "http 1.1.0",
+ "http-body 1.0.1",
+ "hyper 1.4.1",
+ "pin-project-lite",
+ "socket2 0.5.7",
+ "tokio",
+ "tower",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "hyperloglogplus"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "621debdf94dcac33e50475fdd76d34d5ea9c0362a834b9db08c3024696c1fbe3"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "windows-core",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "ident_case"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+
+[[package]]
+name = "idna"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "indexmap"
+version = "1.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
+dependencies = [
+ "autocfg",
+ "hashbrown 0.12.3",
+ "serde",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.14.5",
+ "serde",
+]
+
+[[package]]
+name = "indicatif"
+version = "0.17.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3"
+dependencies = [
+ "console",
+ "instant",
+ "number_prefix",
+ "portable-atomic",
+ "unicode-width",
+]
+
+[[package]]
+name = "indoc"
+version = "2.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
+
+[[package]]
+name = "instant"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "io-lifetimes"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
+dependencies = [
+ "hermit-abi 0.3.9",
+ "libc",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "ipnet"
+version = "2.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4"
+
+[[package]]
+name = "is-terminal"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b"
+dependencies = [
+ "hermit-abi 0.4.0",
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "is_terminal_polyfill"
+version = "1.70.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
+
+[[package]]
+name = "itertools"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itertools"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itertools"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
+
+[[package]]
+name = "itoap"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9028f49264629065d057f340a86acb84867925865f73bbf8d47b4d149a7e88b8"
+
+[[package]]
+name = "jni"
+version = "0.21.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97"
+dependencies = [
+ "cesu8",
+ "cfg-if",
+ "combine",
+ "jni-sys",
+ "log",
+ "thiserror",
+ "walkdir",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "jni-sys"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
+
+[[package]]
+name = "jobserver"
+version = "0.1.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "js-sys"
+version = "0.3.70"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "lance"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a427160737dd74d2d4f566f3111027edc63927106541d173459d010209371c42"
+dependencies = [
+ "arrow",
+ "arrow-arith",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-ord",
+ "arrow-row",
+ "arrow-schema",
+ "arrow-select",
+ "async-recursion",
+ "async-trait",
+ "async_cell",
+ "aws-credential-types",
+ "aws-sdk-dynamodb",
+ "byteorder",
+ "bytes",
+ "chrono",
+ "dashmap",
+ "datafusion",
+ "datafusion-functions",
+ "datafusion-physical-expr",
+ "deepsize",
+ "futures",
+ "half",
+ "itertools 0.12.1",
+ "lance-arrow",
+ "lance-core",
+ "lance-datafusion",
+ "lance-encoding",
+ "lance-file",
+ "lance-index",
+ "lance-io",
+ "lance-linalg",
+ "lance-table",
+ "lazy_static",
+ "log",
+ "moka",
+ "object_store",
+ "pin-project",
+ "prost",
+ "prost-build",
+ "rand",
+ "roaring",
+ "serde",
+ "serde_json",
+ "snafu",
+ "tantivy",
+ "tempfile",
+ "tokio",
+ "tracing",
+ "url",
+ "uuid",
+]
+
+[[package]]
+name = "lance-arrow"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2f1cfebe08c64b1edabe9b6ccd6f8ea1bc6349d0870d47f2db8cdadf02ab8e2"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-cast",
+ "arrow-data",
+ "arrow-schema",
+ "arrow-select",
+ "getrandom",
+ "half",
+ "num-traits",
+ "rand",
+]
+
+[[package]]
+name = "lance-core"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "243aa2323dee6fcab6bb9bb3a21ae8f040c98a5de9bbfb7ab8484a036176185a"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-schema",
+ "async-trait",
+ "byteorder",
+ "bytes",
+ "chrono",
+ "datafusion-common",
+ "datafusion-sql",
+ "deepsize",
+ "futures",
+ "lance-arrow",
+ "lazy_static",
+ "libc",
+ "log",
+ "mock_instant",
+ "moka",
+ "num_cpus",
+ "object_store",
+ "pin-project",
+ "prost",
+ "rand",
+ "roaring",
+ "serde_json",
+ "snafu",
+ "tokio",
+ "tokio-stream",
+ "tokio-util",
+ "tracing",
+ "url",
+]
+
+[[package]]
+name = "lance-datafusion"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0a69d039f93a43477245b51a8f1ce58a1f41485f8ded946f53031a11ded8c97"
+dependencies = [
+ "arrow",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-ord",
+ "arrow-schema",
+ "arrow-select",
+ "async-trait",
+ "datafusion",
+ "datafusion-common",
+ "datafusion-functions",
+ "datafusion-physical-expr",
+ "futures",
+ "lance-arrow",
+ "lance-core",
+ "lazy_static",
+ "log",
+ "prost",
+ "snafu",
+ "tokio",
+]
+
+[[package]]
+name = "lance-encoding"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b713e49ce6039d0ca0f88e8ded66ee64d89c42f85107bc9e684fbff41386a65"
+dependencies = [
+ "arrow",
+ "arrow-arith",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-cast",
+ "arrow-data",
+ "arrow-schema",
+ "arrow-select",
+ "bytes",
+ "fsst",
+ "futures",
+ "hex",
+ "hyperloglogplus",
+ "itertools 0.12.1",
+ "lance-arrow",
+ "lance-core",
+ "log",
+ "num-traits",
+ "prost",
+ "prost-build",
+ "prost-types",
+ "rand",
+ "snafu",
+ "tokio",
+ "tracing",
+ "zstd",
+]
+
+[[package]]
+name = "lance-file"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e0eaebd40c77f8f06a0cbadcd07f9344aea616dcd4d8712f6cad81c2eda14d5"
+dependencies = [
+ "arrow-arith",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "arrow-select",
+ "async-recursion",
+ "async-trait",
+ "byteorder",
+ "bytes",
+ "datafusion-common",
+ "deepsize",
+ "futures",
+ "lance-arrow",
+ "lance-core",
+ "lance-encoding",
+ "lance-io",
+ "log",
+ "num-traits",
+ "object_store",
+ "prost",
+ "prost-build",
+ "prost-types",
+ "roaring",
+ "snafu",
+ "tempfile",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "lance-index"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1ad5a42b9a4909749ee62fc94c64d19259c2aadca7c8446f42ee8e9c7a097d3"
+dependencies = [
+ "arrow",
+ "arrow-array",
+ "arrow-ord",
+ "arrow-schema",
+ "arrow-select",
+ "async-recursion",
+ "async-trait",
+ "bitvec",
+ "bytes",
+ "crossbeam-queue",
+ "datafusion",
+ "datafusion-common",
+ "datafusion-expr",
+ "datafusion-physical-expr",
+ "datafusion-sql",
+ "deepsize",
+ "futures",
+ "half",
+ "itertools 0.12.1",
+ "lance-arrow",
+ "lance-core",
+ "lance-datafusion",
+ "lance-encoding",
+ "lance-file",
+ "lance-io",
+ "lance-linalg",
+ "lance-table",
+ "lazy_static",
+ "log",
+ "moka",
+ "num-traits",
+ "object_store",
+ "prost",
+ "prost-build",
+ "rand",
+ "rayon",
+ "roaring",
+ "serde",
+ "serde_json",
+ "snafu",
+ "tantivy",
+ "tempfile",
+ "tokio",
+ "tracing",
+ "uuid",
+]
+
+[[package]]
+name = "lance-io"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0f334f2c279f80f19803141cf7f98c6b82e6ace3c7f75c8740f1df7a73bb720"
+dependencies = [
+ "arrow",
+ "arrow-arith",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-cast",
+ "arrow-data",
+ "arrow-schema",
+ "arrow-select",
+ "async-priority-channel",
+ "async-recursion",
+ "async-trait",
+ "aws-config",
+ "aws-credential-types",
+ "byteorder",
+ "bytes",
+ "chrono",
+ "deepsize",
+ "futures",
+ "lance-arrow",
+ "lance-core",
+ "lazy_static",
+ "log",
+ "object_store",
+ "path_abs",
+ "pin-project",
+ "prost",
+ "prost-build",
+ "rand",
+ "shellexpand",
+ "snafu",
+ "tokio",
+ "tracing",
+ "url",
+]
+
+[[package]]
+name = "lance-linalg"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fa019770a0afb287360a4ea919cff482371ad43318607d1e797534c819bf356"
+dependencies = [
+ "arrow-array",
+ "arrow-ord",
+ "arrow-schema",
+ "bitvec",
+ "cc",
+ "deepsize",
+ "futures",
+ "half",
+ "lance-arrow",
+ "lance-core",
+ "lazy_static",
+ "log",
+ "num-traits",
+ "rand",
+ "rayon",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "lance-table"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "99fa39bede133d578431db3f77b0c2c63fcaff12a088000648014c27266830a2"
+dependencies = [
+ "arrow",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-ipc",
+ "arrow-schema",
+ "async-trait",
+ "aws-credential-types",
+ "aws-sdk-dynamodb",
+ "byteorder",
+ "bytes",
+ "chrono",
+ "deepsize",
+ "futures",
+ "lance-arrow",
+ "lance-core",
+ "lance-file",
+ "lance-io",
+ "lazy_static",
+ "log",
+ "object_store",
+ "prost",
+ "prost-build",
+ "prost-types",
+ "rand",
+ "rangemap",
+ "roaring",
+ "serde",
+ "serde_json",
+ "snafu",
+ "tokio",
+ "tracing",
+ "url",
+ "uuid",
+]
+
+[[package]]
+name = "lance-testing"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb4eae0993cda6130cfd75d3d9d11830dd4ec8d4c66cf81def939837c419d4bc"
+dependencies = [
+ "arrow-array",
+ "arrow-schema",
+ "lance-arrow",
+ "num-traits",
+ "rand",
+]
+
+[[package]]
+name = "lancedb"
+version = "0.10.0-beta.1"
+dependencies = [
+ "arrow",
+ "arrow-array",
+ "arrow-cast",
+ "arrow-data",
+ "arrow-ipc",
+ "arrow-ord",
+ "arrow-schema",
+ "async-openai",
+ "async-trait",
+ "aws-config",
+ "aws-sdk-dynamodb",
+ "aws-sdk-kms",
+ "aws-sdk-s3",
+ "aws-smithy-runtime",
+ "bytes",
+ "candle-core",
+ "candle-nn",
+ "candle-transformers",
+ "chrono",
+ "datafusion-physical-plan",
+ "futures",
+ "half",
+ "hf-hub",
+ "lance",
+ "lance-datafusion",
+ "lance-encoding",
+ "lance-index",
+ "lance-linalg",
+ "lance-table",
+ "lance-testing",
+ "lazy_static",
+ "log",
+ "num-traits",
+ "object_store",
+ "pin-project",
+ "polars",
+ "polars-arrow",
+ "rand",
+ "random_word",
+ "regex",
+ "reqwest 0.11.27",
+ "serde",
+ "serde_json",
+ "serde_with",
+ "snafu",
+ "tempfile",
+ "tokenizers",
+ "tokio",
+ "url",
+ "uuid",
+ "walkdir",
+]
+
+[[package]]
+name = "lancedb-jni"
+version = "0.4.18"
+dependencies = [
+ "arrow",
+ "arrow-schema",
+ "jni",
+ "lance",
+ "lancedb",
+ "lazy_static",
+ "serde",
+ "serde_json",
+ "snafu",
+ "tokio",
+]
+
+[[package]]
+name = "lancedb-node"
+version = "0.10.0-beta.1"
+dependencies = [
+ "arrow-array",
+ "arrow-ipc",
+ "arrow-schema",
+ "async-trait",
+ "chrono",
+ "conv",
+ "env_logger 0.11.5",
+ "futures",
+ "half",
+ "lance",
+ "lance-index",
+ "lance-linalg",
+ "lancedb",
+ "lzma-sys",
+ "neon",
+ "object_store",
+ "once_cell",
+ "snafu",
+ "tokio",
+]
+
+[[package]]
+name = "lancedb-nodejs"
+version = "0.0.0"
+dependencies = [
+ "arrow-ipc",
+ "futures",
+ "lancedb",
+ "lzma-sys",
+ "napi",
+ "napi-build",
+ "napi-derive",
+]
+
+[[package]]
+name = "lancedb-python"
+version = "0.13.0"
+dependencies = [
+ "arrow",
+ "env_logger 0.10.2",
+ "futures",
+ "lancedb",
+ "lzma-sys",
+ "pin-project",
+ "pyo3",
+ "pyo3-asyncio-0-21",
+ "pyo3-build-config 0.20.3",
+ "tokio",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
+
+[[package]]
+name = "levenshtein_automata"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c2cdeb66e45e9f36bfad5bbdb4d2384e70936afbee843c6f6543f0c551ebb25"
+
+[[package]]
+name = "lexical-core"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46"
+dependencies = [
+ "lexical-parse-float",
+ "lexical-parse-integer",
+ "lexical-util",
+ "lexical-write-float",
+ "lexical-write-integer",
+]
+
+[[package]]
+name = "lexical-parse-float"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f"
+dependencies = [
+ "lexical-parse-integer",
+ "lexical-util",
+ "static_assertions",
+]
+
+[[package]]
+name = "lexical-parse-integer"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9"
+dependencies = [
+ "lexical-util",
+ "static_assertions",
+]
+
+[[package]]
+name = "lexical-util"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc"
+dependencies = [
+ "static_assertions",
+]
+
+[[package]]
+name = "lexical-write-float"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862"
+dependencies = [
+ "lexical-util",
+ "lexical-write-integer",
+ "static_assertions",
+]
+
+[[package]]
+name = "lexical-write-integer"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446"
+dependencies = [
+ "lexical-util",
+ "static_assertions",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.158"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
+
+[[package]]
+name = "libloading"
+version = "0.6.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "351a32417a12d5f7e82c368a66781e307834dae04c6ce0cd4456d52989229883"
+dependencies = [
+ "cfg-if",
+ "winapi",
+]
+
+[[package]]
+name = "libloading"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
+dependencies = [
+ "cfg-if",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "libm"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
+
+[[package]]
+name = "libredox"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
+dependencies = [
+ "bitflags 2.6.0",
+ "libc",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
+
+[[package]]
+name = "lock_api"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
+
+[[package]]
+name = "lru"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904"
+dependencies = [
+ "hashbrown 0.14.5",
+]
+
+[[package]]
+name = "lz4"
+version = "1.27.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a231296ca742e418c43660cb68e082486ff2538e8db432bc818580f3965025ed"
+dependencies = [
+ "lz4-sys",
+]
+
+[[package]]
+name = "lz4-sys"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcb44a01837a858d47e5a630d2ccf304c8efcc4b83b8f9f75b7a9ee4fcc6e57d"
+dependencies = [
+ "cc",
+ "libc",
+]
+
+[[package]]
+name = "lz4_flex"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5"
+dependencies = [
+ "twox-hash",
+]
+
+[[package]]
+name = "lzma-sys"
+version = "0.1.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+]
+
+[[package]]
+name = "mach2"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "macro_rules_attribute"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a82271f7bc033d84bbca59a3ce3e4159938cb08a9c3aebbe54d215131518a13"
+dependencies = [
+ "macro_rules_attribute-proc_macro",
+ "paste",
+]
+
+[[package]]
+name = "macro_rules_attribute-proc_macro"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8dd856d451cc0da70e2ef2ce95a18e39a93b7558bedf10201ad28503f918568"
+
+[[package]]
+name = "md-5"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
+dependencies = [
+ "cfg-if",
+ "digest",
+]
+
+[[package]]
+name = "measure_time"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbefd235b0aadd181626f281e1d684e116972988c14c264e42069d5e8a5775cc"
+dependencies = [
+ "instant",
+ "log",
+]
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "memmap2"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f49388d20533534cd19360ad3d6a7dadc885944aa802ba3995040c5ec11288c6"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "memmap2"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322"
+dependencies = [
+ "libc",
+ "stable_deref_trait",
+]
+
+[[package]]
+name = "memoffset"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "mime"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+
+[[package]]
+name = "mime_guess"
+version = "2.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e"
+dependencies = [
+ "mime",
+ "unicase",
+]
+
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
+name = "miniz_oxide"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
+dependencies = [
+ "adler2",
+]
+
+[[package]]
+name = "mio"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec"
+dependencies = [
+ "hermit-abi 0.3.9",
+ "libc",
+ "wasi",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "mock_instant"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9366861eb2a2c436c20b12c8dbec5f798cea6b47ad99216be0282942e2c81ea0"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "moka"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa6e72583bf6830c956235bff0d5afec8cf2952f579ebad18ae7821a917d950f"
+dependencies = [
+ "async-io",
+ "async-lock",
+ "crossbeam-channel",
+ "crossbeam-epoch",
+ "crossbeam-utils",
+ "futures-util",
+ "once_cell",
+ "parking_lot",
+ "quanta",
+ "rustc_version",
+ "scheduled-thread-pool",
+ "skeptic",
+ "smallvec",
+ "tagptr",
+ "thiserror",
+ "triomphe",
+ "uuid",
+]
+
+[[package]]
+name = "monostate"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d208407d7552cd041d8cdb69a1bc3303e029c598738177a3d87082004dc0e1e"
+dependencies = [
+ "monostate-impl",
+ "serde",
+]
+
+[[package]]
+name = "monostate-impl"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7ce64b975ed4f123575d11afd9491f2e37bbd5813fbfbc0f09ae1fbddea74e0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "multimap"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03"
+
+[[package]]
+name = "multiversion"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4851161a11d3ad0bf9402d90ffc3967bf231768bfd7aeb61755ad06dbf1a142"
+dependencies = [
+ "multiversion-macros",
+ "target-features",
+]
+
+[[package]]
+name = "multiversion-macros"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79a74ddee9e0c27d2578323c13905793e91622148f138ba29738f9dddb835e90"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "target-features",
+]
+
+[[package]]
+name = "murmurhash32"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2195bf6aa996a481483b29d62a7663eed3fe39600c460e323f8ff41e90bdd89b"
+
+[[package]]
+name = "napi"
+version = "2.16.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04409e8c2d61995696e44d2181b79b68c1dd41f7e24a17cde60bbd9f54ddddef"
+dependencies = [
+ "bitflags 2.6.0",
+ "ctor",
+ "napi-derive",
+ "napi-sys",
+ "once_cell",
+ "tokio",
+]
+
+[[package]]
+name = "napi-build"
+version = "2.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1c0f5d67ee408a4685b61f5ab7e58605c8ae3f2b4189f0127d804ff13d5560a"
+
+[[package]]
+name = "napi-derive"
+version = "2.16.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17435f7a00bfdab20b0c27d9c56f58f6499e418252253081bfff448099da31d1"
+dependencies = [
+ "cfg-if",
+ "convert_case",
+ "napi-derive-backend",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "napi-derive-backend"
+version = "1.0.74"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "967c485e00f0bf3b1bdbe510a38a4606919cf1d34d9a37ad41f25a81aa077abe"
+dependencies = [
+ "convert_case",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "semver 1.0.23",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "napi-sys"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "427802e8ec3a734331fec1035594a210ce1ff4dc5bc1950530920ab717964ea3"
+dependencies = [
+ "libloading 0.8.5",
+]
+
+[[package]]
+name = "native-tls"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466"
+dependencies = [
+ "libc",
+ "log",
+ "openssl",
+ "openssl-probe",
+ "openssl-sys",
+ "schannel",
+ "security-framework",
+ "security-framework-sys",
+ "tempfile",
+]
+
+[[package]]
+name = "neon"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28e15415261d880aed48122e917a45e87bb82cf0260bb6db48bbab44b7464373"
+dependencies = [
+ "neon-build",
+ "neon-macros",
+ "neon-runtime",
+ "semver 0.9.0",
+ "smallvec",
+]
+
+[[package]]
+name = "neon-build"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8bac98a702e71804af3dacfde41edde4a16076a7bbe889ae61e56e18c5b1c811"
+
+[[package]]
+name = "neon-macros"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7288eac8b54af7913c60e0eb0e2a7683020dffa342ab3fd15e28f035ba897cf"
+dependencies = [
+ "quote",
+ "syn 1.0.109",
+ "syn-mid",
+]
+
+[[package]]
+name = "neon-runtime"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4676720fa8bb32c64c3d9f49c47a47289239ec46b4bdb66d0913cc512cb0daca"
+dependencies = [
+ "cfg-if",
+ "libloading 0.6.7",
+ "smallvec",
+]
+
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
+[[package]]
+name = "now"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d89e9874397a1f0a52fc1f197a8effd9735223cb2390e9dcc83ac6cd02923d0"
+dependencies = [
+ "chrono",
+]
+
+[[package]]
+name = "ntapi"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "num"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23"
+dependencies = [
+ "num-bigint",
+ "num-complex",
+ "num-integer",
+ "num-iter",
+ "num-rational",
+ "num-traits",
+]
+
+[[package]]
+name = "num-bigint"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
+dependencies = [
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-complex"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
+dependencies = [
+ "bytemuck",
+ "num-traits",
+]
+
+[[package]]
+name = "num-conv"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
+
+[[package]]
+name = "num-integer"
+version = "0.1.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-iter"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
+dependencies = [
+ "num-bigint",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+ "libm",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+dependencies = [
+ "hermit-abi 0.3.9",
+ "libc",
+]
+
+[[package]]
+name = "num_enum"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179"
+dependencies = [
+ "num_enum_derive",
+]
+
+[[package]]
+name = "num_enum_derive"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56"
+dependencies = [
+ "proc-macro-crate",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "number_prefix"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
+
+[[package]]
+name = "object"
+version = "0.36.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "object_store"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6da452820c715ce78221e8202ccc599b4a52f3e1eb3eedb487b680c81a8e3f3"
+dependencies = [
+ "async-trait",
+ "base64 0.22.1",
+ "bytes",
+ "chrono",
+ "futures",
+ "humantime",
+ "hyper 1.4.1",
+ "itertools 0.13.0",
+ "md-5",
+ "parking_lot",
+ "percent-encoding",
+ "quick-xml",
+ "rand",
+ "reqwest 0.12.7",
+ "ring",
+ "rustls-pemfile 2.1.3",
+ "serde",
+ "serde_json",
+ "snafu",
+ "tokio",
+ "tracing",
+ "url",
+ "walkdir",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+
+[[package]]
+name = "oneshot"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e296cf87e61c9cfc1a61c3c63a0f7f286ed4554e0e22be84e8a38e1d264a2a29"
+
+[[package]]
+name = "onig"
+version = "6.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c4b31c8722ad9171c6d77d3557db078cab2bd50afcc9d09c8b315c59df8ca4f"
+dependencies = [
+ "bitflags 1.3.2",
+ "libc",
+ "once_cell",
+ "onig_sys",
+]
+
+[[package]]
+name = "onig_sys"
+version = "69.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b829e3d7e9cc74c7e315ee8edb185bf4190da5acde74afd7fc59c35b1f086e7"
+dependencies = [
+ "cc",
+ "pkg-config",
+]
+
+[[package]]
+name = "openssl"
+version = "0.10.66"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1"
+dependencies = [
+ "bitflags 2.6.0",
+ "cfg-if",
+ "foreign-types",
+ "libc",
+ "once_cell",
+ "openssl-macros",
+ "openssl-sys",
+]
+
+[[package]]
+name = "openssl-macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "openssl-probe"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
+
+[[package]]
+name = "openssl-sys"
+version = "0.9.103"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "option-ext"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
+
+[[package]]
+name = "outref"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a"
+
+[[package]]
+name = "ownedbytes"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3a059efb063b8f425b948e042e6b9bd85edfe60e913630ed727b23e2dfcc558"
+dependencies = [
+ "stable_deref_trait",
+]
+
+[[package]]
+name = "p256"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594"
+dependencies = [
+ "ecdsa",
+ "elliptic-curve",
+ "sha2",
+]
+
+[[package]]
+name = "parking"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
+
+[[package]]
+name = "parking_lot"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "parquet-format-safe"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1131c54b167dd4e4799ce762e1ab01549ebb94d5bdd13e6ec1b467491c378e1f"
+
+[[package]]
+name = "parse-zoneinfo"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f2a05b18d44e2957b88f96ba460715e295bc1d7510468a2f3d3b44535d26c24"
+dependencies = [
+ "regex",
+]
+
+[[package]]
+name = "paste"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
+
+[[package]]
+name = "path_abs"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05ef02f6342ac01d8a93b65f96db53fe68a92a15f41144f97fb00a9e669633c3"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "std_prelude",
+ "stfu8",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+
+[[package]]
+name = "petgraph"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
+dependencies = [
+ "fixedbitset",
+ "indexmap 2.5.0",
+]
+
+[[package]]
+name = "phf"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc"
+dependencies = [
+ "phf_shared",
+]
+
+[[package]]
+name = "phf_codegen"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a"
+dependencies = [
+ "phf_generator",
+ "phf_shared",
+]
+
+[[package]]
+name = "phf_generator"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0"
+dependencies = [
+ "phf_shared",
+ "rand",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b"
+dependencies = [
+ "siphasher",
+]
+
+[[package]]
+name = "pin-project"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "pkcs8"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba"
+dependencies = [
+ "der",
+ "spki",
+]
+
+[[package]]
+name = "pkg-config"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
+
+[[package]]
+name = "planus"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc1691dd09e82f428ce8d6310bd6d5da2557c82ff17694d2a32cad7242aea89f"
+dependencies = [
+ "array-init-cursor",
+]
+
+[[package]]
+name = "polars"
+version = "0.39.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ea21b858b16b9c0e17a12db2800d11aa5b4bd182be6b3022eb537bbfc1f2db5"
+dependencies = [
+ "getrandom",
+ "polars-arrow",
+ "polars-core",
+ "polars-error",
+ "polars-io",
+ "polars-lazy",
+ "polars-ops",
+ "polars-parquet",
+ "polars-sql",
+ "polars-time",
+ "polars-utils",
+ "version_check",
+]
+
+[[package]]
+name = "polars-arrow"
+version = "0.39.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "725b09f2b5ef31279b66e27bbab63c58d49d8f6696b66b1f46c7eaab95e80f75"
+dependencies = [
+ "ahash",
+ "atoi",
+ "atoi_simd",
+ "bytemuck",
+ "chrono",
+ "chrono-tz 0.8.6",
+ "dyn-clone",
+ "either",
+ "ethnum",
+ "fast-float",
+ "foreign_vec",
+ "getrandom",
+ "hashbrown 0.14.5",
+ "itoa",
+ "itoap",
+ "lz4",
+ "multiversion",
+ "num-traits",
+ "polars-arrow-format",
+ "polars-error",
+ "polars-utils",
+ "ryu",
+ "simdutf8",
+ "streaming-iterator",
+ "strength_reduce",
+ "version_check",
+ "zstd",
+]
+
+[[package]]
+name = "polars-arrow-format"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19b0ef2474af9396b19025b189d96e992311e6a47f90c53cd998b36c4c64b84c"
+dependencies = [
+ "planus",
+ "serde",
+]
+
+[[package]]
+name = "polars-compute"
+version = "0.39.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a796945b14b14fbb79b91ef0406e6fddca2be636e889f81ea5d6ee7d36efb4fe"
+dependencies = [
+ "bytemuck",
+ "either",
+ "num-traits",
+ "polars-arrow",
+ "polars-error",
+ "polars-utils",
+ "strength_reduce",
+ "version_check",
+]
+
+[[package]]
+name = "polars-core"
+version = "0.39.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "465f70d3e96b6d0b1a43c358ba451286b8c8bd56696feff020d65702aa33e35c"
+dependencies = [
+ "ahash",
+ "bitflags 2.6.0",
+ "bytemuck",
+ "chrono",
+ "chrono-tz 0.8.6",
+ "comfy-table",
+ "either",
+ "hashbrown 0.14.5",
+ "indexmap 2.5.0",
+ "num-traits",
+ "once_cell",
+ "polars-arrow",
+ "polars-compute",
+ "polars-error",
+ "polars-row",
+ "polars-utils",
+ "rand",
+ "rand_distr",
+ "rayon",
+ "regex",
+ "smartstring",
+ "thiserror",
+ "version_check",
+ "xxhash-rust",
+]
+
+[[package]]
+name = "polars-error"
+version = "0.39.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5224d5d05e6b8a6f78b75951ae1b5f82c8ab1979e11ffaf5fd41941e3d5b0757"
+dependencies = [
+ "polars-arrow-format",
+ "regex",
+ "simdutf8",
+ "thiserror",
+]
+
+[[package]]
+name = "polars-io"
+version = "0.39.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2c8589e418cbe4a48228d64b2a8a40284a82ec3c98817c0c2bcc0267701338b"
+dependencies = [
+ "ahash",
+ "atoi_simd",
+ "bytes",
+ "chrono",
+ "fast-float",
+ "home",
+ "itoa",
+ "memchr",
+ "memmap2 0.7.1",
+ "num-traits",
+ "once_cell",
+ "percent-encoding",
+ "polars-arrow",
+ "polars-core",
+ "polars-error",
+ "polars-time",
+ "polars-utils",
+ "rayon",
+ "regex",
+ "ryu",
+ "simdutf8",
+ "smartstring",
+]
+
+[[package]]
+name = "polars-lazy"
+version = "0.39.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89b2632b1af668e2058d5f8f916d8fbde3cac63d03ae29a705f598e41dcfeb7f"
+dependencies = [
+ "ahash",
+ "bitflags 2.6.0",
+ "glob",
+ "once_cell",
+ "polars-arrow",
+ "polars-core",
+ "polars-io",
+ "polars-ops",
+ "polars-pipe",
+ "polars-plan",
+ "polars-time",
+ "polars-utils",
+ "rayon",
+ "smartstring",
+ "version_check",
+]
+
+[[package]]
+name = "polars-ops"
+version = "0.39.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "efdbdb4d9a92109bc2e0ce8e17af5ae8ab643bb5b7ee9d1d74f0aeffd1fbc95f"
+dependencies = [
+ "ahash",
+ "argminmax",
+ "base64 0.21.7",
+ "bytemuck",
+ "chrono",
+ "chrono-tz 0.8.6",
+ "either",
+ "hashbrown 0.14.5",
+ "hex",
+ "indexmap 2.5.0",
+ "memchr",
+ "num-traits",
+ "polars-arrow",
+ "polars-compute",
+ "polars-core",
+ "polars-error",
+ "polars-utils",
+ "rayon",
+ "regex",
+ "smartstring",
+ "unicode-reverse",
+ "version_check",
+]
+
+[[package]]
+name = "polars-parquet"
+version = "0.39.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b421d2196f786fdfe162db614c8485f8308fe41575d4de634a39bbe460d1eb6a"
+dependencies = [
+ "ahash",
+ "base64 0.21.7",
+ "ethnum",
+ "num-traits",
+ "parquet-format-safe",
+ "polars-arrow",
+ "polars-error",
+ "polars-utils",
+ "seq-macro",
+ "simdutf8",
+ "streaming-decompression",
+]
+
+[[package]]
+name = "polars-pipe"
+version = "0.39.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48700f1d5bd56a15451e581f465c09541492750360f18637b196f995470a015c"
+dependencies = [
+ "crossbeam-channel",
+ "crossbeam-queue",
+ "enum_dispatch",
+ "hashbrown 0.14.5",
+ "num-traits",
+ "polars-arrow",
+ "polars-compute",
+ "polars-core",
+ "polars-io",
+ "polars-ops",
+ "polars-plan",
+ "polars-row",
+ "polars-utils",
+ "rayon",
+ "smartstring",
+ "uuid",
+ "version_check",
+]
+
+[[package]]
+name = "polars-plan"
+version = "0.39.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2fb8e2302e20c44defd5be8cad9c96e75face63c3a5f609aced8c4ec3b3ac97d"
+dependencies = [
+ "ahash",
+ "bytemuck",
+ "chrono-tz 0.8.6",
+ "hashbrown 0.14.5",
+ "once_cell",
+ "percent-encoding",
+ "polars-arrow",
+ "polars-core",
+ "polars-io",
+ "polars-ops",
+ "polars-time",
+ "polars-utils",
+ "rayon",
+ "recursive",
+ "regex",
+ "smartstring",
+ "strum_macros 0.25.3",
+ "version_check",
+]
+
+[[package]]
+name = "polars-row"
+version = "0.39.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a515bdc68c2ae3702e3de70d89601f3b71ca8137e282a226dddb53ee4bacfa2e"
+dependencies = [
+ "bytemuck",
+ "polars-arrow",
+ "polars-error",
+ "polars-utils",
+]
+
+[[package]]
+name = "polars-sql"
+version = "0.39.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b4bb7cc1c04c3023d1953b2f1dec50515e8fd8169a5a2bf4967b3b082232db7"
+dependencies = [
+ "hex",
+ "polars-arrow",
+ "polars-core",
+ "polars-error",
+ "polars-lazy",
+ "polars-plan",
+ "rand",
+ "serde",
+ "serde_json",
+ "sqlparser 0.39.0",
+]
+
+[[package]]
+name = "polars-time"
+version = "0.39.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "efc18e3ad92eec55db89d88f16c22d436559ba7030cf76f86f6ed7a754b673f1"
+dependencies = [
+ "atoi",
+ "chrono",
+ "chrono-tz 0.8.6",
+ "now",
+ "once_cell",
+ "polars-arrow",
+ "polars-core",
+ "polars-error",
+ "polars-ops",
+ "polars-utils",
+ "regex",
+ "smartstring",
+]
+
+[[package]]
+name = "polars-utils"
+version = "0.39.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c760b6c698cfe2fbbbd93d6cfb408db14ececfe1d92445dae2229ce1b5b21ae8"
+dependencies = [
+ "ahash",
+ "bytemuck",
+ "hashbrown 0.14.5",
+ "indexmap 2.5.0",
+ "num-traits",
+ "once_cell",
+ "polars-error",
+ "raw-cpuid 11.1.0",
+ "rayon",
+ "smartstring",
+ "stacker",
+ "sysinfo",
+ "version_check",
+]
+
+[[package]]
+name = "polling"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce"
+dependencies = [
+ "autocfg",
+ "bitflags 1.3.2",
+ "cfg-if",
+ "concurrent-queue",
+ "libc",
+ "log",
+ "pin-project-lite",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "portable-atomic"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265"
+
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
+dependencies = [
+ "zerocopy",
+]
+
+[[package]]
+name = "prettyplease"
+version = "0.2.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba"
+dependencies = [
+ "proc-macro2",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "3.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b"
+dependencies = [
+ "toml_edit",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.86"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "prost"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29"
+dependencies = [
+ "bytes",
+ "prost-derive",
+]
+
+[[package]]
+name = "prost-build"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4"
+dependencies = [
+ "bytes",
+ "heck 0.5.0",
+ "itertools 0.12.1",
+ "log",
+ "multimap",
+ "once_cell",
+ "petgraph",
+ "prettyplease",
+ "prost",
+ "prost-types",
+ "regex",
+ "syn 2.0.77",
+ "tempfile",
+]
+
+[[package]]
+name = "prost-derive"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1"
+dependencies = [
+ "anyhow",
+ "itertools 0.12.1",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "prost-types"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0"
+dependencies = [
+ "prost",
+]
+
+[[package]]
+name = "psm"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "pulldown-cmark"
+version = "0.9.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b"
+dependencies = [
+ "bitflags 2.6.0",
+ "memchr",
+ "unicase",
+]
+
+[[package]]
+name = "pulp"
+version = "0.18.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0a01a0dc67cf4558d279f0c25b0962bd08fc6dec0137699eae304103e882fe6"
+dependencies = [
+ "bytemuck",
+ "libm",
+ "num-complex",
+ "reborrow",
+]
+
+[[package]]
+name = "pyo3"
+version = "0.21.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5e00b96a521718e08e03b1a622f01c8a8deb50719335de3f60b3b3950f069d8"
+dependencies = [
+ "cfg-if",
+ "indoc",
+ "libc",
+ "memoffset",
+ "parking_lot",
+ "portable-atomic",
+ "pyo3-build-config 0.21.2",
+ "pyo3-ffi",
+ "pyo3-macros",
+ "unindent",
+]
+
+[[package]]
+name = "pyo3-asyncio-0-21"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fde289486f7d5cee0ac7c20b2637a0657654681079cc5eedc90d9a2a79af1e5"
+dependencies = [
+ "futures",
+ "once_cell",
+ "pin-project-lite",
+ "pyo3",
+ "pyo3-asyncio-macros-0-21",
+ "tokio",
+]
+
+[[package]]
+name = "pyo3-asyncio-macros-0-21"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e5ffc4e987e866bf54b781235a6c3b91e7e67df14f73ce716625ee78728554a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "pyo3-build-config"
+version = "0.20.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "deaa5745de3f5231ce10517a1f5dd97d53e5a2fd77aa6b5842292085831d48d7"
+dependencies = [
+ "once_cell",
+ "target-lexicon",
+]
+
+[[package]]
+name = "pyo3-build-config"
+version = "0.21.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7883df5835fafdad87c0d888b266c8ec0f4c9ca48a5bed6bbb592e8dedee1b50"
+dependencies = [
+ "once_cell",
+ "target-lexicon",
+]
+
+[[package]]
+name = "pyo3-ffi"
+version = "0.21.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01be5843dc60b916ab4dad1dca6d20b9b4e6ddc8e15f50c47fe6d85f1fb97403"
+dependencies = [
+ "libc",
+ "pyo3-build-config 0.21.2",
+]
+
+[[package]]
+name = "pyo3-macros"
+version = "0.21.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77b34069fc0682e11b31dbd10321cbf94808394c56fd996796ce45217dfac53c"
+dependencies = [
+ "proc-macro2",
+ "pyo3-macros-backend",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "pyo3-macros-backend"
+version = "0.21.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08260721f32db5e1a5beae69a55553f56b99bd0e1c3e6e0a5e8851a9d0f5a85c"
+dependencies = [
+ "heck 0.4.1",
+ "proc-macro2",
+ "pyo3-build-config 0.21.2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "quanta"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a17e662a7a8291a865152364c20c7abc5e60486ab2001e8ec10b24862de0b9ab"
+dependencies = [
+ "crossbeam-utils",
+ "libc",
+ "mach2",
+ "once_cell",
+ "raw-cpuid 10.7.0",
+ "wasi",
+ "web-sys",
+ "winapi",
+]
+
+[[package]]
+name = "quick-xml"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96a05e2e8efddfa51a84ca47cec303fac86c8541b686d37cac5efc0e094417bc"
+dependencies = [
+ "memchr",
+ "serde",
+]
+
+[[package]]
+name = "quinn"
+version = "0.11.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684"
+dependencies = [
+ "bytes",
+ "pin-project-lite",
+ "quinn-proto",
+ "quinn-udp",
+ "rustc-hash 2.0.0",
+ "rustls 0.23.13",
+ "socket2 0.5.7",
+ "thiserror",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "quinn-proto"
+version = "0.11.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6"
+dependencies = [
+ "bytes",
+ "rand",
+ "ring",
+ "rustc-hash 2.0.0",
+ "rustls 0.23.13",
+ "slab",
+ "thiserror",
+ "tinyvec",
+ "tracing",
+]
+
+[[package]]
+name = "quinn-udp"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b"
+dependencies = [
+ "libc",
+ "once_cell",
+ "socket2 0.5.7",
+ "tracing",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "radium"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "rand_distr"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31"
+dependencies = [
+ "num-traits",
+ "rand",
+]
+
+[[package]]
+name = "random_word"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07eed67a16dde2cc3c7f65c072acd8d5b2e53d4aab95067c320db851c7651f29"
+dependencies = [
+ "ahash",
+ "brotli",
+ "once_cell",
+ "paste",
+ "rand",
+ "unicase",
+]
+
+[[package]]
+name = "rangemap"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f60fcc7d6849342eff22c4350c8b9a989ee8ceabc4b481253e8946b9fe83d684"
+
+[[package]]
+name = "raw-cpuid"
+version = "10.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "raw-cpuid"
+version = "11.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb9ee317cfe3fbd54b36a511efc1edd42e216903c9cd575e686dd68a2ba90d8d"
+dependencies = [
+ "bitflags 2.6.0",
+]
+
+[[package]]
+name = "rayon"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
+dependencies = [
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-cond"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "059f538b55efd2309c9794130bc149c6a553db90e9d99c2030785c82f0bd7df9"
+dependencies = [
+ "either",
+ "itertools 0.11.0",
+ "rayon",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
+dependencies = [
+ "crossbeam-deque",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "reborrow"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430"
+
+[[package]]
+name = "recursive"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0786a43debb760f491b1bc0269fe5e84155353c67482b9e60d0cfb596054b43e"
+dependencies = [
+ "recursive-proc-macro-impl",
+ "stacker",
+]
+
+[[package]]
+name = "recursive-proc-macro-impl"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76009fbe0614077fc1a2ce255e3a1881a2e3a3527097d5dc6d8212c585e7e38b"
+dependencies = [
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0884ad60e090bf1345b93da0a5de8923c93884cd03f40dfcfddd3b4bee661853"
+dependencies = [
+ "bitflags 2.6.0",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
+dependencies = [
+ "getrandom",
+ "libredox",
+ "thiserror",
+]
+
+[[package]]
+name = "regex"
+version = "1.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-lite"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a"
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
+
+[[package]]
+name = "reqwest"
+version = "0.11.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62"
+dependencies = [
+ "async-compression",
+ "base64 0.21.7",
+ "bytes",
+ "encoding_rs",
+ "futures-core",
+ "futures-util",
+ "h2 0.3.26",
+ "http 0.2.12",
+ "http-body 0.4.6",
+ "hyper 0.14.30",
+ "hyper-tls",
+ "ipnet",
+ "js-sys",
+ "log",
+ "mime",
+ "native-tls",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "rustls-pemfile 1.0.4",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "sync_wrapper 0.1.2",
+ "system-configuration",
+ "tokio",
+ "tokio-native-tls",
+ "tokio-util",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "winreg",
+]
+
+[[package]]
+name = "reqwest"
+version = "0.12.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63"
+dependencies = [
+ "base64 0.22.1",
+ "bytes",
+ "futures-core",
+ "futures-util",
+ "h2 0.4.6",
+ "http 1.1.0",
+ "http-body 1.0.1",
+ "http-body-util",
+ "hyper 1.4.1",
+ "hyper-rustls 0.27.3",
+ "hyper-util",
+ "ipnet",
+ "js-sys",
+ "log",
+ "mime",
+ "mime_guess",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "quinn",
+ "rustls 0.23.13",
+ "rustls-native-certs 0.7.3",
+ "rustls-pemfile 2.1.3",
+ "rustls-pki-types",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "sync_wrapper 1.0.1",
+ "tokio",
+ "tokio-rustls 0.26.0",
+ "tokio-util",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "wasm-streams",
+ "web-sys",
+ "windows-registry",
+]
+
+[[package]]
+name = "reqwest-eventsource"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "632c55746dbb44275691640e7b40c907c16a2dc1a5842aa98aaec90da6ec6bde"
+dependencies = [
+ "eventsource-stream",
+ "futures-core",
+ "futures-timer",
+ "mime",
+ "nom",
+ "pin-project-lite",
+ "reqwest 0.12.7",
+ "thiserror",
+]
+
+[[package]]
+name = "rfc6979"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb"
+dependencies = [
+ "crypto-bigint 0.4.9",
+ "hmac",
+ "zeroize",
+]
+
+[[package]]
+name = "ring"
+version = "0.17.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
+dependencies = [
+ "cc",
+ "cfg-if",
+ "getrandom",
+ "libc",
+ "spin",
+ "untrusted",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "roaring"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f4b84ba6e838ceb47b41de5194a60244fac43d9fe03b71dbe8c5a201081d6d1"
+dependencies = [
+ "bytemuck",
+ "byteorder",
+]
+
+[[package]]
+name = "rust-stemmers"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54"
+dependencies = [
+ "serde",
+ "serde_derive",
+]
+
+[[package]]
+name = "rustc-demangle"
+version = "0.1.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
+
+[[package]]
+name = "rustc-hash"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+
+[[package]]
+name = "rustc-hash"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"
+
+[[package]]
+name = "rustc_version"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
+dependencies = [
+ "semver 1.0.23",
+]
+
+[[package]]
+name = "rustix"
+version = "0.37.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2"
+dependencies = [
+ "bitflags 1.3.2",
+ "errno",
+ "io-lifetimes",
+ "libc",
+ "linux-raw-sys 0.3.8",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "rustix"
+version = "0.38.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811"
+dependencies = [
+ "bitflags 2.6.0",
+ "errno",
+ "libc",
+ "linux-raw-sys 0.4.14",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "rustls"
+version = "0.21.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e"
+dependencies = [
+ "log",
+ "ring",
+ "rustls-webpki 0.101.7",
+ "sct",
+]
+
+[[package]]
+name = "rustls"
+version = "0.23.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8"
+dependencies = [
+ "log",
+ "once_cell",
+ "ring",
+ "rustls-pki-types",
+ "rustls-webpki 0.102.8",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "rustls-native-certs"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00"
+dependencies = [
+ "openssl-probe",
+ "rustls-pemfile 1.0.4",
+ "schannel",
+ "security-framework",
+]
+
+[[package]]
+name = "rustls-native-certs"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5"
+dependencies = [
+ "openssl-probe",
+ "rustls-pemfile 2.1.3",
+ "rustls-pki-types",
+ "schannel",
+ "security-framework",
+]
+
+[[package]]
+name = "rustls-native-certs"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcaf18a4f2be7326cd874a5fa579fae794320a0f388d365dca7e480e55f83f8a"
+dependencies = [
+ "openssl-probe",
+ "rustls-pemfile 2.1.3",
+ "rustls-pki-types",
+ "schannel",
+ "security-framework",
+]
+
+[[package]]
+name = "rustls-pemfile"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
+dependencies = [
+ "base64 0.21.7",
+]
+
+[[package]]
+name = "rustls-pemfile"
+version = "2.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425"
+dependencies = [
+ "base64 0.22.1",
+ "rustls-pki-types",
+]
+
+[[package]]
+name = "rustls-pki-types"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0"
+
+[[package]]
+name = "rustls-webpki"
+version = "0.101.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
+dependencies = [
+ "ring",
+ "untrusted",
+]
+
+[[package]]
+name = "rustls-webpki"
+version = "0.102.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9"
+dependencies = [
+ "ring",
+ "rustls-pki-types",
+ "untrusted",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6"
+
+[[package]]
+name = "ryu"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
+
+[[package]]
+name = "safetensors"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44560c11236a6130a46ce36c836a62936dc81ebf8c36a37947423571be0e55b6"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "schannel"
+version = "0.1.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b"
+dependencies = [
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "scheduled-thread-pool"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19"
+dependencies = [
+ "parking_lot",
+]
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "sct"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
+dependencies = [
+ "ring",
+ "untrusted",
+]
+
+[[package]]
+name = "sec1"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
+dependencies = [
+ "base16ct",
+ "der",
+ "generic-array",
+ "pkcs8",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "secrecy"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e"
+dependencies = [
+ "serde",
+ "zeroize",
+]
+
+[[package]]
+name = "security-framework"
+version = "2.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
+dependencies = [
+ "bitflags 2.6.0",
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "semver"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
+dependencies = [
+ "semver-parser",
+]
+
+[[package]]
+name = "semver"
+version = "1.0.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "semver-parser"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
+
+[[package]]
+name = "seq-macro"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4"
+
+[[package]]
+name = "serde"
+version = "1.0.210"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.210"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.128"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_plain"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ce1fc6db65a611022b23a0dec6975d63fb80a302cb3388835ff02c097258d50"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde_urlencoded"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
+dependencies = [
+ "form_urlencoded",
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_with"
+version = "3.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857"
+dependencies = [
+ "base64 0.22.1",
+ "chrono",
+ "hex",
+ "indexmap 1.9.3",
+ "indexmap 2.5.0",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "serde_with_macros",
+ "time",
+]
+
+[[package]]
+name = "serde_with_macros"
+version = "3.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350"
+dependencies = [
+ "darling",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "sha1"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "shellexpand"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da03fa3b94cc19e3ebfc88c4229c49d8f08cdbd1228870a45f0ffdf84988e14b"
+dependencies = [
+ "dirs",
+]
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "signature"
+version = "1.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c"
+dependencies = [
+ "digest",
+ "rand_core",
+]
+
+[[package]]
+name = "simdutf8"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a"
+
+[[package]]
+name = "siphasher"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
+
+[[package]]
+name = "skeptic"
+version = "0.13.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16d23b015676c90a0f01c197bfdc786c20342c73a0afdda9025adb0bc42940a8"
+dependencies = [
+ "bytecount",
+ "cargo_metadata",
+ "error-chain",
+ "glob",
+ "pulldown-cmark",
+ "tempfile",
+ "walkdir",
+]
+
+[[package]]
+name = "sketches-ddsketch"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85636c14b73d81f541e525f585c0a2109e6744e1565b5c1668e31c70c10ed65c"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "slab"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+
+[[package]]
+name = "smartstring"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29"
+dependencies = [
+ "autocfg",
+ "static_assertions",
+ "version_check",
+]
+
+[[package]]
+name = "snafu"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4de37ad025c587a29e8f3f5605c00f70b98715ef90b9061a815b9e59e9042d6"
+dependencies = [
+ "doc-comment",
+ "snafu-derive",
+]
+
+[[package]]
+name = "snafu-derive"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "990079665f075b699031e9c08fd3ab99be5029b96f3b78dc0709e8f77e4efebf"
+dependencies = [
+ "heck 0.4.1",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "socket2"
+version = "0.4.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d"
+dependencies = [
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "socket2"
+version = "0.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "spin"
+version = "0.9.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
+
+[[package]]
+name = "spki"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b"
+dependencies = [
+ "base64ct",
+ "der",
+]
+
+[[package]]
+name = "spm_precompiled"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5851699c4033c63636f7ea4cf7b7c1f1bf06d0cc03cfb42e711de5a5c46cf326"
+dependencies = [
+ "base64 0.13.1",
+ "nom",
+ "serde",
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "sqlparser"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "743b4dc2cbde11890ccb254a8fc9d537fa41b36da00de2a1c5e9848c9bc42bd7"
+dependencies = [
+ "log",
+]
+
+[[package]]
+name = "sqlparser"
+version = "0.47.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "295e9930cd7a97e58ca2a070541a3ca502b17f5d1fa7157376d0fabd85324f25"
+dependencies = [
+ "log",
+ "sqlparser_derive",
+]
+
+[[package]]
+name = "sqlparser_derive"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01b2e185515564f15375f593fb966b5718bc624ba77fe49fa4616ad619690554"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
+name = "stacker"
+version = "0.1.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "799c883d55abdb5e98af1a7b3f23b9b6de8ecada0ecac058672d7635eb48ca7b"
+dependencies = [
+ "cc",
+ "cfg-if",
+ "libc",
+ "psm",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "std_prelude"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8207e78455ffdf55661170876f88daf85356e4edd54e0a3dbc79586ca1e50cbe"
+
+[[package]]
+name = "stfu8"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51f1e89f093f99e7432c491c382b88a6860a5adbe6bf02574bf0a08efff1978"
+
+[[package]]
+name = "streaming-decompression"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf6cc3b19bfb128a8ad11026086e31d3ce9ad23f8ea37354b31383a187c44cf3"
+dependencies = [
+ "fallible-streaming-iterator",
+]
+
+[[package]]
+name = "streaming-iterator"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520"
+
+[[package]]
+name = "strength_reduce"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82"
+
+[[package]]
+name = "strsim"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+
+[[package]]
+name = "strum"
+version = "0.26.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06"
+dependencies = [
+ "strum_macros 0.26.4",
+]
+
+[[package]]
+name = "strum_macros"
+version = "0.25.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0"
+dependencies = [
+ "heck 0.4.1",
+ "proc-macro2",
+ "quote",
+ "rustversion",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "strum_macros"
+version = "0.26.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be"
+dependencies = [
+ "heck 0.5.0",
+ "proc-macro2",
+ "quote",
+ "rustversion",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "subtle"
+version = "2.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn-mid"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fea305d57546cc8cd04feb14b62ec84bf17f50e3f7b12560d7bfa9265f39d9ed"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "sync_wrapper"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+
+[[package]]
+name = "sync_wrapper"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394"
+dependencies = [
+ "futures-core",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "sysctl"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec7dddc5f0fee506baf8b9fdb989e242f17e4b11c61dfbb0635b705217199eea"
+dependencies = [
+ "bitflags 2.6.0",
+ "byteorder",
+ "enum-as-inner",
+ "libc",
+ "thiserror",
+ "walkdir",
+]
+
+[[package]]
+name = "sysinfo"
+version = "0.30.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3"
+dependencies = [
+ "cfg-if",
+ "core-foundation-sys",
+ "libc",
+ "ntapi",
+ "once_cell",
+ "windows",
+]
+
+[[package]]
+name = "system-configuration"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "system-configuration-sys",
+]
+
+[[package]]
+name = "system-configuration-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "tagptr"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417"
+
+[[package]]
+name = "tantivy"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8d0582f186c0a6d55655d24543f15e43607299425c5ad8352c242b914b31856"
+dependencies = [
+ "aho-corasick",
+ "arc-swap",
+ "base64 0.22.1",
+ "bitpacking",
+ "byteorder",
+ "census",
+ "crc32fast",
+ "crossbeam-channel",
+ "downcast-rs",
+ "fastdivide",
+ "fnv",
+ "fs4",
+ "htmlescape",
+ "itertools 0.12.1",
+ "levenshtein_automata",
+ "log",
+ "lru",
+ "lz4_flex",
+ "measure_time",
+ "memmap2 0.9.4",
+ "num_cpus",
+ "once_cell",
+ "oneshot",
+ "rayon",
+ "regex",
+ "rust-stemmers",
+ "rustc-hash 1.1.0",
+ "serde",
+ "serde_json",
+ "sketches-ddsketch",
+ "smallvec",
+ "tantivy-bitpacker",
+ "tantivy-columnar",
+ "tantivy-common",
+ "tantivy-fst",
+ "tantivy-query-grammar",
+ "tantivy-stacker",
+ "tantivy-tokenizer-api",
+ "tempfile",
+ "thiserror",
+ "time",
+ "uuid",
+ "winapi",
+]
+
+[[package]]
+name = "tantivy-bitpacker"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "284899c2325d6832203ac6ff5891b297fc5239c3dc754c5bc1977855b23c10df"
+dependencies = [
+ "bitpacking",
+]
+
+[[package]]
+name = "tantivy-columnar"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12722224ffbe346c7fec3275c699e508fd0d4710e629e933d5736ec524a1f44e"
+dependencies = [
+ "downcast-rs",
+ "fastdivide",
+ "itertools 0.12.1",
+ "serde",
+ "tantivy-bitpacker",
+ "tantivy-common",
+ "tantivy-sstable",
+ "tantivy-stacker",
+]
+
+[[package]]
+name = "tantivy-common"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8019e3cabcfd20a1380b491e13ff42f57bb38bf97c3d5fa5c07e50816e0621f4"
+dependencies = [
+ "async-trait",
+ "byteorder",
+ "ownedbytes",
+ "serde",
+ "time",
+]
+
+[[package]]
+name = "tantivy-fst"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d60769b80ad7953d8a7b2c70cdfe722bbcdcac6bccc8ac934c40c034d866fc18"
+dependencies = [
+ "byteorder",
+ "regex-syntax",
+ "utf8-ranges",
+]
+
+[[package]]
+name = "tantivy-query-grammar"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "847434d4af57b32e309f4ab1b4f1707a6c566656264caa427ff4285c4d9d0b82"
+dependencies = [
+ "nom",
+]
+
+[[package]]
+name = "tantivy-sstable"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c69578242e8e9fc989119f522ba5b49a38ac20f576fc778035b96cc94f41f98e"
+dependencies = [
+ "tantivy-bitpacker",
+ "tantivy-common",
+ "tantivy-fst",
+ "zstd",
+]
+
+[[package]]
+name = "tantivy-stacker"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c56d6ff5591fc332739b3ce7035b57995a3ce29a93ffd6012660e0949c956ea8"
+dependencies = [
+ "murmurhash32",
+ "rand_distr",
+ "tantivy-common",
+]
+
+[[package]]
+name = "tantivy-tokenizer-api"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a0dcade25819a89cfe6f17d932c9cedff11989936bf6dd4f336d50392053b04"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "tap"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
+
+[[package]]
+name = "target-features"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1bbb9f3c5c463a01705937a24fdabc5047929ac764b2d5b9cf681c1f5041ed5"
+
+[[package]]
+name = "target-lexicon"
+version = "0.12.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
+
+[[package]]
+name = "tempfile"
+version = "3.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64"
+dependencies = [
+ "cfg-if",
+ "fastrand 2.1.1",
+ "once_cell",
+ "rustix 0.38.37",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "termcolor"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.63"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.63"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "time"
+version = "0.3.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
+dependencies = [
+ "deranged",
+ "itoa",
+ "num-conv",
+ "powerfmt",
+ "serde",
+ "time-core",
+ "time-macros",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
+
+[[package]]
+name = "time-macros"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
+dependencies = [
+ "num-conv",
+ "time-core",
+]
+
+[[package]]
+name = "tiny-keccak"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237"
+dependencies = [
+ "crunchy",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
+name = "tokenizers"
+version = "0.19.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e500fad1dd3af3d626327e6a3fe5050e664a6eaa4708b8ca92f1794aaf73e6fd"
+dependencies = [
+ "aho-corasick",
+ "derive_builder",
+ "esaxx-rs",
+ "getrandom",
+ "indicatif",
+ "itertools 0.12.1",
+ "lazy_static",
+ "log",
+ "macro_rules_attribute",
+ "monostate",
+ "onig",
+ "paste",
+ "rand",
+ "rayon",
+ "rayon-cond",
+ "regex",
+ "regex-syntax",
+ "serde",
+ "serde_json",
+ "spm_precompiled",
+ "thiserror",
+ "unicode-normalization-alignments",
+ "unicode-segmentation",
+ "unicode_categories",
+]
+
+[[package]]
+name = "tokio"
+version = "1.40.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998"
+dependencies = [
+ "backtrace",
+ "bytes",
+ "libc",
+ "mio",
+ "pin-project-lite",
+ "signal-hook-registry",
+ "socket2 0.5.7",
+ "tokio-macros",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "tokio-macros"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "tokio-native-tls"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
+dependencies = [
+ "native-tls",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-rustls"
+version = "0.24.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
+dependencies = [
+ "rustls 0.21.12",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-rustls"
+version = "0.26.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
+dependencies = [
+ "rustls 0.23.13",
+ "rustls-pki-types",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-stream"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1"
+dependencies = [
+ "futures-core",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-util"
+version = "0.7.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "futures-sink",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
+
+[[package]]
+name = "toml_edit"
+version = "0.22.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d"
+dependencies = [
+ "indexmap 2.5.0",
+ "toml_datetime",
+ "winnow",
+]
+
+[[package]]
+name = "tower"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project",
+ "pin-project-lite",
+ "tokio",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "tower-layer"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
+
+[[package]]
+name = "tower-service"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
+
+[[package]]
+name = "tracing"
+version = "0.1.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
+dependencies = [
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "triomphe"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6631e42e10b40c0690bf92f404ebcfe6e1fdb480391d15f17cc8e96eeed5369"
+
+[[package]]
+name = "try-lock"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
+
+[[package]]
+name = "twox-hash"
+version = "1.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
+dependencies = [
+ "cfg-if",
+ "static_assertions",
+]
+
+[[package]]
+name = "typenum"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+
+[[package]]
+name = "unicase"
+version = "2.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "unicode-normalization-alignments"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43f613e4fa046e69818dd287fdc4bc78175ff20331479dab6e1b0f98d57062de"
+dependencies = [
+ "smallvec",
+]
+
+[[package]]
+name = "unicode-reverse"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b6f4888ebc23094adfb574fdca9fdc891826287a6397d2cd28802ffd6f20c76"
+dependencies = [
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
+
+[[package]]
+name = "unicode_categories"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e"
+
+[[package]]
+name = "unindent"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce"
+
+[[package]]
+name = "untrusted"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+
+[[package]]
+name = "ureq"
+version = "2.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a"
+dependencies = [
+ "base64 0.22.1",
+ "flate2",
+ "log",
+ "native-tls",
+ "once_cell",
+ "rustls 0.23.13",
+ "rustls-pki-types",
+ "serde",
+ "serde_json",
+ "url",
+ "webpki-roots",
+]
+
+[[package]]
+name = "url"
+version = "2.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+]
+
+[[package]]
+name = "urlencoding"
+version = "2.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
+
+[[package]]
+name = "utf8-ranges"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fcfc827f90e53a02eaef5e535ee14266c1d569214c6aa70133a624d8a3164ba"
+
+[[package]]
+name = "utf8parse"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
+
+[[package]]
+name = "uuid"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314"
+dependencies = [
+ "getrandom",
+ "serde",
+]
+
+[[package]]
+name = "vcpkg"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+
+[[package]]
+name = "version_check"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+
+[[package]]
+name = "vsimd"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64"
+
+[[package]]
+name = "waker-fn"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7"
+
+[[package]]
+name = "walkdir"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
+[[package]]
+name = "want"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
+dependencies = [
+ "try-lock",
+]
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.43"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
+
+[[package]]
+name = "wasm-streams"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129"
+dependencies = [
+ "futures-util",
+ "js-sys",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.70"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "webpki-roots"
+version = "0.26.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a"
+dependencies = [
+ "rustls-pki-types",
+]
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
+dependencies = [
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
+dependencies = [
+ "windows-core",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-registry"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0"
+dependencies = [
+ "windows-result",
+ "windows-strings",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-result"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-strings"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
+dependencies = [
+ "windows-result",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.45.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+dependencies = [
+ "windows-targets 0.42.2",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
+dependencies = [
+ "windows_aarch64_gnullvm 0.42.2",
+ "windows_aarch64_msvc 0.42.2",
+ "windows_i686_gnu 0.42.2",
+ "windows_i686_msvc 0.42.2",
+ "windows_x86_64_gnu 0.42.2",
+ "windows_x86_64_gnullvm 0.42.2",
+ "windows_x86_64_msvc 0.42.2",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "winnow"
+version = "0.6.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winreg"
+version = "0.50.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "wyz"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed"
+dependencies = [
+ "tap",
+]
+
+[[package]]
+name = "xmlparser"
+version = "0.13.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4"
+
+[[package]]
+name = "xxhash-rust"
+version = "0.8.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a5cbf750400958819fb6178eaa83bee5cd9c29a26a40cc241df8c70fdd46984"
+
+[[package]]
+name = "yoke"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5"
+dependencies = [
+ "serde",
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+ "synstructure",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
+dependencies = [
+ "byteorder",
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+ "synstructure",
+]
+
+[[package]]
+name = "zeroize"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
+
+[[package]]
+name = "zip"
+version = "1.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9cc23c04387f4da0374be4533ad1208cbb091d5c11d070dfef13676ad6497164"
+dependencies = [
+ "arbitrary",
+ "crc32fast",
+ "crossbeam-utils",
+ "displaydoc",
+ "indexmap 2.5.0",
+ "num_enum",
+ "thiserror",
+]
+
+[[package]]
+name = "zstd"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9"
+dependencies = [
+ "zstd-safe",
+]
+
+[[package]]
+name = "zstd-safe"
+version = "7.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059"
+dependencies = [
+ "zstd-sys",
+]
+
+[[package]]
+name = "zstd-sys"
+version = "2.0.13+zstd.1.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa"
+dependencies = [
+ "cc",
+ "pkg-config",
+]
diff --git a/pkgs/development/python-modules/lancedb/default.nix b/pkgs/development/python-modules/lancedb/default.nix
new file mode 100644
index 0000000000000..e1dcbd2a1a229
--- /dev/null
+++ b/pkgs/development/python-modules/lancedb/default.nix
@@ -0,0 +1,130 @@
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  rustPlatform,
+  fetchFromGitHub,
+  darwin,
+  libiconv,
+  pkg-config,
+  protobuf,
+  attrs,
+  cachetools,
+  deprecation,
+  overrides,
+  packaging,
+  pydantic,
+  pylance,
+  requests,
+  retry,
+  tqdm,
+  aiohttp,
+  pandas,
+  polars,
+  pytest-asyncio,
+  pytestCheckHook,
+  nix-update-script,
+}:
+
+buildPythonPackage rec {
+  pname = "lancedb";
+  version = "0.13.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "lancedb";
+    repo = "lancedb";
+    rev = "refs/tags/python-v${version}";
+    hash = "sha256-6E20WgyoEALdxmiOfgq89dCkqovvIMzc/wy+kvjDWwU=";
+  };
+
+  buildAndTestSubdir = "python";
+
+  cargoDeps = rustPlatform.importCargoLock { lockFile = ./Cargo.lock; };
+
+  postPatch = ''
+    ln -s ${./Cargo.lock} Cargo.lock
+  '';
+
+  build-system = [ rustPlatform.maturinBuildHook ];
+
+  nativeBuildInputs = [
+    pkg-config
+    rustPlatform.cargoSetupHook
+  ];
+
+  buildInputs =
+    [
+      libiconv
+      protobuf
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin (
+      with darwin.apple_sdk.frameworks;
+      [
+        IOKit
+        Security
+        SystemConfiguration
+      ]
+    );
+
+  dependencies = [
+    attrs
+    cachetools
+    deprecation
+    overrides
+    packaging
+    pydantic
+    pylance
+    requests
+    retry
+    tqdm
+  ];
+
+  pythonImportsCheck = [ "lancedb" ];
+
+  nativeCheckInputs = [
+    aiohttp
+    pandas
+    polars
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    cd python/python/tests
+  '';
+
+  pytestFlagsArray = [ "-m 'not slow'" ];
+
+  disabledTests = [
+    # require tantivy which is not packaged in nixpkgs
+    "test_basic"
+
+    # polars.exceptions.ComputeError: TypeError: _scan_pyarrow_dataset_impl() got multiple values for argument 'batch_size'
+    # https://github.com/lancedb/lancedb/issues/1539
+    "test_polars"
+  ];
+
+  disabledTestPaths = [
+    # touch the network
+    "test_s3.py"
+  ];
+
+  passthru.updateScript = nix-update-script {
+    extraArgs = [
+      "--version-regex"
+      "python-v(.*)"
+      "--generate-lockfile"
+      "--lockfile-metadata-path"
+      "python"
+    ];
+  };
+
+  meta = {
+    description = "Developer-friendly, serverless vector database for AI applications";
+    homepage = "https://github.com/lancedb/lancedb";
+    changelog = "https://github.com/lancedb/lancedb/releases/tag/python-v${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ natsukium ];
+  };
+}
diff --git a/pkgs/development/python-modules/langchain-aws/default.nix b/pkgs/development/python-modules/langchain-aws/default.nix
new file mode 100644
index 0000000000000..767f2262c2870
--- /dev/null
+++ b/pkgs/development/python-modules/langchain-aws/default.nix
@@ -0,0 +1,72 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  boto3,
+  langchain-core,
+  numpy,
+
+  # tests
+  langchain-standard-tests,
+  pytest-asyncio,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "langchain-aws";
+  version = "0.2.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "langchain-ai";
+    repo = "langchain-aws";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-P9CfAVpKh7djhUQc3DyyJTWqs9RbrTeLyynLei0x00o=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "--snapshot-warn-unused" "" \
+      --replace-fail "--cov=langchain_aws" ""
+  '';
+
+  sourceRoot = "${src.name}/libs/aws";
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    boto3
+    langchain-core
+    numpy
+  ];
+
+  nativeCheckInputs = [
+    langchain-standard-tests
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [ "tests/unit_tests" ];
+
+  pythonImportsCheck = [ "langchain_aws" ];
+
+  passthru = {
+    inherit (langchain-core) updateScript;
+  };
+
+  meta = {
+    changelog = "https://github.com/langchain-ai/langchain-aws/releases/tag/v${version}";
+    description = "Build LangChain application on AWS";
+    homepage = "https://github.com/langchain-ai/langchain-aws/";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [
+      drupol
+      natsukium
+    ];
+  };
+}
diff --git a/pkgs/development/python-modules/langchain-azure-dynamic-sessions/default.nix b/pkgs/development/python-modules/langchain-azure-dynamic-sessions/default.nix
new file mode 100644
index 0000000000000..9bf287ea2c341
--- /dev/null
+++ b/pkgs/development/python-modules/langchain-azure-dynamic-sessions/default.nix
@@ -0,0 +1,79 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  azure-identity,
+  langchain-core,
+  langchain-openai,
+
+  # tests
+  freezegun,
+  lark,
+  pandas,
+  pytest-asyncio,
+  pytest-mock,
+  pytest-socket,
+  pytestCheckHook,
+  requests-mock,
+  responses,
+  syrupy,
+  toml,
+}:
+
+buildPythonPackage rec {
+  pname = "langchain-azure-dynamic-sessions";
+  version = "0.2.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "langchain-ai";
+    repo = "langchain";
+    rev = "refs/tags/langchain-azure-dynamic-sessions==${version}";
+    hash = "sha256-tgvoOSr4tpi+tFBan+kw8FZUfUJHcQXv9e1nyeGP0so=";
+  };
+
+  sourceRoot = "${src.name}/libs/partners/azure-dynamic-sessions";
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    azure-identity
+    langchain-core
+    langchain-openai
+  ];
+
+  nativeCheckInputs = [
+    freezegun
+    lark
+    pandas
+    pytest-asyncio
+    pytest-mock
+    pytest-socket
+    pytestCheckHook
+    requests-mock
+    responses
+    syrupy
+    toml
+  ];
+
+  pytestFlagsArray = [ "tests/unit_tests" ];
+
+  pythonImportsCheck = [ "langchain_azure_dynamic_sessions" ];
+
+  passthru = {
+    inherit (langchain-core) updateScript;
+  };
+
+  meta = {
+    description = "Integration package connecting Azure Container Apps dynamic sessions and LangChain";
+    homepage = "https://github.com/langchain-ai/langchain/tree/master/libs/partners/azure-dynamic-sessions";
+    changelog = "https://github.com/langchain-ai/langchain/releases/tag/langchain-azure-dynamic-sessions==${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
+  };
+}
diff --git a/pkgs/development/python-modules/langchain-chroma/default.nix b/pkgs/development/python-modules/langchain-chroma/default.nix
new file mode 100644
index 0000000000000..f9a35e759c8e8
--- /dev/null
+++ b/pkgs/development/python-modules/langchain-chroma/default.nix
@@ -0,0 +1,51 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  chromadb,
+  langchain-core,
+  numpy,
+  poetry-core,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "langchain-chroma";
+  version = "0.1.4";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "langchain-ai";
+    repo = "langchain";
+    rev = "refs/tags/langchain-chroma==${version}";
+    hash = "sha256-pU7H8OYXa+JjdkSO36xESPI6r3xA+9cFXxeJnfpYuHc=";
+  };
+
+  sourceRoot = "${src.name}/libs/partners/chroma";
+
+  build-system = [ poetry-core ];
+
+  pythonRelaxDeps = [ "chromadb" ];
+
+  dependencies = [
+    langchain-core
+    chromadb
+    numpy
+  ];
+
+  pythonImportsCheck = [ "langchain_chroma" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  passthru = {
+    inherit (langchain-core) updateScript;
+  };
+
+  meta = {
+    changelog = "https://github.com/langchain-ai/langchain/releases/tag/langchain-chroma==${version}";
+    description = "Integration package connecting Chroma and LangChain";
+    homepage = "https://github.com/langchain-ai/langchain/tree/master/libs/partners/chroma";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
+  };
+}
diff --git a/pkgs/development/python-modules/langchain-community/default.nix b/pkgs/development/python-modules/langchain-community/default.nix
index af29f6068b045..54de5416be186 100644
--- a/pkgs/development/python-modules/langchain-community/default.nix
+++ b/pkgs/development/python-modules/langchain-community/default.nix
@@ -1,61 +1,116 @@
 {
   lib,
   buildPythonPackage,
-  fetchPypi,
+  fetchFromGitHub,
+
+  # build-system
   poetry-core,
-  pythonOlder,
+
+  # dependencies
   aiohttp,
   dataclasses-json,
   langchain-core,
+  langchain,
   langsmith,
-  numpy,
+  pydantic-settings,
   pyyaml,
   requests,
   sqlalchemy,
   tenacity,
+
+  # optional-dependencies
   typer,
+  numpy,
+
+  # tests
+  httpx,
+  langchain-standard-tests,
+  lark,
+  pandas,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  requests-mock,
+  responses,
+  syrupy,
+  toml,
 }:
 
 buildPythonPackage rec {
   pname = "langchain-community";
-  version = "0.0.36";
+  version = "0.3.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
-
-  src = fetchPypi {
-    pname = "langchain_community";
-    inherit version;
-    hash = "sha256-l76dAM8RnJYeA+0ibgTmcPUbXUL1sF/8NRhZj6bSDHQ=";
+  src = fetchFromGitHub {
+    owner = "langchain-ai";
+    repo = "langchain";
+    rev = "refs/tags/langchain-community==${version}";
+    hash = "sha256-8kF7KlXcWbquRtp8EumkFYhGd0onxifVZsts0SU1dzE=";
   };
 
+  sourceRoot = "${src.name}/libs/community";
+
   build-system = [ poetry-core ];
 
+  pythonRelaxDeps = [ "pydantic-settings" ];
+
   dependencies = [
     aiohttp
     dataclasses-json
     langchain-core
+    langchain
     langsmith
-    numpy
+    pydantic-settings
     pyyaml
     requests
     sqlalchemy
     tenacity
   ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     cli = [ typer ];
+    numpy = [ numpy ];
   };
 
   pythonImportsCheck = [ "langchain_community" ];
 
-  # PyPI source does not have tests
-  doCheck = false;
+  nativeCheckInputs = [
+    httpx
+    langchain-standard-tests
+    lark
+    pandas
+    pytest-asyncio
+    pytest-mock
+    pytestCheckHook
+    requests-mock
+    responses
+    syrupy
+    toml
+  ];
+
+  pytestFlagsArray = [ "tests/unit_tests" ];
+
+  passthru = {
+    inherit (langchain-core) updateScript;
+  };
+
+  __darwinAllowLocalNetworking = true;
+
+  disabledTests = [
+    # Test require network access
+    "test_ovhcloud_embed_documents"
+    "test_yandex"
+    # duckdb-engine needs python-wasmer which is not yet available in Python 3.12
+    # See https://github.com/NixOS/nixpkgs/pull/326337 and https://github.com/wasmerio/wasmer-python/issues/778
+    "test_table_info"
+    "test_sql_database_run"
+  ];
 
-  meta = with lib; {
+  meta = {
+    changelog = "https://github.com/langchain-ai/langchain/releases/tag/langchain-community==${version}";
     description = "Community contributed LangChain integrations";
     homepage = "https://github.com/langchain-ai/langchain/tree/master/libs/community";
-    license = licenses.mit;
-    maintainers = with maintainers; [ natsukium ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
   };
 }
diff --git a/pkgs/development/python-modules/langchain-core/default.nix b/pkgs/development/python-modules/langchain-core/default.nix
index 3c0b421564492..0c3564d0f1137 100644
--- a/pkgs/development/python-modules/langchain-core/default.nix
+++ b/pkgs/development/python-modules/langchain-core/default.nix
@@ -1,62 +1,137 @@
 {
   lib,
-  anyio,
+  stdenv,
   buildPythonPackage,
-  fetchPypi,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
   jsonpatch,
   langsmith,
   packaging,
-  poetry-core,
-  pydantic,
-  pythonOlder,
-  pythonRelaxDepsHook,
   pyyaml,
-  requests,
   tenacity,
+
+  # optional-dependencies
+  pydantic,
+
+  # tests
+  freezegun,
+  grandalf,
+  httpx,
+  numpy,
+  pytest-asyncio,
+  pytest-mock,
+  pytest-xdist,
+  pytestCheckHook,
+  syrupy,
+
+  # passthru
+  writeScript,
 }:
 
 buildPythonPackage rec {
   pname = "langchain-core";
-  version = "0.1.48";
+  version = "0.3.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
-
-  src = fetchPypi {
-    pname = "langchain_core";
-    inherit version;
-    hash = "sha256-8KmwqPIvIZ72/YTisdkqgBToRRTAobVTNw/UApaBPBY=";
+  src = fetchFromGitHub {
+    owner = "langchain-ai";
+    repo = "langchain";
+    rev = "refs/tags/langchain-core==${version}";
+    hash = "sha256-BCqrJuy7R2jT3QmTvYwn8gHX7bc6Tq8HArK+F3PjBhw=";
   };
 
-  pythonRelaxDeps = [
-    "langsmith"
-    "packaging"
-  ];
+  sourceRoot = "${src.name}/libs/core";
 
   build-system = [ poetry-core ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
-
   dependencies = [
-    anyio
     jsonpatch
     langsmith
     packaging
-    pydantic
     pyyaml
-    requests
     tenacity
   ];
 
+  optional-dependencies = {
+    pydantic = [ pydantic ];
+  };
+
   pythonImportsCheck = [ "langchain_core" ];
 
-  # PyPI source does not have tests
-  doCheck = false;
+  nativeCheckInputs = [
+    freezegun
+    grandalf
+    httpx
+    numpy
+    pytest-asyncio
+    pytest-mock
+    pytest-xdist
+    pytestCheckHook
+    syrupy
+  ];
+
+  pytestFlagsArray = [ "tests/unit_tests" ];
+
+  # don't add langchain-standard-tests to nativeCheckInputs
+  # to avoid circular import
+  preCheck = ''
+    export PYTHONPATH=${src}/libs/standard-tests:$PYTHONPATH
+  '';
+
+  passthru = {
+    # Updates to core tend to drive updates in everything else
+    updateScript = writeScript "update.sh" ''
+      #!/usr/bin/env nix-shell
+      #!nix-shell -i bash -p nix-update
+
+      set -u -o pipefail +e
+      # Common core
+      nix-update --commit --version-regex 'langchain-core==(.*)' python3Packages.langchain-core
+      nix-update --commit --version-regex 'langchain-text-splitters==(.*)' python3Packages.langchain-text-splitters
+      nix-update --commit --version-regex 'langchain==(.*)' python3Packages.langchain
+      nix-update --commit --version-regex 'langchain-community==(.*)' python3Packages.langchain-community
+
+      # Extensions
+      nix-update --commit --version-regex 'langchain-aws==(.*)' python3Packages.langchain-aws
+      nix-update --commit --version-regex 'langchain-azure-dynamic-sessions==(.*)' python3Packages.langchain-azure-dynamic-sessions
+      nix-update --commit --version-regex 'langchain-chroma==(.*)' python3Packages.langchain-chroma
+      nix-update --commit --version-regex 'langchain-huggingface==(.*)' python3Packages.langchain-huggingface
+      nix-update --commit --version-regex 'langchain-mongodb==(.*)' python3Packages.langchain-mongodb
+      nix-update --commit --version-regex 'langchain-openai==(.*)' python3Packages.langchain-openai
+    '';
+  };
+
+  disabledTests =
+    [
+      # flaky, sometimes fail to strip uuid from AIMessageChunk before comparing to test value
+      "test_map_stream"
+      # Compares with machine-specific timings
+      "test_rate_limit"
+      # flaky: assert (1726352133.7419367 - 1726352132.2697523) < 1
+      "test_benchmark_model"
+
+      # TypeError: exceptions must be derived from Warning, not <class 'NoneType'>
+      "test_chat_prompt_template_variable_names"
+      "test_create_model_v2"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Langchain-core the following tests due to the test comparing execution time with magic values.
+      "test_queue_for_streaming_via_sync_call"
+      "test_same_event_loop"
+      # Comparisons with magic numbers
+      "test_rate_limit_ainvoke"
+      "test_rate_limit_astream"
+    ];
 
-  meta = with lib; {
+  meta = {
     description = "Building applications with LLMs through composability";
     homepage = "https://github.com/langchain-ai/langchain/tree/master/libs/core";
-    license = licenses.mit;
-    maintainers = with maintainers; [ natsukium ];
+    changelog = "https://github.com/langchain-ai/langchain/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
   };
 }
diff --git a/pkgs/development/python-modules/langchain-huggingface/default.nix b/pkgs/development/python-modules/langchain-huggingface/default.nix
new file mode 100644
index 0000000000000..91866b4121128
--- /dev/null
+++ b/pkgs/development/python-modules/langchain-huggingface/default.nix
@@ -0,0 +1,85 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  huggingface-hub,
+  langchain-core,
+  sentence-transformers,
+  tokenizers,
+  transformers,
+
+  # tests
+  freezegun,
+  httpx,
+  lark,
+  pandas,
+  pytest-asyncio,
+  pytest-mock,
+  pytest-socket,
+  pytestCheckHook,
+  requests-mock,
+  responses,
+  syrupy,
+  toml,
+}:
+
+buildPythonPackage rec {
+  pname = "langchain-huggingface";
+  version = "0.1.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "langchain-ai";
+    repo = "langchain";
+    rev = "refs/tags/langchain-huggingface==${version}";
+    hash = "sha256-ESWhhjWjCbBV/3KjeSwEQzvK6os1mmc3at+8gonfGt4=";
+  };
+
+  sourceRoot = "${src.name}/libs/partners/huggingface";
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    huggingface-hub
+    langchain-core
+    sentence-transformers
+    tokenizers
+    transformers
+  ];
+
+  nativeCheckInputs = [
+    freezegun
+    httpx
+    lark
+    pandas
+    pytest-asyncio
+    pytest-mock
+    pytest-socket
+    pytestCheckHook
+    requests-mock
+    responses
+    syrupy
+    toml
+  ];
+
+  pytestFlagsArray = [ "tests/unit_tests" ];
+
+  pythonImportsCheck = [ "langchain_huggingface" ];
+
+  passthru = {
+    inherit (langchain-core) updateScript;
+  };
+
+  meta = {
+    changelog = "https://github.com/langchain-ai/langchain/releases/tag/langchain-huggingface==${version}";
+    description = "An integration package connecting Huggingface related classes and LangChain";
+    homepage = "https://github.com/langchain-ai/langchain/tree/master/libs/partners/huggingface";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
+  };
+}
diff --git a/pkgs/development/python-modules/langchain-mongodb/default.nix b/pkgs/development/python-modules/langchain-mongodb/default.nix
new file mode 100644
index 0000000000000..0a064621887c6
--- /dev/null
+++ b/pkgs/development/python-modules/langchain-mongodb/default.nix
@@ -0,0 +1,70 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  langchain-core,
+  numpy,
+  pymongo,
+
+  freezegun,
+  httpx,
+  langchain,
+  pytest-asyncio,
+  pytestCheckHook,
+  pytest-mock,
+  syrupy,
+}:
+
+buildPythonPackage rec {
+  pname = "langchain-mongodb";
+  version = "0.2.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "langchain-ai";
+    repo = "langchain";
+    rev = "refs/tags/langchain-mongodb==${version}";
+    hash = "sha256-Jd9toXkS9dGtSIrJQ/5W+swV1z2BJOJKBtkyGzj3oSc=";
+  };
+
+  sourceRoot = "${src.name}/libs/partners/mongodb";
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    langchain-core
+    numpy
+    pymongo
+  ];
+
+  nativeCheckInputs = [
+    freezegun
+    httpx
+    langchain
+    pytest-asyncio
+    pytestCheckHook
+    pytest-mock
+    syrupy
+  ];
+
+  pytestFlagsArray = [ "tests/unit_tests" ];
+
+  pythonImportsCheck = [ "langchain_mongodb" ];
+
+  passthru = {
+    inherit (langchain-core) updateScript;
+  };
+
+  meta = {
+    changelog = "https://github.com/langchain-ai/langchain/releases/tag/langchain-mongodb==${version}";
+    description = "Integration package connecting MongoDB and LangChain";
+    homepage = "https://github.com/langchain-ai/langchain/tree/master/libs/partners/mongodb";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
+  };
+}
diff --git a/pkgs/development/python-modules/langchain-ollama/default.nix b/pkgs/development/python-modules/langchain-ollama/default.nix
new file mode 100644
index 0000000000000..72bcf180d414b
--- /dev/null
+++ b/pkgs/development/python-modules/langchain-ollama/default.nix
@@ -0,0 +1,68 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  langchain-core,
+  ollama,
+
+  # testing
+  langchain-standard-tests,
+  pytestCheckHook,
+  pytest-asyncio,
+  syrupy,
+
+  nix-update-script,
+}:
+
+buildPythonPackage rec {
+  pname = "langchain-ollama";
+  version = "0.2.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "langchain-ai";
+    repo = "langchain";
+    rev = "refs/tags/langchain-ollama==${version}";
+    hash = "sha256-NtlJqIevdaoOO4oDqKsL4OFbw8tHb3FjV9LrTytOGKE=";
+  };
+
+  sourceRoot = "${src.name}/libs/partners/ollama";
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    langchain-core
+    ollama
+  ];
+
+  nativeCheckInputs = [
+    langchain-standard-tests
+    pytestCheckHook
+    pytest-asyncio
+    syrupy
+  ];
+
+  pytestFlagsArray = [ "tests/unit_tests" ];
+
+  pythonImportsCheck = [ "langchain_ollama" ];
+
+  passthru.updateScript = nix-update-script {
+    extraArgs = [
+      "--version-regex"
+      "langchain-ollama==(.*)"
+    ];
+  };
+
+  meta = {
+    changelog = "https://github.com/langchain-ai/langchain/releases/tag/langchain-ollama==${version}";
+    description = "Integration package connecting Ollama and LangChain";
+    homepage = "https://github.com/langchain-ai/langchain/tree/master/libs/partners/ollama";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sarahec ];
+  };
+}
diff --git a/pkgs/development/python-modules/langchain-openai/default.nix b/pkgs/development/python-modules/langchain-openai/default.nix
new file mode 100644
index 0000000000000..82f0a776208a5
--- /dev/null
+++ b/pkgs/development/python-modules/langchain-openai/default.nix
@@ -0,0 +1,101 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  langchain-core,
+  openai,
+  tiktoken,
+
+  # tests
+  freezegun,
+  langchain-standard-tests,
+  lark,
+  pandas,
+  pytest-asyncio,
+  pytestCheckHook,
+  pytest-mock,
+  pytest-socket,
+  requests-mock,
+  responses,
+  syrupy,
+  toml,
+}:
+
+buildPythonPackage rec {
+  pname = "langchain-openai";
+  version = "0.2.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "langchain-ai";
+    repo = "langchain";
+    rev = "refs/tags/langchain-openai==${version}";
+    hash = "sha256-3wTSvvPOMZciEqPxpcjrcqEpK//qwsEmvZnlZBfjltQ=";
+  };
+
+  sourceRoot = "${src.name}/libs/partners/openai";
+
+  preConfigure = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "--cov=langchain_openai" ""
+  '';
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    langchain-core
+    openai
+    tiktoken
+  ];
+
+  nativeCheckInputs = [
+    freezegun
+    langchain-standard-tests
+    lark
+    pandas
+    pytest-asyncio
+    pytestCheckHook
+    pytest-mock
+    pytest-socket
+    requests-mock
+    responses
+    syrupy
+    toml
+  ];
+
+  pytestFlagsArray = [ "tests/unit_tests" ];
+
+  disabledTests = [
+    # These tests require network access
+    "test__get_encoding_model"
+    "test_get_token_ids"
+    "test_azure_openai_secrets"
+    "test_azure_openai_api_key_is_secret_string"
+    "test_get_num_tokens_from_messages"
+    "test_azure_openai_api_key_masked_when_passed_from_env"
+    "test_azure_openai_api_key_masked_when_passed_via_constructor"
+    "test_azure_openai_uses_actual_secret_value_from_secretstr"
+    "test_azure_serialized_secrets"
+    "test_openai_get_num_tokens"
+    "test_chat_openai_get_num_tokens"
+  ];
+
+  pythonImportsCheck = [ "langchain_openai" ];
+
+  passthru = {
+    inherit (langchain-core) updateScript;
+  };
+
+  meta = {
+    changelog = "https://github.com/langchain-ai/langchain/releases/tag/langchain-openai==${version}";
+    description = "Integration package connecting OpenAI and LangChain";
+    homepage = "https://github.com/langchain-ai/langchain/tree/master/libs/partners/openai";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
+  };
+}
diff --git a/pkgs/development/python-modules/langchain-standard-tests/default.nix b/pkgs/development/python-modules/langchain-standard-tests/default.nix
new file mode 100644
index 0000000000000..3bec0ee76be3e
--- /dev/null
+++ b/pkgs/development/python-modules/langchain-standard-tests/default.nix
@@ -0,0 +1,56 @@
+{
+  lib,
+  buildPythonPackage,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  httpx,
+  langchain-core,
+  syrupy,
+
+  # buildInputs
+  pytest,
+
+  # tests
+  numpy,
+  pytest-asyncio,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "langchain-standard-tests";
+  version = "0.1.1";
+  pyproject = true;
+
+  # this is an internal library, so there are no tags
+  # sync source with langchain-core for easy updates
+  inherit (langchain-core) src;
+  sourceRoot = "${src.name}/libs/standard-tests";
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    httpx
+    langchain-core
+    syrupy
+  ];
+
+  buildInputs = [ pytest ];
+
+  pythonImportsCheck = [ "langchain_standard_tests" ];
+
+  nativeBuildInputs = [
+    numpy
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  meta = {
+    description = "Build context-aware reasoning applications";
+    homepage = "https://github.com/langchain-ai/langchain";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
+  };
+}
diff --git a/pkgs/development/python-modules/langchain-text-splitters/default.nix b/pkgs/development/python-modules/langchain-text-splitters/default.nix
index 81cb942e51553..a19f3ceb7d7ef 100644
--- a/pkgs/development/python-modules/langchain-text-splitters/default.nix
+++ b/pkgs/development/python-modules/langchain-text-splitters/default.nix
@@ -1,45 +1,59 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, poetry-core
-, langchain-core
-, lxml
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  langchain-core,
+
+  # tests
+  httpx,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "langchain-text-splitters";
-  version = "0.0.1";
+  version = "0.3.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
-
-  src = fetchPypi {
-    pname = "langchain_text_splitters";
-    inherit version;
-    hash = "sha256-rEWfqYeZ9RF61UJakzCyGWEyHjC8GaKi+fdh3a3WKqE=";
+  src = fetchFromGitHub {
+    owner = "langchain-ai";
+    repo = "langchain";
+    rev = "refs/tags/langchain-text-splitters==${version}";
+    hash = "sha256-Z0UAUhOjC0wgCY/f1aWsnjFyOPYz/6JnloEKT6b6Ii0=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  sourceRoot = "${src.name}/libs/text-splitters";
 
-  propagatedBuildInputs = [
+  build-system = [ poetry-core ];
+
+  dependencies = [
     langchain-core
-    lxml
   ];
 
-  # PyPI source does not have tests
-  doCheck = false;
+  pythonImportsCheck = [ "langchain_text_splitters" ];
 
-  pythonImportsCheck = [
-    "langchain_text_splitters"
+  nativeCheckInputs = [
+    httpx
+    pytest-asyncio
+    pytestCheckHook
   ];
 
-  meta = with lib; {
-    description = "Build context-aware reasoning applications";
+  pytestFlagsArray = [ "tests/unit_tests" ];
+
+  passthru = {
+    inherit (langchain-core) updateScript;
+  };
+
+  meta = {
+    changelog = "https://github.com/langchain-ai/langchain/releases/tag/langchain-text-splitters==${version}";
+    description = "LangChain utilities for splitting into chunks a wide variety of text documents";
     homepage = "https://github.com/langchain-ai/langchain/tree/master/libs/text-splitters";
-    license = licenses.mit;
-    maintainers = with maintainers; [ fab ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/langchain/default.nix b/pkgs/development/python-modules/langchain/default.nix
index ddcb01d7c4506..c2184e84254f3 100644
--- a/pkgs/development/python-modules/langchain/default.nix
+++ b/pkgs/development/python-modules/langchain/default.nix
@@ -1,66 +1,55 @@
 {
   lib,
-  aiohttp,
-  async-timeout,
-  azure-core,
-  azure-cosmos,
-  azure-identity,
-  bash,
   buildPythonPackage,
-  chardet,
-  clarifai,
-  cohere,
-  dataclasses-json,
-  esprima,
   fetchFromGitHub,
-  freezegun,
-  huggingface-hub,
-  jsonpatch,
-  langchain-community,
+  pythonOlder,
+
+  # build-system
+  poetry-core,
+
+  # buildInputs
+  bash,
+
+  # dependencies
+  aiohttp,
   langchain-core,
   langchain-text-splitters,
   langsmith,
-  lark,
-  manifest-ml,
-  nlpcloud,
+  pydantic,
+  pyyaml,
+  requests,
+  sqlalchemy,
+  tenacity,
+  async-timeout,
+
+  # optional-dependencies
   numpy,
-  openai,
+
+  # tests
+  freezegun,
+  httpx,
+  lark,
   pandas,
-  poetry-core,
-  pydantic,
   pytest-asyncio,
   pytest-mock,
   pytest-socket,
   pytestCheckHook,
-  pythonOlder,
-  pyyaml,
-  qdrant-client,
   requests-mock,
-  requests,
   responses,
-  sentence-transformers,
-  sqlalchemy,
   syrupy,
-  tenacity,
-  tiktoken,
   toml,
-  torch,
-  transformers,
-  typer,
 }:
 
 buildPythonPackage rec {
   pname = "langchain";
-  version = "0.1.16";
+  version = "0.3.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
-
   src = fetchFromGitHub {
     owner = "langchain-ai";
     repo = "langchain";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-Xv8juma/1qGC2Rb659dJBvRzRh5W+zU+O8W6peElFGc=";
+    rev = "refs/tags/langchain==${version}";
+    hash = "sha256-2dHsZWn1MN/gLnUdYp84gbtWkvB0j0iieij4W9tzPzY=";
   };
 
   sourceRoot = "${src.name}/libs/langchain";
@@ -71,13 +60,9 @@ buildPythonPackage rec {
 
   dependencies = [
     aiohttp
-    dataclasses-json
-    jsonpatch
-    langchain-community
     langchain-core
     langchain-text-splitters
     langsmith
-    numpy
     pydantic
     pyyaml
     requests
@@ -85,48 +70,13 @@ buildPythonPackage rec {
     tenacity
   ] ++ lib.optionals (pythonOlder "3.11") [ async-timeout ];
 
-  passthru.optional-dependencies = {
-    llms = [
-      clarifai
-      cohere
-      openai
-      # openlm
-      nlpcloud
-      huggingface-hub
-      manifest-ml
-      torch
-      transformers
-    ];
-    qdrant = [ qdrant-client ];
-    openai = [
-      openai
-      tiktoken
-    ];
-    text_helpers = [ chardet ];
-    clarifai = [ clarifai ];
-    cohere = [ cohere ];
-    docarray = [
-      # docarray
-    ];
-    embeddings = [ sentence-transformers ];
-    javascript = [ esprima ];
-    azure = [
-      azure-identity
-      azure-cosmos
-      openai
-      azure-core
-      # azure-ai-formrecognizer
-      # azure-ai-vision
-      # azure-cognitiveservices-speech
-      # azure-search-documents
-      # azure-ai-textanalytics
-    ];
-    all = [ ];
-    cli = [ typer ];
+  optional-dependencies = {
+    numpy = [ numpy ];
   };
 
   nativeCheckInputs = [
     freezegun
+    httpx
     lark
     pandas
     pytest-asyncio
@@ -160,16 +110,22 @@ buildPythonPackage rec {
     "test_generic_fake_chat_model"
     # Test is outdated
     "test_serializable_mapping"
+    "test_person"
+    "test_aliases_hidden"
   ];
 
   pythonImportsCheck = [ "langchain" ];
 
-  meta = with lib; {
+  passthru = {
+    updateScript = langchain-core.updateScript;
+  };
+
+  meta = {
     description = "Building applications with LLMs through composability";
     homepage = "https://github.com/langchain-ai/langchain";
     changelog = "https://github.com/langchain-ai/langchain/releases/tag/v${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ natsukium ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
     mainProgram = "langchain-server";
   };
 }
diff --git a/pkgs/development/python-modules/langcodes/default.nix b/pkgs/development/python-modules/langcodes/default.nix
index 555cc9e4795e1..981b90bbc5ec1 100644
--- a/pkgs/development/python-modules/langcodes/default.nix
+++ b/pkgs/development/python-modules/langcodes/default.nix
@@ -1,28 +1,30 @@
-{ lib
-, buildPythonPackage
-, marisa-trie
-, pythonOlder
-, fetchPypi
-, poetry-core
-, pytestCheckHook
-, language-data
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  marisa-trie,
+  pythonOlder,
+  fetchPypi,
+  pytestCheckHook,
+  language-data,
+  setuptools,
+  setuptools-scm
 }:
 
 buildPythonPackage rec {
   pname = "langcodes";
-  version = "3.3.0";
+  version = "3.4.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "794d07d5a28781231ac335a1561b8442f8648ca07cd518310aeb45d6f0807ef6";
+    hash = "sha256-rlp30aAdDR6RhUpnGJCJK3zpq7YBq3Mn/FyHT4meGXk=";
   };
 
   nativeBuildInputs = [
-    poetry-core
+    setuptools
+    setuptools-scm
   ];
 
   propagatedBuildInputs = [
@@ -31,22 +33,18 @@ buildPythonPackage rec {
     setuptools # pkg_resources import in language_data/util.py
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # AssertionError: assert 'Unknown language [aqk]' == 'Aninka'
     "test_updated_iana"
   ];
 
-  pythonImportsCheck = [
-    "langcodes"
-  ];
+  pythonImportsCheck = [ "langcodes" ];
 
   meta = with lib; {
     description = "Python toolkit for working with and comparing the standardized codes for languages";
-    homepage = "https://github.com/LuminosoInsight/langcodes";
+    homepage = "https://github.com/georgkrause/langcodes";
     license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/langdetect/default.nix b/pkgs/development/python-modules/langdetect/default.nix
index a50cbe73a32dc..5db13ad9c4db7 100644
--- a/pkgs/development/python-modules/langdetect/default.nix
+++ b/pkgs/development/python-modules/langdetect/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -15,13 +16,9 @@ buildPythonPackage rec {
     sha256 = "1805svvb7xjm4sf1j7b6nc3409x37pd1xmabfwwjf1ldkzwgxhfb";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "langdetect" ];
 
diff --git a/pkgs/development/python-modules/langfuse/default.nix b/pkgs/development/python-modules/langfuse/default.nix
new file mode 100644
index 0000000000000..cd7ac3a36cc5d
--- /dev/null
+++ b/pkgs/development/python-modules/langfuse/default.nix
@@ -0,0 +1,62 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  anyio,
+  backoff,
+  httpx,
+  idna,
+  langchain,
+  llama-index,
+  openai,
+  packaging,
+  poetry-core,
+  pydantic,
+  wrapt,
+}:
+
+buildPythonPackage rec {
+  pname = "langfuse";
+  version = "2.50.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "langfuse";
+    repo = "langfuse-python";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-CKydYXcwWB4fnomPBdOLTwRBLBtxqoNHdP2RBzcrjpk=";
+  };
+
+  build-system = [ poetry-core ];
+
+  pythonRelaxDeps = [ "packaging" ];
+
+  dependencies = [
+    anyio
+    backoff
+    httpx
+    idna
+    packaging
+    pydantic
+    wrapt
+  ];
+
+  optional-dependencies = {
+    langchain = [ langchain ];
+    llama-index = [ llama-index ];
+    openai = [ openai ];
+  };
+
+  pythonImportsCheck = [ "langfuse" ];
+
+  # tests require network access and openai api key
+  doCheck = false;
+
+  meta = {
+    description = "Instrument your LLM app with decorators or low-level SDK and get detailed tracing/observability";
+    homepage = "https://github.com/langfuse/langfuse-python";
+    changelog = "https://github.com/langfuse/langfuse-python/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
+  };
+}
diff --git a/pkgs/development/python-modules/langgraph-checkpoint-postgres/default.nix b/pkgs/development/python-modules/langgraph-checkpoint-postgres/default.nix
new file mode 100644
index 0000000000000..7d511994b6d50
--- /dev/null
+++ b/pkgs/development/python-modules/langgraph-checkpoint-postgres/default.nix
@@ -0,0 +1,76 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  langgraph-checkpoint,
+  orjson,
+  psycopg,
+  psycopg-pool,
+  langgraph-sdk,
+  poetry-core,
+  pythonOlder,
+  postgresql,
+  postgresqlTestHook,
+  pytestCheckHook,
+  pytest-asyncio,
+  stdenvNoCC,
+}:
+
+buildPythonPackage rec {
+  pname = "langgraph-checkpoint-postgres";
+  version = "1.0.6";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "langchain-ai";
+    repo = "langgraph";
+    rev = "refs/tags/checkpointpostgres==${version}";
+    hash = "sha256-F9sgZQQBFs5hDUsaR5BI9ERve9L8LTUvEKOgyz5ioqY=";
+  };
+
+  postgresqlTestSetupPost = ''
+    substituteInPlace tests/conftest.py \
+      --replace-fail "DEFAULT_URI = \"postgres://postgres:postgres@localhost:5441/postgres?sslmode=disable\"" "DEFAULT_URI = \"postgres:///$PGDATABASE\""
+  '';
+
+  sourceRoot = "${src.name}/libs/checkpoint-postgres";
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    langgraph-checkpoint
+    orjson
+    psycopg
+    psycopg-pool
+  ];
+
+  pythonRelaxDeps = [ "psycopg-pool" ];
+
+  doCheck = !(stdenvNoCC.hostPlatform.isDarwin);
+
+  pythonImportsCheck = [ "langgraph.checkpoint.postgres" ];
+
+  nativeCheckInputs = [
+    postgresql
+    postgresqlTestHook
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  passthru = {
+    updateScript = langgraph-sdk.updateScript;
+  };
+
+  meta = {
+    description = "Library with a Postgres implementation of LangGraph checkpoint saver";
+    homepage = "https://github.com/langchain-ai/langgraph/tree/main/libs/checkpoint-postgres";
+    changelog = "https://github.com/langchain-ai/langgraph/releases/tag/checkpointpostgres==${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [
+      drupol
+      sarahec
+    ];
+  };
+}
diff --git a/pkgs/development/python-modules/langgraph-checkpoint-sqlite/default.nix b/pkgs/development/python-modules/langgraph-checkpoint-sqlite/default.nix
new file mode 100644
index 0000000000000..e94cca80eb542
--- /dev/null
+++ b/pkgs/development/python-modules/langgraph-checkpoint-sqlite/default.nix
@@ -0,0 +1,58 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  langgraph-checkpoint,
+  aiosqlite,
+  pytest-asyncio,
+  pytestCheckHook,
+  langgraph-sdk,
+  poetry-core,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "langgraph-checkpoint-sqlite";
+  version = "1.0.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "langchain-ai";
+    repo = "langgraph";
+    rev = "refs/tags/checkpointsqlite==${version}";
+    hash = "sha256-/pHJtK691anqn2It4ZstCGXJS0JGtdKZvqS9f3ly+FQ=";
+  };
+
+  sourceRoot = "${src.name}/libs/checkpoint-sqlite";
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    aiosqlite
+    langgraph-checkpoint
+  ];
+
+  pythonImportsCheck = [ "langgraph.checkpoint.sqlite" ];
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  passthru = {
+    updateScript = langgraph-sdk.updateScript;
+  };
+
+  meta = {
+    changelog = "https://github.com/langchain-ai/langgraph/releases/tag/checkpointsqlite==${version}";
+    description = "Library with a SQLite implementation of LangGraph checkpoint saver";
+    homepage = "https://github.com/langchain-ai/langgraph/tree/main/libs/checkpoint-sqlite";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [
+      drupol
+      sarahec
+    ];
+  };
+}
diff --git a/pkgs/development/python-modules/langgraph-checkpoint/default.nix b/pkgs/development/python-modules/langgraph-checkpoint/default.nix
new file mode 100644
index 0000000000000..3857de5bd7353
--- /dev/null
+++ b/pkgs/development/python-modules/langgraph-checkpoint/default.nix
@@ -0,0 +1,61 @@
+{
+  lib,
+  buildPythonPackage,
+  dataclasses-json,
+  fetchFromGitHub,
+  langchain-core,
+  langgraph-sdk,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "langgraph-checkpoint";
+  version = "1.0.9";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "langchain-ai";
+    repo = "langgraph";
+    rev = "refs/tags/checkpoint==${version}";
+    hash = "sha256-3gm+L67pPAKpY1kqnX1lPnca40KoBVZdRZ1Cy6D0dzU=";
+  };
+
+  sourceRoot = "${src.name}/libs/checkpoint";
+
+  build-system = [ poetry-core ];
+
+  dependencies = [ langchain-core ];
+
+  pythonImportsCheck = [ "langgraph.checkpoint" ];
+
+  nativeCheckInputs = [
+    dataclasses-json
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # AssertionError
+    "test_serde_jsonplus"
+  ];
+
+  passthru = {
+    updateScript = langgraph-sdk.updateScript;
+  };
+
+  meta = {
+    changelog = "https://github.com/langchain-ai/langgraph/releases/tag/checkpoint==${version}";
+    description = "Library with base interfaces for LangGraph checkpoint savers";
+    homepage = "https://github.com/langchain-ai/langgraph/tree/main/libs/checkpoint";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [
+      drupol
+      sarahec
+    ];
+  };
+}
diff --git a/pkgs/development/python-modules/langgraph-cli/default.nix b/pkgs/development/python-modules/langgraph-cli/default.nix
new file mode 100644
index 0000000000000..347be2ffcfa30
--- /dev/null
+++ b/pkgs/development/python-modules/langgraph-cli/default.nix
@@ -0,0 +1,68 @@
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  nix-update-script,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "langgraph-cli";
+  version = "0.1.52";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "langchain-ai";
+    repo = "langgraph";
+    rev = "refs/tags/cli==${version}";
+    hash = "sha256-zTBeDJB1Xu/rWsvEC/L4BRzxyh04lPYV7HQNHoJcskk=";
+  };
+
+  sourceRoot = "${src.name}/libs/cli";
+
+  build-system = [ poetry-core ];
+
+  dependencies = [ click ];
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [ "tests/unit_tests" ];
+
+  pythonImportsCheck = [ "langgraph_cli" ];
+
+  disabledTests = [
+    # Flaky tests that generate a Docker configuration then compare to exact text
+    "test_config_to_docker_simple"
+    "test_config_to_docker_pipconfig"
+    "test_config_to_compose_env_vars"
+    "test_config_to_compose_env_file"
+    "test_config_to_compose_end_to_end"
+    "test_config_to_compose_simple_config"
+    "test_config_to_compose_watch"
+  ];
+
+  passthru.updateScript = nix-update-script {
+    extraArgs = [
+      "--version-regex"
+      "cli==(.*)"
+    ];
+  };
+
+  meta = {
+    description = "Official CLI for LangGraph API";
+    homepage = "https://github.com/langchain-ai/langgraph/libs/cli";
+    changelog = "https://github.com/langchain-ai/langgraph/releases/tag/${version}";
+    mainProgram = "langgraph";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sarahec ];
+  };
+}
diff --git a/pkgs/development/python-modules/langgraph-sdk/default.nix b/pkgs/development/python-modules/langgraph-sdk/default.nix
new file mode 100644
index 0000000000000..710433dfe1346
--- /dev/null
+++ b/pkgs/development/python-modules/langgraph-sdk/default.nix
@@ -0,0 +1,64 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  httpx,
+  httpx-sse,
+  orjson,
+
+  # passthru
+  writeScript,
+}:
+
+buildPythonPackage rec {
+  pname = "langgraph-sdk";
+  version = "0.1.30";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "langchain-ai";
+    repo = "langgraph";
+    rev = "refs/tags/sdk==${version}";
+    hash = "sha256-gI12XuxFplqIKVlVjeO60YxT7WG/SSsZ0aWfjg5bHIs=";
+  };
+
+  sourceRoot = "${src.name}/libs/sdk-py";
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    httpx
+    httpx-sse
+    orjson
+  ];
+
+  pythonImportsCheck = [ "langgraph_sdk" ];
+
+  passthru = {
+    # python3Packages.langgraph-sdk depends on python3Packages.langgraph. langgraph-cli is independent of both.
+    updateScript = writeScript "update.sh" ''
+      #!/usr/bin/env nix-shell
+      #!nix-shell -i bash -p nix-update
+
+      set -eu -o pipefail
+      nix-update --commit --version-regex '(.*)' python3Packages.langgraph
+      nix-update --commit --version-regex 'sdk==(.*)' python3Packages.langgraph-sdk
+      nix-update --commit --version-regex 'checkpoint==(.*)' python3Packages.langgraph-checkpoint
+      nix-update --commit --version-regex 'checkpointpostgres==(.*)' python3Packages.langgraph-checkpoint-postgres
+      nix-update --commit --version-regex 'checkpointsqlite==(.*)' python3Packages.langgraph-checkpoint-sqlite
+    '';
+  };
+
+  meta = {
+    description = "SDK for interacting with the LangGraph Cloud REST API";
+    homepage = "https://github.com/langchain-ai/langgraphtree/main/libs/sdk-py";
+    changelog = "https://github.com/langchain-ai/langgraph/releases/tag/sdk==${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sarahec ];
+  };
+}
diff --git a/pkgs/development/python-modules/langgraph/default.nix b/pkgs/development/python-modules/langgraph/default.nix
new file mode 100644
index 0000000000000..087db330d195f
--- /dev/null
+++ b/pkgs/development/python-modules/langgraph/default.nix
@@ -0,0 +1,124 @@
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  langchain-core,
+  langgraph-checkpoint,
+
+  # tests
+  aiosqlite,
+  dataclasses-json,
+  grandalf,
+  httpx,
+  langgraph-checkpoint-postgres,
+  langgraph-checkpoint-sqlite,
+  langsmith,
+  psycopg,
+  pydantic,
+  pytest-asyncio,
+  pytest-mock,
+  pytest-repeat,
+  pytest-xdist,
+  pytestCheckHook,
+  syrupy,
+  postgresql,
+  postgresqlTestHook,
+
+  # passthru
+  langgraph-sdk,
+}:
+
+buildPythonPackage rec {
+  pname = "langgraph";
+  version = "0.2.21";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "langchain-ai";
+    repo = "langgraph";
+    rev = "refs/tags/${version}";
+    hash = "sha256-1Ch2V85omAKnXK9rMihNtyjIoOvmVUm8Dbdo5GBoik4=";
+  };
+
+  postgresqlTestSetupPost = ''
+    substituteInPlace tests/conftest.py \
+      --replace-fail "DEFAULT_POSTGRES_URI = \"postgres://postgres:postgres@localhost:5442/\"" "DEFAULT_POSTGRES_URI = \"postgres:///$PGDATABASE\""
+  '';
+
+  sourceRoot = "${src.name}/libs/langgraph";
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    langchain-core
+    langgraph-checkpoint
+  ];
+
+  pythonImportsCheck = [ "langgraph" ];
+
+  # postgresql doesn't play nicely with the darwin sandbox:
+  # FATAL:  could not create shared memory segment: Operation not permitted
+  doCheck = !stdenv.hostPlatform.isDarwin;
+
+  nativeCheckInputs = [
+    aiosqlite
+    dataclasses-json
+    grandalf
+    httpx
+    langgraph-checkpoint-postgres
+    langgraph-checkpoint-sqlite
+    langsmith
+    psycopg
+    psycopg.pool
+    pydantic
+    pytest-asyncio
+    pytest-mock
+    pytest-repeat
+    pytest-xdist
+    pytestCheckHook
+    syrupy
+    postgresql
+    postgresqlTestHook
+  ];
+
+  disabledTests = [
+    "test_doesnt_warn_valid_schema" # test is flaky due to pydantic error on the exception
+    # Disabling tests that requires to create new random databases
+    "test_cancel_graph_astream"
+    "test_cancel_graph_astream_events_v2"
+    "test_channel_values"
+    "test_fork_always_re_runs_nodes"
+    "test_interruption_without_state_updates"
+    "test_interruption_without_state_updates_async"
+    "test_invoke_two_processes_in_out_interrupt"
+    "test_nested_graph_interrupts"
+    "test_no_modifier_async"
+    "test_no_modifier"
+    "test_pending_writes_resume"
+    "test_remove_message_via_state_update"
+  ];
+
+  disabledTestPaths = [
+    # psycopg.errors.InsufficientPrivilege: permission denied to create database
+    "tests/test_pregel_async.py"
+    "tests/test_pregel.py"
+  ];
+
+  passthru = {
+    updateScript = langgraph-sdk.updateScript;
+  };
+
+  meta = {
+    description = "Build resilient language agents as graphs";
+    homepage = "https://github.com/langchain-ai/langgraph";
+    changelog = "https://github.com/langchain-ai/langgraph/releases/tag/${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sarahec ];
+  };
+}
diff --git a/pkgs/development/python-modules/langid/default.nix b/pkgs/development/python-modules/langid/default.nix
index 1f1c167773008..8c6bd3c211a36 100644
--- a/pkgs/development/python-modules/langid/default.nix
+++ b/pkgs/development/python-modules/langid/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, wheel
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  wheel,
+  numpy,
 }:
 
 buildPythonPackage rec {
@@ -11,7 +12,8 @@ buildPythonPackage rec {
   version = "1.1.6";
   format = "setuptools";
 
-  src = fetchPypi { # use PyPi as source, github repository does not contain tags or release branches
+  src = fetchPypi {
+    # use PyPi as source, github repository does not contain tags or release branches
     inherit pname version;
     hash = "sha256-BEvK4ZEtq4XDPY6Y8oEbj0/xIT5emp6VEBN7hNosspM=";
   };
@@ -21,9 +23,7 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   doCheck = false; # Package has no tests
   pythonImportsCheck = [ "langid" ];
diff --git a/pkgs/development/python-modules/langsmith/default.nix b/pkgs/development/python-modules/langsmith/default.nix
index 9bf32dc7a1582..5ce0f9c33367a 100644
--- a/pkgs/development/python-modules/langsmith/default.nix
+++ b/pkgs/development/python-modules/langsmith/default.nix
@@ -1,47 +1,47 @@
 {
   lib,
   stdenv,
-  anthropic,
-  attr,
   buildPythonPackage,
-  fastapi,
   fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  orjson,
+  pydantic,
+  requests,
+
+  # tests
+  anthropic,
+  dataclasses-json,
+  fastapi,
   freezegun,
   httpx,
   instructor,
-  orjson,
-  poetry-core,
-  pydantic,
   pytest-asyncio,
   pytestCheckHook,
-  pythonOlder,
-  pythonRelaxDepsHook,
-  requests,
   uvicorn,
+  attr,
 }:
 
 buildPythonPackage rec {
   pname = "langsmith";
-  version = "0.1.52";
+  version = "0.1.125";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
-
   src = fetchFromGitHub {
     owner = "langchain-ai";
     repo = "langsmith-sdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-kTl+H1odRYDZc1KEuopZV9PvOQBd4QioWMhb3pD6xKE=";
+    hash = "sha256-0/ych7iP7G75R2kGaXzsxSy4jRYCvxeqd8aBq4QhRgI=";
   };
 
   sourceRoot = "${src.name}/python";
 
   pythonRelaxDeps = [ "orjson" ];
 
-  build-system = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     orjson
@@ -51,6 +51,7 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     anthropic
+    dataclasses-json
     fastapi
     freezegun
     httpx
@@ -58,9 +59,7 @@ buildPythonPackage rec {
     pytest-asyncio
     pytestCheckHook
     uvicorn
-  ] ++ lib.optionals stdenv.isLinux [
-    attr
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isLinux [ attr ];
 
   disabledTests = [
     # These tests require network access
@@ -82,6 +81,7 @@ buildPythonPackage rec {
   disabledTestPaths = [
     # due to circular import
     "tests/integration_tests/test_client.py"
+    "tests/integration_tests/test_prompts.py"
     "tests/unit_tests/test_client.py"
     # Tests require a Langsmith API key
     "tests/evaluation/test_evaluation.py"
@@ -92,12 +92,12 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  meta = with lib; {
+  meta = {
     description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform";
     homepage = "https://github.com/langchain-ai/langsmith-sdk";
     changelog = "https://github.com/langchain-ai/langsmith-sdk/releases/tag/v${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ natsukium ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
     mainProgram = "langsmith";
   };
 }
diff --git a/pkgs/development/python-modules/language-data/default.nix b/pkgs/development/python-modules/language-data/default.nix
index ff04b036dc05c..da1a35456152a 100644
--- a/pkgs/development/python-modules/language-data/default.nix
+++ b/pkgs/development/python-modules/language-data/default.nix
@@ -1,45 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, marisa-trie
-, poetry-core
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  marisa-trie,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "language-data";
-  version = "1.0.1";
-  format = "pyproject";
+  version = "1.2.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
-    owner = "rspeer";
+    owner = "georgkrause";
     repo = "language_data";
-    rev = "v${version}";
-    sha256 = "51TUVHXPHG6ofbnxI6+o5lrtr+QCIpGKu+OjDK3l7Mc=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-TVWyDEDI6NBioc8DqhXzpLS22EFKsZ/nan2vfgFsieQ=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-    setuptools
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    marisa-trie
-  ];
+  dependencies = [ marisa-trie ];
 
-  # Module has no tests
-  doCheck = false;
+  pythonImportsCheck = [ "language_data" ];
 
-  pythonImportsCheck = [
-    "language_data"
-  ];
+  # No unittests
+  doCheck = false;
 
   meta = with lib; {
     description = "Supplement module for langcodes";
-    homepage = "https://github.com/rspeer/language_data";
+    homepage = "https://github.com/georgkrause/language_data";
+    changelog = "https://github.com/georgkrause/language_data/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/language-tags/default.nix b/pkgs/development/python-modules/language-tags/default.nix
index 24cd835b14d6f..a4397834df3a2 100644
--- a/pkgs/development/python-modules/language-tags/default.nix
+++ b/pkgs/development/python-modules/language-tags/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-T9K290seKhQLqW36EfA9kn3WveKCmyjN4Mx2j50qIEk=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "language_tags" ];
 
diff --git a/pkgs/development/python-modules/lanms-neo/default.nix b/pkgs/development/python-modules/lanms-neo/default.nix
index 149f98a608ae1..b4d734e5cda13 100644
--- a/pkgs/development/python-modules/lanms-neo/default.nix
+++ b/pkgs/development/python-modules/lanms-neo/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nix-update-script
-, pythonOlder
-, pybind11
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  nix-update-script,
+  pythonOlder,
+  pybind11,
+  numpy,
 }:
 let
   pname = "lanms-neo";
diff --git a/pkgs/development/python-modules/lark/default.nix b/pkgs/development/python-modules/lark/default.nix
index ef25181892693..df891d96ed79b 100644
--- a/pkgs/development/python-modules/lark/default.nix
+++ b/pkgs/development/python-modules/lark/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, regex
-, pytestCheckHook
-, pythonOlder
-, js2py
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  regex,
+  pytestCheckHook,
+  pythonOlder,
+  js2py,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-pWLKjELy10VNumpBHjBYCO2TltKsZx1GhQcGMHsYJNk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # Optional import, but fixes some re known bugs & allows advanced regex features
   propagatedBuildInputs = [ regex ];
@@ -43,7 +42,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A modern parsing library for Python, implementing Earley & LALR(1) and an easy interface";
+    description = "Modern parsing library for Python, implementing Earley & LALR(1) and an easy interface";
     homepage = "https://lark-parser.readthedocs.io/";
     changelog = "https://github.com/lark-parser/lark/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/laspy/default.nix b/pkgs/development/python-modules/laspy/default.nix
index 5375ed6f9ebef..9e68b13137f50 100644
--- a/pkgs/development/python-modules/laspy/default.nix
+++ b/pkgs/development/python-modules/laspy/default.nix
@@ -1,37 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, laszip
-, setuptools
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  laszip,
+  setuptools,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "laspy";
-  version = "2.5.3";
+  version = "2.5.4";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-StaYkUNY6loJbaUuabzszTINnd+zZ0gKXCteCG24Erc=";
+    hash = "sha256-7r2/M3mvvAsk5+SBL6xWe/+IDR6FH3AXXSI3Wq7N9+E=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     numpy
     laszip
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [
     "laspy"
diff --git a/pkgs/development/python-modules/laszip/default.nix b/pkgs/development/python-modules/laszip/default.nix
index 85187d08f99ff..461102cc69db7 100644
--- a/pkgs/development/python-modules/laszip/default.nix
+++ b/pkgs/development/python-modules/laszip/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, scikit-build-core
-, pybind11
-, cmake
-, LASzip
-, ninja
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  scikit-build-core,
+  pybind11,
+  cmake,
+  laszip,
+  ninja,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -43,13 +44,11 @@ buildPythonPackage rec {
     ninja
     pybind11
     scikit-build-core
-  ] ++ scikit-build-core.optional-dependencies.pyproject;
+  ];
 
   dontUseCmakeConfigure = true;
 
-  buildInputs = [
-    LASzip
-  ];
+  buildInputs = [ laszip ];
 
   # There are no tests
   doCheck = false;
@@ -64,4 +63,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ matthewcroughan ];
   };
 }
-
diff --git a/pkgs/development/python-modules/latex2mathml/default.nix b/pkgs/development/python-modules/latex2mathml/default.nix
index 99d9dcc5fb741..0cf23f39e3e9b 100644
--- a/pkgs/development/python-modules/latex2mathml/default.nix
+++ b/pkgs/development/python-modules/latex2mathml/default.nix
@@ -1,16 +1,18 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, multidict
-, xmljson
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  multidict,
+  xmljson,
 }:
 
 buildPythonPackage rec {
   pname = "latex2mathml";
   version = "3.77.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -21,11 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-DLdSFMsNA0gD6Iw0kn+0IrbvyI0VEGOpz0ZYD48nRkY=";
   };
 
-  format = "pyproject";
-
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -45,6 +43,7 @@ buildPythonPackage rec {
     homepage = "https://github.com/roniemartinez/latex2mathml";
     changelog = "https://github.com/roniemartinez/latex2mathml/releases/tag/${version}";
     license = licenses.mit;
+    mainProgram = "latex2mathml";
     maintainers = with maintainers; [ sfrijters ];
   };
 }
diff --git a/pkgs/development/python-modules/latex2pydata/default.nix b/pkgs/development/python-modules/latex2pydata/default.nix
new file mode 100644
index 0000000000000..80005a173af04
--- /dev/null
+++ b/pkgs/development/python-modules/latex2pydata/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, setuptools
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "latex2pydata";
+  version = "0.4.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-Ega1cHSP187njyelb0yiCdpk08QZyObelRa2S79AE1E=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  meta = {
+    homepage = "https://github.com/gpoore/latex2pydata";
+    description = "Send data from LaTeX to Python using Python literal format";
+    license = lib.licenses.bsd3;
+    platforms = lib.platforms.unix;
+    maintainers = with lib.maintainers; [ romildo ];
+  };
+}
diff --git a/pkgs/development/python-modules/latexcodec/default.nix b/pkgs/development/python-modules/latexcodec/default.nix
index 9286792de21b9..c2890bf591ec2 100644
--- a/pkgs/development/python-modules/latexcodec/default.nix
+++ b/pkgs/development/python-modules/latexcodec/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, six, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "latexcodec";
@@ -7,7 +13,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-kX3F/iQnYswZ2WPmVItC1joRgCjN0zYdYjl+O2OLa8U=";
+    hash = "sha256-kX3F/iQnYswZ2WPmVItC1joRgCjN0zYdYjl+O2OLa8U=";
   };
 
   propagatedBuildInputs = [ six ];
@@ -23,5 +29,4 @@ buildPythonPackage rec {
     description = "Lexer and codec to work with LaTeX code in Python";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/latexify-py/default.nix b/pkgs/development/python-modules/latexify-py/default.nix
index 0c00ffdacadd0..e87966e3eeb30 100644
--- a/pkgs/development/python-modules/latexify-py/default.nix
+++ b/pkgs/development/python-modules/latexify-py/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, dill
-, fetchFromGitHub
-, hatchling
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dill,
+  fetchFromGitHub,
+  hatchling,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-4924pqgc+C8VDTTK5Dac6UJV0tcicVBdnkWvE1ynyvY=";
   };
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  dependencies = [
-    dill
-  ];
+  dependencies = [ dill ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "latexify"
-  ];
+  pythonImportsCheck = [ "latexify" ];
 
   preCheck = ''
     cd src
diff --git a/pkgs/development/python-modules/latexrestricted/default.nix b/pkgs/development/python-modules/latexrestricted/default.nix
new file mode 100644
index 0000000000000..394176397b74c
--- /dev/null
+++ b/pkgs/development/python-modules/latexrestricted/default.nix
@@ -0,0 +1,32 @@
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "latexrestricted";
+  version = "0.4.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-AMfDTruJKejDdXW98VkeeEwELql5566bsL1SutLDpso=";
+  };
+
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "latexrestricted" ];
+
+  # upstream has no tests
+  doCheck = false;
+
+  meta = {
+    homepage = "https://github.com/gpoore/latexrestricted";
+    description = "Python library for creating executables compatible with LaTeX restricted shell escape";
+    changelog = "https://github.com/gpoore/latexrestricted/blob/v${version}/CHANGELOG.md";
+    license = lib.licenses.lppl13c;
+    maintainers = with lib.maintainers; [ romildo ];
+  };
+}
diff --git a/pkgs/development/python-modules/launchpadlib/default.nix b/pkgs/development/python-modules/launchpadlib/default.nix
index aef2dfb98bff9..da58622e26846 100644
--- a/pkgs/development/python-modules/launchpadlib/default.nix
+++ b/pkgs/development/python-modules/launchpadlib/default.nix
@@ -1,49 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, httplib2
-, keyring
-, lazr-restfulclient
-, lazr-uri
-, setuptools
-, six
-, testresources
-, wadllib
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  httplib2,
+  lazr-restfulclient,
+  lazr-uri,
+  setuptools,
+  six,
+  testresources,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "launchpadlib";
-  version = "1.11.0";
-  format = "pyproject";
+  version = "2.0.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-AYmMk3R3sMZKdTOK2wl3Ao1zRqigGesCPPaP7ZmFAUY=";
+    hash = "sha256-XUqQlekXc6dWXUwVlZSuMOynkv1fm4ne1FnXEUhKlss=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     httplib2
-    keyring
     lazr-restfulclient
     lazr-uri
-    setuptools
     six
-    testresources
-    wadllib
   ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    testresources
   ];
 
   preCheck = ''
     export HOME=$TMPDIR
   '';
 
-  doCheck = isPy3k;
-
   pythonImportsCheck = [
     "launchpadlib"
     "launchpadlib.apps"
diff --git a/pkgs/development/python-modules/laundrify-aio/default.nix b/pkgs/development/python-modules/laundrify-aio/default.nix
index 9c5e34dbf876a..21625e5846456 100644
--- a/pkgs/development/python-modules/laundrify-aio/default.nix
+++ b/pkgs/development/python-modules/laundrify-aio/default.nix
@@ -1,26 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, aiohttp
-, pyjwt
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  aiohttp,
+  pyjwt,
 }:
 
 buildPythonPackage rec {
   pname = "laundrify-aio";
-  version = "1.1.2";
-  format = "setuptools";
+  version = "1.2.2";
+  pyproject = true;
+
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "laundrify";
     repo = "laundrify-pypi";
-    rev = "v${version}";
-    hash = "sha256-+dTvYn4hux3Y19kWZwxhdkBARmfD8SuNlYWM/ET9K2M=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-iFQ0396BkGWM7Ma/I0gbXucd2/yPmEVF4IC3/bMK2SA=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     aiohttp
     pyjwt
   ];
@@ -28,9 +33,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "laundrify_aio"
-  ];
+  pythonImportsCheck = [ "laundrify_aio" ];
 
   meta = with lib; {
     description = "Module to communicate with the laundrify API";
diff --git a/pkgs/development/python-modules/layoutparser/default.nix b/pkgs/development/python-modules/layoutparser/default.nix
index 391cb7a235aeb..3b6b8165aea2c 100644
--- a/pkgs/development/python-modules/layoutparser/default.nix
+++ b/pkgs/development/python-modules/layoutparser/default.nix
@@ -1,33 +1,45 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-# build inputs
-, numpy
-, opencv4
-, scipy
-, pandas
-, pillow
-, pyyaml
-, iopath
-, pdfplumber
-, pdf2image
-, google-cloud-vision
-, pytesseract
-, torch
-, torchvision
-, effdet
-# check inputs
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  # build inputs
+  numpy,
+  opencv4,
+  scipy,
+  pandas,
+  pillow,
+  pyyaml,
+  iopath,
+  pdfplumber,
+  pdf2image,
+  google-cloud-vision,
+  pytesseract,
+  torch,
+  torchvision,
+  effdet,
+  # check inputs
+  pytestCheckHook,
 }:
 let
   pname = "layoutparser";
   version = "0.3.4";
   optional-dependencies = {
-    ocr = [ google-cloud-vision pytesseract ];
+    ocr = [
+      google-cloud-vision
+      pytesseract
+    ];
     gcv = [ google-cloud-vision ];
     tesseract = [ pytesseract ];
-    layoutmodels = [ torch torchvision effdet ];
-    effdet = [ torch torchvision effdet ];
+    layoutmodels = [
+      torch
+      torchvision
+      effdet
+    ];
+    effdet = [
+      torch
+      torchvision
+      effdet
+    ];
     # paddledetection = [ paddlepaddle ]
   };
 in
@@ -59,20 +71,16 @@ buildPythonPackage {
     pdf2image
   ];
 
-  pythonImportsCheck = [
-    "layoutparser"
-  ];
+  pythonImportsCheck = [ "layoutparser" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ optional-dependencies.ocr;
+  nativeCheckInputs = [ pytestCheckHook ] ++ optional-dependencies.ocr;
 
   disabledTests = [
     "test_PaddleDetectionModel" # requires paddlepaddle not yet packaged
-     # requires detectron2 not yet packaged
+    # requires detectron2 not yet packaged
     "test_Detectron2Model"
     "test_AutoModel"
-     # requires effdet (disable for now until effdet builds on darwin)
+    # requires effdet (disable for now until effdet builds on darwin)
     "test_EffDetModel"
     # problems with google-cloud-vision
     # AttributeError: module 'google.cloud.vision' has no attribute 'types'
@@ -91,7 +99,7 @@ buildPythonPackage {
   passthru.optional-dependencies = optional-dependencies;
 
   meta = with lib; {
-    description = "A unified toolkit for Deep Learning Based Document Image Analysis";
+    description = "Unified toolkit for Deep Learning Based Document Image Analysis";
     homepage = "https://github.com/Layout-Parser/layout-parser";
     changelog = "https://github.com/Layout-Parser/layout-parser/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/lazr-restfulclient/default.nix b/pkgs/development/python-modules/lazr-restfulclient/default.nix
index b8e46b8d1b267..e6f1e9f208ff3 100644
--- a/pkgs/development/python-modules/lazr-restfulclient/default.nix
+++ b/pkgs/development/python-modules/lazr-restfulclient/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, isPy27
-, fetchPypi
-, distro
-, httplib2
-, oauthlib
-, setuptools
-, six
-, wadllib
-, fixtures
-, lazr-uri
-, pytestCheckHook
-, wsgi-intercept
+{
+  lib,
+  buildPythonPackage,
+  isPy27,
+  fetchPypi,
+  distro,
+  httplib2,
+  oauthlib,
+  setuptools,
+  six,
+  wadllib,
+  fixtures,
+  lazr-uri,
+  pytestCheckHook,
+  wsgi-intercept,
 }:
 
 buildPythonPackage rec {
@@ -25,16 +26,28 @@ buildPythonPackage rec {
     hash = "sha256-Q/EqHTlIRjsUYgOMR7Qp3LXkLgun8uFlEbArpdKt/9s=";
   };
 
-  propagatedBuildInputs = [ distro httplib2 oauthlib setuptools six wadllib ];
+  propagatedBuildInputs = [
+    distro
+    httplib2
+    oauthlib
+    setuptools
+    six
+    wadllib
+  ];
 
   # E   ModuleNotFoundError: No module named 'lazr.uri'
   doCheck = false;
-  nativeCheckInputs = [ fixtures lazr-uri pytestCheckHook wsgi-intercept ];
+  nativeCheckInputs = [
+    fixtures
+    lazr-uri
+    pytestCheckHook
+    wsgi-intercept
+  ];
 
   pythonImportsCheck = [ "lazr.restfulclient" ];
 
   meta = with lib; {
-    description = "A programmable client library that takes advantage of the commonalities among";
+    description = "Programmable client library that takes advantage of the commonalities among";
     homepage = "https://launchpad.net/lazr.restfulclient";
     license = licenses.lgpl3;
     maintainers = [ ];
diff --git a/pkgs/development/python-modules/lazr-uri/default.nix b/pkgs/development/python-modules/lazr-uri/default.nix
index 604086ebcaf34..f714fa9ccd49f 100644
--- a/pkgs/development/python-modules/lazr-uri/default.nix
+++ b/pkgs/development/python-modules/lazr-uri/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, isPy27
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  isPy27,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ setuptools ];
 
   meta = with lib; {
-    description = "A self-contained, easily reusable library for parsing, manipulating";
+    description = "Self-contained, easily reusable library for parsing, manipulating";
     homepage = "https://launchpad.net/lazr.uri";
     license = licenses.lgpl3;
     maintainers = [ ];
diff --git a/pkgs/development/python-modules/lazr/config.nix b/pkgs/development/python-modules/lazr/config.nix
index 79e60a5f98804..1b5520b79b357 100644
--- a/pkgs/development/python-modules/lazr/config.nix
+++ b/pkgs/development/python-modules/lazr/config.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, lazr-delegates
-, zope-interface
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  lazr-delegates,
+  zope-interface,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,22 +19,16 @@ buildPythonPackage rec {
     hash = "sha256-oU5PbMCa68HUCxdhWK6g7uIlLBQAO40O8LMcfFFMNkQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     lazr-delegates
     zope-interface
   ];
 
-  pythonImportsCheck = [
-    "lazr.config"
-  ];
+  pythonImportsCheck = [ "lazr.config" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # change the directory to avoid a namespace-related problem
   # ModuleNotFoundError: No module named 'lazr.delegates'
@@ -41,9 +36,7 @@ buildPythonPackage rec {
     cd $out
   '';
 
-  pythonNamespaces = [
-    "lazr"
-  ];
+  pythonNamespaces = [ "lazr" ];
 
   meta = with lib; {
     description = "Create configuration schemas, and process and validate configurations";
diff --git a/pkgs/development/python-modules/lazr/delegates.nix b/pkgs/development/python-modules/lazr/delegates.nix
index ef4eda0de9e51..1ebec55d7d169 100644
--- a/pkgs/development/python-modules/lazr/delegates.nix
+++ b/pkgs/development/python-modules/lazr/delegates.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, zope-interface
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  zope-interface,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,25 +18,15 @@ buildPythonPackage rec {
     hash = "sha256-UNT7iHK5UuV6SOEmEOVQ+jBm7rV8bGx1tqUUJBi6wZw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    zope-interface
-  ];
+  propagatedBuildInputs = [ zope-interface ];
 
-  pythonImportsCheck = [
-    "lazr.delegates"
-  ];
+  pythonImportsCheck = [ "lazr.delegates" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonNamespaces = [
-    "lazr"
-  ];
+  pythonNamespaces = [ "lazr" ];
 
   meta = with lib; {
     description = "Easily write objects that delegate behavior";
diff --git a/pkgs/development/python-modules/lazy-import/default.nix b/pkgs/development/python-modules/lazy-import/default.nix
deleted file mode 100644
index bf74e4d41dec0..0000000000000
--- a/pkgs/development/python-modules/lazy-import/default.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi
-, pytestCheckHook
-, pytest-forked
-, py
-, python
-, six }:
-
-buildPythonPackage rec {
-  pname = "lazy-import";
-  version = "0.2.2";
-  format = "setuptools";
-
-  src = fetchPypi {
-    pname = "lazy_import";
-    inherit version;
-    sha256 = "0gca9xj60qr3aprj9qdc66crr4r7hl8wzv6gc9y40nclazwawj91";
-  };
-
-  nativeCheckInputs = [
-    pytestCheckHook
-    pytest-forked
-    py
-  ];
-
-  propagatedBuildInputs = [
-    six
-  ];
-
-  preCheck = ''
-    # avoid AttributeError: module 'py' has no attribute 'process'
-    export PYTHONPATH=${py}/${python.sitePackages}:$PYTHONPATH
-  '';
-
-  pytestFlagsArray = [
-    "--forked"
-  ];
-
-  meta = with lib; {
-    description = "A set of functions that load modules, and related attributes, in a lazy fashion";
-    homepage = "https://github.com/mnmelo/lazy_import";
-    license = licenses.gpl3Plus;
-    maintainers = [ ];
-  };
-}
diff --git a/pkgs/development/python-modules/lazy-imports/default.nix b/pkgs/development/python-modules/lazy-imports/default.nix
index e15b3226006ff..f52db38bf30dd 100644
--- a/pkgs/development/python-modules/lazy-imports/default.nix
+++ b/pkgs/development/python-modules/lazy-imports/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, packaging
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  packaging,
 }:
 let
   pname = "lazy-imports";
@@ -20,9 +20,7 @@ buildPythonPackage {
     hash = "sha256-i+VPlBoxNqk56U4oiEgS1Ayhi1t2O8PtLZ/bzEurUY8=";
   };
 
-  pythonImportsCheck = [
-    "lazy_imports"
-  ];
+  pythonImportsCheck = [ "lazy_imports" ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -30,7 +28,7 @@ buildPythonPackage {
   ];
 
   meta = with lib; {
-    description = "Python tool to support lazy imports.";
+    description = "Python tool to support lazy imports";
     homepage = "https://github.com/telekom/lazy-imports";
     changelog = "https://github.com/telekom/lazy-imports/releases/tag/${version}";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/lazy-loader/default.nix b/pkgs/development/python-modules/lazy-loader/default.nix
index 80de565b5f620..ad51358ccb78d 100644
--- a/pkgs/development/python-modules/lazy-loader/default.nix
+++ b/pkgs/development/python-modules/lazy-loader/default.nix
@@ -1,35 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "lazy-loader";
-  version = "0.3";
-  format = "pyproject";
+  version = "0.4";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "scientific-python";
     repo = "lazy_loader";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Ky9EwPYt/wBqWXopH5WFjlVG+/Rd2gc+mlCeWqG7mZg=";
+    hash = "sha256-4Kid6yhm9C2liPoW+NlCsOiBZvv6iYt7hDunARc4PRY=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "lazy_loader" ];
 
   meta = with lib; {
     description = "Populate library namespace without incurring immediate import costs";
     homepage = "https://github.com/scientific-python/lazy_loader";
     changelog = "https://github.com/scientific-python/lazy_loader/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/lazy-object-proxy/default.nix b/pkgs/development/python-modules/lazy-object-proxy/default.nix
index 4026bbbe5531e..33467e6f3b1e7 100644
--- a/pkgs/development/python-modules/lazy-object-proxy/default.nix
+++ b/pkgs/development/python-modules/lazy-object-proxy/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -15,26 +16,21 @@ buildPythonPackage rec {
     hash = "sha256-eCR7bUX0OlLvNcJbVYFFnoURciVAikEoo9r4v5ZIrGk=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   postPatch = ''
     substituteInPlace pyproject.toml --replace ",<6.0" ""
     substituteInPlace setup.cfg --replace ",<6.0" ""
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Broken tests. Seem to be fixed upstream according to Travis.
   doCheck = false;
 
   meta = with lib; {
-    description = "A fast and thorough lazy object proxy";
+    description = "Fast and thorough lazy object proxy";
     homepage = "https://github.com/ionelmc/python-lazy-object-proxy";
     license = with licenses; [ bsd2 ];
   };
-
 }
diff --git a/pkgs/development/python-modules/lazy/default.nix b/pkgs/development/python-modules/lazy/default.nix
index 0403b47f53244..a7baf15384cd1 100644
--- a/pkgs/development/python-modules/lazy/default.nix
+++ b/pkgs/development/python-modules/lazy/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/lc7001/default.nix b/pkgs/development/python-modules/lc7001/default.nix
index 6e0f565bdc984..478fe1a2f8258 100644
--- a/pkgs/development/python-modules/lc7001/default.nix
+++ b/pkgs/development/python-modules/lc7001/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchPypi
-, pythonOlder
-, poetry-core
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  pythonOlder,
+  poetry-core,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -24,16 +25,12 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  propagatedBuildInputs = [
-    cryptography
-  ];
+  propagatedBuildInputs = [ cryptography ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "lc7001"
-  ];
+  pythonImportsCheck = [ "lc7001" ];
 
   meta = with lib; {
     description = "Python module for interacting with Legrand LC7001";
diff --git a/pkgs/development/python-modules/lcd-i2c/default.nix b/pkgs/development/python-modules/lcd-i2c/default.nix
index 7ba9be221dde1..27d9716cd1284 100644
--- a/pkgs/development/python-modules/lcd-i2c/default.nix
+++ b/pkgs/development/python-modules/lcd-i2c/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, python3
-, fetchPypi
-, buildPythonPackage
-, smbus2
-, poetry-core
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  smbus2,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
@@ -16,13 +16,9 @@ buildPythonPackage rec {
     hash = "sha256-NYBaCXBmuTziT0WYEqrW10HRmRy3jpjH3YWQh5Y/TdQ=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    smbus2
-  ];
+  propagatedBuildInputs = [ smbus2 ];
 
   meta = with lib; {
     description = "Library for interacting with an I2C LCD screen through Python";
diff --git a/pkgs/development/python-modules/lcgit/default.nix b/pkgs/development/python-modules/lcgit/default.nix
index 0bb27d54cb1ac..91258c86a08b8 100644
--- a/pkgs/development/python-modules/lcgit/default.nix
+++ b/pkgs/development/python-modules/lcgit/default.nix
@@ -1,14 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "lcgit";
-  version = "0.2.1";
-  format = "setuptools";
+  version = "1.0.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -16,24 +18,22 @@ buildPythonPackage rec {
     owner = "cisagov";
     repo = "lcgit";
     rev = "refs/tags/v${version}";
-    hash = "sha256-bLeblC68+j+YwvgnV1wgJiWm/jxZFzhTSDwXpoSzUTg=";
+    hash = "sha256-aMwjgN9//jAnTYnbJJvQyfE/f+5QosKxF1l4vF+3myc=";
   };
 
   postPatch = ''
     substituteInPlace pytest.ini \
-      --replace " --cov" ""
+      --replace-fail " --cov" ""
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [
-    "lcgit"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "lcgit" ];
 
   meta = with lib; {
-    description = "A pythonic Linear Congruential Generator iterator";
+    description = "Pythonic Linear Congruential Generator iterator";
     homepage = "https://github.com/cisagov/lcgit";
     changelog = "https://github.com/cisagov/lcgit/releases/tag/v${version}";
     license = licenses.cc0;
diff --git a/pkgs/development/python-modules/lcn-frontend/default.nix b/pkgs/development/python-modules/lcn-frontend/default.nix
new file mode 100644
index 0000000000000..2ddb12711b41c
--- /dev/null
+++ b/pkgs/development/python-modules/lcn-frontend/default.nix
@@ -0,0 +1,39 @@
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "lcn-frontend";
+  version = "0.1.6";
+  pyproject = true;
+
+  src = fetchPypi {
+    pname = "lcn_frontend";
+    inherit version;
+    hash = "sha256-bOR2BFYHZjRVhlH72ljqp4WKtWdqBkzZNyrmtuIzmIM=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "setuptools~=68.0" setuptools \
+      --replace-fail "wheel~=0.40.0" wheel
+  '';
+
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "lcn_frontend" ];
+
+  # upstream has no tests
+  doCheck = false;
+
+  meta = {
+    changelog = "https://github.com/alengwenus/lcn-frontend/releases/tag/${version}";
+    description = "LCN panel for Home Assistant";
+    homepage = "https://github.com/alengwenus/lcn-frontend";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/lcov-cobertura/default.nix b/pkgs/development/python-modules/lcov-cobertura/default.nix
index a2f91b8436def..0f1697c7f62f9 100644
--- a/pkgs/development/python-modules/lcov-cobertura/default.nix
+++ b/pkgs/development/python-modules/lcov-cobertura/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
   };
 
   doCheck = true;
-  pythonImportsCheck = [
-    "lcov_cobertura"
-  ];
+  pythonImportsCheck = [ "lcov_cobertura" ];
 
   meta = {
     description = "Converts code coverage from lcov format to Cobertura's XML format";
diff --git a/pkgs/development/python-modules/ld2410-ble/default.nix b/pkgs/development/python-modules/ld2410-ble/default.nix
index 774e79e5ca299..b680db42a4d92 100644
--- a/pkgs/development/python-modules/ld2410-ble/default.nix
+++ b/pkgs/development/python-modules/ld2410-ble/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, async-timeout
-, bleak
-, bleak-retry-connector
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  async-timeout,
+  bleak,
+  bleak-retry-connector,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
       --replace " --cov=ld2410_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     async-timeout
@@ -38,13 +37,9 @@ buildPythonPackage rec {
     bleak-retry-connector
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ld2410_ble"
-  ];
+  pythonImportsCheck = [ "ld2410_ble" ];
 
   meta = with lib; {
     description = "Library for the LD2410B modules from HiLinks";
diff --git a/pkgs/development/python-modules/ldap3-bleeding-edge/default.nix b/pkgs/development/python-modules/ldap3-bleeding-edge/default.nix
new file mode 100644
index 0000000000000..23733a9be2fac
--- /dev/null
+++ b/pkgs/development/python-modules/ldap3-bleeding-edge/default.nix
@@ -0,0 +1,43 @@
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  gssapi,
+  pyasn1,
+  pycryptodomex,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "ldap3-bleeding-edge";
+  version = "2.10.1.1337";
+  pyproject = true;
+
+  src = fetchPypi {
+    pname = "ldap3_bleeding_edge";
+    inherit version;
+    hash = "sha256-j4hzcqwOONol6YqY9Ldz9YphjPmacFoVyqUnMHW1aZk=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    cryptography
+    gssapi
+    pyasn1
+    pycryptodomex
+  ];
+
+  pythonImportsCheck = [ "ldap3" ];
+
+  # Tests require network access
+  doCheck = false;
+
+  meta = {
+    description = "Strictly RFC 4510 conforming LDAP V3 client library (bleeding edge)";
+    homepage = "https://pypi.org/project/ldap3-bleeding-edge/";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/ldap3/default.nix b/pkgs/development/python-modules/ldap3/default.nix
index c04ec4e49c4cb..14534ef1d15ab 100644
--- a/pkgs/development/python-modules/ldap3/default.nix
+++ b/pkgs/development/python-modules/ldap3/default.nix
@@ -1,4 +1,11 @@
-{ lib, fetchPypi, fetchpatch, buildPythonPackage, dos2unix, pyasn1 }:
+{
+  lib,
+  fetchPypi,
+  fetchpatch,
+  buildPythonPackage,
+  dos2unix,
+  pyasn1,
+}:
 
 buildPythonPackage rec {
   pname = "ldap3";
@@ -32,8 +39,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://pypi.python.org/pypi/ldap3";
-    description = "A strictly RFC 4510 conforming LDAP V3 pure Python client library";
+    description = "Strictly RFC 4510 conforming LDAP V3 pure Python client library";
     license = licenses.lgpl3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ldapdomaindump/default.nix b/pkgs/development/python-modules/ldapdomaindump/default.nix
index 5f8941047bb2a..e154108d063c5 100644
--- a/pkgs/development/python-modules/ldapdomaindump/default.nix
+++ b/pkgs/development/python-modules/ldapdomaindump/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, dnspython
-, future
-, ldap3
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  dnspython,
+  future,
+  ldap3,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,15 +29,13 @@ buildPythonPackage rec {
   # requires ldap server
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ldapdomaindump"
-  ];
+  pythonImportsCheck = [ "ldapdomaindump" ];
 
   meta = with lib; {
     description = "Active Directory information dumper via LDAP";
     homepage = "https://github.com/dirkjanm/ldapdomaindump/";
     changelog = "https://github.com/dirkjanm/ldapdomaindump/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ldappool/default.nix b/pkgs/development/python-modules/ldappool/default.nix
index 2cb2155bfed4e..8184d7cd433fc 100644
--- a/pkgs/development/python-modules/ldappool/default.nix
+++ b/pkgs/development/python-modules/ldappool/default.nix
@@ -1,42 +1,56 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pbr
-, python-ldap
-, prettytable
-, six
-, fixtures
-, testresources
-, testtools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pbr,
+  python-ldap,
+  prettytable,
+  six,
+  unittestCheckHook,
+  fixtures,
+  testresources,
+  testtools,
 }:
 
 buildPythonPackage rec {
   pname = "ldappool";
   version = "3.0.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     pname = "ldappool";
     inherit version;
-    sha256 = "4bb59b7d6b11407f48ee01a781267e3c8ba98d91f426806ac7208612ae087b86";
+    hash = "sha256-S7WbfWsRQH9I7gGngSZ+PIupjZH0JoBqxyCGEq4Ie4Y=";
   };
 
-  postPatch = ''
-    # Tests run without most of the dependencies
-    echo "" > test-requirements.txt
-    # PrettyTable is now maintained again
-    substituteInPlace requirements.txt --replace "PrettyTable<0.8,>=0.7.2" "PrettyTable"
-  '';
+  build-system = [
+    setuptools
+    pbr
+  ];
 
-  nativeBuildInputs = [ pbr ];
+  dependencies = [
+    python-ldap
+    prettytable
+    six
+  ];
 
-  propagatedBuildInputs = [ python-ldap prettytable six ];
+  nativeCheckInputs = [
+    unittestCheckHook
+    fixtures
+    testresources
+    testtools
+  ];
 
-  nativeCheckInputs = [ fixtures testresources testtools ];
+  pythonImportsCheck = [ "ldappool" ];
 
   meta = with lib; {
-    description = "A simple connector pool for python-ldap";
+    description = "Simple connector pool for python-ldap";
     homepage = "https://opendev.org/openstack/ldappool/";
-    license = with licenses; [ mpl11 lgpl21Plus gpl2Plus ];
+    license = with licenses; [
+      mpl11
+      lgpl21Plus
+      gpl2Plus
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/ldaptor/default.nix b/pkgs/development/python-modules/ldaptor/default.nix
index 0095995ed6c19..ead49289a35ff 100644
--- a/pkgs/development/python-modules/ldaptor/default.nix
+++ b/pkgs/development/python-modules/ldaptor/default.nix
@@ -1,14 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, twisted
-, passlib
-, pyparsing
-, service-identity
-, six
-, zope-interface
-, pythonOlder
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  twisted,
+  passlib,
+  pyparsing,
+  six,
+  zope-interface,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +29,7 @@ buildPythonPackage rec {
     zope-interface
   ] ++ twisted.optional-dependencies.tls;
 
-  nativeCheckInputs = [
-    twisted
-  ];
+  nativeCheckInputs = [ twisted ];
 
   # Test creates an excessive amount of temporary files (order of millions).
   # Cleaning up those files already took over 15 hours already on my zfs
@@ -44,9 +41,9 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A Pure-Python Twisted library for LDAP";
+    description = "Pure-Python Twisted library for LDAP";
     homepage = "https://github.com/twisted/ldaptor";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/leanblueprint/default.nix b/pkgs/development/python-modules/leanblueprint/default.nix
new file mode 100644
index 0000000000000..20a8a51b0a7d2
--- /dev/null
+++ b/pkgs/development/python-modules/leanblueprint/default.nix
@@ -0,0 +1,54 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  plasTeX,
+  plastexshowmore,
+  plastexdepgraph,
+  click,
+  rich,
+  rich-click,
+  tomlkit,
+  jinja2,
+  gitpython,
+}:
+buildPythonPackage {
+  pname = "leanblueprint";
+  version = "0.0.10";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    repo = "leanblueprint";
+    owner = "PatrickMassot";
+    rev = "v0.0.10";
+    hash = "sha256-CUYdxEXgTf2vKDiOoeW4RV6tQ6prFhA4qMc0olZtZBM=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    plasTeX
+    plastexshowmore
+    plastexdepgraph
+    click
+    rich
+    rich-click
+    tomlkit
+    jinja2
+    gitpython
+  ];
+
+  pythonImportsCheck = [ "leanblueprint" ];
+
+  meta = {
+    description = "This plasTeX plugin allowing to write blueprints for Lean 4 projects";
+    homepage = "https://github.com/PatrickMassot/leanblueprint";
+    maintainers = with lib.maintainers; [ niklashh ];
+    license = lib.licenses.asl20;
+  };
+}
diff --git a/pkgs/development/python-modules/leather/default.nix b/pkgs/development/python-modules/leather/default.nix
index 138a412017fef..6cac7476142f0 100644
--- a/pkgs/development/python-modules/leather/default.nix
+++ b/pkgs/development/python-modules/leather/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, six
-, cssselect
-, lxml
-, pytestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  six,
+  cssselect,
+  lxml,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -14,7 +15,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-+WS+wghvMVOmwW5wfyDLcY+BH1evEWB19MD0gFxgi5U=";
+    hash = "sha256-+WS+wghvMVOmwW5wfyDLcY+BH1evEWB19MD0gFxgi5U=";
   };
 
   propagatedBuildInputs = [ six ];
@@ -30,6 +31,6 @@ buildPythonPackage rec {
     description = "Python charting library";
     license = licenses.mit;
     platforms = platforms.all;
-    maintainers = with maintainers; [ vrthra ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/leb128/default.nix b/pkgs/development/python-modules/leb128/default.nix
index 4247a4ff75495..4840c3cc678a6 100644
--- a/pkgs/development/python-modules/leb128/default.nix
+++ b/pkgs/development/python-modules/leb128/default.nix
@@ -1,23 +1,33 @@
-{ buildPythonPackage, fetchFromGitHub, pytestCheckHook, lib }:
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  lib,
+}:
 
 buildPythonPackage rec {
   pname = "leb128";
-  version = "1.0.5";
-  format = "setuptools";
+  version = "1.0.8";
+  pyproject = true;
 
   # fetchPypi doesn't include files required for tests
   src = fetchFromGitHub {
     owner = "mohanson";
     repo = "leb128";
     rev = "refs/tags/v${version}";
-    hash = "sha256-zK14LPziBkvXAMzuPbcg/47caO/5GEYA9txAzCGfpS8=";
+    hash = "sha256-7ZjDqxGUANk3FfB3HPTc5CB5YcIi2ee0igXWAYXaZ88=";
   };
 
+  build-system = [ setuptools ];
+
   nativeCheckInputs = [ pytestCheckHook ];
+
   pythonImportsCheck = [ "leb128" ];
 
   meta = with lib; {
-    description = "A utility to encode and decode Little Endian Base 128";
+    changelog = "https://github.com/mohanson/leb128/releases/tag/v${version}";
+    description = "Utility to encode and decode Little Endian Base 128";
     homepage = "https://github.com/mohanson/leb128";
     license = licenses.mit;
     maintainers = with maintainers; [ urlordjames ];
diff --git a/pkgs/development/python-modules/led-ble/default.nix b/pkgs/development/python-modules/led-ble/default.nix
index 653d75a46da47..595e353c431b5 100644
--- a/pkgs/development/python-modules/led-ble/default.nix
+++ b/pkgs/development/python-modules/led-ble/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, async-timeout
-, bleak
-, bleak-retry-connector
-, buildPythonPackage
-, fetchFromGitHub
-, flux-led
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  async-timeout,
+  bleak,
+  bleak-retry-connector,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flux-led,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "led-ble";
-  version = "1.0.1";
+  version = "1.0.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.9";
@@ -21,7 +22,7 @@ buildPythonPackage rec {
     owner = "Bluetooth-Devices";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-8DBA01QjW99OVYI9zC1Q+utnwzc10idUG7y+lmUbO4A=";
+    hash = "sha256-4z6SJE/VFNa81ecDal2IEX9adYBrSzco9VfhUPKBj4k=";
   };
 
   postPatch = ''
@@ -29,25 +30,17 @@ buildPythonPackage rec {
       --replace " --cov=led_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     bleak
     bleak-retry-connector
     flux-led
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    async-timeout
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ async-timeout ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "led_ble"
-  ];
+  pythonImportsCheck = [ "led_ble" ];
 
   meta = with lib; {
     description = "Library for LED BLE devices";
diff --git a/pkgs/development/python-modules/ledger-agent/default.nix b/pkgs/development/python-modules/ledger-agent/default.nix
index 28bdfb4248572..e514260a8a34a 100644
--- a/pkgs/development/python-modules/ledger-agent/default.nix
+++ b/pkgs/development/python-modules/ledger-agent/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, ledgerblue
-, setuptools
-, libagent
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  ledgerblue,
+  setuptools,
+  libagent,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,10 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [
-    ledgerblue libagent setuptools wheel
+    ledgerblue
+    libagent
+    setuptools
+    wheel
   ];
 
   # no tests
@@ -29,6 +33,10 @@ buildPythonPackage rec {
     description = "Using Ledger as hardware-based SSH/PGP agent";
     homepage = "https://github.com/romanz/trezor-agent";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ hkjn np mmahut ];
+    maintainers = with maintainers; [
+      hkjn
+      np
+      mmahut
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/ledger-bitcoin/default.nix b/pkgs/development/python-modules/ledger-bitcoin/default.nix
index 8298da004ccff..fc22db58923b0 100644
--- a/pkgs/development/python-modules/ledger-bitcoin/default.nix
+++ b/pkgs/development/python-modules/ledger-bitcoin/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, ledgercomm
-, packaging
-, bip32
-, coincurve
-, typing-extensions
- }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  ledgercomm,
+  packaging,
+  bip32,
+  coincurve,
+  typing-extensions,
+}:
 
 buildPythonPackage rec {
   pname = "ledger-bitcoin";
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-rZzerzOkVWK71brmdRAluGmi+B1usCZ90GKgH1klpNU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     ledgercomm
@@ -32,12 +31,10 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  pythonImportsCheck = [
-    "ledger_bitcoin"
-  ];
+  pythonImportsCheck = [ "ledger_bitcoin" ];
 
   meta = with lib; {
-    description = "Client library for Ledger Bitcoin application.";
+    description = "Client library for Ledger Bitcoin application";
     homepage = "https://github.com/LedgerHQ/app-bitcoin-new/tree/develop/bitcoin_client/ledger_bitcoin";
     license = licenses.asl20;
   };
diff --git a/pkgs/development/python-modules/ledgerblue/default.nix b/pkgs/development/python-modules/ledgerblue/default.nix
index 9342f8d3b5da8..4885fa14524e8 100644
--- a/pkgs/development/python-modules/ledgerblue/default.nix
+++ b/pkgs/development/python-modules/ledgerblue/default.nix
@@ -1,35 +1,46 @@
-{ lib
-, stdenv
-, bleak
-, buildPythonPackage
-, ecpy
-, fetchPypi
-, future
-, hidapi
-, nfcpy
-, pillow
-, protobuf
-, pycrypto
-, pycryptodomex
-, pyelftools
-, python-u2flib-host
-, pythonOlder
-, websocket-client
+{
+  lib,
+  stdenv,
+  bleak,
+  buildPythonPackage,
+  ecpy,
+  fetchPypi,
+  future,
+  hidapi,
+  nfcpy,
+  pillow,
+  protobuf,
+  pycrypto,
+  pycryptodomex,
+  pyelftools,
+  python-gnupg,
+  python-u2flib-host,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  websocket-client,
 }:
 
 buildPythonPackage rec {
   pname = "ledgerblue";
-  version = "0.1.48";
-  format = "setuptools";
+  version = "0.1.54";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-LVRNcsTmJOR3zTBhbKV4V0zCQk0sk/Uf6kSmfbAhgfY=";
+    hash = "sha256-Hn99ST6RnER6XI6+rqA3O9/aC+whYoTOzeoHGF/fFz4=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  pythonRelaxDeps = [ "protobuf" ];
+
+  dependencies = [
     ecpy
     future
     hidapi
@@ -39,19 +50,15 @@ buildPythonPackage rec {
     pycrypto
     pycryptodomex
     pyelftools
+    python-gnupg
     python-u2flib-host
     websocket-client
-  ]
-  ++ lib.optionals stdenv.isLinux [
-    bleak
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isLinux [ bleak ];
 
   # No tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ledgerblue"
-  ];
+  pythonImportsCheck = [ "ledgerblue" ];
 
   meta = with lib; {
     description = "Python library to communicate with Ledger Blue/Nano S";
diff --git a/pkgs/development/python-modules/ledgercomm/default.nix b/pkgs/development/python-modules/ledgercomm/default.nix
index b4493eaa1a881..b23b296385586 100644
--- a/pkgs/development/python-modules/ledgercomm/default.nix
+++ b/pkgs/development/python-modules/ledgercomm/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, setuptools-scm
- }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+}:
 
 buildPythonPackage rec {
   pname = "ledgercomm";
@@ -20,12 +21,10 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  pythonImportsCheck = [
-    "ledgercomm"
-  ];
+  pythonImportsCheck = [ "ledgercomm" ];
 
   meta = with lib; {
-    description = "Python library to send and receive APDU through HID or TCP socket. It can be used with a Ledger Nano S/X or with the Speculos emulator.";
+    description = "Python library to send and receive APDU through HID or TCP socket. It can be used with a Ledger Nano S/X or with the Speculos emulator";
     mainProgram = "ledgercomm-send";
     homepage = "https://github.com/LedgerHQ/ledgercomm";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/ledgerwallet/default.nix b/pkgs/development/python-modules/ledgerwallet/default.nix
index a8d9c612e157e..0cbc048ee6708 100644
--- a/pkgs/development/python-modules/ledgerwallet/default.nix
+++ b/pkgs/development/python-modules/ledgerwallet/default.nix
@@ -1,37 +1,40 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, fetchpatch
-, buildPythonPackage
-, cryptography
-, click
-, construct
-, ecdsa
-, flit-core
-, hidapi
-, intelhex
-, pillow
-, protobuf3
-, requests
-, setuptools
-, tabulate
-, toml
-, AppKit
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  buildPythonPackage,
+  cryptography,
+  click,
+  construct,
+  ecdsa,
+  hidapi,
+  intelhex,
+  pillow,
+  protobuf,
+  requests,
+  setuptools,
+  setuptools-scm,
+  tabulate,
+  toml,
+  AppKit,
 }:
 
 buildPythonPackage rec {
   pname = "ledgerwallet";
-  version = "0.2.4";
+  version = "0.5.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "LedgerHQ";
     repo = "ledgerctl";
     rev = "v${version}";
-    hash = "sha256-IcStYYkKEdZxwgJKL8l2Y1BtO/Oncd4aKUAZD8umbHs=";
+    hash = "sha256-PBULYvyO3+YaW+a1/enJtKB/DR4ndL/o/WdpETbWyZ0=";
   };
 
-  buildInputs = [ flit-core setuptools ] ++ lib.optionals stdenv.isDarwin [ AppKit ];
+  buildInputs = [
+    setuptools
+    setuptools-scm
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ AppKit ];
   propagatedBuildInputs = [
     cryptography
     click
@@ -40,19 +43,33 @@ buildPythonPackage rec {
     hidapi
     intelhex
     pillow
-    protobuf3
+    protobuf
     requests
     tabulate
     toml
   ];
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail '"protobuf >=3.20,<4"' '"protobuf >=3.20"'
+  '';
+
+  # Regenerate protobuf bindings to lift the version upper-bound and enable
+  # compatibility the current default protobuf library.
+  preBuild = ''
+    protoc --python_out=. --pyi_out=. ledgerwallet/proto/*.proto
+  '';
+
   pythonImportsCheck = [ "ledgerwallet" ];
 
   meta = with lib; {
     homepage = "https://github.com/LedgerHQ/ledgerctl";
-    description = "A library to control Ledger devices";
+    description = "Library to control Ledger devices";
     mainProgram = "ledgerctl";
     license = licenses.mit;
-    maintainers = with maintainers; [ d-xo erdnaxe ];
+    maintainers = with maintainers; [
+      d-xo
+      erdnaxe
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/legacy-cgi/default.nix b/pkgs/development/python-modules/legacy-cgi/default.nix
new file mode 100644
index 0000000000000..e7c3e0a198d3d
--- /dev/null
+++ b/pkgs/development/python-modules/legacy-cgi/default.nix
@@ -0,0 +1,36 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "legacy-cgi";
+  version = "2.6.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "jackrosenthal";
+    repo = "legacy-cgi";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-hhWZoRswkuwvgkcKthNhMkPPhhoRH4TjdNp+orluQTQ=";
+  };
+
+  build-system = [ poetry-core ];
+
+  pythonImportsCheck = [
+    "cgi"
+    "cgitb"
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "Fork of the standard library cgi and cgitb modules, being deprecated in PEP-594";
+    homepage = "https://github.com/jackrosenthal/legacy-cgi";
+    license = lib.licenses.psfl;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/leidenalg/default.nix b/pkgs/development/python-modules/leidenalg/default.nix
index 661ac2c715975..947b968e0def5 100644
--- a/pkgs/development/python-modules/leidenalg/default.nix
+++ b/pkgs/development/python-modules/leidenalg/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, ddt
-, fetchFromGitHub
-, igraph
-, igraph-c
-, libleidenalg
-, pythonOlder
-, setuptools-scm
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  ddt,
+  fetchFromGitHub,
+  igraph,
+  igraph-c,
+  libleidenalg,
+  pythonOlder,
+  setuptools-scm,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -24,18 +25,14 @@ buildPythonPackage rec {
     hash = "sha256-oaTV+BIB/YQBWKrVXuiIEMH/1MxPxeHhjUzbmxt6hlw=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   buildInputs = [
     igraph-c
     libleidenalg
   ];
 
-  propagatedBuildInputs = [
-    igraph
-  ];
+  propagatedBuildInputs = [ igraph ];
 
   checkInputs = [
     ddt
diff --git a/pkgs/development/python-modules/leveldb/default.nix b/pkgs/development/python-modules/leveldb/default.nix
index e275d41f89158..a13f11c742064 100644
--- a/pkgs/development/python-modules/leveldb/default.nix
+++ b/pkgs/development/python-modules/leveldb/default.nix
@@ -1,19 +1,33 @@
-{ lib, fetchPypi, buildPythonPackage }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonAtLeast,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "leveldb";
   version = "0.201";
-  format = "setuptools";
+
+  pyproject = true;
+
+  disabled = pythonAtLeast "3.12";
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "1cffe776842917e09f073bd6ea5856c64136aebddbe51bd17ea29913472fecbf";
   };
 
+  nativeBuildInputs = [ setuptools ];
+
   meta = with lib; {
     homepage = "https://code.google.com/archive/p/py-leveldb/";
     description = "Thread-safe Python bindings for LevelDB";
-    platforms = [ "x86_64-linux" "i686-linux" ];
+    platforms = [
+      "x86_64-linux"
+      "i686-linux"
+    ];
     license = licenses.bsd3;
     maintainers = [ maintainers.aanderse ];
   };
diff --git a/pkgs/development/python-modules/levenshtein/default.nix b/pkgs/development/python-modules/levenshtein/default.nix
index a7913fd5b0970..dab384316fb74 100644
--- a/pkgs/development/python-modules/levenshtein/default.nix
+++ b/pkgs/development/python-modules/levenshtein/default.nix
@@ -1,6 +1,5 @@
 {
   lib,
-  stdenv,
   buildPythonPackage,
   cmake,
   cython,
@@ -37,12 +36,6 @@ buildPythonPackage rec {
 
   buildInputs = [ rapidfuzz-cpp ];
 
-  env.NIX_CFLAGS_COMPILE = toString (
-    lib.optionals (stdenv.cc.isClang && stdenv.isDarwin) [
-      "-fno-lto" # work around https://github.com/NixOS/nixpkgs/issues/19098
-    ]
-  );
-
   dependencies = [ rapidfuzz ];
 
   nativeCheckInputs = [ pytestCheckHook ];
diff --git a/pkgs/development/python-modules/lexid/default.nix b/pkgs/development/python-modules/lexid/default.nix
index 42ebe98dccc9f..3fc48bd5e914b 100644
--- a/pkgs/development/python-modules/lexid/default.nix
+++ b/pkgs/development/python-modules/lexid/default.nix
@@ -1,4 +1,11 @@
-{ lib, pythonOlder, buildPythonPackage, fetchPypi, pytestCheckHook, click }:
+{
+  lib,
+  pythonOlder,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  click,
+}:
 
 buildPythonPackage rec {
   pname = "lexid";
diff --git a/pkgs/development/python-modules/lexilang/default.nix b/pkgs/development/python-modules/lexilang/default.nix
index 8577cb5211964..e586eba5a3e2f 100644
--- a/pkgs/development/python-modules/lexilang/default.nix
+++ b/pkgs/development/python-modules/lexilang/default.nix
@@ -1,30 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "lexilang";
-  version = "1.0.1";
+  version = "1.0.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "LibreTranslate";
     repo = "LexiLang";
-    rev = "v${version}";
-    hash = "sha256-TLkaqCE9NDjN2XuYOUkeeWIRcqkxrdg31fS4mEnlcEo=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-/uSoEz/5HJnFVkXZndIlM+K0OJLJaorFQ6+kWYELjrs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   checkPhase = ''
     runHook preCheck
diff --git a/pkgs/development/python-modules/lib4sbom/default.nix b/pkgs/development/python-modules/lib4sbom/default.nix
new file mode 100644
index 0000000000000..e7e581174b613
--- /dev/null
+++ b/pkgs/development/python-modules/lib4sbom/default.nix
@@ -0,0 +1,67 @@
+{
+  lib,
+  buildPythonPackage,
+  defusedxml,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  semantic-version,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "lib4sbom";
+  version = "0.7.5";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "anthonyharrison";
+    repo = "lib4sbom";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-NWrHz4G5Ps5GoZUcx0LiSQzbTZlU4eGYgli6znG+NSs=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    defusedxml
+    pyyaml
+    semantic-version
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  disabledTests = [
+    # stub tests that always fail
+    "TestCycloneDXGenerator"
+    "TestCcycloneDX_parser"
+    "TestGenerator"
+    "TestOutput"
+    "TestParser"
+    "TestSPDX_Generator"
+    "TestSPDX_Parser"
+    # tests with missing getters
+    "test_set_downloadlocation"
+    "test_set_homepage"
+    "test_set_checksum"
+    "test_set_externalreference"
+    # checks for invalid return type
+    "test_set_type"
+    # wrong capilatization
+    "test_set_supplier"
+    "test_set_originator"
+  ];
+
+  pythonImportsCheck = [ "lib4sbom" ];
+
+  meta = with lib; {
+    description = "Library to ingest and generate SBOMs";
+    homepage = "https://github.com/anthonyharrison/lib4sbom";
+    changelog = "https://github.com/anthonyharrison/lib4sbom/releases/tag/v${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ teatwig ];
+  };
+}
diff --git a/pkgs/development/python-modules/libagent/default.nix b/pkgs/development/python-modules/libagent/default.nix
index 12c4ce39d7590..3422ae2ced2d7 100644
--- a/pkgs/development/python-modules/libagent/default.nix
+++ b/pkgs/development/python-modules/libagent/default.nix
@@ -1,35 +1,37 @@
-{ lib
-, fetchFromGitHub
-, bech32
-, buildPythonPackage
-, cryptography
-, ed25519
-, ecdsa
-, gnupg
-, semver
-, mnemonic
-, unidecode
-, mock
-, pytest
-, backports-shutil-which
-, configargparse
-, python-daemon
-, pymsgbox
-, pynacl
+{
+  lib,
+  fetchFromGitHub,
+  bech32,
+  buildPythonPackage,
+  setuptools,
+  cryptography,
+  ed25519,
+  ecdsa,
+  gnupg,
+  semver,
+  mnemonic,
+  unidecode,
+  mock,
+  pytestCheckHook,
+  backports-shutil-which,
+  configargparse,
+  python-daemon,
+  pymsgbox,
+  pynacl,
 }:
 
 # When changing this package, please test packages {keepkey,ledger,onlykey,trezor}-agent
 
 buildPythonPackage rec {
   pname = "libagent";
-  version = "0.14.8";
-  format = "setuptools";
+  version = "0.15.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "romanz";
     repo = "trezor-agent";
-    rev = "v${version}";
-    hash = "sha256-tcVott/GlHsICQf640Gm5jx89fZWsCdcYnBxi/Kh2oc=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-NmpFyLjLdR9r1tc06iDNH8Tc7isUelTg13mWPrQvxSc=";
   };
 
   # hardcode the path to gpgconf in the libagent library
@@ -39,7 +41,9 @@ buildPythonPackage rec {
       --replace "'gpg-connect-agent'" "'${gnupg}/bin/gpg-connect-agent'"
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     unidecode
     backports-shutil-which
     configargparse
@@ -54,11 +58,17 @@ buildPythonPackage rec {
     cryptography
   ];
 
-  nativeCheckInputs = [ mock pytest ];
+  pythonImportsCheck = [ "libagent" ];
 
-  checkPhase = ''
-    py.test libagent/tests
-  '';
+  nativeCheckInputs = [
+    mock
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # test fails in sandbox
+    "test_get_agent_sock_path"
+  ];
 
   meta = with lib; {
     description = "Using hardware wallets as SSH/GPG agent";
diff --git a/pkgs/development/python-modules/libais/default.nix b/pkgs/development/python-modules/libais/default.nix
index ba42d47d346d5..df31f4c53fecd 100644
--- a/pkgs/development/python-modules/libais/default.nix
+++ b/pkgs/development/python-modules/libais/default.nix
@@ -1,15 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "libais";
   version = "0.17";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -18,32 +20,23 @@ buildPythonPackage rec {
     hash = "sha256-6yrqIpjF6XaSfXSOTA0B4f3aLcHXkgA/3WBZBBNQ018=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "'pytest-runner'," ""
-  '';
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    six
-  ];
+  dependencies = [ six ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # data files missing
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ais"
-  ];
+  pythonImportsCheck = [ "ais" ];
 
   meta = with lib; {
     description = "Library for decoding maritime Automatic Identification System messages";
     homepage = "https://github.com/schwehr/libais";
     changelog = "https://github.com/schwehr/libais/blob/master/Changelog.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/libarchive-c/default.nix b/pkgs/development/python-modules/libarchive-c/default.nix
index da2f4525e3d63..5338d892df347 100644
--- a/pkgs/development/python-modules/libarchive-c/default.nix
+++ b/pkgs/development/python-modules/libarchive-c/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, libarchive
-, glibcLocales
-, mock
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  libarchive,
+  glibcLocales,
+  mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,16 +21,14 @@ buildPythonPackage rec {
     sha256 = "sha256-CO9llPIbVTuE74AeohrMAu5ICkuT/MorRlYEEFne6Uk=";
   };
 
-  LC_ALL="en_US.UTF-8";
+  LC_ALL = "en_US.UTF-8";
 
   postPatch = ''
     substituteInPlace libarchive/ffi.py --replace \
       "find_library('archive')" "'${libarchive.lib}/lib/libarchive${stdenv.hostPlatform.extensions.sharedLibrary}'"
   '';
 
-  pythonImportsCheck = [
-    "libarchive"
-  ];
+  pythonImportsCheck = [ "libarchive" ];
 
   nativeCheckInputs = [
     glibcLocales
@@ -42,5 +41,4 @@ buildPythonPackage rec {
     description = "Python interface to libarchive";
     license = licenses.cc0;
   };
-
 }
diff --git a/pkgs/development/python-modules/libarcus/default.nix b/pkgs/development/python-modules/libarcus/default.nix
index b95c2b295257a..316c604750abe 100644
--- a/pkgs/development/python-modules/libarcus/default.nix
+++ b/pkgs/development/python-modules/libarcus/default.nix
@@ -1,6 +1,13 @@
-{ lib, buildPythonPackage, python, fetchFromGitHub
-, fetchpatch
-, cmake, sip4, protobuf, pythonOlder }:
+{
+  lib,
+  buildPythonPackage,
+  python,
+  fetchFromGitHub,
+  fetchpatch,
+  cmake,
+  sip4,
+  protobuf,
+}:
 
 buildPythonPackage rec {
   pname = "libarcus";
@@ -23,8 +30,6 @@ buildPythonPackage rec {
     })
   ];
 
-  disabled = pythonOlder "3.4";
-
   propagatedBuildInputs = [ sip4 ];
   nativeBuildInputs = [ cmake ];
   buildInputs = [ protobuf ];
@@ -38,6 +43,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/Ultimaker/libArcus";
     license = licenses.lgpl3Plus;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ abbradar gebner ];
+    maintainers = with maintainers; [
+      abbradar
+      gebner
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/libasyncns/default.nix b/pkgs/development/python-modules/libasyncns/default.nix
index bd28c2207340c..b81e67f8f926f 100644
--- a/pkgs/development/python-modules/libasyncns/default.nix
+++ b/pkgs/development/python-modules/libasyncns/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchurl
-, libasyncns
-, pkg-config
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchurl,
+  libasyncns,
+  pkg-config,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +18,7 @@ buildPythonPackage rec {
 
   patches = [ ./libasyncns-fix-res-consts.patch ];
 
-  postPatch = lib.optionalString stdenv.isDarwin ''
+  postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
     substituteInPlace resquery.c \
       --replace '<arpa/nameser.h>' '<arpa/nameser_compat.h>'
   '';
diff --git a/pkgs/development/python-modules/libclang/default.nix b/pkgs/development/python-modules/libclang/default.nix
index 24d0e287ea030..b60c3992faf28 100644
--- a/pkgs/development/python-modules/libclang/default.nix
+++ b/pkgs/development/python-modules/libclang/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, llvmPackages
-, setuptools
-, writeText
+{
+  lib,
+  buildPythonPackage,
+  llvmPackages,
+  setuptools,
+  writeText,
 }:
 
 let
@@ -22,7 +23,8 @@ let
     [options]
     packages = clang
   '';
-in buildPythonPackage {
+in
+buildPythonPackage {
   pname = "libclang";
   format = "pyproject";
 
@@ -51,6 +53,6 @@ in buildPythonPackage {
 
   meta = libclang.meta // {
     description = "Python bindings for the C language family frontend for LLVM";
-    maintainers = with lib.maintainers; [ lilyinstarlight ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/libcloud/default.nix b/pkgs/development/python-modules/libcloud/default.nix
index b6bb639b3afc7..8fe46bd9572a7 100644
--- a/pkgs/development/python-modules/libcloud/default.nix
+++ b/pkgs/development/python-modules/libcloud/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pycrypto
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pycrypto,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -35,15 +36,13 @@ buildPythonPackage rec {
   # requires a certificates file
   doCheck = false;
 
-  pythonImportsCheck = [
-    "libcloud"
-  ];
+  pythonImportsCheck = [ "libcloud" ];
 
   meta = with lib; {
-    description = "A unified interface to many cloud providers";
+    description = "Unified interface to many cloud providers";
     homepage = "https://libcloud.apache.org/";
     changelog = "https://github.com/apache/libcloud/blob/v${version}/CHANGES.rst";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/libcst/default.nix b/pkgs/development/python-modules/libcst/default.nix
index d1fc8ec75e33c..3ccf4c8e12fbe 100644
--- a/pkgs/development/python-modules/libcst/default.nix
+++ b/pkgs/development/python-modules/libcst/default.nix
@@ -1,107 +1,104 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, cargo
-, hypothesis
-, libiconv
-, pytestCheckHook
-, python
-, pythonOlder
-, pyyaml
-, rustPlatform
-, rustc
-, setuptools-rust
-, setuptools-scm
-, typing-extensions
-, typing-inspect
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  callPackage,
+  cargo,
+  hypothesmith,
+  libcst,
+  libiconv,
+  pytestCheckHook,
+  python,
+  pythonOlder,
+  pyyaml,
+  rustPlatform,
+  rustc,
+  setuptools-rust,
+  setuptools-scm,
+  typing-extensions,
+  typing-inspect,
+  ufmt,
 }:
 
 buildPythonPackage rec {
   pname = "libcst";
-  version = "1.1.0";
-  format = "pyproject";
+  version = "1.4.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "instagram";
     repo = "libcst";
     rev = "refs/tags/v${version}";
-    hash = "sha256-kFs7edBWz0GRbgbLDmtpUVi5R+6mYXsJSvceOoPW9ck=";
+    hash = "sha256-H0YO8ILWOyhYdosNRWQQ9wziFk0syKSG3vF2zuYkL2k=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     sourceRoot = "${src.name}/${cargoRoot}";
     name = "${pname}-${version}";
-    hash = "sha256-fhaHiz64NH6S61fSXj4gNxxcuB+ECxWSSmG5StiFr1k=";
+    hash = "sha256-AcqHn3A7WCVyVnOBD96k4pxokhzgmCWOipK/DrIAQkU=";
   };
 
   cargoRoot = "native";
 
-  patches = [
-    # https://github.com/Instagram/LibCST/pull/1042
-    (fetchpatch {
-      name = "remove-distutils.patch";
-      url = "https://github.com/Instagram/LibCST/commit/a6834aa0e6eb78e41549fd1087d7ba60ca4dd237.patch";
-      hash = "sha256-lyIXJhm4UMwdCOso6McDslIvtK7Ar8sF5Zy7qo1nicQ=";
-    })
+  build-system = [
+    setuptools-rust
+    setuptools-scm
   ];
 
-  postPatch = ''
-    # avoid infinite recursion by not formatting the release files
-    substituteInPlace libcst/codegen/generate.py \
-      --replace '"ufmt"' '"true"'
-  '';
-
   nativeBuildInputs = [
-    setuptools-rust
-    setuptools-scm
     rustPlatform.cargoSetupHook
     cargo
     rustc
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     typing-extensions
     typing-inspect
     pyyaml
   ];
 
   nativeCheckInputs = [
-    hypothesis
+    hypothesmith
     pytestCheckHook
+    ufmt
   ];
 
   preCheck = ''
-    # otherwise import libcst.native fails
-    cp build/lib.*/libcst/native.* libcst/
-
-    ${python.interpreter} -m libcst.codegen.generate visitors
-    ${python.interpreter} -m libcst.codegen.generate return_types
-
-    # Can't run all tests due to circular dependency on hypothesmith -> libcst
-    rm -r {libcst/tests,libcst/codegen/tests,libcst/m*/tests}
+    # import from $out instead
+    rm libcst/__init__.py
   '';
 
   disabledTests = [
-    # No files are generated
-    "test_codemod_formatter_error_input"
+    # FIXME package pyre-test
+    "TypeInferenceProviderTest"
+    # we'd need to run `python -m libcst.codegen.generate all` but shouldn't modify $out
+    "test_codegen_clean_visitor_functions"
   ];
 
-  pythonImportsCheck = [
-    "libcst"
-  ];
+  # circular dependency on hypothesmith and ufmt
+  doCheck = false;
+
+  passthru.tests = {
+    pytest = libcst.overridePythonAttrs { doCheck = true; };
+  };
+
+  pythonImportsCheck = [ "libcst" ];
 
-  meta = with lib; {
+  meta = {
     description = "Concrete Syntax Tree (CST) parser and serializer library for Python";
     homepage = "https://github.com/Instagram/libcst";
     changelog = "https://github.com/Instagram/LibCST/blob/v${version}/CHANGELOG.md";
-    license = with licenses; [ mit asl20 psfl ];
-    maintainers = with maintainers; [ ];
+    license = with lib.licenses; [
+      mit
+      asl20
+      psfl
+    ];
+    maintainers = with lib.maintainers; [ dotlambda ];
   };
 }
diff --git a/pkgs/development/python-modules/libevdev/default.nix b/pkgs/development/python-modules/libevdev/default.nix
index 44213cdd14cf3..e7be644cdd5ae 100644
--- a/pkgs/development/python-modules/libevdev/default.nix
+++ b/pkgs/development/python-modules/libevdev/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, isPy27
-, fetchPypi
-, substituteAll
-, pkgs
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  isPy27,
+  fetchPypi,
+  substituteAll,
+  pkgs,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/libgpiod/default.nix b/pkgs/development/python-modules/libgpiod/default.nix
index 56f225d283baf..8ea7089985bd3 100644
--- a/pkgs/development/python-modules/libgpiod/default.nix
+++ b/pkgs/development/python-modules/libgpiod/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, libgpiod
+{
+  lib,
+  buildPythonPackage,
+  libgpiod,
 }:
 buildPythonPackage {
   inherit (libgpiod) pname version src;
diff --git a/pkgs/development/python-modules/libgpuarray/default.nix b/pkgs/development/python-modules/libgpuarray/default.nix
deleted file mode 100644
index d186233ccdc48..0000000000000
--- a/pkgs/development/python-modules/libgpuarray/default.nix
+++ /dev/null
@@ -1,88 +0,0 @@
-{ stdenv
-, lib
-, addOpenGLRunpath
-, buildPythonPackage
-, fetchFromGitHub
-, cmake
-, cython_0
-, numpy
-, six
-, nose
-, mako
-, config
-, cudaSupport ? config.cudaSupport
-, cudaPackages ? { }
-, openclSupport ? true, ocl-icd, clblas
-}:
-
-buildPythonPackage rec {
-  pname = "libgpuarray";
-  version = "0.7.6";
-  format = "setuptools";
-
-  src = fetchFromGitHub {
-    owner = "Theano";
-    repo = "libgpuarray";
-    rev = "v${version}";
-    sha256 = "0ksil18c9ign4xrv5k323flhvdy6wdxh8szdd3nivv31jc3zsdri";
-  };
-
-  # requires a GPU
-  doCheck = false;
-
-  configurePhase = "cmakeConfigurePhase";
-
-  libraryPath = lib.makeLibraryPath (
-    lib.optionals cudaSupport (with cudaPackages; [ cudatoolkit.lib cudatoolkit.out ])
-    ++ lib.optionals openclSupport ([ clblas ] ++ lib.optional (!stdenv.isDarwin) ocl-icd)
-  );
-
-  preBuild = ''
-    make -j$NIX_BUILD_CORES
-    make install
-
-    export NIX_CFLAGS_COMPILE="-L $out/lib -I $out/include $NIX_CFLAGS_COMPILE"
-
-    cd ..
-  '';
-
-  postFixup = ''
-    rm $out/lib/libgpuarray-static.a
-  '' + lib.optionalString (!stdenv.isDarwin) ''
-    function fixRunPath {
-      p=$(patchelf --print-rpath $1)
-      patchelf --set-rpath "$p:$libraryPath" $1
-    }
-
-    fixRunPath $out/lib/libgpuarray.so
-  '' + lib.optionalString cudaSupport ''
-    addOpenGLRunpath $out/lib/libgpuarray.so
-  '';
-
-  propagatedBuildInputs = [
-    numpy
-    six
-    mako
-  ];
-
-  nativeBuildInputs = [
-    cmake
-    cython_0
-  ] ++ lib.optionals cudaSupport [
-    addOpenGLRunpath
-  ];
-
-
-  buildInputs = [
-    nose
-  ];
-
-  meta = with lib; {
-    homepage = "https://github.com/Theano/libgpuarray";
-    description = "Library to manipulate tensors on GPU.";
-    license = licenses.free;
-    maintainers = with maintainers; [ artuuge ];
-    platforms = platforms.unix;
-  };
-
-}
diff --git a/pkgs/development/python-modules/libgravatar/default.nix b/pkgs/development/python-modules/libgravatar/default.nix
new file mode 100644
index 0000000000000..57b799854854d
--- /dev/null
+++ b/pkgs/development/python-modules/libgravatar/default.nix
@@ -0,0 +1,37 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "libgravatar";
+  version = "1.0.4";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "pabluk";
+    repo = "libgravatar";
+    rev = "refs/tags/${version}";
+    hash = "sha256-rJv/jfdT+JldxR0kKtXQLOI5wXQYSQRWJnqwExwWjTA=";
+  };
+
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "libgravatar" ];
+
+  meta = with lib; {
+    description = "Library that provides a Python 3 interface for the Gravatar API";
+    homepage = "https://github.com/pabluk/libgravatar";
+    changelog = "https://github.com/pabluk/libgravatar/releases/tag/${version}";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ gador ];
+  };
+}
diff --git a/pkgs/development/python-modules/libkeepass/default.nix b/pkgs/development/python-modules/libkeepass/default.nix
index 14bbdb1ec0092..4b6faad610ecd 100644
--- a/pkgs/development/python-modules/libkeepass/default.nix
+++ b/pkgs/development/python-modules/libkeepass/default.nix
@@ -1,5 +1,11 @@
-{ lib, fetchPypi, buildPythonPackage
-, lxml, pycryptodome, colorama }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  lxml,
+  pycryptodome,
+  colorama,
+}:
 
 buildPythonPackage rec {
   pname = "libkeepass";
@@ -11,14 +17,18 @@ buildPythonPackage rec {
     sha256 = "0pwg7n9xqcjia1qmz6g48h5s31slh3mxmcqag73gq4zhl4xb6bai";
   };
 
-  propagatedBuildInputs = [ lxml pycryptodome colorama ];
+  propagatedBuildInputs = [
+    lxml
+    pycryptodome
+    colorama
+  ];
 
   # No tests on PyPI
   doCheck = false;
 
   meta = with lib; {
     homepage = "https://github.com/libkeepass/libkeepass";
-    description = "A library to access KeePass 1.x/KeePassX (v3) and KeePass 2.x (v4) files";
+    description = "Library to access KeePass 1.x/KeePassX (v3) and KeePass 2.x (v4) files";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ jqueiroz ];
   };
diff --git a/pkgs/development/python-modules/libknot/default.nix b/pkgs/development/python-modules/libknot/default.nix
index 96f900f2dd355..7d0ce1a2ed28b 100644
--- a/pkgs/development/python-modules/libknot/default.nix
+++ b/pkgs/development/python-modules/libknot/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build-system
-, hatchling
+  # build-system
+  hatchling,
 
-# native dependencies
-, knot-dns
+  # native dependencies
+  knot-dns,
 }:
 
 buildPythonPackage rec {
   pname = "libknot";
-  version = "3.3.5";
+  version = "3.4.0";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-nEeDawZ/kChHQA3qoEKy+R+Uy7ogNL3ows3Yzs5OhpY=";
+    hash = "sha256-BtESc9BIZeDNNPJYyMLTeMsNHm+xBcLueyJ7/1iXFos=";
   };
 
   postPatch = ''
@@ -25,19 +26,14 @@ buildPythonPackage rec {
       --replace "libknot.so%s" "${lib.getLib knot-dns}/lib/libknot.so%s"
   '';
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  pythonImportsCheck = [
-    "libknot"
-  ];
+  pythonImportsCheck = [ "libknot" ];
 
   meta = with lib; {
     description = "Python bindings for libknot";
     homepage = "https://gitlab.nic.cz/knot/knot-dns/-/tree/master/python/libknot";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ hexa ];
-    mainProgram = "libknot";
   };
 }
diff --git a/pkgs/development/python-modules/liblarch/default.nix b/pkgs/development/python-modules/liblarch/default.nix
index a133b5382441b..4dae337ca1f22 100644
--- a/pkgs/development/python-modules/liblarch/default.nix
+++ b/pkgs/development/python-modules/liblarch/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, python
-, pygobject3
-, xvfb-run
-, gobject-introspection
-, gtk3
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pygobject3,
+  xvfb-run,
+  gobject-introspection,
+  gtk3,
+  pythonOlder,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -25,23 +26,21 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     gobject-introspection # for setup hook
     gtk3
+    pytest
   ];
 
   buildInputs = [ gtk3 ];
 
-  propagatedBuildInputs = [
-    pygobject3
-  ];
+  propagatedBuildInputs = [ pygobject3 ];
 
   checkPhase = ''
     runHook preCheck
-    ${xvfb-run}/bin/xvfb-run -s '-screen 0 800x600x24' \
-      ${python.interpreter} nix_run_setup test
+    ${xvfb-run}/bin/xvfb-run -s '-screen 0 800x600x24' pytest
     runHook postCheck
   '';
 
   meta = with lib; {
-    description = "A python library built to easily handle data structure such are lists, trees and acyclic graphs";
+    description = "Python library built to easily handle data structure such are lists, trees and acyclic graphs";
     homepage = "https://github.com/getting-things-gnome/liblarch";
     downloadPage = "https://github.com/getting-things-gnome/liblarch/releases";
     license = licenses.lgpl3Plus;
diff --git a/pkgs/development/python-modules/liblzfse/default.nix b/pkgs/development/python-modules/liblzfse/default.nix
index 687d1df765b42..f88a096459eeb 100644
--- a/pkgs/development/python-modules/liblzfse/default.nix
+++ b/pkgs/development/python-modules/liblzfse/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, lzfse
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  lzfse,
 }:
 buildPythonPackage rec {
   pname = "pyliblzfse";
@@ -20,9 +21,7 @@ buildPythonPackage rec {
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "liblzfse"
-  ];
+  pythonImportsCheck = [ "liblzfse" ];
 
   meta = with lib; {
     description = "Python bindings for LZFSE";
diff --git a/pkgs/development/python-modules/libmambapy/default.nix b/pkgs/development/python-modules/libmambapy/default.nix
index 0466bebfe3099..980109e499b66 100644
--- a/pkgs/development/python-modules/libmambapy/default.nix
+++ b/pkgs/development/python-modules/libmambapy/default.nix
@@ -22,14 +22,14 @@
 }:
 buildPythonPackage rec {
   pname = "libmambapy";
-  version = "1.5.7";
+  version = "2024.09.20";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "mamba-org";
     repo = "mamba";
-    rev = "${pname}-${version}";
-    hash = "sha256-HfmvLi9IBWlaGAn2Ej4Bnm4b3l19jEXwNl5IUkdVxi0=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-/mfZEfpB4CQ2f8zyzYbnjvBgK4VEPngTNQJT4Oh62Qs=";
   };
 
   nativeBuildInputs = [
@@ -77,7 +77,6 @@ buildPythonPackage rec {
     pypaBuildPhase
   '';
 
-  pythonRemoveDeps = [ "scikit-build" ];
 
   pythonImportsCheck = [
     "libmambapy"
@@ -85,7 +84,7 @@ buildPythonPackage rec {
   ];
 
   meta = {
-    description = "The python library for the fast Cross-Platform Package Manager";
+    description = "Python library for the fast Cross-Platform Package Manager";
     homepage = "https://github.com/mamba-org/mamba";
     license = lib.licenses.bsd3;
     maintainers = [ lib.maintainers.ericthemagician ];
diff --git a/pkgs/development/python-modules/libmr/default.nix b/pkgs/development/python-modules/libmr/default.nix
index c852ce160cd3e..5771a2d25b3f2 100644
--- a/pkgs/development/python-modules/libmr/default.nix
+++ b/pkgs/development/python-modules/libmr/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, numpy, cython }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  cython,
+}:
 
 buildPythonPackage rec {
   pname = "libmr";
@@ -11,7 +17,10 @@ buildPythonPackage rec {
     sha256 = "43ccd86693b725fa3abe648c8cdcef17ba5fa46b5528168829e5f9b968dfeb70";
   };
 
-  propagatedBuildInputs = [ numpy cython ];
+  propagatedBuildInputs = [
+    numpy
+    cython
+  ];
 
   # No tests in the pypi tarball
   doCheck = false;
@@ -23,4 +32,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ psyanticy ];
   };
 }
-
diff --git a/pkgs/development/python-modules/libnacl/default.nix b/pkgs/development/python-modules/libnacl/default.nix
index ec6d1e4425646..265bfeab5443f 100644
--- a/pkgs/development/python-modules/libnacl/default.nix
+++ b/pkgs/development/python-modules/libnacl/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, libsodium
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  libsodium,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -24,7 +25,9 @@ buildPythonPackage rec {
   buildInputs = [ libsodium ];
 
   postPatch =
-    let soext = stdenv.hostPlatform.extensions.sharedLibrary; in
+    let
+      soext = stdenv.hostPlatform.extensions.sharedLibrary;
+    in
     ''
       substituteInPlace "./libnacl/__init__.py" \
         --replace \
diff --git a/pkgs/development/python-modules/libpcap/default.nix b/pkgs/development/python-modules/libpcap/default.nix
index 54a1306594554..096aaa5c19404 100644
--- a/pkgs/development/python-modules/libpcap/default.nix
+++ b/pkgs/development/python-modules/libpcap/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, dbus
-, pkgsLibpcap
-, pkg-about
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  dbus,
+  pkgsLibpcap,
+  pkg-about,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-6XhEVOO2Z2rFZiMz4d32tTR+xUu1KdMdDjChmt2wsQo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # tox is listed in build requirements but not actually used to build
   # keeping it as a requirement breaks the build unnecessarily
@@ -49,13 +48,9 @@ buildPythonPackage rec {
   postCheck = ''
     popd
   '';
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "libpcap"
-  ];
+  pythonImportsCheck = [ "libpcap" ];
 
   meta = with lib; {
     description = "Python binding for the libpcap C library";
diff --git a/pkgs/development/python-modules/libpurecool/default.nix b/pkgs/development/python-modules/libpurecool/default.nix
index 3e29ea73e2c9d..5564bb1d22a7f 100644
--- a/pkgs/development/python-modules/libpurecool/default.nix
+++ b/pkgs/development/python-modules/libpurecool/default.nix
@@ -1,18 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, netifaces
-, paho-mqtt
-, pycryptodome
-, requests
-, six
-, zeroconf
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  netifaces,
+  paho-mqtt,
+  pycryptodome,
+  requests,
+  six,
+  zeroconf,
 }:
 
 buildPythonPackage rec {
   pname = "libpurecool";
   version = "0.6.4";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
@@ -23,10 +25,12 @@ buildPythonPackage rec {
   postPatch = ''
     rm libpurecool/zeroconf.py
     substituteInPlace libpurecool/dyson_pure_cool_link.py \
-      --replace "from .zeroconf import ServiceBrowser, Zeroconf" "from zeroconf import ServiceBrowser, Zeroconf"
+      --replace-fail "from .zeroconf import ServiceBrowser, Zeroconf" "from zeroconf import ServiceBrowser, Zeroconf"
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     netifaces
     paho-mqtt
     pycryptodome
diff --git a/pkgs/development/python-modules/libpyfoscam/default.nix b/pkgs/development/python-modules/libpyfoscam/default.nix
index 472c53f72ca9f..5606437ffed26 100644
--- a/pkgs/development/python-modules/libpyfoscam/default.nix
+++ b/pkgs/development/python-modules/libpyfoscam/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
   # tests need access to a camera
   doCheck = false;
 
-  pythonImportsCheck = [
-    "libpyfoscam"
-  ];
+  pythonImportsCheck = [ "libpyfoscam" ];
 
   meta = with lib; {
     description = "Python Library for Foscam IP Cameras";
diff --git a/pkgs/development/python-modules/libpysal/default.nix b/pkgs/development/python-modules/libpysal/default.nix
new file mode 100644
index 0000000000000..c81bab3c15127
--- /dev/null
+++ b/pkgs/development/python-modules/libpysal/default.nix
@@ -0,0 +1,87 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+
+  beautifulsoup4,
+  fiona,
+  geodatasets,
+  geopandas,
+  numpy,
+  packaging,
+  pandas,
+  platformdirs,
+  requests,
+  scikit-learn,
+  scipy,
+  setuptools-scm,
+  shapely,
+}:
+
+buildPythonPackage rec {
+  pname = "libpysal";
+  version = "4.12.1";
+  pyproject = true;
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "pysal";
+    repo = "libpysal";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-snhCEKeGKKj/bTDYi6ZVv5F4b/2rz/JHIFG2IoINQ+Q=";
+  };
+
+  build-system = [ setuptools-scm ];
+
+  propagatedBuildInputs = [
+    beautifulsoup4
+    fiona
+    geopandas
+    numpy
+    packaging
+    pandas
+    platformdirs
+    requests
+    scikit-learn
+    scipy
+    shapely
+  ];
+
+  nativeCheckInputs = [
+    geodatasets
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    export HOME=$TMPDIR
+  '';
+
+  # requires network access
+  disabledTestPaths = [
+    "libpysal/graph/tests/test_summary.py"
+    "libpysal/cg/tests/test_geoJSON.py"
+    "libpysal/examples/tests/test_available.py"
+    "libpysal/graph/tests/test_base.py"
+    "libpysal/graph/tests/test_builders.py"
+    "libpysal/graph/tests/test_contiguity.py"
+    "libpysal/graph/tests/test_kernel.py"
+    "libpysal/graph/tests/test_matching.py"
+    "libpysal/graph/tests/test_plotting.py"
+    "libpysal/graph/tests/test_triangulation.py"
+    "libpysal/graph/tests/test_utils.py"
+    "libpysal/graph/tests/test_set_ops.py"
+    "libpysal/weights/tests/test_contiguity.py"
+    "libpysal/weights/tests/test_util.py"
+  ];
+
+  pythonImportsCheck = [ "libpysal" ];
+
+  meta = {
+    description = "Library of spatial analysis functions";
+    homepage = "https://pysal.org/libpysal/";
+    license = lib.licenses.bsd3;
+    maintainers = lib.teams.geospatial.members;
+  };
+}
diff --git a/pkgs/development/python-modules/libpyvivotek/default.nix b/pkgs/development/python-modules/libpyvivotek/default.nix
index 9a4cda0ae684c..7320880a15390 100644
--- a/pkgs/development/python-modules/libpyvivotek/default.nix
+++ b/pkgs/development/python-modules/libpyvivotek/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, vcrpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  vcrpy,
 }:
 
 buildPythonPackage rec {
@@ -21,18 +22,14 @@ buildPythonPackage rec {
     sha256 = "pNlnGpDjdYE7Lxog8GGZV+UZZmfmt5bwHof5LngPQjg=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     pytestCheckHook
     vcrpy
   ];
 
-  pythonImportsCheck = [
-    "libpyvivotek"
-  ];
+  pythonImportsCheck = [ "libpyvivotek" ];
 
   meta = with lib; {
     description = "Python Library for Vivotek IP Cameras";
diff --git a/pkgs/development/python-modules/librespot/default.nix b/pkgs/development/python-modules/librespot/default.nix
index 97277f68a981e..628f2ab1922f6 100644
--- a/pkgs/development/python-modules/librespot/default.nix
+++ b/pkgs/development/python-modules/librespot/default.nix
@@ -1,15 +1,14 @@
-{ lib
-, buildPythonPackage
-, defusedxml
-, fetchFromGitHub
-, protobuf
-, pycryptodomex
-, pyogg
-, pytestCheckHook
-, pythonRelaxDepsHook
-, requests
-, websocket-client
-, zeroconf
+{
+  lib,
+  buildPythonPackage,
+  defusedxml,
+  fetchFromGitHub,
+  protobuf,
+  pycryptodomex,
+  pyogg,
+  requests,
+  websocket-client,
+  zeroconf,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +25,6 @@ buildPythonPackage rec {
 
   pythonRelaxDeps = true;
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   propagatedBuildInputs = [
     defusedxml
@@ -43,9 +39,7 @@ buildPythonPackage rec {
   # Doesn't include any tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "librespot"
-  ];
+  pythonImportsCheck = [ "librespot" ];
 
   meta = with lib; {
     description = "Open Source Spotify Client";
diff --git a/pkgs/development/python-modules/libretranslate/default.nix b/pkgs/development/python-modules/libretranslate/default.nix
index 042fd5d404d1c..39a2b99ddf0dd 100644
--- a/pkgs/development/python-modules/libretranslate/default.nix
+++ b/pkgs/development/python-modules/libretranslate/default.nix
@@ -1,48 +1,47 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonRelaxDepsHook
-, pytestCheckHook
-, hatchling
-, argostranslate
-, flask
-, flask-swagger
-, flask-swagger-ui
-, flask-limiter
-, flask-babel
-, flask-session
-, waitress
-, expiringdict
-, langdetect
-, lexilang
-, ltpycld2
-, morfessor
-, appdirs
-, apscheduler
-, translatehtml
-, argos-translate-files
-, requests
-, redis
-, prometheus-client
-, polib
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  hatchling,
+  argostranslate,
+  flask,
+  flask-swagger,
+  flask-swagger-ui,
+  flask-limiter,
+  flask-babel,
+  flask-session,
+  waitress,
+  expiringdict,
+  langdetect,
+  lexilang,
+  ltpycld2,
+  morfessor,
+  appdirs,
+  apscheduler,
+  translatehtml,
+  argos-translate-files,
+  requests,
+  redis,
+  prometheus-client,
+  polib,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "libretranslate";
-  version = "1.5.6";
+  version = "1.6.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "LibreTranslate";
     repo = "LibreTranslate";
     rev = "refs/tags/v${version}";
-    hash = "sha256-43VnxgtapMRKyXxqsvBgSMUxvpbLI+iOfW3FA0/POpE=";
+    hash = "sha256-c/MbO8KST2QnP32Y2FfXjJcfh6O7hqQFcZOn1U0FqRM=";
   };
 
   build-system = [
     hatchling
-    pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = true;
@@ -79,9 +78,7 @@ buildPythonPackage rec {
 
   doCheck = false; # needs network access
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # required for import check to work (argostranslate)
   env.HOME = "/tmp";
diff --git a/pkgs/development/python-modules/librosa/default.nix b/pkgs/development/python-modules/librosa/default.nix
index 62d712aa7b1f3..fa0c17487d337 100644
--- a/pkgs/development/python-modules/librosa/default.nix
+++ b/pkgs/development/python-modules/librosa/default.nix
@@ -1,40 +1,41 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-
-# build-system
-, setuptools
-
-# runtime
-, audioread
-, decorator
-, joblib
-, lazy-loader
-, matplotlib
-, msgpack
-, numba
-, numpy
-, pooch
-, scikit-learn
-, scipy
-, soundfile
-, soxr
-, typing-extensions
-
-# tests
-, ffmpeg-headless
-, packaging
-, pytest-mpl
-, pytestCheckHook
-, resampy
-, samplerate
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+
+  # build-system
+  setuptools,
+
+  # runtime
+  audioread,
+  decorator,
+  joblib,
+  lazy-loader,
+  matplotlib,
+  msgpack,
+  numba,
+  numpy,
+  pooch,
+  scikit-learn,
+  scipy,
+  soundfile,
+  soxr,
+  typing-extensions,
+
+  # tests
+  ffmpeg-headless,
+  packaging,
+  pytest-mpl,
+  pytestCheckHook,
+  resampy,
+  samplerate,
 }:
 
 buildPythonPackage rec {
   pname = "librosa";
-  version = "0.10.1";
+  version = "0.10.2.post1";
   format = "pyproject";
 
   src = fetchFromGitHub {
@@ -42,26 +43,23 @@ buildPythonPackage rec {
     repo = "librosa";
     rev = "refs/tags/${version}";
     fetchSubmodules = true; # for test data
-    hash = "sha256-zbmU87hI9A1CVcBZ/5FU8z0t6SS4jfJk9bj9kLe/EHI=";
+    hash = "sha256-0FbKVAFWmcFTW2dR27nif6hPZeIxFWYF1gTm4BEJZ/Q=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   patches = [
-    (fetchpatch {
-      # https://github.com/librosa/librosa/issues/1754
-      # https://github.com/librosa/librosa/pull/1755
-      name = "matplotlib-3.8-compat.patch";
-      url = "https://github.com/librosa/librosa/commit/beef47885ce1255b43b65e48ea2054ddace37c6c.patch";
-      hash = "sha256-rrnlUHXHY2me4BWGs3wFq8WJmz75CbXTWKFp3VdJKzE=";
+    (fetchpatch2 {
+      # https://github.com/librosa/librosa/issues/1849
+      name = "librosa-scipy-1.14-compat.patch";
+      url = "https://github.com/librosa/librosa/commit/d0a12c87cdff715ffb8ac1c7383bba1031aa71e4.patch";
+      hash = "sha256-NHuGo4U1FRikb5OIkycQBvuZ+0OdG/VykTcuhXkLUug=";
     })
   ];
 
   postPatch = ''
     substituteInPlace setup.cfg \
-      --replace "--cov-report term-missing --cov librosa --cov-report=xml " ""
+      --replace-fail "--cov-report term-missing --cov librosa --cov-report=xml " ""
   '';
 
   propagatedBuildInputs = [
@@ -80,14 +78,10 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  passthru.optional-dependencies.matplotlib = [
-    matplotlib
-  ];
+  passthru.optional-dependencies.matplotlib = [ matplotlib ];
 
   # check that import works, this allows to capture errors like https://github.com/librosa/librosa/issues/1160
-  pythonImportsCheck = [
-    "librosa"
-  ];
+  pythonImportsCheck = [ "librosa" ];
 
   nativeCheckInputs = [
     ffmpeg-headless
@@ -102,17 +96,28 @@ buildPythonPackage rec {
     export HOME=$TMPDIR
   '';
 
-  disabledTests = [
-    # requires network access
-    "test_example"
-    "test_example_info"
-    "test_load_resample"
-    # does not converge
-    "test_nnls_vector"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # https://github.com/librosa/librosa/pull/1808
-    "test_pyin_multi_center"
-  ];
+  disabledTests =
+    [
+      # requires network access
+      "test_example"
+      "test_example_info"
+      "test_load_resample"
+      "test_cite_released"
+      "test_cite_badversion"
+      "test_cite_unreleased"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # crashing the python interpreter
+      "test_unknown_time_unit"
+      "test_unknown_wavaxis"
+      "test_waveshow_unknown_wavaxis"
+      "test_waveshow_bad_maxpoints"
+      "test_waveshow_deladaptor"
+      "test_waveshow_disconnect"
+      "test_unknown_axis"
+      "test_axis_bound_warning"
+      "test_auto_aspect"
+    ];
 
   meta = with lib; {
     description = "Python library for audio and music analysis";
@@ -121,5 +126,4 @@ buildPythonPackage rec {
     license = licenses.isc;
     maintainers = with maintainers; [ GuillaumeDesforges ];
   };
-
 }
diff --git a/pkgs/development/python-modules/librouteros/default.nix b/pkgs/development/python-modules/librouteros/default.nix
index 5ba5f86aab10b..8db1f4a3356e3 100644
--- a/pkgs/development/python-modules/librouteros/default.nix
+++ b/pkgs/development/python-modules/librouteros/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-xdist
-, pytest7CheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-xdist,
+  pytest7CheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-VwpZ1RY6Sul7xvWY7ZoOxZ7KgbRmKRwcVdF9e2b3f6Q=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pytest-xdist
@@ -42,9 +41,7 @@ buildPythonPackage rec {
     "test_rawCmd_calls_writeSentence"
   ];
 
-  pythonImportsCheck = [
-    "librouteros"
-  ];
+  pythonImportsCheck = [ "librouteros" ];
 
   meta = with lib; {
     description = "Python implementation of the MikroTik RouterOS API";
diff --git a/pkgs/development/python-modules/libsass/default.nix b/pkgs/development/python-modules/libsass/default.nix
index 85f4b24533e61..acb94983dcf6c 100644
--- a/pkgs/development/python-modules/libsass/default.nix
+++ b/pkgs/development/python-modules/libsass/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, libsass
-, six
-, pytestCheckHook
-, werkzeug
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  libsass,
+  six,
+  pytestCheckHook,
+  werkzeug,
 }:
 
 buildPythonPackage rec {
@@ -36,11 +37,11 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "sass" ];
 
-  meta = with lib; {
+  meta = {
     description = "Python binding for libsass to compile Sass/SCSS";
     mainProgram = "pysassc";
     homepage = "https://sass.github.io/libsass-python/";
-    license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sigmanificient ];
   };
 }
diff --git a/pkgs/development/python-modules/libsavitar/default.nix b/pkgs/development/python-modules/libsavitar/default.nix
index 56ce67110b908..5bb60e58ac866 100644
--- a/pkgs/development/python-modules/libsavitar/default.nix
+++ b/pkgs/development/python-modules/libsavitar/default.nix
@@ -1,4 +1,12 @@
-{ lib, buildPythonPackage, python, pythonOlder, fetchFromGitHub, cmake, sip4 }:
+{
+  lib,
+  buildPythonPackage,
+  python,
+  pythonOlder,
+  fetchFromGitHub,
+  cmake,
+  sip4,
+}:
 
 buildPythonPackage rec {
   pname = "libsavitar";
@@ -27,6 +35,10 @@ buildPythonPackage rec {
     homepage = "https://github.com/Ultimaker/libSavitar";
     license = licenses.lgpl3Plus;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ abbradar orivej gebner ];
+    maintainers = with maintainers; [
+      abbradar
+      orivej
+      gebner
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/libsixel/default.nix b/pkgs/development/python-modules/libsixel/default.nix
index 37bf32f31fd61..9046cc3f81306 100644
--- a/pkgs/development/python-modules/libsixel/default.nix
+++ b/pkgs/development/python-modules/libsixel/default.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
-, lib
-, stdenv
-, libsixel
+{
+  buildPythonPackage,
+  lib,
+  stdenv,
+  libsixel,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/libsoundtouch/default.nix b/pkgs/development/python-modules/libsoundtouch/default.nix
index 0ca972c8bade8..77c0d00d0fed6 100644
--- a/pkgs/development/python-modules/libsoundtouch/default.nix
+++ b/pkgs/development/python-modules/libsoundtouch/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, enum-compat
-, requests
-, websocket-client
-, zeroconf
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  enum-compat,
+  requests,
+  websocket-client,
+  zeroconf,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
-  pname   = "libsoundtouch";
+  pname = "libsoundtouch";
   version = "0.8.0";
   format = "setuptools";
 
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     zeroconf
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # mock data order mismatch
@@ -39,7 +38,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Bose Soundtouch Python library";
-    homepage    = "https://github.com/CharlesBlonde/libsoundtouch";
-    license     = licenses.asl20;
+    homepage = "https://github.com/CharlesBlonde/libsoundtouch";
+    license = licenses.asl20;
   };
 }
diff --git a/pkgs/development/python-modules/libthumbor/default.nix b/pkgs/development/python-modules/libthumbor/default.nix
index 0fdb4c4fab949..f53bf2e56550c 100644
--- a/pkgs/development/python-modules/libthumbor/default.nix
+++ b/pkgs/development/python-modules/libthumbor/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, django
-, six
-, pycrypto
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  django,
+  six,
+  pycrypto,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-1PsiFZrTDVQqy8A3nkaM5LdPiBoriRgHkklTOiczN+g=";
   };
 
-  buildInputs = [
-    django
-  ];
+  buildInputs = [ django ];
 
   propagatedBuildInputs = [
     six
@@ -30,14 +29,12 @@ buildPythonPackage rec {
 
   doCheck = false;
 
-  pythonImportsCheck = [
-    "libthumbor"
-  ];
+  pythonImportsCheck = [ "libthumbor" ];
 
   meta = with lib; {
     description = "Python extension to thumbor";
     homepage = "https://github.com/heynemann/libthumbor";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/libtmux/default.nix b/pkgs/development/python-modules/libtmux/default.nix
index 1d26117e5ba11..917b20ef077f7 100644
--- a/pkgs/development/python-modules/libtmux/default.nix
+++ b/pkgs/development/python-modules/libtmux/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, buildPythonPackage
-, poetry-core
-, pytest-rerunfailures
-, pytestCheckHook
-, procps
-, tmux
-, ncurses
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ncurses,
+  poetry-core,
+  procps,
+  pytest-rerunfailures,
+  pytestCheckHook,
+  tmux,
 }:
 
 buildPythonPackage rec {
   pname = "libtmux";
-  version = "0.36.0";
+  version = "0.37.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "tmux-python";
-    repo = pname;
+    repo = "libtmux";
     rev = "refs/tags/v${version}";
-    hash = "sha256-oJ2IGaPFMKA/amUEPZi1UO9vZtjPNQg3SIFjQWzUeSE=";
+    hash = "sha256-I0E6zkfQ6mx2svCaXEgKPhrrog3iLgXZ4E3CMMxPkIA=";
   };
 
   postPatch = ''
-    sed -i '/addopts/d' pyproject.toml
+    substituteInPlace pyproject.toml \
+      --replace-fail '"--doctest-docutils-modules",' ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   nativeCheckInputs = [
     procps
@@ -40,24 +40,23 @@ buildPythonPackage rec {
 
   pytestFlagsArray = [ "tests" ];
 
-  disabledTests = [
-    # Fail with: 'no server running on /tmp/tmux-1000/libtmux_test8sorutj1'.
-    "test_new_session_width_height"
-    # Assertion error
-    "test_capture_pane_start"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # tests/test_pane.py:113: AssertionError
-    "test_capture_pane_start"
-  ];
+  disabledTests =
+    [
+      # Fail with: 'no server running on /tmp/tmux-1000/libtmux_test8sorutj1'.
+      "test_new_session_width_height"
+      # Assertion error
+      "test_capture_pane_start"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # tests/test_pane.py:113: AssertionError
+      "test_capture_pane_start"
+    ];
 
-  disabledTestPaths = lib.optionals stdenv.isDarwin [
+  disabledTestPaths = lib.optionals stdenv.hostPlatform.isDarwin [
     "tests/test_test.py"
-    "tests/legacy_api/test_test.py"
   ];
 
-  pythonImportsCheck = [
-    "libtmux"
-  ];
+  pythonImportsCheck = [ "libtmux" ];
 
   meta = with lib; {
     description = "Typed scripting library / ORM / API wrapper for tmux";
diff --git a/pkgs/development/python-modules/libusb1/default.nix b/pkgs/development/python-modules/libusb1/default.nix
index b61b78a86321a..0304dd09677e1 100644
--- a/pkgs/development/python-modules/libusb1/default.nix
+++ b/pkgs/development/python-modules/libusb1/default.nix
@@ -1,4 +1,11 @@
-{ lib, stdenv, buildPythonPackage, fetchPypi, libusb1, pytestCheckHook }:
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  libusb1,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "libusb1";
@@ -20,14 +27,15 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "usb1/testUSB1.py"
-  ];
+  pytestFlagsArray = [ "usb1/testUSB1.py" ];
 
   meta = with lib; {
-    homepage    = "https://github.com/vpelletier/python-libusb1";
+    homepage = "https://github.com/vpelletier/python-libusb1";
     description = "Python ctype-based wrapper around libusb1";
-    license     = licenses.lgpl2Plus;
-    maintainers = with maintainers; [ prusnak rnhmjoj ];
+    license = licenses.lgpl2Plus;
+    maintainers = with maintainers; [
+      prusnak
+      rnhmjoj
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/libusbsio/default.nix b/pkgs/development/python-modules/libusbsio/default.nix
index 918bb71726665..4ebd50e349ece 100644
--- a/pkgs/development/python-modules/libusbsio/default.nix
+++ b/pkgs/development/python-modules/libusbsio/default.nix
@@ -1,21 +1,26 @@
-{ lib, buildPythonPackage, libusbsio }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  libusbsio,
+}:
 
 buildPythonPackage rec {
   pname = "libusbsio";
   format = "setuptools";
-  inherit (libusbsio) version;
+  version = "2.1.12";
+  # If the versions come back into sync switch back to inheriting from c lib
+  # inherit (libusbsio) version;
 
-  src = "${libusbsio.src}/python";
-
-  # The source includes both the python module directly and also a source tarball for it.
-  # The direct files lack setup information, the tarball includes unwanted binaries.
-  # This takes only the setup files from the tarball.
-  postUnpack = ''
-    tar -C python --strip-components=1 -xf python/dist/libusbsio-${version}.tar.gz libusbsio-${version}/{setup.py,setup.cfg,pyproject.toml}
-    rm -r python/dist
-  '';
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-RdUhwilBOwg19ay3Po3zsxqlBV9FTy3btJDbO4YEKS8=";
+  };
 
+  # The source includes both the python module directly and also prebuilt binaries
+  # Delete the binaries and patch the wrapper to use binary from Nixpkgs instead
   postPatch = ''
+    rm -rf libusbsio/bin
     substituteInPlace libusbsio/libusbsio.py \
         --replace "dllpath = LIBUSBSIO._lookup_dll_path(dfltdir, dllname)" 'dllpath = "${libusbsio}/lib/" + dllname'
   '';
@@ -27,9 +32,12 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "libusbsio" ];
 
   meta = with lib; {
-    description = "NXP Secure Provisioning SDK";
-    homepage = "https://github.com/NXPmicro/spsdk";
+    description = "LIBUSBSIO Host Library for USB Enabled MCUs";
+    homepage = "https://www.nxp.com/design/design-center/software/development-software/libusbsio-host-library-for-usb-enabled-mcus:LIBUSBSIO";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ frogamic sbruder ];
+    maintainers = with maintainers; [
+      frogamic
+      sbruder
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/libversion/default.nix b/pkgs/development/python-modules/libversion/default.nix
index dfebeaad538c8..b311d6888d6c2 100644
--- a/pkgs/development/python-modules/libversion/default.nix
+++ b/pkgs/development/python-modules/libversion/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, libversion
-, pkg-config
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  libversion,
+  pkg-config,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,26 +27,18 @@ buildPythonPackage rec {
       --replace "'pkg-config'" "'$(command -v $PKG_CONFIG)'"
   '';
 
-  nativeBuildInputs = [
-    pkg-config
-  ];
+  nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [
-    libversion
-  ];
+  buildInputs = [ libversion ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     # import from $out
     rm -r libversion
   '';
 
-  pythonImportsCheck = [
-    "libversion"
-  ];
+  pythonImportsCheck = [ "libversion" ];
 
   meta = with lib; {
     description = "Python bindings for libversion, which provides fast, powerful and correct generic version string comparison algorithm";
diff --git a/pkgs/development/python-modules/libvirt/default.nix b/pkgs/development/python-modules/libvirt/default.nix
index e10f7c056c6b8..6dbb2c8671125 100644
--- a/pkgs/development/python-modules/libvirt/default.nix
+++ b/pkgs/development/python-modules/libvirt/default.nix
@@ -1,24 +1,37 @@
-{ lib, buildPythonPackage, fetchFromGitLab, pkg-config, lxml, libvirt, nose }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  setuptools,
+  pkg-config,
+  lxml,
+  libvirt,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "libvirt";
-  version = "10.0.0";
-  format = "setuptools";
+  version = "10.5.0";
+  pyproject = true;
 
   src = fetchFromGitLab {
     owner = "libvirt";
     repo = "libvirt-python";
     rev = "v${version}";
-    hash = "sha256-zl1Hfm7flRflNjIpLoLAlPDysYlieC05HEd/mzFW8pU=";
+    hash = "sha256-dPjT9PRoUzNrY79yejAW/sbkMr0fpLif7IKZIW/K3KI=";
   };
 
+  build-system = [ setuptools ];
+
   nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ libvirt lxml ];
+  buildInputs = [
+    libvirt
+    lxml
+  ];
+
+  pythonImportsCheck = [ "libvirt" ];
 
-  nativeCheckInputs = [ nose ];
-  checkPhase = ''
-    nosetests
-  '';
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     homepage = "https://libvirt.org/python.html";
diff --git a/pkgs/development/python-modules/liccheck/default.nix b/pkgs/development/python-modules/liccheck/default.nix
index fc2f1945888cb..62d5b428c71c9 100644
--- a/pkgs/development/python-modules/liccheck/default.nix
+++ b/pkgs/development/python-modules/liccheck/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, configparser
-, fetchFromGitHub
-, pip
-, pytest-mock
-, pytestCheckHook
-, python3-openid
-, pythonOlder
-, semantic-version
-, toml
+{
+  lib,
+  buildPythonPackage,
+  configparser,
+  fetchFromGitHub,
+  pip,
+  pytest-mock,
+  pytestCheckHook,
+  python3-openid,
+  pythonOlder,
+  semantic-version,
+  toml,
 }:
 
 buildPythonPackage rec {
@@ -38,9 +39,7 @@ buildPythonPackage rec {
     python3-openid
   ];
 
-  pythonImportsCheck = [
-    "liccheck"
-  ];
+  pythonImportsCheck = [ "liccheck" ];
 
   meta = with lib; {
     description = "Check python packages from requirement.txt and report issues";
diff --git a/pkgs/development/python-modules/license-expression/default.nix b/pkgs/development/python-modules/license-expression/default.nix
index a17f4e829cae8..7e22330343897 100644
--- a/pkgs/development/python-modules/license-expression/default.nix
+++ b/pkgs/development/python-modules/license-expression/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, boolean-py
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  boolean-py,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "license-expression";
-  version = "30.3.0";
+  version = "30.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,26 +19,18 @@ buildPythonPackage rec {
     owner = "nexB";
     repo = "license-expression";
     rev = "refs/tags/v${version}";
-    hash = "sha256-nHqfnetVyz4W2Q6onH0mU/4x9e/vD4rbl9DF4TYqWzs=";
+    hash = "sha256-+hINYDfUrNsCmXOIa4XO/ML1fJoB8/n6iQ4UGdw5ClE=";
   };
 
   dontConfigure = true;
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    boolean-py
-  ];
+  dependencies = [ boolean-py ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "license_expression"
-  ];
+  pythonImportsCheck = [ "license_expression" ];
 
   meta = with lib; {
     description = "Utility library to parse, normalize and compare License expressions";
diff --git a/pkgs/development/python-modules/life360/default.nix b/pkgs/development/python-modules/life360/default.nix
index a2d958bc1083c..1825350631d36 100644
--- a/pkgs/development/python-modules/life360/default.nix
+++ b/pkgs/development/python-modules/life360/default.nix
@@ -1,38 +1,37 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "life360";
-  version = "6.0.1";
-  format = "setuptools";
+  version = "7.0.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "pnbruckner";
-    repo = pname;
+    repo = "life360";
     rev = "refs/tags/v${version}";
-    hash = "sha256-USqSkjOHlH0K/RlRYpn/gz6dHW8/uEVpsc4HeUZ3Emg=";
+    hash = "sha256-GkCs479lXcnCvb5guxyc+ZuZdiH4n8uD2VbkC+yijgg=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  build-system = [ setuptools ];
 
-  # Project has no tests
+  dependencies = [ aiohttp ];
+
+  # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "life360"
-  ];
+  pythonImportsCheck = [ "life360" ];
 
   meta = with lib; {
-    description = "Python module to interact with Life360";
+    description = "Module to interact with Life360";
     homepage = "https://github.com/pnbruckner/life360";
     changelog = "https://github.com/pnbruckner/life360/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/lifelines/default.nix b/pkgs/development/python-modules/lifelines/default.nix
index b081bfae9d839..ec823cf5fbf4a 100644
--- a/pkgs/development/python-modules/lifelines/default.nix
+++ b/pkgs/development/python-modules/lifelines/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, autograd
-, autograd-gamma
-, buildPythonPackage
-, dill
-, fetchFromGitHub
-, flaky
-, formulaic
-, jinja2
-, matplotlib
-, numpy
-, pandas
-, psutil
-, pytestCheckHook
-, pythonOlder
-, scikit-learn
-, scipy
-, sybil
+{
+  lib,
+  autograd,
+  autograd-gamma,
+  buildPythonPackage,
+  dill,
+  fetchFromGitHub,
+  flaky,
+  formulaic,
+  jinja2,
+  matplotlib,
+  numpy,
+  pandas,
+  psutil,
+  pytestCheckHook,
+  pythonOlder,
+  scikit-learn,
+  scipy,
+  sybil,
 }:
 
 buildPythonPackage rec {
   pname = "lifelines";
-  version = "0.28.0";
+  version = "0.29.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.9";
@@ -29,7 +30,7 @@ buildPythonPackage rec {
     owner = "CamDavidsonPilon";
     repo = "lifelines";
     rev = "refs/tags/v${version}";
-    hash = "sha256-6j+RgKeBCvpcREf7j8NE2x+IUI/LaoT6jsnHny4ccVo=";
+    hash = "sha256-9ZmecbFjUnWGNf4P3yphiMqG+/ktOYyvMtoZ6sEp1xY=";
   };
 
   propagatedBuildInputs = [
@@ -52,17 +53,11 @@ buildPythonPackage rec {
     sybil
   ];
 
-  pythonImportsCheck = [
-    "lifelines"
-  ];
+  pythonImportsCheck = [ "lifelines" ];
 
-  disabledTestPaths = [
-    "lifelines/tests/test_estimation.py"
-  ];
+  disabledTestPaths = [ "lifelines/tests/test_estimation.py" ];
 
-  disabledTests = [
-    "test_datetimes_to_durations_with_different_frequencies"
-  ];
+  disabledTests = [ "test_datetimes_to_durations_with_different_frequencies" ];
 
   meta = with lib; {
     description = "Survival analysis in Python";
diff --git a/pkgs/development/python-modules/lightgbm/default.nix b/pkgs/development/python-modules/lightgbm/default.nix
index a87276c15f177..5c52a73507414 100644
--- a/pkgs/development/python-modules/lightgbm/default.nix
+++ b/pkgs/development/python-modules/lightgbm/default.nix
@@ -1,51 +1,52 @@
-{ lib
-, config
-, stdenv
-, buildPythonPackage
-, fetchPypi
-
-# build-system
-, cmake
-, ninja
-, pathspec
-, pyproject-metadata
-, scikit-build-core
-
-# dependencies
-, llvmPackages
-, numpy
-, scipy
-, pythonOlder
-
-# optionals
-, cffi
-, dask
-, pandas
-, pyarrow
-, scikit-learn
-
-# optionals: gpu
-, boost
-, ocl-icd
-, opencl-headers
-, gpuSupport ? stdenv.isLinux && !cudaSupport
-, cudaSupport ? config.cudaSupport
-, cudaPackages
+{
+  lib,
+  config,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+
+  # build-system
+  cmake,
+  ninja,
+  pathspec,
+  pyproject-metadata,
+  scikit-build-core,
+
+  # dependencies
+  llvmPackages,
+  numpy,
+  scipy,
+  pythonOlder,
+
+  # optionals
+  cffi,
+  dask,
+  pandas,
+  pyarrow,
+  scikit-learn,
+
+  # optionals: gpu
+  boost,
+  ocl-icd,
+  opencl-headers,
+  gpuSupport ? stdenv.hostPlatform.isLinux && !cudaSupport,
+  cudaSupport ? config.cudaSupport,
+  cudaPackages,
 }:
 
-assert gpuSupport -> cudaSupport != true;
-assert cudaSupport -> gpuSupport != true;
+assert gpuSupport -> !cudaSupport;
+assert cudaSupport -> !gpuSupport;
 
 buildPythonPackage rec {
   pname = "lightgbm";
-  version = "4.3.0";
+  version = "4.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-AG9XhKm87kPlp+lD3E8C3hui7np68e5fGQ04Pztsnr4=";
+    hash = "sha256-4c17rwMY1OMIomV1pjpGNfCN+GatNiKp2OPXHZY3obo=";
   };
 
   nativeBuildInputs = [
@@ -54,33 +55,30 @@ buildPythonPackage rec {
     pathspec
     pyproject-metadata
     scikit-build-core
-  ] ++ lib.optionals cudaSupport [
-    cudaPackages.cuda_nvcc
-  ];
+  ] ++ lib.optionals cudaSupport [ cudaPackages.cuda_nvcc ];
 
   dontUseCmakeConfigure = true;
 
-  buildInputs = (lib.optionals stdenv.cc.isClang [
-    llvmPackages.openmp
-  ]) ++ (lib.optionals gpuSupport [
-    boost
-    ocl-icd
-    opencl-headers
-  ]) ++ lib.optionals cudaSupport [
-    cudaPackages.cuda_nvcc
-    cudaPackages.cuda_cudart
-  ];
+  buildInputs =
+    (lib.optionals stdenv.cc.isClang [ llvmPackages.openmp ])
+    ++ (lib.optionals gpuSupport [
+      boost
+      ocl-icd
+      opencl-headers
+    ])
+    ++ lib.optionals cudaSupport [
+      cudaPackages.cuda_nvcc
+      cudaPackages.cuda_cudart
+    ];
 
   propagatedBuildInputs = [
     numpy
     scipy
   ];
 
-  pypaBuildFlags = lib.optionals gpuSupport [
-    "--config-setting=cmake.define.USE_GPU=ON"
-  ] ++ lib.optionals cudaSupport [
-    "--config-setting=cmake.define.USE_CUDA=ON"
-  ];
+  pypaBuildFlags =
+    lib.optionals gpuSupport [ "--config-setting=cmake.define.USE_GPU=ON" ]
+    ++ lib.optionals cudaSupport [ "--config-setting=cmake.define.USE_CUDA=ON" ];
 
   postConfigure = ''
     export HOME=$(mktemp -d)
@@ -91,18 +89,16 @@ buildPythonPackage rec {
       cffi
       pyarrow
     ];
-    dask = [
-      dask
-      pandas
-    ] ++ dask.optional-dependencies.array
+    dask =
+      [
+        dask
+        pandas
+      ]
+      ++ dask.optional-dependencies.array
       ++ dask.optional-dependencies.dataframe
       ++ dask.optional-dependencies.distributed;
-    pandas = [
-      pandas
-    ];
-    scikit-learn = [
-      scikit-learn
-    ];
+    pandas = [ pandas ];
+    scikit-learn = [ scikit-learn ];
   };
 
   # The pypi package doesn't distribute the tests from the GitHub
@@ -110,12 +106,10 @@ buildPythonPackage rec {
   # `make check`.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "lightgbm"
-  ];
+  pythonImportsCheck = [ "lightgbm" ];
 
   meta = {
-    description = "A fast, distributed, high performance gradient boosting (GBDT, GBRT, GBM or MART) framework";
+    description = "Fast, distributed, high performance gradient boosting (GBDT, GBRT, GBM or MART) framework";
     homepage = "https://github.com/Microsoft/LightGBM";
     changelog = "https://github.com/microsoft/LightGBM/releases/tag/v${version}";
     license = lib.licenses.mit;
diff --git a/pkgs/development/python-modules/lightning-utilities/default.nix b/pkgs/development/python-modules/lightning-utilities/default.nix
index 3af06818b8ee8..4d437ac67c54f 100644
--- a/pkgs/development/python-modules/lightning-utilities/default.nix
+++ b/pkgs/development/python-modules/lightning-utilities/default.nix
@@ -1,43 +1,48 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
 
-# build
-, setuptools
+  # build
+  setuptools,
 
-# runtime
-, packaging
-, typing-extensions
+  # runtime
+  looseversion,
+  packaging,
+  typing-extensions,
 
-# tests
-, pytest-timeout
-, pytest7CheckHook
+  # tests
+  pytest-timeout,
+  pytest7CheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "lightning-utilities";
-  version = "0.10.1";
-  format = "pyproject";
+  version = "0.11.7";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "Lightning-AI";
     repo = "utilities";
     rev = "refs/tags/v${version}";
-    hash = "sha256-kP7BllA9FR/nMNTxRCxmG6IJYHz/Nxqb1HoF9KxuKl8=";
+    hash = "sha256-0XxBDe9OGQLfl4viuUm5Hx8WvZhSj+J0FoDqD/JOiZM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  postPatch = ''
+    substituteInPlace src/lightning_utilities/install/requirements.py \
+      --replace-fail "from distutils.version import LooseVersion" "from looseversion import LooseVersion"
+  '';
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    looseversion
     packaging
     typing-extensions
   ];
 
-  pythonImportsCheck = [
-    "lightning_utilities"
-  ];
+  pythonImportsCheck = [ "lightning_utilities" ];
 
   nativeCheckInputs = [
     pytest-timeout
@@ -53,6 +58,8 @@ buildPythonPackage rec {
     # fails another test
     "lightning_utilities.core.imports.ModuleAvailableCache"
     "lightning_utilities.core.imports.requires"
+    # Failed: DID NOT RAISE <class 'AssertionError'>
+    "test_no_warning_call"
   ];
 
   disabledTestPaths = [
@@ -61,16 +68,11 @@ buildPythonPackage rec {
     "src/lightning_utilities/install/requirements.py"
   ];
 
-  pytestFlagsArray = [
-    # warns about distutils removal in python 3.12
-    "-W" "ignore::DeprecationWarning"
-  ];
-
-  meta = with lib; {
+  meta = {
     changelog = "https://github.com/Lightning-AI/utilities/releases/tag/v${version}";
     description = "Common Python utilities and GitHub Actions in Lightning Ecosystem";
     homepage = "https://github.com/Lightning-AI/utilities";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/lightparam/default.nix b/pkgs/development/python-modules/lightparam/default.nix
index 0d1e232bb195b..635827b456693 100644
--- a/pkgs/development/python-modules/lightparam/default.nix
+++ b/pkgs/development/python-modules/lightparam/default.nix
@@ -1,8 +1,12 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy3k
-, ipython
-, ipywidgets
-, numpy
-, pyqt5
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy3k,
+  ipython,
+  ipywidgets,
+  numpy,
+  pyqt5,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/lightwave/default.nix b/pkgs/development/python-modules/lightwave/default.nix
index 5536483a0d564..621f413ca8859 100644
--- a/pkgs/development/python-modules/lightwave/default.nix
+++ b/pkgs/development/python-modules/lightwave/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-l9hwdAKrpdXj/pkrgyiuhbPaGgT6tjfoOw/TBpR+k1I=";
   };
 
-  pythonImportsCheck = [
-    "lightwave"
-  ];
+  pythonImportsCheck = [ "lightwave" ];
 
   # Requires phyiscal hardware
   doCheck = false;
diff --git a/pkgs/development/python-modules/lightwave2/default.nix b/pkgs/development/python-modules/lightwave2/default.nix
index 4d1b01fd68a5e..02ed2c6068634 100644
--- a/pkgs/development/python-modules/lightwave2/default.nix
+++ b/pkgs/development/python-modules/lightwave2/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-umhFqeX16c6o006MU9/9h4EnqcX7v8C5q3XjxYgi+xk=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "lightwave2"
-  ];
+  pythonImportsCheck = [ "lightwave2" ];
 
   meta = with lib; {
     description = "Library to interact with LightWaveRF 2nd Gen lights and switches";
diff --git a/pkgs/development/python-modules/lima/default.nix b/pkgs/development/python-modules/lima/default.nix
index 462c104c25f24..76a47923b7795 100644
--- a/pkgs/development/python-modules/lima/default.nix
+++ b/pkgs/development/python-modules/lima/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "lima";
@@ -14,7 +20,7 @@ buildPythonPackage rec {
   nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "Lightweight Marshalling of Python 3 Objects.";
+    description = "Lightweight Marshalling of Python 3 Objects";
     homepage = "https://github.com/b6d/lima";
     license = licenses.mit;
     maintainers = with maintainers; [ zhaofengli ];
diff --git a/pkgs/development/python-modules/lime/default.nix b/pkgs/development/python-modules/lime/default.nix
index a3296f09c52c9..39055c341f6fe 100644
--- a/pkgs/development/python-modules/lime/default.nix
+++ b/pkgs/development/python-modules/lime/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-
-, matplotlib
-, numpy
-, scipy
-, tqdm
-, scikit-learn
-, scikit-image
-
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+
+  matplotlib,
+  numpy,
+  scipy,
+  tqdm,
+  scikit-learn,
+  scikit-image,
+
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,7 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-dpYOTwVf61Pom1AiODuvyHtj8lusYmWYSwozPRpX94E=";
   };
 
-  propagatedBuildInputs =  [
+  propagatedBuildInputs = [
     matplotlib
     numpy
     scipy
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     scikit-image
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # touches network
diff --git a/pkgs/development/python-modules/limiter/default.nix b/pkgs/development/python-modules/limiter/default.nix
index f550651c104d6..4da1afdb4f881 100644
--- a/pkgs/development/python-modules/limiter/default.nix
+++ b/pkgs/development/python-modules/limiter/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, strenum
-, token-bucket
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  strenum,
+  token-bucket,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "limiter"
-  ];
+  pythonImportsCheck = [ "limiter" ];
 
   meta = with lib; {
     description = "Python rate-limiting, thread-safe and asynchronous decorators and context managers";
diff --git a/pkgs/development/python-modules/limitlessled/default.nix b/pkgs/development/python-modules/limitlessled/default.nix
index 79a8c1136ce5a..ff2d2dbc87b92 100644
--- a/pkgs/development/python-modules/limitlessled/default.nix
+++ b/pkgs/development/python-modules/limitlessled/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "limitlessled";
diff --git a/pkgs/development/python-modules/limits/default.nix b/pkgs/development/python-modules/limits/default.nix
index 9849541282f89..b7b634d38b1e8 100644
--- a/pkgs/development/python-modules/limits/default.nix
+++ b/pkgs/development/python-modules/limits/default.nix
@@ -1,31 +1,35 @@
-{ lib
-, aetcd
-, buildPythonPackage
-, coredis
-, deprecated
-, etcd3
-, fetchFromGitHub
-, hiro
-, importlib-resources
-, motor
-, packaging
-, pymemcache
-, pymongo
-, pytest-asyncio
-, pytest-lazy-fixture
-, pytestCheckHook
-, pythonOlder
-, redis
-, setuptools
-, typing-extensions
+{
+  lib,
+  aetcd,
+  buildPythonPackage,
+  coredis,
+  deprecated,
+  etcd3,
+  fetchFromGitHub,
+  fetchpatch2,
+  flaky,
+  hiro,
+  importlib-resources,
+  motor,
+  packaging,
+  pymemcache,
+  pymongo,
+  pytest-asyncio,
+  pytest-benchmark,
+  pytest-lazy-fixture,
+  pytestCheckHook,
+  pythonOlder,
+  redis,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "limits";
-  version = "3.10.1";
+  version = "3.13.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "alisaifee";
@@ -37,9 +41,20 @@ buildPythonPackage rec {
     postFetch = ''
       rm "$out/limits/_version.py"
     '';
-    hash = "sha256-Ax0P9rYTPOrhtOw7FLElSNTGQ3WWCboM3FodTOGZWu8=";
+    hash = "sha256-y5iMx+AC52ZgGvAvThRaeKFqCGkwmukyZsJ+nzR2AFM=";
   };
 
+  patches = [
+    (fetchpatch2 {
+      name = "fix-incompatibility-with-latest-pytest-asyncio.patch";
+      url = "https://github.com/alisaifee/limits/commit/f6dcdb253cd44ca8dc7380c481da1afd8b57af6b.patch";
+      excludes = [ "requirements/test.txt" ];
+      hash = "sha256-NwtN8WHNrwsRcIq18pRjzzGmm7XCzn6O5y+jo9Qr6iQ=";
+    })
+    ./remove-fixed-start-from-async-tests.patch
+    ./only-test-in-memory.patch
+  ];
+
   postPatch = ''
     substituteInPlace pytest.ini \
       --replace-fail "--cov=limits" "" \
@@ -52,70 +67,49 @@ buildPythonPackage rec {
     echo 'def get_versions(): return {"version": "${version}"}' > limits/_version.py
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     deprecated
     importlib-resources
     packaging
     typing-extensions
   ];
 
-  passthru.optional-dependencies = {
-    redis = [
-      redis
-    ];
-    rediscluster = [
-      redis
-    ];
-    memcached = [
-      pymemcache
-    ];
-    mongodb = [
-      pymongo
-    ];
-    etcd = [
-      etcd3
-    ];
-    async-redis = [
-      coredis
-    ];
+  optional-dependencies = {
+    redis = [ redis ];
+    rediscluster = [ redis ];
+    memcached = [ pymemcache ];
+    mongodb = [ pymongo ];
+    etcd = [ etcd3 ];
+    async-redis = [ coredis ];
     # async-memcached = [
     #   emcache  # Missing module
     # ];
-    async-mongodb = [
-      motor
-    ];
-    async-etcd = [
-      aetcd
-    ];
+    async-mongodb = [ motor ];
+    async-etcd = [ aetcd ];
   };
 
+  doCheck = pythonOlder "3.12"; # SystemError in protobuf
+
   nativeCheckInputs = [
+    flaky
     hiro
     pytest-asyncio
+    pytest-benchmark
     pytest-lazy-fixture
     pytestCheckHook
-  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
-  pythonImportsCheck = [
-    "limits"
-  ];
+  disabledTests = [ "test_moving_window_memcached" ];
 
-  pytestFlagsArray = [
-    # All other tests require a running Docker instance
-    "tests/test_limits.py"
-    "tests/test_ratelimit_parser.py"
-    "tests/test_limit_granularities.py"
-  ];
+  pythonImportsCheck = [ "limits" ];
 
   meta = with lib; {
     description = "Rate limiting using various strategies and storage backends such as redis & memcached";
     homepage = "https://github.com/alisaifee/limits";
     changelog = "https://github.com/alisaifee/limits/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/limits/only-test-in-memory.patch b/pkgs/development/python-modules/limits/only-test-in-memory.patch
new file mode 100644
index 0000000000000..2dbca193915e0
--- /dev/null
+++ b/pkgs/development/python-modules/limits/only-test-in-memory.patch
@@ -0,0 +1,487 @@
+diff --git a/tests/aio/test_storage.py b/tests/aio/test_storage.py
+index 1040d18..deecd9b 100644
+--- a/tests/aio/test_storage.py
++++ b/tests/aio/test_storage.py
+@@ -95,102 +95,6 @@ class TestBaseStorage:
+     "uri, args, expected_instance, fixture",
+     [
+         pytest.param("async+memory://", {}, MemoryStorage, None, id="in-memory"),
+-        pytest.param(
+-            "async+redis://localhost:7379",
+-            {},
+-            RedisStorage,
+-            pytest.lazy_fixture("redis_basic"),
+-            marks=pytest.mark.redis,
+-            id="redis",
+-        ),
+-        pytest.param(
+-            "async+redis+unix:///tmp/limits.redis.sock",
+-            {},
+-            RedisStorage,
+-            pytest.lazy_fixture("redis_uds"),
+-            marks=pytest.mark.redis,
+-            id="redis-uds",
+-        ),
+-        pytest.param(
+-            "async+redis+unix://:password/tmp/limits.redis.sock",
+-            {},
+-            RedisStorage,
+-            pytest.lazy_fixture("redis_uds"),
+-            marks=pytest.mark.redis,
+-            id="redis-uds-auth",
+-        ),
+-        pytest.param(
+-            "async+memcached://localhost:22122",
+-            {},
+-            MemcachedStorage,
+-            pytest.lazy_fixture("memcached"),
+-            marks=pytest.mark.memcached,
+-            id="memcached",
+-        ),
+-        pytest.param(
+-            "async+memcached://localhost:22122,localhost:22123",
+-            {},
+-            MemcachedStorage,
+-            pytest.lazy_fixture("memcached_cluster"),
+-            marks=pytest.mark.memcached,
+-            id="memcached-cluster",
+-        ),
+-        pytest.param(
+-            "async+redis+sentinel://localhost:26379",
+-            {"service_name": "mymaster"},
+-            RedisSentinelStorage,
+-            pytest.lazy_fixture("redis_sentinel"),
+-            marks=pytest.mark.redis_sentinel,
+-            id="redis-sentinel",
+-        ),
+-        pytest.param(
+-            "async+redis+sentinel://localhost:26379/mymaster",
+-            {},
+-            RedisSentinelStorage,
+-            pytest.lazy_fixture("redis_sentinel"),
+-            marks=pytest.mark.redis_sentinel,
+-            id="redis-sentinel-service-name-url",
+-        ),
+-        pytest.param(
+-            "async+redis+sentinel://:sekret@localhost:36379/mymaster",
+-            {"password": "sekret"},
+-            RedisSentinelStorage,
+-            pytest.lazy_fixture("redis_sentinel_auth"),
+-            marks=pytest.mark.redis_sentinel,
+-            id="redis-sentinel-auth",
+-        ),
+-        pytest.param(
+-            "async+redis+cluster://localhost:7001/",
+-            {},
+-            RedisClusterStorage,
+-            pytest.lazy_fixture("redis_cluster"),
+-            marks=pytest.mark.redis_cluster,
+-            id="redis-cluster",
+-        ),
+-        pytest.param(
+-            "async+redis+cluster://:sekret@localhost:8400/",
+-            {},
+-            RedisClusterStorage,
+-            pytest.lazy_fixture("redis_auth_cluster"),
+-            marks=pytest.mark.redis_cluster,
+-            id="redis-cluster-auth",
+-        ),
+-        pytest.param(
+-            "async+mongodb://localhost:37017/",
+-            {},
+-            MongoDBStorage,
+-            pytest.lazy_fixture("mongodb"),
+-            marks=pytest.mark.mongodb,
+-            id="mongodb",
+-        ),
+-        pytest.param(
+-            "async+etcd://localhost:2379",
+-            {},
+-            EtcdStorage,
+-            pytest.lazy_fixture("etcd"),
+-            marks=pytest.mark.etcd,
+-            id="etcd",
+-        ),
+     ],
+ )
+ class TestConcreteStorages:
+diff --git a/tests/test_storage.py b/tests/test_storage.py
+index 1b8c7b0..97dcee5 100644
+--- a/tests/test_storage.py
++++ b/tests/test_storage.py
+@@ -100,110 +100,6 @@ class TestBaseStorage:
+     "uri, args, expected_instance, fixture",
+     [
+         pytest.param("memory://", {}, MemoryStorage, None, id="in-memory"),
+-        pytest.param(
+-            "redis://localhost:7379",
+-            {},
+-            RedisStorage,
+-            pytest.lazy_fixture("redis_basic"),
+-            marks=pytest.mark.redis,
+-            id="redis",
+-        ),
+-        pytest.param(
+-            "redis+unix:///tmp/limits.redis.sock",
+-            {},
+-            RedisStorage,
+-            pytest.lazy_fixture("redis_uds"),
+-            marks=pytest.mark.redis,
+-            id="redis-uds",
+-        ),
+-        pytest.param(
+-            "redis+unix://:password/tmp/limits.redis.sock",
+-            {},
+-            RedisStorage,
+-            pytest.lazy_fixture("redis_uds"),
+-            marks=pytest.mark.redis,
+-            id="redis-uds-auth",
+-        ),
+-        pytest.param(
+-            "memcached://localhost:22122",
+-            {},
+-            MemcachedStorage,
+-            pytest.lazy_fixture("memcached"),
+-            marks=pytest.mark.memcached,
+-            id="memcached",
+-        ),
+-        pytest.param(
+-            "memcached://localhost:22122,localhost:22123",
+-            {},
+-            MemcachedStorage,
+-            pytest.lazy_fixture("memcached_cluster"),
+-            marks=pytest.mark.memcached,
+-            id="memcached-cluster",
+-        ),
+-        pytest.param(
+-            "memcached:///tmp/limits.memcached.sock",
+-            {},
+-            MemcachedStorage,
+-            pytest.lazy_fixture("memcached_uds"),
+-            marks=pytest.mark.memcached,
+-            id="memcached-uds",
+-        ),
+-        pytest.param(
+-            "redis+sentinel://localhost:26379",
+-            {"service_name": "mymaster"},
+-            RedisSentinelStorage,
+-            pytest.lazy_fixture("redis_sentinel"),
+-            marks=pytest.mark.redis_sentinel,
+-            id="redis-sentinel",
+-        ),
+-        pytest.param(
+-            "redis+sentinel://localhost:26379/mymaster",
+-            {},
+-            RedisSentinelStorage,
+-            pytest.lazy_fixture("redis_sentinel"),
+-            marks=pytest.mark.redis_sentinel,
+-            id="redis-sentinel-service-name-url",
+-        ),
+-        pytest.param(
+-            "redis+sentinel://:sekret@localhost:36379/mymaster",
+-            {"password": "sekret"},
+-            RedisSentinelStorage,
+-            pytest.lazy_fixture("redis_sentinel_auth"),
+-            marks=pytest.mark.redis_sentinel,
+-            id="redis-sentinel-auth",
+-        ),
+-        pytest.param(
+-            "redis+cluster://localhost:7001/",
+-            {},
+-            RedisClusterStorage,
+-            pytest.lazy_fixture("redis_cluster"),
+-            marks=pytest.mark.redis_cluster,
+-            id="redis-cluster",
+-        ),
+-        pytest.param(
+-            "redis+cluster://:sekret@localhost:8400/",
+-            {},
+-            RedisClusterStorage,
+-            pytest.lazy_fixture("redis_auth_cluster"),
+-            marks=pytest.mark.redis_cluster,
+-            id="redis-cluster-auth",
+-        ),
+-        pytest.param(
+-            "mongodb://localhost:37017/",
+-            {},
+-            MongoDBStorage,
+-            pytest.lazy_fixture("mongodb"),
+-            marks=pytest.mark.mongodb,
+-            id="mongodb",
+-        ),
+-        pytest.param(
+-            "etcd://localhost:2379",
+-            {},
+-            EtcdStorage,
+-            pytest.lazy_fixture("etcd"),
+-            marks=pytest.mark.etcd,
+-            id="etcd",
+-        ),
+     ],
+ )
+ class TestConcreteStorages:
+diff --git a/tests/utils.py b/tests/utils.py
+index 558d766..9dcb911 100644
+--- a/tests/utils.py
++++ b/tests/utils.py
+@@ -52,75 +52,6 @@ all_storage = pytest.mark.parametrize(
+     "uri, args, fixture",
+     [
+         pytest.param("memory://", {}, None, id="in-memory"),
+-        pytest.param(
+-            "redis://localhost:7379",
+-            {},
+-            pytest.lazy_fixture("redis_basic"),
+-            marks=pytest.mark.redis,
+-            id="redis_basic",
+-        ),
+-        pytest.param(
+-            "memcached://localhost:22122",
+-            {},
+-            pytest.lazy_fixture("memcached"),
+-            marks=[pytest.mark.memcached, pytest.mark.flaky],
+-            id="memcached",
+-        ),
+-        pytest.param(
+-            "memcached://localhost:22122,localhost:22123",
+-            {},
+-            pytest.lazy_fixture("memcached_cluster"),
+-            marks=[pytest.mark.memcached, pytest.mark.flaky],
+-            id="memcached-cluster",
+-        ),
+-        pytest.param(
+-            "redis+cluster://localhost:7001/",
+-            {},
+-            pytest.lazy_fixture("redis_cluster"),
+-            marks=pytest.mark.redis_cluster,
+-            id="redis-cluster",
+-        ),
+-        pytest.param(
+-            "redis+cluster://:sekret@localhost:8400/",
+-            {},
+-            pytest.lazy_fixture("redis_auth_cluster"),
+-            marks=pytest.mark.redis_cluster,
+-            id="redis-cluster-auth",
+-        ),
+-        pytest.param(
+-            "redis+cluster://localhost:8301",
+-            {
+-                "ssl": True,
+-                "ssl_cert_reqs": "required",
+-                "ssl_keyfile": "./tests/tls/client.key",
+-                "ssl_certfile": "./tests/tls/client.crt",
+-                "ssl_ca_certs": "./tests/tls/ca.crt",
+-            },
+-            pytest.lazy_fixture("redis_ssl_cluster"),
+-            marks=pytest.mark.redis_cluster,
+-            id="redis-ssl-cluster",
+-        ),
+-        pytest.param(
+-            "redis+sentinel://localhost:26379/mymaster",
+-            {"use_replicas": False},
+-            pytest.lazy_fixture("redis_sentinel"),
+-            marks=pytest.mark.redis_sentinel,
+-            id="redis-sentinel",
+-        ),
+-        pytest.param(
+-            "mongodb://localhost:37017/",
+-            {},
+-            pytest.lazy_fixture("mongodb"),
+-            marks=pytest.mark.mongodb,
+-            id="mongodb",
+-        ),
+-        pytest.param(
+-            "etcd://localhost:2379",
+-            {},
+-            pytest.lazy_fixture("etcd"),
+-            marks=[pytest.mark.etcd, pytest.mark.flaky],
+-            id="etcd",
+-        ),
+     ],
+ )
+ 
+@@ -128,54 +59,6 @@ moving_window_storage = pytest.mark.parametrize(
+     "uri, args, fixture",
+     [
+         pytest.param("memory://", {}, None, id="in-memory"),
+-        pytest.param(
+-            "redis://localhost:7379",
+-            {},
+-            pytest.lazy_fixture("redis_basic"),
+-            marks=pytest.mark.redis,
+-            id="redis",
+-        ),
+-        pytest.param(
+-            "redis+cluster://localhost:7001/",
+-            {},
+-            pytest.lazy_fixture("redis_cluster"),
+-            marks=pytest.mark.redis_cluster,
+-            id="redis-cluster",
+-        ),
+-        pytest.param(
+-            "redis+cluster://:sekret@localhost:8400/",
+-            {},
+-            pytest.lazy_fixture("redis_auth_cluster"),
+-            marks=pytest.mark.redis_cluster,
+-            id="redis-cluster-auth",
+-        ),
+-        pytest.param(
+-            "redis+cluster://localhost:8301",
+-            {
+-                "ssl": True,
+-                "ssl_cert_reqs": "required",
+-                "ssl_keyfile": "./tests/tls/client.key",
+-                "ssl_certfile": "./tests/tls/client.crt",
+-                "ssl_ca_certs": "./tests/tls/ca.crt",
+-            },
+-            pytest.lazy_fixture("redis_ssl_cluster"),
+-            marks=pytest.mark.redis_cluster,
+-            id="redis-ssl-cluster",
+-        ),
+-        pytest.param(
+-            "redis+sentinel://localhost:26379/mymaster",
+-            {"use_replicas": False},
+-            pytest.lazy_fixture("redis_sentinel"),
+-            marks=pytest.mark.redis_sentinel,
+-            id="redis-sentinel",
+-        ),
+-        pytest.param(
+-            "mongodb://localhost:37017/",
+-            {},
+-            pytest.lazy_fixture("mongodb"),
+-            marks=pytest.mark.mongodb,
+-            id="mongodb",
+-        ),
+     ],
+ )
+ 
+@@ -183,75 +66,6 @@ async_all_storage = pytest.mark.parametrize(
+     "uri, args, fixture",
+     [
+         pytest.param("async+memory://", {}, None, id="in-memory"),
+-        pytest.param(
+-            "async+redis://localhost:7379",
+-            {},
+-            pytest.lazy_fixture("redis_basic"),
+-            marks=pytest.mark.redis,
+-            id="redis",
+-        ),
+-        pytest.param(
+-            "async+memcached://localhost:22122",
+-            {},
+-            pytest.lazy_fixture("memcached"),
+-            marks=[pytest.mark.memcached, pytest.mark.flaky],
+-            id="memcached",
+-        ),
+-        pytest.param(
+-            "async+memcached://localhost:22122,localhost:22123",
+-            {},
+-            pytest.lazy_fixture("memcached_cluster"),
+-            marks=[pytest.mark.memcached, pytest.mark.flaky],
+-            id="memcached-cluster",
+-        ),
+-        pytest.param(
+-            "async+redis+cluster://localhost:7001/",
+-            {},
+-            pytest.lazy_fixture("redis_cluster"),
+-            marks=pytest.mark.redis_cluster,
+-            id="redis-cluster",
+-        ),
+-        pytest.param(
+-            "async+redis+cluster://:sekret@localhost:8400/",
+-            {},
+-            pytest.lazy_fixture("redis_auth_cluster"),
+-            marks=pytest.mark.redis_cluster,
+-            id="redis-cluster-auth",
+-        ),
+-        pytest.param(
+-            "async+redis+cluster://localhost:8301",
+-            {
+-                "ssl": True,
+-                "ssl_cert_reqs": "required",
+-                "ssl_keyfile": "./tests/tls/client.key",
+-                "ssl_certfile": "./tests/tls/client.crt",
+-                "ssl_ca_certs": "./tests/tls/ca.crt",
+-            },
+-            pytest.lazy_fixture("redis_ssl_cluster"),
+-            marks=pytest.mark.redis_cluster,
+-            id="redis-ssl-cluster",
+-        ),
+-        pytest.param(
+-            "async+redis+sentinel://localhost:26379/mymaster",
+-            {"use_replicas": False},
+-            pytest.lazy_fixture("redis_sentinel"),
+-            marks=pytest.mark.redis_sentinel,
+-            id="redis-sentinel",
+-        ),
+-        pytest.param(
+-            "async+mongodb://localhost:37017/",
+-            {},
+-            pytest.lazy_fixture("mongodb"),
+-            marks=pytest.mark.mongodb,
+-            id="mongodb",
+-        ),
+-        pytest.param(
+-            "async+etcd://localhost:2379",
+-            {},
+-            pytest.lazy_fixture("etcd"),
+-            marks=[pytest.mark.etcd, pytest.mark.flaky],
+-            id="etcd",
+-        ),
+     ],
+ )
+ 
+@@ -259,53 +73,5 @@ async_moving_window_storage = pytest.mark.parametrize(
+     "uri, args, fixture",
+     [
+         pytest.param("async+memory://", {}, None, id="in-memory"),
+-        pytest.param(
+-            "async+redis://localhost:7379",
+-            {},
+-            pytest.lazy_fixture("redis_basic"),
+-            marks=pytest.mark.redis,
+-            id="redis",
+-        ),
+-        pytest.param(
+-            "async+redis+cluster://localhost:7001/",
+-            {},
+-            pytest.lazy_fixture("redis_cluster"),
+-            marks=pytest.mark.redis_cluster,
+-            id="redis-cluster",
+-        ),
+-        pytest.param(
+-            "async+redis+cluster://:sekret@localhost:8400/",
+-            {},
+-            pytest.lazy_fixture("redis_auth_cluster"),
+-            marks=pytest.mark.redis_cluster,
+-            id="redis-cluster-auth",
+-        ),
+-        pytest.param(
+-            "async+redis+cluster://localhost:8301",
+-            {
+-                "ssl": True,
+-                "ssl_cert_reqs": "required",
+-                "ssl_keyfile": "./tests/tls/client.key",
+-                "ssl_certfile": "./tests/tls/client.crt",
+-                "ssl_ca_certs": "./tests/tls/ca.crt",
+-            },
+-            pytest.lazy_fixture("redis_ssl_cluster"),
+-            marks=pytest.mark.redis_cluster,
+-            id="redis-ssl-cluster",
+-        ),
+-        pytest.param(
+-            "async+redis+sentinel://localhost:26379/mymaster",
+-            {"use_replicas": False},
+-            pytest.lazy_fixture("redis_sentinel"),
+-            marks=pytest.mark.redis_sentinel,
+-            id="redis-sentinel",
+-        ),
+-        pytest.param(
+-            "async+mongodb://localhost:37017/",
+-            {},
+-            pytest.lazy_fixture("mongodb"),
+-            marks=pytest.mark.mongodb,
+-            id="mongodb",
+-        ),
+     ],
+ )
diff --git a/pkgs/development/python-modules/limits/remove-fixed-start-from-async-tests.patch b/pkgs/development/python-modules/limits/remove-fixed-start-from-async-tests.patch
new file mode 100644
index 0000000000000..19dc22173a668
--- /dev/null
+++ b/pkgs/development/python-modules/limits/remove-fixed-start-from-async-tests.patch
@@ -0,0 +1,87 @@
+diff --git a/tests/aio/test_storage.py b/tests/aio/test_storage.py
+index 1040d18..7015278 100644
+--- a/tests/aio/test_storage.py
++++ b/tests/aio/test_storage.py
+@@ -17,7 +17,6 @@ from limits.aio.storage import (
+ from limits.aio.strategies import MovingWindowRateLimiter
+ from limits.errors import StorageError
+ from limits.storage import storage_from_string
+-from tests.utils import fixed_start
+ 
+ 
+ @pytest.mark.asyncio
+@@ -197,7 +196,6 @@ class TestConcreteStorages:
+     async def test_storage_string(self, uri, args, expected_instance, fixture):
+         assert isinstance(storage_from_string(uri, **args), expected_instance)
+ 
+-    @fixed_start
+     async def test_expiry_incr(self, uri, args, expected_instance, fixture):
+         storage = storage_from_string(uri, **args)
+         limit = RateLimitItemPerSecond(1)
+@@ -205,7 +203,6 @@ class TestConcreteStorages:
+         time.sleep(1.1)
+         assert await storage.get(limit.key_for()) == 0
+ 
+-    @fixed_start
+     async def test_expiry_acquire_entry(self, uri, args, expected_instance, fixture):
+         if not issubclass(expected_instance, MovingWindowSupport):
+             pytest.skip("%s does not support acquire entry" % expected_instance)
+diff --git a/tests/aio/test_strategy.py b/tests/aio/test_strategy.py
+index b21f808..efa3b95 100644
+--- a/tests/aio/test_strategy.py
++++ b/tests/aio/test_strategy.py
+@@ -18,14 +18,12 @@ from tests.utils import (
+     async_all_storage,
+     async_moving_window_storage,
+     async_window,
+-    fixed_start,
+ )
+ 
+ 
+ @pytest.mark.asyncio
+ class TestAsyncWindow:
+     @async_all_storage
+-    @fixed_start
+     async def test_fixed_window(self, uri, args, fixture):
+         storage = storage_from_string(uri, **args)
+         limiter = FixedWindowRateLimiter(storage)
+@@ -37,7 +35,6 @@ class TestAsyncWindow:
+         assert (await limiter.get_window_stats(limit)).reset_time == start + 2
+ 
+     @async_all_storage
+-    @fixed_start
+     async def test_fixed_window_empty_stats(self, uri, args, fixture):
+         storage = storage_from_string(uri, **args)
+         limiter = FixedWindowRateLimiter(storage)
+@@ -61,7 +58,6 @@ class TestAsyncWindow:
+         ) == 58
+ 
+     @async_all_storage
+-    @fixed_start
+     async def test_fixed_window_multiple_cost(self, uri, args, fixture):
+         storage = storage_from_string(uri, **args)
+         limiter = FixedWindowRateLimiter(storage)
+@@ -73,7 +69,6 @@ class TestAsyncWindow:
+         assert not await limiter.hit(limit, "k2", cost=6)
+ 
+     @async_all_storage
+-    @fixed_start
+     async def test_fixed_window_with_elastic_expiry(self, uri, args, fixture):
+         storage = storage_from_string(uri, **args)
+         limiter = FixedWindowElasticExpiryRateLimiter(storage)
+@@ -90,7 +85,6 @@ class TestAsyncWindow:
+         assert (await limiter.get_window_stats(limit)).reset_time == end + 2
+ 
+     @async_all_storage
+-    @fixed_start
+     async def test_fixed_window_with_elastic_expiry_multiple_cost(
+         self, uri, args, fixture
+     ):
+@@ -179,7 +173,6 @@ class TestAsyncWindow:
+             MovingWindowRateLimiter(storage)
+ 
+     @async_all_storage
+-    @fixed_start
+     @pytest.mark.flaky
+     async def test_test_fixed_window(self, uri, args, fixture):
+         storage = storage_from_string(uri, **args)
diff --git a/pkgs/development/python-modules/limnoria/default.nix b/pkgs/development/python-modules/limnoria/default.nix
index b791095ed68d2..4c19f6e772c95 100644
--- a/pkgs/development/python-modules/limnoria/default.nix
+++ b/pkgs/development/python-modules/limnoria/default.nix
@@ -1,31 +1,35 @@
-{ lib
-, buildPythonPackage
-, chardet
-, cryptography
-, feedparser
-, fetchPypi
-, mock
-, pysocks
-, pytestCheckHook
-, python-dateutil
-, python-gnupg
-, pythonOlder
-, pytz
+{
+  lib,
+  buildPythonPackage,
+  setuptools,
+  chardet,
+  cryptography,
+  feedparser,
+  fetchPypi,
+  mock,
+  pysocks,
+  pytestCheckHook,
+  python-dateutil,
+  python-gnupg,
+  pythonOlder,
+  pytz,
 }:
 
 buildPythonPackage rec {
   pname = "limnoria";
-  version = "2023.11.18";
-  format = "setuptools";
+  version = "2024.5.30";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Ftm5OGTt1emQsYso3hAUA9yMNBkIK5jybdFaRKJJk0o=";
+    hash = "sha256-uKJMeC1dXhQp1CGbtdnqmELFO64VWblhABGfpKHGCZQ=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     chardet
     cryptography
     feedparser
@@ -33,17 +37,13 @@ buildPythonPackage rec {
     pysocks
     python-dateutil
     python-gnupg
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    pytz
-  ];
+  ] ++ lib.optionals (pythonOlder "3.9") [ pytz ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "version=version" 'version="${version}"'
+      --replace-fail "version=version" 'version="${version}"'
   '';
 
   checkPhase = ''
@@ -59,9 +59,9 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A modified version of Supybot, an IRC bot";
+    description = "Modified version of Supybot, an IRC bot";
     homepage = "https://github.com/ProgVal/Limnoria";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/line-profiler/default.nix b/pkgs/development/python-modules/line-profiler/default.nix
index 73fa920139de6..0873eff17d0fa 100644
--- a/pkgs/development/python-modules/line-profiler/default.nix
+++ b/pkgs/development/python-modules/line-profiler/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cython
-, isPyPy
-, ipython
-, scikit-build
-, cmake
-, pythonOlder
-, pytestCheckHook
-, ubelt
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cython,
+  isPyPy,
+  ipython,
+  scikit-build,
+  cmake,
+  pythonOlder,
+  pytestCheckHook,
+  ubelt,
 }:
 
 buildPythonPackage rec {
   pname = "line-profiler";
-  version = "4.1.2";
+  version = "4.1.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.6" || isPyPy;
@@ -21,7 +22,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "line_profiler";
     inherit version;
-    hash = "sha256-qlZXiw/1p1b+GAs/2nvWfCe71Hiz0BJGEtjPAOSiHfI=";
+    hash = "sha256-5fESPDZywyGLoGPCO9ZKURWeRGSf7WeAuZPHgfte0xg=";
   };
 
   nativeBuildInputs = [
@@ -50,9 +51,7 @@ buildPythonPackage rec {
     export PATH=$out/bin:$PATH
   '';
 
-  pythonImportsCheck = [
-    "line_profiler"
-  ];
+  pythonImportsCheck = [ "line_profiler" ];
 
   meta = with lib; {
     description = "Line-by-line profiler";
diff --git a/pkgs/development/python-modules/linear-garage-door/default.nix b/pkgs/development/python-modules/linear-garage-door/default.nix
index b57f8b0e47afd..1a8bfb7964107 100644
--- a/pkgs/development/python-modules/linear-garage-door/default.nix
+++ b/pkgs/development/python-modules/linear-garage-door/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, dnspython
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
-, tenacity
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  dnspython,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
+  tenacity,
 }:
 
 buildPythonPackage rec {
   pname = "linear-garage-door";
-  version = "0.2.9";
+  version = "0.2.10";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,7 +20,7 @@ buildPythonPackage rec {
     owner = "IceBotYT";
     repo = "linear-garage-door";
     rev = "refs/tags/${version}";
-    hash = "sha256-hWWJgZnEItYaSxka7zBHPeVlTEiOqRnA2vg6/MvpJGE=";
+    hash = "sha256-ibOCqy7krIVC7N75SwEyUII3Tknb60nwA+zGbjOENv4=";
   };
 
   postPatch = ''
@@ -28,11 +29,9 @@ buildPythonPackage rec {
       -e "/--no-cov/d"
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     dnspython
     tenacity
@@ -41,9 +40,7 @@ buildPythonPackage rec {
   # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "linear_garage_door"
-  ];
+  pythonImportsCheck = [ "linear_garage_door" ];
 
   meta = with lib; {
     description = "Control Linear Garage Doors with Python";
diff --git a/pkgs/development/python-modules/linear-operator/default.nix b/pkgs/development/python-modules/linear-operator/default.nix
index 8ebe174d199be..ab402c37aa79b 100644
--- a/pkgs/development/python-modules/linear-operator/default.nix
+++ b/pkgs/development/python-modules/linear-operator/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, jaxtyping
-, pytestCheckHook
-, pythonRelaxDepsHook
-, scipy
-, setuptools
-, setuptools-scm
-, torch
-, typeguard
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jaxtyping,
+  pytestCheckHook,
+  scipy,
+  setuptools,
+  setuptools-scm,
+  torch,
+  typeguard,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -25,7 +25,6 @@ buildPythonPackage rec {
   };
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
     setuptools-scm
     wheel
@@ -38,15 +37,11 @@ buildPythonPackage rec {
     typeguard
   ];
 
-  pythonRelaxDeps = [
-    "typeguard"
-  ];
+  pythonRelaxDeps = [ "typeguard" ];
 
   pythonImportsCheck = [ "linear_operator" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # flaky numerical tests
@@ -55,7 +50,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A LinearOperator implementation to wrap the numerical nuts and bolts of GPyTorch";
+    description = "LinearOperator implementation to wrap the numerical nuts and bolts of GPyTorch";
     homepage = "https://github.com/cornellius-gp/linear_operator/";
     license = licenses.mit;
     maintainers = with maintainers; [ veprbl ];
diff --git a/pkgs/development/python-modules/linecache2/default.nix b/pkgs/development/python-modules/linecache2/default.nix
index 1c4b2032f0d1b..2d183c3ef6904 100644
--- a/pkgs/development/python-modules/linecache2/default.nix
+++ b/pkgs/development/python-modules/linecache2/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pbr
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pbr,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A backport of linecache to older supported Pythons";
+    description = "Backport of linecache to older supported Pythons";
     homepage = "https://github.com/testing-cabal/linecache2";
     license = licenses.psfl;
   };
diff --git a/pkgs/development/python-modules/lineedit/default.nix b/pkgs/development/python-modules/lineedit/default.nix
index 9f7bc9f2e371f..51f5e5a834071 100644
--- a/pkgs/development/python-modules/lineedit/default.nix
+++ b/pkgs/development/python-modules/lineedit/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pygments
-, six
-, wcwidth
-, pytestCheckHook
-, pyte
-, ptyprocess
-, pexpect
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pygments,
+  six,
+  wcwidth,
+  pytestCheckHook,
+  pyte,
+  ptyprocess,
+  pexpect,
 }:
 
 buildPythonPackage rec {
@@ -38,7 +39,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "lineedit" ];
 
   meta = with lib; {
-    description = "A readline library based on prompt_toolkit which supports multiple modes";
+    description = "Readline library based on prompt_toolkit which supports multiple modes";
     homepage = "https://github.com/randy3k/lineedit";
     license = licenses.mit;
     maintainers = with maintainers; [ savyajha ];
diff --git a/pkgs/development/python-modules/linetable/default.nix b/pkgs/development/python-modules/linetable/default.nix
index 6c1cde30e6f09..bd9c16783fc05 100644
--- a/pkgs/development/python-modules/linetable/default.nix
+++ b/pkgs/development/python-modules/linetable/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-nVZVxK6uB5TP0pReaEya3/lFXFkiqpnnaWqYzxzO6bM=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "linetable"
-  ];
+  pythonImportsCheck = [ "linetable" ];
 
   meta = with lib; {
     description = "Library to parse and generate co_linetable attributes in Python code objects";
diff --git a/pkgs/development/python-modules/lingua/default.nix b/pkgs/development/python-modules/lingua/default.nix
index 7b1f6ba720057..d3cae940f1219 100644
--- a/pkgs/development/python-modules/lingua/default.nix
+++ b/pkgs/development/python-modules/lingua/default.nix
@@ -1,9 +1,11 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, flit-core
-, polib
-, click }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  flit-core,
+  polib,
+  click,
+}:
 
 buildPythonPackage rec {
   pname = "lingua";
@@ -20,9 +22,7 @@ buildPythonPackage rec {
       --replace-fail SafeConfigParser ConfigParser
   '';
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     click
diff --git a/pkgs/development/python-modules/lingva/default.nix b/pkgs/development/python-modules/lingva/default.nix
index 95bd168c39d01..3f6002284a5c7 100644
--- a/pkgs/development/python-modules/lingva/default.nix
+++ b/pkgs/development/python-modules/lingva/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "lingva";
-  version = "5.0.2";
+  version = "5.0.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "vacanza";
     repo = "lingva";
     rev = "refs/tags/v${version}";
-    hash = "sha256-kr64L/DtEWZu9z2p90QJHnb/6LygwZgxE+rARbo0NYI=";
+    hash = "sha256-2h3J+pvXRmjD7noMA7Cyu5Tf/9R8Akv08A7xJMLVD08=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/linien-client/default.nix b/pkgs/development/python-modules/linien-client/default.nix
index 8997c3454a387..ad1882af81826 100644
--- a/pkgs/development/python-modules/linien-client/default.nix
+++ b/pkgs/development/python-modules/linien-client/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, linien-common
-, setuptools
-, fabric
-, typing-extensions
-, numpy
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  linien-common,
+  setuptools,
+  fabric,
+  typing-extensions,
+  numpy,
+  scipy,
 }:
 
 buildPythonPackage rec {
@@ -35,7 +36,11 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Client components of the Linien spectroscopy lock application";
     homepage = "https://github.com/linien-org/linien/tree/develop/linien-client";
+    changelog = "https://github.com/linien-org/linien/blob/v${version}/CHANGELOG.md";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ fsagbuya doronbehar ];
+    maintainers = with maintainers; [
+      fsagbuya
+      doronbehar
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/linien-common/default.nix b/pkgs/development/python-modules/linien-common/default.nix
index 88da8560db467..f95b9af606cfd 100644
--- a/pkgs/development/python-modules/linien-common/default.nix
+++ b/pkgs/development/python-modules/linien-common/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, importlib-metadata
-, numpy
-, rpyc4
-, scipy
-, appdirs
-, callPackage
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  importlib-metadata,
+  numpy,
+  rpyc,
+  scipy,
+  appdirs,
+  callPackage,
 }:
 
 buildPythonPackage rec {
   pname = "linien-common";
-  version = "1.0.2";
+  version = "2.0.4";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "linien-org";
     repo = "linien";
     rev = "refs/tags/v${version}";
-    hash = "sha256-V6oo0a4cNlvn4pIwzchvCTOu7qtUGS+Pc0qpbEsvGZo=";
+    hash = "sha256-TCQ1jLZpeQlG/ZyWY0qrHceMJ1TH7AYO7toYc74ZWq4=";
   };
 
   sourceRoot = "${src.name}/linien-common";
@@ -28,12 +29,14 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d)
   '';
 
-  nativeBuildInputs = [ setuptools ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  pythonRelaxDeps = [ "importlib-metadata" ];
+
+  dependencies = [
     importlib-metadata
     numpy
-    rpyc4
+    rpyc
     scipy
     appdirs
   ];
@@ -47,7 +50,11 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Shared components of the Linien spectroscopy lock application";
     homepage = "https://github.com/linien-org/linien/tree/develop/linien-common";
+    changelog = "https://github.com/linien-org/linien/blob/v${version}/CHANGELOG.md";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ fsagbuya doronbehar ];
+    maintainers = with maintainers; [
+      fsagbuya
+      doronbehar
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/linien-common/tests.nix b/pkgs/development/python-modules/linien-common/tests.nix
index 7237548f2da36..b95307fce9ac5 100644
--- a/pkgs/development/python-modules/linien-common/tests.nix
+++ b/pkgs/development/python-modules/linien-common/tests.nix
@@ -1,26 +1,45 @@
-{ lib
-, buildPythonPackage
-, linien-common
-, linien-client
-, pytestCheckHook
+{
+  buildPythonPackage,
+  cma,
+  linien-client,
+  linien-common,
+  matplotlib,
+  migen,
+  misoc,
+  pytest-plt,
+  pytestCheckHook,
 }:
 
 buildPythonPackage {
   pname = "linien-tests";
   inherit (linien-common) version src;
-  format = "other";
   pyproject = false;
 
   dontBuild = true;
   dontInstall = true;
 
   nativeCheckInputs = [
-    linien-common
+    cma
     linien-client
+    linien-common
+    matplotlib
+    migen
+    misoc
+    pytest-plt
     pytestCheckHook
   ];
 
   preCheck = ''
     export HOME=$(mktemp -d)
   '';
+
+  disabledTestPaths = [
+    # require linien-server which is not packaged
+    "tests/test_algorithm_selection.py"
+    "tests/test_approacher.py"
+    "tests/test_optimizer_engines.py"
+    "tests/test_optimizer_utils.py"
+    "tests/test_robust_autolock.py"
+    "tests/test_simple_autolock_cpu.py"
+  ];
 }
diff --git a/pkgs/development/python-modules/linkify-it-py/default.nix b/pkgs/development/python-modules/linkify-it-py/default.nix
index f539303a59332..81296c611ca12 100644
--- a/pkgs/development/python-modules/linkify-it-py/default.nix
+++ b/pkgs/development/python-modules/linkify-it-py/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, uc-micro-py
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  uc-micro-py,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,26 +22,18 @@ buildPythonPackage rec {
     hash = "sha256-BLwIityUZDVdSbvTpLf6QUlZUavWzG/45Nfffn18/vU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    uc-micro-py
-  ];
+  propagatedBuildInputs = [ uc-micro-py ];
 
-  pythonImportsCheck = [
-    "linkify_it"
-  ];
+  pythonImportsCheck = [ "linkify_it" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Links recognition library with full unicode support";
     homepage = "https://github.com/tsutsu3/linkify-it-py";
     license = licenses.mit;
-    maintainers = with maintainers; [ AluisioASG ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/linknlink/default.nix b/pkgs/development/python-modules/linknlink/default.nix
index ea158b5cb2a1a..2fd6c15d6b00d 100644
--- a/pkgs/development/python-modules/linknlink/default.nix
+++ b/pkgs/development/python-modules/linknlink/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "linknlink";
-  version = "0.2.2";
+  version = "0.2.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "xuanxuan000";
     repo = "python-linknlink";
     rev = "refs/tags/${version}";
-    hash = "sha256-G0URNUHIh/td+A8MhIC0mePx2SmhEXhIzOpbVft33+w=";
+    hash = "sha256-ObPEcdDHi+SPFjuVKBtu7/5/IgHcam+IWblxxS3+mmI=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/linode-api/default.nix b/pkgs/development/python-modules/linode-api/default.nix
index 1e94825cedc50..c05d3bbc75a20 100644
--- a/pkgs/development/python-modules/linode-api/default.nix
+++ b/pkgs/development/python-modules/linode-api/default.nix
@@ -1,16 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, requests
-, pytestCheckHook
-, mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  requests,
+  polling,
+  pytestCheckHook,
+  mock,
+  httpretty,
 }:
 
 buildPythonPackage rec {
   pname = "linode-api";
-  version = "5.13.1";
+  version = "5.16.0";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -20,20 +23,25 @@ buildPythonPackage rec {
     owner = "linode";
     repo = "python-linode-api";
     rev = "refs/tags/v${version}";
-    hash = "sha256-WB4CurdokRKh1eD6FZR2SeMpa3Z0BzLb0ldI7SYPEVI=";
+    hash = "sha256-B90BfuAqyncJPIvcni7bthiwSfmeL9CqeTYT1/y5TNY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     requests
+    polling
   ];
 
   nativeCheckInputs = [
-    mock
     pytestCheckHook
+    mock
+    httpretty
+  ];
+
+  disabledTestPaths = [
+    # needs api token
+    "test/integration"
   ];
 
   pythonImportsCheck = [ "linode_api4" ];
diff --git a/pkgs/development/python-modules/linode-metadata/default.nix b/pkgs/development/python-modules/linode-metadata/default.nix
new file mode 100644
index 0000000000000..a7b47d18efdcb
--- /dev/null
+++ b/pkgs/development/python-modules/linode-metadata/default.nix
@@ -0,0 +1,44 @@
+{
+  buildPythonPackage,
+  fetchPypi,
+  httpx,
+  lib,
+  linode-cli,
+  pytest,
+  pytest-asyncio,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "linode-metadata";
+  version = "0.3.0";
+
+  src = fetchPypi {
+    pname = "linode_metadata";
+    inherit version;
+    hash = "sha256-ZFCv9f4hbiBaJuKvzs/BGFoP+mAFwVa8OFF22b22voI=";
+  };
+
+  pyproject = true;
+
+  dependencies = [
+    httpx
+    setuptools
+  ];
+
+  checkInputs = [
+    pytest
+    pytest-asyncio
+  ];
+
+  pythonImportsCheck = [ "linode_metadata" ];
+
+  meta = {
+    description = "Python package for interacting with the Linode Metadata Service";
+    downloadPage = "https://pypi.org/project/linode-metadata/";
+    homepage = "https://github.com/linode/py-metadata";
+    changelog = "https://github.com/linode/py-metadata/releases/tag/v${version}";
+    license = lib.licenses.bsd3;
+    maintainers = linode-cli.meta.maintainers;
+  };
+}
diff --git a/pkgs/development/python-modules/linode/default.nix b/pkgs/development/python-modules/linode/default.nix
index 7f4d9b0dbd838..ce34a64ee913d 100644
--- a/pkgs/development/python-modules/linode/default.nix
+++ b/pkgs/development/python-modules/linode/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -18,8 +19,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/ghickman/linode";
-    description = "A thin python wrapper around Linode's API";
+    description = "Thin python wrapper around Linode's API";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/linuxfd/default.nix b/pkgs/development/python-modules/linuxfd/default.nix
index e9904d8d454eb..793059dbe5406 100644
--- a/pkgs/development/python-modules/linuxfd/default.nix
+++ b/pkgs/development/python-modules/linuxfd/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -8,7 +9,6 @@ buildPythonPackage rec {
   version = "1.5";
   format = "setuptools";
 
-
   src = fetchPypi {
     inherit pname version;
     sha256 = "b8c00109724b68e093f9b556edd78e41ed65fb8d969fd0e83186a97b5d3139b4";
diff --git a/pkgs/development/python-modules/lion-pytorch/default.nix b/pkgs/development/python-modules/lion-pytorch/default.nix
index 3b8552837acf3..4872a41977a6d 100644
--- a/pkgs/development/python-modules/lion-pytorch/default.nix
+++ b/pkgs/development/python-modules/lion-pytorch/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, torch
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  torch,
 }:
 
 buildPythonPackage rec {
   pname = "lion-pytorch";
-  version = "0.1.4";
+  version = "0.2.2";
   format = "setuptools";
   disabled = pythonOlder "3.6";
 
@@ -15,13 +16,13 @@ buildPythonPackage rec {
     owner = "lucidrains";
     repo = "lion-pytorch";
     rev = "refs/tags/${version}";
-    hash = "sha256-8LbALBKQ5ACwmLWYUz3GYkkkhhy8emi6n3kgwYdnDSI=";
+    hash = "sha256-hOPTuXdTrTi/Thv3/5IYqkgH+5cFdzyK1Fshus8u5n0=";
   };
 
   propagatedBuildInputs = [ torch ];
 
   pythonImportsCheck = [ "lion_pytorch" ];
-  doCheck = false;  # no tests currently
+  doCheck = false; # no tests currently
 
   meta = with lib; {
     description = "Optimizer tuned by Google Brain using genetic algorithms";
diff --git a/pkgs/development/python-modules/liquidctl/default.nix b/pkgs/development/python-modules/liquidctl/default.nix
index 94a232ef56595..8a19dd65e6e2b 100644
--- a/pkgs/development/python-modules/liquidctl/default.nix
+++ b/pkgs/development/python-modules/liquidctl/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, installShellFiles
-, setuptools
-, setuptools-scm
-, wheel
-, docopt
-, hidapi
-, pyusb
-, smbus-cffi
-, i2c-tools
-, pytestCheckHook
-, colorlog
-, crcmod
-, pillow
-, fetchpatch
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  installShellFiles,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  docopt,
+  hidapi,
+  pyusb,
+  smbus-cffi,
+  i2c-tools,
+  pytestCheckHook,
+  colorlog,
+  crcmod,
+  pillow,
+  fetchpatch,
 }:
 
 buildPythonPackage rec {
@@ -58,9 +59,7 @@ buildPythonPackage rec {
     pillow
   ];
 
-  propagatedNativeBuildInputs = [
-    smbus-cffi
-  ];
+  propagatedNativeBuildInputs = [ smbus-cffi ];
 
   outputs = [
     "out"
@@ -75,25 +74,24 @@ buildPythonPackage rec {
     cp extra/linux/71-liquidctl.rules $out/lib/udev/rules.d/.
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postBuild = ''
     # needed for pythonImportsCheck
     export XDG_RUNTIME_DIR=$TMPDIR
   '';
 
-  pythonImportsCheck = [
-    "liquidctl"
-  ];
+  pythonImportsCheck = [ "liquidctl" ];
 
   meta = with lib; {
     description = "Cross-platform CLI and Python drivers for AIO liquid coolers and other devices";
     homepage = "https://github.com/liquidctl/liquidctl";
     changelog = "https://github.com/liquidctl/liquidctl/blob/v${version}/CHANGELOG.md";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ arturcygan evils ];
+    maintainers = with maintainers; [
+      arturcygan
+      evils
+    ];
     mainProgram = "liquidctl";
   };
 }
diff --git a/pkgs/development/python-modules/lit/default.nix b/pkgs/development/python-modules/lit/default.nix
index 9b63a4e883770..bce9db1f7ec38 100644
--- a/pkgs/development/python-modules/lit/default.nix
+++ b/pkgs/development/python-modules/lit/default.nix
@@ -1,23 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "lit";
-  version = "17.0.6";
+  version = "18.1.7";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-36mvm1X8RQmla+e/I0bwedf0okLVg7ny4LB4/Qq64xs=";
+    hash = "sha256-Ld2b4mvcxtoDrqPsRWxpRetaCdveVI01AL/5uO1HY7s=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   passthru = {
     inherit python;
@@ -34,6 +33,6 @@ buildPythonPackage rec {
     mainProgram = "lit";
     homepage = "http://llvm.org/docs/CommandGuide/lit.html";
     license = lib.licenses.ncsa;
-    maintainers = with lib.maintainers; [ dtzWill ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/litellm/default.nix b/pkgs/development/python-modules/litellm/default.nix
index 25c8068a199a0..decda0e7425b2 100644
--- a/pkgs/development/python-modules/litellm/default.nix
+++ b/pkgs/development/python-modules/litellm/default.nix
@@ -1,39 +1,43 @@
-{ lib
-, aiohttp
-, apscheduler
-, azure-identity
-, azure-keyvault-secrets
-, backoff
-, buildPythonPackage
-, click
-, fastapi
-, fastapi-sso
-, fetchFromGitHub
-, google-cloud-kms
-, gunicorn
-, importlib-metadata
-, jinja2
-, openai
-, orjson
-, poetry-core
-, prisma
-, pyjwt
-, python-dotenv
-, python-multipart
-, pythonOlder
-, pyyaml
-, requests
-, resend
-, rq
-, streamlit
-, tiktoken
-, tokenizers
-, uvicorn
+{
+  lib,
+  aiohttp,
+  apscheduler,
+  azure-identity,
+  azure-keyvault-secrets,
+  backoff,
+  buildPythonPackage,
+  click,
+  cryptography,
+  fastapi,
+  fastapi-sso,
+  fetchFromGitHub,
+  google-cloud-kms,
+  gunicorn,
+  importlib-metadata,
+  jinja2,
+  jsonschema,
+  openai,
+  orjson,
+  poetry-core,
+  prisma,
+  pydantic,
+  pyjwt,
+  pynacl,
+  python-dotenv,
+  python-multipart,
+  pythonOlder,
+  pyyaml,
+  requests,
+  resend,
+  rq,
+  tiktoken,
+  tokenizers,
+  uvicorn,
 }:
 
 buildPythonPackage rec {
   pname = "litellm";
-  version = "1.35.32";
+  version = "1.47.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -42,25 +46,21 @@ buildPythonPackage rec {
     owner = "BerriAI";
     repo = "litellm";
     rev = "refs/tags/v${version}";
-    hash = "sha256-vNmhFd1lm1pfni2ZK0DshBC9cDRiSWhXTUHAPh/oGJc=";
+    hash = "sha256-onFBSClB+FDbpc7VYkm2jks8G6L/LGsZq9tyFW+uHZc=";
   };
 
-  postPatch = ''
-    rm -rf dist
-  '';
-
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     aiohttp
     click
     importlib-metadata
     jinja2
+    jsonschema
     openai
-    requests
+    pydantic
     python-dotenv
+    requests
     tiktoken
     tokenizers
   ];
@@ -69,6 +69,7 @@ buildPythonPackage rec {
     proxy = [
       apscheduler
       backoff
+      cryptography
       fastapi
       fastapi-sso
       gunicorn
@@ -84,15 +85,14 @@ buildPythonPackage rec {
       azure-keyvault-secrets
       google-cloud-kms
       prisma
+      pynacl
       resend
-      streamlit
     ];
   };
 
-  # the import check phase fails trying to do a network request to openai
-  # pythonImportsCheck = [ "litellm" ];
+  pythonImportsCheck = [ "litellm" ];
 
-  # no tests
+  # access network
   doCheck = false;
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/litemapy/default.nix b/pkgs/development/python-modules/litemapy/default.nix
index 6040cb1f47f1b..38a234321e073 100644
--- a/pkgs/development/python-modules/litemapy/default.nix
+++ b/pkgs/development/python-modules/litemapy/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nbtlib
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  nbtlib,
 }:
 
 buildPythonPackage rec {
@@ -16,14 +17,12 @@ buildPythonPackage rec {
     hash = "sha256-VfEo/JLeU17bEkvc8oZYfq19RsHl6QvKv0sGZYQjYhE=";
   };
 
-  propagatedBuildInputs = [
-    nbtlib
-  ];
+  propagatedBuildInputs = [ nbtlib ];
 
   pythonImportsCheck = [ "litemapy" ];
 
   meta = with lib; {
-    description = "A Python library to read and edit Litematica's schematic file format";
+    description = "Python library to read and edit Litematica's schematic file format";
     homepage = "https://github.com/SmylerMC/litemapy";
     changelog = "https://github.com/SmylerMC/litemapy/blob/${src.rev}/CHANGELOG.md";
     license = licenses.gpl3Only;
diff --git a/pkgs/development/python-modules/littleutils/default.nix b/pkgs/development/python-modules/littleutils/default.nix
index 538f4dea0a67e..b4c4eb4ac3c22 100644
--- a/pkgs/development/python-modules/littleutils/default.nix
+++ b/pkgs/development/python-modules/littleutils/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "littleutils"
-  ];
+  pythonImportsCheck = [ "littleutils" ];
 
   meta = with lib; {
     description = "Small collection of Python utility functions";
diff --git a/pkgs/development/python-modules/livelossplot/default.nix b/pkgs/development/python-modules/livelossplot/default.nix
index 2218c01d64243..5c213fae0db54 100644
--- a/pkgs/development/python-modules/livelossplot/default.nix
+++ b/pkgs/development/python-modules/livelossplot/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, bokeh
-, ipython
-, matplotlib
-, numpy
-, nbconvert
-, nbformat
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  bokeh,
+  ipython,
+  matplotlib,
+  numpy,
+  nbconvert,
+  nbformat,
 }:
 
 buildPythonPackage rec {
@@ -19,15 +20,24 @@ buildPythonPackage rec {
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
-    owner  = "stared";
-    repo   = pname;
-    rev    = "v${version}";
+    owner = "stared";
+    repo = pname;
+    rev = "v${version}";
     sha256 = "sha256-YU8vX4SubI6txmC/i5fOjcvWfuDFm8+SPmie8Eb1qRs=";
   };
 
-  propagatedBuildInputs = [ bokeh ipython matplotlib numpy ];
+  propagatedBuildInputs = [
+    bokeh
+    ipython
+    matplotlib
+    numpy
+  ];
 
-  nativeCheckInputs = [ nbconvert nbformat pytestCheckHook ];
+  nativeCheckInputs = [
+    nbconvert
+    nbformat
+    pytestCheckHook
+  ];
 
   meta = with lib; {
     description = "Live training loss plot in Jupyter for Keras, PyTorch, and others";
diff --git a/pkgs/development/python-modules/livereload/default.nix b/pkgs/development/python-modules/livereload/default.nix
index 15b9d121862fc..a29e06f15c1fa 100644
--- a/pkgs/development/python-modules/livereload/default.nix
+++ b/pkgs/development/python-modules/livereload/default.nix
@@ -1,33 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, django
-, pytestCheckHook
-, tornado
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  django,
+  pytestCheckHook,
+  tornado,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "livereload";
-  version = "2.6.3";
+  version = "2.7.0";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "lepture";
     repo = "python-livereload";
-    rev = version;
-    sha256 = "1alp83h3l3771l915jqa1ylyllad7wxnmblayan0z0zj37jkp9n7";
+    rev = "refs/tags/${version}";
+    sha256 = "sha256-1at/KMgDTj0TTnq5Vjgklkyha3QUF8bFeKxQSrvx1oE=";
   };
 
   buildInputs = [ django ];
 
-  propagatedBuildInputs = [ tornado six ];
+  propagatedBuildInputs = [
+    tornado
+    six
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = [
-    "test_watch_multiple_dirs"
-  ];
+  disabledTests = [ "test_watch_multiple_dirs" ];
 
   meta = {
     description = "Runs a local server that reloads as you develop";
diff --git a/pkgs/development/python-modules/lizard/default.nix b/pkgs/development/python-modules/lizard/default.nix
index 027fcc2a15af1..df6ab5c4b7b31 100644
--- a/pkgs/development/python-modules/lizard/default.nix
+++ b/pkgs/development/python-modules/lizard/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, mock
-, jinja2
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  mock,
+  jinja2,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     "test/test_languages/testFortran.py"
   ];
 
-  pythonImportsCheck = [
-    "lizard"
-  ];
+  pythonImportsCheck = [ "lizard" ];
 
   meta = with lib; {
     changelog = "https://github.com/terryyin/lizard/blob/${version}/CHANGELOG.md";
@@ -46,4 +45,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ jpetrucciani ];
   };
 }
-
diff --git a/pkgs/development/python-modules/llama-cloud/default.nix b/pkgs/development/python-modules/llama-cloud/default.nix
new file mode 100644
index 0000000000000..8e409c9fe79ae
--- /dev/null
+++ b/pkgs/development/python-modules/llama-cloud/default.nix
@@ -0,0 +1,42 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  httpx,
+  poetry-core,
+  pydantic,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "llama-cloud";
+  version = "0.0.17";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    pname = "llama_cloud";
+    inherit version;
+    hash = "sha256-f9aFe7u5GTdTVXLMtI2qOBifVc3XQRGF2Ag9qym6Epk=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    httpx
+    pydantic
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "llama_cloud" ];
+
+  meta = with lib; {
+    description = "LlamaIndex Python Client";
+    homepage = "https://pypi.org/project/llama-cloud/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/llama-index-agent-openai/default.nix b/pkgs/development/python-modules/llama-index-agent-openai/default.nix
index 2fb90a615f46e..434d12ba8ff89 100644
--- a/pkgs/development/python-modules/llama-index-agent-openai/default.nix
+++ b/pkgs/development/python-modules/llama-index-agent-openai/default.nix
@@ -6,12 +6,11 @@
   llama-index-llms-openai,
   poetry-core,
   pythonOlder,
-  pythonRelaxDepsHook,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-agent-openai";
-  version = "0.2.3";
+  version = "0.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,14 +18,13 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_agent_openai";
     inherit version;
-    hash = "sha256-yJnZCzIDZlao74bQ8DeNQWjgDrLXWhCQHqtYulsmVqQ=";
+    hash = "sha256-QcmqW3zrxQQ63ds0QuMWfpeXFYlGbjZEjgTgp2f1uao=";
   };
 
   pythonRelaxDeps = [ "llama-index-llms-openai" ];
 
   build-system = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   dependencies = [
diff --git a/pkgs/development/python-modules/llama-index-cli/default.nix b/pkgs/development/python-modules/llama-index-cli/default.nix
index f17ff8e511a6b..d3229e4de03cb 100644
--- a/pkgs/development/python-modules/llama-index-cli/default.nix
+++ b/pkgs/development/python-modules/llama-index-cli/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "llama-index-cli";
-  version = "0.1.12";
+  version = "0.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_cli";
     inherit version;
-    hash = "sha256-PPH3BsPGnGsaqwf8p/qtOVnbFwmAjv1QSRtmnTiwtYA=";
+    hash = "sha256-GJDdaHz0QPNlE2WlSeMDNjFiwWe4772Ho6oQBY1tXHc=";
   };
 
   build-system = [ poetry-core ];
diff --git a/pkgs/development/python-modules/llama-index-core/default.nix b/pkgs/development/python-modules/llama-index-core/default.nix
index 0c76c6f8c471a..8fd9274eac9fc 100644
--- a/pkgs/development/python-modules/llama-index-core/default.nix
+++ b/pkgs/development/python-modules/llama-index-core/default.nix
@@ -6,12 +6,13 @@
   deprecated,
   dirtyjson,
   fetchFromGitHub,
-  fetchzip,
   fsspec,
+  jsonpath-ng,
   llamaindex-py-client,
   nest-asyncio,
   networkx,
   nltk,
+  nltk-data,
   numpy,
   openai,
   pandas,
@@ -21,30 +22,20 @@
   pytest-mock,
   pytestCheckHook,
   pythonOlder,
+  pyvis,
   pyyaml,
   requests,
-  tree-sitter,
+  spacy,
   sqlalchemy,
   tenacity,
   tiktoken,
+  tree-sitter,
   typing-inspect,
 }:
 
-let
-  stopwords = fetchzip {
-    url = "https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/corpora/stopwords.zip";
-    hash = "sha256-tX1CMxSvFjr0nnLxbbycaX/IBnzHFxljMZceX5zElPY=";
-  };
-
-  punkt = fetchzip {
-    url = "https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/tokenizers/punkt.zip";
-    hash = "sha256-SKZu26K17qMUg7iCFZey0GTECUZ+sTTrF/pqeEgJCos=";
-  };
-in
-
 buildPythonPackage rec {
   pname = "llama-index-core";
-  version = "0.10.34";
+  version = "0.11.10";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -53,7 +44,7 @@ buildPythonPackage rec {
     owner = "run-llama";
     repo = "llama_index";
     rev = "refs/tags/v${version}";
-    hash = "sha256-KOoTN+ERJZHOer82lLBTWzWW5MIoJaqOmhoa3HYk0fs=";
+    hash = "sha256-6wQs6hB609Du5/n5sKJT5E0OJCj3dMKvpKxJ9C75HpI=";
   };
 
   sourceRoot = "${src.name}/${pname}";
@@ -64,12 +55,12 @@ buildPythonPackage rec {
   # Setting `NLTK_DATA` to a writable path can also solve this problem, but it needs to be done in
   # every package that depends on `llama-index-core` for `pythonImportsCheck` not to fail, so this
   # solution seems more elegant.
-  patchPhase = ''
+  postPatch = ''
     mkdir -p llama_index/core/_static/nltk_cache/corpora/stopwords/
-    cp -r ${stopwords}/* llama_index/core/_static/nltk_cache/corpora/stopwords/
+    cp -r ${nltk-data.stopwords}/corpora/stopwords/* llama_index/core/_static/nltk_cache/corpora/stopwords/
 
     mkdir -p llama_index/core/_static/nltk_cache/tokenizers/punkt/
-    cp -r ${punkt}/* llama_index/core/_static/nltk_cache/tokenizers/punkt/
+    cp -r ${nltk-data.punkt}/tokenizers/punkt/* llama_index/core/_static/nltk_cache/tokenizers/punkt/
   '';
 
   build-system = [ poetry-core ];
@@ -80,6 +71,7 @@ buildPythonPackage rec {
     deprecated
     dirtyjson
     fsspec
+    jsonpath-ng
     llamaindex-py-client
     nest-asyncio
     networkx
@@ -88,8 +80,10 @@ buildPythonPackage rec {
     openai
     pandas
     pillow
+    pyvis
     pyyaml
     requests
+    spacy
     sqlalchemy
     tenacity
     tiktoken
@@ -129,6 +123,12 @@ buildPythonPackage rec {
     "tests/tools/"
   ];
 
+  disabledTests = [
+    # Tests require network access
+    "test_from_namespaced_persist_dir"
+    "test_from_persist_dir"
+  ];
+
   meta = with lib; {
     description = "Data framework for your LLM applications";
     homepage = "https://github.com/run-llama/llama_index/";
diff --git a/pkgs/development/python-modules/llama-index-embeddings-gemini/default.nix b/pkgs/development/python-modules/llama-index-embeddings-gemini/default.nix
index 722139cfdedc8..76dcdacb5c1e2 100644
--- a/pkgs/development/python-modules/llama-index-embeddings-gemini/default.nix
+++ b/pkgs/development/python-modules/llama-index-embeddings-gemini/default.nix
@@ -5,14 +5,12 @@
   google-generativeai,
   llama-index-core,
   poetry-core,
-  pytestCheckHook,
-  pythonRelaxDepsHook,
   pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-embeddings-gemini";
-  version = "0.1.6";
+  version = "0.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -20,18 +18,13 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_embeddings_gemini";
     inherit version;
-    hash = "sha256-HYwYA67/7gDxE7ZxQkkyblgwE83gZXuDmUuseXujr5g=";
+    hash = "sha256-7ftu+Gh8Ar9+yrFkUldlAvUfVtAw+xzrmyzqr7TeQdc=";
   };
 
   pythonRelaxDeps = [ "google-generativeai" ];
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   dependencies = [
     google-generativeai
diff --git a/pkgs/development/python-modules/llama-index-embeddings-google/default.nix b/pkgs/development/python-modules/llama-index-embeddings-google/default.nix
index cebedfe90b629..060b3f562c494 100644
--- a/pkgs/development/python-modules/llama-index-embeddings-google/default.nix
+++ b/pkgs/development/python-modules/llama-index-embeddings-google/default.nix
@@ -6,12 +6,11 @@
   llama-index-core,
   poetry-core,
   pythonOlder,
-  pythonRelaxDepsHook,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-embeddings-google";
-  version = "0.1.5";
+  version = "0.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,14 +18,13 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_embeddings_google";
     inherit version;
-    hash = "sha256-mJ+H4klmGlpTGXLErlLNWH5IUpGyXnbAhNsgT5fwCHs=";
+    hash = "sha256-7L24jKB7uFs+4OIIsXdweJ3TRuP4SFjY/p97ocUfmL8=";
   };
 
   pythonRelaxDeps = [ "google-generativeai" ];
 
   build-system = [ poetry-core ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     google-generativeai
diff --git a/pkgs/development/python-modules/llama-index-embeddings-huggingface/default.nix b/pkgs/development/python-modules/llama-index-embeddings-huggingface/default.nix
index c30cb3e72e2af..935590283d858 100644
--- a/pkgs/development/python-modules/llama-index-embeddings-huggingface/default.nix
+++ b/pkgs/development/python-modules/llama-index-embeddings-huggingface/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, llama-index-core
-, poetry-core
-, pythonOlder
-, sentence-transformers
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  llama-index-core,
+  poetry-core,
+  pythonOlder,
+  sentence-transformers,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-embeddings-huggingface";
-  version = "0.2.0";
+  version = "0.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,12 +18,10 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_embeddings_huggingface";
     inherit version;
-    hash = "sha256-3PCplFXzfE4aL91c1lyd0aRRu4aMP4DDNcTQybadAHE=";
+    hash = "sha256-eu9jJKGVdua5W/6SfDvU/BxXJe3Onya05dLu+ifAL9s=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     llama-index-core
@@ -32,9 +31,7 @@ buildPythonPackage rec {
   # Tests are only available in the mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "llama_index.embeddings.huggingface"
-  ];
+  pythonImportsCheck = [ "llama_index.embeddings.huggingface" ];
 
   meta = with lib; {
     description = "LlamaIndex Embeddings Integration for Huggingface";
diff --git a/pkgs/development/python-modules/llama-index-embeddings-ollama/default.nix b/pkgs/development/python-modules/llama-index-embeddings-ollama/default.nix
index 509bf54d2872a..3f309d4ec12d0 100644
--- a/pkgs/development/python-modules/llama-index-embeddings-ollama/default.nix
+++ b/pkgs/development/python-modules/llama-index-embeddings-ollama/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-generativeai
-, llama-index-core
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  llama-index-core,
+  ollama,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-embeddings-ollama";
-  version = "0.1.2";
+  version = "0.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -18,23 +18,20 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_embeddings_ollama";
     inherit version;
-    hash = "sha256-qeCAm93S5K2IjySVGe3H49M5x05OA/xaQMMGDcQdR6k=";
+    hash = "sha256-Wj51+hS+fisagpN0FsiAIE3JbhsdJibcW96T8CHntUA=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     llama-index-core
+    ollama
   ];
 
   # Tests are only available in the mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "llama_index.embeddings.ollama"
-  ];
+  pythonImportsCheck = [ "llama_index.embeddings.ollama" ];
 
   meta = with lib; {
     description = "LlamaIndex Llms Integration for Ollama";
diff --git a/pkgs/development/python-modules/llama-index-embeddings-openai/default.nix b/pkgs/development/python-modules/llama-index-embeddings-openai/default.nix
index 22b2b9f675789..24d78be21ef9e 100644
--- a/pkgs/development/python-modules/llama-index-embeddings-openai/default.nix
+++ b/pkgs/development/python-modules/llama-index-embeddings-openai/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "llama-index-embeddings-openai";
-  version = "0.1.9";
+  version = "0.2.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_embeddings_openai";
     inherit version;
-    hash = "sha256-D9KSsvmgrUU0p5DWN0cmvIhYUxiAh+sBgWfc8jlkOSQ=";
+    hash = "sha256-AEfdcddHBoZF7XKMKTEqqRtlu+TGFCGAA0xk38XG9ug=";
   };
 
   build-system = [ poetry-core ];
diff --git a/pkgs/development/python-modules/llama-index-graph-stores-nebula/default.nix b/pkgs/development/python-modules/llama-index-graph-stores-nebula/default.nix
index 783ace83f6560..65be86795ec7e 100644
--- a/pkgs/development/python-modules/llama-index-graph-stores-nebula/default.nix
+++ b/pkgs/development/python-modules/llama-index-graph-stores-nebula/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, llama-index-core
-, nebula3-python
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  llama-index-core,
+  nebula3-python,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-graph-stores-nebula";
-  version = "0.1.2";
+  version = "0.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,21 +18,17 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_graph_stores_nebula";
     inherit version;
-    hash = "sha256-Xb/0ogj2NlGV4MGC9Be54d/JfalT40jtAe6LOPO1u/8=";
+    hash = "sha256-yT1jxJEnBKWcsHCgBPx8Ue+wkggdL9S2havmJtSYcD4=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     llama-index-core
     nebula3-python
   ];
 
-  pythonImportsCheck = [
-    "llama_index.graph_stores.nebula"
-  ];
+  pythonImportsCheck = [ "llama_index.graph_stores.nebula" ];
 
   meta = with lib; {
     description = "LlamaIndex Graph Store Integration for Nebula";
diff --git a/pkgs/development/python-modules/llama-index-graph-stores-neo4j/default.nix b/pkgs/development/python-modules/llama-index-graph-stores-neo4j/default.nix
index bc2664e530123..62fe9f4660028 100644
--- a/pkgs/development/python-modules/llama-index-graph-stores-neo4j/default.nix
+++ b/pkgs/development/python-modules/llama-index-graph-stores-neo4j/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, neo4j
-, llama-index-core
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  neo4j,
+  llama-index-core,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-graph-stores-neo4j";
-  version = "0.1.4";
+  version = "0.3.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,21 +18,17 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_graph_stores_neo4j";
     inherit version;
-    hash = "sha256-zr3EAFuLzbQKnGPVE6BsLEtNpnfYhDq9brxWPFtQiG8=";
+    hash = "sha256-O/iTlpbREmN1tbojbaqZ7gLAN2JdKmKEzhKCnpth6S0=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     neo4j
     llama-index-core
   ];
 
-  pythonImportsCheck = [
-    "llama_index.graph_stores.neo4j"
-  ];
+  pythonImportsCheck = [ "llama_index.graph_stores.neo4j" ];
 
   meta = with lib; {
     description = "LlamaIndex Graph Store Integration for Neo4j";
diff --git a/pkgs/development/python-modules/llama-index-graph-stores-neptune/default.nix b/pkgs/development/python-modules/llama-index-graph-stores-neptune/default.nix
index 869116b58c6bf..b731a56dcbce7 100644
--- a/pkgs/development/python-modules/llama-index-graph-stores-neptune/default.nix
+++ b/pkgs/development/python-modules/llama-index-graph-stores-neptune/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, boto3
-, llama-index-core
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  boto3,
+  llama-index-core,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-graph-stores-neptune";
-  version = "0.1.3";
+  version = "0.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,21 +18,17 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_graph_stores_neptune";
     inherit version;
-    hash = "sha256-ZveFCJJT7Qal82cuVTs+3AmSuvdc7GsHqqqNvcDb3CY=";
+    hash = "sha256-dIbleh/I90xo7rYFXhCck2kfkywAYTlrawlPP0gDqIY=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     boto3
     llama-index-core
   ];
 
-  pythonImportsCheck = [
-    "llama_index.graph_stores.neptune"
-  ];
+  pythonImportsCheck = [ "llama_index.graph_stores.neptune" ];
 
   meta = with lib; {
     description = "LlamaIndex Graph Store Integration for Neptune";
diff --git a/pkgs/development/python-modules/llama-index-indices-managed-llama-cloud/default.nix b/pkgs/development/python-modules/llama-index-indices-managed-llama-cloud/default.nix
index f6eb083b391b1..5df8e8d96046c 100644
--- a/pkgs/development/python-modules/llama-index-indices-managed-llama-cloud/default.nix
+++ b/pkgs/development/python-modules/llama-index-indices-managed-llama-cloud/default.nix
@@ -3,13 +3,14 @@
   buildPythonPackage,
   fetchPypi,
   poetry-core,
+  llama-cloud,
   llama-index-core,
   pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-indices-managed-llama-cloud";
-  version = "0.1.6";
+  version = "0.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,12 +18,15 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_indices_managed_llama_cloud";
     inherit version;
-    hash = "sha256-dLOw6ev500jTBU+fwMZXAxrM65NRwxEWrY1aeuRyn1w=";
+    hash = "sha256-9ifxAtFZBfFWGFIrbsKJWM2G17mzebmXLa7YkQU0LR0=";
   };
 
   build-system = [ poetry-core ];
 
-  dependencies = [ llama-index-core ];
+  dependencies = [
+    llama-cloud
+    llama-index-core
+  ];
 
   # Tests are only available in the mono repo
   doCheck = false;
diff --git a/pkgs/development/python-modules/llama-index-legacy/default.nix b/pkgs/development/python-modules/llama-index-legacy/default.nix
index 120a210d8eeb0..f51ae416bb1d2 100644
--- a/pkgs/development/python-modules/llama-index-legacy/default.nix
+++ b/pkgs/development/python-modules/llama-index-legacy/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, llama-index-core
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  llama-index-core,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-legacy";
-  version = "0.9.48";
+  version = "0.9.48.post3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -16,16 +17,12 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_legacy";
     inherit version;
-    hash = "sha256-gt3EaR7b9JUz1lWCwkm6IsA/6W+9PpL3dY3M7yjkODQ=";
+    hash = "sha256-9pafEIXvsKvr1jZ+RvNRICDz9rnAhvRYpRmDDdYeggY=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  dependencies = [
-    llama-index-core
-  ];
+  dependencies = [ llama-index-core ];
 
   # Tests are only available in the mono repo
   doCheck = false;
diff --git a/pkgs/development/python-modules/llama-index-llms-ollama/default.nix b/pkgs/development/python-modules/llama-index-llms-ollama/default.nix
index a96b2f57c8037..27fb27b540285 100644
--- a/pkgs/development/python-modules/llama-index-llms-ollama/default.nix
+++ b/pkgs/development/python-modules/llama-index-llms-ollama/default.nix
@@ -1,14 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, llama-index-core
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  llama-index-core,
+  ollama,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-llms-ollama";
-  version = "0.1.3";
+  version = "0.3.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -16,23 +18,20 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_llms_ollama";
     inherit version;
-    hash = "sha256-x5ZlS3PRA/kyTtTFXHbEm3NzirxuUNAllu1eKxxm3sU=";
+    hash = "sha256-t0W9a3vZAEI9IttLIcza/WwjvjG/0C8jdwahejCPipw=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     llama-index-core
+    ollama
   ];
 
   # Tests are only available in the mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "llama_index.llms.ollama"
-  ];
+  pythonImportsCheck = [ "llama_index.llms.ollama" ];
 
   meta = with lib; {
     description = "LlamaIndex LLMS Integration for ollama";
diff --git a/pkgs/development/python-modules/llama-index-llms-openai-like/default.nix b/pkgs/development/python-modules/llama-index-llms-openai-like/default.nix
index ccb32689f5308..fd6b916bec0a0 100644
--- a/pkgs/development/python-modules/llama-index-llms-openai-like/default.nix
+++ b/pkgs/development/python-modules/llama-index-llms-openai-like/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, llama-index-core
-, llama-index-llms-openai
-, poetry-core
-, pythonOlder
-, transformers
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  llama-index-core,
+  llama-index-llms-openai,
+  poetry-core,
+  pythonOlder,
+  transformers,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-llms-openai-like";
-  version = "0.1.3";
+  version = "0.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,12 +19,10 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_llms_openai_like";
     inherit version;
-    hash = "sha256-w0EjJQd8dSY+N9YNUBMUub3HcPEtiisW51bn2ayPnj8=";
+    hash = "sha256-0E7r8TZadpl557DevF3dXLHLx8oXXyeWABvUPLgx7Nw=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     llama-index-core
@@ -34,9 +33,7 @@ buildPythonPackage rec {
   # Tests are only available in the mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "llama_index.llms.openai_like"
-  ];
+  pythonImportsCheck = [ "llama_index.llms.openai_like" ];
 
   meta = with lib; {
     description = "LlamaIndex LLMS Integration for OpenAI like";
diff --git a/pkgs/development/python-modules/llama-index-llms-openai/default.nix b/pkgs/development/python-modules/llama-index-llms-openai/default.nix
index 288fa1d35c4d9..8b113fe587a1e 100644
--- a/pkgs/development/python-modules/llama-index-llms-openai/default.nix
+++ b/pkgs/development/python-modules/llama-index-llms-openai/default.nix
@@ -3,13 +3,14 @@
   buildPythonPackage,
   fetchPypi,
   llama-index-core,
+  openai,
   poetry-core,
   pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-llms-openai";
-  version = "0.1.16";
+  version = "0.2.9";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,12 +18,20 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_llms_openai";
     inherit version;
-    hash = "sha256-MTu8F8JBmSQwpr9oahse3EJ2yCVq1rBVCqG+oeD+0aY=";
+    hash = "sha256-VjdvOeOkAlO1xPuQ0Ptq8JPyG7KTWSVhXwwooo0CgYc=";
   };
 
+  pythonRemoveDeps = [
+    # Circular dependency
+    "llama-index-agent-openai"
+  ];
+
   build-system = [ poetry-core ];
 
-  dependencies = [ llama-index-core ];
+  dependencies = [
+    llama-index-core
+    openai
+  ];
 
   # Tests are only available in the mono repo
   doCheck = false;
diff --git a/pkgs/development/python-modules/llama-index-multi-modal-llms-openai/default.nix b/pkgs/development/python-modules/llama-index-multi-modal-llms-openai/default.nix
index 389f2c6fe763f..aa71aea79b97d 100644
--- a/pkgs/development/python-modules/llama-index-multi-modal-llms-openai/default.nix
+++ b/pkgs/development/python-modules/llama-index-multi-modal-llms-openai/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "llama-index-multi-modal-llms-openai";
-  version = "0.1.5";
+  version = "0.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_multi_modal_llms_openai";
     inherit version;
-    hash = "sha256-miN/T4htHiDCfpST6As+H4dThZSB/xtY/iW3qjmxmKI=";
+    hash = "sha256-G1vmkdX6KGH9S1oHGIPclNgts+HH/2hthN2EBIo1THs=";
   };
 
   build-system = [ poetry-core ];
diff --git a/pkgs/development/python-modules/llama-index-program-openai/default.nix b/pkgs/development/python-modules/llama-index-program-openai/default.nix
index 4f8ca5ae68c99..62b9f6c2527f3 100644
--- a/pkgs/development/python-modules/llama-index-program-openai/default.nix
+++ b/pkgs/development/python-modules/llama-index-program-openai/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, llama-index-agent-openai
-, llama-index-core
-, llama-index-llms-openai
-, poetry-core
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  llama-index-agent-openai,
+  llama-index-core,
+  llama-index-llms-openai,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-program-openai";
-  version = "0.1.6";
+  version = "0.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,20 +19,13 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_program_openai";
     inherit version;
-    hash = "sha256-xqSYDF6oJgiLKLTe4zZ+2yAiHm0F6w4FAZBJGQEx13I=";
+    hash = "sha256-QTmTVUHAESV/v+uWYrO/Eje3Ke9LHI9N31tnidI3SsQ=";
   };
 
-  pythonRelaxDeps = [
-    "llama-index-agent-openai"
-  ];
+  pythonRelaxDeps = [ "llama-index-agent-openai" ];
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   dependencies = [
     llama-index-agent-openai
@@ -40,9 +33,7 @@ buildPythonPackage rec {
     llama-index-llms-openai
   ];
 
-  pythonImportsCheck = [
-    "llama_index.program.openai"
-  ];
+  pythonImportsCheck = [ "llama_index.program.openai" ];
 
   meta = with lib; {
     description = "LlamaIndex Program Integration for OpenAI";
diff --git a/pkgs/development/python-modules/llama-index-question-gen-openai/default.nix b/pkgs/development/python-modules/llama-index-question-gen-openai/default.nix
index aa302019772a5..7f7615953bba0 100644
--- a/pkgs/development/python-modules/llama-index-question-gen-openai/default.nix
+++ b/pkgs/development/python-modules/llama-index-question-gen-openai/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, llama-index-core
-, llama-index-llms-openai
-, llama-index-program-openai
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  llama-index-core,
+  llama-index-llms-openai,
+  llama-index-program-openai,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-question-gen-openai";
-  version = "0.1.3";
+  version = "0.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,12 +19,10 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_question_gen_openai";
     inherit version;
-    hash = "sha256-RIYZgRekVFfS4DauYLk69YBSiTzH14+ptvR91HuB4uE=";
+    hash = "sha256-Pd4c7L1lEABjnCADHX6iMzQnaquxgcrED/Qk814QRl4=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     llama-index-core
@@ -34,9 +33,7 @@ buildPythonPackage rec {
   # Tests are only available in the mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "llama_index.question_gen.openai"
-  ];
+  pythonImportsCheck = [ "llama_index.question_gen.openai" ];
 
   meta = with lib; {
     description = "LlamaIndex Question Gen Integration for Openai Generator";
diff --git a/pkgs/development/python-modules/llama-index-readers-database/default.nix b/pkgs/development/python-modules/llama-index-readers-database/default.nix
index 7b01a5738bbb9..b77afe7b8dda8 100644
--- a/pkgs/development/python-modules/llama-index-readers-database/default.nix
+++ b/pkgs/development/python-modules/llama-index-readers-database/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchPypi
-, llama-index-core
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  llama-index-core,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-readers-database";
-  version = "0.1.3";
+  version = "0.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,23 +17,17 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_readers_database";
     inherit version;
-    hash = "sha256-1J6FE6iID4U9cEcPPUK5CvCTmbgVWxI4AFLrx+gPGWg=";
+    hash = "sha256-/hI/3lCo0RpJ1yLJDFrnuQ565WoQQm9Sw7Sr4qp1fa0=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  dependencies = [
-    llama-index-core
-  ];
+  dependencies = [ llama-index-core ];
 
   # Tests are only available in the mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "llama_index.readers.database"
-  ];
+  pythonImportsCheck = [ "llama_index.readers.database" ];
 
   meta = with lib; {
     description = "LlamaIndex Readers Integration for Databases";
diff --git a/pkgs/development/python-modules/llama-index-readers-file/default.nix b/pkgs/development/python-modules/llama-index-readers-file/default.nix
index 999fb90408800..e25ec90e1fef6 100644
--- a/pkgs/development/python-modules/llama-index-readers-file/default.nix
+++ b/pkgs/development/python-modules/llama-index-readers-file/default.nix
@@ -8,13 +8,12 @@
   pymupdf,
   pypdf,
   pythonOlder,
-  pythonRelaxDepsHook,
   striprtf,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-readers-file";
-  version = "0.1.19";
+  version = "0.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -22,7 +21,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_readers_file";
     inherit version;
-    hash = "sha256-GUwbm4XCZRWbcwLH2ArbqTeqsG8FwXCvf9lcTnqK7DU=";
+    hash = "sha256-x/kgdISfxZsQBJ1JakrlJmmr/LFZoZnZoROFKi/tcLg=";
   };
 
   pythonRelaxDeps = [
@@ -32,7 +31,6 @@ buildPythonPackage rec {
 
   build-system = [ poetry-core ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     beautifulsoup4
diff --git a/pkgs/development/python-modules/llama-index-readers-json/default.nix b/pkgs/development/python-modules/llama-index-readers-json/default.nix
index 4b1d670818b68..0fcc1da35ef2b 100644
--- a/pkgs/development/python-modules/llama-index-readers-json/default.nix
+++ b/pkgs/development/python-modules/llama-index-readers-json/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, llama-index-core
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  llama-index-core,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-readers-json";
-  version = "0.1.5";
+  version = "0.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -16,23 +17,17 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_readers_json";
     inherit version;
-    hash = "sha256-H+CG+2FtoOF/DUG6EuAWzY2xe1upLX0pakVutJTZFE0=";
+    hash = "sha256-Sxya3Iw75sl6mGmKvRMe9Y8bIWh4cfXQPYbCyAvhnvU=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  dependencies = [
-    llama-index-core
-  ];
+  dependencies = [ llama-index-core ];
 
   # Tests are only available in the mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "llama_index.readers.json"
-  ];
+  pythonImportsCheck = [ "llama_index.readers.json" ];
 
   meta = with lib; {
     description = "LlamaIndex Readers Integration for Json";
diff --git a/pkgs/development/python-modules/llama-index-readers-llama-parse/default.nix b/pkgs/development/python-modules/llama-index-readers-llama-parse/default.nix
index e24f0d850a9dc..b9a879047a542 100644
--- a/pkgs/development/python-modules/llama-index-readers-llama-parse/default.nix
+++ b/pkgs/development/python-modules/llama-index-readers-llama-parse/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, llama-index-core
-, llama-parse
-, poetry-core
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  llama-index-core,
+  llama-parse,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-readers-llama-parse";
-  version = "0.1.4";
+  version = "0.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,16 +18,13 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_readers_llama_parse";
     inherit version;
-    hash = "sha256-eGCLGTyBiJSu/u4KowPwK3+A8uTK8Thmwv07CxAj4sA=";
+    hash = "sha256-pf6toIlXFNzEHWXdUSwcOM9w2K4ZlHz/grgNWOaqNn4=";
   };
 
-  pythonRelaxDeps = [
-    "llama-parse"
-  ];
+  pythonRelaxDeps = [ "llama-parse" ];
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -38,9 +35,7 @@ buildPythonPackage rec {
   # Tests are only available in the mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "llama_index.readers.llama_parse"
-  ];
+  pythonImportsCheck = [ "llama_index.readers.llama_parse" ];
 
   meta = with lib; {
     description = "LlamaIndex Readers Integration for files";
diff --git a/pkgs/development/python-modules/llama-index-readers-s3/default.nix b/pkgs/development/python-modules/llama-index-readers-s3/default.nix
index b43eb933ff780..3b0f5cb2c0ced 100644
--- a/pkgs/development/python-modules/llama-index-readers-s3/default.nix
+++ b/pkgs/development/python-modules/llama-index-readers-s3/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "llama-index-readers-s3";
-  version = "0.1.7";
+  version = "0.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_readers_s3";
     inherit version;
-    hash = "sha256-xj7uRsc56Wv/SF4OPo/jc+43PabJ4vaM5HcxhnxTzY8=";
+    hash = "sha256-BXld0+j4UpwUFtkjkmfn3CwxMQoCZFj84D4R3Rr2jso=";
   };
 
   build-system = [ poetry-core ];
diff --git a/pkgs/development/python-modules/llama-index-readers-twitter/default.nix b/pkgs/development/python-modules/llama-index-readers-twitter/default.nix
index 88ffcd410bf94..51bc5d5499768 100644
--- a/pkgs/development/python-modules/llama-index-readers-twitter/default.nix
+++ b/pkgs/development/python-modules/llama-index-readers-twitter/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchPypi
-, llama-index-core
-, poetry-core
-, pythonOlder
-, tweepy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  llama-index-core,
+  poetry-core,
+  pythonOlder,
+  tweepy,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-readers-twitter";
-  version = "0.1.3";
+  version = "0.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,12 +18,10 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_readers_twitter";
     inherit version;
-    hash = "sha256-ZPwluiPdSkwMZ3JQy/HHhR7erYhUE9BWtplkfHk+TK8=";
+    hash = "sha256-1bxg/tbv5NrMezm9OQUojiQGutv+yhWY4gkeUXb4z2o=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     llama-index-core
@@ -33,9 +31,7 @@ buildPythonPackage rec {
   # Tests are only available in the mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "llama_index.readers.twitter"
-  ];
+  pythonImportsCheck = [ "llama_index.readers.twitter" ];
 
   meta = with lib; {
     description = "LlamaIndex Readers Integration for Twitter";
diff --git a/pkgs/development/python-modules/llama-index-readers-txtai/default.nix b/pkgs/development/python-modules/llama-index-readers-txtai/default.nix
index 787026f8fc4b2..6cf4a9fb87f4a 100644
--- a/pkgs/development/python-modules/llama-index-readers-txtai/default.nix
+++ b/pkgs/development/python-modules/llama-index-readers-txtai/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, llama-index-core
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  llama-index-core,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-readers-txtai";
-  version = "0.1.2";
+  version = "0.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -16,23 +17,17 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_readers_txtai";
     inherit version;
-    hash = "sha256-F1P3/ZICFDTqowpqu0AF2RIKfLTH9Phuw0O+VsHpI4U=";
+    hash = "sha256-jaCg3TeMkBKHtZRxpa5KrQb+uGP95qN1nWtrE08Oq98=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  dependencies = [
-    llama-index-core
-  ];
+  dependencies = [ llama-index-core ];
 
   # Tests are only available in the mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "llama_index.readers.txtai"
-  ];
+  pythonImportsCheck = [ "llama_index.readers.txtai" ];
 
   meta = with lib; {
     description = "LlamaIndex Readers Integration for txtai";
diff --git a/pkgs/development/python-modules/llama-index-readers-weather/default.nix b/pkgs/development/python-modules/llama-index-readers-weather/default.nix
index 1778322d63b49..1eee073053bd1 100644
--- a/pkgs/development/python-modules/llama-index-readers-weather/default.nix
+++ b/pkgs/development/python-modules/llama-index-readers-weather/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, llama-index-core
-, poetry-core
-, pyowm
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  llama-index-core,
+  poetry-core,
+  pyowm,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-readers-weather";
-  version = "0.1.3";
+  version = "0.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,28 +19,22 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_readers_weather";
     inherit version;
-    hash = "sha256-LJy2nU9f+yZZQm9stNn9mIqOkT5lOHaMIIm1Ezf2D0Q=";
+    hash = "sha256-m4EaV14tcH2I5veHdgGjBloKKAShJqsJGS9Ci8xRnMg=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     llama-index-core
     pyowm
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Tests are only available in the mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "llama_index.readers.weather"
-  ];
+  pythonImportsCheck = [ "llama_index.readers.weather" ];
 
   meta = with lib; {
     description = "LlamaIndex Readers Integration for Weather";
diff --git a/pkgs/development/python-modules/llama-index-vector-stores-chroma/default.nix b/pkgs/development/python-modules/llama-index-vector-stores-chroma/default.nix
index 73c20444860c5..6ab0835a135c0 100644
--- a/pkgs/development/python-modules/llama-index-vector-stores-chroma/default.nix
+++ b/pkgs/development/python-modules/llama-index-vector-stores-chroma/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, chromadb
-, fetchPypi
-, llama-index-core
-, pythonOlder
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  chromadb,
+  fetchPypi,
+  llama-index-core,
+  pythonOlder,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-vector-stores-chroma";
-  version = "0.1.7";
+  version = "0.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,21 +18,17 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_vector_stores_chroma";
     inherit version;
-    hash = "sha256-E7DXWubBvMhru31XmNva6iPm2adJKmmt5pFqKZ8fquk=";
+    hash = "sha256-n6fGNgXB4pbhea1e5QT0Co/sVnd8r3L5+pVCut5U2Uw=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     chromadb
     llama-index-core
   ];
 
-  pythonImportsCheck = [
-    "llama_index.vector_stores.chroma"
-  ];
+  pythonImportsCheck = [ "llama_index.vector_stores.chroma" ];
 
   meta = with lib; {
     description = "LlamaIndex Vector Store Integration for Chroma";
diff --git a/pkgs/development/python-modules/llama-index-vector-stores-google/default.nix b/pkgs/development/python-modules/llama-index-vector-stores-google/default.nix
index 419357ea30b9a..aea4617dc9925 100644
--- a/pkgs/development/python-modules/llama-index-vector-stores-google/default.nix
+++ b/pkgs/development/python-modules/llama-index-vector-stores-google/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-generativeai
-, llama-index-core
-, poetry-core
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-generativeai,
+  llama-index-core,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-vector-stores-google";
-  version = "0.1.5";
+  version = "0.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,16 +18,13 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_vector_stores_google";
     inherit version;
-    hash = "sha256-E6RNf2DzktoZW89P0VKfmeZ5SEslGkyFLRxVtnsQOYc=";
+    hash = "sha256-7BEgRLkhyCo0z3puoWcFRqa+xG6vQdkKFWvr9oz6xs4=";
   };
 
-  pythonRelaxDeps = [
-    "google-generativeai"
-  ];
+  pythonRelaxDeps = [ "google-generativeai" ];
 
   build-system = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   dependencies = [
@@ -35,9 +32,7 @@ buildPythonPackage rec {
     llama-index-core
   ];
 
-  pythonImportsCheck = [
-    "llama_index.vector_stores.google"
-  ];
+  pythonImportsCheck = [ "llama_index.vector_stores.google" ];
 
   meta = with lib; {
     description = "LlamaIndex Vector Store Integration for Google";
diff --git a/pkgs/development/python-modules/llama-index-vector-stores-postgres/default.nix b/pkgs/development/python-modules/llama-index-vector-stores-postgres/default.nix
index 15fcab2b3123c..9a93709fb11ca 100644
--- a/pkgs/development/python-modules/llama-index-vector-stores-postgres/default.nix
+++ b/pkgs/development/python-modules/llama-index-vector-stores-postgres/default.nix
@@ -7,13 +7,12 @@
   pgvector,
   poetry-core,
   psycopg2,
-  pythonRelaxDepsHook,
   pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-vector-stores-postgres";
-  version = "0.1.7";
+  version = "0.2.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,14 +20,13 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_vector_stores_postgres";
     inherit version;
-    hash = "sha256-00ccEfjYY8qrNYymHQ5w43w8zAHUAntO6oiwYUwaOVw=";
+    hash = "sha256-JLJygIsklBM9B3mOeQP8fu6YuHo104rvJKNj83eAQc4=";
   };
 
   pythonRemoveDeps = [ "psycopg2-binary" ];
 
   build-system = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   dependencies = [
diff --git a/pkgs/development/python-modules/llama-index-vector-stores-qdrant/default.nix b/pkgs/development/python-modules/llama-index-vector-stores-qdrant/default.nix
index 0f9459ac2d003..b45bfd7c0bd53 100644
--- a/pkgs/development/python-modules/llama-index-vector-stores-qdrant/default.nix
+++ b/pkgs/development/python-modules/llama-index-vector-stores-qdrant/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "llama-index-vector-stores-qdrant";
-  version = "0.2.8";
+  version = "0.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_vector_stores_qdrant";
     inherit version;
-    hash = "sha256-qeKV7jlBTujUEYMcPCS+PAD6xRlTBVi/DGJZ/MSN64A=";
+    hash = "sha256-mWY86wyS3aVd+cBhY8pCvn6w86Z0AdWrjOlz987Wg6I=";
   };
 
   build-system = [ poetry-core ];
diff --git a/pkgs/development/python-modules/llama-index/default.nix b/pkgs/development/python-modules/llama-index/default.nix
index 4e269039722fb..e8bc753eb2739 100644
--- a/pkgs/development/python-modules/llama-index/default.nix
+++ b/pkgs/development/python-modules/llama-index/default.nix
@@ -1,32 +1,34 @@
-{ lib
-, buildPythonPackage
-, llama-index-agent-openai
-, llama-index-cli
-, llama-index-core
-, llama-index-embeddings-openai
-, llama-index-indices-managed-llama-cloud
-, llama-index-legacy
-, llama-index-llms-openai
-, llama-index-multi-modal-llms-openai
-, llama-index-program-openai
-, llama-index-question-gen-openai
-, llama-index-readers-file
-, llama-index-readers-llama-parse
-, poetry-core
+{
+  buildPythonPackage,
+  poetry-core,
+  llama-index-agent-openai,
+  llama-index-cli,
+  llama-index-core,
+  llama-index-embeddings-openai,
+  llama-index-indices-managed-llama-cloud,
+  llama-index-legacy,
+  llama-index-llms-openai,
+  llama-index-multi-modal-llms-openai,
+  llama-index-program-openai,
+  llama-index-question-gen-openai,
+  llama-index-readers-file,
+  llama-index-readers-llama-parse,
 }:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "llama-index";
 
   inherit (llama-index-core) version src meta;
 
   pyproject = true;
 
-  nativeBuildInputs = [
-    poetry-core
+  build-system = [ poetry-core ];
+
+  pythonRelaxDeps = [
+    "llama-index-core"
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     llama-index-agent-openai
     llama-index-cli
     llama-index-core
@@ -41,7 +43,5 @@ buildPythonPackage rec {
     llama-index-readers-llama-parse
   ];
 
-  pythonImportsCheck = [
-    "llama_index"
-  ];
+  pythonImportsCheck = [ "llama_index" ];
 }
diff --git a/pkgs/development/python-modules/llama-parse/default.nix b/pkgs/development/python-modules/llama-parse/default.nix
index 1f6183df9ae34..9026edb15344c 100644
--- a/pkgs/development/python-modules/llama-parse/default.nix
+++ b/pkgs/development/python-modules/llama-parse/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, llama-index-core
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  llama-index-core,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-parse";
-  version = "0.4.2";
+  version = "0.5.6";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -16,20 +17,14 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_parse";
     inherit version;
-    hash = "sha256-+gTAlzCxAhVfZQXenPkZmMhtM0WB8PEll8XrR8pduFk=";
+    hash = "sha256-PHTaEkbJvdYdY7f8ISBA6i29IY1H/JhqGOOXTmRZG4A=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  dependencies = [
-    llama-index-core
-  ];
+  dependencies = [ llama-index-core ];
 
-  pythonImportsCheck = [
-    "llama_parse"
-  ];
+  pythonImportsCheck = [ "llama_parse" ];
 
   meta = with lib; {
     description = "Parse files into RAG-Optimized formats";
diff --git a/pkgs/development/python-modules/llfuse/default.nix b/pkgs/development/python-modules/llfuse/default.nix
index 5e1ce47bdc670..a110a8082c143 100644
--- a/pkgs/development/python-modules/llfuse/default.nix
+++ b/pkgs/development/python-modules/llfuse/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, cython
-, fuse
-, pkg-config
-, pytestCheckHook
-, python
-, setuptools
-, which
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  cython,
+  fuse,
+  pkg-config,
+  pytestCheckHook,
+  python,
+  setuptools,
+  which,
 }:
 
 buildPythonPackage rec {
   pname = "llfuse";
-  version = "1.5.0";
+  version = "1.5.1";
 
   format = "pyproject";
 
@@ -24,10 +25,14 @@ buildPythonPackage rec {
     owner = "python-llfuse";
     repo = "python-llfuse";
     rev = "refs/tags/release-${version}";
-    hash = "sha256-6/iW5eHmX6ODVPLFkOo3bN9yW8ixqy2MHwQ2r9FA0iI=";
+    hash = "sha256-wni/b1hEn6/G0RszCJi+wmBHx6F0Ov1cZ/sRf8PLmps=";
   };
 
-  nativeBuildInputs = [ cython pkg-config setuptools ];
+  nativeBuildInputs = [
+    cython
+    pkg-config
+    setuptools
+  ];
 
   buildInputs = [ fuse ];
 
@@ -41,8 +46,11 @@ buildPythonPackage rec {
   '';
 
   # On Darwin, the test requires macFUSE to be installed outside of Nix.
-  doCheck = !stdenv.isDarwin;
-  nativeCheckInputs = [ pytestCheckHook which ];
+  doCheck = !stdenv.hostPlatform.isDarwin;
+  nativeCheckInputs = [
+    pytestCheckHook
+    which
+  ];
 
   disabledTests = [
     "test_listdir" # accesses /usr/bin
@@ -54,6 +62,9 @@ buildPythonPackage rec {
     changelog = "https://github.com/python-llfuse/python-llfuse/raw/release-${version}/Changes.rst";
     license = licenses.lgpl2Plus;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ bjornfor dotlambda ];
+    maintainers = with maintainers; [
+      bjornfor
+      dotlambda
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/llm/default.nix b/pkgs/development/python-modules/llm/default.nix
index 5626da5e3858e..bd5a3e34a4a4e 100644
--- a/pkgs/development/python-modules/llm/default.nix
+++ b/pkgs/development/python-modules/llm/default.nix
@@ -1,38 +1,47 @@
-{ lib
-, buildPythonApplication
-, buildPythonPackage
-, fetchFromGitHub
-, makeWrapper
-, pytestCheckHook
-, python3
-, pythonOlder
-, ruff
-, setuptools
+{
+  lib,
+  buildPythonApplication,
+  buildPythonPackage,
+  fetchFromGitHub,
+  makeWrapper,
+  pytestCheckHook,
+  python,
+  pythonOlder,
+  ruff,
+  setuptools,
+  click-default-group,
+  numpy,
+  openai,
+  pip,
+  pluggy,
+  pydantic,
+  python-ulid,
+  pyyaml,
+  sqlite-migrate,
+  cogapp,
+  pytest-httpx,
+  sqlite-utils,
 }:
 let
   llm = buildPythonPackage rec {
     pname = "llm";
-    version = "0.13.1";
+    version = "0.16";
     pyproject = true;
 
+    build-system = [ setuptools ];
+
     disabled = pythonOlder "3.8";
 
     src = fetchFromGitHub {
       owner = "simonw";
       repo = "llm";
       rev = "refs/tags/${version}";
-      hash = "sha256-Nq6pduzl8IK+nA3pctst/W4ux7+P6mBFTEHMF+vtBQw=";
+      hash = "sha256-ew8080Lv1ObjUaGicaGrj8IXXA7rtdgcWhp41O8gfVE=";
     };
 
-    patches = [
-      ./001-disable-install-uninstall-commands.patch
-    ];
-
-    nativeBuildInputs = [
-      setuptools
-    ];
+    patches = [ ./001-disable-install-uninstall-commands.patch ];
 
-    propagatedBuildInputs = with python3.pkgs; [
+    dependencies = [
       click-default-group
       numpy
       openai
@@ -46,7 +55,7 @@ let
       sqlite-utils
     ];
 
-    nativeCheckInputs = with python3.pkgs; [
+    nativeCheckInputs = [
       cogapp
       numpy
       pytest-httpx
@@ -60,11 +69,11 @@ let
       "tests/"
     ];
 
-    pythonImportsCheck = [
-      "llm"
-    ];
+    pythonImportsCheck = [ "llm" ];
 
-    passthru = {inherit withPlugins;};
+    passthru = {
+      inherit withPlugins;
+    };
 
     meta = with lib; {
       homepage = "https://github.com/simonw/llm";
@@ -72,37 +81,18 @@ let
       changelog = "https://github.com/simonw/llm/releases/tag/${version}";
       license = licenses.asl20;
       mainProgram = "llm";
-      maintainers = with maintainers; [aldoborrero];
+      maintainers = with maintainers; [
+        aldoborrero
+        mccartykim
+      ];
     };
   };
 
-  withPlugins = plugins: buildPythonApplication {
-    inherit (llm) pname version;
-    format = "other";
-
-    disabled = pythonOlder "3.8";
-
-    dontUnpack = true;
-    dontBuild = true;
-    doCheck = false;
-
-    nativeBuildInputs = [
-      makeWrapper
-    ];
-
-    installPhase = ''
-      makeWrapper ${llm}/bin/llm $out/bin/llm \
-        --prefix PYTHONPATH : "${llm}/${python3.sitePackages}:$PYTHONPATH"
-      ln -sfv ${llm}/lib $out/lib
-    '';
+  withPlugins = throw ''
+    llm.withPlugins was confusing to use and has been removed.
+    Please migrate to using python3.withPackages(ps: [ ps.llm ]) instead.
 
-    propagatedBuildInputs = llm.propagatedBuildInputs ++ plugins;
-
-    passthru = llm.passthru // {
-      withPlugins = morePlugins: withPlugins (morePlugins ++ plugins);
-    };
-
-    inherit (llm) meta;
-  };
+    See https://nixos.org/manual/nixpkgs/stable/#python.withpackages-function for more usage examples.
+  '';
 in
-  llm
+llm
diff --git a/pkgs/development/python-modules/llmx/default.nix b/pkgs/development/python-modules/llmx/default.nix
new file mode 100644
index 0000000000000..d5ddcfdaec425
--- /dev/null
+++ b/pkgs/development/python-modules/llmx/default.nix
@@ -0,0 +1,73 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  setuptools,
+  pythonOlder,
+  pydantic,
+  openai,
+  tiktoken,
+  diskcache,
+  cohere,
+  google-auth,
+  typer,
+  pyyaml,
+  transformers,
+  fastapi,
+  uvicorn,
+  accelerate,
+}:
+
+buildPythonPackage rec {
+  pname = "llmx";
+  version = "0.0.21a0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-OEo6wIaDTktzAsP0rOmhxjFSHygTR/EpcRI6AXsu+6M=";
+  };
+
+  disabled = pythonOlder "3.9";
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    pydantic
+    openai
+    tiktoken
+    diskcache
+    cohere
+    google-auth
+    typer
+    pyyaml
+  ];
+
+  passthru.optional-dependencies = {
+    web = [
+      fastapi
+      uvicorn
+    ];
+    transformers = [
+      accelerate
+      transformers
+    ] ++ transformers.optional-dependencies.torch;
+  };
+
+  # Tests of llmx try to access openai, google, etc.
+  doCheck = false;
+
+  pythonImportsCheck = [ "llmx" ];
+
+  meta = with lib; {
+    description = "Library for LLM Text Generation";
+    homepage = "https://github.com/victordibia/llmx";
+    mainProgram = "llmx";
+    license = licenses.mit;
+    maintainers = with maintainers; [ moraxyc ];
+  };
+}
diff --git a/pkgs/development/python-modules/llvmlite/default.nix b/pkgs/development/python-modules/llvmlite/default.nix
index fb4856989564d..19941cd4b4a31 100644
--- a/pkgs/development/python-modules/llvmlite/default.nix
+++ b/pkgs/development/python-modules/llvmlite/default.nix
@@ -1,21 +1,24 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, buildPythonPackage
-, isPyPy
-, pythonAtLeast
-
-# build-system
-, llvm
-, setuptools
-
-# tests
-, python
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  buildPythonPackage,
+  isPyPy,
+  pythonAtLeast,
+
+  setuptools,
+
+  # tests
+  pytestCheckHook,
+  llvm,
+  libxml2,
+
+  withStaticLLVM ? true,
 }:
 
 buildPythonPackage rec {
   pname = "llvmlite";
-  version = "0.42.0";
+  version = "0.43.0";
   pyproject = true;
 
   disabled = isPyPy || pythonAtLeast "3.13";
@@ -24,42 +27,36 @@ buildPythonPackage rec {
     owner = "numba";
     repo = "llvmlite";
     rev = "refs/tags/v${version}";
-    hash = "sha256-vN2npyAyN6C340l69YSRtRJrAe4EHSqh4SCgWfeSQaQ=";
+    hash = "sha256-5QBSRDb28Bui9IOhGofj+c7Rk7J5fNv5nPksEPY/O5o=";
   };
 
-  nativeBuildInputs = [
-    llvm
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  # Disable static linking
-  # https://github.com/numba/llvmlite/issues/93
-  postPatch = ''
-    substituteInPlace ffi/Makefile.linux --replace "-static-libstdc++" ""
+  buildInputs = [ llvm ] ++ lib.optionals withStaticLLVM [ libxml2.dev ];
 
-    substituteInPlace llvmlite/tests/test_binding.py --replace "test_linux" "nope"
+  postPatch = lib.optionalString withStaticLLVM ''
+    substituteInPlace ffi/build.py --replace-fail "--system-libs --libs all" "--system-libs --libs --link-static all"
   '';
 
   # Set directory containing llvm-config binary
-  preConfigure = ''
-    export LLVM_CONFIG=${llvm.dev}/bin/llvm-config
-  '';
+  env.LLVM_CONFIG = "${llvm.dev}/bin/llvm-config";
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  checkPhase = ''
-    runHook preCheck
-    ${python.executable} runtests.py
-    runHook postCheck
+  # https://github.com/NixOS/nixpkgs/issues/255262
+  preCheck = ''
+    cd $out
   '';
 
-  __impureHostDeps = lib.optionals stdenv.isDarwin [ "/usr/lib/libm.dylib" ];
+  __impureHostDeps = lib.optionals stdenv.hostPlatform.isDarwin [ "/usr/lib/libm.dylib" ];
 
-  passthru.llvm = llvm;
+  passthru = lib.optionalAttrs (!withStaticLLVM) { inherit llvm; };
 
-  meta = with lib; {
+  meta = {
     changelog = "https://github.com/numba/llvmlite/blob/v${version}/CHANGE_LOG";
-    description = "A lightweight LLVM python binding for writing JIT compilers";
+    description = "Lightweight LLVM python binding for writing JIT compilers";
     downloadPage = "https://github.com/numba/llvmlite";
     homepage = "http://llvmlite.pydata.org/";
-    license = licenses.bsd2;
+    license = lib.licenses.bsd2;
   };
 }
diff --git a/pkgs/development/python-modules/lm-format-enforcer/default.nix b/pkgs/development/python-modules/lm-format-enforcer/default.nix
new file mode 100644
index 0000000000000..f615bea4926ce
--- /dev/null
+++ b/pkgs/development/python-modules/lm-format-enforcer/default.nix
@@ -0,0 +1,42 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pydantic,
+  interegular,
+  pyyaml,
+  poetry-core,
+}:
+
+buildPythonPackage rec {
+  pname = "lm-format-enforcer";
+  version = "0.10.7";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "noamgat";
+    repo = pname;
+    rev = "refs/tags/v${version}";
+    hash = "sha256-25/qnSKBXbyAnasNYuv+LV2U2KLipKtH6B+wXlH6eRs=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    interegular
+    pydantic
+    pyyaml
+  ];
+
+  doCheck = false; # most tests require internet access
+
+  pythonImportsCheck = [ "lmformatenforcer" ];
+
+  meta = with lib; {
+    description = "Enforce the output format (JSON Schema, Regex etc) of a language model";
+    changelog = "https://github.com/noamgat/lm-format-enforcer/releases/tag/v${version}";
+    homepage = "https://github.com/noamgat/lm-format-enforcer";
+    license = licenses.mit;
+    maintainers = with maintainers; [ cfhammill ];
+  };
+}
diff --git a/pkgs/development/python-modules/lmcloud/default.nix b/pkgs/development/python-modules/lmcloud/default.nix
index cf98928e32acc..ce50a769ced9c 100644
--- a/pkgs/development/python-modules/lmcloud/default.nix
+++ b/pkgs/development/python-modules/lmcloud/default.nix
@@ -5,23 +5,26 @@
   buildPythonPackage,
   fetchFromGitHub,
   httpx,
+  pytest-asyncio,
+  pytestCheckHook,
   pythonOlder,
   setuptools,
+  syrupy,
   websockets,
 }:
 
 buildPythonPackage rec {
   pname = "lmcloud";
-  version = "1.1.10";
+  version = "1.2.3";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "zweckj";
-    repo = "lmcloud";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-oPUZ5EAvFhzMfAK5rbiy8O10FTSseWj7JHCZvZ/7PG4=";
+    repo = "pylamarzocco";
+    rev = "refs/tags/v.${version}";
+    hash = "sha256-iRxn4xAP5b/2byeWbYm6mQwAu1TUmJgOVEqm/bZT9Xw=";
   };
 
   build-system = [ setuptools ];
@@ -33,15 +36,18 @@ buildPythonPackage rec {
     websockets
   ];
 
-  # Module has no tests
-  doCheck = false;
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
+    syrupy
+  ];
 
   pythonImportsCheck = [ "lmcloud" ];
 
   meta = with lib; {
     description = "Library to interface with La Marzocco's cloud";
-    homepage = "https://github.com/zweckj/lmcloud";
-    changelog = "https://github.com/zweckj/lmcloud/releases/tag/v${version}";
+    homepage = "https://github.com/zweckj/pylamarzocco";
+    changelog = "https://github.com/zweckj/pylamarzocco/releases/tag/v.${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/lmdb/default.nix b/pkgs/development/python-modules/lmdb/default.nix
index 3f145ed367e6b..35ceedccd0d88 100644
--- a/pkgs/development/python-modules/lmdb/default.nix
+++ b/pkgs/development/python-modules/lmdb/default.nix
@@ -1,40 +1,42 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, cffi
-, lmdb
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  cffi,
+  lmdb,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "lmdb";
-  version = "1.4.1";
+  version = "1.5.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-H0x2ryTpB1k0h8kE7166GZO+s47Tha+CrbJahY8tZY0=";
+    hash = "sha256-cXwlWCfTMeAvckK0QFGqBkZskPbXMuywezHt+x4Gxno=";
   };
 
-  buildInputs = [
-    lmdb
-  ];
+  buildInputs = [ lmdb ];
 
   nativeCheckInputs = [
     cffi
     pytestCheckHook
   ];
 
-  LMDB_FORCE_SYSTEM=1;
+  LMDB_FORCE_SYSTEM = 1;
 
   meta = with lib; {
     description = "Universal Python binding for the LMDB 'Lightning' Database";
     homepage = "https://github.com/dw/py-lmdb";
     changelog = "https://github.com/jnwatson/py-lmdb/blob/py-lmdb_${version}/ChangeLog";
     license = licenses.openldap;
-    maintainers = with maintainers; [ copumpkin ivan ];
+    maintainers = with maintainers; [
+      copumpkin
+      ivan
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/lmfit/default.nix b/pkgs/development/python-modules/lmfit/default.nix
index d96eb4d4c9adc..16046208ea9ae 100644
--- a/pkgs/development/python-modules/lmfit/default.nix
+++ b/pkgs/development/python-modules/lmfit/default.nix
@@ -1,60 +1,64 @@
-{ lib,
+{
+  lib,
   buildPythonPackage,
-  fetchPypi,
-  setuptools,
-  setuptools-scm,
   asteval,
+  dill,
+  fetchPypi,
+  matplotlib,
   numpy,
+  pandas,
+  pytestCheckHook,
+  pythonOlder,
   scipy,
+  setuptools-scm,
+  setuptools,
   uncertainties,
-  pytestCheckHook,
-  pandas,
-  matplotlib,
 }:
 
 buildPythonPackage rec {
   pname = "lmfit";
-  version = "1.2.2";
+  version = "1.3.2";
+  pyproject = true;
 
-  format = "pyproject";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-BEoFKhGmHaBXYnRQTBfrfigDtBEo4lgh6WYyIH8jyIw=";
+    hash = "sha256-Mb7q4fAnwbjBTc1/LoSIqAt1+zied/ymd1Sb3C/ll7s=";
   };
 
   postPatch = ''
-    substituteInPlace setup.cfg --replace "--cov=lmfit --cov-report html" ""
+    substituteInPlace pyproject.toml \
+      --replace-fail "--cov=lmfit --cov-report html" ""
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     asteval
+    dill
     numpy
     scipy
     uncertainties
   ];
 
   nativeCheckInputs = [
-    pytestCheckHook
-    pandas
     matplotlib
+    pandas
+    pytestCheckHook
   ];
 
-  disabledTests = [
-    # https://github.com/lmfit/lmfit-py/issues/878
-    "test_emcee_multiprocessing"
-    "test_explicit_independent_vars"
-    "test_result_eval_custom_x"
-  ];
+  pythonImportsCheck = [ "lmfit" ];
+
+  disabledTests = [ "test_check_ast_errors" ];
 
   meta = with lib; {
     description = "Least-Squares Minimization with Bounds and Constraints";
-    homepage = "https://lmfit-py.readthedocs.io/";
+    homepage = "https://lmfit.github.io/lmfit-py/";
+    changelog = "https://github.com/lmfit/lmfit-py/releases/tag/${version}";
     license = licenses.bsd3;
     maintainers = with maintainers; [ nomeata ];
   };
diff --git a/pkgs/development/python-modules/lml/default.nix b/pkgs/development/python-modules/lml/default.nix
index 4ad69e15a4292..6bb69be09fcec 100644
--- a/pkgs/development/python-modules/lml/default.nix
+++ b/pkgs/development/python-modules/lml/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, mock
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  mock,
 }:
 
 buildPythonPackage rec {
@@ -27,6 +28,6 @@ buildPythonPackage rec {
     description = "Load me later. A lazy plugin management system for Python";
     homepage = "http://lml.readthedocs.io/";
     license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/lmnotify/default.nix b/pkgs/development/python-modules/lmnotify/default.nix
index bf9d857dc74d2..77876dfb21747 100644
--- a/pkgs/development/python-modules/lmnotify/default.nix
+++ b/pkgs/development/python-modules/lmnotify/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, oauthlib
-, requests
-, requests-oauthlib
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  oauthlib,
+  requests,
+  requests-oauthlib,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "lmnotify"
-  ];
+  pythonImportsCheck = [ "lmnotify" ];
 
   meta = with lib; {
     description = "Python package for sending notifications to LaMetric Time";
diff --git a/pkgs/development/python-modules/lmtpd/default.nix b/pkgs/development/python-modules/lmtpd/default.nix
index 1924c93a3ea99..fce22c244937e 100644
--- a/pkgs/development/python-modules/lmtpd/default.nix
+++ b/pkgs/development/python-modules/lmtpd/default.nix
@@ -1,20 +1,32 @@
-{ buildPythonPackage, fetchPypi, isPy3k, lib }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "lmtpd";
   version = "6.2.0";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = !isPy3k;
+  # smtpd will be removed in version 3.12
+  disabled = pythonOlder "3.7" || pythonAtLeast "3.12";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2c6825d2ffa1de099440411a742f58e1b3e8deeb3345adcfd4c2c38d4baf62b3";
+    hash = "sha256-LGgl0v+h3gmUQEEadC9Y4bPo3uszRa3P1MLDjUuvYrM=";
   };
 
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "lmtpd" ];
+
   meta = with lib; {
-    homepage = "https://github.com/moggers87/lmtpd";
     description = "LMTP counterpart to smtpd in the Python standard library";
+    homepage = "https://github.com/moggers87/lmtpd";
     license = licenses.mit;
     maintainers = with maintainers; [ jluttine ];
   };
diff --git a/pkgs/development/python-modules/lnkparse3/default.nix b/pkgs/development/python-modules/lnkparse3/default.nix
index 94fd7aaee1905..70d541fe52d81 100644
--- a/pkgs/development/python-modules/lnkparse3/default.nix
+++ b/pkgs/development/python-modules/lnkparse3/default.nix
@@ -1,14 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "lnkparse3";
-  version = "1.4.0";
+  version = "1.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -17,20 +19,16 @@ buildPythonPackage rec {
     owner = "Matmaus";
     repo = "LnkParse3";
     rev = "refs/tags/v${version}";
-    hash = "sha256-aWMkLFbmikdj4mlAPpo0qrxfE8zgRcSV83aiws03XsQ=";
+    hash = "sha256-oyULNRjC0pcVUOeTjjW3g3mB7KySYcwAS+/KwQEIkK4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  dependencies = [ pyyaml ];
 
-  pythonImportsCheck = [
-    "LnkParse3"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "LnkParse3" ];
 
   meta = with lib; {
     description = "Windows Shortcut file (LNK) parser";
diff --git a/pkgs/development/python-modules/loca/default.nix b/pkgs/development/python-modules/loca/default.nix
index 28a9020d74445..73b88dee28e92 100644
--- a/pkgs/development/python-modules/loca/default.nix
+++ b/pkgs/development/python-modules/loca/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, pythonOlder, fetchFromSourcehut, flit-core }:
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromSourcehut,
+  flit-core,
+}:
 
 buildPythonPackage rec {
   pname = "loca";
@@ -13,9 +19,7 @@ buildPythonPackage rec {
     sha256 = "1l6jimw3wd81nz1jrzsfw1zzsdm0jm998xlddcqaq0h38sx69w8g";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   doCheck = false; # all checks are static analyses
   pythonImportsCheck = [ "loca" ];
diff --git a/pkgs/development/python-modules/localimport/default.nix b/pkgs/development/python-modules/localimport/default.nix
index 9cb001af86a2f..3c8e0f07223f8 100644
--- a/pkgs/development/python-modules/localimport/default.nix
+++ b/pkgs/development/python-modules/localimport/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/localstack-client/default.nix b/pkgs/development/python-modules/localstack-client/default.nix
index b78cc3da7633c..638f4328abf49 100644
--- a/pkgs/development/python-modules/localstack-client/default.nix
+++ b/pkgs/development/python-modules/localstack-client/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, boto3
-, pytestCheckHook
-
-# downstream dependencies
-, localstack
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  boto3,
+  pytestCheckHook,
+
+  # downstream dependencies
+  localstack,
 }:
 
 buildPythonPackage rec {
@@ -21,19 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-MBXTiTzCwkduJPPRN7OKaWy2q9J8xCX/GGu09tyac3A=";
   };
 
-  propagatedBuildInputs = [
-    boto3
-  ];
+  propagatedBuildInputs = [ boto3 ];
 
-  pythonImportsCheck = [
-    "localstack_client"
-  ];
+  pythonImportsCheck = [ "localstack_client" ];
 
   # All commands test `localstack` which is a downstream dependency
   doCheck = false;
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Has trouble creating a socket
@@ -48,9 +43,9 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "A lightweight Python client for LocalStack";
+    description = "Lightweight Python client for LocalStack";
     homepage = "https://github.com/localstack/localstack-python-client";
     license = licenses.asl20;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/localstack-ext/default.nix b/pkgs/development/python-modules/localstack-ext/default.nix
index 90e743f839e72..4ebb8c0b41850 100644
--- a/pkgs/development/python-modules/localstack-ext/default.nix
+++ b/pkgs/development/python-modules/localstack-ext/default.nix
@@ -1,27 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, dill
-, dnslib
-, dnspython
-, plux
-, pyaes
-, python-jose
-, requests
-, tabulate
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  dill,
+  dnslib,
+  dnspython,
+  plux,
+  pyaes,
+  python-jose,
+  requests,
+  tabulate,
 
-# Sensitive downstream dependencies
-, localstack
+  # Sensitive downstream dependencies
+  localstack,
 }:
 
 buildPythonPackage rec {
   pname = "localstack-ext";
-  version = "2.3.2";
+  version = "3.5.0";
   format = "setuptools";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-Ex5ZPlteDaiyex90QumucVdTTbpp9uWiBrvw1kMr++8=";
+    pname = "localstack_ext";
+    inherit version;
+    hash = "sha256-tJNgNqCzlebbDOOgkScOKaf04bLTVIjP+BaFiDLo/Gs=";
   };
 
   postPatch = ''
@@ -62,6 +64,6 @@ buildPythonPackage rec {
     description = "Extensions for LocalStack";
     homepage = "https://github.com/localstack/localstack";
     license = licenses.asl20;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/localstack/default.nix b/pkgs/development/python-modules/localstack/default.nix
index 6a408c9359205..637e411ea65e9 100644
--- a/pkgs/development/python-modules/localstack/default.nix
+++ b/pkgs/development/python-modules/localstack/default.nix
@@ -1,47 +1,48 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, apispec
-, boto3
-, cachetools
-, click
-, localstack-client
-, localstack-ext
-, plux
-, psutil
-, python-dotenv
-, pyyaml
-, packaging
-, requests
-, rich
-, semver
-, tailer
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  apispec,
+  boto3,
+  build,
+  cachetools,
+  click,
+  cryptography,
+  localstack-client,
+  localstack-ext,
+  plux,
+  psutil,
+  python-dotenv,
+  pyyaml,
+  packaging,
+  requests,
+  rich,
+  semver,
+  setuptools,
+  tailer,
 }:
 
 buildPythonPackage rec {
   pname = "localstack";
-  version = "3.0.0";
-  format = "setuptools";
+  version = "3.6.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "localstack";
     repo = "localstack";
     rev = "refs/tags/v${version}";
-    hash = "sha256-N/Mc1bubCcq38VxUqkO9LGG25pEetEyJ+VJMdg/7hrU=";
+    hash = "sha256-MAECVYO6+1JqSZN8PFvHcMWizeYBUnU+7o7l48uwpv4=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "requests>=2.20.0,<2.26" "requests~=2.20" \
-      --replace "cachetools~=5.0.0" "cachetools~=5.0" \
-      --replace "boto3>=1.20,<1.25.0" "boto3~=1.20"
-  '';
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     apispec
     boto3
+    build
     cachetools
     click
+    cryptography
     localstack-client
     localstack-ext
     plux
@@ -55,19 +56,26 @@ buildPythonPackage rec {
     tailer
   ];
 
+  pythonRelaxDeps = [ "dill" ];
+
   pythonImportsCheck = [ "localstack" ];
 
   # Test suite requires boto, which has been removed from nixpkgs
   # Just do minimal test, buildPythonPackage maps checkPhase
   # to installCheckPhase, so we can test that entrypoint point works.
   checkPhase = ''
+    runHook preCheck
+
+    export HOME=$(mktemp -d)
     $out/bin/localstack --version
+
+    runHook postCheck
   '';
 
   meta = with lib; {
-    description = "A fully functional local Cloud stack";
+    description = "Fully functional local Cloud stack";
     homepage = "https://github.com/localstack/localstack";
     license = licenses.asl20;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/localzone/default.nix b/pkgs/development/python-modules/localzone/default.nix
index 84c5acd276901..3e7d91fe841ff 100644
--- a/pkgs/development/python-modules/localzone/default.nix
+++ b/pkgs/development/python-modules/localzone/default.nix
@@ -1,34 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, dnspython
-, sphinx
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  dnspython,
+  pytestCheckHook,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "localzone";
   version = "0.9.8";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "ags-slc";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "1cbiv21yryjqy46av9hbjccks95sxznrx8nypd3yzihf1vkjiq5a";
+    repo = "localzone";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-quAo5w4Oxu9Hu96inu3vuiQ9GZMLpq0M8Vj67IPYcbE=";
   };
 
-  propagatedBuildInputs = [ dnspython sphinx ];
+  build-system = [ setuptools ];
+
+  dependencies = [ dnspython ];
 
-  nativeCheckInputs = [ pytest ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  checkPhase = ''
-    pytest
-  '';
+  pythonImportsCheck = [ "localzone" ];
 
   meta = with lib; {
-    description = "A simple DNS library for managing zone files";
+    description = "Simple DNS library for managing zone files";
     homepage = "https://localzone.iomaestro.com";
+    changelog = "https://github.com/ags-slc/localzone/blob/v${version}/CHANGELOG.rst";
     license = licenses.bsd3;
     maintainers = with maintainers; [ flyfloh ];
   };
diff --git a/pkgs/development/python-modules/locationsharinglib/default.nix b/pkgs/development/python-modules/locationsharinglib/default.nix
index 98888e18df690..6b3791c29ac51 100644
--- a/pkgs/development/python-modules/locationsharinglib/default.nix
+++ b/pkgs/development/python-modules/locationsharinglib/default.nix
@@ -1,66 +1,53 @@
-{ lib
-, betamax
-, buildPythonPackage
-, cachetools
-, coloredlogs
-, emoji
-, fetchPypi
-, nose
-, pythonOlder
-, pytz
-, requests
+{
+  lib,
+  buildPythonPackage,
+  cachetools,
+  coloredlogs,
+  fetchPypi,
+  pythonOlder,
+  pytz,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "locationsharinglib";
   version = "5.0.3";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-ar5/gyDnby0aceqqHe8lTQaHafOub+IPKglmct4xEGM=";
   };
 
-  propagatedBuildInputs = [
-    coloredlogs
-    requests
-    cachetools
-    pytz
-  ];
-
-  nativeCheckInputs = [
-    betamax
-    emoji
-    nose
-  ];
-
   postPatch = ''
     # Tests requirements want to pull in multiple modules which we don't need
     substituteInPlace setup.py \
-      --replace "tests_require=test_requirements" "tests_require=[]"
-    substituteInPlace requirements.txt \
-      --replace "coloredlogs>=15.0.1" "coloredlogs" \
-      --replace "pytz>=2023.3" "pytz"
+      --replace-fail "tests_require=test_requirements" "tests_require=[]"
+    cp .VERSION locationsharinglib/.VERSION
   '';
 
-  checkPhase = ''
-    runHook preCheck
-    # Only coverage no real unit tests
-    nosetests
-    runHook postCheck
-  '';
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [
-    "locationsharinglib"
+  dependencies = [
+    coloredlogs
+    requests
+    cachetools
+    pytz
   ];
 
-  meta = with lib; {
+  # There are no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "locationsharinglib" ];
+
+  meta = {
     description = "Python package to retrieve coordinates from a Google account";
     homepage = "https://locationsharinglib.readthedocs.io/";
     changelog = "https://github.com/costastf/locationsharinglib/blob/${version}/HISTORY.rst";
-    license = licenses.mit;
-    maintainers = with maintainers; [ fab ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/locket/default.nix b/pkgs/development/python-modules/locket/default.nix
index e416d8dd82885..5af41f471ca4a 100644
--- a/pkgs/development/python-modules/locket/default.nix
+++ b/pkgs/development/python-modules/locket/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
   # weird test requirements (spur.local>=0.3.7,<0.4)
   doCheck = false;
 
-  pythonImportsCheck = [
-    "locket"
-  ];
+  pythonImportsCheck = [ "locket" ];
 
   meta = with lib; {
     description = "Library which provides a lock that can be used by multiple processes";
diff --git a/pkgs/development/python-modules/lockfile/default.nix b/pkgs/development/python-modules/lockfile/default.nix
index 0fb64ad0baf9f..04e4bc881bfc4 100644
--- a/pkgs/development/python-modules/lockfile/default.nix
+++ b/pkgs/development/python-modules/lockfile/default.nix
@@ -1,30 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pbr
-, nose
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pbr,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "lockfile";
   version = "0.12.2";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6aed02de03cba24efabcd600b30540140634fc06cfa603822d508d5361e9f799";
+    hash = "sha256-au0C3gPLok76vNYAswVAFAY0/AbPpgOCLVCNU2Hp95k=";
   };
 
-  buildInputs = [ pbr ];
-  nativeCheckInputs = [ nose ];
+  patches = [ ./fix-tests.patch ];
 
-  checkPhase = ''
-    nosetests
-  '';
+  build-system = [
+    pbr
+    setuptools
+  ];
 
-  meta = with lib; {
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
     homepage = "https://launchpad.net/pylockfile";
     description = "Platform-independent advisory file locking capability for Python applications";
-    license = licenses.asl20;
+    license = lib.licenses.asl20;
   };
 }
diff --git a/pkgs/development/python-modules/lockfile/fix-tests.patch b/pkgs/development/python-modules/lockfile/fix-tests.patch
new file mode 100644
index 0000000000000..882a7dc2af718
--- /dev/null
+++ b/pkgs/development/python-modules/lockfile/fix-tests.patch
@@ -0,0 +1,28 @@
+diff --git a/test/compliancetest.py b/test/compliancetest.py
+index bf4e59c..f55e258 100644
+--- a/test/compliancetest.py
++++ b/test/compliancetest.py
+@@ -6,18 +6,19 @@ import lockfile
+ 
+ 
+ class ComplianceTest(object):
+-    def __init__(self):
+-        self.saved_class = lockfile.LockFile
++    @classmethod
++    def setup_class(cls):
++        cls.saved_class = lockfile.LockFile
+ 
+     def _testfile(self):
+         """Return platform-appropriate file.  Helper for tests."""
+         import tempfile
+         return os.path.join(tempfile.gettempdir(), 'trash-%s' % os.getpid())
+ 
+-    def setup(self):
++    def setup_method(self):
+         lockfile.LockFile = self.class_to_test
+ 
+-    def teardown(self):
++    def teardown_method(self):
+         try:
+             tf = self._testfile()
+             if os.path.isdir(tf):
diff --git a/pkgs/development/python-modules/log-symbols/default.nix b/pkgs/development/python-modules/log-symbols/default.nix
index 819f771b91ee0..d479c450aaf72 100644
--- a/pkgs/development/python-modules/log-symbols/default.nix
+++ b/pkgs/development/python-modules/log-symbols/default.nix
@@ -1,8 +1,10 @@
-{ buildPythonPackage
-, colorama
-, fetchPypi
-, isPy27
-, lib }:
+{
+  buildPythonPackage,
+  colorama,
+  fetchPypi,
+  isPy27,
+  lib,
+}:
 
 buildPythonPackage rec {
   pname = "log_symbols";
@@ -21,7 +23,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "log_symbols" ];
 
   meta = with lib; {
-    description = "Colored Symbols for Various Log Levels.";
+    description = "Colored Symbols for Various Log Levels";
     homepage = "https://github.com/manrajgrover/py-log-symbols";
     license = licenses.mit;
     maintainers = with maintainers; [ urbas ];
diff --git a/pkgs/development/python-modules/logbook/default.nix b/pkgs/development/python-modules/logbook/default.nix
index c58f617b10f86..62a00fa1c8fab 100644
--- a/pkgs/development/python-modules/logbook/default.nix
+++ b/pkgs/development/python-modules/logbook/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, brotli
-, buildPythonPackage
-, cython
-, execnet
-, fetchFromGitHub
-, jinja2
-, pytestCheckHook
-, pythonOlder
-, pyzmq
-, redis
-, setuptools
-, sqlalchemy
+{
+  lib,
+  brotli,
+  buildPythonPackage,
+  cython,
+  execnet,
+  fetchFromGitHub,
+  jinja2,
+  pytestCheckHook,
+  pythonOlder,
+  pyzmq,
+  redis,
+  setuptools,
+  sqlalchemy,
 }:
 
 buildPythonPackage rec {
@@ -33,24 +34,12 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    execnet = [
-      execnet
-    ];
-    sqlalchemy = [
-      sqlalchemy
-    ];
-    redis = [
-      redis
-    ];
-    zmq = [
-      pyzmq
-    ];
-    compression = [
-      brotli
-    ];
-    jinja = [
-      jinja2
-    ];
+    execnet = [ execnet ];
+    sqlalchemy = [ sqlalchemy ];
+    redis = [ redis ];
+    zmq = [ pyzmq ];
+    compression = [ brotli ];
+    jinja = [ jinja2 ];
     all = [
       brotli
       execnet
@@ -68,9 +57,7 @@ buildPythonPackage rec {
   # Some of the tests use localhost networking.
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [
-    "logbook"
-  ];
+  pythonImportsCheck = [ "logbook" ];
 
   disabledTests = [
     # Test require Redis instance
@@ -78,10 +65,10 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A logging replacement for Python";
+    description = "Logging replacement for Python";
     homepage = "https://logbook.readthedocs.io/";
     changelog = "https://github.com/getlogbook/logbook/blob/${version}/CHANGES";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/logfury/default.nix b/pkgs/development/python-modules/logfury/default.nix
index 9909ab4106755..fcd3fd9baa839 100644
--- a/pkgs/development/python-modules/logfury/default.nix
+++ b/pkgs/development/python-modules/logfury/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
-, testfixtures
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
+  testfixtures,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-EwpdrOq5rVNJJCUt33BIKqLJZmKzo4JafTCYHQO3aiY=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -33,9 +32,7 @@ buildPythonPackage rec {
       --replace "'setuptools_scm<6.0'" "'setuptools_scm'"
   '';
 
-  pythonImportsCheck = [
-    "logfury"
-  ];
+  pythonImportsCheck = [ "logfury" ];
 
   meta = with lib; {
     description = "Python module that allows for responsible, low-boilerplate logging of method calls";
diff --git a/pkgs/development/python-modules/logging-journald/default.nix b/pkgs/development/python-modules/logging-journald/default.nix
index 812de51498d14..51ba2cce6ea1b 100644
--- a/pkgs/development/python-modules/logging-journald/default.nix
+++ b/pkgs/development/python-modules/logging-journald/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-RQ9opkAOZfhYuqOXJ2Mtnig8soL+lCveYH2YdXL1AGM=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   # Circular dependency with aiomisc
   doCheck = false;
 
-  pythonImportsCheck = [
-    "logging_journald"
-  ];
+  pythonImportsCheck = [ "logging_journald" ];
 
   meta = with lib; {
     description = "Logging handler for writing logs to the journald";
diff --git a/pkgs/development/python-modules/logi-circle/default.nix b/pkgs/development/python-modules/logi-circle/default.nix
index 51d66dd406722..af73f77aadef1 100644
--- a/pkgs/development/python-modules/logi-circle/default.nix
+++ b/pkgs/development/python-modules/logi-circle/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, aiohttp
-, python-slugify
-, pytz
-, aresponses
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  aiohttp,
+  python-slugify,
+  pytz,
+  aresponses,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -38,7 +39,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "logi_circle" ];
 
   meta = {
-    description = "A Python library to communicate with Logi Circle cameras";
+    description = "Python library to communicate with Logi Circle cameras";
     homepage = "https://github.com/evanjd/python-logi-circle";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ dotlambda ];
diff --git a/pkgs/development/python-modules/logical-unification/default.nix b/pkgs/development/python-modules/logical-unification/default.nix
index adc6141f11db3..9c47c3b6a4667 100644
--- a/pkgs/development/python-modules/logical-unification/default.nix
+++ b/pkgs/development/python-modules/logical-unification/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
-, toolz
-, multipledispatch
-, py
-, pytestCheckHook
-, pytest-html
-, pytest-benchmark
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonAtLeast,
+  toolz,
+  multipledispatch,
+  py,
+  pytestCheckHook,
+  pytest-html,
+  pytest-benchmark,
 }:
 
 buildPythonPackage rec {
@@ -31,7 +32,7 @@ buildPythonPackage rec {
     py
     pytestCheckHook
     pytest-html
-    pytest-benchmark  # Needed for the `--benchmark-skip` flag
+    pytest-benchmark # Needed for the `--benchmark-skip` flag
   ];
 
   disabledTests = lib.optionals (pythonAtLeast "3.12") [
diff --git a/pkgs/development/python-modules/logilab/common.nix b/pkgs/development/python-modules/logilab/common.nix
index 3e2797b6d675c..cac45f9dd0073 100644
--- a/pkgs/development/python-modules/logilab/common.nix
+++ b/pkgs/development/python-modules/logilab/common.nix
@@ -51,7 +51,7 @@ buildPythonPackage rec {
     homepage = "https://logilab-common.readthedocs.io/";
     changelog = "https://forge.extranet.logilab.fr/open-source/logilab-common/-/blob/branch/default/CHANGELOG.md";
     license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     mainProgram = "logilab-pytest";
   };
 }
diff --git a/pkgs/development/python-modules/logilab/constraint.nix b/pkgs/development/python-modules/logilab/constraint.nix
index 3d6b2cc7897b2..fb98ada28f7cd 100644
--- a/pkgs/development/python-modules/logilab/constraint.nix
+++ b/pkgs/development/python-modules/logilab/constraint.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, importlib-metadata
-, logilab-common
-, pip
-, six
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  importlib-metadata,
+  logilab-common,
+  pip,
+  six,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     # avoid ModuleNotFoundError: No module named 'logilab.common' due to namespace
@@ -51,7 +50,6 @@ buildPythonPackage rec {
     homepage = "https://forge.extranet.logilab.fr/open-source/logilab-constraint";
     changelog = "https://forge.extranet.logilab.fr/open-source/logilab-constraint/-/blob/${version}/CHANGELOG.md";
     license = licenses.lgpl21Plus;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
-
diff --git a/pkgs/development/python-modules/logmatic-python/default.nix b/pkgs/development/python-modules/logmatic-python/default.nix
index 24416041f7b26..1dc8ce7d024c6 100644
--- a/pkgs/development/python-modules/logmatic-python/default.nix
+++ b/pkgs/development/python-modules/logmatic-python/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python-json-logger
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python-json-logger,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,20 +21,14 @@ buildPythonPackage rec {
     hash = "sha256-UYKm00KhXnPQDkKJVm7s0gOwZ3GNY07O0oKbzPhAdVE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    python-json-logger
-  ];
+  propagatedBuildInputs = [ python-json-logger ];
 
   # Only functional tests, no unit tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "logmatic"
-  ];
+  pythonImportsCheck = [ "logmatic" ];
 
   meta = with lib; {
     description = "Python helpers to send logs to Logmatic.io";
diff --git a/pkgs/development/python-modules/logster/default.nix b/pkgs/development/python-modules/logster/default.nix
index 2bc6981955b1b..19fa5b64b9ede 100644
--- a/pkgs/development/python-modules/logster/default.nix
+++ b/pkgs/development/python-modules/logster/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pygtail }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pygtail,
+}:
 
 buildPythonPackage rec {
   pname = "logster";
diff --git a/pkgs/development/python-modules/loguru-logging-intercept/default.nix b/pkgs/development/python-modules/loguru-logging-intercept/default.nix
new file mode 100644
index 0000000000000..c25aa6dedda74
--- /dev/null
+++ b/pkgs/development/python-modules/loguru-logging-intercept/default.nix
@@ -0,0 +1,30 @@
+{
+  lib,
+  buildPythonPackage,
+  setuptools,
+  loguru,
+  fetchPypi,
+}:
+
+buildPythonPackage rec {
+  pname = "loguru-logging-intercept";
+  version = "0.1.4";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-ORPBqXtQdMqK0v6n+lBFbLUPR2SEpCpvj8w2KlBjAGQ=";
+  };
+
+  build-system = [ setuptools ];
+  dependencies = [ loguru ];
+
+  pythonImportsCheck = [ "loguru_logging_intercept" ];
+
+  meta = {
+    description = "Code to integrate Loguru with Python's standard logging module";
+    homepage = "https://github.com/MatthewScholefield/loguru-logging-intercept";
+    maintainers = with lib.maintainers; [ sigmanificient ];
+    license = lib.licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/loguru/default.nix b/pkgs/development/python-modules/loguru/default.nix
index 93e9d8937bd8b..216a20663381e 100644
--- a/pkgs/development/python-modules/loguru/default.nix
+++ b/pkgs/development/python-modules/loguru/default.nix
@@ -1,11 +1,13 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, colorama
-, fetchFromGitHub
-, freezegun
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  colorama,
+  fetchFromGitHub,
+  freezegun,
+  pytestCheckHook,
+  pythonOlder,
+  pytest-xdist
 }:
 
 buildPythonPackage rec {
@@ -24,36 +26,40 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-xdist # massive speedup, not tested by upstream
     colorama
     freezegun
   ];
 
   disabledTestPaths = [
     "tests/test_type_hinting.py" # avoid dependency on mypy
-  ] ++ lib.optionals stdenv.isDarwin [
-    "tests/test_multiprocessing.py"
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ "tests/test_multiprocessing.py" ];
 
-  disabledTests = [
-    # fails on some machine configurations
-    # AssertionError: assert '' != ''
-    "test_file_buffering"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_rotation_and_retention"
-    "test_rotation_and_retention_timed_file"
-    "test_renaming"
-    "test_await_complete_inheritance"
-  ];
+  disabledTests =
+    [
+      # fails on some machine configurations
+      # AssertionError: assert '' != ''
+      "test_file_buffering"
+      # Slow test
+      "test_time_rotation"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      "test_rotation_and_retention"
+      "test_rotation_and_retention_timed_file"
+      "test_renaming"
+      "test_await_complete_inheritance"
+    ];
 
-  pythonImportsCheck = [
-    "loguru"
-  ];
+  pythonImportsCheck = [ "loguru" ];
 
   meta = with lib; {
     description = "Python logging made (stupidly) simple";
     homepage = "https://github.com/Delgan/loguru";
     changelog = "https://github.com/delgan/loguru/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ jakewaksbaum rmcgibbo ];
+    maintainers = with maintainers; [
+      jakewaksbaum
+      rmcgibbo
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/logutils/default.nix b/pkgs/development/python-modules/logutils/default.nix
index 7f35845785634..df79cc9dc3e46 100644
--- a/pkgs/development/python-modules/logutils/default.nix
+++ b/pkgs/development/python-modules/logutils/default.nix
@@ -1,26 +1,39 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, redis
-, redis-server
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  redis,
+  redis-server,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "logutils";
   version = "0.3.5";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bc058a25d5c209461f134e1f03cab637d66a7a5ccc12e593db56fbb279899a82";
+    hash = "sha256-vAWKJdXCCUYfE04fA8q2N9ZqelzMEuWT21b7snmJmoI=";
   };
 
-  nativeCheckInputs = [
+  postPatch = ''
+    substituteInPlace tests/test_dictconfig.py \
+      --replace-fail "assertEquals" "assertEqual"
+    substituteInPlace tests/test_redis.py \
+      --replace-fail "'redis-server'" "'${redis-server}/bin/redis-server'"
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     pytestCheckHook
     redis
-    redis-server
   ];
 
   disabledTests = [
@@ -28,14 +41,17 @@ buildPythonPackage rec {
     "test_hashandlers"
   ];
 
-  disabledTestPaths = lib.optionals (stdenv.isDarwin) [
+  disabledTestPaths = lib.optionals (stdenv.hostPlatform.isDarwin) [
     # Exception: unable to connect to Redis server
     "tests/test_redis.py"
   ];
 
+  pythonImportsCheck = [ "logutils" ];
+
   meta = with lib; {
     description = "Logging utilities";
     homepage = "https://bitbucket.org/vinay.sajip/logutils/";
     license = licenses.bsd0;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/logzero/default.nix b/pkgs/development/python-modules/logzero/default.nix
index fa35ca73b51ec..de6403d1eabd4 100644
--- a/pkgs/development/python-modules/logzero/default.nix
+++ b/pkgs/development/python-modules/logzero/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "logzero";
diff --git a/pkgs/development/python-modules/lomond/default.nix b/pkgs/development/python-modules/lomond/default.nix
index 46d362d7a848f..58e560c43e6dd 100644
--- a/pkgs/development/python-modules/lomond/default.nix
+++ b/pkgs/development/python-modules/lomond/default.nix
@@ -1,17 +1,18 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, pythonAtLeast
-, pythonOlder
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pythonAtLeast,
+  pythonOlder,
 
-# runtime
-, six
+  # runtime
+  six,
 
-# tests
-, freezegun
-, pytest-mock
-, pytestCheckHook
-, tornado_4
+  # tests
+  freezegun,
+  pytest-mock,
+  pytestCheckHook,
+  tornado_4,
 }:
 
 buildPythonPackage rec {
@@ -31,26 +32,24 @@ buildPythonPackage rec {
       --replace "'pytest-runner'" ""
   '';
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   nativeCheckInputs = [
     freezegun
     pytest-mock
     pytestCheckHook
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    tornado_4
-  ];
+  ] ++ lib.optionals (pythonOlder "3.10") [ tornado_4 ];
 
-  disabledTests = [
-    # Makes HTTP requests
-    "test_proxy"
-    "test_live"
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    # https://github.com/wildfoundry/dataplicity-lomond/issues/91
-    "test_that_on_ping_responds_with_pong"
-  ];
+  disabledTests =
+    [
+      # Makes HTTP requests
+      "test_proxy"
+      "test_live"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      # https://github.com/wildfoundry/dataplicity-lomond/issues/91
+      "test_that_on_ping_responds_with_pong"
+    ];
 
   disabledTestPaths = lib.optionals (pythonAtLeast "3.10") [
     # requires tornado_4, which is not compatible with python3.10
diff --git a/pkgs/development/python-modules/loompy/default.nix b/pkgs/development/python-modules/loompy/default.nix
new file mode 100644
index 0000000000000..1240a01be03a3
--- /dev/null
+++ b/pkgs/development/python-modules/loompy/default.nix
@@ -0,0 +1,56 @@
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  h5py,
+  numpy,
+  scipy,
+  numba,
+  click,
+  numpy-groupies,
+  setuptools,
+  pytestCheckHook,
+}:
+let
+  finalAttrs = {
+    pname = "loompy";
+    version = "3.0.7";
+    pyproject = true;
+
+    src = fetchPypi {
+      inherit (finalAttrs) pname version;
+      hash = "sha256-tc33tUc0xr7ToYHRGUevcK8sbg3K3AL9Docd8jL6qPQ=";
+    };
+
+    build-system = [ setuptools ];
+
+    dependencies = [
+      h5py
+      numpy
+      scipy
+      numba
+      click
+      numpy-groupies
+    ];
+
+    nativeCheckInputs = [ pytestCheckHook ];
+
+    # Deprecated numpy attributes access
+    disabledTests = [
+      "test_scan_with_default_ordering"
+      "test_get"
+    ];
+
+    pythonImportsCheck = [ "loompy" ];
+
+    meta = {
+      changelog = "https://github.com/linnarsson-lab/loompy/releases";
+      description = "Python implementation of the Loom file format";
+      homepage = "https://github.com/linnarsson-lab/loompy";
+      license = lib.licenses.bsd2;
+      maintainers = with lib.maintainers; [ theobori ];
+      mainProgram = "loompy";
+    };
+  };
+in
+buildPythonPackage finalAttrs
diff --git a/pkgs/development/python-modules/loopy/default.nix b/pkgs/development/python-modules/loopy/default.nix
index 995c99e100ec0..72268b19e6f11 100644
--- a/pkgs/development/python-modules/loopy/default.nix
+++ b/pkgs/development/python-modules/loopy/default.nix
@@ -1,39 +1,47 @@
-{ lib
-, buildPythonPackage
-, codepy
-, cgen
-, colorama
-, fetchFromGitHub
-, genpy
-, islpy
-, mako
-, numpy
-, pymbolic
-, pyopencl
-, pyrsistent
-, pythonOlder
-, pytools
+{
+  lib,
+  buildPythonPackage,
+  codepy,
+  cgen,
+  colorama,
+  fetchFromGitHub,
+  genpy,
+  immutables,
+  islpy,
+  mako,
+  numpy,
+  pymbolic,
+  pyopencl,
+  pyrsistent,
+  pythonOlder,
+  pytools,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "loopy";
   version = "2024.1";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "inducer";
-    repo = pname;
+    repo = "loopy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-R0Wry4r8Y7VKqsyrZ3odEOUy4T9di9rFQzq7BD0LG58=";
+    hash = "sha256-mU8vXEPR88QpJpzXZlZdDhMtlwIx5YpeYhXU8Vw2T9g=";
+    fetchSubmodules = true; # submodule at `loopy/target/c/compyte`
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     codepy
     cgen
     colorama
     genpy
+    immutables
     islpy
     mako
     numpy
@@ -41,15 +49,22 @@ buildPythonPackage rec {
     pyopencl
     pyrsistent
     pytools
+    typing-extensions
   ];
 
+  postConfigure = ''
+    export HOME=$(mktemp -d)
+  '';
+
+  pythonImportsCheck = [ "loopy" ];
+
   # pyopencl._cl.LogicError: clGetPlatformIDs failed: PLATFORM_NOT_FOUND_KHR
   doCheck = false;
 
-  meta = with lib; {
-    description = "A code generator for array-based code on CPUs and GPUs";
+  meta = {
+    description = "Code generator for array-based code on CPUs and GPUs";
     homepage = "https://github.com/inducer/loopy";
-    license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tomasajt ];
   };
 }
diff --git a/pkgs/development/python-modules/looseversion/default.nix b/pkgs/development/python-modules/looseversion/default.nix
index b16fd1a572d21..3bf1553a40d86 100644
--- a/pkgs/development/python-modules/looseversion/default.nix
+++ b/pkgs/development/python-modules/looseversion/default.nix
@@ -1,33 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, hatchling
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "looseversion";
   version = "1.3.0";
-  format = "pyproject";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit version pname;
-    sha256 = "sha256-695l8/a7lTGoEBbG/vPrlaYRga3Ee3+UnpwOpHkRZp4=";
+    hash = "sha256-695l8/a7lTGoEBbG/vPrlaYRga3Ee3+UnpwOpHkRZp4=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
   pytestFlagsArray = [ "tests.py" ];
+
   pythonImportsCheck = [ "looseversion" ];
 
   meta = with lib; {
     description = "Version numbering for anarchists and software realists";
     homepage = "https://github.com/effigies/looseversion";
+    changelog = "https://github.com/effigies/looseversion/blob/${version}/CHANGES.md";
     license = licenses.psfl;
     maintainers = with maintainers; [ pelme ];
   };
diff --git a/pkgs/development/python-modules/loqedapi/default.nix b/pkgs/development/python-modules/loqedapi/default.nix
index 96370c07aac41..5aabc67910577 100644
--- a/pkgs/development/python-modules/loqedapi/default.nix
+++ b/pkgs/development/python-modules/loqedapi/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -35,9 +36,7 @@ buildPythonPackage rec {
   # Tests require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "loqedAPI"
-  ];
+  pythonImportsCheck = [ "loqedAPI" ];
 
   meta = with lib; {
     description = "Module to interact with the Loqed Smart Door Lock API";
diff --git a/pkgs/development/python-modules/losant-rest/default.nix b/pkgs/development/python-modules/losant-rest/default.nix
index 3d14dbf313e09..b2f376ef48b64 100644
--- a/pkgs/development/python-modules/losant-rest/default.nix
+++ b/pkgs/development/python-modules/losant-rest/default.nix
@@ -1,42 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "losant-rest";
-  version = "1.19.5";
-  format = "setuptools";
+  version = "1.19.10";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "Losant";
     repo = "losant-rest-python";
-    rev = "v${version}";
-    hash = "sha256-oYwbCpX2mD1RMk/0ymxaA8NF9kaJ+pGQdUKk3l5Jmrs=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-3DDL3r7pApDyBQd/eUEbR0KG3cpVOmozNcCsKyGx67Y=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ requests ];
 
   nativeCheckInputs = [
     pytestCheckHook
     requests-mock
   ];
 
-  pytestFlagsArray = [
-    "tests/losantrest_tests.py"
-  ];
+  pytestFlagsArray = [ "tests/platformrest_tests.py" ];
 
-  pythonImportsCheck = [
-    "losantrest"
-  ];
+  pythonImportsCheck = [ "platformrest" ];
 
   meta = with lib; {
     description = "Python module for consuming the Losant IoT Platform API";
diff --git a/pkgs/development/python-modules/lottie/default.nix b/pkgs/development/python-modules/lottie/default.nix
new file mode 100644
index 0000000000000..a1ced236e8c8f
--- /dev/null
+++ b/pkgs/development/python-modules/lottie/default.nix
@@ -0,0 +1,30 @@
+{
+  lib,
+  buildPythonPackage,
+  distutils,
+  fetchPypi,
+  setuptools,
+}:
+buildPythonPackage rec {
+  pname = "lottie";
+  version = "0.7.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-oyQvi6NwUfvddQPs0WggOgjkrybxe+LsygimSvHn08E=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ distutils ];
+
+  pythonImportsCheck = [ "lottie" ];
+
+  meta = with lib; {
+    description = "Framework to work with lottie files and telegram animated stickers (tgs)";
+    homepage = "https://gitlab.com/mattbas/python-lottie/";
+    license = licenses.agpl3Plus;
+    maintainers = with maintainers; [ Scrumplex ];
+  };
+}
diff --git a/pkgs/development/python-modules/lox/default.nix b/pkgs/development/python-modules/lox/default.nix
new file mode 100644
index 0000000000000..c221624049975
--- /dev/null
+++ b/pkgs/development/python-modules/lox/default.nix
@@ -0,0 +1,61 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+
+  pathos,
+  pytestCheckHook,
+  pytest-mock,
+  setuptools,
+  tqdm,
+}:
+
+buildPythonPackage rec {
+  pname = "lox";
+  version = "0.12.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "BrianPugh";
+    repo = "lox";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-Iv3ZdfsvFLU6lhlH1n+eQ+KIrXESsnC1S2lVFnKFV08=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ pathos ];
+
+  pythonRemoveDeps = [ "sphinx-rtd-theme" ];
+
+  # setup.py requires pytest-runner for setuptools, which is wrong
+  postPatch = ''
+    substituteInPlace setup.py --replace-fail '"pytest-runner",' ""
+  '';
+
+  pythonImportsCheck = [ "lox" ];
+
+  disabledTests = [
+    # Benchmark, performance testing
+    "test_perf_lock"
+    "test_perf_qlock"
+
+    # time sensitive testing
+    "test_bathroom_example"
+    "test_RWLock_r"
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-mock
+    tqdm
+  ];
+
+  meta = {
+    description = "Threading and Multiprocessing made easy";
+    changelog = "https://github.com/BrianPugh/lox/releases/tag/v${version}";
+    homepage = "https://github.com/BrianPugh/lox";
+    license = lib.licenses.asl20;
+    maintainers = [ lib.maintainers.greg ];
+  };
+}
diff --git a/pkgs/development/python-modules/lpc-checksum/default.nix b/pkgs/development/python-modules/lpc-checksum/default.nix
index 9a02499803602..810878cec5856 100644
--- a/pkgs/development/python-modules/lpc-checksum/default.nix
+++ b/pkgs/development/python-modules/lpc-checksum/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, intelhex
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  intelhex,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  propagatedBuildInputs = [
-    intelhex
-  ];
+  propagatedBuildInputs = [ intelhex ];
 
   pythonImportsCheck = [ "lpc_checksum" ];
 
diff --git a/pkgs/development/python-modules/lrcalc-python/default.nix b/pkgs/development/python-modules/lrcalc-python/default.nix
index f425ec23775a0..8cbe109c2edbd 100644
--- a/pkgs/development/python-modules/lrcalc-python/default.nix
+++ b/pkgs/development/python-modules/lrcalc-python/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, cython
-, pkg-config
-, lrcalc
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  cython,
+  pkg-config,
+  lrcalc,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +18,10 @@ buildPythonPackage rec {
     sha256 = "e3a0509aeda487b412b391a52e817ca36b5c063a8305e09fd54d53259dd6aaa9";
   };
 
-  nativeBuildInputs = [ cython pkg-config ];
+  nativeBuildInputs = [
+    cython
+    pkg-config
+  ];
 
   buildInputs = [ lrcalc ];
 
diff --git a/pkgs/development/python-modules/lru-dict/default.nix b/pkgs/development/python-modules/lru-dict/default.nix
index 801d68dccb66b..96c9c57c91fbf 100644
--- a/pkgs/development/python-modules/lru-dict/default.nix
+++ b/pkgs/development/python-modules/lru-dict/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 let
@@ -21,17 +22,11 @@ buildPythonPackage {
     hash = "sha256-VP0ZZta9H83ngVlsuGBoIU7e6/8dsTos6hEHnj/Qe2s=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "lru"
-  ];
+  pythonImportsCheck = [ "lru" ];
 
   meta = with lib; {
     description = "Fast and memory efficient LRU cache for Python";
diff --git a/pkgs/development/python-modules/lsassy/default.nix b/pkgs/development/python-modules/lsassy/default.nix
index a36a70f11bbde..f85a1f134eba4 100644
--- a/pkgs/development/python-modules/lsassy/default.nix
+++ b/pkgs/development/python-modules/lsassy/default.nix
@@ -7,13 +7,12 @@
   poetry-core,
   pypykatz,
   pythonOlder,
-  pythonRelaxDepsHook,
   rich,
 }:
 
 buildPythonPackage rec {
   pname = "lsassy";
-  version = "3.1.10";
+  version = "3.1.12";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -22,7 +21,7 @@ buildPythonPackage rec {
     owner = "Hackndo";
     repo = "lsassy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Eqparqj1O0gK0MvR4BBkGVNji2WXEnMsdWvKiR6XHFk=";
+    hash = "sha256-Idel52GAzir+SVgKfMU+e8Z0EkMf+PBdIcaQd0o8qJE=";
   };
 
   pythonRelaxDeps = [
@@ -31,7 +30,6 @@ buildPythonPackage rec {
     "rich"
   ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   build-system = [ poetry-core ];
 
diff --git a/pkgs/development/python-modules/lsp-tree-sitter/default.nix b/pkgs/development/python-modules/lsp-tree-sitter/default.nix
new file mode 100644
index 0000000000000..b4bba57240775
--- /dev/null
+++ b/pkgs/development/python-modules/lsp-tree-sitter/default.nix
@@ -0,0 +1,49 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-generate,
+  setuptools-scm,
+  colorama,
+  jinja2,
+  jsonschema,
+  pygls,
+  tree-sitter,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "lsp-tree-sitter";
+  version = "0.0.16";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "neomutt";
+    repo = "lsp-tree-sitter";
+    rev = "refs/tags/${version}";
+    hash = "sha256-nRzyVZFgb08M0I+xmhuX1LDwPsghlBLdZ2Ou8stKzk0=";
+  };
+
+  build-system = [
+    setuptools-generate
+    setuptools-scm
+  ];
+
+  dependencies = [
+    colorama
+    jinja2
+    jsonschema
+    pygls
+    tree-sitter
+  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "lsp_tree_sitter" ];
+
+  meta = with lib; {
+    description = "A library to create language servers";
+    homepage = "https://github.com/neomutt/lsp-tree-sitter";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ doronbehar ];
+  };
+}
diff --git a/pkgs/development/python-modules/lsprotocol/default.nix b/pkgs/development/python-modules/lsprotocol/default.nix
index c8c058f47c68b..8e23e7b92fda9 100644
--- a/pkgs/development/python-modules/lsprotocol/default.nix
+++ b/pkgs/development/python-modules/lsprotocol/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, attrs
-, buildPythonPackage
-, cattrs
-, fetchFromGitHub
-, flit-core
-, importlib-resources
-, jsonschema
-, nox
-, pyhamcrest
-, pytest
-, pythonOlder
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  cattrs,
+  fetchFromGitHub,
+  flit-core,
+  importlib-resources,
+  jsonschema,
+  nox,
+  pyhamcrest,
+  pytest,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
     cattrs
   ];
 
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
   checkInputs = [
     importlib-resources
@@ -63,15 +62,16 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "lsprotocol"
-  ];
+  pythonImportsCheck = [ "lsprotocol" ];
 
   meta = with lib; {
     description = "Python implementation of the Language Server Protocol";
     homepage = "https://github.com/microsoft/lsprotocol";
     changelog = "https://github.com/microsoft/lsprotocol/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ doronbehar fab ];
+    maintainers = with maintainers; [
+      doronbehar
+      fab
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/ltpycld2/default.nix b/pkgs/development/python-modules/ltpycld2/default.nix
index b8e19ae499904..510259d72d6e7 100644
--- a/pkgs/development/python-modules/ltpycld2/default.nix
+++ b/pkgs/development/python-modules/ltpycld2/default.nix
@@ -1,7 +1,8 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -25,6 +26,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/LibreTranslate/pycld2";
     license = licenses.asl20;
     maintainers = with maintainers; [ misuzu ];
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/lttng/default.nix b/pkgs/development/python-modules/lttng/default.nix
index 9cdb580fc474e..521def0abf77b 100644
--- a/pkgs/development/python-modules/lttng/default.nix
+++ b/pkgs/development/python-modules/lttng/default.nix
@@ -1,29 +1,39 @@
-{ toPythonModule
-, python
-, lttng-tools
-, swig2
+{
+  toPythonModule,
+  python,
+  lttng-tools,
+  swig,
 }:
 
-toPythonModule (lttng-tools.overrideAttrs ({ nativeBuildInputs ? [ ], configureFlags ? [ ], ... }: {
-  pname = "lttng";
+toPythonModule (
+  lttng-tools.overrideAttrs (
+    {
+      nativeBuildInputs ? [ ],
+      configureFlags ? [ ],
+      ...
+    }:
+    {
+      pname = "lttng";
 
-  nativeBuildInputs = nativeBuildInputs ++ [ swig2 ];
+      nativeBuildInputs = nativeBuildInputs ++ [ swig ];
 
-  configureFlags = configureFlags ++ [
-    "--enable-python-bindings"
-    # "--disable-bin-lttng" # The Python bindings depend on liblttng-ctl, which is only built when the binary is enabled.
-    "--disable-bin-lttng-consumerd"
-    "--disable-bin-lttng-crash"
-    "--disable-bin-lttng-relayd"
-    "--disable-bin-lttng-sessiond"
-    # "--disable-extras" # The Python bindings are an extra.
-    "--disable-man-pages"
-  ];
+      configureFlags = configureFlags ++ [
+        "--enable-python-bindings"
+        # "--disable-bin-lttng" # The Python bindings depend on liblttng-ctl, which is only built when the binary is enabled.
+        "--disable-bin-lttng-consumerd"
+        "--disable-bin-lttng-crash"
+        "--disable-bin-lttng-relayd"
+        "--disable-bin-lttng-sessiond"
+        # "--disable-extras" # The Python bindings are an extra.
+        "--disable-man-pages"
+      ];
 
-  # Nix treats nativeBuildInputs specially for cross-compilation, but in this
-  # case, cross-compilation is accounted for explicitly. Using the variables
-  # ensures that the platform setup isn't messed with further. It also allows
-  # regular Python to be added in the future if it is ever needed.
-  PYTHON = "${python.pythonOnBuildForHost}/bin/python";
-  PYTHON_CONFIG = "${python.pythonOnBuildForHost}/bin/python-config";
-}))
+      # Nix treats nativeBuildInputs specially for cross-compilation, but in this
+      # case, cross-compilation is accounted for explicitly. Using the variables
+      # ensures that the platform setup isn't messed with further. It also allows
+      # regular Python to be added in the future if it is ever needed.
+      PYTHON = "${python.pythonOnBuildForHost}/bin/python";
+      PYTHON_CONFIG = "${python.pythonOnBuildForHost}/bin/python-config";
+    }
+  )
+)
diff --git a/pkgs/development/python-modules/luddite/default.nix b/pkgs/development/python-modules/luddite/default.nix
index 4059288da674c..c7db0497e0ccc 100644
--- a/pkgs/development/python-modules/luddite/default.nix
+++ b/pkgs/development/python-modules/luddite/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, packaging
-, pytestCheckHook
-, pytest-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  packaging,
+  pytestCheckHook,
+  pytest-mock,
 }:
 
 buildPythonPackage rec {
@@ -25,17 +26,11 @@ buildPythonPackage rec {
       --replace "--disable-socket" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    packaging
-  ];
+  propagatedBuildInputs = [ packaging ];
 
-  pythonImportsCheck = [
-    "luddite"
-  ];
+  pythonImportsCheck = [ "luddite" ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/luftdaten/default.nix b/pkgs/development/python-modules/luftdaten/default.nix
index b87771380a8d3..213db1480c147 100644
--- a/pkgs/development/python-modules/luftdaten/default.nix
+++ b/pkgs/development/python-modules/luftdaten/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, httpx
-, pytest-asyncio
-, pytest-httpx
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  httpx,
+  pytest-asyncio,
+  pytest-httpx,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,9 @@ buildPythonPackage rec {
     hash = "sha256-nOhJKlUJ678DJ/ilyRHaiQ2fGfoCl+x6l9lsczVLAGw=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    httpx
-  ];
+  propagatedBuildInputs = [ httpx ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -43,6 +40,9 @@ buildPythonPackage rec {
     description = "Python API for interacting with luftdaten.info";
     homepage = "https://github.com/home-assistant-ecosystem/python-luftdaten";
     license = licenses.mit;
-    maintainers = with maintainers; [ dotlambda fab ];
+    maintainers = with maintainers; [
+      dotlambda
+      fab
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/luhn/default.nix b/pkgs/development/python-modules/luhn/default.nix
index e0e0393ff1d38..b0407235fe0a5 100644
--- a/pkgs/development/python-modules/luhn/default.nix
+++ b/pkgs/development/python-modules/luhn/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,17 +17,11 @@ buildPythonPackage rec {
     hash = "sha256-ZifaCjOVhWdXuzi5n6V+6eVN5vrEHKgUdpSOXoMyR18=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "test.py"
-  ];
+  pytestFlagsArray = [ "test.py" ];
 
-  pythonImportsCheck = [
-    "luhn"
-  ];
+  pythonImportsCheck = [ "luhn" ];
 
   meta = with lib; {
     description = "Python module for generate and verify Luhn check digits";
diff --git a/pkgs/development/python-modules/lunarcalendar/default.nix b/pkgs/development/python-modules/lunarcalendar/default.nix
index 03a94e5e4cdce..7472ea07a751f 100644
--- a/pkgs/development/python-modules/lunarcalendar/default.nix
+++ b/pkgs/development/python-modules/lunarcalendar/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-, python-dateutil
-, ephem
-, pytz
+  python-dateutil,
+  ephem,
+  pytz,
 
-, pytestCheckHook
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -33,7 +34,7 @@ buildPythonPackage rec {
 
   meta = {
     homepage = "https://github.com/wolfhong/LunarCalendar";
-    description = "A Lunar-Solar Converter, containing a number of lunar and solar festivals in China";
+    description = "Lunar-Solar Converter, containing a number of lunar and solar festivals in China";
     mainProgram = "lunar-find";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ tomasajt ];
diff --git a/pkgs/development/python-modules/lupa/default.nix b/pkgs/development/python-modules/lupa/default.nix
index 4b879a90966f5..8985e3f99ba46 100644
--- a/pkgs/development/python-modules/lupa/default.nix
+++ b/pkgs/development/python-modules/lupa/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchPypi
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "lupa";
-  version = "2.1";
+  version = "2.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-dgAwcS1SczlvXpY92HMa77WsZdku/4v4/UEkwWMP6VA=";
+    hash = "sha256-ZloAa8+Nmqzf25U4JLkp0GoMVZEKZitZvi8VerTIkk0=";
   };
 
   build-system = [
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  pythonImportsCheck = [
-    "lupa"
-  ];
+  pythonImportsCheck = [ "lupa" ];
 
   meta = with lib; {
     description = "Lua in Python";
diff --git a/pkgs/development/python-modules/lupupy/default.nix b/pkgs/development/python-modules/lupupy/default.nix
index 946d79da85dc5..424e7a583ff0f 100644
--- a/pkgs/development/python-modules/lupupy/default.nix
+++ b/pkgs/development/python-modules/lupupy/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, colorlog
-, pyyaml
-, fetchPypi
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  colorlog,
+  pyyaml,
+  fetchPypi,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-A92Jk6WlRKep3dkbqLiYYHklEh0pyncipRW6swq0mvo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     colorlog
@@ -33,9 +32,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "lupupy"
-  ];
+  pythonImportsCheck = [ "lupupy" ];
 
   meta = with lib; {
     description = "Python module to control Lupusec alarm control panels";
diff --git a/pkgs/development/python-modules/luqum/default.nix b/pkgs/development/python-modules/luqum/default.nix
index afad9262c7b3b..9280ebef736f7 100644
--- a/pkgs/development/python-modules/luqum/default.nix
+++ b/pkgs/development/python-modules/luqum/default.nix
@@ -1,12 +1,14 @@
-{ lib
-, buildPythonPackage
-, elastic-transport
-, elasticsearch-dsl
-, fetchFromGitHub
-, ply
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  elastic-transport,
+  elasticsearch-dsl,
+  fetchFromGitHub,
+  ply,
+  pytestCheckHook,
+  pytest-cov-stub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -25,26 +27,21 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace '--doctest-modules --doctest-glob="test_*.rst" --cov=luqum --cov-branch --cov-report html --no-cov-on-fail' ""
+      --replace '--doctest-modules --doctest-glob="test_*.rst"' ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    ply
-  ];
+  propagatedBuildInputs = [ ply ];
 
   nativeCheckInputs = [
     elastic-transport
     elasticsearch-dsl
     pytestCheckHook
+    pytest-cov-stub
   ];
 
-  pythonImportsCheck = [
-    "luqum"
-  ];
+  pythonImportsCheck = [ "luqum" ];
 
   disabledTestPaths = [
     # Tests require an Elasticsearch instance
@@ -53,7 +50,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A lucene query parser generating ElasticSearch queries";
+    description = "Lucene query parser generating ElasticSearch queries";
     homepage = "https://github.com/jurismarches/luqum";
     changelog = "https://github.com/jurismarches/luqum/releases/tag/${version}";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/luxor/default.nix b/pkgs/development/python-modules/luxor/default.nix
index 1bd7a7bbc018b..dbe1881e18330 100644
--- a/pkgs/development/python-modules/luxor/default.nix
+++ b/pkgs/development/python-modules/luxor/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pytest-aiohttp
-, pytestCheckHook
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytest-aiohttp,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,18 +20,14 @@ buildPythonPackage rec {
     sha256 = "GIwVEOKZAudTu2M3OM4LFVR8e22q52m/AN0anskdmWQ=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   nativeCheckInputs = [
     pytest-aiohttp
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "luxor"
-  ];
+  pythonImportsCheck = [ "luxor" ];
 
   meta = with lib; {
     description = "Python module to control FX Luminaire controllers";
diff --git a/pkgs/development/python-modules/luxtronik/default.nix b/pkgs/development/python-modules/luxtronik/default.nix
index 14e0cece25c4c..fd1f6c474fa04 100644
--- a/pkgs/development/python-modules/luxtronik/default.nix
+++ b/pkgs/development/python-modules/luxtronik/default.nix
@@ -1,9 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +22,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "luxtronik"
-  ];
+  pythonImportsCheck = [ "luxtronik" ];
 
   meta = with lib; {
     description = "Python library to interact with Luxtronik heatpump controllers";
diff --git a/pkgs/development/python-modules/lxmf/default.nix b/pkgs/development/python-modules/lxmf/default.nix
index 6682b2b09f641..cabfcea92cc3a 100644
--- a/pkgs/development/python-modules/lxmf/default.nix
+++ b/pkgs/development/python-modules/lxmf/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, rns
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  rns,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "lxmf";
-  version = "0.4.3";
+  version = "0.5.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -17,23 +18,17 @@ buildPythonPackage rec {
     owner = "markqvist";
     repo = "lxmf";
     rev = "refs/tags/${version}";
-    hash = "sha256-8Usu2fecSnyVfGrEJED4qMBO5RwJjTq5c7svCTu445Q=";
+    hash = "sha256-ccLWHjgxG/si08ie1F409FUmefuzVjNwcTt9Og4TU68=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    rns
-  ];
+  dependencies = [ rns ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "LXMF"
-  ];
+  pythonImportsCheck = [ "LXMF" ];
 
   meta = with lib; {
     description = "Lightweight Extensible Message Format for Reticulum";
diff --git a/pkgs/development/python-modules/lxml-html-clean/default.nix b/pkgs/development/python-modules/lxml-html-clean/default.nix
index 7c9b1b9de985d..3b0308fe24c7b 100644
--- a/pkgs/development/python-modules/lxml-html-clean/default.nix
+++ b/pkgs/development/python-modules/lxml-html-clean/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "lxml-html-clean";
-  version = "0.1.1";
+  version = "0.2.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "fedora-python";
     repo = "lxml_html_clean";
     rev = "refs/tags/${version}";
-    hash = "sha256-vnRsSkhjeDxZ2bYbIe+2D4GjymZWcIVo2LAPuCaYIZo=";
+    hash = "sha256-DiHbO2m/JckdXFMU7/LAW2hkyskqWtrQ93sgsVcdDSo=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/lxml-stubs/default.nix b/pkgs/development/python-modules/lxml-stubs/default.nix
index abb0d17f3918e..60d2baf7c6852 100644
--- a/pkgs/development/python-modules/lxml-stubs/default.nix
+++ b/pkgs/development/python-modules/lxml-stubs/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, lxml
-, pytest-mypy-plugins
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxml,
+  pytest-mypy-plugins,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-OwaPnCr0vylhdAvMMUfGV6DjZEh7Q71pgMOt66urg5I=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    lxml
-  ];
+  propagatedBuildInputs = [ lxml ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/lxml/default.nix b/pkgs/development/python-modules/lxml/default.nix
index d1d7036eda2e3..c035c52467956 100644
--- a/pkgs/development/python-modules/lxml/default.nix
+++ b/pkgs/development/python-modules/lxml/default.nix
@@ -1,29 +1,30 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# build-system
-, cython
-, setuptools
-
-# native dependencies
-, libxml2
-, libxslt
-, zlib
-, xcodebuild
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  cython,
+  setuptools,
+
+  # native dependencies
+  libxml2,
+  libxslt,
+  zlib,
+  xcodebuild,
 }:
 
 buildPythonPackage rec {
   pname = "lxml";
-  version = "5.1.0";
+  version = "5.2.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "lxml";
     repo = "lxml";
     rev = "refs/tags/lxml-${version}";
-    hash = "sha256-eWLYzZWatYDmhuBTZynsdytlNFKKmtWQ1XIyzVD8sDY=";
+    hash = "sha256-c9r2uqjXmQOXyPCsJTzi1OatkQ9rhJbKqpxaoFz2l18=";
   };
 
   # setuptoolsBuildPhase needs dependencies to be passed through nativeBuildInputs
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     libxslt.dev
     cython
     setuptools
-   ] ++ lib.optionals stdenv.isDarwin [
-    xcodebuild
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ xcodebuild ];
   buildInputs = [
     libxml2
     libxslt
@@ -58,6 +57,6 @@ buildPythonPackage rec {
     description = "Pythonic binding for the libxml2 and libxslt libraries";
     homepage = "https://lxml.de";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/lxml/libxml-2.12.patch b/pkgs/development/python-modules/lxml/libxml-2.12.patch
deleted file mode 100644
index d0d211c9fe38b..0000000000000
--- a/pkgs/development/python-modules/lxml/libxml-2.12.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 3b8807306d79d2ae2e9fa28c5ecd3b40b32ee65b Mon Sep 17 00:00:00 2001
-From: Stefan Behnel <stefan_ml@behnel.de>
-Date: Wed, 29 Nov 2023 10:28:47 +0100
-Subject: [PATCH] Follow changes in libxml2 2.12 and make xmlError usages
- 'const'. This mostly impacts the error callback functions.
-
----
- src/lxml/extensions.pxi | 4 ++--
- src/lxml/parser.pxi     | 4 ++--
- src/lxml/xmlerror.pxi   | 8 ++++----
- 3 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/src/lxml/extensions.pxi b/src/lxml/extensions.pxi
-index 35a321b7..42b4c4f6 100644
---- a/src/lxml/extensions.pxi
-+++ b/src/lxml/extensions.pxi
-@@ -393,7 +393,7 @@ cdef tuple LIBXML2_XPATH_ERROR_MESSAGES = (
-     b"?? Unknown error ??\n",
- )
- 
--cdef void _forwardXPathError(void* c_ctxt, xmlerror.xmlError* c_error) with gil:
-+cdef void _forwardXPathError(void* c_ctxt, const xmlerror.xmlError* c_error) with gil:
-     cdef xmlerror.xmlError error
-     cdef int xpath_code
-     if c_error.message is not NULL:
-@@ -414,7 +414,7 @@ cdef void _forwardXPathError(void* c_ctxt, xmlerror.xmlError* c_error) with gil:
- 
-     (<_BaseContext>c_ctxt)._error_log._receive(&error)
- 
--cdef void _receiveXPathError(void* c_context, xmlerror.xmlError* error) nogil:
-+cdef void _receiveXPathError(void* c_context, const xmlerror.xmlError* error) nogil:
-     if not __DEBUG:
-         return
-     if c_context is NULL:
-diff --git a/src/lxml/parser.pxi b/src/lxml/parser.pxi
-index 22463c7d..1566b6df 100644
---- a/src/lxml/parser.pxi
-+++ b/src/lxml/parser.pxi
-@@ -626,10 +626,10 @@ cdef _initParserContext(_ParserContext context,
-     if c_ctxt is not NULL:
-         context._initParserContext(c_ctxt)
- 
--cdef void _forwardParserError(xmlparser.xmlParserCtxt* _parser_context, xmlerror.xmlError* error) with gil:
-+cdef void _forwardParserError(xmlparser.xmlParserCtxt* _parser_context, const xmlerror.xmlError* error) with gil:
-     (<_ParserContext>_parser_context._private)._error_log._receive(error)
- 
--cdef void _receiveParserError(void* c_context, xmlerror.xmlError* error) nogil:
-+cdef void _receiveParserError(void* c_context, const xmlerror.xmlError* error) nogil:
-     if __DEBUG:
-         if c_context is NULL or (<xmlparser.xmlParserCtxt*>c_context)._private is NULL:
-             _forwardError(NULL, error)
-diff --git a/src/lxml/xmlerror.pxi b/src/lxml/xmlerror.pxi
-index 1b50444f..4cd745f9 100644
---- a/src/lxml/xmlerror.pxi
-+++ b/src/lxml/xmlerror.pxi
-@@ -66,7 +66,7 @@ cdef class _LogEntry:
-         tree.xmlFree(self._c_path)
- 
-     @cython.final
--    cdef _setError(self, xmlerror.xmlError* error):
-+    cdef _setError(self, const xmlerror.xmlError* error):
-         self.domain   = error.domain
-         self.type     = error.code
-         self.level    = <int>error.level
-@@ -198,7 +198,7 @@ cdef class _BaseErrorLog:
-         pass
- 
-     @cython.final
--    cdef void _receive(self, xmlerror.xmlError* error):
-+    cdef void _receive(self, const xmlerror.xmlError* error):
-         cdef bint is_error
-         cdef _LogEntry entry
-         cdef _BaseErrorLog global_log
-@@ -634,7 +634,7 @@ def use_global_python_log(PyErrorLog log not None):
- 
- 
- # local log functions: forward error to logger object
--cdef void _forwardError(void* c_log_handler, xmlerror.xmlError* error) with gil:
-+cdef void _forwardError(void* c_log_handler, const xmlerror.xmlError* error) with gil:
-     cdef _BaseErrorLog log_handler
-     if c_log_handler is not NULL:
-         log_handler = <_BaseErrorLog>c_log_handler
-@@ -645,7 +645,7 @@ cdef void _forwardError(void* c_log_handler, xmlerror.xmlError* error) with gil:
-     log_handler._receive(error)
- 
- 
--cdef void _receiveError(void* c_log_handler, xmlerror.xmlError* error) nogil:
-+cdef void _receiveError(void* c_log_handler, const xmlerror.xmlError* error) nogil:
-     # no Python objects here, may be called without thread context !
-     if __DEBUG:
-         _forwardError(c_log_handler, error)
--- 
-2.42.0
-
diff --git a/pkgs/development/python-modules/lyricwikia/default.nix b/pkgs/development/python-modules/lyricwikia/default.nix
index 05360af054fcd..0a19c22ddf8e6 100644
--- a/pkgs/development/python-modules/lyricwikia/default.nix
+++ b/pkgs/development/python-modules/lyricwikia/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, responses
-, six
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  responses,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -39,9 +40,7 @@ buildPythonPackage rec {
     responses
   ];
 
-  pythonImportsCheck = [
-    "lyricwikia"
-  ];
+  pythonImportsCheck = [ "lyricwikia" ];
 
   disabledTests = [
     # Test requires network access
diff --git a/pkgs/development/python-modules/lz4/default.nix b/pkgs/development/python-modules/lz4/default.nix
index cf1ac6294499c..627aa8a446a87 100644
--- a/pkgs/development/python-modules/lz4/default.nix
+++ b/pkgs/development/python-modules/lz4/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pkgconfig
-, psutil
-, pytestCheckHook
-, python
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pkgconfig,
+  psutil,
+  pytestCheckHook,
+  python,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -61,6 +62,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/python-lz4/python-lz4";
     changelog = "https://github.com/python-lz4/python-lz4/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/lzallright/default.nix b/pkgs/development/python-modules/lzallright/default.nix
index a82a7980c70f8..ee5be2d8dc440 100644
--- a/pkgs/development/python-modules/lzallright/default.nix
+++ b/pkgs/development/python-modules/lzallright/default.nix
@@ -1,34 +1,38 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, callPackage
-, fetchFromGitHub
-, rustPlatform
-, libiconv
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  callPackage,
+  fetchFromGitHub,
+  rustPlatform,
+  libiconv,
 }:
 
 buildPythonPackage rec {
   pname = "lzallright";
-  version = "0.2.3";
+  version = "0.2.4";
 
   src = fetchFromGitHub {
     owner = "vlaci";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-Zzif6WtecgAkNmml0kt0Z+Ewx0L30ahr+kwzYR5aUAM=";
+    hash = "sha256-6Dez14qlZ7cnVQfaiTHGuiTSAHvBoKtolgKF7ne9ASw=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-+pV9q2QM6qFA1a5E10OAsE7KJEUsTiEiU1KqO4/2rFw=";
+    hash = "sha256-ZYFAWkcDdX10024hc+gdARyaJFpNNcXf+gGLxBP5VlA=";
   };
 
   format = "pyproject";
 
-  nativeBuildInputs = with rustPlatform; [ cargoSetupHook maturinBuildHook ];
+  nativeBuildInputs = with rustPlatform; [
+    cargoSetupHook
+    maturinBuildHook
+  ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
   pythonImportsCheck = [ "lzallright" ];
 
diff --git a/pkgs/development/python-modules/lzallright/tests.nix b/pkgs/development/python-modules/lzallright/tests.nix
index 1093fc3c79e98..f28dd124278a9 100644
--- a/pkgs/development/python-modules/lzallright/tests.nix
+++ b/pkgs/development/python-modules/lzallright/tests.nix
@@ -1,4 +1,8 @@
-{ lzallright, buildPythonPackage, pytestCheckHook }:
+{
+  lzallright,
+  buildPythonPackage,
+  pytestCheckHook,
+}:
 
 buildPythonPackage {
   inherit (lzallright) version src;
diff --git a/pkgs/development/python-modules/lzstring/default.nix b/pkgs/development/python-modules/lzstring/default.nix
index 02602f1f8c20c..99ae373d063bd 100644
--- a/pkgs/development/python-modules/lzstring/default.nix
+++ b/pkgs/development/python-modules/lzstring/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, future
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  future,
 }:
 
 buildPythonPackage rec {
-  pname   = "lzstring";
+  pname = "lzstring";
   version = "1.0.4";
   format = "setuptools";
 
@@ -18,8 +19,8 @@ buildPythonPackage rec {
 
   meta = {
     description = "lz-string for python";
-    homepage    = "https://github.com/gkovacs/lz-string-python";
-    license     = lib.licenses.mit;
+    homepage = "https://github.com/gkovacs/lz-string-python";
+    license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ obadz ];
   };
 }
diff --git a/pkgs/development/python-modules/m2crypto/default.nix b/pkgs/development/python-modules/m2crypto/default.nix
index ae2e7b87ded1e..1043325e10334 100644
--- a/pkgs/development/python-modules/m2crypto/default.nix
+++ b/pkgs/development/python-modules/m2crypto/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, openssl
-, parameterized
-, pytestCheckHook
-, pythonOlder
-, swig2
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  openssl,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  swig,
 }:
 
 buildPythonPackage rec {
   pname = "m2crypto";
   version = "0.41.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -22,34 +23,35 @@ buildPythonPackage rec {
     hash = "sha256-OhNYx+6EkEbZF4Knd/F4a/AnocHVG1+vjxlDW/w/FJU=";
   };
 
-  nativeBuildInputs = [
-    swig2
-    openssl
-  ];
+  build-system = [ setuptools ];
 
-  buildInputs = [
-    openssl
-    parameterized
-  ];
+  nativeBuildInputs = [ swig ];
 
-  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin (toString [
-    "-Wno-error=implicit-function-declaration"
-    "-Wno-error=incompatible-pointer-types"
-  ]);
+  buildInputs = [ openssl ];
+
+  env =
+    {
+      NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin (toString [
+        "-Wno-error=implicit-function-declaration"
+        "-Wno-error=incompatible-pointer-types"
+      ]);
+    }
+    // lib.optionalAttrs (stdenv.hostPlatform != stdenv.buildPlatform) {
+      CPP = "${stdenv.cc.targetPrefix}cpp";
+    };
 
   nativeCheckInputs = [
     pytestCheckHook
+    openssl
   ];
 
-  pythonImportsCheck = [
-    "M2Crypto"
-  ];
+  pythonImportsCheck = [ "M2Crypto" ];
 
   meta = with lib; {
-    description = "A Python crypto and SSL toolkit";
+    description = "Python crypto and SSL toolkit";
     homepage = "https://gitlab.com/m2crypto/m2crypto";
     changelog = "https://gitlab.com/m2crypto/m2crypto/-/blob/${version}/CHANGES";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/m2r/default.nix b/pkgs/development/python-modules/m2r/default.nix
index ab94a0b5e262d..9fc1cf12fb4a3 100644
--- a/pkgs/development/python-modules/m2r/default.nix
+++ b/pkgs/development/python-modules/m2r/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, docutils
-, mistune
-, pygments
+{
+  lib,
+  buildPythonPackage,
+  fetchpatch,
+  fetchPypi,
+  docutils,
+  mistune,
+  pygments,
 }:
 
 buildPythonPackage rec {
@@ -14,7 +15,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-qvtn/EnPsdieRqNEOsdH4V9LtC3yDtBPBnrZ777iVqs=";
+    hash = "sha256-qvtn/EnPsdieRqNEOsdH4V9LtC3yDtBPBnrZ777iVqs=";
   };
 
   patches = [
@@ -31,7 +32,10 @@ buildPythonPackage rec {
       --replace "optional" "positional"
   '';
 
-  propagatedBuildInputs = [ mistune docutils ];
+  propagatedBuildInputs = [
+    mistune
+    docutils
+  ];
 
   nativeCheckInputs = [ pygments ];
 
diff --git a/pkgs/development/python-modules/m3u8/default.nix b/pkgs/development/python-modules/m3u8/default.nix
index 6dab2c26ad3ca..b4a28dce28098 100644
--- a/pkgs/development/python-modules/m3u8/default.nix
+++ b/pkgs/development/python-modules/m3u8/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, iso8601
-, bottle
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  iso8601,
+  bottle,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "m3u8";
-  version = "4.1.0";
+  version = "6.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     owner = "globocom";
     repo = "m3u8";
     rev = "refs/tags/${version}";
-    hash = "sha256-vH5y/fk9dW8w54U3o+70enbTOubV4V0/NVbSSqOY9rQ=";
+    hash = "sha256-1SOuKKNBg67Yc0a6Iqb1goTE7sraptzpFIB2lvrbMQg=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    iso8601
-  ];
+  dependencies = [ iso8601 ];
 
   nativeCheckInputs = [
     bottle
@@ -43,9 +40,7 @@ buildPythonPackage rec {
     "test_raise_timeout_exception_if_timeout_happens_when_loading_from_uri"
   ];
 
-  pythonImportsCheck = [
-    "m3u8"
-  ];
+  pythonImportsCheck = [ "m3u8" ];
 
   meta = with lib; {
     description = "Python m3u8 parser";
diff --git a/pkgs/development/python-modules/mac-alias/default.nix b/pkgs/development/python-modules/mac-alias/default.nix
index 913ea42403ed8..8cdb98fc6c08b 100644
--- a/pkgs/development/python-modules/mac-alias/default.nix
+++ b/pkgs/development/python-modules/mac-alias/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
     hash = "sha256-yZxyjrUS6VXBHxpiA6D/qIg7JlSeiv5ogEAxql2oVrc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # pypi package does not include tests;
   # tests anyway require admin privileges to succeed
diff --git a/pkgs/development/python-modules/mac-vendor-lookup/default.nix b/pkgs/development/python-modules/mac-vendor-lookup/default.nix
index dbbd16dd6ea28..e5cd0d793b6a9 100644
--- a/pkgs/development/python-modules/mac-vendor-lookup/default.nix
+++ b/pkgs/development/python-modules/mac-vendor-lookup/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, aiofiles
-, aiohttp
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  aiofiles,
+  aiohttp,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
 
   doCheck = false; # no tests
 
-  pythonImportsCheck = [
-    "mac_vendor_lookup"
-  ];
+  pythonImportsCheck = [ "mac_vendor_lookup" ];
 
   meta = with lib; {
     description = "Find the vendor for a given MAC address";
diff --git a/pkgs/development/python-modules/macaddress/default.nix b/pkgs/development/python-modules/macaddress/default.nix
index 2849506671b2b..97d07f45d1c88 100644
--- a/pkgs/development/python-modules/macaddress/default.nix
+++ b/pkgs/development/python-modules/macaddress/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, hypothesis
-, reprshed
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  hypothesis,
+  reprshed,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-2eD5Ui8kUduKLJ0mSiwaz7TQSeF1+2ASirp70V/8+EA=";
   };
 
-  pythonImportsCheck = [
-    "macaddress"
-  ];
+  pythonImportsCheck = [ "macaddress" ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -28,13 +27,11 @@ buildPythonPackage rec {
     reprshed
   ];
 
-  pytestFlagsArray = [
-    "$src/test.py"
-  ];
+  pytestFlagsArray = [ "$src/test.py" ];
 
   meta = with lib; {
     homepage = "https://github.com/mentalisttraceur/python-macaddress";
-    description = "A module for handling hardware identifiers like MAC addresses";
+    description = "Module for handling hardware identifiers like MAC addresses";
     license = licenses.bsd0;
     maintainers = with maintainers; [ netali ];
   };
diff --git a/pkgs/development/python-modules/macaroonbakery/default.nix b/pkgs/development/python-modules/macaroonbakery/default.nix
index eb1b50eb4a9b1..e9eb357839964 100644
--- a/pkgs/development/python-modules/macaroonbakery/default.nix
+++ b/pkgs/development/python-modules/macaroonbakery/default.nix
@@ -3,7 +3,7 @@
   buildPythonPackage,
   fetchFromGitHub,
   nix-update-script,
-  protobuf3,
+  protobuf,
   pymacaroons,
   pynacl,
   pyrfc3339,
@@ -31,7 +31,7 @@ buildPythonPackage rec {
   nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
-    protobuf3
+    protobuf
     pymacaroons
     pynacl
     pyrfc3339
@@ -50,7 +50,7 @@ buildPythonPackage rec {
   passthru.updateScript = nix-update-script { };
 
   meta = {
-    description = "A Python library for working with macaroons";
+    description = "Python library for working with macaroons";
     homepage = "https://github.com/go-macaroon-bakery/py-macaroon-bakery";
     changelog = "https://github.com/go-macaroon-bakery/py-macaroon-bakery/releases/tag/${version}";
     license = lib.licenses.lgpl3Only;
diff --git a/pkgs/development/python-modules/macfsevents/default.nix b/pkgs/development/python-modules/macfsevents/default.nix
index db0750e1957a5..77e82746e77d6 100644
--- a/pkgs/development/python-modules/macfsevents/default.nix
+++ b/pkgs/development/python-modules/macfsevents/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, CoreFoundation
-, CoreServices
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  CoreFoundation,
+  CoreServices,
 }:
 
 buildPythonPackage rec {
@@ -12,10 +13,13 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "MacFSEvents";
     inherit version;
-    sha256 = "sha256-v3KD8dUXdkzNyBlbIWMdu6wcUGuSC/mo6ilWsxJ2Ucs=";
+    hash = "sha256-v3KD8dUXdkzNyBlbIWMdu6wcUGuSC/mo6ilWsxJ2Ucs=";
   };
 
-  buildInputs = [ CoreFoundation CoreServices ];
+  buildInputs = [
+    CoreFoundation
+    CoreServices
+  ];
 
   # Some tests fail under nix build directory
   doCheck = false;
diff --git a/pkgs/development/python-modules/macropy/default.nix b/pkgs/development/python-modules/macropy/default.nix
index 051ce068b3179..d87d2de44bb51 100644
--- a/pkgs/development/python-modules/macropy/default.nix
+++ b/pkgs/development/python-modules/macropy/default.nix
@@ -1,11 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, isPy27
-, pythonAtLeast
-, pinqSupport ? false, sqlalchemy
-, pyxlSupport ? false, pyxl3
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  isPy27,
+  pythonAtLeast,
+  pinqSupport ? false,
+  sqlalchemy,
+  pyxlSupport ? false,
+  pyxl3,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +26,8 @@ buildPythonPackage rec {
   };
 
   # js_snippets extra only works with python2
-  propagatedBuildInputs = [ ]
-    ++ lib.optional pinqSupport sqlalchemy
-    ++ lib.optional pyxlSupport pyxl3;
+  propagatedBuildInputs =
+    [ ] ++ lib.optional pinqSupport sqlalchemy ++ lib.optional pyxlSupport pyxl3;
 
   checkPhase = ''
     ${python.interpreter} run_tests.py
diff --git a/pkgs/development/python-modules/maec/default.nix b/pkgs/development/python-modules/maec/default.nix
new file mode 100644
index 0000000000000..2c29be54289fd
--- /dev/null
+++ b/pkgs/development/python-modules/maec/default.nix
@@ -0,0 +1,50 @@
+{
+  lib,
+  buildPythonPackage,
+  cybox,
+  distutils,
+  fetchFromGitHub,
+  lxml,
+  mixbox,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "maec";
+  version = "4.1.0.17";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "MAECProject";
+    repo = "python-maec";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-I2Ov2AQiC9D8ivHqn7owcTsNS7Kw+CWVyijK3VO52Og=";
+  };
+
+  build-system = [
+    distutils
+    setuptools
+  ];
+
+  dependencies = [
+    cybox
+    lxml
+    mixbox
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "maec" ];
+
+  meta = {
+    description = "Library for parsing, manipulating, and generating MAEC content";
+    homepage = "https://github.com/MAECProject/python-maec/";
+    changelog = "https://github.com/MAECProject/python-maec/blob/${src.rev}/CHANGES.txt";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/maestral/default.nix b/pkgs/development/python-modules/maestral/default.nix
index 885911b181c8f..52ebece153147 100644
--- a/pkgs/development/python-modules/maestral/default.nix
+++ b/pkgs/development/python-modules/maestral/default.nix
@@ -1,37 +1,38 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, makePythonPath
-, pythonOlder
-, python
-, click
-, dbus-python
-, desktop-notifier
-, dropbox
-, fasteners
-, importlib-metadata
-, keyring
-, keyrings-alt
-, packaging
-, pathspec
-, pyro5
-, requests
-, rich
-, rubicon-objc
-, setuptools
-, survey
-, typing-extensions
-, watchdog
-, xattr
-, pytestCheckHook
-, nixosTests
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  makePythonPath,
+  pythonOlder,
+  python,
+  click,
+  dbus-python,
+  desktop-notifier,
+  dropbox,
+  fasteners,
+  importlib-metadata,
+  keyring,
+  keyrings-alt,
+  packaging,
+  pathspec,
+  pyro5,
+  requests,
+  rich,
+  rubicon-objc,
+  setuptools,
+  survey,
+  typing-extensions,
+  watchdog,
+  xattr,
+  pytestCheckHook,
+  nixosTests,
 }:
 
 buildPythonPackage rec {
   pname = "maestral";
-  version = "1.9.3";
-  format = "pyproject";
+  version = "1.9.4";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -39,10 +40,12 @@ buildPythonPackage rec {
     owner = "SamSchott";
     repo = "maestral";
     rev = "refs/tags/v${version}";
-    hash = "sha256-h7RDaCVICi3wl6/b1s01cINhFirDOpOXoxTPZIBH3jE=";
+    hash = "sha256-akh0COltpUU4Z4kfubg6A7k6W8ICoqVYkmFpMkTC8H8=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     click
     desktop-notifier
     dbus-python
@@ -61,19 +64,15 @@ buildPythonPackage rec {
     typing-extensions
     watchdog
     xattr
-  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
-    rubicon-objc
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ rubicon-objc ];
 
   makeWrapperArgs = [
     # Add the installed directories to the python path so the daemon can find them
-    "--prefix PYTHONPATH : ${makePythonPath propagatedBuildInputs}"
+    "--prefix PYTHONPATH : ${makePythonPath dependencies}"
     "--prefix PYTHONPATH : $out/${python.sitePackages}"
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # ModuleNotFoundError: No module named '_watchdog_fsevents'
   doCheck = !(stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64);
@@ -82,39 +81,39 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d)
   '';
 
-  disabledTests = [
-    # We don't want to benchmark
-    "test_performance"
-    # Requires systemd
-    "test_autostart"
-    # Requires network access
-    "test_check_for_updates"
-    # Tries to look at /usr
-    "test_filestatus"
-    "test_path_exists_case_insensitive"
-    "test_cased_path_candidates"
-    # AssertionError
-    "test_locking_multiprocess"
-    # OSError: [Errno 95] Operation not supported
-    "test_move_preserves_xattrs"
-  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
-    # maetral daemon does not start but worked in real environment
-    "test_catching_non_ignored_events"
-    "test_connection"
-    "test_event_handler"
-    "test_fs_ignore_tree_creation"
-    "test_lifecycle"
-    "test_notify_level"
-    "test_notify_snooze"
-    "test_receiving_events"
-    "test_remote_exceptions"
-    "test_start_already_running"
-    "test_stop"
-  ];
+  disabledTests =
+    [
+      # We don't want to benchmark
+      "test_performance"
+      # Requires systemd
+      "test_autostart"
+      # Requires network access
+      "test_check_for_updates"
+      # Tries to look at /usr
+      "test_filestatus"
+      "test_path_exists_case_insensitive"
+      "test_cased_path_candidates"
+      # AssertionError
+      "test_locking_multiprocess"
+      # OSError: [Errno 95] Operation not supported
+      "test_move_preserves_xattrs"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # maetral daemon does not start but worked in real environment
+      "test_catching_non_ignored_events"
+      "test_connection"
+      "test_event_handler"
+      "test_fs_ignore_tree_creation"
+      "test_lifecycle"
+      "test_notify_level"
+      "test_notify_snooze"
+      "test_receiving_events"
+      "test_remote_exceptions"
+      "test_start_already_running"
+      "test_stop"
+    ];
 
-  pythonImportsCheck = [
-    "maestral"
-  ];
+  pythonImportsCheck = [ "maestral" ];
 
   passthru.tests.maestral = nixosTests.maestral;
 
@@ -124,6 +123,10 @@ buildPythonPackage rec {
     homepage = "https://maestral.app";
     changelog = "https://github.com/samschott/maestral/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ natsukium peterhoeg sfrijters ];
+    maintainers = with maintainers; [
+      natsukium
+      peterhoeg
+      sfrijters
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/magic-filter/default.nix b/pkgs/development/python-modules/magic-filter/default.nix
index 8b4cc8068965e..fa963525c6b86 100644
--- a/pkgs/development/python-modules/magic-filter/default.nix
+++ b/pkgs/development/python-modules/magic-filter/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, hatchling
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  hatchling,
 }:
 
 buildPythonPackage rec {
@@ -25,13 +26,9 @@ buildPythonPackage rec {
       --replace '"1"' '"${version}"'
   '';
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "magic_filter" ];
 
diff --git a/pkgs/development/python-modules/magic-wormhole-mailbox-server/default.nix b/pkgs/development/python-modules/magic-wormhole-mailbox-server/default.nix
index fc9636c351a05..d98cfa2595793 100644
--- a/pkgs/development/python-modules/magic-wormhole-mailbox-server/default.nix
+++ b/pkgs/development/python-modules/magic-wormhole-mailbox-server/default.nix
@@ -1,29 +1,30 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, six
-, attrs
-, twisted
-, pyopenssl
-, service-identity
-, autobahn
-, treq
-, mock
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  setuptools,
+  six,
+  attrs,
+  twisted,
+  autobahn,
+  treq,
+  mock,
+  nixosTests,
+  pythonOlder,
+  pythonAtLeast,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "magic-wormhole-mailbox-server";
   version = "0.4.1";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.7";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1af10592909caaf519c00e706eac842c5e77f8d4356215fe9c61c7b2258a88fb";
+    hash = "sha256-GvEFkpCcqvUZwA5wbqyELF53+NQ1YhX+nGHHsiWKiPs=";
   };
 
   patches = [
@@ -35,35 +36,40 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     attrs
+    autobahn
+    setuptools # pkg_resources is referenced at runtime
     six
     twisted
-    autobahn
-  ] ++ autobahn.optional-dependencies.twisted
-  ++ twisted.optional-dependencies.tls;
+  ] ++ autobahn.optional-dependencies.twisted ++ twisted.optional-dependencies.tls;
+
+  pythonImportsCheck = [ "wormhole_mailbox_server" ];
 
   nativeCheckInputs = [
+    pytestCheckHook
     treq
     mock
-    twisted
   ];
 
-  # Fails in Darwin's sandbox
-  postPatch = lib.optionalString stdenv.isDarwin ''
-    echo 'LogRequests.skip = "Operation not permitted"' >> src/wormhole_mailbox_server/test/test_web.py
-    echo 'WebSocketAPI.skip = "Operation not permitted"' >> src/wormhole_mailbox_server/test/test_web.py
-  '';
+  disabledTestPaths = lib.optionals stdenv.hostPlatform.isDarwin [
+    # these tests fail in Darwin's sandbox
+    "src/wormhole_mailbox_server/test/test_web.py"
+  ];
 
-  checkPhase = ''
-    trial -j$NIX_BUILD_CORES wormhole_mailbox_server
-  '';
+  passthru.tests = {
+    inherit (nixosTests) magic-wormhole-mailbox-server;
+  };
 
-  meta = with lib; {
+  meta = {
     description = "Securely transfer data between computers";
-    homepage = "https://github.com/warner/magic-wormhole-mailbox-server";
+    homepage = "https://github.com/magic-wormhole/magic-wormhole-mailbox-server";
     changelog = "https://github.com/magic-wormhole/magic-wormhole-mailbox-server/blob/${version}/NEWS.md";
-    license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.mit;
+    maintainers = [ lib.maintainers.mjoerg ];
+    # Python 3.12 support: https://github.com/magic-wormhole/magic-wormhole-mailbox-server/issues/41
+    broken = pythonOlder "3.7" || pythonAtLeast "3.12";
   };
 }
diff --git a/pkgs/development/python-modules/magic-wormhole-transit-relay/default.nix b/pkgs/development/python-modules/magic-wormhole-transit-relay/default.nix
index 463b3560457d2..bf8b990fe0d9d 100644
--- a/pkgs/development/python-modules/magic-wormhole-transit-relay/default.nix
+++ b/pkgs/development/python-modules/magic-wormhole-transit-relay/default.nix
@@ -1,33 +1,51 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, autobahn
-, mock
-, twisted
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  autobahn,
+  mock,
+  twisted,
+  pythonOlder,
+  pythonAtLeast,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "magic-wormhole-transit-relay";
   version = "0.2.1";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0ppsx2s1ysikns1h053x67z2zmficbn3y3kf52bzzslhd2s02j6b";
+    hash = "sha256-y0gBtGiQ6v+XKG4OP+xi0dUv/jF9FACDtjNqH7To+l4=";
   };
 
-  propagatedBuildInputs = [ autobahn twisted ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [ mock twisted ];
+  dependencies = [
+    autobahn
+    setuptools # pkg_resources is referenced at runtime
+    twisted
+  ];
 
-  checkPhase = ''
-    trial -j$NIX_BUILD_CORES wormhole_transit_relay
-  '';
+  pythonImportsCheck = [ "wormhole_transit_relay" ];
 
-  meta = with lib; {
+  nativeCheckInputs = [
+    pytestCheckHook
+    mock
+    twisted
+  ];
+
+  __darwinAllowLocalNetworking = true;
+
+  meta = {
     description = "Transit Relay server for Magic-Wormhole";
     homepage = "https://github.com/magic-wormhole/magic-wormhole-transit-relay";
-    license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    changelog = "https://github.com/magic-wormhole/magic-wormhole-transit-relay/blob/${version}/NEWS.md";
+    license = lib.licenses.mit;
+    maintainers = [ lib.maintainers.mjoerg ];
+    # Python 3.12 support: https://github.com/magic-wormhole/magic-wormhole-transit-relay/issues/35
+    broken = pythonOlder "3.7" || pythonAtLeast "3.12";
   };
 }
diff --git a/pkgs/development/python-modules/magic-wormhole/default.nix b/pkgs/development/python-modules/magic-wormhole/default.nix
index 353e2c0e053b0..0e6b95276c93b 100644
--- a/pkgs/development/python-modules/magic-wormhole/default.nix
+++ b/pkgs/development/python-modules/magic-wormhole/default.nix
@@ -1,122 +1,125 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-
-# build-system
-, setuptools
-
-# dependencies
-, spake2
-, pynacl
-, six
-, attrs
-, twisted
-, autobahn
-, automat
-, tqdm
-, click
-, humanize
-, txtorcon
-
-# optional-dependencies
-, noiseprotocol
-
-# tests
-, nettools
-, unixtools
-, mock
-, magic-wormhole-transit-relay
-, magic-wormhole-mailbox-server
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  spake2,
+  pynacl,
+  six,
+  attrs,
+  twisted,
+  autobahn,
+  automat,
+  tqdm,
+  click,
+  humanize,
+  iterable-io,
+  txtorcon,
+  zipstream-ng,
+
+  # optional-dependencies
+  noiseprotocol,
+
+  # tests
+  nettools,
+  unixtools,
+  mock,
+  magic-wormhole-transit-relay,
+  magic-wormhole-mailbox-server,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "magic-wormhole";
-  version = "0.13.0";
-  format = "pyproject";
+  version = "0.15.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-rDvWgoYnDn8UnAYUmo5Anl+jTX/rDoiESibSnu0tFRY=";
+    hash = "sha256-viVjtcVUe6MzvGYI8EgATI821VYTm/L/49n0HaJ5cAY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
+  postPatch =
+    # enable tests by fixing the location of the wormhole binary
+    ''
+      substituteInPlace src/wormhole/test/test_cli.py --replace-fail \
+        'locations = procutils.which("wormhole")' \
+        'return "${placeholder "out"}/bin/wormhole"'
+    ''
+    # fix the location of the ifconfig binary
+    + lib.optionalString stdenv.hostPlatform.isLinux ''
+      sed -i -e "s|'ifconfig'|'${nettools}/bin/ifconfig'|" src/wormhole/ipaddrs.py
+    '';
+
+  build-system = [ setuptools ];
+
+  pythonRelaxDeps = [
+    "spake2"
   ];
 
-  propagatedBuildInputs = [
-    spake2
-    pynacl
-    six
+  dependencies = [
     attrs
-    twisted
     autobahn
     automat
-    tqdm
     click
     humanize
+    iterable-io
+    pynacl
+    six
+    spake2
+    tqdm
+    twisted
     txtorcon
-  ]
-  ++ autobahn.optional-dependencies.twisted
-  ++ twisted.optional-dependencies.tls;
+    zipstream-ng
+  ] ++ autobahn.optional-dependencies.twisted ++ twisted.optional-dependencies.tls;
 
   passthru.optional-dependencies = {
-    dilation = [
-      noiseprotocol
-    ];
+    dilation = [ noiseprotocol ];
   };
 
-  nativeCheckInputs = [
-    mock
-    magic-wormhole-transit-relay
-    magic-wormhole-mailbox-server
-    pytestCheckHook
-  ]
-  ++ passthru.optional-dependencies.dilation
-  ++ lib.optionals stdenv.isDarwin [ unixtools.locale ];
-
-  disabledTests = lib.optionals stdenv.isDarwin [
-    # These tests doesn't work within Darwin's sandbox
-    "test_version"
-    "test_text"
-    "test_receiver"
-    "test_sender"
-    "test_sender_allocation"
-    "test_text_wrong_password"
-    "test_override"
-    "test_allocate_port"
-    "test_allocate_port_no_reuseaddr"
-    "test_ignore_localhost_hint"
-    "test_ignore_localhost_hint_orig"
-    "test_keep_only_localhost_hint"
-    "test_get_direct_hints"
-    "test_listener"
-    "test_success_direct"
-    "test_direct"
-    "test_relay"
-  ];
+  nativeCheckInputs =
+    # For Python 3.12, remove magic-wormhole-mailbox-server and magic-wormhole-transit-relay from test dependencies,
+    # which are not yet supported with this version.
+    lib.optionals (!magic-wormhole-mailbox-server.meta.broken) [ magic-wormhole-mailbox-server ]
+    ++ lib.optionals (!magic-wormhole-transit-relay.meta.broken) [ magic-wormhole-transit-relay ]
+    ++ [
+      mock
+      pytestCheckHook
+    ]
+    ++ passthru.optional-dependencies.dilation
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [ unixtools.locale ];
 
-  disabledTestPaths = lib.optionals stdenv.isDarwin [
-    # These tests doesn't work within Darwin's sandbox
-    "src/wormhole/test/test_xfer_util.py"
-    "src/wormhole/test/test_wormhole.py"
-  ];
+  __darwinAllowLocalNetworking = true;
 
-  postPatch = lib.optionalString stdenv.isLinux ''
-    sed -i -e "s|'ifconfig'|'${nettools}/bin/ifconfig'|" src/wormhole/ipaddrs.py
-  '';
+  disabledTestPaths =
+    # For Python 3.12, remove the tests depending on magic-wormhole-mailbox-server and magic-wormhole-transit-relay,
+    # which are not yet supported with this version.
+    lib.optionals
+      (magic-wormhole-mailbox-server.meta.broken || magic-wormhole-transit-relay.meta.broken)
+      [
+        "src/wormhole/test/dilate/test_full.py"
+        "src/wormhole/test/test_args.py"
+        "src/wormhole/test/test_cli.py"
+        "src/wormhole/test/test_wormhole.py"
+        "src/wormhole/test/test_xfer_util.py"
+      ]
+    ++ lib.optionals magic-wormhole-transit-relay.meta.broken [ "src/wormhole/test/test_transit.py" ];
 
   postInstall = ''
     install -Dm644 docs/wormhole.1 $out/share/man/man1/wormhole.1
   '';
 
-  meta = with lib; {
+  meta = {
     changelog = "https://github.com/magic-wormhole/magic-wormhole/blob/${version}/NEWS.md";
     description = "Securely transfer data between computers";
     homepage = "https://github.com/magic-wormhole/magic-wormhole";
-    license = licenses.mit;
-    maintainers = with maintainers; [ asymmetric ];
+    license = lib.licenses.mit;
+    maintainers = [ lib.maintainers.mjoerg ];
     mainProgram = "wormhole";
   };
 }
diff --git a/pkgs/development/python-modules/magic/default.nix b/pkgs/development/python-modules/magic/default.nix
index 45fd740e2e89d..fac5e681fbb83 100644
--- a/pkgs/development/python-modules/magic/default.nix
+++ b/pkgs/development/python-modules/magic/default.nix
@@ -1,6 +1,8 @@
-{ lib, stdenv
-, buildPythonPackage
-, pkgs
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pkgs,
 }:
 
 buildPythonPackage {
@@ -20,9 +22,8 @@ buildPythonPackage {
   doCheck = false;
 
   meta = with lib; {
-    description = "A Python wrapper around libmagic";
+    description = "Python wrapper around libmagic";
     homepage = "http://www.darwinsys.com/file/";
     license = licenses.lgpl2;
   };
-
 }
diff --git a/pkgs/development/python-modules/magicgui/default.nix b/pkgs/development/python-modules/magicgui/default.nix
index 2e8f1b529a14b..06476b9d92433 100644
--- a/pkgs/development/python-modules/magicgui/default.nix
+++ b/pkgs/development/python-modules/magicgui/default.nix
@@ -1,15 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools-scm
-, pytestCheckHook
-, typing-extensions
-, qtpy
-, pyside2
-, psygnal
-, docstring-parser
-, napari # a reverse-dependency, for tests
-}: buildPythonPackage rec {
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  pytestCheckHook,
+  typing-extensions,
+  qtpy,
+  pyside2,
+  psygnal,
+  docstring-parser,
+  napari, # a reverse-dependency, for tests
+}:
+buildPythonPackage rec {
   pname = "magicgui";
   version = "0.5.1";
 
@@ -23,12 +25,20 @@
   };
 
   nativeBuildInputs = [ setuptools-scm ];
-  propagatedBuildInputs = [ typing-extensions qtpy pyside2 psygnal docstring-parser ];
+  propagatedBuildInputs = [
+    typing-extensions
+    qtpy
+    pyside2
+    psygnal
+    docstring-parser
+  ];
   nativeCheckInputs = [ pytestCheckHook ];
 
   doCheck = false; # Reports "Fatal Python error"
 
-  passthru.tests = { inherit napari; };
+  passthru.tests = {
+    inherit napari;
+  };
 
   meta = with lib; {
     description = "Build GUIs from python functions, using magic.  (napari/magicgui)";
diff --git a/pkgs/development/python-modules/magika/default.nix b/pkgs/development/python-modules/magika/default.nix
index 6e4099004317a..444f4d844ea37 100644
--- a/pkgs/development/python-modules/magika/default.nix
+++ b/pkgs/development/python-modules/magika/default.nix
@@ -1,33 +1,32 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchPypi
-, magika
-, numpy
-, onnxruntime
-, poetry-core
-, python-dotenv
-, pythonOlder
-, stdenv
-, tabulate
-, testers
-, tqdm
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchPypi,
+  magika,
+  numpy,
+  onnxruntime,
+  poetry-core,
+  python-dotenv,
+  pythonOlder,
+  stdenv,
+  tabulate,
+  testers,
+  tqdm,
 }:
 
 buildPythonPackage rec {
   pname = "magika";
-  version = "0.5.0";
+  version = "0.5.1";
   pyproject = true;
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-r6C7iDCG/o3JEvweQGb4upr+LuHvmNtkwtduZGehCsc=";
+    hash = "sha256-Q9wRU6FjcyciWmJqFVDAo5Wh1F6jPsH11GubCAI4vuA=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     click
@@ -49,6 +48,6 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ mihaimaruseac ];
     mainProgram = "magika";
     # Currently, disabling on AArch64 as it onnx runtime crashes on ofborg
-    broken = stdenv.isAarch64 && stdenv.isLinux;
+    broken = stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux;
   };
 }
diff --git a/pkgs/development/python-modules/mahotas/default.nix b/pkgs/development/python-modules/mahotas/default.nix
index e5ad5a283db7a..307ed168acdb2 100644
--- a/pkgs/development/python-modules/mahotas/default.nix
+++ b/pkgs/development/python-modules/mahotas/default.nix
@@ -1,25 +1,25 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pillow
-, scipy
-, numpy
-, pytestCheckHook
-, imread
-, lib
-, stdenv
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  pillow,
+  scipy,
+  numpy,
+  pytestCheckHook,
+  imread,
+  lib,
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "mahotas";
-  version = "1.4.13";
+  version = "1.4.14";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "luispedro";
     repo = "mahotas";
-    rev = "v${version}";
-    hash = "sha256-AmctF/9hLgHw6FUm0s61eCdcc12lBa1t0OkXclis//w=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-9tjk3rhcfAYROZKwmwHzHAN7Ui0EgmxPErQyF//K0r8=";
   };
 
   propagatedBuildInputs = [
@@ -31,11 +31,8 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ pytestCheckHook ];
 
-
   # mahotas/_morph.cpp:864:10: error: no member named 'random_shuffle' in namespace 'std'
-  env = lib.optionalAttrs stdenv.cc.isClang {
-    NIX_CFLAGS_COMPILE = "-std=c++14";
-  };
+  env = lib.optionalAttrs stdenv.cc.isClang { NIX_CFLAGS_COMPILE = "-std=c++14"; };
 
   # tests must be run in the build directory
   preCheck = ''
@@ -50,14 +47,12 @@ buildPythonPackage rec {
     "test_haralick3d"
   ];
 
-  pythonImportsCheck = [
-    "mahotas"
-  ];
+  pythonImportsCheck = [ "mahotas" ];
 
-  disabled = stdenv.isi686; # Failing tests
+  disabled = stdenv.hostPlatform.isi686; # Failing tests
 
   meta = with lib; {
-    broken = (stdenv.isLinux && stdenv.isAarch64);
+    broken = (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64);
     description = "Computer vision package based on numpy";
     homepage = "https://mahotas.readthedocs.io/";
     maintainers = with maintainers; [ luispedro ];
diff --git a/pkgs/development/python-modules/mail-parser/default.nix b/pkgs/development/python-modules/mail-parser/default.nix
index 5364fd25c21fe..5a3084ae84cf9 100644
--- a/pkgs/development/python-modules/mail-parser/default.nix
+++ b/pkgs/development/python-modules/mail-parser/default.nix
@@ -1,4 +1,12 @@
-{ lib, buildPythonPackage, python, glibcLocales, fetchFromGitHub, six, simplejson }:
+{
+  lib,
+  buildPythonPackage,
+  python,
+  glibcLocales,
+  fetchFromGitHub,
+  six,
+  simplejson,
+}:
 
 buildPythonPackage rec {
   pname = "mail-parser";
@@ -15,7 +23,10 @@ buildPythonPackage rec {
   LC_ALL = "en_US.utf-8";
 
   nativeBuildInputs = [ glibcLocales ];
-  propagatedBuildInputs = [ simplejson six ];
+  propagatedBuildInputs = [
+    simplejson
+    six
+  ];
 
   # Taken from .travis.yml
   checkPhase = ''
@@ -27,7 +38,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A mail parser for python 2 and 3";
+    description = "Mail parser for python 2 and 3";
     mainProgram = "mailparser";
     homepage = "https://github.com/SpamScope/mail-parser";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/mailcap-fix/default.nix b/pkgs/development/python-modules/mailcap-fix/default.nix
index 3d644bec3a93c..102d1f51a144a 100644
--- a/pkgs/development/python-modules/mailcap-fix/default.nix
+++ b/pkgs/development/python-modules/mailcap-fix/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,8 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "A patched mailcap module that conforms to RFC 1524";
+    description = "Patched mailcap module that conforms to RFC 1524";
     homepage = "https://github.com/michael-lazar/mailcap_fix";
     license = licenses.unlicense;
   };
-
 }
diff --git a/pkgs/development/python-modules/mailchecker/default.nix b/pkgs/development/python-modules/mailchecker/default.nix
index 1f038308a76b9..06aabd241b551 100644
--- a/pkgs/development/python-modules/mailchecker/default.nix
+++ b/pkgs/development/python-modules/mailchecker/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "mailchecker";
-  version = "6.0.4";
+  version = "6.0.9";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-XtZOk3KgIzu9vwI0HnoklGQVZ42KVOPQBXxJ1fpfJjA=";
+    hash = "sha256-8X6Qf/5vb67cJD9X6wyclR9h3smvjpaSLB3NCTOJuI0=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/mailchimp/default.nix b/pkgs/development/python-modules/mailchimp/default.nix
index 6308e7e8e6bba..fc7e4a212b7c6 100644
--- a/pkgs/development/python-modules/mailchimp/default.nix
+++ b/pkgs/development/python-modules/mailchimp/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, docopt
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  docopt,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,8 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A CLI client and Python API library for the MailChimp email platform";
+    description = "CLI client and Python API library for the MailChimp email platform";
     homepage = "http://apidocs.mailchimp.com/api/2.0/";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/mailmanclient/default.nix b/pkgs/development/python-modules/mailmanclient/default.nix
index bb584d6797f61..4a6091aab2711 100644
--- a/pkgs/development/python-modules/mailmanclient/default.nix
+++ b/pkgs/development/python-modules/mailmanclient/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -18,18 +19,12 @@ buildPythonPackage rec {
     hash = "sha256-Y1gcYEyn6sAhSJwVqsygaklY63b2ZXTG+rBerGVN2Fc=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ requests ] ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
   # Tests require a running Mailman instance
   doCheck = false;
 
-  pythonImportsCheck = [
-    "mailmanclient"
-  ];
+  pythonImportsCheck = [ "mailmanclient" ];
 
   meta = with lib; {
     description = "REST client for driving Mailman 3";
diff --git a/pkgs/development/python-modules/mailsuite/default.nix b/pkgs/development/python-modules/mailsuite/default.nix
index 0069defa4b890..4b0aeca1431b2 100644
--- a/pkgs/development/python-modules/mailsuite/default.nix
+++ b/pkgs/development/python-modules/mailsuite/default.nix
@@ -1,16 +1,17 @@
-{ buildPythonPackage
-, fetchPypi
-, pythonOlder
-, lib
-
-# pythonPackages
-, hatchling
-, dnspython
-, expiringdict
-, html2text
-, mail-parser
-, imapclient
-, publicsuffix2
+{
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  lib,
+
+  # pythonPackages
+  hatchling,
+  dnspython,
+  expiringdict,
+  html2text,
+  mail-parser,
+  imapclient,
+  publicsuffix2,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-R4nAphydamZojQR7pro5Y3dZg3nYK0+X5lFBMJUpCfw=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     dnspython
@@ -43,7 +42,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = {
-    description = "A Python package to simplify receiving, parsing, and sending email";
+    description = "Python package to simplify receiving, parsing, and sending email";
     homepage = "https://seanthegeek.github.io/mailsuite/";
     maintainers = with lib.maintainers; [ talyz ];
     license = lib.licenses.asl20;
diff --git a/pkgs/development/python-modules/maison/default.nix b/pkgs/development/python-modules/maison/default.nix
index d05376bcb2794..4b94862ce3324 100644
--- a/pkgs/development/python-modules/maison/default.nix
+++ b/pkgs/development/python-modules/maison/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, poetry-core
-, pydantic
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, toml
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  poetry-core,
+  pydantic,
+  pytestCheckHook,
+  pythonOlder,
+  toml,
 }:
 
 buildPythonPackage rec {
@@ -24,13 +24,10 @@ buildPythonPackage rec {
     hash = "sha256-2hUmk91wr5o2cV3un2nMoXDG+3GT7SaIOKY+QaZY3nw=";
   };
 
-  pythonRelaxDeps = [
-    "pydantic"
-  ];
+  pythonRelaxDeps = [ "pydantic" ];
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -39,13 +36,9 @@ buildPythonPackage rec {
     toml
   ];
 
-  checkInputs = [
-    pytestCheckHook
-  ];
+  checkInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "maison"
-  ];
+  pythonImportsCheck = [ "maison" ];
 
   meta = with lib; {
     description = "Library to read settings from config files";
diff --git a/pkgs/development/python-modules/makefun/default.nix b/pkgs/development/python-modules/makefun/default.nix
index bc26604826acb..6a727d666f59a 100644
--- a/pkgs/development/python-modules/makefun/default.nix
+++ b/pkgs/development/python-modules/makefun/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
 
-# build-system
-, setuptools
-, setuptools-scm
+  # build-system
+  setuptools,
+  setuptools-scm,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "makefun";
-  version = "1.15.2";
+  version = "1.15.4";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-FvKis02e4MK1eMlgoYCMl04oIs959um5xFWqzhCILUU=";
+    hash = "sha256-n5uZBOfDl3WTdKiPTFd4H7qypFjex430s+5ics2fsBA=";
   };
 
   postPatch = ''
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "makefun" ];
 
diff --git a/pkgs/development/python-modules/mako/default.nix b/pkgs/development/python-modules/mako/default.nix
index 0f512f8ec3a7d..5e58f90b58d8f 100644
--- a/pkgs/development/python-modules/mako/default.nix
+++ b/pkgs/development/python-modules/mako/default.nix
@@ -1,28 +1,30 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, isPyPy
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  isPyPy,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# propagates
-, markupsafe
+  # propagates
+  markupsafe,
 
-# optional-dependencies
-, babel
-, lingua
+  # optional-dependencies
+  babel,
+  lingua,
 
-# tests
-, chameleon
-, mock
-, pytestCheckHook
+  # tests
+  chameleon,
+  mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "mako";
-  version = "1.3.2";
+  version = "1.3.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -30,24 +32,16 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "Mako";
     inherit version;
-    hash = "sha256-KgyK1/YnQnGzu3Rn3TfPnMbatLwZy2mk7xBmlALeaY4=";
+    hash = "sha256-SNvCBWjB0naiaYs22Wj6dhYb8ScZSQfqb8WU+oH5Q7w=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    markupsafe
-  ];
+  propagatedBuildInputs = [ markupsafe ];
 
   passthru.optional-dependencies = {
-    babel = [
-      babel
-    ];
-    lingua = [
-      lingua
-    ];
+    babel = [ babel ];
+    lingua = [ lingua ];
   };
 
   nativeCheckInputs = [
@@ -56,15 +50,18 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
 
-  disabledTests = lib.optionals isPyPy [
-    # https://github.com/sqlalchemy/mako/issues/315
-    "test_alternating_file_names"
-    # https://github.com/sqlalchemy/mako/issues/238
-    "test_file_success"
-    "test_stdin_success"
-    # fails on pypy2.7
-    "test_bytestring_passthru"
-  ];
+  disabledTests =
+    lib.optionals isPyPy [
+      # https://github.com/sqlalchemy/mako/issues/315
+      "test_alternating_file_names"
+      # https://github.com/sqlalchemy/mako/issues/238
+      "test_file_success"
+      "test_stdin_success"
+      # fails on pypy2.7
+      "test_bytestring_passthru"
+    ]
+    # https://github.com/sqlalchemy/mako/issues/408
+    ++ lib.optional (stdenv.targetPlatform.useLLVM or false) "test_future_import";
 
   meta = with lib; {
     description = "Super-fast templating language";
diff --git a/pkgs/development/python-modules/malduck/default.nix b/pkgs/development/python-modules/malduck/default.nix
index 0f15b6a1066cb..204003bdddbc7 100644
--- a/pkgs/development/python-modules/malduck/default.nix
+++ b/pkgs/development/python-modules/malduck/default.nix
@@ -1,34 +1,38 @@
-{ lib
-, buildPythonPackage
-, capstone
-, click
-, cryptography
-, dnfile
-, fetchFromGitHub
-, pefile
-, pycryptodomex
-, pyelftools
-, pythonOlder
-, pytestCheckHook
-, typing-extensions
-, yara-python
+{
+  lib,
+  buildPythonPackage,
+  capstone,
+  click,
+  cryptography,
+  dnfile,
+  fetchFromGitHub,
+  pefile,
+  pycryptodomex,
+  pyelftools,
+  pythonOlder,
+  setuptools,
+  pytestCheckHook,
+  typing-extensions,
+  yara-python,
 }:
 
 buildPythonPackage rec {
   pname = "malduck";
-  version = "4.4.0";
-  format = "setuptools";
+  version = "4.4.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "CERT-Polska";
-    repo = pname;
+    repo = "malduck";
     rev = "refs/tags/v${version}";
-    hash = "sha256-CXHbU1AudvOJrG9MKYDQXeEtwrJODRPQtK43dQzZASE=";
+    hash = "sha256-Btx0HxiZWrb0TDpBokQGtBE2EDK0htONe/DwqlPgAd4=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     capstone
     click
     cryptography
@@ -40,26 +44,16 @@ buildPythonPackage rec {
     yara-python
   ];
 
-  postPatch = ''
-    substituteInPlace requirements.txt \
-      --replace "pefile==2019.4.18" "pefile" \
-      --replace "dnfile==0.11.0" "dnfile"
-  '';
-
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "malduck"
-  ];
+  pythonImportsCheck = [ "malduck" ];
 
   meta = with lib; {
     description = "Helper for malware analysis";
-    mainProgram = "malduck";
     homepage = "https://github.com/CERT-Polska/malduck";
     changelog = "https://github.com/CERT-Polska/malduck/releases/tag/v${version}";
     license = with licenses; [ bsd3 ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "malduck";
   };
 }
diff --git a/pkgs/development/python-modules/mamba-ssm/default.nix b/pkgs/development/python-modules/mamba-ssm/default.nix
new file mode 100644
index 0000000000000..11ac68c1e19da
--- /dev/null
+++ b/pkgs/development/python-modules/mamba-ssm/default.nix
@@ -0,0 +1,77 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  causal-conv1d,
+  einops,
+  ninja,
+  setuptools,
+  torch,
+  transformers,
+  triton,
+  cudaPackages,
+  rocmPackages,
+  config,
+  cudaSupport ? config.cudaSupport,
+  which,
+}:
+
+buildPythonPackage rec {
+  pname = "mamba";
+  version = "2.2.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "state-spaces";
+    repo = "mamba";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-R702JjM3AGk7upN7GkNK8u1q4ekMK9fYQkpO6Re45Ng=";
+  };
+
+  build-system = [
+    ninja
+    setuptools
+    torch
+  ];
+
+  nativeBuildInputs = [ which ];
+
+  buildInputs = (
+    lib.optionals cudaSupport (
+      with cudaPackages;
+      [
+        cuda_cudart # cuda_runtime.h, -lcudart
+        cuda_cccl
+        libcusparse # cusparse.h
+        libcusolver # cusolverDn.h
+        cuda_nvcc
+        libcublas
+      ]
+    )
+  );
+
+  dependencies = [
+    causal-conv1d
+    einops
+    torch
+    transformers
+    triton
+  ];
+
+  env = {
+    MAMBA_FORCE_BUILD = "TRUE";
+  } // lib.optionalAttrs cudaSupport { CUDA_HOME = "${lib.getDev cudaPackages.cuda_nvcc}"; };
+
+  # pytest tests not enabled due to nvidia GPU dependency
+  pythonImportsCheck = [ "mamba_ssm" ];
+
+  meta = with lib; {
+    description = "Linear-Time Sequence Modeling with Selective State Spaces";
+    homepage = "https://github.com/state-spaces/mamba";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ cfhammill ];
+    # The package requires CUDA or ROCm, the ROCm build hasn't
+    # been completed or tested, so broken if not using cuda.
+    broken = !cudaSupport;
+  };
+}
diff --git a/pkgs/development/python-modules/managesieve/default.nix b/pkgs/development/python-modules/managesieve/default.nix
index 1f0c911d5df8e..0fbe908805515 100644
--- a/pkgs/development/python-modules/managesieve/default.nix
+++ b/pkgs/development/python-modules/managesieve/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,23 +19,20 @@ buildPythonPackage rec {
     hash = "sha256-2CCb6h69H58YT1byj/fkrfzGsMUbr0GHpJLcMpsSE/M=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "managesieve"
-  ];
+  pythonImportsCheck = [ "managesieve" ];
 
   meta = with lib; {
     description = "ManageSieve client library for remotely managing Sieve scripts";
     homepage = "https://managesieve.readthedocs.io/";
     # PSFL for the python module, GPLv3 only for sieveshell
-    license = with licenses; [ gpl3Only psfl ];
+    license = with licenses; [
+      gpl3Only
+      psfl
+    ];
     maintainers = with maintainers; [ dadada ];
     mainProgram = "sieveshell";
   };
diff --git a/pkgs/development/python-modules/mando/default.nix b/pkgs/development/python-modules/mando/default.nix
index dc48dd18ebe15..9d60bf3eddb87 100644
--- a/pkgs/development/python-modules/mando/default.nix
+++ b/pkgs/development/python-modules/mando/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-# Python deps
-, six
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  # Python deps
+  six,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,21 +21,13 @@ buildPythonPackage rec {
     hash = "sha256-Ylrrfo57jqGuWEqCa5RyTT9AagBpUvAfviHkyJPFv08=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
-  pythonImportsCheck = [
-    "mando"
-  ];
+  pythonImportsCheck = [ "mando" ];
 
   meta = with lib; {
     description = "Create Python CLI apps with little to no effort at all";
diff --git a/pkgs/development/python-modules/mandown/default.nix b/pkgs/development/python-modules/mandown/default.nix
index eae43bc8d9510..942643cc457c1 100644
--- a/pkgs/development/python-modules/mandown/default.nix
+++ b/pkgs/development/python-modules/mandown/default.nix
@@ -1,39 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonRelaxDepsHook
-, beautifulsoup4
-, comicon
-, feedparser
-, filetype
-, lxml
-, natsort
-, pillow
-, python-slugify
-, requests
-, typer
-, pyside6
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  beautifulsoup4,
+  comicon,
+  feedparser,
+  filetype,
+  lxml,
+  natsort,
+  nix-update-script,
+  pillow,
+  python-slugify,
+  requests,
+  typer,
+  pyside6,
 }:
 
 buildPythonPackage rec {
   pname = "mandown";
-  version = "1.7.0";
+  version = "1.10.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "potatoeggy";
     repo = "mandown";
     rev = "refs/tags/v${version}";
-    hash = "sha256-oHa7/2fv+BG5KIKFIICYBqddub5SokDvAI6frbVwGSo=";
+    hash = "sha256-eMZXXOGe9jKf9bXEinIIu6w3i4SOkLnDWnxmT5G0RWA=";
   };
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = [
+    "lxml"
     "pillow"
     "typer"
   ];
@@ -52,9 +53,8 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    gui = [
-      pyside6
-    ];
+    gui = [ pyside6 ];
+    updateScript = nix-update-script { };
   };
 
   pythonImportsCheck = [ "mandown" ];
diff --git a/pkgs/development/python-modules/manga-ocr/default.nix b/pkgs/development/python-modules/manga-ocr/default.nix
index 7f0371c356ae3..03de5065e011c 100644
--- a/pkgs/development/python-modules/manga-ocr/default.nix
+++ b/pkgs/development/python-modules/manga-ocr/default.nix
@@ -60,6 +60,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/kha-white/manga-ocr";
     changelog = "https://github.com/kha-white/manga-ocr/releases/tag/${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [laurent-f1z1];
+    maintainers = with maintainers; [ laurent-f1z1 ];
   };
 }
diff --git a/pkgs/development/python-modules/manhole/default.nix b/pkgs/development/python-modules/manhole/default.nix
index 94aa5f4435966..940dc355e4823 100644
--- a/pkgs/development/python-modules/manhole/default.nix
+++ b/pkgs/development/python-modules/manhole/default.nix
@@ -1,19 +1,20 @@
-{ lib, stdenv
-, buildPythonPackage
-, fetchPypi
-, pytest
-, requests
-, process-tests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  requests,
+  process-tests,
 }:
 
 buildPythonPackage rec {
   pname = "manhole";
-  version = "1.8.0";
+  version = "1.8.1";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bada20a25b547b395d472e2e08928f0437df26bbdbda4797c55863198e29a21f";
+    sha256 = "sha256-Nmj9r4OzPJQ9tOdQ4MVU4xwg9jM4SWiV3U1kEGgNnEs=";
   };
 
   # test_help expects architecture-dependent Linux signal numbers.
@@ -21,11 +22,15 @@ buildPythonPackage rec {
   # {test_locals,test_socket_path} fail to remove /tmp/manhole-socket
   # on the x86_64-darwin builder.
   #
-  # TODO: change this back to `doCheck = stdenv.isLinux` after
+  # TODO: change this back to `doCheck = stdenv.hostPlatform.isLinux` after
   # https://github.com/ionelmc/python-manhole/issues/54 is fixed
   doCheck = false;
 
-  nativeCheckInputs = [ pytest requests process-tests ];
+  nativeCheckInputs = [
+    pytest
+    requests
+    process-tests
+  ];
   checkPhase = ''
     # Based on its tox.ini
     export PYTHONUNBUFFERED=yes
diff --git a/pkgs/development/python-modules/manifest-ml/default.nix b/pkgs/development/python-modules/manifest-ml/default.nix
index 4465066682c9a..7eeec2a60fee1 100644
--- a/pkgs/development/python-modules/manifest-ml/default.nix
+++ b/pkgs/development/python-modules/manifest-ml/default.nix
@@ -1,29 +1,29 @@
-{ lib
-, accelerate
-, aiohttp
-, buildPythonPackage
-, fastapi
-, fetchFromGitHub
-, flask
-, numpy
-, pg8000
-, pillow
-, pydantic
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, redis
-, requests
-, sentence-transformers
-, setuptools
-, sqlalchemy
-, sqlitedict
-, tenacity
-, tiktoken
-, torch
-, transformers
-, uvicorn
-, xxhash
+{
+  lib,
+  accelerate,
+  aiohttp,
+  buildPythonPackage,
+  fastapi,
+  fetchFromGitHub,
+  flask,
+  numpy,
+  pg8000,
+  pillow,
+  pydantic,
+  pytestCheckHook,
+  pythonOlder,
+  redis,
+  requests,
+  sentence-transformers,
+  setuptools,
+  sqlalchemy,
+  sqlitedict,
+  tenacity,
+  tiktoken,
+  torch,
+  transformers,
+  uvicorn,
+  xxhash,
 }:
 
 buildPythonPackage rec {
@@ -42,12 +42,9 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  pythonRelaxDeps = [
-    "pydantic"
-  ];
+  pythonRelaxDeps = [ "pydantic" ];
 
   build-system = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -77,9 +74,7 @@ buildPythonPackage rec {
       fastapi
       uvicorn
     ];
-    diffusers = [
-      pillow
-    ];
+    diffusers = [ pillow ];
     gcp = [
       pg8000
       # cloud-sql-python-connector
@@ -116,9 +111,7 @@ buildPythonPackage rec {
     "test_timing"
   ];
 
-  pythonImportsCheck = [
-    "manifest"
-  ];
+  pythonImportsCheck = [ "manifest" ];
 
   meta = with lib; {
     description = "Manifest for Prompting Foundation Models";
diff --git a/pkgs/development/python-modules/manifestoo-core/default.nix b/pkgs/development/python-modules/manifestoo-core/default.nix
index e0101a6672aa4..b52039bf7fbae 100644
--- a/pkgs/development/python-modules/manifestoo-core/default.nix
+++ b/pkgs/development/python-modules/manifestoo-core/default.nix
@@ -1,27 +1,26 @@
-{ buildPythonPackage
-, typing-extensions
-, fetchPypi
-, lib
-, nix-update-script
-, hatch-vcs
-, pythonOlder
-, importlib-resources
+{
+  buildPythonPackage,
+  typing-extensions,
+  fetchPypi,
+  lib,
+  nix-update-script,
+  hatch-vcs,
+  pythonOlder,
+  importlib-resources,
 }:
 
 buildPythonPackage rec {
   pname = "manifestoo-core";
-  version = "1.5";
+  version = "1.8";
   format = "pyproject";
 
   src = fetchPypi {
     inherit version;
     pname = "manifestoo_core";
-    hash = "sha256-a3v2WfJ42bh2LlAsH9ekpLFsAlOiTTLGNknTW2mTxCI=";
+    hash = "sha256-AjvwG9j2TILslTR4GwK6eHfql4l7I+QIwUd6XQ2ojmg=";
   };
 
-  nativeBuildInputs = [
-    hatch-vcs
-  ];
+  nativeBuildInputs = [ hatch-vcs ];
 
   propagatedBuildInputs =
     lib.optionals (pythonOlder "3.7") [ importlib-resources ]
@@ -30,7 +29,7 @@ buildPythonPackage rec {
   passthru.updateScript = nix-update-script { };
 
   meta = with lib; {
-    description = "A library to reason about Odoo addons manifests";
+    description = "Library to reason about Odoo addons manifests";
     homepage = "https://github.com/acsone/manifestoo-core";
     license = licenses.lgpl3Only;
     maintainers = with maintainers; [ yajo ];
diff --git a/pkgs/development/python-modules/manifestoo/default.nix b/pkgs/development/python-modules/manifestoo/default.nix
index 63383eb76ee09..45c59f1c23094 100644
--- a/pkgs/development/python-modules/manifestoo/default.nix
+++ b/pkgs/development/python-modules/manifestoo/default.nix
@@ -1,47 +1,40 @@
-{ buildPythonPackage
-, fetchPypi
-, hatch-vcs
-, importlib-metadata
-, lib
-, manifestoo-core
-, nix-update-script
-, pytestCheckHook
-, pythonOlder
-, textual
-, typer
-, typing-extensions
+{
+  buildPythonPackage,
+  fetchPypi,
+  hatch-vcs,
+  lib,
+  manifestoo-core,
+  nix-update-script,
+  pytestCheckHook,
+  textual,
+  typer,
 }:
 
 buildPythonPackage rec {
   pname = "manifestoo";
-  version = "0.7";
+  version = "1.0";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-gCGchc+fShBgt6fVJAx80+QnH+vxWo3jsIyePkFwhYE=";
+    hash = "sha256-iP9QVyAvKMTo8GuceiXWALmWKQ9yLX2qxl0S7IT+kMA=";
   };
 
-  nativeBuildInputs = [
-    hatch-vcs
-  ];
+  nativeBuildInputs = [ hatch-vcs ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  propagatedBuildInputs = [
-    manifestoo-core
-    textual
-    typer
-  ]
-  ++ typer.passthru.optional-dependencies.all
-  ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
+  propagatedBuildInputs =
+    [
+      manifestoo-core
+      textual
+      typer
+    ];
 
   passthru.updateScript = nix-update-script { };
 
   meta = with lib; {
-    description = "A tool to reason about Odoo addons manifests";
+    description = "Tool to reason about Odoo addons manifests";
     homepage = "https://github.com/acsone/manifestoo";
     license = licenses.mit;
     maintainers = with maintainers; [ yajo ];
diff --git a/pkgs/development/python-modules/manim-slides/default.nix b/pkgs/development/python-modules/manim-slides/default.nix
index 8f89346b81b8f..0ef0941b2ba37 100644
--- a/pkgs/development/python-modules/manim-slides/default.nix
+++ b/pkgs/development/python-modules/manim-slides/default.nix
@@ -1,40 +1,41 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-, hatchling
-, pythonRelaxDepsHook
-, manim
-, ffmpeg
+  hatchling,
+  hatch-fancy-pypi-readme,
+  manim,
+  ffmpeg,
 
-, av
-, click
-, click-default-group
-, jinja2
-, lxml
-, numpy
-, opencv4
-, pillow
-, pydantic
-, pydantic-extra-types
-, python-pptx
-, qtpy
-, requests
-, rich
-, rtoml
-, tqdm
-, pyqt6
+  av,
+  click,
+  click-default-group,
+  jinja2,
+  lxml,
+  numpy,
+  opencv4,
+  pillow,
+  pydantic,
+  pydantic-extra-types,
+  python-pptx,
+  qtpy,
+  requests,
+  rich,
+  rtoml,
+  tqdm,
+  pyqt6,
 
   # Optional dependencies
-, ipython
+  ipython,
 
   # As Module or application?
-, withGui ? false
+  withGui ? false,
 }:
 buildPythonPackage rec {
   pname = "manim-slides";
-  version = "5.1.5";
+  version = "5.1.7";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -43,46 +44,50 @@ buildPythonPackage rec {
     owner = "jeertmans";
     repo = "manim-slides";
     rev = "refs/tags/v${version}";
-    hash = "sha256-YOveWGukizXvEUOhId7UDJema64ypbg7w06JzrTsKjw=";
+    hash = "sha256-egQYL4Qvs1fQcJ5WEM461TSYqs2XN39wbyfx9uEFeIs=";
   };
 
   build-system = [
     hatchling
-    pythonRelaxDepsHook
+    hatch-fancy-pypi-readme
   ];
 
   pythonRemoveDeps = [ "opencv-python" ];
 
-  pythonRelaxDeps = [ "rtoml" "qtpy" ];
+  pythonRelaxDeps = [
+    "rtoml"
+    "qtpy"
+  ];
 
-  dependencies = [
-    av
-    click
-    click-default-group
-    jinja2
-    lxml
-    numpy
-    opencv4
-    pillow
-    pydantic
-    pydantic-extra-types
-    python-pptx
-    qtpy
-    requests
-    rich
-    rtoml
-    tqdm
+  dependencies =
+    [
+      av
+      click
+      click-default-group
+      jinja2
+      lxml
+      numpy
+      opencv4
+      pillow
+      pydantic
+      pydantic-extra-types
+      python-pptx
+      qtpy
+      requests
+      rich
+      rtoml
+      tqdm
 
-    # avconv is a potential alternative
-    ffmpeg
-    # This could also be manimgl, but that is not (yet) packaged
-    manim
-  ]
-  ++ lib.lists.optional (!withGui)
-    ipython
-  ++ lib.lists.optional withGui
-    # dependency of qtpy (could also be pyqt5)
-    pyqt6;
+      # avconv is a potential alternative
+      ffmpeg
+      # This could also be manimgl, but that is not (yet) packaged
+      manim
+    ]
+    ++ lib.lists.optional (!withGui) ipython
+    ++
+      lib.lists.optional withGui
+        # dependency of qtpy (could also be pyqt5)
+        pyqt6;
 
   pythonImportsCheck = [ "manim_slides" ];
 
diff --git a/pkgs/development/python-modules/manim/default.nix b/pkgs/development/python-modules/manim/default.nix
index 09f2953c362e4..d96b03dfd35af 100644
--- a/pkgs/development/python-modules/manim/default.nix
+++ b/pkgs/development/python-modules/manim/default.nix
@@ -1,43 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-
-, cairo
-, ffmpeg
-, texliveInfraOnly
-
-, click
-, click-default-group
-, cloup
-, colour
-, grpcio
-, grpcio-tools
-, importlib-metadata
-, isosurfaces
-, jupyterlab
-, manimpango
-, mapbox-earcut
-, moderngl
-, moderngl-window
-, networkx
-, numpy
-, pillow
-, pycairo
-, pydub
-, pygments
-, rich
-, scipy
-, screeninfo
-, skia-pathops
-, srt
-, svgelements
-, tqdm
-, watchdog
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+
+  cairo,
+  ffmpeg,
+  texliveInfraOnly,
+
+  click,
+  click-default-group,
+  cloup,
+  colour,
+  grpcio,
+  grpcio-tools,
+  importlib-metadata,
+  isosurfaces,
+  jupyterlab,
+  manimpango,
+  mapbox-earcut,
+  moderngl,
+  moderngl-window,
+  networkx,
+  numpy,
+  pillow,
+  pycairo,
+  pydub,
+  pygments,
+  rich,
+  scipy,
+  screeninfo,
+  skia-pathops,
+  srt,
+  svgelements,
+  tqdm,
+  watchdog,
 }:
 
 let
@@ -52,36 +52,137 @@ let
   #   https://github.com/yihui/tinytex/blob/master/tools/pkgs-custom.txt
   #
   # these two combined add up to:
-  manim-tinytex = texliveInfraOnly.withPackages (ps: with ps; [
-
-    # tinytex
-    amsfonts amsmath atbegshi atveryend auxhook babel bibtex
-    bigintcalc bitset booktabs cm dehyph dvipdfmx dvips ec epstopdf-pkg etex
-    etexcmds etoolbox euenc everyshi fancyvrb filehook firstaid float fontspec
-    framed geometry gettitlestring glyphlist graphics graphics-cfg graphics-def
-    grffile helvetic hycolor hyperref hyph-utf8 iftex inconsolata infwarerr
-    intcalc knuth-lib kvdefinekeys kvoptions kvsetkeys l3backend l3kernel
-    l3packages latex latex-amsmath-dev latex-bin latex-fonts latex-tools-dev
-    latexconfig latexmk letltxmacro lm lm-math ltxcmds lua-alt-getopt luahbtex
-    lualatex-math lualibs luaotfload luatex mdwtools metafont mfware natbib
-    pdfescape pdftex pdftexcmds plain psnfss refcount rerunfilecheck stringenc
-    tex tex-ini-files times tipa tools unicode-data unicode-math uniquecounter
-    url xcolor xetex xetexconfig xkeyval xunicode zapfding
-
-    # manim-latex
-    standalone everysel preview doublestroke ms setspace rsfs relsize ragged2e
-    fundus-calligra microtype wasysym physics dvisvgm jknapltx wasy cm-super
-    babel-english gnu-freefont mathastext cbfonts-fd
-  ]);
-
-in buildPythonPackage rec {
+  manim-tinytex = texliveInfraOnly.withPackages (
+    ps: with ps; [
+
+      # tinytex
+      amsfonts
+      amsmath
+      atbegshi
+      atveryend
+      auxhook
+      babel
+      bibtex
+      bigintcalc
+      bitset
+      booktabs
+      cm
+      dehyph
+      dvipdfmx
+      dvips
+      ec
+      epstopdf-pkg
+      etex
+      etexcmds
+      etoolbox
+      euenc
+      everyshi
+      fancyvrb
+      filehook
+      firstaid
+      float
+      fontspec
+      framed
+      geometry
+      gettitlestring
+      glyphlist
+      graphics
+      graphics-cfg
+      graphics-def
+      grffile
+      helvetic
+      hycolor
+      hyperref
+      hyph-utf8
+      iftex
+      inconsolata
+      infwarerr
+      intcalc
+      knuth-lib
+      kvdefinekeys
+      kvoptions
+      kvsetkeys
+      l3backend
+      l3kernel
+      l3packages
+      latex
+      latex-amsmath-dev
+      latex-bin
+      latex-fonts
+      latex-tools-dev
+      latexconfig
+      latexmk
+      letltxmacro
+      lm
+      lm-math
+      ltxcmds
+      lua-alt-getopt
+      luahbtex
+      lualatex-math
+      lualibs
+      luaotfload
+      luatex
+      mdwtools
+      metafont
+      mfware
+      natbib
+      pdfescape
+      pdftex
+      pdftexcmds
+      plain
+      psnfss
+      refcount
+      rerunfilecheck
+      stringenc
+      tex
+      tex-ini-files
+      times
+      tipa
+      tools
+      unicode-data
+      unicode-math
+      uniquecounter
+      url
+      xcolor
+      xetex
+      xetexconfig
+      xkeyval
+      xunicode
+      zapfding
+
+      # manim-latex
+      standalone
+      everysel
+      preview
+      doublestroke
+      ms
+      setspace
+      rsfs
+      relsize
+      ragged2e
+      fundus-calligra
+      microtype
+      wasysym
+      physics
+      dvisvgm
+      jknapltx
+      wasy
+      cm-super
+      babel-english
+      gnu-freefont
+      mathastext
+      cbfonts-fd
+    ]
+  );
+in
+buildPythonPackage rec {
   pname = "manim";
   pyproject = true;
   version = "0.18.1";
   disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
-    owner  = "ManimCommunity";
+    owner = "ManimCommunity";
     repo = "manim";
     rev = "refs/tags/v${version}";
     hash = "sha256-o+Wl3NMK6yopcsRVFtZuUE9c1GABa5d8rbQNHDJ4OiQ=";
@@ -89,7 +190,6 @@ in buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = [
@@ -100,9 +200,7 @@ in buildPythonPackage rec {
     "watchdog"
   ];
 
-  patches = [
-    ./pytest-report-header.patch
-  ];
+  patches = [ ./pytest-report-header.patch ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
@@ -142,7 +240,10 @@ in buildPythonPackage rec {
   ];
 
   makeWrapperArgs = [
-    "--prefix" "PATH" ":" (lib.makeBinPath [
+    "--prefix"
+    "PATH"
+    ":"
+    (lib.makeBinPath [
       ffmpeg
       manim-tinytex
     ])
@@ -170,6 +271,6 @@ in buildPythonPackage rec {
     '';
     homepage = "https://github.com/ManimCommunity/manim";
     license = licenses.mit;
-    maintainers = with maintainers; [ friedelino ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/manimpango/default.nix b/pkgs/development/python-modules/manimpango/default.nix
index 9fec1f0aa2431..6a1876ed6376c 100644
--- a/pkgs/development/python-modules/manimpango/default.nix
+++ b/pkgs/development/python-modules/manimpango/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, pkg-config
-, pango
-, cython
-, AppKit
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  pkg-config,
+  pango,
+  cython,
+  AppKit,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,23 +26,13 @@ buildPythonPackage rec {
     hash = "sha256-EBSbvjQyQIXOzvQMbuTwOoV8xSAOYDlCBZ56NLneuQI=";
   };
 
-  nativeBuildInputs = [
-    pkg-config
-  ];
+  nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [
-    pango
-  ] ++ lib.optionals stdenv.isDarwin [
-    AppKit
-  ];
+  buildInputs = [ pango ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ AppKit ];
 
-  propagatedBuildInputs = [
-    cython
-  ];
+  propagatedBuildInputs = [ cython ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace setup.cfg \
@@ -52,9 +43,7 @@ buildPythonPackage rec {
     ${python.pythonOnBuildForHost.interpreter} setup.py build_ext --inplace
   '';
 
-  pythonImportsCheck = [
-    "manimpango"
-  ];
+  pythonImportsCheck = [ "manimpango" ];
 
   meta = with lib; {
     description = "Binding for Pango";
diff --git a/pkgs/development/python-modules/manuel/default.nix b/pkgs/development/python-modules/manuel/default.nix
index 8d87e6240982a..89a7dc6605323 100644
--- a/pkgs/development/python-modules/manuel/default.nix
+++ b/pkgs/development/python-modules/manuel/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, python
-, isPy27
-, six
-, zope-testing
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  python,
+  isPy27,
+  six,
+  zope-testing,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,8 @@ buildPythonPackage rec {
   nativeCheckInputs = [ zope-testing ];
 
   meta = with lib; {
-    description = "A documentation builder";
+    description = "Documentation builder";
     homepage = "https://pypi.python.org/pypi/manuel";
     license = licenses.zpl20;
   };
-
 }
diff --git a/pkgs/development/python-modules/manuf/default.nix b/pkgs/development/python-modules/manuf/default.nix
index 19b98a12a17cc..2210f4a40fae9 100644
--- a/pkgs/development/python-modules/manuf/default.nix
+++ b/pkgs/development/python-modules/manuf/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, runCommand
-, python3
-, wireshark-cli
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  runCommand,
+  wireshark-cli,
+  pytestCheckHook,
+  manuf, # remove when buildPythonPackage supports finalAttrs
 }:
 
 buildPythonPackage rec {
@@ -33,19 +34,15 @@ buildPythonPackage rec {
     cat ${wireshark-cli}/share/wireshark/wka >> manuf/manuf
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = [
-    "test_update_update"
-  ];
+  disabledTests = [ "test_update_update" ];
 
   pythonImportsCheck = [ "manuf" ];
 
   passthru.tests = {
-    testMacAddress = runCommand "${pname}-test" {} ''
-      ${python3.pkgs.manuf}/bin/manuf BC:EE:7B:00:00:00 > $out
+    testMacAddress = runCommand "${pname}-test" { } ''
+      ${lib.getExe manuf} BC:EE:7B:00:00:00 > $out
       [ "$(cat $out | tr -d '\n')" = "Vendor(manuf='ASUSTekC', manuf_long='ASUSTek COMPUTER INC.', comment=None)" ]
     '';
   };
@@ -55,7 +52,10 @@ buildPythonPackage rec {
     description = " Parser library for Wireshark's OUI database";
     mainProgram = "manuf";
     platforms = platforms.linux;
-    license = with licenses; [ lgpl3Plus asl20 ];
+    license = with licenses; [
+      lgpl3Plus
+      asl20
+    ];
     maintainers = with maintainers; [ dsuetin ];
   };
 }
diff --git a/pkgs/development/python-modules/mapbox-earcut/default.nix b/pkgs/development/python-modules/mapbox-earcut/default.nix
index fa4659ae40bd6..c7359364b2fb6 100644
--- a/pkgs/development/python-modules/mapbox-earcut/default.nix
+++ b/pkgs/development/python-modules/mapbox-earcut/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchFromGitHub
-, numpy
-, pybind11
-, pytestCheckHook
-, setuptools
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  pybind11,
+  pytestCheckHook,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "mapbox-earcut";
-  version = "1.0.1";
+  version = "1.0.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "skogler";
     repo = "mapbox_earcut_python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+Vxvo++bkoCsJFmt/u1eaqhgpz8Uddz06iIi66ju+MQ=";
+    hash = "sha256-xR+nO5xdoDUhWZM19DOid3lsEXBood5NofQ0SezJ9OE=";
   };
 
   nativeBuildInputs = [
@@ -28,17 +28,11 @@ buildPythonPackage rec {
     pybind11
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mapbox_earcut"
-  ];
+  pythonImportsCheck = [ "mapbox_earcut" ];
 
   meta = with lib; {
     homepage = "https://github.com/skogler/mapbox_earcut_python";
@@ -50,6 +44,6 @@ buildPythonPackage rec {
       library, which provides very fast and quite robust triangulation of 2D
       polygons.
     '';
-    maintainers = with maintainers; [ friedelino ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/mapbox/default.nix b/pkgs/development/python-modules/mapbox/default.nix
index 52d3eb2efbbc2..80555ea8c008f 100644
--- a/pkgs/development/python-modules/mapbox/default.nix
+++ b/pkgs/development/python-modules/mapbox/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, boto3
-, cachecontrol
-, fetchFromGitHub
-, iso3166
-, python-dateutil
-, requests
-, responses
-, polyline
-, pytestCheckHook
-, uritemplate
+{
+  lib,
+  buildPythonPackage,
+  boto3,
+  cachecontrol,
+  fetchFromGitHub,
+  iso3166,
+  python-dateutil,
+  requests,
+  responses,
+  polyline,
+  pytestCheckHook,
+  uritemplate,
 }:
 
 buildPythonPackage rec {
@@ -24,8 +25,19 @@ buildPythonPackage rec {
     sha256 = "123wsa4j11ps5pkjgylbmw4gnzh2vi22swgmvy50w26glkszh075";
   };
 
-  propagatedBuildInputs = [ boto3 cachecontrol iso3166 python-dateutil requests polyline uritemplate ];
-  nativeCheckInputs = [ pytestCheckHook responses ];
+  propagatedBuildInputs = [
+    boto3
+    cachecontrol
+    iso3166
+    python-dateutil
+    requests
+    polyline
+    uritemplate
+  ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    responses
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/mapbox/mapbox-sdk-py";
diff --git a/pkgs/development/python-modules/mapclassify/default.nix b/pkgs/development/python-modules/mapclassify/default.nix
new file mode 100644
index 0000000000000..9a01fd4790162
--- /dev/null
+++ b/pkgs/development/python-modules/mapclassify/default.nix
@@ -0,0 +1,64 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+
+  geopandas,
+  libpysal,
+  matplotlib,
+  networkx,
+  numpy,
+  pandas,
+  scikit-learn,
+  scipy,
+  setuptools-scm,
+}:
+
+buildPythonPackage rec {
+  pname = "mapclassify";
+  version = "2.8.1";
+  pyproject = true;
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "pysal";
+    repo = "mapclassify";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-VClkMOR8P9sX3slVjJ2xYYLVnvZuOgVYZiCGrBxoZEc=";
+  };
+
+  build-system = [ setuptools-scm ];
+
+  propagatedBuildInputs = [
+    networkx
+    numpy
+    pandas
+    scikit-learn
+    scipy
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    geopandas
+    libpysal
+    matplotlib
+  ];
+
+  # requires network access
+  disabledTestPaths = [
+    "mapclassify/tests/test_greedy.py"
+    "mapclassify/tests/test_rgba.py"
+  ];
+
+  pythonImportsCheck = [ "mapclassify" ];
+
+  meta = {
+    description = "Classification Schemes for Choropleth Maps";
+    homepage = "https://pysal.org/mapclassify/";
+    changelog = "https://github.com/pysal/mapclassify/releases/tag/v${version}";
+    license = lib.licenses.bsd3;
+    maintainers = lib.teams.geospatial.members;
+  };
+}
diff --git a/pkgs/development/python-modules/mariadb/default.nix b/pkgs/development/python-modules/mariadb/default.nix
index cad6afb3cd52d..d166277a459a9 100644
--- a/pkgs/development/python-modules/mariadb/default.nix
+++ b/pkgs/development/python-modules/mariadb/default.nix
@@ -1,31 +1,43 @@
-{ buildPythonPackage, fetchPypi, libmysqlclient, lib, pythonOlder }:
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  libmysqlclient,
+  lib,
+  pythonOlder,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "mariadb";
-  version = "1.1.4";
-  format = "setuptools";
+  version = "1.1.10";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-c6CsvSrOOB7BvPxhztenmlGeZsAsJOEq5tJ7qgNxeHY=";
-    extension = "zip";
+  src = fetchFromGitHub {
+    owner = "mariadb-corporation";
+    repo = "mariadb-connector-python";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-YpA65J8ozKJfpOc4hZLdgCcT3j/lqRiNeX7k8U/aYkE=";
   };
 
+  build-system = [ setuptools ];
+
   nativeBuildInputs = [
-    libmysqlclient
+    libmysqlclient # for mariadb_config
   ];
 
+  buildInputs = [ libmysqlclient ];
+
   # Requires a running MariaDB instance
   doCheck = false;
 
   pythonImportsCheck = [ "mariadb" ];
 
-  meta = with lib; {
+  meta = {
     description = "MariaDB Connector/Python";
     homepage = "https://github.com/mariadb-corporation/mariadb-connector-python";
-    license = licenses.lgpl21Only;
-    maintainers = with maintainers; [ vanilla ];
+    license = lib.licenses.lgpl21Plus;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/marimo/default.nix b/pkgs/development/python-modules/marimo/default.nix
index 54f6fd858e35f..15eb58f35d134 100644
--- a/pkgs/development/python-modules/marimo/default.nix
+++ b/pkgs/development/python-modules/marimo/default.nix
@@ -1,66 +1,75 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, click
-, jedi
-, markdown
-, pymdown-extensions
-, pygments
-, tomlkit
-, uvicorn
-, starlette
-, websockets
-, docutils
-, black
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  click,
+  docutils,
+  itsdangerous,
+  jedi,
+  markdown,
+  packaging,
+  psutil,
+  pygments,
+  pymdown-extensions,
+  ruff,
+  starlette,
+  tomlkit,
+  uvicorn,
+  websockets,
+  pyyaml,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "marimo";
-  version = "0.4.10";
+  version = "0.8.18";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-F6Hf8KPIkXuRhO/1mVHE1wfU6//vbUK1ghoqANmZjag=";
+    hash = "sha256-7gAxD1N2z80qDtC2PrijuJwO/UdgAGvpryYjwEoUTMo=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
+
+  # ruff is not packaged as a python module in nixpkgs
+  pythonRemoveDeps = [ "ruff" ];
 
   dependencies = [
     click
+    docutils
+    itsdangerous
     jedi
     markdown
-    pymdown-extensions
+    packaging
+    psutil
     pygments
+    pymdown-extensions
+    ruff
+    starlette
     tomlkit
     uvicorn
-    starlette
     websockets
-    docutils
-    black
+    pyyaml
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "marimo"
-  ];
+  pythonImportsCheck = [ "marimo" ];
 
   meta = with lib; {
-    description = "A reactive Python notebook that's reproducible, git-friendly, and deployable as scripts or apps";
+    description = "Reactive Python notebook that's reproducible, git-friendly, and deployable as scripts or apps";
     homepage = "https://github.com/marimo-team/marimo";
     changelog = "https://github.com/marimo-team/marimo/releases/tag/${version}";
     license = licenses.asl20;
     mainProgram = "marimo";
-    maintainers = with maintainers; [ akshayka dmadisetti ];
+    maintainers = with maintainers; [
+      akshayka
+      dmadisetti
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/marionette-harness/manifestparser.nix b/pkgs/development/python-modules/marionette-harness/manifestparser.nix
index 45e24ec2e1a9e..57f8fbf012544 100644
--- a/pkgs/development/python-modules/marionette-harness/manifestparser.nix
+++ b/pkgs/development/python-modules/marionette-harness/manifestparser.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/marisa-trie/default.nix b/pkgs/development/python-modules/marisa-trie/default.nix
index 544e2196326f6..8001af18c0ff2 100644
--- a/pkgs/development/python-modules/marisa-trie/default.nix
+++ b/pkgs/development/python-modules/marisa-trie/default.nix
@@ -1,27 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cython
-, pytestCheckHook
-, hypothesis
-, readme-renderer
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cython,
+  setuptools,
+  pytestCheckHook,
+  hypothesis,
+  readme-renderer,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "marisa-trie";
-  version = "1.1.0";
-  format = "setuptools";
+  version = "1.2.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-W/Q+0M82r0V4/nsDTPlfUyQ5dmUWaA5L1gNyNhHr1Ws=";
+    pname = "marisa_trie";
+    inherit version;
+    hash = "sha256-/t/GdJf4qidXdWtc9JN1nyRdMh+3iRTOElttddqom18=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     cython
+    setuptools
   ];
 
   nativeCheckInputs = [
@@ -53,9 +57,7 @@ buildPythonPackage rec {
     "test_mmap"
   ];
 
-  pythonImportsCheck = [
-    "marisa_trie"
-  ];
+  pythonImportsCheck = [ "marisa_trie" ];
 
   meta = with lib; {
     description = "Static memory-efficient Trie-like structures for Python based on marisa-trie C++ library";
@@ -63,7 +65,7 @@ buildPythonPackage rec {
       There are official SWIG-based Python bindings included in C++ library distribution.
       This package provides alternative Cython-based pip-installable Python bindings.
     '';
-    homepage =  "https://github.com/kmike/marisa-trie";
+    homepage = "https://github.com/kmike/marisa-trie";
     changelog = "https://github.com/pytries/marisa-trie/blob/${version}/CHANGES.rst";
     license = licenses.mit;
   };
diff --git a/pkgs/development/python-modules/marisa/default.nix b/pkgs/development/python-modules/marisa/default.nix
index 6ed3d6f4bf390..1de25320bb3fe 100644
--- a/pkgs/development/python-modules/marisa/default.nix
+++ b/pkgs/development/python-modules/marisa/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, marisa
-, swig
+{
+  lib,
+  buildPythonPackage,
+  marisa,
+  swig,
 }:
 
 buildPythonPackage rec {
@@ -27,7 +28,10 @@ buildPythonPackage rec {
   meta = {
     description = "Python bindings for marisa";
     homepage = "https://github.com/s-yata/marisa-trie";
-    license = with lib.licenses; [ bsd2 lgpl21Plus ];
+    license = with lib.licenses; [
+      bsd2
+      lgpl21Plus
+    ];
     maintainers = with lib.maintainers; [ dotlambda ];
   };
 }
diff --git a/pkgs/development/python-modules/markdown-include/default.nix b/pkgs/development/python-modules/markdown-include/default.nix
index 96c4599d8252d..dbc7a43d30f99 100644
--- a/pkgs/development/python-modules/markdown-include/default.nix
+++ b/pkgs/development/python-modules/markdown-include/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, markdown
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  markdown,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -18,17 +19,11 @@ buildPythonPackage rec {
     hash = "sha256-1MEk0U00a5cpVhqnDZkwBIk4NYgsRXTVsI/ANNQ/OH0=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    markdown
-  ];
+  propagatedBuildInputs = [ markdown ];
 
-  pythonImportsCheck = [
-    "markdown_include"
-  ];
+  pythonImportsCheck = [ "markdown_include" ];
 
   doCheck = false; # no tests
 
@@ -36,6 +31,6 @@ buildPythonPackage rec {
     description = "Extension to Python-Markdown which provides an include function";
     homepage = "https://github.com/cmacmackin/markdown-include";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/markdown-it-py/default.nix b/pkgs/development/python-modules/markdown-it-py/default.nix
index b7f580322fdf4..f50f6e8e308ca 100644
--- a/pkgs/development/python-modules/markdown-it-py/default.nix
+++ b/pkgs/development/python-modules/markdown-it-py/default.nix
@@ -1,27 +1,27 @@
-{ lib
-, attrs
-, buildPythonPackage
-, commonmark
-, fetchFromGitHub
-, flit-core
-, linkify-it-py
-, markdown
-, mdit-py-plugins
-, mdurl
-, mistletoe
-, mistune
-, myst-parser
-, panflute
-, pyyaml
-, sphinx
-, sphinx-book-theme
-, sphinx-copybutton
-, sphinx-design
-, stdenv
-, pytest-regressions
-, pytestCheckHook
-, pythonRelaxDepsHook
-, pythonOlder
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  commonmark,
+  fetchFromGitHub,
+  flit-core,
+  linkify-it-py,
+  markdown,
+  mdit-py-plugins,
+  mdurl,
+  mistletoe,
+  mistune,
+  myst-parser,
+  panflute,
+  pyyaml,
+  sphinx,
+  sphinx-book-theme,
+  sphinx-copybutton,
+  sphinx-design,
+  stdenv,
+  pytest-regressions,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -39,18 +39,13 @@ buildPythonPackage rec {
   };
 
   # fix downstrem usage of markdown-it-py[linkify]
-  pythonRelaxDeps = [
-    "linkify-it-py"
-  ];
+  pythonRelaxDeps = [ "linkify-it-py" ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     flit-core
   ];
 
-  propagatedBuildInputs = [
-    mdurl
-  ];
+  propagatedBuildInputs = [ mdurl ];
 
   nativeCheckInputs = [
     pytest-regressions
@@ -61,17 +56,29 @@ buildPythonPackage rec {
   preCheck = ''
     rm -r benchmarking
   '';
-  doCheck = !stdenv.isi686;
+  doCheck = !stdenv.hostPlatform.isi686;
 
-  pythonImportsCheck = [
-    "markdown_it"
-  ];
+  pythonImportsCheck = [ "markdown_it" ];
 
   passthru.optional-dependencies = {
-    compare = [ commonmark markdown mistletoe mistune panflute ];
+    compare = [
+      commonmark
+      markdown
+      mistletoe
+      mistune
+      panflute
+    ];
     linkify = [ linkify-it-py ];
     plugins = [ mdit-py-plugins ];
-    rtd = [ attrs myst-parser pyyaml sphinx sphinx-copybutton sphinx-design sphinx-book-theme ];
+    rtd = [
+      attrs
+      myst-parser
+      pyyaml
+      sphinx
+      sphinx-copybutton
+      sphinx-design
+      sphinx-book-theme
+    ];
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/markdown-macros/default.nix b/pkgs/development/python-modules/markdown-macros/default.nix
index 2a15b4edb1c65..aad691159b693 100644
--- a/pkgs/development/python-modules/markdown-macros/default.nix
+++ b/pkgs/development/python-modules/markdown-macros/default.nix
@@ -1,14 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, markdown
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  setuptools,
+  markdown,
 }:
 
 buildPythonPackage rec {
   pname = "markdown-macros";
   version = "0.1.2";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
@@ -26,18 +28,19 @@ buildPythonPackage rec {
   ];
 
   prePatch = ''
-    substituteInPlace setup.py --replace "distribute" "setuptools"
+    substituteInPlace setup.py --replace-fail "distribute" "setuptools"
   '';
 
-  propagatedBuildInputs = [ markdown ];
+  build-system = [ setuptools ];
+
+  dependencies = [ markdown ];
 
   doCheck = false;
 
   meta = with lib; {
-    description = "An extension for python-markdown that makes writing trac-like macros easy";
+    description = "Extension for python-markdown that makes writing trac-like macros easy";
     homepage = "https://github.com/wnielson/markdown-macros";
     license = licenses.mit;
     maintainers = [ maintainers.abigailbuccaneer ];
   };
-
 }
diff --git a/pkgs/development/python-modules/markdown/default.nix b/pkgs/development/python-modules/markdown/default.nix
index f31af525f1e6e..f0858ca0da909 100644
--- a/pkgs/development/python-modules/markdown/default.nix
+++ b/pkgs/development/python-modules/markdown/default.nix
@@ -1,37 +1,36 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, importlib-metadata
-, pyyaml
-, setuptools
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  importlib-metadata,
+  pyyaml,
+  setuptools,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "markdown";
-  version = "3.5.2";
+  version = "3.6";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  pyproject = true;
-
   src = fetchFromGitHub {
     owner = "Python-Markdown";
     repo = "markdown";
     rev = "refs/tags/${version}";
-    hash = "sha256-YLOLDiS93zpjJWzkWXcutjZw9iB/FfbjxQXjau2B+JQ=";
+    hash = "sha256-jGo9/ZS2EhMDl/o1ref7Owqckuc7am578Ojmcz2aWIE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ];
+  dependencies = lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
-  nativeCheckInputs = [ unittestCheckHook pyyaml ];
+  nativeCheckInputs = [
+    unittestCheckHook
+    pyyaml
+  ];
 
   pythonImportsCheck = [ "markdown" ];
 
diff --git a/pkgs/development/python-modules/markdown2/default.nix b/pkgs/development/python-modules/markdown2/default.nix
index 1c375523ae601..77f5fe0fc656a 100644
--- a/pkgs/development/python-modules/markdown2/default.nix
+++ b/pkgs/development/python-modules/markdown2/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, pygments
-, pythonOlder
-, wavedrom
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  pygments,
+  pythonOlder,
+  wavedrom,
 }:
 
 buildPythonPackage rec {
@@ -35,20 +36,18 @@ buildPythonPackage rec {
   '';
 
   passthru.optional-dependencies = {
-    code_syntax_highlighting = [
-      pygments
-    ];
-    wavedrom = [
-      wavedrom
-    ];
-    all = lib.flatten (lib.attrValues (lib.filterAttrs (n: v: n != "all") passthru.optional-dependencies));
+    code_syntax_highlighting = [ pygments ];
+    wavedrom = [ wavedrom ];
+    all = lib.flatten (
+      lib.attrValues (lib.filterAttrs (n: v: n != "all") passthru.optional-dependencies)
+    );
   };
 
   meta = with lib; {
     changelog = "https://github.com/trentm/python-markdown2/blob/${src.rev}/CHANGES.md";
-    description = "A fast and complete Python implementation of Markdown";
+    description = "Fast and complete Python implementation of Markdown";
     mainProgram = "markdown2";
-    homepage =  "https://github.com/trentm/python-markdown2";
+    homepage = "https://github.com/trentm/python-markdown2";
     license = licenses.mit;
     maintainers = with maintainers; [ hbunke ];
   };
diff --git a/pkgs/development/python-modules/markdownify/default.nix b/pkgs/development/python-modules/markdownify/default.nix
index e6b09592073ab..b6d8fa20ba6ca 100644
--- a/pkgs/development/python-modules/markdownify/default.nix
+++ b/pkgs/development/python-modules/markdownify/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, six
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -20,22 +21,16 @@ buildPythonPackage rec {
     hash = "sha256-H7CMYYsw4O56MaObmY9EoY+yirJU9V9K8GttNaIXnic=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     beautifulsoup4
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "markdownify"
-  ];
+  pythonImportsCheck = [ "markdownify" ];
 
   meta = with lib; {
     description = "HTML to Markdown converter";
diff --git a/pkgs/development/python-modules/markuppy/default.nix b/pkgs/development/python-modules/markuppy/default.nix
index fde9ae4ceec94..4b376f6894ece 100644
--- a/pkgs/development/python-modules/markuppy/default.nix
+++ b/pkgs/development/python-modules/markuppy/default.nix
@@ -1,4 +1,8 @@
-{ lib, fetchPypi, buildPythonPackage }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+}:
 
 buildPythonPackage rec {
   pname = "markuppy";
@@ -17,7 +21,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "MarkupPy" ];
 
   meta = with lib; {
-    description = "An HTML/XML generator";
+    description = "HTML/XML generator";
     homepage = "https://github.com/tylerbakke/MarkupPy";
     license = licenses.mit;
     maintainers = with maintainers; [ sephi ];
diff --git a/pkgs/development/python-modules/markups/default.nix b/pkgs/development/python-modules/markups/default.nix
index 163fc2539d2de..f187a8fc9d469 100644
--- a/pkgs/development/python-modules/markups/default.nix
+++ b/pkgs/development/python-modules/markups/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, docutils
-, fetchPypi
-, importlib-metadata
-, markdown
-, pygments
-, pytestCheckHook
-, python-markdown-math
-, pythonOlder
-, pyyaml
-, setuptools
-, textile
+{
+  lib,
+  buildPythonPackage,
+  docutils,
+  fetchPypi,
+  importlib-metadata,
+  markdown,
+  pygments,
+  pytestCheckHook,
+  python-markdown-math,
+  pythonOlder,
+  pyyaml,
+  setuptools,
+  textile,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-Pdua+xxV0M/4EuM5LKM/RoSYwHB6T6iy4F0LoNMsAZ4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     docutils
@@ -37,22 +36,16 @@ buildPythonPackage rec {
     python-markdown-math
     pyyaml
     textile
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # AssertionError: '.selector .ch { color: #408080' not found in 'pre...
     "test_get_pygments_stylesheet"
   ];
 
-  pythonImportsCheck = [
-    "markups"
-  ];
+  pythonImportsCheck = [ "markups" ];
 
   meta = with lib; {
     description = "Wrapper around various text markup languages";
diff --git a/pkgs/development/python-modules/markupsafe/default.nix b/pkgs/development/python-modules/markupsafe/default.nix
index 17f8ce118e5b1..5b4a039ae2806 100644
--- a/pkgs/development/python-modules/markupsafe/default.nix
+++ b/pkgs/development/python-modules/markupsafe/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-
-# build-system
-, setuptools
-
-# tests
-, pytestCheckHook
-
-# reverse dependencies
-, jinja2
-, mkdocs
-, quart
-, werkzeug
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+
+  # build-system
+  setuptools,
+
+  # tests
+  pytestCheckHook,
+
+  # reverse dependencies
+  jinja2,
+  mkdocs,
+  quart,
+  werkzeug,
 }:
 
 buildPythonPackage rec {
@@ -29,17 +30,11 @@ buildPythonPackage rec {
     hash = "sha256-0oPTeokLpMGuc/+t+ARkNcdue8Ike7tjwAvRpwnGVEs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "markupsafe"
-  ];
+  pythonImportsCheck = [ "markupsafe" ];
 
   passthru.tests = {
     inherit
@@ -47,11 +42,13 @@ buildPythonPackage rec {
       mkdocs
       quart
       werkzeug
-    ;
+      ;
   };
 
   meta = with lib; {
-    changelog = "https://markupsafe.palletsprojects.com/en/${versions.majorMinor version}.x/changes/#version-${replaceStrings [ "." ] [ "-" ] version}";
+    changelog = "https://markupsafe.palletsprojects.com/en/${versions.majorMinor version}.x/changes/#version-${
+      replaceStrings [ "." ] [ "-" ] version
+    }";
     description = "Implements a XML/HTML/XHTML Markup safe string";
     homepage = "https://palletsprojects.com/p/markupsafe/";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/marshmallow-dataclass/default.nix b/pkgs/development/python-modules/marshmallow-dataclass/default.nix
index 7b5b2932407a2..a06997a09e408 100644
--- a/pkgs/development/python-modules/marshmallow-dataclass/default.nix
+++ b/pkgs/development/python-modules/marshmallow-dataclass/default.nix
@@ -1,36 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, marshmallow
-, marshmallow-enum
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, typeguard
-, typing-inspect
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  marshmallow,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
+  typeguard,
+  typing-extensions,
+  typing-inspect,
 }:
 
 buildPythonPackage rec {
   pname = "marshmallow-dataclass";
-  version = "8.6.1";
-  format = "setuptools";
+  version = "8.7.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "lovasoa";
     repo = "marshmallow_dataclass";
     rev = "refs/tags/v${version}";
-    hash = "sha256-IHHYYtQrdSAtZxbd/YV9J+c4B23HLr9gr01OE6Tgj94=";
+    hash = "sha256-0OXP78oyNe/UcI05NHskPyXAuX3dwAW4Uz4dI4b8KV0=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     marshmallow
     typing-inspect
-  ];
+  ] ++ lib.optionals (pythonOlder "3.10") [ typing-extensions ];
 
   nativeCheckInputs = [
-    marshmallow-enum
     pytestCheckHook
     typeguard
   ];
@@ -46,15 +49,13 @@ buildPythonPackage rec {
     "test_newtype"
   ];
 
-  pythonImportsCheck = [
-    "marshmallow_dataclass"
-  ];
+  pythonImportsCheck = [ "marshmallow_dataclass" ];
 
   meta = with lib; {
     description = "Automatic generation of marshmallow schemas from dataclasses";
     homepage = "https://github.com/lovasoa/marshmallow_dataclass";
     changelog = "https://github.com/lovasoa/marshmallow_dataclass/blob/v${version}/CHANGELOG.md";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/marshmallow-enum/default.nix b/pkgs/development/python-modules/marshmallow-enum/default.nix
deleted file mode 100644
index fdf2771deebd4..0000000000000
--- a/pkgs/development/python-modules/marshmallow-enum/default.nix
+++ /dev/null
@@ -1,43 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, marshmallow
-, pytest7CheckHook
-}:
-
-buildPythonPackage rec {
-  pname = "marshmallow-enum";
-  version = "1.5.1";
-  pyproject = true;
-
-  src = fetchFromGitHub {
-    owner = "justanr";
-    repo = "marshmallow_enum";
-    rev = "v${version}";
-    sha256 = "1ihrcmyfjabivg6hc44i59hnw5ijlg1byv3zs1rqxfynp8xr7398";
-  };
-
-  postPatch = ''
-    sed -i '/addopts/d' tox.ini
-  '';
-
-  build-system = [
-    setuptools
-  ];
-
-  dependencies = [
-    marshmallow
-  ];
-
-  nativeCheckInputs = [
-    pytest7CheckHook
-  ];
-
-  meta = with lib; {
-    description = "Enum field for Marshmallow";
-    homepage = "https://github.com/justanr/marshmallow_enum";
-    license = licenses.mit;
-    maintainers = [ ];
-  };
-}
diff --git a/pkgs/development/python-modules/marshmallow-oneofschema/default.nix b/pkgs/development/python-modules/marshmallow-oneofschema/default.nix
index 933f5cc4c8b91..10690ad426572 100644
--- a/pkgs/development/python-modules/marshmallow-oneofschema/default.nix
+++ b/pkgs/development/python-modules/marshmallow-oneofschema/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, marshmallow
-, pytestCheckHook
-, pythonOlder
-, flit-core
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  marshmallow,
+  pytestCheckHook,
+  pythonOlder,
+  flit-core,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-HXuyUxU8bT5arpUzmgv7m+X2fNT0qHY8S8Rz6klOGiA=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    marshmallow
-  ];
+  propagatedBuildInputs = [ marshmallow ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "marshmallow_oneofschema"
-  ];
+  pythonImportsCheck = [ "marshmallow_oneofschema" ];
 
   meta = with lib; {
     description = "Marshmallow library extension that allows schema (de)multiplexing";
diff --git a/pkgs/development/python-modules/marshmallow-polyfield/default.nix b/pkgs/development/python-modules/marshmallow-polyfield/default.nix
index dfdb85ebf9c7c..28fea8cedaf64 100644
--- a/pkgs/development/python-modules/marshmallow-polyfield/default.nix
+++ b/pkgs/development/python-modules/marshmallow-polyfield/default.nix
@@ -1,10 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, marshmallow
-, pythonOlder
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  marshmallow,
+  pythonOlder,
+  pytestCheckHook,
+  pytest-cov-stub,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,26 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-jbpeyih2Ccw1Rk+QcXRO9AfN5B/DhZmxa/M6FzXHqqs=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "--cov=marshmallow_polyfield" ""
-  '';
+  build-system = [ setuptools ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
-
-  propagatedBuildInputs = [
-    marshmallow
-  ];
+  dependencies = [ marshmallow ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
   ];
 
-  pythonImportsCheck = [
-    "marshmallow"
-  ];
+  pythonImportsCheck = [ "marshmallow" ];
 
   meta = with lib; {
     description = "Extension to Marshmallow to allow for polymorphic fields";
diff --git a/pkgs/development/python-modules/marshmallow-sqlalchemy/default.nix b/pkgs/development/python-modules/marshmallow-sqlalchemy/default.nix
index cc73a3c229a3a..587e819855321 100644
--- a/pkgs/development/python-modules/marshmallow-sqlalchemy/default.nix
+++ b/pkgs/development/python-modules/marshmallow-sqlalchemy/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, flit-core
-, marshmallow
-, packaging
-, sqlalchemy
-, pytest-lazy-fixture
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  flit-core,
+  marshmallow,
+  packaging,
+  sqlalchemy,
+  pytest-lazy-fixture,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-IKDy/N1b3chkRPoBRh8X+bahKo3dTKjJs0/i8uNdAKI=";
   };
 
-  build-system = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
   propagatedBuildInputs = [
     marshmallow
@@ -33,9 +32,7 @@ buildPythonPackage rec {
     sqlalchemy
   ];
 
-  pythonImportsCheck = [
-    "marshmallow_sqlalchemy"
-  ];
+  pythonImportsCheck = [ "marshmallow_sqlalchemy" ];
 
   nativeCheckInputs = [
     pytest-lazy-fixture
@@ -47,6 +44,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/marshmallow-code/marshmallow-sqlalchemy";
     changelog = "https://github.com/marshmallow-code/marshmallow-sqlalchemy/blob/${version}/CHANGELOG.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/marshmallow/default.nix b/pkgs/development/python-modules/marshmallow/default.nix
index bbb336884c192..71766217fe637 100644
--- a/pkgs/development/python-modules/marshmallow/default.nix
+++ b/pkgs/development/python-modules/marshmallow/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, packaging
-, pytestCheckHook
-, pythonOlder
-, pytz
-, simplejson
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  packaging,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  simplejson,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,9 @@ buildPythonPackage rec {
     hash = "sha256-KhXasYKooZRokRoFlWKOaQzSUe6tXDtUlrf65eGGUi8=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    packaging
-  ];
+  propagatedBuildInputs = [ packaging ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -37,9 +34,7 @@ buildPythonPackage rec {
     simplejson
   ];
 
-  pythonImportsCheck = [
-    "marshmallow"
-  ];
+  pythonImportsCheck = [ "marshmallow" ];
 
   meta = with lib; {
     description = "Library for converting complex objects to and from simple Python datatypes";
diff --git a/pkgs/development/python-modules/mashumaro/default.nix b/pkgs/development/python-modules/mashumaro/default.nix
index cf79f268ffb37..153eb0298fce4 100644
--- a/pkgs/development/python-modules/mashumaro/default.nix
+++ b/pkgs/development/python-modules/mashumaro/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, ciso8601
-, fetchFromGitHub
-, msgpack
-, orjson
-, pendulum
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, setuptools
-, tomli
-, tomli-w
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  ciso8601,
+  fetchFromGitHub,
+  msgpack,
+  orjson,
+  pendulum,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  setuptools,
+  tomli,
+  tomli-w,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "mashumaro";
-  version = "3.13";
+  version = "3.13.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,32 +27,18 @@ buildPythonPackage rec {
     owner = "Fatal1ty";
     repo = "mashumaro";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ETK1rHKlByQkqibejiZmXF6c4eIiMazLa8XY2OH30q4=";
+    hash = "sha256-Km3RuDU77L3N2RQBhpcEztOjYtQhTXFZoGKu70g5EPU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ typing-extensions ];
 
   passthru.optional-dependencies = {
-    orjson = [
-      orjson
-    ];
-    msgpack = [
-      msgpack
-    ];
-    yaml = [
-      pyyaml
-    ];
-    toml = [
-      tomli-w
-    ] ++ lib.optionals (pythonOlder "3.11") [
-      tomli
-    ];
+    orjson = [ orjson ];
+    msgpack = [ msgpack ];
+    yaml = [ pyyaml ];
+    toml = [ tomli-w ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
   };
 
   nativeCheckInputs = [
@@ -61,9 +48,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "mashumaro"
-  ];
+  pythonImportsCheck = [ "mashumaro" ];
 
   meta = with lib; {
     description = "Serialization library on top of dataclasses";
diff --git a/pkgs/development/python-modules/masky/default.nix b/pkgs/development/python-modules/masky/default.nix
index aadd429fa8815..557a02dfcc9a8 100644
--- a/pkgs/development/python-modules/masky/default.nix
+++ b/pkgs/development/python-modules/masky/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, asn1crypto
-, buildPythonPackage
-, colorama
-, cryptography
-, fetchFromGitHub
-, impacket
-, pyasn1
-, pythonOlder
+{
+  lib,
+  asn1crypto,
+  buildPythonPackage,
+  colorama,
+  cryptography,
+  fetchFromGitHub,
+  impacket,
+  pyasn1,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "masky"
-  ];
+  pythonImportsCheck = [ "masky" ];
 
   meta = with lib; {
     description = "Library to remotely dump domain credentials";
diff --git a/pkgs/development/python-modules/mastodon-py/default.nix b/pkgs/development/python-modules/mastodon-py/default.nix
index 5034346b9cfe3..b8b93bc84eaa4 100644
--- a/pkgs/development/python-modules/mastodon-py/default.nix
+++ b/pkgs/development/python-modules/mastodon-py/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, blurhash
-, cryptography
-, decorator
-, http-ece
-, python-dateutil
-, python-magic
-, requests
-, six
-, pytestCheckHook
-, pytest-mock
-, pytest-vcr
-, requests-mock
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  blurhash,
+  cryptography,
+  decorator,
+  http-ece,
+  python-dateutil,
+  python-magic,
+  requests,
+  six,
+  pytestCheckHook,
+  pytest-mock,
+  pytest-vcr,
+  requests-mock,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     sed -i '/addopts/d' setup.cfg
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     blurhash
@@ -46,9 +45,7 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    blurhash = [
-      blurhash
-    ];
+    blurhash = [ blurhash ];
     webpush = [
       http-ece
       cryptography
diff --git a/pkgs/development/python-modules/mat2/default.nix b/pkgs/development/python-modules/mat2/default.nix
index 1646d3ac72460..7dc7dcd2d431f 100644
--- a/pkgs/development/python-modules/mat2/default.nix
+++ b/pkgs/development/python-modules/mat2/default.nix
@@ -1,24 +1,24 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pytestCheckHook
-, pythonOlder
-, fetchFromGitLab
-, substituteAll
-, bubblewrap
-, exiftool
-, ffmpeg
-, mailcap
-, wrapGAppsHook
-, gdk-pixbuf
-, gobject-introspection
-, librsvg
-, poppler_gi
-, mutagen
-, pygobject3
-, pycairo
-, dolphinIntegration ? false
-, plasma5Packages
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pytestCheckHook,
+  pythonOlder,
+  fetchFromGitLab,
+  substituteAll,
+  bubblewrap,
+  exiftool,
+  ffmpeg,
+  wrapGAppsHook3,
+  gdk-pixbuf,
+  gobject-introspection,
+  librsvg,
+  poppler_gi,
+  mutagen,
+  pygobject3,
+  pycairo,
+  dolphinIntegration ? false,
+  plasma5Packages,
 }:
 
 buildPythonPackage rec {
@@ -37,25 +37,28 @@ buildPythonPackage rec {
     hash = "sha256-SuN62JjSb5O8gInvBH+elqv/Oe7j+xjCo+dmPBU7jEY=";
   };
 
-  patches = [
-    # hardcode paths to some binaries
-    (substituteAll ({
-      src = ./paths.patch;
-      exiftool = "${exiftool}/bin/exiftool";
-      ffmpeg = "${ffmpeg}/bin/ffmpeg";
-    } // lib.optionalAttrs dolphinIntegration {
-      kdialog = "${plasma5Packages.kdialog}/bin/kdialog";
-    }))
-    # the executable shouldn't be called .mat2-wrapped
-    ./executable-name.patch
-    # hardcode path to mat2 executable
-    ./tests.patch
-  ] ++ lib.optionals (stdenv.hostPlatform.isLinux) [
-    (substituteAll {
-      src = ./bubblewrap-path.patch;
-      bwrap = "${bubblewrap}/bin/bwrap";
-    })
-  ];
+  patches =
+    [
+      # hardcode paths to some binaries
+      (substituteAll (
+        {
+          src = ./paths.patch;
+          exiftool = "${exiftool}/bin/exiftool";
+          ffmpeg = "${ffmpeg}/bin/ffmpeg";
+        }
+        // lib.optionalAttrs dolphinIntegration { kdialog = "${plasma5Packages.kdialog}/bin/kdialog"; }
+      ))
+      # the executable shouldn't be called .mat2-wrapped
+      ./executable-name.patch
+      # hardcode path to mat2 executable
+      ./tests.patch
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isLinux) [
+      (substituteAll {
+        src = ./bubblewrap-path.patch;
+        bwrap = "${bubblewrap}/bin/bwrap";
+      })
+    ];
 
   postPatch = ''
     rm pyproject.toml
@@ -66,7 +69,7 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     gobject-introspection
-    wrapGAppsHook
+    wrapGAppsHook3
   ];
 
   buildInputs = [
@@ -81,12 +84,14 @@ buildPythonPackage rec {
     pycairo
   ];
 
-  postInstall = ''
-    install -Dm 444 data/mat2.svg -t "$out/share/icons/hicolor/scalable/apps"
-    install -Dm 444 doc/mat2.1 -t "$out/share/man/man1"
-  '' + lib.optionalString dolphinIntegration ''
-    install -Dm 444 dolphin/mat2.desktop -t "$out/share/kservices5/ServiceMenus"
-  '';
+  postInstall =
+    ''
+      install -Dm 444 data/mat2.svg -t "$out/share/icons/hicolor/scalable/apps"
+      install -Dm 444 doc/mat2.1 -t "$out/share/man/man1"
+    ''
+    + lib.optionalString dolphinIntegration ''
+      install -Dm 444 dolphin/mat2.desktop -t "$out/share/kservices5/ServiceMenus"
+    '';
 
   nativeCheckInputs = [ pytestCheckHook ];
 
@@ -96,7 +101,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A handy tool to trash your metadata";
+    description = "Handy tool to trash your metadata";
     homepage = "https://0xacab.org/jvoisin/mat2";
     changelog = "https://0xacab.org/jvoisin/mat2/-/blob/${version}/CHANGELOG.md";
     license = licenses.lgpl3Plus;
diff --git a/pkgs/development/python-modules/matchpy/default.nix b/pkgs/development/python-modules/matchpy/default.nix
index 259038e7774ba..304f143b884b0 100644
--- a/pkgs/development/python-modules/matchpy/default.nix
+++ b/pkgs/development/python-modules/matchpy/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, hopcroftkarp
-, multiset
-, pytestCheckHook
-, hypothesis
-, setuptools-scm
-, isPy27
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  hopcroftkarp,
+  multiset,
+  pytestCheckHook,
+  hypothesis,
+  setuptools-scm,
+  isPy27,
 }:
 
 buildPythonPackage rec {
@@ -39,9 +40,7 @@ buildPythonPackage rec {
       --replace "multiset>=2.0,<3.0" "multiset"
   '';
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     hopcroftkarp
@@ -53,14 +52,12 @@ buildPythonPackage rec {
     hypothesis
   ];
 
-  pythonImportsCheck = [
-    "matchpy"
-  ];
+  pythonImportsCheck = [ "matchpy" ];
 
   meta = with lib; {
-    description = "A library for pattern matching on symbolic expressions";
+    description = "Library for pattern matching on symbolic expressions";
     homepage = "https://github.com/HPAC/matchpy";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/material-color-utilities/default.nix b/pkgs/development/python-modules/material-color-utilities/default.nix
index 8c92723e4a064..4da3d1907e5df 100644
--- a/pkgs/development/python-modules/material-color-utilities/default.nix
+++ b/pkgs/development/python-modules/material-color-utilities/default.nix
@@ -1,4 +1,10 @@
-{ stdenv, lib, buildPythonPackage, fetchPypi, pythonRelaxDepsHook, pillow, regex }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pillow,
+  regex,
+}:
 
 buildPythonPackage rec {
   pname = "material-color-utilities-python";
@@ -6,15 +12,10 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-PG8C585wWViFRHve83z3b9NijHyV+iGY2BdMJpyVH64=";
+    hash = "sha256-PG8C585wWViFRHve83z3b9NijHyV+iGY2BdMJpyVH64=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
-  pythonRelaxDeps = [
-    "Pillow"
-  ];
+  pythonRelaxDeps = [ "Pillow" ];
 
   propagatedBuildInputs = [
     pillow
diff --git a/pkgs/development/python-modules/materialx/default.nix b/pkgs/development/python-modules/materialx/default.nix
new file mode 100644
index 0000000000000..0ebcc212617bf
--- /dev/null
+++ b/pkgs/development/python-modules/materialx/default.nix
@@ -0,0 +1,80 @@
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cmake,
+  setuptools,
+  darwin,
+  libX11,
+  libXt,
+  libGL,
+  openimageio,
+  imath,
+  python,
+}:
+
+buildPythonPackage rec {
+  pname = "materialx";
+  version = "1.38.10";
+
+  src = fetchFromGitHub {
+    owner = "AcademySoftwareFoundation";
+    repo = "MaterialX";
+    rev = "v${version}";
+    hash = "sha256-/kMHmW2dptZNtjuhE5s+jvPRIdtY+FRiVtMU+tiBgQo=";
+  };
+
+  format = "other";
+
+  nativeBuildInputs = [
+    cmake
+    setuptools
+  ];
+
+  buildInputs =
+    [
+      openimageio
+      imath
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin (
+      with darwin.apple_sdk.frameworks;
+      [
+        OpenGL
+        Cocoa
+      ]
+    )
+    ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
+      libX11
+      libXt
+      libGL
+    ];
+
+  cmakeFlags = [
+    (lib.cmakeBool "MATERIALX_BUILD_OIIO" true)
+    (lib.cmakeBool "MATERIALX_BUILD_PYTHON" true)
+    # don't build MSL shader back-end on x86_x64-darwin, as it requires a newer SDK with metal support
+    (lib.cmakeBool "MATERIALX_BUILD_GEN_MSL" (
+      stdenv.hostPlatform.isLinux || (stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isDarwin)
+    ))
+  ];
+
+  pythonImportsCheck = [ "MaterialX" ];
+
+  postInstall = ''
+    # Make python lib properly accessible
+    target_dir=$out/${python.sitePackages}
+    mkdir -p $(dirname $target_dir)
+    # required for cmake to find the bindings, when included in other projects
+    ln -s $out/python $target_dir
+  '';
+
+  meta = {
+    changelog = "https://github.com/AcademySoftwareFoundation/MaterialX/blob/${src.rev}/CHANGELOG.md";
+    description = "Open standard for representing rich material and look-development content in computer graphics";
+    homepage = "https://materialx.org";
+    maintainers = [ lib.maintainers.gador ];
+    platforms = lib.platforms.unix;
+    license = lib.licenses.mpl20;
+  };
+}
diff --git a/pkgs/development/python-modules/materialyoucolor/default.nix b/pkgs/development/python-modules/materialyoucolor/default.nix
new file mode 100644
index 0000000000000..3cb67e4aefd96
--- /dev/null
+++ b/pkgs/development/python-modules/materialyoucolor/default.nix
@@ -0,0 +1,59 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchurl,
+  fetchPypi,
+  setuptools,
+  pybind11,
+  requests,
+  rich,
+  pillow,
+}:
+
+let
+  test-image = fetchurl {
+    name = "test-image.jpg";
+    url = "https://unsplash.com/photos/u9tAl8WR3DI/download";
+    hash = "sha256-shGNdgOOydgGBtl/JCbTJ0AYgl+2xWvCgHBL+bEoTaE=";
+  };
+in
+buildPythonPackage rec {
+  pname = "materialyoucolor";
+  version = "2.0.9";
+  pyproject = true;
+
+  # PyPI sources contain additional vendored sources
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-J35//h3tWn20f5ej6OXaw4NKnxung9q7m0E4Zf9PUw4=";
+  };
+
+  build-system = [
+    setuptools
+    pybind11
+  ];
+
+  nativeCheckInputs = [
+    requests
+    rich
+    pillow
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+    python tests/test_all.py ${test-image} 1
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [
+    "materialyoucolor"
+    "materialyoucolor.quantize" # ext
+  ];
+
+  meta = {
+    description = "Material You color generation algorithms in python";
+    homepage = "https://github.com/T-Dynamos/materialyoucolor-python";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tomasajt ];
+  };
+}
diff --git a/pkgs/development/python-modules/mathlibtools/default.nix b/pkgs/development/python-modules/mathlibtools/default.nix
index 0d7ad7b2528a4..0253ac6d7497c 100644
--- a/pkgs/development/python-modules/mathlibtools/default.nix
+++ b/pkgs/development/python-modules/mathlibtools/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, atomicwrites
-, buildPythonPackage
-, click
-, fetchPypi
-, gitpython
-, networkx
-, pydot
-, pygithub
-, pythonOlder
-, pyyaml
-, toml
-, tqdm
+{
+  lib,
+  atomicwrites,
+  buildPythonPackage,
+  click,
+  fetchPypi,
+  gitpython,
+  networkx,
+  pydot,
+  pygithub,
+  pythonOlder,
+  pyyaml,
+  toml,
+  tqdm,
 }:
 
 buildPythonPackage rec {
@@ -40,9 +41,7 @@ buildPythonPackage rec {
   # Requires internet access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "mathlibtools"
-  ];
+  pythonImportsCheck = [ "mathlibtools" ];
 
   meta = with lib; {
     description = "Supporting tool for Lean's mathlib";
diff --git a/pkgs/development/python-modules/mathutils/default.nix b/pkgs/development/python-modules/mathutils/default.nix
new file mode 100644
index 0000000000000..97442eba2b855
--- /dev/null
+++ b/pkgs/development/python-modules/mathutils/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitLab
+
+# build-system
+, setuptools
+}:
+
+buildPythonPackage rec {
+  pname = "mathutils";
+  version = "3.3.0";
+  pyproject = true;
+
+  src = fetchFromGitLab {
+    owner = "ideasman42";
+    repo = "blender-mathutils";
+    rev = "d63d623a9e580a567eb6acb7dbed7cad0e4f8c28";
+    hash = "sha256-c28kt2ADw4wHNLN0CBPcJU/kqm6g679QRaICk4WwaBc=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+
+  pythonImportsCheck = [ "mathutils" ];
+
+  meta = with lib; {
+    description = "A general math utilities library providing Matrix, Vector, Quaternion, Euler and Color classes, written in C for speed";
+    homepage = "https://gitlab.com/ideasman42/blender-mathutils";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ autra ];
+  };
+}
diff --git a/pkgs/development/python-modules/matlink-gpapi/default.nix b/pkgs/development/python-modules/matlink-gpapi/default.nix
index 3c3cda1bf8db0..3df24acd72a48 100644
--- a/pkgs/development/python-modules/matlink-gpapi/default.nix
+++ b/pkgs/development/python-modules/matlink-gpapi/default.nix
@@ -1,18 +1,17 @@
-{ buildPythonPackage
-, cryptography
-, fetchPypi
-, lib
-, pythonOlder
-, protobuf
-, pycryptodome
-, requests
+{
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  lib,
+  protobuf,
+  pycryptodome,
+  requests,
 }:
 
 buildPythonPackage rec {
   version = "0.4.4.5";
   format = "setuptools";
   pname = "matlink-gpapi";
-  disabled = pythonOlder "3.3"; # uses shutil.which(), added in 3.3
 
   src = fetchPypi {
     inherit version pname;
@@ -25,7 +24,12 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "gpapi.googleplay" ];
 
-  propagatedBuildInputs = [ cryptography protobuf pycryptodome requests ];
+  propagatedBuildInputs = [
+    cryptography
+    protobuf
+    pycryptodome
+    requests
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/NoMore201/googleplay-api";
diff --git a/pkgs/development/python-modules/matplotlib-inline/default.nix b/pkgs/development/python-modules/matplotlib-inline/default.nix
index 90cbd00dc4d14..e12969a95c141 100644
--- a/pkgs/development/python-modules/matplotlib-inline/default.nix
+++ b/pkgs/development/python-modules/matplotlib-inline/default.nix
@@ -1,23 +1,32 @@
-{ lib, buildPythonPackage, fetchPypi
-, traitlets
-
-# tests
-, ipython
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  traitlets,
+
+  # tests
+  ipython,
 }:
 
 buildPythonPackage rec {
   pname = "matplotlib-inline";
-  version = "0.1.6";
-  format = "setuptools";
+  version = "0.1.7";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-+Ifl8Qupjo0rFQ3c9HAsHl+LOiAAXrD3S/29Ng7m8wQ=";
+  src = fetchFromGitHub {
+    owner = "ipython";
+    repo = "matplotlib-inline";
+    rev = "refs/tags/${version}";
+    hash = "sha256-y7T8BshNa8NVWzH8oLS4dTAyhG+YmkkYQJFAyMXsJFA=";
   };
 
-  propagatedBuildInputs = [
-    traitlets
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ traitlets ];
 
   # wants to import ipython, which creates a circular dependency
   doCheck = false;
@@ -28,12 +37,14 @@ buildPythonPackage rec {
     #"matplotlib_inline"
   ];
 
-  passthru.tests = { inherit ipython; };
+  passthru.tests = {
+    inherit ipython;
+  };
 
   meta = with lib; {
     description = "Matplotlib Inline Back-end for IPython and Jupyter";
     homepage = "https://github.com/ipython/matplotlib-inline";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/matplotlib-sixel/default.nix b/pkgs/development/python-modules/matplotlib-sixel/default.nix
index e1d2e80f84c45..98da9405ad1b3 100644
--- a/pkgs/development/python-modules/matplotlib-sixel/default.nix
+++ b/pkgs/development/python-modules/matplotlib-sixel/default.nix
@@ -1,31 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, imagemagick
-, matplotlib
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  imagemagick,
+  matplotlib,
 }:
 
 buildPythonPackage rec {
   pname = "matplotlib-sixel";
   version = "0.0.2";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-JXOb1/IacJV8bhDvF+OPs2Yg1tgRDOqwiAQfiSKTlew=";
   };
 
-  propagatedBuildInputs = [ matplotlib ];
+  build-system = [ setuptools ];
+
+  dependencies = [ matplotlib ];
 
   postPatch = ''
     substituteInPlace sixel/sixel.py \
-      --replace 'Popen(["convert",' 'Popen(["${imagemagick}/bin/convert",'
+      --replace-fail 'Popen(["convert",' 'Popen(["${imagemagick}/bin/convert",'
   '';
 
   pythonImportsCheck = [ "sixel" ];
 
   meta = with lib; {
-    description = "A sixel graphics backend for matplotlib";
+    description = "Sixel graphics backend for matplotlib";
     homepage = "https://github.com/jonathf/matplotlib-sixel";
     license = licenses.bsd3;
     maintainers = with maintainers; [ GaetanLepage ];
diff --git a/pkgs/development/python-modules/matplotlib-venn/default.nix b/pkgs/development/python-modules/matplotlib-venn/default.nix
new file mode 100644
index 0000000000000..acc988b4e6614
--- /dev/null
+++ b/pkgs/development/python-modules/matplotlib-venn/default.nix
@@ -0,0 +1,40 @@
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools,
+  matplotlib,
+  numpy,
+  scipy,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  version = "0.11.10";
+  pname = "matplotlib-venn";
+
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-kNDPsnnF273339ciwOJRWjf1NelJvK0XRIO8d343LmU=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    matplotlib
+    numpy
+    scipy
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "Functions for plotting area-proportional two- and three-way Venn diagrams in matplotlib";
+    homepage = "https://github.com/konstantint/matplotlib-venn";
+    changelog = "https://github.com/konstantint/matplotlib-venn/releases/tag/${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ moraxyc ];
+  };
+}
diff --git a/pkgs/development/python-modules/matplotlib/default.nix b/pkgs/development/python-modules/matplotlib/default.nix
index 788df3d9458eb..d91c96e6dd74f 100644
--- a/pkgs/development/python-modules/matplotlib/default.nix
+++ b/pkgs/development/python-modules/matplotlib/default.nix
@@ -1,75 +1,87 @@
-{ lib
-, stdenv
-, fetchPypi
-, writeText
-, buildPythonPackage
-, isPyPy
-, pythonOlder
-
-# build-system
-, certifi
-, pkg-config
-, pybind11
-, setuptools
-, setuptools-scm
-, wheel
-
-# native libraries
-, ffmpeg-headless
-, freetype
-, qhull
-
-# propagates
-, contourpy
-, cycler
-, fonttools
-, kiwisolver
-, numpy
-, packaging
-, pillow
-, pyparsing
-, python-dateutil
-
-# optional
-, importlib-resources
-
-# GTK3
-, enableGtk3 ? false
-, cairo
-, gobject-introspection
-, gtk3
-, pycairo
-, pygobject3
-
-# Tk
-# Darwin has its own "MacOSX" backend, PyPy has tkagg backend and does not support tkinter
-, enableTk ? (!stdenv.isDarwin && !isPyPy)
-, tcl
-, tk
-, tkinter
-
-# Ghostscript
-, enableGhostscript ? true
-, ghostscript
-
-# Qt
-, enableQt ? false
-, pyqt5
-
-# Webagg
-, enableWebagg ? false
-, tornado
-
-# nbagg
-, enableNbagg ? false
-, ipykernel
-
-# darwin
-, Cocoa
-
-# required for headless detection
-, libX11
-, wayland
+{
+  lib,
+  stdenv,
+  fetchPypi,
+  buildPythonPackage,
+  isPyPy,
+  pythonOlder,
+
+  # build-system
+  certifi,
+  pkg-config,
+  pybind11,
+  meson-python,
+  setuptools-scm,
+  pytestCheckHook,
+  python,
+  matplotlib,
+  fetchurl,
+
+  # native libraries
+  ffmpeg-headless,
+  freetype,
+  # By default, almost all tests fail due to the fact we use our version of
+  # freetype. We still define use this argument to define the overriden
+  # derivation `matplotlib.passthru.tests.withoutOutdatedFreetype` - which
+  # builds matplotlib with the freetype version they default to, with which all
+  # tests should pass.
+  doCheck ? false,
+  qhull,
+
+  # propagates
+  contourpy,
+  cycler,
+  fonttools,
+  kiwisolver,
+  numpy,
+  packaging,
+  pillow,
+  pyparsing,
+  python-dateutil,
+
+  # optional
+  importlib-resources,
+
+  # GTK3
+  enableGtk3 ? false,
+  cairo,
+  gobject-introspection,
+  gtk3,
+  pycairo,
+  pygobject3,
+
+  # Tk
+  # Darwin has its own "MacOSX" backend, PyPy has tkagg backend and does not support tkinter
+  enableTk ? (!stdenv.hostPlatform.isDarwin && !isPyPy),
+  tcl,
+  tk,
+  tkinter,
+
+  # Ghostscript
+  enableGhostscript ? true,
+  ghostscript,
+
+  # Qt
+  enableQt ? false,
+  pyqt5,
+
+  # Webagg
+  enableWebagg ? false,
+  tornado,
+
+  # nbagg
+  enableNbagg ? false,
+  ipykernel,
+
+  # darwin
+  Cocoa,
+
+  # required for headless detection
+  libX11,
+  wayland,
+
+  # Reverse dependency
+  sage,
 }:
 
 let
@@ -77,15 +89,15 @@ let
 in
 
 buildPythonPackage rec {
-  version = "3.8.3";
+  version = "3.9.1";
   pname = "matplotlib";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-e0FiOemuOL5UsCirv5BIr/UFSpq6VBa+8L0X+RYs4WE=";
+    hash = "sha256-3gaxm425XdM9DcF8kmx8nr7Z9XIHS2+sT2UGimgU0BA=";
   };
 
   env.XDG_RUNTIME_DIR = "/tmp";
@@ -97,101 +109,123 @@ buildPythonPackage rec {
   # With the following patch we just hard-code these paths into the install
   # script.
   postPatch =
-    let
-      tcl_tk_cache = ''"${tk}/lib", "${tcl}/lib", "${lib.strings.substring 0 3 tk.version}"'';
-    in
-    lib.optionalString enableTk ''
-      sed -i '/self.tcl_tk_cache = None/s|None|${tcl_tk_cache}|' setupext.py
-    '' + lib.optionalString (stdenv.isLinux && interactive) ''
+    ''
+      substituteInPlace pyproject.toml \
+        --replace-fail '"numpy>=2.0.0rc1,<2.3",' ""
+      patchShebangs tools
+    ''
+    + lib.optionalString (stdenv.hostPlatform.isLinux && interactive) ''
       # fix paths to libraries in dlopen calls (headless detection)
-      substituteInPlace src/_c_internal_utils.c \
-        --replace libX11.so.6 ${libX11}/lib/libX11.so.6 \
-        --replace libwayland-client.so.0 ${wayland}/lib/libwayland-client.so.0
+      substituteInPlace src/_c_internal_utils.cpp \
+        --replace-fail libX11.so.6 ${libX11}/lib/libX11.so.6 \
+        --replace-fail libwayland-client.so.0 ${wayland}/lib/libwayland-client.so.0
     '';
 
-  nativeBuildInputs = [
+  nativeBuildInputs = [ pkg-config ] ++ lib.optionals enableGtk3 [ gobject-introspection ];
+
+  buildInputs =
+    [
+      ffmpeg-headless
+      freetype
+      qhull
+    ]
+    ++ lib.optionals enableGhostscript [ ghostscript ]
+    ++ lib.optionals enableGtk3 [
+      cairo
+      gtk3
+    ]
+    ++ lib.optionals enableTk [
+      libX11
+      tcl
+      tk
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [ Cocoa ];
+
+  # clang-11: error: argument unused during compilation: '-fno-strict-overflow' [-Werror,-Wunused-command-line-argument]
+  hardeningDisable = lib.optionals stdenv.hostPlatform.isDarwin [ "strictoverflow" ];
+
+  build-system = [
     certifi
     numpy
-    pkg-config
     pybind11
-    setuptools
+    meson-python
     setuptools-scm
-    wheel
-  ] ++ lib.optionals enableGtk3 [
-    gobject-introspection
-  ];
-
-  buildInputs = [
-    ffmpeg-headless
-    freetype
-    qhull
-  ] ++ lib.optionals enableGhostscript [
-    ghostscript
-  ] ++ lib.optionals enableGtk3 [
-    cairo
-    gtk3
-  ] ++ lib.optionals enableTk [
-    libX11
-    tcl
-    tk
-  ] ++ lib.optionals stdenv.isDarwin [
-    Cocoa
-  ];
-
-  # clang-11: error: argument unused during compilation: '-fno-strict-overflow' [-Werror,-Wunused-command-line-argument]
-  hardeningDisable = lib.optionals stdenv.isDarwin [
-    "strictoverflow"
   ];
 
-  propagatedBuildInputs = [
-    # explicit
-    contourpy
-    cycler
-    fonttools
-    kiwisolver
-    numpy
-    packaging
-    pillow
-    pyparsing
-    python-dateutil
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-resources
-  ] ++ lib.optionals enableGtk3 [
-    pycairo
-    pygobject3
-  ] ++ lib.optionals enableQt [
-    pyqt5
-  ] ++ lib.optionals enableWebagg [
-    tornado
-  ] ++ lib.optionals enableNbagg [
-    ipykernel
-  ] ++ lib.optionals enableTk [
-    tkinter
-  ];
+  dependencies =
+    [
+      # explicit
+      contourpy
+      cycler
+      fonttools
+      kiwisolver
+      numpy
+      packaging
+      pillow
+      pyparsing
+      python-dateutil
+    ]
+    ++ lib.optionals (pythonOlder "3.10") [ importlib-resources ]
+    ++ lib.optionals enableGtk3 [
+      pycairo
+      pygobject3
+    ]
+    ++ lib.optionals enableQt [ pyqt5 ]
+    ++ lib.optionals enableWebagg [ tornado ]
+    ++ lib.optionals enableNbagg [ ipykernel ]
+    ++ lib.optionals enableTk [ tkinter ];
+
+  mesonFlags = lib.mapAttrsToList lib.mesonBool {
+    system-freetype = true;
+    system-qhull = true;
+    # Otherwise GNU's `ar` binary fails to put symbols from libagg into the
+    # matplotlib shared objects. See:
+    # -https://github.com/matplotlib/matplotlib/issues/28260#issuecomment-2146243663
+    # -https://github.com/matplotlib/matplotlib/issues/28357#issuecomment-2155350739
+    b_lto = false;
+  };
 
-  passthru.config = {
-    directories = { basedirlist = "."; };
-    libs = {
-      system_freetype = true;
-      system_qhull = true;
-      # LTO not working in darwin stdenv, see #19312
-      enable_lto = !stdenv.isDarwin;
+  passthru.tests = {
+    inherit sage;
+    withOutdatedFreetype = matplotlib.override {
+      doCheck = true;
+      freetype = freetype.overrideAttrs (_: {
+        src = fetchurl {
+          url = "https://download.savannah.gnu.org/releases/freetype/freetype-old/freetype-2.6.1.tar.gz";
+          sha256 = "sha256-Cjx9+9ptoej84pIy6OltmHq6u79x68jHVlnkEyw2cBQ=";
+        };
+        patches = [ ];
+      });
     };
   };
 
-  env.MPLSETUPCFG = writeText "mplsetup.cfg" (lib.generators.toINI {} passthru.config);
-
-  # Encountering a ModuleNotFoundError, as describved and investigated at:
-  # https://github.com/NixOS/nixpkgs/issues/255262 . It could be that some of
-  # which may fail due to a freetype version that doesn't match the freetype
-  # version used by upstream.
-  doCheck = false;
+  pythonImportsCheck = [ "matplotlib" ];
+  inherit doCheck;
+  nativeCheckInputs = [ pytestCheckHook ];
+  preCheck = ''
+    # https://matplotlib.org/devdocs/devel/testing.html#obtain-the-reference-images
+    find lib -name baseline_images -printf '%P\n' | while read p; do
+      cp -r lib/"$p" $out/${python.sitePackages}/"$p"
+    done
+    # Tests will fail without these files as well
+    cp \
+      lib/matplotlib/tests/{mpltest.ttf,cmr10.pfb,Courier10PitchBT-Bold.pfb} \
+      $out/${python.sitePackages}/matplotlib/tests/
+    # https://github.com/NixOS/nixpkgs/issues/255262
+    cd $out
+  '';
 
   meta = with lib; {
     description = "Python plotting library, making publication quality plots";
     homepage = "https://matplotlib.org/";
     changelog = "https://github.com/matplotlib/matplotlib/releases/tag/v${version}";
-    license = with licenses; [ psfl bsd0 ];
-    maintainers = with maintainers; [ lovek323 veprbl ];
+    license = with licenses; [
+      psfl
+      bsd0
+    ];
+    maintainers = with maintainers; [
+      lovek323
+      veprbl
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/matplotx/default.nix b/pkgs/development/python-modules/matplotx/default.nix
index 77643ece548df..8baa52efcf4d5 100644
--- a/pkgs/development/python-modules/matplotx/default.nix
+++ b/pkgs/development/python-modules/matplotx/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, setuptools
-, matplotlib
-, numpy
-, networkx
-, pypng
-, scipy
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+  matplotlib,
+  numpy,
+  networkx,
+  pypng,
+  scipy,
 }:
 
 buildPythonPackage rec {
@@ -44,11 +45,9 @@ buildPythonPackage rec {
 
   # This variable is needed to suppress the "Trace/BPT trap: 5" error in Darwin's checkPhase.
   # Not sure of the details, but we can avoid it by changing the matplotlib backend during testing.
-  env.MPLBACKEND = lib.optionalString stdenv.isDarwin "Agg";
+  env.MPLBACKEND = lib.optionalString stdenv.hostPlatform.isDarwin "Agg";
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.all;
+  nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.all;
 
   disabledTestPaths = [
     "tests/test_spy.py" # Requires meshzoo (non-free) and pytest-codeblocks (not packaged)
@@ -65,4 +64,3 @@ buildPythonPackage rec {
     maintainers = with lib.maintainers; [ swflint ];
   };
 }
-
diff --git a/pkgs/development/python-modules/matrix-api-async/default.nix b/pkgs/development/python-modules/matrix-api-async/default.nix
index d7ae05bddc968..5bc3704441a39 100644
--- a/pkgs/development/python-modules/matrix-api-async/default.nix
+++ b/pkgs/development/python-modules/matrix-api-async/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, matrix-client }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  matrix-client,
+}:
 
 buildPythonPackage rec {
   pname = "matrix_api_async";
@@ -17,7 +22,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "matrix_api_async" ];
 
   meta = with lib; {
-    description = "An asyncio wrapper of matrix_client.api";
+    description = "Asyncio wrapper of matrix_client.api";
     license = licenses.mit;
     homepage = "https://github.com/Cadair/matrix_api_async";
     maintainers = with maintainers; [ globin ];
diff --git a/pkgs/development/python-modules/matrix-client/default.nix b/pkgs/development/python-modules/matrix-client/default.nix
index c8975718b57c6..034a1745b9909 100644
--- a/pkgs/development/python-modules/matrix-client/default.nix
+++ b/pkgs/development/python-modules/matrix-client/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, requests
-, responses
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  requests,
+  responses,
+  urllib3,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/matrix-common/default.nix b/pkgs/development/python-modules/matrix-common/default.nix
index 8252bc267a02f..3f6b50d6e265b 100644
--- a/pkgs/development/python-modules/matrix-common/default.nix
+++ b/pkgs/development/python-modules/matrix-common/default.nix
@@ -1,10 +1,10 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, attrs
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  attrs,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,17 +18,11 @@ buildPythonPackage rec {
     hash = "sha256-YuEhzM2fJDQXtX7DenbcRK6xmKelxnr9a4J1mS/yq9E=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    attrs
-  ];
+  propagatedBuildInputs = [ attrs ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   pythonImportsCheck = [ "matrix_common" ];
 
diff --git a/pkgs/development/python-modules/matrix-nio/allow-tests-without-olm.patch b/pkgs/development/python-modules/matrix-nio/allow-tests-without-olm.patch
new file mode 100644
index 0000000000000..392f163e4be9d
--- /dev/null
+++ b/pkgs/development/python-modules/matrix-nio/allow-tests-without-olm.patch
@@ -0,0 +1,59 @@
+diff --git a/tests/async_client_test.py b/tests/async_client_test.py
+index b0f7a5a..2494fc6 100644
+--- a/tests/async_client_test.py
++++ b/tests/async_client_test.py
+@@ -140,7 +140,10 @@ from nio.api import (
+     ThreadInclusion,
+ )
+ from nio.client.async_client import connect_wrapper, on_request_chunk_sent
+-from nio.crypto import OlmDevice, Session, decrypt_attachment
++try:
++    from nio.crypto import OlmDevice, Session, decrypt_attachment
++except ImportError:
++    pass
+ from nio.responses import PublicRoom, PublicRoomsResponse
+ 
+ BASE_URL_V1 = f"https://example.org{MATRIX_API_PATH_V1}"
+diff --git a/tests/conftest.py b/tests/conftest.py
+index 0c67ee0..6b77e02 100644
+--- a/tests/conftest.py
++++ b/tests/conftest.py
+@@ -10,11 +10,17 @@ from conftest_async import (  # noqa: F401
+     async_client_pair_same_user,
+     unauthed_async_client,
+ )
+-from olm import Account
++try:
++    from olm import Account
++except ImportError:
++    pass
+ 
+ from nio import Client, ClientConfig, HttpClient
+-from nio.crypto import Olm, OlmDevice
+-from nio.store import SqliteMemoryStore
++try:
++    from nio.crypto import Olm, OlmDevice
++    from nio.store import SqliteMemoryStore
++except ImportError:
++    pass
+ 
+ ALICE_ID = "@alice:example.org"
+ ALICE_DEVICE_ID = "JLAFKJWSCS"
+diff --git a/tests/helpers.py b/tests/helpers.py
+index 63445b6..05096d1 100644
+--- a/tests/helpers.py
++++ b/tests/helpers.py
+@@ -26,8 +26,11 @@ from hyperframe.frame import (
+     WindowUpdateFrame,
+ )
+ 
+-from nio.crypto import OlmAccount, OlmDevice
+-from nio.store import Ed25519Key
++try:
++    from nio.crypto import OlmAccount, OlmDevice
++    from nio.store import Ed25519Key
++except ImportError:
++    pass
+ 
+ SAMPLE_SETTINGS = {
+     SettingsFrame.HEADER_TABLE_SIZE: 4096,
diff --git a/pkgs/development/python-modules/matrix-nio/default.nix b/pkgs/development/python-modules/matrix-nio/default.nix
index 38daf62a635bf..537a80408c669 100644
--- a/pkgs/development/python-modules/matrix-nio/default.nix
+++ b/pkgs/development/python-modules/matrix-nio/default.nix
@@ -1,61 +1,67 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# build-system
-, poetry-core
-
-# dependencies
-, aiofiles
-, aiohttp
-, aiohttp-socks
-, h11
-, h2
-, jsonschema
-, pycryptodome
-, unpaddedbase64
-
-# optional-dependencies
-, atomicwrites
-, cachetools
-, peewee
-, python-olm
-
-# tests
-, aioresponses
-, faker
-, hpack
-, hyperframe
-, hypothesis
-, pytest-aiohttp
-, pytest-benchmark
-, pytestCheckHook
-
-# passthru tests
-, nixosTests
-, opsdroid
-, pantalaimon
-, weechatScripts
-, zulip
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  aiofiles,
+  aiohttp,
+  aiohttp-socks,
+  h11,
+  h2,
+  jsonschema,
+  pycryptodome,
+  unpaddedbase64,
+
+  # optional-dependencies
+  atomicwrites,
+  cachetools,
+  peewee,
+  python-olm,
+
+  # tests
+  aioresponses,
+  faker,
+  hpack,
+  hyperframe,
+  hypothesis,
+  pytest-aiohttp,
+  pytest-benchmark,
+  pytestCheckHook,
+
+  # passthru tests
+  nixosTests,
+  opsdroid,
+  pantalaimon,
+  weechatScripts,
+  zulip,
+
+  withOlm ? false,
 }:
 
 buildPythonPackage rec {
   pname = "matrix-nio";
-  version = "0.24.0";
-  format = "pyproject";
+  version = "0.25.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "poljar";
     repo = "matrix-nio";
-    rev = version;
-    hash = "sha256-XlswVHLvKOi1qr+I7Mbm4IBjn1DG7glgDsNY48NA5Ew=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-wk1UjnazBdK4BCWXRG5Bn9Rasrk+yy3qqideS8tEAk8=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
+  patches = [
+    # Ignore olm import failures when testing
+    ./allow-tests-without-olm.patch
   ];
 
-  propagatedBuildInputs = [
+  build-system = [ poetry-core ];
+
+  dependencies = [
     aiofiles
     aiohttp
     aiohttp-socks
@@ -64,9 +70,9 @@ buildPythonPackage rec {
     jsonschema
     pycryptodome
     unpaddedbase64
-  ];
+  ] ++ lib.optionals withOlm optional-dependencies.e2e;
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     e2e = [
       atomicwrites
       cachetools
@@ -75,6 +81,11 @@ buildPythonPackage rec {
     ];
   };
 
+  pythonRelaxDeps = [
+    "aiofiles"
+    "aiohttp-socks" # Pending matrix-nio/matrix-nio#516
+  ];
+
   nativeCheckInputs = [
     aioresponses
     faker
@@ -84,41 +95,79 @@ buildPythonPackage rec {
     pytest-aiohttp
     pytest-benchmark
     pytestCheckHook
-  ] ++ passthru.optional-dependencies.e2e;
-
-  pytestFlagsArray = [
-    "--benchmark-disable"
   ];
 
-  disabledTests = [
-    # touches network
-    "test_connect_wrapper"
-    # time dependent and flaky
-    "test_transfer_monitor_callbacks"
+  pytestFlagsArray = [ "--benchmark-disable" ];
+
+  disabledTestPaths = lib.optionals (!withOlm) [
+    "tests/encryption_test.py"
+    "tests/key_export_test.py"
+    "tests/memory_store_test.py"
+    "tests/sas_test.py"
+    "tests/sessions_test.py"
+    "tests/store_test.py"
   ];
 
+  disabledTests =
+    [
+      # touches network
+      "test_connect_wrapper"
+      # time dependent and flaky
+      "test_transfer_monitor_callbacks"
+    ]
+    ++ lib.optionals (!withOlm) [
+      "test_client_account_sharing"
+      "test_client_key_query"
+      "test_client_login"
+      "test_client_protocol_error"
+      "test_client_restore_login"
+      "test_client_room_creation"
+      "test_device_store"
+      "test_e2e_sending"
+      "test_early_store_loading"
+      "test_encrypted_data_generator"
+      "test_http_client_keys_query"
+      "test_key_claiming"
+      "test_key_exports"
+      "test_key_invalidation"
+      "test_key_sharing"
+      "test_key_sharing_callbacks"
+      "test_key_sharing_cancellation"
+      "test_keys_query"
+      "test_keys_upload"
+      "test_marking_sessions_as_shared"
+      "test_message_sending"
+      "test_query_rule"
+      "test_room_devices"
+      "test_sas_verification"
+      "test_sas_verification_cancel"
+      "test_session_sharing"
+      "test_session_sharing_2"
+      "test_session_unwedging"
+      "test_storing_room_encryption_state"
+      "test_sync_forever"
+      "test_sync_token_restoring"
+    ];
+
   passthru.tests = {
     inherit (nixosTests)
       dendrite
       matrix-appservice-irc
       matrix-conduit
       mjolnir
-    ;
-    inherit (weechatScripts)
-      weechat-matrix
-    ;
-    inherit
-      opsdroid
-      pantalaimon
-      zulip
-    ;
+      ;
+    inherit (weechatScripts) weechat-matrix;
+    inherit opsdroid pantalaimon zulip;
   };
 
   meta = with lib; {
     homepage = "https://github.com/poljar/matrix-nio";
     changelog = "https://github.com/poljar/matrix-nio/blob/${version}/CHANGELOG.md";
-    description = "A Python Matrix client library, designed according to sans I/O principles";
+    description = "Python Matrix client library, designed according to sans I/O principles";
     license = licenses.isc;
-    maintainers = with maintainers; [ tilpner emily symphorien ];
+    maintainers = with maintainers; [
+      tilpner
+      symphorien
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/mattermostdriver/default.nix b/pkgs/development/python-modules/mattermostdriver/default.nix
index 2089569f9b77e..fdf9e52963f4d 100644
--- a/pkgs/development/python-modules/mattermostdriver/default.nix
+++ b/pkgs/development/python-modules/mattermostdriver/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, websockets
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  websockets,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -18,7 +19,10 @@ buildPythonPackage rec {
     sha256 = "2e4d7b4a17d3013e279c6f993746ea18cd60b45d8fa3be24f47bc2de22b9b3b4";
   };
 
-  propagatedBuildInputs = [ websockets requests ];
+  propagatedBuildInputs = [
+    websockets
+    requests
+  ];
 
   pythonImportsCheck = [ "mattermostdriver" ];
 
@@ -26,7 +30,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A Python Mattermost Driver";
+    description = "Python Mattermost Driver";
     homepage = "https://github.com/Vaelor/python-mattermost-driver";
     license = licenses.mit;
     maintainers = with maintainers; [ globin ];
diff --git a/pkgs/development/python-modules/mautrix/default.nix b/pkgs/development/python-modules/mautrix/default.nix
index c054cc25a5337..1746fa01dbe97 100644
--- a/pkgs/development/python-modules/mautrix/default.nix
+++ b/pkgs/development/python-modules/mautrix/default.nix
@@ -1,28 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
   # deps
-, aiohttp
-, attrs
-, yarl
+  setuptools,
+  aiohttp,
+  attrs,
+  yarl,
   # optional deps
-, python-magic
-, python-olm
-, unpaddedbase64
-, pycryptodome
+  python-magic,
+  python-olm,
+  unpaddedbase64,
+  pycryptodome,
   # check deps
-, pytestCheckHook
-, pytest-asyncio
-, aiosqlite
-, asyncpg
-, ruamel-yaml
+  pytestCheckHook,
+  pytest-asyncio,
+  aiosqlite,
+  asyncpg,
+  ruamel-yaml,
+
+  withOlm ? false,
 }:
 
 buildPythonPackage rec {
   pname = "mautrix";
-  version = "0.20.4";
-  format = "setuptools";
+  version = "0.20.6";
+  pyproject = true;
 
   disabled = pythonOlder "3.10";
 
@@ -30,19 +34,19 @@ buildPythonPackage rec {
     owner = "mautrix";
     repo = "python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-A9d/r4Caeo4tO82/MMXgU5xKvXRDnK0iQUm8AFhDPLM=";
+    hash = "sha256-g6y2u3ipSp5HoakHqd/ryPlyA+kR7zO6uY4AqfqbwiE=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     aiohttp
     attrs
     yarl
-  ];
+  ] ++ lib.optionals withOlm optional-dependencies.encryption;
 
-  passthru.optional-dependencies = {
-    detect_mimetype = [
-      python-magic
-    ];
+  optional-dependencies = {
+    detect_mimetype = [ python-magic ];
     encryption = [
       python-olm
       unpaddedbase64
@@ -56,17 +60,22 @@ buildPythonPackage rec {
     aiosqlite
     asyncpg
     ruamel-yaml
-  ] ++ passthru.optional-dependencies.encryption;
-
-  pythonImportsCheck = [
-    "mautrix"
   ];
 
+  disabledTestPaths = lib.optionals (!withOlm) [ "mautrix/crypto/" ];
+
+  pythonImportsCheck = [ "mautrix" ];
+
   meta = with lib; {
     description = "Asyncio Matrix framework";
     homepage = "https://github.com/tulir/mautrix-python";
     changelog = "https://github.com/mautrix/python/releases/tag/v${version}";
     license = licenses.mpl20;
-    maintainers = with maintainers; [ nyanloutre ma27 sumnerevans nickcao ];
+    maintainers = with maintainers; [
+      nyanloutre
+      ma27
+      sumnerevans
+      nickcao
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/maxcube-api/default.nix b/pkgs/development/python-modules/maxcube-api/default.nix
index 43d0f7a1d7fb4..f82fc861bb4eb 100644
--- a/pkgs/development/python-modules/maxcube-api/default.nix
+++ b/pkgs/development/python-modules/maxcube-api/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     substituteInPlace setup.py --replace "license=license" "license='MIT'"
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     "testSendRadioMsgClosesConnectionOnErrorAndRetriesIfReusingConnection"
@@ -40,6 +39,6 @@ buildPythonPackage rec {
     description = "eQ-3/ELV MAX! Cube Python API";
     homepage = "https://github.com/hackercowboy/python-maxcube-api";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/maxminddb/default.nix b/pkgs/development/python-modules/maxminddb/default.nix
index 3f95408364db0..0dffe5503122d 100644
--- a/pkgs/development/python-modules/maxminddb/default.nix
+++ b/pkgs/development/python-modules/maxminddb/default.nix
@@ -1,45 +1,40 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, libmaxminddb
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  libmaxminddb,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "maxminddb";
-  version = "2.5.2";
+  version = "2.6.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-s8M+T8eCHubJ9Ag3EW4Wq2F1hj1KZO7gJMW+xoZpCoc=";
+    hash = "sha256-fYQtMuJiCryJS315paEAemnfLGzyeaBrlMnDkT9m8mQ=";
   };
 
-  buildInputs = [
-    libmaxminddb
-  ];
+  buildInputs = [ libmaxminddb ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "maxminddb"
-  ];
+  pythonImportsCheck = [ "maxminddb" ];
 
   # The multiprocessing tests fail on Darwin because multiprocessing uses spawn instead of fork,
   # resulting in an exception when it can’t pickle the `lookup` local function.
-  disabledTests = lib.optionals stdenv.isDarwin [ "multiprocessing" ];
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [ "multiprocessing" ];
 
   meta = with lib; {
     description = "Reader for the MaxMind DB format";
     homepage = "https://github.com/maxmind/MaxMind-DB-Reader-python";
     changelog = "https://github.com/maxmind/MaxMind-DB-Reader-python/blob/v${version}/HISTORY.rst";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/maya/default.nix b/pkgs/development/python-modules/maya/default.nix
index 96387c8f25751..05b5367517d7f 100644
--- a/pkgs/development/python-modules/maya/default.nix
+++ b/pkgs/development/python-modules/maya/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, dateparser
-, fetchFromGitHub
-, freezegun
-, humanize
-, pendulum
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, pytz
-, setuptools
-, snaptime
-, tzlocal
+{
+  lib,
+  buildPythonPackage,
+  dateparser,
+  fetchFromGitHub,
+  freezegun,
+  humanize,
+  pendulum,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  setuptools,
+  snaptime,
+  tzlocal,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
       --replace-fail "humanize.time.abs_timedelta" "humanize.time._abs_timedelta"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     dateparser
@@ -53,9 +52,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "maya"
-  ];
+  pythonImportsCheck = [ "maya" ];
 
   disabledTests = [
     # https://github.com/timofurrer/maya/issues/202
@@ -67,6 +64,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/timofurrer/maya";
     changelog = "https://github.com/timofurrer/maya/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/mayavi/default.nix b/pkgs/development/python-modules/mayavi/default.nix
index a34f98cdae39f..32929cfe2353e 100644
--- a/pkgs/development/python-modules/mayavi/default.nix
+++ b/pkgs/development/python-modules/mayavi/default.nix
@@ -1,59 +1,34 @@
-{ lib
-, apptools
-, buildPythonPackage
-, envisage
-, fetchPypi
-, fetchpatch
-, numpy
-, packaging
-, pyface
-, pygments
-, pyqt5
-, pythonOlder
-, pythonAtLeast
-, traitsui
-, vtk
-, wrapQtAppsHook
+{
+  lib,
+  apptools,
+  buildPythonPackage,
+  envisage,
+  fetchPypi,
+  numpy,
+  packaging,
+  pyface,
+  pygments,
+  pyqt5,
+  pythonOlder,
+  pythonAtLeast,
+  traitsui,
+  vtk,
+  wrapQtAppsHook,
 }:
 
 buildPythonPackage rec {
   pname = "mayavi";
-  version = "4.8.1";
+  version = "4.8.2";
   format = "setuptools";
-  disabled = pythonOlder "3.8" || pythonAtLeast "3.11";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-n0J+8spska542S02ibpr7KJMhGDicG2KHJuEKJrT/Z4=";
+    hash = "sha256-sQ/pFF8hxI5JAvDnRrNgOzy2lNEUVlFaRoIPIaCnQik=";
   };
 
-  patches = [
-    # Adds compatibility with Python 3.11.
-    # https://github.com/enthought/mayavi/pull/1199
-    (fetchpatch {
-      name = "python311-compat.patch";
-      url = "https://github.com/enthought/mayavi/commit/50c0cbfcf97560be69c84b7c924635a558ebf92f.patch";
-      hash = "sha256-zZOT6on/f5cEjnDBrNGog/wPQh7rBkaFqrxkBYDUQu0=";
-      includes = [ "tvtk/src/*" ];
-    })
-    # Fixes an incompatible function pointer conversion error
-    # https://github.com/enthought/mayavi/pull/1266
-    (fetchpatch {
-      name = "incompatible-pointer-conversion.patch";
-      url = "https://github.com/enthought/mayavi/commit/887adc8fe2b076a368070f5b1d564745b03b1964.patch";
-      hash = "sha256-88H1NNotd4pO0Zw1oLrYk5WNuuVrmTU01HJgsTRfKlo=";
-    })
-  ];
-
-  postPatch = ''
-    # building the docs fails with the usual Qt xcb error, so skip:
-    substituteInPlace setup.py \
-      --replace "build.build.run(self)" "build.build.run(self); return"
-  '';
-
-  nativeBuildInputs = [
-    wrapQtAppsHook
-  ];
+  nativeBuildInputs = [ wrapQtAppsHook ];
 
   propagatedBuildInputs = [
     apptools
@@ -72,9 +47,7 @@ buildPythonPackage rec {
   # Needs X server
   doCheck = false;
 
-  pythonImportsCheck = [
-    "mayavi"
-  ];
+  pythonImportsCheck = [ "mayavi" ];
 
   preFixup = ''
     makeWrapperArgs+=("''${qtWrapperArgs[@]}")
@@ -85,5 +58,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/enthought/mayavi";
     license = licenses.bsdOriginal;
     maintainers = with maintainers; [ knedlsepp ];
+    mainProgram = "mayavi2";
   };
 }
diff --git a/pkgs/development/python-modules/mayim/default.nix b/pkgs/development/python-modules/mayim/default.nix
index 3cbc740aa4584..49d4a23c80e15 100644
--- a/pkgs/development/python-modules/mayim/default.nix
+++ b/pkgs/development/python-modules/mayim/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-
-, psycopg
-, aiosqlite
-, asyncmy
-
-# test
-, pytest-asyncio
-
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+
+  psycopg,
+  aiosqlite,
+  asyncmy,
+
+  # test
+  pytest-asyncio,
+  pytest-cov-stub,
+
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -26,36 +28,30 @@ buildPythonPackage rec {
     hash = "sha256-nb0E9kMEJUihaCp8RnqGh0nSyDQo50eL1C4K5lBPlPQ=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     wheel
   ];
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace "--cov=src --cov-append --cov-report term-missing" ""
-  '';
-
   passthru.optional-dependencies = {
-    postgres = [
-      psycopg
-    ] ++ psycopg.optional-dependencies.pool;
-    mysql = [
-      asyncmy
-    ];
-    sqlite = [
-      aiosqlite
-    ];
+    postgres = [ psycopg ] ++ psycopg.optional-dependencies.pool;
+    mysql = [ asyncmy ];
+    sqlite = [ aiosqlite ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-    pytest-asyncio
-  ] ++ (with passthru.optional-dependencies; [postgres mysql sqlite]);
-
-  pythonImportsCheck = [
-    "mayim"
-  ];
+  nativeCheckInputs =
+    [
+      pytestCheckHook
+      pytest-asyncio
+      pytest-cov-stub
+    ]
+    ++ (with passthru.optional-dependencies; [
+      postgres
+      mysql
+      sqlite
+    ]);
+
+  pythonImportsCheck = [ "mayim" ];
 
   meta = with lib; {
     description = "Asynchronous SQL hydrator";
diff --git a/pkgs/development/python-modules/mbddns/default.nix b/pkgs/development/python-modules/mbddns/default.nix
index 05137b56b0049..d738cca95394e 100644
--- a/pkgs/development/python-modules/mbddns/default.nix
+++ b/pkgs/development/python-modules/mbddns/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     sha256 = "13xzkprqk1v0zlzx4a0n9zzpnlb1g2h6pc62ms66fj72lsmjynj7";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/mbstrdecoder/default.nix b/pkgs/development/python-modules/mbstrdecoder/default.nix
index 550c69ba006c0..c7e3681d010dd 100644
--- a/pkgs/development/python-modules/mbstrdecoder/default.nix
+++ b/pkgs/development/python-modules/mbstrdecoder/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, chardet
-, pytestCheckHook
-, faker
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  chardet,
+  pytestCheckHook,
+  faker,
 }:
 
 buildPythonPackage rec {
@@ -19,25 +20,17 @@ buildPythonPackage rec {
     hash = "sha256-GcAxXcCYC2XAE8xu/jdDxjPxkLJzbmvWZ3OgmcvQcmk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    chardet
-  ];
+  propagatedBuildInputs = [ chardet ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  checkInputs = [
-    faker
-  ];
+  checkInputs = [ faker ];
 
   meta = with lib; {
     homepage = "https://github.com/thombashi/mbstrdecoder";
-    description = "A library for decoding multi-byte character strings";
+    description = "Library for decoding multi-byte character strings";
     maintainers = with maintainers; [ genericnerdyusername ];
     license = licenses.mit;
   };
diff --git a/pkgs/development/python-modules/mccabe/default.nix b/pkgs/development/python-modules/mccabe/default.nix
index 5de63b1888acd..7c556d0b382f6 100644
--- a/pkgs/development/python-modules/mccabe/default.nix
+++ b/pkgs/development/python-modules/mccabe/default.nix
@@ -1,10 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, hypothesis
-, hypothesmith
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-NI4CQMM7YLvfTlIxku+RnyjLLD19XHeU90AJKQ8jYyU=";
   };
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   # https://github.com/PyCQA/mccabe/issues/93
   doCheck = false;
@@ -28,6 +24,6 @@ buildPythonPackage rec {
     description = "McCabe checker, plugin for flake8";
     homepage = "https://github.com/flintwork/mccabe";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/mcstatus/default.nix b/pkgs/development/python-modules/mcstatus/default.nix
index 886cf432f7bad..d4c3059e9290b 100644
--- a/pkgs/development/python-modules/mcstatus/default.nix
+++ b/pkgs/development/python-modules/mcstatus/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, asyncio-dgram
-, buildPythonPackage
-, dnspython
-, fetchFromGitHub
-, poetry-core
-, poetry-dynamic-versioning
-, pytest-asyncio
-, pytest-rerunfailures
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  asyncio-dgram,
+  buildPythonPackage,
+  dnspython,
+  fetchFromGitHub,
+  poetry-core,
+  poetry-dynamic-versioning,
+  pytest-asyncio,
+  pytest-rerunfailures,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -48,9 +49,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "mcstatus"
-  ];
+  pythonImportsCheck = [ "mcstatus" ];
 
   disabledTests = [
     # DNS features are limited in the sandbox
diff --git a/pkgs/development/python-modules/mcuuid/default.nix b/pkgs/development/python-modules/mcuuid/default.nix
index 39236f792be76..0f0a1d922d155 100644
--- a/pkgs/development/python-modules/mcuuid/default.nix
+++ b/pkgs/development/python-modules/mcuuid/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -16,16 +17,12 @@ buildPythonPackage rec {
     hash = "sha256-YwM7CdZVXpUXKXUzFL3AtoDhekLDIvZ/q8taLsHihNk=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # upstream code does not provide tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "mcuuid"
-  ];
+  pythonImportsCheck = [ "mcuuid" ];
 
   meta = with lib; {
     description = "Getting Minecraft player information from Mojang API";
diff --git a/pkgs/development/python-modules/md-toc/default.nix b/pkgs/development/python-modules/md-toc/default.nix
index 34887cc91fa7d..2ee15c4c30035 100644
--- a/pkgs/development/python-modules/md-toc/default.nix
+++ b/pkgs/development/python-modules/md-toc/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fpyutils
-, pyfakefs
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fpyutils,
+  pyfakefs,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,26 +23,18 @@ buildPythonPackage rec {
     hash = "sha256-nKkKtLEW0pohXiMtjWl2Kzh7SRwZJ/yzhXpDyluLodc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    fpyutils
-  ];
+  propagatedBuildInputs = [ fpyutils ];
 
   nativeCheckInputs = [
     pyfakefs
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "md_toc/tests/*.py"
-  ];
+  pytestFlagsArray = [ "md_toc/tests/*.py" ];
 
-  pythonImportsCheck = [
-    "md_toc"
-  ];
+  pythonImportsCheck = [ "md_toc" ];
 
   meta = with lib; {
     description = "Table of contents generator for Markdown";
diff --git a/pkgs/development/python-modules/md2gemini/default.nix b/pkgs/development/python-modules/md2gemini/default.nix
index a8843f25b3cd5..08a39b7fb5e90 100644
--- a/pkgs/development/python-modules/md2gemini/default.nix
+++ b/pkgs/development/python-modules/md2gemini/default.nix
@@ -1,12 +1,23 @@
-{ lib, buildPythonPackage, fetchPypi, mistune, cjkwrap, wcwidth
-, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mistune,
+  cjkwrap,
+  wcwidth,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "md2gemini";
   version = "1.9.1";
   format = "setuptools";
 
-  propagatedBuildInputs = [ mistune cjkwrap wcwidth ];
+  propagatedBuildInputs = [
+    mistune
+    cjkwrap
+    wcwidth
+  ];
   nativeCheckInputs = [ pytestCheckHook ];
   pythonImportsCheck = [ "md2gemini" ];
 
diff --git a/pkgs/development/python-modules/md2pdf/default.nix b/pkgs/development/python-modules/md2pdf/default.nix
new file mode 100644
index 0000000000000..abcb118aa8188
--- /dev/null
+++ b/pkgs/development/python-modules/md2pdf/default.nix
@@ -0,0 +1,57 @@
+{
+  buildPythonPackage,
+  docopt,
+  fetchFromGitHub,
+  lib,
+  markdown2,
+  pytest-cov-stub,
+  pytestCheckHook,
+  setuptools,
+  weasyprint,
+}:
+
+buildPythonPackage rec {
+  pname = "md2pdf";
+  version = "1.0.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "jmaupetit";
+    repo = "md2pdf";
+    rev = "refs/tags/${version}";
+    hash = "sha256-9B1vVfcBHk+xdE2Xouu95j3Hp4xm9d5DgPv2zKwCvHY=";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace-fail '"pytest-runner",' ""
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    docopt
+    markdown2
+    weasyprint
+  ];
+
+  pythonImportsCheck = [ "md2pdf" ];
+
+  nativeCheckInputs = [
+    pytest-cov-stub
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    export PATH="$out/bin:$PATH"
+  '';
+
+  meta = {
+    changelog = "https://github.com/jmaupetit/md2pdf/blob/${src.rev}/CHANGELOG.md";
+    description = "Markdown to PDF conversion tool";
+    homepage = "https://github.com/jmaupetit/md2pdf";
+    license = lib.licenses.mit;
+    mainProgram = "md2pdf";
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/mdformat-admon/default.nix b/pkgs/development/python-modules/mdformat-admon/default.nix
index 7025864b440a8..efc9e7b2dbb1f 100644
--- a/pkgs/development/python-modules/mdformat-admon/default.nix
+++ b/pkgs/development/python-modules/mdformat-admon/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, mdformat
-, mdit-py-plugins
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  mdformat,
+  mdit-py-plugins,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "mdformat-admon";
-  version = "2.0.3";
+  version = "2.0.6";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,21 +20,17 @@ buildPythonPackage rec {
     owner = "KyleKing";
     repo = "mdformat-admon";
     rev = "refs/tags/v${version}";
-    hash = "sha256-zKc0kKap4ipZ+P+RYDXcwqyzq9NKcTnCmx64cApFxFg=";
+    hash = "sha256-YyEiqry1dAm/2EEuQjPFEfdpLI+NiLhVcyx4jAyXs4E=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     mdformat
     mdit-py-plugins
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Mdformat plugin for admonitions";
diff --git a/pkgs/development/python-modules/mdformat-beautysh/default.nix b/pkgs/development/python-modules/mdformat-beautysh/default.nix
index 940e4754c2703..8c71b83aa2645 100644
--- a/pkgs/development/python-modules/mdformat-beautysh/default.nix
+++ b/pkgs/development/python-modules/mdformat-beautysh/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, beautysh
-, buildPythonPackage
-, fetchFromGitHub
-, mdformat
-, mdformat-gfm
-, mdit-py-plugins
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  beautysh,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mdformat,
+  mdformat-gfm,
+  mdit-py-plugins,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-mH9PN6QsPmnIzh/0vxa+5mYLzANUHRruXC0ql4h8myw=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     beautysh
@@ -35,13 +34,9 @@ buildPythonPackage rec {
     mdit-py-plugins
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mdformat_beautysh"
-  ];
+  pythonImportsCheck = [ "mdformat_beautysh" ];
 
   meta = with lib; {
     description = "Mdformat plugin to beautify Bash scripts";
diff --git a/pkgs/development/python-modules/mdformat-footnote/default.nix b/pkgs/development/python-modules/mdformat-footnote/default.nix
index 4d452ce5e452f..9b0e35c2eed23 100644
--- a/pkgs/development/python-modules/mdformat-footnote/default.nix
+++ b/pkgs/development/python-modules/mdformat-footnote/default.nix
@@ -1,12 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, linkify-it-py
-, markdown-it-py
-, mdformat
-, mdit-py-plugins
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  mdformat,
+  mdit-py-plugins,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,18 +22,14 @@ buildPythonPackage rec {
     hash = "sha256-DUCBWcmB5i6/HkqxjlU3aTRO7i0n2sj+e/doKB8ffeo=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     mdformat
     mdit-py-plugins
   ];
 
-  pythonImportsCheck = [
-    "mdformat_footnote"
-  ];
+  pythonImportsCheck = [ "mdformat_footnote" ];
 
   meta = with lib; {
     description = "Footnote format addition for mdformat";
diff --git a/pkgs/development/python-modules/mdformat-frontmatter/default.nix b/pkgs/development/python-modules/mdformat-frontmatter/default.nix
index ee2fe29693b2a..85c054258d76d 100644
--- a/pkgs/development/python-modules/mdformat-frontmatter/default.nix
+++ b/pkgs/development/python-modules/mdformat-frontmatter/default.nix
@@ -1,13 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, linkify-it-py
-, markdown-it-py
-, mdformat
-, mdit-py-plugins
-, ruamel-yaml
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  mdformat,
+  mdit-py-plugins,
+  ruamel-yaml,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-2heQw8LL/ILY36oItBeQq33qjVBGT51qGG4CcCEDutA=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     mdformat
@@ -34,15 +31,16 @@ buildPythonPackage rec {
     ruamel-yaml
   ];
 
-  pythonImportsCheck = [
-    "mdformat_frontmatter"
-  ];
+  pythonImportsCheck = [ "mdformat_frontmatter" ];
 
   meta = with lib; {
     description = "Mdformat plugin to ensure frontmatter is respected";
     homepage = "https://github.com/butler54/mdformat-frontmatter";
     changelog = "https://github.com/butler54/mdformat-frontmatter/blob/v{version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ aldoborrero polarmutex ];
+    maintainers = with maintainers; [
+      aldoborrero
+      polarmutex
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/mdformat-gfm-alerts/default.nix b/pkgs/development/python-modules/mdformat-gfm-alerts/default.nix
new file mode 100644
index 0000000000000..097e2b912cf88
--- /dev/null
+++ b/pkgs/development/python-modules/mdformat-gfm-alerts/default.nix
@@ -0,0 +1,41 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  mdformat,
+  mdit-py-plugins,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "mdformat-gfm-alerts";
+  version = "1.0.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "KyleKing";
+    repo = "mdformat-gfm-alerts";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-2EYdNCyS1LxcEnCXkOugAAGx5XLWV4cWTNkXjR8RVQo=";
+  };
+
+  build-system = [ flit-core ];
+
+  dependencies = [
+    mdformat
+    mdit-py-plugins
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "mdformat_gfm_alerts" ];
+
+  meta = {
+    description = "Format 'GitHub Markdown Alerts', which use blockquotes to render admonitions";
+    homepage = "https://github.com/KyleKing/mdformat-gfm-alerts";
+    changelog = "https://github.com/KyleKing/mdformat-gfm-alerts/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/mdformat-gfm/default.nix b/pkgs/development/python-modules/mdformat-gfm/default.nix
index 15a79eb0f4ca0..dc057d9a82e09 100644
--- a/pkgs/development/python-modules/mdformat-gfm/default.nix
+++ b/pkgs/development/python-modules/mdformat-gfm/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, linkify-it-py
-, markdown-it-py
-, mdformat
-, mdformat-tables
-, mdit-py-plugins
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  linkify-it-py,
+  markdown-it-py,
+  mdformat,
+  mdformat-tables,
+  mdit-py-plugins,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-c1jJwyTL8IgQnIAJFoPSuJ8VEYgnQ4slZyV0bHlUHLQ=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     markdown-it-py
@@ -37,23 +36,22 @@ buildPythonPackage rec {
     linkify-it-py
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     "test_default_style__api"
     "test_default_style__cli"
   ];
 
-  pythonImportsCheck = [
-    "mdformat_gfm"
-  ];
+  pythonImportsCheck = [ "mdformat_gfm" ];
 
   meta = with lib; {
     description = "Mdformat plugin for GitHub Flavored Markdown compatibility";
     homepage = "https://github.com/hukkin/mdformat-gfm";
     license = licenses.mit;
-    maintainers = with maintainers; [ aldoborrero polarmutex ];
+    maintainers = with maintainers; [
+      aldoborrero
+      polarmutex
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/mdformat-mkdocs/default.nix b/pkgs/development/python-modules/mdformat-mkdocs/default.nix
index 611c5b11dc0c6..d7cf61de83b77 100644
--- a/pkgs/development/python-modules/mdformat-mkdocs/default.nix
+++ b/pkgs/development/python-modules/mdformat-mkdocs/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, mdformat
-, mdformat-admon
-, mdformat-gfm
-, mdit-py-plugins
-, more-itertools
-, pythonOlder
-, pytest-snapshot
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  mdformat,
+  mdformat-admon,
+  mdformat-gfm,
+  mdit-py-plugins,
+  more-itertools,
+  pythonOlder,
+  pytest-snapshot,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "mdformat-mkdocs";
-  version = "2.0.10";
+  version = "3.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -23,12 +24,10 @@ buildPythonPackage rec {
     owner = "KyleKing";
     repo = "mdformat-mkdocs";
     rev = "refs/tags/v${version}";
-    hash = "sha256-N1VU9bOdVENIX6QsFa0jeVugmXjl3gNkVPS/m8gEB2Q=";
+    hash = "sha256-Af15Xs8K/QSeIxQNgi1n8xZ+SyyzNs5JL3wse0+LoyE=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     mdformat
@@ -48,9 +47,7 @@ buildPythonPackage rec {
     "tests/format/test_parsed_result.py"
   ];
 
-  pythonImportsCheck = [
-    "mdformat_mkdocs"
-  ];
+  pythonImportsCheck = [ "mdformat_mkdocs" ];
 
   meta = with lib; {
     description = "Mdformat plugin for MkDocs";
diff --git a/pkgs/development/python-modules/mdformat-nix-alejandra/default.nix b/pkgs/development/python-modules/mdformat-nix-alejandra/default.nix
index d59e09f999e0a..a5e55044d4c0f 100644
--- a/pkgs/development/python-modules/mdformat-nix-alejandra/default.nix
+++ b/pkgs/development/python-modules/mdformat-nix-alejandra/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, alejandra
-, buildPythonPackage
-, fetchFromGitHub
-, mdformat
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  alejandra,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mdformat,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -27,21 +28,13 @@ buildPythonPackage rec {
       --replace-fail '"alejandra"' '"${lib.getExe alejandra}"'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    mdformat
-  ];
+  propagatedBuildInputs = [ mdformat ];
 
-  pythonImportsCheck = [
-    "mdformat_nix_alejandra"
-  ];
+  pythonImportsCheck = [ "mdformat_nix_alejandra" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Mdformat plugin format Nix code blocks with alejandra";
diff --git a/pkgs/development/python-modules/mdformat-simple-breaks/default.nix b/pkgs/development/python-modules/mdformat-simple-breaks/default.nix
index 9bff43e4d402c..caeb23a214f3c 100644
--- a/pkgs/development/python-modules/mdformat-simple-breaks/default.nix
+++ b/pkgs/development/python-modules/mdformat-simple-breaks/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, mdformat
-, mdit-py-plugins
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  mdformat,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-4lJHB4r9lI2uGJ/BmFFc92sumTRKBBwiRmGBdQkzfd0=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    mdformat
-  ];
+  propagatedBuildInputs = [ mdformat ];
 
-  pythonImportsCheck = [
-    "mdformat_simple_breaks"
-  ];
+  pythonImportsCheck = [ "mdformat_simple_breaks" ];
 
   meta = with lib; {
     description = "Mdformat plugin to render thematic breaks using three dashes";
diff --git a/pkgs/development/python-modules/mdformat-tables/default.nix b/pkgs/development/python-modules/mdformat-tables/default.nix
index cfd468d9cc6e1..713eefc5ec961 100644
--- a/pkgs/development/python-modules/mdformat-tables/default.nix
+++ b/pkgs/development/python-modules/mdformat-tables/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, mdformat
-, mdit-py-plugins
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  mdformat,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,26 +22,21 @@ buildPythonPackage rec {
     hash = "sha256-Q61GmaRxjxJh9GjyR8QCZOH0njFUtAWihZ9lFQJ2nQQ=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    mdformat
-  ];
+  propagatedBuildInputs = [ mdformat ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mdformat_tables"
-  ];
+  pythonImportsCheck = [ "mdformat_tables" ];
 
   meta = with lib; {
-    description = "An mdformat plugin for rendering tables";
+    description = "Mdformat plugin for rendering tables";
     homepage = "https://github.com/executablebooks/mdformat-tables";
     license = licenses.mit;
-    maintainers = with maintainers; [ aldoborrero polarmutex ];
+    maintainers = with maintainers; [
+      aldoborrero
+      polarmutex
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/mdformat-toc/default.nix b/pkgs/development/python-modules/mdformat-toc/default.nix
index 1597dcec197a5..c97e29248c0e4 100644
--- a/pkgs/development/python-modules/mdformat-toc/default.nix
+++ b/pkgs/development/python-modules/mdformat-toc/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mdformat
-, mdit-py-plugins
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mdformat,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,26 +22,21 @@ buildPythonPackage rec {
     hash = "sha256-3EX6kGez408tEYiR9VSvi3GTrb4ds+HJwpFflv77nkg=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    mdformat
-  ];
+  propagatedBuildInputs = [ mdformat ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mdformat_toc"
-  ];
+  pythonImportsCheck = [ "mdformat_toc" ];
 
   meta = with lib; {
     description = "Mdformat plugin to generate a table of contents";
     homepage = "https://github.com/hukkin/mdformat-toc";
     license = licenses.mit;
-    maintainers = with maintainers; [ aldoborrero polarmutex ];
+    maintainers = with maintainers; [
+      aldoborrero
+      polarmutex
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/mdformat/default.nix b/pkgs/development/python-modules/mdformat/default.nix
index eec56ee479441..28df80388d876 100644
--- a/pkgs/development/python-modules/mdformat/default.nix
+++ b/pkgs/development/python-modules/mdformat/default.nix
@@ -1,15 +1,13 @@
-{ lib
-, buildPythonApplication
-, buildPythonPackage
-, fetchFromGitHub
-, importlib-metadata
-, makeWrapper
-, markdown-it-py
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, tomli
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  importlib-metadata,
+  markdown-it-py,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  tomli,
 }:
 
 buildPythonPackage rec {
@@ -26,25 +24,16 @@ buildPythonPackage rec {
     hash = "sha256-umtfbhN6sDR/rFr1LwmJ21Ph9bK1Qq43bmMVzGCPD5s=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    markdown-it-py
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ];
+  propagatedBuildInputs =
+    [ markdown-it-py ]
+    ++ lib.optionals (pythonOlder "3.11") [ tomli ]
+    ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mdformat"
-  ];
+  pythonImportsCheck = [ "mdformat" ];
 
   passthru = {
     withPlugins = throw "Use pkgs.mdformat.withPlugins, i.e. the top-level attribute.";
@@ -55,7 +44,10 @@ buildPythonPackage rec {
     homepage = "https://mdformat.rtfd.io/";
     changelog = "https://github.com/executablebooks/mdformat/blob/${version}/docs/users/changelog.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ fab aldoborrero ];
+    maintainers = with maintainers; [
+      fab
+      aldoborrero
+    ];
     mainProgram = "mdformat";
   };
 }
diff --git a/pkgs/development/python-modules/mdit-py-plugins/default.nix b/pkgs/development/python-modules/mdit-py-plugins/default.nix
index ad3e8580f11dd..730b78a7b42d9 100644
--- a/pkgs/development/python-modules/mdit-py-plugins/default.nix
+++ b/pkgs/development/python-modules/mdit-py-plugins/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, flit-core
-, markdown-it-py
-, pytest-regressions
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  flit-core,
+  markdown-it-py,
+  pytest-regressions,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "mdit-py-plugins";
-  version = "0.4.0";
+  version = "0.4.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -19,31 +20,25 @@ buildPythonPackage rec {
     owner = "executablebooks";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-YBJu0vIOD747DrJLcqiZMHq34+gHdXeGLCw1OxxzIJ0=";
+    hash = "sha256-xIbP2zHvHWV+2wW17i78vxc5npCvRBYP6QuL/mCBIww=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    markdown-it-py
-  ];
+  propagatedBuildInputs = [ markdown-it-py ];
 
   nativeCheckInputs = [
     pytestCheckHook
     pytest-regressions
   ];
 
-  pythonImportsCheck = [
-    "mdit_py_plugins"
-  ];
+  pythonImportsCheck = [ "mdit_py_plugins" ];
 
   meta = with lib; {
     description = "Collection of core plugins for markdown-it-py";
     homepage = "https://github.com/executablebooks/mdit-py-plugins";
     changelog = "https://github.com/executablebooks/mdit-py-plugins/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ AluisioASG ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/mdp/default.nix b/pkgs/development/python-modules/mdp/default.nix
index 40f57408703f9..69102cddcd3f9 100644
--- a/pkgs/development/python-modules/mdp/default.nix
+++ b/pkgs/development/python-modules/mdp/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, future
-, joblib
-, numpy
-, pytest
-, pythonOlder
-, scikit-learn
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  future,
+  joblib,
+  numpy,
+  pytest,
+  pythonOlder,
+  scikit-learn,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/mdtraj/default.nix b/pkgs/development/python-modules/mdtraj/default.nix
index 971688348a1d5..e4a2dc8587e8c 100644
--- a/pkgs/development/python-modules/mdtraj/default.nix
+++ b/pkgs/development/python-modules/mdtraj/default.nix
@@ -1,62 +1,65 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, llvmPackages
-, zlib
-, cython_0
-, oldest-supported-numpy
-, setuptools
-, wheel
-, astunparse
-, numpy
-, pyparsing
-, scipy
-, gsd
-, networkx
-, pandas
-, pytest-xdist
-, pytestCheckHook
-, tables
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  llvmPackages,
+  zlib,
+  cython_0,
+  oldest-supported-numpy,
+  setuptools,
+  wheel,
+  astunparse,
+  numpy,
+  packaging,
+  pyparsing,
+  scipy,
+  gsd,
+  networkx,
+  pandas,
+  pytest-xdist,
+  pytestCheckHook,
+  tables,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
   pname = "mdtraj";
-  version = "1.9.9";
+  version = "1.10.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "mdtraj";
     repo = "mdtraj";
     rev = "refs/tags/${version}";
-    hash = "sha256-2Jg6DyVJlRBLD/6hMtcsrAdxKF5RkpUuhAQm/lqVGeE=";
+    hash = "sha256-hNv/humEZOX4W7cOlJSAodk9pIi18//YJNSWNiEFiVg=";
   };
 
   patches = [
+    # disable intrinsics when SIMD is not available
+    # TODO: enable SIMD with python3.12
+    # https://github.com/mdtraj/mdtraj/pull/1884
     (fetchpatch {
-      name = "gsd_3-compatibility.patch";
-      url = "https://github.com/mdtraj/mdtraj/commit/81209d00817ab07cfc4668bf5ec88088d16904c0.patch";
-      hash = "sha256-ttNmij7csxF0Z5wPPwhGumRX055W2IgFjRAe6nI6GNY=";
+      name = "fix-intrinsics-flag.patch";
+      url = "https://github.com/mdtraj/mdtraj/commit/d6041c645d51898e2a09030633210213eec7d4c5.patch";
+      hash = "sha256-kcnlHMoA/exJzV8iQltH+LWXrvSk7gsUV+yWK6xn0jg=";
     })
   ];
 
-  nativeBuildInputs = [
+  build-system = [
     cython_0
     oldest-supported-numpy
     setuptools
     wheel
   ];
 
-  buildInputs = [
-    zlib
-  ] ++ lib.optionals stdenv.cc.isClang [
-    llvmPackages.openmp
-  ];
+  buildInputs = [ zlib ] ++ lib.optionals stdenv.cc.isClang [ llvmPackages.openmp ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     astunparse
     numpy
+    packaging
     pyparsing
     scipy
   ];
@@ -87,15 +90,24 @@ buildPythonPackage rec {
     "test_read_atomindices_2"
 
     # flaky test
+    "test_compare_rdf_t_master"
     "test_distances_t"
+    "test_precentered_2"
+  ];
+
+  # these files import distutils
+  # remove once https://github.com/mdtraj/mdtraj/pull/1916 is merged
+  disabledTestPaths = lib.optionals (pythonAtLeast "3.12") [
+    "test_mol2.py"
+    "test_netcdf.py"
   ];
 
   pythonImportsCheck = [ "mdtraj" ];
 
   meta = with lib; {
-    description = "An open library for the analysis of molecular dynamics trajectories";
+    description = "Open library for the analysis of molecular dynamics trajectories";
     homepage = "https://github.com/mdtraj/mdtraj";
-    changelog = "https://github.com/mdtraj/mdtraj/releases/tag/${src.rev}";
+    changelog = "https://github.com/mdtraj/mdtraj/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = licenses.lgpl21Plus;
     maintainers = with maintainers; [ natsukium ];
   };
diff --git a/pkgs/development/python-modules/mdurl/default.nix b/pkgs/development/python-modules/mdurl/default.nix
index 4c3bde1d2dd41..6a5e3a7cdc739 100644
--- a/pkgs/development/python-modules/mdurl/default.nix
+++ b/pkgs/development/python-modules/mdurl/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-wxV8DKeTwKpFTUBuGTQXaVHc0eW1//Y+2V8Kgs85TDM=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mdurl"
-  ];
+  pythonImportsCheck = [ "mdurl" ];
 
   meta = with lib; {
     description = "URL utilities for markdown-it";
diff --git a/pkgs/development/python-modules/mdutils/default.nix b/pkgs/development/python-modules/mdutils/default.nix
index 7d8249547a834..5e39efda428be 100644
--- a/pkgs/development/python-modules/mdutils/default.nix
+++ b/pkgs/development/python-modules/mdutils/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -30,7 +31,7 @@ buildPythonPackage rec {
       this way, mdutils will make things easy for creating Markdown files.
     '';
     homepage = "https://github.com/didix21/mdutils";
-    changelog = "https://github.com/didix21/mdutils/releases/tag/${src.rev}";
+    changelog = "https://github.com/didix21/mdutils/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ azahi ];
   };
diff --git a/pkgs/development/python-modules/mdx-truly-sane-lists/default.nix b/pkgs/development/python-modules/mdx-truly-sane-lists/default.nix
index 823d1e26efef2..7787892efdaa9 100644
--- a/pkgs/development/python-modules/mdx-truly-sane-lists/default.nix
+++ b/pkgs/development/python-modules/mdx-truly-sane-lists/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, markdown
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  markdown,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -28,7 +28,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "Extension for Python-Markdown that makes lists truly sane.";
+    description = "Extension for Python-Markdown that makes lists truly sane";
     longDescription = ''
       Features custom indents for nested lists and fix for messy linebreaks and
       paragraphs between lists.
diff --git a/pkgs/development/python-modules/measurement/default.nix b/pkgs/development/python-modules/measurement/default.nix
index c16b03d8e829b..d69e8d4532dc3 100644
--- a/pkgs/development/python-modules/measurement/default.nix
+++ b/pkgs/development/python-modules/measurement/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, isPy3k
-, flit-core
-, flit-scm
-, sympy
-, pytestCheckHook
-, sphinx
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  isPy3k,
+  flit-core,
+  flit-scm,
+  sympy,
+  pytestCheckHook,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -34,13 +35,9 @@ buildPythonPackage rec {
       --replace "--cov=measurement" ""
   '';
 
-  propagatedBuildInputs = [
-    sympy
-  ];
+  propagatedBuildInputs = [ sympy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Use and manipulate unit-aware measurement objects in Python";
diff --git a/pkgs/development/python-modules/meater-python/default.nix b/pkgs/development/python-modules/meater-python/default.nix
index 219af570dfe87..1d707837ebe7c 100644
--- a/pkgs/development/python-modules/meater-python/default.nix
+++ b/pkgs/development/python-modules/meater-python/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-86XJmKOc2MCyU9v0UAZsPCUL/kAXywOlQOIHaykNF1o=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "meater"
-  ];
+  pythonImportsCheck = [ "meater" ];
 
   meta = with lib; {
     description = "Library for the Apption Labs Meater cooking probe";
diff --git a/pkgs/development/python-modules/mecab-python3/default.nix b/pkgs/development/python-modules/mecab-python3/default.nix
index e347aa107d7c7..5eebd19f53cff 100644
--- a/pkgs/development/python-modules/mecab-python3/default.nix
+++ b/pkgs/development/python-modules/mecab-python3/default.nix
@@ -1,22 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mecab
-, swig
-, setuptools-scm
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mecab,
+  swig,
+  setuptools-scm,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "mecab-python3";
-  version = "1.0.8";
+  version = "1.0.9";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-cJiLqyY2lkVvddPYkQx1rqR3qdCAVK1++FvlRw3T9ls=";
+    pname = "mecab_python3";
+    inherit version;
+    hash = "sha256-LYkfSgEZ+3Zvp5bijYgaVXk6DDVE5EbP9k3JRq1yJ8w=";
   };
 
   nativeBuildInputs = [
@@ -25,20 +27,20 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  buildInputs = [
-    mecab
-  ];
+  buildInputs = [ mecab ];
 
   doCheck = false;
 
-  pythonImportsCheck = [
-    "MeCab"
-  ];
+  pythonImportsCheck = [ "MeCab" ];
 
   meta = with lib; {
-    description = "A python wrapper for mecab: Morphological Analysis engine";
-    homepage =  "https://github.com/SamuraiT/mecab-python3";
+    description = "Python wrapper for mecab: Morphological Analysis engine";
+    homepage = "https://github.com/SamuraiT/mecab-python3";
     changelog = "https://github.com/SamuraiT/mecab-python3/releases/tag/v${version}";
-    license = with licenses; [ gpl2 lgpl21 bsd3 ]; # any of the three
+    license = with licenses; [
+      gpl2
+      lgpl21
+      bsd3
+    ]; # any of the three
   };
 }
diff --git a/pkgs/development/python-modules/mechanicalsoup/default.nix b/pkgs/development/python-modules/mechanicalsoup/default.nix
index 93b61a40972d1..587d54c8004d4 100644
--- a/pkgs/development/python-modules/mechanicalsoup/default.nix
+++ b/pkgs/development/python-modules/mechanicalsoup/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchFromGitHub
-, lxml
-, pytest-httpbin
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxml,
+  pytest-httpbin,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
 }:
 
 buildPythonPackage rec {
@@ -48,15 +49,16 @@ buildPythonPackage rec {
     requests-mock
   ];
 
-  pythonImportsCheck = [
-    "mechanicalsoup"
-  ];
+  pythonImportsCheck = [ "mechanicalsoup" ];
 
   meta = with lib; {
     description = "Python library for automating interaction with websites";
     homepage = "https://github.com/hickford/MechanicalSoup";
     changelog = "https://github.com/MechanicalSoup/MechanicalSoup/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ jgillich fab ];
+    maintainers = with maintainers; [
+      jgillich
+      fab
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/mechanize/default.nix b/pkgs/development/python-modules/mechanize/default.nix
index 3724fa64d06e7..97fa01697e491 100644
--- a/pkgs/development/python-modules/mechanize/default.nix
+++ b/pkgs/development/python-modules/mechanize/default.nix
@@ -1,48 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch2
-, html5lib
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  html5lib,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "mechanize";
-  version = "0.4.9";
+  version = "0.4.10";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-aaXtsJYvkh6LEINzaMIkLYrQSfC5H/aZzn9gG/xDFSE=";
+    hash = "sha256-HeqUf5vn6gq2EPe7xKTja0XWv9/O6imtPTiaiKGVfd8=";
   };
 
-  patches = [
-    (fetchpatch2 {
-      # python 3.11+ compat
-      url = "https://github.com/python-mechanize/mechanize/commit/1324b09b661aaac7d4cdc7e1e9d49e1c3851db2c.patch";
-      hash = "sha256-d0Zuz6m2Uv8pnR8TC0L+AStS82rPPTpQrrjkCZnJliE=";
-    })
-  ];
-
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    html5lib
-  ];
+  dependencies = [ html5lib ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mechanize"
-  ];
+  pythonImportsCheck = [ "mechanize" ];
 
   disabledTestPaths = [
     # Tests require network access
@@ -61,6 +45,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/python-mechanize/mechanize";
     changelog = "https://github.com/python-mechanize/mechanize/blob/v${version}/ChangeLog";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/mediafile/default.nix b/pkgs/development/python-modules/mediafile/default.nix
index 9faed762afaa6..a8c82e79235bb 100644
--- a/pkgs/development/python-modules/mediafile/default.nix
+++ b/pkgs/development/python-modules/mediafile/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, mutagen
-, pytestCheckHook
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  mutagen,
+  pytestCheckHook,
+  pythonOlder,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-5HHfG1hCIbM/QSXgB61yHNNWJTsuyAh6CQJ7SZhZuvo=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     mutagen
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mediafile"
-  ];
+  pythonImportsCheck = [ "mediafile" ];
 
   meta = with lib; {
     description = "Python interface to the metadata tags for many audio file formats";
diff --git a/pkgs/development/python-modules/mediafire-dl/default.nix b/pkgs/development/python-modules/mediafire-dl/default.nix
index 3cc81a6ce09c1..d4f5235007a56 100644
--- a/pkgs/development/python-modules/mediafire-dl/default.nix
+++ b/pkgs/development/python-modules/mediafire-dl/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, requests
-, six
-, tqdm
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  requests,
+  six,
+  tqdm,
 }:
 
 buildPythonPackage {
@@ -23,9 +24,7 @@ buildPythonPackage {
     tqdm
   ];
 
-  pythonImportsCheck = [
-    "mediafire_dl"
-  ];
+  pythonImportsCheck = [ "mediafire_dl" ];
 
   meta = with lib; {
     description = "Simple command-line script to download files from mediafire based on gdown";
diff --git a/pkgs/development/python-modules/mediapy/default.nix b/pkgs/development/python-modules/mediapy/default.nix
index bd8ccc0e78fca..971fc02dda002 100644
--- a/pkgs/development/python-modules/mediapy/default.nix
+++ b/pkgs/development/python-modules/mediapy/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, flit-core
-, ipython
-, matplotlib
-, numpy
-, pillow
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  flit-core,
+  ipython,
+  matplotlib,
+  numpy,
+  pillow,
 }:
 
 buildPythonPackage rec {
   pname = "mediapy";
-  version = "1.2.0";
+  version = "1.2.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-enxOx0hZ+fksk8ibsDWg0Bl/cJeSBHE37bN/D1ucECg=";
+    hash = "sha256-QtmhqpPBg1ULgk27Tw3l2mGqXITbjwHwY6zR8juQ7wo=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     ipython
@@ -32,9 +31,7 @@ buildPythonPackage rec {
     pillow
   ];
 
-  pythonImportsCheck = [
-    "mediapy"
-  ];
+  pythonImportsCheck = [ "mediapy" ];
 
   meta = with lib; {
     description = "Read/write/show images and videos in an IPython notebook";
diff --git a/pkgs/development/python-modules/medpy/default.nix b/pkgs/development/python-modules/medpy/default.nix
index 813b8ac71a52f..239919e4eb352 100644
--- a/pkgs/development/python-modules/medpy/default.nix
+++ b/pkgs/development/python-modules/medpy/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, unittestCheckHook
-, boost
-, numpy
-, scipy
-, simpleitk
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  unittestCheckHook,
+  boost,
+  numpy,
+  scipy,
+  simpleitk,
 }:
 
 buildPythonPackage rec {
   pname = "medpy";
-  version = "0.5.1";
+  version = "0.5.2";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -21,12 +22,10 @@ buildPythonPackage rec {
     owner = "loli";
     repo = "medpy";
     rev = "refs/tags/${version}";
-    hash = "sha256-kzOTYBcXAAEYoe/m/BjWNaQX4ljG17NxndevAt5KxjQ=";
+    hash = "sha256-M46d8qiR3+ioiuRhzIaU5bV1dnfDm819pjn78RYlcG0=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     boost
@@ -35,9 +34,7 @@ buildPythonPackage rec {
     simpleitk
   ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   preCheck = ''
     rm -r medpy/  # prevent importing from build directory at test time
diff --git a/pkgs/development/python-modules/meeko/default.nix b/pkgs/development/python-modules/meeko/default.nix
index 14162af458fcd..1d2afdbe10979 100644
--- a/pkgs/development/python-modules/meeko/default.nix
+++ b/pkgs/development/python-modules/meeko/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, numpy
-, pytestCheckHook
-, pythonOlder
-, rdkit
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  rdkit,
+  scipy,
 }:
 
 buildPythonPackage rec {
   pname = "meeko";
-  version = "0.5.0";
+  version = "0.5.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.5";
@@ -20,7 +21,7 @@ buildPythonPackage rec {
     owner = "forlilab";
     repo = "Meeko";
     rev = "refs/tags/v${version}";
-    hash = "sha256-pngFu6M63W26P7wd6FUNLuf0NikxtRtVR/pnR5PR6Wo=";
+    hash = "sha256-I/kAO0a6DbDqmzjS36ETuoH/Z1gR2eNpyE3herHDKMs=";
   };
 
   patches = [
@@ -44,18 +45,14 @@ buildPythonPackage rec {
     scipy
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "meeko"
-  ];
+  pythonImportsCheck = [ "meeko" ];
 
   meta = {
     description = "Python package for preparing small molecule for docking";
     homepage = "https://github.com/forlilab/Meeko";
-    changelog = "https://github.com/forlilab/Meeko/releases/tag/${src.rev}";
+    changelog = "https://github.com/forlilab/Meeko/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = lib.licenses.lgpl21Only;
     maintainers = with lib.maintainers; [ natsukium ];
   };
diff --git a/pkgs/development/python-modules/meep/default.nix b/pkgs/development/python-modules/meep/default.nix
index de8f8994a2fb5..d034595d03e4b 100644
--- a/pkgs/development/python-modules/meep/default.nix
+++ b/pkgs/development/python-modules/meep/default.nix
@@ -1,33 +1,33 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, autoreconfHook
-, pkg-config
-, mpiCheckPhaseHook
-, gfortran
-, mpi
-, blas
-, lapack
-, fftw
-, hdf5-mpi
-, swig
-, gsl
-, harminv
-, libctl
-, libGDSII
-, openssh
-, guile
-, python
-, numpy
-, scipy
-, matplotlib
-, h5py-mpi
-, cython
-, autograd
-, mpi4py
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  autoreconfHook,
+  pkg-config,
+  mpiCheckPhaseHook,
+  gfortran,
+  mpi,
+  blas,
+  lapack,
+  fftw,
+  hdf5-mpi,
+  swig,
+  gsl,
+  harminv,
+  libctl,
+  libGDSII,
+  openssh,
+  guile,
+  python,
+  numpy,
+  scipy,
+  matplotlib,
+  h5py-mpi,
+  cython,
+  autograd,
+  mpi4py,
 }:
 
 assert !blas.isILP64;
@@ -35,13 +35,13 @@ assert !lapack.isILP64;
 
 buildPythonPackage rec {
   pname = "meep";
-  version = "1.28.0";
+  version = "1.29.0";
 
   src = fetchFromGitHub {
     owner = "NanoComp";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-o/Xrd/Gn1RsbB+ZfggGH6/ugdsGtfTe2RgaHdpY5AyE=";
+    hash = "sha256-TB85obdk8pSWRaz3+3I6P6+dQtCHosWHRnKGck/wG9Q=";
   };
 
   format = "other";
@@ -75,19 +75,20 @@ buildPythonPackage rec {
     gsl
   ];
 
-  propagatedBuildInputs = [
-    mpi
-    numpy
-    scipy
-    matplotlib
-    h5py-mpi
-    cython
-    autograd
-    mpi4py
-  ]
-  ++ lib.optionals (!pythonOlder "3.12") [
+  propagatedBuildInputs =
+    [
+      mpi
+      numpy
+      scipy
+      matplotlib
+      h5py-mpi
+      cython
+      autograd
+      mpi4py
+    ]
+    ++ lib.optionals (!pythonOlder "3.12") [
       setuptools # used in python/visualization.py
-  ];
+    ];
 
   propagatedUserEnvPkgs = [ mpi ];
 
@@ -110,17 +111,22 @@ buildPythonPackage rec {
     "--enable-maintainer-mode"
   ];
 
-  passthru = { inherit mpi; };
+  passthru = {
+    inherit mpi;
+  };
 
   /*
-  This test is taken from the MEEP tutorial "Fields in a Waveguide" at
-  <https://meep.readthedocs.io/en/latest/Python_Tutorials/Basics/>.
-  It is important, that the test actually performs a calculation
-  (calls `sim.run()`), as only then MPI will be initialised and MPI linking
-  errors can be caught.
+    This test is taken from the MEEP tutorial "Fields in a Waveguide" at
+    <https://meep.readthedocs.io/en/latest/Python_Tutorials/Basics/>.
+    It is important, that the test actually performs a calculation
+    (calls `sim.run()`), as only then MPI will be initialised and MPI linking
+    errors can be caught.
   */
   doCheck = true;
-  nativeCheckInputs = [ mpiCheckPhaseHook openssh ];
+  nativeCheckInputs = [
+    mpiCheckPhaseHook
+    openssh
+  ];
   checkPhase = ''
     runHook preCheck
 
@@ -156,6 +162,9 @@ buildPythonPackage rec {
     homepage = "https://meep.readthedocs.io/en/latest/";
     license = licenses.gpl2Only;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ sheepforce markuskowa ];
+    maintainers = with maintainers; [
+      sheepforce
+      markuskowa
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/meilisearch/default.nix b/pkgs/development/python-modules/meilisearch/default.nix
index e5e47b934fd33..59252dddc7c18 100644
--- a/pkgs/development/python-modules/meilisearch/default.nix
+++ b/pkgs/development/python-modules/meilisearch/default.nix
@@ -1,38 +1,35 @@
-{ lib
-, buildPythonPackage
-, camel-converter
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, requests
+{
+  lib,
+  buildPythonPackage,
+  camel-converter,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "meilisearch";
-  version = "0.31.0";
+  version = "0.31.5";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "meilisearch";
     repo = "meilisearch-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-mgslzRd2hvDI0SbQR3eY2vzvaaOVI6mUihdNPKe4jcg=";
+    hash = "sha256-br+FnUnwDt64dvZAMEK/oqESCWZuOUt9Lp9HGcIPqxc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     camel-converter
     requests
   ] ++ camel-converter.optional-dependencies.pydantic;
 
-  pythonImportsCheck = [
-    "meilisearch"
-  ];
+  pythonImportsCheck = [ "meilisearch" ];
 
   # Tests spin up a local server and are not mocking the requests
   doCheck = false;
diff --git a/pkgs/development/python-modules/meinheld/default.nix b/pkgs/development/python-modules/meinheld/default.nix
index f84df9eef46fa..f29125287d7ae 100644
--- a/pkgs/development/python-modules/meinheld/default.nix
+++ b/pkgs/development/python-modules/meinheld/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchPypi, buildPythonPackage, greenlet }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  greenlet,
+}:
 
 buildPythonPackage rec {
   pname = "meinheld";
@@ -21,9 +26,7 @@ buildPythonPackage rec {
   # No tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "meinheld"
-  ];
+  pythonImportsCheck = [ "meinheld" ];
 
   meta = with lib; {
     description = "High performance asynchronous Python WSGI Web Server";
diff --git a/pkgs/development/python-modules/meld3/default.nix b/pkgs/development/python-modules/meld3/default.nix
index 039b22358d4dc..482fb76afee57 100644
--- a/pkgs/development/python-modules/meld3/default.nix
+++ b/pkgs/development/python-modules/meld3/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,8 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "An HTML/XML templating engine used by supervisor";
+    description = "HTML/XML templating engine used by supervisor";
     homepage = "https://github.com/supervisor/meld3";
     license = licenses.free;
   };
-
 }
diff --git a/pkgs/development/python-modules/memestra/default.nix b/pkgs/development/python-modules/memestra/default.nix
index db7d4e254a738..d9add2a93460a 100644
--- a/pkgs/development/python-modules/memestra/default.nix
+++ b/pkgs/development/python-modules/memestra/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, beniget
-, frilouz
-, gast
-, nbconvert
-, nbformat
-, pythonOlder
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  beniget,
+  frilouz,
+  gast,
+  nbconvert,
+  nbformat,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -15,8 +15,6 @@ buildPythonPackage rec {
   version = "0.2.1";
   format = "setuptools";
 
-  disabled = pythonOlder "3.4";
-
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-6shwf9BoDfZMy0itP8esNP4ov6fw6LJpO3Y5ZahwDZw=";
@@ -34,12 +32,10 @@ buildPythonPackage rec {
   # Tests are not detected and so the checkPhase fails
   doCheck = false;
 
-  pythonImportsCheck = [
-    "memestra"
-  ];
+  pythonImportsCheck = [ "memestra" ];
 
   meta = with lib; {
-    description = "A linter that tracks reference to deprecated functions.";
+    description = "Linter that tracks reference to deprecated functions";
     homepage = "https://github.com/QuantStack/memestra";
     license = licenses.bsd3;
     maintainers = with maintainers; [ GaetanLepage ];
diff --git a/pkgs/development/python-modules/memory-allocator/default.nix b/pkgs/development/python-modules/memory-allocator/default.nix
index c4ddc5d06a1b8..1dd2782396cfd 100644
--- a/pkgs/development/python-modules/memory-allocator/default.nix
+++ b/pkgs/development/python-modules/memory-allocator/default.nix
@@ -1,7 +1,11 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, cython
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  cython,
+
+  # Reverse dependency
+  sage,
 }:
 
 buildPythonPackage rec {
@@ -19,8 +23,12 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "memory_allocator" ];
 
+  passthru.tests = {
+    inherit sage;
+  };
+
   meta = with lib; {
-    description = "An extension class to allocate memory easily with cython";
+    description = "Extension class to allocate memory easily with cython";
     homepage = "https://github.com/sagemath/memory_allocator/";
     maintainers = teams.sage.members;
     license = licenses.lgpl3Plus;
diff --git a/pkgs/development/python-modules/memory-profiler/default.nix b/pkgs/development/python-modules/memory-profiler/default.nix
index 9264f136940cd..a23929a52be25 100644
--- a/pkgs/development/python-modules/memory-profiler/default.nix
+++ b/pkgs/development/python-modules/memory-profiler/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, python
-, fetchPypi
+{
+  lib,
+  python,
+  fetchPypi,
 }:
 
 python.pkgs.buildPythonPackage rec {
@@ -11,7 +12,7 @@ python.pkgs.buildPythonPackage rec {
   src = fetchPypi {
     pname = "memory_profiler";
     inherit version;
-    sha256 = "sha256-Tltz14ZKHRKS+3agPoKj5475NNBoKKaY2dradtogZ7A=";
+    hash = "sha256-Tltz14ZKHRKS+3agPoKj5475NNBoKKaY2dradtogZ7A=";
   };
 
   propagatedBuildInputs = with python.pkgs; [
@@ -20,7 +21,7 @@ python.pkgs.buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A module for monitoring memory usage of a process";
+    description = "Module for monitoring memory usage of a process";
     mainProgram = "mprof";
     longDescription = ''
       This is a python module for monitoring memory consumption of a process as
diff --git a/pkgs/development/python-modules/memory-tempfile/default.nix b/pkgs/development/python-modules/memory-tempfile/default.nix
new file mode 100644
index 0000000000000..7255e35f18ef3
--- /dev/null
+++ b/pkgs/development/python-modules/memory-tempfile/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, fetchpatch2
+, poetry-core
+}:
+
+buildPythonPackage rec {
+  pname = "memory-tempfile";
+  version = "2.2.3";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "mbello";
+    repo = "memory-tempfile";
+    rev = "v${version}";
+    hash = "sha256-4fz2CLkZdy2e1GwGw/afG54LkUVJ4cza70jcbX3rVlQ=";
+  };
+
+  patches = [
+    (fetchpatch2 {
+      # Migrate to poetry-core build backend
+      # https://github.com/mbello/memory-tempfile/pull/13
+      name = "poetry-core.patch";
+      url = "https://github.com/mbello/memory-tempfile/commit/938a3a3abf01756b1629eca6c69e970021bbc7c0.patch";
+      hash = "sha256-q3027MwKXtX09MH7T2UrX19BImK1FJo+YxADfxcdTME=";
+    })
+  ];
+
+  build-system = [ poetry-core ];
+
+  doCheck = false; # constrained selection of memory backed filesystems due to build sandbox
+
+  pythonImportsCheck = [ "memory_tempfile" ];
+
+  meta = with lib; {
+    description = "Create temporary files and temporary dirs in memory-based filesystems on Linux";
+    homepage = "https://github.com/mbello/memory-tempfile";
+    license = licenses.mit;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/development/python-modules/meraki/default.nix b/pkgs/development/python-modules/meraki/default.nix
index f0d0e4087e36e..7cd761f987aab 100644
--- a/pkgs/development/python-modules/meraki/default.nix
+++ b/pkgs/development/python-modules/meraki/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "meraki";
-  version = "1.45.0";
+  version = "1.50.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-PBeeohKNzAMlEdAjzB8fsVPc+ml+mcaWHoVWPeP93Bo=";
+    hash = "sha256-tKtfshAsKtXPkkDY13+QWRaWduQCBhor4+ReLjarwLA=";
   };
 
   propagatedBuildInputs = [
@@ -26,9 +27,7 @@ buildPythonPackage rec {
   # All tests require an API key
   doCheck = false;
 
-  pythonImportsCheck = [
-    "meraki"
-  ];
+  pythonImportsCheck = [ "meraki" ];
 
   meta = with lib; {
     description = "Provides all current Meraki dashboard API calls to interface with the Cisco Meraki cloud-managed platform";
diff --git a/pkgs/development/python-modules/mercadopago/default.nix b/pkgs/development/python-modules/mercadopago/default.nix
index dc71fc3266676..2a760b321eff3 100644
--- a/pkgs/development/python-modules/mercadopago/default.nix
+++ b/pkgs/development/python-modules/mercadopago/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -19,19 +20,15 @@ buildPythonPackage rec {
     hash = "sha256-ABxYGYUBOzeOSE0yK8jym+ldinDUCTpqO165OWhszgs=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # require internet
   doCheck = false;
 
-  pythonImportsCheck = [
-    "mercadopago"
-  ];
+  pythonImportsCheck = [ "mercadopago" ];
 
   meta = with lib; {
-    description = "This library provides developers with a simple set of bindings to help you integrate Mercado Pago API to a website and start receiving payments.";
+    description = "This library provides developers with a simple set of bindings to help you integrate Mercado Pago API to a website and start receiving payments";
     homepage = "https://www.mercadopago.com";
     changelog = "https://github.com/mercadopago/sdk-python/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/mercantile/default.nix b/pkgs/development/python-modules/mercantile/default.nix
index 8f496bca53c5b..7fd6e040a2af8 100644
--- a/pkgs/development/python-modules/mercantile/default.nix
+++ b/pkgs/development/python-modules/mercantile/default.nix
@@ -1,7 +1,10 @@
-{ lib, buildPythonPackage, fetchFromGitHub
-, click
-, pytestCheckHook
-, hypothesis
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  click,
+  pytestCheckHook,
+  hypothesis,
 }:
 
 buildPythonPackage rec {
@@ -18,7 +21,10 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ click ];
 
-  nativeCheckInputs = [ pytestCheckHook hypothesis ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    hypothesis
+  ];
 
   meta = with lib; {
     description = "Spherical mercator tile and coordinate utilities";
diff --git a/pkgs/development/python-modules/merge3/default.nix b/pkgs/development/python-modules/merge3/default.nix
index 838bfc6a32c21..b40b9aca05a36 100644
--- a/pkgs/development/python-modules/merge3/default.nix
+++ b/pkgs/development/python-modules/merge3/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "merge3";
-  version = "0.0.14";
+  version = "0.0.15";
 
   format = "pyproject";
 
@@ -15,22 +16,18 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-MEBumThvSmUoD7nEPmgYkPoqHYOcrCdZ0VbHzBYDAVk=";
+    hash = "sha256-0+rCE9hNVt/J45VSrIJGx4YKlAlk6+7YqL5EIvZJK68=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "merge3"
-  ];
+  pythonImportsCheck = [ "merge3" ];
 
   meta = with lib; {
     description = "Python implementation of 3-way merge";
     mainProgram = "merge3";
     homepage = "https://github.com/breezy-team/merge3";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/mergedb/default.nix b/pkgs/development/python-modules/mergedb/default.nix
index e5973aa280d26..cbf4baafc3551 100644
--- a/pkgs/development/python-modules/mergedb/default.nix
+++ b/pkgs/development/python-modules/mergedb/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, colorama
-, fetchPypi
-, jinja2
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  colorama,
+  fetchPypi,
+  jinja2,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     sha256 = "2034c18dca23456c5b166b63d94300bcd8ec9f386e6cd639c2f66e141c0313f9";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     pyyaml
@@ -33,20 +32,15 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mergedb"
-  ];
+  pythonImportsCheck = [ "mergedb" ];
 
   meta = with lib; {
-    description = "A tool/library for deep merging YAML files";
+    description = "Tool/library for deep merging YAML files";
     mainProgram = "mergedb";
     homepage = "https://github.com/graysonhead/mergedb";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ graysonhead ];
   };
 }
-
diff --git a/pkgs/development/python-modules/mergedeep/default.nix b/pkgs/development/python-modules/mergedeep/default.nix
index 7d812ceb1e4d5..ebb396a990892 100644
--- a/pkgs/development/python-modules/mergedeep/default.nix
+++ b/pkgs/development/python-modules/mergedeep/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, isPy27, fetchFromGitHub, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  isPy27,
+  fetchFromGitHub,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "mergedeep";
@@ -20,7 +26,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/clarketm/mergedeep";
-    description = "A deep merge function for python";
+    description = "Deep merge function for python";
     license = licenses.mit;
     maintainers = with maintainers; [ ris ];
   };
diff --git a/pkgs/development/python-modules/mergedict/default.nix b/pkgs/development/python-modules/mergedict/default.nix
index 3cfb674a9b295..d68c9d9af3618 100644
--- a/pkgs/development/python-modules/mergedict/default.nix
+++ b/pkgs/development/python-modules/mergedict/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pytestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "mergedict" ];
 
   meta = with lib; {
-    description = "A Python dict with a merge() method";
+    description = "Python dict with a merge() method";
     homepage = "https://github.com/schettino72/mergedict";
     license = licenses.mit;
     maintainers = with maintainers; [ onny ];
diff --git a/pkgs/development/python-modules/merkletools/default.nix b/pkgs/development/python-modules/merkletools/default.nix
index b5dc5adf3dccd..4a50b73c5a81d 100644
--- a/pkgs/development/python-modules/merkletools/default.nix
+++ b/pkgs/development/python-modules/merkletools/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,13 +26,9 @@ buildPythonPackage rec {
       --replace "install_requires=install_requires" "install_requires=[],"
   '';
 
-  checkInputs = [
-    pytestCheckHook
-  ];
+  checkInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "merkletools"
-  ];
+  pythonImportsCheck = [ "merkletools" ];
 
   meta = with lib; {
     description = "Python tools for creating Merkle trees, generating Merkle proofs, and verification of Merkle proofs";
diff --git a/pkgs/development/python-modules/meross-iot/default.nix b/pkgs/development/python-modules/meross-iot/default.nix
index 523f034a9a596..2359d5fc340b8 100644
--- a/pkgs/development/python-modules/meross-iot/default.nix
+++ b/pkgs/development/python-modules/meross-iot/default.nix
@@ -4,7 +4,6 @@
   buildPythonPackage,
   fetchFromGitHub,
   paho-mqtt,
-  pytestCheckHook,
   pythonOlder,
   pycryptodomex,
   requests,
@@ -14,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "meross-iot";
-  version = "0.4.7.1";
+  version = "0.4.7.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -23,7 +22,7 @@ buildPythonPackage rec {
     owner = "albertogeniola";
     repo = "MerossIot";
     rev = "refs/tags/${version}";
-    hash = "sha256-BcWluaNyo6G7OuIV6yXzc7xcBgQlRR9HbjbNnLigZcE=";
+    hash = "sha256-Ne9m6umPmX3uXAyY9/Ucvi/rPdHrGJgD5IrZ+BBQweI=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/mesa/default.nix b/pkgs/development/python-modules/mesa/default.nix
index a7664ca70468e..d8a195f5f7243 100644
--- a/pkgs/development/python-modules/mesa/default.nix
+++ b/pkgs/development/python-modules/mesa/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, cookiecutter
-, networkx
-, pandas
-, tornado
-, tqdm
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  cookiecutter,
+  networkx,
+  pandas,
+  tornado,
+  tqdm,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "mesa";
-  version = "2.2.4";
+  version = "2.3.0";
   format = "setuptools";
 
   # According to their docs, this library is for Python 3+.
@@ -21,7 +22,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "mesa";
     inherit version;
-    hash = "sha256-5og3ACS2r36BEGWfqtw6WG6yJwNF5p3M9K25sSmHosM=";
+    hash = "sha256-wXHCyUk05Ez4ye5a1rKXCyKPZMK7bR7xZ5rpD5mEaUw=";
   };
 
   propagatedBuildInputs = [
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     tqdm
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     "test_examples"
@@ -44,7 +43,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/projectmesa/mesa";
-    description = "An agent-based modeling (or ABM) framework in Python";
+    description = "Agent-based modeling (or ABM) framework in Python";
     license = licenses.asl20;
     maintainers = [ maintainers.dpaetzel ];
     broken = true; # missing dependencies
diff --git a/pkgs/development/python-modules/meshcat/default.nix b/pkgs/development/python-modules/meshcat/default.nix
index ff1ef37b22e57..da2329596bd48 100644
--- a/pkgs/development/python-modules/meshcat/default.nix
+++ b/pkgs/development/python-modules/meshcat/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, ipython
-, u-msgpack-python
-, numpy
-, tornado
-, pyzmq
-, pyngrok
-, pillow
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  ipython,
+  u-msgpack-python,
+  numpy,
+  tornado,
+  pyzmq,
+  pyngrok,
+  pillow,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/meshio/default.nix b/pkgs/development/python-modules/meshio/default.nix
index f0c170202683c..6e9904267ece8 100644
--- a/pkgs/development/python-modules/meshio/default.nix
+++ b/pkgs/development/python-modules/meshio/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, netcdf4
-, h5py
-, exdown
-, pytestCheckHook
-, rich
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  netcdf4,
+  h5py,
+  exdown,
+  pytestCheckHook,
+  rich,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-8h8Bq9nym6BuoRkwSz055hBCHP6Tud0jNig0kZ+HWG0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     numpy
@@ -36,11 +35,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = ["meshio"];
+  pythonImportsCheck = [ "meshio" ];
 
   meta = with lib; {
     homepage = "https://github.com/nschloe/meshio";
-    description = "I/O for mesh files.";
+    description = "I/O for mesh files";
     mainProgram = "meshio";
     license = licenses.mit;
     maintainers = with maintainers; [ wd15 ];
diff --git a/pkgs/development/python-modules/meshtastic/default.nix b/pkgs/development/python-modules/meshtastic/default.nix
index 7fab04572aa61..eb83f1c171653 100644
--- a/pkgs/development/python-modules/meshtastic/default.nix
+++ b/pkgs/development/python-modules/meshtastic/default.nix
@@ -2,11 +2,20 @@
   lib,
   bleak,
   buildPythonPackage,
+  dash-bootstrap-components,
   dotmap,
   fetchFromGitHub,
+  hypothesis,
+  packaging,
+  parse,
   pexpect,
+  platformdirs,
+  poetry-core,
+  ppk2-api,
+  print-color,
   protobuf,
-  pygatt,
+  pyarrow,
+  pyparsing,
   pypubsub,
   pyqrcode,
   pyserial,
@@ -15,14 +24,16 @@
   pythonOlder,
   pyyaml,
   requests,
+  riden,
   setuptools,
   tabulate,
   timeago,
+  webencodings,
 }:
 
 buildPythonPackage rec {
   pname = "meshtastic";
-  version = "2.3.4";
+  version = "2.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -31,17 +42,28 @@ buildPythonPackage rec {
     owner = "meshtastic";
     repo = "Meshtastic-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-WxiddF1n9lyxKkZk1MU40NzLh6goLVs81mbJZ3F33R8=";
+    hash = "sha256-f2nMbX2qCOwI5N6VunVSFncrEVpYMpc5o7hEZ0sg7rU=";
   };
 
-  build-system = [ setuptools ];
+  pythonRelaxDeps = [
+    "bleak"
+    "protobuf"
+  ];
+
+  build-system = [ poetry-core ];
 
   dependencies = [
     bleak
     dotmap
+    packaging
+    parse
     pexpect
+    platformdirs
+    ppk2-api
+    print-color
     protobuf
-    pygatt
+    pyarrow
+    pyparsing
     pypubsub
     pyqrcode
     pyserial
@@ -50,6 +72,7 @@ buildPythonPackage rec {
     setuptools
     tabulate
     timeago
+    webencodings
   ];
 
   passthru.optional-dependencies = {
@@ -57,9 +80,11 @@ buildPythonPackage rec {
   };
 
   nativeCheckInputs = [
-    pytap2
+    dash-bootstrap-components
+    hypothesis
     pytestCheckHook
-  ];
+    riden
+  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
   preCheck = ''
     export PATH="$PATH:$out/bin";
@@ -67,6 +92,11 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "meshtastic" ];
 
+  disabledTestPaths = [
+    # Circular import with dash-bootstrap-components
+    "meshtastic/tests/test_analysis.py"
+  ];
+
   disabledTests = [
     # TypeError
     "test_main_info_with_seriallog_output_txt"
@@ -77,6 +107,7 @@ buildPythonPackage rec {
     "test_main_support"
     "test_MeshInterface"
     "test_message_to_json_shows_all"
+    "test_node"
     "test_SerialInterface_single_port"
     "test_support_info"
     "test_TCPInterface"
diff --git a/pkgs/development/python-modules/meson-python/default.nix b/pkgs/development/python-modules/meson-python/default.nix
index 01912c9060945..33cc35411bc09 100644
--- a/pkgs/development/python-modules/meson-python/default.nix
+++ b/pkgs/development/python-modules/meson-python/default.nix
@@ -1,25 +1,24 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, colorama
-, meson
-, ninja
-, pyproject-metadata
-, tomli
-, typing-extensions
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  meson,
+  ninja,
+  pyproject-metadata,
+  tomli,
+  typing-extensions,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "meson-python";
-  version = "0.15.0";
+  version = "0.16.0";
   format = "pyproject";
 
   src = fetchPypi {
     inherit version;
     pname = "meson_python";
-    hash = "sha256-/dtz7s1J6JwcQch5N82JwtC2WhxjuigjhoHUvZSE0m8=";
+    hash = "sha256-kGjBfjbInWx/9wn/+yqKmSXozQsCYpco5c6vLsUFy18=";
   };
 
   nativeBuildInputs = [
@@ -27,21 +26,15 @@ buildPythonPackage rec {
     ninja
     pyproject-metadata
     tomli
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.10") [ typing-extensions ];
 
   propagatedBuildInputs = [
     meson
     ninja
     pyproject-metadata
     tomli
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    typing-extensions
-  ];
-  setupHooks = [
-    ./add-build-flags.sh
-  ];
+  ] ++ lib.optionals (pythonOlder "3.10") [ typing-extensions ];
+  setupHooks = [ ./add-build-flags.sh ];
 
   meta = {
     changelog = "https://github.com/mesonbuild/meson-python/blob/${version}/CHANGELOG.rst";
diff --git a/pkgs/development/python-modules/mesonpep517/default.nix b/pkgs/development/python-modules/mesonpep517/default.nix
index 237f7f4876ec4..4256dbe6ece47 100644
--- a/pkgs/development/python-modules/mesonpep517/default.nix
+++ b/pkgs/development/python-modules/mesonpep517/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, meson
-, ninja
-, setuptools
-, toml
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  meson,
+  ninja,
+  setuptools,
+  toml,
+  wheel,
 }:
 
 # TODO: offer meson as a Python package so we have dist-info folder.
@@ -13,7 +14,7 @@
 buildPythonPackage rec {
   pname = "mesonpep517";
   version = "0.2";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
@@ -25,17 +26,20 @@ buildPythonPackage rec {
   #
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace 'backend-path = "."' 'backend-path = ["."]'
+      --replace-fail 'backend-path = "."' 'backend-path = ["."]'
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     wheel
   ];
 
-  propagatedBuildInputs = [ toml ];
+  dependencies = [ toml ];
 
-  propagatedNativeBuildInputs = [ meson ninja ];
+  propagatedNativeBuildInputs = [
+    meson
+    ninja
+  ];
 
   meta = {
     description = "Create pep517 compliant packages from the meson build system";
diff --git a/pkgs/development/python-modules/messagebird/default.nix b/pkgs/development/python-modules/messagebird/default.nix
index 4365e44623741..302ce5087bc60 100644
--- a/pkgs/development/python-modules/messagebird/default.nix
+++ b/pkgs/development/python-modules/messagebird/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, pyjwt
-, mock
-, python-dateutil
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  pyjwt,
+  mock,
+  python-dateutil,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "messagebird";
-  version = "2.1.0";
+  version = "2.2.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -20,7 +21,7 @@ buildPythonPackage rec {
     owner = "messagebird";
     repo = "python-rest-api";
     rev = version;
-    hash = "sha256-2KVAxdHT5+Ie3ZRxXZhU0hLOtHWjIiJi+ferkYTlSn0=";
+    hash = "sha256-OiLhnmZ725VbyoOHvSf4nKQRA7JsxqcOv0VKBL6rUtU=";
   };
 
   propagatedBuildInputs = [
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "messagebird"
-  ];
+  pythonImportsCheck = [ "messagebird" ];
 
   disabledTestPaths = [
     # ValueError: not enough values to unpack (expected 6, got 0)
diff --git a/pkgs/development/python-modules/metakernel/default.nix b/pkgs/development/python-modules/metakernel/default.nix
index e888ccfe98f8f..81d8e852dd52f 100644
--- a/pkgs/development/python-modules/metakernel/default.nix
+++ b/pkgs/development/python-modules/metakernel/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatchling
-, ipykernel
-, jedi
-, jupyter-core
-, pexpect
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  ipykernel,
+  jedi,
+  jupyter-core,
+  pexpect,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-Siff2FO4SfASgkLFUgTuWXpajYZClPJghLry+8gU1aQ=";
   };
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   dependencies = [
     ipykernel
@@ -35,9 +34,7 @@ buildPythonPackage rec {
   # Tests hang, so disable
   doCheck = false;
 
-  pythonImportsCheck = [
-    "metakernel"
-  ];
+  pythonImportsCheck = [ "metakernel" ];
 
   meta = with lib; {
     description = "Jupyter/IPython Kernel Tools";
diff --git a/pkgs/development/python-modules/metar/default.nix b/pkgs/development/python-modules/metar/default.nix
index b130672810ec8..6adcc91bda99f 100644
--- a/pkgs/development/python-modules/metar/default.nix
+++ b/pkgs/development/python-modules/metar/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-ZDjlXcSTUcSP7oRdhzLpXf/fLUA7Nkc6nj2I6vovbHg=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "metar"
-  ];
+  pythonImportsCheck = [ "metar" ];
 
   meta = with lib; {
     description = "Python parser for coded METAR weather reports";
diff --git a/pkgs/development/python-modules/metawear/default.nix b/pkgs/development/python-modules/metawear/default.nix
index 96f8c9434500a..526e216a23091 100644
--- a/pkgs/development/python-modules/metawear/default.nix
+++ b/pkgs/development/python-modules/metawear/default.nix
@@ -1,15 +1,14 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, gcc
-, cython
-, boost
-, bluez
-, nlohmann_json
-, pyserial
-, requests
-, warble
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cython,
+  boost,
+  bluez,
+  nlohmann_json,
+  pyserial,
+  requests,
+  warble,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-gNEI6P6GslNd1DzFwCFndVIfUvSTPYollGdqkZhQ4Y8=";
   };
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
   buildInputs = [
     boost
@@ -47,7 +44,10 @@ buildPythonPackage rec {
 
   enableParallelBuilding = true;
 
-  pythonImportsCheck = [ "mbientlab" "mbientlab.metawear" ];
+  pythonImportsCheck = [
+    "mbientlab"
+    "mbientlab.metawear"
+  ];
 
   meta = with lib; {
     description = "Python bindings for the MetaWear C++ SDK by MbientLab";
@@ -57,4 +57,3 @@ buildPythonPackage rec {
     platforms = platforms.linux;
   };
 }
-
diff --git a/pkgs/development/python-modules/meteoalertapi/default.nix b/pkgs/development/python-modules/meteoalertapi/default.nix
index 9510ae01ffa57..7f453255f46ca 100644
--- a/pkgs/development/python-modules/meteoalertapi/default.nix
+++ b/pkgs/development/python-modules/meteoalertapi/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, requests
-, xmltodict
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/meteocalc/default.nix b/pkgs/development/python-modules/meteocalc/default.nix
index 886b77de08806..38c39d7d42caf 100644
--- a/pkgs/development/python-modules/meteocalc/default.nix
+++ b/pkgs/development/python-modules/meteocalc/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-WuIW6hROQkjMfbCLUouECIrp4s6oCd2/N79hsrTbVTk=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "meteocalc"
-  ];
+  pythonImportsCheck = [ "meteocalc" ];
 
   meta = with lib; {
     description = "Module for calculation of meteorological variables";
diff --git a/pkgs/development/python-modules/meteofrance-api/default.nix b/pkgs/development/python-modules/meteofrance-api/default.nix
index ce3dbe1b44f77..89cdc0735ea5c 100644
--- a/pkgs/development/python-modules/meteofrance-api/default.nix
+++ b/pkgs/development/python-modules/meteofrance-api/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, pytz
-, requests
-, requests-mock
-, typing-extensions
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  requests,
+  requests-mock,
+  typing-extensions,
+  urllib3,
 }:
 
 buildPythonPackage rec {
@@ -28,12 +28,9 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "urllib3"
-  ];
+  pythonRelaxDeps = [ "urllib3" ];
 
   propagatedBuildInputs = [
     pytz
@@ -47,9 +44,7 @@ buildPythonPackage rec {
     requests-mock
   ];
 
-  pythonImportsCheck = [
-    "meteofrance_api"
-  ];
+  pythonImportsCheck = [ "meteofrance_api" ];
 
   disabledTests = [
     # Tests require network access
diff --git a/pkgs/development/python-modules/meteoswiss-async/default.nix b/pkgs/development/python-modules/meteoswiss-async/default.nix
new file mode 100644
index 0000000000000..b837f49c08c65
--- /dev/null
+++ b/pkgs/development/python-modules/meteoswiss-async/default.nix
@@ -0,0 +1,52 @@
+{
+  lib,
+  aiohttp,
+  asyncstdlib,
+  buildPythonPackage,
+  dataclasses-json,
+  fetchFromGitHub,
+  pytest-cov-stub,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "meteoswiss-async";
+  version = "0.1.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.11";
+
+  src = fetchFromGitHub {
+    owner = "albertomontesg";
+    repo = "meteoswiss-async";
+    rev = "refs/tags/${version}";
+    hash = "sha256-xFvfyLZvBfnbzShKN+94piNUVjV1cfi4jWpc/Xw6XG4=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    aiohttp
+    asyncstdlib
+    dataclasses-json
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-mock
+    pytest-cov-stub
+  ];
+
+  pythonImportsCheck = [ "meteoswiss_async" ];
+
+  meta = {
+    description = "Asynchronous client library for MeteoSwiss API";
+    homepage = "https://github.com/albertomontesg/meteoswiss-async";
+    changelog = "https://github.com/albertomontesg/meteoswiss-async/releases/tag/${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/methodtools/default.nix b/pkgs/development/python-modules/methodtools/default.nix
new file mode 100644
index 0000000000000..88898db177eef
--- /dev/null
+++ b/pkgs/development/python-modules/methodtools/default.nix
@@ -0,0 +1,41 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wirerope,
+  pytestCheckHook,
+  pytest-cov-stub,
+}:
+
+buildPythonPackage rec {
+  pname = "methodtools";
+  version = "0.4.7";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "youknowone";
+    repo = "methodtools";
+    rev = version;
+    hash = "sha256-Y5VdYVSb3A+32waUUoIDDGW+AhRapN71pebTTlJC0es=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ wirerope ];
+
+  pythonImportsCheck = [ "methodtools" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-cov-stub
+  ];
+
+  meta = with lib; {
+    description = "Expands the functools lru_cache to classes";
+    homepage = "https://github.com/youknowone/methodtools";
+    changelog = "https://github.com/youknowone/methodtools/releases/tag/${version}";
+    license = licenses.bsd2WithViews;
+    maintainers = with maintainers; [ pbsds ];
+  };
+}
diff --git a/pkgs/development/python-modules/mezzanine/default.nix b/pkgs/development/python-modules/mezzanine/default.nix
index 18d06579a8a87..9dbbfe4c6d7d9 100644
--- a/pkgs/development/python-modules/mezzanine/default.nix
+++ b/pkgs/development/python-modules/mezzanine/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, beautifulsoup4
-, bleach
-, buildPythonPackage
-, chardet
-, django
-, django-contrib-comments
-, fetchPypi
-, filebrowser-safe
-, future
-, grappelli-safe
-, isPyPy
-, pep8
-, pillow
-, pyflakes
-, pythonOlder
-, pytz
-, requests
-, requests-oauthlib
-, tzlocal
+{
+  lib,
+  beautifulsoup4,
+  bleach,
+  buildPythonPackage,
+  chardet,
+  django,
+  django-contrib-comments,
+  fetchPypi,
+  filebrowser-safe,
+  future,
+  grappelli-safe,
+  isPyPy,
+  pep8,
+  pillow,
+  pyflakes,
+  pythonOlder,
+  pytz,
+  requests,
+  requests-oauthlib,
+  tzlocal,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/mf2py/default.nix b/pkgs/development/python-modules/mf2py/default.nix
index ce50d3662f466..8d0ecc7d9937e 100644
--- a/pkgs/development/python-modules/mf2py/default.nix
+++ b/pkgs/development/python-modules/mf2py/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchFromGitHub
-, html5lib
-, lxml
-, mock
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitHub,
+  html5lib,
+  lxml,
+  mock,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-mhJ+s1rtXEJ6DqVmiyWNEK+3cdDLpR63Q4QGmD9wVio=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     beautifulsoup4
@@ -41,9 +40,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "mf2py"
-  ];
+  pythonImportsCheck = [ "mf2py" ];
 
   meta = with lib; {
     description = "Microformats2 parser written in Python";
diff --git a/pkgs/development/python-modules/mhcflurry/default.nix b/pkgs/development/python-modules/mhcflurry/default.nix
index 2b2a7c9fcabb2..29c00af47c230 100644
--- a/pkgs/development/python-modules/mhcflurry/default.nix
+++ b/pkgs/development/python-modules/mhcflurry/default.nix
@@ -1,32 +1,38 @@
-{ appdirs
-, buildPythonPackage
-, fetchFromGitHub
-, keras
-, lib
-, mhcgnomes
-, nose
-, pandas
-, pytestCheckHook
-, pyyaml
-, scikit-learn
-, tensorflow
-, tqdm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # dependencies
+  appdirs,
+  keras,
+  mhcgnomes,
+  pandas,
+  pyyaml,
+  scikit-learn,
+  tensorflow,
+  tf-keras,
+  tqdm,
+
+  # tests
+  nose,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "mhcflurry";
-  version = "2.1.0";
-  format = "setuptools";
+  version = "2.1.3";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "openvax";
-    repo = pname;
+    repo = "mhcflurry";
     rev = "refs/tags/v${version}";
-    hash = "sha256-VyPHcNlZYgNJZb2UBFX55x+nE0GnHixkcsiTNjDCju0=";
+    hash = "sha256-Xz3Myd+pifNQMTH1BC2qsQEy7UorYNQNj+7ysMVmCOs=";
   };
 
   # keras and tensorflow are not in the official setup.py requirements but are required for the CLI utilities to run.
-  propagatedBuildInputs = [
+  dependencies = [
     appdirs
     keras
     mhcgnomes
@@ -34,10 +40,14 @@ buildPythonPackage rec {
     pyyaml
     scikit-learn
     tensorflow
+    tf-keras
     tqdm
   ];
 
-  nativeCheckInputs = [ nose pytestCheckHook ];
+  nativeCheckInputs = [
+    nose
+    pytestCheckHook
+  ];
 
   disabledTests = [
     # RuntimeError: Missing MHCflurry downloadable file: /homeless-shelter/.local...
@@ -78,10 +88,13 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "mhcflurry" ];
 
-  meta = with lib; {
+  meta = {
     description = "Peptide-MHC I binding affinity prediction";
     homepage = "https://github.com/openvax/mhcflurry";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ samuela ];
+    changelog = "https://github.com/openvax/mhcflurry/releases/tag/v${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ samuela ];
+    # Requires a recent version of tensorflow
+    broken = lib.versionOlder tensorflow.version "2.15.0";
   };
 }
diff --git a/pkgs/development/python-modules/mhcgnomes/default.nix b/pkgs/development/python-modules/mhcgnomes/default.nix
index 4c5d1f6faac9e..9a1a470d7a72e 100644
--- a/pkgs/development/python-modules/mhcgnomes/default.nix
+++ b/pkgs/development/python-modules/mhcgnomes/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, pandas
-, pyyaml
-, serializable
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pandas,
+  pyyaml,
+  serializable,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-KKiBlnFlavRnaQnOpAzG0dyxmFB+zF9L6t/H05LkFZE=";
   };
 
-  propagatedBuildInputs = [ pandas pyyaml serializable ];
+  propagatedBuildInputs = [
+    pandas
+    pyyaml
+    serializable
+  ];
 
   pythonImportsCheck = [ "mhcgnomes" ];
 
diff --git a/pkgs/development/python-modules/miasm/0001-setup.py-use-valid-semver.patch b/pkgs/development/python-modules/miasm/0001-setup.py-use-valid-semver.patch
new file mode 100644
index 0000000000000..ac98a5fc4d309
--- /dev/null
+++ b/pkgs/development/python-modules/miasm/0001-setup.py-use-valid-semver.patch
@@ -0,0 +1,26 @@
+From c85780ce97798f332d627bd44cbbfa19c9ea565e Mon Sep 17 00:00:00 2001
+From: Moritz Sanft <58110325+msanft@users.noreply.github.com>
+Date: Sat, 11 May 2024 11:03:34 +0200
+Subject: [PATCH] setup.py: use valid semver
+
+Signed-off-by: Moritz Sanft <58110325+msanft@users.noreply.github.com>
+---
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index e1e54434..98e29fee 100644
+--- a/setup.py
++++ b/setup.py
+@@ -314,7 +314,7 @@ def build_all():
+         try:
+             s = setup(
+                 name = "miasm",
+-                version = __import__("miasm").VERSION,
++                version = "v0.0.0",
+                 packages = packages,
+                 data_files=[("", ["README.md"])],
+                 package_data = {
+-- 
+2.44.0
+
diff --git a/pkgs/development/python-modules/miasm/0002-core-remove-IDAPython-dependency.patch b/pkgs/development/python-modules/miasm/0002-core-remove-IDAPython-dependency.patch
new file mode 100644
index 0000000000000..20262d8102b10
--- /dev/null
+++ b/pkgs/development/python-modules/miasm/0002-core-remove-IDAPython-dependency.patch
@@ -0,0 +1,65 @@
+From fd2a6b2899c8b836a086b43ec9ebccf726f71ec4 Mon Sep 17 00:00:00 2001
+From: Moritz Sanft <58110325+msanft@users.noreply.github.com>
+Date: Sat, 11 May 2024 11:04:19 +0200
+Subject: [PATCH] core: remove IDAPython dependency
+
+Signed-off-by: Moritz Sanft <58110325+msanft@users.noreply.github.com>
+---
+ miasm/core/bin_stream_ida.py | 45 ------------------------------------
+ 1 file changed, 45 deletions(-)
+ delete mode 100644 miasm/core/bin_stream_ida.py
+
+diff --git a/miasm/core/bin_stream_ida.py b/miasm/core/bin_stream_ida.py
+deleted file mode 100644
+index 15bd9d8b..00000000
+--- a/miasm/core/bin_stream_ida.py
++++ /dev/null
+@@ -1,45 +0,0 @@
+-from builtins import range
+-from idc import get_wide_byte, get_segm_end
+-from idautils import Segments
+-from idaapi import is_mapped
+-
+-from miasm.core.utils import int_to_byte
+-from miasm.core.bin_stream import bin_stream_str
+-
+-
+-class bin_stream_ida(bin_stream_str):
+-    """
+-    bin_stream implementation for IDA
+-
+-    Don't generate xrange using address computation:
+-    It can raise error on overflow 7FFFFFFF with 32 bit python
+-    """
+-    def _getbytes(self, start, l=1):
+-        out = []
+-        for ad in range(l):
+-            offset = ad + start + self.base_address
+-            if not is_mapped(offset):
+-                raise IOError(f"not enough bytes @ offset {offset:x}")
+-            out.append(int_to_byte(get_wide_byte(offset)))
+-        return b''.join(out)
+-
+-    def readbs(self, l=1):
+-        if self.offset + l > self.l:
+-            raise IOError("not enough bytes")
+-        content = self.getbytes(self.offset)
+-        self.offset += l
+-        return content
+-
+-    def __str__(self):
+-        raise NotImplementedError('Not fully functional')
+-
+-    def setoffset(self, val):
+-        self.offset = val
+-
+-    def getlen(self):
+-        # Lazy version
+-        if hasattr(self, "_getlen"):
+-            return self._getlen
+-        max_addr = get_segm_end(list(Segments())[-1]  - (self.offset - self.base_address))
+-        self._getlen = max_addr
+-        return max_addr
+-- 
+2.44.0
+
diff --git a/pkgs/development/python-modules/miasm/default.nix b/pkgs/development/python-modules/miasm/default.nix
new file mode 100644
index 0000000000000..ddbbd1262c536
--- /dev/null
+++ b/pkgs/development/python-modules/miasm/default.nix
@@ -0,0 +1,59 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  future,
+  gcc,
+  llvmlite,
+  parameterized,
+  pycparser,
+  pyparsing,
+  z3-solver,
+  setuptools,
+}:
+let
+  commit = "90dc1671b59077ee27c3d44d9d536d6659eb3bbe";
+in
+buildPythonPackage rec {
+  pname = "miasm";
+  version = "0.1.5-unstable-2024-04-28";
+
+  pyproject = true;
+  build-system = [ setuptools ];
+
+  src = fetchFromGitHub {
+    owner = "cea-sec";
+    repo = "miasm";
+    rev = commit;
+    hash = "sha256-nkRcirJLmTwSL7lwd+Yk6mteU3YPnm5ekJ4eFF5FmYo=";
+  };
+
+  patches = [
+    #  Use a valid semver as now required by setuptools
+    ./0001-setup.py-use-valid-semver.patch
+
+    # Removes the (unfree) IDAPython dependency
+    ./0002-core-remove-IDAPython-dependency.patch
+  ];
+
+  dependencies = [
+    future
+    llvmlite
+    parameterized
+    pycparser
+    pyparsing
+    z3-solver
+  ];
+
+  buildInputs = [ gcc ];
+
+  pythonImportsCheck = [ "miasm" ];
+
+  meta = {
+    description = "Reverse engineering framework in Python";
+    homepage = "https://github.com/cea-sec/miasm";
+    changelog = "https://github.com/cea-sec/miasm/blob/${commit}/CHANGELOG.md";
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ msanft ];
+  };
+}
diff --git a/pkgs/development/python-modules/miauth/default.nix b/pkgs/development/python-modules/miauth/default.nix
index c28c5ed96a77a..aec9084ed7731 100644
--- a/pkgs/development/python-modules/miauth/default.nix
+++ b/pkgs/development/python-modules/miauth/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, bluepy
-, cryptography
+  # dependencies
+  bluepy,
+  cryptography,
 
-# tests
-, pytestCheckHook
+  # checks
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -27,33 +27,24 @@ buildPythonPackage rec {
     hash = "sha256-2/4nFInpdY8fb/b+sXhgT6ZPtEgBV+KHMyLnxIp6y/U=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    pythonRelaxDepsHook
-  ];
+  build-system = [ setuptools ];
 
-  pythonRelaxDeps = [
-    "cryptography"
-  ];
+  pythonRelaxDeps = [ "cryptography" ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     bluepy
     cryptography
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "miauth"
-  ];
+  pythonImportsCheck = [ "miauth" ];
 
   meta = with lib; {
     description = "Authenticate and interact with Xiaomi devices over BLE";
-    mainProgram = "miauth";
     homepage = "https://github.com/dnandha/miauth";
     license = licenses.agpl3Only;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "miauth";
   };
 }
diff --git a/pkgs/development/python-modules/micawber/default.nix b/pkgs/development/python-modules/micawber/default.nix
index 0a4decb49e4dd..6593253d647b3 100644
--- a/pkgs/development/python-modules/micawber/default.nix
+++ b/pkgs/development/python-modules/micawber/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, beautifulsoup4
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  beautifulsoup4,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -14,12 +15,10 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-CsWBS2X/KngfsTlLkaI6ipX3NJK2u49wW67q2C6t1UM=";
+    hash = "sha256-CsWBS2X/KngfsTlLkaI6ipX3NJK2u49wW67q2C6t1UM=";
   };
 
-  propagatedBuildInputs = [
-    beautifulsoup4
-  ];
+  propagatedBuildInputs = [ beautifulsoup4 ];
 
   meta = with lib; {
     homepage = "https://micawber.readthedocs.io/en/latest/";
diff --git a/pkgs/development/python-modules/micloud/default.nix b/pkgs/development/python-modules/micloud/default.nix
index ab934962e216b..b6d325395c8fb 100644
--- a/pkgs/development/python-modules/micloud/default.nix
+++ b/pkgs/development/python-modules/micloud/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, click
-, pycryptodome
-, requests
-, tzlocal
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  click,
+  pycryptodome,
+  requests,
+  tzlocal,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/microdata/default.nix b/pkgs/development/python-modules/microdata/default.nix
index f7dcfc92f8b96..d53ecea8defc9 100644
--- a/pkgs/development/python-modules/microdata/default.nix
+++ b/pkgs/development/python-modules/microdata/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, html5lib
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  html5lib,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-BAygCLBLxZ033ZWRFSR52dSM2nPY8jXplDXQ8WW3KPo=";
   };
 
-  propagatedBuildInputs = [
-    html5lib
-  ];
+  propagatedBuildInputs = [ html5lib ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   pythonImportsCheck = [ "microdata" ];
 
diff --git a/pkgs/development/python-modules/microsoft-kiota-abstractions/default.nix b/pkgs/development/python-modules/microsoft-kiota-abstractions/default.nix
index a92965db33987..dfe65b63c4549 100644
--- a/pkgs/development/python-modules/microsoft-kiota-abstractions/default.nix
+++ b/pkgs/development/python-modules/microsoft-kiota-abstractions/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "microsoft-kiota-abstractions";
-  version = "1.3.2";
+  version = "1.3.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "microsoft";
     repo = "kiota-abstractions-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-n9Erm21slKm+zDblhSHA5Cwxkyrcyx0w09ua3bUc5XI=";
+    hash = "sha256-TgHj5Ga6Aw/sN2Hobn0OocFB/iGRHTKEeOa2j2aqnRY=";
   };
 
   build-system = [ flit-core ];
diff --git a/pkgs/development/python-modules/microsoft-kiota-authentication-azure/default.nix b/pkgs/development/python-modules/microsoft-kiota-authentication-azure/default.nix
index ca0670bc5fa7f..766a036ed76c4 100644
--- a/pkgs/development/python-modules/microsoft-kiota-authentication-azure/default.nix
+++ b/pkgs/development/python-modules/microsoft-kiota-authentication-azure/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "microsoft-kiota-authentication-azure";
-  version = "1.0.0";
+  version = "1.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "microsoft";
     repo = "kiota-authentication-azure-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-RA0BbIwDs3cXiH4tQsvCGUO1OAg+DWjEeWd7MEVIC8E=";
+    hash = "sha256-JoR7qjAPNqtcV35AGwbyjhIro6AnFUZXXLHLOj7InY8=";
   };
 
   build-system = [ flit-core ];
@@ -49,7 +49,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Kiota Azure authentication provider";
     homepage = "https://github.com/microsoft/kiota-authentication-azure-python";
-    changelog = "https://github.com/microsoft/kiota-authentication-azure-python/blob/${version}/CHANGELOG.md";
+    changelog = "https://github.com/microsoft/kiota-authentication-azure-python/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/microsoft-kiota-http/default.nix b/pkgs/development/python-modules/microsoft-kiota-http/default.nix
index 259893de05044..09261b23023a3 100644
--- a/pkgs/development/python-modules/microsoft-kiota-http/default.nix
+++ b/pkgs/development/python-modules/microsoft-kiota-http/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "microsoft-kiota-http";
-  version = "1.3.1";
+  version = "1.3.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "microsoft";
     repo = "kiota-http-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-I16WARk6YBr8KgE9MtHcA5VdsnLXBKcZOaqRL/eqwKE=";
+    hash = "sha256-dtSTrsLVDNJ+s5B3wLvZ9qGerZ8fdYpEsqrBoPf7Lrk=";
   };
 
   build-system = [ flit-core ];
diff --git a/pkgs/development/python-modules/microsoft-kiota-serialization-form/default.nix b/pkgs/development/python-modules/microsoft-kiota-serialization-form/default.nix
index 652e22d767e82..7f1a24b29e416 100644
--- a/pkgs/development/python-modules/microsoft-kiota-serialization-form/default.nix
+++ b/pkgs/development/python-modules/microsoft-kiota-serialization-form/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "microsoft-kiota-serialization-form";
-  version = "0.1.0";
+  version = "0.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "microsoft";
     repo = "kiota-serialization-form-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ecFspbCaSkRoQTTeyZdqGpWSKiQJS6viDgBVNDHPo4g=";
+    hash = "sha256-yOdrqj8QPz497VWS4427zDRRFc/S5654JeYkO1ZcUcQ=";
   };
 
   build-system = [ flit-core ];
@@ -43,7 +43,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Form serialization implementation for Kiota clients in Python";
     homepage = "https://github.com/microsoft/kiota-serialization-form-python";
-    changelog = "https://github.com/microsoft/kiota-serialization-form-python/blob/${version}/CHANGELOG.md";
+    changelog = "https://github.com/microsoft/kiota-serialization-form-python/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/microsoft-kiota-serialization-json/default.nix b/pkgs/development/python-modules/microsoft-kiota-serialization-json/default.nix
index 56bb4f5f8670e..9f4fb1e4b8f7f 100644
--- a/pkgs/development/python-modules/microsoft-kiota-serialization-json/default.nix
+++ b/pkgs/development/python-modules/microsoft-kiota-serialization-json/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "microsoft-kiota-serialization-json";
-  version = "1.2.0";
+  version = "1.3.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "microsoft";
     repo = "kiota-serialization-json-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-/Bar1tQ3w8kfC53OuKxTlS+Dq4sX47lev7fjJeo6JJ0=";
+    hash = "sha256-Unscul4mznB3yJmn8Y/Zcvbk59V1WLqdSgmEhCUgkeA=";
   };
 
   build-system = [ flit-core ];
diff --git a/pkgs/development/python-modules/midea-beautiful-air/default.nix b/pkgs/development/python-modules/midea-beautiful-air/default.nix
index 1fde2c7a34f48..6b589b3343693 100644
--- a/pkgs/development/python-modules/midea-beautiful-air/default.nix
+++ b/pkgs/development/python-modules/midea-beautiful-air/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, cryptography
-, requests
-, pytestCheckHook
-, pytest-socket
-, requests-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  cryptography,
+  requests,
+  pytestCheckHook,
+  pytest-socket,
+  requests-mock,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-786Q085bv8Zsm0c55I4XalRhEfwElRTJds5qnb0cWhk=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     cryptography
diff --git a/pkgs/development/python-modules/midiutil/default.nix b/pkgs/development/python-modules/midiutil/default.nix
index 6f1e51ae93391..17e99c731a8f2 100644
--- a/pkgs/development/python-modules/midiutil/default.nix
+++ b/pkgs/development/python-modules/midiutil/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "midiutil";
@@ -12,7 +16,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/MarkCWirt/MIDIUtil";
-    description = "A pure python library for creating multi-track MIDI files";
+    description = "Pure python library for creating multi-track MIDI files";
     license = licenses.mit;
     maintainers = [ ];
   };
diff --git a/pkgs/development/python-modules/mido/default.nix b/pkgs/development/python-modules/mido/default.nix
index b5375b4f1dffc..33b06eadfbd3c 100644
--- a/pkgs/development/python-modules/mido/default.nix
+++ b/pkgs/development/python-modules/mido/default.nix
@@ -1,28 +1,28 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, substituteAll
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  substituteAll,
 
-# build-system
-, setuptools
-, setuptools-scm
-, pythonRelaxDepsHook
+  # build-system
+  setuptools,
+  setuptools-scm,
 
-# dependencies
-, packaging
+  # dependencies
+  packaging,
 
-# native dependencies
-, portmidi
+  # native dependencies
+  portmidi,
 
-# optional-dependencies
-, pygame
-, python-rtmidi
-, rtmidi-python
+  # optional-dependencies
+  pygame,
+  python-rtmidi,
+  rtmidi-python,
 
-# tests
-, pytestCheckHook
-, pythonOlder
+  # tests
+  pytestCheckHook,
+  pythonOlder,
 
 }:
 
@@ -48,16 +48,11 @@ buildPythonPackage rec {
   build-system = [
     setuptools
     setuptools-scm
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "packaging"
-  ];
+  pythonRelaxDeps = [ "packaging" ];
 
-  dependencies = [
-    packaging
-  ];
+  dependencies = [ packaging ];
 
   optional-dependencies = {
     ports-pygame = [ pygame ];
@@ -65,19 +60,15 @@ buildPythonPackage rec {
     ports-rtmidi-python = [ rtmidi-python ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mido"
-  ];
+  pythonImportsCheck = [ "mido" ];
 
   meta = with lib; {
     description = "MIDI Objects for Python";
     homepage = "https://mido.readthedocs.io";
     changelog = "https://github.com/mido/mido/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/migen/default.nix b/pkgs/development/python-modules/migen/default.nix
index d1633cbd8cfa9..910b46a512127 100644
--- a/pkgs/development/python-modules/migen/default.nix
+++ b/pkgs/development/python-modules/migen/default.nix
@@ -1,32 +1,36 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, colorama
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  colorama,
+  pytestCheckHook,
 }:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "migen";
-  version = "unstable-2022-09-02";
-  format = "setuptools";
+  version = "unstable-2024-07-21";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "m-labs";
     repo = "migen";
-    rev = "639e66f4f453438e83d86dc13491b9403bbd8ec6";
-    hash = "sha256-IPyhoFZLhY8d3jHB8jyvGdbey7V+X5eCzBZYSrJ18ec=";
+    rev = "9279e8623f8433bc4f23ac51e5e2331bfe544417";
+    hash = "sha256-z3LRhNmKZrjr6rFD0yxtccSa/SWvFIYmb+G/D5d2Jd8=";
   };
 
-  propagatedBuildInputs = [
-    colorama
-  ];
+  nativeBuildInputs = [ setuptools ];
+
+  propagatedBuildInputs = [ colorama ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "migen" ];
 
-  meta = with lib; {
+  meta = {
     description = " A Python toolbox for building complex digital hardware";
     homepage = "https://m-labs.hk/migen";
-    license = licenses.bsd2;
-    maintainers = with maintainers; [ l-as ];
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ l-as ];
   };
 }
diff --git a/pkgs/development/python-modules/mike/default.nix b/pkgs/development/python-modules/mike/default.nix
index da31390805968..934c77440529d 100644
--- a/pkgs/development/python-modules/mike/default.nix
+++ b/pkgs/development/python-modules/mike/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, git
-, importlib-metadata
-, importlib-resources
-, jinja2
-, mkdocs
-, pythonOlder
-, pyyaml
-, unittestCheckHook
-, verspec
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  git,
+  importlib-metadata,
+  importlib-resources,
+  jinja2,
+  mkdocs,
+  pythonOlder,
+  pyyaml,
+  unittestCheckHook,
+  verspec,
 }:
 
 buildPythonPackage rec {
@@ -47,15 +48,13 @@ buildPythonPackage rec {
   # Difficult to setup
   doCheck = false;
 
-  pythonImportsCheck = [
-    "mike"
-  ];
+  pythonImportsCheck = [ "mike" ];
 
   meta = with lib; {
     description = "Manage multiple versions of your MkDocs-powered documentation";
     mainProgram = "mike";
     homepage = "https://github.com/jimporter/mike";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/milc/default.nix b/pkgs/development/python-modules/milc/default.nix
index 2cb630afbe48c..4aaba74782ea7 100644
--- a/pkgs/development/python-modules/milc/default.nix
+++ b/pkgs/development/python-modules/milc/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, appdirs
-, argcomplete
-, colorama
-, halo
-, spinners
-, types-colorama
-, nose2
-, semver
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  appdirs,
+  argcomplete,
+  colorama,
+  halo,
+  spinners,
+  types-colorama,
+  nose2,
+  semver,
 }:
 
 buildPythonPackage rec {
@@ -40,7 +41,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "milc" ];
 
   meta = with lib; {
-    description = "An Opinionated Batteries-Included Python 3 CLI Framework";
+    description = "Opinionated Batteries-Included Python 3 CLI Framework";
     mainProgram = "milc-color";
     homepage = "https://milc.clueboard.co";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/milksnake/default.nix b/pkgs/development/python-modules/milksnake/default.nix
index 567305b194e81..16b0bf2a95770 100644
--- a/pkgs/development/python-modules/milksnake/default.nix
+++ b/pkgs/development/python-modules/milksnake/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, fetchpatch, cffi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  cffi,
+}:
 
 buildPythonPackage rec {
   pname = "milksnake";
@@ -19,15 +25,13 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [
-   cffi
-  ];
+  propagatedBuildInputs = [ cffi ];
 
   # tests rely on pip/venv
   doCheck = false;
 
   meta = with lib; {
-    description = "A python library that extends setuptools for binary extensions";
+    description = "Python library that extends setuptools for binary extensions";
     homepage = "https://github.com/getsentry/milksnake";
     license = licenses.asl20;
     maintainers = with maintainers; [ matthiasbeyer ];
diff --git a/pkgs/development/python-modules/mill-local/default.nix b/pkgs/development/python-modules/mill-local/default.nix
index 6c24ba8f424c5..3f6a236c40d56 100644
--- a/pkgs/development/python-modules/mill-local/default.nix
+++ b/pkgs/development/python-modules/mill-local/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "mill_local"
-  ];
+  pythonImportsCheck = [ "mill_local" ];
 
   meta = with lib; {
     description = "Python module to communicate locally with Mill heaters";
diff --git a/pkgs/development/python-modules/millheater/default.nix b/pkgs/development/python-modules/millheater/default.nix
index be07dd2f85984..3f372790702a4 100644
--- a/pkgs/development/python-modules/millheater/default.nix
+++ b/pkgs/development/python-modules/millheater/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "mill"
-  ];
+  pythonImportsCheck = [ "mill" ];
 
   meta = with lib; {
     description = "Python library for Mill heater devices";
diff --git a/pkgs/development/python-modules/minari/default.nix b/pkgs/development/python-modules/minari/default.nix
new file mode 100644
index 0000000000000..dd6373a58c56a
--- /dev/null
+++ b/pkgs/development/python-modules/minari/default.nix
@@ -0,0 +1,106 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  gymnasium,
+  numpy,
+  packaging,
+  typer,
+  typing-extensions,
+
+  # optional-dependencies
+  pyarrow,
+  jax,
+  google-cloud-storage,
+  tqdm,
+  h5py,
+  mktestdocs,
+  pytest,
+
+  # tests
+  jaxlib,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "minari";
+  version = "0.5.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "Farama-Foundation";
+    repo = "Minari";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-SVt93d0GbCxeZXhh5vMPvnsBAeJAfGWNceFi0W9RgeM=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
+    gymnasium
+    numpy
+    packaging
+    typer
+    typing-extensions
+  ];
+
+  optional-dependencies = {
+    arrow = [ pyarrow ];
+    create = [ jax ];
+    gcs = [
+      google-cloud-storage
+      tqdm
+    ];
+    hdf5 = [ h5py ];
+    testing = [
+      # gymnasium-robotics
+      mktestdocs
+      pytest
+    ];
+  };
+
+  pythonImportsCheck = [ "minari" ];
+
+  nativeCheckInputs = [
+    jaxlib
+    pytestCheckHook
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
+
+  disabledTests = [
+    # Require internet access
+    "test_download_namespace_dataset"
+    "test_download_namespace_metadata"
+    "test_markdown"
+
+    # Attempts at installing minari using pip (impossible in the sandbox)
+    "test_readme"
+  ];
+
+  disabledTestPaths = [
+    # Require internet access
+    "tests/dataset/test_dataset_download.py"
+    "tests/test_cli.py"
+  ];
+
+  meta = {
+    description = "Standard format for offline reinforcement learning datasets, with popular reference datasets and related utilities";
+    homepage = "https://github.com/Farama-Foundation/Minari";
+    changelog = "https://github.com/Farama-Foundation/Minari/releases/tag/v${version}";
+    license = with lib.licenses; [
+      asl20
+      mit
+    ];
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+    mainProgram = "minari";
+  };
+}
diff --git a/pkgs/development/python-modules/mindsdb-evaluator/default.nix b/pkgs/development/python-modules/mindsdb-evaluator/default.nix
index 9cc654911fc5f..423f3401da68e 100644
--- a/pkgs/development/python-modules/mindsdb-evaluator/default.nix
+++ b/pkgs/development/python-modules/mindsdb-evaluator/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, poetry-core
-, dataprep-ml
-, numpy
-, pandas
-, scikit-learn
-, type-infer
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  poetry-core,
+  dataprep-ml,
+  numpy,
+  pandas,
+  scikit-learn,
+  type-infer,
 }:
 
 buildPythonPackage rec {
   pname = "mindsdb-evaluator";
-  version = "0.0.12";
+  version = "0.0.13";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,12 +22,10 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "mindsdb_evaluator";
     inherit version;
-    hash = "sha256-SqcBtoY7WZcorAaoyhqNDscf1MkSz0pE993mz1MRXCU=";
+    hash = "sha256-SW3GYe9ykbs6ZViScdAgwiBAP9ix4v1VbSm/kJK2jDA=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     dataprep-ml
diff --git a/pkgs/development/python-modules/minexr/default.nix b/pkgs/development/python-modules/minexr/default.nix
index 3785baaa978f3..d99149d8b568b 100644
--- a/pkgs/development/python-modules/minexr/default.nix
+++ b/pkgs/development/python-modules/minexr/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, numpy
-, pillow
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  numpy,
+  pillow,
 }:
 
 buildPythonPackage rec {
@@ -21,10 +22,13 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ numpy ];
 
   pythonImportsCheck = [ "minexr" ];
-  nativeCheckInputs = [ pytestCheckHook pillow ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pillow
+  ];
 
   meta = with lib; {
-    description = "Minimal, standalone OpenEXR reader for single-part, uncompressed scan line files.";
+    description = "Minimal, standalone OpenEXR reader for single-part, uncompressed scan line files";
     homepage = "https://github.com/cheind/py-minexr";
     license = licenses.mit;
     maintainers = with maintainers; [ lucasew ];
diff --git a/pkgs/development/python-modules/miniaudio/default.nix b/pkgs/development/python-modules/miniaudio/default.nix
index 973d4b40822e0..0f86ee525000b 100644
--- a/pkgs/development/python-modules/miniaudio/default.nix
+++ b/pkgs/development/python-modules/miniaudio/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, miniaudio
-, cffi
-, pytestCheckHook
-, AudioToolbox
-, CoreAudio
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  miniaudio,
+  cffi,
+  pytestCheckHook,
+  AudioToolbox,
+  CoreAudio,
 }:
 
 let
@@ -23,43 +24,41 @@ let
 in
 buildPythonPackage rec {
   pname = "miniaudio";
-  version = "1.59";
-
-  disabled = pythonOlder "3.6";
-
-  format = "setuptools";
+  version = "1.61";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "irmen";
     repo = "pyminiaudio";
     rev = "refs/tags/v${version}";
-    hash = "sha256-tMQOGqEThtownW3cnNpCzWye0Uo/Es7E8abVySo1QnQ=";
+    hash = "sha256-H3o2IWGuMqLrJTzQ7w636Ito6f57WBtMXpXXzrZ7UD8=";
   };
 
   postPatch = ''
     rm -r miniaudio
     ln -s ${miniaudio'} miniaudio
     substituteInPlace build_ffi_module.py \
-      --replace "miniaudio/stb_vorbis.c" "miniaudio/extras/stb_vorbis.c";
+      --replace-fail "miniaudio/stb_vorbis.c" "miniaudio/extras/stb_vorbis.c";
     substituteInPlace miniaudio.c \
-      --replace "miniaudio/stb_vorbis.c" "miniaudio/extras/stb_vorbis.c";
+      --replace-fail "miniaudio/stb_vorbis.c" "miniaudio/extras/stb_vorbis.c";
   '';
 
-  buildInputs = lib.optionals stdenv.isDarwin [
+  build-system = [ setuptools ];
+
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
     AudioToolbox
     CoreAudio
   ];
 
   propagatedNativeBuildInputs = [ cffi ];
-  propagatedBuildInputs = [ cffi ];
+  dependencies = [ cffi ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "miniaudio" ];
 
   meta = with lib; {
+    changelog = "https://github.com/irmen/pyminiaudio/releases/tag/v${version}";
     description = "Python bindings for the miniaudio library and its decoders";
     homepage = "https://github.com/irmen/pyminiaudio";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/minichain/default.nix b/pkgs/development/python-modules/minichain/default.nix
index 1e69fbb1f25b7..5109a0136bde8 100644
--- a/pkgs/development/python-modules/minichain/default.nix
+++ b/pkgs/development/python-modules/minichain/default.nix
@@ -1,14 +1,14 @@
-{ buildPythonPackage
-, eliot
-, fetchPypi
-, google-search-results
-, jinja2
-, lib
-, manifest-ml
-, openai
-, pytestCheckHook
-, pythonAtLeast
-, pythonRelaxDepsHook
+{
+  buildPythonPackage,
+  eliot,
+  fetchPypi,
+  google-search-results,
+  jinja2,
+  lib,
+  manifest-ml,
+  openai,
+  pytestCheckHook,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
@@ -31,7 +31,6 @@ buildPythonPackage rec {
     substituteInPlace ./minichain/__init__.py --replace "from .gradio import GradioConf, show" ""
   '';
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   pythonRemoveDeps = [
     # Only used in the examples:
@@ -64,7 +63,7 @@ buildPythonPackage rec {
   nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A tiny library for coding with large language models";
+    description = "Tiny library for coding with large language models";
     homepage = "https://srush-minichain.hf.space";
     changelog = "https://github.com/srush/MiniChain/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/minidb/default.nix b/pkgs/development/python-modules/minidb/default.nix
index 8bd0aea36ca47..20a2eba687d2c 100644
--- a/pkgs/development/python-modules/minidb/default.nix
+++ b/pkgs/development/python-modules/minidb/default.nix
@@ -1,14 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "minidb";
-  version = "2.0.7";
-  format = "setuptools";
+  version = "2.0.8";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -16,16 +18,14 @@ buildPythonPackage rec {
     owner = "thp";
     repo = "minidb";
     rev = "refs/tags/${version}";
-    hash = "sha256-0f2usKoHs4NO/Ir8MhyiAVZFYnUkVH5avdh3QdHzY6s=";
+    hash = "sha256-e7wVR+xr+5phNoRnGIxnmrjB1QU9JmyfQiu88PYapA8=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [
-    "minidb"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "minidb" ];
 
   meta = with lib; {
     description = "SQLite3-based store for Python objects";
@@ -34,4 +34,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ tv ];
   };
 }
-
diff --git a/pkgs/development/python-modules/minidump/default.nix b/pkgs/development/python-modules/minidump/default.nix
index 58d59512e8b50..d50fdfaeedfcb 100644
--- a/pkgs/development/python-modules/minidump/default.nix
+++ b/pkgs/development/python-modules/minidump/default.nix
@@ -1,39 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "minidump";
-  version = "0.0.23";
+  version = "0.0.24";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-R+tza5C/2egkajScmilp/8qowoSklYVfEB+f0KMNBqQ=";
+    hash = "sha256-964JuUTzsXzPXOzGb5/1p6RbBTR0oTrrAS9MkgRHBDc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   # Upstream doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "minidump"
-  ];
+  pythonImportsCheck = [ "minidump" ];
 
   meta = with lib; {
     description = "Python library to parse and read Microsoft minidump file format";
-    mainProgram = "minidump";
     homepage = "https://github.com/skelsec/minidump";
     changelog = "https://github.com/skelsec/minidump/releases/tag/${version}";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "minidump";
   };
 }
diff --git a/pkgs/development/python-modules/miniful/default.nix b/pkgs/development/python-modules/miniful/default.nix
index 434e8bc403bbf..53bdf601899e7 100644
--- a/pkgs/development/python-modules/miniful/default.nix
+++ b/pkgs/development/python-modules/miniful/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, scipy
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  scipy,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "miniful"
-  ];
+  pythonImportsCheck = [ "miniful" ];
 
   meta = with lib; {
     description = "Minimal Fuzzy Library";
diff --git a/pkgs/development/python-modules/minikanren/default.nix b/pkgs/development/python-modules/minikanren/default.nix
index 928b288bf28b6..f8be0a3d6b3b8 100644
--- a/pkgs/development/python-modules/minikanren/default.nix
+++ b/pkgs/development/python-modules/minikanren/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, toolz
-, cons
-, multipledispatch
-, etuples
-, logical-unification
-, py
-, pytestCheckHook
-, pytest-html
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  toolz,
+  cons,
+  multipledispatch,
+  etuples,
+  logical-unification,
+  py,
+  pytestCheckHook,
+  pytest-html,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/minikerberos/default.nix b/pkgs/development/python-modules/minikerberos/default.nix
index 54b2de45056e0..44d44f3b969dc 100644
--- a/pkgs/development/python-modules/minikerberos/default.nix
+++ b/pkgs/development/python-modules/minikerberos/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, asn1crypto
-, asysocks
-, buildPythonPackage
-, fetchPypi
-, oscrypto
-, pythonOlder
-, six
-, tqdm
-, unicrypto
+{
+  lib,
+  asn1crypto,
+  asysocks,
+  buildPythonPackage,
+  fetchPypi,
+  oscrypto,
+  pythonOlder,
+  six,
+  tqdm,
+  unicrypto,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
   # no tests are published: https://github.com/skelsec/minikerberos/pull/5
   doCheck = false;
 
-  pythonImportsCheck = [
-    "minikerberos"
-  ];
+  pythonImportsCheck = [ "minikerberos" ];
 
   meta = with lib; {
     description = "Kerberos manipulation library in Python";
diff --git a/pkgs/development/python-modules/minimal-snowplow-tracker/default.nix b/pkgs/development/python-modules/minimal-snowplow-tracker/default.nix
index a15f81014cfa7..dc04cb99178a5 100644
--- a/pkgs/development/python-modules/minimal-snowplow-tracker/default.nix
+++ b/pkgs/development/python-modules/minimal-snowplow-tracker/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -23,14 +24,15 @@ buildPythonPackage rec {
   # has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "snowplow_tracker"
-  ];
+  pythonImportsCheck = [ "snowplow_tracker" ];
 
   meta = with lib; {
     description = "Minimal snowplow event tracker";
     homepage = "https://github.com/dbt-labs/snowplow-python-tracker";
     license = licenses.asl20;
-    maintainers = with maintainers; [ mausch tjni ];
+    maintainers = with maintainers; [
+      mausch
+      tjni
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/minimock/default.nix b/pkgs/development/python-modules/minimock/default.nix
index 5bd48301e8ec1..63e8ef0b37781 100644
--- a/pkgs/development/python-modules/minimock/default.nix
+++ b/pkgs/development/python-modules/minimock/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -19,19 +20,15 @@ buildPythonPackage rec {
     hash = "sha256-Ut3iKc7Sr28uGgWCV3K3CS+gBta2icvbUPMjjo4fflU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "minimock"
-  ];
+  pythonImportsCheck = [ "minimock" ];
 
   meta = with lib; {
-    description = "A minimalistic mocking library";
+    description = "Minimalistic mocking library";
     homepage = "https://pypi.python.org/pypi/MiniMock";
     license = licenses.mit;
     maintainers = with maintainers; [ drewrisinger ];
diff --git a/pkgs/development/python-modules/minio/default.nix b/pkgs/development/python-modules/minio/default.nix
index de84597491c8c..2cf9cd45c03c7 100644
--- a/pkgs/development/python-modules/minio/default.nix
+++ b/pkgs/development/python-modules/minio/default.nix
@@ -1,36 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, argon2-cffi
-, certifi
-, urllib3
-, pycryptodome
-, typing-extensions
+  # dependencies
+  argon2-cffi,
+  certifi,
+  urllib3,
+  pycryptodome,
+  typing-extensions,
 
-# test
-, faker
-, mock
-, pytestCheckHook
+  # test
+  faker,
+  mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "minio";
-  version = "7.2.6";
+  version = "7.2.9";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "minio";
     repo = "minio-py";
     rev = "refs/tags/${version}";
-    hash = "sha256-zK+D2DNgh1cASdA2gstNW0ODUu7Dn6vMY01mcrdSSo0=";
+    hash = "sha256-ObbU0skqNBebkmX5gtJ9/QHlSZFB3tvaFnitmD+lKBc=";
   };
 
   postPatch = ''
@@ -38,11 +39,9 @@ buildPythonPackage rec {
       --replace-fail "assertEquals" "assertEqual"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     argon2-cffi
     certifi
     urllib3
@@ -61,9 +60,7 @@ buildPythonPackage rec {
     "tests/unit/credentials_test.py"
   ];
 
-  pythonImportsCheck = [
-    "minio"
-  ];
+  pythonImportsCheck = [ "minio" ];
 
   meta = with lib; {
     description = "Simple APIs to access any Amazon S3 compatible object storage server";
diff --git a/pkgs/development/python-modules/miniupnpc/default.nix b/pkgs/development/python-modules/miniupnpc/default.nix
index ec6bcbc7d9703..04d8a08bf1c3d 100644
--- a/pkgs/development/python-modules/miniupnpc/default.nix
+++ b/pkgs/development/python-modules/miniupnpc/default.nix
@@ -1,16 +1,26 @@
-{ stdenv, lib, buildPythonPackage, fetchPypi, cctools, which }:
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cctools,
+  which,
+}:
 
 buildPythonPackage rec {
   pname = "miniupnpc";
-  version = "2.0.2";
+  version = "2.2.8";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0ca94zz7sr2x57j218aypxqcwkr23n8js30f3yrvvqbg929nr93y";
+    hash = "sha256-KwpNVl+tZTZHHZKW9p3a/S0nZJW6lZftjBK9ECkRUMo=";
   };
 
-  nativeBuildInputs = lib.optionals stdenv.isDarwin [ cctools which ];
+  nativeBuildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
+    cctools
+    which
+  ];
 
   meta = with lib; {
     description = "miniUPnP client";
diff --git a/pkgs/development/python-modules/mip/default.nix b/pkgs/development/python-modules/mip/default.nix
index 5705f1f37cfdd..63f2eeb59d727 100644
--- a/pkgs/development/python-modules/mip/default.nix
+++ b/pkgs/development/python-modules/mip/default.nix
@@ -1,23 +1,25 @@
-{ lib, stdenv
-, buildPythonPackage
-, cffi
-, dos2unix
-, fetchPypi
-, matplotlib
-, networkx
-, numpy
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
-, wheel
-, gurobi
-, gurobipy
-# Enable support for the commercial Gurobi solver (requires a license)
-, gurobiSupport ? false
-# If Gurobi has already been installed outside of the Nix store, specify its
-# installation directory here
-, gurobiHome ? null
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cffi,
+  dos2unix,
+  fetchPypi,
+  matplotlib,
+  networkx,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  gurobi,
+  gurobipy,
+  # Enable support for the commercial Gurobi solver (requires a license)
+  gurobiSupport ? false,
+  # If Gurobi has already been installed outside of the Nix store, specify its
+  # installation directory here
+  gurobiHome ? null,
 }:
 
 buildPythonPackage rec {
@@ -32,7 +34,12 @@ buildPythonPackage rec {
     hash = "sha256-f28Dgc/ixSwbhkAgPaLLVpdLJuI5UN37GnazfZFvGX4=";
   };
 
-  nativeCheckInputs = [ matplotlib networkx numpy pytestCheckHook ];
+  nativeCheckInputs = [
+    matplotlib
+    networkx
+    numpy
+    pytestCheckHook
+  ];
 
   nativeBuildInputs = [
     dos2unix
@@ -43,9 +50,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     cffi
-  ] ++ lib.optionals gurobiSupport ([
-    gurobipy
-  ] ++ lib.optional (gurobiHome == null) gurobi);
+  ] ++ lib.optionals gurobiSupport ([ gurobipy ] ++ lib.optional (gurobiHome == null) gurobi);
 
   # Source files have CRLF terminators, which make patch error out when supplied
   # with diffs made on *nix machines
@@ -67,8 +72,9 @@ buildPythonPackage rec {
   '';
 
   # Make MIP use the Gurobi solver, if configured to do so
-  makeWrapperArgs = lib.optional gurobiSupport
-    "--set GUROBI_HOME ${if gurobiHome == null then gurobi.outPath else gurobiHome}";
+  makeWrapperArgs = lib.optional gurobiSupport "--set GUROBI_HOME ${
+    if gurobiHome == null then gurobi.outPath else gurobiHome
+  }";
 
   # Tests that rely on Gurobi are activated only when Gurobi support is enabled
   disabledTests = lib.optional (!gurobiSupport) "gurobi";
@@ -79,11 +85,11 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://python-mip.com/";
-    description = "A collection of Python tools for the modeling and solution of Mixed-Integer Linear programs (MIPs)";
+    description = "Collection of Python tools for the modeling and solution of Mixed-Integer Linear programs (MIPs)";
     downloadPage = "https://github.com/coin-or/python-mip/releases";
     changelog = "https://github.com/coin-or/python-mip/releases/tag/${version}";
     license = licenses.epl20;
-    broken = stdenv.isAarch64;
+    broken = stdenv.hostPlatform.isAarch64;
     maintainers = with maintainers; [ nessdoor ];
   };
 }
diff --git a/pkgs/development/python-modules/mir-eval/default.nix b/pkgs/development/python-modules/mir-eval/default.nix
index b06ce59603620..d94f6b97cc4d0 100644
--- a/pkgs/development/python-modules/mir-eval/default.nix
+++ b/pkgs/development/python-modules/mir-eval/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, future
-, six
-, numpy
-, scipy
-, matplotlib
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  future,
+  six,
+  numpy,
+  scipy,
+  matplotlib,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     matplotlib
   ];
 
-  pythonImportsCheck = [
-    "mir_eval"
-  ];
+  pythonImportsCheck = [ "mir_eval" ];
 
   meta = with lib; {
     description = "Common metrics for common audio/music processing tasks";
diff --git a/pkgs/development/python-modules/mirakuru/default.nix b/pkgs/development/python-modules/mirakuru/default.nix
index 97f1cef438ae6..e208daa625eff 100644
--- a/pkgs/development/python-modules/mirakuru/default.nix
+++ b/pkgs/development/python-modules/mirakuru/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, setuptools
-, psutil
-, netcat
-, ps
-, python-daemon
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools,
+  psutil,
+  netcat,
+  ps,
+  python-daemon,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/misaka/default.nix b/pkgs/development/python-modules/misaka/default.nix
index 369196b152760..11ac651828a54 100644
--- a/pkgs/development/python-modules/misaka/default.nix
+++ b/pkgs/development/python-modules/misaka/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchPypi, buildPythonPackage, cffi }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  cffi,
+}:
 buildPythonPackage rec {
   pname = "misaka";
   version = "2.1.1";
@@ -17,7 +22,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A CFFI binding for Hoedown, a markdown parsing library";
+    description = "CFFI binding for Hoedown, a markdown parsing library";
     mainProgram = "misaka";
     homepage = "https://misaka.61924.nl";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/misoc/default.nix b/pkgs/development/python-modules/misoc/default.nix
index 3fa9e3f6e4721..e573760769be3 100644
--- a/pkgs/development/python-modules/misoc/default.nix
+++ b/pkgs/development/python-modules/misoc/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyserial
-, asyncserial
-, jinja2
-, migen
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyserial,
+  asyncserial,
+  jinja2,
+  migen,
+  numpy,
 }:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "misoc";
-  version = "unstable-2022-10-08";
+  version = "0-unstable-2024-05-14";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "m-labs";
     repo = "misoc";
-    rev = "6a7c670ab6120b8136f652c41d907eb0fb16ed54";
-    hash = "sha256-dLDp0xg5y5b443hD7vbJFobHxbhtnj68RdZnQ7ckgp4=";
+    rev = "fea9de558c730bc394a5936094ae95bb9d6fa726";
+    hash = "sha256-zZ9LnUwvTvBL9iNFfmNTklQnd0I4PmV0BApMSblTnc0=";
   };
 
   propagatedBuildInputs = [
@@ -27,16 +28,14 @@ buildPythonPackage rec {
     migen
   ];
 
-  nativeCheckInputs = [
-    numpy
-  ];
+  nativeCheckInputs = [ numpy ];
 
   pythonImportsCheck = [ "misoc" ];
 
-  meta = with lib; {
-    description = "The original high performance and small footprint system-on-chip based on Migen";
+  meta = {
+    description = "Original high performance and small footprint system-on-chip based on Migen";
     homepage = "https://github.com/m-labs/misoc";
-    license = licenses.bsd2;
-    maintainers = with maintainers; [ doronbehar ];
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ doronbehar ];
   };
 }
diff --git a/pkgs/development/python-modules/mistletoe/default.nix b/pkgs/development/python-modules/mistletoe/default.nix
index aad3a5111da09..ec33d7bec8396 100644
--- a/pkgs/development/python-modules/mistletoe/default.nix
+++ b/pkgs/development/python-modules/mistletoe/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, parameterized
-, pygments
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  parameterized,
+  pygments,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "mistletoe";
-  version = "1.3.0";
+  version = "1.4.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -18,12 +19,10 @@ buildPythonPackage rec {
     owner = "miyuchina";
     repo = "mistletoe";
     rev = "refs/tags/v${version}";
-    hash = "sha256-MMBfH4q5AtC/azQUj1a1tMz1MdUf4ad5/tl7lcQCTOw=";
+    hash = "sha256-jFU16vdASGVSPq+TJ/6cN7IGkE/61SL9BWCOPsVqNaU=";
   };
 
-  pythonImportsCheck = [
-    "mistletoe"
-  ];
+  pythonImportsCheck = [ "mistletoe" ];
 
   nativeCheckInputs = [
     parameterized
diff --git a/pkgs/development/python-modules/mistune/default.nix b/pkgs/development/python-modules/mistune/default.nix
index 38e2c21ba66ae..a3ed1114cb13d 100644
--- a/pkgs/development/python-modules/mistune/default.nix
+++ b/pkgs/development/python-modules/mistune/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,19 +22,15 @@ buildPythonPackage rec {
     hash = "sha256-OoTiqJ7hsFP1Yx+7xW3rL+Yc/O2lCMdhBBbaZucyZXM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "mistune" ];
 
   meta = with lib; {
     changelog = "https://github.com/lepture/mistune/blob/${src.rev}/docs/changes.rst";
-    description = "A sane Markdown parser with useful plugins and renderers";
+    description = "Sane Markdown parser with useful plugins and renderers";
     homepage = "https://github.com/lepture/mistune";
     license = licenses.bsd3;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/pkgs/development/python-modules/mitmproxy-macos/default.nix b/pkgs/development/python-modules/mitmproxy-macos/default.nix
index ce0b19120f1c1..08228102cf1bf 100644
--- a/pkgs/development/python-modules/mitmproxy-macos/default.nix
+++ b/pkgs/development/python-modules/mitmproxy-macos/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,20 +22,17 @@ buildPythonPackage rec {
 
   sourceRoot = "${src.name}/mitmproxy-macos";
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
-  pythonImportsCheck = [
-    "mitmproxy_macos"
-  ];
+  pythonImportsCheck = [ "mitmproxy_macos" ];
 
   meta = with lib; {
-    description = "The MacOS Rust bits in mitmproxy";
+    description = "MacOS Rust bits in mitmproxy";
     homepage = "https://github.com/mitmproxy/mitmproxy_rs/tree/main/mitmproxy-macos";
     changelog = "https://github.com/mitmproxy/mitmproxy_rs/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ boltzmannrain ];
     platforms = platforms.darwin;
+    broken = true; # last successful build 2023-12-04
   };
 }
diff --git a/pkgs/development/python-modules/mitmproxy-rs/Cargo.lock b/pkgs/development/python-modules/mitmproxy-rs/Cargo.lock
index 9efa7356904c6..c5fad70fb8455 100644
--- a/pkgs/development/python-modules/mitmproxy-rs/Cargo.lock
+++ b/pkgs/development/python-modules/mitmproxy-rs/Cargo.lock
@@ -4,9 +4,9 @@ version = 3
 
 [[package]]
 name = "addr2line"
-version = "0.21.0"
+version = "0.22.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
+checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678"
 dependencies = [
  "gimli",
 ]
@@ -29,9 +29,9 @@ dependencies = [
 
 [[package]]
 name = "aho-corasick"
-version = "1.1.1"
+version = "1.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
 dependencies = [
  "memchr",
 ]
@@ -43,48 +43,68 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
 
 [[package]]
+name = "anstream"
+version = "0.6.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "is_terminal_polyfill",
+ "utf8parse",
+]
+
+[[package]]
 name = "anstyle"
-version = "1.0.3"
+version = "1.0.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b84bf0a05bbb2a83e5eb6fa36bb6e87baa08193c35ff52bbf6b38d8af2890e46"
+checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b"
 
 [[package]]
-name = "anyhow"
-version = "1.0.75"
+name = "anstyle-parse"
+version = "0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
+checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4"
 dependencies = [
- "backtrace",
+ "utf8parse",
 ]
 
 [[package]]
-name = "apple-security-framework"
-version = "2.9.2"
+name = "anstyle-query"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07831f002eaa83d94f7e2c1300f3268a8f949c35a41dd99faceb6575c191d871"
+checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391"
 dependencies = [
- "apple-security-framework-sys",
- "bitflags 2.4.0",
- "core-foundation",
- "core-foundation-sys",
- "libc",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
-name = "apple-security-framework-sys"
-version = "2.9.1"
+name = "anstyle-wincon"
+version = "3.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09acfa027e87e9f590474e9ef19d0f12158bf1c72af80ac76806f17e84959a42"
+checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19"
 dependencies = [
- "core-foundation-sys",
- "libc",
+ "anstyle",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.86"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
+dependencies = [
+ "backtrace",
 ]
 
 [[package]]
 name = "arc-swap"
-version = "1.6.0"
+version = "1.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6"
+checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
 
 [[package]]
 name = "arrayvec"
@@ -111,34 +131,25 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.37",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "async-trait"
-version = "0.1.74"
+version = "0.1.80"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9"
+checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.37",
-]
-
-[[package]]
-name = "atomic-polyfill"
-version = "0.1.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3ff7eb3f316534d83a8a2c3d1674ace8a5a71198eba31e2e2b597833f699b28"
-dependencies = [
- "critical-section",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "autocfg"
-version = "1.1.0"
+version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
 
 [[package]]
 name = "axum"
@@ -187,9 +198,9 @@ dependencies = [
 
 [[package]]
 name = "backtrace"
-version = "0.3.69"
+version = "0.3.73"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
+checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a"
 dependencies = [
  "addr2line",
  "cc",
@@ -208,15 +219,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
 
 [[package]]
 name = "base64"
-version = "0.21.4"
+version = "0.21.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2"
-
-[[package]]
-name = "bit_field"
-version = "0.10.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
 
 [[package]]
 name = "bitflags"
@@ -226,9 +231,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
 name = "bitflags"
-version = "2.4.0"
+version = "2.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
 
 [[package]]
 name = "blake2"
@@ -240,6 +245,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "block"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
+
+[[package]]
 name = "block-buffer"
 version = "0.10.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -274,27 +285,27 @@ dependencies = [
 
 [[package]]
 name = "bumpalo"
-version = "3.14.0"
+version = "3.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
 
 [[package]]
 name = "bytemuck"
-version = "1.14.0"
+version = "1.16.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6"
+checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e"
 
 [[package]]
 name = "byteorder"
-version = "1.4.3"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 
 [[package]]
 name = "bytes"
-version = "1.5.0"
+version = "1.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
 
 [[package]]
 name = "cast"
@@ -304,12 +315,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
 
 [[package]]
 name = "cc"
-version = "1.0.83"
+version = "1.0.104"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
-dependencies = [
- "libc",
-]
+checksum = "74b6a57f98764a267ff415d50a25e6e166f3831a5071af4995296ea97d210490"
 
 [[package]]
 name = "cfg-if"
@@ -318,6 +326,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[package]]
+name = "cfg_aliases"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
+
+[[package]]
 name = "chacha20"
 version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -343,9 +357,9 @@ dependencies = [
 
 [[package]]
 name = "ciborium"
-version = "0.2.1"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926"
+checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
 dependencies = [
  "ciborium-io",
  "ciborium-ll",
@@ -354,18 +368,18 @@ dependencies = [
 
 [[package]]
 name = "ciborium-io"
-version = "0.2.1"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656"
+checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
 
 [[package]]
 name = "ciborium-ll"
-version = "0.2.1"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b"
+checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
 dependencies = [
  "ciborium-io",
- "half 1.8.2",
+ "half",
 ]
 
 [[package]]
@@ -381,18 +395,18 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.4.4"
+version = "4.5.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1d7b8d5ec32af0fadc644bf1fd509a688c2103b185644bb1e29d164e0703136"
+checksum = "84b3edb18336f4df585bc9aa31dd99c036dfa5dc5e9a2939a722a188f3a8970d"
 dependencies = [
  "clap_builder",
 ]
 
 [[package]]
 name = "clap_builder"
-version = "4.4.4"
+version = "4.5.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5179bb514e4d7c2051749d8fcefa2ed6d06a9f4e6d69faf3805f5d80b8cf8d56"
+checksum = "c1c09dd5ada6c6c78075d6fd0da3f90d8080651e2d6cc8eb2f1aaa4034ced708"
 dependencies = [
  "anstyle",
  "clap_lex",
@@ -400,21 +414,51 @@ dependencies = [
 
 [[package]]
 name = "clap_lex"
-version = "0.5.1"
+version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961"
+checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70"
 
 [[package]]
-name = "color_quant"
-version = "1.1.0"
+name = "cocoa"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c"
+dependencies = [
+ "bitflags 1.3.2",
+ "block",
+ "cocoa-foundation",
+ "core-foundation",
+ "core-graphics",
+ "foreign-types",
+ "libc",
+ "objc",
+]
+
+[[package]]
+name = "cocoa-foundation"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7"
+dependencies = [
+ "bitflags 1.3.2",
+ "block",
+ "core-foundation",
+ "core-graphics-types",
+ "libc",
+ "objc",
+]
+
+[[package]]
+name = "colorchoice"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
+checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422"
 
 [[package]]
 name = "console-api"
-version = "0.6.0"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd326812b3fd01da5bb1af7d340d0d555fd3d4b641e7f1dfcf5962a902952787"
+checksum = "a257c22cd7e487dd4a13d413beabc512c5052f0bc048db0da6a84c3d8a6142fd"
 dependencies = [
  "futures-core",
  "prost",
@@ -425,9 +469,9 @@ dependencies = [
 
 [[package]]
 name = "console-subscriber"
-version = "0.2.0"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7481d4c57092cd1c19dd541b92bdce883de840df30aa5d03fd48a3935c01842e"
+checksum = "31c4cc54bae66f7d9188996404abdf7fdfa23034ef8e43478c8810828abad758"
 dependencies = [
  "console-api",
  "crossbeam-channel",
@@ -435,6 +479,7 @@ dependencies = [
  "futures-task",
  "hdrhistogram",
  "humantime",
+ "prost",
  "prost-types",
  "serde",
  "serde_json",
@@ -449,9 +494,9 @@ dependencies = [
 
 [[package]]
 name = "core-foundation"
-version = "0.9.3"
+version = "0.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
 dependencies = [
  "core-foundation-sys",
  "libc",
@@ -459,24 +504,48 @@ dependencies = [
 
 [[package]]
 name = "core-foundation-sys"
-version = "0.8.4"
+version = "0.8.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
+checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+
+[[package]]
+name = "core-graphics"
+version = "0.23.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "core-graphics-types",
+ "foreign-types",
+ "libc",
+]
+
+[[package]]
+name = "core-graphics-types"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "libc",
+]
 
 [[package]]
 name = "cpufeatures"
-version = "0.2.9"
+version = "0.2.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1"
+checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
 dependencies = [
  "libc",
 ]
 
 [[package]]
 name = "crc32fast"
-version = "1.3.2"
+version = "1.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
 dependencies = [
  "cfg-if",
 ]
@@ -518,53 +587,38 @@ dependencies = [
 ]
 
 [[package]]
-name = "critical-section"
-version = "1.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216"
-
-[[package]]
 name = "crossbeam-channel"
-version = "0.5.8"
+version = "0.5.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
+checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
 dependencies = [
- "cfg-if",
  "crossbeam-utils",
 ]
 
 [[package]]
 name = "crossbeam-deque"
-version = "0.8.3"
+version = "0.8.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
+checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
 dependencies = [
- "cfg-if",
  "crossbeam-epoch",
  "crossbeam-utils",
 ]
 
 [[package]]
 name = "crossbeam-epoch"
-version = "0.9.15"
+version = "0.9.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
 dependencies = [
- "autocfg",
- "cfg-if",
  "crossbeam-utils",
- "memoffset",
- "scopeguard",
 ]
 
 [[package]]
 name = "crossbeam-utils"
-version = "0.8.16"
+version = "0.8.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
-dependencies = [
- "cfg-if",
-]
+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
 
 [[package]]
 name = "crunchy"
@@ -601,26 +655,26 @@ dependencies = [
 
 [[package]]
 name = "curve25519-dalek-derive"
-version = "0.1.0"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b"
+checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.37",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "data-encoding"
-version = "2.5.0"
+version = "2.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5"
+checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2"
 
 [[package]]
 name = "defmt"
-version = "0.3.5"
+version = "0.3.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8a2d011b2fee29fb7d659b83c43fce9a2cb4df453e16d441a51448e448f3f98"
+checksum = "a99dd22262668b887121d4672af5a64b238f026099f1a2a1b322066c9ecfe9e0"
 dependencies = [
  "bitflags 1.3.2",
  "defmt-macros",
@@ -628,27 +682,36 @@ dependencies = [
 
 [[package]]
 name = "defmt-macros"
-version = "0.3.6"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54f0216f6c5acb5ae1a47050a6645024e6edafc2ee32d421955eccfef12ef92e"
+checksum = "e3a9f309eff1f79b3ebdf252954d90ae440599c26c2c553fe87a2d17195f2dcb"
 dependencies = [
  "defmt-parser",
  "proc-macro-error",
  "proc-macro2",
  "quote",
- "syn 2.0.37",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "defmt-parser"
-version = "0.3.3"
+version = "0.3.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "269924c02afd7f94bc4cecbfa5c379f6ffcf9766b3408fe63d22c728654eccd0"
+checksum = "ff4a5fefe330e8d7f31b16a318f9ce81000d8e35e69b93eae154d16d2278f70f"
 dependencies = [
  "thiserror",
 ]
 
 [[package]]
+name = "deranged"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
+dependencies = [
+ "powerfmt",
+]
+
+[[package]]
 name = "digest"
 version = "0.10.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -661,42 +724,59 @@ dependencies = [
 
 [[package]]
 name = "either"
-version = "1.9.0"
+version = "1.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
+checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
 
 [[package]]
-name = "env_logger"
-version = "0.10.1"
+name = "enum-as-inner"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece"
+checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.68",
+]
+
+[[package]]
+name = "env_filter"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea"
 dependencies = [
- "humantime",
- "is-terminal",
  "log",
  "regex",
- "termcolor",
 ]
 
 [[package]]
-name = "errno"
-version = "0.3.3"
+name = "env_logger"
+version = "0.11.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd"
+checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9"
 dependencies = [
- "errno-dragonfly",
- "libc",
- "windows-sys",
+ "anstream",
+ "anstyle",
+ "env_filter",
+ "humantime",
+ "log",
 ]
 
 [[package]]
-name = "errno-dragonfly"
-version = "0.1.2"
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
+name = "errno"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
 dependencies = [
- "cc",
  "libc",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -709,26 +789,10 @@ dependencies = [
 ]
 
 [[package]]
-name = "exr"
-version = "1.71.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "832a761f35ab3e6664babfbdc6cef35a4860e816ec3916dcfd0882954e98a8a8"
-dependencies = [
- "bit_field",
- "flume",
- "half 2.2.1",
- "lebe",
- "miniz_oxide",
- "rayon-core",
- "smallvec",
- "zune-inflate",
-]
-
-[[package]]
 name = "fdeflate"
-version = "0.3.0"
+version = "0.3.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10"
+checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645"
 dependencies = [
  "simd-adler32",
 ]
@@ -741,46 +805,73 @@ checksum = "e825f6987101665dea6ec934c09ec6d721de7bc1bf92248e1d5810c8cd636b77"
 
 [[package]]
 name = "filetime"
-version = "0.2.22"
+version = "0.2.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0"
+checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd"
 dependencies = [
  "cfg-if",
  "libc",
- "redox_syscall",
- "windows-sys",
+ "redox_syscall 0.4.1",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "flate2"
-version = "1.0.27"
+version = "1.0.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010"
+checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae"
 dependencies = [
  "crc32fast",
  "miniz_oxide",
 ]
 
 [[package]]
-name = "flume"
-version = "0.11.0"
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "foreign-types"
+version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181"
+checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965"
 dependencies = [
- "spin 0.9.8",
+ "foreign-types-macros",
+ "foreign-types-shared",
 ]
 
 [[package]]
-name = "fnv"
-version = "1.0.7"
+name = "foreign-types-macros"
+version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.68",
+]
+
+[[package]]
+name = "foreign-types-shared"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
+dependencies = [
+ "percent-encoding",
+]
 
 [[package]]
 name = "futures"
-version = "0.3.28"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40"
+checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -793,9 +884,9 @@ dependencies = [
 
 [[package]]
 name = "futures-channel"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb"
+checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
 dependencies = [
  "futures-core",
  "futures-sink",
@@ -803,15 +894,15 @@ dependencies = [
 
 [[package]]
 name = "futures-core"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c"
+checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
 
 [[package]]
 name = "futures-executor"
-version = "0.3.28"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0"
+checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
 dependencies = [
  "futures-core",
  "futures-task",
@@ -820,38 +911,38 @@ dependencies = [
 
 [[package]]
 name = "futures-io"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa"
+checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
 
 [[package]]
 name = "futures-macro"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb"
+checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.37",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "futures-sink"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817"
+checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
 
 [[package]]
 name = "futures-task"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2"
+checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
 
 [[package]]
 name = "futures-util"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104"
+checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -877,9 +968,9 @@ dependencies = [
 
 [[package]]
 name = "getrandom"
-version = "0.2.10"
+version = "0.2.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
 dependencies = [
  "cfg-if",
  "libc",
@@ -887,26 +978,16 @@ dependencies = [
 ]
 
 [[package]]
-name = "gif"
-version = "0.12.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045"
-dependencies = [
- "color_quant",
- "weezl",
-]
-
-[[package]]
 name = "gimli"
-version = "0.28.0"
+version = "0.29.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
+checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd"
 
 [[package]]
 name = "h2"
-version = "0.3.21"
+version = "0.3.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833"
+checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
 dependencies = [
  "bytes",
  "fnv",
@@ -914,7 +995,7 @@ dependencies = [
  "futures-sink",
  "futures-util",
  "http",
- "indexmap",
+ "indexmap 2.2.6",
  "slab",
  "tokio",
  "tokio-util",
@@ -923,24 +1004,19 @@ dependencies = [
 
 [[package]]
 name = "half"
-version = "1.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
-
-[[package]]
-name = "half"
-version = "2.2.1"
+version = "2.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0"
+checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
 dependencies = [
+ "cfg-if",
  "crunchy",
 ]
 
 [[package]]
 name = "hash32"
-version = "0.2.1"
+version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67"
+checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606"
 dependencies = [
  "byteorder",
 ]
@@ -952,12 +1028,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
 
 [[package]]
+name = "hashbrown"
+version = "0.14.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+
+[[package]]
 name = "hdrhistogram"
-version = "7.5.2"
+version = "7.5.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f19b9f54f7c7f55e31401bb647626ce0cf0f67b0004982ce815b3ee72a02aa8"
+checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d"
 dependencies = [
- "base64 0.13.1",
+ "base64 0.21.7",
  "byteorder",
  "flate2",
  "nom",
@@ -966,22 +1048,25 @@ dependencies = [
 
 [[package]]
 name = "heapless"
-version = "0.7.16"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db04bc24a18b9ea980628ecf00e6c0264f3c1426dac36c00cb49b6fbad8b0743"
+checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad"
 dependencies = [
- "atomic-polyfill",
  "hash32",
- "rustc_version",
- "spin 0.9.8",
  "stable_deref_trait",
 ]
 
 [[package]]
+name = "heck"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+
+[[package]]
 name = "hermit-abi"
-version = "0.3.3"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
 
 [[package]]
 name = "hex"
@@ -990,6 +1075,71 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
 
 [[package]]
+name = "hickory-proto"
+version = "0.24.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07698b8420e2f0d6447a436ba999ec85d8fbf2a398bbd737b82cac4a2e96e512"
+dependencies = [
+ "async-trait",
+ "cfg-if",
+ "data-encoding",
+ "enum-as-inner",
+ "futures-channel",
+ "futures-io",
+ "futures-util",
+ "idna 0.4.0",
+ "ipnet",
+ "once_cell",
+ "rand",
+ "thiserror",
+ "tinyvec",
+ "tokio",
+ "tracing",
+ "url",
+]
+
+[[package]]
+name = "hickory-resolver"
+version = "0.24.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28757f23aa75c98f254cf0405e6d8c25b831b32921b050a66692427679b1f243"
+dependencies = [
+ "cfg-if",
+ "futures-util",
+ "hickory-proto",
+ "ipconfig",
+ "lru-cache",
+ "once_cell",
+ "parking_lot",
+ "rand",
+ "resolv-conf",
+ "smallvec",
+ "thiserror",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "hickory-server"
+version = "0.24.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9be0e43c556b9b3fdb6c7c71a9a32153a2275d02419e3de809e520bfcfe40c37"
+dependencies = [
+ "async-trait",
+ "bytes",
+ "cfg-if",
+ "enum-as-inner",
+ "futures-util",
+ "hickory-proto",
+ "serde",
+ "thiserror",
+ "time",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
 name = "hmac"
 version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -999,10 +1149,21 @@ dependencies = [
 ]
 
 [[package]]
+name = "hostname"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867"
+dependencies = [
+ "libc",
+ "match_cfg",
+ "winapi",
+]
+
+[[package]]
 name = "http"
-version = "0.2.9"
+version = "0.2.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482"
+checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
 dependencies = [
  "bytes",
  "fnv",
@@ -1011,9 +1172,9 @@ dependencies = [
 
 [[package]]
 name = "http-body"
-version = "0.4.5"
+version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
+checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
 dependencies = [
  "bytes",
  "http",
@@ -1022,9 +1183,9 @@ dependencies = [
 
 [[package]]
 name = "httparse"
-version = "1.8.0"
+version = "1.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9"
 
 [[package]]
 name = "httpdate"
@@ -1040,9 +1201,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
 
 [[package]]
 name = "hyper"
-version = "0.14.27"
+version = "0.14.29"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468"
+checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33"
 dependencies = [
  "bytes",
  "futures-channel",
@@ -1055,7 +1216,7 @@ dependencies = [
  "httpdate",
  "itoa",
  "pin-project-lite",
- "socket2 0.4.9",
+ "socket2",
  "tokio",
  "tower-service",
  "tracing",
@@ -1075,21 +1236,35 @@ dependencies = [
 ]
 
 [[package]]
+name = "idna"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "idna"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
 name = "image"
-version = "0.24.7"
+version = "0.25.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f3dfdbdd72063086ff443e297b61695500514b1e41095b6fb9a5ab48a70a711"
+checksum = "fd54d660e773627692c524beaad361aca785a4f9f5730ce91f42aabe5bce3d11"
 dependencies = [
  "bytemuck",
  "byteorder",
- "color_quant",
- "exr",
- "gif",
- "jpeg-decoder",
- "num-rational",
  "num-traits",
  "png",
- "qoi",
  "tiff",
 ]
 
@@ -1100,14 +1275,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
 dependencies = [
  "autocfg",
- "hashbrown",
+ "hashbrown 0.12.3",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.14.5",
 ]
 
 [[package]]
 name = "indoc"
-version = "1.0.9"
+version = "2.0.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306"
+checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
 
 [[package]]
 name = "inout"
@@ -1126,9 +1311,9 @@ checksum = "fc6d6206008e25125b1f97fbe5d309eb7b85141cf9199d52dbd3729a1584dd16"
 
 [[package]]
 name = "internet-packet"
-version = "0.2.0"
+version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95d8d20ad61a92e71edf571fa568e14aeba0c5f00548acd491fbf694ce9a5ad8"
+checksum = "f0273209b868758e751e5db7f59f72d152750d3e30f08f6eb06722357dcfe453"
 dependencies = [
  "internet-checksum",
  "smoltcp",
@@ -1157,17 +1342,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8e537132deb99c0eb4b752f0346b6a836200eaaa3516dd7e5514b63930a09e5d"
 
 [[package]]
+name = "ipconfig"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f"
+dependencies = [
+ "socket2",
+ "widestring",
+ "windows-sys 0.48.0",
+ "winreg",
+]
+
+[[package]]
+name = "ipnet"
+version = "2.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
+
+[[package]]
 name = "is-terminal"
-version = "0.4.9"
+version = "0.4.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
+checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b"
 dependencies = [
  "hermit-abi",
- "rustix",
- "windows-sys",
+ "libc",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
+name = "is_terminal_polyfill"
+version = "1.70.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800"
+
+[[package]]
 name = "itertools"
 version = "0.10.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1178,66 +1387,63 @@ dependencies = [
 
 [[package]]
 name = "itertools"
-version = "0.11.0"
+version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
 dependencies = [
  "either",
 ]
 
 [[package]]
 name = "itoa"
-version = "1.0.9"
+version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
 
 [[package]]
 name = "jpeg-decoder"
-version = "0.3.0"
+version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e"
-dependencies = [
- "rayon",
-]
+checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0"
 
 [[package]]
 name = "js-sys"
-version = "0.3.64"
+version = "0.3.69"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
+checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
 dependencies = [
  "wasm-bindgen",
 ]
 
 [[package]]
 name = "lazy_static"
-version = "1.4.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
 
 [[package]]
-name = "lebe"
-version = "0.5.2"
+name = "libc"
+version = "0.2.155"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
 
 [[package]]
-name = "libc"
-version = "0.2.150"
+name = "linked-hash-map"
+version = "0.5.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
+checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.4.7"
+version = "0.4.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128"
+checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
 
 [[package]]
 name = "lock_api"
-version = "0.4.10"
+version = "0.4.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
 dependencies = [
  "autocfg",
  "scopeguard",
@@ -1245,9 +1451,18 @@ dependencies = [
 
 [[package]]
 name = "log"
-version = "0.4.20"
+version = "0.4.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
+checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
+
+[[package]]
+name = "lru-cache"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c"
+dependencies = [
+ "linked-hash-map",
+]
 
 [[package]]
 name = "lru_time_cache"
@@ -1257,9 +1472,18 @@ checksum = "9106e1d747ffd48e6be5bb2d97fa706ed25b144fbee4d5c02eae110cd8d6badd"
 
 [[package]]
 name = "macos-certificate-truster"
-version = "0.5.1"
+version = "0.6.3"
 dependencies = [
- "apple-security-framework",
+ "security-framework",
+]
+
+[[package]]
+name = "malloc_buf"
+version = "0.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
+dependencies = [
+ "libc",
 ]
 
 [[package]]
@@ -1269,6 +1493,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0ca88d725a0a943b096803bd34e73a4437208b6077654cc4ecb2947a5f91618d"
 
 [[package]]
+name = "match_cfg"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
+
+[[package]]
 name = "matchers"
 version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1285,15 +1515,15 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
 
 [[package]]
 name = "memchr"
-version = "2.6.3"
+version = "2.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
 
 [[package]]
 name = "memoffset"
-version = "0.9.0"
+version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
 dependencies = [
  "autocfg",
 ]
@@ -1312,9 +1542,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
 
 [[package]]
 name = "miniz_oxide"
-version = "0.7.1"
+version = "0.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08"
 dependencies = [
  "adler",
  "simd-adler32",
@@ -1322,18 +1552,18 @@ dependencies = [
 
 [[package]]
 name = "mio"
-version = "0.8.9"
+version = "0.8.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0"
+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
 dependencies = [
  "libc",
  "wasi",
- "windows-sys",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
 name = "mitm-wg-test-client"
-version = "0.5.1"
+version = "0.6.3"
 dependencies = [
  "anyhow",
  "boringtun",
@@ -1344,36 +1574,43 @@ dependencies = [
 
 [[package]]
 name = "mitmproxy"
-version = "0.5.1"
+version = "0.6.3"
 dependencies = [
  "anyhow",
- "apple-security-framework",
- "async-trait",
  "boringtun",
+ "cocoa",
  "console-subscriber",
+ "core-foundation",
+ "core-graphics",
  "criterion",
+ "data-encoding",
  "env_logger",
  "futures-util",
+ "hickory-resolver",
+ "hickory-server",
  "image",
  "internet-packet",
  "log",
  "lru_time_cache",
- "nix 0.27.1",
+ "nix 0.29.0",
+ "objc",
  "once_cell",
  "pretty-hex",
  "prost",
  "rand",
  "rand_core",
+ "security-framework",
  "smoltcp",
+ "sysinfo",
  "tokio",
  "tokio-util",
- "windows 0.52.0",
+ "windows 0.57.0",
  "x25519-dalek",
 ]
 
 [[package]]
 name = "mitmproxy_rs"
-version = "0.5.1"
+version = "0.6.3"
 dependencies = [
  "anyhow",
  "boringtun",
@@ -1384,7 +1621,7 @@ dependencies = [
  "mitmproxy",
  "once_cell",
  "pyo3",
- "pyo3-asyncio",
+ "pyo3-asyncio-0-21",
  "pyo3-log",
  "rand_core",
  "tar",
@@ -1405,12 +1642,13 @@ dependencies = [
 
 [[package]]
 name = "nix"
-version = "0.27.1"
+version = "0.29.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
+checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
 dependencies = [
- "bitflags 2.4.0",
+ "bitflags 2.6.0",
  "cfg-if",
+ "cfg_aliases",
  "libc",
 ]
 
@@ -1425,31 +1663,25 @@ dependencies = [
 ]
 
 [[package]]
-name = "num-integer"
-version = "0.1.45"
+name = "ntapi"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4"
 dependencies = [
- "autocfg",
- "num-traits",
+ "winapi",
 ]
 
 [[package]]
-name = "num-rational"
-version = "0.4.1"
+name = "num-conv"
+version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
-dependencies = [
- "autocfg",
- "num-integer",
- "num-traits",
-]
+checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
 
 [[package]]
 name = "num-traits"
-version = "0.2.16"
+version = "0.2.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
 dependencies = [
  "autocfg",
 ]
@@ -1465,19 +1697,28 @@ dependencies = [
 ]
 
 [[package]]
+name = "objc"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
+dependencies = [
+ "malloc_buf",
+]
+
+[[package]]
 name = "object"
-version = "0.32.1"
+version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0"
+checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce"
 dependencies = [
  "memchr",
 ]
 
 [[package]]
 name = "once_cell"
-version = "1.18.0"
+version = "1.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
 
 [[package]]
 name = "oorandom"
@@ -1487,15 +1728,15 @@ checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
 
 [[package]]
 name = "opaque-debug"
-version = "0.3.0"
+version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
+checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"
 
 [[package]]
 name = "parking_lot"
-version = "0.12.1"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
 dependencies = [
  "lock_api",
  "parking_lot_core",
@@ -1503,48 +1744,48 @@ dependencies = [
 
 [[package]]
 name = "parking_lot_core"
-version = "0.9.8"
+version = "0.9.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
 dependencies = [
  "cfg-if",
  "libc",
- "redox_syscall",
+ "redox_syscall 0.5.2",
  "smallvec",
- "windows-targets 0.48.5",
+ "windows-targets 0.52.5",
 ]
 
 [[package]]
 name = "percent-encoding"
-version = "2.3.0"
+version = "2.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
 
 [[package]]
 name = "pin-project"
-version = "1.1.3"
+version = "1.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422"
+checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
 dependencies = [
  "pin-project-internal",
 ]
 
 [[package]]
 name = "pin-project-internal"
-version = "1.1.3"
+version = "1.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
+checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.37",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "pin-project-lite"
-version = "0.2.13"
+version = "0.2.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
 
 [[package]]
 name = "pin-utils"
@@ -1554,15 +1795,15 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
 
 [[package]]
 name = "platforms"
-version = "3.1.2"
+version = "3.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4503fa043bf02cee09a9582e9554b4c6403b2ef55e4612e96561d294419429f8"
+checksum = "0e4c7666f2019727f9e8e14bf14456e99c707d780922869f1ba473eee101fa49"
 
 [[package]]
 name = "plotters"
-version = "0.3.5"
+version = "0.3.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45"
+checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3"
 dependencies = [
  "num-traits",
  "plotters-backend",
@@ -1573,24 +1814,24 @@ dependencies = [
 
 [[package]]
 name = "plotters-backend"
-version = "0.3.5"
+version = "0.3.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609"
+checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7"
 
 [[package]]
 name = "plotters-svg"
-version = "0.3.5"
+version = "0.3.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab"
+checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705"
 dependencies = [
  "plotters-backend",
 ]
 
 [[package]]
 name = "png"
-version = "0.17.10"
+version = "0.17.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64"
+checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1"
 dependencies = [
  "bitflags 1.3.2",
  "crc32fast",
@@ -1611,6 +1852,18 @@ dependencies = [
 ]
 
 [[package]]
+name = "portable-atomic"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
+
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
+[[package]]
 name = "ppv-lite86"
 version = "0.2.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1618,9 +1871,9 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
 
 [[package]]
 name = "pretty-hex"
-version = "0.4.0"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23c6b968ed37d62e35b4febaba13bfa231b0b7929d68b8a94e65445a17e2d35f"
+checksum = "bbc83ee4a840062f368f9096d80077a9841ec117e17e7f700df81958f1451254"
 
 [[package]]
 name = "proc-macro-error"
@@ -1648,18 +1901,18 @@ dependencies = [
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.67"
+version = "1.0.86"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
 name = "prost"
-version = "0.12.3"
+version = "0.12.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a"
+checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29"
 dependencies = [
  "bytes",
  "prost-derive",
@@ -1667,31 +1920,31 @@ dependencies = [
 
 [[package]]
 name = "prost-derive"
-version = "0.12.3"
+version = "0.12.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e"
+checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1"
 dependencies = [
  "anyhow",
- "itertools 0.11.0",
+ "itertools 0.12.1",
  "proc-macro2",
  "quote",
- "syn 2.0.37",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "prost-types"
-version = "0.12.1"
+version = "0.12.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e081b29f63d83a4bc75cfc9f3fe424f9156cf92d8a4f0c9407cce9a1b67327cf"
+checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0"
 dependencies = [
  "prost",
 ]
 
 [[package]]
 name = "pyo3"
-version = "0.19.2"
+version = "0.21.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e681a6cfdc4adcc93b4d3cf993749a4552018ee0a9b65fc0ccfad74352c72a38"
+checksum = "a5e00b96a521718e08e03b1a622f01c8a8deb50719335de3f60b3b3950f069d8"
 dependencies = [
  "anyhow",
  "cfg-if",
@@ -1699,6 +1952,7 @@ dependencies = [
  "libc",
  "memoffset",
  "parking_lot",
+ "portable-atomic",
  "pyo3-build-config",
  "pyo3-ffi",
  "pyo3-macros",
@@ -1706,10 +1960,10 @@ dependencies = [
 ]
 
 [[package]]
-name = "pyo3-asyncio"
-version = "0.19.0"
+name = "pyo3-asyncio-0-21"
+version = "0.21.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2cc34c1f907ca090d7add03dc523acdd91f3a4dab12286604951e2f5152edad"
+checksum = "8fde289486f7d5cee0ac7c20b2637a0657654681079cc5eedc90d9a2a79af1e5"
 dependencies = [
  "futures",
  "once_cell",
@@ -1720,9 +1974,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-build-config"
-version = "0.19.2"
+version = "0.21.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "076c73d0bc438f7a4ef6fdd0c3bb4732149136abd952b110ac93e4edb13a6ba5"
+checksum = "7883df5835fafdad87c0d888b266c8ec0f4c9ca48a5bed6bbb592e8dedee1b50"
 dependencies = [
  "once_cell",
  "target-lexicon",
@@ -1730,9 +1984,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-ffi"
-version = "0.19.2"
+version = "0.21.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e53cee42e77ebe256066ba8aa77eff722b3bb91f3419177cf4cd0f304d3284d9"
+checksum = "01be5843dc60b916ab4dad1dca6d20b9b4e6ddc8e15f50c47fe6d85f1fb97403"
 dependencies = [
  "libc",
  "pyo3-build-config",
@@ -1740,9 +1994,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-log"
-version = "0.9.0"
+version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c10808ee7250403bedb24bc30c32493e93875fef7ba3e4292226fe924f398bd"
+checksum = "3ac84e6eec1159bc2a575c9ae6723baa6ee9d45873e9bebad1e3ad7e8d28a443"
 dependencies = [
  "arc-swap",
  "log",
@@ -1751,41 +2005,40 @@ dependencies = [
 
 [[package]]
 name = "pyo3-macros"
-version = "0.19.2"
+version = "0.21.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dfeb4c99597e136528c6dd7d5e3de5434d1ceaf487436a3f03b2d56b6fc9efd1"
+checksum = "77b34069fc0682e11b31dbd10321cbf94808394c56fd996796ce45217dfac53c"
 dependencies = [
  "proc-macro2",
  "pyo3-macros-backend",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "pyo3-macros-backend"
-version = "0.19.2"
+version = "0.21.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "947dc12175c254889edc0c02e399476c2f652b4b9ebd123aa655c224de259536"
+checksum = "08260721f32db5e1a5beae69a55553f56b99bd0e1c3e6e0a5e8851a9d0f5a85c"
 dependencies = [
+ "heck",
  "proc-macro2",
+ "pyo3-build-config",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.68",
 ]
 
 [[package]]
-name = "qoi"
-version = "0.4.1"
+name = "quick-error"
+version = "1.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001"
-dependencies = [
- "bytemuck",
-]
+checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
 
 [[package]]
 name = "quote"
-version = "1.0.33"
+version = "1.0.36"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
+checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
 dependencies = [
  "proc-macro2",
 ]
@@ -1822,9 +2075,9 @@ dependencies = [
 
 [[package]]
 name = "rayon"
-version = "1.8.0"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
 dependencies = [
  "either",
  "rayon-core",
@@ -1832,9 +2085,9 @@ dependencies = [
 
 [[package]]
 name = "rayon-core"
-version = "1.12.0"
+version = "1.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
 dependencies = [
  "crossbeam-deque",
  "crossbeam-utils",
@@ -1842,23 +2095,32 @@ dependencies = [
 
 [[package]]
 name = "redox_syscall"
-version = "0.3.5"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
 dependencies = [
  "bitflags 1.3.2",
 ]
 
 [[package]]
+name = "redox_syscall"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd"
+dependencies = [
+ "bitflags 2.6.0",
+]
+
+[[package]]
 name = "regex"
-version = "1.9.5"
+version = "1.10.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47"
+checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f"
 dependencies = [
  "aho-corasick",
  "memchr",
- "regex-automata 0.3.8",
- "regex-syntax 0.7.5",
+ "regex-automata 0.4.7",
+ "regex-syntax 0.8.4",
 ]
 
 [[package]]
@@ -1872,13 +2134,13 @@ dependencies = [
 
 [[package]]
 name = "regex-automata"
-version = "0.3.8"
+version = "0.4.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795"
+checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
 dependencies = [
  "aho-corasick",
  "memchr",
- "regex-syntax 0.7.5",
+ "regex-syntax 0.8.4",
 ]
 
 [[package]]
@@ -1889,9 +2151,19 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
 
 [[package]]
 name = "regex-syntax"
-version = "0.7.5"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
+checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
+
+[[package]]
+name = "resolv-conf"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00"
+dependencies = [
+ "hostname",
+ "quick-error",
+]
 
 [[package]]
 name = "ring"
@@ -1902,7 +2174,7 @@ dependencies = [
  "cc",
  "libc",
  "once_cell",
- "spin 0.5.2",
+ "spin",
  "untrusted 0.7.1",
  "web-sys",
  "winapi",
@@ -1910,9 +2182,9 @@ dependencies = [
 
 [[package]]
 name = "rustc-demangle"
-version = "0.1.23"
+version = "0.1.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
+checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
 
 [[package]]
 name = "rustc_version"
@@ -1925,28 +2197,28 @@ dependencies = [
 
 [[package]]
 name = "rustix"
-version = "0.38.14"
+version = "0.38.34"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "747c788e9ce8e92b12cd485c49ddf90723550b654b32508f979b71a7b1ecda4f"
+checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
 dependencies = [
- "bitflags 2.4.0",
+ "bitflags 2.6.0",
  "errno",
  "libc",
  "linux-raw-sys",
- "windows-sys",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "rustversion"
-version = "1.0.14"
+version = "1.0.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
+checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6"
 
 [[package]]
 name = "ryu"
-version = "1.0.15"
+version = "1.0.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
 
 [[package]]
 name = "same-file"
@@ -1964,36 +2236,59 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 
 [[package]]
+name = "security-framework"
+version = "2.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0"
+dependencies = [
+ "bitflags 2.6.0",
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
 name = "semver"
-version = "1.0.19"
+version = "1.0.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0"
+checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
 
 [[package]]
 name = "serde"
-version = "1.0.188"
+version = "1.0.203"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
+checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.188"
+version = "1.0.203"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
+checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.37",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "serde_json"
-version = "1.0.107"
+version = "1.0.120"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
+checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5"
 dependencies = [
  "itoa",
  "ryu",
@@ -2002,18 +2297,18 @@ dependencies = [
 
 [[package]]
 name = "sharded-slab"
-version = "0.1.4"
+version = "0.1.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
+checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
 dependencies = [
  "lazy_static",
 ]
 
 [[package]]
 name = "signal-hook-registry"
-version = "1.4.1"
+version = "1.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
 dependencies = [
  "libc",
 ]
@@ -2035,15 +2330,14 @@ dependencies = [
 
 [[package]]
 name = "smallvec"
-version = "1.11.1"
+version = "1.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
 
 [[package]]
 name = "smoltcp"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d2e3a36ac8fea7b94e666dfa3871063d6e0a5c9d5d4fec9a1a6b7b6760f0229"
+version = "0.11.0"
+source = "git+https://github.com/smoltcp-rs/smoltcp?rev=ef67e7b46cabf49783053cbf68d8671ed97ff8d4#ef67e7b46cabf49783053cbf68d8671ed97ff8d4"
 dependencies = [
  "bitflags 1.3.2",
  "byteorder",
@@ -2057,22 +2351,12 @@ dependencies = [
 
 [[package]]
 name = "socket2"
-version = "0.4.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
-dependencies = [
- "libc",
- "winapi",
-]
-
-[[package]]
-name = "socket2"
-version = "0.5.5"
+version = "0.5.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
+checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c"
 dependencies = [
  "libc",
- "windows-sys",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -2082,15 +2366,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
 
 [[package]]
-name = "spin"
-version = "0.9.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
-dependencies = [
- "lock_api",
-]
-
-[[package]]
 name = "stable_deref_trait"
 version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2098,9 +2373,9 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
 
 [[package]]
 name = "subtle"
-version = "2.5.0"
+version = "2.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
 
 [[package]]
 name = "syn"
@@ -2109,15 +2384,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
 dependencies = [
  "proc-macro2",
- "quote",
  "unicode-ident",
 ]
 
 [[package]]
 name = "syn"
-version = "2.0.37"
+version = "2.0.68"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
+checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2131,10 +2405,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
 
 [[package]]
+name = "sysinfo"
+version = "0.29.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd727fc423c2060f6c92d9534cef765c65a6ed3f428a03d7def74a8c4348e666"
+dependencies = [
+ "cfg-if",
+ "core-foundation-sys",
+ "libc",
+ "ntapi",
+ "once_cell",
+ "rayon",
+ "winapi",
+]
+
+[[package]]
 name = "tar"
-version = "0.4.40"
+version = "0.4.41"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb"
+checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909"
 dependencies = [
  "filetime",
  "libc",
@@ -2143,44 +2432,35 @@ dependencies = [
 
 [[package]]
 name = "target-lexicon"
-version = "0.12.11"
+version = "0.12.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a"
-
-[[package]]
-name = "termcolor"
-version = "1.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64"
-dependencies = [
- "winapi-util",
-]
+checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
 
 [[package]]
 name = "thiserror"
-version = "1.0.48"
+version = "1.0.61"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7"
+checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.48"
+version = "1.0.61"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35"
+checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.37",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "thread_local"
-version = "1.1.7"
+version = "1.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
+checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
 dependencies = [
  "cfg-if",
  "once_cell",
@@ -2188,9 +2468,9 @@ dependencies = [
 
 [[package]]
 name = "tiff"
-version = "0.9.0"
+version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d172b0f4d3fba17ba89811858b9d3d97f928aece846475bbda076ca46736211"
+checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e"
 dependencies = [
  "flate2",
  "jpeg-decoder",
@@ -2198,6 +2478,25 @@ dependencies = [
 ]
 
 [[package]]
+name = "time"
+version = "0.3.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
+dependencies = [
+ "deranged",
+ "num-conv",
+ "powerfmt",
+ "serde",
+ "time-core",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
+
+[[package]]
 name = "tinytemplate"
 version = "1.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2208,10 +2507,25 @@ dependencies = [
 ]
 
 [[package]]
+name = "tinyvec"
+version = "1.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c55115c6fbe2d2bef26eb09ad74bde02d8255476fc0c7b515ef09fbb35742d82"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
 name = "tokio"
-version = "1.34.0"
+version = "1.38.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9"
+checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a"
 dependencies = [
  "backtrace",
  "bytes",
@@ -2220,10 +2534,10 @@ dependencies = [
  "num_cpus",
  "pin-project-lite",
  "signal-hook-registry",
- "socket2 0.5.5",
+ "socket2",
  "tokio-macros",
  "tracing",
- "windows-sys",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
@@ -2238,20 +2552,20 @@ dependencies = [
 
 [[package]]
 name = "tokio-macros"
-version = "2.2.0"
+version = "2.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
+checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.37",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "tokio-stream"
-version = "0.1.14"
+version = "0.1.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842"
+checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af"
 dependencies = [
  "futures-core",
  "pin-project-lite",
@@ -2260,16 +2574,15 @@ dependencies = [
 
 [[package]]
 name = "tokio-util"
-version = "0.7.10"
+version = "0.7.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15"
+checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1"
 dependencies = [
  "bytes",
  "futures-core",
  "futures-sink",
  "pin-project-lite",
  "tokio",
- "tracing",
 ]
 
 [[package]]
@@ -2283,14 +2596,14 @@ dependencies = [
 
 [[package]]
 name = "tonic"
-version = "0.10.2"
+version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d560933a0de61cf715926b9cac824d4c883c2c43142f787595e48280c40a1d0e"
+checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13"
 dependencies = [
  "async-stream",
  "async-trait",
  "axum",
- "base64 0.21.4",
+ "base64 0.21.7",
  "bytes",
  "h2",
  "http",
@@ -2316,7 +2629,7 @@ checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
 dependencies = [
  "futures-core",
  "futures-util",
- "indexmap",
+ "indexmap 1.9.3",
  "pin-project",
  "pin-project-lite",
  "rand",
@@ -2342,11 +2655,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
 
 [[package]]
 name = "tracing"
-version = "0.1.37"
+version = "0.1.40"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
+checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
 dependencies = [
- "cfg-if",
  "pin-project-lite",
  "tracing-attributes",
  "tracing-core",
@@ -2354,20 +2666,20 @@ dependencies = [
 
 [[package]]
 name = "tracing-attributes"
-version = "0.1.26"
+version = "0.1.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
+checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.37",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "tracing-core"
-version = "0.1.31"
+version = "0.1.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a"
+checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
 dependencies = [
  "once_cell",
  "valuable",
@@ -2375,9 +2687,9 @@ dependencies = [
 
 [[package]]
 name = "tracing-subscriber"
-version = "0.3.17"
+version = "0.3.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77"
+checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
 dependencies = [
  "matchers",
  "once_cell",
@@ -2390,9 +2702,9 @@ dependencies = [
 
 [[package]]
 name = "try-lock"
-version = "0.2.4"
+version = "0.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
 
 [[package]]
 name = "typenum"
@@ -2401,16 +2713,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
 
 [[package]]
+name = "unicode-bidi"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
+
+[[package]]
 name = "unicode-ident"
 version = "1.0.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
 
 [[package]]
+name = "unicode-normalization"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
 name = "unindent"
-version = "0.1.11"
+version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1766d682d402817b5ac4490b3c3002d91dfa0d22812f341609f97b08757359c"
+checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce"
 
 [[package]]
 name = "universal-hash"
@@ -2435,6 +2762,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
 
 [[package]]
+name = "url"
+version = "2.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
+dependencies = [
+ "form_urlencoded",
+ "idna 0.5.0",
+ "percent-encoding",
+]
+
+[[package]]
+name = "utf8parse"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
+
+[[package]]
 name = "valuable"
 version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2448,9 +2792,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
 
 [[package]]
 name = "walkdir"
-version = "2.4.0"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
 dependencies = [
  "same-file",
  "winapi-util",
@@ -2473,9 +2817,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 
 [[package]]
 name = "wasm-bindgen"
-version = "0.2.87"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
+checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
 dependencies = [
  "cfg-if",
  "wasm-bindgen-macro",
@@ -2483,24 +2827,24 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.87"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
+checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
 dependencies = [
  "bumpalo",
  "log",
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.37",
+ "syn 2.0.68",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.87"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
+checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
 dependencies = [
  "quote",
  "wasm-bindgen-macro-support",
@@ -2508,28 +2852,28 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.87"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
+checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.37",
+ "syn 2.0.68",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.87"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
+checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
 
 [[package]]
 name = "web-sys"
-version = "0.3.64"
+version = "0.3.69"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b"
+checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef"
 dependencies = [
  "js-sys",
  "wasm-bindgen",
@@ -2537,9 +2881,15 @@ dependencies = [
 
 [[package]]
 name = "weezl"
-version = "0.1.7"
+version = "0.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb"
+checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082"
+
+[[package]]
+name = "widestring"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311"
 
 [[package]]
 name = "winapi"
@@ -2559,11 +2909,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
 
 [[package]]
 name = "winapi-util"
-version = "0.1.6"
+version = "0.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
+checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b"
 dependencies = [
- "winapi",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -2606,26 +2956,51 @@ dependencies = [
 
 [[package]]
 name = "windows"
-version = "0.52.0"
+version = "0.57.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
+checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143"
 dependencies = [
  "windows-core",
- "windows-targets 0.52.0",
+ "windows-targets 0.52.5",
 ]
 
 [[package]]
 name = "windows-core"
-version = "0.52.0"
+version = "0.57.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d"
 dependencies = [
- "windows-targets 0.52.0",
+ "windows-implement",
+ "windows-interface",
+ "windows-result",
+ "windows-targets 0.52.5",
+]
+
+[[package]]
+name = "windows-implement"
+version = "0.57.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.68",
+]
+
+[[package]]
+name = "windows-interface"
+version = "0.57.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.68",
 ]
 
 [[package]]
 name = "windows-redirector"
-version = "0.5.1"
+version = "0.6.3"
 dependencies = [
  "anyhow",
  "env_logger",
@@ -2641,6 +3016,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "windows-result"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8"
+dependencies = [
+ "windows-targets 0.52.5",
+]
+
+[[package]]
 name = "windows-sys"
 version = "0.48.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2650,6 +3034,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.5",
+]
+
+[[package]]
 name = "windows-targets"
 version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2666,17 +3059,18 @@ dependencies = [
 
 [[package]]
 name = "windows-targets"
-version = "0.52.0"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
+checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
 dependencies = [
- "windows_aarch64_gnullvm 0.52.0",
- "windows_aarch64_msvc 0.52.0",
- "windows_i686_gnu 0.52.0",
- "windows_i686_msvc 0.52.0",
- "windows_x86_64_gnu 0.52.0",
- "windows_x86_64_gnullvm 0.52.0",
- "windows_x86_64_msvc 0.52.0",
+ "windows_aarch64_gnullvm 0.52.5",
+ "windows_aarch64_msvc 0.52.5",
+ "windows_i686_gnu 0.52.5",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc 0.52.5",
+ "windows_x86_64_gnu 0.52.5",
+ "windows_x86_64_gnullvm 0.52.5",
+ "windows_x86_64_msvc 0.52.5",
 ]
 
 [[package]]
@@ -2687,9 +3081,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.52.0"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
+checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
 
 [[package]]
 name = "windows_aarch64_msvc"
@@ -2699,9 +3093,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.52.0"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
+checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
 
 [[package]]
 name = "windows_i686_gnu"
@@ -2711,9 +3105,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.52.0"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
+checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
 
 [[package]]
 name = "windows_i686_msvc"
@@ -2723,9 +3123,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.52.0"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
+checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
 
 [[package]]
 name = "windows_x86_64_gnu"
@@ -2735,9 +3135,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.52.0"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
+checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
@@ -2747,9 +3147,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
-version = "0.52.0"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
+checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
 
 [[package]]
 name = "windows_x86_64_msvc"
@@ -2759,9 +3159,19 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.52.0"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
+checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
+
+[[package]]
+name = "winreg"
+version = "0.50.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.48.0",
+]
 
 [[package]]
 name = "winres"
@@ -2786,18 +3196,20 @@ dependencies = [
 
 [[package]]
 name = "xattr"
-version = "1.0.1"
+version = "1.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985"
+checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f"
 dependencies = [
  "libc",
+ "linux-raw-sys",
+ "rustix",
 ]
 
 [[package]]
 name = "zeroize"
-version = "1.6.0"
+version = "1.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9"
+checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
 dependencies = [
  "zeroize_derive",
 ]
@@ -2810,14 +3222,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.37",
-]
-
-[[package]]
-name = "zune-inflate"
-version = "0.2.54"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02"
-dependencies = [
- "simd-adler32",
+ "syn 2.0.68",
 ]
diff --git a/pkgs/development/python-modules/mitmproxy-rs/default.nix b/pkgs/development/python-modules/mitmproxy-rs/default.nix
index fe7fb4c178e05..cbe1442da06b8 100644
--- a/pkgs/development/python-modules/mitmproxy-rs/default.nix
+++ b/pkgs/development/python-modules/mitmproxy-rs/default.nix
@@ -1,26 +1,31 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, rustPlatform
-, darwin
-, libiconv
-, mitmproxy-macos
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  rustPlatform,
+  darwin,
+  libiconv,
+  mitmproxy,
+  mitmproxy-macos,
 }:
 
 buildPythonPackage rec {
   pname = "mitmproxy-rs";
-  version = "0.5.1";
+  version = "0.6.3";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "mitmproxy";
     repo = "mitmproxy_rs";
     rev = version;
-    hash = "sha256-nrm1T2yaGVmYsubwNJHPnPDC/A/jYiKVzwBKmuc9MD4=";
+    hash = "sha256-rnM2MNJ9ZVmwFjhXU8kPEQjpqNIzVZ3bVtm43WvGj5E=";
   };
 
   cargoDeps = rustPlatform.importCargoLock {
+    outputHashes = {
+      "smoltcp-0.11.0" = "sha256-KC9nTKd2gfZ1ICjrkLK//M2bbqYlfcCK18gBdN0RqWQ=";
+    };
     lockFile = ./Cargo.lock;
   };
 
@@ -31,7 +36,7 @@ buildPythonPackage rec {
     rustPlatform.maturinBuildHook
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
     darwin.apple_sdk.frameworks.Security
     libiconv
     mitmproxy-macos
@@ -40,10 +45,10 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "mitmproxy_rs" ];
 
   meta = with lib; {
-    description = "The Rust bits in mitmproxy";
+    description = "Rust bits in mitmproxy";
     homepage = "https://github.com/mitmproxy/mitmproxy_rs";
-    changelog = "https://github.com/mitmproxy/mitmproxy_rs/blob/${src.rev}/CHANGELOG.md";
+    changelog = "https://github.com/mitmproxy/mitmproxy_rs/blob/${src.rev}/CHANGELOG.md#${lib.replaceStrings ["."] [""] version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ fab ];
+    inherit (mitmproxy.meta) maintainers;
   };
 }
diff --git a/pkgs/development/python-modules/mitmproxy/default.nix b/pkgs/development/python-modules/mitmproxy/default.nix
index 8de8d9b8260d6..5e01020bb21fd 100644
--- a/pkgs/development/python-modules/mitmproxy/default.nix
+++ b/pkgs/development/python-modules/mitmproxy/default.nix
@@ -1,51 +1,51 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
   # Mitmproxy requirements
-, aioquic
-, asgiref
-, blinker
-, brotli
-, certifi
-, cryptography
-, flask
-, h11
-, h2
-, hyperframe
-, kaitaistruct
-, ldap3
-, mitmproxy-macos
-, mitmproxy-rs
-, msgpack
-, passlib
-, protobuf
-, publicsuffix2
-, pyopenssl
-, pyparsing
-, pyperclip
-, ruamel-yaml
-, setuptools
-, sortedcontainers
-, tornado
-, urwid-mitmproxy
-, wsproto
-, zstandard
+  aioquic,
+  asgiref,
+  blinker,
+  brotli,
+  certifi,
+  cryptography,
+  flask,
+  h11,
+  h2,
+  hyperframe,
+  kaitaistruct,
+  ldap3,
+  mitmproxy-macos,
+  mitmproxy-rs,
+  msgpack,
+  passlib,
+  protobuf5,
+  publicsuffix2,
+  pyopenssl,
+  pyparsing,
+  pyperclip,
+  ruamel-yaml,
+  setuptools,
+  sortedcontainers,
+  tornado,
+  urwid,
+  wsproto,
+  zstandard,
   # Additional check requirements
-, hypothesis
-, parver
-, pytest-asyncio
-, pytest-timeout
-, pytest-xdist
-, pytestCheckHook
-, requests
+  hypothesis,
+  parver,
+  pytest-asyncio,
+  pytest-timeout,
+  pytest-xdist,
+  pytestCheckHook,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "mitmproxy";
-  version = "10.3.0";
+  version = "10.4.2";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -53,17 +53,14 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "mitmproxy";
     repo = "mitmproxy";
-    rev = "refs/tags/${version}";
-    hash = "sha256-YjvGsnpQQ8GWLyKmnd3lOxesnr+F2xCNXyahZh0JQnc=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-1OMVgV6dFKoG/upv+RWbYqftqejeQLBlsycuy2+Na6E=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   pythonRelaxDeps = [
-    "aioquic"
-    "cryptography"
+    "protobuf"
+    "urwid"
   ];
 
   propagatedBuildInputs = [
@@ -82,7 +79,7 @@ buildPythonPackage rec {
     mitmproxy-rs
     msgpack
     passlib
-    protobuf
+    protobuf5
     publicsuffix2
     pyopenssl
     pyparsing
@@ -91,12 +88,10 @@ buildPythonPackage rec {
     setuptools
     sortedcontainers
     tornado
-    urwid-mitmproxy
+    urwid
     wsproto
     zstandard
-  ] ++ lib.optionals stdenv.isDarwin [
-    mitmproxy-macos
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ mitmproxy-macos ];
 
   nativeCheckInputs = [
     hypothesis
@@ -129,6 +124,23 @@ buildPythonPackage rec {
     # FileNotFoundError: [Errno 2] No such file or directory
     # likely wireguard is also not working in the sandbox
     "test_wireguard"
+    # test require a DNS server
+    # RuntimeError: failed to get dns servers: io error: entity not found
+    "test_errorcheck"
+    "test_errorcheck"
+    "test_dns"
+    "test_order"
+  ];
+
+  disabledTestPaths = [
+    # test require a DNS server
+    # RuntimeError: failed to get dns servers: io error: entity not found
+    "test/mitmproxy/addons/test_dns_resolver.py"
+    "test/mitmproxy/tools/test_dump.py"
+    "test/mitmproxy/tools/test_main.py"
+    "test/mitmproxy/tools/web/test_app.py"
+    "test/mitmproxy/tools/web/test_app.py" # 2 out of 31 tests work
+    "test/mitmproxy/tools/web/test_master.py"
   ];
 
   dontUsePytestXdist = true;
diff --git a/pkgs/development/python-modules/mitogen/default.nix b/pkgs/development/python-modules/mitogen/default.nix
index a7de51b4f8cb1..1e159a90fd1a5 100644
--- a/pkgs/development/python-modules/mitogen/default.nix
+++ b/pkgs/development/python-modules/mitogen/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "mitogen";
-  version = "0.3.7";
+  version = "0.3.10";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "mitogen-hq";
     repo = "mitogen";
     rev = "refs/tags/v${version}";
-    hash = "sha256-RcgAyBF5qNw8Hp//aq6UuvElhUjJXS+ySSXsSweyFXE=";
+    hash = "sha256-ndT5bAiUpjkgD2oeS0s/u69a4bBHI4zoXbudcWogTAU=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/mixbox/default.nix b/pkgs/development/python-modules/mixbox/default.nix
new file mode 100644
index 0000000000000..7e348f8bc6762
--- /dev/null
+++ b/pkgs/development/python-modules/mixbox/default.nix
@@ -0,0 +1,54 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxml,
+  ordered-set,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "mixbox";
+  version = "1.0.5";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "CybOXProject";
+    repo = "mixbox";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-qK3cKOf0s345M1pVFro5NFhDj4lch12UegOY1ZUEOBQ=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    lxml
+    ordered-set
+    python-dateutil
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "mixbox" ];
+
+  pytestFlagsArray = [ "test/*.py" ];
+
+  disabledTests = [
+    # Tests are out-dated
+    "test_serialize_datetime_as_date"
+    "test_preferred_prefixes"
+  ];
+
+  meta = {
+    description = "Library of common code leveraged by cybox, maec and stix";
+    homepage = "https://github.com/CybOXProject/mixbox";
+    changelog = "https://github.com/CybOXProject/mixbox/releases/tag/v${version}";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/mixins/default.nix b/pkgs/development/python-modules/mixins/default.nix
index 46af556fd11af..655f129b8ab68 100644
--- a/pkgs/development/python-modules/mixins/default.nix
+++ b/pkgs/development/python-modules/mixins/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -10,12 +11,10 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-SmYYRzo6wClQBMc2oRgO0CQEHOxWe8GFL24TPa6A4NQ=";
+    hash = "sha256-SmYYRzo6wClQBMc2oRgO0CQEHOxWe8GFL24TPa6A4NQ=";
   };
 
-  pythonImportsCheck = [
-    "mixins"
-  ];
+  pythonImportsCheck = [ "mixins" ];
 
   meta = with lib; {
     homepage = "https://github.com/nickderobertis/py-mixins";
diff --git a/pkgs/development/python-modules/mixpanel/default.nix b/pkgs/development/python-modules/mixpanel/default.nix
index 64e1f45d29de2..12f3cf9dd13bf 100644
--- a/pkgs/development/python-modules/mixpanel/default.nix
+++ b/pkgs/development/python-modules/mixpanel/default.nix
@@ -1,16 +1,16 @@
-
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-
-# Python Dependencies
-, six
-, urllib3
-, requests
-
-# tests
-, pytestCheckHook
-, responses
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+
+  # Python Dependencies
+  six,
+  urllib3,
+  requests,
+
+  # tests
+  pytestCheckHook,
+  responses,
 }:
 
 buildPythonPackage rec {
@@ -40,8 +40,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/mixpanel/mixpanel-python";
     description = "Official Mixpanel Python library";
     license = licenses.asl20;
-    maintainers = with maintainers; [
-      kamadorueda
-    ];
+    maintainers = with maintainers; [ kamadorueda ];
   };
 }
diff --git a/pkgs/development/python-modules/mizani/default.nix b/pkgs/development/python-modules/mizani/default.nix
index f6761ad445f9b..92ced96774e0b 100644
--- a/pkgs/development/python-modules/mizani/default.nix
+++ b/pkgs/development/python-modules/mizani/default.nix
@@ -1,58 +1,59 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, matplotlib
-, palettable
-, pandas
-, pytestCheckHook
-, pythonOlder
-, scipy
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools-scm,
+
+  # dependencies
+  matplotlib,
+  palettable,
+  pandas,
+  scipy,
+
+  # checks
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "mizani";
-  version = "0.11.2";
+  version = "0.12.2";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "has2k1";
     repo = "mizani";
     rev = "refs/tags/v${version}";
-    hash = "sha256-tOydQvRZcY052Xh98NbFUezc55JJ8LRj0REIAzpcCp0=";
+    hash = "sha256-aTc8LC/2zLrrTfOXABWs049m752PctpvlguA6qhyhp8=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     matplotlib
     palettable
     pandas
     scipy
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace " --cov=mizani --cov-report=xml" ""
   '';
 
-  pythonImportsCheck = [
-    "mizani"
-  ];
+  pythonImportsCheck = [ "mizani" ];
 
-  meta = with lib; {
+  meta = {
     description = "Scales for Python";
     homepage = "https://github.com/has2k1/mizani";
     changelog = "https://github.com/has2k1/mizani/releases/tag/v${version}";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ samuela ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ samuela ];
   };
 }
diff --git a/pkgs/development/python-modules/mkdocs-autolinks-plugin/default.nix b/pkgs/development/python-modules/mkdocs-autolinks-plugin/default.nix
index 35d3e5c9cc165..c837ff25ceb67 100644
--- a/pkgs/development/python-modules/mkdocs-autolinks-plugin/default.nix
+++ b/pkgs/development/python-modules/mkdocs-autolinks-plugin/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mkdocs
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mkdocs,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "mkdocs-autolinks-plugin";
-  version = "0.7.1";
+  version = "071";
   pyproject = true;
   disabled = pythonOlder "3.8";
 
@@ -16,13 +17,11 @@ buildPythonPackage rec {
     owner = "zachhannum";
     repo = "mkdocs-autolinks-plugin";
     # The commit messages mention version 0.7.1, but the tag is v_071.
-    rev = "e2b649eb4db23459bcec121838f27c92c81f9ce1";
+    rev = "refs/tags/v_${version}";
     hash = "sha256-mEbuB9VwK7po1TqtJfBSkItOVlI3/W3nD2LYRHgPpTA=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [ mkdocs ];
 
@@ -32,7 +31,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "mkdocs_autolinks_plugin" ];
 
   meta = with lib; {
-    description = "An MkDocs plugin that simplifies relative linking between documents";
+    description = "MkDocs plugin that simplifies relative linking between documents";
     homepage = "https://github.com/zachhannum/mkdocs-autolinks-plugin";
     license = licenses.mit;
     maintainers = with maintainers; [ lucas-deangelis ];
diff --git a/pkgs/development/python-modules/mkdocs-autorefs/default.nix b/pkgs/development/python-modules/mkdocs-autorefs/default.nix
index 4fedc2ff0ff32..a13ab343e6e73 100644
--- a/pkgs/development/python-modules/mkdocs-autorefs/default.nix
+++ b/pkgs/development/python-modules/mkdocs-autorefs/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, markdown
-, mkdocs
-, pytestCheckHook
-, pdm-backend
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  markdown,
+  mkdocs,
+  pytestCheckHook,
+  pdm-backend,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "mkdocs-autorefs";
-  version = "1.0.1";
-  format = "pyproject";
+  version = "1.2.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -19,7 +20,7 @@ buildPythonPackage rec {
     owner = "mkdocstrings";
     repo = "autorefs";
     rev = "refs/tags/${version}";
-    hash = "sha256-YORrIQ+iZQZ1U/fe/IH3B/5gN0QxQF73s9vF6qvKL7Q=";
+    hash = "sha256-C1ca7tx9s88U7Xp/bd3KhlWeb32a612RyCVBQz0vJ1g=";
   };
 
   postPatch = ''
@@ -27,18 +28,14 @@ buildPythonPackage rec {
       --replace 'dynamic = ["version"]' 'version = "${version}"'
   '';
 
-  nativeBuildInputs = [
-    pdm-backend
-  ];
+  build-system = [ pdm-backend ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     markdown
     mkdocs
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # missing pymdownx
@@ -46,9 +43,7 @@ buildPythonPackage rec {
     "test_reference_implicit_with_code_inlinehilite_python"
   ];
 
-  pythonImportsCheck = [
-    "mkdocs_autorefs"
-  ];
+  pythonImportsCheck = [ "mkdocs_autorefs" ];
 
   meta = with lib; {
     description = "Automatically link across pages in MkDocs";
diff --git a/pkgs/development/python-modules/mkdocs-awesome-pages-plugin/default.nix b/pkgs/development/python-modules/mkdocs-awesome-pages-plugin/default.nix
new file mode 100644
index 0000000000000..8799dfcd380a8
--- /dev/null
+++ b/pkgs/development/python-modules/mkdocs-awesome-pages-plugin/default.nix
@@ -0,0 +1,51 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  mkdocs,
+  wcmatch,
+  natsort,
+  pytestCheckHook,
+  beautifulsoup4,
+  mock-open,
+  importlib-metadata,
+  pythonOlder,
+}:
+buildPythonPackage rec {
+  pname = "mkdocs-awesome-pages-plugin";
+  version = "2.9.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "lukasgeiter";
+    repo = "mkdocs-awesome-pages-plugin";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-jDPoMAJ20n9bQu11CRNvKLQthRUh3+jR6t+fM3+vGzY=";
+  };
+
+  propagatedBuildInputs = [
+    mkdocs
+    wcmatch
+    natsort
+  ];
+
+  nativeBuildInputs = [poetry-core];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    beautifulsoup4
+    mock-open
+    importlib-metadata
+  ];
+
+  meta = with lib; {
+    description = "An MkDocs plugin that simplifies configuring page titles and their order";
+    homepage = "https://github.com/lukasgeiter/mkdocs-awesome-pages-plugin";
+    changelog = "https://github.com/lukasgeiter/mkdocs-awesome-pages-plugin/blob/v${version}/CHANGELOG";
+    license = licenses.mit;
+    maintainers = with maintainers; [phaer];
+  };
+}
diff --git a/pkgs/development/python-modules/mkdocs-drawio-exporter/default.nix b/pkgs/development/python-modules/mkdocs-drawio-exporter/default.nix
index 2227b8b4f8738..76807fa2df397 100644
--- a/pkgs/development/python-modules/mkdocs-drawio-exporter/default.nix
+++ b/pkgs/development/python-modules/mkdocs-drawio-exporter/default.nix
@@ -1,29 +1,41 @@
-{ buildPythonPackage
-, drawio-headless
-, fetchPypi
-, isPy3k
-, lib
-, mkdocs
+{
+  buildPythonPackage,
+  drawio-headless,
+  fetchPypi,
+  isPy3k,
+  lib,
+  mkdocs,
+  poetry-core,
+  livereload,
+  tornado,
 }:
 
 buildPythonPackage rec {
   pname = "mkdocs-drawio-exporter";
-  version = "0.8.0";
-  format = "setuptools";
+  version = "0.9.1";
+  pyproject = true;
 
   disabled = !isPy3k;
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-9cvA186FS6bHmpOrv4OfPZ5kRfgfafBfaWxgWJIlwwA=";
+    pname = "mkdocs_drawio_exporter";
+    inherit version;
+    hash = "sha256-x8X8hvN/tL8C6VhgMCEHDh2hILjBoyLgQfsFD1+qXgo=";
   };
 
-  propagatedBuildInputs = [ mkdocs drawio-headless ];
+  build-system = [ poetry-core ];
 
-  pythonImportsCheck = [ "mkdocsdrawioexporter" ];
+  dependencies = [
+    mkdocs
+    drawio-headless
+    livereload
+    tornado
+  ];
+
+  pythonImportsCheck = [ "mkdocs_drawio_exporter" ];
 
   meta = with lib; {
-    description = "Exports your Draw.io diagrams at build time for easier embedding into your documentation.";
+    description = "Exports your Draw.io diagrams at build time for easier embedding into your documentation";
     homepage = "https://github.com/LukeCarrier/mkdocs-drawio-exporter/";
     license = licenses.mit;
     maintainers = with maintainers; [ snpschaaf ];
diff --git a/pkgs/development/python-modules/mkdocs-exclude/default.nix b/pkgs/development/python-modules/mkdocs-exclude/default.nix
index 5e2e32a9d6bbf..431eeb44cc53a 100644
--- a/pkgs/development/python-modules/mkdocs-exclude/default.nix
+++ b/pkgs/development/python-modules/mkdocs-exclude/default.nix
@@ -1,8 +1,8 @@
-{ lib
-, callPackage
-, buildPythonPackage
-, fetchFromGitHub
-, mkdocs
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mkdocs,
 }:
 
 buildPythonPackage rec {
@@ -30,7 +30,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A mkdocs plugin to exclude files from input using globs or regexes.";
+    description = "Mkdocs plugin to exclude files from input using globs or regexes";
     homepage = "https://github.com/apenwarr/mkdocs-exclude";
     license = licenses.asl20;
     maintainers = with maintainers; [ kaction ];
diff --git a/pkgs/development/python-modules/mkdocs-get-deps/default.nix b/pkgs/development/python-modules/mkdocs-get-deps/default.nix
new file mode 100644
index 0000000000000..3b36dfb7fea22
--- /dev/null
+++ b/pkgs/development/python-modules/mkdocs-get-deps/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, hatchling
+, importlib-metadata
+, mergedeep
+, platformdirs
+, pyyaml
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "mkdocs-get-deps";
+  version = "0.2.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "mkdocs";
+    repo = "get-deps";
+    rev = "v${version}";
+    hash = "sha256-DahmSYWYhVch950InYBiCh6qz1pH2Kibf5ixwCNdsTg=";
+  };
+
+  build-system = [ hatchling ];
+
+  dependencies = [
+    importlib-metadata
+    mergedeep
+    platformdirs
+    pyyaml
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook  ];
+
+  pythonImportsCheck = [ "mkdocs_get_deps" ];
+
+  meta = with lib; {
+    description = "An extra command for MkDocs that infers required PyPI packages from `plugins` in mkdocs.yml";
+    homepage = "https://github.com/mkdocs/get-deps";
+    license = licenses.mit;
+    maintainers = [ ];
+  };
+}
diff --git a/pkgs/development/python-modules/mkdocs-git-authors-plugin/default.nix b/pkgs/development/python-modules/mkdocs-git-authors-plugin/default.nix
index 01eb0fa2375e4..0c346aac1d0ce 100644
--- a/pkgs/development/python-modules/mkdocs-git-authors-plugin/default.nix
+++ b/pkgs/development/python-modules/mkdocs-git-authors-plugin/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, mkdocs
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  mkdocs,
 }:
 
 buildPythonPackage rec {
   pname = "mkdocs-git-authors-plugin";
-  version = "0.8.0";
+  version = "0.9.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -16,7 +17,7 @@ buildPythonPackage rec {
     owner = "timvink";
     repo = "mkdocs-git-authors-plugin";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ie6kDrj7ulmdQ7w3n7MnKgIWs321uPFxpQC3DNUGsTg=";
+    hash = "sha256-UomcEXWNt5aVE9JxP9wskkHkFYXKN/+jXwr1SXCmeyE=";
   };
 
   propagatedBuildInputs = [ mkdocs ];
diff --git a/pkgs/development/python-modules/mkdocs-git-revision-date-localized-plugin/default.nix b/pkgs/development/python-modules/mkdocs-git-revision-date-localized-plugin/default.nix
index c885727a25384..26afc10604c56 100644
--- a/pkgs/development/python-modules/mkdocs-git-revision-date-localized-plugin/default.nix
+++ b/pkgs/development/python-modules/mkdocs-git-revision-date-localized-plugin/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, babel
-, gitpython
-, mkdocs
-, pytz
-, pytestCheckHook
-, git
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  babel,
+  gitpython,
+  mkdocs,
+  pytz,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "mkdocs-git-revision-date-localized-plugin";
-  version = "1.2.4";
+  version = "1.2.7";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "timvink";
     repo = "mkdocs-git-revision-date-localized-plugin";
     rev = "refs/tags/v${version}";
-    hash = "sha256-sN3cuRjB3zkwp0xYoH20IJ8edXqi5rw66e3N4DuNqVU=";
+    hash = "sha256-dzFxNAVBQ5a4opdxSz42VCns49DlZyrglUaQTzfLnW8=";
   };
 
   propagatedBuildInputs = [
@@ -33,9 +33,7 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTestPaths = [
-    "tests/test_builds.py"
-  ];
+  disabledTestPaths = [ "tests/test_builds.py" ];
 
   pythonImportsCheck = [ "mkdocs_git_revision_date_localized_plugin" ];
 
diff --git a/pkgs/development/python-modules/mkdocs-gitlab-plugin/default.nix b/pkgs/development/python-modules/mkdocs-gitlab-plugin/default.nix
index b88da4eb1e4d5..45b87d4ba3f89 100644
--- a/pkgs/development/python-modules/mkdocs-gitlab-plugin/default.nix
+++ b/pkgs/development/python-modules/mkdocs-gitlab-plugin/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, fetchzip
-, isPy3k
-, lib
-, mkdocs
+{
+  buildPythonPackage,
+  fetchzip,
+  isPy3k,
+  lib,
+  mkdocs,
 }:
 
 buildPythonPackage rec {
@@ -24,7 +25,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "mkdocs_gitlab_plugin" ];
 
   meta = with lib; {
-    description = "MkDocs plugin to transform strings such as #1234, %56, or !789 into links to a Gitlab repository.";
+    description = "MkDocs plugin to transform strings such as #1234, %56, or !789 into links to a Gitlab repository";
     homepage = "https://gitlab.inria.fr/vidjil/mkdocs-gitlab-plugin";
     license = licenses.mit;
     maintainers = with maintainers; [ snpschaaf ];
diff --git a/pkgs/development/python-modules/mkdocs-jupyter/default.nix b/pkgs/development/python-modules/mkdocs-jupyter/default.nix
index a83899c6c74c7..dd0c300ab1754 100644
--- a/pkgs/development/python-modules/mkdocs-jupyter/default.nix
+++ b/pkgs/development/python-modules/mkdocs-jupyter/default.nix
@@ -1,47 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatchling
-, ipykernel
-, jupytext
-, mkdocs
-, mkdocs-material
-, nbconvert
-, pygments
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  ipykernel,
+  jupytext,
+  mkdocs,
+  mkdocs-material,
+  nbconvert,
+  pygments,
+  pytestCheckHook,
+  pytest-cov-stub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "mkdocs-jupyter";
-  version = "0.24.6";
-  format = "pyproject";
+  version = "0.25.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     pname = "mkdocs_jupyter";
     inherit version;
-    hash = "sha256-ify+ipUjhk1UFt4aYHEWQLa8KXInnSrfRu0ndsLZ/3w=";
+    hash = "sha256-4mwdNBkWvFf5bqP5PY0KiPx3yH1M7iIvZtIAd5jZJPU=";
   };
 
-  postPatch = ''
-    sed -i "/--cov/d" pyproject.toml
-    substituteInPlace src/mkdocs_jupyter/tests/test_base_usage.py \
-      --replace "[\"mkdocs\"," "[\"${mkdocs.out}/bin/mkdocs\","
-  '';
+  pythonRelaxDeps = [ "nbconvert" ];
 
-  pythonRelaxDeps = [
-    "nbconvert"
-  ];
-
-  nativeBuildInputs = [
-    hatchling
-    pythonRelaxDepsHook
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     ipykernel
     jupytext
     mkdocs
@@ -52,11 +42,12 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
   ];
 
-  pythonImportsCheck = [
-    "mkdocs_jupyter"
-  ];
+  pythonImportsCheck = [ "mkdocs_jupyter" ];
+
+  __darwinAllowLocalNetworking = true;
 
   meta = with lib; {
     description = "Use Jupyter Notebook in mkdocs";
diff --git a/pkgs/development/python-modules/mkdocs-linkcheck/default.nix b/pkgs/development/python-modules/mkdocs-linkcheck/default.nix
index 18d9a9a9ab299..e03215565300b 100644
--- a/pkgs/development/python-modules/mkdocs-linkcheck/default.nix
+++ b/pkgs/development/python-modules/mkdocs-linkcheck/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pythonPackages
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pythonPackages,
 }:
 
 buildPythonPackage rec {
@@ -15,7 +16,7 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "byrnereese";
     repo = "linkchecker-mkdocs";
-    rev = "a75d765b0ec564e5ed0218880ed0b5ab4b973917" ;
+    rev = "a75d765b0ec564e5ed0218880ed0b5ab4b973917";
     hash = "sha256-z59F7zUKZKIQSiTlE6wGbGDecPMeruNgltWUYfDf8jY=";
   };
 
diff --git a/pkgs/development/python-modules/mkdocs-macros/default.nix b/pkgs/development/python-modules/mkdocs-macros/default.nix
index 50f88efcdf29f..bc73fe8848e13 100644
--- a/pkgs/development/python-modules/mkdocs-macros/default.nix
+++ b/pkgs/development/python-modules/mkdocs-macros/default.nix
@@ -1,16 +1,13 @@
-{ lib
-, callPackage
-, buildPythonPackage
-, fetchPypi
-, mkdocs
-, mkdocs-macros
-, mkdocs-material
-, jinja2
-, python-dateutil
-, termcolor
-, pyyaml
-, runCommand
-, setuptools
+{
+  lib,
+  callPackage,
+  buildPythonPackage,
+  fetchPypi,
+  mkdocs,
+  jinja2,
+  python-dateutil,
+  termcolor,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +16,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-/jSNdfAckR82K22ZjFez2FtQWHbd5p25JPLFEsOVwyg=";
+    hash = "sha256-/jSNdfAckR82K22ZjFez2FtQWHbd5p25JPLFEsOVwyg=";
   };
 
   propagatedBuildInputs = [
@@ -36,7 +33,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/fralau/mkdocs_macros_plugin";
-    description = "Create richer and more beautiful pages in MkDocs, by using variables and calls to macros in the markdown code.";
+    description = "Create richer and more beautiful pages in MkDocs, by using variables and calls to macros in the markdown code";
     license = licenses.mit;
     maintainers = with maintainers; [ tljuniper ];
   };
diff --git a/pkgs/development/python-modules/mkdocs-macros/mkdocs-macros-test.nix b/pkgs/development/python-modules/mkdocs-macros/mkdocs-macros-test.nix
index 8a53933b19af6..75e935d9469c3 100644
--- a/pkgs/development/python-modules/mkdocs-macros/mkdocs-macros-test.nix
+++ b/pkgs/development/python-modules/mkdocs-macros/mkdocs-macros-test.nix
@@ -1,9 +1,7 @@
-{ lib
-, callPackage
-, buildPythonPackage
-, fetchPypi
-, runCommand
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 # Is required for properly testing mkdocs-macros
diff --git a/pkgs/development/python-modules/mkdocs-macros/tests.nix b/pkgs/development/python-modules/mkdocs-macros/tests.nix
index 5ddcd26e0dab3..f758b6ac77454 100644
--- a/pkgs/development/python-modules/mkdocs-macros/tests.nix
+++ b/pkgs/development/python-modules/mkdocs-macros/tests.nix
@@ -1,9 +1,10 @@
-{ setuptools
-, mkdocs
-, mkdocs-macros
-, mkdocs-material
-, runCommand
-, callPackage
+{
+  setuptools,
+  mkdocs,
+  mkdocs-macros,
+  mkdocs-material,
+  runCommand,
+  callPackage,
 }:
 
 let
diff --git a/pkgs/development/python-modules/mkdocs-material/default.nix b/pkgs/development/python-modules/mkdocs-material/default.nix
index f344a92445ab6..45b009ad9293c 100644
--- a/pkgs/development/python-modules/mkdocs-material/default.nix
+++ b/pkgs/development/python-modules/mkdocs-material/default.nix
@@ -28,7 +28,7 @@
 
 buildPythonPackage rec {
   pname = "mkdocs-material";
-  version = "9.5.18";
+  version = "9.5.35";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -37,7 +37,7 @@ buildPythonPackage rec {
     owner = "squidfunk";
     repo = "mkdocs-material";
     rev = "refs/tags/${version}";
-    hash = "sha256-5FCIDAWRY6YfZi4QbcEpJMFfbJ17vudxlUYx4czDxrY=";
+    hash = "sha256-iiukdgkC2B8xWf8abtiSWjEBiCwk/2+1iJqkV9d43VQ=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/mkdocs-material/mkdocs-material-extensions.nix b/pkgs/development/python-modules/mkdocs-material/mkdocs-material-extensions.nix
index 239d3507d59b3..0dd9c1d32b61d 100644
--- a/pkgs/development/python-modules/mkdocs-material/mkdocs-material-extensions.nix
+++ b/pkgs/development/python-modules/mkdocs-material/mkdocs-material-extensions.nix
@@ -1,7 +1,8 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, hatchling
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  hatchling,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-/jU30Ol10/4haR3ZPJWZ3iWRfXG/RUOU1oclOYGjjAY=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   doCheck = false; # Circular dependency
 
diff --git a/pkgs/development/python-modules/mkdocs-mermaid2-plugin/default.nix b/pkgs/development/python-modules/mkdocs-mermaid2-plugin/default.nix
index 86037b0c18ec8..0056beaa92225 100644
--- a/pkgs/development/python-modules/mkdocs-mermaid2-plugin/default.nix
+++ b/pkgs/development/python-modules/mkdocs-mermaid2-plugin/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, beautifulsoup4
-, jsbeautifier
-, mkdocs
-, mkdocs-material
-, pymdown-extensions
-, pyyaml
-, requests
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  beautifulsoup4,
+  jsbeautifier,
+  mkdocs,
+  mkdocs-material,
+  pymdown-extensions,
+  pyyaml,
+  requests,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -38,15 +39,13 @@ buildPythonPackage rec {
   # non-traditional python tests (e.g. nodejs based tests)
   doCheck = false;
 
-  pythonImportsCheck = [
-    "mermaid2"
-  ];
+  pythonImportsCheck = [ "mermaid2" ];
 
   meta = with lib; {
-    description = "A MkDocs plugin for including mermaid graphs in markdown sources";
+    description = "MkDocs plugin for including mermaid graphs in markdown sources";
     homepage = "https://github.com/fralau/mkdocs-mermaid2-plugin";
     changelog = "https://github.com/fralau/mkdocs-mermaid2-plugin/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/mkdocs-minify-plugin/default.nix b/pkgs/development/python-modules/mkdocs-minify-plugin/default.nix
index dbb09cc5795b9..cf52a5b436bd3 100644
--- a/pkgs/development/python-modules/mkdocs-minify-plugin/default.nix
+++ b/pkgs/development/python-modules/mkdocs-minify-plugin/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mkdocs
-, csscompressor
-, htmlmin
-, jsmin
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mkdocs,
+  csscompressor,
+  htmlmin,
+  jsmin,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -38,7 +39,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "mkdocs" ];
 
   meta = with lib; {
-    description = "A mkdocs plugin to minify the HTML of a page before it is written to disk.";
+    description = "Mkdocs plugin to minify the HTML of a page before it is written to disk";
     homepage = "https://github.com/byrnereese/mkdocs-minify-plugin";
     license = licenses.mit;
     maintainers = with maintainers; [ tfc ];
diff --git a/pkgs/development/python-modules/mkdocs-redirects/default.nix b/pkgs/development/python-modules/mkdocs-redirects/default.nix
index 2bef26944d244..72fced65d1e93 100644
--- a/pkgs/development/python-modules/mkdocs-redirects/default.nix
+++ b/pkgs/development/python-modules/mkdocs-redirects/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, callPackage
-, buildPythonPackage
-, fetchFromGitHub
-, mkdocs
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mkdocs,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,17 +18,11 @@ buildPythonPackage rec {
     hash = "sha256-zv/tCsC2wrD0iH7Kvlq4nXJMPMGQ7+l68Y/q/x66LBg=";
   };
 
-  propagatedBuildInputs = [
-    mkdocs
-  ];
+  propagatedBuildInputs = [ mkdocs ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mkdocs_redirects"
-  ];
+  pythonImportsCheck = [ "mkdocs_redirects" ];
 
   meta = with lib; {
     description = "Open source plugin for Mkdocs page redirects";
diff --git a/pkgs/development/python-modules/mkdocs-redoc-tag/default.nix b/pkgs/development/python-modules/mkdocs-redoc-tag/default.nix
index a5a3791712003..9196077644e9e 100644
--- a/pkgs/development/python-modules/mkdocs-redoc-tag/default.nix
+++ b/pkgs/development/python-modules/mkdocs-redoc-tag/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchFromGitHub
-, mkdocs
-, mkdocs-material
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mkdocs,
+  mkdocs-material,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     beautifulsoup4
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     mkdocs-material
@@ -38,7 +37,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A MkDocs plugin supports for add Redoc UI in page";
+    description = "MkDocs plugin supports for add Redoc UI in page";
     homepage = "https://github.com/blueswen/mkdocs-redoc-tag";
     changelog = "https://github.com/blueswen/mkdocs-redoc-tag/blob/v${version}/CHANGELOG";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/mkdocs-rss-plugin/default.nix b/pkgs/development/python-modules/mkdocs-rss-plugin/default.nix
index a11dd831e8bbb..42455ed84cc6b 100644
--- a/pkgs/development/python-modules/mkdocs-rss-plugin/default.nix
+++ b/pkgs/development/python-modules/mkdocs-rss-plugin/default.nix
@@ -1,6 +1,7 @@
 {
   lib,
   buildPythonPackage,
+  cachecontrol,
   feedparser,
   fetchFromGitHub,
   gitpython,
@@ -14,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "mkdocs-rss-plugin";
-  version = "1.12.2";
+  version = "1.15.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -23,7 +24,7 @@ buildPythonPackage rec {
     owner = "Guts";
     repo = "mkdocs-rss-plugin";
     rev = "refs/tags/${version}";
-    hash = "sha256-CeVt4Vkr3tGvWsDQtw8eAaRS5jBeDei0TrS5rViSCaI=";
+    hash = "sha256-sGm6uWlZeW65uorfTK8pk8ZT2AE9nmsZhe+UYVrSr+8=";
   };
 
   postPatch = ''
@@ -33,6 +34,7 @@ buildPythonPackage rec {
   build-system = [ setuptools ];
 
   dependencies = [
+    cachecontrol
     gitpython
     mkdocs
   ];
@@ -49,7 +51,7 @@ buildPythonPackage rec {
   disabledTests = [
     # Tests require network access
     "test_plugin_config_through_mkdocs"
-    "test_remote_image_ok"
+    "test_remote_image"
   ];
 
   disabledTestPaths = [
diff --git a/pkgs/development/python-modules/mkdocs-swagger-ui-tag/default.nix b/pkgs/development/python-modules/mkdocs-swagger-ui-tag/default.nix
index 62f5286747f0a..36863323f9683 100644
--- a/pkgs/development/python-modules/mkdocs-swagger-ui-tag/default.nix
+++ b/pkgs/development/python-modules/mkdocs-swagger-ui-tag/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, drawio-headless
-, fetchFromGitHub
-, mkdocs
-, pathspec
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mkdocs,
+  pathspec,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "mkdocs-swagger-ui-tag";
-  version = "0.6.9";
+  version = "0.6.10";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "Blueswen";
     repo = "mkdocs-swagger-ui-tag";
     rev = "refs/tags/v${version}";
-    hash = "sha256-4cRElwF8AOvTLZJq1NF9Yqa7g44uiT96giyhqKZKp5M=";
+    hash = "sha256-Wfctu8rqj2HxPgXYMeL5Hovet8yjol7RfLH233Gl+v4=";
   };
 
   propagatedBuildInputs = [
@@ -33,9 +33,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "mkdocs_swagger_ui_tag"
-  ];
+  pythonImportsCheck = [ "mkdocs_swagger_ui_tag" ];
 
   disabledTests = [
     # Don't actually build results
@@ -45,7 +43,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A MkDocs plugin supports for add Swagger UI in page";
+    description = "MkDocs plugin supports for add Swagger UI in page";
     homepage = "https://github.com/Blueswen/mkdocs-swagger-ui-tag";
     changelog = "https://github.com/blueswen/mkdocs-swagger-ui-tag/blob/v${version}/CHANGELOG";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/mkdocs/default.nix b/pkgs/development/python-modules/mkdocs/default.nix
index a20958dbb747e..6549917758851 100644
--- a/pkgs/development/python-modules/mkdocs/default.nix
+++ b/pkgs/development/python-modules/mkdocs/default.nix
@@ -1,41 +1,42 @@
 {
   # eval time deps
-  lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
-, pythonOlder
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonAtLeast,
+  pythonOlder,
 
-# buildtime
-, hatchling
+  # buildtime
+  hatchling,
 
-# runtime deps
-, click
-, ghp-import
-, importlib-metadata
-, jinja2
-, markdown
-, markupsafe
-, mergedeep
-, packaging
-, pathspec
-, platformdirs
-, pyyaml
-, pyyaml-env-tag
-, watchdog
+  # runtime deps
+  click,
+  ghp-import,
+  importlib-metadata,
+  jinja2,
+  markdown,
+  markupsafe,
+  mergedeep,
+  mkdocs-get-deps,
+  packaging,
+  pathspec,
+  platformdirs,
+  pyyaml,
+  pyyaml-env-tag,
+  watchdog,
 
-# optional-dependencies
-, babel
-, setuptools
+  # optional-dependencies
+  babel,
+  setuptools,
 
-# testing deps
-, mock
-, unittestCheckHook
+  # testing deps
+  mock,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "mkdocs";
-  version = "1.5.3";
+  version = "1.6.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -44,36 +45,29 @@ buildPythonPackage rec {
     owner = pname;
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-axH4AeL+osxoUIVJbW6YjiTfUr6TAXMB4raZ3oO0fyw=";
+    hash = "sha256-JQSOgV12iYE6FubxdoJpWy9EHKFxyKoxrm/7arCn9Ak=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     click
     ghp-import
     jinja2
     markdown
     markupsafe
     mergedeep
+    mkdocs-get-deps
     packaging
     pathspec
     platformdirs
     pyyaml
     pyyaml-env-tag
     watchdog
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
   passthru.optional-dependencies = {
-    i18n = [
-      babel
-    ] ++ lib.optionals (pythonAtLeast "3.12") [
-      setuptools
-    ];
+    i18n = [ babel ] ++ lib.optionals (pythonAtLeast "3.12") [ setuptools ];
   };
 
   nativeCheckInputs = [
@@ -81,7 +75,12 @@ buildPythonPackage rec {
     mock
   ] ++ passthru.optional-dependencies.i18n;
 
-  unittestFlagsArray = [ "-v" "-p" "'*tests.py'" "mkdocs" ];
+  unittestFlagsArray = [
+    "-v"
+    "-p"
+    "'*tests.py'"
+    "mkdocs"
+  ];
 
   pythonImportsCheck = [ "mkdocs" ];
 
diff --git a/pkgs/development/python-modules/mkdocstrings-python/default.nix b/pkgs/development/python-modules/mkdocstrings-python/default.nix
index 094713367e902..1b741ff733150 100644
--- a/pkgs/development/python-modules/mkdocstrings-python/default.nix
+++ b/pkgs/development/python-modules/mkdocstrings-python/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "mkdocstrings-python";
-  version = "1.10.0";
+  version = "1.11.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "mkdocstrings";
     repo = "python";
     rev = "refs/tags/${version}";
-    hash = "sha256-sKRheGIR//kmiznHKsVGd35oSvGHgoocsbYCzDRv2Zs=";
+    hash = "sha256-g6F6xIFKLzNqgbWGZXdJeoqQz/GIlC3XmrG9Kjkr1rU=";
   };
 
   build-system = [ pdm-backend ];
diff --git a/pkgs/development/python-modules/mkdocstrings/default.nix b/pkgs/development/python-modules/mkdocstrings/default.nix
index f82916c3a784d..b0bfc0ca15546 100644
--- a/pkgs/development/python-modules/mkdocstrings/default.nix
+++ b/pkgs/development/python-modules/mkdocstrings/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "mkdocstrings";
-  version = "0.25.0";
+  version = "0.26.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "mkdocstrings";
     repo = "mkdocstrings";
     rev = "refs/tags/${version}";
-    hash = "sha256-VKjK58KK9x5RCc7VVy46zax42ySCv2NzqAat+XF+3a8=";
+    hash = "sha256-YV9Cncry+RXXGxRYN4dXp5E2msGA4Kq2QSvcPywWV2c=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/mkl-service/default.nix b/pkgs/development/python-modules/mkl-service/default.nix
index 991c6e8813c39..fd5e8e9927758 100644
--- a/pkgs/development/python-modules/mkl-service/default.nix
+++ b/pkgs/development/python-modules/mkl-service/default.nix
@@ -1,22 +1,47 @@
-{ lib, buildPythonPackage, fetchFromGitHub, cython, mkl, nose, six }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cython,
+  setuptools,
+  mkl,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "mkl-service";
   version = "2.4.1";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "IntelPython";
     repo = "mkl-service";
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-4UPiQt1hVVlPFZnuKlMK3FLv2cIEXToHKxnyYLXR/sY=";
+    hash = "sha256-4UPiQt1hVVlPFZnuKlMK3FLv2cIEXToHKxnyYLXR/sY=";
   };
 
-  MKLROOT = mkl;
+  build-system = [
+    cython
+    setuptools
+  ];
 
-  nativeCheckInputs = [ nose ];
-  nativeBuildInputs = [ cython ];
-  propagatedBuildInputs = [ mkl six ];
+  env.MKLROOT = mkl;
+
+  dependencies = [ mkl ];
+
+  pythonImportsCheck = [ "mkl" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  preCheck = ''
+    cd $out
+  '';
+
+  disabledTests = [
+    # require SIMD compilation
+    "test_cbwr_all"
+    "test_cbwr_branch"
+  ];
 
   meta = with lib; {
     description = "Python hooks for Intel(R) Math Kernel Library runtime control settings";
diff --git a/pkgs/development/python-modules/mktestdocs/default.nix b/pkgs/development/python-modules/mktestdocs/default.nix
new file mode 100644
index 0000000000000..94ecadee5fcb7
--- /dev/null
+++ b/pkgs/development/python-modules/mktestdocs/default.nix
@@ -0,0 +1,38 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # tests
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "mktestdocs";
+  version = "0.2.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "koaning";
+    repo = "mktestdocs";
+    rev = "refs/tags/${version}";
+    hash = "sha256-snlt6SDiDYr04b2b2NgBC/1IBffpei034vFx3fnYUOc=";
+  };
+
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "mktestdocs" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "Run pytest against markdown files/docstrings";
+    homepage = "https://github.com/koaning/mktestdocs";
+    changelog = "https://github.com/koaning/mktestdocs/releases/tag/${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/pkgs/development/python-modules/ml-collections/default.nix b/pkgs/development/python-modules/ml-collections/default.nix
index 806b7cce5b42f..2efd63acb78b4 100644
--- a/pkgs/development/python-modules/ml-collections/default.nix
+++ b/pkgs/development/python-modules/ml-collections/default.nix
@@ -1,10 +1,11 @@
-{ absl-py
-, buildPythonPackage
-, contextlib2
-, fetchPypi
-, fetchurl
-, lib
-, pyyaml
+{
+  absl-py,
+  buildPythonPackage,
+  contextlib2,
+  fetchPypi,
+  fetchurl,
+  lib,
+  pyyaml,
 }:
 
 let
@@ -36,7 +37,11 @@ buildPythonPackage rec {
     cp ${requirements-test} requirements-test.txt
   '';
 
-  propagatedBuildInputs = [ absl-py contextlib2 pyyaml ];
+  propagatedBuildInputs = [
+    absl-py
+    contextlib2
+    pyyaml
+  ];
 
   # The official test suite uses bazel. With pytestCheckHook there are name
   # conflicts between files and tests have assumptions that are broken by the
@@ -46,7 +51,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "ml_collections" ];
 
   meta = with lib; {
-    description = "ML Collections is a library of Python collections designed for ML usecases.";
+    description = "ML Collections is a library of Python collections designed for ML usecases";
     homepage = "https://github.com/google/ml_collections";
     license = licenses.asl20;
     maintainers = with maintainers; [ samuela ];
diff --git a/pkgs/development/python-modules/ml-dtypes/default.nix b/pkgs/development/python-modules/ml-dtypes/default.nix
index b58887aea1d59..b23ca450327cd 100644
--- a/pkgs/development/python-modules/ml-dtypes/default.nix
+++ b/pkgs/development/python-modules/ml-dtypes/default.nix
@@ -1,25 +1,29 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, numpy
-, pytestCheckHook
-, absl-py
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  numpy,
+
+  # tests
+  absl-py,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "ml-dtypes";
-  version = "0.4.0";
+  version = "0.5.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
-
   src = fetchFromGitHub {
     owner = "jax-ml";
     repo = "ml_dtypes";
     rev = "refs/tags/v${version}";
-    hash = "sha256-3qZ1lS1IdSXNLRNE9tyuO9qauVBDlECZvmmwaOffD30=";
+    hash = "sha256-+6job9fEHVguh9JBE/NUv+QezwQohuKPO8DlhbaawZ4=";
     # Since this upstream patch (https://github.com/jax-ml/ml_dtypes/commit/1bfd097e794413b0d465fa34f2eff0f3828ff521),
     # the attempts to use the nixpkgs packaged eigen dependency have failed.
     # Hence, we rely on the bundled eigen library.
@@ -28,24 +32,17 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "numpy~=1.21.2" "numpy" \
-      --replace "numpy~=1.23.3" "numpy" \
-      --replace "numpy~=1.26.0" "numpy" \
-      --replace "numpy==2.0.0rc1" "numpy" \
-      --replace "setuptools~=68.1.0" "setuptools"
+      --replace-fail "numpy~=2.0" "numpy" \
+      --replace-fail "setuptools~=73.0.1" "setuptools"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  dependencies = [ numpy ];
 
   nativeCheckInputs = [
-    pytestCheckHook
     absl-py
+    pytestCheckHook
   ];
 
   preCheck = ''
@@ -54,15 +51,16 @@ buildPythonPackage rec {
     rm -rf ./ml_dtypes
   '';
 
-  pythonImportsCheck = [
-    "ml_dtypes"
-  ];
+  pythonImportsCheck = [ "ml_dtypes" ];
 
-  meta = with lib; {
-    description = "A stand-alone implementation of several NumPy dtype extensions used in machine learning libraries";
+  meta = {
+    description = "Stand-alone implementation of several NumPy dtype extensions used in machine learning libraries";
     homepage = "https://github.com/jax-ml/ml_dtypes";
     changelog = "https://github.com/jax-ml/ml_dtypes/releases/tag/v${version}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ GaetanLepage samuela ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [
+      GaetanLepage
+      samuela
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/mlflow/default.nix b/pkgs/development/python-modules/mlflow/default.nix
index 371db9450996b..7032d0e91d517 100644
--- a/pkgs/development/python-modules/mlflow/default.nix
+++ b/pkgs/development/python-modules/mlflow/default.nix
@@ -1,62 +1,62 @@
-{ lib
-, alembic
-, buildPythonPackage
-, click
-, cloudpickle
-, databricks-cli
-, docker
-, entrypoints
-, fetchPypi
-, flask
-, gitpython
-, gorilla
-, graphene
-, gunicorn
-, importlib-metadata
-, markdown
-, matplotlib
-, numpy
-, packaging
-, pandas
-, prometheus-flask-exporter
-, protobuf
-, python-dateutil
-, pythonOlder
-, pythonRelaxDepsHook
-, pyarrow
-, pytz
-, pyyaml
-, querystring-parser
-, requests
-, setuptools
-, scikit-learn
-, scipy
-, simplejson
-, sqlalchemy
-, sqlparse
+{
+  lib,
+  alembic,
+  buildPythonPackage,
+  cachetools,
+  click,
+  cloudpickle,
+  databricks-cli,
+  docker,
+  entrypoints,
+  fetchPypi,
+  flask,
+  gitpython,
+  gorilla,
+  graphene,
+  gunicorn,
+  importlib-metadata,
+  markdown,
+  matplotlib,
+  numpy,
+  opentelemetry-api,
+  opentelemetry-sdk,
+  packaging,
+  pandas,
+  prometheus-flask-exporter,
+  protobuf,
+  python-dateutil,
+  pythonOlder,
+  pyarrow,
+  pytz,
+  pyyaml,
+  querystring-parser,
+  requests,
+  setuptools,
+  scikit-learn,
+  scipy,
+  simplejson,
+  sqlalchemy,
+  sqlparse,
 }:
 
 buildPythonPackage rec {
   pname = "mlflow";
-  version = "2.12.1";
+  version = "2.14.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-qpKuuyN5qcVITL6QHN93nVQIrJamQeSx+KLR/5dNt8k=";
+    hash = "sha256-KSyuS4NXSgyyIxF+IkyqZ5iTMHivAjNxnCthK+pkVhc=";
   };
 
   # Remove currently broken dependency `shap`, a model explainability package.
   # This seems quite unprincipled especially with tests not being enabled,
   # but not mlflow has a 'skinny' install option which does not require `shap`.
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-    setuptools
-  ];
   pythonRemoveDeps = [ "shap" ];
   pythonRelaxDeps = [
+    "gunicorn"
     "packaging"
     "pytz"
     "pyarrow"
@@ -64,6 +64,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     alembic
+    cachetools
     click
     cloudpickle
     databricks-cli
@@ -78,27 +79,28 @@ buildPythonPackage rec {
     markdown
     matplotlib
     numpy
+    opentelemetry-api
+    opentelemetry-sdk
     packaging
     pandas
     prometheus-flask-exporter
     protobuf
-    python-dateutil
     pyarrow
+    python-dateutil
     pytz
     pyyaml
     querystring-parser
     requests
     scikit-learn
     scipy
+    setuptools
     #shap
     simplejson
     sqlalchemy
     sqlparse
   ];
 
-  pythonImportsCheck = [
-    "mlflow"
-  ];
+  pythonImportsCheck = [ "mlflow" ];
 
   # no tests in PyPI dist
   # run into https://stackoverflow.com/questions/51203641/attributeerror-module-alembic-context-has-no-attribute-config
diff --git a/pkgs/development/python-modules/mlrose/default.nix b/pkgs/development/python-modules/mlrose/default.nix
index f4e97870b331a..284222299cd37 100644
--- a/pkgs/development/python-modules/mlrose/default.nix
+++ b/pkgs/development/python-modules/mlrose/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, isPy27
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, scikit-learn
-, pytestCheckHook
-, pytest-randomly
+{
+  lib,
+  isPy27,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  setuptools,
+  scikit-learn,
+  pytestCheckHook,
+  pytest-randomly,
 }:
 
 buildPythonPackage rec {
   pname = "mlrose";
   version = "1.3.0";
-  format = "setuptools";
+  pyproject = true;
   disabled = isPy27;
 
   src = fetchFromGitHub {
@@ -29,11 +31,15 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [ scikit-learn ];
-  nativeCheckInputs = [ pytest-randomly pytestCheckHook ];
+  build-system = [ setuptools ];
+  dependencies = [ scikit-learn ];
+  nativeCheckInputs = [
+    pytest-randomly
+    pytestCheckHook
+  ];
 
   postPatch = ''
-    substituteInPlace setup.py --replace sklearn scikit-learn
+    substituteInPlace setup.py --replace-fail sklearn scikit-learn
   '';
 
   pythonImportsCheck = [ "mlrose" ];
@@ -43,8 +49,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Machine Learning, Randomized Optimization and SEarch";
-    homepage    = "https://github.com/gkhayes/mlrose";
-    license     = licenses.bsd3;
+    homepage = "https://github.com/gkhayes/mlrose";
+    license = licenses.bsd3;
     maintainers = with maintainers; [ abbradar ];
   };
 }
diff --git a/pkgs/development/python-modules/mlx/default.nix b/pkgs/development/python-modules/mlx/default.nix
index d2d4d32d7a9a5..614aed274ba04 100644
--- a/pkgs/development/python-modules/mlx/default.nix
+++ b/pkgs/development/python-modules/mlx/default.nix
@@ -1,15 +1,14 @@
-{ stdenv
-, lib
-, fetchFromGitHub
-, buildPythonPackage
-, python3Packages
-, pybind11
-, cmake
-, xcbuild
-, zsh
-, darwin
-, blas
-, lapack
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pybind11,
+  cmake,
+  xcbuild,
+  zsh,
+  blas,
+  lapack,
+  setuptools,
 }:
 
 let
@@ -29,13 +28,13 @@ let
 in
 buildPythonPackage rec {
   pname = "mlx";
-  version = "0.6.0";
+  version = "0.15.1";
 
   src = fetchFromGitHub {
     owner = "ml-explore";
     repo = "mlx";
     rev = "refs/tags/v${version}";
-    hash = "sha256-FihdI+3ACKMJfPT2POjTRdtkXs7x+KiQpdpo3RcczBE=";
+    hash = "sha256-+vgHEt+L91YJLpQo4bps+Rnm/TS1PAPXNohdICGK6GE=";
   };
 
   pyproject = true;
@@ -63,13 +62,24 @@ buildPythonPackage rec {
     ];
   };
 
-  nativeBuildInputs = [ cmake pybind11 xcbuild zsh gguf-tools nlohmann_json ] ++ (with python3Packages; [ setuptools ]);
+  nativeBuildInputs = [
+    cmake
+    pybind11
+    xcbuild
+    zsh
+    gguf-tools
+    nlohmann_json
+    setuptools
+  ];
 
-  buildInputs = [ blas lapack ];
+  buildInputs = [
+    blas
+    lapack
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/ml-explore/mlx";
-    description = "An array framework for Apple silicon";
+    description = "Array framework for Apple silicon";
     changelog = "https://github.com/ml-explore/mlx/releases/tag/v${version}";
     license = licenses.mit;
     platforms = [ "aarch64-darwin" ];
diff --git a/pkgs/development/python-modules/mlxtend/default.nix b/pkgs/development/python-modules/mlxtend/default.nix
index 4a743ac664a96..85c5c05f4eae3 100644
--- a/pkgs/development/python-modules/mlxtend/default.nix
+++ b/pkgs/development/python-modules/mlxtend/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy27
-, setuptools
-, pytestCheckHook
-, scipy
-, numpy
-, scikit-learn
-, pandas
-, matplotlib
-, joblib
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  setuptools,
+  pytestCheckHook,
+  scipy,
+  numpy,
+  scikit-learn,
+  pandas,
+  matplotlib,
+  joblib,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-FlP6UqX/Ejk9c3Enm0EJ0xqy7iOhDlFqjWWxd4VIczQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     scipy
@@ -39,13 +38,9 @@ buildPythonPackage rec {
     joblib
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "-sv"
-  ];
+  pytestFlagsArray = [ "-sv" ];
 
   disabledTestPaths = [
     # image tests download files over the network
@@ -53,9 +48,9 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A library of Python tools and extensions for data science";
+    description = "Library of Python tools and extensions for data science";
     homepage = "https://github.com/rasbt/mlxtend";
-    license= licenses.bsd3;
+    license = licenses.bsd3;
     maintainers = with maintainers; [ evax ];
     platforms = platforms.unix;
     # incompatible with nixpkgs scikit-learn version
diff --git a/pkgs/development/python-modules/mmcif-pdbx/default.nix b/pkgs/development/python-modules/mmcif-pdbx/default.nix
index 05d43d54f25d9..43427810c5235 100644
--- a/pkgs/development/python-modules/mmcif-pdbx/default.nix
+++ b/pkgs/development/python-modules/mmcif-pdbx/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-ymMQ/q4IMoq+B8RvIdL0aqolKxyE/4rnVfd4bUV5OUY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pdbx"
-  ];
+  pythonImportsCheck = [ "pdbx" ];
 
   meta = with lib; {
     description = "Yet another version of PDBx/mmCIF Python implementation";
diff --git a/pkgs/development/python-modules/mmcv/default.nix b/pkgs/development/python-modules/mmcv/default.nix
index 923e40d02fcf2..d552736a6920e 100644
--- a/pkgs/development/python-modules/mmcv/default.nix
+++ b/pkgs/development/python-modules/mmcv/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, torch
-, torchvision
-, opencv4
-, yapf
-, packaging
-, pillow
-, addict
-, ninja
-, which
-, pybind11
-, onnx
-, onnxruntime
-, scipy
-, pyturbojpeg
-, tifffile
-, lmdb
-, mmengine
-, symlinkJoin
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  torch,
+  torchvision,
+  opencv4,
+  yapf,
+  packaging,
+  pillow,
+  addict,
+  ninja,
+  which,
+  pybind11,
+  onnx,
+  onnxruntime,
+  scipy,
+  pyturbojpeg,
+  tifffile,
+  lmdb,
+  mmengine,
+  symlinkJoin,
 }:
 
 let
@@ -36,21 +37,23 @@ let
 
   cuda-native-redist = symlinkJoin {
     name = "cuda-native-redist-${cudaVersion}";
-    paths = with cudaPackages; [
-      cuda_cudart # cuda_runtime.h
-      cuda_nvcc
-    ] ++ cuda-common-redist;
+    paths =
+      with cudaPackages;
+      [
+        cuda_cudart # cuda_runtime.h
+        cuda_nvcc
+      ]
+      ++ cuda-common-redist;
   };
 
   cuda-redist = symlinkJoin {
     name = "cuda-redist-${cudaVersion}";
     paths = cuda-common-redist;
   };
-
 in
 buildPythonPackage rec {
   pname = "mmcv";
-  version = "2.1.0";
+  version = "2.2.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -59,17 +62,19 @@ buildPythonPackage rec {
     owner = "open-mmlab";
     repo = "mmcv";
     rev = "refs/tags/v${version}";
-    hash = "sha256-an78tRvx18zQ5Q0ca74r4Oe2gJ9F9OfWXLbuP2+rL68=";
+    hash = "sha256-NNF9sLJWV1q6uBE73LUW4UWwYm4TBMTBJjJkFArBmsc=";
   };
 
-  preConfigure = ''
-    export MMCV_WITH_OPS=1
-  '' + lib.optionalString cudaSupport ''
-    export CC=${backendStdenv.cc}/bin/cc
-    export CXX=${backendStdenv.cc}/bin/c++
-    export TORCH_CUDA_ARCH_LIST="${lib.concatStringsSep ";" cudaCapabilities}"
-    export FORCE_CUDA=1
-  '';
+  preConfigure =
+    ''
+      export MMCV_WITH_OPS=1
+    ''
+    + lib.optionalString cudaSupport ''
+      export CC=${backendStdenv.cc}/bin/cc
+      export CXX=${backendStdenv.cc}/bin/c++
+      export TORCH_CUDA_ARCH_LIST="${lib.concatStringsSep ";" cudaCapabilities}"
+      export FORCE_CUDA=1
+    '';
 
   postPatch = ''
     substituteInPlace setup.py --replace "cpu_use = 4" "cpu_use = $NIX_BUILD_CORES"
@@ -94,12 +99,26 @@ buildPythonPackage rec {
     "test_reader"
   ];
 
-  nativeBuildInputs = [ ninja which ]
-    ++ lib.optionals cudaSupport [ cuda-native-redist ];
-
-  buildInputs = [ pybind11 torch ] ++ lib.optionals cudaSupport [ cuda-redist ];
+  nativeBuildInputs = [
+    ninja
+    which
+  ] ++ lib.optionals cudaSupport [ cuda-native-redist ];
 
-  nativeCheckInputs = [ pytestCheckHook torchvision lmdb onnx onnxruntime scipy pyturbojpeg tifffile ];
+  buildInputs = [
+    pybind11
+    torch
+  ] ++ lib.optionals cudaSupport [ cuda-redist ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    torchvision
+    lmdb
+    onnx
+    onnxruntime
+    scipy
+    pyturbojpeg
+    tifffile
+  ];
 
   propagatedBuildInputs = [
     mmengine
@@ -111,12 +130,10 @@ buildPythonPackage rec {
     addict
   ];
 
-  pythonImportsCheck = [
-    "mmcv"
-  ];
+  pythonImportsCheck = [ "mmcv" ];
 
   meta = with lib; {
-    description = "A Foundational Library for Computer Vision Research";
+    description = "Foundational Library for Computer Vision Research";
     homepage = "https://github.com/open-mmlab/mmcv";
     changelog = "https://github.com/open-mmlab/mmcv/releases/tag/v${version}";
     license = with licenses; [ asl20 ];
diff --git a/pkgs/development/python-modules/mmengine/default.nix b/pkgs/development/python-modules/mmengine/default.nix
index 89992981ea2f8..f31daa71f4433 100644
--- a/pkgs/development/python-modules/mmengine/default.nix
+++ b/pkgs/development/python-modules/mmengine/default.nix
@@ -1,38 +1,44 @@
 {
   lib,
-  addict,
+  stdenv,
   buildPythonPackage,
-  coverage,
   fetchFromGitHub,
-  lmdb,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  addict,
   matplotlib,
-  mlflow,
   numpy,
   opencv4,
-  parameterized,
-  pytestCheckHook,
-  pythonOlder,
   pyyaml,
   rich,
-  setuptools,
-  stdenv,
   termcolor,
-  torch,
   yapf,
+
+  # checks
+  bitsandbytes,
+  coverage,
+  dvclive,
+  lion-pytorch,
+  lmdb,
+  mlflow,
+  parameterized,
+  pytestCheckHook,
+  transformers,
 }:
 
 buildPythonPackage rec {
   pname = "mmengine";
-  version = "0.10.4";
+  version = "0.10.5";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
-
   src = fetchFromGitHub {
     owner = "open-mmlab";
     repo = "mmengine";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+YDtYHp3BwKvzhmHC6hAZ3Qtc9uRZMo/TpWqdpm2hn0=";
+    hash = "sha256-bZ6O4UOYUCwq11YmgRWepOIngYxYD/fNfM/VmcyUv9k=";
   };
 
   build-system = [ setuptools ];
@@ -49,12 +55,15 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
+    # bitsandbytes (broken as of 2024-07-06)
     coverage
+    dvclive
+    lion-pytorch
     lmdb
     mlflow
     parameterized
     pytestCheckHook
-    torch
+    transformers
   ];
 
   preCheck =
@@ -77,6 +86,14 @@ buildPythonPackage rec {
     "tests/test_runner/test_activation_checkpointing.py"
     # missing dependencies
     "tests/test_visualizer/test_vis_backend.py"
+    # Tests are outdated (runTest instead of run_test)
+    "mmengine/testing/_internal"
+    "tests/test_dist/test_dist.py"
+    "tests/test_dist/test_utils.py"
+    "tests/test_hooks/test_sync_buffers_hook.py"
+    "tests/test_model/test_wrappers/test_model_wrapper.py"
+    "tests/test_optim/test_optimizer/test_optimizer.py"
+    "tests/test_optim/test_optimizer/test_optimizer_wrapper.py"
   ];
 
   disabledTests = [
@@ -100,12 +117,13 @@ buildPythonPackage rec {
     "test_close"
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Library for training deep learning models based on PyTorch";
     homepage = "https://github.com/open-mmlab/mmengine";
     changelog = "https://github.com/open-mmlab/mmengine/releases/tag/v${version}";
-    license = with licenses; [ asl20 ];
-    maintainers = with maintainers; [ rxiao ];
-    broken = stdenv.isDarwin || (stdenv.isLinux && stdenv.isAarch64);
+    license = with lib.licenses; [ asl20 ];
+    maintainers = with lib.maintainers; [ rxiao ];
+    broken =
+      stdenv.hostPlatform.isDarwin || (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64);
   };
 }
diff --git a/pkgs/development/python-modules/mmh3/default.nix b/pkgs/development/python-modules/mmh3/default.nix
index 9aff484888ab5..9e09b91850d32 100644
--- a/pkgs/development/python-modules/mmh3/default.nix
+++ b/pkgs/development/python-modules/mmh3/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -16,15 +17,13 @@ buildPythonPackage rec {
     hash = "sha256-oc8lNIuazSKd2kZKCU1hcPR9KFCh/Ldio7YXLSzmyko=";
   };
 
-  pythonImportsCheck = [
-    "mmh3"
-  ];
+  pythonImportsCheck = [ "mmh3" ];
 
   meta = with lib; {
     description = "Python wrapper for MurmurHash3, a set of fast and robust hash functions";
     homepage = "https://github.com/hajimes/mmh3";
     changelog = "https://github.com/hajimes/mmh3/blob/v${version}/CHANGELOG.md";
     license = licenses.cc0;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/mmpython/default.nix b/pkgs/development/python-modules/mmpython/default.nix
index 837a1953be5e1..6a980c242e8fa 100644
--- a/pkgs/development/python-modules/mmpython/default.nix
+++ b/pkgs/development/python-modules/mmpython/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, isPyPy
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchurl,
+  isPyPy,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -23,5 +24,4 @@ buildPythonPackage rec {
     homepage = "https://sourceforge.net/projects/mmpython/";
     license = licenses.gpl2;
   };
-
 }
diff --git a/pkgs/development/python-modules/mmtf-python/default.nix b/pkgs/development/python-modules/mmtf-python/default.nix
index 197d0cf3e65bb..9e40d8a76adc3 100644
--- a/pkgs/development/python-modules/mmtf-python/default.nix
+++ b/pkgs/development/python-modules/mmtf-python/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msgpack
-, numpy
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msgpack,
+  numpy,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,17 @@ buildPythonPackage rec {
     numpy
   ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   unittestFlagsArray = [
     "-s mmtf/tests"
     "-p \"*_tests.py\""
   ];
 
-  pythonImportsCheck = [
-    "mmtf"
-  ];
+  pythonImportsCheck = [ "mmtf" ];
 
   meta = {
-    description = "The python implementation of the MMTF API, decoder and encoder";
+    description = "Python implementation of the MMTF API, decoder and encoder";
     homepage = "https://github.com/rcsb/mmtf-python";
     changelog = "https://github.com/rcsb/mmtf-python/releases/tag/v${version}";
     license = lib.licenses.asl20;
diff --git a/pkgs/development/python-modules/mne-python/default.nix b/pkgs/development/python-modules/mne-python/default.nix
index c34d2649cda8a..460d128f5a9e8 100644
--- a/pkgs/development/python-modules/mne-python/default.nix
+++ b/pkgs/development/python-modules/mne-python/default.nix
@@ -1,49 +1,48 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, numpy
-, scipy
-, pytestCheckHook
-, pytest-timeout
-, pytest-harvest
-, matplotlib
-, decorator
-, jinja2
-, pooch
-, tqdm
-, packaging
-, importlib-resources
-, lazy-loader
-, h5io
-, pymatreader
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  hatch-vcs,
+  numpy,
+  scipy,
+  pytestCheckHook,
+  pytest-timeout,
+  matplotlib,
+  decorator,
+  jinja2,
+  pooch,
+  tqdm,
+  packaging,
+  lazy-loader,
+  h5io,
+  pymatreader,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "mne-python";
-  version = "1.6.1";
+  version = "1.7.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "mne-tools";
     repo = "mne-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-U1aMqcUZ3BcwqwOYh/qfG5PhacwBVioAgNc52uaoJL0";
+    hash = "sha256-piCFynpKh7gTWIGh2g0gJICLS+eg/0XAxaDkyu7v5vs=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml  \
-      --replace "--cov-report=" ""  \
-      --replace "--cov-branch" ""
+      --replace-fail "--cov-report=" ""  \
+      --replace-fail "--cov-branch" ""
   '';
 
   nativeBuildInputs = [
-    setuptools
-    setuptools-scm
+    hatchling
+    hatch-vcs
   ];
 
   propagatedBuildInputs = [
@@ -56,21 +55,16 @@ buildPythonPackage rec {
     packaging
     jinja2
     lazy-loader
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    importlib-resources
   ];
 
-  passthru.optional-dependencies = {
-    hdf5 = [
-      h5io
-      pymatreader
-    ];
-  };
+  passthru.optional-dependencies.hdf5 = [
+    h5io
+    pymatreader
+  ];
 
   nativeCheckInputs = [
     pytestCheckHook
     pytest-timeout
-    pytest-harvest
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
   preCheck = ''
@@ -79,16 +73,22 @@ buildPythonPackage rec {
     export MNE_SKIP_NETWORK_TESTS=1
   '';
 
-  pythonImportsCheck = [
-    "mne"
+  disabledTests = [
+    # Fails due to changes in Numpy types
+    "mne.stats._adjacency.combine_adjacency"
   ];
 
+  pythonImportsCheck = [ "mne" ];
+
   meta = with lib; {
     description = "Magnetoencephelography and electroencephalography in Python";
     mainProgram = "mne";
     homepage = "https://mne.tools";
     changelog = "https://mne.tools/stable/changes/v${version}.html";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ bcdarwin mbalatsko ];
+    maintainers = with maintainers; [
+      bcdarwin
+      mbalatsko
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/mnemonic/default.nix b/pkgs/development/python-modules/mnemonic/default.nix
index ba5fe3dc03c3f..4250e048430e3 100644
--- a/pkgs/development/python-modules/mnemonic/default.nix
+++ b/pkgs/development/python-modules/mnemonic/default.nix
@@ -1,21 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
   pname = "mnemonic";
-  version = "0.20";
-  format = "setuptools";
+  version = "0.21";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "trezor";
-    repo = "python-${pname}";
+    repo = "python-mnemonic";
     rev = "v${version}";
-    hash = "sha256-YYgWlYfVd1iALOziaUI8uVYjJDCIVk/dXcUmJd2jcvQ=";
+    hash = "sha256-D1mS/JQhefYmwrShfWR9SdiGsBUM+jmuCkfWix9tDOU=";
   };
 
+  build-system = [ poetry-core ];
+
   nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "mnemonic" ];
@@ -24,6 +28,9 @@ buildPythonPackage rec {
     description = "Reference implementation of BIP-0039";
     homepage = "https://github.com/trezor/python-mnemonic";
     license = licenses.mit;
-    maintainers = with maintainers; [ np prusnak ];
+    maintainers = with maintainers; [
+      np
+      prusnak
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/mnist/default.nix b/pkgs/development/python-modules/mnist/default.nix
index 3e48b31983379..25f2106e20cb7 100644
--- a/pkgs/development/python-modules/mnist/default.nix
+++ b/pkgs/development/python-modules/mnist/default.nix
@@ -1,4 +1,11 @@
-{ buildPythonPackage, fetchFromGitHub, isPy27, lib, mock, numpy, pytestCheckHook
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  lib,
+  mock,
+  numpy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -34,4 +41,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ dmrauh ];
   };
 }
-
diff --git a/pkgs/development/python-modules/moat-ble/default.nix b/pkgs/development/python-modules/moat-ble/default.nix
index 2e55edd7aedb0..26058cb0577ae 100644
--- a/pkgs/development/python-modules/moat-ble/default.nix
+++ b/pkgs/development/python-modules/moat-ble/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, bluetooth-sensor-state-data
-, buildPythonPackage
-, fetchFromGitHub
-, home-assistant-bluetooth
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, sensor-state-data
+{
+  lib,
+  bluetooth-sensor-state-data,
+  buildPythonPackage,
+  fetchFromGitHub,
+  home-assistant-bluetooth,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  sensor-state-data,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-dy1Fm0Z1PUsPY8QTiXUcWSi+csFnTUsobSkA92m06QI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     bluetooth-sensor-state-data
@@ -33,18 +32,14 @@ buildPythonPackage rec {
     sensor-state-data
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace " --cov=moat_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  pythonImportsCheck = [
-    "moat_ble"
-  ];
+  pythonImportsCheck = [ "moat_ble" ];
 
   meta = with lib; {
     description = "Library for Moat BLE devices";
diff --git a/pkgs/development/python-modules/mobi/default.nix b/pkgs/development/python-modules/mobi/default.nix
index b5c04d0bae893..cfa7d4e698c84 100644
--- a/pkgs/development/python-modules/mobi/default.nix
+++ b/pkgs/development/python-modules/mobi/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, loguru
-, poetry-core
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  loguru,
+  poetry-core,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,29 +22,22 @@ buildPythonPackage rec {
     hash = "sha256-g1L72MkJdrKQRsEdew+Qsn8LfCn8+cmj2pmY6s4nv2U=";
   };
 
-  pythonRelaxDeps = [
-    "loguru"
-  ];
+  pythonRelaxDeps = [ "loguru" ];
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
     setuptools
   ];
 
-  propagatedBuildInputs = [
-    loguru
-  ];
+  propagatedBuildInputs = [ loguru ];
 
-  pythonImportsCheck = [
-    "mobi"
-  ];
+  pythonImportsCheck = [ "mobi" ];
 
   meta = with lib; {
     description = "Library for unpacking unencrypted mobi files";
     mainProgram = "mobiunpack";
     homepage = "https://github.com/iscc/mobi";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/mobly/default.nix b/pkgs/development/python-modules/mobly/default.nix
index e89a361993938..dc76a6d6ea095 100644
--- a/pkgs/development/python-modules/mobly/default.nix
+++ b/pkgs/development/python-modules/mobly/default.nix
@@ -1,38 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# build-system
-, setuptools
-
-# dependencies
-, portpicker
-, pyserial
-, pyyaml
-, timeout-decorator
-, typing-extensions
-
-# tests
-, procps
-, pytestCheckHook
-, pytz
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  portpicker,
+  pyserial,
+  pyyaml,
+  timeout-decorator,
+  typing-extensions,
+
+  # tests
+  procps,
+  pytestCheckHook,
+  pytz,
 }:
 
 buildPythonPackage rec {
   pname = "mobly";
-  version = "1.12.3";
+  version = "1.12.4";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "google";
     repo = "mobly";
     rev = "refs/tags/${version}";
-    hash = "sha256-hhI1jrHJk4wo49MK8J4VTS2dGmHG2kwzgZeSWBXdXkA=";
+    hash = "sha256-77wZK5dqxXUkOgWE7NBpGJBbbtYYxRCJwPbtwLIX09I=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     portpicker
diff --git a/pkgs/development/python-modules/mock-open/default.nix b/pkgs/development/python-modules/mock-open/default.nix
index 704054c46c040..3cf1095b20eab 100644
--- a/pkgs/development/python-modules/mock-open/default.nix
+++ b/pkgs/development/python-modules/mock-open/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch, pythonOlder, mock }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+}:
 
 buildPythonPackage rec {
   pname = "mock-open";
@@ -13,18 +17,9 @@ buildPythonPackage rec {
     sha256 = "0qlz4y8jqxsnmqg03yp9f87rmnjrvmxm5qvm6n1218gm9k5dixbm";
   };
 
-  patches = lib.optional (pythonOlder "3.0")
-    (fetchpatch {
-      name = "ascii-only.patch";
-      url = "https://github.com/das-g/mock-open/commit/521ff260da127949fe4aceff1667cba223c5b07b.patch";
-      sha256 = "0ampbhk7kwkn0q5d2h9wrflkr8fji2bybmdck4qdzw1qkslfwwrn";
-    });
-
-  propagatedBuildInputs = lib.optional (pythonOlder "3.3") mock;
-
   meta = with lib; {
     homepage = "https://github.com/nivbend/mock-open";
-    description = "A better mock for file I/O";
+    description = "Better mock for file I/O";
     license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/mock-services/default.nix b/pkgs/development/python-modules/mock-services/default.nix
index e1c52662f3894..723ec6f782331 100644
--- a/pkgs/development/python-modules/mock-services/default.nix
+++ b/pkgs/development/python-modules/mock-services/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, attrs
-, funcsigs
-, requests-mock
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  attrs,
+  funcsigs,
+  requests-mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     requests-mock
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # require networking
diff --git a/pkgs/development/python-modules/mock-ssh-server/default.nix b/pkgs/development/python-modules/mock-ssh-server/default.nix
index 46608965c1c15..abf911588ba2e 100644
--- a/pkgs/development/python-modules/mock-ssh-server/default.nix
+++ b/pkgs/development/python-modules/mock-ssh-server/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, paramiko
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  paramiko,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-yJd+WDidW5ouofytAKTlSiZhIQg2cLs8BvEp15qwtjo=";
   };
 
-  propagatedBuildInputs = [
-    paramiko
-  ];
+  propagatedBuildInputs = [ paramiko ];
 
   # Tests are running into a timeout on Hydra, they work locally
   doCheck = false;
 
-  pythonImportsCheck = [
-    "mockssh"
-  ];
+  pythonImportsCheck = [ "mockssh" ];
 
   meta = with lib; {
     description = "Python mock SSH server for testing purposes";
diff --git a/pkgs/development/python-modules/mock/default.nix b/pkgs/development/python-modules/mock/default.nix
index 7e5a72a47fadd..20c78bf4f18eb 100644
--- a/pkgs/development/python-modules/mock/default.nix
+++ b/pkgs/development/python-modules/mock/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -14,16 +15,12 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-Xpaq1czaRxjgointlLICTfdcwtVVdbpXYtMfV2e4dn0=";
+    hash = "sha256-Xpaq1czaRxjgointlLICTfdcwtVVdbpXYtMfV2e4dn0=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mock"
-  ];
+  pythonImportsCheck = [ "mock" ];
 
   meta = with lib; {
     description = "Rolling backport of unittest.mock for all Pythons";
diff --git a/pkgs/development/python-modules/mocket/default.nix b/pkgs/development/python-modules/mocket/default.nix
index 2a44707bff1b3..1df4cc1eef21f 100644
--- a/pkgs/development/python-modules/mocket/default.nix
+++ b/pkgs/development/python-modules/mocket/default.nix
@@ -1,51 +1,50 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, stdenv
-
-# build-system
-, hatchling
-
-# dependencies
-, decorator
-, httptools
-, python-magic
-, urllib3
-
-# optional-dependencies
-, xxhash
-, pook
-
-# tests
-, aiohttp
-, asgiref
-, fastapi
-, gevent
-, httpx
-, psutil
-, pytest-asyncio
-, pytestCheckHook
-, redis
-, redis-server
-, requests
-, sure
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  stdenv,
+
+  # build-system
+  hatchling,
+
+  # dependencies
+  decorator,
+  httptools,
+  python-magic,
+  urllib3,
+
+  # optional-dependencies
+  xxhash,
+  pook,
+
+  # tests
+  aiohttp,
+  asgiref,
+  fastapi,
+  gevent,
+  httpx,
+  psutil,
+  pytest-asyncio,
+  pytestCheckHook,
+  redis,
+  redis-server,
+  requests,
+  sure,
 
 }:
 
 buildPythonPackage rec {
   pname = "mocket";
-  version = "3.12.4";
+  version = "3.12.8";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-O+IRX59Z4D188XEmiSCT8H3sg1jhtaboHS3QINEnE0s=";
+    hash = "sha256-++zGXLtQ01srmF0EqUFqaxh+mnNzW8IzYG1RzNGTXkw=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     decorator
@@ -55,35 +54,32 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    pook = [
-      pook
-    ];
-    speedups = [
-      xxhash
-    ];
+    pook = [ pook ];
+    speedups = [ xxhash ];
   };
 
-  nativeCheckInputs = [
-    asgiref
-    fastapi
-    gevent
-    httpx
-    psutil
-    pytest-asyncio
-    pytestCheckHook
-    redis
-    requests
-    sure
-  ] ++ lib.optionals (pythonOlder "3.12") [
-    aiohttp
-  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
-
-  preCheck = lib.optionalString stdenv.isLinux ''
+  nativeCheckInputs =
+    [
+      asgiref
+      fastapi
+      gevent
+      httpx
+      psutil
+      pytest-asyncio
+      pytestCheckHook
+      redis
+      requests
+      sure
+    ]
+    ++ lib.optionals (pythonOlder "3.12") [ aiohttp ]
+    ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+
+  preCheck = lib.optionalString stdenv.hostPlatform.isLinux ''
     ${redis-server}/bin/redis-server &
     REDIS_PID=$!
   '';
 
-  postCheck = lib.optionalString stdenv.isLinux ''
+  postCheck = lib.optionalString stdenv.hostPlatform.isLinux ''
     kill $REDIS_PID
   '';
 
@@ -95,25 +91,22 @@ buildPythonPackage rec {
   disabledTests = [
     # tests that require network access (like DNS lookups)
     "test_truesendall_with_dump_from_recording"
+    "test_aiohttp"
     "test_asyncio_record_replay"
     "test_gethostbyname"
     # httpx read failure
     "test_no_dangling_fds"
   ];
 
-  disabledTestPaths = lib.optionals stdenv.isDarwin [
-    "tests/main/test_redis.py"
-  ];
+  disabledTestPaths = lib.optionals stdenv.hostPlatform.isDarwin [ "tests/main/test_redis.py" ];
 
-  pythonImportsCheck = [
-    "mocket"
-  ];
+  pythonImportsCheck = [ "mocket" ];
 
   meta = with lib; {
     changelog = "https://github.com/mindflayer/python-mocket/releases/tag/${version}";
-    description = "A socket mock framework for all kinds of sockets including web-clients";
+    description = "Socket mock framework for all kinds of sockets including web-clients";
     homepage = "https://github.com/mindflayer/python-mocket";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/mockfs/default.nix b/pkgs/development/python-modules/mockfs/default.nix
index 680a6c9fc795b..5e6da22c91d41 100644
--- a/pkgs/development/python-modules/mockfs/default.nix
+++ b/pkgs/development/python-modules/mockfs/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, importlib-metadata
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  importlib-metadata,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -28,21 +29,17 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    importlib-metadata
-  ];
+  propagatedBuildInputs = [ importlib-metadata ];
 
   pythonImportsCheck = [ "mockfs" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A simple mock filesystem for use in unit tests";
+    description = "Simple mock filesystem for use in unit tests";
     homepage = "https://github.com/mockfs/mockfs";
     changelog = "https://github.com/mockfs/mockfs/blob/${src.rev}/CHANGES.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/mockito/default.nix b/pkgs/development/python-modules/mockito/default.nix
index 91c03c9cb6db7..709a358c368c0 100644
--- a/pkgs/development/python-modules/mockito/default.nix
+++ b/pkgs/development/python-modules/mockito/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatchling
-, numpy
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-A2Eo2n2vLaiaC2N71zMh6ZL/ZbqKOYdsojPuwX63fo8=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   nativeCheckInputs = [
     numpy
diff --git a/pkgs/development/python-modules/mockupdb/default.nix b/pkgs/development/python-modules/mockupdb/default.nix
index e06b1637b685c..47ba794d0a0ba 100644
--- a/pkgs/development/python-modules/mockupdb/default.nix
+++ b/pkgs/development/python-modules/mockupdb/default.nix
@@ -1,9 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pymongo
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pymongo,
+  pythonAtLeast,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -11,24 +13,19 @@ buildPythonPackage rec {
   version = "1.8.1";
   format = "setuptools";
 
-  disabled = pythonOlder "3.9";
+  # use the removed ssl.wrap_socket function
+  disabled = pythonOlder "3.9" || pythonAtLeast "3.12";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-020OW2RF/5FB400BL6K13+WJhHqh4+y413QHSWKvlE4=";
   };
 
-  propagatedBuildInputs = [
-    pymongo
-  ];
+  propagatedBuildInputs = [ pymongo ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mockupdb"
-  ];
+  pythonImportsCheck = [ "mockupdb" ];
 
   disabledTests = [
     # AssertionError: expected to receive Request(), got nothing
diff --git a/pkgs/development/python-modules/modbus-tk/default.nix b/pkgs/development/python-modules/modbus-tk/default.nix
new file mode 100644
index 0000000000000..5d82d3aec56ca
--- /dev/null
+++ b/pkgs/development/python-modules/modbus-tk/default.nix
@@ -0,0 +1,38 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pythonOlder,
+  pyserial,
+}:
+
+buildPythonPackage rec {
+  pname = "modbus-tk";
+  version = "1.1.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchPypi {
+    pname = "modbus_tk";
+    inherit version;
+    hash = "sha256-aQ+nu4bql4mSRl0tYci1rMY5zg6LgzoKqW1N0XLFZEo=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ pyserial ];
+
+  # Source no tagged anymore and PyPI doesn't ship tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "modbus_tk" ];
+
+  meta = with lib; {
+    description = "Module for simple Modbus interactions";
+    homepage = "https://github.com/ljean/modbus-tk";
+    license = licenses.lgpl21Only;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/moddb/default.nix b/pkgs/development/python-modules/moddb/default.nix
index a0205d5c4676a..17af65e37a206 100644
--- a/pkgs/development/python-modules/moddb/default.nix
+++ b/pkgs/development/python-modules/moddb/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonRelaxDepsHook
-, beautifulsoup4
-, pyrate-limiter
-, requests
-, toolz
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  beautifulsoup4,
+  pyrate-limiter,
+  requests,
+  toolz,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +20,6 @@ buildPythonPackage rec {
     hash = "sha256-2t5QQAmSLOrdNCl0XdsFPdP2UF10/qq69DovqeQ1Vt8=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   propagatedBuildInputs = [
     beautifulsoup4
@@ -37,9 +34,8 @@ buildPythonPackage rec {
 
   doCheck = false; # Tests try to access the internet.
 
-
   meta = with lib; {
-    description = "A Python scrapper to access ModDB mods, games and more as objects";
+    description = "Python scrapper to access ModDB mods, games and more as objects";
     homepage = "https://github.com/ClementJ18/moddb";
     license = licenses.mit;
     maintainers = with maintainers; [ kranzes ];
diff --git a/pkgs/development/python-modules/model-bakery/default.nix b/pkgs/development/python-modules/model-bakery/default.nix
index 82b91dd10da51..464b2920a799a 100644
--- a/pkgs/development/python-modules/model-bakery/default.nix
+++ b/pkgs/development/python-modules/model-bakery/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "model-bakery";
-  version = "1.18.0";
+  version = "1.19.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "model-bakers";
     repo = "model_bakery";
     rev = "refs/tags/${version}";
-    hash = "sha256-mf6NV7r/9kDCRlszx/QGtfEsC1O/SATd6+EX+w7ptEQ=";
+    hash = "sha256-hOXE3mddGmRRgO9qAlj3bnmco8QTg2rD0sgui3J9pp8=";
   };
 
   build-system = [ hatchling ];
diff --git a/pkgs/development/python-modules/model-checker/default.nix b/pkgs/development/python-modules/model-checker/default.nix
new file mode 100644
index 0000000000000..3de3be17c5464
--- /dev/null
+++ b/pkgs/development/python-modules/model-checker/default.nix
@@ -0,0 +1,47 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  tqdm,
+  z3-solver,
+}:
+
+buildPythonPackage rec {
+  pname = "model-checker";
+  version = "0.5.6";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    pname = "model_checker";
+    inherit version;
+    hash = "sha256-dt2/1qY0kyD0K0/d1NJa3q0NrwinmWb8Zd/Shtqj9Ow=";
+  };
+
+  # z3 does not provide a dist-info, so python-runtime-deps-check will fail
+  pythonRemoveDeps = [ "z3-solver" ];
+
+  build-system = [ setuptools ];
+
+
+  dependencies = [
+    tqdm
+    z3-solver
+  ];
+
+  # Tests have multiple issues, ImportError, TypeError, etc.
+  # Check with the next release > 0.3.13
+  doCheck = false;
+
+  pythonImportsCheck = [ "model_checker" ];
+
+  meta = with lib; {
+    description = "Hyperintensional theorem prover for counterfactual conditionals and modal operators";
+    homepage = "https://pypi.org/project/model-checker/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/modelcif/default.nix b/pkgs/development/python-modules/modelcif/default.nix
index e3bfea7074292..5604a067734da 100644
--- a/pkgs/development/python-modules/modelcif/default.nix
+++ b/pkgs/development/python-modules/modelcif/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, ihm
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  ihm,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "modelcif";
-  version = "0.9";
+  version = "1.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "ihmwg";
     repo = "python-modelcif";
     rev = "refs/tags/${version}";
-    hash = "sha256-u+e2QtG6gO1e31OzPfAuzfCkwZymEZMxa2p0haYplAk=";
+    hash = "sha256-zJLwBdyUyWnH1hBx9Kejl5NfY7zJUxeGb//swBT02Dw=";
   };
 
   nativeBuildInputs = [
@@ -24,13 +25,9 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    ihm
-  ];
+  propagatedBuildInputs = [ ihm ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # require network access
diff --git a/pkgs/development/python-modules/modeled/default.nix b/pkgs/development/python-modules/modeled/default.nix
index bcbeebf1ca37f..43459fc5a5989 100644
--- a/pkgs/development/python-modules/modeled/default.nix
+++ b/pkgs/development/python-modules/modeled/default.nix
@@ -1,12 +1,13 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, zetup
-, six
-, moretools
-, path
-, pytestCheckHook
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  zetup,
+  six,
+  moretools,
+  path,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,14 +23,19 @@ buildPythonPackage rec {
 
   buildInputs = [ zetup ];
 
-  propagatedBuildInputs = [ six moretools path ];
+  propagatedBuildInputs = [
+    six
+    moretools
+    path
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "modeled" ];
 
   meta = with lib; {
-    broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin;
+    broken =
+      (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) || stdenv.hostPlatform.isDarwin;
     description = "Universal data modeling for Python";
     homepage = "https://github.com/modeled/modeled";
     license = licenses.lgpl3Only;
diff --git a/pkgs/development/python-modules/moderngl-window/default.nix b/pkgs/development/python-modules/moderngl-window/default.nix
index abe68766a9ced..5539d053a0658 100644
--- a/pkgs/development/python-modules/moderngl-window/default.nix
+++ b/pkgs/development/python-modules/moderngl-window/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonRelaxDepsHook
-, setuptools
-, glfw
-, moderngl
-, numpy
-, pillow
-, pygame
-, pyglet
-, pyqt5
-, pyrr
-, pysdl2
-, pyside2
-, pythonOlder
-, scipy
-, trimesh
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  glfw,
+  mesa,
+  moderngl,
+  numpy,
+  pillow,
+  pygame,
+  pyglet,
+  pyqt5,
+  pyrr,
+  pysdl2,
+  pyside2,
+  pythonOlder,
+  scipy,
+  trimesh,
 }:
 
 buildPythonPackage rec {
@@ -33,12 +34,9 @@ buildPythonPackage rec {
     hash = "sha256-zTygSXU/vQZaFCuHbRBpO9/BYYA2UOid+wvhyc2bWMI=";
   };
 
-  pythonRelaxDeps = [
-    "pillow"
-  ];
+  pythonRelaxDeps = [ "pillow" ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -55,29 +53,17 @@ buildPythonPackage rec {
       trimesh
       scipy
     ];
-    glfw = [
-      glfw
-    ];
-    pygame = [
-      pygame
-    ];
-    PySDL2 = [
-      pysdl2
-    ];
-    PySide2 = [
-      pyside2
-    ];
-    pyqt5 = [
-      pyqt5
-    ];
+    glfw = [ glfw ];
+    pygame = [ pygame ];
+    PySDL2 = [ pysdl2 ];
+    PySide2 = [ pyside2 ];
+    pyqt5 = [ pyqt5 ];
   };
 
   # Tests need a display to run.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "moderngl_window"
-  ];
+  pythonImportsCheck = [ "moderngl_window" ];
 
   meta = with lib; {
     description = "Cross platform helper library for ModernGL making window creation and resource loading simple";
@@ -85,7 +71,7 @@ buildPythonPackage rec {
     changelog = "https://github.com/moderngl/moderngl-window/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ c0deaddict ];
-    platforms = platforms.mesaPlatforms;
-    broken = stdenv.isDarwin;
+    inherit (mesa.meta) platforms;
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/moderngl/default.nix b/pkgs/development/python-modules/moderngl/default.nix
index f2ff8760f02e7..2bfc6edf29449 100644
--- a/pkgs/development/python-modules/moderngl/default.nix
+++ b/pkgs/development/python-modules/moderngl/default.nix
@@ -1,39 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, libGL
-, libX11
-, glcontext
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  libGL,
+  libX11,
+  setuptools,
+  glcontext,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "moderngl";
-  version = "5.10.0";
-  format = "setuptools";
+  version = "5.11.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-EZyNNk3ePNjRwJ8jftSRZhe6dZlUoZUt9GlOUe5PZRE=";
+    hash = "sha256-rEVNXqhDHy9/DJXijaIEPb0wNTjChH/uBXA55AfdGRE=";
   };
 
+  build-system = [ setuptools ];
+
   buildInputs = [
     libGL
     libX11
   ];
 
-  propagatedBuildInputs = [
-    glcontext
-  ];
+  dependencies = [ glcontext ];
 
   # Tests need a display to run.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "moderngl"
-  ];
+  pythonImportsCheck = [ "moderngl" ];
 
   meta = with lib; {
     description = "High performance rendering for Python";
@@ -41,7 +41,7 @@ buildPythonPackage rec {
     changelog = "https://github.com/moderngl/moderngl/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ c0deaddict ];
-    # should be mesaPlatforms, darwin build breaks.
+    # should be mesa.meta.platforms, darwin build breaks.
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/python-modules/modestmaps/default.nix b/pkgs/development/python-modules/modestmaps/default.nix
index 180baaefce778..24c4ef2b0bcd2 100644
--- a/pkgs/development/python-modules/modestmaps/default.nix
+++ b/pkgs/development/python-modules/modestmaps/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pillow
-, isPy27
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pillow,
+  isPy27,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,8 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ pillow ];
 
   meta = with lib; {
-    description = "A library for building interactive maps";
+    description = "Library for building interactive maps";
     homepage = "http://modestmaps.com";
     license = licenses.bsd3;
   };
-
 }
diff --git a/pkgs/development/python-modules/mohawk/default.nix b/pkgs/development/python-modules/mohawk/default.nix
index 99caae9ec3f64..5054fcae7b79e 100644
--- a/pkgs/development/python-modules/mohawk/default.nix
+++ b/pkgs/development/python-modules/mohawk/default.nix
@@ -1,25 +1,42 @@
-{ lib, buildPythonPackage, fetchPypi, mock, nose, pytest, six }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch2,
+  pytestCheckHook,
+  six,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "mohawk";
   version = "1.1.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "08wppsv65yd0gdxy5zwq37yp6jmxakfz4a2yx5wwq2d222my786j";
+    hash = "sha256-0qDjqxCiCcx56V4o8t1UvUpz/RmY/+J7e6D5Yra+lyM=";
   };
 
-  propagatedBuildInputs = [ six ];
+  patches = [
+    (fetchpatch2 {
+      # https://github.com/kumar303/mohawk/pull/59
+      name = "nose-to-pytest.patch";
+      url = "https://github.com/kumar303/mohawk/compare/b7899166880e890f01cf2531b5686094ba08df8f...66157c7efbf6b0d18c30a9ffe5dfd84bef27bd3a.patch";
+      hash = "sha256-w3sP5XeBqOwoPGsWzYET4djYwuKPaS4OOlC3HBPD0NI=";
+    })
+  ];
 
-  nativeCheckInputs = [ mock nose pytest ];
+  build-system = [ setuptools ];
 
-  checkPhase = ''
-    pytest mohawk/tests.py
-  '';
+  dependencies = [ six ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pytestFlagsArray = [ "mohawk/tests.py" ];
 
   meta = {
-    description = "Python library for Hawk HTTP authorization.";
+    description = "Python library for Hawk HTTP authorization";
     homepage = "https://github.com/kumar303/mohawk";
     license = lib.licenses.mpl20;
     maintainers = [ ];
diff --git a/pkgs/development/python-modules/molbar/default.nix b/pkgs/development/python-modules/molbar/default.nix
new file mode 100644
index 0000000000000..be23018274faa
--- /dev/null
+++ b/pkgs/development/python-modules/molbar/default.nix
@@ -0,0 +1,70 @@
+{ buildPythonPackage
+, lib
+, gfortran
+, fetchgit
+, cmake
+, ninja
+, networkx
+, numpy
+, pandas
+, scipy
+, tqdm
+, joblib
+, numba
+, ase
+, scikit-build
+, dscribe
+, pyyaml
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  name = "MolBar";
+  version = "1.1.1";
+
+  src = fetchgit {
+    url = "https://git.rwth-aachen.de/bannwarthlab/molbar";
+    rev = "release_v${version}";
+    hash = "sha256-AFp2x8gil6nbZbgTZmuv+QAMImUMryyCc1by9U/ukYE=";
+  };
+
+  pyproject = true;
+
+  nativeBuildInputs = [
+    gfortran
+  ];
+
+  pythonRelaxDeps = [ "networkx" ];
+
+  build-system = [
+    cmake
+    scikit-build
+    ninja
+  ];
+
+  dependencies = [
+    networkx
+    numpy
+    pandas
+    scipy
+    tqdm
+    joblib
+    numba
+    ase
+    dscribe
+    pyyaml
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  dontUseCmakeConfigure = true;
+
+  doCheck = false; # Doesn't find the fortran libs before installation
+
+  meta = with lib; {
+    description = "Unique molecular identifiers for molecular barcoding";
+    homepage = "https://git.rwth-aachen.de/bannwarthlab/molbar";
+    license = licenses.mit;
+    maintainers = [ maintainers.sheepforce ];
+  };
+}
diff --git a/pkgs/development/python-modules/molecule/default.nix b/pkgs/development/python-modules/molecule/default.nix
index 170d0bd2f7413..5d935550d3c8e 100644
--- a/pkgs/development/python-modules/molecule/default.nix
+++ b/pkgs/development/python-modules/molecule/default.nix
@@ -23,14 +23,14 @@
 
 buildPythonPackage rec {
   pname = "molecule";
-  version = "24.2.1";
+  version = "24.9.0";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-g1IrqpuRVg6phic8qxScORVpdunWEkVxciYyCTWtVuQ=";
+    hash = "sha256-hUjtoTwxoepBugeGsp3eRmz7gSYXwleSFRM1sXpBD2M=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/molecule/plugins.nix b/pkgs/development/python-modules/molecule/plugins.nix
index dec568c4a9368..b87c3b121b546 100644
--- a/pkgs/development/python-modules/molecule/plugins.nix
+++ b/pkgs/development/python-modules/molecule/plugins.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonRelaxDepsHook
-, setuptools-scm
-, python-vagrant
-, docker
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  python-vagrant,
+  docker,
 }:
 
 buildPythonPackage rec {
@@ -18,22 +18,15 @@ buildPythonPackage rec {
   };
 
   # reverse the dependency
-  pythonRemoveDeps = [
-    "molecule"
-  ];
+  pythonRemoveDeps = [ "molecule" ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools-scm
   ];
 
   passthru.optional-dependencies = {
-    docker = [
-      docker
-    ];
-    vagrant = [
-      python-vagrant
-    ];
+    docker = [ docker ];
+    vagrant = [ python-vagrant ];
   };
 
   pythonImportsCheck = [ "molecule_plugins" ];
diff --git a/pkgs/development/python-modules/momepy/default.nix b/pkgs/development/python-modules/momepy/default.nix
new file mode 100644
index 0000000000000..6b551d58a909e
--- /dev/null
+++ b/pkgs/development/python-modules/momepy/default.nix
@@ -0,0 +1,57 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+
+  geopandas,
+  inequality,
+  libpysal,
+  mapclassify,
+  networkx,
+  packaging,
+  pandas,
+  setuptools-scm,
+  shapely,
+  tqdm,
+}:
+
+buildPythonPackage rec {
+  pname = "momepy";
+  version = "0.8.0";
+  pyproject = true;
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "pysal";
+    repo = "momepy";
+    rev = "v${version}";
+    hash = "sha256-r2iGzk54MsrkYB3Sp9/B1QGKnvqPGUj3MQhk6yqIoXE=";
+  };
+
+  build-system = [ setuptools-scm ];
+
+  propagatedBuildInputs = [
+    geopandas
+    inequality
+    libpysal
+    mapclassify
+    networkx
+    packaging
+    pandas
+    shapely
+    tqdm
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "momepy" ];
+
+  meta = {
+    description = "Urban Morphology Measuring Toolkit";
+    homepage = "https://github.com/pysal/momepy";
+    license = lib.licenses.bsd3;
+    maintainers = lib.teams.geospatial.members;
+  };
+}
diff --git a/pkgs/development/python-modules/monai-deploy/default.nix b/pkgs/development/python-modules/monai-deploy/default.nix
index 6e88c4b3a8df7..f719b47cf8b34 100644
--- a/pkgs/development/python-modules/monai-deploy/default.nix
+++ b/pkgs/development/python-modules/monai-deploy/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, colorama
-, fetchFromGitHub
-, networkx
-, numpy
-, pytest-lazy-fixture
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, typeguard
-, versioneer
+{
+  lib,
+  buildPythonPackage,
+  colorama,
+  fetchFromGitHub,
+  networkx,
+  numpy,
+  pytest-lazy-fixture,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  typeguard,
+  versioneer,
 }:
 
 buildPythonPackage rec {
@@ -30,15 +31,15 @@ buildPythonPackage rec {
     # Asked in https://github.com/Project-MONAI/monai-deploy-app-sdk/issues/450
     # if this patch can be incorporated upstream.
     substituteInPlace pyproject.toml \
-      --replace 'versioneer-518' 'versioneer'
+      --replace-fail 'versioneer-518' 'versioneer'
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     versioneer
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
     networkx
     colorama
diff --git a/pkgs/development/python-modules/monai/default.nix b/pkgs/development/python-modules/monai/default.nix
index 7c6ecf9b3ed66..d190facc17e7f 100644
--- a/pkgs/development/python-modules/monai/default.nix
+++ b/pkgs/development/python-modules/monai/default.nix
@@ -1,44 +1,56 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, ninja
-, ignite
-, numpy
-, pybind11
-, torch
-, which
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pythonOlder,
+  ninja,
+  ignite,
+  numpy,
+  pybind11,
+  torch,
+  which,
 }:
 
 buildPythonPackage rec {
   pname = "monai";
-  version = "1.3.0";
-  format = "setuptools";
+  version = "1.3.2";
+  pyproject = true;
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "Project-MONAI";
     repo = "MONAI";
     rev = "refs/tags/${version}";
-    hash = "sha256-h//igmSV1cPAFifE1woIluSyGwZBRByYMLqeY3oLHnk=";
+    hash = "sha256-wm4n3FuIXbE99RRLsGnZDeHtR/Tmj6C0s29pvflZg+o=";
   };
 
-  # Ninja is not detected by setuptools for some reason even though it's present:
-  postPatch = ''
-    substituteInPlace "setup.cfg" --replace "    ninja" ""
-  '';
+  patches = [
+    (fetchpatch {
+      name = "remove-distutils";
+      url = "https://github.com/Project-MONAI/MONAI/commit/87862f0d5730d42d282e779fc1450f18b4869863.patch";
+      hash = "sha256-wApYfugDPWcuxwmd91peNqc0+l+SoMlT8hhx99oI2Co=";
+    })
+  ];
 
   preBuild = ''
     export MAX_JOBS=$NIX_BUILD_CORES;
   '';
 
-  nativeBuildInputs = [ ninja which ];
+  nativeBuildInputs = [
+    ninja
+    which
+  ];
   buildInputs = [ pybind11 ];
-  propagatedBuildInputs = [ numpy torch ignite ];
+  propagatedBuildInputs = [
+    numpy
+    torch
+    ignite
+  ];
 
   BUILD_MONAI = 1;
 
-  doCheck = false;  # takes too long; tries to download data
+  doCheck = false; # takes too long; tries to download data
 
   pythonImportsCheck = [
     "monai"
diff --git a/pkgs/development/python-modules/monero/default.nix b/pkgs/development/python-modules/monero/default.nix
index 71554607326cb..a0ef05cb3b052 100644
--- a/pkgs/development/python-modules/monero/default.nix
+++ b/pkgs/development/python-modules/monero/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pycryptodomex
-, pysocks
-, pynacl
-, requests
-, six
-, varint
-, pytestCheckHook
-, pytest-cov
-, responses
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pycryptodomex,
+  pysocks,
+  pynacl,
+  requests,
+  six,
+  varint,
+  pytestCheckHook,
+  pytest-cov,
+  responses,
 }:
 
 buildPythonPackage rec {
@@ -41,7 +42,11 @@ buildPythonPackage rec {
     varint
   ];
 
-  nativeCheckInputs = [ pytestCheckHook pytest-cov responses ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-cov
+    responses
+  ];
 
   meta = with lib; {
     description = "Comprehensive Python module for handling Monero";
diff --git a/pkgs/development/python-modules/mongodict/default.nix b/pkgs/development/python-modules/mongodict/default.nix
index 26d3f0516c650..cb18f270726e8 100644
--- a/pkgs/development/python-modules/mongodict/default.nix
+++ b/pkgs/development/python-modules/mongodict/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pymongo
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pymongo,
 }:
 
 buildPythonPackage rec {
@@ -21,5 +22,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/turicas/mongodict/";
     license = licenses.gpl3;
   };
-
 }
diff --git a/pkgs/development/python-modules/mongoengine/default.nix b/pkgs/development/python-modules/mongoengine/default.nix
index 644f87521a2cb..9dd7ff86968bd 100644
--- a/pkgs/development/python-modules/mongoengine/default.nix
+++ b/pkgs/development/python-modules/mongoengine/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pymongo
-, isPy27
-, six
-, blinker
-, nose
-, pillow
-, coverage
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pymongo,
+  isPy27,
+  six,
+  blinker,
+  pytestCheckHook,
+  pillow,
+  coverage,
 }:
 
 buildPythonPackage rec {
@@ -29,7 +30,7 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
-    nose
+    pytestCheckHook
     pillow
     coverage
     blinker
diff --git a/pkgs/development/python-modules/mongomock/default.nix b/pkgs/development/python-modules/mongomock/default.nix
index 5e66ad42197cc..8c74f998f820d 100644
--- a/pkgs/development/python-modules/mongomock/default.nix
+++ b/pkgs/development/python-modules/mongomock/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, packaging
-, pbr
-, pytestCheckHook
-, pythonOlder
-, sentinels
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  packaging,
+  pbr,
+  pytestCheckHook,
+  pythonOlder,
+  sentinels,
 }:
 
 buildPythonPackage rec {
@@ -20,22 +21,16 @@ buildPythonPackage rec {
     hash = "sha256-8GzWKvuK4+9jujE0mr0iCmV+8N1PAkOilYfFIT+TG30=";
   };
 
-  nativeBuildInputs = [
-    pbr
-  ];
+  nativeBuildInputs = [ pbr ];
 
   propagatedBuildInputs = [
     packaging
     sentinels
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mongomock"
-  ];
+  pythonImportsCheck = [ "mongomock" ];
 
   meta = with lib; {
     homepage = "https://github.com/mongomock/mongomock";
diff --git a/pkgs/development/python-modules/mongoquery/default.nix b/pkgs/development/python-modules/mongoquery/default.nix
index bb17a77d36981..551dd1bb4d561 100644
--- a/pkgs/development/python-modules/mongoquery/default.nix
+++ b/pkgs/development/python-modules/mongoquery/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-, isPy27
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  isPy27,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     sha256 = "bd19fc465f0aa9feb3070f144fde41fc68cf28ea32dd3b7565f7df3ab6fc0ac2";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
-  pythonImportsCheck = [
-    "mongoquery"
-  ];
+  pythonImportsCheck = [ "mongoquery" ];
 
   meta = with lib; {
-    description = "A python implementation of mongodb queries";
+    description = "Python implementation of mongodb queries";
     homepage = "https://github.com/kapouille/mongoquery";
     license = with licenses; [ unlicense ];
     maintainers = with maintainers; [ misuzu ];
diff --git a/pkgs/development/python-modules/monitorcontrol/default.nix b/pkgs/development/python-modules/monitorcontrol/default.nix
index 920074b65f0b5..142c35f1e0d32 100644
--- a/pkgs/development/python-modules/monitorcontrol/default.nix
+++ b/pkgs/development/python-modules/monitorcontrol/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, pyudev
-, pytestCheckHook
-, voluptuous
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  pyudev,
+  pytestCheckHook,
+  voluptuous,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-fu0Lm7Tcw7TCCBDXTTY20JBAM7oeesyeHQFFILeZxX0=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    pyudev
-  ];
+  propagatedBuildInputs = [ pyudev ];
 
   nativeCheckInputs = [
     pytestCheckHook
     voluptuous
   ];
 
-  pythonImportsCheck = [
-    pname
-  ];
+  pythonImportsCheck = [ pname ];
 
   meta = with lib; {
     description = "Python monitor controls using DDC-CI";
diff --git a/pkgs/development/python-modules/monkeyhex/default.nix b/pkgs/development/python-modules/monkeyhex/default.nix
index 821a6765bb6f1..c07fe91a8c74b 100644
--- a/pkgs/development/python-modules/monkeyhex/default.nix
+++ b/pkgs/development/python-modules/monkeyhex/default.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
-, fetchPypi
-, future
-, lib
+{
+  buildPythonPackage,
+  fetchPypi,
+  future,
+  lib,
 }:
 
 buildPythonPackage rec {
@@ -23,7 +24,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "monkeyhex" ];
 
   meta = with lib; {
-    description = "A small library to assist users of the python shell who work in contexts where printed numbers are more usefully viewed in hexadecimal";
+    description = "Small library to assist users of the python shell who work in contexts where printed numbers are more usefully viewed in hexadecimal";
     homepage = "https://github.com/rhelmot/monkeyhex";
     license = licenses.mit;
     maintainers = [ maintainers.pamplemousse ];
diff --git a/pkgs/development/python-modules/monotonic/default.nix b/pkgs/development/python-modules/monotonic/default.nix
index f52e2b7ffbe90..46e8e0f354926 100644
--- a/pkgs/development/python-modules/monotonic/default.nix
+++ b/pkgs/development/python-modules/monotonic/default.nix
@@ -1,6 +1,8 @@
-{ lib, stdenv
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -13,17 +15,16 @@ buildPythonPackage rec {
     sha256 = "3a55207bcfed53ddd5c5bae174524062935efed17792e9de2ad0205ce9ad63f7";
   };
 
-  __propagatedImpureHostDeps = lib.optional stdenv.isDarwin "/usr/lib/libc.dylib";
+  __propagatedImpureHostDeps = lib.optional stdenv.hostPlatform.isDarwin "/usr/lib/libc.dylib";
 
-  patchPhase = lib.optionalString stdenv.isLinux ''
+  patchPhase = lib.optionalString stdenv.hostPlatform.isLinux ''
     substituteInPlace monotonic.py --replace \
       "ctypes.util.find_library('c')" "'${stdenv.cc.libc}/lib/libc.so'"
   '';
 
   meta = with lib; {
-    description = "An implementation of time.monotonic() for Python 2 & < 3.3";
+    description = "Implementation of time.monotonic() for Python 2 & < 3.3";
     homepage = "https://github.com/atdt/monotonic";
     license = licenses.asl20;
   };
-
 }
diff --git a/pkgs/development/python-modules/monty/default.nix b/pkgs/development/python-modules/monty/default.nix
index a2af96582ca54..4cf2f42fa31b4 100644
--- a/pkgs/development/python-modules/monty/default.nix
+++ b/pkgs/development/python-modules/monty/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, msgpack
-, numpy
-, pandas
-, pydantic
-, pymongo
-, pytestCheckHook
-, pythonOlder
-, ruamel-yaml
-, setuptools
-, setuptools-scm
-, torch
-, tqdm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  msgpack,
+  numpy,
+  pandas,
+  pydantic,
+  pymongo,
+  pytestCheckHook,
+  pythonOlder,
+  ruamel-yaml,
+  setuptools,
+  setuptools-scm,
+  torch,
+  tqdm,
 }:
 
 buildPythonPackage rec {
   pname = "monty";
-  version = "2024.3.31";
+  version = "2024.7.29";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -26,7 +27,7 @@ buildPythonPackage rec {
     owner = "materialsvirtuallab";
     repo = "monty";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Gg9KTsS7Np11jYBA8MgblQM6OmzOM/MPLsVZ6fUKT6g=";
+    hash = "sha256-ydt1T2agKUCBiMZ4uvQ3qshEiAQ0PP9EjPiWDXgH3Wo=";
   };
 
   postPatch = ''
@@ -54,9 +55,7 @@ buildPythonPackage rec {
     torch
   ];
 
-  pythonImportsCheck = [
-    "monty"
-  ];
+  pythonImportsCheck = [ "monty" ];
 
   disabledTests = [
     # Test file was removed and re-added after 2022.9.9
@@ -64,6 +63,8 @@ buildPythonPackage rec {
     "test_Path_objects"
     "test_zopen"
     "test_zpath"
+    # flaky, precision/rounding error
+    "TestJson.test_datetime"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/monzopy/default.nix b/pkgs/development/python-modules/monzopy/default.nix
new file mode 100644
index 0000000000000..799f788d6f120
--- /dev/null
+++ b/pkgs/development/python-modules/monzopy/default.nix
@@ -0,0 +1,40 @@
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "monzopy";
+  version = "1.3.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "JakeMartin-ICL";
+    repo = "monzopy";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-9Gj0312NOumoIWN/ES+dgPL3IblgvBSCPZA97OKuhZQ=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ aiohttp ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "monzopy" ];
+
+  meta = with lib; {
+    description = "Module to work with the Monzo API";
+    homepage = "https://github.com/JakeMartin-ICL/monzopy";
+    changelog = "https://github.com/JakeMartin-ICL/monzopy/releases/tag/v${version}";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/moonraker-api/default.nix b/pkgs/development/python-modules/moonraker-api/default.nix
index 9a0437ea056f1..8e6ffa019cb73 100644
--- a/pkgs/development/python-modules/moonraker-api/default.nix
+++ b/pkgs/development/python-modules/moonraker-api/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "moonraker-api";
-  version = "2.0.5";
+  version = "2.0.6";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -17,8 +18,8 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "cmroche";
     repo = pname;
-    rev = "v${version}";
-    hash = "sha256-PgFsXmdAmHXK0wZ6xLTu94RdME1L2H1Mb6V+qFlGXSk=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-AwSHF9BbxKBXIQdG4OX1vYYP/ST4jSz3uMMDUx0MSEg=";
   };
 
   postPatch = ''
@@ -27,18 +28,14 @@ buildPythonPackage rec {
       --replace 'name="moonraker-api",' 'name="moonraker-api",version="${version}",'
   '';
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   nativeCheckInputs = [
     pytest-aiohttp
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "moonraker_api"
-  ];
+  pythonImportsCheck = [ "moonraker_api" ];
 
   meta = with lib; {
     description = "Python API for the Moonraker API";
diff --git a/pkgs/development/python-modules/mopeka-iot-ble/default.nix b/pkgs/development/python-modules/mopeka-iot-ble/default.nix
index 3a9ca598c43e2..8798668d6c28f 100644
--- a/pkgs/development/python-modules/mopeka-iot-ble/default.nix
+++ b/pkgs/development/python-modules/mopeka-iot-ble/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, bluetooth-data-tools
-, bluetooth-sensor-state-data
-, buildPythonPackage
-, fetchFromGitHub
-, home-assistant-bluetooth
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, sensor-state-data
+{
+  lib,
+  bluetooth-data-tools,
+  bluetooth-sensor-state-data,
+  buildPythonPackage,
+  fetchFromGitHub,
+  home-assistant-bluetooth,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  sensor-state-data,
 }:
 
 buildPythonPackage rec {
   pname = "mopeka-iot-ble";
-  version = "0.7.0";
+  version = "0.8.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -21,7 +22,7 @@ buildPythonPackage rec {
     owner = "bluetooth-devices";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-wF3ZSR9kjn6qWaB7SRKsQuHfbNMwdKS/5qR9nStsw1c=";
+    hash = "sha256-CKLC0p66JapE9qNePE11ttoGMVd4kA7g28kA+pYLXCE=";
   };
 
   postPatch = ''
@@ -29,9 +30,7 @@ buildPythonPackage rec {
       --replace " --cov=mopeka_iot_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     bluetooth-data-tools
@@ -40,13 +39,9 @@ buildPythonPackage rec {
     sensor-state-data
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mopeka_iot_ble"
-  ];
+  pythonImportsCheck = [ "mopeka_iot_ble" ];
 
   meta = with lib; {
     description = "Library for Mopeka IoT BLE devices";
diff --git a/pkgs/development/python-modules/more-itertools/default.nix b/pkgs/development/python-modules/more-itertools/default.nix
index 6ebdc9801030f..ea2b3c43509d0 100644
--- a/pkgs/development/python-modules/more-itertools/default.nix
+++ b/pkgs/development/python-modules/more-itertools/default.nix
@@ -1,33 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, pytestCheckHook
-, six
-, stdenv
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  pytestCheckHook,
+  six,
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "more-itertools";
-  version = "10.2.0";
+  version = "10.3.0";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-j8y0gMQ9PpmgAIdjTAbdArDVD78IizgN5aQaAV7COeE=";
+    hash = "sha256-5dk+9BEiT7zvNmpujdxMV4G8Y1nUNBKmXdWWTkYRFGM=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # iterable = range(10 ** 10)  # Is efficiently reversible
   # OverflowError: Python int too large to convert to C long
@@ -38,6 +33,6 @@ buildPythonPackage rec {
     changelog = "https://more-itertools.readthedocs.io/en/stable/versions.html";
     description = "Expansion of the itertools module";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/more-properties/default.nix b/pkgs/development/python-modules/more-properties/default.nix
index 05c75b8f2107e..53e79468c66bc 100644
--- a/pkgs/development/python-modules/more-properties/default.nix
+++ b/pkgs/development/python-modules/more-properties/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -31,14 +32,12 @@ buildPythonPackage rec {
       --replace dataclasses ""
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "more_properties" ];
 
   meta = {
-    description = "A collection of property variants";
+    description = "Collection of property variants";
     homepage = "https://github.com/madman-bob/python-more-properties";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ dotlambda ];
diff --git a/pkgs/development/python-modules/morecantile/default.nix b/pkgs/development/python-modules/morecantile/default.nix
new file mode 100644
index 0000000000000..d7e31fa4af6e2
--- /dev/null
+++ b/pkgs/development/python-modules/morecantile/default.nix
@@ -0,0 +1,60 @@
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+
+  attrs,
+  click,
+  flit,
+  mercantile,
+  pydantic,
+  pyproj,
+  rasterio,
+}:
+
+buildPythonPackage rec {
+  pname = "morecantile";
+  version = "5.4.2";
+  pyproject = true;
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "developmentseed";
+    repo = "morecantile";
+    rev = version;
+    hash = "sha256-kUAde+6IUu95tFHFCB6kWoYsRf9GxR+gRJki/tvhIaY=";
+  };
+
+  nativeBuildInputs = [ flit ];
+
+  propagatedBuildInputs = [
+    attrs
+    click
+    pydantic
+    pyproj
+  ];
+
+  nativeCheckInputs = [
+    mercantile
+    pytestCheckHook
+    rasterio
+  ];
+
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
+    # https://github.com/developmentseed/morecantile/issues/156
+    "test_tiles_when_tms_bounds_and_provided_bounds_cross_antimeridian"
+  ];
+
+  pythonImportsCheck = [ "morecantile" ];
+
+  meta = {
+    description = "Construct and use map tile grids in different projection";
+    homepage = "https://developmentseed.org/morecantile/";
+    license = lib.licenses.mit;
+    maintainers = lib.teams.geospatial.members;
+    mainProgram = "morecantile";
+  };
+}
diff --git a/pkgs/development/python-modules/moreorless/default.nix b/pkgs/development/python-modules/moreorless/default.nix
index 39e467a59963e..98adafc7d2412 100644
--- a/pkgs/development/python-modules/moreorless/default.nix
+++ b/pkgs/development/python-modules/moreorless/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, parameterized
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  parameterized,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-N11iqsxMGgzwW2QYeOoHQaR/aDEuoUnnd/2Mc5culN0=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    click
-  ];
+  propagatedBuildInputs = [ click ];
 
   nativeCheckInputs = [
     parameterized
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "moreorless"
-  ];
+  pythonImportsCheck = [ "moreorless" ];
 
   pytestFlagsArray = [
     "moreorless/tests/click.py"
diff --git a/pkgs/development/python-modules/moretools/default.nix b/pkgs/development/python-modules/moretools/default.nix
index 7bbed27a8e99a..7787360d58355 100644
--- a/pkgs/development/python-modules/moretools/default.nix
+++ b/pkgs/development/python-modules/moretools/default.nix
@@ -1,6 +1,13 @@
-{ lib, buildPythonPackage, fetchPypi
-, six, path, zetup, pytest
-, decorator }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  path,
+  zetup,
+  pytest,
+  decorator,
+}:
 
 buildPythonPackage rec {
   pname = "moretools";
@@ -17,7 +24,11 @@ buildPythonPackage rec {
   '';
 
   nativeBuildInputs = [ zetup ];
-  nativeCheckInputs = [ six path pytest ];
+  nativeCheckInputs = [
+    six
+    path
+    pytest
+  ];
   propagatedBuildInputs = [ decorator ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/morfessor/default.nix b/pkgs/development/python-modules/morfessor/default.nix
index cf72937a70608..c8e71ac20ed04 100644
--- a/pkgs/development/python-modules/morfessor/default.nix
+++ b/pkgs/development/python-modules/morfessor/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "morfessor" ];
 
   meta = with lib; {
-    description = "A tool for unsupervised and semi-supervised morphological segmentation";
+    description = "Tool for unsupervised and semi-supervised morphological segmentation";
     homepage = "https://github.com/aalto-speech/morfessor";
     license = licenses.bsd2;
     maintainers = with maintainers; [ misuzu ];
diff --git a/pkgs/development/python-modules/morphys/default.nix b/pkgs/development/python-modules/morphys/default.nix
index 1f1c1f3e17efc..4ce36203a700f 100644
--- a/pkgs/development/python-modules/morphys/default.nix
+++ b/pkgs/development/python-modules/morphys/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
 }:
 buildPythonPackage rec {
   pname = "morphys";
diff --git a/pkgs/development/python-modules/mortgage/default.nix b/pkgs/development/python-modules/mortgage/default.nix
index ebe5b55b1dbad..ec5e39c6b8ab1 100644
--- a/pkgs/development/python-modules/mortgage/default.nix
+++ b/pkgs/development/python-modules/mortgage/default.nix
@@ -1,31 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "mortgage";
   version = "1.0.5";
-  format = "setuptools";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit version pname;
-    sha256 = "18fcb356c631e9cc27fa7019f6ff6021707e34b9ce3a3b7dc815661288709921";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "jlumbroso";
+    repo = "mortgage";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-UwSEKfMQqxpcF+7TF/+qD6l8gEO/qDCUklpZz1Nt/Ok=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  build-system = [ setuptools ];
 
-  doCheck = false; # No tests in sdist
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabled = pythonOlder "3.5";
+  pythonImportsCheck = [ "mortgage" ];
 
-  meta = {
+  meta = with lib; {
     description = "Mortgage calculator";
-    license = lib.licenses.mit;
+    homepage = "https://github.com/jlumbroso/mortgage";
+    license = licenses.mit;
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/motionblinds/default.nix b/pkgs/development/python-modules/motionblinds/default.nix
index 7d8aa5a784006..b791f9483ead7 100644
--- a/pkgs/development/python-modules/motionblinds/default.nix
+++ b/pkgs/development/python-modules/motionblinds/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pycryptodomex
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pycryptodomex,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "motionblinds";
-  version = "0.6.23";
+  version = "0.6.25";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -17,23 +18,17 @@ buildPythonPackage rec {
     owner = "starkillerOG";
     repo = "motion-blinds";
     rev = "refs/tags/${version}";
-    hash = "sha256-f5R58p6tMVqmXAjybae8qjeNI3vxtGJ7qxZOl9H5iKw=";
+    hash = "sha256-MU+zMka8d8wocc90vdS56BMHg6Z/LAAdRetiysh9Ssc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pycryptodomex
-  ];
+  dependencies = [ pycryptodomex ];
 
-  # Project has no tests
+  # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "motionblinds"
-  ];
+  pythonImportsCheck = [ "motionblinds" ];
 
   meta = with lib; {
     description = "Python library for interfacing with Motion Blinds";
diff --git a/pkgs/development/python-modules/motionblindsble/default.nix b/pkgs/development/python-modules/motionblindsble/default.nix
new file mode 100644
index 0000000000000..0b87622e4c381
--- /dev/null
+++ b/pkgs/development/python-modules/motionblindsble/default.nix
@@ -0,0 +1,55 @@
+{
+  lib,
+  bleak-retry-connector,
+  bleak,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pycryptodome,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "motionblindsble";
+  version = "0.1.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "LennP";
+    repo = "motionblindsble";
+    rev = "refs/tags/${version}";
+    hash = "sha256-GKCSPiwtE3O1vVFzamFkURc+V0w6u19B0vdvkpLY9ZE=";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace-fail "{{VERSION_PLACEHOLDER}}" "${version}"
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    bleak
+    bleak-retry-connector
+    pycryptodome
+  ];
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "motionblindsble" ];
+
+  meta = with lib; {
+    description = "Module to interface with Motionblinds motors using Bluetooth Low Energy (BLE)";
+    homepage = "https://github.com/LennP/motionblindsble";
+    changelog = "https://github.com/LennP/motionblindsble/releases/tag/${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/motioneye-client/default.nix b/pkgs/development/python-modules/motioneye-client/default.nix
index 4f2afc6e41136..487de3c3228cd 100644
--- a/pkgs/development/python-modules/motioneye-client/default.nix
+++ b/pkgs/development/python-modules/motioneye-client/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, stdenv
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-aiohttp
-, pytest-timeout
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-aiohttp,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,13 +31,9 @@ buildPythonPackage rec {
       --replace " --cov-report=html:htmlcov --cov-report=xml:coverage.xml --cov-report=term-missing --cov=motioneye_client --cov-fail-under=100" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   nativeCheckInputs = [
     pytest-aiohttp
@@ -44,15 +41,13 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "motioneye_client"
-  ];
+  pythonImportsCheck = [ "motioneye_client" ];
 
   meta = with lib; {
     description = "Python library for motionEye";
     homepage = "https://github.com/dermotduffy/motioneye-client";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/motmetrics/default.nix b/pkgs/development/python-modules/motmetrics/default.nix
index 36fa2d9a7557e..74a0fade7bd99 100644
--- a/pkgs/development/python-modules/motmetrics/default.nix
+++ b/pkgs/development/python-modules/motmetrics/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# build-system
-, setuptools
-
-# dependencies
-, numpy
-, pandas
-, scipy
-, xmltodict
-
-# tests
-, pytestCheckHook
-, pytest-benchmark
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  numpy,
+  pandas,
+  scipy,
+  xmltodict,
+
+  # tests
+  pytestCheckHook,
+  pytest-benchmark,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
     hash = "sha256-7LKLHXWgW4QpivAgzvWl6qEG0auVvpiZ6bfDViCKsFY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     numpy
@@ -45,14 +44,12 @@ buildPythonPackage rec {
     pytest-benchmark
   ];
 
-  pythonImportsCheck = [
-    "motmetrics"
-  ];
+  pythonImportsCheck = [ "motmetrics" ];
 
   meta = with lib; {
     description = "Bar_chart: Benchmark multiple object trackers (MOT) in Python";
     homepage = "https://github.com/cheind/py-motmetrics";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/moto/default.nix b/pkgs/development/python-modules/moto/default.nix
index a329d6aea971d..3f5ae8133936d 100644
--- a/pkgs/development/python-modules/moto/default.nix
+++ b/pkgs/development/python-modules/moto/default.nix
@@ -1,63 +1,62 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-
-# build-system
-, setuptools
-
-# dependencies
-, boto3
-, botocore
-, cryptography
-, jinja2
-, python-dateutil
-, requests
-, responses
-, werkzeug
-, xmltodict
-
-# optional-dependencies
-, antlr4-python3-runtime
-, aws-xray-sdk
-, cfn-lint
-, flask
-, flask-cors
-, docker
-, graphql-core
-, joserfc
-, jsonpath-ng
-, jsondiff
-, multipart
-, openapi-spec-validator
-, py-partiql-parser
-, pyparsing
-, pyyaml
-
-# tests
-, freezegun
-, pytestCheckHook
-, pytest-order
-, pytest-xdist
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  boto3,
+  botocore,
+  cryptography,
+  jinja2,
+  python-dateutil,
+  requests,
+  responses,
+  werkzeug,
+  xmltodict,
+
+  # optional-dependencies
+  antlr4-python3-runtime,
+  aws-xray-sdk,
+  cfn-lint,
+  flask,
+  flask-cors,
+  docker,
+  graphql-core,
+  joserfc,
+  jsonpath-ng,
+  jsondiff,
+  multipart,
+  openapi-spec-validator,
+  py-partiql-parser,
+  pyparsing,
+  pyyaml,
+
+  # tests
+  freezegun,
+  pytestCheckHook,
+  pytest-order,
+  pytest-xdist,
 }:
 
 buildPythonPackage rec {
   pname = "moto";
-  version = "5.0.5";
+  version = "5.0.12";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Lqyi33dY9oaN9CC/ByXNC5PZhwlgbx+4sjQ7W9yCLZE=";
+    hash = "sha256-EL1DS/2jKWOf6VKUcMTCeTgGTBOZhAJOamJRPlCv9Cc=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     boto3
     botocore
     cryptography
@@ -69,7 +68,7 @@ buildPythonPackage rec {
     jinja2
   ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     # non-exhaustive list of extras, that was cobbled together for testing
     all = [
       antlr4-python3-runtime
@@ -89,9 +88,7 @@ buildPythonPackage rec {
       pyyaml
       setuptools
     ];
-    cognitoidp = [
-      joserfc
-    ];
+    cognitoidp = [ joserfc ];
   };
 
   __darwinAllowLocalNetworking = true;
@@ -101,17 +98,19 @@ buildPythonPackage rec {
     pytestCheckHook
     pytest-order
     pytest-xdist
-  ] ++ passthru.optional-dependencies.all;
+  ] ++ optional-dependencies.all;
 
   # Some tests depend on AWS credentials environment variables to be set.
   env.AWS_ACCESS_KEY_ID = "ak";
   env.AWS_SECRET_ACCESS_KEY = "sk";
 
   pytestFlagsArray = [
-    "-m" "'not network and not requires_docker'"
+    "-m"
+    "'not network and not requires_docker'"
 
     # Matches upstream configuration, presumably due to expensive setup/teardown.
-    "--dist" "loadscope"
+    "--dist"
+    "loadscope"
 
     # Fails at local name resolution
     "--deselect=tests/test_s3/test_multiple_accounts_server.py::TestAccountIdResolution::test_with_custom_request_header"
@@ -157,6 +156,12 @@ buildPythonPackage rec {
     # Threading tests regularly blocks test execution
     "tests/test_utilities/test_threaded_server.py"
     "tests/test_s3/test_s3_bucket_policy.py"
+
+    # https://github.com/getmoto/moto/issues/7786
+    "tests/test_dynamodb/test_dynamodb_import_table.py"
+
+    # Infinite recursion with pycognito
+    "tests/test_cognitoidp/test_cognitoidp.py"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/motor/default.nix b/pkgs/development/python-modules/motor/default.nix
index d551aa19483b2..1a8aa99a36795 100644
--- a/pkgs/development/python-modules/motor/default.nix
+++ b/pkgs/development/python-modules/motor/default.nix
@@ -1,44 +1,46 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mockupdb
-, pymongo
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  hatch-requirements-txt,
+  mockupdb,
+  pymongo,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "motor";
-  version = "3.4.0";
-  format = "setuptools";
+  version = "3.5.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "mongodb";
-    repo = pname;
+    repo = "motor";
     rev = "refs/tags/${version}";
-    hash = "sha256-Rj8eYZxmw/cn/vkhLunmHgxMMHIQe80Zhc2p0q3b/AY=";
+    hash = "sha256-mg31FzMF0xEEhfLKAdF2pzEkULESFFGaXnE0uospXqE=";
   };
 
-  propagatedBuildInputs = [
-    pymongo
+  build-system = [
+    hatchling
+    hatch-requirements-txt
   ];
 
-  nativeCheckInputs = [
-    mockupdb
-  ];
+  dependencies = [ pymongo ];
+
+  nativeCheckInputs = [ mockupdb ];
 
   # network connections
   doCheck = false;
 
-  pythonImportsCheck = [
-    "motor"
-  ];
+  pythonImportsCheck = [ "motor" ];
 
-  meta = with lib; {
+  meta = {
     description = "Non-blocking MongoDB driver for Tornado or asyncio";
-    license = licenses.asl20;
+    license = lib.licenses.asl20;
     homepage = "https://github.com/mongodb/motor";
-    maintainers = with maintainers; [ globin ];
+    maintainers = with lib.maintainers; [ globin ];
   };
 }
diff --git a/pkgs/development/python-modules/mouseinfo/default.nix b/pkgs/development/python-modules/mouseinfo/default.nix
index 9d4fe2af480f4..9691fc36680b0 100644
--- a/pkgs/development/python-modules/mouseinfo/default.nix
+++ b/pkgs/development/python-modules/mouseinfo/default.nix
@@ -1,12 +1,12 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, pyperclip
-, fetchFromGitHub
-, xlib
-, pillow
+{
+  lib,
+  buildPythonPackage,
+  pyperclip,
+  fetchFromGitHub,
+  xlib,
+  pillow,
 }:
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "mouseinfo";
   version = "0.1.3";
 
@@ -33,8 +33,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
-    description = "An application to display XY position and RGB color information for the pixel currently under the mouse. Works on Python 2 and 3.";
+    description = "Application to display XY position and RGB color information for the pixel currently under the mouse. Works on Python 2 and 3";
     homepage = "https://github.com/asweigart/mouseinfo";
     license = licenses.gpl3;
     maintainers = with maintainers; [ lucasew ];
diff --git a/pkgs/development/python-modules/moviepy/default.nix b/pkgs/development/python-modules/moviepy/default.nix
index 65f35e85a0f1c..1c9e917b60abb 100644
--- a/pkgs/development/python-modules/moviepy/default.nix
+++ b/pkgs/development/python-modules/moviepy/default.nix
@@ -1,63 +1,99 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, numpy
-, decorator
-, imageio
-, imageio-ffmpeg
-, proglog
-, requests
-, tqdm
-  # Advanced image processing (triples size of output)
-, advancedProcessing ? false
-, scikit-image
-, scikit-learn
-, scipy
-, matplotlib
-, youtube-dl
+{
+  lib,
+  buildPythonPackage,
+  decorator,
+  fetchFromGitHub,
+  imageio,
+  imageio-ffmpeg,
+  matplotlib,
+  numpy,
+  proglog,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  scikit-image,
+  scikit-learn,
+  scipy,
+  setuptools,
+  tqdm,
+  yt-dlp,
 }:
 
 buildPythonPackage rec {
   pname = "moviepy";
   version = "1.0.3";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = pythonOlder "3.5";
+  disabled = pythonOlder "3.7";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "2884e35d1788077db3ff89e763c5ba7bfddbd7ae9108c9bc809e7ba58fa433f5";
+  src = fetchFromGitHub {
+    owner = "Zulko";
+    repo = "moviepy";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-l7AwzAKSaEV+pPbltKgwllK6X54oruU2w0AvoCsrESE=";
   };
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "decorator>=4.0.2,<5.0" "decorator>=4.0.2,<6.0"
+      --replace-fail "decorator>=4.0.2,<5.0" "decorator>=4.0.2,<6.0"
   '';
 
-  # No tests, require network connection
-  doCheck = false;
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    numpy
+  dependencies = [
     decorator
     imageio
     imageio-ffmpeg
-    tqdm
-    requests
+    numpy
     proglog
-  ] ++ lib.optionals advancedProcessing [
-    scikit-image
-    scikit-learn
-    scipy
-    matplotlib
-    youtube-dl
+    requests
+    tqdm
+  ];
+
+  passthru.optional-dependencies = {
+    optionals = [
+      matplotlib
+      scikit-image
+      scikit-learn
+      scipy
+      yt-dlp
+    ];
+  };
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+
+  pythonImportsCheck = [ "moviepy" ];
+
+  disabledTests = [
+    "test_cuts1"
+    "test_issue"
+    "test_PR"
+    "test_setup"
+    "test_subtitles"
+    "test_sys_write_flush"
+    # media duration mismatch: assert 2.9 == 3.0
+    "test_ffmpeg_parse_infos"
+  ];
+
+  disabledTestPaths = [
+    "tests/test_compositing.py"
+    "tests/test_fx.py"
+    "tests/test_ImageSequenceClip.py"
+    "tests/test_resourcerelease.py"
+    "tests/test_resourcereleasedemo.py"
+    "tests/test_TextClip.py"
+    "tests/test_VideoClip.py"
+    "tests/test_Videos.py"
+    "tests/test_videotools.py"
   ];
 
   meta = with lib; {
     description = "Video editing with Python";
     homepage = "https://zulko.github.io/moviepy/";
+    changelog = "https://github.com/Zulko/moviepy/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/mox3/default.nix b/pkgs/development/python-modules/mox3/default.nix
deleted file mode 100644
index 48b4d3f4fc2e0..0000000000000
--- a/pkgs/development/python-modules/mox3/default.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pythonAtLeast
-, subunit
-, testrepository
-, testtools
-, six
-, pbr
-, fixtures
-}:
-
-buildPythonPackage rec {
-  pname = "mox3";
-  version = "1.1.0";
-  format = "setuptools";
-  disabled = pythonOlder "3.6" || pythonAtLeast "3.11";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "8a526b7b9b6341f541a9aef3e08c93fd84a5373fe89d4cc51dd571f085b2363c";
-  };
-
-  buildInputs = [ subunit testrepository testtools six ];
-  propagatedBuildInputs = [ pbr fixtures ];
-
-  # Disabling as several tests dependencies are missing:
-  # https://opendev.org/openstack/mox3/src/branch/master/test-requirements.txt
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Mock object framework for Python";
-    homepage = "https://docs.openstack.org/mox3/latest/";
-    license = licenses.asl20;
-  };
-
-}
diff --git a/pkgs/development/python-modules/mozart-api/default.nix b/pkgs/development/python-modules/mozart-api/default.nix
new file mode 100644
index 0000000000000..053b922c148bc
--- /dev/null
+++ b/pkgs/development/python-modules/mozart-api/default.nix
@@ -0,0 +1,59 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  poetry-core,
+  aenum,
+  aioconsole,
+  aiohttp,
+  inflection,
+  pydantic,
+  python-dateutil,
+  typing-extensions,
+  urllib3,
+  websockets,
+  zeroconf,
+}:
+
+buildPythonPackage rec {
+  pname = "mozart-api";
+  version = "3.4.1.8.8";
+  pyproject = true;
+
+  disabled = pythonOlder "3.11";
+
+  src = fetchPypi {
+    pname = "mozart_api";
+    inherit version;
+    hash = "sha256-Lonv9f7/FSEdisKOuL+T1gKbxpog22DcNZTaK9L84Mc=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    aenum
+    aioconsole
+    aiohttp
+    inflection
+    pydantic
+    python-dateutil
+    typing-extensions
+    urllib3
+    websockets
+    zeroconf
+  ];
+
+  # Package has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "mozart_api" ];
+
+  meta = {
+    description = "REST API for the Bang & Olufsen Mozart platform";
+    homepage = "https://github.com/bang-olufsen/mozart-open-api";
+    changelog = "https://github.com/bang-olufsen/mozart-open-api/releases/tag/${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ pyrox0 ];
+  };
+}
diff --git a/pkgs/development/python-modules/mozilla-django-oidc/default.nix b/pkgs/development/python-modules/mozilla-django-oidc/default.nix
new file mode 100644
index 0000000000000..78c24b8b0b785
--- /dev/null
+++ b/pkgs/development/python-modules/mozilla-django-oidc/default.nix
@@ -0,0 +1,54 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools
+, djangorestframework
+, django
+, josepy
+, requests
+, cryptography
+}:
+
+buildPythonPackage rec {
+  pname = "mozilla-django-oidc";
+  version = "4.0.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "mozilla";
+    repo = "mozilla-django-oidc";
+    rev = version;
+    hash = "sha256-72F1aLLIId+YClTrpOz3bL8LSq6ZhZjjtv8V/GJGkqs=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+  ];
+
+  nativeCheckInputs = [
+    djangorestframework
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+
+    PYTHONPATH=.:$PYTHONPATH DJANGO_SETTINGS_MODULE=tests.settings django-admin test
+
+    runHook postCheck
+  '';
+
+  dependencies = [
+    django
+    josepy
+    requests
+    cryptography
+  ];
+
+  meta = {
+    description = "Django OpenID Connect library";
+    homepage = "https://github.com/mozilla/mozilla-django-oidc";
+    changelog = "https://github.com/mozilla/mozilla-django-oidc/releases/tag/${src.rev}";
+    license = lib.licenses.mpl20;
+    maintainers = with lib.maintainers; [ felbinger ];
+  };
+}
diff --git a/pkgs/development/python-modules/mpd2/default.nix b/pkgs/development/python-modules/mpd2/default.nix
index ce87b43c5fb02..3f8b44f5dcf74 100644
--- a/pkgs/development/python-modules/mpd2/default.nix
+++ b/pkgs/development/python-modules/mpd2/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, twisted
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  twisted,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,26 +20,22 @@ buildPythonPackage rec {
     hash = "sha256-S67DWEzEPtmUjVVZB5+vwmebBrKt4nPpCbNYJlSys/U=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   passthru.optional-dependencies = {
-    twisted = [
-      twisted
-    ];
+    twisted = [ twisted ];
   };
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ] ++ passthru.optional-dependencies.twisted;
+  nativeCheckInputs = [ unittestCheckHook ] ++ passthru.optional-dependencies.twisted;
 
   meta = with lib; {
     changelog = "https://github.com/Mic92/python-mpd2/blob/v${version}/doc/changes.rst";
-    description = "A Python client module for the Music Player Daemon";
+    description = "Python client module for the Music Player Daemon";
     homepage = "https://github.com/Mic92/python-mpd2";
     license = licenses.lgpl3Plus;
-    maintainers = with maintainers; [ mic92 hexa ];
+    maintainers = with maintainers; [
+      mic92
+      hexa
+    ];
   };
-
 }
diff --git a/pkgs/development/python-modules/mpegdash/default.nix b/pkgs/development/python-modules/mpegdash/default.nix
new file mode 100644
index 0000000000000..3480c4dcafd83
--- /dev/null
+++ b/pkgs/development/python-modules/mpegdash/default.nix
@@ -0,0 +1,36 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+}:
+buildPythonPackage rec {
+  pname = "mpegdash";
+  version = "0.4.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "sangwonl";
+    repo = "python-mpegdash";
+    rev = version;
+    hash = "sha256-eKtJ+QzeoMog5X1r1ix9vrmGTi/9KzdJiu80vrTX14I=";
+  };
+
+  nativeBuildInputs = [ setuptools ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  disabledTests = [
+    # requires network access
+    "test_xml2mpd_from_url"
+  ];
+
+  pythonImportsCheck = [ "mpegdash" ];
+
+  meta = {
+    description = "MPEG-DASH MPD(Media Presentation Description) Parser";
+    homepage = "https://github.com/sangwonl/python-mpegdash";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ drawbu ];
+  };
+}
diff --git a/pkgs/development/python-modules/mpi4py/default.nix b/pkgs/development/python-modules/mpi4py/default.nix
index 9119db8a204bd..1aba824408888 100644
--- a/pkgs/development/python-modules/mpi4py/default.nix
+++ b/pkgs/development/python-modules/mpi4py/default.nix
@@ -1,52 +1,62 @@
-{ lib, fetchPypi, fetchpatch, python, buildPythonPackage
-, mpi, mpiCheckPhaseHook, openssh
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  cython,
+  setuptools,
+  mpi,
+  openssh,
+  pytestCheckHook,
+  mpiCheckPhaseHook,
 }:
 
 buildPythonPackage rec {
   pname = "mpi4py";
-  version = "3.1.6";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-yPpiXg+SsILvlVv7UvGfpmkdKSc9fXETXSlaoUPe5ss=";
+  # See https://github.com/mpi4py/mpi4py/issues/386 . Part of the changes since
+  # the last release include Python 3.12 fixes.
+  version = "3.1.6-unstable-2024-07-08";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    repo = "mpi4py";
+    owner = "mpi4py";
+    rev = "e9a59719bbce1b9c351e1e30ecd3be3b459e97cd";
+    hash = "sha256-C/nidWGr8xsLV73u7HRtnXoQgYmoRJkD45DFrdXXTPI=";
   };
 
-  passthru = {
-    inherit mpi;
-  };
-
-  postPatch = ''
-    substituteInPlace test/test_spawn.py --replace \
-                      "unittest.skipMPI('openmpi(<3.0.0)')" \
-                      "unittest.skipMPI('openmpi')"
-  '';
-
-  configurePhase = "";
-
-  installPhase = ''
-    mkdir -p "$out/${python.sitePackages}"
-    export PYTHONPATH="$out/${python.sitePackages}:$PYTHONPATH"
-
-    ${python}/bin/${python.executable} setup.py install \
-      --install-lib=$out/${python.sitePackages} \
-      --prefix="$out"
-
-    # --install-lib:
-    # sometimes packages specify where files should be installed outside the usual
-    # python lib prefix, we override that back so all infrastructure (setup hooks)
-    # work as expected
-  '';
-
-  nativeBuildInputs = [ mpi ];
+  build-system = [
+    cython
+    setuptools
+    mpi
+  ];
+  dependencies = [
+    mpi
+  ];
 
   __darwinAllowLocalNetworking = true;
 
-  nativeCheckInputs = [ openssh mpiCheckPhaseHook ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    openssh
+    mpiCheckPhaseHook
+  ];
+  # Most tests pass, (besides `test_spawn.py`), but when reaching ~80% tests
+  # progress, an orted process hangs and the tests don't finish. This issue is
+  # probably due to the sandbox.
+  doCheck = false;
+  disabledTestPaths = [
+    # Almost all tests in this file fail (TODO: Report about this upstream..)
+    "test/test_spawn.py"
+  ];
+
+  passthru = {
+    inherit mpi;
+  };
 
-  meta = with lib; {
+  meta = {
     description = "Python bindings for the Message Passing Interface standard";
     homepage = "https://github.com/mpi4py/mpi4py";
-    license = licenses.bsd2;
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ doronbehar ];
   };
 }
diff --git a/pkgs/development/python-modules/mpi4py/tests.patch b/pkgs/development/python-modules/mpi4py/tests.patch
deleted file mode 100644
index 168e3b4b38d36..0000000000000
--- a/pkgs/development/python-modules/mpi4py/tests.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git i/test/test_dl.py w/test/test_dl.py
-index a3211a3..9d25569 100644
---- i/test/test_dl.py
-+++ w/test/test_dl.py
-@@ -12,7 +12,7 @@ class TestDL(unittest.TestCase):
-         if sys.platform == 'darwin':
-             libm = 'libm.dylib'
-         else:
--            libm = 'libm.so'
-+            libm = 'libm.so.6'
- 
-         handle = dl.dlopen(libm, dl.RTLD_LOCAL|dl.RTLD_LAZY)
-         self.assertTrue(handle != 0)
diff --git a/pkgs/development/python-modules/mpl-scatter-density/default.nix b/pkgs/development/python-modules/mpl-scatter-density/default.nix
index 152c07f10a7eb..832140a313971 100644
--- a/pkgs/development/python-modules/mpl-scatter-density/default.nix
+++ b/pkgs/development/python-modules/mpl-scatter-density/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, pytestCheckHook
-, fetchFromGitHub
-, fetchpatch
-, pythonOlder
-, setuptools-scm
-, setuptools
-, fast-histogram
-, matplotlib
-, numpy
-, wheel
-, pytest-mpl
+{
+  lib,
+  buildPythonPackage,
+  pytestCheckHook,
+  fetchFromGitHub,
+  fetchpatch,
+  pythonOlder,
+  setuptools-scm,
+  setuptools,
+  fast-histogram,
+  matplotlib,
+  numpy,
+  wheel,
+  pytest-mpl,
 }:
 
 buildPythonPackage rec {
@@ -42,7 +43,11 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [ matplotlib numpy fast-histogram ];
+  propagatedBuildInputs = [
+    matplotlib
+    numpy
+    fast-histogram
+  ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/mpldatacursor/default.nix b/pkgs/development/python-modules/mpldatacursor/default.nix
index 649d5ee814d2b..4b33f34b93ede 100644
--- a/pkgs/development/python-modules/mpldatacursor/default.nix
+++ b/pkgs/development/python-modules/mpldatacursor/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, matplotlib
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  matplotlib,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/mplfinance/default.nix b/pkgs/development/python-modules/mplfinance/default.nix
index 600c4ec0d05ae..a49b2a8afcc4d 100644
--- a/pkgs/development/python-modules/mplfinance/default.nix
+++ b/pkgs/development/python-modules/mplfinance/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, matplotlib, pandas }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  matplotlib,
+  pandas,
+}:
 
 buildPythonPackage rec {
   pname = "mplfinance";
@@ -10,7 +16,10 @@ buildPythonPackage rec {
     hash = "sha256-pATiprTELt8GrEkeKjILPfpdNDVoex5t+Mc+6Gg7cPY=";
   };
 
-  propagatedBuildInputs = [ matplotlib pandas ];
+  propagatedBuildInputs = [
+    matplotlib
+    pandas
+  ];
 
   # tests are only included on GitHub where this version misses a tag
   # and half of them fail
diff --git a/pkgs/development/python-modules/mplhep-data/default.nix b/pkgs/development/python-modules/mplhep-data/default.nix
index 12ec813f12b97..0c6baa8b3e3e1 100644
--- a/pkgs/development/python-modules/mplhep-data/default.nix
+++ b/pkgs/development/python-modules/mplhep-data/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -21,14 +22,16 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  pythonImportsCheck = [
-    "mplhep_data"
-  ];
+  pythonImportsCheck = [ "mplhep_data" ];
 
   meta = with lib; {
     description = "Sub-package to hold data (fonts) for mplhep";
     homepage = "https://github.com/scikit-hep/mplhep_data";
-    license = with licenses; [ mit gfl ofl ];
+    license = with licenses; [
+      mit
+      gfl
+      ofl
+    ];
     maintainers = with maintainers; [ veprbl ];
   };
 }
diff --git a/pkgs/development/python-modules/mplhep/default.nix b/pkgs/development/python-modules/mplhep/default.nix
index cbf4e46b499ee..36480a05393e5 100644
--- a/pkgs/development/python-modules/mplhep/default.nix
+++ b/pkgs/development/python-modules/mplhep/default.nix
@@ -1,47 +1,54 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hist
-, matplotlib
-, mplhep-data
-, pytestCheckHook
-, pytest-mock
-, pytest-mpl
-, scipy
-, setuptools
-, setuptools-scm
-, uhi
-, uproot
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  matplotlib,
+  mplhep-data,
+  numpy,
+  packaging,
+  uhi,
+  pytestCheckHook,
+  scipy,
+  pytest-mpl,
+  pytest-mock,
+  uproot,
+  hist,
 }:
 
 buildPythonPackage rec {
   pname = "mplhep";
-  version = "0.3.47";
-  format = "pyproject";
+  version = "0.3.52";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-GDLI/Y6tWiI5JcmQJ7BnwvKPGwdAwJDN4yGOgINcdB8=";
+  src = fetchFromGitHub {
+    owner = "scikit-hep";
+    repo = "mplhep";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-fcc/DG4irTvAOjCGAW7hW96z0yJNSvcpanfDGN9H9XI=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     matplotlib
-    uhi
     mplhep-data
+    numpy
+    packaging
+    uhi
   ];
 
   nativeCheckInputs = [
-    hist
     pytestCheckHook
-    pytest-mock
-    pytest-mpl
     scipy
+    pytest-mpl
+    pytest-mock
     uproot
+    hist
   ];
 
   disabledTests = [
@@ -50,14 +57,12 @@ buildPythonPackage rec {
     "test_uproot_versions"
   ];
 
-  pythonImportsCheck = [
-    "mplhep"
-  ];
+  pythonImportsCheck = [ "mplhep" ];
 
-  meta = with lib; {
+  meta = {
     description = "Extended histogram plots on top of matplotlib and HEP compatible styling similar to current collaboration requirements (ROOT)";
     homepage = "https://github.com/scikit-hep/mplhep";
-    license = with licenses; [ mit ];
-    maintainers = with maintainers; [ veprbl ];
+    license = with lib.licenses; [ mit ];
+    maintainers = with lib.maintainers; [ veprbl ];
   };
 }
diff --git a/pkgs/development/python-modules/mplleaflet/default.nix b/pkgs/development/python-modules/mplleaflet/default.nix
index d5d779cbd514b..76a37ffefe2c3 100644
--- a/pkgs/development/python-modules/mplleaflet/default.nix
+++ b/pkgs/development/python-modules/mplleaflet/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jinja2
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jinja2,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -10,7 +11,10 @@ buildPythonPackage rec {
   version = "0.0.5";
   format = "setuptools";
 
-  propagatedBuildInputs = [ jinja2 six ];
+  propagatedBuildInputs = [
+    jinja2
+    six
+  ];
 
   # No tests in archive
   doCheck = false;
diff --git a/pkgs/development/python-modules/mpmath/default.nix b/pkgs/development/python-modules/mpmath/default.nix
index 1a8e4c0309792..6f0f289e853b9 100644
--- a/pkgs/development/python-modules/mpmath/default.nix
+++ b/pkgs/development/python-modules/mpmath/default.nix
@@ -1,10 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, gmpy2
-, isPyPy
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gmpy2,
+  isPyPy,
+  setuptools,
+  pytestCheckHook,
+
+  # Reverse dependency
+  sage,
 }:
 
 buildPythonPackage rec {
@@ -19,25 +23,23 @@ buildPythonPackage rec {
     hash = "sha256-9BGcaC3TyolGeO65/H42T/WQY6z5vc1h+MA+8MGFChU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   passthru.optional-dependencies = {
-    gmpy = lib.optionals (!isPyPy) [
-      gmpy2
-    ];
+    gmpy = lib.optionals (!isPyPy) [ gmpy2 ];
+  };
+
+  passthru.tests = {
+    inherit sage;
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    homepage    = "https://mpmath.org/";
-    description = "A pure-Python library for multiprecision floating arithmetic";
-    license     = licenses.bsd3;
+    homepage = "https://mpmath.org/";
+    description = "Pure-Python library for multiprecision floating arithmetic";
+    license = licenses.bsd3;
     maintainers = with maintainers; [ lovek323 ];
-    platforms   = platforms.unix;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/mpris-server/default.nix b/pkgs/development/python-modules/mpris-server/default.nix
index cd790275e0856..06383416d96ca 100644
--- a/pkgs/development/python-modules/mpris-server/default.nix
+++ b/pkgs/development/python-modules/mpris-server/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonRelaxDepsHook
-, fetchPypi
-, emoji
-, pydbus
-, pygobject3
-, unidecode
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  emoji,
+  pydbus,
+  pygobject3,
+  unidecode,
+  setuptools,
 }:
 buildPythonPackage rec {
   pname = "mpris-server";
@@ -20,7 +20,6 @@ buildPythonPackage rec {
   };
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -31,9 +30,7 @@ buildPythonPackage rec {
     unidecode
   ];
 
-  pythonRelaxDeps = [
-    "emoji"
-  ];
+  pythonRelaxDeps = [ "emoji" ];
 
   pythonImportsCheck = [ "mpris_server" ];
 
diff --git a/pkgs/development/python-modules/mpv/default.nix b/pkgs/development/python-modules/mpv/default.nix
index 3763e25660a53..9f92995dd8bb2 100644
--- a/pkgs/development/python-modules/mpv/default.nix
+++ b/pkgs/development/python-modules/mpv/default.nix
@@ -1,26 +1,25 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, mpv
-, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mpv,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "mpv";
-  version = "1.0.4";
+  version = "1.0.6";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "jaseg";
     repo = "python-mpv";
     rev = "v${version}";
-    hash = "sha256-qP5Biw4sTLioAhmMZX+Pemue2PWc3N7afAe38dwJv3U=";
+    hash = "sha256-1axVJ8XXs0ZPgsVux3+6YUm1KttLceZyyHOuUEHIFl4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   buildInputs = [ mpv ];
 
@@ -35,7 +34,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "mpv" ];
 
   meta = with lib; {
-    description = "A python interface to the mpv media player";
+    description = "Python interface to the mpv media player";
     homepage = "https://github.com/jaseg/python-mpv";
     license = licenses.agpl3Plus;
     maintainers = with maintainers; [ onny ];
diff --git a/pkgs/development/python-modules/mpyq/default.nix b/pkgs/development/python-modules/mpyq/default.nix
index f23feb21f054e..cae321df5c0b4 100644
--- a/pkgs/development/python-modules/mpyq/default.nix
+++ b/pkgs/development/python-modules/mpyq/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -14,10 +15,10 @@ buildPythonPackage rec {
   };
 
   meta = {
-    description = "A Python library for extracting MPQ (MoPaQ) files.";
+    description = "Python library for extracting MPQ (MoPaQ) files";
     mainProgram = "mpyq";
     homepage = "https://github.com/eagleflo/mpyq";
     license = lib.licenses.bsd2;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/mqtt2influxdb/default.nix b/pkgs/development/python-modules/mqtt2influxdb/default.nix
index 351e1ab69085c..6f6bc9049e8bb 100644
--- a/pkgs/development/python-modules/mqtt2influxdb/default.nix
+++ b/pkgs/development/python-modules/mqtt2influxdb/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, influxdb
-, jsonpath-ng
-, paho-mqtt
-, py-expression-eval
-, pyaml
-, pycron
-, schema
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  influxdb,
+  jsonpath-ng,
+  paho-mqtt,
+  py-expression-eval,
+  pyaml,
+  pycron,
+  schema,
 }:
 buildPythonPackage rec {
   pname = "mqtt2influxdb";
diff --git a/pkgs/development/python-modules/mrjob/default.nix b/pkgs/development/python-modules/mrjob/default.nix
index 0a28d82f74ad4..669fee8887fb0 100644
--- a/pkgs/development/python-modules/mrjob/default.nix
+++ b/pkgs/development/python-modules/mrjob/default.nix
@@ -1,26 +1,26 @@
-{ lib
-, buildPythonPackage
-, pythonAtLeast
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  pythonAtLeast,
+  fetchFromGitHub,
 
-# propagates
-, pyyaml
+  # propagates
+  pyyaml,
 
-# optionals
-, boto3
-, botocore
-, google-cloud-dataproc
-, google-cloud-logging
-, google-cloud-storage
-, python-rapidjson
-, simplejson
-, ujson
+  # optionals
+  boto3,
+  botocore,
+  google-cloud-dataproc,
+  google-cloud-logging,
+  google-cloud-storage,
+  python-rapidjson,
+  simplejson,
+  ujson,
 
-
-# tests
-, pyspark
-, unittestCheckHook
-, warcio
+  # tests
+  pyspark,
+  unittestCheckHook,
+  warcio,
 }:
 
 buildPythonPackage rec {
@@ -37,9 +37,7 @@ buildPythonPackage rec {
     hash = "sha256-Yp4yUx6tkyGB622I9y+AWK2AkIDVGKQPMM+LtB/M3uo=";
   };
 
-  propagatedBuildInputs = [
-    pyyaml
-  ];
+  propagatedBuildInputs = [ pyyaml ];
 
   passthru.optional-dependencies = {
     aws = [
@@ -51,15 +49,9 @@ buildPythonPackage rec {
       google-cloud-logging
       google-cloud-storage
     ];
-    rapidjson = [
-      python-rapidjson
-    ];
-    simplejson = [
-      simplejson
-    ];
-    ujson = [
-      ujson
-    ];
+    rapidjson = [ python-rapidjson ];
+    simplejson = [ simplejson ];
+    ujson = [ ujson ];
   };
 
   doCheck = false; # failing tests
@@ -70,15 +62,13 @@ buildPythonPackage rec {
     warcio
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  unittestFlagsArray = [
-    "-v"
-  ];
+  unittestFlagsArray = [ "-v" ];
 
   meta = with lib; {
     changelog = "https://github.com/Yelp/mrjob/blob/v${version}/CHANGES.txt";
     description = "Run MapReduce jobs on Hadoop or Amazon Web Services";
     homepage = "https://github.com/Yelp/mrjob";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/mrsqm/default.nix b/pkgs/development/python-modules/mrsqm/default.nix
index 89d64611836e2..49afd2593d828 100644
--- a/pkgs/development/python-modules/mrsqm/default.nix
+++ b/pkgs/development/python-modules/mrsqm/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, cython
-, fftw
-, pandas
-, scikit-learn
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  cython,
+  fftw,
+  pandas,
+  scikit-learn,
+  numpy,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
 
   buildInputs = [ fftw ];
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
   propagatedBuildInputs = [
     pandas
diff --git a/pkgs/development/python-modules/ms-active-directory/default.nix b/pkgs/development/python-modules/ms-active-directory/default.nix
index ff908beaa7f22..7844373918f52 100644
--- a/pkgs/development/python-modules/ms-active-directory/default.nix
+++ b/pkgs/development/python-modules/ms-active-directory/default.nix
@@ -1,30 +1,34 @@
-{ lib
-, buildPythonPackage
-, dnspython
-, fetchFromGitHub
-, ldap3
-, pyasn1
-, pycryptodome
-, pythonOlder
-, pytz
-, six
+{
+  lib,
+  buildPythonPackage,
+  dnspython,
+  fetchFromGitHub,
+  ldap3,
+  pyasn1,
+  pycryptodome,
+  pythonOlder,
+  pytz,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "ms-active-directory";
-  version = "1.13.0";
-  format = "setuptools";
+  version = "1.14.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "zorn96";
     repo = "ms_active_directory";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+wfhtEGuC1R5jbEnWm4mDHIR096KKEcG/K8SuItwjGk=";
+    hash = "sha256-ZFIeG95+G9ofk54bYZpqu8uVfzjqsOrwWlIZvQgIWRI=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     dnspython
     ldap3
     pyasn1
@@ -36,15 +40,13 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ms_active_directory"
-  ];
+  pythonImportsCheck = [ "ms_active_directory" ];
 
   meta = with lib; {
     description = "Python module for integrating with Microsoft Active Directory domains";
     homepage = "https://github.com/zorn96/ms_active_directory/";
     changelog = "https://github.com/zorn96/ms_active_directory/releases/tag/v${version}";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/ms-cv/default.nix b/pkgs/development/python-modules/ms-cv/default.nix
index dbcbc6b0be5be..d651ce1a37715 100644
--- a/pkgs/development/python-modules/ms-cv/default.nix
+++ b/pkgs/development/python-modules/ms-cv/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, isPy27
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  isPy27,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
       --replace "pytest-runner" ""
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Correlation vector implementation in python";
diff --git a/pkgs/development/python-modules/msal-extensions/default.nix b/pkgs/development/python-modules/msal-extensions/default.nix
index 0c7fad002e89f..3efc69addf32e 100644
--- a/pkgs/development/python-modules/msal-extensions/default.nix
+++ b/pkgs/development/python-modules/msal-extensions/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, msal
-, portalocker
-, setuptools
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  msal,
+  portalocker,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "msal-extensions";
-  version = "1.1.0";
+  version = "1.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,14 +19,12 @@ buildPythonPackage rec {
     owner = "AzureAD";
     repo = "microsoft-authentication-extensions-for-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-ScInTvOgFxP5mgep5FRu6YZHPTtXhrcZGFE7Wdvcm4c=";
+    hash = "sha256-javYE1XDW1yrMZ/BLqIu/pUXChlBZlACctbD2RfWuis=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     msal
     portalocker
   ];
@@ -33,12 +32,10 @@ buildPythonPackage rec {
   # No tests found
   doCheck = false;
 
-  pythonImportsCheck = [
-    "msal_extensions"
-  ];
+  pythonImportsCheck = [ "msal_extensions" ];
 
   meta = with lib; {
-    description = "The Microsoft Authentication Library Extensions (MSAL-Extensions) for Python";
+    description = "Microsoft Authentication Library Extensions (MSAL-Extensions) for Python";
     homepage = "https://github.com/AzureAD/microsoft-authentication-extensions-for-python";
     changelog = "https://github.com/AzureAD/microsoft-authentication-extensions-for-python/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/msal/default.nix b/pkgs/development/python-modules/msal/default.nix
index a736cffb9b309..7fa2d3fccf0e7 100644
--- a/pkgs/development/python-modules/msal/default.nix
+++ b/pkgs/development/python-modules/msal/default.nix
@@ -1,43 +1,39 @@
-{ lib
-, cryptography
-, buildPythonPackage
-, fetchPypi
-, pyjwt
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  cryptography,
+  buildPythonPackage,
+  fetchPypi,
+  pyjwt,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "msal";
-  version = "1.28.0";
+  version = "1.30.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-gLur40Vny3NO/S7BhpstmBlcknRVNp2Ad7PFQgiMXJ0=";
+    hash = "sha256-tL8AhQCS5GUVfYFO+iShj3iChMmkeUkQJNYpAwheovs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cryptography
     pyjwt
     requests
-  ]
-  ++ pyjwt.optional-dependencies.crypto;
+  ] ++ pyjwt.optional-dependencies.crypto;
 
   # Tests assume Network Connectivity:
   # https://github.com/AzureAD/microsoft-authentication-library-for-python/blob/e2958961e8ec16d0af4199f60c36c3f913497e48/tests/test_authority.py#L73
   doCheck = false;
 
-  pythonImportsCheck = [
-    "msal"
-  ];
+  pythonImportsCheck = [ "msal" ];
 
   meta = with lib; {
     description = "Library to access the Microsoft Cloud by supporting authentication of users with Microsoft Azure Active Directory accounts (AAD) and Microsoft Accounts (MSA) using industry standard OAuth2 and OpenID Connect";
diff --git a/pkgs/development/python-modules/mscerts/default.nix b/pkgs/development/python-modules/mscerts/default.nix
index 6d7642c894703..b607444fc27f8 100644
--- a/pkgs/development/python-modules/mscerts/default.nix
+++ b/pkgs/development/python-modules/mscerts/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "mscerts";
-  version = "2024.3.27";
+  version = "2024.5.29";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -16,21 +17,17 @@ buildPythonPackage rec {
     owner = "ralphje";
     repo = "mscerts";
     rev = "refs/tags/${version}";
-    hash = "sha256-Hucf3tToYm3P6ebKNlUs5V+X1B95u9P2UC1yOItZOhc=";
+    hash = "sha256-1k0k5BSEyiJ1Brx7P+sgUQI63k1eT59edghnPVuCuZE=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   # extras_require contains signify -> circular dependency
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "mscerts"
-  ];
+  pythonImportsCheck = [ "mscerts" ];
 
   meta = with lib; {
     description = "Makes the Microsoft Trusted Root Program's Certificate Trust Lists available in Python";
diff --git a/pkgs/development/python-modules/msg-parser/default.nix b/pkgs/development/python-modules/msg-parser/default.nix
index 5e45338d0787c..f2ebb4108970c 100644
--- a/pkgs/development/python-modules/msg-parser/default.nix
+++ b/pkgs/development/python-modules/msg-parser/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-# dependencies
-, olefile
-# test dependencies
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  # dependencies
+  olefile,
+  # test dependencies
+  pytestCheckHook,
 }:
 let
   pname = "msg-parser";
@@ -24,16 +25,12 @@ buildPythonPackage {
     hash = "sha256-srDk6w8nzt0dyGCFQWfVCnKb4LawHoqoHX6d1l1dAmM=";
   };
 
-  propagatedBuildInputs = [
-    olefile
-  ];
+  propagatedBuildInputs = [ olefile ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "Python module to read, parse and converting Microsoft Outlook MSG E-Mail files.";
+    description = "Python module to read, parse and converting Microsoft Outlook MSG E-Mail files";
     mainProgram = "msg_parser";
     homepage = "https://github.com/vikramarsid/msg_parser";
     license = licenses.bsd2;
diff --git a/pkgs/development/python-modules/msgpack-numpy/default.nix b/pkgs/development/python-modules/msgpack-numpy/default.nix
index 640b1d2798f06..ff41fa354ebb9 100644
--- a/pkgs/development/python-modules/msgpack-numpy/default.nix
+++ b/pkgs/development/python-modules/msgpack-numpy/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cython
-, msgpack
-, numpy
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cython,
+  msgpack,
+  numpy,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,11 @@ buildPythonPackage rec {
     hash = "sha256-xmfTGAUTQi+cdUW+XuxdKW3Ls1fgb3LtOcxoN5dVbmk=";
   };
 
-  buildInputs = [
-    cython
-  ];
+  buildInputs = [ cython ];
 
   propagatedBuildInputs = [
-   msgpack
-   numpy
+    msgpack
+    numpy
   ];
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/msgpack/default.nix b/pkgs/development/python-modules/msgpack/default.nix
index e1a114d9344bc..8824d519544c5 100644
--- a/pkgs/development/python-modules/msgpack/default.nix
+++ b/pkgs/development/python-modules/msgpack/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, borgbackup
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  borgbackup,
 }:
 
 buildPythonPackage rec {
@@ -19,17 +20,11 @@ buildPythonPackage rec {
     hash = "sha256-lcArDifnBuSNDlQm0XEMp44PBijW6J1bWluRpfEidPM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "msgpack"
-  ];
+  pythonImportsCheck = [ "msgpack" ];
 
   passthru.tests = {
     # borgbackup is sensible to msgpack versions: https://github.com/borgbackup/borg/issues/3753
@@ -37,7 +32,7 @@ buildPythonPackage rec {
     inherit borgbackup;
   };
 
-  meta = with lib;  {
+  meta = with lib; {
     description = "MessagePack serializer implementation";
     homepage = "https://github.com/msgpack/msgpack-python";
     changelog = "https://github.com/msgpack/msgpack-python/blob/v${version}/ChangeLog.rst";
diff --git a/pkgs/development/python-modules/msgraph-core/default.nix b/pkgs/development/python-modules/msgraph-core/default.nix
index f8ee81afbac24..b7bddc916ab87 100644
--- a/pkgs/development/python-modules/msgraph-core/default.nix
+++ b/pkgs/development/python-modules/msgraph-core/default.nix
@@ -1,59 +1,62 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, httpx
-, microsoft-kiota-abstractions
-, microsoft-kiota-authentication-azure
- ,microsoft-kiota-http
-, requests
-, azure-identity
-, pytestCheckHook
-, responses
+{
+  lib,
+  buildPythonPackage,
+  python-dotenv,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  httpx,
+  microsoft-kiota-abstractions,
+  microsoft-kiota-authentication-azure,
+  microsoft-kiota-http,
+  requests,
+  azure-identity,
+  pytestCheckHook,
+  responses,
 }:
 
 buildPythonPackage rec {
   pname = "msgraph-core";
-  version = "1.0.0";
+  version = "1.1.4";
   pyproject = true;
 
-  disabled = pythonOlder "3.5";
-
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "microsoftgraph";
     repo = "msgraph-sdk-python-core";
     rev = "refs/tags/v${version}";
-    hash = "sha256-VizjN7sXqPvo9VOSaaUnogTlUDJ1OA2COYNTcVRqhJA=";
+    hash = "sha256-r8awjj4yo8BXQ0vZiJW+ky1sTvC04FzcViJY725/P6k=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     httpx
     microsoft-kiota-abstractions
     microsoft-kiota-authentication-azure
     microsoft-kiota-http
     requests
-
   ];
 
   nativeCheckInputs = [
     azure-identity
     pytestCheckHook
+    python-dotenv
     responses
   ];
 
-  pythonImportsCheck = [
-    "msgraph_core"
+  pythonImportsCheck = [ "msgraph_core" ];
+
+  disabledTestPaths = [
+    # client_id should be the id of a Microsoft Entra application
+    "tests/tasks/test_page_iterator.py"
   ];
 
   meta = {
     description = "Core component of the Microsoft Graph Python SDK";
     homepage = "https://github.com/microsoftgraph/msgraph-sdk-python-core";
+    changelog = "https://github.com/microsoftgraph/msgraph-sdk-python-core/releases/tag/v${version}";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ dotlambda ];
   };
diff --git a/pkgs/development/python-modules/msgraph-sdk/default.nix b/pkgs/development/python-modules/msgraph-sdk/default.nix
index 7dc4e3fd062f2..1a8e6c78c56e2 100644
--- a/pkgs/development/python-modules/msgraph-sdk/default.nix
+++ b/pkgs/development/python-modules/msgraph-sdk/default.nix
@@ -3,6 +3,7 @@
   azure-identity,
   buildPythonPackage,
   fetchFromGitHub,
+  flit-core,
   microsoft-kiota-abstractions,
   microsoft-kiota-authentication-azure,
   microsoft-kiota-http,
@@ -12,12 +13,11 @@
   microsoft-kiota-serialization-text,
   msgraph-core,
   pythonOlder,
-  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "msgraph-sdk";
-  version = "1.2.0";
+  version = "1.8.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,10 +26,10 @@ buildPythonPackage rec {
     owner = "microsoftgraph";
     repo = "msgraph-sdk-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-UaGdusPGWlF7gTzpCq9WrF/evdDSK5srrkH8/Vz9O8M=";
+    hash = "sha256-Vud/MaRmY/xmTJXofF8BHpl3TRxfrxlUdX0xDHKpwIA=";
   };
 
-  build-system = [ setuptools ];
+  build-system = [ flit-core ];
 
   dependencies = [
     azure-identity
@@ -51,7 +51,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Microsoft Graph SDK for Python";
     homepage = "https://github.com/microsoftgraph/msgraph-sdk-python";
-    changelog = "https://github.com/microsoftgraph/msgraph-sdk-python/blob/${version}/CHANGELOG.md";
+    changelog = "https://github.com/microsoftgraph/msgraph-sdk-python/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/msgspec/default.nix b/pkgs/development/python-modules/msgspec/default.nix
index 6dac69d22db8e..1af1b9814a160 100644
--- a/pkgs/development/python-modules/msgspec/default.nix
+++ b/pkgs/development/python-modules/msgspec/default.nix
@@ -1,10 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, msgpack
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-xqtV60saQNINPMpOnZRSDnicedPSPBUQwPSE5zJGrTo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # Requires libasan to be accessible
   doCheck = false;
 
-  pythonImportsCheck = [
-    "msgspec"
-  ];
+  pythonImportsCheck = [ "msgspec" ];
 
   meta = with lib; {
     description = "Module to handle JSON/MessagePack";
diff --git a/pkgs/development/python-modules/msldap/default.nix b/pkgs/development/python-modules/msldap/default.nix
index 6b013aa02a63f..7bfe74af8ab99 100644
--- a/pkgs/development/python-modules/msldap/default.nix
+++ b/pkgs/development/python-modules/msldap/default.nix
@@ -1,36 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, unicrypto
-, asyauth
-, asysocks
-, asn1crypto
-, winacl
-, prompt-toolkit
-, tqdm
-, wcwidth
-, tabulate
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  unicrypto,
+  asyauth,
+  asysocks,
+  asn1crypto,
+  winacl,
+  prompt-toolkit,
+  tqdm,
+  wcwidth,
+  tabulate,
 }:
 
 buildPythonPackage rec {
   pname = "msldap";
-  version = "0.5.10";
+  version = "0.5.12";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Zb/g5QLJTSb0XTZvVnzbYkYvJ/ZVvQri8CKP48n5ibg=";
+    hash = "sha256-RKKj0oUPkl5QtrgtRRXHTO6lSLfB/E09DT9t9loMxUA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     unicrypto
     asyauth
     asysocks
@@ -45,9 +44,7 @@ buildPythonPackage rec {
   # Project doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "msldap"
-  ];
+  pythonImportsCheck = [ "msldap" ];
 
   meta = with lib; {
     description = "Python LDAP library for auditing MS AD";
diff --git a/pkgs/development/python-modules/msmart-ng/default.nix b/pkgs/development/python-modules/msmart-ng/default.nix
new file mode 100644
index 0000000000000..0612e47799d44
--- /dev/null
+++ b/pkgs/development/python-modules/msmart-ng/default.nix
@@ -0,0 +1,60 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+
+  # dependencies
+  httpx,
+  pycryptodome,
+
+  # tests
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "msmart-ng";
+  version = "2024.9.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "mill1000";
+    repo = "midea-msmart";
+    rev = version;
+    hash = "sha256-djo+sINurnrt0GO8045bgNstjh+yl+CE2GJ1vWivAqY=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    httpx
+    pycryptodome
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  disabledTestPaths = [
+    # network access
+    "msmart/tests/test_cloud.py"
+  ];
+
+  pythonImportsCheck = [ "msmart" ];
+
+  meta = with lib; {
+    changelog = "https://github.com/mill1000/midea-msmart/releases/tag/${version}";
+    description = "Python library for local control of Midea (and associated brands) smart air conditioners";
+    homepage = "https://github.com/mill1000/midea-msmart";
+    license = licenses.mit;
+    mainProgram = "msmart-ng";
+    maintainers = with maintainers; [
+      hexa
+      emilylange
+    ];
+  };
+}
diff --git a/pkgs/development/python-modules/msoffcrypto-tool/default.nix b/pkgs/development/python-modules/msoffcrypto-tool/default.nix
index 830a37164a5e0..fe5d79ece2d3e 100644
--- a/pkgs/development/python-modules/msoffcrypto-tool/default.nix
+++ b/pkgs/development/python-modules/msoffcrypto-tool/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "msoffcrypto-tool";
-  version = "5.4.0";
+  version = "5.4.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "nolze";
     repo = "msoffcrypto-tool";
     rev = "refs/tags/v${version}";
-    hash = "sha256-1LTFwXTIvFdrYyI1pDUPzQHw3/043+FGHDnKYWaomY0=";
+    hash = "sha256-nwCjgcZqD0hptHC0WqIodHC5m/JHYyUdfEngIoXzNqA=";
   };
 
   build-system = [ poetry-core ];
diff --git a/pkgs/development/python-modules/msprime/default.nix b/pkgs/development/python-modules/msprime/default.nix
index c09b3b8d7609d..087ee01fdc55b 100644
--- a/pkgs/development/python-modules/msprime/default.nix
+++ b/pkgs/development/python-modules/msprime/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, demes
-, fetchPypi
-, gsl
-, newick
-, numpy
-, oldest-supported-numpy
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, scipy
-, setuptools-scm
-, tskit
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  demes,
+  fetchPypi,
+  gsl,
+  newick,
+  numpy,
+  oldest-supported-numpy,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  scipy,
+  setuptools-scm,
+  tskit,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     wheel
   ];
 
-  buildInputs = [
-    gsl
-  ];
+  buildInputs = [ gsl ];
 
   propagatedBuildInputs = [
     numpy
@@ -71,9 +70,7 @@ buildPythonPackage rec {
   preCheck = ''
     rm -r msprime
   '';
-  pythonImportsCheck = [
-    "msprime"
-  ];
+  pythonImportsCheck = [ "msprime" ];
 
   meta = with lib; {
     description = "Simulate genealogical trees and genomic sequence data using population genetic models";
diff --git a/pkgs/development/python-modules/msrest/default.nix b/pkgs/development/python-modules/msrest/default.nix
index 5f4f9869e3047..937d489f6f5e7 100644
--- a/pkgs/development/python-modules/msrest/default.nix
+++ b/pkgs/development/python-modules/msrest/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, aiodns
-, aiohttp
-, azure-core
-, buildPythonPackage
-, certifi
-, fetchFromGitHub
-, httpretty
-, isodate
-, pytest-aiohttp
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, requests
-, requests-oauthlib
-, setuptools
-, trio
+{
+  lib,
+  aiodns,
+  aiohttp,
+  azure-core,
+  buildPythonPackage,
+  certifi,
+  fetchFromGitHub,
+  httpretty,
+  isodate,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  requests,
+  requests-oauthlib,
+  setuptools,
+  trio,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     hash = "sha256-1EXXXflhDeU+erdI+NsWxSX76ooDTl3+MyQwRzm2xV0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     azure-core
@@ -53,31 +52,34 @@ buildPythonPackage rec {
     trio
   ];
 
-  disabledTests = [
-    # Test require network access
-    "test_basic_aiohttp"
-    "test_basic_aiohttp"
-    "test_basic_async_requests"
-    "test_basic_async_requests"
-    "test_conf_async_requests"
-    "test_conf_async_requests"
-    "test_conf_async_trio_requests"
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    # AttributeError: 'TestAuthentication' object has no attribute...
-    "test_apikey_auth"
-    "test_cs_auth"
-    "test_eventgrid_auth"
-    "test_eventgrid_domain_auth"
-  ];
+  disabledTests =
+    [
+      # Test require network access
+      "test_basic_aiohttp"
+      "test_basic_aiohttp"
+      "test_basic_async_requests"
+      "test_basic_async_requests"
+      "test_conf_async_requests"
+      "test_conf_async_requests"
+      "test_conf_async_trio_requests"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      # AttributeError: 'TestAuthentication' object has no attribute...
+      "test_apikey_auth"
+      "test_cs_auth"
+      "test_eventgrid_auth"
+      "test_eventgrid_domain_auth"
+    ];
 
-  pythonImportsCheck = [
-    "msrest"
-  ];
+  pythonImportsCheck = [ "msrest" ];
 
   meta = with lib; {
-    description = "The runtime library for AutoRest generated Python clients";
+    description = "Runtime library for AutoRest generated Python clients";
     homepage = "https://github.com/Azure/msrest-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ bendlas jonringer maxwilson ];
+    maintainers = with maintainers; [
+      bendlas
+      maxwilson
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/msrestazure/default.nix b/pkgs/development/python-modules/msrestazure/default.nix
index b997cd9b5065c..9a18be120a602 100644
--- a/pkgs/development/python-modules/msrestazure/default.nix
+++ b/pkgs/development/python-modules/msrestazure/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, adal
-, buildPythonPackage
-, fetchFromGitHub
-, httpretty
-, mock
-, msrest
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  adal,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpretty,
+  mock,
+  msrest,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-ZZVZi0v1ucD2g5FpLaNhfNBf6Ab10fUEcEdkY4ELaEY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     adal
@@ -41,14 +40,14 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "msrest"
-  ];
+  pythonImportsCheck = [ "msrest" ];
 
   meta = with lib; {
-    description = "The runtime library 'msrestazure' for AutoRest generated Python clients";
+    description = "Runtime library 'msrestazure' for AutoRest generated Python clients";
     homepage = "https://azure.microsoft.com/en-us/develop/python/";
     license = licenses.mit;
-    maintainers = with maintainers; [ bendlas jonringer ];
+    maintainers = with maintainers; [
+      bendlas
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/mss/default.nix b/pkgs/development/python-modules/mss/default.nix
index ecc0787062f8f..b94269a4a3b85 100644
--- a/pkgs/development/python-modules/mss/default.nix
+++ b/pkgs/development/python-modules/mss/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
   # Skipping tests due to most relying on DISPLAY being set
   doCheck = false;
 
-  pythonImportsCheck = [
-    "mss"
-  ];
+  pythonImportsCheck = [ "mss" ];
 
   meta = with lib; {
     description = "Cross-platform multiple screenshots module";
diff --git a/pkgs/development/python-modules/mt-940/default.nix b/pkgs/development/python-modules/mt-940/default.nix
index e8a0321422541..beec1bb17ee5f 100644
--- a/pkgs/development/python-modules/mt-940/default.nix
+++ b/pkgs/development/python-modules/mt-940/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -26,24 +27,20 @@ buildPythonPackage rec {
     sed -i "/--no-cov/d" pytest.ini
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pyyaml
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "mt940"
-  ];
+  pythonImportsCheck = [ "mt940" ];
 
   meta = with lib; {
     description = "Module to parse MT940 files and returns smart Python collections for statistics and manipulation";
     homepage = "https://github.com/WoLpH/mt940";
     changelog = "https://github.com/wolph/mt940/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/mujoco/default.nix b/pkgs/development/python-modules/mujoco/default.nix
index 9237dbb6501ca..6416d75a38482 100644
--- a/pkgs/development/python-modules/mujoco/default.nix
+++ b/pkgs/development/python-modules/mujoco/default.nix
@@ -1,23 +1,33 @@
-{ absl-py
-, buildPythonPackage
-, cmake
-, etils
-, fetchPypi
-, glfw
-, lib
-, mujoco
-, numpy
-, perl
-, pybind11
-, pyopengl
-, python
-, setuptools
-, stdenv
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+
+  # nativeBuildInputs
+  cmake,
+
+  # build-system
+  setuptools,
+
+  # buildInputs
+  mujoco,
+  pybind11,
+
+  # dependencies
+  absl-py,
+  etils,
+  glfw,
+  numpy,
+  pyopengl,
+
+  perl,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "mujoco";
-  version = "3.1.4";
+  inherit (mujoco) version;
 
   pyproject = true;
 
@@ -27,13 +37,21 @@ buildPythonPackage rec {
   # in the project's CI.
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-GdeL1zMri/ArjXyjXTgan48WVPTHDA1/SZxtTYB8QFk=";
+    hash = "sha256-3WF/QMHARPXff7yTM9MJTTyIYp1OPYYiTly0LeQKaos=";
   };
 
-  nativeBuildInputs = [ cmake setuptools ];
+  nativeBuildInputs = [ cmake ];
+
   dontUseCmakeConfigure = true;
-  buildInputs = [ mujoco pybind11 ];
-  propagatedBuildInputs = [
+
+  build-system = [ setuptools ];
+
+  buildInputs = [
+    mujoco
+    pybind11
+  ];
+
+  dependencies = [
     absl-py
     etils
     glfw
@@ -53,31 +71,36 @@ buildPythonPackage rec {
   preConfigure =
     # Use non-system eigen3, lodepng, abseil: Remove mirror info and prefill
     # dependency directory. $build from setuptools.
-    (let
-      # E.g. 3.11.2 -> "311"
-      pythonVersionMajorMinor = with lib.versions;
-        "${major python.pythonVersion}${minor python.pythonVersion}";
-
-      # E.g. "linux-aarch64"
-      platform = with stdenv.hostPlatform.parsed;
-        "${kernel.name}-${cpu.name}";
-    in ''
-      ${perl}/bin/perl -0777 -i -pe "s/GIT_REPO\n.*\n.*GIT_TAG\n.*\n//gm" mujoco/CMakeLists.txt
-      ${perl}/bin/perl -0777 -i -pe "s/(FetchContent_Declare\(\n.*lodepng\n.*)(GIT_REPO.*\n.*GIT_TAG.*\n)(.*\))/\1\3/gm" mujoco/simulate/CMakeLists.txt
-
-      build="/build/${pname}-${version}/build/temp.${platform}-cpython-${pythonVersionMajorMinor}/"
-      mkdir -p $build/_deps
-      ln -s ${mujoco.pin.lodepng} $build/_deps/lodepng-src
-      ln -s ${mujoco.pin.eigen3} $build/_deps/eigen-src
-      ln -s ${mujoco.pin.abseil-cpp} $build/_deps/abseil-cpp-src
-    '');
-
-  meta = with lib; {
-    description =
-      "Python bindings for MuJoCo: a general purpose physics simulator.";
+    (
+      let
+        # E.g. 3.11.2 -> "311"
+        pythonVersionMajorMinor =
+          with lib.versions;
+          "${major python.pythonVersion}${minor python.pythonVersion}";
+
+        # E.g. "linux-aarch64"
+        platform = with stdenv.hostPlatform.parsed; "${kernel.name}-${cpu.name}";
+      in
+      ''
+        ${perl}/bin/perl -0777 -i -pe "s/GIT_REPO\n.*\n.*GIT_TAG\n.*\n//gm" mujoco/CMakeLists.txt
+        ${perl}/bin/perl -0777 -i -pe "s/(FetchContent_Declare\(\n.*lodepng\n.*)(GIT_REPO.*\n.*GIT_TAG.*\n)(.*\))/\1\3/gm" mujoco/simulate/CMakeLists.txt
+
+        build="/build/${pname}-${version}/build/temp.${platform}-cpython-${pythonVersionMajorMinor}/"
+        mkdir -p $build/_deps
+        ln -s ${mujoco.pin.lodepng} $build/_deps/lodepng-src
+        ln -s ${mujoco.pin.eigen3} $build/_deps/eigen-src
+        ln -s ${mujoco.pin.abseil-cpp} $build/_deps/abseil-cpp-src
+      ''
+    );
+
+  meta = {
+    description = "Python bindings for MuJoCo: a general purpose physics simulator";
     homepage = "https://mujoco.org/";
     changelog = "https://github.com/google-deepmind/mujoco/releases/tag/${version}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ tmplt ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [
+      GaetanLepage
+      tmplt
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/mujson/default.nix b/pkgs/development/python-modules/mujson/default.nix
index 51a1407dff247..6d980fd74f495 100644
--- a/pkgs/development/python-modules/mujson/default.nix
+++ b/pkgs/development/python-modules/mujson/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/mullvad-api/default.nix b/pkgs/development/python-modules/mullvad-api/default.nix
index bc09093c8d665..2074766ebe6ed 100644
--- a/pkgs/development/python-modules/mullvad-api/default.nix
+++ b/pkgs/development/python-modules/mullvad-api/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/mullvad-closest/default.nix b/pkgs/development/python-modules/mullvad-closest/default.nix
index 62537c244491a..1affe574c0dbd 100644
--- a/pkgs/development/python-modules/mullvad-closest/default.nix
+++ b/pkgs/development/python-modules/mullvad-closest/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, setuptools
-, click
-, geopy
-, ping3
-, requests
-, tabulate
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  setuptools,
+  click,
+  geopy,
+  ping3,
+  requests,
+  tabulate,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-scJiYjEmnDDElE5rHdPbnnuNjjRB0/X3vNGLoi2MAmo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     click
diff --git a/pkgs/development/python-modules/mulpyplexer/default.nix b/pkgs/development/python-modules/mulpyplexer/default.nix
index 29b518262ffaa..5ff36083ef864 100644
--- a/pkgs/development/python-modules/mulpyplexer/default.nix
+++ b/pkgs/development/python-modules/mulpyplexer/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/multi-key-dict/default.nix b/pkgs/development/python-modules/multi-key-dict/default.nix
index c959f2e8f2eca..5cd962b70cf85 100644
--- a/pkgs/development/python-modules/multi-key-dict/default.nix
+++ b/pkgs/development/python-modules/multi-key-dict/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -15,16 +16,12 @@ buildPythonPackage rec {
     hash = "sha256-3uvewXqjChxDLLP0N+gfhiHhwFQqDAYXp09x4jLpk54=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # upstream has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "multi_key_dict"
-  ];
+  pythonImportsCheck = [ "multi_key_dict" ];
 
   meta = with lib; {
     description = "multi_key_dict";
diff --git a/pkgs/development/python-modules/multidict/default.nix b/pkgs/development/python-modules/multidict/default.nix
index 5588fcbdc5b0d..0321c5deba97d 100644
--- a/pkgs/development/python-modules/multidict/default.nix
+++ b/pkgs/development/python-modules/multidict/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
       --replace-fail '"-I",' ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
diff --git a/pkgs/development/python-modules/multimethod/default.nix b/pkgs/development/python-modules/multimethod/default.nix
index cc0ec79acdfed..defec98badfcf 100644
--- a/pkgs/development/python-modules/multimethod/default.nix
+++ b/pkgs/development/python-modules/multimethod/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-KfO+6bZOZOv9SWTV4eqJTWb3/PeCpnXknSF47ddZR5o=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "multimethod"
-  ];
+  pythonImportsCheck = [ "multimethod" ];
 
   meta = with lib; {
     description = "Multiple argument dispatching";
diff --git a/pkgs/development/python-modules/multipart/default.nix b/pkgs/development/python-modules/multipart/default.nix
index 84daaac2773f4..312699ecda416 100644
--- a/pkgs/development/python-modules/multipart/default.nix
+++ b/pkgs/development/python-modules/multipart/default.nix
@@ -1,32 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "multipart";
-  version = "0.2.4";
-
-  format = "setuptools";
+  version = "0.2.5";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "06ba205360bc7096fefe618e4f1e9b2cdb890b4f2157053a81f386912a2522cb";
+    hash = "sha256-+piDjUDJZ7sZWJYmoPuKXEDEId2i/r4bA1H89ibiRlE=";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "dont-test-semicolon-separators-in-urlencoded-data.patch";
-      url = "https://github.com/defnull/multipart/commit/4d4ac6b79c453918ebf40c690e8d57d982ee840b.patch";
-      hash = "sha256-rMeMhQEhonWAHzy5M8Im5mL6km5a9O0CGVOV+T3UNqo=";
-    })
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "multipart" ];
 
diff --git a/pkgs/development/python-modules/multipledispatch/default.nix b/pkgs/development/python-modules/multipledispatch/default.nix
index 2fab50a63f042..e3f20311123cf 100644
--- a/pkgs/development/python-modules/multipledispatch/default.nix
+++ b/pkgs/development/python-modules/multipledispatch/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -11,7 +12,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-XIOZFUZcaCBsPpxHM1eQghbCg4O0JTYeXRRFlL+Fp+A=";
+    hash = "sha256-XIOZFUZcaCBsPpxHM1eQghbCg4O0JTYeXRRFlL+Fp+A=";
   };
 
   # No tests in archive
@@ -21,7 +22,7 @@ buildPythonPackage rec {
 
   meta = {
     homepage = "https://github.com/mrocklin/multipledispatch/";
-    description = "A relatively sane approach to multiple dispatch in Python";
+    description = "Relatively sane approach to multiple dispatch in Python";
     license = lib.licenses.bsd3;
   };
 }
diff --git a/pkgs/development/python-modules/multiprocess/default.nix b/pkgs/development/python-modules/multiprocess/default.nix
index 2852fbcbd0d6a..98a3ad4c563b6 100644
--- a/pkgs/development/python-modules/multiprocess/default.nix
+++ b/pkgs/development/python-modules/multiprocess/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, dill
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  dill,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
@@ -16,21 +17,17 @@ buildPythonPackage rec {
     hash = "sha256-77F5fkZbljq/tuBTkquKEYVubfghUrMZsAdhp1QpH2k=";
   };
 
-  propagatedBuildInputs = [
-    dill
-  ];
+  propagatedBuildInputs = [ dill ];
 
   # Python-version dependent tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "multiprocess"
-  ];
+  pythonImportsCheck = [ "multiprocess" ];
 
   meta = with lib; {
     description = "Multiprocessing and multithreading in Python";
     homepage = "https://github.com/uqfoundation/multiprocess";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/multiscale-spatial-image/default.nix b/pkgs/development/python-modules/multiscale-spatial-image/default.nix
new file mode 100644
index 0000000000000..41b4a720fc50c
--- /dev/null
+++ b/pkgs/development/python-modules/multiscale-spatial-image/default.nix
@@ -0,0 +1,81 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  hatchling,
+  dask,
+  numpy,
+  python-dateutil,
+  spatial-image,
+  xarray,
+  xarray-datatree,
+  zarr,
+  dask-image,
+  fsspec,
+  jsonschema,
+  nbmake,
+  pooch,
+  pytestCheckHook,
+  pytest-mypy,
+  urllib3,
+}:
+
+buildPythonPackage rec {
+  pname = "multiscale-spatial-image";
+  version = "1.0.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "spatial-image";
+    repo = "multiscale-spatial-image";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-s/88N8IVkj+9MZYAtEJSpmmDdjIxf4S6U5gYr86Ikrw=";
+  };
+
+  build-system = [ hatchling ];
+
+  dependencies = [
+    dask
+    numpy
+    python-dateutil
+    spatial-image
+    xarray
+    xarray-datatree
+    zarr
+  ];
+
+  optional-dependencies = {
+    dask-image = [ dask-image ];
+    #itk = [
+    #  itk-filtering # not in nixpkgs yet
+    #];
+    test = [
+      dask-image
+      fsspec
+      #ipfsspec # not in nixpkgs
+      #itk-filtering # not in nixpkgs
+      jsonschema
+      nbmake
+      pooch
+      pytest-mypy
+      urllib3
+    ];
+  };
+
+  nativeCheckInputs = [ pytestCheckHook ] ++ optional-dependencies.test;
+
+  doCheck = false; # all test files try to download data
+
+  pythonImportsCheck = [ "multiscale_spatial_image" ];
+
+  meta = {
+    description = "Generate a multiscale, chunked, multi-dimensional spatial image data structure that can serialized to OME-NGFF";
+    homepage = "https://github.com/spatial-image/multiscale-spatial-image";
+    changelog = "https://github.com/spatial-image/multiscale-spatial-image/releases/tag/v${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ bcdarwin ];
+  };
+}
diff --git a/pkgs/development/python-modules/multiset/default.nix b/pkgs/development/python-modules/multiset/default.nix
index 27476e44b17f1..ea8ee3f03f72e 100644
--- a/pkgs/development/python-modules/multiset/default.nix
+++ b/pkgs/development/python-modules/multiset/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, setuptools-scm
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "multiset";
-  version = "3.1.0";
-  format = "pyproject";
+  version = "3.2.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-jpPlhvaI0uKwD6WEPiqC9p6XHhrHrT14+dKkdgjem6Y=";
+    hash = "sha256-fFmnhihLnDOd9PIZ3LtM5fRNOsGyD5ImNsTXieic97U=";
   };
 
   postPatch = ''
@@ -21,22 +22,19 @@ buildPythonPackage rec {
     sed -i '/python_requires/d' setup.cfg
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  pythonImportsCheck = [
-    "multiset"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  pythonImportsCheck = [ "multiset" ];
 
   meta = with lib; {
-    description = "An implementation of a multiset";
+    description = "Implementation of a multiset";
     homepage = "https://github.com/wheerd/multiset";
+    changelog = "https://github.com/wheerd/multiset/releases/tag/${version}";
     license = licenses.mit;
     maintainers = [ ];
   };
diff --git a/pkgs/development/python-modules/multitasking/default.nix b/pkgs/development/python-modules/multitasking/default.nix
index c3401ed6530c9..e5880849da738 100644
--- a/pkgs/development/python-modules/multitasking/default.nix
+++ b/pkgs/development/python-modules/multitasking/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -14,7 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-TWvDzGX5stynL7Wnh4UKiNro9iDCs2rptVJI5RvNYCY=";
   };
 
-  doCheck = false;  # No tests included
+  doCheck = false; # No tests included
   pythonImportsCheck = [ "multitasking" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/munch/default.nix b/pkgs/development/python-modules/munch/default.nix
index 368cc0eff5ada..db4cfa8b35b69 100644
--- a/pkgs/development/python-modules/munch/default.nix
+++ b/pkgs/development/python-modules/munch/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# build-system
-, pbr
-, setuptools
-
-# tests
-, pytestCheckHook
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  pbr,
+  setuptools,
+
+  # tests
+  pytestCheckHook,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,8 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A dot-accessible dictionary (a la JavaScript objects)";
+    description = "Dot-accessible dictionary (a la JavaScript objects)";
     license = licenses.mit;
     homepage = "https://github.com/Infinidat/munch";
   };
-
 }
diff --git a/pkgs/development/python-modules/mung/default.nix b/pkgs/development/python-modules/mung/default.nix
index 03fcd29dba755..236ab3aba46c1 100644
--- a/pkgs/development/python-modules/mung/default.nix
+++ b/pkgs/development/python-modules/mung/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, lxml
-, numpy
-, pytestCheckHook
-, scikit-image
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  lxml,
+  numpy,
+  pytestCheckHook,
+  scikit-image,
 }:
 let
-  version = "1.2";
+  version = "1.2.1";
 in
 buildPythonPackage {
   pname = "mung";
@@ -19,12 +20,10 @@ buildPythonPackage {
     owner = "OMR-Research";
     repo = "mung";
     rev = "refs/tags/${version}";
-    hash = "sha256-NSKaJkJRevTy5gh6/ik8Qe46bOPdznsmXPgh7Xz7vXQ=";
+    hash = "sha256-QljGoZdUJRClQ/QzUsCKD0/ooWaFrKXI+93WFPvmIjE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     lxml
@@ -32,13 +31,9 @@ buildPythonPackage {
     scikit-image
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mung"
-  ];
+  pythonImportsCheck = [ "mung" ];
 
   meta = with lib; {
     description = "Music Notation Graph: a data model for optical music recognition";
diff --git a/pkgs/development/python-modules/munkres/default.nix b/pkgs/development/python-modules/munkres/default.nix
index d872783d19044..1ba6a82139540 100644
--- a/pkgs/development/python-modules/munkres/default.nix
+++ b/pkgs/development/python-modules/munkres/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, isPy3k
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  isPy3k,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -35,5 +36,4 @@ buildPythonPackage rec {
     license = licenses.bsd3;
     maintainers = with maintainers; [ domenkozar ];
   };
-
 }
diff --git a/pkgs/development/python-modules/murmurhash/default.nix b/pkgs/development/python-modules/murmurhash/default.nix
index 6845d8a5b6b0d..bd69447a43236 100644
--- a/pkgs/development/python-modules/murmurhash/default.nix
+++ b/pkgs/development/python-modules/murmurhash/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,16 +23,12 @@ buildPythonPackage rec {
       --replace "'wheel>=0.32.0,<0.33.0'" ""
   '';
 
-  buildInputs = [
-   cython
-  ];
+  buildInputs = [ cython ];
 
   # No test
   doCheck = false;
 
-  pythonImportsCheck = [
-    "murmurhash"
-  ];
+  pythonImportsCheck = [ "murmurhash" ];
 
   meta = with lib; {
     description = "Cython bindings for MurmurHash2";
diff --git a/pkgs/development/python-modules/muscima/default.nix b/pkgs/development/python-modules/muscima/default.nix
index 37eb4950bfb77..03bdd1989b52f 100644
--- a/pkgs/development/python-modules/muscima/default.nix
+++ b/pkgs/development/python-modules/muscima/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, lxml
-, matplotlib
-, numpy
-, pytestCheckHook
-, scikit-image
-, scikit-learn
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxml,
+  matplotlib,
+  numpy,
+  pytestCheckHook,
+  scikit-image,
+  scikit-learn,
 }:
 
 let
@@ -33,9 +34,7 @@ buildPythonPackage {
     matplotlib
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # They hard-code the path to the dataset and expect you to edit the test to update it to your value
diff --git a/pkgs/development/python-modules/music-tag/default.nix b/pkgs/development/python-modules/music-tag/default.nix
index f997ca47253ce..1c396703cd0cd 100644
--- a/pkgs/development/python-modules/music-tag/default.nix
+++ b/pkgs/development/python-modules/music-tag/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mutagen
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mutagen,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -15,22 +16,16 @@ buildPythonPackage rec {
     hash = "sha256-Cqtubu2o3w9TFuwtIZC9dFYbfgNWKrCRzo1Wh828//Y=";
   };
 
-  propagatedBuildInputs = [
-    mutagen
-  ];
+  propagatedBuildInputs = [ mutagen ];
 
-  checkInputs = [
-    pytestCheckHook
-  ];
+  checkInputs = [ pytestCheckHook ];
 
   pytestFlagsArray = [ "test" ];
 
   # Tests fail: ModuleNotFoundError: No module named '_test_common'
   doCheck = false;
 
-  pythonImportsCheck = [
-    "music_tag"
-  ];
+  pythonImportsCheck = [ "music_tag" ];
 
   meta = with lib; {
     description = "Simple interface to edit audio file metadata";
diff --git a/pkgs/development/python-modules/musicbrainzngs/default.nix b/pkgs/development/python-modules/musicbrainzngs/default.nix
index 4ceebd32aa63a..5c3acc24846bd 100644
--- a/pkgs/development/python-modules/musicbrainzngs/default.nix
+++ b/pkgs/development/python-modules/musicbrainzngs/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pkgs
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pkgs,
 }:
 
 buildPythonPackage rec {
@@ -16,7 +17,7 @@ buildPythonPackage rec {
 
   buildInputs = [ pkgs.glibcLocales ];
 
-  LC_ALL="en_US.UTF-8";
+  LC_ALL = "en_US.UTF-8";
 
   preCheck = ''
     # Remove tests that rely on networking (breaks sandboxed builds)
@@ -29,5 +30,4 @@ buildPythonPackage rec {
     license = licenses.bsd2;
     maintainers = with maintainers; [ domenkozar ];
   };
-
 }
diff --git a/pkgs/development/python-modules/mutag/default.nix b/pkgs/development/python-modules/mutag/default.nix
index 9076464d457ce..6f7bf72c4a6e2 100644
--- a/pkgs/development/python-modules/mutag/default.nix
+++ b/pkgs/development/python-modules/mutag/default.nix
@@ -1,31 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy3k
-, pyparsing
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyparsing,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage {
   pname = "mutag";
-  version = "0.0.2-2ffa0258ca";
-  format = "setuptools";
-  disabled = ! isPy3k;
+  version = "0.0.2-unstable-2018-08-20";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "aroig";
     repo = "mutag";
-    rev = "2ffa0258cadaf79313241f43bf2c1caaf197d9c2";
-    hash = "sha256-YT3DGvYPyTuB70gg6p/3oXcTahEPcNuSIqe56xu3rSs=";
+    rev = "9425169eb5d4aa9eb09f2809a09b83855b3acbef";
+    hash = "sha256-fEMmFRoFyLkqusAuhdx3XEPaPsu1x86ACAz9Vkl9YfA=";
   };
 
-  propagatedBuildInputs = [ pyparsing ];
+  build-system = [ setuptools ];
+
+  dependencies = [ pyparsing ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "mutag" ];
 
   meta = with lib; {
+    description = "Script to change email tags in a mu indexed maildir";
     homepage = "https://github.com/aroig/mutag";
-    description = "A script to change email tags in a mu indexed maildir";
+    license = licenses.gpl3Plus;
+    maintainers = [ ];
     mainProgram = "mutag";
-    license = licenses.gpl3;
-    maintainers = with maintainers; [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/mutagen/default.nix b/pkgs/development/python-modules/mutagen/default.nix
index 2ffaadaffeaac..c66f33c6d9889 100644
--- a/pkgs/development/python-modules/mutagen/default.nix
+++ b/pkgs/development/python-modules/mutagen/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# docs
-, python
-, sphinx
-, sphinx-rtd-theme
+  # docs
+  python,
+  sphinx,
+  sphinx-rtd-theme,
 
-# tests
-, hypothesis
-, pytestCheckHook
+  # tests
+  hypothesis,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -56,9 +57,7 @@ buildPythonPackage rec {
     "test_mock_fileobj"
   ];
 
-  pythonImportsCheck = [
-    "mutagen"
-  ];
+  pythonImportsCheck = [ "mutagen" ];
 
   meta = with lib; {
     description = "Python module for handling audio metadata";
@@ -73,8 +72,10 @@ buildPythonPackage rec {
       manipulate Ogg streams on an individual packet/page level.
     '';
     homepage = "https://mutagen.readthedocs.io";
-    changelog = "https://mutagen.readthedocs.io/en/latest/changelog.html#release-${lib.replaceStrings [ "." ] [ "-" ] version}";
+    changelog = "https://mutagen.readthedocs.io/en/latest/changelog.html#release-${
+      lib.replaceStrings [ "." ] [ "-" ] version
+    }";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/mutatormath/default.nix b/pkgs/development/python-modules/mutatormath/default.nix
index 27e92103c5a96..1b259cd6ebd0d 100644
--- a/pkgs/development/python-modules/mutatormath/default.nix
+++ b/pkgs/development/python-modules/mutatormath/default.nix
@@ -1,6 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi
-, defcon, fontmath
-, unicodedata2, fs
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  defcon,
+  fontmath,
+  unicodedata2,
+  fs,
 }:
 
 buildPythonPackage rec {
@@ -14,8 +19,15 @@ buildPythonPackage rec {
     extension = "zip";
   };
 
-  propagatedBuildInputs = [ fontmath unicodedata2 defcon ];
-  nativeCheckInputs = [ unicodedata2 fs ];
+  propagatedBuildInputs = [
+    fontmath
+    unicodedata2
+    defcon
+  ];
+  nativeCheckInputs = [
+    unicodedata2
+    fs
+  ];
 
   meta = with lib; {
     description = "Piecewise linear interpolation in multiple dimensions with multiple, arbitrarily placed, masters";
diff --git a/pkgs/development/python-modules/mutesync/default.nix b/pkgs/development/python-modules/mutesync/default.nix
index b574717c0ece6..d998c5ff80134 100644
--- a/pkgs/development/python-modules/mutesync/default.nix
+++ b/pkgs/development/python-modules/mutesync/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/mutf8/default.nix b/pkgs/development/python-modules/mutf8/default.nix
index dd6f554a66afc..c7d2afdd1308b 100644
--- a/pkgs/development/python-modules/mutf8/default.nix
+++ b/pkgs/development/python-modules/mutf8/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,18 +20,14 @@ buildPythonPackage rec {
     hash = "sha256-4Ojn3t0EbOVdrYEiY8JegJuvW9sz8jt9tKFwOluiGQo=";
   };
 
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
   checkPhase = ''
     # Using pytestCheckHook results in test failures
     pytest
   '';
 
-  pythonImportsCheck = [
-    "mutf8"
-  ];
+  pythonImportsCheck = [ "mutf8" ];
 
   meta = with lib; {
     description = "Fast MUTF-8 encoder & decoder";
diff --git a/pkgs/development/python-modules/mwcli/default.nix b/pkgs/development/python-modules/mwcli/default.nix
index 1ea2a58ea8fae..adcc5ab1e34cc 100644
--- a/pkgs/development/python-modules/mwcli/default.nix
+++ b/pkgs/development/python-modules/mwcli/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonRelaxDepsHook
-, docopt
-, para
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  docopt,
+  para,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +17,8 @@ buildPythonPackage rec {
   };
 
   # Prevent circular dependency
-  pythonRemoveDeps = [
-    "mwxml"
-  ];
+  pythonRemoveDeps = [ "mwxml" ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   propagatedBuildInputs = [
     docopt
@@ -34,7 +29,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A set of helper functions and classes for mediawiki-utilities command-line utilities";
+    description = "Set of helper functions and classes for mediawiki-utilities command-line utilities";
     homepage = "https://github.com/mediawiki-utilities/python-mwcli";
     license = licenses.mit;
     maintainers = with maintainers; [ GaetanLepage ];
diff --git a/pkgs/development/python-modules/mwclient/default.nix b/pkgs/development/python-modules/mwclient/default.nix
index 048364d5bb6ee..1bdc53e90d012 100644
--- a/pkgs/development/python-modules/mwclient/default.nix
+++ b/pkgs/development/python-modules/mwclient/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-oauthlib
-, responses
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-oauthlib,
+  responses,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -41,14 +42,12 @@ buildPythonPackage rec {
       --replace " --cov mwclient test" ""
   '';
 
-  pythonImportsCheck = [
-    "mwclient"
-  ];
+  pythonImportsCheck = [ "mwclient" ];
 
   meta = with lib; {
     description = "Python client library to the MediaWiki API";
     license = licenses.mit;
     homepage = "https://github.com/mwclient/mwclient";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/mwdblib/default.nix b/pkgs/development/python-modules/mwdblib/default.nix
index 363c909c303b6..d6e1e60cb39a8 100644
--- a/pkgs/development/python-modules/mwdblib/default.nix
+++ b/pkgs/development/python-modules/mwdblib/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, beautifultable
-, buildPythonPackage
-, click
-, click-default-group
-, fetchFromGitHub
-, humanize
-, keyring
-, unittestCheckHook
-, python-dateutil
-, pythonOlder
-, requests
+{
+  lib,
+  beautifultable,
+  buildPythonPackage,
+  click,
+  click-default-group,
+  fetchFromGitHub,
+  humanize,
+  keyring,
+  unittestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -38,9 +39,7 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ unittestCheckHook ];
 
-  pythonImportsCheck = [
-    "mwdblib"
-  ];
+  pythonImportsCheck = [ "mwdblib" ];
 
   meta = with lib; {
     description = "Python client library for the mwdb service";
diff --git a/pkgs/development/python-modules/mwoauth/default.nix b/pkgs/development/python-modules/mwoauth/default.nix
index 2e92fade6d430..e592420111d68 100644
--- a/pkgs/development/python-modules/mwoauth/default.nix
+++ b/pkgs/development/python-modules/mwoauth/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, oauthlib
-, pyjwt
-, pythonOlder
-, requests
-, requests-oauthlib
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  oauthlib,
+  pyjwt,
+  pythonOlder,
+  requests,
+  requests-oauthlib,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,7 @@ buildPythonPackage rec {
   # https://github.com/mediawiki-utilities/python-mwoauth/issues/44
   doCheck = false;
 
-  pythonImportsCheck = [
-    "mwoauth"
-  ];
+  pythonImportsCheck = [ "mwoauth" ];
 
   meta = with lib; {
     description = "Python library to perform OAuth handshakes with a MediaWiki installation";
diff --git a/pkgs/development/python-modules/mwparserfromhell/default.nix b/pkgs/development/python-modules/mwparserfromhell/default.nix
index 81c1c20c5d6f3..55d9c63c640d5 100644
--- a/pkgs/development/python-modules/mwparserfromhell/default.nix
+++ b/pkgs/development/python-modules/mwparserfromhell/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,13 +23,9 @@ buildPythonPackage rec {
       --replace '"pytest-runner"' ""
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mwparserfromhell"
-  ];
+  pythonImportsCheck = [ "mwparserfromhell" ];
 
   meta = with lib; {
     description = "MWParserFromHell is a parser for MediaWiki wikicode";
diff --git a/pkgs/development/python-modules/mwtypes/default.nix b/pkgs/development/python-modules/mwtypes/default.nix
index b51b5d417a13a..727d5e61821cd 100644
--- a/pkgs/development/python-modules/mwtypes/default.nix
+++ b/pkgs/development/python-modules/mwtypes/default.nix
@@ -1,39 +1,47 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jsonable
-, nose
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jsonable,
+  pytestCheckHook,
+  fetchpatch2,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "mwtypes";
-  version = "0.3.2";
-  format = "setuptools";
+  version = "0.4.0";
+  pyproject = true;
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-3BF2xZZWKcEj6FmzGa5hUdTjhVMemngWBMDUyjQ045k=";
+    inherit version pname;
+    hash = "sha256-PgcGUk/27cAIvzfLvRoVX2vHOCab59m+4bciDPmtlW8=";
   };
 
-  propagatedBuildInputs = [ jsonable ];
-
-  nativeCheckInputs = [
-    nose
-    pytestCheckHook
+  patches = [
+    # https://github.com/mediawiki-utilities/python-mwtypes/pull/6
+    (fetchpatch2 {
+      name = "nose-to-pytest.patch";
+      url = "https://github.com/mediawiki-utilities/python-mwtypes/commit/58d7f59e4927aaa6278f84576794df713c673058.patch";
+      hash = "sha256-jh1uEqqhIK2DyNvVN0XYGM7BXTmypnoC4VoB0V+9JmE=";
+    })
   ];
 
-  disabledTests = [
-    "test_normalize_path_bad_extension"
-    "test_open_file"
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ jsonable ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  # Even with 7z included, this test does not pass
+  disabledTests = [ "test_open_file" ];
 
   pythonImportsCheck = [ "mwtypes" ];
 
-  meta = with lib; {
-    description = "A set of classes for working with MediaWiki data types.";
+  meta = {
+    description = "Set of classes for working with MediaWiki data types";
     homepage = "https://github.com/mediawiki-utilities/python-mwtypes";
-    license = licenses.mit;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/mwxml/default.nix b/pkgs/development/python-modules/mwxml/default.nix
index 28d3033252093..7b24ef4c8bb4e 100644
--- a/pkgs/development/python-modules/mwxml/default.nix
+++ b/pkgs/development/python-modules/mwxml/default.nix
@@ -1,45 +1,51 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jsonschema
-, mwcli
-, mwtypes
-, nose
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch2,
+  jsonschema,
+  mwcli,
+  mwtypes,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "mwxml";
-  version = "0.3.3";
-  format = "setuptools";
+  version = "0.3.4";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-CEjfDPLik3GPVUMRrPRxW9Z59jn05Sy+R9ggZYnbHTE=";
+    hash = "sha256-ejf3RfdwcEp0Ge+96dORuHS5Bx28GSs7H4HD1LUnde4=";
   };
 
-  propagatedBuildInputs = [
+  patches = [
+    # https://github.com/mediawiki-utilities/python-mwxml/pull/21
+    (fetchpatch2 {
+      name = "nose-to-pytest.patch";
+      url = "https://github.com/mediawiki-utilities/python-mwxml/compare/2b477be6aa9794064d03b5be38c7759d1570488b...71bbfd2b309e0720a34a4e783b71169aebc571ef.patch";
+      hash = "sha256-4XxNvda1Dj+kFbD9t9gzucrMjdfXcoqYlvecXO2B2R0=";
+    })
+  ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     jsonschema
     mwcli
     mwtypes
   ];
 
-  nativeCheckInputs = [
-    nose
-    pytestCheckHook
-  ];
-
-  disabledTests = [
-    "test_page_with_discussion"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "mwxml" ];
 
-  meta = with lib; {
-    description = "A set of utilities for processing MediaWiki XML dump data";
+  meta = {
+    description = "Set of utilities for processing MediaWiki XML dump data";
     mainProgram = "mwxml";
     homepage = "https://github.com/mediawiki-utilities/python-mwxml";
-    license = licenses.mit;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/mxnet/default.nix b/pkgs/development/python-modules/mxnet/default.nix
index df08e56fbf336..9ee3685511032 100644
--- a/pkgs/development/python-modules/mxnet/default.nix
+++ b/pkgs/development/python-modules/mxnet/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, pkgs
-, requests
-, numpy
-, graphviz
-, python
-, isPy3k
-, isPy310
+{
+  lib,
+  buildPythonPackage,
+  pkgs,
+  requests,
+  numpy,
+  graphviz,
+  python,
+  isPy3k,
+  isPy310,
 }:
 
 buildPythonPackage {
@@ -15,7 +16,11 @@ buildPythonPackage {
   format = "setuptools";
 
   buildInputs = [ pkgs.mxnet ];
-  propagatedBuildInputs = [ requests numpy graphviz ];
+  propagatedBuildInputs = [
+    requests
+    numpy
+    graphviz
+  ];
 
   LD_LIBRARY_PATH = lib.makeLibraryPath [ pkgs.mxnet ];
 
diff --git a/pkgs/development/python-modules/myfitnesspal/default.nix b/pkgs/development/python-modules/myfitnesspal/default.nix
index 27ffdad65e70f..47eb87233ce12 100644
--- a/pkgs/development/python-modules/myfitnesspal/default.nix
+++ b/pkgs/development/python-modules/myfitnesspal/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, blessed
-, browser-cookie3
-, buildPythonPackage
-, cloudscraper
-, fetchPypi
-, keyring
-, keyrings-alt
-, lxml
-, measurement
-, mock
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, requests
-, rich
-, setuptools
-, typing-extensions
+{
+  lib,
+  blessed,
+  browser-cookie3,
+  buildPythonPackage,
+  cloudscraper,
+  fetchPypi,
+  keyring,
+  keyrings-alt,
+  lxml,
+  measurement,
+  mock,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  requests,
+  rich,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     hash = "sha256-H9oKSio+2x4TDCB4YN5mmERUEeETLKahPlW3TDDFE/E=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     blessed
@@ -63,9 +62,7 @@ buildPythonPackage rec {
     "test_integration"
   ];
 
-  pythonImportsCheck = [
-    "myfitnesspal"
-  ];
+  pythonImportsCheck = [ "myfitnesspal" ];
 
   meta = with lib; {
     description = "Python module to access meal tracking data stored in MyFitnessPal";
diff --git a/pkgs/development/python-modules/mygpoclient/default.nix b/pkgs/development/python-modules/mygpoclient/default.nix
index c252f8cc294e8..8205ba66befeb 100644
--- a/pkgs/development/python-modules/mygpoclient/default.nix
+++ b/pkgs/development/python-modules/mygpoclient/default.nix
@@ -1,32 +1,49 @@
-{ lib, stdenv, fetchFromGitHub, buildPythonPackage, nose, minimock }:
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  minimock,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "mypgoclient";
-  version = "1.8";
+  version = "1.9";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "gpodder";
     repo = "mygpoclient";
     rev = version;
-    sha256 = "0aa28wc55x3rxa7clwfv5v5500ffyaq0vkxaa3v01y1r93dxkdvp";
+    hash = "sha256-McHllitWiBiCdNuJlUg6K/vgr2l3ychu+KOx3r/UCv0=";
   };
 
-  nativeCheckInputs = [ nose minimock ];
-
-  checkPhase = ''
-    nosetests
+  postPatch = ''
+    substituteInPlace mygpoclient/*_test.py \
+      --replace-quiet "assertEquals" "assertEqual" \
+      --replace-quiet "assert_" "assertTrue"
   '';
 
-  doCheck = (!stdenv.isDarwin);
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "mygpoclient" ];
+
+  nativeCheckInputs = [
+    minimock
+    pytestCheckHook
+  ];
+
+  __darwinAllowLocalNetworking = true;
 
   meta = with lib; {
-    description = "A gpodder.net client library";
+    description = "Gpodder.net client library";
     longDescription = ''
-        The mygpoclient library allows developers to utilize a Pythonic interface
-        to the gpodder.net web services.
+      The mygpoclient library allows developers to utilize a Pythonic interface
+      to the gpodder.net web services.
     '';
     homepage = "https://github.com/gpodder/mygpoclient";
     license = with licenses; [ gpl3 ];
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/myhdl/default.nix b/pkgs/development/python-modules/myhdl/default.nix
index 900e188c61dd9..959856365d246 100644
--- a/pkgs/development/python-modules/myhdl/default.nix
+++ b/pkgs/development/python-modules/myhdl/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, verilog
-, ghdl
-, pytest
-, pytest-xdist
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  iverilog,
+  ghdl,
+  pytest,
+  pytest-xdist,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,13 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     pytest
     pytest-xdist
-    verilog
+    iverilog
     ghdl
   ];
   passthru = {
     # If using myhdl as a dependency, use these if needed and not ghdl and
     # verlog from all-packages.nix
-    inherit ghdl verilog;
+    inherit ghdl iverilog;
   };
   checkPhase = ''
     runHook preCheck
@@ -42,7 +43,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A free, open-source package for using Python as a hardware description and verification language.";
+    description = "Free, open-source package for using Python as a hardware description and verification language";
     homepage = "https://www.myhdl.org/";
     license = licenses.lgpl21;
     maintainers = with maintainers; [ doronbehar ];
diff --git a/pkgs/development/python-modules/myhome/default.nix b/pkgs/development/python-modules/myhome/default.nix
index d716d66680804..ce22d1a25c63c 100644
--- a/pkgs/development/python-modules/myhome/default.nix
+++ b/pkgs/development/python-modules/myhome/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, urllib3
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  urllib3,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-DJzwvgvSA9Q0kpueUoQV64pdDDNA7WzGu7r+g5aqutk=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -33,13 +32,9 @@ buildPythonPackage rec {
     urllib3
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "myhome"
-  ];
+  pythonImportsCheck = [ "myhome" ];
 
   meta = with lib; {
     description = "Python library for interacting with MyHomeSERVER1";
diff --git a/pkgs/development/python-modules/myjwt/default.nix b/pkgs/development/python-modules/myjwt/default.nix
index d0d39dc9d087f..094065310854e 100644
--- a/pkgs/development/python-modules/myjwt/default.nix
+++ b/pkgs/development/python-modules/myjwt/default.nix
@@ -1,42 +1,37 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, click
-, colorama
-, cryptography
-, exrex
-, fetchFromGitHub
-, poetry-core
-, pyopenssl
-, pyperclip
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, questionary
-, requests
-, requests-mock
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  click,
+  colorama,
+  cryptography,
+  exrex,
+  fetchFromGitHub,
+  poetry-core,
+  pyopenssl,
+  pyperclip,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  questionary,
+  requests,
+  requests-mock,
 }:
 
 buildPythonPackage rec {
   pname = "myjwt";
-  version = "1.6.1";
+  version = "2.1.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "mBouamama";
     repo = "MyJWT";
     rev = "refs/tags/${version}";
-    hash = "sha256-qdDA8DpJ9kAPTvCkQcPBHNlUqxwsS0vAESglvUygXhg=";
+    hash = "sha256-jqBnxo7Omn5gLMCQ7SNbjo54nyFK7pn94796z2Qc9lg=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail "1.6.0" "${version}"
-  '';
-
   pythonRelaxDeps = [
     "cryptography"
     "pyopenssl"
@@ -45,7 +40,6 @@ buildPythonPackage rec {
 
   build-system = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   dependencies = [
@@ -65,9 +59,7 @@ buildPythonPackage rec {
     requests-mock
   ];
 
-  pythonImportsCheck = [
-    "myjwt"
-  ];
+  pythonImportsCheck = [ "myjwt" ];
 
   meta = with lib; {
     description = "CLI tool for testing vulnerabilities of JSON Web Tokens (JWT)";
@@ -76,6 +68,6 @@ buildPythonPackage rec {
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
     # Build failures
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/mypermobil/default.nix b/pkgs/development/python-modules/mypermobil/default.nix
new file mode 100644
index 0000000000000..052a9838ead7b
--- /dev/null
+++ b/pkgs/development/python-modules/mypermobil/default.nix
@@ -0,0 +1,50 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  aiocache,
+  aiohttp,
+  aiounittest,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "mypermobil";
+  version = "0.1.8";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "Permobil-Software";
+    repo = "mypermobil";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-linnaRyA45EzqeSeNmvIE5gXkHA2F504U1++QBeRa90=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    aiocache
+    aiohttp
+  ];
+
+  pythonImportsCheck = [ "mypermobil" ];
+
+  nativeCheckInputs = [
+    aiounittest
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # requires networking
+    "test_region"
+  ];
+
+  meta = {
+    changelog = "https://github.com/Permobil-Software/mypermobil/releases/tag/v${version}";
+    description = "Python wrapper for the MyPermobil API";
+    homepage = "https://github.com/Permobil-Software/mypermobil";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/mypy-boto3-builder/default.nix b/pkgs/development/python-modules/mypy-boto3-builder/default.nix
index 1e19b77c9c9c2..6350efe5bcfe4 100644
--- a/pkgs/development/python-modules/mypy-boto3-builder/default.nix
+++ b/pkgs/development/python-modules/mypy-boto3-builder/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, black
-, boto3
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, isort
-, jinja2
-, md-toc
-, mdformat
-, newversion
-, pip
-, poetry-core
-, pyparsing
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, typing-extensions
+{
+  lib,
+  black,
+  boto3,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  isort,
+  jinja2,
+  md-toc,
+  mdformat,
+  newversion,
+  pip,
+  poetry-core,
+  pyparsing,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "mypy-boto3-builder";
-  version = "7.23.2";
+  version = "7.26.1";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -29,14 +30,12 @@ buildPythonPackage rec {
     owner = "youtype";
     repo = "mypy_boto3_builder";
     rev = "refs/tags/${version}";
-    hash = "sha256-v5/3TCEtDXbmitb3e15XWkW8VO5nJk8TCVvVyh5rAMs=";
+    hash = "sha256-BuJ94E9GFGOD7gD5T1Sxchxye3REr2n3wzI0+jGMPuA=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     black
     boto3
     cryptography
@@ -51,13 +50,9 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mypy_boto3_builder"
-  ];
+  pythonImportsCheck = [ "mypy_boto3_builder" ];
 
   disabledTests = [
     # Tests require network access
@@ -66,10 +61,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Type annotations builder for boto3";
-    mainProgram = "mypy_boto3_builder";
     homepage = "https://github.com/youtype/mypy_boto3_builder";
     changelog = "https://github.com/youtype/mypy_boto3_builder/releases/tag/${version}";
     license = with licenses; [ bsd3 ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "mypy_boto3_builder";
   };
 }
diff --git a/pkgs/development/python-modules/mypy-boto3/default.nix b/pkgs/development/python-modules/mypy-boto3/default.nix
index f37179b9d192c..c7ec8081ff43a 100644
--- a/pkgs/development/python-modules/mypy-boto3/default.nix
+++ b/pkgs/development/python-modules/mypy-boto3/default.nix
@@ -1,15 +1,17 @@
-{ lib
-, boto3
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, typing-extensions
+{
+  lib,
+  boto3,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 let
   toUnderscore = str: builtins.replaceStrings [ "-" ] [ "_" ] str;
 
-  buildMypyBoto3Package = serviceName: version: hash:
+  buildMypyBoto3Package =
+    serviceName: version: hash:
     buildPythonPackage rec {
       pname = "mypy-boto3-${serviceName}";
       inherit version;
@@ -18,743 +20,1420 @@ let
       disabled = pythonOlder "3.7";
 
       src = fetchPypi {
-        inherit pname version hash;
+        pname = "mypy_boto3_${toUnderscore serviceName}";
+        inherit version hash;
       };
 
-      build-system = [
-        setuptools
-      ];
+      build-system = [ setuptools ];
 
-      dependencies = [
-        boto3
-      ] ++ lib.optionals (pythonOlder "3.12") [
-        typing-extensions
-      ];
+      dependencies = [ boto3 ] ++ lib.optionals (pythonOlder "3.12") [ typing-extensions ];
 
       # Project has no tests
       doCheck = false;
 
-      pythonImportsCheck = [
-        "mypy_boto3_${toUnderscore serviceName}"
-      ];
+      pythonImportsCheck = [ "mypy_boto3_${toUnderscore serviceName}" ];
 
       meta = with lib; {
         description = "Type annotations for boto3 ${serviceName}";
         homepage = "https://github.com/youtype/mypy_boto3_builder";
         license = with licenses; [ mit ];
-        maintainers = with maintainers; [ fab mbalatsko ];
+        maintainers = with maintainers; [
+          fab
+          mbalatsko
+        ];
       };
     };
 in
 rec {
-  mypy-boto3-accessanalyzer = buildMypyBoto3Package "accessanalyzer" "1.34.67" "sha256-tgiKSWgKebdPAsyuJTQoFGR9BSLfGMeTVbi1rnPnvfQ=";
+  mypy-boto3-accessanalyzer =
+    buildMypyBoto3Package "accessanalyzer" "1.35.0"
+      "sha256-xqzlZtspREjzFnslOFdBOwgRuX7+/QhFY2pnvWdvZbg=";
 
-  mypy-boto3-account = buildMypyBoto3Package "account" "1.34.0" "sha256-C2iAiA83tZ/7XRlccf1iddDfDNkuO2F0B5aOxKbHy2Q=";
+  mypy-boto3-account =
+    buildMypyBoto3Package "account" "1.35.0"
+      "sha256-NnLjEDyv4dYH/dKeCtka8P9K2V66844WLwynk1CqIbA=";
 
-  mypy-boto3-acm = buildMypyBoto3Package "acm" "1.34.0" "sha256-SvDBi8A9414Hxb8twcM/6Y2OoUz+/LbZZJ86lu/zmmo=";
+  mypy-boto3-acm =
+    buildMypyBoto3Package "acm" "1.35.0"
+      "sha256-kdakfB1uRg5K+FZyeNSQxvBYj0+ztJrDTq4Dkh6dqAA=";
 
-  mypy-boto3-acm-pca = buildMypyBoto3Package "acm-pca" "1.34.28" "sha256-4x4M49/Ot/HDZrA30PCu0OzXn3636dxCO4exR3lJAUs=";
+  mypy-boto3-acm-pca =
+    buildMypyBoto3Package "acm-pca" "1.35.0"
+      "sha256-YU4Djb4Z9//5WYvkSgv9vlv4oG8Da6dP/Oktpuff4q0=";
 
-  mypy-boto3-alexaforbusiness = buildMypyBoto3Package "alexaforbusiness" "1.34.0" "sha256-wrMSoM3F0HgajmM9X6P+3i6mqD55TWGVv8eJ7XqNjrw=";
+  mypy-boto3-amp =
+    buildMypyBoto3Package "amp" "1.35.0"
+      "sha256-Pm/KyqcUUAQBZjQKaVhuL/9c+qfkgfeD51esgE+EgQw=";
 
-  mypy-boto3-amp = buildMypyBoto3Package "amp" "1.34.39" "sha256-XOousDfEQsZ9z48iH2wVHuUaIwoECwbkHvIAlV3+zu4=";
+  mypy-boto3-amplify =
+    buildMypyBoto3Package "amplify" "1.35.19"
+      "sha256-EP342ZP67DkGOrA2hLiv0iE1mL6SpaUOY8BHCdhaqRE=";
 
-  mypy-boto3-amplify = buildMypyBoto3Package "amplify" "1.34.63" "sha256-alOtCCZwBcx6g3lm80AzI5aF8WbEABd44A0e6gfZ42o=";
+  mypy-boto3-amplifybackend =
+    buildMypyBoto3Package "amplifybackend" "1.35.0"
+      "sha256-rCVMZIStwQKsE7e2NAk9mOYkZExCiNLMfnrCUa2RBUE=";
 
-  mypy-boto3-amplifybackend = buildMypyBoto3Package "amplifybackend" "1.34.0" "sha256-wP6fOHAUg4dvrlQ2rUNk/lgIr6JnpWu/0Tr2prTckOk=";
+  mypy-boto3-amplifyuibuilder =
+    buildMypyBoto3Package "amplifyuibuilder" "1.35.0"
+      "sha256-/muCi4o6A3bmAvc4w5lSla9ZtE3rMkJoL3LlEjzKoms=";
 
-  mypy-boto3-amplifyuibuilder = buildMypyBoto3Package "amplifyuibuilder" "1.34.51" "sha256-umxA1d0jlSysBkUFP8VPRMwuwYxdsRz0yRH7lgr/Hhc=";
+  mypy-boto3-apigateway =
+    buildMypyBoto3Package "apigateway" "1.35.25"
+      "sha256-6jtBmuho1j8GE+6sxqdYYf1XtonWoUu3Vi7tMDkTpa4=";
 
-  mypy-boto3-apigateway = buildMypyBoto3Package "apigateway" "1.34.56" "sha256-WrFdsw1zAZg4TWRF1QzB/smDYbhTZt0JKxDpufShoss=";
+  mypy-boto3-apigatewaymanagementapi =
+    buildMypyBoto3Package "apigatewaymanagementapi" "1.35.0"
+      "sha256-UuryQVRq+v2w7uGXJrr5EDvCiFF6eAG8jvW3poFv4x8=";
 
-  mypy-boto3-apigatewaymanagementapi = buildMypyBoto3Package "apigatewaymanagementapi" "1.34.0" "sha256-911Sd+7hnHpAhDFE2lDhl+b3Pewd5QWWOPdg+TcZ6VU=";
+  mypy-boto3-apigatewayv2 =
+    buildMypyBoto3Package "apigatewayv2" "1.35.0"
+      "sha256-yZy38db9vBO64Bw01X2iDEQFb4dBGik+3qLntaG4538=";
 
-  mypy-boto3-apigatewayv2 = buildMypyBoto3Package "apigatewayv2" "1.34.0" "sha256-ydpZ3osSSMwTtGsnRn1SygX5d9Kq8jHwqdQDKcmKXTY=";
+  mypy-boto3-appconfig =
+    buildMypyBoto3Package "appconfig" "1.35.8"
+      "sha256-YLoxt3nGjbgDjjyfyRX/qQamX5LpuXhCU6i9msGl/aI=";
 
-  mypy-boto3-appconfig = buildMypyBoto3Package "appconfig" "1.34.58" "sha256-f073cXEkDyzkPeOPclhS0O6ZVvEmYPkGPMXrAD8LkE4=";
+  mypy-boto3-appconfigdata =
+    buildMypyBoto3Package "appconfigdata" "1.35.0"
+      "sha256-4rtLxGyFJwEDtI8ec8mZXS2adTsmwiAOF2+ExtQgkxE=";
 
-  mypy-boto3-appconfigdata = buildMypyBoto3Package "appconfigdata" "1.34.24" "sha256-pSo1Qw6ZKN0XzERlCRmCtvJEOjgyd+a82t6Q3pPaU8Q=";
+  mypy-boto3-appfabric =
+    buildMypyBoto3Package "appfabric" "1.35.0"
+      "sha256-jwjD2mkz6YpUEOwEHMNiIzBNoVwYUUONQjKZemGFEl8=";
 
-  mypy-boto3-appfabric = buildMypyBoto3Package "appfabric" "1.34.0" "sha256-wjvOtCvFrj+YPvyqvR8cKIvwvC6x15WeSX6PkNp4OWg=";
+  mypy-boto3-appflow =
+    buildMypyBoto3Package "appflow" "1.35.0"
+      "sha256-tNCfrUzsRHhpfIY+D2Y+OscMnYw7lGeYhFvs+wHq9zk=";
 
-  mypy-boto3-appflow = buildMypyBoto3Package "appflow" "1.34.0" "sha256-XruMwzBrjV7QTHOcHKqszt75cHX+578wbTwFMwyXHzE=";
+  mypy-boto3-appintegrations =
+    buildMypyBoto3Package "appintegrations" "1.35.0"
+      "sha256-aPoEEfQvhPoT0CPcfoyhzdXl2jSKeIoD3gBEw1f1XWU=";
 
-  mypy-boto3-appintegrations = buildMypyBoto3Package "appintegrations" "1.34.6" "sha256-iVaOlWOiCeocOJpcsxF0hlzKhGE3iq6Z7OifLWA3kkM=";
+  mypy-boto3-application-autoscaling =
+    buildMypyBoto3Package "application-autoscaling" "1.35.0"
+      "sha256-JsQYZqlzCM64Uxk3btQZm8dX/oSHsy1l29dUG7n025s=";
 
-  mypy-boto3-application-autoscaling = buildMypyBoto3Package "application-autoscaling" "1.34.0" "sha256-xW+Rc6yjDBviNDBDB63ssg0aPZFytaVfrVlA32wY/D4=";
+  mypy-boto3-application-insights =
+    buildMypyBoto3Package "application-insights" "1.35.0"
+      "sha256-PQcqaUxzDx91mwL55prFG2EFdQQw278ugQUAVhgzLX8=";
 
-  mypy-boto3-application-insights = buildMypyBoto3Package "application-insights" "1.34.0" "sha256-p/yLWmIGBSkMcqbjMUjyTYiskfSRWW3hKvtqepJZtyM=";
+  mypy-boto3-applicationcostprofiler =
+    buildMypyBoto3Package "applicationcostprofiler" "1.35.0"
+      "sha256-1ReFVDH1azvSYlTskq9WBsfjmW9tOvYvDOoH9Vq7X3U=";
 
-  mypy-boto3-applicationcostprofiler = buildMypyBoto3Package "applicationcostprofiler" "1.34.0" "sha256-ToSRJScC8711J5fkZj/TNmUrpiBNwTplGjvpu1gidys=";
+  mypy-boto3-appmesh =
+    buildMypyBoto3Package "appmesh" "1.35.0"
+      "sha256-SromjIAtmmIEf90outLLcA/LQjmvj/QoIwpxFcXJfls=";
 
-  mypy-boto3-appmesh = buildMypyBoto3Package "appmesh" "1.34.0" "sha256-AXJ4z/54qPQeHKbZF6Is4OXt9/gZNacmYnLwfxPcn+E=";
+  mypy-boto3-apprunner =
+    buildMypyBoto3Package "apprunner" "1.35.0"
+      "sha256-NDA1+HZ+Srs5XyNTnHxOjsUPAPRPXgeum0Q6h3Ca7zo=";
 
-  mypy-boto3-apprunner = buildMypyBoto3Package "apprunner" "1.34.11" "sha256-p4txQ08e6jpYiJmjG/JIXyObXhTnlXB8S5QDtUPUFt0=";
+  mypy-boto3-appstream =
+    buildMypyBoto3Package "appstream" "1.35.0"
+      "sha256-KuDlcfOuF3krMocvgR2LaP2+xKeYl2CMPKRewN8inj4=";
 
-  mypy-boto3-appstream = buildMypyBoto3Package "appstream" "1.34.5" "sha256-1m9YDw1fzoe4Y37yW6a1545SR2QGSrr5qbqYfXEax7o=";
+  mypy-boto3-appsync =
+    buildMypyBoto3Package "appsync" "1.35.12"
+      "sha256-mHIUStFvFUTvHYWdZUNcIIOI//vNACI0veXXNLAAOVY=";
 
-  mypy-boto3-appsync = buildMypyBoto3Package "appsync" "1.34.49" "sha256-J2qTVaXhqsfdupN6eLgpyGTHkPRRC1TZGNP2PRKF0v0=";
+  mypy-boto3-arc-zonal-shift =
+    buildMypyBoto3Package "arc-zonal-shift" "1.35.0"
+      "sha256-l5hKmbwel2Z5BvQbuKXRsfusKU28laF5mVDDPW+Ij0g=";
 
-  mypy-boto3-arc-zonal-shift = buildMypyBoto3Package "arc-zonal-shift" "1.34.0" "sha256-FhQaiu0Sc4HkkaRuhtgvUBMOgj80DbIBzZLEbZB41Cs=";
+  mypy-boto3-athena =
+    buildMypyBoto3Package "athena" "1.35.25"
+      "sha256-XcD23pDz3oaNwME+iqmDQr9Lbz8z7NVduFEiTnxV55c=";
 
-  mypy-boto3-athena = buildMypyBoto3Package "athena" "1.34.23" "sha256-PDvz2+2XcNi/nYkGjOeb8t1JbIN+SxSSifU6sDXoNyc=";
+  mypy-boto3-auditmanager =
+    buildMypyBoto3Package "auditmanager" "1.35.0"
+      "sha256-nr00I/1oqR16ZIw3+iA2BrS0C0Wr7UlJ48VnuOFIcb0=";
 
-  mypy-boto3-auditmanager = buildMypyBoto3Package "auditmanager" "1.34.0" "sha256-22Xkl1A5wzKDpRQcr/lp7gQsDPtQjvjK3nBm5O2ZS+k=";
+  mypy-boto3-autoscaling =
+    buildMypyBoto3Package "autoscaling" "1.35.4"
+      "sha256-XRAj8UYVmjQ0GjAevPGs1/g2XRsoCElCNaj1kPrWyCo=";
 
-  mypy-boto3-autoscaling = buildMypyBoto3Package "autoscaling" "1.34.54" "sha256-MGACE7CeturY9BN6Gq3VAvz4TqeoQ/ASlSdbX9LLTbQ=";
+  mypy-boto3-autoscaling-plans =
+    buildMypyBoto3Package "autoscaling-plans" "1.35.0"
+      "sha256-Xvclx5MTWaT4fh1P5+xud3CuWYM+Y0F0j69iz2ITuts=";
 
-  mypy-boto3-autoscaling-plans = buildMypyBoto3Package "autoscaling-plans" "1.34.0" "sha256-16siojcxNe5MuSZSRJXPAz2UudJozEEyCYUrsGNDAM8=";
+  mypy-boto3-backup =
+    buildMypyBoto3Package "backup" "1.35.10"
+      "sha256-wgEgdD94/Ynb/Zd5rKbtUX196618kRzu1osq2Zi0h6M=";
 
-  mypy-boto3-backup = buildMypyBoto3Package "backup" "1.34.64" "sha256-RvxhEmrOtkvagjaj8x2H7AAp+uK9qDIDe7T9p52rKRc=";
+  mypy-boto3-backup-gateway =
+    buildMypyBoto3Package "backup-gateway" "1.35.0"
+      "sha256-8IRkY4sMGkj2ZxZBM4n/7clzQHwuon8wmXIOAGa4nEI=";
 
-  mypy-boto3-backup-gateway = buildMypyBoto3Package "backup-gateway" "1.34.0" "sha256-nSIEEDKJfI852/WBQ7OuDPuVijEiMr1vhpkzODbhRRc=";
+  mypy-boto3-batch =
+    buildMypyBoto3Package "batch" "1.35.0"
+      "sha256-LVwSfDll7H0xxvF6b2wlqr/gQ5nR4oqtev4ZT4hgJX0=";
 
-  mypy-boto3-backupstorage = buildMypyBoto3Package "backupstorage" "1.34.0" "sha256-Y8kjZ+ov8OsiJ8Sm1LlvP8YbgVc+AkLkbZIhOh4y7ZY=";
+  mypy-boto3-billingconductor =
+    buildMypyBoto3Package "billingconductor" "1.35.0"
+      "sha256-PlOL9fmTgWo8jF17Um+aDDNShQWpCxkkp5dFBHl/494=";
 
-  mypy-boto3-batch = buildMypyBoto3Package "batch" "1.34.83" "sha256-mJ6t+8ov7x8tfJNavY6qZpHxwenVGhTXy6NRlD7muPc=";
+  mypy-boto3-braket =
+    buildMypyBoto3Package "braket" "1.35.0"
+      "sha256-6iUVQMXsam6ALxL+g7o/l3KIQLjnBlp3qgkuarPW/SU=";
 
-  mypy-boto3-billingconductor = buildMypyBoto3Package "billingconductor" "1.34.1" "sha256-uXxQkoe2u3idcYta9YFbjxoK8HsvUiRQSyYrYhVi1kU=";
+  mypy-boto3-budgets =
+    buildMypyBoto3Package "budgets" "1.35.26"
+      "sha256-WJ0Vjppi+dDYwqL3Xu+VWc+KIbhc9CHzAU3C5x5eTHA=";
 
-  mypy-boto3-braket = buildMypyBoto3Package "braket" "1.34.39" "sha256-laMrKu9oN5a9yvB8lyhdjpq5hm1HGAFn3iJ0lReRpOI=";
+  mypy-boto3-ce =
+    buildMypyBoto3Package "ce" "1.35.22"
+      "sha256-1MB5ldBGqYDZMkYaEJ0nK+jM5q/TkcN3wllT1X8YnQc=";
 
-  mypy-boto3-budgets = buildMypyBoto3Package "budgets" "1.34.0" "sha256-gs8JYnpFNOMWppBO2R3DO+c6RecQC0vzaox5DqXCKOA=";
+  mypy-boto3-chime =
+    buildMypyBoto3Package "chime" "1.35.0"
+      "sha256-nMDg2tBX6gakw4nHwxmkMshM26hf+x1knK1GRLY/BeE=";
 
-  mypy-boto3-ce = buildMypyBoto3Package "ce" "1.34.71" "sha256-VfB823/q+ie97Bv5GXhsBaGxAuXSDbfFq2rO6TjThXY=";
+  mypy-boto3-chime-sdk-identity =
+    buildMypyBoto3Package "chime-sdk-identity" "1.35.0"
+      "sha256-BAHAhOT7WanSavOe4iNVeJ0I4+QW2Ymn6C915sTQbwU=";
 
-  mypy-boto3-chime = buildMypyBoto3Package "chime" "1.34.0" "sha256-/IBkHJf4t1K/Ubdf/hUw5XToNBTCziMfTSdksxMwA2Q=";
+  mypy-boto3-chime-sdk-media-pipelines =
+    buildMypyBoto3Package "chime-sdk-media-pipelines" "1.35.0"
+      "sha256-eXgK8DJugHC1r9qPVK5ajdr/ppDnfxBHxB0tSld0icw=";
 
-  mypy-boto3-chime-sdk-identity = buildMypyBoto3Package "chime-sdk-identity" "1.34.0" "sha256-3gXUFr3+Tc5PgwsQuQY8D2J0SKGQJRXgQz7/XKYNr5k=";
+  mypy-boto3-chime-sdk-meetings =
+    buildMypyBoto3Package "chime-sdk-meetings" "1.35.0"
+      "sha256-mw4aJjeN00ES6lSvjDHBCRowQmPqRzvdJoSk11gJop0=";
 
-  mypy-boto3-chime-sdk-media-pipelines = buildMypyBoto3Package "chime-sdk-media-pipelines" "1.34.0" "sha256-h5RD+anRtH0UQ5pFjhygN9oZDFdIRZMfGXSKlT2HuSY=";
+  mypy-boto3-chime-sdk-messaging =
+    buildMypyBoto3Package "chime-sdk-messaging" "1.35.0"
+      "sha256-FytBZE72zKuoagYWnfv77mS7Wx6WcE427Spd/2h78kc=";
 
-  mypy-boto3-chime-sdk-meetings = buildMypyBoto3Package "chime-sdk-meetings" "1.34.4" "sha256-AmwzLd8iLGdmo1Ajv4IVrxwyf/UljG0I06um2S3PG+E=";
+  mypy-boto3-chime-sdk-voice =
+    buildMypyBoto3Package "chime-sdk-voice" "1.35.16"
+      "sha256-O7mrqn+S0rDcOnhxXI10mB/NHzI+f23HqNXoO5gxiPc=";
 
-  mypy-boto3-chime-sdk-messaging = buildMypyBoto3Package "chime-sdk-messaging" "1.34.0" "sha256-8Pq48GBFKQRdmoAu9qxAR14xRSP8/roBrZHxzaTBB54=";
+  mypy-boto3-cleanrooms =
+    buildMypyBoto3Package "cleanrooms" "1.35.0"
+      "sha256-+RAqaRHKax8sUaOoIaaT+HvW/EGir2daS+aqDWNoDwA=";
 
-  mypy-boto3-chime-sdk-voice = buildMypyBoto3Package "chime-sdk-voice" "1.34.0" "sha256-9fQQgWFKeabSblJIhP6mN0CEnSixkz1r3mf/k6IL/BE=";
+  mypy-boto3-cloud9 =
+    buildMypyBoto3Package "cloud9" "1.35.0"
+      "sha256-Sh+w+fi1myX1QUR0JnQeE4/fh2TSVvXIp5tVzxigu5I=";
 
-  mypy-boto3-cleanrooms = buildMypyBoto3Package "cleanrooms" "1.34.82" "sha256-KaCs/P3NM3IeZ9V9khIwysyBXBG/8RuGFBAlrbMYn4Y=";
+  mypy-boto3-cloudcontrol =
+    buildMypyBoto3Package "cloudcontrol" "1.35.0"
+      "sha256-T7rLgdtj8PUAZ6WRRkFYH/I6bqq+NA29kddxeI72UVU=";
 
-  mypy-boto3-cloud9 = buildMypyBoto3Package "cloud9" "1.34.24" "sha256-fryD7UfO5cdFS7vMxmZaT9LW4nNSGTQCd3NyD60f9wA=";
+  mypy-boto3-clouddirectory =
+    buildMypyBoto3Package "clouddirectory" "1.35.0"
+      "sha256-pU73zcHpJjazGSsHDUcWQezvdQfrP8mV4CROICuQOq8=";
 
-  mypy-boto3-cloudcontrol = buildMypyBoto3Package "cloudcontrol" "1.34.0" "sha256-81M2llb46sviZ874/vHVaqOU1PvQs+Zdil8bxr1pEWM=";
+  mypy-boto3-cloudformation =
+    buildMypyBoto3Package "cloudformation" "1.35.0"
+      "sha256-DQN9nWvbQ5qE4jkbqYek4D/O360OiB2xzw94YdJ1kHw=";
 
-  mypy-boto3-clouddirectory = buildMypyBoto3Package "clouddirectory" "1.34.0" "sha256-lWJQClNEhyq9CN8ThcHtVcEsowIp+V8RXh4rgHAclfM=";
+  mypy-boto3-cloudfront =
+    buildMypyBoto3Package "cloudfront" "1.35.0"
+      "sha256-ewZmBuNAs3YS2tG5WDbNBRr1y1BmmOTxvXrSASNhAp4=";
 
-  mypy-boto3-cloudformation = buildMypyBoto3Package "cloudformation" "1.34.77" "sha256-mQAUGCaB+d8iV/GFBWEmwNswvxJg9s09Rs7bPPRn8K0=";
+  mypy-boto3-cloudhsm =
+    buildMypyBoto3Package "cloudhsm" "1.35.0"
+      "sha256-/zmoWmzYLCtRC6ZnnltNeXL3MtXzHyDgoP9LKsR1dAo=";
 
-  mypy-boto3-cloudfront = buildMypyBoto3Package "cloudfront" "1.34.83" "sha256-glPRMg4IS/5Mz6ckyQWgZuu9G3IlPsfA97fx41YpSw0=";
+  mypy-boto3-cloudhsmv2 =
+    buildMypyBoto3Package "cloudhsmv2" "1.35.0"
+      "sha256-twEjxoeN4rSCJ3uN4Jcyhd2cowPnMQ+O7zoWooE/Nxs=";
 
-  mypy-boto3-cloudhsm = buildMypyBoto3Package "cloudhsm" "1.34.0" "sha256-Sd/YlKNm/1VRoJ+e+3YlOf4jKoewYVGM4FNYlST+9AY=";
+  mypy-boto3-cloudsearch =
+    buildMypyBoto3Package "cloudsearch" "1.35.0"
+      "sha256-BfQ8gM+yWcqOpmM+G8DQzJCJYwQk2zbf6v25ZkGH0y8=";
 
-  mypy-boto3-cloudhsmv2 = buildMypyBoto3Package "cloudhsmv2" "1.34.0" "sha256-TCKdRXnA2x3LBop9boixNmkPafTdIOY8sGaUSeA9Sic=";
+  mypy-boto3-cloudsearchdomain =
+    buildMypyBoto3Package "cloudsearchdomain" "1.35.0"
+      "sha256-8QLyd1uCh26njr6VnNBFROHWFXMSvpO7WRzV8DFZ01U=";
 
-  mypy-boto3-cloudsearch = buildMypyBoto3Package "cloudsearch" "1.34.0" "sha256-S1re04NWngrjlcLIPzP4D0I1cVqvt/Taku6CTTfvtMw=";
+  mypy-boto3-cloudtrail =
+    buildMypyBoto3Package "cloudtrail" "1.35.27"
+      "sha256-EZzFE8myIt72X3Mxr+ZZ4lx8O+nTARvm93OhT4ekYpE=";
 
-  mypy-boto3-cloudsearchdomain = buildMypyBoto3Package "cloudsearchdomain" "1.34.0" "sha256-jhhwFXH80aZjVqVMZulwoCvu3EmXj4BbJ3DQ6eJPS4E=";
+  mypy-boto3-cloudtrail-data =
+    buildMypyBoto3Package "cloudtrail-data" "1.35.0"
+      "sha256-YGz59Mf6cNqNAJmdI0YQF9dzzUY6Mwi7fgzsDwMWv3w=";
 
-  mypy-boto3-cloudtrail = buildMypyBoto3Package "cloudtrail" "1.34.59" "sha256-0gwq1zhZcLc8gVGo337AqqC39w8MJR6JK948No/yzVA=";
+  mypy-boto3-cloudwatch =
+    buildMypyBoto3Package "cloudwatch" "1.35.0"
+      "sha256-DXAn45lDLDoA5T7yDRRYwz7HI0l2SYxB6TZAsXZS2oY=";
 
-  mypy-boto3-cloudtrail-data = buildMypyBoto3Package "cloudtrail-data" "1.34.0" "sha256-ACiJrI+VTHr06i8PKgDY/K8houFUZQNS1lluouadCTQ=";
+  mypy-boto3-codeartifact =
+    buildMypyBoto3Package "codeartifact" "1.35.0"
+      "sha256-NXttDVG1iAGoYefRXROKaXiQUnRXxiOcOUad7ZuA2xE=";
 
-  mypy-boto3-cloudwatch = buildMypyBoto3Package "cloudwatch" "1.34.83" "sha256-dm4WbFtGPZiFpZKdwWu1kuD6fXvq9WmqT1AdhahIvBM=";
+  mypy-boto3-codebuild =
+    buildMypyBoto3Package "codebuild" "1.35.21"
+      "sha256-sCIMOBe3VppVALMDc4BV3rK+RYlCbxK80YUKPnckvT8=";
 
-  mypy-boto3-codeartifact = buildMypyBoto3Package "codeartifact" "1.34.68" "sha256-Ey0cmx0OxN1/VXIyvn0EOBP9qYIuc/XyFVZniHLaNEY=";
+  mypy-boto3-codecatalyst =
+    buildMypyBoto3Package "codecatalyst" "1.35.0"
+      "sha256-VaY7Xe06Mih4/nj03+e2rbSuRKZhuNlcWv9B5lqVM80=";
 
-  mypy-boto3-codebuild = buildMypyBoto3Package "codebuild" "1.34.83" "sha256-nf1rO/BmEFenb/Z/bWKHRDpZVG3WZb9OPIsxcKOdATo=";
+  mypy-boto3-codecommit =
+    buildMypyBoto3Package "codecommit" "1.35.0"
+      "sha256-uYcDPjNaXSQrGjkvkARXZCd0zinppzlxzwqXSDln8UM=";
 
-  mypy-boto3-codecatalyst = buildMypyBoto3Package "codecatalyst" "1.34.73" "sha256-jQ/DIoWXQWo1oVWi4Gn88cxr78QCs45EVtgfc6fZkFk=";
+  mypy-boto3-codedeploy =
+    buildMypyBoto3Package "codedeploy" "1.35.0"
+      "sha256-1IJOc/HNHlKr8Fu3mz0eSvjl0O4T15qvfQtBI7B8yIQ=";
 
-  mypy-boto3-codecommit = buildMypyBoto3Package "codecommit" "1.34.6" "sha256-wCw6e7yvMjM+A6jXfB2D4Z+i9s3e/F9Ih/VxD6iiwws=";
+  mypy-boto3-codeguru-reviewer =
+    buildMypyBoto3Package "codeguru-reviewer" "1.35.0"
+      "sha256-CtUYNrOocrt2lKCNb0K2/GitWFYhhspM4upo2Q6qbuU=";
 
-  mypy-boto3-codedeploy = buildMypyBoto3Package "codedeploy" "1.34.0" "sha256-Sxtcl/fO+A2/s/6O3VC1BPIJ3dDamshEEmKXqyg4fN8=";
+  mypy-boto3-codeguru-security =
+    buildMypyBoto3Package "codeguru-security" "1.35.0"
+      "sha256-6YRFmSjoVc+wEoYAElh0xeJ+V+TK2WCQuxW0i2yh7s0=";
 
-  mypy-boto3-codeguru-reviewer = buildMypyBoto3Package "codeguru-reviewer" "1.34.0" "sha256-20W+LBYsQE/pNs94ZbVWNw0+2817gwfGKaJHCoiDsPM=";
+  mypy-boto3-codeguruprofiler =
+    buildMypyBoto3Package "codeguruprofiler" "1.35.0"
+      "sha256-UJmPVW20ofQmmer9/IYwaFIU2+xhXcT+0s2aUxFDGZY=";
 
-  mypy-boto3-codeguru-security = buildMypyBoto3Package "codeguru-security" "1.34.0" "sha256-DTtYCgcy3LWGxuxqSAkeS9qoBq1YWwAWfZU2DD44BOY=";
+  mypy-boto3-codepipeline =
+    buildMypyBoto3Package "codepipeline" "1.35.13"
+      "sha256-tLQEsxoPyDA5cFlsm3HAOQPCyZApCQOBJMxVPDH6Q+w=";
 
-  mypy-boto3-codeguruprofiler = buildMypyBoto3Package "codeguruprofiler" "1.34.0" "sha256-pAZL9m0SHRYiIrXzBf+IeEkQOXS4/6OJqoDI6og3N5s=";
+  mypy-boto3-codestar =
+    buildMypyBoto3Package "codestar" "1.35.0"
+      "sha256-B9Aq+hh9BOzCIYMkS21IZYb3tNCnKnV2OpSIo48aeJM=";
 
-  mypy-boto3-codepipeline = buildMypyBoto3Package "codepipeline" "1.34.43" "sha256-omGtS0+5qBDBxCcKoOM+dsraE22m129zYUJB2yRxBtQ=";
+  mypy-boto3-codestar-connections =
+    buildMypyBoto3Package "codestar-connections" "1.35.0"
+      "sha256-FgwTiMwMb0ujBqMcl1kCQVEk0HeCzq3Zcj5dXu9BCYk=";
 
-  mypy-boto3-codestar = buildMypyBoto3Package "codestar" "1.34.0" "sha256-BAueRLlYZGDiF6DtjxL24twLYYZqD3ErdJ73fsFoG1k=";
+  mypy-boto3-codestar-notifications =
+    buildMypyBoto3Package "codestar-notifications" "1.35.0"
+      "sha256-7IzW60xRrkzLorC3QJMX+iP6DN46sdaYKizNFTNTL98=";
 
-  mypy-boto3-codestar-connections = buildMypyBoto3Package "codestar-connections" "1.34.60" "sha256-WH/cN8BXG7c79gGR/0m3xvEPNdPAFRosInmO9DeAVdM=";
+  mypy-boto3-cognito-identity =
+    buildMypyBoto3Package "cognito-identity" "1.35.16"
+      "sha256-UVEJn/VNbYEIRPHV9CuDI0Hos5POiMQThiN4OlncQIE=";
 
-  mypy-boto3-codestar-notifications = buildMypyBoto3Package "codestar-notifications" "1.34.0" "sha256-JmXEpHbOhcO9F++G+ohXPuXoNILbcL9r5qyH4OooCtc=";
+  mypy-boto3-cognito-idp =
+    buildMypyBoto3Package "cognito-idp" "1.35.18"
+      "sha256-StmODomtTdvtjYL54eNQBWWuVLozMB+sowpZKeGsYX0=";
 
-  mypy-boto3-cognito-identity = buildMypyBoto3Package "cognito-identity" "1.34.0" "sha256-6UlyNX0a1wG5FR/WHMZOwysikGffNCX6Fo1MYvFuFwM=";
+  mypy-boto3-cognito-sync =
+    buildMypyBoto3Package "cognito-sync" "1.35.0"
+      "sha256-eKmSJqNDB4rLeaiwors2mvDteM5qNQGsGz3Xq8VqUzU=";
 
-  mypy-boto3-cognito-idp = buildMypyBoto3Package "cognito-idp" "1.34.59" "sha256-kZpXb5MzK4IceWnNs9tWWLhQnysfWGuOLf00J4/ypvw=";
+  mypy-boto3-comprehend =
+    buildMypyBoto3Package "comprehend" "1.35.0"
+      "sha256-x0D+Dar+VWHY59zIKkp8+gSL5I8gUSgct9ANplZ5aSE=";
 
-  mypy-boto3-cognito-sync = buildMypyBoto3Package "cognito-sync" "1.34.0" "sha256-JTkmpEHwKN5IyoGVs4beVAEOr1fZPxBoYjzNBgjTEY0=";
+  mypy-boto3-comprehendmedical =
+    buildMypyBoto3Package "comprehendmedical" "1.35.0"
+      "sha256-goeKEyNrj2ofR5v0nEpDZ1CLNpR0qvN13u8KS1sImZQ=";
 
-  mypy-boto3-comprehend = buildMypyBoto3Package "comprehend" "1.34.30" "sha256-G7mSJWcr0ntPX6WoaeTWPw/uB32yn6xXPyyQvDVfa8s=";
+  mypy-boto3-compute-optimizer =
+    buildMypyBoto3Package "compute-optimizer" "1.35.0"
+      "sha256-pP0c6lk9l3seKkYBW9AjoaypkRWw4YwDgJjIpkwkLMA=";
 
-  mypy-boto3-comprehendmedical = buildMypyBoto3Package "comprehendmedical" "1.34.0" "sha256-4KzL56xU474te8tW5xVZo6D5Pwe3GLRQbQfX8CXTz9g=";
+  mypy-boto3-config =
+    buildMypyBoto3Package "config" "1.35.0"
+      "sha256-1pS2EkJapoNVi5lUEftaxbdoN4fd7XSFjWyLXH1noL0=";
 
-  mypy-boto3-compute-optimizer = buildMypyBoto3Package "compute-optimizer" "1.34.73" "sha256-WOPbzONtQ+hnVYwWCWC2Q/E1mqWNww0K2tbJhZxjAHo=";
+  mypy-boto3-connect =
+    buildMypyBoto3Package "connect" "1.35.13"
+      "sha256-sL2WWzsUFA6dbKR3XUEoy+CbWT6TWVQCxfdQ8mZTmbo=";
 
-  mypy-boto3-config = buildMypyBoto3Package "config" "1.34.45" "sha256-LN1CcIOj9cgzSNCvnUVwLRNPXlitHAlt+5jj6wu6i8E=";
+  mypy-boto3-connect-contact-lens =
+    buildMypyBoto3Package "connect-contact-lens" "1.35.0"
+      "sha256-S47wzXzOyTs27UzjtqtYJg38QGvBpnJ7boNlrueiZoQ=";
 
-  mypy-boto3-connect = buildMypyBoto3Package "connect" "1.34.82" "sha256-QyZteRrk1d+Qwqj87uUb4f2ZK5SjPdMJV4NGv6kwrl4=";
+  mypy-boto3-connectcampaigns =
+    buildMypyBoto3Package "connectcampaigns" "1.35.0"
+      "sha256-7nPkRP30c2KVarTw4OhebqHeWQ3wTm10PPkxoP3OvbE=";
 
-  mypy-boto3-connect-contact-lens = buildMypyBoto3Package "connect-contact-lens" "1.34.0" "sha256-Wx9vcjlgXdWZ2qP3Y/hTY2LAeTd+hyyV5JSIuKQ5I5k=";
+  mypy-boto3-connectcases =
+    buildMypyBoto3Package "connectcases" "1.35.0"
+      "sha256-lq4OWLz7+cycAuSr5dAoQ8aCbggAdLRv/dc7aUa/N7Y=";
 
-  mypy-boto3-connectcampaigns = buildMypyBoto3Package "connectcampaigns" "1.34.16" "sha256-CR1FuVJgYODKEhDmmwcWrjPyZm7HsFRlzq3HlnKe81E=";
+  mypy-boto3-connectparticipant =
+    buildMypyBoto3Package "connectparticipant" "1.35.0"
+      "sha256-rYvtpy8Uac5YO4x/WSvUHz0aY8vYVf30gW1aLyYDbRM=";
 
-  mypy-boto3-connectcases = buildMypyBoto3Package "connectcases" "1.34.24" "sha256-a3P7wPx2FQ3V5T68B4fYzuq2juiqs7R8K5WSbyWu5ug=";
+  mypy-boto3-controltower =
+    buildMypyBoto3Package "controltower" "1.35.0"
+      "sha256-Hc9S/t+sTaMHIk93/pIWowMm0qXyyKf2Jth0j/JdtyA=";
 
-  mypy-boto3-connectparticipant = buildMypyBoto3Package "connectparticipant" "1.34.44" "sha256-kP4ovwHfJoeRjSyfeL0M1U70aJoApMUUWOLFRpt6H+w=";
+  mypy-boto3-cur =
+    buildMypyBoto3Package "cur" "1.35.0"
+      "sha256-YEm3nBfWCSzwPZ3Yvm4Nf3cMxaTccvHdBrs84g7KE4g=";
 
-  mypy-boto3-controltower = buildMypyBoto3Package "controltower" "1.34.42" "sha256-HwVES0lu75XkBPE7WQMSP2tOSogAqO3yr+cIeWaw9Is=";
+  mypy-boto3-customer-profiles =
+    buildMypyBoto3Package "customer-profiles" "1.35.0"
+      "sha256-j+L/GV/1l1OGQk1T6X4ieErbTkfAhHUl+zSTiSoo/QE=";
 
-  mypy-boto3-cur = buildMypyBoto3Package "cur" "1.34.0" "sha256-vwMILmIX7uzAGXdl1Z5mxVMJlgZCtA3Svp8mFmoZ6tQ=";
+  mypy-boto3-databrew =
+    buildMypyBoto3Package "databrew" "1.35.0"
+      "sha256-zzd0tw46A9NwxUJ+7tz3Xlb4RbVTY3v7szDG4/189Ng=";
 
-  mypy-boto3-customer-profiles = buildMypyBoto3Package "customer-profiles" "1.34.0" "sha256-LxonO6G0Qa8j6VORcAwvR9j+w879Di5pqTzlicC9Dp8=";
+  mypy-boto3-dataexchange =
+    buildMypyBoto3Package "dataexchange" "1.35.0"
+      "sha256-DZ8sYkjFA0yFfRKNQbEW2YA3Dl04FbG6Hu8myRuFlUs=";
 
-  mypy-boto3-databrew = buildMypyBoto3Package "databrew" "1.34.0" "sha256-DP1Cuyogrs/K6qM7fnbHWSTPcpjoy1m0XEsq1ONbhxM=";
+  mypy-boto3-datapipeline =
+    buildMypyBoto3Package "datapipeline" "1.35.0"
+      "sha256-JlarWblBOzB64JV7866QjxIWqQH17qH4Lcig2g7WsAw=";
 
-  mypy-boto3-dataexchange = buildMypyBoto3Package "dataexchange" "1.34.0" "sha256-gLJ6AJQLKSiGcwWEgDwipg0D1NqYwNFiXwAUGwCJ2+0=";
+  mypy-boto3-datasync =
+    buildMypyBoto3Package "datasync" "1.35.0"
+      "sha256-lUzOmIoPNgEbJC54tre1m5ddhca05GyTSPOG4uIfumk=";
 
-  mypy-boto3-datapipeline = buildMypyBoto3Package "datapipeline" "1.34.0" "sha256-Amn6pdW5i8+yBzuSRAmj0EnTYEGjzguQxaoLmhFFXck=";
+  mypy-boto3-dax =
+    buildMypyBoto3Package "dax" "1.35.0"
+      "sha256-kAOvmRLOPBKhHiipN17YTgKSkZU4fjdJtay16uV/10Y=";
 
-  mypy-boto3-datasync = buildMypyBoto3Package "datasync" "1.34.37" "sha256-uVZsnbghzbjDAuR+d6l7EET6S9fvx2NYGEllCPLtIXQ=";
+  mypy-boto3-detective =
+    buildMypyBoto3Package "detective" "1.35.0"
+      "sha256-pLurujlWUyHNeHqGDdLNPOZ91VyzVsnIdDPSgGEWhOo=";
 
-  mypy-boto3-dax = buildMypyBoto3Package "dax" "1.34.0" "sha256-DH5kqV+C4vbZ8fbvAtR93jd5YB22hkYe/xgOF4oru1Y=";
+  mypy-boto3-devicefarm =
+    buildMypyBoto3Package "devicefarm" "1.35.8"
+      "sha256-NuCFTZ3+3NSlXtaG3hJTP58CBevyt5+qjIK8BY/VMOA=";
 
-  mypy-boto3-detective = buildMypyBoto3Package "detective" "1.34.43" "sha256-VevmUTgN0UKhWAtGfSbQoqAhgv19XiOBBoNNsHfHezg=";
+  mypy-boto3-devops-guru =
+    buildMypyBoto3Package "devops-guru" "1.35.0"
+      "sha256-KOvVP0ttOXBxmDF05GPRNvr2fKUc6+qJz3Pw53oAI+o=";
 
-  mypy-boto3-devicefarm = buildMypyBoto3Package "devicefarm" "1.34.0" "sha256-X0D4Am4GUDFl703FmdrPcHXihFdzuch/eQBofDTameQ=";
+  mypy-boto3-directconnect =
+    buildMypyBoto3Package "directconnect" "1.35.0"
+      "sha256-HCSark4bQG673j5KZ1ZULwNiOBk/cichkGwuH1XNAPk=";
 
-  mypy-boto3-devops-guru = buildMypyBoto3Package "devops-guru" "1.34.0" "sha256-IxSTAjcJcGySV1Zzlxal23nZz7m1eaCDa8UX41+9l5o=";
+  mypy-boto3-discovery =
+    buildMypyBoto3Package "discovery" "1.35.0"
+      "sha256-kM9eR8OQ2la4tad+Q2PvO0auuEQNj0My5q4l8//9i+I=";
 
-  mypy-boto3-directconnect = buildMypyBoto3Package "directconnect" "1.34.0" "sha256-H3xxqWZwjjzf7gFwsEfAcQmFfm3ZxNOBge0yFsfQpLM=";
+  mypy-boto3-dlm =
+    buildMypyBoto3Package "dlm" "1.35.0"
+      "sha256-yJ3ApQy6xeEdxNcRQG5mekfK1aP7FPdR79TfbRZkESo=";
 
-  mypy-boto3-discovery = buildMypyBoto3Package "discovery" "1.34.0" "sha256-QT3KX4bHVigaeOxMCBBtLR3lbTLOQAl1JDnMzN7gt9s=";
+  mypy-boto3-dms =
+    buildMypyBoto3Package "dms" "1.35.0"
+      "sha256-mTwE5mn8GTCMuidyk8cYnZEk3PkrnP2ykVZgn2geMTo=";
 
-  mypy-boto3-dlm = buildMypyBoto3Package "dlm" "1.34.0" "sha256-uBcxQvYlWvhoVdWThvaETCKCmju0xtIFRcE8Eon6ovI=";
+  mypy-boto3-docdb =
+    buildMypyBoto3Package "docdb" "1.35.0"
+      "sha256-gRSlQ63BPat6gxy+jZP/vtZIn6a4fXN0tx6oPvvgROo=";
 
-  mypy-boto3-dms = buildMypyBoto3Package "dms" "1.34.0" "sha256-xGGMtqja+ipLpWRMXO1VzxHqjlaZDZ31p634u5kmyNs=";
+  mypy-boto3-docdb-elastic =
+    buildMypyBoto3Package "docdb-elastic" "1.35.0"
+      "sha256-bmhGGMR9x0QKFl2p0p4xhxtE+A5PZQ/HO1FdLuAgLtI=";
 
-  mypy-boto3-docdb = buildMypyBoto3Package "docdb" "1.34.77" "sha256-7iJn4wzvQ6FAD2xU04fLwJW8hWRfmJmFxVH/2KnsUdE=";
+  mypy-boto3-drs =
+    buildMypyBoto3Package "drs" "1.35.0"
+      "sha256-Fzdqwy9NA+R2ZYNuXcxTv5RlY9X1d609CZHbSQUp3Is=";
 
-  mypy-boto3-docdb-elastic = buildMypyBoto3Package "docdb-elastic" "1.34.53" "sha256-sNoS7ujT0rMi4WAFXwIfwkoGP3c88+l6cW7eliHheJ4=";
+  mypy-boto3-ds =
+    buildMypyBoto3Package "ds" "1.35.22"
+      "sha256-OgK+ZM7wn7Elp6xzb1YnZtYP+eARgsP+BIYkQb+E4YE=";
 
-  mypy-boto3-drs = buildMypyBoto3Package "drs" "1.34.50" "sha256-UWqnQAyxBnQjGYofZMOD3nhnqxTMh2U7/FNtMId1isk=";
+  mypy-boto3-dynamodb =
+    buildMypyBoto3Package "dynamodb" "1.35.24"
+      "sha256-Vb+Jeh0ONUV57bBQAfS8T0crlFK63Z2ySHbDG98/cqE=";
 
-  mypy-boto3-ds = buildMypyBoto3Package "ds" "1.34.0" "sha256-qVtMpsnVLF2rN4WaEhrqlTvWvW28RcHIBjsZYwmYapc=";
+  mypy-boto3-dynamodbstreams =
+    buildMypyBoto3Package "dynamodbstreams" "1.35.0"
+      "sha256-oiyT6g9Rnfv1LLHv5NgIUiXLS5Q3jsz9f0EswUUnrKs=";
 
-  mypy-boto3-dynamodb = buildMypyBoto3Package "dynamodb" "1.34.67" "sha256-CUR+8+pr3+C+TjLKIyg4IFczQdNAvqMGXe0hU8xZPSI=";
+  mypy-boto3-ebs =
+    buildMypyBoto3Package "ebs" "1.35.0"
+      "sha256-wBJ7PnAlsi88AZIRPoNgbzOhPwUAJBegtwk+tw1lOwU=";
 
-  mypy-boto3-dynamodbstreams = buildMypyBoto3Package "dynamodbstreams" "1.34.0" "sha256-Zx5cJE+fU9NcvK5rLR966AGIKUvfIwdpLaWWdLmuDzc=";
+  mypy-boto3-ec2 =
+    buildMypyBoto3Package "ec2" "1.35.27"
+      "sha256-fop723a6ylbitijRkYLBWw0ijtYyi/oNP53ZNZZYxpI=";
 
-  mypy-boto3-ebs = buildMypyBoto3Package "ebs" "1.34.0" "sha256-xIrrXOayZed+Jcn4CFXXNgKz/G+RdiuwA04wq+Ry/fs=";
+  mypy-boto3-ec2-instance-connect =
+    buildMypyBoto3Package "ec2-instance-connect" "1.35.0"
+      "sha256-0Xe77fz+lA+nuUGK+PjU0EgWeQ7AJ9Smsb/4yK1tow0=";
 
-  mypy-boto3-ec2 = buildMypyBoto3Package "ec2" "1.34.78" "sha256-vfKasmXtPV8AlNmwyNNA6tnmtgn1w7m2eQYB6GYfikg=";
+  mypy-boto3-ecr =
+    buildMypyBoto3Package "ecr" "1.35.21"
+      "sha256-1+jCQIbOOyWeSsKicfw07U7/3pnHiZrH1kwto8/wrNc=";
 
-  mypy-boto3-ec2-instance-connect = buildMypyBoto3Package "ec2-instance-connect" "1.34.63" "sha256-kExmGXEJ5jrvOewmWx7AjVb3boD5GU0cEUp/2PQhzlw=";
+  mypy-boto3-ecr-public =
+    buildMypyBoto3Package "ecr-public" "1.35.0"
+      "sha256-KXtN44KAIDXjMgv3ICG8rXYfEjcZ85pQ+qdvN2Yiq3g=";
 
-  mypy-boto3-ecr = buildMypyBoto3Package "ecr" "1.34.0" "sha256-uD+wMR6WikLUyoIbAGwY1KPj42S4zr7nWOpPqXxaw0U=";
+  mypy-boto3-ecs =
+    buildMypyBoto3Package "ecs" "1.35.21"
+      "sha256-DSmCf9/TXUfoEYppEZOxAJOxuOCZK5p6GRIKWIa3aPQ=";
 
-  mypy-boto3-ecr-public = buildMypyBoto3Package "ecr-public" "1.34.0" "sha256-38ZiRVPr9L+KUF6oL23xsIiKMW0pT/nIngFkhSS3z2Y=";
+  mypy-boto3-efs =
+    buildMypyBoto3Package "efs" "1.35.0"
+      "sha256-6o825Pz7Vbg/xuFXR7mTLv3zWcLoRIqbFqjRcQtZOJ8=";
 
-  mypy-boto3-ecs = buildMypyBoto3Package "ecs" "1.34.76" "sha256-y8B4Qh1WWJEgP+VHzznJdsdCsAA1pUizEh+qTDDFeoQ=";
+  mypy-boto3-eks =
+    buildMypyBoto3Package "eks" "1.35.0"
+      "sha256-w+uJ5Jqfbnj3ykj59C8sbhitp5MyTIE+PnZXrlIkOag=";
 
-  mypy-boto3-efs = buildMypyBoto3Package "efs" "1.34.0" "sha256-VAK7mfnPBPDC8Azm6Bxl86E8CkeArTmfgqYkIcSblYA=";
+  mypy-boto3-elastic-inference =
+    buildMypyBoto3Package "elastic-inference" "1.35.0"
+      "sha256-GpOOU/ritDu+hDZL8adN5fLYhYt0bgBTqCv2mDjt1T0=";
 
-  mypy-boto3-eks = buildMypyBoto3Package "eks" "1.34.73" "sha256-sSVfQvBmH9wYnqInvF8ixsyb0pbvHPx0zQwfPxa5caE=";
+  mypy-boto3-elasticache =
+    buildMypyBoto3Package "elasticache" "1.35.0"
+      "sha256-m80E+gaUJNpmrY9k4TuKaMbaAm+fCDqUbgH5IVgrArw=";
 
-  mypy-boto3-elastic-inference = buildMypyBoto3Package "elastic-inference" "1.34.0" "sha256-gbWKw0zDQf3qBlp1KeO7MX1j/GqRUpFAxLG0BKFrHBk=";
+  mypy-boto3-elasticbeanstalk =
+    buildMypyBoto3Package "elasticbeanstalk" "1.35.0"
+      "sha256-mQMBfRyxFW0Mj/VX74luXxxfVTqSgMswet1fZe5qiyE=";
 
-  mypy-boto3-elasticache = buildMypyBoto3Package "elasticache" "1.34.72" "sha256-yZd2KB7wIw23PybblyIlCo/5IEFYxAUfbLD2J91eOzw=";
+  mypy-boto3-elastictranscoder =
+    buildMypyBoto3Package "elastictranscoder" "1.35.0"
+      "sha256-5fyZdBW/KdryVUv9NiSUa8TGEgh4U8eLXWv/Z0DhIew=";
 
-  mypy-boto3-elasticbeanstalk = buildMypyBoto3Package "elasticbeanstalk" "1.34.0" "sha256-ftVFUwY81mg/9zJ4xxVjhXF1HgKpzj1koIS32cMKRLw=";
+  mypy-boto3-elb =
+    buildMypyBoto3Package "elb" "1.35.0"
+      "sha256-fw/vfzKXXQSG7xj9FolkJgzciHBz4ELlFh2MlEJ6wQI=";
 
-  mypy-boto3-elastictranscoder = buildMypyBoto3Package "elastictranscoder" "1.34.0" "sha256-tC+9Ks0DDC3zWBd9C964X8TFoL6kblWxG0jUQrzdID0=";
+  mypy-boto3-elbv2 =
+    buildMypyBoto3Package "elbv2" "1.35.18"
+      "sha256-BlHZi/WM1rKK0QWbAYfHmdpZmgm8ZpWZPZQ4gz0k4oY=";
 
-  mypy-boto3-elb = buildMypyBoto3Package "elb" "1.34.0" "sha256-5Eh5D872pVDd7Q+DDh3zpGMVgS8fUJsV+63H1fet73s=";
+  mypy-boto3-emr =
+    buildMypyBoto3Package "emr" "1.35.18"
+      "sha256-yXm2k6pDyJ1N93q6ltz6jvQy17AKpKsKhVFMpS1oGaI=";
 
-  mypy-boto3-elbv2 = buildMypyBoto3Package "elbv2" "1.34.63" "sha256-snXMLMHLEpJjfX1GJp6FfYgIjkS8vkbf/hESBdhxIfk=";
+  mypy-boto3-emr-containers =
+    buildMypyBoto3Package "emr-containers" "1.35.4"
+      "sha256-ARmcy8oINHgph9PqNtQYyBVEVshBuSHDeju2ynNSqQ8=";
 
-  mypy-boto3-emr = buildMypyBoto3Package "emr" "1.34.75" "sha256-Irxd4i5b1bbZuWBhXfLOuvoS1X5SoZH8GsgbQyy3UrY=";
+  mypy-boto3-emr-serverless =
+    buildMypyBoto3Package "emr-serverless" "1.35.25"
+      "sha256-9aQOr3oGVejk34AInlyoS9//4DBIR0JBbHGumvanOtw=";
 
-  mypy-boto3-emr-containers = buildMypyBoto3Package "emr-containers" "1.34.78" "sha256-GvoXMnpqahn3DIZFAAye0DGwIkAQhYaXektYC6hN3Ng=";
+  mypy-boto3-entityresolution =
+    buildMypyBoto3Package "entityresolution" "1.35.3"
+      "sha256-NpMzNHyIMc850GHCLi3ENku96S8QvR/SAShsLqhwrks=";
 
-  mypy-boto3-emr-serverless = buildMypyBoto3Package "emr-serverless" "1.34.0" "sha256-YgccYi2+XhKiPGCMimrCooYPRV+iRuA1h120UdqJKUc=";
+  mypy-boto3-es =
+    buildMypyBoto3Package "es" "1.35.0"
+      "sha256-ad5PQgRxRqEQ4QOjM0wPGe/4JXPNqlB5exRHacx7YKw=";
 
-  mypy-boto3-entityresolution = buildMypyBoto3Package "entityresolution" "1.34.0" "sha256-qfRZtRaxysW+Ev16gnj48CePZzLBWrXmrq3tEGtfNbM=";
+  mypy-boto3-events =
+    buildMypyBoto3Package "events" "1.35.0"
+      "sha256-IXJGXd/J+EwN1FcHofPq9AatYysD6FRrny39MzqF6yY=";
 
-  mypy-boto3-es = buildMypyBoto3Package "es" "1.34.36" "sha256-uVLB1fjZRhlqJ/isKl5TDORmIN4ffKKqzyGZcEffa5g=";
+  mypy-boto3-evidently =
+    buildMypyBoto3Package "evidently" "1.35.0"
+      "sha256-C7hTVrCUdBpYj0y5cLGKnruJcgaHFMkeY6R0fZ/Zp78=";
 
-  mypy-boto3-events = buildMypyBoto3Package "events" "1.34.17" "sha256-L/78a975mFWw5xBH4et01j4Ba9/aGb5NUK7d/bPtsJU=";
+  mypy-boto3-finspace =
+    buildMypyBoto3Package "finspace" "1.35.12"
+      "sha256-zO4rFI2pzAFhHHyRPYeeV0eC4daRJ57GeAnAqrOyQAQ=";
 
-  mypy-boto3-evidently = buildMypyBoto3Package "evidently" "1.34.0" "sha256-MkBB5iTYJYg2cWFYHR3Qu7TcsDglLPEw0MnoHqij6+A=";
+  mypy-boto3-finspace-data =
+    buildMypyBoto3Package "finspace-data" "1.35.0"
+      "sha256-KQqb3NdsN8SloK7kIbJoy5I3zhO5CUr9rB8ZqtVLaDc=";
 
-  mypy-boto3-finspace = buildMypyBoto3Package "finspace" "1.34.71" "sha256-bgPwDXqu73DjQCADmjTig6kLNOWvQ39flwhyYAbTai4=";
+  mypy-boto3-firehose =
+    buildMypyBoto3Package "firehose" "1.35.0"
+      "sha256-7ibqWrvc1mwCDzsm/tqha/2Y2EbfxTpsf7omIZg/EbM=";
 
-  mypy-boto3-finspace-data = buildMypyBoto3Package "finspace-data" "1.34.0" "sha256-8mND5BbdKY5srFwdpxSyfCUTIP4fa9hztP4daUJOB8k=";
+  mypy-boto3-fis =
+    buildMypyBoto3Package "fis" "1.35.12"
+      "sha256-rm0PB0oie7q+8pl+efohmHe8StLZVvSWYgLIajxd3Fo=";
 
-  mypy-boto3-firehose = buildMypyBoto3Package "firehose" "1.34.69" "sha256-GCMH/XA9ETSuo39OnlvyhfHDKylsTeLO1R1+7tl2S/E=";
+  mypy-boto3-fms =
+    buildMypyBoto3Package "fms" "1.35.0"
+      "sha256-Y+FKtBDxQ2SyN8uHLkt7KKylo8uOa6mCHUwf98TsBRg=";
 
-  mypy-boto3-fis = buildMypyBoto3Package "fis" "1.34.63" "sha256-TJnzgQGDcybpVqg+p7Tuvw/RoY79cQPPChyHWlMxhiY=";
+  mypy-boto3-forecast =
+    buildMypyBoto3Package "forecast" "1.35.0"
+      "sha256-s+4P39vLxQiAoVpxPKLJd4BgP9/OOFUrnt61EnMXUMs=";
 
-  mypy-boto3-fms = buildMypyBoto3Package "fms" "1.34.0" "sha256-tzaSecIXzkC+Zr5MGpU7GaoiGHGsywEglZ8+Ja0XDDo=";
+  mypy-boto3-forecastquery =
+    buildMypyBoto3Package "forecastquery" "1.35.0"
+      "sha256-ityNtprzMtWbAsRARL+c7q1czj+E1Pxv+6bJdci6Fcg=";
 
-  mypy-boto3-forecast = buildMypyBoto3Package "forecast" "1.34.0" "sha256-DuNZe9Q7HuEeJYuBqo7JRBTJgclyUpU9fJ62SCGYpLQ=";
+  mypy-boto3-frauddetector =
+    buildMypyBoto3Package "frauddetector" "1.35.0"
+      "sha256-dUbtx84rCJ5zRHxmdpGFAychNH/F98eviwdwqmslPLk=";
 
-  mypy-boto3-forecastquery = buildMypyBoto3Package "forecastquery" "1.34.0" "sha256-IEKWQbwRDHiT/n5dSXXtLDqRVK12+EiSg9J+dGXfqx8=";
+  mypy-boto3-fsx =
+    buildMypyBoto3Package "fsx" "1.35.27"
+      "sha256-rPVWNk0+Xt9kMAl8xD0xM/EIbiYPSUL8Yc8b+2RcD4o=";
 
-  mypy-boto3-frauddetector = buildMypyBoto3Package "frauddetector" "1.34.0" "sha256-EjiFEFpLKN0NmrNY43CFhQZHN+COTwRXx513X6X7vlE=";
+  mypy-boto3-gamelift =
+    buildMypyBoto3Package "gamelift" "1.35.13"
+      "sha256-Xd0jrg/w4CPn5mDgHTaahyRAu5RZxdMcpci0cx7/1sQ=";
 
-  mypy-boto3-fsx = buildMypyBoto3Package "fsx" "1.34.55" "sha256-XsIX4C8sF1m8jGbwrDWGoV7onHA9tRlI5Dki43bf9FM=";
+  mypy-boto3-glacier =
+    buildMypyBoto3Package "glacier" "1.35.0"
+      "sha256-WpSdaAf/s2jPoGG4cLjeNKZz6kUSApTMVq4nnB1nkfI=";
 
-  mypy-boto3-gamelift = buildMypyBoto3Package "gamelift" "1.34.1" "sha256-EUdVrcriXRUqjcyKzyuoIdDTxMSAdyKcnbJ96s/Y8Uc=";
+  mypy-boto3-globalaccelerator =
+    buildMypyBoto3Package "globalaccelerator" "1.35.0"
+      "sha256-RJEZBr3yU/lGEainrpidLsdYBvVOPMq3cIaIpsTAziQ=";
 
-  mypy-boto3-gamesparks = buildMypyBoto3Package "gamesparks" "1.28.36" "sha256-6lQXNJ55FYvkFA14rgJGhRMjBHA3YrOybnsKNecX7So=";
+  mypy-boto3-glue =
+    buildMypyBoto3Package "glue" "1.35.25"
+      "sha256-hWpxnfHPaCUlxFg/3vNhluQnc2IHYoNVq9owH3D2eME=";
 
-  mypy-boto3-glacier = buildMypyBoto3Package "glacier" "1.34.0" "sha256-j8LUD8EjjRL1av7UEXBqNPEARaSFgstaioGJtbel4oM=";
+  mypy-boto3-grafana =
+    buildMypyBoto3Package "grafana" "1.35.0"
+      "sha256-AxH6/D5K4m2nmZor6T6bb7/PbimJSI+0DxyLOXUexnI=";
 
-  mypy-boto3-globalaccelerator = buildMypyBoto3Package "globalaccelerator" "1.34.70" "sha256-7Su+rgV6KD9I4j630Qybufwn39rp/8tYQ2ldEe2Untc=";
+  mypy-boto3-greengrass =
+    buildMypyBoto3Package "greengrass" "1.35.0"
+      "sha256-XtMbgVoGmFTTFJTSQT0NRR7shxW81tmmn6JMa98k+kM=";
 
-  mypy-boto3-glue = buildMypyBoto3Package "glue" "1.34.76" "sha256-bo88vETpsKBVDQ7n0a75iJrIyslBUAe0xjcfJp/y9IE=";
+  mypy-boto3-greengrassv2 =
+    buildMypyBoto3Package "greengrassv2" "1.35.0"
+      "sha256-dUtwgf8DDz3ShH5aHW8WdII8VOSDDK+g1q4ObppA2W4=";
 
-  mypy-boto3-grafana = buildMypyBoto3Package "grafana" "1.34.58" "sha256-dr+fCDf0DcWGxPPLMnzqrOCRMfoLhznyv6n679fFU/0=";
+  mypy-boto3-groundstation =
+    buildMypyBoto3Package "groundstation" "1.35.0"
+      "sha256-U0sYInE/1XsjwQCxmcYLVvmEQf4R6drtdSqTr0b+3OM=";
 
-  mypy-boto3-greengrass = buildMypyBoto3Package "greengrass" "1.34.0" "sha256-ZU/xVWGlMngX0JiAhy9NEFDoXS4fsZvmLAkWqv2pocQ=";
+  mypy-boto3-guardduty =
+    buildMypyBoto3Package "guardduty" "1.35.22"
+      "sha256-+Ro4QM8DwrDlbroFb6YV6fZGYPieHB0B5+EgdNrnIzQ=";
 
-  mypy-boto3-greengrassv2 = buildMypyBoto3Package "greengrassv2" "1.34.0" "sha256-O3g6JHvnfvgKL0ax9R6IWgxdEoALaycfsBAhvWdERH0=";
+  mypy-boto3-health =
+    buildMypyBoto3Package "health" "1.35.0"
+      "sha256-k0c7P8ozVzHSyMAGLg5arVjr+bABfZFwFU4EBQZufUA=";
 
-  mypy-boto3-groundstation = buildMypyBoto3Package "groundstation" "1.34.77" "sha256-g0pN7BeRZMZqyJVjABaRSE77ZMZxDRcLv+/JHjJ/cQc=";
+  mypy-boto3-healthlake =
+    buildMypyBoto3Package "healthlake" "1.35.0"
+      "sha256-Df0AUKZh6S4OdqGBUtEC4cnic9E06Frj0McQH+yQwFc=";
 
-  mypy-boto3-guardduty = buildMypyBoto3Package "guardduty" "1.34.73" "sha256-DasHgBMa4/hnh/otzh0Zz4nalmESIS2/HkaY4vTltRs=";
+  mypy-boto3-iam =
+    buildMypyBoto3Package "iam" "1.35.0"
+      "sha256-s3mgHDyhejZ8t6RgkF+c4at4MKmruMilbyil/xCHZX8=";
 
-  mypy-boto3-health = buildMypyBoto3Package "health" "1.34.0" "sha256-st3ygy9yZbAbh1ZWnT8XDZTBz1qWhRWXCEfr5ILQHpo=";
+  mypy-boto3-identitystore =
+    buildMypyBoto3Package "identitystore" "1.35.0"
+      "sha256-wHm7wHBhEX3c29MwZtbZPXH1su5MsAzLmj5h8V3/3V0=";
 
-  mypy-boto3-healthlake = buildMypyBoto3Package "healthlake" "1.34.43" "sha256-Xci7f0/o60v1TAazFC34GjpzOBQlD+SvAMCF4xM3ymI=";
+  mypy-boto3-imagebuilder =
+    buildMypyBoto3Package "imagebuilder" "1.35.0"
+      "sha256-yL54l1/+3Lz4C0Um47rsybbYujc1nde2jirX/DUeSIY=";
 
-  mypy-boto3-honeycode = buildMypyBoto3Package "honeycode" "1.34.0" "sha256-HNp/STFuMLoO4qyL0iaYeiPpnMV3uzNBNFUDgzrHt9s=";
+  mypy-boto3-importexport =
+    buildMypyBoto3Package "importexport" "1.35.0"
+      "sha256-RtMsMIw5YqPiO8GNKa4VPPb+oaA/IdQgsZVNK9kpSuc=";
 
-  mypy-boto3-iam = buildMypyBoto3Package "iam" "1.34.83" "sha256-cmExVhZ1fr91Cd8OmwkdWULkcOtRxLI8ZioGhzqajso=";
+  mypy-boto3-inspector =
+    buildMypyBoto3Package "inspector" "1.35.0"
+      "sha256-4QXRWahJ0y9Svi/WRIiRFfo36tkKM25bXCTMrZjE41g=";
 
-  mypy-boto3-identitystore = buildMypyBoto3Package "identitystore" "1.34.0" "sha256-OdJsMjraTe4qhpblBOuwr++4QfiMXtaaMHDAEOTBII4=";
+  mypy-boto3-inspector2 =
+    buildMypyBoto3Package "inspector2" "1.35.4"
+      "sha256-NslpiIBwxTvcEe/Lh8wM2PJE31JNmu4qyCZMbB+9noE=";
 
-  mypy-boto3-imagebuilder = buildMypyBoto3Package "imagebuilder" "1.34.57" "sha256-r11JVMvO/IL1d2+fGZoc4nt1JnyUXir38a8i7IsZmLQ=";
+  mypy-boto3-internetmonitor =
+    buildMypyBoto3Package "internetmonitor" "1.35.8"
+      "sha256-BWNccaLrGmm5liiAOHCeFqSlkDk8wnj+/ipExaVZVis=";
 
-  mypy-boto3-importexport = buildMypyBoto3Package "importexport" "1.34.0" "sha256-GnIzCaCuRLPdvaAmmID62uY/te1Lx5DFGin2zJuDdAM=";
+  mypy-boto3-iot =
+    buildMypyBoto3Package "iot" "1.35.20"
+      "sha256-3D1VjhsSVOedLhn7W6Huch4aowjlJgCuotUyln71n6k=";
 
-  mypy-boto3-inspector = buildMypyBoto3Package "inspector" "1.34.0" "sha256-85aAE1+azKZ9sFYxLOpVR4SkqrnfFQ1gXgGpzOBK1PE=";
+  mypy-boto3-iot-data =
+    buildMypyBoto3Package "iot-data" "1.35.0"
+      "sha256-6Dy72Ui8OI7ROdKCBEKvHTGco33OcI30QpXErPz7MPg=";
 
-  mypy-boto3-inspector2 = buildMypyBoto3Package "inspector2" "1.34.29" "sha256-ZMdNVgKXQnEHyK4tV/XegvFX7xdk5A1AiSfpTKWCtcY=";
+  mypy-boto3-iot-jobs-data =
+    buildMypyBoto3Package "iot-jobs-data" "1.35.0"
+      "sha256-pHVZNE6mAr/IJrM/jY8fiEt1o8hQOJ1aw+oKuKijpyU=";
 
-  mypy-boto3-internetmonitor = buildMypyBoto3Package "internetmonitor" "1.34.74" "sha256-VFIeJqQHHvbB+mLyzxHpZUvgGS5dJJen4AAJAMJTDqE=";
+  mypy-boto3-iot1click-devices =
+    buildMypyBoto3Package "iot1click-devices" "1.35.0"
+      "sha256-I6bQTR11cWwa9ifrBsU7biYN8T7AyNDg3DvHQ0tyzFI=";
 
-  mypy-boto3-iot = buildMypyBoto3Package "iot" "1.34.52" "sha256-YWGotOPKljY4B0JL1I+axk4MJZIk84rVxoZu9tzBGss=";
+  mypy-boto3-iot1click-projects =
+    buildMypyBoto3Package "iot1click-projects" "1.35.0"
+      "sha256-eVH+EYKSz5rZcetDp378EyswOgPqhmOcIuApwiOlOZw=";
 
-  mypy-boto3-iot-data = buildMypyBoto3Package "iot-data" "1.34.0" "sha256-N6UoHopsT3FM7bU01eWuqRSyyyaLBekkM+hsOU1byIM=";
+  mypy-boto3-iotanalytics =
+    buildMypyBoto3Package "iotanalytics" "1.35.0"
+      "sha256-jVb/qDhi0onfEMXDnJHodqKrEgXqPrUTseiGIUwCPWk=";
 
-  mypy-boto3-iot-jobs-data = buildMypyBoto3Package "iot-jobs-data" "1.34.0" "sha256-ceqk+Gt+IcIVuLp/LMsrjnUXrPt+SY+mI8G3hKdE7TY=";
+  mypy-boto3-iotdeviceadvisor =
+    buildMypyBoto3Package "iotdeviceadvisor" "1.35.0"
+      "sha256-mo5rWGiyoaWRsaCZsGVmnHalVpV4WlcM+SKEXm0y6eY=";
 
-  mypy-boto3-iot-roborunner = buildMypyBoto3Package "iot-roborunner" "1.34.0" "sha256-TfhJHtE2zlEr80SGbxAZfK2+M/ad596fdwex+4GhBf8=";
+  mypy-boto3-iotevents =
+    buildMypyBoto3Package "iotevents" "1.35.0"
+      "sha256-NApPJ95ciwJF400DGuTHm/xeeorYcyc5iXejPwJ9nUY=";
 
-  mypy-boto3-iot1click-devices = buildMypyBoto3Package "iot1click-devices" "1.34.0" "sha256-Zpv/kw541LoC3Z58eKGe7sK5qioWMGswQS0O+jvNZgY=";
+  mypy-boto3-iotevents-data =
+    buildMypyBoto3Package "iotevents-data" "1.35.0"
+      "sha256-haDAVJsgAUYlFIC2Gv5w6qDUfMtbH2eWmYW3wEURH/E=";
 
-  mypy-boto3-iot1click-projects = buildMypyBoto3Package "iot1click-projects" "1.34.0" "sha256-QZ06B5UQSuDPUaXqZYPjawSEjIQjBwP7d5/obpvNivI=";
+  mypy-boto3-iotfleethub =
+    buildMypyBoto3Package "iotfleethub" "1.35.0"
+      "sha256-Hse02blZttIxqJovJ3h6yCEi+jN3e+pfznIXjBAid1k=";
 
-  mypy-boto3-iotanalytics = buildMypyBoto3Package "iotanalytics" "1.34.0" "sha256-aDlptQYJQ71WWYsgv+bFRoD2fmeGgiUl1Fv/oOAQJEM=";
+  mypy-boto3-iotfleetwise =
+    buildMypyBoto3Package "iotfleetwise" "1.35.0"
+      "sha256-VQCFJX2wZYKWey8yxEBoAK29uDxb/xn5+EuZH739DV8=";
 
-  mypy-boto3-iotdeviceadvisor = buildMypyBoto3Package "iotdeviceadvisor" "1.34.0" "sha256-DBI4dJXxprfHO3ipLIVb5Ii5NK7qWJRuWjzVfHTnqO4=";
+  mypy-boto3-iotsecuretunneling =
+    buildMypyBoto3Package "iotsecuretunneling" "1.35.0"
+      "sha256-A1sYvlnpbfKZyxZvFCzBfD/Jbzd1PwlQwgj+fvcybGU=";
 
-  mypy-boto3-iotevents = buildMypyBoto3Package "iotevents" "1.34.47" "sha256-ppsjLI2yY9+6SmAh1mfVBuZz+gHNNZS6eKDr3fHHmJM=";
+  mypy-boto3-iotsitewise =
+    buildMypyBoto3Package "iotsitewise" "1.35.6"
+      "sha256-WICduOodvGT0EP7Txjbe49f0+ZhtVmzkIg6XJV4qHJU=";
 
-  mypy-boto3-iotevents-data = buildMypyBoto3Package "iotevents-data" "1.34.0" "sha256-K7yAnxjpJfSh6bWnmcdySkCQhhVFt42zU6REiy3zKrk=";
+  mypy-boto3-iotthingsgraph =
+    buildMypyBoto3Package "iotthingsgraph" "1.35.0"
+      "sha256-no67GUF7Z4TcqbWUYG18bHRP+FEccN9P/drOP5HQx/g=";
 
-  mypy-boto3-iotfleethub = buildMypyBoto3Package "iotfleethub" "1.34.0" "sha256-wNm6OJUgAhvrXhtGaty19Tyva+nvonDOHsj9RT37FbY=";
+  mypy-boto3-iottwinmaker =
+    buildMypyBoto3Package "iottwinmaker" "1.35.0"
+      "sha256-6w4Q6vynF47uBeTNBqus4hM9Fy5Bs3C0Qh/Ig3sPBhw=";
 
-  mypy-boto3-iotfleetwise = buildMypyBoto3Package "iotfleetwise" "1.34.20" "sha256-Pe5Pw19H2y6koJxajW46oazxoFL5UHSOQHgXnhfIQJk=";
+  mypy-boto3-iotwireless =
+    buildMypyBoto3Package "iotwireless" "1.35.0"
+      "sha256-e4a8Na1spmmaUVAiAWPvn7DqzYHzEL4EatCewrRxJKE=";
 
-  mypy-boto3-iotsecuretunneling = buildMypyBoto3Package "iotsecuretunneling" "1.34.0" "sha256-E8658X3yWpIcRKDTtnacjuAAWqr/qnmYXFRJ/7uyKm8=";
+  mypy-boto3-ivs =
+    buildMypyBoto3Package "ivs" "1.35.19"
+      "sha256-CXQnPKSn8oMyj2V2+iTjcqPEGykM2mOrRDVTkYEX/Jo=";
 
-  mypy-boto3-iotsitewise = buildMypyBoto3Package "iotsitewise" "1.34.0" "sha256-/WDIf5WRUYbuhkzjXrX1t3BvHd7ZXBem2o8TysFWYQw=";
+  mypy-boto3-ivs-realtime =
+    buildMypyBoto3Package "ivs-realtime" "1.35.15"
+      "sha256-pO8W60U+c56/1F7LECM4AcOMIW7sHifSd9Ov+HJ4TpQ=";
 
-  mypy-boto3-iotthingsgraph = buildMypyBoto3Package "iotthingsgraph" "1.34.0" "sha256-8D0jqOuusz6SLCr+eKAZpTr9dvdonIc7+UYyXDzVzYQ=";
+  mypy-boto3-ivschat =
+    buildMypyBoto3Package "ivschat" "1.35.19"
+      "sha256-Eb2polqqaboA93F86ZpJ9IzZRY5FRRceq+wLp/V2/2U=";
 
-  mypy-boto3-iottwinmaker = buildMypyBoto3Package "iottwinmaker" "1.34.0" "sha256-K5LEh8wdXvftxGstThSBN73K+1FUVlE40JxvjWv6GMA=";
+  mypy-boto3-kafka =
+    buildMypyBoto3Package "kafka" "1.35.15"
+      "sha256-mY1AapHaDKxJTZyP44wgZhRfJEGJubYMsV+PhKgFxIM=";
 
-  mypy-boto3-iotwireless = buildMypyBoto3Package "iotwireless" "1.34.74" "sha256-57ZO7LlQ9/itiynqSjXu7SJrNLNaFo5WCJBqSXEYeLs=";
+  mypy-boto3-kafkaconnect =
+    buildMypyBoto3Package "kafkaconnect" "1.35.0"
+      "sha256-xHARaL3zzxY6jy5VyQIrZLXqwvfprktif4pcSk+7xzY=";
 
-  mypy-boto3-ivs = buildMypyBoto3Package "ivs" "1.34.78" "sha256-ddugPjG15nmI2WsWp27TEQj8jwBLXaogznFwf1UP1nE=";
+  mypy-boto3-kendra =
+    buildMypyBoto3Package "kendra" "1.35.0"
+      "sha256-fnpRggcnA4mhk1vU7I0x+nn6wvx9PQ5Gi/WckSgfZ7c=";
 
-  mypy-boto3-ivs-realtime = buildMypyBoto3Package "ivs-realtime" "1.34.62" "sha256-/8P/S2xdYub8/tC0yaUbUfcxfDKpDnfAvmqneXFcAOo=";
+  mypy-boto3-kendra-ranking =
+    buildMypyBoto3Package "kendra-ranking" "1.35.0"
+      "sha256-lBZ9MJQsuM0vRyrDcelDXTIhP9sex6CjnRjYY3qjIdE=";
 
-  mypy-boto3-ivschat = buildMypyBoto3Package "ivschat" "1.34.76" "sha256-y4CqrYMo6BQAhRr3adH3Ndb2q/DkOjef8Q89Vfz4QP4=";
+  mypy-boto3-keyspaces =
+    buildMypyBoto3Package "keyspaces" "1.35.0"
+      "sha256-ZtixXownfAnqUfNY53sVGbDZTQ2Q+Hhzgs1Txuyn3gM=";
 
-  mypy-boto3-kafka = buildMypyBoto3Package "kafka" "1.34.61" "sha256-nXd3Qi8IZsQN595vnsMLSn6pfZU70yPb6Ebhv4SijfE=";
+  mypy-boto3-kinesis =
+    buildMypyBoto3Package "kinesis" "1.35.26"
+      "sha256-hl8ml/Yt/H0EBSQ2qSW98NOakxfN6MaYGmrEbmWcHH8=";
 
-  mypy-boto3-kafkaconnect = buildMypyBoto3Package "kafkaconnect" "1.34.50" "sha256-frPPAQeFyO92uMqqzBcSC3MVK4V4hbdO9tx4awAKAUU=";
+  mypy-boto3-kinesis-video-archived-media =
+    buildMypyBoto3Package "kinesis-video-archived-media" "1.35.0"
+      "sha256-NJtU+ccNQoz85Q9TEs2TlmLtbMGo1U4Poan1d3Vpcxk=";
 
-  mypy-boto3-kendra = buildMypyBoto3Package "kendra" "1.34.69" "sha256-OKUSsCfv2X9ad5XUSwm0KRwW++qb+AVtvCOurlRM/bo=";
+  mypy-boto3-kinesis-video-media =
+    buildMypyBoto3Package "kinesis-video-media" "1.35.0"
+      "sha256-bQ0w9UuocZjfxjdcwms1vaNnCoSM2Xis8bBNzuROiXU=";
 
-  mypy-boto3-kendra-ranking = buildMypyBoto3Package "kendra-ranking" "1.34.0" "sha256-hbemz5ECtfP3oi645lZT7CCx31yg8MNqbAD32Am6l1U=";
+  mypy-boto3-kinesis-video-signaling =
+    buildMypyBoto3Package "kinesis-video-signaling" "1.35.0"
+      "sha256-5dPgAwcPymYdrKT+YhyRkFOhfDj71xfA/P50KdurMXI=";
 
-  mypy-boto3-keyspaces = buildMypyBoto3Package "keyspaces" "1.34.45" "sha256-Ucmttfi8oQIPpdfr3KPvrX1Tj3zbYxHGoYH0JNYX5UM=";
+  mypy-boto3-kinesis-video-webrtc-storage =
+    buildMypyBoto3Package "kinesis-video-webrtc-storage" "1.35.0"
+      "sha256-8DtIRagCl2UAfHGZSxX8BuHdrWHVSHSJ+Wftr3mA3x4=";
 
-  mypy-boto3-kinesis = buildMypyBoto3Package "kinesis" "1.34.0" "sha256-9ATnW63Vl36fCXQbdpuIiIVL3UEcYxNEaGq4ie/ph0E=";
+  mypy-boto3-kinesisanalytics =
+    buildMypyBoto3Package "kinesisanalytics" "1.35.0"
+      "sha256-aKdkj9FTE3yDnyWySWx1xXAzzPypaGZ2IYg+6AwHHKQ=";
 
-  mypy-boto3-kinesis-video-archived-media = buildMypyBoto3Package "kinesis-video-archived-media" "1.34.10" "sha256-B66x9erx5SlnDmTBpf4izGckF4GysChy+VRXy9tWSf4=";
+  mypy-boto3-kinesisanalyticsv2 =
+    buildMypyBoto3Package "kinesisanalyticsv2" "1.35.13"
+      "sha256-UoRFrbwA6QdFsO2z7R8If5/0Jf6ebMTJ91jqEh/Ys38=";
 
-  mypy-boto3-kinesis-video-media = buildMypyBoto3Package "kinesis-video-media" "1.34.0" "sha256-YgkG14UzymthRLg4cga80ZDK9cxZzFBTISmnfTPt8nM=";
+  mypy-boto3-kinesisvideo =
+    buildMypyBoto3Package "kinesisvideo" "1.35.0"
+      "sha256-pQB1whgSUK17rS16iaiucSiKMKJPP/AocWH+YlbyX6o=";
 
-  mypy-boto3-kinesis-video-signaling = buildMypyBoto3Package "kinesis-video-signaling" "1.34.0" "sha256-aNFuruM0kQNhp+wEJr+Bo9MzLieG6a8xzbrHGAovgw8=";
+  mypy-boto3-kms =
+    buildMypyBoto3Package "kms" "1.35.0"
+      "sha256-oGpeVJ4uuNUAIsZwc2k0QKLtzLSHC+ULM1f3Pcm+ZPk=";
 
-  mypy-boto3-kinesis-video-webrtc-storage = buildMypyBoto3Package "kinesis-video-webrtc-storage" "1.34.0" "sha256-Oi6r/AxePB0znUPg3fb22qZLDS4Cola5Vvs38Railnc=";
+  mypy-boto3-lakeformation =
+    buildMypyBoto3Package "lakeformation" "1.35.0"
+      "sha256-d6dz+lqK8RJ4kwDvK8WYf5U3N9oic5s+4KJgW08/3oU=";
 
-  mypy-boto3-kinesisanalytics = buildMypyBoto3Package "kinesisanalytics" "1.34.0" "sha256-eEoSmwMTa/hsbKbuKuzAZv4jHljGKq3b5Rw7K2Pgc50=";
+  mypy-boto3-lambda =
+    buildMypyBoto3Package "lambda" "1.35.23"
+      "sha256-I70ebuqU7cWYu+rAWqaUbNNiXdq9JZL/dm8++OiJxao=";
 
-  mypy-boto3-kinesisanalyticsv2 = buildMypyBoto3Package "kinesisanalyticsv2" "1.34.64" "sha256-7sJyrWtBcbrWlCjR7pLdBLgW7sXcRazDPBW+OGwh4Xg=";
+  mypy-boto3-lex-models =
+    buildMypyBoto3Package "lex-models" "1.35.0"
+      "sha256-VkE2UkY88ZksHpwTVGgjA80mTzO50CI1QPdh3Ug/RGc=";
 
-  mypy-boto3-kinesisvideo = buildMypyBoto3Package "kinesisvideo" "1.34.48" "sha256-uYSkwOuYKF3B+sj5IWbDL789Xue2yNY9g14j/2b6k6w=";
+  mypy-boto3-lex-runtime =
+    buildMypyBoto3Package "lex-runtime" "1.35.0"
+      "sha256-oZo6Drdgh8LaT1aheCZTmOLfa8aacXbwtkU33pqX2Hw=";
 
-  mypy-boto3-kms = buildMypyBoto3Package "kms" "1.34.65" "sha256-jot13mfxhgvayvQkMxnDvjdwkpGLkwsC2eeAQpMW0II=";
+  mypy-boto3-lexv2-models =
+    buildMypyBoto3Package "lexv2-models" "1.35.17"
+      "sha256-Z7WxCRl7U+nEEeCHgQavY35pvYrS7vDOpf9KPzbMDSs=";
 
-  mypy-boto3-lakeformation = buildMypyBoto3Package "lakeformation" "1.34.7" "sha256-/IPOF44ohg59XX+lmMbx8WsaHFpBaMH440Wm5jgrKD4=";
+  mypy-boto3-lexv2-runtime =
+    buildMypyBoto3Package "lexv2-runtime" "1.35.0"
+      "sha256-DXz53R1jyNNfcHzADr8U/jnhBrhlhrNA+C6Y8CD5dcU=";
 
-  mypy-boto3-lambda = buildMypyBoto3Package "lambda" "1.34.77" "sha256-e4HSpWBPtZLpL+CyhOzSWd4HFwM2CjO3HJtU30bYHJw=";
+  mypy-boto3-license-manager =
+    buildMypyBoto3Package "license-manager" "1.35.0"
+      "sha256-NVBQJN2YIg/2FNG9oViLw7pWhcECaYCZdOU9tWM9z7Q=";
 
-  mypy-boto3-lex-models = buildMypyBoto3Package "lex-models" "1.34.0" "sha256-LkD3CCjJYGwlSYRP0meJUCEdVSGGdSRrL9uBtimX4GU=";
+  mypy-boto3-license-manager-linux-subscriptions =
+    buildMypyBoto3Package "license-manager-linux-subscriptions" "1.35.0"
+      "sha256-xrNvzGZkTDmWtEJwfoZmoe0vqHWmltV9sV3OxLy5JeM=";
 
-  mypy-boto3-lex-runtime = buildMypyBoto3Package "lex-runtime" "1.34.0" "sha256-oFUSsfT7RXHRAVUUk014lqPylPa+TZuyNuvHRixIxt8=";
+  mypy-boto3-license-manager-user-subscriptions =
+    buildMypyBoto3Package "license-manager-user-subscriptions" "1.35.0"
+      "sha256-1xu8CxA0xJeHPjAkAr6+csVax9Kzuzc0DdZkTu7iVWI=";
 
-  mypy-boto3-lexv2-models = buildMypyBoto3Package "lexv2-models" "1.34.53" "sha256-xeuLY+rMoqtJc75pf2A/DYcsG86qqsIDO225QIwjlDw=";
+  mypy-boto3-lightsail =
+    buildMypyBoto3Package "lightsail" "1.35.0"
+      "sha256-+5GMpqC4EY+1atRrP0D+KweA7mvHSwZ9kKvrVDDP+HU=";
 
-  mypy-boto3-lexv2-runtime = buildMypyBoto3Package "lexv2-runtime" "1.34.0" "sha256-V1OkUcwFYp8TVS2ASFjARJUrIKAx/9zcfQbQMngU5Uc=";
+  mypy-boto3-location =
+    buildMypyBoto3Package "location" "1.35.0"
+      "sha256-6Vs5eRibHCZvDDIcIEThPa6T1OmfJXjLg4GAZlworsM=";
 
-  mypy-boto3-license-manager = buildMypyBoto3Package "license-manager" "1.34.0" "sha256-93G6q8UIQ/6VtreLOSTQm99tFvsW917t0UgfKkp0kqs=";
+  mypy-boto3-logs =
+    buildMypyBoto3Package "logs" "1.35.12"
+      "sha256-H+B1dxaGAAwAqWU5/WKKYz1HT9wKmvjVEg57kGvTDh0=";
 
-  mypy-boto3-license-manager-linux-subscriptions = buildMypyBoto3Package "license-manager-linux-subscriptions" "1.34.0" "sha256-yHvpZZn49SjTn/DLjSRhzGc2vg0IVv5GCeOFnhtScKA=";
+  mypy-boto3-lookoutequipment =
+    buildMypyBoto3Package "lookoutequipment" "1.35.0"
+      "sha256-BLE7wcDwJIbuDHbK6x5ala2fzMy+Di/1pSBfUoYnLy4=";
 
-  mypy-boto3-license-manager-user-subscriptions = buildMypyBoto3Package "license-manager-user-subscriptions" "1.34.0" "sha256-PR+u+i5zSHFTN6+GuOcWBcON1E2SNABbPavByXz3unE=";
+  mypy-boto3-lookoutmetrics =
+    buildMypyBoto3Package "lookoutmetrics" "1.35.0"
+      "sha256-q1jBCSiyznyNPEa7ZQwsCQRQ1J8Wvj/RHugaT6ZDBeY=";
 
-  mypy-boto3-lightsail = buildMypyBoto3Package "lightsail" "1.34.75" "sha256-ICBUixptVS5sWBHgYms9GgrY2XQblTZkq3Qr614qZMc=";
+  mypy-boto3-lookoutvision =
+    buildMypyBoto3Package "lookoutvision" "1.35.0"
+      "sha256-0Tz/X8RIuLvbDRXmZ+g0aEOcO7Qyg7ZKDLW1bN4yfJA=";
 
-  mypy-boto3-location = buildMypyBoto3Package "location" "1.34.18" "sha256-rsjIGenXgdEdgxvilA3IKJkYkpDDQNDfjDQRoj/mxSU=";
+  mypy-boto3-m2 =
+    buildMypyBoto3Package "m2" "1.35.0"
+      "sha256-rn9xCU8qtkR/zRzi5MM9dNInJOa30VrYRj2hBLN9Zao=";
 
-  mypy-boto3-logs = buildMypyBoto3Package "logs" "1.34.66" "sha256-z1+sSAHdkvBQB/sbRET/mCWFRNHyHmTpIo40GIBG+EE=";
+  mypy-boto3-machinelearning =
+    buildMypyBoto3Package "machinelearning" "1.35.0"
+      "sha256-TNj5R4DxrKdlOa5u7O9gNwkzMkLPP1mcxYyu3bbONgY=";
 
-  mypy-boto3-lookoutequipment = buildMypyBoto3Package "lookoutequipment" "1.34.47" "sha256-M7NaoRHxlH5/zkuMnOlrco2BCPXErv/N7TAVwv2oZuA=";
+  mypy-boto3-macie2 =
+    buildMypyBoto3Package "macie2" "1.35.0"
+      "sha256-0L8kIa+KYf4hQW7ErpCMSEcgkHmqS95vt0YaCFLk1BU=";
 
-  mypy-boto3-lookoutmetrics = buildMypyBoto3Package "lookoutmetrics" "1.34.0" "sha256-2SRBUd8fZ7i2GbDgBWJcYS0Fbr/U65UmrLbHx57IZ5A=";
+  mypy-boto3-managedblockchain =
+    buildMypyBoto3Package "managedblockchain" "1.35.0"
+      "sha256-q1fKZi0acgBXZ1Rvugvl0iwdapObzDsZnhRlTS1bShc=";
 
-  mypy-boto3-lookoutvision = buildMypyBoto3Package "lookoutvision" "1.34.0" "sha256-+zl9JmGel0rkmGeYaHMlBIfPQfHdJQOk+sG/nuHnzD0=";
+  mypy-boto3-managedblockchain-query =
+    buildMypyBoto3Package "managedblockchain-query" "1.35.0"
+      "sha256-WaFRp1G7BeKwm6g4rAWmf5OxoETzwit8YlN3R5hazuQ=";
 
-  mypy-boto3-m2 = buildMypyBoto3Package "m2" "1.34.0" "sha256-ZF3ZViV0pN64OEc8aHuCRR0lnVyHOiTRfqVQGCmMMKE=";
+  mypy-boto3-marketplace-catalog =
+    buildMypyBoto3Package "marketplace-catalog" "1.35.0"
+      "sha256-RXCmmjnGhMm6+EiYRGhlHgkgcftZardnyOBWaq5eQ0s=";
 
-  mypy-boto3-machinelearning = buildMypyBoto3Package "machinelearning" "1.34.0" "sha256-DeiBu3PQMageEUlVdjH/1uELsPwo4IVhYzDlJFBohKg=";
+  mypy-boto3-marketplace-entitlement =
+    buildMypyBoto3Package "marketplace-entitlement" "1.35.0"
+      "sha256-fVtsD81DbUIsAtsfAeR9QC9NfjKV4fAswGpleBfHJMk=";
 
-  mypy-boto3-macie = buildMypyBoto3Package "macie" "1.29.0" "sha256-lFOPbIBrGuv9W83fsyzyI5fyOleXf4j3sCh9IM0gaQ4=";
+  mypy-boto3-marketplacecommerceanalytics =
+    buildMypyBoto3Package "marketplacecommerceanalytics" "1.35.0"
+      "sha256-POYl0YUu3WsZ9lfseKTNuT6PaOVDfvKbqtKM064Ksak=";
 
-  mypy-boto3-macie2 = buildMypyBoto3Package "macie2" "1.34.20" "sha256-erqa/ptOBMd8x+N1A6ibSULfBH75gEWsKDd/jhc/9tg=";
+  mypy-boto3-mediaconnect =
+    buildMypyBoto3Package "mediaconnect" "1.35.11"
+      "sha256-v+a4wc62OnHXJv5BHy/oq88FRn3piimmenmAPAOZXOA=";
 
-  mypy-boto3-managedblockchain = buildMypyBoto3Package "managedblockchain" "1.34.0" "sha256-gUPuS8/ygIdsfCx6S1zpxP936Ah0o5BT4TaDiEW4wPQ=";
+  mypy-boto3-mediaconvert =
+    buildMypyBoto3Package "mediaconvert" "1.35.23"
+      "sha256-TvkVif/foJUzw1tPg8l2Y81neHUfxeZ9aDKtaIYKyRg=";
 
-  mypy-boto3-managedblockchain-query = buildMypyBoto3Package "managedblockchain-query" "1.34.67" "sha256-c2BoAKpgurKaNOTkl3cqc3X1CiaQVfQL5kvQV3/WLww=";
+  mypy-boto3-medialive =
+    buildMypyBoto3Package "medialive" "1.35.23"
+      "sha256-emjiDJ1sZylGgclL3E90nYBwqJgJq20fQx2Ug4e9UbQ=";
 
-  mypy-boto3-marketplace-catalog = buildMypyBoto3Package "marketplace-catalog" "1.34.74" "sha256-+ehJMgzEt0R0sV1IL4/eEEltEIcFDqr4GzeTraabW90=";
+  mypy-boto3-mediapackage =
+    buildMypyBoto3Package "mediapackage" "1.35.0"
+      "sha256-a3ToXuhOWn4H6yEf77XWFRpG1QOFWn3tuBzj5MV3HZM=";
 
-  mypy-boto3-marketplace-entitlement = buildMypyBoto3Package "marketplace-entitlement" "1.34.0" "sha256-yGaeDZLEmp/Nap++wI6GgQvVW3HxQFcM+ipk7RAuG4g=";
+  mypy-boto3-mediapackage-vod =
+    buildMypyBoto3Package "mediapackage-vod" "1.35.0"
+      "sha256-ur1A0iPMGgfI0XNSOiXX4VF5nR6XJcnpk0KM62Ujp/0=";
 
-  mypy-boto3-marketplacecommerceanalytics = buildMypyBoto3Package "marketplacecommerceanalytics" "1.34.0" "sha256-Gzmd4GQnM2sRrL4/FE9kI0R9ItKJ5xdaC/cCGqQ0XAY=";
+  mypy-boto3-mediapackagev2 =
+    buildMypyBoto3Package "mediapackagev2" "1.35.0"
+      "sha256-b8TqRWLKSkN74xBzyCeABdd69s0ET2QTSNsTZaJXPfc=";
 
-  mypy-boto3-mediaconnect = buildMypyBoto3Package "mediaconnect" "1.34.7" "sha256-A8Sal8qNijZ/PdwLLC3mGAt8btMGOHXzOAOVFn+JDtU=";
+  mypy-boto3-mediastore =
+    buildMypyBoto3Package "mediastore" "1.35.0"
+      "sha256-iQi2/pE6ojnp6jWtkzWD7T11dxST+UYbETnUjEH0r2E=";
 
-  mypy-boto3-mediaconvert = buildMypyBoto3Package "mediaconvert" "1.34.81" "sha256-MGULtrMziQpOXF4eNZabcu83rR13AHBMZrN5RgkqATk=";
+  mypy-boto3-mediastore-data =
+    buildMypyBoto3Package "mediastore-data" "1.35.0"
+      "sha256-pOvrDLzo9rXF8CHLX6OL0gwjWW+EklFQ/B635zcm828=";
 
-  mypy-boto3-medialive = buildMypyBoto3Package "medialive" "1.34.83" "sha256-VFyz2fNgx2fFFsU3843vwpZBQxGrVzNbyZWF1kv6KaY=";
+  mypy-boto3-mediatailor =
+    buildMypyBoto3Package "mediatailor" "1.35.0"
+      "sha256-mECUsZiuYN9O4WvUdu5Ge/WsFLEKhxLnD9WBpxZvKTc=";
 
-  mypy-boto3-mediapackage = buildMypyBoto3Package "mediapackage" "1.34.0" "sha256-4DJ2zVk0satmVn+TZdDExx/+ClJpc1bdmbvl72Joe5U=";
+  mypy-boto3-medical-imaging =
+    buildMypyBoto3Package "medical-imaging" "1.35.0"
+      "sha256-u+GgBEtw2AVonu+XqL8gDIJig9foiUufz1++qmrfx00=";
 
-  mypy-boto3-mediapackage-vod = buildMypyBoto3Package "mediapackage-vod" "1.34.0" "sha256-XwGc3+WD8o/MUfcBocl52TPK/RhiCjEb2qDqcuYwB+g=";
+  mypy-boto3-memorydb =
+    buildMypyBoto3Package "memorydb" "1.35.0"
+      "sha256-hulSiv/A/GXV9rCjjSSIGKQSZqeBkKUKZuuKGwl8/aU=";
 
-  mypy-boto3-mediapackagev2 = buildMypyBoto3Package "mediapackagev2" "1.34.60" "sha256-tm54AEKAAuhp8+KeoW/yesl0M8utg7iIbkOpLyotpa8=";
+  mypy-boto3-meteringmarketplace =
+    buildMypyBoto3Package "meteringmarketplace" "1.35.0"
+      "sha256-qFXZE2y5MSpOZMSKhFEeriXHgbboQigOufmTqbArmns=";
 
-  mypy-boto3-mediastore = buildMypyBoto3Package "mediastore" "1.34.0" "sha256-v2G2wDXGJwMalYnHTRGvdRTUv41bm8adIOj9tgQV0ys=";
+  mypy-boto3-mgh =
+    buildMypyBoto3Package "mgh" "1.35.0"
+      "sha256-mGKHl9Ld7DNwma0Nl2lTwb3cN2N1SqnZlYZX0bxnS1w=";
 
-  mypy-boto3-mediastore-data = buildMypyBoto3Package "mediastore-data" "1.34.0" "sha256-bYlKkBh7Kq4PsToHQ4+K5B3h8+IwyS+7ngEJ5AALBus=";
+  mypy-boto3-mgn =
+    buildMypyBoto3Package "mgn" "1.35.0"
+      "sha256-sbnfx714qwWSTOgf/ptxpV55wdTa47yfNgkOtu/BpDc=";
 
-  mypy-boto3-mediatailor = buildMypyBoto3Package "mediatailor" "1.34.65" "sha256-JJDQuyACp+y5PntLhMZ2rIb1wR/IW0PPPqS8HB54mNk=";
+  mypy-boto3-migration-hub-refactor-spaces =
+    buildMypyBoto3Package "migration-hub-refactor-spaces" "1.35.0"
+      "sha256-HARwGwot9kfEvVJwk5c0sjeLEcq/jAhh+2kRBUDDdPw=";
 
-  mypy-boto3-medical-imaging = buildMypyBoto3Package "medical-imaging" "1.34.77" "sha256-biBe/kSBJRnGrYFr55Lc1GEZ5O457qOlujjiYQxp9hc=";
+  mypy-boto3-migrationhub-config =
+    buildMypyBoto3Package "migrationhub-config" "1.35.0"
+      "sha256-j5Lw7w2lzVJAsR69yMsccEV0WStBBhR/EdR62suDJ1o=";
 
-  mypy-boto3-memorydb = buildMypyBoto3Package "memorydb" "1.34.0" "sha256-bq2FQsYZ/7xi2o4cdacva510FjDRfbNRO2IrA0oxtAg=";
+  mypy-boto3-migrationhuborchestrator =
+    buildMypyBoto3Package "migrationhuborchestrator" "1.35.0"
+      "sha256-TMOu+TzMU3qQn8upnPKYinhToe3cW5fKbxEXj0QGl7w=";
 
-  mypy-boto3-meteringmarketplace = buildMypyBoto3Package "meteringmarketplace" "1.34.0" "sha256-1un4l+XXDAen0NS1lQ2e1XOyUaoOjt+n8AU0VvGlTP0=";
+  mypy-boto3-migrationhubstrategy =
+    buildMypyBoto3Package "migrationhubstrategy" "1.35.0"
+      "sha256-uzkFo1wOgpLdpSI2ErtfRo0uTdY/XbYltubzg4kC5ro=";
 
-  mypy-boto3-mgh = buildMypyBoto3Package "mgh" "1.34.0" "sha256-tyA+ywgjdRkIU2vbZwCsQfWIYctw/kLjIGTEAZuf8oU=";
+  mypy-boto3-mq =
+    buildMypyBoto3Package "mq" "1.35.0"
+      "sha256-WusbzKkon1Ep+639LtHqwcLRXvtSLeSaSXdAYTm4gmc=";
 
-  mypy-boto3-mgn = buildMypyBoto3Package "mgn" "1.34.80" "sha256-eLfAHkhqlU9HK6bLfBFOZ+UzFI1q/vJLFmxQcBRJNt8=";
+  mypy-boto3-mturk =
+    buildMypyBoto3Package "mturk" "1.35.0"
+      "sha256-iYVnkwqOe0UMOqI1NcD58Ej3Bk84adPWC3yq7/+3x8I=";
 
-  mypy-boto3-migration-hub-refactor-spaces = buildMypyBoto3Package "migration-hub-refactor-spaces" "1.34.0" "sha256-T37s/ubwuU1zsKk8DmTFum6Ml3+WNZCJ+q8T6F75iUY=";
+  mypy-boto3-mwaa =
+    buildMypyBoto3Package "mwaa" "1.35.0"
+      "sha256-J1tV2BTUW2Bu8ll+Yn0cJpUpMCCCkfqUEAnis/OJxrA=";
 
-  mypy-boto3-migrationhub-config = buildMypyBoto3Package "migrationhub-config" "1.34.0" "sha256-feqiUjFrwYaAyRh1MZ96VILeEa/WBzUytsnRxXZMxoQ=";
+  mypy-boto3-neptune =
+    buildMypyBoto3Package "neptune" "1.35.24"
+      "sha256-2hgamfnf5SPWo8R15FWJHO37IC0y2oLDTHsb/oPjArE=";
 
-  mypy-boto3-migrationhuborchestrator = buildMypyBoto3Package "migrationhuborchestrator" "1.34.53" "sha256-kreU8blZ61EaKmKJpZ17iS6xFUig5FrMnOs5/1JTn4s=";
+  mypy-boto3-neptunedata =
+    buildMypyBoto3Package "neptunedata" "1.35.0"
+      "sha256-Epx+p5M+3x0plFaXdc8Rsz+p18ZnxbNlr4IhH5STvZM=";
 
-  mypy-boto3-migrationhubstrategy = buildMypyBoto3Package "migrationhubstrategy" "1.34.0" "sha256-N/NcnXF14SAs9F1ZwUYxc/5kp7iUWIFJisUfZxMStLU=";
+  mypy-boto3-network-firewall =
+    buildMypyBoto3Package "network-firewall" "1.35.0"
+      "sha256-41zAgq4F07hIl7I6S+M7ngxdFOKjmUB3BFhncLel7ZI=";
 
-  mypy-boto3-mobile = buildMypyBoto3Package "mobile" "1.34.0" "sha256-fzP70K6S7KPi6GnEj92shU+Dr07ieqDkmrAUEBxMVdI=";
+  mypy-boto3-networkmanager =
+    buildMypyBoto3Package "networkmanager" "1.35.0"
+      "sha256-z1YOK7DoyTEWnaWJ8x8VKZNETw/7jPXBjmN4ZX7m5E0=";
 
-  mypy-boto3-mq = buildMypyBoto3Package "mq" "1.34.0" "sha256-yua6b3bSoXnJjAvsDHa+aE6DebBjQkAKdsy+nM7TcTE=";
+  mypy-boto3-nimble =
+    buildMypyBoto3Package "nimble" "1.35.0"
+      "sha256-gs9eGyRaZN7Fsl0D5fSqtTiYZ+Exp0s8QW/X8ZR7guA=";
 
-  mypy-boto3-mturk = buildMypyBoto3Package "mturk" "1.34.0" "sha256-qhyVd+9KIaL4hxjjDnw7qdyJdcT6ApCxhoTggOVDr80=";
+  mypy-boto3-oam =
+    buildMypyBoto3Package "oam" "1.35.0"
+      "sha256-jHEgFpoHJmep4Lv+ge3DSDthO6d9zt23lWBp0MztcHQ=";
 
-  mypy-boto3-mwaa = buildMypyBoto3Package "mwaa" "1.34.57" "sha256-D0W/03zhllRLYGyXQ/XvMBlcsKuEb2MPr0hmyUVy5xc=";
+  mypy-boto3-omics =
+    buildMypyBoto3Package "omics" "1.35.7"
+      "sha256-CwD0stU2217XD+SXTp+WRyf/qH3EOA5PuBSdTWcXOGU=";
 
-  mypy-boto3-neptune = buildMypyBoto3Package "neptune" "1.34.0" "sha256-oMS6e1cPfOZhh+obhOZTMjmwScEzwCBtvmjtpPIjltA=";
+  mypy-boto3-opensearch =
+    buildMypyBoto3Package "opensearch" "1.35.0"
+      "sha256-AQLU4or4flXLxTrZJy0XHIn9MFRTmgHjUWjLzuP2pXA=";
 
-  mypy-boto3-neptunedata = buildMypyBoto3Package "neptunedata" "1.34.0" "sha256-ZKTaSuLNtxUyP1mW2q8RF8jvXKSfEyHZfJp77xRqbZc=";
+  mypy-boto3-opensearchserverless =
+    buildMypyBoto3Package "opensearchserverless" "1.35.2"
+      "sha256-df8udPQOjXo5GEo6Gk5G6oKx7pBW4c0A82wkC1PA0BI=";
 
-  mypy-boto3-network-firewall = buildMypyBoto3Package "network-firewall" "1.34.0" "sha256-I861Vg32yZJjg9/6q2KmFhysk/ysLZAg2ukNlWMEpuY=";
+  mypy-boto3-opsworks =
+    buildMypyBoto3Package "opsworks" "1.35.0"
+      "sha256-SkQUH/vYdyq+YvCfqZlC4hwxirn7JvPwxBVg/Z17M0A=";
 
-  mypy-boto3-networkmanager = buildMypyBoto3Package "networkmanager" "1.34.0" "sha256-vubUkzOk3bBuXVgHzMhYszMOhUqhBoupc7COdP0nneA=";
+  mypy-boto3-opsworkscm =
+    buildMypyBoto3Package "opsworkscm" "1.35.0"
+      "sha256-qyUZN9Gz8Q6TBDg1LW+M58TLwDlmqJ9aCr4021LbSL0=";
 
-  mypy-boto3-nimble = buildMypyBoto3Package "nimble" "1.34.0" "sha256-i0E9kLunDRl+XzU3Ti3vxqHNa2oGHQQ9xDjCtNKi1Lw=";
+  mypy-boto3-organizations =
+    buildMypyBoto3Package "organizations" "1.35.20"
+      "sha256-SqZDiV8VrLmcdW+cO7LjCFipeJtPlL04uXx58UDgsg0=";
 
-  mypy-boto3-oam = buildMypyBoto3Package "oam" "1.34.73" "sha256-MAnS/E6BKcaubeOdblitGzS7y7YUZr35M4679iJL6lE=";
+  mypy-boto3-osis =
+    buildMypyBoto3Package "osis" "1.35.0"
+      "sha256-PdOH3KaQn9d455qCR565qFlyCb8t7R8x8wXBebHgtt8=";
 
-  mypy-boto3-omics = buildMypyBoto3Package "omics" "1.34.83" "sha256-66IykobW8D/oemTVIGf0xw7H+mb4yNzXMQHv/dnzqGg=";
+  mypy-boto3-outposts =
+    buildMypyBoto3Package "outposts" "1.35.0"
+      "sha256-CFULIBMCKb4mUQ7ogh5hvfewDMpsP1jnQEJmtuArCck=";
 
-  mypy-boto3-opensearch = buildMypyBoto3Package "opensearch" "1.34.43" "sha256-EOl56YqzuIUWlSewnVCtEdzt3Ei5yueP4emtTQq3QrA=";
+  mypy-boto3-panorama =
+    buildMypyBoto3Package "panorama" "1.35.0"
+      "sha256-HFjrSRkc3cEqImMkqC4V/lfk/ArD9/2swrK7xo9Hut4=";
 
-  mypy-boto3-opensearchserverless = buildMypyBoto3Package "opensearchserverless" "1.34.0" "sha256-YpbQWnVIXMqTzieWya4MiFz9HpN5YYSSmBjUvmO0VMo=";
+  mypy-boto3-payment-cryptography =
+    buildMypyBoto3Package "payment-cryptography" "1.35.0"
+      "sha256-b9gTTuQxsXE4CjZgRgbZn4xGSC7N/4v3eF4fF9fFSow=";
 
-  mypy-boto3-opsworks = buildMypyBoto3Package "opsworks" "1.34.0" "sha256-398ugKoRKeRqIH/1upx1K6d0Y/WIsMJCNM2Mmwk+S/A=";
+  mypy-boto3-payment-cryptography-data =
+    buildMypyBoto3Package "payment-cryptography-data" "1.35.0"
+      "sha256-tHHuRkz2nA550ldsMbiUS7XJGMHgx3rRt5scFV7tFNM=";
 
-  mypy-boto3-opsworkscm = buildMypyBoto3Package "opsworkscm" "1.34.0" "sha256-HsUXwbXRPmEaSJjs4EezSHugssLtP2g/NvaI0CnGStA=";
+  mypy-boto3-pca-connector-ad =
+    buildMypyBoto3Package "pca-connector-ad" "1.35.0"
+      "sha256-xIWR2C4YbVpSDhZesWi0IUJbR/eaH6Ej3/EREAfSP9o=";
 
-  mypy-boto3-organizations = buildMypyBoto3Package "organizations" "1.34.56" "sha256-iVOUgkTI0sNixbfr/Z/H9Hsc2thCqDCqHrlthneZLVU=";
+  mypy-boto3-personalize =
+    buildMypyBoto3Package "personalize" "1.35.9"
+      "sha256-Z10I4CW8XudCHhEr1ccnuf49EFdiZNAwaZi+EJDmArY=";
 
-  mypy-boto3-osis = buildMypyBoto3Package "osis" "1.34.0" "sha256-2mSI1VTmQWuwxsCgQtmr1w8xE3zIcwztvMuKMqXFF3k=";
+  mypy-boto3-personalize-events =
+    buildMypyBoto3Package "personalize-events" "1.35.0"
+      "sha256-F9RA+t49GTchoKXlZTuUAlfUj/23ZwH/jlm5GqTbhLg=";
 
-  mypy-boto3-outposts = buildMypyBoto3Package "outposts" "1.34.27" "sha256-nkXVo8Qr2k+pV3SChRezoiU0e2kT9kz1vr2J8MLfm+0=";
+  mypy-boto3-personalize-runtime =
+    buildMypyBoto3Package "personalize-runtime" "1.35.0"
+      "sha256-mz35kZg6nuxkIqwPuNRmiFK0HX+VRo0l9SzJ0tJ1s50=";
 
-  mypy-boto3-panorama = buildMypyBoto3Package "panorama" "1.34.0" "sha256-Pw0yRgawY5TC0OIgcYmzK3KEQusyRf3coThpeHL4X30=";
+  mypy-boto3-pi =
+    buildMypyBoto3Package "pi" "1.35.0"
+      "sha256-VpDsWrHlAD1KT29S8X/vAMRbfqS7dg+koPXEOBHYG/o=";
 
-  mypy-boto3-payment-cryptography = buildMypyBoto3Package "payment-cryptography" "1.34.20" "sha256-WdyhWl00Khf3gA6OeWeKrlgFnTvWhk+AFoS2UhM5Haw=";
+  mypy-boto3-pinpoint =
+    buildMypyBoto3Package "pinpoint" "1.35.0"
+      "sha256-iNYUjASrJsgEA5fGa8J4H37lzWHXdDHIi+1dRdJxfkc=";
 
-  mypy-boto3-payment-cryptography-data = buildMypyBoto3Package "payment-cryptography-data" "1.34.58" "sha256-mc4NO3yjdLlXc9TBkmIsGFqNfW2RT7/jVMC9uhug4tc=";
+  mypy-boto3-pinpoint-email =
+    buildMypyBoto3Package "pinpoint-email" "1.35.0"
+      "sha256-cLs9DwibD7GB546pEd8Zx/Xx5ki2tKYc8drFEetNh48=";
 
-  mypy-boto3-pca-connector-ad = buildMypyBoto3Package "pca-connector-ad" "1.34.0" "sha256-pSGVZPLuj8xcSfLqa+xvf4UL/l2Xb5t43KuXlTCfskc=";
+  mypy-boto3-pinpoint-sms-voice =
+    buildMypyBoto3Package "pinpoint-sms-voice" "1.35.0"
+      "sha256-AYfD/JY1//vPw1obZAmwqW3NYwSpqg1zjQqTpIk80Rw=";
 
-  mypy-boto3-personalize = buildMypyBoto3Package "personalize" "1.34.20" "sha256-1Q+rXczO15oM/KXRLVP8D96HW4nILpxig4stjT1KwuY=";
+  mypy-boto3-pinpoint-sms-voice-v2 =
+    buildMypyBoto3Package "pinpoint-sms-voice-v2" "1.35.26"
+      "sha256-NLr2dUrIW3bwuYg9XMMaBE97aWZqQr3onXBcME3EEbE=";
 
-  mypy-boto3-personalize-events = buildMypyBoto3Package "personalize-events" "1.34.0" "sha256-dklttvls5In+d9uWONxmhfSOP1TQf+4VMW56JjKICr4=";
+  mypy-boto3-pipes =
+    buildMypyBoto3Package "pipes" "1.35.16"
+      "sha256-Mur45GAzHsGamKaooUdGwuydMbfaQCSTVrRwwENbmFs=";
 
-  mypy-boto3-personalize-runtime = buildMypyBoto3Package "personalize-runtime" "1.34.20" "sha256-sKEXkOlMb7t4jBQrLLx90wFhCN1R4ZOk8w9kMpKI0os=";
+  mypy-boto3-polly =
+    buildMypyBoto3Package "polly" "1.35.7"
+      "sha256-aIKpT15gBmM2gkkSbmzs5pVvAIfessdzlQTspmvK+LQ=";
 
-  mypy-boto3-pi = buildMypyBoto3Package "pi" "1.34.0" "sha256-97giGYtpINPHxtcUU6cE/mPF0/r6YfLixAdcC/LGKC0=";
+  mypy-boto3-pricing =
+    buildMypyBoto3Package "pricing" "1.35.0"
+      "sha256-imX//FkRBbNmc69jJINlSIPB0WZc0AvIRH+/c3PRSn8=";
 
-  mypy-boto3-pinpoint = buildMypyBoto3Package "pinpoint" "1.34.81" "sha256-vs7gJCsMrpXBhPFwcHmQ/IT4sOYBMJ6IlcCLGMPuog8=";
+  mypy-boto3-privatenetworks =
+    buildMypyBoto3Package "privatenetworks" "1.35.0"
+      "sha256-TdWk5wgJ8DVwLgTUGto9wrXaTdFZ4LNG2uxahFkYeKo=";
 
-  mypy-boto3-pinpoint-email = buildMypyBoto3Package "pinpoint-email" "1.34.0" "sha256-AHwJtYsAxFiEX16L0HZXz9JzjNZck9V40bFwzicMKUE=";
+  mypy-boto3-proton =
+    buildMypyBoto3Package "proton" "1.35.0"
+      "sha256-zhkzENeWyzHsJVqEHa1iJzikaC8zsz1Yu1Bud/zNp7A=";
 
-  mypy-boto3-pinpoint-sms-voice = buildMypyBoto3Package "pinpoint-sms-voice" "1.34.0" "sha256-oDhem97q9QpsQNy9zCfWOC1cHup3pvLflClVxeWEBuw=";
+  mypy-boto3-qldb =
+    buildMypyBoto3Package "qldb" "1.35.0"
+      "sha256-SgDXUGMc0VwsKcGLtUGA565c4uDy4BhGcW6TIVP8988=";
 
-  mypy-boto3-pinpoint-sms-voice-v2 = buildMypyBoto3Package "pinpoint-sms-voice-v2" "1.34.0" "sha256-Ci/nnvgq6YbVPHLZVmLDHjF8GHpViVP7mfUJREFKndg=";
+  mypy-boto3-qldb-session =
+    buildMypyBoto3Package "qldb-session" "1.35.0"
+      "sha256-mtpp+ro3b7tOrN4TrWr8BjLzaPo264ty8Sng6wtciMs=";
 
-  mypy-boto3-pipes = buildMypyBoto3Package "pipes" "1.34.83" "sha256-Z//eO1IEEolh+5loNBmS5R5W5sdyGt/0T88kI726PKA=";
+  mypy-boto3-quicksight =
+    buildMypyBoto3Package "quicksight" "1.35.23"
+      "sha256-ljk8uB17CDpGT9TIAncsrZBGbI9UrPAPU3HQ9Cz2zYE=";
 
-  mypy-boto3-polly = buildMypyBoto3Package "polly" "1.34.43" "sha256-rx5sW32N6H47fpy5yGvwlKKVKS/uIKOtLfsjoGoNPJg=";
+  mypy-boto3-ram =
+    buildMypyBoto3Package "ram" "1.35.0"
+      "sha256-kwKCaPtSl9xFVw0cTDbveXOFs5r7YzowGfceDSo+qnc=";
 
-  mypy-boto3-pricing = buildMypyBoto3Package "pricing" "1.34.69" "sha256-0+bak3+4FQK0vAjI1r7uKvhwspZxt/zLCJRVMvH41qs=";
+  mypy-boto3-rbin =
+    buildMypyBoto3Package "rbin" "1.35.0"
+      "sha256-85yUjKQ8oiECUYHhmmYrDssyFSQb6itfIRY2iuwCZdo=";
 
-  mypy-boto3-privatenetworks = buildMypyBoto3Package "privatenetworks" "1.34.0" "sha256-WFX0KaJRo0LCPKEAq8LES0P3WJkt6ywLXqTlOFZyZ1w=";
+  mypy-boto3-rds =
+    buildMypyBoto3Package "rds" "1.35.25"
+      "sha256-I4lTEWslkWlrayRnTG9wZcSdihSEDd51F37a/zdaMY8=";
 
-  mypy-boto3-proton = buildMypyBoto3Package "proton" "1.34.0" "sha256-wRBMw/7PWi0s9sJTfnDq3MXcbA5pKwogMDC3UZtLJoY=";
+  mypy-boto3-rds-data =
+    buildMypyBoto3Package "rds-data" "1.35.0"
+      "sha256-yLKWipyD8l1Zyh840Ixp70maQBz/aDcnJEznpGaXt+E=";
 
-  mypy-boto3-qldb = buildMypyBoto3Package "qldb" "1.34.49" "sha256-yiqWryr4vKt/6k+dVoDMDdtL6yP4ClVY0rFwZDDcvWY=";
+  mypy-boto3-redshift =
+    buildMypyBoto3Package "redshift" "1.35.0"
+      "sha256-8YX4mAvSCQgacJy+BLxuW6+gojDz0oT3wMtJG5P/WP0=";
 
-  mypy-boto3-qldb-session = buildMypyBoto3Package "qldb-session" "1.34.0" "sha256-JHePiaFCfIJPxZzvC1U38xrBGkDvB9+yKwPecaZl7BY=";
+  mypy-boto3-redshift-data =
+    buildMypyBoto3Package "redshift-data" "1.35.10"
+      "sha256-LP5RjvMCfCsFD6z/0mIZJEWN3y+z35aZzboz6KaFlZQ=";
 
-  mypy-boto3-quicksight = buildMypyBoto3Package "quicksight" "1.34.79" "sha256-oHaZrX3aRoaFs5VLC7dQMihSocWLmCupHGhReXPbGBo=";
+  mypy-boto3-redshift-serverless =
+    buildMypyBoto3Package "redshift-serverless" "1.35.0"
+      "sha256-uHY9c+p407QBVS18N0lEshdB1mXV+LONhTXSIr+NiV4=";
 
-  mypy-boto3-ram = buildMypyBoto3Package "ram" "1.34.0" "sha256-9sOspEfirpVQ8cT9ILUSWypxBswpAD75A0hHRV7glNg=";
+  mypy-boto3-rekognition =
+    buildMypyBoto3Package "rekognition" "1.35.0"
+      "sha256-mG3TeywuB5+87Z3nhqjFwf0y2WO49oETPMz+oL0LbOA=";
 
-  mypy-boto3-rbin = buildMypyBoto3Package "rbin" "1.34.0" "sha256-Y+a/p3r5IgWk4oH6MOeq0e7rMiNvLCqoz1ZE+xXNtOw=";
+  mypy-boto3-resiliencehub =
+    buildMypyBoto3Package "resiliencehub" "1.35.0"
+      "sha256-MKlBdSJGl7WCnD66fx5nCPhGAtLtLjoahe08KHTT+KM=";
 
-  mypy-boto3-rds = buildMypyBoto3Package "rds" "1.34.83" "sha256-/H99xDRpX9egs39pRaYkvJ3GM6syh+famJmTTRsCgYs=";
+  mypy-boto3-resource-explorer-2 =
+    buildMypyBoto3Package "resource-explorer-2" "1.35.25"
+      "sha256-49Ysavsq6tDUQAcJiP4GQkt5zgBz36qufByA88bltco=";
 
-  mypy-boto3-rds-data = buildMypyBoto3Package "rds-data" "1.34.6" "sha256-d+WXt3cSUe5ZxynSjPSJxXgv6evP/rhZrX1ua9rtSx8=";
+  mypy-boto3-resource-groups =
+    buildMypyBoto3Package "resource-groups" "1.35.0"
+      "sha256-5l6yFERWSvAgeguBrQmx7fzRmSFW95As0NIqo91VTmw=";
 
-  mypy-boto3-redshift = buildMypyBoto3Package "redshift" "1.34.57" "sha256-MDhI9DW5I6SWXIAnENiPqSanDjCB3vf2n24eVxzmtso=";
+  mypy-boto3-resourcegroupstaggingapi =
+    buildMypyBoto3Package "resourcegroupstaggingapi" "1.35.0"
+      "sha256-3DVLn61w42L8qwyQB1WbOPjOZXqXalLZ9rITcmcDkQI=";
 
-  mypy-boto3-redshift-data = buildMypyBoto3Package "redshift-data" "1.34.0" "sha256-NdBZxkLTwnY7fgmoqGZKTN/lhCyY/3VGFWWOGeCf//0=";
+  mypy-boto3-robomaker =
+    buildMypyBoto3Package "robomaker" "1.35.0"
+      "sha256-Yl7v7zQHeixpG244Qld1vceR8ZazGjcUc26LUuane3I=";
 
-  mypy-boto3-redshift-serverless = buildMypyBoto3Package "redshift-serverless" "1.34.16" "sha256-ag5tKb1+4cHiG99OszDNGdnX9RPRPraaqM8p3IqgLBg=";
+  mypy-boto3-rolesanywhere =
+    buildMypyBoto3Package "rolesanywhere" "1.35.0"
+      "sha256-Ss85x4OJ+RtOmP7LzIIMcikxjMvMyi3VUT9WLvxODSM=";
 
-  mypy-boto3-rekognition = buildMypyBoto3Package "rekognition" "1.34.82" "sha256-qy7yacSuG6cARR2L/YjBGWYM1BU5/qtMr/H08x3XFIM=";
+  mypy-boto3-route53 =
+    buildMypyBoto3Package "route53" "1.35.4"
+      "sha256-gPor5Roaoo3i0zJa4xXIIb1SOar80KQvVi5h003vGZM=";
 
-  mypy-boto3-resiliencehub = buildMypyBoto3Package "resiliencehub" "1.34.0" "sha256-F/ZRCp/M/6kBI4Apb3mISzqe1Zi4Y7gq/vu0dvyyTvM=";
+  mypy-boto3-route53-recovery-cluster =
+    buildMypyBoto3Package "route53-recovery-cluster" "1.35.0"
+      "sha256-G4Rh+i27qcxmB3vK+CfOhseC9Etso3Vs6Kt9x6hBrDA=";
 
-  mypy-boto3-resource-explorer-2 = buildMypyBoto3Package "resource-explorer-2" "1.34.41" "sha256-Q4MCAvEZkYRnDLEF9d8x+FOMUJ9O2eCb2mZr/e8Ut24=";
+  mypy-boto3-route53-recovery-control-config =
+    buildMypyBoto3Package "route53-recovery-control-config" "1.35.0"
+      "sha256-ofD5Ho5hI9wFujM4fR258i8XtFUJGiouGKErQEOzpkI=";
 
-  mypy-boto3-resource-groups = buildMypyBoto3Package "resource-groups" "1.34.79" "sha256-tSCHhtaSb+dnXD8D2aNR6DBAlhHbvU3zx6YceGTlzgM=";
+  mypy-boto3-route53-recovery-readiness =
+    buildMypyBoto3Package "route53-recovery-readiness" "1.35.0"
+      "sha256-n4arbk3VN6P/7abnM5yhgOQFdLJwioOdyx2ILcc6Mag=";
 
-  mypy-boto3-resourcegroupstaggingapi = buildMypyBoto3Package "resourcegroupstaggingapi" "1.34.0" "sha256-ko55TJeH/EGsAp1Y8ZTYhmGEqWGKQTnN3IQEF31V6Ns=";
+  mypy-boto3-route53domains =
+    buildMypyBoto3Package "route53domains" "1.35.0"
+      "sha256-pM5+b6he5Gp9DuD2Uz/x+SYmVzxhZIh/gJ626S9I19g=";
 
-  mypy-boto3-robomaker = buildMypyBoto3Package "robomaker" "1.34.0" "sha256-dAL2P2bxhSc5oLZXhhekrt9y4bWXg7kIr+/FVbkFTww=";
+  mypy-boto3-route53resolver =
+    buildMypyBoto3Package "route53resolver" "1.35.0"
+      "sha256-F0ixOVQ8zmCrspV3+a5QmuJdvc5NOV8WiWdepiIeW9E=";
 
-  mypy-boto3-rolesanywhere = buildMypyBoto3Package "rolesanywhere" "1.34.76" "sha256-y346Go7PySWVFPZI7CvFElW2cK708Q1D3K0LdfPDp0Q=";
+  mypy-boto3-rum =
+    buildMypyBoto3Package "rum" "1.35.0"
+      "sha256-RwPNNFntNChLqbr86wd1bwp6OqWvs3oj3V+4X71J3Hw=";
 
-  mypy-boto3-route53 = buildMypyBoto3Package "route53" "1.34.31" "sha256-MtmEtt57vhFRG1O+VnFXFUhSWAQ7JrnV3hBZx4TpOh8=";
+  mypy-boto3-s3 =
+    buildMypyBoto3Package "s3" "1.35.22"
+      "sha256-n2ThGW/+zCxqt77pXoSGkrX0ZKHfFCETYepru8IDg4c=";
 
-  mypy-boto3-route53-recovery-cluster = buildMypyBoto3Package "route53-recovery-cluster" "1.34.0" "sha256-1IUmycikAtBBNykch2aj7tI6XLRjN7D56YwJn6QRmIQ=";
+  mypy-boto3-s3control =
+    buildMypyBoto3Package "s3control" "1.35.12"
+      "sha256-GpZ3lr2WenLA+FNOBnot9X7DQKtmxWxvP85bTM5l1+g=";
 
-  mypy-boto3-route53-recovery-control-config = buildMypyBoto3Package "route53-recovery-control-config" "1.34.0" "sha256-hlwovA3tocSTUzsj+TH4VMO/bDrxDNALrAFiTpcgNa0=";
+  mypy-boto3-s3outposts =
+    buildMypyBoto3Package "s3outposts" "1.35.0"
+      "sha256-P2Yg3qvcdAcjY+uwPg2DpTgT6ZXb1XYCOeu4bVfgFKI=";
 
-  mypy-boto3-route53-recovery-readiness = buildMypyBoto3Package "route53-recovery-readiness" "1.34.0" "sha256-DyNRWZ9daJ6VFa7moTjgEIdxcCRgjvZ2n7UKyNfr9z4=";
+  mypy-boto3-sagemaker =
+    buildMypyBoto3Package "sagemaker" "1.35.26"
+      "sha256-mVFsFO7dOxHCkNxbxYUED0OjAabQ1ZuO/3MQiuy/ynQ=";
 
-  mypy-boto3-route53domains = buildMypyBoto3Package "route53domains" "1.34.40" "sha256-N81sytOFacuG3pHSk35QbxVxUVEZUx8DK4Y7uUonyh4=";
+  mypy-boto3-sagemaker-a2i-runtime =
+    buildMypyBoto3Package "sagemaker-a2i-runtime" "1.35.0"
+      "sha256-UThrKjwdje3TF/p8TXfAbKiTTCU3/5wVS4TWqipAeaU=";
 
-  mypy-boto3-route53resolver = buildMypyBoto3Package "route53resolver" "1.34.15" "sha256-ER9jhGIeEeHc0llpy4aqRnI9iFfubJFIik04gB81vr0=";
+  mypy-boto3-sagemaker-edge =
+    buildMypyBoto3Package "sagemaker-edge" "1.35.0"
+      "sha256-+1rI1wBBp2sNpSyxG0dMGhz/8B5nGSx4W3ITbVfPuf8=";
 
-  mypy-boto3-rum = buildMypyBoto3Package "rum" "1.34.49" "sha256-Mq2H+13cjxYRwFfxJpWTAb+W5bx+Vew+jl+zbreRIkQ=";
+  mypy-boto3-sagemaker-featurestore-runtime =
+    buildMypyBoto3Package "sagemaker-featurestore-runtime" "1.35.0"
+      "sha256-eAjvYeqZMeNRz7iLCM4gXixaIWbgdv4u/w3BDeoCvmw=";
 
-  mypy-boto3-s3 = buildMypyBoto3Package "s3" "1.34.65" "sha256-L830Es4pJLLws021mr8GqcC75M0zYfFPDSweIRwPfd0=";
+  mypy-boto3-sagemaker-geospatial =
+    buildMypyBoto3Package "sagemaker-geospatial" "1.35.0"
+      "sha256-ES0cThhoMFB4NKVTzThXATiicjq+MTRunsDCMC6YPbI=";
 
-  mypy-boto3-s3control = buildMypyBoto3Package "s3control" "1.34.83" "sha256-A0P6rAebwt9IUKTderlE8tWQJexUjthpO6KClrDbNyc=";
+  mypy-boto3-sagemaker-metrics =
+    buildMypyBoto3Package "sagemaker-metrics" "1.35.24"
+      "sha256-WBwXrGv877AZv6wIxYGwFNTVofmcmTqv/hqXAcraDyQ=";
 
-  mypy-boto3-s3outposts = buildMypyBoto3Package "s3outposts" "1.34.0" "sha256-xLuGP9Fe0S7zRimt1AKd9KOrytmNd/GTRg5OVi5Xpos=";
+  mypy-boto3-sagemaker-runtime =
+    buildMypyBoto3Package "sagemaker-runtime" "1.35.15"
+      "sha256-2afZNIvBO29vNemskWbxx9X1PqL7j2knxHUSEap6lp4=";
 
-  mypy-boto3-sagemaker = buildMypyBoto3Package "sagemaker" "1.34.74" "sha256-gTSksOsEH4IRLqw+AZ/CNLO28Ir18oy7iP2h6a38rmE=";
+  mypy-boto3-savingsplans =
+    buildMypyBoto3Package "savingsplans" "1.35.0"
+      "sha256-u7RvDLzY2r6bnnfR9xN5qGnnqlGmDwH/GUZTU90/+YE=";
 
-  mypy-boto3-sagemaker-a2i-runtime = buildMypyBoto3Package "sagemaker-a2i-runtime" "1.34.0" "sha256-jMZ3aWKQPhNec4A/02S1waQi6Mx9JVdENc3kblhsKjA=";
+  mypy-boto3-scheduler =
+    buildMypyBoto3Package "scheduler" "1.35.0"
+      "sha256-E3hmY8JtrkoLrIgiM47JnzPrS5jnmG+oG9bDrlh5mBg=";
 
-  mypy-boto3-sagemaker-edge = buildMypyBoto3Package "sagemaker-edge" "1.34.0" "sha256-F3IN/KA7uzS16HZydXmFXlXseNIdhCais6Abfq7gRdI=";
+  mypy-boto3-schemas =
+    buildMypyBoto3Package "schemas" "1.35.0"
+      "sha256-pjy/HFGJ4pY4t/FSI1fbCAv9meFCEQoG32GStdaPDcg=";
 
-  mypy-boto3-sagemaker-featurestore-runtime = buildMypyBoto3Package "sagemaker-featurestore-runtime" "1.34.22" "sha256-4dFjwJSTgudHHgpVl2TxUl8fWskuzWO+BhTqa5k+4mw=";
+  mypy-boto3-sdb =
+    buildMypyBoto3Package "sdb" "1.35.0"
+      "sha256-87wPEWSMc083Rn1+lvADZJVeuoN82A+foWetNnIzMBY=";
 
-  mypy-boto3-sagemaker-geospatial = buildMypyBoto3Package "sagemaker-geospatial" "1.34.0" "sha256-9hKKH/025QQYLrlXCOAQoxuWzTMQlmLSov/hVsubF7M=";
+  mypy-boto3-secretsmanager =
+    buildMypyBoto3Package "secretsmanager" "1.35.0"
+      "sha256-w30YExW6ENhUaHIwTX8mbnRhQpsI5jUHwjzFCMPvQmQ=";
 
-  mypy-boto3-sagemaker-metrics = buildMypyBoto3Package "sagemaker-metrics" "1.34.0" "sha256-KniU+0ZJKfjrBKDDZz+QyLb1oomSeD/K6fcJgmMAcJQ=";
+  mypy-boto3-securityhub =
+    buildMypyBoto3Package "securityhub" "1.35.16"
+      "sha256-qDb5EGz/of/glrIKMz5xkPbatIhjRjs9L4tzW0ckJKw=";
 
-  mypy-boto3-sagemaker-runtime = buildMypyBoto3Package "sagemaker-runtime" "1.34.0" "sha256-OJYEdi4xILUZoePcGBcLRHAhwppeybNO+l0kyW3a0Co=";
+  mypy-boto3-securitylake =
+    buildMypyBoto3Package "securitylake" "1.35.0"
+      "sha256-cI6Ei0p1LtQ+QuM4URYu+k2kJiUUjyEs8rbeX5c7Vvk=";
 
-  mypy-boto3-savingsplans = buildMypyBoto3Package "savingsplans" "1.34.67" "sha256-t+0Ko+Onv24p1Sn59mvR/auXkDTowOEpKwpzuMUqk8w=";
+  mypy-boto3-serverlessrepo =
+    buildMypyBoto3Package "serverlessrepo" "1.35.0"
+      "sha256-AzO2GU4SZs0rBg4R5bsajAX5dAJH3OFiHw1X1UDg5b0=";
 
-  mypy-boto3-scheduler = buildMypyBoto3Package "scheduler" "1.34.0" "sha256-+gnQjWPtp7KVI/qIY2aXHD9iM7RZIDl0JwRostfhjzc=";
+  mypy-boto3-service-quotas =
+    buildMypyBoto3Package "service-quotas" "1.35.0"
+      "sha256-yhSUu8Rf27PHTYsbcz3oQ/APUx0ECKTwbzEOaYMZ/1k=";
 
-  mypy-boto3-schemas = buildMypyBoto3Package "schemas" "1.34.0" "sha256-OyWnGUQZKwmAw7tRMt63wG7puIWA7WPyV/rZfPO/KSc=";
+  mypy-boto3-servicecatalog =
+    buildMypyBoto3Package "servicecatalog" "1.35.0"
+      "sha256-GnuDqVaAnWFGFLylpvYxtaL8yUlRxVu6jKB2QhSGeTI=";
 
-  mypy-boto3-sdb = buildMypyBoto3Package "sdb" "1.34.0" "sha256-13BuAQD8uDwwDhCw+8O3V882H6/oor5Z8mBmjb7HHAU=";
+  mypy-boto3-servicecatalog-appregistry =
+    buildMypyBoto3Package "servicecatalog-appregistry" "1.35.0"
+      "sha256-7133sb2IoSsgQIk48MLOL69Gc0G3BCqOlGXlpiC6TaM=";
 
-  mypy-boto3-secretsmanager = buildMypyBoto3Package "secretsmanager" "1.34.72" "sha256-0HM8W1Potee9oA9LQu2ErxLjaiDISJF+ScFzoEIu8Dw=";
+  mypy-boto3-servicediscovery =
+    buildMypyBoto3Package "servicediscovery" "1.35.0"
+      "sha256-avjVAYAQf5ad7CYweewSsbg0JmLnK3KhY2RabXdiqAY=";
 
-  mypy-boto3-securityhub = buildMypyBoto3Package "securityhub" "1.34.76" "sha256-3Y3uF5b+Mr6YZu9YPM70fFCgkveIeD1BrNfYuuIjay4=";
+  mypy-boto3-ses =
+    buildMypyBoto3Package "ses" "1.35.3"
+      "sha256-+TyI+ffXN0M9HVWA3iQfg3T/xF49wslYFx9MTxHCfYw=";
 
-  mypy-boto3-securitylake = buildMypyBoto3Package "securitylake" "1.34.53" "sha256-O/RHRoeUYT5DerEXIQ1NL288bcgA6bGdI29sN7WoQac=";
+  mypy-boto3-sesv2 =
+    buildMypyBoto3Package "sesv2" "1.35.0"
+      "sha256-bKrU7HufafU0Elt05TLZrPycs3kxEHdJcKp6iwWB7ek=";
 
-  mypy-boto3-serverlessrepo = buildMypyBoto3Package "serverlessrepo" "1.34.0" "sha256-abWCJqFbD/AyPV+7hmY4OlsedFs+p8WpNSXG7hjrj3s=";
+  mypy-boto3-shield =
+    buildMypyBoto3Package "shield" "1.35.0"
+      "sha256-cCYQ7ixo2v3kP3+cpvaIhLoJ0ErTfyv/XfBJZnovMjo=";
 
-  mypy-boto3-service-quotas = buildMypyBoto3Package "service-quotas" "1.34.0" "sha256-wWbm/udCn5Je1gJZ+uDJ4LE8NbQlq1yHVQc6eQ2umIw=";
+  mypy-boto3-signer =
+    buildMypyBoto3Package "signer" "1.35.0"
+      "sha256-BmU7vCuS8Ow5DSYi4qbLrYoZGsdYwh4IA9EVHNGMgjI=";
 
-  mypy-boto3-servicecatalog = buildMypyBoto3Package "servicecatalog" "1.34.13" "sha256-60XUP/uZDAkB0RaJgUD4wk+DknbsuygMnTmc3bKlr3U=";
+  mypy-boto3-simspaceweaver =
+    buildMypyBoto3Package "simspaceweaver" "1.35.0"
+      "sha256-CT7Xv0u/xY36/SnJuC3f0396G3TwNdtY0w/cL+w/N2Q=";
 
-  mypy-boto3-servicecatalog-appregistry = buildMypyBoto3Package "servicecatalog-appregistry" "1.34.0" "sha256-XYqa3aiC9pasmkMDXFmHKuK/PWwi6fZs/pt7rXuRFDw=";
+  mypy-boto3-sms =
+    buildMypyBoto3Package "sms" "1.35.0"
+      "sha256-ZNICMrB+oc/gPikX2R9WNKAOoiywMTzkRvlRh/P4bQA=";
 
-  mypy-boto3-servicediscovery = buildMypyBoto3Package "servicediscovery" "1.34.0" "sha256-h9wTiaEakgBlrlwzUulqoEMWmVAKV/METiQppUC+FVI=";
+  mypy-boto3-sms-voice =
+    buildMypyBoto3Package "sms-voice" "1.35.0"
+      "sha256-zDjnBLKg9MI/E1mSLT2Jb9mjShmcreCxHA1rhpC3UQ0=";
 
-  mypy-boto3-ses = buildMypyBoto3Package "ses" "1.34.0" "sha256-ieFDjZ8tTPM5wCRWFjNNUuDKOj8K4s4NH1SiJXxbnaQ=";
+  mypy-boto3-snow-device-management =
+    buildMypyBoto3Package "snow-device-management" "1.35.0"
+      "sha256-qUIwQPj564EnKNxz/hpEoE/Ai1VNXeKB9zOZh5mrOHQ=";
 
-  mypy-boto3-sesv2 = buildMypyBoto3Package "sesv2" "1.34.56" "sha256-xW5M8RMTSqRvRfbb3+zeL3i3tWO3w8+G9eMgbhI6K9I=";
+  mypy-boto3-snowball =
+    buildMypyBoto3Package "snowball" "1.35.0"
+      "sha256-H1axrr9JdiGzMu+GugTv16V5A5w9GpJmdHDTBE0obDs=";
 
-  mypy-boto3-shield = buildMypyBoto3Package "shield" "1.34.0" "sha256-w0D4JKdlitCBIF3NaKn+POYch5CPGIiUZXqBoFzjzz4=";
+  mypy-boto3-sns =
+    buildMypyBoto3Package "sns" "1.35.0"
+      "sha256-+wg1gb5M2pliaC/dvBBtlWc6MgWNrIwYyJTAe9SU4r0=";
 
-  mypy-boto3-signer = buildMypyBoto3Package "signer" "1.34.0" "sha256-wR7ZQ8zTjuVPwMqQ7TR+93DWld9JU16rlt2X+z29xZI=";
+  mypy-boto3-sqs =
+    buildMypyBoto3Package "sqs" "1.35.0"
+      "sha256-YXUvHCvy76OBX2TUPCW0o529vZ5HKuSKoY18bSp6brg=";
 
-  mypy-boto3-simspaceweaver = buildMypyBoto3Package "simspaceweaver" "1.34.0" "sha256-3J7s6FMRBcI7XaVoXjB3gSNI/Eh7TrE5ij8wRmagK/M=";
+  mypy-boto3-ssm =
+    buildMypyBoto3Package "ssm" "1.35.21"
+      "sha256-XtVcdQn63aYVVxj+WXKbPasPi3b/HgN6h6v/ndJHX0k=";
 
-  mypy-boto3-sms = buildMypyBoto3Package "sms" "1.34.0" "sha256-ktneEYqlmdhb386de2oQuDN5W4FLTxjWBmnZ0COVASA=";
+  mypy-boto3-ssm-contacts =
+    buildMypyBoto3Package "ssm-contacts" "1.35.0"
+      "sha256-0X0GgJ9dQr20jgQXNg9f4ulETPVHEQYaAs7+KxxIo/g=";
 
-  mypy-boto3-sms-voice = buildMypyBoto3Package "sms-voice" "1.34.0" "sha256-KaF8cWo+vin1YA63S6PDTpvjKWtz0Akl18yMVvhjdLo=";
+  mypy-boto3-ssm-incidents =
+    buildMypyBoto3Package "ssm-incidents" "1.35.0"
+      "sha256-sMJnd2csYnc0MxS36LdvHuvmYax+zEKWLiSRMNMzV8o=";
 
-  mypy-boto3-snow-device-management = buildMypyBoto3Package "snow-device-management" "1.34.0" "sha256-buPLN3Qu+asEf2qrv1Jvhu3gKN6aBrK55jB8IxPoFMs=";
+  mypy-boto3-ssm-sap =
+    buildMypyBoto3Package "ssm-sap" "1.35.1"
+      "sha256-OG2416B70WCHMhuWykf1LZWufgn0pB4EsLhydVYH/pY=";
 
-  mypy-boto3-snowball = buildMypyBoto3Package "snowball" "1.34.58" "sha256-z60jinh1shgZv2Q4uW2eFphJXRC0ONVN5bPE1UBgC9Y=";
+  mypy-boto3-sso =
+    buildMypyBoto3Package "sso" "1.35.0"
+      "sha256-GQGf654mGic7mXbPb0PEAMytnkau/LbOWzoZRRNCt+k=";
 
-  mypy-boto3-sns = buildMypyBoto3Package "sns" "1.34.44" "sha256-qYW1KB0AoVbdfJCT5YE8EMTqa5Hy67cVZ/57t7IQplI=";
+  mypy-boto3-sso-admin =
+    buildMypyBoto3Package "sso-admin" "1.35.0"
+      "sha256-RPWIx+TuWRPkfN/a1S6/t/I+H6WFbWudA6mkgCC6vr8=";
 
-  mypy-boto3-sqs = buildMypyBoto3Package "sqs" "1.34.0" "sha256-C/iZX1iRmrKVOYEA5y6qfaiYrc/Z0zmkLzxIzkc0GdU=";
+  mypy-boto3-sso-oidc =
+    buildMypyBoto3Package "sso-oidc" "1.35.0"
+      "sha256-aTKMQz0w0d0WOWHGU3HIqSb3z6PvbuSqtX+saBIIRog=";
 
-  mypy-boto3-ssm = buildMypyBoto3Package "ssm" "1.34.61" "sha256-TLyZ9CtpE8U2xsxBwC0/Flkg0ee6u5uxd4K0EFVs3gA=";
+  mypy-boto3-stepfunctions =
+    buildMypyBoto3Package "stepfunctions" "1.35.9"
+      "sha256-wIirZ3Ueg3xdtAWT1su3BQXI5W4OBPsyoCQeebsigSs=";
 
-  mypy-boto3-ssm-contacts = buildMypyBoto3Package "ssm-contacts" "1.34.0" "sha256-wkKPGLm24/zgMKitcF9ZaPt/W4m+yHerR1wbEqJALBM=";
+  mypy-boto3-storagegateway =
+    buildMypyBoto3Package "storagegateway" "1.35.18"
+      "sha256-RiAqxt45cMOkbGjWVWufiqZcCKQm++RE3FOdZ5BFkuE=";
 
-  mypy-boto3-ssm-incidents = buildMypyBoto3Package "ssm-incidents" "1.34.0" "sha256-OB5/E5ZArGtLZ/UaVjDEnzoH4J4vEFehULG8RKCB6gg=";
+  mypy-boto3-sts =
+    buildMypyBoto3Package "sts" "1.35.0"
+      "sha256-YZWAwLz01/eYCMgyiniUoO6sVvlFQYM8WjKcvHCPdng=";
 
-  mypy-boto3-ssm-sap = buildMypyBoto3Package "ssm-sap" "1.34.0" "sha256-Sz3inwP5mRKJdFqrf5FYmTp6M9o8J/S4H6k/7SMq25E=";
+  mypy-boto3-support =
+    buildMypyBoto3Package "support" "1.35.0"
+      "sha256-SLGLKpeq8kficWOg7if8IdTHuWLhe76Wn+72g7Ym8Tw=";
 
-  mypy-boto3-sso = buildMypyBoto3Package "sso" "1.34.0" "sha256-Iu1KwyWW8DjFJcV46L50gK/G8p2nAqxzzjgBAVTX6nU=";
+  mypy-boto3-support-app =
+    buildMypyBoto3Package "support-app" "1.35.0"
+      "sha256-DtF++oBv7Jb7yXY2ymC/KsQDgMPqWJWP3MZQOlx/NXM=";
 
-  mypy-boto3-sso-admin = buildMypyBoto3Package "sso-admin" "1.34.0" "sha256-befPkyehC4AKxMotvRzyfZpkqlpkfpI2OKVSw4IFnjo=";
+  mypy-boto3-swf =
+    buildMypyBoto3Package "swf" "1.35.0"
+      "sha256-72VjJGOWAphFUZfMxzSaYyycUtoL1St08G/SAEhDriQ=";
 
-  mypy-boto3-sso-oidc = buildMypyBoto3Package "sso-oidc" "1.34.0" "sha256-uDHRoc7H3vtM/KYSeH95PdibjiEq/pSSJFcm5kgMMAg=";
+  mypy-boto3-synthetics =
+    buildMypyBoto3Package "synthetics" "1.35.18"
+      "sha256-p/jKkj4a1vUkgfmUAkKY6nbDKKaBNAJeuFOea7Uvq7M=";
 
-  mypy-boto3-stepfunctions = buildMypyBoto3Package "stepfunctions" "1.34.0" "sha256-BtIpbO51DRfLYhcUIO6kYU8g8pvkXuNhhU+LWZpugRA=";
+  mypy-boto3-textract =
+    buildMypyBoto3Package "textract" "1.35.0"
+      "sha256-i0NmNRPwEypr4m0vNtJDXHEAbCcqdxTexY3MDaltvh8=";
 
-  mypy-boto3-storagegateway = buildMypyBoto3Package "storagegateway" "1.34.27" "sha256-iKn048AdvM6XSOqT/w6edWoe0VMi3V305oHMth/QkF0=";
+  mypy-boto3-timestream-query =
+    buildMypyBoto3Package "timestream-query" "1.35.0"
+      "sha256-sOjhGZ2h77NOLcoQX2AdLae9cB2VbBYSx+W8ge9oqwA=";
 
-  mypy-boto3-sts = buildMypyBoto3Package "sts" "1.34.0" "sha256-s0fgozbWAWLdlAdNnRD2FPKwmkVcm0JBWFDVTWduIGc=";
+  mypy-boto3-timestream-write =
+    buildMypyBoto3Package "timestream-write" "1.35.0"
+      "sha256-kDRm9b1g1M9qaiA8CDZLNBrGxw1os1c1giwDc+CpFxA=";
 
-  mypy-boto3-support = buildMypyBoto3Package "support" "1.34.0" "sha256-3y+uFRJKahLAPoG9gqxK8gqZKJ+OL1Rom/dr/zWIq+k=";
+  mypy-boto3-tnb =
+    buildMypyBoto3Package "tnb" "1.35.0"
+      "sha256-ZZ/BGdnThJpysJGlKxPyTWyP6IdOhtf7PfjiBSYVg/8=";
 
-  mypy-boto3-support-app = buildMypyBoto3Package "support-app" "1.34.0" "sha256-/aYEPAnGgAPB6Tnh5jwYASbP2kVJth+3ZxcMCYgo9n0=";
+  mypy-boto3-transcribe =
+    buildMypyBoto3Package "transcribe" "1.35.0"
+      "sha256-pRyowqpW9cqiZe0aCDvcJAqIaRkEhG8DFRxP89daIPo=";
 
-  mypy-boto3-swf = buildMypyBoto3Package "swf" "1.34.0" "sha256-T8QYHzRjjQyLGqSwc7J6hPXqpeoeCUvlpHbXwnT99rQ=";
+  mypy-boto3-transfer =
+    buildMypyBoto3Package "transfer" "1.35.0"
+      "sha256-at9iKdpW8fCiOOX6smp8lDg8xWT9M6RdHJr7Qtpzrbo=";
 
-  mypy-boto3-synthetics = buildMypyBoto3Package "synthetics" "1.34.0" "sha256-gGEu4vQ5T1gSLM33V8Ouj+ZlPQIoY+RRbUz7nvD7PbY=";
+  mypy-boto3-translate =
+    buildMypyBoto3Package "translate" "1.35.0"
+      "sha256-j9ZU1UHzKNo1+gb+uUYiMTIwjGi9OEg0jAmKGx+mGno=";
 
-  mypy-boto3-textract = buildMypyBoto3Package "textract" "1.34.0" "sha256-AeukQ85jOCNpUxfnedEyacm/bK6pFA32tmhQrieLoMo=";
+  mypy-boto3-verifiedpermissions =
+    buildMypyBoto3Package "verifiedpermissions" "1.35.0"
+      "sha256-98NHM9PlT4c9jCcm8kKaEsOHHvFdhmAca/LRmW8biTo=";
 
-  mypy-boto3-timestream-query = buildMypyBoto3Package "timestream-query" "1.34.65" "sha256-RSGOulFIOZi/9Z5grP/Zv0A5fy3MJTzph+D9a45MkHA=";
+  mypy-boto3-voice-id =
+    buildMypyBoto3Package "voice-id" "1.35.0"
+      "sha256-mxpiis9WGSEclfaHOxFJxGIAO42R2c5zc58xQo4MOn0=";
 
-  mypy-boto3-timestream-write = buildMypyBoto3Package "timestream-write" "1.34.0" "sha256-fKi5nIyU5BffflHVh21HjcuYE+RXDiq0gXbFOKOAYPE=";
+  mypy-boto3-vpc-lattice =
+    buildMypyBoto3Package "vpc-lattice" "1.35.0"
+      "sha256-hjsCIge5vyWpgeklpO+u3QGPwCbpdnZcfJErYrPPyeA=";
 
-  mypy-boto3-tnb = buildMypyBoto3Package "tnb" "1.34.0" "sha256-32Pcqs7DamX+sZt3pDF+gCjnAs8JhtJm9+Jl0agIuOA=";
+  mypy-boto3-waf =
+    buildMypyBoto3Package "waf" "1.35.0"
+      "sha256-KeoPZIXTGHoS69QR5y4y3N4AVlscQ6Cqlbg+6H3MIu4=";
 
-  mypy-boto3-transcribe = buildMypyBoto3Package "transcribe" "1.34.0" "sha256-cKiJ306Y96xLHB7vX46uaw145BPLK/1g3OrMIMB0pPo=";
+  mypy-boto3-waf-regional =
+    buildMypyBoto3Package "waf-regional" "1.35.0"
+      "sha256-rqjBKxMMg/gkt9PJyFyE3g2msAiTtiMZWF4TY3/grcs=";
 
-  mypy-boto3-transfer = buildMypyBoto3Package "transfer" "1.34.77" "sha256-fqta7EJ7rP8dIKJTG8sJCYCNmcqqNljqf9jyk0j6feA=";
+  mypy-boto3-wafv2 =
+    buildMypyBoto3Package "wafv2" "1.35.9"
+      "sha256-snz65w4vU7DMSVJmhWHvQay38q17RYkmbk3986HlXT8=";
 
-  mypy-boto3-translate = buildMypyBoto3Package "translate" "1.34.0" "sha256-4tjjmwMtIPpMwKZ3yqB96XEb1WidCxMIj2Cfjn0nTy8=";
+  mypy-boto3-wellarchitected =
+    buildMypyBoto3Package "wellarchitected" "1.35.0"
+      "sha256-3s7RVd51W47/QhDdYe7GmhPy/NZtGXp3RSNZZsNh0H0=";
 
-  mypy-boto3-verifiedpermissions = buildMypyBoto3Package "verifiedpermissions" "1.34.79" "sha256-su6Lq/NVOp2Shgb6UPdrJLqAv9qG8Mx3bQk9PwihybM=";
+  mypy-boto3-wisdom =
+    buildMypyBoto3Package "wisdom" "1.35.0"
+      "sha256-HoIUtkfoV5prtgdD7KOcxJnFb08cGqcJywdgO39s6zM=";
 
-  mypy-boto3-voice-id = buildMypyBoto3Package "voice-id" "1.34.0" "sha256-c6HseKIqRPs8NmFZYsg+9jWCMGpMi+VpvM9BiWq16PY=";
+  mypy-boto3-workdocs =
+    buildMypyBoto3Package "workdocs" "1.35.0"
+      "sha256-q19sL/CSFtahdAO9srUHTsKBxXlp7w25rWHY8ZzpnJY=";
 
-  mypy-boto3-vpc-lattice = buildMypyBoto3Package "vpc-lattice" "1.34.0" "sha256-zyqcDplqAYFrUjrz28SHrIemPSTzvfUb7x6CXxXCTNc=";
+  mypy-boto3-worklink =
+    buildMypyBoto3Package "worklink" "1.35.0"
+      "sha256-AgK4Xg1dloJmA+h4+mcBQQVTvYKjLCk5tPDbl/ItCVQ=";
 
-  mypy-boto3-waf = buildMypyBoto3Package "waf" "1.34.0" "sha256-TVOBwTITXBYFoGvXULoi8OL7OJXZKJbCpZPaZ5siWXk=";
+  mypy-boto3-workmail =
+    buildMypyBoto3Package "workmail" "1.35.0"
+      "sha256-1hjejKCAu9pNPzJ0gaz8mbyQLFkzEUB0mO7g7Da06mk=";
 
-  mypy-boto3-waf-regional = buildMypyBoto3Package "waf-regional" "1.34.0" "sha256-zv/IPDU6lqmmIfTq57d7VH3SyA7UkgWW2Hysk2zamcM=";
+  mypy-boto3-workmailmessageflow =
+    buildMypyBoto3Package "workmailmessageflow" "1.35.0"
+      "sha256-Om/TFPBZh3xr0inpGzCpvTNij9DTPq8dV1ikX8g4YtE=";
 
-  mypy-boto3-wafv2 = buildMypyBoto3Package "wafv2" "1.34.58" "sha256-gPNY3XJr/50nejQFzti9igktryZHsgQDiB9BOYnT94I=";
+  mypy-boto3-workspaces =
+    buildMypyBoto3Package "workspaces" "1.35.24"
+      "sha256-j7eEUDul3+bMWN80+gH+/gFBWqQHVQ2yN+YBx5VFZNM=";
 
-  mypy-boto3-wellarchitected = buildMypyBoto3Package "wellarchitected" "1.34.0" "sha256-tzXpOWC6/WJ+/wUgwYtgI7scq7wRpACW8q1z9RwyhbA=";
-
-  mypy-boto3-wisdom = buildMypyBoto3Package "wisdom" "1.34.16" "sha256-VhRrQLqmrHn/uWI6lWFJ27hiSmZbW1y+VE2Uf8ssrOw=";
-
-  mypy-boto3-workdocs = buildMypyBoto3Package "workdocs" "1.34.0" "sha256-96V+xgJ+DvqA4A7teCEpVVirlTVxCehXzNcPWUojPH4=";
-
-  mypy-boto3-worklink = buildMypyBoto3Package "worklink" "1.34.0" "sha256-dEWnbAtuUH14ojkOdeQvPvnVYZYxEsPvXuamyil2AHE=";
-
-  mypy-boto3-workmail = buildMypyBoto3Package "workmail" "1.34.0" "sha256-D0gfIW2sbxQ/JOi5f9S6/KezsEKz4239srdL8EfFjG8=";
-
-  mypy-boto3-workmailmessageflow = buildMypyBoto3Package "workmailmessageflow" "1.34.0" "sha256-e4wgFvtlfx0u6eGphRU7viGzZ4gbZijj4vjziPLPWX8=";
-
-  mypy-boto3-workspaces = buildMypyBoto3Package "workspaces" "1.34.58" "sha256-EtAL93MtIZppL57xP4JDGoWT/SqgptRgCJyq/3bm9ts=";
-
-  mypy-boto3-workspaces-web = buildMypyBoto3Package "workspaces-web" "1.34.0" "sha256-RImlbT5Lpu2IoTrEQv5Bzk3NnkMV9jQjHGDnxCK3x18=";
-
-  mypy-boto3-xray = buildMypyBoto3Package "xray" "1.34.0" "sha256-8weFeYAit/DBFOhReQr5uSy0Am7Sh1fpYtMPtDka+OI=";
+  mypy-boto3-workspaces-web =
+    buildMypyBoto3Package "workspaces-web" "1.35.23"
+      "sha256-/uATkqLhOOPKwegWRQOSRGeM2tmq+VbWY3t780IvSek=";
 
+  mypy-boto3-xray =
+    buildMypyBoto3Package "xray" "1.35.0"
+      "sha256-o8Om2D9ln23E2/OSrBSBApr2uUHpSF6kh4u/YOM4+Cw=";
 }
diff --git a/pkgs/development/python-modules/mypy-boto3/update.sh b/pkgs/development/python-modules/mypy-boto3/update.sh
index f9dc1aa8a5c71..53622b479ed4c 100755
--- a/pkgs/development/python-modules/mypy-boto3/update.sh
+++ b/pkgs/development/python-modules/mypy-boto3/update.sh
@@ -5,14 +5,13 @@ set -eu -o pipefail
 
 source_file=pkgs/development/python-modules/mypy-boto3/default.nix
 
-nix-update python312Packages.botocore-stubs --commit --build
+#nix-update python312Packages.botocore-stubs --commit --build
 
 packages=(
   mypy-boto3-accessanalyzer
   mypy-boto3-account
   mypy-boto3-acm
   mypy-boto3-acm-pca
-  mypy-boto3-alexaforbusiness
   mypy-boto3-amp
   mypy-boto3-amplify
   mypy-boto3-amplifybackend
@@ -39,7 +38,6 @@ packages=(
   mypy-boto3-autoscaling-plans
   mypy-boto3-backup
   mypy-boto3-backup-gateway
-  mypy-boto3-backupstorage
   mypy-boto3-batch
   mypy-boto3-billingconductor
   mypy-boto3-braket
@@ -140,7 +138,6 @@ packages=(
   mypy-boto3-frauddetector
   mypy-boto3-fsx
   mypy-boto3-gamelift
-#  mypy-boto3-gamesparks
   mypy-boto3-glacier
   mypy-boto3-globalaccelerator
   mypy-boto3-glue
@@ -151,7 +148,6 @@ packages=(
   mypy-boto3-guardduty
   mypy-boto3-health
   mypy-boto3-healthlake
-  mypy-boto3-honeycode
   mypy-boto3-iam
   mypy-boto3-identitystore
   mypy-boto3-imagebuilder
@@ -162,7 +158,6 @@ packages=(
   mypy-boto3-iot
   mypy-boto3-iot-data
   mypy-boto3-iot-jobs-data
-  mypy-boto3-iot-roborunner
   mypy-boto3-iot1click-devices
   mypy-boto3-iot1click-projects
   mypy-boto3-iotanalytics
@@ -210,7 +205,6 @@ packages=(
   mypy-boto3-lookoutvision
   mypy-boto3-m2
   mypy-boto3-machinelearning
-  #mypy-boto3-macie
   mypy-boto3-macie2
   mypy-boto3-managedblockchain
   mypy-boto3-managedblockchain-query
@@ -235,7 +229,7 @@ packages=(
   mypy-boto3-migrationhub-config
   mypy-boto3-migrationhuborchestrator
   mypy-boto3-migrationhubstrategy
-  mypy-boto3-mobile
+  # mypy-boto3-mobile
   mypy-boto3-mq
   mypy-boto3-mturk
   mypy-boto3-mwaa
@@ -365,25 +359,31 @@ packages=(
   mypy-boto3-xray)
 
 for package in "${packages[@]}"; do
-  echo "Updating ${package} ..."
-
-  old_version=$(awk -v pkg="$package" -F'"' '$1 ~ pkg " = " {print $4}' ${source_file})
+  package_short_name="${package#mypy-boto3-}"
+  old_version=$(awk -v pkg="\"$package_short_name\"" -F'"' '$0 ~ pkg {printf $4}' ${source_file})
   version=$(curl -s https://pypi.org/pypi/${package}/json | jq -r '.info.version')
 
+  echo "Updating ${package} from ${old_version} to ${version}"
+
   if [ "${version}" != "${old_version}" ]; then
-    url="https://pypi.io/packages/source/m/${package}/${package}-${version}.tar.gz"
+    url="https://pypi.io/packages/source/m/${package//-/_}/${package//-/_}-${version}.tar.gz"
     hash=$(nix-prefetch-url --type sha256 $url)
     sri_hash="$(nix hash to-sri --type sha256 $hash)"
 
-    awk -i inplace -v package="$package" -v new_version="$version" -v new_sha256="$sri_hash" '
-      $1 == package {
-        $5 = "\"" new_version "\"";
-        $6 = "\"" new_sha256 "\";";
+    awk -i inplace -v pkg="\"$package_short_name\"" -v new_version="$version" -v new_sha256="$sri_hash" '
+      # Match the line containing the package name
+      $0 ~ pkg && $0 ~ /buildMypyBoto3Package/ {
+        # Update the version
+        sub(/"[^"]+"/, "\"" new_version "\"", $3);
+        print;
+        # Update the next line with the new sha256
+        getline;
+        sub(/"[^"]+"/, "\"" new_sha256 "\"");
       }
-      {print}
-    ' $source_file
+      { print }
+    ' ${source_file}
 
-    nixpkgs-fmt ${source_file}
+    nixfmt ${source_file}
 
     git commit ${source_file} -m "python312Packages.${package}: ${old_version} -> ${version}"
   fi
diff --git a/pkgs/development/python-modules/mypy-protobuf/default.nix b/pkgs/development/python-modules/mypy-protobuf/default.nix
index 0010e40800ec0..0dca10652ac61 100644
--- a/pkgs/development/python-modules/mypy-protobuf/default.nix
+++ b/pkgs/development/python-modules/mypy-protobuf/default.nix
@@ -1,45 +1,57 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, protobuf
-, types-protobuf
-, grpcio-tools
-, pytestCheckHook
-, pythonOlder
+{
+  buildPythonPackage,
+  fetchPypi,
+  grpcio-tools,
+  lib,
+  mypy-protobuf,
+  protobuf,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  testers,
+  types-protobuf,
 }:
 
 buildPythonPackage rec {
   pname = "mypy-protobuf";
-  version = "3.5.0";
-  format = "pyproject";
+  version = "3.6.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-IfJw2gqXkqnax2sN9GPAJ+VhZkq2lzxZvk5NBk3+Z9w=";
+    hash = "sha256-AvJC6zQJ9miJ8rGjqlg1bsTZCc3Q+TEVYi6ecDZuyjw=";
   };
 
-  propagatedBuildInputs = [
+
+  pythonRelaxDeps = [ "protobuf" ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    grpcio-tools
     protobuf
     types-protobuf
-    grpcio-tools
   ];
 
   doCheck = false; # ModuleNotFoundError: No module named 'testproto'
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mypy_protobuf"
-  ];
+  pythonImportsCheck = [ "mypy_protobuf" ];
+
+  passthru.tests.version = testers.testVersion {
+    package = mypy-protobuf;
+    command = "${lib.getExe mypy-protobuf} --version";
+  };
 
-  meta = with lib; {
+  meta = {
+    changelog = "https://github.com/nipunn1313/mypy-protobuf/blob/v${version}/CHANGELOG.md";
     description = "Generate mypy stub files from protobuf specs";
-    homepage = "https://github.com/dropbox/mypy-protobuf";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ lnl7 ];
+    homepage = "https://github.com/nipunn1313/mypy-protobuf";
+    license = lib.licenses.asl20;
+    mainProgram = "protoc-gen-mypy";
+    maintainers = with lib.maintainers; [ lnl7 ];
   };
 }
diff --git a/pkgs/development/python-modules/mypy/default.nix b/pkgs/development/python-modules/mypy/default.nix
index c94b83bbb4fb9..0f264d2c86a1c 100644
--- a/pkgs/development/python-modules/mypy/default.nix
+++ b/pkgs/development/python-modules/mypy/default.nix
@@ -1,35 +1,38 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
-, pythonOlder
-
-# build-system
-, setuptools
-, types-psutil
-, types-setuptools
-, wheel
-
-# propagates
-, mypy-extensions
-, tomli
-, typing-extensions
-
-# optionals
-, lxml
-, psutil
-
-# tests
-, attrs
-, filelock
-, pytest-xdist
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gitUpdater,
+  pythonAtLeast,
+  pythonOlder,
+
+  # build-system
+  setuptools,
+  types-psutil,
+  types-setuptools,
+  wheel,
+
+  # propagates
+  mypy-extensions,
+  tomli,
+  typing-extensions,
+
+  # optionals
+  lxml,
+  psutil,
+
+  # tests
+  attrs,
+  filelock,
+  pytest-xdist,
+  pytestCheckHook,
+  nixosTests,
 }:
 
 buildPythonPackage rec {
   pname = "mypy";
-  version = "1.9.0";
+  version = "1.10.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -37,8 +40,11 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "python";
     repo = "mypy";
-    rev = "refs/tags/${version}";
-    hash = "sha256-uOOZX8bKRunTOgYVbmetu2m0B7kijxBgWdNiLCAhiQ4=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-joV+elRaAICNQHkYuYtTDjvOUkHPsRkG1OLRvdxeIHc=";
+  };
+  passthru.updateScript = gitUpdater {
+    rev-prefix = "v";
   };
 
   build-system = [
@@ -48,24 +54,16 @@ buildPythonPackage rec {
     types-setuptools
     typing-extensions
     wheel
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   dependencies = [
     mypy-extensions
     typing-extensions
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   optional-dependencies = {
-    dmypy = [
-      psutil
-    ];
-    reports = [
-      lxml
-    ];
+    dmypy = [ psutil ];
+    reports = [ lxml ];
   };
 
   # Compile mypy with mypyc, which makes mypy about 4 times faster. The compiled
@@ -76,17 +74,19 @@ buildPythonPackage rec {
   # when testing reduce optimisation level to reduce build time by 20%
   env.MYPYC_OPT_LEVEL = 1;
 
-  pythonImportsCheck = [
-    "mypy"
-    "mypy.api"
-    "mypy.fastparse"
-    "mypy.types"
-    "mypyc"
-    "mypyc.analysis"
-  ] ++ lib.optionals (!stdenv.hostPlatform.isi686) [
-    # ImportError: cannot import name 'map_instance_to_supertype' from partially initialized module 'mypy.maptype' (most likely due to a circular import)
-    "mypy.report"
-  ];
+  pythonImportsCheck =
+    [
+      "mypy"
+      "mypy.api"
+      "mypy.fastparse"
+      "mypy.types"
+      "mypyc"
+      "mypyc.analysis"
+    ]
+    ++ lib.optionals (!stdenv.hostPlatform.isi686) [
+      # ImportError: cannot import name 'map_instance_to_supertype' from partially initialized module 'mypy.maptype' (most likely due to a circular import)
+      "mypy.report"
+    ];
 
   nativeCheckInputs = [
     attrs
@@ -97,27 +97,36 @@ buildPythonPackage rec {
     tomli
   ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
-  disabledTests = [
-    # fails with typing-extensions>=4.10
-    # https://github.com/python/mypy/issues/17005
-    "test_runtime_typing_objects"
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    # requires distutils
-    "test_c_unit_test"
-  ];
-
-  disabledTestPaths = [
-    # fails to find tyoing_extensions
-    "mypy/test/testcmdline.py"
-    "mypy/test/testdaemon.py"
-    # fails to find setuptools
-    "mypyc/test/test_commandline.py"
-    # fails to find hatchling
-    "mypy/test/testpep561.py"
-  ] ++ lib.optionals stdenv.hostPlatform.isi686 [
-    # https://github.com/python/mypy/issues/15221
-    "mypyc/test/test_run.py"
-  ];
+  disabledTests =
+    [
+      # fails with typing-extensions>=4.10
+      # https://github.com/python/mypy/issues/17005
+      "test_runtime_typing_objects"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      # requires distutils
+      "test_c_unit_test"
+    ];
+
+  disabledTestPaths =
+    [
+      # fails to find tyoing_extensions
+      "mypy/test/testcmdline.py"
+      "mypy/test/testdaemon.py"
+      # fails to find setuptools
+      "mypyc/test/test_commandline.py"
+      # fails to find hatchling
+      "mypy/test/testpep561.py"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isi686 [
+      # https://github.com/python/mypy/issues/15221
+      "mypyc/test/test_run.py"
+    ];
+
+  passthru.tests = {
+    # Failing typing checks on the test-driver result in channel blockers.
+    inherit (nixosTests) nixos-test-driver;
+  };
 
   meta = with lib; {
     description = "Optional static typing for Python";
diff --git a/pkgs/development/python-modules/mypy/extensions.nix b/pkgs/development/python-modules/mypy/extensions.nix
index e8622b84eb7c9..3282a6b6e8634 100644
--- a/pkgs/development/python-modules/mypy/extensions.nix
+++ b/pkgs/development/python-modules/mypy/extensions.nix
@@ -1,10 +1,11 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, typing
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  typing,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,22 +22,16 @@ buildPythonPackage rec {
   propagatedBuildInputs = lib.optional (pythonOlder "3.5") typing;
 
   # make the testsuite run with pytest, so we can disable individual tests
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests/testextensions.py"
-  ];
+  pytestFlagsArray = [ "tests/testextensions.py" ];
 
   disabledTests = lib.optionals (pythonAtLeast "3.11") [
     # https://github.com/python/mypy_extensions/issues/24
     "test_typeddict_errors"
   ];
 
-  pythonImportsCheck = [
-    "mypy_extensions"
-  ];
+  pythonImportsCheck = [ "mypy_extensions" ];
 
   meta = with lib; {
     description = "Experimental type system extensions for programs checked with the mypy typechecker";
diff --git a/pkgs/development/python-modules/mysql-connector/default.nix b/pkgs/development/python-modules/mysql-connector/default.nix
index 575c438eb5514..e234bbef0e18d 100644
--- a/pkgs/development/python-modules/mysql-connector/default.nix
+++ b/pkgs/development/python-modules/mysql-connector/default.nix
@@ -1,14 +1,13 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, django
-, dnspython
-, fetchFromGitHub
-, protobuf
-, pythonOlder
-, mysql80
-, openssl
-, pkgs
+{
+  lib,
+  buildPythonPackage,
+  dnspython,
+  fetchFromGitHub,
+  protobuf,
+  pythonOlder,
+  mysql80,
+  openssl,
+  pkgs,
 }:
 
 buildPythonPackage rec {
@@ -41,10 +40,7 @@ buildPythonPackage rec {
     ./0001-Revert-Fix-MacOS-wheels-platform-tag.patch
   ];
 
-  nativeBuildInputs = [
-    mysql80
-  ];
-
+  nativeBuildInputs = [ mysql80 ];
 
   propagatedBuildInputs = [
     dnspython
@@ -54,15 +50,13 @@ buildPythonPackage rec {
     pkgs.zstd
   ];
 
-  pythonImportsCheck = [
-    "mysql"
-  ];
+  pythonImportsCheck = [ "mysql" ];
 
   # Tests require a running MySQL instance
   doCheck = false;
 
   meta = with lib; {
-    description = "A MySQL driver";
+    description = "MySQL driver";
     longDescription = ''
       A MySQL driver that does not depend on MySQL C client libraries and
       implements the DB API v2.0 specification.
@@ -70,6 +64,8 @@ buildPythonPackage rec {
     homepage = "https://github.com/mysql/mysql-connector-python";
     changelog = "https://raw.githubusercontent.com/mysql/mysql-connector-python/${version}/CHANGES.txt";
     license = licenses.gpl2Only;
-    maintainers = with maintainers; [ neosimsim turion ];
+    maintainers = with maintainers; [
+      neosimsim
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/mysqlclient/default.nix b/pkgs/development/python-modules/mysqlclient/default.nix
index e27ee3f7c7be2..e15e7545b75b1 100644
--- a/pkgs/development/python-modules/mysqlclient/default.nix
+++ b/pkgs/development/python-modules/mysqlclient/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, libmysqlclient
-, pkg-config
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  libmysqlclient,
+  pkg-config,
 }:
 
 buildPythonPackage rec {
@@ -10,13 +11,9 @@ buildPythonPackage rec {
   version = "2.2.4";
   format = "setuptools";
 
-  nativeBuildInputs = [
-    pkg-config
-  ];
+  nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [
-    libmysqlclient
-  ];
+  buildInputs = [ libmysqlclient ];
 
   # Tests need a MySQL database
   doCheck = false;
diff --git a/pkgs/development/python-modules/myst-docutils/default.nix b/pkgs/development/python-modules/myst-docutils/default.nix
index 66c07489dfaa0..6f3761d95fb03 100644
--- a/pkgs/development/python-modules/myst-docutils/default.nix
+++ b/pkgs/development/python-modules/myst-docutils/default.nix
@@ -1,47 +1,72 @@
-{ lib
-, buildPythonPackage
-, docutils
-, fetchPypi
-, flit-core
-, jinja2
-, markdown-it-py
-, mdit-py-plugins
-, pythonOlder
-, pyyaml
-, typing-extensions
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  defusedxml,
+  docutils,
+  fetchFromGitHub,
+  flit-core,
+  jinja2,
+  markdown-it-py,
+  mdit-py-plugins,
+  pytest-param-files,
+  pytest-regressions,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  sphinx-pytest,
+  sphinx,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "myst-docutils";
-  version = "2.0.0";
-  format = "pyproject";
+  version = "4.0.0";
+  pyproject = true;
 
-  src = fetchPypi {
-    pname = "myst_docutils";
-    inherit version;
-    hash = "sha256-WmmPEg+bINmeId+pjR6bbp8qzjfSXfEel+sQEdPIu8Y=";
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "executablebooks";
+    repo = "MyST-Parser";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-QbFENC/Msc4pkEOPdDztjyl+2TXtAbMTHPJNAsUB978=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     docutils
     jinja2
     markdown-it-py
     mdit-py-plugins
     pyyaml
+    sphinx
     typing-extensions
   ];
 
+  nativeCheckInputs = [
+    beautifulsoup4
+    defusedxml
+    pytest-param-files
+    pytest-regressions
+    pytestCheckHook
+    sphinx-pytest
+  ];
+
   pythonImportsCheck = [ "myst_parser" ];
 
+  disabledTests = [
+    # Tests require linkify
+    "test_cmdline"
+    "test_extended_syntaxes"
+  ];
+
   meta = with lib; {
-    description = "An extended commonmark compliant parser, with bridges to docutils/sphinx.";
+    description = "Extended commonmark compliant parser, with bridges to docutils/sphinx";
     homepage = "https://github.com/executablebooks/MyST-Parser";
+    changelog = "https://github.com/executablebooks/MyST-Parser/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ dpausp ];
-    broken = pythonOlder "3.8"; # dependency networkx requires 3.8
   };
 }
diff --git a/pkgs/development/python-modules/myst-nb/default.nix b/pkgs/development/python-modules/myst-nb/default.nix
index 8f23ad5dee84b..520919e7fa461 100644
--- a/pkgs/development/python-modules/myst-nb/default.nix
+++ b/pkgs/development/python-modules/myst-nb/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, flit-core
-, importlib-metadata
-, ipython
-, jupyter-cache
-, nbclient
-, myst-parser
-, nbformat
-, pyyaml
-, sphinx
-, sphinx-togglebutton
-, typing-extensions
-, ipykernel
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  flit-core,
+  importlib-metadata,
+  ipython,
+  jupyter-cache,
+  nbclient,
+  myst-parser,
+  nbformat,
+  pyyaml,
+  sphinx,
+  sphinx-togglebutton,
+  typing-extensions,
+  ipykernel,
 }:
 
 buildPythonPackage rec {
   pname = "myst-nb";
-  version = "1.1.0";
+  version = "1.1.2";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -26,12 +27,10 @@ buildPythonPackage rec {
   src = fetchPypi {
     inherit version;
     pname = "myst_nb";
-    hash = "sha256-kniEDoRPXXgLWsxUAMv2PZfKrM+OtEKlXr2aA+JSLV4=";
+    hash = "sha256-lhtABWVwKcqJiSpMde2/CFbFTOr2FyNotGv3Z2wfdwA=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     importlib-metadata
@@ -53,10 +52,10 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A Jupyter Notebook Sphinx reader built on top of the MyST markdown parser";
+    description = "Jupyter Notebook Sphinx reader built on top of the MyST markdown parser";
     homepage = "https://github.com/executablebooks/MyST-NB";
     changelog = "https://github.com/executablebooks/MyST-NB/raw/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/myst-parser/default.nix b/pkgs/development/python-modules/myst-parser/default.nix
index e485b768a7507..c17dfe1510e0f 100644
--- a/pkgs/development/python-modules/myst-parser/default.nix
+++ b/pkgs/development/python-modules/myst-parser/default.nix
@@ -1,26 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, flit-core
-, pythonOlder
-, docutils
-, jinja2
-, markdown-it-py
-, mdit-py-plugins
-, pyyaml
-, sphinx
-, typing-extensions
-, beautifulsoup4
-, pytest-param-files
-, pytest-regressions
-, sphinx-pytest
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pythonOlder,
+  defusedxml,
+  docutils,
+  jinja2,
+  markdown-it-py,
+  mdit-py-plugins,
+  pyyaml,
+  sphinx,
+  typing-extensions,
+  beautifulsoup4,
+  pytest-param-files,
+  pytest-regressions,
+  sphinx-pytest,
+  pytestCheckHook,
 }:
-
 buildPythonPackage rec {
   pname = "myst-parser";
-  version = "2.0.0";
+  version = "3.0.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -29,19 +29,13 @@ buildPythonPackage rec {
     owner = "executablebooks";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-1BW7Z+0rs5Up+VZ3vDygnhLzE9Y2BqEMnTnflboweu0=";
+    hash = "sha256-TKo1lanZNM+XrOKZ0ZmtlhEPoAYQUspkyHXZm1wNTFE=";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "myst-parser-sphinx7.2-compat.patch";
-      url = "https://github.com/executablebooks/MyST-Parser/commit/4f670fc04c438b57a9d4014be74e9a62cc0deba4.patch";
-      hash = "sha256-FCvFSsD7qQwqWjSW7R4Gx+E2jaGkifSZqaRbAglt9Yw=";
-    })
+  nativeBuildInputs = [
+    flit-core
   ];
 
-  nativeBuildInputs = [ flit-core ];
-
   propagatedBuildInputs = [
     docutils
     jinja2
@@ -54,31 +48,23 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     beautifulsoup4
+    defusedxml
     pytest-param-files
     pytest-regressions
     sphinx-pytest
     pytestCheckHook
   ] ++ markdown-it-py.optional-dependencies.linkify;
 
-  pythonImportsCheck = [
-    "myst_parser"
-  ];
-
   disabledTests = [
-    # AssertionError due to different files
-    "test_basic"
-    "test_footnotes"
-    "test_gettext_html"
-    "test_fieldlist_extension"
-    # docutils 0.19 expectation mismatches
-    "test_docutils_roles"
-    # sphinx 6.0 expectation mismatches
-    "test_sphinx_directives"
-    # sphinx 5.3 expectation mismatches
-    "test_render"
-    "test_includes"
+    # sphinx 7.4 compat
+    "test_gettext"
+    "test_gettext_additional_targets"
   ];
 
+  pythonImportsCheck = [ "myst_parser" ];
+
+  pythonRelaxDeps = [ "docutils" ];
+
   meta = with lib; {
     description = "Sphinx and Docutils extension to parse MyST";
     homepage = "https://myst-parser.readthedocs.io/";
diff --git a/pkgs/development/python-modules/n3fit/default.nix b/pkgs/development/python-modules/n3fit/default.nix
deleted file mode 100644
index 5c8b06b74a658..0000000000000
--- a/pkgs/development/python-modules/n3fit/default.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{ lib
-, buildPythonPackage
-, hyperopt
-, keras
-, nnpdf
-, psutil
-, tensorflow
-, validphys2
-}:
-
-buildPythonPackage rec {
-  pname = "n3fit";
-  version = "4.0";
-  format = "setuptools";
-
-  inherit (nnpdf) src;
-
-  prePatch = ''
-    cd n3fit
-  '';
-
-  postPatch = ''
-    substituteInPlace src/n3fit/version.py \
-      --replace '= __give_git()' '= "'$version'"'
-  '';
-
-  propagatedBuildInputs = [
-    hyperopt
-    keras
-    psutil
-    tensorflow
-    validphys2
-  ];
-
-  postInstall = ''
-    for prog in "$out"/bin/*; do
-      wrapProgram "$prog" --set PYTHONPATH "$PYTHONPATH:$(toPythonPath "$out")"
-    done
-  '';
-
-  doCheck = false; # no tests
-  pythonImportsCheck = [ "n3fit" ];
-
-  meta = with lib; {
-    description = "NNPDF fitting framework";
-    homepage = "https://docs.nnpdf.science";
-    inherit (nnpdf.meta) license;
-    maintainers = with maintainers; [ veprbl ];
-  };
-}
diff --git a/pkgs/development/python-modules/nad-receiver/default.nix b/pkgs/development/python-modules/nad-receiver/default.nix
index a53ff6f84f221..1eb1000f02598 100644
--- a/pkgs/development/python-modules/nad-receiver/default.nix
+++ b/pkgs/development/python-modules/nad-receiver/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, pyserial
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  pyserial,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-jRMk/yMA48ei+g/33+mMYwfwixaKTMYcU/z/VOoJbvY=";
   };
 
-  propagatedBuildInputs = [
-    pyserial
-  ];
+  propagatedBuildInputs = [ pyserial ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "nad_receiver" ];
 
diff --git a/pkgs/development/python-modules/nagiosplugin/default.nix b/pkgs/development/python-modules/nagiosplugin/default.nix
index a7e7b016577de..4ba887fb71d7f 100644
--- a/pkgs/development/python-modules/nagiosplugin/default.nix
+++ b/pkgs/development/python-modules/nagiosplugin/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, pytestCheckHook
-, pythonOlder
-, twine
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  twine,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-vOr67DWfAyOT3dVgrizI0WNhODPsY8k85xifhZBOU9Y=";
   };
 
-  nativeBuildInputs = [
-    twine
-  ];
+  nativeBuildInputs = [ twine ];
 
   nativeCheckInputs = [
     numpy
@@ -33,9 +32,7 @@ buildPythonPackage rec {
     "test_check_users"
   ];
 
-  pythonImportsCheck = [
-    "nagiosplugin"
-  ];
+  pythonImportsCheck = [ "nagiosplugin" ];
 
   meta = with lib; {
     description = "Python class library which helps with writing Nagios (Icinga) compatible plugins";
diff --git a/pkgs/development/python-modules/naked/default.nix b/pkgs/development/python-modules/naked/default.nix
index 7a37d66861aa5..adabd6c6f5aa0 100644
--- a/pkgs/development/python-modules/naked/default.nix
+++ b/pkgs/development/python-modules/naked/default.nix
@@ -1,13 +1,15 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, requests
-, pyyaml
-, setuptools
-, wheel
-, nodejs
-, ruby
-, pytestCheckHook
+{
+  buildPythonPackage,
+  python,
+  fetchFromGitHub,
+  lib,
+  requests,
+  pyyaml,
+  setuptools,
+  wheel,
+  nodejs,
+  ruby,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -24,20 +26,29 @@ buildPythonPackage rec {
 
   postPatch = ''
     # fix hardcoded absolute paths
-    substituteInPlace **/*.* \
-      --replace /Users/ces/Desktop/code/naked /build/source
+    substituteInPlace tests/test_SYSTEM*.py \
+      --replace-fail /Users/ces/Desktop/code/naked/tests/ "$PWD"/tests/
+    substituteInPlace lib/Naked/toolshed/c/*.c \
+      --replace-fail /Users/ces/Desktop/code/naked/lib/ $out/${python.sitePackages}/
   '';
 
-  nativeBuildInputs = [ wheel setuptools ];
+  nativeBuildInputs = [
+    wheel
+    setuptools
+  ];
 
   propagatedBuildInputs = [
     requests
     pyyaml
   ];
 
-  nativeCheckInputs = [ pytestCheckHook nodejs ruby ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    nodejs
+    ruby
+  ];
 
-  preCheck =''
+  preCheck = ''
     cd tests
 
     PATH=$PATH:$out/bin
@@ -94,7 +105,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "Naked" ];
 
   meta = with lib; {
-    description = "A Python command line application framework";
+    description = "Python command line application framework";
     homepage = "https://github.com/chrissimpkins/naked";
     downloadPage = "https://github.com/chrissimpkins/naked/tags";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/name-that-hash/default.nix b/pkgs/development/python-modules/name-that-hash/default.nix
index e68764b13ff7d..ae094b0a142cc 100644
--- a/pkgs/development/python-modules/name-that-hash/default.nix
+++ b/pkgs/development/python-modules/name-that-hash/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, click
-, rich
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  click,
+  rich,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     substituteInPlace pyproject.toml --replace 'rich = ">=9.9,<11.0"' 'rich = ">=9.9"'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     click
diff --git a/pkgs/development/python-modules/namedlist/default.nix b/pkgs/development/python-modules/namedlist/default.nix
index 86d5a9f5b3b27..f4ddbb7dd7ab6 100644
--- a/pkgs/development/python-modules/namedlist/default.nix
+++ b/pkgs/development/python-modules/namedlist/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-NPifyZJZLICzmnCeE27c9B6hfyS6Mer4SjFKAsi5vO8=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   patches = [
     # Deprecation warning using collections.abc, https://gitlab.com/ericvsmith/namedlist/-/merge_requests/1
@@ -36,9 +35,7 @@ buildPythonPackage rec {
     substituteInPlace test/test_namedlist.py --replace "unittest.main()" ""
   '';
 
-  pythonImportsCheck = [
-    "namedlist"
-  ];
+  pythonImportsCheck = [ "namedlist" ];
 
   disabledTests = [
     # AttributeError: module 'collections' has no attribute 'Container'
diff --git a/pkgs/development/python-modules/nameko/default.nix b/pkgs/development/python-modules/nameko/default.nix
index 93bc03bcde95e..11730ac664879 100644
--- a/pkgs/development/python-modules/nameko/default.nix
+++ b/pkgs/development/python-modules/nameko/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 
-# install_requires
-, dnspython
-, eventlet
-, kombu
-, mock
-, packaging
-, path
-, pyyaml
-, requests
-, setuptools
-, six
-, werkzeug
-, wrapt
+  # install_requires
+  dnspython,
+  eventlet,
+  kombu,
+  mock,
+  packaging,
+  path,
+  pyyaml,
+  requests,
+  setuptools,
+  six,
+  werkzeug,
+  wrapt,
 }:
 
 buildPythonPackage rec {
@@ -31,14 +32,12 @@ buildPythonPackage rec {
   };
 
   postPatch = ''
-    substituteInPlace setup.py --replace "path.py" "path"
+    substituteInPlace setup.py --replace-fail "path.py" "path"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dnspython
     eventlet
     kombu
@@ -57,12 +56,10 @@ buildPythonPackage rec {
   # and most of the tests are network based
   doCheck = false;
 
-  pythonImportsCheck = [
-    "nameko"
-  ];
+  pythonImportsCheck = [ "nameko" ];
 
   meta = with lib; {
-    description = "A microservices framework that lets service developers concentrate on application logic and encourages testability";
+    description = "Microservices framework that lets service developers concentrate on application logic and encourages testability";
     mainProgram = "nameko";
     homepage = "https://www.nameko.io/";
     changelog = "https://github.com/nameko/nameko/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/nameparser/default.nix b/pkgs/development/python-modules/nameparser/default.nix
index 370a5300a04e5..dffd114bd0754 100644
--- a/pkgs/development/python-modules/nameparser/default.nix
+++ b/pkgs/development/python-modules/nameparser/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,19 +18,15 @@ buildPythonPackage rec {
     hash = "sha256-qiQArXHM+AcGdbQDEaJXyTRln5GFSxVOG6bCZHYcBJ0=";
   };
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  pythonImportsCheck = [
-    "nameparser"
-  ];
+  pythonImportsCheck = [ "nameparser" ];
 
   meta = with lib; {
     description = "Module for parsing human names into their individual components";
     homepage = "https://github.com/derek73/python-nameparser";
     changelog = "https://github.com/derek73/python-nameparser/releases/tag/v${version}";
     license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/names/default.nix b/pkgs/development/python-modules/names/default.nix
index 3661e7f0d1192..c4648e171a728 100644
--- a/pkgs/development/python-modules/names/default.nix
+++ b/pkgs/development/python-modules/names/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
 
-# pythonPackages
-, pytest
+  # pythonPackages
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     sha256 = "0jfn11bl05k3qkqw0f4vi2i2lhllxdrbb1732qiisdy9fbvv8611";
   };
 
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
   checkPhase = ''
     pytest
@@ -31,8 +30,6 @@ buildPythonPackage rec {
     mainProgram = "names";
     homepage = "https://github.com/treyhunner/names";
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [
-      kamadorueda
-    ];
+    maintainers = with lib.maintainers; [ kamadorueda ];
   };
 }
diff --git a/pkgs/development/python-modules/namex/default.nix b/pkgs/development/python-modules/namex/default.nix
new file mode 100644
index 0000000000000..4e7fadf847962
--- /dev/null
+++ b/pkgs/development/python-modules/namex/default.nix
@@ -0,0 +1,36 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  wheel,
+}:
+
+buildPythonPackage rec {
+  pname = "namex";
+  version = "0.0.8";
+  pyproject = true;
+
+  # Not using fetchFromGitHub because the repo does not have any tag/release.
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-MqUPbFZcC7EKp2KYyVlQer3A6FDv4IXcOPNED8s6qQs=";
+  };
+
+  build-system = [
+    setuptools
+    wheel
+  ];
+
+  pythonImportsCheck = [ "namex" ];
+
+  # This packages has no tests.
+  doCheck = false;
+
+  meta = {
+    description = "Simple utility to separate the implementation of your Python package and its public API surface";
+    homepage = "https://github.com/fchollet/namex";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/pkgs/development/python-modules/nampa/default.nix b/pkgs/development/python-modules/nampa/default.nix
index abeedb716ad56..cc31702c94aa5 100644
--- a/pkgs/development/python-modules/nampa/default.nix
+++ b/pkgs/development/python-modules/nampa/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, future
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  future,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -26,20 +27,14 @@ buildPythonPackage rec {
       --replace "0.1.1" "${version}"
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    future
-  ];
+  dependencies = [ future ];
 
   # Not used for binaryninja as plugin
   doCheck = false;
 
-  pythonImportsCheck = [
-    "nampa"
-  ];
+  pythonImportsCheck = [ "nampa" ];
 
   meta = with lib; {
     description = "Python implementation of the FLIRT technology";
diff --git a/pkgs/development/python-modules/nanobind/default.nix b/pkgs/development/python-modules/nanobind/default.nix
index 27460b65a8dba..66df98f351bce 100644
--- a/pkgs/development/python-modules/nanobind/default.nix
+++ b/pkgs/development/python-modules/nanobind/default.nix
@@ -1,43 +1,50 @@
 {
   lib,
   buildPythonPackage,
-  pythonOlder,
   fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
   cmake,
-  eigen,
   ninja,
-  scikit-build,
+  pathspec,
+  scikit-build-core,
+
+  # dependencies
+  eigen,
+
+  # tests
   pytestCheckHook,
   numpy,
   scipy,
   torch,
+  tensorflow-bin,
   jax,
   jaxlib,
-  tensorflow,
-  setuptools,
 }:
 buildPythonPackage rec {
   pname = "nanobind";
-  version = "1.9.2";
+  version = "2.1.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "wjakob";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-6swDqw7sEYOawQbNWD8VfSQoi+9wjhOhOOwPPkahDas=";
+    repo = "nanobind";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-AO/EHx2TlXidalhPb+xuUchaek4ki7fDExu2foBgUp0=";
     fetchSubmodules = true;
   };
 
   disabled = pythonOlder "3.8";
 
-  nativeBuildInputs = [
+  build-system = [
     cmake
     ninja
-    scikit-build
-    setuptools
+    pathspec
+    scikit-build-core
   ];
-  buildInputs = [ eigen ];
+
+  dependencies = [ eigen ];
   dontUseCmakeBuildDir = true;
 
   preCheck = ''
@@ -50,12 +57,12 @@ buildPythonPackage rec {
     numpy
     scipy
     torch
-    tensorflow
+    tensorflow-bin
     jax
     jaxlib
   ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://github.com/wjakob/nanobind";
     changelog = "https://github.com/wjakob/nanobind/blob/${src.rev}/docs/changelog.rst";
     description = "Tiny and efficient C++/Python bindings";
@@ -66,7 +73,7 @@ buildPythonPackage rec {
       more efficient: bindings compile in a shorter amount of time, produce
       smaller binaries, and have better runtime performance.
     '';
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ parras ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ parras ];
   };
 }
diff --git a/pkgs/development/python-modules/nanoemoji/default.nix b/pkgs/development/python-modules/nanoemoji/default.nix
new file mode 100644
index 0000000000000..9d2dfffcaf9f1
--- /dev/null
+++ b/pkgs/development/python-modules/nanoemoji/default.nix
@@ -0,0 +1,101 @@
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pytestCheckHook,
+  setuptools,
+  setuptools-scm,
+  resvg,
+  pngquant,
+  absl-py,
+  fonttools,
+  lxml,
+  ninja,
+  picosvg,
+  pillow,
+  regex,
+  toml,
+  tomlkit,
+  ufo2ft,
+  ufolib2,
+  zopfli,
+}:
+
+buildPythonPackage rec {
+  pname = "nanoemoji";
+  version = "0.15.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "googlefonts";
+    repo = "nanoemoji";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-P/lT0PnjTdYzyttICzszu4OL5kj+X8GHZ8doL3tpXQM=";
+  };
+
+  patches = [
+    # this is necessary because the tests clear PATH/PYTHONPATH otherwise
+    ./test-pythonpath.patch
+    # minor difference in the test output, most likely due to different dependency versions
+    ./fix-test.patch
+  ];
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  nativeBuildInputs = [
+    pngquant
+    resvg
+  ];
+
+  # these two packages are just prebuilt wheels containing the respective binaries
+  pythonRemoveDeps = [
+    "pngquant-cli"
+    "resvg-cli"
+  ];
+
+  dependencies = [
+    absl-py
+    fonttools
+    lxml
+    ninja
+    picosvg
+    pillow
+    regex
+    toml
+    tomlkit
+    ufo2ft
+    ufolib2
+    zopfli
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    ninja
+    picosvg
+  ];
+
+  makeWrapperArgs = [
+    "--prefix PATH : ${
+      lib.makeBinPath [
+        pngquant
+        resvg
+      ]
+    }"
+  ];
+
+  preCheck = ''
+    # make sure the built binaries (nanoemoji/maximum_color) can be found by the test
+    export PATH="$out/bin:$PATH"
+  '';
+
+  meta = with lib; {
+    description = "Wee tool to build color fonts";
+    homepage = "https://github.com/googlefonts/nanoemoji";
+    changelog = "https://github.com/googlefonts/nanoemoji/releases/tag/v${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ _999eagle ];
+  };
+}
diff --git a/pkgs/development/python-modules/nanoemoji/fix-test.patch b/pkgs/development/python-modules/nanoemoji/fix-test.patch
new file mode 100644
index 0000000000000..4582df9ea5b8e
--- /dev/null
+++ b/pkgs/development/python-modules/nanoemoji/fix-test.patch
@@ -0,0 +1,24 @@
+--- a/tests/proportional_cbdt.ttx
++++ b/tests/proportional_cbdt.ttx
+@@ -13,7 +13,7 @@
+     <mtx name=".notdef" width="0" lsb="5"/>
+     <mtx name=".space" width="0" lsb="0"/>
+     <mtx name="e000" width="110" lsb="0"/>
+-    <mtx name="e001" width="73" lsb="0"/>
++    <mtx name="e001" width="74" lsb="0"/>
+   </hmtx>
+ 
+   <cmap>
+@@ -79,10 +79,10 @@
+       <cbdt_bitmap_format_17 name="e001">
+         <SmallGlyphMetrics>
+           <height value="128"/>
+-          <width value="85"/>
++          <width value="86"/>
+           <BearingX value="0"/>
+           <BearingY value="104"/>
+-          <Advance value="85"/>
++          <Advance value="86"/>
+         </SmallGlyphMetrics>
+         <extfileimagedata value="e001.png"/>
+       </cbdt_bitmap_format_17>
diff --git a/pkgs/development/python-modules/nanoemoji/test-pythonpath.patch b/pkgs/development/python-modules/nanoemoji/test-pythonpath.patch
new file mode 100644
index 0000000000000..12733224560c9
--- /dev/null
+++ b/pkgs/development/python-modules/nanoemoji/test-pythonpath.patch
@@ -0,0 +1,14 @@
+--- a/tests/test_helper.py
++++ b/tests/test_helper.py
+@@ -269,9 +269,9 @@
+     print("subprocess:", " ".join(cmd))  # very useful on failure
+     env = {
+         # We may need to find nanoemoji and other pip-installed cli tools
+-        "PATH": str(Path(shutil.which("nanoemoji")).parent),
++        "PATH": str(Path(shutil.which("nanoemoji")).parent) + ":" + os.environ["PATH"],
+         # We may need to find test modules
+-        "PYTHONPATH": os.pathsep.join((str(Path(__file__).parent),)),
++        "PYTHONPATH": os.pathsep.join((str(Path(__file__).parent),)) + ":" + os.environ["PYTHONPATH"],
+     }
+     # Needed for windows CI to function; ref https://github.com/appveyor/ci/issues/1995
+     if "SYSTEMROOT" in os.environ:
diff --git a/pkgs/development/python-modules/nanoid/default.nix b/pkgs/development/python-modules/nanoid/default.nix
index 5054756a30923..1570c28f9e66a 100644
--- a/pkgs/development/python-modules/nanoid/default.nix
+++ b/pkgs/development/python-modules/nanoid/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,18 +17,14 @@ buildPythonPackage rec {
 
   doCheck = false; # tests not in sdist, git not tagged
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "nanoid"
-  ];
+  pythonImportsCheck = [ "nanoid" ];
 
   meta = with lib; {
-    description = "A tiny, secure, URL-friendly, unique string ID generator for Python";
+    description = "Tiny, secure, URL-friendly, unique string ID generator for Python";
     homepage = "https://github.com/puyuan/py-nanoid";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/nanoleaf/default.nix b/pkgs/development/python-modules/nanoleaf/default.nix
index a77998c994c55..59f9e82d48c4b 100644
--- a/pkgs/development/python-modules/nanoleaf/default.nix
+++ b/pkgs/development/python-modules/nanoleaf/default.nix
@@ -1,26 +1,44 @@
-{ lib, buildPythonPackage, fetchPypi, requests }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "nanoleaf";
   version = "0.4.1";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "17dmxibfjmwnrs6ng5cmvfis3cv6iw267xb8n1pijy15y9dz0s8s";
+    hash = "sha256-GmnwW/IleBlvsGj1YwSPZrOho9uVlWeNzpZX6VbstZ0=";
   };
 
   prePatch = ''
     sed -i '/^gitVersion =/d' setup.py
-    substituteInPlace setup.py --replace 'gitVersion' '"${version}"'
+    substituteInPlace setup.py \
+      --replace-fail 'gitVersion' '"${version}"'
   '';
 
-  propagatedBuildInputs = [ requests ];
+  build-system = [ setuptools ];
+
+  dependencies = [ requests ];
+
+  # Module has no test
+  doCheck = false;
+
+  pythonImportsCheck = [ "nanoleaf" ];
 
   meta = with lib; {
-    description = "A python interface for Nanoleaf Aurora lighting";
+    description = "Module for interacting with Nanoleaf Aurora lighting";
     homepage = "https://github.com/software-2/nanoleaf";
+    changelog = "https://github.com/software-2/nanoleaf/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/nanomsg-python/default.nix b/pkgs/development/python-modules/nanomsg-python/default.nix
index 06b2ed5f634f2..1125b88c0e4ea 100644
--- a/pkgs/development/python-modules/nanomsg-python/default.nix
+++ b/pkgs/development/python-modules/nanomsg-python/default.nix
@@ -1,22 +1,35 @@
-{ lib, buildPythonPackage, fetchFromGitHub, nanomsg }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  nanomsg,
+  setuptools,
+  pythonOlder,
+}:
 
 buildPythonPackage {
   pname = "nanomsg-python";
   version = "1.0.20190114";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "tonysimpson";
     repo = "nanomsg-python";
     rev = "3acd9160f90f91034d4a43ce603aaa19fbaf1f2e";
-    sha256 = "1qgybcpmm9xxrn39alcgdcpvwphgm1glkbnwx0ljpz4nd1jsnyrl";
+    hash = "sha256-NHurZWiW/Csp6NyuSV+oD16+L2uPUZWGzb2nWi9b/uE=";
   };
 
+  build-system = [ setuptools ];
+
   buildInputs = [ nanomsg ];
 
   # Tests requires network connections
   doCheck = false;
 
+  pythonImportsCheck = [ "nanomsg" ];
+
   meta = with lib; {
     description = "Bindings for nanomsg";
     homepage = "https://github.com/tonysimpson/nanomsg-python";
diff --git a/pkgs/development/python-modules/nanotime/default.nix b/pkgs/development/python-modules/nanotime/default.nix
index aeabc540eb005..d41126916b0bb 100644
--- a/pkgs/development/python-modules/nanotime/default.nix
+++ b/pkgs/development/python-modules/nanotime/default.nix
@@ -1,24 +1,31 @@
-{ lib, buildPythonPackage, fetchPypi, nose }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pythonOlder,
+}:
 
 buildPythonPackage rec {
   pname = "nanotime";
   version = "0.5.2";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c7cc231fc5f6db401b448d7ab51c96d0a4733f4b69fabe569a576f89ffdf966b";
+    hash = "sha256-x8wjH8X220AbRI16tRyW0KRzP0tp+r5Wmldvif/flms=";
   };
 
-  nativeCheckInputs = [ nose ];
-
-  checkPhase = ''
-    nosetests
-  '';
+  build-system = [ setuptools ];
 
-  # tests currently fail
+  # Tests currently failing
+  # https://github.com/jbenet/nanotime/issues/2
   doCheck = false;
 
+  pythonImportsCheck = [ "nanotime" ];
+
   meta = with lib; {
     description = "Provides a time object that keeps time as the number of nanoseconds since the UNIX epoch";
     homepage = "https://github.com/jbenet/nanotime/tree/master/python";
diff --git a/pkgs/development/python-modules/napalm/default.nix b/pkgs/development/python-modules/napalm/default.nix
index 2c3f2b76f0ae7..c6eeef191ac4e 100644
--- a/pkgs/development/python-modules/napalm/default.nix
+++ b/pkgs/development/python-modules/napalm/default.nix
@@ -1,36 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build-system
-, setuptools
-, cffi
+  # build-system
+  setuptools,
+  cffi,
 
-# dependencies
-, future
-, jinja2
-, junos-eznc
-, lxml
-, ncclient
-, netaddr
-, netmiko
-, netutils
-, paramiko
-, pyeapi
-, pyyaml
-, requests
-, scp
-, textfsm
-, ttp
-, ttp-templates
-, typing-extensions
+  # dependencies
+  jinja2,
+  junos-eznc,
+  lxml,
+  ncclient,
+  netaddr,
+  netmiko,
+  netutils,
+  paramiko,
+  pyeapi,
+  pyyaml,
+  requests,
+  scp,
+  textfsm,
+  ttp,
+  ttp-templates,
+  typing-extensions,
 
-# tests
-, pytestCheckHook
-, ddt
-, mock
- }:
+  # tests
+  pytestCheckHook,
+  ddt,
+  mock,
+}:
 
 buildPythonPackage rec {
   pname = "napalm";
@@ -46,9 +46,7 @@ buildPythonPackage rec {
     hash = "sha256-Abw3h69qTFwOOFeAfivqAIWLozErJ1yZZfx7CbMy1AI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     cffi
@@ -72,11 +70,14 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  nativeCheckInputs = [ pytestCheckHook mock ddt ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    mock
+    ddt
+  ];
 
   meta = with lib; {
-    description =
-      "Network Automation and Programmability Abstraction Layer with Multivendor support";
+    description = "Network Automation and Programmability Abstraction Layer with Multivendor support";
     homepage = "https://github.com/napalm-automation/napalm";
     license = licenses.asl20;
     maintainers = with maintainers; [ ] ++ teams.c3d2.members;
diff --git a/pkgs/development/python-modules/napalm/hp-procurve.nix b/pkgs/development/python-modules/napalm/hp-procurve.nix
index 6402005bed6ef..a44fe0becfe31 100644
--- a/pkgs/development/python-modules/napalm/hp-procurve.nix
+++ b/pkgs/development/python-modules/napalm/hp-procurve.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, napalm
-, netmiko
-, pip
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  napalm,
+  netmiko,
+  pip,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -29,21 +30,13 @@ buildPythonPackage rec {
       --replace "--cov=napalm_procurve --cov-report term-missing -vs --pylama" ""
   '';
 
-  nativeBuildInputs = [
-    pip
-  ];
+  nativeBuildInputs = [ pip ];
 
-  buildInputs = [
-    napalm
-  ];
+  buildInputs = [ napalm ];
 
-  propagatedBuildInputs = [
-    netmiko
-  ];
+  propagatedBuildInputs = [ netmiko ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # AssertionError: Some methods vary.
@@ -55,14 +48,12 @@ buildPythonPackage rec {
     "test_get_facts"
   ];
 
-  pythonImportsCheck = [
-    "napalm_procurve"
-  ];
+  pythonImportsCheck = [ "napalm_procurve" ];
 
   meta = with lib; {
     description = "HP ProCurve Driver for NAPALM automation frontend";
     homepage = "https://github.com/napalm-automation-community/napalm-hp-procurve";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/napari-console/default.nix b/pkgs/development/python-modules/napari-console/default.nix
index 9072ada93f420..1d7e9c5966503 100644
--- a/pkgs/development/python-modules/napari-console/default.nix
+++ b/pkgs/development/python-modules/napari-console/default.nix
@@ -1,50 +1,45 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, imageio
-, ipykernel
-, ipython
-, napari-plugin-engine
-, pythonOlder
-, qtconsole
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ipykernel,
+  ipython,
+  pythonOlder,
+  qtconsole,
+  qtpy,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "napari-console";
-  version = "0.0.7";
-  format = "pyproject";
+  version = "0.0.9";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "napari";
-    repo = pname;
+    repo = "napari-console";
     rev = "refs/tags/v${version}";
-    hash = "sha256-vHLCVMgrcs54pGb48wQpc0h7QBIfE6r7hCSoDNI3QvA=";
+    hash = "sha256-3gOfiPx06G5c4eaLQ5kP45hUr6yw91esznJFacpO66Q=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    imageio
+  dependencies = [
     ipykernel
     ipython
-    napari-plugin-engine
     qtconsole
+    qtpy
   ];
 
   # Circular dependency: napari
   doCheck = false;
 
-  pythonImportsCheck = [
-    "napari_console"
-  ];
+  pythonImportsCheck = [ "napari_console" ];
 
   meta = with lib; {
-    description = "A plugin that adds a console to napari";
+    description = "Plugin that adds a console to napari";
     homepage = "https://github.com/napari/napari-console";
     license = licenses.bsd3;
     maintainers = with maintainers; [ SomeoneSerge ];
diff --git a/pkgs/development/python-modules/napari-npe2/default.nix b/pkgs/development/python-modules/napari-npe2/default.nix
index 298a333f32065..1affda693c99a 100644
--- a/pkgs/development/python-modules/napari-npe2/default.nix
+++ b/pkgs/development/python-modules/napari-npe2/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, appdirs
-, build
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, hatch-vcs
-, magicgui
-, napari # reverse dependency, for tests
-, pydantic
-, pythonOlder
-, pytomlpp
-, pyyaml
-, rich
-, typer
-, tomli-w
+{
+  lib,
+  appdirs,
+  build,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  hatch-vcs,
+  magicgui,
+  napari, # reverse dependency, for tests
+  pydantic,
+  pythonOlder,
+  pytomlpp,
+  pyyaml,
+  rich,
+  typer,
+  tomli-w,
 }:
 
 buildPythonPackage rec {
@@ -50,11 +51,11 @@ buildPythonPackage rec {
     tomli-w
   ];
 
-  pythonImportsCheck = [
-    "npe2"
-  ];
+  pythonImportsCheck = [ "npe2" ];
 
-  passthru.tests = { inherit napari; };
+  passthru.tests = {
+    inherit napari;
+  };
 
   meta = with lib; {
     description = "Plugin system for napari (the image visualizer)";
diff --git a/pkgs/development/python-modules/napari-plugin-engine/default.nix b/pkgs/development/python-modules/napari-plugin-engine/default.nix
index 499f87ecf716f..63ad78e96617f 100644
--- a/pkgs/development/python-modules/napari-plugin-engine/default.nix
+++ b/pkgs/development/python-modules/napari-plugin-engine/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-cKpCAEYYRq3UPje7REjzhEe1J9mmrtXs8TBnxWukcNE=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   # Circular dependency: napari
   doCheck = false;
 
-  pythonImportsCheck = [
-    "napari_plugin_engine"
-  ];
+  pythonImportsCheck = [ "napari_plugin_engine" ];
 
   meta = with lib; {
     description = "First generation napari plugin engine";
diff --git a/pkgs/development/python-modules/napari-svg/default.nix b/pkgs/development/python-modules/napari-svg/default.nix
index 3094327dd422f..635d0063f9174 100644
--- a/pkgs/development/python-modules/napari-svg/default.nix
+++ b/pkgs/development/python-modules/napari-svg/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, imageio
-, napari-plugin-engine
-, numpy
-, pythonOlder
-, setuptools-scm
-, vispy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  imageio,
+  napari-plugin-engine,
+  numpy,
+  pythonOlder,
+  setuptools-scm,
+  vispy,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-ywN9lUwBFW8zP7ivP7MNTYFbTCcmaZxAuKr056uY68Q=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     imageio
@@ -38,7 +37,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A plugin for writing svg files from napari";
+    description = "Plugin for writing svg files from napari";
     homepage = "https://github.com/napari/napari-svg";
     changelog = "https://github.com/napari/napari-svg/releases/tag/v${version}";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/napari/default.nix b/pkgs/development/python-modules/napari/default.nix
index 0bccb016570ca..93252b0e91091 100644
--- a/pkgs/development/python-modules/napari/default.nix
+++ b/pkgs/development/python-modules/napari/default.nix
@@ -1,67 +1,69 @@
-{ lib
-, mkDerivationWith
-, appdirs
-, app-model
-, buildPythonPackage
-, cachey
-, certifi
-, dask
-, docstring-parser
-, fetchFromGitHub
-, imageio
-, jsonschema
-, magicgui
-, napari-console
-, napari-npe2
-, napari-svg
-, numpydoc
-, pint
-, psutil
-, pydantic
-, pyopengl
-, pillow
-, pythonOlder
-, pyyaml
-, scikit-image
-, scipy
-, setuptools-scm
-, sphinx
-, superqt
-, tifffile
-, toolz
-, tqdm
-, typing-extensions
-, vispy
-, wrapQtAppsHook
-, wrapt
+{
+  lib,
+  app-model,
+  appdirs,
+  buildPythonPackage,
+  cachey,
+  certifi,
+  dask,
+  docstring-parser,
+  fetchFromGitHub,
+  imageio,
+  jsonschema,
+  magicgui,
+  mkDerivationWith,
+  napari-console,
+  napari-npe2,
+  napari-svg,
+  numpydoc,
+  pandas,
+  pillow,
+  pint,
+  psutil,
+  pydantic,
+  pyopengl,
+  pythonOlder,
+  pyyaml,
+  scikit-image,
+  scipy,
+  setuptools,
+  setuptools-scm,
+  superqt,
+  tifffile,
+  toolz,
+  tqdm,
+  typing-extensions,
+  vispy,
+  wrapQtAppsHook,
+  wrapt,
 }:
 
 mkDerivationWith buildPythonPackage rec {
   pname = "napari";
   version = "0.4.19.post1";
-  format = "pyproject";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "napari";
-    repo = pname;
+    repo = "napari";
     rev = "refs/tags/v${version}";
     hash = "sha256-qw5WdFPySNkmm+dNu+hqsmr+csBpHnSl9bMpb4nKEqI=";
   };
 
   postPatch = ''
     substituteInPlace setup.cfg \
-      --replace "scikit-image>=0.19.1" "scikit-image" \
-      --replace "sphinx<5" "sphinx" \
-      --replace "vispy>=0.11.0,<0.12" "vispy"
+      --replace-fail "scikit-image[data]>=0.19.1" "scikit-image"
   '';
 
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
-    wrapQtAppsHook
   ];
 
+  nativeBuildInputs = [ wrapQtAppsHook ];
+
   propagatedBuildInputs = [
     app-model
     appdirs
@@ -76,15 +78,15 @@ mkDerivationWith buildPythonPackage rec {
     napari-npe2
     napari-svg
     numpydoc
-    pint
+    pandas
     pillow
+    pint
     psutil
     pydantic
     pyopengl
     pyyaml
     scikit-image
     scipy
-    sphinx
     superqt
     tifffile
     toolz
@@ -101,7 +103,7 @@ mkDerivationWith buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A fast, interactive, multi-dimensional image viewer";
+    description = "Fast, interactive, multi-dimensional image viewer";
     homepage = "https://github.com/napari/napari";
     changelog = "https://github.com/napari/napari/releases/tag/v${version}";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/nasdaq-data-link/default.nix b/pkgs/development/python-modules/nasdaq-data-link/default.nix
index f72edadaf262a..e560d7033ce51 100644
--- a/pkgs/development/python-modules/nasdaq-data-link/default.nix
+++ b/pkgs/development/python-modules/nasdaq-data-link/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, factory-boy
-, fetchFromGitHub
-, httpretty
-, inflection
-, jsondate
-, mock
-, more-itertools
-, numpy
-, pandas
-, parameterized
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, requests
-, six
+{
+  lib,
+  buildPythonPackage,
+  factory-boy,
+  fetchFromGitHub,
+  httpretty,
+  inflection,
+  jsondate,
+  mock,
+  more-itertools,
+  numpy,
+  pandas,
+  parameterized,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  requests,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -50,9 +51,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "nasdaqdatalink"
-  ];
+  pythonImportsCheck = [ "nasdaqdatalink" ];
 
   meta = with lib; {
     description = "Library for Nasdaq Data Link's RESTful API";
diff --git a/pkgs/development/python-modules/natasha/default.nix b/pkgs/development/python-modules/natasha/default.nix
index 3d25ccf73fc99..50283389107bd 100644
--- a/pkgs/development/python-modules/natasha/default.nix
+++ b/pkgs/development/python-modules/natasha/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pymorphy2
-, razdel
-, navec
-, slovnet
-, yargy
-, ipymarkup
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pymorphy2,
+  razdel,
+  navec,
+  slovnet,
+  yargy,
+  ipymarkup,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,14 @@ buildPythonPackage rec {
     hash = "sha256-Rgguazgq06a8B9jeRnfHD5VTR+Xrd+8OCsQUfaGLEq0=";
   };
 
-  propagatedBuildInputs = [ pymorphy2 navec razdel slovnet yargy ipymarkup ];
+  propagatedBuildInputs = [
+    pymorphy2
+    navec
+    razdel
+    slovnet
+    yargy
+    ipymarkup
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
   pytestFlagsArray = [ "tests/" ];
diff --git a/pkgs/development/python-modules/nats-py/default.nix b/pkgs/development/python-modules/nats-py/default.nix
index 7102d87286bb7..4a28fc2c57bd7 100644
--- a/pkgs/development/python-modules/nats-py/default.nix
+++ b/pkgs/development/python-modules/nats-py/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "nats-py";
-  version = "2.7.2";
+  version = "2.9.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "nats-io";
     repo = "nats.py";
     rev = "refs/tags/v${version}";
-    hash = "sha256-5lvdt1JbOmdts0CYU00bSmv0LsMQsOe//yUgyevBULE=";
+    hash = "sha256-r94dDXPpkLS1PsB9L4qlDw15tPa2vpxOS52eqJk2dNU=";
   };
 
   build-system = [ setuptools ];
@@ -47,17 +47,18 @@ buildPythonPackage rec {
 
   disabledTests =
     [
-      # AssertionError: assert 5 == 0
-      "test_pull_subscribe_limits"
+      # AssertionError
       "test_fetch_n"
-      "test_subscribe_no_echo"
+      "test_kv_simple"
+      "test_pull_subscribe_limits"
       "test_stream_management"
+      "test_subscribe_no_echo"
       # Tests fail on hydra, often Time-out
       "test_subscribe_iterate_next_msg"
       "test_ordered_consumer_larger_streams"
       "test_object_file_basics"
     ]
-    ++ lib.optionals stdenv.isDarwin [
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
       "test_subscribe_iterate_next_msg"
       "test_buf_size_force_flush_timeout"
     ];
diff --git a/pkgs/development/python-modules/nats-python/default.nix b/pkgs/development/python-modules/nats-python/default.nix
index 9662dddd5ddbb..f93b2feab69c9 100644
--- a/pkgs/development/python-modules/nats-python/default.nix
+++ b/pkgs/development/python-modules/nats-python/default.nix
@@ -1,41 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  poetry-core,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "nats-python";
   version = "0.8.0";
-  disabled = pythonOlder "3.6";
-  format = "pyproject";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "Gr1N";
     repo = "nats-python";
-    rev = version;
-    sha256 = "1j7skyxldir3mphvnsyhjxmf3cimv4h7n5v58jl2gff4yd0hdw7g";
+    rev = "refs/tags/${version}";
+    hash = "sha256-7/AGQfPEuSeoRGUXeyDZNbLhapfQa7vhrSPHRruf+sg=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
-
   patches = [
     # Switch to poetry-core, https://github.com/Gr1N/nats-python/pull/19
     (fetchpatch {
       name = "use-poetry-core.patch";
       url = "https://github.com/Gr1N/nats-python/commit/71b25b324212dccd7fc06ba3914491adba22e83f.patch";
-      sha256 = "1fip1qpzk2ka7qgkrdpdr6vnrnb1p8cwapa51xp0h26nm7yis1gl";
+      hash = "sha256-9AUd/anWCAhuD0VdxRm6Ydlst8nttjwfPmqK+S8ON7o=";
     })
   ];
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  build-system = [ poetry-core ];
+
+  dependencies = [ setuptools ];
 
   # Tests require a running NATS server
   doCheck = false;
@@ -45,6 +43,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python client for NATS messaging system";
     homepage = "https://github.com/Gr1N/nats-python";
+    changelog = "https://github.com/Gr1N/nats-python/releases/tag/${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/natsort/default.nix b/pkgs/development/python-modules/natsort/default.nix
index aef526b4290ee..4183a65e56c0e 100644
--- a/pkgs/development/python-modules/natsort/default.nix
+++ b/pkgs/development/python-modules/natsort/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fastnumbers
-, fetchPypi
-, glibcLocales
-, hypothesis
-, pyicu
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fastnumbers,
+  fetchPypi,
+  glibcLocales,
+  hypothesis,
+  pyicu,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -40,9 +41,7 @@ buildPythonPackage rec {
     "test_string_component_transform_factory"
   ];
 
-  pythonImportsCheck = [
-    "natsort"
-  ];
+  pythonImportsCheck = [ "natsort" ];
 
   meta = with lib; {
     description = "Natural sorting for Python";
@@ -50,6 +49,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/SethMMorton/natsort";
     changelog = "https://github.com/SethMMorton/natsort/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/natural/default.nix b/pkgs/development/python-modules/natural/default.nix
new file mode 100644
index 0000000000000..fc6bde5f8dc05
--- /dev/null
+++ b/pkgs/development/python-modules/natural/default.nix
@@ -0,0 +1,32 @@
+{ buildPythonPackage
+, fetchFromGitHub
+, lib
+, setuptools
+, six
+, django
+}:
+buildPythonPackage rec {
+  pname = "natural";
+  version = "0.2.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "tehmaze";
+    repo = "natural";
+    rev = "refs/tags/${version}";
+    hash = "sha256-DERFKDGVUPcjYAxiTYWgWkPp+Myd/9CNytQWgRya570=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ six ];
+
+  nativeCheckInputs = [ django ];
+
+  meta = {
+    description = "Convert data to their natural (human-readable) format";
+    homepage = "https://github.com/tehmaze/natural";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sailord vinetos ];
+  };
+}
diff --git a/pkgs/development/python-modules/naturalsort/default.nix b/pkgs/development/python-modules/naturalsort/default.nix
index 9d7572fb0f701..8be9da8328f26 100644
--- a/pkgs/development/python-modules/naturalsort/default.nix
+++ b/pkgs/development/python-modules/naturalsort/default.nix
@@ -1,20 +1,36 @@
-{ lib, buildPythonPackage, fetchFromGitHub }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "naturalsort";
   version = "1.5.1";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "xolox";
     repo = "python-naturalsort";
-    rev = version;
-    sha256 = "0w43vlddzh97hffnvxp2zkrns9qyirx5g8ijxnxkbx1c4b4gq5ih";
+    rev = "refs/tags/${version}";
+    hash = "sha256-MBb8yCIs9DW77TKiV3qOHidt8/zi9m2dgyfB3xrdg3A=";
   };
 
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "natsort" ];
+
   meta = with lib; {
     description = "Simple natural order sorting API for Python that just works";
     homepage = "https://github.com/xolox/python-naturalsort";
+    changelog = "https://github.com/xolox/python-naturalsort/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ eyjhb ];
   };
diff --git a/pkgs/development/python-modules/navec/default.nix b/pkgs/development/python-modules/navec/default.nix
index e5712212eb698..8369edba21699 100644
--- a/pkgs/development/python-modules/navec/default.nix
+++ b/pkgs/development/python-modules/navec/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, razdel
-, gensim
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  razdel,
+  gensim,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,8 +18,14 @@ buildPythonPackage rec {
     hash = "sha256-TyNHSxwnmvbGBfhOeHPofEfKWLDFOKP50w2QxgnJ/SE=";
   };
 
-  propagatedBuildInputs = [ numpy razdel ];
-  nativeCheckInputs = [ pytestCheckHook gensim ];
+  propagatedBuildInputs = [
+    numpy
+    razdel
+  ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    gensim
+  ];
   # TODO: remove when gensim usage will be fixed in `navec`.
   disabledTests = [ "test_gensim" ];
   pythonImportsCheck = [ "navec" ];
diff --git a/pkgs/development/python-modules/nbclassic/default.nix b/pkgs/development/python-modules/nbclassic/default.nix
index d4730414006ca..6ac18bef59372 100644
--- a/pkgs/development/python-modules/nbclassic/default.nix
+++ b/pkgs/development/python-modules/nbclassic/default.nix
@@ -1,59 +1,43 @@
-{ lib
-, argon2-cffi
-, buildPythonPackage
-, fetchPypi
-, ipykernel
-, ipython-genutils
-, jinja2
-, jupyter-client
-, jupyter-core
-, jupyter-server
-, nbconvert
-, nbformat
-, nest-asyncio
-, notebook-shim
-, prometheus-client
-, pytest-jupyter
-, pytest-tornasync
-, pytestCheckHook
-, pythonOlder
-, pyzmq
-, send2trash
-, terminado
-, tornado
-, traitlets
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  babel,
+  ipykernel,
+  ipython-genutils,
+  jupyter-packaging,
+  jupyter-server,
+  nest-asyncio,
+  notebook-shim,
+  pytest-jupyter,
+  pytest-tornasync,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "nbclassic";
-  version = "1.0.0";
-  format = "setuptools";
+  version = "1.1.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-CuEesjGUVdgFWWvzIDNs2pVUtB2Zq5o8Mb+BgL/6MOM=";
+    hash = "sha256-d7d7qF+emI+brYXfNFtRTp5kx/DoIpkqsd9KeKxk/B4=";
   };
 
-  propagatedBuildInputs = [
-    argon2-cffi
+  build-system = [
+    babel
+    jupyter-packaging
+    jupyter-server
+  ];
+
+  dependencies = [
     ipykernel
     ipython-genutils
-    jinja2
-    jupyter-client
-    jupyter-core
-    jupyter-server
-    nbconvert
-    nbformat
     nest-asyncio
     notebook-shim
-    prometheus-client
-    pyzmq
-    send2trash
-    terminado
-    tornado
-    traitlets
   ];
 
   nativeCheckInputs = [
@@ -62,9 +46,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "nbclassic"
-  ];
+  pythonImportsCheck = [ "nbclassic" ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -72,6 +54,5 @@ buildPythonPackage rec {
     description = "Jupyter lab environment notebook server extension";
     homepage = "https://github.com/jupyter/nbclassic";
     license = with licenses; [ bsd3 ];
-    maintainers = with maintainers; [ elohmeier ];
   };
 }
diff --git a/pkgs/development/python-modules/nbclient/default.nix b/pkgs/development/python-modules/nbclient/default.nix
index 7935d99a527e4..105108d3ab6b6 100644
--- a/pkgs/development/python-modules/nbclient/default.nix
+++ b/pkgs/development/python-modules/nbclient/default.nix
@@ -1,75 +1,78 @@
-{ async-generator
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, ipykernel
-, ipywidgets
-, jupyter-client
-, lib
-, nbconvert
-, nbformat
-, nest-asyncio
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, testpath
-, traitlets
-, xmltodict
+{
+  async-generator,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  ipykernel,
+  ipywidgets,
+  jupyter-client,
+  lib,
+  nbconvert,
+  nbformat,
+  nest-asyncio,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  testpath,
+  traitlets,
+  xmltodict,
 }:
 
-let nbclient = buildPythonPackage rec {
-  pname = "nbclient";
-  version = "0.10.0";
-  format = "pyproject";
+let
+  nbclient = buildPythonPackage rec {
+    pname = "nbclient";
+    version = "0.10.0";
+    format = "pyproject";
 
-  disabled = pythonOlder "3.7";
+    disabled = pythonOlder "3.7";
 
-  src = fetchFromGitHub {
-    owner = "jupyter";
-    repo = pname;
-    rev = "refs/tags/v${version}";
-    hash = "sha256-8OLkpwX4Gpam9VSFUtNS41Ypxe4+2yN3ng6iVY9DSqY=";
-  };
+    src = fetchFromGitHub {
+      owner = "jupyter";
+      repo = pname;
+      rev = "refs/tags/v${version}";
+      hash = "sha256-8OLkpwX4Gpam9VSFUtNS41Ypxe4+2yN3ng6iVY9DSqY=";
+    };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+    nativeBuildInputs = [ hatchling ];
 
-  propagatedBuildInputs = [
-    async-generator
-    traitlets
-    nbformat
-    nest-asyncio
-    jupyter-client
-  ];
+    propagatedBuildInputs = [
+      async-generator
+      traitlets
+      nbformat
+      nest-asyncio
+      jupyter-client
+    ];
 
-  # circular dependencies if enabled by default
-  doCheck = false;
+    # circular dependencies if enabled by default
+    doCheck = false;
 
-  nativeCheckInputs = [
-    ipykernel
-    ipywidgets
-    nbconvert
-    pytest-asyncio
-    pytestCheckHook
-    testpath
-    xmltodict
-  ];
+    nativeCheckInputs = [
+      ipykernel
+      ipywidgets
+      nbconvert
+      pytest-asyncio
+      pytestCheckHook
+      testpath
+      xmltodict
+    ];
 
-  preCheck = ''
-    export HOME=$(mktemp -d)
-  '';
+    preCheck = ''
+      export HOME=$(mktemp -d)
+    '';
 
-  passthru.tests = {
-    check = nbclient.overridePythonAttrs (_: { doCheck = true; });
-  };
+    passthru.tests = {
+      check = nbclient.overridePythonAttrs (_: {
+        doCheck = true;
+      });
+    };
 
-  meta = with lib; {
-    homepage = "https://github.com/jupyter/nbclient";
-    description = "A client library for executing notebooks";
-    mainProgram = "jupyter-execute";
-    license = licenses.bsd3;
-    maintainers = [ ];
+    meta = with lib; {
+      homepage = "https://github.com/jupyter/nbclient";
+      description = "Client library for executing notebooks";
+      mainProgram = "jupyter-execute";
+      license = licenses.bsd3;
+      maintainers = [ ];
+    };
   };
-};
-in nbclient
+in
+nbclient
diff --git a/pkgs/development/python-modules/nbconflux/default.nix b/pkgs/development/python-modules/nbconflux/default.nix
index 25d9cc73df53e..f935b934b3cce 100644
--- a/pkgs/development/python-modules/nbconflux/default.nix
+++ b/pkgs/development/python-modules/nbconflux/default.nix
@@ -1,36 +1,53 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy27
-, nbconvert
-, pytestCheckHook
-, requests
-, responses
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  nbconvert,
+  pytestCheckHook,
+  requests,
+  responses,
+  setuptools,
+  versioneer,
 }:
 
 buildPythonPackage rec {
   pname = "nbconflux";
   version = "0.7.0";
-  format = "setuptools";
-  disabled = isPy27; # no longer compatible with python 2 urllib
+  pyproject = true;
 
   src = fetchFromGitHub {
-    owner = "Valassis-Digital-Media";
+    owner = "vericast";
     repo = "nbconflux";
     rev = "refs/tags/${version}";
     hash = "sha256-kHIuboFKLVsu5zlZ0bM1BUoQR8f1l0XWcaaVI9bECJw=";
   };
 
-  propagatedBuildInputs = [ nbconvert requests ];
+  build-system = [
+    setuptools
+    versioneer
+  ];
 
-  nativeCheckInputs = [ pytestCheckHook responses ];
+  dependencies = [
+    nbconvert
+    requests
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    responses
+  ];
 
   patches = [
     # The original setup.py file is missing commas in the install_requires list
     ./setup-py.patch
   ];
 
-  JUPYTER_PATH="${nbconvert}/share/jupyter";
+  postPatch = ''
+    # remove vendorized versioneer.py
+    rm versioneer.py
+  '';
+
+  JUPYTER_PATH = "${nbconvert}/share/jupyter";
   disabledTests = [
     "test_post_to_confluence"
     "test_optional_components"
diff --git a/pkgs/development/python-modules/nbconvert/default.nix b/pkgs/development/python-modules/nbconvert/default.nix
index b80f75dc45491..870b0dba10883 100644
--- a/pkgs/development/python-modules/nbconvert/default.nix
+++ b/pkgs/development/python-modules/nbconvert/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, fetchurl
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, hatchling
-, beautifulsoup4
-, bleach
-, defusedxml
-, jinja2
-, jupyter-core
-, jupyterlab-pygments
-, markupsafe
-, mistune
-, nbclient
-, packaging
-, pandocfilters
-, pygments
-, tinycss2
-, traitlets
-, importlib-metadata
-, flaky
-, ipykernel
-, ipywidgets
-, pytestCheckHook
+{
+  lib,
+  fetchurl,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  hatchling,
+  beautifulsoup4,
+  bleach,
+  defusedxml,
+  jinja2,
+  jupyter-core,
+  jupyterlab-pygments,
+  markupsafe,
+  mistune,
+  nbclient,
+  packaging,
+  pandocfilters,
+  pygments,
+  tinycss2,
+  traitlets,
+  importlib-metadata,
+  flaky,
+  ipykernel,
+  ipywidgets,
+  pytestCheckHook,
 }:
 
 let
@@ -31,23 +32,22 @@ let
     url = "https://cdn.jupyter.org/notebook/5.4.0/style/style.min.css";
     hash = "sha256-WGWmCfRDewRkvBIc1We2GQdOVAoFFaO4LyIvdk61HgE=";
   };
-in buildPythonPackage rec {
+in
+buildPythonPackage rec {
   pname = "nbconvert";
-  version = "7.16.3";
+  version = "7.16.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-pnM7eM49R8P4XlBJmElbB+bqnPm/bsHJjdpj7GrRkUI=";
+    hash = "sha256-hsqRuiZrCkSNyW+mxbnZiv+r3ihns2MlhwNTaAf59/Q=";
   };
 
   # Add $out/share/jupyter to the list of paths that are used to search for
   # various exporter templates
-  patches = [
-    ./templates.patch
-  ];
+  patches = [ ./templates.patch ];
 
   postPatch = ''
     substituteAllInPlace ./nbconvert/exporters/templateexporter.py
@@ -56,9 +56,7 @@ in buildPythonPackage rec {
     cp ${style-css} share/templates/classic/static/style.css
   '';
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     beautifulsoup4
@@ -75,9 +73,7 @@ in buildPythonPackage rec {
     pygments
     tinycss2
     traitlets
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
   preCheck = ''
     export HOME=$(mktemp -d)
diff --git a/pkgs/development/python-modules/nbdev/default.nix b/pkgs/development/python-modules/nbdev/default.nix
index ee82753ae822e..f3b766f086c52 100644
--- a/pkgs/development/python-modules/nbdev/default.nix
+++ b/pkgs/development/python-modules/nbdev/default.nix
@@ -1,41 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonRelaxDepsHook
-, setuptools
-, ipywidgets
-, fastcore
-, astunparse
-, watchdog
-, execnb
-, ghapi
-, pyyaml
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  ipywidgets,
+  fastcore,
+  astunparse,
+  watchdog,
+  execnb,
+  ghapi,
+  pyyaml,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "nbdev";
-  version = "2.3.14";
+  version = "2.3.31";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-9Tacr4mWmjXspKKCkFDWYeT7KkBh4/3f6UOkfj0/leg=";
+    hash = "sha256-a0BOBwzlZ1HFvpamqQHn8rtgghdkTfr9778wW84q7Xo=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
-  pythonRelaxDeps = [
-    "ipywidgets"
-  ];
+  pythonRelaxDeps = [ "ipywidgets" ];
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     astunparse
@@ -50,9 +43,7 @@ buildPythonPackage rec {
   # no real tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "nbdev"
-  ];
+  pythonImportsCheck = [ "nbdev" ];
 
   meta = with lib; {
     homepage = "https://github.com/fastai/nbdev";
diff --git a/pkgs/development/python-modules/nbdime/749.patch b/pkgs/development/python-modules/nbdime/749.patch
deleted file mode 100644
index b88aec0f67e31..0000000000000
--- a/pkgs/development/python-modules/nbdime/749.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/nbdime/webapp/nbdimeserver.py
-+++ b/nbdime/webapp/nbdimeserver.py
-@@ -388,6 +388,7 @@
-         'jinja2_env': env,
-         'local_hostnames': ['localhost', '127.0.0.1'],
-         'cookie_secret': base64.encodebytes(os.urandom(32)), # Needed even for an unsecured server.
-+        'allow_unauthenticated_access': True,
-     }
- 
-     try:
diff --git a/pkgs/development/python-modules/nbdime/default.nix b/pkgs/development/python-modules/nbdime/default.nix
index 855192fa5ec54..7a873014640e2 100644
--- a/pkgs/development/python-modules/nbdime/default.nix
+++ b/pkgs/development/python-modules/nbdime/default.nix
@@ -1,49 +1,44 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, hatch-jupyter-builder
-, hatchling
-, jupyterlab
-, nbformat
-, colorama
-, pygments
-, tornado
-, requests
-, gitpython
-, jupyter-server
-, jupyter-server-mathjax
-, jinja2
-, git
-, pytest-tornado
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  hatch-jupyter-builder,
+  hatchling,
+  jupyterlab,
+  nbformat,
+  colorama,
+  pygments,
+  tornado,
+  requests,
+  gitpython,
+  jupyter-server,
+  jupyter-server-mathjax,
+  jinja2,
+  git,
+  pytest-tornado,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "nbdime";
-  version = "4.0.1";
+  version = "4.0.2";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-8adgwLAMG6m0lFwWzpJXfzk/tR0YTzUbdoW6boUCCY4=";
+    hash = "sha256-2Cefj0sjbAslOyDWDEgxu2eEPtjb1uCfI06wEdNvG/I=";
   };
 
-  patches = [
-    # this fixes the webserver (nbdiff-web) when jupyter-server >=2.13 is used
-    # see https://github.com/jupyter/nbdime/issues/749
-    ./749.patch
-  ];
-
-  nativeBuildInputs = [
+  build-system = [
     hatch-jupyter-builder
     hatchling
     jupyterlab
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     nbformat
     colorama
     pygments
@@ -76,9 +71,7 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [
-    "nbdime"
-  ];
+  pythonImportsCheck = [ "nbdime" ];
 
   meta = with lib; {
     homepage = "https://github.com/jupyter/nbdime";
diff --git a/pkgs/development/python-modules/nbexec/default.nix b/pkgs/development/python-modules/nbexec/default.nix
index faed2eedb4718..370de0db428c0 100644
--- a/pkgs/development/python-modules/nbexec/default.nix
+++ b/pkgs/development/python-modules/nbexec/default.nix
@@ -1,14 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-# build inputs
-, jupyter-client
-, nbformat
-, nbconvert
-# check inputs
-, unittestCheckHook
-, ipykernel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  # build inputs
+  jupyter-client,
+  nbformat,
+  nbconvert,
+  setuptools,
+  # check inputs
+  unittestCheckHook,
+  ipykernel,
 }:
 let
   pname = "nbexec";
@@ -16,7 +18,7 @@ let
 in
 buildPythonPackage {
   inherit pname version;
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
@@ -27,7 +29,9 @@ buildPythonPackage {
     hash = "sha256-Vv6EHX6WlnSmzQAYlO1mHnz5t078z3RQfVfte1+X2pw=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     jupyter-client
     nbformat
     nbconvert
@@ -44,15 +48,17 @@ buildPythonPackage {
   '';
 
   unittestFlagsArray = [
-    "-s" "test" "-v"
+    "-s"
+    "test"
+    "-v"
   ];
 
-  pythonImportsCheck = [
-    "nbexec"
-  ];
+  pythonImportsCheck = [ "nbexec" ];
+
+  __darwinAllowLocalNetworking = true;
 
   meta = with lib; {
-    description = "A dead-simple tool for executing Jupyter notebooks from the command line.";
+    description = "Dead-simple tool for executing Jupyter notebooks from the command line";
     mainProgram = "nbexec";
     homepage = "https://github.com/jsvine/nbexec";
     changelog = "https://github.com/jsvine/nbexec/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/nbformat/default.nix b/pkgs/development/python-modules/nbformat/default.nix
index 9cf08897935e5..e6eb3344e8d9a 100644
--- a/pkgs/development/python-modules/nbformat/default.nix
+++ b/pkgs/development/python-modules/nbformat/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, hatchling
-, hatch-nodejs-version
-, fastjsonschema
-, jsonschema
-, jupyter-core
-, traitlets
-, pep440
-, pytestCheckHook
-, testpath
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  hatchling,
+  hatch-nodejs-version,
+  fastjsonschema,
+  jsonschema,
+  jupyter-core,
+  traitlets,
+  pep440,
+  pytestCheckHook,
+  testpath,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
     traitlets
   ];
 
-  pythonImportsCheck = [
-    "nbformat"
-  ];
+  pythonImportsCheck = [ "nbformat" ];
 
   nativeCheckInputs = [
     pep440
@@ -50,7 +49,7 @@ buildPythonPackage rec {
   __darwinAllowLocalNetworking = true;
 
   meta = {
-    description = "The Jupyter Notebook format";
+    description = "Jupyter Notebook format";
     mainProgram = "jupyter-trust";
     homepage = "https://jupyter.org/";
     license = lib.licenses.bsd3;
diff --git a/pkgs/development/python-modules/nbmake/default.nix b/pkgs/development/python-modules/nbmake/default.nix
new file mode 100644
index 0000000000000..4c6d46e6d4706
--- /dev/null
+++ b/pkgs/development/python-modules/nbmake/default.nix
@@ -0,0 +1,68 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  setuptools,
+  wheel,
+  ipykernel,
+  nbclient,
+  nbformat,
+  pygments,
+  pytest,
+  pyyaml,
+  pytest-xdist,
+  pytestCheckHook,
+  typing-extensions,
+}:
+
+buildPythonPackage rec {
+  pname = "nbmake";
+  version = "1.5.4";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "treebeardtech";
+    repo = "nbmake";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-OzjqpipFb5COhqc//Sg6OU65ShPrYe/KtxifToEXveg=";
+  };
+
+  build-system = [
+    poetry-core
+    setuptools
+    wheel
+  ];
+
+  dependencies = [
+    ipykernel
+    nbclient
+    nbformat
+    pygments
+    pytest
+    pyyaml
+  ];
+
+  pythonRelaxDeps = [ "nbclient" ];
+
+  pythonImportsCheck = [ "nbmake" ];
+
+  nativeCheckInputs = [
+    pytest-xdist
+    pytestCheckHook
+    typing-extensions
+  ];
+
+  __darwinAllowLocalNetworking = true;
+
+  meta = {
+    description = "Pytest plugin for testing notebooks";
+    homepage = "https://github.com/treebeardtech/nbmake";
+    changelog = "https://github.com/treebeardtech/nbmake/releases/tag/v${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/pkgs/development/python-modules/nbmerge/default.nix b/pkgs/development/python-modules/nbmerge/default.nix
deleted file mode 100644
index 6aaee680582c1..0000000000000
--- a/pkgs/development/python-modules/nbmerge/default.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, nbformat
-, nose
-}:
-
-buildPythonPackage rec {
-  pname = "nbmerge";
-  version = "0.0.4";
-  pyproject = true;
-
-  src = fetchFromGitHub {
-    owner = "jbn";
-    repo = pname;
-    rev = "refs/tags/v${version}";
-    hash = "sha256-Uqs/SO/AculHCFYcbjW08kLQX5GSU/eAwkN2iy/vhLM=";
-  };
-
-  nativeBuildInputs = [
-    setuptools
-  ];
-
-  propagatedBuildInputs = [ nbformat ];
-
-  nativeCheckInputs = [ nose ];
-
-  checkPhase = ''
-    runHook preCheck
-
-    patchShebangs .
-    nosetests -v
-    PATH=$PATH:$out/bin ./cli_tests.sh
-
-    runHook postCheck
-  '';
-
-  pythonImportsCheck = [
-    "nbmerge"
-  ];
-
-  meta = {
-    description = "A tool to merge/concatenate Jupyter (IPython) notebooks";
-    inherit (src.meta) homepage;
-    license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ ];
-    mainProgram = "nbmerge";
-  };
-}
diff --git a/pkgs/development/python-modules/nbsmoke/default.nix b/pkgs/development/python-modules/nbsmoke/default.nix
index afea038d6db7b..14cd544647a64 100644
--- a/pkgs/development/python-modules/nbsmoke/default.nix
+++ b/pkgs/development/python-modules/nbsmoke/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, jupyter-client
-, ipykernel
-, holoviews
-, nbformat
-, nbconvert
-, pyflakes
-, requests
-, beautifulsoup4
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  jupyter-client,
+  ipykernel,
+  holoviews,
+  nbformat,
+  nbconvert,
+  pyflakes,
+  requests,
+  beautifulsoup4,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/nbsphinx/default.nix b/pkgs/development/python-modules/nbsphinx/default.nix
index de0d972aa9864..c819eee79ab60 100644
--- a/pkgs/development/python-modules/nbsphinx/default.nix
+++ b/pkgs/development/python-modules/nbsphinx/default.nix
@@ -1,28 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, docutils
-, jinja2
-, nbconvert
-, nbformat
-, sphinx
-, traitlets
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  docutils,
+  jinja2,
+  nbconvert,
+  nbformat,
+  sphinx,
+  traitlets,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "nbsphinx";
-  version = "0.9.3";
-  format = "setuptools";
+  version = "0.9.5";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-7DOchpG2iPhnYQSjZ6S4zz6gH9CJ3CjSTewi1WOxFWI=";
+    hash = "sha256-c2kW57Daso/JBPSprjtTqaUMKfzMYynAUvzHSFq88rc=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     docutils
     jinja2
     nbconvert
@@ -36,15 +40,13 @@ buildPythonPackage rec {
 
   JUPYTER_PATH = "${nbconvert}/share/jupyter";
 
-  pythonImportsCheck = [
-    "nbsphinx"
-  ];
+  pythonImportsCheck = [ "nbsphinx" ];
 
   meta = with lib; {
     description = "Jupyter Notebook Tools for Sphinx";
     homepage = "https://nbsphinx.readthedocs.io/";
     changelog = "https://github.com/spatialaudio/nbsphinx/blob/${version}/NEWS.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/nbtlib/default.nix b/pkgs/development/python-modules/nbtlib/default.nix
index 3ec7ade6a90b4..cb4a0ad4f6f31 100644
--- a/pkgs/development/python-modules/nbtlib/default.nix
+++ b/pkgs/development/python-modules/nbtlib/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  numpy,
 }:
 
 buildPythonPackage rec {
@@ -18,23 +19,19 @@ buildPythonPackage rec {
   };
 
   prePatch = ''
-      substituteInPlace pyproject.toml \
-      --replace "poetry>=0.12" "poetry-core" \
-      --replace "poetry.masonry" "poetry.core.masonry"
+    substituteInPlace pyproject.toml \
+    --replace "poetry>=0.12" "poetry-core" \
+    --replace "poetry.masonry" "poetry.core.masonry"
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   pythonImportsCheck = [ "nbtlib" ];
 
   meta = with lib; {
-    description = "A python library to read and edit nbt data";
+    description = "Python library to read and edit nbt data";
     mainProgram = "nbt";
     homepage = "https://github.com/vberlier/nbtlib";
     changelog = "https://github.com/vberlier/nbtlib/blob/${src.rev}/CHANGELOG.md";
diff --git a/pkgs/development/python-modules/nbval/default.nix b/pkgs/development/python-modules/nbval/default.nix
index cce567bfacb30..920314b9e45d5 100644
--- a/pkgs/development/python-modules/nbval/default.nix
+++ b/pkgs/development/python-modules/nbval/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, coverage
-, ipykernel
-, jupyter-client
-, nbformat
-, pytestCheckHook
-, pytest
-, glibcLocales
-, matplotlib
-, sympy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  coverage,
+  ipykernel,
+  jupyter-client,
+  nbformat,
+  pytestCheckHook,
+  pytest,
+  glibcLocales,
+  matplotlib,
+  sympy,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     hash = "sha256-d8lXl2B7CpaLq9JZfuNJQQLSXDrTdDXeu9rA5G43kJQ=";
   };
 
-  buildInputs = [
-    glibcLocales
-  ];
+  buildInputs = [ glibcLocales ];
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     coverage
@@ -65,15 +62,13 @@ buildPythonPackage rec {
   # Some of the tests use localhost networking.
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [
-    "nbval"
-  ];
+  pythonImportsCheck = [ "nbval" ];
 
   meta = with lib; {
-    description = "A py.test plugin to validate Jupyter notebooks";
+    description = "Py.test plugin to validate Jupyter notebooks";
     homepage = "https://github.com/computationalmodelling/nbval";
     changelog = "https://github.com/computationalmodelling/nbval/releases/tag/${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/nbxmpp/default.nix b/pkgs/development/python-modules/nbxmpp/default.nix
index 22cc74504f671..07baf52739fd9 100644
--- a/pkgs/development/python-modules/nbxmpp/default.nix
+++ b/pkgs/development/python-modules/nbxmpp/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitLab
-, gobject-introspection
-, idna
-, libsoup_3
-, packaging
-, precis-i18n
-, pygobject3
-, pyopenssl
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  gobject-introspection,
+  idna,
+  libsoup_3,
+  packaging,
+  precis-i18n,
+  pygobject3,
+  pyopenssl,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "nbxmpp";
-  version = "4.5.4";
+  version = "5.0.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.10";
@@ -25,7 +26,7 @@ buildPythonPackage rec {
     owner = "gajim";
     repo = "python-nbxmpp";
     rev = "refs/tags/${version}";
-    hash = "sha256-n5Pzw8aikzCml+dOhkLoHR0ytFkEb4AYpw/bIpo6Wd4=";
+    hash = "sha256-p7BRUf0YECI8xW3GVOCXHKtKs/4MFKUZR3k1XmTKMZI=";
   };
 
   nativeBuildInputs = [
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  buildInputs = [
-    precis-i18n
-  ];
+  buildInputs = [ precis-i18n ];
 
   propagatedBuildInputs = [
     gobject-introspection
@@ -47,13 +46,9 @@ buildPythonPackage rec {
     pyopenssl
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "nbxmpp"
-  ];
+  pythonImportsCheck = [ "nbxmpp" ];
 
   meta = with lib; {
     homepage = "https://dev.gajim.org/gajim/python-nbxmpp";
diff --git a/pkgs/development/python-modules/nc-dnsapi/default.nix b/pkgs/development/python-modules/nc-dnsapi/default.nix
index 4229fa613f19d..cf6511b1eb971 100644
--- a/pkgs/development/python-modules/nc-dnsapi/default.nix
+++ b/pkgs/development/python-modules/nc-dnsapi/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -27,6 +28,9 @@ buildPythonPackage rec {
     description = "API wrapper for the netcup DNS api";
     homepage = "https://github.com/nbuchwitz/nc_dnsapi";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ veehaitch trundle ];
+    maintainers = with maintainers; [
+      veehaitch
+      trundle
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/ncclient/default.nix b/pkgs/development/python-modules/ncclient/default.nix
index c3040475cf2e3..11f3424083cb6 100644
--- a/pkgs/development/python-modules/ncclient/default.nix
+++ b/pkgs/development/python-modules/ncclient/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, lxml
-, paramiko
-, pytestCheckHook
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxml,
+  paramiko,
+  pytestCheckHook,
+  pythonOlder,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -28,13 +29,9 @@ buildPythonPackage rec {
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ncclient"
-  ];
+  pythonImportsCheck = [ "ncclient" ];
 
   meta = with lib; {
     description = "Python library for NETCONF clients";
diff --git a/pkgs/development/python-modules/nclib/default.nix b/pkgs/development/python-modules/nclib/default.nix
index f803a2b39980b..67217d4c22537 100644
--- a/pkgs/development/python-modules/nclib/default.nix
+++ b/pkgs/development/python-modules/nclib/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "nclib"
-  ];
+  pythonImportsCheck = [ "nclib" ];
 
   meta = with lib; {
     description = "Python module that provides netcat features";
diff --git a/pkgs/development/python-modules/ndeflib/default.nix b/pkgs/development/python-modules/ndeflib/default.nix
index 165aed8942dfc..9c410e4d24f95 100644
--- a/pkgs/development/python-modules/ndeflib/default.nix
+++ b/pkgs/development/python-modules/ndeflib/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,24 +22,16 @@ buildPythonPackage rec {
     hash = "sha256-cpfztE+/AW7P0J7QeTDfVGYc2gEkr7gzA352hC9bdTM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ndef"
-  ];
+  pythonImportsCheck = [ "ndef" ];
 
   disabledTests = [
     # AssertionError caused due to wrong size
     "test_decode_error"
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    "test_encode_error"
-  ];
+  ] ++ lib.optionals (pythonAtLeast "3.12") [ "test_encode_error" ];
 
   meta = with lib; {
     description = "Python package for parsing and generating NFC Data Exchange Format messages";
diff --git a/pkgs/development/python-modules/ndg-httpsclient/default.nix b/pkgs/development/python-modules/ndg-httpsclient/default.nix
index 71acebc14e011..6773eed000c8e 100644
--- a/pkgs/development/python-modules/ndg-httpsclient/default.nix
+++ b/pkgs/development/python-modules/ndg-httpsclient/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyasn1
-, pyopenssl
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyasn1,
+  pyopenssl,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +18,6 @@ buildPythonPackage rec {
     sha256 = "0lhsgs4am4xyjssng5p0vkfwqncczj1dpa0vss4lrhzq86mnn5rz";
   };
 
-
   propagatedBuildInputs = [
     pyasn1
     pyopenssl
@@ -31,7 +31,6 @@ buildPythonPackage rec {
     description = "Provide enhanced HTTPS support for httplib and urllib2 using PyOpenSSL";
     mainProgram = "ndg_httpclient";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/ndindex/default.nix b/pkgs/development/python-modules/ndindex/default.nix
index 55704e1eef083..5bd31f3042a12 100644
--- a/pkgs/development/python-modules/ndindex/default.nix
+++ b/pkgs/development/python-modules/ndindex/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, cython
+  # build-system
+  cython,
 
-# optional
-, numpy
+  # optional
+  numpy,
 
-# tests
-, hypothesis
-, pytest-cov
-, pytestCheckHook
+  # tests
+  hypothesis,
+  pytest-cov-stub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -26,26 +27,20 @@ buildPythonPackage rec {
     hash = "sha256-F52ly3NkrZ0H9XoomMqmWfLl+8X0z26Yx67DB8DUqyU=";
   };
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
   postPatch = ''
     substituteInPlace pytest.ini \
-      --replace "--cov=ndindex/ --cov-report=term-missing --flakes" ""
+      --replace "--flakes" ""
   '';
 
-  passthru.optional-dependencies.arrays = [
-    numpy
-  ];
+  passthru.optional-dependencies.arrays = [ numpy ];
 
-  pythonImportsCheck = [
-    "ndindex"
-  ];
+  pythonImportsCheck = [ "ndindex" ];
 
   nativeCheckInputs = [
     hypothesis
-    pytest-cov # uses cov markers
+    pytest-cov-stub
     pytestCheckHook
   ] ++ passthru.optional-dependencies.arrays;
 
@@ -54,6 +49,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Quansight-Labs/ndindex";
     changelog = "https://github.com/Quansight-Labs/ndindex/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ndjson/default.nix b/pkgs/development/python-modules/ndjson/default.nix
index 4bd84a73be0ac..37cc55f336660 100644
--- a/pkgs/development/python-modules/ndjson/default.nix
+++ b/pkgs/development/python-modules/ndjson/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, six
-, watchdog
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  six,
+  watchdog,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     watchdog
   ];
 
-  pythonImportsCheck = [
-    "ndjson"
-  ];
+  pythonImportsCheck = [ "ndjson" ];
 
   meta = with lib; {
     description = "Module supports ndjson";
diff --git a/pkgs/development/python-modules/ndms2-client/default.nix b/pkgs/development/python-modules/ndms2-client/default.nix
index ff872aa6f3861..573188d482ee7 100644
--- a/pkgs/development/python-modules/ndms2-client/default.nix
+++ b/pkgs/development/python-modules/ndms2-client/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,13 +19,9 @@ buildPythonPackage rec {
     hash = "sha256-A19olC1rTHTy0xyeSP45fqvv9GUynQSrMgXBgW8ySOs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "ndms2_client" ];
 
diff --git a/pkgs/development/python-modules/ndspy/default.nix b/pkgs/development/python-modules/ndspy/default.nix
index c4a7a6bf5578b..e6539d7caecb4 100644
--- a/pkgs/development/python-modules/ndspy/default.nix
+++ b/pkgs/development/python-modules/ndspy/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "ndspy";
-  version = "4.1.0";
+  version = "4.2.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -15,17 +16,13 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "RoadrunnerWMC";
     repo = pname;
-    rev = "v${version}";
-    hash = "sha256-V7phRZCA0WbUpYLgS/4nJbje/JM61RksDUZQ2pnbQyU=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-PQONVEuh5Fg2LHr4gq0XTGcOpps/s9FSgoyDn4BCcik=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ndspy"
-  ];
+  pythonImportsCheck = [ "ndspy" ];
 
   preCheck = ''
     cd tests
diff --git a/pkgs/development/python-modules/ndtypes/default.nix b/pkgs/development/python-modules/ndtypes/default.nix
index bf9c2ad59d6f8..d3eb0a25ed015 100644
--- a/pkgs/development/python-modules/ndtypes/default.nix
+++ b/pkgs/development/python-modules/ndtypes/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, python
-, numpy
-, libndtypes
-, isPy27
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  python,
+  numpy,
+  libndtypes,
+  isPy27,
 }:
 
 buildPythonPackage {
@@ -13,7 +14,10 @@ buildPythonPackage {
   disabled = isPy27;
   inherit (libndtypes) version src meta;
 
-  outputs = [ "out" "dev" ];
+  outputs = [
+    "out"
+    "dev"
+  ];
 
   propagatedBuildInputs = [ numpy ];
 
@@ -27,12 +31,14 @@ buildPythonPackage {
                 'runtime_library_dirs = ["${libndtypes}/lib"]'
   '';
 
-  postInstall = ''
-    mkdir $out/include
-    cp python/ndtypes/*.h $out/include
-  '' + lib.optionalString stdenv.isDarwin ''
-    install_name_tool -add_rpath ${libndtypes}/lib $out/${python.sitePackages}/ndtypes/_ndtypes.*.so
-  '';
+  postInstall =
+    ''
+      mkdir $out/include
+      cp python/ndtypes/*.h $out/include
+    ''
+    + lib.optionalString stdenv.hostPlatform.isDarwin ''
+      install_name_tool -add_rpath ${libndtypes}/lib $out/${python.sitePackages}/ndtypes/_ndtypes.*.so
+    '';
 
   checkPhase = ''
     pushd python
diff --git a/pkgs/development/python-modules/nebula3-python/default.nix b/pkgs/development/python-modules/nebula3-python/default.nix
index fbc52dd1fe2ed..c746e8c52180c 100644
--- a/pkgs/development/python-modules/nebula3-python/default.nix
+++ b/pkgs/development/python-modules/nebula3-python/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "nebula3-python";
-  version = "3.8.0";
+  version = "3.8.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "vesoft-inc";
     repo = "nebula-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-tpMm13iixtg3ZF4g7YgRLyd/VqJba51QPGPmFRpy0wA=";
+    hash = "sha256-XwrrT5Vuwqw57u3Xt9nS4NjmFG2VD62gWSVfeek2478=";
   };
 
   build-system = [ pdm-backend ];
diff --git a/pkgs/development/python-modules/nemosis/default.nix b/pkgs/development/python-modules/nemosis/default.nix
new file mode 100644
index 0000000000000..1d7252b12a91a
--- /dev/null
+++ b/pkgs/development/python-modules/nemosis/default.nix
@@ -0,0 +1,49 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  requests,
+  beautifulsoup4,
+  feather-format,
+  joblib,
+  openpyxl,
+  pandas,
+  pyarrow,
+  xlrd,
+}:
+
+buildPythonPackage rec {
+  pname = "nemosis";
+  version = "3.7.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "UNSW-CEEM";
+    repo = "NEMOSIS";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-7jIPBTvL7Y3945GEpa1/DQVdbPsSxVdYoOFTIaIgPag=";
+  };
+
+  build-system = [ setuptools ];
+  dependencies = [
+    beautifulsoup4
+    feather-format
+    joblib
+    openpyxl
+    pandas
+    pyarrow
+    requests
+    xlrd
+  ];
+
+  pythonImportsCheck = [ "nemosis" ];
+  doCheck = false; # require network and patching
+
+  meta = {
+    description = "Downloader of historical data published by the Australian Energy Market Operator";
+    homepage = "https://github.com/UNSW-CEEM/NEMOSIS";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/nengo/default.nix b/pkgs/development/python-modules/nengo/default.nix
index 86231c3f04017..915663c0b13fc 100644
--- a/pkgs/development/python-modules/nengo/default.nix
+++ b/pkgs/development/python-modules/nengo/default.nix
@@ -1,10 +1,13 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, setuptools
-, numpy
-, scipySupport ? false, scipy
-, scikitSupport ? false, scikit-learn
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  numpy,
+  scipySupport ? false,
+  scipy,
+  scikitSupport ? false,
+  scikit-learn,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +22,11 @@ buildPythonPackage rec {
     sha256 = "sha256-b9mPjKdewIqIeRrddV1/M3bghSyox7Lz6VbfSLCHZjA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [ numpy ]
-    ++ lib.optionals scipySupport [ scipy ]
-    ++ lib.optionals scikitSupport [ scikit-learn ];
+  propagatedBuildInputs = [
+    numpy
+  ] ++ lib.optionals scipySupport [ scipy ] ++ lib.optionals scikitSupport [ scikit-learn ];
 
   # checks req missing:
   #   pytest-allclose
@@ -36,9 +37,9 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "nengo" ];
 
   meta = with lib; {
-    description = "A Python library for creating and simulating large-scale brain models";
-    homepage    = "https://nengo.ai/";
-    license     = licenses.unfreeRedistributable;
+    description = "Python library for creating and simulating large-scale brain models";
+    homepage = "https://nengo.ai/";
+    license = licenses.unfreeRedistributable;
     maintainers = with maintainers; [ arjix ];
   };
 }
diff --git a/pkgs/development/python-modules/neo/default.nix b/pkgs/development/python-modules/neo/default.nix
index d23d2fdc57ed8..66cf09a955080 100644
--- a/pkgs/development/python-modules/neo/default.nix
+++ b/pkgs/development/python-modules/neo/default.nix
@@ -1,46 +1,52 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, numpy
-, packaging
-, quantities
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  packaging,
+  quantities,
+  pythonOlder,
+  setuptools,
+  pytestCheckHook,
+  pillow,
+  which,
 }:
 
 buildPythonPackage rec {
   pname = "neo";
-  version = "0.13.0";
+  version = "0.13.3";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-VnXR+jgaU8LH7ri16SnsA5neILsLUkU+G5nsbWbckfM=";
+  src = fetchFromGitHub {
+    owner = "NeuralEnsemble";
+    repo = "python-neo";
+    rev = "refs/tags/${version}";
+    hash = "sha256-7Q80vbQInVWxPCr6VvmI9tFfTIAzo9FPJ19q51Xd2KM=";
   };
 
-  nativeBuildInputs = [ setuptools ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
     packaging
     quantities
   ];
 
   nativeCheckInputs = [
-    nose
+    pytestCheckHook
+    pillow
+    which
   ];
 
-  checkPhase = ''
-    nosetests --exclude=iotest
-  '';
-
-  pythonImportsCheck = [
-    "neo"
+  disabledTestPaths = [
+    # Requires network and export HOME dir
+    "neo/test/rawiotest/test_maxwellrawio.py"
   ];
 
+  pythonImportsCheck = [ "neo" ];
+
   meta = with lib; {
     description = "Package for representing electrophysiology data";
     homepage = "https://neuralensemble.org/neo/";
diff --git a/pkgs/development/python-modules/neo4j/default.nix b/pkgs/development/python-modules/neo4j/default.nix
index bb1541fe72345..a9ff53af77ff6 100644
--- a/pkgs/development/python-modules/neo4j/default.nix
+++ b/pkgs/development/python-modules/neo4j/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "neo4j";
-  version = "5.20.0";
+  version = "5.25.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -22,13 +22,14 @@ buildPythonPackage rec {
     owner = "neo4j";
     repo = "neo4j-python-driver";
     rev = "refs/tags/${version}";
-    hash = "sha256-ebWEtsgVj2NLYAKe8z6ge6TvnPmXh0Mqkx0b+ZcOePY=";
+    hash = "sha256-aGUfyfN85JNOQSnnM+zep07cmLqq9YN1bc7UyH3uFWg=";
   };
 
   postPatch = ''
     # The dynamic versioning adds a postfix (.dev0) to the version
     substituteInPlace pyproject.toml \
-      --replace-fail '"tomlkit ~= 0.11.6"' '"tomlkit >= 0.11.6"' \
+      --replace-fail "setuptools ==" "setuptools >=" \
+      --replace-fail "tomlkit ==" "tomlkit >=" \
       --replace-fail 'dynamic = ["version", "readme"]' 'dynamic = ["readme"]' \
       --replace-fail '#readme = "README.rst"' 'version = "${version}"'
   '';
diff --git a/pkgs/development/python-modules/neoteroi-mkdocs/default.nix b/pkgs/development/python-modules/neoteroi-mkdocs/default.nix
index ee4c4a1723595..009123ed1b6b8 100644
--- a/pkgs/development/python-modules/neoteroi-mkdocs/default.nix
+++ b/pkgs/development/python-modules/neoteroi-mkdocs/default.nix
@@ -10,25 +10,22 @@
   jinja2,
   mkdocs,
   pytestCheckHook,
-  pythonImportsCheckHook,
   rich,
   setuptools,
 }:
 buildPythonPackage rec {
   pname = "neoteroi-mkdocs";
-  version = "1.0.5";
+  version = "1.1.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "Neoteroi";
     repo = "mkdocs-plugins";
     rev = "refs/tags/v${version}";
-    hash = "sha256-gpU3G1PeZTKO4fWr4x8Ek0GIBEP3oRAgu7OFn2OZbRE=";
+    hash = "sha256-qizF1Y3BUyr0ekoATJVa62q7gvpbMW3fIKViov2tFTI=";
   };
 
-  buildInputs = [
-    hatchling
-  ];
+  buildInputs = [ hatchling ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -49,15 +46,16 @@ buildPythonPackage rec {
     "test_contribs" # checks against its own git repository
   ];
 
-  pythonImportsCheck = [
-    "neoteroi.mkdocs"
-  ];
+  pythonImportsCheck = [ "neoteroi.mkdocs" ];
 
   meta = with lib; {
     homepage = "https://github.com/Neoteroi/mkdocs-plugins";
     description = "Plugins for MkDocs";
     changelog = "https://github.com/Neoteroi/mkdocs-plugins/releases/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [aldoborrero zimbatm];
+    maintainers = with maintainers; [
+      aldoborrero
+      zimbatm
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/nessclient/default.nix b/pkgs/development/python-modules/nessclient/default.nix
index 73b6d83dbe86a..b13dbcba2068b 100644
--- a/pkgs/development/python-modules/nessclient/default.nix
+++ b/pkgs/development/python-modules/nessclient/default.nix
@@ -1,47 +1,54 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, justbackoff
-, pythonOlder
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  justbackoff,
+  pyserial-asyncio,
+  pythonOlder,
+  pytest-asyncio,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "nessclient";
-  version = "1.0.0";
-  format = "setuptools";
+  version = "1.1.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "nickw444";
-    repo = pname;
+    repo = "nessclient";
     rev = "refs/tags/${version}";
-    hash = "sha256-UqHXKfS4zF1YhFbNKSVESmsxD0CYJKOmjMOE3blGdI8=";
+    hash = "sha256-STDEIY7D02MlH+R6uLAKl6ghSQjhG1OEQWj71DrZP30=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     justbackoff
-    click
+    pyserial-asyncio
   ];
 
+  optional-dependencies = {
+    cli = [ click ];
+  };
+
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "nessclient"
-  ];
+  pythonImportsCheck = [ "nessclient" ];
 
   meta = with lib; {
     description = "Python implementation/abstraction of the Ness D8x/D16x Serial Interface ASCII protocol";
-    mainProgram = "ness-cli";
     homepage = "https://github.com/nickw444/nessclient";
     changelog = "https://github.com/nickw444/nessclient/releases/tag/${version}";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "ness-cli";
   };
 }
diff --git a/pkgs/development/python-modules/nest-asyncio/default.nix b/pkgs/development/python-modules/nest-asyncio/default.nix
index 3daac2f31d161..f73c569fddacc 100644
--- a/pkgs/development/python-modules/nest-asyncio/default.nix
+++ b/pkgs/development/python-modules/nest-asyncio/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -26,19 +27,15 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "nest_asyncio"
-  ];
+  pythonImportsCheck = [ "nest_asyncio" ];
 
   meta = with lib; {
     description = "Patch asyncio to allow nested event loops";
     homepage = "https://github.com/erdewit/nest_asyncio";
     changelog = "https://github.com/erdewit/nest_asyncio/releases/tag/v${version}";
     license = licenses.bsdOriginal;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/nested-lookup/default.nix b/pkgs/development/python-modules/nested-lookup/default.nix
index 0a59a372d00e5..3eff01d9480d7 100644
--- a/pkgs/development/python-modules/nested-lookup/default.nix
+++ b/pkgs/development/python-modules/nested-lookup/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
-, pytestCheckHook
-, six
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  pytestCheckHook,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -15,13 +16,9 @@ buildPythonPackage rec {
     hash = "sha256-b6gydIyQOB8ikdhQgJ4ySSUZ7l8lPWpay8Kdk37KAug=";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "nested_lookup" ];
 
diff --git a/pkgs/development/python-modules/nestedtext/default.nix b/pkgs/development/python-modules/nestedtext/default.nix
index d0a925859d03c..39fa93e4a2cf5 100644
--- a/pkgs/development/python-modules/nestedtext/default.nix
+++ b/pkgs/development/python-modules/nestedtext/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, docopt
-, fetchFromGitHub
-, flit-core
-, hypothesis
-, inform
-, nestedtext
-, pytestCheckHook
-, pythonOlder
-, quantiphy
-, voluptuous
+{
+  lib,
+  buildPythonPackage,
+  docopt,
+  fetchFromGitHub,
+  flit-core,
+  hypothesis,
+  inform,
+  nestedtext,
+  pytestCheckHook,
+  pythonOlder,
+  quantiphy,
+  voluptuous,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     hash = "sha256-lNqSmEmzuRGdXs/4mwKSh7yDGHnAykpIDIR+abbLCns=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    inform
-  ];
+  propagatedBuildInputs = [ inform ];
 
   nativeCheckInputs = [
     docopt
@@ -57,15 +54,15 @@ buildPythonPackage rec {
   ];
 
   passthru.tests = {
-    runTests = nestedtext.overrideAttrs (_: { doCheck = true; });
+    runTests = nestedtext.overrideAttrs (_: {
+      doCheck = true;
+    });
   };
 
-  pythonImportsCheck = [
-    "nestedtext"
-  ];
+  pythonImportsCheck = [ "nestedtext" ];
 
   meta = with lib; {
-    description = "A human friendly data format";
+    description = "Human friendly data format";
     longDescription = ''
       NestedText is a file format for holding data that is to be entered,
       edited, or viewed by people. It allows data to be organized into a nested
diff --git a/pkgs/development/python-modules/netaddr/default.nix b/pkgs/development/python-modules/netaddr/default.nix
index bcb478e238b96..8d04bc106b075 100644
--- a/pkgs/development/python-modules/netaddr/default.nix
+++ b/pkgs/development/python-modules/netaddr/default.nix
@@ -1,37 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "netaddr";
-  version = "1.2.1";
+  version = "1.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-brj+3wQSxtKU0GiFwRDelFz00i0rUQ0EBPTgaVCFeYc=";
+    hash = "sha256-XDw9mJW1Ubdjd5un23oDSH3B+OOzha+BmvNBrp725Io=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "netaddr"
-  ];
+  pythonImportsCheck = [ "netaddr" ];
 
   meta = with lib; {
-    description = "A network address manipulation library for Python";
+    description = "Network address manipulation library for Python";
     mainProgram = "netaddr";
     homepage = "https://netaddr.readthedocs.io/";
     downloadPage = "https://github.com/netaddr/netaddr/releases";
diff --git a/pkgs/development/python-modules/netapp-lib/default.nix b/pkgs/development/python-modules/netapp-lib/default.nix
index b84ff5613ecc3..478831a9112e0 100644
--- a/pkgs/development/python-modules/netapp-lib/default.nix
+++ b/pkgs/development/python-modules/netapp-lib/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, lxml
-, six
-, xmltodict
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  lxml,
+  six,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
@@ -13,7 +14,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-1g4FCSMyS8T6F/T8BOqak4h1nJis8g9jaOluA4FTNpA=";
+    hash = "sha256-1g4FCSMyS8T6F/T8BOqak4h1nJis8g9jaOluA4FTNpA=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/netapp-ontap/default.nix b/pkgs/development/python-modules/netapp-ontap/default.nix
index a770cb63b0b2f..78d4c23fd6cce 100644
--- a/pkgs/development/python-modules/netapp-ontap/default.nix
+++ b/pkgs/development/python-modules/netapp-ontap/default.nix
@@ -1,27 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cliche
-, marshmallow
-, pytestCheckHook
-, recline
-, requests
-, requests-toolbelt
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  cliche,
+  fetchPypi,
+  marshmallow,
+  pythonOlder,
+  recline,
+  requests,
+  requests-toolbelt,
+  setuptools,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "netapp-ontap";
-  version = "9.14.1.0";
-  format = "setuptools";
+  version = "9.15.1.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     pname = "netapp_ontap";
     inherit version;
-    sha256 = "sha256-nh7SHcyujTVXSgxQajRA4EueN6Hf8cKueQbsbnr6+qw=";
+    hash = "sha256-rzME9JdaaXW1JOtfcjb5mlwSl4dy7lofnKOB6X6kWuM=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     marshmallow
     requests
     requests-toolbelt
@@ -31,16 +37,16 @@ buildPythonPackage rec {
     recline
   ];
 
-  # no tests in sdist and no other download available
+  # No tests in sdist and no other download available
   doCheck = false;
 
   pythonImportsCheck = [ "netapp_ontap" ];
 
   meta = with lib; {
-    description = "A library for working with ONTAP's REST APIs simply in Python";
-    mainProgram = "ontap-cli";
+    description = "Library for working with ONTAP's REST APIs simply in Python";
     homepage = "https://devnet.netapp.com/restapi.php";
     license = licenses.bsd3;
     maintainers = with maintainers; [ SuperSandro2000 ];
+    mainProgram = "ontap-cli";
   };
 }
diff --git a/pkgs/development/python-modules/netbox-reorder-rack/default.nix b/pkgs/development/python-modules/netbox-reorder-rack/default.nix
new file mode 100644
index 0000000000000..bb079f2eda346
--- /dev/null
+++ b/pkgs/development/python-modules/netbox-reorder-rack/default.nix
@@ -0,0 +1,41 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  netbox,
+  python,
+}:
+
+buildPythonPackage rec {
+  pname = "netbox-reorder-rack";
+  version = "1.0.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "netbox-community";
+    repo = "netbox-reorder-rack";
+    rev = "v${version}";
+    hash = "sha256-UbTq3DHxSczDxQIUyAHCVJG3SZdqgyS9ULNvuDKQvEY=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+
+  checkInputs = [ netbox ];
+
+  preFixup = ''
+    export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
+  '';
+
+  dontUsePythonImportsCheck = python.pythonVersion != netbox.python.pythonVersion;
+  pythonImportsCheck = [ "netbox_reorder_rack" ];
+
+  meta = with lib; {
+    description = "NetBox plugin to allow users to reorder devices within a rack using a drag and drop UI";
+    homepage = "https://github.com/minitriga/netbox-reorder-rack/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ minijackson ];
+  };
+}
diff --git a/pkgs/development/python-modules/netcdf4/default.nix b/pkgs/development/python-modules/netcdf4/default.nix
index 39994519db17b..911ea8afefd95 100644
--- a/pkgs/development/python-modules/netcdf4/default.nix
+++ b/pkgs/development/python-modules/netcdf4/default.nix
@@ -1,25 +1,27 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, isPyPy
-, python
-, oldest-supported-numpy
-, setuptools
-, wheel
-, numpy
-, zlib
-, netcdf
-, hdf5
-, curl
-, libjpeg
-, cython
-, cftime
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  python,
+  oldest-supported-numpy,
+  setuptools,
+  wheel,
+  certifi,
+  numpy,
+  zlib,
+  netcdf,
+  hdf5,
+  curl,
+  libjpeg,
+  cython,
+  cftime,
 }:
 
 buildPythonPackage rec {
   pname = "netcdf4";
-  version = "1.6.2";
+  version = "1.6.5";
   format = "pyproject";
 
   disabled = isPyPy;
@@ -27,7 +29,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "netCDF4";
     inherit version;
-    hash = "sha256-A4KwL/aiiEGfb/7IXexA9FH0G4dVVHFUxXXd2fD0rlM=";
+    hash = "sha256-gkiB0KrP3lvZgtat7dhXQlnIVVN4HnuD4M6CuJC/oO8=";
   };
 
   nativeBuildInputs = [
@@ -38,6 +40,7 @@ buildPythonPackage rec {
   ];
 
   propagatedBuildInputs = [
+    certifi
     cftime
     numpy
     zlib
@@ -59,9 +62,7 @@ buildPythonPackage rec {
     NETCDF4_DIR = netcdf;
     CURL_DIR = curl.dev;
     JPEG_DIR = libjpeg.dev;
-  } // lib.optionalAttrs stdenv.cc.isClang {
-    NIX_CFLAGS_COMPILE = "-Wno-error=int-conversion";
-  };
+  } // lib.optionalAttrs stdenv.cc.isClang { NIX_CFLAGS_COMPILE = "-Wno-error=int-conversion"; };
 
   pythonImportsCheck = [ "netCDF4" ];
 
@@ -69,7 +70,7 @@ buildPythonPackage rec {
     description = "Interface to netCDF library (versions 3 and 4)";
     homepage = "https://github.com/Unidata/netcdf4-python";
     changelog = "https://github.com/Unidata/netcdf4-python/raw/v${version}/Changelog";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/netdata-pandas/default.nix b/pkgs/development/python-modules/netdata-pandas/default.nix
new file mode 100644
index 0000000000000..01fb2d65c65c2
--- /dev/null
+++ b/pkgs/development/python-modules/netdata-pandas/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools
+, pandas
+, requests
+, trio
+, asks
+}:
+
+buildPythonPackage rec {
+  pname = "netdata-pandas";
+  version = "0.0.41";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "netdata";
+    repo = "netdata-pandas";
+    rev = "v${version}";
+    hash = "sha256-AXt8BKWyM3glm5hrRryb+vBzs3z2x61HhbR6DDZkh9o=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+  ];
+
+  propagatedBuildInputs = [
+    pandas
+    requests
+    trio
+    asks
+  ];
+
+  pythonImportsCheck = [ "netdata_pandas" ];
+
+  meta = with lib; {
+    description = "A helper library to pull data from the netdata REST API into a pandas dataframe.";
+    homepage = "https://github.com/netdata/netdata-pandas";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ raitobezarius ];
+  };
+}
diff --git a/pkgs/development/python-modules/netdata/default.nix b/pkgs/development/python-modules/netdata/default.nix
index a585aa5975e90..7799bddb8589e 100644
--- a/pkgs/development/python-modules/netdata/default.nix
+++ b/pkgs/development/python-modules/netdata/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, httpx
-, pytest-asyncio
-, pytest-httpx
-, pytestCheckHook
-, yarl
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  httpx,
+  pytest-asyncio,
+  pytest-httpx,
+  pytestCheckHook,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-ViiGh5CsRpMJ6zvPmje+eB5LuO6t47bjObaYh5a2Kw8=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     httpx
@@ -39,9 +38,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "netdata"
-  ];
+  pythonImportsCheck = [ "netdata" ];
 
   meta = with lib; {
     description = "Python API for interacting with Netdata";
diff --git a/pkgs/development/python-modules/netdisco/default.nix b/pkgs/development/python-modules/netdisco/default.nix
index 6ea7841dff875..db1d17de07caf 100644
--- a/pkgs/development/python-modules/netdisco/default.nix
+++ b/pkgs/development/python-modules/netdisco/default.nix
@@ -1,4 +1,12 @@
-{ lib, buildPythonPackage, isPy3k, fetchPypi, requests, zeroconf, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  isPy3k,
+  fetchPypi,
+  requests,
+  zeroconf,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "netdisco";
@@ -12,7 +20,10 @@ buildPythonPackage rec {
     hash = "sha256-TbtZBILzd8zEYeAXQnB8y+jx0tGyhXivkdybf+vNy9I=";
   };
 
-  propagatedBuildInputs = [ requests zeroconf ];
+  propagatedBuildInputs = [
+    requests
+    zeroconf
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
diff --git a/pkgs/development/python-modules/nethsm/default.nix b/pkgs/development/python-modules/nethsm/default.nix
index 902fa62e33873..189bb4aa813b0 100644
--- a/pkgs/development/python-modules/nethsm/default.nix
+++ b/pkgs/development/python-modules/nethsm/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonRelaxDepsHook
-, flit-core
-, certifi
-, cryptography
-, python-dateutil
-, typing-extensions
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  certifi,
+  cryptography,
+  python-dateutil,
+  typing-extensions,
+  urllib3,
 }:
 
 let
   pname = "nethsm";
-  version = "1.0.0";
+  version = "1.2.1";
 in
 
 buildPythonPackage {
@@ -21,7 +21,7 @@ buildPythonPackage {
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-sENuSdA4pYt8v2w2RvDkcQLYCP9V0vZOdWOlkNBi3/o=";
+    hash = "sha256-EPxGJFCGGl3p3yLlM7NH7xtEVS2woRigKJhL57A0gAE=";
   };
 
   propagatedBuildInputs = [
@@ -34,7 +34,6 @@ buildPythonPackage {
 
   nativeBuildInputs = [
     flit-core
-    pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = true;
diff --git a/pkgs/development/python-modules/netifaces/default.nix b/pkgs/development/python-modules/netifaces/default.nix
index 6d34bc3df4a57..8133131a4277d 100644
--- a/pkgs/development/python-modules/netifaces/default.nix
+++ b/pkgs/development/python-modules/netifaces/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,14 +20,12 @@ buildPythonPackage rec {
   # No tests implemented
   doCheck = false;
 
-  pythonImportsCheck = [
-    "netifaces"
-  ];
+  pythonImportsCheck = [ "netifaces" ];
 
   meta = with lib; {
     description = "Portable access to network interfaces from Python";
     homepage = "https://github.com/al45tair/netifaces";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/netio/default.nix b/pkgs/development/python-modules/netio/default.nix
index 29159d6288bae..305b177b82455 100644
--- a/pkgs/development/python-modules/netio/default.nix
+++ b/pkgs/development/python-modules/netio/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pyopenssl
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pyopenssl,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -24,21 +24,16 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "pyopenssl"
-  ];
+  pythonRelaxDeps = [ "pyopenssl" ];
 
   propagatedBuildInputs = [
     requests
     pyopenssl
   ];
 
-  pythonImportsCheck = [
-    "Netio"
-  ];
+  pythonImportsCheck = [ "Netio" ];
 
   # Module has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/netmap/default.nix b/pkgs/development/python-modules/netmap/default.nix
index 11133c44f8808..c863ae189dcb8 100644
--- a/pkgs/development/python-modules/netmap/default.nix
+++ b/pkgs/development/python-modules/netmap/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, substituteAll
-, nmap
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  substituteAll,
+  nmap,
+  python,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/netmiko/default.nix b/pkgs/development/python-modules/netmiko/default.nix
index f893ce204455b..868de524a05e0 100644
--- a/pkgs/development/python-modules/netmiko/default.nix
+++ b/pkgs/development/python-modules/netmiko/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-
-# build-system
-, poetry-core
-
-# dependencies
-, ntc-templates
-, paramiko
-, pyserial
-, pyyaml
-, scp
-, textfsm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  ntc-templates,
+  paramiko,
+  pyserial,
+  pyyaml,
+  scp,
+  textfsm,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
       --replace "poetry.masonry.api" "poetry.core.masonry.api"
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     ntc-templates
@@ -47,8 +46,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description =
-      "Multi-vendor library to simplify Paramiko SSH connections to network devices";
+    description = "Multi-vendor library to simplify Paramiko SSH connections to network devices";
     homepage = "https://github.com/ktbyers/netmiko/";
     license = licenses.mit;
     maintainers = [ maintainers.astro ];
diff --git a/pkgs/development/python-modules/nettigo-air-monitor/default.nix b/pkgs/development/python-modules/nettigo-air-monitor/default.nix
index a33f9d5286307..347f256921dd4 100644
--- a/pkgs/development/python-modules/nettigo-air-monitor/default.nix
+++ b/pkgs/development/python-modules/nettigo-air-monitor/default.nix
@@ -12,11 +12,12 @@
   pythonOlder,
   setuptools,
   syrupy,
+  tenacity,
 }:
 
 buildPythonPackage rec {
   pname = "nettigo-air-monitor";
-  version = "3.0.0";
+  version = "3.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -25,7 +26,7 @@ buildPythonPackage rec {
     owner = "bieniu";
     repo = "nettigo-air-monitor";
     rev = "refs/tags/${version}";
-    hash = "sha256-aiJoY+6sNfBmE1057UuMjV80hjVJ29t2X16IIe6dxWs=";
+    hash = "sha256-u4BfmdSP7UbwuS04MzsKRTWIsztBoNawcLXwhy4P4YA=";
   };
 
   build-system = [ setuptools ];
@@ -34,6 +35,7 @@ buildPythonPackage rec {
     aiohttp
     aqipy-atmotech
     dacite
+    tenacity
   ];
 
   nativeCheckInputs = [
@@ -44,6 +46,12 @@ buildPythonPackage rec {
     syrupy
   ];
 
+  disabledTests = [
+    # stuck in epoll
+    "test_retry_fail"
+    "test_retry_success"
+  ];
+
   pythonImportsCheck = [ "nettigo_air_monitor" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/netutils/default.nix b/pkgs/development/python-modules/netutils/default.nix
index 93b1d2b2e3bbf..04ab642d75d69 100644
--- a/pkgs/development/python-modules/netutils/default.nix
+++ b/pkgs/development/python-modules/netutils/default.nix
@@ -1,6 +1,5 @@
 {
   lib,
-  stdenv,
   buildPythonPackage,
   fetchFromGitHub,
   jinja2,
@@ -15,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "netutils";
-  version = "1.8.0";
+  version = "1.10.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,7 +23,7 @@ buildPythonPackage rec {
     owner = "networktocode";
     repo = "netutils";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Eqs/YkU2XrjD7x2WgvvR89/Pdi9AW9vhw3alJ8kIDgc=";
+    hash = "sha256-VhX0KDlGf0J6fiO1RzOoqJ4WMDM8Bb2+lYYMlgQ9nkc=";
   };
 
   build-system = [ poetry-core ];
@@ -66,6 +65,5 @@ buildPythonPackage rec {
     changelog = "https://github.com/networktocode/netutils/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
-    broken = stdenv.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/networkx/default.nix b/pkgs/development/python-modules/networkx/default.nix
index 0c4993cdd6943..eb3051d8e14bd 100644
--- a/pkgs/development/python-modules/networkx/default.nix
+++ b/pkgs/development/python-modules/networkx/default.nix
@@ -1,42 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# optional-dependencies
-, lxml
-, matplotlib
-, numpy
-, pandas
-, pydot
-, pygraphviz
-, scipy
-, sympy
+  # optional-dependencies
+  lxml,
+  matplotlib,
+  numpy,
+  pandas,
+  pydot,
+  pygraphviz,
+  scipy,
+  sympy,
 
-# tests
-, pytest-xdist
-, pytestCheckHook
+  # tests
+  pytest-xdist,
+  pytestCheckHook,
+
+  # reverse dependency
+  sage,
 }:
 
 buildPythonPackage rec {
   pname = "networkx";
   # upgrade may break sage, please test the sage build or ping @timokau on upgrade
-  version = "3.2.1";
+  version = "3.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-nxu1zzQJvzJOCnIsIL20wg7jm/HDDOiuSZyFArC14MY=";
+    hash = "sha256-DBJ9iy9IZfWa6cuKr81gtccPMkHr1m997618SrkBJsk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   passthru.optional-dependencies = {
     default = [
@@ -53,6 +55,10 @@ buildPythonPackage rec {
     ];
   };
 
+  passthru.tests = {
+    inherit sage;
+  };
+
   nativeCheckInputs = [
     pytest-xdist
     pytestCheckHook
diff --git a/pkgs/development/python-modules/neuralfoil/default.nix b/pkgs/development/python-modules/neuralfoil/default.nix
new file mode 100644
index 0000000000000..f217b740e17e4
--- /dev/null
+++ b/pkgs/development/python-modules/neuralfoil/default.nix
@@ -0,0 +1,39 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  numpy,
+  aerosandbox,
+  pytestCheckHook,
+}:
+
+buildPythonPackage {
+  pname = "neuralfoil";
+  version = "0.2.3";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "peterdsharpe";
+    repo = "NeuralFoil";
+    rev = "46cda4041134d1b1794d3a81761d8d3e63f20855";
+    hash = "sha256-kbPHPJh8xcIdPYIiaxwYqpfcnYzzDD6F0tG3flR0j3M=";
+  };
+
+  build-system = [ setuptools ];
+  dependencies = [
+    numpy
+    aerosandbox
+  ];
+
+  pythonImportsCheck = [ "neuralfoil" ];
+
+  nativeBuildInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "Airfoil aerodynamics analysis tool using physics-informed machine learning, in pure Python/NumPy";
+    homepage = "https://github.com/peterdsharpe/NeuralFoil";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/nevow/default.nix b/pkgs/development/python-modules/nevow/default.nix
index af5b5374b5b04..65350eb230b18 100644
--- a/pkgs/development/python-modules/nevow/default.nix
+++ b/pkgs/development/python-modules/nevow/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k, twisted }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  twisted,
+}:
 
 buildPythonPackage rec {
   pname = "nevow";
diff --git a/pkgs/development/python-modules/newick/default.nix b/pkgs/development/python-modules/newick/default.nix
index 317a9c582b3de..ccda2606a56ff 100644
--- a/pkgs/development/python-modules/newick/default.nix
+++ b/pkgs/development/python-modules/newick/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools-scm
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,25 +20,19 @@ buildPythonPackage rec {
     hash = "sha256-TxyR6RYvy2oIcDNZnHrExtPYGspyWOtZqNy488OmWwk=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   postPatch = ''
     # remove coverage arguments to pytest
     sed -i '/--cov/d' setup.cfg
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "newick"
-  ];
+  pythonImportsCheck = [ "newick" ];
 
   meta = with lib; {
-    description = "A python package to read and write the Newick format";
+    description = "Python package to read and write the Newick format";
     homepage = "https://github.com/dlce-eva/python-newick";
     license = licenses.asl20;
     maintainers = with maintainers; [ alxsimon ];
diff --git a/pkgs/development/python-modules/newversion/default.nix b/pkgs/development/python-modules/newversion/default.nix
index fec4f1b0f41f7..5017d68ebe4d8 100644
--- a/pkgs/development/python-modules/newversion/default.nix
+++ b/pkgs/development/python-modules/newversion/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, packaging
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  packaging,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-v9hfk2/hBkWtOobQdaYXNOZTTcEqnMV6JYqtjjoidOs=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    packaging
-  ];
+  propagatedBuildInputs = [ packaging ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "newversion"
-  ];
+  pythonImportsCheck = [ "newversion" ];
 
   meta = with lib; {
     description = "PEP 440 version manager";
diff --git a/pkgs/development/python-modules/nexia/default.nix b/pkgs/development/python-modules/nexia/default.nix
index 79edcd2d1bdfc..48fa24155c7c1 100644
--- a/pkgs/development/python-modules/nexia/default.nix
+++ b/pkgs/development/python-modules/nexia/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, aioresponses
-, buildPythonPackage
-, orjson
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
-, setuptools
+{
+  lib,
+  aioresponses,
+  buildPythonPackage,
+  orjson,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
       --replace '"pytest-runner",' ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     orjson
@@ -46,9 +45,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "nexia"
-  ];
+  pythonImportsCheck = [ "nexia" ];
 
   meta = with lib; {
     description = "Python module for Nexia thermostats";
diff --git a/pkgs/development/python-modules/nextcloudmonitor/default.nix b/pkgs/development/python-modules/nextcloudmonitor/default.nix
index 473f7b6b59047..57efaa937ff74 100644
--- a/pkgs/development/python-modules/nextcloudmonitor/default.nix
+++ b/pkgs/development/python-modules/nextcloudmonitor/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "nextcloudmonitor";
-  version = "1.5.0";
+  version = "1.5.1";
 
   format = "setuptools";
 
@@ -14,12 +15,10 @@ buildPythonPackage rec {
     owner = "meichthys";
     repo = "nextcloud_monitor";
     rev = "refs/tags/v${version}";
-    hash = "sha256-3RVGE1vMLtVkZ4+/GwnNs4onctSw1dz6bsV1CC/gnpM=";
+    hash = "sha256-HQLaHuvXWtHkG1dzD7ldvYKepTB4qQqzpKLYMR+lor4=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # no tests implemented
   doCheck = false;
diff --git a/pkgs/development/python-modules/nextcord/default.nix b/pkgs/development/python-modules/nextcord/default.nix
index 4a5faf4c33a8e..83b34084a0a54 100644
--- a/pkgs/development/python-modules/nextcord/default.nix
+++ b/pkgs/development/python-modules/nextcord/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, substituteAll
-, ffmpeg
-, libopus
-, aiohttp
-, aiodns
-, brotli
-, faust-cchardet
-, orjson
-, pynacl
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  substituteAll,
+  ffmpeg,
+  libopus,
+  aiohttp,
+  aiodns,
+  brotli,
+  faust-cchardet,
+  orjson,
+  pynacl,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/nextdns/default.nix b/pkgs/development/python-modules/nextdns/default.nix
index 9b84c400e5298..ec762c7050d6b 100644
--- a/pkgs/development/python-modules/nextdns/default.nix
+++ b/pkgs/development/python-modules/nextdns/default.nix
@@ -4,18 +4,18 @@
   aioresponses,
   buildPythonPackage,
   fetchFromGitHub,
-  orjson,
   pytest-asyncio,
   pytest-error-for-skips,
   pytestCheckHook,
   pythonOlder,
   setuptools,
   syrupy,
+  tenacity,
 }:
 
 buildPythonPackage rec {
   pname = "nextdns";
-  version = "3.0.0";
+  version = "3.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -24,14 +24,14 @@ buildPythonPackage rec {
     owner = "bieniu";
     repo = "nextdns";
     rev = "refs/tags/${version}";
-    hash = "sha256-ka/VT7c72la4z/BVAWnV06MxVmu52ZcJ4GsEeP7vbKA=";
+    hash = "sha256-WNdS8sAW7Ci8w8diYIsrVADvpgMSDuM0NLBTw7irzKg=";
   };
 
   build-system = [ setuptools ];
 
   dependencies = [
     aiohttp
-    orjson
+    tenacity
   ];
 
   nativeCheckInputs = [
@@ -42,6 +42,12 @@ buildPythonPackage rec {
     syrupy
   ];
 
+  disabledTests = [
+    # mocked object called too many times
+    "test_retry_error"
+    "test_retry_success"
+  ];
+
   pythonImportsCheck = [ "nextdns" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/nexusformat/default.nix b/pkgs/development/python-modules/nexusformat/default.nix
new file mode 100644
index 0000000000000..7a9ea2e698bec
--- /dev/null
+++ b/pkgs/development/python-modules/nexusformat/default.nix
@@ -0,0 +1,53 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+
+  # tests
+  pytestCheckHook,
+
+  # dependencies
+  h5py,
+  hdf5plugin,
+  numpy,
+  scipy,
+}:
+
+buildPythonPackage rec {
+  pname = "nexusformat";
+  version = "1.0.6";
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-UxU3PA/2r/uamdysbfC0L2JinHgfkXhssHIo2hf3zlA=";
+  };
+
+  pyproject = true;
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    h5py
+    hdf5plugin
+    numpy
+    scipy
+  ];
+
+  pythonImportsCheck = [ "nexusformat.nexus" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = with lib; {
+    description = "Python API to open, create, and manipulate NeXus data written in the HDF5 format";
+    homepage = "https://github.com/nexpy/nexusformat";
+    changelog = "https://github.com/nexpy/nexusformat/releases/tag/${version}";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ oberth-effect ];
+  };
+}
diff --git a/pkgs/development/python-modules/nfcpy/default.nix b/pkgs/development/python-modules/nfcpy/default.nix
index bf5f538da33c4..35500ccd6a11f 100644
--- a/pkgs/development/python-modules/nfcpy/default.nix
+++ b/pkgs/development/python-modules/nfcpy/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, libusb1
-, mock
-, ndeflib
-, pydes
-, pyserial
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  libusb1,
+  mock,
+  ndeflib,
+  pydes,
+  pyserial,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -38,9 +39,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "nfc"
-  ];
+  pythonImportsCheck = [ "nfc" ];
 
   disabledTestPaths = [
     # AttributeError: 'NoneType' object has no attribute 'EC_KEY'
@@ -51,11 +50,10 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A Python module to read/write NFC tags or communicate with another NFC device";
+    description = "Python module to read/write NFC tags or communicate with another NFC device";
     homepage = "https://github.com/nfcpy/nfcpy";
     changelog = "https://github.com/nfcpy/nfcpy/blob/v${version}/HISTORY.rst";
     license = licenses.eupl11;
     maintainers = with maintainers; [ fab ];
   };
 }
-
diff --git a/pkgs/development/python-modules/nh3/default.nix b/pkgs/development/python-modules/nh3/default.nix
index 5c627edadeeb8..f438525e51829 100644
--- a/pkgs/development/python-modules/nh3/default.nix
+++ b/pkgs/development/python-modules/nh3/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, rustPlatform
-, libiconv
-, fetchFromGitHub
-, darwin
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  rustPlatform,
+  libiconv,
+  fetchFromGitHub,
+  darwin,
 }:
 let
   pname = "nh3";
-  version = "0.2.15";
+  version = "0.2.17";
   src = fetchFromGitHub {
     owner = "messense";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-OyTehgnjmDALU2qPRL/HrvoAMyIsmYuTKFlOJT8r+Gk=";
+    hash = "sha256-j9OoXAuuCWsBHanN+SzSip94ZA+kY8HUVvfY/omUSSM=";
   };
 in
 buildPythonPackage {
@@ -25,12 +26,15 @@ buildPythonPackage {
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-fetAE3cj9hh4SoPE72Bqco5ytUMiDqbazeS2MHdUibM=";
+    hash = "sha256-WomlVzKOUfcgAWGJInSvZn9hm+bFpgc4nJbRiyPCU64=";
   };
 
-  nativeBuildInputs = with rustPlatform; [ cargoSetupHook maturinBuildHook ];
+  nativeBuildInputs = with rustPlatform; [
+    cargoSetupHook
+    maturinBuildHook
+  ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
     libiconv
     darwin.apple_sdk.frameworks.Security
   ];
diff --git a/pkgs/development/python-modules/niaaml/default.nix b/pkgs/development/python-modules/niaaml/default.nix
index 8559087214906..30197c1683390 100644
--- a/pkgs/development/python-modules/niaaml/default.nix
+++ b/pkgs/development/python-modules/niaaml/default.nix
@@ -1,38 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, niapy
-, numpy
-, pandas
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, scikit-learn
-, toml-adapt
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  niapy,
+  numpy,
+  pandas,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  scikit-learn,
+  toml-adapt,
 }:
 
 buildPythonPackage rec {
   pname = "niaaml";
-  version = "1.2.0";
+  version = "2.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
-    owner = "lukapecnik";
+    owner = "firefly-cpp";
     repo = "NiaAML";
     rev = "refs/tags/${version}";
-    hash = "sha256-jGbsxYlRJ81g74LqSKpquciPsLP+KSoNBTJPEaD/CHM=";
+    hash = "sha256-VMZLEirE01Q9eyQIhV18PepGWmBcxLIwNeuVf7EuSWE=";
   };
 
-  pythonRelaxDeps = [
-    "pandas"
-  ];
+  pythonRelaxDeps = [ "pandas" ];
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
     toml-adapt
   ];
 
@@ -49,18 +46,14 @@ buildPythonPackage rec {
     toml-adapt -path pyproject.toml -a change -dep niapy -ver X
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "niaaml"
-  ];
+  pythonImportsCheck = [ "niaaml" ];
 
   meta = with lib; {
     description = "Python automated machine learning framework";
-    homepage = "https://github.com/lukapecnik/NiaAML";
-    changelog = "https://github.com/lukapecnik/NiaAML/releases/tag/${version}";
+    homepage = "https://github.com/firefly-cpp/NiaAML";
+    changelog = "https://github.com/firefly-cpp/NiaAML/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ firefly-cpp ];
   };
diff --git a/pkgs/development/python-modules/niaarm/default.nix b/pkgs/development/python-modules/niaarm/default.nix
index ff61dfd1eb8de..31060540d170c 100644
--- a/pkgs/development/python-modules/niaarm/default.nix
+++ b/pkgs/development/python-modules/niaarm/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, niapy
-, nltk
-, numpy
-, pandas
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, tomli
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  niapy,
+  nltk,
+  numpy,
+  pandas,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  tomli,
 }:
 
 buildPythonPackage rec {
@@ -25,34 +26,26 @@ buildPythonPackage rec {
     hash = "sha256-J3126RSJYBCSyxoPsvsDgmx9E+9fP2h6avPiCHISL7c=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     niapy
     nltk
     numpy
     pandas
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   disabledTests = [
     # Test requires extra nltk data dependency
     "test_text_mining"
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "niaarm"
-  ];
+  pythonImportsCheck = [ "niaarm" ];
 
   meta = with lib; {
-    description = "A minimalistic framework for Numerical Association Rule Mining";
+    description = "Minimalistic framework for Numerical Association Rule Mining";
     mainProgram = "niaarm";
     homepage = "https://github.com/firefly-cpp/NiaARM";
     changelog = "https://github.com/firefly-cpp/NiaARM/blob/${version}/CHANGELOG.md";
diff --git a/pkgs/development/python-modules/niaclass/default.nix b/pkgs/development/python-modules/niaclass/default.nix
index 796bb17063f97..3240ea92711f8 100644
--- a/pkgs/development/python-modules/niaclass/default.nix
+++ b/pkgs/development/python-modules/niaclass/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, niapy
-, numpy
-, pandas
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, scikit-learn
-, toml-adapt
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  niapy,
+  numpy,
+  pandas,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  scikit-learn,
+  toml-adapt,
 }:
 
 buildPythonPackage rec {
@@ -20,19 +20,16 @@ buildPythonPackage rec {
   disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
-    owner = "lukapecnik";
+    owner = "firefly-cpp";
     repo = "NiaClass";
     rev = "refs/tags/${version}";
     hash = "sha256-C3EF18lzheE+dXHJA6WJNFECAH4HfPiCDo7QxtHvOLI=";
   };
 
-  pythonRelaxDeps = [
-    "pandas"
-  ];
+  pythonRelaxDeps = [ "pandas" ];
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
     toml-adapt
   ];
 
@@ -48,20 +45,15 @@ buildPythonPackage rec {
     toml-adapt -path pyproject.toml -a change -dep scikit-learn -ver X
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "niaclass"
-  ];
+  pythonImportsCheck = [ "niaclass" ];
 
   meta = with lib; {
-    description = "A framework for solving classification tasks using Nature-inspired algorithms";
-    homepage = "https://github.com/lukapecnik/NiaClass";
-    changelog = "https://github.com/lukapecnik/NiaClass/releases/tag/${version}";
+    description = "Framework for solving classification tasks using Nature-inspired algorithms";
+    homepage = "https://github.com/firefly-cpp/NiaClass";
+    changelog = "https://github.com/firefly-cpp/NiaClass/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ firefly-cpp ];
   };
 }
-
diff --git a/pkgs/development/python-modules/nianet/default.nix b/pkgs/development/python-modules/nianet/default.nix
index d91f278a59063..84b83900d40a0 100644
--- a/pkgs/development/python-modules/nianet/default.nix
+++ b/pkgs/development/python-modules/nianet/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, matplotlib
-, niapy
-, numpy
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, scikit-learn
-, toml-adapt
-, tomli
-, torch
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  niapy,
+  numpy,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  scikit-learn,
+  toml-adapt,
+  tomli,
+  torch,
 }:
 
 buildPythonPackage rec {
@@ -50,9 +50,7 @@ buildPythonPackage rec {
     tomli
   ];
 
-  pythonImportsCheck = [
-    "nianet"
-  ];
+  pythonImportsCheck = [ "nianet" ];
 
   meta = with lib; {
     description = "Designing and constructing neural network topologies using nature-inspired algorithms";
diff --git a/pkgs/development/python-modules/niapy/default.nix b/pkgs/development/python-modules/niapy/default.nix
index c05c0fb25a74d..f7cfecd8a5c17 100644
--- a/pkgs/development/python-modules/niapy/default.nix
+++ b/pkgs/development/python-modules/niapy/default.nix
@@ -1,18 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, matplotlib
-, numpy
-, openpyxl
-, pandas
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  matplotlib,
+  numpy,
+  openpyxl,
+  pandas,
+  poetry-core,
+  pytest7CheckHook,
+  pytest-xdist,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "niapy";
-  version = "2.1.0";
+  version = "2.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,28 +22,22 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "NiaOrg";
     repo = "NiaPy";
-    rev = "refs/tags/${version}";
+    rev = "refs/tags/v${version}";
     hash = "sha256-cT5CU1r3LZ9ValJwRUA0PaISmF6kXAz40alXbWYogGA=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     matplotlib
     numpy
     openpyxl
     pandas
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytest7CheckHook pytest-xdist ];
 
-  pythonImportsCheck = [
-    "niapy"
-  ];
+  pythonImportsCheck = [ "niapy" ];
 
   meta = with lib; {
     description = "Micro framework for building nature-inspired algorithms";
diff --git a/pkgs/development/python-modules/nibabel/default.nix b/pkgs/development/python-modules/nibabel/default.nix
index 9b70a4fe20748..1fb80ed06f347 100644
--- a/pkgs/development/python-modules/nibabel/default.nix
+++ b/pkgs/development/python-modules/nibabel/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonAtLeast
-, pythonOlder
-, hatchling
-, hatch-vcs
-, numpy
-, packaging
-, importlib-resources
-, pydicom
-, pillow
-, h5py
-, scipy
-, git
-, pytest-doctestplus
-, pytest-httpserver
-, pytest-xdist
-, pytest7CheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonAtLeast,
+  pythonOlder,
+  hatchling,
+  hatch-vcs,
+  numpy,
+  packaging,
+  importlib-resources,
+  pydicom,
+  pillow,
+  h5py,
+  scipy,
+  git,
+  pytest-doctestplus,
+  pytest-httpserver,
+  pytest-xdist,
+  pytest7CheckHook,
 }:
 
 buildPythonPackage rec {
@@ -39,28 +40,14 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     numpy
     packaging
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    importlib-resources
-  ];
+  ] ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ];
 
   passthru.optional-dependencies = rec {
-    all = dicom
-      ++ dicomfs
-      ++ minc2
-      ++ spm
-      ++ zstd;
-    dicom = [
-      pydicom
-    ];
-    dicomfs = [
-      pillow
-    ] ++ dicom;
-    minc2 = [
-      h5py
-    ];
-    spm = [
-      scipy
-    ];
+    all = dicom ++ dicomfs ++ minc2 ++ spm ++ zstd;
+    dicom = [ pydicom ];
+    dicomfs = [ pillow ] ++ dicom;
+    minc2 = [ h5py ];
+    spm = [ scipy ];
     zstd = [
       # TODO: pyzstd
     ];
diff --git a/pkgs/development/python-modules/nibe/default.nix b/pkgs/development/python-modules/nibe/default.nix
index d065f93ade21f..c08da4abe5170 100644
--- a/pkgs/development/python-modules/nibe/default.nix
+++ b/pkgs/development/python-modules/nibe/default.nix
@@ -1,25 +1,25 @@
-{ lib
-, aiohttp
-, aresponses
-, async-modbus
-, async-timeout
-, asyncclick
-, buildPythonPackage
-, construct
-, exceptiongroup
-, fetchFromGitHub
-, pandas
-, pytest-asyncio
-, pytestCheckHook
-, python-slugify
-, pythonOlder
-, setuptools
-, tenacity
+{
+  lib,
+  aresponses,
+  async-modbus,
+  async-timeout,
+  asyncclick,
+  buildPythonPackage,
+  construct,
+  exceptiongroup,
+  fetchFromGitHub,
+  pandas,
+  pytest-asyncio,
+  pytestCheckHook,
+  python-slugify,
+  pythonOlder,
+  setuptools,
+  tenacity,
 }:
 
 buildPythonPackage rec {
   pname = "nibe";
-  version = "2.9.0";
+  version = "2.12.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -28,14 +28,12 @@ buildPythonPackage rec {
     owner = "yozik04";
     repo = "nibe";
     rev = "refs/tags/${version}";
-    hash = "sha256-j8P/lhBjlsmnOc4Cv/a2Hdf2EPO8CEpT4IOQHtiBgQA=";
+    hash = "sha256-Sqwwk++iA/PsAKZRkUPjXuzgSrhnH4N02c072pIVEyw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     async-modbus
     async-timeout
     construct
@@ -48,9 +46,7 @@ buildPythonPackage rec {
       pandas
       python-slugify
     ];
-    cli = [
-      asyncclick
-    ];
+    cli = [ asyncclick ];
   };
 
   nativeCheckInputs = [
@@ -59,15 +55,13 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "nibe"
-  ];
+  pythonImportsCheck = [ "nibe" ];
 
   meta = with lib; {
     description = "Library for the communication with Nibe heatpumps";
     homepage = "https://github.com/yozik04/nibe";
     changelog = "https://github.com/yozik04/nibe/releases/tag/${version}";
-    license = with licenses; [ gpl3Plus ];
+    license = licenses.gpl3Plus;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/nice-go/default.nix b/pkgs/development/python-modules/nice-go/default.nix
new file mode 100644
index 0000000000000..946d129e95c44
--- /dev/null
+++ b/pkgs/development/python-modules/nice-go/default.nix
@@ -0,0 +1,59 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  aiobotocore,
+  aiohttp,
+  lib,
+  poetry-core,
+  pycognito,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytestCheckHook,
+  syrupy,
+  tenacity,
+  yarl,
+}:
+
+buildPythonPackage rec {
+  pname = "nice-go";
+  version = "0.3.9";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "IceBotYT";
+    repo = "nice-go";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Gb6VDHADtqmVXMPwic0NokWm5GmhTpy7g+o/rYxrBZk=";
+  };
+
+  build-system = [ poetry-core ];
+
+  pythonRelaxDeps = [ "tenacity" ];
+
+  dependencies = [
+    aiobotocore
+    aiohttp
+    pycognito
+    tenacity
+    yarl
+  ];
+
+  pythonImportsCheck = [ "nice_go" ];
+
+  nativeCheckInputs = [
+    pytest-aiohttp
+    pytest-asyncio
+    pytest-cov-stub
+    pytestCheckHook
+    syrupy
+  ];
+
+  meta = {
+    changelog = "https://github.com/IceBotYT/nice-go/blob/${src.rev}/CHANGELOG.md";
+    description = "Control various Nice access control products";
+    homepage = "https://github.com/IceBotYT/nice-go";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/nidaqmx/default.nix b/pkgs/development/python-modules/nidaqmx/default.nix
index 7c010a224340d..c7efc2f3fb120 100644
--- a/pkgs/development/python-modules/nidaqmx/default.nix
+++ b/pkgs/development/python-modules/nidaqmx/default.nix
@@ -1,13 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, six
-, numpy
-, pytestCheckHook
-, pykka
-, enum34
-, pythonOlder
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  six,
+  numpy,
+  pytestCheckHook,
+  pykka,
+  pythonAtLeast,
 }:
 
 # Note we currently do not patch the path to the drivers
@@ -32,8 +31,6 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     numpy
     six
-  ] ++ lib.optionals (pythonOlder "3.4") [
-    enum34
   ];
 
   nativeCheckInputs = [
@@ -48,9 +45,7 @@ buildPythonPackage rec {
   # Fixture "x_series_device" called directly. Fixtures are not meant to be called directly
   doCheck = false;
 
-  pythonImportsCheck = [
-    "nidaqmx.task"
-  ];
+  pythonImportsCheck = [ "nidaqmx.task" ];
 
   meta = {
     description = "API for interacting with the NI-DAQmx driver";
diff --git a/pkgs/development/python-modules/niko-home-control/default.nix b/pkgs/development/python-modules/niko-home-control/default.nix
index 46707205e863b..7d60e69820734 100644
--- a/pkgs/development/python-modules/niko-home-control/default.nix
+++ b/pkgs/development/python-modules/niko-home-control/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nclib
-, netaddr
-, netifaces
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  nclib,
+  netaddr,
+  netifaces,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "nikohomecontrol"
-  ];
+  pythonImportsCheck = [ "nikohomecontrol" ];
 
   meta = with lib; {
     description = "Python SDK for Niko Home Control";
diff --git a/pkgs/development/python-modules/nikola/default.nix b/pkgs/development/python-modules/nikola/default.nix
index 2b9e37d62dae6..955679a5b860b 100644
--- a/pkgs/development/python-modules/nikola/default.nix
+++ b/pkgs/development/python-modules/nikola/default.nix
@@ -1,49 +1,49 @@
-{ lib
-, aiohttp
-, babel
-, blinker
-, buildPythonPackage
-, docutils
-, doit
-, feedparser
-, fetchPypi
-, fetchpatch2
-, freezegun
-, ghp-import
-, hsluv
-, html5lib
-, ipykernel
-, jinja2
-, lxml
-, mako
-, markdown
-, micawber
-, mock
-, natsort
-, notebook
-, phpserialize
-, piexif
-, pillow
-, pygal
-, pygments
-, pyphen
-, pyrss2gen
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, requests
-, ruamel-yaml
-, setuptools
-, toml
-, typogrify
-, unidecode
-, watchdog
-, yapsy
+{
+  lib,
+  aiohttp,
+  babel,
+  blinker,
+  buildPythonPackage,
+  docutils,
+  doit,
+  feedparser,
+  fetchPypi,
+  freezegun,
+  ghp-import,
+  hsluv,
+  html5lib,
+  ipykernel,
+  jinja2,
+  lxml,
+  mako,
+  markdown,
+  micawber,
+  mock,
+  natsort,
+  notebook,
+  phpserialize,
+  piexif,
+  pillow,
+  pygal,
+  pygments,
+  pyphen,
+  pyrss2gen,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  requests,
+  ruamel-yaml,
+  setuptools,
+  toml,
+  typogrify,
+  unidecode,
+  watchdog,
+  yapsy,
 }:
 
 buildPythonPackage rec {
   pname = "nikola";
-  version = "8.3.0";
+  version = "8.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -51,25 +51,15 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "Nikola";
     inherit version;
-    hash = "sha256-VYuhiGLMTHcOZM8/bGZT7Xx5BOHo9gsMPjufYglrBL0=";
+    hash = "sha256-IfJB2Rl3c1MyEiuyNpT3udfpM480VvFD8zosJFDHr7k=";
   };
 
-  patches = [
-    (fetchpatch2 {
-      name = "nikola-pytest8-compat.patch";
-      url = "https://github.com/getnikola/nikola/commit/5f1003f91cd59f62622d379efe9be5fb19a1ed3e.patch";
-      hash = "sha256-2H3125RUnwvN/XgwgfRe1139rhAz/9viMEcUYRGQMPs=";
-    })
-  ];
-
   postPatch = ''
     substituteInPlace setup.cfg \
       --replace-fail "--cov nikola --cov-report term-missing" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -122,9 +112,7 @@ buildPythonPackage rec {
     "test_format_date_locale_variants"
   ];
 
-  pythonImportsCheck = [
-    "nikola"
-  ];
+  pythonImportsCheck = [ "nikola" ];
 
   meta = with lib; {
     description = "Static website and blog generator";
diff --git a/pkgs/development/python-modules/nilearn/default.nix b/pkgs/development/python-modules/nilearn/default.nix
index ce7cdee635b3e..87cd5e8961005 100644
--- a/pkgs/development/python-modules/nilearn/default.nix
+++ b/pkgs/development/python-modules/nilearn/default.nix
@@ -1,36 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pytestCheckHook
-, hatch-vcs
-, lxml
-, matplotlib
-, nibabel
-, numpy
-, pandas
-, scikit-learn
-, scipy
-, joblib
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytestCheckHook,
+  hatch-vcs,
+  lxml,
+  matplotlib,
+  nibabel,
+  numpy,
+  pandas,
+  scikit-learn,
+  scipy,
+  joblib,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "nilearn";
-  version = "0.10.3";
+  version = "0.10.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-d4GTMTFMTKXBXAdjT2n4Vfr9+a3QUbGILjpgCtUnV9g=";
+    hash = "sha256-lFC9Vqd22ZezJPRd0Yv5bom9jYAWCXT8x1kzP7rqNcI=";
   };
 
   nativeBuildInputs = [ hatch-vcs ];
 
   nativeCheckInputs = [ pytestCheckHook ];
-  disabledTests = [ "test_clean_confounds" ];  # https://github.com/nilearn/nilearn/issues/2608
+  disabledTests = [ "test_clean_confounds" ]; # https://github.com/nilearn/nilearn/issues/2608
   # do subset of tests which don't fetch resources
   pytestFlagsArray = [ "nilearn/connectome/tests" ];
 
@@ -48,7 +49,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://nilearn.github.io";
-    description = "A module for statistical learning on neuroimaging data";
+    description = "Module for statistical learning on neuroimaging data";
     changelog = "https://github.com/nilearn/nilearn/releases/tag/${version}";
     license = licenses.bsd3;
   };
diff --git a/pkgs/development/python-modules/niluclient/default.nix b/pkgs/development/python-modules/niluclient/default.nix
index 7f6aa69da61e5..6e667a2776169 100644
--- a/pkgs/development/python-modules/niluclient/default.nix
+++ b/pkgs/development/python-modules/niluclient/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     sha256 = "11ymn0cr4lchrcnf2xxlgljw223gwln01gxwr7mcgf95yc4006iq";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/nimfa/default.nix b/pkgs/development/python-modules/nimfa/default.nix
index a253b04228f6c..53c9fd3f41f40 100644
--- a/pkgs/development/python-modules/nimfa/default.nix
+++ b/pkgs/development/python-modules/nimfa/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, numpy
-, scipy
-, matplotlib
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  numpy,
+  scipy,
+  matplotlib,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,15 @@ buildPythonPackage rec {
     sha256 = "39cff2b86856d03ca8a3d9c38598034ecf1a768c325fd3a728bb9eadb8c6b919";
   };
 
-  propagatedBuildInputs = [ numpy scipy ];
-  nativeCheckInputs = [ matplotlib pytest ];
-  doCheck = !isPy3k;  # https://github.com/marinkaz/nimfa/issues/42
+  propagatedBuildInputs = [
+    numpy
+    scipy
+  ];
+  nativeCheckInputs = [
+    matplotlib
+    pytest
+  ];
+  doCheck = !isPy3k; # https://github.com/marinkaz/nimfa/issues/42
 
   meta = with lib; {
     description = "Nonnegative matrix factorization library";
diff --git a/pkgs/development/python-modules/nine/default.nix b/pkgs/development/python-modules/nine/default.nix
index a969399d3384d..70caf70ca0653 100644
--- a/pkgs/development/python-modules/nine/default.nix
+++ b/pkgs/development/python-modules/nine/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -18,5 +19,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/nandoflorestan/nine";
     license = licenses.free;
   };
-
 }
diff --git a/pkgs/development/python-modules/ninebot-ble/default.nix b/pkgs/development/python-modules/ninebot-ble/default.nix
index 79f00a7e19ff7..fc57a8c7de3ff 100644
--- a/pkgs/development/python-modules/ninebot-ble/default.nix
+++ b/pkgs/development/python-modules/ninebot-ble/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, bleak
-, bleak-retry-connector
-, bluetooth-data-tools
-, bluetooth-sensor-state-data
-, buildPythonPackage
-, fetchFromGitHub
-, miauth
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  bleak,
+  bleak-retry-connector,
+  bluetooth-data-tools,
+  bluetooth-sensor-state-data,
+  buildPythonPackage,
+  fetchFromGitHub,
+  miauth,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -41,9 +42,7 @@ buildPythonPackage rec {
   # Module has no test
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ninebot_ble"
-  ];
+  pythonImportsCheck = [ "ninebot_ble" ];
 
   meta = with lib; {
     description = "Ninebot scooter BLE client";
@@ -53,4 +52,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ fab ];
   };
 }
-
diff --git a/pkgs/development/python-modules/ninja/default.nix b/pkgs/development/python-modules/ninja/default.nix
index 4bf4c83ad4340..a735308e657e5 100644
--- a/pkgs/development/python-modules/ninja/default.nix
+++ b/pkgs/development/python-modules/ninja/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, flit-core
-, ninja
+{
+  lib,
+  buildPythonPackage,
+  flit-core,
+  ninja,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
 
   inherit (ninja) setupHook;
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   preBuild = ''
     cp "${ninja.src}/misc/ninja_syntax.py" ninja/ninja_syntax.py
@@ -36,7 +35,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A small build system with a focus on speed";
+    description = "Small build system with a focus on speed";
     mainProgram = "ninja";
     longDescription = ''
       This is a stub of the ninja package on PyPI that uses the ninja program
@@ -44,6 +43,9 @@ buildPythonPackage rec {
     '';
     homepage = "https://github.com/scikit-build/ninja-python-distributions";
     license = licenses.asl20;
-    maintainers = with maintainers; [ _999eagle tjni ];
+    maintainers = with maintainers; [
+      _999eagle
+      tjni
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/nipreps-versions/default.nix b/pkgs/development/python-modules/nipreps-versions/default.nix
index 1c54ab9d905e4..ab824cdda0c25 100644
--- a/pkgs/development/python-modules/nipreps-versions/default.nix
+++ b/pkgs/development/python-modules/nipreps-versions/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, flit-scm
-, packaging
-, setuptools-scm
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  flit-scm,
+  packaging,
+  setuptools-scm,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    packaging
-  ];
+  propagatedBuildInputs = [ packaging ];
 
   nativeCheckInputs = [ pytestCheckHook ];
   pythonImportsCheck = [ "nipreps_versions" ];
diff --git a/pkgs/development/python-modules/nipy/default.nix b/pkgs/development/python-modules/nipy/default.nix
index a5807ae224d5f..e245aafa0791b 100644
--- a/pkgs/development/python-modules/nipy/default.nix
+++ b/pkgs/development/python-modules/nipy/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build-system
-, cython
-, meson-python
-, ninja
-, setuptools
+  # build-system
+  cython,
+  meson-python,
+  ninja,
+  setuptools,
 
-# dependencies
-, numpy
-, scipy
-, nibabel
-, sympy
-, transforms3d
+  # dependencies
+  numpy,
+  scipy,
+  nibabel,
+  sympy,
+  transforms3d,
 
-# optional-dependencies
-, matplotlib
+  # optional-dependencies
+  matplotlib,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -52,13 +53,9 @@ buildPythonPackage rec {
     transforms3d
   ];
 
-  optional-dependencies.optional = [
-    matplotlib
-  ];
+  optional-dependencies.optional = [ matplotlib ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ optional-dependencies.optional;
+  nativeCheckInputs = [ pytestCheckHook ] ++ optional-dependencies.optional;
 
   doCheck = false; # partial imports … circular dependencies. needs more time to figure out.
 
@@ -74,5 +71,4 @@ buildPythonPackage rec {
     downloadPage = "https://github.com/nipy/nipy";
     license = licenses.bsd3;
   };
-
 }
diff --git a/pkgs/development/python-modules/nipype/default.nix b/pkgs/development/python-modules/nipype/default.nix
index 2c6d00517df18..6169a0f69da38 100644
--- a/pkgs/development/python-modules/nipype/default.nix
+++ b/pkgs/development/python-modules/nipype/default.nix
@@ -1,43 +1,43 @@
-{ lib, stdenv
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pythonRelaxDepsHook
-# python dependencies
-, click
-, python-dateutil
-, etelemetry
-, filelock
-, funcsigs
-, future
-, looseversion
-, mock
-, networkx
-, nibabel
-, numpy
-, packaging
-, prov
-, psutil
-, pybids
-, pydot
-, pytest
-, pytest-xdist
-, pytest-forked
-, rdflib
-, scipy
-, simplejson
-, traits
-, xvfbwrapper
-, codecov
-# other dependencies
-, which
-, bash
-, glibcLocales
-, callPackage
-# causes Python packaging conflict with any package requiring rdflib,
-# so use the unpatched rdflib by default (disables Nipype provenance tracking);
-# see https://github.com/nipy/nipype/issues/2888:
-, useNeurdflib ? false
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  # python dependencies
+  click,
+  python-dateutil,
+  etelemetry,
+  filelock,
+  funcsigs,
+  future,
+  looseversion,
+  mock,
+  networkx,
+  nibabel,
+  numpy,
+  packaging,
+  prov,
+  psutil,
+  pybids,
+  pydot,
+  pytest,
+  pytest-xdist,
+  pytest-forked,
+  rdflib,
+  scipy,
+  simplejson,
+  traits,
+  xvfbwrapper,
+  codecov,
+  # other dependencies
+  which,
+  bash,
+  glibcLocales,
+  # causes Python packaging conflict with any package requiring rdflib,
+  # so use the unpatched rdflib by default (disables Nipype provenance tracking);
+  # see https://github.com/nipy/nipype/issues/2888:
+  useNeurdflib ? false,
 }:
 
 buildPythonPackage rec {
@@ -56,9 +56,6 @@ buildPythonPackage rec {
       --replace "/usr/bin/env bash" "${bash}/bin/bash"
   '';
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   pythonRelaxDeps = [ "traits" ];
 
@@ -96,7 +93,7 @@ buildPythonPackage rec {
   ];
 
   # checks on darwin inspect memory which doesn't work in build environment
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
   # ignore tests which incorrect fail to detect xvfb
   checkPhase = ''
     LC_ALL="en_US.UTF-8" pytest nipype/tests -k 'not display and not test_no_et_multiproc'
diff --git a/pkgs/development/python-modules/nitime/default.nix b/pkgs/development/python-modules/nitime/default.nix
index cba5f0da29dbf..35b8eb4c46fc0 100644
--- a/pkgs/development/python-modules/nitime/default.nix
+++ b/pkgs/development/python-modules/nitime/default.nix
@@ -1,36 +1,37 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pytestCheckHook
-, cython
-, setuptools
-, setuptools-scm
-, wheel
-, numpy
-, scipy
-, matplotlib
-, networkx
-, nibabel
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytestCheckHook,
+  cython,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  numpy,
+  scipy,
+  matplotlib,
+  networkx,
+  nibabel,
 }:
 
 buildPythonPackage rec {
   pname = "nitime";
-  version = "0.10.2";
+  version = "0.11";
   disabled = pythonOlder "3.7";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-NCaWr7ZqL1XV0QfUD+4+Yn33N1cCP33ib5oJ91OtJLU=";
+    hash = "sha256-4Ie8fuk9CKdn/64TsCfN2No2dU16ICpBRWYerqqF0/0=";
   };
 
-  # Upstream wants to build against the oldest version of numpy possible, but
-  # we only want to build against the most recent version.
+  # Upstream wants to build against the newest version of numpy possible, but
+  # we only want to build against our default numpy.
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "numpy==" "numpy>="
+      --replace-fail "numpy>=2.0.0rc1,<3" "numpy"
   '';
 
   nativeBuildInputs = [
@@ -50,7 +51,7 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ pytestCheckHook ];
 
-  doCheck = !stdenv.isDarwin;  # tests hang indefinitely
+  doCheck = !stdenv.hostPlatform.isDarwin; # tests hang indefinitely
 
   pythonImportsCheck = [ "nitime" ];
 
diff --git a/pkgs/development/python-modules/nitransforms/default.nix b/pkgs/development/python-modules/nitransforms/default.nix
index a05c9661e69e6..51f499d6ab17c 100644
--- a/pkgs/development/python-modules/nitransforms/default.nix
+++ b/pkgs/development/python-modules/nitransforms/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pythonRelaxDepsHook
-, h5py
-, nibabel
-, numpy
-, scipy
-, setuptools-scm
-, toml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  h5py,
+  nibabel,
+  numpy,
+  scipy,
+  setuptools-scm,
+  toml,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +22,16 @@ buildPythonPackage rec {
     hash = "sha256-Lty4aPzSlwRJSqCXeIVICF+gudYqto1OS4cVZyrB2nY=";
   };
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
-  buildInputs = [ setuptools-scm toml ];
-  propagatedBuildInputs = [ h5py nibabel numpy scipy ];
+  buildInputs = [
+    setuptools-scm
+    toml
+  ];
+  propagatedBuildInputs = [
+    h5py
+    nibabel
+    numpy
+    scipy
+  ];
 
   pythonRelaxDeps = [ "scipy" ];
 
diff --git a/pkgs/development/python-modules/niworkflows/default.nix b/pkgs/development/python-modules/niworkflows/default.nix
index 1616cfff46379..1816cdbd20a38 100644
--- a/pkgs/development/python-modules/niworkflows/default.nix
+++ b/pkgs/development/python-modules/niworkflows/default.nix
@@ -1,54 +1,53 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatch-vcs
-, hatchling
-, pytestCheckHook
-, attrs
-, importlib-resources
-, jinja2
-, looseversion
-, matplotlib
-, nibabel
-, nilearn
-, nipype
-, nitransforms
-, numpy
-, packaging
-, pandas
-, pybids
-, pyyaml
-, scikit-image
-, scipy
-, seaborn
-, svgutils
-, templateflow
-, traits
-, transforms3d
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatch-vcs,
+  hatchling,
+  pytestCheckHook,
+  attrs,
+  importlib-resources,
+  jinja2,
+  looseversion,
+  matplotlib,
+  nibabel,
+  nilearn,
+  nipype,
+  nitransforms,
+  numpy,
+  packaging,
+  pandas,
+  pybids,
+  pyyaml,
+  scikit-image,
+  scipy,
+  seaborn,
+  svgutils,
+  templateflow,
+  traits,
+  transforms3d,
 }:
 
 buildPythonPackage rec {
   pname = "niworkflows";
-  version = "1.10.1";
+  version = "1.10.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "nipreps";
     repo = "niworkflows";
     rev = "refs/tags/${version}";
-    hash = "sha256-ZOn3KSaPAA8zTdyexrjF9Wkb5C5qA/5eSJahg2DcX20=";
+    hash = "sha256-29ZxLuKrvgCIOMMCUpi0HHhlNlgqUrUrSCiikwecmKw=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml --replace '"traits < 6.4"' '"traits"'
-  '';
+  pythonRelaxDeps = [ "traits" ];
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-vcs
     hatchling
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     attrs
     importlib-resources
     jinja2
diff --git a/pkgs/development/python-modules/nix-kernel/default.nix b/pkgs/development/python-modules/nix-kernel/default.nix
index c03db9cf42f24..a14a12b5b4f00 100644
--- a/pkgs/development/python-modules/nix-kernel/default.nix
+++ b/pkgs/development/python-modules/nix-kernel/default.nix
@@ -1,16 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy3k
-, pexpect
-, notebook
-, nix
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  isPy3k,
+  pexpect,
+  notebook,
+  nix,
 }:
 
 buildPythonPackage rec {
   pname = "nix-kernel";
   version = "unstable-2020-04-26";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = !isPy3k;
 
@@ -23,14 +25,16 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace nix-kernel/kernel.py \
-      --replace "'nix'" "'${nix}/bin/nix'" \
-      --replace "'nix repl'" "'${nix}/bin/nix repl'"
+      --replace-fail "'nix'" "'${nix}/bin/nix'" \
+      --replace-fail "'nix repl'" "'${nix}/bin/nix repl'"
 
     substituteInPlace setup.py \
-      --replace "cmdclass={'install': install_with_kernelspec}," ""
+      --replace-fail "cmdclass={'install': install_with_kernelspec}," ""
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     pexpect
     notebook
   ];
@@ -44,6 +48,6 @@ buildPythonPackage rec {
     description = "Simple jupyter kernel for nix-repl";
     homepage = "https://github.com/GTrunSec/nix-kernel";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/nix-prefetch-github/default.nix b/pkgs/development/python-modules/nix-prefetch-github/default.nix
index 6424c5a7bc0f4..de23fe6548bdf 100644
--- a/pkgs/development/python-modules/nix-prefetch-github/default.nix
+++ b/pkgs/development/python-modules/nix-prefetch-github/default.nix
@@ -1,14 +1,15 @@
-{ fetchFromGitHub
-, lib
-, buildPythonPackage
-, git
-, which
-, pythonOlder
-, unittestCheckHook
-, sphinxHook
-, sphinx-argparse
-, parameterized
-, setuptools
+{
+  fetchFromGitHub,
+  lib,
+  buildPythonPackage,
+  git,
+  which,
+  pythonOlder,
+  unittestCheckHook,
+  sphinxHook,
+  sphinx-argparse,
+  parameterized,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -16,7 +17,10 @@ buildPythonPackage rec {
   version = "7.1.0";
   pyproject = true;
 
-  outputs = [ "out" "man" ];
+  outputs = [
+    "out"
+    "man"
+  ];
   disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
@@ -26,8 +30,17 @@ buildPythonPackage rec {
     hash = "sha256-eQd/MNlnuzXzgFzvwUMchvHoIvkIrbpGKV7iknO14Cc=";
   };
 
-  nativeBuildInputs = [ sphinxHook sphinx-argparse setuptools ];
-  nativeCheckInputs = [ unittestCheckHook git which parameterized ];
+  nativeBuildInputs = [
+    sphinxHook
+    sphinx-argparse
+    setuptools
+  ];
+  nativeCheckInputs = [
+    unittestCheckHook
+    git
+    which
+    parameterized
+  ];
 
   sphinxBuilders = [ "man" ];
   sphinxRoot = "docs";
diff --git a/pkgs/development/python-modules/nixpkgs-pytools/default.nix b/pkgs/development/python-modules/nixpkgs-pytools/default.nix
index d6c3c89887ec6..a8bedf7bc2e08 100644
--- a/pkgs/development/python-modules/nixpkgs-pytools/default.nix
+++ b/pkgs/development/python-modules/nixpkgs-pytools/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jinja2
-, setuptools
-, rope
-, isPy27
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jinja2,
+  setuptools,
+  rope,
+  isPy27,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/nixpkgs/default.nix b/pkgs/development/python-modules/nixpkgs/default.nix
index 6deb9bac96ed4..989eb91287d89 100644
--- a/pkgs/development/python-modules/nixpkgs/default.nix
+++ b/pkgs/development/python-modules/nixpkgs/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pbr
-, pythonix
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pbr,
+  pythonix,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
   pname = "nixpkgs";
   version = "0.2.4";
   format = "setuptools";
-  disabled = ! pythonAtLeast "3.5";
+  disabled = !pythonAtLeast "3.5";
 
   src = fetchPypi {
     inherit pname version;
@@ -30,5 +31,4 @@ buildPythonPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ t184256 ];
   };
-
 }
diff --git a/pkgs/development/python-modules/nkdfu/default.nix b/pkgs/development/python-modules/nkdfu/default.nix
index 28274467efb9e..0ebb513c2b187 100644
--- a/pkgs/development/python-modules/nkdfu/default.nix
+++ b/pkgs/development/python-modules/nkdfu/default.nix
@@ -1,4 +1,13 @@
-{ lib, buildPythonPackage, fetchPypi, flit-core, fire, tqdm, intelhex, libusb1 }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  fire,
+  tqdm,
+  intelhex,
+  libusb1,
+}:
 
 buildPythonPackage rec {
   pname = "nkdfu";
@@ -10,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-8l913dOCxHKFtpQ83p9RV3sUlu0oT5PVi14FSuYJ9fg=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     fire
diff --git a/pkgs/development/python-modules/nlpcloud/default.nix b/pkgs/development/python-modules/nlpcloud/default.nix
index cbc28feb15777..f9e16e828652d 100644
--- a/pkgs/development/python-modules/nlpcloud/default.nix
+++ b/pkgs/development/python-modules/nlpcloud/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -14,16 +15,12 @@ buildPythonPackage rec {
     hash = "sha256-NmNu1Rf6mN+Q8FdpeNYQ508ksqkIV7oOp8CrlDN1qPU=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # upstream has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "nlpcloud"
-  ];
+  pythonImportsCheck = [ "nlpcloud" ];
 
   meta = with lib; {
     description = "Python client for the NLP Cloud API";
diff --git a/pkgs/development/python-modules/nltk/default.nix b/pkgs/development/python-modules/nltk/default.nix
index cfac189b06f56..4493348bb6da6 100644
--- a/pkgs/development/python-modules/nltk/default.nix
+++ b/pkgs/development/python-modules/nltk/default.nix
@@ -1,24 +1,24 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, click
-, joblib
-, regex
-, tqdm
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
+  click,
+  joblib,
+  regex,
+  tqdm,
 }:
 
 buildPythonPackage rec {
   pname = "nltk";
-  version = "3.8.1";
+  version = "3.9.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    extension = "zip";
-    hash = "sha256-GDTaPQaCy6Tyzt4vmq1rD6+2RhukUdsO+2+cOXmNZNM=";
+    hash = "sha256-h9EnvT3kvYmk+BJl5fpZyxsZmydEAXU3D3QX0rx66Gg=";
   };
 
   propagatedBuildInputs = [
@@ -36,15 +36,13 @@ buildPythonPackage rec {
   # best.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "nltk"
-  ];
+  pythonImportsCheck = [ "nltk" ];
 
   meta = with lib; {
     description = "Natural Language Processing ToolKit";
     mainProgram = "nltk";
     homepage = "http://nltk.org/";
     license = licenses.asl20;
-    maintainers = with maintainers; [ lheckemann ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/nmapthon2/default.nix b/pkgs/development/python-modules/nmapthon2/default.nix
index 4c8a66c91a55c..0a518c29013c0 100644
--- a/pkgs/development/python-modules/nmapthon2/default.nix
+++ b/pkgs/development/python-modules/nmapthon2/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, appdirs
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +20,11 @@ buildPythonPackage rec {
     hash = "sha256-4Na75TdKDywUomJF4tDWUWwCCtcOSxBUMOF7+FDhbpY=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests/scanner_tests.py"
-  ];
+  pytestFlagsArray = [ "tests/scanner_tests.py" ];
 
-  pythonImportsCheck = [
-    "nmapthon2"
-  ];
+  pythonImportsCheck = [ "nmapthon2" ];
 
   meta = with lib; {
     description = "Python library to automate nmap";
diff --git a/pkgs/development/python-modules/nocasedict/default.nix b/pkgs/development/python-modules/nocasedict/default.nix
index 9d727ec0ecba2..f50c1df9902f6 100644
--- a/pkgs/development/python-modules/nocasedict/default.nix
+++ b/pkgs/development/python-modules/nocasedict/default.nix
@@ -1,35 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest7CheckHook
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "nocasedict";
-  version = "2.0.1";
-  format = "setuptools";
+  version = "2.0.4";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-lgy2mfEgnagKw546tQqnNC/oyp9wYGwjRHpRBVBDXlA=";
+    hash = "sha256-TKk09l31exDQ/KtfDDnp3MuTV3/58ivvmCZd2/EvivE=";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytest7CheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "nocasedict"
-  ];
+  pythonImportsCheck = [ "nocasedict" ];
 
   meta = with lib; {
-    description = "A case-insensitive ordered dictionary for Python";
+    description = "Case-insensitive ordered dictionary for Python";
     homepage = "https://github.com/pywbem/nocasedict";
+    changelog = "https://github.com/pywbem/nocasedict/blob/${version}/docs/changes.rst";
     license = licenses.lgpl21Plus;
     maintainers = with maintainers; [ freezeboy ];
   };
diff --git a/pkgs/development/python-modules/nocaselist/default.nix b/pkgs/development/python-modules/nocaselist/default.nix
index fcad1844e2f65..ddb10ecf6fdc0 100644
--- a/pkgs/development/python-modules/nocaselist/default.nix
+++ b/pkgs/development/python-modules/nocaselist/default.nix
@@ -1,37 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest7CheckHook
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "nocaselist";
-  version = "2.0.0";
-  format = "setuptools";
+  version = "2.0.3";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.10";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-RWqgAMZ3fF0hsCnFLlMvlDKNT7TxWtKk3T3WLbMLOJI=";
+    hash = "sha256-VXFNqEM/tIQ855dASXfkOF1ePfnkqgD33emD/YdBD+8=";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytest7CheckHook
-  ];
+  dependencies = [ six ];
 
-  pythonImportsCheck = [
-    "nocaselist"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "nocaselist" ];
 
   meta = with lib; {
-    description = "A case-insensitive list for Python";
+    description = "Case-insensitive list for Python";
     homepage = "https://github.com/pywbem/nocaselist";
     changelog = "https://github.com/pywbem/nocaselist/blob/${version}/docs/changes.rst";
     license = licenses.lgpl21Plus;
diff --git a/pkgs/development/python-modules/nocturne/default.nix b/pkgs/development/python-modules/nocturne/default.nix
index 036c3af91e194..0934e6fd2535d 100644
--- a/pkgs/development/python-modules/nocturne/default.nix
+++ b/pkgs/development/python-modules/nocturne/default.nix
@@ -1,14 +1,15 @@
-{ buildPythonPackage
-, cmake
-, fetchFromGitHub
-, gtest
-, hydra-core
-, lib
-, nlohmann_json
-, pybind11
-, pyvirtualdisplay
-, sfml
-, substituteAll
+{
+  buildPythonPackage,
+  cmake,
+  fetchFromGitHub,
+  gtest,
+  hydra-core,
+  lib,
+  nlohmann_json,
+  pybind11,
+  pyvirtualdisplay,
+  sfml,
+  substituteAll,
 }:
 
 buildPythonPackage rec {
@@ -43,17 +44,18 @@ buildPythonPackage rec {
   buildInputs = [ sfml ];
 
   # hydra-core and pyvirtualdisplay are not declared as dependences but they are requirements
-  propagatedBuildInputs = [ hydra-core pyvirtualdisplay ];
+  propagatedBuildInputs = [
+    hydra-core
+    pyvirtualdisplay
+  ];
 
   # Test suite requires hydra-submitit-launcher which is not packaged as of 2022-01-02
   doCheck = false;
 
-  pythonImportsCheck = [
-    "nocturne"
-  ];
+  pythonImportsCheck = [ "nocturne" ];
 
   meta = with lib; {
-    description = "A data-driven, fast driving simulator for multi-agent coordination under partial observability";
+    description = "Data-driven, fast driving simulator for multi-agent coordination under partial observability";
     homepage = "https://github.com/facebookresearch/nocturne";
     license = licenses.mit;
     maintainers = with maintainers; [ samuela ];
diff --git a/pkgs/development/python-modules/node-semver/default.nix b/pkgs/development/python-modules/node-semver/default.nix
index 2fb460bc006d8..72ca86fc28c1a 100644
--- a/pkgs/development/python-modules/node-semver/default.nix
+++ b/pkgs/development/python-modules/node-semver/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,19 +20,15 @@ buildPythonPackage rec {
     hash = "sha256-Ncl+RUvy9G9lF3EzLz2HfiDB02tEgAlZ34Wbn4mlF6Y=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "nodesemver"
-  ];
+  pythonImportsCheck = [ "nodesemver" ];
 
   meta = with lib; {
     changelog = "https://github.com/podhmo/python-node-semver/blob/${version}/CHANGES.txt";
-    description = "A port of node-semver";
+    description = "Port of node-semver";
     homepage = "https://github.com/podhmo/python-semver";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/nodeenv/default.nix b/pkgs/development/python-modules/nodeenv/default.nix
index 8efd0b492e76a..45c8ed59fabdc 100644
--- a/pkgs/development/python-modules/nodeenv/default.nix
+++ b/pkgs/development/python-modules/nodeenv/default.nix
@@ -1,30 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pytestCheckHook
-, python
-, pythonOlder
-, setuptools
-, which
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  pytestCheckHook,
+  python,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  which,
 }:
 
 buildPythonPackage rec {
   pname = "nodeenv";
-  version = "1.8.0";
-  format = "setuptools";
+  version = "1.9.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "ekalinin";
-    repo = pname;
+    repo = "nodeenv";
     rev = "refs/tags/${version}";
-    hash = "sha256-aW/aNZbFXfP4bF/Nlvv419IDfaJRA1pJYM7awj+6Hz0=";
+    hash = "sha256-nud8HSfx1ri0UZf25VPCy7swfaSM13u5+HzozK+ikeY=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
     setuptools
+    setuptools-scm
   ];
 
   nativeCheckInputs = [
@@ -37,9 +40,7 @@ buildPythonPackage rec {
       --replace '["which", candidate]' '["${lib.getBin which}/bin/which", candidate]'
   '';
 
-  pythonImportsCheck = [
-    "nodeenv"
-  ];
+  pythonImportsCheck = [ "nodeenv" ];
 
   disabledTests = [
     # Test requires coverage
@@ -52,6 +53,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/ekalinin/nodeenv";
     changelog = "https://github.com/ekalinin/nodeenv/releases/tag/${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/nodepy-runtime/default.nix b/pkgs/development/python-modules/nodepy-runtime/default.nix
index baa078f9082e0..ed76a6c56c956 100644
--- a/pkgs/development/python-modules/nodepy-runtime/default.nix
+++ b/pkgs/development/python-modules/nodepy-runtime/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, localimport
-, pathlib2
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  localimport,
+  pathlib2,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     six
   ];
 
-  pythonImportsCheck = [
-    "nodepy"
-  ];
+  pythonImportsCheck = [ "nodepy" ];
 
   meta = with lib; {
     homepage = "https://github.com/nodepy/nodepy";
diff --git a/pkgs/development/python-modules/nodriver/default.nix b/pkgs/development/python-modules/nodriver/default.nix
new file mode 100644
index 0000000000000..9a19815af991e
--- /dev/null
+++ b/pkgs/development/python-modules/nodriver/default.nix
@@ -0,0 +1,51 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  deprecated,
+  mss,
+  websockets,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "nodriver";
+  version = "0.37";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-FF/E0hNZvo26Urtgw+nBH5Rmk7UCaqAsckCLDMuCK0A=";
+  };
+
+  disabled = pythonOlder "3.9";
+
+  dependencies = [
+    deprecated
+    mss
+    websockets
+  ];
+
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "nodriver" ];
+  # no tests in upstream
+  doCheck = false;
+
+  meta = {
+    homepage = "https://github.com/ultrafunkamsterdam/nodriver";
+    license = lib.licenses.agpl3Only;
+    description = "Web automation framework which can bypass bot detection";
+    longDescription = ''
+      Successor of Undetected-Chromedriver. Providing a blazing fast framework for web
+      automation, webscraping, bots and any other creative ideas which are normally
+      hindered by annoying anti bot systems like Captcha / CloudFlare / Imperva / hCaptcha
+    '';
+    maintainers = with lib.maintainers; [
+      liammurphy14
+      toasteruwu
+    ];
+  };
+}
+
diff --git a/pkgs/development/python-modules/noise/default.nix b/pkgs/development/python-modules/noise/default.nix
index 10521f06723ab..fc00d09f8033e 100644
--- a/pkgs/development/python-modules/noise/default.nix
+++ b/pkgs/development/python-modules/noise/default.nix
@@ -1,19 +1,34 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pythonOlder,
+}:
 
 buildPythonPackage rec {
   pname = "noise";
   version = "1.2.2";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0rcv40dcshqpchwkdlhsv3n68h9swm9fh4d1cgzr2hsp6rs7k8jp";
+    hash = "sha256-V6J5dDZXQ5H/Y6ER6FLlOkFk7Nga0jY5ZBdDzRogm2U=";
   };
 
+  build-system = [ setuptools ];
+
+  # PyPI release don't contain tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "noise" ];
+
   meta = with lib; {
-    homepage = "https://github.com/caseman/noise";
     description = "Native-code and shader implementations of Perlin noise";
+    homepage = "https://github.com/caseman/noise";
     license = licenses.mit;
-    platforms = platforms.all;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/noiseprotocol/default.nix b/pkgs/development/python-modules/noiseprotocol/default.nix
index d1cc83e517ad3..7e42d2eb2515a 100644
--- a/pkgs/development/python-modules/noiseprotocol/default.nix
+++ b/pkgs/development/python-modules/noiseprotocol/default.nix
@@ -1,18 +1,30 @@
-{ lib, buildPythonPackage, fetchFromGitHub, cryptography, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "noiseprotocol";
   version = "0.3.1";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "plizonczyk";
     repo = "noiseprotocol";
-    rev = "v${version}";
-    sha256 = "1mk0rqpjifdv3v1cjwkdnjbrfmzzjm9f3qqs1r8vii4j2wvhm6am";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-VZkKNxeSxLhRDhrj4VKV/1eXl7RtcsnCHru5KC/OYNY=";
   };
 
-  propagatedBuildInputs = [ cryptography ];
+  build-system = [ setuptools ];
+
+  dependencies = [ cryptography ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
@@ -21,7 +33,8 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Noise Protocol Framework";
     homepage = "https://github.com/plizonczyk/noiseprotocol/";
+    changelog = "https://github.com/plizonczyk/noiseprotocol/blob/v${version}/CHANGELOG.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/nomadnet/default.nix b/pkgs/development/python-modules/nomadnet/default.nix
index d7548d3f8bd80..34dd918982878 100644
--- a/pkgs/development/python-modules/nomadnet/default.nix
+++ b/pkgs/development/python-modules/nomadnet/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, lxmf
-, pythonOlder
-, qrcode
-, rns
-, setuptools
-, urwid
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxmf,
+  pythonOlder,
+  qrcode,
+  rns,
+  setuptools,
+  urwid,
 }:
 
 buildPythonPackage rec {
   pname = "nomadnet";
-  version = "0.4.8";
+  version = "0.5.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,14 +21,12 @@ buildPythonPackage rec {
     owner = "markqvist";
     repo = "NomadNet";
     rev = "refs/tags/${version}";
-    hash = "sha256-a8fLfTJePf+pejDTqYNXCZda24LaNtOwxwEmEMAnB0I=";
+    hash = "sha256-7LzReT1iuCbZYNJWjDriMaCljLzpyKWfCX6HjTt18ls=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     rns
     lxmf
     urwid
@@ -37,16 +36,14 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "nomadnet"
-  ];
+  pythonImportsCheck = [ "nomadnet" ];
 
   meta = with lib; {
     description = "Off-grid, resilient mesh communication";
-    mainProgram = "nomadnet";
     homepage = "https://github.com/markqvist/NomadNet";
     changelog = "https://github.com/markqvist/NomadNet/releases/tag/${version}";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "nomadnet";
   };
 }
diff --git a/pkgs/development/python-modules/noneprompt/default.nix b/pkgs/development/python-modules/noneprompt/default.nix
new file mode 100644
index 0000000000000..77cd491486959
--- /dev/null
+++ b/pkgs/development/python-modules/noneprompt/default.nix
@@ -0,0 +1,39 @@
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  poetry-core,
+  prompt-toolkit,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "noneprompt";
+  version = "0.1.9";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-M4uLuJqNIu818d7bOqfBsijPE5lzvcQ8X/w+72RFfbk=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [ prompt-toolkit ];
+
+  # no test
+  doCheck = false;
+
+  pythonImportsCheck = [ "noneprompt" ];
+
+  meta = {
+    description = "Prompt toolkit for console interaction";
+    homepage = "https://github.com/nonebot/noneprompt";
+    changelog = "https://github.com/nonebot/noneprompt/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ moraxyc ];
+    mainProgram = "noneprompt";
+  };
+}
diff --git a/pkgs/development/python-modules/norfair/default.nix b/pkgs/development/python-modules/norfair/default.nix
index 17c4e3553531e..c3c50cd13334d 100644
--- a/pkgs/development/python-modules/norfair/default.nix
+++ b/pkgs/development/python-modules/norfair/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, filterpy
-, importlib-metadata
-, numpy
-, rich
-, scipy
-, motmetrics
-, opencv4
-, pytestCheckHook
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  filterpy,
+  importlib-metadata,
+  numpy,
+  rich,
+  scipy,
+  motmetrics,
+  opencv4,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -27,12 +27,9 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "rich"
-  ];
+  pythonRelaxDeps = [ "rich" ];
 
   propagatedBuildInputs = [
     filterpy
@@ -43,21 +40,13 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    metrics = [
-      motmetrics
-    ];
-    video = [
-      opencv4
-    ];
+    metrics = [ motmetrics ];
+    video = [ opencv4 ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "norfair"
-  ];
+  pythonImportsCheck = [ "norfair" ];
 
   meta = with lib; {
     description = "Lightweight Python library for adding real-time multi-object tracking to any detector";
diff --git a/pkgs/development/python-modules/normality/default.nix b/pkgs/development/python-modules/normality/default.nix
index 862b3af929585..9777c60b67232 100644
--- a/pkgs/development/python-modules/normality/default.nix
+++ b/pkgs/development/python-modules/normality/default.nix
@@ -1,43 +1,48 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, text-unidecode
-, chardet
-, banal
-, pyicu
-, pytestCheckHook
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  setuptools-scm,
+  text-unidecode,
+  charset-normalizer,
+  chardet,
+  banal,
+  pyicu,
+  pytestCheckHook,
 }:
 buildPythonPackage rec {
   pname = "normality";
-  version = "2.2.5";
-  format = "setuptools";
+  version = "2.5.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pudo";
     repo = "normality";
     rev = version;
-    sha256 = "n8Ycm5DeFItmMJTolazZKGIyN7CTg2ajDCwi/UqzVe8=";
+    hash = "sha256-cGQpNhUqlT2B9wKDoDeDmyCNQLwWR7rTCLxnPHhMR0w=";
   };
 
+  buildInputs = [
+    setuptools
+    setuptools-scm
+  ];
+
   propagatedBuildInputs = [
+    charset-normalizer
     text-unidecode
     chardet
     banal
     pyicu
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-
-  pythonImportsCheck = [
-    "normality"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+  pythonImportsCheck = [ "normality" ];
 
-  meta = with lib; {
+  meta = {
     description = "Micro-library to normalize text strings";
     homepage = "https://github.com/pudo/normality";
-    license = licenses.mit;
-    maintainers = [ ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sigmanificient ];
   };
 }
diff --git a/pkgs/development/python-modules/nose-cov/default.nix b/pkgs/development/python-modules/nose-cov/default.nix
deleted file mode 100644
index 8bb314f116f0d..0000000000000
--- a/pkgs/development/python-modules/nose-cov/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ buildPythonPackage, fetchPypi, lib, nose, cov-core }:
-
-buildPythonPackage rec {
-  pname = "nose-cov";
-  version = "1.6";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "04j4fw01bv648gimqqj4z88606lcczbm1k326agcc74gb4sh7v4b";
-  };
-
-  propagatedBuildInputs = [ nose cov-core ];
-
-  meta = with lib; {
-    homepage = "https://pypi.org/project/nose-cov/";
-    license = licenses.mit;
-    description = "This plugin produces coverage reports. It also supports coverage of subprocesses.";
-    maintainers = with maintainers; [ ];
-  };
-}
diff --git a/pkgs/development/python-modules/nose-cprof/default.nix b/pkgs/development/python-modules/nose-cprof/default.nix
deleted file mode 100644
index 58ffc4a25c680..0000000000000
--- a/pkgs/development/python-modules/nose-cprof/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-}:
-
-
-buildPythonPackage rec {
-  pname = "nose-cprof";
-  version = "0.2.1";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0178834759b63dc50388444d4ff8d1ae84e1ba110bb167419afee6bf4699b119";
-  };
-
-  buildInputs = [ nose ];
-
-  meta = with lib; {
-    description = "A python nose plugin to profile using cProfile rather than the default Hotshot profiler";
-    homepage = "https://github.com/msherry/nose-cprof";
-    license = licenses.bsd0;
-  };
-
-}
diff --git a/pkgs/development/python-modules/nose-exclude/default.nix b/pkgs/development/python-modules/nose-exclude/default.nix
deleted file mode 100644
index 38d6cd3bb78ea..0000000000000
--- a/pkgs/development/python-modules/nose-exclude/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, nose
-}:
-
-buildPythonPackage rec {
-  pname = "nose-exclude";
-  version = "0.5.0";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "f78fa8b41eeb815f0486414f710f1eea0949e346cfb11d59ba6295ed69e84304";
-  };
-
-  propagatedBuildInputs = [ nose ];
-
-  # "OSError: AF_UNIX path too long" for darwin
-  doCheck = !stdenv.isDarwin;
-
-  meta = {
-    license = lib.licenses.lgpl21;
-    description = "Exclude specific directories from nosetests runs";
-    homepage = "https://github.com/kgrandis/nose-exclude";
-  };
-}
diff --git a/pkgs/development/python-modules/nose-pattern-exclude/default.nix b/pkgs/development/python-modules/nose-pattern-exclude/default.nix
deleted file mode 100644
index cb0ef287cef14..0000000000000
--- a/pkgs/development/python-modules/nose-pattern-exclude/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, nose }:
-
-buildPythonPackage rec {
-  pname = "nose-pattern-exclude";
-  version = "0.1.3";
-  format = "setuptools";
-
-  propagatedBuildInputs = [ nose ];
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0apzxx8lavsdlxlpaxqw1snx5p7q8v5dfbip6v32f9pj2vyain1i";
-  };
-
-  # There are no tests
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Exclude specific files and directories from nosetests runs";
-    homepage = "https://github.com/jakubroztocil/nose-pattern-exclude";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ jluttine ];
-  };
-}
diff --git a/pkgs/development/python-modules/nose-randomly/default.nix b/pkgs/development/python-modules/nose-randomly/default.nix
deleted file mode 100644
index afb797d3e2f25..0000000000000
--- a/pkgs/development/python-modules/nose-randomly/default.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, nose
-, numpy
-}:
-
-buildPythonPackage rec {
-  pname = "nose-randomly";
-  version = "1.2.6";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "7e483a3d79e13ae760d6ade57ae07ae45bb4b223b61a805e958b4c077116c67c";
-  };
-
-  nativeCheckInputs = [ numpy nose ];
-
-  checkPhase = if stdenv.isDarwin then ''
-    # Work around "OSError: AF_UNIX path too long"
-    TMPDIR="/tmp" nosetests
-  '' else ''
-    nosetests
-  '';
-
-  meta = with lib; {
-    description = "Nose plugin to randomly order tests and control random.seed";
-    homepage = "https://github.com/adamchainz/nose-randomly";
-    license = licenses.bsd3;
-    maintainers = [ ];
-  };
-}
diff --git a/pkgs/development/python-modules/nose-timer/default.nix b/pkgs/development/python-modules/nose-timer/default.nix
deleted file mode 100644
index 51b4bf80d0e8c..0000000000000
--- a/pkgs/development/python-modules/nose-timer/default.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nose
-, mock
-, parameterized
-, termcolor
-}:
-
-buildPythonPackage rec {
-  pname = "nose-timer";
-  version = "1.0.1";
-  format = "setuptools";
-
-  src = fetchFromGitHub {
-    owner = "mahmoudimus";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "0xsai2l5i1av62y9y0q63wy2zk27klmf2jizgghhxg2y8nfa8x3x";
-  };
-
-  propagatedBuildInputs = [ nose ];
-
-  nativeCheckInputs = [
-    mock
-    nose
-    parameterized
-    termcolor
-  ];
-
-  checkPhase = ''
-    runHook preCheck
-    nosetests --verbosity 2 tests
-    runHook postCheck
-  '';
-
-  pythonImportsCheck = [ "nosetimer" ];
-
-  meta = with lib; {
-    description = "A timer plugin for nosetests";
-    homepage = "https://github.com/mahmoudimus/nose-timer";
-    license = licenses.mit;
-    maintainers = with maintainers; [ doronbehar ];
-  };
-}
diff --git a/pkgs/development/python-modules/nose-warnings-filters/default.nix b/pkgs/development/python-modules/nose-warnings-filters/default.nix
deleted file mode 100644
index 4de67b60c468f..0000000000000
--- a/pkgs/development/python-modules/nose-warnings-filters/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, nose
-}:
-
-buildPythonPackage rec {
-  pname = "nose-warnings-filters";
-  version = "0.1.5";
-  format = "setuptools";
-
-  src = fetchPypi {
-    pname = "nose_warnings_filters";
-    inherit version;
-    sha256 = "17dvfqfy2fm7a5cmiffw2dc3064kpx72fn5mlw01skm2rhn5nv25";
-  };
-
-  disabled = !isPy3k;
-
-  propagatedBuildInputs = [ nose ];
-
-  nativeCheckInputs = [ nose ];
-  checkPhase = ''
-    nosetests -v
-  '';
-
-  meta = {
-    description = "Allow injecting warning filters during nosetest";
-    homepage = "https://github.com/Carreau/nose_warnings_filters";
-    license = lib.licenses.mit;
-  };
-}
diff --git a/pkgs/development/python-modules/nose/0001-nose-python-3.12-fixes.patch b/pkgs/development/python-modules/nose/0001-nose-python-3.12-fixes.patch
new file mode 100644
index 0000000000000..67a671a8ae5f7
--- /dev/null
+++ b/pkgs/development/python-modules/nose/0001-nose-python-3.12-fixes.patch
@@ -0,0 +1,576 @@
+diff --git a/LICENSE.cpython b/LICENSE.cpython
+new file mode 100644
+index 0000000..14603b9
+--- /dev/null
++++ b/LICENSE.cpython
+@@ -0,0 +1,277 @@
++A. HISTORY OF THE SOFTWARE
++==========================
++
++Python was created in the early 1990s by Guido van Rossum at Stichting
++Mathematisch Centrum (CWI, see https://www.cwi.nl) in the Netherlands
++as a successor of a language called ABC.  Guido remains Python's
++principal author, although it includes many contributions from others.
++
++In 1995, Guido continued his work on Python at the Corporation for
++National Research Initiatives (CNRI, see https://www.cnri.reston.va.us)
++in Reston, Virginia where he released several versions of the
++software.
++
++In May 2000, Guido and the Python core development team moved to
++BeOpen.com to form the BeOpen PythonLabs team.  In October of the same
++year, the PythonLabs team moved to Digital Creations, which became
++Zope Corporation.  In 2001, the Python Software Foundation (PSF, see
++https://www.python.org/psf/) was formed, a non-profit organization
++created specifically to own Python-related Intellectual Property.
++Zope Corporation was a sponsoring member of the PSF.
++
++All Python releases are Open Source (see https://opensource.org for
++the Open Source Definition).  Historically, most, but not all, Python
++releases have also been GPL-compatible; the table below summarizes
++the various releases.
++
++    Release         Derived     Year        Owner       GPL-
++                    from                                compatible? (1)
++
++    0.9.0 thru 1.2              1991-1995   CWI         yes
++    1.3 thru 1.5.2  1.2         1995-1999   CNRI        yes
++    1.6             1.5.2       2000        CNRI        no
++    2.0             1.6         2000        BeOpen.com  no
++    1.6.1           1.6         2001        CNRI        yes (2)
++    2.1             2.0+1.6.1   2001        PSF         no
++    2.0.1           2.0+1.6.1   2001        PSF         yes
++    2.1.1           2.1+2.0.1   2001        PSF         yes
++    2.1.2           2.1.1       2002        PSF         yes
++    2.1.3           2.1.2       2002        PSF         yes
++    2.2 and above   2.1.1       2001-now    PSF         yes
++
++Footnotes:
++
++(1) GPL-compatible doesn't mean that we're distributing Python under
++    the GPL.  All Python licenses, unlike the GPL, let you distribute
++    a modified version without making your changes open source.  The
++    GPL-compatible licenses make it possible to combine Python with
++    other software that is released under the GPL; the others don't.
++
++(2) According to Richard Stallman, 1.6.1 is not GPL-compatible,
++    because its license has a choice of law clause.  According to
++    CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1
++    is "not incompatible" with the GPL.
++
++Thanks to the many outside volunteers who have worked under Guido's
++direction to make these releases possible.
++
++
++B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON
++===============================================================
++
++Python software and documentation are licensed under the
++Python Software Foundation License Version 2.
++
++Starting with Python 3.8.6, examples, recipes, and other code in
++the documentation are dual licensed under the PSF License Version 2
++and the Zero-Clause BSD license.
++
++Some software incorporated into Python is under different licenses.
++The licenses are listed with code falling under that license.
++
++
++PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
++--------------------------------------------
++
++1. This LICENSE AGREEMENT is between the Python Software Foundation
++("PSF"), and the Individual or Organization ("Licensee") accessing and
++otherwise using this software ("Python") in source or binary form and
++its associated documentation.
++
++2. Subject to the terms and conditions of this License Agreement, PSF hereby
++grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
++analyze, test, perform and/or display publicly, prepare derivative works,
++distribute, and otherwise use Python alone or in any derivative version,
++provided, however, that PSF's License Agreement and PSF's notice of copyright,
++i.e., "Copyright (c) 2001-2024 Python Software Foundation; All Rights Reserved"
++are retained in Python alone or in any derivative version prepared by Licensee.
++
++3. In the event Licensee prepares a derivative work that is based on
++or incorporates Python or any part thereof, and wants to make
++the derivative work available to others as provided herein, then
++Licensee hereby agrees to include in any such work a brief summary of
++the changes made to Python.
++
++4. PSF is making Python available to Licensee on an "AS IS"
++basis.  PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
++IMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
++DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
++FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
++INFRINGE ANY THIRD PARTY RIGHTS.
++
++5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
++FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
++A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
++OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
++
++6. This License Agreement will automatically terminate upon a material
++breach of its terms and conditions.
++
++7. Nothing in this License Agreement shall be deemed to create any
++relationship of agency, partnership, or joint venture between PSF and
++Licensee.  This License Agreement does not grant permission to use PSF
++trademarks or trade name in a trademark sense to endorse or promote
++products or services of Licensee, or any third party.
++
++8. By copying, installing or otherwise using Python, Licensee
++agrees to be bound by the terms and conditions of this License
++Agreement.
++
++
++BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0
++-------------------------------------------
++
++BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1
++
++1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an
++office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the
++Individual or Organization ("Licensee") accessing and otherwise using
++this software in source or binary form and its associated
++documentation ("the Software").
++
++2. Subject to the terms and conditions of this BeOpen Python License
++Agreement, BeOpen hereby grants Licensee a non-exclusive,
++royalty-free, world-wide license to reproduce, analyze, test, perform
++and/or display publicly, prepare derivative works, distribute, and
++otherwise use the Software alone or in any derivative version,
++provided, however, that the BeOpen Python License is retained in the
++Software, alone or in any derivative version prepared by Licensee.
++
++3. BeOpen is making the Software available to Licensee on an "AS IS"
++basis.  BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
++IMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND
++DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
++FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT
++INFRINGE ANY THIRD PARTY RIGHTS.
++
++4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE
++SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS
++AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY
++DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
++
++5. This License Agreement will automatically terminate upon a material
++breach of its terms and conditions.
++
++6. This License Agreement shall be governed by and interpreted in all
++respects by the law of the State of California, excluding conflict of
++law provisions.  Nothing in this License Agreement shall be deemed to
++create any relationship of agency, partnership, or joint venture
++between BeOpen and Licensee.  This License Agreement does not grant
++permission to use BeOpen trademarks or trade names in a trademark
++sense to endorse or promote products or services of Licensee, or any
++third party.  As an exception, the "BeOpen Python" logos available at
++http://www.pythonlabs.com/logos.html may be used according to the
++permissions granted on that web page.
++
++7. By copying, installing or otherwise using the software, Licensee
++agrees to be bound by the terms and conditions of this License
++Agreement.
++
++
++CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1
++---------------------------------------
++
++1. This LICENSE AGREEMENT is between the Corporation for National
++Research Initiatives, having an office at 1895 Preston White Drive,
++Reston, VA 20191 ("CNRI"), and the Individual or Organization
++("Licensee") accessing and otherwise using Python 1.6.1 software in
++source or binary form and its associated documentation.
++
++2. Subject to the terms and conditions of this License Agreement, CNRI
++hereby grants Licensee a nonexclusive, royalty-free, world-wide
++license to reproduce, analyze, test, perform and/or display publicly,
++prepare derivative works, distribute, and otherwise use Python 1.6.1
++alone or in any derivative version, provided, however, that CNRI's
++License Agreement and CNRI's notice of copyright, i.e., "Copyright (c)
++1995-2001 Corporation for National Research Initiatives; All Rights
++Reserved" are retained in Python 1.6.1 alone or in any derivative
++version prepared by Licensee.  Alternately, in lieu of CNRI's License
++Agreement, Licensee may substitute the following text (omitting the
++quotes): "Python 1.6.1 is made available subject to the terms and
++conditions in CNRI's License Agreement.  This Agreement together with
++Python 1.6.1 may be located on the internet using the following
++unique, persistent identifier (known as a handle): 1895.22/1013.  This
++Agreement may also be obtained from a proxy server on the internet
++using the following URL: http://hdl.handle.net/1895.22/1013".
++
++3. In the event Licensee prepares a derivative work that is based on
++or incorporates Python 1.6.1 or any part thereof, and wants to make
++the derivative work available to others as provided herein, then
++Licensee hereby agrees to include in any such work a brief summary of
++the changes made to Python 1.6.1.
++
++4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS"
++basis.  CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
++IMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND
++DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
++FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT
++INFRINGE ANY THIRD PARTY RIGHTS.
++
++5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
++1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
++A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1,
++OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
++
++6. This License Agreement will automatically terminate upon a material
++breach of its terms and conditions.
++
++7. This License Agreement shall be governed by the federal
++intellectual property law of the United States, including without
++limitation the federal copyright law, and, to the extent such
++U.S. federal law does not apply, by the law of the Commonwealth of
++Virginia, excluding Virginia's conflict of law provisions.
++Notwithstanding the foregoing, with regard to derivative works based
++on Python 1.6.1 that incorporate non-separable material that was
++previously distributed under the GNU General Public License (GPL), the
++law of the Commonwealth of Virginia shall govern this License
++Agreement only as to issues arising under or with respect to
++Paragraphs 4, 5, and 7 of this License Agreement.  Nothing in this
++License Agreement shall be deemed to create any relationship of
++agency, partnership, or joint venture between CNRI and Licensee.  This
++License Agreement does not grant permission to use CNRI trademarks or
++trade name in a trademark sense to endorse or promote products or
++services of Licensee, or any third party.
++
++8. By clicking on the "ACCEPT" button where indicated, or by copying,
++installing or otherwise using Python 1.6.1, Licensee agrees to be
++bound by the terms and conditions of this License Agreement.
++
++        ACCEPT
++
++
++CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2
++--------------------------------------------------
++
++Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam,
++The Netherlands.  All rights reserved.
++
++Permission to use, copy, modify, and distribute this software and its
++documentation for any purpose and without fee is hereby granted,
++provided that the above copyright notice appear in all copies and that
++both that copyright notice and this permission notice appear in
++supporting documentation, and that the name of Stichting Mathematisch
++Centrum or CWI not be used in advertising or publicity pertaining to
++distribution of the software without specific, written prior
++permission.
++
++STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
++THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
++FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
++FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
++ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
++OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
++
++ZERO-CLAUSE BSD LICENSE FOR CODE IN THE PYTHON DOCUMENTATION
++----------------------------------------------------------------------
++
++Permission to use, copy, modify, and/or distribute this software for any
++purpose with or without fee is hereby granted.
++
++THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
++REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
++AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
++INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
++LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
++OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
++PERFORMANCE OF THIS SOFTWARE.
+diff --git a/nose/importer.py b/nose/importer.py
+index e677658..77099eb 100644
+--- a/nose/importer.py
++++ b/nose/importer.py
+@@ -7,9 +7,10 @@ the builtin importer.
+ import logging
+ import os
+ import sys
++import tokenize
+ from nose.config import Config
+-
+-from imp import find_module, load_module, acquire_lock, release_lock
++from importlib import _imp
++from importlib import machinery
+ 
+ log = logging.getLogger(__name__)
+ 
+@@ -20,6 +21,244 @@ except AttributeError:
+         return (os.path.normcase(os.path.realpath(src)) ==
+                 os.path.normcase(os.path.realpath(dst)))
+ 
++################################################################################
++# BEGIN IMPORTLIB SHIMS
++################################################################################
++
++# Adapted from the CPython 3.11 imp.py code.
++# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Python Software Foundation; All Rights Reserved
++# Originally licensed under the PSLv2 (see LICENSE.cpython) and incorporated under the LGPL 2.1 (see lgpl.txt).
++
++try:
++    from _imp import create_dynamic
++except ImportError:
++    # Platform doesn't support dynamic loading.
++    create_dynamic = None
++
++from importlib._bootstrap import _ERR_MSG, _exec, _load, _builtin_from_name
++from importlib._bootstrap_external import SourcelessFileLoader
++
++from importlib import machinery
++from importlib import util
++import importlib
++import os
++import sys
++import tokenize
++import types
++
++
++SEARCH_ERROR = 0
++PY_SOURCE = 1
++PY_COMPILED = 2
++C_EXTENSION = 3
++PY_RESOURCE = 4
++PKG_DIRECTORY = 5
++C_BUILTIN = 6
++PY_FROZEN = 7
++PY_CODERESOURCE = 8
++IMP_HOOK = 9
++
++
++def get_suffixes():
++    extensions = [(s, 'rb', C_EXTENSION) for s in machinery.EXTENSION_SUFFIXES]
++    source = [(s, 'r', PY_SOURCE) for s in machinery.SOURCE_SUFFIXES]
++    bytecode = [(s, 'rb', PY_COMPILED) for s in machinery.BYTECODE_SUFFIXES]
++
++    return extensions + source + bytecode
++
++
++class _HackedGetData:
++
++    """Compatibility support for 'file' arguments of various load_*()
++    functions."""
++
++    def __init__(self, fullname, path, file=None):
++        super().__init__(fullname, path)
++        self.file = file
++
++    def get_data(self, path):
++        """Gross hack to contort loader to deal w/ load_*()'s bad API."""
++        if self.file and path == self.path:
++            # The contract of get_data() requires us to return bytes. Reopen the
++            # file in binary mode if needed.
++            if not self.file.closed:
++                file = self.file
++                if 'b' not in file.mode:
++                    file.close()
++            if self.file.closed:
++                self.file = file = open(self.path, 'rb')
++
++            with file:
++                return file.read()
++        else:
++            return super().get_data(path)
++
++
++class _LoadSourceCompatibility(_HackedGetData, machinery.SourceFileLoader):
++
++    """Compatibility support for implementing load_source()."""
++
++
++def load_source(name, pathname, file=None):
++    loader = _LoadSourceCompatibility(name, pathname, file)
++    spec = util.spec_from_file_location(name, pathname, loader=loader)
++    if name in sys.modules:
++        module = _exec(spec, sys.modules[name])
++    else:
++        module = _load(spec)
++    # To allow reloading to potentially work, use a non-hacked loader which
++    # won't rely on a now-closed file object.
++    module.__loader__ = machinery.SourceFileLoader(name, pathname)
++    module.__spec__.loader = module.__loader__
++    return module
++
++
++class _LoadCompiledCompatibility(_HackedGetData, SourcelessFileLoader):
++
++    """Compatibility support for implementing load_compiled()."""
++
++
++def load_compiled(name, pathname, file=None):
++    loader = _LoadCompiledCompatibility(name, pathname, file)
++    spec = util.spec_from_file_location(name, pathname, loader=loader)
++    if name in sys.modules:
++        module = _exec(spec, sys.modules[name])
++    else:
++        module = _load(spec)
++    # To allow reloading to potentially work, use a non-hacked loader which
++    # won't rely on a now-closed file object.
++    module.__loader__ = SourcelessFileLoader(name, pathname)
++    module.__spec__.loader = module.__loader__
++    return module
++
++
++def load_package(name, path):
++    if os.path.isdir(path):
++        extensions = (machinery.SOURCE_SUFFIXES[:] +
++                      machinery.BYTECODE_SUFFIXES[:])
++        for extension in extensions:
++            init_path = os.path.join(path, '__init__' + extension)
++            if os.path.exists(init_path):
++                path = init_path
++                break
++        else:
++            raise ValueError('{!r} is not a package'.format(path))
++    spec = util.spec_from_file_location(name, path,
++                                        submodule_search_locations=[])
++    if name in sys.modules:
++        return _exec(spec, sys.modules[name])
++    else:
++        return _load(spec)
++
++
++def load_module(name, file, filename, details):
++    """
++
++    Load a module, given information returned by find_module().
++
++    The module name must include the full package name, if any.
++
++    """
++    suffix, mode, type_ = details
++    if mode and (not mode.startswith('r') or '+' in mode):
++        raise ValueError('invalid file open mode {!r}'.format(mode))
++    elif file is None and type_ in {PY_SOURCE, PY_COMPILED}:
++        msg = 'file object required for import (type code {})'.format(type_)
++        raise ValueError(msg)
++    elif type_ == PY_SOURCE:
++        return load_source(name, filename, file)
++    elif type_ == PY_COMPILED:
++        return load_compiled(name, filename, file)
++    elif type_ == PKG_DIRECTORY:
++        return load_package(name, filename)
++    elif type_ == C_BUILTIN:
++        return init_builtin(name)
++    elif type_ == PY_FROZEN:
++        return _imp.init_frozen(name)
++    else:
++        msg =  "Don't know how to import {} (type code {})".format(name, type_)
++        raise ImportError(msg, name=name)
++
++
++def find_module(name, path=None):
++    """
++
++    Search for a module.
++
++    If path is omitted or None, search for a built-in, frozen or special
++    module and continue search in sys.path. The module name cannot
++    contain '.'; to search for a submodule of a package, pass the
++    submodule name and the package's __path__.
++
++    """
++    if not isinstance(name, str):
++        raise TypeError("'name' must be a str, not {}".format(type(name)))
++    elif not isinstance(path, (type(None), list)):
++        # Backwards-compatibility
++        raise RuntimeError("'path' must be None or a list, "
++                           "not {}".format(type(path)))
++
++    if path is None:
++        if _imp.is_builtin(name):
++            return None, None, ('', '', C_BUILTIN)
++        elif _imp.is_frozen(name):
++            return None, None, ('', '', PY_FROZEN)
++        else:
++            path = sys.path
++
++    for entry in path:
++        package_directory = os.path.join(entry, name)
++        for suffix in ['.py', machinery.BYTECODE_SUFFIXES[0]]:
++            package_file_name = '__init__' + suffix
++            file_path = os.path.join(package_directory, package_file_name)
++            if os.path.isfile(file_path):
++                return None, package_directory, ('', '', PKG_DIRECTORY)
++        for suffix, mode, type_ in get_suffixes():
++            file_name = name + suffix
++            file_path = os.path.join(entry, file_name)
++            if os.path.isfile(file_path):
++                break
++        else:
++            continue
++        break  # Break out of outer loop when breaking out of inner loop.
++    else:
++        raise ImportError(_ERR_MSG.format(name), name=name)
++
++    encoding = None
++    if 'b' not in mode:
++        with open(file_path, 'rb') as file:
++            encoding = tokenize.detect_encoding(file.readline)[0]
++    file = open(file_path, mode, encoding=encoding)
++    return file, file_path, (suffix, mode, type_)
++
++
++def reload(module):
++    """
++
++    Reload the module and return it.
++
++    The module must have been successfully imported before.
++
++    """
++    return importlib.reload(module)
++
++
++def init_builtin(name):
++    """
++
++    Load and return a built-in module by name, or None is such module doesn't
++    exist
++    """
++    try:
++        return _builtin_from_name(name)
++    except ImportError:
++        return None
++
++
++################################################################################
++# END IMPORTLIB SHIMS
++################################################################################
++
+ 
+ class Importer(object):
+     """An importer class that does only path-specific imports. That
+@@ -73,7 +312,7 @@ class Importer(object):
+             else:
+                 part_fqname = "%s.%s" % (part_fqname, part)
+             try:
+-                acquire_lock()
++                _imp.acquire_lock()
+                 log.debug("find module part %s (%s) in %s",
+                           part, part_fqname, path)
+                 fh, filename, desc = find_module(part, path)
+@@ -95,7 +334,7 @@ class Importer(object):
+             finally:
+                 if fh:
+                     fh.close()
+-                release_lock()
++                _imp.release_lock()
+             if parent:
+                 setattr(parent, part, mod)
+             if hasattr(mod, '__path__'):
+diff --git a/nose/result.py b/nose/result.py
+index f974a14..228a42c 100644
+--- a/nose/result.py
++++ b/nose/result.py
+@@ -13,7 +13,7 @@ try:
+     # 2.7+
+     from unittest.runner import _TextTestResult
+ except ImportError:
+-    from unittest import _TextTestResult
++    from unittest import TextTestResult as _TextTestResult
+ from nose.config import Config
+ from nose.util import isclass, ln as _ln # backwards compat
+ 
diff --git a/pkgs/development/python-modules/nose/default.nix b/pkgs/development/python-modules/nose/default.nix
index d59dd0db64615..308039cc61d7e 100644
--- a/pkgs/development/python-modules/nose/default.nix
+++ b/pkgs/development/python-modules/nose/default.nix
@@ -1,27 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, isPyPy
-, python
- ,pythonAtLeast
-, coverage
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  isPyPy,
+  python,
+  python312,
+  coverage,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   version = "1.3.7";
-  format = "setuptools";
   pname = "nose";
-
-  # unmaintained, relies on the imp module
-  disabled = pythonAtLeast "3.12";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98";
   };
 
-  # 2to3 was removed in setuptools 58
+  build-system = [ setuptools ];
+
+  patches = lib.optional isPy3k [ ./0001-nose-python-3.12-fixes.patch ];
+
   postPatch = ''
     substituteInPlace setup.py \
       --replace "'use_2to3': True," ""
@@ -30,26 +32,32 @@ buildPythonPackage rec {
       --replace "from setuptools.command.build_py import Mixin2to3" "from distutils.util import Mixin2to3"
   '';
 
-  preBuild = lib.optionalString (isPy3k) ''
-    ${python.pythonOnBuildForHost}/bin/2to3 -wn nose functional_tests unit_tests
+  # 2to3 is removed from Python 3.13, so always use Python 3.12 2to3 for now.
+  preBuild = lib.optionalString isPy3k ''
+    ${python312.pythonOnBuildForHost}/bin/2to3 -wn nose functional_tests unit_tests
   '';
 
   propagatedBuildInputs = [ coverage ];
 
   doCheck = false; # lot's of transient errors, too much hassle
-  checkPhase = if isPy3k then ''
-    ${python.pythonOnBuildForHost.interpreter} setup.py build_tests
-  '' else "" + ''
-    rm functional_tests/test_multiprocessing/test_concurrent_shared.py* # see https://github.com/nose-devs/nose/commit/226bc671c73643887b36b8467b34ad485c2df062
-    ${python.pythonOnBuildForHost.interpreter} selftest.py
-  '';
+  checkPhase =
+    if isPy3k then
+      ''
+        ${python.pythonOnBuildForHost.interpreter} setup.py build_tests
+      ''
+    else
+      ""
+      + ''
+        rm functional_tests/test_multiprocessing/test_concurrent_shared.py* # see https://github.com/nose-devs/nose/commit/226bc671c73643887b36b8467b34ad485c2df062
+        ${python.pythonOnBuildForHost.interpreter} selftest.py
+      '';
 
   meta = with lib; {
     broken = isPyPy; # missing 2to3 conversion utility
-    description = "A unittest-based testing framework for python that makes writing and running tests easier";
+    description = "Unittest-based testing framework for python that makes writing and running tests easier";
     mainProgram = "nosetests";
     homepage = "https://nose.readthedocs.io/";
     license = licenses.lgpl3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/nose2/default.nix b/pkgs/development/python-modules/nose2/default.nix
index 4d6e6b3e5c83d..b2a65a5648ef3 100644
--- a/pkgs/development/python-modules/nose2/default.nix
+++ b/pkgs/development/python-modules/nose2/default.nix
@@ -1,43 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# optional-dependencies
-, coverage
+  # optional-dependencies
+  coverage,
 
-# tests
-, unittestCheckHook
+  # tests
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "nose2";
-  version = "0.14.1";
+  version = "0.15.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-f48Dohyd4sMwFZM6/O9yv45KLV3+w7QAkih95uQbCTo=";
+    hash = "sha256-NncPUZ31vs08v+C+5Ku/v5ufa0604DNh0oK378/E8N8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   passthru.optional-dependencies = {
-    coverage = [
-      coverage
-    ];
+    coverage = [ coverage ];
   };
 
-  pythonImportsCheck = [
-    "nose2"
-  ];
+  pythonImportsCheck = [ "nose2" ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -51,6 +46,6 @@ buildPythonPackage rec {
     mainProgram = "nose2";
     homepage = "https://github.com/nose-devs/nose2";
     license = licenses.bsd0;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/nose2pytest/default.nix b/pkgs/development/python-modules/nose2pytest/default.nix
new file mode 100644
index 0000000000000..a1aaa748db0be
--- /dev/null
+++ b/pkgs/development/python-modules/nose2pytest/default.nix
@@ -0,0 +1,61 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  setuptools,
+  fissix,
+  pytestCheckHook,
+  nose,
+}:
+
+let
+  version = "1.0.12";
+in
+
+buildPythonPackage {
+  pname = "nose2pytest";
+  inherit version;
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "pytest-dev";
+    repo = "nose2pytest";
+    rev = "v${version}";
+    hash = "sha256-BYyj2ZOZvWBpmzQACpmxAzCdQhlZlDYt+HLMdft+wYY=";
+  };
+
+  patches = [
+    # Drop Python 3.6 and 3.7 support
+    #
+    # Relaxes the runtime check for Python < 3.12.
+    (fetchpatch2 {
+      url = "https://github.com/pytest-dev/nose2pytest/commit/75ff506aaf11b5e20672441730657ee7540387e1.patch?full_index=1";
+      hash = "sha256-BpazrsB4b1oMBx9OemdVxhj/Jqbc8RKv2GC6gqkdGK8=";
+    })
+  ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [ fissix ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    nose
+  ];
+
+  preCheck = ''
+    export HOME=$(mktemp -d)
+  '';
+
+  pythonImportsCheck = [ "nose2pytest.assert_tools" ];
+
+  meta = {
+    description = "Scripts to convert Python Nose tests to PyTest";
+    homepage = "https://github.com/pytest-dev/nose2pytest";
+    sourceProvenance = [ lib.sourceTypes.fromSource ];
+    license = lib.licenses.bsd3;
+    maintainers = [ lib.maintainers.emily ];
+    mainProgram = "nose2pytest";
+  };
+}
diff --git a/pkgs/development/python-modules/nose3/default.nix b/pkgs/development/python-modules/nose3/default.nix
deleted file mode 100644
index df6d75a07dc5a..0000000000000
--- a/pkgs/development/python-modules/nose3/default.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ lib
-, buildPythonPackage
-, coverage
-, fetchPypi
-, isPyPy
-, isPy311
-, python
-, pythonAtLeast
-, stdenv
-}:
-
-buildPythonPackage rec {
-  pname = "nose3";
-  version = "1.3.8";
-  format = "setuptools";
-
-  # https://github.com/jayvdb/nose3/issues/5
-  disabled = pythonAtLeast "3.12";
-
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-diquIsrbiYsAudT0u7n46H+ODd5sSaiM0MVU9OWSW3Y=";
-  };
-
-  propagatedBuildInputs = [ coverage ];
-
-  # PyPy hangs for unknwon reason
-  # Darwin and python 3.11 fail at various assertions and I didn't find an easy way to find skip those tests
-  doCheck = !isPyPy && !stdenv.isDarwin && !isPy311;
-
-  checkPhase = ''
-    ${python.pythonOnBuildForHost.interpreter} selftest.py
-  '';
-
-  meta = with lib; {
-    description = "Fork of nose v1 not using lib2to3 for compatibility with Python 3";
-    homepage = "https://github.com/jayvdb/nose3";
-    license = licenses.lgpl3;
-    maintainers = with maintainers; [ SuperSandro2000 ];
-  };
-}
diff --git a/pkgs/development/python-modules/nosejs/default.nix b/pkgs/development/python-modules/nosejs/default.nix
deleted file mode 100644
index 782673d4e498b..0000000000000
--- a/pkgs/development/python-modules/nosejs/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-}:
-
-buildPythonPackage rec {
-  pname = "nosejs";
-  version = "0.9.4";
-
-  src = fetchPypi {
-    pname = "NoseJS";
-    inherit version;
-    sha256 = "0qrhkd3sga56qf6k0sqyhwfcladwi05gl6aqmr0xriiq1sgva5dy";
-  };
-
-  nativeCheckInputs = [ nose ];
-
-  checkPhase = ''
-    nosetests -v
-  '';
-
-  meta = with lib; {
-    homepage = "https://pypi.org/project/NoseJS/";
-    description = "A Nose plugin for integrating JavaScript tests into a Python test suite";
-    license = licenses.free;
-  };
-
-}
diff --git a/pkgs/development/python-modules/nosexcover/default.nix b/pkgs/development/python-modules/nosexcover/default.nix
deleted file mode 100644
index 19d34904739ba..0000000000000
--- a/pkgs/development/python-modules/nosexcover/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonAtLeast
-, coverage
-, nose
-}:
-
-buildPythonPackage rec {
-  pname = "nosexcover";
-  version = "1.0.11";
-  format = "setuptools";
-
-  # requires the imp module
-  disabled = pythonAtLeast "3.12";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "298c3c655da587f6cab8a666e9f4b150320032431062dea91353988d45c8b883";
-  };
-
-  propagatedBuildInputs = [ coverage nose ];
-
-  meta = with lib; {
-    description = "Extends nose.plugins.cover to add Cobertura-style XML reports";
-    homepage = "https://github.com/cmheisel/nose-xcover/";
-    license = licenses.bsd3;
-  };
-
-}
diff --git a/pkgs/development/python-modules/notebook-shim/default.nix b/pkgs/development/python-modules/notebook-shim/default.nix
index c352bd00083c2..b61ef87c8873e 100644
--- a/pkgs/development/python-modules/notebook-shim/default.nix
+++ b/pkgs/development/python-modules/notebook-shim/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, jupyter-server
-, pytestCheckHook
-, pytest-tornasync
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  jupyter-server,
+  pytestCheckHook,
+  pytest-tornasync,
 }:
 
 buildPythonPackage rec {
@@ -46,6 +47,6 @@ buildPythonPackage rec {
     '';
     homepage = "https://github.com/jupyter/notebook_shim";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ friedelino ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/notebook/default.nix b/pkgs/development/python-modules/notebook/default.nix
index 6f09fdae9c67e..9e796f6bf5374 100644
--- a/pkgs/development/python-modules/notebook/default.nix
+++ b/pkgs/development/python-modules/notebook/default.nix
@@ -1,29 +1,29 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, hatch-jupyter-builder
-, hatchling
-, jupyter-server
-, jupyterlab
-, jupyterlab-server
-, notebook-shim
-, tornado
-, pytest-jupyter
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  hatch-jupyter-builder,
+  hatchling,
+  jupyter-server,
+  jupyterlab,
+  jupyterlab-server,
+  notebook-shim,
+  tornado,
+  pytest-jupyter,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "notebook";
-  version = "7.1.3";
-  disabled = pythonOlder "3.8";
+  version = "7.2.2";
+  pyproject = true;
 
-  format = "pyproject";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Qfzr/0TPe7k3cYCAi8uuBmYptV2MdyLx6751ykT5z8E=";
+    hash = "sha256-LvB9QiBCFiOtP+iBGNaHvARQBVVwzdFggUpZzzocUW4=";
   };
 
   postPatch = ''
@@ -31,13 +31,13 @@ buildPythonPackage rec {
       --replace "timeout = 300" ""
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-jupyter-builder
     hatchling
     jupyterlab
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     jupyter-server
     jupyterlab
     jupyterlab-server
@@ -51,7 +51,8 @@ buildPythonPackage rec {
   ];
 
   pytestFlagsArray = [
-    "-W" "ignore::DeprecationWarning"
+    "-W"
+    "ignore::DeprecationWarning"
   ];
 
   env = {
diff --git a/pkgs/development/python-modules/notedown/default.nix b/pkgs/development/python-modules/notedown/default.nix
index f272f5cb0d4b9..72666397f044c 100644
--- a/pkgs/development/python-modules/notedown/default.nix
+++ b/pkgs/development/python-modules/notedown/default.nix
@@ -1,11 +1,12 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
-, nbconvert
-, nbformat
-, notebook
-, pandoc-attributes
-, six
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  nbconvert,
+  nbformat,
+  notebook,
+  pandoc-attributes,
+  six,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/notifications-android-tv/default.nix b/pkgs/development/python-modules/notifications-android-tv/default.nix
index 00e43cfe18797..319c81c13d087 100644
--- a/pkgs/development/python-modules/notifications-android-tv/default.nix
+++ b/pkgs/development/python-modules/notifications-android-tv/default.nix
@@ -1,40 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, httpx
-, poetry-core
-, pytest-asyncio
-, pytest-httpx
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpx,
+  poetry-core,
+  pytest-asyncio,
+  pytest-httpx,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "notifications-android-tv";
-  version = "1.0.0";
+  version = "1.2.2";
   format = "pyproject";
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "engrbm87";
     repo = "notifications_android_tv";
-    rev = version;
-    hash = "sha256-Xr+d2uYzgFp/Fb00ymov02+GYnwjGc3FbJ/rIvQXzCE=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-JUvxxVCiQtywAWU5AYnPm4SueIWIXkzLxPYveVXpc2E=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    httpx
-  ];
+  propagatedBuildInputs = [ httpx ];
 
   pythonImportsCheck = [ "notifications_android_tv" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   checkInputs = [
     pytest-asyncio
diff --git a/pkgs/development/python-modules/notifications-python-client/default.nix b/pkgs/development/python-modules/notifications-python-client/default.nix
index 353c5fc3d42e2..bbb5386fa1056 100644
--- a/pkgs/development/python-modules/notifications-python-client/default.nix
+++ b/pkgs/development/python-modules/notifications-python-client/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, docopt
-, fetchFromGitHub
-, freezegun
-, mock
-, pyjwt
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  docopt,
+  fetchFromGitHub,
+  freezegun,
+  mock,
+  pyjwt,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "notifications-python-client";
-  version = "9.0.0";
-  format = "setuptools";
+  version = "10.0.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -24,19 +25,17 @@ buildPythonPackage rec {
     owner = "alphagov";
     repo = "notifications-python-client";
     rev = "refs/tags/${version}";
-    hash = "sha256-HDxCVwagHFenx0S2TPxiMIyyq4ovxe0yNi76sX2CC9s=";
+    hash = "sha256-qjiI+aTJLOz3XSTHKrpZrJ/wg1xP+V7ww0//xX3Kf1E=";
   };
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "pytest-runner" ""
+      --replace-fail "pytest-runner" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     docopt
     pyjwt
     requests
@@ -50,15 +49,13 @@ buildPythonPackage rec {
     requests-mock
   ];
 
-  pythonImportsCheck = [
-    "notifications_python_client"
-  ];
+  pythonImportsCheck = [ "notifications_python_client" ];
 
   meta = with lib; {
     description = "Python client for the GOV.UK Notify API";
     homepage = "https://github.com/alphagov/notifications-python-client";
     changelog = "https://github.com/alphagov/notifications-python-client/blob/${version}/CHANGELOG.md";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/notify-events/default.nix b/pkgs/development/python-modules/notify-events/default.nix
index 97d888ae23ce5..6a5d1a4bd07a3 100644
--- a/pkgs/development/python-modules/notify-events/default.nix
+++ b/pkgs/development/python-modules/notify-events/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     sha256 = "e63ba935c3300ff7f48cba115f7cb4474906e83c2e9b60b95a0881eb949701e7";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # upstream has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/notify-py/default.nix b/pkgs/development/python-modules/notify-py/default.nix
index 9e4a972386995..cc46dbe77fdf0 100644
--- a/pkgs/development/python-modules/notify-py/default.nix
+++ b/pkgs/development/python-modules/notify-py/default.nix
@@ -1,24 +1,24 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, substituteAll
-, alsa-utils
-, libnotify
-, which
-, poetry-core
-, pythonRelaxDepsHook
-, jeepney
-, loguru
-, pytest
-, dbus
-, coreutils
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  substituteAll,
+  alsa-utils,
+  libnotify,
+  which,
+  poetry-core,
+  jeepney,
+  loguru,
+  pytest,
+  dbus,
+  coreutils,
 }:
 
 buildPythonPackage rec {
   pname = "notify-py";
-  version = "0.3.42";
+  version = "0.3.43";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -27,57 +27,54 @@ buildPythonPackage rec {
     owner = "ms7m";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-XtjJImH9UwPPZS/Yqs8S5xGXOLBRmJRawzxWXoPWvrM=";
+    hash = "sha256-4PJ/0dLG3bWDuF1G/qUmvNaIUFXgPP2S/0uhZz86WRA=";
   };
 
-  patches = lib.optionals stdenv.isLinux [
-    # hardcode paths to aplay and notify-send
-    (substituteAll {
-      src = ./linux-paths.patch;
-      aplay = "${alsa-utils}/bin/aplay";
-      notifysend = "${libnotify}/bin/notify-send";
-    })
-  ] ++ lib.optionals stdenv.isDarwin [
-    # hardcode path to which
-    (substituteAll {
-      src = ./darwin-paths.patch;
-      which = "${which}/bin/which";
-    })
-  ];
+  patches =
+    lib.optionals stdenv.hostPlatform.isLinux [
+      # hardcode paths to aplay and notify-send
+      (substituteAll {
+        src = ./linux-paths.patch;
+        aplay = "${alsa-utils}/bin/aplay";
+        notifysend = "${libnotify}/bin/notify-send";
+      })
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # hardcode path to which
+      (substituteAll {
+        src = ./darwin-paths.patch;
+        which = "${which}/bin/which";
+      })
+    ];
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "loguru"
-  ];
+  pythonRelaxDeps = [ "loguru" ];
 
-  propagatedBuildInputs = [
-    loguru
-  ] ++ lib.optionals stdenv.isLinux [
-    jeepney
-  ];
+  propagatedBuildInputs = [ loguru ] ++ lib.optionals stdenv.hostPlatform.isLinux [ jeepney ];
 
-  nativeCheckInputs = [
-    pytest
-  ] ++ lib.optionals stdenv.isLinux [
-    dbus
-  ];
+  nativeCheckInputs = [ pytest ] ++ lib.optionals stdenv.hostPlatform.isLinux [ dbus ];
 
-  checkPhase = if stdenv.isDarwin then ''
-    # Tests search for "afplay" binary which is built in to macOS and not available in nixpkgs
-    mkdir $TMP/bin
-    ln -s ${coreutils}/bin/true $TMP/bin/afplay
-    PATH="$TMP/bin:$PATH" pytest
-  '' else if stdenv.isLinux then ''
-    dbus-run-session \
-      --config-file=${dbus}/share/dbus-1/session.conf \
-      pytest
-  '' else ''
-    pytest
-  '';
+  checkPhase =
+    if stdenv.hostPlatform.isDarwin then
+      ''
+        # Tests search for "afplay" binary which is built in to macOS and not available in nixpkgs
+        mkdir $TMP/bin
+        ln -s ${coreutils}/bin/true $TMP/bin/afplay
+        PATH="$TMP/bin:$PATH" pytest
+      ''
+    else if stdenv.hostPlatform.isLinux then
+      ''
+        dbus-run-session \
+          --config-file=${dbus}/share/dbus-1/session.conf \
+          pytest
+      ''
+    else
+      ''
+        pytest
+      '';
 
   # GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name
   # org.freedesktop.Notifications was not provided by any .service files
@@ -91,6 +88,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/ms7m/notify-py";
     changelog = "https://github.com/ms7m/notify-py/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ austinbutler dotlambda ];
+    maintainers = with maintainers; [
+      austinbutler
+      dotlambda
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/notify2/default.nix b/pkgs/development/python-modules/notify2/default.nix
index 1f087cb77a363..b2e5c33faaa46 100644
--- a/pkgs/development/python-modules/notify2/default.nix
+++ b/pkgs/development/python-modules/notify2/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
-, pygobject3
-, dbus-python
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+  pygobject3,
+  dbus-python,
 }:
 
 buildPythonPackage rec {
@@ -15,11 +16,12 @@ buildPythonPackage rec {
     sha256 = "0z8rrv9rsg1r2qgh2dxj3dfj5xnki98kgi3w839kqby4a26i1yik";
   };
 
-
   # Tests require Xorg and Dbus instance
   doCheck = false;
-  propagatedBuildInputs = [ pygobject3
-                            dbus-python ];
+  propagatedBuildInputs = [
+    pygobject3
+    dbus-python
+  ];
 
   meta = {
     description = "Pure Python interface to DBus notifications";
diff --git a/pkgs/development/python-modules/notion-client/default.nix b/pkgs/development/python-modules/notion-client/default.nix
index 1f9f5f1d65e97..6ec520c3ae470 100644
--- a/pkgs/development/python-modules/notion-client/default.nix
+++ b/pkgs/development/python-modules/notion-client/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, setuptools
-, anyio
-, httpx
-, pytest-asyncio
-, pytest-vcr
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools,
+  anyio,
+  httpx,
+  pytest-asyncio,
+  pytest-vcr,
 }:
 
 buildPythonPackage rec {
@@ -24,13 +25,9 @@ buildPythonPackage rec {
     hash = "sha256-IEWFrdqrawFbuwA8bUewanmBoGWsjHJ7ucgvHQEaMcA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    httpx
-  ];
+  propagatedBuildInputs = [ httpx ];
 
   # disable coverage options as they don't provide us value, and they break the default pytestCheckHook
   preCheck = ''
@@ -44,9 +41,7 @@ buildPythonPackage rec {
     pytest-vcr
   ];
 
-  pythonImportsCheck = [
-    "notion_client"
-  ];
+  pythonImportsCheck = [ "notion_client" ];
 
   meta = with lib; {
     description = "Python client for the official Notion API";
diff --git a/pkgs/development/python-modules/notmuch/default.nix b/pkgs/development/python-modules/notmuch/default.nix
index a67888564c6ba..47f23ed99fed2 100644
--- a/pkgs/development/python-modules/notmuch/default.nix
+++ b/pkgs/development/python-modules/notmuch/default.nix
@@ -1,8 +1,9 @@
-{ lib
+{
+  lib,
 
-, buildPythonPackage
-, notmuch
-, python
+  buildPythonPackage,
+  notmuch,
+  python,
 }:
 
 buildPythonPackage {
@@ -12,7 +13,10 @@ buildPythonPackage {
 
   format = "setuptools";
 
-  buildInputs = [ python notmuch ];
+  buildInputs = [
+    python
+    notmuch
+  ];
 
   postPatch = ''
     sed -i -e '/CDLL/s@"libnotmuch\.@"${notmuch}/lib/libnotmuch.@' \
@@ -24,10 +28,9 @@ buildPythonPackage {
   pythonImportsCheck = [ "notmuch" ];
 
   meta = with lib; {
-    description = "A Python wrapper around notmuch";
+    description = "Python wrapper around notmuch";
     homepage = "https://notmuchmail.org/";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/notmuch2/default.nix b/pkgs/development/python-modules/notmuch2/default.nix
index 08d0cd0929f62..e2bba858580e3 100644
--- a/pkgs/development/python-modules/notmuch2/default.nix
+++ b/pkgs/development/python-modules/notmuch2/default.nix
@@ -1,9 +1,9 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, notmuch
-, python
-, cffi
+{
+  lib,
+  buildPythonPackage,
+  notmuch,
+  python,
+  cffi,
 }:
 
 buildPythonPackage {
@@ -13,11 +13,10 @@ buildPythonPackage {
 
   sourceRoot = "notmuch-${notmuch.version}/bindings/python-cffi";
 
-  nativeBuildInputs = [
-    cffi
-  ];
+  nativeBuildInputs = [ cffi ];
   buildInputs = [
-    python notmuch
+    python
+    notmuch
   ];
 
   propagatedBuildInputs = [ cffi ];
diff --git a/pkgs/development/python-modules/notobuilder/default.nix b/pkgs/development/python-modules/notobuilder/default.nix
new file mode 100644
index 0000000000000..0dce59c8d16be
--- /dev/null
+++ b/pkgs/development/python-modules/notobuilder/default.nix
@@ -0,0 +1,71 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  unstableGitUpdater,
+  setuptools,
+  setuptools-scm,
+  fonttools,
+  ufomerge,
+  fontmake,
+  glyphslib,
+  ttfautohint-py,
+  ufo2ft,
+  gftools,
+  fontbakery,
+  diffenator2,
+  chevron,
+  sh,
+  ninja,
+}:
+
+buildPythonPackage {
+  pname = "notobuilder";
+  version = "0-unstable-2024-08-03";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "notofonts";
+    repo = "notobuilder";
+    rev = "d7bcfc8e5c5ee9b273e7b1eeb2dd6d619da68c33";
+    hash = "sha256-1tdHbJixd1s1grGh0enqXhp+u5TEic6/W88X/f8vagM=";
+  };
+
+  postPatch = ''
+    substituteInPlace Lib/notobuilder/__main__.py \
+      --replace-fail '"ninja"' '"${lib.getExe ninja}"'
+  '';
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    fonttools
+    ufomerge
+    fontmake
+    glyphslib
+    ttfautohint-py
+    ufo2ft
+    gftools
+    fontbakery
+    diffenator2
+    chevron
+    sh
+  ] ++ gftools.optional-dependencies.qa;
+
+  pythonImportsCheck = [
+    "notobuilder"
+    "notoqa"
+  ];
+
+  passthru.updateScript = unstableGitUpdater { };
+
+  meta = {
+    description = "Python module for building Noto fonts";
+    homepage = "https://github.com/notofonts/notobuilder";
+    license = lib.licenses.unfree;
+    maintainers = with lib.maintainers; [ jopejoe1 ];
+  };
+}
diff --git a/pkgs/development/python-modules/nototools/default.nix b/pkgs/development/python-modules/nototools/default.nix
index 4b20eba21b0a5..8dc075e2b47c6 100644
--- a/pkgs/development/python-modules/nototools/default.nix
+++ b/pkgs/development/python-modules/nototools/default.nix
@@ -1,13 +1,42 @@
-{ fetchFromGitHub, lib, buildPythonPackage, pythonOlder
-, afdko, appdirs, attrs, booleanoperations, brotlipy, click
-, defcon, fontmath, fontparts, fontpens, fonttools, lxml
-, mutatormath, pathspec, psautohint, pyclipper, pytz, regex, scour
-, toml, typed-ast, ufonormalizer, ufoprocessor, unicodedata2, zopfli
-, pillow, six, bash, setuptools-scm }:
+{
+  fetchFromGitHub,
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  afdko,
+  appdirs,
+  attrs,
+  booleanoperations,
+  brotlipy,
+  click,
+  defcon,
+  fontmath,
+  fontparts,
+  fontpens,
+  fonttools,
+  lxml,
+  mutatormath,
+  pathspec,
+  psautohint,
+  pyclipper,
+  pytz,
+  regex,
+  scour,
+  toml,
+  typed-ast,
+  ufonormalizer,
+  ufoprocessor,
+  unicodedata2,
+  zopfli,
+  pillow,
+  six,
+  bash,
+  setuptools-scm,
+}:
 
 buildPythonPackage rec {
   pname = "nototools";
-  version = "0.2.19";
+  version = "0.2.20";
 
   disabled = pythonOlder "3.6";
 
@@ -15,7 +44,7 @@ buildPythonPackage rec {
     owner = "googlefonts";
     repo = "nototools";
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-anAz+5PIhGhpFunjV2EVk2CrbXq2U0e+LINYUnS0IKU=";
+    sha256 = "sha256-id4UhyWOFHrtmBZHhnaY2jHDIK0s7rcGBpg4QsBTLKs=";
   };
 
   postPatch = ''
@@ -73,6 +102,6 @@ buildPythonPackage rec {
     description = "Noto fonts support tools and scripts plus web site generation";
     homepage = "https://github.com/googlefonts/nototools";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/notus-scanner/default.nix b/pkgs/development/python-modules/notus-scanner/default.nix
index 9d402201dcce9..85fd8c2ced932 100644
--- a/pkgs/development/python-modules/notus-scanner/default.nix
+++ b/pkgs/development/python-modules/notus-scanner/default.nix
@@ -8,14 +8,13 @@
   pytestCheckHook,
   python-gnupg,
   pythonOlder,
-  pythonRelaxDepsHook,
   sentry-sdk,
   tomli,
 }:
 
 buildPythonPackage rec {
   pname = "notus-scanner";
-  version = "22.6.3";
+  version = "22.6.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -24,17 +23,17 @@ buildPythonPackage rec {
     owner = "greenbone";
     repo = "notus-scanner";
     rev = "refs/tags/v${version}";
-    hash = "sha256-LYYof/s0OvXMbEH7jyFIymUVrWYUd/6lychIzfPlylc=";
+    hash = "sha256-DcFIypfdrz8pM7qAMVpof6xKWYp/bSRUswngxa5EQFk=";
   };
 
   pythonRelaxDeps = [
     "packaging"
+    "psutil"
     "python-gnupg"
   ];
 
   build-system = [ poetry-core ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   propagatedBuildInputs = [
     paho-mqtt
diff --git a/pkgs/development/python-modules/nox/default.nix b/pkgs/development/python-modules/nox/default.nix
index a006c0cbd2d6f..2f60f1199180a 100644
--- a/pkgs/development/python-modules/nox/default.nix
+++ b/pkgs/development/python-modules/nox/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, argcomplete
-, buildPythonPackage
-, colorlog
-, fetchFromGitHub
-, hatchling
-, importlib-metadata
-, jinja2
-, packaging
-, pytestCheckHook
-, pythonOlder
-, tox
-, typing-extensions
-, virtualenv
+{
+  lib,
+  argcomplete,
+  buildPythonPackage,
+  colorlog,
+  fetchFromGitHub,
+  hatchling,
+  importlib-metadata,
+  jinja2,
+  packaging,
+  pytestCheckHook,
+  pythonOlder,
+  tox,
+  typing-extensions,
+  virtualenv,
 }:
 
 buildPythonPackage rec {
@@ -28,19 +29,19 @@ buildPythonPackage rec {
     hash = "sha256-PagZR2IdS1gS/ukl4b0Al9sdEsFnFwP8oy0eOGKJHMs=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
-  propagatedBuildInputs = [
-    argcomplete
-    colorlog
-    packaging
-    virtualenv
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-    importlib-metadata
-  ];
+  propagatedBuildInputs =
+    [
+      argcomplete
+      colorlog
+      packaging
+      virtualenv
+    ]
+    ++ lib.optionals (pythonOlder "3.8") [
+      typing-extensions
+      importlib-metadata
+    ];
 
   nativeCheckInputs = [
     jinja2
@@ -48,9 +49,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "nox"
-  ];
+  pythonImportsCheck = [ "nox" ];
 
   disabledTests = [
     # our conda is not available on 3.11
@@ -67,6 +66,9 @@ buildPythonPackage rec {
     homepage = "https://nox.thea.codes/";
     changelog = "https://github.com/wntrblm/nox/blob/${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ doronbehar fab ];
+    maintainers = with maintainers; [
+      doronbehar
+      fab
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/nplusone/default.nix b/pkgs/development/python-modules/nplusone/default.nix
index ff0aa18a2d36f..76b22857f172f 100644
--- a/pkgs/development/python-modules/nplusone/default.nix
+++ b/pkgs/development/python-modules/nplusone/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, blinker
-, buildPythonPackage
-, django
-, fetchFromGitHub
-, flake8
-, flask-sqlalchemy
-, isPy27
-, mock
-, peewee
-, pytest-django
-, pytestCheckHook
-, six
-, sqlalchemy
-, webtest
+{
+  lib,
+  blinker,
+  buildPythonPackage,
+  django,
+  fetchFromGitHub,
+  flake8,
+  flask-sqlalchemy,
+  isPy27,
+  mock,
+  peewee,
+  pytest-django,
+  pytestCheckHook,
+  six,
+  sqlalchemy,
+  webtest,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/nptyping/default.nix b/pkgs/development/python-modules/nptyping/default.nix
index eeb12a570fbd0..ac53dc38d35b9 100644
--- a/pkgs/development/python-modules/nptyping/default.nix
+++ b/pkgs/development/python-modules/nptyping/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, beartype
-, invoke
-, numpy
-, pandas
-, feedparser
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  beartype,
+  invoke,
+  numpy,
+  pandas,
+  feedparser,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-hz4YrcvARCAA7TXapmneIwle/F4pzcIYLPSmiFHC0VQ=";
   };
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   nativeCheckInputs = [
     beartype
@@ -55,9 +54,7 @@ buildPythonPackage rec {
     "tests/test_beartype.py"
   ];
 
-  pythonImportsCheck = [
-    "nptyping"
-  ];
+  pythonImportsCheck = [ "nptyping" ];
 
   meta = with lib; {
     description = "Type hints for numpy";
diff --git a/pkgs/development/python-modules/npyscreen/default.nix b/pkgs/development/python-modules/npyscreen/default.nix
index 764e46dcadec1..f2a250b2cba9a 100644
--- a/pkgs/development/python-modules/npyscreen/default.nix
+++ b/pkgs/development/python-modules/npyscreen/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "npyscreen";
@@ -6,8 +10,8 @@ buildPythonPackage rec {
   format = "setuptools";
 
   src = fetchPypi {
-   inherit pname version;
-   sha256 = "0vhjwn0dan3zmffvh80dxb4x67jysvvf1imp6pk4dsfslpwy0bk2";
+    inherit pname version;
+    sha256 = "0vhjwn0dan3zmffvh80dxb4x67jysvvf1imp6pk4dsfslpwy0bk2";
   };
 
   # Tests are outdated
diff --git a/pkgs/development/python-modules/nsapi/default.nix b/pkgs/development/python-modules/nsapi/default.nix
index 4e3a7bc5bf3c5..63bd70151c894 100644
--- a/pkgs/development/python-modules/nsapi/default.nix
+++ b/pkgs/development/python-modules/nsapi/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, future
-, pythonOlder
-, pytz
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  future,
+  pythonOlder,
+  pytz,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/nsz/default.nix b/pkgs/development/python-modules/nsz/default.nix
index 7e8c3b4cdf8d8..64fb82e1ea069 100644
--- a/pkgs/development/python-modules/nsz/default.nix
+++ b/pkgs/development/python-modules/nsz/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pycryptodome
-, pythonOlder
-, enlighten
-, zstandard
-, withGUI ? true
-, kivy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pycryptodome,
+  pythonOlder,
+  enlighten,
+  zstandard,
+  withGUI ? true,
+  kivy,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/ntc-templates/default.nix b/pkgs/development/python-modules/ntc-templates/default.nix
index 04b2c8c17f1ad..4b0936f22948d 100644
--- a/pkgs/development/python-modules/ntc-templates/default.nix
+++ b/pkgs/development/python-modules/ntc-templates/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, poetry-core
-, textfsm
-, invoke
-, pytestCheckHook
-, ruamel-yaml
-, toml
-, yamllint
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  poetry-core,
+  textfsm,
+  invoke,
+  pytestCheckHook,
+  ruamel-yaml,
+  toml,
+  yamllint,
 }:
 
 buildPythonPackage rec {
   pname = "ntc-templates";
-  version = "4.4.0";
+  version = "6.0.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -22,16 +23,12 @@ buildPythonPackage rec {
     owner = "networktocode";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-8Lzh6ku2TUQFatqbOb5JIc/WkRPegx/gNnT53DErMuk=";
+    hash = "sha256-E8n4ZcCH8xxU5XXVxQUl8844RnRpnbHy/LnjHlz7Eeg=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    textfsm
-  ];
+  propagatedBuildInputs = [ textfsm ];
 
   nativeCheckInputs = [
     invoke
@@ -52,6 +49,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/networktocode/ntc-templates";
     changelog = "https://github.com/networktocode/ntc-templates/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ntplib/default.nix b/pkgs/development/python-modules/ntplib/default.nix
index 8c937e36f4141..9c388e0437d38 100644
--- a/pkgs/development/python-modules/ntplib/default.nix
+++ b/pkgs/development/python-modules/ntplib/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -21,5 +22,4 @@ buildPythonPackage rec {
     homepage = "http://code.google.com/p/ntplib/";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/nuclear/default.nix b/pkgs/development/python-modules/nuclear/default.nix
new file mode 100644
index 0000000000000..5daade948aa86
--- /dev/null
+++ b/pkgs/development/python-modules/nuclear/default.nix
@@ -0,0 +1,50 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  colorama,
+  mock,
+  pyyaml,
+  pydantic,
+  backoff,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "nuclear";
+  version = "2.3.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "igrek51";
+    repo = "nuclear";
+    rev = version;
+    hash = "sha256-UeU803SYMBLSWXjuxtWP2R2dBumRom+qsj2ljTiYFm0=";
+  };
+
+  build-system = [ setuptools ];
+  dependencies = [
+    colorama
+    pyyaml
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    mock
+    pydantic
+    backoff
+  ];
+  disabledTestPaths = [
+    # Disabled because test tries to install bash in a non-NixOS way
+    "tests/autocomplete/test_bash_install.py"
+  ];
+  pythonImportsCheck = [ "nuclear" ];
+
+  meta = with lib; {
+    homepage = "https://igrek51.github.io/nuclear/";
+    description = "Binding glue for CLI Python applications";
+    license = licenses.mit;
+    maintainers = with maintainers; [ parras ];
+  };
+}
diff --git a/pkgs/development/python-modules/nuheat/default.nix b/pkgs/development/python-modules/nuheat/default.nix
index 97607ceab3dcf..b05f151f797ad 100644
--- a/pkgs/development/python-modules/nuheat/default.nix
+++ b/pkgs/development/python-modules/nuheat/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, parameterized
-, pytestCheckHook
-, pythonOlder
-, requests
-, responses
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  parameterized,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  responses,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-EsPuwILfKc1Bpvu0Qos7yooC3dBaqf46lWhiSZdu3sc=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     mock
@@ -34,9 +33,7 @@ buildPythonPackage rec {
     responses
   ];
 
-  pythonImportsCheck = [
-    "nuheat"
-  ];
+  pythonImportsCheck = [ "nuheat" ];
 
   meta = with lib; {
     description = "Library to interact with NuHeat Signature and Mapei Mapeheat radiant floor thermostats";
diff --git a/pkgs/development/python-modules/nuitka/darwin-lto.patch b/pkgs/development/python-modules/nuitka/darwin-lto.patch
deleted file mode 100644
index bd3a659054980..0000000000000
--- a/pkgs/development/python-modules/nuitka/darwin-lto.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff --git a/nuitka/build/SconsCompilerSettings.py b/nuitka/build/SconsCompilerSettings.py
-index 319b72c4e..89d40f2a2 100644
---- a/nuitka/build/SconsCompilerSettings.py
-+++ b/nuitka/build/SconsCompilerSettings.py
-@@ -173,8 +173,8 @@ def _enableLtoSettings(
-         lto_mode = False
-         reason = "known to be not supported (CondaCC)"
-     elif isMacOS() and env.gcc_mode and env.clang_mode:
--        lto_mode = True
--        reason = "known to be supported (macOS clang)"
-+        lto_mode = False
-+        reason = "known to not be supported (macOS nix clang)"
-     elif env.mingw_mode and env.clang_mode:
-         lto_mode = False
-         reason = "known to not be supported (new MinGW64 Clang)"
diff --git a/pkgs/development/python-modules/nuitka/default.nix b/pkgs/development/python-modules/nuitka/default.nix
index 936084c98399f..45e7fa77eb03e 100644
--- a/pkgs/development/python-modules/nuitka/default.nix
+++ b/pkgs/development/python-modules/nuitka/default.nix
@@ -1,32 +1,31 @@
-{ lib
-, buildPythonPackage
-, ccache
-, fetchFromGitHub
-, isPyPy
-, ordered-set
-, python3
-, setuptools
-, zstandard
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPyPy,
+  ordered-set,
+  python,
+  setuptools,
+  zstandard,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "nuitka";
-  version = "2.1.4";
+  version = "2.2.3";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "Nuitka";
     repo = "Nuitka";
     rev = version;
-    hash = "sha256-bV5zTYwhR/3dTM1Ij+aC6TbcPODZ5buwQi7xN8axZi0=";
+    hash = "sha256-nKdCMgA92v9VsSgfktXDbSh3DyKsGlcTjpn0Y7u4rxU=";
   };
 
-  # default lto off for darwin
-  patches = [ ./darwin-lto.patch ];
-
-  build-system = [ setuptools wheel ];
-  nativeCheckInputs = [ ccache  ];
+  build-system = [
+    setuptools
+    wheel
+  ];
 
   dependencies = [
     ordered-set
@@ -36,7 +35,7 @@ buildPythonPackage rec {
   checkPhase = ''
     runHook preCheck
 
-    ${python3.interpreter} tests/basics/run_all.py search
+    ${python.interpreter} tests/basics/run_all.py search
 
     runHook postCheck
   '';
@@ -51,5 +50,4 @@ buildPythonPackage rec {
     license = licenses.asl20;
     homepage = "https://nuitka.net/";
   };
-
 }
diff --git a/pkgs/development/python-modules/nulltype/default.nix b/pkgs/development/python-modules/nulltype/default.nix
index f04f9df780dca..0d735b695eaf6 100644
--- a/pkgs/development/python-modules/nulltype/default.nix
+++ b/pkgs/development/python-modules/nulltype/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -15,13 +16,9 @@ buildPythonPackage rec {
     sha256 = "0wpjbsmm0c9ifg9y6cnfz49qq9pa5f99nnqp6wdlv42ymfr3rak4";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "nulltype"
-  ];
+  pythonImportsCheck = [ "nulltype" ];
 
   meta = with lib; {
     description = "Python library to handle Null values and sentinels like (but not) None, False and True";
diff --git a/pkgs/development/python-modules/num2words/default.nix b/pkgs/development/python-modules/num2words/default.nix
index 0a492b32f310a..cde2beff63bd9 100644
--- a/pkgs/development/python-modules/num2words/default.nix
+++ b/pkgs/development/python-modules/num2words/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
-, docopt
-, delegator-py
-, pytest
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+  docopt,
+  delegator-py,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -18,7 +19,10 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ docopt ];
 
-  nativeCheckInputs = [ delegator-py pytest ];
+  nativeCheckInputs = [
+    delegator-py
+    pytest
+  ];
 
   checkPhase = ''
     pytest -k 'not cli_with_lang'
@@ -29,9 +33,8 @@ buildPythonPackage rec {
     mainProgram = "num2words";
     homepage = "https://github.com/savoirfairelinux/num2words";
     license = licenses.lgpl21;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
 
-    longDescription =
-    "num2words is a library that converts numbers like 42 to words like forty-two. It supports multiple languages (see the list below for full list of languages) and can even generate ordinal numbers like forty-second";
+    longDescription = "num2words is a library that converts numbers like 42 to words like forty-two. It supports multiple languages (see the list below for full list of languages) and can even generate ordinal numbers like forty-second";
   };
 }
diff --git a/pkgs/development/python-modules/numba-scipy/default.nix b/pkgs/development/python-modules/numba-scipy/default.nix
index 22e3db22f3023..05c07632a9791 100644
--- a/pkgs/development/python-modules/numba-scipy/default.nix
+++ b/pkgs/development/python-modules/numba-scipy/default.nix
@@ -1,12 +1,11 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, scipy
-, numba
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  scipy,
+  numba,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,19 +27,15 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
-    pythonRelaxDepsHook
   ];
   pythonRelaxDeps = [
     "scipy"
     "numba"
   ];
 
-  pythonImportsCheck = [
-    "numba_scipy"
-  ];
+  pythonImportsCheck = [ "numba_scipy" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
     description = "Extends Numba to make it aware of SciPy";
     homepage = "https://github.com/numba/numba-scipy";
     changelog = "https://github.com/numba/numba-scipy/blob/master/CHANGE_LOG";
diff --git a/pkgs/development/python-modules/numba/default.nix b/pkgs/development/python-modules/numba/default.nix
index bc199e2c6edc7..18bd264c5d76f 100644
--- a/pkgs/development/python-modules/numba/default.nix
+++ b/pkgs/development/python-modules/numba/default.nix
@@ -1,38 +1,42 @@
-{ lib
-, stdenv
-, pythonAtLeast
-, pythonOlder
-, fetchFromGitHub
-, python
-, buildPythonPackage
-, setuptools
-, numpy
-, llvmlite
-, libcxx
-, importlib-metadata
-, substituteAll
-, runCommand
-, symlinkJoin
-, writers
-, numba
-
-, config
-
-# CUDA-only dependencies:
-, addDriverRunpath
-, autoAddDriverRunpath
-, cudaPackages
-
-# CUDA flags:
-, cudaSupport ? config.cudaSupport
+{
+  lib,
+  stdenv,
+  pythonAtLeast,
+  pythonOlder,
+  fetchFromGitHub,
+  python,
+  buildPythonPackage,
+  setuptools,
+  numpy,
+  numpy_2,
+  llvmlite,
+  libcxx,
+  importlib-metadata,
+  fetchpatch,
+  substituteAll,
+  runCommand,
+  writers,
+  numba,
+  pytestCheckHook,
+
+  config,
+
+  # CUDA-only dependencies:
+  addDriverRunpath,
+  autoAddDriverRunpath,
+  cudaPackages,
+
+  # CUDA flags:
+  cudaSupport ? config.cudaSupport,
+  testsWithoutSandbox ? false,
+  doFullCheck ? false,
 }:
 
 let
   cudatoolkit = cudaPackages.cuda_nvcc;
-in buildPythonPackage rec {
-  # Using an untagged version, with numpy 1.25 support, when it's released
-  # also drop the versioneer patch in postPatch
-  version = "0.59.1";
+in
+buildPythonPackage rec {
+  version = "0.61.0dev0";
   pname = "numba";
   pyproject = true;
 
@@ -53,8 +57,18 @@ in buildPythonPackage rec {
     # that upstream relies on those strings to be valid, that's why we don't
     # use `forceFetchGit = true;`.` If in the future we'll observe the hash
     # changes too often, we can always use forceFetchGit, and inject the
-    # relevant strings ourselves, using `sed` commands, in extraPostFetch.
-    hash = "sha256-4udpgLLHbHNtxPiYVkj+gxAjTWV3ClZOv98Y313/qbc=";
+    # relevant strings ourselves, using `substituteInPlace`, in postFetch.
+    hash = "sha256-KF9YQ6/FIfUQTJCAMgfIqnb/D8mdMbCC/tJvfYlSkgI=";
+    # TEMPORARY: The way upstream knows it's source version is explained above,
+    # and without this upstream sets the version in ${python.sitePackages} as
+    # 0.61.0dev0, which causes dependent packages fail to find a valid
+    # version of numba.
+    postFetch = ''
+      substituteInPlace $out/numba/_version.py \
+        --replace-fail \
+          'git_refnames = " (tag: ${version})"' \
+          'git_refnames = " (tag: 0.61.0, release0.61)"'
+    '';
   };
 
   postPatch = ''
@@ -64,53 +78,68 @@ in buildPythonPackage rec {
         "dldir = [ '${addDriverRunpath.driverLink}/lib', "
   '';
 
-  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-I${lib.getDev libcxx}/include/c++/v1";
+  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin "-I${lib.getDev libcxx}/include/c++/v1";
 
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     numpy
-  ] ++ lib.optionals cudaSupport [
+  ];
+
+  nativeBuildInputs = lib.optionals cudaSupport [
     autoAddDriverRunpath
     cudaPackages.cuda_nvcc
   ];
 
-  buildInputs = lib.optionals cudaSupport [
-    cudaPackages.cuda_cudart
-  ];
+  buildInputs = lib.optionals cudaSupport [ cudaPackages.cuda_cudart ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
     llvmlite
     setuptools
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    importlib-metadata
-  ];
-
-  patches = lib.optionals cudaSupport [
-    (substituteAll {
-      src = ./cuda_path.patch;
-      cuda_toolkit_path = cudatoolkit;
-      cuda_toolkit_lib_path = lib.getLib cudatoolkit;
-    })
+  ] ++ lib.optionals (pythonOlder "3.9") [ importlib-metadata ];
+
+  patches =
+    [
+      (fetchpatch {
+        # TODO Remove at the next release of numba (>0.60.0)
+        # https://github.com/numba/numba/pull/9683
+        name = "fix-numpy-2-0-1-compat";
+        url = "https://github.com/numba/numba/commit/afb3d168efa713c235d1bb4586722ad6e5dbb0c1.patch";
+        hash = "sha256-WB+XKxsF2r5ZdgW2Yrg9HutpgufBfk48i+5YLQnKLFY=";
+      })
+    ]
+    ++ lib.optionals cudaSupport [
+      (substituteAll {
+        src = ./cuda_path.patch;
+        cuda_toolkit_path = cudatoolkit;
+        cuda_toolkit_lib_path = lib.getLib cudatoolkit;
+      })
+    ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
   ];
 
-  # run a smoke test in a temporary directory so that
-  # a) Python picks up the installed library in $out instead of the build files
-  # b) we have somewhere to put $HOME so some caching tests work
-  # c) it doesn't take 6 CPU hours for the full suite
-  checkPhase = ''
-    runHook preCheck
-
-    pushd $(mktemp -d)
-    HOME=. ${python.interpreter} -m numba.runtests -m $NIX_BUILD_CORES numba.tests.test_usecases
-    popd
-
-    runHook postCheck
+  preCheck = ''
+    export HOME="$(mktemp -d)"
+    # https://github.com/NixOS/nixpkgs/issues/255262
+    cd $out
   '';
 
-  pythonImportsCheck = [
-    "numba"
+  pytestFlagsArray = lib.optionals (!doFullCheck) [
+    # These are the most basic tests. Running all tests is too expensive, and
+    # some of them fail (also differently on different platforms), so it will
+    # be too hard to maintain such a `disabledTests` list.
+    "${python.sitePackages}/numba/tests/test_usecases.py"
+  ];
+
+  disabledTestPaths = lib.optionals (!testsWithoutSandbox) [
+    # See NOTE near passthru.tests.withoutSandbox
+    "${python.sitePackages}/numba/cuda/tests"
   ];
 
+  pythonImportsCheck = [ "numba" ];
+
   passthru.testers.cuda-detect =
     writers.writePython3Bin "numba-cuda-detect"
       { libraries = [ (numba.override { cudaSupport = true; }) ]; }
@@ -120,21 +149,24 @@ in buildPythonPackage rec {
       '';
   passthru.tests = {
     # CONTRIBUTOR NOTE: numba also contains CUDA tests, though these cannot be run in
-    # this sandbox environment. Consider running similar commands to those below outside the
-    # sandbox manually if you have the appropriate hardware; support will be detected
-    # and the corresponding tests enabled automatically.
-    # Also, the full suite currently does not complete on anything but x86_64-linux.
-    fullSuite = runCommand "${pname}-test" {} ''
-      pushd $(mktemp -d)
-      # pip and python in $PATH is needed for the test suite to pass fully
-      PATH=${python.withPackages (p: [ p.numba p.pip ])}/bin:$PATH
-      HOME=$PWD python -m numba.runtests -m $NIX_BUILD_CORES
-      popd
-      touch $out # stop Nix from complaining no output was generated and failing the build
-    '';
+    # this sandbox environment. Consider building the derivation below with
+    # --no-sandbox to get a view of how many tests succeed outside the sandbox.
+    withoutSandbox = numba.override {
+      doFullCheck = true;
+      cudaSupport = true;
+      testsWithoutSandbox = true;
+    };
+    withSandbox = numba.override {
+      cudaSupport = false;
+      doFullCheck = true;
+      testsWithoutSandbox = false;
+    };
+    numpy_2 = numba.override {
+      numpy = numpy_2;
+    };
   };
 
-  meta =  with lib; {
+  meta = with lib; {
     description = "Compiling Python code using LLVM";
     homepage = "https://numba.pydata.org/";
     license = licenses.bsd2;
diff --git a/pkgs/development/python-modules/numcodecs/default.nix b/pkgs/development/python-modules/numcodecs/default.nix
index a0a452a0ecc22..23f49c77ad438 100644
--- a/pkgs/development/python-modules/numcodecs/default.nix
+++ b/pkgs/development/python-modules/numcodecs/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, setuptools
-, setuptools-scm
-, cython
-, numpy
-, msgpack
-, py-cpuinfo
-, pytestCheckHook
-, python
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchpatch,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  cython,
+  numpy,
+  msgpack,
+  py-cpuinfo,
+  pytestCheckHook,
+  python,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -42,27 +43,27 @@ buildPythonPackage rec {
     py-cpuinfo
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   passthru.optional-dependencies = {
     msgpack = [ msgpack ];
     # zfpy = [ zfpy ];
   };
 
-  preBuild = if (stdenv.hostPlatform.isx86 && !stdenv.hostPlatform.avx2Support) then ''
-    export DISABLE_NUMCODECS_AVX2=
-  '' else null;
+  preBuild =
+    if (stdenv.hostPlatform.isx86 && !stdenv.hostPlatform.avx2Support) then
+      ''
+        export DISABLE_NUMCODECS_AVX2=
+      ''
+    else
+      null;
 
   nativeCheckInputs = [
     pytestCheckHook
     msgpack
   ];
 
-  pytestFlagsArray = [
-    "$out/${python.sitePackages}/numcodecs"
-  ];
+  pytestFlagsArray = [ "$out/${python.sitePackages}/numcodecs" ];
 
   disabledTests = [
     "test_backwards_compatibility"
@@ -76,7 +77,7 @@ buildPythonPackage rec {
     "test_non_numpy_inputs"
   ];
 
-  meta = with lib;{
+  meta = with lib; {
     homepage = "https://github.com/zarr-developers/numcodecs";
     license = licenses.mit;
     description = "Buffer compression and transformation codecs for use in data storage and communication applications";
diff --git a/pkgs/development/python-modules/numdifftools/default.nix b/pkgs/development/python-modules/numdifftools/default.nix
index fced2ae4ceada..29dee4bbbaa4b 100644
--- a/pkgs/development/python-modules/numdifftools/default.nix
+++ b/pkgs/development/python-modules/numdifftools/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, pytestCheckHook
-, pythonOlder
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  pythonOlder,
+  scipy,
 }:
 
 buildPythonPackage rec {
@@ -38,9 +38,7 @@ buildPythonPackage rec {
       --replace "statsmodels>=0.6" ""
   '';
 
-  pythonImportsCheck = [
-    "numdifftools"
-  ];
+  pythonImportsCheck = [ "numdifftools" ];
 
   meta = with lib; {
     description = "Library to solve automatic numerical differentiation problems in one or more variables";
diff --git a/pkgs/development/python-modules/numericalunits/default.nix b/pkgs/development/python-modules/numericalunits/default.nix
index cc04bea1e3a14..922e26d3057be 100644
--- a/pkgs/development/python-modules/numericalunits/default.nix
+++ b/pkgs/development/python-modules/numericalunits/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -18,7 +19,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "http://pypi.python.org/pypi/numericalunits";
-    description = "A package that lets you define quantities with unit";
+    description = "Package that lets you define quantities with unit";
     license = licenses.mit;
     maintainers = [ ];
   };
diff --git a/pkgs/development/python-modules/numexpr/default.nix b/pkgs/development/python-modules/numexpr/default.nix
index 4de1e4a7de05a..f54dcb03b526b 100644
--- a/pkgs/development/python-modules/numexpr/default.nix
+++ b/pkgs/development/python-modules/numexpr/default.nix
@@ -1,53 +1,68 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, packaging
-, python
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  pytestCheckHook,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "numexpr";
-  version = "2.9.0";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.6";
+  version = "2.10.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-8h0S9sQyzjSQieuVNCur9mKa67P93xh6RJLTqtqtqvA=";
+    hash = "sha256-yJ6TB1JjnfBAU5FgMm2PmahBWbvqQZQ6uOlgWR7arvA=";
   };
 
-  nativeBuildInputs = [
-    numpy
-  ];
+  # patch for compatibility with numpy < 2.0
+  # see more details, https://numpy.org/devdocs/numpy_2_0_migration_guide.html#c-api-changes
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "numpy>=2.0.0rc1" "numpy"
+    sed -i "1i#define PyDataType_SET_ELSIZE(descr, elsize)" numexpr/interpreter.cpp
+    sed -i "1i#define PyDataType_ELSIZE(descr) ((descr)->elsize)" numexpr/interpreter.cpp
+  '';
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+    wheel
     numpy
-    packaging
   ];
 
+  dependencies = [ numpy ];
+
   preBuild = ''
     # Remove existing site.cfg, use the one we built for numpy
     ln -s ${numpy.cfg} site.cfg
   '';
 
-  checkPhase = ''
-    runtest="$(pwd)/numexpr/tests/test_numexpr.py"
-    pushd "$out"
-    ${python.interpreter} "$runtest"
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  preCheck = ''
+    pushd $out
+  '';
+
+  postCheck = ''
     popd
   '';
 
-  pythonImportsCheck = [
-    "numexpr"
+  disabledTests = [
+    # fails on computers with more than 8 threads
+    # https://github.com/pydata/numexpr/issues/479
+    "test_numexpr_max_threads_empty_string"
+    "test_omp_num_threads_empty_string"
   ];
 
+  pythonImportsCheck = [ "numexpr" ];
+
   meta = with lib; {
     description = "Fast numerical array expression evaluator for NumPy";
     homepage = "https://github.com/pydata/numexpr";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/numpy-groupies/default.nix b/pkgs/development/python-modules/numpy-groupies/default.nix
new file mode 100644
index 0000000000000..52feff514904d
--- /dev/null
+++ b/pkgs/development/python-modules/numpy-groupies/default.nix
@@ -0,0 +1,47 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+  setuptools-scm,
+  numpy,
+  numba,
+  pandas,
+}:
+
+buildPythonPackage rec {
+  pname = "numpy-groupies";
+  version = "0.11.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "ml31415";
+    repo = "numpy-groupies";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-Eu+5SR28jIasKe1p7rvbq2yo3PGZRQWWdG3A5vGhnyM=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [ numpy ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    numba
+    pandas
+  ];
+
+  pythonImportsCheck = [ "numpy_groupies" ];
+
+  meta = {
+    homepage = "https://github.com/ml31415/numpy-groupies";
+    changelog = "https://github.com/ml31415/numpy-groupies/releases/tag/v${version}";
+    description = "Optimised tools for group-indexing operations: aggregated sum and more";
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ berquist ];
+  };
+}
diff --git a/pkgs/development/python-modules/numpy-stl/default.nix b/pkgs/development/python-modules/numpy-stl/default.nix
index 056d893ba75f1..fd1911a818756 100644
--- a/pkgs/development/python-modules/numpy-stl/default.nix
+++ b/pkgs/development/python-modules/numpy-stl/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, cython
-, enum34
-, fetchPypi
-, nine
-, numpy
-, pytestCheckHook
-, python-utils
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  enum34,
+  fetchPypi,
+  nine,
+  numpy,
+  pytestCheckHook,
+  python-utils,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     python-utils
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "stl" ];
 
@@ -37,6 +36,6 @@ buildPythonPackage rec {
     description = "Library to make reading, writing and modifying both binary and ascii STL files easy";
     homepage = "https://github.com/WoLpH/numpy-stl/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/numpy/default.nix b/pkgs/development/python-modules/numpy/1.nix
index 4299c6d4dc63e..2bd7a44903fa7 100644
--- a/pkgs/development/python-modules/numpy/default.nix
+++ b/pkgs/development/python-modules/numpy/1.nix
@@ -1,30 +1,35 @@
-{ lib
-, stdenv
-, fetchPypi
-, python
-, pythonAtLeast
-, pythonOlder
-, buildPythonPackage
-, writeTextFile
-
-# build-system
-, cython
-, gfortran
-, meson-python
-, mesonEmulatorHook
-, pkg-config
-, xcbuild
-
-# native dependencies
-, blas
-, lapack
-
-# tests
-, hypothesis
-, pytest-xdist
-, pytestCheckHook
-, setuptools
-, typing-extensions
+{
+  lib,
+  stdenv,
+  fetchPypi,
+  python,
+  numpy_1,
+  pythonAtLeast,
+  pythonOlder,
+  buildPythonPackage,
+  writeTextFile,
+
+  # build-system
+  cython,
+  gfortran,
+  meson-python,
+  mesonEmulatorHook,
+  pkg-config,
+  xcbuild,
+
+  # native dependencies
+  blas,
+  lapack,
+
+  # Reverse dependency
+  sage,
+
+  # tests
+  hypothesis,
+  pytest-xdist,
+  pytestCheckHook,
+  setuptools,
+  typing-extensions,
 }:
 
 assert (!blas.isILP64) && (!lapack.isILP64);
@@ -32,7 +37,7 @@ assert (!blas.isILP64) && (!lapack.isILP64);
 let
   cfg = writeTextFile {
     name = "site.cfg";
-    text = lib.generators.toINI {} {
+    text = lib.generators.toINI { } {
       ${blas.implementation} = {
         include_dirs = "${lib.getDev blas}/include:${lib.getDev lapack}/include";
         library_dirs = "${blas}/lib:${lapack}/lib";
@@ -51,7 +56,8 @@ let
       };
     };
   };
-in buildPythonPackage rec {
+in
+buildPythonPackage rec {
   pname = "numpy";
   version = "1.26.4";
   pyproject = true;
@@ -63,18 +69,17 @@ in buildPythonPackage rec {
     hash = "sha256-KgKrqe0S5KxOs+qUIcQgMBoMZGDZgw10qd+H76SRIBA=";
   };
 
-  patches = [
-    # Disable `numpy/core/tests/test_umath.py::TestComplexFunctions::test_loss_of_precision[complex256]`
-    # on x86_64-darwin because it fails under Rosetta 2 due to issues with trig functions and
-    # 80-bit long double complex numbers.
-    ./disable-failing-long-double-test-Rosetta-2.patch
-  ]
-  # We patch cpython/distutils to fix https://bugs.python.org/issue1222585
-  # Patching of numpy.distutils is needed to prevent it from undoing the
-  # patch to distutils.
-  ++ lib.optionals python.hasDistutilsCxxPatch [
-    ./numpy-distutils-C++.patch
-  ];
+  patches =
+    [
+      # Disable `numpy/core/tests/test_umath.py::TestComplexFunctions::test_loss_of_precision[complex256]`
+      # on x86_64-darwin because it fails under Rosetta 2 due to issues with trig functions and
+      # 80-bit long double complex numbers.
+      ./disable-failing-long-double-test-Rosetta-2.patch
+    ]
+    # We patch cpython/distutils to fix https://bugs.python.org/issue1222585
+    # Patching of numpy.distutils is needed to prevent it from undoing the
+    # patch to distutils.
+    ++ lib.optionals python.hasDistutilsCxxPatch [ ./numpy-distutils-C++.patch ];
 
   postPatch = ''
     # fails with multiple errors because we are not using the pinned setuptools version
@@ -88,18 +93,20 @@ in buildPythonPackage rec {
     # remove needless reference to full Python path stored in built wheel
     substituteInPlace numpy/meson.build \
       --replace 'py.full_path()' "'python'"
+
+    substituteInPlace pyproject.toml \
+      --replace-fail "meson-python>=0.15.0,<0.16.0" "meson-python"
   '';
 
-  nativeBuildInputs = [
-    cython
-    gfortran
-    meson-python
-    pkg-config
-  ] ++ lib.optionals (stdenv.isDarwin) [
-    xcbuild.xcrun
-  ] ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
-    mesonEmulatorHook
-  ];
+  nativeBuildInputs =
+    [
+      cython
+      gfortran
+      meson-python
+      pkg-config
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin) [ xcbuild.xcrun ]
+    ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ mesonEmulatorHook ];
 
   buildInputs = [
     blas
@@ -142,38 +149,47 @@ in buildPythonPackage rec {
 
   # https://github.com/numpy/numpy/blob/a277f6210739c11028f281b8495faf7da298dbef/numpy/_pytesttester.py#L180
   pytestFlagsArray = [
-    "-m" "not\\ slow" # fast test suite
+    "-m"
+    "not\\ slow" # fast test suite
   ];
 
   # https://github.com/numpy/numpy/issues/24548
-  disabledTests = lib.optionals stdenv.isi686 [
-    "test_new_policy" # AssertionError: assert False
-    "test_identityless_reduction_huge_array" # ValueError: Maximum allowed dimension exceeded
-    "test_float_remainder_overflow" # AssertionError: FloatingPointError not raised by divmod
-    "test_int" # AssertionError: selectedintkind(19): expected 16 but got -1
-  ] ++ lib.optionals stdenv.isAarch32 [
-    "test_impossible_feature_enable" # AssertionError: Failed to generate error
-    "test_features" # AssertionError: Failure Detection
-    "test_new_policy" # AssertionError: assert False
-    "test_identityless_reduction_huge_array" # ValueError: Maximum allowed dimension exceeded
-    "test_unary_spurious_fpexception"#  AssertionError: Got warnings: [<warnings.WarningMessage object at 0xd1197430>]
-    "test_int" # AssertionError: selectedintkind(19): expected 16 but got -1
-    "test_real" # AssertionError: selectedrealkind(16): expected 10 but got -1
-    "test_quad_precision" # AssertionError: selectedrealkind(32): expected 16 but got -1
-    "test_big_arrays" # ValueError: array is too big; `arr.size * arr.dtype.itemsize` is larger tha...
-    "test_multinomial_pvals_float32" # Failed: DID NOT RAISE <class 'ValueError'>
-  ] ++ lib.optionals stdenv.isAarch64 [
-    "test_big_arrays" # OOM on a 16G machine
-  ] ++ lib.optionals (stdenv.isDarwin && stdenv.isx86_64) [
-    # can fail on virtualized machines confused over their cpu identity
-    "test_dispatcher"
-  ];
+  disabledTests =
+    lib.optionals stdenv.hostPlatform.isi686 [
+      "test_new_policy" # AssertionError: assert False
+      "test_identityless_reduction_huge_array" # ValueError: Maximum allowed dimension exceeded
+      "test_float_remainder_overflow" # AssertionError: FloatingPointError not raised by divmod
+      "test_int" # AssertionError: selectedintkind(19): expected 16 but got -1
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isAarch32 [
+      "test_impossible_feature_enable" # AssertionError: Failed to generate error
+      "test_features" # AssertionError: Failure Detection
+      "test_new_policy" # AssertionError: assert False
+      "test_identityless_reduction_huge_array" # ValueError: Maximum allowed dimension exceeded
+      "test_unary_spurious_fpexception" # AssertionError: Got warnings: [<warnings.WarningMessage object at 0xd1197430>]
+      "test_int" # AssertionError: selectedintkind(19): expected 16 but got -1
+      "test_real" # AssertionError: selectedrealkind(16): expected 10 but got -1
+      "test_quad_precision" # AssertionError: selectedrealkind(32): expected 16 but got -1
+      "test_big_arrays" # ValueError: array is too big; `arr.size * arr.dtype.itemsize` is larger tha...
+      "test_multinomial_pvals_float32" # Failed: DID NOT RAISE <class 'ValueError'>
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isAarch64 [
+      "test_big_arrays" # OOM on a 16G machine
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) [
+      # can fail on virtualized machines confused over their cpu identity
+      "test_dispatcher"
+    ];
 
   passthru = {
     # just for backwards compatibility
     blas = blas.provider;
     blasImplementation = blas.implementation;
     inherit cfg;
+    coreIncludeDir = "${numpy_1}/${python.sitePackages}/numpy/core/include";
+    tests = {
+      inherit sage;
+    };
   };
 
   # Disable test
diff --git a/pkgs/development/python-modules/numpy/2.nix b/pkgs/development/python-modules/numpy/2.nix
new file mode 100644
index 0000000000000..e8f6d36b73d88
--- /dev/null
+++ b/pkgs/development/python-modules/numpy/2.nix
@@ -0,0 +1,183 @@
+{
+  lib,
+  stdenv,
+  fetchPypi,
+  python,
+  numpy_2,
+  pythonAtLeast,
+  pythonOlder,
+  buildPythonPackage,
+  writeTextFile,
+
+  # build-system
+  cython,
+  gfortran,
+  meson-python,
+  mesonEmulatorHook,
+  pkg-config,
+  xcbuild,
+
+  # native dependencies
+  blas,
+  lapack,
+
+  # Reverse dependency
+  sage,
+
+  # tests
+  hypothesis,
+  pytest-xdist,
+  pytestCheckHook,
+  setuptools,
+  typing-extensions,
+}:
+
+assert (!blas.isILP64) && (!lapack.isILP64);
+
+let
+  cfg = writeTextFile {
+    name = "site.cfg";
+    text = lib.generators.toINI { } {
+      ${blas.implementation} = {
+        include_dirs = "${lib.getDev blas}/include:${lib.getDev lapack}/include";
+        library_dirs = "${blas}/lib:${lapack}/lib";
+        runtime_library_dirs = "${blas}/lib:${lapack}/lib";
+        libraries = "lapack,lapacke,blas,cblas";
+      };
+      lapack = {
+        include_dirs = "${lib.getDev lapack}/include";
+        library_dirs = "${lapack}/lib";
+        runtime_library_dirs = "${lapack}/lib";
+      };
+      blas = {
+        include_dirs = "${lib.getDev blas}/include";
+        library_dirs = "${blas}/lib";
+        runtime_library_dirs = "${blas}/lib";
+      };
+    };
+  };
+in
+buildPythonPackage rec {
+  pname = "numpy";
+  version = "2.1.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "tar.gz";
+    hash = "sha256-0M99VbEFE4eAdAWziY76+oYpl7TLqKpdvmV755Sv6v0=";
+  };
+
+  patches = lib.optionals python.hasDistutilsCxxPatch [
+    # We patch cpython/distutils to fix https://bugs.python.org/issue1222585
+    # Patching of numpy.distutils is needed to prevent it from undoing the
+    # patch to distutils.
+    ./numpy-distutils-C++.patch
+  ];
+
+  postPatch = ''
+    # remove needless reference to full Python path stored in built wheel
+    substituteInPlace numpy/meson.build \
+      --replace-fail 'py.full_path()' "'python'"
+  '';
+
+  build-system =
+    [
+      cython
+      gfortran
+      meson-python
+      pkg-config
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [ xcbuild.xcrun ]
+    ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ mesonEmulatorHook ];
+
+  # we default openblas to build with 64 threads
+  # if a machine has more than 64 threads, it will segfault
+  # see https://github.com/OpenMathLib/OpenBLAS/issues/2993
+  preConfigure = ''
+    sed -i 's/-faltivec//' numpy/distutils/system_info.py
+    export OMP_NUM_THREADS=$((NIX_BUILD_CORES > 64 ? 64 : NIX_BUILD_CORES))
+  '';
+
+  # HACK: copy mesonEmulatorHook's flags to the variable used by meson-python
+  postConfigure = ''
+    mesonFlags="$mesonFlags ''${mesonFlagsArray[@]}"
+  '';
+
+  buildInputs = [
+    blas
+    lapack
+  ];
+
+  preBuild = ''
+    ln -s ${cfg} site.cfg
+  '';
+
+  enableParallelBuilding = true;
+
+  nativeCheckInputs = [
+    hypothesis
+    pytestCheckHook
+    pytest-xdist
+    setuptools
+    typing-extensions
+  ];
+
+  preCheck = ''
+    pushd $out
+  '';
+
+  postCheck = ''
+    popd
+  '';
+
+  # https://github.com/numpy/numpy/blob/a277f6210739c11028f281b8495faf7da298dbef/numpy/_pytesttester.py#L180
+  pytestFlagsArray = [
+    "-m"
+    "not\\ slow" # fast test suite
+  ];
+
+  disabledTests =
+    lib.optionals (pythonAtLeast "3.13") [
+      # https://github.com/numpy/numpy/issues/26713
+      "test_iter_refcount"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isAarch32 [
+      # https://github.com/numpy/numpy/issues/24548
+      "test_impossible_feature_enable" # AssertionError: Failed to generate error
+      "test_features" # AssertionError: Failure Detection
+      "test_new_policy" # AssertionError: assert False
+      "test_identityless_reduction_huge_array" # ValueError: Maximum allowed dimension exceeded
+      "test_unary_spurious_fpexception" # AssertionError: Got warnings: [<warnings.WarningMessage object at 0xd1197430>]
+      "test_int" # AssertionError: selectedintkind(19): expected 16 but got -1
+      "test_real" # AssertionError: selectedrealkind(16): expected 10 but got -1
+      "test_quad_precision" # AssertionError: selectedrealkind(32): expected 16 but got -1
+      "test_big_arrays" # ValueError: array is too big; `arr.size * arr.dtype.itemsize` is larger tha...
+      "test_multinomial_pvals_float32" # Failed: DID NOT RAISE <class 'ValueError'>
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) [
+      # AssertionError: (np.int64(0), np.longdouble('9.9999999999999994515e-21'), np.longdouble('3.9696755572509052902e+20'), 'arctanh')
+      "test_loss_of_precision"
+    ];
+
+  passthru = {
+    # just for backwards compatibility
+    blas = blas.provider;
+    blasImplementation = blas.implementation;
+    inherit cfg;
+    coreIncludeDir = "${numpy_2}/${python.sitePackages}/numpy/_core/include";
+    tests = {
+      inherit sage;
+    };
+  };
+
+  meta = {
+    changelog = "https://github.com/numpy/numpy/releases/tag/v${version}";
+    description = "Scientific tools for Python";
+    homepage = "https://numpy.org/";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ doronbehar ];
+  };
+}
diff --git a/pkgs/development/python-modules/numpydoc/default.nix b/pkgs/development/python-modules/numpydoc/default.nix
index 01ee7116febda..d651c5f4fd017 100644
--- a/pkgs/development/python-modules/numpydoc/default.nix
+++ b/pkgs/development/python-modules/numpydoc/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, setuptools
-, jinja2
-, sphinx
-, tabulate
-, pytestCheckHook
-, matplotlib
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  setuptools,
+  jinja2,
+  sphinx,
+  tabulate,
+  pytestCheckHook,
+  matplotlib,
 }:
 
 buildPythonPackage rec {
   pname = "numpydoc";
-  version = "1.7.0";
+  version = "1.8.0";
   pyproject = true;
 
   disabled = isPy27;
@@ -20,7 +21,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     inherit pname;
     inherit version;
-    hash = "sha256-hm5a5bZQnc+HP8Y4ESD1wxrPE7E1Y2wagdaMFmqV+SE=";
+    hash = "sha256-AiOQq3RkpE+HN/efizHOHTz6S0r3nMqhqsXoNo21h/s=";
   };
 
   postPatch = ''
@@ -29,9 +30,7 @@ buildPythonPackage rec {
       --replace "--cov=numpydoc" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     jinja2
@@ -51,9 +50,7 @@ buildPythonPackage rec {
     "test_reference"
   ];
 
-  pythonImportsCheck = [
-    "numpydoc"
-  ];
+  pythonImportsCheck = [ "numpydoc" ];
 
   meta = {
     changelog = "https://github.com/numpy/numpydoc/releases/tag/v${version}";
@@ -61,5 +58,5 @@ buildPythonPackage rec {
     mainProgram = "validate-docstrings";
     homepage = "https://github.com/numpy/numpydoc";
     license = lib.licenses.free;
-   };
+  };
 }
diff --git a/pkgs/development/python-modules/numpyro/default.nix b/pkgs/development/python-modules/numpyro/default.nix
index a38b43b2d8f96..a1aed20a52686 100644
--- a/pkgs/development/python-modules/numpyro/default.nix
+++ b/pkgs/development/python-modules/numpyro/default.nix
@@ -1,31 +1,48 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, jax
-, jaxlib
-, multipledispatch
-, numpy
-, tqdm
-, funsor
-, pytestCheckHook
-# TODO: uncomment when tensorflow-probability gets fixed.
-# , tensorflow-probability
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  jax,
+  jaxlib,
+  multipledispatch,
+  numpy,
+  tqdm,
+
+  # tests
+  # Our current version of tensorflow (2.13.0) is too old and doesn't support python>=3.12
+  # We remove optional test dependencies that require tensorflow and skip the corresponding tests to
+  # avoid introducing a useless incompatibility with python 3.12:
+  # dm-haiku,
+  # flax,
+  # tensorflow-probability,
+  funsor,
+  graphviz,
+  optax,
+  pyro-api,
+  pytestCheckHook,
+  scikit-learn,
 }:
 
 buildPythonPackage rec {
   pname = "numpyro";
-  version = "0.14.0";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.9";
+  version = "0.15.3";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit version pname;
-    hash = "sha256-PkPqqchDRz166TnBg+ENsU4ju0KwrR3pCuFaRRF23kg=";
+  src = fetchFromGitHub {
+    owner = "pyro-ppl";
+    repo = "numpyro";
+    rev = "refs/tags/${version}";
+    hash = "sha256-g+ep221hhLbCjQasKpiEAXkygI5A3Hglqo1tV8lv5eg=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     jax
     jaxlib
     multipledispatch
@@ -34,15 +51,18 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
+    # dm-haiku
+    # flax
     funsor
+    graphviz
+    optax
+    pyro-api
     pytestCheckHook
-    # TODO: uncomment when tensorflow-probability gets fixed.
+    scikit-learn
     # tensorflow-probability
   ];
 
-  pythonImportsCheck = [
-    "numpyro"
-  ];
+  pythonImportsCheck = [ "numpyro" ];
 
   disabledTests = [
     # AssertionError due to tolerance issues
@@ -55,25 +75,56 @@ buildPythonPackage rec {
     "test_kl_dirichlet_dirichlet"
     "test_kl_univariate"
     "test_mean_var"
+
     # Tests want to download data
     "data_load"
     "test_jsb_chorales"
+
     # RuntimeWarning: overflow encountered in cast
     "test_zero_inflated_logits_probs_agree"
+
     # NameError: unbound axis name: _provenance
     "test_model_transformation"
+
+    # require dm-haiku
+    "test_flax_state_dropout_smoke"
+    "test_flax_module"
+    "test_random_module_mcmc"
+
+    # require flax
+    "test_haiku_state_dropout_smoke"
+    "test_haiku_module"
+    "test_random_module_mcmc"
+
+    # require tensorflow-probability
+    "test_modified_bessel_first_kind_vect"
+    "test_diag_spectral_density_periodic"
+    "test_kernel_approx_periodic"
+    "test_modified_bessel_first_kind_one_dim"
+    "test_modified_bessel_first_kind_vect"
+    "test_periodic_gp_one_dim_model"
+    "test_no_tracer_leak_at_lazy_property_sample"
+
+    # flaky on darwin
+    # TODO: uncomment at next release (0.15.4) as it has been fixed:
+    # https://github.com/pyro-ppl/numpyro/pull/1863
+    "test_change_point_x64"
   ];
 
-  # TODO: remove when tensorflow-probability gets fixed.
   disabledTestPaths = [
+    # require jaxns (unpackaged)
+    "test/contrib/test_nested_sampling.py"
+
+    # requires tensorflow-probability
+    "test/contrib/test_tfp.py"
     "test/test_distributions.py"
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Library for probabilistic programming with NumPy";
     homepage = "https://num.pyro.ai/";
     changelog = "https://github.com/pyro-ppl/numpyro/releases/tag/${version}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ fab ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/nunavut/default.nix b/pkgs/development/python-modules/nunavut/default.nix
index a0b82d76ff2a8..c6650b4324e47 100644
--- a/pkgs/development/python-modules/nunavut/default.nix
+++ b/pkgs/development/python-modules/nunavut/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, importlib-resources
-, pydsdl
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  importlib-resources,
+  pydsdl,
+  pyyaml,
 }:
 
- buildPythonPackage rec {
+buildPythonPackage rec {
   pname = "nunavut";
   version = "2.3.1";
   format = "setuptools";
@@ -39,12 +40,10 @@
   # https://github.com/UAVCAN/nunavut/issues/182
   doCheck = false;
 
-  pythonImportsCheck = [
-    "nunavut"
-  ];
+  pythonImportsCheck = [ "nunavut" ];
 
   meta = with lib; {
-    description = "A UAVCAN DSDL template engine";
+    description = "UAVCAN DSDL template engine";
     mainProgram = "nnvg";
     longDescription = ''
       It exposes a pydsdl abstract syntax tree to Jinja2 templates allowing
@@ -53,6 +52,9 @@
     homepage = "https://nunavut.readthedocs.io/";
     changelog = "https://github.com/OpenCyphal/nunavut/releases/tag/${version}";
     maintainers = with maintainers; [ wucke13 ];
-    license = with licenses; [ bsd3 mit ];
+    license = with licenses; [
+      bsd3
+      mit
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/nutils-poly/default.nix b/pkgs/development/python-modules/nutils-poly/default.nix
new file mode 100644
index 0000000000000..e15b2fcd2a27d
--- /dev/null
+++ b/pkgs/development/python-modules/nutils-poly/default.nix
@@ -0,0 +1,51 @@
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  rustPlatform,
+  libiconv,
+  numpy,
+  unittestCheckHook,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "nutils-poly";
+  version = "1.0.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "nutils";
+    repo = "poly-py";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-dxFv4Az3uz6Du5dk5KZJ+unVbt3aZjxXliAQZhmBWDM=";
+  };
+
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    name = "${pname}-${version}";
+    inherit src;
+    hash = "sha256-+fnKvlSwM197rsyusFH7rs1W6livxel45UGbi1sB05k=";
+  };
+
+  nativeBuildInputs = [ rustPlatform.cargoSetupHook ];
+
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
+
+  build-system = [ rustPlatform.maturinBuildHook ];
+
+  dependencies = [ numpy ];
+
+  nativeCheckInputs = [ unittestCheckHook ];
+
+  pythonImportsCheck = [ "nutils_poly" ];
+
+  meta = {
+    description = "Low-level functions for evaluating and manipulating polynomials";
+    homepage = "https://github.com/nutils/poly-py";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tomasajt ];
+  };
+}
diff --git a/pkgs/development/python-modules/nutils/default.nix b/pkgs/development/python-modules/nutils/default.nix
index 3447f4deddf3a..f8ac839989fab 100644
--- a/pkgs/development/python-modules/nutils/default.nix
+++ b/pkgs/development/python-modules/nutils/default.nix
@@ -1,48 +1,50 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, treelog
-, stringly
-, flit-core
-, bottombar
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  appdirs,
+  bottombar,
+  numpy,
+  nutils-poly,
+  psutil,
+  stringly,
+  treelog,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "nutils";
-  version = "8.6";
-  format = "pyproject";
+  version = "8.8";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "evalf";
     repo = "nutils";
     rev = "refs/tags/v${version}";
-    hash = "sha256-vfdb7+jcJ5EuWDoZyRExWEPEWt+lgbzmAL3QhguLtHE=";
+    hash = "sha256-E/y1YXW+0+LfntRQsdIU9rMOmN8mlFwXktD/sViJo3I=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    appdirs
+    bottombar
     numpy
-    treelog
+    nutils-poly
+    psutil
     stringly
-    bottombar
+    treelog
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  pythonRelaxDeps = [ "psutil" ];
 
-  pythonImportsCheck = [
-    "nutils"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "nutils" ];
 
   disabledTestPaths = [
     # AttributeError: type object 'setup' has no attribute '__code__'
diff --git a/pkgs/development/python-modules/nvchecker/default.nix b/pkgs/development/python-modules/nvchecker/default.nix
index a9dde5d6626ad..57f0a7c682400 100644
--- a/pkgs/development/python-modules/nvchecker/default.nix
+++ b/pkgs/development/python-modules/nvchecker/default.nix
@@ -1,27 +1,28 @@
-{ lib
-, platformdirs
-, buildPythonPackage
-, docutils
-, fetchFromGitHub
-, flaky
-, installShellFiles
-, pycurl
-, pytest-asyncio
-, pytest-httpbin
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, structlog
-, tomli
-, tornado
-, awesomeversion
-, packaging
-, lxml
+{
+  lib,
+  platformdirs,
+  buildPythonPackage,
+  docutils,
+  fetchFromGitHub,
+  flaky,
+  installShellFiles,
+  pycurl,
+  pytest-asyncio,
+  pytest-httpbin,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  structlog,
+  tomli,
+  tornado,
+  awesomeversion,
+  packaging,
+  lxml,
 }:
 
 buildPythonPackage rec {
   pname = "nvchecker";
-  version = "2.14.1";
+  version = "2.15.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -30,7 +31,7 @@ buildPythonPackage rec {
     owner = "lilydjwg";
     repo = "nvchecker";
     rev = "v${version}";
-    hash = "sha256-V2lTGeaiwUsh8IONbZ5GQrqevJMhjeuFLTDF8UdWg8Q=";
+    hash = "sha256-dK3rZCoSukCzPOFVectQiF6qplUuDBh9qyN8JL0+j20=";
   };
 
   nativeBuildInputs = [
@@ -44,9 +45,7 @@ buildPythonPackage rec {
     platformdirs
     tornado
     pycurl
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -66,13 +65,9 @@ buildPythonPackage rec {
     installManPage docs/_build/man/nvchecker.1
   '';
 
-  pythonImportsCheck = [
-    "nvchecker"
-  ];
+  pythonImportsCheck = [ "nvchecker" ];
 
-  pytestFlagsArray = [
-    "-m 'not needs_net'"
-  ];
+  pytestFlagsArray = [ "-m 'not needs_net'" ];
 
   optional-dependencies = {
     # vercmp = [ pyalpm ];
@@ -86,6 +81,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/lilydjwg/nvchecker";
     changelog = "https://github.com/lilydjwg/nvchecker/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/nvdlib/default.nix b/pkgs/development/python-modules/nvdlib/default.nix
index e79b8c0513cd6..1d3a7b4a3e3c3 100644
--- a/pkgs/development/python-modules/nvdlib/default.nix
+++ b/pkgs/development/python-modules/nvdlib/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, responses
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  responses,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "nvdlib";
-  version = "0.7.6";
+  version = "0.7.7";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,25 +20,19 @@ buildPythonPackage rec {
     owner = "Vehemont";
     repo = "nvdlib";
     rev = "refs/tags/v${version}";
-    hash = "sha256-p2xx+QC0P30FR+nMiFW/PoINbcTM49ufADW9B9u2WxI=";
+    hash = "sha256-/UmBNdch9yM6yCVcJbzsCx6om4XlqQa40X/fgEYgRuI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     pytestCheckHook
     responses
   ];
 
-  pythonImportsCheck = [
-    "nvdlib"
-  ];
+  pythonImportsCheck = [ "nvdlib" ];
 
   meta = with lib; {
     description = "Module to interact with the National Vulnerability CVE/CPE API";
diff --git a/pkgs/development/python-modules/nvidia-ml-py/default.nix b/pkgs/development/python-modules/nvidia-ml-py/default.nix
index b88947b15c70c..b620f209337eb 100644
--- a/pkgs/development/python-modules/nvidia-ml-py/default.nix
+++ b/pkgs/development/python-modules/nvidia-ml-py/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, substituteAll
-, addOpenGLRunpath
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  substituteAll,
+  addDriverRunpath,
 }:
 
 buildPythonPackage rec {
   pname = "nvidia-ml-py";
-  version = "12.550.52";
+  version = "12.555.43";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
     extension = "tar.gz";
-    hash = "sha256-3+3XFDNccuZaMshun12xzUlSbUTW2McoCdmWlY9zTAc=";
+    hash = "sha256-6efxLvHsI0uw3CLSvcdi/6+rOUvcRyoHpDd8lbv5Ov4=";
   };
 
   patches = [
     (substituteAll {
       src = ./0001-locate-libnvidia-ml.so.1-on-NixOS.patch;
-      inherit (addOpenGLRunpath) driverLink;
+      inherit (addDriverRunpath) driverLink;
     })
   ];
 
diff --git a/pkgs/development/python-modules/nwdiag/default.nix b/pkgs/development/python-modules/nwdiag/default.nix
index 54bd6a1f9fea4..6196910595cbf 100644
--- a/pkgs/development/python-modules/nwdiag/default.nix
+++ b/pkgs/development/python-modules/nwdiag/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, blockdiag
-, fetchFromGitHub
-, buildPythonPackage
-, pynose
-, pytestCheckHook
-, setuptools
-, pythonOlder
+{
+  lib,
+  blockdiag,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pytestCheckHook,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +22,15 @@ buildPythonPackage rec {
     hash = "sha256-uKrdkXpL5YBr953sRsHknYg+2/WwrZmyDf8BMA2+0tU=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  patches = [ ./fix_test_generate.patch ];
 
-  dependencies = [
-    blockdiag
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pynose
-    pytestCheckHook
-  ];
+  dependencies = [ blockdiag ];
 
-  pytestFlagsArray = [
-    "src/nwdiag/tests/"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pytestFlagsArray = [ "src/nwdiag/tests/" ];
 
   disabledTests = [
     # AttributeError: 'TestRstDirectives' object has no attribute 'assertRegexpMatches'
@@ -45,9 +38,7 @@ buildPythonPackage rec {
     "noviewbox"
   ];
 
-  pythonImportsCheck = [
-    "nwdiag"
-  ];
+  pythonImportsCheck = [ "nwdiag" ];
 
   meta = with lib; {
     description = "Generate network-diagram image from spec-text file (similar to Graphviz)";
diff --git a/pkgs/development/python-modules/nwdiag/fix_test_generate.patch b/pkgs/development/python-modules/nwdiag/fix_test_generate.patch
new file mode 100644
index 0000000000000..c05b5be45c1dc
--- /dev/null
+++ b/pkgs/development/python-modules/nwdiag/fix_test_generate.patch
@@ -0,0 +1,22 @@
+diff --git a/src/nwdiag/tests/test_generate_diagram.py b/src/nwdiag/tests/test_generate_diagram.py
+index 2065208..ac9b096 100644
+--- a/src/nwdiag/tests/test_generate_diagram.py
++++ b/src/nwdiag/tests/test_generate_diagram.py
+@@ -16,16 +16,4 @@
+ import os
+ 
+ from blockdiag.tests.test_generate_diagram import (get_diagram_files,
+-                                                   testcase_generator)
+-
+-import nwdiag.command
+-
+-
+-def test_generate():
+-    mainfunc = nwdiag.command.main
+-    basepath = os.path.dirname(__file__)
+-    files = get_diagram_files(basepath)
+-    options = []
+-
+-    for testcase in testcase_generator(basepath, mainfunc, files, options):
+-        yield testcase
++                                                   test_generate_with_separate)
diff --git a/pkgs/development/python-modules/nxt-python/default.nix b/pkgs/development/python-modules/nxt-python/default.nix
index efbec58b936a8..e7d9de8e1c7a7 100644
--- a/pkgs/development/python-modules/nxt-python/default.nix
+++ b/pkgs/development/python-modules/nxt-python/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pybluez
-, pytestCheckHook
-, pythonOlder
-, pyusb
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pybluez,
+  pytestCheckHook,
+  pythonOlder,
+  pyusb,
 }:
 
 buildPythonPackage rec {
@@ -22,27 +23,17 @@ buildPythonPackage rec {
     hash = "sha256-v65KEP5DuJsZAifd1Rh46x9lSAgBZgyo+e8PKSDKnhw=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  dependencies = [
-    pyusb
-  ];
+  dependencies = [ pyusb ];
 
   optional-dependencies = {
-    bluetooth = [
-      pybluez
-    ];
+    bluetooth = [ pybluez ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "nxt"
-  ];
+  pythonImportsCheck = [ "nxt" ];
 
   meta = with lib; {
     description = "Python driver/interface for Lego Mindstorms NXT robot";
diff --git a/pkgs/development/python-modules/oasatelematics/default.nix b/pkgs/development/python-modules/oasatelematics/default.nix
index c4d7ca1213872..fca7740dc6de9 100644
--- a/pkgs/development/python-modules/oasatelematics/default.nix
+++ b/pkgs/development/python-modules/oasatelematics/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -20,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-3O7XbNVj1S3ZwheklEhm0ivw16Tj7drML/xYC9383Kg=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "oasatelematics"
-  ];
+  pythonImportsCheck = [ "oasatelematics" ];
 
   meta = with lib; {
     description = "Python wrapper for the OASA Telematics API";
diff --git a/pkgs/development/python-modules/oath/default.nix b/pkgs/development/python-modules/oath/default.nix
index 525988d2dd651..3eb51d6866fea 100644
--- a/pkgs/development/python-modules/oath/default.nix
+++ b/pkgs/development/python-modules/oath/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -13,13 +14,9 @@ buildPythonPackage rec {
     inherit pname version;
     hash = "sha256-vWsg0g8sTj9TUj7pACEdynWu7KcvT1qf2NyswXX+HAs=";
   };
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "oath"
-  ];
+  pythonImportsCheck = [ "oath" ];
 
   meta = with lib; {
     description = "Python implementation of the three main OATH specifications: HOTP, TOTP and OCRA";
diff --git a/pkgs/development/python-modules/oauth/default.nix b/pkgs/development/python-modules/oauth/default.nix
index 434f40b17cd97..3510461dba3c8 100644
--- a/pkgs/development/python-modules/oauth/default.nix
+++ b/pkgs/development/python-modules/oauth/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -21,5 +22,4 @@ buildPythonPackage rec {
     description = "Library for OAuth version 1.0a";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/oauth2/default.nix b/pkgs/development/python-modules/oauth2/default.nix
index 981299a9ac05c..17ea759ce4f50 100644
--- a/pkgs/development/python-modules/oauth2/default.nix
+++ b/pkgs/development/python-modules/oauth2/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, httplib2
-, mock
-, coverage
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  httplib2,
+  mock,
+  coverage,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +18,10 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [ httplib2 ];
-  buildInputs = [ mock coverage ];
+  buildInputs = [
+    mock
+    coverage
+  ];
 
   # ServerNotFoundError: Unable to find the server at oauth-sandbox.sevengoslings.net
   doCheck = false;
@@ -26,8 +30,7 @@ buildPythonPackage rec {
     homepage = "https://github.com/simplegeo/python-oauth2";
     description = "Library for OAuth version 1.0";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     platforms = platforms.unix;
   };
-
 }
diff --git a/pkgs/development/python-modules/oauth2client/default.nix b/pkgs/development/python-modules/oauth2client/default.nix
index a924fa81c7aed..895c988381e9b 100644
--- a/pkgs/development/python-modules/oauth2client/default.nix
+++ b/pkgs/development/python-modules/oauth2client/default.nix
@@ -1,5 +1,12 @@
-{ lib, buildPythonPackage, fetchPypi
-, six, httplib2, pyasn1-modules, rsa }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  httplib2,
+  pyasn1-modules,
+  rsa,
+}:
 
 buildPythonPackage rec {
   pname = "oauth2client";
@@ -11,12 +18,17 @@ buildPythonPackage rec {
     sha256 = "d486741e451287f69568a4d26d70d9acd73a2bbfa275746c535b4209891cccc6";
   };
 
-  propagatedBuildInputs = [ six httplib2 pyasn1-modules rsa ];
+  propagatedBuildInputs = [
+    six
+    httplib2
+    pyasn1-modules
+    rsa
+  ];
   doCheck = false;
 
   meta = with lib; {
-    description = "A client library for OAuth 2.0";
+    description = "Client library for OAuth 2.0";
     homepage = "https://github.com/google/oauth2client/";
-    license = licenses.bsd2;
+    license = licenses.asl20;
   };
 }
diff --git a/pkgs/development/python-modules/oauthenticator/default.nix b/pkgs/development/python-modules/oauthenticator/default.nix
index 1e5bd396cd8bb..e87edd391028c 100644
--- a/pkgs/development/python-modules/oauthenticator/default.nix
+++ b/pkgs/development/python-modules/oauthenticator/default.nix
@@ -1,42 +1,47 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, google-api-python-client
-, google-auth-oauthlib
-, jupyterhub
-, mwoauth
-, pyjwt
-, pytest-asyncio
-, pytestCheckHook
-, requests-mock
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  google-api-python-client,
+  google-auth-oauthlib,
+  jsonschema,
+  jupyterhub,
+  mwoauth,
+  pyjwt,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytestCheckHook,
+  requests,
+  requests-mock,
+  ruamel-yaml,
+  setuptools,
+  tornado,
+  traitlets,
 }:
 
 buildPythonPackage rec {
   pname = "oauthenticator";
-  version = "16.3.0";
+  version = "17.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-QMddGJUfafXoBxMCjlx1lH45a4Bab3AP4j8Px7JxYaQ=";
+    hash = "sha256-0eRfcuI+GuhgF0myZPy8ZcL4kBCLv6PcGEk+92J+GZ0=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail " --cov=oauthenticator" ""
-  '';
-
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
+    jsonschema
     jupyterhub
     pyjwt
+    requests
+    ruamel-yaml
+    tornado
+    traitlets
   ];
 
   passthru.optional-dependencies = {
@@ -44,13 +49,12 @@ buildPythonPackage rec {
       google-api-python-client
       google-auth-oauthlib
     ];
-    mediawiki = [
-      mwoauth
-    ];
+    mediawiki = [ mwoauth ];
   };
 
   nativeCheckInputs = [
     pytest-asyncio
+    pytest-cov-stub
     pytestCheckHook
     requests-mock
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
@@ -71,15 +75,13 @@ buildPythonPackage rec {
     "test_openshift"
   ];
 
-  pythonImportsCheck = [
-    "oauthenticator"
-  ];
+  pythonImportsCheck = [ "oauthenticator" ];
 
   meta = with lib; {
     description = "Authenticate JupyterHub users with common OAuth providers";
-    homepage =  "https://github.com/jupyterhub/oauthenticator";
+    homepage = "https://github.com/jupyterhub/oauthenticator";
     changelog = "https://github.com/jupyterhub/oauthenticator/blob/${version}/docs/source/reference/changelog.md";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/oauthlib/default.nix b/pkgs/development/python-modules/oauthlib/default.nix
index 9f240535256af..84fc4a2627b8b 100644
--- a/pkgs/development/python-modules/oauthlib/default.nix
+++ b/pkgs/development/python-modules/oauthlib/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, blinker
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, mock
-, pyjwt
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  blinker,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  mock,
+  pyjwt,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 
-# for passthru.tests
-, django-allauth
-, django-oauth-toolkit
-, google-auth-oauthlib
-, requests-oauthlib
+  # for passthru.tests
+  django-allauth,
+  django-oauth-toolkit,
+  google-auth-oauthlib,
+  requests-oauthlib,
 }:
 
 buildPythonPackage rec {
@@ -30,13 +31,14 @@ buildPythonPackage rec {
     hash = "sha256-KADS1pEaLYi86LEt2VVuz8FVTBANzxC8EeQLgGMxuBU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   passthru.optional-dependencies = {
     rsa = [ cryptography ];
-    signedtoken = [ cryptography pyjwt ];
+    signedtoken = [
+      cryptography
+      pyjwt
+    ];
     signals = [ blinker ];
   };
 
@@ -45,16 +47,20 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "oauthlib"
+  disabledTests = [
+    # https://github.com/oauthlib/oauthlib/issues/877
+    "test_rsa_bad_keys"
   ];
 
+  pythonImportsCheck = [ "oauthlib" ];
+
   passthru.tests = {
     inherit
       django-allauth
       django-oauth-toolkit
       google-auth-oauthlib
-      requests-oauthlib;
+      requests-oauthlib
+      ;
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/obfsproxy/default.nix b/pkgs/development/python-modules/obfsproxy/default.nix
index cb00eb5dafd54..c9b7f9f13c4cb 100644
--- a/pkgs/development/python-modules/obfsproxy/default.nix
+++ b/pkgs/development/python-modules/obfsproxy/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchgit
-, pyptlib
-, twisted
-, pycrypto
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  fetchgit,
+  pyptlib,
+  twisted,
+  pycrypto,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -23,15 +24,19 @@ buildPythonPackage rec {
     substituteInPlace setup.py --replace "argparse" ""
   '';
 
-  propagatedBuildInputs = [ pyptlib twisted pycrypto pyyaml ];
+  propagatedBuildInputs = [
+    pyptlib
+    twisted
+    pycrypto
+    pyyaml
+  ];
 
   # No tests in archive
   doCheck = false;
 
   meta = with lib; {
-    description = "A pluggable transport proxy";
+    description = "Pluggable transport proxy";
     homepage = "https://www.torproject.org/projects/obfsproxy";
     maintainers = with maintainers; [ thoughtpolice ];
   };
-
 }
diff --git a/pkgs/development/python-modules/objax/default.nix b/pkgs/development/python-modules/objax/default.nix
index 7f2725e9d286b..63d9c1d038462 100644
--- a/pkgs/development/python-modules/objax/default.nix
+++ b/pkgs/development/python-modules/objax/default.nix
@@ -1,19 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, jax
-, jaxlib
-, keras
-, numpy
-, parameterized
-, pillow
-, pytestCheckHook
-, pythonOlder
-, scipy
-, setuptools
-, tensorboard
-, tensorflow
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jax,
+  jaxlib,
+  keras,
+  numpy,
+  parameterized,
+  pillow,
+  pytestCheckHook,
+  pythonOlder,
+  scipy,
+  setuptools,
+  tensorboard,
+  tensorflow,
 }:
 
 buildPythonPackage rec {
@@ -30,17 +30,18 @@ buildPythonPackage rec {
     hash = "sha256-WD+pmR8cEay4iziRXqF3sHUzCMBjmLJ3wZ3iYOD+hzk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
+  patches = [
+    # Issue reported upstream: https://github.com/google/objax/issues/270
+    ./replace-deprecated-device_buffers.patch
   ];
 
+  build-system = [ setuptools ];
+
   # Avoid propagating the dependency on `jaxlib`, see
   # https://github.com/NixOS/nixpkgs/issues/156767
-  buildInputs = [
-    jaxlib
-  ];
+  buildInputs = [ jaxlib ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     jax
     numpy
     parameterized
@@ -49,9 +50,7 @@ buildPythonPackage rec {
     tensorboard
   ];
 
-  pythonImportsCheck = [
-    "objax"
-  ];
+  pythonImportsCheck = [ "objax" ];
 
   # This is necessay to ignore the presence of two protobufs version (tensorflow is bringing an
   # older version).
@@ -63,9 +62,7 @@ buildPythonPackage rec {
     tensorflow
   ];
 
-  pytestFlagsArray = [
-    "tests/*.py"
-  ];
+  pytestFlagsArray = [ "tests/*.py" ];
 
   disabledTests = [
     # Test requires internet access for prefetching some weights
@@ -80,5 +77,7 @@ buildPythonPackage rec {
     changelog = "https://github.com/google/objax/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ ndl ];
+    # Tests test_syncbn_{0,1,2}d and other tests from tests/parallel.py fail
+    broken = true;
   };
 }
diff --git a/pkgs/development/python-modules/objax/replace-deprecated-device_buffers.patch b/pkgs/development/python-modules/objax/replace-deprecated-device_buffers.patch
new file mode 100644
index 0000000000000..fc0fd50a90ce8
--- /dev/null
+++ b/pkgs/development/python-modules/objax/replace-deprecated-device_buffers.patch
@@ -0,0 +1,14 @@
+diff --git a/objax/util/util.py b/objax/util/util.py
+index c31a356..344cf9a 100644
+--- a/objax/util/util.py
++++ b/objax/util/util.py
+@@ -117,7 +117,8 @@ def get_local_devices():
+     if _local_devices is None:
+         x = jn.zeros((jax.local_device_count(), 1), dtype=jn.float32)
+         sharded_x = map_to_device(x)
+-        _local_devices = [b.device() for b in sharded_x.device_buffers]
++        device_buffers = [buf.data for buf in sharded_x.addressable_shards]
++        _local_devices = [list(b.devices())[0] for b in device_buffers]
+     return _local_devices
+ 
+ 
diff --git a/pkgs/development/python-modules/objexplore/default.nix b/pkgs/development/python-modules/objexplore/default.nix
new file mode 100644
index 0000000000000..02d4ceeb21428
--- /dev/null
+++ b/pkgs/development/python-modules/objexplore/default.nix
@@ -0,0 +1,61 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  blessed,
+  rich,
+  pytestCheckHook,
+  pandas
+}:
+
+buildPythonPackage {
+  pname = "objexplore";
+  version = "1.6.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "kylepollina";
+    repo = "objexplore";
+    # tags for >1.5.4 are not availables on github
+    # see: https://github.com/kylepollina/objexplore/issues/25
+    rev = "3c2196d26e5a873eed0a694cddca66352ea7c81e";
+    hash = "sha256-BgeuRRuvbB4p99mwCjNxm3hYEZuGua8x2GdoVssQ7eI=";
+  };
+
+  pythonRelaxDeps = [ "blessed" "rich" ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    blessed
+    rich
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pandas
+  ];
+
+  pythonImportsCheck = [
+    "objexplore"
+    "objexplore.cached_object"
+    "objexplore.explorer"
+    "objexplore.filter"
+    "objexplore.help_layout"
+    "objexplore.objexplore"
+    "objexplore.overview"
+    "objexplore.stack"
+    "objexplore.utils"
+  ];
+
+  meta = {
+    description = "Terminal UI to interactively inspect and explore Python objects";
+    homepage = "https://github.com/kylepollina/objexplore";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ pbsds sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/objgraph/default.nix b/pkgs/development/python-modules/objgraph/default.nix
index c0c88870f3526..231c14e4ceff3 100644
--- a/pkgs/development/python-modules/objgraph/default.nix
+++ b/pkgs/development/python-modules/objgraph/default.nix
@@ -1,18 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, graphviz
-, graphvizPkgs
-, isPyPy
-, python
-, pythonOlder
-, substituteAll
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  graphviz,
+  graphvizPkgs,
+  isPyPy,
+  python,
+  pythonOlder,
+  substituteAll,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "objgraph";
   version = "3.6.1";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7" || isPyPy;
 
@@ -28,15 +30,15 @@ buildPythonPackage rec {
     })
   ];
 
+  build-system = [
+    setuptools
+  ];
+
   passthru.optional-dependencies = {
-    ipython = [
-      graphviz
-    ];
+    ipython = [ graphviz ];
   };
 
-  pythonImportsCheck = [
-    "objgraph"
-  ];
+  pythonImportsCheck = [ "objgraph" ];
 
   checkPhase = ''
     runHook preCheck
diff --git a/pkgs/development/python-modules/objsize/default.nix b/pkgs/development/python-modules/objsize/default.nix
index a002597da50a2..d5e93d99e24b4 100644
--- a/pkgs/development/python-modules/objsize/default.nix
+++ b/pkgs/development/python-modules/objsize/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "objsize";
   version = "0.7.0";
-  pyproject= true;
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -26,17 +27,11 @@ buildPythonPackage rec {
     wheel
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "objsize"
-  ];
+  pythonImportsCheck = [ "objsize" ];
 
-  pytestFlagsArray = [
-    "test_objsize.py"
-  ];
+  pytestFlagsArray = [ "test_objsize.py" ];
 
   meta = with lib; {
     description = "Traversal over objects subtree and calculate the total size";
diff --git a/pkgs/development/python-modules/obspy/default.nix b/pkgs/development/python-modules/obspy/default.nix
index 422a0553e101c..8133d63c6f2ea 100644
--- a/pkgs/development/python-modules/obspy/default.nix
+++ b/pkgs/development/python-modules/obspy/default.nix
@@ -1,30 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, decorator
-, future
-, lxml
-, matplotlib
-, numpy
-, requests
-, scipy
-, sqlalchemy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  decorator,
+  lxml,
+  matplotlib,
+  numpy,
+  requests,
+  scipy,
+  sqlalchemy,
 }:
 
 buildPythonPackage rec {
   pname = "obspy";
-  version = "1.2.2";
-  format = "setuptools";
+  version = "1.4.1";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    extension = "zip";
-    sha256 = "a0f2b0915beeb597762563fa0358aa1b4d6b09ffda49909c760b5cdf5bdc419e";
+  src = fetchFromGitHub {
+    owner = "obspy";
+    repo = "obspy";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Y833OWWBDYduyky0+MRbPoBtATTytak87hgh68QAgfw=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  pythonRelaxDeps = [ "sqlalchemy" ];
+
+  dependencies = [
     decorator
-    future
     lxml
     matplotlib
     numpy
@@ -38,10 +47,11 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "obspy" ];
 
-  meta = with lib; {
+  meta = {
     description = "Python framework for seismological observatories";
     homepage = "https://www.obspy.org";
-    license = licenses.lgpl3;
-    maintainers = [ maintainers.ametrine ];
+    changelog = "https://github.com/obspy/obspy/releases/tag/${version}";
+    license = lib.licenses.lgpl3Only;
+    maintainers = [ lib.maintainers.ametrine ];
   };
 }
diff --git a/pkgs/development/python-modules/oca-port/default.nix b/pkgs/development/python-modules/oca-port/default.nix
index c6429d3582bc5..93a7dafb02d0a 100644
--- a/pkgs/development/python-modules/oca-port/default.nix
+++ b/pkgs/development/python-modules/oca-port/default.nix
@@ -1,12 +1,13 @@
-{ buildPythonPackage
-, click
-, fetchPypi
-, gitpython
-, lib
-, nix-update-script
-, requests
-, setuptools-scm
-, setuptools
+{
+  buildPythonPackage,
+  click,
+  fetchPypi,
+  gitpython,
+  lib,
+  nix-update-script,
+  requests,
+  setuptools-scm,
+  setuptools,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/ochre/default.nix b/pkgs/development/python-modules/ochre/default.nix
index e3604446e7e20..023fb09d1ef44 100644
--- a/pkgs/development/python-modules/ochre/default.nix
+++ b/pkgs/development/python-modules/ochre/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, hypothesis
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  hypothesis,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-U6qycLnldwNze3XMAn6DS3XGX4RaCZgW0pH/y/FEAkk=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   nativeCheckInputs = [
     hypothesis
@@ -30,7 +29,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "ochre" ];
 
   meta = with lib; {
-    description = "A down-to-earth approach to colors";
+    description = "Down-to-earth approach to colors";
     homepage = "https://github.com/getcuia/ochre";
     changelog = "https://github.com/getcuia/ochre/releases/tag/${src.rev}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/oci/default.nix b/pkgs/development/python-modules/oci/default.nix
index b1bb84dba7865..d02ff6c5cccc9 100644
--- a/pkgs/development/python-modules/oci/default.nix
+++ b/pkgs/development/python-modules/oci/default.nix
@@ -1,20 +1,20 @@
-{ lib
-, buildPythonPackage
-, certifi
-, circuitbreaker
-, cryptography
-, fetchFromGitHub
-, pyopenssl
-, python-dateutil
-, pythonOlder
-, pythonRelaxDepsHook
-, pytz
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  certifi,
+  circuitbreaker,
+  cryptography,
+  fetchFromGitHub,
+  pyopenssl,
+  python-dateutil,
+  pythonOlder,
+  pytz,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "oci";
-  version = "2.126.1";
+  version = "2.134.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "oracle";
     repo = "oci-python-sdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-emWfpI+4oyb3p8RzhLKm1iWkvLu7OZTrEnyvZ5AI9Zw=";
+    hash = "sha256-EHqXwTsUy2bWQ1OzogL0wQhodgcm4v6T3fz7Y+d4o4w=";
   };
 
   pythonRelaxDeps = [
@@ -32,7 +32,6 @@ buildPythonPackage rec {
   ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -48,15 +47,16 @@ buildPythonPackage rec {
   # Tests fail: https://github.com/oracle/oci-python-sdk/issues/164
   doCheck = false;
 
-  pythonImportsCheck = [
-    "oci"
-  ];
+  pythonImportsCheck = [ "oci" ];
 
   meta = with lib; {
     description = "Oracle Cloud Infrastructure Python SDK";
     homepage = "https://github.com/oracle/oci-python-sdk";
     changelog = "https://github.com/oracle/oci-python-sdk/blob/v${version}/CHANGELOG.rst";
-    license = with licenses; [ asl20 /* or */ upl ];
+    license = with licenses; [
+      asl20 # or
+      upl
+    ];
     maintainers = with maintainers; [ ilian ];
   };
 }
diff --git a/pkgs/development/python-modules/ocifs/default.nix b/pkgs/development/python-modules/ocifs/default.nix
index 8fab505c310d1..d613106bc7186 100644
--- a/pkgs/development/python-modules/ocifs/default.nix
+++ b/pkgs/development/python-modules/ocifs/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, fsspec
-, oci
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  fsspec,
+  oci,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-IGl9G4NyzhcqrfYfgeZin+wt1OwHmh6780MPfZBwsXA=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     fsspec
@@ -33,9 +32,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ocifs"
-  ];
+  pythonImportsCheck = [ "ocifs" ];
 
   meta = with lib; {
     description = "Oracle Cloud Infrastructure Object Storage fsspec implementation";
diff --git a/pkgs/development/python-modules/ocrmypdf/default.nix b/pkgs/development/python-modules/ocrmypdf/default.nix
index eb5cf1ecfed2c..4f9149cc72b6d 100644
--- a/pkgs/development/python-modules/ocrmypdf/default.nix
+++ b/pkgs/development/python-modules/ocrmypdf/default.nix
@@ -1,35 +1,35 @@
-{ lib
-, buildPythonPackage
-, deprecation
-, fetchFromGitHub
-, ghostscript
-, hypothesis
-, img2pdf
-, importlib-resources
-, jbig2enc
-, packaging
-, pdfminer-six
-, pillow-heif
-, pikepdf
-, pillow
-, pluggy
-, pngquant
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, rich
-, reportlab
-, setuptools-scm
-, substituteAll
-, tesseract
-, tqdm
-, unpaper
-, installShellFiles
+{
+  lib,
+  buildPythonPackage,
+  deprecation,
+  fetchFromGitHub,
+  ghostscript,
+  hatch-vcs,
+  hatchling,
+  hypothesis,
+  img2pdf,
+  jbig2enc,
+  packaging,
+  pdfminer-six,
+  pillow-heif,
+  pikepdf,
+  pillow,
+  pluggy,
+  pngquant,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  rich,
+  reportlab,
+  substituteAll,
+  tesseract,
+  unpaper,
+  installShellFiles,
 }:
 
 buildPythonPackage rec {
   pname = "ocrmypdf";
-  version = "16.2.0";
+  version = "16.5.0";
 
   disabled = pythonOlder "3.10";
 
@@ -45,7 +45,7 @@ buildPythonPackage rec {
     postFetch = ''
       rm "$out/.git_archival.txt"
     '';
-    hash = "sha256-sqhuQ+no6UymxbVtDtWiYQK8kKpO1y37NxLDmRT1LEQ=";
+    hash = "sha256-jqe4BRW0U7gqcf+FtDWjDDvRStAqaEPTuU+B+BrFR5Y=";
   };
 
   patches = [
@@ -61,12 +61,11 @@ buildPythonPackage rec {
   ];
 
   build-system = [
-    setuptools-scm
+    hatch-vcs
+    hatchling
   ];
 
-  nativeBuildInputs = [
-    installShellFiles
-  ];
+  nativeBuildInputs = [ installShellFiles ];
 
   dependencies = [
     deprecation
@@ -87,9 +86,7 @@ buildPythonPackage rec {
     reportlab
   ];
 
-  pythonImportsCheck = [
-    "ocrmypdf"
-  ];
+  pythonImportsCheck = [ "ocrmypdf" ];
 
   postInstall = ''
     installShellCompletion --cmd ocrmypdf \
@@ -100,8 +97,13 @@ buildPythonPackage rec {
   meta = with lib; {
     homepage = "https://github.com/ocrmypdf/OCRmyPDF";
     description = "Adds an OCR text layer to scanned PDF files, allowing them to be searched";
-    license = with licenses; [ mpl20 mit ];
-    maintainers = with maintainers; [ kiwi dotlambda ];
+    license = with licenses; [
+      mpl20
+      mit
+    ];
+    maintainers = with maintainers; [
+      dotlambda
+    ];
     changelog = "https://github.com/ocrmypdf/OCRmyPDF/blob/${src.rev}/docs/release_notes.rst";
     mainProgram = "ocrmypdf";
   };
diff --git a/pkgs/development/python-modules/ocrmypdf/paths.patch b/pkgs/development/python-modules/ocrmypdf/paths.patch
index 1701a73215d0e..3e2a3a5d507b9 100644
--- a/pkgs/development/python-modules/ocrmypdf/paths.patch
+++ b/pkgs/development/python-modules/ocrmypdf/paths.patch
@@ -1,5 +1,5 @@
 diff --git a/src/ocrmypdf/_exec/ghostscript.py b/src/ocrmypdf/_exec/ghostscript.py
-index 94eec244..4bb15db9 100644
+index eaa48117..30201d97 100644
 --- a/src/ocrmypdf/_exec/ghostscript.py
 +++ b/src/ocrmypdf/_exec/ghostscript.py
 @@ -31,7 +31,7 @@ COLOR_CONVERSION_STRATEGIES = frozenset(
@@ -12,19 +12,19 @@ index 94eec244..4bb15db9 100644
  
  log = logging.getLogger(__name__)
 diff --git a/src/ocrmypdf/_exec/jbig2enc.py b/src/ocrmypdf/_exec/jbig2enc.py
-index 5a34a95a..5ee1b333 100644
+index 1c6dd5fe..b689a091 100644
 --- a/src/ocrmypdf/_exec/jbig2enc.py
 +++ b/src/ocrmypdf/_exec/jbig2enc.py
-@@ -14,7 +14,7 @@ from ocrmypdf.subprocess import get_version, run
- 
+@@ -15,7 +15,7 @@ from ocrmypdf.subprocess import get_version, run
  
  def version() -> Version:
--    return Version(get_version('jbig2', regex=r'jbig2enc (\d+(\.\d+)*).*'))
-+    return Version(get_version('@jbig2@', regex=r'jbig2enc (\d+(\.\d+)*).*'))
- 
- 
- def available():
-@@ -27,7 +27,7 @@ def available():
+     try:
+-        version = get_version('jbig2', regex=r'jbig2enc (\d+(\.\d+)*).*')
++        version = get_version('@jbig2@', regex=r'jbig2enc (\d+(\.\d+)*).*')
+     except CalledProcessError as e:
+         # TeX Live for Windows provides an incompatible jbig2.EXE which may
+         # be on the PATH.
+@@ -33,7 +33,7 @@ def available():
  
  def convert_group(cwd, infiles, out_prefix, threshold):
      args = [
@@ -33,7 +33,7 @@ index 5a34a95a..5ee1b333 100644
          '-b',
          out_prefix,
          '--symbol-mode',  # symbol mode (lossy)
-@@ -44,7 +44,7 @@ def convert_group(cwd, infiles, out_prefix, threshold):
+@@ -50,7 +50,7 @@ def convert_group(cwd, infiles, out_prefix, threshold):
  
  
  def convert_single(cwd, infile, outfile, threshold):
@@ -65,7 +65,7 @@ index 5b8600d0..fcad771b 100644
              '--skip-if-larger',
              '--quality',
 diff --git a/src/ocrmypdf/_exec/tesseract.py b/src/ocrmypdf/_exec/tesseract.py
-index fab92bb1..78b634a7 100644
+index 102bdab8..bfef4400 100644
 --- a/src/ocrmypdf/_exec/tesseract.py
 +++ b/src/ocrmypdf/_exec/tesseract.py
 @@ -95,7 +95,7 @@ class TesseractVersion(Version):
@@ -96,10 +96,10 @@ index fab92bb1..78b634a7 100644
          args.extend(['-l', '+'.join(langs)])
      if engine_mode is not None:
 diff --git a/src/ocrmypdf/_exec/unpaper.py b/src/ocrmypdf/_exec/unpaper.py
-index 493d9b3a..578c2dda 100644
+index d1165c46..7c732b15 100644
 --- a/src/ocrmypdf/_exec/unpaper.py
 +++ b/src/ocrmypdf/_exec/unpaper.py
-@@ -70,7 +70,7 @@ class UnpaperImageTooLargeError(Exception):
+@@ -48,7 +48,7 @@ class UnpaperImageTooLargeError(Exception):
  
  
  def version() -> Version:
@@ -108,7 +108,7 @@ index 493d9b3a..578c2dda 100644
  
  
  @contextmanager
-@@ -92,7 +92,7 @@ def _setup_unpaper_io(input_file: Path) -> Iterator[tuple[Path, Path, Path]]:
+@@ -70,7 +70,7 @@ def _setup_unpaper_io(input_file: Path) -> Iterator[tuple[Path, Path, Path]]:
  def run_unpaper(
      input_file: Path, output_file: Path, *, dpi: DecFloat, mode_args: list[str]
  ) -> None:
diff --git a/pkgs/development/python-modules/od/default.nix b/pkgs/development/python-modules/od/default.nix
index 510d042e7296c..1c3c8bf8ff4b1 100644
--- a/pkgs/development/python-modules/od/default.nix
+++ b/pkgs/development/python-modules/od/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, repeated-test
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  repeated-test,
 }:
 
 buildPythonPackage rec {
@@ -17,18 +18,14 @@ buildPythonPackage rec {
     hash = "sha256-uGkj2Z8mLg51IV+FOqwZl1hT7zVyjmD1CcY/VbH4tKk=";
   };
 
-  nativeCheckInputs = [
-    repeated-test
-  ];
+  nativeCheckInputs = [ repeated-test ];
 
-  pythonImportsCheck = [
-    "od"
-  ];
+  pythonImportsCheck = [ "od" ];
 
   meta = with lib; {
     description = "Shorthand syntax for building OrderedDicts";
     homepage = "https://github.com/epsy/od";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/oddsprout/default.nix b/pkgs/development/python-modules/oddsprout/default.nix
new file mode 100644
index 0000000000000..9aca78d9e063a
--- /dev/null
+++ b/pkgs/development/python-modules/oddsprout/default.nix
@@ -0,0 +1,34 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  dahlia,
+  ixia
+}:
+
+buildPythonPackage rec {
+  pname = "oddsprout";
+  version = "0.1.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "trag1c";
+    repo = "oddsprout";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-k5/mBoW4PxGUbkwaZyHgS3MGI4533V/nNoGqEg+VXpM=";
+  };
+
+  build-system = [ poetry-core ];
+  dependencies = [ dahlia ixia ];
+
+  pythonImportsCheck = [ "oddsprout" ];
+
+  meta = with lib; {
+    changelog = "https://github.com/trag1c/oddsprout/blob/${src.rev}/CHANGELOG.md";
+    description = "Generate random JSON with no schemas involved";
+    license = licenses.mit;
+    homepage = "https://trag1c.github.io/oddsprout";
+    maintainers = with maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/odfpy/default.nix b/pkgs/development/python-modules/odfpy/default.nix
index 9b9f44d211bcd..9d063ebe463a0 100644
--- a/pkgs/development/python-modules/odfpy/default.nix
+++ b/pkgs/development/python-modules/odfpy/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, defusedxml
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  defusedxml,
+  pytest,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/odp-amsterdam/default.nix b/pkgs/development/python-modules/odp-amsterdam/default.nix
index a9a2770efd6b2..abe1e5d1cba3e 100644
--- a/pkgs/development/python-modules/odp-amsterdam/default.nix
+++ b/pkgs/development/python-modules/odp-amsterdam/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonRelaxDepsHook
-, pythonOlder
-, pytest-asyncio
-, pytestCheckHook
-, pytz
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
+  pytest-asyncio,
+  pytestCheckHook,
+  pytz,
+  syrupy,
 }:
 
 buildPythonPackage rec {
   pname = "odp-amsterdam";
-  version = "6.0.1";
+  version = "6.0.2";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -22,7 +23,7 @@ buildPythonPackage rec {
     owner = "klaasnicolaas";
     repo = "python-odp-amsterdam";
     rev = "refs/tags/v${version}";
-    hash = "sha256-teLjiclkbjlG226gMUgqc2IUEWqKcSm6xIekw+AQPU4=";
+    hash = "sha256-veBccNxqhqBYKUC5pdjZ1IOWUYUqiNK5pJq1L+8UCxA=";
   };
 
   postPatch = ''
@@ -31,16 +32,13 @@ buildPythonPackage rec {
     sed -i '/addopts/d' pyproject.toml
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "pytz"
-  ];
+  pythonRelaxDeps = [ "pytz" ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     pytz
   ];
@@ -49,11 +47,10 @@ buildPythonPackage rec {
     aresponses
     pytest-asyncio
     pytestCheckHook
+    syrupy
   ];
 
-  pythonImportsCheck = [
-    "odp_amsterdam"
-  ];
+  pythonImportsCheck = [ "odp_amsterdam" ];
 
   meta = with lib; {
     description = "Python client for getting garage occupancy in Amsterdam";
diff --git a/pkgs/development/python-modules/oelint-parser/default.nix b/pkgs/development/python-modules/oelint-parser/default.nix
index 9fc4de88fb9f2..a8785e4008a37 100644
--- a/pkgs/development/python-modules/oelint-parser/default.nix
+++ b/pkgs/development/python-modules/oelint-parser/default.nix
@@ -1,40 +1,54 @@
-{ lib
-, nix-update-script
-, fetchPypi
-, buildPythonPackage
-, deprecated
-, regex
-, pip
+{
+  lib,
+  nix-update-script,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  deprecated,
+  regex,
+  pytest-cov-stub,
+  pytest-forked,
+  pytest-random-order,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "oelint-parser";
-  version = "3.5.0";
-  format = "setuptools";
+  version = "5.0.0";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit version;
-    pname = "oelint_parser";
-    hash = "sha256-MvLHi0/tMkWBARyIVm/cuMbS2euK37xvQUbkmOrUyVU=";
+  src = fetchFromGitHub {
+    owner = "priv-kweihmann";
+    repo = "oelint-parser";
+    rev = "refs/tags/${version}";
+    hash = "sha256-7LEjo/Z9mk2gx2vzDKz5cFR5bDTDgjIVVOquj0o/+0I=";
   };
 
-  buildInputs = [ pip ];
-  propagatedBuildInputs = [
-    deprecated
+  pythonRelaxDeps = [ "regex" ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     regex
+    deprecated
+  ];
+
+  nativeCheckInputs = [
+    pytest-cov-stub
+    pytest-forked
+    pytest-random-order
+    pytestCheckHook
   ];
-  pythonImportsCheck = [ "oelint_parser" ];
 
-  # Fail to run inside the code the build.
-  doCheck = false;
+  pythonImportsCheck = [ "oelint_parser" ];
 
   passthru.updateScript = nix-update-script { };
 
-  meta = with lib; {
+  meta = {
     description = "Alternative parser for bitbake recipes";
     homepage = "https://github.com/priv-kweihmann/oelint-parser";
     changelog = "https://github.com/priv-kweihmann/oelint-parser/releases/tag/${version}";
-    license = licenses.bsd2;
-    maintainers = with maintainers; [ otavio ];
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ otavio ];
   };
 }
diff --git a/pkgs/development/python-modules/oemthermostat/default.nix b/pkgs/development/python-modules/oemthermostat/default.nix
index f40e39f10bf63..154a3f7f1e6b3 100644
--- a/pkgs/development/python-modules/oemthermostat/default.nix
+++ b/pkgs/development/python-modules/oemthermostat/default.nix
@@ -1,45 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "oemthermostat";
   version = "1.1.1";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "Cadair";
     repo = "openenergymonitor_thermostat";
-    rev = "v${version}";
-    sha256 = "vrMw3/X8MtejO1WyUA1DOlfVCPTCPgcK5p3+OlTWcM4=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-vrMw3/X8MtejO1WyUA1DOlfVCPTCPgcK5p3+OlTWcM4=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  dependencies = [ requests ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "oemthermostat"
-  ];
+  pythonImportsCheck = [ "oemthermostat" ];
 
   meta = with lib; {
     description = "Python module to interact with OpenEnergyMonitor thermostats";
     homepage = "https://github.com/Cadair/openenergymonitor_thermostat";
+    changelog = "https://github.com/Cadair/openenergymonitor_thermostat/blob/v${version}/CHANGELOG.rst";
     license = licenses.bsd3;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/offtrac/default.nix b/pkgs/development/python-modules/offtrac/default.nix
index 51ce4210e5618..268346ce38d3d 100644
--- a/pkgs/development/python-modules/offtrac/default.nix
+++ b/pkgs/development/python-modules/offtrac/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -20,5 +21,4 @@ buildPythonPackage rec {
     description = "Trac xmlrpc library";
     license = licenses.gpl2;
   };
-
 }
diff --git a/pkgs/development/python-modules/ofxclient/default.nix b/pkgs/development/python-modules/ofxclient/default.nix
index c0c06b1ca91e5..f763c6f232949 100644
--- a/pkgs/development/python-modules/ofxclient/default.nix
+++ b/pkgs/development/python-modules/ofxclient/default.nix
@@ -1,5 +1,12 @@
-{ lib, buildPythonPackage, fetchPypi,
- ofxhome, ofxparse, beautifulsoup4, lxml, keyring
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  ofxhome,
+  ofxparse,
+  beautifulsoup4,
+  lxml,
+  keyring,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +26,13 @@ buildPythonPackage rec {
   # ImportError: No module named tests
   doCheck = false;
 
-  propagatedBuildInputs = [ ofxhome ofxparse beautifulsoup4 lxml keyring ];
+  propagatedBuildInputs = [
+    ofxhome
+    ofxparse
+    beautifulsoup4
+    lxml
+    keyring
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/captin411/ofxclient";
diff --git a/pkgs/development/python-modules/ofxhome/default.nix b/pkgs/development/python-modules/ofxhome/default.nix
index 09f901a30008e..0110cfdba10dd 100644
--- a/pkgs/development/python-modules/ofxhome/default.nix
+++ b/pkgs/development/python-modules/ofxhome/default.nix
@@ -1,23 +1,37 @@
-{ lib, buildPythonPackage, fetchPypi, nose }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   version = "0.3.3";
-  format = "setuptools";
   pname = "ofxhome";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1rpyfqr2q9pnin47rjd4qapl8ngk1m9jx36iqckhdhr8s8gla445";
+  src = fetchFromGitHub {
+    owner = "captin411";
+    repo = "ofxhome";
+    rev = "v${version}";
+    hash = "sha256-i16bE9iuafhAKco2jYfg5T5QCWFHdnYVztf1z2XbO9g=";
   };
 
-  buildInputs = [ nose ];
+  build-system = [ setuptools ];
 
-  # ImportError: No module named tests
-  doCheck = false;
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  meta = with lib; {
+  # These are helper functions that should not be called as tests
+  disabledTests = [
+    "testfile_name"
+    "testfile"
+  ];
+
+  meta = {
     homepage = "https://github.com/captin411/ofxhome";
     description = "ofxhome.com financial institution lookup REST client";
-    license = licenses.mit;
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ pyrox0 ];
   };
 }
diff --git a/pkgs/development/python-modules/ofxparse/default.nix b/pkgs/development/python-modules/ofxparse/default.nix
index c133db4b42654..6d1da80a8c04c 100644
--- a/pkgs/development/python-modules/ofxparse/default.nix
+++ b/pkgs/development/python-modules/ofxparse/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-, beautifulsoup4
-, lxml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  beautifulsoup4,
+  lxml,
 }:
 
 buildPythonPackage rec {
@@ -16,12 +17,15 @@ buildPythonPackage rec {
     sha256 = "19y4sp5l9jqiqzzlbqdfiab42qx7d84n4xm4s7jfq397666vcyh5";
   };
 
-  propagatedBuildInputs = [ six beautifulsoup4 lxml ];
+  propagatedBuildInputs = [
+    six
+    beautifulsoup4
+    lxml
+  ];
 
   meta = with lib; {
     homepage = "http://sites.google.com/site/ofxparse";
     description = "Tools for working with the OFX (Open Financial Exchange) file format";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/ofxtools/default.nix b/pkgs/development/python-modules/ofxtools/default.nix
index 67bb7ded1042d..cbf5d5e3c0b2b 100644
--- a/pkgs/development/python-modules/ofxtools/default.nix
+++ b/pkgs/development/python-modules/ofxtools/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nose
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,11 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-NsImnD+erhpakQnl1neuHfSKiV6ipNBMPGKMDM0gwWc=";
   };
 
-  nativeCheckInputs = [ nose ];
+  nativeCheckInputs = [ pytestCheckHook ];
   # override $HOME directory:
   #   error: [Errno 13] Permission denied: '/homeless-shelter'
-  checkPhase = ''
-    HOME=$TMPDIR nosetests tests/*.py
+  preCheck = ''
+    export HOME=$(mktemp -d)
   '';
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/okonomiyaki/default.nix b/pkgs/development/python-modules/okonomiyaki/default.nix
index 4c51df76f14e6..d8b909b9a5710 100644
--- a/pkgs/development/python-modules/okonomiyaki/default.nix
+++ b/pkgs/development/python-modules/okonomiyaki/default.nix
@@ -1,16 +1,18 @@
-{ buildPythonPackage
-, stdenv
-, fetchFromGitHub
-, lib
-, attrs
-, distro
-, jsonschema
-, six
-, zipfile2
-, hypothesis
-, mock
-, packaging
-, testfixtures
+{
+  buildPythonPackage,
+  stdenv,
+  fetchFromGitHub,
+  lib,
+  attrs,
+  distro,
+  jsonschema,
+  six,
+  zipfile2,
+  hypothesis,
+  mock,
+  packaging,
+  testfixtures,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
@@ -25,24 +27,38 @@ buildPythonPackage rec {
     hash = "sha256-MEll1H7l41m8uz2/WK/Ilm7Dubg0uqYwe+ZgakO1aXQ=";
   };
 
-  propagatedBuildInputs = [ distro attrs jsonschema six zipfile2 ];
+  propagatedBuildInputs = [
+    distro
+    attrs
+    jsonschema
+    six
+    zipfile2
+  ];
 
-  preCheck = ''
-    substituteInPlace okonomiyaki/runtimes/tests/test_runtime.py \
-      --replace 'runtime_info = PythonRuntime.from_running_python()' 'raise unittest.SkipTest() #'
-   '' + lib.optionalString stdenv.isDarwin ''
-    substituteInPlace okonomiyaki/platforms/tests/test_pep425.py \
-      --replace 'self.assertEqual(platform_tag, self.tag.platform)' 'raise unittest.SkipTest()'
-  '';
+  preCheck =
+    ''
+      substituteInPlace okonomiyaki/runtimes/tests/test_runtime.py \
+        --replace 'runtime_info = PythonRuntime.from_running_python()' 'raise unittest.SkipTest() #'
+    ''
+    + lib.optionalString stdenv.hostPlatform.isDarwin ''
+      substituteInPlace okonomiyaki/platforms/tests/test_pep425.py \
+        --replace 'self.assertEqual(platform_tag, self.tag.platform)' 'raise unittest.SkipTest()'
+    '';
 
-  checkInputs = [ hypothesis mock packaging testfixtures ];
+  checkInputs = [
+    hypothesis
+    mock
+    packaging
+    testfixtures
+  ];
 
   pythonImportsCheck = [ "okonomiyaki" ];
 
   meta = with lib; {
     homepage = "https://github.com/enthought/okonomiyaki";
-    description = "An experimental library aimed at consolidating a lot of low-level code used for Enthought's eggs";
+    description = "Experimental library aimed at consolidating a lot of low-level code used for Enthought's eggs";
     maintainers = with maintainers; [ genericnerdyusername ];
     license = licenses.bsd3;
+    broken = pythonAtLeast "3.12"; # multiple tests are failing
   };
 }
diff --git a/pkgs/development/python-modules/okta/default.nix b/pkgs/development/python-modules/okta/default.nix
index 13218b0d8f08b..42d459d562305 100644
--- a/pkgs/development/python-modules/okta/default.nix
+++ b/pkgs/development/python-modules/okta/default.nix
@@ -1,44 +1,48 @@
-{ lib
-, stdenv
-, aenum
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, flatdict
-, pycryptodome
-, pycryptodomex
-, pydash
-, pyfakefs
-, pytest-asyncio
-, pytest-mock
-, pytest-recording
-, pytestCheckHook
-, python-jose
-, pythonOlder
-, pyyaml
-, xmltodict
-, yarl
+{
+  lib,
+  aenum,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  flatdict,
+  jwcrypto,
+  pycryptodome,
+  pycryptodomex,
+  pydash,
+  pyfakefs,
+  pyjwt,
+  pytest-asyncio,
+  pytest-mock,
+  pytest-recording,
+  pytestCheckHook,
+  python-jose,
+  pythonOlder,
+  pyyaml,
+  xmltodict,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "okta";
-  version = "2.9.5";
+  version = "2.9.8";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-qMcO0TTbMPjc+r2IOlwJqbaSOztat9MmYWH4kgy9vwA=";
+    hash = "sha256-RDnRiPsc4p5yI9jFzOtRI+r00tvska8x4uCSjl+cWvo=";
   };
 
   propagatedBuildInputs = [
     aenum
     aiohttp
     flatdict
+    jwcrypto
     pycryptodome
     pycryptodomex
     pydash
+    pyjwt
     python-jose
     pyyaml
     xmltodict
@@ -53,9 +57,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "tests/"
-  ];
+  pytestFlagsArray = [ "tests/" ];
 
   disabledTests = [
     "test_client_raise_exception"
diff --git a/pkgs/development/python-modules/oldest-supported-numpy/default.nix b/pkgs/development/python-modules/oldest-supported-numpy/default.nix
index a0ec902984e1b..521094a8e4c07 100644
--- a/pkgs/development/python-modules/oldest-supported-numpy/default.nix
+++ b/pkgs/development/python-modules/oldest-supported-numpy/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
       --replace 'numpy==' 'numpy>='
   '';
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   # package has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/olefile/default.nix b/pkgs/development/python-modules/olefile/default.nix
index f0df020d39c33..adf8784a501e7 100644
--- a/pkgs/development/python-modules/olefile/default.nix
+++ b/pkgs/development/python-modules/olefile/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -12,23 +13,22 @@ buildPythonPackage rec {
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "sha256-WZODOBoL89+9kyygymUVrNF07UiHDL9/7hI9aYwZLBw=";
+    hash = "sha256-WZODOBoL89+9kyygymUVrNF07UiHDL9/7hI9aYwZLBw=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "olefile"
-  ];
+  pythonImportsCheck = [ "olefile" ];
 
   meta = with lib; {
     description = "Python package to parse, read and write Microsoft OLE2 files";
     homepage = "https://www.decalage.info/python/olefileio";
     # BSD2 + reference to Pillow
     # http://olefile.readthedocs.io/en/latest/License.html
-    license = with licenses; [ bsd2 /* and */ hpnd ];
+    license = with licenses; [
+      bsd2 # and
+      hpnd
+    ];
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/oletools/default.nix b/pkgs/development/python-modules/oletools/default.nix
index d7df0523eac50..0858e4bc7b90f 100644
--- a/pkgs/development/python-modules/oletools/default.nix
+++ b/pkgs/development/python-modules/oletools/default.nix
@@ -1,20 +1,20 @@
-{ lib
-, buildPythonPackage
-, colorclass
-, easygui
-, fetchFromGitHub
-, msoffcrypto-tool
-, olefile
-, pcodedmp
-, pyparsing
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  colorclass,
+  easygui,
+  fetchFromGitHub,
+  msoffcrypto-tool,
+  olefile,
+  pcodedmp,
+  pyparsing,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "oletools";
-  version = "0.60.1";
+  version = "0.60.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "decalage2";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-H3oL8sk2r267wV0hoHOq9r9DY2Atxs+hZUVb6tmHy0w=";
+    hash = "sha256-ons1VeWStxUZw2CPpnX9p5I3Q7cMhi34JU8TeuUDt+Y=";
   };
 
   propagatedBuildInputs = [
@@ -35,9 +35,7 @@ buildPythonPackage rec {
     pyparsing
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace setup.py \
@@ -50,14 +48,15 @@ buildPythonPackage rec {
     "test_xlm"
   ];
 
-  pythonImportsCheck = [
-    "oletools"
-  ];
+  pythonImportsCheck = [ "oletools" ];
 
   meta = with lib; {
     description = "Module to analyze MS OLE2 files and MS Office documents";
     homepage = "https://github.com/decalage2/oletools";
-    license = with licenses; [ bsd2 /* and */ mit ];
+    license = with licenses; [
+      bsd2 # and
+      mit
+    ];
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/ollama/default.nix b/pkgs/development/python-modules/ollama/default.nix
index 4d1999a8aae87..4f5266494e5cb 100644
--- a/pkgs/development/python-modules/ollama/default.nix
+++ b/pkgs/development/python-modules/ollama/default.nix
@@ -9,12 +9,11 @@
   pytest-httpserver,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
 }:
 
 buildPythonPackage rec {
   pname = "ollama";
-  version = "0.1.9";
+  version = "0.3.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -23,7 +22,7 @@ buildPythonPackage rec {
     owner = "ollama";
     repo = "ollama-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ilJgRMzCn/T+6Lr7IuvaCnKhN5cyyEOWuV0N1FtR+Yg=";
+    hash = "sha256-27OJwPvHBxCdaiHk8EQ2s1OeBzgsrzp1MjgKHNgvz+A=";
   };
 
   postPatch = ''
@@ -35,7 +34,6 @@ buildPythonPackage rec {
 
   build-system = [ poetry-core ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [ httpx ];
 
diff --git a/pkgs/development/python-modules/ome-zarr/default.nix b/pkgs/development/python-modules/ome-zarr/default.nix
index 0412a0f807189..297d35fb0deb4 100644
--- a/pkgs/development/python-modules/ome-zarr/default.nix
+++ b/pkgs/development/python-modules/ome-zarr/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pytestCheckHook
-, aiohttp
-, dask
-, distributed
-, fsspec
-, numpy
-, requests
-, scikit-image
-, toolz
-, zarr
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pytestCheckHook,
+  aiohttp,
+  dask,
+  distributed,
+  fsspec,
+  numpy,
+  requests,
+  scikit-image,
+  toolz,
+  zarr,
 }:
 
 buildPythonPackage rec {
   pname = "ome-zarr";
-  version = "0.8.3";
+  version = "0.9.0";
   format = "setuptools";
   disabled = pythonOlder "3.6";
 
@@ -24,7 +25,7 @@ buildPythonPackage rec {
     owner = "ome";
     repo = "ome-zarr-py";
     rev = "refs/tags/v${version}";
-    hash = "sha256-JuNXVse/n/lFbNaLwMcir8NBHiRxcbYvtbxePwI6YoY=";
+    hash = "sha256-YOG9+ONf2OnkSZBL/Vb8Inebx4XDSGJb2fqypaWebhY=";
   };
 
   propagatedBuildInputs = [
@@ -39,15 +40,34 @@ buildPythonPackage rec {
     toolz
   ] ++ fsspec.passthru.optional-dependencies.s3;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # attempts to access network
     "test_s3_info"
   ];
 
+  pytestFlagsArray = [
+    # Fail with RecursionError
+    # https://github.com/ome/ome-zarr-py/issues/352
+    "--deselect=tests/test_cli.py::TestCli::test_astronaut_download"
+    "--deselect=tests/test_cli.py::TestCli::test_astronaut_info"
+    "--deselect=tests/test_cli.py::TestCli::test_coins_info"
+    "--deselect=tests/test_emitter.py::test_close"
+    "--deselect=tests/test_emitter.py::test_create_wrong_encoding"
+    "--deselect=tests/test_node.py::TestNode::test_image"
+    "--deselect=tests/test_node.py::TestNode::test_label"
+    "--deselect=tests/test_node.py::TestNode::test_labels"
+    "--deselect=tests/test_ome_zarr.py::TestOmeZarr::test_download"
+    "--deselect=tests/test_ome_zarr.py::TestOmeZarr::test_info"
+    "--deselect=tests/test_reader.py::TestReader::test_image"
+    "--deselect=tests/test_reader.py::TestReader::test_label"
+    "--deselect=tests/test_reader.py::TestReader::test_labels"
+    "--deselect=tests/test_starting_points.py::TestStartingPoints::test_label"
+    "--deselect=tests/test_starting_points.py::TestStartingPoints::test_labels"
+    "--deselect=tests/test_starting_points.py::TestStartingPoints::test_top_level"
+  ];
+
   pythonImportsCheck = [
     "ome_zarr"
     "ome_zarr.cli"
@@ -62,7 +82,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "Implementation of next-generation file format (NGFF) specifications for storing bioimaging data in the cloud.";
+    description = "Implementation of next-generation file format (NGFF) specifications for storing bioimaging data in the cloud";
     homepage = "https://pypi.org/project/ome-zarr";
     changelog = "https://github.com/ome/ome-zarr-py/blob/v${version}/CHANGELOG.md";
     license = licenses.bsd2;
diff --git a/pkgs/development/python-modules/omegaconf/default.nix b/pkgs/development/python-modules/omegaconf/default.nix
index 445d15f439401..4386f2170c2f8 100644
--- a/pkgs/development/python-modules/omegaconf/default.nix
+++ b/pkgs/development/python-modules/omegaconf/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, antlr4
-, antlr4-python3-runtime
-, attrs
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, jre_minimal
-, pydevd
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, substituteAll
+{
+  lib,
+  antlr4,
+  antlr4-python3-runtime,
+  attrs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  jre_minimal,
+  pydevd,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  substituteAll,
 }:
 
 buildPythonPackage rec {
@@ -46,13 +47,9 @@ buildPythonPackage rec {
     sed -i 's/antlr4-python3-runtime==.*/antlr4-python3-runtime/' requirements/base.txt
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  nativeBuildInputs = [
-    jre_minimal
-  ];
+  nativeBuildInputs = [ jre_minimal ];
 
   dependencies = [
     antlr4-python3-runtime
@@ -66,18 +63,14 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "omegaconf"
-  ];
+  pythonImportsCheck = [ "omegaconf" ];
 
   pytestFlagsArray = [
     "-W"
     "ignore::DeprecationWarning"
   ];
 
-  disabledTests = [
-    "test_eq"
-  ];
+  disabledTests = [ "test_eq" ];
 
   meta = with lib; {
     description = "Framework for configuring complex applications";
diff --git a/pkgs/development/python-modules/omemo-dr/default.nix b/pkgs/development/python-modules/omemo-dr/default.nix
index 03850fc8cca70..83e221c729c61 100644
--- a/pkgs/development/python-modules/omemo-dr/default.nix
+++ b/pkgs/development/python-modules/omemo-dr/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchPypi
-, protobuf
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  protobuf,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,28 +21,22 @@ buildPythonPackage rec {
     hash = "sha256-KoqMdyMdc5Sb3TdSeNTVomElK9ruUstiQayyUcIC02E=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     cryptography
     protobuf
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "omemo_dr"
-  ];
+  pythonImportsCheck = [ "omemo_dr" ];
 
   meta = with lib; {
     description = "OMEMO Double Ratchet";
     homepage = "https://dev.gajim.org/gajim/omemo-dr/";
     changelog = "https://dev.gajim.org/gajim/omemo-dr/-/blob/v${version}/CHANGELOG.md";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/omnikinverter/default.nix b/pkgs/development/python-modules/omnikinverter/default.nix
index 4d9a2c97c5663..3c4ba18ba9956 100644
--- a/pkgs/development/python-modules/omnikinverter/default.nix
+++ b/pkgs/development/python-modules/omnikinverter/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,7 @@ buildPythonPackage rec {
       --replace "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -48,9 +47,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "omnikinverter"
-  ];
+  pythonImportsCheck = [ "omnikinverter" ];
 
   meta = with lib; {
     description = "Python module for the Omnik Inverter";
diff --git a/pkgs/development/python-modules/omnilogic/default.nix b/pkgs/development/python-modules/omnilogic/default.nix
index 343b65522cae4..4e8f8234f4d14 100644
--- a/pkgs/development/python-modules/omnilogic/default.nix
+++ b/pkgs/development/python-modules/omnilogic/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, xmltodict
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
+{
+  lib,
+  aiohttp,
+  xmltodict,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "omnilogic"
-  ];
+  pythonImportsCheck = [ "omnilogic" ];
 
   meta = with lib; {
     description = "Python interface for the Hayward Omnilogic pool control system";
diff --git a/pkgs/development/python-modules/omniorbpy/default.nix b/pkgs/development/python-modules/omniorbpy/default.nix
new file mode 100644
index 0000000000000..c541ddd2ba7de
--- /dev/null
+++ b/pkgs/development/python-modules/omniorbpy/default.nix
@@ -0,0 +1,58 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchurl,
+  omniorb,
+  pkg-config,
+  python,
+}:
+
+buildPythonPackage rec {
+  pname = "omniorbpy";
+  version = "4.3.2";
+  pyproject = false;
+
+  src = fetchurl {
+    url = "http://downloads.sourceforge.net/omniorb/omniORBpy-${version}.tar.bz2";
+    hash = "sha256-y1cX1BKhAbr0MPWYysfWkjGITa5DctjirfPd7rxffrs=";
+  };
+
+  outputs = [
+    "out"
+    "dev"
+  ];
+
+  nativeBuildInputs = [ pkg-config ];
+
+  propagatedBuildInputs = [ omniorb ];
+
+  configureFlags = [
+    "--with-omniorb=${omniorb}"
+    "PYTHON_PREFIX=$out"
+    "PYTHON=${python.interpreter}"
+  ];
+
+  # Transform omniidl_be into a PEP420 namespace
+  postInstall = ''
+    rm $out/${python.sitePackages}/omniidl_be/__init__.py
+    rm $out/${python.sitePackages}/omniidl_be/__pycache__/__init__.*.pyc
+  '';
+
+  # Ensure both python & cxx backends are available
+  pythonImportsCheck = [
+    "omniidl_be.cxx"
+    "omniidl_be.python"
+    "omniORB"
+  ];
+
+  meta = with lib; {
+    description = "Python backend for omniorb";
+    homepage = "http://omniorb.sourceforge.net";
+    license = with licenses; [
+      gpl2Plus
+      lgpl21Plus
+    ];
+    maintainers = with maintainers; [ nim65s ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/development/python-modules/omorfi/default.nix b/pkgs/development/python-modules/omorfi/default.nix
index 55fe7a0454aec..ab78e6eda1205 100644
--- a/pkgs/development/python-modules/omorfi/default.nix
+++ b/pkgs/development/python-modules/omorfi/default.nix
@@ -1,8 +1,8 @@
-{ buildPythonPackage
-, pkgs
-, lib
-, stdenv
-, hfst
+{
+  buildPythonPackage,
+  pkgs,
+  lib,
+  hfst,
 }:
 
 buildPythonPackage rec {
@@ -12,9 +12,7 @@ buildPythonPackage rec {
 
   sourceRoot = "${src.name}/src/python";
 
-  propagatedBuildInputs = [
-    hfst
-  ];
+  propagatedBuildInputs = [ hfst ];
 
   # Fixes some improper import paths
   patches = [ ./importfix.patch ];
@@ -27,7 +25,5 @@ buildPythonPackage rec {
     homepage = "https://github.com/flammie/omorfi";
     license = licenses.gpl3;
     maintainers = with maintainers; [ lurkki ];
-    # Ofborg build error (hfst not found?)
-    broken = stdenv.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/omrdatasettools/default.nix b/pkgs/development/python-modules/omrdatasettools/default.nix
index c210349ad631d..b20189e3e9726 100644
--- a/pkgs/development/python-modules/omrdatasettools/default.nix
+++ b/pkgs/development/python-modules/omrdatasettools/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, h5py
-, ipython
-, lxml
-, mung
-, muscima
-, numpy
-, pillow
-, pytestCheckHook
-, scikit-image
-, sphinx-rtd-theme
-, sympy
-, pandas
-, pyhamcrest
-, tqdm
-, twine
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  h5py,
+  ipython,
+  lxml,
+  mung,
+  muscima,
+  numpy,
+  pillow,
+  pytestCheckHook,
+  scikit-image,
+  sphinx-rtd-theme,
+  sympy,
+  pandas,
+  pyhamcrest,
+  tqdm,
+  twine,
 }:
 
 buildPythonPackage rec {
@@ -25,7 +26,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-kUUcbti29uDnSEvCubMAUnptlaZGpEsW2IBGSAGnGyQ=";
+    hash = "sha256-kUUcbti29uDnSEvCubMAUnptlaZGpEsW2IBGSAGnGyQ=";
   };
 
   propagatedBuildInputs = [
@@ -45,9 +46,7 @@ buildPythonPackage rec {
     ipython
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # The download tests require internet access
diff --git a/pkgs/development/python-modules/oncalendar/default.nix b/pkgs/development/python-modules/oncalendar/default.nix
index f37261a058bda..85d163a77eefa 100644
--- a/pkgs/development/python-modules/oncalendar/default.nix
+++ b/pkgs/development/python-modules/oncalendar/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "oncalendar" ];
 
   meta = with lib; {
-    description = "A systemd OnCalendar expression parser and evaluator";
+    description = "Systemd OnCalendar expression parser and evaluator";
     homepage = "https://github.com/cuu508/oncalendar";
     license = licenses.bsd3;
     maintainers = with maintainers; [ phaer ];
diff --git a/pkgs/development/python-modules/onecache/default.nix b/pkgs/development/python-modules/onecache/default.nix
new file mode 100644
index 0000000000000..fb1aa5c654843
--- /dev/null
+++ b/pkgs/development/python-modules/onecache/default.nix
@@ -0,0 +1,49 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pytest-cov-stub,
+  pytest-asyncio,
+  stdenv,
+}:
+
+buildPythonPackage rec {
+  pname = "onecache";
+  version = "0.7.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "sonic182";
+    repo = "onecache";
+    rev = "refs/tags/${version}";
+    hash = "sha256-go/3HntSLzzTmHS9CxGPHT6mwXl+6LuWFmkGygGIjqU=";
+  };
+
+  build-system = [ poetry-core ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-cov-stub
+    pytest-asyncio
+  ];
+
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
+    # test fails due to unknown reason on darwin
+    "test_lru_and_ttl_refresh"
+  ];
+
+  pythonImportsCheck = [ "onecache" ];
+
+  meta = {
+    changelog = "https://github.com/sonic182/onecache/blob/${version}/CHANGELOG.md";
+    description = "Python LRU and TTL cache for sync and async code";
+    license = lib.licenses.mit;
+    homepage = "https://github.com/sonic182/onecache";
+    maintainers = with lib.maintainers; [ geraldog ];
+  };
+}
diff --git a/pkgs/development/python-modules/onetimepad/default.nix b/pkgs/development/python-modules/onetimepad/default.nix
index a1baab63934a3..affa6182b7d70 100644
--- a/pkgs/development/python-modules/onetimepad/default.nix
+++ b/pkgs/development/python-modules/onetimepad/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "onetimepad" ];
 
   meta = {
-    description = "A hacky implementation of one-time pad";
+    description = "Hacky implementation of one-time pad";
     mainProgram = "onetimepad";
     homepage = "https://jailuthra.in/onetimepad";
     license = lib.licenses.mit;
diff --git a/pkgs/development/python-modules/onigurumacffi/default.nix b/pkgs/development/python-modules/onigurumacffi/default.nix
index 5bb8abcff64d5..2d2faef572fd2 100644
--- a/pkgs/development/python-modules/onigurumacffi/default.nix
+++ b/pkgs/development/python-modules/onigurumacffi/default.nix
@@ -1,5 +1,12 @@
-{ lib, python3Packages, fetchPypi, oniguruma }:
-python3Packages.buildPythonPackage rec {
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  oniguruma,
+  setuptools,
+  cffi,
+}:
+buildPythonPackage rec {
   pname = "onigurumacffi";
   version = "1.3.0";
   format = "pyproject";
@@ -9,7 +16,7 @@ python3Packages.buildPythonPackage rec {
     hash = "sha256-d0XNxWCWrOyIofOwhmCiKwnGWe040/WdtsHK12qXa+8=";
   };
 
-  buildInputs = with python3Packages; [
+  buildInputs = [
     oniguruma
     setuptools
     cffi
diff --git a/pkgs/development/python-modules/onkyo-eiscp/default.nix b/pkgs/development/python-modules/onkyo-eiscp/default.nix
index 2a54df8e5e8c8..ab82ef0b7bdfb 100644
--- a/pkgs/development/python-modules/onkyo-eiscp/default.nix
+++ b/pkgs/development/python-modules/onkyo-eiscp/default.nix
@@ -1,5 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi
-, docopt, netifaces }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  docopt,
+  netifaces,
+}:
 
 buildPythonPackage rec {
   pname = "onkyo-eiscp";
@@ -11,7 +16,10 @@ buildPythonPackage rec {
     sha256 = "761abb16c654a1136763b927d094174d41f282809e44ea32cd47e199dd79d9c9";
   };
 
-  propagatedBuildInputs = [ docopt netifaces ];
+  propagatedBuildInputs = [
+    docopt
+    netifaces
+  ];
 
   meta = with lib; {
     description = "Control Onkyo receivers over ethernet";
diff --git a/pkgs/development/python-modules/online-judge-api-client/default.nix b/pkgs/development/python-modules/online-judge-api-client/default.nix
index 8c17aed69179b..cc346e19231d2 100644
--- a/pkgs/development/python-modules/online-judge-api-client/default.nix
+++ b/pkgs/development/python-modules/online-judge-api-client/default.nix
@@ -1,24 +1,32 @@
-{ lib
-, appdirs
-, beautifulsoup4
-, buildPythonPackage
-, colorlog
-, fetchFromGitHub
-, git
-, jsonschema
-, lxml
-, markdown
-, python
-, requests
-, substituteAll
-, toml
+{
+  lib,
+  appdirs,
+  beautifulsoup4,
+  buildPythonPackage,
+  colorlog,
+  fetchFromGitHub,
+  git,
+  jsonschema,
+  lxml,
+  markdown,
+  python,
+  requests,
+  toml,
 }:
 
 let
   # NOTE This is needed to download & run another Python program internally in
   #      order to generate test cases for library-checker problems.
-  pythonEnv = python.withPackages (ps: with ps; [ colorlog jinja2 markdown toml ]);
-in buildPythonPackage rec {
+  pythonEnv = python.withPackages (
+    ps: with ps; [
+      colorlog
+      jinja2
+      markdown
+      toml
+    ]
+  );
+in
+buildPythonPackage rec {
   pname = "online-judge-api-client";
   version = "10.10.1";
   format = "setuptools";
@@ -50,7 +58,10 @@ in buildPythonPackage rec {
   # Requires internet access
   doCheck = false;
 
-  pythonImportsCheck = [ "onlinejudge" "onlinejudge_api" ];
+  pythonImportsCheck = [
+    "onlinejudge"
+    "onlinejudge_api"
+  ];
 
   meta = with lib; {
     description = "API client to develop tools for competitive programming";
diff --git a/pkgs/development/python-modules/online-judge-tools/default.nix b/pkgs/development/python-modules/online-judge-tools/default.nix
index a86b411452376..3b24ba31d3560 100644
--- a/pkgs/development/python-modules/online-judge-tools/default.nix
+++ b/pkgs/development/python-modules/online-judge-tools/default.nix
@@ -1,30 +1,45 @@
-{ lib
-, buildPythonPackage
-, colorama
-, fetchFromGitHub
-, online-judge-api-client
-, requests
+{
+  lib,
+  buildPythonPackage,
+  colorama,
+  fetchFromGitHub,
+  online-judge-api-client,
+  packaging,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "online-judge-tools";
-  version = "11.5.1";
-  format = "setuptools";
+  version = "12.0.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "online-judge-tools";
     repo = "oj";
-    rev = "v${version}";
-    sha256 = "0zkzmmjgjb6lyrzq1ip54cpnp7al9a7mcyjyi5vx58bvnx3q0c6m";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-m6V4Sq3yU/KPnbpA0oCLI/qaSrAPA6TutcBL5Crb/Cc=";
   };
 
-  propagatedBuildInputs = [ colorama online-judge-api-client requests ];
+  build-system = [ setuptools ];
+
+  dependencies = [
+    colorama
+    online-judge-api-client
+    packaging
+    requests
+  ];
+
+  pythonImportsCheck = [
+    "onlinejudge"
+    "onlinejudge_command"
+  ];
 
   # Requires internet access
   doCheck = false;
 
   meta = with lib; {
-    description = "Tools for various online judges. Download sample cases, generate additional test cases, test your code, and submit it.";
+    description = "Tools for various online judges. Download sample cases, generate additional test cases, test your code, and submit it";
     mainProgram = "oj";
     homepage = "https://github.com/online-judge-tools/oj";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/onlykey-solo-python/default.nix b/pkgs/development/python-modules/onlykey-solo-python/default.nix
index 23e11bc7c3072..53831b63c40cd 100644
--- a/pkgs/development/python-modules/onlykey-solo-python/default.nix
+++ b/pkgs/development/python-modules/onlykey-solo-python/default.nix
@@ -1,14 +1,15 @@
-{ buildPythonPackage
-, click
-, ecdsa
-, fetchpatch
-, fetchPypi
-, fido2
-, intelhex
-, lib
-, pyserial
-, pyusb
-, requests
+{
+  buildPythonPackage,
+  click,
+  ecdsa,
+  fetchpatch,
+  fetchPypi,
+  fido2,
+  intelhex,
+  lib,
+  pyserial,
+  pyusb,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -34,7 +35,15 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [ click ecdsa fido2 intelhex pyserial pyusb requests ];
+  propagatedBuildInputs = [
+    click
+    ecdsa
+    fido2
+    intelhex
+    pyserial
+    pyusb
+    requests
+  ];
 
   # no tests
   doCheck = false;
@@ -48,4 +57,3 @@ buildPythonPackage rec {
     license = licenses.asl20;
   };
 }
-
diff --git a/pkgs/development/python-modules/onnx/1.15.0-CVE-2024-27318.patch b/pkgs/development/python-modules/onnx/1.15.0-CVE-2024-27318.patch
deleted file mode 100644
index 3b95d1fc588c9..0000000000000
--- a/pkgs/development/python-modules/onnx/1.15.0-CVE-2024-27318.patch
+++ /dev/null
@@ -1,360 +0,0 @@
-Based on upstream 66b7fb630903fdcf3e83b6b6d56d82e904264a20, adjusted to
-apply to 1.15.0 & avoid implicit inclusion of changes from other
-intermediate commits
-
-diff --git a/onnx/checker.cc b/onnx/checker.cc
-index fac56f56..c9fda9b2 100644
---- a/onnx/checker.cc
-+++ b/onnx/checker.cc
-@@ -13,7 +13,6 @@
- #include <vector>
- 
- #include "onnx/common/file_utils.h"
--#include "onnx/common/path.h"
- #include "onnx/defs/schema.h"
- #include "onnx/defs/tensor_proto_util.h"
- #include "onnx/proto_utils.h"
-@@ -135,85 +134,7 @@ void check_tensor(const TensorProto& tensor, const CheckerContext& ctx) {
-     for (const StringStringEntryProto& entry : tensor.external_data()) {
-       if (entry.has_key() && entry.has_value() && entry.key() == "location") {
-         has_location = true;
--#ifdef _WIN32
--        auto file_path = std::filesystem::path(utf8str_to_wstring(entry.value()));
--        if (file_path.is_absolute()) {
--          fail_check(
--              "Location of external TensorProto ( tensor name: ",
--              tensor.name(),
--              ") should be a relative path, but it is an absolute path: ",
--              entry.value());
--        }
--        auto relative_path = file_path.lexically_normal().make_preferred().wstring();
--        // Check that normalized relative path contains ".." on Windows.
--        if (relative_path.find(L"..", 0) != std::string::npos) {
--          fail_check(
--              "Data of TensorProto ( tensor name: ",
--              tensor.name(),
--              ") should be file inside the ",
--              ctx.get_model_dir(),
--              ", but the '",
--              entry.value(),
--              "' points outside the directory");
--        }
--        std::wstring data_path = path_join(utf8str_to_wstring(ctx.get_model_dir()), relative_path);
--        struct _stat64 buff;
--        if (_wstat64(data_path.c_str(), &buff) != 0) {
--          fail_check(
--              "Data of TensorProto ( tensor name: ",
--              tensor.name(),
--              ") should be stored in ",
--              entry.value(),
--              ", but it doesn't exist or is not accessible.");
--        }
--#else // POSIX
--        if (entry.value().empty()) {
--          fail_check("Location of external TensorProto ( tensor name: ", tensor.name(), ") should not be empty.");
--        } else if (entry.value()[0] == '/') {
--          fail_check(
--              "Location of external TensorProto ( tensor name: ",
--              tensor.name(),
--              ") should be a relative path, but it is an absolute path: ",
--              entry.value());
--        }
--        std::string relative_path = clean_relative_path(entry.value());
--        // Check that normalized relative path contains ".." on POSIX
--        if (relative_path.find("..", 0) != std::string::npos) {
--          fail_check(
--              "Data of TensorProto ( tensor name: ",
--              tensor.name(),
--              ") should be file inside the ",
--              ctx.get_model_dir(),
--              ", but the '",
--              entry.value(),
--              "' points outside the directory");
--        }
--        std::string data_path = path_join(ctx.get_model_dir(), relative_path);
--        // use stat64 to check whether the file exists
--#if defined(__APPLE__) || defined(__wasm__) || !defined(__GLIBC__)
--        struct stat buffer; // APPLE, wasm and non-glic stdlibs do not have stat64
--        if (stat((data_path).c_str(), &buffer) != 0) {
--#else
--        struct stat64 buffer; // All POSIX under glibc except APPLE and wasm have stat64
--        if (stat64((data_path).c_str(), &buffer) != 0) {
--#endif
--          fail_check(
--              "Data of TensorProto ( tensor name: ",
--              tensor.name(),
--              ") should be stored in ",
--              data_path,
--              ", but it doesn't exist or is not accessible.");
--        }
--        // Do not allow symlinks or directories.
--        if (!S_ISREG(buffer.st_mode)) {
--          fail_check(
--              "Data of TensorProto ( tensor name: ",
--              tensor.name(),
--              ") should be stored in ",
--              data_path,
--              ", but it is not regular file.");
--        }
--#endif
-+        resolve_external_data_location(ctx.get_model_dir(), entry.value(), tensor.name());
-       }
-     }
-     if (!has_location) {
-@@ -1054,6 +975,93 @@ void check_model(const ModelProto& model, bool full_check, bool skip_opset_compa
-   }
- }
- 
-+std::string resolve_external_data_location(
-+    const std::string& base_dir,
-+    const std::string& location,
-+    const std::string& tensor_name) {
-+#ifdef _WIN32
-+  auto file_path = std::filesystem::path(utf8str_to_wstring(location));
-+  if (file_path.is_absolute()) {
-+    fail_check(
-+        "Location of external TensorProto ( tensor name: ",
-+        tensor_name,
-+        ") should be a relative path, but it is an absolute path: ",
-+        location);
-+  }
-+  auto relative_path = file_path.lexically_normal().make_preferred().wstring();
-+  // Check that normalized relative path contains ".." on Windows.
-+  if (relative_path.find(L"..", 0) != std::string::npos) {
-+    fail_check(
-+        "Data of TensorProto ( tensor name: ",
-+        tensor_name,
-+        ") should be file inside the ",
-+        base_dir,
-+        ", but the '",
-+        location,
-+        "' points outside the directory");
-+  }
-+  std::wstring data_path = path_join(utf8str_to_wstring(base_dir), relative_path);
-+  struct _stat64 buff;
-+  if (_wstat64(data_path.c_str(), &buff) != 0) {
-+    fail_check(
-+        "Data of TensorProto ( tensor name: ",
-+        tensor_name,
-+        ") should be stored in ",
-+        location,
-+        ", but it doesn't exist or is not accessible.");
-+  }
-+  return wstring_to_utf8str(data_path);
-+#else // POSIX
-+  if (location.empty()) {
-+    fail_check("Location of external TensorProto ( tensor name: ", tensor_name, ") should not be empty.");
-+  } else if (location[0] == '/') {
-+    fail_check(
-+        "Location of external TensorProto ( tensor name: ",
-+        tensor_name,
-+        ") should be a relative path, but it is an absolute path: ",
-+        location);
-+  }
-+  std::string relative_path = clean_relative_path(location);
-+  // Check that normalized relative path contains ".." on POSIX
-+  if (relative_path.find("..", 0) != std::string::npos) {
-+    fail_check(
-+        "Data of TensorProto ( tensor name: ",
-+        tensor_name,
-+        ") should be file inside the ",
-+        base_dir,
-+        ", but the '",
-+        location,
-+        "' points outside the directory");
-+  }
-+  std::string data_path = path_join(base_dir, relative_path);
-+  // use stat64 to check whether the file exists
-+#if defined(__APPLE__) || defined(__wasm__) || !defined(__GLIBC__)
-+  struct stat buffer; // APPLE, wasm and non-glic stdlibs do not have stat64
-+  if (stat((data_path).c_str(), &buffer) != 0) {
-+#else
-+  struct stat64 buffer; // All POSIX under glibc except APPLE and wasm have stat64
-+  if (stat64((data_path).c_str(), &buffer) != 0) {
-+#endif
-+    fail_check(
-+        "Data of TensorProto ( tensor name: ",
-+        tensor_name,
-+        ") should be stored in ",
-+        data_path,
-+        ", but it doesn't exist or is not accessible.");
-+  }
-+  // Do not allow symlinks or directories.
-+  if (!S_ISREG(buffer.st_mode)) {
-+    fail_check(
-+        "Data of TensorProto ( tensor name: ",
-+        tensor_name,
-+        ") should be stored in ",
-+        data_path,
-+        ", but it is not regular file.");
-+  }
-+  return data_path;
-+#endif
-+}
-+
- std::set<std::string> experimental_ops = {
-     "ATen",
-     "Affine",
-diff --git a/onnx/checker.h b/onnx/checker.h
-index 6796acab..83012213 100644
---- a/onnx/checker.h
-+++ b/onnx/checker.h
-@@ -160,7 +160,10 @@ void check_model_local_functions(
- 
- void check_model(const ModelProto& model, bool full_check = false, bool skip_opset_compatibility_check = false);
- void check_model(const std::string& model_path, bool full_check = false, bool skip_opset_compatibility_check = false);
--
-+std::string resolve_external_data_location(
-+    const std::string& base_dir,
-+    const std::string& location,
-+    const std::string& tensor_name);
- bool check_is_experimental_op(const NodeProto& node);
- 
- } // namespace checker
-diff --git a/onnx/common/path.h b/onnx/common/path.h
-index 6eaf5e67..09212747 100644
---- a/onnx/common/path.h
-+++ b/onnx/common/path.h
-@@ -31,11 +31,22 @@ inline std::wstring utf8str_to_wstring(const std::string& utf8str) {
-   if (utf8str.size() > INT_MAX) {
-     fail_check("utf8str_to_wstring: string is too long for converting to wstring.");
-   }
--  int size_required = MultiByteToWideChar(CP_UTF8, 0, utf8str.c_str(), (int)utf8str.size(), NULL, 0);
-+  int size_required = MultiByteToWideChar(CP_UTF8, 0, utf8str.c_str(), static_cast<int>(utf8str.size()), NULL, 0);
-   std::wstring ws_str(size_required, 0);
--  MultiByteToWideChar(CP_UTF8, 0, utf8str.c_str(), (int)utf8str.size(), &ws_str[0], size_required);
-+  MultiByteToWideChar(CP_UTF8, 0, utf8str.c_str(), static_cast<int>(utf8str.size()), &ws_str[0], size_required);
-   return ws_str;
- }
-+inline std::string wstring_to_utf8str(const std::wstring& ws_str) {
-+  if (ws_str.size() > INT_MAX) {
-+    fail_check("wstring_to_utf8str: string is too long for converting to UTF-8.");
-+  }
-+  int size_required =
-+      WideCharToMultiByte(CP_UTF8, 0, ws_str.c_str(), static_cast<int>(ws_str.size()), NULL, 0, NULL, NULL);
-+  std::string utf8str(size_required, 0);
-+  WideCharToMultiByte(
-+      CP_UTF8, 0, ws_str.c_str(), static_cast<int>(ws_str.size()), &utf8str[0], size_required, NULL, NULL);
-+  return utf8str;
-+}
- 
- #else
- std::string path_join(const std::string& origin, const std::string& append);
-diff --git a/onnx/cpp2py_export.cc b/onnx/cpp2py_export.cc
-index bc2594db..83cea68f 100644
---- a/onnx/cpp2py_export.cc
-+++ b/onnx/cpp2py_export.cc
-@@ -545,6 +545,8 @@ PYBIND11_MODULE(onnx_cpp2py_export, onnx_cpp2py_export) {
-       "full_check"_a = false,
-       "skip_opset_compatibility_check"_a = false);
- 
-+  checker.def("_resolve_external_data_location", &checker::resolve_external_data_location);
-+
-   // Submodule `version_converter`
-   auto version_converter = onnx_cpp2py_export.def_submodule("version_converter");
-   version_converter.doc() = "VersionConverter submodule";
-diff --git a/onnx/external_data_helper.py b/onnx/external_data_helper.py
-index bbc2717f..05c486c6 100644
---- a/onnx/external_data_helper.py
-+++ b/onnx/external_data_helper.py
-@@ -8,6 +8,7 @@ import uuid
- from itertools import chain
- from typing import Callable, Iterable, Optional
- 
-+import onnx.onnx_cpp2py_export.checker as c_checker
- from onnx.onnx_pb import AttributeProto, GraphProto, ModelProto, TensorProto
- 
- 
-@@ -39,9 +40,9 @@ def load_external_data_for_tensor(tensor: TensorProto, base_dir: str) -> None:
-         base_dir: directory that contains the external data.
-     """
-     info = ExternalDataInfo(tensor)
--    file_location = _sanitize_path(info.location)
--    external_data_file_path = os.path.join(base_dir, file_location)
--
-+    external_data_file_path = c_checker._resolve_external_data_location(  # type: ignore[attr-defined]
-+        base_dir, info.location, tensor.name
-+    )
-     with open(external_data_file_path, "rb") as data_file:
-         if info.offset:
-             data_file.seek(info.offset)
-@@ -259,14 +260,6 @@ def _get_attribute_tensors(onnx_model_proto: ModelProto) -> Iterable[TensorProto
-     yield from _get_attribute_tensors_from_graph(onnx_model_proto.graph)
- 
- 
--def _sanitize_path(path: str) -> str:
--    """Remove path components which would allow traversing up a directory tree from a base path.
--
--    Note: This method is currently very basic and should be expanded.
--    """
--    return path.lstrip("/.")
--
--
- def _is_valid_filename(filename: str) -> bool:
-     """Utility to check whether the provided filename is valid."""
-     exp = re.compile('^[^<>:;,?"*|/]+$')
-diff --git a/onnx/test/test_external_data.py b/onnx/test/test_external_data.py
-index 63f6b4ef..bb14d279 100644
---- a/onnx/test/test_external_data.py
-+++ b/onnx/test/test_external_data.py
-@@ -3,6 +3,7 @@
- # SPDX-License-Identifier: Apache-2.0
- from __future__ import annotations
- 
-+import itertools
- import os
- import pathlib
- import tempfile
-@@ -204,6 +205,52 @@ class TestLoadExternalDataSingleFile(TestLoadExternalDataBase):
-         attribute_tensor = new_model.graph.node[0].attribute[0].t
-         np.testing.assert_allclose(to_array(attribute_tensor), self.attribute_value)
- 
-+    @parameterized.parameterized.expand(itertools.product((True, False), (True, False)))
-+    def test_save_external_invalid_single_file_data_and_check(
-+        self, use_absolute_path: bool, use_model_path: bool
-+    ) -> None:
-+        model = onnx.load_model(self.model_filename, self.serialization_format)
-+
-+        model_dir = os.path.join(self.temp_dir, "save_copy")
-+        os.mkdir(model_dir)
-+
-+        traversal_external_data_dir = os.path.join(
-+            self.temp_dir, "invlid_external_data"
-+        )
-+        os.mkdir(traversal_external_data_dir)
-+
-+        if use_absolute_path:
-+            traversal_external_data_location = os.path.join(
-+                traversal_external_data_dir, "tensors.bin"
-+            )
-+        else:
-+            traversal_external_data_location = "../invlid_external_data/tensors.bin"
-+
-+        external_data_dir = os.path.join(self.temp_dir, "external_data")
-+        os.mkdir(external_data_dir)
-+        new_model_filepath = os.path.join(model_dir, "model.onnx")
-+
-+        def convert_model_to_external_data_no_check(model: ModelProto, location: str):
-+            for tensor in model.graph.initializer:
-+                if tensor.HasField("raw_data"):
-+                    set_external_data(tensor, location)
-+
-+        convert_model_to_external_data_no_check(
-+            model,
-+            location=traversal_external_data_location,
-+        )
-+
-+        onnx.save_model(model, new_model_filepath, self.serialization_format)
-+        if use_model_path:
-+            with self.assertRaises(onnx.checker.ValidationError):
-+                _ = onnx.load_model(new_model_filepath, self.serialization_format)
-+        else:
-+            onnx_model = onnx.load_model(
-+                new_model_filepath, self.serialization_format, load_external_data=False
-+            )
-+            with self.assertRaises(onnx.checker.ValidationError):
-+                load_external_data_for_model(onnx_model, external_data_dir)
-+
- 
- @parameterized.parameterized_class(
-     [
diff --git a/pkgs/development/python-modules/onnx/default.nix b/pkgs/development/python-modules/onnx/default.nix
index bcfd0cf6e3cf2..f8bdd75368a1e 100644
--- a/pkgs/development/python-modules/onnx/default.nix
+++ b/pkgs/development/python-modules/onnx/default.nix
@@ -1,30 +1,31 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, cmake
-, fetchFromGitHub
-, fetchpatch
-, gtest
-, nbval
-, numpy
-, parameterized
-, protobuf_21
-, pybind11
-, pytestCheckHook
-, pythonOlder
-, tabulate
-, typing-extensions
-, abseil-cpp
-, google-re2
-, pillow
-, protobuf
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cmake,
+  fetchFromGitHub,
+  gtest,
+  nbval,
+  numpy,
+  parameterized,
+  protobuf_21,
+  pybind11,
+  pytestCheckHook,
+  pythonOlder,
+  tabulate,
+  typing-extensions,
+  abseil-cpp,
+  google-re2,
+  pillow,
+  protobuf,
 }:
 
 let
   gtestStatic = gtest.override { static = true; };
-in buildPythonPackage rec {
+in
+buildPythonPackage rec {
   pname = "onnx";
-  version = "1.15.0";
+  version = "1.16.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -33,19 +34,10 @@ in buildPythonPackage rec {
     owner = pname;
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-Jzga1IiUO5LN5imSUmnbsjYtapRatTihx38EOUjm9Os=";
+    hash = "sha256-JmxnsHRrzj2QzPz3Yndw0MmgZJ8MDYxHjuQ7PQkQsDg=";
   };
 
-  patches = [
-    ./1.15.0-CVE-2024-27318.patch
-    (fetchpatch {
-      name = "CVE-2024-27319.patch";
-      url = "https://github.com/onnx/onnx/commit/08a399ba75a805b7813ab8936b91d0e274b08287.patch";
-      hash = "sha256-9X92N9i/hpQjDGe4I/C+FwUcTUTtP2Nf7+pcTA2sXoA=";
-    })
-  ];
-
-  nativeBuildInputs = [
+  build-system = [
     cmake
     pybind11
   ];
@@ -54,10 +46,11 @@ in buildPythonPackage rec {
     abseil-cpp
     protobuf
     google-re2
+    gtestStatic
     pillow
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     protobuf_21
     protobuf
     numpy
@@ -117,28 +110,30 @@ in buildPythonPackage rec {
     "onnx/examples"
   ];
 
-  disabledTests = [
-    # attempts to fetch data from web
-    "test_bvlc_alexnet_cpu"
-    "test_densenet121_cpu"
-    "test_inception_v1_cpu"
-    "test_inception_v2_cpu"
-    "test_resnet50_cpu"
-    "test_shufflenet_cpu"
-    "test_squeezenet_cpu"
-    "test_vgg19_cpu"
-    "test_zfnet512_cpu"
-  ] ++ lib.optionals stdenv.isAarch64 [
-    # AssertionError: Output 0 of test 0 in folder
-    "test__pytorch_converted_Conv2d_depthwise_padded"
-    "test__pytorch_converted_Conv2d_dilated"
-    "test_dft"
-    "test_dft_axis"
-    # AssertionError: Mismatch in test 'test_Conv2d_depthwise_padded'
-    "test_xor_bcast4v4d"
-    # AssertionError: assert 1 == 0
-    "test_ops_tested"
-  ];
+  disabledTests =
+    [
+      # attempts to fetch data from web
+      "test_bvlc_alexnet_cpu"
+      "test_densenet121_cpu"
+      "test_inception_v1_cpu"
+      "test_inception_v2_cpu"
+      "test_resnet50_cpu"
+      "test_shufflenet_cpu"
+      "test_squeezenet_cpu"
+      "test_vgg19_cpu"
+      "test_zfnet512_cpu"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isAarch64 [
+      # AssertionError: Output 0 of test 0 in folder
+      "test__pytorch_converted_Conv2d_depthwise_padded"
+      "test__pytorch_converted_Conv2d_dilated"
+      "test_dft"
+      "test_dft_axis"
+      # AssertionError: Mismatch in test 'test_Conv2d_depthwise_padded'
+      "test_xor_bcast4v4d"
+      # AssertionError: assert 1 == 0
+      "test_ops_tested"
+    ];
 
   disabledTestPaths = [
     # Unexpected output fields from running code: {'stderr'}
@@ -152,9 +147,7 @@ in buildPythonPackage rec {
     .setuptools-cmake-build/onnx_gtests
   '';
 
-  pythonImportsCheck = [
-    "onnx"
-  ];
+  pythonImportsCheck = [ "onnx" ];
 
   meta = with lib; {
     description = "Open Neural Network Exchange";
diff --git a/pkgs/development/python-modules/onnxconverter-common/default.nix b/pkgs/development/python-modules/onnxconverter-common/default.nix
index 1da4168d22b74..94cc0b8813515 100644
--- a/pkgs/development/python-modules/onnxconverter-common/default.nix
+++ b/pkgs/development/python-modules/onnxconverter-common/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, packaging
-, protobuf
-, onnx
-, unittestCheckHook
-, onnxruntime
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  packaging,
+  protobuf,
+  onnx,
+  unittestCheckHook,
+  onnxruntime,
 }:
 
 buildPythonPackage rec {
@@ -29,16 +30,17 @@ buildPythonPackage rec {
     onnx
   ];
 
-  pythonImportsCheck = [
-    "onnxconverter_common"
-  ];
+  pythonImportsCheck = [ "onnxconverter_common" ];
 
   nativeCheckInputs = [
     onnxruntime
     unittestCheckHook
   ];
 
-  unittestFlagsArray = [ "-s" "tests" ];
+  unittestFlagsArray = [
+    "-s"
+    "tests"
+  ];
 
   # Failing tests
   # https://github.com/microsoft/onnxconverter-common/issues/242
diff --git a/pkgs/development/python-modules/onnxmltools/default.nix b/pkgs/development/python-modules/onnxmltools/default.nix
index b24537ddcdf35..656e3631a9ca5 100644
--- a/pkgs/development/python-modules/onnxmltools/default.nix
+++ b/pkgs/development/python-modules/onnxmltools/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, onnx
-, skl2onnx
-# native check inputs
-, pytestCheckHook
-, pandas
-, xgboost
-, onnxruntime
-, scikit-learn
-, pyspark
-, lightgbm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  onnx,
+  skl2onnx,
+  # native check inputs
+  pytestCheckHook,
+  pandas,
+  xgboost,
+  onnxruntime,
+  scikit-learn,
+  pyspark,
+  lightgbm,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/onnxruntime-tools/default.nix b/pkgs/development/python-modules/onnxruntime-tools/default.nix
index 6f8a5001b1ffb..462cdb7f23361 100644
--- a/pkgs/development/python-modules/onnxruntime-tools/default.nix
+++ b/pkgs/development/python-modules/onnxruntime-tools/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, coloredlogs
-, numpy
-, onnx
-, packaging
-, psutil
-, py-cpuinfo
-, py3nvml
-, sympy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  coloredlogs,
+  numpy,
+  onnx,
+  packaging,
+  psutil,
+  py-cpuinfo,
+  py3nvml,
+  sympy,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/onnxruntime/default.nix b/pkgs/development/python-modules/onnxruntime/default.nix
index 328825698f899..48c342c1626f7 100644
--- a/pkgs/development/python-modules/onnxruntime/default.nix
+++ b/pkgs/development/python-modules/onnxruntime/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, autoPatchelfHook
-, pythonRelaxDepsHook
-, onnxruntime
-, coloredlogs
-, numpy
-, packaging
-, oneDNN
-, re2
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  autoPatchelfHook,
+  onnxruntime,
+  coloredlogs,
+  numpy,
+  packaging,
+  oneDNN,
+  re2,
 
 }:
 
@@ -35,11 +35,7 @@ buildPythonPackage {
     chmod +w dist
   '';
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ] ++ lib.optionals stdenv.isLinux [
-    autoPatchelfHook
-  ];
+  nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ];
 
   # This project requires fairly large dependencies such as sympy which we really don't always need.
   pythonRemoveDeps = [
@@ -49,17 +45,23 @@ buildPythonPackage {
   ];
 
   # Libraries are not linked correctly.
-  buildInputs = [
-    oneDNN
-    re2
-    onnxruntime.protobuf
-  ] ++ lib.optionals onnxruntime.passthru.cudaSupport (with onnxruntime.passthru.cudaPackages; [
-    libcublas # libcublasLt.so.XX libcublas.so.XX
-    libcurand # libcurand.so.XX
-    libcufft # libcufft.so.XX
-    cudnn # libcudnn.soXX
-    cuda_cudart # libcudart.so.XX
-  ]);
+  buildInputs =
+    [
+      oneDNN
+      re2
+      onnxruntime.protobuf
+    ]
+    ++ lib.optionals onnxruntime.passthru.cudaSupport (
+      with onnxruntime.passthru.cudaPackages;
+      [
+        libcublas # libcublasLt.so.XX libcublas.so.XX
+        libcurand # libcurand.so.XX
+        libcufft # libcufft.so.XX
+        cudnn # libcudnn.soXX
+        cuda_cudart # libcudart.so.XX
+        nccl # libnccl.so.XX
+      ]
+    );
 
   propagatedBuildInputs = [
     coloredlogs
diff --git a/pkgs/development/python-modules/onvif-zeep-async/default.nix b/pkgs/development/python-modules/onvif-zeep-async/default.nix
index aacdb41fda1f7..8da15eabe8112 100644
--- a/pkgs/development/python-modules/onvif-zeep-async/default.nix
+++ b/pkgs/development/python-modules/onvif-zeep-async/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, ciso8601
-, fetchPypi
-, httpx
-, pythonOlder
-, zeep
+{
+  lib,
+  buildPythonPackage,
+  ciso8601,
+  fetchPypi,
+  httpx,
+  pythonOlder,
+  zeep,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     zeep
   ];
 
-  pythonImportsCheck = [
-    "onvif"
-  ];
+  pythonImportsCheck = [ "onvif" ];
 
   # Tests are not shipped
   doCheck = false;
diff --git a/pkgs/development/python-modules/onvif-zeep/default.nix b/pkgs/development/python-modules/onvif-zeep/default.nix
index 2c2946d53c00b..07a7141e48675 100644
--- a/pkgs/development/python-modules/onvif-zeep/default.nix
+++ b/pkgs/development/python-modules/onvif-zeep/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, zeep
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  zeep,
 }:
 
 buildPythonPackage rec {
@@ -16,17 +17,11 @@ buildPythonPackage rec {
     hash = "sha256-qou8Aqc+qlCJSwwY45+o0xilg6ZkxlvzWzyAKdHEC0k=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    zeep
-  ];
+  propagatedBuildInputs = [ zeep ];
 
-  pythonImportsCheck = [
-    "onvif"
-  ];
+  pythonImportsCheck = [ "onvif" ];
 
   # Tests require hardware
   doCheck = false;
diff --git a/pkgs/development/python-modules/oocsi/default.nix b/pkgs/development/python-modules/oocsi/default.nix
index 0739098913896..0bf286c3263b6 100644
--- a/pkgs/development/python-modules/oocsi/default.nix
+++ b/pkgs/development/python-modules/oocsi/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
   # Tests are not shipped
   doCheck = false;
 
-  pythonImportsCheck = [
-    "oocsi"
-  ];
+  pythonImportsCheck = [ "oocsi" ];
 
   meta = with lib; {
     description = "OOCSI library for Python";
diff --git a/pkgs/development/python-modules/opcua-widgets/default.nix b/pkgs/development/python-modules/opcua-widgets/default.nix
index 0f078aa6fc479..a36c97dd2cdac 100644
--- a/pkgs/development/python-modules/opcua-widgets/default.nix
+++ b/pkgs/development/python-modules/opcua-widgets/default.nix
@@ -1,9 +1,10 @@
-{ pkgs
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pyqt5
-, asyncua
+{
+  pkgs,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pyqt5,
+  asyncua,
 }:
 
 buildPythonPackage rec {
@@ -34,6 +35,6 @@ buildPythonPackage rec {
     description = "Common widgets for opcua-modeler og opcua-client-gui";
     homepage = "https://github.com/FreeOpcUa/opcua-widgets";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ janik ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/open-clip-torch/default.nix b/pkgs/development/python-modules/open-clip-torch/default.nix
index 6de2c610fbf63..a315c3d0d0704 100644
--- a/pkgs/development/python-modules/open-clip-torch/default.nix
+++ b/pkgs/development/python-modules/open-clip-torch/default.nix
@@ -1,42 +1,46 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, braceexpand
-, ftfy
-, huggingface-hub
-, pandas
-, protobuf
-, pytestCheckHook
-, regex
-, sentencepiece
-, timm
-, torch
-, torchvision
-, tqdm
-, transformers
-, setuptools
-, webdataset
-, wheel
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  pdm-backend,
+
+  # dependencies
+  ftfy,
+  huggingface-hub,
+  protobuf,
+  regex,
+  sentencepiece,
+  timm,
+  torch,
+  torchvision,
+  tqdm,
+
+  # checks
+  pytestCheckHook,
+  braceexpand,
+  pandas,
+  transformers,
+  webdataset,
+
+  stdenv,
 }:
 buildPythonPackage rec {
   pname = "open-clip-torch";
-  version = "2.24.0";
+  version = "2.26.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "mlfoundations";
     repo = "open_clip";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ugbXnXiOY9FrNvr8ZxnAgZO/SLCVoXbRgupi8cUwflU=";
+    hash = "sha256-XjPOsGet8VNzwEwzz14f1nF3XOgpkb4OERIc6VrDDZ8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
-  ];
+  build-system = [ pdm-backend ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     ftfy
     huggingface-hub
     protobuf
@@ -58,29 +62,38 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "open_clip" ];
 
-  disabledTestPaths = lib.optionals (stdenv.isAarch64 || stdenv.isDarwin) [
-    "tests/test_wds.py"
-  ];
+  # -> On Darwin:
+  # AttributeError: Can't pickle local object 'build_params.<locals>.<lambda>'
+  # -> On Linux:
+  # KeyError: Caught KeyError in DataLoader worker process 0
+  disabledTestPaths = [ "tests/test_wds.py" ];
 
-  disabledTests = [
-    # requires network
-    "test_download_pretrained_from_hfh"
-    "test_inference_simple"
-    "test_inference_with_data"
-    "test_pretrained_text_encoder"
-    "test_training_mt5"
-  ] ++ lib.optionals (stdenv.isAarch64 && stdenv.isLinux) [
-    "test_training"
-    "test_training_coca"
-    "test_training_unfreezing_vit"
-    "test_training_clip_with_jit"
-  ];
+  disabledTests =
+    [
+      # requires network
+      "test_download_pretrained_from_hfh"
+      "test_inference_simple"
+      "test_inference_with_data"
+      "test_pretrained_text_encoder"
+      "test_training_mt5"
+      # fails due to type errors
+      "test_num_shards"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux) [
+      "test_training"
+      "test_training_coca"
+      "test_training_unfreezing_vit"
+      "test_training_clip_with_jit"
+    ];
 
-  meta = with lib; {
-    description = "An open source implementation of CLIP";
+  meta = {
+    description = "Open source implementation of CLIP";
     homepage = "https://github.com/mlfoundations/open_clip";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ iynaix ];
+    changelog = "https://github.com/mlfoundations/open_clip/releases/tag/v${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ iynaix ];
     mainProgram = "open-clip";
+    # Segfaults during pythonImportsCheck phase
+    broken = stdenv.hostPlatform.system == "x86_64-darwin";
   };
 }
diff --git a/pkgs/development/python-modules/open-garage/default.nix b/pkgs/development/python-modules/open-garage/default.nix
index 3064bceda1a07..ff50be9476e4c 100644
--- a/pkgs/development/python-modules/open-garage/default.nix
+++ b/pkgs/development/python-modules/open-garage/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "opengarage"
-  ];
+  pythonImportsCheck = [ "opengarage" ];
 
   meta = with lib; {
     description = "Python module to communicate with opengarage.io";
diff --git a/pkgs/development/python-modules/open-interpreter/default.nix b/pkgs/development/python-modules/open-interpreter/default.nix
index 2f256aa327011..12e4cabb07688 100644
--- a/pkgs/development/python-modules/open-interpreter/default.nix
+++ b/pkgs/development/python-modules/open-interpreter/default.nix
@@ -1,81 +1,90 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
-, pythonRelaxDepsHook
-, poetry-core
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  poetry-core,
 
-, appdirs
-, astor
-, inquirer
-, litellm
-, pyyaml
-, rich
-, six
-, tiktoken
-, tokentrim
-, wget
-, psutil
-, html2image
-, ipykernel
-, jupyter-client
-, matplotlib
-, toml
-, posthog
-, openai
-, setuptools
+  setuptools,
+  astor,
+  inquirer,
+  pyyaml,
+  rich,
+  six,
+  tokentrim,
+  wget,
+  psutil,
+  html2image,
+  send2trash,
+  ipykernel,
+  jupyter-client,
+  matplotlib,
+  toml,
+  tiktoken,
+  platformdirs,
+  pydantic,
+  google-generativeai,
+  pynput,
+  pyperclip,
+  yaspin,
+  shortuuid,
+  litellm,
+
+  nltk,
 }:
 
 buildPythonPackage rec {
   pname = "open-interpreter";
-  version = "0.2.0";
+  version = "0.3.6";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "KillianLucas";
-    repo = pname;
+    repo = "open-interpreter";
     rev = "v${version}";
-    hash = "sha256-XeJ6cADtyXtqoTXwYJu+i9d3NYbJCLpYOeZYmdImtwI=";
+    hash = "sha256-TeBiRylrq5CrAG9XS47Z9GlruAv7V7Nsl4QbSV55isM=";
   };
 
-  # Remove unused dependency
-  postPatch = ''
-    substituteInPlace pyproject.toml --replace 'git-python = "^1.0.3"' ""
-  '';
+  pythonRemoveDeps = [ "git-python" ];
 
   pythonRelaxDeps = [
-    "tiktoken"
+    "psutil"
+    "pynput"
+    "yaspin"
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    appdirs
+  dependencies = [
+    setuptools
     astor
     inquirer
-    litellm
     pyyaml
     rich
     six
-    tiktoken
     tokentrim
     wget
     psutil
     html2image
+    send2trash
     ipykernel
     jupyter-client
     matplotlib
     toml
-    posthog
-    openai
+    tiktoken
+    platformdirs
+    pydantic
+    google-generativeai
+    pynput
+    pyperclip
+    yaspin
+    shortuuid
+    litellm
 
-    # Not explicitly in pyproject.toml but required due to use of `pkgs_resources`
-    setuptools
+    # marked optional in pyproject.toml but still required?
+    nltk
   ];
 
   pythonImportsCheck = [ "interpreter" ];
diff --git a/pkgs/development/python-modules/open-meteo/default.nix b/pkgs/development/python-modules/open-meteo/default.nix
index 6da3633723694..88d54404cf1f3 100644
--- a/pkgs/development/python-modules/open-meteo/default.nix
+++ b/pkgs/development/python-modules/open-meteo/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, mashumaro
-, orjson
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mashumaro,
+  orjson,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
       --replace "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -48,9 +47,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "open_meteo"
-  ];
+  pythonImportsCheck = [ "open_meteo" ];
 
   meta = with lib; {
     changelog = "https://github.com/frenck/python-open-meteo/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/openai-triton/bin.nix b/pkgs/development/python-modules/openai-triton/bin.nix
deleted file mode 100644
index f5a4148d28a7b..0000000000000
--- a/pkgs/development/python-modules/openai-triton/bin.nix
+++ /dev/null
@@ -1,82 +0,0 @@
-{ lib
-, stdenv
-, addOpenGLRunpath
-, cudaPackages
-, buildPythonPackage
-, fetchurl
-, isPy38
-, isPy39
-, isPy310
-, isPy311
-, python
-, autoPatchelfHook
-, filelock
-, lit
-, pythonRelaxDepsHook
-, zlib
-}:
-
-buildPythonPackage rec {
-  pname = "triton";
-  version = "2.1.0";
-  format = "wheel";
-
-  src =
-    let pyVerNoDot = lib.replaceStrings [ "." ] [ "" ] python.pythonVersion;
-        unsupported = throw "Unsupported system";
-        srcs = (import ./binary-hashes.nix version)."${stdenv.system}-${pyVerNoDot}" or unsupported;
-    in fetchurl srcs;
-
-  disabled = !(isPy38 || isPy39 || isPy310 || isPy311);
-
-  pythonRemoveDeps = [ "cmake" "torch" ];
-
-  buildInputs = [ zlib ];
-
-  nativeBuildInputs = [
-    pythonRelaxDepsHook # torch and triton refer to each other so this hook is included to mitigate that.
-    autoPatchelfHook
-  ];
-
-  propagatedBuildInputs = [
-    filelock
-    lit
-    zlib
-  ];
-
-  dontStrip = true;
-
-  # If this breaks, consider replacing with "${cuda_nvcc}/bin/ptxas"
-  postFixup = ''
-    chmod +x "$out/${python.sitePackages}/triton/third_party/cuda/bin/ptxas"
-  '' +
-  (let
-    # Bash was getting weird without linting,
-    # but basically upstream contains [cc, ..., "-lcuda", ...]
-    # and we replace it with [..., "-lcuda", "-L/run/opengl-driver/lib", "-L$stubs", ...]
-    old = [ "-lcuda" ];
-    new = [ "-lcuda" "-L${addOpenGLRunpath.driverLink}" "-L${cudaPackages.cuda_cudart}/lib/stubs/" ];
-
-    quote = x: ''"${x}"'';
-    oldStr = lib.concatMapStringsSep ", " quote old;
-    newStr = lib.concatMapStringsSep ", " quote new;
-  in
-    ''
-      substituteInPlace $out/${python.sitePackages}/triton/common/build.py \
-        --replace '${oldStr}' '${newStr}'
-    '');
-
-  meta = with lib; {
-    description = "A language and compiler for custom Deep Learning operations";
-    homepage = "https://github.com/openai/triton/";
-    changelog = "https://github.com/openai/triton/releases/tag/v${version}";
-    # Includes NVIDIA's ptxas, but redistributions of the binary are not limited.
-    # https://docs.nvidia.com/cuda/eula/index.html
-    # triton's license is MIT.
-    # openai-triton-bin includes ptxas binary, therefore unfreeRedistributable is set.
-    license = with licenses; [ unfreeRedistributable mit ];
-    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
-    platforms = [ "x86_64-linux" ];
-    maintainers = with maintainers; [ junjihashimoto ];
-  };
-}
diff --git a/pkgs/development/python-modules/openai-triton/default.nix b/pkgs/development/python-modules/openai-triton/default.nix
deleted file mode 100644
index 2bdb8d918af3f..0000000000000
--- a/pkgs/development/python-modules/openai-triton/default.nix
+++ /dev/null
@@ -1,196 +0,0 @@
-{ lib
-, config
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, addOpenGLRunpath
-, setuptools
-, pytestCheckHook
-, pythonRelaxDepsHook
-, cmake
-, ninja
-, pybind11
-, gtest
-, zlib
-, ncurses
-, libxml2
-, lit
-, llvm
-, filelock
-, torchWithRocm
-, python
-
-, runCommand
-
-, cudaPackages
-, cudaSupport ? config.cudaSupport
-}:
-
-let
-  ptxas = "${cudaPackages.cuda_nvcc}/bin/ptxas"; # Make sure cudaPackages is the right version each update (See python/setup.py)
-in
-buildPythonPackage rec {
-  pname = "triton";
-  version = "2.1.0";
-  pyproject = true;
-
-  src = fetchFromGitHub {
-    owner = "openai";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-8UTUwLH+SriiJnpejdrzz9qIquP2zBp1/uwLdHmv0XQ=";
-  };
-
-  patches = [
-    # fix overflow error
-    (fetchpatch {
-      url = "https://github.com/openai/triton/commit/52c146f66b79b6079bcd28c55312fc6ea1852519.patch";
-      hash = "sha256-098/TCQrzvrBAbQiaVGCMaF3o5Yc3yWDxzwSkzIuAtY=";
-    })
-  ] ++ lib.optionals (!cudaSupport) [
-    ./0000-dont-download-ptxas.patch
-    # openai-triton wants to get ptxas version even if ptxas is not
-    # used, resulting in ptxas not found error.
-    ./0001-ptxas-disable-version-key-for-non-cuda-targets.patch
-  ];
-
-  nativeBuildInputs = [
-    setuptools
-    pythonRelaxDepsHook
-    # pytestCheckHook # Requires torch (circular dependency) and probably needs GPUs:
-    cmake
-    ninja
-
-    # Note for future:
-    # These *probably* should go in depsTargetTarget
-    # ...but we cannot test cross right now anyway
-    # because we only support cudaPackages on x86_64-linux atm
-    lit
-    llvm
-  ];
-
-  buildInputs = [
-    gtest
-    libxml2.dev
-    ncurses
-    pybind11
-    zlib
-  ];
-
-  propagatedBuildInputs = [
-    filelock
-    # openai-triton uses setuptools at runtime:
-    # https://github.com/NixOS/nixpkgs/pull/286763/#discussion_r1480392652
-    setuptools
-  ];
-
-  postPatch = let
-    # Bash was getting weird without linting,
-    # but basically upstream contains [cc, ..., "-lcuda", ...]
-    # and we replace it with [..., "-lcuda", "-L/run/opengl-driver/lib", "-L$stubs", ...]
-    old = [ "-lcuda" ];
-    new = [ "-lcuda" "-L${addOpenGLRunpath.driverLink}" "-L${cudaPackages.cuda_cudart}/lib/stubs/" ];
-
-    quote = x: ''"${x}"'';
-    oldStr = lib.concatMapStringsSep ", " quote old;
-    newStr = lib.concatMapStringsSep ", " quote new;
-  in ''
-    # Use our `cmakeFlags` instead and avoid downloading dependencies
-    substituteInPlace python/setup.py \
-      --replace "= get_thirdparty_packages(triton_cache_path)" "= os.environ[\"cmakeFlags\"].split()"
-
-    # Already defined in llvm, when built with -DLLVM_INSTALL_UTILS
-    substituteInPlace bin/CMakeLists.txt \
-      --replace "add_subdirectory(FileCheck)" ""
-
-    # Don't fetch googletest
-    substituteInPlace unittest/CMakeLists.txt \
-      --replace "include (\''${CMAKE_CURRENT_SOURCE_DIR}/googletest.cmake)" ""\
-      --replace "include(GoogleTest)" "find_package(GTest REQUIRED)"
-  '' + lib.optionalString cudaSupport ''
-    # Use our linker flags
-    substituteInPlace python/triton/common/build.py \
-      --replace '${oldStr}' '${newStr}'
-  '';
-
-  # Avoid GLIBCXX mismatch with other cuda-enabled python packages
-  preConfigure = ''
-    # Ensure that the build process uses the requested number of cores
-    export MAX_JOBS="$NIX_BUILD_CORES"
-
-    # Upstream's setup.py tries to write cache somewhere in ~/
-    export HOME=$(mktemp -d)
-
-    # Upstream's github actions patch setup.cfg to write base-dir. May be redundant
-    echo "
-    [build_ext]
-    base-dir=$PWD" >> python/setup.cfg
-
-    # The rest (including buildPhase) is relative to ./python/
-    cd python
-  '' + lib.optionalString cudaSupport ''
-    export CC=${cudaPackages.backendStdenv.cc}/bin/cc;
-    export CXX=${cudaPackages.backendStdenv.cc}/bin/c++;
-
-    # Work around download_and_copy_ptxas()
-    mkdir -p $PWD/triton/third_party/cuda/bin
-    ln -s ${ptxas} $PWD/triton/third_party/cuda/bin
-  '';
-
-  # CMake is run by setup.py instead
-  dontUseCmakeConfigure = true;
-
-  # Setuptools (?) strips runpath and +x flags. Let's just restore the symlink
-  postFixup = lib.optionalString cudaSupport ''
-    rm -f $out/${python.sitePackages}/triton/third_party/cuda/bin/ptxas
-    ln -s ${ptxas} $out/${python.sitePackages}/triton/third_party/cuda/bin/ptxas
-  '';
-
-  checkInputs = [ cmake ]; # ctest
-  dontUseSetuptoolsCheck = true;
-
-  preCheck = ''
-    # build/temp* refers to build_ext.build_temp (looked up in the build logs)
-    (cd /build/source/python/build/temp* ; ctest)
-
-    # For pytestCheckHook
-    cd test/unit
-  '';
-
-  # Circular dependency on torch
-  # pythonImportsCheck = [
-  #   "triton"
-  #   "triton.language"
-  # ];
-
-  # Ultimately, torch is our test suite:
-  passthru.tests = {
-    inherit torchWithRocm;
-    # Implemented as alternative to pythonImportsCheck, in case if circular dependency on torch occurs again,
-    # and pythonImportsCheck is commented back.
-    import-triton = runCommand "import-triton" { nativeBuildInputs = [(python.withPackages (ps: [ps.openai-triton]))]; } ''
-      python << \EOF
-      import triton
-      import triton.language
-      EOF
-      touch "$out"
-    '';
-  };
-
-  pythonRemoveDeps = [
-    # Circular dependency, cf. https://github.com/openai/triton/issues/1374
-    "torch"
-
-    # CLI tools without dist-info
-    "cmake"
-    "lit"
-  ];
-
-  meta = with lib; {
-    description = "Language and compiler for writing highly efficient custom Deep-Learning primitives";
-    homepage = "https://github.com/openai/triton";
-    platforms = lib.platforms.unix;
-    license = licenses.mit;
-    maintainers = with maintainers; [ SomeoneSerge Madouura ];
-  };
-}
diff --git a/pkgs/development/python-modules/openai-whisper/default.nix b/pkgs/development/python-modules/openai-whisper/default.nix
index 0038098e586ab..06d4a1f55d9ac 100644
--- a/pkgs/development/python-modules/openai-whisper/default.nix
+++ b/pkgs/development/python-modules/openai-whisper/default.nix
@@ -1,26 +1,28 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, substituteAll
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  buildPythonPackage,
+  substituteAll,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# runtime
-, ffmpeg-headless
+  # runtime
+  ffmpeg-headless,
 
-# propagates
-, more-itertools
-, numba
-, numpy
-, openai-triton
-, tiktoken
-, torch
-, tqdm
+  # propagates
+  more-itertools,
+  numba,
+  numpy,
+  triton,
+  tiktoken,
+  torch,
+  tqdm,
 
-# tests
-, pytestCheckHook
-, scipy
+  # tests
+  pytestCheckHook,
+  scipy,
 }:
 
 buildPythonPackage rec {
@@ -42,20 +44,16 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-    scipy
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     more-itertools
     numba
     numpy
-    openai-triton
     tiktoken
     torch
     tqdm
-  ];
+  ] ++ lib.optionals (lib.meta.availableOn stdenv.hostPlatform triton) [ triton ];
 
   preCheck = ''
     export HOME=$TMPDIR
@@ -63,6 +61,7 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
+    scipy
   ];
 
   disabledTests = [
@@ -79,6 +78,9 @@ buildPythonPackage rec {
     mainProgram = "whisper";
     homepage = "https://github.com/openai/whisper";
     license = licenses.mit;
-    maintainers = with maintainers; [ hexa MayNiklas ];
+    maintainers = with maintainers; [
+      hexa
+      MayNiklas
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/openai/default.nix b/pkgs/development/python-modules/openai/default.nix
index a2720bfb8567a..e879bec83842a 100644
--- a/pkgs/development/python-modules/openai/default.nix
+++ b/pkgs/development/python-modules/openai/default.nix
@@ -1,31 +1,41 @@
 {
   lib,
-  anyio,
   buildPythonPackage,
-  cached-property,
-  dirty-equals,
-  distro,
   fetchFromGitHub,
-  hatch-fancy-pypi-readme,
+  pythonOlder,
+
+  # build-system
   hatchling,
+  hatch-fancy-pypi-readme,
+
+  # dependencies
+  anyio,
+  cached-property,
+  distro,
   httpx,
+  jiter,
+  pydantic,
+  sniffio,
+  tqdm,
+  typing-extensions,
+
   numpy,
   pandas,
   pandas-stubs,
-  pydantic,
+
+  # check deps
+  pytestCheckHook,
+  dirty-equals,
+  inline-snapshot,
   pytest-asyncio,
   pytest-mock,
-  pytestCheckHook,
-  pythonOlder,
   respx,
-  sniffio,
-  tqdm,
-  typing-extensions,
+
 }:
 
 buildPythonPackage rec {
   pname = "openai";
-  version = "1.23.6";
+  version = "1.47.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7.1";
@@ -34,7 +44,7 @@ buildPythonPackage rec {
     owner = "openai";
     repo = "openai-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-b7LkZc8XGNOG0HHStlFikatKWQ5gob98XLsei/vOq4c=";
+    hash = "sha256-8zH9G28Z4CpbqQxGkPnKiD4DxasuDuK1t4jr9PpPv3I=";
   };
 
   build-system = [
@@ -43,13 +53,14 @@ buildPythonPackage rec {
   ];
 
   dependencies = [
-    httpx
-    pydantic
-    typing-extensions
     anyio
     distro
+    httpx
+    jiter
+    pydantic
     sniffio
     tqdm
+    typing-extensions
   ] ++ lib.optionals (pythonOlder "3.8") [ cached-property ];
 
   passthru.optional-dependencies = {
@@ -64,10 +75,11 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
+    dirty-equals
+    inline-snapshot
     pytest-asyncio
     pytest-mock
     respx
-    dirty-equals
   ];
 
   pytestFlagsArray = [
@@ -77,10 +89,7 @@ buildPythonPackage rec {
 
   disabledTests = [
     # Tests make network requests
-    "test_streaming_response"
     "test_copy_build_request"
-
-    # Test fails with pytest>=8
     "test_basic_attribute_access_works"
   ];
 
diff --git a/pkgs/development/python-modules/openaiauth/default.nix b/pkgs/development/python-modules/openaiauth/default.nix
index 1b33438e070fe..834ca3ed258b3 100644
--- a/pkgs/development/python-modules/openaiauth/default.nix
+++ b/pkgs/development/python-modules/openaiauth/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, tls-client
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  tls-client,
 }:
 
 buildPythonPackage rec {
@@ -19,20 +20,14 @@ buildPythonPackage rec {
     hash = "sha256-9SrptiheiM5s9YI6Ht68ahDGMFADWfBQgAWUBY3EEJ8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    tls-client
-  ];
+  propagatedBuildInputs = [ tls-client ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "OpenAIAuth"
-  ];
+  pythonImportsCheck = [ "OpenAIAuth" ];
 
   meta = with lib; {
     description = "Library for authenticating with the OpenAI API";
diff --git a/pkgs/development/python-modules/openant/default.nix b/pkgs/development/python-modules/openant/default.nix
index 0a655030a37d9..a4a54e9a879dc 100644
--- a/pkgs/development/python-modules/openant/default.nix
+++ b/pkgs/development/python-modules/openant/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, pyusb
-, influxdb-client
-, pyserial
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  pyusb,
+  influxdb-client,
+  pyserial,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-wDtHlkVyD7mMDXZ4LGMgatr9sSlQKVbgkYsKvHGr9Pc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   postInstall = ''
     install -dm755 "$out/etc/udev/rules.d"
@@ -35,21 +34,13 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ pyusb ];
 
   passthru.optional-dependencies = {
-    serial = [
-      pyserial
-    ];
-    influx = [
-      influxdb-client
-    ];
+    serial = [ pyserial ];
+    influx = [ influxdb-client ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "openant"
-  ];
+  pythonImportsCheck = [ "openant" ];
 
   meta = with lib; {
     homepage = "https://github.com/Tigge/openant";
@@ -57,5 +48,4 @@ buildPythonPackage rec {
     mainProgram = "openant";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/openapi-core/default.nix b/pkgs/development/python-modules/openapi-core/default.nix
index 5e1c1d8ae9600..bb9f310497c32 100644
--- a/pkgs/development/python-modules/openapi-core/default.nix
+++ b/pkgs/development/python-modules/openapi-core/default.nix
@@ -1,36 +1,37 @@
-{ lib
-, aiohttp
-, aioitertools
-, asgiref
-, buildPythonPackage
-, django
-, falcon
-, fastapi
-, fetchFromGitHub
-, flask
-, httpx
-, isodate
-, jsonschema
-, jsonschema-spec
-, more-itertools
-, multidict
-, openapi-schema-validator
-, openapi-spec-validator
-, parse
-, poetry-core
-, pytest-aiohttp
-, pytest7CheckHook
-, pythonOlder
-, responses
-, requests
-, starlette
-, webob
-, werkzeug
+{
+  lib,
+  aiohttp,
+  aioitertools,
+  buildPythonPackage,
+  django,
+  falcon,
+  fastapi,
+  fetchFromGitHub,
+  flask,
+  httpx,
+  isodate,
+  jsonschema,
+  jsonschema-path,
+  more-itertools,
+  multidict,
+  openapi-schema-validator,
+  openapi-spec-validator,
+  parse,
+  poetry-core,
+  pytest-aiohttp,
+  pytest-cov-stub,
+  pytestCheckHook,
+  pythonOlder,
+  responses,
+  requests,
+  starlette,
+  webob,
+  werkzeug,
 }:
 
 buildPythonPackage rec {
   pname = "openapi-core";
-  version = "0.19.0";
+  version = "0.19.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -39,49 +40,32 @@ buildPythonPackage rec {
     owner = "p1c2u";
     repo = "openapi-core";
     rev = "refs/tags/${version}";
-    hash = "sha256-+YYcSNX717JjVHMk4Seb145iq9/rQZEVQn27Ulk1A3E=";
+    hash = "sha256-JvWusDokov8G0UO9oOkGicAI7wYZTnNywbvKMZKQWiQ=";
   };
 
-  postPatch = ''
-    sed -i "/--cov/d" pyproject.toml
-  '';
+  build-system = [ poetry-core ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
-
-  propagatedBuildInputs = [
+  dependencies = [
     isodate
     more-itertools
     parse
     openapi-schema-validator
     openapi-spec-validator
     werkzeug
-    jsonschema-spec
-    asgiref
+    jsonschema-path
     jsonschema
   ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     aiohttp = [
       aiohttp
       multidict
     ];
-    django = [
-      django
-    ];
-    falcon = [
-      falcon
-    ];
-    fastapi = [
-      fastapi
-    ];
-    flask = [
-      flask
-    ];
-    requests = [
-      requests
-    ];
+    django = [ django ];
+    falcon = [ falcon ];
+    fastapi = [ fastapi ];
+    flask = [ flask ];
+    requests = [ requests ];
     starlette = [
       aioitertools
       starlette
@@ -93,14 +77,11 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     httpx
     pytest-aiohttp
-    pytest7CheckHook
+    pytest-cov-stub
+    pytestCheckHook
     responses
     webob
-  ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
-
-  pytestFlagsArray = [
-    "-W" "ignore::DeprecationWarning"
-  ];
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
   disabledTestPaths = [
     # Requires secrets and additional configuration
@@ -114,6 +95,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
+    changelog = "https://github.com/python-openapi/openapi-core/releases/tag/${version}";
     description = "Client-side and server-side support for the OpenAPI Specification v3";
     homepage = "https://github.com/python-openapi/openapi-core";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/openapi-schema-validator/default.nix b/pkgs/development/python-modules/openapi-schema-validator/default.nix
index 4b0608c7572e4..b64311ac4e675 100644
--- a/pkgs/development/python-modules/openapi-schema-validator/default.nix
+++ b/pkgs/development/python-modules/openapi-schema-validator/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# build-system
-, poetry-core
-
-# propagates
-, jsonschema
-, jsonschema-specifications
-, rfc3339-validator
-
-# tests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  poetry-core,
+
+  # propagates
+  jsonschema,
+  jsonschema-specifications,
+  rfc3339-validator,
+
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,7 @@ buildPythonPackage rec {
     sed -i "/--cov/d" pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     jsonschema
@@ -43,9 +42,7 @@ buildPythonPackage rec {
     rfc3339-validator
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # https://github.com/python-openapi/openapi-schema-validator/issues/153
@@ -61,6 +58,6 @@ buildPythonPackage rec {
     description = "Validates OpenAPI schema against the OpenAPI Schema Specification v3.0";
     homepage = "https://github.com/python-openapi/openapi-schema-validator";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ AluisioASG ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/openapi-spec-validator/default.nix b/pkgs/development/python-modules/openapi-spec-validator/default.nix
index c43439e36ba0a..54c7d5fc19b97 100644
--- a/pkgs/development/python-modules/openapi-spec-validator/default.nix
+++ b/pkgs/development/python-modules/openapi-spec-validator/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
 
-# build-system
-, poetry-core
+  # build-system
+  poetry-core,
 
-# propagates
-, importlib-resources
-, jsonschema
-, jsonschema-path
-, lazy-object-proxy
-, openapi-schema-validator
+  # propagates
+  importlib-resources,
+  jsonschema,
+  jsonschema-path,
+  lazy-object-proxy,
+  openapi-schema-validator,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -36,22 +37,16 @@ buildPythonPackage rec {
     sed -i '/--cov/d' pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     jsonschema
     jsonschema-path
     lazy-object-proxy
     openapi-schema-validator
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    importlib-resources
-  ];
+  ] ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # network access
diff --git a/pkgs/development/python-modules/openapi3/default.nix b/pkgs/development/python-modules/openapi3/default.nix
index 72e852d209c93..ed2b1d5904aa6 100644
--- a/pkgs/development/python-modules/openapi3/default.nix
+++ b/pkgs/development/python-modules/openapi3/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, requests
-, pyyaml
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  requests,
+  pyyaml,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,26 +20,20 @@ buildPythonPackage rec {
     hash = "sha256-ohpJBXPYnKaa2ny+WFrbL8pJZCV/bzod9THxKBVFXSw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     requests
     pyyaml
   ];
 
-  nativeCheckinputs = [
-    pytestCheckHook
-  ];
+  nativeCheckinputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-   "openapi3"
-  ];
+  pythonImportsCheck = [ "openapi3" ];
 
   meta = with lib; {
     changelog = "https://github.com/Dorthu/openapi3/releases/tag/${version}";
-    description = "A Python3 OpenAPI 3 Spec Parser";
+    description = "Python3 OpenAPI 3 Spec Parser";
     homepage = "https://github.com/Dorthu/openapi3";
     license = licenses.bsd3;
     maintainers = with maintainers; [ techknowlogick ];
diff --git a/pkgs/development/python-modules/openbabel-bindings/default.nix b/pkgs/development/python-modules/openbabel-bindings/default.nix
index 6cac1fb385b22..4ab6b77465c1f 100644
--- a/pkgs/development/python-modules/openbabel-bindings/default.nix
+++ b/pkgs/development/python-modules/openbabel-bindings/default.nix
@@ -1,11 +1,16 @@
-{ lib, openbabel, python, buildPythonPackage }:
+{
+  lib,
+  openbabel,
+  python,
+  buildPythonPackage,
+}:
 
 buildPythonPackage rec {
   inherit (openbabel) pname version;
 
-  src = "${openbabel}/lib/python${python.sourceVersion.major}.${python.sourceVersion.minor}/site-packages";
+  src = "${openbabel}/${python.sitePackages}";
 
-  nativeBuildInputs = [ openbabel ];
+  buildInputs = [ openbabel ];
 
   # these env variables are used by the bindings to find libraries
   # they need to be included explicitly in your nix-shell for
diff --git a/pkgs/development/python-modules/opencensus-context/default.nix b/pkgs/development/python-modules/opencensus-context/default.nix
index ae7897eae7acf..1f3d568e27f32 100644
--- a/pkgs/development/python-modules/opencensus-context/default.nix
+++ b/pkgs/development/python-modules/opencensus-context/default.nix
@@ -1,7 +1,7 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
-, unittestCheckHook
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +14,7 @@ buildPythonPackage rec {
     hash = "sha256-oDEIw8ENjIC7Xd9cih8DMWH6YZcqmRf5ubOhhRfwCIw=";
   };
 
-  pythonNamespaces = [
-    "opencensus.common"
-  ];
+  pythonNamespaces = [ "opencensus.common" ];
 
   doCheck = false; # No tests in archive
 
diff --git a/pkgs/development/python-modules/opencensus-ext-azure/default.nix b/pkgs/development/python-modules/opencensus-ext-azure/default.nix
index 4effafe3311a0..dc0aa827b99ba 100644
--- a/pkgs/development/python-modules/opencensus-ext-azure/default.nix
+++ b/pkgs/development/python-modules/opencensus-ext-azure/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, azure-core
-, azure-identity
-, opencensus
-, psutil
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  azure-core,
+  azure-identity,
+  opencensus,
+  psutil,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -14,8 +14,6 @@ buildPythonPackage rec {
   version = "1.1.13";
   format = "setuptools";
 
-  disabled = pythonOlder "3.4";
-
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-rsMEchdwBTebpWpwKgl9YYxfV1WOG7ZnbsdflIEwaSo=";
@@ -37,6 +35,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/census-instrumentation/opencensus-python/tree/master/contrib/opencensus-ext-azure";
     description = "OpenCensus Azure Monitor Exporter";
     license = licenses.asl20;
-    maintainers = with maintainers; [ billhuang evilmav ];
+    maintainers = with maintainers; [
+      billhuang
+      evilmav
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/opencensus/default.nix b/pkgs/development/python-modules/opencensus/default.nix
index a1fde6da755db..d7d4ac6ddc0c8 100644
--- a/pkgs/development/python-modules/opencensus/default.nix
+++ b/pkgs/development/python-modules/opencensus/default.nix
@@ -1,9 +1,9 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
-, unittestCheckHook
-, google-api-core
-, opencensus-context
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  google-api-core,
+  opencensus-context,
 }:
 
 buildPythonPackage rec {
@@ -21,18 +21,14 @@ buildPythonPackage rec {
     opencensus-context
   ];
 
-  pythonNamespaces = [
-    "opencensus.common"
-  ];
+  pythonNamespaces = [ "opencensus.common" ];
 
   doCheck = false; # No tests in sdist
 
-  pythonImportsCheck = [
-    "opencensus.common"
-  ];
+  pythonImportsCheck = [ "opencensus.common" ];
 
   meta = with lib; {
-    description = "A stats collection and distributed tracing framework";
+    description = "Stats collection and distributed tracing framework";
     homepage = "https://github.com/census-instrumentation/opencensus-python";
     license = licenses.asl20;
     maintainers = with maintainers; [ billhuang ];
diff --git a/pkgs/development/python-modules/opencontainers/default.nix b/pkgs/development/python-modules/opencontainers/default.nix
index f60eb0dd65685..b5672a5590f21 100644
--- a/pkgs/development/python-modules/opencontainers/default.nix
+++ b/pkgs/development/python-modules/opencontainers/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -19,17 +20,11 @@ buildPythonPackage rec {
     sed -i "/pytest-runner/d" setup.py
   '';
 
-  passthru.optional-dependencies.reggie = [
-    requests
-  ];
+  passthru.optional-dependencies.reggie = [ requests ];
 
-  pythonImportsCheck = [
-    "opencontainers"
-  ];
+  pythonImportsCheck = [ "opencontainers" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.reggie;
+  nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.reggie;
 
   __darwinAllowLocalNetworking = true;
 
@@ -37,6 +32,6 @@ buildPythonPackage rec {
     description = "Python module for oci specifications";
     homepage = "https://github.com/vsoch/oci-python";
     license = licenses.mpl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/openerz-api/default.nix b/pkgs/development/python-modules/openerz-api/default.nix
index 698816a62620b..500aa9ca3af2f 100644
--- a/pkgs/development/python-modules/openerz-api/default.nix
+++ b/pkgs/development/python-modules/openerz-api/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
-, testfixtures
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
+  testfixtures,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-CwK61StspZJt0TALv76zfibUzlriwp9HRoYOtX9bU+c=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     pytestCheckHook
     testfixtures
   ];
 
-  pythonImportsCheck = [
-    "openerz_api"
-  ];
+  pythonImportsCheck = [ "openerz_api" ];
 
   meta = with lib; {
     description = "Python module to interact with the OpenERZ API";
diff --git a/pkgs/development/python-modules/openevsewifi/default.nix b/pkgs/development/python-modules/openevsewifi/default.nix
index 86bb9636a2e3f..8a65b3e56f34c 100644
--- a/pkgs/development/python-modules/openevsewifi/default.nix
+++ b/pkgs/development/python-modules/openevsewifi/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, deprecated
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
+{
+  lib,
+  buildPythonPackage,
+  deprecated,
+  fetchFromGitHub,
+  fetchpatch,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-7+BC5WG0JoyHNjgsoJBQRVDpmdXMJCV4bMf6pIaS5qo=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     deprecated
@@ -52,9 +51,7 @@ buildPythonPackage rec {
       --replace 'pytest-cov = "^2.8.1"' ""
   '';
 
-  pythonImportsCheck = [
-    "openevsewifi"
-  ];
+  pythonImportsCheck = [ "openevsewifi" ];
 
   meta = with lib; {
     description = "Module for communicating with the wifi module from OpenEVSE";
diff --git a/pkgs/development/python-modules/openhomedevice/default.nix b/pkgs/development/python-modules/openhomedevice/default.nix
index 2e7ddf92a1d63..b5f60e5652623 100644
--- a/pkgs/development/python-modules/openhomedevice/default.nix
+++ b/pkgs/development/python-modules/openhomedevice/default.nix
@@ -1,28 +1,32 @@
-{ lib
-, aioresponses
-, async-upnp-client
-, buildPythonPackage
-, fetchFromGitHub
-, lxml
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aioresponses,
+  async-upnp-client,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxml,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "openhomedevice";
-  version = "2.2";
-  format = "setuptools";
+  version = "2.3.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.5";
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "bazwilliams";
-    repo = pname;
+    repo = "openhomedevice";
     rev = "refs/tags/${version}";
-    hash = "sha256-GGp7nKFH01m1KW6yMkKlAdd26bDi8JDWva6OQ0CWMIw=";
+    hash = "sha256-u05aciRFCnqMJRClUMApAPDLpXOKn4wUTLgvR7BVZTA=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     async-upnp-client
     lxml
   ];
@@ -32,13 +36,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "openhomedevice"
-  ];
+  pythonImportsCheck = [ "openhomedevice" ];
 
-  pytestFlagsArray = [
-    "tests/*.py"
-  ];
+  pytestFlagsArray = [ "tests/*.py" ];
 
   meta = with lib; {
     description = "Python module to access Linn Ds and Openhome devices";
diff --git a/pkgs/development/python-modules/openidc-client/default.nix b/pkgs/development/python-modules/openidc-client/default.nix
index a2110cb6a309d..99a00cde6621c 100644
--- a/pkgs/development/python-modules/openidc-client/default.nix
+++ b/pkgs/development/python-modules/openidc-client/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, requests }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+}:
 
 buildPythonPackage rec {
   pname = "openidc-client";
@@ -14,7 +19,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A CLI python OpenID Connect client with token caching and management";
+    description = "CLI python OpenID Connect client with token caching and management";
     homepage = "https://github.com/puiterwijk";
     license = licenses.mit;
     maintainers = with maintainers; [ disassembler ];
diff --git a/pkgs/development/python-modules/openllm-client/default.nix b/pkgs/development/python-modules/openllm-client/default.nix
deleted file mode 100644
index 221f0ab8011c2..0000000000000
--- a/pkgs/development/python-modules/openllm-client/default.nix
+++ /dev/null
@@ -1,73 +0,0 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, bentoml
-, hatch-fancy-pypi-readme
-, hatch-vcs
-, hatchling
-, anyio
-, distro
-, httpx
-, httpx-auth
-, openllm-core
-, soundfile
-, transformers
-}:
-
-buildPythonPackage rec {
-  inherit (openllm-core) src version;
-  pname = "openllm-client";
-  pyproject = true;
-
-  disabled = pythonOlder "3.8";
-
-  sourceRoot = "${src.name}/openllm-client";
-
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail "hatchling==1.18.0" "hatchling" \
-      --replace-fail "hatch-vcs==0.3.0" "hatch-vcs" \
-      --replace-fail "hatch-fancy-pypi-readme==23.1.0" "hatch-fancy-pypi-readme"
-  '';
-
-  build-system = [
-    hatch-fancy-pypi-readme
-    hatch-vcs
-    hatchling
-  ];
-
-  dependencies = [
-    anyio
-    distro
-    httpx
-    openllm-core
-  ];
-
-  optional-dependencies = {
-    grpc = [
-      bentoml
-    ] ++ bentoml.optional-dependencies.grpc;
-    auth = [
-      httpx-auth
-    ];
-    agents = [
-      transformers
-      # diffusers
-      soundfile
-    ] ++ transformers.optional-dependencies.agents;
-    full = optional-dependencies.grpc ++ optional-dependencies.agents;
-  };
-
-  # there is no tests
-  doCheck = false;
-
-  pythonImportsCheck = [ "openllm_client" ];
-
-  meta = with lib; {
-    description = "Interacting with OpenLLM HTTP/gRPC server, or any BentoML server";
-    homepage = "https://github.com/bentoml/OpenLLM/tree/main/openllm-client";
-    changelog = "https://github.com/bentoml/OpenLLM/blob/${src.rev}/CHANGELOG.md";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ natsukium ];
-  };
-}
diff --git a/pkgs/development/python-modules/openllm-core/default.nix b/pkgs/development/python-modules/openllm-core/default.nix
deleted file mode 100644
index f59d92615cf80..0000000000000
--- a/pkgs/development/python-modules/openllm-core/default.nix
+++ /dev/null
@@ -1,109 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pythonRelaxDepsHook
-, accelerate
-, attrs
-, bitsandbytes
-, bentoml
-, cattrs
-, click-option-group
-, datasets
-, deepmerge
-, hatch-fancy-pypi-readme
-, hatch-vcs
-, hatchling
-, inflection
-, mypy-extensions
-, orjson
-, peft
-, transformers
-, typing-extensions
-}:
-
-buildPythonPackage rec {
-  pname = "openllm-core";
-  version = "0.4.44";
-  pyproject = true;
-
-  disabled = pythonOlder "3.8";
-
-  src = fetchFromGitHub {
-    owner = "bentoml";
-    repo = "OpenLLM";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-kRR715Vnt9ZAmxuWvtH0z093crH0JFrEKPtbjO3QMRc=";
-  };
-
-  sourceRoot = "${src.name}/openllm-core";
-
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
-
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail "hatch-vcs==0.3.0" "hatch-vcs" \
-      --replace-fail "hatchling==1.18.0" "hatchling" \
-      --replace-fail "hatch-fancy-pypi-readme==23.1.0" "hatch-fancy-pypi-readme"
-  '';
-
-  pythonRelaxDeps = [
-    "cattrs"
-  ];
-
-  build-system = [
-    hatch-fancy-pypi-readme
-    hatch-vcs
-    hatchling
-  ];
-
-  dependencies = [
-    attrs
-    cattrs
-    # not listed in pyproject.toml, but required at runtime
-    click-option-group
-    deepmerge
-    inflection
-    mypy-extensions
-    orjson
-    typing-extensions
-  ];
-
-  optional-dependencies = {
-    vllm = [
-      # vllm
-    ];
-    bentoml = [
-      bentoml
-    ];
-    fine-tune = [
-      accelerate
-      bitsandbytes
-      datasets
-      peft
-      transformers
-      # trl
-    ] ++ transformers.optional-dependencies.torch
-      ++ transformers.optional-dependencies.tokenizers;
-    full = with optional-dependencies; (
-      vllm
-      # use absolute path to disambiguate with derivbation argument
-      ++ optional-dependencies.bentoml
-      ++ fine-tune );
-  };
-
-  # there is no tests
-  doCheck = false;
-
-  pythonImportsCheck = [ "openllm_core" ];
-
-  meta = with lib; {
-    description = "Core components for OpenLLM";
-    homepage = "https://github.com/bentoml/OpenLLM/tree/main/openllm-core";
-    changelog = "https://github.com/bentoml/OpenLLM/blob/${src.rev}/CHANGELOG.md";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ natsukium ];
-  };
-}
diff --git a/pkgs/development/python-modules/openllm/default.nix b/pkgs/development/python-modules/openllm/default.nix
deleted file mode 100644
index 8a37e257ffa98..0000000000000
--- a/pkgs/development/python-modules/openllm/default.nix
+++ /dev/null
@@ -1,195 +0,0 @@
-{ lib
-, buildPythonPackage
-, hatch-fancy-pypi-readme
-, hatch-vcs
-, hatchling
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, accelerate
-, bentoml
-, bitsandbytes
-, build
-, click
-, ctranslate2
-, datasets
-, docker
-, einops
-, ghapi
-, huggingface-hub
-, hypothesis
-, ipython
-, jupyter
-, jupytext
-, nbformat
-, notebook
-, openai
-, openllm-client
-, openllm-core
-, optimum
-, peft
-, pytest-mock
-, pytest-randomly
-, pytest-rerunfailures
-, pytest-xdist
-, safetensors
-, scipy
-, sentencepiece
-, soundfile
-, syrupy
-, tabulate
-, tiktoken
-, transformers
-, openai-triton
-, xformers
-}:
-
-buildPythonPackage rec {
-  inherit (openllm-core) src version;
-  pname = "openllm";
-  pyproject = true;
-
-  disabled = pythonOlder "3.8";
-
-  sourceRoot = "${src.name}/openllm-python";
-
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
-
-  pythonRemoveDeps = [
-    # remove cuda-python as it has an unfree license
-    "cuda-python"
-  ];
-
-  build-system = [
-    hatch-fancy-pypi-readme
-    hatch-vcs
-    hatchling
-  ];
-
-  dependencies = [
-    accelerate
-    bentoml
-    bitsandbytes
-    build
-    click
-    einops
-    ghapi
-    openllm-client
-    openllm-core
-    optimum
-    safetensors
-    scipy
-    sentencepiece
-    transformers
-  ] ++ bentoml.optional-dependencies.io
-  ++ tabulate.optional-dependencies.widechars
-  ++ transformers.optional-dependencies.tokenizers
-  ++ transformers.optional-dependencies.torch;
-
-  optional-dependencies = {
-    agents = [
-      # diffusers
-      soundfile
-      transformers
-    ] ++ transformers.optional-dependencies.agents;
-    awq = [
-      # autoawq
-    ];
-    baichuan = [
-      # cpm-kernels
-    ];
-    chatglm = [
-      # cpm-kernels
-    ];
-    ctranslate = [
-      ctranslate2
-    ];
-    falcon = [
-      xformers
-    ];
-    fine-tune = [
-      datasets
-      huggingface-hub
-      peft
-      # trl
-    ];
-    ggml = [
-      # ctransformers
-    ];
-    gptq = [
-      # auto-gptq
-    ]; # ++ autogptq.optional-dependencies.triton;
-    grpc = [
-      bentoml
-    ] ++ bentoml.optional-dependencies.grpc;
-    mpt = [
-      openai-triton
-    ];
-    openai = [
-      openai
-      tiktoken
-    ] ++ openai.optional-dependencies.datalib;
-    playground = [
-      ipython
-      jupyter
-      jupytext
-      nbformat
-      notebook
-    ];
-    starcoder = [
-      bitsandbytes
-    ];
-    vllm = [
-      # vllm
-    ];
-    full = with optional-dependencies; (
-      agents ++ awq ++ baichuan ++ chatglm ++ ctranslate ++ falcon ++ fine-tune ++ ggml ++ gptq ++ mpt
-      # disambiguate between derivation input and passthru field
-      ++ optional-dependencies.openai
-      ++ playground ++ starcoder ++ vllm
-    );
-    all = optional-dependencies.full;
-  };
-
-  nativeCheckInputs = [
-    docker
-    hypothesis
-    pytest-mock
-    pytest-randomly
-    pytest-rerunfailures
-    pytest-xdist
-    pytestCheckHook
-    syrupy
-  ];
-
-  preCheck = ''
-    export HOME=$TMPDIR
-    # skip GPUs test on CI
-    export GITHUB_ACTIONS=1
-    # disable hypothesis' deadline
-    export CI=1
-  '';
-
-  disabledTestPaths = [
-    # require network access
-    "tests/models"
-  ];
-
-  disabledTests = [
-    # incompatible with recent TypedDict
-    # https://github.com/bentoml/OpenLLM/blob/f3fd32d596253ae34c68e2e9655f19f40e05f666/openllm-python/tests/configuration_test.py#L18-L21
-    "test_missing_default"
-  ];
-
-  pythonImportsCheck = [ "openllm" ];
-
-  meta = with lib; {
-    description = "Operating LLMs in production";
-    homepage = "https://github.com/bentoml/OpenLLM/tree/main/openllm-python";
-    changelog = "https://github.com/bentoml/OpenLLM/blob/${src.rev}/CHANGELOG.md";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ happysalada natsukium ];
-  };
-}
diff --git a/pkgs/development/python-modules/openpyxl/default.nix b/pkgs/development/python-modules/openpyxl/default.nix
index c8934bf888a1d..7fdf319f9e619 100644
--- a/pkgs/development/python-modules/openpyxl/default.nix
+++ b/pkgs/development/python-modules/openpyxl/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, et-xmlfile
-, fetchFromGitLab
-, lxml
-, pandas
-, pillow
-, pytest7CheckHook
-, pythonAtLeast
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  et-xmlfile,
+  fetchFromGitLab,
+  lxml,
+  pandas,
+  pillow,
+  pytest7CheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     hash = "sha256-SWRbjA83AOLrfe6on2CSb64pH5EWXkfyYcTqWJNBEP0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    et-xmlfile
-  ];
+  propagatedBuildInputs = [ et-xmlfile ];
 
   nativeCheckInputs = [
     lxml
@@ -45,31 +42,31 @@ buildPythonPackage rec {
     "-W"
     "ignore::DeprecationWarning"
   ];
-  disabledTests = [
-    # Tests broken since lxml 2.12; https://foss.heptapod.net/openpyxl/openpyxl/-/issues/2116
-    "test_read"
-    "test_read_comments"
-    "test_ignore_external_blip"
-    "test_from_xml"
-    "test_filenames"
-    "test_exts"
-    "test_from_complex"
-    "test_merge_named_styles"
-    "test_unprotected_cell"
-    "test_none_values"
-    "test_rgb_colors"
-    "test_named_styles"
-    "test_read_ole_link"
-  ] ++ lib.optionals (pythonAtLeast "3.11") [
-    "test_broken_sheet_ref"
-    "test_name_invalid_index"
-    "test_defined_names_print_area"
-    "test_no_styles"
-  ];
+  disabledTests =
+    [
+      # Tests broken since lxml 2.12; https://foss.heptapod.net/openpyxl/openpyxl/-/issues/2116
+      "test_read"
+      "test_read_comments"
+      "test_ignore_external_blip"
+      "test_from_xml"
+      "test_filenames"
+      "test_exts"
+      "test_from_complex"
+      "test_merge_named_styles"
+      "test_unprotected_cell"
+      "test_none_values"
+      "test_rgb_colors"
+      "test_named_styles"
+      "test_read_ole_link"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.11") [
+      "test_broken_sheet_ref"
+      "test_name_invalid_index"
+      "test_defined_names_print_area"
+      "test_no_styles"
+    ];
 
-  pythonImportsCheck = [
-    "openpyxl"
-  ];
+  pythonImportsCheck = [ "openpyxl" ];
 
   meta = with lib; {
     description = "Python library to read/write Excel 2010 xlsx/xlsm files";
diff --git a/pkgs/development/python-modules/openrazer/common.nix b/pkgs/development/python-modules/openrazer/common.nix
index e263f07e0d021..2d5db38d963af 100644
--- a/pkgs/development/python-modules/openrazer/common.nix
+++ b/pkgs/development/python-modules/openrazer/common.nix
@@ -1,6 +1,5 @@
-{ lib
-, fetchFromGitHub
-}: rec {
+{ lib, fetchFromGitHub }:
+rec {
   version = "3.8.0";
   pyproject = true;
 
diff --git a/pkgs/development/python-modules/openrazer/daemon.nix b/pkgs/development/python-modules/openrazer/daemon.nix
index 317d36b305760..f1af8a82faf71 100644
--- a/pkgs/development/python-modules/openrazer/daemon.nix
+++ b/pkgs/development/python-modules/openrazer/daemon.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, daemonize
-, dbus-python
-, fetchFromGitHub
-, gobject-introspection
-, gtk3
-, makeWrapper
-, pygobject3
-, pyudev
-, setproctitle
-, setuptools
-, wrapGAppsHook
-, notify2
+{
+  lib,
+  buildPythonPackage,
+  daemonize,
+  dbus-python,
+  fetchFromGitHub,
+  gobject-introspection,
+  gtk3,
+  pygobject3,
+  pyudev,
+  setproctitle,
+  setuptools,
+  wrapGAppsNoGuiHook,
+  notify2,
+  glib
 }:
 
 let
@@ -20,7 +21,10 @@ in
 buildPythonPackage (common // {
   pname = "openrazer-daemon";
 
-  outputs = [ "out" "man" ];
+  outputs = [
+    "out"
+    "man"
+  ];
 
   sourceRoot = "${common.src.name}/daemon";
 
@@ -29,13 +33,16 @@ buildPythonPackage (common // {
       --replace-fail "plugdev" "openrazer"
   '';
 
-  nativeBuildInputs = [ setuptools ];
+  nativeBuildInputs = [ setuptools wrapGAppsNoGuiHook gobject-introspection ];
+
+  buildInputs = [
+    glib
+    gtk3
+  ];
 
   propagatedBuildInputs = [
     daemonize
     dbus-python
-    gobject-introspection
-    gtk3
     pygobject3
     pyudev
     setproctitle
@@ -49,8 +56,14 @@ buildPythonPackage (common // {
   # no tests run
   doCheck = false;
 
+  dontWrapGApps = true;
+
+  preFixup = ''
+    makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
   meta = common.meta // {
-    description = "An entirely open source user-space daemon that allows you to manage your Razer peripherals on GNU/Linux";
+    description = "Entirely open source user-space daemon that allows you to manage your Razer peripherals on GNU/Linux";
     mainProgram = "openrazer-daemon";
   };
 })
diff --git a/pkgs/development/python-modules/openrazer/pylib.nix b/pkgs/development/python-modules/openrazer/pylib.nix
index d4da892c30583..577f8595aba6b 100644
--- a/pkgs/development/python-modules/openrazer/pylib.nix
+++ b/pkgs/development/python-modules/openrazer/pylib.nix
@@ -1,32 +1,36 @@
-{ lib
-, buildPythonPackage
-, dbus-python
-, fetchFromGitHub
-, numpy
-, openrazer-daemon
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  dbus-python,
+  fetchFromGitHub,
+  numpy,
+  openrazer-daemon,
+  setuptools,
 }:
 
 let
   common = import ./common.nix { inherit lib fetchFromGitHub; };
 in
-buildPythonPackage (common // {
-  pname = "openrazer";
+buildPythonPackage (
+  common
+  // {
+    pname = "openrazer";
 
-  sourceRoot = "${common.src.name}/pylib";
+    sourceRoot = "${common.src.name}/pylib";
 
-  nativeBuildInputs = [ setuptools ];
+    nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    dbus-python
-    numpy
-    openrazer-daemon
-  ];
+    propagatedBuildInputs = [
+      dbus-python
+      numpy
+      openrazer-daemon
+    ];
 
-  # no tests run
-  doCheck = false;
+    # no tests run
+    doCheck = false;
 
-  meta = common.meta // {
-    description = "An entirely open source Python library that allows you to manage your Razer peripherals on GNU/Linux";
-  };
-})
+    meta = common.meta // {
+      description = "Entirely open source Python library that allows you to manage your Razer peripherals on GNU/Linux";
+    };
+  }
+)
diff --git a/pkgs/development/python-modules/openrgb-python/default.nix b/pkgs/development/python-modules/openrgb-python/default.nix
index c41c1d9760b59..90b710c6e0350 100644
--- a/pkgs/development/python-modules/openrgb-python/default.nix
+++ b/pkgs/development/python-modules/openrgb-python/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-2eeb2XHYvBaHkHHs9KxZKDGXtcLaT28c/aLC9pxrRmM=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "openrgb"
-  ];
+  pythonImportsCheck = [ "openrgb" ];
 
   meta = with lib; {
     description = "Module for the OpenRGB SDK";
diff --git a/pkgs/development/python-modules/openrouteservice/default.nix b/pkgs/development/python-modules/openrouteservice/default.nix
index 72945907d4ebd..eae98abfeeb9f 100644
--- a/pkgs/development/python-modules/openrouteservice/default.nix
+++ b/pkgs/development/python-modules/openrouteservice/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchFromGitHub, responses, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  responses,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "openrouteservice";
@@ -12,7 +18,10 @@ buildPythonPackage rec {
     sha256 = "1d5qbygb81fhpwfdm1a118r3xv45xz9n9avfkgxkvw1n8y6ywz2q";
   };
 
-  nativeCheckInputs = [ pytestCheckHook responses ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    responses
+  ];
 
   disabledTests = [
     # touches network
@@ -23,7 +32,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/GIScience/openrouteservice-py";
-    description = "The Python API to consume openrouteservice(s) painlessly";
+    description = "Python API to consume openrouteservice(s) painlessly";
     license = licenses.asl20;
     maintainers = with maintainers; [ Scriptkiddi ];
   };
diff --git a/pkgs/development/python-modules/opensearch-py/default.nix b/pkgs/development/python-modules/opensearch-py/default.nix
index da0c13d63d614..c20daff074c8d 100644
--- a/pkgs/development/python-modules/opensearch-py/default.nix
+++ b/pkgs/development/python-modules/opensearch-py/default.nix
@@ -1,45 +1,45 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, certifi
-, python-dateutil
-, requests
-, six
-, urllib3
+  # dependencies
+  certifi,
+  python-dateutil,
+  requests,
+  six,
+  urllib3,
+  events,
 
-# optional-dependencies
-, aiohttp
+  # optional-dependencies
+  aiohttp,
 
-# tests
-, botocore
-, mock
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
-, pyyaml
-, pytz
+  # tests
+  botocore,
+  mock,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  pyyaml,
+  pytz,
 }:
 
 buildPythonPackage rec {
   pname = "opensearch-py";
-  version = "2.4.2";
+  version = "2.7.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "opensearch-project";
     repo = "opensearch-py";
     rev = "refs/tags/v${version}";
-    hash = "sha256-MPuHdjhsrccKYUIDlDYGoXBbBu/V+q43Puf0e5j8vhU=";
+    hash = "sha256-GC0waXxHRiXVXjhTGbet3HvDKmUBKzoufu/J4fmrM+k=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     certifi
@@ -47,11 +47,10 @@ buildPythonPackage rec {
     requests
     six
     urllib3
+    events
   ];
 
-  passthru.optional-dependencies.async = [
-    aiohttp
-  ];
+  passthru.optional-dependencies.async = [ aiohttp ];
 
   nativeCheckInputs = [
     botocore
diff --git a/pkgs/development/python-modules/opensensemap-api/default.nix b/pkgs/development/python-modules/opensensemap-api/default.nix
index a5730f8ba9fda..ab9b93fc6f389 100644
--- a/pkgs/development/python-modules/opensensemap-api/default.nix
+++ b/pkgs/development/python-modules/opensensemap-api/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "opensensemap_api"
-  ];
+  pythonImportsCheck = [ "opensensemap_api" ];
 
   meta = with lib; {
     description = "OpenSenseMap API Python client";
diff --git a/pkgs/development/python-modules/opensfm/default.nix b/pkgs/development/python-modules/opensfm/default.nix
index 674ec572e1408..bfaa8b8f1b73e 100644
--- a/pkgs/development/python-modules/opensfm/default.nix
+++ b/pkgs/development/python-modules/opensfm/default.nix
@@ -1,46 +1,42 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, cmake
-, opencv4
-, ceres-solver
-, suitesparse
-, metis
-, eigen
-, pkg-config
-, pybind11
-, numpy
-, pyyaml
-, lapack
-, gtest
-, gflags
-, glog
-, pytestCheckHook
-, networkx
-, pillow
-, exifread
-, gpxpy
-, pyproj
-, python-dateutil
-, joblib
-, repoze-lru
-, xmltodict
-, cloudpickle
-, scipy
-, sphinx
-, matplotlib
-, fpdf
-,
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cmake,
+  opencv4,
+  ceres-solver,
+  suitesparse,
+  metis,
+  eigen,
+  pkg-config,
+  pybind11,
+  numpy,
+  pyyaml,
+  lapack,
+  gtest,
+  gflags,
+  glog,
+  pytestCheckHook,
+  networkx,
+  pillow,
+  exifread,
+  gpxpy,
+  pyproj,
+  python-dateutil,
+  joblib,
+  repoze-lru,
+  xmltodict,
+  cloudpickle,
+  scipy,
+  sphinx,
+  matplotlib,
+  fpdf,
 }:
 
 let
   ceresSplit = (builtins.length ceres-solver.outputs) > 1;
-  ceres' =
-    if ceresSplit
-    then ceres-solver.dev
-    else ceres-solver;
+  ceres' = if ceresSplit then ceres-solver.dev else ceres-solver;
 in
 buildPythonPackage rec {
   pname = "opensfm";
@@ -71,7 +67,11 @@ buildPythonPackage rec {
     sed -i -e 's/^.*BuildDoc.*$//' setup.py
   '';
 
-  nativeBuildInputs = [ cmake pkg-config sphinx ];
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    sphinx
+  ];
   buildInputs = [
     ceres'
     suitesparse
@@ -109,17 +109,19 @@ buildPythonPackage rec {
     "-Sopensfm/src"
   ];
 
-  disabledTests = [
-    "test_run_all" # Matplotlib issues. Broken integration is less useless than a broken build
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_reconstruction_incremental"
-    "test_reconstruction_triangulation"
-  ];
+  disabledTests =
+    [
+      "test_run_all" # Matplotlib issues. Broken integration is less useless than a broken build
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      "test_reconstruction_incremental"
+      "test_reconstruction_triangulation"
+    ];
 
   pythonImportsCheck = [ "opensfm" ];
 
   meta = {
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     maintainers = [ lib.maintainers.SomeoneSerge ];
     license = lib.licenses.bsd2;
     changelog = "https://github.com/mapillary/OpenSfM/blob/${src.rev}/CHANGELOG.md";
diff --git a/pkgs/development/python-modules/openshift/default.nix b/pkgs/development/python-modules/openshift/default.nix
index 0a75792644b18..1e257094a18d5 100644
--- a/pkgs/development/python-modules/openshift/default.nix
+++ b/pkgs/development/python-modules/openshift/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, jinja2
-, kubernetes
-, ruamel-yaml
-, six
-, python-string-utils
-, pytest-bdd
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jinja2,
+  kubernetes,
+  ruamel-yaml,
+  six,
+  python-string-utils,
+  pytest-bdd,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -37,7 +38,7 @@ buildPythonPackage rec {
     six
   ];
 
-  pythonImportsCheck = ["openshift"];
+  pythonImportsCheck = [ "openshift" ];
 
   nativeCheckInputs = [
     pytest-bdd
diff --git a/pkgs/development/python-modules/opensimplex/default.nix b/pkgs/development/python-modules/opensimplex/default.nix
index 6ddf5c6d03788..634efaf196b20 100644
--- a/pkgs/development/python-modules/opensimplex/default.nix
+++ b/pkgs/development/python-modules/opensimplex/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/openstackdocstheme/default.nix b/pkgs/development/python-modules/openstackdocstheme/default.nix
index 1ac6b6cae5460..b316a7aaeee25 100644
--- a/pkgs/development/python-modules/openstackdocstheme/default.nix
+++ b/pkgs/development/python-modules/openstackdocstheme/default.nix
@@ -1,23 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, dulwich
-, pbr
-, sphinx
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  dulwich,
+  pbr,
+  sphinx,
+  pythonAtLeast,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "openstackdocstheme";
-  version = "3.2.0";
-  format = "setuptools";
+  version = "3.3.0";
+  pyproject = true;
 
   # breaks on import due to distutils import through pbr.packaging
   disabled = pythonAtLeast "3.12";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-PwSWLJr5Hjwz8cRXXutnE4Jc+vLcL3TJTZl6biK/4E4=";
+    hash = "sha256-wmZJmX5bQKM1uwqWxynkY5jPJaBn+Y2eqSRkE2Ub0qM=";
   };
 
   postPatch = ''
@@ -26,7 +28,13 @@ buildPythonPackage rec {
     rm test-requirements.txt
   '';
 
-  propagatedBuildInputs = [ dulwich pbr sphinx ];
+  build-system = [ setuptools ];
+
+  dependencies = [
+    dulwich
+    pbr
+    sphinx
+  ];
 
   # no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/openstacksdk/default.nix b/pkgs/development/python-modules/openstacksdk/default.nix
index 3f997d4d4cede..121f64dd535b4 100644
--- a/pkgs/development/python-modules/openstacksdk/default.nix
+++ b/pkgs/development/python-modules/openstacksdk/default.nix
@@ -1,35 +1,59 @@
-{ lib
-, buildPythonPackage
-, callPackage
-, fetchPypi
-, platformdirs
-, cryptography
-, dogpile-cache
-, jmespath
-, jsonpatch
-, keystoneauth1
-, munch
-, netifaces
-, os-service-types
-, pbr
-, pythonOlder
-, pyyaml
-, requestsexceptions
+{
+  lib,
+  buildPythonPackage,
+  callPackage,
+  fetchPypi,
+  platformdirs,
+  cryptography,
+  dogpile-cache,
+  jmespath,
+  jsonpatch,
+  keystoneauth1,
+  munch,
+  netifaces,
+  openstackdocstheme,
+  os-service-types,
+  pbr,
+  pythonOlder,
+  pyyaml,
+  requestsexceptions,
+  setuptools,
+  sphinxHook,
 }:
 
 buildPythonPackage rec {
   pname = "openstacksdk";
-  version = "3.1.0";
-  format = "setuptools";
+  version = "4.0.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
+
+  outputs = [
+    "out"
+    "man"
+  ];
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-cH8V1+wHSrJDS5peGYT6yrAPgi0nL0wqXeDSKgnrec0=";
+    hash = "sha256-54YN2WtwUxMJI8EdVx0lgCuWjx4xOIRct8rHxrMzv0s=";
   };
 
-  propagatedBuildInputs = [
+  postPatch = ''
+    # Disable rsvgconverter not needed to build manpage
+    substituteInPlace doc/source/conf.py \
+      --replace-fail "'sphinxcontrib.rsvgconverter'," "#'sphinxcontrib.rsvgconverter',"
+  '';
+
+  nativeBuildInputs = [
+    openstackdocstheme
+    sphinxHook
+  ];
+
+  sphinxBuilders = [ "man" ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     platformdirs
     cryptography
     dogpile-cache
@@ -51,12 +75,10 @@ buildPythonPackage rec {
     tests = callPackage ./tests.nix { };
   };
 
-  pythonImportsCheck = [
-    "openstack"
-  ];
+  pythonImportsCheck = [ "openstack" ];
 
   meta = with lib; {
-    description = "An SDK for building applications to work with OpenStack";
+    description = "SDK for building applications to work with OpenStack";
     mainProgram = "openstack-inventory";
     homepage = "https://github.com/openstack/openstacksdk";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/openstacksdk/tests.nix b/pkgs/development/python-modules/openstacksdk/tests.nix
index c3f16f7d9ef67..c5bbc68e3d6cc 100644
--- a/pkgs/development/python-modules/openstacksdk/tests.nix
+++ b/pkgs/development/python-modules/openstacksdk/tests.nix
@@ -1,16 +1,17 @@
-{ buildPythonPackage
-, ddt
-, hacking
-, jsonschema
-, lib
-, openstacksdk
-, oslo-config
-, oslotest
-, prometheus-client
-, requests-mock
-, stdenv
-, stestr
-, testscenarios
+{
+  buildPythonPackage,
+  ddt,
+  hacking,
+  jsonschema,
+  lib,
+  openstacksdk,
+  oslo-config,
+  oslotest,
+  prometheus-client,
+  requests-mock,
+  stdenv,
+  stestr,
+  testscenarios,
 }:
 
 buildPythonPackage {
@@ -34,32 +35,41 @@ buildPythonPackage {
     testscenarios
   ];
 
-  checkPhase = ''
-    stestr run -e <(echo "
-  '' + lib.optionalString stdenv.isAarch64 ''
-    openstack.tests.unit.cloud.test_baremetal_node.TestBaremetalNode.test_node_set_provision_state_with_retries
-    openstack.tests.unit.cloud.test_role_assignment.TestRoleAssignment.test_grant_role_user_domain_exists
-    openstack.tests.unit.cloud.test_volume_backups.TestVolumeBackups.test_delete_volume_backup_force
-    openstack.tests.unit.object_store.v1.test_proxy.TestTempURLBytesPathAndKey.test_set_account_temp_url_key_second
-    openstack.tests.unit.cloud.test_security_groups.TestSecurityGroups.test_delete_security_group_neutron_not_found
-  '' + ''
-    openstack.tests.unit.cloud.test_baremetal_node.TestBaremetalNode.test_wait_for_baremetal_node_lock_locked
-    openstack.tests.unit.cloud.test_baremetal_node.TestBaremetalNode.test_inspect_machine_inspect_failed
-    openstack.tests.unit.cloud.test_baremetal_node.TestBaremetalNode.test_inspect_machine_available_wait
-    openstack.tests.unit.cloud.test_baremetal_node.TestBaremetalNode.test_inspect_machine_wait
-    openstack.tests.unit.cloud.test_image.TestImage.test_create_image_task
-    openstack.tests.unit.image.v2.test_proxy.TestImageProxy.test_wait_for_task_error_396
-    openstack.tests.unit.image.v2.test_proxy.TestImageProxy.test_wait_for_task_wait
-    openstack.tests.unit.test_resource.TestWaitForStatus.test_callback
-    openstack.tests.unit.test_resource.TestWaitForStatus.test_status_fails
-    openstack.tests.unit.test_resource.TestWaitForStatus.test_status_fails_different_attribute
-    openstack.tests.unit.test_resource.TestWaitForStatus.test_status_match
-    openstack.tests.unit.test_resource.TestWaitForStatus.test_status_match_with_none
-    openstack.tests.unit.test_stats.TestStats.test_list_projects
-    openstack.tests.unit.test_stats.TestStats.test_projects
-    openstack.tests.unit.test_stats.TestStats.test_servers
-    openstack.tests.unit.test_stats.TestStats.test_servers_no_detail
-    openstack.tests.unit.test_stats.TestStats.test_timeout
-    ")
-  '';
+  checkPhase =
+    ''
+      stestr run -e <(echo "
+    ''
+    + lib.optionalString stdenv.hostPlatform.isAarch64 ''
+      openstack.tests.unit.cloud.test_baremetal_node.TestBaremetalNode.test_node_set_provision_state_with_retries
+      openstack.tests.unit.cloud.test_role_assignment.TestRoleAssignment.test_grant_role_user_domain_exists
+      openstack.tests.unit.cloud.test_volume_backups.TestVolumeBackups.test_delete_volume_backup_force
+      openstack.tests.unit.object_store.v1.test_proxy.TestTempURLBytesPathAndKey.test_set_account_temp_url_key_second
+      openstack.tests.unit.cloud.test_security_groups.TestSecurityGroups.test_delete_security_group_neutron_not_found
+    ''
+    + ''
+      openstack.tests.unit.cloud.test_baremetal_node.TestBaremetalNode.test_wait_for_baremetal_node_lock_locked
+      openstack.tests.unit.cloud.test_baremetal_node.TestBaremetalNode.test_inspect_machine_inspect_failed
+      openstack.tests.unit.cloud.test_baremetal_node.TestBaremetalNode.test_inspect_machine_available_wait
+      openstack.tests.unit.cloud.test_baremetal_node.TestBaremetalNode.test_inspect_machine_wait
+      openstack.tests.unit.cloud.test_image.TestImage.test_create_image_task
+      openstack.tests.unit.image.v2.test_proxy.TestImageProxy.test_wait_for_task_error_396
+      openstack.tests.unit.image.v2.test_proxy.TestImageProxy.test_wait_for_task_wait
+      openstack.tests.unit.image.v2.test_proxy.TestTask.test_wait_for_task_error_396
+      openstack.tests.unit.image.v2.test_proxy.TestTask.test_wait_for_task_wait
+      openstack.tests.unit.test_resource.TestWaitForDelete.test_callback
+      openstack.tests.unit.test_resource.TestWaitForDelete.test_callback_without_progress
+      openstack.tests.unit.test_resource.TestWaitForDelete.test_status
+      openstack.tests.unit.test_resource.TestWaitForDelete.test_success_not_found
+      openstack.tests.unit.test_resource.TestWaitForStatus.test_callback
+      openstack.tests.unit.test_resource.TestWaitForStatus.test_status_fails
+      openstack.tests.unit.test_resource.TestWaitForStatus.test_status_fails_different_attribute
+      openstack.tests.unit.test_resource.TestWaitForStatus.test_status_match
+      openstack.tests.unit.test_resource.TestWaitForStatus.test_status_match_with_none
+      openstack.tests.unit.test_stats.TestStats.test_list_projects
+      openstack.tests.unit.test_stats.TestStats.test_projects
+      openstack.tests.unit.test_stats.TestStats.test_servers
+      openstack.tests.unit.test_stats.TestStats.test_servers_no_detail
+      openstack.tests.unit.test_stats.TestStats.test_timeout
+      ")
+    '';
 }
diff --git a/pkgs/development/python-modules/openstep-parser/default.nix b/pkgs/development/python-modules/openstep-parser/default.nix
new file mode 100644
index 0000000000000..c7ba29f9a2271
--- /dev/null
+++ b/pkgs/development/python-modules/openstep-parser/default.nix
@@ -0,0 +1,33 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "openstep-parser";
+  version = "2.0.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "kronenthaler";
+    repo = "openstep-parser";
+    rev = "refs/tags/${version}";
+    hash = "sha256-gvfzBLLaal0Vad3C4m4wIKwJpmlhewsK4A5yeN8l6qU=";
+  };
+
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "openstep_parser" ];
+
+  meta = {
+    description = "OpenStep plist parser for Python";
+    homepage = "https://github.com/kronenthaler/openstep-parser";
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ ilaumjd ];
+  };
+}
diff --git a/pkgs/development/python-modules/openstep-plist/default.nix b/pkgs/development/python-modules/openstep-plist/default.nix
index 7921023f29420..28680e26b0911 100644
--- a/pkgs/development/python-modules/openstep-plist/default.nix
+++ b/pkgs/development/python-modules/openstep-plist/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cython
-, setuptools
-, setuptools-scm
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cython,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -24,13 +25,9 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "openstep_plist"
-  ];
+  pythonImportsCheck = [ "openstep_plist" ];
 
   meta = {
     changelog = "https://github.com/fonttools/openstep-plist/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/opentelemetry-api/default.nix b/pkgs/development/python-modules/opentelemetry-api/default.nix
index 153400f30aced..fdaa41d289ef0 100644
--- a/pkgs/development/python-modules/opentelemetry-api/default.nix
+++ b/pkgs/development/python-modules/opentelemetry-api/default.nix
@@ -1,21 +1,20 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, deprecated
-, hatchling
-, importlib-metadata
-, opentelemetry-test-utils
-, setuptools
-, pytestCheckHook
-, pythonRelaxDepsHook
-, writeScript
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  deprecated,
+  hatchling,
+  importlib-metadata,
+  opentelemetry-test-utils,
+  pytestCheckHook,
+  writeScript,
 }:
 
 let
   self = buildPythonPackage rec {
     pname = "opentelemetry-api";
-    version = "1.24.0";
+    version = "1.26.0";
     pyproject = true;
 
     disabled = pythonOlder "3.8";
@@ -25,27 +24,20 @@ let
       owner = "open-telemetry";
       repo = "opentelemetry-python";
       rev = "refs/tags/v${version}";
-      hash = "sha256-id5cwNl2idgZa1AFfolzEo5vzspv3V2c1Vtzg3EWDZs=";
+      hash = "sha256-slb1ZKGnfJRZiBh++S20en7U6RckspHHuMohHOz2Hts=";
     };
 
     sourceRoot = "${src.name}/opentelemetry-api";
 
-    nativeBuildInputs = [
-      pythonRelaxDepsHook
-    ];
 
-    build-system = [
-      hatchling
-    ];
+    build-system = [ hatchling ];
 
     dependencies = [
       deprecated
       importlib-metadata
     ];
 
-    pythonRelaxDeps = [
-      "importlib-metadata"
-    ];
+    pythonRelaxDeps = [ "importlib-metadata" ];
 
     nativeCheckInputs = [
       opentelemetry-test-utils
@@ -72,9 +64,10 @@ let
     meta = with lib; {
       homepage = "https://github.com/open-telemetry/opentelemetry-python/tree/main/opentelemetry-api";
       description = "OpenTelemetry Python API";
-      changelog = "https://github.com/open-telemetry/opentelemetry-python/releases/tag/${self.src.rev}";
+      changelog = "https://github.com/open-telemetry/opentelemetry-python/releases/tag/${lib.removePrefix "refs/tags/" self.src.rev}";
       license = licenses.asl20;
       maintainers = teams.deshaw.members ++ [ maintainers.natsukium ];
     };
   };
-in self
+in
+self
diff --git a/pkgs/development/python-modules/opentelemetry-exporter-otlp-proto-common/default.nix b/pkgs/development/python-modules/opentelemetry-exporter-otlp-proto-common/default.nix
index bc8bbec64e976..cd23b6b9d1f02 100644
--- a/pkgs/development/python-modules/opentelemetry-exporter-otlp-proto-common/default.nix
+++ b/pkgs/development/python-modules/opentelemetry-exporter-otlp-proto-common/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, hatchling
-, opentelemetry-api
-, opentelemetry-proto
-, opentelemetry-test-utils
-, pytestCheckHook
+{
+  buildPythonPackage,
+  pythonOlder,
+  hatchling,
+  opentelemetry-api,
+  opentelemetry-proto,
+  opentelemetry-test-utils,
+  pytestCheckHook,
 }:
 
 buildPythonPackage {
@@ -17,13 +17,9 @@ buildPythonPackage {
 
   sourceRoot = "${opentelemetry-api.src.name}/exporter/opentelemetry-exporter-otlp-proto-common";
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  dependencies = [
-    opentelemetry-proto
-  ];
+  dependencies = [ opentelemetry-proto ];
 
   nativeCheckInputs = [
     opentelemetry-test-utils
diff --git a/pkgs/development/python-modules/opentelemetry-exporter-otlp-proto-grpc/default.nix b/pkgs/development/python-modules/opentelemetry-exporter-otlp-proto-grpc/default.nix
index 9f1fe62dfbb47..3ddd107770b0d 100644
--- a/pkgs/development/python-modules/opentelemetry-exporter-otlp-proto-grpc/default.nix
+++ b/pkgs/development/python-modules/opentelemetry-exporter-otlp-proto-grpc/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, deprecated
-, googleapis-common-protos
-, grpcio
-, hatchling
-, opentelemetry-api
-, opentelemetry-exporter-otlp-proto-common
-, opentelemetry-proto
-, opentelemetry-test-utils
-, pytestCheckHook
+{
+  buildPythonPackage,
+  pythonOlder,
+  deprecated,
+  googleapis-common-protos,
+  grpcio,
+  hatchling,
+  opentelemetry-api,
+  opentelemetry-exporter-otlp-proto-common,
+  opentelemetry-proto,
+  opentelemetry-test-utils,
+  pytestCheckHook,
 }:
 
 buildPythonPackage {
@@ -21,9 +21,7 @@ buildPythonPackage {
 
   sourceRoot = "${opentelemetry-api.src.name}/exporter/opentelemetry-exporter-otlp-proto-grpc";
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   dependencies = [
     deprecated
@@ -39,9 +37,7 @@ buildPythonPackage {
     pytestCheckHook
   ];
 
-  disabledTestPaths = [
-    "tests/performance/benchmarks/"
-  ];
+  pytestFlagsArray = [ "tests" ];
 
   pythonImportsCheck = [ "opentelemetry.exporter.otlp.proto.grpc" ];
 
diff --git a/pkgs/development/python-modules/opentelemetry-exporter-otlp-proto-http/default.nix b/pkgs/development/python-modules/opentelemetry-exporter-otlp-proto-http/default.nix
index 8c82d0b8b5808..0599140c562bb 100644
--- a/pkgs/development/python-modules/opentelemetry-exporter-otlp-proto-http/default.nix
+++ b/pkgs/development/python-modules/opentelemetry-exporter-otlp-proto-http/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, deprecated
-, googleapis-common-protos
-, hatchling
-, opentelemetry-api
-, opentelemetry-exporter-otlp-proto-common
-, opentelemetry-proto
-, opentelemetry-sdk
-, opentelemetry-test-utils
-, requests
-, responses
-, pytestCheckHook
+{
+  buildPythonPackage,
+  pythonOlder,
+  deprecated,
+  googleapis-common-protos,
+  hatchling,
+  opentelemetry-api,
+  opentelemetry-exporter-otlp-proto-common,
+  opentelemetry-proto,
+  opentelemetry-sdk,
+  opentelemetry-test-utils,
+  requests,
+  responses,
+  pytestCheckHook,
 }:
 
 buildPythonPackage {
@@ -23,9 +23,7 @@ buildPythonPackage {
 
   sourceRoot = "${opentelemetry-api.src.name}/exporter/opentelemetry-exporter-otlp-proto-http";
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   dependencies = [
     deprecated
diff --git a/pkgs/development/python-modules/opentelemetry-exporter-otlp/default.nix b/pkgs/development/python-modules/opentelemetry-exporter-otlp/default.nix
index 75748e3b70ac0..3bf2f7b04c2c2 100644
--- a/pkgs/development/python-modules/opentelemetry-exporter-otlp/default.nix
+++ b/pkgs/development/python-modules/opentelemetry-exporter-otlp/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, hatchling
-, opentelemetry-api
-, opentelemetry-exporter-otlp-proto-grpc
-, opentelemetry-exporter-otlp-proto-http
-, opentelemetry-test-utils
-, pytestCheckHook
+{
+  buildPythonPackage,
+  pythonOlder,
+  hatchling,
+  opentelemetry-api,
+  opentelemetry-exporter-otlp-proto-grpc,
+  opentelemetry-exporter-otlp-proto-http,
+  opentelemetry-test-utils,
+  pytestCheckHook,
 }:
 
 buildPythonPackage {
@@ -18,9 +18,7 @@ buildPythonPackage {
 
   sourceRoot = "${opentelemetry-api.src.name}/exporter/opentelemetry-exporter-otlp";
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   dependencies = [
     opentelemetry-exporter-otlp-proto-grpc
diff --git a/pkgs/development/python-modules/opentelemetry-exporter-prometheus/default.nix b/pkgs/development/python-modules/opentelemetry-exporter-prometheus/default.nix
index 1ccd6b472e183..36b4b4cb5449f 100644
--- a/pkgs/development/python-modules/opentelemetry-exporter-prometheus/default.nix
+++ b/pkgs/development/python-modules/opentelemetry-exporter-prometheus/default.nix
@@ -1,27 +1,28 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, hatchling
-, opentelemetry-api
-, opentelemetry-sdk
-, opentelemetry-test-utils
-, prometheus-client
-, pytestCheckHook
+{
+  buildPythonPackage,
+  pythonOlder,
+  hatchling,
+  opentelemetry-api,
+  opentelemetry-instrumentation,
+  opentelemetry-sdk,
+  opentelemetry-test-utils,
+  prometheus-client,
+  pytestCheckHook,
 }:
 
 buildPythonPackage {
   inherit (opentelemetry-api) src;
   pname = "opentelemetry-exporter-prometheus";
-  version = "0.44b0";
+  # This package is in the same repository as `opentelemetry-api`,
+  # but its version is synchronized with `opentelemetry-instrumentation` in another repository.
+  version = opentelemetry-instrumentation.version;
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   sourceRoot = "${opentelemetry-api.src.name}/exporter/opentelemetry-exporter-prometheus";
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   dependencies = [
     opentelemetry-api
diff --git a/pkgs/development/python-modules/opentelemetry-instrumentation-aiohttp-client/default.nix b/pkgs/development/python-modules/opentelemetry-instrumentation-aiohttp-client/default.nix
index df5a9b037652a..04c5debd2f5c7 100644
--- a/pkgs/development/python-modules/opentelemetry-instrumentation-aiohttp-client/default.nix
+++ b/pkgs/development/python-modules/opentelemetry-instrumentation-aiohttp-client/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, hatchling
-, opentelemetry-api
-, opentelemetry-instrumentation
-, opentelemetry-semantic-conventions
-, opentelemetry-test-utils
-, opentelemetry-util-http
-, wrapt
-, pytestCheckHook
-, aiohttp
+{
+  buildPythonPackage,
+  pythonOlder,
+  hatchling,
+  opentelemetry-api,
+  opentelemetry-instrumentation,
+  opentelemetry-semantic-conventions,
+  opentelemetry-test-utils,
+  opentelemetry-util-http,
+  wrapt,
+  pytestCheckHook,
+  aiohttp,
 }:
 
 buildPythonPackage {
@@ -21,9 +21,7 @@ buildPythonPackage {
 
   sourceRoot = "${opentelemetry-instrumentation.src.name}/instrumentation/opentelemetry-instrumentation-aiohttp-client";
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   dependencies = [
     aiohttp
diff --git a/pkgs/development/python-modules/opentelemetry-instrumentation-asgi/default.nix b/pkgs/development/python-modules/opentelemetry-instrumentation-asgi/default.nix
index 7eb2a66797459..ac50e8d721837 100644
--- a/pkgs/development/python-modules/opentelemetry-instrumentation-asgi/default.nix
+++ b/pkgs/development/python-modules/opentelemetry-instrumentation-asgi/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, asgiref
-, hatchling
-, opentelemetry-api
-, opentelemetry-instrumentation
-, opentelemetry-semantic-conventions
-, opentelemetry-test-utils
-, opentelemetry-util-http
-, pytestCheckHook
+{
+  buildPythonPackage,
+  pythonOlder,
+  asgiref,
+  hatchling,
+  opentelemetry-api,
+  opentelemetry-instrumentation,
+  opentelemetry-semantic-conventions,
+  opentelemetry-test-utils,
+  opentelemetry-util-http,
+  pytestCheckHook,
 }:
 
 buildPythonPackage {
@@ -20,9 +20,7 @@ buildPythonPackage {
 
   sourceRoot = "${opentelemetry-instrumentation.src.name}/instrumentation/opentelemetry-instrumentation-asgi";
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   dependencies = [
     asgiref
@@ -37,6 +35,9 @@ buildPythonPackage {
     pytestCheckHook
   ];
 
+  # Tests have issues starting with 0.47b0
+  doCheck = false;
+
   pythonImportsCheck = [ "opentelemetry.instrumentation.asgi" ];
 
   meta = opentelemetry-instrumentation.meta // {
diff --git a/pkgs/development/python-modules/opentelemetry-instrumentation-dbapi/default.nix b/pkgs/development/python-modules/opentelemetry-instrumentation-dbapi/default.nix
new file mode 100644
index 0000000000000..286102d97e61c
--- /dev/null
+++ b/pkgs/development/python-modules/opentelemetry-instrumentation-dbapi/default.nix
@@ -0,0 +1,40 @@
+{
+  buildPythonPackage,
+  pythonOlder,
+  pytestCheckHook,
+  hatchling,
+  opentelemetry-api,
+  opentelemetry-instrumentation,
+  opentelemetry-semantic-conventions,
+  opentelemetry-test-utils,
+}:
+
+buildPythonPackage {
+  inherit (opentelemetry-instrumentation) version src;
+  pname = "opentelemetry-instrumentation-dbapi";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  sourceRoot = "${opentelemetry-instrumentation.src.name}/instrumentation/opentelemetry-instrumentation-dbapi";
+
+  build-system = [ hatchling ];
+
+  dependencies = [
+    opentelemetry-api
+    opentelemetry-instrumentation
+    opentelemetry-semantic-conventions
+  ];
+
+  nativeCheckInputs = [
+    opentelemetry-test-utils
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "opentelemetry.instrumentation.dbapi" ];
+
+  meta = opentelemetry-instrumentation.meta // {
+    homepage = "https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-dbapi";
+    description = "OpenTelemetry Database API instrumentation";
+  };
+}
diff --git a/pkgs/development/python-modules/opentelemetry-instrumentation-django/default.nix b/pkgs/development/python-modules/opentelemetry-instrumentation-django/default.nix
index 9e27e60e2ddec..5a85e42a04d35 100644
--- a/pkgs/development/python-modules/opentelemetry-instrumentation-django/default.nix
+++ b/pkgs/development/python-modules/opentelemetry-instrumentation-django/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, django
-, hatchling
-, opentelemetry-api
-, opentelemetry-instrumentation
-, opentelemetry-instrumentation-asgi
-, opentelemetry-instrumentation-wsgi
-, opentelemetry-semantic-conventions
-, opentelemetry-test-utils
-, opentelemetry-util-http
-, pytestCheckHook
+{
+  buildPythonPackage,
+  pythonOlder,
+  django,
+  hatchling,
+  opentelemetry-api,
+  opentelemetry-instrumentation,
+  opentelemetry-instrumentation-asgi,
+  opentelemetry-instrumentation-wsgi,
+  opentelemetry-semantic-conventions,
+  opentelemetry-test-utils,
+  opentelemetry-util-http,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +22,7 @@ buildPythonPackage rec {
 
   sourceRoot = "${opentelemetry-instrumentation.src.name}/instrumentation/opentelemetry-instrumentation-django";
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   dependencies = [
     django
diff --git a/pkgs/development/python-modules/opentelemetry-instrumentation-fastapi/default.nix b/pkgs/development/python-modules/opentelemetry-instrumentation-fastapi/default.nix
index a4da7665172e9..310d85e53f0e3 100644
--- a/pkgs/development/python-modules/opentelemetry-instrumentation-fastapi/default.nix
+++ b/pkgs/development/python-modules/opentelemetry-instrumentation-fastapi/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, buildPythonPackage
-, fastapi
-, hatchling
-, httpx
-, opentelemetry-api
-, opentelemetry-instrumentation
-, opentelemetry-instrumentation-asgi
-, opentelemetry-semantic-conventions
-, opentelemetry-test-utils
-, opentelemetry-util-http
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  buildPythonPackage,
+  fastapi,
+  hatchling,
+  httpx,
+  opentelemetry-api,
+  opentelemetry-instrumentation,
+  opentelemetry-instrumentation-asgi,
+  opentelemetry-semantic-conventions,
+  opentelemetry-test-utils,
+  opentelemetry-util-http,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage {
@@ -23,9 +23,7 @@ buildPythonPackage {
 
   sourceRoot = "${opentelemetry-instrumentation.src.name}/instrumentation/opentelemetry-instrumentation-fastapi";
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   dependencies = [
     fastapi
@@ -43,9 +41,7 @@ buildPythonPackage {
     requests
   ];
 
-  pythonImportsCheck = [
-    "opentelemetry.instrumentation.fastapi"
-  ];
+  pythonImportsCheck = [ "opentelemetry.instrumentation.fastapi" ];
 
   meta = opentelemetry-instrumentation.meta // {
     description = "OpenTelemetry Instrumentation for fastapi";
diff --git a/pkgs/development/python-modules/opentelemetry-instrumentation-flask/default.nix b/pkgs/development/python-modules/opentelemetry-instrumentation-flask/default.nix
index 0e1daa3f3a91c..779e018ae4134 100644
--- a/pkgs/development/python-modules/opentelemetry-instrumentation-flask/default.nix
+++ b/pkgs/development/python-modules/opentelemetry-instrumentation-flask/default.nix
@@ -1,15 +1,16 @@
-{ buildPythonPackage
-, flask
-, hatchling
-, opentelemetry-api
-, opentelemetry-instrumentation
-, opentelemetry-instrumentation-wsgi
-, opentelemetry-semantic-conventions
-, opentelemetry-test-utils
-, opentelemetry-util-http
-, packaging
-, pytestCheckHook
-, pythonOlder
+{
+  buildPythonPackage,
+  flask,
+  hatchling,
+  opentelemetry-api,
+  opentelemetry-instrumentation,
+  opentelemetry-instrumentation-wsgi,
+  opentelemetry-semantic-conventions,
+  opentelemetry-test-utils,
+  opentelemetry-util-http,
+  packaging,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/opentelemetry-instrumentation-grpc/default.nix b/pkgs/development/python-modules/opentelemetry-instrumentation-grpc/default.nix
index 2a2cae6f6de43..26bde1eaae5e1 100644
--- a/pkgs/development/python-modules/opentelemetry-instrumentation-grpc/default.nix
+++ b/pkgs/development/python-modules/opentelemetry-instrumentation-grpc/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, hatchling
-, opentelemetry-api
-, opentelemetry-instrumentation
-, opentelemetry-sdk
-, opentelemetry-semantic-conventions
-, opentelemetry-test-utils
-, wrapt
-, pytestCheckHook
-, grpcio
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchpatch2,
+  pythonOlder,
+  hatchling,
+  opentelemetry-api,
+  opentelemetry-instrumentation,
+  opentelemetry-semantic-conventions,
+  opentelemetry-test-utils,
+  wrapt,
+  pytestCheckHook,
+  grpcio,
 }:
 
 buildPythonPackage {
@@ -20,16 +21,23 @@ buildPythonPackage {
 
   disabled = pythonOlder "3.8";
 
+  patches = [
+    (fetchpatch2 {
+      name = "grpcio-compatibility.patch";
+      url = "https://github.com/open-telemetry/opentelemetry-python-contrib/commit/1c8d8ef5368c15d27c0973ce80787fd94c7b3176.patch";
+      includes = [ "src/opentelemetry/instrumentation/grpc/grpcext/_interceptor.py" ];
+      stripLen = 2;
+      hash = "sha256-FH/VubT93kwh7nWQyPfECTIayMqWIjQYSEY5TER+4vY=";
+    })
+  ];
+
   sourceRoot = "${opentelemetry-instrumentation.src.name}/instrumentation/opentelemetry-instrumentation-grpc";
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   dependencies = [
     opentelemetry-api
     opentelemetry-instrumentation
-    opentelemetry-sdk
     opentelemetry-semantic-conventions
     wrapt
   ];
@@ -44,7 +52,7 @@ buildPythonPackage {
     pytestCheckHook
   ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
     # RuntimeError: Failed to bind to address
     "TestOpenTelemetryServerInterceptorUnix"
   ];
diff --git a/pkgs/development/python-modules/opentelemetry-instrumentation-psycopg2/default.nix b/pkgs/development/python-modules/opentelemetry-instrumentation-psycopg2/default.nix
new file mode 100644
index 0000000000000..2035b07c939fa
--- /dev/null
+++ b/pkgs/development/python-modules/opentelemetry-instrumentation-psycopg2/default.nix
@@ -0,0 +1,42 @@
+{
+  buildPythonPackage,
+  pythonOlder,
+  pytestCheckHook,
+  hatchling,
+  opentelemetry-api,
+  opentelemetry-instrumentation,
+  opentelemetry-instrumentation-dbapi,
+  opentelemetry-test-utils,
+  psycopg2,
+}:
+
+buildPythonPackage {
+  inherit (opentelemetry-instrumentation) version src;
+  pname = "opentelemetry-instrumentation-psycopg2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  sourceRoot = "${opentelemetry-instrumentation.src.name}/instrumentation/opentelemetry-instrumentation-psycopg2";
+
+  build-system = [ hatchling ];
+
+  dependencies = [
+    psycopg2
+    opentelemetry-api
+    opentelemetry-instrumentation
+    opentelemetry-instrumentation-dbapi
+  ];
+
+  nativeCheckInputs = [
+    opentelemetry-test-utils
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "opentelemetry.instrumentation.psycopg2" ];
+
+  meta = opentelemetry-instrumentation.meta // {
+    homepage = "https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-psycopg2";
+    description = "OpenTelemetry Psycopg Instrumentation";
+  };
+}
diff --git a/pkgs/development/python-modules/opentelemetry-instrumentation-wsgi/default.nix b/pkgs/development/python-modules/opentelemetry-instrumentation-wsgi/default.nix
index 2e3d60b28442a..e640ec9597540 100644
--- a/pkgs/development/python-modules/opentelemetry-instrumentation-wsgi/default.nix
+++ b/pkgs/development/python-modules/opentelemetry-instrumentation-wsgi/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, hatchling
-, opentelemetry-api
-, opentelemetry-instrumentation
-, opentelemetry-semantic-conventions
-, opentelemetry-test-utils
-, opentelemetry-util-http
-, pytestCheckHook
+{
+  buildPythonPackage,
+  pythonOlder,
+  hatchling,
+  opentelemetry-api,
+  opentelemetry-instrumentation,
+  opentelemetry-semantic-conventions,
+  opentelemetry-test-utils,
+  opentelemetry-util-http,
+  pytestCheckHook,
 }:
 
 buildPythonPackage {
@@ -19,9 +19,7 @@ buildPythonPackage {
 
   sourceRoot = "${opentelemetry-instrumentation.src.name}/instrumentation/opentelemetry-instrumentation-wsgi";
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   dependencies = [
     opentelemetry-instrumentation
diff --git a/pkgs/development/python-modules/opentelemetry-instrumentation/default.nix b/pkgs/development/python-modules/opentelemetry-instrumentation/default.nix
index 38205814d0476..8c8ae9534ae6f 100644
--- a/pkgs/development/python-modules/opentelemetry-instrumentation/default.nix
+++ b/pkgs/development/python-modules/opentelemetry-instrumentation/default.nix
@@ -1,35 +1,34 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, hatchling
-, opentelemetry-api
-, opentelemetry-test-utils
-, setuptools
-, wrapt
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  opentelemetry-api,
+  opentelemetry-test-utils,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  wrapt,
 }:
 
 buildPythonPackage rec {
   pname = "opentelemetry-instrumentation";
-  version = "0.45b0";
+  version = "0.47b0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  # to avoid breakage, every package in opentelemetry-python-contrib must inherit this version, src, and meta
+  # To avoid breakage, every package in opentelemetry-python-contrib must inherit this version, src, and meta
   src = fetchFromGitHub {
     owner = "open-telemetry";
     repo = "opentelemetry-python-contrib";
     rev = "refs/tags/v${version}";
-    hash = "sha256-snpanTREdvfqpqPI8UWzm55pDK8Q77guqgT8kFULRKU=";
+    hash = "sha256-XtJ4u891vI7wDtReoucm+qk3BkKJ+aZrYy7zfxmqfgk=";
   };
 
   sourceRoot = "${src.name}/opentelemetry-instrumentation";
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   dependencies = [
     opentelemetry-api
@@ -47,9 +46,9 @@ buildPythonPackage rec {
   passthru.updateScript = opentelemetry-api.updateScript;
 
   meta = with lib; {
-    homepage = "https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/opentelemetry-instrumentation";
     description = "Instrumentation Tools & Auto Instrumentation for OpenTelemetry Python";
-    changelog = "https://github.com/open-telemetry/opentelemetry-python-contrib/releases/tag/${src.rev}";
+    homepage = "https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/opentelemetry-instrumentation";
+    changelog = "https://github.com/open-telemetry/opentelemetry-python-contrib/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = licenses.asl20;
     maintainers = teams.deshaw.members ++ [ maintainers.natsukium ];
   };
diff --git a/pkgs/development/python-modules/opentelemetry-proto/default.nix b/pkgs/development/python-modules/opentelemetry-proto/default.nix
index 58869327a1aeb..8fcaf2a3b516b 100644
--- a/pkgs/development/python-modules/opentelemetry-proto/default.nix
+++ b/pkgs/development/python-modules/opentelemetry-proto/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, hatchling
-, opentelemetry-api
-, protobuf
-, pytestCheckHook
+{
+  buildPythonPackage,
+  pythonOlder,
+  hatchling,
+  opentelemetry-api,
+  protobuf,
+  pytestCheckHook,
 }:
 
 buildPythonPackage {
@@ -16,17 +16,11 @@ buildPythonPackage {
 
   sourceRoot = "${opentelemetry-api.src.name}/opentelemetry-proto";
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  dependencies = [
-    protobuf
-  ];
+  dependencies = [ protobuf ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "opentelemetry.proto" ];
 
diff --git a/pkgs/development/python-modules/opentelemetry-sdk/default.nix b/pkgs/development/python-modules/opentelemetry-sdk/default.nix
index bee9dc01e6b0c..9e4b577a606ec 100644
--- a/pkgs/development/python-modules/opentelemetry-sdk/default.nix
+++ b/pkgs/development/python-modules/opentelemetry-sdk/default.nix
@@ -1,14 +1,13 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, flaky
-, hatchling
-, opentelemetry-api
-, opentelemetry-semantic-conventions
-, opentelemetry-test-utils
-, setuptools
-, typing-extensions
-, pytestCheckHook
+{
+  buildPythonPackage,
+  pythonOlder,
+  flaky,
+  hatchling,
+  opentelemetry-api,
+  opentelemetry-semantic-conventions,
+  opentelemetry-test-utils,
+  typing-extensions,
+  pytestCheckHook,
 }:
 
 let
@@ -21,9 +20,7 @@ let
 
     sourceRoot = "${opentelemetry-api.src.name}/opentelemetry-sdk";
 
-    build-system = [
-      hatchling
-    ];
+    build-system = [ hatchling ];
 
     dependencies = [
       opentelemetry-api
@@ -37,9 +34,7 @@ let
       pytestCheckHook
     ];
 
-    disabledTestPaths = [
-      "tests/performance/benchmarks/"
-    ];
+    disabledTestPaths = [ "tests/performance/benchmarks/" ];
 
     pythonImportsCheck = [ "opentelemetry.sdk" ];
 
@@ -53,4 +48,5 @@ let
       description = "OpenTelemetry Python SDK";
     };
   };
-in self
+in
+self
diff --git a/pkgs/development/python-modules/opentelemetry-semantic-conventions/default.nix b/pkgs/development/python-modules/opentelemetry-semantic-conventions/default.nix
index a2a88906ec073..ab2db17a42186 100644
--- a/pkgs/development/python-modules/opentelemetry-semantic-conventions/default.nix
+++ b/pkgs/development/python-modules/opentelemetry-semantic-conventions/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, hatchling
-, opentelemetry-api
-, pytestCheckHook
+{
+  buildPythonPackage,
+  pythonOlder,
+  hatchling,
+  opentelemetry-api,
+  opentelemetry-instrumentation,
+  pytestCheckHook,
 }:
 
 buildPythonPackage {
   inherit (opentelemetry-api) src;
   pname = "opentelemetry-semantic-conventions";
-  version = "0.44b0";
+  # This package is in the same repository as `opentelemetry-api`,
+  # but its version is synchronized with `opentelemetry-instrumentation` in another repository.
+  version = opentelemetry-instrumentation.version;
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   sourceRoot = "${opentelemetry-api.src.name}/opentelemetry-semantic-conventions";
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  dependencies = [ opentelemetry-api ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "opentelemetry.semconv" ];
 
diff --git a/pkgs/development/python-modules/opentelemetry-test-utils/default.nix b/pkgs/development/python-modules/opentelemetry-test-utils/default.nix
index d255845658c22..24ee1af9e91ad 100644
--- a/pkgs/development/python-modules/opentelemetry-test-utils/default.nix
+++ b/pkgs/development/python-modules/opentelemetry-test-utils/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, asgiref
-, hatchling
-, opentelemetry-api
-, opentelemetry-sdk
+{
+  buildPythonPackage,
+  pythonOlder,
+  asgiref,
+  hatchling,
+  opentelemetry-api,
+  opentelemetry-instrumentation,
+  opentelemetry-sdk,
 }:
 
 buildPythonPackage {
   inherit (opentelemetry-api) src;
   pname = "opentelemetry-test-utils";
-  version = "0.44b0";
+  # This package is in the same repository as `opentelemetry-api`,
+  # but its version is synchronized with `opentelemetry-instrumentation` in another repository.
+  version = opentelemetry-instrumentation.version;
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   sourceRoot = "${opentelemetry-api.src.name}/tests/opentelemetry-test-utils";
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   dependencies = [
     asgiref
diff --git a/pkgs/development/python-modules/opentelemetry-util-http/default.nix b/pkgs/development/python-modules/opentelemetry-util-http/default.nix
index 128f503d832d1..e1bcc59c2e8e4 100644
--- a/pkgs/development/python-modules/opentelemetry-util-http/default.nix
+++ b/pkgs/development/python-modules/opentelemetry-util-http/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, hatchling
-, opentelemetry-instrumentation
-, opentelemetry-test-utils
-, pytestCheckHook
+{
+  buildPythonPackage,
+  pythonOlder,
+  hatchling,
+  opentelemetry-instrumentation,
+  opentelemetry-test-utils,
+  pytestCheckHook,
 }:
 
 buildPythonPackage {
@@ -16,9 +16,7 @@ buildPythonPackage {
 
   sourceRoot = "${opentelemetry-instrumentation.src.name}/util/opentelemetry-util-http";
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   nativeCheckInputs = [
     opentelemetry-instrumentation
diff --git a/pkgs/development/python-modules/opentimestamps/default.nix b/pkgs/development/python-modules/opentimestamps/default.nix
index fbd3b2852eed6..5a9c412dcd545 100644
--- a/pkgs/development/python-modules/opentimestamps/default.nix
+++ b/pkgs/development/python-modules/opentimestamps/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, bitcoinlib
-, buildPythonPackage
-, fetchFromGitHub
-, git
-, gitpython
-, pycryptodomex
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  bitcoinlib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gitpython,
+  pycryptodomex,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +29,7 @@ buildPythonPackage rec {
     pycryptodomex
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Remove a failing test which expects the test source file to reside in the
   # project's Git repo
@@ -39,9 +37,7 @@ buildPythonPackage rec {
     rm opentimestamps/tests/core/test_git.py
   '';
 
-  pythonImportsCheck = [
-    "opentimestamps"
-  ];
+  pythonImportsCheck = [ "opentimestamps" ];
 
   meta = with lib; {
     description = "Create and verify OpenTimestamps proofs";
diff --git a/pkgs/development/python-modules/opentracing/default.nix b/pkgs/development/python-modules/opentracing/default.nix
index 706c47714afe1..c0f61bb107431 100644
--- a/pkgs/development/python-modules/opentracing/default.nix
+++ b/pkgs/development/python-modules/opentracing/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonAtLeast
-, isPy27
-, futures ? null
-, gevent
-, mock
-, pytestCheckHook
-, tornado
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonAtLeast,
+  isPy27,
+  futures ? null,
+  gevent,
+  mock,
+  pytestCheckHook,
+  tornado,
+  six,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/opentsne/default.nix b/pkgs/development/python-modules/opentsne/default.nix
index ba3e0b8460b19..492d6ee009467 100644
--- a/pkgs/development/python-modules/opentsne/default.nix
+++ b/pkgs/development/python-modules/opentsne/default.nix
@@ -1,48 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cython
-, numpy
-, oldest-supported-numpy
-, scipy
-, scikit-learn
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cython,
+  numpy,
+  scipy,
+  scikit-learn,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 let
   self = buildPythonPackage rec {
     pname = "opentsne";
-    version = "1.0.1";
+    version = "1.0.2";
     pyproject = true;
 
-    disabled = pythonOlder "3.7";
+    disabled = pythonOlder "3.9";
 
     src = fetchFromGitHub {
       owner = "pavlin-policar";
       repo = "openTSNE";
       rev = "refs/tags/v${version}";
-      hash = "sha256-UTfEjjNz1mm5fhyTw9GRlMNURwWlr6kLMjrMngkFV3Y=";
+      hash = "sha256-e1YXF9cdguzcEW0KanIHYlZQiUc+FH8IVOaPshAswco=";
     };
 
-    nativeBuildInputs = [
+    build-system = [
       cython
-      oldest-supported-numpy
+      numpy
       setuptools
-      wheel
     ];
 
-    propagatedBuildInputs = [
+    dependencies = [
       numpy
       scipy
       scikit-learn
     ];
 
-    pythonImportsCheck = [
-      "openTSNE"
-    ];
+    pythonImportsCheck = [ "openTSNE" ];
 
     doCheck = false;
 
@@ -57,7 +53,10 @@ let
         doInstall = false;
 
         doCheck = true;
-        nativeCheckInputs = [ pytestCheckHook self ];
+        nativeCheckInputs = [
+          pytestCheckHook
+          self
+        ];
       });
     };
 
@@ -69,4 +68,5 @@ let
       maintainers = with maintainers; [ lucasew ];
     };
   };
-in self
+in
+self
diff --git a/pkgs/development/python-modules/opentype-feature-freezer/default.nix b/pkgs/development/python-modules/opentype-feature-freezer/default.nix
new file mode 100644
index 0000000000000..3d7d953dce5f1
--- /dev/null
+++ b/pkgs/development/python-modules/opentype-feature-freezer/default.nix
@@ -0,0 +1,63 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  unstableGitUpdater,
+  pytestCheckHook,
+  fonttools,
+  poetry-core,
+  configparser,
+  biplist,
+}:
+
+buildPythonPackage {
+  pname = "opentype-feature-freezer";
+  version = "0-unstable-2022-07-09";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "twardoch";
+    repo = "fonttools-opentype-feature-freezer";
+    rev = "2ae16853bc724c3e377726f81d9fc661d3445827";
+    hash = "sha256-mIWQF9LTVKxIkwHLCTVK1cOuiaduJyX8pyBZ/0RKIVE=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail poetry.masonry.api poetry.core.masonry.api \
+      --replace-fail "poetry>=" "poetry-core>="
+  '';
+
+  build-system = [
+    poetry-core
+    configparser
+  ];
+
+  dependencies = [ fonttools ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    biplist
+  ];
+
+  disabledTestPaths = [
+    # Wants to check path outside of nix store
+    "src/opentype_feature_freezer/cli.py"
+    # NameError: name 'defines' is not defined
+    "app/dmgbuild_settings.py"
+    # Missing module
+    "app/OTFeatureFreezer.py"
+    # AttributeError: 'types.SimpleNamespace' object has no attribute 'suffix'
+    "tests/test_rename.py"
+  ];
+
+  passthru.updateScript = unstableGitUpdater { };
+
+  meta = {
+    description = "Permanently \"apply\" OpenType features to fonts, by remapping their Unicode assignments";
+    homepage = "https://github.com/twardoch/fonttools-opentype-feature-freezer";
+    license = lib.licenses.asl20;
+    mainProgram = "pyftfeatfreeze";
+    maintainers = with lib.maintainers; [ jopejoe1 ];
+  };
+}
diff --git a/pkgs/development/python-modules/opentypespec/default.nix b/pkgs/development/python-modules/opentypespec/default.nix
index 0355ec02146dd..ea4f2ca3530d1 100644
--- a/pkgs/development/python-modules/opentypespec/default.nix
+++ b/pkgs/development/python-modules/opentypespec/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -15,10 +16,12 @@ buildPythonPackage rec {
   };
 
   doCheck = true;
-  nativeCheckInputs = [
-    unittestCheckHook
+  nativeCheckInputs = [ unittestCheckHook ];
+  unittestFlagsArray = [
+    "-s"
+    "test"
+    "-v"
   ];
-  unittestFlagsArray = [ "-s" "test" "-v" ];
 
   meta = with lib; {
     description = "Python library for OpenType specification metadata";
@@ -27,4 +30,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ danc86 ];
   };
 }
-
diff --git a/pkgs/development/python-modules/openusd/default.nix b/pkgs/development/python-modules/openusd/default.nix
index bc67c43a6b0b8..7315865b75c2e 100644
--- a/pkgs/development/python-modules/openusd/default.nix
+++ b/pkgs/development/python-modules/openusd/default.nix
@@ -18,6 +18,8 @@
   lib,
   libGL,
   libX11,
+  libXt,
+  materialx,
   ninja,
   numpy,
   opencolorio,
@@ -49,16 +51,17 @@ in
 
 buildPythonPackage rec {
   pname = "openusd";
-  version = "24.03";
+  version = "24.05";
 
   src = fetchFromGitHub {
     owner = "PixarAnimationStudios";
     repo = "OpenUSD";
     rev = "refs/tags/v${version}";
-    hash = "sha256-EYf8GhXhsAx0Wxz9ibDZEV4E5scL3GPiu3Nje7N5C/I=";
+    hash = "sha256-akwLIB5YUbnDiaQXX/K5YLXzWlTYWZG51dtxbSFxPt0=";
   };
 
-  stdenv = if python.stdenv.isDarwin then darwin.apple_sdk_11_0.stdenv else python.stdenv;
+  stdenv =
+    if python.stdenv.hostPlatform.isDarwin then darwin.apple_sdk_11_0.stdenv else python.stdenv;
 
   outputs = [ "out" ] ++ lib.optional withDocs "doc";
 
@@ -72,6 +75,8 @@ buildPythonPackage rec {
     })
   ];
 
+  env.OSL_LOCATION = "${osl}";
+
   cmakeFlags = [
     "-DPXR_BUILD_ALEMBIC_PLUGIN=ON"
     "-DPXR_BUILD_DRACO_PLUGIN=ON"
@@ -82,11 +87,13 @@ buildPythonPackage rec {
     "-DPXR_BUILD_TESTS=OFF"
     "-DPXR_BUILD_TUTORIALS=OFF"
     "-DPXR_BUILD_USD_IMAGING=ON"
+    "-DPYSIDE_BIN_DIR=${pyside-tools-uic}/bin"
     (lib.cmakeBool "PXR_BUILD_DOCUMENTATION" withDocs)
     (lib.cmakeBool "PXR_BUILD_PYTHON_DOCUMENTATION" withDocs)
     (lib.cmakeBool "PXR_BUILD_USDVIEW" withUsdView)
     (lib.cmakeBool "PXR_BUILD_USD_TOOLS" withTools)
-    (lib.cmakeBool "PXR_ENABLE_OSL_SUPPORT" (!stdenv.isDarwin && withOsl))
+    (lib.cmakeBool "PXR_ENABLE_MATERIALX_SUPPORT" true)
+    (lib.cmakeBool "PXR_ENABLE_OSL_SUPPORT" (!stdenv.hostPlatform.isDarwin && withOsl))
   ];
 
   nativeBuildInputs =
@@ -111,20 +118,22 @@ buildPythonPackage rec {
       embree
       flex
       imath
+      materialx
       opencolorio
       openimageio
       opensubdiv
       ptex
       tbb
     ]
-    ++ lib.optionals stdenv.isLinux [
+    ++ lib.optionals stdenv.hostPlatform.isLinux [
       libGL
       libX11
+      libXt
     ]
-    ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk_11_0.frameworks; [ Cocoa ])
+    ++ lib.optionals stdenv.hostPlatform.isDarwin (with darwin.apple_sdk_11_0.frameworks; [ Cocoa ])
     ++ lib.optionals withOsl [ osl ]
     ++ lib.optionals withUsdView [ qt6.qtbase ]
-    ++ lib.optionals (withUsdView && stdenv.isLinux) [
+    ++ lib.optionals (withUsdView && stdenv.hostPlatform.isLinux) [
       qt6.qtbase
       qt6.qtwayland
     ];
diff --git a/pkgs/development/python-modules/openvino/default.nix b/pkgs/development/python-modules/openvino/default.nix
index 660e6c41c014a..b43534bfd8afd 100644
--- a/pkgs/development/python-modules/openvino/default.nix
+++ b/pkgs/development/python-modules/openvino/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, openvino-native
-, numpy
-, python
+{
+  lib,
+  buildPythonPackage,
+  openvino-native,
+  numpy,
+  python,
 }:
 
 buildPythonPackage {
@@ -12,9 +13,7 @@ buildPythonPackage {
 
   src = openvino-native.python;
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   installPhase = ''
     runHook preInstall
diff --git a/pkgs/development/python-modules/openwebifpy/default.nix b/pkgs/development/python-modules/openwebifpy/default.nix
index 160a7708bdf69..1dd4ab8a8f2bd 100644
--- a/pkgs/development/python-modules/openwebifpy/default.nix
+++ b/pkgs/development/python-modules/openwebifpy/default.nix
@@ -1,47 +1,42 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, aiohttp
-, yarl
+  # dependencies
+  aiohttp,
+  yarl,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "openwebifpy";
-  version = "4.2.4";
+  version = "4.2.7";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-qL/H2F+/d/JWwmUbZhvoMlZZDGgEpRBmHabt1MWjGAs=";
+    hash = "sha256-MoTSfoO6km3jAaF9oIDxhxhMI8jqZAyPD6yBYcYxhd4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
     yarl
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "openwebif"
-  ];
+  pythonImportsCheck = [ "openwebif" ];
 
   disabledTests = [
     # https://github.com/autinerd/openwebifpy/issues/1
@@ -57,4 +52,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ hexa ];
   };
 }
-
diff --git a/pkgs/development/python-modules/openwrt-luci-rpc/default.nix b/pkgs/development/python-modules/openwrt-luci-rpc/default.nix
index b1e47f13c4369..1d955c7c84468 100644
--- a/pkgs/development/python-modules/openwrt-luci-rpc/default.nix
+++ b/pkgs/development/python-modules/openwrt-luci-rpc/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchPypi
-, packaging
-, pytestCheckHook
-, requests
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchPypi,
+  packaging,
+  pytestCheckHook,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     packaging
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "openwrt_luci_rpc" ];
 
diff --git a/pkgs/development/python-modules/openwrt-ubus-rpc/default.nix b/pkgs/development/python-modules/openwrt-ubus-rpc/default.nix
index c5a5ac35b3cd6..efafabe29d61e 100644
--- a/pkgs/development/python-modules/openwrt-ubus-rpc/default.nix
+++ b/pkgs/development/python-modules/openwrt-ubus-rpc/default.nix
@@ -1,34 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
+  setuptools,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "openwrt-ubus-rpc";
   version = "0.0.3";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "Noltari";
     repo = "python-ubus-rpc";
-    rev = version;
-    sha256 = "19scncc1w9ar3pw4yrw24akjgm74n2m7y308hzl1i360daf5p21k";
+    rev = "refs/tags/${version}";
+    hash = "sha256-M4hbnGrAjBjohwgMf6qw5NQnpyKCZ0/4HVklHhizTKc=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     requests
     urllib3
   ];
 
   # Project has no tests
   doCheck = false;
+
   pythonImportsCheck = [ "openwrt.ubus" ];
 
   meta = with lib; {
     description = "Python API for OpenWrt ubus RPC";
     homepage = "https://github.com/Noltari/python-ubus-rpc";
+    changelog = "https://github.com/Noltari/python-ubus-rpc/releases/tag/${version}";
     license = with licenses; [ gpl2Only ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/opower/default.nix b/pkgs/development/python-modules/opower/default.nix
index 2c00224e92295..cdebc992b2fb6 100644
--- a/pkgs/development/python-modules/opower/default.nix
+++ b/pkgs/development/python-modules/opower/default.nix
@@ -1,19 +1,21 @@
 {
   lib,
   aiohttp,
+  aiozoneinfo,
   arrow,
   buildPythonPackage,
+  cryptography,
   fetchFromGitHub,
   pyotp,
-  pytestCheckHook,
   python-dotenv,
+  pytestCheckHook,
   pythonOlder,
   setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "opower";
-  version = "0.4.4";
+  version = "0.8.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -22,19 +24,23 @@ buildPythonPackage rec {
     owner = "tronikos";
     repo = "opower";
     rev = "refs/tags/v${version}";
-    hash = "sha256-GG7r0/rZcB4cuog3m0qCOrmcYiscPQggQhRC9sQGG40=";
+    hash = "sha256-gDd2Ht8SgUkqD1t5AY/zg/J/YG5Gyje8gbPp+5rP+M0=";
   };
 
   build-system = [ setuptools ];
 
   dependencies = [
     aiohttp
+    aiozoneinfo
     arrow
+    cryptography
     pyotp
-    python-dotenv
   ];
 
-  nativeCheckInputs = [ pytestCheckHook ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    python-dotenv
+  ];
 
   pythonImportsCheck = [ "opower" ];
 
diff --git a/pkgs/development/python-modules/opsdroid-get-image-size/default.nix b/pkgs/development/python-modules/opsdroid-get-image-size/default.nix
index 777788eeb48d9..e20545e9e51ba 100644
--- a/pkgs/development/python-modules/opsdroid-get-image-size/default.nix
+++ b/pkgs/development/python-modules/opsdroid-get-image-size/default.nix
@@ -1,7 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  versioneer,
 }:
 
 buildPythonPackage rec {
@@ -9,26 +12,34 @@ buildPythonPackage rec {
   version = "0.2.2";
   pyproject = true;
 
+  disabled = pythonOlder "3.10";
+
   src = fetchPypi {
     pname = "opsdroid_get_image_size";
     inherit version;
     hash = "sha256-Cp2tvsdCZ+/86DF7FRNwx5diGcUWLYcFwQns7nYXkog=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  postPatch = ''
+    # Remove vendorized versioneer.py
+    rm versioneer.py
+  '';
+
+  build-system = [ setuptools ];
 
-  # test data not included on pypi
+  nativeBuildInputs = [ versioneer ];
+
+  # Test data not included on PyPI
   doCheck = false;
 
   pythonImportsCheck = [ "get_image_size" ];
 
   meta = with lib; {
     description = "Get image width and height given a file path using minimal dependencies";
-    mainProgram = "get-image-size";
-    license = licenses.mit;
     homepage = "https://github.com/opsdroid/image_size";
+    changelog = "https://github.com/opsdroid/image_size/releases/tag/${version}";
+    license = licenses.mit;
     maintainers = with maintainers; [ globin ];
+    mainProgram = "get-image-size";
   };
 }
diff --git a/pkgs/development/python-modules/opt-einsum/default.nix b/pkgs/development/python-modules/opt-einsum/default.nix
index e943d67c7baa2..801c1b49841aa 100644
--- a/pkgs/development/python-modules/opt-einsum/default.nix
+++ b/pkgs/development/python-modules/opt-einsum/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, setuptools
-, numpy
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchpatch,
+  fetchPypi,
+  setuptools,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,21 +31,13 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "opt_einsum"
-  ];
+  pythonImportsCheck = [ "opt_einsum" ];
 
   meta = with lib; {
     description = "Optimizing NumPy's einsum function with order optimization and GPU support";
diff --git a/pkgs/development/python-modules/optax/default.nix b/pkgs/development/python-modules/optax/default.nix
index 950e9c91dbf57..345b02ec26472 100644
--- a/pkgs/development/python-modules/optax/default.nix
+++ b/pkgs/development/python-modules/optax/default.nix
@@ -1,18 +1,27 @@
-{ lib
-, absl-py
-, buildPythonPackage
-, flit-core
-, chex
-, fetchFromGitHub
-, jaxlib
-, numpy
-, callPackage
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  flit-core,
+
+  # dependencies
+  absl-py,
+  chex,
+  jax,
+  jaxlib,
+  numpy,
+  etils,
+
+  # checks
+  callPackage,
 }:
 
 buildPythonPackage rec {
   pname = "optax";
-  version = "0.2.2";
+  version = "0.2.3";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -21,7 +30,7 @@ buildPythonPackage rec {
     owner = "deepmind";
     repo = "optax";
     rev = "refs/tags/v${version}";
-    hash = "sha256-sBiKUuQR89mttc9Njrh1aeUJOYdlcF7Nlj3/+Y7OMb4=";
+    hash = "sha256-D1qKei3IjDP9fC62hf6fNtvHlnn09O/dKuzTBdLwW64=";
   };
 
   outputs = [
@@ -29,28 +38,23 @@ buildPythonPackage rec {
     "testsout"
   ];
 
-  nativeBuildInputs = [
-    flit-core
-  ];
-
-  buildInputs = [
-    jaxlib
-  ];
+  build-system = [ flit-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     absl-py
     chex
+    etils
+    jax
+    jaxlib
     numpy
-  ];
+  ] ++ etils.optional-dependencies.epy;
 
   postInstall = ''
     mkdir $testsout
     cp -R examples $testsout/examples
   '';
 
-  pythonImportsCheck = [
-    "optax"
-  ];
+  pythonImportsCheck = [ "optax" ];
 
   # check in passthru.tests.pytest to escape infinite recursion with flax
   doCheck = false;
diff --git a/pkgs/development/python-modules/optax/tests.nix b/pkgs/development/python-modules/optax/tests.nix
index 1ab548f2f399e..ae5c8fe6d441a 100644
--- a/pkgs/development/python-modules/optax/tests.nix
+++ b/pkgs/development/python-modules/optax/tests.nix
@@ -1,11 +1,12 @@
-{ buildPythonPackage
-, dm-haiku
-, pytest-xdist
-, pytestCheckHook
-, tensorflow
-, tensorflow-datasets
-, flax
-, optax
+{
+  buildPythonPackage,
+  dm-haiku,
+  pytest-xdist,
+  pytestCheckHook,
+  tensorflow,
+  tensorflow-datasets,
+  flax,
+  optax,
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/optimum/default.nix b/pkgs/development/python-modules/optimum/default.nix
index 5c096eab5952c..d23fe4ab529b4 100644
--- a/pkgs/development/python-modules/optimum/default.nix
+++ b/pkgs/development/python-modules/optimum/default.nix
@@ -1,29 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, coloredlogs
-, datasets
-, evaluate
-, h5py
-, huggingface-hub
-, numpy
-, onnx
-, onnxruntime
-, packaging
-, protobuf
-, sympy
-, tensorflow
-, tf2onnx
-, timm
-, torch
-, transformers
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  coloredlogs,
+  datasets,
+  huggingface-hub,
+  numpy,
+  packaging,
+  sympy,
+  torch,
+  transformers,
+
+  # optional-dependencies
+  diffusers,
+  evaluate,
+  h5py,
+  onnx,
+  onnxruntime,
+  protobuf,
+  tensorflow,
+  tf2onnx,
+  timm,
 }:
 
 buildPythonPackage rec {
   pname = "optimum";
-  version = "1.19.1";
-  format = "setuptools";
+  version = "1.22.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -31,10 +40,14 @@ buildPythonPackage rec {
     owner = "huggingface";
     repo = "optimum";
     rev = "refs/tags/v${version}";
-    hash = "sha256-EHu3p3M7xBjMnf3tKsneYOZtd9YWsC0qok1fnk4TMAg=";
+    hash = "sha256-fVpSoa6s7puYO8BiA6aSAhSOTfiZJgaX5iwYkd9VdVo=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  pythonRelaxDeps = [ "transformers" ];
+
+  dependencies = [
     coloredlogs
     datasets
     huggingface-hub
@@ -45,7 +58,7 @@ buildPythonPackage rec {
     transformers
   ] ++ transformers.optional-dependencies.sentencepiece;
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     onnxruntime = [
       onnx
       onnxruntime
@@ -67,9 +80,7 @@ buildPythonPackage rec {
       h5py
       numpy
     ];
-    diffusers = [
-      # diffusers
-    ];
+    diffusers = [ diffusers ];
     intel = [
       # optimum-intel
     ];
@@ -105,12 +116,12 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "optimum" ];
 
-  meta = with lib; {
+  meta = {
     description = "Accelerate training and inference of 🤗 Transformers and 🤗 Diffusers with easy to use hardware optimization tools";
     mainProgram = "optimum-cli";
     homepage = "https://github.com/huggingface/optimum";
-    changelog = "https://github.com/huggingface/optimum/releases/tag/${src.rev}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ natsukium ];
+    changelog = "https://github.com/huggingface/optimum/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ natsukium ];
   };
 }
diff --git a/pkgs/development/python-modules/optree/default.nix b/pkgs/development/python-modules/optree/default.nix
new file mode 100644
index 0000000000000..c1f9085e5bea3
--- /dev/null
+++ b/pkgs/development/python-modules/optree/default.nix
@@ -0,0 +1,54 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  lib,
+  cmake,
+  setuptools,
+  typing-extensions,
+  pybind11,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "optree";
+  version = "0.12.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "metaopt";
+    repo = "optree";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-4GvB9Z7qnEjsUSl+x5wd8czV80F50MwJdlNdylUU0zY=";
+  };
+
+  dontUseCmakeConfigure = true;
+
+  propagatedBuildInputs = [ typing-extensions ];
+  nativeBuildInputs = [
+    setuptools
+    pybind11
+    cmake
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+  # prevent import failures from pytest
+  preCheck = ''
+    rm -r optree
+  '';
+  disabledTests = [
+    # Fails because the 'test_treespec' module can't be found
+    "test_treespec_pickle_missing_registration"
+  ];
+  pythonImportsCheck = [ "optree" ];
+
+  meta = {
+    description = "Optimized PyTree Utilities";
+    homepage = "https://github.com/metaopt/optree";
+    changelog = "https://github.com/metaopt/optree/releases";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ pandapip1 ];
+  };
+}
diff --git a/pkgs/development/python-modules/optuna/default.nix b/pkgs/development/python-modules/optuna/default.nix
index 97f065323c728..dfdca6fe6d942 100644
--- a/pkgs/development/python-modules/optuna/default.nix
+++ b/pkgs/development/python-modules/optuna/default.nix
@@ -1,49 +1,50 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, alembic
-, boto3
-, botorch
-, catboost
-, cma
-, cmaes
-, colorlog
-, distributed
-, fakeredis
-, google-cloud-storage
-, lightgbm
-, matplotlib
-, mlflow
-, moto
-, numpy
-, packaging
-, pandas
-, plotly
-, pytest-xdist
-, pytorch-lightning
-, pyyaml
-, redis
-, scikit-learn
-, scikit-optimize
-, scipy
-, setuptools
-, shap
-, sqlalchemy
-, tensorflow
-, torch
-, torchaudio
-, torchvision
-, tqdm
-, wandb
-, wheel
-, xgboost
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  alembic,
+  boto3,
+  botorch,
+  catboost,
+  cma,
+  cmaes,
+  colorlog,
+  distributed,
+  fakeredis,
+  google-cloud-storage,
+  lightgbm,
+  matplotlib,
+  mlflow,
+  moto,
+  numpy,
+  packaging,
+  pandas,
+  plotly,
+  pytest-xdist,
+  pytorch-lightning,
+  pyyaml,
+  redis,
+  scikit-learn,
+  scikit-optimize,
+  scipy,
+  setuptools,
+  shap,
+  sqlalchemy,
+  tensorflow,
+  torch,
+  torchaudio,
+  torchvision,
+  tqdm,
+  wandb,
+  wheel,
+  xgboost,
 }:
 
 buildPythonPackage rec {
   pname = "optuna";
-  version = "3.6.1";
+  version = "4.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -52,7 +53,7 @@ buildPythonPackage rec {
     owner = "optuna";
     repo = "optuna";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+ZqMRIza4K5VWTUm7tC87S08SI+C8GKd2Uh3rGoHwd0=";
+    hash = "sha256-ZCK6otX90s8SB91TLkKwJ4net2dGmAKdIESeHXy87K0=";
   };
 
   nativeBuildInputs = [
@@ -114,12 +115,9 @@ buildPythonPackage rec {
     pytest-xdist
     pytestCheckHook
     scipy
-  ] ++ fakeredis.optional-dependencies.lua
-    ++ passthru.optional-dependencies.optional;
+  ] ++ fakeredis.optional-dependencies.lua ++ passthru.optional-dependencies.optional;
 
-  pytestFlagsArray = [
-    "-m 'not integration'"
-  ];
+  pytestFlagsArray = [ "-m 'not integration'" ];
 
   disabledTestPaths = [
     # require unpackaged kaleido and building it is a bit difficult
@@ -128,12 +126,10 @@ buildPythonPackage rec {
     "tests/artifacts_tests/test_boto3.py"
   ];
 
-  pythonImportsCheck = [
-    "optuna"
-  ];
+  pythonImportsCheck = [ "optuna" ];
 
   meta = with lib; {
-    description = "A hyperparameter optimization framework";
+    description = "Hyperparameter optimization framework";
     homepage = "https://optuna.org/";
     changelog = "https://github.com/optuna/optuna/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/opuslib/default.nix b/pkgs/development/python-modules/opuslib/default.nix
index c30d708511866..4f7c86d2a4816 100644
--- a/pkgs/development/python-modules/opuslib/default.nix
+++ b/pkgs/development/python-modules/opuslib/default.nix
@@ -1,17 +1,20 @@
-{ buildPythonPackage,
+{
+  buildPythonPackage,
   fetchFromGitHub,
   fetchpatch,
   isPy27,
   libopus,
-  nose,
-  lib, stdenv,
+  pytestCheckHook,
+  lib,
+  stdenv,
   substituteAll,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "opuslib";
   version = "3.0.3";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = isPy27;
 
@@ -41,7 +44,13 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeCheckInputs = [ nose ];
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pytestFlagsArray = [
+    "tests/{decoder,encoder,hl_decoder,hl_encoder}.py"
+  ];
 
   meta = with lib; {
     description = "Python bindings to the libopus, IETF low-delay audio codec";
diff --git a/pkgs/development/python-modules/opytimark/default.nix b/pkgs/development/python-modules/opytimark/default.nix
index 69eb61f795bf5..29b5fcee2c51c 100644
--- a/pkgs/development/python-modules/opytimark/default.nix
+++ b/pkgs/development/python-modules/opytimark/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, numpy
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,13 +29,9 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # several tests are failing
   disabledTests = [
@@ -44,9 +41,7 @@ buildPythonPackage rec {
     "cec_benchmark"
   ];
 
-  pythonImportsCheck = [
-    "opytimark"
-  ];
+  pythonImportsCheck = [ "opytimark" ];
 
   meta = with lib; {
     description = "Library consisting of optimization benchmarking functions";
diff --git a/pkgs/development/python-modules/oracledb/default.nix b/pkgs/development/python-modules/oracledb/default.nix
index 4434d5a386d37..cac6da956644d 100644
--- a/pkgs/development/python-modules/oracledb/default.nix
+++ b/pkgs/development/python-modules/oracledb/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, cython
-, fetchPypi
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  cython,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "oracledb";
-  version = "2.1.2";
+  version = "2.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-MFS8wpXXN4g0unpazrhlmF6VSRX5sHqEPqhMOCTGoLI=";
+    hash = "sha256-ubDE7CgLEAY+Z4m+0j3cJDWumFaevmTguaJweAuRA9U=";
   };
 
   build-system = [
@@ -26,22 +27,21 @@ buildPythonPackage rec {
     wheel
   ];
 
-  dependencies = [
-    cryptography
-  ];
+  dependencies = [ cryptography ];
 
   # Checks need an Oracle database
   doCheck = false;
 
-  pythonImportsCheck = [
-    "oracledb"
-  ];
+  pythonImportsCheck = [ "oracledb" ];
 
   meta = with lib; {
     description = "Python driver for Oracle Database";
     homepage = "https://oracle.github.io/python-oracledb";
     changelog = "https://github.com/oracle/python-oracledb/blob/v${version}/doc/src/release_notes.rst";
-    license = with licenses; [ asl20 /* and or */ upl ];
+    license = with licenses; [
+      asl20 # and or
+      upl
+    ];
     maintainers = with maintainers; [ harvidsen ];
   };
 }
diff --git a/pkgs/development/python-modules/oralb-ble/default.nix b/pkgs/development/python-modules/oralb-ble/default.nix
index 08b0abb2ded85..11eba7e06ab1c 100644
--- a/pkgs/development/python-modules/oralb-ble/default.nix
+++ b/pkgs/development/python-modules/oralb-ble/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, bleak
-, bleak-retry-connector
-, bluetooth-data-tools
-, bluetooth-sensor-state-data
-, buildPythonPackage
-, fetchFromGitHub
-, home-assistant-bluetooth
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  bleak,
+  bleak-retry-connector,
+  bluetooth-data-tools,
+  bluetooth-sensor-state-data,
+  buildPythonPackage,
+  fetchFromGitHub,
+  home-assistant-bluetooth,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
       --replace-fail " --cov=oralb_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     bleak
@@ -48,9 +47,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "oralb_ble"
-  ];
+  pythonImportsCheck = [ "oralb_ble" ];
 
   disabledTests = [
     # Test is outdated, TypeError: BLEDevice.__init__() missing 2 required...
diff --git a/pkgs/development/python-modules/orange-canvas-core/default.nix b/pkgs/development/python-modules/orange-canvas-core/default.nix
index 592aa2afa509a..3db1f35784bd6 100644
--- a/pkgs/development/python-modules/orange-canvas-core/default.nix
+++ b/pkgs/development/python-modules/orange-canvas-core/default.nix
@@ -1,32 +1,48 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, anyqt
-, cachecontrol
-, commonmark
-, dictdiffer
-, docutils
-, filelock
-, lockfile
-, numpy
-, pytest-qt
-, pytestCheckHook
-, qasync
-, qt5
-, requests-cache
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  anyqt,
+  cachecontrol,
+  commonmark,
+  dictdiffer,
+  docutils,
+  filelock,
+  lockfile,
+  numpy,
+  pip,
+  qasync,
+  requests-cache,
+  typing-extensions,
+
+  # tests
+  qt5,
+  pytest-qt,
+  pytestCheckHook,
+
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "orange-canvas-core";
-  version = "0.2.0";
-  format = "setuptools";
+  version = "0.2.2";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-KMEFZkAZkDhuDPpAts+u825p5pFJZbyrsMW/S1AArp4=";
+  src = fetchFromGitHub {
+    owner = "biolab";
+    repo = "orange-canvas-core";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Jp3vCQmRdkFADStVkbCFPiCBqpbI0a4JiJ8qs60rpqw=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     anyqt
     cachecontrol
     commonmark
@@ -35,8 +51,10 @@ buildPythonPackage rec {
     filelock
     lockfile
     numpy
+    pip
     qasync
     requests-cache
+    typing-extensions
   ];
 
   pythonImportsCheck = [ "orangecanvas" ];
@@ -53,14 +71,29 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTestPaths = [
-    "orangecanvas/canvas/items/tests/test_graphicstextitem.py"
+  disabledTests = [
+    # Failed: CALL ERROR: Exceptions caught in Qt event loop
+    "test_create_new_window"
+    "test_dont_load_swp_on_new_window"
+    "test_editlinksnode"
+    "test_flattened"
+    "test_links_edit"
+    "test_links_edit_widget"
+    "test_new_window"
+    "test_toolbox"
+    "test_tooltree_registry"
+    "test_widgettoolgrid"
   ];
 
+  disabledTestPaths = [ "orangecanvas/canvas/items/tests/test_graphicstextitem.py" ];
+
   meta = {
     description = "Orange framework for building graphical user interfaces for editing workflows";
     homepage = "https://github.com/biolab/orange-canvas-core";
+    changelog = "https://github.com/biolab/orange-canvas-core/releases/tag/${version}";
     license = [ lib.licenses.gpl3 ];
     maintainers = [ lib.maintainers.lucasew ];
+    # Segmentation fault during tests
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/orange-widget-base/default.nix b/pkgs/development/python-modules/orange-widget-base/default.nix
index 95dadbb04d796..28c97fdb4238c 100644
--- a/pkgs/development/python-modules/orange-widget-base/default.nix
+++ b/pkgs/development/python-modules/orange-widget-base/default.nix
@@ -1,27 +1,28 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pyqt5
-, pyqtwebengine
-, matplotlib
-, orange-canvas-core
-, pyqtgraph
-, typing-extensions
-, qt5
-, pytestCheckHook
-, pytest-qt
-, appnope
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pyqt5,
+  pyqtwebengine,
+  matplotlib,
+  orange-canvas-core,
+  pyqtgraph,
+  typing-extensions,
+  qt5,
+  pytestCheckHook,
+  pytest-qt,
+  appnope,
 }:
 
 buildPythonPackage rec {
   pname = "orange-widget-base";
-  version = "4.23.0";
+  version = "4.24.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-mz+BcZEdg1p9V0ewYRrw3jKBWLMbL9RR6o4hUEUx9DA=";
+    hash = "sha256-2cBg7s4+qMrb2G4sMk5yednOzJCNheHIQ3lty4KAg18=";
   };
 
   propagatedBuildInputs = [
@@ -31,9 +32,7 @@ buildPythonPackage rec {
     pyqtgraph
     pyqtwebengine
     typing-extensions
-  ] ++ lib.optionals stdenv.isDarwin [
-    appnope
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ appnope ];
 
   pythonImportsCheck = [ "orangewidget" ];
 
diff --git a/pkgs/development/python-modules/orange3/default.nix b/pkgs/development/python-modules/orange3/default.nix
index 1c4531254ae8c..146edc07bf067 100644
--- a/pkgs/development/python-modules/orange3/default.nix
+++ b/pkgs/development/python-modules/orange3/default.nix
@@ -1,53 +1,58 @@
-{ lib
-, baycomp
-, bottleneck
-, buildPythonPackage
-, chardet
-, copyDesktopItems
-, pythonRelaxDepsHook
-, cython
-, catboost
-, xgboost
-, fetchFromGitHub
-, fetchurl
-, httpx
-, joblib
-, keyring
-, keyrings-alt
-, makeDesktopItem
-, matplotlib
-, nix-update-script
-, numpy
-, oldest-supported-numpy
-, openpyxl
-, opentsne
-, orange-canvas-core
-, orange-widget-base
-, pandas
-, pyqtgraph
-, pyqtwebengine
-, python
-, python-louvain
-, pythonOlder
-, pyyaml
-, qt5
-, qtconsole
-, recommonmark
-, requests
-, scikit-learn
-, scipy
-, serverfiles
-, setuptools
-, sphinx
-, wheel
-, xlrd
-, xlsxwriter
+{
+  lib,
+  stdenv,
+  baycomp,
+  bottleneck,
+  buildPythonPackage,
+  chardet,
+  copyDesktopItems,
+  cython,
+  catboost,
+  xgboost,
+  fetchFromGitHub,
+  fetchurl,
+  httpx,
+  joblib,
+  keyring,
+  keyrings-alt,
+  makeDesktopItem,
+  matplotlib,
+  nix-update-script,
+  numpy,
+  oldest-supported-numpy,
+  openpyxl,
+  opentsne,
+  orange-canvas-core,
+  orange-widget-base,
+  pandas,
+  pytestCheckHook,
+  pytest-qt,
+  pyqtgraph,
+  pyqt5,
+  pyqtwebengine,
+  python,
+  python-louvain,
+  pythonOlder,
+  pyyaml,
+  pip,
+  qt5,
+  qtconsole,
+  recommonmark,
+  requests,
+  scikit-learn,
+  scipy,
+  serverfiles,
+  setuptools,
+  sphinx,
+  wheel,
+  xlrd,
+  xlsxwriter,
 }:
 
 let
   self = buildPythonPackage rec {
     pname = "orange3";
-    version = "3.36.2";
+    version = "3.37.0";
     pyproject = true;
 
     disabled = pythonOlder "3.7";
@@ -56,7 +61,7 @@ let
       owner = "biolab";
       repo = "orange3";
       rev = "refs/tags/${version}";
-      hash = "sha256-v9lk5vGhBaR2PHZ+Jq0hy1WaCsbeLe+vZlTaHBkfacU=";
+      hash = "sha256-3PybiHXH6oIYJb78/a7LnQA6cYUicDx4Mf65QhIhT4w=";
     };
 
     postPatch = ''
@@ -69,7 +74,6 @@ let
 
     nativeBuildInputs = [
       copyDesktopItems
-      pythonRelaxDepsHook
       oldest-supported-numpy
       cython
       qt5.wrapQtAppsHook
@@ -108,10 +112,12 @@ let
       xlsxwriter
       httpx
       pyqtgraph
+      pyqt5
       orange-widget-base
       keyrings-alt
       pyyaml
       baycomp
+      pip
     ];
 
     # FIXME: ImportError: cannot import name '_variable' from partially initialized module 'Orange.data' (most likely due to a circular import) (/build/source/Orange/data/__init__.py)
@@ -120,7 +126,10 @@ let
     # FIXME: pythonRelaxDeps is not relaxing the scikit-learn version constraint, had to disable this
     dontCheckRuntimeDeps = true;
 
-    pythonImportsCheck = [ "Orange" "Orange.data._variable" ];
+    pythonImportsCheck = [
+      "Orange"
+      "Orange.data._variable"
+    ];
 
     desktopItems = [
       (makeDesktopItem {
@@ -131,8 +140,19 @@ let
         comment = "Explore, analyze, and visualize your data";
         icon = "orange-canvas";
         mimeTypes = [ "application/x-extension-ows" ];
-        categories = [ "Science" "Education" "ArtificialIntelligence" "DataVisualization" "NumericalAnalysis" "Qt" ];
-        keywords = [ "Machine Learning" "Scientific Visualization" "Statistical Analysis" ];
+        categories = [
+          "Science"
+          "Education"
+          "ArtificialIntelligence"
+          "DataVisualization"
+          "NumericalAnalysis"
+          "Qt"
+        ];
+        keywords = [
+          "Machine Learning"
+          "Scientific Visualization"
+          "Statistical Analysis"
+        ];
       })
     ];
 
@@ -146,9 +166,9 @@ let
 
     passthru = {
       updateScript = nix-update-script { };
-      tests.unittests = self.overridePythonAttrs (old: {
-        pname = "${old.pname}-tests";
-        format = "other";
+      tests.unittests = stdenv.mkDerivation {
+        name = "${self.name}-tests";
+        inherit (self) src;
 
         preCheck = ''
           export HOME=$(mktemp -d)
@@ -160,23 +180,35 @@ let
           cp -r ${self}/${python.sitePackages}/Orange .
           chmod +w -R .
 
-          rm Orange/tests/test_url_reader.py # uses network
-          rm Orange/tests/test_ada_boost.py # broken: The 'base_estimator' parameter of AdaBoostRegressor must be an object implementing 'fit' and 'predict' or a str among {'deprecated'}. Got None instead.
-        '';
+          substituteInPlace Orange/classification/tests/test_xgb_cls.py \
+            --replace test_learners mk_test_learners
+
+          substituteInPlace Orange/modelling/tests/test_xgb.py \
+            --replace test_learners mk_test_learners
+
+          substituteInPlace Orange/**/tests/*.py \
+            --replace test_filename filename_test
+
+          # TODO: debug why orange is crashing on GC, may be a upstream issue
+          chmod +x Orange/__init__.py
+          echo "import gc; gc.disable()" | tee -a Orange/__init__.py
 
-        checkPhase = ''
-          runHook preCheck
-          ${python.interpreter} -m unittest -b -v ./Orange/**/test*.py
-          runHook postCheck
         '';
 
-        postInstall = "";
+        nativeBuildInputs = [
+          pytestCheckHook
+          pytest-qt
+        ];
+
+        postCheck = ''
+          touch $out
+        '';
 
         doBuild = false;
         doInstall = false;
 
-        nativeBuildInputs = [ self ] ++ old.nativeBuildInputs;
-      });
+        buildInputs = [ self ];
+      };
     };
 
     meta = with lib; {
diff --git a/pkgs/development/python-modules/oras/default.nix b/pkgs/development/python-modules/oras/default.nix
index 16a8a9d9fd6b6..987b41dfaa2d6 100644
--- a/pkgs/development/python-modules/oras/default.nix
+++ b/pkgs/development/python-modules/oras/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "oras";
-  version = "0.1.29";
+  version = "0.1.30";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "oras-project";
     repo = "oras-py";
     rev = "refs/tags/${version}";
-    hash = "sha256-ZV+J5zqRBRIddWdmLzzjpZi3M5E/HfkG8lWK9xzy5tw=";
+    hash = "sha256-qdWGqa5W+WI+lQ2TDZUuJF7PSmkc1Kv7UbWL6+Rfyio=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/orbax-checkpoint/default.nix b/pkgs/development/python-modules/orbax-checkpoint/default.nix
index aa5a5572dec99..511542d0a4902 100644
--- a/pkgs/development/python-modules/orbax-checkpoint/default.nix
+++ b/pkgs/development/python-modules/orbax-checkpoint/default.nix
@@ -1,11 +1,16 @@
 {
   lib,
+  stdenv,
   absl-py,
   buildPythonPackage,
-  cached-property,
-  etils,
-  fetchPypi,
+  fetchFromGitHub,
+
+  # build-system
   flit-core,
+
+  # dependencies
+  etils,
+  humanize,
   importlib-resources,
   jax,
   jaxlib,
@@ -13,33 +18,38 @@
   nest-asyncio,
   numpy,
   protobuf,
-  pytest-xdist,
-  pytestCheckHook,
-  pythonOlder,
   pyyaml,
   tensorstore,
   typing-extensions,
+
+  # tests
+  chex,
+  google-cloud-logging,
+  mock,
+  pytest-xdist,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "orbax-checkpoint";
-  version = "0.5.9";
+  version = "0.6.4";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
-
-  src = fetchPypi {
-    pname = "orbax_checkpoint";
-    inherit version;
-    hash = "sha256-H96IkUM3IxV79uddNBCU0dq+0dvPx8/Ps4HeCItGi2A=";
+  src = fetchFromGitHub {
+    owner = "google";
+    repo = "orbax";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-xd75/AKBFUdA6a8sQnCB2rVbHl/Foy4LTb07jnwrTjA=";
   };
 
+  sourceRoot = "${src.name}/checkpoint";
+
   build-system = [ flit-core ];
 
   dependencies = [
     absl-py
-    cached-property
     etils
+    humanize
     importlib-resources
     jax
     jaxlib
@@ -53,6 +63,9 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
+    chex
+    google-cloud-logging
+    mock
     pytest-xdist
     pytestCheckHook
   ];
@@ -62,17 +75,24 @@ buildPythonPackage rec {
     "orbax.checkpoint"
   ];
 
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
+    # Probably failing because of a filesystem impurity
+    # self.assertFalse(os.path.exists(dst_dir))
+    # AssertionError: True is not false
+    "test_create_snapshot"
+  ];
+
   disabledTestPaths = [
     # Circular dependency flax
     "orbax/checkpoint/transform_utils_test.py"
     "orbax/checkpoint/utils_test.py"
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Orbax provides common utility libraries for JAX users";
     homepage = "https://github.com/google/orbax/tree/main/checkpoint";
-    changelog = "https://github.com/google/orbax/blob/${version}/CHANGELOG.md";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ fab ];
+    changelog = "https://github.com/google/orbax/releases/tag/v${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/ordered-set/default.nix b/pkgs/development/python-modules/ordered-set/default.nix
index d0ac537171a52..adaaa210cdd41 100644
--- a/pkgs/development/python-modules/ordered-set/default.nix
+++ b/pkgs/development/python-modules/ordered-set/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, flit-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  flit-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,20 +19,14 @@ buildPythonPackage rec {
     hash = "sha256-aUqORMh2V8WSku3nKJHrkdNBMfZTFGOqswCRkcdzZKg=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ordered_set"
-  ];
+  pythonImportsCheck = [ "ordered_set" ];
 
   meta = with lib; {
-    description = "A MutableSet that remembers its order, so that every entry has an index.";
+    description = "MutableSet that remembers its order, so that every entry has an index";
     homepage = "https://github.com/rspeer/ordered-set";
     license = licenses.mit;
     maintainers = with maintainers; [ MostAwesomeDude ];
diff --git a/pkgs/development/python-modules/orderedmultidict/default.nix b/pkgs/development/python-modules/orderedmultidict/default.nix
index fb7c4395e56c7..1d625b114f236 100644
--- a/pkgs/development/python-modules/orderedmultidict/default.nix
+++ b/pkgs/development/python-modules/orderedmultidict/default.nix
@@ -1,4 +1,12 @@
-{ lib, buildPythonPackage, fetchPypi, flake8, six, pythonOlder, importlib-metadata }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flake8,
+  six,
+  pythonOlder,
+  importlib-metadata,
+}:
 
 buildPythonPackage rec {
   pname = "orderedmultidict";
@@ -12,13 +20,10 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ flake8 ];
 
-  propagatedBuildInputs = [ six ]
-    ++ lib.optionals (pythonOlder "3.8") [
-      importlib-metadata
-    ];
+  propagatedBuildInputs = [ six ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   meta = with lib; {
-    description = "Ordered Multivalue Dictionary.";
+    description = "Ordered Multivalue Dictionary";
     homepage = "https://github.com/gruns/orderedmultidict";
     license = licenses.publicDomain;
     maintainers = with maintainers; [ vanzef ];
diff --git a/pkgs/development/python-modules/orderedset/default.nix b/pkgs/development/python-modules/orderedset/default.nix
index 1ab63309c3913..a1835c6cdac6b 100644
--- a/pkgs/development/python-modules/orderedset/default.nix
+++ b/pkgs/development/python-modules/orderedset/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "orderedset";
@@ -11,7 +15,7 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "An Ordered Set implementation in Cython";
+    description = "Ordered Set implementation in Cython";
     homepage = "https://pypi.python.org/pypi/orderedset";
     license = licenses.bsd3;
     maintainers = [ ];
diff --git a/pkgs/development/python-modules/orgparse/default.nix b/pkgs/development/python-modules/orgparse/default.nix
index 67988d5529ff9..0ad3b30aaeba0 100644
--- a/pkgs/development/python-modules/orgparse/default.nix
+++ b/pkgs/development/python-modules/orgparse/default.nix
@@ -1,6 +1,11 @@
-{ lib, python3Packages, fetchPypi }:
+{
+  lib,
+  setuptools-scm,
+  fetchPypi,
+  buildPythonPackage,
+}:
 
-python3Packages.buildPythonPackage rec {
+buildPythonPackage rec {
   pname = "orgparse";
   version = "0.4.20231004";
 
@@ -9,7 +14,7 @@ python3Packages.buildPythonPackage rec {
     hash = "sha256-pOOK6tq/mYiw9npmrNCCedGCILy8QioSkGDCiQu6kaA=";
   };
 
-  nativeBuildInputs = [ python3Packages.setuptools-scm ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   pyproject = true;
 
diff --git a/pkgs/development/python-modules/orjson/default.nix b/pkgs/development/python-modules/orjson/default.nix
index ede3b10fc718c..9fd8fe941adb5 100644
--- a/pkgs/development/python-modules/orjson/default.nix
+++ b/pkgs/development/python-modules/orjson/default.nix
@@ -1,65 +1,64 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build-system
-, rustPlatform
-, cffi
+  # build-system
+  rustPlatform,
+  cffi,
 
-# native dependencies
-, libiconv
+  # native dependencies
+  libiconv,
 
-# tests
-, numpy
-, psutil
-, pytestCheckHook
-, python-dateutil
-, pytz
-, xxhash
-, python
+  # tests
+  numpy,
+  psutil,
+  pytestCheckHook,
+  python-dateutil,
+  pytz,
+  xxhash,
+  python,
 
-# for passthru.tests
-, falcon
-, fastapi
-, gradio
-, mashumaro
-, ufolib2
+  # for passthru.tests
+  falcon,
+  fastapi,
+  gradio,
+  mashumaro,
+  ufolib2,
 }:
 
 buildPythonPackage rec {
   pname = "orjson";
-  version = "3.9.15";
+  version = "3.10.6";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "ijl";
     repo = "orjson";
     rev = "refs/tags/${version}";
-    hash = "sha256-6fcj64d/uFCxaez+xxOdHd+NqILKOPqK+YlxYX7D0DI=";
+    hash = "sha256-K3wCzwaGOsaiCm2LW4Oc4XOnp6agrdTxCxqEIMq0fuU=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-/Aa3saUP4QjSBIS9T8Vd0yggiJn2SIk7dYMA5icb1yA=";
+    hash = "sha256-SNdwqb47dJ084TMNsm2Btks1UCDerjSmSrQQUiGbx50=";
   };
 
   maturinBuildFlags = [ "--interpreter ${python.executable}" ];
 
-  nativeBuildInputs = [
-    cffi
-  ] ++ (with rustPlatform; [
-    cargoSetupHook
-    maturinBuildHook
-  ]);
+  nativeBuildInputs =
+    [ cffi ]
+    ++ (with rustPlatform; [
+      cargoSetupHook
+      maturinBuildHook
+    ]);
 
-  buildInputs = lib.optionals stdenv.isDarwin [
-    libiconv
-  ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
   nativeCheckInputs = [
     numpy
@@ -70,9 +69,7 @@ buildPythonPackage rec {
     xxhash
   ];
 
-  pythonImportsCheck = [
-    "orjson"
-  ];
+  pythonImportsCheck = [ "orjson" ];
 
   passthru.tests = {
     inherit
@@ -81,14 +78,17 @@ buildPythonPackage rec {
       gradio
       mashumaro
       ufolib2
-    ;
+      ;
   };
 
   meta = with lib; {
     description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy";
     homepage = "https://github.com/ijl/orjson";
     changelog = "https://github.com/ijl/orjson/blob/${version}/CHANGELOG.md";
-    license = with licenses; [ asl20 mit ];
+    license = with licenses; [
+      asl20
+      mit
+    ];
     platforms = platforms.unix;
     maintainers = with maintainers; [ misuzu ];
   };
diff --git a/pkgs/development/python-modules/orm/default.nix b/pkgs/development/python-modules/orm/default.nix
index 1b3ed285029fe..20825a18b5500 100644
--- a/pkgs/development/python-modules/orm/default.nix
+++ b/pkgs/development/python-modules/orm/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, aiomysql
-, aiosqlite
-, asyncpg
-, buildPythonPackage
-, databases
-, fetchFromGitHub
-, pythonOlder
-, typesystem
+{
+  lib,
+  aiomysql,
+  aiosqlite,
+  asyncpg,
+  buildPythonPackage,
+  databases,
+  fetchFromGitHub,
+  pythonOlder,
+  typesystem,
 }:
 
 buildPythonPackage rec {
@@ -39,14 +40,12 @@ buildPythonPackage rec {
   # Tests require databases
   doCheck = false;
 
-  pythonImportsCheck = [
-    "orm"
-  ];
+  pythonImportsCheck = [ "orm" ];
 
   meta = with lib; {
-    description = "An async ORM";
+    description = "Async ORM";
     homepage = "https://github.com/encode/orm";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ormar/default.nix b/pkgs/development/python-modules/ormar/default.nix
index e50d9b2788fa3..a2ef75c52bb1e 100644
--- a/pkgs/development/python-modules/ormar/default.nix
+++ b/pkgs/development/python-modules/ormar/default.nix
@@ -1,33 +1,33 @@
-{ lib
-, aiomysql
-, aiopg
-, aiosqlite
-, asyncpg
-, buildPythonPackage
-, cryptography
-, databases
-, fastapi
-, fetchFromGitHub
-, httpx
-, importlib-metadata
-, mysqlclient
-, nest-asyncio
-, orjson
-, poetry-core
-, psycopg2
-, pydantic
-, pymysql
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, sqlalchemy
-, typing-extensions
+{
+  lib,
+  aiomysql,
+  aiopg,
+  aiosqlite,
+  asyncpg,
+  buildPythonPackage,
+  cryptography,
+  databases,
+  fastapi,
+  fetchFromGitHub,
+  httpx,
+  importlib-metadata,
+  mysqlclient,
+  nest-asyncio,
+  orjson,
+  poetry-core,
+  psycopg2,
+  pydantic,
+  pymysql,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  sqlalchemy,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "ormar";
-  version = "0.12.2";
+  version = "0.20.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -36,7 +36,7 @@ buildPythonPackage rec {
     owner = "collerek";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-Yd5ex0bcy61zq5Sn2dKeb98s/CMxUWnyGx6jFWQ3RUs=";
+    hash = "sha256-DzvmJpWJANIoc5lvWAD0b2bhbKdDEpNL2l3TqXSZSnc=";
   };
 
   pythonRelaxDeps = [
@@ -47,42 +47,29 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  propagatedBuildInputs = [
-    databases
-    psycopg2
-    pydantic
-    sqlalchemy
-    psycopg2
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-    importlib-metadata
-  ];
+  propagatedBuildInputs =
+    [
+      databases
+      psycopg2
+      pydantic
+      sqlalchemy
+      psycopg2
+    ]
+    ++ lib.optionals (pythonOlder "3.8") [
+      typing-extensions
+      importlib-metadata
+    ];
 
   passthru.optional-dependencies = {
-    postgresql = [
-      asyncpg
-    ];
-    postgres = [
-      asyncpg
-    ];
-    aiopg = [
-      aiopg
-    ];
-    mysql = [
-      aiomysql
-    ];
-    sqlite = [
-      aiosqlite
-    ];
-    orjson = [
-      orjson
-    ];
-    crypto = [
-      cryptography
-    ];
+    postgresql = [ asyncpg ];
+    postgres = [ asyncpg ];
+    aiopg = [ aiopg ];
+    mysql = [ aiomysql ];
+    sqlite = [ aiosqlite ];
+    orjson = [ orjson ];
+    crypto = [ cryptography ];
     all = [
       aiomysql
       aiopg
@@ -95,9 +82,7 @@ buildPythonPackage rec {
     ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   checkInputs = [
     fastapi
@@ -106,9 +91,7 @@ buildPythonPackage rec {
     pytest-asyncio
   ] ++ passthru.optional-dependencies.all;
 
-  disabledTestPaths = [
-    "benchmarks/test_benchmark_*.py"
-  ];
+  disabledTestPaths = [ "benchmarks/test_benchmark_*.py" ];
 
   disabledTests = [
     # TypeError: Object of type bytes is not JSON serializable
@@ -154,9 +137,7 @@ buildPythonPackage rec {
     "test_quering_of_related_model_works_but_no_result"
   ];
 
-  pythonImportsCheck = [
-    "ormar"
-  ];
+  pythonImportsCheck = [ "ormar" ];
 
   meta = with lib; {
     description = "Async ORM with fastapi in mind and pydantic validation";
diff --git a/pkgs/development/python-modules/orvibo/default.nix b/pkgs/development/python-modules/orvibo/default.nix
index 0b08b3d1a0c1c..15ff4dcee51bf 100644
--- a/pkgs/development/python-modules/orvibo/default.nix
+++ b/pkgs/development/python-modules/orvibo/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/os-client-config/default.nix b/pkgs/development/python-modules/os-client-config/default.nix
new file mode 100644
index 0000000000000..e06fa9be9f4be
--- /dev/null
+++ b/pkgs/development/python-modules/os-client-config/default.nix
@@ -0,0 +1,62 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fixtures,
+  hacking,
+  jsonschema,
+  openstacksdk,
+  oslotest,
+  python-glanceclient,
+  setuptools,
+  stestr,
+  subunit,
+  testscenarios,
+  testtools,
+}:
+
+buildPythonPackage rec {
+  pname = "os-client-config";
+  version = "2.1.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-q8OKNR+MAG009+5fP2SN5ePs9kVcxdds/YidKRzfP04=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    openstacksdk
+    python-glanceclient
+  ];
+
+  nativeCheckInputs = [
+    hacking
+    fixtures
+    jsonschema
+    subunit
+    oslotest
+    stestr
+    testscenarios
+    testtools
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+
+    stestr run
+
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [ "os_client_config" ];
+
+  meta = with lib; {
+    homepage = "https://opendev.org/openstack/os-client-config";
+    description = "Collect client configuration for using OpenStack in consistent and comprehensive manner";
+    license = licenses.asl20;
+    maintainers = teams.openstack.members;
+  };
+}
diff --git a/pkgs/development/python-modules/os-service-types/default.nix b/pkgs/development/python-modules/os-service-types/default.nix
index 7ec653e4fcad5..e17e8f5fffe48 100644
--- a/pkgs/development/python-modules/os-service-types/default.nix
+++ b/pkgs/development/python-modules/os-service-types/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pbr
-, six
-, callPackage
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pbr,
+  six,
+  callPackage,
 }:
 
 buildPythonPackage rec {
@@ -22,7 +23,10 @@ buildPythonPackage rec {
     rm test-requirements.txt
   '';
 
-  propagatedBuildInputs = [ pbr six ];
+  propagatedBuildInputs = [
+    pbr
+    six
+  ];
 
   # check in passthru.tests.pytest to escape infinite recursion with other oslo components
   doCheck = false;
diff --git a/pkgs/development/python-modules/os-service-types/tests.nix b/pkgs/development/python-modules/os-service-types/tests.nix
index a0996765cb6b9..f5cbe994e9e8f 100644
--- a/pkgs/development/python-modules/os-service-types/tests.nix
+++ b/pkgs/development/python-modules/os-service-types/tests.nix
@@ -1,10 +1,11 @@
-{ buildPythonPackage
-, keystoneauth1
-, os-service-types
-, oslotest
-, requests-mock
-, stestr
-, testscenarios
+{
+  buildPythonPackage,
+  keystoneauth1,
+  os-service-types,
+  oslotest,
+  requests-mock,
+  stestr,
+  testscenarios,
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/osc-diagram/default.nix b/pkgs/development/python-modules/osc-diagram/default.nix
index f2802ed08e76d..a411e2b4824ef 100644
--- a/pkgs/development/python-modules/osc-diagram/default.nix
+++ b/pkgs/development/python-modules/osc-diagram/default.nix
@@ -1,10 +1,10 @@
 {
-  lib
-  , buildPythonPackage
-  , diagrams
-  , fetchFromGitHub
-  , osc-sdk-python
-  , setuptools
+  lib,
+  buildPythonPackage,
+  diagrams,
+  fetchFromGitHub,
+  osc-sdk-python,
+  setuptools,
 }:
 
 buildPythonPackage {
@@ -19,9 +19,7 @@ buildPythonPackage {
     hash = "sha256-2Iaar2twemw4xv1GGqHd3xiNCHrZLsZXtP7e9tNVpEU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     diagrams
diff --git a/pkgs/development/python-modules/osc-lib/default.nix b/pkgs/development/python-modules/osc-lib/default.nix
index 1bde4e8eedb5d..db1ecc6d51d25 100644
--- a/pkgs/development/python-modules/osc-lib/default.nix
+++ b/pkgs/development/python-modules/osc-lib/default.nix
@@ -1,42 +1,47 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, cliff
-, oslo-i18n
-, oslo-utils
-, openstacksdk
-, pbr
-, requests-mock
-, simplejson
-, stestr
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cliff,
+  oslo-i18n,
+  oslo-utils,
+  openstacksdk,
+  pbr,
+  pythonOlder,
+  requests-mock,
+  setuptools,
+  requests,
+  stestr,
 }:
 
 buildPythonPackage rec {
   pname = "osc-lib";
-  version = "2.8.0";
-  format = "setuptools";
+  version = "3.1.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "openstack";
     repo = "osc-lib";
     rev = version;
-    hash = "sha256-ijL/m9BTAgDUjqy77nkl3rDppeUPBycmEqlL6uMruIA=";
+    hash = "sha256-DDjWM4hjHPXYDeAJ6FDZZPzi65DG1rJ3efs8MouX1WY=";
   };
 
   # fake version to make pbr.packaging happy and not reject it...
   PBR_VERSION = version;
 
-  nativeBuildInputs = [
+  build-system = [
     pbr
+    setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cliff
     openstacksdk
     oslo-i18n
     oslo-utils
-    simplejson
+    requests
   ];
 
   nativeCheckInputs = [
diff --git a/pkgs/development/python-modules/osc-placement/default.nix b/pkgs/development/python-modules/osc-placement/default.nix
new file mode 100644
index 0000000000000..8165e098ddd3a
--- /dev/null
+++ b/pkgs/development/python-modules/osc-placement/default.nix
@@ -0,0 +1,73 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  keystoneauth1,
+  openstackdocstheme,
+  osc-lib,
+  oslo-serialization,
+  oslo-utils,
+  oslotest,
+  pbr,
+  pythonOlder,
+  setuptools,
+  sphinxHook,
+  stestr,
+}:
+
+buildPythonPackage rec {
+  pname = "osc-placement";
+  version = "4.5.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "openstack";
+    repo = "osc-placement";
+    rev = "refs/tags/${version}";
+    hash = "sha256-PUwyYOg1dymlnnTr6TnxS42ISmbS00YfOdkL+5MbYFI=";
+  };
+
+  env.PBR_VERSION = version;
+
+  build-system = [
+    pbr
+    setuptools
+  ];
+
+  nativeBuildInputs = [
+    openstackdocstheme
+    sphinxHook
+  ];
+
+  sphinxBuilders = [ "man" ];
+
+  dependencies = [
+    keystoneauth1
+    osc-lib
+    oslo-utils
+    pbr
+  ];
+
+  nativeCheckInputs = [
+    oslo-serialization
+    oslotest
+    stestr
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+    stestr run
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [ "osc_placement" ];
+
+  meta = {
+    homepage = "https://opendev.org/openstack/osc-placement";
+    description = "OpenStackClient plugin for the Placement service";
+    license = lib.licenses.asl20;
+    maintainers = lib.teams.openstack.members;
+  };
+}
diff --git a/pkgs/development/python-modules/osc-sdk-python/default.nix b/pkgs/development/python-modules/osc-sdk-python/default.nix
index 74d617efe5008..0bbfc103b0411 100644
--- a/pkgs/development/python-modules/osc-sdk-python/default.nix
+++ b/pkgs/development/python-modules/osc-sdk-python/default.nix
@@ -1,38 +1,34 @@
 {
-  lib
-  , buildPythonPackage
-  , fetchFromGitHub
-  , pytestCheckHook
-  , requests
-  , ruamel-yaml
-  , setuptools
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  requests,
+  ruamel-yaml,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "osc-sdk-python";
-  version = "0.27.0";
+  version = "0.29.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "outscale";
     repo = "osc-sdk-python";
     rev = "v${version}";
-    hash = "sha256-dp4yE8cTeXAPoixJ6ZtsvcTSKdYpDIebHkddUiqJe5Q=";
+    hash = "sha256-WtKG2ujEGUW0nhYWxfYDkxicN/uEqBxKCh9FcCfjmHM=";
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     requests
     ruamel-yaml
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace setup.py \
@@ -40,13 +36,9 @@ buildPythonPackage rec {
   '';
 
   # Only keep test not requiring access and secret keys
-  pytestFlagsArray = [
-    "tests/test_net.py"
-  ];
+  pytestFlagsArray = [ "tests/test_net.py" ];
 
-  pythonImportsCheck = [
-    "osc_sdk_python"
-  ];
+  pythonImportsCheck = [ "osc_sdk_python" ];
 
   meta = with lib; {
     description = "SDK to perform actions on Outscale API";
diff --git a/pkgs/development/python-modules/osc/default.nix b/pkgs/development/python-modules/osc/default.nix
index ef96910759625..bb16aa7d40e08 100644
--- a/pkgs/development/python-modules/osc/default.nix
+++ b/pkgs/development/python-modules/osc/default.nix
@@ -1,30 +1,38 @@
-{ stdenv
-, bashInteractive
-, buildPythonPackage
-, cryptography
-, diffstat
-, fetchFromGitHub
-, lib
-, rpm
-, urllib3
-, keyring
+{
+  stdenv,
+  bashInteractive,
+  buildPythonPackage,
+  cryptography,
+  diffstat,
+  fetchFromGitHub,
+  lib,
+  rpm,
+  urllib3,
+  keyring,
 }:
 
 buildPythonPackage rec {
   pname = "osc";
-  version = "1.6.1";
+  version = "1.9.1";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "openSUSE";
     repo = "osc";
     rev = version;
-    hash = "sha256-U76nAE7NdLIdrKzRC0sP8hy6G6A8Tr4Qe2PGZI2xvyk=";
+    hash = "sha256-03EDarU7rmsiE96IYHXFuPtD8nWur0qwj8NDzSj8OX0=";
   };
 
   buildInputs = [ bashInteractive ]; # needed for bash-completion helper
-  nativeCheckInputs = [ rpm diffstat ];
-  propagatedBuildInputs = [ urllib3 cryptography keyring ];
+  nativeCheckInputs = [
+    rpm
+    diffstat
+  ];
+  propagatedBuildInputs = [
+    urllib3
+    cryptography
+    keyring
+  ];
 
   postInstall = ''
     install -D -m444 contrib/osc.fish $out/etc/fish/completions/osc.fish
@@ -41,12 +49,14 @@ buildPythonPackage rec {
   preCheck = "HOME=$TOP/tmp";
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     homepage = "https://github.com/openSUSE/osc";
     description = "opensuse-commander with svn like handling";
     mainProgram = "osc";
-    maintainers = with maintainers; [ peti saschagrunert ];
+    maintainers = with maintainers; [
+      peti
+      saschagrunert
+    ];
     license = licenses.gpl2;
   };
-
 }
diff --git a/pkgs/development/python-modules/oschmod/default.nix b/pkgs/development/python-modules/oschmod/default.nix
new file mode 100644
index 0000000000000..8ce9b703c6b22
--- /dev/null
+++ b/pkgs/development/python-modules/oschmod/default.nix
@@ -0,0 +1,31 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "oschmod";
+  version = "0.3.12";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-vsmSFvMWFe5lOypch8rPtOS2GEwOn3HaGGMA2srpdPM=";
+  };
+
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "oschmod" ];
+
+  meta = {
+    description = "Change file permissions on Windows, macOS, and Linux";
+    homepage = "https://github.com/yakdriver/oschmod";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ gordon-bp ];
+  };
+}
diff --git a/pkgs/development/python-modules/oscpy/default.nix b/pkgs/development/python-modules/oscpy/default.nix
index 9ccbedb180606..9889b746405a2 100644
--- a/pkgs/development/python-modules/oscpy/default.nix
+++ b/pkgs/development/python-modules/oscpy/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "oscpy";
@@ -26,7 +32,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "oscpy" ];
 
   meta = with lib; {
-    description = "A modern implementation of OSC for python2/3";
+    description = "Modern implementation of OSC for python2/3";
     mainProgram = "oscli";
     license = licenses.mit;
     homepage = "https://github.com/kivy/oscpy";
diff --git a/pkgs/development/python-modules/oscrypto/default.nix b/pkgs/development/python-modules/oscrypto/default.nix
index c3cea1d5bcde5..ef90df289af64 100644
--- a/pkgs/development/python-modules/oscrypto/default.nix
+++ b/pkgs/development/python-modules/oscrypto/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, stdenv
-, asn1crypto
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, openssl
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  asn1crypto,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  openssl,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -41,19 +42,13 @@ buildPythonPackage rec {
     done
   '';
 
-  propagatedBuildInputs = [
-    asn1crypto
-  ];
+  propagatedBuildInputs = [ asn1crypto ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "oscrypto"
-  ];
+  pythonImportsCheck = [ "oscrypto" ];
 
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   disabledTests = [
     # Tests require network access
@@ -65,6 +60,6 @@ buildPythonPackage rec {
     description = "Encryption library for Python";
     homepage = "https://github.com/wbond/oscrypto";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/oscscreen/default.nix b/pkgs/development/python-modules/oscscreen/default.nix
index c0eab771d148b..a9f9a9873df54 100644
--- a/pkgs/development/python-modules/oscscreen/default.nix
+++ b/pkgs/development/python-modules/oscscreen/default.nix
@@ -1,8 +1,8 @@
 {
-  lib
-  , buildPythonPackage
-  , fetchFromGitHub
-  , setuptools
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-0Im1kVFa11AW+7Oe95XvkfxSlaux6bkKaHSQy6hJCN8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   pythonImportsCheck = [ "oscscreen" ];
 
diff --git a/pkgs/development/python-modules/oset/default.nix b/pkgs/development/python-modules/oset/default.nix
index 7cc3238060293..e1c79446e3972 100644
--- a/pkgs/development/python-modules/oset/default.nix
+++ b/pkgs/development/python-modules/oset/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "oset";
@@ -16,5 +20,4 @@ buildPythonPackage rec {
     description = "Ordered set";
     license = licenses.psfl;
   };
-
 }
diff --git a/pkgs/development/python-modules/oslo-concurrency/default.nix b/pkgs/development/python-modules/oslo-concurrency/default.nix
index 13fbdbcaac64a..903a24d3306c9 100644
--- a/pkgs/development/python-modules/oslo-concurrency/default.nix
+++ b/pkgs/development/python-modules/oslo-concurrency/default.nix
@@ -1,30 +1,31 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, bash
-, coreutils
-, eventlet
-, fasteners
-, fixtures
-, iana-etc
-, libredirect
-, oslo-config
-, oslo-utils
-, oslotest
-, pbr
-, stestr
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  bash,
+  coreutils,
+  eventlet,
+  fasteners,
+  fixtures,
+  iana-etc,
+  libredirect,
+  oslo-config,
+  oslo-utils,
+  oslotest,
+  pbr,
+  setuptools,
+  stestr,
 }:
 
 buildPythonPackage rec {
   pname = "oslo-concurrency";
-  version = "6.0.0";
-  format = "setuptools";
+  version = "6.1.0";
+  pyproject = true;
 
   src = fetchPypi {
     pname = "oslo.concurrency";
     inherit version;
-    hash = "sha256-tS8CtORvXydLkfuOG/xcv5pBjfzUqDvggDRUlePSboo=";
+    hash = "sha256-tWSuCvLuV3DztuYw3yakuGdsf+Qih/GIPiWaUard8Jc=";
   };
 
   postPatch = ''
@@ -33,13 +34,15 @@ buildPythonPackage rec {
     rm test-requirements.txt
 
     substituteInPlace oslo_concurrency/tests/unit/test_processutils.py \
-      --replace "/bin/bash" "${bash}/bin/bash" \
-      --replace "/bin/true" "${coreutils}/bin/true" \
-      --replace "/usr/bin/env" "${coreutils}/bin/env" \
-      --replace "/usr/bin/true" "${coreutils}/bin/true"
+      --replace-fail "/bin/bash" "${bash}/bin/bash" \
+      --replace-fail "/usr/bin/true" "${coreutils}/bin/true" \
+      --replace-fail "/bin/true" "${coreutils}/bin/true" \
+      --replace-fail "/usr/bin/env" "${coreutils}/bin/env"
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     fasteners
     oslo-config
     oslo-utils
@@ -70,7 +73,6 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "oslo_concurrency" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
     description = "Oslo Concurrency library";
     mainProgram = "lockutils-wrapper";
     homepage = "https://github.com/openstack/oslo.concurrency";
diff --git a/pkgs/development/python-modules/oslo-config/default.nix b/pkgs/development/python-modules/oslo-config/default.nix
index f73090cf812a1..dbcde501d3451 100644
--- a/pkgs/development/python-modules/oslo-config/default.nix
+++ b/pkgs/development/python-modules/oslo-config/default.nix
@@ -1,26 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, debtcollector
-, netaddr
-, oslo-i18n
-, pbr
-, pyyaml
-, requests
-, rfc3986
-, stevedore
-, callPackage
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  debtcollector,
+  netaddr,
+  oslo-i18n,
+  pbr,
+  pyyaml,
+  requests,
+  rfc3986,
+  setuptools,
+  stevedore,
+  callPackage,
 }:
 
 buildPythonPackage rec {
   pname = "oslo-config";
-  version = "9.4.0";
-  format = "setuptools";
+  version = "9.6.0";
+  pyproject = true;
 
   src = fetchPypi {
     pname = "oslo.config";
     inherit version;
-    hash = "sha256-NbEaZhtgjttQMF2tkeTjCBnZDveUt9fbpb2LLvLrjA0=";
+    hash = "sha256-nwXvcOSNmmGo0Mm+04naJPLvWonfW26N63x0HWETZn4=";
   };
 
   postPatch = ''
@@ -29,7 +31,9 @@ buildPythonPackage rec {
     rm test-requirements.txt
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     debtcollector
     netaddr
     oslo-i18n
@@ -44,7 +48,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   passthru.tests = {
-    tests = callPackage ./tests.nix {};
+    tests = callPackage ./tests.nix { };
   };
 
   pythonImportsCheck = [ "oslo_config" ];
diff --git a/pkgs/development/python-modules/oslo-config/tests.nix b/pkgs/development/python-modules/oslo-config/tests.nix
index 0540760e57a06..7f6a3dfbf6f02 100644
--- a/pkgs/development/python-modules/oslo-config/tests.nix
+++ b/pkgs/development/python-modules/oslo-config/tests.nix
@@ -1,16 +1,17 @@
-{ buildPythonPackage
-, oslo-config
-, docutils
-, oslo-log
-, oslotest
-, requests-mock
-, sphinx
-, stestr
-, testscenarios
+{
+  buildPythonPackage,
+  oslo-config,
+  docutils,
+  oslo-log,
+  oslotest,
+  requests-mock,
+  sphinx,
+  stestr,
+  testscenarios,
 }:
 
 buildPythonPackage {
-pname = "oslo-config-tests";
+  pname = "oslo-config-tests";
   inherit (oslo-config) version src;
   format = "other";
 
diff --git a/pkgs/development/python-modules/oslo-context/default.nix b/pkgs/development/python-modules/oslo-context/default.nix
index ce9b5d6dcf994..41d56c34ac4ba 100644
--- a/pkgs/development/python-modules/oslo-context/default.nix
+++ b/pkgs/development/python-modules/oslo-context/default.nix
@@ -1,12 +1,22 @@
-{ lib, buildPythonPackage, fetchPypi, debtcollector, oslotest, stestr, pbr }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  debtcollector,
+  oslotest,
+  stestr,
+  pbr,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "oslo.context";
-  version = "5.5.0";
+  version = "5.6.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-6uAxeymSjxk030xguGD+hiUkfLKXxcxi/vjrWCexL6w=";
+    hash = "sha256-UiLDJja+BwojDfnTFBoLJ6lfCjtpePTBSFvK2kekw8s=";
   };
 
   postPatch = ''
@@ -15,7 +25,9 @@ buildPythonPackage rec {
     rm test-requirements.txt
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     debtcollector
     pbr
   ];
@@ -26,7 +38,9 @@ buildPythonPackage rec {
   ];
 
   checkPhase = ''
+    runHook preCheck
     stestr run
+    runHook postCheck
   '';
 
   pythonImportsCheck = [ "oslo_context" ];
diff --git a/pkgs/development/python-modules/oslo-db/default.nix b/pkgs/development/python-modules/oslo-db/default.nix
index b4dce2cc09b5e..ad4e2a99b1955 100644
--- a/pkgs/development/python-modules/oslo-db/default.nix
+++ b/pkgs/development/python-modules/oslo-db/default.nix
@@ -1,32 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, alembic
-, debtcollector
-, oslo-config
-, oslo-context
-, oslo-i18n
-, oslo-utils
-, oslotest
-, pbr
-, psycopg2
-, setuptools
-, sqlalchemy
-, stevedore
-, stestr
-, testresources
-, testscenarios
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  alembic,
+  debtcollector,
+  oslo-config,
+  oslo-context,
+  oslo-i18n,
+  oslo-utils,
+  oslotest,
+  pbr,
+  psycopg2,
+  setuptools,
+  sqlalchemy,
+  stevedore,
+  stestr,
+  testresources,
+  testscenarios,
 }:
 
 buildPythonPackage rec {
   pname = "oslo-db";
-  version = "15.0.0";
+  version = "16.0.0";
   pyproject = true;
 
   src = fetchPypi {
     pname = "oslo.db";
     inherit version;
-    hash = "sha256-6QJDUgX1xQtw7mNYY8i06lS9Hr4ABpXAZeMN1C2Xb/o=";
+    hash = "sha256-8bNUjR8eEfLYEZfBwXix0lO2A474iDYdMQp2Aa7BfoE=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/oslo-i18n/default.nix b/pkgs/development/python-modules/oslo-i18n/default.nix
index 814c7dfc0dc12..42358d6f59e11 100644
--- a/pkgs/development/python-modules/oslo-i18n/default.nix
+++ b/pkgs/development/python-modules/oslo-i18n/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, oslotest
-, pbr
-, setuptools
-, testscenarios
-, stestr
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  oslotest,
+  pbr,
+  setuptools,
+  testscenarios,
+  stestr,
 }:
 
 buildPythonPackage rec {
   pname = "oslo-i18n";
-  version = "6.3.0";
+  version = "6.4.0";
   pyproject = true;
 
   src = fetchPypi {
     pname = "oslo.i18n";
     inherit version;
-    hash = "sha256-ZKJR7e+L8bsdTm9403fhSdTxXBqSRd538XIBbaYmdEQ=";
+    hash = "sha256-ZuBMBB6f8X0H4T7H9IKV+8NhaRQ8csojUqPvzJjntgg=";
   };
 
   postPatch = ''
@@ -25,7 +26,7 @@ buildPythonPackage rec {
     rm test-requirements.txt
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     pbr
     setuptools
   ];
diff --git a/pkgs/development/python-modules/oslo-log/default.nix b/pkgs/development/python-modules/oslo-log/default.nix
index bc4584bcee5a4..81a9bd5b8e4b0 100644
--- a/pkgs/development/python-modules/oslo-log/default.nix
+++ b/pkgs/development/python-modules/oslo-log/default.nix
@@ -1,43 +1,45 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, eventlet
-, oslo-config
-, oslo-context
-, oslo-serialization
-, oslo-utils
-, oslotest
-, pbr
-, pyinotify
-, python-dateutil
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  eventlet,
+  oslo-config,
+  oslo-context,
+  oslo-serialization,
+  oslo-utils,
+  oslotest,
+  pbr,
+  pyinotify,
+  python-dateutil,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "oslo-log";
-  version = "5.5.1";
-  format = "setuptools";
+  version = "6.1.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     pname = "oslo.log";
     inherit version;
-    hash = "sha256-SEFIUSxdsqizXIPNmX6ZU3Vf2L+oqvbuDMjHrrdCkhA=";
+    hash = "sha256-92gEffnXBsSE3WZl3LvqKJAh1Iy3zlq/eh9poJSR9f4=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     oslo-config
     oslo-context
     oslo-serialization
     oslo-utils
     pbr
     python-dateutil
-  ] ++ lib.optionals stdenv.isLinux [
-    pyinotify
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isLinux [ pyinotify ];
 
   nativeCheckInputs = [
     eventlet
@@ -52,9 +54,7 @@ buildPythonPackage rec {
     "test_log_config_append_invalid"
   ];
 
-  pythonImportsCheck = [
-    "oslo_log"
-  ];
+  pythonImportsCheck = [ "oslo_log" ];
 
   meta = with lib; {
     description = "oslo.log library";
@@ -62,6 +62,5 @@ buildPythonPackage rec {
     homepage = "https://github.com/openstack/oslo.log";
     license = licenses.asl20;
     maintainers = teams.openstack.members;
-    broken = stdenv.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/oslo-serialization/default.nix b/pkgs/development/python-modules/oslo-serialization/default.nix
index 1399503c0f9d9..16b718161b351 100644
--- a/pkgs/development/python-modules/oslo-serialization/default.nix
+++ b/pkgs/development/python-modules/oslo-serialization/default.nix
@@ -1,23 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, msgpack
-, oslo-utils
-, oslotest
-, pbr
-, pytz
-, stestr
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msgpack,
+  oslo-utils,
+  oslotest,
+  pbr,
+  pytz,
+  setuptools,
+  stestr,
 }:
 
 buildPythonPackage rec {
   pname = "oslo-serialization";
-  version = "5.4.0";
-  format = "setuptools";
+  version = "5.5.0";
+  pyproject = true;
 
   src = fetchPypi {
     pname = "oslo.serialization";
     inherit version;
-    hash = "sha256-MVyzRl6ZxoXLCRuQNly3Ab7nFA4gS6Pl/C2KILTsbnY=";
+    hash = "sha256-nnUvxdipdZVnKN2WqCGGeDs/78rLs1U6zZMwWIYeFaY=";
   };
 
   postPatch = ''
@@ -26,14 +28,26 @@ buildPythonPackage rec {
     rm test-requirements.txt
   '';
 
-  nativeBuildInputs = [ pbr ];
+  build-system = [
+    pbr
+    setuptools
+  ];
 
-  propagatedBuildInputs = [ msgpack oslo-utils pytz ];
+  dependencies = [
+    msgpack
+    oslo-utils
+    pytz
+  ];
 
-  nativeCheckInputs = [ oslotest stestr ];
+  nativeCheckInputs = [
+    oslotest
+    stestr
+  ];
 
   checkPhase = ''
+    runHook preCheck
     stestr run
+    runHook postCheck
   '';
 
   pythonImportsCheck = [ "oslo_serialization" ];
diff --git a/pkgs/development/python-modules/oslo-utils/default.nix b/pkgs/development/python-modules/oslo-utils/default.nix
index 503143f75d318..dab2af567be3e 100644
--- a/pkgs/development/python-modules/oslo-utils/default.nix
+++ b/pkgs/development/python-modules/oslo-utils/default.nix
@@ -1,37 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, ddt
-, debtcollector
-, eventlet
-, fixtures
-, iso8601
-, netaddr
-, netifaces
-, oslo-i18n
-, oslotest
-, packaging
-, pbr
-, pyparsing
-, pytz
-, setuptools
-, stestr
-, testscenarios
-, tzdata
-, pyyaml
-, iana-etc
-, libredirect
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  ddt,
+  debtcollector,
+  eventlet,
+  fixtures,
+  iso8601,
+  netaddr,
+  netifaces,
+  oslo-i18n,
+  oslotest,
+  packaging,
+  pbr,
+  pyparsing,
+  pytz,
+  qemu,
+  setuptools,
+  stestr,
+  testscenarios,
+  tzdata,
+  pyyaml,
+  iana-etc,
+  libredirect,
 }:
 
 buildPythonPackage rec {
   pname = "oslo-utils";
-  version = "7.1.0";
+  version = "7.3.0";
   pyproject = true;
 
   src = fetchPypi {
     pname = "oslo.utils";
     inherit version;
-    hash = "sha256-XkLzOU0fH5duiZSsSgkYlm0vfq98dzgN1hLEpBSN2Y4=";
+    hash = "sha256-WaXT5Oe7x42AHM68K4I+QptiTBK7bjtudvccKfK/Id8=";
   };
 
   postPatch = ''
@@ -62,6 +64,7 @@ buildPythonPackage rec {
     eventlet
     fixtures
     oslotest
+    qemu
     stestr
     testscenarios
     pyyaml
@@ -70,7 +73,7 @@ buildPythonPackage rec {
   # disabled tests:
   # https://bugs.launchpad.net/oslo.utils/+bug/2054134
   # netaddr default behaviour changed to be stricter
-  checkPhase =''
+  checkPhase = ''
     echo "nameserver 127.0.0.1" > resolv.conf
     export NIX_REDIRECTS=/etc/protocols=${iana-etc}/etc/protocols:/etc/resolv.conf=$(realpath resolv.conf)
     export LD_PRELOAD=${libredirect}/lib/libredirect.so
diff --git a/pkgs/development/python-modules/oslotest/default.nix b/pkgs/development/python-modules/oslotest/default.nix
index 2f400b0312a15..9aebaf81d38cb 100644
--- a/pkgs/development/python-modules/oslotest/default.nix
+++ b/pkgs/development/python-modules/oslotest/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fixtures
-, pbr
-, six
-, subunit
-, callPackage
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fixtures,
+  pbr,
+  six,
+  subunit,
+  callPackage,
 }:
 
 buildPythonPackage rec {
@@ -15,7 +16,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-97skDGy+8voLq7lRP/PafQ8ozDja+Y70Oy6ISDZ/vSA=";
+    hash = "sha256-97skDGy+8voLq7lRP/PafQ8ozDja+Y70Oy6ISDZ/vSA=";
   };
 
   nativeBuildInputs = [ pbr ];
@@ -30,7 +31,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   passthru.tests = {
-    tests = callPackage ./tests.nix {};
+    tests = callPackage ./tests.nix { };
   };
 
   pythonImportsCheck = [ "oslotest" ];
diff --git a/pkgs/development/python-modules/oslotest/tests.nix b/pkgs/development/python-modules/oslotest/tests.nix
index f80073e1c1bd1..d7667166b18bc 100644
--- a/pkgs/development/python-modules/oslotest/tests.nix
+++ b/pkgs/development/python-modules/oslotest/tests.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
-, oslo-config
-, oslotest
-, stestr
+{
+  buildPythonPackage,
+  oslo-config,
+  oslotest,
+  stestr,
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/osmnx/default.nix b/pkgs/development/python-modules/osmnx/default.nix
index 0800d71a8dfbd..673296d719f53 100644
--- a/pkgs/development/python-modules/osmnx/default.nix
+++ b/pkgs/development/python-modules/osmnx/default.nix
@@ -1,42 +1,41 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, folium
-, gdal
-, geopandas
-, hatchling
-, matplotlib
-, networkx
-, numpy
-, pandas
-, pythonOlder
-, rasterio
-, requests
-, rtree
-, scikit-learn
-, scipy
-, shapely
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  folium,
+  gdal,
+  geopandas,
+  hatchling,
+  matplotlib,
+  networkx,
+  numpy,
+  pandas,
+  pythonOlder,
+  rasterio,
+  requests,
+  rtree,
+  scikit-learn,
+  scipy,
+  shapely,
 }:
 
 buildPythonPackage rec {
   pname = "osmnx";
-  version = "1.9.1";
+  version = "1.9.3";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "gboeing";
     repo = "osmnx";
     rev = "refs/tags/v${version}";
-    hash = "sha256-od/0IuiK2CvrD0lfcTzkImK/5hcm6m61ULYzEtv/YeA=";
+    hash = "sha256-Tn800wFoPi5VkZmu9wUVM+EmCj/xxU2EJ6iwnA1VKXo=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     geopandas
     matplotlib
     networkx
@@ -55,16 +54,13 @@ buildPythonPackage rec {
   # Tests require network
   doCheck = false;
 
-  pythonImportsCheck = [
-    "osmnx"
-  ];
+  pythonImportsCheck = [ "osmnx" ];
 
-  meta = with lib; {
+  meta = {
     description = "Package to easily download, construct, project, visualize, and analyze complex street networks from OpenStreetMap with NetworkX";
     homepage = "https://github.com/gboeing/osmnx";
-    changelog = "https://github.com/gboeing/osmnx/blob/v${version}/CHANGELOG.md";
-    license = licenses.mit;
-    maintainers = with maintainers; [ psyanticy ];
+    changelog = "https://github.com/gboeing/osmnx/blob/${src.rev}/CHANGELOG.md";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ psyanticy ];
   };
 }
-
diff --git a/pkgs/development/python-modules/osmpythontools/default.nix b/pkgs/development/python-modules/osmpythontools/default.nix
index 1e4f8fd9f822a..b64ea716e5538 100644
--- a/pkgs/development/python-modules/osmpythontools/default.nix
+++ b/pkgs/development/python-modules/osmpythontools/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, beautifulsoup4
-, geojson
-, lxml
-, matplotlib
-, numpy
-, pandas
-, ujson
-, xarray
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  beautifulsoup4,
+  geojson,
+  lxml,
+  matplotlib,
+  numpy,
+  pandas,
+  ujson,
+  xarray,
 }:
 
 buildPythonPackage rec {
@@ -47,7 +48,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A library to access OpenStreetMap-related services";
+    description = "Library to access OpenStreetMap-related services";
     longDescription = ''
       The python package OSMPythonTools provides easy access to
       OpenStreetMap-related services, among them an Overpass endpoint,
diff --git a/pkgs/development/python-modules/ospd/default.nix b/pkgs/development/python-modules/ospd/default.nix
index a9e6ba10d9811..ad9bb84c747e4 100644
--- a/pkgs/development/python-modules/ospd/default.nix
+++ b/pkgs/development/python-modules/ospd/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, defusedxml
-, deprecated
-, fetchFromGitHub
-, lxml
-, paramiko
-, psutil
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  defusedxml,
+  deprecated,
+  fetchFromGitHub,
+  lxml,
+  paramiko,
+  psutil,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -16,7 +17,7 @@ buildPythonPackage rec {
   version = "21.4.4";
   format = "setuptools";
 
-  disabled = pythonOlder "3.7" || stdenv.isDarwin;
+  disabled = pythonOlder "3.7" || stdenv.hostPlatform.isDarwin;
 
   src = fetchFromGitHub {
     owner = "greenbone";
@@ -33,13 +34,9 @@ buildPythonPackage rec {
     psutil
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ospd"
-  ];
+  pythonImportsCheck = [ "ospd" ];
 
   meta = with lib; {
     description = "Framework for vulnerability scanners which support OSP";
diff --git a/pkgs/development/python-modules/osprofiler/default.nix b/pkgs/development/python-modules/osprofiler/default.nix
new file mode 100644
index 0000000000000..01c8c09f1c156
--- /dev/null
+++ b/pkgs/development/python-modules/osprofiler/default.nix
@@ -0,0 +1,54 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  netaddr,
+  oslo-concurrency,
+  oslo-config,
+  oslo-serialization,
+  oslo-utils,
+  prettytable,
+  requests,
+  setuptools,
+  webob,
+}:
+
+buildPythonPackage rec {
+  pname = "osprofiler";
+  version = "4.2.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-bdHEviZFqPJBIQVdpbtGFojcr8fmtNS6vA7xumaQJ4E=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    netaddr
+    oslo-concurrency
+    oslo-config
+    oslo-serialization
+    oslo-utils
+    prettytable
+    requests
+    webob
+  ];
+
+  # NOTE(vinetos): OSProfiler depends on jeager-client which use opentracing
+  # Opentracing and jeager-client are archived since 2022.
+  # As this package is made only to support old OpenStack clients and bindings,
+  # We do not really care
+  doCheck = false;
+
+  pythonImportsCheck = [ "osprofiler" ];
+
+  meta = with lib; {
+    description = "OpenStack Library to profile request between all involved services";
+    homepage = "https://opendev.org/openstack/osprofiler/";
+    license = licenses.asl20;
+    mainProgram = "osprofiler";
+    maintainers = teams.openstack.members;
+  };
+}
diff --git a/pkgs/development/python-modules/osqp/default.nix b/pkgs/development/python-modules/osqp/default.nix
index 38004632402b9..d3dbb48df72ff 100644
--- a/pkgs/development/python-modules/osqp/default.nix
+++ b/pkgs/development/python-modules/osqp/default.nix
@@ -1,29 +1,29 @@
-{ lib
-, buildPythonPackage
-, cmake
-, cvxopt
-, fetchPypi
-, future
-, numpy
-, oldest-supported-numpy
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, qdldl
-, scipy
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  cmake,
+  cvxopt,
+  fetchPypi,
+  future,
+  numpy,
+  oldest-supported-numpy,
+  pytestCheckHook,
+  pythonOlder,
+  qdldl,
+  scipy,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "osqp";
-  version = "0.6.5";
+  version = "0.6.7";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-soEK7nviNzrdi2wL5a2ZuBAoh3SrykIXUcsDLWpa7e8=";
+    hash = "sha256-O3ARmFV6SZxg67U9fyUBkGSFXHMvTz+84gVdeJ5Tph0=";
   };
 
   dontUseCmakeConfigure = true;
@@ -32,12 +32,9 @@ buildPythonPackage rec {
     cmake
     oldest-supported-numpy
     setuptools-scm
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "scipy"
-  ];
+  pythonRelaxDeps = [ "scipy" ];
 
   propagatedBuildInputs = [
     future
@@ -51,25 +48,24 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "osqp"
-  ];
+  pythonImportsCheck = [ "osqp" ];
 
-  disabledTests = [
-    # Need an unfree license package - mkl
-    "test_issue14"
-  ]
-  # disable tests failing after scipy 1.12 update
-  # https://github.com/osqp/osqp-python/issues/121
-  # re-enable once unit tests fixed
-  ++ [
-    "feasibility_tests"
-    "polish_tests"
-    "update_matrices_tests"
-  ];
+  disabledTests =
+    [
+      # Need an unfree license package - mkl
+      "test_issue14"
+    ]
+    # disable tests failing after scipy 1.12 update
+    # https://github.com/osqp/osqp-python/issues/121
+    # re-enable once unit tests fixed
+    ++ [
+      "feasibility_tests"
+      "polish_tests"
+      "update_matrices_tests"
+    ];
 
   meta = with lib; {
-    description = "The Operator Splitting QP Solver";
+    description = "Operator Splitting QP Solver";
     longDescription = ''
       Numerical optimization package for solving problems in the form
         minimize        0.5 x' P x + q' x
diff --git a/pkgs/development/python-modules/oss2/default.nix b/pkgs/development/python-modules/oss2/default.nix
index a62410ecdc42c..374f526b57f54 100644
--- a/pkgs/development/python-modules/oss2/default.nix
+++ b/pkgs/development/python-modules/oss2/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, aliyun-python-sdk-core
-, aliyun-python-sdk-kms
-, aliyun-python-sdk-sts
-, buildPythonPackage
-, crcmod
-, fetchFromGitHub
-, mock
-, pycryptodome
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
-, six
+{
+  lib,
+  aliyun-python-sdk-core,
+  aliyun-python-sdk-kms,
+  aliyun-python-sdk-sts,
+  buildPythonPackage,
+  crcmod,
+  fetchFromGitHub,
+  mock,
+  pycryptodome,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +28,6 @@ buildPythonPackage rec {
     hash = "sha256-jDSXPVyy8XvPgsGZXsdfavFPptq28pCwr9C63OZvNrY=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   propagatedBuildInputs = [
     requests
@@ -49,9 +46,7 @@ buildPythonPackage rec {
 
   pythonRelaxDeps = true;
 
-  pythonImportsCheck = [
-    "oss2"
-  ];
+  pythonImportsCheck = [ "oss2" ];
 
   disabledTestPaths = [
     # Tests require network access
diff --git a/pkgs/development/python-modules/ossfs/default.nix b/pkgs/development/python-modules/ossfs/default.nix
index 97f61f62199b4..940f5a20b3429 100644
--- a/pkgs/development/python-modules/ossfs/default.nix
+++ b/pkgs/development/python-modules/ossfs/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, aiooss2
-, buildPythonPackage
-, fetchFromGitHub
-, fsspec
-, oss2
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools-scm
+{
+  lib,
+  aiooss2,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fsspec,
+  oss2,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -30,7 +30,6 @@ buildPythonPackage rec {
   ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools-scm
   ];
 
@@ -43,9 +42,7 @@ buildPythonPackage rec {
   # Most tests require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ossfs"
-  ];
+  pythonImportsCheck = [ "ossfs" ];
 
   meta = with lib; {
     description = "Filesystem for Alibaba Cloud (Aliyun) Object Storage System (OSS)";
diff --git a/pkgs/development/python-modules/osxphotos/default.nix b/pkgs/development/python-modules/osxphotos/default.nix
new file mode 100644
index 0000000000000..0af996f622a84
--- /dev/null
+++ b/pkgs/development/python-modules/osxphotos/default.nix
@@ -0,0 +1,112 @@
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+
+  bitmath,
+  bpylist2,
+  click,
+  mako,
+  more-itertools,
+  objexplore,
+  packaging,
+  pathvalidate,
+  pip,
+  ptpython,
+  pytimeparse2,
+  pyyaml,
+  requests,
+  rich-theme-manager,
+  rich,
+  shortuuid,
+  strpdatetime,
+  tenacity,
+  textx,
+  toml,
+  wrapt,
+  wurlitzer,
+  xdg-base-dirs,
+
+  pytestCheckHook,
+  pytest-mock,
+}:
+
+buildPythonPackage rec {
+  pname = "osxphotos";
+  version = "0.68.6";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "RhetTbull";
+    repo = "osxphotos";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-5cKxlfm4i743bJlS2HVPBO1Fbvz1c6wgkkG8Vle8Ajo=";
+  };
+
+  build-system = [ setuptools ];
+  dependencies = [
+    bitmath
+    bpylist2
+    click
+    mako
+    more-itertools
+    objexplore
+    packaging
+    pathvalidate
+    pip
+    ptpython
+    pytimeparse2
+    pyyaml
+    requests
+    rich-theme-manager
+    rich
+    shortuuid
+    strpdatetime
+    tenacity
+    textx
+    toml
+    wrapt
+    wurlitzer
+    xdg-base-dirs
+  ];
+
+  pythonRelaxDeps = [
+    "mako"
+    "more-itertools"
+    "objexplore"
+    "textx"
+  ];
+
+  pythonImportsCheck = [ "osxphotos" ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-mock
+  ];
+
+  preCheck = ''
+    export HOME=$(mktemp -d)
+  '';
+
+  disabledTestPaths = [ "tests/test_comments.py" ];
+  disabledTests = [
+    "test_iphoto_info"
+    "test_from_to_date_tz"
+    "test_function_url"
+    "test_get_local_tz"
+    "test_datetime_naive_to_local"
+    "test_from_to_date_tz"
+    "test_query_from_to_date_alt_location"
+    "test_query_function_url"
+  ];
+
+  meta = {
+    description = "Export photos from Apple's macOS Photos app and query the Photos library database to access metadata about images";
+    homepage = "https://github.com/RhetTbull/osxphotos";
+    changelog = "https://github.com/RhetTbull/osxphotos/blob/${src.rev}/CHANGELOG.md";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+    broken = stdenv.hostPlatform.isDarwin;
+  };
+}
diff --git a/pkgs/development/python-modules/ots-python/default.nix b/pkgs/development/python-modules/ots-python/default.nix
index f6a86a564136b..7aba8368fd8b0 100644
--- a/pkgs/development/python-modules/ots-python/default.nix
+++ b/pkgs/development/python-modules/ots-python/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, substituteAll
-, opentype-sanitizer
-, setuptools-scm
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  substituteAll,
+  opentype-sanitizer,
+  setuptools-scm,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -28,17 +29,11 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [
-    opentype-sanitizer
-  ];
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  propagatedBuildInputs = [ opentype-sanitizer ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   doCheck = true;
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Python wrapper for ots (OpenType Sanitizer)";
diff --git a/pkgs/development/python-modules/outcome/default.nix b/pkgs/development/python-modules/outcome/default.nix
index 0fa4ba74deabc..e0e98cee88724 100644
--- a/pkgs/development/python-modules/outcome/default.nix
+++ b/pkgs/development/python-modules/outcome/default.nix
@@ -1,26 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, attrs
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  attrs,
+  pytest,
 }:
 
 buildPythonPackage rec {
   pname = "outcome";
   version = "1.3.0.post0";
 
-  disabled = pythonOlder "3.4";
-
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-nc8C5l8pcbgAR7N3Ro5yomjhXArzzxI45v8U9/kRQ7g=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [ pytest ];
   propagatedBuildInputs = [ attrs ];
@@ -28,9 +24,12 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = {
-    description = "Capture the outcome of Python function calls.";
+    description = "Capture the outcome of Python function calls";
     homepage = "https://github.com/python-trio/outcome";
-    license = with lib.licenses; [ mit asl20 ];
+    license = with lib.licenses; [
+      mit
+      asl20
+    ];
     maintainers = with lib.maintainers; [ catern ];
   };
 }
diff --git a/pkgs/development/python-modules/outdated/default.nix b/pkgs/development/python-modules/outdated/default.nix
new file mode 100644
index 0000000000000..3331966bb31f6
--- /dev/null
+++ b/pkgs/development/python-modules/outdated/default.nix
@@ -0,0 +1,40 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  littleutils,
+  requests,
+  setuptools-scm,
+}:
+
+buildPythonPackage rec {
+  pname = "outdated";
+  version = "0.2.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "alexmojaki";
+    repo = "outdated";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-5VpPmgIcVtY97F0Hb0m9MuSW0zjaUJ18ATA4GBRw+jc=";
+  };
+
+  build-system = [ setuptools-scm ];
+
+  dependencies = [
+    littleutils
+    requests
+  ];
+
+  # checks rely on internet connection
+  doCheck = false;
+
+  pythonImportsCheck = [ "outdated" ];
+
+  meta = {
+    description = "Mini-library which, given a package name and a version, checks if it's the latest version available on PyPI";
+    homepage = "https://github.com/alexmojaki/outdated";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ gador ];
+  };
+}
diff --git a/pkgs/development/python-modules/outlines/default.nix b/pkgs/development/python-modules/outlines/default.nix
index 5e33127f3e0c2..52ba16676fd04 100644
--- a/pkgs/development/python-modules/outlines/default.nix
+++ b/pkgs/development/python-modules/outlines/default.nix
@@ -1,32 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, interegular
-, cloudpickle
-, diskcache
-, joblib
-, jsonschema
-, pydantic
-, lark
-, nest-asyncio
-, numba
-, scipy
-, torch
-, transformers
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  interegular,
+  cloudpickle,
+  datasets,
+  diskcache,
+  joblib,
+  jsonschema,
+  pyairports,
+  pycountry,
+  pydantic,
+  lark,
+  nest-asyncio,
+  numba,
+  scipy,
+  torch,
+  transformers,
 }:
 
 buildPythonPackage rec {
   pname = "outlines";
-  version = "0.0.38";
+  version = "0.0.46";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "outlines-dev";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-kOd2J6PV2idWaltkGUVNXfB+1dNU1f8vbnHQ5i1WxG8=";
+    hash = "sha256-6VH9BcMRVRf2xvLcK3GNA1pGgAOs95UOlFQ6KxHXwKo=";
   };
 
   nativeBuildInputs = [
@@ -37,6 +41,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     interegular
     cloudpickle
+    datasets
     diskcache
     joblib
     jsonschema
@@ -47,11 +52,14 @@ buildPythonPackage rec {
     scipy
     torch
     transformers
+    pycountry
+    pyairports
   ];
 
-  pythonImportsCheck = [
-    "outlines"
-  ];
+  checkPhase = ''
+    export HOME=$(mktemp -d)
+    python3 -c 'import outlines'
+  '';
 
   meta = with lib; {
     description = "Structured text generation";
diff --git a/pkgs/development/python-modules/outspin/default.nix b/pkgs/development/python-modules/outspin/default.nix
new file mode 100644
index 0000000000000..4555e9cbca3c7
--- /dev/null
+++ b/pkgs/development/python-modules/outspin/default.nix
@@ -0,0 +1,32 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "outspin";
+  version = "0.3.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "trag1c";
+    repo = "outspin";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-j+J3n/p+DcfnhGfC4/NDBDl5bF39L5kIPeGJW0Zm7ls=";
+  };
+
+  build-system = [ poetry-core ];
+  pythonImportsCheck = [ "outspin" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    changelog = "https://github.com/trag1c/outspin/blob/${src.rev}/CHANGELOG.md";
+    description = "Conveniently read single char inputs in the console";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/overly/default.nix b/pkgs/development/python-modules/overly/default.nix
index 8fec61e13845d..ea3b291700a01 100644
--- a/pkgs/development/python-modules/overly/default.nix
+++ b/pkgs/development/python-modules/overly/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, h11
-, sansio-multipart
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  h11,
+  sansio-multipart,
 }:
 
 buildPythonPackage rec {
@@ -31,10 +32,10 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "overly" ];
 
   meta = {
-    description = "An overly configurable http server for client testing";
+    description = "Overly configurable http server for client testing";
     homepage = "https://github.com/theelous3/overly";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ dotlambda ];
-    broken = stdenv.isDarwin;  # https://github.com/theelous3/overly/issues/2
+    broken = stdenv.hostPlatform.isDarwin; # https://github.com/theelous3/overly/issues/2
   };
 }
diff --git a/pkgs/development/python-modules/overpy/default.nix b/pkgs/development/python-modules/overpy/default.nix
index 37abe95511176..ad08945d95e3c 100644
--- a/pkgs/development/python-modules/overpy/default.nix
+++ b/pkgs/development/python-modules/overpy/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,13 +29,9 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "overpy"
-  ];
+  pythonImportsCheck = [ "overpy" ];
 
   meta = with lib; {
     description = "Python Wrapper to access the Overpass API";
diff --git a/pkgs/development/python-modules/overrides/default.nix b/pkgs/development/python-modules/overrides/default.nix
index 93dea37791a57..a19db6995ee89 100644
--- a/pkgs/development/python-modules/overrides/default.nix
+++ b/pkgs/development/python-modules/overrides/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
-, pythonOlder
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonAtLeast,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,22 +22,16 @@ buildPythonPackage rec {
     hash = "sha256-gQDw5/RpAFNYWFOuxIAArPkCOoBYWUnsDtv1FEFteHo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = lib.optionals (pythonAtLeast "3.12") [
     # KeyError: 'assertRaises'
     "test_enforcing_when_incompatible"
   ];
 
-  pythonImportsCheck = [
-    "overrides"
-  ];
+  pythonImportsCheck = [ "overrides" ];
 
   meta = with lib; {
     description = "Decorator to automatically detect mismatch when overriding a method";
diff --git a/pkgs/development/python-modules/ovh/default.nix b/pkgs/development/python-modules/ovh/default.nix
index 7ac42a4ff0de3..f32ebc23797ab 100644
--- a/pkgs/development/python-modules/ovh/default.nix
+++ b/pkgs/development/python-modules/ovh/default.nix
@@ -1,34 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-oauthlib,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "ovh";
-  version = "1.1.0";
-  format = "setuptools";
+  version = "1.2.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-EI+bWjtHEZPOSkWJx3gvS8y//gugMWl3TrBHKsKO9nk=";
+    hash = "sha256-0xHwjsF7YsxhIWs9rPA+6J+VodqQNqWV2sKfydeYuCc=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     requests
+    requests-oauthlib
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ovh"
-  ];
+  pythonImportsCheck = [ "ovh" ];
 
   disabledTests = [
     # Tests require network access
@@ -37,6 +39,11 @@ buildPythonPackage rec {
     "test_config_from_invalid_ini_file"
     "test_config_from_only_one_file"
     "test_endpoints"
+    # Tests require API key
+    "test_config_oauth2"
+    "test_config_invalid_both"
+    "test_config_invalid_oauth2"
+    "test_config_incompatible_oauth2"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/ovmfvartool/default.nix b/pkgs/development/python-modules/ovmfvartool/default.nix
index fd15a3a12a4f4..aaee10b25a37e 100644
--- a/pkgs/development/python-modules/ovmfvartool/default.nix
+++ b/pkgs/development/python-modules/ovmfvartool/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pyyaml }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyyaml,
+}:
 
 buildPythonPackage rec {
   pname = "ovmfvartool";
@@ -24,6 +29,9 @@ buildPythonPackage rec {
     mainProgram = "ovmfvartool";
     homepage = "https://github.com/hlandau/ovmfvartool";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ baloo raitobezarius ];
+    maintainers = with maintainers; [
+      baloo
+      raitobezarius
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/ovoenergy/default.nix b/pkgs/development/python-modules/ovoenergy/default.nix
index c2d2bea352226..6afc39dd82704 100644
--- a/pkgs/development/python-modules/ovoenergy/default.nix
+++ b/pkgs/development/python-modules/ovoenergy/default.nix
@@ -24,7 +24,15 @@ buildPythonPackage rec {
     hash = "sha256-ZcTSf7UejEUqQo0qEXP3fWjZYRx0a3ZBNVkwS2dL3Yk=";
   };
 
-  build-system = [ setuptools ];
+  postPatch = ''
+    substituteInPlace requirements_setup.txt \
+      --replace-fail "==" ">="
+  '';
+
+  build-system = [
+    incremental
+    setuptools
+  ];
 
   nativeBuildInputs = [ incremental ];
 
diff --git a/pkgs/development/python-modules/owslib/default.nix b/pkgs/development/python-modules/owslib/default.nix
index 8bf7b8bcbe857..53f7f9f24e076 100644
--- a/pkgs/development/python-modules/owslib/default.nix
+++ b/pkgs/development/python-modules/owslib/default.nix
@@ -1,21 +1,21 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, lxml
-, pyproj
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, pytz
-, pyyaml
-, requests
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  lxml,
+  pyproj,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  pytz,
+  pyyaml,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "owslib";
-  version = "0.30.0";
+  version = "0.31.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -23,8 +23,8 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "geopython";
     repo = "OWSLib";
-    rev = "refs/tags/${version}";
-    hash = "sha256-miKAgZBiqZ6+0qDvlf8+VZ6omH5hlImO0E7AVK7FuD0=";
+    rev = version;
+    hash = "sha256-vjJsLavVOqTTrVtYbtA0G+nl0HanKeGtzNFFj92Frw8=";
   };
 
   postPatch = ''
@@ -41,32 +41,18 @@ buildPythonPackage rec {
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "owslib"
-  ];
+  pythonImportsCheck = [ "owslib" ];
 
   preCheck = ''
     # _pytest.pathlib.ImportPathMismatchError: ('owslib.swe.sensor.sml', '/build/source/build/...
     export PY_IGNORE_IMPORTMISMATCH=1
   '';
 
-  disabledTests = [
-    # Tests require network access
-    "test_ows_interfaces_wcs"
-    "test_wfs_110_remotemd"
-    "test_wfs_200_remotemd"
-    "test_wms_130_remotemd"
-    "test_wmts_example_informatievlaanderen"
-    "test_opensearch_creodias"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_ogcapi_processes_pygeoapi"
-    "test_ogcapi_records_pycsw"
-    "test_ogcapi_records_pygeoapi"
-    "test_wms_getfeatureinfo_130"
+  pytestFlagsArray = [
+    # disable tests which require network access
+    "-m 'not online'"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/oyaml/default.nix b/pkgs/development/python-modules/oyaml/default.nix
index 6e43b4c0e9c67..ffa881c8c06e3 100644
--- a/pkgs/development/python-modules/oyaml/default.nix
+++ b/pkgs/development/python-modules/oyaml/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
   # pythonPackages
-, pytestCheckHook
-, pythonOlder
-, pyyaml
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -22,17 +23,11 @@ buildPythonPackage rec {
     hash = "sha256-1rSEhiULlAweLDqUFX+JBFxe3iW9kNlRA2zjcG8MYSg=";
   };
 
-  propagatedBuildInputs = [
-    pyyaml
-  ];
+  propagatedBuildInputs = [ pyyaml ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "oyaml"
-  ];
+  pythonImportsCheck = [ "oyaml" ];
 
   meta = with lib; {
     description = "Drop-in replacement for PyYAML which preserves dict ordering";
diff --git a/pkgs/development/python-modules/p1monitor/default.nix b/pkgs/development/python-modules/p1monitor/default.nix
index c45af36a86333..c164b7c6542d3 100644
--- a/pkgs/development/python-modules/p1monitor/default.nix
+++ b/pkgs/development/python-modules/p1monitor/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "p1monitor";
-  version = "3.0.0";
+  version = "3.0.1";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -21,7 +22,7 @@ buildPythonPackage rec {
     owner = "klaasnicolaas";
     repo = "python-p1monitor";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ZtIY4HvRllqlLlf3j1+RMJuuQuq+BZbMuMn9n/v8H5M=";
+    hash = "sha256-WEvNPtaKGJsbHLjGjSl0/9BewmLLMFLoN9SHMdEBoAM=";
   };
 
   postPatch = ''
@@ -30,9 +31,7 @@ buildPythonPackage rec {
       --replace 'addopts = "--cov"' ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -45,9 +44,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "p1monitor"
-  ];
+  pythonImportsCheck = [ "p1monitor" ];
 
   meta = with lib; {
     description = "Module for interacting with the P1 Monitor";
diff --git a/pkgs/development/python-modules/pa-ringbuffer/default.nix b/pkgs/development/python-modules/pa-ringbuffer/default.nix
index a18eda1f92bf6..4ddd9af2b063a 100644
--- a/pkgs/development/python-modules/pa-ringbuffer/default.nix
+++ b/pkgs/development/python-modules/pa-ringbuffer/default.nix
@@ -1,4 +1,8 @@
-{ fetchFromGitHub, buildPythonPackage, lib }:
+{
+  fetchFromGitHub,
+  buildPythonPackage,
+  lib,
+}:
 
 buildPythonPackage rec {
   pname = "pa-ringbuffer";
diff --git a/pkgs/development/python-modules/packageurl-python/default.nix b/pkgs/development/python-modules/packageurl-python/default.nix
index 430cd58024dd5..03ffee785ce99 100644
--- a/pkgs/development/python-modules/packageurl-python/default.nix
+++ b/pkgs/development/python-modules/packageurl-python/default.nix
@@ -1,34 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "packageurl-python";
-  version = "0.15.0";
+  version = "0.15.6";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-8hmyzmNIGFonvWpy5v3J+YTmyfoVfv+ny5PjQcSc3MI=";
+    pname = "packageurl_python";
+    inherit version;
+    hash = "sha256-y8ia/RXV9NBdtPG2EpfluXpD9h8oeZ9tKCr/Rn7S7pY=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "packageurl"
-  ];
+  pythonImportsCheck = [ "packageurl" ];
 
   meta = with lib; {
     description = "Python parser and builder for package URLs";
diff --git a/pkgs/development/python-modules/packaging-legacy/default.nix b/pkgs/development/python-modules/packaging-legacy/default.nix
new file mode 100644
index 0000000000000..1f6b2f314c001
--- /dev/null
+++ b/pkgs/development/python-modules/packaging-legacy/default.nix
@@ -0,0 +1,43 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  packaging,
+  pretend,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "packaging-legacy";
+  version = "23.0.post0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "di";
+    repo = "packaging_legacy";
+    rev = "refs/tags/${version}";
+    hash = "sha256-2TnJjxasC8+c+qHY60e6Jyqhf1nQJfj/tmIA/LvUsT8=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ packaging ];
+
+  nativeCheckInputs = [
+    pretend
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "packaging_legacy" ];
+
+  meta = {
+    description = "Module to support for legacy Python Packaging functionality";
+    homepage = "https://github.com/di/packaging_legacy";
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/packaging/default.nix b/pkgs/development/python-modules/packaging/default.nix
index 32ce7fd8accb6..4ddebe8901df2 100644
--- a/pkgs/development/python-modules/packaging/default.nix
+++ b/pkgs/development/python-modules/packaging/default.nix
@@ -1,32 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 
-# build-system
-, flit-core
+  # build-system
+  flit-core,
 
-# tests
-, pretend
-, pytestCheckHook
+  # tests
+  pretend,
+  pytestCheckHook,
 }:
 
 let
   packaging = buildPythonPackage rec {
     pname = "packaging";
-    version = "24.0";
+    version = "24.1";
     pyproject = true;
 
     disabled = pythonOlder "3.7";
 
     src = fetchPypi {
       inherit pname version;
-      hash = "sha256-64LF4+ViCQdHZuaIW7BLjDigwBXQowA26+fs40yZiek=";
+      hash = "sha256-Am7XLI7T/M5b+JUFciWGmJJ/0dvaEKXpgc3wrDf08AI=";
     };
 
-    nativeBuildInputs = [
-      flit-core
-    ];
+    nativeBuildInputs = [ flit-core ];
 
     nativeCheckInputs = [
       pytestCheckHook
@@ -45,14 +44,19 @@ let
     # Prevent circular dependency with pytest
     doCheck = false;
 
-    passthru.tests = packaging.overridePythonAttrs (_: { doCheck = true; });
+    passthru.tests = packaging.overridePythonAttrs (_: {
+      doCheck = true;
+    });
 
     meta = with lib; {
       changelog = "https://github.com/pypa/packaging/blob/${version}/CHANGELOG.rst";
       description = "Core utilities for Python packages";
       downloadPage = "https://github.com/pypa/packaging";
       homepage = "https://packaging.pypa.io/";
-      license = with licenses; [ bsd2 asl20 ];
+      license = with licenses; [
+        bsd2
+        asl20
+      ];
       maintainers = teams.python.members ++ (with maintainers; [ bennofs ]);
     };
   };
diff --git a/pkgs/development/python-modules/packbits/default.nix b/pkgs/development/python-modules/packbits/default.nix
index 8e9b655c0a3b1..c47983b060f11 100644
--- a/pkgs/development/python-modules/packbits/default.nix
+++ b/pkgs/development/python-modules/packbits/default.nix
@@ -1,11 +1,7 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, pyparsing
-, six
-, pytest
-, pretend
-, lib
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/packet-python/default.nix b/pkgs/development/python-modules/packet-python/default.nix
index 8c88e6dc6ea7f..631248fe8bad9 100644
--- a/pkgs/development/python-modules/packet-python/default.nix
+++ b/pkgs/development/python-modules/packet-python/default.nix
@@ -1,16 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  requests,
+  requests-mock,
 }:
 
 buildPythonPackage rec {
   pname = "packet-python";
   version = "1.44.3";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -21,21 +23,19 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "pytest-runner" ""
+      --replace-fail "pytest-runner" ""
   '';
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ requests ];
 
   nativeCheckInputs = [
     pytestCheckHook
     requests-mock
   ];
 
-  pythonImportsCheck = [
-    "packet"
-  ];
+  pythonImportsCheck = [ "packet" ];
 
   meta = with lib; {
     description = "Python client for the Packet API";
diff --git a/pkgs/development/python-modules/packvers/default.nix b/pkgs/development/python-modules/packvers/default.nix
index 5ec3bd628c3e8..50bdaff9db6f3 100644
--- a/pkgs/development/python-modules/packvers/default.nix
+++ b/pkgs/development/python-modules/packvers/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pretend
-, pyparsing
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pretend,
+  pyparsing,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,24 +22,23 @@ buildPythonPackage rec {
     hash = "sha256-nCSYL0g7mXi9pGFt24pOXbmmYsaRuB+rRZrygf8DTLE=";
   };
 
-  propagatedBuildInputs = [
-    pyparsing
-  ];
+  propagatedBuildInputs = [ pyparsing ];
 
   nativeCheckInputs = [
     pretend
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "packvers"
-  ];
+  pythonImportsCheck = [ "packvers" ];
 
   meta = with lib; {
     description = "Module for version handling of modules";
     homepage = "https://github.com/nexB/dparse2";
     changelog = "https://github.com/nexB/packvers/blob/${version}/CHANGELOG.rst";
-    license = with licenses; [ asl20 /* and */ bsd2 ];
+    license = with licenses; [
+      asl20 # and
+      bsd2
+    ];
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/pad4pi/default.nix b/pkgs/development/python-modules/pad4pi/default.nix
index bc6c0d27aff43..a5e0a8ebca69d 100644
--- a/pkgs/development/python-modules/pad4pi/default.nix
+++ b/pkgs/development/python-modules/pad4pi/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, rpi-gpio }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  rpi-gpio,
+}:
 
 buildPythonPackage rec {
   pname = "pad4pi";
diff --git a/pkgs/development/python-modules/paddle-bfloat/default.nix b/pkgs/development/python-modules/paddle-bfloat/default.nix
index a1d6c591fcf2b..351c617d8ca0f 100644
--- a/pkgs/development/python-modules/paddle-bfloat/default.nix
+++ b/pkgs/development/python-modules/paddle-bfloat/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pythonAtLeast
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pythonAtLeast,
+  numpy,
 }:
 let
   pname = "paddle-bfloat";
@@ -28,13 +29,11 @@ buildPythonPackage {
 
   disabled = pythonOlder "3.9" || pythonAtLeast "3.12";
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   pythonImportsCheck = [ "paddle_bfloat" ];
 
-# upstream has no tests
+  # upstream has no tests
   doCheck = false;
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/paddle2onnx/default.nix b/pkgs/development/python-modules/paddle2onnx/default.nix
index e358c2ec49861..ee429fb164d05 100644
--- a/pkgs/development/python-modules/paddle2onnx/default.nix
+++ b/pkgs/development/python-modules/paddle2onnx/default.nix
@@ -1,34 +1,37 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, python
-, onnx
-, isPy311
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pythonAtLeast,
+  python,
+  onnx,
 }:
 let
   pname = "paddle2onnx";
-  version = "1.1.0";
+  version = "1.2.4";
   format = "wheel";
-  pyShortVersion = "cp${builtins.replaceStrings ["."] [""] python.pythonVersion}";
+  pyShortVersion = "cp${builtins.replaceStrings [ "." ] [ "" ] python.pythonVersion}";
   src = fetchPypi {
     inherit pname version format;
     dist = pyShortVersion;
     python = pyShortVersion;
     abi = pyShortVersion;
     platform = "manylinux_2_12_x86_64.manylinux2010_x86_64";
-    hash = "sha256-HI/lIj9ezdCry5fYDi5Pia6hvOjN6/Slm9BMfLeq8AU=";
+    hash = "sha256-2muP4Y1zvqYVxvN6I9wjdMY+YE2d0nRmIwFFI/BsIKE=";
   };
 in
 buildPythonPackage {
-  inherit pname version src format;
+  inherit
+    pname
+    version
+    src
+    format
+    ;
 
-  disabled = pythonOlder "3.8" || isPy311;
+  disabled = pythonOlder "3.8" || pythonAtLeast "3.11";
 
-  propagatedBuildInputs = [
-    onnx
-  ];
+  propagatedBuildInputs = [ onnx ];
 
   meta = with lib; {
     description = "ONNX Model Exporter for PaddlePaddle";
diff --git a/pkgs/development/python-modules/paddleocr/default.nix b/pkgs/development/python-modules/paddleocr/default.nix
index 4cc4d283a8316..8033d8c79e6df 100644
--- a/pkgs/development/python-modules/paddleocr/default.nix
+++ b/pkgs/development/python-modules/paddleocr/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, buildPythonPackage
-, pythonRelaxDepsHook
-, fetchFromGitHub
-, attrdict
-, beautifulsoup4
-, cython
-, fire
-, fonttools
-, lmdb
-, lxml
-, numpy
-, opencv4
-, openpyxl
-, pdf2docx
-, pillow
-, premailer
-, pyclipper
-, pymupdf
-, python-docx
-, rapidfuzz
-, scikit-image
-, shapely
-, tqdm
-, paddlepaddle
-, lanms-neo
-, polygon3
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  attrdict,
+  beautifulsoup4,
+  cython,
+  fire,
+  fonttools,
+  lmdb,
+  lxml,
+  numpy,
+  opencv4,
+  openpyxl,
+  pdf2docx,
+  pillow,
+  premailer,
+  pyclipper,
+  pymupdf,
+  python-docx,
+  rapidfuzz,
+  scikit-image,
+  shapely,
+  tqdm,
+  paddlepaddle,
+  lanms-neo,
+  polygon3,
 }:
 
 let
-  version = "2.7.1";
+  version = "2.7.5";
 in
 buildPythonPackage {
   pname = "paddleocr";
@@ -38,8 +38,8 @@ buildPythonPackage {
   src = fetchFromGitHub {
     owner = "PaddlePaddle";
     repo = "PaddleOCR";
-    rev = "v${version}";
-    hash = "sha256-5Dt4UL+7dwJNjcNnCVi3o8bLCt7/m/M6oh1vPu9rza8=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-8mnSV4ga6G2cbYCX84XJRFiLCoXstTAtqvg9QqVN6GI=";
   };
 
   patches = [
@@ -54,7 +54,6 @@ buildPythonPackage {
     ./remove-import-imaug.patch
   ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
   # trying to relax only pymupdf makes the whole build fail
   pythonRelaxDeps = true;
   pythonRemoveDeps = [
@@ -106,6 +105,10 @@ buildPythonPackage {
     '';
     changelog = "https://github.com/PaddlePaddle/PaddleOCR/releases/tag/v${version}";
     maintainers = with maintainers; [ happysalada ];
-    platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" ];
+    platforms = [
+      "x86_64-linux"
+      "x86_64-darwin"
+      "aarch64-darwin"
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/paddlepaddle/default.nix b/pkgs/development/python-modules/paddlepaddle/default.nix
index b9cc87b21e338..8263ae8ec8c59 100644
--- a/pkgs/development/python-modules/paddlepaddle/default.nix
+++ b/pkgs/development/python-modules/paddlepaddle/default.nix
@@ -1,40 +1,47 @@
-{ stdenv
-, config
-, lib
-, buildPythonPackage
-, fetchPypi
-, python
-, pythonOlder
-, pythonAtLeast
-, openssl_1_1
-, zlib
-, setuptools
-, cudaSupport ? config.cudaSupport or false
-, cudaPackages_11 ? {}
-, addOpenGLRunpath
-# runtime dependencies
-, httpx
-, numpy
-, protobuf
-, pillow
-, decorator
-, astor
-, paddle-bfloat
-, opt-einsum
+{
+  stdenv,
+  config,
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  pythonOlder,
+  pythonAtLeast,
+  openssl_1_1,
+  zlib,
+  setuptools,
+  cudaSupport ? config.cudaSupport or false,
+  cudaPackages_11 ? { },
+  addDriverRunpath,
+  # runtime dependencies
+  httpx,
+  numpy,
+  protobuf,
+  pillow,
+  decorator,
+  astor,
+  paddle-bfloat,
+  opt-einsum,
 }:
 
 let
   pname = "paddlepaddle" + lib.optionalString cudaSupport "-gpu";
   version = "2.5.0";
   format = "wheel";
-  pyShortVersion = "cp${builtins.replaceStrings ["."] [""] python.pythonVersion}";
+  pyShortVersion = "cp${builtins.replaceStrings [ "." ] [ "" ] python.pythonVersion}";
   cpuOrGpu = if cudaSupport then "gpu" else "cpu";
   allHashAndPlatform = import ./binary-hashes.nix;
-  hash = allHashAndPlatform."${stdenv.system}"."${cpuOrGpu}"."${pyShortVersion}"
-    or (throw "${pname} has no binary-hashes.nix entry for '${stdenv.system}.${cpuOrGpu}.${pyShortVersion}' attribute");
+  hash =
+    allHashAndPlatform."${stdenv.system}"."${cpuOrGpu}"."${pyShortVersion}"
+      or (throw "${pname} has no binary-hashes.nix entry for '${stdenv.system}.${cpuOrGpu}.${pyShortVersion}' attribute");
   platform = allHashAndPlatform."${stdenv.system}".platform;
   src = fetchPypi ({
-    inherit version format hash platform;
+    inherit
+      version
+      format
+      hash
+      platform
+      ;
     pname = builtins.replaceStrings [ "-" ] [ "_" ] pname;
     dist = pyShortVersion;
     python = pyShortVersion;
@@ -42,7 +49,12 @@ let
   });
 in
 buildPythonPackage {
-  inherit pname version format src;
+  inherit
+    pname
+    version
+    format
+    src
+    ;
 
   disabled = pythonOlder "3.9" || pythonAtLeast "3.11";
 
@@ -50,27 +62,32 @@ buildPythonPackage {
     # TODO: remove openssl_1_1 and zlib, maybe by building paddlepaddle from
     # source as suggested in the following comment:
     # https://github.com/NixOS/nixpkgs/pull/243583#issuecomment-1641450848
-    [ openssl_1_1 zlib ] ++ lib.optionals cudaSupport (with cudaPackages_11; [
-      cudatoolkit.lib
-      cudatoolkit.out
-      cudnn
-    ])
+    [
+      openssl_1_1
+      zlib
+    ]
+    ++ lib.optionals cudaSupport (
+      with cudaPackages_11;
+      [
+        cudatoolkit.lib
+        cudatoolkit.out
+        cudnn
+      ]
+    )
   );
 
-  postFixup = lib.optionalString stdenv.isLinux ''
+  postFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
     function fixRunPath {
       p=$(patchelf --print-rpath $1)
       patchelf --set-rpath "$p:$libraryPath" $1
       ${lib.optionalString cudaSupport ''
-        addOpenGLRunpath $1
+        addDriverRunpath $1
       ''}
     }
     fixRunPath $out/${python.sitePackages}/paddle/fluid/libpaddle.so
   '';
 
-  nativeBuildInputs = [
-    addOpenGLRunpath
-  ];
+  nativeBuildInputs = [ addDriverRunpath ];
 
   propagatedBuildInputs = [
     setuptools
@@ -94,6 +111,11 @@ buildPythonPackage {
     homepage = "https://github.com/PaddlePaddle/Paddle";
     license = licenses.asl20;
     maintainers = with maintainers; [ happysalada ];
-    platforms = [ "x86_64-linux" ] ++ optionals (!cudaSupport) [ "x86_64-darwin" "aarch64-darwin" ];
+    platforms =
+      [ "x86_64-linux" ]
+      ++ optionals (!cudaSupport) [
+        "x86_64-darwin"
+        "aarch64-darwin"
+      ];
   };
 }
diff --git a/pkgs/development/python-modules/pagelabels/default.nix b/pkgs/development/python-modules/pagelabels/default.nix
index 44b246869aa5f..60049696b4984 100644
--- a/pkgs/development/python-modules/pagelabels/default.nix
+++ b/pkgs/development/python-modules/pagelabels/default.nix
@@ -1,13 +1,18 @@
-{ lib, buildPythonPackage, fetchPypi, pdfrw }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pdfrw,
+}:
 
 buildPythonPackage rec {
   pname = "pagelabels";
-  version = "1.2.0";
+  version = "1.2.1";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "07as5kzyvj66bfgvx8bph8gkyj6cgm4lhgxwb78bpdl4m8y8kpma";
+    sha256 = "sha256-GAEyhECToKnIWBxnYTSOsYKZBjl50b/82mZ68i8I2ug=";
   };
 
   buildInputs = [ pdfrw ];
@@ -16,7 +21,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "Python library to manipulate PDF page labels.";
+    description = "Python library to manipulate PDF page labels";
     homepage = "https://github.com/lovasoa/pagelabels-py";
     maintainers = with maintainers; [ teto ];
     license = licenses.gpl3;
diff --git a/pkgs/development/python-modules/paginate/default.nix b/pkgs/development/python-modules/paginate/default.nix
index ad22a818aee32..096fdb92719fc 100644
--- a/pkgs/development/python-modules/paginate/default.nix
+++ b/pkgs/development/python-modules/paginate/default.nix
@@ -1,38 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonAtLeast,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "paginate";
-  version = "0.5.6";
+  version = "0.5.7";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "Pylons";
     repo = "paginate";
     rev = version;
-    hash = "sha256-HZWwOYOCk4mAmz8OnM9hhlf8HA+jC75dYVeo0l4a09o=";
+    hash = "sha256-+zX9uGNWcV4BWbD2lcd1u9zZ4m7CnbsYZnc99HNaF8I=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "paginate"
-  ];
+  pythonImportsCheck = [ "paginate" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = lib.optionals (pythonAtLeast "3.12") [
     # https://github.com/Pylons/paginate/issues/19
diff --git a/pkgs/development/python-modules/paho-mqtt/1.nix b/pkgs/development/python-modules/paho-mqtt/1.nix
new file mode 100644
index 0000000000000..437f7899fad04
--- /dev/null
+++ b/pkgs/development/python-modules/paho-mqtt/1.nix
@@ -0,0 +1,42 @@
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy3k,
+  pytestCheckHook,
+  mock,
+  six,
+}:
+
+buildPythonPackage rec {
+  pname = "paho-mqtt";
+  version = "1.6.1";
+  format = "setuptools";
+
+  src = fetchFromGitHub {
+    owner = "eclipse";
+    repo = "paho.mqtt.python";
+    rev = "v${version}";
+    hash = "sha256-9nH6xROVpmI+iTKXfwv2Ar1PAmWbEunI3HO0pZyK6Rg=";
+  };
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    six
+  ] ++ lib.optionals (!isPy3k) [ mock ];
+
+  doCheck = !stdenv.hostPlatform.isDarwin;
+
+  pythonImportsCheck = [ "paho.mqtt" ];
+
+  meta = with lib; {
+    description = "MQTT version 3.1.1 client class";
+    homepage = "https://eclipse.org/paho";
+    license = licenses.epl10;
+    maintainers = with maintainers; [
+      mog
+      dotlambda
+    ];
+  };
+}
diff --git a/pkgs/development/python-modules/paho-mqtt/default.nix b/pkgs/development/python-modules/paho-mqtt/default.nix
index 8c0e54d18d608..890cf28a7462b 100644
--- a/pkgs/development/python-modules/paho-mqtt/default.nix
+++ b/pkgs/development/python-modules/paho-mqtt/default.nix
@@ -1,42 +1,61 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, isPy3k
-, pytestCheckHook
-, mock
-, six
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  hatchling,
+  pytestCheckHook,
 }:
 
-buildPythonPackage rec {
+let
+  testing = fetchFromGitHub {
+    owner = "eclipse";
+    repo = "paho.mqtt.testing";
+    rev = "a4dc694010217b291ee78ee13a6d1db812f9babd";
+    hash = "sha256-SQoNdkWMjnasPjpXQF2yV97MUra8gb27pc3rNoA8Rjw=";
+  };
+in buildPythonPackage rec {
   pname = "paho-mqtt";
-  version = "1.6.1";
-  format = "setuptools";
+  version = "2.1.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "eclipse";
     repo = "paho.mqtt.python";
     rev = "v${version}";
-    hash = "sha256-9nH6xROVpmI+iTKXfwv2Ar1PAmWbEunI3HO0pZyK6Rg=";
+    hash = "sha256-VMq+WTW+njK34QUUTE6fR2j2OmHxVzR0wrC92zYb1rY=";
   };
 
+  build-system = [
+    hatchling
+  ];
+
   nativeCheckInputs = [
     pytestCheckHook
-    six
-  ] ++ lib.optionals (!isPy3k) [
-    mock
   ];
 
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
-  pythonImportsCheck = [
-    "paho.mqtt"
-  ];
+  pythonImportsCheck = [ "paho.mqtt" ];
+
+  preCheck = ''
+    ln -s ${testing} paho.mqtt.testing
+
+    # paho.mqtt not in top-level dir to get caught by this
+    export PYTHONPATH=".:$PYTHONPATH"
+  '';
 
   meta = with lib; {
-    description = "MQTT version 3.1.1 client class";
+    changelog = "https://github.com/eclipse/paho.mqtt.python/blob/${src.rev}/ChangeLog.txt";
+    description = "MQTT version 5.0/3.1.1 client class";
     homepage = "https://eclipse.org/paho";
-    license = licenses.epl10;
-    maintainers = with maintainers; [ mog dotlambda ];
+    license = licenses.epl20;
+    maintainers = with maintainers; [
+      mog
+      dotlambda
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/paintcompiler/default.nix b/pkgs/development/python-modules/paintcompiler/default.nix
new file mode 100644
index 0000000000000..c2e6009fa4f7b
--- /dev/null
+++ b/pkgs/development/python-modules/paintcompiler/default.nix
@@ -0,0 +1,41 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  fonttools,
+  black,
+}:
+
+buildPythonPackage rec {
+  pname = "paintcompiler";
+  version = "0.3.4";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "simoncozens";
+    repo = "paintcompiler";
+    rev = "v${version}";
+    hash = "sha256-dmVBQUUyFc71zq8fXBQ4ii/llrGdtUCOponCzSeut6g=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    fonttools
+    black
+  ];
+
+  pythonImportsCheck = [
+    "paintcompiler"
+    "paintdecompiler"
+  ];
+
+  meta = {
+    description = "Paint compiler for COLRv1 fonts";
+    homepage = "https://github.com/simoncozens/paintcompiler";
+    license = lib.licenses.asl20;
+    mainProgram = "paintcompiler";
+    maintainers = with lib.maintainers; [ jopejoe1 ];
+  };
+}
diff --git a/pkgs/development/python-modules/palace/default.nix b/pkgs/development/python-modules/palace/default.nix
index 5529d344dfff7..8ea9f3b6d9fac 100644
--- a/pkgs/development/python-modules/palace/default.nix
+++ b/pkgs/development/python-modules/palace/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromSourcehut
-, pythonOlder
-, cmake
-, cython_0
-, setuptools
-, alure2
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromSourcehut,
+  pythonOlder,
+  cmake,
+  cython_0,
+  setuptools,
+  alure2,
 }:
 
 buildPythonPackage rec {
@@ -37,9 +37,7 @@ buildPythonPackage rec {
 
   dontUseCmakeConfigure = true;
 
-  propagatedBuildInputs = [
-    alure2
-  ];
+  propagatedBuildInputs = [ alure2 ];
 
   doCheck = false; # FIXME: tests need an audio device
 
diff --git a/pkgs/development/python-modules/palettable/default.nix b/pkgs/development/python-modules/palettable/default.nix
index 2f7cb7138c4cb..aa7876f4644ae 100644
--- a/pkgs/development/python-modules/palettable/default.nix
+++ b/pkgs/development/python-modules/palettable/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -12,16 +13,12 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-CU3X2aX8HMpIVHc+XB/GoxWzO9WzqPRwZJKPrK8EkKg=";
+    hash = "sha256-CU3X2aX8HMpIVHc+XB/GoxWzO9WzqPRwZJKPrK8EkKg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [
     "palettable"
@@ -30,7 +27,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A library of color palettes";
+    description = "Library of color palettes";
     homepage = "https://jiffyclub.github.io/palettable/";
     changelog = "https://github.com/jiffyclub/palettable/blob/v${version}/CHANGELOG.rst";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pallets-sphinx-themes/default.nix b/pkgs/development/python-modules/pallets-sphinx-themes/default.nix
index 9020e458bc085..bba0de1f208f2 100644
--- a/pkgs/development/python-modules/pallets-sphinx-themes/default.nix
+++ b/pkgs/development/python-modules/pallets-sphinx-themes/default.nix
@@ -1,18 +1,27 @@
-{ lib, buildPythonPackage, fetchFromGitHub, sphinx, packaging }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  sphinx,
+  packaging,
+}:
 
 buildPythonPackage rec {
   pname = "pallets-sphinx-themes";
-  version = "2.1.1";
+  version = "2.1.3";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "pallets";
     repo = "pallets-sphinx-themes";
     rev = "refs/tags/${version}";
-    sha256 = "sha256-Z03rsqkwF2rYaqRZflf5qc5EdHPIEcEcB1ftYIm5DQs=";
+    sha256 = "sha256-uXSejJLVmYpzRCP92JQKHosnlx7dgZlFf5XzbxOfvII=";
   };
 
-  propagatedBuildInputs = [ packaging sphinx ];
+  propagatedBuildInputs = [
+    packaging
+    sphinx
+  ];
 
   pythonImportsCheck = [ "pallets_sphinx_themes" ];
 
diff --git a/pkgs/development/python-modules/pamela/default.nix b/pkgs/development/python-modules/pamela/default.nix
index 389cf10a772e0..5f02936d92525 100644
--- a/pkgs/development/python-modules/pamela/default.nix
+++ b/pkgs/development/python-modules/pamela/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pkgs
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pkgs,
 }:
 
 buildPythonPackage rec {
@@ -11,7 +12,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-1LE5/mAOGS4Xaio2gFkgemv/oOeHmHmxP0/LoBY0gb4=";
+    hash = "sha256-1LE5/mAOGS4Xaio2gFkgemv/oOeHmHmxP0/LoBY0gb4=";
   };
 
   postUnpack = ''
@@ -27,5 +28,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/minrk/pamela";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/pamqp/default.nix b/pkgs/development/python-modules/pamqp/default.nix
index b3ad60e7d1c81..184df403f5e72 100644
--- a/pkgs/development/python-modules/pamqp/default.nix
+++ b/pkgs/development/python-modules/pamqp/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,13 +22,9 @@ buildPythonPackage rec {
     hash = "sha256-0vjiPBLd8afnATjmV2sINsBd4j7L544u5DA3jLiLSsY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [
     "pamqp.base"
diff --git a/pkgs/development/python-modules/panacotta/default.nix b/pkgs/development/python-modules/panacotta/default.nix
index a70add0e9b805..d9f198ea9ba81 100644
--- a/pkgs/development/python-modules/panacotta/default.nix
+++ b/pkgs/development/python-modules/panacotta/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "panacotta"
-  ];
+  pythonImportsCheck = [ "panacotta" ];
 
   meta = with lib; {
     description = "Python API for controlling Panasonic Blu-Ray players";
diff --git a/pkgs/development/python-modules/panasonic-viera/default.nix b/pkgs/development/python-modules/panasonic-viera/default.nix
index 78d726b92a8b3..6cbdd76236d5d 100644
--- a/pkgs/development/python-modules/panasonic-viera/default.nix
+++ b/pkgs/development/python-modules/panasonic-viera/default.nix
@@ -1,24 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, aiohttp
-, pycryptodome
-, xmltodict
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  aiohttp,
+  pycryptodome,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
   pname = "panasonic-viera";
-  version = "0.4.0";
-
-  format = "setuptools";
+  version = "0.4.2";
+  pyproject = true;
 
   src = fetchPypi {
     pname = "panasonic_viera";
     inherit version;
-    sha256 = "baad2db7958ddbc7288d0f1c50a9eeddd8b83f3d30ad14ac3f6c51fe953e0eb6";
+    hash = "sha256-gcFAFwEdCqiC1yHIA2B/gzmwvRwMC9fDxkgCbzIOpjM=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ poetry-core ];
+
+  dependencies = [
     aiohttp
     pycryptodome
     xmltodict
diff --git a/pkgs/development/python-modules/pandantic/default.nix b/pkgs/development/python-modules/pandantic/default.nix
new file mode 100644
index 0000000000000..a33f2ee706ce8
--- /dev/null
+++ b/pkgs/development/python-modules/pandantic/default.nix
@@ -0,0 +1,48 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  multiprocess,
+  pandas-stubs,
+  pandas,
+  poetry-core,
+  pydantic,
+  pytestCheckHook,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "pandantic";
+  version = "0.3.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "wesselhuising";
+    repo = "pandantic";
+    rev = "refs/tags/${version}";
+    hash = "sha256-JRhnDVRYX0OV/dZkfqNoS2qFcoHOZHm9QZphF/JhgxM=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    multiprocess
+    pandas
+    pandas-stubs
+    pydantic
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "pandantic" ];
+
+  meta = {
+    description = "Module to enriche the Pydantic BaseModel class";
+    homepage = "https://github.com/wesselhuising/pandantic";
+    changelog = "https://github.com/wesselhuising/pandantic/releases/tag/${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pandas-datareader/default.nix b/pkgs/development/python-modules/pandas-datareader/default.nix
index e5222cf7ef83d..0520c04d23918 100644
--- a/pkgs/development/python-modules/pandas-datareader/default.nix
+++ b/pkgs/development/python-modules/pandas-datareader/default.nix
@@ -1,33 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, pandas
-, lxml
-, requests
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  pythonAtLeast,
+  fetchPypi,
+  setuptools,
+  pandas,
+  lxml,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "pandas-datareader";
   version = "0.10.0";
-  format = "setuptools";
-  disabled = isPy27;
+  pyproject = true;
+
+  disabled = pythonOlder "3.6" || pythonAtLeast "3.12";
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "9fc3c63d39bc0c10c2683f1c6d503ff625020383e38f6cbe14134826b454d5a6";
   };
 
+  build-system = [ setuptools ];
+
+  dependencies = [
+    pandas
+    lxml
+    requests
+  ];
+
   # Tests are trying to load data over the network
   doCheck = false;
   pythonImportsCheck = [ "pandas_datareader" ];
 
-  propagatedBuildInputs = [ pandas lxml requests ];
-
   meta = with lib; {
     description = "Up to date remote data access for pandas, works for multiple versions of pandas";
     homepage = "https://github.com/pydata/pandas-datareader";
-    license= licenses.bsd3;
+    license = licenses.bsd3;
     maintainers = with maintainers; [ evax ];
     platforms = platforms.unix;
   };
diff --git a/pkgs/development/python-modules/pandas-stubs/default.nix b/pkgs/development/python-modules/pandas-stubs/default.nix
index c0a753f5c02a1..f216673fc7f09 100644
--- a/pkgs/development/python-modules/pandas-stubs/default.nix
+++ b/pkgs/development/python-modules/pandas-stubs/default.nix
@@ -1,54 +1,62 @@
-{ lib
-, stdenv
-, beautifulsoup4
-, buildPythonPackage
-, fetchFromGitHub
-, html5lib
-, jinja2
-, lxml
-, matplotlib
-, odfpy
-, openpyxl
-, pandas
-, poetry-core
-, pyarrow
-, pyreadstat
-, pytestCheckHook
-, pythonOlder
-, scipy
-, sqlalchemy
-, tables
-, tabulate
-, types-pytz
-, typing-extensions
-, xarray
-, xlsxwriter
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  numpy,
+  types-pytz,
+
+  # tests
+  pytestCheckHook,
+  beautifulsoup4,
+  html5lib,
+  jinja2,
+  lxml,
+  matplotlib,
+  odfpy,
+  openpyxl,
+  pandas,
+  pyarrow,
+  pyreadstat,
+  python-calamine,
+  scipy,
+  sqlalchemy,
+  tables,
+  tabulate,
+  typing-extensions,
+  xarray,
+  xlsxwriter,
 }:
 
 buildPythonPackage rec {
   pname = "pandas-stubs";
-  version = "2.2.0.240218";
+  version = "2.2.2.240909";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "pandas-dev";
     repo = "pandas-stubs";
     rev = "refs/tags/v${version}";
-    hash = "sha256-416vyaHcSfTfkSNKZ05edozfsMmNKcpOZAoPenCLFzQ=";
+    hash = "sha256-Dt2a4l5WAOizUeaDa80CRuvyPT9mWfFz+zGZMm3vQP4=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    pandas
+  dependencies = [
+    numpy
     types-pytz
   ];
 
   nativeCheckInputs = [
+    pytestCheckHook
     beautifulsoup4
     html5lib
     jinja2
@@ -56,9 +64,9 @@ buildPythonPackage rec {
     matplotlib
     odfpy
     openpyxl
+    pandas
     pyarrow
     pyreadstat
-    pytestCheckHook
     scipy
     sqlalchemy
     tables
@@ -66,22 +74,31 @@ buildPythonPackage rec {
     typing-extensions
     xarray
     xlsxwriter
+    python-calamine
   ];
 
-  disabledTests = [
-    # AttributeErrors, missing dependencies, error and warning checks
-    "test_types_groupby"
-    "test_frame_groupby_resample"
-    "test_orc"
-    "test_all_read_without_lxml_dtype_backend"
-    "test_show_version"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_plotting" # Fatal Python error: Illegal instruction
-  ];
+  disabledTests =
+    [
+      # Missing dependencies, error and warning checks
+      "test_all_read_without_lxml_dtype_backend" # pyarrow.orc
+      "test_orc" # pyarrow.orc
+      "test_plotting" # UserWarning: No artists with labels found to put in legend.
+      "test_spss" # FutureWarning: ChainedAssignmentError: behaviour will change in pandas 3.0!
+      "test_show_version"
+      # FutureWarning: In the future `np.bool` will be defined as the corresponding...
+      "test_timedelta_cmp"
+      "test_timestamp_cmp"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      "test_clipboard" # FileNotFoundError: [Errno 2] No such file or directory: 'pbcopy'
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
+      # Disable tests for types that are not supported on aarch64 in `numpy` < 2.0
+      "test_astype_float" # `f16` and `float128`
+      "test_astype_complex" # `c32` and `complex256`
+    ];
 
-  pythonImportsCheck = [
-    "pandas"
-  ];
+  pythonImportsCheck = [ "pandas" ];
 
   meta = with lib; {
     description = "Type annotations for Pandas";
diff --git a/pkgs/development/python-modules/pandas/default.nix b/pkgs/development/python-modules/pandas/default.nix
index a5bb890a398d4..83103314bd831 100644
--- a/pkgs/development/python-modules/pandas/default.nix
+++ b/pkgs/development/python-modules/pandas/default.nix
@@ -1,272 +1,267 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonAtLeast,
+  pythonOlder,
 
-# build-system
-, cython
-, meson-python
-, meson
-, oldest-supported-numpy
-, pkg-config
-, versioneer
-, wheel
+  # build-system
+  cython,
+  meson-python,
+  meson,
+  oldest-supported-numpy,
+  pkg-config,
+  versioneer,
+  wheel,
 
-# propagates
-, numpy
-, python-dateutil
-, pytz
-, tzdata
+  # propagates
+  numpy,
+  python-dateutil,
+  pytz,
+  tzdata,
 
-# optionals
-, beautifulsoup4
-, bottleneck
-, blosc2
-, fsspec
-, gcsfs
-, html5lib
-, jinja2
-, lxml
-, matplotlib
-, numba
-, numexpr
-, odfpy
-, openpyxl
-, psycopg2
-, pyarrow
-, pymysql
-, pyqt5
-, pyreadstat
-, qtpy
-, s3fs
-, scipy
-, sqlalchemy
-, tables
-, tabulate
-, xarray
-, xlrd
-, xlsxwriter
-, zstandard
+  # optionals
+  beautifulsoup4,
+  bottleneck,
+  blosc2,
+  fsspec,
+  gcsfs,
+  html5lib,
+  jinja2,
+  lxml,
+  matplotlib,
+  numba,
+  numexpr,
+  odfpy,
+  openpyxl,
+  psycopg2,
+  pyarrow,
+  pymysql,
+  pyqt5,
+  pyreadstat,
+  qtpy,
+  s3fs,
+  scipy,
+  sqlalchemy,
+  tables,
+  tabulate,
+  xarray,
+  xlrd,
+  xlsxwriter,
+  zstandard,
 
-# tests
-, adv_cmds
-, glibc
-, glibcLocales
-, hypothesis
-, pytestCheckHook
-, pytest-xdist
-, pytest-asyncio
-, python
-, runtimeShell
+  # tests
+  adv_cmds,
+  glibc,
+  glibcLocales,
+  hypothesis,
+  pytestCheckHook,
+  pytest-xdist,
+  pytest-asyncio,
+  python,
+  runtimeShell,
 }:
 
-let pandas = buildPythonPackage rec {
-  pname = "pandas";
-  version = "2.2.1";
-  pyproject = true;
+let
+  pandas = buildPythonPackage rec {
+    pname = "pandas";
+    version = "2.2.2";
+    pyproject = true;
 
-  disabled = pythonOlder "3.9";
+    disabled = pythonOlder "3.9";
 
-  src = fetchFromGitHub {
-    owner = "pandas-dev";
-    repo = "pandas";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-eyVUIYG0KCAEJbh/qZiEjGpdXq7A+2Lab+5bp+7t4cw=";
-  };
+    src = fetchFromGitHub {
+      owner = "pandas-dev";
+      repo = "pandas";
+      rev = "refs/tags/v${version}";
+      hash = "sha256-+zQKrsJmP3FJeOiYwNH1u96+/ECDHQF39evzur3cKjc=";
+    };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail "Cython==3.0.5" "Cython>=3.0.5" \
-      --replace-fail "meson-python==0.13.1" "meson-python>=0.13.1" \
-      --replace-fail "meson==1.2.1" "meson>=1.2.1"
-  '';
+    postPatch = ''
+      substituteInPlace pyproject.toml \
+        --replace-fail "Cython==3.0.5" "Cython>=3.0.5" \
+        --replace-fail "meson-python==0.13.1" "meson-python>=0.13.1" \
+        --replace-fail "meson==1.2.1" "meson>=1.2.1" \
+        --replace-fail "numpy>=2.0.0rc1" "numpy"
+    '';
 
-  nativeBuildInputs = [
-    cython
-    meson-python
-    meson
-    numpy
-    pkg-config
-    versioneer
-    wheel
-  ]
-  ++ versioneer.optional-dependencies.toml
-  ++ lib.optionals (pythonOlder "3.12") [
-    oldest-supported-numpy
-  ];
+    nativeBuildInputs =
+      [
+        cython
+        meson-python
+        meson
+        numpy
+        pkg-config
+        versioneer
+        wheel
+      ]
+      ++ versioneer.optional-dependencies.toml
+      ++ lib.optionals (pythonOlder "3.12") [ oldest-supported-numpy ];
 
-  enableParallelBuilding = true;
+    enableParallelBuilding = true;
 
-  propagatedBuildInputs = [
-    numpy
-    python-dateutil
-    pytz
-    tzdata
-  ];
+    propagatedBuildInputs = [
+      numpy
+      python-dateutil
+      pytz
+      tzdata
+    ];
 
-  passthru.optional-dependencies = let
-    extras = {
-      aws = [
-        s3fs
-      ];
-      clipboard = [
-        pyqt5
-        qtpy
-      ];
-      compression = [
-        zstandard
-      ];
-      computation = [
-        scipy
-        xarray
-      ];
-      excel = [
-        odfpy
-        openpyxl
-        # TODO: pyxlsb
-        xlrd
-        xlsxwriter
-      ];
-      feather = [
-        pyarrow
-      ];
-      fss = [
-        fsspec
-      ];
-      gcp = [
-        gcsfs
-        # TODO: pandas-gqb
-      ];
-      hdf5 = [
-        blosc2
-        tables
-      ];
-      html = [
-        beautifulsoup4
-        html5lib
-        lxml
-      ];
-      mysql = [
-        sqlalchemy
-        pymysql
-      ];
-      output_formatting = [
-        jinja2
-        tabulate
-      ];
-      parquet = [
-        pyarrow
-      ];
-      performance = [
-        bottleneck
-        numba
-        numexpr
-      ];
-      plot = [
-        matplotlib
-      ];
-      postgresql = [
-        sqlalchemy
-        psycopg2
-      ];
-      spss = [
-        pyreadstat
-      ];
-      sql-other = [
-        sqlalchemy
-      ];
-      xml = [
-        lxml
-      ];
-    };
-  in extras // {
-    all = lib.concatLists (lib.attrValues extras);
-  };
+    passthru.optional-dependencies =
+      let
+        extras = {
+          aws = [ s3fs ];
+          clipboard = [
+            pyqt5
+            qtpy
+          ];
+          compression = [ zstandard ];
+          computation = [
+            scipy
+            xarray
+          ];
+          excel = [
+            odfpy
+            openpyxl
+            # TODO: pyxlsb
+            xlrd
+            xlsxwriter
+          ];
+          feather = [ pyarrow ];
+          fss = [ fsspec ];
+          gcp = [
+            gcsfs
+            # TODO: pandas-gqb
+          ];
+          hdf5 = [
+            blosc2
+            tables
+          ];
+          html = [
+            beautifulsoup4
+            html5lib
+            lxml
+          ];
+          mysql = [
+            sqlalchemy
+            pymysql
+          ];
+          output_formatting = [
+            jinja2
+            tabulate
+          ];
+          parquet = [ pyarrow ];
+          performance = [
+            bottleneck
+            numba
+            numexpr
+          ];
+          plot = [ matplotlib ];
+          postgresql = [
+            sqlalchemy
+            psycopg2
+          ];
+          spss = [ pyreadstat ];
+          sql-other = [ sqlalchemy ];
+          xml = [ lxml ];
+        };
+      in
+      extras // { all = lib.concatLists (lib.attrValues extras); };
 
-  doCheck = false; # various infinite recursions
+    doCheck = false; # various infinite recursions
 
-  passthru.tests.pytest = pandas.overridePythonAttrs (_: { doCheck = true; });
+    passthru.tests.pytest = pandas.overridePythonAttrs (_: {
+      doCheck = true;
+    });
 
-  nativeCheckInputs = [
-    glibcLocales
-    hypothesis
-    pytest-asyncio
-    pytest-xdist
-    pytestCheckHook
-  ]
-  ++ lib.flatten (lib.attrValues passthru.optional-dependencies)
-  ++ lib.optionals (stdenv.isLinux) [
-    # for locale executable
-    glibc
-  ]
-  ++ lib.optionals (stdenv.isDarwin) [
-    # for locale executable
-    adv_cmds
-  ];
+    nativeCheckInputs =
+      [
+        glibcLocales
+        hypothesis
+        pytest-asyncio
+        pytest-xdist
+        pytestCheckHook
+      ]
+      ++ lib.flatten (lib.attrValues passthru.optional-dependencies)
+      ++ lib.optionals (stdenv.hostPlatform.isLinux) [
+        # for locale executable
+        glibc
+      ]
+      ++ lib.optionals (stdenv.hostPlatform.isDarwin) [
+        # for locale executable
+        adv_cmds
+      ];
 
-  # don't max out build cores, it breaks tests
-  dontUsePytestXdist = true;
+    # don't max out build cores, it breaks tests
+    dontUsePytestXdist = true;
 
-  __darwinAllowLocalNetworking = true;
+    __darwinAllowLocalNetworking = true;
 
-  pytestFlagsArray = [
-    # https://github.com/pandas-dev/pandas/blob/main/test_fast.sh
-    "-m" "'not single_cpu and not slow and not network and not db and not slow_arm'"
-    # https://github.com/pandas-dev/pandas/issues/54907
-    "--no-strict-data-files"
-    "--numprocesses" "4"
-  ];
+    pytestFlagsArray = [
+      # https://github.com/pandas-dev/pandas/blob/main/test_fast.sh
+      "-m"
+      "'not single_cpu and not slow and not network and not db and not slow_arm'"
+      # https://github.com/pandas-dev/pandas/issues/54907
+      "--no-strict-data-files"
+      "--numprocesses"
+      "4"
+    ];
 
-  disabledTests = [
-    # AssertionError: Did not see expected warning of class 'FutureWarning'
-    "test_parsing_tzlocal_deprecated"
-  ] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
-    # tests/generic/test_finalize.py::test_binops[and_-args4-right] - AssertionError: assert {} == {'a': 1}
-    "test_binops"
-    # These tests are unreliable on aarch64-darwin. See https://github.com/pandas-dev/pandas/issues/38921.
-    "test_rolling"
-  ] ++ lib.optional stdenv.is32bit [
-    # https://github.com/pandas-dev/pandas/issues/37398
-    "test_rolling_var_numerical_issues"
-  ];
+    disabledTests =
+      [
+        # AssertionError: Did not see expected warning of class 'FutureWarning'
+        "test_parsing_tzlocal_deprecated"
+      ]
+      ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
+        # tests/generic/test_finalize.py::test_binops[and_-args4-right] - AssertionError: assert {} == {'a': 1}
+        "test_binops"
+        # These tests are unreliable on aarch64-darwin. See https://github.com/pandas-dev/pandas/issues/38921.
+        "test_rolling"
+      ]
+      ++ lib.optional stdenv.hostPlatform.is32bit [
+        # https://github.com/pandas-dev/pandas/issues/37398
+        "test_rolling_var_numerical_issues"
+      ];
 
-  # Tests have relative paths, and need to reference compiled C extensions
-  # so change directory where `import .test` is able to be resolved
-  preCheck = ''
-    export HOME=$TMPDIR
-    export LC_ALL="en_US.UTF-8"
-    cd $out/${python.sitePackages}/pandas
-  ''
-  # TODO: Get locale and clipboard support working on darwin.
-  #       Until then we disable the tests.
-  + lib.optionalString stdenv.isDarwin ''
-    # Fake the impure dependencies pbpaste and pbcopy
-    echo "#!${runtimeShell}" > pbcopy
-    echo "#!${runtimeShell}" > pbpaste
-    chmod a+x pbcopy pbpaste
-    export PATH=$(pwd):$PATH
-  '';
+    # Tests have relative paths, and need to reference compiled C extensions
+    # so change directory where `import .test` is able to be resolved
+    preCheck =
+      ''
+        export HOME=$TMPDIR
+        export LC_ALL="en_US.UTF-8"
+        cd $out/${python.sitePackages}/pandas
+      ''
+      # TODO: Get locale and clipboard support working on darwin.
+      #       Until then we disable the tests.
+      + lib.optionalString stdenv.hostPlatform.isDarwin ''
+        # Fake the impure dependencies pbpaste and pbcopy
+        echo "#!${runtimeShell}" > pbcopy
+        echo "#!${runtimeShell}" > pbpaste
+        chmod a+x pbcopy pbpaste
+        export PATH=$(pwd):$PATH
+      '';
 
-  pythonImportsCheck = [
-    "pandas"
-  ];
+    pythonImportsCheck = [ "pandas" ];
 
-  meta = with lib; {
-    # pandas devs no longer test i686, it's commonly broken
-    # broken = stdenv.isi686;
-    changelog = "https://pandas.pydata.org/docs/whatsnew/index.html";
-    description = "Powerful data structures for data analysis, time series, and statistics";
-    downloadPage = "https://github.com/pandas-dev/pandas";
-    homepage = "https://pandas.pydata.org";
-    license = licenses.bsd3;
-    longDescription = ''
-      Flexible and powerful data analysis / manipulation library for
-      Python, providing labeled data structures similar to R data.frame
-      objects, statistical functions, and much more.
-    '';
-    maintainers = with maintainers; [ raskin knedlsepp ];
+    meta = with lib; {
+      # pandas devs no longer test i686, it's commonly broken
+      # broken = stdenv.hostPlatform.isi686;
+      changelog = "https://pandas.pydata.org/docs/whatsnew/index.html";
+      description = "Powerful data structures for data analysis, time series, and statistics";
+      downloadPage = "https://github.com/pandas-dev/pandas";
+      homepage = "https://pandas.pydata.org";
+      license = licenses.bsd3;
+      longDescription = ''
+        Flexible and powerful data analysis / manipulation library for
+        Python, providing labeled data structures similar to R data.frame
+        objects, statistical functions, and much more.
+      '';
+      maintainers = with maintainers; [
+        raskin
+        knedlsepp
+      ];
+    };
   };
-};
-in pandas
+in
+pandas
diff --git a/pkgs/development/python-modules/pandoc-attributes/default.nix b/pkgs/development/python-modules/pandoc-attributes/default.nix
index 8c97744e9a118..8322f38835308 100644
--- a/pkgs/development/python-modules/pandoc-attributes/default.nix
+++ b/pkgs/development/python-modules/pandoc-attributes/default.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
-, pandocfilters
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  pandocfilters,
 }:
 
 buildPythonPackage rec {
@@ -14,16 +15,14 @@ buildPythonPackage rec {
     sha256 = "69221502dac74f5df1317011ce62c85a83eef5da3b71c63b1908e98224304a8c";
   };
 
-  propagatedBuildInputs = [
-    pandocfilters
-  ];
+  propagatedBuildInputs = [ pandocfilters ];
 
   # No tests in pypi source
   doCheck = false;
 
   meta = {
     homepage = "https://github.com/aaren/pandoc-attributes";
-    description = "An Attribute class to be used with pandocfilters";
+    description = "Attribute class to be used with pandocfilters";
     license = lib.licenses.bsd2;
     maintainers = with lib.maintainers; [ vcanadi ];
   };
diff --git a/pkgs/development/python-modules/pandoc-latex-environment/default.nix b/pkgs/development/python-modules/pandoc-latex-environment/default.nix
new file mode 100644
index 0000000000000..5548785e5fa97
--- /dev/null
+++ b/pkgs/development/python-modules/pandoc-latex-environment/default.nix
@@ -0,0 +1,42 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  poetry-dynamic-versioning,
+  panflute,
+  pytestCheckHook,
+  pandoc,
+}:
+
+buildPythonPackage rec {
+  pname = "pandoc-latex-environment";
+  version = "1.1.7.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "chdemko";
+    repo = "pandoc-latex-environment";
+    rev = "refs/tags/${version}";
+    hash = "sha256-iKzveVTScqF8dAGPx7JU66Z5oyoZ82t101z5xeiHYqw=";
+  };
+
+  build-system = [
+    poetry-core
+    poetry-dynamic-versioning
+  ];
+  dependencies = [ panflute ];
+
+  pythonImportsCheck = [ "pandoc_latex_environment" ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pandoc
+  ];
+
+  meta = {
+    description = "Pandoc filter for adding LaTeX environment on specific div";
+    homepage = "https://github.com/chdemko/pandoc-latex-environment";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/pandoc-xnos/default.nix b/pkgs/development/python-modules/pandoc-xnos/default.nix
index 8d5a4694b1ac4..af8c05f9a9ebd 100644
--- a/pkgs/development/python-modules/pandoc-xnos/default.nix
+++ b/pkgs/development/python-modules/pandoc-xnos/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, pandocfilters
-, psutil
-, setuptools
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pandocfilters,
+  psutil,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,18 +19,16 @@ buildPythonPackage rec {
     hash = "sha256-beiGvN0DS6s8wFjcDKozDuwAM2OApX3lTRaUDRUqLeU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
+
+  pythonRelaxDeps = [ "psutil" ];
 
   propagatedBuildInputs = [
     pandocfilters
     psutil
   ];
 
-  pythonImportsCheck = [
-    "pandocxnos"
-  ];
+  pythonImportsCheck = [ "pandocxnos" ];
 
   # tests need some patching
   doCheck = false;
diff --git a/pkgs/development/python-modules/pandocfilters/default.nix b/pkgs/development/python-modules/pandocfilters/default.nix
index b9310fdbae846..876637cdfe516 100644
--- a/pkgs/development/python-modules/pandocfilters/default.nix
+++ b/pkgs/development/python-modules/pandocfilters/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -10,16 +11,15 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-ACtKVV7k68A/i2Ywfih/pJLkp3tOoU0/k0MoKXu0k54=";
+    hash = "sha256-ACtKVV7k68A/i2Ywfih/pJLkp3tOoU0/k0MoKXu0k54=";
   };
 
   # No tests available
   doCheck = false;
 
   meta = with lib; {
-    description = "A python module for writing pandoc filters, with a collection of examples";
+    description = "Python module for writing pandoc filters, with a collection of examples";
     homepage = "https://github.com/jgm/pandocfilters";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/panel/default.nix b/pkgs/development/python-modules/panel/default.nix
index 4a4b93035d735..d37aa9bdc6844 100644
--- a/pkgs/development/python-modules/panel/default.nix
+++ b/pkgs/development/python-modules/panel/default.nix
@@ -1,22 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonRelaxDepsHook
-, bleach
-, bokeh
-, param
-, pyviz-comms
-, markdown
-, pyct
-, requests
-, setuptools
-, tqdm
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  bleach,
+  bokeh,
+  param,
+  pyviz-comms,
+  markdown,
+  pyct,
+  requests,
+  setuptools,
+  tqdm,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "panel";
-  version = "1.3.8";
+  version = "1.4.4";
 
   format = "wheel";
 
@@ -25,16 +25,13 @@ buildPythonPackage rec {
   # tries to fetch even more artifacts
   src = fetchPypi {
     inherit pname version format;
-    hash = "sha256-Sb85MZhqDd8/e0vaPGXGoxHVJ3UkrNtOC/9py6a/V3U=";
+    hash = "sha256-tJu5Z2VnsMBzC/aTSMBXJHCAgRrsVjZN1Pz7qA5eCaA=";
+    dist = "py3";
+    python = "py3";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
-  pythonRelaxDeps = [
-    "bokeh"
-  ];
+  pythonRelaxDeps = [ "bokeh" ];
 
   propagatedBuildInputs = [
     bleach
@@ -49,19 +46,17 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  pythonImportsCheck = [
-    "panel"
-  ];
+  pythonImportsCheck = [ "panel" ];
 
   # infinite recursion in test dependencies (hvplot)
   doCheck = false;
 
   meta = with lib; {
-    description = "A high level dashboarding library for python visualization libraries";
+    description = "High level dashboarding library for python visualization libraries";
     mainProgram = "panel";
     homepage = "https://github.com/holoviz/panel";
     changelog = "https://github.com/holoviz/panel/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/panflute/default.nix b/pkgs/development/python-modules/panflute/default.nix
index 0d145759842e7..d33e3b6cd0a4f 100644
--- a/pkgs/development/python-modules/panflute/default.nix
+++ b/pkgs/development/python-modules/panflute/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, fetchPypi
-, click
-, pyyaml
-, buildPythonPackage
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  click,
+  pyyaml,
+  buildPythonPackage,
+  pythonOlder,
 }:
 
-buildPythonPackage rec{
+buildPythonPackage rec {
   pname = "panflute";
   version = "2.3.1";
   format = "setuptools";
@@ -23,9 +24,7 @@ buildPythonPackage rec{
     pyyaml
   ];
 
-  pythonImportsCheck = [
-    "panflute"
-  ];
+  pythonImportsCheck = [ "panflute" ];
 
   meta = with lib; {
     description = "Pythonic alternative to John MacFarlane's pandocfilters, with extra helper functions";
diff --git a/pkgs/development/python-modules/panphon/default.nix b/pkgs/development/python-modules/panphon/default.nix
index 6ae6291345053..10c7e50099a76 100644
--- a/pkgs/development/python-modules/panphon/default.nix
+++ b/pkgs/development/python-modules/panphon/default.nix
@@ -1,33 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-
-, unittestCheckHook
-
-, setuptools
-
-, unicodecsv
-, pyyaml
-, regex
-, numpy
-, editdistance
-, munkres
-, levenshtein
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+
+  unittestCheckHook,
+
+  setuptools,
+
+  unicodecsv,
+  pyyaml,
+  regex,
+  numpy,
+  editdistance,
+  munkres,
+  levenshtein,
 }:
 
 buildPythonPackage rec {
   pname = "panphon";
-  version = "0.20.0";
+  version = "0.21.1";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-gio52n1NZWeyCK+eJW/Fp827wjvwnMNDFAR4pKa8VcY=";
+    hash = "sha256-Zgug40R1my1BPOoV9iOkbzouMKeQsc0YYFmBIoypDqk=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     setuptools # need for pkg_resources
@@ -40,11 +39,12 @@ buildPythonPackage rec {
     levenshtein # need for align_wordlists.py script
   ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [ "-s" "test" ];
+  unittestFlagsArray = [
+    "-s"
+    "test"
+  ];
 
   pythonImportsCheck = [
     "panphon"
diff --git a/pkgs/development/python-modules/paperbush/default.nix b/pkgs/development/python-modules/paperbush/default.nix
new file mode 100644
index 0000000000000..26f30a88908bf
--- /dev/null
+++ b/pkgs/development/python-modules/paperbush/default.nix
@@ -0,0 +1,29 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+}:
+
+buildPythonPackage rec {
+  pname = "paperbush";
+  version = "0.2.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "trag1c";
+    repo = "paperbush";
+    rev = "refs/tags/${version}";
+    hash = "sha256-wJV+2aGK9eSw2iToiHh0I7vYAuND2pRYGhnf7CB1a+0=";
+  };
+
+  build-system = [ poetry-core ];
+  pythonImportsCheck = [ "paperbush" ];
+
+  meta = {
+    changelog = "https://github.com/trag1c/paperbush/blob/${src.rev}/CHANGELOG.md";
+    description = "Super concise argument parsing tool for Python";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/papermill/default.nix b/pkgs/development/python-modules/papermill/default.nix
index 743812b84b62a..3c310b72b28bf 100644
--- a/pkgs/development/python-modules/papermill/default.nix
+++ b/pkgs/development/python-modules/papermill/default.nix
@@ -1,31 +1,32 @@
-{ lib
-, stdenv
-, aiohttp
-, ansicolors
-, azure-datalake-store
-, azure-identity
-, azure-storage-blob
-, boto3
-, buildPythonPackage
-, click
-, entrypoints
-, fetchFromGitHub
-, gcsfs
-, ipykernel
-, moto
-, nbclient
-, nbformat
-, pyarrow
-, pygithub
-, pytest-mock
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, pyyaml
-, requests
-, setuptools
-, tenacity
-, tqdm
+{
+  lib,
+  stdenv,
+  aiohttp,
+  ansicolors,
+  azure-datalake-store,
+  azure-identity,
+  azure-storage-blob,
+  boto3,
+  buildPythonPackage,
+  click,
+  entrypoints,
+  fetchFromGitHub,
+  gcsfs,
+  ipykernel,
+  moto,
+  nbclient,
+  nbformat,
+  pyarrow,
+  pygithub,
+  pytest-mock,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  pyyaml,
+  requests,
+  setuptools,
+  tenacity,
+  tqdm,
 }:
 
 buildPythonPackage rec {
@@ -42,9 +43,7 @@ buildPythonPackage rec {
     hash = "sha256-NxC5+hRDdMCl/7ZIho5ml4hdENrgO+wzi87GRPeMv8Q=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     click
@@ -56,9 +55,7 @@ buildPythonPackage rec {
     entrypoints
     tenacity
     ansicolors
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    aiohttp
-  ];
+  ] ++ lib.optionals (pythonAtLeast "3.12") [ aiohttp ];
 
   passthru.optional-dependencies = {
     azure = [
@@ -66,26 +63,20 @@ buildPythonPackage rec {
       azure-identity
       azure-storage-blob
     ];
-    gcs = [
-      gcsfs
-    ];
-    github = [
-      pygithub
-    ];
-    hdfs = [
-      pyarrow
-    ];
-    s3 = [
-      boto3
-    ];
+    gcs = [ gcsfs ];
+    github = [ pygithub ];
+    hdfs = [ pyarrow ];
+    s3 = [ boto3 ];
   };
 
-  nativeCheckInputs = [
-    ipykernel
-    moto
-    pytest-mock
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.azure
+  nativeCheckInputs =
+    [
+      ipykernel
+      moto
+      pytest-mock
+      pytestCheckHook
+    ]
+    ++ passthru.optional-dependencies.azure
     ++ passthru.optional-dependencies.s3
     ++ passthru.optional-dependencies.gcs;
 
@@ -93,17 +84,17 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d)
   '';
 
-  pythonImportsCheck = [
-    "papermill"
-  ];
+  pythonImportsCheck = [ "papermill" ];
 
-  disabledTests = [
-    # pytest 8 compat
-    "test_read_with_valid_file_extension"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # might fail due to the sandbox
-    "test_end2end_autosave_slow_notebook"
-  ];
+  disabledTests =
+    [
+      # pytest 8 compat
+      "test_read_with_valid_file_extension"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # might fail due to the sandbox
+      "test_end2end_autosave_slow_notebook"
+    ];
 
   disabledTestPaths = [
     # ImportError: cannot import name 'mock_s3' from 'moto'
@@ -116,7 +107,7 @@ buildPythonPackage rec {
     description = "Parametrize and run Jupyter and interact with notebooks";
     homepage = "https://github.com/nteract/papermill";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     mainProgram = "papermill";
   };
 }
diff --git a/pkgs/development/python-modules/papis-python-rofi/default.nix b/pkgs/development/python-modules/papis-python-rofi/default.nix
index 53bf62c5db155..c23b6cffa2a44 100644
--- a/pkgs/development/python-modules/papis-python-rofi/default.nix
+++ b/pkgs/development/python-modules/papis-python-rofi/default.nix
@@ -1,4 +1,8 @@
-{ buildPythonPackage, lib, fetchPypi }:
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "papis-python-rofi";
@@ -14,7 +18,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = {
-    description = "A Python module to make simple GUIs with Rofi";
+    description = "Python module to make simple GUIs with Rofi";
     homepage = "https://github.com/alejandrogallo/python-rofi";
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.nico202 ];
diff --git a/pkgs/development/python-modules/papis/default.nix b/pkgs/development/python-modules/papis/default.nix
index fe56f71ed4ebb..f7f36edfb2012 100644
--- a/pkgs/development/python-modules/papis/default.nix
+++ b/pkgs/development/python-modules/papis/default.nix
@@ -1,33 +1,33 @@
-{ lib
-, stdenv
-, arxiv2bib
-, beautifulsoup4
-, bibtexparser
-, buildPythonPackage
-, chardet
-, click
-, colorama
-, configparser
-, dominate
-, fetchFromGitHub
-, filetype
-, habanero
-, isbnlib
-, lxml
-, prompt-toolkit
-, pygments
-, pyparsing
-, pytestCheckHook
-, python-doi
-, python-slugify
-, pythonAtLeast
-, pythonOlder
-, pyyaml
-, requests
-, stevedore
-, tqdm
-, typing-extensions
-, whoosh
+{
+  lib,
+  stdenv,
+  arxiv2bib,
+  beautifulsoup4,
+  bibtexparser,
+  buildPythonPackage,
+  chardet,
+  click,
+  colorama,
+  configparser,
+  dominate,
+  fetchFromGitHub,
+  filetype,
+  habanero,
+  isbnlib,
+  lxml,
+  prompt-toolkit,
+  pygments,
+  pyparsing,
+  pytestCheckHook,
+  python-doi,
+  python-slugify,
+  pythonOlder,
+  pyyaml,
+  requests,
+  stevedore,
+  tqdm,
+  typing-extensions,
+  whoosh,
 }:
 
 buildPythonPackage rec {
@@ -75,17 +75,13 @@ buildPythonPackage rec {
       --replace "--cov=papis" ""
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export HOME=$(mktemp -d);
   '';
 
-  pytestFlagsArray = [
-    "papis tests"
-  ];
+  pytestFlagsArray = [ "papis tests" ];
 
   disabledTestPaths = [
     "tests/downloaders"
@@ -104,13 +100,9 @@ buildPythonPackage rec {
     "test_valid_dblp_key"
     "test_validate_arxivid"
     "test_yaml"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_default_opener"
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ "test_default_opener" ];
 
-  pythonImportsCheck = [
-    "papis"
-  ];
+  pythonImportsCheck = [ "papis" ];
 
   meta = with lib; {
     description = "Powerful command-line document and bibliography manager";
@@ -118,6 +110,9 @@ buildPythonPackage rec {
     homepage = "https://papis.readthedocs.io/";
     changelog = "https://github.com/papis/papis/blob/v${version}/CHANGELOG.md";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ nico202 teto ];
+    maintainers = with maintainers; [
+      nico202
+      teto
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/para/default.nix b/pkgs/development/python-modules/para/default.nix
index 765672d7a3626..f34260bf1531b 100644
--- a/pkgs/development/python-modules/para/default.nix
+++ b/pkgs/development/python-modules/para/default.nix
@@ -1,31 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "para";
   version = "0.0.8";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-RsMjKunY6p2IbP0IzdESiSICvthkX0C2JVWXukz+8hc=";
   };
 
-  nativeCheckInputs = [
-    nose
-    pytestCheckHook
-  ];
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "para" ];
 
-  meta = with lib; {
-    description = "A set utilities that ake advantage of python's 'multiprocessing' module to distribute CPU-intensive tasks";
+  meta = {
+    description = "Set utilities that ake advantage of python's 'multiprocessing' module to distribute CPU-intensive tasks";
     homepage = "https://pypi.org/project/para";
-    license = licenses.mit;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/paragraphs/default.nix b/pkgs/development/python-modules/paragraphs/default.nix
new file mode 100644
index 0000000000000..d9f79769cdeeb
--- /dev/null
+++ b/pkgs/development/python-modules/paragraphs/default.nix
@@ -0,0 +1,42 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "paragraphs";
+  version = "1.0.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "ShayHill";
+    repo = "paragraphs";
+    rev = "refs/tags/${version}";
+    hash = "sha256-u5/oNOCLdvfQVEIEpraeNLjTUoh3eJQ6qSExnkzTmNw=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [
+    "paragraphs"
+  ];
+
+  meta = {
+    description = "Module to incorporate long strings";
+    homepage = "https://github.com/ShayHill/paragraphs";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/param/default.nix b/pkgs/development/python-modules/param/default.nix
index b80f6199ad56c..8f5975a9517df 100644
--- a/pkgs/development/python-modules/param/default.nix
+++ b/pkgs/development/python-modules/param/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# build-system
-, hatchling
-, hatch-vcs
-
-# tests
-, numpy
-, pandas
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  hatchling,
+  hatch-vcs,
+
+  # tests
+  numpy,
+  pandas,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "param";
-  version = "2.1.0";
+  version = "2.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -25,7 +26,7 @@ buildPythonPackage rec {
     owner = "holoviz";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-9264KfRDuHsvDyIpGKs2VTPcTZOZIFLKe7xuplkfzf4=";
+    hash = "sha256-rGfFLDl5Y8D0OiO/1G05w2l3hAHZC368LuNADDzfBFs=";
   };
 
   nativeBuildInputs = [
@@ -41,18 +42,17 @@ buildPythonPackage rec {
   ];
 
   pytestFlagsArray = [
-    "-W" "ignore::DeprecationWarning"
+    "-W"
+    "ignore::DeprecationWarning"
   ];
 
-  pythonImportsCheck = [
-    "param"
-  ];
+  pythonImportsCheck = [ "param" ];
 
   meta = with lib; {
     description = "Declarative Python programming using Parameters";
     homepage = "https://param.holoviz.org/";
     changelog = "https://github.com/holoviz/param/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/parameter-expansion-patched/default.nix b/pkgs/development/python-modules/parameter-expansion-patched/default.nix
index 8e73457557f7e..0ef4297214086 100644
--- a/pkgs/development/python-modules/parameter-expansion-patched/default.nix
+++ b/pkgs/development/python-modules/parameter-expansion-patched/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -18,17 +19,11 @@ buildPythonPackage rec {
     hash = "sha256-/128ifveWC8zNlYtGWtxB3HpK6p7bVk1ahSwhaC2dAs=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "parameter_expansion"
-  ];
+  pythonImportsCheck = [ "parameter_expansion" ];
 
   meta = with lib; {
     description = "POSIX parameter expansion in Python";
diff --git a/pkgs/development/python-modules/parameterized/default.nix b/pkgs/development/python-modules/parameterized/default.nix
index 9f8fa4ad1e9fb..8af2b491701d1 100644
--- a/pkgs/development/python-modules/parameterized/default.nix
+++ b/pkgs/development/python-modules/parameterized/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mock
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -28,28 +29,22 @@ buildPythonPackage rec {
       --replace "assertRaisesRegexp" "assertRaisesRegex"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   checkInputs = [
     mock
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "parameterized/test.py"
-  ];
+  pytestFlagsArray = [ "parameterized/test.py" ];
 
-  pythonImportsCheck = [
-    "parameterized"
-  ];
+  pythonImportsCheck = [ "parameterized" ];
 
   meta = with lib; {
     description = "Parameterized testing with any Python test framework";
     homepage = "https://github.com/wolever/parameterized";
     changelog = "https://github.com/wolever/parameterized/blob/v${version}/CHANGELOG.txt";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/parametrize-from-file/default.nix b/pkgs/development/python-modules/parametrize-from-file/default.nix
index b6ee36c3dce2f..1f116f46e7e60 100644
--- a/pkgs/development/python-modules/parametrize-from-file/default.nix
+++ b/pkgs/development/python-modules/parametrize-from-file/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, pytestCheckHook
-, numpy
-, decopatch
-, more-itertools
-, nestedtext
-, pyyaml
-, tidyexc
-, toml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  pytestCheckHook,
+  numpy,
+  decopatch,
+  more-itertools,
+  nestedtext,
+  pyyaml,
+  tidyexc,
+  toml,
 }:
 
 buildPythonPackage rec {
   pname = "parametrize-from-file";
-  version = "0.19.0";
+  version = "0.20.0";
   format = "pyproject";
 
   src = fetchPypi {
     inherit version;
     pname = "parametrize_from_file";
-    hash = "sha256-FPTO2hYZT7bsQyPNcjBEk8SZKp51o/eMV5/U58W5SPI=";
+    hash = "sha256-t4WLNDkC/ErBnOGK6FoYIfjoL/zF9MxPThJtGM1nUL4=";
   };
 
   # patch out coveralls since it doesn't provide us value
@@ -31,9 +32,7 @@ buildPythonPackage rec {
       --replace "more_itertools~=8.10" "more_itertools"
   '';
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   nativeCheckInputs = [
     numpy
@@ -49,9 +48,7 @@ buildPythonPackage rec {
     toml
   ];
 
-  pythonImportsCheck = [
-    "parametrize_from_file"
-  ];
+  pythonImportsCheck = [ "parametrize_from_file" ];
 
   disabledTests = [
     # https://github.com/kalekundert/parametrize_from_file/issues/19
diff --git a/pkgs/development/python-modules/paramiko/default.nix b/pkgs/development/python-modules/paramiko/default.nix
index 36bc0c793f7a8..248dc1f513189 100644
--- a/pkgs/development/python-modules/paramiko/default.nix
+++ b/pkgs/development/python-modules/paramiko/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, bcrypt
-, buildPythonPackage
-, cryptography
-, fetchpatch
-, fetchPypi
-, gssapi
-, icecream
-, invoke
-, mock
-, pyasn1
-, pynacl
-, pytestCheckHook
-, six
+{
+  lib,
+  bcrypt,
+  buildPythonPackage,
+  cryptography,
+  fetchpatch,
+  fetchPypi,
+  gssapi,
+  icecream,
+  invoke,
+  mock,
+  pyasn1,
+  pynacl,
+  pytestCheckHook,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -46,8 +47,14 @@ buildPythonPackage rec {
   ] ++ passthru.optional-dependencies.ed25519; # remove on 3.0 update
 
   passthru.optional-dependencies = {
-    gssapi = [ pyasn1 gssapi ];
-    ed25519 = [ pynacl bcrypt ];
+    gssapi = [
+      pyasn1
+      gssapi
+    ];
+    ed25519 = [
+      pynacl
+      bcrypt
+    ];
     invoke = [ invoke ];
   };
 
@@ -63,9 +70,7 @@ buildPythonPackage rec {
     "tests/test_ssh_gss.py"
   ];
 
-  pythonImportsCheck = [
-    "paramiko"
-  ];
+  pythonImportsCheck = [ "paramiko" ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -80,6 +85,6 @@ buildPythonPackage rec {
       between python scripts. All major ciphers and hash methods are
       supported. SFTP client and server mode are both supported too.
     '';
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/paramz/default.nix b/pkgs/development/python-modules/paramz/default.nix
index bed92d7a3565c..712cce60a5e62 100644
--- a/pkgs/development/python-modules/paramz/default.nix
+++ b/pkgs/development/python-modules/paramz/default.nix
@@ -1,9 +1,20 @@
-{ lib, buildPythonPackage, fetchpatch, fetchPypi, numpy, scipy, six, decorator, nose }:
+{
+  lib,
+  buildPythonPackage,
+  fetchpatch,
+  fetchPypi,
+  setuptools,
+  numpy,
+  scipy,
+  six,
+  decorator,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "paramz";
   version = "0.9.5";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
@@ -23,15 +34,38 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [ numpy scipy six decorator ];
-  nativeCheckInputs = [ nose ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [ "paramz" ];
+  propagatedBuildInputs = [
+    numpy
+    scipy
+    six
+    decorator
+  ];
 
-  checkPhase = ''
-      nosetests -v paramz/tests
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  preCheck = ''
+    substituteInPlace paramz/tests/parameterized_tests.py \
+      --replace-fail "assertRaisesRegexp" "assertRaisesRegex"
   '';
 
+  pytestFlagsArray = [
+    "paramz/tests/array_core_tests.py"
+    "paramz/tests/cacher_tests.py"
+    "paramz/tests/examples_tests.py"
+    "paramz/tests/index_operations_tests.py"
+    "paramz/tests/init_tests.py"
+    "paramz/tests/lists_and_dicts_tests.py"
+    "paramz/tests/model_tests.py"
+    "paramz/tests/observable_tests.py"
+    "paramz/tests/parameterized_tests.py"
+    "paramz/tests/pickle_tests.py"
+    "paramz/tests/verbose_optimize_tests.py"
+  ];
+
+  pythonImportsCheck = [ "paramz" ];
+
   meta = with lib; {
     description = "Parameterization framework for parameterized model creation and handling";
     homepage = "https://github.com/sods/paramz";
diff --git a/pkgs/development/python-modules/paranoid-crypto/default.nix b/pkgs/development/python-modules/paranoid-crypto/default.nix
index f4ee6d2fe0b76..206fd2acf1c34 100644
--- a/pkgs/development/python-modules/paranoid-crypto/default.nix
+++ b/pkgs/development/python-modules/paranoid-crypto/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, absl-py
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, fpylll
-, gmpy
-, protobuf
-, pybind11
-, pytestCheckHook
-, pythonOlder
-, scipy
-, sympy
+{
+  lib,
+  absl-py,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  fpylll,
+  gmpy,
+  protobuf,
+  pybind11,
+  pytestCheckHook,
+  pythonOlder,
+  scipy,
+  sympy,
 }:
 
 buildPythonPackage rec {
@@ -57,9 +58,7 @@ buildPythonPackage rec {
     "paranoid_crypto/lib/randomness_tests/"
   ];
 
-  pythonImportsCheck = [
-    "paranoid_crypto"
-  ];
+  pythonImportsCheck = [ "paranoid_crypto" ];
 
   meta = with lib; {
     description = "Library contains checks for well known weaknesses on cryptographic artifacts";
diff --git a/pkgs/development/python-modules/parfive/default.nix b/pkgs/development/python-modules/parfive/default.nix
index 22f0c1c39ecae..4751f655974df 100644
--- a/pkgs/development/python-modules/parfive/default.nix
+++ b/pkgs/development/python-modules/parfive/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, aiofiles
-, aioftp
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pytest-asyncio
-, pytest-localserver
-, pytest-socket
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
-, tqdm
+{
+  lib,
+  aiofiles,
+  aioftp,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  pytest-asyncio,
+  pytest-localserver,
+  pytest-socket,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  tqdm,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-zWy0GSQhMHMM9B1M9vKE6/UPGnHObJUI4EZ+yY8X3I4=";
   };
 
-  buildInputs = [
-    setuptools-scm
-  ];
+  buildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     aioftp
@@ -50,15 +49,13 @@ buildPythonPackage rec {
     "test_ftp_http"
   ];
 
-  pythonImportsCheck = [
-    "parfive"
-  ];
+  pythonImportsCheck = [ "parfive" ];
 
   meta = with lib; {
-    description = "A HTTP and FTP parallel file downloader";
+    description = "HTTP and FTP parallel file downloader";
     mainProgram = "parfive";
     homepage = "https://parfive.readthedocs.io/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/parse-type/default.nix b/pkgs/development/python-modules/parse-type/default.nix
index 45af3a0e7fb28..2e2a8dcba79c8 100644
--- a/pkgs/development/python-modules/parse-type/default.nix
+++ b/pkgs/development/python-modules/parse-type/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, parse
-, pytestCheckHook
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  parse,
+  pytestCheckHook,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "parse-type";
-  version = "0.6.2";
+  version = "0.6.3";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "jenisys";
     repo = "parse_type";
     rev = "refs/tags/v${version}";
-    hash = "sha256-dunvcSi+nN5VruvRUPIEpkyUsmeS+kIYDfS8ibDR96s=";
+    hash = "sha256-oKPyzEKrP9umnDzPC3HwSgWmWkCg/h0ChYVrpseklf8=";
   };
 
   propagatedBuildInputs = [
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace pytest.ini \
diff --git a/pkgs/development/python-modules/parse/default.nix b/pkgs/development/python-modules/parse/default.nix
index b1aa2baedfacc..76c6fdc51a5da 100644
--- a/pkgs/development/python-modules/parse/default.nix
+++ b/pkgs/development/python-modules/parse/default.nix
@@ -1,31 +1,29 @@
-{ lib, fetchFromGitHub
-, buildPythonPackage
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  pytestCheckHook,
 }:
 buildPythonPackage rec {
   pname = "parse";
-  version = "1.20.1";
+  version = "1.20.2";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "r1chardj0n3s";
     repo = "parse";
     rev = "refs/tags/${version}";
-    hash = "sha256-FAAs39peR+Ibv0RKLrcnY2w0Z2EjVYyZ8U4HcbjTiew=";
+    hash = "sha256-i/H3E/Z8vqt2jLS8BaVHJuD2Fbi7TP7EeOjXAJ16bWg=";
   };
 
   postPatch = ''
     rm .pytest.ini
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     homepage = "https://github.com/r1chardj0n3s/parse";
diff --git a/pkgs/development/python-modules/parsedatetime/default.nix b/pkgs/development/python-modules/parsedatetime/default.nix
index ccb5bbcfda18c..b187ba40a2780 100644
--- a/pkgs/development/python-modules/parsedatetime/default.nix
+++ b/pkgs/development/python-modules/parsedatetime/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, future
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  future,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -36,6 +37,6 @@ buildPythonPackage rec {
     description = "Parse human-readable date/time text";
     homepage = "https://github.com/bear/parsedatetime";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/parsedmarc/default.nix b/pkgs/development/python-modules/parsedmarc/default.nix
index b9d4df1d58ee5..07696140e7b31 100644
--- a/pkgs/development/python-modules/parsedmarc/default.nix
+++ b/pkgs/development/python-modules/parsedmarc/default.nix
@@ -1,36 +1,36 @@
-{ lib
-, azure-identity
-, azure-monitor-ingestion
-, boto3
-, buildPythonPackage
-, dateparser
-, dnspython
-, elastic-transport
-, elasticsearch
-, elasticsearch-dsl
-, expiringdict
-, fetchPypi
-, fetchurl
-, geoip2
-, google-api-core
-, google-api-python-client
-, google-auth
-, google-auth-httplib2
-, google-auth-oauthlib
-, hatchling
-, imapclient
-, kafka-python
-, lxml
-, mailsuite
-, msgraph-core
-, nixosTests
-, opensearch-py
-, publicsuffixlist
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
-, tqdm
-, xmltodict
+{
+  lib,
+  azure-identity,
+  azure-monitor-ingestion,
+  boto3,
+  buildPythonPackage,
+  dateparser,
+  dnspython,
+  elastic-transport,
+  elasticsearch,
+  elasticsearch-dsl,
+  expiringdict,
+  fetchPypi,
+  fetchurl,
+  geoip2,
+  google-api-core,
+  google-api-python-client,
+  google-auth,
+  google-auth-httplib2,
+  google-auth-oauthlib,
+  hatchling,
+  imapclient,
+  kafka-python-ng,
+  lxml,
+  mailsuite,
+  msgraph-core,
+  nixosTests,
+  opensearch-py,
+  publicsuffixlist,
+  pythonOlder,
+  requests,
+  tqdm,
+  xmltodict,
 }:
 
 let
@@ -41,19 +41,18 @@ let
 in
 buildPythonPackage rec {
   pname = "parsedmarc";
-  version = "8.8.0";
+  version = "8.12.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-tK/cxOw50awcDAGRDTQ+Nxb9aJl2+zLZHuJq88xNmXM=";
+    hash = "sha256-mscc3TRMYuaTqrrxGPCVVKa2fg5sXwK/BglpbvLXbLc=";
   };
 
   nativeBuildInputs = [
     hatchling
-    pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = [
@@ -78,7 +77,7 @@ buildPythonPackage rec {
     google-auth-httplib2
     google-auth-oauthlib
     imapclient
-    kafka-python
+    kafka-python-ng
     lxml
     mailsuite
     msgraph-core
@@ -93,9 +92,7 @@ buildPythonPackage rec {
   # https://github.com/domainaware/parsedmarc/issues/426
   doCheck = false;
 
-  pythonImportsCheck = [
-    "parsedmarc"
-  ];
+  pythonImportsCheck = [ "parsedmarc" ];
 
   passthru = {
     inherit dashboard;
@@ -105,7 +102,9 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python module and CLI utility for parsing DMARC reports";
     homepage = "https://domainaware.github.io/parsedmarc/";
-    changelog = "https://github.com/domainaware/parsedmarc/blob/master/CHANGELOG.md#${lib.replaceStrings [ "." ] [ "" ] version}";
+    changelog = "https://github.com/domainaware/parsedmarc/blob/master/CHANGELOG.md#${
+      lib.replaceStrings [ "." ] [ "" ] version
+    }";
     license = licenses.asl20;
     maintainers = with maintainers; [ talyz ];
     mainProgram = "parsedmarc";
diff --git a/pkgs/development/python-modules/parsel/default.nix b/pkgs/development/python-modules/parsel/default.nix
index ee817f70665a4..1c0f6a521ad88 100644
--- a/pkgs/development/python-modules/parsel/default.nix
+++ b/pkgs/development/python-modules/parsel/default.nix
@@ -1,34 +1,33 @@
-{ lib
-, buildPythonPackage
-, cssselect
-, fetchPypi
-, jmespath
-, lxml
-, packaging
-, psutil
-, pytestCheckHook
-, pythonOlder
-, w3lib
+{
+  lib,
+  buildPythonPackage,
+  cssselect,
+  fetchPypi,
+  jmespath,
+  lxml,
+  packaging,
+  psutil,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  w3lib,
 }:
 
 buildPythonPackage rec {
   pname = "parsel";
-  version = "1.9.0";
-  format = "setuptools";
+  version = "1.9.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-paa8sMX8dBVAujB1Y2/1y5aIUqeMwWroIlDl1Ib6fUg=";
+    hash = "sha256-FOANwHcxyQMNtiDBlfyuiEtbSEjp+cUjxhGfcIzPqaw=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace '"pytest-runner",' ""
-  '';
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cssselect
     jmespath
     lxml
@@ -41,13 +40,12 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "parsel"
-  ];
+  pythonImportsCheck = [ "parsel" ];
 
   meta = with lib; {
     description = "Python library to extract data from HTML and XML using XPath and CSS selectors";
     homepage = "https://github.com/scrapy/parsel";
+    changelog = "https://github.com/scrapy/parsel/blob/v${version}/NEWS";
     license = licenses.bsd3;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/parsimonious/default.nix b/pkgs/development/python-modules/parsimonious/default.nix
index b156321cefece..c99aafd447ea2 100644
--- a/pkgs/development/python-modules/parsimonious/default.nix
+++ b/pkgs/development/python-modules/parsimonious/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, regex
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  regex,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,13 +19,9 @@ buildPythonPackage rec {
     hash = "sha256-goFgDaGA7IrjVCekq097gr/sHj0eUvgMtg6oK5USUBw=";
   };
 
-  propagatedBuildInputs = [
-    regex
-  ];
+  propagatedBuildInputs = [ regex ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # test_benchmarks.py tests are actually benchmarks and may fail due to
@@ -49,6 +46,6 @@ buildPythonPackage rec {
     description = "Arbitrary-lookahead parser";
     homepage = "https://github.com/erikrose/parsimonious";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/parsley/default.nix b/pkgs/development/python-modules/parsley/default.nix
index f8972ac33805b..7da4675609d47 100644
--- a/pkgs/development/python-modules/parsley/default.nix
+++ b/pkgs/development/python-modules/parsley/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +18,7 @@ buildPythonPackage rec {
   meta = with lib; {
     license = licenses.mit;
     homepage = "https://launchpad.net/parsley";
-    description = "A parser generator library based on OMeta, and other useful parsing tools.";
+    description = "Parser generator library based on OMeta, and other useful parsing tools";
     maintainers = with maintainers; [ seppeljordan ];
   };
 }
diff --git a/pkgs/development/python-modules/parso/default.nix b/pkgs/development/python-modules/parso/default.nix
index 7d76ef5d80aa3..e39173147e7d2 100644
--- a/pkgs/development/python-modules/parso/default.nix
+++ b/pkgs/development/python-modules/parso/default.nix
@@ -1,21 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, pythonAtLeast
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonAtLeast,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "parso";
-  version = "0.8.3";
+  version = "0.8.4";
   format = "setuptools";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-jAe+KQu1nwNYiRWSHinopQACrK8s3F+g4BFPkXCfr6A=";
+    hash = "sha256-6zp7WCQPuZCZo0VXHe7MD5VA6l9N0v4UwqmdaygauS0=";
   };
 
   nativeCheckInputs = [ pytestCheckHook ];
@@ -26,7 +26,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A Python Parser";
+    description = "Python Parser";
     homepage = "https://parso.readthedocs.io/en/latest/";
     changelog = "https://github.com/davidhalter/parso/blob/master/CHANGELOG.rst";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/parsy/default.nix b/pkgs/development/python-modules/parsy/default.nix
index 07e9bfb2be769..3c60ec41fcecc 100644
--- a/pkgs/development/python-modules/parsy/default.nix
+++ b/pkgs/development/python-modules/parsy/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-/Bu3xZUpXI4WiYJKKWTJTdSFq8pwC1PFDw0Kr8s3Fe8=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "parsy"
-  ];
+  pythonImportsCheck = [ "parsy" ];
 
   meta = with lib; {
     homepage = "https://github.com/python-parsy/parsy";
diff --git a/pkgs/development/python-modules/partd/default.nix b/pkgs/development/python-modules/partd/default.nix
index b5f8afce9d3b2..0dd614644d2d5 100644
--- a/pkgs/development/python-modules/partd/default.nix
+++ b/pkgs/development/python-modules/partd/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch2
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  pythonOlder,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, locket
-, toolz
+  # dependencies
+  locket,
+  toolz,
 
-# optional-dependencies
-, blosc2
-, numpy
-, pandas
-, pyzmq
+  # optional-dependencies
+  blosc2,
+  numpy,
+  pandas,
+  pyzmq,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -43,9 +44,7 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     locket
@@ -61,9 +60,7 @@ buildPythonPackage rec {
     ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = {
     description = "Appendable key-value storage";
diff --git a/pkgs/development/python-modules/particle/default.nix b/pkgs/development/python-modules/particle/default.nix
index 1b99947b58ec5..112b733ed2848 100644
--- a/pkgs/development/python-modules/particle/default.nix
+++ b/pkgs/development/python-modules/particle/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, attrs
-, buildPythonPackage
-, deprecated
-, fetchFromGitHub
-, fetchPypi
-, hatch-vcs
-, hatchling
-, hepunits
-, pandas
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
-, tabulate
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  deprecated,
+  fetchPypi,
+  hatch-vcs,
+  hatchling,
+  hepunits,
+  pandas,
+  pytestCheckHook,
+  pythonOlder,
+  tabulate,
 }:
 
 buildPythonPackage rec {
   pname = "particle";
-  version = "0.24.0";
-  format = "pyproject";
+  version = "0.25.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-irS13UVHui2ug1SVWkNSEIkqV13/RvMjysbPQGALl2o=";
+    hash = "sha256-lwZ0jpWnBt/9SUJts5MpgZf+GvgZchxdLG5RV2Sh+wE=";
   };
 
   postPatch = ''
@@ -33,12 +32,12 @@ buildPythonPackage rec {
       --replace '"--benchmark-disable",' ""
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-vcs
     hatchling
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     attrs
     deprecated
     hepunits
@@ -50,19 +49,19 @@ buildPythonPackage rec {
     pandas
   ];
 
-  pythonImportsCheck = [
-    "particle"
-  ];
+  pythonImportsCheck = [ "particle" ];
 
   disabledTestPaths = [
+    # Requires pytest-benchmark and pytest-cov which we want to avoid using, as
+    # it doesn't really test functionality.
     "tests/particle/test_performance.py"
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Package to deal with particles, the PDG particle data table and others";
     homepage = "https://github.com/scikit-hep/particle";
     changelog = "https://github.com/scikit-hep/particle/releases/tag/v${version}";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ doronbehar ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ doronbehar ];
   };
 }
diff --git a/pkgs/development/python-modules/parts/default.nix b/pkgs/development/python-modules/parts/default.nix
index 126cabfc8f674..5f942a17c58f6 100644
--- a/pkgs/development/python-modules/parts/default.nix
+++ b/pkgs/development/python-modules/parts/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "parts";
-  version = "1.7.0";
+  version = "2.0.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-TbcFgWKKgHXFyi1NqwVy1ITGHESb4ZusivOpFWazN1s=";
+    hash = "sha256-wQgiwr7iOBvy24/w1C311PivWLtXLD/Djs34zo1Zid4=";
   };
 
   nativeBuildInputs = [
@@ -26,9 +27,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "parts"
-  ];
+  pythonImportsCheck = [ "parts" ];
 
   meta = with lib; {
     description = "Library for common list functions related to partitioning lists";
diff --git a/pkgs/development/python-modules/parver/default.nix b/pkgs/development/python-modules/parver/default.nix
index b18d7db34766b..af12a98352838 100644
--- a/pkgs/development/python-modules/parver/default.nix
+++ b/pkgs/development/python-modules/parver/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, attrs
-, pytestCheckHook
-, hypothesis
-, pretend
-, arpeggio
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  attrs,
+  pytestCheckHook,
+  hypothesis,
+  pretend,
+  arpeggio,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -21,16 +22,12 @@ buildPythonPackage rec {
     hash = "sha256-uf3h5ruc6fB+COnEvqjYglxeeOGKAFLQLgK/lRfrR3c=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     attrs
     arpeggio
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.10") [ typing-extensions ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -42,6 +39,6 @@ buildPythonPackage rec {
     description = "Allows parsing and manipulation of PEP 440 version numbers";
     homepage = "https://github.com/RazerM/parver";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pasimple/default.nix b/pkgs/development/python-modules/pasimple/default.nix
index 6dc52b2101580..515fb636ae319 100644
--- a/pkgs/development/python-modules/pasimple/default.nix
+++ b/pkgs/development/python-modules/pasimple/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pulseaudio
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pulseaudio,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
       "_libpulse_simple = ctypes.CDLL('${lib.getLib pulseaudio}/lib/libpulse-simple.so.0')"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   pythonImportsCheck = [
     "pasimple"
@@ -36,7 +35,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A python wrapper for the \"PulseAudio simple API\". Supports playing and recording audio via PulseAudio and PipeWire";
+    description = "Python wrapper for the \"PulseAudio simple API\". Supports playing and recording audio via PulseAudio and PipeWire";
     homepage = "https://github.com/henrikschnor/pasimple";
     license = licenses.mit;
     maintainers = with maintainers; [ hexa ];
diff --git a/pkgs/development/python-modules/passlib/default.nix b/pkgs/development/python-modules/passlib/default.nix
index cf264c504353a..29d1b111e9219 100644
--- a/pkgs/development/python-modules/passlib/default.nix
+++ b/pkgs/development/python-modules/passlib/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, argon2-cffi
-, bcrypt
-, cryptography
-, pytestCheckHook
-, pythonOlder
-, pytest-xdist
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  argon2-cffi,
+  bcrypt,
+  cryptography,
+  pytestCheckHook,
+  pythonOlder,
+  pytest-xdist,
 }:
 
 buildPythonPackage rec {
@@ -27,16 +28,23 @@ buildPythonPackage rec {
     totp = [ cryptography ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-    pytest-xdist
-  ] ++ passthru.optional-dependencies.argon2
-  ++ passthru.optional-dependencies.bcrypt
-  ++ passthru.optional-dependencies.totp;
+  # Fix for https://foss.heptapod.net/python-libs/passlib/-/issues/190
+  postPatch = ''
+    substituteInPlace passlib/handlers/bcrypt.py \
+      --replace-fail "version = _bcrypt.__about__.__version__" \
+      "version = getattr(getattr(_bcrypt, '__about__', _bcrypt), '__version__', '<unknown>')"
+  '';
 
-  pythonImportsCheck = [
-    "passlib"
-  ];
+  nativeCheckInputs =
+    [
+      pytestCheckHook
+      pytest-xdist
+    ]
+    ++ passthru.optional-dependencies.argon2
+    ++ passthru.optional-dependencies.bcrypt
+    ++ passthru.optional-dependencies.totp;
+
+  pythonImportsCheck = [ "passlib" ];
 
   disabledTests = [
     # timming sensitive
@@ -54,9 +62,9 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A password hashing library for Python";
+    description = "Password hashing library for Python";
     homepage = "https://foss.heptapod.net/python-libs/passlib";
     license = licenses.bsdOriginal;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/paste/default.nix b/pkgs/development/python-modules/paste/default.nix
index a13706dacb549..b7ac8fefb3a83 100644
--- a/pkgs/development/python-modules/paste/default.nix
+++ b/pkgs/development/python-modules/paste/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, setuptools
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "paste";
-  version = "3.9.0";
+  version = "3.10.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "cdent";
     repo = "paste";
     rev = "refs/tags/${version}";
-    hash = "sha256-HdeShtslnvjmuiUb0W3ASnSWcZnyDJcthsIOjYmuD8I=";
+    hash = "sha256-NY/h6hbpluEu1XAv3o4mqoG+l0LXfM1dw7+G0Rm1E4o=";
   };
 
   postPatch = ''
@@ -31,24 +31,20 @@ buildPythonPackage rec {
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     # needs to be modified after Sat, 1 Jan 2005 12:00:00 GMT
     touch tests/urlparser_data/secured.txt
   '';
 
-  pythonNamespaces = [
-    "paste"
-  ];
+  pythonNamespaces = [ "paste" ];
 
   meta = with lib; {
     description = "Tools for using a Web Server Gateway Interface stack";
     homepage = "https://pythonpaste.readthedocs.io/";
     changelog = "https://github.com/cdent/paste/blob/${version}/docs/news.txt";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pastedeploy/default.nix b/pkgs/development/python-modules/pastedeploy/default.nix
index 749d3574d701c..a68134dfdc315 100644
--- a/pkgs/development/python-modules/pastedeploy/default.nix
+++ b/pkgs/development/python-modules/pastedeploy/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,13 +25,9 @@ buildPythonPackage rec {
       --replace " --cov" ""
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "paste.deploy"
-  ];
+  pythonImportsCheck = [ "paste.deploy" ];
 
   meta = with lib; {
     description = "Load, configure, and compose WSGI applications and servers";
diff --git a/pkgs/development/python-modules/pastel/default.nix b/pkgs/development/python-modules/pastel/default.nix
index 59fd518eca620..2ed649704fe12 100644
--- a/pkgs/development/python-modules/pastel/default.nix
+++ b/pkgs/development/python-modules/pastel/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "pastel";
diff --git a/pkgs/development/python-modules/pastescript/default.nix b/pkgs/development/python-modules/pastescript/default.nix
index 3d42c40c1230b..384ca52949ec0 100644
--- a/pkgs/development/python-modules/pastescript/default.nix
+++ b/pkgs/development/python-modules/pastescript/default.nix
@@ -1,28 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, python
-, pytestCheckHook
-, six
-, paste
-, pastedeploy
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  six,
+  paste,
+  setuptools,
+  pastedeploy,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pastescript";
-  version = "3.5.1";
-  format = "setuptools";
+  version = "3.6.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     pname = "PasteScript";
     inherit version;
-    hash = "sha256-zRtgbNReloT/20SL1tmq70IN0u/n5rYsbTc6Rv9DyDU=";
+    hash = "sha256-HCLSt81TUWRr7tKMb3DrSipLklZR2a/Ko1AdBsq7UXE=";
   };
 
+  build-system = [ setuptools ];
+
   propagatedBuildInputs = [
     paste
     pastedeploy
@@ -32,18 +34,9 @@ buildPythonPackage rec {
   # test suite seems to unset PYTHONPATH
   doCheck = false;
 
-  nativeCheckInputs = [
-    nose
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonNamespaces = [
-    "paste"
-  ];
-
-  disabledTestPaths = [
-    "appsetup/testfiles"
-  ];
+  disabledTestPaths = [ "appsetup/testfiles" ];
 
   pythonImportsCheck = [
     "paste.script"
@@ -52,10 +45,10 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A pluggable command-line frontend, including commands to setup package file layouts";
+    description = "Pluggable command-line frontend, including commands to setup package file layouts";
     mainProgram = "paster";
     homepage = "https://github.com/cdent/pastescript/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/patator/default.nix b/pkgs/development/python-modules/patator/default.nix
index 016f93b41975f..ea0f1ce93b9db 100644
--- a/pkgs/development/python-modules/patator/default.nix
+++ b/pkgs/development/python-modules/patator/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, ajpy
-, buildPythonPackage
-, cx-oracle
-, dnspython
-, fetchPypi
-, impacket
-, ipy
-, mysqlclient
-, paramiko
-, psycopg2
-, pyasn1
-, pycrypto
-, pycurl
-, pyopenssl
-, pysnmp
-, pysqlcipher3
-, pythonOlder
+{
+  lib,
+  ajpy,
+  buildPythonPackage,
+  cx-oracle,
+  dnspython,
+  fetchPypi,
+  impacket,
+  ipy,
+  mysqlclient,
+  paramiko,
+  psycopg2,
+  pyasn1,
+  pycrypto,
+  pycurl,
+  pyopenssl,
+  pysnmp,
+  pysqlcipher3,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/patch-ng/default.nix b/pkgs/development/python-modules/patch-ng/default.nix
index d91ca4be74dbd..1298fa3a1e265 100644
--- a/pkgs/development/python-modules/patch-ng/default.nix
+++ b/pkgs/development/python-modules/patch-ng/default.nix
@@ -1,23 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
-  version = "1.17.4"; # note: `conan` package may require a hardcoded one
+  version = "1.18.0"; # note: `conan` package may require a hardcoded one
   format = "setuptools";
   pname = "patch-ng";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1kja1nn08w0k8k6j4kad48k581hh9drvjjb8x60v9j13sxdvqyk2";
+    sha256 = "sha256-2gZ2KNbV/Z3FpV6rN5UdRr2VZhtyGfqzZLcRNmq8xpA=";
   };
 
   meta = with lib; {
-    description = "Library to parse and apply unified diffs.";
+    description = "Library to parse and apply unified diffs";
     homepage = "https://github.com/conan-io/python-patch";
     license = licenses.mit;
     maintainers = with maintainers; [ HaoZeke ];
   };
-
 }
diff --git a/pkgs/development/python-modules/patch/default.nix b/pkgs/development/python-modules/patch/default.nix
index d307399707c1b..1dea1cf9f1784 100644
--- a/pkgs/development/python-modules/patch/default.nix
+++ b/pkgs/development/python-modules/patch/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchzip
+{
+  lib,
+  buildPythonPackage,
+  fetchzip,
 }:
 
 buildPythonPackage rec {
@@ -18,10 +19,9 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A library to parse and apply unified diffs";
+    description = "Library to parse and apply unified diffs";
     homepage = "https://github.com/techtonik/python-patch/";
     license = licenses.mit;
     maintainers = [ maintainers.igsha ];
   };
-
 }
diff --git a/pkgs/development/python-modules/path-and-address/default.nix b/pkgs/development/python-modules/path-and-address/default.nix
index 4a72431c7521f..09918dec93094 100644
--- a/pkgs/development/python-modules/path-and-address/default.nix
+++ b/pkgs/development/python-modules/path-and-address/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -26,7 +27,6 @@ buildPythonPackage rec {
     description = "Functions for server CLI applications used by humans";
     homepage = "https://github.com/joeyespo/path-and-address";
     license = licenses.mit;
-    maintainers = with maintainers; [ koral];
+    maintainers = with maintainers; [ koral ];
   };
-
 }
diff --git a/pkgs/development/python-modules/path/default.nix b/pkgs/development/python-modules/path/default.nix
index e88a7efd60f5c..d7f28f166a052 100644
--- a/pkgs/development/python-modules/path/default.nix
+++ b/pkgs/development/python-modules/path/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, more-itertools
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  more-itertools,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "path";
-  version = "16.10.0";
+  version = "16.14.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-sysit2/oEKje1tE2JozItmmK58R8KblKnqEmI/MFHkY=";
+    hash = "sha256-26qn79RgL9a6jYKJDceCPWnl3nQKboQtmRmw+q8rao4=";
   };
 
   nativeBuildInputs = [
@@ -36,15 +37,13 @@ buildPythonPackage rec {
     "test_utime"
   ];
 
-  pythonImportsCheck = [
-    "path"
-  ];
+  pythonImportsCheck = [ "path" ];
 
   meta = with lib; {
     description = "Object-oriented file system path manipulation";
     homepage = "https://github.com/jaraco/path";
     changelog = "https://github.com/jaraco/path/blob/v${version}/NEWS.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pathable/default.nix b/pkgs/development/python-modules/pathable/default.nix
index 789162b1fe527..c0bd7ccb8cedb 100644
--- a/pkgs/development/python-modules/pathable/default.nix
+++ b/pkgs/development/python-modules/pathable/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
@@ -20,21 +21,15 @@ buildPythonPackage rec {
     hash = "sha256-4QRFjbeaggoEPVGAmSY+qVMNW0DKqarNfRXaH6B58ew=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     sed -i "/--cov/d" pyproject.toml
   '';
 
-  pythonImportsCheck = [
-    "pathable"
-  ];
+  pythonImportsCheck = [ "pathable" ];
 
   meta = with lib; {
     description = "Library for object-oriented paths";
diff --git a/pkgs/development/python-modules/pathlib-abc/default.nix b/pkgs/development/python-modules/pathlib-abc/default.nix
index 891b6d348561e..c1a8c632cbc68 100644
--- a/pkgs/development/python-modules/pathlib-abc/default.nix
+++ b/pkgs/development/python-modules/pathlib-abc/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, hatchling
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  hatchling,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,23 +20,17 @@ buildPythonPackage rec {
     hash = "sha256-CE573ZGbD3d0kUqeZM2GobOYYPgfeB3XJCWGMfKRWr4=";
   };
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  pythonImportsCheck = [
-    "pathlib_abc"
-  ];
+  pythonImportsCheck = [ "pathlib_abc" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Python base classes for rich path objects";
     homepage = "https://github.com/barneygale/pathlib-abc";
     changelog = "https://github.com/barneygale/pathlib-abc/blob/${version}/CHANGES.rst";
     license = licenses.psfl;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pathlib/default.nix b/pkgs/development/python-modules/pathlib/default.nix
deleted file mode 100644
index 1e34b92a4314d..0000000000000
--- a/pkgs/development/python-modules/pathlib/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, unittestCheckHook
-, pythonAtLeast
-}:
-
-buildPythonPackage rec {
-  pname = "pathlib";
-  version = "1.0.1";
-  format = "setuptools";
-  disabled = pythonAtLeast "3.4"; # Was added to std library in Python 3.4
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39";
-  };
-
-  nativeCheckInputs = [ unittestCheckHook ];
-
-  meta = {
-    description = "Object-oriented filesystem paths";
-    homepage = "https://pathlib.readthedocs.org/";
-    license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ ];
-  };
-}
diff --git a/pkgs/development/python-modules/pathlib2/default.nix b/pkgs/development/python-modules/pathlib2/default.nix
index 15238a8589908..c439b1b04cf9f 100644
--- a/pkgs/development/python-modules/pathlib2/default.nix
+++ b/pkgs/development/python-modules/pathlib2/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-, pythonOlder
-, scandir ? null
-, glibcLocales
-, mock
-, typing
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  pythonOlder,
+  scandir ? null,
+  glibcLocales,
+  typing,
 }:
 
 buildPythonPackage rec {
@@ -19,19 +19,22 @@ buildPythonPackage rec {
     hash = "sha256-n+DtrYmLg8DD4ZnIQrJ+0hZkXS4Xd1ey3Wc4TUETxkE=";
   };
 
-  propagatedBuildInputs = [ six ]
-    ++ lib.optionals (pythonOlder "3.5") [ scandir typing ];
-  nativeCheckInputs = [ glibcLocales ]
-    ++ lib.optional (pythonOlder "3.3") mock;
+  propagatedBuildInputs =
+    [ six ]
+    ++ lib.optionals (pythonOlder "3.5") [
+      scandir
+      typing
+    ];
+  nativeCheckInputs = [ glibcLocales ];
 
   preCheck = ''
     export LC_ALL="en_US.UTF-8"
   '';
 
   meta = with lib; {
-    description = "This module offers classes representing filesystem paths with semantics appropriate for different operating systems.";
+    description = "This module offers classes representing filesystem paths with semantics appropriate for different operating systems";
     homepage = "https://pypi.org/project/pathlib2/";
     license = with licenses; [ mit ];
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pathos/default.nix b/pkgs/development/python-modules/pathos/default.nix
index 690734a4e0f8f..b548dd3c6f0ba 100644
--- a/pkgs/development/python-modules/pathos/default.nix
+++ b/pkgs/development/python-modules/pathos/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, dill
-, fetchFromGitHub
-, multiprocess
-, pox
-, ppft
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dill,
+  fetchFromGitHub,
+  multiprocess,
+  pox,
+  ppft,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -32,15 +33,13 @@ buildPythonPackage rec {
   # Require network
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pathos"
-  ];
+  pythonImportsCheck = [ "pathos" ];
 
   meta = with lib; {
     description = "Parallel graph management and execution in heterogeneous computing";
     homepage = "https://pathos.readthedocs.io/";
     changelog = "https://github.com/uqfoundation/pathos/releases/tag/${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pathspec/default.nix b/pkgs/development/python-modules/pathspec/default.nix
index dc3c854cfe72d..c340d74ac58aa 100644
--- a/pkgs/development/python-modules/pathspec/default.nix
+++ b/pkgs/development/python-modules/pathspec/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, flit-core
-, unittestCheckHook
-
-# for passthru.tests
-, awsebcli
-, black
-, hatchling
-, yamllint
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  unittestCheckHook,
+
+  # for passthru.tests
+  awsebcli,
+  black,
+  hatchling,
+  yamllint,
 }:
 
 buildPythonPackage rec {
@@ -22,20 +22,19 @@ buildPythonPackage rec {
     hash = "sha256-pILVFQOhqzOxxnpsOBOiaVPb3HHDHayu+ag4xOKfVxI=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  pythonImportsCheck = [
-    "pathspec"
-  ];
+  pythonImportsCheck = [ "pathspec" ];
 
-  checkInputs = [
-    unittestCheckHook
-  ];
+  checkInputs = [ unittestCheckHook ];
 
   passthru.tests = {
-    inherit awsebcli black hatchling yamllint;
+    inherit
+      awsebcli
+      black
+      hatchling
+      yamllint
+      ;
   };
 
   meta = {
diff --git a/pkgs/development/python-modules/pathtools/default.nix b/pkgs/development/python-modules/pathtools/default.nix
index 453dc9df36ef8..b34a24ea6f4bc 100644
--- a/pkgs/development/python-modules/pathtools/default.nix
+++ b/pkgs/development/python-modules/pathtools/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,6 @@ buildPythonPackage rec {
     description = "Pattern matching and various utilities for file systems paths";
     homepage = "https://github.com/gorakhargosh/pathtools";
     license = licenses.mit;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pathvalidate/default.nix b/pkgs/development/python-modules/pathvalidate/default.nix
index c3098c24b56d1..773f9372edbc2 100644
--- a/pkgs/development/python-modules/pathvalidate/default.nix
+++ b/pkgs/development/python-modules/pathvalidate/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-XoN4z2cSv/Z/vnqDB9mfqMGgyyiqR3BW+Pw3Tw3/JK0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # Requires `pytest-md-report`, causing infinite recursion.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pathvalidate"
-  ];
+  pythonImportsCheck = [ "pathvalidate" ];
 
   meta = with lib; {
     description = "Library to sanitize/validate a string such as filenames/file-paths/etc";
diff --git a/pkgs/development/python-modules/pathy/default.nix b/pkgs/development/python-modules/pathy/default.nix
index 559a3d71ecfc0..3e384c62a98a3 100644
--- a/pkgs/development/python-modules/pathy/default.nix
+++ b/pkgs/development/python-modules/pathy/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mock
-, pathlib-abc
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools
-, smart-open
-, typer
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  pathlib-abc,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  smart-open,
+  typer,
 }:
 
 buildPythonPackage rec {
@@ -23,17 +23,10 @@ buildPythonPackage rec {
     hash = "sha256-uz0OawuL92709jxxkeluCvLtZcj9tfoXSI+ch55jcG0=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
-  pythonRelaxDeps = [
-    "smart-open"
-  ];
+  pythonRelaxDeps = [ "smart-open" ];
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     pathlib-abc
@@ -53,12 +46,10 @@ buildPythonPackage rec {
     "pathy/_tests/test_s3.py"
   ];
 
-  pythonImportsCheck = [
-    "pathy"
-  ];
+  pythonImportsCheck = [ "pathy" ];
 
   meta = with lib; {
-    description = "A Path interface for local and cloud bucket storage";
+    description = "Path interface for local and cloud bucket storage";
     mainProgram = "pathy";
     homepage = "https://github.com/justindujardin/pathy";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/patiencediff/default.nix b/pkgs/development/python-modules/patiencediff/default.nix
index d75854a5cfebf..075259be8124f 100644
--- a/pkgs/development/python-modules/patiencediff/default.nix
+++ b/pkgs/development/python-modules/patiencediff/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "patiencediff";
-  version = "0.2.14";
+  version = "0.2.15";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -17,20 +18,14 @@ buildPythonPackage rec {
     owner = "breezy-team";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-KTOESjaj8fMxJZ7URqg6UMpiQppqZAlk4IPWEw4/Nvw=";
+    hash = "sha256-SFu1oN1yE9tKeBgWhgWjDpR31AptGrls0D5kKQed+HI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "patiencediff"
-  ];
+  pythonImportsCheck = [ "patiencediff" ];
 
   meta = with lib; {
     description = "C implementation of patiencediff algorithm for Python";
diff --git a/pkgs/development/python-modules/patool/default.nix b/pkgs/development/python-modules/patool/default.nix
index a81b253718702..fa0ae199bd749 100644
--- a/pkgs/development/python-modules/patool/default.nix
+++ b/pkgs/development/python-modules/patool/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, p7zip
-, cabextract
-, zip
-, lzip
-, zpaq
-, gnutar
-, unar  # Free alternative to unrar
-, gnugrep
-, diffutils
-, file
-, gzip
-, bzip2
-, xz
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  p7zip,
+  cabextract,
+  zip,
+  lzip,
+  zpaq,
+  gnutar,
+  unar, # Free alternative to unrar
+  gnugrep,
+  diffutils,
+  file,
+  gzip,
+  bzip2,
+  xz,
 }:
 
 let
@@ -60,9 +61,7 @@ buildPythonPackage rec {
     "test_unzip_file"
     "test_zip"
     "test_zip_file"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_ar"
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ "test_ar" ];
 
   meta = with lib; {
     description = "portable archive file manager";
diff --git a/pkgs/development/python-modules/patrowl4py/default.nix b/pkgs/development/python-modules/patrowl4py/default.nix
index e756dc838019c..ada7a272918fe 100644
--- a/pkgs/development/python-modules/patrowl4py/default.nix
+++ b/pkgs/development/python-modules/patrowl4py/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, attrs
-, buildPythonPackage
-, certifi
-, chardet
-, fetchFromGitHub
-, idna
-, iniconfig
-, more-itertools
-, packaging
-, pluggy
-, py
-, pyparsing
-, python-slugify
-, requests
-, six
-, text-unidecode
-, toml
-, urllib3
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  certifi,
+  chardet,
+  fetchFromGitHub,
+  idna,
+  iniconfig,
+  more-itertools,
+  packaging,
+  pluggy,
+  py,
+  pyparsing,
+  python-slugify,
+  requests,
+  six,
+  text-unidecode,
+  toml,
+  urllib3,
 }:
 
 buildPythonPackage rec {
@@ -53,9 +54,7 @@ buildPythonPackage rec {
   # Tests require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "patrowl4py"
-  ];
+  pythonImportsCheck = [ "patrowl4py" ];
 
   meta = with lib; {
     description = "Python API Client for PatrOwl";
diff --git a/pkgs/development/python-modules/patsy/default.nix b/pkgs/development/python-modules/patsy/default.nix
index 48797d05142b0..d5acbee88521b 100644
--- a/pkgs/development/python-modules/patsy/default.nix
+++ b/pkgs/development/python-modules/patsy/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, setuptools
-, six
-, numpy
-, scipy # optional, allows spline-related features (see patsy's docs)
-, pytestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools,
+  six,
+  numpy,
+  scipy, # optional, allows spline-related features (see patsy's docs)
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-lcbUenIiU1+Ev/f2PXMD8uKXdHpZjbic9cZ/DAx9LNs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     six
@@ -28,19 +27,14 @@ buildPythonPackage rec {
     scipy
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "patsy"
-  ];
+  pythonImportsCheck = [ "patsy" ];
 
   meta = {
-    description = "A Python package for describing statistical models";
+    description = "Python package for describing statistical models";
     homepage = "https://github.com/pydata/patsy";
     license = lib.licenses.bsd2;
     maintainers = with lib.maintainers; [ ilya-kolpakov ];
   };
 }
-
diff --git a/pkgs/development/python-modules/paver/default.nix b/pkgs/development/python-modules/paver/default.nix
index 525d28d34232e..90b5b440d0d7f 100644
--- a/pkgs/development/python-modules/paver/default.nix
+++ b/pkgs/development/python-modules/paver/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, cogapp
-, fetchPypi
-, mock
-, nose
-, pytestCheckHook
-, pythonOlder
-, six
-, virtualenv
+{
+  lib,
+  buildPythonPackage,
+  cogapp,
+  fetchPypi,
+  mock,
+  setuptools,
+  pytestCheckHook,
+  pythonOlder,
+  six,
+  virtualenv,
 }:
 
 buildPythonPackage rec {
   pname = "paver";
   version = "1.3.4";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -23,32 +24,31 @@ buildPythonPackage rec {
     hash = "sha256-0+ZJiIFIWrdQ7+QMUniYKpNDvGJ+E3sRrc7WJ3GTCMc=";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ six ];
 
   checkInputs = [
     cogapp
     mock
-    nose
     pytestCheckHook
     virtualenv
   ];
 
-  pythonImportsCheck = [
-    "paver"
-  ];
+  pythonImportsCheck = [ "paver" ];
 
   disabledTestPaths = [
-    # Test depends on distutils
+    # Tests depend on distutils
     "paver/tests/test_setuputils.py"
+    "paver/tests/test_doctools.py"
+    "paver/tests/test_tasks.py"
   ];
 
-  meta = with lib; {
-    description = "A Python-based build/distribution/deployment scripting tool";
+  meta = {
+    description = "Python-based build/distribution/deployment scripting tool";
     mainProgram = "paver";
     homepage = "https://github.com/paver/paver";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ lovek323 ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ lovek323 ];
   };
 }
diff --git a/pkgs/development/python-modules/paypal-checkout-serversdk/default.nix b/pkgs/development/python-modules/paypal-checkout-serversdk/default.nix
index 711056008c9b5..d2792aaacd019 100644
--- a/pkgs/development/python-modules/paypal-checkout-serversdk/default.nix
+++ b/pkgs/development/python-modules/paypal-checkout-serversdk/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# propagates
-, paypalhttp
+  # propagates
+  paypalhttp,
 
-# tersts
-, pytestCheckHook
-, responses
+  # tersts
+  pytestCheckHook,
+  responses,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     rm -rf sample
   '';
 
-  propagatedBuildInputs = [
-    paypalhttp
-  ];
+  propagatedBuildInputs = [ paypalhttp ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/paypalhttp/default.nix b/pkgs/development/python-modules/paypalhttp/default.nix
index 25c6aa1ba878d..4a0c7115c74ec 100644
--- a/pkgs/development/python-modules/paypalhttp/default.nix
+++ b/pkgs/development/python-modules/paypalhttp/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# propagates
-, pyopenssl
-, requests
-, six
-
-# tests
-, pytestCheckHook
-, responses
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # propagates
+  pyopenssl,
+  requests,
+  six,
+
+  # tests
+  pytestCheckHook,
+  responses,
 }:
 
 buildPythonPackage rec {
@@ -24,6 +25,11 @@ buildPythonPackage rec {
     hash = "sha256-3ihcpYtpcejPkiyf4g4jveyNU6flQB2sv9EZ5Pd7tUc=";
   };
 
+  postPatch = ''
+    substituteInPlace tests/http_response_test.py \
+      --replace-fail assertEquals assertEqual
+  '';
+
   propagatedBuildInputs = [
     requests
     six
diff --git a/pkgs/development/python-modules/paypalrestsdk/default.nix b/pkgs/development/python-modules/paypalrestsdk/default.nix
index ed6e60a19044d..ed728e0fe1e8b 100644
--- a/pkgs/development/python-modules/paypalrestsdk/default.nix
+++ b/pkgs/development/python-modules/paypalrestsdk/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pyopenssl
-, pythonOlder
-, requests
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pyopenssl,
+  pythonOlder,
+  requests,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-2sI2SSqawSYKdgAUouVqs4sJ2BQylbXollRTWbYf7dY=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     pyopenssl
@@ -33,9 +32,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "paypalrestsdk"
-  ];
+  pythonImportsCheck = [ "paypalrestsdk" ];
 
   meta = with lib; {
     description = "Python APIs to create, process and manage payment";
@@ -45,6 +42,6 @@ buildPythonPackage rec {
       fullName = "PayPal SDK License";
       url = "https://github.com/paypal/PayPal-Python-SDK/blob/master/LICENSE";
     };
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pbar/default.nix b/pkgs/development/python-modules/pbar/default.nix
new file mode 100644
index 0000000000000..3ae769d74e824
--- /dev/null
+++ b/pkgs/development/python-modules/pbar/default.nix
@@ -0,0 +1,29 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "pbar";
+  version = "2.2.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "darvil82";
+    repo = "PBar";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-FsEjfusk8isOD52xkjndGQdVC8Vc7N3spLLWQTi3Svc=";
+  };
+
+  build-system = [ setuptools ];
+  pythonImportsCheck = [ "pbar" ];
+
+  meta = with lib; {
+    description = "Display customizable progress bars on the terminal easily";
+    license = licenses.mit;
+    homepage = "https://darvil82.github.io/PBar";
+    maintainers = with maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/pbkdf2/default.nix b/pkgs/development/python-modules/pbkdf2/default.nix
index 9068b6887b47a..138a9489ac327 100644
--- a/pkgs/development/python-modules/pbkdf2/default.nix
+++ b/pkgs/development/python-modules/pbkdf2/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "pbkdf2";
diff --git a/pkgs/development/python-modules/pbr/default.nix b/pkgs/development/python-modules/pbr/default.nix
index 7889471ebf293..1c215cb307ca1 100644
--- a/pkgs/development/python-modules/pbr/default.nix
+++ b/pkgs/development/python-modules/pbr/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, callPackage
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  callPackage,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
     hash = "sha256-0TdxIqWgDi+UDuSCmZUY7+FtdF1COmcMJ3c9+8PJp9k=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # check in passthru.tests.pytest to escape infinite recursion with fixtures
   doCheck = false;
diff --git a/pkgs/development/python-modules/pbr/tests.nix b/pkgs/development/python-modules/pbr/tests.nix
index 05266a0eb7dfb..70e768814db95 100644
--- a/pkgs/development/python-modules/pbr/tests.nix
+++ b/pkgs/development/python-modules/pbr/tests.nix
@@ -1,13 +1,14 @@
-{ buildPythonPackage
-, build
-, git
-, gnupg
-, pbr
-, sphinx
-, stestr
-, testresources
-, testscenarios
-, virtualenv
+{
+  buildPythonPackage,
+  build,
+  git,
+  gnupg,
+  pbr,
+  sphinx,
+  stestr,
+  testresources,
+  testscenarios,
+  virtualenv,
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/pbs-installer/default.nix b/pkgs/development/python-modules/pbs-installer/default.nix
index ab892b5260e77..8404c8bc0b902 100644
--- a/pkgs/development/python-modules/pbs-installer/default.nix
+++ b/pkgs/development/python-modules/pbs-installer/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pdm-backend
-, httpx
-, zstandard
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pdm-backend,
+  httpx,
+  zstandard,
 }:
 
 buildPythonPackage rec {
   pname = "pbs-installer";
-  version = "2024.4.1";
+  version = "2024.09.09";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,22 +18,16 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "frostming";
     repo = "pbs-installer";
-    rev = version;
-    hash = "sha256-0LuajPD/sM0LoyRoCkGJ9medUcWNEPqvY76GgK2rIac=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-c9jd85CLQPrwA1HmsedGhbBoQIuEWiPsZN0Srq+DyVE=";
   };
 
-  build-system = [
-    pdm-backend
-  ];
+  build-system = [ pdm-backend ];
 
   optional-dependencies = {
     all = optional-dependencies.install ++ optional-dependencies.download;
-    download = [
-      httpx
-    ];
-    install = [
-      zstandard
-    ];
+    download = [ httpx ];
+    install = [ zstandard ];
   };
 
   pythonImportsCheck = [ "pbs_installer" ];
@@ -45,6 +40,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/frostming/pbs-installer";
     changelog = "https://github.com/frostming/pbs-installer/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pbxproj/default.nix b/pkgs/development/python-modules/pbxproj/default.nix
new file mode 100644
index 0000000000000..a9635b8737298
--- /dev/null
+++ b/pkgs/development/python-modules/pbxproj/default.nix
@@ -0,0 +1,43 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  docopt,
+  openstep-parser,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "pbxproj";
+  version = "4.2.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "kronenthaler";
+    repo = "mod-pbxproj";
+    rev = "refs/tags/${version}";
+    hash = "sha256-srtS6ggVnpffEa57LL2OzfC2mVd9uLxUL6LzxqPVLdo=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    docopt
+    openstep-parser
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [
+    "pbxproj"
+    "openstep_parser"
+  ];
+
+  meta = {
+    description = "Python module to manipulate XCode projects ";
+    homepage = "https://github.com/kronenthaler/mod-pbxproj";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ ilaumjd ];
+  };
+}
diff --git a/pkgs/development/python-modules/pc-ble-driver-py/default.nix b/pkgs/development/python-modules/pc-ble-driver-py/default.nix
index 11b442218809d..7e56799e9e293 100644
--- a/pkgs/development/python-modules/pc-ble-driver-py/default.nix
+++ b/pkgs/development/python-modules/pc-ble-driver-py/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, boost
-, buildPythonPackage
-, cmake
-, cryptography
-, fetchFromGitHub
-, git
-, pc-ble-driver
-, pythonAtLeast
-, pythonOlder
-, scikit-build
-, setuptools
-, swig
-, wrapt
+{
+  lib,
+  boost,
+  buildPythonPackage,
+  cmake,
+  cryptography,
+  fetchFromGitHub,
+  git,
+  pc-ble-driver,
+  pythonOlder,
+  scikit-build,
+  setuptools,
+  swig,
+  wrapt,
 }:
 
 buildPythonPackage rec {
@@ -51,9 +51,7 @@ buildPythonPackage rec {
   # doCheck tries to write to the global python directory to install things
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pc_ble_driver_py"
-  ];
+  pythonImportsCheck = [ "pc_ble_driver_py" ];
 
   meta = with lib; {
     description = "Bluetooth Low Energy nRF5 SoftDevice serialization";
diff --git a/pkgs/development/python-modules/pcapy-ng/default.nix b/pkgs/development/python-modules/pcapy-ng/default.nix
index da490bd304ebc..97313c157072e 100644
--- a/pkgs/development/python-modules/pcapy-ng/default.nix
+++ b/pkgs/development/python-modules/pcapy-ng/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, libpcap
-, pkgconfig
-, pytestCheckHook
-, python
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+  libpcap,
+  pkgconfig,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,27 +28,19 @@ buildPythonPackage rec {
     pkgconfig
   ];
 
-  buildInputs = [
-    libpcap
-  ];
+  buildInputs = [ libpcap ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     cd tests
   '';
 
-  pythonImportsCheck = [
-    "pcapy"
-  ];
+  pythonImportsCheck = [ "pcapy" ];
 
   doCheck = pythonOlder "3.10";
 
-  pytestFlagsArray = [
-    "pcapytests.py"
-  ];
+  pytestFlagsArray = [ "pcapytests.py" ];
 
   meta = with lib; {
     description = "Module to interface with the libpcap packet capture library";
diff --git a/pkgs/development/python-modules/pcbnewtransition/default.nix b/pkgs/development/python-modules/pcbnewtransition/default.nix
index 956be1966b66f..79e2ef3d1624a 100644
--- a/pkgs/development/python-modules/pcbnewtransition/default.nix
+++ b/pkgs/development/python-modules/pcbnewtransition/default.nix
@@ -1,13 +1,14 @@
-{ pythonOlder
-, buildPythonPackage
-, fetchPypi
-, lib
-, kicad
-, versioneer
+{
+  pythonOlder,
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  kicad,
+  versioneer,
 }:
 buildPythonPackage rec {
   pname = "pcbnewtransition";
-  version = "0.4.1";
+  version = "0.4.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -15,26 +16,23 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "pcbnewTransition";
     inherit version;
-    hash = "sha256-+mRExuDuEYxSSlrkEjSyPK+RRJZo+YJH7WnUVfjblRQ=";
+    hash = "sha256-fFOzL80m92PcF9SC6NZ69OUuEJn1sl+mWVFjRorhS4M=";
   };
 
-  propagatedBuildInputs = [
-    kicad
-  ];
+  propagatedBuildInputs = [ kicad ];
 
-  nativeBuildInputs = [
-    versioneer
-  ];
+  nativeBuildInputs = [ versioneer ];
 
-  pythonImportsCheck = [
-    "pcbnewTransition"
-  ];
+  pythonImportsCheck = [ "pcbnewTransition" ];
 
   meta = with lib; {
     description = "Library that allows you to support both, KiCad 5, 6 and 7 in your plugins";
     homepage = "https://github.com/yaqwsx/pcbnewTransition";
     changelog = "https://github.com/yaqwsx/pcbnewTransition/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ jfly matusf ];
+    maintainers = with maintainers; [
+      jfly
+      matusf
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pcffont/default.nix b/pkgs/development/python-modules/pcffont/default.nix
new file mode 100644
index 0000000000000..db83e7f9c5e2c
--- /dev/null
+++ b/pkgs/development/python-modules/pcffont/default.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytestCheckHook,
+  nix-update-script,
+  hatchling,
+  bdffont,
+}:
+
+buildPythonPackage rec {
+  pname = "pcffont";
+  version = "0.0.15";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchPypi {
+    pname = "pcffont";
+    inherit version;
+    hash = "sha256-sJWopdjZ0vM0BrdBgc6XZsDGFN7/NCCBqrCyYCRhT3M=";
+  };
+
+  build-system = [ hatchling ];
+
+  dependencies = [ bdffont ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "pcffont" ];
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = {
+    homepage = "https://github.com/TakWolf/pcffont";
+    description = "A library for manipulating Portable Compiled Format (PCF) Fonts";
+    platforms = lib.platforms.all;
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [
+      TakWolf
+      h7x4
+    ];
+  };
+}
diff --git a/pkgs/development/python-modules/pcodedmp/default.nix b/pkgs/development/python-modules/pcodedmp/default.nix
index 9c9ae3f6f7cb0..eef04412632a0 100644
--- a/pkgs/development/python-modules/pcodedmp/default.nix
+++ b/pkgs/development/python-modules/pcodedmp/default.nix
@@ -1,8 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +28,7 @@ buildPythonPackage rec {
   # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pcodedmp"
-  ];
+  pythonImportsCheck = [ "pcodedmp" ];
 
   meta = with lib; {
     description = "Python VBA p-code disassembler";
diff --git a/pkgs/development/python-modules/pcpp/default.nix b/pkgs/development/python-modules/pcpp/default.nix
index 683c113327403..0fb4547ffd01e 100644
--- a/pkgs/development/python-modules/pcpp/default.nix
+++ b/pkgs/development/python-modules/pcpp/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
 }:
 
 buildPythonPackage rec {
@@ -12,15 +13,15 @@ buildPythonPackage rec {
     owner = "ned14";
     repo = "pcpp";
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-Fs+CMV4eRKcB+KdV93ncgcqaMnO5etnMY/ivmSJh3Wc=";
+    hash = "sha256-Fs+CMV4eRKcB+KdV93ncgcqaMnO5etnMY/ivmSJh3Wc=";
     fetchSubmodules = true;
   };
 
   meta = with lib; {
     homepage = "https://github.com/ned14/pcpp";
-    description = "A C99 preprocessor written in pure Python";
+    description = "C99 preprocessor written in pure Python";
     mainProgram = "pcpp";
     license = licenses.bsd0;
     maintainers = with maintainers; [ rakesh4g ];
- };
+  };
 }
diff --git a/pkgs/development/python-modules/pdb2pqr/default.nix b/pkgs/development/python-modules/pdb2pqr/default.nix
index dc44880b138ed..e082eab102bae 100644
--- a/pkgs/development/python-modules/pdb2pqr/default.nix
+++ b/pkgs/development/python-modules/pdb2pqr/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pythonRelaxDepsHook
-, mmcif-pdbx
-, numpy
-, propka
-, requests
-, docutils
-, pytestCheckHook
-, pandas
-, testfixtures
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  mmcif-pdbx,
+  numpy,
+  propka,
+  requests,
+  docutils,
+  pytestCheckHook,
+  pandas,
+  testfixtures,
 }:
 
 buildPythonPackage rec {
@@ -25,13 +25,8 @@ buildPythonPackage rec {
     hash = "sha256-He301TJ1bzWub0DZ6Ro/Xc+JMtJBbyygVpWjPY6RMbA=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
-  pythonRelaxDeps = [
-    "docutils"
-  ];
+  pythonRelaxDeps = [ "docutils" ];
 
   propagatedBuildInputs = [
     mmcif-pdbx
@@ -59,9 +54,7 @@ buildPythonPackage rec {
     "test_basic"
   ];
 
-  pythonImportsCheck = [
-    "pdb2pqr"
-  ];
+  pythonImportsCheck = [ "pdb2pqr" ];
 
   meta = with lib; {
     description = "Software for determining titration states, adding missing atoms, and assigning charges/radii to biomolecules";
diff --git a/pkgs/development/python-modules/pdbfixer/default.nix b/pkgs/development/python-modules/pdbfixer/default.nix
index 9b0f0bfe86aa5..0042364a3218f 100644
--- a/pkgs/development/python-modules/pdbfixer/default.nix
+++ b/pkgs/development/python-modules/pdbfixer/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, numpy
-, openmm
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  numpy,
+  openmm,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     openmm
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export PATH=$out/bin:$PATH
diff --git a/pkgs/development/python-modules/pdf2docx/default.nix b/pkgs/development/python-modules/pdf2docx/default.nix
index 88372271aa529..12d347227a9be 100644
--- a/pkgs/development/python-modules/pdf2docx/default.nix
+++ b/pkgs/development/python-modules/pdf2docx/default.nix
@@ -1,19 +1,19 @@
-{ stdenv
-, lib
-, fetchFromGitHub
-, python
-, buildPythonPackage
-, pythonRelaxDepsHook
-, imagemagick
-, pip
-, pytestCheckHook
-, pymupdf
-, fire
-, fonttools
-, numpy
-, opencv4
-, tkinter
-, python-docx
+{
+  stdenv,
+  lib,
+  fetchFromGitHub,
+  python,
+  buildPythonPackage,
+  imagemagick,
+  pip,
+  pytestCheckHook,
+  pymupdf,
+  fire,
+  fonttools,
+  numpy,
+  opencv4,
+  tkinter,
+  python-docx,
 }:
 let
   version = "0.5.8";
@@ -32,7 +32,6 @@ buildPythonPackage {
 
   nativeBuildInputs = [
     pip
-    pythonRelaxDepsHook
     imagemagick
   ];
 
@@ -50,7 +49,7 @@ buildPythonPackage {
     python-docx
   ];
 
-  postInstall = lib.optionalString stdenv.isLinux ''
+  postInstall = lib.optionalString stdenv.hostPlatform.isLinux ''
     # on linux the icon file can only be xbm format
     convert $out/${python.sitePackages}/pdf2docx/gui/icon.ico \
       $out/${python.sitePackages}/pdf2docx/gui/icon.xbm
@@ -61,7 +60,10 @@ buildPythonPackage {
 
   nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [ "-v" "./test/test.py::TestConversion" ];
+  pytestFlagsArray = [
+    "-v"
+    "./test/test.py::TestConversion"
+  ];
 
   # Test fails due to "RuntimeError: cannot find builtin font with name 'Arial'":
   disabledTests = [ "test_unnamed_fonts" ];
diff --git a/pkgs/development/python-modules/pdf2image/default.nix b/pkgs/development/python-modules/pdf2image/default.nix
index 009dad8b08195..d7983145cd349 100644
--- a/pkgs/development/python-modules/pdf2image/default.nix
+++ b/pkgs/development/python-modules/pdf2image/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pillow
-, poppler_utils
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pillow,
+  poppler_utils,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,9 @@ buildPythonPackage rec {
     sed -i '0,/poppler_path=None/s||poppler_path="${poppler_utils}/bin"|' pdf2image/pdf2image.py
   '';
 
-  propagatedBuildInputs = [
-    pillow
-  ];
+  propagatedBuildInputs = [ pillow ];
 
-  pythonImportsCheck = [
-    "pdf2image"
-  ];
+  pythonImportsCheck = [ "pdf2image" ];
 
   meta = with lib; {
     description = "Module that wraps the pdftoppm utility to convert PDF to PIL Image object";
diff --git a/pkgs/development/python-modules/pdfkit/default.nix b/pkgs/development/python-modules/pdfkit/default.nix
index e055ed9718420..2ed46f02c65d4 100644
--- a/pkgs/development/python-modules/pdfkit/default.nix
+++ b/pkgs/development/python-modules/pdfkit/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -21,5 +22,4 @@ buildPythonPackage rec {
     description = "Wkhtmltopdf python wrapper to convert html to pdf using the webkit rendering engine and qt";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/pdfminer-six/default.nix b/pkgs/development/python-modules/pdfminer-six/default.nix
index f203850469cf2..56ff16b94fe83 100644
--- a/pkgs/development/python-modules/pdfminer-six/default.nix
+++ b/pkgs/development/python-modules/pdfminer-six/default.nix
@@ -1,49 +1,50 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, importlib-metadata
-, isPy3k
-, cryptography
-, charset-normalizer
-, pythonOlder
-, typing-extensions
-, pytestCheckHook
-, setuptools
-, substituteAll
-, ocrmypdf
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  cryptography,
+  charset-normalizer,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools,
+  substituteAll,
+  ocrmypdf,
 }:
 
 buildPythonPackage rec {
   pname = "pdfminer-six";
-  version = "20231228";
+  version = "20240706";
   pyproject = true;
 
-  disabled = !isPy3k;
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "pdfminer";
     repo = "pdfminer.six";
-    rev = version;
-    hash = "sha256-LXPECQQojD3IY9zRkrDBufy4A8XUuYiRpryqUx/I3qo=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-aY7GQADRxeiclr6/G3RRgrPcl8rGiC85JYEIjIa+vG0=";
   };
 
   patches = [
+    # https://github.com/pdfminer/pdfminer.six/pull/1027
+    (fetchpatch2 {
+      name = "fix-dereference-MediaBox.patch";
+      url = "https://github.com/pdfminer/pdfminer.six/pull/1027/commits/ad101c152c71431a21bfa5a8dbe33b3ba385ceec.patch?full_index=1";
+      excludes = [ "CHANGELOG.md" ];
+      hash = "sha256-fsSXvN92MVtNFpAst0ctvGrbxVvoe4Nyz4wMZqJ1aw8=";
+    })
     (substituteAll {
       src = ./disable-setuptools-git-versioning.patch;
       inherit version;
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     charset-normalizer
     cryptography
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-    typing-extensions
   ];
 
   postInstall = ''
@@ -57,8 +58,12 @@ buildPythonPackage rec {
     "pdfminer.high_level"
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  disabledTests = [
+    # The binary file samples/contrib/issue-1004-indirect-mediabox.pdf is
+    # stripped from fix-dereference-MediaBox.patch.
+    "test_contrib_issue_1004_mediabox"
   ];
 
   passthru = {
@@ -68,6 +73,7 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
+    changelog = "https://github.com/pdfminer/pdfminer.six/blob/${src.rev}/CHANGELOG.md";
     description = "PDF parser and analyzer";
     homepage = "https://github.com/pdfminer/pdfminer.six";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pdfminer-six/disable-setuptools-git-versioning.patch b/pkgs/development/python-modules/pdfminer-six/disable-setuptools-git-versioning.patch
index 2dec0e147b9f3..809cc024ff2e1 100644
--- a/pkgs/development/python-modules/pdfminer-six/disable-setuptools-git-versioning.patch
+++ b/pkgs/development/python-modules/pdfminer-six/disable-setuptools-git-versioning.patch
@@ -1,13 +1,15 @@
+diff --git a/setup.py b/setup.py
+index 42764e2..e7b93d3 100644
 --- a/setup.py
 +++ b/setup.py
-@@ -7,10 +7,7 @@
+@@ -19,10 +19,7 @@ if sys.version_info < (3, 12):
  
  setup(
      name="pdfminer.six",
 -    setuptools_git_versioning={
 -        "enabled": True,
 -    },
--    setup_requires=["setuptools-git-versioning<2"],
+-    setup_requires=["setuptools-git-versioning<3"],
 +    version="@version@",
      packages=["pdfminer"],
      package_data={"pdfminer": ["cmap/*.pickle.gz", "py.typed"]},
diff --git a/pkgs/development/python-modules/pdfplumber/default.nix b/pkgs/development/python-modules/pdfplumber/default.nix
index 80e937d4c48cc..47e0dd303d462 100644
--- a/pkgs/development/python-modules/pdfplumber/default.nix
+++ b/pkgs/development/python-modules/pdfplumber/default.nix
@@ -1,22 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, jupyterlab
-, nbexec
-, pandas
-, pandas-stubs
-, pdfminer-six
-, pillow
-, pytest-parallel
-, pytestCheckHook
-, pythonOlder
-, types-pillow
-, wand
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ghostscript,
+  jupyterlab,
+  nbexec,
+  pandas,
+  pandas-stubs,
+  pdfminer-six,
+  pillow,
+  pytest-parallel,
+  pytestCheckHook,
+  pythonOlder,
+  types-pillow,
+  wand,
 }:
 
 buildPythonPackage rec {
   pname = "pdfplumber";
-  version = "0.11.0";
+  version = "0.11.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -25,7 +27,7 @@ buildPythonPackage rec {
     owner = "jsvine";
     repo = "pdfplumber";
     rev = "refs/tags/v${version}";
-    hash = "sha256-sjiCxE2WcvBASANCeookNn1n9M+mY0/8QGOCen+pzqM=";
+    hash = "sha256-62S5DMQwSgehl0BcjeRaTocko8xg72pQQ5YLoL3+QbU=";
   };
 
   postPatch = ''
@@ -44,6 +46,7 @@ buildPythonPackage rec {
   '';
 
   nativeCheckInputs = [
+    ghostscript
     jupyterlab
     nbexec
     pandas
@@ -53,9 +56,7 @@ buildPythonPackage rec {
     types-pillow
   ];
 
-  pythonImportsCheck = [
-    "pdfplumber"
-  ];
+  pythonImportsCheck = [ "pdfplumber" ];
 
   disabledTests = [
     # flaky
@@ -65,8 +66,8 @@ buildPythonPackage rec {
   disabledTestPaths = [
     # Tests requires pypdfium2
     "tests/test_display.py"
-    # Tests require Ghostscript
-    "tests/test_repair.py"
+    # Tests requires pypdfium2
+    "tests/test_issues.py"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/pdfrw/default.nix b/pkgs/development/python-modules/pdfrw/default.nix
index 8eccbfbb7f1f7..d5c889185d0fe 100644
--- a/pkgs/development/python-modules/pdfrw/default.nix
+++ b/pkgs/development/python-modules/pdfrw/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "pdfrw";
@@ -14,9 +18,9 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "pdfrw is a pure Python library that reads and writes PDFs.";
+    description = "pdfrw is a pure Python library that reads and writes PDFs";
     homepage = "https://github.com/pmaupin/pdfrw";
     maintainers = with maintainers; [ teto ];
-    license =  licenses.mit;
+    license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/pdfrw2/default.nix b/pkgs/development/python-modules/pdfrw2/default.nix
index 6ed93640af7e6..55373aaca9062 100644
--- a/pkgs/development/python-modules/pdfrw2/default.nix
+++ b/pkgs/development/python-modules/pdfrw2/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pillow
-, pycryptodome
-, reportlab
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pillow,
+  pycryptodome,
+  reportlab,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-5qnMq4Pnaaeov+Lb3fD0ndfr5SAy6SlXTwG7v6IZce0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     pillow
@@ -27,7 +26,7 @@ buildPythonPackage rec {
     pycryptodome
   ];
 
-  pythonImportCheck = [ "pdfrw" ];
+  pythonImportsCheck = [ "pdfrw" ];
 
   meta = with lib; {
     description = "Pure Python library that reads and writes PDFs";
diff --git a/pkgs/development/python-modules/pdftotext/default.nix b/pkgs/development/python-modules/pdftotext/default.nix
index 9d3971ce323df..f16fd012e72c4 100644
--- a/pkgs/development/python-modules/pdftotext/default.nix
+++ b/pkgs/development/python-modules/pdftotext/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, poppler }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poppler,
+}:
 
 buildPythonPackage rec {
   pname = "pdftotext";
diff --git a/pkgs/development/python-modules/pdfx/default.nix b/pkgs/development/python-modules/pdfx/default.nix
index ba9a0f79bf2aa..c8759c4601fea 100644
--- a/pkgs/development/python-modules/pdfx/default.nix
+++ b/pkgs/development/python-modules/pdfx/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pdfminer-six, chardet, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pdfminer-six,
+  chardet,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "pdfx";
@@ -18,7 +25,10 @@ buildPythonPackage rec {
       --replace "pdfminer.six==20201018" "pdfminer.six"
   '';
 
-  propagatedBuildInputs = [ pdfminer-six chardet ];
+  propagatedBuildInputs = [
+    pdfminer-six
+    chardet
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
@@ -27,6 +37,6 @@ buildPythonPackage rec {
     description = "Extract references (pdf, url, doi, arxiv) and metadata from a PDF";
     mainProgram = "pdfx";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pdm-backend/default.nix b/pkgs/development/python-modules/pdm-backend/default.nix
index 0e1cc04f920b3..64ad22dd1651e 100644
--- a/pkgs/development/python-modules/pdm-backend/default.nix
+++ b/pkgs/development/python-modules/pdm-backend/default.nix
@@ -1,49 +1,52 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-
-# propagates
-, importlib-metadata
-
-# tests
-, editables
-, git
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # propagates
+  importlib-metadata,
+
+  # tests
+  editables,
+  git,
+  mercurial,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pdm-backend";
-  version = "2.1.8";
-  format = "pyproject";
+  version = "2.3.3";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pdm-project";
     repo = "pdm-backend";
     rev = "refs/tags/${version}";
-    hash = "sha256-d8i+FvxNFPM18W7NmOwh9bqZnMUenF7eCPdcCw4BT7s=";
+    hash = "sha256-gM8Sx6nMiq84e3sLJn35shF2jy6Ce1qPlERi2XpS89k=";
   };
 
   env.PDM_BUILD_SCM_VERSION = version;
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ];
+  dependencies = lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
-  pythonImportsCheck = [
-    "pdm.backend"
-  ];
+  pythonImportsCheck = [ "pdm.backend" ];
 
   nativeCheckInputs = [
     editables
     git
+    mercurial
     pytestCheckHook
     setuptools
   ];
 
   preCheck = ''
     unset PDM_BUILD_SCM_VERSION
+
+    # tests require a configured git identity
+    export HOME=$TMPDIR
+    git config --global user.email nixbld@localhost
   '';
 
   setupHook = ./setup-hook.sh;
@@ -51,7 +54,7 @@ buildPythonPackage rec {
   meta = with lib; {
     homepage = "https://github.com/pdm-project/pdm-backend";
     changelog = "https://github.com/pdm-project/pdm-backend/releases/tag/${version}";
-    description = "Yet another PEP 517 backend.";
+    description = "Yet another PEP 517 backend";
     license = licenses.mit;
     maintainers = with maintainers; [ hexa ];
   };
diff --git a/pkgs/development/python-modules/pdm-build-locked/default.nix b/pkgs/development/python-modules/pdm-build-locked/default.nix
new file mode 100644
index 0000000000000..9c8026d32d215
--- /dev/null
+++ b/pkgs/development/python-modules/pdm-build-locked/default.nix
@@ -0,0 +1,57 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pdm-backend,
+  tomli,
+  build,
+  hatchling,
+  pkginfo,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "pdm-build-locked";
+  version = "0.3.3";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "pdm-project";
+    repo = "pdm-build-locked";
+    rev = "refs/tags/${version}";
+    hash = "sha256-tgLC1tUgmyX7QvlLpNb/SMQRTDZ+DNFV3o0JELAZEeo=";
+  };
+
+  postPatch = ''
+    substituteInPlace tests/conftest.py \
+      --replace-fail '"pdm.pytest"' ""
+    sed -i "/addopts/d" pyproject.toml
+  '';
+
+  build-system = [ pdm-backend ];
+
+  dependencies = lib.optionals (pythonOlder "3.11") [ tomli ];
+
+  pythonImportsCheck = [ "pdm_build_locked" ];
+
+  nativeCheckInputs = [
+    build
+    hatchling
+    pkginfo
+    pytestCheckHook
+  ];
+
+  disabledTestPaths = [
+    # circular import of pdm
+    "tests/unit/test_build_command.py"
+  ];
+
+  meta = {
+    description = "Pdm-build-locked is a pdm plugin to publish locked dependencies as optional-dependencies";
+    homepage = "https://github.com/pdm-project/pdm-build-locked";
+    changelog = "https://github.com/pdm-project/pdm-build-locked/releases/tag/${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
+  };
+}
diff --git a/pkgs/development/python-modules/pdm-pep517/default.nix b/pkgs/development/python-modules/pdm-pep517/default.nix
index be5573a0055cd..f914b5b86ed91 100644
--- a/pkgs/development/python-modules/pdm-pep517/default.nix
+++ b/pkgs/development/python-modules/pdm-pep517/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, git
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  git,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -32,7 +32,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/pdm-project/pdm-pep517";
-    description = "Yet another PEP 517 backend.";
+    description = "Yet another PEP 517 backend";
     license = licenses.mit;
     maintainers = with maintainers; [ cpcloud ];
   };
diff --git a/pkgs/development/python-modules/pdoc-pyo3-sample-library/default.nix b/pkgs/development/python-modules/pdoc-pyo3-sample-library/default.nix
index 37fd1d1378dc0..9e74fa519175c 100644
--- a/pkgs/development/python-modules/pdoc-pyo3-sample-library/default.nix
+++ b/pkgs/development/python-modules/pdoc-pyo3-sample-library/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, rustPlatform
-, cargo
-, rustc
-, libiconv
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  rustPlatform,
+  cargo,
+  rustc,
+  libiconv,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,7 @@ buildPythonPackage rec {
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
-    inherit pname version src;
+    inherit src;
     hash = "sha256-KrEBr998AV/bKcIoq0tX72/QwPD9bQplrS0Zw+JiSMQ=";
   };
 
@@ -31,9 +32,7 @@ buildPythonPackage rec {
     rustc
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [
-    libiconv
-  ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
   pythonImportsCheck = [ "pdoc_pyo3_sample_library" ];
 
@@ -41,7 +40,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = {
-    description = "A sample PyO3 library used in pdoc tests";
+    description = "Sample PyO3 library used in pdoc tests";
     homepage = "https://github.com/mitmproxy/pdoc-pyo3-sample-library";
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.pbsds ];
diff --git a/pkgs/development/python-modules/pdoc/default.nix b/pkgs/development/python-modules/pdoc/default.nix
index c6ebbc72f5ce1..f979e9b7510b0 100644
--- a/pkgs/development/python-modules/pdoc/default.nix
+++ b/pkgs/development/python-modules/pdoc/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, jinja2
-, pdoc-pyo3-sample-library
-, pygments
-, markupsafe
-, astunparse
-, pytestCheckHook
-, hypothesis
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  jinja2,
+  pdoc-pyo3-sample-library,
+  pygments,
+  markupsafe,
+  astunparse,
+  pytestCheckHook,
+  hypothesis,
 }:
 
 buildPythonPackage rec {
   pname = "pdoc";
-  version = "14.4.0";
+  version = "14.7.0";
   disabled = pythonOlder "3.8";
 
   pyproject = true;
@@ -23,12 +24,10 @@ buildPythonPackage rec {
     owner = "mitmproxy";
     repo = "pdoc";
     rev = "v${version}";
-    hash = "sha256-2k9uIK6TvoGtVqnh97g9f5QvjhyZlznRvYdw5sPaeVE=";
+    hash = "sha256-U6gLEuyKvGGP5yKXb+bWDGJqmHTdPYLLPgHLVySAJ6I=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   dependencies = [
     jinja2
diff --git a/pkgs/development/python-modules/pdoc3/default.nix b/pkgs/development/python-modules/pdoc3/default.nix
index 72e2046105a97..72604e5af4922 100644
--- a/pkgs/development/python-modules/pdoc3/default.nix
+++ b/pkgs/development/python-modules/pdoc3/default.nix
@@ -1,56 +1,48 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, pythonOlder
-, mako
-, markdown
-, setuptools-git
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  mako,
+  markdown,
+  setuptools-git,
+  setuptools-scm,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pdoc3";
-  version = "0.10.0";
-  format = "setuptools";
-  disabled = pythonOlder "3.7";
+  version = "0.11.1";
+  pyproject = true;
+  disabled = pythonOlder "3.9";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-XyLnvLlpAGc44apCGcdaMvNMLWLUbcnS+y0+CwKH5Lc=";
+  src = fetchFromGitHub {
+    owner = "pdoc3";
+    repo = "pdoc";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Opj1fU1eZvqsYJGCBliVwugxFV4H1hzOOTkjs4fOEWA=";
   };
 
-  patches = [
-    (fetchpatch {
-      # test_Class_params fails in 0.10.0
-      # https://github.com/pdoc3/pdoc/issues/355
-      url = "https://github.com/pdoc3/pdoc/commit/4aa70de2221a34a3003a7e5f52a9b91965f0e359.patch";
-      hash = "sha256-W7Dy516cA+Oj0ZCTQBB6MJ+fCTBeLRp+aW8nANdxSx8=";
-    })
-    # https://github.com/pdoc3/pdoc/issues/400
-    (fetchpatch {
-      name = "fix-test-for-python310.patch";
-      url = "https://github.com/pdoc3/pdoc/commit/80af5d40d3ca39e2701c44941c1003ae6a280799.patch";
-      hash = "sha256-69Cn+BY7feisSHugONIF/PRgEDEfnvnS/RBHWv1P8/w=";
-      excludes = [".github/workflows/ci.yml"];
-    })
-  ];
-
-  nativeBuildInputs = [
+  build-system = [
     setuptools-git
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     mako
     markdown
   ];
 
-  meta = with lib; {
-    description = "Auto-generate API documentation for Python projects.";
+  pythonImportsCheck = [ "pdoc" ];
+
+  nativeCheckInputs = [ unittestCheckHook ];
+
+  meta = {
+    changelog = "https://github.com/pdoc3/pdoc/blob/${src.rev}/CHANGELOG";
+    description = "Auto-generate API documentation for Python projects";
     homepage = "https://pdoc3.github.io/pdoc/";
-    license = with licenses; [ agpl3Plus ];
-    maintainers = with maintainers; [ catern ];
+    license = lib.licenses.agpl3Plus;
+    mainProgram = "pdoc";
+    maintainers = with lib.maintainers; [ catern ];
   };
 }
diff --git a/pkgs/development/python-modules/pdunehd/default.nix b/pkgs/development/python-modules/pdunehd/default.nix
index 6d9248b2db101..009c811601cb5 100644
--- a/pkgs/development/python-modules/pdunehd/default.nix
+++ b/pkgs/development/python-modules/pdunehd/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, requests
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     sha256 = "sha256-8CL7ZQ+tV0CKdqWWiPDbo6Q5d1iIj/vNbYshdjUpYSw=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # no tests implemented
   doCheck = false;
diff --git a/pkgs/development/python-modules/peaqevcore/default.nix b/pkgs/development/python-modules/peaqevcore/default.nix
index cbc81c1a03403..0d608a2e36337 100644
--- a/pkgs/development/python-modules/peaqevcore/default.nix
+++ b/pkgs/development/python-modules/peaqevcore/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "peaqevcore";
-  version = "19.9.2";
+  version = "19.11.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-X5JKfIE6rISXb3F2liuyLrVHm5xw3DoFeMhqhEsdEIY=";
+    hash = "sha256-DQdmZ51jAG+JZkZal17+NIaQ+0lrMS7tqMSZj47tNWw=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/pebble/default.nix b/pkgs/development/python-modules/pebble/default.nix
index b576c7d4c1fcd..ea618df3293f6 100644
--- a/pkgs/development/python-modules/pebble/default.nix
+++ b/pkgs/development/python-modules/pebble/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,15 +20,11 @@ buildPythonPackage rec {
     hash = "sha256-J4TBR3ZvBjiM6nhAhLFL7JP9uqeTgw8ZgxVaozCipuQ=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
-  pythonImportsCheck = [
-    "pebble"
-  ];
+  pythonImportsCheck = [ "pebble" ];
 
   meta = with lib; {
     description = "API to manage threads and processes within an application";
diff --git a/pkgs/development/python-modules/pecan/default.nix b/pkgs/development/python-modules/pecan/default.nix
index 1de099579de39..24b9cddf97b4b 100644
--- a/pkgs/development/python-modules/pecan/default.nix
+++ b/pkgs/development/python-modules/pecan/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, logutils
-, mako
-, webob
-, webtest
-, pythonOlder
-, pytestCheckHook
-, genshi
-, gunicorn
-, jinja2
-, sqlalchemy
-, virtualenv
-, setuptools
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  logutils,
+  mako,
+  webob,
+  webtest,
+  pythonOlder,
+  pytestCheckHook,
+  genshi,
+  gunicorn,
+  jinja2,
+  sqlalchemy,
+  virtualenv,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -44,13 +45,9 @@ buildPythonPackage rec {
     webtest
   ];
 
-  pytestFlagsArray = [
-    "--pyargs pecan"
-  ];
+  pytestFlagsArray = [ "--pyargs pecan" ];
 
-  pythonImportsCheck = [
-    "pecan"
-  ];
+  pythonImportsCheck = [ "pecan" ];
 
   meta = with lib; {
     changelog = "https://pecan.readthedocs.io/en/latest/changes.html";
diff --git a/pkgs/development/python-modules/peco/default.nix b/pkgs/development/python-modules/peco/default.nix
index 961b0c623d92b..22f5d29faf8e9 100644
--- a/pkgs/development/python-modules/peco/default.nix
+++ b/pkgs/development/python-modules/peco/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pydantic
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  pydantic,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "peco";
-  version = "0.0.29";
-  format = "pyproject";
+  version = "0.1.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-zL0tBTwm+l5eyxlWr2xoE+nLpMfUKri1/yD+WgTUqHQ=";
+    hash = "sha256-p9Uxckc88HbUUtpg3fHGwYojU57mCuRzh3M1RAjKLX0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     pydantic
   ];
@@ -31,13 +30,12 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "peco"
-  ];
+  pythonImportsCheck = [ "peco" ];
 
   meta = with lib; {
     description = "Library for interacting with the PECO outage map";
     homepage = "https://github.com/IceBotYT/peco-outage-api";
+    changelog = "https://github.com/IceBotYT/peco-outage-api/releases/tag/${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/peewee-migrate/default.nix b/pkgs/development/python-modules/peewee-migrate/default.nix
index dc7cefd00c0d3..cca95fd385c00 100644
--- a/pkgs/development/python-modules/peewee-migrate/default.nix
+++ b/pkgs/development/python-modules/peewee-migrate/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# build-system
-, poetry-core
-
-# runtime
-, click
-, peewee
-
-# tests
-, psycopg2
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  poetry-core,
+
+  # runtime
+  click,
+  peewee,
+
+  # tests
+  psycopg2,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "peewee-migrate";
-  version = "1.12.2";
+  version = "1.13.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -26,25 +27,21 @@ buildPythonPackage rec {
     owner = "klen";
     repo = "peewee_migrate";
     rev = "refs/tags/${version}";
-    hash = "sha256-jxM2cvlDsoiUlVoxdS3wpUKlwMveMraiR431A8kIdgI=";
+    hash = "sha256-sC63WH/4EmoQYfvl3HyBHDzT/jMZW/G7mTC138+ZHHU=";
   };
 
   postPatch = ''
     sed -i '/addopts/d' pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     peewee
     click
   ];
 
-  pythonImportsCheck = [
-    "peewee_migrate"
-  ];
+  pythonImportsCheck = [ "peewee_migrate" ];
 
   nativeCheckInputs = [
     psycopg2
diff --git a/pkgs/development/python-modules/peewee/default.nix b/pkgs/development/python-modules/peewee/default.nix
index d839ad705ea77..e1c9505b40df6 100644
--- a/pkgs/development/python-modules/peewee/default.nix
+++ b/pkgs/development/python-modules/peewee/default.nix
@@ -1,32 +1,36 @@
-{ lib
-, apsw
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, flask
-, python
-, sqlite
-, withMysql ? false
-, mysql-connector
-, withPostgres ? false
-, psycopg2
-, pythonOlder
+{
+  lib,
+  apsw,
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+  flask,
+  python,
+  sqlite,
+  withMysql ? false,
+  mysql-connector,
+  withPostgres ? false,
+  psycopg2,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "peewee";
-  version = "3.17.1";
-  format = "setuptools";
+  version = "3.17.6";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "coleifer";
-    repo = pname;
+    repo = "peewee";
     rev = "refs/tags/${version}";
-    hash = "sha256-Gob2qBPPxAeIO/I7+9r4dBIxhvKnnZWD2nYcrMANM8U=";
+    hash = "sha256-HluoCXblqwaOb+gtAhvaYshTj9CtHoegn0QUaq0V+eA=";
   };
 
+  build-system = [ setuptools ];
+
   buildInputs = [
     sqlite
     cython
@@ -34,15 +38,9 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     apsw
-  ] ++ lib.optionals withPostgres [
-    psycopg2
-  ] ++ lib.optionals withMysql [
-    mysql-connector
-  ];
+  ] ++ lib.optionals withPostgres [ psycopg2 ] ++ lib.optionals withMysql [ mysql-connector ];
 
-  nativeCheckInputs = [
-    flask
-  ];
+  nativeCheckInputs = [ flask ];
 
   doCheck = withPostgres;
 
@@ -51,15 +49,14 @@ buildPythonPackage rec {
     ${python.interpreter} runtests.py
   '';
 
-  pythonImportsCheck = [
-    "peewee"
-  ];
+  pythonImportsCheck = [ "peewee" ];
 
   meta = with lib; {
     description = "Python ORM with support for various database implementation";
-    mainProgram = "pwiz.py";
     homepage = "http://peewee-orm.com";
+    changelog = "https://github.com/coleifer/peewee/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
+    mainProgram = "pwiz.py";
   };
 }
diff --git a/pkgs/development/python-modules/pefile/default.nix b/pkgs/development/python-modules/pefile/default.nix
index 55bd8c0cc07d3..34b0970ce5452 100644
--- a/pkgs/development/python-modules/pefile/default.nix
+++ b/pkgs/development/python-modules/pefile/default.nix
@@ -1,39 +1,30 @@
-{ lib
-, buildPythonPackage
-, future
-, fetchFromGitHub
-, setuptools-scm
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pefile";
-  version = "2023.2.7";
-  format = "setuptools";
+  version = "2024.8.26";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
-  src = fetchFromGitHub {
-    owner = "erocarrera";
-    repo = pname;
-    rev = "refs/tags/v${version}";
-    hash = "sha256-lD8GpNl+cVNYTZUKFRF1/2kDwEbn/ekRBNBTYuFmFW0=";
+  # DON'T fetch from github, the repo is >60 MB due to test artifacts, which we cannot use
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-P/bF2LQ+jDe7bm3VCFZY1linoL3NILagex/PwcTp1jI=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    future
-  ];
-
-  # Test data encrypted
+  # Test data contains properitary executables and malware, and is therefore encrypted
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pefile"
-  ];
+  pythonImportsCheck = [ "pefile" ];
 
   meta = with lib; {
     description = "Multi-platform Python module to parse and work with Portable Executable (aka PE) files";
diff --git a/pkgs/development/python-modules/peft/default.nix b/pkgs/development/python-modules/peft/default.nix
index 3b65f6c68e926..73a1d47855d3d 100644
--- a/pkgs/development/python-modules/peft/default.nix
+++ b/pkgs/development/python-modules/peft/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, numpy
-, packaging
-, psutil
-, pyyaml
-, torch
-, transformers
-, accelerate
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  numpy,
+  packaging,
+  psutil,
+  pyyaml,
+  torch,
+  transformers,
+  accelerate,
 }:
 
 buildPythonPackage rec {
   pname = "peft";
-  version = "0.10.0";
+  version = "0.12.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -23,7 +24,7 @@ buildPythonPackage rec {
     owner = "huggingface";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-Aln5WyDgNnxOUwyhOz9NGsnV1zXt/Rs57ULxR5ZJXNM=";
+    hash = "sha256-7LYlqWiOPTvQyJgpUZeZ5Wl17RswhYyit0/MaHyN5Ak=";
   };
 
   nativeBuildInputs = [ setuptools ];
@@ -38,10 +39,8 @@ buildPythonPackage rec {
     accelerate
   ];
 
-  doCheck = false;  # tries to download pretrained models
-  pythonImportsCheck = [
-    "peft"
-  ];
+  doCheck = false; # tries to download pretrained models
+  pythonImportsCheck = [ "peft" ];
 
   meta = with lib; {
     homepage = "https://github.com/huggingface/peft";
diff --git a/pkgs/development/python-modules/pegen/default.nix b/pkgs/development/python-modules/pegen/default.nix
index 4f348a2f00976..55628d53983d4 100644
--- a/pkgs/development/python-modules/pegen/default.nix
+++ b/pkgs/development/python-modules/pegen/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -27,21 +28,19 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pegen"
-  ];
+  pythonImportsCheck = [ "pegen" ];
 
-  disabledTests = [
-    # ValueError: Expected locations of (1, 3) and...
-    "test_invalid_call_arguments"
-  ] ++ lib.optionals (pythonAtLeast "3.11") [
-    # https://github.com/we-like-parsers/pegen/issues/89
-    "test_invalid_def_stmt"
-  ];
+  disabledTests =
+    [
+      # ValueError: Expected locations of (1, 3) and...
+      "test_invalid_call_arguments"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.11") [
+      # https://github.com/we-like-parsers/pegen/issues/89
+      "test_invalid_def_stmt"
+    ];
 
   meta = with lib; {
     description = "Library to generate PEG parsers";
diff --git a/pkgs/development/python-modules/pelican/default.nix b/pkgs/development/python-modules/pelican/default.nix
index 23e0ae1aff943..9f77c7546ac13 100644
--- a/pkgs/development/python-modules/pelican/default.nix
+++ b/pkgs/development/python-modules/pelican/default.nix
@@ -1,37 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pythonRelaxDepsHook
-
-# build-system
-, pdm-backend
-
-# native dependencies
-, glibcLocales
-, git
-, pandoc
-, typogrify
-
-# dependencies
-, backports-zoneinfo
-, blinker
-, docutils
-, feedgenerator
-, jinja2
-, markdown
-, ordered-set
-, pygments
-, python-dateutil
-, rich
-, tzdata
-, unidecode
-, watchfiles
-
-# tests
-, mock
-, pytestCheckHook
-, pytest-xdist
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  pdm-backend,
+
+  # native dependencies
+  glibcLocales,
+  git,
+  pandoc,
+  typogrify,
+
+  # dependencies
+  backports-zoneinfo,
+  blinker,
+  docutils,
+  feedgenerator,
+  jinja2,
+  markdown,
+  ordered-set,
+  pygments,
+  python-dateutil,
+  rich,
+  tzdata,
+  unidecode,
+  watchfiles,
+
+  # tests
+  mock,
+  pytestCheckHook,
+  pytest-xdist,
 }:
 
 buildPythonPackage rec {
@@ -60,12 +60,9 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     pdm-backend
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "unidecode"
-  ];
+  pythonRelaxDeps = [ "unidecode" ];
 
   buildInputs = [
     glibcLocales
@@ -87,9 +84,7 @@ buildPythonPackage rec {
     tzdata
     unidecode
     watchfiles
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    backports-zoneinfo
-  ];
+  ] ++ lib.optionals (pythonOlder "3.9") [ backports-zoneinfo ];
 
   nativeCheckInputs = [
     mock
@@ -108,6 +103,7 @@ buildPythonPackage rec {
     "test_basic_generation_works"
     "test_custom_generation_works"
     "test_custom_locale_generation_works"
+    "test_deprecated_attribute"
   ];
 
   env.LC_ALL = "en_US.UTF-8";
@@ -127,6 +123,9 @@ buildPythonPackage rec {
     description = "Static site generator that requires no database or server-side logic";
     homepage = "https://getpelican.com/";
     license = licenses.agpl3Only;
-    maintainers = with maintainers; [ offline prikhi ];
+    maintainers = with maintainers; [
+      offline
+      prikhi
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pem/default.nix b/pkgs/development/python-modules/pem/default.nix
index 84500acaccb0f..cc2572c8ebc58 100644
--- a/pkgs/development/python-modules/pem/default.nix
+++ b/pkgs/development/python-modules/pem/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, certifi
-, cryptography
-, fetchFromGitHub
-, hatch-fancy-pypi-readme
-, hatch-vcs
-, hatchling
-, pretend
-, pyopenssl
-, pytestCheckHook
-, pythonOlder
-, twisted
+{
+  lib,
+  buildPythonPackage,
+  certifi,
+  cryptography,
+  fetchFromGitHub,
+  hatch-fancy-pypi-readme,
+  hatch-vcs,
+  hatchling,
+  pretend,
+  pyopenssl,
+  pytestCheckHook,
+  pythonOlder,
+  twisted,
 }:
 
 buildPythonPackage rec {
@@ -42,9 +43,7 @@ buildPythonPackage rec {
     twisted
   ] ++ twisted.optional-dependencies.tls;
 
-  pythonImportsCheck = [
-    "pem"
-  ];
+  pythonImportsCheck = [ "pem" ];
 
   meta = with lib; {
     description = "Easy PEM file parsing in Python";
diff --git a/pkgs/development/python-modules/pencompy/default.nix b/pkgs/development/python-modules/pencompy/default.nix
index b2648e36e5a12..3bf69fa1192dd 100644
--- a/pkgs/development/python-modules/pencompy/default.nix
+++ b/pkgs/development/python-modules/pencompy/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pencompy"
-  ];
+  pythonImportsCheck = [ "pencompy" ];
 
   meta = with lib; {
     description = "Library for interacting with Pencom relay boards";
diff --git a/pkgs/development/python-modules/pendulum/default.nix b/pkgs/development/python-modules/pendulum/default.nix
index 78e9c675ea8db..bd74e66c69157 100644
--- a/pkgs/development/python-modules/pendulum/default.nix
+++ b/pkgs/development/python-modules/pendulum/default.nix
@@ -1,27 +1,28 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, isPyPy
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  isPyPy,
 
-# build-system
-, poetry-core
-, rustPlatform
+  # build-system
+  poetry-core,
+  rustPlatform,
 
-# native dependencies
-, iconv
+  # native dependencies
+  iconv,
 
-# dependencies
-, backports-zoneinfo
-, importlib-resources
-, python-dateutil
-, time-machine
-, tzdata
+  # dependencies
+  backports-zoneinfo,
+  importlib-resources,
+  python-dateutil,
+  time-machine,
+  tzdata,
 
-# tests
-, pytestCheckHook
-, pytz
+  # tests
+  pytestCheckHook,
+  pytz,
 }:
 
 buildPythonPackage rec {
@@ -44,7 +45,7 @@ buildPythonPackage rec {
   cargoRoot = "rust";
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
-    sourceRoot = "source/rust";
+    sourceRoot = "${src.name}/rust";
     name = "${pname}-${version}";
     hash = "sha256-6fw0KgnPIMfdseWcunsGjvjVB+lJNoG3pLDqkORPJ0I=";
     postPatch = ''
@@ -59,41 +60,38 @@ buildPythonPackage rec {
     rustPlatform.cargoSetupHook
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [
-    iconv
-  ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ iconv ];
 
-  propagatedBuildInputs = [
-    python-dateutil
-    tzdata
-  ] ++ lib.optional (!isPyPy) [
-    time-machine
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    backports-zoneinfo
-    importlib-resources
-  ];
+  propagatedBuildInputs =
+    [
+      python-dateutil
+      tzdata
+    ]
+    ++ lib.optional (!isPyPy) [ time-machine ]
+    ++ lib.optionals (pythonOlder "3.9") [
+      backports-zoneinfo
+      importlib-resources
+    ];
 
-  pythonImportsCheck = [
-    "pendulum"
-  ];
+  pythonImportsCheck = [ "pendulum" ];
 
   nativeCheckInputs = [
     pytestCheckHook
     pytz
   ];
 
-  disabledTestPaths = [
-    "tests/benchmarks"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # PermissionError: [Errno 1] Operation not permitted: '/etc/localtime'
-    "tests/testing/test_time_travel.py"
-  ];
+  disabledTestPaths =
+    [ "tests/benchmarks" ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # PermissionError: [Errno 1] Operation not permitted: '/etc/localtime'
+      "tests/testing/test_time_travel.py"
+    ];
 
   meta = with lib; {
     description = "Python datetimes made easy";
     homepage = "https://github.com/sdispater/pendulum";
     changelog = "https://github.com/sdispater/pendulum/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pep440/default.nix b/pkgs/development/python-modules/pep440/default.nix
index e083bb622b873..8bf685faaecc1 100644
--- a/pkgs/development/python-modules/pep440/default.nix
+++ b/pkgs/development/python-modules/pep440/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,22 +19,16 @@ buildPythonPackage rec {
     hash = "sha256-WLNyRswrE/7hyio8CSyzcE0h7PYhpb27Fo5E5pf20E0=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # Don't run CLI tests
     "tests/test_cli.py"
   ];
 
-  pythonImportsCheck = [
-    "pep440"
-  ];
+  pythonImportsCheck = [ "pep440" ];
 
   meta = with lib; {
     description = "Python module to check whether versions number match PEP 440";
diff --git a/pkgs/development/python-modules/pep517/default.nix b/pkgs/development/python-modules/pep517/default.nix
index 470c67d6ae071..db633e8d6d364 100644
--- a/pkgs/development/python-modules/pep517/default.nix
+++ b/pkgs/development/python-modules/pep517/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, tomli
-, pythonOlder
-, importlib-metadata
-, zipp
-, pytestCheckHook
-, setuptools
-, testpath
-, mock
-, pip
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  tomli,
+  pythonOlder,
+  importlib-metadata,
+  zipp,
+  pytestCheckHook,
+  setuptools,
+  testpath,
+  mock,
+  pip,
 }:
 
 buildPythonPackage rec {
@@ -23,15 +24,14 @@ buildPythonPackage rec {
     hash = "sha256-Gy+i/9OTi7S+/+XWFGy8sr2plqWk2p8xq//Ysk4Hsxc=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    tomli
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata zipp
-  ];
+  propagatedBuildInputs =
+    [ tomli ]
+    ++ lib.optionals (pythonOlder "3.8") [
+      importlib-metadata
+      zipp
+    ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/pep8-naming/default.nix b/pkgs/development/python-modules/pep8-naming/default.nix
index 5fd696523d845..9ab07cfd76783 100644
--- a/pkgs/development/python-modules/pep8-naming/default.nix
+++ b/pkgs/development/python-modules/pep8-naming/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flake8
-, python
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flake8,
+  python,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pep8-naming";
-  version = "0.13.3";
+  version = "0.14.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -16,13 +17,11 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "PyCQA";
     repo = pname;
-    rev = version;
-    hash = "sha256-l7zZUOMWyTxnTbkFkzfABY/eVMKnv0kNJ0UPzJo0W1Y=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-uIVk8+5rVEIBZLz70WUi0O6/Q9ERptJ3b7314gLPeHk=";
   };
 
-  propagatedBuildInputs = [
-    flake8
-  ];
+  propagatedBuildInputs = [ flake8 ];
 
   checkPhase = ''
     runHook preCheck
@@ -30,9 +29,7 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "pep8ext_naming"
-  ];
+  pythonImportsCheck = [ "pep8ext_naming" ];
 
   meta = with lib; {
     description = "Check PEP-8 naming conventions, plugin for flake8";
diff --git a/pkgs/development/python-modules/pep8/default.nix b/pkgs/development/python-modules/pep8/default.nix
index 425ad42e787c2..7a9c442d4219c 100644
--- a/pkgs/development/python-modules/pep8/default.nix
+++ b/pkgs/development/python-modules/pep8/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,6 @@ buildPythonPackage rec {
     description = "Python style guide checker";
     mainProgram = "pep8";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/peppercorn/default.nix b/pkgs/development/python-modules/peppercorn/default.nix
index 086c5edcee329..1fb8d48a05e55 100644
--- a/pkgs/development/python-modules/peppercorn/default.nix
+++ b/pkgs/development/python-modules/peppercorn/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -14,10 +15,9 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "A library for converting a token stream into a data structure for use in web form posts";
+    description = "Library for converting a token stream into a data structure for use in web form posts";
     homepage = "https://docs.pylonsproject.org/projects/peppercorn/en/latest/";
     maintainers = with maintainers; [ domenkozar ];
     platforms = platforms.all;
   };
-
 }
diff --git a/pkgs/development/python-modules/percol/default.nix b/pkgs/development/python-modules/percol/default.nix
index 2a58aa4f86788..9e0ec0df24eab 100644
--- a/pkgs/development/python-modules/percol/default.nix
+++ b/pkgs/development/python-modules/percol/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchFromGitHub, cmigemo }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cmigemo,
+}:
 
 buildPythonPackage rec {
   pname = "percol";
diff --git a/pkgs/development/python-modules/perfplot/default.nix b/pkgs/development/python-modules/perfplot/default.nix
index 1dfc78ffca46d..e713588573548 100644
--- a/pkgs/development/python-modules/perfplot/default.nix
+++ b/pkgs/development/python-modules/perfplot/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, matplotlib
-, matplotx
-, numpy
-, rich
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  matplotlib,
+  matplotx,
+  numpy,
+  rich,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-bu6eYQukhLE8sLkS3PbqTgXOqJFXJYXTcXAhmjaq48g=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     matplotlib
@@ -38,21 +37,17 @@ buildPythonPackage rec {
 
   # This variable is needed to suppress the "Trace/BPT trap: 5" error in Darwin's checkPhase.
   # Not sure of the details, but we can avoid it by changing the matplotlib backend during testing.
-  env.MPLBACKEND = lib.optionalString stdenv.isDarwin "Agg";
+  env.MPLBACKEND = lib.optionalString stdenv.hostPlatform.isDarwin "Agg";
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "perfplot"
-  ];
+  pythonImportsCheck = [ "perfplot" ];
 
   meta = with lib; {
     description = "Performance plots for Python code snippets";
     homepage = "https://github.com/nschloe/perfplot";
     changelog = "https://github.com/nschloe/perfplot/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/periodictable/default.nix b/pkgs/development/python-modules/periodictable/default.nix
index 94a7120eebe48..31b5b0a4500fb 100644
--- a/pkgs/development/python-modules/periodictable/default.nix
+++ b/pkgs/development/python-modules/periodictable/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, numpy
-, pyparsing
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  numpy,
+  pyparsing,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "periodictable";
-  version = "1.7.0";
+  version = "1.7.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Qg5XwrGdalIbHAteOH2lkKMahFbkzBwAvKXOLcXwXqk=";
+    hash = "sha256-Q9fbcjPWszli+D156lT0fDuSPT6DQDy8A/WPNTr0tSw=";
   };
 
   propagatedBuildInputs = [
@@ -24,13 +25,9 @@ buildPythonPackage rec {
     pyparsing
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "periodictable"
-  ];
+  pythonImportsCheck = [ "periodictable" ];
 
   meta = with lib; {
     description = "Extensible periodic table of the elements";
diff --git a/pkgs/development/python-modules/periodiq/default.nix b/pkgs/development/python-modules/periodiq/default.nix
index 2d14561d120dd..19eea2d9290ee 100644
--- a/pkgs/development/python-modules/periodiq/default.nix
+++ b/pkgs/development/python-modules/periodiq/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitLab
-, poetry-core
-, dramatiq
-, pendulum
-, setuptools
-, pytest-mock
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitLab,
+  poetry-core,
+  dramatiq,
+  pendulum,
+  setuptools,
+  pytest-mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
       --replace 'poetry.masonry.api' 'poetry.core.masonry.api'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     dramatiq
@@ -41,7 +40,10 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  nativeCheckInputs = [ pytestCheckHook pytest-mock ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-mock
+  ];
 
   pytestFlagsArray = [ "tests/unit" ];
 
diff --git a/pkgs/development/python-modules/permissionedforms/default.nix b/pkgs/development/python-modules/permissionedforms/default.nix
index c317826391ddb..8abf3f5abf997 100644
--- a/pkgs/development/python-modules/permissionedforms/default.nix
+++ b/pkgs/development/python-modules/permissionedforms/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, django
-, django-modelcluster
-, fetchFromGitHub
-, lib
-, python
+{
+  buildPythonPackage,
+  django,
+  django-modelcluster,
+  fetchFromGitHub,
+  lib,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     sha256 = "sha256-DQzPGmh5UEVpGWnW3IrEVPkZZ8mdiW9J851Ej4agTDc=";
   };
 
-  propagatedBuildInputs = [
-    django
-  ];
+  propagatedBuildInputs = [ django ];
 
   checkInputs = [ django-modelcluster ];
 
@@ -31,7 +30,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "permissionedforms" ];
 
   meta = with lib; {
-    description = "A Django extension for creating forms that vary according to user permissions";
+    description = "Django extension for creating forms that vary according to user permissions";
     homepage = "https://github.com/wagtail/permissionedforms";
     changelog = "https://github.com/wagtail/permissionedforms/blob/v${version}/CHANGELOG.md";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/persim/default.nix b/pkgs/development/python-modules/persim/default.nix
index 45114af407c40..59892262e6978 100644
--- a/pkgs/development/python-modules/persim/default.nix
+++ b/pkgs/development/python-modules/persim/default.nix
@@ -1,17 +1,17 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, deprecated
-, hopcroftkarp
-, joblib
-, matplotlib
-, numpy
-, scikit-learn
-, scipy
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  deprecated,
+  hopcroftkarp,
+  joblib,
+  matplotlib,
+  numpy,
+  scikit-learn,
+  scipy,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +36,7 @@ buildPythonPackage rec {
     scipy
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     # specifically needed for darwin
@@ -47,9 +45,7 @@ buildPythonPackage rec {
     echo "backend: ps" > $HOME/.matplotlib/matplotlibrc
   '';
 
-  pythonImportsCheck = [
-    "persim"
-  ];
+  pythonImportsCheck = [ "persim" ];
 
   disabledTests = lib.optionals (pythonAtLeast "3.10") [
     # AttributeError: module 'collections' has no attribute 'Iterable'
@@ -72,7 +68,6 @@ buildPythonPackage rec {
     homepage = "https://persim.scikit-tda.org";
     changelog = "https://github.com/scikit-tda/persim/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
-    broken = stdenv.isDarwin;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/persist-queue/default.nix b/pkgs/development/python-modules/persist-queue/default.nix
index 9682ac59946b1..bbadd55d3afe3 100644
--- a/pkgs/development/python-modules/persist-queue/default.nix
+++ b/pkgs/development/python-modules/persist-queue/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, nose2
-, msgpack
-, cbor2
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  nose2,
+  msgpack,
+  cbor2,
 }:
 
 buildPythonPackage rec {
   pname = "persist-queue";
-  version = "0.8.1";
+  version = "1.0.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-4ZONOsbZthaSwRX43crajZox8iUGeCWF45WIpB7Ppao=";
+    hash = "sha256-P/t0aQLTAj/QnrRol2Cf3ubHexZB8Z4vyNmNdEvfyEU=";
   };
 
   disabled = pythonOlder "3.6";
diff --git a/pkgs/development/python-modules/persistent/default.nix b/pkgs/development/python-modules/persistent/default.nix
index 5c7f27a5be311..644ac8d2e5173 100644
--- a/pkgs/development/python-modules/persistent/default.nix
+++ b/pkgs/development/python-modules/persistent/default.nix
@@ -1,44 +1,46 @@
-{ lib
-, buildPythonPackage
-, cffi
-, fetchPypi
-, zope-interface
-, sphinx
-, manuel
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+
+  # build-systems
+  setuptools,
+
+  # dependencies
+  cffi,
+  zope-deferredimport,
+  zope-interface,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "persistent";
-  version = "5.2";
-  format = "setuptools";
+  version = "6.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-2+pdH/nbTkUco5vAtCqepTfmyskoKujAeA+4/64+yDQ=";
+    hash = "sha256-CDZQwP/ty4gDKJY8KUuVEaArawXkIec3p9Vfnu2I+18=";
   };
 
-  nativeBuildInputs = [
-    sphinx
-    manuel
-  ];
+  build-system = [ setuptools ];
 
   propagatedBuildInputs = [
     zope-interface
-    cffi
-  ];
+    zope-deferredimport
+  ]
+  ++ lib.optionals (!isPyPy) [ cffi ];
 
-  pythonImportsCheck = [
-    "persistent"
-  ];
+  pythonImportsCheck = [ "persistent" ];
 
   meta = with lib; {
     description = "Automatic persistence for Python objects";
     homepage = "https://github.com/zopefoundation/persistent/";
     changelog = "https://github.com/zopefoundation/persistent/blob/${version}/CHANGES.rst";
     license = licenses.zpl21;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/persisting-theory/default.nix b/pkgs/development/python-modules/persisting-theory/default.nix
index 0890f86fc160c..9dca828eb3672 100644
--- a/pkgs/development/python-modules/persisting-theory/default.nix
+++ b/pkgs/development/python-modules/persisting-theory/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-D4QPoiJHvKpRQJTafzsmxgI1lCmrEtLNiL4GtJozYpA=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "persisting_theory" ];
 
diff --git a/pkgs/development/python-modules/pescea/default.nix b/pkgs/development/python-modules/pescea/default.nix
index 415fcd5a09a05..aec7138b7795b 100644
--- a/pkgs/development/python-modules/pescea/default.nix
+++ b/pkgs/development/python-modules/pescea/default.nix
@@ -1,12 +1,12 @@
-{ stdenv
-, lib
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-5TkFrGaSkQOORhf5a7SjkzggFLPyqe9k3M0B4ljhWTQ=";
   };
 
-  propagatedBuildInputs = [
-    async-timeout
-  ];
+  propagatedBuildInputs = [ async-timeout ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -47,12 +45,9 @@ buildPythonPackage rec {
     "test_flow_control"
   ];
 
-  pythonImportsCheck = [
-    "pescea"
-  ];
+  pythonImportsCheck = [ "pescea" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
     description = "Python interface to Escea fireplaces";
     homepage = "https://github.com/lazdavila/pescea";
     license = licenses.gpl3Plus;
diff --git a/pkgs/development/python-modules/pettingzoo/default.nix b/pkgs/development/python-modules/pettingzoo/default.nix
new file mode 100644
index 0000000000000..9bb487e85630d
--- /dev/null
+++ b/pkgs/development/python-modules/pettingzoo/default.nix
@@ -0,0 +1,132 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  gymnasium,
+  numpy,
+  chess,
+  pillow,
+  pybox2d,
+  pygame,
+  pymunk,
+  rlcard,
+  scipy,
+  pre-commit,
+  pynput,
+  pytest,
+  pytest-cov,
+  pytest-markdown-docs,
+  pytest-xdist,
+  pytestCheckHook,
+  stdenv,
+}:
+
+buildPythonPackage rec {
+  pname = "pettingzoo";
+  version = "1.24.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "Farama-Foundation";
+    repo = "PettingZoo";
+    rev = "refs/tags/${version}";
+    hash = "sha256-TVM4MrA4W6AIWEdBIecI85ahJAAc21f27OzCxSpOoZU=";
+  };
+
+  build-system = [
+    setuptools
+    wheel
+  ];
+
+  dependencies = [
+    gymnasium
+    numpy
+  ];
+
+  passthru.optional-dependencies = {
+    all = [
+      chess
+      # multi-agent-ale-py
+      pillow
+      pybox2d
+      pygame
+      pymunk
+      rlcard
+      scipy
+      # shimmy
+    ];
+    atari = [
+      # multi-agent-ale-py
+      pygame
+    ];
+    butterfly = [
+      pygame
+      pymunk
+    ];
+    classic = [
+      chess
+      pygame
+      rlcard
+      # shimmy
+    ];
+    mpe = [ pygame ];
+    other = [ pillow ];
+    sisl = [
+      pybox2d
+      pygame
+      pymunk
+      scipy
+    ];
+    testing = [
+      # autorom
+      pre-commit
+      pynput
+      pytest
+      pytest-cov
+      pytest-markdown-docs
+      pytest-xdist
+    ];
+  };
+
+  pythonImportsCheck = [ "pettingzoo" ];
+
+  nativeCheckInputs = [
+    chess
+    pygame
+    pymunk
+    pytest-markdown-docs
+    pytest-xdist
+    pytestCheckHook
+    rlcard
+  ];
+
+  disabledTestPaths = [
+    # Require unpackaged multi_agent_ale_py
+    "test/all_parameter_combs_test.py"
+    "test/pickle_test.py"
+    "test/unwrapped_test.py"
+  ];
+
+  disabledTests =
+    [
+      # ImportError: cannot import name 'pytest_plugins' from 'pettingzoo.classic'
+      "test_chess"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Crashes on darwin: `Fatal Python error: Aborted`
+      "test_multi_episode_parallel_env_wrapper"
+    ];
+
+  meta = with lib; {
+    description = "API standard for multi-agent reinforcement learning environments, with popular reference environments and related utilities";
+    homepage = "https://github.com/Farama-Foundation/PettingZoo";
+    changelog = "https://github.com/Farama-Foundation/PettingZoo/releases/tag/${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/pkgs/development/python-modules/pex/default.nix b/pkgs/development/python-modules/pex/default.nix
index daabf4625ce50..2df4dd4b8ff0a 100644
--- a/pkgs/development/python-modules/pex/default.nix
+++ b/pkgs/development/python-modules/pex/default.nix
@@ -1,38 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatchling
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pex";
-  version = "2.3.1";
+  version = "2.12.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-0SZMkRYcIRObRUdEyAU+Jbiq0tFdqJIyGBtPOPP1RXU=";
+    hash = "sha256-KBD9sRqtQT02RfyXurUiGy28bucB7l/irF/fPmVeGwc=";
   };
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   # A few more dependencies I don't want to handle right now...
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pex"
-  ];
+  pythonImportsCheck = [ "pex" ];
 
   meta = with lib; {
     description = "Python library and tool for generating .pex (Python EXecutable) files";
     homepage = "https://github.com/pantsbuild/pex";
     changelog = "https://github.com/pantsbuild/pex/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ copumpkin phaer ];
+    maintainers = with maintainers; [
+      copumpkin
+      phaer
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pexif/default.nix b/pkgs/development/python-modules/pexif/default.nix
index fb61b376021ad..9b2f9e16ead9a 100644
--- a/pkgs/development/python-modules/pexif/default.nix
+++ b/pkgs/development/python-modules/pexif/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,8 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "A module for editing JPEG EXIF data";
+    description = "Module for editing JPEG EXIF data";
     homepage = "http://www.benno.id.au/code/pexif/";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/pexpect/default.nix b/pkgs/development/python-modules/pexpect/default.nix
index e8c5efc3cba3f..0371859c5066f 100644
--- a/pkgs/development/python-modules/pexpect/default.nix
+++ b/pkgs/development/python-modules/pexpect/default.nix
@@ -1,8 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, ptyprocess
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  ptyprocess,
+
+  # Reverse dependency
+  sage,
 }:
 
 buildPythonPackage (rec {
@@ -15,15 +19,17 @@ buildPythonPackage (rec {
     hash = "sha256-7n1BEj88mREFDqLC2sEHVo3EOy07DHVXozISw5jq0w8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # Wants to run pythonin a subprocess
   doCheck = false;
 
   propagatedBuildInputs = [ ptyprocess ];
 
+  passthru.tests = {
+    inherit sage;
+  };
+
   meta = with lib; {
     homepage = "http://www.noah.org/wiki/Pexpect";
     description = "Automate interactive console applications such as ssh, ftp, etc";
diff --git a/pkgs/development/python-modules/pfzy/default.nix b/pkgs/development/python-modules/pfzy/default.nix
index 48c084495a691..7b1ef211aad69 100644
--- a/pkgs/development/python-modules/pfzy/default.nix
+++ b/pkgs/development/python-modules/pfzy/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-+Ba/yLUfT0SPPAJd+pKyjSvNrVpEwxW3xEKFx4JzpYk=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  pythonImportsCheck = [
-    "pfzy"
-  ];
+  pythonImportsCheck = [ "pfzy" ];
 
   meta = with lib; {
     description = "Python port of the fzy fuzzy string matching algorithm";
diff --git a/pkgs/development/python-modules/pg8000/default.nix b/pkgs/development/python-modules/pg8000/default.nix
index 3bd937c6d492f..2607688f4cf55 100644
--- a/pkgs/development/python-modules/pg8000/default.nix
+++ b/pkgs/development/python-modules/pg8000/default.nix
@@ -1,46 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, importlib-metadata
-, passlib
-, python-dateutil
-, pythonOlder
-, scramp
-, setuptools
-, versioningit
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  importlib-metadata,
+  passlib,
+  python-dateutil,
+  pythonOlder,
+  scramp,
+  hatchling,
+  versioningit,
 }:
 
 buildPythonPackage rec {
   pname = "pg8000";
-  version = "1.30.5";
-  format = "pyproject";
+  version = "1.31.2";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-By960AzXI2lcsun8AsHfuEx4FFXpe43m9MQoHuoIB4w=";
+    hash = "sha256-HqRs8J2Oygf+fqre/XlR43vuf6vmdd8WTxpXL/swCHY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
+  build-system = [
+    hatchling
     versioningit
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     passlib
     python-dateutil
     scramp
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   # Tests require a running PostgreSQL instance
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pg8000"
-  ];
+  pythonImportsCheck = [ "pg8000" ];
 
   meta = with lib; {
     description = "Python driver for PostgreSQL";
diff --git a/pkgs/development/python-modules/pgcli/default.nix b/pkgs/development/python-modules/pgcli/default.nix
index f60a5fd9dae52..ce812bcdf2257 100644
--- a/pkgs/development/python-modules/pgcli/default.nix
+++ b/pkgs/development/python-modules/pgcli/default.nix
@@ -1,33 +1,35 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, cli-helpers
-, click
-, configobj
-, prompt-toolkit
-, psycopg
-, pygments
-, sqlparse
-, pgspecial
-, setproctitle
-, keyring
-, pendulum
-, pytestCheckHook
-, sshtunnel
-, mock
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  cli-helpers,
+  click,
+  configobj,
+  prompt-toolkit,
+  psycopg,
+  pygments,
+  sqlparse,
+  pgspecial,
+  setproctitle,
+  keyring,
+  pendulum,
+  pytestCheckHook,
+  setuptools,
+  sshtunnel,
+  mock,
 }:
 
 # this is a pythonPackage because of the ipython line magics in pgcli.magic
 # integrating with ipython-sql
 buildPythonPackage rec {
   pname = "pgcli";
-  version = "4.0.1";
-  format = "setuptools";
+  version = "4.1.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-8v7qIJnOGtXoqdXZOw7a9g3GHpeyG3XpHZcjk5zlO9I=";
+    hash = "sha256-P9Fsi1G9AUX/YYwscyZLzYVLqGaqIG1PB2hR9kG5shU=";
   };
 
   propagatedBuildInputs = [
@@ -45,9 +47,16 @@ buildPythonPackage rec {
     sshtunnel
   ];
 
-  nativeCheckInputs = [ pytestCheckHook mock ];
+  nativeBuildInputs = [ setuptools ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    mock
+  ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [ "test_application_name_db_uri" ];
+  disabledTests = [
+    # requires running postgres
+    "test_application_name_in_env"
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ "test_application_name_db_uri" ];
 
   meta = with lib; {
     description = "Command-line interface for PostgreSQL";
@@ -59,6 +68,9 @@ buildPythonPackage rec {
     homepage = "https://pgcli.com";
     changelog = "https://github.com/dbcli/pgcli/raw/v${version}/changelog.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ dywedir SuperSandro2000 ];
+    maintainers = with maintainers; [
+      dywedir
+      SuperSandro2000
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pglast/default.nix b/pkgs/development/python-modules/pglast/default.nix
index 7e5208c1bcd71..02a11e0f01a72 100644
--- a/pkgs/development/python-modules/pglast/default.nix
+++ b/pkgs/development/python-modules/pglast/default.nix
@@ -1,15 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  pytest,
+  pytest-cov-stub,
 }:
 
 buildPythonPackage rec {
   pname = "pglast";
   version = "6.2";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -18,17 +20,13 @@ buildPythonPackage rec {
     hash = "sha256-mGP7o52Wun6AdE2jMAJBmLR10EmN50qzbMzB06BFXMg=";
   };
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "--cov=pglast --cov-report term-missing" ""
-  '';
+  dependencies = [ setuptools ];
 
   nativeCheckInputs = [
     pytest
+    pytest-cov-stub
   ];
 
   # pytestCheckHook doesn't work
@@ -47,7 +45,7 @@ buildPythonPackage rec {
     description = "PostgreSQL Languages AST and statements prettifier";
     changelog = "https://github.com/lelit/pglast/blob/v${version}/CHANGES.rst";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     mainProgram = "pgpp";
   };
 }
diff --git a/pkgs/development/python-modules/pgmpy/default.nix b/pkgs/development/python-modules/pgmpy/default.nix
index a953b575b591d..1217f573cdcd9 100644
--- a/pkgs/development/python-modules/pgmpy/default.nix
+++ b/pkgs/development/python-modules/pgmpy/default.nix
@@ -1,47 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-# build inputs
-, networkx
-, numpy
-, scipy
-, scikit-learn
-, pandas
-, pyparsing
-, torch
-, statsmodels
-, tqdm
-, joblib
-, opt-einsum
-# check inputs
-, pytestCheckHook
-, pytest-cov
-, coverage
-, mock
-, black
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # dependencies
+  networkx,
+  numpy,
+  scipy,
+  scikit-learn,
+  pandas,
+  pyparsing,
+  torch,
+  statsmodels,
+  tqdm,
+  joblib,
+  opt-einsum,
+  xgboost,
+  google-generativeai,
+
+  # tests
+  pytestCheckHook,
+  pytest-cov,
+  coverage,
+  mock,
+  black,
 }:
-let
+buildPythonPackage rec {
   pname = "pgmpy";
-  version = "0.1.25";
-  # optional-dependencies = {
-  #   all = [ daft ];
-  # };
-in
-buildPythonPackage {
-  inherit pname version;
-  format = "setuptools";
-
-  disabled = pythonOlder "3.7";
+  version = "0.1.26";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pgmpy";
-    repo = pname;
+    repo = "pgmpy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-d2TNcJQ82XxTWdetLgtKXRpFulAEEzrr+cyRewoA6YI=";
+    hash = "sha256-RusVREhEXYaJuQXTaCQ7EJgbo4+wLB3wXXCAc3sBGtU=";
   };
 
-  propagatedBuildInputs = [
+  dependencies = [
     networkx
     numpy
     scipy
@@ -53,10 +49,21 @@ buildPythonPackage {
     tqdm
     joblib
     opt-einsum
+    xgboost
+    google-generativeai
   ];
 
   disabledTests = [
-    "test_to_daft" # requires optional dependency daft
+    # flaky:
+    # AssertionError: -45.78899127622197 != -45.788991276221964
+    "test_score"
+
+    # self.assertTrue(np.isclose(coef, dep_coefs[i], atol=1e-4))
+    # AssertionError: False is not true
+    "test_pillai"
+
+    # requires optional dependency daft
+    "test_to_daft"
   ];
 
   nativeCheckInputs = [
@@ -68,11 +75,11 @@ buildPythonPackage {
     black
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Python Library for learning (Structure and Parameter), inference (Probabilistic and Causal), and simulations in Bayesian Networks";
     homepage = "https://github.com/pgmpy/pgmpy";
     changelog = "https://github.com/pgmpy/pgmpy/releases/tag/v${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ happysalada ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ happysalada ];
   };
 }
diff --git a/pkgs/development/python-modules/pgpdump/default.nix b/pkgs/development/python-modules/pgpdump/default.nix
index d3f87c9e19476..832b2e46c960a 100644
--- a/pkgs/development/python-modules/pgpdump/default.nix
+++ b/pkgs/development/python-modules/pgpdump/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -21,5 +22,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/toofishes/python-pgpdump";
     license = licenses.bsd3;
   };
-
 }
diff --git a/pkgs/development/python-modules/pgpy/default.nix b/pkgs/development/python-modules/pgpy/default.nix
index fc9c0c656961d..d9366a7542768 100644
--- a/pkgs/development/python-modules/pgpy/default.nix
+++ b/pkgs/development/python-modules/pgpy/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, pythonOlder
-, fetchFromGitHub
-, buildPythonPackage
-, setuptools
-, pyasn1
-, cryptography
-, pytestCheckHook
+{
+  lib,
+  pythonOlder,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  pyasn1,
+  cryptography,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,18 +24,14 @@ buildPythonPackage rec {
     hash = "sha256-47YiHNxmjyCOYHHUV3Zyhs3Att9HZtCXYfbN34ooTxU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     pyasn1
     cryptography
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     homepage = "https://github.com/SecurityInnovation/PGPy";
@@ -44,6 +41,9 @@ buildPythonPackage rec {
       programs, conforming to the OpenPGP specification per RFC 4880.
     '';
     license = licenses.bsd3;
-    maintainers = with maintainers; [ eadwu dotlambda ];
+    maintainers = with maintainers; [
+      eadwu
+      dotlambda
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pgsanity/default.nix b/pkgs/development/python-modules/pgsanity/default.nix
index ea133ad8c2004..7f1c482977a32 100644
--- a/pkgs/development/python-modules/pgsanity/default.nix
+++ b/pkgs/development/python-modules/pgsanity/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, python
-, fetchPypi
-, buildPythonPackage
-, postgresql
-, unittestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  postgresql,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,7 +16,10 @@ buildPythonPackage rec {
     sha256 = "de0bbd6fe4f98bf5139cb5f466eac2e2abaf5a7b050b9e4867b87bf360873173";
   };
 
-  nativeCheckInputs = [ unittestCheckHook postgresql ];
+  nativeCheckInputs = [
+    unittestCheckHook
+    postgresql
+  ];
   propagatedBuildInputs = [ postgresql ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/pgspecial/default.nix b/pkgs/development/python-modules/pgspecial/default.nix
index 5c4e1bf84a2ac..e632972198900 100644
--- a/pkgs/development/python-modules/pgspecial/default.nix
+++ b/pkgs/development/python-modules/pgspecial/default.nix
@@ -1,24 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, psycopg
-, click
-, configobj
-, sqlparse
+{
+  lib,
+  buildPythonPackage,
+  click,
+  configobj,
+  fetchPypi,
+  psycopg,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  sqlparse,
 }:
 
 buildPythonPackage rec {
   pname = "pgspecial";
-  version = "2.1.1";
-  format = "setuptools";
+  version = "2.1.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-o4I5zZYfrDPObaNcRm11istvlCkBWY19905bgv5vVjY=";
+    hash = "sha256-8EGeGzt4+zpy/jtUb2eIpxIJFTLVmf51k7X27lWoj4c=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     click
     sqlparse
     psycopg
@@ -30,14 +37,15 @@ buildPythonPackage rec {
   ];
 
   disabledTests = [
-    # requires a postgresql server
+    # Test requires a Postgresql server
     "test_slash_dp_pattern_schema"
   ];
 
   meta = with lib; {
     description = "Meta-commands handler for Postgres Database";
     homepage = "https://github.com/dbcli/pgspecial";
+    changelog = "https://github.com/dbcli/pgspecial/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pgvector/default.nix b/pkgs/development/python-modules/pgvector/default.nix
index 383029504b544..208165e65fbc9 100644
--- a/pkgs/development/python-modules/pgvector/default.nix
+++ b/pkgs/development/python-modules/pgvector/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, asyncpg
-, buildPythonPackage
-, django
-, fetchFromGitHub
-, numpy
-, peewee
-, postgresql
-, postgresqlTestHook
-, psycopg
-, psycopg2
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, sqlalchemy
-, sqlmodel
+{
+  lib,
+  asyncpg,
+  buildPythonPackage,
+  django,
+  fetchFromGitHub,
+  numpy,
+  peewee,
+  postgresql,
+  postgresqlTestHook,
+  psycopg,
+  psycopg2,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  sqlalchemy,
+  sqlmodel,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     hash = "sha256-XKoaEwLW59pV4Dwis7p2L65XoO2zUEa1kXxz6Lgs2d8=";
   };
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   nativeCheckInputs = [
     asyncpg
diff --git a/pkgs/development/python-modules/phe/default.nix b/pkgs/development/python-modules/phe/default.nix
index 0dc423883c4bd..0e9fa4b5be985 100644
--- a/pkgs/development/python-modules/phe/default.nix
+++ b/pkgs/development/python-modules/phe/default.nix
@@ -1,31 +1,48 @@
-{ lib, buildPythonPackage, fetchPypi, isPyPy, isPy3k, click, gmpy2, numpy } :
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPyPy,
+  isPy3k,
+  setuptools,
+  click,
+  gmpy2,
+  pytestCheckHook,
+  numpy,
+}:
 
-let
+buildPythonPackage rec {
   pname = "phe";
-  version = "1.5.0";
-  format = "setuptools";
-in
+  version = "1.5.1";
+  pyproject = true;
 
-buildPythonPackage {
-  inherit pname version;
+  # https://github.com/data61/python-paillier/issues/51
+  disabled = isPyPy || !isPy3k;
 
-  # https://github.com/n1analytics/python-paillier/issues/51
-  disabled = isPyPy || ! isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-mS+3CR0kJ/DZczlG+PNQrN1NHQEgV/Kq02S6eflwM5w=";
+  src = fetchFromGitHub {
+    owner = "data61";
+    repo = "python-paillier";
+    rev = "refs/tags/${version}";
+    hash = "sha256-P//4ZL4+2zcB5sWvujs2N0CHFz+EBLERWrPGLLHj6CY=";
   };
 
-  buildInputs = [ click gmpy2 numpy ];
+  build-system = [ setuptools ];
+
+  dependencies = [
+    click
+    gmpy2 # optional, but major speed improvement
+  ];
 
-  # 29/233 tests fail
-  doCheck = false;
+  nativeCheckInputs = [
+    pytestCheckHook
+    numpy
+  ];
 
   meta = with lib; {
-    description = "A library for Partially Homomorphic Encryption in Python";
+    description = "Library for Partially Homomorphic Encryption in Python";
     mainProgram = "pheutil";
-    homepage = "https://github.com/n1analytics/python-paillier";
+    homepage = "https://github.com/data61/python-paillier";
     license = licenses.gpl3;
+    maintainers = with maintainers; [ tomasajt ];
   };
 }
diff --git a/pkgs/development/python-modules/phik/default.nix b/pkgs/development/python-modules/phik/default.nix
index b2dae6f29b1ee..af3c33f908bee 100644
--- a/pkgs/development/python-modules/phik/default.nix
+++ b/pkgs/development/python-modules/phik/default.nix
@@ -1,22 +1,20 @@
-{ lib
-, buildPythonPackage
-, cmake
-, fetchFromGitHub
-, joblib
-, jupyter
-, jupyter-client
-, matplotlib
-, nbconvert
-, ninja
-, numba
-, numpy
-, pandas
-, pybind11
-, pytestCheckHook
-, pythonOlder
-, scikit-build
-, scipy
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  cmake,
+  fetchFromGitHub,
+  joblib,
+  matplotlib,
+  ninja,
+  numpy,
+  pandas,
+  pathspec,
+  pyproject-metadata,
+  pybind11,
+  pytestCheckHook,
+  pythonOlder,
+  scikit-build-core,
+  scipy,
 }:
 
 buildPythonPackage rec {
@@ -24,7 +22,7 @@ buildPythonPackage rec {
   version = "0.12.4";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "KaveIO";
@@ -33,58 +31,35 @@ buildPythonPackage rec {
     hash = "sha256-YsH7vVn6gzejunUjUY/RIcvWtaQ/W1gbciJWKi5LDTk=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     cmake
     ninja
-    scikit-build
-    setuptools
+    pathspec
+    pybind11
+    pyproject-metadata
+    scikit-build-core
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     joblib
+    matplotlib
     numpy
-    scipy
     pandas
-    matplotlib
-    numba
-    pybind11
+    scipy
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-    nbconvert
-    jupyter
-    jupyter-client
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  # Uses setuptools to drive build process
+  # Uses scikit-build-core to drive build process
   dontUseCmakeConfigure = true;
 
-  pythonImportsCheck = [
-    "phik"
-  ];
-
-  postInstall = ''
-    rm -r $out/bin
-  '';
+  pythonImportsCheck = [ "phik" ];
 
   preCheck = ''
     # import from $out
     rm -r phik
   '';
 
-  disabledTests = [
-    # TypeError: 'numpy.float64' object cannot be interpreted as an integer
-    # https://github.com/KaveIO/PhiK/issues/73
-    "test_significance_matrix_hybrid"
-    "test_significance_matrix_mc"
-  ];
-
-  disabledTestPaths = [
-    # Don't test integrations
-    "tests/phik_python/integration/"
-  ];
-
   meta = with lib; {
     description = "Phi_K correlation analyzer library";
     longDescription = ''
diff --git a/pkgs/development/python-modules/phone-modem/default.nix b/pkgs/development/python-modules/phone-modem/default.nix
index 8ec54bd84012f..aea3e26e3e6a0 100644
--- a/pkgs/development/python-modules/phone-modem/default.nix
+++ b/pkgs/development/python-modules/phone-modem/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aioserial
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  aioserial,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
       --replace "aioserial==1.3.0" "aioserial"
   '';
 
-  propagatedBuildInputs = [
-    aioserial
-  ];
+  propagatedBuildInputs = [ aioserial ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/phonemizer/default.nix b/pkgs/development/python-modules/phonemizer/default.nix
index 26a95b1d5847c..114a16888632c 100644
--- a/pkgs/development/python-modules/phonemizer/default.nix
+++ b/pkgs/development/python-modules/phonemizer/default.nix
@@ -1,16 +1,15 @@
-{ lib
-, stdenv
-, substituteAll
-, buildPythonPackage
-, fetchPypi
-, joblib
-, segments
-, attrs
-, dlinfo
-, typing-extensions
-, espeak-ng
-, pytestCheckHook
-, pytest-cov
+{
+  lib,
+  stdenv,
+  substituteAll,
+  buildPythonPackage,
+  fetchPypi,
+  joblib,
+  segments,
+  attrs,
+  dlinfo,
+  typing-extensions,
+  espeak-ng,
 }:
 
 buildPythonPackage rec {
@@ -53,6 +52,6 @@ buildPythonPackage rec {
     description = "Simple text to phones converter for multiple languages";
     mainProgram = "phonemize";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/phonenumbers/default.nix b/pkgs/development/python-modules/phonenumbers/default.nix
index b2bb4cbfd01d6..8df6d6fc3d90c 100644
--- a/pkgs/development/python-modules/phonenumbers/default.nix
+++ b/pkgs/development/python-modules/phonenumbers/default.nix
@@ -1,33 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "phonenumbers";
-  version = "8.13.31";
+  version = "8.13.39";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-J0IHHJ0K8JJ0yKWyom2aNqy/LqXLYpQ8ws6ttcDIdkE=";
+    hash = "sha256-23yklw0gayBWIxEFMAdTsaWyKfQ0FvjCswEOY/u2jXc=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests/*.py"
-  ];
+  pytestFlagsArray = [ "tests/*.py" ];
 
-  pythonImportsCheck = [
-    "phonenumbers"
-  ];
+  pythonImportsCheck = [ "phonenumbers" ];
 
   meta = with lib; {
     description = "Python module for handling international phone numbers";
diff --git a/pkgs/development/python-modules/phonenumberslite/default.nix b/pkgs/development/python-modules/phonenumberslite/default.nix
new file mode 100644
index 0000000000000..c2e80c4786079
--- /dev/null
+++ b/pkgs/development/python-modules/phonenumberslite/default.nix
@@ -0,0 +1,14 @@
+{
+  mkPythonMetaPackage,
+  phonenumbers,
+}:
+
+mkPythonMetaPackage {
+  pname = "phonenumberslite";
+  inherit (phonenumbers) version;
+  dependencies = [ phonenumbers ];
+  optional-dependencies = phonenumbers.optional-dependencies or { };
+  meta = {
+    inherit (phonenumbers.meta) changelog description homepage;
+  };
+}
diff --git a/pkgs/development/python-modules/phonopy/default.nix b/pkgs/development/python-modules/phonopy/default.nix
index 0cdd9d8bff130..38b239651b7c0 100644
--- a/pkgs/development/python-modules/phonopy/default.nix
+++ b/pkgs/development/python-modules/phonopy/default.nix
@@ -1,32 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, pyyaml
-, matplotlib
-, h5py
-, scipy
-, spglib
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  pyyaml,
+  matplotlib,
+  h5py,
+  scipy,
+  spglib,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "phonopy";
-  version = "2.22.1";
+  version = "2.24.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-nux6/1z1xBr+4+fWrR/oOc+zVOI9j60p/SHHAPZ+hWI=";
+    hash = "sha256-VHtifCC28GKIE+0oz1wMgmZ9G6+rT8nF0PG6tYkhjG8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     h5py
@@ -37,18 +36,14 @@ buildPythonPackage rec {
     spglib
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # prevent pytest from importing local directory
   preCheck = ''
     rm -r phonopy
   '';
 
-  pythonImportsCheck = [
-    "phonopy"
-  ];
+  pythonImportsCheck = [ "phonopy" ];
 
   meta = with lib; {
     description = "Modulefor phonon calculations at harmonic and quasi-harmonic levels";
diff --git a/pkgs/development/python-modules/photutils/default.nix b/pkgs/development/python-modules/photutils/default.nix
new file mode 100644
index 0000000000000..68c5148f7eb46
--- /dev/null
+++ b/pkgs/development/python-modules/photutils/default.nix
@@ -0,0 +1,86 @@
+{
+  lib,
+  astropy,
+  bottleneck,
+  buildPythonPackage,
+  cython,
+  extension-helpers,
+  fetchFromGitHub,
+  gwcs,
+  matplotlib,
+  numpy,
+  pythonOlder,
+  rasterio,
+  scikit-image,
+  scikit-learn,
+  scipy,
+  setuptools-scm,
+  setuptools,
+  shapely,
+  tqdm,
+  wheel,
+}:
+
+buildPythonPackage rec {
+  pname = "photutils";
+  version = "1.13.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "astropy";
+    repo = "photutils";
+    rev = "refs/tags/${version}";
+    hash = "sha256-J1i1H7AfQdiUIyBpgJK3dkH6C8MoEOwug4YQP+NEPbk=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "'numpy>=2.0.0rc1'," ""
+  '';
+
+  build-system = [
+    setuptools
+    setuptools-scm
+    wheel
+  ];
+
+  nativeBuildInputs = [
+    cython
+    extension-helpers
+    numpy
+  ];
+
+  dependencies = [
+    astropy
+    numpy
+  ];
+
+  passthru.optional-dependencies = {
+    all = [
+      bottleneck
+      gwcs
+      matplotlib
+      rasterio
+      scikit-image
+      scikit-learn
+      scipy
+      shapely
+      tqdm
+    ];
+  };
+
+  # With 1.12.0 tests have issues importing modules
+  doCheck = false;
+
+  pythonImportsCheck = [ "photutils" ];
+
+  meta = with lib; {
+    description = "Astropy package for source detection and photometry";
+    homepage = "https://github.com/astropy/photutils";
+    changelog = "https://github.com/astropy/photutils/blob/${version}/CHANGES.rst";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/phply/default.nix b/pkgs/development/python-modules/phply/default.nix
new file mode 100644
index 0000000000000..b3550f79a49fa
--- /dev/null
+++ b/pkgs/development/python-modules/phply/default.nix
@@ -0,0 +1,35 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  ply,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "phply";
+  version = "1.2.6";
+
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-Cyd3TShfUHo0RYBaBfj7KZj1bXCScPeLiSCLZbDYSRc=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ ply ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "phply" ];
+
+  meta = with lib; {
+    description = "Lexer and parser for PHP source implemented using PLY";
+    homepage = "https://github.com/viraptor/phply";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ erictapen ];
+  };
+}
diff --git a/pkgs/development/python-modules/phpserialize/default.nix b/pkgs/development/python-modules/phpserialize/default.nix
index 5c5d9929100d5..89e7c9d30b555 100644
--- a/pkgs/development/python-modules/phpserialize/default.nix
+++ b/pkgs/development/python-modules/phpserialize/default.nix
@@ -1,4 +1,8 @@
-{lib, buildPythonPackage, fetchPypi}:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "phpserialize";
@@ -14,7 +18,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = {
-    description = "A port of the serialize and unserialize functions of PHP to Python";
+    description = "Port of the serialize and unserialize functions of PHP to Python";
     homepage = "https://github.com/mitsuhiko/phpserialize";
     license = lib.licenses.bsd3;
     maintainers = with lib.maintainers; [ jluttine ];
diff --git a/pkgs/development/python-modules/phunspell/default.nix b/pkgs/development/python-modules/phunspell/default.nix
new file mode 100644
index 0000000000000..c4d8cf4ddc160
--- /dev/null
+++ b/pkgs/development/python-modules/phunspell/default.nix
@@ -0,0 +1,53 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+
+  setuptools,
+
+  spylls,
+}:
+
+buildPythonPackage rec {
+  pname = "phunspell";
+  version = "0.1.6";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "dvwright";
+    repo = "phunspell";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-TlO9Ccr2iRN+s3JV+3P36RF9oFY32fj+24sKslZZCVk=";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "fix-package-data-warning.patch";
+      url = "https://github.com/dvwright/phunspell/commit/70a0ee8af8442797e03916cea31637c21e6d32d9.patch";
+      hash = "sha256-kSaKHd7dVJM8+2dqxjs26Hv0feNXAXXymUE97DNVBFM=";
+    })
+    (fetchpatch {
+      name = "replace-description-file-deprecated-option.patch";
+      url = "https://github.com/dvwright/phunspell/commit/331c593b486cebe1a9b72befa568de9b51033f15.patch";
+      hash = "sha256-gdYfeG1vBtjnDDCjmg+ZSuToqVe0hrzB3RIqBLGNvBQ=";
+    })
+  ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [ spylls ];
+
+  # for tests need lots of RAM, just skip...
+  doCheck = false;
+
+  pythonImportsCheck = [ "phunspell" ];
+
+  meta = with lib; {
+    description = "Pure Python spell checker, wrapping spylls a port of Hunspell";
+    homepage = "https://github.com/dvwright/phunspell";
+    changelog = "https://github.com/dvwright/phunspell/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ vizid ];
+  };
+}
diff --git a/pkgs/development/python-modules/phx-class-registry/default.nix b/pkgs/development/python-modules/phx-class-registry/default.nix
index 0997f7987ada8..8843e0039ad80 100644
--- a/pkgs/development/python-modules/phx-class-registry/default.nix
+++ b/pkgs/development/python-modules/phx-class-registry/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,18 +18,17 @@ buildPythonPackage rec {
     hash = "sha256-kJbyUzyklVSvW6bBxTTTrY+WhfcV0GUf/+Pzyv+7sEA=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "class_registry"
-  ];
+  pythonImportsCheck = [ "class_registry" ];
 
   meta = with lib; {
     description = "Factory and registry pattern for Python classes";
     homepage = "https://class-registry.readthedocs.io/en/latest/";
     license = licenses.mit;
-    maintainers = with maintainers; [ hrdinka tomhoule ];
+    maintainers = with maintainers; [
+      hrdinka
+      tomhoule
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pi1wire/default.nix b/pkgs/development/python-modules/pi1wire/default.nix
index 6d3debdcaa2fb..ca57c6fd8b355 100644
--- a/pkgs/development/python-modules/pi1wire/default.nix
+++ b/pkgs/development/python-modules/pi1wire/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-l/5w71QsAW4BvILOaLdUVvQ8xxUm1ZTzUESRFzUgtic=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     "test_find_all_sensors" # flaky
diff --git a/pkgs/development/python-modules/piano-transcription-inference/default.nix b/pkgs/development/python-modules/piano-transcription-inference/default.nix
index be46384649be3..788c3cf0bfc26 100644
--- a/pkgs/development/python-modules/piano-transcription-inference/default.nix
+++ b/pkgs/development/python-modules/piano-transcription-inference/default.nix
@@ -1,14 +1,14 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, fetchurl
-, librosa
-, matplotlib
-, mido
-, torch
-, torchlibrosa
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  fetchurl,
+  librosa,
+  matplotlib,
+  mido,
+  torch,
+  torchlibrosa,
 }:
 
 buildPythonPackage rec {
@@ -71,7 +71,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "piano_transcription_inference" ];
 
   meta = with lib; {
-    description = "A piano transcription inference package";
+    description = "Piano transcription inference package";
     homepage = "https://github.com/qiuqiangkong/piano_transcription_inference";
     license = licenses.mit;
     maintainers = with maintainers; [ azuwis ];
diff --git a/pkgs/development/python-modules/piccata/default.nix b/pkgs/development/python-modules/piccata/default.nix
index 20bbc0066d23f..847bd778a8854 100644
--- a/pkgs/development/python-modules/piccata/default.nix
+++ b/pkgs/development/python-modules/piccata/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy27
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,18 +20,14 @@ buildPythonPackage rec {
     hash = "sha256-Vuhwt+esTkvyEIRVYaRGvNMTAXVWBBv/6lpaxN5RrBA=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # No communication possible in the sandbox
     "test_client_server_communication"
   ];
 
-  pythonImportsCheck = [
-    "piccata"
-  ];
+  pythonImportsCheck = [ "piccata" ];
 
   meta = with lib; {
     description = "Simple CoAP (RFC7252) toolkit";
diff --git a/pkgs/development/python-modules/piccolo-theme/default.nix b/pkgs/development/python-modules/piccolo-theme/default.nix
index b6406ca42269c..49dd8b2c3c4d7 100644
--- a/pkgs/development/python-modules/piccolo-theme/default.nix
+++ b/pkgs/development/python-modules/piccolo-theme/default.nix
@@ -1,27 +1,39 @@
-{ lib, buildPythonPackage, fetchPypi, sphinx }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  sphinx,
+}:
 
 buildPythonPackage rec {
   pname = "piccolo-theme";
-  version = "0.21.0";
+  version = "0.23.0";
   format = "setuptools";
 
-  src = fetchPypi {
+  disabled = pythonOlder "3.9";
+
+ src = fetchPypi {
     pname = "piccolo_theme";
     inherit version;
-    hash = "sha256-mQqZ6Rwx0VoDBVQ0zbvCOmAMKAMv67Xd1ksYW6w2QPM=";
+    hash = "sha256-jlnKZK2wuEM+n+3Y59U6+LyQJRBUwQAn0NarAGlNdx0=";
   };
 
-  propagatedBuildInputs = [
-    sphinx
-  ];
+  dependencies = [ sphinx ];
+
+  # Module has no tests
+  doCheck = false;
 
   pythonImportsCheck = [ "piccolo_theme" ];
 
   meta = with lib; {
     description = "Clean and modern Sphinx theme";
     homepage = "https://piccolo-theme.readthedocs.io";
-    license = with licenses; [ mit asl20 ];
+    changelog = "https://github.com/piccolo-orm/piccolo_theme/releases/tag/${version}";
+    license = with licenses; [
+      mit
+      asl20
+    ];
     maintainers = with maintainers; [ loicreynier ];
-    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/pick/default.nix b/pkgs/development/python-modules/pick/default.nix
index 171c639afefc0..5d26864fac794 100644
--- a/pkgs/development/python-modules/pick/default.nix
+++ b/pkgs/development/python-modules/pick/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "pick";
-  version = "2.3.2";
+  version = "2.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "wong2";
     repo = "pick";
     rev = "refs/tags/v${version}";
-    hash = "sha256-6bkV9XEum5kbANqv/Xth+taCUl4nmuWskucq4jmV+Lc=";
+    hash = "sha256-SnH37n0MCjO60IU6kUPxJkIC5vBCVGZXBhFfwvRI/tQ=";
   };
 
   build-system = [ poetry-core ];
diff --git a/pkgs/development/python-modules/pickleshare/default.nix b/pkgs/development/python-modules/pickleshare/default.nix
index d6be608aaa2bb..be52d4d0e4f17 100644
--- a/pkgs/development/python-modules/pickleshare/default.nix
+++ b/pkgs/development/python-modules/pickleshare/default.nix
@@ -1,9 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, path
-, pathlib2
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  path,
 }:
 
 buildPythonPackage rec {
@@ -16,8 +15,7 @@ buildPythonPackage rec {
     sha256 = "87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca";
   };
 
-  propagatedBuildInputs = [ path ]
-    ++ lib.optional (pythonOlder "3.4") pathlib2;
+  propagatedBuildInputs = [ path ];
 
   # No proper test suite
   doCheck = false;
@@ -27,5 +25,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/vivainio/pickleshare";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/picobox/default.nix b/pkgs/development/python-modules/picobox/default.nix
index 221493eb2194c..b180c5618daca 100644
--- a/pkgs/development/python-modules/picobox/default.nix
+++ b/pkgs/development/python-modules/picobox/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flask
-, hatchling
-, hatch-vcs
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flask,
+  hatchling,
+  hatch-vcs,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "picobox"
-  ];
+  pythonImportsCheck = [ "picobox" ];
 
   meta = with lib; {
     description = "Opinionated dependency injection framework";
diff --git a/pkgs/development/python-modules/picos/default.nix b/pkgs/development/python-modules/picos/default.nix
index 5bc5e35c6332e..5d5e715ec6486 100644
--- a/pkgs/development/python-modules/picos/default.nix
+++ b/pkgs/development/python-modules/picos/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitLab
-, numpy
-, cvxopt
-, python
-, networkx
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  numpy,
+  cvxopt,
+  python,
+  networkx,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
   };
 
   # Needed only for the tests
-  nativeCheckInputs = [
-    networkx
-  ];
+  nativeCheckInputs = [ networkx ];
 
   propagatedBuildInputs = [
     numpy
@@ -34,7 +33,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A Python interface to conic optimization solvers";
+    description = "Python interface to conic optimization solvers";
     homepage = "https://gitlab.com/picos-api/picos";
     license = licenses.gpl3;
     maintainers = with maintainers; [ tobiasBora ];
diff --git a/pkgs/development/python-modules/picosvg/default.nix b/pkgs/development/python-modules/picosvg/default.nix
index 74a6b408f6a87..f147b22ad97eb 100644
--- a/pkgs/development/python-modules/picosvg/default.nix
+++ b/pkgs/development/python-modules/picosvg/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools-scm
-, absl-py
-, lxml
-, skia-pathops
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  absl-py,
+  lxml,
+  skia-pathops,
+  pytestCheckHook,
 }:
 buildPythonPackage rec {
   pname = "picosvg";
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-jG1rfamegnX8GXDwqkGFBFzUeycRLDObJvGbxNk6OpM=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     absl-py
@@ -30,12 +29,10 @@ buildPythonPackage rec {
     skia-pathops
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # a few tests are failing on aarch64
-  doCheck = !stdenv.isAarch64;
+  doCheck = !stdenv.hostPlatform.isAarch64;
 
   meta = with lib; {
     description = "Tool to simplify SVGs";
diff --git a/pkgs/development/python-modules/pid/default.nix b/pkgs/development/python-modules/pid/default.nix
index de7856accabc5..b0bb834a302fb 100644
--- a/pkgs/development/python-modules/pid/default.nix
+++ b/pkgs/development/python-modules/pid/default.nix
@@ -1,28 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
+{
+  lib,
+  buildPythonPackage,
+  fetchpatch2,
+  fetchPypi,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pid";
   version = "3.0.4";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "0e33670e83f6a33ebb0822e43a609c3247178d4a375ff50a4689e266d853eb66";
   };
 
-  buildInputs = [ nose ];
+  patches = [
+    # apply c9d1550ba2ee73231f8e984d75d808c8cc103748 to remove nose dependency. change is in repo, but hasn't been released on pypi.
+    (fetchpatch2 {
+      url = "https://github.com/trbs/pid/commit/c9d1550ba2ee73231f8e984d75d808c8cc103748.patch";
+      hash = "sha256-2F31LlrJku1xzmI7P+QLyUZ8CzVHx25APp88qwWkZxw=";
+    })
+  ];
 
-  # No tests included
-  doCheck = false;
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  doCheck = true;
 
   meta = with lib; {
     description = "Pidfile featuring stale detection and file-locking";
     homepage = "https://github.com/trbs/pid/";
     license = licenses.asl20;
   };
-
 }
diff --git a/pkgs/development/python-modules/piep/default.nix b/pkgs/development/python-modules/piep/default.nix
index 0825380a925ba..6fc53f1bec978 100644
--- a/pkgs/development/python-modules/piep/default.nix
+++ b/pkgs/development/python-modules/piep/default.nix
@@ -1,30 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, pygments
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pygments,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   version = "0.10.0";
-  format = "setuptools";
   pname = "piep";
-  disabled = isPy3k;
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-aM7KQJZr1P0Hs2ReyRj2ItGUo+fRJ+TU3lLAU2Mu8KA=";
   };
 
-  propagatedBuildInputs = [ pygments ];
-  nativeCheckInputs = [ nose ];
+  build-system = [ setuptools ];
+
+  dependencies = [ pygments ];
+
+  pythonImportsCheck = [ "piep" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Bringing the power of python to stream editing";
     homepage = "https://github.com/timbertson/piep";
     maintainers = with maintainers; [ timbertson ];
-    license = licenses.gpl3;
+    license = licenses.gpl3Only;
+    mainProgram = "piep";
   };
-
 }
diff --git a/pkgs/development/python-modules/piexif/default.nix b/pkgs/development/python-modules/piexif/default.nix
index f2d7dbe2b11ae..9abd4d5cdc108 100644
--- a/pkgs/development/python-modules/piexif/default.nix
+++ b/pkgs/development/python-modules/piexif/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch, pillow }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pillow,
+}:
 
 buildPythonPackage rec {
   pname = "piexif";
diff --git a/pkgs/development/python-modules/pijuice/default.nix b/pkgs/development/python-modules/pijuice/default.nix
index ecbe9343008b4..1f4513ec6d893 100644
--- a/pkgs/development/python-modules/pijuice/default.nix
+++ b/pkgs/development/python-modules/pijuice/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
-, smbus-cffi
-, urwid
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  smbus-cffi,
+  urwid,
 }:
 
 buildPythonPackage rec {
@@ -35,7 +36,10 @@ buildPythonPackage rec {
     cd Software/Source
   '';
 
-  propagatedBuildInputs = [ smbus-cffi urwid ];
+  propagatedBuildInputs = [
+    smbus-cffi
+    urwid
+  ];
 
   # Remove the following files from the package:
   #
diff --git a/pkgs/development/python-modules/pika-pool/default.nix b/pkgs/development/python-modules/pika-pool/default.nix
index 0374a5c16d0d9..1a458de4076ac 100644
--- a/pkgs/development/python-modules/pika-pool/default.nix
+++ b/pkgs/development/python-modules/pika-pool/default.nix
@@ -1,28 +1,32 @@
-{ lib, buildPythonPackage, fetchPypi
-, pika
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pika,
 }:
 
 buildPythonPackage rec {
   pname = "pika-pool";
   version = "0.1.3";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "f3985888cc2788cdbd293a68a8b5702a9c955db6f7b8b551aeac91e7f32da397";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py --replace "pika >=0.9,<0.11" "pika"
-  '';
+  pythonRelaxDeps = [ "pika" ];
+
+  build-system = [ setuptools ];
 
   # Tests require database connections
   doCheck = false;
 
-  propagatedBuildInputs = [ pika ];
+  dependencies = [ pika ];
   meta = with lib; {
     homepage = "https://github.com/bninja/pika-pool";
     license = licenses.bsdOriginal;
-    description = "Pools for pikas.";
+    description = "Pools for pikas";
   };
 }
diff --git a/pkgs/development/python-modules/pika/default.nix b/pkgs/development/python-modules/pika/default.nix
index ead9239f5cde7..d520087a17d0a 100644
--- a/pkgs/development/python-modules/pika/default.nix
+++ b/pkgs/development/python-modules/pika/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, gevent
-, twisted
-, tornado
+  # dependencies
+  gevent,
+  twisted,
+  tornado,
 
-# tests
-, nose2
-, mock
+  # tests
+  nose2,
+  mock,
 
 }:
 
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     hash = "sha256-60Z+y3YXazUghfnOy4e7HzM18iju5m5OEt4I3Wg6ty4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     gevent
@@ -69,6 +68,6 @@ buildPythonPackage rec {
     downloadPage = "https://github.com/pika/pika";
     homepage = "https://pika.readthedocs.org";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pikepdf/default.nix b/pkgs/development/python-modules/pikepdf/default.nix
index bfcd4c0589c29..2f3ace4dd7e59 100644
--- a/pkgs/development/python-modules/pikepdf/default.nix
+++ b/pkgs/development/python-modules/pikepdf/default.nix
@@ -1,30 +1,31 @@
-{ lib
-, attrs
-, buildPythonPackage
-, fetchFromGitHub
-, hypothesis
-, pythonOlder
-, jbig2dec
-, deprecated
-, lxml
-, mupdf-headless
-, numpy
-, packaging
-, pillow
-, psutil
-, pybind11
-, pytest-xdist
-, pytestCheckHook
-, python-dateutil
-, python-xmp-toolkit
-, qpdf
-, setuptools
-, substituteAll
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hypothesis,
+  pythonOlder,
+  jbig2dec,
+  deprecated,
+  lxml,
+  mupdf-headless,
+  numpy,
+  packaging,
+  pillow,
+  psutil,
+  pybind11,
+  pytest-xdist,
+  pytestCheckHook,
+  python-dateutil,
+  python-xmp-toolkit,
+  qpdf,
+  setuptools,
+  substituteAll,
 }:
 
 buildPythonPackage rec {
   pname = "pikepdf";
-  version = "8.13.0";
+  version = "9.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -39,7 +40,7 @@ buildPythonPackage rec {
     postFetch = ''
       rm "$out/.git_archival.txt"
     '';
-    hash = "sha256-6HCFPHIQ6+SHt4Zu6CZ0R2Ah+jFnztGOCMhQfvR6FxY=";
+    hash = "sha256-++je4tKnXr504Yl9VBH9dc9fycDrMstRN5hu4s/oe9w=";
   };
 
   patches = [
@@ -52,14 +53,12 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "shims_enabled = not cflags_defined" "shims_enabled = False"
+      --replace-fail "shims_enabled = not cflags_defined" "shims_enabled = False"
   '';
 
-  buildInputs = [
-    qpdf
-  ];
+  buildInputs = [ qpdf ];
 
-  nativeBuildInputs = [
+  build-system = [
     pybind11
     setuptools
   ];
@@ -75,7 +74,7 @@ buildPythonPackage rec {
     python-xmp-toolkit
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     deprecated
     lxml
     packaging
@@ -88,7 +87,7 @@ buildPythonPackage rec {
     homepage = "https://github.com/pikepdf/pikepdf";
     description = "Read and write PDFs with Python, powered by qpdf";
     license = licenses.mpl20;
-    maintainers = with maintainers; [ kiwi dotlambda ];
+    maintainers = with maintainers; [ dotlambda ];
     changelog = "https://github.com/pikepdf/pikepdf/blob/${src.rev}/docs/releasenotes/version${lib.versions.major version}.rst";
   };
 }
diff --git a/pkgs/development/python-modules/pikepdf/paths.patch b/pkgs/development/python-modules/pikepdf/paths.patch
index 1bd030c186c23..83cebed5cc234 100644
--- a/pkgs/development/python-modules/pikepdf/paths.patch
+++ b/pkgs/development/python-modules/pikepdf/paths.patch
@@ -12,10 +12,10 @@ index da40043f..4f566f01 100644
              check=True,
          )
 diff --git a/src/pikepdf/jbig2.py b/src/pikepdf/jbig2.py
-index f89b4f90..f187ebdf 100644
+index 901f3b6f..45551820 100644
 --- a/src/pikepdf/jbig2.py
 +++ b/src/pikepdf/jbig2.py
-@@ -63,7 +63,7 @@ class JBIG2Decoder(JBIG2DecoderInterface):
+@@ -72,7 +72,7 @@ class JBIG2Decoder(JBIG2DecoderInterface):
              output_path = Path(tmpdir) / "outfile"
  
              args = [
@@ -24,12 +24,12 @@ index f89b4f90..f187ebdf 100644
                  "--embedded",
                  "--format",
                  "png",
-@@ -90,7 +90,7 @@ class JBIG2Decoder(JBIG2DecoderInterface):
+@@ -101,7 +101,7 @@ class JBIG2Decoder(JBIG2DecoderInterface):
      def _version(self) -> Version:
          try:
              proc = self._run(
--                ['jbig2dec', '--version'], stdout=PIPE, check=True, encoding='ascii'
-+                ['@jbig2dec@', '--version'], stdout=PIPE, check=True, encoding='ascii'
-             )
-         except (CalledProcessError, FileNotFoundError) as e:
-             raise DependencyError("jbig2dec - not installed or not found") from e
+-                ['jbig2dec', '--version'],
++                ['@jbig2dec@', '--version'],
+                 stdout=PIPE,
+                 check=True,
+                 encoding='ascii',
diff --git a/pkgs/development/python-modules/pilkit/default.nix b/pkgs/development/python-modules/pilkit/default.nix
index 76f6238349a58..f8638d93578b2 100644
--- a/pkgs/development/python-modules/pilkit/default.nix
+++ b/pkgs/development/python-modules/pilkit/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pillow
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  pillow,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,13 +23,9 @@ buildPythonPackage rec {
     hash = "sha256-NmD9PFCkz3lz4AnGoQUpkt35q0zvDVm+kx7lVDFBcHk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pillow
-  ];
+  propagatedBuildInputs = [ pillow ];
 
   nativeCheckInputs = [
     mock
@@ -42,12 +39,10 @@ buildPythonPackage rec {
       --replace "Image.ANTIALIAS" "Image.Resampling.LANCZOS"
   '';
 
-  pythonImportsCheck = [
-    "pilkit"
-  ];
+  pythonImportsCheck = [ "pilkit" ];
 
   meta = with lib; {
-    description = "A collection of utilities and processors for the Python Imaging Library";
+    description = "Collection of utilities and processors for the Python Imaging Library";
     homepage = "https://github.com/matthewwithanm/pilkit/";
     license = licenses.bsd3;
     maintainers = with maintainers; [ domenkozar ];
diff --git a/pkgs/development/python-modules/pillow-heif/default.nix b/pkgs/development/python-modules/pillow-heif/default.nix
index d91408fc864d2..5c8488b9f17ce 100644
--- a/pkgs/development/python-modules/pillow-heif/default.nix
+++ b/pkgs/development/python-modules/pillow-heif/default.nix
@@ -1,42 +1,52 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-
-# build-system
-, cmake
-, nasm
-, pkg-config
-, setuptools
-
-# native dependencies
-, libheif
-, libaom
-, libde265
-, x265
-
-# dependencies
-, pillow
-
-# tests
-, opencv4
-, numpy
-, pympler
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+
+  # build-system
+  cmake,
+  nasm,
+  pkg-config,
+  setuptools,
+
+  # native dependencies
+  libheif,
+  libaom,
+  libde265,
+  x265,
+
+  # dependencies
+  pillow,
+
+  # tests
+  opencv4,
+  numpy,
+  pympler,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pillow-heif";
-  version = "0.16.0";
+  version = "0.17.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "bigcat88";
     repo = "pillow_heif";
     rev = "refs/tags/v${version}";
-    hash = "sha256-TpK6VK2YoOtc4ueag33m5n1umcUWOUgcda/MZEEOR7g=";
+    hash = "sha256-fKh4UbTVj74YxH2vvL24DNmMxg10GSYAmduwuRneE+0=";
   };
 
+  patches = [
+    (fetchpatch2 {
+      # fix libheif 1.18 support in tests
+      url = "https://github.com/bigcat88/pillow_heif/commit/a59434e9ca1138e47e322ddef2adc79e684384f1.patch";
+      hash = "sha256-yVT/pnO5KWMnsO95EPCZgyhx6FIJOhsna7t0zpTjWpE=";
+    })
+  ];
+
   postPatch = ''
     sed -i '/addopts/d' pyproject.toml
   '';
@@ -64,13 +74,9 @@ buildPythonPackage rec {
     RELEASE_FULL_FLAG = 1;
   };
 
-  propagatedBuildInputs = [
-    pillow
-  ];
+  propagatedBuildInputs = [ pillow ];
 
-  pythonImportsCheck = [
-    "pillow_heif"
-  ];
+  pythonImportsCheck = [ "pillow_heif" ];
 
   nativeCheckInputs = [
     opencv4
@@ -79,29 +85,35 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTests = [
-    # Time based
-    "test_decode_threads"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # https://github.com/bigcat88/pillow_heif/issues/89
-    # not reproducible in nixpkgs
-    "test_opencv_crash"
-  ] ++ lib.optionals (stdenv.isLinux && stdenv.isAarch64) [
-    # RuntimeError: Encoder plugin generated an error: Unsupported bit depth: Bit depth not supported by x265
-    "test_open_heif_compare_non_standard_modes_data"
-    "test_open_save_disable_16bit"
-    "test_save_bgr_16bit_to_10_12_bit"
-    "test_save_bgra_16bit_to_10_12_bit"
-    "test_premultiplied_alpha"
-    "test_hdr_save"
-    "test_I_color_modes_to_10_12_bit"
-  ];
+  disabledTests =
+    [
+      # Time based
+      "test_decode_threads"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # https://github.com/bigcat88/pillow_heif/issues/89
+      # not reproducible in nixpkgs
+      "test_opencv_crash"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
+      # RuntimeError: Encoder plugin generated an error: Unsupported bit depth: Bit depth not supported by x265
+      "test_open_heif_compare_non_standard_modes_data"
+      "test_open_save_disable_16bit"
+      "test_save_bgr_16bit_to_10_12_bit"
+      "test_save_bgra_16bit_to_10_12_bit"
+      "test_premultiplied_alpha"
+      "test_hdr_save"
+      "test_I_color_modes_to_10_12_bit"
+    ];
 
   meta = {
     changelog = "https://github.com/bigcat88/pillow_heif/releases/tag/v${version}";
     description = "Python library for working with HEIF images and plugin for Pillow";
     homepage = "https://github.com/bigcat88/pillow_heif";
-    license = with lib.licenses; [ bsd3 lgpl3 ];
+    license = with lib.licenses; [
+      bsd3
+      lgpl3
+    ];
     maintainers = with lib.maintainers; [ dandellion ];
   };
 }
diff --git a/pkgs/development/python-modules/pillow-jpls/default.nix b/pkgs/development/python-modules/pillow-jpls/default.nix
index 6f5b77c50e4c2..7aebaf432c001 100644
--- a/pkgs/development/python-modules/pillow-jpls/default.nix
+++ b/pkgs/development/python-modules/pillow-jpls/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, cmake
-, ninja
-, scikit-build-core
-, charls
-, eigen
-, fmt
-, numpy
-, pillow
-, pybind11
-, setuptools
-, pathspec
-, pyproject-metadata
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  cmake,
+  ninja,
+  scikit-build-core,
+  charls,
+  eigen,
+  fmt,
+  numpy,
+  pillow,
+  pybind11,
+  setuptools,
+  pathspec,
+  pyproject-metadata,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -32,11 +33,17 @@ buildPythonPackage rec {
     hash = "sha256-Rc4/S8BrYoLdn7eHDBaoUt1Qy+h0TMAN5ixCAuRmfPU=";
   };
 
+  env.SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  dontUseCmakeConfigure = true;
+
   postPatch = ''
-    substituteInPlace pyproject.toml --replace '"conan~=2.0.16",' ""
+    substituteInPlace pyproject.toml \
+      --replace-fail '"conan~=2.0.16",' "" \
+      --replace-fail '"pybind11~=2.11.1",' '"pybind11",'
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     cmake
     ninja
     pybind11
@@ -44,36 +51,36 @@ buildPythonPackage rec {
     setuptools
     setuptools-scm
   ];
+
   buildInputs = [
     charls
     eigen
     fmt
   ];
-  propagatedBuildInputs = [
+
+  dependencies = [
     numpy
     pillow
     pathspec
     pyproject-metadata
   ];
 
-  pypaBuildFlags = [ "-C" "cmake.args='--preset=sysdeps'" ];
-  dontUseCmakeConfigure = true;
+  pypaBuildFlags = [
+    "-C"
+    "cmake.args='--preset=sysdeps'"
+  ];
 
-  env.SETUPTOOLS_SCM_PRETEND_VERSION = version;
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  checkInputs = [
-    pytestCheckHook
-  ];
-  # prevent importing from build during test collection:
+  # Prevent importing from build during test collection:
   preCheck = ''rm -rf pillow_jpls'';
 
-  pythonImportsCheck = [
-    "pillow_jpls"
-  ];
+  pythonImportsCheck = [ "pillow_jpls" ];
 
   meta = with lib; {
-    description = "A JPEG-LS plugin for the Python Pillow library";
+    description = "JPEG-LS plugin for the Python Pillow library";
     homepage = "https://github.com/planetmarshall/pillow-jpls";
+    changelog = "https://github.com/planetmarshall/pillow-jpls/releases/tag/v${version}";
     license = licenses.bsd3;
     maintainers = with maintainers; [ bcdarwin ];
   };
diff --git a/pkgs/development/python-modules/pillow-simd/default.nix b/pkgs/development/python-modules/pillow-simd/default.nix
index 55842f20019de..2d3551d171e9a 100644
--- a/pkgs/development/python-modules/pillow-simd/default.nix
+++ b/pkgs/development/python-modules/pillow-simd/default.nix
@@ -1,37 +1,63 @@
-{ lib, stdenv, buildPythonPackage, fetchFromGitHub, isPyPy, isPy3k
-, olefile, freetype, libjpeg, zlib, libtiff, libwebp, libxcrypt, tcl, lcms2
-, libxcb, tk, libX11, openjpeg, libimagequant, pyroma, numpy, defusedxml
-, pytestCheckHook, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPyPy,
+  isPy3k,
+  olefile,
+  freetype,
+  libjpeg,
+  zlib,
+  libtiff,
+  libwebp,
+  libxcrypt,
+  tcl,
+  lcms2,
+  libxcb,
+  tk,
+  libX11,
+  openjpeg,
+  libimagequant,
+  pyroma,
+  numpy,
+  defusedxml,
+  pytestCheckHook,
+  setuptools,
 }@args:
 
-import ../pillow/generic.nix (rec {
-  pname = "Pillow-SIMD";
-  # check for release version on https://pypi.org/project/Pillow-SIMD/#history
-  # does not match the latest pillow release version!
-  version = "9.0.0.post1";
-  format = "setuptools";
+import ../pillow/generic.nix (
+  rec {
+    pname = "Pillow-SIMD";
+    # check for release version on https://pypi.org/project/Pillow-SIMD/#history
+    # does not match the latest pillow release version!
+    version = "9.0.0.post1";
+    format = "setuptools";
 
-  disabled = !isPy3k;
+    disabled = !isPy3k;
 
-  src = fetchFromGitHub {
-    owner = "uploadcare";
-    repo = "pillow-simd";
-    rev = "v${version}";
-    hash = "sha256-qTZYhgHjVMXqoYl3mG1xVrFaWrPidSY8HlyFQizV27Y=";
-  };
+    src = fetchFromGitHub {
+      owner = "uploadcare";
+      repo = "pillow-simd";
+      rev = "v${version}";
+      hash = "sha256-qTZYhgHjVMXqoYl3mG1xVrFaWrPidSY8HlyFQizV27Y=";
+    };
 
-  meta = with lib; {
-    broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin;
-    homepage = "https://python-pillow.github.io/pillow-perf/";
-    description = "The friendly PIL fork - SIMD version";
-    longDescription = ''
-      Pillow-SIMD is "following" Pillow. Pillow-SIMD versions are 100% compatible drop-in replacements for Pillow of the same version.
+    meta = with lib; {
+      broken =
+        (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) || stdenv.hostPlatform.isDarwin;
+      homepage = "https://python-pillow.github.io/pillow-perf/";
+      description = "Friendly PIL fork - SIMD version";
+      longDescription = ''
+        Pillow-SIMD is "following" Pillow. Pillow-SIMD versions are 100% compatible drop-in replacements for Pillow of the same version.
 
-      SIMD stands for "single instruction, multiple data" and its essence is in performing the same operation on multiple data points simultaneously by using multiple processing elements. Common CPU SIMD instruction sets are MMX, SSE-SSE4, AVX, AVX2, AVX512, NEON.
+        SIMD stands for "single instruction, multiple data" and its essence is in performing the same operation on multiple data points simultaneously by using multiple processing elements. Common CPU SIMD instruction sets are MMX, SSE-SSE4, AVX, AVX2, AVX512, NEON.
 
-      Currently, Pillow-SIMD can be compiled with SSE4 (default) or AVX2 support.
-    '';
-    license = licenses.hpnd;
-    maintainers = with maintainers; [ ];
-  };
-} // args )
+        Currently, Pillow-SIMD can be compiled with SSE4 (default) or AVX2 support.
+      '';
+      license = licenses.hpnd;
+      maintainers = [ ];
+    };
+  }
+  // args
+)
diff --git a/pkgs/development/python-modules/pillow/default.nix b/pkgs/development/python-modules/pillow/default.nix
index f101d6b361ec1..b5257f5101d2c 100644
--- a/pkgs/development/python-modules/pillow/default.nix
+++ b/pkgs/development/python-modules/pillow/default.nix
@@ -1,42 +1,74 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, isPyPy
-, defusedxml, olefile, freetype, libjpeg, zlib, libtiff, libwebp, libxcrypt, tcl, lcms2, tk, libX11
-, libxcb, openjpeg, libimagequant, numpy, pytestCheckHook, setuptools
-# for passthru.tests
-, imageio, matplotlib, pilkit, pydicom, reportlab
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  isPyPy,
+  defusedxml,
+  olefile,
+  freetype,
+  libjpeg,
+  zlib,
+  libtiff,
+  libwebp,
+  libxcrypt,
+  tcl,
+  lcms2,
+  tk,
+  libX11,
+  libxcb,
+  openjpeg,
+  libimagequant,
+  numpy,
+  pytestCheckHook,
+  setuptools,
+  # for passthru.tests
+  imageio,
+  matplotlib,
+  pilkit,
+  pydicom,
+  reportlab,
+  sage,
 }@args:
 
-import ./generic.nix (rec {
-  pname = "pillow";
-  version = "10.2.0";
-  format = "pyproject";
+import ./generic.nix (
+  rec {
+    pname = "pillow";
+    version = "10.4.0";
+    format = "pyproject";
 
-  disabled = pythonOlder "3.8";
+    disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    pname = "pillow";
-    inherit version;
-    hash = "sha256-6H8LLHgVfhLXaGsn1jwHD9ZdmU6N2ubzKODc9KDNAH4=";
-  };
+    src = fetchPypi {
+      pname = "pillow";
+      inherit version;
+      hash = "sha256-Fmwc1NJDCbMNYfefSpEUt7IxPXRQkSJ3hV/139fNSgY=";
+    };
 
-  passthru.tests = {
-    inherit imageio matplotlib pilkit pydicom reportlab;
-  };
+    passthru.tests = {
+      inherit
+        imageio
+        matplotlib
+        pilkit
+        pydicom
+        reportlab
+        sage
+        ;
+    };
 
-  meta = with lib; {
-    homepage = "https://python-pillow.org/";
-    description = "The friendly PIL fork (Python Imaging Library)";
-    longDescription = ''
-      The Python Imaging Library (PIL) adds image processing
-      capabilities to your Python interpreter.  This library
-      supports many file formats, and provides powerful image
-      processing and graphics capabilities.
-    '';
-    license = licenses.hpnd;
-    maintainers = with maintainers; [ goibhniu prikhi ];
-  };
-} // args )
+    meta = with lib; {
+      homepage = "https://python-pillow.org/";
+      description = "Friendly PIL fork (Python Imaging Library)";
+      longDescription = ''
+        The Python Imaging Library (PIL) adds image processing
+        capabilities to your Python interpreter.  This library
+        supports many file formats, and provides powerful image
+        processing and graphics capabilities.
+      '';
+      license = licenses.hpnd;
+      maintainers = with maintainers; [ prikhi ];
+    };
+  }
+  // args
+)
diff --git a/pkgs/development/python-modules/pillow/generic.nix b/pkgs/development/python-modules/pillow/generic.nix
index 33276d3abd08e..1ecaea6b205df 100644
--- a/pkgs/development/python-modules/pillow/generic.nix
+++ b/pkgs/development/python-modules/pillow/generic.nix
@@ -1,17 +1,25 @@
-{ pname
-, version
-, disabled
-, src
-, patches ? []
-, meta
-, passthru ? {}
-, ...
+{
+  pname,
+  version,
+  src,
+  patches ? [ ],
+  meta,
+  passthru ? { },
+  ...
 }@args:
 
 with args;
 
 buildPythonPackage rec {
-  inherit pname version format src meta passthru patches;
+  inherit
+    pname
+    version
+    format
+    src
+    meta
+    passthru
+    patches
+    ;
 
   # Disable imagefont tests, because they don't work well with infinality:
   # https://github.com/python-pillow/Pillow/issues/1259
@@ -19,31 +27,52 @@ buildPythonPackage rec {
     rm Tests/test_imagefont.py
   '';
 
-  disabledTests = [
-    # Code quality mismathch 9 vs 10
-    "test_pyroma"
+  disabledTests =
+    [
+      # Code quality mismathch 9 vs 10
+      "test_pyroma"
 
-    # pillow-simd
-    "test_roundtrip"
-    "test_basic"
-    "test_custom_metadata"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # Disable darwin tests which require executables: `iconutil` and `screencapture`
-    "test_grab"
-    "test_grabclipboard"
-    "test_save"
-  ];
+      # pillow-simd
+      "test_roundtrip"
+      "test_basic"
+      "test_custom_metadata"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Disable darwin tests which require executables: `iconutil` and `screencapture`
+      "test_grab"
+      "test_grabclipboard"
+      "test_save"
+    ];
 
-  propagatedBuildInputs = [ olefile ]
-    ++ lib.optionals (lib.versionAtLeast version "8.2.0") [ defusedxml ];
+  propagatedBuildInputs = [
+    olefile
+  ] ++ lib.optionals (lib.versionAtLeast version "8.2.0") [ defusedxml ];
 
-  nativeCheckInputs = [ pytestCheckHook numpy ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    numpy
+  ];
 
   nativeBuildInputs = [ setuptools ];
 
-  buildInputs = [ freetype libjpeg openjpeg libimagequant zlib libtiff libwebp libxcrypt tcl lcms2 ]
+  buildInputs =
+    [
+      freetype
+      libjpeg
+      openjpeg
+      libimagequant
+      zlib
+      libtiff
+      libwebp
+      libxcrypt
+      tcl
+      lcms2
+    ]
     ++ lib.optionals (lib.versionAtLeast version "7.1.0") [ libxcb ]
-    ++ lib.optionals (isPyPy) [ tk libX11 ];
+    ++ lib.optionals (isPyPy) [
+      tk
+      libX11
+    ];
 
   # NOTE: we use LCMS_ROOT as WEBP root since there is not other setting for webp.
   # NOTE: The Pillow install script will, by default, add paths like /usr/lib
@@ -54,24 +83,27 @@ buildPythonPackage rec {
   # setting here, instead of passing the `--disable-platform-guessing`
   # command-line option, since the command-line option doesn't work when we run
   # tests.
-  preConfigure = let
-    libinclude' = pkg: ''"${pkg.out}/lib", "${pkg.out}/include"'';
-    libinclude = pkg: ''"${pkg.out}/lib", "${pkg.dev}/include"'';
-  in ''
-    sed -i "setup.py" \
-        -e 's|^FREETYPE_ROOT =.*$|FREETYPE_ROOT = ${libinclude freetype}|g ;
-            s|^JPEG_ROOT =.*$|JPEG_ROOT = ${libinclude libjpeg}|g ;
-            s|^JPEG2K_ROOT =.*$|JPEG2K_ROOT = ${libinclude openjpeg}|g ;
-            s|^IMAGEQUANT_ROOT =.*$|IMAGEQUANT_ROOT = ${libinclude' libimagequant}|g ;
-            s|^ZLIB_ROOT =.*$|ZLIB_ROOT = ${libinclude zlib}|g ;
-            s|^LCMS_ROOT =.*$|LCMS_ROOT = ${libinclude lcms2}|g ;
-            s|^TIFF_ROOT =.*$|TIFF_ROOT = ${libinclude libtiff}|g ;
-            s|^TCL_ROOT=.*$|TCL_ROOT = ${libinclude' tcl}|g ;
-            s|self\.disable_platform_guessing = None|self.disable_platform_guessing = True|g ;'
-    export LDFLAGS="$LDFLAGS -L${libwebp}/lib"
-    export CFLAGS="$CFLAGS -I${libwebp}/include"
-  '' + lib.optionalString (lib.versionAtLeast version "7.1.0") ''
-    export LDFLAGS="$LDFLAGS -L${libxcb}/lib"
-    export CFLAGS="$CFLAGS -I${libxcb.dev}/include"
-  '';
+  preConfigure =
+    let
+      libinclude' = pkg: ''"${pkg.out}/lib", "${pkg.out}/include"'';
+      libinclude = pkg: ''"${pkg.out}/lib", "${pkg.dev}/include"'';
+    in
+    ''
+      sed -i "setup.py" \
+          -e 's|^FREETYPE_ROOT =.*$|FREETYPE_ROOT = ${libinclude freetype}|g ;
+              s|^JPEG_ROOT =.*$|JPEG_ROOT = ${libinclude libjpeg}|g ;
+              s|^JPEG2K_ROOT =.*$|JPEG2K_ROOT = ${libinclude openjpeg}|g ;
+              s|^IMAGEQUANT_ROOT =.*$|IMAGEQUANT_ROOT = ${libinclude' libimagequant}|g ;
+              s|^ZLIB_ROOT =.*$|ZLIB_ROOT = ${libinclude zlib}|g ;
+              s|^LCMS_ROOT =.*$|LCMS_ROOT = ${libinclude lcms2}|g ;
+              s|^TIFF_ROOT =.*$|TIFF_ROOT = ${libinclude libtiff}|g ;
+              s|^TCL_ROOT=.*$|TCL_ROOT = ${libinclude' tcl}|g ;
+              s|self\.disable_platform_guessing = None|self.disable_platform_guessing = True|g ;'
+      export LDFLAGS="$LDFLAGS -L${libwebp}/lib"
+      export CFLAGS="$CFLAGS -I${libwebp}/include"
+    ''
+    + lib.optionalString (lib.versionAtLeast version "7.1.0") ''
+      export LDFLAGS="$LDFLAGS -L${libxcb}/lib"
+      export CFLAGS="$CFLAGS -I${libxcb.dev}/include"
+    '';
 }
diff --git a/pkgs/development/python-modules/pillowfight/default.nix b/pkgs/development/python-modules/pillowfight/default.nix
index 097fb810ad88c..e4536867e074d 100644
--- a/pkgs/development/python-modules/pillowfight/default.nix
+++ b/pkgs/development/python-modules/pillowfight/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pillow
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pillow,
 }:
 
 buildPythonPackage rec {
@@ -21,5 +22,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/beanbaginc/pillowfight";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/pims/default.nix b/pkgs/development/python-modules/pims/default.nix
index 5de3ec424f601..c016d45ffae58 100644
--- a/pkgs/development/python-modules/pims/default.nix
+++ b/pkgs/development/python-modules/pims/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, imageio
-, numpy
-, pytestCheckHook
-, pythonOlder
-, scikit-image
-, slicerator
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  imageio,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  scikit-image,
+  slicerator,
 }:
 
 buildPythonPackage rec {
   pname = "pims";
-  version = "0.6.1";
+  version = "0.7";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -20,7 +21,7 @@ buildPythonPackage rec {
     owner = "soft-matter";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-QdllA1QTSJ8vWaSJ0XoUanX53sb4RaOmdXBCFEsoWMU=";
+    hash = "sha256-3SBZk11w6eTZFmETMRJaYncxY38CYne1KzoF5oRgzuY=";
   };
 
   propagatedBuildInputs = [
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     scikit-image
   ];
 
-  pythonImportsCheck = [
-    "pims"
-  ];
+  pythonImportsCheck = [ "pims" ];
 
   pytestFlagsArray = [
     "-W"
@@ -58,6 +57,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/soft-matter/pims";
     changelog = "https://github.com/soft-matter/pims/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pinboard/default.nix b/pkgs/development/python-modules/pinboard/default.nix
index b7dab8e44fc8e..dd4e489defd63 100644
--- a/pkgs/development/python-modules/pinboard/default.nix
+++ b/pkgs/development/python-modules/pinboard/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchFromGitHub }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+}:
 
 buildPythonPackage rec {
   pname = "pinboard";
@@ -16,7 +20,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A Python wrapper for Pinboard.in";
+    description = "Python wrapper for Pinboard.in";
     mainProgram = "pinboard";
     maintainers = with maintainers; [ djanatyn ];
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/pinecone-client/default.nix b/pkgs/development/python-modules/pinecone-client/default.nix
index ae21d2042c57e..38ec710a14f43 100644
--- a/pkgs/development/python-modules/pinecone-client/default.nix
+++ b/pkgs/development/python-modules/pinecone-client/default.nix
@@ -1,24 +1,24 @@
-{ lib
-, buildPythonPackage
-, dnspython
-, fetchPypi
-, loguru
-, numpy
-, poetry-core
-, python-dateutil
-, pythonOlder
-, pythonRelaxDepsHook
-, pyyaml
-, requests
-, setuptools
-, tqdm
-, typing-extensions
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  dnspython,
+  fetchPypi,
+  loguru,
+  numpy,
+  poetry-core,
+  python-dateutil,
+  pythonOlder,
+  pyyaml,
+  requests,
+  setuptools,
+  tqdm,
+  typing-extensions,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "pinecone-client";
-  version = "4.0.0";
+  version = "4.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,16 +26,11 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "pinecone_client";
     inherit version;
-    hash = "sha256-1E2yEuZKo0PRTvybCOnkXZi6e2gfYymLhwM1QuoBfyM=";
+    hash = "sha256-sueMKd5QwYDb/nXhXwjIfsGjpPG8ayvh8Myu4atENPo=";
   };
 
-  pythonRelaxDeps = [
-    "urllib3"
-  ];
+  pythonRelaxDeps = [ "urllib3" ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   build-system = [
     setuptools
@@ -57,12 +52,10 @@ buildPythonPackage rec {
   # Tests require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pinecone"
-  ];
+  pythonImportsCheck = [ "pinecone" ];
 
   meta = with lib; {
-    description = "The Pinecone python client";
+    description = "Pinecone python client";
     homepage = "https://www.pinecone.io/";
     changelog = "https://github.com/pinecone-io/pinecone-python-client/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/ping3/default.nix b/pkgs/development/python-modules/ping3/default.nix
index 52f780cfad934..548e38c388d55 100644
--- a/pkgs/development/python-modules/ping3/default.nix
+++ b/pkgs/development/python-modules/ping3/default.nix
@@ -2,7 +2,6 @@
   lib,
   buildPythonPackage,
   fetchPypi,
-  pytestCheckHook,
   pythonOlder,
   setuptools,
 }:
diff --git a/pkgs/development/python-modules/pins/default.nix b/pkgs/development/python-modules/pins/default.nix
index 3d02d7b03728b..30f9c503c34b1 100644
--- a/pkgs/development/python-modules/pins/default.nix
+++ b/pkgs/development/python-modules/pins/default.nix
@@ -1,33 +1,34 @@
-{ lib
-, adlfs
-, appdirs
-, buildPythonPackage
-, fastparquet
-, fetchFromGitHub
-, fsspec
-, gcsfs
-, humanize
-, importlib-metadata
-, importlib-resources
-, jinja2
-, joblib
-, pandas
-, pyarrow
-, pytest-cases
-, pytest-parallel
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, requests
-, s3fs
-, setuptools
-, setuptools-scm
-, xxhash
+{
+  lib,
+  adlfs,
+  appdirs,
+  buildPythonPackage,
+  fastparquet,
+  fetchFromGitHub,
+  fsspec,
+  gcsfs,
+  humanize,
+  importlib-metadata,
+  importlib-resources,
+  jinja2,
+  joblib,
+  pandas,
+  pyarrow,
+  pytest-cases,
+  pytest-parallel,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  requests,
+  s3fs,
+  setuptools,
+  setuptools-scm,
+  xxhash,
 }:
 
 buildPythonPackage rec {
   pname = "pins";
-  version = "0.8.4";
+  version = "0.8.6";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -36,15 +37,15 @@ buildPythonPackage rec {
     owner = "rstudio";
     repo = "pins-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-rNIjHwFELHoxDxC/T5vPzHA6Ifjz01rJpTK6kjUxOIM=";
+    hash = "sha256-TRwdd0vxqXZgongjooJG5rzTnopUsjfl2I8z3nBocdg=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     appdirs
     fsspec
     humanize
@@ -59,15 +60,9 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    aws = [
-      s3fs
-    ];
-    azure = [
-      adlfs
-    ];
-    gcs = [
-      gcsfs
-    ];
+    aws = [ s3fs ];
+    azure = [ adlfs ];
+    gcs = [ gcsfs ];
   };
 
   nativeCheckInputs = [
@@ -78,13 +73,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "pins"
-  ];
+  pythonImportsCheck = [ "pins" ];
 
-  pytestFlagsArray = [
-    "pins/tests/"
-  ];
+  pytestFlagsArray = [ "pins/tests/" ];
 
   disabledTestPaths = [
     # Tests require network access
diff --git a/pkgs/development/python-modules/pint-pandas/default.nix b/pkgs/development/python-modules/pint-pandas/default.nix
index d446483502236..67e1f109c8e03 100644
--- a/pkgs/development/python-modules/pint-pandas/default.nix
+++ b/pkgs/development/python-modules/pint-pandas/default.nix
@@ -1,47 +1,49 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, wheel
-, pint
-, pandas
-, pytestCheckHook
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  pint,
+  pandas,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pint-pandas";
-  version = "0.4";
-  format = "pyproject";
+  version = "0.6";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "hgrecco";
     repo = "pint-pandas";
-    rev = version;
-    hash = "sha256-FuH6wksSCkkL2AyQN46hwTnfeAZFwkWRl6KEEhsxmUY=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-5/Qk6HZlfeKkfSqnVA8aADjJ99SUiurYCqSIUBPFIzc=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
     wheel
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pint
     pandas
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  meta = with lib; {
-    broken = stdenv.isDarwin;
+  meta = {
+    broken = stdenv.hostPlatform.isDarwin;
     description = "Pandas support for pint";
-    license = licenses.bsd3;
+    license = lib.licenses.bsd3;
     homepage = "https://github.com/hgrecco/pint-pandas";
-    maintainers = with maintainers; [ doronbehar ];
+    maintainers = with lib.maintainers; [ doronbehar ];
   };
 }
diff --git a/pkgs/development/python-modules/pint/default.nix b/pkgs/development/python-modules/pint/default.nix
index 9a9029aca0623..51ef03ffc7dd9 100644
--- a/pkgs/development/python-modules/pint/default.nix
+++ b/pkgs/development/python-modules/pint/default.nix
@@ -1,76 +1,79 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build-system
-, setuptools
-, setuptools-scm
+  # build-system
+  setuptools,
+  setuptools-scm,
 
-# propagates
-, typing-extensions
+  # dependencies
+  appdirs,
+  flexcache,
+  flexparser,
+  typing-extensions,
 
-# tests
-, pytestCheckHook
-, pytest-subtests
-, pytest-benchmark
-, numpy
-, matplotlib
-, uncertainties
+  # tests
+  pytestCheckHook,
+  pytest-subtests,
+  pytest-benchmark,
+  numpy,
+  matplotlib,
+  uncertainties,
 }:
 
 buildPythonPackage rec {
   pname = "pint";
-  version = "0.23";
-  format = "pyproject";
+  version = "0.24.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.9";
 
-  src = fetchPypi {
-    inherit version;
-    pname = "Pint";
-    hash = "sha256-4VCbkWBtvFJSfGAKTvdP+sEv/3Boiv8g6QckCTRuybQ=";
+  src = fetchFromGitHub {
+    owner = "hgrecco";
+    repo = "pint";
+    rev = "refs/tags/${version}";
+    hash = "sha256-PQAQvjMi7pFgNhUbw20vc306aTyEbCQNHGef/pxxpXo=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    appdirs
+    flexcache
+    flexparser
     typing-extensions
+
+    # Both uncertainties and numpy are not necessarily needed for every
+    # function of pint, but needed for the pint-convert executable which we
+    # necessarily distribute with this package as it is.
+    uncertainties
+    numpy
   ];
 
   nativeCheckInputs = [
     pytestCheckHook
     pytest-subtests
     pytest-benchmark
-    numpy
     matplotlib
-    uncertainties
   ];
 
-  pytestFlagsArray = [
-    "--benchmark-disable"
-  ];
+  pytestFlagsArray = [ "--benchmark-disable" ];
 
   preCheck = ''
     export HOME=$(mktemp -d)
   '';
 
-  disabledTests = [
-    # https://github.com/hgrecco/pint/issues/1898
-    "test_load_definitions_stage_2"
-    # pytest8 deprecation
-    "test_nonnumeric_magnitudes"
-  ];
-
-  meta = with lib; {
+  meta = {
     changelog = "https://github.com/hgrecco/pint/blob/${version}/CHANGES";
     description = "Physical quantities module";
     mainProgram = "pint-convert";
-    license = licenses.bsd3;
+    license = lib.licenses.bsd3;
     homepage = "https://github.com/hgrecco/pint/";
-    maintainers = with maintainers; [ doronbehar ];
+    maintainers = with lib.maintainers; [ doronbehar ];
   };
 }
diff --git a/pkgs/development/python-modules/pip-api/default.nix b/pkgs/development/python-modules/pip-api/default.nix
index 16f1f074d0448..562f701dece7f 100644
--- a/pkgs/development/python-modules/pip-api/default.nix
+++ b/pkgs/development/python-modules/pip-api/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pip
-, pretend
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, virtualenv
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pip,
+  pretend,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  virtualenv,
 }:
 
 buildPythonPackage rec {
   pname = "pip-api";
-  version = "0.0.33";
+  version = "0.0.34";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,16 +21,12 @@ buildPythonPackage rec {
     owner = "di";
     repo = "pip-api";
     rev = "refs/tags/${version}";
-    hash = "sha256-bDM31YpVB0pZMqeGTCbnINSmJc03N0HuU8hcc8nnHgw=";
+    hash = "sha256-nmCP4hp+BsD80OBjerOu+QTBBExGHvn/v19od4V3ncI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pip
-  ];
+  propagatedBuildInputs = [ pip ];
 
   nativeCheckInputs = [
     pretend
@@ -37,9 +34,7 @@ buildPythonPackage rec {
     virtualenv
   ];
 
-  pythonImportsCheck = [
-    "pip_api"
-  ];
+  pythonImportsCheck = [ "pip_api" ];
 
   disabledTests = [
     "test_hash"
diff --git a/pkgs/development/python-modules/pip-chill/default.nix b/pkgs/development/python-modules/pip-chill/default.nix
new file mode 100644
index 0000000000000..7a32efc1c0130
--- /dev/null
+++ b/pkgs/development/python-modules/pip-chill/default.nix
@@ -0,0 +1,47 @@
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  pip,
+  pythonAtLeast,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "pip-chill";
+  version = "1.0.3";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "rbanffy";
+    repo = "pip-chill";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-oWq3UWBL5nsCBUkaElashZKvm7pN3StJNubgU++8YFs=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = lib.optionals (pythonAtLeast "3.12") [ setuptools ];
+
+  nativeCheckInputs = [
+    pip
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    substituteInPlace tests/test_pip_chill.py \
+      --replace-fail "pip_chill/cli.py" "${placeholder "out"}/bin/pip-chill"
+  '';
+
+  pythonImportsCheck = [ "pip_chill" ];
+
+  meta = {
+    description = "A more relaxed `pip freeze`";
+    homepage = "https://github.com/rbanffy/pip-chill";
+    changelog = "https://github.com/rbanffy/pip-chill/releases/tag/v${version}";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ tochiaha ];
+    mainProgram = "pip-chill";
+  };
+}
diff --git a/pkgs/development/python-modules/pip-requirements-parser/default.nix b/pkgs/development/python-modules/pip-requirements-parser/default.nix
index 84cc2ed513a17..e72824c804a4b 100644
--- a/pkgs/development/python-modules/pip-requirements-parser/default.nix
+++ b/pkgs/development/python-modules/pip-requirements-parser/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, packaging
-, pyparsing
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  packaging,
+  pyparsing,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -24,22 +25,16 @@ buildPythonPackage rec {
 
   dontConfigure = true;
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     packaging
     pyparsing
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pip_requirements_parser"
-  ];
+  pythonImportsCheck = [ "pip_requirements_parser" ];
 
   disabledTests = [
     "test_RequirementsFile_to_dict"
diff --git a/pkgs/development/python-modules/pip-system-certs/default.nix b/pkgs/development/python-modules/pip-system-certs/default.nix
index 5325550ee04e6..0476aed562123 100644
--- a/pkgs/development/python-modules/pip-system-certs/default.nix
+++ b/pkgs/development/python-modules/pip-system-certs/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, wheel
-, git-versioner
-, wrapt
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  wheel,
+  git-versioner,
+  wrapt,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     git-versioner
   ];
 
-  propagatedBuildInputs = [
-    wrapt
-  ];
+  propagatedBuildInputs = [ wrapt ];
 
   pythonImportsCheck = [
     "pip_system_certs.wrapt_requests"
@@ -39,5 +38,4 @@ buildPythonPackage rec {
     license = licenses.bsd2;
     maintainers = with maintainers; [ slotThe ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pip-tools/default.nix b/pkgs/development/python-modules/pip-tools/default.nix
index ba8747cbe2050..9d44c2e383e09 100644
--- a/pkgs/development/python-modules/pip-tools/default.nix
+++ b/pkgs/development/python-modules/pip-tools/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, build
-, click
-, fetchPypi
-, pep517
-, pip
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
-, tomli
-, tomli-w
-, wheel
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  build,
+  click,
+  fetchPypi,
+  pep517,
+  pip,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  tomli,
+  tomli-w,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
 
   patches = [ ./fix-setup-py-bad-syntax-detection.patch ];
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     build
@@ -41,9 +40,7 @@ buildPythonPackage rec {
     pip
     setuptools
     wheel
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -53,7 +50,7 @@ buildPythonPackage rec {
     tomli-w
   ];
 
-  preCheck = lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) ''
+  preCheck = lib.optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) ''
     # https://github.com/python/cpython/issues/74570#issuecomment-1093748531
     export no_proxy='*';
   '';
@@ -73,9 +70,7 @@ buildPythonPackage rec {
     "test_error_in_pyproject_toml"
   ];
 
-  pythonImportsCheck = [
-    "piptools"
-  ];
+  pythonImportsCheck = [ "piptools" ];
 
   meta = with lib; {
     description = "Keeps your pinned dependencies fresh";
diff --git a/pkgs/development/python-modules/pip/default.nix b/pkgs/development/python-modules/pip/default.nix
index 72b7eb88df727..058970320f90d 100644
--- a/pkgs/development/python-modules/pip/default.nix
+++ b/pkgs/development/python-modules/pip/default.nix
@@ -1,23 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, installShellFiles
-, mock
-, scripttest
-, setuptools
-, virtualenv
-, wheel
-, pretend
-, pytest
-
-# docs
-, sphinx
-
-# coupled downsteam dependencies
-, pip-tools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  installShellFiles,
+  wheel,
+  setuptools,
+
+  # docs
+  sphinx,
+
+  # checks
+  freezegun,
+  git,
+  mock,
+  scripttest,
+  virtualenv,
+  pretend,
+  proxy-py,
+  pytestCheckHook,
+  tomli-w,
+  werkzeug,
+
+  # coupled downsteam dependencies
+  pip-tools,
 }:
 
-buildPythonPackage rec {
+let self = buildPythonPackage rec {
   pname = "pip";
   version = "24.0";
   format = "pyproject";
@@ -71,11 +81,21 @@ buildPythonPackage rec {
     cd ..
   '';
 
-  nativeCheckInputs = [ mock scripttest virtualenv pretend pytest ];
-
-  # Pip wants pytest, but tests are not distributed
   doCheck = false;
 
+  nativeCheckInputs = [
+    freezegun
+    git
+    mock
+    scripttest
+    virtualenv
+    pretend
+    pytestCheckHook
+    proxy-py
+    tomli-w
+    werkzeug
+  ];
+
   postInstall = ''
     installManPage docs/build/man/*
 
@@ -85,12 +105,16 @@ buildPythonPackage rec {
       --zsh <($out/bin/pip completion --zsh --no-cache-dir)
   '';
 
-  passthru.tests = { inherit pip-tools; };
+  passthru.tests = {
+    inherit pip-tools;
+    pytest = self.overridePythonAttrs { doCheck = true; };
+  };
 
   meta = {
-    description = "The PyPA recommended tool for installing Python packages";
+    description = "PyPA recommended tool for installing Python packages";
     license = with lib.licenses; [ mit ];
     homepage = "https://pip.pypa.io/";
     changelog = "https://pip.pypa.io/en/stable/news/#v${lib.replaceStrings [ "." ] [ "-" ] version}";
   };
-}
+};
+in self
diff --git a/pkgs/development/python-modules/pipdate/default.nix b/pkgs/development/python-modules/pipdate/default.nix
index 41aaf498d917a..87d275cf7c0b8 100644
--- a/pkgs/development/python-modules/pipdate/default.nix
+++ b/pkgs/development/python-modules/pipdate/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, appdirs
-, buildPythonPackage
-, fetchPypi
-, importlib-metadata
-, packaging
-, pythonOlder
-, requests
-, rich
-, setuptools
-, wheel
+{
+  lib,
+  appdirs,
+  buildPythonPackage,
+  fetchPypi,
+  importlib-metadata,
+  packaging,
+  pythonOlder,
+  requests,
+  rich,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-G2t+wsVGj7cDbsnWss7XqKU421WqygPzAZkhbTu9Jks=";
   };
 
-  nativeBuildInputs = [
-    wheel
-  ];
+  nativeBuildInputs = [ wheel ];
 
   propagatedBuildInputs = [
     appdirs
@@ -32,9 +31,7 @@ buildPythonPackage rec {
     requests
     rich
     setuptools
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   # Tests require network access and pythonImportsCheck requires configuration file
   doCheck = false;
@@ -44,6 +41,6 @@ buildPythonPackage rec {
     mainProgram = "pipdate";
     homepage = "https://github.com/nschloe/pipdate";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pipdeptree/default.nix b/pkgs/development/python-modules/pipdeptree/default.nix
index 8dad1316c1a7f..2ba2d47cae9e2 100644
--- a/pkgs/development/python-modules/pipdeptree/default.nix
+++ b/pkgs/development/python-modules/pipdeptree/default.nix
@@ -7,6 +7,7 @@
   graphviz,
   hatchling,
   hatch-vcs,
+  packaging,
   pytest-mock,
   pytestCheckHook,
   pip,
@@ -15,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "pipdeptree";
-  version = "2.19.1";
+  version = "2.23.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,7 +25,7 @@ buildPythonPackage rec {
     owner = "tox-dev";
     repo = "pipdeptree";
     rev = "refs/tags/${version}";
-    hash = "sha256-kXRz78UHQtVyHFFnURSjOOXX8Me2I5tG2bX+u2yGyzY=";
+    hash = "sha256-yEiehHcJcVC0hjb9NFgsrSxmAsxNki8HNGKk8dEk75s=";
   };
 
   build-system = [
@@ -32,7 +33,10 @@ buildPythonPackage rec {
     hatch-vcs
   ];
 
-  dependencies = [ pip ];
+  dependencies = [
+    pip
+    packaging
+  ];
 
   passthru.optional-dependencies = {
     graphviz = [ graphviz ];
diff --git a/pkgs/development/python-modules/pipenv-poetry-migrate/default.nix b/pkgs/development/python-modules/pipenv-poetry-migrate/default.nix
index 9f04970f9680d..68f3bcd562917 100644
--- a/pkgs/development/python-modules/pipenv-poetry-migrate/default.nix
+++ b/pkgs/development/python-modules/pipenv-poetry-migrate/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, poetry-core
-, tomlkit
-, typer
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  poetry-core,
+  tomlkit,
+  typer,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pipenv-poetry-migrate";
-  version = "0.5.5";
+  version = "0.5.9";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -20,12 +21,10 @@ buildPythonPackage rec {
     owner = "yhino";
     repo = "pipenv-poetry-migrate";
     rev = "refs/tags/v${version}";
-    hash = "sha256-6K8rTfASpK7OvBwUy40X6xzgpfWL7lIJvpfRiGfBK6U=";
+    hash = "sha256-oV3HdqDuC0t6manVlBqf4cxAWx6U6CbNpCUsBwfAn+o=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     setuptools # for pkg_resources
@@ -33,9 +32,7 @@ buildPythonPackage rec {
     typer
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "This is simple migration script, migrate pipenv to poetry";
diff --git a/pkgs/development/python-modules/piper-phonemize/default.nix b/pkgs/development/python-modules/piper-phonemize/default.nix
index cd09567a61e36..9b8f929b4ea5d 100644
--- a/pkgs/development/python-modules/piper-phonemize/default.nix
+++ b/pkgs/development/python-modules/piper-phonemize/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, onnxruntime-native
-, piper-phonemize-native
-, pybind11
-, setuptools
+{
+  buildPythonPackage,
+  onnxruntime-native,
+  piper-phonemize-native,
+  pybind11,
+  setuptools,
 }:
 
 buildPythonPackage {
@@ -20,9 +21,7 @@ buildPythonPackage {
     piper-phonemize-native.espeak-ng
   ];
 
-  pythonImportsCheck = [
-    "piper_phonemize"
-  ];
+  pythonImportsCheck = [ "piper_phonemize" ];
 
   # no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/pipetools/default.nix b/pkgs/development/python-modules/pipetools/default.nix
new file mode 100644
index 0000000000000..8ef8830494e1e
--- /dev/null
+++ b/pkgs/development/python-modules/pipetools/default.nix
@@ -0,0 +1,32 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "pipetools";
+  version = "1.1.0";
+
+  # Used github as the src since the pypi package does not include the tests
+  src = fetchFromGitHub {
+    owner = "0101";
+    repo = pname;
+    rev = "6cba9fadab07a16fd85eed16d5cffc609f84c62b";
+    hash = "sha256-BoZFePQCQfz1dkct5p/WQLuXoNX3eLcnKf3Mf0fG6u8=";
+  };
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  propagatedBuildInputs = [ setuptools ];
+
+  pythonImportsCheck = [ "pipetools" ];
+
+  meta = {
+    description = "Library that enables function composition similar to using Unix pipes";
+    homepage = "https://0101.github.io/pipetools/";
+    license = lib.licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/pipx/default.nix b/pkgs/development/python-modules/pipx/default.nix
index 39837783976a7..052ef15fc3732 100644
--- a/pkgs/development/python-modules/pipx/default.nix
+++ b/pkgs/development/python-modules/pipx/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, argcomplete
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, hatch-vcs
-, installShellFiles
-, packaging
-, platformdirs
-, pytestCheckHook
-, pythonOlder
-, tomli
-, userpath
-, git
+{
+  lib,
+  argcomplete,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  hatch-vcs,
+  installShellFiles,
+  packaging,
+  platformdirs,
+  pytestCheckHook,
+  pythonOlder,
+  tomli,
+  userpath,
+  git,
 }:
 
 buildPythonPackage rec {
   pname = "pipx";
-  version = "1.4.3";
+  version = "1.7.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,7 +26,7 @@ buildPythonPackage rec {
     owner = "pypa";
     repo = "pipx";
     rev = "refs/tags/${version}";
-    hash = "sha256-NxXOeVXwBhGqi4DUABV8UV+cDER0ROBFdgiyYTzdvuo=";
+    hash = "sha256-diHWzrSpXWbNosXKN5nj2FM09HicDhHWKxQDXc+AZ4o=";
   };
 
   build-system = [
@@ -38,12 +39,11 @@ buildPythonPackage rec {
     packaging
     platformdirs
     userpath
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   nativeBuildInputs = [
-      installShellFiles
+    installShellFiles
+    argcomplete
   ];
 
   nativeCheckInputs = [
@@ -80,15 +80,27 @@ buildPythonPackage rec {
     "legacy_venv"
     "determination"
     "json"
+    "test_auto_update_shared_libs"
+    "test_cli"
+    "test_cli_global"
+    "test_fetch_missing_python"
+    "test_list_does_not_trigger_maintenance"
+    "test_list_pinned_packages"
     "test_list_short"
+    "test_list_standalone_interpreter"
+    "test_list_unused_standalone_interpreters"
+    "test_list_used_standalone_interpreters"
+    "test_pin"
     "test_skip_maintenance"
+    "test_unpin"
+    "test_unpin_warning"
   ];
 
-  postInstall =  ''
+  postInstall = ''
     installShellCompletion --cmd pipx \
-      --bash <(${argcomplete}/bin/register-python-argcomplete pipx --shell bash) \
-      --zsh <(${argcomplete}/bin/register-python-argcomplete pipx --shell zsh) \
-      --fish <(${argcomplete}/bin/register-python-argcomplete pipx --shell fish)
+      --bash <(register-python-argcomplete pipx --shell bash) \
+      --zsh <(register-python-argcomplete pipx --shell zsh) \
+      --fish <(register-python-argcomplete pipx --shell fish)
   '';
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/pivy/default.nix b/pkgs/development/python-modules/pivy/default.nix
index ff5a1fdeafa7d..a5ad0d280fd81 100644
--- a/pkgs/development/python-modules/pivy/default.nix
+++ b/pkgs/development/python-modules/pivy/default.nix
@@ -1,4 +1,12 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pkgs, qtbase, qmake, soqt }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pkgs,
+  qtbase,
+  qmake,
+  soqt,
+}:
 
 buildPythonPackage rec {
   pname = "pivy";
@@ -15,14 +23,26 @@ buildPythonPackage rec {
   dontUseCmakeConfigure = true;
 
   nativeBuildInputs = with pkgs; [
-    swig qmake cmake
+    swig
+    qmake
+    cmake
   ];
 
-  buildInputs = with pkgs; with xorg; [
-    coin3d soqt qtbase
-    libGLU libGL
-    libXi libXext libSM libICE libX11
-  ];
+  buildInputs =
+    with pkgs;
+    with xorg;
+    [
+      coin3d
+      soqt
+      qtbase
+      libGLU
+      libGL
+      libXi
+      libXext
+      libSM
+      libICE
+      libX11
+    ];
 
   env.NIX_CFLAGS_COMPILE = toString [
     "-I${qtbase.dev}/include/QtCore"
@@ -32,7 +52,7 @@ buildPythonPackage rec {
   ];
 
   dontUseQmakeConfigure = true;
-  dontWrapQtApps =true;
+  dontWrapQtApps = true;
   doCheck = false;
 
   postPatch = ''
@@ -42,9 +62,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/coin3d/pivy/";
-    description = "A Python binding for Coin";
+    description = "Python binding for Coin";
     license = licenses.bsd0;
     maintainers = with maintainers; [ gebner ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pixcat/default.nix b/pkgs/development/python-modules/pixcat/default.nix
index e316e2c516307..0ca0a099f39bd 100644
--- a/pkgs/development/python-modules/pixcat/default.nix
+++ b/pkgs/development/python-modules/pixcat/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, blessed
-, docopt
-, pillow
-, requests
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  blessed,
+  docopt,
+  pillow,
+  requests,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pixel-font-builder/default.nix b/pkgs/development/python-modules/pixel-font-builder/default.nix
index bd67a88905f7d..b080d9f6b6273 100644
--- a/pkgs/development/python-modules/pixel-font-builder/default.nix
+++ b/pkgs/development/python-modules/pixel-font-builder/default.nix
@@ -1,54 +1,55 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, nix-update-script
-, hatch-vcs
-, hatchling
-, bdffont
-, brotli
-, fonttools
-, pypng
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytestCheckHook,
+  nix-update-script,
+  hatchling,
+  fonttools,
+  brotli,
+  bdffont,
+  pcffont,
+  pypng,
 }:
 
 buildPythonPackage rec {
   pname = "pixel-font-builder";
-  version = "0.0.15";
+  version = "0.0.26";
+  pyproject = true;
 
   disabled = pythonOlder "3.11";
 
   src = fetchPypi {
     pname = "pixel_font_builder";
     inherit version;
-    hash = "sha256-2QnbnJk3onwxmjZ6aUgXFGsx6GtqJDV9Bgs3p5Czvns=";
+    hash = "sha256-bgs2FbOA5tcUXe5+KuVztWGAv5yFxQNBaiZMeZ+ic+8=";
   };
 
-  format = "pyproject";
+  build-system = [ hatchling ];
 
-  nativeBuildInputs = [
-    hatch-vcs
-    hatchling
-  ];
-
-  nativeCheckInputs = [
-    pytestCheckHook
+  dependencies = [
+    fonttools
+    brotli
+    bdffont
+    pcffont
     pypng
   ];
 
-  propagatedBuildInputs = [
-    bdffont
-    brotli
-    fonttools
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "pixel_font_builder" ];
 
   passthru.updateScript = nix-update-script { };
 
   meta = {
     homepage = "https://github.com/TakWolf/pixel-font-builder";
-    description = "A library that helps create pixel style fonts";
+    description = "Library that helps create pixel style fonts";
     platforms = lib.platforms.all;
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ h7x4 ];
+    maintainers = with lib.maintainers; [
+      TakWolf
+      h7x4
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pixel-ring/default.nix b/pkgs/development/python-modules/pixel-ring/default.nix
index b0a7e35273288..1628276f5b19d 100644
--- a/pkgs/development/python-modules/pixel-ring/default.nix
+++ b/pkgs/development/python-modules/pixel-ring/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, pyusb
-, spidev
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  pyusb,
+  spidev,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pixelmatch/default.nix b/pkgs/development/python-modules/pixelmatch/default.nix
deleted file mode 100644
index b6a7b74701cbb..0000000000000
--- a/pkgs/development/python-modules/pixelmatch/default.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchgit
-, pillow
-, poetry-core
-, pytest-benchmark
-, pytestCheckHook
-, pythonOlder
-}:
-
-buildPythonPackage rec {
-  pname = "pixelmatch";
-  version = "0.2.3";
-  format = "pyproject";
-
-  disabled = pythonOlder "3.6";
-
-  # Test fixtures are stored in LFS
-  src = fetchgit {
-    url = "https://github.com/whtsky/pixelmatch-py";
-    rev = "v${version}";
-    hash = "sha256-/zRQhwz+HjT0Hs4CunsqHxHWEtoIH9qMBowRb0Pps6Y=";
-    fetchLFS = true;
-  };
-
-  nativeBuildInputs = [
-    poetry-core
-  ];
-
-  nativeCheckInputs = [
-    pillow
-    pytest-benchmark
-    pytestCheckHook
-  ];
-
-  pytestFlagsArray = [
-    "--benchmark-disable"
-  ];
-
-  pythonImportsCheck = [
-    "pixelmatch"
-  ];
-
-  meta = with lib; {
-    description = "Pixel-level image comparison library";
-    homepage = "https://github.com/whtsky/pixelmatch-py";
-    license = licenses.isc;
-    maintainers = with maintainers; [ ];
-  };
-}
diff --git a/pkgs/development/python-modules/pkce/default.nix b/pkgs/development/python-modules/pkce/default.nix
index e302e1c978ca0..08539054316a7 100644
--- a/pkgs/development/python-modules/pkce/default.nix
+++ b/pkgs/development/python-modules/pkce/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pkg-about/default.nix b/pkgs/development/python-modules/pkg-about/default.nix
index fafe0b2e98079..f94b8382274d4 100644
--- a/pkgs/development/python-modules/pkg-about/default.nix
+++ b/pkgs/development/python-modules/pkg-about/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, importlib-metadata
-, importlib-resources
-, setuptools
-, packaging
-, tomli
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  importlib-metadata,
+  importlib-resources,
+  setuptools,
+  packaging,
+  tomli,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -42,13 +43,9 @@ buildPythonPackage rec {
     tomli
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pkg_about"
-  ];
+  pythonImportsCheck = [ "pkg_about" ];
 
   meta = with lib; {
     description = "Python metadata sharing at runtime";
diff --git a/pkgs/development/python-modules/pkgconfig/default.nix b/pkgs/development/python-modules/pkgconfig/default.nix
index 89fc2fd32f740..aa69c7f286ca9 100644
--- a/pkgs/development/python-modules/pkgconfig/default.nix
+++ b/pkgs/development/python-modules/pkgconfig/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, poetry-core
-, pkg-config
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  poetry-core,
+  pkg-config,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pkginfo/default.nix b/pkgs/development/python-modules/pkginfo/default.nix
index 3a79cdbbf0126..069ffd31a4ab0 100644
--- a/pkgs/development/python-modules/pkginfo/default.nix
+++ b/pkgs/development/python-modules/pkginfo/default.nix
@@ -1,26 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pkginfo";
-  version = "1.10.0";
+  version = "1.11.1";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Xfc4NTmNENt5+O7NXNhrH20pMXWJ6nB5aZTUk5mvYpc=";
+    hash = "sha256-Lg3KHPTI45ZE7tMkCOqZZu4V4NMkxiuomaOTs8a0Z6o=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pkginfo"
-  ];
+  pythonImportsCheck = [ "pkginfo" ];
 
   meta = with lib; {
     description = "Query metadatdata from sdists, bdists or installed packages";
@@ -35,6 +32,6 @@ buildPythonPackage rec {
       setup.py develop).
     '';
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pkginfo2/default.nix b/pkgs/development/python-modules/pkginfo2/default.nix
index 74d05de7ad975..c46bf6f66ea65 100644
--- a/pkgs/development/python-modules/pkginfo2/default.nix
+++ b/pkgs/development/python-modules/pkginfo2/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-E9EyaN3ncf/34vvvhRe0rwV28VrjqJo79YFgXq2lKWU=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pkginfo2"
-  ];
+  pythonImportsCheck = [ "pkginfo2" ];
 
   meta = with lib; {
     description = "Query metadatdata from sdists, bdists or installed packages";
diff --git a/pkgs/development/python-modules/pkgutil-resolve-name/default.nix b/pkgs/development/python-modules/pkgutil-resolve-name/default.nix
index ddb610b53bcfa..6c7a65e62a532 100644
--- a/pkgs/development/python-modules/pkgutil-resolve-name/default.nix
+++ b/pkgs/development/python-modules/pkgutil-resolve-name/default.nix
@@ -1,10 +1,11 @@
-{ buildPythonPackage
-, fetchPypi
-, fetchpatch
-, lib
-, nix-update-script
-, pythonOlder
-, flit-core
+{
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  lib,
+  nix-update-script,
+  pythonOlder,
+  flit-core,
 }:
 buildPythonPackage rec {
   pname = "pkgutil-resolve-name";
@@ -21,15 +22,14 @@ buildPythonPackage rec {
 
   patches = [
     # Raise flit-core version constrains
-    (fetchpatch { # https://github.com/graingert/pkgutil-resolve-name/pull/5
+    (fetchpatch {
+      # https://github.com/graingert/pkgutil-resolve-name/pull/5
       url = "https://github.com/graingert/pkgutil-resolve-name/commit/042834290c735fa836bb308ce9e93c9f64d67cbe.patch";
       hash = "sha256-M1rcrkdFcoFa3IncPnJaRhnXbelyk56QnMGtmgB6bvk=";
     })
   ];
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   # has no tests
   doCheck = false;
@@ -38,7 +38,7 @@ buildPythonPackage rec {
 
   meta = {
     homepage = "https://pypi.org/project/pkgutil_resolve_name/";
-    description = "A backport of Python 3.9’s pkgutil.resolve_name.";
+    description = "Backport of Python 3.9’s pkgutil.resolve_name";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ yajo ];
   };
diff --git a/pkgs/development/python-modules/pkuseg/default.nix b/pkgs/development/python-modules/pkuseg/default.nix
index 1d25692cb5b20..5afc1ceeb89cf 100644
--- a/pkgs/development/python-modules/pkuseg/default.nix
+++ b/pkgs/development/python-modules/pkuseg/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, pythonAtLeast
-, cython
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  pythonAtLeast,
+  cython,
+  numpy,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pkutils/default.nix b/pkgs/development/python-modules/pkutils/default.nix
deleted file mode 100644
index e3957533ea994..0000000000000
--- a/pkgs/development/python-modules/pkutils/default.nix
+++ /dev/null
@@ -1,56 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nose3
-, pythonOlder
-, pythonRelaxDepsHook
-, semver
-}:
-
-buildPythonPackage rec {
-  pname = "pkutils";
-  version = "3.0.2";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.6";
-
-  src = fetchFromGitHub {
-    owner = "reubano";
-    repo = "pkutils";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-AK+xX+LPz6IVLZedsqMUm7G28ue0s3pXgIzxS4EHHLE=";
-  };
-
-  pythonRelaxDeps = [
-    "semver"
-  ];
-
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
-
-  propagatedBuildInputs = [
-    semver
-  ];
-
-  nativeCheckInputs = [
-    nose3
-  ];
-
-  checkPhase = ''
-    runHook preCheck
-    nosetests
-    runHook postCheck
-  '';
-
-  pythonImportsCheck = [
-    "pkutils"
-  ];
-
-  meta = with lib; {
-    description = "A Python packaging utility library";
-    homepage = "https://github.com/reubano/pkutils/";
-    license = licenses.mit;
-    maintainers = with maintainers; [ drewrisinger ];
-  };
-}
diff --git a/pkgs/development/python-modules/plac/default.nix b/pkgs/development/python-modules/plac/default.nix
index bc00253aafde3..d234636bb2ce2 100644
--- a/pkgs/development/python-modules/plac/default.nix
+++ b/pkgs/development/python-modules/plac/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,15 +31,13 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "plac"
-  ];
+  pythonImportsCheck = [ "plac" ];
 
   meta = with lib; {
     description = "Parsing the Command Line the Easy Way";
     mainProgram = "plac_runner.py";
     homepage = "https://github.com/micheles/plac";
     license = licenses.bsdOriginal;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/plaid-python/default.nix b/pkgs/development/python-modules/plaid-python/default.nix
index f3a92c1954c85..29a5c749ab983 100644
--- a/pkgs/development/python-modules/plaid-python/default.nix
+++ b/pkgs/development/python-modules/plaid-python/default.nix
@@ -1,25 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nulltype
-, python-dateutil
-, urllib3
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  nulltype,
+  python-dateutil,
+  urllib3,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "plaid-python";
-  version = "21.0.0";
-  format = "setuptools";
+  version = "24.0.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-ksYTV10FGUjBIkJru4CiJIlPLT4S7fbpsNrjYczTFlI=";
+    pname = "plaid_python";
+    inherit version;
+    hash = "sha256-0LtYs2S1fGunmmPFl3cGa/lMtE7Ng+Xb4FruowjdWGM=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     nulltype
     python-dateutil
     urllib3
@@ -28,9 +33,7 @@ buildPythonPackage rec {
   # Tests require a Client IP
   doCheck = false;
 
-  pythonImportsCheck = [
-    "plaid"
-  ];
+  pythonImportsCheck = [ "plaid" ];
 
   meta = with lib; {
     description = "Python client library for the Plaid API and Link";
diff --git a/pkgs/development/python-modules/plantuml-markdown/default.nix b/pkgs/development/python-modules/plantuml-markdown/default.nix
index 8013e90e71f82..c24cd66e2face 100644
--- a/pkgs/development/python-modules/plantuml-markdown/default.nix
+++ b/pkgs/development/python-modules/plantuml-markdown/default.nix
@@ -1,19 +1,20 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, plantuml
-, markdown
-, requests
-, six
-, runCommand
-, writeText
-, plantuml-markdown
-, pythonOlder
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  plantuml,
+  markdown,
+  requests,
+  six,
+  runCommand,
+  writeText,
+  plantuml-markdown,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "plantuml-markdown";
-  version = "3.9.5";
+  version = "3.10.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -22,7 +23,7 @@ buildPythonPackage rec {
     owner = "mikitex70";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-bfbji517y0/PXMfLg2gGWlogg7IPhXvQ5vekLzc4/ow=";
+    hash = "sha256-5K8NSxMCdAsOtV0egY8gMbHnHifvYNRHzafR0LAcm+Q=";
   };
 
   propagatedBuildInputs = [
@@ -35,9 +36,7 @@ buildPythonPackage rec {
   # The package uses a custom script that downloads a certain version of plantuml for testing.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "plantuml_markdown"
-  ];
+  pythonImportsCheck = [ "plantuml_markdown" ];
 
   passthru.tests.example-doc =
     let
@@ -47,10 +46,7 @@ buildPythonPackage rec {
         ```
       '';
     in
-    runCommand "plantuml-markdown-example-doc"
-      {
-        nativeBuildInputs = [ plantuml-markdown ];
-      } ''
+    runCommand "plantuml-markdown-example-doc" { nativeBuildInputs = [ plantuml-markdown ]; } ''
       markdown_py -x plantuml_markdown ${exampleDoc} > $out
 
       ! grep -q "Error" $out
diff --git a/pkgs/development/python-modules/plantuml/default.nix b/pkgs/development/python-modules/plantuml/default.nix
index 1053403dcf71d..068bbfd899af7 100644
--- a/pkgs/development/python-modules/plantuml/default.nix
+++ b/pkgs/development/python-modules/plantuml/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
   # Runtime dependencies
-, httplib2
-, six
+  httplib2,
+  six,
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/plasTeX/default.nix b/pkgs/development/python-modules/plasTeX/default.nix
new file mode 100644
index 0000000000000..407918ec4042c
--- /dev/null
+++ b/pkgs/development/python-modules/plasTeX/default.nix
@@ -0,0 +1,42 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  typing-extensions,
+  pillow,
+  jinja2,
+  unidecode,
+}:
+buildPythonPackage {
+  pname = "plasTeX";
+  version = "3.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    repo = "plastex";
+    owner = "plastex";
+    rev = "193747318f7ebadd19eaaa1e9996da42a31a2697"; # The same as what is published on PyPi for version 3.1. See <https://github.com/plastex/plastex/issues/386>
+    hash = "sha256-Muuin7n0aPOZwlUaB32pONy5eyIjtPNb4On5gC9wOcQ=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    typing-extensions
+    pillow
+    jinja2
+    unidecode
+  ];
+
+  meta = {
+    description = "plasTeX is a Python package to convert LaTeX markup to DOM";
+    homepage = "https://plastex.github.io/plastex/";
+    maintainers = with lib.maintainers; [ niklashh ];
+    license = lib.licenses.asl20;
+  };
+}
diff --git a/pkgs/development/python-modules/plaster-pastedeploy/default.nix b/pkgs/development/python-modules/plaster-pastedeploy/default.nix
index 722d06a103778..0585d596e74ad 100644
--- a/pkgs/development/python-modules/plaster-pastedeploy/default.nix
+++ b/pkgs/development/python-modules/plaster-pastedeploy/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, plaster
-, pastedeploy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  plaster,
+  pastedeploy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +18,10 @@ buildPythonPackage rec {
     hash = "sha256-viYubS5BpyZIddqi/ihQy7BhVyi83JKCj9xyc244FBI=";
   };
 
-  propagatedBuildInputs = [ plaster pastedeploy ];
+  propagatedBuildInputs = [
+    plaster
+    pastedeploy
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
@@ -25,6 +29,6 @@ buildPythonPackage rec {
     description = "PasteDeploy binding to the plaster configuration loader";
     homepage = "https://github.com/Pylons/plaster_pastedeploy";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/plaster/default.nix b/pkgs/development/python-modules/plaster/default.nix
index b0ce5c418df45..3585d4a7721b6 100644
--- a/pkgs/development/python-modules/plaster/default.nix
+++ b/pkgs/development/python-modules/plaster/default.nix
@@ -1,5 +1,8 @@
-{ buildPythonPackage, fetchPypi
-, pytest, pytest-cov
+{
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  pytest-cov,
 }:
 
 buildPythonPackage rec {
@@ -16,5 +19,8 @@ buildPythonPackage rec {
     py.test
   '';
 
-  nativeCheckInputs = [ pytest pytest-cov ];
+  nativeCheckInputs = [
+    pytest
+    pytest-cov
+  ];
 }
diff --git a/pkgs/development/python-modules/plastexdepgraph/default.nix b/pkgs/development/python-modules/plastexdepgraph/default.nix
new file mode 100644
index 0000000000000..7fcc029ad97f4
--- /dev/null
+++ b/pkgs/development/python-modules/plastexdepgraph/default.nix
@@ -0,0 +1,38 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  pygraphviz,
+  plasTeX,
+}:
+buildPythonPackage {
+  pname = "plastexdepgraph";
+  version = "0.0.4";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    repo = "plastexdepgraph";
+    owner = "PatrickMassot";
+    rev = "0.0.4";
+    hash = "sha256-Q13uYYZe1QgZHS4Nj8ugr+Fmhva98ttJj3AlXTK6XDw=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    pygraphviz
+    plasTeX
+  ];
+
+  meta = {
+    description = "plasTeX plugin allowing to build dependency graphs";
+    homepage = "https://github.com/PatrickMassot/plastexdepgraph";
+    maintainers = with lib.maintainers; [ niklashh ];
+    license = lib.licenses.asl20;
+  };
+}
diff --git a/pkgs/development/python-modules/plastexshowmore/default.nix b/pkgs/development/python-modules/plastexshowmore/default.nix
new file mode 100644
index 0000000000000..907869829a03a
--- /dev/null
+++ b/pkgs/development/python-modules/plastexshowmore/default.nix
@@ -0,0 +1,35 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  plasTeX,
+}:
+
+buildPythonPackage {
+  pname = "plastexshowmore";
+  version = "0.0.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    repo = "plastexshowmore";
+    owner = "PatrickMassot";
+    rev = "0.0.2";
+    hash = "sha256-b45VHHEwFA41FaInDteix56O7KYDzyKiRRSl7heHqEA=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ plasTeX ];
+
+  meta = {
+    description = "PlasTeX plugin for adding navigation buttons";
+    homepage = "https://github.com/PatrickMassot/plastexshowmore";
+    maintainers = with lib.maintainers; [ niklashh ];
+    license = lib.licenses.asl20;
+  };
+}
diff --git a/pkgs/development/python-modules/platformdirs/default.nix b/pkgs/development/python-modules/platformdirs/default.nix
index 7c45f33cb598c..4a91f11da2a2e 100644
--- a/pkgs/development/python-modules/platformdirs/default.nix
+++ b/pkgs/development/python-modules/platformdirs/default.nix
@@ -1,29 +1,30 @@
-{ lib
-, appdirs
-, buildPythonPackage
-, fetchFromGitHub
-, hatch-vcs
-, hatchling
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  appdirs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatch-vcs,
+  hatchling,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "platformdirs";
-  version = "4.2.0";
-  format = "pyproject";
+  version = "4.2.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
-    owner = pname;
-    repo = pname;
+    owner = "platformdirs";
+    repo = "platformdirs";
     rev = "refs/tags/${version}";
-    hash = "sha256-DjRqOIkyhkA3Z1gl2o78R4kp23qJBj+pRmDBld8AbDI=";
+    hash = "sha256-WsHB+Si8RnJ9b8dYA9m7YRin3UYdJlL1v6/v8SExXtY=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatchling
     hatch-vcs
   ];
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "platformdirs"
-  ];
+  pythonImportsCheck = [ "platformdirs" ];
 
   meta = with lib; {
     description = "Module for determining appropriate platform-specific directories";
diff --git a/pkgs/development/python-modules/playsound/default.nix b/pkgs/development/python-modules/playsound/default.nix
index 0eb7e56c7b2be..7fb3220810d37 100644
--- a/pkgs/development/python-modules/playsound/default.nix
+++ b/pkgs/development/python-modules/playsound/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/playwright-stealth/default.nix b/pkgs/development/python-modules/playwright-stealth/default.nix
index a805d36f432f5..0ee048182ba6a 100644
--- a/pkgs/development/python-modules/playwright-stealth/default.nix
+++ b/pkgs/development/python-modules/playwright-stealth/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, playwright
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  playwright,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,20 +22,14 @@ buildPythonPackage rec {
     hash = "sha256-ZWmuVwjEgrPmfxjvws3TdocW6tyNH++fyRfKQ0oJ6bo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    playwright
-  ];
+  propagatedBuildInputs = [ playwright ];
 
   # Tests require Chromium binary
   doCheck = false;
 
-  pythonImportsCheck = [
-    "playwright_stealth"
-  ];
+  pythonImportsCheck = [ "playwright_stealth" ];
 
   meta = with lib; {
     description = "Playwright stealth";
diff --git a/pkgs/development/python-modules/playwright/default.nix b/pkgs/development/python-modules/playwright/default.nix
index ff22cdf0cb8d8..e27e2a33ca30b 100644
--- a/pkgs/development/python-modules/playwright/default.nix
+++ b/pkgs/development/python-modules/playwright/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, stdenv
-, auditwheel
-, buildPythonPackage
-, git
-, greenlet
-, fetchFromGitHub
-, pyee
-, python
-, pythonOlder
-, setuptools
-, setuptools-scm
-, playwright-driver
-, pythonRelaxDepsHook
+{
+  lib,
+  stdenv,
+  auditwheel,
+  buildPythonPackage,
+  git,
+  greenlet,
+  fetchFromGitHub,
+  pyee,
+  python,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  playwright-driver,
+  nixosTests,
+  nodejs,
 }:
 
 let
@@ -20,7 +22,7 @@ in
 buildPythonPackage rec {
   pname = "playwright";
   # run ./pkgs/development/python-modules/playwright/update.sh to update
-  version = "1.42.0";
+  version = "1.47.0";
   pyproject = true;
   disabled = pythonOlder "3.7";
 
@@ -28,7 +30,7 @@ buildPythonPackage rec {
     owner = "microsoft";
     repo = "playwright-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-GfaZ6wMbJShyTTcV9uulmsL8OI/OA+YDMvS2s3ePnjs=";
+    hash = "sha256-C/spH54hhLI0Egs2jjTjQ5BH1pIw1syrfSyUvVQRoKM=";
   };
 
   patches = [
@@ -50,11 +52,11 @@ buildPythonPackage rec {
     git commit -m "workaround setuptools-scm"
 
     substituteInPlace setup.py \
-      --replace "setuptools-scm==8.0.4" "setuptools-scm" \
-      --replace "wheel==0.41.2" "wheel"
+      --replace "setuptools-scm==8.1.0" "setuptools-scm" \
+      --replace-fail "wheel==0.42.0" "wheel"
 
     substituteInPlace pyproject.toml \
-      --replace 'requires = ["setuptools==68.2.2", "setuptools-scm==8.0.4", "wheel==0.42.0", "auditwheel==5.4.0"]' \
+      --replace 'requires = ["setuptools==68.2.2", "setuptools-scm==8.1.0", "wheel==0.42.0", "auditwheel==5.4.0"]' \
                 'requires = ["setuptools", "setuptools-scm", "wheel"]'
 
     # Skip trying to download and extract the driver.
@@ -64,20 +66,17 @@ buildPythonPackage rec {
 
     # Set the correct driver path with the help of a patch in patches
     substituteInPlace playwright/_impl/_driver.py \
-      --replace "@driver@" "${driver}/bin/playwright"
+      --replace-fail "@node@" "${lib.getExe nodejs}" \
+      --replace-fail "@driver@" "${driver}/cli.js"
   '';
 
-
   nativeBuildInputs = [
     git
     setuptools-scm
     setuptools
-    pythonRelaxDepsHook
-  ] ++ lib.optionals stdenv.isLinux [ auditwheel ];
+  ] ++ lib.optionals stdenv.hostPlatform.isLinux [ auditwheel ];
 
-  pythonRelaxDeps = [
-    "pyee"
-  ];
+  pythonRelaxDeps = [ "pyee" ];
 
   propagatedBuildInputs = [
     greenlet
@@ -91,16 +90,18 @@ buildPythonPackage rec {
   # Skip tests because they require network access.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "playwright"
-  ];
+  pythonImportsCheck = [ "playwright" ];
 
   passthru = {
     inherit driver;
-    tests = {
-      driver = playwright-driver;
-      browsers = playwright-driver.browsers;
-    };
+    tests =
+      {
+        driver = playwright-driver;
+        browsers = playwright-driver.browsers;
+      }
+      // lib.optionalAttrs stdenv.hostPlatform.isLinux {
+        inherit (nixosTests) playwright-python;
+      };
     updateScript = ./update.sh;
   };
 
@@ -109,7 +110,15 @@ buildPythonPackage rec {
     mainProgram = "playwright";
     homepage = "https://github.com/microsoft/playwright-python";
     license = licenses.asl20;
-    maintainers = with maintainers; [ techknowlogick yrd ];
-    platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
+    maintainers = with maintainers; [
+      techknowlogick
+      yrd
+    ];
+    platforms = [
+      "x86_64-linux"
+      "aarch64-linux"
+      "x86_64-darwin"
+      "aarch64-darwin"
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/playwright/driver-location.patch b/pkgs/development/python-modules/playwright/driver-location.patch
index a7f79840c65db..87e193f6812e8 100644
--- a/pkgs/development/python-modules/playwright/driver-location.patch
+++ b/pkgs/development/python-modules/playwright/driver-location.patch
@@ -1,22 +1,25 @@
 diff --git a/playwright/_impl/_driver.py b/playwright/_impl/_driver.py
-index f3b911f..d00e509 100644
+index 22b53b8..2d86626 100644
 --- a/playwright/_impl/_driver.py
 +++ b/playwright/_impl/_driver.py
-@@ -23,11 +23,7 @@ from playwright._repo_version import version
- 
- 
- def compute_driver_executable() -> Path:
--    package_path = Path(inspect.getfile(playwright)).parent
--    platform = sys.platform
--    if platform == "win32":
--        return package_path / "driver" / "playwright.cmd"
--    return package_path / "driver" / "playwright.sh"
-+   return Path("@driver@")
- 
- 
- if sys.version_info.major == 3 and sys.version_info.minor == 7:
+@@ -23,14 +23,7 @@ from playwright._repo_version import version
+
+
+ def compute_driver_executable() -> Tuple[str, str]:
+-    driver_path = Path(inspect.getfile(playwright)).parent / "driver"
+-    cli_path = str(driver_path / "package" / "cli.js")
+-    if sys.platform == "win32":
+-        return (
+-            os.getenv("PLAYWRIGHT_NODEJS_PATH", str(driver_path / "node.exe")),
+-            cli_path,
+-        )
+-    return (os.getenv("PLAYWRIGHT_NODEJS_PATH", str(driver_path / "node")), cli_path)
++    return "@node@", "@driver@"
+
+
+ def get_driver_env() -> dict:
 diff --git a/setup.py b/setup.py
-index 3487a6a..05112c2 100644
+index 8709e52..59784dd 100644
 --- a/setup.py
 +++ b/setup.py
 @@ -141,25 +141,8 @@ class PlaywrightBDistWheelCommand(BDistWheelCommand):
diff --git a/pkgs/development/python-modules/playwright/update.sh b/pkgs/development/python-modules/playwright/update.sh
index 23c3276088659..2b283d3b607a1 100755
--- a/pkgs/development/python-modules/playwright/update.sh
+++ b/pkgs/development/python-modules/playwright/update.sh
@@ -1,35 +1,94 @@
 #!/usr/bin/env nix-shell
-#!nix-shell -i bash -p curl gnused nix-prefetch common-updater-scripts node2nix jq
+#!nix-shell -i bash -p curl gnused common-updater-scripts jq prefetch-npm-deps unzip
 set -euo pipefail
 
 root="$(dirname "$(readlink -f "$0")")"
-driver_file="$root/../../web/playwright/driver.nix"
-playwright_test="$root/../../web/playwright-test"
 
 version=$(curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} -s https://api.github.com/repos/microsoft/playwright-python/releases/latest | jq -r '.tag_name | sub("^v"; "")')
-
 # Most of the time, this should be the latest stable release of the Node-based
 # Playwright version, but that isn't a guarantee, so this needs to be specified
 # as well:
 setup_py_url="https://github.com/microsoft/playwright-python/raw/v${version}/setup.py"
 driver_version=$(curl -Ls "$setup_py_url" | grep '^driver_version =' | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+')
 
-fetch_driver_arch() {
-  nix-prefetch-url "https://playwright.azureedge.net/builds/driver/playwright-${driver_version}-${1}.zip"
-}
+# TODO: skip if update-source-version reported the same version
+update-source-version playwright-driver "$driver_version"
+update-source-version python3Packages.playwright "$version"
+
+playwright_dir="$root/../../web/playwright"
+driver_file="$playwright_dir/driver.nix"
+repo_url_prefix="https://github.com/microsoft/playwright/raw"
+
+temp_dir=$(mktemp -d)
+trap 'rm -rf "$temp_dir"' EXIT
+
 
+
+# update binaries of browsers, used by playwright.
 replace_sha() {
-  sed -i "s|$1 = \".\{44,52\}\"|$1 = \"$2\"|" "$driver_file"
+  sed -i "s|$2 = \".\{44,52\}\"|$2 = \"$3\"|" "$1"
+}
+
+prefetch_browser() {
+    nix store prefetch-file --json --hash-type sha256 --unpack "$1" | jq -r .hash
+}
+
+update_browser() {
+    name="$1"
+    suffix="$2"
+    arm64_suffix="${3:-$2-arm64}"
+    revision="$(jq -r ".browsers.$name.revision" "$playwright_dir/browsers.json")"
+    replace_sha "$playwright_dir/$name.nix" "x86_64-linux" \
+        "$(prefetch_browser "https://playwright.azureedge.net/builds/$name/$revision/$name-$suffix.zip")"
+    replace_sha "$playwright_dir/$name.nix" "aarch64-linux" \
+        "$(prefetch_browser "https://playwright.azureedge.net/builds/$name/$revision/$name-$arm64_suffix.zip")"
 }
 
-# Replace SHAs for the driver downloads
-replace_sha "x86_64-linux" "$(fetch_driver_arch "linux")"
-replace_sha "x86_64-darwin" "$(fetch_driver_arch "mac")"
-replace_sha "aarch64-linux" "$(fetch_driver_arch "linux-arm64")"
-replace_sha "aarch64-darwin" "$(fetch_driver_arch "mac-arm64")"
-
-# Update the version stamps
-sed -i "s/version =\s*\"[^\$]*\"/version = \"$driver_version\"/" "$driver_file"
-sed -i "s/\"@playwright\/test\": \"[^\$]*\"/\"@playwright\/test\": \"$driver_version\"/" "$playwright_test/node-packages.json"
-(cd "$playwright_test"; node2nix -i node-packages.json)
-update-source-version playwright "$version" --rev="v$version"
+curl -fsSl \
+    "https://raw.githubusercontent.com/microsoft/playwright/v${driver_version}/packages/playwright-core/browsers.json" \
+    | jq '
+      .comment = "This file is kept up to date via update.sh"
+      | .browsers |= (
+        [.[]
+          | select(.installByDefault) | del(.installByDefault)]
+          | map({(.name): . | del(.name)})
+          | add
+      )
+    ' > "$playwright_dir/browsers.json"
+
+# We currently use Chromium from nixpkgs, so we don't need to download it here
+# Likewise, darwin can be ignored here atm as we are using an impure install anyway.
+update_browser "firefox" "ubuntu-22.04"
+update_browser "webkit" "ubuntu-22.04"
+update_browser "ffmpeg" "linux"
+
+
+# Update package-lock.json files for all npm deps that are built in playwright
+
+# Function to download `package-lock.json` for a given source path and update hash
+update_hash() {
+    local source_root_path="$1"
+    local existing_hash="$2"
+
+    # Formulate download URL
+    local download_url="${repo_url_prefix}/v${driver_version}${source_root_path}/package-lock.json"
+    # Download package-lock.json to temporary directory
+    curl -fsSL -o "${temp_dir}/package-lock.json" "$download_url"
+
+    # Calculate the new hash
+    local new_hash
+    new_hash=$(prefetch-npm-deps "${temp_dir}/package-lock.json")
+
+    # Update npmDepsHash in the original file
+    sed -i "s|$existing_hash|${new_hash}|" "$driver_file"
+}
+
+while IFS= read -r source_root_line; do
+    [[ "$source_root_line" =~ sourceRoot ]] || continue
+    source_root_path=$(echo "$source_root_line" | sed -e 's/^.*"${src.name}\(.*\)";.*$/\1/')
+    # Extract the current npmDepsHash for this sourceRoot
+    existing_hash=$(grep -A1 "$source_root_line" "$driver_file" | grep 'npmDepsHash' | sed -e 's/^.*npmDepsHash = "\(.*\)";$/\1/')
+
+    # Call the function to download and update the hash
+    update_hash "$source_root_path" "$existing_hash"
+done < "$driver_file"
diff --git a/pkgs/development/python-modules/playwrightcapture/default.nix b/pkgs/development/python-modules/playwrightcapture/default.nix
index 37766343c2699..8717bfa11759c 100644
--- a/pkgs/development/python-modules/playwrightcapture/default.nix
+++ b/pkgs/development/python-modules/playwrightcapture/default.nix
@@ -1,16 +1,17 @@
 {
   lib,
+  aiohttp,
+  aiohttp-socks,
   beautifulsoup4,
   buildPythonPackage,
   dateparser,
   fetchFromGitHub,
-  playwright,
   playwright-stealth,
+  playwright,
   poetry-core,
   puremagic,
   pydub,
   pythonOlder,
-  pythonRelaxDepsHook,
   pytz,
   requests,
   setuptools,
@@ -21,7 +22,7 @@
 
 buildPythonPackage rec {
   pname = "playwrightcapture";
-  version = "1.24.7";
+  version = "1.26.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -30,10 +31,12 @@ buildPythonPackage rec {
     owner = "Lookyloo";
     repo = "PlaywrightCapture";
     rev = "refs/tags/v${version}";
-    hash = "sha256-mCwV5rgJLns4LvCVwnGAJeqs426GK/8rfp93YKH34VA=";
+    hash = "sha256-v6n+zsiLEQHeAeSALDxu4FWwwQaD/zu3rwxIjR57Ly4=";
   };
 
   pythonRelaxDeps = [
+    "aiohttp"
+    "aiohttp-socks"
     "beautifulsoup4"
     "playwright"
     "setuptools"
@@ -42,9 +45,10 @@ buildPythonPackage rec {
 
   build-system = [ poetry-core ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
+    aiohttp
+    aiohttp-socks
     beautifulsoup4
     dateparser
     playwright
diff --git a/pkgs/development/python-modules/pleroma-bot/default.nix b/pkgs/development/python-modules/pleroma-bot/default.nix
index 773b9bccdf5f4..9678a3449f823 100644
--- a/pkgs/development/python-modules/pleroma-bot/default.nix
+++ b/pkgs/development/python-modules/pleroma-bot/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, requests-mock
-, oauthlib
-, requests-oauthlib
-, requests
-, pyaml
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  requests-mock,
+  oauthlib,
+  requests-oauthlib,
+  requests,
+  pyaml,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
     requests-mock
   ];
 
-  pythonImportsCheck = [
-    "pleroma_bot"
-  ];
+  pythonImportsCheck = [ "pleroma_bot" ];
 
   meta = with lib; {
     description = "Bot for mirroring one or multiple Twitter accounts in Pleroma/Mastodon";
diff --git a/pkgs/development/python-modules/plexapi/default.nix b/pkgs/development/python-modules/plexapi/default.nix
index 1519e44dac0bd..582cc2e049401 100644
--- a/pkgs/development/python-modules/plexapi/default.nix
+++ b/pkgs/development/python-modules/plexapi/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, requests
-, setuptools
-, tqdm
-, websocket-client
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
+  setuptools,
+  tqdm,
+  websocket-client,
 }:
 
 buildPythonPackage rec {
   pname = "plexapi";
-  version = "4.15.12";
+  version = "4.15.16";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,12 +20,10 @@ buildPythonPackage rec {
     owner = "pkkid";
     repo = "python-plexapi";
     rev = "refs/tags/${version}";
-    hash = "sha256-i+Vg1SWxDKprZu+crf0iallaAIApDpidJ//2mivAn18=";
+    hash = "sha256-NwGGNN6LC3gvE8zoVL5meNWMbqZjJ+6PcU2ebJTfJmU=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     requests
@@ -35,9 +34,7 @@ buildPythonPackage rec {
   # Tests require a running Plex instance
   doCheck = false;
 
-  pythonImportsCheck = [
-    "plexapi"
-  ];
+  pythonImportsCheck = [ "plexapi" ];
 
   meta = with lib; {
     description = "Python bindings for the Plex API";
diff --git a/pkgs/development/python-modules/plexauth/default.nix b/pkgs/development/python-modules/plexauth/default.nix
index fd7f11e14d27e..caa1dcdf1d74c 100644
--- a/pkgs/development/python-modules/plexauth/default.nix
+++ b/pkgs/development/python-modules/plexauth/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchFromGitHub, aiohttp, isPy27 }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  aiohttp,
+  isPy27,
+}:
 
 buildPythonPackage rec {
   pname = "plexauth";
@@ -19,9 +25,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   # at least guarantee the module can be imported
-  pythonImportsCheck = [
-    "plexauth"
-  ];
+  pythonImportsCheck = [ "plexauth" ];
 
   meta = with lib; {
     homepage = "https://github.com/jjlawren/python-plexauth/";
diff --git a/pkgs/development/python-modules/plexwebsocket/default.nix b/pkgs/development/python-modules/plexwebsocket/default.nix
index eaaed97c01b76..bd361fb4493e5 100644
--- a/pkgs/development/python-modules/plexwebsocket/default.nix
+++ b/pkgs/development/python-modules/plexwebsocket/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-gT9RWpaR33ROs6ttjH2joNPi99Ng94Tp/R9eZY1eGZk=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Package does not include tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "plexwebsocket"
-  ];
+  pythonImportsCheck = [ "plexwebsocket" ];
 
   meta = with lib; {
     description = "Library to react to events issued over Plex websockets";
diff --git a/pkgs/development/python-modules/plone-testing/default.nix b/pkgs/development/python-modules/plone-testing/default.nix
index ce7f0f3ef626c..daa68e31afa1d 100644
--- a/pkgs/development/python-modules/plone-testing/default.nix
+++ b/pkgs/development/python-modules/plone-testing/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-, zope-testing
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  zope-testing,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -12,10 +13,14 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-xdzm4LG/W5ziYXaXbCOfQbZYZvaUUih3lWhkLzWqeUc=";
+    hash = "sha256-xdzm4LG/W5ziYXaXbCOfQbZYZvaUUih3lWhkLzWqeUc=";
   };
 
-  propagatedBuildInputs = [ six setuptools zope-testing ];
+  propagatedBuildInputs = [
+    six
+    setuptools
+    zope-testing
+  ];
 
   # Huge amount of testing dependencies (including Zope2)
   doCheck = false;
diff --git a/pkgs/development/python-modules/ploomber-core/default.nix b/pkgs/development/python-modules/ploomber-core/default.nix
new file mode 100644
index 0000000000000..e5d8eb2e480ae
--- /dev/null
+++ b/pkgs/development/python-modules/ploomber-core/default.nix
@@ -0,0 +1,49 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  pyyaml,
+  posthog,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "ploomber-core";
+  version = "0.2.25";
+
+  pyproject = true;
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "ploomber";
+    repo = "core";
+    rev = "refs/tags/${version}";
+    hash = "sha256-QUEnWFhf42ppoXoz3H/2SHtoPZOi6lbopsrbmEAk+1U=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    pyyaml
+    posthog
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  disabledTests = [
+    "telemetry" # requires network
+    "exceptions" # requires stderr capture
+  ];
+
+  pythonImportsCheck = [ "ploomber_core" ];
+
+  meta = with lib; {
+    description = "Core module shared across Ploomber projects";
+    homepage = "https://github.com/ploomber/core";
+    changelog = "https://github.com/ploomber/core/blob/${version}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ pacien ];
+  };
+}
diff --git a/pkgs/development/python-modules/ploomber-extension/default.nix b/pkgs/development/python-modules/ploomber-extension/default.nix
new file mode 100644
index 0000000000000..9c020f25fa6fd
--- /dev/null
+++ b/pkgs/development/python-modules/ploomber-extension/default.nix
@@ -0,0 +1,51 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  hatchling,
+  hatch-jupyter-builder,
+  hatch-nodejs-version,
+  jupyterlab,
+  ploomber-core,
+  pytestCheckHook,
+  pytest-jupyter,
+}:
+
+buildPythonPackage rec {
+  pname = "ploomber-extension";
+  version = "0.1.1";
+
+  pyproject = true;
+  disabled = pythonOlder "3.6";
+
+  # using pypi archive which includes pre-built assets
+  src = fetchPypi {
+    pname = "ploomber_extension";
+    inherit version;
+    hash = "sha256-wsldqLhJfOESH9aMMzz1Y/FXofHyfgrl81O95NePXSA=";
+  };
+
+  build-system = [
+    hatchling
+    hatch-jupyter-builder
+    hatch-nodejs-version
+    jupyterlab
+  ];
+
+  dependencies = [ ploomber-core ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-jupyter
+  ];
+
+  pythonImportsCheck = [ "ploomber_extension" ];
+
+  meta = with lib; {
+    description = "Ploomber extension";
+    homepage = "https://pypi.org/project/ploomber-extension";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ pacien ];
+  };
+}
diff --git a/pkgs/development/python-modules/plotext/default.nix b/pkgs/development/python-modules/plotext/default.nix
index 7342067b8ead0..94ba9f6c5d21a 100644
--- a/pkgs/development/python-modules/plotext/default.nix
+++ b/pkgs/development/python-modules/plotext/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/plotly/default.nix b/pkgs/development/python-modules/plotly/default.nix
index 0bec07c3bad2c..38b4ed40dca25 100644
--- a/pkgs/development/python-modules/plotly/default.nix
+++ b/pkgs/development/python-modules/plotly/default.nix
@@ -1,29 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytz
-, requests
-, six
-, tenacity
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  packaging,
+  tenacity,
+  kaleido,
 }:
 
 buildPythonPackage rec {
   pname = "plotly";
-  version = "5.20.0";
-  format = "setuptools";
+  version = "5.23.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-v5AcgF0iAyz6U0sv98WqawZZ4DfxnsHgzKf1hZGLXIk=";
+    hash = "sha256-ieV9ADoRYwOjTeZwCGI5E2fdVkIiq3H4Ux33Ann8AZM=";
   };
 
-  propagatedBuildInputs = [
-    pytz
-    requests
-    six
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "\"jupyterlab~=3.0;python_version>='3.6'\"," ""
+  '';
+
+  env.SKIP_NPM = true;
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    packaging
     tenacity
+    kaleido
   ];
 
+  pythonImportsCheck = [ "plotly" ];
+
   # No tests in archive
   doCheck = false;
 
@@ -32,6 +43,6 @@ buildPythonPackage rec {
     downloadPage = "https://github.com/plotly/plotly.py";
     homepage = "https://plot.ly/python/";
     license = with licenses; [ mit ];
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ pandapip1 ];
   };
 }
diff --git a/pkgs/development/python-modules/plotnine/default.nix b/pkgs/development/python-modules/plotnine/default.nix
index fb86d44472d26..f94ac77898f3f 100644
--- a/pkgs/development/python-modules/plotnine/default.nix
+++ b/pkgs/development/python-modules/plotnine/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "plotnine";
-  version = "0.13.5";
+  version = "0.13.6";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "has2k1";
     repo = "plotnine";
     rev = "refs/tags/v${version}";
-    hash = "sha256-vGxsBcY4CRT4rBUq0AQ4oo0etKK+CtUD487VvnoK/rI=";
+    hash = "sha256-/yxRYK3ZTrYj+l3TQhFllyICnJjCZPd4ebNurCLZAYg=";
   };
 
   postPatch = ''
@@ -36,6 +36,8 @@ buildPythonPackage rec {
 
   build-system = [ setuptools-scm ];
 
+  pythonRelaxDeps = [ "mizani" ];
+
   dependencies = [
     matplotlib
     mizani
@@ -57,6 +59,12 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "plotnine" ];
 
+  disabledTests = [
+    # Tries to change locale. The issued warning causes this test to fail.
+    # UserWarning: Could not set locale to English/United States. Some date-related tests may fail
+    "test_no_after_scale_warning"
+  ];
+
   disabledTestPaths = [
     # Assertion Errors:
     # Generated plot images do not exactly match the expected files.
@@ -99,11 +107,11 @@ buildPythonPackage rec {
     "tests/test_lint_and_format.py"
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Grammar of graphics for Python";
     homepage = "https://plotnine.readthedocs.io/";
     changelog = "https://github.com/has2k1/plotnine/releases/tag/v${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ onny ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ onny ];
   };
 }
diff --git a/pkgs/development/python-modules/pluggy/default.nix b/pkgs/development/python-modules/pluggy/default.nix
index a768e8ce942f9..f2951a245e319 100644
--- a/pkgs/development/python-modules/pluggy/default.nix
+++ b/pkgs/development/python-modules/pluggy/default.nix
@@ -1,15 +1,15 @@
-{ buildPythonPackage
-, lib
-, fetchFromGitHub
-, setuptools-scm
-, pythonOlder
-, importlib-metadata
-, callPackage
+{
+  buildPythonPackage,
+  lib,
+  fetchFromGitHub,
+  setuptools-scm,
+  pythonOlder,
+  callPackage,
 }:
 
 buildPythonPackage rec {
   pname = "pluggy";
-  version = "1.4.0";
+  version = "1.5.0";
 
   disabled = pythonOlder "3.8";
 
@@ -19,10 +19,10 @@ buildPythonPackage rec {
     owner = "pytest-dev";
     repo = "pluggy";
     rev = "refs/tags/${version}";
-    hash = "sha256-1XHJwODmpYQkYZvnZck6RrtT4lOeCf8cr1QFx9DCbzw=";
+    hash = "sha256-f0DxyZZk6RoYtOEXLACcsOn2B+Hot4U4g5Ogr/hKmOE=";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
+  build-system = [ setuptools-scm ];
 
   # To prevent infinite recursion with pytest
   doCheck = false;
diff --git a/pkgs/development/python-modules/pluggy/tests.nix b/pkgs/development/python-modules/pluggy/tests.nix
index dc6e16e7b2d79..8eec02011202e 100644
--- a/pkgs/development/python-modules/pluggy/tests.nix
+++ b/pkgs/development/python-modules/pluggy/tests.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, pluggy
-, pytestCheckHook
+{
+  buildPythonPackage,
+  pluggy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/pluginbase/default.nix b/pkgs/development/python-modules/pluginbase/default.nix
index be228d2318655..cc330ac93f9b6 100644
--- a/pkgs/development/python-modules/pluginbase/default.nix
+++ b/pkgs/development/python-modules/pluginbase/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchPypi, buildPythonPackage, pytest }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pytest,
+}:
 
 buildPythonPackage rec {
   version = "1.0.1";
@@ -19,7 +24,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/mitsuhiko/pluginbase";
-    description = "A support library for building plugins sytems in Python";
+    description = "Support library for building plugins sytems in Python";
     license = licenses.bsd3;
     platforms = platforms.all;
   };
diff --git a/pkgs/development/python-modules/plugincode/default.nix b/pkgs/development/python-modules/plugincode/default.nix
index 6e49474cc63d2..9d82132c196b3 100644
--- a/pkgs/development/python-modules/plugincode/default.nix
+++ b/pkgs/development/python-modules/plugincode/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, setuptools-scm
-, click
-, commoncode
-, pluggy
-, pytestCheckHook
-, pytest-xdist
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools-scm,
+  click,
+  commoncode,
+  pluggy,
+  pytestCheckHook,
+  pytest-xdist,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
 
   dontConfigure = true;
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     click
@@ -39,9 +38,8 @@ buildPythonPackage rec {
     pytest-xdist
   ];
 
-  pythonImportsCheck = [
-    "plugincode"
-  ];
+  # wants to read /etc/os-release and crashes because that is not available in the sandbox
+  # pythonImportsCheck = [ "plugincode" ];
 
   disabledTests = [
     # We don't want black as an input
diff --git a/pkgs/development/python-modules/plugnplay/default.nix b/pkgs/development/python-modules/plugnplay/default.nix
index 1b8449ffe7cec..4882641e538ea 100644
--- a/pkgs/development/python-modules/plugnplay/default.nix
+++ b/pkgs/development/python-modules/plugnplay/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 buildPythonPackage rec {
   pname = "plugnplay";
@@ -15,12 +16,10 @@ buildPythonPackage rec {
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "plugnplay"
-  ];
+  pythonImportsCheck = [ "plugnplay" ];
 
   meta = with lib; {
-    description = "A Generic plug-in system for python applications";
+    description = "Generic plug-in system for python applications";
     homepage = "https://github.com/daltonmatos/plugnplay";
     license = licenses.gpl2Only;
     maintainers = [ ];
diff --git a/pkgs/development/python-modules/plugp100/default.nix b/pkgs/development/python-modules/plugp100/default.nix
new file mode 100644
index 0000000000000..6a79e5b30068b
--- /dev/null
+++ b/pkgs/development/python-modules/plugp100/default.nix
@@ -0,0 +1,49 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  certifi,
+  scapy,
+  urllib3,
+  semantic-version,
+  aiohttp,
+  jsons,
+  requests,
+  # Test inputs
+  pytestCheckHook,
+  pyyaml,
+  pytest-asyncio,
+  async-timeout,
+  }:
+
+buildPythonPackage rec {
+  pname = "plugp100";
+  version = "5.1.3";
+
+  src = fetchFromGitHub {
+    owner = "petretiandrea";
+    repo = "plugp100";
+    rev = version;
+    sha256 = "sha256-V+9cVBMN8H4oFU51T9BDrLF46xgQHqIsMj8nuPedUGA=";
+  };
+
+  propagatedBuildInputs =
+    [ certifi jsons requests aiohttp semantic-version scapy urllib3 pyyaml ];
+
+  nativeCheckInputs = [ pytestCheckHook pytest-asyncio async-timeout ];
+
+  disabledTestPaths = [
+    "tests/integration/"
+    "tests/unit/hub_child/"
+    "tests/unit/test_plug_strip.py"
+    "tests/unit/test_hub.py "
+    "tests/unit/test_klap_protocol.py"
+  ];
+
+  meta = with lib; {
+    description = "Python library to control Tapo Plug P100 devices";
+    homepage = "https://github.com/petretiandrea/plugp100";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ pyle ];
+  };
+}
diff --git a/pkgs/development/python-modules/plugwise/default.nix b/pkgs/development/python-modules/plugwise/default.nix
index 358b81eb4c209..b018fdfbd3e1f 100644
--- a/pkgs/development/python-modules/plugwise/default.nix
+++ b/pkgs/development/python-modules/plugwise/default.nix
@@ -1,28 +1,23 @@
 {
   lib,
   aiohttp,
-  async-timeout,
   buildPythonPackage,
-  crcmod,
   defusedxml,
   fetchFromGitHub,
   freezegun,
   jsonpickle,
   munch,
-  pyserial,
   pytest-aiohttp,
   pytest-asyncio,
   pytestCheckHook,
   python-dateutil,
   pythonOlder,
-  semver,
   setuptools,
-  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "plugwise";
-  version = "0.37.3";
+  version = "1.4.1";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -31,30 +26,21 @@ buildPythonPackage rec {
     owner = "plugwise";
     repo = "python-plugwise";
     rev = "refs/tags/v${version}";
-    hash = "sha256-aQz0p+DNi1XVoFwdFjc3RjpHqA2kGf4pU1QS6m271gU=";
+    hash = "sha256-lMcehjG1Zc9s02MBsRUXZHQjxcrZetOgOSne0nCGVV0=";
   };
 
   postPatch = ''
-    # setuptools
-    sed -i -e "s/~=[0-9.]*//" pyproject.toml
-    # wheel
-    sed -i -e "s/~=[0-9.]*//" pyproject.toml
+    # setuptools and wheel
+    sed -i -e "s/~=[0-9.]*//g" pyproject.toml
   '';
 
-  build-system = [
-    setuptools
-    wheel
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     aiohttp
-    async-timeout
-    crcmod
     defusedxml
     munch
-    pyserial
     python-dateutil
-    semver
   ];
 
   nativeCheckInputs = [
diff --git a/pkgs/development/python-modules/plum-py/default.nix b/pkgs/development/python-modules/plum-py/default.nix
index 721786e608d9d..c2bca8e10fb6c 100644
--- a/pkgs/development/python-modules/plum-py/default.nix
+++ b/pkgs/development/python-modules/plum-py/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, baseline
-, buildPythonPackage
-, fetchFromGitLab
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  baseline,
+  buildPythonPackage,
+  fetchFromGitLab,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,13 +31,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "plum"
-  ];
+  pythonImportsCheck = [ "plum" ];
 
-  pytestFlagsArray = [
-    "tests"
-  ];
+  pytestFlagsArray = [ "tests" ];
 
   disabledTestPaths = [
     # tests enum.IntFlag behaviour which has been disallowed in python 3.11.6
diff --git a/pkgs/development/python-modules/plumbum/default.nix b/pkgs/development/python-modules/plumbum/default.nix
index 0eb7baadcfbfb..42a9234a08d00 100644
--- a/pkgs/development/python-modules/plumbum/default.nix
+++ b/pkgs/development/python-modules/plumbum/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, hatch-vcs
-, openssh
-, ps
-, psutil
-, pytest-mock
-, pytest-timeout
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  hatch-vcs,
+  openssh,
+  ps,
+  psutil,
+  pytest-mock,
+  pytest-timeout,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -63,9 +64,9 @@ buildPythonPackage rec {
 
   meta = with lib; {
     changelog = "https://github.com/tomerfiliba/plumbum/releases/tag/v${version}";
-    description = " Plumbum: Shell Combinators ";
+    description = " Plumbum: Shell Combinators";
     homepage = " https://github.com/tomerfiliba/plumbum ";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pluthon/default.nix b/pkgs/development/python-modules/pluthon/default.nix
index 1ff7d05300023..21994bd0817e1 100644
--- a/pkgs/development/python-modules/pluthon/default.nix
+++ b/pkgs/development/python-modules/pluthon/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, setuptools
-, pythonOlder
-# Python deps
-, uplc
-, graphlib-backport
-, ordered-set
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  pythonOlder,
+  # Python deps
+  uplc,
+  graphlib-backport,
+  ordered-set,
 }:
 
 buildPythonPackage rec {
   pname = "pluthon";
-  version = "0.4.6";
+  version = "1.0.0";
 
   format = "pyproject";
 
@@ -19,7 +20,7 @@ buildPythonPackage rec {
     owner = "OpShin";
     repo = "pluthon";
     rev = version;
-    hash = "sha256-ZmBkbglSbBfVhA4yP0tJdwpJiFpJ7vX0A321ldQF0lA=";
+    hash = "sha256-IYpkb/RXRu53HoeVKik7Jog5FyXwrWItrxSla9dN0s4=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/plux/default.nix b/pkgs/development/python-modules/plux/default.nix
index b778a2dd17219..0ca2084fd8c4e 100644
--- a/pkgs/development/python-modules/plux/default.nix
+++ b/pkgs/development/python-modules/plux/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pytestCheckHook
-, setuptools
-, stevedore
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+  stevedore,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "plux";
-  version = "1.5.0";
+  version = "1.11.0";
   pyproject = true;
 
   # Tests are not available from PyPi
@@ -18,21 +18,21 @@ buildPythonPackage rec {
     owner = "localstack";
     repo = "plux";
     rev = "refs/tags/v${version}";
-    hash = "sha256-XHRQTgvxXJCjCD/9Invf/5OCtp12A5poRUv8tR9DJsk=";
+    hash = "sha256-M4N3Ccuw95OcLsWQVtITv4QShBJKliTh5QIoqji8x9o=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     wheel
   ];
 
-  propagatedBuildInputs = [
-    stevedore
-  ];
+  dependencies = [ stevedore ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  preCheck = ''
+    export HOME=$TMPDIR
+  '';
 
   pythonImportsCheck = [ "plugin.core" ];
 
@@ -40,6 +40,6 @@ buildPythonPackage rec {
     description = "Dynamic code loading framework for building pluggable Python distributions";
     homepage = "https://github.com/localstack/plux";
     license = licenses.asl20;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ply/default.nix b/pkgs/development/python-modules/ply/default.nix
index fca97226d6775..e4a4118bb53f8 100644
--- a/pkgs/development/python-modules/ply/default.nix
+++ b/pkgs/development/python-modules/ply/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/plyer/default.nix b/pkgs/development/python-modules/plyer/default.nix
index c6af90310c7b5..f0398ac862356 100644
--- a/pkgs/development/python-modules/plyer/default.nix
+++ b/pkgs/development/python-modules/plyer/default.nix
@@ -1,4 +1,12 @@
-{ stdenv, lib, buildPythonPackage, fetchFromGitHub, fetchpatch, keyring, mock, pytestCheckHook }:
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  keyring,
+  mock,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "plyer";
@@ -25,7 +33,10 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ keyring ];
 
-  nativeCheckInputs = [ mock pytestCheckHook ];
+  nativeCheckInputs = [
+    mock
+    pytestCheckHook
+  ];
 
   pytestFlagsArray = [ "plyer/tests" ];
   disabledTests = [
@@ -43,7 +54,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "plyer" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     description = "Plyer is a platform-independent api to use features commonly found on various platforms";
     homepage = "https://github.com/kivy/plyer";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/plyfile/default.nix b/pkgs/development/python-modules/plyfile/default.nix
index 2eff69c4ad8da..419d58964639f 100644
--- a/pkgs/development/python-modules/plyfile/default.nix
+++ b/pkgs/development/python-modules/plyfile/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
 
-# build-system
-, pdm-pep517
+  # build-system
+  pdm-pep517,
 
-# dependencies
-, numpy
+  # dependencies
+  numpy,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -24,22 +25,15 @@ buildPythonPackage rec {
     hash = "sha256-HlyqljfjuaZoG5f2cfDQj+7KS0en7pW2PPEnpvH8U+E=";
   };
 
-  nativeBuildInputs = [
-    pdm-pep517
-  ];
+  nativeBuildInputs = [ pdm-pep517 ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "NumPy-based text/binary PLY file reader/writer for Python";
-    homepage    = "https://github.com/dranjan/python-plyfile";
+    homepage = "https://github.com/dranjan/python-plyfile";
     maintainers = with maintainers; [ abbradar ];
   };
-
 }
diff --git a/pkgs/development/python-modules/plyplus/default.nix b/pkgs/development/python-modules/plyplus/default.nix
index 209985815ffca..53761eb0a4d09 100644
--- a/pkgs/development/python-modules/plyplus/default.nix
+++ b/pkgs/development/python-modules/plyplus/default.nix
@@ -1,4 +1,10 @@
-{ lib, fetchPypi, buildPythonPackage, ply, isPy3k }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  ply,
+  isPy3k,
+}:
 buildPythonPackage rec {
   pname = "plyplus";
   version = "0.7.5";
@@ -15,7 +21,7 @@ buildPythonPackage rec {
 
   meta = {
     homepage = "https://github.com/erezsh/plyplus";
-    description = "A general-purpose parser built on top of PLY";
+    description = "General-purpose parser built on top of PLY";
     maintainers = with lib.maintainers; [ twey ];
     license = lib.licenses.mit;
   };
diff --git a/pkgs/development/python-modules/plyvel/default.nix b/pkgs/development/python-modules/plyvel/default.nix
index 794585c54b800..5e7874057258a 100644
--- a/pkgs/development/python-modules/plyvel/default.nix
+++ b/pkgs/development/python-modules/plyvel/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pkgs
-, pytest
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pkgs,
+  pytest,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pmdarima/default.nix b/pkgs/development/python-modules/pmdarima/default.nix
index 9592ae32e09d6..0b03e9bcf6bb4 100644
--- a/pkgs/development/python-modules/pmdarima/default.nix
+++ b/pkgs/development/python-modules/pmdarima/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cython
-, joblib
-, matplotlib
-, numpy
-, pandas
-, scikit-learn
-, scipy
-, statsmodels
-, urllib3
-, pythonOlder
-, python
-, pytest7CheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cython,
+  joblib,
+  matplotlib,
+  numpy,
+  pandas,
+  scikit-learn,
+  scipy,
+  statsmodels,
+  urllib3,
+  pythonOlder,
+  python,
+  pytest7CheckHook,
 }:
 
 buildPythonPackage rec {
@@ -52,7 +53,7 @@ buildPythonPackage rec {
     pytest7CheckHook
   ];
 
-  disabledTests= [
+  disabledTests = [
     # touches internet
     "test_load_from_web"
   ];
@@ -60,7 +61,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "pmdarima" ];
 
   meta = with lib; {
-    description = "A statistical library designed to fill the void in Python's time series analysis capabilities, including the equivalent of R's auto.arima function";
+    description = "Statistical library designed to fill the void in Python's time series analysis capabilities, including the equivalent of R's auto.arima function";
     homepage = "https://github.com/alkaline-ml/pmdarima";
     changelog = "https://github.com/alkaline-ml/pmdarima/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pmdsky-debug-py/default.nix b/pkgs/development/python-modules/pmdsky-debug-py/default.nix
index 17511c8fc23b8..81b37969126cb 100644
--- a/pkgs/development/python-modules/pmdsky-debug-py/default.nix
+++ b/pkgs/development/python-modules/pmdsky-debug-py/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
 }:
 
 #This package is auto-generated. It could totally be possible to generate it from upstream, but seems unecessary
@@ -27,6 +28,6 @@ buildPythonPackage rec {
     description = "Autogenerated and statically check-able pmdsky-debug symbol definitions for Python";
     homepage = "https://github.com/SkyTemple/pmdsky-debug-py";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pmsensor/default.nix b/pkgs/development/python-modules/pmsensor/default.nix
index 48156a3eae95c..0ec79d38ff130 100644
--- a/pkgs/development/python-modules/pmsensor/default.nix
+++ b/pkgs/development/python-modules/pmsensor/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyserial
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyserial,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     sha256 = "7fc03aafb791ca70d847c9ab97cf181bc7d8f7345efb4b0c3f66c07b9c7dee69";
   };
 
-  propagatedBuildInputs = [
-    pyserial
-  ];
+  propagatedBuildInputs = [ pyserial ];
 
   # no tests implemented
   doCheck = false;
diff --git a/pkgs/development/python-modules/pmw/default.nix b/pkgs/development/python-modules/pmw/default.nix
index ab9f3fb60b286..98988926b21e4 100644
--- a/pkgs/development/python-modules/pmw/default.nix
+++ b/pkgs/development/python-modules/pmw/default.nix
@@ -1,4 +1,9 @@
-{ lib , buildPythonPackage , fetchPypi, tkinter }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  tkinter,
+}:
 
 buildPythonPackage rec {
   pname = "pmw";
@@ -17,7 +22,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = {
-    description = "A toolkit for building high-level compound widgets in Python using the Tkinter module";
+    description = "Toolkit for building high-level compound widgets in Python using the Tkinter module";
     homepage = "https://pmw.sourceforge.net/";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ mounium ];
diff --git a/pkgs/development/python-modules/pnglatex/default.nix b/pkgs/development/python-modules/pnglatex/default.nix
index 05b36b2248395..a46359bf76e52 100644
--- a/pkgs/development/python-modules/pnglatex/default.nix
+++ b/pkgs/development/python-modules/pnglatex/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, poppler_utils, netpbm }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poppler_utils,
+  netpbm,
+}:
 
 buildPythonPackage rec {
 
@@ -21,7 +27,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/MaT1g3R/pnglatex";
-    description = "a small program that converts LaTeX snippets to png";
+    description = "Small program that converts LaTeX snippets to png";
     mainProgram = "pnglatex";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ GaetanLepage ];
diff --git a/pkgs/development/python-modules/pocket/default.nix b/pkgs/development/python-modules/pocket/default.nix
index 799f5ef261fa5..05b15b5c4d6a4 100644
--- a/pkgs/development/python-modules/pocket/default.nix
+++ b/pkgs/development/python-modules/pocket/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Wrapper for the pocket API";
-    homepage    = "https://github.com/tapanpandita/pocket";
-    license     = licenses.bsd3;
+    homepage = "https://github.com/tapanpandita/pocket";
+    license = licenses.bsd3;
     maintainers = with maintainers; [ ericsagnes ];
   };
-
 }
diff --git a/pkgs/development/python-modules/podcastparser/default.nix b/pkgs/development/python-modules/podcastparser/default.nix
index d844a19f902ee..f2f458a2ee01f 100644
--- a/pkgs/development/python-modules/podcastparser/default.nix
+++ b/pkgs/development/python-modules/podcastparser/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,13 +25,9 @@ buildPythonPackage rec {
       --replace "--cov=podcastparser --cov-report html --doctest-modules" ""
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "podcastparser"
-  ];
+  pythonImportsCheck = [ "podcastparser" ];
 
   meta = with lib; {
     description = "Module to parse podcasts";
diff --git a/pkgs/development/python-modules/podcats/default.nix b/pkgs/development/python-modules/podcats/default.nix
index e1cb4a05a7843..f95fb719212f4 100644
--- a/pkgs/development/python-modules/podcats/default.nix
+++ b/pkgs/development/python-modules/podcats/default.nix
@@ -1,9 +1,16 @@
-{ lib, buildPythonPackage, fetchFromGitHub, flask, mutagen }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  flask,
+  mutagen,
+}:
 
 buildPythonPackage rec {
   pname = "podcats";
   version = "0.5.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "jakubroztocil";
@@ -12,12 +19,17 @@ buildPythonPackage rec {
     sha256 = "0zjdgry5n209rv19kj9yaxy7c7zq5gxr488izrgs4sc75vdzz8xc";
   };
 
-  patchPhase = ''
+  postPatch = ''
     substituteInPlace podcats.py \
-      --replace 'debug=True' 'debug=True, use_reloader=False'
+      --replace-fail 'debug=True' 'debug=True, use_reloader=False'
   '';
 
-  propagatedBuildInputs = [ flask mutagen ];
+  build-system = [ setuptools ];
+
+  dependencies = [
+    flask
+    mutagen
+  ];
 
   meta = {
     description = "Application that generates RSS feeds for podcast episodes from local audio files";
diff --git a/pkgs/development/python-modules/podman/default.nix b/pkgs/development/python-modules/podman/default.nix
index 92a73abb45388..11f3a62535b47 100644
--- a/pkgs/development/python-modules/podman/default.nix
+++ b/pkgs/development/python-modules/podman/default.nix
@@ -1,21 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fixtures
-, pytestCheckHook
-, pythonOlder
-, pyxdg
-, requests
-, requests-mock
-, rich
-, setuptools
-, tomli
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fixtures,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
+  rich,
+  setuptools,
+  tomli,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "podman";
-  version = "5.0.0";
+  version = "5.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -24,20 +24,19 @@ buildPythonPackage rec {
     owner = "containers";
     repo = "podman-py";
     rev = "refs/tags/v${version}";
-    hash = "sha256-3tbhTg060/K4ejT/xjItSu9zf05LR/d0vkg4XDsspEE=";
+    hash = "sha256-2NsF00jaW2wl99sTxTQ5xJkqNOYh9RaecmBMcWP3TI8=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pyxdg
+  dependencies = [
     requests
-    rich
-    tomli
     urllib3
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
+
+  passthru.optional-dependencies = {
+    progress_bar = [ rich ];
+  };
 
   nativeCheckInputs = [
     fixtures
@@ -49,14 +48,13 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d)
   '';
 
-  pythonImportsCheck = [
-    "podman"
-  ];
+  pythonImportsCheck = [ "podman" ];
 
   disabledTests = [
     # Integration tests require a running container setup
     "AdapterIntegrationTest"
     "ContainersIntegrationTest"
+    "ContainersExecIntegrationTests"
     "ImagesIntegrationTest"
     "ManifestsIntegrationTest"
     "NetworksIntegrationTest"
@@ -72,6 +70,5 @@ buildPythonPackage rec {
     changelog = "https://github.com/containers/podman-py/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
-    mainProgram = "podman";
   };
 }
diff --git a/pkgs/development/python-modules/poetry-core/default.nix b/pkgs/development/python-modules/poetry-core/default.nix
index c7010ef0432cf..fec055b429bda 100644
--- a/pkgs/development/python-modules/poetry-core/default.nix
+++ b/pkgs/development/python-modules/poetry-core/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, build
-, git
-, pytest-mock
-, pytestCheckHook
-, setuptools
-, tomli-w
-, virtualenv
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  build,
+  git,
+  pytest-mock,
+  pytestCheckHook,
+  setuptools,
+  tomli-w,
+  virtualenv,
 }:
 
 buildPythonPackage rec {
@@ -42,14 +43,10 @@ buildPythonPackage rec {
     "default_src_with_excluded_data"
   ];
 
-  pythonImportsCheck = [
-    "poetry.core"
-  ];
+  pythonImportsCheck = [ "poetry.core" ];
 
   # Allow for package to use pep420's native namespaces
-  pythonNamespaces = [
-    "poetry"
-  ];
+  pythonNamespaces = [ "poetry" ];
 
   env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-int-conversion";
 
@@ -58,6 +55,6 @@ buildPythonPackage rec {
     description = "Core utilities for Poetry";
     homepage = "https://github.com/python-poetry/poetry-core/";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/poetry-dynamic-versioning/default.nix b/pkgs/development/python-modules/poetry-dynamic-versioning/default.nix
index 6e375def3c65b..690a155d056ef 100644
--- a/pkgs/development/python-modules/poetry-dynamic-versioning/default.nix
+++ b/pkgs/development/python-modules/poetry-dynamic-versioning/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, dunamai
-, fetchFromGitHub
-, jinja2
-, poetry-core
-, poetry
-, pytestCheckHook
-, pythonOlder
-, tomlkit
+{
+  lib,
+  buildPythonPackage,
+  dunamai,
+  fetchFromGitHub,
+  jinja2,
+  poetry-core,
+  poetry,
+  pytestCheckHook,
+  pythonOlder,
+  tomlkit,
 }:
 
 buildPythonPackage rec {
   pname = "poetry-dynamic-versioning";
-  version = "1.2.0";
+  version = "1.4.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -21,12 +22,10 @@ buildPythonPackage rec {
     owner = "mtkennerly";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-qkRnlLLzbYf7C2VjPDjYfllej8an4WftNahPLz/Wkxw=";
+    hash = "sha256-dhAqDRMRcIYUluYgBlhyPPDZTnLlDrhcAOnT0dHk3Mo=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     dunamai
@@ -50,9 +49,7 @@ buildPythonPackage rec {
     "test_integration"
   ];
 
-  pythonImportsCheck = [
-    "poetry_dynamic_versioning"
-  ];
+  pythonImportsCheck = [ "poetry_dynamic_versioning" ];
 
   setupHook = ./setup-hook.sh;
 
diff --git a/pkgs/development/python-modules/poetry-semver/default.nix b/pkgs/development/python-modules/poetry-semver/default.nix
index 422dbd04f881e..df4ef9c76f0e0 100644
--- a/pkgs/development/python-modules/poetry-semver/default.nix
+++ b/pkgs/development/python-modules/poetry-semver/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +18,7 @@ buildPythonPackage rec {
   nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A semantic versioning library for Python.";
+    description = "Semantic versioning library for Python";
     homepage = "https://github.com/python-poetry/semver";
     license = licenses.mit;
     maintainers = with maintainers; [ cpcloud ];
diff --git a/pkgs/development/python-modules/polarizationsolver/default.nix b/pkgs/development/python-modules/polarizationsolver/default.nix
index aebc74ede9ced..fc0afe375f460 100644
--- a/pkgs/development/python-modules/polarizationsolver/default.nix
+++ b/pkgs/development/python-modules/polarizationsolver/default.nix
@@ -1,11 +1,11 @@
-{ buildPythonPackage
-, lib
-, fetchFromGitLab
-, python
-, numpy
-, scipy
-, periodictable
-, fields
+{
+  buildPythonPackage,
+  lib,
+  fetchFromGitLab,
+  numpy,
+  scipy,
+  periodictable,
+  fields,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/polars/Cargo.lock b/pkgs/development/python-modules/polars/Cargo.lock
index caba522cc1432..94a0a87e3d8c9 100644
--- a/pkgs/development/python-modules/polars/Cargo.lock
+++ b/pkgs/development/python-modules/polars/Cargo.lock
@@ -4,9 +4,9 @@ version = 3
 
 [[package]]
 name = "addr2line"
-version = "0.21.0"
+version = "0.22.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
+checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678"
 dependencies = [
  "gimli",
 ]
@@ -18,6 +18,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
 
 [[package]]
+name = "adler2"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
+
+[[package]]
 name = "adler32"
 version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -39,9 +45,9 @@ dependencies = [
 
 [[package]]
 name = "aho-corasick"
-version = "1.1.2"
+version = "1.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
 dependencies = [
  "memchr",
 ]
@@ -63,9 +69,9 @@ dependencies = [
 
 [[package]]
 name = "allocator-api2"
-version = "0.2.16"
+version = "0.2.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
+checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
 
 [[package]]
 name = "android-tzdata"
@@ -90,32 +96,33 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
 
 [[package]]
 name = "anstyle"
-version = "1.0.6"
+version = "1.0.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
+checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1"
 
 [[package]]
 name = "anyhow"
-version = "1.0.80"
+version = "1.0.86"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1"
+checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
 
 [[package]]
 name = "apache-avro"
-version = "0.16.0"
+version = "0.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ceb7c683b2f8f40970b70e39ff8be514c95b96fcb9c4af87e1ed2cb2e10801a0"
+checksum = "1aef82843a0ec9f8b19567445ad2421ceeb1d711514384bdd3d49fe37102ee13"
 dependencies = [
+ "bigdecimal",
  "crc32fast",
  "digest",
- "lazy_static",
- "libflate 2.0.0",
+ "libflate 2.1.0",
  "log",
  "num-bigint",
  "quad-rand",
  "rand",
  "regex-lite",
  "serde",
+ "serde_bytes",
  "serde_json",
  "snap",
  "strum",
@@ -126,6 +133,21 @@ dependencies = [
 ]
 
 [[package]]
+name = "arboard"
+version = "3.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fb4009533e8ff8f1450a5bcbc30f4242a1d34442221f72314bea1f5dc9c7f89"
+dependencies = [
+ "clipboard-win",
+ "log",
+ "objc2",
+ "objc2-app-kit",
+ "objc2-foundation",
+ "parking_lot",
+ "x11rb",
+]
+
+[[package]]
 name = "argminmax"
 version = "0.6.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -141,10 +163,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bf7d0a018de4f6aa429b9d33d69edf69072b1c5b1cb8d3e4a5f7ef898fc3eb76"
 
 [[package]]
+name = "arrayref"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a"
+
+[[package]]
+name = "arrayvec"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
+
+[[package]]
 name = "arrow-array"
-version = "50.0.0"
+version = "52.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d390feeb7f21b78ec997a4081a025baef1e2e0d6069e181939b61864c9779609"
+checksum = "16f4a9468c882dc66862cef4e1fd8423d47e67972377d85d80e022786427768c"
 dependencies = [
  "ahash",
  "arrow-buffer",
@@ -152,15 +186,15 @@ dependencies = [
  "arrow-schema",
  "chrono",
  "half",
- "hashbrown 0.14.3",
+ "hashbrown",
  "num",
 ]
 
 [[package]]
 name = "arrow-buffer"
-version = "50.0.0"
+version = "52.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69615b061701bcdffbc62756bc7e85c827d5290b472b580c972ebbbf690f5aa4"
+checksum = "c975484888fc95ec4a632cdc98be39c085b1bb518531b0c80c5d462063e5daa1"
 dependencies = [
  "bytes",
  "half",
@@ -169,9 +203,9 @@ dependencies = [
 
 [[package]]
 name = "arrow-data"
-version = "50.0.0"
+version = "52.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67d644b91a162f3ad3135ce1184d0a31c28b816a581e08f29e8e9277a574c64e"
+checksum = "dd9d6f18c65ef7a2573ab498c374d8ae364b4a4edf67105357491c031f716ca5"
 dependencies = [
  "arrow-buffer",
  "arrow-schema",
@@ -181,9 +215,9 @@ dependencies = [
 
 [[package]]
 name = "arrow-schema"
-version = "50.0.0"
+version = "52.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ff3e9c01f7cd169379d269f926892d0e622a704960350d09d331be3ec9e0029"
+checksum = "9e972cd1ff4a4ccd22f86d3e53e835c2ed92e0eea6a3e8eadb72b4f1ac802cf8"
 
 [[package]]
 name = "arrow2"
@@ -224,18 +258,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.76",
 ]
 
 [[package]]
 name = "async-trait"
-version = "0.1.77"
+version = "0.1.81"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9"
+checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -254,10 +288,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9ae037714f313c1353189ead58ef9eec30a8e8dc101b2622d461418fd59e28a9"
 
 [[package]]
+name = "atomic-waker"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
+
+[[package]]
 name = "autocfg"
-version = "1.1.0"
+version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
 
 [[package]]
 name = "avro-schema"
@@ -277,9 +317,9 @@ dependencies = [
 
 [[package]]
 name = "aws-config"
-version = "1.1.7"
+version = "1.5.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b96342ea8948ab9bef3e6234ea97fc32e2d8a88d8fb6a084e52267317f94b6b"
+checksum = "4e95816a168520d72c0e7680c405a5a8c1fb6a035b4bc4b9d7b0de8e1a941697"
 dependencies = [
  "aws-credential-types",
  "aws-runtime",
@@ -297,19 +337,19 @@ dependencies = [
  "fastrand",
  "hex",
  "http 0.2.12",
- "hyper",
  "ring",
  "time",
  "tokio",
  "tracing",
+ "url",
  "zeroize",
 ]
 
 [[package]]
 name = "aws-credential-types"
-version = "1.1.7"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "273fa47dafc9ef14c2c074ddddbea4561ff01b7f68d5091c0e9737ced605c01d"
+checksum = "e16838e6c9e12125face1c1eff1343c75e3ff540de98ff7ebd61874a89bcfeb9"
 dependencies = [
  "aws-smithy-async",
  "aws-smithy-runtime-api",
@@ -319,9 +359,9 @@ dependencies = [
 
 [[package]]
 name = "aws-runtime"
-version = "1.1.7"
+version = "1.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e38bab716c8bf07da24be07ecc02e0f5656ce8f30a891322ecdcb202f943b85"
+checksum = "f42c2d4218de4dcd890a109461e2f799a1a2ba3bcd2cde9af88360f5df9266c6"
 dependencies = [
  "aws-credential-types",
  "aws-sigv4",
@@ -334,7 +374,8 @@ dependencies = [
  "bytes",
  "fastrand",
  "http 0.2.12",
- "http-body",
+ "http-body 0.4.6",
+ "once_cell",
  "percent-encoding",
  "pin-project-lite",
  "tracing",
@@ -343,10 +384,11 @@ dependencies = [
 
 [[package]]
 name = "aws-sdk-s3"
-version = "1.17.0"
+version = "1.31.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93d35d39379445970fc3e4ddf7559fff2c32935ce0b279f9cb27080d6b7c6d94"
+checksum = "67520cfee50a8a075a86e7960a6ff30a0a93f6b83ef36f7dff42a9fad9ec1818"
 dependencies = [
+ "ahash",
  "aws-credential-types",
  "aws-runtime",
  "aws-sigv4",
@@ -361,20 +403,25 @@ dependencies = [
  "aws-smithy-xml",
  "aws-types",
  "bytes",
+ "fastrand",
+ "hex",
+ "hmac",
  "http 0.2.12",
- "http-body",
+ "http-body 0.4.6",
+ "lru",
  "once_cell",
  "percent-encoding",
  "regex-lite",
+ "sha2",
  "tracing",
  "url",
 ]
 
 [[package]]
 name = "aws-sdk-sso"
-version = "1.15.0"
+version = "1.39.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d84bd3925a17c9adbf6ec65d52104a44a09629d8f70290542beeee69a95aee7f"
+checksum = "11822090cf501c316c6f75711d77b96fba30658e3867a7762e5e2f5d32d31e81"
 dependencies = [
  "aws-credential-types",
  "aws-runtime",
@@ -394,9 +441,9 @@ dependencies = [
 
 [[package]]
 name = "aws-sdk-ssooidc"
-version = "1.15.0"
+version = "1.40.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c2dae39e997f58bc4d6292e6244b26ba630c01ab671b6f9f44309de3eb80ab8"
+checksum = "78a2a06ff89176123945d1bbe865603c4d7101bea216a550bb4d2e4e9ba74d74"
 dependencies = [
  "aws-credential-types",
  "aws-runtime",
@@ -416,9 +463,9 @@ dependencies = [
 
 [[package]]
 name = "aws-sdk-sts"
-version = "1.15.0"
+version = "1.39.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17fd9a53869fee17cea77e352084e1aa71e2c5e323d974c13a9c2bcfd9544c7f"
+checksum = "a20a91795850826a6f456f4a48eff1dfa59a0e69bdbf5b8c50518fd372106574"
 dependencies = [
  "aws-credential-types",
  "aws-runtime",
@@ -439,9 +486,9 @@ dependencies = [
 
 [[package]]
 name = "aws-sigv4"
-version = "1.1.7"
+version = "1.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ada00a4645d7d89f296fe0ddbc3fe3554f03035937c849a05d37ddffc1f29a1"
+checksum = "5df1b0fa6be58efe9d4ccc257df0a53b89cd8909e86591a13ca54817c87517be"
 dependencies = [
  "aws-credential-types",
  "aws-smithy-eventstream",
@@ -468,9 +515,9 @@ dependencies = [
 
 [[package]]
 name = "aws-smithy-async"
-version = "1.1.7"
+version = "1.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fcf7f09a27286d84315dfb9346208abb3b0973a692454ae6d0bc8d803fcce3b4"
+checksum = "62220bc6e97f946ddd51b5f1361f78996e704677afc518a4ff66b7a72ea1378c"
 dependencies = [
  "futures-util",
  "pin-project-lite",
@@ -479,9 +526,9 @@ dependencies = [
 
 [[package]]
 name = "aws-smithy-checksums"
-version = "0.60.6"
+version = "0.60.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fd4b66f2a8e7c84d7e97bda2666273d41d2a2e25302605bcf906b7b2661ae5e"
+checksum = "509e33efbd853e1e670c47e49af2f4df3d2ae0de8b845b068ddbf04636a6700d"
 dependencies = [
  "aws-smithy-http",
  "aws-smithy-types",
@@ -490,7 +537,7 @@ dependencies = [
  "crc32fast",
  "hex",
  "http 0.2.12",
- "http-body",
+ "http-body 0.4.6",
  "md-5",
  "pin-project-lite",
  "sha1",
@@ -511,9 +558,9 @@ dependencies = [
 
 [[package]]
 name = "aws-smithy-http"
-version = "0.60.6"
+version = "0.60.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6ca214a6a26f1b7ebd63aa8d4f5e2194095643023f9608edf99a58247b9d80d"
+checksum = "d9cd0ae3d97daa0a2bf377a4d8e8e1362cae590c4a1aad0d40058ebca18eb91e"
 dependencies = [
  "aws-smithy-eventstream",
  "aws-smithy-runtime-api",
@@ -522,7 +569,7 @@ dependencies = [
  "bytes-utils",
  "futures-core",
  "http 0.2.12",
- "http-body",
+ "http-body 0.4.6",
  "once_cell",
  "percent-encoding",
  "pin-project-lite",
@@ -532,18 +579,18 @@ dependencies = [
 
 [[package]]
 name = "aws-smithy-json"
-version = "0.60.6"
+version = "0.60.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1af80ecf3057fb25fe38d1687e94c4601a7817c6a1e87c1b0635f7ecb644ace5"
+checksum = "4683df9469ef09468dad3473d129960119a0d3593617542b7d52086c8486f2d6"
 dependencies = [
  "aws-smithy-types",
 ]
 
 [[package]]
 name = "aws-smithy-query"
-version = "0.60.6"
+version = "0.60.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb27084f72ea5fc20033efe180618677ff4a2f474b53d84695cfe310a6526cbc"
+checksum = "f2fbd61ceb3fe8a1cb7352e42689cec5335833cd9f94103a61e98f9bb61c64bb"
 dependencies = [
  "aws-smithy-types",
  "urlencoding",
@@ -551,9 +598,9 @@ dependencies = [
 
 [[package]]
 name = "aws-smithy-runtime"
-version = "1.1.7"
+version = "1.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbb5fca54a532a36ff927fbd7407a7c8eb9c3b4faf72792ba2965ea2cad8ed55"
+checksum = "0abbf454960d0db2ad12684a1640120e7557294b0ff8e2f11236290a1b293225"
 dependencies = [
  "aws-smithy-async",
  "aws-smithy-http",
@@ -561,24 +608,26 @@ dependencies = [
  "aws-smithy-types",
  "bytes",
  "fastrand",
- "h2",
+ "h2 0.3.26",
  "http 0.2.12",
- "http-body",
- "hyper",
- "hyper-rustls",
+ "http-body 0.4.6",
+ "http-body 1.0.1",
+ "httparse",
+ "hyper 0.14.30",
+ "hyper-rustls 0.24.2",
  "once_cell",
  "pin-project-lite",
  "pin-utils",
- "rustls",
+ "rustls 0.21.12",
  "tokio",
  "tracing",
 ]
 
 [[package]]
 name = "aws-smithy-runtime-api"
-version = "1.1.7"
+version = "1.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22389cb6f7cac64f266fb9f137745a9349ced7b47e0d2ba503e9e40ede4f7060"
+checksum = "e086682a53d3aa241192aa110fa8dfce98f2f5ac2ead0de84d41582c7e8fdb96"
 dependencies = [
  "aws-smithy-async",
  "aws-smithy-types",
@@ -593,16 +642,19 @@ dependencies = [
 
 [[package]]
 name = "aws-smithy-types"
-version = "1.1.7"
+version = "1.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f081da5481210523d44ffd83d9f0740320050054006c719eae0232d411f024d3"
+checksum = "6cee7cadb433c781d3299b916fbf620fea813bf38f49db282fb6858141a05cc8"
 dependencies = [
  "base64-simd",
  "bytes",
  "bytes-utils",
  "futures-core",
  "http 0.2.12",
- "http-body",
+ "http 1.1.0",
+ "http-body 0.4.6",
+ "http-body 1.0.1",
+ "http-body-util",
  "itoa",
  "num-integer",
  "pin-project-lite",
@@ -616,39 +668,38 @@ dependencies = [
 
 [[package]]
 name = "aws-smithy-xml"
-version = "0.60.6"
+version = "0.60.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fccd8f595d0ca839f9f2548e66b99514a85f92feb4c01cf2868d93eb4888a42"
+checksum = "d123fbc2a4adc3c301652ba8e149bf4bc1d1725affb9784eb20c953ace06bf55"
 dependencies = [
  "xmlparser",
 ]
 
 [[package]]
 name = "aws-types"
-version = "1.1.7"
+version = "1.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d07c63521aa1ea9a9f92a701f1a08ce3fd20b46c6efc0d5c8947c1fd879e3df1"
+checksum = "5221b91b3e441e6675310829fd8984801b772cb1546ef6c0e54dec9f1ac13fef"
 dependencies = [
  "aws-credential-types",
  "aws-smithy-async",
  "aws-smithy-runtime-api",
  "aws-smithy-types",
- "http 0.2.12",
  "rustc_version",
  "tracing",
 ]
 
 [[package]]
 name = "backtrace"
-version = "0.3.69"
+version = "0.3.73"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
+checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a"
 dependencies = [
  "addr2line",
  "cc",
  "cfg-if",
  "libc",
- "miniz_oxide",
+ "miniz_oxide 0.7.4",
  "object",
  "rustc-demangle",
 ]
@@ -666,6 +717,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
 
 [[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+
+[[package]]
 name = "base64-simd"
 version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -682,6 +739,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
 
 [[package]]
+name = "bigdecimal"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51d712318a27c7150326677b321a5fa91b55f6d9034ffd67f20319e147d40cee"
+dependencies = [
+ "autocfg",
+ "libm",
+ "num-bigint",
+ "num-integer",
+ "num-traits",
+ "serde",
+]
+
+[[package]]
 name = "bincode"
 version = "1.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -692,17 +763,24 @@ dependencies = [
 
 [[package]]
 name = "bitflags"
-version = "1.3.2"
+version = "2.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
+dependencies = [
+ "serde",
+]
 
 [[package]]
-name = "bitflags"
-version = "2.4.2"
+name = "blake3"
+version = "1.5.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
+checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7"
 dependencies = [
- "serde",
+ "arrayref",
+ "arrayvec",
+ "cc",
+ "cfg-if",
+ "constant_time_eq",
 ]
 
 [[package]]
@@ -715,10 +793,19 @@ dependencies = [
 ]
 
 [[package]]
+name = "block2"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f"
+dependencies = [
+ "objc2",
+]
+
+[[package]]
 name = "brotli"
-version = "3.4.0"
+version = "6.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f"
+checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b"
 dependencies = [
  "alloc-no-stdlib",
  "alloc-stdlib",
@@ -727,9 +814,9 @@ dependencies = [
 
 [[package]]
 name = "brotli-decompressor"
-version = "2.5.1"
+version = "4.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f"
+checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362"
 dependencies = [
  "alloc-no-stdlib",
  "alloc-stdlib",
@@ -737,9 +824,9 @@ dependencies = [
 
 [[package]]
 name = "built"
-version = "0.7.1"
+version = "0.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38d17f4d6e4dc36d1a02fbedc2753a096848e7c1b0772f7654eab8e2c927dd53"
+checksum = "236e6289eda5a812bc6b53c3b024039382a2895fbbeef2d748b2931546d392c4"
 dependencies = [
  "cargo-lock",
  "chrono",
@@ -748,35 +835,41 @@ dependencies = [
 
 [[package]]
 name = "bumpalo"
-version = "3.15.4"
+version = "3.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa"
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
 
 [[package]]
 name = "bytemuck"
-version = "1.14.3"
+version = "1.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2ef034f05691a48569bd920a96c81b9d91bbad1ab5ac7c4616c1f6ef36cb79f"
+checksum = "6fd4c6dcc3b0aea2f5c0b4b82c2b15fe39ddbc76041a310848f4706edf76bb31"
 dependencies = [
  "bytemuck_derive",
 ]
 
 [[package]]
 name = "bytemuck_derive"
-version = "1.5.0"
+version = "1.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1"
+checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.76",
 ]
 
 [[package]]
-name = "bytes"
+name = "byteorder"
 version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "bytes"
+version = "1.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50"
 
 [[package]]
 name = "bytes-utils"
@@ -816,13 +909,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
 
 [[package]]
+name = "castaway"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5"
+dependencies = [
+ "rustversion",
+]
+
+[[package]]
 name = "cc"
-version = "1.0.90"
+version = "1.1.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
+checksum = "50d2eb3cd3d1bf4529e31c215ee6f93ec5a3d536d9f578f93d9d33ee19562932"
 dependencies = [
  "jobserver",
  "libc",
+ "shlex",
 ]
 
 [[package]]
@@ -833,15 +936,15 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[package]]
 name = "chrono"
-version = "0.4.35"
+version = "0.4.38"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a"
+checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
 dependencies = [
  "android-tzdata",
  "iana-time-zone",
  "num-traits",
  "serde",
- "windows-targets 0.52.4",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -895,18 +998,18 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.5.2"
+version = "4.5.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b230ab84b0ffdf890d5a10abdbc8b83ae1c4918275daea1ab8801f71536b2651"
+checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019"
 dependencies = [
  "clap_builder",
 ]
 
 [[package]]
 name = "clap_builder"
-version = "4.5.2"
+version = "4.5.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4"
+checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6"
 dependencies = [
  "anstyle",
  "clap_lex",
@@ -914,24 +1017,33 @@ dependencies = [
 
 [[package]]
 name = "clap_lex"
-version = "0.7.0"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97"
+
+[[package]]
+name = "clipboard-win"
+version = "5.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
+checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892"
+dependencies = [
+ "error-code",
+]
 
 [[package]]
 name = "cmake"
-version = "0.1.50"
+version = "0.1.51"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130"
+checksum = "fb1e43aa7fd152b1f968787f7dbcdeb306d1867ff373c69955211876c053f91a"
 dependencies = [
  "cc",
 ]
 
 [[package]]
 name = "comfy-table"
-version = "7.1.0"
+version = "7.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c64043d6c7b7a4c58e39e7efccfdea7b93d885a795d0c054a69dbbf4dd52686"
+checksum = "b34115915337defe99b2aff5c2ce6771e5fbc4079f4b506301f5cf394c8452f7"
 dependencies = [
  "crossterm",
  "strum",
@@ -940,6 +1052,21 @@ dependencies = [
 ]
 
 [[package]]
+name = "compact_str"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6050c3a16ddab2e412160b31f2c871015704239bca62f72f6e5f0be631d3f644"
+dependencies = [
+ "castaway",
+ "cfg-if",
+ "itoa",
+ "rustversion",
+ "ryu",
+ "serde",
+ "static_assertions",
+]
+
+[[package]]
 name = "const-oid"
 version = "0.9.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -966,6 +1093,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "constant_time_eq"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2"
+
+[[package]]
 name = "core-foundation"
 version = "0.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -977,9 +1110,9 @@ dependencies = [
 
 [[package]]
 name = "core-foundation-sys"
-version = "0.8.6"
+version = "0.8.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
 
 [[package]]
 name = "core2"
@@ -992,9 +1125,9 @@ dependencies = [
 
 [[package]]
 name = "cpufeatures"
-version = "0.2.12"
+version = "0.2.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
+checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad"
 dependencies = [
  "libc",
 ]
@@ -1016,18 +1149,18 @@ checksum = "ccaeedb56da03b09f598226e25e80088cb4cd25f316e6e4df7d695f0feeb1403"
 
 [[package]]
 name = "crc32c"
-version = "0.6.5"
+version = "0.6.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89254598aa9b9fa608de44b3ae54c810f0f06d755e24c50177f1f8f31ff50ce2"
+checksum = "3a47af21622d091a8f0fb295b88bc886ac74efcc613efc19f5d0b21de5c89e47"
 dependencies = [
  "rustc_version",
 ]
 
 [[package]]
 name = "crc32fast"
-version = "1.4.0"
+version = "1.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa"
+checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
 dependencies = [
  "cfg-if",
 ]
@@ -1070,9 +1203,9 @@ dependencies = [
 
 [[package]]
 name = "crossbeam-channel"
-version = "0.5.12"
+version = "0.5.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95"
+checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
 dependencies = [
  "crossbeam-utils",
 ]
@@ -1107,9 +1240,9 @@ dependencies = [
 
 [[package]]
 name = "crossbeam-utils"
-version = "0.8.19"
+version = "0.8.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
 
 [[package]]
 name = "crossterm"
@@ -1117,7 +1250,7 @@ version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags",
  "crossterm_winapi",
  "libc",
  "parking_lot",
@@ -1233,9 +1366,12 @@ dependencies = [
 
 [[package]]
 name = "either"
-version = "1.10.0"
+version = "1.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
+checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
+dependencies = [
+ "serde",
+]
 
 [[package]]
 name = "elliptic-curve"
@@ -1258,24 +1394,15 @@ dependencies = [
 ]
 
 [[package]]
-name = "encoding_rs"
-version = "0.8.33"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"
-dependencies = [
- "cfg-if",
-]
-
-[[package]]
 name = "enum_dispatch"
-version = "0.3.12"
+version = "0.3.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f33313078bb8d4d05a2733a94ac4c2d8a0df9a2b84424ebf4f33bfc224a890e"
+checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd"
 dependencies = [
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -1296,15 +1423,21 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
 
 [[package]]
 name = "errno"
-version = "0.3.8"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
+checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
 dependencies = [
  "libc",
  "windows-sys 0.52.0",
 ]
 
 [[package]]
+name = "error-code"
+version = "3.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0474425d51df81997e2f90a21591180b38eccf27292d755f3e30750225c175b"
+
+[[package]]
 name = "ethnum"
 version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1324,9 +1457,9 @@ checksum = "95765f67b4b18863968b4a1bd5bb576f732b29a4a28c7cd84c09fa3e2875f33c"
 
 [[package]]
 name = "fastrand"
-version = "2.0.1"
+version = "2.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
+checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
 
 [[package]]
 name = "ff"
@@ -1340,13 +1473,13 @@ dependencies = [
 
 [[package]]
 name = "flate2"
-version = "1.0.28"
+version = "1.0.33"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
+checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253"
 dependencies = [
  "crc32fast",
  "libz-ng-sys",
- "miniz_oxide",
+ "miniz_oxide 0.8.0",
 ]
 
 [[package]]
@@ -1380,6 +1513,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "fs4"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8c6b3bd49c37d2aa3f3f2220233b29a7cd23f79d1fe70e5337d25fb390793de"
+dependencies = [
+ "rustix",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
 name = "futures"
 version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1435,7 +1578,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -1479,10 +1622,20 @@ dependencies = [
 ]
 
 [[package]]
+name = "gethostname"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818"
+dependencies = [
+ "libc",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
 name = "getrandom"
-version = "0.2.12"
+version = "0.2.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
 dependencies = [
  "cfg-if",
  "js-sys",
@@ -1493,17 +1646,17 @@ dependencies = [
 
 [[package]]
 name = "gimli"
-version = "0.28.1"
+version = "0.29.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
+checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd"
 
 [[package]]
 name = "git2"
-version = "0.18.2"
+version = "0.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b3ba52851e73b46a4c3df1d89343741112003f0f6f13beb0dfac9e457c3fdcd"
+checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags",
  "libc",
  "libgit2-sys",
  "log",
@@ -1529,9 +1682,9 @@ dependencies = [
 
 [[package]]
 name = "h2"
-version = "0.3.24"
+version = "0.3.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9"
+checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
 dependencies = [
  "bytes",
  "fnv",
@@ -1547,10 +1700,29 @@ dependencies = [
 ]
 
 [[package]]
+name = "h2"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205"
+dependencies = [
+ "atomic-waker",
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "http 1.1.0",
+ "indexmap",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
 name = "half"
-version = "2.4.0"
+version = "2.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5eceaaeec696539ddaf7b333340f1af35a5aa87ae3e4f3ead0532f72affab2e"
+checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
 dependencies = [
  "cfg-if",
  "crunchy",
@@ -1563,7 +1735,7 @@ version = "0.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8588661a8607108a5ca69cab034063441a0413a0b041c13618a7dd348021ef6f"
 dependencies = [
- "hashbrown 0.14.3",
+ "hashbrown",
  "serde",
 ]
 
@@ -1575,22 +1747,14 @@ checksum = "74721d007512d0cb3338cd20f0654ac913920061a4c4d0d8708edb3f2a698c0c"
 
 [[package]]
 name = "hashbrown"
-version = "0.13.2"
+version = "0.14.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
-dependencies = [
- "ahash",
-]
-
-[[package]]
-name = "hashbrown"
-version = "0.14.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
 dependencies = [
  "ahash",
  "allocator-api2",
  "rayon",
+ "serde",
 ]
 
 [[package]]
@@ -1600,12 +1764,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
 
 [[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
 name = "hermit-abi"
 version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
 
 [[package]]
+name = "hermit-abi"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
+
+[[package]]
 name = "hex"
 version = "0.4.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1663,10 +1839,33 @@ dependencies = [
 ]
 
 [[package]]
+name = "http-body"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
+dependencies = [
+ "bytes",
+ "http 1.1.0",
+]
+
+[[package]]
+name = "http-body-util"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
+dependencies = [
+ "bytes",
+ "futures-util",
+ "http 1.1.0",
+ "http-body 1.0.1",
+ "pin-project-lite",
+]
+
+[[package]]
 name = "httparse"
-version = "1.8.0"
+version = "1.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9"
 
 [[package]]
 name = "httpdate"
@@ -1682,17 +1881,17 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
 
 [[package]]
 name = "hyper"
-version = "0.14.28"
+version = "0.14.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80"
+checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9"
 dependencies = [
  "bytes",
  "futures-channel",
  "futures-core",
  "futures-util",
- "h2",
+ "h2 0.3.26",
  "http 0.2.12",
- "http-body",
+ "http-body 0.4.6",
  "httparse",
  "httpdate",
  "itoa",
@@ -1705,6 +1904,26 @@ dependencies = [
 ]
 
 [[package]]
+name = "hyper"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-util",
+ "h2 0.4.6",
+ "http 1.1.0",
+ "http-body 1.0.1",
+ "httparse",
+ "itoa",
+ "pin-project-lite",
+ "smallvec",
+ "tokio",
+ "want",
+]
+
+[[package]]
 name = "hyper-rustls"
 version = "0.24.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1712,12 +1931,50 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
 dependencies = [
  "futures-util",
  "http 0.2.12",
- "hyper",
+ "hyper 0.14.30",
  "log",
- "rustls",
- "rustls-native-certs",
+ "rustls 0.21.12",
+ "rustls-native-certs 0.6.3",
  "tokio",
- "tokio-rustls",
+ "tokio-rustls 0.24.1",
+]
+
+[[package]]
+name = "hyper-rustls"
+version = "0.27.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155"
+dependencies = [
+ "futures-util",
+ "http 1.1.0",
+ "hyper 1.4.1",
+ "hyper-util",
+ "rustls 0.23.12",
+ "rustls-native-certs 0.7.2",
+ "rustls-pki-types",
+ "tokio",
+ "tokio-rustls 0.26.0",
+ "tower-service",
+]
+
+[[package]]
+name = "hyper-util"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-util",
+ "http 1.1.0",
+ "http-body 1.0.1",
+ "hyper 1.4.1",
+ "pin-project-lite",
+ "socket2",
+ "tokio",
+ "tower",
+ "tower-service",
+ "tracing",
 ]
 
 [[package]]
@@ -1731,7 +1988,7 @@ dependencies = [
  "iana-time-zone-haiku",
  "js-sys",
  "wasm-bindgen",
- "windows-core",
+ "windows-core 0.52.0",
 ]
 
 [[package]]
@@ -1755,20 +2012,20 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.2.5"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4"
+checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5"
 dependencies = [
  "equivalent",
- "hashbrown 0.14.3",
+ "hashbrown",
  "serde",
 ]
 
 [[package]]
 name = "indoc"
-version = "2.0.4"
+version = "2.0.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8"
+checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
 
 [[package]]
 name = "inventory"
@@ -1784,11 +2041,11 @@ checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
 
 [[package]]
 name = "is-terminal"
-version = "0.4.12"
+version = "0.4.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b"
+checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b"
 dependencies = [
- "hermit-abi",
+ "hermit-abi 0.4.0",
  "libc",
  "windows-sys 0.52.0",
 ]
@@ -1804,18 +2061,18 @@ dependencies = [
 
 [[package]]
 name = "itertools"
-version = "0.12.1"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
 dependencies = [
  "either",
 ]
 
 [[package]]
 name = "itoa"
-version = "1.0.10"
+version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
 
 [[package]]
 name = "itoap"
@@ -1845,18 +2102,18 @@ dependencies = [
 
 [[package]]
 name = "jobserver"
-version = "0.1.28"
+version = "0.1.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6"
+checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
 dependencies = [
  "libc",
 ]
 
 [[package]]
 name = "js-sys"
-version = "0.3.69"
+version = "0.3.70"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
+checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a"
 dependencies = [
  "wasm-bindgen",
 ]
@@ -1874,9 +2131,9 @@ dependencies = [
 
 [[package]]
 name = "lazy_static"
-version = "1.4.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
 
 [[package]]
 name = "lexical-core"
@@ -1944,9 +2201,9 @@ dependencies = [
 
 [[package]]
 name = "libc"
-version = "0.2.153"
+version = "0.2.158"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
 
 [[package]]
 name = "libflate"
@@ -1961,15 +2218,15 @@ dependencies = [
 
 [[package]]
 name = "libflate"
-version = "2.0.0"
+version = "2.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f7d5654ae1795afc7ff76f4365c2c8791b0feb18e8996a96adad8ffd7c3b2bf"
+checksum = "45d9dfdc14ea4ef0900c1cddbc8dcd553fbaacd8a4a282cf4018ae9dd04fb21e"
 dependencies = [
  "adler32",
  "core2",
  "crc32fast",
  "dary_heap",
- "libflate_lz77 2.0.0",
+ "libflate_lz77 2.1.0",
 ]
 
 [[package]]
@@ -1983,20 +2240,20 @@ dependencies = [
 
 [[package]]
 name = "libflate_lz77"
-version = "2.0.0"
+version = "2.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be5f52fb8c451576ec6b79d3f4deb327398bc05bbdbd99021a6e77a4c855d524"
+checksum = "e6e0d73b369f386f1c44abd9c570d5318f55ccde816ff4b562fa452e5182863d"
 dependencies = [
  "core2",
- "hashbrown 0.13.2",
+ "hashbrown",
  "rle-decode-fast",
 ]
 
 [[package]]
 name = "libgit2-sys"
-version = "0.16.2+1.7.2"
+version = "0.17.0+1.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee4126d8b4ee5c9d9ea891dd875cfdc1e9d0950437179104b183d7d8a74d24e8"
+checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224"
 dependencies = [
  "cc",
  "libc",
@@ -2006,12 +2263,12 @@ dependencies = [
 
 [[package]]
 name = "libloading"
-version = "0.8.3"
+version = "0.8.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19"
+checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
 dependencies = [
  "cfg-if",
- "windows-targets 0.52.4",
+ "windows-targets 0.48.5",
 ]
 
 [[package]]
@@ -2022,9 +2279,9 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
 
 [[package]]
 name = "libmimalloc-sys"
-version = "0.1.35"
+version = "0.1.39"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3979b5c37ece694f1f5e51e7ecc871fdb0f517ed04ee45f88d15d6d553cb9664"
+checksum = "23aa6811d3bd4deb8a84dde645f943476d13b248d818edcf8ce0b2f37f036b44"
 dependencies = [
  "cc",
  "libc",
@@ -2032,9 +2289,9 @@ dependencies = [
 
 [[package]]
 name = "libz-ng-sys"
-version = "1.1.15"
+version = "1.1.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6409efc61b12687963e602df8ecf70e8ddacf95bc6576bcf16e3ac6328083c5"
+checksum = "4436751a01da56f1277f323c80d584ffad94a3d14aecd959dd0dff75aa73a438"
 dependencies = [
  "cmake",
  "libc",
@@ -2042,9 +2299,9 @@ dependencies = [
 
 [[package]]
 name = "libz-sys"
-version = "1.1.15"
+version = "1.1.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "037731f5d3aaa87a5675e895b63ddff1a87624bc29f77004ea829809654e48f6"
+checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472"
 dependencies = [
  "cc",
  "libc",
@@ -2054,15 +2311,15 @@ dependencies = [
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.4.13"
+version = "0.4.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
+checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
 
 [[package]]
 name = "lock_api"
-version = "0.4.11"
+version = "0.4.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
 dependencies = [
  "autocfg",
  "scopeguard",
@@ -2070,15 +2327,24 @@ dependencies = [
 
 [[package]]
 name = "log"
-version = "0.4.21"
+version = "0.4.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
+checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
+
+[[package]]
+name = "lru"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904"
+dependencies = [
+ "hashbrown",
+]
 
 [[package]]
 name = "lz4"
-version = "1.24.0"
+version = "1.26.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1"
+checksum = "958b4caa893816eea05507c20cfe47574a43d9a697138a7872990bba8a0ece68"
 dependencies = [
  "libc",
  "lz4-sys",
@@ -2086,19 +2352,28 @@ dependencies = [
 
 [[package]]
 name = "lz4-sys"
-version = "1.9.4"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900"
+checksum = "109de74d5d2353660401699a4174a4ff23fcc649caf553df71933c7fb45ad868"
 dependencies = [
  "cc",
  "libc",
 ]
 
 [[package]]
+name = "lz4_flex"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5"
+dependencies = [
+ "twox-hash",
+]
+
+[[package]]
 name = "matrixmultiply"
-version = "0.3.8"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2"
+checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a"
 dependencies = [
  "autocfg",
  "rawpointer",
@@ -2116,9 +2391,9 @@ dependencies = [
 
 [[package]]
 name = "memchr"
-version = "2.7.1"
+version = "2.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
 
 [[package]]
 name = "memmap2"
@@ -2131,18 +2406,18 @@ dependencies = [
 
 [[package]]
 name = "memoffset"
-version = "0.9.0"
+version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
 dependencies = [
  "autocfg",
 ]
 
 [[package]]
 name = "mimalloc"
-version = "0.1.39"
+version = "0.1.43"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa01922b5ea280a911e323e4d2fd24b7fe5cc4042e0d2cda3c40775cdc4bdc9c"
+checksum = "68914350ae34959d83f732418d51e2427a794055d0b9529f48259ac07af65633"
 dependencies = [
  "libmimalloc-sys",
 ]
@@ -2155,29 +2430,39 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
 
 [[package]]
 name = "miniz_oxide"
-version = "0.7.2"
+version = "0.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
+checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08"
 dependencies = [
  "adler",
 ]
 
 [[package]]
+name = "miniz_oxide"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
+dependencies = [
+ "adler2",
+]
+
+[[package]]
 name = "mio"
-version = "0.8.11"
+version = "1.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
+checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec"
 dependencies = [
+ "hermit-abi 0.3.9",
  "libc",
  "wasi",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "multiversion"
-version = "0.7.3"
+version = "0.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2c7b9d7fe61760ce5ea19532ead98541f6b4c495d87247aff9826445cf6872a"
+checksum = "c4851161a11d3ad0bf9402d90ffc3967bf231768bfd7aeb61755ad06dbf1a142"
 dependencies = [
  "multiversion-macros",
  "target-features",
@@ -2185,9 +2470,9 @@ dependencies = [
 
 [[package]]
 name = "multiversion-macros"
-version = "0.7.3"
+version = "0.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26a83d8500ed06d68877e9de1dde76c1dbb83885dcdbda4ef44ccbc3fbda2ac8"
+checksum = "79a74ddee9e0c27d2578323c13905793e91622148f138ba29738f9dddb835e90"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2228,9 +2513,9 @@ dependencies = [
 
 [[package]]
 name = "num"
-version = "0.4.1"
+version = "0.4.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af"
+checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23"
 dependencies = [
  "num-bigint",
  "num-complex",
@@ -2242,20 +2527,20 @@ dependencies = [
 
 [[package]]
 name = "num-bigint"
-version = "0.4.4"
+version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0"
+checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
 dependencies = [
- "autocfg",
  "num-integer",
  "num-traits",
+ "serde",
 ]
 
 [[package]]
 name = "num-complex"
-version = "0.4.5"
+version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6"
+checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
 dependencies = [
  "num-traits",
 ]
@@ -2277,9 +2562,9 @@ dependencies = [
 
 [[package]]
 name = "num-iter"
-version = "0.1.44"
+version = "0.1.45"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9"
+checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
 dependencies = [
  "autocfg",
  "num-integer",
@@ -2288,11 +2573,10 @@ dependencies = [
 
 [[package]]
 name = "num-rational"
-version = "0.4.1"
+version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
+checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
 dependencies = [
- "autocfg",
  "num-bigint",
  "num-integer",
  "num-traits",
@@ -2300,62 +2584,150 @@ dependencies = [
 
 [[package]]
 name = "num-traits"
-version = "0.2.18"
+version = "0.2.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
 dependencies = [
  "autocfg",
  "libm",
 ]
 
 [[package]]
-name = "num_cpus"
-version = "1.16.0"
+name = "numpy"
+version = "0.21.0"
+source = "git+https://github.com/stinodego/rust-numpy.git?rev=9ba9962ae57ba26e35babdce6f179edf5fe5b9c8#9ba9962ae57ba26e35babdce6f179edf5fe5b9c8"
+dependencies = [
+ "libc",
+ "ndarray",
+ "num-complex",
+ "num-integer",
+ "num-traits",
+ "pyo3",
+ "rustc-hash 1.1.0",
+]
+
+[[package]]
+name = "objc-sys"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310"
+
+[[package]]
+name = "objc2"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804"
+dependencies = [
+ "objc-sys",
+ "objc2-encode",
+]
+
+[[package]]
+name = "objc2-app-kit"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff"
 dependencies = [
- "hermit-abi",
+ "bitflags",
+ "block2",
  "libc",
+ "objc2",
+ "objc2-core-data",
+ "objc2-core-image",
+ "objc2-foundation",
+ "objc2-quartz-core",
 ]
 
 [[package]]
-name = "numpy"
-version = "0.20.0"
+name = "objc2-core-data"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef"
+dependencies = [
+ "bitflags",
+ "block2",
+ "objc2",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "objc2-core-image"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80"
+dependencies = [
+ "block2",
+ "objc2",
+ "objc2-foundation",
+ "objc2-metal",
+]
+
+[[package]]
+name = "objc2-encode"
+version = "4.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8"
+
+[[package]]
+name = "objc2-foundation"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bef41cbb417ea83b30525259e30ccef6af39b31c240bda578889494c5392d331"
+checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8"
 dependencies = [
+ "bitflags",
+ "block2",
  "libc",
- "ndarray",
- "num-complex",
- "num-integer",
- "num-traits",
- "pyo3",
- "rustc-hash",
+ "objc2",
+]
+
+[[package]]
+name = "objc2-metal"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6"
+dependencies = [
+ "bitflags",
+ "block2",
+ "objc2",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "objc2-quartz-core"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a"
+dependencies = [
+ "bitflags",
+ "block2",
+ "objc2",
+ "objc2-foundation",
+ "objc2-metal",
 ]
 
 [[package]]
 name = "object"
-version = "0.32.2"
+version = "0.36.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
+checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9"
 dependencies = [
  "memchr",
 ]
 
 [[package]]
 name = "object_store"
-version = "0.9.1"
+version = "0.10.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8718f8b65fdf67a45108d1548347d4af7d71fb81ce727bbf9e3b2535e079db3"
+checksum = "e6da452820c715ce78221e8202ccc599b4a52f3e1eb3eedb487b680c81a8e3f3"
 dependencies = [
  "async-trait",
- "base64",
+ "base64 0.22.1",
  "bytes",
  "chrono",
  "futures",
  "humantime",
- "hyper",
- "itertools 0.12.1",
+ "hyper 1.4.1",
+ "itertools 0.13.0",
  "md-5",
  "parking_lot",
  "percent-encoding",
@@ -2363,7 +2735,7 @@ dependencies = [
  "rand",
  "reqwest",
  "ring",
- "rustls-pemfile 2.1.1",
+ "rustls-pemfile 2.1.3",
  "serde",
  "serde_json",
  "snafu",
@@ -2381,9 +2753,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
 
 [[package]]
 name = "oorandom"
-version = "11.1.3"
+version = "11.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
+checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9"
 
 [[package]]
 name = "openssl-probe"
@@ -2410,9 +2782,9 @@ dependencies = [
 
 [[package]]
 name = "parking_lot"
-version = "0.12.1"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
 dependencies = [
  "lock_api",
  "parking_lot_core",
@@ -2420,15 +2792,15 @@ dependencies = [
 
 [[package]]
 name = "parking_lot_core"
-version = "0.9.9"
+version = "0.9.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
 dependencies = [
  "cfg-if",
  "libc",
  "redox_syscall",
  "smallvec",
- "windows-targets 0.48.5",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -2443,9 +2815,9 @@ dependencies = [
 
 [[package]]
 name = "parse-zoneinfo"
-version = "0.3.0"
+version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c705f256449c60da65e11ff6626e0c16a0a0b96aaa348de61376b249bc340f41"
+checksum = "1f2a05b18d44e2957b88f96ba460715e295bc1d7510468a2f3d3b44535d26c24"
 dependencies = [
  "regex",
 ]
@@ -2495,10 +2867,30 @@ dependencies = [
 ]
 
 [[package]]
+name = "pin-project"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.76",
+]
+
+[[package]]
 name = "pin-project-lite"
-version = "0.2.13"
+version = "0.2.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
 
 [[package]]
 name = "pin-utils"
@@ -2533,9 +2925,9 @@ dependencies = [
 
 [[package]]
 name = "plotters"
-version = "0.3.5"
+version = "0.3.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45"
+checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3"
 dependencies = [
  "num-traits",
  "plotters-backend",
@@ -2546,25 +2938,26 @@ dependencies = [
 
 [[package]]
 name = "plotters-backend"
-version = "0.3.5"
+version = "0.3.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609"
+checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7"
 
 [[package]]
 name = "plotters-svg"
-version = "0.3.5"
+version = "0.3.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab"
+checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705"
 dependencies = [
  "plotters-backend",
 ]
 
 [[package]]
 name = "polars"
-version = "0.38.1"
+version = "0.43.1"
 dependencies = [
  "ahash",
  "apache-avro",
+ "arrow-buffer",
  "avro-schema",
  "either",
  "ethnum",
@@ -2590,7 +2983,7 @@ dependencies = [
 
 [[package]]
 name = "polars-arrow"
-version = "0.38.1"
+version = "0.43.1"
 dependencies = [
  "ahash",
  "arrow-array",
@@ -2612,10 +3005,9 @@ dependencies = [
  "ethnum",
  "fast-float",
  "flate2",
- "foreign_vec",
  "futures",
  "getrandom",
- "hashbrown 0.14.3",
+ "hashbrown",
  "hex",
  "indexmap",
  "itoa",
@@ -2623,16 +3015,18 @@ dependencies = [
  "lz4",
  "multiversion",
  "num-traits",
+ "parking_lot",
  "polars-arrow-format",
  "polars-error",
+ "polars-schema",
  "polars-utils",
  "proptest",
  "rand",
  "regex",
- "regex-syntax 0.8.2",
+ "regex-syntax 0.8.4",
  "ryu",
  "sample-arrow2",
- "sample-std 0.1.1",
+ "sample-std",
  "sample-test",
  "serde",
  "simdutf8",
@@ -2658,7 +3052,7 @@ dependencies = [
 
 [[package]]
 name = "polars-compute"
-version = "0.38.1"
+version = "0.43.1"
 dependencies = [
  "bytemuck",
  "either",
@@ -2673,18 +3067,18 @@ dependencies = [
 
 [[package]]
 name = "polars-core"
-version = "0.38.1"
+version = "0.43.1"
 dependencies = [
  "ahash",
  "arrow-array",
  "bincode",
- "bitflags 2.4.2",
+ "bitflags",
  "bytemuck",
  "chrono",
  "chrono-tz",
  "comfy-table",
  "either",
- "hashbrown 0.14.3",
+ "hashbrown",
  "indexmap",
  "ndarray",
  "num-traits",
@@ -2693,6 +3087,7 @@ dependencies = [
  "polars-compute",
  "polars-error",
  "polars-row",
+ "polars-schema",
  "polars-utils",
  "rand",
  "rand_distr",
@@ -2700,7 +3095,6 @@ dependencies = [
  "regex",
  "serde",
  "serde_json",
- "smartstring",
  "thiserror",
  "version_check",
  "xxhash-rust",
@@ -2708,10 +3102,11 @@ dependencies = [
 
 [[package]]
 name = "polars-doc-examples"
-version = "0.38.1"
+version = "0.43.1"
 dependencies = [
  "aws-config",
  "aws-sdk-s3",
+ "aws-smithy-checksums",
  "chrono",
  "polars",
  "rand",
@@ -2721,7 +3116,7 @@ dependencies = [
 
 [[package]]
 name = "polars-error"
-version = "0.38.1"
+version = "0.43.1"
 dependencies = [
  "avro-schema",
  "object_store",
@@ -2732,8 +3127,27 @@ dependencies = [
 ]
 
 [[package]]
+name = "polars-expr"
+version = "0.43.1"
+dependencies = [
+ "ahash",
+ "bitflags",
+ "once_cell",
+ "polars-arrow",
+ "polars-compute",
+ "polars-core",
+ "polars-io",
+ "polars-json",
+ "polars-ops",
+ "polars-plan",
+ "polars-time",
+ "polars-utils",
+ "rayon",
+]
+
+[[package]]
 name = "polars-ffi"
-version = "0.38.1"
+version = "0.43.1"
 dependencies = [
  "polars-arrow",
  "polars-core",
@@ -2741,17 +3155,21 @@ dependencies = [
 
 [[package]]
 name = "polars-io"
-version = "0.38.1"
+version = "0.43.1"
 dependencies = [
  "ahash",
  "async-trait",
  "atoi_simd",
+ "blake3",
  "bytes",
  "chrono",
  "chrono-tz",
  "fast-float",
  "flate2",
+ "fs4",
  "futures",
+ "glob",
+ "hashbrown",
  "home",
  "itoa",
  "memchr",
@@ -2765,6 +3183,7 @@ dependencies = [
  "polars-error",
  "polars-json",
  "polars-parquet",
+ "polars-schema",
  "polars-time",
  "polars-utils",
  "rayon",
@@ -2775,7 +3194,6 @@ dependencies = [
  "serde_json",
  "simd-json",
  "simdutf8",
- "smartstring",
  "tempfile",
  "tokio",
  "tokio-util",
@@ -2785,12 +3203,13 @@ dependencies = [
 
 [[package]]
 name = "polars-json"
-version = "0.38.1"
+version = "0.43.1"
 dependencies = [
  "ahash",
  "chrono",
+ "chrono-tz",
  "fallible-streaming-iterator",
- "hashbrown 0.14.3",
+ "hashbrown",
  "indexmap",
  "itoa",
  "num-traits",
@@ -2804,43 +3223,66 @@ dependencies = [
 
 [[package]]
 name = "polars-lazy"
-version = "0.38.1"
+version = "0.43.1"
 dependencies = [
  "ahash",
- "bitflags 2.4.2",
+ "bitflags",
  "futures",
- "glob",
+ "memchr",
  "once_cell",
  "polars-arrow",
  "polars-core",
+ "polars-expr",
  "polars-io",
  "polars-json",
+ "polars-mem-engine",
  "polars-ops",
  "polars-pipe",
  "polars-plan",
+ "polars-stream",
  "polars-time",
  "polars-utils",
  "pyo3",
  "rayon",
  "serde_json",
- "smartstring",
  "tokio",
  "version_check",
 ]
 
 [[package]]
+name = "polars-mem-engine"
+version = "0.43.1"
+dependencies = [
+ "futures",
+ "memmap2",
+ "polars-arrow",
+ "polars-core",
+ "polars-error",
+ "polars-expr",
+ "polars-io",
+ "polars-json",
+ "polars-ops",
+ "polars-plan",
+ "polars-time",
+ "polars-utils",
+ "pyo3",
+ "rayon",
+ "tokio",
+]
+
+[[package]]
 name = "polars-ops"
-version = "0.38.1"
+version = "0.43.1"
 dependencies = [
  "ahash",
  "aho-corasick",
  "argminmax",
- "base64",
+ "base64 0.22.1",
  "bytemuck",
  "chrono",
  "chrono-tz",
  "either",
- "hashbrown 0.14.3",
+ "hashbrown",
  "hex",
  "indexmap",
  "jsonpath_lib_polars_vendor",
@@ -2851,6 +3293,7 @@ dependencies = [
  "polars-core",
  "polars-error",
  "polars-json",
+ "polars-schema",
  "polars-utils",
  "rand",
  "rand_distr",
@@ -2858,30 +3301,33 @@ dependencies = [
  "regex",
  "serde",
  "serde_json",
- "smartstring",
  "unicode-reverse",
  "version_check",
 ]
 
 [[package]]
 name = "polars-parquet"
-version = "0.38.1"
+version = "0.43.1"
 dependencies = [
  "ahash",
  "async-stream",
- "base64",
+ "base64 0.22.1",
  "brotli",
+ "bytemuck",
  "ethnum",
  "fallible-streaming-iterator",
  "flate2",
  "futures",
+ "hashbrown",
  "lz4",
+ "lz4_flex",
  "num-traits",
  "parquet-format-safe",
  "polars-arrow",
+ "polars-compute",
  "polars-error",
  "polars-utils",
- "seq-macro",
+ "rand",
  "serde",
  "simdutf8",
  "snap",
@@ -2892,24 +3338,24 @@ dependencies = [
 
 [[package]]
 name = "polars-pipe"
-version = "0.38.1"
+version = "0.43.1"
 dependencies = [
  "crossbeam-channel",
  "crossbeam-queue",
  "enum_dispatch",
  "futures",
- "hashbrown 0.14.3",
+ "hashbrown",
  "num-traits",
  "polars-arrow",
  "polars-compute",
  "polars-core",
+ "polars-expr",
  "polars-io",
  "polars-ops",
  "polars-plan",
  "polars-row",
  "polars-utils",
  "rayon",
- "smartstring",
  "tokio",
  "uuid",
  "version_check",
@@ -2917,15 +3363,20 @@ dependencies = [
 
 [[package]]
 name = "polars-plan"
-version = "0.38.1"
+version = "0.43.1"
 dependencies = [
  "ahash",
+ "bitflags",
  "bytemuck",
+ "bytes",
  "chrono",
  "chrono-tz",
  "ciborium",
+ "either",
  "futures",
+ "hashbrown",
  "libloading",
+ "memmap2",
  "once_cell",
  "percent-encoding",
  "polars-arrow",
@@ -2939,16 +3390,51 @@ dependencies = [
  "polars-utils",
  "pyo3",
  "rayon",
+ "recursive",
  "regex",
  "serde",
- "smartstring",
+ "serde_json",
  "strum_macros",
  "version_check",
 ]
 
 [[package]]
+name = "polars-python"
+version = "0.43.1"
+dependencies = [
+ "ahash",
+ "arboard",
+ "bytemuck",
+ "bytes",
+ "ciborium",
+ "either",
+ "itoa",
+ "libc",
+ "ndarray",
+ "num-traits",
+ "numpy",
+ "once_cell",
+ "polars",
+ "polars-core",
+ "polars-error",
+ "polars-io",
+ "polars-lazy",
+ "polars-ops",
+ "polars-parquet",
+ "polars-plan",
+ "polars-stream",
+ "polars-time",
+ "polars-utils",
+ "pyo3",
+ "recursive",
+ "serde_json",
+ "thiserror",
+ "version_check",
+]
+
+[[package]]
 name = "polars-row"
-version = "0.38.1"
+version = "0.43.1"
 dependencies = [
  "bytemuck",
  "polars-arrow",
@@ -2957,15 +3443,30 @@ dependencies = [
 ]
 
 [[package]]
+name = "polars-schema"
+version = "0.43.1"
+dependencies = [
+ "indexmap",
+ "polars-error",
+ "polars-utils",
+ "serde",
+ "version_check",
+]
+
+[[package]]
 name = "polars-sql"
-version = "0.38.1"
+version = "0.43.1"
 dependencies = [
  "hex",
+ "once_cell",
  "polars-arrow",
  "polars-core",
  "polars-error",
  "polars-lazy",
+ "polars-ops",
  "polars-plan",
+ "polars-time",
+ "polars-utils",
  "rand",
  "serde",
  "serde_json",
@@ -2973,10 +3474,38 @@ dependencies = [
 ]
 
 [[package]]
+name = "polars-stream"
+version = "0.43.1"
+dependencies = [
+ "atomic-waker",
+ "crossbeam-deque",
+ "crossbeam-utils",
+ "futures",
+ "memmap2",
+ "parking_lot",
+ "pin-project-lite",
+ "polars-core",
+ "polars-error",
+ "polars-expr",
+ "polars-io",
+ "polars-mem-engine",
+ "polars-parquet",
+ "polars-plan",
+ "polars-utils",
+ "rand",
+ "rayon",
+ "recursive",
+ "slotmap",
+ "tokio",
+ "version_check",
+]
+
+[[package]]
 name = "polars-time"
-version = "0.38.1"
+version = "0.43.1"
 dependencies = [
  "atoi",
+ "bytemuck",
  "chrono",
  "chrono-tz",
  "now",
@@ -2988,33 +3517,37 @@ dependencies = [
  "polars-utils",
  "regex",
  "serde",
- "smartstring",
 ]
 
 [[package]]
 name = "polars-utils"
-version = "0.38.1"
+version = "0.43.1"
 dependencies = [
  "ahash",
  "bytemuck",
- "hashbrown 0.14.3",
+ "bytes",
+ "compact_str",
+ "hashbrown",
  "indexmap",
+ "libc",
+ "memmap2",
  "num-traits",
  "once_cell",
  "polars-error",
  "rand",
  "raw-cpuid",
  "rayon",
- "smartstring",
+ "serde",
+ "stacker",
  "sysinfo",
  "version_check",
 ]
 
 [[package]]
 name = "portable-atomic"
-version = "1.6.0"
+version = "1.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
+checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265"
 
 [[package]]
 name = "powerfmt"
@@ -3024,32 +3557,35 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
 
 [[package]]
 name = "ppv-lite86"
-version = "0.2.17"
+version = "0.2.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
+dependencies = [
+ "zerocopy",
+]
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.78"
+version = "1.0.86"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
 name = "proptest"
-version = "1.4.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf"
+checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags",
  "lazy_static",
  "num-traits",
  "rand",
  "rand_chacha",
  "rand_xorshift",
- "regex-syntax 0.8.2",
+ "regex-syntax 0.8.4",
  "unarray",
 ]
 
@@ -3077,43 +3613,35 @@ dependencies = [
 ]
 
 [[package]]
+name = "psm"
+version = "0.1.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874"
+dependencies = [
+ "cc",
+]
+
+[[package]]
 name = "py-polars"
-version = "0.20.15"
+version = "1.7.1"
 dependencies = [
- "ahash",
  "built",
- "ciborium",
- "either",
- "itoa",
  "jemallocator",
  "libc",
  "mimalloc",
- "ndarray",
- "num-traits",
- "numpy",
- "once_cell",
  "polars",
- "polars-core",
- "polars-error",
- "polars-lazy",
- "polars-ops",
- "polars-parquet",
- "polars-plan",
- "polars-utils",
+ "polars-python",
  "pyo3",
- "pyo3-built",
- "serde_json",
- "smartstring",
- "thiserror",
 ]
 
 [[package]]
 name = "pyo3"
-version = "0.20.3"
+version = "0.21.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53bdbb96d49157e65d45cc287af5f32ffadd5f4761438b527b055fb0d4bb8233"
+checksum = "a5e00b96a521718e08e03b1a622f01c8a8deb50719335de3f60b3b3950f069d8"
 dependencies = [
  "cfg-if",
+ "chrono",
  "indoc",
  "inventory",
  "libc",
@@ -3128,25 +3656,19 @@ dependencies = [
 
 [[package]]
 name = "pyo3-build-config"
-version = "0.20.3"
+version = "0.21.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "deaa5745de3f5231ce10517a1f5dd97d53e5a2fd77aa6b5842292085831d48d7"
+checksum = "7883df5835fafdad87c0d888b266c8ec0f4c9ca48a5bed6bbb592e8dedee1b50"
 dependencies = [
  "once_cell",
  "target-lexicon",
 ]
 
 [[package]]
-name = "pyo3-built"
-version = "0.4.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be6d574e0f8cab2cdd1eeeb640cbf845c974519fa9e9b62fa9c08ecece0ca5de"
-
-[[package]]
 name = "pyo3-ffi"
-version = "0.20.3"
+version = "0.21.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62b42531d03e08d4ef1f6e85a2ed422eb678b8cd62b762e53891c05faf0d4afa"
+checksum = "01be5843dc60b916ab4dad1dca6d20b9b4e6ddc8e15f50c47fe6d85f1fb97403"
 dependencies = [
  "libc",
  "pyo3-build-config",
@@ -3154,27 +3676,27 @@ dependencies = [
 
 [[package]]
 name = "pyo3-macros"
-version = "0.20.3"
+version = "0.21.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7305c720fa01b8055ec95e484a6eca7a83c841267f0dd5280f0c8b8551d2c158"
+checksum = "77b34069fc0682e11b31dbd10321cbf94808394c56fd996796ce45217dfac53c"
 dependencies = [
  "proc-macro2",
  "pyo3-macros-backend",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.76",
 ]
 
 [[package]]
 name = "pyo3-macros-backend"
-version = "0.20.3"
+version = "0.21.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c7e9b68bb9c3149c5b0cade5d07f953d6d125eb4337723c4ccdb665f1f96185"
+checksum = "08260721f32db5e1a5beae69a55553f56b99bd0e1c3e6e0a5e8851a9d0f5a85c"
 dependencies = [
- "heck",
+ "heck 0.4.1",
  "proc-macro2",
  "pyo3-build-config",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -3185,9 +3707,9 @@ checksum = "658fa1faf7a4cc5f057c9ee5ef560f717ad9d8dc66d975267f709624d6e1ab88"
 
 [[package]]
 name = "quick-xml"
-version = "0.31.0"
+version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33"
+checksum = "96a05e2e8efddfa51a84ca47cec303fac86c8541b686d37cac5efc0e094417bc"
 dependencies = [
  "memchr",
  "serde",
@@ -3205,10 +3727,58 @@ dependencies = [
 ]
 
 [[package]]
+name = "quinn"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b22d8e7369034b9a7132bc2008cac12f2013c8132b45e0554e6e20e2617f2156"
+dependencies = [
+ "bytes",
+ "pin-project-lite",
+ "quinn-proto",
+ "quinn-udp",
+ "rustc-hash 2.0.0",
+ "rustls 0.23.12",
+ "socket2",
+ "thiserror",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "quinn-proto"
+version = "0.11.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6"
+dependencies = [
+ "bytes",
+ "rand",
+ "ring",
+ "rustc-hash 2.0.0",
+ "rustls 0.23.12",
+ "slab",
+ "thiserror",
+ "tinyvec",
+ "tracing",
+]
+
+[[package]]
+name = "quinn-udp"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285"
+dependencies = [
+ "libc",
+ "once_cell",
+ "socket2",
+ "tracing",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
 name = "quote"
-version = "1.0.35"
+version = "1.0.37"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
 dependencies = [
  "proc-macro2",
 ]
@@ -3274,11 +3844,11 @@ dependencies = [
 
 [[package]]
 name = "raw-cpuid"
-version = "11.0.1"
+version = "11.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d86a7c4638d42c44551f4791a20e687dbb4c3de1f33c43dd71e355cd429def1"
+checksum = "cb9ee317cfe3fbd54b36a511efc1edd42e216903c9cd575e686dd68a2ba90d8d"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags",
 ]
 
 [[package]]
@@ -3289,9 +3859,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
 
 [[package]]
 name = "rayon"
-version = "1.9.0"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
 dependencies = [
  "either",
  "rayon-core",
@@ -3308,62 +3878,82 @@ dependencies = [
 ]
 
 [[package]]
+name = "recursive"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0786a43debb760f491b1bc0269fe5e84155353c67482b9e60d0cfb596054b43e"
+dependencies = [
+ "recursive-proc-macro-impl",
+ "stacker",
+]
+
+[[package]]
+name = "recursive-proc-macro-impl"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76009fbe0614077fc1a2ce255e3a1881a2e3a3527097d5dc6d8212c585e7e38b"
+dependencies = [
+ "quote",
+ "syn 2.0.76",
+]
+
+[[package]]
 name = "redox_syscall"
-version = "0.4.1"
+version = "0.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4"
 dependencies = [
- "bitflags 1.3.2",
+ "bitflags",
 ]
 
 [[package]]
 name = "ref-cast"
-version = "1.0.22"
+version = "1.0.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4846d4c50d1721b1a3bef8af76924eef20d5e723647333798c1b519b3a9473f"
+checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931"
 dependencies = [
  "ref-cast-impl",
 ]
 
 [[package]]
 name = "ref-cast-impl"
-version = "1.0.22"
+version = "1.0.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5fddb4f8d99b0a2ebafc65a87a69a7b9875e4b1ae1f00db265d300ef7f28bccc"
+checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.76",
 ]
 
 [[package]]
 name = "regex"
-version = "1.10.3"
+version = "1.10.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
+checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"
 dependencies = [
  "aho-corasick",
  "memchr",
  "regex-automata",
- "regex-syntax 0.8.2",
+ "regex-syntax 0.8.4",
 ]
 
 [[package]]
 name = "regex-automata"
-version = "0.4.6"
+version = "0.4.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
+checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
 dependencies = [
  "aho-corasick",
  "memchr",
- "regex-syntax 0.8.2",
+ "regex-syntax 0.8.4",
 ]
 
 [[package]]
 name = "regex-lite"
-version = "0.1.5"
+version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30b661b2f27137bdbc16f00eda72866a92bb28af1753ffbd56744fb6e2e9cd8e"
+checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a"
 
 [[package]]
 name = "regex-syntax"
@@ -3373,26 +3963,28 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
 
 [[package]]
 name = "regex-syntax"
-version = "0.8.2"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
 
 [[package]]
 name = "reqwest"
-version = "0.11.24"
+version = "0.12.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251"
+checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63"
 dependencies = [
- "base64",
+ "base64 0.22.1",
  "bytes",
- "encoding_rs",
+ "futures-channel",
  "futures-core",
  "futures-util",
- "h2",
- "http 0.2.12",
- "http-body",
- "hyper",
- "hyper-rustls",
+ "h2 0.4.6",
+ "http 1.1.0",
+ "http-body 1.0.1",
+ "http-body-util",
+ "hyper 1.4.1",
+ "hyper-rustls 0.27.2",
+ "hyper-util",
  "ipnet",
  "js-sys",
  "log",
@@ -3400,16 +3992,17 @@ dependencies = [
  "once_cell",
  "percent-encoding",
  "pin-project-lite",
- "rustls",
- "rustls-native-certs",
- "rustls-pemfile 1.0.4",
+ "quinn",
+ "rustls 0.23.12",
+ "rustls-native-certs 0.7.2",
+ "rustls-pemfile 2.1.3",
+ "rustls-pki-types",
  "serde",
  "serde_json",
  "serde_urlencoded",
  "sync_wrapper",
- "system-configuration",
  "tokio",
- "tokio-rustls",
+ "tokio-rustls 0.26.0",
  "tokio-util",
  "tower-service",
  "url",
@@ -3417,7 +4010,7 @@ dependencies = [
  "wasm-bindgen-futures",
  "wasm-streams",
  "web-sys",
- "winreg",
+ "windows-registry",
 ]
 
 [[package]]
@@ -3454,9 +4047,9 @@ checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422"
 
 [[package]]
 name = "rustc-demangle"
-version = "0.1.23"
+version = "0.1.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
+checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
 
 [[package]]
 name = "rustc-hash"
@@ -3465,6 +4058,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
 
 [[package]]
+name = "rustc-hash"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"
+
+[[package]]
 name = "rustc_version"
 version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3475,11 +4074,11 @@ dependencies = [
 
 [[package]]
 name = "rustix"
-version = "0.38.31"
+version = "0.38.34"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949"
+checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags",
  "errno",
  "libc",
  "linux-raw-sys",
@@ -3488,17 +4087,31 @@ dependencies = [
 
 [[package]]
 name = "rustls"
-version = "0.21.10"
+version = "0.21.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba"
+checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e"
 dependencies = [
  "log",
  "ring",
- "rustls-webpki",
+ "rustls-webpki 0.101.7",
  "sct",
 ]
 
 [[package]]
+name = "rustls"
+version = "0.23.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044"
+dependencies = [
+ "once_cell",
+ "ring",
+ "rustls-pki-types",
+ "rustls-webpki 0.102.6",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
 name = "rustls-native-certs"
 version = "0.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3511,29 +4124,42 @@ dependencies = [
 ]
 
 [[package]]
+name = "rustls-native-certs"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04182dffc9091a404e0fc069ea5cd60e5b866c3adf881eff99a32d048242dffa"
+dependencies = [
+ "openssl-probe",
+ "rustls-pemfile 2.1.3",
+ "rustls-pki-types",
+ "schannel",
+ "security-framework",
+]
+
+[[package]]
 name = "rustls-pemfile"
 version = "1.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
 dependencies = [
- "base64",
+ "base64 0.21.7",
 ]
 
 [[package]]
 name = "rustls-pemfile"
-version = "2.1.1"
+version = "2.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f48172685e6ff52a556baa527774f61fcaa884f59daf3375c62a3f1cd2549dab"
+checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425"
 dependencies = [
- "base64",
+ "base64 0.22.1",
  "rustls-pki-types",
 ]
 
 [[package]]
 name = "rustls-pki-types"
-version = "1.3.1"
+version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ede67b28608b4c60685c7d54122d4400d90f62b40caee7700e700380a390fa8"
+checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0"
 
 [[package]]
 name = "rustls-webpki"
@@ -3546,16 +4172,27 @@ dependencies = [
 ]
 
 [[package]]
+name = "rustls-webpki"
+version = "0.102.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e"
+dependencies = [
+ "ring",
+ "rustls-pki-types",
+ "untrusted",
+]
+
+[[package]]
 name = "rustversion"
-version = "1.0.14"
+version = "1.0.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
+checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6"
 
 [[package]]
 name = "ryu"
-version = "1.0.17"
+version = "1.0.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
 
 [[package]]
 name = "same-file"
@@ -3573,20 +4210,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "502b30097ae5cc57ee8359bb59d8af349db022492de04596119d83f561ab8977"
 dependencies = [
  "arrow2",
- "sample-std 0.2.1",
-]
-
-[[package]]
-name = "sample-std"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "567a153dc3302ce838920fb095c025a6d0529fff0290d25deeec2136e41a57c8"
-dependencies = [
- "casey",
- "quickcheck",
- "rand",
- "rand_regex",
- "regex",
+ "sample-std",
 ]
 
 [[package]]
@@ -3604,24 +4228,24 @@ dependencies = [
 
 [[package]]
 name = "sample-test"
-version = "0.1.1"
+version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "713e500947ff19fc1ae2805afa33ef45f3bb2ec656c77d92252d24cf9e3091b2"
+checksum = "e8b253ca516416756b09b582e2b7275de8f51f35e5d5711e20712b9377c7d5bf"
 dependencies = [
  "quickcheck",
- "sample-std 0.1.1",
+ "sample-std",
  "sample-test-macros",
 ]
 
 [[package]]
 name = "sample-test-macros"
-version = "0.1.1"
+version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df1a2c832a259aae95b6ed1da3aa377111ffde38d4282fa734faa3fff356534e"
+checksum = "5cc6439a7589bb4581fdadb6391700ce4d26f8bffd34e2a75acb320822e9b5ef"
 dependencies = [
  "proc-macro2",
  "quote",
- "sample-std 0.1.1",
+ "sample-std",
  "syn 1.0.109",
 ]
 
@@ -3666,11 +4290,11 @@ dependencies = [
 
 [[package]]
 name = "security-framework"
-version = "2.9.2"
+version = "2.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de"
+checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
 dependencies = [
- "bitflags 1.3.2",
+ "bitflags",
  "core-foundation",
  "core-foundation-sys",
  "libc",
@@ -3679,9 +4303,9 @@ dependencies = [
 
 [[package]]
 name = "security-framework-sys"
-version = "2.9.1"
+version = "2.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a"
+checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf"
 dependencies = [
  "core-foundation-sys",
  "libc",
@@ -3689,56 +4313,60 @@ dependencies = [
 
 [[package]]
 name = "semver"
-version = "1.0.22"
+version = "1.0.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
+checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
 dependencies = [
  "serde",
 ]
 
 [[package]]
-name = "seq-macro"
-version = "0.3.5"
+name = "serde"
+version = "1.0.209"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4"
+checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09"
+dependencies = [
+ "serde_derive",
+]
 
 [[package]]
-name = "serde"
-version = "1.0.197"
+name = "serde_bytes"
+version = "0.11.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
+checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a"
 dependencies = [
- "serde_derive",
+ "serde",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.197"
+version = "1.0.209"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
+checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.76",
 ]
 
 [[package]]
 name = "serde_json"
-version = "1.0.114"
+version = "1.0.127"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
+checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad"
 dependencies = [
  "indexmap",
  "itoa",
+ "memchr",
  "ryu",
  "serde",
 ]
 
 [[package]]
 name = "serde_spanned"
-version = "0.6.5"
+version = "0.6.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1"
+checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d"
 dependencies = [
  "serde",
 ]
@@ -3778,10 +4406,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
 name = "signal-hook-registry"
-version = "1.4.1"
+version = "1.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
 dependencies = [
  "libc",
 ]
@@ -3798,9 +4432,9 @@ dependencies = [
 
 [[package]]
 name = "simd-json"
-version = "0.13.8"
+version = "0.13.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2faf8f101b9bc484337a6a6b0409cf76c139f2fb70a9e3aee6b6774be7bfbf76"
+checksum = "570c430b3d902ea083097e853263ae782dfe40857d93db019a12356c8e8143fa"
 dependencies = [
  "ahash",
  "getrandom",
@@ -3836,24 +4470,21 @@ dependencies = [
 ]
 
 [[package]]
-name = "smallvec"
-version = "1.13.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
-
-[[package]]
-name = "smartstring"
-version = "1.0.1"
+name = "slotmap"
+version = "1.0.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29"
+checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a"
 dependencies = [
- "autocfg",
- "serde",
- "static_assertions",
  "version_check",
 ]
 
 [[package]]
+name = "smallvec"
+version = "1.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+
+[[package]]
 name = "snafu"
 version = "0.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3869,7 +4500,7 @@ version = "0.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "990079665f075b699031e9c08fd3ab99be5029b96f3b78dc0709e8f77e4efebf"
 dependencies = [
- "heck",
+ "heck 0.4.1",
  "proc-macro2",
  "quote",
  "syn 1.0.109",
@@ -3883,9 +4514,9 @@ checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b"
 
 [[package]]
 name = "socket2"
-version = "0.5.6"
+version = "0.5.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871"
+checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c"
 dependencies = [
  "libc",
  "windows-sys 0.52.0",
@@ -3909,14 +4540,27 @@ dependencies = [
 
 [[package]]
 name = "sqlparser"
-version = "0.39.0"
+version = "0.49.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "743b4dc2cbde11890ccb254a8fc9d537fa41b36da00de2a1c5e9848c9bc42bd7"
+checksum = "a4a404d0e14905361b918cb8afdb73605e25c1d5029312bd9785142dcb3aa49e"
 dependencies = [
  "log",
 ]
 
 [[package]]
+name = "stacker"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95a5daa25ea337c85ed954c0496e3bdd2c7308cc3b24cf7b50d04876654c579f"
+dependencies = [
+ "cc",
+ "cfg-if",
+ "libc",
+ "psm",
+ "windows-sys 0.36.1",
+]
+
+[[package]]
 name = "static_assertions"
 version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3945,28 +4589,28 @@ checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82"
 
 [[package]]
 name = "strum"
-version = "0.25.0"
+version = "0.26.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125"
+checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06"
 
 [[package]]
 name = "strum_macros"
-version = "0.25.3"
+version = "0.26.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0"
+checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be"
 dependencies = [
- "heck",
+ "heck 0.5.0",
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.52",
+ "syn 2.0.76",
 ]
 
 [[package]]
 name = "subtle"
-version = "2.5.0"
+version = "2.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
 
 [[package]]
 name = "syn"
@@ -3981,9 +4625,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.52"
+version = "2.0.76"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07"
+checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3992,94 +4636,76 @@ dependencies = [
 
 [[package]]
 name = "sync_wrapper"
-version = "0.1.2"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394"
+dependencies = [
+ "futures-core",
+]
 
 [[package]]
 name = "sysinfo"
-version = "0.30.7"
+version = "0.31.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c385888ef380a852a16209afc8cfad22795dd8873d69c9a14d2e2088f118d18"
+checksum = "2b92e0bdf838cbc1c4c9ba14f9c97a7ec6cdcd1ae66b10e1e42775a25553f45d"
 dependencies = [
- "cfg-if",
  "core-foundation-sys",
  "libc",
+ "memchr",
  "ntapi",
- "once_cell",
  "windows",
 ]
 
 [[package]]
-name = "system-configuration"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
-dependencies = [
- "bitflags 1.3.2",
- "core-foundation",
- "system-configuration-sys",
-]
-
-[[package]]
-name = "system-configuration-sys"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
 name = "target-features"
-version = "0.1.5"
+version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cfb5fa503293557c5158bd215fdc225695e567a77e453f5d4452a50a193969bd"
+checksum = "c1bbb9f3c5c463a01705937a24fdabc5047929ac764b2d5b9cf681c1f5041ed5"
 
 [[package]]
 name = "target-lexicon"
-version = "0.12.14"
+version = "0.12.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
+checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
 
 [[package]]
 name = "tempfile"
-version = "3.10.1"
+version = "3.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
+checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64"
 dependencies = [
  "cfg-if",
  "fastrand",
+ "once_cell",
  "rustix",
- "windows-sys 0.52.0",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
 name = "thiserror"
-version = "1.0.57"
+version = "1.0.63"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b"
+checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.57"
+version = "1.0.63"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81"
+checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.76",
 ]
 
 [[package]]
 name = "time"
-version = "0.3.34"
+version = "0.3.36"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749"
+checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
 dependencies = [
  "deranged",
  "num-conv",
@@ -4097,9 +4723,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
 
 [[package]]
 name = "time-macros"
-version = "0.2.17"
+version = "0.2.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774"
+checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
 dependencies = [
  "num-conv",
  "time-core",
@@ -4126,9 +4752,9 @@ dependencies = [
 
 [[package]]
 name = "tinyvec"
-version = "1.6.0"
+version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938"
 dependencies = [
  "tinyvec_macros",
 ]
@@ -4141,31 +4767,30 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "tokio"
-version = "1.36.0"
+version = "1.39.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931"
+checksum = "9babc99b9923bfa4804bd74722ff02c0381021eafa4db9949217e3be8e84fff5"
 dependencies = [
  "backtrace",
  "bytes",
  "libc",
  "mio",
- "num_cpus",
  "pin-project-lite",
  "signal-hook-registry",
  "socket2",
  "tokio-macros",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "tokio-macros"
-version = "2.2.0"
+version = "2.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
+checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -4174,15 +4799,26 @@ version = "0.24.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
 dependencies = [
- "rustls",
+ "rustls 0.21.12",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-rustls"
+version = "0.26.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
+dependencies = [
+ "rustls 0.23.12",
+ "rustls-pki-types",
  "tokio",
 ]
 
 [[package]]
 name = "tokio-util"
-version = "0.7.10"
+version = "0.7.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15"
+checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1"
 dependencies = [
  "bytes",
  "futures-core",
@@ -4190,7 +4826,6 @@ dependencies = [
  "futures-sink",
  "pin-project-lite",
  "tokio",
- "tracing",
 ]
 
 [[package]]
@@ -4207,9 +4842,9 @@ dependencies = [
 
 [[package]]
 name = "toml_datetime"
-version = "0.6.5"
+version = "0.6.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
+checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
 dependencies = [
  "serde",
 ]
@@ -4228,10 +4863,31 @@ dependencies = [
 ]
 
 [[package]]
+name = "tower"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project",
+ "pin-project-lite",
+ "tokio",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "tower-layer"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
+
+[[package]]
 name = "tower-service"
-version = "0.3.2"
+version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
+checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
 
 [[package]]
 name = "tracing"
@@ -4252,7 +4908,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -4271,23 +4927,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
 
 [[package]]
+name = "twox-hash"
+version = "1.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
+dependencies = [
+ "cfg-if",
+ "static_assertions",
+]
+
+[[package]]
 name = "typed-builder"
-version = "0.16.2"
+version = "0.19.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34085c17941e36627a879208083e25d357243812c30e7d7387c3b954f30ade16"
+checksum = "a06fbd5b8de54c5f7c91f6fe4cebb949be2125d7758e630bb58b1d831dbce600"
 dependencies = [
  "typed-builder-macro",
 ]
 
 [[package]]
 name = "typed-builder-macro"
-version = "0.16.2"
+version = "0.19.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f03ca4cb38206e2bef0700092660bb74d696f808514dae47fa1467cbfe26e96e"
+checksum = "f9534daa9fd3ed0bd911d462a37f172228077e7abf18c18a5f67199d959205f8"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -4325,9 +4991,9 @@ dependencies = [
 
 [[package]]
 name = "unicode-reverse"
-version = "1.0.8"
+version = "1.0.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0bea5dacebb0d2d0a69a6700a05b59b3908bf801bf563a49bd27a1b60122962c"
+checksum = "4b6f4888ebc23094adfb574fdca9fdc891826287a6397d2cd28802ffd6f20c76"
 dependencies = [
  "unicode-segmentation",
 ]
@@ -4340,9 +5006,9 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
 
 [[package]]
 name = "unicode-width"
-version = "0.1.11"
+version = "0.1.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
+checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
 
 [[package]]
 name = "unindent"
@@ -4358,9 +5024,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
 
 [[package]]
 name = "url"
-version = "2.5.0"
+version = "2.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
+checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
 dependencies = [
  "form_urlencoded",
  "idna",
@@ -4375,9 +5041,9 @@ checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
 
 [[package]]
 name = "uuid"
-version = "1.7.0"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a"
+checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314"
 dependencies = [
  "getrandom",
  "serde",
@@ -4403,9 +5069,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
 
 [[package]]
 name = "version_check"
-version = "0.9.4"
+version = "0.9.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
 
 [[package]]
 name = "vsimd"
@@ -4440,34 +5106,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 
 [[package]]
 name = "wasm-bindgen"
-version = "0.2.92"
+version = "0.2.93"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
+checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5"
 dependencies = [
  "cfg-if",
+ "once_cell",
  "wasm-bindgen-macro",
 ]
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.92"
+version = "0.2.93"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
+checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b"
 dependencies = [
  "bumpalo",
  "log",
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.76",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-futures"
-version = "0.4.42"
+version = "0.4.43"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0"
+checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed"
 dependencies = [
  "cfg-if",
  "js-sys",
@@ -4477,9 +5144,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.92"
+version = "0.2.93"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
+checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf"
 dependencies = [
  "quote",
  "wasm-bindgen-macro-support",
@@ -4487,22 +5154,22 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.92"
+version = "0.2.93"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
+checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.76",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.92"
+version = "0.2.93"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
+checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
 
 [[package]]
 name = "wasm-streams"
@@ -4519,9 +5186,9 @@ dependencies = [
 
 [[package]]
 name = "web-sys"
-version = "0.3.69"
+version = "0.3.70"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef"
+checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0"
 dependencies = [
  "js-sys",
  "wasm-bindgen",
@@ -4545,11 +5212,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
 
 [[package]]
 name = "winapi-util"
-version = "0.1.6"
+version = "0.1.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
+checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
 dependencies = [
- "winapi",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
@@ -4560,12 +5227,12 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
 
 [[package]]
 name = "windows"
-version = "0.52.0"
+version = "0.57.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
+checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143"
 dependencies = [
- "windows-core",
- "windows-targets 0.52.4",
+ "windows-core 0.57.0",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -4574,16 +5241,93 @@ version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
 dependencies = [
- "windows-targets 0.52.4",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.57.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d"
+dependencies = [
+ "windows-implement",
+ "windows-interface",
+ "windows-result 0.1.2",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-implement"
+version = "0.57.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.76",
+]
+
+[[package]]
+name = "windows-interface"
+version = "0.57.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.76",
+]
+
+[[package]]
+name = "windows-registry"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0"
+dependencies = [
+ "windows-result 0.2.0",
+ "windows-strings",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-result"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-result"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-strings"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
+dependencies = [
+ "windows-result 0.2.0",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
 name = "windows-sys"
-version = "0.48.0"
+version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2"
 dependencies = [
- "windows-targets 0.48.5",
+ "windows_aarch64_msvc 0.36.1",
+ "windows_i686_gnu 0.36.1",
+ "windows_i686_msvc 0.36.1",
+ "windows_x86_64_gnu 0.36.1",
+ "windows_x86_64_msvc 0.36.1",
 ]
 
 [[package]]
@@ -4592,7 +5336,16 @@ version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
 dependencies = [
- "windows-targets 0.52.4",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -4612,17 +5365,18 @@ dependencies = [
 
 [[package]]
 name = "windows-targets"
-version = "0.52.4"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
 dependencies = [
- "windows_aarch64_gnullvm 0.52.4",
- "windows_aarch64_msvc 0.52.4",
- "windows_i686_gnu 0.52.4",
- "windows_i686_msvc 0.52.4",
- "windows_x86_64_gnu 0.52.4",
- "windows_x86_64_gnullvm 0.52.4",
- "windows_x86_64_msvc 0.52.4",
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
 ]
 
 [[package]]
@@ -4633,9 +5387,15 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.52.4"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
+checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47"
 
 [[package]]
 name = "windows_aarch64_msvc"
@@ -4645,9 +5405,15 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.52.4"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
+checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6"
 
 [[package]]
 name = "windows_i686_gnu"
@@ -4657,9 +5423,21 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.52.4"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024"
 
 [[package]]
 name = "windows_i686_msvc"
@@ -4669,9 +5447,15 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.52.4"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
+checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1"
 
 [[package]]
 name = "windows_x86_64_gnu"
@@ -4681,9 +5465,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.52.4"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
@@ -4693,9 +5477,15 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
-version = "0.52.4"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680"
 
 [[package]]
 name = "windows_x86_64_msvc"
@@ -4705,9 +5495,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.52.4"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
 
 [[package]]
 name = "winnow"
@@ -4719,16 +5509,23 @@ dependencies = [
 ]
 
 [[package]]
-name = "winreg"
-version = "0.50.0"
+name = "x11rb"
+version = "0.13.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
+checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12"
 dependencies = [
- "cfg-if",
- "windows-sys 0.48.0",
+ "gethostname",
+ "rustix",
+ "x11rb-protocol",
 ]
 
 [[package]]
+name = "x11rb-protocol"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d"
+
+[[package]]
 name = "xmlparser"
 version = "0.13.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4736,59 +5533,60 @@ checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4"
 
 [[package]]
 name = "xxhash-rust"
-version = "0.8.10"
+version = "0.8.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03"
+checksum = "6a5cbf750400958819fb6178eaa83bee5cd9c29a26a40cc241df8c70fdd46984"
 
 [[package]]
 name = "zerocopy"
-version = "0.7.32"
+version = "0.7.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
 dependencies = [
+ "byteorder",
  "zerocopy-derive",
 ]
 
 [[package]]
 name = "zerocopy-derive"
-version = "0.7.32"
+version = "0.7.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.76",
 ]
 
 [[package]]
 name = "zeroize"
-version = "1.7.0"
+version = "1.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
+checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
 
 [[package]]
 name = "zstd"
-version = "0.13.0"
+version = "0.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bffb3309596d527cfcba7dfc6ed6052f1d39dfbd7c867aa2e865e4a449c10110"
+checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9"
 dependencies = [
  "zstd-safe",
 ]
 
 [[package]]
 name = "zstd-safe"
-version = "7.0.0"
+version = "7.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43747c7422e2924c11144d5229878b98180ef8b06cca4ab5af37afc8a8d8ea3e"
+checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059"
 dependencies = [
  "zstd-sys",
 ]
 
 [[package]]
 name = "zstd-sys"
-version = "2.0.9+zstd.1.5.5"
+version = "2.0.13+zstd.1.5.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656"
+checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa"
 dependencies = [
  "cc",
  "pkg-config",
diff --git a/pkgs/development/python-modules/polars/default.nix b/pkgs/development/python-modules/polars/default.nix
index 73edfeadcd53b..a1eeda11a3aff 100644
--- a/pkgs/development/python-modules/polars/default.nix
+++ b/pkgs/development/python-modules/polars/default.nix
@@ -1,37 +1,32 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, rustPlatform
-, cmake
-, libiconv
-, fetchFromGitHub
-, typing-extensions
-, jemalloc
-, rust-jemalloc-sys
-, darwin
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  rustPlatform,
+  cmake,
+  libiconv,
+  fetchFromGitHub,
+  jemalloc,
+  rust-jemalloc-sys,
+  darwin,
 }:
 
 let
   rust-jemalloc-sys' = rust-jemalloc-sys.override {
-    jemalloc = jemalloc.override {
-      disableInitExecTls = true;
-    };
+    jemalloc = jemalloc.override { disableInitExecTls = true; };
   };
 in
 
 buildPythonPackage rec {
   pname = "polars";
-  version = "0.20.15";
+  version = "1.7.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
-
   src = fetchFromGitHub {
     owner = "pola-rs";
     repo = "polars";
     rev = "refs/tags/py-${version}";
-    hash = "sha256-N/VIi0s5unYWqlR5Mpaq9cqXl2ccbzWPuOtE2UbmQw8=";
+    hash = "sha256-vbligrFrCd7BiPV8n1iRIlurPNirJKOiD4/P5qEpirg=";
   };
 
   # Cargo.lock file is sometimes behind actual release which throws an error,
@@ -43,6 +38,9 @@ buildPythonPackage rec {
 
   cargoDeps = rustPlatform.importCargoLock {
     lockFile = ./Cargo.lock;
+    outputHashes = {
+      "numpy-0.21.0" = "sha256-u0Z+6L8pXSPaA3cE1sUpY6sCoaU1clXUcj/avnNzmsw=";
+    };
   };
 
   buildAndTestSubdir = "py-polars";
@@ -50,32 +48,34 @@ buildPythonPackage rec {
   # Revisit this whenever package or Rust is upgraded
   RUSTC_BOOTSTRAP = 1;
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.11") [
-    typing-extensions
-  ];
-
   # trick taken from the polars repo since there seems to be a problem
   # with simd enabled with our stable rust (instead of nightly).
-  maturinBuildFlags = [ "--no-default-features" "--features=all" ];
+  maturinBuildFlags = [
+    "--no-default-features"
+    "--all-features"
+  ];
 
   dontUseCmakeConfigure = true;
 
-  nativeBuildInputs = [
-    # needed for libz-ng-sys
-    # TODO: use pkgs.zlib-ng
-    cmake
-  ] ++ (with rustPlatform; [
-    cargoSetupHook
-    maturinBuildHook
-  ]);
-
-  buildInputs = [
-    rust-jemalloc-sys'
-  ] ++ lib.optionals stdenv.isDarwin [
-    libiconv
-    darwin.apple_sdk.frameworks.Security
-    darwin.apple_sdk.frameworks.SystemConfiguration
-  ];
+  nativeBuildInputs =
+    [
+      # needed for libz-ng-sys
+      # TODO: use pkgs.zlib-ng
+      cmake
+    ]
+    ++ (with rustPlatform; [
+      cargoSetupHook
+      maturinBuildHook
+    ]);
+
+  buildInputs =
+    [ rust-jemalloc-sys' ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      libiconv
+      darwin.apple_sdk.frameworks.AppKit
+      darwin.apple_sdk.frameworks.Security
+      darwin.apple_sdk.frameworks.SystemConfiguration
+    ];
 
   # nativeCheckInputs = [
   #   pytestCheckHook
@@ -87,15 +87,13 @@ buildPythonPackage rec {
   #   pydot
   # ];
 
-  pythonImportsCheck = [
-    "polars"
-  ];
+  pythonImportsCheck = [ "polars" ];
 
-  meta = with lib; {
+  meta = {
     description = "Fast multi-threaded DataFrame library";
     homepage = "https://github.com/pola-rs/polars";
     changelog = "https://github.com/pola-rs/polars/releases/tag/py-${version}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ happysalada ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ happysalada ];
   };
 }
diff --git a/pkgs/development/python-modules/polib/default.nix b/pkgs/development/python-modules/polib/default.nix
index 73276d9b65993..c4f4726c5e891 100644
--- a/pkgs/development/python-modules/polib/default.nix
+++ b/pkgs/development/python-modules/polib/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "polib";
@@ -14,7 +18,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A library to manipulate gettext files (po and mo files)";
+    description = "Library to manipulate gettext files (po and mo files)";
     homepage = "https://bitbucket.org/izi/polib/";
     license = licenses.mit;
   };
diff --git a/pkgs/development/python-modules/policy-sentry/default.nix b/pkgs/development/python-modules/policy-sentry/default.nix
index 09e909eaa1424..d83761083c8ad 100644
--- a/pkgs/development/python-modules/policy-sentry/default.nix
+++ b/pkgs/development/python-modules/policy-sentry/default.nix
@@ -4,6 +4,7 @@
   buildPythonPackage,
   click,
   fetchFromGitHub,
+  orjson,
   pytestCheckHook,
   pythonOlder,
   pyyaml,
@@ -14,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "policy-sentry";
-  version = "0.12.12";
+  version = "0.13.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -23,7 +24,7 @@ buildPythonPackage rec {
     owner = "salesforce";
     repo = "policy_sentry";
     rev = "refs/tags/${version}";
-    hash = "sha256-1LYcUlGoSalbdo4tiNIYbdA04IHRTImhdWScpiCZk50=";
+    hash = "sha256-OUe6NAz4w9/OXWQg4W+TmEI5qiSdEp+/tspQnIISTnc=";
   };
 
   build-system = [ setuptools ];
@@ -31,8 +32,9 @@ buildPythonPackage rec {
   dependencies = [
     beautifulsoup4
     click
-    requests
+    orjson
     pyyaml
+    requests
     schema
   ];
 
diff --git a/pkgs/development/python-modules/policyuniverse/default.nix b/pkgs/development/python-modules/policyuniverse/default.nix
index e324813c6a587..99a37254018c9 100644
--- a/pkgs/development/python-modules/policyuniverse/default.nix
+++ b/pkgs/development/python-modules/policyuniverse/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
   # Tests are not shipped and there are no GitHub tags
   doCheck = false;
 
-  pythonImportsCheck = [
-    "policyuniverse"
-  ];
+  pythonImportsCheck = [ "policyuniverse" ];
 
   meta = with lib; {
     description = "Parse and Process AWS IAM Policies, Statements, ARNs and wildcards";
diff --git a/pkgs/development/python-modules/polling/default.nix b/pkgs/development/python-modules/polling/default.nix
index ee8165858933e..bbf858356234b 100644
--- a/pkgs/development/python-modules/polling/default.nix
+++ b/pkgs/development/python-modules/polling/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, mock
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     wheel
   ];
 
-  pythonImportsCheck = [
-    "polling"
-  ];
+  pythonImportsCheck = [ "polling" ];
 
   nativeCheckInputs = [
     mock
@@ -37,6 +36,6 @@ buildPythonPackage rec {
     description = "Powerful polling utility in Python";
     homepage = "https://github.com/justiniso/polling";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/polygon3/default.nix b/pkgs/development/python-modules/polygon3/default.nix
index e8bb253202bc1..80a3a5ea7256a 100644
--- a/pkgs/development/python-modules/polygon3/default.nix
+++ b/pkgs/development/python-modules/polygon3/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/polyline/default.nix b/pkgs/development/python-modules/polyline/default.nix
index 6ed2daae7e887..713b235f0f8f3 100644
--- a/pkgs/development/python-modules/polyline/default.nix
+++ b/pkgs/development/python-modules/polyline/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -31,13 +32,9 @@ buildPythonPackage rec {
     wheel
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "polyline"
-  ];
+  pythonImportsCheck = [ "polyline" ];
 
   meta = with lib; {
     description = "Python implementation of Google's Encoded Polyline Algorithm Format";
diff --git a/pkgs/development/python-modules/polyswarm-api/default.nix b/pkgs/development/python-modules/polyswarm-api/default.nix
index cde3bcc8ca347..3bce5e796233c 100644
--- a/pkgs/development/python-modules/polyswarm-api/default.nix
+++ b/pkgs/development/python-modules/polyswarm-api/default.nix
@@ -7,7 +7,6 @@
   pytestCheckHook,
   python-dateutil,
   pythonOlder,
-  pythonRelaxDepsHook,
   requests,
   responses,
   setuptools,
@@ -16,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "polyswarm-api";
-  version = "3.6.0";
+  version = "3.10.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,12 +24,11 @@ buildPythonPackage rec {
     owner = "polyswarm";
     repo = "polyswarm-api";
     rev = "refs/tags/${version}";
-    hash = "sha256-iY0I5z+aDLQekjgHT5v/ZprCkCgNPkyImmmaCQgnoYc=";
+    hash = "sha256-3K0FdqsEjt5cTymgxmt0Ohud/+bsILe9bDclZXJqPV8=";
   };
 
   pythonRelaxDeps = [ "future" ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   build-system = [ setuptools ];
 
diff --git a/pkgs/development/python-modules/pomegranate/default.nix b/pkgs/development/python-modules/pomegranate/default.nix
index 0c07483b07114..ddaffc7459289 100644
--- a/pkgs/development/python-modules/pomegranate/default.nix
+++ b/pkgs/development/python-modules/pomegranate/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# build-system
-, setuptools
-
-# dependencies
-, numpy
-, joblib
-, networkx
-, scipy
-, pyyaml
-, cython
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  numpy,
+  joblib,
+  networkx,
+  scipy,
+  pyyaml,
+  cython,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     hash = "sha256-PoDAtNm/snq4isotkoCTVYUuwr9AKKwiXIojUFMH/YE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     numpy
diff --git a/pkgs/development/python-modules/pontos/default.nix b/pkgs/development/python-modules/pontos/default.nix
index 8716316d5779e..aeae266c62b0a 100644
--- a/pkgs/development/python-modules/pontos/default.nix
+++ b/pkgs/development/python-modules/pontos/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, buildPythonPackage
-, colorful
-, fetchFromGitHub
-, git
-, httpx
-, lxml
-, packaging
-, poetry-core
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, semver
-, shtab
-, rich
-, tomlkit
+{
+  lib,
+  buildPythonPackage,
+  colorful,
+  fetchFromGitHub,
+  git,
+  httpx,
+  lxml,
+  packaging,
+  poetry-core,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  semver,
+  shtab,
+  rich,
+  tomlkit,
 }:
 
 buildPythonPackage rec {
   pname = "pontos";
-  version = "24.3.2";
+  version = "24.9.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -27,14 +28,12 @@ buildPythonPackage rec {
     owner = "greenbone";
     repo = "pontos";
     rev = "refs/tags/v${version}";
-    hash = "sha256-DXZDXipYBClqSdlTJsaPWaKr3qTiJ3osm3hHPp/MPow=";
+    hash = "sha256-CgO88I2M8RGpYyJchXZtqxIBjNaULSqnDgfFCUQDFUw=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     colorful
     httpx
     lxml
@@ -73,9 +72,7 @@ buildPythonPackage rec {
     "test_verify_version_does_not_match"
   ];
 
-  pythonImportsCheck = [
-    "pontos"
-  ];
+  pythonImportsCheck = [ "pontos" ];
 
   meta = with lib; {
     description = "Collection of Python utilities, tools, classes and functions";
diff --git a/pkgs/development/python-modules/pony/default.nix b/pkgs/development/python-modules/pony/default.nix
index 46a4daffe6254..790c162e6fb6e 100644
--- a/pkgs/development/python-modules/pony/default.nix
+++ b/pkgs/development/python-modules/pony/default.nix
@@ -1,33 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, pythonAtLeast
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pony";
-  version = "0.7.17";
+  version = "0.7.19";
   pyproject = true;
 
-  disabled = pythonOlder "3.8" || pythonAtLeast "3.12";
+  disabled = pythonOlder "3.8" || pythonAtLeast "3.13";
 
   src = fetchFromGitHub {
     owner = "ponyorm";
     repo = "pony";
     rev = "refs/tags/v${version}";
-    hash = "sha256-wBqw+YHKlxYplgsYL1pbkusHyPfCaVPcH/Yku6WDYbE=";
+    hash = "sha256-fYzwdHRB9QrIJPEk8dqtPggSnJeugDyC9zQSM6u3rN0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Tests are outdated
@@ -42,15 +39,16 @@ buildPythonPackage rec {
     "test_query"
   ];
 
-  pythonImportsCheck = [
-    "pony"
-  ];
+  pythonImportsCheck = [ "pony" ];
 
   meta = with lib; {
     description = "Library for advanced object-relational mapping";
     homepage = "https://ponyorm.org/";
     changelog = "https://github.com/ponyorm/pony/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ d-goldin xvapx ];
+    maintainers = with maintainers; [
+      d-goldin
+      xvapx
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/ponywhoosh/default.nix b/pkgs/development/python-modules/ponywhoosh/default.nix
index 2a905326cbc22..52d982173d479 100644
--- a/pkgs/development/python-modules/ponywhoosh/default.nix
+++ b/pkgs/development/python-modules/ponywhoosh/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, pony, whoosh }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pony,
+  whoosh,
+}:
 
 buildPythonPackage rec {
   pname = "ponywhoosh";
diff --git a/pkgs/development/python-modules/pooch/default.nix b/pkgs/development/python-modules/pooch/default.nix
index 63228be0d9dc0..ed35b18025ceb 100644
--- a/pkgs/development/python-modules/pooch/default.nix
+++ b/pkgs/development/python-modules/pooch/default.nix
@@ -1,29 +1,30 @@
-{ lib
-, buildPythonPackage
-, isPy27
-, fetchPypi
-, setuptools
-, setuptools-scm
-, wheel
-, pytestCheckHook
-, packaging
-, platformdirs
-, requests
-, tqdm
-, paramiko
-, xxhash
+{
+  lib,
+  buildPythonPackage,
+  isPy27,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  pytestCheckHook,
+  packaging,
+  platformdirs,
+  requests,
+  tqdm,
+  paramiko,
+  xxhash,
 }:
 
 buildPythonPackage rec {
   pname = "pooch";
-  version = "1.8.1";
+  version = "1.8.2";
   format = "pyproject";
 
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-J+9jCX3ZpuT50mlPXPvy8KXe+kT8yv7AjWAecx10YnA=";
+    hash = "sha256-dlYfDeaKAdpN9q846ZVcTJ0aXJDac/fkAnalco7IPRA=";
   };
 
   nativeBuildInputs = [
@@ -49,9 +50,7 @@ buildPythonPackage rec {
     export HOME=$TMPDIR
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # tries to touch network
   disabledTests = [
@@ -70,14 +69,12 @@ buildPythonPackage rec {
     "test_load_registry_from_doi"
     "test_retrieve"
     "test_stream_download"
-
   ];
 
   meta = with lib; {
-    description = "A friend to fetch your data files.";
+    description = "Friend to fetch your data files";
     homepage = "https://github.com/fatiando/pooch";
     license = licenses.bsd3;
     maintainers = with maintainers; [ GuillaumeDesforges ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pook/default.nix b/pkgs/development/python-modules/pook/default.nix
index 6abc4b43f34e8..285e66f89a982 100644
--- a/pkgs/development/python-modules/pook/default.nix
+++ b/pkgs/development/python-modules/pook/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, furl
-, hatchling
-, jsonschema
-, pytest-asyncio
-, pytest-httpbin
-, pytest7CheckHook
-, pythonOlder
-, requests
-, xmltodict
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  furl,
+  hatchling,
+  jsonschema,
+  pytest-asyncio,
+  pytest-httpbin,
+  pytest7CheckHook,
+  pythonOlder,
+  requests,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     hash = "sha256-sdfkMvPSlVK7EoDUEuJbiuocOjGJygqiCiftrsjnDhU=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -45,9 +44,7 @@ buildPythonPackage rec {
     pytest7CheckHook
   ];
 
-  pythonImportsCheck = [
-    "pook"
-  ];
+  pythonImportsCheck = [ "pook" ];
 
   disabledTestPaths = [
     # Don't test integrations
diff --git a/pkgs/development/python-modules/poolsense/default.nix b/pkgs/development/python-modules/poolsense/default.nix
index 85c8a8ec518f5..fb69913c6bc15 100644
--- a/pkgs/development/python-modules/poolsense/default.nix
+++ b/pkgs/development/python-modules/poolsense/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/poppler-qt5/default.nix b/pkgs/development/python-modules/poppler-qt5/default.nix
index 06c0e7a6e6ee9..0ac8753d382dc 100644
--- a/pkgs/development/python-modules/poppler-qt5/default.nix
+++ b/pkgs/development/python-modules/poppler-qt5/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, isPy3k
-, fetchPypi
-, sip
-, qtbase
-, qmake
-, pyqt5
-, pyqt-builder
-, poppler
-, pkg-config
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  isPy3k,
+  fetchPypi,
+  sip,
+  qtbase,
+  qmake,
+  pyqt5,
+  pyqt-builder,
+  poppler,
+  pkg-config,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,12 +21,20 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-tHfohB8OoOCf2rby8wXPON+XfZ4ULlaTo3RgXXXdb+A=";
+    hash = "sha256-tHfohB8OoOCf2rby8wXPON+XfZ4ULlaTo3RgXXXdb+A=";
   };
 
-
-  buildInputs = [ qtbase.dev poppler pyqt-builder ];
-  nativeBuildInputs = [ pkg-config qmake sip setuptools ];
+  buildInputs = [
+    qtbase.dev
+    poppler
+    pyqt-builder
+  ];
+  nativeBuildInputs = [
+    pkg-config
+    qmake
+    sip
+    setuptools
+  ];
   propagatedBuildInputs = [ pyqt5.dev ];
 
   format = "pyproject";
@@ -47,6 +56,6 @@ buildPythonPackage rec {
   meta = with lib; {
     homepage = "https://github.com/frescobaldi/python-poppler-qt5";
     license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/port-for/default.nix b/pkgs/development/python-modules/port-for/default.nix
index ae3c00e6d4355..535cfbd5baf81 100644
--- a/pkgs/development/python-modules/port-for/default.nix
+++ b/pkgs/development/python-modules/port-for/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
   pythonImportsCheck = [ "port_for" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/portalocker/default.nix b/pkgs/development/python-modules/portalocker/default.nix
index cd66b0950eefb..be7697d0d6aba 100644
--- a/pkgs/development/python-modules/portalocker/default.nix
+++ b/pkgs/development/python-modules/portalocker/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-
-# build-system
-, setuptools
-, setuptools-scm
-
-# dependencies
-, redis
-
-# tests
-, pygments
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+
+  # dependencies
+  redis,
+
+  # tests
+  pygments,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -36,24 +37,20 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    redis
-  ];
+  propagatedBuildInputs = [ redis ];
 
   nativeCheckInputs = [
     pygments
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "portalocker"
-  ];
+  pythonImportsCheck = [ "portalocker" ];
 
   meta = with lib; {
     changelog = "https://github.com/wolph/portalocker/releases/tag/v${version}";
-    description = "A library to provide an easy API to file locking";
+    description = "Library to provide an easy API to file locking";
     homepage = "https://github.com/WoLpH/portalocker";
     license = licenses.psfl;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/portend/default.nix b/pkgs/development/python-modules/portend/default.nix
index 73356631615f8..35bf5d1a8be5d 100644
--- a/pkgs/development/python-modules/portend/default.nix
+++ b/pkgs/development/python-modules/portend/default.nix
@@ -1,6 +1,12 @@
-{ lib, buildPythonPackage, fetchPypi
-, pythonOlder
-, pytestCheckHook, setuptools-scm, tempora  }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools-scm,
+  tempora,
+}:
 
 buildPythonPackage rec {
   pname = "portend";
@@ -11,7 +17,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-UlCjUsGclZ12fKyHi4Kdk+XcdiWlFDOZoqANxmKP+3I=";
+    hash = "sha256-UlCjUsGclZ12fKyHi4Kdk+XcdiWlFDOZoqANxmKP+3I=";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
@@ -20,9 +26,7 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "portend"
-  ];
+  pythonImportsCheck = [ "portend" ];
 
   # Some of the tests use localhost networking.
   __darwinAllowLocalNetworking = true;
diff --git a/pkgs/development/python-modules/portion/default.nix b/pkgs/development/python-modules/portion/default.nix
new file mode 100644
index 0000000000000..6af448dccd055
--- /dev/null
+++ b/pkgs/development/python-modules/portion/default.nix
@@ -0,0 +1,37 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  sortedcontainers,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "portion";
+  version = "2.5.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "AlexandreDecan";
+    repo = "portion";
+    rev = "refs/tags/${version}";
+    hash = "sha256-sNOieFenrWh6iDXCyCBedx+qIsS+daAr+WVBpkc8yVQ=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ sortedcontainers ];
+
+  pythonImportsCheck = [ "portion" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "Portion, a Python library providing data structure and operations for intervals";
+    homepage = "https://github.com/AlexandreDecan/portion";
+    changelog = "https://github.com/AlexandreDecan/portion/blob/${src.rev}/CHANGELOG.md";
+    license = lib.licenses.lgpl3;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/pkgs/development/python-modules/portpicker/default.nix b/pkgs/development/python-modules/portpicker/default.nix
index 65c4059b4fc26..61fd71319fad4 100644
--- a/pkgs/development/python-modules/portpicker/default.nix
+++ b/pkgs/development/python-modules/portpicker/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, psutil
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  psutil,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,23 +19,17 @@ buildPythonPackage rec {
     hash = "sha256-vVB/1vlvZe4CeB8uZ06dxsmbv6bjw5mS45FiBMnUMfo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    psutil
-  ];
+  propagatedBuildInputs = [ psutil ];
 
-  pythonImportsCheck = [
-    "portpicker"
-  ];
+  pythonImportsCheck = [ "portpicker" ];
 
   meta = with lib; {
     description = "Library to choose unique available network ports";
     mainProgram = "portserver.py";
     homepage = "https://github.com/google/python_portpicker";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/posix-ipc/default.nix b/pkgs/development/python-modules/posix-ipc/default.nix
index 58f13f20cf039..6c78fc34830db 100644
--- a/pkgs/development/python-modules/posix-ipc/default.nix
+++ b/pkgs/development/python-modules/posix-ipc/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,14 +19,12 @@ buildPythonPackage rec {
     hash = "sha256-xK5CkThqVFVMIxBtgUfHIRNRfmBxKa/DWBYQg7QHl/M=";
   };
 
-  pythonImportsCheck = [
-    "posix_ipc"
-  ];
+  pythonImportsCheck = [ "posix_ipc" ];
 
   meta = with lib; {
     description = "POSIX IPC primitives (semaphores, shared memory and message queues)";
     homepage = "https://github.com/osvenskan/posix_ipc";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/posthog/default.nix b/pkgs/development/python-modules/posthog/default.nix
index 03372065aedd9..cf4e6803391b6 100644
--- a/pkgs/development/python-modules/posthog/default.nix
+++ b/pkgs/development/python-modules/posthog/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-# build inputs
-, requests
-, six
-, monotonic
-, backoff
-, python-dateutil
-# check inputs
-, pytestCheckHook
-, mock
-, freezegun
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  # build inputs
+  requests,
+  six,
+  monotonic,
+  backoff,
+  python-dateutil,
+  # check inputs
+  pytestCheckHook,
+  mock,
+  freezegun,
 }:
 let
   pname = "posthog";
-  version = "3.5.0";
+  version = "3.5.2";
 in
 buildPythonPackage {
   inherit pname version;
@@ -24,7 +25,7 @@ buildPythonPackage {
     owner = "PostHog";
     repo = "posthog-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+nYMQxqI9RZ5vVL6KgiRLcx0JHWJTs/rZ6U6jIuaz+w=";
+    hash = "sha256-DhTX28j8RcEONEVIRoYHBk63Qw1Wff9qdQ/Ymbb9xHE=";
   };
 
   propagatedBuildInputs = [
@@ -41,9 +42,7 @@ buildPythonPackage {
     freezegun
   ];
 
-  pythonImportsCheck = [
-    "posthog"
-  ];
+  pythonImportsCheck = [ "posthog" ];
 
   disabledTests = [
     "test_load_feature_flags_wrong_key"
diff --git a/pkgs/development/python-modules/pot/default.nix b/pkgs/development/python-modules/pot/default.nix
index 321ad2e2dba78..9d361a3ff11c0 100644
--- a/pkgs/development/python-modules/pot/default.nix
+++ b/pkgs/development/python-modules/pot/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, autograd
-, buildPythonPackage
-, fetchFromGitHub
-, cupy
-, cvxopt
-, cython
-, oldest-supported-numpy
-, matplotlib
-, numpy
-, tensorflow
-, pymanopt
-, pytestCheckHook
-, pythonOlder
-, scikit-learn
-, scipy
-, enableDimensionalityReduction ? false
-, enableGPU ? false
+{
+  lib,
+  autograd,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cvxopt,
+  cython,
+  jax,
+  jaxlib,
+  matplotlib,
+  numpy,
+  pymanopt,
+  pytestCheckHook,
+  pythonOlder,
+  scikit-learn,
+  scipy,
+  setuptools,
+  tensorflow,
+  torch,
 }:
 
 buildPythonPackage rec {
   pname = "pot";
-  version = "0.9.3";
+  version = "0.9.4";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -29,32 +30,56 @@ buildPythonPackage rec {
     owner = "PythonOT";
     repo = "POT";
     rev = "refs/tags/${version}";
-    hash = "sha256-fdqDM0V6zTFe1lcqi53ZZNHAfmuR2I7fdX4SN9qeNn8=";
+    hash = "sha256-Yx9hjniXebn7ZZeqou0JEsn2Yf9hyJSu/acDlM4kCCI=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     cython
-    oldest-supported-numpy
+    numpy
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
     scipy
-  ] ++ lib.optionals enableGPU [
-    cupy
-  ] ++ lib.optionals enableDimensionalityReduction [
-    autograd
-    pymanopt
   ];
 
-  nativeCheckInputs = [
-    cvxopt
-    matplotlib
-    numpy
-    tensorflow
-    scikit-learn
-    pytestCheckHook
-  ];
+  optional-dependencies = {
+    backend-numpy = [ ];
+    backend-jax = [
+      jax
+      jaxlib
+    ];
+    backend-cupy = [ ];
+    backend-tf = [ tensorflow ];
+    backend-torch = [ torch ];
+    cvxopt = [ cvxopt ];
+    dr = [
+      scikit-learn
+      pymanopt
+      autograd
+    ];
+    gnn = [
+      torch
+      # torch-geometric
+    ];
+    plot = [ matplotlib ];
+    all =
+      with optional-dependencies;
+      (
+        backend-numpy
+        ++ backend-jax
+        ++ backend-cupy
+        ++ backend-tf
+        ++ backend-torch
+        ++ optional-dependencies.cvxopt
+        ++ dr
+        ++ gnn
+        ++ plot
+      );
+  };
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace setup.cfg \
@@ -62,6 +87,9 @@ buildPythonPackage rec {
       --replace " --durations=20" "" \
       --replace " --junit-xml=junit-results.xml" ""
 
+    substituteInPlace pyproject.toml \
+      --replace-fail "numpy>=2.0.0" "numpy"
+
     # we don't need setup.py to find the macos sdk for us
     sed -i '/sdk_path/d' setup.py
   '';
@@ -104,10 +132,6 @@ buildPythonPackage rec {
     "test_emd1d_device_tf"
   ];
 
-  disabledTestPaths = lib.optionals (!enableDimensionalityReduction) [
-    "test/test_dr.py"
-  ];
-
   pythonImportsCheck = [
     "ot"
     "ot.lp"
diff --git a/pkgs/development/python-modules/potentials/default.nix b/pkgs/development/python-modules/potentials/default.nix
index 02da784d426ab..5270503513a22 100644
--- a/pkgs/development/python-modules/potentials/default.nix
+++ b/pkgs/development/python-modules/potentials/default.nix
@@ -11,7 +11,6 @@
   matplotlib,
   numpy,
   pandas,
-  pytestCheckHook,
   pythonOlder,
   requests,
   scipy,
diff --git a/pkgs/development/python-modules/potr/default.nix b/pkgs/development/python-modules/potr/default.nix
index 671010bb9009a..fcf1f4e0701d5 100644
--- a/pkgs/development/python-modules/potr/default.nix
+++ b/pkgs/development/python-modules/potr/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchPypi, buildPythonPackage, pycrypto }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pycrypto,
+}:
 
 buildPythonPackage rec {
   pname = "python-potr";
@@ -12,9 +17,9 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ pycrypto ];
 
   meta = with lib; {
-    description = "A pure Python OTR implementation";
+    description = "Pure Python OTR implementation";
     homepage = "http://python-otr.pentabarf.de/";
     license = licenses.lgpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/power/default.nix b/pkgs/development/python-modules/power/default.nix
index 7d82d8e8acb63..708f3e40a222e 100644
--- a/pkgs/development/python-modules/power/default.nix
+++ b/pkgs/development/python-modules/power/default.nix
@@ -1,7 +1,7 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -18,10 +18,8 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
     description = "Cross-platform system power status information";
     homepage = "https://github.com/Kentzo/Power";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/powerline-mem-segment/default.nix b/pkgs/development/python-modules/powerline-mem-segment/default.nix
index 64eae31c0a250..99a38c7d6248b 100644
--- a/pkgs/development/python-modules/powerline-mem-segment/default.nix
+++ b/pkgs/development/python-modules/powerline-mem-segment/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, psutil
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  psutil,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "powerlinemem" ];
 
   meta = with lib; {
-    description = "Segment for Powerline showing the current memory usage in percent or absolute values.";
+    description = "Segment for Powerline showing the current memory usage in percent or absolute values";
     homepage = "https://github.com/mKaloer/powerline_mem_segment";
     license = licenses.asl20;
     maintainers = with maintainers; [ thomasjm ];
diff --git a/pkgs/development/python-modules/powerline/default.nix b/pkgs/development/python-modules/powerline/default.nix
index 5516db843bcfc..76bab717715fb 100644
--- a/pkgs/development/python-modules/powerline/default.nix
+++ b/pkgs/development/python-modules/powerline/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, socat
-, psutil
-, python-hglib
-, pygit2
-, pyuv
-, i3ipc
-, stdenv
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  socat,
+  psutil,
+  python-hglib,
+  pygit2,
+  pyuv,
+  i3ipc,
+  stdenv,
 }:
 
 # TODO: bzr support is missing because nixpkgs switched to `breezy`
 
 buildPythonPackage rec {
-  version  = "2.8.3";
+  version = "2.8.4";
   pname = "powerline";
   format = "setuptools";
 
@@ -21,7 +22,7 @@ buildPythonPackage rec {
     owner = pname;
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-UIx9/IZg6Wv596wHzQb0CO6zwmQXUaFEPKBojo2LXmA=";
+    hash = "sha256-snJrfUvP11lBIy6F0WtqJt9fiYm5jxMwm9u3u5XFO84=";
   };
 
   propagatedBuildInputs = [
@@ -30,7 +31,7 @@ buildPythonPackage rec {
     python-hglib
     pygit2
     pyuv
-  ] ++ lib.optionals (!stdenv.isDarwin) [ i3ipc ];
+  ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ i3ipc ];
 
   # tests are travis-specific
   doCheck = false;
@@ -49,8 +50,8 @@ buildPythonPackage rec {
   '';
 
   meta = {
-    homepage    = "https://github.com/powerline/powerline";
-    description = "The ultimate statusline/prompt utility";
-    license     = lib.licenses.mit;
+    homepage = "https://github.com/powerline/powerline";
+    description = "Ultimate statusline/prompt utility";
+    license = lib.licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/pox/default.nix b/pkgs/development/python-modules/pox/default.nix
index e3926ed045b0c..ffcf9616cb599 100644
--- a/pkgs/development/python-modules/pox/default.nix
+++ b/pkgs/development/python-modules/pox/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,15 +20,13 @@ buildPythonPackage rec {
   # Test sare failing the sandbox
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pox"
-  ];
+  pythonImportsCheck = [ "pox" ];
 
   meta = with lib; {
     description = "Utilities for filesystem exploration and automated builds";
     mainProgram = "pox";
     homepage = "https://pox.readthedocs.io/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/poyo/default.nix b/pkgs/development/python-modules/poyo/default.nix
index a4eaad98b8dd9..6b18f11fd5caf 100644
--- a/pkgs/development/python-modules/poyo/default.nix
+++ b/pkgs/development/python-modules/poyo/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -15,8 +16,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/hackebrot/poyo";
-    description = "A lightweight YAML Parser for Python";
+    description = "Lightweight YAML Parser for Python";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/ppdeep/default.nix b/pkgs/development/python-modules/ppdeep/default.nix
index 4ea7033b11f39..9685a656480c9 100644
--- a/pkgs/development/python-modules/ppdeep/default.nix
+++ b/pkgs/development/python-modules/ppdeep/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/ppft/default.nix b/pkgs/development/python-modules/ppft/default.nix
index d72fe679c2265..a2672cc5e45e7 100644
--- a/pkgs/development/python-modules/ppft/default.nix
+++ b/pkgs/development/python-modules/ppft/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, python
-, pythonOlder
-, six
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  pythonOlder,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -19,12 +20,10 @@ buildPythonPackage rec {
     hash = "sha256-dqQpp9e3TE10P226g1HljWK2Qy7WXfn+IEeQFg2rmW0=";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   # darwin seems to hang
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   checkPhase = ''
     runHook preCheck
@@ -32,9 +31,7 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "ppft"
-  ];
+  pythonImportsCheck = [ "ppft" ];
 
   meta = with lib; {
     description = "Distributed and parallel Python";
@@ -42,6 +39,6 @@ buildPythonPackage rec {
     homepage = "https://ppft.readthedocs.io/";
     changelog = "https://github.com/uqfoundation/ppft/releases/tag/${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ppk2-api/default.nix b/pkgs/development/python-modules/ppk2-api/default.nix
new file mode 100644
index 0000000000000..066cf56c557bd
--- /dev/null
+++ b/pkgs/development/python-modules/ppk2-api/default.nix
@@ -0,0 +1,40 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pyserial,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "ppk2-api";
+  version = "0.9.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "IRNAS";
+    repo = "ppk2-api-python";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-fubDFtOXiv2YFYUCOUbuyXs1sHgs0/6ZVK9sAwxQ+Pk=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ pyserial ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "ppk2_api" ];
+
+  meta = with lib; {
+    description = "Power Profiling Kit 2 unofficial Python API";
+    homepage = "https://github.com/IRNAS/ppk2-api-python";
+    changelog = "https://github.com/IRNAS/ppk2-api-python/releases/tag/v${version}";
+    license = licenses.gpl2Only;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pplpy/default.nix b/pkgs/development/python-modules/pplpy/default.nix
index 641008be07fca..d9684090774a7 100644
--- a/pkgs/development/python-modules/pplpy/default.nix
+++ b/pkgs/development/python-modules/pplpy/default.nix
@@ -1,14 +1,18 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, gmp
-, mpfr
-, libmpc
-, ppl
-, cython
-, cysignals
-, gmpy2
-, sphinx
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  gmp,
+  mpfr,
+  libmpc,
+  ppl,
+  cython,
+  cysignals,
+  gmpy2,
+  sphinx,
+
+  # Reverse dependency
+  sage,
 }:
 
 buildPythonPackage rec {
@@ -18,7 +22,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-1CohbIKRTc9NfAAN68mLsza4+D4Ca6XZUszNn4B07/0=";
+    hash = "sha256-1CohbIKRTc9NfAAN68mLsza4+D4Ca6XZUszNn4B07/0=";
   };
 
   buildInputs = [
@@ -38,7 +42,10 @@ buildPythonPackage rec {
     gmpy2
   ];
 
-  outputs = [ "out" "doc" ];
+  outputs = [
+    "out"
+    "doc"
+  ];
 
   postBuild = ''
     # Find the build result in order to put it into PYTHONPATH. The doc
@@ -54,8 +61,12 @@ buildPythonPackage rec {
     mv docs/build/html "$doc/share/doc/pplpy"
   '';
 
+  passthru.tests = {
+    inherit sage;
+  };
+
   meta = with lib; {
-    description = "A Python wrapper for ppl";
+    description = "Python wrapper for ppl";
     homepage = "https://gitlab.com/videlec/pplpy";
     maintainers = teams.sage.members;
     license = licenses.gpl3;
diff --git a/pkgs/development/python-modules/pprintpp/default.nix b/pkgs/development/python-modules/pprintpp/default.nix
index 0e058cab0560c..d791e77972b9c 100644
--- a/pkgs/development/python-modules/pprintpp/default.nix
+++ b/pkgs/development/python-modules/pprintpp/default.nix
@@ -2,33 +2,27 @@
   lib,
   buildPythonPackage,
   fetchpatch,
-  fetchPypi,
-  parameterized,
+  fetchFromGitHub,
   pytestCheckHook,
-  pynose,
-  python,
   pythonOlder,
   setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pprintpp";
-  version = "0.4.0";
+  version = "0.4.0-unstable-2022-05-31";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-6oJhCOLH9J3G1mx1KXPD/JdJFCp5jWslTh4wHP28ZAM=";
+  src = fetchFromGitHub {
+    owner = "joaonc";
+    repo = "pprintpp2";
+    rev = "303f0652c9420f2cf0a0f4fe1907377508a17b3d"; # no tags
+    hash = "sha256-rjOf38m5mzIyJ3aVrD0+WQuzIyFjfa/4zmpFGGhF2hs=";
   };
 
   patches = [
-    # Replace nose-parameterized with parameterized, https://github.com/wolever/pprintpp/pull/21
-    (fetchpatch {
-      url = "https://github.com/wolever/pprintpp/commit/873217674cc824b4c1cfdad4867c560c60e8d806.patch";
-      hash = "sha256-Y+2yVUkDHkwo49ynNHYXVXJpX4DfVYJ0CWKgzFX/HWc=";
-    })
     # Remove "U" move from open(), https://github.com/wolever/pprintpp/pull/31
     (fetchpatch {
       name = "remove-u.patch";
@@ -39,25 +33,12 @@ buildPythonPackage rec {
 
   build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    parameterized
-    pynose
-    pytestCheckHook
-  ];
-
   pythonImportsCheck = [ "pprintpp" ];
 
-  pytestFlagsArray = [ "test.py" ];
-
-  disabledTests = [
-    # AttributeError: 'EncodedFile' object has no attribute 'getvalue'
-    "test_pp"
-    "test_pp_pprint"
-    "test_fmt"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A drop-in replacement for pprint that's actually pretty";
+    description = "Drop-in replacement for pprint that's actually pretty";
     homepage = "https://github.com/wolever/pprintpp";
     changelog = "https://github.com/wolever/pprintpp/blob/${version}/CHANGELOG.txt";
     license = licenses.bsd2;
diff --git a/pkgs/development/python-modules/pproxy/default.nix b/pkgs/development/python-modules/pproxy/default.nix
index a7028757b0ba7..c08d2de25aa8d 100644
--- a/pkgs/development/python-modules/pproxy/default.nix
+++ b/pkgs/development/python-modules/pproxy/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pycryptodome
-, uvloop
-, setuptools
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pycryptodome,
+  uvloop,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,18 +22,14 @@ buildPythonPackage rec {
     sha256 = "sha256-bOqDdNiaZ5MRi/UeF0hJwMs+rfQBKRsTmXrZ6ieIguo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     pycryptodome
     uvloop
   ];
 
-  pythonImportsCheck = [
-    "pproxy"
-  ];
+  pythonImportsCheck = [ "pproxy" ];
 
   disabledTests = [
     # Tests try to connect to outside Internet, so disabled
diff --git a/pkgs/development/python-modules/ppscore/default.nix b/pkgs/development/python-modules/ppscore/default.nix
index b87e0e4c98397..544681c2c704d 100644
--- a/pkgs/development/python-modules/ppscore/default.nix
+++ b/pkgs/development/python-modules/ppscore/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pandas
-, pytestCheckHook
-, pythonOlder
-, scikit-learn
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pandas,
+  pytestCheckHook,
+  pythonOlder,
+  scikit-learn,
 }:
 
 buildPythonPackage rec {
@@ -31,13 +32,11 @@ buildPythonPackage rec {
     scikit-learn
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ppscore"
-  ];
+  pythonRelaxDeps = [ "pandas" ];
+
+  pythonImportsCheck = [ "ppscore" ];
 
   meta = with lib; {
     description = "Python implementation of the Predictive Power Score (PPS)";
diff --git a/pkgs/development/python-modules/pq/default.nix b/pkgs/development/python-modules/pq/default.nix
index cc65a00759981..533382cdca269 100644
--- a/pkgs/development/python-modules/pq/default.nix
+++ b/pkgs/development/python-modules/pq/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
 }:
 
 buildPythonPackage rec {
@@ -12,7 +13,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-1krw77ij69EbLg5mKmQmxeHpn38uRG9EOboGmRk+StY=";
+    hash = "sha256-1krw77ij69EbLg5mKmQmxeHpn38uRG9EOboGmRk+StY=";
   };
 
   # tests require running postgresql cluster
diff --git a/pkgs/development/python-modules/prance/default.nix b/pkgs/development/python-modules/prance/default.nix
index b479451e065c5..0017582e25cc5 100644
--- a/pkgs/development/python-modules/prance/default.nix
+++ b/pkgs/development/python-modules/prance/default.nix
@@ -1,46 +1,41 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, chardet
-, click
-, flex
-, packaging
-, pyicu
-, requests
-, ruamel-yaml
-, setuptools-scm
-, six
-, swagger-spec-validator
-, pytestCheckHook
-, openapi-spec-validator
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  chardet,
+  click,
+  flex,
+  packaging,
+  pyicu,
+  requests,
+  ruamel-yaml,
+  setuptools-scm,
+  six,
+  swagger-spec-validator,
+  pytest-cov-stub,
+  pytestCheckHook,
+  openapi-spec-validator,
 }:
 
 buildPythonPackage rec {
   pname = "prance";
   version = "23.06.21.0";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "RonnyPfannschmidt";
-    repo = pname;
-    rev = "v${version}";
+    repo = "prance";
+    rev = "refs/tags/v${version}";
     fetchSubmodules = true;
     hash = "sha256-p+LZbQal4DPeMp+eJ2O83rCaL+QIUDcU34pZhYdN4bE=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "--cov=prance --cov-report=term-missing --cov-fail-under=90" ""
-  '';
+  build-system = [ setuptools-scm ];
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
-
-  propagatedBuildInputs = [
+  dependencies = [
     chardet
     packaging
     requests
@@ -57,13 +52,12 @@ buildPythonPackage rec {
   };
 
   nativeCheckInputs = [
+    pytest-cov-stub
     pytestCheckHook
   ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
 
   # Disable tests that require network
-  disabledTestPaths = [
-    "tests/test_convert.py"
-  ];
+  disabledTestPaths = [ "tests/test_convert.py" ];
   disabledTests = [
     "test_convert_defaults"
     "test_convert_output"
@@ -73,11 +67,11 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "prance" ];
 
   meta = with lib; {
-    changelog = "https://github.com/RonnyPfannschmidt/prance/blob/${src.rev}/CHANGES.rst";
     description = "Resolving Swagger/OpenAPI 2.0 and 3.0.0 Parser";
-    mainProgram = "prance";
     homepage = "https://github.com/RonnyPfannschmidt/prance";
+    changelog = "https://github.com/RonnyPfannschmidt/prance/blob/${src.rev}/CHANGES.rst";
     license = licenses.mit;
     maintainers = [ ];
+    mainProgram = "prance";
   };
 }
diff --git a/pkgs/development/python-modules/praw/default.nix b/pkgs/development/python-modules/praw/default.nix
index 09417a8d82b5f..08fb2795bd179 100644
--- a/pkgs/development/python-modules/praw/default.nix
+++ b/pkgs/development/python-modules/praw/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, betamax
-, betamax-matchers
-, betamax-serializers
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, prawcore
-, pytestCheckHook
-, pythonOlder
-, requests-toolbelt
-, update-checker
-, websocket-client
+{
+  lib,
+  betamax,
+  betamax-matchers,
+  betamax-serializers,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  prawcore,
+  pytestCheckHook,
+  pythonOlder,
+  requests-toolbelt,
+  update-checker,
+  websocket-client,
 }:
 
 buildPythonPackage rec {
@@ -47,9 +48,7 @@ buildPythonPackage rec {
     "tests/integration"
   ];
 
-  pythonImportsCheck = [
-    "praw"
-  ];
+  pythonImportsCheck = [ "praw" ];
 
   meta = with lib; {
     description = "Python Reddit API wrapper";
diff --git a/pkgs/development/python-modules/prawcore/default.nix b/pkgs/development/python-modules/prawcore/default.nix
index 6231ff2b81273..0300ae150da99 100644
--- a/pkgs/development/python-modules/prawcore/default.nix
+++ b/pkgs/development/python-modules/prawcore/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, betamax
-, betamax-matchers
-, betamax-serializers
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, mock
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-toolbelt
-, testfixtures
+{
+  lib,
+  betamax,
+  betamax-matchers,
+  betamax-serializers,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-toolbelt,
+  testfixtures,
 }:
 
 buildPythonPackage rec {
@@ -27,13 +28,9 @@ buildPythonPackage rec {
     hash = "sha256-tECZRx6VgyiJDKHvj4Rf1sknFqUhz3sDFEsAMOeB7/g=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     testfixtures
@@ -50,9 +47,7 @@ buildPythonPackage rec {
     "tests/integration"
   ];
 
-  pythonImportsCheck = [
-    "prawcore"
-  ];
+  pythonImportsCheck = [ "prawcore" ];
 
   meta = with lib; {
     description = "Low-level communication layer for PRAW";
diff --git a/pkgs/development/python-modules/prayer-times-calculator-offline/default.nix b/pkgs/development/python-modules/prayer-times-calculator-offline/default.nix
new file mode 100644
index 0000000000000..dfaf77528d260
--- /dev/null
+++ b/pkgs/development/python-modules/prayer-times-calculator-offline/default.nix
@@ -0,0 +1,34 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "prayer-times-calculator-offline";
+  version = "1.0.3";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "cpfair";
+    repo = "prayer-times-calculator-offline";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-sVEdjtwxwGa354YimeaNqjqZ9yEecNXg8kk6Pafvvd4=";
+  };
+
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "prayer_times_calculator_offline" ];
+
+  # upstream has no tests
+  doCheck = false;
+
+  meta = {
+    changelog = "https://github.com/cpfair/prayer-times-calculator-offline/releases/tag/v${version}";
+    description = "Prayer Times Calculator - Offline";
+    homepage = "https://github.com/cpfair/prayer-times-calculator-offline";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/prayer-times-calculator/default.nix b/pkgs/development/python-modules/prayer-times-calculator/default.nix
deleted file mode 100644
index 88699a077bbe7..0000000000000
--- a/pkgs/development/python-modules/prayer-times-calculator/default.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, requests
-, setuptools
-}:
-
-buildPythonPackage rec {
-  pname = "prayer-times-calculator";
-  version = "0.0.12";
-  pyproject = true;
-
-  disabled = pythonOlder "3.6";
-
-  src = fetchFromGitHub {
-    owner = "uchagani";
-    repo = "prayer-times-calculator";
-    rev = "refs/tags/${version}";
-    hash = "sha256-HeGUnApQZ12aieaV/UBbJqqpEn4i/ZZKw41H/Yx3+cY=";
-  };
-
-  nativeBuildInputs = [
-    setuptools
-  ];
-
-  propagatedBuildInputs = [
-    requests
-  ];
-
-  # Project has no tests
-  doCheck = false;
-
-  pythonImportsCheck = [
-    "prayer_times_calculator"
-  ];
-
-  meta = with lib; {
-    description = "Python client for the Prayer Times API";
-    homepage = "https://github.com/uchagani/prayer-times-calculator";
-    changelog = "https://github.com/uchagani/prayer-times-calculator/releases/tag/${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ fab ];
-  };
-}
diff --git a/pkgs/development/python-modules/pre-commit-hooks/default.nix b/pkgs/development/python-modules/pre-commit-hooks/default.nix
index 11f226aa0c54b..55058f846d08d 100644
--- a/pkgs/development/python-modules/pre-commit-hooks/default.nix
+++ b/pkgs/development/python-modules/pre-commit-hooks/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, git
-, pytestCheckHook
-, pythonOlder
-, ruamel-yaml
-, tomli
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  git,
+  pytestCheckHook,
+  pythonOlder,
+  ruamel-yaml,
+  tomli,
 }:
 
 buildPythonPackage rec {
@@ -23,11 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-p/pPpuuNjVxHSPyi4RL2DJlj9weSq8QinugQ4zmv9Ck=";
   };
 
-  propagatedBuildInputs = [
-    ruamel-yaml
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  propagatedBuildInputs = [ ruamel-yaml ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   nativeCheckInputs = [
     git
@@ -36,7 +33,7 @@ buildPythonPackage rec {
 
   # Note: this is not likely to ever work on Darwin
   # https://github.com/pre-commit/pre-commit-hooks/pull/655
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   # the tests require a functional git installation which requires a valid HOME
   # directory.
@@ -48,9 +45,7 @@ buildPythonPackage rec {
     git init .
   '';
 
-  pythonImportsCheck = [
-    "pre_commit_hooks"
-  ];
+  pythonImportsCheck = [ "pre_commit_hooks" ];
 
   meta = with lib; {
     description = "Some out-of-the-box hooks for pre-commit";
diff --git a/pkgs/development/python-modules/precis-i18n/default.nix b/pkgs/development/python-modules/precis-i18n/default.nix
index 87a91743b674c..7067bd61213e4 100644
--- a/pkgs/development/python-modules/precis-i18n/default.nix
+++ b/pkgs/development/python-modules/precis-i18n/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,15 +19,13 @@ buildPythonPackage rec {
     hash = "sha256-0Z8JbakShuB8FFGl3NS8VFpHAQgr2P900HVxUafAmyU=";
   };
 
-  pythonImportsCheck = [
-    "precis_i18n"
-  ];
+  pythonImportsCheck = [ "precis_i18n" ];
 
   meta = with lib; {
     description = "Internationalized usernames and passwords";
     homepage = "https://github.com/byllyfish/precis_i18n";
     changelog = "https://github.com/byllyfish/precis_i18n/blob/v${version}/CHANGELOG.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/prefixed/default.nix b/pkgs/development/python-modules/prefixed/default.nix
index fadc4be3ff2c3..c869b7c2e04bf 100644
--- a/pkgs/development/python-modules/prefixed/default.nix
+++ b/pkgs/development/python-modules/prefixed/default.nix
@@ -1,29 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "prefixed";
-  version = "0.7.1";
+  version = "0.9.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-0QrJCs/EzBTYLBQIszCy/ahe187CIGqADUOJn4w4UmU=";
+    hash = "sha256-FkQD+p68gygLvEcF9LJDoog34WQxC05lw4zKseuv7rM=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "prefixed"
-  ];
+  pythonImportsCheck = [ "prefixed" ];
 
   meta = with lib; {
     description = "Prefixed alternative numeric library";
diff --git a/pkgs/development/python-modules/preggy/default.nix b/pkgs/development/python-modules/preggy/default.nix
index a69044eb14ec7..4281e6de0edfd 100644
--- a/pkgs/development/python-modules/preggy/default.nix
+++ b/pkgs/development/python-modules/preggy/default.nix
@@ -1,22 +1,28 @@
-{ lib, buildPythonPackage, fetchPypi, six, unidecode, nose, yanc }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  unidecode,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "preggy";
   version = "1.4.4";
   format = "setuptools";
 
-  propagatedBuildInputs = [ six unidecode ];
-  nativeCheckInputs = [ nose yanc ];
+  propagatedBuildInputs = [
+    six
+    unidecode
+  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "25ba803afde4f35ef543a60915ced2e634926235064df717c3cb3e4e3eb4670c";
   };
 
-  checkPhase = ''
-    nosetests .
-  '';
-
   meta = with lib; {
     description = "Assertion library for Python";
     homepage = "http://heynemann.github.io/preggy/";
diff --git a/pkgs/development/python-modules/premailer/default.nix b/pkgs/development/python-modules/premailer/default.nix
index 2143ad2edc2a8..dd6eec493338a 100644
--- a/pkgs/development/python-modules/premailer/default.nix
+++ b/pkgs/development/python-modules/premailer/default.nix
@@ -1,5 +1,15 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27,
-  cssselect, cssutils, lxml, mock, nose, requests, cachetools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  cssselect,
+  cssutils,
+  lxml,
+  mock,
+  nose,
+  requests,
+  cachetools,
 }:
 
 buildPythonPackage rec {
@@ -13,11 +23,20 @@ buildPythonPackage rec {
     sha256 = "d1875a8411f5dc92b53ef9f193db6c0f879dc378d618e0ad292723e388bfe4c2";
   };
 
-  buildInputs = [ mock nose ];
-  propagatedBuildInputs = [ cachetools cssselect cssutils lxml requests ];
+  buildInputs = [
+    mock
+    nose
+  ];
+  propagatedBuildInputs = [
+    cachetools
+    cssselect
+    cssutils
+    lxml
+    requests
+  ];
 
   meta = {
-    description = "Turns CSS blocks into style attributes ";
+    description = "Turns CSS blocks into style attributes";
     homepage = "https://github.com/peterbe/premailer";
     license = lib.licenses.bsd3;
   };
diff --git a/pkgs/development/python-modules/preprocess-cancellation/default.nix b/pkgs/development/python-modules/preprocess-cancellation/default.nix
index 22d3936b248e4..7294e7808e57b 100644
--- a/pkgs/development/python-modules/preprocess-cancellation/default.nix
+++ b/pkgs/development/python-modules/preprocess-cancellation/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, setuptools
-, shapely
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  setuptools,
+  shapely,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -40,13 +41,9 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  propagatedBuildInputs = [
-    shapely
-  ];
+  propagatedBuildInputs = [ shapely ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "preprocess_cancellation" ];
 
diff --git a/pkgs/development/python-modules/preshed/default.nix b/pkgs/development/python-modules/preshed/default.nix
index 2314555fcb588..1ca058038fbfa 100644
--- a/pkgs/development/python-modules/preshed/default.nix
+++ b/pkgs/development/python-modules/preshed/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, cymem
-, cython
-, python
-, fetchPypi
-, murmurhash
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  cymem,
+  cython,
+  fetchPypi,
+  murmurhash,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,25 +21,19 @@ buildPythonPackage rec {
     hash = "sha256-chhjxSRP/NJlGtCSiVGix8d7EC9OEaJRrYXTfudiFmA=";
   };
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
   propagatedBuildInputs = [
     cymem
     murmurhash
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Tests have import issues with 3.0.8
   doCheck = false;
 
-  pythonImportsCheck = [
-    "preshed"
-  ];
+  pythonImportsCheck = [ "preshed" ];
 
   # don't update to 4.0.0, version was yanked
   passthru.skipBulkUpdate = true;
@@ -48,6 +42,6 @@ buildPythonPackage rec {
     description = "Cython hash tables that assume keys are pre-hashed";
     homepage = "https://github.com/explosion/preshed";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pretend/default.nix b/pkgs/development/python-modules/pretend/default.nix
index 231b953923e4d..f35fcb5e9c872 100644
--- a/pkgs/development/python-modules/pretend/default.nix
+++ b/pkgs/development/python-modules/pretend/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,18 +20,14 @@ buildPythonPackage rec {
     hash = "sha256-OqMfeIMFNBBLq6ejR3uOCIHZ9aA4zew7iefVlAsy1JQ=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pretend"
-  ];
+  pythonImportsCheck = [ "pretend" ];
 
   meta = with lib; {
     description = "Module for stubbing";
     homepage = "https://github.com/alex/pretend";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pretty-errors/default.nix b/pkgs/development/python-modules/pretty-errors/default.nix
new file mode 100644
index 0000000000000..64e769b8ddd94
--- /dev/null
+++ b/pkgs/development/python-modules/pretty-errors/default.nix
@@ -0,0 +1,39 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  wheel,
+  colorama,
+}:
+
+buildPythonPackage rec {
+  pname = "pretty-errors";
+  version = "1.2.25";
+  pyproject = true;
+
+  src = fetchPypi {
+    pname = "pretty_errors";
+    inherit version;
+    hash = "sha256-oWulx1LIfCY7+S+LS1hiTjseKScak5H1ZPErhuk8Z1U=";
+  };
+
+  build-system = [
+    setuptools
+    wheel
+  ];
+
+  dependencies = [ colorama ];
+
+  pythonImportsCheck = [ "pretty_errors" ];
+
+  # No test
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Prettifies Python exception output to make it legible";
+    homepage = "https://pypi.org/project/pretty-errors/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/pkgs/development/python-modules/prettytable/default.nix b/pkgs/development/python-modules/prettytable/default.nix
index 91d2d5a427a71..53143aa47fbf6 100644
--- a/pkgs/development/python-modules/prettytable/default.nix
+++ b/pkgs/development/python-modules/prettytable/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatch-vcs
-, hatchling
-, pytest-lazy-fixture
-, pytestCheckHook
-, pythonOlder
-, wcwidth
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatch-vcs,
+  hatchling,
+  pytest-lazy-fixtures,
+  pytestCheckHook,
+  pythonOlder,
+  wcwidth,
 }:
 
 buildPythonPackage rec {
   pname = "prettytable";
-  version = "3.9.0";
+  version = "3.10.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -20,7 +21,7 @@ buildPythonPackage rec {
     owner = "jazzband";
     repo = "prettytable";
     rev = "refs/tags/${version}";
-    hash= "sha256-yIO4eO2VdOnUt9qoNQOeq/c0os2LQ3mqAkCOIuoGpyg=";
+    hash = "sha256-S23nUCA2WTxnCKKKFrtN9HYjP0SHUBPPsVNAc4SYlVg=";
   };
 
   nativeBuildInputs = [
@@ -28,25 +29,20 @@ buildPythonPackage rec {
     hatchling
   ];
 
-  propagatedBuildInputs = [
-    wcwidth
-  ];
+  propagatedBuildInputs = [ wcwidth ];
 
   nativeCheckInputs = [
-    pytest-lazy-fixture
+    pytest-lazy-fixtures
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "prettytable"
-  ];
+  pythonImportsCheck = [ "prettytable" ];
 
   meta = with lib; {
     description = "Display tabular data in a visually appealing ASCII table format";
     homepage = "https://github.com/jazzband/prettytable";
     changelog = "https://github.com/jazzband/prettytable/releases/tag/${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/primecountpy/default.nix b/pkgs/development/python-modules/primecountpy/default.nix
index 463a0cf50be64..1d9a31791e237 100644
--- a/pkgs/development/python-modules/primecountpy/default.nix
+++ b/pkgs/development/python-modules/primecountpy/default.nix
@@ -1,9 +1,13 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, primecount
-, cython
-, cysignals
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  primecount,
+  cython,
+  cysignals,
+
+  # Reverse dependency
+  sage,
 }:
 
 buildPythonPackage rec {
@@ -18,13 +22,20 @@ buildPythonPackage rec {
 
   buildInputs = [ primecount ];
 
-  propagatedBuildInputs = [ cython cysignals ];
+  propagatedBuildInputs = [
+    cython
+    cysignals
+  ];
 
   # depends on pytest-cython for "pytest --doctest-cython"
   doCheck = false;
 
   pythonImportsCheck = [ "primecountpy" ];
 
+  passthru.tests = {
+    inherit sage;
+  };
+
   meta = with lib; {
     description = "Cython interface for C++ primecount library";
     homepage = "https://github.com/dimpase/primecountpy/";
diff --git a/pkgs/development/python-modules/primepy/default.nix b/pkgs/development/python-modules/primepy/default.nix
index 583aa3919dcf0..f8c7dff7b9eb4 100644
--- a/pkgs/development/python-modules/primepy/default.nix
+++ b/pkgs/development/python-modules/primepy/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/primer3/default.nix b/pkgs/development/python-modules/primer3/default.nix
index 78d43a08b4acd..83f57c4a70e32 100644
--- a/pkgs/development/python-modules/primer3/default.nix
+++ b/pkgs/development/python-modules/primer3/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, cython
-, gcc
-, click
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cython,
+  gcc,
+  click,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
   nativeBuildInputs = [
     cython
     setuptools
-  ] ++ lib.optionals stdenv.isDarwin [
-    gcc
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ gcc ];
 
   nativeCheckInputs = [
     click
@@ -44,9 +43,7 @@ buildPythonPackage rec {
     python setup.py build_ext --inplace
   '';
 
-  pythonImportsCheck = [
-    "primer3"
-  ];
+  pythonImportsCheck = [ "primer3" ];
 
   meta = with lib; {
     description = "Oligo analysis and primer design";
diff --git a/pkgs/development/python-modules/print-color/default.nix b/pkgs/development/python-modules/print-color/default.nix
new file mode 100644
index 0000000000000..605f89e51bcd4
--- /dev/null
+++ b/pkgs/development/python-modules/print-color/default.nix
@@ -0,0 +1,40 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "print-color";
+  version = "0.4.6";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "xy3";
+    repo = "print-color";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-PHPbzzWG7smEsoTFYFT2tgXfCxUYjevpB9rxG2bZVy4=";
+  };
+
+  build-system = [ poetry-core ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "print_color" ];
+
+  meta = with lib; {
+    description = "Module to print color messages in the terminal";
+    homepage = "https://github.com/xy3/print-color";
+    changelog = "https://github.com/xy3/print-color/releases/tag/v${version}";
+    license = with licenses; [
+      asl20
+      mit
+    ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/priority/default.nix b/pkgs/development/python-modules/priority/default.nix
index 8f12f7f2144e4..5ba1bd0113127 100644
--- a/pkgs/development/python-modules/priority/default.nix
+++ b/pkgs/development/python-modules/priority/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, hypothesis
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  hypothesis,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     sha256 = "c965d54f1b8d0d0b19479db3924c7c36cf672dbf2aec92d43fbdaf4492ba18c0";
   };
 
-  pythonImportsCheck = [
-     "priority"
-  ];
+  pythonImportsCheck = [ "priority" ];
 
   nativeCheckInputs = [
     hypothesis
@@ -27,7 +26,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A pure-Python implementation of the HTTP/2 priority tree";
+    description = "Pure-Python implementation of the HTTP/2 priority tree";
     homepage = "https://github.com/python-hyper/priority/";
     license = licenses.mit;
     maintainers = with maintainers; [ qyliss ];
diff --git a/pkgs/development/python-modules/prisma/default.nix b/pkgs/development/python-modules/prisma/default.nix
index 6f7c79715618e..db89649a6a633 100644
--- a/pkgs/development/python-modules/prisma/default.nix
+++ b/pkgs/development/python-modules/prisma/default.nix
@@ -1,23 +1,23 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, httpx
-, jinja2
-, nodeenv
-, pydantic
-, pytestCheckHook
-, python-dotenv
-, pythonOlder
-, setuptools
-, strenum
-, tomlkit
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  httpx,
+  jinja2,
+  nodeenv,
+  pydantic,
+  python-dotenv,
+  pythonOlder,
+  setuptools,
+  strenum,
+  tomlkit,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "prisma";
-  version = "0.13.1";
+  version = "0.15.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,12 +26,10 @@ buildPythonPackage rec {
     owner = "RobertCraigie";
     repo = "prisma-client-py";
     rev = "refs/tags/v${version}";
-    hash = "sha256-7pibexiFsyrwC6rVv0CGHRbQU4G3rOXVhQW/7c/vKJA=";
+    hash = "sha256-F+Up1HHslralt3NvZZ/wT+CKvzKOjhEEuMEeT0L6NZM=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     click
@@ -42,16 +40,12 @@ buildPythonPackage rec {
     python-dotenv
     tomlkit
     typing-extensions
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    strenum
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ strenum ];
 
   # Building the client requires network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "prisma"
-  ];
+  pythonImportsCheck = [ "prisma" ];
 
   meta = with lib; {
     description = "Auto-generated and fully type-safe database client for prisma";
diff --git a/pkgs/development/python-modules/prison/default.nix b/pkgs/development/python-modules/prison/default.nix
index e85ca0f7eb600..5abb41f269103 100644
--- a/pkgs/development/python-modules/prison/default.nix
+++ b/pkgs/development/python-modules/prison/default.nix
@@ -1,14 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, six
-, nose
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  six,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "prison";
   version = "0.1.3";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "betodealmeida";
@@ -17,13 +19,11 @@ buildPythonPackage rec {
     hash = "sha256-qor40vUQeTdlO3vwug3GGNX5vkNaF0H7EWlRdsY4bvc=";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    nose
-  ];
+  dependencies = [ six ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Rison encoder/decoder";
diff --git a/pkgs/development/python-modules/private-gpt/default.nix b/pkgs/development/python-modules/private-gpt/default.nix
new file mode 100644
index 0000000000000..4642f2dd32214
--- /dev/null
+++ b/pkgs/development/python-modules/private-gpt/default.nix
@@ -0,0 +1,108 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchurl,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  docx2txt,
+  fastapi,
+  injector,
+  llama-index-core,
+  llama-index-readers-file,
+  python-multipart,
+  pyyaml,
+  transformers,
+  uvicorn,
+  watchdog,
+
+  # optional-dependencies
+  python,
+  huggingface-hub,
+  gradio,
+
+  # tests
+  nixosTests,
+}:
+
+buildPythonPackage rec {
+  pname = "private-gpt";
+  version = "0.6.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "zylon-ai";
+    repo = "private-gpt";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-IYTysU3W/NrtBuLe3ZJkztVSK+gzjkGIg0qcBYzB3bs=";
+  };
+
+  build-system = [ poetry-core ];
+
+  pythonRelaxDeps = [
+    "cryptography"
+    "fastapi"
+    "llama-index-core"
+    "llama-index-readers-file"
+  ];
+
+  dependencies = [
+    docx2txt
+    fastapi
+    injector
+    llama-index-core
+    llama-index-readers-file
+    python-multipart
+    pyyaml
+    transformers
+    uvicorn
+    watchdog
+  ] ++ lib.flatten (builtins.attrValues optional-dependencies);
+
+  # This is needed for running the tests and the service in offline mode,
+  # See related issue at https://github.com/zylon-ai/private-gpt/issues/1870
+  passthru.cl100k_base.tiktoken = fetchurl {
+    url = "https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken";
+    hash = "sha256-Ijkht27pm96ZW3/3OFE+7xAPtR0YyTWXoRO8/+hlsqc=";
+  };
+
+  optional-dependencies = with python.pkgs; {
+    embeddings-huggingface = [
+      huggingface-hub
+      llama-index-embeddings-huggingface
+    ];
+    embeddings-ollama = [ llama-index-embeddings-ollama ];
+    embeddings-openai = [ llama-index-embeddings-openai ];
+    embeddings-sagemaker = [ boto3 ];
+    llms-ollama = [ llama-index-llms-ollama ];
+    llms-openai = [ llama-index-llms-openai ];
+    llms-openai-like = [ llama-index-llms-openai-like ];
+    llms-sagemaker = [ boto3 ];
+    ui = [ gradio ];
+    vector-stores-chroma = [ llama-index-vector-stores-chroma ];
+    vector-stores-postgres = [ llama-index-vector-stores-postgres ];
+    vector-stores-qdrant = [ llama-index-vector-stores-qdrant ];
+  };
+
+  postInstall = ''
+    cp settings*.yaml $out/${python.sitePackages}/private_gpt/
+  '';
+
+  pythonImportsCheck = [ "private_gpt" ];
+
+  passthru.tests = {
+    inherit (nixosTests) private-gpt;
+  };
+
+  meta = {
+    changelog = "https://github.com/zylon-ai/private-gpt/blob/${src.rev}/CHANGELOG.md";
+    description = "Interact with your documents using the power of GPT, 100% privately, no data leaks";
+    homepage = "https://github.com/zylon-ai/private-gpt";
+    license = lib.licenses.asl20;
+    mainProgram = "private-gpt";
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/pkgs/development/python-modules/proboscis/default.nix b/pkgs/development/python-modules/proboscis/default.nix
deleted file mode 100644
index f6285605c3998..0000000000000
--- a/pkgs/development/python-modules/proboscis/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, nose }:
-
-buildPythonPackage rec {
-  pname = "proboscis";
-  version = "1.2.6.0";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "b822b243a7c82030fce0de97bdc432345941306d2c24ef227ca561dd019cd238";
-  };
-
-  propagatedBuildInputs = [ nose ];
-  doCheck = false;
-
-  meta = with lib; {
-    description = "A Python test framework that extends Python's built-in unittest module and Nose with features from TestNG";
-    homepage = "https://pypi.python.org/pypi/proboscis";
-    license = licenses.asl20;
-  };
-}
diff --git a/pkgs/development/python-modules/process-tests/default.nix b/pkgs/development/python-modules/process-tests/default.nix
index acffc0dca510d..3f557c8de242d 100644
--- a/pkgs/development/python-modules/process-tests/default.nix
+++ b/pkgs/development/python-modules/process-tests/default.nix
@@ -1,7 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -14,10 +16,16 @@ buildPythonPackage rec {
     hash = "sha256-5dV96nFhJR6RytuEvz7MhSdfsSH9R45Xn4AHd7HUJL0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
+  patches = [
+    (fetchpatch {
+      # Add optional ignore_case param to wait_for_strings
+      url = "https://github.com/ionelmc/python-process-tests/commit/236c3e83722a36eddb4abb111a2fcceb49cc9ab7.patch";
+      hash = "sha256-LbLaDXHbywvsq++lklNiLw8u0USuiEpuxzpNMhXBWtE=";
+    })
   ];
 
+  nativeBuildInputs = [ setuptools ];
+
   # No tests
   doCheck = false;
 
@@ -26,5 +34,4 @@ buildPythonPackage rec {
     license = licenses.bsd2;
     homepage = "https://github.com/ionelmc/python-process-tests";
   };
-
 }
diff --git a/pkgs/development/python-modules/procmon-parser/default.nix b/pkgs/development/python-modules/procmon-parser/default.nix
index b45d72f3d07d8..963f7ff9d358d 100644
--- a/pkgs/development/python-modules/procmon-parser/default.nix
+++ b/pkgs/development/python-modules/procmon-parser/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, construct
-, fetchFromGitHub
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  construct,
+  fetchFromGitHub,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     python-dateutil
   ];
 
-  pythonImportsCheck = [
-    "procmon_parser"
-  ];
+  pythonImportsCheck = [ "procmon_parser" ];
 
   meta = with lib; {
     description = "Parser to process monitor file formats";
diff --git a/pkgs/development/python-modules/prodict/default.nix b/pkgs/development/python-modules/prodict/default.nix
index b793c27729853..fdee36a3c615f 100644
--- a/pkgs/development/python-modules/prodict/default.nix
+++ b/pkgs/development/python-modules/prodict/default.nix
@@ -1,12 +1,13 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, lib
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  lib,
 }:
 
 buildPythonPackage rec {
-  pname   = "prodict";
+  pname = "prodict";
   version = "0.8.6";
   format = "setuptools";
   disabled = pythonOlder "3.7";
@@ -21,9 +22,7 @@ buildPythonPackage rec {
   # make setuptools happy on case-sensitive filesystems
   postPatch = ''if [[ ! -f README.md ]]; then mv README.MD README.md; fi'';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "prodict" ];
 
diff --git a/pkgs/development/python-modules/proglog/default.nix b/pkgs/development/python-modules/proglog/default.nix
index b8e327e91c48b..ebb674d14bda9 100644
--- a/pkgs/development/python-modules/proglog/default.nix
+++ b/pkgs/development/python-modules/proglog/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchPypi, buildPythonPackage, tqdm }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  tqdm,
+}:
 
 buildPythonPackage rec {
   pname = "proglog";
diff --git a/pkgs/development/python-modules/progress/default.nix b/pkgs/development/python-modules/progress/default.nix
index 51c707bdde91d..20c2954a10f70 100644
--- a/pkgs/development/python-modules/progress/default.nix
+++ b/pkgs/development/python-modules/progress/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/progressbar/default.nix b/pkgs/development/python-modules/progressbar/default.nix
index 2a8f85893a52d..beae027d52d46 100644
--- a/pkgs/development/python-modules/progressbar/default.nix
+++ b/pkgs/development/python-modules/progressbar/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "progressbar";
diff --git a/pkgs/development/python-modules/progressbar2/default.nix b/pkgs/development/python-modules/progressbar2/default.nix
index 082cff10b8a8a..314f55047593f 100644
--- a/pkgs/development/python-modules/progressbar2/default.nix
+++ b/pkgs/development/python-modules/progressbar2/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, dill
-, freezegun
-, pytestCheckHook
-, python-utils
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  dill,
+  freezegun,
+  pytestCheckHook,
+  python-utils,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    python-utils
-  ];
+  propagatedBuildInputs = [ python-utils ];
 
   nativeCheckInputs = [
     dill
@@ -41,9 +40,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "progressbar"
-  ];
+  pythonImportsCheck = [ "progressbar" ];
 
   meta = with lib; {
     description = "Text progressbar library";
diff --git a/pkgs/development/python-modules/progressbar33/default.nix b/pkgs/development/python-modules/progressbar33/default.nix
index 4ed2e42eb161f..ba11ecd893ded 100644
--- a/pkgs/development/python-modules/progressbar33/default.nix
+++ b/pkgs/development/python-modules/progressbar33/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "progressbar33";
diff --git a/pkgs/development/python-modules/prometheus-api-client/default.nix b/pkgs/development/python-modules/prometheus-api-client/default.nix
index 842b4c0b22ab0..27b3df9700a48 100644
--- a/pkgs/development/python-modules/prometheus-api-client/default.nix
+++ b/pkgs/development/python-modules/prometheus-api-client/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, dateparser
-, httmock
-, matplotlib
-, numpy
-, pandas
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  dateparser,
+  httmock,
+  matplotlib,
+  numpy,
+  pandas,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -30,25 +31,16 @@ buildPythonPackage rec {
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  checkInputs = [
-    httmock
-  ];
+  checkInputs = [ httmock ];
 
-  disabledTestPaths = [
-    "tests/test_prometheus_connect.py"
-  ];
-
-  pythonImportsCheck = [
-    "prometheus_api_client"
-  ];
+  disabledTestPaths = [ "tests/test_prometheus_connect.py" ];
 
+  pythonImportsCheck = [ "prometheus_api_client" ];
 
   meta = with lib; {
-    description = "A Python wrapper for the Prometheus HTTP API";
+    description = "Python wrapper for the Prometheus HTTP API";
     longDescription = ''
       The prometheus-api-client library consists of multiple modules which
       assist in connecting to a Prometheus host, fetching the required metrics
diff --git a/pkgs/development/python-modules/prometheus-async/default.nix b/pkgs/development/python-modules/prometheus-async/default.nix
new file mode 100644
index 0000000000000..95d2277697d6e
--- /dev/null
+++ b/pkgs/development/python-modules/prometheus-async/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+
+, flit-core
+
+, prometheus-client
+, typing-extensions
+, wrapt
+, aiohttp
+, twisted
+
+, pytestCheckHook
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "prometheus-async";
+  version = "22.1.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "hynek";
+    repo = "prometheus-async";
+    rev = version;
+    hash = "sha256-2C4qr0gLYHndd49UfjtuF/v05Hl2PuyegPUhCAmd5/E=";
+  };
+
+  nativeBuildInputs = [
+    flit-core
+  ];
+
+  propagatedBuildInputs = [
+    prometheus-client
+    typing-extensions
+    wrapt
+  ];
+
+  passthru.optional-dependencies = {
+    aiohttp = [
+      aiohttp
+    ];
+    consul = [
+      aiohttp
+    ];
+    twisted = [
+      twisted
+    ];
+  };
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-asyncio
+  ];
+
+  pythonImportsCheck = [ "prometheus_async" ];
+
+  meta = with lib; {
+    description = "Async helpers for prometheus_client";
+    homepage = "https://github.com/hynek/prometheus-async";
+    changelog = "https://github.com/hynek/prometheus-async/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ mbalatsko ];
+  };
+}
diff --git a/pkgs/development/python-modules/prometheus-client/default.nix b/pkgs/development/python-modules/prometheus-client/default.nix
index e81613a7062be..9f0704d7a3d0b 100644
--- a/pkgs/development/python-modules/prometheus-client/default.nix
+++ b/pkgs/development/python-modules/prometheus-client/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, twisted
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  twisted,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,30 +22,21 @@ buildPythonPackage rec {
     hash = "sha256-IMw0mpOUzjXBy4bMTeSFMc5pdibI5lGxZHKiufjPLbM=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  optional-dependencies.twisted = [
-    twisted
-  ];
+  optional-dependencies.twisted = [ twisted ];
 
   __darwinAllowLocalNetworking = true;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ]
-  ++ lib.flatten (lib.attrValues optional-dependencies);
+  nativeCheckInputs = [ pytestCheckHook ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
-  pythonImportsCheck = [
-    "prometheus_client"
-  ];
+  pythonImportsCheck = [ "prometheus_client" ];
 
   meta = with lib; {
     description = "Prometheus instrumentation library for Python applications";
     homepage = "https://github.com/prometheus/client_python";
     changelog = "https://github.com/prometheus/client_python/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/prometheus-fastapi-instrumentator/default.nix b/pkgs/development/python-modules/prometheus-fastapi-instrumentator/default.nix
new file mode 100644
index 0000000000000..9ec29ff80bca1
--- /dev/null
+++ b/pkgs/development/python-modules/prometheus-fastapi-instrumentator/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, pytestCheckHook
+, devtools
+, fastapi
+, httpx
+, poetry-core
+, prometheus-client
+, requests
+, starlette
+}:
+
+buildPythonPackage rec {
+  pname = "prometheus-fastapi-instrumentator";
+  version = "7.0.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "trallnag";
+    repo = "prometheus-fastapi-instrumentator";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-yvKdhQdbY0+jEc8TEHNNgtdnqE0abnd4MN/JZFQwQ2E=";
+  };
+
+  build-system = [
+    poetry-core
+  ];
+
+  dependencies = [
+    prometheus-client
+    starlette
+  ];
+
+  nativeCheckInputs = [
+    devtools
+    fastapi
+    httpx
+    pytestCheckHook
+    requests
+  ];
+
+  pythonImportsCheck = [ "prometheus_fastapi_instrumentator" ];
+
+  meta = {
+    description = "Instrument FastAPI with Prometheus metrics";
+    homepage = "https://github.com/trallnag/prometheus-fastapi-instrumentator";
+    changelog = "https://github.com/trallnag/prometheus-fastapi-instrumentator/blob/${src.rev}/CHANGELOG.md";
+    license = with lib.licenses; [ isc bsd3 ];
+    maintainers = with lib.maintainers; [ bcdarwin ];
+    platforms = lib.platforms.linux;  # numerous test failures on Darwin
+  };
+}
diff --git a/pkgs/development/python-modules/prometheus-flask-exporter/default.nix b/pkgs/development/python-modules/prometheus-flask-exporter/default.nix
index b2acd8e5bbdd8..2aa6ce30ebe4e 100644
--- a/pkgs/development/python-modules/prometheus-flask-exporter/default.nix
+++ b/pkgs/development/python-modules/prometheus-flask-exporter/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flask
-, prometheus-client
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flask,
+  prometheus-client,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,7 +19,10 @@ buildPythonPackage rec {
     hash = "sha256-GAQ80J7at8Apqu+DUMN3+rLi/lrNv5Y7w/DKpUN2iu8=";
   };
 
-  propagatedBuildInputs = [ flask prometheus-client ];
+  propagatedBuildInputs = [
+    flask
+    prometheus-client
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
   pytestFlagsArray = [ "tests/" ];
diff --git a/pkgs/development/python-modules/prometheus-pandas/default.nix b/pkgs/development/python-modules/prometheus-pandas/default.nix
index ff7cadd8f58b2..670d9c4cf5607 100644
--- a/pkgs/development/python-modules/prometheus-pandas/default.nix
+++ b/pkgs/development/python-modules/prometheus-pandas/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, numpy
-, pandas
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  numpy,
+  pandas,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-1eaTmNui3cAisKEhBMEpOv+UndJZwb4GGK2M76xiy7k=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     numpy
@@ -28,9 +27,7 @@ buildPythonPackage rec {
   # There are no tests. :(
   doCheck = false;
 
-  pythonImportsCheck = [
-    "prometheus_pandas"
-  ];
+  pythonImportsCheck = [ "prometheus_pandas" ];
 
   meta = with lib; {
     homepage = "https://github.com/dcoles/prometheus-pandas";
diff --git a/pkgs/development/python-modules/prometrix/default.nix b/pkgs/development/python-modules/prometrix/default.nix
index 58b3ac27361e3..52e0621136c7e 100644
--- a/pkgs/development/python-modules/prometrix/default.nix
+++ b/pkgs/development/python-modules/prometrix/default.nix
@@ -1,36 +1,41 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, boto3
-, botocore
-, dateparser
-, matplotlib
-, numpy
-, pandas
-, poetry-core
-, prometheus-api-client
-, pydantic_1
-, requests
+{
+  lib,
+  boto3,
+  botocore,
+  buildPythonPackage,
+  dateparser,
+  fetchFromGitHub,
+  matplotlib,
+  numpy,
+  pandas,
+  poetry-core,
+  prometheus-api-client,
+  pydantic,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "prometrix";
-  version = "unstable-2024-02-20";
-  format = "pyproject";
+  version = "0.1.18-unstable-2024-04-30";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "robusta-dev";
     repo = "prometrix";
-    rev = "ab2dad2192ed3df91c1a25446a4f54b8f2f6742f";
-    hash = "sha256-/72Qkd2BojYgiQi5rq7dVsEje7M0aQQXhenvIM7lSy4=";
+    # https://github.com/robusta-dev/prometrix/issues/19
+    rev = "35128847d46016b88455e0a98f0eeec08d042107";
+    hash = "sha256-g8ZqgL9ETVwpKLMQS7s7A4GpSGfaFEDLOr8JBvFl2C4=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail 'pydantic = "^1.8.1"' 'pydantic = "*"'
-  '';
+  pythonRelaxDeps = [
+    "pydantic"
+    "urllib3"
+  ];
+
+  build-system = [ poetry-core ];
+
 
-  propagatedBuildInputs = [
+  dependencies = [
     boto3
     botocore
     dateparser
@@ -38,17 +43,15 @@ buildPythonPackage rec {
     numpy
     pandas
     prometheus-api-client
-    pydantic_1
+    pydantic
     requests
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  # Fixture is missing
+  # https://github.com/robusta-dev/prometrix/issues/9
+  doCheck = false;
 
-  pythonImportsCheck = [
-    "prometrix"
-  ];
+  pythonImportsCheck = [ "prometrix" ];
 
   meta = with lib; {
     description = "Unified Prometheus client";
@@ -56,7 +59,11 @@ buildPythonPackage rec {
       This Python package provides a unified Prometheus client that can be used
       to connect to and query various types of Prometheus instances.
     '';
+    homepage = "https://github.com/robusta-dev/prometrix";
     license = licenses.mit;
     maintainers = with maintainers; [ azahi ];
+    # prometheus-api-client 0.5.5 is not working
+    # https://github.com/robusta-dev/prometrix/issues/14
+    broken = versionAtLeast prometheus-api-client.version "0.5.3";
   };
 }
diff --git a/pkgs/development/python-modules/promise/default.nix b/pkgs/development/python-modules/promise/default.nix
index a9c4c416b7fcd..95abec75b9742 100644
--- a/pkgs/development/python-modules/promise/default.nix
+++ b/pkgs/development/python-modules/promise/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, mock
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  mock,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -37,9 +38,7 @@ buildPythonPackage rec {
       --replace "assert_exc.traceback[-1].path.strpath" "str(assert_exc.traceback[-1].path)"
   '';
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   nativeCheckInputs = [
     mock
@@ -47,13 +46,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTestPaths = [
-    "tests/test_benchmark.py"
-  ];
+  disabledTestPaths = [ "tests/test_benchmark.py" ];
 
-  pythonImportsCheck = [
-    "promise"
-  ];
+  pythonImportsCheck = [ "promise" ];
 
   meta = with lib; {
     description = "Ultra-performant Promise implementation in Python";
diff --git a/pkgs/development/python-modules/prompt-toolkit/1.nix b/pkgs/development/python-modules/prompt-toolkit/1.nix
index f92ceeb86fff5..b50f5ef7cd4f4 100644
--- a/pkgs/development/python-modules/prompt-toolkit/1.nix
+++ b/pkgs/development/python-modules/prompt-toolkit/1.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, docopt
-, six
-, wcwidth
-, pygments
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  docopt,
+  six,
+  wcwidth,
+  pygments,
 }:
 
 buildPythonPackage rec {
@@ -18,13 +19,16 @@ buildPythonPackage rec {
     sha256 = "dd4fca02c8069497ad931a2d09914c6b0d1b50151ce876bc15bde4c747090126";
   };
 
-  propagatedBuildInputs = [ docopt six wcwidth pygments ];
+  propagatedBuildInputs = [
+    docopt
+    six
+    wcwidth
+    pygments
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = [
-    "test_pathcompleter_can_expanduser"
-  ];
+  disabledTests = [ "test_pathcompleter_can_expanduser" ];
 
   meta = with lib; {
     description = "Python library for building powerful interactive command lines";
@@ -35,7 +39,7 @@ buildPythonPackage rec {
       with a nice interactive Python shell (called ptpython) built on top.
     '';
     homepage = "https://github.com/jonathanslenders/python-prompt-toolkit";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     license = licenses.bsd3;
   };
 }
diff --git a/pkgs/development/python-modules/prompt-toolkit/default.nix b/pkgs/development/python-modules/prompt-toolkit/default.nix
index faadc19f7a6e5..c66dd4499ee41 100644
--- a/pkgs/development/python-modules/prompt-toolkit/default.nix
+++ b/pkgs/development/python-modules/prompt-toolkit/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, six
-, wcwidth
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  six,
+  wcwidth,
 }:
 
 buildPythonPackage rec {
   pname = "prompt-toolkit";
-  version = "3.0.43";
+  version = "3.0.47";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -17,7 +18,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "prompt_toolkit";
     inherit version;
-    hash = "sha256-NSe3ryYQbLxloEC8yEg5o1ZuwbBRuwv+lTYx5wSw/30=";
+    hash = "sha256-Hhspy1gICx5p8gfIk6GnvxbRJ6XDDJ0Xolpdd3kuU2A=";
   };
 
   propagatedBuildInputs = [
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     wcwidth
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # tests/test_completion.py:206: AssertionError
@@ -35,9 +34,7 @@ buildPythonPackage rec {
     "test_pathcompleter_can_expanduser"
   ];
 
-  pythonImportsCheck = [
-    "prompt_toolkit"
-  ];
+  pythonImportsCheck = [ "prompt_toolkit" ];
 
   meta = with lib; {
     description = "Python library for building powerful interactive command lines";
@@ -50,6 +47,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/jonathanslenders/python-prompt-toolkit";
     changelog = "https://github.com/prompt-toolkit/python-prompt-toolkit/blob/${version}/CHANGELOG";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/prompthub-py/default.nix b/pkgs/development/python-modules/prompthub-py/default.nix
index 0f1fbe5427b0a..8becc3b2ac300 100644
--- a/pkgs/development/python-modules/prompthub-py/default.nix
+++ b/pkgs/development/python-modules/prompthub-py/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, pyyaml
-, requests
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  pyyaml,
+  requests,
 }:
 let
   pname = "prompthub-py";
@@ -24,9 +25,7 @@ buildPythonPackage {
 
   disabled = pythonOlder "3.8";
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     pyyaml
@@ -34,7 +33,7 @@ buildPythonPackage {
   ];
 
   meta = with lib; {
-    description = "A simple client to fetch prompts from Prompt Hub using its REST API.";
+    description = "Simple client to fetch prompts from Prompt Hub using its REST API";
     homepage = "https://github.com/deepset-ai/prompthub-py";
     changelog = "https://github.com/deepset-ai/prompthub-py/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/property-manager/default.nix b/pkgs/development/python-modules/property-manager/default.nix
index f293c2f13b355..e1eee500812eb 100644
--- a/pkgs/development/python-modules/property-manager/default.nix
+++ b/pkgs/development/python-modules/property-manager/default.nix
@@ -1,4 +1,13 @@
-{ lib, buildPythonPackage, fetchFromGitHub, humanfriendly, verboselogs, coloredlogs, pytest, pytest-cov }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  humanfriendly,
+  verboselogs,
+  coloredlogs,
+  pytest,
+  pytest-cov,
+}:
 
 buildPythonPackage rec {
   pname = "property-manager";
@@ -12,8 +21,15 @@ buildPythonPackage rec {
     sha256 = "1v7hjm7qxpgk92i477fjhpcnjgp072xgr8jrgmbrxfbsv4cvl486";
   };
 
-  propagatedBuildInputs = [ coloredlogs humanfriendly verboselogs ];
-  nativeCheckInputs = [ pytest pytest-cov ];
+  propagatedBuildInputs = [
+    coloredlogs
+    humanfriendly
+    verboselogs
+  ];
+  nativeCheckInputs = [
+    pytest
+    pytest-cov
+  ];
 
   meta = with lib; {
     description = "Useful property variants for Python programming";
diff --git a/pkgs/development/python-modules/prophet/default.nix b/pkgs/development/python-modules/prophet/default.nix
index 5c1e079612044..8f33fc7aa808d 100644
--- a/pkgs/development/python-modules/prophet/default.nix
+++ b/pkgs/development/python-modules/prophet/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
 
-, cmdstanpy
-, numpy
-, matplotlib
-, pandas
-, holidays
-, tqdm
-, importlib-resources
+  cmdstanpy,
+  numpy,
+  matplotlib,
+  pandas,
+  holidays,
+  tqdm,
+  importlib-resources,
 
-, dask
-, distributed
+  dask,
+  distributed,
 
-, pytestCheckHook
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -48,7 +49,10 @@ buildPythonPackage rec {
     importlib-resources
   ];
 
-  passthru.optional-dependencies.parallel = [ dask distributed ] ++ dask.optional-dependencies.dataframe;
+  passthru.optional-dependencies.parallel = [
+    dask
+    distributed
+  ] ++ dask.optional-dependencies.dataframe;
 
   preCheck = ''
     # use the generated files from $out for testing
@@ -62,7 +66,7 @@ buildPythonPackage rec {
 
   meta = {
     changelog = "https://github.com/facebook/prophet/releases/tag/${src.rev}";
-    description = "A tool for producing high quality forecasts for time series data that has multiple seasonality with linear or non-linear growth";
+    description = "Tool for producing high quality forecasts for time series data that has multiple seasonality with linear or non-linear growth";
     homepage = "https://facebook.github.io/prophet/";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ tomasajt ];
diff --git a/pkgs/development/python-modules/propka/default.nix b/pkgs/development/python-modules/propka/default.nix
index 2e29476774d13..e9b93b3904679 100644
--- a/pkgs/development/python-modules/propka/default.nix
+++ b/pkgs/development/python-modules/propka/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,20 +21,14 @@ buildPythonPackage rec {
     hash = "sha256-EJQqCe4WPOpqsSxxfbTjF0qETpSPYqpixpylweTCjko=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "propka"
-  ];
+  pythonImportsCheck = [ "propka" ];
 
   meta = with lib; {
-    description = "A predictor of the pKa values of ionizable groups in proteins and protein-ligand complexes based in the 3D structure";
+    description = "Predictor of the pKa values of ionizable groups in proteins and protein-ligand complexes based in the 3D structure";
     mainProgram = "propka3";
     homepage = "https://github.com/jensengroup/propka";
     changelog = "https://github.com/jensengroup/propka/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/protego/default.nix b/pkgs/development/python-modules/protego/default.nix
index bfd17d74dcbfa..bf2fb99c36afa 100644
--- a/pkgs/development/python-modules/protego/default.nix
+++ b/pkgs/development/python-modules/protego/default.nix
@@ -31,6 +31,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/scrapy/protego";
     changelog = "https://github.com/scrapy/protego/blob/${version}/CHANGELOG.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/proto-plus/default.nix b/pkgs/development/python-modules/proto-plus/default.nix
index e7997e71b7a86..df76396f68e34 100644
--- a/pkgs/development/python-modules/proto-plus/default.nix
+++ b/pkgs/development/python-modules/proto-plus/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, protobuf
-, googleapis-common-protos
-, pytestCheckHook
-, pytz
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  protobuf,
+  googleapis-common-protos,
+  pytestCheckHook,
+  pytz,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,11 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ protobuf ];
 
-  nativeCheckInputs = [ pytestCheckHook pytz googleapis-common-protos ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytz
+    googleapis-common-protos
+  ];
 
   pythonImportsCheck = [ "proto" ];
 
diff --git a/pkgs/development/python-modules/protobuf/3.nix b/pkgs/development/python-modules/protobuf/3.nix
index 9685ec88d99cf..75a697dc35b08 100644
--- a/pkgs/development/python-modules/protobuf/3.nix
+++ b/pkgs/development/python-modules/protobuf/3.nix
@@ -1,12 +1,13 @@
-{ buildPackages
-, buildPythonPackage
-, fetchpatch
-, isPyPy
-, lib
-, protobuf
-, pytestCheckHook
-, pythonAtLeast
-, tzdata
+{
+  buildPackages,
+  buildPythonPackage,
+  fetchpatch,
+  isPyPy,
+  lib,
+  protobuf,
+  pytestCheckHook,
+  pythonAtLeast,
+  tzdata,
 }:
 
 assert lib.versionAtLeast protobuf.version "3.21" -> throw "Protobuf 3.20 or older required";
@@ -61,9 +62,7 @@ buildPythonPackage {
 
   setupPyGlobalFlags = [ "--cpp_implementation" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = lib.optionals isPyPy [
     # error message differs
diff --git a/pkgs/development/python-modules/protobuf/4.nix b/pkgs/development/python-modules/protobuf/4.nix
new file mode 100644
index 0000000000000..9d10deca12a58
--- /dev/null
+++ b/pkgs/development/python-modules/protobuf/4.nix
@@ -0,0 +1,131 @@
+{
+  buildPackages,
+  buildPythonPackage,
+  fetchpatch,
+  isPyPy,
+  lib,
+  numpy,
+  protobuf,
+  pytestCheckHook,
+  pythonAtLeast,
+  substituteAll,
+  tzdata,
+}:
+
+assert lib.versionOlder protobuf.version "21" -> throw "Protobuf 21 or newer required";
+
+let
+  protobufVersionMajor = lib.versions.major protobuf.version;
+  protobufVersionMinor = lib.versions.minor protobuf.version;
+in
+buildPythonPackage {
+  inherit (protobuf) pname src;
+
+  # protobuf 21 corresponds with its python library 4.21
+  version = "4.${protobufVersionMajor}.${protobufVersionMinor}";
+  format = "setuptools";
+
+  sourceRoot = "${protobuf.src.name}/python";
+
+  patches =
+    lib.optionals (lib.versionAtLeast protobuf.version "22") [
+      # Replace the vendored abseil-cpp with nixpkgs'
+      (substituteAll {
+        src = ./use-nixpkgs-abseil-cpp.patch;
+        abseil_cpp_include_path = "${lib.getDev protobuf.abseil-cpp}/include";
+      })
+    ]
+    ++ lib.optionals (pythonAtLeast "3.11" && lib.versionOlder protobuf.version "22") [
+      (fetchpatch {
+        name = "support-python311.patch";
+        url = "https://github.com/protocolbuffers/protobuf/commit/2206b63c4649cf2e8a06b66c9191c8ef862ca519.diff";
+        stripLen = 1; # because sourceRoot above
+        hash = "sha256-3GaoEyZIhS3QONq8LEvJCH5TdO9PKnOgcQF0GlEiwFo=";
+      })
+    ];
+
+  prePatch = ''
+    if [[ "$(<../version.json)" != *'"python": "'"$version"'"'* ]]; then
+      echo "Python library version mismatch. Derivation version: $version, actual: $(<../version.json)"
+      exit 1
+    fi
+  '';
+
+  # Remove the line in setup.py that forces compiling with C++14. Upstream's
+  # CMake build has been updated to support compiling with other versions of
+  # C++, but the Python build has not. Without this, we observe compile-time
+  # errors using GCC.
+  #
+  # Fedora appears to do the same, per this comment:
+  #
+  #   https://github.com/protocolbuffers/protobuf/issues/12104#issuecomment-1542543967
+  #
+  postPatch = ''
+    sed -i "/extra_compile_args.append('-std=c++14')/d" setup.py
+
+    # The former function has been renamed into the latter in Python 3.12.
+    # Does not apply to all protobuf versions, hence --replace-warn.
+    substituteInPlace google/protobuf/internal/json_format_test.py \
+      --replace-warn assertRaisesRegexp assertRaisesRegex
+  '';
+
+  nativeBuildInputs = lib.optional isPyPy tzdata;
+
+  buildInputs = [ protobuf ];
+
+  propagatedNativeBuildInputs = [
+    # For protoc of the same version.
+    buildPackages."protobuf_${protobufVersionMajor}"
+  ];
+
+  setupPyGlobalFlags = [ "--cpp_implementation" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ] ++ lib.optionals (lib.versionAtLeast protobuf.version "22") [ numpy ];
+
+  disabledTests = lib.optionals isPyPy [
+    # error message differs
+    "testInvalidTimestamp"
+    # requires tracemalloc which pypy does not implement
+    # https://foss.heptapod.net/pypy/pypy/-/issues/3048
+    "testUnknownFieldsNoMemoryLeak"
+    # assertion is not raised for some reason
+    "testStrictUtf8Check"
+  ];
+
+  disabledTestPaths =
+    lib.optionals (lib.versionAtLeast protobuf.version "23") [
+      # The following commit (I think) added some internal test logic for Google
+      # that broke generator_test.py. There is a new proto file that setup.py is
+      # not generating into a .py file. However, adding this breaks a bunch of
+      # conflict detection in descriptor_test.py that I don't understand. So let's
+      # just disable generator_test.py for now.
+      #
+      #   https://github.com/protocolbuffers/protobuf/commit/5abab0f47e81ac085f0b2d17ec3b3a3b252a11f1
+      #
+      "google/protobuf/internal/generator_test.py"
+    ]
+    ++ lib.optionals (lib.versionAtLeast protobuf.version "25") [
+      "minimal_test.py" # ModuleNotFoundError: No module named 'google3'
+    ];
+
+  pythonImportsCheck = [
+    "google.protobuf"
+    "google.protobuf.internal._api_implementation" # Verify that --cpp_implementation worked
+  ];
+
+  passthru = {
+    inherit protobuf;
+  };
+
+  meta = with lib; {
+    description = "Protocol Buffers are Google's data interchange format";
+    homepage = "https://developers.google.com/protocol-buffers/";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ knedlsepp ];
+    # Tests are currently failing because backend is unavailable and causes tests to fail
+    # Progress tracked in https://github.com/NixOS/nixpkgs/pull/264902
+    broken = lib.versionAtLeast protobuf.version "26";
+  };
+}
diff --git a/pkgs/development/python-modules/protobuf/default.nix b/pkgs/development/python-modules/protobuf/default.nix
index 73e013d00af8c..049833dc1b09d 100644
--- a/pkgs/development/python-modules/protobuf/default.nix
+++ b/pkgs/development/python-modules/protobuf/default.nix
@@ -1,127 +1,39 @@
-{ buildPackages
-, buildPythonPackage
-, fetchpatch
-, isPyPy
-, lib
-, numpy
-, protobuf
-, pytestCheckHook
-, pythonAtLeast
-, substituteAll
-, tzdata
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  setuptools,
 }:
 
-assert lib.versionOlder protobuf.version "21" -> throw "Protobuf 21 or newer required";
+buildPythonPackage rec {
+  pname = "protobuf";
+  version = "5.28.0";
+  pyproject = true;
 
-let
-  protobufVersionMajor = lib.versions.major protobuf.version;
-  protobufVersionMinor = lib.versions.minor protobuf.version;
-in
-buildPythonPackage {
-  inherit (protobuf) pname src;
-
-  # protobuf 21 corresponds with its python library 4.21
-  version = "4.${protobufVersionMajor}.${protobufVersionMinor}";
-  format = "setuptools";
-
-  sourceRoot = "${protobuf.src.name}/python";
-
-  patches = lib.optionals (lib.versionAtLeast protobuf.version "22") [
-    # Replace the vendored abseil-cpp with nixpkgs'
-    (substituteAll {
-      src = ./use-nixpkgs-abseil-cpp.patch;
-      abseil_cpp_include_path = "${lib.getDev protobuf.abseil-cpp}/include";
-    })
-  ]
-  ++ lib.optionals (pythonAtLeast "3.11" && lib.versionOlder protobuf.version "22") [
-    (fetchpatch {
-      name = "support-python311.patch";
-      url = "https://github.com/protocolbuffers/protobuf/commit/2206b63c4649cf2e8a06b66c9191c8ef862ca519.diff";
-      stripLen = 1; # because sourceRoot above
-      hash = "sha256-3GaoEyZIhS3QONq8LEvJCH5TdO9PKnOgcQF0GlEiwFo=";
-    })
-  ];
-
-  prePatch = ''
-    if [[ "$(<../version.json)" != *'"python": "'"$version"'"'* ]]; then
-      echo "Python library version mismatch. Derivation version: $version, actual: $(<../version.json)"
-      exit 1
-    fi
-  '';
-
-  # Remove the line in setup.py that forces compiling with C++14. Upstream's
-  # CMake build has been updated to support compiling with other versions of
-  # C++, but the Python build has not. Without this, we observe compile-time
-  # errors using GCC.
-  #
-  # Fedora appears to do the same, per this comment:
-  #
-  #   https://github.com/protocolbuffers/protobuf/issues/12104#issuecomment-1542543967
-  #
-  postPatch = ''
-    sed -i "/extra_compile_args.append('-std=c++14')/d" setup.py
-
-    # The former function has been renamed into the latter in Python 3.12.
-    # Does not apply to all protobuf versions, hence --replace-warn.
-    substituteInPlace google/protobuf/internal/json_format_test.py \
-      --replace-warn assertRaisesRegexp assertRaisesRegex
-  '';
-
-  nativeBuildInputs = lib.optional isPyPy tzdata;
-
-  buildInputs = [ protobuf ];
-
-  propagatedNativeBuildInputs = [
-    # For protoc of the same version.
-    buildPackages."protobuf_${protobufVersionMajor}"
-  ];
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-3edK8Pp3T6mIkiCZkila2/uR2j+pjI9nqIr+j1o0mt0=";
+  };
 
-  setupPyGlobalFlags = [ "--cpp_implementation" ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ lib.optionals (lib.versionAtLeast protobuf.version "22") [
-    numpy
-  ];
-
-  disabledTests = lib.optionals isPyPy [
-    # error message differs
-    "testInvalidTimestamp"
-    # requires tracemalloc which pypy does not implement
-    # https://foss.heptapod.net/pypy/pypy/-/issues/3048
-    "testUnknownFieldsNoMemoryLeak"
-    # assertion is not raised for some reason
-    "testStrictUtf8Check"
-  ];
-
-  disabledTestPaths = lib.optionals (lib.versionAtLeast protobuf.version "23") [
-    # The following commit (I think) added some internal test logic for Google
-    # that broke generator_test.py. There is a new proto file that setup.py is
-    # not generating into a .py file. However, adding this breaks a bunch of
-    # conflict detection in descriptor_test.py that I don't understand. So let's
-    # just disable generator_test.py for now.
-    #
-    #   https://github.com/protocolbuffers/protobuf/commit/5abab0f47e81ac085f0b2d17ec3b3a3b252a11f1
-    #
-    "google/protobuf/internal/generator_test.py"
-  ];
+  # the pypi source archive does not ship tests
+  doCheck = false;
 
   pythonImportsCheck = [
     "google.protobuf"
-    "google.protobuf.internal._api_implementation" # Verify that --cpp_implementation worked
+    "google.protobuf.compiler"
+    "google.protobuf.internal"
+    "google.protobuf.pyext"
+    "google.protobuf.testdata"
+    "google.protobuf.util"
+    "google._upb._message"
   ];
 
-  passthru = {
-    inherit protobuf;
-  };
-
   meta = with lib; {
     description = "Protocol Buffers are Google's data interchange format";
     homepage = "https://developers.google.com/protocol-buffers/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ knedlsepp ];
-    # Tests are currently failing because backend is unavailable and causes tests to fail
-    # Progress tracked in https://github.com/NixOS/nixpkgs/pull/264902
-    broken = lib.versionAtLeast protobuf.version "25";
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/protobuf3-to-dict/default.nix b/pkgs/development/python-modules/protobuf3-to-dict/default.nix
index 4160f7760a0c4..e613c1d23eb28 100644
--- a/pkgs/development/python-modules/protobuf3-to-dict/default.nix
+++ b/pkgs/development/python-modules/protobuf3-to-dict/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, protobuf, six }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  protobuf,
+  six,
+}:
 
 buildPythonPackage rec {
   pname = "protobuf3-to-dict";
@@ -14,10 +20,13 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "protobuf_to_dict" ];
 
-  propagatedBuildInputs = [ protobuf six ];
+  propagatedBuildInputs = [
+    protobuf
+    six
+  ];
 
   meta = with lib; {
-    description = "A teeny Python library for creating Python dicts from protocol buffers and the reverse";
+    description = "Teeny Python library for creating Python dicts from protocol buffers and the reverse";
     homepage = "https://github.com/kaporzhu/protobuf-to-dict";
     license = licenses.publicDomain;
     maintainers = with maintainers; [ nequissimus ];
diff --git a/pkgs/development/python-modules/proton-client/default.nix b/pkgs/development/python-modules/proton-client/default.nix
index c8714a741a478..4e178ce26c929 100644
--- a/pkgs/development/python-modules/proton-client/default.nix
+++ b/pkgs/development/python-modules/proton-client/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, substituteAll
-, bcrypt
-, pyopenssl
-, python-gnupg
-, pytestCheckHook
-, requests
-, openssl
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  substituteAll,
+  bcrypt,
+  pyopenssl,
+  python-gnupg,
+  pytestCheckHook,
+  requests,
+  openssl,
 }:
 
 buildPythonPackage rec {
@@ -56,7 +57,7 @@ buildPythonPackage rec {
     description = "Python Proton client module";
     homepage = "https://github.com/ProtonMail/proton-python-client";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ wolfangaukang ];
+    maintainers = [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/python-modules/proton-core/default.nix b/pkgs/development/python-modules/proton-core/default.nix
index 07eb0b9fc7072..12df2934bff23 100644
--- a/pkgs/development/python-modules/proton-core/default.nix
+++ b/pkgs/development/python-modules/proton-core/default.nix
@@ -1,32 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, aiohttp
-, bcrypt
-, pyopenssl
-, python-gnupg
-, requests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  aiohttp,
+  bcrypt,
+  pyopenssl,
+  python-gnupg,
+  requests,
+  pytestCheckHook,
+  pyotp,
+  pytest-cov-stub,
 }:
 
 buildPythonPackage rec {
   pname = "proton-core";
-  version = "0.1.16";
+  version = "0.2.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "ProtonVPN";
     repo = "python-proton-core";
     rev = "refs/tags/v${version}";
-    hash = "sha256-072XuHvgWludlFwp/tqLpuAU89vzifFhwQ01FuiCoL8=";
+    hash = "sha256-IiKmtgcCSe2q3qaNuUSaC/D/vSQzVq7w8VN2Xq81+tQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     bcrypt
     aiohttp
     pyopenssl
@@ -34,15 +35,12 @@ buildPythonPackage rec {
     requests
   ];
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "--cov=proton --cov-report html --cov-report term" ""
-  '';
-
   pythonImportsCheck = [ "proton" ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
+    pyotp
   ];
 
   disabledTestPaths = [
@@ -71,6 +69,6 @@ buildPythonPackage rec {
     description = "Core logic used by the other Proton components";
     homepage = "https://github.com/ProtonVPN/python-proton-core";
     license = lib.licenses.gpl3Only;
-    maintainers = with lib.maintainers; [ wolfangaukang ];
+    maintainers = with lib.maintainers; [ sebtm ];
   };
 }
diff --git a/pkgs/development/python-modules/proton-keyring-linux-secretservice/default.nix b/pkgs/development/python-modules/proton-keyring-linux-secretservice/default.nix
index db8a0d14cdb31..4bb419d21b20d 100644
--- a/pkgs/development/python-modules/proton-keyring-linux-secretservice/default.nix
+++ b/pkgs/development/python-modules/proton-keyring-linux-secretservice/default.nix
@@ -1,9 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, proton-keyring-linux
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  proton-keyring-linux,
+  pytestCheckHook,
+  pytest-cov-stub,
 }:
 
 buildPythonPackage rec {
@@ -18,29 +20,21 @@ buildPythonPackage rec {
     hash = "sha256-IZPT2bL/1YD2TH/djwIQHUE1RRbYMTkQDacjjoqDQWo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
-
-  propagatedBuildInputs = [
-    proton-keyring-linux
-  ];
+  build-system = [ setuptools ];
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "--cov=proton.keyring_linux.secretservice --cov-report html --cov-report term" ""
-  '';
+  dependencies = [ proton-keyring-linux ];
 
   pythonImportsCheck = [ "proton.keyring_linux" ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
   ];
 
-  meta = with lib; {
+  meta = {
     description = "ProtonVPN component to access Linux's keyring secret service API";
     homepage = "https://github.com/ProtonVPN/python-proton-keyring-linux-secretservice";
-    license = licenses.gpl3Only;
-    maintainers = with maintainers; [ wolfangaukang ];
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ sebtm ];
   };
 }
diff --git a/pkgs/development/python-modules/proton-keyring-linux/default.nix b/pkgs/development/python-modules/proton-keyring-linux/default.nix
index 231a482658b37..51617e71a0f83 100644
--- a/pkgs/development/python-modules/proton-keyring-linux/default.nix
+++ b/pkgs/development/python-modules/proton-keyring-linux/default.nix
@@ -1,10 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, keyring
-, proton-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  keyring,
+  proton-core,
+  pytestCheckHook,
+  pytest-cov-stub,
 }:
 
 buildPythonPackage rec {
@@ -19,30 +21,24 @@ buildPythonPackage rec {
     hash = "sha256-c2wdbd8Hkz2hF9zYMy4/V/W6uZRItz7tWqLJqTsJoHU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     keyring
     proton-core
   ];
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "--cov=proton.keyring_linux.core --cov-report html --cov-report term" ""
-  '';
-
   pythonImportsCheck = [ "proton.keyring_linux.core" ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
   ];
 
-  meta = with lib; {
+  meta = {
     description = "ProtonVPN core component to access Linux's keyring";
     homepage = "https://github.com/ProtonVPN/python-proton-keyring-linux";
-    license = licenses.gpl3Only;
-    maintainers = with maintainers; [ wolfangaukang ];
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ sebtm ];
   };
 }
diff --git a/pkgs/development/python-modules/proton-vpn-api-core/default.nix b/pkgs/development/python-modules/proton-vpn-api-core/default.nix
index 3e602ab839de8..219dd94b31426 100644
--- a/pkgs/development/python-modules/proton-vpn-api-core/default.nix
+++ b/pkgs/development/python-modules/proton-vpn-api-core/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, proton-core
-, proton-vpn-connection
-, proton-vpn-logger
-, proton-vpn-killswitch
-, proton-vpn-session
-, sentry-sdk
-, distro
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  proton-core,
+  proton-vpn-connection,
+  proton-vpn-logger,
+  proton-vpn-killswitch,
+  proton-vpn-session,
+  sentry-sdk,
+  distro,
+  pytestCheckHook,
+  pytest-cov-stub,
 }:
 
 buildPythonPackage rec {
   pname = "proton-vpn-api-core";
-  version = "0.22.3";
+  version = "0.32.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "ProtonVPN";
     repo = "python-proton-vpn-api-core";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-BGei6tw6VTKkHmaIWa2VJfKOL5cRUbauOQ7zp1RY9Bo=";
+    rev = "v${version}";
+    hash = "sha256-n4TZkp2ZMSJ1w1wQUMsAhX8kmWu59udlsXXEhIM83mI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     distro
     proton-core
     proton-vpn-connection
@@ -38,15 +38,11 @@ buildPythonPackage rec {
     sentry-sdk
   ];
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace-fail "--cov=proton/vpn/core/ --cov-report html --cov-report term" ""
-  '';
-
   pythonImportsCheck = [ "proton.vpn.core" ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
   ];
 
   preCheck = ''
@@ -54,10 +50,21 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d)
   '';
 
-  meta = with lib; {
+  disabledTests = [
+    # Permission denied: '/run'
+    "test_ensure_configuration_file_is_created"
+    "test_ovpnconfig_with_settings"
+    "test_wireguard_config_content_generation"
+    "test_wireguard_with_non_certificate"
+    "test_ensure_generate_is_returning_expected_content"
+    "test_ensure_same_configuration_file_in_case_of_duplicate"
+    "test_ensure_configuration_file_is_deleted"
+  ];
+
+  meta = {
     description = "Acts as a facade to the other Proton VPN components, exposing a uniform API to the available Proton VPN services";
     homepage = "https://github.com/ProtonVPN/python-proton-vpn-api-core";
-    license = licenses.gpl3Only;
-    maintainers = with maintainers; [ wolfangaukang ];
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ sebtm ];
   };
 }
diff --git a/pkgs/development/python-modules/proton-vpn-connection/default.nix b/pkgs/development/python-modules/proton-vpn-connection/default.nix
index 9fb7250f10b33..7da811dc3a315 100644
--- a/pkgs/development/python-modules/proton-vpn-connection/default.nix
+++ b/pkgs/development/python-modules/proton-vpn-connection/default.nix
@@ -1,12 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, proton-core
-, proton-vpn-killswitch
-, proton-vpn-logger
-, jinja2
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  proton-core,
+  proton-vpn-killswitch,
+  proton-vpn-logger,
+  jinja2,
+  pytestCheckHook,
+  pytest-cov-stub,
 }:
 
 buildPythonPackage rec {
@@ -21,26 +23,20 @@ buildPythonPackage rec {
     hash = "sha256-Ze/te0G0tDzyZPGVVqvuJlZoHWJqJ36LnHO+Cy5nxx8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     jinja2
     proton-core
     proton-vpn-killswitch
     proton-vpn-logger
   ];
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace-fail "--cov=proton.vpn.connection --cov-report html --cov-report term" ""
-  '';
-
   pythonImportsCheck = [ "proton.vpn.connection" ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
   ];
 
   disabledTests = [
@@ -62,10 +58,10 @@ buildPythonPackage rec {
     "test_ovpnconfig_with_malformed_server_and_credentials"
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Defines the interface that VPN connection backends should implement";
     homepage = "https://github.com/ProtonVPN/python-proton-vpn-connection";
-    license = licenses.gpl3Only;
-    maintainers = with maintainers; [ wolfangaukang ];
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ sebtm ];
   };
 }
diff --git a/pkgs/development/python-modules/proton-vpn-killswitch-network-manager-wireguard/default.nix b/pkgs/development/python-modules/proton-vpn-killswitch-network-manager-wireguard/default.nix
new file mode 100644
index 0000000000000..8ff9321fc57c8
--- /dev/null
+++ b/pkgs/development/python-modules/proton-vpn-killswitch-network-manager-wireguard/default.nix
@@ -0,0 +1,67 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gobject-introspection,
+  setuptools,
+  networkmanager,
+  proton-vpn-api-core,
+  proton-vpn-killswitch,
+  proton-vpn-logger,
+  pycairo,
+  pygobject3,
+  pytestCheckHook,
+  iproute2,
+  pytest-cov-stub,
+}:
+
+buildPythonPackage rec {
+  pname = "proton-vpn-killswitch-network-manager-wireguard";
+  version = "0.1.4";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "ProtonVPN";
+    repo = "python-proton-vpn-killswitch-network-manager-wireguard";
+    rev = "v${version}";
+    hash = "sha256-4sYD2X1U066FMjrtbTb31wvkCDWAw+eXod+pi0gGsCQ=";
+  };
+
+  nativeBuildInputs = [
+    # Solves ImportError: cannot import name NM, introspection typelib not found
+    gobject-introspection
+  ];
+
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
+    # Needed here for the NM namespace
+    networkmanager
+    proton-vpn-api-core
+    proton-vpn-killswitch
+    proton-vpn-logger
+    pycairo
+    pygobject3
+  ];
+
+  postPatch = ''
+    substituteInPlace proton/vpn/killswitch/backend/linux/wireguard/killswitch_connection_handler.py \
+      --replace '/usr/sbin/ip' '${iproute2}/bin/ip'
+  '';
+
+  pythonImportsCheck = [ "proton.vpn.killswitch.backend.linux.wireguard" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-cov-stub
+  ];
+
+  meta = {
+    description = "Implementation of the proton-vpn-killswitch interface using Network Manager with wireguard-protocol";
+    homepage = "https://github.com/ProtonVPN/proton-vpn-killswitch-network-manager-wireguard";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ sebtm ];
+  };
+}
diff --git a/pkgs/development/python-modules/proton-vpn-killswitch-network-manager/default.nix b/pkgs/development/python-modules/proton-vpn-killswitch-network-manager/default.nix
index 78e9b29a29254..c8d30741930c9 100644
--- a/pkgs/development/python-modules/proton-vpn-killswitch-network-manager/default.nix
+++ b/pkgs/development/python-modules/proton-vpn-killswitch-network-manager/default.nix
@@ -1,58 +1,61 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, gobject-introspection
-, setuptools
-, networkmanager
-, proton-vpn-killswitch
-, proton-vpn-logger
-, pycairo
-, pygobject3
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gobject-introspection,
+  setuptools,
+  networkmanager,
+  proton-vpn-api-core,
+  proton-vpn-killswitch,
+  proton-vpn-logger,
+  pycairo,
+  pygobject3,
+  pytestCheckHook,
+  pytest-cov-stub,
 }:
 
 buildPythonPackage rec {
   pname = "proton-vpn-killswitch-network-manager";
-  version = "0.4.3";
+  version = "0.5.4";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "ProtonVPN";
     repo = "python-proton-vpn-killswitch-network-manager";
     rev = "refs/tags/v${version}";
-    hash = "sha256-kN41b6OZ2YXoBsmNZD3NrX4uJChSmm6DVP+5LYwiZMw=";
+    hash = "sha256-iUm+hpqgI4jG+1Cd9F6pBjodxHpq9/2ovXRT877biXQ=";
   };
 
   nativeBuildInputs = [
     # Solves ImportError: cannot import name NM, introspection typelib not found
     gobject-introspection
+  ];
+
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     # Needed here for the NM namespace
     networkmanager
+    proton-vpn-api-core
     proton-vpn-killswitch
     proton-vpn-logger
     pycairo
     pygobject3
   ];
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "--cov=proton.vpn.killswitch.backend.linux.networkmanager --cov-report=html --cov-report=term" ""
-  '';
-
   pythonImportsCheck = [ "proton.vpn.killswitch.backend.linux.networkmanager" ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Implementation of the proton-vpn-killswitch interface using Network Manager";
     homepage = "https://github.com/ProtonVPN/python-proton-vpn-killswitch-network-manager";
-    license = licenses.gpl3Only;
-    maintainers = with maintainers; [ wolfangaukang ];
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ sebtm ];
   };
 }
diff --git a/pkgs/development/python-modules/proton-vpn-killswitch/default.nix b/pkgs/development/python-modules/proton-vpn-killswitch/default.nix
index 912980453ad9c..ae83dd1e5baad 100644
--- a/pkgs/development/python-modules/proton-vpn-killswitch/default.nix
+++ b/pkgs/development/python-modules/proton-vpn-killswitch/default.nix
@@ -1,9 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, proton-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  proton-core,
+  pytestCheckHook,
+  pytest-cov-stub,
 }:
 
 buildPythonPackage rec {
@@ -18,29 +20,21 @@ buildPythonPackage rec {
     hash = "sha256-XZqjAhxgIiATJd3JcW2WWUMC1b6+cfZRhXlIPyMUFH8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
-
-  propagatedBuildInputs = [
-    proton-core
-  ];
+  build-system = [ setuptools ];
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "--cov=proton --cov-report=html --cov-report=term" ""
-  '';
+  dependencies = [ proton-core ];
 
   pythonImportsCheck = [ "proton.vpn.killswitch.interface" ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Defines the ProtonVPN kill switch interface";
     homepage = "https://github.com/ProtonVPN/python-proton-vpn-killswitch";
-    license = licenses.gpl3Only;
-    maintainers = with maintainers; [ wolfangaukang ];
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ sebtm ];
   };
 }
diff --git a/pkgs/development/python-modules/proton-vpn-logger/default.nix b/pkgs/development/python-modules/proton-vpn-logger/default.nix
index 9c581f400c738..402b6e0e49105 100644
--- a/pkgs/development/python-modules/proton-vpn-logger/default.nix
+++ b/pkgs/development/python-modules/proton-vpn-logger/default.nix
@@ -1,9 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, proton-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  proton-core,
+  pytestCheckHook,
+  pytest-cov-stub,
 }:
 
 buildPythonPackage rec {
@@ -18,23 +20,17 @@ buildPythonPackage rec {
     hash = "sha256-/LfMjyTs/EusgnKEQugsdJzqDZBvaAhbsTUVLDCRw0I=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
-    proton-core
-  ];
-
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace-fail "--cov=proton/vpn/logging/ --cov-report html --cov-report term" ""
-  '';
+  dependencies = [ proton-core ];
 
   pythonImportsCheck = [ "proton.vpn.logging" ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
   ];
 
   preCheck = ''
@@ -42,10 +38,10 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d)
   '';
 
-  meta = with lib; {
+  meta = {
     description = "General purpose logging package for the entire ProtonVPN Linux client";
     homepage = "https://github.com/ProtonVPN/python-proton-vpn-logger";
-    license = licenses.gpl3Only;
-    maintainers = with maintainers; [ wolfangaukang ];
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ sebtm ];
   };
 }
diff --git a/pkgs/development/python-modules/proton-vpn-network-manager-openvpn/default.nix b/pkgs/development/python-modules/proton-vpn-network-manager-openvpn/default.nix
index 57c2615f53fcd..25c9715e7e6be 100644
--- a/pkgs/development/python-modules/proton-vpn-network-manager-openvpn/default.nix
+++ b/pkgs/development/python-modules/proton-vpn-network-manager-openvpn/default.nix
@@ -1,51 +1,52 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, gobject-introspection
-, setuptools
-, proton-core
-, proton-vpn-network-manager
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gobject-introspection,
+  setuptools,
+  proton-core,
+  proton-vpn-network-manager,
+  pytestCheckHook,
+  pytest-cov-stub,
 }:
 
 buildPythonPackage rec {
   pname = "proton-vpn-network-manager-openvpn";
-  version = "0.0.7";
+  version = "0.1.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "ProtonVPN";
     repo = "python-proton-vpn-network-manager-openvpn";
     rev = "refs/tags/v${version}";
-    hash = "sha256-AHG4jEEv1ihpboQwz6FmNtlqCE83qyOeGzBDHQcvD6o=";
+    hash = "sha256-eDBcpuz37crfAFX6oysB4FCkSmVLyfLJ0R2L0cZgjRo=";
   };
 
   nativeBuildInputs = [
     # Solves Namespace NM not available
     gobject-introspection
+  ];
+
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     proton-core
     proton-vpn-network-manager
   ];
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "--cov=proton.vpn.backend.linux.networkmanager.protocol.openvpn --cov-report html --cov-report term" ""
-  '';
-
   pythonImportsCheck = [ "proton.vpn.backend.linux.networkmanager.protocol" ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Adds support for the OpenVPN protocol using NetworkManager";
     homepage = "https://github.com/ProtonVPN/python-proton-vpn-network-manager-openvpn";
-    license = licenses.gpl3Only;
-    maintainers = with maintainers; [ wolfangaukang ];
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ sebtm ];
   };
 }
diff --git a/pkgs/development/python-modules/proton-vpn-network-manager-wireguard/default.nix b/pkgs/development/python-modules/proton-vpn-network-manager-wireguard/default.nix
new file mode 100644
index 0000000000000..e32a4b5a1b88a
--- /dev/null
+++ b/pkgs/development/python-modules/proton-vpn-network-manager-wireguard/default.nix
@@ -0,0 +1,57 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gobject-introspection,
+  setuptools,
+  proton-core,
+  proton-vpn-killswitch-network-manager-wireguard,
+  proton-vpn-network-manager,
+  pytestCheckHook,
+  pytest-cov-stub,
+}:
+
+buildPythonPackage rec {
+  pname = "proton-vpn-network-manager-wireguard";
+  version = "0.4.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "ProtonVPN";
+    repo = "python-proton-vpn-network-manager-wireguard";
+    rev = "v${version}";
+    hash = "sha256-DZXixcm2VwXhbN4buABlkybDgXIg/mbeUVHOpdoj0Kw=";
+  };
+
+  nativeBuildInputs = [
+    # Solves Namespace NM not available
+    gobject-introspection
+  ];
+
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
+    proton-core
+    proton-vpn-killswitch-network-manager-wireguard
+    proton-vpn-network-manager
+  ];
+
+  preCheck = ''
+    # Needed for Permission denied: '/homeless-shelter'
+    export HOME=$(mktemp -d)
+  '';
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-cov-stub
+  ];
+
+  meta = {
+    description = "Adds support for the Wireguard protocol using NetworkManager";
+    homepage = "https://github.com/ProtonVPN/python-proton-vpn-network-manager-wireguard";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ sebtm ];
+  };
+}
diff --git a/pkgs/development/python-modules/proton-vpn-network-manager/default.nix b/pkgs/development/python-modules/proton-vpn-network-manager/default.nix
index 0327354e79277..fea0d2e304d00 100644
--- a/pkgs/development/python-modules/proton-vpn-network-manager/default.nix
+++ b/pkgs/development/python-modules/proton-vpn-network-manager/default.nix
@@ -1,60 +1,63 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, gobject-introspection
-, setuptools
-, networkmanager
-, proton-core
-, proton-vpn-connection
-, pycairo
-, pygobject3
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gobject-introspection,
+  setuptools,
+  networkmanager,
+  proton-core,
+  proton-vpn-api-core,
+  proton-vpn-connection,
+  pycairo,
+  pygobject3,
+  pytest-asyncio,
+  pytestCheckHook,
+  pytest-cov-stub,
 }:
 
 buildPythonPackage rec {
   pname = "proton-vpn-network-manager";
-  version = "0.4.2";
+  version = "0.5.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "ProtonVPN";
     repo = "python-proton-vpn-network-manager";
     rev = "refs/tags/v${version}";
-    hash = "sha256-zw6fzay1zCBIrouDg2EMhaxDLKIYV5TKYK5lQ3v8W6o=";
+    hash = "sha256-hTJE9sUjPMsE9d0fIA/OhoasumtfsWuFwn0aTm10PN4=";
   };
 
   nativeBuildInputs = [
     # Needed to recognize the NM namespace
     gobject-introspection
+  ];
+
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     # Needed here for the NM namespace
     networkmanager
     proton-core
+    proton-vpn-api-core
     proton-vpn-connection
     pycairo
     pygobject3
   ];
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace-fail "--cov=proton/vpn/backend/linux/networkmanager --cov-report html --cov-report term" ""
-  '';
-
   pythonImportsCheck = [ "proton.vpn.backend.linux.networkmanager" ];
 
   nativeCheckInputs = [
-    pytest-asyncio
     pytestCheckHook
+    pytest-cov-stub
+    pytest-asyncio
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Provides the necessary functionality for other ProtonVPN components to interact with NetworkManager";
     homepage = "https://github.com/ProtonVPN/python-proton-vpn-network-manager";
-    license = licenses.gpl3Only;
-    maintainers = with maintainers; [ wolfangaukang ];
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ sebtm ];
   };
 }
diff --git a/pkgs/development/python-modules/proton-vpn-session/default.nix b/pkgs/development/python-modules/proton-vpn-session/default.nix
index 6295038b6f9ee..ee27bfb9b4669 100644
--- a/pkgs/development/python-modules/proton-vpn-session/default.nix
+++ b/pkgs/development/python-modules/proton-vpn-session/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, cryptography
-, distro
-, proton-core
-, proton-vpn-logger
-, pynacl
-, aiohttp
-, pyopenssl
-, pytest-asyncio
-, requests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  cryptography,
+  distro,
+  proton-core,
+  proton-vpn-logger,
+  pynacl,
+  aiohttp,
+  pyopenssl,
+  pytest-asyncio,
+  requests,
+  pytestCheckHook,
+  pytest-cov-stub,
 }:
 
 buildPythonPackage rec {
@@ -26,11 +28,11 @@ buildPythonPackage rec {
     hash = "sha256-/5ju/2bxhqK6JWchkxFe3amBKHtO98GCVQWIrUsn+nQ=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cryptography
     distro
     proton-core
@@ -38,11 +40,6 @@ buildPythonPackage rec {
     pynacl
   ];
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace-fail "--cov=proton.vpn.session --cov-report term" ""
-  '';
-
   pythonImportsCheck = [ "proton.vpn.session" ];
 
   postInstall = ''
@@ -56,12 +53,13 @@ buildPythonPackage rec {
     pytest-asyncio
     requests
     pytestCheckHook
+    pytest-cov-stub
   ];
 
   meta = {
     description = "Provides utility classes to manage VPN sessions";
     homepage = "https://github.com/ProtonVPN/python-proton-vpn-session";
     license = lib.licenses.gpl3Only;
-    maintainers = with lib.maintainers; [ wolfangaukang ];
+    maintainers = with lib.maintainers; [ sebtm ];
   };
 }
diff --git a/pkgs/development/python-modules/protonup-ng/default.nix b/pkgs/development/python-modules/protonup-ng/default.nix
index 02695a5e3515f..8e69e1c743d3c 100644
--- a/pkgs/development/python-modules/protonup-ng/default.nix
+++ b/pkgs/development/python-modules/protonup-ng/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, pythonOlder, fetchPypi, requests, configparser }:
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  requests,
+  configparser,
+}:
 
 buildPythonPackage rec {
   pname = "protonup-ng";
@@ -16,7 +23,10 @@ buildPythonPackage rec {
       --replace "argparse" ""
   '';
 
-  propagatedBuildInputs = [ requests configparser ];
+  propagatedBuildInputs = [
+    requests
+    configparser
+  ];
 
   doCheck = false; # protonup does not have any tests
   pythonImportsCheck = [ "protonup" ];
@@ -25,7 +35,10 @@ buildPythonPackage rec {
     homepage = "https://github.com/cloudishBenne/protonup-ng";
     description = "CLI program and API to automate the installation and update of GloriousEggroll's Proton-GE";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ Madouura cafkafk ];
+    maintainers = with maintainers; [
+      Madouura
+      cafkafk
+    ];
     mainProgram = "protonup";
   };
 }
diff --git a/pkgs/development/python-modules/protonvpn-nm-lib/default.nix b/pkgs/development/python-modules/protonvpn-nm-lib/default.nix
index 7d4b65db3ddae..1f35c5aba5b6b 100644
--- a/pkgs/development/python-modules/protonvpn-nm-lib/default.nix
+++ b/pkgs/development/python-modules/protonvpn-nm-lib/default.nix
@@ -1,22 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, substituteAll
-, dbus-python
-, distro
-, jinja2
-, keyring
-, proton-client
-, pygobject3
-, pyxdg
-, systemd
-, ncurses
-, networkmanager
-, pkgs-systemd
-, python
-, xdg-utils
-, makeWrapper
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  substituteAll,
+  dbus-python,
+  distro,
+  jinja2,
+  keyring,
+  proton-client,
+  pygobject3,
+  pyxdg,
+  systemd,
+  ncurses,
+  networkmanager,
+  pkgs-systemd,
+  python,
+  xdg-utils,
 }:
 
 buildPythonPackage rec {
@@ -76,7 +76,7 @@ buildPythonPackage rec {
     mainProgram = "protonvpn_reconnector.py";
     homepage = "https://github.com/ProtonVPN/protonvpn-nm-lib";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ wolfangaukang ];
+    maintainers = [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/python-modules/prov/default.nix b/pkgs/development/python-modules/prov/default.nix
index 64e63b9c954b8..f4606cda7f48d 100644
--- a/pkgs/development/python-modules/prov/default.nix
+++ b/pkgs/development/python-modules/prov/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, lxml
-, networkx
-, python-dateutil
-, rdflib
-, pydot
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  lxml,
+  networkx,
+  python-dateutil,
+  rdflib,
+  pydot,
 }:
 
 buildPythonPackage rec {
   pname = "prov";
-  version = "2.0.0";
+  version = "2.0.1";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b6438f2195ecb9f6e8279b58971e02bc51814599b5d5383366eef91d867422ee";
+    hash = "sha256-DiOMFAXRpVxyvTmzttc9b3q/2dCn+rLsBpOhmimlYX8=";
   };
 
   propagatedBuildInputs = [
@@ -25,16 +26,12 @@ buildPythonPackage rec {
     rdflib
   ];
 
-  nativeCheckInputs = [
-    pydot
-  ];
+  nativeCheckInputs = [ pydot ];
 
   # Multiple tests are out-dated and failing
   doCheck = false;
 
-  pythonImportsCheck = [
-    "prov"
-  ];
+  pythonImportsCheck = [ "prov" ];
 
   meta = with lib; {
     description = "Python library for W3C Provenance Data Model (PROV)";
diff --git a/pkgs/development/python-modules/prox-tv/default.nix b/pkgs/development/python-modules/prox-tv/default.nix
index 67f9be4dba4ca..ee2862361081f 100644
--- a/pkgs/development/python-modules/prox-tv/default.nix
+++ b/pkgs/development/python-modules/prox-tv/default.nix
@@ -1,18 +1,20 @@
-{ lib
-, blas
-, lapack
-, buildPythonPackage
-, cffi
-, fetchFromGitHub
-, nose
-, numpy
-, stdenv
+{
+  lib,
+  blas,
+  lapack,
+  buildPythonPackage,
+  cffi,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  numpy,
+  stdenv,
 }:
 
 buildPythonPackage {
   pname = "prox-tv";
   version = "3.3.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "albarji";
@@ -21,29 +23,29 @@ buildPythonPackage {
     sha256 = "0mlrjbb5rw78dgijkr3bspmsskk6jqs9y7xpsgs35i46dvb327q5";
   };
 
-  nativeCheckInputs = [
-    nose
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
     cffi
   ];
 
-  # this test is known to fail on darwin
-  checkPhase = ''
-    nosetests --exclude=test_tvp_1d ${lib.optionalString stdenv.isDarwin " --exclude=test_tv2_1d"}
-  '';
+  buildInputs = [
+    blas
+    lapack
+  ];
 
   propagatedNativeBuildInputs = [ cffi ];
 
-  buildInputs = [ blas lapack ];
-
   enableParallelBuilding = true;
 
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  disabledTests = [ "test_tvp_1d" ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ "test_tv2_1d" ];
+
   meta = with lib; {
     homepage = "https://github.com/albarji/proxTV";
-    description = "A toolbox for fast Total Variation proximity operators";
+    description = "Toolbox for fast Total Variation proximity operators";
     license = licenses.bsd2;
     maintainers = with maintainers; [ multun ];
   };
diff --git a/pkgs/development/python-modules/proxmoxer/default.nix b/pkgs/development/python-modules/proxmoxer/default.nix
index 98063a560472b..8f3ff8621fc88 100644
--- a/pkgs/development/python-modules/proxmoxer/default.nix
+++ b/pkgs/development/python-modules/proxmoxer/default.nix
@@ -1,29 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, paramiko
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-toolbelt
-, responses
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  paramiko,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-toolbelt,
+  responses,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "proxmoxer";
-  version = "2.0.1";
-  format = "setuptools";
+  version = "2.1.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
-    owner = pname;
-    repo = pname;
+    owner = "proxmoxer";
+    repo = "proxmoxer";
     rev = "refs/tags/${version}";
-    hash = "sha256-kwD6yJhVTaVAAUVA6k4r6HZy4w+MPDF7DfJBS8wGE/c=";
+    hash = "sha256-bwNv9eBuatMAWZ/ZOoF4VUZFIYAxJDEEwGQaAwPWcHY=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     paramiko
     requests
   ];
@@ -39,10 +43,13 @@ buildPythonPackage rec {
     "tests/test_openssh.py"
   ];
 
-  pythonImportsCheck = [
-    "proxmoxer"
+  disabledTests = [
+    # Tests require openssh_wrapper which is outdated and not available
+    "test_repr_openssh"
   ];
 
+  pythonImportsCheck = [ "proxmoxer" ];
+
   meta = with lib; {
     description = "Python wrapper for Proxmox API v2";
     homepage = "https://github.com/proxmoxer/proxmoxer";
diff --git a/pkgs/development/python-modules/proxy-db/default.nix b/pkgs/development/python-modules/proxy-db/default.nix
index a4a6fef11188e..7ccfe3bb890a5 100644
--- a/pkgs/development/python-modules/proxy-db/default.nix
+++ b/pkgs/development/python-modules/proxy-db/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
-, six
-, sqlalchemy
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
+  six,
+  sqlalchemy,
 }:
 
 buildPythonPackage rec {
@@ -42,9 +43,7 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d)
   '';
 
-  pythonImportsCheck = [
-    "proxy_db"
-  ];
+  pythonImportsCheck = [ "proxy_db" ];
 
   meta = with lib; {
     description = "Module to manage proxies in a local database";
diff --git a/pkgs/development/python-modules/proxy-py/default.nix b/pkgs/development/python-modules/proxy-py/default.nix
index 72630b722bc4e..4679e894e008d 100644
--- a/pkgs/development/python-modules/proxy-py/default.nix
+++ b/pkgs/development/python-modules/proxy-py/default.nix
@@ -1,10 +1,8 @@
 {
   lib,
-  stdenv,
   bash,
   buildPythonPackage,
   fetchFromGitHub,
-  fetchpatch,
   gnumake,
   h2,
   hpack,
@@ -13,6 +11,7 @@
   openssl,
   paramiko,
   pytest-asyncio,
+  pytest-cov-stub,
   pytest-mock,
   pytest-xdist,
   pytestCheckHook,
@@ -24,7 +23,7 @@
 
 buildPythonPackage rec {
   pname = "proxy-py";
-  version = "2.4.4rc5";
+  version = "2.4.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -33,16 +32,12 @@ buildPythonPackage rec {
     owner = "abhinavsingh";
     repo = "proxy.py";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ngIskWzN6699C0WjSX/ZbHxV3Eb8ikQPNYZFzfzt7xU=";
+    hash = "sha256-pn4YYGntG9C8mhECb7PYgN5wwicdlPcZu6Xn2M3iIKA=";
   };
 
   postPatch = ''
     substituteInPlace Makefile \
     --replace "SHELL := /bin/bash" "SHELL := ${bash}/bin/bash"
-    substituteInPlace pytest.ini \
-      --replace-fail "-p pytest_cov" "" \
-      --replace-fail "--no-cov-on-fail" ""
-    sed -i "/--cov/d" pytest.ini
   '';
 
   build-system = [ setuptools-scm ];
@@ -60,6 +55,7 @@ buildPythonPackage rec {
     hyperframe
     openssl
     pytest-asyncio
+    pytest-cov-stub
     pytest-mock
     pytest-xdist
     pytestCheckHook
@@ -78,6 +74,7 @@ buildPythonPackage rec {
     "web_server"
     # Location is not writable
     "test_gen_csr"
+    "test_gen_public_key"
     # Tests run into a timeout
     "integration"
   ];
@@ -90,6 +87,5 @@ buildPythonPackage rec {
     changelog = "https://github.com/abhinavsingh/proxy.py/releases/tag/v${version}";
     license = with licenses; [ bsd3 ];
     maintainers = with maintainers; [ fab ];
-    broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/proxy-tools/default.nix b/pkgs/development/python-modules/proxy-tools/default.nix
index beb91a4333882..b7c858d052005 100644
--- a/pkgs/development/python-modules/proxy-tools/default.nix
+++ b/pkgs/development/python-modules/proxy-tools/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
     hash = "sha256-zLN1H1KcBH4tilhEDYayBTA88P6BRveE0cvNlPCigBA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # no tests in pypi
   doCheck = false;
diff --git a/pkgs/development/python-modules/psautohint/default.nix b/pkgs/development/python-modules/psautohint/default.nix
index 0702d4891cbc9..9782458b4ccb2 100644
--- a/pkgs/development/python-modules/psautohint/default.nix
+++ b/pkgs/development/python-modules/psautohint/default.nix
@@ -1,9 +1,17 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder
-, fonttools
-, lxml, fs # for fonttools extras
-, setuptools-scm
-, pytestCheckHook, pytest-cov, pytest-xdist
-, runAllTests ? false, psautohint # for passthru.tests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  fonttools,
+  lxml,
+  fs, # for fonttools extras
+  setuptools-scm,
+  pytestCheckHook,
+  pytest-cov,
+  pytest-xdist,
+  runAllTests ? false,
+  psautohint, # for passthru.tests
 }:
 
 buildPythonPackage rec {
@@ -29,7 +37,11 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [ fonttools lxml fs ];
+  propagatedBuildInputs = [
+    fonttools
+    lxml
+    fs
+  ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/pscript/default.nix b/pkgs/development/python-modules/pscript/default.nix
index 76af30e2c125d..59afdd5ea5670 100644
--- a/pkgs/development/python-modules/pscript/default.nix
+++ b/pkgs/development/python-modules/pscript/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, nodejs
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  nodejs,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     rm -rf pscript_legacy
   '';
 
-  pythonImportsCheck = [
-    "pscript"
-  ];
+  pythonImportsCheck = [ "pscript" ];
 
   meta = with lib; {
     description = "Python to JavaScript compiler";
diff --git a/pkgs/development/python-modules/psd-tools/default.nix b/pkgs/development/python-modules/psd-tools/default.nix
index d732d0ce84a40..f6ffef6ea7278 100644
--- a/pkgs/development/python-modules/psd-tools/default.nix
+++ b/pkgs/development/python-modules/psd-tools/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, attrs
-, docopt
-, pillow
-, scikit-image
-, scipy
-, numpy
-, aggdraw
-, pytestCheckHook
-, pytest-cov
-, ipython
-, cython
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  attrs,
+  docopt,
+  pillow,
+  scikit-image,
+  scipy,
+  numpy,
+  aggdraw,
+  pytestCheckHook,
+  pytest-cov,
+  ipython,
+  cython,
 }:
 
 buildPythonPackage rec {
   pname = "psd-tools";
-  version = "1.9.32";
+  version = "1.9.34";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -26,16 +27,14 @@ buildPythonPackage rec {
     owner = "psd-tools";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-H235bZOzTxmmLEFje8hhYxrN4l1S34tD1LMhsymRy9w=";
+    hash = "sha256-UFdprXoHFsbH3Tbui44n8FTdbkynnYVL1LHtFzFInio=";
   };
 
   postPatch = ''
     sed -i "/addopts =/d" pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
   propagatedBuildInputs = [
     aggdraw
@@ -53,9 +52,7 @@ buildPythonPackage rec {
     pytest-cov
   ];
 
-  pythonImportsCheck = [
-    "psd_tools"
-  ];
+  pythonImportsCheck = [ "psd_tools" ];
 
   meta = with lib; {
     description = "Python package for reading Adobe Photoshop PSD files";
diff --git a/pkgs/development/python-modules/psrpcore/default.nix b/pkgs/development/python-modules/psrpcore/default.nix
index 102d9ce9b7c0c..8003780b86c28 100644
--- a/pkgs/development/python-modules/psrpcore/default.nix
+++ b/pkgs/development/python-modules/psrpcore/default.nix
@@ -1,5 +1,6 @@
 {
   lib,
+  stdenv,
   buildPythonPackage,
   cryptography,
   fetchFromGitHub,
@@ -42,5 +43,6 @@ buildPythonPackage rec {
     changelog = "https://github.com/jborean93/psrpcore/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/psutil-home-assistant/default.nix b/pkgs/development/python-modules/psutil-home-assistant/default.nix
index 9ea18d7853b0e..40edb0b5270fd 100644
--- a/pkgs/development/python-modules/psutil-home-assistant/default.nix
+++ b/pkgs/development/python-modules/psutil-home-assistant/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, psutil
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  psutil,
+  pytestCheckHook,
 }:
 
-
 buildPythonPackage rec {
   pname = "psutil-home-assistant";
   version = "0.0.1";
@@ -18,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-6bj1aaa/JYZFVwUAJfxISRoldgTmumCG8WrlKhkb6kM=";
   };
 
-  propagatedBuildInputs = [
-    psutil
-  ];
+  propagatedBuildInputs = [ psutil ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     changelog = "https://github.com/home-assistant-libs/psutil-home-assistant/releases/tag/${version}";
diff --git a/pkgs/development/python-modules/psutil/default.nix b/pkgs/development/python-modules/psutil/default.nix
index a27bb429c7c1c..ee3f390b79af3 100644
--- a/pkgs/development/python-modules/psutil/default.nix
+++ b/pkgs/development/python-modules/psutil/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, CoreFoundation
-, fetchPypi
-, IOKit
-, pytestCheckHook
-, python
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  CoreFoundation,
+  fetchPypi,
+  IOKit,
+  pytestCheckHook,
+  python,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "psutil";
-  version = "5.9.8";
+  version = "6.0.0";
   format = "setuptools";
 
   inherit stdenv;
@@ -20,7 +21,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-a+Em4yJUht/yhqj7mgYkalJT9MfFO0depfWsk05kGUw=";
+    hash = "sha256-j6rk8xC22Wn6JsoFRTOLIfc8axXbfEqNk0pUgvqoGPI=";
   };
 
   postPatch = ''
@@ -33,19 +34,14 @@ buildPythonPackage rec {
 
   buildInputs =
     # workaround for https://github.com/NixOS/nixpkgs/issues/146760
-    lib.optionals (stdenv.isDarwin && stdenv.isx86_64) [
-      CoreFoundation
-    ] ++ lib.optionals stdenv.isDarwin [
-      IOKit
-  ];
+    lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) [ CoreFoundation ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [ IOKit ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Segfaults on darwin:
   # https://github.com/giampaolo/psutil/issues/1715
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   # In addition to the issues listed above there are some that occure due to
   # our sandboxing which we can work around by disabling some tests:
@@ -69,15 +65,13 @@ buildPythonPackage rec {
     "test_disk_partitions" # problematic on Hydra's Linux builders, apparently
   ];
 
-  pythonImportsCheck = [
-    "psutil"
-  ];
+  pythonImportsCheck = [ "psutil" ];
 
   meta = with lib; {
     description = "Process and system utilization information interface";
     homepage = "https://github.com/giampaolo/psutil";
     changelog = "https://github.com/giampaolo/psutil/blob/release-${version}/HISTORY.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/psychrolib/default.nix b/pkgs/development/python-modules/psychrolib/default.nix
index cda0523b9698a..ec8544ff2f6f4 100644
--- a/pkgs/development/python-modules/psychrolib/default.nix
+++ b/pkgs/development/python-modules/psychrolib/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,16 +22,12 @@ buildPythonPackage rec {
 
   sourceRoot = "${src.name}/src/python";
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "psychrolib"
-  ];
+  pythonImportsCheck = [ "psychrolib" ];
 
   meta = with lib; {
     description = "Library of psychrometric functions to calculate thermodynamic properties";
diff --git a/pkgs/development/python-modules/psycopg/ctypes.patch b/pkgs/development/python-modules/psycopg/ctypes.patch
index d2b0842b44b4f..98a6ba080f785 100644
--- a/pkgs/development/python-modules/psycopg/ctypes.patch
+++ b/pkgs/development/python-modules/psycopg/ctypes.patch
@@ -1,12 +1,13 @@
 diff --git a/psycopg/psycopg/pq/_pq_ctypes.py b/psycopg/psycopg/pq/_pq_ctypes.py
-index 9ca1d129..02929ab6 100644
+index f3a7b143..1bf935fb 100644
 --- a/psycopg/psycopg/pq/_pq_ctypes.py
 +++ b/psycopg/psycopg/pq/_pq_ctypes.py
-@@ -11,14 +11,10 @@ from ctypes import Structure, CFUNCTYPE, POINTER
+@@ -13,14 +13,11 @@ from ctypes import Structure, CFUNCTYPE, POINTER
  from ctypes import c_char, c_char_p, c_int, c_size_t, c_ubyte, c_uint, c_void_p
- from typing import List, Optional, Tuple
+ from typing import Any, NoReturn
  
--from .misc import find_libpq_full_path
+-from .misc import find_libpq_full_path, version_pretty
++from .misc import version_pretty
  from ..errors import NotSupportedError
  
 -libname = find_libpq_full_path()
@@ -18,22 +19,25 @@ index 9ca1d129..02929ab6 100644
  
  
  class FILE(Structure):
-@@ -28,9 +24,7 @@ class FILE(Structure):
+@@ -30,12 +27,7 @@ class FILE(Structure):
  FILE_ptr = POINTER(FILE)
  
  if sys.platform == "linux":
 -    libcname = ctypes.util.find_library("c")
--    assert libcname
+-    if not libcname:
+-        # Likely this is a system using musl libc, see the following bug:
+-        # https://github.com/python/cpython/issues/65821
+-        libcname = "libc.so"
 -    libc = ctypes.cdll.LoadLibrary(libcname)
 +    libc = ctypes.cdll.LoadLibrary("@libc@")
  
      fdopen = libc.fdopen
      fdopen.argtypes = (c_int, c_char_p)
 diff --git a/tests/fix_pq.py b/tests/fix_pq.py
-index 917dfc91..505f2d65 100644
+index 1cff7e18..218d90a0 100644
 --- a/tests/fix_pq.py
 +++ b/tests/fix_pq.py
-@@ -47,18 +47,7 @@ def pytest_runtest_setup(item):
+@@ -49,18 +49,7 @@ def pytest_runtest_setup(item):
  @pytest.fixture
  def libpq():
      """Return a ctypes wrapper to access the libpq."""
diff --git a/pkgs/development/python-modules/psycopg/default.nix b/pkgs/development/python-modules/psycopg/default.nix
index 65d9e35236206..aaaf362eab3a2 100644
--- a/pkgs/development/python-modules/psycopg/default.nix
+++ b/pkgs/development/python-modules/psycopg/default.nix
@@ -1,46 +1,47 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, fetchurl
-, pythonOlder
-, substituteAll
-
-# build
-, postgresql
-, setuptools
-
-# propagates
-, backports-zoneinfo
-, typing-extensions
-
-# psycopg-c
-, cython
-, tomli
-
-# docs
-, furo
-, shapely
-, sphinxHook
-, sphinx-autodoc-typehints
-
-# tests
-, anyio
-, pproxy
-, pytest-randomly
-, pytestCheckHook
-, postgresqlTestHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchurl,
+  pythonOlder,
+  substituteAll,
+
+  # build
+  postgresql,
+  setuptools,
+
+  # propagates
+  backports-zoneinfo,
+  typing-extensions,
+
+  # psycopg-c
+  cython,
+  tomli,
+
+  # docs
+  furo,
+  shapely,
+  sphinxHook,
+  sphinx-autodoc-typehints,
+
+  # tests
+  anyio,
+  pproxy,
+  pytest-randomly,
+  pytestCheckHook,
+  postgresqlTestHook,
 }:
 
 let
   pname = "psycopg";
-  version = "3.1.17";
+  version = "3.2.2";
 
   src = fetchFromGitHub {
     owner = "psycopg";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-Paq4Wkvv6d6+fNcvRO/yfj7OWCMygqccKIdfsohHUMM=";
+    hash = "sha256-Udysl00lB6rxmQByME6PI3KL4tlzIZ0/CZNWLVKssS8=";
   };
 
   patches = [
@@ -73,11 +74,16 @@ let
 
     nativeBuildInputs = [
       cython
+      # needed to find pg_config with strictDeps
       postgresql
       setuptools
       tomli
     ];
 
+    buildInputs = [
+      postgresql
+    ];
+
     # tested in psycopg
     doCheck = false;
 
@@ -99,9 +105,7 @@ let
       cd psycopg_pool
     '';
 
-    propagatedBuildInputs = [
-      typing-extensions
-    ];
+    propagatedBuildInputs = [ typing-extensions ];
 
     # tested in psycopg
     doCheck = false;
@@ -110,7 +114,6 @@ let
       description = "Connection Pool for Psycopg";
     };
   };
-
 in
 
 buildPythonPackage rec {
@@ -150,9 +153,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     psycopg-c
     typing-extensions
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    backports-zoneinfo
-  ];
+  ] ++ lib.optionals (pythonOlder "3.9") [ backports-zoneinfo ];
 
   pythonImportsCheck = [
     "psycopg"
@@ -165,16 +166,17 @@ buildPythonPackage rec {
     pool = [ psycopg-pool ];
   };
 
-  nativeCheckInputs = [
-    anyio
-    pproxy
-    pytest-randomly
-    pytestCheckHook
-    postgresql
-  ]
-  ++ lib.optional (stdenv.isLinux) postgresqlTestHook
-  ++ passthru.optional-dependencies.c
-  ++ passthru.optional-dependencies.pool;
+  nativeCheckInputs =
+    [
+      anyio
+      pproxy
+      pytest-randomly
+      pytestCheckHook
+      postgresql
+    ]
+    ++ lib.optional (stdenv.hostPlatform.isLinux) postgresqlTestHook
+    ++ passthru.optional-dependencies.c
+    ++ passthru.optional-dependencies.pool;
 
   env = {
     postgresqlEnableTCP = 1;
@@ -182,11 +184,13 @@ buildPythonPackage rec {
     PGDATABASE = "psycopg";
   };
 
-  preCheck = ''
-    cd ..
-  '' + lib.optionalString (stdenv.isLinux) ''
-    export PSYCOPG_TEST_DSN="host=/build/run/postgresql user=$PGUSER"
-  '';
+  preCheck =
+    ''
+      cd ..
+    ''
+    + lib.optionalString (stdenv.hostPlatform.isLinux) ''
+      export PSYCOPG_TEST_DSN="host=/build/run/postgresql user=$PGUSER"
+    '';
 
   disabledTests = [
     # don't depend on mypy for tests
@@ -204,10 +208,13 @@ buildPythonPackage rec {
   ];
 
   pytestFlagsArray = [
-    "-o" "cache_dir=$TMPDIR"
-    "-m" "'not refcount and not timing'"
+    "-o"
+    "cache_dir=$TMPDIR"
+    "-m"
+    "'not refcount and not timing'"
     # pytest.PytestRemovedIn9Warning: Marks applied to fixtures have no effect
-    "-W" "ignore::pytest.PytestRemovedIn9Warning"
+    "-W"
+    "ignore::pytest.PytestRemovedIn9Warning"
   ];
 
   postCheck = ''
diff --git a/pkgs/development/python-modules/psycopg2-binary/default.nix b/pkgs/development/python-modules/psycopg2-binary/default.nix
new file mode 100644
index 0000000000000..f0691a2c601b7
--- /dev/null
+++ b/pkgs/development/python-modules/psycopg2-binary/default.nix
@@ -0,0 +1,13 @@
+{
+  mkPythonMetaPackage,
+  psycopg2,
+}:
+mkPythonMetaPackage {
+  pname = "psycopg2-binary";
+  inherit (psycopg2) version;
+  dependencies = [ psycopg2 ];
+  optional-dependencies = psycopg2.optional-dependencies or { };
+  meta = {
+    inherit (psycopg2.meta) description homepage;
+  };
+}
diff --git a/pkgs/development/python-modules/psycopg2/default.nix b/pkgs/development/python-modules/psycopg2/default.nix
index 54d2ec7493339..aaab94547a02c 100644
--- a/pkgs/development/python-modules/psycopg2/default.nix
+++ b/pkgs/development/python-modules/psycopg2/default.nix
@@ -1,15 +1,16 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, pythonOlder
-, isPyPy
-, fetchPypi
-, postgresql
-, postgresqlTestHook
-, openssl
-, sphinxHook
-, sphinx-better-theme
-, buildPackages
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  isPyPy,
+  fetchPypi,
+  postgresql,
+  postgresqlTestHook,
+  openssl,
+  sphinxHook,
+  sphinx-better-theme,
+  buildPackages,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,10 @@ buildPythonPackage rec {
   # c.f. https://github.com/NixOS/nixpkgs/pull/104151#issuecomment-729750892
   disabled = pythonOlder "3.6" || isPyPy;
 
-  outputs = [ "out" "doc" ];
+  outputs = [
+    "out"
+    "doc"
+  ];
 
   src = fetchPypi {
     inherit pname version;
@@ -33,7 +37,7 @@ buildPythonPackage rec {
     # some linker flags are added but the linker ignores them because they're incompatible
     # https://github.com/psycopg/psycopg2/blob/89005ac5b849c6428c05660b23c5a266c96e677d/setup.py
     substituteInPlace setup.py \
-      --replace "self.pg_config_exe = self.build_ext.pg_config" 'self.pg_config_exe = "${lib.getExe' buildPackages.postgresql "pg_config"}"'
+      --replace-fail "self.pg_config_exe = self.build_ext.pg_config" 'self.pg_config_exe = "${lib.getDev buildPackages.postgresql}/bin/pg_config"'
   '';
 
   nativeBuildInputs = [
@@ -41,11 +45,7 @@ buildPythonPackage rec {
     sphinx-better-theme
   ];
 
-  buildInputs = [
-    postgresql
-  ] ++ lib.optionals stdenv.isDarwin [
-    openssl
-  ];
+  buildInputs = [ postgresql ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ openssl ];
 
   sphinxRoot = "doc/src";
 
@@ -53,24 +53,25 @@ buildPythonPackage rec {
   #   current transaction is aborted, commands ignored until end of transaction block
   doCheck = false;
 
-  nativeCheckInputs = [
-    postgresqlTestHook
-  ];
+  nativeCheckInputs = [ postgresqlTestHook ];
 
   env = {
     PGDATABASE = "psycopg2_test";
   };
 
-  pythonImportsCheck = [
-    "psycopg2"
-  ];
+  pythonImportsCheck = [ "psycopg2" ];
 
-  disallowedReferences = lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ buildPackages.postgresql ];
+  disallowedReferences = lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
+    buildPackages.postgresql
+  ];
 
   meta = with lib; {
     description = "PostgreSQL database adapter for the Python programming language";
     homepage = "https://www.psycopg.org";
-    license = with licenses; [ lgpl3Plus zpl20 ];
-    maintainers = with maintainers; [ ];
+    license = with licenses; [
+      lgpl3Plus
+      zpl20
+    ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/psycopg2cffi/default.nix b/pkgs/development/python-modules/psycopg2cffi/default.nix
index f791f953d3f0a..4201bd1540716 100644
--- a/pkgs/development/python-modules/psycopg2cffi/default.nix
+++ b/pkgs/development/python-modules/psycopg2cffi/default.nix
@@ -1,39 +1,51 @@
-{ buildPythonPackage
-, cffi
-, fetchFromGitHub
-, lib
-, postgresql
-, postgresqlTestHook
-, pytestCheckHook
-, six
+{
+  buildPythonPackage,
+  cffi,
+  fetchFromGitHub,
+  lib,
+  postgresql,
+  postgresqlTestHook,
+  pytestCheckHook,
+  setuptools,
+  six,
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "psycopg2cffi";
-  version = "2.8.1";
-  format = "setuptools";
-
-  # NB: This is a fork.
-  # The original repo exists at https://github.com/chtd/psycopg2cffi, however
-  # this is mostly unmaintained and does not build for PyPy. Given that the
-  # whole point of this cffi alternative to psycopg2 is to use it with PyPy, I
-  # chose to use a working fork instead, which was linked in the relevant issue:
-  # https://github.com/chtd/psycopg2cffi/issues/113#issuecomment-730548574
-  #
-  # If/when these changes get merged back upstream we should revert to using the
-  # original source as opposed to the fork.
+  version = "2.9.0";
+  pyproject = true;
+
   src = fetchFromGitHub {
-    owner = "Omegapol";
-    repo = pname;
-    rev = "c202b25cd861d5e8f0f55c329764ff1da9f020c0";
-    sha256 = "09hsnjkix1c0vlhmfvrp8pchpnz2ya4xrchyq15czj527nx2dmy2";
+    owner = "chtd";
+    repo = "psycopg2cffi";
+    rev = "refs/tags/${version}";
+    hash = "sha256-9r5MYxw9cvdbLVj8StmMmn0AKQepOpCc7TIBGXZGWe4=";
   };
 
-  nativeBuildInputs = [ postgresql ];
+  postPatch = ''
+    substituteInPlace psycopg2cffi/_impl/_build_libpq.py \
+      --replace-fail "from distutils import sysconfig" "import sysconfig" \
+      --replace-fail "sysconfig.get_python_inc()" "sysconfig.get_path('include')"
+  '';
+
+  build-system = [
+    postgresql
+    setuptools
+  ];
+
+  dependencies = [
+    cffi
+    six
+  ];
 
-  propagatedBuildInputs = [ six cffi ];
+  # FATAL: could not create shared memory segment: Operation not permitted
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
-  nativeCheckInputs = [ postgresqlTestHook pytestCheckHook ];
+  nativeCheckInputs = [
+    postgresqlTestHook
+    pytestCheckHook
+  ];
 
   disabledTests = [
     # AssertionError: '{}' != []
@@ -47,7 +59,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "psycopg2cffi" ];
 
   meta = with lib; {
-    description = "An implementation of the psycopg2 module using cffi";
+    description = "Implementation of the psycopg2 module using cffi";
     homepage = "https://pypi.org/project/psycopg2cffi/";
     license = with licenses; [ lgpl3Plus ];
     maintainers = with maintainers; [ lovesegfault ];
diff --git a/pkgs/development/python-modules/psygnal/default.nix b/pkgs/development/python-modules/psygnal/default.nix
index a4b07f7612431..24ce03dad6578 100644
--- a/pkgs/development/python-modules/psygnal/default.nix
+++ b/pkgs/development/python-modules/psygnal/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatch-vcs
-, hatchling
-, mypy-extensions
-, numpy
-, pydantic
-, pytestCheckHook
-, pythonOlder
-, toolz
-, typing-extensions
-, wrapt
-, attrs
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatch-vcs,
+  hatchling,
+  mypy-extensions,
+  numpy,
+  pydantic,
+  pytestCheckHook,
+  pythonOlder,
+  toolz,
+  typing-extensions,
+  wrapt,
+  attrs,
 }:
 
 buildPythonPackage rec {
   pname = "psygnal";
-  version = "0.11.0";
+  version = "0.11.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -25,7 +26,7 @@ buildPythonPackage rec {
     owner = "pyapp-kit";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-LZkYlqplapV2jD5yV5Co8zhGdHP0dqkIAoIj1AFETbA=";
+    hash = "sha256-eGJWtmw2Ps3jII4T8E6s3djzxfqcSdyPemvejal0cn4=";
   };
 
   buildInputs = [
@@ -47,9 +48,7 @@ buildPythonPackage rec {
     attrs
   ];
 
-  pythonImportsCheck = [
-    "psygnal"
-  ];
+  pythonImportsCheck = [ "psygnal" ];
 
   meta = with lib; {
     description = "Implementation of Qt Signals";
diff --git a/pkgs/development/python-modules/ptable/default.nix b/pkgs/development/python-modules/ptable/default.nix
index 8589ed16277f4..d88a7433f068e 100644
--- a/pkgs/development/python-modules/ptable/default.nix
+++ b/pkgs/development/python-modules/ptable/default.nix
@@ -1,9 +1,15 @@
-{ lib, buildPythonPackage, fetchFromGitHub, nose }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+}:
 
 buildPythonPackage {
   pname = "ptable";
   version = "unstable-2019-06-14";
-  format = "setuptools";
+  pyproject = true;
 
   # https://github.com/kxxoling/PTable/issues/27
   src = fetchFromGitHub {
@@ -13,15 +19,13 @@ buildPythonPackage {
     sha256 = "1cj314rp6irlvr0a2c4xffsm2idsb0hzwr38vzz6z3kbhphcb63i";
   };
 
-  nativeCheckInputs = [ nose ];
+  build-system = [ setuptools ];
 
-  checkPhase = ''
-    nosetests --with-coverage --cover-package=prettytable --cover-min-percentage=75
-  '';
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     homepage = "https://github.com/kxxoling/PTable";
-    description = "A simple Python library designed to make it quick and easy to represent tabular data in visually appealing ASCII tables";
+    description = "Simple Python library designed to make it quick and easy to represent tabular data in visually appealing ASCII tables";
     mainProgram = "ptable";
     license = licenses.bsd3;
     maintainers = [ maintainers.mmahut ];
diff --git a/pkgs/development/python-modules/ptest/default.nix b/pkgs/development/python-modules/ptest/default.nix
index 1b063e784a9db..a9772dcb26541 100644
--- a/pkgs/development/python-modules/ptest/default.nix
+++ b/pkgs/development/python-modules/ptest/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
   pname = "ptest";
-  version =  "1.7.4";
+  version = "1.7.4";
   format = "setuptools";
 
   src = fetchFromGitHub {
@@ -20,5 +21,4 @@ buildPythonPackage rec {
     homepage = "https://pypi.python.org/pypi/ptest";
     license = licenses.asl20;
   };
-
 }
diff --git a/pkgs/development/python-modules/ptpython/default.nix b/pkgs/development/python-modules/ptpython/default.nix
index 4376089566493..3ec9a6f76d763 100644
--- a/pkgs/development/python-modules/ptpython/default.nix
+++ b/pkgs/development/python-modules/ptpython/default.nix
@@ -1,44 +1,43 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, appdirs
-, importlib-metadata
-, jedi
-, prompt-toolkit
-, pygments
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  appdirs,
+  jedi,
+  prompt-toolkit,
+  pygments,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "ptpython";
-  version = "3.0.26";
-  format = "setuptools";
+  version = "3.0.29";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-yPsUBlAtw0nZnFfq8G5xFvOy3qyU8C80K65ocIkJ90M=";
+    hash = "sha256-udYlGDrvk6Zz/DLL4cH8r1FBLnpPGVkFIc2syt8lGG4=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     appdirs
     jedi
     prompt-toolkit
     pygments
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
   ];
 
   # no tests to run
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ptpython"
-  ];
+  pythonImportsCheck = [ "ptpython" ];
 
   meta = with lib; {
-    description = "An advanced Python REPL";
+    description = "Advanced Python REPL";
     homepage = "https://github.com/prompt-toolkit/ptpython";
     changelog = "https://github.com/prompt-toolkit/ptpython/blob/${version}/CHANGELOG";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/ptyprocess/default.nix b/pkgs/development/python-modules/ptyprocess/default.nix
index 17a961620da5f..0cc11d0910a02 100644
--- a/pkgs/development/python-modules/ptyprocess/default.nix
+++ b/pkgs/development/python-modules/ptyprocess/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, flit-core
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  flit-core,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,25 +26,23 @@ buildPythonPackage rec {
       url = "https://github.com/pexpect/ptyprocess/commit/40c1ccf3432a6787be1801ced721540e34c6cd87.patch";
       hash = "sha256-IemngBqBq3QRCmVscWtsuXHiFgvTOJIIB9SyAvsqHd0=";
     })
+    (fetchpatch {
+      url = "https://github.com/pexpect/ptyprocess/commit/a44312974bd9084aa568d2e18ce5b2a7e0e45983.patch";
+      hash = "sha256-DEO4FbzKNAXADYocSQhhwjQTGGu9V5pqd38u1sWhpOI=";
+    })
   ];
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ptyprocess"
-  ];
+  pythonImportsCheck = [ "ptyprocess" ];
 
-  meta = with lib; {
+  meta = {
     description = "Run a subprocess in a pseudo terminal";
     homepage = "https://github.com/pexpect/ptyprocess";
     changelog = "https://github.com/pexpect/ptyprocess/releases/tag/${version}";
-    license = licenses.isc;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.isc;
+    maintainers = with lib.maintainers; [ getchoo ];
   };
 }
diff --git a/pkgs/development/python-modules/publicsuffix/default.nix b/pkgs/development/python-modules/publicsuffix/default.nix
index 11f331cd67929..c0f0d87477ff5 100644
--- a/pkgs/development/python-modules/publicsuffix/default.nix
+++ b/pkgs/development/python-modules/publicsuffix/default.nix
@@ -32,6 +32,6 @@ buildPythonPackage rec {
     description = "Allows to get the public suffix of a domain name";
     homepage = "https://pypi.python.org/pypi/publicsuffix/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/publicsuffix2/default.nix b/pkgs/development/python-modules/publicsuffix2/default.nix
index 02a686c31025b..c11880a620c36 100644
--- a/pkgs/development/python-modules/publicsuffix2/default.nix
+++ b/pkgs/development/python-modules/publicsuffix2/default.nix
@@ -35,6 +35,6 @@ buildPythonPackage {
     description = "Get a public suffix for a domain name using the Public Suffix List";
     homepage = "https://github.com/nexB/python-publicsuffix2";
     license = licenses.mpl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/publicsuffixlist/default.nix b/pkgs/development/python-modules/publicsuffixlist/default.nix
index a8cd6193d74be..f341ea7a4288f 100644
--- a/pkgs/development/python-modules/publicsuffixlist/default.nix
+++ b/pkgs/development/python-modules/publicsuffixlist/default.nix
@@ -11,19 +11,19 @@
 
 buildPythonPackage rec {
   pname = "publicsuffixlist";
-  version = "0.10.0.20240420";
+  version = "1.0.2.20240927";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-s8xPkes/xFlejqfOlMZOPLmNK92e2TLK18UZmv3/a6I=";
+    hash = "sha256-nelIcgIsZNa7sqIT7AyA3eZqBpkSZisn/3osvqaBhNk=";
   };
 
   build-system = [ setuptools ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     update = [ requests ];
     readme = [ pandoc ];
   };
@@ -35,6 +35,7 @@ buildPythonPackage rec {
   pytestFlagsArray = [ "publicsuffixlist/test.py" ];
 
   meta = with lib; {
+    changelog = "https://github.com/ko-zu/psl/blob/v${version}-gha/CHANGES.md";
     description = "Public Suffix List parser implementation";
     homepage = "https://github.com/ko-zu/psl";
     license = licenses.mpl20;
diff --git a/pkgs/development/python-modules/pubnub/default.nix b/pkgs/development/python-modules/pubnub/default.nix
index 58b6bd159d508..72c97923f1dee 100644
--- a/pkgs/development/python-modules/pubnub/default.nix
+++ b/pkgs/development/python-modules/pubnub/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "pubnub";
-  version = "7.4.4";
+  version = "8.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "pubnub";
     repo = "python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-4Paodw3t2RvAKrDMcWHIGLs5JNtH/9sP+BTyAm/hj4E=";
+    hash = "sha256-c6NSwDl0rV5t9dELuVVbRiLXYzxcYhiLc6yV4QoErTs=";
   };
 
   build-system = [ setuptools ];
@@ -62,7 +62,9 @@ buildPythonPackage rec {
     description = "Python-based APIs for PubNub";
     homepage = "https://github.com/pubnub/python";
     changelog = "https://github.com/pubnub/python/releases/tag/v${version}";
-    license = with licenses; [ mit ];
+    # PubNub Software Development Kit License Agreement
+    # https://github.com/pubnub/python/blob/master/LICENSE
+    license = licenses.unfreeRedistributable;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/pubnubsub-handler/default.nix b/pkgs/development/python-modules/pubnubsub-handler/default.nix
index 8d8c8da9620e3..8938d9df1ce44 100644
--- a/pkgs/development/python-modules/pubnubsub-handler/default.nix
+++ b/pkgs/development/python-modules/pubnubsub-handler/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pubnub
-, pycryptodomex
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pubnub,
+  pycryptodomex,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -13,7 +14,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256:1c44x19zi709sazgl060nkqa7vbaf3iyhwcnwdykhsbipvp6bscy";
+    hash = "sha256:1c44x19zi709sazgl060nkqa7vbaf3iyhwcnwdykhsbipvp6bscy";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pudb/default.nix b/pkgs/development/python-modules/pudb/default.nix
index 2ab448e77f1cd..08abae48d113c 100644
--- a/pkgs/development/python-modules/pudb/default.nix
+++ b/pkgs/development/python-modules/pudb/default.nix
@@ -1,29 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jedi
-, pygments
-, urwid
-, urwid-readline
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  jedi,
+  packaging,
+  pygments,
+  urwid,
+  urwid-readline,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pudb";
-  version = "2024.1";
-  format = "setuptools";
+  version = "2024.1.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-/J1ql2pZtZB2TIN57CAP7NR/qoQlm2Tv2M2GBmoK8zg=";
+    hash = "sha256-rcmwAEK6g2cRffCmwNxi+pYJq9IcO/jltz1iCQfFtD4=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     jedi
+    packaging
     pygments
     urwid
     urwid-readline
@@ -38,16 +44,14 @@ buildPythonPackage rec {
     export HOME=$TMPDIR
   '';
 
-  pythonImportsCheck = [
-    "pudb"
-  ];
+  pythonImportsCheck = [ "pudb" ];
 
   meta = with lib; {
-    description = "A full-screen, console-based Python debugger";
+    description = "Full-screen, console-based Python debugger";
     mainProgram = "pudb";
     homepage = "https://github.com/inducer/pudb";
     changelog = "https://github.com/inducer/pudb/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pueblo/default.nix b/pkgs/development/python-modules/pueblo/default.nix
index 6b11cdad611dc..bbc2d480d9242 100644
--- a/pkgs/development/python-modules/pueblo/default.nix
+++ b/pkgs/development/python-modules/pueblo/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, versioningit
-, platformdirs
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  versioningit,
+  platformdirs,
 }:
 
 buildPythonPackage rec {
@@ -28,8 +29,8 @@ buildPythonPackage rec {
   ];
 
   propagatedBuildInputs = [
-  #  contextlib-chdir
-  #  importlib-metadata
+    #  contextlib-chdir
+    #  importlib-metadata
     platformdirs
   ];
 
diff --git a/pkgs/development/python-modules/pulp/default.nix b/pkgs/development/python-modules/pulp/default.nix
index 8e318822f086c..c0955bc96aa6d 100644
--- a/pkgs/development/python-modules/pulp/default.nix
+++ b/pkgs/development/python-modules/pulp/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, cbc
-, amply
-, buildPythonPackage
-, fetchFromGitHub
-, pyparsing
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  cbc,
+  amply,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyparsing,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -33,13 +34,9 @@ buildPythonPackage rec {
     pyparsing
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pulp"
-  ];
+  pythonImportsCheck = [ "pulp" ];
 
   meta = with lib; {
     description = "Module to generate MPS or LP files";
diff --git a/pkgs/development/python-modules/pulsar-client/default.nix b/pkgs/development/python-modules/pulsar-client/default.nix
index d2448043a64af..2c236dca67fd2 100644
--- a/pkgs/development/python-modules/pulsar-client/default.nix
+++ b/pkgs/development/python-modules/pulsar-client/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, python
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  python,
 }:
 let
   version = "3.4.0";
@@ -11,13 +12,24 @@ let
 
   Srcs =
     let
-      getSrcFromPypi = { platform, dist, hash }: fetchPypi {
-        inherit version platform dist hash;
-        pname = "pulsar_client";
-        format = "wheel";
-        python = dist;
-        abi = dist;
-      };
+      getSrcFromPypi =
+        {
+          platform,
+          dist,
+          hash,
+        }:
+        fetchPypi {
+          inherit
+            version
+            platform
+            dist
+            hash
+            ;
+          pname = "pulsar_client";
+          format = "wheel";
+          python = dist;
+          abi = dist;
+        };
     in
     {
       "3.9-x86_64-linux" = getSrcFromPypi {
@@ -101,15 +113,16 @@ let
         hash = "sha256-Hgd6SDm+Pq094/BbTCRCadyi3wf0fOoLkFRMfp3BZC8=";
       };
     };
-
-in buildPythonPackage {
+in
+buildPythonPackage {
   pname = "pulsar-client";
   inherit version;
 
   format = "wheel";
 
-  src = Srcs."${pythonVersion}-${stdenv.hostPlatform.system}"
-    or (throw "Unsupported '${pythonVersion}-${stdenv.hostPlatform.system}' target");
+  src =
+    Srcs."${pythonVersion}-${stdenv.hostPlatform.system}"
+      or (throw "Unsupported '${pythonVersion}-${stdenv.hostPlatform.system}' target");
 
   meta = with lib; {
     description = "Client for pulsar";
diff --git a/pkgs/development/python-modules/pulsar/default.nix b/pkgs/development/python-modules/pulsar/default.nix
index b6dfde67706b5..516a718b758de 100644
--- a/pkgs/development/python-modules/pulsar/default.nix
+++ b/pkgs/development/python-modules/pulsar/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, cmake
-, pkg-config
-, libpulsar
-, pybind11
-, certifi
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  cmake,
+  pkg-config,
+  libpulsar,
+  pybind11,
+  certifi,
 }:
 
 buildPythonPackage rec {
@@ -39,16 +40,12 @@ buildPythonPackage rec {
     cd ..
   '';
 
-  propagatedBuildInputs = [
-    certifi
-  ];
+  propagatedBuildInputs = [ certifi ];
 
   # Requires to setup a cluster
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pulsar"
-  ];
+  pythonImportsCheck = [ "pulsar" ];
 
   meta = with lib; {
     description = "Apache Pulsar Python client library";
diff --git a/pkgs/development/python-modules/pulsectl-asyncio/default.nix b/pkgs/development/python-modules/pulsectl-asyncio/default.nix
index 1a985c8ab1d33..8b7c70dc79eba 100644
--- a/pkgs/development/python-modules/pulsectl-asyncio/default.nix
+++ b/pkgs/development/python-modules/pulsectl-asyncio/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "pulsectl-asyncio";
-  version = "1.2.0";
+  version = "1.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "mhthies";
     repo = "pulsectl-asyncio";
     rev = "refs/tags/v${version}";
-    hash = "sha256-WqUO4eERJkRg6O+gCmjqfdVbBT/3TVVBUUduoIxcPNQ=";
+    hash = "sha256-VmogNphVZNJSUKUqp7xADRl78Ooofhl1YYrtYz5MBYc=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/pulsectl/default.nix b/pkgs/development/python-modules/pulsectl/default.nix
index 5b87a24ddf551..756826b4500a5 100644
--- a/pkgs/development/python-modules/pulsectl/default.nix
+++ b/pkgs/development/python-modules/pulsectl/default.nix
@@ -1,13 +1,23 @@
-{ lib, buildPythonPackage, fetchPypi, libpulseaudio, glibc, substituteAll, stdenv, pulseaudio, unittestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  libpulseaudio,
+  glibc,
+  substituteAll,
+  stdenv,
+  pulseaudio,
+  unittestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "pulsectl";
-  version = "23.5.2";
+  version = "24.8.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-6RHTmOrwU5zzxjtCFzV7UaPRt+SlBgfRWRzytJ9dLGo=";
+    hash = "sha256-sFFQbQ1z08xDV879PeF7uFnX7PAE6ZSw98+oeFG8cVY=";
   };
 
   patches = [
@@ -19,11 +29,12 @@ buildPythonPackage rec {
     })
   ];
 
-  pythonImportsCheck = [
-    "pulsectl"
-  ];
+  pythonImportsCheck = [ "pulsectl" ];
 
-  nativeCheckInputs = [ unittestCheckHook pulseaudio ];
+  nativeCheckInputs = [
+    unittestCheckHook
+    pulseaudio
+  ];
 
   preCheck = ''
     export HOME=$TMPDIR
diff --git a/pkgs/development/python-modules/pulumi-aws/default.nix b/pkgs/development/python-modules/pulumi-aws/default.nix
index 1255e4b9b7aa0..a72a47661739a 100644
--- a/pkgs/development/python-modules/pulumi-aws/default.nix
+++ b/pkgs/development/python-modules/pulumi-aws/default.nix
@@ -1,27 +1,29 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, parver
-, pulumi
-, pythonOlder
-, semver
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  parver,
+  pulumi,
+  pythonOlder,
+  semver,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pulumi-aws";
   # Version is independant of pulumi's.
-  version = "6.25.0";
-  format = "setuptools";
+  version = "6.52.0";
 
-  disabled = pythonOlder "3.7";
+  pyproject = true;
+  build-system = [ setuptools ];
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "pulumi";
     repo = "pulumi-aws";
     rev = "refs/tags/v${version}";
-    hash = "sha256-RtJIl90rTMFv4mLrDd2SxLYYLf0yKS//7+sxVBdNX8g=";
+    hash = "sha256-EYDvhgUOWMj2kahzwkg8L43D42YGo2IHrrmKFhMPOb0=";
   };
 
   sourceRoot = "${src.name}/sdk/python";
@@ -35,15 +37,13 @@ buildPythonPackage rec {
   # Checks require cloud resources
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pulumi_aws"
-  ];
+  pythonImportsCheck = [ "pulumi_aws" ];
 
   meta = with lib; {
     description = "Pulumi python amazon web services provider";
     homepage = "https://github.com/pulumi/pulumi-aws";
     changelog = "https://github.com/pulumi/pulumi-aws/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pulumi/default.nix b/pkgs/development/python-modules/pulumi/default.nix
index b61bc41505db4..7353649c5a562 100644
--- a/pkgs/development/python-modules/pulumi/default.nix
+++ b/pkgs/development/python-modules/pulumi/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, protobuf
-, dill
-, grpcio
-, pulumi
-, isPy27
-, semver
-, pip
-, pytestCheckHook
-, pyyaml
-, six
+{
+  lib,
+  buildPythonPackage,
+  protobuf,
+  dill,
+  grpcio,
+  pulumi,
+  isPy27,
+  semver,
+  pip,
+  pytestCheckHook,
+  pyyaml,
+  six,
 }:
 buildPythonPackage rec {
   inherit (pulumi) version src;
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "test/"
-  ];
+  pytestFlagsArray = [ "test/" ];
 
   sourceRoot = "${src.name}/sdk/python/lib";
 
diff --git a/pkgs/development/python-modules/pure-cdb/default.nix b/pkgs/development/python-modules/pure-cdb/default.nix
index f8df017c9b18c..175841ed25343 100644
--- a/pkgs/development/python-modules/pure-cdb/default.nix
+++ b/pkgs/development/python-modules/pure-cdb/default.nix
@@ -1,10 +1,14 @@
-{ lib, fetchFromGitHub, buildPythonPackage, pythonOlder, flake8 }:
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  flake8,
+}:
 
 buildPythonPackage rec {
   pname = "pure-cdb";
   version = "4.0.0";
   format = "setuptools";
-  disabled = pythonOlder "3.4";
 
   # Archive on pypi has no tests.
   src = fetchFromGitHub {
diff --git a/pkgs/development/python-modules/pure-eval/default.nix b/pkgs/development/python-modules/pure-eval/default.nix
index 60615c0a0640b..a94abf72712a2 100644
--- a/pkgs/development/python-modules/pure-eval/default.nix
+++ b/pkgs/development/python-modules/pure-eval/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools-scm
-, toml
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools-scm,
+  toml,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-9N+UcgAv30s4ctgsBrOHiix4BoXhKPgxH/GOz/NIFdU=";
   };
 
-  buildInputs = [
-    setuptools-scm
-  ];
+  buildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    toml
-  ];
+  propagatedBuildInputs = [ toml ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pure_eval"
-  ];
+  pythonImportsCheck = [ "pure_eval" ];
 
   meta = with lib; {
     description = "Safely evaluate AST nodes without side effects";
diff --git a/pkgs/development/python-modules/pure-pcapy3/default.nix b/pkgs/development/python-modules/pure-pcapy3/default.nix
index 8e07377723e00..d037fc7af5b85 100644
--- a/pkgs/development/python-modules/pure-pcapy3/default.nix
+++ b/pkgs/development/python-modules/pure-pcapy3/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,14 +23,12 @@ buildPythonPackage rec {
       --replace-fail "assertEquals" "assertEqual"
   '';
 
-  pythonImportsCheck = [
-    "pure_pcapy"
-  ];
+  pythonImportsCheck = [ "pure_pcapy" ];
 
   meta = with lib; {
     description = "Reimplementation of pcapy";
     homepage = "https://github.com/rcloran/pure-pcapy-3";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pure-protobuf/default.nix b/pkgs/development/python-modules/pure-protobuf/default.nix
index e68746ddd8dbb..df72926be3977 100644
--- a/pkgs/development/python-modules/pure-protobuf/default.nix
+++ b/pkgs/development/python-modules/pure-protobuf/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, poetry-dynamic-versioning
-, typing-extensions
-, pytestCheckHook
-, pytest-benchmark
-, pytest-cov
-, pydantic
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  poetry-dynamic-versioning,
+  typing-extensions,
+  pytestCheckHook,
+  pytest-benchmark,
+  pytest-cov-stub,
+  pydantic,
 }:
 
 buildPythonPackage rec {
   pname = "pure-protobuf";
-  version = "3.1.0";
+  version = "3.1.2";
 
   format = "pyproject";
   # < 3.10 requires get-annotations which isn't packaged yet
@@ -23,7 +24,7 @@ buildPythonPackage rec {
     owner = "eigenein";
     repo = "protobuf";
     rev = "refs/tags/${version}";
-    hash = "sha256-JXC68iEX5VepIe4qpugvY0Qb3JlM5mPGHnUVWvb1TDA=";
+    hash = "sha256-up/01Q2IdaW41Ple+nCRpWjYnl/IAlOppdGcg4djRZY=";
   };
 
   build-system = [
@@ -32,24 +33,18 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  dependencies = [
-    typing-extensions
-  ];
+  dependencies = [ typing-extensions ];
 
   nativeCheckInputs = [
     pydantic
     pytestCheckHook
     pytest-benchmark
-    pytest-cov
+    pytest-cov-stub
   ];
 
-  pytestFlagsArray = [
-    "--benchmark-disable"
-  ];
+  pytestFlagsArray = [ "--benchmark-disable" ];
 
-  pythonImportsCheck = [
-    "pure_protobuf"
-  ];
+  pythonImportsCheck = [ "pure_protobuf" ];
 
   meta = with lib; {
     description = "Python implementation of Protocol Buffers with dataclass-based schemas";
diff --git a/pkgs/development/python-modules/pure-python-adb-homeassistant/default.nix b/pkgs/development/python-modules/pure-python-adb-homeassistant/default.nix
index 6a734f93ab996..974a70f2f7a66 100644
--- a/pkgs/development/python-modules/pure-python-adb-homeassistant/default.nix
+++ b/pkgs/development/python-modules/pure-python-adb-homeassistant/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 buildPythonPackage rec {
   pname = "pure-python-adb-homeassistant";
diff --git a/pkgs/development/python-modules/pure-python-adb/default.nix b/pkgs/development/python-modules/pure-python-adb/default.nix
index 531e1c30a1ef9..39ca6addf0080 100644
--- a/pkgs/development/python-modules/pure-python-adb/default.nix
+++ b/pkgs/development/python-modules/pure-python-adb/default.nix
@@ -1,9 +1,10 @@
-{ aiofiles
-, buildPythonPackage
-, fetchPypi
-, lib
-, pythonOlder
-, pytestCheckHook
+{
+  aiofiles,
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,23 +20,14 @@ buildPythonPackage rec {
   };
 
   passthru.optional-dependencies = {
-    async = [
-      aiofiles
-    ];
+    async = [ aiofiles ];
   };
 
   doCheck = pythonOlder "3.10"; # all tests result in RuntimeError on 3.10
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ]
-  ++ passthru.optional-dependencies.async;
+  nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.async;
 
-  pythonImportsCheck = [
-    "ppadb.client"
-  ] ++ lib.optionals doCheck [
-    "ppadb.client_async"
-  ];
+  pythonImportsCheck = [ "ppadb.client" ] ++ lib.optionals doCheck [ "ppadb.client_async" ];
 
   meta = with lib; {
     description = "Pure python implementation of the adb client";
diff --git a/pkgs/development/python-modules/puremagic/default.nix b/pkgs/development/python-modules/puremagic/default.nix
index d9171b6497c65..9881df2a4c43f 100644
--- a/pkgs/development/python-modules/puremagic/default.nix
+++ b/pkgs/development/python-modules/puremagic/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "puremagic";
-  version = "1.22";
+  version = "1.28";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "cdgriffith";
     repo = "puremagic";
     rev = "refs/tags/${version}";
-    hash = "sha256-48gtwH6NXj/n3mm313Im1ey4ZH9TbsSFwjsQuBGuqwA=";
+    hash = "sha256-a7jRQUSbH3E6eJiXNKr4ikdSXRZ6+/csl/EMiKXMzmk=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/purepng/default.nix b/pkgs/development/python-modules/purepng/default.nix
index a147f0a55306a..056532f8e1cc6 100644
--- a/pkgs/development/python-modules/purepng/default.nix
+++ b/pkgs/development/python-modules/purepng/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, python
-, fetchFromGitHub
-, fetchpatch
-, cython ? null
-, numpy ? null
+{
+  lib,
+  buildPythonPackage,
+  python,
+  fetchFromGitHub,
+  fetchpatch,
+  cython ? null,
+  numpy ? null,
 }:
 
 buildPythonPackage {
@@ -26,7 +27,11 @@ buildPythonPackage {
       sha256 = "1ag0pji3p012hmj8kadcd0vydv9702188c0isizsi964qcl4va6m";
     })
   ];
-  patchFlags = [ "-p1" "-d" "code" ];
+  patchFlags = [
+    "-p1"
+    "-d"
+    "code"
+  ];
 
   # cython is optional - if not supplied, the "pure python" implementation will be used
   nativeBuildInputs = [ cython ];
diff --git a/pkgs/development/python-modules/purl/default.nix b/pkgs/development/python-modules/purl/default.nix
index 8e0ba9c2eb5a6..493ac2fd2960e 100644
--- a/pkgs/development/python-modules/purl/default.nix
+++ b/pkgs/development/python-modules/purl/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, six
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  six,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,22 +18,16 @@ buildPythonPackage rec {
     hash = "sha256-Jb3JRW/PtQ7NlO4eQ9DmTPu/sjvFTg2mztphoIF79gc=";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "purl"
-  ];
+  pythonImportsCheck = [ "purl" ];
 
   meta = with lib; {
     description = "Immutable URL class for easy URL-building and manipulation";
     homepage = "https://github.com/codeinthehole/purl";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/push-receiver/default.nix b/pkgs/development/python-modules/push-receiver/default.nix
index ef73b6d0b3c45..d5f4732bb3131 100644
--- a/pkgs/development/python-modules/push-receiver/default.nix
+++ b/pkgs/development/python-modules/push-receiver/default.nix
@@ -1,10 +1,11 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
-, appdirs
-, http-ece
-, oscrypto
-, protobuf
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  appdirs,
+  http-ece,
+  oscrypto,
+  protobuf,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pushbullet-py/default.nix b/pkgs/development/python-modules/pushbullet-py/default.nix
index 1ef8728d0614e..0b986dff66361 100644
--- a/pkgs/development/python-modules/pushbullet-py/default.nix
+++ b/pkgs/development/python-modules/pushbullet-py/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, requests
-, websocket-client
-, python-magic
-, cryptography
-, pytestCheckHook
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  requests,
+  websocket-client,
+  python-magic,
+  cryptography,
+  pytestCheckHook,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     sha256 = "917883e1af4a0c979ce46076b391e0243eb8fe0a81c086544bcfa10f53e5ae64";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     cryptography
@@ -35,22 +34,22 @@ buildPythonPackage rec {
     export PUSHBULLET_API_KEY=""
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = [
-    "test_auth_fail"
-    "test_auth_success"
-    "test_decryption"
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    # AttributeError: 'called_once_with' is not a valid assertion. Use a spec for the mock if 'called_once_with' is meant to be an attribute.. Did you mean: 'assert_called_once_with'?
-    "test_new_device_ok"
-    "test_new_chat_ok"
-  ];
+  disabledTests =
+    [
+      "test_auth_fail"
+      "test_auth_success"
+      "test_decryption"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      # AttributeError: 'called_once_with' is not a valid assertion. Use a spec for the mock if 'called_once_with' is meant to be an attribute.. Did you mean: 'assert_called_once_with'?
+      "test_new_device_ok"
+      "test_new_chat_ok"
+    ];
 
   meta = with lib; {
-    description = "A simple python client for pushbullet.com";
+    description = "Simple python client for pushbullet.com";
     homepage = "https://github.com/randomchars/pushbullet.py";
     license = licenses.mit;
   };
diff --git a/pkgs/development/python-modules/pushover-complete/default.nix b/pkgs/development/python-modules/pushover-complete/default.nix
index f660e23bd0198..e0da6ed669604 100644
--- a/pkgs/development/python-modules/pushover-complete/default.nix
+++ b/pkgs/development/python-modules/pushover-complete/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, requests
-, six
-, pytestCheckHook
-, pythonOlder
-, requests-toolbelt
-, responses
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  requests,
+  six,
+  pytestCheckHook,
+  requests-toolbelt,
+  responses,
 }:
 
 buildPythonPackage rec {
@@ -36,7 +36,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "pushover_complete" ];
 
   meta = with lib; {
-    description = "A Python package for interacting with *all* aspects of the Pushover API";
+    description = "Python package for interacting with *all* aspects of the Pushover API";
     homepage = "https://github.com/scolby33/pushover_complete";
     license = licenses.mit;
     maintainers = [ maintainers.mic92 ];
diff --git a/pkgs/development/python-modules/pvextractor/default.nix b/pkgs/development/python-modules/pvextractor/default.nix
index 4d39db14d7145..a176ae73ee699 100644
--- a/pkgs/development/python-modules/pvextractor/default.nix
+++ b/pkgs/development/python-modules/pvextractor/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, astropy
-, qtpy
-, pyqt6
-, pyqt-builder
-, setuptools
-, setuptools-scm
-, scipy
-, matplotlib
-, spectral-cube
-, pytestCheckHook
-, pytest-astropy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  astropy,
+  qtpy,
+  pyqt6,
+  pyqt-builder,
+  setuptools,
+  setuptools-scm,
+  scipy,
+  matplotlib,
+  spectral-cube,
+  pytestCheckHook,
+  pytest-astropy,
 }:
 
 buildPythonPackage rec {
@@ -30,7 +31,10 @@ buildPythonPackage rec {
   };
 
   buildInputs = [ pyqt-builder ];
-  nativeBuildInputs = [ setuptools setuptools-scm ];
+  nativeBuildInputs = [
+    setuptools
+    setuptools-scm
+  ];
   propagatedBuildInputs = [
     astropy
     scipy
diff --git a/pkgs/development/python-modules/pvlib/default.nix b/pkgs/development/python-modules/pvlib/default.nix
index 986fd4ed8b4df..1731d2cd0730c 100644
--- a/pkgs/development/python-modules/pvlib/default.nix
+++ b/pkgs/development/python-modules/pvlib/default.nix
@@ -1,43 +1,42 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, h5py
-, numpy
-, pandas
-, pytestCheckHook
-, pytest-mock
-, pytest-remotedata
-, pytest-rerunfailures
-, pytest-timeout
-, pythonOlder
-, pytz
-, requests
-, requests-mock
-, scipy
-, setuptools
-, setuptools-scm
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  h5py,
+  numpy,
+  pandas,
+  pytestCheckHook,
+  pytest-mock,
+  pytest-remotedata,
+  pytest-rerunfailures,
+  pytest-timeout,
+  pythonOlder,
+  pytz,
+  requests,
+  requests-mock,
+  scipy,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "pvlib";
-  version = "0.10.4";
+  version = "0.11.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
-  src = fetchPypi{
+  src = fetchPypi {
     inherit pname version;
-    hash = "sha256-DF+ov+ixSjmjC/7+WmzwFksuvYKikSbbPZBqhNk5+HI=";
+    hash = "sha256-iLMcRNwH8ENa8eLV3crAZ+bOFZFyUanycDZvYem9AVs=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
-    wheel
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     h5py
     numpy
     pandas
@@ -47,21 +46,19 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
-    pytestCheckHook
     pytest-mock
     pytest-remotedata
     pytest-rerunfailures
     pytest-timeout
+    pytestCheckHook
     requests-mock
   ];
 
-  pythonImportsCheck = [
-    "pvlib"
-  ];
+  pythonImportsCheck = [ "pvlib" ];
 
   meta = with lib; {
-    homepage = "https://pvlib-python.readthedocs.io";
     description = "Simulate the performance of photovoltaic energy systems";
+    homepage = "https://pvlib-python.readthedocs.io";
     changelog = "https://pvlib-python.readthedocs.io/en/v${version}/whatsnew.html";
     license = licenses.bsd3;
     maintainers = with maintainers; [ jluttine ];
diff --git a/pkgs/development/python-modules/pvo/default.nix b/pkgs/development/python-modules/pvo/default.nix
index d886bbd30ac9f..213475f27e88f 100644
--- a/pkgs/development/python-modules/pvo/default.nix
+++ b/pkgs/development/python-modules/pvo/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, mashumaro
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, syrupy
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  mashumaro,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  syrupy,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,7 @@ buildPythonPackage rec {
       --replace "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -50,9 +49,7 @@ buildPythonPackage rec {
     syrupy
   ];
 
-  pythonImportsCheck = [
-    "pvo"
-  ];
+  pythonImportsCheck = [ "pvo" ];
 
   meta = with lib; {
     description = "Python module to interact with the PVOutput API";
diff --git a/pkgs/development/python-modules/pweave/default.nix b/pkgs/development/python-modules/pweave/default.nix
index 2c85434ac6bcf..b5721e2782690 100644
--- a/pkgs/development/python-modules/pweave/default.nix
+++ b/pkgs/development/python-modules/pweave/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mock
-, matplotlib
-, pkgs
-, nbconvert
-, markdown
-, isPy3k
-, ipykernel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  matplotlib,
+  pkgs,
+  nbconvert,
+  markdown,
+  isPy3k,
+  ipykernel,
 }:
 
 buildPythonPackage rec {
@@ -23,8 +24,16 @@ buildPythonPackage rec {
 
   disabled = !isPy3k;
 
-  buildInputs = [ mock pkgs.glibcLocales ];
-  propagatedBuildInputs = [ ipykernel matplotlib nbconvert markdown ];
+  buildInputs = [
+    mock
+    pkgs.glibcLocales
+  ];
+  propagatedBuildInputs = [
+    ipykernel
+    matplotlib
+    nbconvert
+    markdown
+  ];
 
   # fails due to trying to run CSS as test
   doCheck = false;
@@ -34,5 +43,4 @@ buildPythonPackage rec {
     homepage = "https://mpastell.com/pweave/";
     license = licenses.bsd3;
   };
-
 }
diff --git a/pkgs/development/python-modules/pwinput/default.nix b/pkgs/development/python-modules/pwinput/default.nix
new file mode 100644
index 0000000000000..66105db31a078
--- /dev/null
+++ b/pkgs/development/python-modules/pwinput/default.nix
@@ -0,0 +1,35 @@
+{
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  lib,
+  pythonOlder,
+}:
+buildPythonPackage rec {
+  pname = "pwinput";
+  version = "1.0.3";
+
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit version;
+    pname = "pwinput";
+    hash = "sha256-yhqL0G4ohy11Hb1BMthjcSfCW0COo6NJN3MUpUkUJvM=";
+  };
+
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "pwinput" ];
+
+  # Requires graphical environment to use pyautogui
+  doCheck = false;
+
+  meta = {
+    description = "Python module that masks password input";
+    homepage = "https://github.com/asweigart/pwinput";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ bwkam ];
+  };
+}
diff --git a/pkgs/development/python-modules/pwkit/default.nix b/pkgs/development/python-modules/pwkit/default.nix
index f1fe2ad54556e..6a4e3de6badd8 100644
--- a/pkgs/development/python-modules/pwkit/default.nix
+++ b/pkgs/development/python-modules/pwkit/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "pwkit";
-  version = "1.2.0";
+  version = "1.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "pkgw";
     repo = "pwkit";
     rev = "refs/tags/pwkit@${version}";
-    hash = "sha256-bQno1SIbxAJ1TL068eshfFgAkRXFmbGu2GTbv1BRGU0=";
+    hash = "sha256-X3nQPtPrY1+HH0Cs7PrFLqMP3fUEcwXQGap1F/3Aom0=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/pwlf/default.nix b/pkgs/development/python-modules/pwlf/default.nix
index 8259a41e2e40a..95dbc3ac83b89 100644
--- a/pkgs/development/python-modules/pwlf/default.nix
+++ b/pkgs/development/python-modules/pwlf/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, scipy
-, numpy
-, pydoe
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  scipy,
+  numpy,
+  pydoe,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     pydoe
   ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   pythonImportsCheck = [ "pwlf" ];
 
diff --git a/pkgs/development/python-modules/pwndbg/default.nix b/pkgs/development/python-modules/pwndbg/default.nix
index 7bee0345afdb7..f71117d7497a8 100644
--- a/pkgs/development/python-modules/pwndbg/default.nix
+++ b/pkgs/development/python-modules/pwndbg/default.nix
@@ -1,55 +1,39 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, capstone
-, future
-, ipython
-, psutil
-, pwntools
-, pycparser
-, pyelftools
-, pygments
-, requests
-, rpyc
-, sortedcontainers
-, tabulate
-, typing-extensions
-, unicorn
-, gdb-pt-dump
-, poetry-core
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  capstone,
+  future,
+  ipython,
+  psutil,
+  pwntools,
+  pycparser,
+  pyelftools,
+  pygments,
+  requests,
+  rpyc,
+  sortedcontainers,
+  tabulate,
+  typing-extensions,
+  unicorn,
+  gdb-pt-dump,
+  poetry-core,
 }:
-let
-  # The newest gdb-pt-dump is incompatible with pwndbg 2024.02.14.
-  # See https://github.com/martinradev/gdb-pt-dump/issues/29
-  gdb-pt-dump' = gdb-pt-dump.overrideAttrs (oldAttrs: {
-    version = "0-unstable-2023-11-11";
-
-    src = fetchFromGitHub {
-      inherit (oldAttrs.src) owner repo;
-      rev = "89ea252f6efc5d75eacca16fc17ff8966a389690";
-      hash = "sha256-i+SAcZ/kgfKstJnkyCVMh/lWtrJJOHTYoJH4tVfYHrE=";
-    };
-
-    # This revision relies on the package being imported from within GDB, which
-    # won't work with pythonImportsCheck.
-    pythonImportsCheck = [ ];
-  });
-in
 buildPythonPackage rec {
   pname = "pwndbg";
-  version = "2024.02.14";
+  version = "2024.08.29";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pwndbg";
     repo = "pwndbg";
     rev = version;
-    hash = "sha256-/pDo2J5EtpWWCurD7H34AlTlQi7WziIRRxHxGm3K2yk=";
+    hash = "sha256-mpkUEP0GBwOfbbpogupmDvCo8dkbSGy1YtH8T55rX9g=";
   };
 
-  nativeBuildInputs = [ poetry-core pythonRelaxDepsHook ];
+  nativeBuildInputs = [
+    poetry-core
+  ];
   pythonRelaxDeps = true;
 
   propagatedBuildInputs = [
@@ -67,7 +51,7 @@ buildPythonPackage rec {
     tabulate
     typing-extensions
     unicorn
-    gdb-pt-dump'
+    gdb-pt-dump
   ];
 
   meta = {
diff --git a/pkgs/development/python-modules/pwntools/default.nix b/pkgs/development/python-modules/pwntools/default.nix
index db91bf50182e5..6874fd866e82f 100644
--- a/pkgs/development/python-modules/pwntools/default.nix
+++ b/pkgs/development/python-modules/pwntools/default.nix
@@ -1,27 +1,31 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, debugger
-, fetchPypi
-, mako
-, packaging
-, pysocks
-, pygments
-, ropgadget
-, capstone
-, colored-traceback
-, paramiko
-, pip
-, psutil
-, pyelftools
-, pyserial
-, python-dateutil
-, requests
-, rpyc
-, tox
-, unicorn
-, intervaltree
-, installShellFiles
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  debugger,
+  fetchPypi,
+  capstone,
+  colored-traceback,
+  intervaltree,
+  mako,
+  packaging,
+  paramiko,
+  psutil,
+  pyelftools,
+  pygments,
+  pyserial,
+  pysocks,
+  python-dateutil,
+  requests,
+  ropgadget,
+  rpyc,
+  setuptools,
+  six,
+  sortedcontainers,
+  unicorn,
+  unix-ar,
+  zstandard,
+  installShellFiles,
 }:
 
 let
@@ -29,12 +33,12 @@ let
 in
 buildPythonPackage rec {
   pname = "pwntools";
-  version = "4.12.0";
-  format = "setuptools";
+  version = "4.13.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-MgKFvZJmFS/bo7gd46MeYaJQdmRVB6ONhfNOGxWZjrE=";
+    hash = "sha256-HVyiU4PsEPtk4o0ULB2Gj5HqHFOpPTUx0wFdgwgo08M=";
   };
 
   postPatch = ''
@@ -43,29 +47,33 @@ buildPythonPackage rec {
     sed -i 's/gdb-multiarch/${debuggerName}/' pwnlib/gdb.py
   '';
 
-  nativeBuildInputs = [
-    installShellFiles
-  ];
+  nativeBuildInputs = [ installShellFiles ];
+
+  build-system = [ setuptools ];
+
+  pythonRemoveDeps = [ "pip" ];
 
   propagatedBuildInputs = [
-    mako
-    packaging
-    pysocks
-    pygments
-    ropgadget
     capstone
     colored-traceback
+    intervaltree
+    mako
+    packaging
     paramiko
-    pip
     psutil
     pyelftools
+    pygments
     pyserial
+    pysocks
     python-dateutil
     requests
+    ropgadget
     rpyc
-    tox
+    six
+    sortedcontainers
     unicorn
-    intervaltree
+    unix-ar
+    zstandard
   ];
 
   doCheck = false; # no setuptools tests for the package
@@ -74,16 +82,22 @@ buildPythonPackage rec {
     installShellCompletion --bash extra/bash_completion.d/shellcraft
   '';
 
-  postFixup = lib.optionalString (!stdenv.isDarwin) ''
+  postFixup = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
     mkdir -p "$out/bin"
     makeWrapper "${debugger}/bin/${debuggerName}" "$out/bin/pwntools-gdb"
   '';
 
+  pythonImportsCheck = [ "pwn" ];
+
   meta = with lib; {
     description = "CTF framework and exploit development library";
     homepage = "https://pwntools.com";
     changelog = "https://github.com/Gallopsled/pwntools/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ bennofs kristoff3r pamplemousse ];
+    maintainers = with maintainers; [
+      bennofs
+      kristoff3r
+      pamplemousse
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pxml/default.nix b/pkgs/development/python-modules/pxml/default.nix
deleted file mode 100644
index 360a761d88972..0000000000000
--- a/pkgs/development/python-modules/pxml/default.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ lib
-, pythonAtLeast
-, buildPythonPackage
-, fetchPypi
-, blessings
-, six
-, nose
-, coverage
-}:
-
-buildPythonPackage rec {
-  pname = "pxml";
-  version = "0.2.13";
-  format = "setuptools";
-  disabled = pythonAtLeast "3.8";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0c9zzfv6ciyf9qm7556wil45xxgykg1cj8isp1b88gimwcb2hxg4";
-  };
-
-  propagatedBuildInputs = [ blessings six ];
-  nativeCheckInputs = [ nose coverage ];
-
-  # test_prefixedWhitespace fails due to a python3 StringIO issue requiring
-  # bytes rather than str
-  checkPhase = ''
-    nosetests -e 'test_prefixedWhitespace'
-  '';
-
-  meta = with lib; {
-    homepage = "https://github.com/metagriffin/pxml";
-    description = ''A python library and command-line tool to "prettify" and colorize XML.'';
-    maintainers = with maintainers; [ glittershark ];
-    license = licenses.gpl3;
-  };
-}
diff --git a/pkgs/development/python-modules/py-air-control-exporter/default.nix b/pkgs/development/python-modules/py-air-control-exporter/default.nix
index 714cd613fcea3..b38fe6cf0cd5b 100644
--- a/pkgs/development/python-modules/py-air-control-exporter/default.nix
+++ b/pkgs/development/python-modules/py-air-control-exporter/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchPypi
-, flask
-, isPy27
-, nixosTests
-, prometheus-client
-, py-air-control
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchPypi,
+  flask,
+  isPy27,
+  nixosTests,
+  prometheus-client,
+  py-air-control,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -28,13 +29,13 @@ buildPythonPackage rec {
     py-air-control
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "py_air_control_exporter" ];
 
-  passthru.tests = { inherit (nixosTests.prometheus-exporters) py-air-control; };
+  passthru.tests = {
+    inherit (nixosTests.prometheus-exporters) py-air-control;
+  };
 
   meta = with lib; {
     description = "Exports Air Quality Metrics to Prometheus";
diff --git a/pkgs/development/python-modules/py-air-control/default.nix b/pkgs/development/python-modules/py-air-control/default.nix
index 47470eb48fe9e..73cac52da8284 100644
--- a/pkgs/development/python-modules/py-air-control/default.nix
+++ b/pkgs/development/python-modules/py-air-control/default.nix
@@ -1,4 +1,11 @@
-{ buildPythonPackage, coapthon3, fetchFromGitHub, isPy27, lib, pycryptodomex }:
+{
+  buildPythonPackage,
+  coapthon3,
+  fetchFromGitHub,
+  isPy27,
+  lib,
+  pycryptodomex,
+}:
 
 buildPythonPackage rec {
   pname = "py-air-control";
@@ -13,7 +20,10 @@ buildPythonPackage rec {
     sha256 = "0mkggl5hwmj90djxbbz4svim6iv7xl8k324cb4rlc75p5rgcdwmh";
   };
 
-  propagatedBuildInputs = [ pycryptodomex coapthon3 ];
+  propagatedBuildInputs = [
+    pycryptodomex
+    coapthon3
+  ];
 
   # tests sometimes hang forever on tear-down
   doCheck = false;
@@ -21,7 +31,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     inherit (src.meta) homepage;
-    description = "Command Line App for Controlling Philips Air Purifiers.";
+    description = "Command Line App for Controlling Philips Air Purifiers";
     license = licenses.mit;
     maintainers = with maintainers; [ urbas ];
   };
diff --git a/pkgs/development/python-modules/py-aosmith/default.nix b/pkgs/development/python-modules/py-aosmith/default.nix
index bce96a1d320ba..5b504e647ea64 100644
--- a/pkgs/development/python-modules/py-aosmith/default.nix
+++ b/pkgs/development/python-modules/py-aosmith/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, aiohttp
-, tenacity
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  aiohttp,
+  tenacity,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-TjBjyWxBPrZEY/o1DZ+GiFTHTW37WwFN0oyJSyGru28=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
diff --git a/pkgs/development/python-modules/py-bip39-bindings/default.nix b/pkgs/development/python-modules/py-bip39-bindings/default.nix
index 7de906d4256f2..72ea11e585220 100644
--- a/pkgs/development/python-modules/py-bip39-bindings/default.nix
+++ b/pkgs/development/python-modules/py-bip39-bindings/default.nix
@@ -1,12 +1,14 @@
-{ lib
-, fetchFromGitHub
-, fetchpatch
-, buildPythonPackage
-, pythonOlder
-, pytestCheckHook
-, rustPlatform
-, stdenv
-, libiconv }:
+{
+  lib,
+  fetchFromGitHub,
+  fetchpatch,
+  buildPythonPackage,
+  pythonOlder,
+  pytestCheckHook,
+  rustPlatform,
+  stdenv,
+  libiconv,
+}:
 
 buildPythonPackage rec {
   pname = "py-bip39-bindings";
@@ -30,9 +32,7 @@ buildPythonPackage rec {
     })
   ];
 
-  cargoDeps = rustPlatform.importCargoLock {
-    lockFile = ./Cargo.lock;
-  };
+  cargoDeps = rustPlatform.importCargoLock { lockFile = ./Cargo.lock; };
 
   postPatch = ''
     cp ${./Cargo.lock} Cargo.lock
@@ -43,19 +43,13 @@ buildPythonPackage rec {
     maturinBuildHook
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests.py"
-  ];
+  pytestFlagsArray = [ "tests.py" ];
 
-  pythonImportsCheck = [
-    "bip39"
-  ];
+  pythonImportsCheck = [ "bip39" ];
 
   meta = with lib; {
     description = "Python bindings for the tiny-bip39 library";
diff --git a/pkgs/development/python-modules/py-canary/default.nix b/pkgs/development/python-modules/py-canary/default.nix
index 7e0200abea3c8..ecfb6a8d072af 100644
--- a/pkgs/development/python-modules/py-canary/default.nix
+++ b/pkgs/development/python-modules/py-canary/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "py-canary";
-  version = "0.5.3";
+  version = "0.5.4";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -20,16 +21,12 @@ buildPythonPackage rec {
     owner = "snjoetw";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-873XAf0jOX5pjrNRELEcTWCauk80FUYxTu7G7jc3MHE=";
+    hash = "sha256-zylWkssU85eSfR+Di7vQGTr6hOQkqXCObv/PCDHoKHA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     mock
@@ -37,9 +34,7 @@ buildPythonPackage rec {
     requests-mock
   ];
 
-  pythonImportsCheck = [
-    "canary"
-  ];
+  pythonImportsCheck = [ "canary" ];
 
   disabledTests = [
     # Test requires network access
diff --git a/pkgs/development/python-modules/py-ccm15/default.nix b/pkgs/development/python-modules/py-ccm15/default.nix
new file mode 100644
index 0000000000000..aa4ccf9928e2e
--- /dev/null
+++ b/pkgs/development/python-modules/py-ccm15/default.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+  httpx,
+  xmltodict,
+  aiohttp,
+}:
+
+buildPythonPackage {
+  pname = "py-ccm15";
+  version = "0.0.9";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "ocalvo";
+    repo = "py-ccm15";
+    # Upstream does not have a tag for this release and this is the exact release commit
+    # Therefore it should not be marked unstable
+    # upstream issue: https://github.com/ocalvo/py-ccm15/issues/10
+    rev = "3891d840e69d241c85bf9486e7fe0bb3c7443980";
+    hash = "sha256-I2/AdG07PAvuC8rQKOIAUk7u3pJpANMaFpvEsejWeBU=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    httpx
+    xmltodict
+    aiohttp
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "ccm15" ];
+
+  meta = {
+    description = "Python Library to access a Midea CCM15 data converter";
+    homepage = "https://github.com/ocalvo/py-ccm15";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ pyrox0 ];
+  };
+}
diff --git a/pkgs/development/python-modules/py-cid/default.nix b/pkgs/development/python-modules/py-cid/default.nix
index 947583f0a7b3f..7b986be7dc422 100644
--- a/pkgs/development/python-modules/py-cid/default.nix
+++ b/pkgs/development/python-modules/py-cid/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, base58
-, py-multibase
-, py-multicodec
-, morphys
-, py-multihash
-, hypothesis
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  base58,
+  py-multibase,
+  py-multicodec,
+  morphys,
+  py-multihash,
+  hypothesis,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/py-cpuinfo/default.nix b/pkgs/development/python-modules/py-cpuinfo/default.nix
index ed6bdab5cfa4f..8485fe8c28376 100644
--- a/pkgs/development/python-modules/py-cpuinfo/default.nix
+++ b/pkgs/development/python-modules/py-cpuinfo/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, sysctl
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  sysctl,
 }:
 
 buildPythonPackage rec {
@@ -15,26 +16,22 @@ buildPythonPackage rec {
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
-     owner = "workhorsy";
-     repo = pname;
-     rev = "v${version}";
-     hash = "sha256-Q5u0guAqDVhf6bvJTzNvCpWbIzjxxAjE7s0OuXj9T4Q=";
+    owner = "workhorsy";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-Q5u0guAqDVhf6bvJTzNvCpWbIzjxxAjE7s0OuXj9T4Q=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # On Darwin sysctl is used to read CPU information.
-  postPatch = lib.optionalString stdenv.isDarwin ''
+  postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
     substituteInPlace cpuinfo/cpuinfo.py \
       --replace "len(_program_paths('sysctl')) > 0" "True" \
       --replace "_run_and_get_stdout(['sysctl'" "_run_and_get_stdout(['${sysctl}/bin/sysctl'"
   '';
 
-  pythonImportsCheck = [
-    "cpuinfo"
-  ];
+  pythonImportsCheck = [ "cpuinfo" ];
 
   meta = with lib; {
     description = "Get CPU info with pure Python";
@@ -48,6 +45,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/workhorsy/py-cpuinfo";
     changelog = "https://github.com/workhorsy/py-cpuinfo/blob/v${version}/ChangeLog";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/py-deprecate/default.nix b/pkgs/development/python-modules/py-deprecate/default.nix
index de7e506c0db31..c6c2c62ee0416 100644
--- a/pkgs/development/python-modules/py-deprecate/default.nix
+++ b/pkgs/development/python-modules/py-deprecate/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, scikit-learn
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  scikit-learn,
 }:
 
 let
@@ -28,12 +29,9 @@ buildPythonPackage {
   pythonImportsCheck = [ "deprecate" ];
 
   meta = with lib; {
-    description = "A module for marking deprecated functions or classes and re-routing to the new successors' instance. Used by torchmetrics";
+    description = "Module for marking deprecated functions or classes and re-routing to the new successors' instance. Used by torchmetrics";
     homepage = "https://borda.github.io/pyDeprecate/";
     license = licenses.asl20;
-    maintainers = with maintainers; [
-      SomeoneSerge
-    ];
+    maintainers = with maintainers; [ SomeoneSerge ];
   };
 }
-
diff --git a/pkgs/development/python-modules/py-desmume/default.nix b/pkgs/development/python-modules/py-desmume/default.nix
index 1009a1fbedb7a..311d4fdac0652 100644
--- a/pkgs/development/python-modules/py-desmume/default.nix
+++ b/pkgs/development/python-modules/py-desmume/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, alsa-lib
-, buildPythonPackage
-, fetchFromGitHub
-, gitpython
-, libpcap
-, meson
-, ninja
-, openal
-, pillow
-, pkg-config
-, pygobject3
-, pythonOlder
-, SDL2
-, soundtouch
+{
+  lib,
+  alsa-lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gitpython,
+  libpcap,
+  meson,
+  ninja,
+  openal,
+  pillow,
+  pkg-config,
+  pygobject3,
+  pythonOlder,
+  SDL2,
+  soundtouch,
 }:
 
 buildPythonPackage rec {
@@ -50,15 +51,11 @@ buildPythonPackage rec {
     pygobject3
   ];
 
-  hardeningDisable = [
-    "format"
-  ];
+  hardeningDisable = [ "format" ];
 
   doCheck = false; # there are no tests
 
-  pythonImportsCheck = [
-    "desmume"
-  ];
+  pythonImportsCheck = [ "desmume" ];
 
   meta = with lib; {
     description = "Python library to interface with DeSmuME, the Nintendo DS emulator";
diff --git a/pkgs/development/python-modules/py-dmidecode/default.nix b/pkgs/development/python-modules/py-dmidecode/default.nix
index bcd850def6250..893121ff1e3d3 100644
--- a/pkgs/development/python-modules/py-dmidecode/default.nix
+++ b/pkgs/development/python-modules/py-dmidecode/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, dmidecode
-, fetchPypi
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dmidecode,
+  fetchPypi,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,20 +20,14 @@ buildPythonPackage rec {
     hash = "sha256-pS1fRWuWLnXuNEGYXU/j1njC8THWQOHbnVOF9+c13Cw=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    dmidecode
-  ];
+  propagatedBuildInputs = [ dmidecode ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dmidecode"
-  ];
+  pythonImportsCheck = [ "dmidecode" ];
 
   meta = with lib; {
     description = "Python library that parses the output of dmidecode";
diff --git a/pkgs/development/python-modules/py-dormakaba-dkey/default.nix b/pkgs/development/python-modules/py-dormakaba-dkey/default.nix
index 405c1e61cad6a..ea0896225a002 100644
--- a/pkgs/development/python-modules/py-dormakaba-dkey/default.nix
+++ b/pkgs/development/python-modules/py-dormakaba-dkey/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, bleak
-, bleak-retry-connector
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, fetchpatch
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  bleak,
+  bleak-retry-connector,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  fetchpatch,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -47,9 +48,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "py_dormakaba_dkey"
-  ];
+  pythonImportsCheck = [ "py_dormakaba_dkey" ];
 
   meta = with lib; {
     description = "Library to interact with a Dormakaba dkey lock";
diff --git a/pkgs/development/python-modules/py-ecc/default.nix b/pkgs/development/python-modules/py-ecc/default.nix
index d7769ea4873d9..6ee5b05346739 100644
--- a/pkgs/development/python-modules/py-ecc/default.nix
+++ b/pkgs/development/python-modules/py-ecc/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cached-property
-, eth-typing
-, eth-utils
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cached-property,
+  eth-typing,
+  eth-utils,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-DKe+bI1GEzXg4Y4n5OA1/hWYz9L3X1AvaOFPEnCaAfs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     cached-property
@@ -33,9 +32,7 @@ buildPythonPackage rec {
     eth-utils
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = lib.optionals (pythonAtLeast "3.12") [
     # https://github.com/ethereum/py_ecc/issues/133
@@ -56,6 +53,6 @@ buildPythonPackage rec {
     description = "ECC pairing and bn_128 and bls12_381 curve operations";
     homepage = "https://github.com/ethereum/py_ecc";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/py-eth-sig-utils/default.nix b/pkgs/development/python-modules/py-eth-sig-utils/default.nix
index ed92c9c2e41eb..bf95fb2da73f8 100644
--- a/pkgs/development/python-modules/py-eth-sig-utils/default.nix
+++ b/pkgs/development/python-modules/py-eth-sig-utils/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, eth-abi
-, py-ecc
-, pycryptodome
-, python
-, rlp
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  eth-abi,
+  py-ecc,
+  pycryptodome,
+  python,
+  rlp,
 }:
 
 buildPythonPackage rec {
@@ -40,7 +41,7 @@ buildPythonPackage rec {
     description = "Collection of functions to generate hashes for signing on Ethereum";
     homepage = "https://github.com/rmeissner/py-eth-sig-utils";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     # TODO: upstream is stale and doesn't not work with the new `eth-abi` package any more.
     broken = true;
   };
diff --git a/pkgs/development/python-modules/py-expression-eval/default.nix b/pkgs/development/python-modules/py-expression-eval/default.nix
index 13797e3adc784..f184c025e218e 100644
--- a/pkgs/development/python-modules/py-expression-eval/default.nix
+++ b/pkgs/development/python-modules/py-expression-eval/default.nix
@@ -1,4 +1,5 @@
-{ lib,
+{
+  lib,
   buildPythonPackage,
   fetchFromGitHub,
 }:
diff --git a/pkgs/development/python-modules/py-libzfs/default.nix b/pkgs/development/python-modules/py-libzfs/default.nix
index 661a79dd64855..b5d8e7f4ab292 100644
--- a/pkgs/development/python-modules/py-libzfs/default.nix
+++ b/pkgs/development/python-modules/py-libzfs/default.nix
@@ -1,33 +1,42 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, cython_0
-, zfs
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  cython_0,
+  zfs,
 }:
 
 buildPythonPackage rec {
   pname = "py-libzfs";
-  version = "22.12.4.2";
+  version = "24.04.0";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "truenas";
     repo = pname;
     rev = "TS-${version}";
-    hash = "sha256-vBLbjP1gQEQNsTLc2W6uRzCFHQXZp+jGiwE0Pe8VTuw=";
+    hash = "sha256-Uiu0RNE06++iNWUNcKpbZvreT2D7/EqHlFZJXKe3F4A=";
   };
 
-  nativeBuildInputs = [ cython_0 ];
+  patches = [
+    (fetchpatch2 {
+      url = "https://github.com/truenas/py-libzfs/commit/b5ffe1f1d6097df6e2f5cc6dd3c968872ec60804.patch";
+      hash = "sha256-6r5hQ/o7c4vq4Tfh0l1WbeK3AuPvi+1wzkwkIn1qEes=";
+    })
+  ];
+
+  build-system = [ cython_0 ];
   buildInputs = [ zfs ];
 
   # Passing CFLAGS in configureFlags does not work, see https://github.com/truenas/py-libzfs/issues/107
-  postPatch = lib.optionalString stdenv.isLinux ''
+  postPatch = lib.optionalString stdenv.hostPlatform.isLinux ''
     substituteInPlace configure \
-      --replace \
+      --replace-fail \
         'CFLAGS="-DCYTHON_FALLTHROUGH"' \
         'CFLAGS="-DCYTHON_FALLTHROUGH -I${zfs.dev}/include/libzfs -I${zfs.dev}/include/libspl"' \
-      --replace 'zof=false' 'zof=true'
+      --replace-fail 'zof=false' 'zof=true'
   '';
 
   pythonImportsCheck = [ "libzfs" ];
@@ -42,4 +51,3 @@ buildPythonPackage rec {
     platforms = platforms.linux;
   };
 }
-
diff --git a/pkgs/development/python-modules/py-lru-cache/default.nix b/pkgs/development/python-modules/py-lru-cache/default.nix
index 85045a156bd5e..a9d7488695017 100644
--- a/pkgs/development/python-modules/py-lru-cache/default.nix
+++ b/pkgs/development/python-modules/py-lru-cache/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -15,10 +16,9 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "An in-memory LRU cache for python";
+    description = "In-memory LRU cache for python";
     homepage = "https://github.com/stucchio/Python-LRU-cache";
     license = licenses.gpl3;
     maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/py-machineid/default.nix b/pkgs/development/python-modules/py-machineid/default.nix
new file mode 100644
index 0000000000000..80db186a74294
--- /dev/null
+++ b/pkgs/development/python-modules/py-machineid/default.nix
@@ -0,0 +1,31 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "py-machineid";
+  version = "0.6.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-AMONhSHUKaRTm92SlnI02yihorSyYwYrNRygAjMuYz8=";
+  };
+
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "machineid" ];
+
+  # Tests are not present in Pypi archive
+  doCheck = false;
+
+  meta = {
+    description = "Get the unique machine ID of any host (without admin privileges)";
+    homepage = "https://github.com/keygen-sh/py-machineid";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/pkgs/development/python-modules/py-madvr2/default.nix b/pkgs/development/python-modules/py-madvr2/default.nix
new file mode 100644
index 0000000000000..05799d43226ae
--- /dev/null
+++ b/pkgs/development/python-modules/py-madvr2/default.nix
@@ -0,0 +1,41 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pytest-asyncio,
+  pytestCheckHook,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "py-madvr2";
+  version = "1.6.32";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "iloveicedgreentea";
+    repo = "py-madvr";
+    rev = "refs/tags/${version}";
+    hash = "sha256-yD8DNhYG9oauEGKnX8Qnh0oSwG/AZa8FIRtHVq4DyTE=";
+  };
+
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "madvr" ];
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  # https://github.com/iloveicedgreentea/py-madvr/issues/12
+  doCheck = false;
+
+  meta = {
+    changelog = "https://github.com/iloveicedgreentea/py-madvr/releases/tag/${version}";
+    description = "Control MadVR Envy over IP";
+    homepage = "https://github.com/iloveicedgreentea/py-madvr";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/py-multiaddr/default.nix b/pkgs/development/python-modules/py-multiaddr/default.nix
index 28ee3cffb9172..95016f826c622 100644
--- a/pkgs/development/python-modules/py-multiaddr/default.nix
+++ b/pkgs/development/python-modules/py-multiaddr/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, varint
-, base58
-, netaddr
-, idna
-, py-cid
-, py-multicodec
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  varint,
+  base58,
+  netaddr,
+  idna,
+  py-cid,
+  py-multicodec,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -37,16 +38,17 @@ buildPythonPackage rec {
     py-multicodec
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "multiaddr" ];
 
   meta = with lib; {
     description = "Composable and future-proof network addresses";
     homepage = "https://github.com/multiformats/py-multiaddr";
-    license = with licenses; [ mit asl20 ];
+    license = with licenses; [
+      mit
+      asl20
+    ];
     maintainers = with maintainers; [ Luflosi ];
   };
 }
diff --git a/pkgs/development/python-modules/py-multibase/default.nix b/pkgs/development/python-modules/py-multibase/default.nix
index 50f1d9e9b3760..250c1290579da 100644
--- a/pkgs/development/python-modules/py-multibase/default.nix
+++ b/pkgs/development/python-modules/py-multibase/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, morphys
-, pytestCheckHook
-, python-baseconv
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  morphys,
+  pytestCheckHook,
+  python-baseconv,
+  pythonOlder,
+  six,
 }:
 buildPythonPackage rec {
   pname = "py-multibase";
@@ -33,13 +34,9 @@ buildPythonPackage rec {
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "multibase"
-  ];
+  pythonImportsCheck = [ "multibase" ];
 
   meta = with lib; {
     description = "Module for distinguishing base encodings and other simple string encodings";
diff --git a/pkgs/development/python-modules/py-multicodec/default.nix b/pkgs/development/python-modules/py-multicodec/default.nix
index 21f396d9c2a22..a657d8eb459d6 100644
--- a/pkgs/development/python-modules/py-multicodec/default.nix
+++ b/pkgs/development/python-modules/py-multicodec/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, morphys
-, pytestCheckHook
-, pythonOlder
-, six
-, varint
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  morphys,
+  pytestCheckHook,
+  pythonOlder,
+  six,
+  varint,
 }:
 
 buildPythonPackage rec {
@@ -37,13 +38,9 @@ buildPythonPackage rec {
     varint
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "multicodec"
-  ];
+  pythonImportsCheck = [ "multicodec" ];
 
   meta = with lib; {
     description = "Compact self-describing codecs";
diff --git a/pkgs/development/python-modules/py-multihash/default.nix b/pkgs/development/python-modules/py-multihash/default.nix
index 9ae0d1a1d3dbd..9ad80769e9544 100644
--- a/pkgs/development/python-modules/py-multihash/default.nix
+++ b/pkgs/development/python-modules/py-multihash/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, base58
-, buildPythonPackage
-, fetchFromGitHub
-, morphys
-, pytestCheckHook
-, pythonOlder
-, six
-, varint
+{
+  lib,
+  base58,
+  buildPythonPackage,
+  fetchFromGitHub,
+  morphys,
+  pytestCheckHook,
+  six,
+  varint,
 }:
 
 buildPythonPackage rec {
@@ -14,8 +14,6 @@ buildPythonPackage rec {
   version = "2.0.1";
   format = "setuptools";
 
-  disabled = pythonOlder "3.4";
-
   src = fetchFromGitHub {
     owner = "multiformats";
     repo = pname;
@@ -35,13 +33,9 @@ buildPythonPackage rec {
     varint
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "multihash"
-  ];
+  pythonImportsCheck = [ "multihash" ];
 
   meta = with lib; {
     description = "Self describing hashes - for future proofing";
diff --git a/pkgs/development/python-modules/py-nextbusnext/default.nix b/pkgs/development/python-modules/py-nextbusnext/default.nix
index 090883bad3d96..2eea298d8bf3a 100644
--- a/pkgs/development/python-modules/py-nextbusnext/default.nix
+++ b/pkgs/development/python-modules/py-nextbusnext/default.nix
@@ -1,36 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "py-nextbusnext";
-  version = "1.0.2";
+  version = "2.0.5";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "ViViDboarder";
     repo = "py_nextbus";
     rev = "refs/tags/v${version}";
-    hash = "sha256-5zD8AKb4/4x4cVA922OlzSOXlg3F6QCcr16agEQkUWM=";
+    hash = "sha256-/pzlxYGXqWix11G7DsHgwkCrSQFT/N1boKcBJ1YpE0A=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  dependencies = [ requests ];
 
-  pythonImportsCheck = [
-    "py_nextbus"
-  ];
+  pythonImportsCheck = [ "py_nextbus" ];
+
+  # upstream has no tests
+  doCheck = false;
 
   meta = with lib; {
     description = "Minimalistic Python client for the NextBus public API";
diff --git a/pkgs/development/python-modules/py-nightscout/default.nix b/pkgs/development/python-modules/py-nightscout/default.nix
index 3330b68c949e8..e690f1b1cacaf 100644
--- a/pkgs/development/python-modules/py-nightscout/default.nix
+++ b/pkgs/development/python-modules/py-nightscout/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, pytz
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  pytz,
 }:
 
 buildPythonPackage rec {
@@ -36,10 +37,7 @@ buildPythonPackage rec {
     pytest-asyncio
   ];
 
-
-  pythonImportsCheck = [
-    "py_nightscout"
-  ];
+  pythonImportsCheck = [ "py_nightscout" ];
 
   meta = with lib; {
     description = "Python library that provides an interface to Nightscout";
diff --git a/pkgs/development/python-modules/py-opensonic/default.nix b/pkgs/development/python-modules/py-opensonic/default.nix
new file mode 100644
index 0000000000000..22f3ebe7ecc88
--- /dev/null
+++ b/pkgs/development/python-modules/py-opensonic/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "py-opensonic";
+  version = "5.1.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "khers";
+    repo = "py-opensonic";
+    rev = "v${version}";
+    hash = "sha256-wXTXuX+iIMEoALxsciopucmvBxAyEeiOgjJPrbD63gM=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ requests ];
+
+  doCheck = false; # no tests
+
+  pythonImportsCheck = [
+    "libopensonic"
+  ];
+
+  meta = with lib; {
+    description = "Python library to wrap the Open Subsonic REST API";
+    homepage = "https://github.com/khers/py-opensonic";
+    changelog = "https://github.com/khers/py-opensonic/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/development/python-modules/py-partiql-parser/default.nix b/pkgs/development/python-modules/py-partiql-parser/default.nix
index 95cfa9e9c9b74..f3978e4fb6957 100644
--- a/pkgs/development/python-modules/py-partiql-parser/default.nix
+++ b/pkgs/development/python-modules/py-partiql-parser/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, hatchling
-, sure
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  hatchling,
+  sure,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,17 @@ buildPythonPackage rec {
     hash = "sha256-BSqc3xibStb3J6Rua4dDp/eRD5/ns/dU1vGa4vL1Cyo=";
   };
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   nativeCheckInputs = [
     pytestCheckHook
     sure
   ];
 
-  pythonImportsCheck = [
-    "py_partiql_parser"
-  ];
+  pythonImportsCheck = [ "py_partiql_parser" ];
 
   meta = with lib; {
-    description = "A tokenizer/parser/executor for the PartiQL-language";
+    description = "Tokenizer/parser/executor for the PartiQL-language";
     homepage = "https://github.com/getmoto/py-partiql-parser";
     changelog = "https://github.com/getmoto/py-partiql-parser/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/py-pdf-parser/default.nix b/pkgs/development/python-modules/py-pdf-parser/default.nix
index 36df1c18f0b41..551eaea8cc62e 100644
--- a/pkgs/development/python-modules/py-pdf-parser/default.nix
+++ b/pkgs/development/python-modules/py-pdf-parser/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, buildPythonPackage
-, docopt
-, fetchPypi
-, pdfminer-six
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools
-, wand
+{
+  lib,
+  buildPythonPackage,
+  docopt,
+  fetchPypi,
+  pdfminer-six,
+  pythonOlder,
+  setuptools,
+  wand,
 }:
 
 buildPythonPackage rec {
   pname = "py-pdf-parser";
-  version = "0.12.0";
+  version = "0.13.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-nMEmzQVz1LR4omHyxhvrjBXDQQE23S62T0wxZeMnXhg=";
+    hash = "sha256-dssxWgbMrWFTK4b7oBezF77k9NmUTbdbQED9eyVQGlU=";
   };
 
   nativeBuildInputs = [
     setuptools
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -47,7 +46,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A tool to help extracting information from structured PDFs";
+    description = "Tool to help extracting information from structured PDFs";
     homepage = "https://github.com/jstockwin/py-pdf-parser";
     changelog = "https://github.com/jstockwin/py-pdf-parser/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/py-radix-sr/default.nix b/pkgs/development/python-modules/py-radix-sr/default.nix
index 26a9d2f555def..50061cab48aa1 100644
--- a/pkgs/development/python-modules/py-radix-sr/default.nix
+++ b/pkgs/development/python-modules/py-radix-sr/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
@@ -38,7 +39,10 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python radix tree for IPv4 and IPv6 prefix matching";
     homepage = "https://github.com/SEKOIA-IO/py-radix";
-    license = with licenses; [ isc bsdOriginal ];
+    license = with licenses; [
+      isc
+      bsdOriginal
+    ];
     maintainers = teams.wdz.members;
   };
 }
diff --git a/pkgs/development/python-modules/py-scrypt/default.nix b/pkgs/development/python-modules/py-scrypt/default.nix
index a997bc11ef0d2..c0fe6b756b348 100644
--- a/pkgs/development/python-modules/py-scrypt/default.nix
+++ b/pkgs/development/python-modules/py-scrypt/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, openssl
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  openssl,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Bindings for scrypt key derivation function library";
     homepage = "https://pypi.python.org/pypi/scrypt";
-    maintainers = [];
+    maintainers = [ ];
     license = licenses.bsd2;
   };
 }
diff --git a/pkgs/development/python-modules/py-serializable/default.nix b/pkgs/development/python-modules/py-serializable/default.nix
index dd7b8dd4312dd..6754d656e23f2 100644
--- a/pkgs/development/python-modules/py-serializable/default.nix
+++ b/pkgs/development/python-modules/py-serializable/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "py-serializable";
-  version = "1.0.3";
+  version = "1.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,11 +21,13 @@ buildPythonPackage rec {
     owner = "madpah";
     repo = "serializable";
     rev = "refs/tags/v${version}";
-    hash = "sha256-oVjb7/9RWvQd5L6xQBrspfblPzMaRvnZHDuojTuq+zE=";
+    hash = "sha256-8ciRzanrcb7DMAcWzIxRkgeCRGw+Ji8Epnw67cylGeQ=";
   };
 
   build-system = [ poetry-core ];
 
+  pythonRelaxDeps = [ "defusedxml" ];
+
   dependencies = [ defusedxml ];
 
   nativeCheckInputs = [
diff --git a/pkgs/development/python-modules/py-slvs/default.nix b/pkgs/development/python-modules/py-slvs/default.nix
new file mode 100644
index 0000000000000..1f434fe66970f
--- /dev/null
+++ b/pkgs/development/python-modules/py-slvs/default.nix
@@ -0,0 +1,50 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  swig,
+  cmake,
+  ninja,
+  setuptools,
+  scikit-build,
+}:
+
+buildPythonPackage rec {
+  pname = "py-slvs";
+  version = "1.0.6";
+
+  src = fetchPypi {
+    pname = "py_slvs";
+    inherit version;
+    hash = "sha256-U6T/aXy0JTC1ptL5oBmch0ytSPmIkRA8XOi31NpArnI=";
+  };
+
+  pyproject = true;
+
+  nativeBuildInputs = [
+    swig
+  ];
+
+  build-system = [
+    cmake
+    ninja
+    setuptools
+    scikit-build
+  ];
+
+  dontUseCmakeConfigure = true;
+
+  pythonImportsCheck = [
+    "py_slvs"
+  ];
+
+  meta = {
+    description = "Python binding of SOLVESPACE geometry constraint solver";
+    homepage = "https://github.com/realthunder/slvs_py";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [
+      traverseda
+    ];
+  };
+}
+
diff --git a/pkgs/development/python-modules/py-sneakers/default.nix b/pkgs/development/python-modules/py-sneakers/default.nix
index b69516d47a777..bcb9c07fb3230 100644
--- a/pkgs/development/python-modules/py-sneakers/default.nix
+++ b/pkgs/development/python-modules/py-sneakers/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "py_sneakers"
-  ];
+  pythonImportsCheck = [ "py_sneakers" ];
 
   meta = with lib; {
     description = "Library to emulate the Sneakers movie effect";
diff --git a/pkgs/development/python-modules/py-sonic/default.nix b/pkgs/development/python-modules/py-sonic/default.nix
index 826c23120ed99..5120e8a77b038 100644
--- a/pkgs/development/python-modules/py-sonic/default.nix
+++ b/pkgs/development/python-modules/py-sonic/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27 }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+}:
 
 buildPythonPackage rec {
   pname = "py-sonic";
@@ -17,7 +22,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/crustymonkey/py-sonic";
-    description = "A python wrapper library for the Subsonic REST API";
+    description = "Python wrapper library for the Subsonic REST API";
     license = licenses.gpl3;
     maintainers = with maintainers; [ wenngle ];
   };
diff --git a/pkgs/development/python-modules/py-sr25519-bindings/default.nix b/pkgs/development/python-modules/py-sr25519-bindings/default.nix
index c001344a293b1..123562c8d21ad 100644
--- a/pkgs/development/python-modules/py-sr25519-bindings/default.nix
+++ b/pkgs/development/python-modules/py-sr25519-bindings/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, fetchFromGitHub
-, fetchpatch
-, buildPythonPackage
-, pythonOlder
-, pytestCheckHook
-, rustPlatform
-, stdenv
-, py-bip39-bindings
-, libiconv }:
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  pytestCheckHook,
+  rustPlatform,
+  stdenv,
+  py-bip39-bindings,
+  libiconv,
+}:
 
 buildPythonPackage rec {
   pname = "py-sr25519-bindings";
@@ -34,25 +35,24 @@ buildPythonPackage rec {
     maturinBuildHook
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
   nativeCheckInputs = [
     pytestCheckHook
     py-bip39-bindings
   ];
 
-  pytestFlagsArray = [
-    "tests.py"
-  ];
+  pytestFlagsArray = [ "tests.py" ];
 
-  pythonImportsCheck = [
-    "sr25519"
-  ];
+  pythonImportsCheck = [ "sr25519" ];
 
   meta = with lib; {
     description = "Python bindings for sr25519 library";
     homepage = "https://github.com/polkascan/py-sr25519-bindings";
     license = licenses.asl20;
-    maintainers = with maintainers; [ onny stargate01 ];
+    maintainers = with maintainers; [
+      onny
+      stargate01
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/py-stringmatching/default.nix b/pkgs/development/python-modules/py-stringmatching/default.nix
index 305451aeb1654..fd6a265b87e5e 100644
--- a/pkgs/development/python-modules/py-stringmatching/default.nix
+++ b/pkgs/development/python-modules/py-stringmatching/default.nix
@@ -1,45 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pytestCheckHook
-, numpy
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
+  numpy,
+  pythonOlder,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "py-stringmatching";
-  version = "0.4.5";
+  version = "0.4.6";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-2XuhtWKtmO/8lGaHxdqwdMF6UVEUqw3PUCIC1c7J8rU=";
+    hash = "sha256-XdHLHwT/sgHM+uQ4lxw9c+AcAdJjL6OVgfwtJkYLoBs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     numpy
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     cd $out
   '';
 
-  pythonImportsCheck = [
-    "py_stringmatching"
-  ];
+  pythonImportsCheck = [ "py_stringmatching" ];
 
   meta = with lib; {
     description = "Python string matching library including string tokenizers and string similarity measures";
diff --git a/pkgs/development/python-modules/py-sucks/default.nix b/pkgs/development/python-modules/py-sucks/default.nix
new file mode 100644
index 0000000000000..b7d8cf5208da1
--- /dev/null
+++ b/pkgs/development/python-modules/py-sucks/default.nix
@@ -0,0 +1,57 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  click,
+  pycountry-convert,
+  pycryptodome,
+  requests,
+  sleekxmppfs,
+  requests-mock,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "py-sucks";
+  version = "0.9.10";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "mib1185";
+    repo = "py-sucks";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-MjlE5HdxChAgV/O7cD3foqkmKie7FgRRxvOcW+NAtfA=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    click
+    pycountry-convert
+    pycryptodome
+    requests
+    sleekxmppfs
+  ];
+
+  pythonImportsCheck = [ "sucks" ];
+
+  nativeCheckInputs = [
+    requests-mock
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # assumes $HOME is at a specific place
+    "test_config_file_name"
+  ];
+
+  meta = {
+    changelog = "https://github.com/mib1185/py-sucks/releases/tag/v${version}";
+    description = "Library for controlling certain robot vacuums";
+    homepage = "https://github.com/mib1185/py-sucks";
+    license = lib.licenses.gpl3Only;
+    mainProgram = "sucks";
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/py-synologydsm-api/default.nix b/pkgs/development/python-modules/py-synologydsm-api/default.nix
index 415d95f8b324e..7fe3f1f61f4df 100644
--- a/pkgs/development/python-modules/py-synologydsm-api/default.nix
+++ b/pkgs/development/python-modules/py-synologydsm-api/default.nix
@@ -1,45 +1,38 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "py-synologydsm-api";
-  version = "2.4.2";
-  format = "pyproject";
+  version = "2.5.2";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "mib1185";
     repo = "py-synologydsm-api";
     rev = "refs/tags/v${version}";
-    hash = "sha256-uqQY0vt+3JGjciG0t9eh8zK5dnq1QhU6FkzWkKX/+DM=";
+    hash = "sha256-c1qNCOmGEiI+bHDGxJ7OtdmPFcdkev+5U9cuDC8O5iQ=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    aiohttp
-    async-timeout
-  ];
+  dependencies = [ aiohttp ];
 
   nativeCheckInputs = [
+    pytest-asyncio
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "synology_dsm"
-  ];
+  pythonImportsCheck = [ "synology_dsm" ];
 
   meta = with lib; {
     description = "Python API for Synology DSM";
diff --git a/pkgs/development/python-modules/py-tes/default.nix b/pkgs/development/python-modules/py-tes/default.nix
index 6fba131e07139..b7d46b97f5b1b 100644
--- a/pkgs/development/python-modules/py-tes/default.nix
+++ b/pkgs/development/python-modules/py-tes/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, attrs
-, buildPythonPackage
-, fetchFromGitHub
-, future
-, python-dateutil
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  future,
+  python-dateutil,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
     requests-mock
   ];
 
-  pythonImportsCheck = [
-    "tes"
-  ];
+  pythonImportsCheck = [ "tes" ];
 
   meta = with lib; {
     description = "Python SDK for the GA4GH Task Execution API";
diff --git a/pkgs/development/python-modules/py-ubjson/default.nix b/pkgs/development/python-modules/py-ubjson/default.nix
index f9518fdead937..7eca2165efc1d 100644
--- a/pkgs/development/python-modules/py-ubjson/default.nix
+++ b/pkgs/development/python-modules/py-ubjson/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,22 +17,16 @@ buildPythonPackage rec {
     sha256 = "1frn97xfa88zrfmpnvdk1pc03yihlchhph99bhjayvzlfcrhm5v3";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # https://github.com/Iotic-Labs/py-ubjson/issues/18
     "test_recursion"
   ];
 
-  pytestFlagsArray = [
-    "test/test.py"
-  ];
+  pytestFlagsArray = [ "test/test.py" ];
 
-  pythonImportsCheck = [
-    "ubjson"
-  ];
+  pythonImportsCheck = [ "ubjson" ];
 
   meta = with lib; {
     description = "Universal Binary JSON draft-12 serializer for Python";
diff --git a/pkgs/development/python-modules/py-vapid/default.nix b/pkgs/development/python-modules/py-vapid/default.nix
index 89b7a045d0c1d..aed03b8408732 100644
--- a/pkgs/development/python-modules/py-vapid/default.nix
+++ b/pkgs/development/python-modules/py-vapid/default.nix
@@ -1,27 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mock
-, pytestCheckHook
-, cryptography
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  pytestCheckHook,
+  cryptography,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "py-vapid";
-  version = "1.9.0";
+  version = "1.9.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-BmSreJl0LvKyhzl6TUYe9pHtDML1hyBRKNjPYX/9uRk=";
+    pname = "py_vapid";
+    inherit version;
+    hash = "sha256-/itUYb9Fx7r/EDnfaYHwO4f6qHzeBIKt36NbP+Y2rBs=";
   };
 
-  propagatedBuildInputs = [
-    cryptography
-  ];
+  propagatedBuildInputs = [ cryptography ];
 
   nativeCheckInputs = [
     mock
@@ -33,6 +33,6 @@ buildPythonPackage rec {
     mainProgram = "vapid";
     homepage = "https://github.com/mozilla-services/vapid";
     license = licenses.mpl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/py-zabbix/default.nix b/pkgs/development/python-modules/py-zabbix/default.nix
index b39a706c65387..e9251892bd07f 100644
--- a/pkgs/development/python-modules/py-zabbix/default.nix
+++ b/pkgs/development/python-modules/py-zabbix/default.nix
@@ -1,15 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "py-zabbix";
   version = "1.1.7";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -29,17 +32,21 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "pyzabbix" ];
 
-  pythonImportsCheck = [
-    "pyzabbix"
+  disabledTests = lib.optionals (pythonAtLeast "3.12") [
+    # AttributeError: 'RawConfigParser' object has no attribute 'readfp'
+    "config"
   ];
 
   meta = with lib; {
     description = "Python module to interact with Zabbix";
     homepage = "https://github.com/adubkov/py-zabbix";
+    changelog = "https://github.com/adubkov/py-zabbix/releases/tag/${version}";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/py/default.nix b/pkgs/development/python-modules/py/default.nix
index 3dec18b6e0fc7..7cfe0a7e05b7b 100644
--- a/pkgs/development/python-modules/py/default.nix
+++ b/pkgs/development/python-modules/py/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, setuptools-scm }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+}:
 
 buildPythonPackage rec {
   pname = "py";
@@ -15,9 +20,7 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [ setuptools-scm ];
 
-  pythonImportsCheck = [
-    "py"
-  ];
+  pythonImportsCheck = [ "py" ];
 
   meta = with lib; {
     description = "Library with cross-python path, ini-parsing, io, code, log facilities";
diff --git a/pkgs/development/python-modules/py17track/default.nix b/pkgs/development/python-modules/py17track/default.nix
deleted file mode 100644
index 6294b6b1c0665..0000000000000
--- a/pkgs/development/python-modules/py17track/default.nix
+++ /dev/null
@@ -1,76 +0,0 @@
-{ lib
-, aiohttp
-, aresponses
-, attrs
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, pytz
-}:
-
-buildPythonPackage rec {
-  pname = "py17track";
-  version = "2021.12.2";
-  format = "pyproject";
-
-  disabled = pythonOlder "3.6";
-
-  src = fetchFromGitHub {
-    owner = "bachya";
-    repo = pname;
-    rev = version;
-    hash = "sha256-T0Jjdu6QC8rTqZwe4cdsBbs0hQXUY6CkrImCgYwWL9o=";
-  };
-
-  patches = [
-    # This patch removes references to setuptools and wheel that are no longer
-    # necessary and changes poetry to poetry-core, so that we don't need to add
-    # unnecessary nativeBuildInputs.
-    #
-    #   https://github.com/bachya/py17track/pull/80
-    #
-    (fetchpatch {
-      name = "clean-up-build-dependencies.patch";
-      url = "https://github.com/bachya/py17track/commit/3b52394759aa50c62e2a56581e30cdb94003e2f1.patch";
-      hash = "sha256-iLgklhEZ61rrdzQoO6rp1HGZcqLsqGNitwIiPNLNHQ4=";
-    })
-  ];
-
-  nativeBuildInputs = [
-    poetry-core
-  ];
-
-  propagatedBuildInputs = [
-    aiohttp
-    attrs
-    pytz
-  ];
-
-  __darwinAllowLocalNetworking = true;
-
-  nativeCheckInputs = [
-    aresponses
-    pytest-asyncio
-    pytestCheckHook
-  ];
-
-  disabledTestPaths = [
-    # Ignore the examples directory as the files are prefixed with test_
-    "examples/"
-  ];
-
-  pythonImportsCheck = [
-    "py17track"
-  ];
-
-  meta = with lib; {
-    description = "Python library to track package info from 17track.com";
-    homepage = "https://github.com/bachya/py17track";
-    license = with licenses; [ mit ];
-    maintainers = with maintainers; [ fab ];
-  };
-}
diff --git a/pkgs/development/python-modules/py2bit/default.nix b/pkgs/development/python-modules/py2bit/default.nix
index 9f45e4e2d9e35..96fbdeeb0ab58 100644
--- a/pkgs/development/python-modules/py2bit/default.nix
+++ b/pkgs/development/python-modules/py2bit/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,7 @@ buildPythonPackage rec {
     homepage = "https://github.com/deeptools/py2bit";
     description = "File access to 2bit files";
     longDescription = ''
-        A python extension, written in C, for quick access to 2bit files. The extension uses lib2bit for file access.
+      A python extension, written in C, for quick access to 2bit files. The extension uses lib2bit for file access.
     '';
     license = licenses.mit;
     maintainers = with maintainers; [ scalavision ];
diff --git a/pkgs/development/python-modules/py3buddy/default.nix b/pkgs/development/python-modules/py3buddy/default.nix
index 2b3f3f48f1375..e076aa3b667e9 100644
--- a/pkgs/development/python-modules/py3buddy/default.nix
+++ b/pkgs/development/python-modules/py3buddy/default.nix
@@ -1,21 +1,24 @@
-{ lib, stdenv
-, fetchFromGitHub
-, python
-, pyusb
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  pyusb,
 }:
 
-stdenv.mkDerivation (finalAttrs: {
+buildPythonPackage rec {
   pname = "py3buddy";
   version = "1.0";
+  pyproject = false; # manually installed
 
   src = fetchFromGitHub {
     owner = "armijnhemel";
     repo = "py3buddy";
-    rev = finalAttrs.version;
+    rev = version;
     hash = "sha256-KJ0xGEXHY6o2074WFZ0u7gATS+wrrjyzanYretckWYk=";
   };
 
-  propagatedBuildInputs = [ pyusb ];
+  dependencies = [ pyusb ];
 
   dontConfigure = true;
   dontBuild = true;
@@ -38,4 +41,4 @@ stdenv.mkDerivation (finalAttrs: {
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ prusnak ];
   };
-})
+}
diff --git a/pkgs/development/python-modules/py3dns/default.nix b/pkgs/development/python-modules/py3dns/default.nix
index 5e8027bb60060..14ad167716559 100644
--- a/pkgs/development/python-modules/py3dns/default.nix
+++ b/pkgs/development/python-modules/py3dns/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -27,5 +28,4 @@ buildPythonPackage rec {
     homepage = "https://launchpad.net/py3dns";
     license = licenses.psfl;
   };
-
 }
diff --git a/pkgs/development/python-modules/py3exiv2/default.nix b/pkgs/development/python-modules/py3exiv2/default.nix
index e8c5c6cd15160..e9f0efe24030a 100644
--- a/pkgs/development/python-modules/py3exiv2/default.nix
+++ b/pkgs/development/python-modules/py3exiv2/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, stdenv
-, boost
-, buildPythonPackage
-, exiv2
-, fetchPypi
-, libcxx
-, pythonOlder
+{
+  lib,
+  stdenv,
+  boost,
+  buildPythonPackage,
+  exiv2,
+  fetchPypi,
+  libcxx,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,17 +27,15 @@ buildPythonPackage rec {
   ];
 
   # Work around Python distutils compiling C++ with $CC (see issue #26709)
-  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-I${lib.getDev libcxx}/include/c++/v1";
+  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin "-I${lib.getDev libcxx}/include/c++/v1";
 
-  pythonImportsCheck = [
-    "pyexiv2"
-  ];
+  pythonImportsCheck = [ "pyexiv2" ];
 
   # Tests are not shipped
   doCheck = false;
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     description = "Python binding to the library exiv2";
     homepage = "https://launchpad.net/py3exiv2";
     license = licenses.gpl3Plus;
diff --git a/pkgs/development/python-modules/py3langid/default.nix b/pkgs/development/python-modules/py3langid/default.nix
index 84e758bfc5ef2..248a3bfa2088c 100644
--- a/pkgs/development/python-modules/py3langid/default.nix
+++ b/pkgs/development/python-modules/py3langid/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, numpy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  numpy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,13 +19,9 @@ buildPythonPackage rec {
     hash = "sha256-tN4B2tfnAfKdIWoJNeheCWzIZ1kD0j6oRFsrtfCQuW8=";
   };
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # nixify path to the courlan binary in the test suite
   postPatch = ''
diff --git a/pkgs/development/python-modules/py3nvml/default.nix b/pkgs/development/python-modules/py3nvml/default.nix
index e551298e69fea..af83b78621770 100644
--- a/pkgs/development/python-modules/py3nvml/default.nix
+++ b/pkgs/development/python-modules/py3nvml/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, xmltodict
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-Ce4dBFmKbmZOJEZfgEzjv+EZpv21Ni3xwWj4qpKfvXM=";
   };
 
-  propagatedBuildInputs = [
-    xmltodict
-  ];
+  propagatedBuildInputs = [ xmltodict ];
 
   pythonImportsCheck = [ "py3nvml" ];
 
@@ -24,7 +23,10 @@ buildPythonPackage rec {
     description = "Python 3 Bindings for the NVIDIA Management Library";
     mainProgram = "py3smi";
     homepage = "https://pypi.org/project/py3nvml/";
-    license = with licenses; [ bsd3 bsd2 ];
+    license = with licenses; [
+      bsd3
+      bsd2
+    ];
     maintainers = with maintainers; [ happysalada ];
   };
 }
diff --git a/pkgs/development/python-modules/py3rijndael/default.nix b/pkgs/development/python-modules/py3rijndael/default.nix
index 74a91b6ee2f4c..5e39b14149b27 100644
--- a/pkgs/development/python-modules/py3rijndael/default.nix
+++ b/pkgs/development/python-modules/py3rijndael/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 let
@@ -17,9 +18,7 @@ buildPythonPackage {
     hash = "sha256-tmVaPr/zoQVA6u0EnoeI7qOsk9a3GzpqwrACJLvs6ag=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Rijndael algorithm library";
diff --git a/pkgs/development/python-modules/py3status/default.nix b/pkgs/development/python-modules/py3status/default.nix
index 6ec4405a03684..d762008e2ff24 100644
--- a/pkgs/development/python-modules/py3status/default.nix
+++ b/pkgs/development/python-modules/py3status/default.nix
@@ -1,40 +1,39 @@
-{ lib
-, buildPythonPackage
-, acpi
-, alsa-utils
-, coreutils
-, dbus-python
-, fetchPypi
-, file
-, hatchling
-, i3
-, i3ipc
-, libnotify
-, lm_sensors
-, procps
-, pydbus
-, pygobject3
-, pyserial
-, pytz
-, requests
-, setuptools
-, tzlocal
-, xorg
+{
+  lib,
+  buildPythonPackage,
+  acpi,
+  alsa-utils,
+  coreutils,
+  dbus-python,
+  fetchPypi,
+  file,
+  hatchling,
+  i3,
+  i3ipc,
+  libnotify,
+  lm_sensors,
+  procps,
+  pydbus,
+  pygobject3,
+  pyserial,
+  pytz,
+  requests,
+  setuptools,
+  tzlocal,
+  xorg,
 }:
 
 buildPythonPackage rec {
   pname = "py3status";
-  version = "3.57";
+  version = "3.58";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-6l0l7sbPspdF/TYTOKaWsgOdpfDUs0PyFVKGUBNPwIA=";
+    hash = "sha256-SJScEz9WsqB0jRAHmUHpmnAbuqnRnHUUgc1rDN0tScw=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     pytz
@@ -69,6 +68,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/ultrabug/py3status";
     changelog = "https://github.com/ultrabug/py3status/blob/${version}/CHANGELOG";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/py4j/default.nix b/pkgs/development/python-modules/py4j/default.nix
index fa7fb2cee1db1..9433dbdf37e3b 100644
--- a/pkgs/development/python-modules/py4j/default.nix
+++ b/pkgs/development/python-modules/py4j/default.nix
@@ -1,4 +1,8 @@
-{ buildPythonPackage, fetchPypi, lib }:
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+}:
 
 buildPythonPackage rec {
   pname = "py4j";
@@ -15,7 +19,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "Py4J enables Python programs running in a Python interpreter to dynamically access Java objects in a Java Virtual Machine. Methods are called as if the Java objects resided in the Python interpreter and Java collections can be accessed through standard Python collection methods. Py4J also enables Java programs to call back Python objects.";
+    description = "Py4J enables Python programs running in a Python interpreter to dynamically access Java objects in a Java Virtual Machine. Methods are called as if the Java objects resided in the Python interpreter and Java collections can be accessed through standard Python collection methods. Py4J also enables Java programs to call back Python objects";
     homepage = "https://www.py4j.org/";
     sourceProvenance = with sourceTypes; [
       fromSource
diff --git a/pkgs/development/python-modules/py65/default.nix b/pkgs/development/python-modules/py65/default.nix
index 3c06f5932f001..9f73ed1eb686c 100644
--- a/pkgs/development/python-modules/py65/default.nix
+++ b/pkgs/development/python-modules/py65/default.nix
@@ -1,40 +1,42 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "py65";
-  version = "1.1.0";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.6";
+  version = "1.2.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "mnaberez";
     repo = "py65";
     rev = "refs/tags/${version}";
-    hash = "sha256-WLs3TAZovuphWZIvMvM3CZnqg1aZfMF4Yrqw46k+bLA=";
+    hash = "sha256-BMX+sMPx/YBFA4NFkaY0rl0EPicGHgb6xXVvLEIdllA=";
   };
 
-  postPatch = ''
-    substituteInPlace py65/tests/test_monitor.py \
-          --replace "test_argv_rom" "dont_test_argv_rom" \
-          --replace "test_argv_combination_rom_mpu" "dont_test_argv_combination_rom_mpu"
-  '';
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ unittestCheckHook ];
 
   meta = {
-    homepage = "https://py65.readthedocs.io/";
+    homepage = "https://github.com/mnaberez/py65";
     description = "Emulate 6502-based microcomputer systems in Python";
-    mainProgram = "py65mon";
     longDescription = ''
       Py65 includes a program called Py65Mon that functions as a machine
       language monitor. This kind of program is sometimes also called a
       debugger. Py65Mon provides a command line with many convenient commands
       for interacting with the simulated 6502-based system.
     '';
+    changelog = "https://github.com/mnaberez/py65/blob/${src.rev}/CHANGES.txt";
     license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ AndersonTorres tomasajt ];
+    mainProgram = "py65mon";
+    maintainers = with lib.maintainers; [
+      AndersonTorres
+      tomasajt
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pyTelegramBotAPI/default.nix b/pkgs/development/python-modules/pyTelegramBotAPI/default.nix
index 90b623c35ef49..efbd9d96f4298 100644
--- a/pkgs/development/python-modules/pyTelegramBotAPI/default.nix
+++ b/pkgs/development/python-modules/pyTelegramBotAPI/default.nix
@@ -20,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "pytelegrambotapi";
-  version = "4.17.0";
+  version = "4.23.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -29,7 +29,7 @@ buildPythonPackage rec {
     owner = "eternnoir";
     repo = "pyTelegramBotAPI";
     rev = "refs/tags/${version}";
-    hash = "sha256-Asw6wpZs0FgsUYLVQ4u4qQgIFdvShcsN3XvgHn48cbI=";
+    hash = "sha256-R/RbkiKkhcZd17hgDJnEpr3OCVMvn744YM+lmzSXKWs=";
   };
 
   build-system = [ hatchling ];
diff --git a/pkgs/development/python-modules/pyacaia-async/default.nix b/pkgs/development/python-modules/pyacaia-async/default.nix
index 7d69f39ceb1ec..02f930d3bc895 100644
--- a/pkgs/development/python-modules/pyacaia-async/default.nix
+++ b/pkgs/development/python-modules/pyacaia-async/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, bleak
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  bleak,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -25,21 +26,20 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    bleak
-  ];
+  propagatedBuildInputs = [ bleak ];
 
   # Module has no tests in PyPI releases
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyacaia_async"
-  ];
+  pythonImportsCheck = [ "pyacaia_async" ];
 
   meta = with lib; {
     description = "Module to interact with Acaia scales";
     homepage = "https://github.com/zweckj/pyacaia_async";
-    license = with licenses; [ gpl3Only mit ];
+    license = with licenses; [
+      gpl3Only
+      mit
+    ];
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/pyacoustid/default.nix b/pkgs/development/python-modules/pyacoustid/default.nix
index c5428a30bda80..30211f9b6fd36 100644
--- a/pkgs/development/python-modules/pyacoustid/default.nix
+++ b/pkgs/development/python-modules/pyacoustid/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, audioread
-, pkgs
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  audioread,
+  pkgs,
 }:
 
 buildPythonPackage rec {
@@ -13,10 +14,13 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-X09IcZHBnruQgnCxt7UpfxMtozKxVouWqRRXTAee0Xc=";
+    hash = "sha256-X09IcZHBnruQgnCxt7UpfxMtozKxVouWqRRXTAee0Xc=";
   };
 
-  propagatedBuildInputs = [ requests audioread ];
+  propagatedBuildInputs = [
+    requests
+    audioread
+  ];
 
   postPatch = ''
     sed -i \
@@ -33,6 +37,6 @@ buildPythonPackage rec {
     description = "Bindings for Chromaprint acoustic fingerprinting";
     homepage = "https://github.com/sampsyo/pyacoustid";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyads/default.nix b/pkgs/development/python-modules/pyads/default.nix
index 68dd02bb721db..1d6a7cb0387eb 100644
--- a/pkgs/development/python-modules/pyads/default.nix
+++ b/pkgs/development/python-modules/pyads/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "pyads";
-  version = "3.4.0";
+  version = "3.4.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "stlehmann";
     repo = "pyads";
     rev = "refs/tags/${version}";
-    hash = "sha256-HJ/dlRuwFSY5j/mAp6rLMlTV59GFwrTV27n73TWlCUo=";
+    hash = "sha256-OvDh92fwHW+UzEO5iqVOY7d5H0Es6CJK/f/HCyLO9J4=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/pyaehw4a1/default.nix b/pkgs/development/python-modules/pyaehw4a1/default.nix
index 2f500ea91a226..1506bfd80a788 100644
--- a/pkgs/development/python-modules/pyaehw4a1/default.nix
+++ b/pkgs/development/python-modules/pyaehw4a1/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, isPy27
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  isPy27,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyaes/default.nix b/pkgs/development/python-modules/pyaes/default.nix
index 4d98e7cfac63f..e38123f54e246 100644
--- a/pkgs/development/python-modules/pyaes/default.nix
+++ b/pkgs/development/python-modules/pyaes/default.nix
@@ -1,4 +1,8 @@
-{ lib, fetchPypi, buildPythonPackage }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+}:
 
 buildPythonPackage rec {
   pname = "pyaes";
diff --git a/pkgs/development/python-modules/pyaftership/default.nix b/pkgs/development/python-modules/pyaftership/default.nix
index 7c1c76c4adb5b..372b22b6505f6 100644
--- a/pkgs/development/python-modules/pyaftership/default.nix
+++ b/pkgs/development/python-modules/pyaftership/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, aiohttp
-, aresponses
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  aiohttp,
+  aresponses,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-njlDScmxIYWxB4EL9lOSGCXqZDzP999gI9EkpcZyFlE=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   nativeCheckInputs = [
     aresponses
@@ -39,9 +38,7 @@ buildPythonPackage rec {
       --replace 'version="main",' 'version="${version}",'
   '';
 
-  pythonImportsCheck = [
-    "pyaftership"
-  ];
+  pythonImportsCheck = [ "pyaftership" ];
 
   meta = with lib; {
     description = "Python wrapper package for the AfterShip API";
diff --git a/pkgs/development/python-modules/pyahocorasick/default.nix b/pkgs/development/python-modules/pyahocorasick/default.nix
index 26bdb55d5d441..51ec19016c776 100644
--- a/pkgs/development/python-modules/pyahocorasick/default.nix
+++ b/pkgs/development/python-modules/pyahocorasick/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-SCIgu0uEjiSUiIP0WesJG+y+3ZqFBfI5PdgUzviOVrs=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ahocorasick"
-  ];
+  pythonImportsCheck = [ "ahocorasick" ];
 
   meta = with lib; {
     description = "Python module implementing Aho-Corasick algorithm";
diff --git a/pkgs/development/python-modules/pyairnow/default.nix b/pkgs/development/python-modules/pyairnow/default.nix
index c4a549847a26a..5a59c39d62b26 100644
--- a/pkgs/development/python-modules/pyairnow/default.nix
+++ b/pkgs/development/python-modules/pyairnow/default.nix
@@ -1,47 +1,40 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pytest-aiohttp
-, poetry-core
-, pytest-asyncio
-, pytest-cov
-, pytestCheckHook
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pyairnow";
-  version = "1.2.1";
-  format = "pyproject";
+  version = "1.2.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "asymworks";
-    repo = pname;
+    repo = "pyairnow";
     rev = "refs/tags/v${version}";
-    hash = "sha256-aab+3xrEiCjysa+DzXWelQwz8V2tr74y8v0NpDZiuTk=";
+    hash = "sha256-KjOu9V92n2rq8iOkgutlK7EMRvirFAEK8oxseI+dr2s=";
   };
 
-  patches = [
-    (fetchpatch {
-      # remove setuptools, wheel from build-system requirements
-      # https://github.com/asymworks/pyairnow/pull/7
-      name = "pyairnow-build-system.patch";
-      url = "https://github.com/asymworks/pyairnow/commit/e3cc892ffce855d8213264248b6b4ed78ee791bd.patch";
-      hash = "sha256-L0MV2okkf6Nf1S4zS7lb4lt5eSfTF10yDJLzpyDrSl8=";
-    })
-  ];
-
-  nativeBuildInputs = [ poetry-core ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [ aiohttp ];
+  dependencies = [ aiohttp ];
 
   nativeCheckInputs = [
     aioresponses
     pytest-asyncio
     pytest-aiohttp
-    pytest-cov
+    pytest-cov-stub
     pytestCheckHook
   ];
 
@@ -51,7 +44,7 @@ buildPythonPackage rec {
     description = "Python wrapper for EPA AirNow Air Quality API";
     homepage = "https://github.com/asymworks/pyairnow";
     changelog = "https://github.com/asymworks/pyairnow/blob/v${version}/CHANGELOG.md";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/pyairports/default.nix b/pkgs/development/python-modules/pyairports/default.nix
new file mode 100644
index 0000000000000..3803d95492183
--- /dev/null
+++ b/pkgs/development/python-modules/pyairports/default.nix
@@ -0,0 +1,30 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "pyairports";
+  version = "2.1.1";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-PWCnJ/zk2oG5xjk+qK4LM9Z7N+zjRN/8hj90njrWK80=";
+  };
+
+  build-system = [ setuptools ];
+
+  doCheck = false;
+
+  pythonImportsCheck = [ "pyairports" ];
+
+  meta = with lib; {
+    description = "pyairports is a package which enables airport lookup by 3-letter IATA code.";
+    homepage = "https://github.com/ozeliger/pyairports";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ cfhammill ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyairvisual/default.nix b/pkgs/development/python-modules/pyairvisual/default.nix
index 3e3b44cb237e6..f8a731582e1db 100644
--- a/pkgs/development/python-modules/pyairvisual/default.nix
+++ b/pkgs/development/python-modules/pyairvisual/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, certifi
-, fetchFromGitHub
-, numpy
-, poetry-core
-, pygments
-, pysmb
-, pytest-aiohttp
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  certifi,
+  fetchFromGitHub,
+  numpy,
+  poetry-core,
+  pygments,
+  pysmb,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     hash = "sha256-uN31LeHYmg4V6Ln3EQp765nOsN5v56TxjYSS/g6TUCY=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -56,9 +55,7 @@ buildPythonPackage rec {
     "examples/"
   ];
 
-  pythonImportsCheck = [
-    "pyairvisual"
-  ];
+  pythonImportsCheck = [ "pyairvisual" ];
 
   meta = with lib; {
     description = "Python library for interacting with AirVisual";
diff --git a/pkgs/development/python-modules/pyais/default.nix b/pkgs/development/python-modules/pyais/default.nix
new file mode 100644
index 0000000000000..2ed166b9a78bf
--- /dev/null
+++ b/pkgs/development/python-modules/pyais/default.nix
@@ -0,0 +1,49 @@
+{
+  lib,
+  attrs,
+  bitarray,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "pyais";
+  version = "2.8.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "M0r13n";
+    repo = "pyais";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-qggtwz6cSz5mLKLVY0i7gWs09EcOoxlWWQoHZv+TDc8=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    attrs
+    bitarray
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "pyais" ];
+
+  disabledTestPaths = [
+    # Tests the examples which have additional requirements
+    "tests/test_examples.py"
+  ];
+
+  meta = with lib; {
+    description = "Module for decoding and encoding AIS messages (AIVDM/AIVDO)";
+    homepage = "https://github.com/M0r13n/pyais";
+    changelog = "https://github.com/M0r13n/pyais/blob/v${version}/CHANGELOG.txt";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyalgotrade/default.nix b/pkgs/development/python-modules/pyalgotrade/default.nix
index a3014aa292883..d463972524f33 100644
--- a/pkgs/development/python-modules/pyalgotrade/default.nix
+++ b/pkgs/development/python-modules/pyalgotrade/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, matplotlib
-, numpy
-, python-dateutil
-, pytz
-, requests
-, retrying
-, scipy
-, six
-, tornado
-, tweepy
-, ws4py
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  matplotlib,
+  numpy,
+  python-dateutil,
+  pytz,
+  requests,
+  retrying,
+  scipy,
+  six,
+  tornado,
+  tweepy,
+  ws4py,
 }:
 
 buildPythonPackage rec {
@@ -26,8 +27,17 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [
-    matplotlib numpy python-dateutil pytz requests
-    retrying scipy six tornado tweepy ws4py
+    matplotlib
+    numpy
+    python-dateutil
+    pytz
+    requests
+    retrying
+    scipy
+    six
+    tornado
+    tweepy
+    ws4py
   ];
 
   # no tests in PyPI tarball
@@ -38,5 +48,4 @@ buildPythonPackage rec {
     homepage = "http://gbeced.github.io/pyalgotrade/";
     license = licenses.asl20;
   };
-
 }
diff --git a/pkgs/development/python-modules/pyamg/default.nix b/pkgs/development/python-modules/pyamg/default.nix
index 6c33a2d9ca24e..e0a983c6bbc55 100644
--- a/pkgs/development/python-modules/pyamg/default.nix
+++ b/pkgs/development/python-modules/pyamg/default.nix
@@ -1,30 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, scipy
-, pytest
-, python
-, pybind11
-, setuptools-scm
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  scipy,
+  pytest,
+  python,
+  pybind11,
+  setuptools-scm,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pyamg";
-  version = "5.1.0";
+  version = "5.2.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-+Q+d55W04pWJ7dLrRG0R3bRmZ46+gj7TKfzzV1nqOQw=";
+    hash = "sha256-9EnZNCJOUDQB7nLNLuzhop2JO3q+NfYqRNUrqDEZjvo=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     numpy
@@ -54,6 +53,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/pyamg/pyamg";
     changelog = "https://github.com/pyamg/pyamg/blob/v${version}/changelog.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyaml-env/default.nix b/pkgs/development/python-modules/pyaml-env/default.nix
new file mode 100644
index 0000000000000..dfbeb55112cda
--- /dev/null
+++ b/pkgs/development/python-modules/pyaml-env/default.nix
@@ -0,0 +1,37 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pyyaml,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "pyaml-env";
+  version = "1.2.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "mkaranasou";
+    repo = "pyaml_env";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-xSu+dksSVugShJwOqedXBrXIKaH0G5JAsynauOuP3OA=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ pyyaml ];
+
+  pythonImportsCheck = [ "pyaml_env" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "Parse YAML configuration with environment variables in Python";
+    homepage = "https://github.com/mkaranasou/pyaml_env";
+    changelog = "https://github.com/mkaranasou/pyaml_env/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyaml/default.nix b/pkgs/development/python-modules/pyaml/default.nix
index f9b70e83157e6..9b5b394893135 100644
--- a/pkgs/development/python-modules/pyaml/default.nix
+++ b/pkgs/development/python-modules/pyaml/default.nix
@@ -1,32 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pyyaml
-, unidecode
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pyyaml,
+  unidecode,
 }:
 
 buildPythonPackage rec {
   pname = "pyaml";
-  version = "24.4.0";
+  version = "24.7.0";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Dkg9kokBDnR6Ml3EMXG8w51lYt0d1HGejMfnyWyZ/OY=";
+    hash = "sha256-XQ/fnmgQNvsmOng9Apj8OvWApuKmzxozFP/EjcPZHMs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pyyaml
-  ];
+  propagatedBuildInputs = [ pyyaml ];
 
-  nativeCheckInputs = [
-    unidecode
-  ];
+  nativeCheckInputs = [ unidecode ];
 
   pythonImportsCheck = [ "pyaml" ];
 
@@ -35,6 +30,6 @@ buildPythonPackage rec {
     mainProgram = "pyaml";
     homepage = "https://github.com/mk-fg/pretty-yaml";
     license = licenses.wtfpl;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyannotate/default.nix b/pkgs/development/python-modules/pyannotate/default.nix
index abf751e88afd0..6c81a3f081b8f 100644
--- a/pkgs/development/python-modules/pyannotate/default.nix
+++ b/pkgs/development/python-modules/pyannotate/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mypy-extensions
-, pytestCheckHook
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mypy-extensions,
+  pytestCheckHook,
+  pythonOlder,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     mypy-extensions
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [
     "pyannotate_runtime"
@@ -38,6 +37,6 @@ buildPythonPackage rec {
     mainProgram = "pyannotate";
     homepage = "https://github.com/dropbox/pyannotate";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyannote-audio/default.nix b/pkgs/development/python-modules/pyannote-audio/default.nix
index 1a9403493eac5..3a3ee228bcc87 100644
--- a/pkgs/development/python-modules/pyannote-audio/default.nix
+++ b/pkgs/development/python-modules/pyannote-audio/default.nix
@@ -1,58 +1,64 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, asteroid-filterbanks
-, einops
-, huggingface-hub
-, pytorch-lightning
-, omegaconf
-, pyannote-core
-, pyannote-database
-, pyannote-metrics
-, pyannote-pipeline
-, pytorch-metric-learning
-, rich
-, semver
-, soundfile
-, speechbrain
-, tensorboardx
-, torch
-, torch-audiomentations
-, torchaudio
-, torchmetrics
-, numpy
-, pyscaffold
+{
+  lib,
+  asteroid-filterbanks,
+  buildPythonPackage,
+  einops,
+  fetchFromGitHub,
+  huggingface-hub,
+  hydra-core,
+  numpy,
+  omegaconf,
+  pyannote-core,
+  pyannote-database,
+  pyannote-metrics,
+  pyannote-pipeline,
+  pyscaffold,
+  pythonOlder,
+  pytorch-lightning,
+  pytorch-metric-learning,
+  rich,
+  semver,
+  setuptools,
+  soundfile,
+  speechbrain,
+  tensorboardx,
+  torch-audiomentations,
+  torch,
+  torchaudio,
+  torchmetrics,
+  typer,
 }:
 
 buildPythonPackage rec {
   pname = "pyannote-audio";
-  version = "3.1.1";
+  version = "3.3.0";
   pyproject = true;
 
+  disabled = pythonOlder "3.9";
+
   src = fetchFromGitHub {
     owner = "pyannote";
     repo = "pyannote-audio";
-    rev = version;
-    hash = "sha256-BxmEJE6v+QkEaAJ2oB2LwDQIoRajv6F9SRc8lP9iRLM=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-AFBT6vpOgEIqEn778TWJ04gai7UOyfOeZdmtliYJLvs=";
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [
+  pythonRelaxDeps = [ "torchaudio" ];
+
+  build-system = [
     pyscaffold
     setuptools
-    wheel
   ];
 
   postPatch = ''
     substituteInPlace setup.cfg \
-      --replace "pyscaffold>=3.2a0,<3.3a0" "pyscaffold"
+      --replace-fail "pyscaffold>=3.2a0,<3.3a0" "pyscaffold"
     substituteInPlace requirements.txt \
-      --replace "lightning" "pytorch-lightning"
+      --replace-fail "lightning" "pytorch-lightning"
   '';
 
-  propagatedBuildInputs = [
+  dependencies = [
     asteroid-filterbanks
     einops
     huggingface-hub
@@ -75,6 +81,13 @@ buildPythonPackage rec {
     pytorch-lightning
   ];
 
+  optional-dependencies = {
+    cli = [
+      hydra-core
+      typer
+    ];
+  };
+
   pythonImportsCheck = [ "pyannote.audio" ];
 
   meta = with lib; {
@@ -82,6 +95,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/pyannote/pyannote-audio";
     changelog = "https://github.com/pyannote/pyannote-audio/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyannote-core/default.nix b/pkgs/development/python-modules/pyannote-core/default.nix
index 453bb0c4d60de..d9ce9b18db99d 100644
--- a/pkgs/development/python-modules/pyannote-core/default.nix
+++ b/pkgs/development/python-modules/pyannote-core/default.nix
@@ -1,12 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, sortedcontainers
-, numpy
-, scipy
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  pandas,
+  pytestCheckHook,
+  scipy,
+  setuptools,
+  sortedcontainers,
+  typing-extensions,
+  versioneer,
 }:
 
 buildPythonPackage rec {
@@ -17,20 +20,30 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "pyannote";
     repo = "pyannote-core";
-    rev = version;
+    rev = "refs/tags/${version}";
     hash = "sha256-XQVEMy60LkfFr2TKXTeg6cGHRx5BUZ5qDgzIdKy/19Y=";
   };
 
-  propagatedBuildInputs = [
+  postPatch = ''
+    # Remove vendorized versioneer.py
+    rm versioneer.py
+  '';
+
+  build-system = [
+    setuptools
+    versioneer
+  ];
+
+  dependencies = [
     sortedcontainers
     numpy
     scipy
     typing-extensions
   ];
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
+  nativeCheckInputs = [
+    pandas
+    pytestCheckHook
   ];
 
   pythonImportsCheck = [ "pyannote.core" ];
@@ -38,7 +51,8 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Advanced data structures for handling temporal segments with attached labels";
     homepage = "https://github.com/pyannote/pyannote-core";
+    changelog = "https://github.com/pyannote/pyannote-core/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyannote-database/default.nix b/pkgs/development/python-modules/pyannote-database/default.nix
index e3e3ac56ca703..8cb35b26061da 100644
--- a/pkgs/development/python-modules/pyannote-database/default.nix
+++ b/pkgs/development/python-modules/pyannote-database/default.nix
@@ -1,12 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, pyannote-core
-, pyyaml
-, pandas
-, typer
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pandas,
+  pyannote-core,
+  pythonOlder,
+  pyyaml,
+  setuptools,
+  typer,
+  versioneer,
 }:
 
 buildPythonPackage rec {
@@ -14,32 +16,39 @@ buildPythonPackage rec {
   version = "5.0.1";
   pyproject = true;
 
+  disabled = pythonOlder "3.9";
+
   src = fetchFromGitHub {
     owner = "pyannote";
     repo = "pyannote-database";
-    rev = version;
+    rev = "refs/tags/${version}";
     hash = "sha256-A7Xr24O8OvVAlURrR+SDCh8Uv9Yz3AUJSFDyDShVVjA=";
   };
 
-  propagatedBuildInputs = [
+  postPatch = ''
+    # Remove vendorized versioneer.py
+    rm versioneer.py
+  '';
+
+  build-system = [
+    setuptools
+    versioneer
+  ];
+
+  dependencies = [
     pyannote-core
     pyyaml
     pandas
     typer
   ];
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
-  ];
-
   pythonImportsCheck = [ "pyannote.database" ];
 
   meta = with lib; {
     description = "Reproducible experimental protocols for multimedia (audio, video, text) database";
-    mainProgram = "pyannote-database";
     homepage = "https://github.com/pyannote/pyannote-database";
     license = licenses.mit;
     maintainers = with maintainers; [ matthewcroughan ];
+    mainProgram = "pyannote-database";
   };
 }
diff --git a/pkgs/development/python-modules/pyannote-metrics/default.nix b/pkgs/development/python-modules/pyannote-metrics/default.nix
index 1ab1a9668160e..e8455f4d19b6c 100644
--- a/pkgs/development/python-modules/pyannote-metrics/default.nix
+++ b/pkgs/development/python-modules/pyannote-metrics/default.nix
@@ -1,18 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, pyannote-core
-, pyannote-database
-, pandas
-, scipy
-, scikit-learn
-, docopt
-, tabulate
-, matplotlib
-, sympy
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  docopt,
+  fetchFromGitHub,
+  matplotlib,
+  numpy,
+  pandas,
+  pyannote-core,
+  pyannote-database,
+  pythonOlder,
+  scikit-learn,
+  scipy,
+  setuptools,
+  sympy,
+  tabulate,
+  versioneer,
 }:
 
 buildPythonPackage rec {
@@ -20,14 +22,26 @@ buildPythonPackage rec {
   version = "3.2.1";
   pyproject = true;
 
+  disabled = pythonOlder "3.8";
+
   src = fetchFromGitHub {
     owner = "pyannote";
     repo = "pyannote-metrics";
-    rev = version;
+    rev = "refs/tags/${version}";
     hash = "sha256-V4qyaCaFsoikfFILm2sccf6m7lqJSDTdLxS1sr/LXAY=";
   };
 
-  propagatedBuildInputs = [
+  postPatch = ''
+    # Remove vendorized versioneer.py
+    rm versioneer.py
+  '';
+
+  build-system = [
+    setuptools
+    versioneer
+  ];
+
+  dependencies = [
     pyannote-core
     pyannote-database
     pandas
@@ -40,18 +54,14 @@ buildPythonPackage rec {
     numpy
   ];
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
-  ];
-
   pythonImportsCheck = [ "pyannote.metrics" ];
 
   meta = with lib; {
-    description = "A toolkit for reproducible evaluation, diagnostic, and error analysis of speaker diarization systems";
-    mainProgram = "pyannote-metrics";
+    description = "Toolkit for reproducible evaluation, diagnostic, and error analysis of speaker diarization systems";
     homepage = "https://github.com/pyannote/pyannote-metrics";
+    changelog = "http://pyannote.github.io/pyannote-metrics/changelog.html";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
+    mainProgram = "pyannote-metrics";
   };
 }
diff --git a/pkgs/development/python-modules/pyannote-pipeline/default.nix b/pkgs/development/python-modules/pyannote-pipeline/default.nix
index 00b7eab6344a1..a92c56758e2fb 100644
--- a/pkgs/development/python-modules/pyannote-pipeline/default.nix
+++ b/pkgs/development/python-modules/pyannote-pipeline/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, pyannote-core
-, pyannote-database
-, pyyaml
-, optuna
-, tqdm
-, docopt
-, filelock
-, scikit-learn
+{
+  lib,
+  buildPythonPackage,
+  docopt,
+  fetchFromGitHub,
+  filelock,
+  optuna,
+  pyannote-core,
+  pyannote-database,
+  pyyaml,
+  scikit-learn,
+  setuptools,
+  tqdm,
+  versioneer,
 }:
 
 buildPythonPackage rec {
@@ -21,11 +22,21 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "pyannote";
     repo = "pyannote-pipeline";
-    rev = version;
+    rev = "refs/tags/${version}";
     hash = "sha256-0wSgy6kbKi9Wa5dimOz34IV5/8fSwaHDMUpaBW7tm2Y=";
   };
 
-  propagatedBuildInputs = [
+  postPatch = ''
+    # Remove vendorized versioeer.py
+    rm versioneer.py
+  '';
+
+  build-system = [
+    setuptools
+    versioneer
+  ];
+
+  dependencies = [
     pyannote-core
     pyannote-database
     pyyaml
@@ -36,18 +47,13 @@ buildPythonPackage rec {
     scikit-learn
   ];
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
-  ];
-
   pythonImportsCheck = [ "pyannote.pipeline" ];
 
   meta = with lib; {
     description = "Tunable pipelines";
-    mainProgram = "pyannote-pipeline";
     homepage = "https://github.com/pyannote/pyannote-pipeline";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
+    mainProgram = "pyannote-pipeline";
   };
 }
diff --git a/pkgs/development/python-modules/pyaprilaire/default.nix b/pkgs/development/python-modules/pyaprilaire/default.nix
new file mode 100644
index 0000000000000..6c99394c31a39
--- /dev/null
+++ b/pkgs/development/python-modules/pyaprilaire/default.nix
@@ -0,0 +1,41 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  crc,
+  setuptools,
+  pytest-asyncio,
+}:
+
+buildPythonPackage rec {
+  pname = "pyaprilaire";
+  version = "0.7.4";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "chamberlain2007";
+    repo = "pyaprilaire";
+    rev = "refs/tags/${version}";
+    hash = "sha256-+/yQO0JF2nkxaM71iNj6ODB8raM9s4qiLLi6/borcr4=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ crc ];
+
+  pythonImportsCheck = [ "pyaprilaire" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-asyncio
+  ];
+
+  meta = {
+    changelog = "https://github.com/chamberlain2007/pyaprilaire/releases/tag/${version}";
+    description = "Python library for interacting with Aprilaire thermostats.";
+    homepage = "https://github.com/chamberlain2007/pyaprilaire";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ pyrox0 ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyarlo/default.nix b/pkgs/development/python-modules/pyarlo/default.nix
index 199dc61015a70..a9b9c8c040db6 100644
--- a/pkgs/development/python-modules/pyarlo/default.nix
+++ b/pkgs/development/python-modules/pyarlo/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pytestCheckHook
-, requests
-, requests-mock
-, sseclient-py
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  pytestCheckHook,
+  requests,
+  requests-mock,
+  sseclient-py,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyarr/default.nix b/pkgs/development/python-modules/pyarr/default.nix
index ef2e3a5b0a096..13d97943cb5c1 100644
--- a/pkgs/development/python-modules/pyarr/default.nix
+++ b/pkgs/development/python-modules/pyarr/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, overrides
-, poetry-core
-, pythonOlder
-, requests
-, pytestCheckHook
-, types-requests
-, responses
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  overrides,
+  poetry-core,
+  pythonOlder,
+  requests,
+  pytestCheckHook,
+  types-requests,
+  responses,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
       --replace "poetry.masonry.api" "poetry.core.masonry.api"
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     overrides
@@ -45,9 +44,7 @@ buildPythonPackage rec {
     responses
   ];
 
-  pythonImportsCheck = [
-    "pyarr"
-  ];
+  pythonImportsCheck = [ "pyarr" ];
 
   disabledTests = [
     # Tests require a running sonarr instance
diff --git a/pkgs/development/python-modules/pyarrow-hotfix/default.nix b/pkgs/development/python-modules/pyarrow-hotfix/default.nix
index 38a8dc4b6ea85..ec0cf110311bd 100644
--- a/pkgs/development/python-modules/pyarrow-hotfix/default.nix
+++ b/pkgs/development/python-modules/pyarrow-hotfix/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-LlSbxIxvouzvlP6PB8J8fJaxWoRbxz4wTs7Gb5LbM4A=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
-  pythonImportsCheck = [
-    "pyarrow_hotfix"
-  ];
+  pythonImportsCheck = [ "pyarrow_hotfix" ];
 
   meta = with lib; {
     description = "Hotfix for the PyArrow security vulnerability CVE-2023-47248";
diff --git a/pkgs/development/python-modules/pyarrow/default.nix b/pkgs/development/python-modules/pyarrow/default.nix
index d88cd0abeba92..e22429f0716fa 100644
--- a/pkgs/development/python-modules/pyarrow/default.nix
+++ b/pkgs/development/python-modules/pyarrow/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, python
-, pythonAtLeast
-, pythonOlder
-, arrow-cpp
-, cffi
-, cloudpickle
-, cmake
-, cython_0
-, fsspec
-, hypothesis
-, numpy
-, pandas
-, pytestCheckHook
-, pytest-lazy-fixture
-, pkg-config
-, setuptools
-, setuptools-scm
-, oldest-supported-numpy
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  python,
+  pythonAtLeast,
+  pythonOlder,
+  arrow-cpp,
+  cffi,
+  cloudpickle,
+  cmake,
+  cython_0,
+  fsspec,
+  hypothesis,
+  numpy,
+  pandas,
+  pytestCheckHook,
+  pytest-lazy-fixture,
+  pkg-config,
+  setuptools,
+  setuptools-scm,
+  oldest-supported-numpy,
 }:
 
 let
@@ -32,7 +33,7 @@ buildPythonPackage rec {
 
   disabled = pythonOlder "3.7";
 
-  sourceRoot = "apache-arrow-${version}/python";
+  sourceRoot = "${src.name}/python";
 
   nativeBuildInputs = [
     cmake
@@ -73,9 +74,7 @@ buildPythonPackage rec {
   PYARROW_WITH_GCS = zero_or_one arrow-cpp.enableGcs;
   PYARROW_BUNDLE_ARROW_CPP_HEADERS = zero_or_one false;
 
-  PYARROW_CMAKE_OPTIONS = [
-    "-DCMAKE_INSTALL_RPATH=${ARROW_HOME}/lib"
-  ];
+  PYARROW_CMAKE_OPTIONS = [ "-DCMAKE_INSTALL_RPATH=${ARROW_HOME}/lib" ];
 
   ARROW_HOME = arrow-cpp;
   PARQUET_HOME = arrow-cpp;
@@ -99,77 +98,86 @@ buildPythonPackage rec {
     find "$PWD/pyarrow/src/arrow" -type f -name '*.h' -exec cp {} "$pyarrow_include/arrow/python" \;
   '';
 
-  pytestFlagsArray = [
-    # A couple of tests are missing fixture imports, luckily pytest offers a
-    # clean solution.
-    "--fixtures pyarrow/tests/conftest.py"
-    # Deselect a single test because pyarrow prints a 2-line error message where
-    # only a single line is expected. The additional line of output comes from
-    # the glog library which is an optional dependency of arrow-cpp that is
-    # enabled in nixpkgs.
-    # Upstream Issue: https://issues.apache.org/jira/browse/ARROW-11393
-    "--deselect=pyarrow/tests/test_memory.py::test_env_var"
-    # these tests require access to s3 via the internet
-    "--deselect=pyarrow/tests/test_fs.py::test_resolve_s3_region"
-    "--deselect=pyarrow/tests/test_fs.py::test_s3_real_aws"
-    "--deselect=pyarrow/tests/test_fs.py::test_s3_real_aws_region_selection"
-    "--deselect=pyarrow/tests/test_fs.py::test_s3_options"
-    # Flaky test
-    "--deselect=pyarrow/tests/test_flight.py::test_roundtrip_errors"
-    "--deselect=pyarrow/tests/test_pandas.py::test_threaded_pandas_import"
-    # Flaky test, works locally but not on Hydra
-    "--deselect=pyarrow/tests/test_csv.py::TestThreadedCSVTableRead::test_cancellation"
-    # expects arrow-cpp headers to be bundled
-    "--deselect=pyarrow/tests/test_cpp_internals.py::test_pyarrow_include"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # Requires loopback networking
-    "--deselect=pyarrow/tests/test_ipc.py::test_socket_"
-    "--deselect=pyarrow/tests/test_flight.py::test_never_sends_data"
-    "--deselect=pyarrow/tests/test_flight.py::test_large_descriptor"
-    "--deselect=pyarrow/tests/test_flight.py::test_large_metadata_client"
-    "--deselect=pyarrow/tests/test_flight.py::test_none_action_side_effect"
-    # fails to compile
-    "--deselect=pyarrow/tests/test_cython.py::test_cython_api"
-  ] ++ lib.optionals (pythonAtLeast "3.11") [
-    # Repr output is printing number instead of enum name so these tests fail
-    "--deselect=pyarrow/tests/test_fs.py::test_get_file_info"
-  ] ++ lib.optionals stdenv.isLinux [
-    # this test requires local networking
-    "--deselect=pyarrow/tests/test_fs.py::test_filesystem_from_uri_gcs"
-  ];
+  pytestFlagsArray =
+    [
+      # A couple of tests are missing fixture imports, luckily pytest offers a
+      # clean solution.
+      "--fixtures pyarrow/tests/conftest.py"
+      # Deselect a single test because pyarrow prints a 2-line error message where
+      # only a single line is expected. The additional line of output comes from
+      # the glog library which is an optional dependency of arrow-cpp that is
+      # enabled in nixpkgs.
+      # Upstream Issue: https://issues.apache.org/jira/browse/ARROW-11393
+      "--deselect=pyarrow/tests/test_memory.py::test_env_var"
+      # these tests require access to s3 via the internet
+      "--deselect=pyarrow/tests/test_fs.py::test_resolve_s3_region"
+      "--deselect=pyarrow/tests/test_fs.py::test_s3_real_aws"
+      "--deselect=pyarrow/tests/test_fs.py::test_s3_real_aws_region_selection"
+      "--deselect=pyarrow/tests/test_fs.py::test_s3_options"
+      # Flaky test
+      "--deselect=pyarrow/tests/test_flight.py::test_roundtrip_errors"
+      "--deselect=pyarrow/tests/test_pandas.py::test_threaded_pandas_import"
+      # Flaky test, works locally but not on Hydra
+      "--deselect=pyarrow/tests/test_csv.py::TestThreadedCSVTableRead::test_cancellation"
+      # expects arrow-cpp headers to be bundled
+      "--deselect=pyarrow/tests/test_cpp_internals.py::test_pyarrow_include"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Requires loopback networking
+      "--deselect=pyarrow/tests/test_ipc.py::test_socket_"
+      "--deselect=pyarrow/tests/test_flight.py::test_never_sends_data"
+      "--deselect=pyarrow/tests/test_flight.py::test_large_descriptor"
+      "--deselect=pyarrow/tests/test_flight.py::test_large_metadata_client"
+      "--deselect=pyarrow/tests/test_flight.py::test_none_action_side_effect"
+      # fails to compile
+      "--deselect=pyarrow/tests/test_cython.py::test_cython_api"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.11") [
+      # Repr output is printing number instead of enum name so these tests fail
+      "--deselect=pyarrow/tests/test_fs.py::test_get_file_info"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isLinux [
+      # this test requires local networking
+      "--deselect=pyarrow/tests/test_fs.py::test_filesystem_from_uri_gcs"
+    ];
 
   disabledTests = [ "GcsFileSystem" ];
 
   dontUseSetuptoolsCheck = true;
 
-  preCheck = ''
-    shopt -s extglob
-    rm -r pyarrow/!(conftest.py|tests)
-    mv pyarrow/conftest.py pyarrow/tests/parent_conftest.py
-    substituteInPlace pyarrow/tests/conftest.py --replace ..conftest .parent_conftest
-  '' + lib.optionalString stdenv.isDarwin ''
-    # OSError: [Errno 24] Too many open files
-    ulimit -n 1024
-  '';
-
-  pythonImportsCheck = [
-    "pyarrow"
-  ] ++ map (module: "pyarrow.${module}") [
-    "compute"
-    "csv"
-    "dataset"
-    "feather"
-    "flight"
-    "fs"
-    "json"
-    "parquet"
-  ];
+  preCheck =
+    ''
+      shopt -s extglob
+      rm -r pyarrow/!(conftest.py|tests)
+      mv pyarrow/conftest.py pyarrow/tests/parent_conftest.py
+      substituteInPlace pyarrow/tests/conftest.py --replace ..conftest .parent_conftest
+    ''
+    + lib.optionalString stdenv.hostPlatform.isDarwin ''
+      # OSError: [Errno 24] Too many open files
+      ulimit -n 1024
+    '';
+
+  pythonImportsCheck =
+    [ "pyarrow" ]
+    ++ map (module: "pyarrow.${module}") [
+      "compute"
+      "csv"
+      "dataset"
+      "feather"
+      "flight"
+      "fs"
+      "json"
+      "parquet"
+    ];
 
   meta = with lib; {
-    description = "A cross-language development platform for in-memory data";
+    description = "Cross-language development platform for in-memory data";
     homepage = "https://arrow.apache.org/";
     license = licenses.asl20;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ veprbl cpcloud ];
+    maintainers = with maintainers; [
+      veprbl
+      cpcloud
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pyasn/default.nix b/pkgs/development/python-modules/pyasn/default.nix
index 6da1ae55f5993..7e684c27ae1e6 100644
--- a/pkgs/development/python-modules/pyasn/default.nix
+++ b/pkgs/development/python-modules/pyasn/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, fetchFromGitHub, python, }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchFromGitHub,
+  python,
+}:
 
 buildPythonPackage rec {
   pname = "pyasn";
@@ -29,7 +35,10 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Offline IP address to Autonomous System Number lookup module";
     homepage = "https://github.com/hadiasghari/pyasn";
-    license = with licenses; [ bsdOriginal mit ];
+    license = with licenses; [
+      bsdOriginal
+      mit
+    ];
     maintainers = with maintainers; [ onny ];
   };
 }
diff --git a/pkgs/development/python-modules/pyasn1-modules/default.nix b/pkgs/development/python-modules/pyasn1-modules/default.nix
index 28516a203e4bf..7c7b4b3600704 100644
--- a/pkgs/development/python-modules/pyasn1-modules/default.nix
+++ b/pkgs/development/python-modules/pyasn1-modules/default.nix
@@ -1,42 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyasn1
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pyasn1,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pyasn1-modules";
-  version = "0.3.0";
-  format = "setuptools";
+  version = "0.4.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "pyasn1";
-    repo = pname;
+    repo = "pyasn1-modules";
     rev = "refs/tags/v${version}";
-    hash = "sha256-AAS1VuppCIxgswpLSHFAc6q9cyJBLpdDuU9D1KU13vg=";
+    hash = "sha256-UJycVfj08+3zjHPji5Qlh3yqeS30dEwu1pyrN1yo1Vc=";
   };
 
-  propagatedBuildInputs = [
-    pyasn1
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  dependencies = [ pyasn1 ];
 
-  pythonImportsCheck = [
-    "pyasn1_modules"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  meta = with lib; {
-    description = "A collection of ASN.1-based protocols modules";
-    homepage = "https://github.com/pyasn1/pyasn1-modules";
+  pythonImportsCheck = [ "pyasn1_modules" ];
+
+  meta = {
+    description = "Collection of ASN.1-based protocols modules";
+    homepage = "https://pyasn1.readthedocs.io";
     changelog = "https://github.com/pyasn1/pyasn1-modules/releases/tag/v${version}";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.bsd2;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyasn1/default.nix b/pkgs/development/python-modules/pyasn1/default.nix
index d4fb73d509986..4c9f519fe28a7 100644
--- a/pkgs/development/python-modules/pyasn1/default.nix
+++ b/pkgs/development/python-modules/pyasn1/default.nix
@@ -1,35 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyasn1";
-  version = "0.5.1";
+  version = "0.6.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-bTkaluWbIxMKXPp01v1/OI274mzI8e3zn93fCNnWZ2w=";
+    hash = "sha256-OjWrLEte+Y4X397IqwdARvvaduKBxacGzNgjKM/I9kw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "pyasn1"
-  ];
+  pythonImportsCheck = [ "pyasn1" ];
 
   meta = with lib; {
     description = "Generic ASN.1 library for Python";
     homepage = "https://pyasn1.readthedocs.io";
     changelog = "https://github.com/etingof/pyasn1/blob/master/CHANGES.rst";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyasuswrt/default.nix b/pkgs/development/python-modules/pyasuswrt/default.nix
index 6ad2ab682e4b5..33bcc5ef39a10 100644
--- a/pkgs/development/python-modules/pyasuswrt/default.nix
+++ b/pkgs/development/python-modules/pyasuswrt/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,26 +21,20 @@ buildPythonPackage rec {
     hash = "sha256-kg475AWmc0i/W4dBg8jFmNyz3V67xjvzPkSlS09/9Oc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Tests require physical hardware
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyasuswrt"
-  ];
+  pythonImportsCheck = [ "pyasuswrt" ];
 
   meta = with lib; {
     description = "Library for communication with ASUSWRT routers via HTTP";
     homepage = "https://github.com/ollo69/pyasuswrt";
     changelog = "https://github.com/ollo69/pyasuswrt/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyasyncore/default.nix b/pkgs/development/python-modules/pyasyncore/default.nix
index 1d02c8ae66405..602b90ae41260 100644
--- a/pkgs/development/python-modules/pyasyncore/default.nix
+++ b/pkgs/development/python-modules/pyasyncore/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -16,13 +17,9 @@ buildPythonPackage rec {
     hash = "sha256-ptqOsbkY7XYZT5sh6vctfxZ7BZPX2eLjo6XwZfcmtgk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "asyncore"
-  ];
+  pythonImportsCheck = [ "asyncore" ];
 
   doCheck = false; # no tests
 
@@ -30,6 +27,6 @@ buildPythonPackage rec {
     description = "Make asyncore available for Python 3.12 onwards";
     homepage = "https://github.com/simonrob/pyasyncore";
     license = licenses.psfl;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyatag/default.nix b/pkgs/development/python-modules/pyatag/default.nix
index 7e7a3ba593d35..a65888221d860 100644
--- a/pkgs/development/python-modules/pyatag/default.nix
+++ b/pkgs/development/python-modules/pyatag/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,13 +21,9 @@ buildPythonPackage rec {
     hash = "sha256-3h9mpopTbEULCx7rcEt/I/ZnUA0L/fJ7Y3L5h/6EuC4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # no tests implemented
   doCheck = false;
diff --git a/pkgs/development/python-modules/pyatem/default.nix b/pkgs/development/python-modules/pyatem/default.nix
index 1792d2699d802..a605dd4b1a3d3 100644
--- a/pkgs/development/python-modules/pyatem/default.nix
+++ b/pkgs/development/python-modules/pyatem/default.nix
@@ -1,36 +1,34 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromSourcehut
-
-# build-system
-, setuptools
-
-# dependencies
-, pyusb
-, tqdm
-, zeroconf
-
-# tests
-, pillow
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromSourcehut,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  pyusb,
+  tqdm,
+  zeroconf,
+
+  # tests
+  pillow,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pyatem";
-  version = "0.10.0"; # check latest version in setup.py
+  version = "0.11.0"; # check latest version in setup.py
   pyproject = true;
 
   src = fetchFromSourcehut {
     owner = "~martijnbraam";
     repo = "pyatem";
     rev = version;
-    hash = "sha256-O+f1vVwfGJjLem25hsYE1Q1V4vzjrc0HxTBUCANCEwE=";
+    hash = "sha256-VBuOnUVB6n8ahVtunubgao9jHPu9ncX0dhDT0PdSFhU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     pyusb
@@ -53,9 +51,7 @@ buildPythonPackage rec {
     popd
   '';
 
-  pythonImportsCheck = [
-    "pyatem"
-  ];
+  pythonImportsCheck = [ "pyatem" ];
 
   meta = with lib; {
     description = "Library for controlling Blackmagic Design ATEM video mixers";
diff --git a/pkgs/development/python-modules/pyathena/default.nix b/pkgs/development/python-modules/pyathena/default.nix
index 00c4fd2bd8740..0245c7b47ce85 100644
--- a/pkgs/development/python-modules/pyathena/default.nix
+++ b/pkgs/development/python-modules/pyathena/default.nix
@@ -1,54 +1,47 @@
-{ lib
-, boto3
-, botocore
-, buildPythonPackage
-, fastparquet
-, fetchPypi
-, fsspec
-, hatchling
-, pandas
-, pyarrow
-, pythonOlder
-, sqlalchemy
-, tenacity
+{
+  lib,
+  boto3,
+  botocore,
+  buildPythonPackage,
+  fastparquet,
+  fetchPypi,
+  fsspec,
+  hatchling,
+  pandas,
+  pyarrow,
+  python-dateutil,
+  pythonOlder,
+  sqlalchemy,
+  tenacity,
 }:
 
 buildPythonPackage rec {
   pname = "pyathena";
-  version = "3.7.0";
+  version = "3.9.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-PqIrXLsdi4jAE7K5WUFuTdRPs29GLUefNQlU6hzrLWI=";
+    hash = "sha256-SxHUnfAyVcVW4R9j0ONGzCXqGWdaeseP/QU3vNhMtI8=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     boto3
     botocore
     fsspec
     tenacity
+    python-dateutil
   ];
 
-  passthru.optional-dependencies = {
-    pandas = [
-      pandas
-    ];
-    sqlalchemy = [
-      sqlalchemy
-    ];
-    arrow = [
-      pyarrow
-    ];
-    fastparquet = [
-      fastparquet
-    ];
+  optional-dependencies = {
+    pandas = [ pandas ];
+    sqlalchemy = [ sqlalchemy ];
+    arrow = [ pyarrow ];
+    fastparquet = [ fastparquet ];
   };
 
   # Nearly all tests depend on a working AWS Athena instance,
@@ -56,15 +49,13 @@ buildPythonPackage rec {
   # https://github.com/laughingman7743/PyAthena/#testing
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyathena"
-  ];
+  pythonImportsCheck = [ "pyathena" ];
 
   meta = with lib; {
     description = "Python DB API 2.0 (PEP 249) client for Amazon Athena";
     homepage = "https://github.com/laughingman7743/PyAthena/";
     changelog = "https://github.com/laughingman7743/PyAthena/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ turion ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyatmo/default.nix b/pkgs/development/python-modules/pyatmo/default.nix
index 7b40a3880e21f..56deb73693279 100644
--- a/pkgs/development/python-modules/pyatmo/default.nix
+++ b/pkgs/development/python-modules/pyatmo/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, oauthlib
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-oauthlib
-, requests-mock
-, setuptools-scm
-, time-machine
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  oauthlib,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-oauthlib,
+  requests-mock,
+  setuptools-scm,
+  time-machine,
 }:
 
 buildPythonPackage rec {
   pname = "pyatmo";
-  version = "8.0.3";
+  version = "8.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -25,20 +26,18 @@ buildPythonPackage rec {
     owner = "jabesq";
     repo = "pyatmo";
     rev = "refs/tags/v${version}";
-    hash = "sha256-FnDXj+bY/TMdengnxgludXUTiZw9wpeFiNbWTIxrlzw=";
+    hash = "sha256-SRuBV7XWt4Myks7kbUzGAscggspUbRoLOvYNiorF8To=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "oauthlib~=3.1" "oauthlib" \
-      --replace "requests~=2.24" "requests"
-  '';
-
-  nativeBuildInputs = [
-    setuptools-scm
+  pythonRelaxDeps = [
+    "oauthlib"
+    "requests-oauthlib"
+    "requests"
   ];
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools-scm ];
+
+  dependencies = [
     aiohttp
     oauthlib
     requests
@@ -53,15 +52,13 @@ buildPythonPackage rec {
     time-machine
   ];
 
-  pythonImportsCheck = [
-    "pyatmo"
-  ];
+  pythonImportsCheck = [ "pyatmo" ];
 
   meta = with lib; {
     description = "Simple API to access Netatmo weather station data";
     homepage = "https://github.com/jabesq/pyatmo";
     changelog = "https://github.com/jabesq/pyatmo/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyatome/default.nix b/pkgs/development/python-modules/pyatome/default.nix
index 2022260d48170..52717116afb4c 100644
--- a/pkgs/development/python-modules/pyatome/default.nix
+++ b/pkgs/development/python-modules/pyatome/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, simplejson
-, fake-useragent
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  simplejson,
+  fake-useragent,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
   # No tests in PyPI tarballs
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyatome"
-  ];
+  pythonImportsCheck = [ "pyatome" ];
 
   meta = with lib; {
     description = "Python module to get energy consumption data from Atome";
diff --git a/pkgs/development/python-modules/pyatspi/default.nix b/pkgs/development/python-modules/pyatspi/default.nix
index 0fbd5b97f680d..df80e01731eef 100644
--- a/pkgs/development/python-modules/pyatspi/default.nix
+++ b/pkgs/development/python-modules/pyatspi/default.nix
@@ -1,4 +1,14 @@
-{ lib, fetchurl, pkg-config, buildPythonPackage, isPy3k, at-spi2-core, pygobject3, gnome, python }:
+{
+  lib,
+  fetchurl,
+  pkg-config,
+  buildPythonPackage,
+  isPy3k,
+  at-spi2-core,
+  pygobject3,
+  gnome,
+  python,
+}:
 
 buildPythonPackage rec {
   pname = "pyatspi";
@@ -17,9 +27,7 @@ buildPythonPackage rec {
     pygobject3
   ];
 
-  configureFlags = [
-    "PYTHON=${python.pythonOnBuildForHost.interpreter}"
-  ];
+  configureFlags = [ "PYTHON=${python.pythonOnBuildForHost.interpreter}" ];
 
   postPatch = ''
     # useless python existence check for us
diff --git a/pkgs/development/python-modules/pyatv/default.nix b/pkgs/development/python-modules/pyatv/default.nix
index a422e45057b8f..3ffed8bd8acd5 100644
--- a/pkgs/development/python-modules/pyatv/default.nix
+++ b/pkgs/development/python-modules/pyatv/default.nix
@@ -1,36 +1,36 @@
-{ lib
-, buildPythonPackage
-, aiohttp
-, async-timeout
-, chacha20poly1305-reuseable
-, cryptography
-, deepdiff
-, fetchFromGitHub
-, ifaddr
-, mediafile
-, miniaudio
-, protobuf
-, pydantic
-, pyfakefs
-, pytest-aiohttp
-, pytest-asyncio
-, pytest-httpserver
-, pytest-timeout
-, pytestCheckHook
-, pythonRelaxDepsHook
-, pythonAtLeast
-, pythonOlder
-, requests
-, setuptools
-, srptools
-, stdenv
-, tabulate
-, zeroconf
+{
+  lib,
+  buildPythonPackage,
+  aiohttp,
+  async-timeout,
+  chacha20poly1305-reuseable,
+  cryptography,
+  deepdiff,
+  fetchFromGitHub,
+  ifaddr,
+  mediafile,
+  miniaudio,
+  protobuf,
+  pydantic,
+  pyfakefs,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytest-httpserver,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  requests,
+  setuptools,
+  srptools,
+  stdenv,
+  tabulate,
+  zeroconf,
 }:
 
 buildPythonPackage rec {
   pname = "pyatv";
-  version = "0.14.5";
+  version = "0.15.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -39,12 +39,12 @@ buildPythonPackage rec {
     owner = "postlund";
     repo = "pyatv";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Uykj9MIUFcZyTWOBjUhL9+qItbnpwtuTd2Cx5jI7Wtw=";
+    hash = "sha256-8ODhDuc4jaLtrLZYd1yJlpYygO6KaguyR/yLWb/rMR4=";
   };
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "pytest-runner" ""
+      --replace-fail "pytest-runner" ""
   '';
 
   pythonRelaxDeps = [
@@ -62,12 +62,9 @@ buildPythonPackage rec {
     "zeroconf"
   ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     async-timeout
     chacha20poly1305-reuseable
@@ -93,16 +90,15 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTests = [
-    # https://github.com/postlund/pyatv/issues/2307
-    "test_zeroconf_service_published"
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    # https://github.com/postlund/pyatv/issues/2365
-    "test_simple_dispatch"
-  ] ++ lib.optionals (stdenv.isDarwin) [
-    # tests/protocols/raop/test_raop_functional.py::test_stream_retransmission[raop_properties2-2-True] - assert False
-    "test_stream_retransmission"
-  ];
+  disabledTests =
+    lib.optionals (pythonAtLeast "3.12") [
+      # https://github.com/postlund/pyatv/issues/2365
+      "test_simple_dispatch"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin) [
+      # tests/protocols/raop/test_raop_functional.py::test_stream_retransmission[raop_properties2-2-True] - assert False
+      "test_stream_retransmission"
+    ];
 
   disabledTestPaths = [
     # Test doesn't work in the sandbox
@@ -112,9 +108,7 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [
-    "pyatv"
-  ];
+  pythonImportsCheck = [ "pyatv" ];
 
   meta = with lib; {
     description = "Python client library for the Apple TV";
diff --git a/pkgs/development/python-modules/pyaudio/default.nix b/pkgs/development/python-modules/pyaudio/default.nix
index d9d4aa7b70e73..d6d2749d6034f 100644
--- a/pkgs/development/python-modules/pyaudio/default.nix
+++ b/pkgs/development/python-modules/pyaudio/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPyPy
-, pkgs
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  pkgs,
 }:
 
 buildPythonPackage rec {
@@ -23,5 +24,4 @@ buildPythonPackage rec {
     homepage = "https://people.csail.mit.edu/hubert/pyaudio/";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/pyaussiebb/default.nix b/pkgs/development/python-modules/pyaussiebb/default.nix
index 4443dfee6252c..57e758d25f9f7 100644
--- a/pkgs/development/python-modules/pyaussiebb/default.nix
+++ b/pkgs/development/python-modules/pyaussiebb/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, loguru
-, pydantic
-, poetry-core
-, pythonOlder
-, requests
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  loguru,
+  pydantic,
+  poetry-core,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "pyaussiebb";
-  version = "0.1.1";
+  version = "0.1.4";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -20,31 +21,27 @@ buildPythonPackage rec {
     owner = "yaleman";
     repo = "aussiebb";
     rev = "refs/tags/v${version}";
-    hash = "sha256-XNf9vYMlTLqhYIVNw9GjPcXpOm5EYCcC4aGukR8g3zc=";
+    hash = "sha256-IW2HraJbgvf0G1eRXNpnsPMWlLXi2P9DTyk+tG5Hc2U=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail 'requests = "^2.27.1"' 'requests = "*"'
+  '';
+
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     requests
     loguru
     pydantic
   ];
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace 'requests = "^2.27.1"' 'requests = "*"'
-  '';
-
   # Tests require credentials and requests-testing
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aussiebb"
-  ];
+  pythonImportsCheck = [ "aussiebb" ];
 
   meta = with lib; {
     description = "Module for interacting with the Aussie Broadband APIs";
diff --git a/pkgs/development/python-modules/pyautogui/default.nix b/pkgs/development/python-modules/pyautogui/default.nix
index 04cd0513dd2b3..a76479f797258 100644
--- a/pkgs/development/python-modules/pyautogui/default.nix
+++ b/pkgs/development/python-modules/pyautogui/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mouseinfo
-, pygetwindow
-, pymsgbox
-, pyperclip
-, pyscreeze
-, pytweening
-, tkinter
-, xlib
-, xvfb-run
-, scrot
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mouseinfo,
+  pygetwindow,
+  pymsgbox,
+  pyperclip,
+  pyscreeze,
+  pytweening,
+  tkinter,
+  xlib,
+  xvfb-run,
+  scrot,
 }:
 buildPythonPackage rec {
   pname = "pyautogui";
@@ -24,7 +25,10 @@ buildPythonPackage rec {
     hash = "sha256-R9tcTqxUaqw63FLOGFRaO/Oz6kD7V6MPHdQ8A29NdXw=";
   };
 
-  nativeCheckInputs = [ xvfb-run scrot ];
+  nativeCheckInputs = [
+    xvfb-run
+    scrot
+  ];
   checkPhase = ''
     xvfb-run python -c 'import pyautogui'
     # The tests depend on some specific things that xvfb cant provide, like keyboard and mouse
@@ -48,7 +52,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "PyAutoGUI lets Python control the mouse and keyboard, and other GUI automation tasks.";
+    description = "PyAutoGUI lets Python control the mouse and keyboard, and other GUI automation tasks";
     homepage = "https://github.com/asweigart/pyautogui";
     license = licenses.bsd3;
     maintainers = with maintainers; [ lucasew ];
diff --git a/pkgs/development/python-modules/pyavm/default.nix b/pkgs/development/python-modules/pyavm/default.nix
index 45cf827a82a8a..1d42aa9989f9a 100644
--- a/pkgs/development/python-modules/pyavm/default.nix
+++ b/pkgs/development/python-modules/pyavm/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-
-# build-system
-, setuptools
-, setuptools-scm
-
-# tests
-, astropy
-, numpy
-, pillow
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+
+  # tests
+  astropy,
+  numpy,
+  pillow,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pyavm"
-  ];
+  pythonImportsCheck = [ "pyavm" ];
 
   meta = with lib; {
     description = "Simple pure-python AVM meta-data handling";
diff --git a/pkgs/development/python-modules/pyaxmlparser/default.nix b/pkgs/development/python-modules/pyaxmlparser/default.nix
index 818ea47fc497a..6e4a7e846b3ec 100644
--- a/pkgs/development/python-modules/pyaxmlparser/default.nix
+++ b/pkgs/development/python-modules/pyaxmlparser/default.nix
@@ -1,4 +1,12 @@
-{ buildPythonPackage, lib, lxml, click, fetchFromGitHub, pytestCheckHook, asn1crypto }:
+{
+  buildPythonPackage,
+  lib,
+  lxml,
+  click,
+  fetchFromGitHub,
+  pytestCheckHook,
+  asn1crypto,
+}:
 
 buildPythonPackage rec {
   version = "0.3.27";
@@ -12,7 +20,11 @@ buildPythonPackage rec {
     hash = "sha256-NtAsO/I1jDEv676yhAgLguQnB/kHdAqPoLt2QFWbvmw=";
   };
 
-  propagatedBuildInputs = [ asn1crypto click lxml ];
+  propagatedBuildInputs = [
+    asn1crypto
+    click
+    lxml
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
@@ -21,7 +33,10 @@ buildPythonPackage rec {
     mainProgram = "apkinfo";
     homepage = "https://github.com/appknox/pyaxmlparser";
     # Files from Androguard are licensed ASL 2.0
-    license = with licenses; [ mit asl20 ];
-    maintainers = with maintainers; [ ];
+    license = with licenses; [
+      mit
+      asl20
+    ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pybalboa/default.nix b/pkgs/development/python-modules/pybalboa/default.nix
index 38435c6d22b32..b013c9b715a17 100644
--- a/pkgs/development/python-modules/pybalboa/default.nix
+++ b/pkgs/development/python-modules/pybalboa/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
   pname = "pybalboa";
-  version = "1.0.1";
+  version = "1.0.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -16,19 +17,15 @@ buildPythonPackage rec {
     owner = "garbled1";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-7vjdRGnEnMf32pZwoKRxX16hxkyf0CXlncpbBJMQtfI=";
+    hash = "sha256-rSY6kU7F9ybpPXcmTM2WBazjb9tI2+8dG56pjrRXcKg=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pybalboa"
-  ];
+  pythonImportsCheck = [ "pybalboa" ];
 
   meta = with lib; {
     description = " Python module to interface with a Balboa Spa";
diff --git a/pkgs/development/python-modules/pybars3/default.nix b/pkgs/development/python-modules/pybars3/default.nix
index ad7294fd63582..937de513347e8 100644
--- a/pkgs/development/python-modules/pybars3/default.nix
+++ b/pkgs/development/python-modules/pybars3/default.nix
@@ -1,8 +1,9 @@
-{ python3
-, fetchPypi
-, lib
-, pymeta3
-, buildPythonPackage
+{
+  python,
+  fetchPypi,
+  lib,
+  pymeta3,
+  buildPythonPackage,
 }:
 buildPythonPackage rec {
   pname = "pybars3";
@@ -14,25 +15,24 @@ buildPythonPackage rec {
     hash = "sha256-ashH6QXlO5xbk2rxEskQR14nv3Z/efRSjBb5rx7A4lI=";
   };
 
-  propagatedBuildInputs = [
-    pymeta3
-  ];
+  propagatedBuildInputs = [ pymeta3 ];
 
   checkPhase = ''
     runHook preCheck
-    ${python3.interpreter} tests.py
+    ${python.interpreter} tests.py
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "pybars"
-  ];
+  pythonImportsCheck = [ "pybars" ];
 
   meta = with lib; {
     description = "Handlebars.js template support for Python 3 and 2";
     homepage = "https://github.com/wbond/pybars3";
     changelog = "https://github.com/wbond/pybars3/releases/tag/${version}";
     license = licenses.lgpl3Only;
-    maintainers = with maintainers; [ jfly matusf ];
+    maintainers = with maintainers; [
+      jfly
+      matusf
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pybase64/default.nix b/pkgs/development/python-modules/pybase64/default.nix
index fdc65a0abe72b..6972373eea32b 100644
--- a/pkgs/development/python-modules/pybase64/default.nix
+++ b/pkgs/development/python-modules/pybase64/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-Mu+ZPFWCHayavXZ+5GVqUBOy7YvxElyruufoTSuZEDg=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pybase64"
-  ];
+  pythonImportsCheck = [ "pybase64" ];
 
   meta = with lib; {
     description = "Fast Base64 encoding/decoding";
@@ -31,6 +28,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/mayeut/pybase64";
     changelog = "https://github.com/mayeut/pybase64/releases/tag/v${version}";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pybids/default.nix b/pkgs/development/python-modules/pybids/default.nix
index d702b4d509d37..3d150e82a501f 100644
--- a/pkgs/development/python-modules/pybids/default.nix
+++ b/pkgs/development/python-modules/pybids/default.nix
@@ -1,29 +1,29 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
-, setuptools
-, formulaic
-, click
-, num2words
-, numpy
-, scipy
-, pandas
-, nibabel
-, bids-validator
-, sqlalchemy
-, pytestCheckHook
-, versioneer
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  formulaic,
+  click,
+  num2words,
+  numpy,
+  scipy,
+  pandas,
+  nibabel,
+  bids-validator,
+  sqlalchemy,
+  pytestCheckHook,
+  versioneer,
 }:
 
 buildPythonPackage rec {
   pname = "pybids";
-  version = "0.16.4";
+  version = "0.16.5";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-pahl8wi6Sf8AuVqkvi7H90ViHr+9utb14ZVmKK3rFm4=";
+    hash = "sha256-5MAp5CYlOh1WxsXOE/LHVNm/K4VGFaLKWaaKYwKjQIM=";
   };
 
   pythonRelaxDeps = [
@@ -32,7 +32,6 @@ buildPythonPackage rec {
   ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
     versioneer
   ] ++ versioneer.optional-dependencies.toml;
@@ -49,28 +48,28 @@ buildPythonPackage rec {
     sqlalchemy
   ];
 
-  pythonImportsCheck = [
-    "bids"
-  ];
+  pythonImportsCheck = [ "bids" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
-    # looks for missing data:
+    # Test looks for missing data
     "test_config_filename"
-    # regression associated with formulaic >= 0.6.0
+    # Regression associated with formulaic >= 0.6.0
     # (see https://github.com/bids-standard/pybids/issues/1000)
     "test_split"
+    # AssertionError, TypeError
+    "test_run_variable_collection_bad_length_to_df_all_dense_var"
+    "test_extension_initial_dot"
+    "test_to_df"
   ];
 
   meta = with lib; {
     description = "Python tools for querying and manipulating BIDS datasets";
-    mainProgram = "pybids";
     homepage = "https://github.com/bids-standard/pybids";
     changelog = "https://github.com/bids-standard/pybids/blob/${version}/CHANGELOG.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
+    mainProgram = "pybids";
   };
 }
diff --git a/pkgs/development/python-modules/pybigwig/default.nix b/pkgs/development/python-modules/pybigwig/default.nix
index efbc350530e57..b82126e5862e8 100644
--- a/pkgs/development/python-modules/pybigwig/default.nix
+++ b/pkgs/development/python-modules/pybigwig/default.nix
@@ -1,42 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, pytestCheckHook
-, pythonOlder
-, zlib
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  zlib,
 }:
 
 buildPythonPackage rec {
   pname = "pybigwig";
-  version = "0.3.22";
+  version = "0.3.23";
   format = "setuptools";
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "deeptools";
     repo = "pyBigWig";
     rev = "refs/tags/${version}";
-    hash = "sha256-wJC5eXIC9PNlbCtmq671WuoIJVkh3aX7K6WArJWjyFg=";
+    hash = "sha256-ch9nZrQAnzFQQ62/NF4J51pV4DQAbVq4/f/6LaXf5hM=";
   };
 
-  buildInputs = [
-    zlib
-  ];
+  buildInputs = [ zlib ];
 
   nativeCheckInputs = [
     numpy
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pyBigWig"
-  ];
+  pythonImportsCheck = [ "pyBigWig" ];
 
-  pytestFlagsArray = [
-    "pyBigWigTest/test*.py"
-  ];
+  pytestFlagsArray = [ "pyBigWigTest/test*.py" ];
 
   disabledTests = [
     # Test file is donwloaded from GitHub
diff --git a/pkgs/development/python-modules/pybind11/default.nix b/pkgs/development/python-modules/pybind11/default.nix
index 1a06de633b689..750ee618f9d2b 100644
--- a/pkgs/development/python-modules/pybind11/default.nix
+++ b/pkgs/development/python-modules/pybind11/default.nix
@@ -1,20 +1,22 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, cmake
-, ninja
-, setuptools
-, boost
-, eigen
-, python
-, catch
-, numpy
-, pytestCheckHook
-, libxcrypt
-, makeSetupHook
-}: let
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  cmake,
+  ninja,
+  setuptools,
+  boost,
+  eigen,
+  python,
+  catch,
+  numpy,
+  pytestCheckHook,
+  libxcrypt,
+  makeSetupHook,
+}:
+let
   setupHook = makeSetupHook {
     name = "pybind11-setup-hook";
     substitutions = {
@@ -30,30 +32,34 @@
   # but clang has a check hard-coded requiring 10.13 because that’s when Apple first shipped a
   # support for C++17 aligned allocations on macOS.
   # Tell clang we’re targeting 10.13 on x86_64-darwin while continuing to use the default SDK.
-  stdenv' = if stdenv.isDarwin && stdenv.isx86_64
-    then python.stdenv.override (oldStdenv: {
-      buildPlatform = oldStdenv.buildPlatform // { darwinMinVersion = "10.13"; };
-      targetPlatform = oldStdenv.targetPlatform // { darwinMinVersion = "10.13"; };
-      hostPlatform = oldStdenv.hostPlatform // { darwinMinVersion = "10.13"; };
-    })
-    else python.stdenv;
-in buildPythonPackage rec {
+  stdenv' =
+    if stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64 then
+      python.stdenv.override (oldStdenv: {
+        buildPlatform = oldStdenv.buildPlatform // {
+          darwinMinVersion = "10.13";
+        };
+        targetPlatform = oldStdenv.targetPlatform // {
+          darwinMinVersion = "10.13";
+        };
+        hostPlatform = oldStdenv.hostPlatform // {
+          darwinMinVersion = "10.13";
+        };
+      })
+    else
+      python.stdenv;
+in
+buildPythonPackage rec {
   pname = "pybind11";
-  version = "2.12.0";
+  version = "2.13.5";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pybind";
     repo = "pybind11";
     rev = "v${version}";
-    hash = "sha256-DVkI5NxM5uME9m3PFYVpJOOa2j+yjL6AJn76fCTv2nE=";
+    hash = "sha256-cpxhrTFihA+gWmX62a+EQF3lccUyvu+d1MU2IC/CN6Q=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail "timeout=300" ""
-  '';
-
   build-system = [
     cmake
     ninja
@@ -77,9 +83,7 @@ in buildPythonPackage rec {
   cmakeFlags = [
     "-DBoost_INCLUDE_DIR=${lib.getDev boost}/include"
     "-DEIGEN3_INCLUDE_DIR=${lib.getDev eigen}/include/eigen3"
-  ] ++ lib.optionals (python.isPy3k && !stdenv.cc.isClang) [
-    "-DPYBIND11_CXX_STANDARD=-std=c++17"
-  ];
+  ] ++ lib.optionals (python.isPy3k && !stdenv.cc.isClang) [ "-DPYBIND11_CXX_STANDARD=-std=c++17" ];
 
   postBuild = ''
     # build tests
@@ -111,7 +115,7 @@ in buildPythonPackage rec {
     "tests/extra_setuptools/test_setuphelper.py"
   ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
     # expects KeyError, gets RuntimeError
     # https://github.com/pybind/pybind11/issues/4243
     "test_cross_module_exception_translator"
@@ -130,6 +134,9 @@ in buildPythonPackage rec {
       bindings of existing C++ code.
     '';
     license = licenses.bsd3;
-    maintainers = with maintainers; [ yuriaisaka dotlambda ];
+    maintainers = with maintainers; [
+      yuriaisaka
+      dotlambda
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pybindgen/default.nix b/pkgs/development/python-modules/pybindgen/default.nix
index a7a5de92e9e81..63321d5c53c06 100644
--- a/pkgs/development/python-modules/pybindgen/default.nix
+++ b/pkgs/development/python-modules/pybindgen/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, pygccxml
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  pygccxml,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-jH8iORpJqEUY9aKtBuOlseg50Q402nYxUZyKKPy6N2Q=";
   };
 
-  buildInputs = [
-    setuptools-scm
-  ];
+  buildInputs = [ setuptools-scm ];
 
-  nativeCheckInputs = [
-    pygccxml
-  ];
+  nativeCheckInputs = [ pygccxml ];
 
-  pythonImportsCheck = [
-    "pybindgen"
-  ];
+  pythonImportsCheck = [ "pybindgen" ];
 
   # Fails to import module 'cxxfilt' from pygccxml on Py3k
   doCheck = (!isPy3k);
diff --git a/pkgs/development/python-modules/pyblackbird/default.nix b/pkgs/development/python-modules/pyblackbird/default.nix
index e710ccb214800..9219d9ede21a6 100644
--- a/pkgs/development/python-modules/pyblackbird/default.nix
+++ b/pkgs/development/python-modules/pyblackbird/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyserial
-, pyserial-asyncio
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyserial,
+  pyserial-asyncio,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Test setup try to create a serial port
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyblackbird"
-  ];
+  pythonImportsCheck = [ "pyblackbird" ];
 
   meta = with lib; {
     description = "Python implementation for Monoprice Blackbird units";
diff --git a/pkgs/development/python-modules/pybloom-live/default.nix b/pkgs/development/python-modules/pybloom-live/default.nix
index 0499350a7c827..5000e4b72c635 100644
--- a/pkgs/development/python-modules/pybloom-live/default.nix
+++ b/pkgs/development/python-modules/pybloom-live/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, bitarray
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
-, xxhash
+{
+  lib,
+  bitarray,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  wheel,
+  xxhash,
 }:
 
 buildPythonPackage rec {
@@ -32,16 +33,12 @@ buildPythonPackage rec {
     xxhash
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pybloom_live"
-  ];
+  pythonImportsCheck = [ "pybloom_live" ];
 
   meta = with lib; {
-    description = "A Probabilistic data structure";
+    description = "Probabilistic data structure";
     homepage = "https://github.com/joseph-fox/python-bloomfilter";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/development/python-modules/pyblu/default.nix b/pkgs/development/python-modules/pyblu/default.nix
new file mode 100644
index 0000000000000..fdabb3f9ef675
--- /dev/null
+++ b/pkgs/development/python-modules/pyblu/default.nix
@@ -0,0 +1,47 @@
+{
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  lxml,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "pyblu";
+  version = "1.0.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "LouisChrist";
+    repo = "pyblu";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-olQZ7e4RmjL1KVtJvPsXICgL2VCOIFnZCW8WjKO3X+Q=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    aiohttp
+    lxml
+  ];
+
+  pythonImportsCheck = [ "pyblu" ];
+
+  nativeCheckInputs = [
+    aioresponses
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  meta = {
+    changelog = "https://github.com/LouisChrist/pyblu/releases/tag/v${version}";
+    description = "BluOS API client";
+    homepage = "https://github.com/LouisChrist/pyblu";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/pybluez/default.nix b/pkgs/development/python-modules/pybluez/default.nix
index 55262a07a4cad..ca745113c5925 100644
--- a/pkgs/development/python-modules/pybluez/default.nix
+++ b/pkgs/development/python-modules/pybluez/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, bluez
-, gattlib
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  bluez,
+  gattlib,
 }:
 
 buildPythonPackage rec {
@@ -18,13 +19,9 @@ buildPythonPackage rec {
     hash = "sha256-GA58DfCFaVzZQA1HYpGQ68bznrt4SX1ojyOVn8hyCGo=";
   };
 
-  buildInputs = [
-    bluez
-  ];
+  buildInputs = [ bluez ];
 
-  propagatedBuildInputs = [
-    gattlib
-  ];
+  propagatedBuildInputs = [ gattlib ];
 
   # there are no tests
   doCheck = false;
@@ -39,7 +36,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/pybluez/pybluez";
     license = licenses.gpl2;
     maintainers = with maintainers; [ leenaars ];
-    broken = stdenv.isDarwin; # requires pyobjc-core, pyobjc-framework-Cocoa
+    broken = stdenv.hostPlatform.isDarwin; # requires pyobjc-core, pyobjc-framework-Cocoa
   };
-
 }
diff --git a/pkgs/development/python-modules/pybox2d/default.nix b/pkgs/development/python-modules/pybox2d/default.nix
index c7a8e7d83ebfb..0d7069c736ca8 100644
--- a/pkgs/development/python-modules/pybox2d/default.nix
+++ b/pkgs/development/python-modules/pybox2d/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, swig
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  swig,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-yjLFvsg8GQLxjN1vtZM9zl+kAmD4+eS/vzRkpj0SCjY=";
   };
 
-  nativeBuildInputs = [
-    swig
-  ];
+  nativeBuildInputs = [ swig ];
 
   # We need to build the package explicitly a first time so that the library/Box2D/Box2D.py file
   # gets generated.
diff --git a/pkgs/development/python-modules/pybravia/default.nix b/pkgs/development/python-modules/pybravia/default.nix
index b738d3adf01e5..fdb66df306afb 100644
--- a/pkgs/development/python-modules/pybravia/default.nix
+++ b/pkgs/development/python-modules/pybravia/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pybravia";
-  version = "0.3.3";
+  version = "0.3.4";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -16,24 +17,18 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "Drafteed";
     repo = pname;
-    rev = "v${version}";
-    hash = "sha256-Ux9EereKKbgaVQORliW6J5FSBlytLM+m4PVFBk+OW6k=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-1LfYEVclRneU3eD52kvzjLYyGdzYSWVDQ5EADOviglw=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pybravia"
-  ];
+  pythonImportsCheck = [ "pybravia" ];
 
   meta = with lib; {
     description = "Library for remote control of Sony Bravia TVs 2013 and newer";
diff --git a/pkgs/development/python-modules/pybrowserid/darwin_fix.patch b/pkgs/development/python-modules/pybrowserid/darwin_fix.patch
new file mode 100644
index 0000000000000..7e85c08d810e1
--- /dev/null
+++ b/pkgs/development/python-modules/pybrowserid/darwin_fix.patch
@@ -0,0 +1,231 @@
+commit 4e68d9bfd12de51d8e6dc8ac622317f7755f1080
+Author: Palmer Cox <p@lmercox.com>
+Date:   Tue May 14 23:07:48 2024 -0400
+
+    python312Packages.pybrowserid: Fix on Darwin
+    
+    The WorkerPoolVerifier works by spawning one or more child processes in
+    order to run the verification process. This is fine on Linux when using
+    the default "fork" method of the multiprocessing module. However, this
+    breaks when using the "spawn" or "forkserver" method since those methods
+    require that the arguments passed into the Process object be pickleable.
+    Specifically we're passing threading.Lock objects to the child process
+    which are not pickleable.
+    
+    Passing a Lock to a child process spawned via fork mostly does nothing -
+    the child process ends up with its own copy of the Lock which its free
+    to lock or unlock as it pleases and it has no effect on the parent
+    process. So, we don't actually need to pass the Lock to the child
+    process since it has never done anything. All we need to do is _not_
+    pass it since it causes errors when its passed because its not
+    pickleable. We don't need to re-create its functionality.
+    
+    Anyway, there are two places where we are passing locks to the child
+    process. The first is the WorkerPoolVerifier class. This lock isn't
+    actually being used - its just passed because we're passing the "self"
+    object to the worker thread. So, we can fix this by making the target
+    method to run in the worker thread a free-function and only passing the
+    object we need - thus avoiding passing the unused Lock that triggers the
+    pickle error.
+    
+    The other place that a Lock is passed ia via the FIFOCache. We can work
+    around this by making the Lock a global variable instead of an instance
+    variable. This shouldn't cause any significant performance issues
+    because the FIFOCache only holds this lock for brief periods when its
+    updating itself - its not doing any network call or long running
+    operations. Anyway, because its a global variable now, its not passed to
+    the process and we avoid the pickle error.
+    
+    The other problem we have to fix are the tests on Darwin. There are two
+    problems - both due to Darwin defaulting to the "spawn" start method
+    for child Processes:
+    
+    1. When we spawn a new Python process, it inherits the same __main__
+       module as its parent. When running tests, this __main__ module is the
+       unittest module. And, it start trying to run tests when its loaded.
+       This spawns more processes which also try to run tests, and so on.
+    
+    2. The test code tries to mock out the network access. However, when we
+       spawn a new Python process these mocks are lost.
+    
+    Anyway, we fix this issues by creating a temporary replacement for the
+    __main__ module which we install before running the WorkerPoolVerifier
+    tests. This module avoids trying to run the unit tests and also applies
+    the necessary mock to avoid network access.
+
+diff --git a/browserid/supportdoc.py b/browserid/supportdoc.py
+index d995fed..249b37e 100644
+--- a/browserid/supportdoc.py
++++ b/browserid/supportdoc.py
+@@ -26,6 +26,9 @@ DEFAULT_TRUSTED_SECONDARIES = ("browserid.org", "diresworb.org",
+                                "login.persona.org")
+ 
+ 
++FIFO_CACHE_LOCK = threading.Lock()
++
++
+ class SupportDocumentManager(object):
+     """Manager for mapping hostnames to their BrowserID support documents.
+ 
+@@ -131,7 +134,6 @@ class FIFOCache(object):
+         self.max_size = max_size
+         self.items_map = {}
+         self.items_queue = collections.deque()
+-        self._lock = threading.Lock()
+ 
+     def __getitem__(self, key):
+         """Lookup the given key in the cache.
+@@ -147,7 +149,7 @@ class FIFOCache(object):
+                 # it hasn't been updated by another thread in the meantime.
+                 # This is a little more work during eviction, but it means we
+                 # can avoid locking in the common case of non-expired items.
+-                self._lock.acquire()
++                FIFO_CACHE_LOCK.acquire()
+                 try:
+                     if self.items_map[key][0] == timestamp:
+                         # Just delete it from items_map.  Trying to find
+@@ -157,7 +159,7 @@ class FIFOCache(object):
+                 except KeyError:
+                     pass
+                 finally:
+-                    self._lock.release()
++                    FIFO_CACHE_LOCK.release()
+                     raise KeyError
+         return value
+ 
+@@ -168,7 +170,7 @@ class FIFOCache(object):
+         there's enough room in the cache and evicting items if necessary.
+         """
+         now = time.time()
+-        with self._lock:
++        with FIFO_CACHE_LOCK:
+             # First we need to make sure there's enough room.
+             # This is a great opportunity to evict any expired items,
+             # helping to keep memory small for sparse caches.
+diff --git a/browserid/tests/dummy_main_module_for_unit_test_worker_processes.py b/browserid/tests/dummy_main_module_for_unit_test_worker_processes.py
+new file mode 100644
+index 0000000..388f86f
+--- /dev/null
++++ b/browserid/tests/dummy_main_module_for_unit_test_worker_processes.py
+@@ -0,0 +1,29 @@
++"""
++This module is necessary as a hack to get tests to pass on Darwin.
++
++The reason is that the tests attempt to start up a multiprocessing.Process.
++Doing that spawns a new Python process with the same __main__ module as the
++parent process. The first problem is that the default start mode for Processes
++on Darwin with "spawn" as opposed to "fork" as on Linux. This means that a
++fully new Python interpretter is started with the same __main__ module. When
++running tests, that __main__ module is the standard library unittest module.
++Unfortunately, that module unconditionally runs unit tests without checking
++that __name__ == "__main__". The end result is that every time a worker process
++is spawned it immediately attemps to run the tests which spawn more processes
++and so on.
++
++So, we work around that by replacing the __main__ module with this one before
++any processes are spawned. This prevents the infinite spawning of processes
++since this module doesn't try to run any unit tests.
++
++Additionally, this also patches the supportdoc fetching methods - which is
++necessary to actually get the tests to pass.
++"""
++
++import multiprocessing
++
++from browserid.tests.support import patched_supportdoc_fetching
++
++if multiprocessing.current_process().name != "MainProcess":
++    patched_supportdoc_fetching().__enter__()
++
+diff --git a/browserid/tests/test_verifiers.py b/browserid/tests/test_verifiers.py
+index d95ff8f..e8b867f 100644
+--- a/browserid/tests/test_verifiers.py
++++ b/browserid/tests/test_verifiers.py
+@@ -454,15 +454,27 @@ class TestDummyVerifier(unittest.TestCase, VerifierTestCases):
+ class TestWorkerPoolVerifier(TestDummyVerifier):
+ 
+     def setUp(self):
++        from browserid.tests import dummy_main_module_for_unit_test_worker_processes
++        import sys
++
+         super(TestWorkerPoolVerifier, self).setUp()
++
++        self.__old_main = sys.modules["__main__"]
++        sys.modules["__main__"] = dummy_main_module_for_unit_test_worker_processes
++
+         self.verifier = WorkerPoolVerifier(
+                 verifier=LocalVerifier(["*"])
+         )
+ 
+     def tearDown(self):
++        import sys
++
+         super(TestWorkerPoolVerifier, self).tearDown()
++
+         self.verifier.close()
+ 
++        sys.modules["__main__"] = self.__old_main
++
+ 
+ class TestShortcutFunction(unittest.TestCase):
+ 
+diff --git a/browserid/verifiers/workerpool.py b/browserid/verifiers/workerpool.py
+index c669107..d250222 100644
+--- a/browserid/verifiers/workerpool.py
++++ b/browserid/verifiers/workerpool.py
+@@ -32,7 +32,6 @@ class WorkerPoolVerifier(object):
+         if verifier is None:
+             verifier = LocalVerifier()
+         self.num_procs = num_procs
+-        self.verifier = verifier
+         # Create the various communication channels.
+         # Yes, this duplicates a lot of the logic from multprocessing.Pool.
+         # I don't want to have to constantly pickle the verifier object
+@@ -53,7 +52,7 @@ class WorkerPoolVerifier(object):
+         self._result_thread.start()
+         self._processes = []
+         for n in range(num_procs):
+-            proc = multiprocessing.Process(target=self._run_worker)
++            proc = multiprocessing.Process(target=_run_worker, args=(self._work_queue, verifier, self._result_queue))
+             self._processes.append(proc)
+             proc.start()
+ 
+@@ -128,21 +127,21 @@ class WorkerPoolVerifier(object):
+                 self._waiting_conds[job_id] = (ok, result)
+                 cond.notify()
+ 
+-    def _run_worker(self):
+-        """Method to run for the background worker processes.
++def _run_worker(work_queue, verifier, result_queue):
++    """Method to run for the background worker processes.
+ 
+-        This method loops through jobs from the work queue, executing them
+-        with the verifier object and pushing the result back via the result
+-        queue.
+-        """
+-        while True:
+-            job_id, args, kwds = self._work_queue.get()
+-            if job_id is None:
+-                break
+-            try:
+-                result = self.verifier.verify(*args, **kwds)
+-                ok = True
+-            except Exception as e:
+-                result = e
+-                ok = False
+-            self._result_queue.put((job_id, ok, result))
++    This method loops through jobs from the work queue, executing them
++    with the verifier object and pushing the result back via the result
++    queue.
++    """
++    while True:
++        job_id, args, kwds = work_queue.get()
++        if job_id is None:
++            break
++        try:
++            result = verifier.verify(*args, **kwds)
++            ok = True
++        except Exception as e:
++            result = e
++            ok = False
++        result_queue.put((job_id, ok, result))
diff --git a/pkgs/development/python-modules/pybrowserid/default.nix b/pkgs/development/python-modules/pybrowserid/default.nix
index 1a4cd7c43058c..d5783fa023124 100644
--- a/pkgs/development/python-modules/pybrowserid/default.nix
+++ b/pkgs/development/python-modules/pybrowserid/default.nix
@@ -1,24 +1,46 @@
-{ lib, buildPythonPackage, fetchPypi
-, requests, mock }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  requests,
+  unittestCheckHook,
+  mock,
+}:
 
 buildPythonPackage rec {
   pname = "pybrowserid";
   version = "0.14.0";
+  pyproject = true;
 
   src = fetchPypi {
     pname = "PyBrowserID";
     inherit version;
-    sha256 = "1qvi79kfb8x9kxkm5lw2mp42hm82cpps1xknmsb5ghkwx1lpc8kc";
+    hash = "sha256-bCJ2aeh8wleWrnb2oO9lAlUoyK2C01Jnn6mj5WY6ceM=";
   };
 
-  propagatedBuildInputs = [ requests ];
+  patches = [ ./darwin_fix.patch ];
 
-  nativeCheckInputs = [ mock ];
+  postPatch = ''
+    substituteInPlace browserid/tests/* \
+        --replace-warn 'assertEquals' 'assertEqual'
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [ requests ];
+
+  pythonImportsCheck = [ "browserid" ];
+
+  nativeCheckInputs = [
+    unittestCheckHook
+    mock
+  ];
 
   meta = with lib; {
     description = "Python library for the BrowserID Protocol";
-    homepage    = "https://github.com/mozilla/PyBrowserID";
-    license     = licenses.mpl20;
-    maintainers = with maintainers; [ ];
+    homepage = "https://github.com/mozilla/PyBrowserID";
+    license = licenses.mpl20;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pybrowsers/default.nix b/pkgs/development/python-modules/pybrowsers/default.nix
index 859b1faa4b4e2..76e427fef92f4 100644
--- a/pkgs/development/python-modules/pybrowsers/default.nix
+++ b/pkgs/development/python-modules/pybrowsers/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
-, pyxdg
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
+  pyxdg,
 }:
 
 buildPythonPackage rec {
@@ -24,20 +25,14 @@ buildPythonPackage rec {
     sed -i "/--cov/d" pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    pyxdg
-  ];
+  propagatedBuildInputs = [ pyxdg ];
 
   # Tests want to interact with actual browsers
   doCheck = false;
 
-  pythonImportsCheck = [
-    "browsers"
-  ];
+  pythonImportsCheck = [ "browsers" ];
 
   meta = with lib; {
     description = "Python library for detecting and launching browsers";
diff --git a/pkgs/development/python-modules/pybtex-docutils/default.nix b/pkgs/development/python-modules/pybtex-docutils/default.nix
index b2c05f73bc636..e1651297a77c1 100644
--- a/pkgs/development/python-modules/pybtex-docutils/default.nix
+++ b/pkgs/development/python-modules/pybtex-docutils/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, docutils
-, fetchPypi
-, pybtex
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  docutils,
+  fetchPypi,
+  pybtex,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,16 +25,12 @@ buildPythonPackage rec {
     pybtex
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pybtex_docutils"
-  ];
+  pythonImportsCheck = [ "pybtex_docutils" ];
 
   meta = with lib; {
-    description = "A docutils backend for pybtex";
+    description = "Docutils backend for pybtex";
     homepage = "https://github.com/mcmtroffaes/pybtex-docutils";
     license = licenses.mit;
   };
diff --git a/pkgs/development/python-modules/pybtex/default.nix b/pkgs/development/python-modules/pybtex/default.nix
index 04a9ba95a89e1..94df8e4f62bb6 100644
--- a/pkgs/development/python-modules/pybtex/default.nix
+++ b/pkgs/development/python-modules/pybtex/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, latexcodec
-, pyyaml
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  latexcodec,
+  pyyaml,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -27,7 +28,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://pybtex.org/";
-    description = "A BibTeX-compatible bibliography processor written in Python";
+    description = "BibTeX-compatible bibliography processor written in Python";
     license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/pybullet/default.nix b/pkgs/development/python-modules/pybullet/default.nix
index 3c11dd822c211..95dbed9a924c4 100644
--- a/pkgs/development/python-modules/pybullet/default.nix
+++ b/pkgs/development/python-modules/pybullet/default.nix
@@ -1,10 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, libGLU, libGL
-, xorg
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  libGLU,
+  libGL,
+  xorg,
+  numpy,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +19,15 @@ buildPythonPackage rec {
     hash = "sha256-2idSVDPIhpjcn9i8IPpK5NB3OLRlZjNlnr2CwtKITgg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   buildInputs = [
-    libGLU libGL
+    libGLU
+    libGL
     xorg.libX11
   ];
 
-  propagatedBuildInputs =  [ numpy ];
+  propagatedBuildInputs = [ numpy ];
 
   patches = [
     # make sure X11 and OpenGL can be found at runtime
diff --git a/pkgs/development/python-modules/pycairo/default.nix b/pkgs/development/python-modules/pycairo/default.nix
index a2b865e7b71cb..4f4859e007c39 100644
--- a/pkgs/development/python-modules/pycairo/default.nix
+++ b/pkgs/development/python-modules/pycairo/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, pythonOlder
-, fetchFromGitHub
-, meson
-, ninja
-, buildPythonPackage
-, pytestCheckHook
-, pkg-config
-, cairo
-, libxcrypt
-, python
+{
+  lib,
+  pythonOlder,
+  fetchFromGitHub,
+  meson,
+  ninja,
+  buildPythonPackage,
+  pytestCheckHook,
+  pkg-config,
+  cairo,
+  libxcrypt,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -32,15 +33,9 @@ buildPythonPackage rec {
     pkg-config
   ];
 
-  buildInputs = [
-    cairo
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    libxcrypt
-  ];
+  buildInputs = [ cairo ] ++ lib.optionals (pythonOlder "3.9") [ libxcrypt ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   mesonFlags = [
     # This is only used for figuring out what version of Python is in
@@ -52,7 +47,10 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python 3 bindings for cairo";
     homepage = "https://pycairo.readthedocs.io/";
-    license = with licenses; [ lgpl21Only mpl11 ];
+    license = with licenses; [
+      lgpl21Only
+      mpl11
+    ];
     platforms = lib.platforms.linux ++ lib.platforms.darwin;
   };
 }
diff --git a/pkgs/development/python-modules/pycangjie/default.nix b/pkgs/development/python-modules/pycangjie/default.nix
index 5fd7e130c248c..caca2f9f3d0a6 100644
--- a/pkgs/development/python-modules/pycangjie/default.nix
+++ b/pkgs/development/python-modules/pycangjie/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, fetchFromGitHub
-, bash
-, autoconf
-, automake
-, libtool
-, pkg-config
-, libcangjie
-, sqlite
-, buildPythonPackage
-, cython
+{
+  lib,
+  fetchFromGitHub,
+  bash,
+  autoconf,
+  automake,
+  libtool,
+  pkg-config,
+  libcangjie,
+  sqlite,
+  buildPythonPackage,
+  cython,
 }:
 
 buildPythonPackage {
@@ -23,8 +24,17 @@ buildPythonPackage {
     hash = "sha256-sS0Demzm89WtEIN4Efz0OTsUQ/c3gIX+/koekQGOca4=";
   };
 
-  nativeBuildInputs = [ pkg-config libtool autoconf automake cython ];
-  buildInputs = [ libcangjie sqlite ];
+  nativeBuildInputs = [
+    pkg-config
+    libtool
+    autoconf
+    automake
+    cython
+  ];
+  buildInputs = [
+    libcangjie
+    sqlite
+  ];
 
   preConfigure = ''
     find . -name '*.sh' -exec sed -e 's@#!/bin/bash@${bash}/bin/bash@' -i '{}' ';'
diff --git a/pkgs/development/python-modules/pycapnp/default.nix b/pkgs/development/python-modules/pycapnp/default.nix
index e10075e277265..5276e951b3c7c 100644
--- a/pkgs/development/python-modules/pycapnp/default.nix
+++ b/pkgs/development/python-modules/pycapnp/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, capnproto
-, cython
-, fetchFromGitHub
-, isPy27
-, isPyPy
-, pkgconfig
+{
+  lib,
+  buildPythonPackage,
+  capnproto,
+  cython,
+  fetchFromGitHub,
+  isPy27,
+  isPyPy,
+  pkgconfig,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,10 @@ buildPythonPackage rec {
     sha256 = "1xi6df93ggkpmwckwbi356v7m32zv5qry8s45hvsps66dz438kmi";
   };
 
-  nativeBuildInputs = [ cython pkgconfig ];
+  nativeBuildInputs = [
+    cython
+    pkgconfig
+  ];
 
   buildInputs = [ capnproto ];
 
@@ -32,7 +36,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://capnproto.github.io/pycapnp/";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     license = licenses.bsd2;
     # No support for capnproto 1.0 yet
     # https://github.com/capnproto/pycapnp/issues/323
diff --git a/pkgs/development/python-modules/pycaption/default.nix b/pkgs/development/python-modules/pycaption/default.nix
index 900f93bbea879..c00712fdfaf90 100644
--- a/pkgs/development/python-modules/pycaption/default.nix
+++ b/pkgs/development/python-modules/pycaption/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, beautifulsoup4
-, lxml
-, cssutils
-, nltk
-, pytest-lazy-fixture
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  beautifulsoup4,
+  lxml,
+  cssutils,
+  nltk,
+  pytest-lazy-fixture,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pycaption";
-  version = "2.2.6";
+  version = "2.2.14";
 
   disabled = pythonOlder "3.8";
 
@@ -23,20 +24,18 @@ buildPythonPackage rec {
     owner = "pbs";
     repo = "pycaption";
     rev = "refs/tags/${version}";
-    hash = "sha256-XN83L6WsRyl9G0ia4uz3SCVcwwUNUyfNMB64RfZh+PA=";
+    hash = "sha256-9COO8cJRxXiWWceh3XtasSMBq7E5Py0p+1b3sWMaMWE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     beautifulsoup4
     lxml
     cssutils
   ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     transcript = [ nltk ];
   };
 
diff --git a/pkgs/development/python-modules/pycardano/default.nix b/pkgs/development/python-modules/pycardano/default.nix
index 75bef6723d5df..973b84f4c035f 100644
--- a/pkgs/development/python-modules/pycardano/default.nix
+++ b/pkgs/development/python-modules/pycardano/default.nix
@@ -1,37 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonRelaxDepsHook
-# Python deps
-, blockfrost-python
-, cachetools
-, cbor2
-, cose
-, ecpy
-, frozendict
-, frozenlist
-, mnemonic
-, poetry-core
-, pprintpp
-, pynacl
-, setuptools
-, typeguard
-, websocket-client
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  # Python deps
+  blockfrost-python,
+  cachetools,
+  cbor2,
+  cose,
+  docker,
+  ecpy,
+  frozendict,
+  frozenlist,
+  mnemonic,
+  poetry-core,
+  pprintpp,
+  pynacl,
+  setuptools,
+  typeguard,
+  websocket-client,
 }:
 
 let
   cose_0_9_dev8 = cose.overridePythonAttrs (old: rec {
     version = "0.9.dev8";
-    src = (old.src.override {
-      rev = "v${version}";
-      hash = "sha256-/jwq2C2nvHInsgPG4jZCr+XsvlUJdYewAkasrUPVaHM=";
-    });
+    src = (
+      old.src.override {
+        rev = "v${version}";
+        hash = "sha256-/jwq2C2nvHInsgPG4jZCr+XsvlUJdYewAkasrUPVaHM=";
+      }
+    );
     pythonImportsCheck = [ "cose" ];
   });
-
-in buildPythonPackage rec {
+in
+buildPythonPackage rec {
   pname = "pycardano";
-  version = "0.10.0";
+  version = "0.11.1";
 
   format = "pyproject";
 
@@ -39,18 +42,15 @@ in buildPythonPackage rec {
     owner = "Python-Cardano";
     repo = "pycardano";
     rev = "v${version}";
-    hash = "sha256-LP/W8IC2del476fGFq10VMWwMrbAoCCcZOngA8unBM0=";
+    hash = "sha256-OWm6ztt3s3DUbxDZqpvwTO6XwdY/57AI6Bc6x6kxH7k=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
-
   propagatedBuildInputs = [
     blockfrost-python
     cachetools
     cbor2
     cose_0_9_dev8
+    docker
     ecpy
     frozendict
     frozenlist
@@ -68,7 +68,7 @@ in buildPythonPackage rec {
   pythonImportsCheck = [ "pycardano" ];
 
   meta = with lib; {
-    description = "A lightweight Cardano library in Python";
+    description = "Lightweight Cardano library in Python";
     homepage = "https://github.com/Python-Cardano/pycardano";
     license = licenses.mit;
     maintainers = with maintainers; [ t4ccer ];
diff --git a/pkgs/development/python-modules/pycares/default.nix b/pkgs/development/python-modules/pycares/default.nix
index fcd6327bd2224..e973ff42cdcb5 100644
--- a/pkgs/development/python-modules/pycares/default.nix
+++ b/pkgs/development/python-modules/pycares/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, aiodns
-, buildPythonPackage
-, c-ares
-, cffi
-, fetchPypi
-, idna
-, pythonOlder
-, tornado
+{
+  lib,
+  aiodns,
+  buildPythonPackage,
+  c-ares,
+  cffi,
+  fetchPypi,
+  idna,
+  pythonOlder,
+  tornado,
 }:
 
 buildPythonPackage rec {
@@ -21,18 +22,14 @@ buildPythonPackage rec {
     hash = "sha256-9HV51Qjy9W7d0WznIEV4KtOxs7Z4CYaZ4rahswcz4cI=";
   };
 
-  buildInputs = [
-    c-ares
-  ];
+  buildInputs = [ c-ares ];
 
   propagatedBuildInputs = [
     cffi
     idna
   ];
 
-  propagatedNativeBuildInputs = [
-    cffi
-  ];
+  propagatedNativeBuildInputs = [ cffi ];
 
   # Requires network access
   doCheck = false;
@@ -41,9 +38,7 @@ buildPythonPackage rec {
     inherit aiodns tornado;
   };
 
-  pythonImportsCheck = [
-    "pycares"
-  ];
+  pythonImportsCheck = [ "pycares" ];
 
   meta = with lib; {
     description = "Python interface for c-ares";
diff --git a/pkgs/development/python-modules/pycarwings2/default.nix b/pkgs/development/python-modules/pycarwings2/default.nix
index 0158e2c018565..2d83d009aad89 100644
--- a/pkgs/development/python-modules/pycarwings2/default.nix
+++ b/pkgs/development/python-modules/pycarwings2/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, iso8601
-, requests
-, pycryptodome
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  iso8601,
+  requests,
+  pycryptodome,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     pycryptodome
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace setup.py \
@@ -46,9 +45,7 @@ buildPythonPackage rec {
     "test_bad_password"
   ];
 
-  pythonImportsCheck = [
-    "pycarwings2"
-  ];
+  pythonImportsCheck = [ "pycarwings2" ];
 
   meta = with lib; {
     description = "Python library for interacting with the NissanConnect EV";
diff --git a/pkgs/development/python-modules/pycatch22/default.nix b/pkgs/development/python-modules/pycatch22/default.nix
index c82088d9adbe8..69b218ec66b05 100644
--- a/pkgs/development/python-modules/pycatch22/default.nix
+++ b/pkgs/development/python-modules/pycatch22/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pandas
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pandas,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pycatch22";
-  version = "0.4.4";
+  version = "0.4.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     owner = "DynamicsAndNeuralSystems";
     repo = "pycatch22";
     rev = "refs/tags/v${version}";
-    hash = "sha256-l41LLo9k075EL8rV48bwa4Yw12XuqNJSDYtd9kyqS3U=";
+    hash = "sha256-NvZrjOdC6rV4hwCuGcc2Br/VDhLwZcYpfnNvQpqU134=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pandas
-  ];
+  nativeCheckInputs = [ pandas ];
 
   # This packages does not have real tests
   # But we can run this file as smoketest
@@ -38,9 +35,7 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "pycatch22"
-  ];
+  pythonImportsCheck = [ "pycatch22" ];
 
   meta = with lib; {
     description = "Python implementation of catch22";
diff --git a/pkgs/development/python-modules/pycategories/default.nix b/pkgs/development/python-modules/pycategories/default.nix
index 6586f598ca0a7..98a8e360d1572 100644
--- a/pkgs/development/python-modules/pycategories/default.nix
+++ b/pkgs/development/python-modules/pycategories/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, callPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  callPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
   # and shouldn't be used in production code
   propagatedBuildInputs = [ (callPackage ./infix.nix { }) ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Implementation of some concepts from category theory";
diff --git a/pkgs/development/python-modules/pycategories/infix.nix b/pkgs/development/python-modules/pycategories/infix.nix
index f3b4d2548181c..e3c09476b4013 100644
--- a/pkgs/development/python-modules/pycategories/infix.nix
+++ b/pkgs/development/python-modules/pycategories/infix.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +18,7 @@ buildPythonPackage rec {
 
   meta = {
     homepage = "https://github.com/borntyping/python-infix";
-    description = "A decorator that allows functions to be used as infix functions";
+    description = "Decorator that allows functions to be used as infix functions";
     license = lib.licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/pycddl/default.nix b/pkgs/development/python-modules/pycddl/default.nix
index 9cd2d1fab2024..e55a0dc4bf1a9 100644
--- a/pkgs/development/python-modules/pycddl/default.nix
+++ b/pkgs/development/python-modules/pycddl/default.nix
@@ -1,26 +1,31 @@
-{ lib
-, pythonOlder
-, fetchPypi
-, buildPythonPackage
-, rustPlatform
-, pytestCheckHook
-, psutil
-, cbor2
+{
+  lib,
+  pythonOlder,
+  fetchPypi,
+  buildPythonPackage,
+  rustPlatform,
+  pytestCheckHook,
+  psutil,
+  cbor2,
+  hypothesis,
 }:
 
 buildPythonPackage rec {
   pname = "pycddl";
-  version = "0.5.2";
-  format = "pyproject";
+  version = "0.6.3";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-LdecJPSov2Y/QI4MWb20DcF0EtMuDO0VwiQDUeD55GI=";
+    hash = "sha256-lVybSr+QvyepdTZfiTjqU0ENu6TT87ZZXIECBA8nMV4=";
   };
 
-  nativeBuildInputs = with rustPlatform; [ maturinBuildHook cargoSetupHook ];
+  nativeBuildInputs = with rustPlatform; [
+    maturinBuildHook
+    cargoSetupHook
+  ];
 
   postPatch = ''
     # We don't place pytest-benchmark in the closure because we have no
@@ -37,10 +42,21 @@ buildPythonPackage rec {
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-FJET2Xb1cq4aePFhPXpp2oEPIOtpugYWNFAa2Dj0F6Y=";
+    hash = "sha256-VpJ/PLAwwuakwsNAtLDdWGXCxl6jGMTvsEhzIHk6a0g=";
   };
 
-  nativeCheckInputs = [ pytestCheckHook psutil cbor2 ];
+  nativeCheckInputs = [
+    hypothesis
+    pytestCheckHook
+    psutil
+    cbor2
+  ];
+
+  disabledTests =[
+    # flaky
+    "test_memory_usage"
+  ];
+
   pythonImportsCheck = [ "pycddl" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/pycdio/default.nix b/pkgs/development/python-modules/pycdio/default.nix
index e8f0323b2f92e..2b2e635961963 100644
--- a/pkgs/development/python-modules/pycdio/default.nix
+++ b/pkgs/development/python-modules/pycdio/default.nix
@@ -1,47 +1,52 @@
-{ lib, stdenv
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, nose
-, pkgs
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pkg-config,
+  swig,
+  libcdio,
+  libiconv,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pycdio";
-  version = "2.1.1";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "61734db8c554b7b1a2cb2da2e2c15d3f9f5973a57cfb06f8854c38029004a9f8";
+  version = "2.1.1-unstable-2024-02-26";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "rocky";
+    repo = "pycdio";
+    rev = "806c6a2eeeeb546055ce2ac9a0ae6a14ea53ae35"; # no tag for this version (yet)
+    hash = "sha256-bOm82mBUIaw4BGHj3Y24Fv5+RfAew+Ma1u4QENXoRiU=";
   };
 
-  prePatch = ''
-    substituteInPlace setup.py \
-      --replace 'library_dirs=library_dirs' 'library_dirs=[dir.decode("utf-8") for dir in library_dirs]' \
-      --replace 'include_dirs=include_dirs' 'include_dirs=[dir.decode("utf-8") for dir in include_dirs]' \
-      --replace 'runtime_library_dirs=runtime_lib_dirs' 'runtime_library_dirs=[dir.decode("utf-8") for dir in runtime_lib_dirs]'
-  '';
-
   preConfigure = ''
     patchShebangs .
   '';
 
-  nativeBuildInputs = [ nose pkgs.pkg-config pkgs.swig ];
-  buildInputs = [ setuptools pkgs.libcdio ]
-    ++ lib.optional stdenv.isDarwin pkgs.libiconv;
+  build-system = [ setuptools ];
 
-  # Run tests using nosetests but first need to install the binaries
-  # to the root source directory where they can be found.
-  checkPhase = ''
-    ./setup.py install_lib -d .
-    nosetests
-  '';
+  nativeBuildInputs = [
+    pkg-config
+    swig
+  ];
 
-  meta = with lib; {
+  buildInputs = [
+    libcdio
+    libiconv
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pytestFlagsArray = [ "test/test-*.py" ];
+
+  meta = {
     homepage = "https://www.gnu.org/software/libcdio/";
+    changelog = "https://github.com/rocky/pycdio/blob/${src.rev}/ChangeLog";
     description = "Wrapper around libcdio (CD Input and Control library)";
-    license = licenses.gpl3Plus;
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ sigmanificient ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pycec/default.nix b/pkgs/development/python-modules/pycec/default.nix
index 832d38d72677a..dd18f56d9826e 100644
--- a/pkgs/development/python-modules/pycec/default.nix
+++ b/pkgs/development/python-modules/pycec/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, libcec
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  libcec,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-5KQyHjAvHWeHFqcFHFJxDOPwWuVcFAN2wVdz9a77dzU=";
   };
 
-  propagatedBuildInputs = [
-    libcec
-  ];
+  propagatedBuildInputs = [ libcec ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pycec"
-  ];
+  pythonImportsCheck = [ "pycec" ];
 
   meta = with lib; {
     description = "Python modules to access HDMI CEC devices";
diff --git a/pkgs/development/python-modules/pycep-parser/default.nix b/pkgs/development/python-modules/pycep-parser/default.nix
index 9231fbdf47f28..c8e5f12ddd53f 100644
--- a/pkgs/development/python-modules/pycep-parser/default.nix
+++ b/pkgs/development/python-modules/pycep-parser/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, assertpy
-, buildPythonPackage
-, fetchFromGitHub
-, lark
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, regex
-, typing-extensions
+{
+  lib,
+  assertpy,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lark,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  regex,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-qogUjj/GwMGwFEin+xJCSOCf5Ut8bgsFakyoMhkyKgU=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     lark
@@ -39,9 +38,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pycep"
-  ];
+  pythonImportsCheck = [ "pycep" ];
 
   meta = with lib; {
     description = "Python based Bicep parser";
diff --git a/pkgs/development/python-modules/pycfdns/default.nix b/pkgs/development/python-modules/pycfdns/default.nix
index 339ade0ca71f2..e54034e6dbd76 100644
--- a/pkgs/development/python-modules/pycfdns/default.nix
+++ b/pkgs/development/python-modules/pycfdns/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,20 +26,14 @@ buildPythonPackage rec {
       --replace 'version="0",' 'version="${version}",'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pycfdns"
-  ];
+  pythonImportsCheck = [ "pycfdns" ];
 
   meta = with lib; {
     description = "Python module for updating Cloudflare DNS A records";
diff --git a/pkgs/development/python-modules/pycflow2dot/default.nix b/pkgs/development/python-modules/pycflow2dot/default.nix
index 7bcd95e30d90c..19289d0b6cbde 100644
--- a/pkgs/development/python-modules/pycflow2dot/default.nix
+++ b/pkgs/development/python-modules/pycflow2dot/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cflow
-, graphviz
-, pydot
-, networkx
-, which
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cflow,
+  graphviz,
+  pydot,
+  networkx,
+  which,
 }:
 
 buildPythonPackage rec {
@@ -36,8 +37,8 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Layout C call graphs from cflow using GraphViz dot";
     mainProgram = "cflow2dot";
-    homepage    = "https://github.com/johnyf/pycflow2dot";
-    license     = licenses.gpl3Plus;
+    homepage = "https://github.com/johnyf/pycflow2dot";
+    license = licenses.gpl3Plus;
     maintainers = with maintainers; [ evils ];
   };
 }
diff --git a/pkgs/development/python-modules/pycfmodel/default.nix b/pkgs/development/python-modules/pycfmodel/default.nix
index e0d072684e269..e16ec8a669ab6 100644
--- a/pkgs/development/python-modules/pycfmodel/default.nix
+++ b/pkgs/development/python-modules/pycfmodel/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, httpx
-, pydantic
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpx,
+  pydantic,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pycfmodel";
-  version = "0.22.0";
+  version = "1.0.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "Skyscanner";
     repo = "pycfmodel";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-NLi94W99LhrBXNFItMfJczV9EZlgvmvkavrfDQJs0YU=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-iCjOSwW6rdG3H4e/B/um+QioP45nOr9OcPAwXxZs3mU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  pythonRelaxDeps = [ "pydantic" ];
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pydantic
-  ];
+
+  dependencies = [ pydantic ];
 
   nativeCheckInputs = [
     httpx
@@ -42,11 +42,13 @@ buildPythonPackage rec {
     "test_valid_es_domain_from_aws_documentation_examples_resource_can_be_built"
     "test_valid_opensearch_domain_from_aws_documentation_examples_resource_can_be_built"
     "test_resolve_booleans_different_properties_for_generic_resource"
+    "test_loose_ip"
+    "test_extra_fields_not_allowed_s3_bucket"
+    "test_raise_error_if_invalid_fields_in_resource"
+    ""
   ];
 
-  pythonImportsCheck = [
-    "pycfmodel"
-  ];
+  pythonImportsCheck = [ "pycfmodel" ];
 
   meta = with lib; {
     description = "Model for Cloud Formation scripts";
@@ -54,6 +56,5 @@ buildPythonPackage rec {
     changelog = "https://github.com/Skyscanner/pycfmodel/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
-    broken = versionAtLeast pydantic.version "2";
   };
 }
diff --git a/pkgs/development/python-modules/pychannels/default.nix b/pkgs/development/python-modules/pychannels/default.nix
index e7185f3697dcd..48310b769912e 100644
--- a/pkgs/development/python-modules/pychannels/default.nix
+++ b/pkgs/development/python-modules/pychannels/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pychart/default.nix b/pkgs/development/python-modules/pychart/default.nix
index aa9ef1c11c9bb..c6fa67c0912e6 100644
--- a/pkgs/development/python-modules/pychart/default.nix
+++ b/pkgs/development/python-modules/pychart/default.nix
@@ -1,11 +1,16 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27 }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+}:
 
 buildPythonPackage rec {
   pname = "pychart";
   version = "1.39";
   format = "setuptools";
 
-  disabled = ! isPy27;
+  disabled = !isPy27;
 
   src = fetchPypi {
     inherit pname version;
diff --git a/pkgs/development/python-modules/pychm/default.nix b/pkgs/development/python-modules/pychm/default.nix
index 175acf928256e..8b7c443d66842 100644
--- a/pkgs/development/python-modules/pychm/default.nix
+++ b/pkgs/development/python-modules/pychm/default.nix
@@ -1,8 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, chmlib
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  chmlib,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pychromecast/default.nix b/pkgs/development/python-modules/pychromecast/default.nix
index 5e4e971432edc..f14248b781b08 100644
--- a/pkgs/development/python-modules/pychromecast/default.nix
+++ b/pkgs/development/python-modules/pychromecast/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, casttube
-, fetchPypi
-, pythonOlder
-, protobuf
-, setuptools
-, wheel
-, zeroconf
+{
+  lib,
+  buildPythonPackage,
+  casttube,
+  fetchPypi,
+  pythonOlder,
+  protobuf,
+  setuptools,
+  wheel,
+  zeroconf,
 }:
 
 buildPythonPackage rec {
@@ -43,9 +44,7 @@ buildPythonPackage rec {
   # no tests available
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pychromecast"
-  ];
+  pythonImportsCheck = [ "pychromecast" ];
 
   meta = with lib; {
     description = "Library for Python to communicate with the Google Chromecast";
diff --git a/pkgs/development/python-modules/pycketcasts/default.nix b/pkgs/development/python-modules/pycketcasts/default.nix
index e7cc9fe856ed9..7b4c51fcc6e85 100644
--- a/pkgs/development/python-modules/pycketcasts/default.nix
+++ b/pkgs/development/python-modules/pycketcasts/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python-magic
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python-magic,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pycketcasts"
-  ];
+  pythonImportsCheck = [ "pycketcasts" ];
 
   meta = with lib; {
     description = "Module to interact with PocketCast's unofficial API";
diff --git a/pkgs/development/python-modules/pyclimacell/default.nix b/pkgs/development/python-modules/pyclimacell/default.nix
index f8f58b19ccd20..8b61e177f5db2 100644
--- a/pkgs/development/python-modules/pyclimacell/default.nix
+++ b/pkgs/development/python-modules/pyclimacell/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, pytz
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     pytz
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "pyclimacell" ];
 
diff --git a/pkgs/development/python-modules/pyclip/default.nix b/pkgs/development/python-modules/pyclip/default.nix
index 88fd8db0419e7..631bebd566bfe 100644
--- a/pkgs/development/python-modules/pyclip/default.nix
+++ b/pkgs/development/python-modules/pyclip/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, buildPythonPackage
-, pytest
-, pythonOlder
-, xclip
-, xvfb-run
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pytest,
+  pythonOlder,
+  xclip,
+  xvfb-run,
 }:
 
 buildPythonPackage rec {
@@ -27,21 +28,21 @@ buildPythonPackage rec {
       --replace docs/README.md README.md
   '';
 
-  nativeCheckInputs = [
-    pytest
-  ] ++ lib.optionals stdenv.isLinux [
-    xclip
-    xvfb-run
-  ];
+  nativeCheckInputs =
+    [ pytest ]
+    ++ lib.optionals stdenv.hostPlatform.isLinux [
+      xclip
+      xvfb-run
+    ];
 
   checkPhase = ''
     runHook preCheck
-    ${lib.optionalString stdenv.isLinux "xvfb-run -s '-screen 0 800x600x24'"} pytest tests
+    ${lib.optionalString stdenv.hostPlatform.isLinux "xvfb-run -s '-screen 0 800x600x24'"} pytest tests
     runHook postCheck
   '';
 
   meta = {
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     description = "Cross-platform clipboard utilities supporting both binary and text data";
     mainProgram = "pyclip";
     homepage = "https://github.com/spyoungtech/pyclip";
diff --git a/pkgs/development/python-modules/pyclipper/default.nix b/pkgs/development/python-modules/pyclipper/default.nix
index b7b15c260fdbf..edde76cd28d8e 100644
--- a/pkgs/development/python-modules/pyclipper/default.nix
+++ b/pkgs/development/python-modules/pyclipper/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, setuptools-scm
-, cython
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools-scm,
+  cython,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     cython
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyclipper"
-  ];
+  pythonImportsCheck = [ "pyclipper" ];
 
   meta = with lib; {
     description = "Cython wrapper for clipper library";
diff --git a/pkgs/development/python-modules/pycm/default.nix b/pkgs/development/python-modules/pycm/default.nix
index 58570c1779020..0c22e1ac607d7 100644
--- a/pkgs/development/python-modules/pycm/default.nix
+++ b/pkgs/development/python-modules/pycm/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, matplotlib
-, numpy
-, pytestCheckHook
-, pythonOlder
-, seaborn
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  matplotlib,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  seaborn,
 }:
 
 buildPythonPackage rec {
@@ -28,8 +29,13 @@ buildPythonPackage rec {
     seaborn
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  disabledTests = [
+    # Minor tolerance issues with Python 3.12; should be fixed in next release
+    # (see https://github.com/sepandhaghighi/pycm/pull/528)
+    "verified_test"
+    "function_test"
   ];
 
   postPatch = ''
@@ -38,15 +44,10 @@ buildPythonPackage rec {
     # Also depends on python3Packages.notebook
     rm Otherfiles/notebook_check.py
     substituteInPlace setup.py \
-      --replace '=get_requires()' '=[]'
+      --replace-fail '=get_requires()' '=[]'
   '';
 
-  # https://github.com/sepandhaghighi/pycm/issues/488
-  pytestFlagsArray = [ "Test" ];
-
-  pythonImportsCheck = [
-    "pycm"
-  ];
+  pythonImportsCheck = [ "pycm" ];
 
   meta = with lib; {
     description = "Multiclass confusion matrix library";
diff --git a/pkgs/development/python-modules/pycmarkgfm/default.nix b/pkgs/development/python-modules/pycmarkgfm/default.nix
index 79700a7bdc7f0..41aedf437fcfd 100644
--- a/pkgs/development/python-modules/pycmarkgfm/default.nix
+++ b/pkgs/development/python-modules/pycmarkgfm/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27, cffi, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  cffi,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "pycmarkgfm";
diff --git a/pkgs/development/python-modules/pycocotools/default.nix b/pkgs/development/python-modules/pycocotools/default.nix
index 6cba9e71a7560..64f64a51fc588 100644
--- a/pkgs/development/python-modules/pycocotools/default.nix
+++ b/pkgs/development/python-modules/pycocotools/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cython
-, matplotlib
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cython,
+  matplotlib,
 }:
 
 buildPythonPackage rec {
   pname = "pycocotools";
-  version = "2.0.7";
+  version = "2.0.8";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-2ot4FRlu6/Ctq/Z/zEWRJsvGSYu8arH9FEw3FGXYaHk=";
+    hash = "sha256-jyvO23hromw2ejaA+cTrWyrZ3MsrNOrrIF4KAh4d+40=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pycodestyle/default.nix b/pkgs/development/python-modules/pycodestyle/default.nix
index f17001efdda16..9c6133207a3c8 100644
--- a/pkgs/development/python-modules/pycodestyle/default.nix
+++ b/pkgs/development/python-modules/pycodestyle/default.nix
@@ -1,14 +1,15 @@
-{ buildPythonPackage
-, pythonOlder
-, fetchPypi
-, lib
-, python
-, pytestCheckHook
+{
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  lib,
+  python,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pycodestyle";
-  version = "2.11.1";
+  version = "2.12.0";
 
   disabled = pythonOlder "3.6";
 
@@ -16,16 +17,12 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-QboOevyXUt+1PO1UieifgYa+AOWZ5xJmBpW3p1/yZj8=";
+    hash = "sha256-RC+VAUG09D33Ut0wNRH/3tOgTCtvt/ZZgFdPDDHm55w=";
   };
 
-  pythonImportsCheck = [
-    "pycodestyle"
-  ];
+  pythonImportsCheck = [ "pycodestyle" ];
 
-  nativCheckInputs = [
-    pytestCheckHook
-  ];
+  nativCheckInputs = [ pytestCheckHook ];
 
   # https://github.com/PyCQA/pycodestyle/blob/2.11.0/tox.ini#L16
   postCheck = ''
@@ -38,8 +35,6 @@ buildPythonPackage rec {
     mainProgram = "pycodestyle";
     homepage = "https://pycodestyle.pycqa.org/";
     license = licenses.mit;
-    maintainers = with maintainers; [
-      kamadorueda
-    ];
+    maintainers = with maintainers; [ kamadorueda ];
   };
 }
diff --git a/pkgs/development/python-modules/pycognito/default.nix b/pkgs/development/python-modules/pycognito/default.nix
index e0f4e1d190a7f..fc601fca868d1 100644
--- a/pkgs/development/python-modules/pycognito/default.nix
+++ b/pkgs/development/python-modules/pycognito/default.nix
@@ -1,38 +1,42 @@
-{ lib
-, boto3
-, buildPythonPackage
-, envs
-, fetchFromGitHub
-, isPy27
-, freezegun
-, mock
-, moto
-, pyjwt
-, pytestCheckHook
-, requests
-, requests-mock
+{
+  lib,
+  boto3,
+  buildPythonPackage,
+  envs,
+  fetchFromGitHub,
+  freezegun,
+  mock,
+  moto,
+  pyjwt,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pycognito";
-  version = "2024.2.0";
-  format = "setuptools";
-  disabled = isPy27;
+  version = "2024.5.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "pvizeli";
-    repo = pname;
+    repo = "pycognito";
     rev = "refs/tags/${version}";
-    hash = "sha256-VYko5KcJvnhPUceTll2BBJWb88SYnSL7S3mZ7XSLPSQ=";
+    hash = "sha256-U23fFLru4j6GnWMcYtsCW9BVJkVcCoefPH6oMijYGew=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     boto3
     envs
     pyjwt
     requests
-  ]
-  ++ pyjwt.optional-dependencies.crypto;
+  ] ++ pyjwt.optional-dependencies.crypto;
 
   nativeCheckInputs = [
     freezegun
@@ -40,18 +44,12 @@ buildPythonPackage rec {
     moto
     pytestCheckHook
     requests-mock
-  ]
-  ++ moto.optional-dependencies.cognitoidp;
-
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace 'python-jose[cryptography]' 'python-jose'
-  '';
+  ] ++ moto.optional-dependencies.cognitoidp;
 
   pytestFlagsArray = [ "tests.py" ];
 
   disabledTests = [
-    # requires network access
+    # Test requires network access
     "test_srp_requests_http_auth"
   ];
 
@@ -60,6 +58,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python class to integrate Boto3's Cognito client so it is easy to login users. With SRP support";
     homepage = "https://github.com/pvizeli/pycognito";
+    changelog = "https://github.com/NabuCasa/pycognito/releases/tag/${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ mic92 ];
   };
diff --git a/pkgs/development/python-modules/pycoin/default.nix b/pkgs/development/python-modules/pycoin/default.nix
index 4fe038b8ab2b2..e12e19a3ac723 100644
--- a/pkgs/development/python-modules/pycoin/default.nix
+++ b/pkgs/development/python-modules/pycoin/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, gnupg
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  gnupg,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pycollada/default.nix b/pkgs/development/python-modules/pycollada/default.nix
index 4b66ba84d2da0..b2b4ef94b8d3e 100644
--- a/pkgs/development/python-modules/pycollada/default.nix
+++ b/pkgs/development/python-modules/pycollada/default.nix
@@ -1,4 +1,10 @@
-{ lib, fetchPypi, buildPythonPackage, numpy, python-dateutil }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  numpy,
+  python-dateutil,
+}:
 
 buildPythonPackage rec {
   pname = "pycollada";
@@ -7,10 +13,13 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-86N1nMTOwdWekyqtdDmdvPVB0YhiqtkDx3AEDaQq8g4=";
+    hash = "sha256-86N1nMTOwdWekyqtdDmdvPVB0YhiqtkDx3AEDaQq8g4=";
   };
 
-  propagatedBuildInputs = [ numpy python-dateutil ];
+  propagatedBuildInputs = [
+    numpy
+    python-dateutil
+  ];
 
   # Some tests fail because they refer to test data files that don't exist
   # (upstream packaging issue)
diff --git a/pkgs/development/python-modules/pycomfoconnect/default.nix b/pkgs/development/python-modules/pycomfoconnect/default.nix
index a325583648ffb..f80e6318bc9ea 100644
--- a/pkgs/development/python-modules/pycomfoconnect/default.nix
+++ b/pkgs/development/python-modules/pycomfoconnect/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, protobuf
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  protobuf,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-I/0vCgSEi6mgYg1fMH4Ha7PoonewtqYYsvXZT8y4rJE=";
   };
 
-  propagatedBuildInputs = [
-    protobuf
-  ];
+  propagatedBuildInputs = [ protobuf ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pycomfoconnect"
-  ];
+  pythonImportsCheck = [ "pycomfoconnect" ];
 
   meta = with lib; {
     description = "Python module to interact with ComfoAir Q350/450/600 units";
diff --git a/pkgs/development/python-modules/pycomm3/default.nix b/pkgs/development/python-modules/pycomm3/default.nix
new file mode 100644
index 0000000000000..08c4281151932
--- /dev/null
+++ b/pkgs/development/python-modules/pycomm3/default.nix
@@ -0,0 +1,44 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "pycomm3";
+  version = "1.2.14";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "ottowayi";
+    repo = "pycomm3";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-KdvmISMH2HHU8N665QevVw7q9Qs5CwjXxcWpLoziY/Y=";
+  };
+
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "pycomm3" ];
+
+  disabledTestPaths = [
+    # Don't test examples as some have aditional requirements
+    "examples/"
+    # No physical PLC available
+    "tests/online/"
+  ];
+
+  meta = with lib; {
+    description = "Python Ethernet/IP library for communicating with Allen-Bradley PLCs";
+    homepage = "https://github.com/ottowayi/pycomm3";
+    changelog = "https://github.com/ottowayi/pycomm3/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pycompliance/default.nix b/pkgs/development/python-modules/pycompliance/default.nix
new file mode 100644
index 0000000000000..af1d976c0471a
--- /dev/null
+++ b/pkgs/development/python-modules/pycompliance/default.nix
@@ -0,0 +1,33 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  lib,
+  unittestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "pycompliance";
+  version = "0.0.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "rhmdnd";
+    repo = "pycompliance";
+    rev = version;
+    hash = "sha256-gCrKbKqRDlh9q9bETQ9NEPbf+40WKF1ltfBy6LYjlVw=";
+  };
+
+  build-system = [ hatchling ];
+
+  nativeCheckInputs = [ unittestCheckHook ];
+
+  pythonImportsCheck = [ "pycompliance" ];
+
+  meta = {
+    description = "Simply library to represent compliance benchmarks as tree structures";
+    homepage = "https://github.com/rhmdnd/pycompliance";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ tochiaha ];
+  };
+}
diff --git a/pkgs/development/python-modules/pycomposefile/default.nix b/pkgs/development/python-modules/pycomposefile/default.nix
index 2789fbb69d225..9ede189034507 100644
--- a/pkgs/development/python-modules/pycomposefile/default.nix
+++ b/pkgs/development/python-modules/pycomposefile/default.nix
@@ -1,36 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pyyaml
-, twine
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyyaml,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pycomposefile";
-  version = "0.0.30";
-  format = "setuptools";
+  version = "0.0.31";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    extension = "tar.gz";
-    hash = "sha256-GQopIO8F+G5iDz4NF2GTHCpXo4uqKHdHIzffacihylM=";
+    hash = "sha256-SYul81giQLUM1FdgfabKJyrbSu4xdoaWblcE87ZbBwg=";
   };
 
-  nativeBuildInput = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ pyyaml ];
 
-  propagatedBuildInputs = [
-    pyyaml
-    twine
-  ];
+  # Tests are broken
+  doCheck = false;
 
-  doCheck = false; # tests are broken
+  pythonImportsCheck = [ "pycomposefile" ];
 
   meta = with lib; {
     description = "Python library for structured deserialization of Docker Compose files";
     homepage = "https://github.com/smurawski/pycomposefile";
+    changelog = "https://github.com/smurawski/pycomposefile/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ mdarocha ];
   };
diff --git a/pkgs/development/python-modules/pycontracts/default.nix b/pkgs/development/python-modules/pycontracts/default.nix
deleted file mode 100644
index bc17546643d52..0000000000000
--- a/pkgs/development/python-modules/pycontracts/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi
-, nose, pyparsing, decorator, six, future }:
-
-buildPythonPackage rec {
-  pname = "pycontracts";
-  version = "1.8.14";
-
-  src = fetchPypi {
-    pname = "PyContracts";
-    inherit version;
-    sha256 = "03q5m595ysjrc9h57m7prrca6b9l4yrzvdijnzxnhd61p7jzbh49";
-  };
-
-  buildInputs = [ nose ];
-  propagatedBuildInputs = [ pyparsing decorator six future ];
-
-  meta = with lib; {
-    description = "Allows to declare constraints on function parameters and return values";
-    homepage = "https://pypi.python.org/pypi/PyContracts";
-    license = licenses.lgpl2;
-  };
-}
diff --git a/pkgs/development/python-modules/pycontrol4/default.nix b/pkgs/development/python-modules/pycontrol4/default.nix
index e45c448bba0fe..4276c1dde7489 100644
--- a/pkgs/development/python-modules/pycontrol4/default.nix
+++ b/pkgs/development/python-modules/pycontrol4/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, aiohttp
-, xmltodict
-, python-socketio
-, websocket-client
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  aiohttp,
+  xmltodict,
+  python-socketio-v4,
+  websocket-client,
 }:
 
 buildPythonPackage rec {
   pname = "pycontrol4";
-  version = "1.1.2";
+  version = "1.2.1";
 
   disabled = pythonOlder "3.6";
 
@@ -21,22 +22,15 @@ buildPythonPackage rec {
     owner = "lawtancool";
     repo = "pyControl4";
     rev = "refs/tags/v${version}";
-    hash = "sha256-oKKc9s3/fO7cFMjOeKtpvEwmfglxI2lxlN3EIva7zR8=";
+    hash = "sha256-0ZuztqHbrd+kMDGv3xyUYoTF/Ho+oHkycjSrKz8JABM=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "python-socketio>=4,<5" "python-socketio>=4"
-  '';
+  build-system = [ setuptools ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
-
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     xmltodict
-    python-socketio
+    python-socketio-v4
     websocket-client
   ];
 
@@ -51,6 +45,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
+    changelog = "https://github.com/lawtancool/pyControl4/releases/tag/v${version}";
     description = "Python 3 asyncio package for interacting with Control4 systems";
     homepage = "https://github.com/lawtancool/pyControl4";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/pycookiecheat/default.nix b/pkgs/development/python-modules/pycookiecheat/default.nix
index 4a539f5ee191c..97b7d7d48c8d1 100644
--- a/pkgs/development/python-modules/pycookiecheat/default.nix
+++ b/pkgs/development/python-modules/pycookiecheat/default.nix
@@ -1,29 +1,29 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, keyring
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, playwright
-, setuptools
-, setuptools-scm
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  keyring,
+  pytestCheckHook,
+  pythonOlder,
+  playwright,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "pycookiecheat";
-  version = "0.6.0";
-  format = "pyproject";
+  version = "0.7.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "n8henrie";
     repo = "pycookiecheat";
     rev = "refs/tags/v${version}";
-    hash = "sha256-mSc5FqMM8BICVEdSdsIny9Bnk6qCRekPk4RkBusDoVA=";
+    hash = "sha256-x568e4M7fz93hq0y06Grz9GlrjGV38GxWd+PhNiAyBY=";
   };
 
   pythonRelaxDeps = [
@@ -31,13 +31,13 @@ buildPythonPackage rec {
     "keyring"
   ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+
+  dependencies = [
     cryptography
     keyring
   ];
@@ -47,9 +47,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pycookiecheat"
-  ];
+  pythonImportsCheck = [ "pycookiecheat" ];
 
   preCheck = ''
     export HOME=$(mktemp -d)
@@ -57,21 +55,23 @@ buildPythonPackage rec {
 
   disabledTests = [
     # Tests want to use playwright executable
-    "test_no_cookies"
     "test_fake_cookie"
     "test_firefox_cookies"
-    "test_load_firefox_cookie_db"
-    "test_firefox_no_cookies"
     "test_firefox_get_default_profile"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_slack_config"
-  ];
+    "test_firefox_no_cookies"
+    "test_load_firefox_cookie_db"
+    "test_no_cookies"
+    "test_warns_for_string_browser"
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ "test_slack_config" ];
 
   meta = with lib; {
     description = "Borrow cookies from your browser's authenticated session for use in Python scripts";
     homepage = "https://github.com/n8henrie/pycookiecheat";
     changelog = "https://github.com/n8henrie/pycookiecheat/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ fab ];
+    maintainers = with maintainers; [
+      fab
+      n8henrie
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pycoolmasternet-async/default.nix b/pkgs/development/python-modules/pycoolmasternet-async/default.nix
index d8aa5760d5d95..cfed7b75d4500 100644
--- a/pkgs/development/python-modules/pycoolmasternet-async/default.nix
+++ b/pkgs/development/python-modules/pycoolmasternet-async/default.nix
@@ -1,29 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pycoolmasternet-async";
-  version = "0.1.6";
-  format = "setuptools";
+  version = "0.2.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "OnFreund";
     repo = "pycoolmasternet-async";
-    rev = "v${version}";
-    hash = "sha256-7RYKZWs8SCXCBgjbiTLSRUPujeraxiOE6MHENPmhimg=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-MfWWy4C/G2w0Zb4C6iYbcfKciFtWctZ63K8lWaHuSnQ=";
   };
 
+  build-system = [ setuptools ];
+
   # no tests implemented
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pycoolmasternet_async"
-  ];
+  pythonImportsCheck = [ "pycoolmasternet_async" ];
 
   meta = with lib; {
     description = "Python library to control CoolMasterNet HVAC bridges over asyncio";
diff --git a/pkgs/development/python-modules/pycosat/default.nix b/pkgs/development/python-modules/pycosat/default.nix
index 536f98cb27337..4b633d197db14 100644
--- a/pkgs/development/python-modules/pycosat/default.nix
+++ b/pkgs/development/python-modules/pycosat/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pycotap/default.nix b/pkgs/development/python-modules/pycotap/default.nix
index 3f1007317abf7..7b730f20f0d4b 100644
--- a/pkgs/development/python-modules/pycotap/default.nix
+++ b/pkgs/development/python-modules/pycotap/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "pycotap";
diff --git a/pkgs/development/python-modules/pycountry-convert/default.nix b/pkgs/development/python-modules/pycountry-convert/default.nix
new file mode 100644
index 0000000000000..7dda05c909ad9
--- /dev/null
+++ b/pkgs/development/python-modules/pycountry-convert/default.nix
@@ -0,0 +1,51 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pycountry,
+  repoze-lru,
+}:
+
+buildPythonPackage rec {
+  pname = "pycountry-convert";
+  version = "0.7.2";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-CV0xD3Rr8qXvcTs6gu6iiicmIoYiN2Wx576KXE+n6bk=";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace-fail "pytest-runner" ""
+  '';
+
+  build-system = [ setuptools ];
+
+  pythonRemoveDeps = [
+    "pprintpp"
+    "pytest"
+    "pytest-cov"
+    "repoze-lru"
+    "pytest-mock"
+  ];
+
+  propagatedBuildInputs = [
+    pycountry
+    repoze-lru
+  ];
+
+  pythonImportsCheck = [ "pycountry_convert" ];
+
+  # upstream has no tests
+  doCheck = false;
+
+  meta = {
+    description = "Python conversion functions between ISO country codes, countries, and continents";
+    homepage = "https://github.com/jefftune/pycountry-convert";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/pycountry/default.nix b/pkgs/development/python-modules/pycountry/default.nix
index 75287c6cbf6b2..2f5d52d9dacba 100644
--- a/pkgs/development/python-modules/pycountry/default.nix
+++ b/pkgs/development/python-modules/pycountry/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, fetchpatch2
-, poetry-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pycountry";
-  version = "23.12.11";
+  version = "24.6.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,33 +18,19 @@ buildPythonPackage rec {
     owner = "pycountry";
     repo = "pycountry";
     rev = "refs/tags/${version}";
-    hash = "sha256-B6kphZZZgK0YuPSmkiQNbEqEfqOQb+WZGnO2UeEqQN4=";
+    hash = "sha256-4YVPh6OGWguqO9Ortv+vAejxx7WLs4u0SVLv8JlKSWM=";
   };
 
-  patches = [
-    (fetchpatch2 {
-      name = "fix-usage-of-importlib_metadata.patch";
-      url = "https://github.com/pycountry/pycountry/commit/824d2535833d061c04a1f1b6b964f42bb53bced2.patch";
-      excludes = [ "HISTORY.txt" "poetry.lock" "pyproject.toml" ];
-      hash = "sha256-U4fbZP++d6YfTJkVG3k2rBC8nOF9NflM6+ONlwBNu+g=";
-    })
-  ];
-
   postPatch = ''
-    sed -i "/addopts/d" pytest.ini
+    sed -i "/addopts/d" pyproject.toml
+    sed -i "/pytest-cov/d" pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pycountry"
-  ];
+  pythonImportsCheck = [ "pycountry" ];
 
   meta = {
     homepage = "https://github.com/pycountry/pycountry";
diff --git a/pkgs/development/python-modules/pycparser/default.nix b/pkgs/development/python-modules/pycparser/default.nix
index fa0622df9ff91..67bbfa1c3d97d 100644
--- a/pkgs/development/python-modules/pycparser/default.nix
+++ b/pkgs/development/python-modules/pycparser/default.nix
@@ -1,18 +1,28 @@
-{ lib, buildPythonPackage, fetchPypi, unittestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  unittestCheckHook,
+  pythonOlder,
+}:
 
 buildPythonPackage rec {
   pname = "pycparser";
-  version = "2.21";
+  version = "2.22";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206";
+    hash = "sha256-SRyL6cBA9TkPW/RKWwd1K9B/Vu35kjgbBccBQ57sEPY=";
   };
 
   nativeCheckInputs = [ unittestCheckHook ];
+  disabled = pythonOlder "3.8";
 
-  unittestFlagsArray = [ "-s" "tests" ];
+  unittestFlagsArray = [
+    "-s"
+    "tests"
+  ];
 
   meta = with lib; {
     description = "C parser in Python";
diff --git a/pkgs/development/python-modules/pycrc/default.nix b/pkgs/development/python-modules/pycrc/default.nix
index 71404dd4d5ad1..146f0bf2600e6 100644
--- a/pkgs/development/python-modules/pycrc/default.nix
+++ b/pkgs/development/python-modules/pycrc/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "pycrc";
diff --git a/pkgs/development/python-modules/pycrdt-websocket/default.nix b/pkgs/development/python-modules/pycrdt-websocket/default.nix
index 74e34811279f8..3d7d3d45a19eb 100644
--- a/pkgs/development/python-modules/pycrdt-websocket/default.nix
+++ b/pkgs/development/python-modules/pycrdt-websocket/default.nix
@@ -1,21 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, hatchling
-, aiosqlite
-, anyio
-, channels
-, pycrdt
-, pytest-asyncio
-, pytestCheckHook
-, uvicorn
-, websockets
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  hatchling,
+
+  # dependencies
+  anyio,
+  pycrdt,
+  sqlite-anyio,
+
+  # optional-dependencies
+  channels,
+
+  # tests
+  httpx-ws,
+  hypercorn,
+  pytest-asyncio,
+  pytestCheckHook,
+  trio,
+  uvicorn,
+  websockets,
 }:
 
 buildPythonPackage rec {
   pname = "pycrdt-websocket";
-  version = "0.12.7";
+  version = "0.14.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,32 +36,29 @@ buildPythonPackage rec {
     owner = "jupyter-server";
     repo = "pycrdt-websocket";
     rev = "refs/tags/v${version}";
-    hash = "sha256-e4VEEudsdtfC2ek8wODxxoFuaOwl4GKS1cX3QeshuD8=";
+    hash = "sha256-YsAeEUFxCwu7KA2d83J/rb1IlZTQZZecHJAewh+TqWs=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
-    aiosqlite
+  dependencies = [
     anyio
     pycrdt
+    sqlite-anyio
   ];
 
-  passthru.optional-dependencies = {
-    django = [
-      channels
-    ];
+  optional-dependencies = {
+    django = [ channels ];
   };
 
-  pythonImportsCheck = [
-    "pycrdt_websocket"
-  ];
+  pythonImportsCheck = [ "pycrdt_websocket" ];
 
   nativeCheckInputs = [
+    httpx-ws
+    hypercorn
     pytest-asyncio
     pytestCheckHook
+    trio
     uvicorn
     websockets
   ];
@@ -61,11 +70,11 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  meta = with lib; {
+  meta = {
     description = "WebSocket Connector for pycrdt";
     homepage = "https://github.com/jupyter-server/pycrdt-websocket";
     changelog = "https://github.com/jupyter-server/pycrdt-websocket/blob/${src.rev}/CHANGELOG.md";
-    license = licenses.mit;
-    maintainers = teams.jupyter.members;
+    license = lib.licenses.mit;
+    maintainers = lib.teams.jupyter.members;
   };
 }
diff --git a/pkgs/development/python-modules/pycrdt/Cargo.lock b/pkgs/development/python-modules/pycrdt/Cargo.lock
index ac98cbf0d09ff..a2182a11dc06d 100644
--- a/pkgs/development/python-modules/pycrdt/Cargo.lock
+++ b/pkgs/development/python-modules/pycrdt/Cargo.lock
@@ -4,33 +4,49 @@ version = 3
 
 [[package]]
 name = "arc-swap"
-version = "1.7.0"
+version = "1.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b3d0060af21e8d11a926981cc00c6c1541aa91dd64b9f881985c3da1094425f"
+checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
 
 [[package]]
-name = "atomic_refcell"
-version = "0.1.13"
+name = "async-lock"
+version = "3.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41e67cd8309bbd06cd603a9e693a784ac2e5d1e955f11286e355089fcab3047c"
+checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
+dependencies = [
+ "event-listener",
+ "event-listener-strategy",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-trait"
+version = "0.1.82"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
 
 [[package]]
 name = "autocfg"
-version = "1.1.0"
+version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
 
 [[package]]
 name = "bitflags"
-version = "1.3.2"
+version = "2.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
 
 [[package]]
 name = "bumpalo"
-version = "3.15.4"
+version = "3.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa"
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
 
 [[package]]
 name = "cfg-if"
@@ -39,19 +55,69 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[package]]
+name = "concurrent-queue"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
+
+[[package]]
+name = "dashmap"
+version = "6.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "804c8821570c3f8b70230c2ba75ffa5c0f9a4189b9a432b6656c536712acae28"
+dependencies = [
+ "cfg-if",
+ "crossbeam-utils",
+ "hashbrown",
+ "lock_api",
+ "once_cell",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "event-listener"
+version = "5.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1"
+dependencies = [
+ "event-listener",
+ "pin-project-lite",
+]
+
+[[package]]
 name = "fastrand"
-version = "2.0.1"
+version = "2.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
+checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
 dependencies = [
  "getrandom",
 ]
 
 [[package]]
 name = "getrandom"
-version = "0.2.12"
+version = "0.2.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
 dependencies = [
  "cfg-if",
  "js-sys",
@@ -61,43 +127,49 @@ dependencies = [
 ]
 
 [[package]]
+name = "hashbrown"
+version = "0.14.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+
+[[package]]
 name = "heck"
-version = "0.4.1"
+version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
 
 [[package]]
 name = "indoc"
-version = "2.0.4"
+version = "2.0.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8"
+checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
 
 [[package]]
 name = "itoa"
-version = "1.0.10"
+version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
 
 [[package]]
 name = "js-sys"
-version = "0.3.69"
+version = "0.3.70"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
+checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a"
 dependencies = [
  "wasm-bindgen",
 ]
 
 [[package]]
 name = "libc"
-version = "0.2.153"
+version = "0.2.158"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
 
 [[package]]
 name = "lock_api"
-version = "0.4.11"
+version = "0.4.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
 dependencies = [
  "autocfg",
  "scopeguard",
@@ -105,15 +177,21 @@ dependencies = [
 
 [[package]]
 name = "log"
-version = "0.4.21"
+version = "0.4.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
 
 [[package]]
 name = "memoffset"
-version = "0.9.0"
+version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
 dependencies = [
  "autocfg",
 ]
@@ -125,20 +203,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
 
 [[package]]
-name = "parking_lot"
-version = "0.12.1"
+name = "parking"
+version = "2.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
-dependencies = [
- "lock_api",
- "parking_lot_core",
-]
+checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae"
 
 [[package]]
 name = "parking_lot_core"
-version = "0.9.9"
+version = "0.9.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
 dependencies = [
  "cfg-if",
  "libc",
@@ -148,23 +222,29 @@ dependencies = [
 ]
 
 [[package]]
+name = "pin-project-lite"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
+
+[[package]]
 name = "portable-atomic"
-version = "1.6.0"
+version = "1.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
+checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265"
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.79"
+version = "1.0.86"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
 name = "pycrdt"
-version = "0.8.13"
+version = "0.9.11"
 dependencies = [
  "pyo3",
  "yrs",
@@ -172,15 +252,15 @@ dependencies = [
 
 [[package]]
 name = "pyo3"
-version = "0.20.3"
+version = "0.22.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53bdbb96d49157e65d45cc287af5f32ffadd5f4761438b527b055fb0d4bb8233"
+checksum = "831e8e819a138c36e212f3af3fd9eeffed6bf1510a805af35b0edee5ffa59433"
 dependencies = [
  "cfg-if",
  "indoc",
  "libc",
  "memoffset",
- "parking_lot",
+ "once_cell",
  "portable-atomic",
  "pyo3-build-config",
  "pyo3-ffi",
@@ -190,9 +270,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-build-config"
-version = "0.20.3"
+version = "0.22.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "deaa5745de3f5231ce10517a1f5dd97d53e5a2fd77aa6b5842292085831d48d7"
+checksum = "1e8730e591b14492a8945cdff32f089250b05f5accecf74aeddf9e8272ce1fa8"
 dependencies = [
  "once_cell",
  "target-lexicon",
@@ -200,9 +280,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-ffi"
-version = "0.20.3"
+version = "0.22.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62b42531d03e08d4ef1f6e85a2ed422eb678b8cd62b762e53891c05faf0d4afa"
+checksum = "5e97e919d2df92eb88ca80a037969f44e5e70356559654962cbb3316d00300c6"
 dependencies = [
  "libc",
  "pyo3-build-config",
@@ -210,9 +290,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-macros"
-version = "0.20.3"
+version = "0.22.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7305c720fa01b8055ec95e484a6eca7a83c841267f0dd5280f0c8b8551d2c158"
+checksum = "eb57983022ad41f9e683a599f2fd13c3664d7063a3ac5714cae4b7bee7d3f206"
 dependencies = [
  "proc-macro2",
  "pyo3-macros-backend",
@@ -222,9 +302,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-macros-backend"
-version = "0.20.3"
+version = "0.22.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c7e9b68bb9c3149c5b0cade5d07f953d6d125eb4337723c4ccdb665f1f96185"
+checksum = "ec480c0c51ddec81019531705acac51bcdbeae563557c982aa8263bb96880372"
 dependencies = [
  "heck",
  "proc-macro2",
@@ -235,27 +315,27 @@ dependencies = [
 
 [[package]]
 name = "quote"
-version = "1.0.35"
+version = "1.0.37"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
 dependencies = [
  "proc-macro2",
 ]
 
 [[package]]
 name = "redox_syscall"
-version = "0.4.1"
+version = "0.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4"
 dependencies = [
  "bitflags",
 ]
 
 [[package]]
 name = "ryu"
-version = "1.0.17"
+version = "1.0.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
 
 [[package]]
 name = "scopeguard"
@@ -265,18 +345,18 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 
 [[package]]
 name = "serde"
-version = "1.0.197"
+version = "1.0.209"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
+checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.197"
+version = "1.0.209"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
+checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -285,11 +365,12 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.114"
+version = "1.0.127"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
+checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad"
 dependencies = [
  "itoa",
+ "memchr",
  "ryu",
  "serde",
 ]
@@ -305,15 +386,15 @@ dependencies = [
 
 [[package]]
 name = "smallvec"
-version = "1.13.1"
+version = "1.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
 
 [[package]]
 name = "syn"
-version = "2.0.53"
+version = "2.0.77"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032"
+checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -322,24 +403,24 @@ dependencies = [
 
 [[package]]
 name = "target-lexicon"
-version = "0.12.14"
+version = "0.12.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
+checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
 
 [[package]]
 name = "thiserror"
-version = "1.0.58"
+version = "1.0.63"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
+checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.58"
+version = "1.0.63"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
+checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -366,19 +447,20 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 
 [[package]]
 name = "wasm-bindgen"
-version = "0.2.92"
+version = "0.2.93"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
+checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5"
 dependencies = [
  "cfg-if",
+ "once_cell",
  "wasm-bindgen-macro",
 ]
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.92"
+version = "0.2.93"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
+checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b"
 dependencies = [
  "bumpalo",
  "log",
@@ -391,9 +473,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.92"
+version = "0.2.93"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
+checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf"
 dependencies = [
  "quote",
  "wasm-bindgen-macro-support",
@@ -401,9 +483,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.92"
+version = "0.2.93"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
+checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -414,19 +496,20 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.92"
+version = "0.2.93"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
+checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
 
 [[package]]
 name = "windows-targets"
-version = "0.48.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
 dependencies = [
  "windows_aarch64_gnullvm",
  "windows_aarch64_msvc",
  "windows_i686_gnu",
+ "windows_i686_gnullvm",
  "windows_i686_msvc",
  "windows_x86_64_gnu",
  "windows_x86_64_gnullvm",
@@ -435,54 +518,62 @@ dependencies = [
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.48.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.48.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.48.5"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.48.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.48.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
-version = "0.48.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.48.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
 
 [[package]]
 name = "yrs"
-version = "0.18.0"
+version = "0.21.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ad19cd99f9c036345d66331db64c7b2c823ca1ac2c30c5ca26eed149c6b4672"
+checksum = "7a6eac182a01ef4cbf4edb5e71e2c560a34144ae82680aab66a62c172b7ae2a2"
 dependencies = [
  "arc-swap",
- "atomic_refcell",
+ "async-lock",
+ "async-trait",
+ "dashmap",
  "fastrand",
  "serde",
  "serde_json",
diff --git a/pkgs/development/python-modules/pycrdt/default.nix b/pkgs/development/python-modules/pycrdt/default.nix
index c77c360516a05..c09682e636123 100644
--- a/pkgs/development/python-modules/pycrdt/default.nix
+++ b/pkgs/development/python-modules/pycrdt/default.nix
@@ -1,63 +1,64 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, libiconv
-, cargo
-, rustPlatform
-, rustc
-, pydantic
-, pytestCheckHook
-, y-py
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  libiconv,
+  rustPlatform,
+  anyio,
+  objsize,
+  pydantic,
+  pytestCheckHook,
+  trio,
+  y-py,
+  nix-update-script,
 }:
 
 buildPythonPackage rec {
   pname = "pycrdt";
-  version = "0.8.13";
+  version = "0.9.11";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "jupyter-server";
     repo = "pycrdt";
     rev = "refs/tags/v${version}";
-    hash = "sha256-puYJ0mR1JpwD823P6JrXmNjFvqZUPqEj2T4Wk81oBMU=";
+    hash = "sha256-62r3AO+x9du6UjIdtqDPmwJ30/YmQxbPcCXgOaGNtL0=";
   };
 
   postPatch = ''
     cp ${./Cargo.lock} Cargo.lock
   '';
 
-  cargoDeps = rustPlatform.importCargoLock {
-    lockFile = ./Cargo.lock;
-  };
+  cargoDeps = rustPlatform.importCargoLock { lockFile = ./Cargo.lock; };
 
   nativeBuildInputs = [
-    cargo
     rustPlatform.cargoSetupHook
     rustPlatform.maturinBuildHook
-    rustc
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [
-    libiconv
-  ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
-  pythonImportsCheck = [ "pycrdt" ];
+  dependencies = [ anyio ];
 
-  # requires pydantic>=2.5
-  doCheck = false;
+  pythonImportsCheck = [ "pycrdt" ];
 
   nativeCheckInputs = [
+    anyio
+    objsize
+    pydantic
     pytestCheckHook
+    trio
     y-py
-    pydantic
   ];
 
-  meta = with lib; {
+  passthru.updateScript = nix-update-script { extraArgs = [ "--generate-lockfile" ]; };
+
+  meta = {
     description = "CRDTs based on Yrs";
     homepage = "https://github.com/jupyter-server/pycrdt";
-    changelog = "https://github.com/jupyter-server/pycrdt/releases/tag/${src.rev}";
-    license = licenses.mit;
-    maintainers = teams.jupyter.members;
+    changelog = "https://github.com/jupyter-server/pycrdt/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
+    license = lib.licenses.mit;
+    maintainers = lib.teams.jupyter.members;
   };
 }
diff --git a/pkgs/development/python-modules/pycritty/default.nix b/pkgs/development/python-modules/pycritty/default.nix
index 1044d2e72e77c..770d7c3ca29a2 100644
--- a/pkgs/development/python-modules/pycritty/default.nix
+++ b/pkgs/development/python-modules/pycritty/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder, pyyaml }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pyyaml,
+}:
 
 buildPythonPackage rec {
   pname = "pycritty";
@@ -25,7 +31,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "pycritty" ];
 
   meta = with lib; {
-    description = "A CLI tool for changing your alacritty configuration on the fly";
+    description = "CLI tool for changing your alacritty configuration on the fly";
     mainProgram = "pycritty";
     homepage = "https://github.com/antoniosarosi/pycritty";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pycron/default.nix b/pkgs/development/python-modules/pycron/default.nix
index 2e607b50dd745..a5bd2ee074678 100644
--- a/pkgs/development/python-modules/pycron/default.nix
+++ b/pkgs/development/python-modules/pycron/default.nix
@@ -1,24 +1,43 @@
-{ lib, buildPythonPackage, fetchFromGitHub, udatetime, pytz, pendulum, nose
-, delorean, coveralls, arrow
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  arrow,
+  delorean,
+  pendulum,
+  pytestCheckHook,
+  pytz,
+  udatetime,
 }:
 
 buildPythonPackage rec {
   pname = "pycron";
   version = "3.0.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "kipe";
-    repo = pname;
+    repo = "pycron";
     rev = version;
-    sha256 = "12hkqrdfg3jbqkmck8i00ssyaw1c4hhvdhjxkmh2gm9pd99z5bpv";
+    hash = "sha256-+67yU2o31SdgnV3CtiEkLHDltQYgosnqxEuO51rGE4o=";
   };
 
-  nativeCheckInputs = [ arrow coveralls delorean nose pendulum pytz udatetime ];
+  build-system = [ setuptools ];
 
-  checkPhase = ''
-    nosetests
-  '';
+  nativeCheckInputs = [
+    arrow
+    delorean
+    pendulum
+    pytestCheckHook
+    pytz
+    udatetime
+  ];
+
+  disabledTestPaths = [
+    # depens on nose
+    "tests/test_has_been.py"
+  ];
 
   pythonImportsCheck = [ "pycron" ];
 
diff --git a/pkgs/development/python-modules/pycrypto/default.nix b/pkgs/development/python-modules/pycrypto/default.nix
index 72b91834eed7e..72000acad17ef 100644
--- a/pkgs/development/python-modules/pycrypto/default.nix
+++ b/pkgs/development/python-modules/pycrypto/default.nix
@@ -9,7 +9,7 @@ buildPythonPackage rec {
   format = "setuptools";
 
   # Cannot build wheel otherwise (zip 1980 issue)
-  SOURCE_DATE_EPOCH=315532800;
+  SOURCE_DATE_EPOCH = 315532800;
 
   # We need to have a dist-info folder, so let's create one with setuptools
   unpackPhase = ''
diff --git a/pkgs/development/python-modules/pycryptodome/default.nix b/pkgs/development/python-modules/pycryptodome/default.nix
index 358348d865d85..e9d1254ede328 100644
--- a/pkgs/development/python-modules/pycryptodome/default.nix
+++ b/pkgs/development/python-modules/pycryptodome/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, callPackage
-, fetchFromGitHub
-, gmp
+{
+  lib,
+  buildPythonPackage,
+  callPackage,
+  fetchFromGitHub,
+  gmp,
 }:
 
 let
@@ -25,19 +26,18 @@ buildPythonPackage rec {
       --replace 'load_lib("gmp"' 'load_lib("${gmp}/lib/libgmp.so.10"'
   '';
 
-  nativeCheckInputs = [
-    test-vectors
-  ];
+  nativeCheckInputs = [ test-vectors ];
 
-  pythonImportsCheck = [
-    "Crypto"
-  ];
+  pythonImportsCheck = [ "Crypto" ];
 
   meta = with lib; {
     description = "Self-contained cryptographic library";
     homepage = "https://github.com/Legrandin/pycryptodome";
     changelog = "https://github.com/Legrandin/pycryptodome/blob/v${version}/Changelog.rst";
-    license = with licenses; [ bsd2 /* and */ asl20 ];
+    license = with licenses; [
+      bsd2 # and
+      asl20
+    ];
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/pycryptodome/vectors.nix b/pkgs/development/python-modules/pycryptodome/vectors.nix
index 3b6e2844df4c3..349738ee0b2aa 100644
--- a/pkgs/development/python-modules/pycryptodome/vectors.nix
+++ b/pkgs/development/python-modules/pycryptodome/vectors.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -15,21 +16,20 @@ buildPythonPackage rec {
     extension = "zip";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pycryptodome_test_vectors"
-  ];
+  pythonImportsCheck = [ "pycryptodome_test_vectors" ];
 
   meta = with lib; {
     description = "Test vectors for PyCryptodome cryptographic library";
     homepage = "https://www.pycryptodome.org/";
-    license = with licenses; [ bsd2 /* and */ asl20 ];
+    license = with licenses; [
+      bsd2 # and
+      asl20
+    ];
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/pycryptodomex/default.nix b/pkgs/development/python-modules/pycryptodomex/default.nix
index 9d476ea4728c1..b2ced090667df 100644
--- a/pkgs/development/python-modules/pycryptodomex/default.nix
+++ b/pkgs/development/python-modules/pycryptodomex/default.nix
@@ -7,7 +7,5 @@
     touch .separate_namespace
   '';
 
-  pythonImportsCheck = [
-    "Cryptodome"
-  ];
+  pythonImportsCheck = [ "Cryptodome" ];
 }))
diff --git a/pkgs/development/python-modules/pycsdr/default.nix b/pkgs/development/python-modules/pycsdr/default.nix
index 08f03019dd785..53a8f25d78d8b 100644
--- a/pkgs/development/python-modules/pycsdr/default.nix
+++ b/pkgs/development/python-modules/pycsdr/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchFromGitHub, csdr }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  csdr,
+}:
 
 buildPythonPackage rec {
   pname = "pycsdr";
diff --git a/pkgs/development/python-modules/pyct/default.nix b/pkgs/development/python-modules/pyct/default.nix
index 4897a7e549172..5509173bd985f 100644
--- a/pkgs/development/python-modules/pyct/default.nix
+++ b/pkgs/development/python-modules/pyct/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, param
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  param,
+  pytestCheckHook,
+  pythonAtLeast,
+  pyyaml,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -13,7 +14,7 @@ buildPythonPackage rec {
   version = "0.5.0";
   format = "setuptools";
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonAtLeast "3.12";
 
   src = fetchPypi {
     inherit pname version;
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyct"
-  ];
+  pythonImportsCheck = [ "pyct" ];
 
   meta = with lib; {
     description = "ClI for Python common tasks for users";
@@ -40,6 +37,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/pyviz/pyct";
     changelog = "https://github.com/pyviz-dev/pyct/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyctr/default.nix b/pkgs/development/python-modules/pyctr/default.nix
index cf225369b3958..1267085c86e86 100644
--- a/pkgs/development/python-modules/pyctr/default.nix
+++ b/pkgs/development/python-modules/pyctr/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pycryptodomex
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pycryptodomex,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-fiDJWcypFabnUoS313f56ypDuDrLASHrkk0Em8bymmw=";
   };
 
-  propagatedBuildInputs = [
-    pycryptodomex
-  ];
+  propagatedBuildInputs = [ pycryptodomex ];
 
-  pythonImportsCheck = [
-    "pyctr"
-  ];
+  pythonImportsCheck = [ "pyctr" ];
 
   meta = with lib; {
     description = "Python library to interact with Nintendo 3DS files";
diff --git a/pkgs/development/python-modules/pycuda/compyte.nix b/pkgs/development/python-modules/pycuda/compyte.nix
index cfa685c1ac9ce..b25844738acae 100644
--- a/pkgs/development/python-modules/pycuda/compyte.nix
+++ b/pkgs/development/python-modules/pycuda/compyte.nix
@@ -1,6 +1,4 @@
-{ mkDerivation
-, fetchFromGitHub
-}:
+{ mkDerivation, fetchFromGitHub }:
 
 mkDerivation {
   pname = "compyte";
@@ -17,5 +15,4 @@ mkDerivation {
     mkdir -p $out
     cp -r * $out
   '';
-
 }
diff --git a/pkgs/development/python-modules/pycuda/default.nix b/pkgs/development/python-modules/pycuda/default.nix
index 129bd6269cd45..04ea92be7fb21 100644
--- a/pkgs/development/python-modules/pycuda/default.nix
+++ b/pkgs/development/python-modules/pycuda/default.nix
@@ -1,35 +1,34 @@
-{ buildPythonPackage
-, addOpenGLRunpath
-, fetchPypi
-, fetchFromGitHub
-, mako
-, boost
-, numpy
-, pytools
-, pytest
-, decorator
-, appdirs
-, six
-, cudaPackages
-, python
-, mkDerivation
-, lib
+{
+  buildPythonPackage,
+  addDriverRunpath,
+  fetchPypi,
+  fetchFromGitHub,
+  mako,
+  boost,
+  numpy,
+  pytools,
+  pytest,
+  decorator,
+  appdirs,
+  six,
+  cudaPackages,
+  python,
+  mkDerivation,
+  lib,
 }:
 let
-  compyte = import ./compyte.nix {
-    inherit mkDerivation fetchFromGitHub;
-  };
+  compyte = import ./compyte.nix { inherit mkDerivation fetchFromGitHub; };
 
   inherit (cudaPackages) cudatoolkit;
 in
 buildPythonPackage rec {
   pname = "pycuda";
-  version = "2024.1";
+  version = "2024.1.2";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-1Q0j/2NxSCz/fUuVPvQKuByd8DjsthRIT5/VNHMnMn4=";
+    hash = "sha256-0RC3J8vqhZ2ktj6Rtvoen8MsW63gLYn/RJl1mW6cz6s=";
   };
 
   preConfigure = with lib.versions; ''
@@ -47,7 +46,7 @@ buildPythonPackage rec {
   postFixup = ''
     find $out/lib -type f \( -name '*.so' -or -name '*.so.*' \) | while read lib; do
       echo "setting opengl runpath for $lib..."
-      addOpenGLRunpath "$lib"
+      addDriverRunpath "$lib"
     done
   '';
 
@@ -58,9 +57,7 @@ buildPythonPackage rec {
     py.test
   '';
 
-  nativeBuildInputs = [
-    addOpenGLRunpath
-  ];
+  nativeBuildInputs = [ addDriverRunpath ];
 
   propagatedBuildInputs = [
     numpy
@@ -77,9 +74,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/inducer/pycuda/";
-    description = "CUDA integration for Python.";
+    description = "CUDA integration for Python";
     license = licenses.mit;
     maintainers = with maintainers; [ artuuge ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pycups/default.nix b/pkgs/development/python-modules/pycups/default.nix
index 9b4a1a2d0ee7f..8a89193a64ebf 100644
--- a/pkgs/development/python-modules/pycups/default.nix
+++ b/pkgs/development/python-modules/pycups/default.nix
@@ -1,16 +1,23 @@
-{ stdenv, lib, buildPythonPackage, fetchPypi, cups, libiconv }:
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cups,
+  libiconv,
+}:
 
 buildPythonPackage rec {
   pname = "pycups";
-  version = "2.0.1";
+  version = "2.0.4";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-V0NM5fYlSOsSlJyoIX8Gb07rIaXWq4sTRx3ONQ44DJA=";
+    hash = "sha256-hD44XB2/aUmWyoTvAqfzDCg3YDVYj1++rNa64AXPfI0=";
   };
 
-  buildInputs = [ cups ] ++ lib.optional stdenv.isDarwin libiconv;
+  buildInputs = [ cups ] ++ lib.optional stdenv.hostPlatform.isDarwin libiconv;
 
   # Wants to connect to CUPS
   doCheck = false;
diff --git a/pkgs/development/python-modules/pycurl/default.nix b/pkgs/development/python-modules/pycurl/default.nix
index 3e966057bb243..5f9334ebb1eeb 100644
--- a/pkgs/development/python-modules/pycurl/default.nix
+++ b/pkgs/development/python-modules/pycurl/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, isPyPy
-, fetchPypi
-, pythonOlder
-, curl
-, openssl
-, bottle
-, pytestCheckHook
-, flaky
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  isPyPy,
+  fetchPypi,
+  pythonOlder,
+  curl,
+  openssl,
+  bottle,
+  pytestCheckHook,
+  flaky,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     openssl
   ];
 
-  nativeBuildInputs = [
-    curl
-  ];
+  nativeBuildInputs = [ curl ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -53,38 +52,43 @@ buildPythonPackage rec {
     export HOME=$TMPDIR
   '';
 
-  disabledTests = [
-    # tests that require network access
-    "test_keyfunction"
-    "test_keyfunction_bogus_return"
-    # OSError: tests/fake-curl/libcurl/with_openssl.so: cannot open shared object file: No such file or directory
-    "test_libcurl_ssl_openssl"
-    # OSError: tests/fake-curl/libcurl/with_nss.so: cannot open shared object file: No such file or directory
-    "test_libcurl_ssl_nss"
-    # OSError: tests/fake-curl/libcurl/with_gnutls.so: cannot open shared object file: No such file or directory
-    "test_libcurl_ssl_gnutls"
-    # AssertionError: assert 'crypto' in ['curl']
-    "test_ssl_in_static_libs"
-    # tests that require curl with http3Support
-    "test_http_version_3"
-    # https://github.com/pycurl/pycurl/issues/819
-    "test_multi_socket_select"
-    # https://github.com/pycurl/pycurl/issues/729
-    "test_easy_pause_unpause"
-    "test_multi_socket_action"
-    # https://github.com/pycurl/pycurl/issues/822
-    "test_request_with_verifypeer"
-    # https://github.com/pycurl/pycurl/issues/836
-    "test_proxy_tlsauth"
-  ] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
-    # Fatal Python error: Segmentation fault
-    "cadata_test"
-  ];
+  disabledTests =
+    [
+      # tests that require network access
+      "test_keyfunction"
+      "test_keyfunction_bogus_return"
+      # OSError: tests/fake-curl/libcurl/with_openssl.so: cannot open shared object file: No such file or directory
+      "test_libcurl_ssl_openssl"
+      # OSError: tests/fake-curl/libcurl/with_nss.so: cannot open shared object file: No such file or directory
+      "test_libcurl_ssl_nss"
+      # OSError: tests/fake-curl/libcurl/with_gnutls.so: cannot open shared object file: No such file or directory
+      "test_libcurl_ssl_gnutls"
+      # AssertionError: assert 'crypto' in ['curl']
+      "test_ssl_in_static_libs"
+      # tests that require curl with http3Support
+      "test_http_version_3"
+      # https://github.com/pycurl/pycurl/issues/819
+      "test_multi_socket_select"
+      # https://github.com/pycurl/pycurl/issues/729
+      "test_easy_pause_unpause"
+      "test_multi_socket_action"
+      # https://github.com/pycurl/pycurl/issues/822
+      "test_request_with_verifypeer"
+      # https://github.com/pycurl/pycurl/issues/836
+      "test_proxy_tlsauth"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
+      # Fatal Python error: Segmentation fault
+      "cadata_test"
+    ];
 
   meta = with lib; {
     homepage = "http://pycurl.io/";
     description = "Python Interface To The cURL library";
-    license = with licenses; [ lgpl2Only mit ];
-    maintainers = with maintainers; [ ];
+    license = with licenses; [
+      lgpl2Only
+      mit
+    ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pycxx/default.nix b/pkgs/development/python-modules/pycxx/default.nix
index 5cc1056f83271..a85a556c0bc79 100644
--- a/pkgs/development/python-modules/pycxx/default.nix
+++ b/pkgs/development/python-modules/pycxx/default.nix
@@ -1,16 +1,27 @@
-{ lib, buildPythonPackage, fetchurl, python }:
+{
+  lib,
+  buildPythonPackage,
+  fetchurl,
+  setuptools,
+  python,
+}:
 
 buildPythonPackage rec {
   pname = "pycxx";
-  version = "7.1.4";
-  format = "setuptools";
+  version = "7.1.8";
+  pyproject = true;
 
   src = fetchurl {
     url = "mirror://sourceforge/cxx/CXX/PyCXX%20V${version}/pycxx-${version}.tar.gz";
-    sha256 = "MUMU+/qsm92WENYFxfjQsSuR8/nE/asYG8HgIbaAaz0=";
+    hash = "sha256-S5Hh4RQcI/vVA532NcS7bnVjIWhUj1a4POF3GTwMmMY=";
   };
 
-  outputs = [ "out" "dev" ];
+  outputs = [
+    "out"
+    "dev"
+  ];
+
+  build-system = [ setuptools ];
 
   postInstall = ''
     mkdir -p $dev/include
@@ -19,10 +30,10 @@ buildPythonPackage rec {
     sed -i "s|Src|$dev/src|" $dev/src/cxxextensions.c $dev/src/cxxsupport.cxx
   '';
 
-  meta = with lib; {
-    description = "set of classes to help create extensions of Python in the C++ language";
+  meta = {
+    description = "Set of classes to help create extensions of Python in the C++ language";
     homepage = "https://sourceforge.net/projects/cxx/";
-    maintainers = with maintainers; [ freezeboy ];
-    platforms = platforms.all;
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ freezeboy ];
   };
 }
diff --git a/pkgs/development/python-modules/pycycling/default.nix b/pkgs/development/python-modules/pycycling/default.nix
new file mode 100644
index 0000000000000..6f277cffc8ff4
--- /dev/null
+++ b/pkgs/development/python-modules/pycycling/default.nix
@@ -0,0 +1,33 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  bleak,
+}:
+
+buildPythonPackage rec {
+  pname = "pycycling";
+  version = "0.4.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-yi3ZcyhhOtHp46MK0R15/dic+b1oYjy4tFVRH3ssbE8=";
+  };
+
+  build-system = [ setuptools ];
+
+  propagatedBuildInputs = [
+    bleak
+  ];
+
+  pythonImportsCheck = [ pname ];
+
+  meta = with lib; {
+    description = "Package for interacting with Bluetooth Low Energy (BLE) compatible bike trainers, power meters, radars and heart rate monitors";
+    homepage = "https://github.com/zacharyedwardbull/pycycling";
+    changelog = "https://github.com/zacharyedwardbull/pycycling/releases/tag/${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ viraptor ];
+  };
+}
diff --git a/pkgs/development/python-modules/pycyphal/default.nix b/pkgs/development/python-modules/pycyphal/default.nix
index 9067a3f06ad53..698a9e20595a7 100644
--- a/pkgs/development/python-modules/pycyphal/default.nix
+++ b/pkgs/development/python-modules/pycyphal/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, can
-, cobs
-, libpcap
-, nunavut
-, numpy
-, pyserial
-, pytestCheckHook
-, pytest-asyncio
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  python-can,
+  cobs,
+  libpcap,
+  nunavut,
+  numpy,
+  pyserial,
+  pytestCheckHook,
+  pytest-asyncio,
 }:
 
 buildPythonPackage rec {
@@ -34,24 +34,18 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    transport-can-pythoncan = [
-      can
-    ] ++ can.optional-dependencies.serial;
+    transport-can-pythoncan = [ python-can ] ++ python-can.optional-dependencies.serial;
     transport-serial = [
       cobs
       pyserial
     ];
-    transport-udp = [
-      libpcap
-    ];
+    transport-udp = [ libpcap ];
   };
 
   nativeCheckInputs = [
     pytestCheckHook
     pytest-asyncio
-  ] ++ builtins.foldl' (x: y: x ++ y) [ ]
-    (builtins.attrValues passthru.optional-dependencies)
-  ;
+  ] ++ builtins.foldl' (x: y: x ++ y) [ ] (builtins.attrValues passthru.optional-dependencies);
 
   preCheck = ''
     export HOME=$TMPDIR
@@ -82,12 +76,10 @@ buildPythonPackage rec {
     "tests/transport"
   ];
 
-  pythonImportsCheck = [
-    "pycyphal"
-  ];
+  pythonImportsCheck = [ "pycyphal" ];
 
   meta = with lib; {
-    description = "A full-featured implementation of the Cyphal protocol stack in Python";
+    description = "Full-featured implementation of the Cyphal protocol stack in Python";
     longDescription = ''
       Cyphal is an open technology for real-time intravehicular distributed computing and communication based on modern networking standards (Ethernet, CAN FD, etc.).
     '';
diff --git a/pkgs/development/python-modules/pydaikin/default.nix b/pkgs/development/python-modules/pydaikin/default.nix
index d669efbffbebb..140a13f6678dc 100644
--- a/pkgs/development/python-modules/pydaikin/default.nix
+++ b/pkgs/development/python-modules/pydaikin/default.nix
@@ -1,33 +1,39 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromBitbucket
-, freezegun
-, netifaces
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, urllib3
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  netifaces,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  urllib3,
+  setuptools,
+  tenacity,
 }:
 
 buildPythonPackage rec {
   pname = "pydaikin";
-  version = "2.11.1";
-  format = "setuptools";
+  version = "2.13.7";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.11";
 
-  src = fetchFromBitbucket {
-    owner = "mustang51";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-IBrd4PH8EzVVVFQtJdJ8bTMLEzfh7MYMe79yuCrhmww=";
+  src = fetchFromGitHub {
+    owner = "fredrike";
+    repo = "pydaikin";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-pLr878LbflRlHzDjarwDLQFHbRZjRvlAZEqP1tfVBNA=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     aiohttp
     netifaces
     urllib3
+    tenacity
   ];
 
   doCheck = false; # tests fail and upstream does not seem to run them either
@@ -38,15 +44,14 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pydaikin"
-  ];
+  pythonImportsCheck = [ "pydaikin" ];
 
   meta = with lib; {
     description = "Python Daikin HVAC appliances interface";
-    mainProgram = "pydaikin";
-    homepage = "https://bitbucket.org/mustang51/pydaikin";
+    homepage = "https://github.com/fredrike/pydaikin";
+    changelog = "https://github.com/fredrike/pydaikin/releases/tag/v${version}";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "pydaikin";
   };
 }
diff --git a/pkgs/development/python-modules/pydal/default.nix b/pkgs/development/python-modules/pydal/default.nix
index 541d7124f11a7..82ceccfc66994 100644
--- a/pkgs/development/python-modules/pydal/default.nix
+++ b/pkgs/development/python-modules/pydal/default.nix
@@ -1,30 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pydal";
-  version = "20231114.3";
+  version = "20240713.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-xC0W/Knju205mu+yQ0wOcIYu4Tx1Q3hS9CGSBDLuX7E=";
+    hash = "sha256-KW44LUGgCE+KB3tE9ecYqOansjFN6F4A7TRCoKwOsRs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pytestFlagsArray = [
     "tests/*.py"
@@ -40,12 +37,12 @@ buildPythonPackage rec {
     "--deselect=tests/validators.py::TestValidators::test_IS_IN_DB"
   ];
 
-  pythonImportsCheck = ["pydal"];
+  pythonImportsCheck = [ "pydal" ];
 
   meta = with lib; {
     description = "Python Database Abstraction Layer";
     homepage = "https://github.com/web2py/pydal";
-    license = with licenses; [ bsd3 ] ;
+    license = with licenses; [ bsd3 ];
     maintainers = with maintainers; [ wamserma ];
   };
 }
diff --git a/pkgs/development/python-modules/pydanfossair/default.nix b/pkgs/development/python-modules/pydanfossair/default.nix
index 226e5a1aa4ef8..dd8a8d9c71afd 100644
--- a/pkgs/development/python-modules/pydanfossair/default.nix
+++ b/pkgs/development/python-modules/pydanfossair/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pydantic-compat/default.nix b/pkgs/development/python-modules/pydantic-compat/default.nix
index 33ed206578ed7..a9a9e781269bb 100644
--- a/pkgs/development/python-modules/pydantic-compat/default.nix
+++ b/pkgs/development/python-modules/pydantic-compat/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, git
-, hatch-vcs
-, hatchling
-, importlib-metadata
-, pydantic
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  git,
+  hatch-vcs,
+  hatchling,
+  importlib-metadata,
+  pydantic,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -36,13 +37,9 @@ buildPythonPackage rec {
     pydantic
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pydantic_compat"
-  ];
+  pythonImportsCheck = [ "pydantic_compat" ];
 
   meta = with lib; {
     description = "Compatibility layer for pydantic v1/v2";
diff --git a/pkgs/development/python-modules/pydantic-core/default.nix b/pkgs/development/python-modules/pydantic-core/default.nix
index 6242c205ea70b..77d3395258780 100644
--- a/pkgs/development/python-modules/pydantic-core/default.nix
+++ b/pkgs/development/python-modules/pydantic-core/default.nix
@@ -1,40 +1,39 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, cargo
-, rustPlatform
-, rustc
-, libiconv
-, typing-extensions
-, pytestCheckHook
-, hypothesis
-, pytest-timeout
-, pytest-mock
-, dirty-equals
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cargo,
+  rustPlatform,
+  rustc,
+  libiconv,
+  typing-extensions,
+  pytestCheckHook,
+  hypothesis,
+  pytest-timeout,
+  pytest-mock,
+  dirty-equals,
 }:
 
 let
   pydantic-core = buildPythonPackage rec {
     pname = "pydantic-core";
-    version = "2.16.3";
+    version = "2.20.1";
     pyproject = true;
 
     src = fetchFromGitHub {
       owner = "pydantic";
       repo = "pydantic-core";
       rev = "refs/tags/v${version}";
-      hash = "sha256-RXytujvx/23Z24TWpvnHdjJ4/dXqjs5uiavUmukaD9A=";
+      hash = "sha256-iFyCFkFzvTL6es3L96pyq/s6SS7h1mn+bS0SPcsxXxA=";
     };
 
-    patches = [
-      ./01-remove-benchmark-flags.patch
-    ];
+    patches = [ ./01-remove-benchmark-flags.patch ];
 
     cargoDeps = rustPlatform.fetchCargoTarball {
       inherit src;
       name = "${pname}-${version}";
-      hash = "sha256-wj9u6s/3E3EWfQydkLrwHbJBvm8DwcGCoQQpSw1+q7U=";
+      hash = "sha256-4v4g9/8ZsQUqkwA29/S/BXn2Ea4eSOnMhEbhDvsGuQU=";
     };
 
     nativeBuildInputs = [
@@ -48,13 +47,9 @@ let
       typing-extensions
     ];
 
-    buildInputs = lib.optionals stdenv.isDarwin [
-      libiconv
-    ];
+    buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
-    dependencies = [
-      typing-extensions
-    ];
+    dependencies = [ typing-extensions ];
 
     pythonImportsCheck = [ "pydantic_core" ];
 
@@ -88,4 +83,5 @@ let
       maintainers = with maintainers; [ blaggacao ];
     };
   };
-in pydantic-core
+in
+pydantic-core
diff --git a/pkgs/development/python-modules/pydantic-extra-types/default.nix b/pkgs/development/python-modules/pydantic-extra-types/default.nix
index 7595ac0b1d573..b9da2b299ecf2 100644
--- a/pkgs/development/python-modules/pydantic-extra-types/default.nix
+++ b/pkgs/development/python-modules/pydantic-extra-types/default.nix
@@ -1,55 +1,56 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, pydantic
-, pendulum
-, phonenumbers
-, pycountry
-, python-ulid
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  pydantic,
+  semver,
+  pendulum,
+  phonenumbers,
+  pycountry,
+  python-ulid,
+  pytz,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pydantic-extra-types";
-  version = "2.6.0";
+  version = "2.9.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pydantic";
     repo = "pydantic-extra-types";
     rev = "refs/tags/v${version}";
-    hash = "sha256-XLVhoZ3+TfVYEuk/5fORaGpCBaB5NcuskWhHgt+llS0=";
+    hash = "sha256-PgytBSue3disJifnpTl1DGNMZkp93cJEIDm8wgKMHFo=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pydantic
+    semver
   ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     all = [
       pendulum
       phonenumbers
       pycountry
       python-ulid
+      pytz
     ];
   };
 
   pythonImportsCheck = [ "pydantic_extra_types" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.all;
+  nativeCheckInputs = [ pytestCheckHook ] ++ optional-dependencies.all;
 
   meta = with lib; {
     changelog = "https://github.com/pydantic/pydantic-extra-types/blob/${src.rev}/HISTORY.md";
     description = "Extra Pydantic types";
     homepage = "https://github.com/pydantic/pydantic-extra-types";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pydantic-scim/default.nix b/pkgs/development/python-modules/pydantic-scim/default.nix
index b8ac4c729a69a..a8ba4155bf97e 100644
--- a/pkgs/development/python-modules/pydantic-scim/default.nix
+++ b/pkgs/development/python-modules/pydantic-scim/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pydantic
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pydantic,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -28,13 +29,9 @@ buildPythonPackage rec {
       --replace 'version=get_version(),' 'version="${version}",'
   '';
 
-  propagatedBuildInputs = [
-    pydantic
-  ] ++ pydantic.optional-dependencies.email;
+  propagatedBuildInputs = [ pydantic ] ++ pydantic.optional-dependencies.email;
 
-  pythonImportsCheck = [
-    "pydanticscim"
-  ];
+  pythonImportsCheck = [ "pydanticscim" ];
 
   # no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/pydantic-settings/default.nix b/pkgs/development/python-modules/pydantic-settings/default.nix
index 250c1b8756301..86dd243ac6ae9 100644
--- a/pkgs/development/python-modules/pydantic-settings/default.nix
+++ b/pkgs/development/python-modules/pydantic-settings/default.nix
@@ -1,69 +1,69 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, hatchling
-, pydantic
-, python-dotenv
-, pytestCheckHook
-, pytest-examples
-, pytest-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  hatchling,
+  pydantic,
+  python-dotenv,
+  pytestCheckHook,
+  pytest-examples,
+  pytest-mock,
 }:
 
-let self = buildPythonPackage rec {
-  pname = "pydantic-settings";
-  version = "2.2.1";
-  pyproject = true;
+let
+  self = buildPythonPackage rec {
+    pname = "pydantic-settings";
+    version = "2.3.4";
+    pyproject = true;
 
-  disabled = pythonOlder "3.8";
+    disabled = pythonOlder "3.8";
 
-  src = fetchFromGitHub {
-    owner = "pydantic";
-    repo = "pydantic-settings";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-4o8LlIFVizoxb484lVT67e24jhtUl49otr1lX/2zZ4M=";
-  };
+    src = fetchFromGitHub {
+      owner = "pydantic";
+      repo = "pydantic-settings";
+      rev = "refs/tags/v${version}";
+      hash = "sha256-tLF7LvsXryhbThaNl6koM0bGM8EOaA+aH2fGqzR8GKE=";
+    };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+    build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
-    pydantic
-    python-dotenv
-  ];
+    dependencies = [
+      pydantic
+      python-dotenv
+    ];
 
-  pythonImportsCheck = [ "pydantic_settings" ];
+    pythonImportsCheck = [ "pydantic_settings" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-    pytest-examples
-    pytest-mock
-  ];
+    nativeCheckInputs = [
+      pytestCheckHook
+      pytest-examples
+      pytest-mock
+    ];
 
-  disabledTests = [
-    # expected to fail
-    "test_docs_examples[docs/index.md:212-246]"
-  ];
+    disabledTests = [
+      # expected to fail
+      "test_docs_examples[docs/index.md:212-246]"
+    ];
 
-  preCheck = ''
-    export HOME=$TMPDIR
-  '';
+    preCheck = ''
+      export HOME=$TMPDIR
+    '';
 
-  # ruff is a dependency of pytest-examples which is required to run the tests.
-  # We do not want all of the downstream packages that depend on pydantic-settings to also depend on ruff.
-  doCheck = false;
-  passthru.tests = {
-    pytest = self.overridePythonAttrs {
-      doCheck = true;
+    # ruff is a dependency of pytest-examples which is required to run the tests.
+    # We do not want all of the downstream packages that depend on pydantic-settings to also depend on ruff.
+    doCheck = false;
+    passthru.tests = {
+      pytest = self.overridePythonAttrs { doCheck = true; };
     };
-  };
 
-  meta = with lib; {
-    description = "Settings management using pydantic";
-    homepage = "https://github.com/pydantic/pydantic-settings";
-    license = licenses.mit;
-    broken = lib.versionOlder pydantic.version "2.0.0";
-    maintainers = with maintainers; [ ];
+    meta = with lib; {
+      description = "Settings management using pydantic";
+      homepage = "https://github.com/pydantic/pydantic-settings";
+      license = licenses.mit;
+      broken = lib.versionOlder pydantic.version "2.0.0";
+      maintainers = [ ];
+    };
   };
-}; in self
+in
+self
diff --git a/pkgs/development/python-modules/pydantic-yaml-0/default.nix b/pkgs/development/python-modules/pydantic-yaml/default.nix
index 74c44b255283a..50f14837476a4 100644
--- a/pkgs/development/python-modules/pydantic-yaml-0/default.nix
+++ b/pkgs/development/python-modules/pydantic-yaml/default.nix
@@ -1,22 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, deprecated
-, importlib-metadata
-, pydantic_1
-, ruamel-yaml
-, semver
-, types-deprecated
-, setuptools
-, setuptools-scm
-, pytest-mock
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  importlib-metadata,
+  pydantic,
+  ruamel-yaml,
+  typing-extensions,
+  setuptools-scm,
+  pytest-mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
-  pname = "pydantic_yaml-0";
-  # nixpkgs-update: no auto update
-  version = "0.11.2";
+  pname = "pydantic-yaml";
+  version = "1.3.0";
 
   pyproject = true;
 
@@ -24,7 +21,7 @@ buildPythonPackage rec {
     owner = "NowanIlfideme";
     repo = "pydantic-yaml";
     rev = "refs/tags/v${version}";
-    hash = "sha256-AeUyVav0/k4Fz69Qizn4hcJKoi/CDR9eUan/nJhWsDY=";
+    hash = "sha256-Kv1nLR91iwShmCgduXA07+a+2EP1nnvaC7fBAn/ufEM=";
   };
 
   postPatch = ''
@@ -32,23 +29,16 @@ buildPythonPackage rec {
       --replace-fail "0.0.0" "${version}"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    deprecated
+  dependencies = [
     importlib-metadata
-    pydantic_1
+    pydantic
     ruamel-yaml
-    semver
-    types-deprecated
+    typing-extensions
   ];
 
-  pythonImportsCheck = [
-    "pydantic_yaml"
-  ];
+  pythonImportsCheck = [ "pydantic_yaml" ];
 
   nativeCheckInputs = [
     pytest-mock
@@ -56,11 +46,10 @@ buildPythonPackage rec {
   ];
 
   meta = {
-    description = "A small helper library that adds some YAML capabilities to pydantic";
+    description = "Small helper library that adds some YAML capabilities to pydantic";
     homepage = "https://github.com/NowanIlfideme/pydantic-yaml";
     changelog = "https://github.com/NowanIlfideme/pydantic-yaml/releases/tag/v${version}";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ jnsgruk ];
   };
 }
-
diff --git a/pkgs/development/python-modules/pydantic/1.nix b/pkgs/development/python-modules/pydantic/1.nix
index 6078acc356ce2..2b268d2bf543f 100644
--- a/pkgs/development/python-modules/pydantic/1.nix
+++ b/pkgs/development/python-modules/pydantic/1.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, cython_0
-, email-validator
-, fetchFromGitHub
-, pytest-mock
-, pytest7CheckHook
-, python-dotenv
-, pythonAtLeast
-, pythonOlder
-, setuptools
-, typing-extensions
-, libxcrypt
+{
+  lib,
+  buildPythonPackage,
+  cython_0,
+  email-validator,
+  fetchFromGitHub,
+  pytest-mock,
+  pytest7CheckHook,
+  python-dotenv,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
+  libxcrypt,
 }:
 
 buildPythonPackage rec {
   pname = "pydantic";
-  version = "1.10.14";
+  version = "1.10.16";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -24,7 +25,7 @@ buildPythonPackage rec {
     owner = "pydantic";
     repo = "pydantic";
     rev = "refs/tags/v${version}";
-    hash = "sha256-tcaHSPZggVwyzCgDmwOgcGqUmUrJOmkdSNudJTFQ3bc=";
+    hash = "sha256-dn/ZsxbkyK2sJxpo6IsoMBRjq1STdu+xuqHXoNG+Kzk=";
   };
 
   nativeBuildInputs = [
@@ -32,21 +33,13 @@ buildPythonPackage rec {
     cython_0
   ];
 
-  buildInputs = lib.optionals (pythonOlder "3.9") [
-    libxcrypt
-  ];
+  buildInputs = lib.optionals (pythonOlder "3.9") [ libxcrypt ];
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ typing-extensions ];
 
   passthru.optional-dependencies = {
-    dotenv = [
-      python-dotenv
-    ];
-    email = [
-      email-validator
-    ];
+    dotenv = [ python-dotenv ];
+    email = [ email-validator ];
   };
 
   nativeCheckInputs = [
@@ -56,7 +49,8 @@ buildPythonPackage rec {
 
   pytestFlagsArray = [
     # https://github.com/pydantic/pydantic/issues/4817
-    "-W" "ignore::pytest.PytestReturnNotNoneWarning"
+    "-W"
+    "ignore::pytest.PytestReturnNotNoneWarning"
   ];
 
   preCheck = ''
diff --git a/pkgs/development/python-modules/pydantic/default.nix b/pkgs/development/python-modules/pydantic/default.nix
index 59ec82ce829b1..5ee65602794be 100644
--- a/pkgs/development/python-modules/pydantic/default.nix
+++ b/pkgs/development/python-modules/pydantic/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pythonOlder
-
-# build-system
-, hatchling
-, hatch-fancy-pypi-readme
-
-# native dependencies
-, libxcrypt
-
-# dependencies
-, annotated-types
-, pydantic-core
-, typing-extensions
-
-# tests
-, cloudpickle
-, email-validator
-, dirty-equals
-, faker
-, pytestCheckHook
-, pytest-mock
-, eval-type-backport
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  hatchling,
+  hatch-fancy-pypi-readme,
+
+  # native dependencies
+  libxcrypt,
+
+  # dependencies
+  annotated-types,
+  pydantic-core,
+  typing-extensions,
+
+  # tests
+  cloudpickle,
+  email-validator,
+  dirty-equals,
+  pytestCheckHook,
+  pytest-mock,
+  eval-type-backport,
+  rich,
 }:
 
 buildPythonPackage rec {
   pname = "pydantic";
-  version = "2.6.3";
+  version = "2.8.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -37,21 +37,10 @@ buildPythonPackage rec {
     owner = "pydantic";
     repo = "pydantic";
     rev = "refs/tags/v${version}";
-    hash = "sha256-neTdG/IcXopCmevzFY5/XDlhPHmOb6dhyAnzaobmeG8=";
+    hash = "sha256-9Tbm5Y1wSPa3lTdI8y95csYHua7nKUIYAfxSn+3J5zI=";
   };
 
-  patches = [
-    (fetchpatch {
-      # https://github.com/pydantic/pydantic/pull/8678
-      name = "fix-pytest8-compatibility.patch";
-      url = "https://github.com/pydantic/pydantic/commit/825a6920e177a3b65836c13c7f37d82b810ce482.patch";
-      hash = "sha256-Dap5DtDzHw0jS/QUo5CRI9sLDJ719GRyC4ZNDWEdzus=";
-    })
-  ];
-
-  buildInputs = lib.optionals (pythonOlder "3.9") [
-    libxcrypt
-  ];
+  buildInputs = lib.optionals (pythonOlder "3.9") [ libxcrypt ];
 
   build-system = [
     hatch-fancy-pypi-readme
@@ -64,30 +53,28 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  passthru.optional-dependencies = {
-    email = [
-      email-validator
-    ];
+  optional-dependencies = {
+    email = [ email-validator ];
   };
 
   nativeCheckInputs =
     [
       cloudpickle
       dirty-equals
-      faker
       pytest-mock
       pytestCheckHook
+      rich
     ]
-    ++ lib.flatten (lib.attrValues passthru.optional-dependencies)
+    ++ lib.flatten (lib.attrValues optional-dependencies)
     ++ lib.optionals (pythonOlder "3.10") [ eval-type-backport ];
 
   preCheck = ''
     export HOME=$(mktemp -d)
     substituteInPlace pyproject.toml \
-      --replace "'--benchmark-columns', 'min,mean,stddev,outliers,rounds,iterations'," "" \
-      --replace "'--benchmark-group-by', 'group'," "" \
-      --replace "'--benchmark-warmup', 'on'," "" \
-      --replace "'--benchmark-disable'," ""
+      --replace-fail "'--benchmark-columns', 'min,mean,stddev,outliers,rounds,iterations'," "" \
+      --replace-fail "'--benchmark-group-by', 'group'," "" \
+      --replace-fail "'--benchmark-warmup', 'on'," "" \
+      --replace-fail "'--benchmark-disable'," ""
   '';
 
   pytestFlagsArray = [
diff --git a/pkgs/development/python-modules/pydata-google-auth/default.nix b/pkgs/development/python-modules/pydata-google-auth/default.nix
index f24f2e78470bb..727ac93f47b61 100644
--- a/pkgs/development/python-modules/pydata-google-auth/default.nix
+++ b/pkgs/development/python-modules/pydata-google-auth/default.nix
@@ -1,28 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, google-auth
-, google-auth-oauthlib
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  google-auth-oauthlib,
+  google-auth,
+  pythonOlder,
+  setuptools,
+  versioneer,
 }:
 
 buildPythonPackage rec {
   pname = "pydata-google-auth";
   version = "1.8.2";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
-    repo = pname;
+    repo = "pydata-google-auth";
     owner = "pydata";
     rev = "refs/tags/${version}";
     hash = "sha256-Wo+tXbzOuz/cW8GuWoSxLA/Lr2S9NMdePa8tIV39mbY=";
   };
 
-  nativeBuildInputs = [
+  postPatch = ''
+    # Remove vendorized versioneer.py
+    rm versioneer.py
+  '';
+
+  build-system = [
     setuptools
+    versioneer
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-auth
     google-auth-oauthlib
   ];
@@ -30,13 +41,12 @@ buildPythonPackage rec {
   # tests require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pydata_google_auth"
-  ];
+  pythonImportsCheck = [ "pydata_google_auth" ];
 
   meta = with lib; {
     description = "Helpers for authenticating to Google APIs";
     homepage = "https://github.com/pydata/pydata-google-auth";
+    changelog = "https://github.com/pydata/pydata-google-auth/releases/tag/${version}";
     license = licenses.bsd3;
     maintainers = with maintainers; [ cpcloud ];
   };
diff --git a/pkgs/development/python-modules/pydata-sphinx-theme/default.nix b/pkgs/development/python-modules/pydata-sphinx-theme/default.nix
index 38509d5ba2edd..1cd06c0d2be61 100644
--- a/pkgs/development/python-modules/pydata-sphinx-theme/default.nix
+++ b/pkgs/development/python-modules/pydata-sphinx-theme/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, sphinx
-, accessible-pygments
-, beautifulsoup4
-, docutils
-, packaging
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  sphinx,
+  accessible-pygments,
+  beautifulsoup4,
+  docutils,
+  packaging,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "pydata-sphinx-theme";
-  version = "0.15.2";
+  version = "0.15.4";
 
   format = "wheel";
 
@@ -23,7 +24,7 @@ buildPythonPackage rec {
     dist = "py3";
     python = "py3";
     pname = "pydata_sphinx_theme";
-    hash = "sha256-DF+h+pipsm2uWQZm/1dvJ+Jse6cI/udU7Lngc1ntRYg=";
+    hash = "sha256-ITatDpUA0JSflhZ+Y/PimGIAQK6o+cdGIZWe2l1M+OY=";
   };
 
   propagatedBuildInputs = [
@@ -35,15 +36,13 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  pythonImportsCheck = [
-    "pydata_sphinx_theme"
-  ];
+  pythonImportsCheck = [ "pydata_sphinx_theme" ];
 
   meta = with lib; {
     description = "Bootstrap-based Sphinx theme from the PyData community";
     homepage = "https://github.com/pydata/pydata-sphinx-theme";
     changelog = "https://github.com/pydata/pydata-sphinx-theme/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pydateinfer/default.nix b/pkgs/development/python-modules/pydateinfer/default.nix
index a2fb97236dfd4..777e78efc9b1f 100644
--- a/pkgs/development/python-modules/pydateinfer/default.nix
+++ b/pkgs/development/python-modules/pydateinfer/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, unittestCheckHook
-, pytz
-, pyyaml
-, argparse
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  unittestCheckHook,
+  pytz,
+  pyyaml,
+  argparse,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-0gy7wfT/uMTmpdIF2OPGVeUh+4yqJSI2Ebif0Lf/DLM=";
   };
 
-  propagatedBuildInputs = [
-    pytz
-  ];
+  propagatedBuildInputs = [ pytz ];
 
   preCheck = "cd dateinfer";
   nativeCheckInputs = [
diff --git a/pkgs/development/python-modules/pydbus/default.nix b/pkgs/development/python-modules/pydbus/default.nix
index fc8965fd3538e..780f01cec123c 100644
--- a/pkgs/development/python-modules/pydbus/default.nix
+++ b/pkgs/development/python-modules/pydbus/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pygobject3
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pygobject3,
 }:
 
 buildPythonPackage rec {
@@ -22,13 +23,9 @@ buildPythonPackage rec {
       --replace "getargspec" "getfullargspec"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pygobject3
-  ];
+  propagatedBuildInputs = [ pygobject3 ];
 
   pythonImportsCheck = [
     "pydbus"
@@ -41,6 +38,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/LEW21/pydbus";
     description = "Pythonic DBus library";
     license = lib.licenses.lgpl2Plus;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pydeck/default.nix b/pkgs/development/python-modules/pydeck/default.nix
index 6edd7a379b3ee..e0c77c5a2ce1c 100644
--- a/pkgs/development/python-modules/pydeck/default.nix
+++ b/pkgs/development/python-modules/pydeck/default.nix
@@ -1,29 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, ipykernel
-, ipywidgets
-, jinja2
-, jupyter
-, numpy
-, pandas
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, traitlets
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  ipykernel,
+  ipywidgets,
+  jinja2,
+  jupyter,
+  numpy,
+  pandas,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  traitlets,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "pydeck";
-  version = "0.8.0";
+  version = "0.9.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-B+3egz98/O9nSRJDURlap9zSRmPUkJ/XiY29C2+8Aew=";
+    hash = "sha256-90R1rmN5UdY/LuWDJnV/jU+c2fKkV89ClQcVAD4stgU=";
   };
 
   # upstream has an invalid pyproject.toml
diff --git a/pkgs/development/python-modules/pydeconz/default.nix b/pkgs/development/python-modules/pydeconz/default.nix
index f9de6f4ad8803..68e31e0002701 100644
--- a/pkgs/development/python-modules/pydeconz/default.nix
+++ b/pkgs/development/python-modules/pydeconz/default.nix
@@ -1,43 +1,42 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, orjson
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  orjson,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pydeconz";
-  version = "115";
+  version = "116";
   pyproject = true;
 
-  disabled = pythonOlder "3.11";
+  disabled = pythonOlder "3.12";
 
   src = fetchFromGitHub {
     owner = "Kane610";
     repo = "deconz";
     rev = "refs/tags/v${version}";
-    hash = "sha256-NjzONVSJ4GEaIeC5ytnTi8JpZY1yIq3LN8vbMy3n0vs=";
+    hash = "sha256-XtcAs+xKSTJcQN0mCj6ewkT7owvA7nlZ8PhWfL9NZh8=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "--cov=pydeconz --cov-report term-missing" "" \
-      --replace "setuptools==" "setuptools>=" \
-      --replace "wheel==" "wheel>="
+      --replace-fail "--cov=pydeconz --cov-report term-missing" "" \
+      --replace-fail "setuptools==" "setuptools>=" \
+      --replace-fail "wheel==" "wheel>="
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
-    wheel
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     orjson
   ];
@@ -48,16 +47,14 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pydeconz"
-  ];
+  pythonImportsCheck = [ "pydeconz" ];
 
   meta = with lib; {
     description = "Python library wrapping the Deconz REST API";
-    mainProgram = "pydeconz";
     homepage = "https://github.com/Kane610/deconz";
     changelog = "https://github.com/Kane610/deconz/releases/tag/v${version}";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "pydeconz";
   };
 }
diff --git a/pkgs/development/python-modules/pydelijn/default.nix b/pkgs/development/python-modules/pydelijn/default.nix
index 728160fe8d1fa..c64eef1c9a63d 100644
--- a/pkgs/development/python-modules/pydelijn/default.nix
+++ b/pkgs/development/python-modules/pydelijn/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pytz
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytz,
 }:
 
 buildPythonPackage rec {
@@ -16,7 +17,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-xyBq2h3ipUarkjCXq9GIbY7bhsf9729aQwHde3o5K6g=";
+    hash = "sha256-xyBq2h3ipUarkjCXq9GIbY7bhsf9729aQwHde3o5K6g=";
   };
 
   propagatedBuildInputs = [
@@ -37,9 +38,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pydelijn"
-  ];
+  pythonImportsCheck = [ "pydelijn" ];
 
   meta = with lib; {
     description = "Python package to retrieve realtime data of passages at stops of De Lijn";
diff --git a/pkgs/development/python-modules/pydenticon/default.nix b/pkgs/development/python-modules/pydenticon/default.nix
index d0a17a0357d63..91fd500cbaca5 100644
--- a/pkgs/development/python-modules/pydenticon/default.nix
+++ b/pkgs/development/python-modules/pydenticon/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pillow
-, mock
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pillow,
+  mock,
 }:
 
 buildPythonPackage rec {
@@ -15,12 +16,14 @@ buildPythonPackage rec {
     sha256 = "2ef363cdd6f4f0193ce62257486027e36884570f6140bbde51de72df321b77f1";
   };
 
-  propagatedBuildInputs = [ pillow mock ];
+  propagatedBuildInputs = [
+    pillow
+    mock
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/azaghal/pydenticon";
     description = "Library for generating identicons. Port of Sigil (https://github.com/cupcake/sigil) with enhancements";
     license = licenses.bsd0;
   };
-
 }
diff --git a/pkgs/development/python-modules/pydeps/default.nix b/pkgs/development/python-modules/pydeps/default.nix
index 0488e35a1be8c..23f9353ac9ca5 100644
--- a/pkgs/development/python-modules/pydeps/default.nix
+++ b/pkgs/development/python-modules/pydeps/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, graphviz
-, stdlib-list
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, setuptools
-, toml
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  graphviz,
+  stdlib-list,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  setuptools,
+  toml,
 }:
 
 buildPythonPackage rec {
@@ -24,13 +25,9 @@ buildPythonPackage rec {
     hash = "sha256-d6EeeNem+HfuipKF5ZOI48c11j0ozGrBP4XlqTx+fJ4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  buildInputs = [
-    graphviz
-  ];
+  buildInputs = [ graphviz ];
 
   propagatedBuildInputs = [
     graphviz
@@ -54,9 +51,7 @@ buildPythonPackage rec {
     "test_find_package_names"
   ];
 
-  pythonImportsCheck = [
-    "pydeps"
-  ];
+  pythonImportsCheck = [ "pydeps" ];
 
   meta = with lib; {
     description = "Python module dependency visualization";
diff --git a/pkgs/development/python-modules/pydes/default.nix b/pkgs/development/python-modules/pydes/default.nix
index 13820649912b5..e04090e686dbd 100644
--- a/pkgs/development/python-modules/pydes/default.nix
+++ b/pkgs/development/python-modules/pydes/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchFromGitHub, python }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+}:
 
 buildPythonPackage rec {
   pname = "pydes";
@@ -19,7 +24,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "pyDes" ];
 
   meta = with lib; {
-    description = "A pure python module which implements the DES and Triple-DES encryption algorithms";
+    description = "Pure python module which implements the DES and Triple-DES encryption algorithms";
     homepage = "https://github.com/twhiteman/pyDes";
     license = licenses.mit;
     maintainers = with maintainers; [ j0hax ];
diff --git a/pkgs/development/python-modules/pydevccu/default.nix b/pkgs/development/python-modules/pydevccu/default.nix
index 9dd93cd5fa625..b1af673ed6fd5 100644
--- a/pkgs/development/python-modules/pydevccu/default.nix
+++ b/pkgs/development/python-modules/pydevccu/default.nix
@@ -1,35 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pydevccu";
   version = "0.1.8";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "danielperna84";
-    repo = pname;
+    repo = "pydevccu";
     rev = "refs/tags/${version}";
     hash = "sha256-WguSTtWxkiDs5nK5eiaarfD0CBxzIxQR9fxjuW3wMGc=";
   };
 
+  build-system = [ setuptools ];
+
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pydevccu"
-  ];
+  pythonImportsCheck = [ "pydevccu" ];
 
-  meta = with lib; {
+  meta = {
     description = "HomeMatic CCU XML-RPC Server with fake devices";
     homepage = "https://github.com/danielperna84/pydevccu";
     changelog = "https://github.com/danielperna84/pydevccu/releases/tag/${version}";
-    license = with licenses; [ mit ];
-    maintainers = with maintainers; [ fab ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/pydevd/default.nix b/pkgs/development/python-modules/pydevd/default.nix
index f603e9accfd09..207e5e5c9edfd 100644
--- a/pkgs/development/python-modules/pydevd/default.nix
+++ b/pkgs/development/python-modules/pydevd/default.nix
@@ -1,15 +1,17 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, numpy
-, psutil
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, trio
-, untangle
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  numpy,
+  psutil,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  trio,
+  untangle,
 }:
 
 buildPythonPackage rec {
@@ -22,57 +24,60 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "fabioz";
     repo = "PyDev.Debugger";
-    rev = "pydev_debugger_${lib.replaceStrings ["."] ["_"] version}";
+    rev = "pydev_debugger_${lib.replaceStrings [ "." ] [ "_" ] version}";
     hash = "sha256-aylmLN7lVUza2lt2K48rJsx3XatXPgPjcmPZ05raLX0=";
   };
 
   __darwinAllowLocalNetworking = true;
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     numpy
     psutil
+    pytest-xdist
     pytestCheckHook
     trio
     untangle
   ];
 
-  disabledTests = [
-    # Require network connection
-    "test_completion_sockets_and_messages"
-    "test_path_translation"
-    "test_attach_to_pid_no_threads"
-    "test_attach_to_pid_halted"
-    "test_remote_debugger_threads"
-    "test_path_translation_and_source_reference"
-    "test_attach_to_pid"
-    "test_terminate"
-    "test_gui_event_loop_custom"
-    # AssertionError: assert '/usr/bin/' == '/usr/bin'
-    # https://github.com/fabioz/PyDev.Debugger/issues/227
-    "test_to_server_and_to_client"
-    # AssertionError pydevd_tracing.set_trace_to_threads(tracing_func) == 0
-    "test_step_next_step_in_multi_threads"
-    "test_tracing_basic"
-    "test_tracing_other_threads"
-    # subprocess.CalledProcessError
-    "test_find_main_thread_id"
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    "test_case_handled_and_unhandled_exception_generator"
-    "test_case_stop_async_iteration_exception"
-    "test_case_unhandled_exception_generator"
-    "test_function_breakpoints_async"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_multiprocessing_simple"
-    "test_evaluate_exception_trace"
-  ];
+  disabledTests =
+    [
+      # Require network connection
+      "test_completion_sockets_and_messages"
+      "test_path_translation"
+      "test_attach_to_pid_no_threads"
+      "test_attach_to_pid_halted"
+      "test_remote_debugger_threads"
+      "test_path_translation_and_source_reference"
+      "test_attach_to_pid"
+      "test_terminate"
+      "test_gui_event_loop_custom"
+      # AssertionError: assert '/usr/bin/' == '/usr/bin'
+      # https://github.com/fabioz/PyDev.Debugger/issues/227
+      "test_to_server_and_to_client"
+      # AssertionError pydevd_tracing.set_trace_to_threads(tracing_func) == 0
+      "test_step_next_step_in_multi_threads"
+      "test_tracing_basic"
+      "test_tracing_other_threads"
+      # subprocess.CalledProcessError
+      "test_find_main_thread_id"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      "test_case_handled_and_unhandled_exception_generator"
+      "test_case_stop_async_iteration_exception"
+      "test_case_unhandled_exception_generator"
+      "test_function_breakpoints_async"
+      # raise segmentation fault
+      # https://github.com/fabioz/PyDev.Debugger/issues/269
+      "test_evaluate_expression"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      "test_multiprocessing_simple"
+      "test_evaluate_exception_trace"
+    ];
 
-  pythonImportsCheck = [
-    "pydevd"
-  ];
+  pythonImportsCheck = [ "pydevd" ];
 
   meta = with lib; {
     description = "PyDev.Debugger (used in PyDev, PyCharm and VSCode Python)";
diff --git a/pkgs/development/python-modules/pydevtool/default.nix b/pkgs/development/python-modules/pydevtool/default.nix
index c9a0d67fcebf5..de29d377379b9 100644
--- a/pkgs/development/python-modules/pydevtool/default.nix
+++ b/pkgs/development/python-modules/pydevtool/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchPypi
-, setuptools
-, buildPythonPackage
-, doit
+{
+  lib,
+  fetchPypi,
+  setuptools,
+  buildPythonPackage,
+  doit,
 }:
 
 buildPythonPackage rec {
@@ -15,17 +16,11 @@ buildPythonPackage rec {
     hash = "sha256-JeO6Tz0zzKwz7iuXdZlYSNSemzGLehRkd/tdUveG/Io=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    doit
-  ];
+  propagatedBuildInputs = [ doit ];
 
-  pythonImportsCheck = [
-    "pydevtool"
-  ];
+  pythonImportsCheck = [ "pydevtool" ];
 
   meta = with lib; {
     homepage = "https://github.com/pydoit/pydevtool";
@@ -33,5 +28,4 @@ buildPythonPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ doronbehar ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pydexcom/default.nix b/pkgs/development/python-modules/pydexcom/default.nix
index bd639205c1116..996fce70df664 100644
--- a/pkgs/development/python-modules/pydexcom/default.nix
+++ b/pkgs/development/python-modules/pydexcom/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, requests
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "pydexcom";
-  version = "0.3.2";
+  version = "0.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,7 +19,7 @@ buildPythonPackage rec {
     owner = "gagebenne";
     repo = "pydexcom";
     rev = "refs/tags/${version}";
-    hash = "sha256-46+Ml73F6EUbMwRJB93FD+No/g65RJwnCnFzH4Pb5ek=";
+    hash = "sha256-gMUdVdO2Yy41Nl+mn9dEegb6/IRBwoBviPhuz3CMfS8=";
   };
 
   nativeBuildInputs = [
@@ -26,16 +27,12 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Tests are interacting with the Dexcom API
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pydexcom"
-  ];
+  pythonImportsCheck = [ "pydexcom" ];
 
   meta = with lib; {
     description = "Python API to interact with Dexcom Share service";
diff --git a/pkgs/development/python-modules/pydicom-seg/default.nix b/pkgs/development/python-modules/pydicom-seg/default.nix
index 52708208d4c9c..9f06d7b44dd07 100644
--- a/pkgs/development/python-modules/pydicom-seg/default.nix
+++ b/pkgs/development/python-modules/pydicom-seg/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pythonOlder
-, pytestCheckHook
-, pythonRelaxDepsHook
-, poetry-core
-, jsonschema
-, numpy
-, pydicom
-, simpleitk
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pythonOlder,
+  pytestCheckHook,
+  poetry-core,
+  jsonschema,
+  numpy,
+  pydicom,
+  simpleitk,
 }:
 
 buildPythonPackage rec {
@@ -36,13 +36,10 @@ buildPythonPackage rec {
     })
   ];
 
-  pythonRelaxDeps = [
-    "jsonschema"
-  ];
+  pythonRelaxDeps = [ "jsonschema" ];
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -52,13 +49,9 @@ buildPythonPackage rec {
     simpleitk
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pydicom_seg"
-  ];
+  pythonImportsCheck = [ "pydicom_seg" ];
 
   meta = with lib; {
     description = "Medical segmentation file reading and writing";
diff --git a/pkgs/development/python-modules/pydicom/default.nix b/pkgs/development/python-modules/pydicom/default.nix
index 6bcb0c42fa583..94822a24d4445 100644
--- a/pkgs/development/python-modules/pydicom/default.nix
+++ b/pkgs/development/python-modules/pydicom/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, numpy
-, pillow
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  numpy,
+  pillow,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 let
@@ -29,7 +30,6 @@ let
     rev = "cbb9b2148bccf0f550e3758c07aca3d0e328e768";
     hash = "sha256-nF/j7pfcEpWHjjsqqTtIkW8hCEbuQ3J4IxpRk0qc1CQ=";
   };
-
 in
 buildPythonPackage {
   inherit pname version src;
@@ -42,9 +42,7 @@ buildPythonPackage {
     ./pillow-10.1.0-compat.patch
   ];
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     numpy
@@ -52,9 +50,7 @@ buildPythonPackage {
     setuptools
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Setting $HOME to prevent pytest to try to create a folder inside
   # /homeless-shelter which is read-only.
@@ -65,20 +61,21 @@ buildPythonPackage {
     ln -s ${test_data}/data_store/data $HOME/.pydicom/data
   '';
 
-  disabledTests = [
-    # tries to remove a dicom inside $HOME/.pydicom/data/ and download it again
-    "test_fetch_data_files"
-  ] ++ lib.optionals stdenv.isAarch64 [
-    # https://github.com/pydicom/pydicom/issues/1386
-    "test_array"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # flaky, hard to reproduce failure outside hydra
-    "test_time_check"
-  ];
+  disabledTests =
+    [
+      # tries to remove a dicom inside $HOME/.pydicom/data/ and download it again
+      "test_fetch_data_files"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isAarch64 [
+      # https://github.com/pydicom/pydicom/issues/1386
+      "test_array"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # flaky, hard to reproduce failure outside hydra
+      "test_time_check"
+    ];
 
-  pythonImportsCheck = [
-    "pydicom"
-  ];
+  pythonImportsCheck = [ "pydicom" ];
 
   meta = with lib; {
     description = "Python package for working with DICOM files";
diff --git a/pkgs/development/python-modules/pydigiham/default.nix b/pkgs/development/python-modules/pydigiham/default.nix
index a4e7f3db82b70..1bc5fd33e59e6 100644
--- a/pkgs/development/python-modules/pydigiham/default.nix
+++ b/pkgs/development/python-modules/pydigiham/default.nix
@@ -1,4 +1,12 @@
-{ lib, buildPythonPackage, fetchFromGitHub, python, digiham, csdr, pycsdr, codecserver }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  digiham,
+  pycsdr,
+  codecserver,
+}:
 
 buildPythonPackage rec {
   pname = "pydigiham";
@@ -13,7 +21,10 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [ digiham ];
-  buildInputs = [ codecserver pycsdr ];
+  buildInputs = [
+    codecserver
+    pycsdr
+  ];
   # make pycsdr header files available
   preBuild = ''
     ln -s ${pycsdr}/include/${python.libPrefix}/pycsdr src/pycsdr
diff --git a/pkgs/development/python-modules/pydiscourse/default.nix b/pkgs/development/python-modules/pydiscourse/default.nix
index 01bce56302339..6b0aa9131b668 100644
--- a/pkgs/development/python-modules/pydiscourse/default.nix
+++ b/pkgs/development/python-modules/pydiscourse/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-KqJ6ag4owG7US5Q4Ygjq263ds1o/JhEJ3bNa8YecYtE=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     pytest-mock
@@ -32,12 +31,10 @@ buildPythonPackage rec {
     requests-mock
   ];
 
-  pythonImportsCheck = [
-    "pydiscourse"
-  ];
+  pythonImportsCheck = [ "pydiscourse" ];
 
   meta = with lib; {
-    description = "A Python library for working with Discourse";
+    description = "Python library for working with Discourse";
     mainProgram = "pydiscoursecli";
     homepage = "https://github.com/pydiscourse/pydiscourse";
     changelog = "https://github.com/pydiscourse/pydiscourse/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/pydiscovergy/default.nix b/pkgs/development/python-modules/pydiscovergy/default.nix
index f671ec1e5e60f..8a5379fd1bdd3 100644
--- a/pkgs/development/python-modules/pydiscovergy/default.nix
+++ b/pkgs/development/python-modules/pydiscovergy/default.nix
@@ -1,23 +1,23 @@
-{ lib
-, authlib
-, buildPythonPackage
-, fetchFromGitHub
-, httpx
-, mashumaro
-, orjson
-, pytest-httpx
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, pytz
-, respx
+{
+  lib,
+  authlib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpx,
+  mashumaro,
+  orjson,
+  pytest-asyncio,
+  pytest-httpx,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  respx,
 }:
 
 buildPythonPackage rec {
   pname = "pydiscovergy";
-  version = "3.0.0";
-  format = "pyproject";
+  version = "3.0.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.10";
 
@@ -25,38 +25,33 @@ buildPythonPackage rec {
     owner = "jpbede";
     repo = "pydiscovergy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ArcH/4ZyOtIGmoXArU+oEd357trJnS9umlN9B+U0dBI=";
+    hash = "sha256-g6KWX7APdqB0dNe7p6WGualxSj5fiw+jRq+0qfqTs4w=";
   };
 
   postPatch = ''
     sed -i '/addopts =/d' pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     authlib
     httpx
     mashumaro
     orjson
-    pytz
   ];
 
   nativeCheckInputs = [
+    pytest-asyncio
     pytest-httpx
     pytestCheckHook
     respx
   ];
 
-  pythonImportsCheck = [
-    "pydiscovergy"
-  ];
+  pythonImportsCheck = [ "pydiscovergy" ];
 
   meta = with lib; {
-    description = "Async Python 3 library for interacting with the Discovergy API";
+    description = "Library for interacting with the Discovergy API";
     homepage = "https://github.com/jpbede/pydiscovergy";
     changelog = "https://github.com/jpbede/pydiscovergy/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pydispatcher/default.nix b/pkgs/development/python-modules/pydispatcher/default.nix
index 0d4ef3ce3f5e6..7094534c1563f 100644
--- a/pkgs/development/python-modules/pydispatcher/default.nix
+++ b/pkgs/development/python-modules/pydispatcher/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -15,14 +16,11 @@ buildPythonPackage rec {
     hash = "sha256-t3fGrQgNwbrXSkwp1qRpFPpnAaxw+UsNZvvP3mL1vjE=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     homepage = "https://pydispatcher.sourceforge.net/";
     description = "Signal-registration and routing infrastructure for use in multiple contexts";
     license = licenses.bsd3;
   };
-
 }
diff --git a/pkgs/development/python-modules/pydmd/default.nix b/pkgs/development/python-modules/pydmd/default.nix
index 3cf1f14f70e2e..577c25f8ec81d 100644
--- a/pkgs/development/python-modules/pydmd/default.nix
+++ b/pkgs/development/python-modules/pydmd/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, future
-, matplotlib
-, numpy
-, pytestCheckHook
-, pytest-mock
-, pythonOlder
-, scipy
-, ezyrb
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  future,
+  matplotlib,
+  numpy,
+  pytestCheckHook,
+  pytest-mock,
+  pythonOlder,
+  scipy,
+  ezyrb,
 }:
 
 let
@@ -28,9 +29,7 @@ let
       hash = "sha256-vprvq3sl/eNtu4cqg0A4XV96dzUt0nOtPmfwEv0h+PI=";
     };
 
-    build-system = [
-      setuptools
-  ];
+    build-system = [ setuptools ];
 
     propagatedBuildInputs = [
       future
@@ -45,16 +44,12 @@ let
       pytest-mock
     ];
 
-    pytestFlagsArray = [
-      "tests/test_dmdbase.py"
-    ];
+    pytestFlagsArray = [ "tests/test_dmdbase.py" ];
 
-    pythonImportsCheck = [
-      "pydmd"
-    ];
+    pythonImportsCheck = [ "pydmd" ];
 
     passthru.tests = self.overrideAttrs (old: {
-      pytestFlagsArray = [];
+      pytestFlagsArray = [ ];
     });
 
     meta = with lib; {
@@ -63,7 +58,7 @@ let
       changelog = "https://github.com/PyDMD/PyDMD/releases/tag/v${version}";
       license = licenses.mit;
       maintainers = with maintainers; [ yl3dy ];
-      broken = stdenv.hostPlatform.isAarch64;
     };
   };
-in self
+in
+self
diff --git a/pkgs/development/python-modules/pydocstyle/default.nix b/pkgs/development/python-modules/pydocstyle/default.nix
index d8207e37b6002..8e53cf0865019 100644
--- a/pkgs/development/python-modules/pydocstyle/default.nix
+++ b/pkgs/development/python-modules/pydocstyle/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, fetchpatch2
-, poetry-core
-, snowballstemmer
-, tomli
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  fetchpatch2,
+  poetry-core,
+  snowballstemmer,
+  tomli,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -32,28 +33,18 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace 'version = "0.0.0-dev"' 'version = "${version}"'
   '';
 
-  propagatedBuildInputs = [
-    snowballstemmer
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  propagatedBuildInputs = [ snowballstemmer ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
-  passthru.optional-dependencies.toml = [
-    tomli
-  ];
+  passthru.optional-dependencies.toml = [ tomli ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.toml;
+  nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.toml;
 
   disabledTestPaths = [
     "src/tests/test_integration.py" # runs pip install
diff --git a/pkgs/development/python-modules/pydocumentdb/default.nix b/pkgs/development/python-modules/pydocumentdb/default.nix
index e2c075ae7f389..d074f0a5feaeb 100644
--- a/pkgs/development/python-modules/pydocumentdb/default.nix
+++ b/pkgs/development/python-modules/pydocumentdb/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
-, six
-, requests
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+  six,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,10 @@ buildPythonPackage rec {
     touch changelog.md
   '';
 
-  propagatedBuildInputs = [ six requests ];
+  propagatedBuildInputs = [
+    six
+    requests
+  ];
 
   # requires an active Azure Cosmos service
   doCheck = false;
@@ -29,6 +33,6 @@ buildPythonPackage rec {
     description = "Azure Cosmos DB API";
     homepage = "https://github.com/Azure/azure-cosmos-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pydoe/default.nix b/pkgs/development/python-modules/pydoe/default.nix
index 5767442bef252..04a943c4cb984 100644
--- a/pkgs/development/python-modules/pydoe/default.nix
+++ b/pkgs/development/python-modules/pydoe/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, wheel
-, scipy
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  wheel,
+  scipy,
+  numpy,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pydoods/default.nix b/pkgs/development/python-modules/pydoods/default.nix
index ff0872e423771..e74d54245d18e 100644
--- a/pkgs/development/python-modules/pydoods/default.nix
+++ b/pkgs/development/python-modules/pydoods/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     sha256 = "1brpcfj1iy9mhf2inla4gi681zlh7g4qvhr6vrprk6r693glpn3x";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/pydot/default.nix b/pkgs/development/python-modules/pydot/default.nix
index 94494842a9d02..3cad1aafe06c3 100644
--- a/pkgs/development/python-modules/pydot/default.nix
+++ b/pkgs/development/python-modules/pydot/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, substituteAll
-, graphviz
-, python
-, pytestCheckHook
-, chardet
-, pythonOlder
-, pyparsing
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  substituteAll,
+  graphviz,
+  pytestCheckHook,
+  chardet,
+  pythonOlder,
+  pyparsing,
 }:
 
 buildPythonPackage rec {
@@ -19,12 +19,10 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-YCRq8hUSP6Bi8hzXkb5n3aI6bygN8J9okZ5jeh5PMjU=";
+    hash = "sha256-YCRq8hUSP6Bi8hzXkb5n3aI6bygN8J9okZ5jeh5PMjU=";
   };
 
-  propagatedBuildInputs = [
-    pyparsing
-  ];
+  propagatedBuildInputs = [ pyparsing ];
 
   nativeCheckInputs = [
     chardet
@@ -48,23 +46,19 @@ buildPythonPackage rec {
       --replace "path = os.path.join(test_dir, TESTS_DIR_1)" "path = os.path.join('test/', TESTS_DIR_1)"
   '';
 
-  pytestFlagsArray = [
-    "test/pydot_unittest.py"
-  ];
+  pytestFlagsArray = [ "test/pydot_unittest.py" ];
 
   disabledTests = [
     # broken, fixed after 2.0.0
     "test_graph_with_shapefiles"
   ];
 
-  pythonImportsCheck = [
-    "pydot"
-  ];
+  pythonImportsCheck = [ "pydot" ];
 
   meta = with lib; {
     description = "Allows to create both directed and non directed graphs from Python";
     homepage = "https://github.com/erocarrera/pydot";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pydrawise/default.nix b/pkgs/development/python-modules/pydrawise/default.nix
index 6d1f6aff06bf6..3161bb8aaaf84 100644
--- a/pkgs/development/python-modules/pydrawise/default.nix
+++ b/pkgs/development/python-modules/pydrawise/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "pydrawise";
-  version = "2024.4.1";
+  version = "2024.9.0";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
     owner = "dknowles2";
     repo = "pydrawise";
     rev = "refs/tags/${version}";
-    hash = "sha256-rJul7UAhgB0a6+3buPlfjnhhy2QOo82gvmRtZB+vrko=";
+    hash = "sha256-8S1Ce4MW/iD8xRloUtKbUhFIN0+nconnklqxBy7xMm0=";
   };
 
   build-system = [
diff --git a/pkgs/development/python-modules/pydrive2/default.nix b/pkgs/development/python-modules/pydrive2/default.nix
index 32bb5d78984f3..f96380877eccb 100644
--- a/pkgs/development/python-modules/pydrive2/default.nix
+++ b/pkgs/development/python-modules/pydrive2/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, appdirs
-, buildPythonPackage
-, fetchPypi
-, fsspec
-, funcy
-, google-api-python-client
-, oauth2client
-, pyopenssl
-, pythonOlder
-, pyyaml
-, setuptools
-, setuptools-scm
-, tqdm
+{
+  lib,
+  appdirs,
+  buildPythonPackage,
+  fetchPypi,
+  fsspec,
+  funcy,
+  google-api-python-client,
+  oauth2client,
+  pyopenssl,
+  pythonOlder,
+  pyyaml,
+  setuptools,
+  setuptools-scm,
+  tqdm,
 }:
 
 buildPythonPackage rec {
@@ -51,9 +52,7 @@ buildPythonPackage rec {
   # Tests require a account and network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pydrive2"
-  ];
+  pythonImportsCheck = [ "pydrive2" ];
 
   meta = with lib; {
     description = "Google Drive API Python wrapper library";
diff --git a/pkgs/development/python-modules/pydroid-ipcam/default.nix b/pkgs/development/python-modules/pydroid-ipcam/default.nix
index 7013c70cdf5e6..661081d1940b2 100644
--- a/pkgs/development/python-modules/pydroid-ipcam/default.nix
+++ b/pkgs/development/python-modules/pydroid-ipcam/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pydroid_ipcam"
-  ];
+  pythonImportsCheck = [ "pydroid_ipcam" ];
 
   meta = with lib; {
     description = "Python library for Android IP Webcam";
diff --git a/pkgs/development/python-modules/pydruid/default.nix b/pkgs/development/python-modules/pydruid/default.nix
index 9ede441bd817a..69ba702507b0c 100644
--- a/pkgs/development/python-modules/pydruid/default.nix
+++ b/pkgs/development/python-modules/pydruid/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
   # required dependencies
-, requests
-, setuptools
+  requests,
+  setuptools,
   # optional dependencies
-, pandas
-, tornado
-, sqlalchemy
+  pandas,
+  tornado,
+  sqlalchemy,
   # test dependencies
-, pycurl
-, pytestCheckHook
+  pycurl,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -33,22 +34,16 @@ buildPythonPackage rec {
     substituteInPlace setup.py --replace '"console_scripts": ["pydruid = pydruid.console:main"],' ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     pytestCheckHook
     pycurl
   ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "pydruid"
-  ];
+  pythonImportsCheck = [ "pydruid" ];
 
   passthru = {
     optional-dependencies = {
diff --git a/pkgs/development/python-modules/pydsdl/default.nix b/pkgs/development/python-modules/pydsdl/default.nix
index b3dfed8c6cac1..d74657c16784d 100644
--- a/pkgs/development/python-modules/pydsdl/default.nix
+++ b/pkgs/development/python-modules/pydsdl/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
- buildPythonPackage rec {
+buildPythonPackage rec {
   pname = "pydsdl";
   version = "1.18.0";
   format = "setuptools";
@@ -26,9 +27,7 @@
   # Module doesn't contain tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pydsdl"
-  ];
+  pythonImportsCheck = [ "pydsdl" ];
 
   meta = with lib; {
     description = "Library to process Cyphal DSDL";
diff --git a/pkgs/development/python-modules/pydub/default.nix b/pkgs/development/python-modules/pydub/default.nix
index 7ec3da3531cf2..2678412b23449 100644
--- a/pkgs/development/python-modules/pydub/default.nix
+++ b/pkgs/development/python-modules/pydub/default.nix
@@ -1,11 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, ffmpeg-full
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  ffmpeg-full,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  substituteAll,
 }:
 
 buildPythonPackage rec {
@@ -29,14 +31,18 @@ buildPythonPackage rec {
       url = "https://github.com/jiaaro/pydub/commit/66c1bf7813ae8621a71484fdcdf609734c0d8efd.patch";
       hash = "sha256-3OIzvTgGK3r4/s5y7izHvouB4uJEmjO6cgKvegtTf7A=";
     })
+    # Fix paths to ffmpeg, ffplay and ffprobe
+    (substituteAll {
+      src = ./ffmpeg-fix-path.patch;
+      ffmpeg = lib.getExe ffmpeg-full;
+      ffplay = lib.getExe' ffmpeg-full "ffplay";
+      ffprobe = lib.getExe' ffmpeg-full "ffprobe";
+    })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
-    ffmpeg-full
     pytestCheckHook
   ];
 
@@ -46,15 +52,13 @@ buildPythonPackage rec {
     "pydub.playback"
   ];
 
-  pytestFlagsArray = [
-    "test/test.py"
-  ];
+  pytestFlagsArray = [ "test/test.py" ];
 
   meta = with lib; {
     description = "Manipulate audio with a simple and easy high level interface";
     homepage = "http://pydub.com";
     changelog = "https://github.com/jiaaro/pydub/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pydub/ffmpeg-fix-path.patch b/pkgs/development/python-modules/pydub/ffmpeg-fix-path.patch
new file mode 100644
index 0000000000000..1da979dcec8e5
--- /dev/null
+++ b/pkgs/development/python-modules/pydub/ffmpeg-fix-path.patch
@@ -0,0 +1,28 @@
+diff --git a/pydub/utils.py b/pydub/utils.py
+index 2694f90..7764b3f 100644
+--- a/pydub/utils.py
++++ b/pydub/utils.py
+@@ -172,7 +172,7 @@ def get_encoder_name():
+     else:
+         # should raise exception
+         warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)
+-        return "ffmpeg"
++        return "@ffmpeg@"
+
+
+ def get_player_name():
+@@ -186,7 +186,7 @@ def get_player_name():
+     else:
+         # should raise exception
+         warn("Couldn't find ffplay or avplay - defaulting to ffplay, but may not work", RuntimeWarning)
+-        return "ffplay"
++        return "@ffplay@"
+
+
+ def get_prober_name():
+@@ -200,7 +200,7 @@ def get_prober_name():
+     else:
+         # should raise exception
+         warn("Couldn't find ffprobe or avprobe - defaulting to ffprobe, but may not work", RuntimeWarning)
+-        return "ffprobe"
++        return "@ffprobe@"
diff --git a/pkgs/development/python-modules/pyduke-energy/default.nix b/pkgs/development/python-modules/pyduke-energy/default.nix
index d0342f8cff688..4f668b9e79ae6 100644
--- a/pkgs/development/python-modules/pyduke-energy/default.nix
+++ b/pkgs/development/python-modules/pyduke-energy/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, jsonpickle
-, paho-mqtt
-, pytest-asyncio
-, pytest-timeout
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jsonpickle,
+  paho-mqtt,
+  pytest-asyncio,
+  pytest-timeout,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -38,9 +39,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pyduke_energy"
-  ];
+  pythonImportsCheck = [ "pyduke_energy" ];
 
   meta = with lib; {
     description = "Python module for the Duke Energy API";
diff --git a/pkgs/development/python-modules/pyduotecno/default.nix b/pkgs/development/python-modules/pyduotecno/default.nix
index a52d43e06a0f3..7333019c90559 100644
--- a/pkgs/development/python-modules/pyduotecno/default.nix
+++ b/pkgs/development/python-modules/pyduotecno/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "pyduotecno";
-  version = "2024.3.2";
+  version = "2024.9.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "Cereal2nd";
     repo = "pyDuotecno";
     rev = "refs/tags/${version}";
-    hash = "sha256-aak1e8NOxj7kncOyChpCEAQP1jpduhiSKDqm3mf5bqs=";
+    hash = "sha256-h4OB4V4O645QAPdtO+OtLWffTuA7xlzIveIl+Cyhg3w=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/pydy/default.nix b/pkgs/development/python-modules/pydy/default.nix
index c7ee5359bee41..b4172a855052b 100644
--- a/pkgs/development/python-modules/pydy/default.nix
+++ b/pkgs/development/python-modules/pydy/default.nix
@@ -1,48 +1,58 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, cython
-, numpy
-, scipy
-, sympy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  scipy,
+  sympy,
+  setuptools,
+  pytestCheckHook,
+  cython,
+  fetchpatch2,
 }:
 
 buildPythonPackage rec {
   pname = "pydy";
   version = "0.7.1";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-aaRinJMGR8v/OVkeSp1hA4+QLOrmDWq50wvA6b/suvk=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  patches = [
+    # Migrate tests to pytest
+    (fetchpatch2 {
+      url = "https://github.com/pydy/pydy/commit/e679638fecf80def25f5ed20f01c49c5d931e4d8.patch?full_index=1";
+      hash = "sha256-wJmYkyc5Yh0152OyNL5ZbZJxmpX7C65Hqrms4gm3zt0=";
+      excludes = [
+        ".github/workflows/oldest.yml"
+        ".github/workflows/tests.yml"
+        "bin/test"
+      ];
+    })
+  ];
+
+  dependencies = [
     numpy
     scipy
     sympy
   ];
 
   nativeCheckInputs = [
-    nose
-    cython
     pytestCheckHook
+    cython
   ];
 
-  disabledTests = [
-    # Tests not fixed yet. Check https://github.com/pydy/pydy/issues/465
-    "test_generate_cse"
-    "test_generate_code_blocks"
-    "test_doprint"
-    "test_OctaveMatrixGenerator"
-  ];
+  pythonImportsCheck = [ "pydy" ];
 
-  meta = with lib; {
+  meta = {
     description = "Python tool kit for multi-body dynamics";
     homepage = "http://pydy.org";
-    license = licenses.bsd3;
-    maintainers = [ ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ sigmanificient ];
   };
 }
diff --git a/pkgs/development/python-modules/pydyf/default.nix b/pkgs/development/python-modules/pydyf/default.nix
index 1e9d2584a20f8..46a001bb1c26d 100644
--- a/pkgs/development/python-modules/pydyf/default.nix
+++ b/pkgs/development/python-modules/pydyf/default.nix
@@ -1,43 +1,42 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, ghostscript
-, pillow
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  ghostscript,
+  pillow,
+  pytestCheckHook,
+  pytest-cov-stub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pydyf";
-  version = "0.9.0";
+  version = "0.11.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-1bJE6PwkEZznvV1R6i1nc8D/iKqBWX21VrxEDGuIBhA=";
+    hash = "sha256-OU3d9hnMqdDFVxXjxV6hIam/nLx4DNwSAaJCeRe4a2Q=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "--isort --flake8 --cov --no-cov-on-fail" ""
+      --replace "--isort --flake8" ""
   '';
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   nativeCheckInputs = [
     ghostscript
     pillow
     pytestCheckHook
+    pytest-cov-stub
   ];
 
-  pythonImportsCheck = [
-    "pydyf"
-  ];
+  pythonImportsCheck = [ "pydyf" ];
 
   meta = with lib; {
     description = "Low-level PDF generator written in Python and based on PDF specification 1.7";
diff --git a/pkgs/development/python-modules/pyeapi/default.nix b/pkgs/development/python-modules/pyeapi/default.nix
index a7063c55e7aeb..bdc03df20b59e 100644
--- a/pkgs/development/python-modules/pyeapi/default.nix
+++ b/pkgs/development/python-modules/pyeapi/default.nix
@@ -2,7 +2,6 @@
   lib,
   buildPythonPackage,
   fetchFromGitHub,
-  fetchpatch,
   setuptools,
   mock,
   netaddr,
@@ -12,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "pyeapi";
-  version = "1.0.2";
+  version = "1.0.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -21,18 +20,9 @@ buildPythonPackage rec {
     owner = "arista-eosplus";
     repo = "pyeapi";
     rev = "refs/tags/v${version}";
-    hash = "sha256-GZBoCoAqij54rZezRDF/ihJDQ5T6FFyDSRXGV3//avQ=";
+    hash = "sha256-eGNBQSnYMC9YVCw5mBRH6XRq139AcqFm6HnO2FUzLEE=";
   };
 
-  patches = [
-    # Replace imp, https://github.com/arista-eosplus/pyeapi/pull/295
-    (fetchpatch {
-      name = "replace-imp.patch";
-      url = "https://github.com/arista-eosplus/pyeapi/commit/1f2d8e1fa61566082ccb11a1a17e0f3d8a0c89df.patch";
-      hash = "sha256-ONviRU6eUUZ+TTJ4F41ZXqavW7RIi1MBO7s7OsnWknk=";
-    })
-  ];
-
   build-system = [ setuptools ];
 
   dependencies = [ netaddr ];
diff --git a/pkgs/development/python-modules/pyebus/default.nix b/pkgs/development/python-modules/pyebus/default.nix
index 8659f0a38e974..5376a546c9b0b 100644
--- a/pkgs/development/python-modules/pyebus/default.nix
+++ b/pkgs/development/python-modules/pyebus/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, anytree
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, poetry-core
-, pythonOlder
+{
+  lib,
+  anytree,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,20 +19,14 @@ buildPythonPackage rec {
     hash = "sha256-6ooOSJAIi8vYmCjDHnbMGQJfPqPmzA5thDSg+iM7T+8=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    anytree
-  ];
+  propagatedBuildInputs = [ anytree ];
 
   # https://github.com/c0fec0de/pyebus/issues/3
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyebus"
-  ];
+  pythonImportsCheck = [ "pyebus" ];
 
   meta = with lib; {
     description = "Pythonic Interface to EBUS Daemon (ebusd)";
diff --git a/pkgs/development/python-modules/pyechonest/default.nix b/pkgs/development/python-modules/pyechonest/default.nix
index 3b4f4620e1469..c1a8766528d94 100644
--- a/pkgs/development/python-modules/pyechonest/default.nix
+++ b/pkgs/development/python-modules/pyechonest/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+}:
 
 buildPythonPackage rec {
   pname = "pyechonest";
diff --git a/pkgs/development/python-modules/pyeclib/default.nix b/pkgs/development/python-modules/pyeclib/default.nix
index b367f680e5051..d1fec77647843 100644
--- a/pkgs/development/python-modules/pyeclib/default.nix
+++ b/pkgs/development/python-modules/pyeclib/default.nix
@@ -1,41 +1,63 @@
-{ lib, stdenv, buildPythonPackage, fetchFromGitHub, liberasurecode, six }:
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  distutils,
+  fetchFromGitHub,
+  liberasurecode,
+  pytestCheckHook,
+  setuptools,
+  six,
+}:
 
 buildPythonPackage rec {
   pname = "pyeclib";
-  version = "unstable-2022-03-11";
-  format = "setuptools";
+  version = "1.6.1";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "openstack";
     repo = "pyeclib";
-    rev = "b50040969a03f7566ffcb468336e875d21486113";
-    hash = "sha256-nYYjocStC0q/MC6pum3J4hlXiu/R5xODwIE97Ho3iEY=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-pa3majZ68+DQGtgGCpZVRshof+w9jvpxreo4dkckLXk=";
   };
 
   postPatch = ''
     # patch dlopen call
     substituteInPlace src/c/pyeclib_c/pyeclib_c.c \
-      --replace "liberasurecode.so" "${liberasurecode}/lib/liberasurecode.so"
+      --replace-fail "liberasurecode.so" "${liberasurecode}/lib/liberasurecode.so"
+
     # python's platform.platform() doesn't return "Darwin" (anymore?)
     substituteInPlace setup.py \
-      --replace '"Darwin"' '"macOS"'
+      --replace-fail '"Darwin"' '"macOS"'
   '';
 
-  preBuild = let
-    ldLibraryPathEnvName = if stdenv.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH";
-  in ''
-    # required for the custom _find_library function in setup.py
-    export ${ldLibraryPathEnvName}="${lib.makeLibraryPath [ liberasurecode ]}"
-  '';
+  build-system = [
+    distutils
+    setuptools
+  ];
+
+  preBuild =
+    let
+      ldLibraryPathEnvName =
+        if stdenv.hostPlatform.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH";
+    in
+    ''
+      # required for the custom _find_library function in setup.py
+      export ${ldLibraryPathEnvName}="${lib.makeLibraryPath [ liberasurecode ]}"
+    '';
 
-  buildInputs = [ liberasurecode ];
+  dependencies = [ liberasurecode ];
 
-  nativeCheckInputs = [ six ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    six
+  ];
 
   pythonImportsCheck = [ "pyeclib" ];
 
   meta = with lib; {
-    description = "This library provides a simple Python interface for implementing erasure codes.";
+    description = "This library provides a simple Python interface for implementing erasure codes";
     homepage = "https://github.com/openstack/pyeclib";
     license = licenses.bsd2;
     maintainers = teams.openstack.members;
diff --git a/pkgs/development/python-modules/pyecoforest/default.nix b/pkgs/development/python-modules/pyecoforest/default.nix
index a116a35420897..b0c69a520ade0 100644
--- a/pkgs/development/python-modules/pyecoforest/default.nix
+++ b/pkgs/development/python-modules/pyecoforest/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, httpx
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, respx
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpx,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  respx,
 }:
 
 buildPythonPackage rec {
@@ -28,13 +29,9 @@ buildPythonPackage rec {
       --replace-fail "--cov=pyecoforest --cov-report=term-missing:skip-covered" ""
   '';
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  dependencies = [
-    httpx
-  ];
+  dependencies = [ httpx ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -42,10 +39,17 @@ buildPythonPackage rec {
     respx
   ];
 
-  pythonImportsCheck = [
-    "pyecoforest"
+  disabledTests = [
+    # respx.models.AllMockedAssertionError
+    "test_get"
+    "test_get_errors"
+    "test_set_temperature"
+    "test_set_power"
+    "test_turn"
   ];
 
+  pythonImportsCheck = [ "pyecoforest" ];
+
   meta = with lib; {
     description = "Module for interacting with Ecoforest devices";
     homepage = "https://github.com/pjanuario/pyecoforest";
diff --git a/pkgs/development/python-modules/pyeconet/default.nix b/pkgs/development/python-modules/pyeconet/default.nix
index d479564b763b5..137ca9d577577 100644
--- a/pkgs/development/python-modules/pyeconet/default.nix
+++ b/pkgs/development/python-modules/pyeconet/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, paho-mqtt
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  paho-mqtt,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-R6PA/i35vo253J4yowe2fPRZEqStAqmm98k81KDHLQk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     paho-mqtt
@@ -33,9 +32,7 @@ buildPythonPackage rec {
   # Tests require credentials
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyeconet"
-  ];
+  pythonImportsCheck = [ "pyeconet" ];
 
   meta = with lib; {
     description = "Python interface to the EcoNet API";
diff --git a/pkgs/development/python-modules/pyecotrend-ista/default.nix b/pkgs/development/python-modules/pyecotrend-ista/default.nix
new file mode 100644
index 0000000000000..23edfcbcc00aa
--- /dev/null
+++ b/pkgs/development/python-modules/pyecotrend-ista/default.nix
@@ -0,0 +1,56 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  dataclasses-json,
+  requests,
+  pytestCheckHook,
+  pytest-xdist,
+  requests-mock,
+  syrupy,
+}:
+
+buildPythonPackage rec {
+  pname = "pyecotrend-ista";
+  version = "3.3.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.11";
+
+  src = fetchFromGitHub {
+    owner = "Ludy87";
+    repo = "pyecotrend-ista";
+    rev = "refs/tags/${version}";
+    hash = "sha256-TZDHEaDc7UACIAHNX1fStJH74qLKf+krWbTDtemXahA=";
+  };
+
+  postPatch = ''
+    sed -i "/addopts =/d" pyproject.toml
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    dataclasses-json
+    requests
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-xdist
+    requests-mock
+    syrupy
+  ];
+
+  pythonImportsCheck = [ "pyecotrend_ista" ];
+
+  meta = {
+    changelog = "https://github.com/Ludy87/pyecotrend-ista/releases/tag/${version}";
+    description = "Unofficial python library for the pyecotrend-ista API";
+    homepage = "https://github.com/Ludy87/pyecotrend-ista";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ oynqr ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyecowitt/default.nix b/pkgs/development/python-modules/pyecowitt/default.nix
index b5f4a5fadbacf..0786f87c7e293 100644
--- a/pkgs/development/python-modules/pyecowitt/default.nix
+++ b/pkgs/development/python-modules/pyecowitt/default.nix
@@ -1,39 +1,40 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyecowitt";
   version = "0.21";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "garbled1";
-    repo = pname;
-    rev = version;
-    sha256 = "5VdVo6j2HZXSCWU4NvfWzyS/KJfVb7N1KSMeu8TvWaQ=";
+    repo = "pyecowitt";
+    rev = "refs/tags/${version}";
+    hash = "sha256-5VdVo6j2HZXSCWU4NvfWzyS/KJfVb7N1KSMeu8TvWaQ=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ aiohttp ];
 
   # Project thas no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyecowitt"
-  ];
+  pythonImportsCheck = [ "pyecowitt" ];
 
   meta = with lib; {
     description = "Python module for the EcoWitt Protocol";
     homepage = "https://github.com/garbled1/pyecowitt";
-    license = with licenses; [ asl20 ];
+    changelog = "https://github.com/garbled1/pyecowitt/releases/tag/${version}";
+    license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/pyedimax/default.nix b/pkgs/development/python-modules/pyedimax/default.nix
index e96147ef67a03..dff8a0ffa899f 100644
--- a/pkgs/development/python-modules/pyedimax/default.nix
+++ b/pkgs/development/python-modules/pyedimax/default.nix
@@ -1,29 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyedimax";
   version = "0.2.1";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1i3gr5vygqh2ryg67sl13aaql7nvf3nbybrg54628r4g7911b5rk";
+    hash = "sha256-M5cVQjqPZCQMKS8vv+xw2x6KlRqB6mOezwLi53fJb8Q=";
   };
 
-  propagatedBuildInputs = [ requests ];
+  build-system = [ setuptools ];
+
+  dependencies = [ requests ];
 
-  # Project has no tests
+  # Module has no tests
   doCheck = false;
+
   pythonImportsCheck = [ "pyedimax" ];
 
   meta = with lib; {
     description = "Python library for interfacing with the Edimax smart plugs";
     homepage = "https://github.com/andreipop2005/pyedimax";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/pyee/default.nix b/pkgs/development/python-modules/pyee/default.nix
index 281611c31bddd..72b17a5bf0f80 100644
--- a/pkgs/development/python-modules/pyee/default.nix
+++ b/pkgs/development/python-modules/pyee/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mock
-, pytest-asyncio
-, pytest-trio
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
-, twisted
-, typing-extensions
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  pytest-asyncio,
+  pytest-trio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  twisted,
+  typing-extensions,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "pyee";
-  version = "11.1.0";
+  version = "12.0.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-tTr5j2mQyBDt2bVrh3kQIaj1T9E9tO3RFCQ41EuiJj8=";
+    hash = "sha256-xIBgP0qikn1HZutB+oJ5P+YKgsv9uNaI4NCMVaU04UU=";
   };
 
   nativeBuildInputs = [
@@ -31,9 +32,7 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ typing-extensions ];
 
   nativeCheckInputs = [
     mock
@@ -43,12 +42,10 @@ buildPythonPackage rec {
     twisted
   ];
 
-  pythonImportsCheck = [
-    "pyee"
-  ];
+  pythonImportsCheck = [ "pyee" ];
 
   meta = with lib; {
-    description = "A port of Node.js's EventEmitter to Python";
+    description = "Port of Node.js's EventEmitter to Python";
     homepage = "https://github.com/jfhbrook/pyee";
     license = licenses.mit;
     maintainers = with maintainers; [ kmein ];
diff --git a/pkgs/development/python-modules/pyefergy/default.nix b/pkgs/development/python-modules/pyefergy/default.nix
index 87f2abda0c0b8..47e4e41e624fe 100644
--- a/pkgs/development/python-modules/pyefergy/default.nix
+++ b/pkgs/development/python-modules/pyefergy/default.nix
@@ -1,47 +1,52 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, iso4217
-, pytest-asyncio
-, pythonOlder
-, pytz
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  poetry-dynamic-versioning,
+  iso4217,
+  pythonOlder,
+  pytz,
 }:
 
 buildPythonPackage rec {
   pname = "pyefergy";
-  version = "22.1.1";
-  format = "setuptools";
+  version = "22.5.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "tkdrob";
-    repo = pname;
-    rev = version;
-    hash = "sha256-AdoM+PcVoajxhnEfkyN9UuNufChu8XGmZDLNC3mjrps=";
+    repo = "pyefergy";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-4M3r/+C42X95/7BGZAJbkXKKFEkGzLlvX0Ynv+eL8qc=";
   };
 
-  postPatch = ''
-    # setuptools.extern.packaging.version.InvalidVersion: Invalid version: 'master'
-    substituteInPlace setup.py \
-      --replace 'version="master",' 'version="${version}",'
-  '';
+  build-system = [
+    poetry-core
+    poetry-dynamic-versioning
+  ];
+
+  pythonRemoveDeps = [
+    "codecov"
+    "types-pytz"
+  ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     iso4217
     pytz
   ];
 
   # Tests require network access
-  doCheck  =false;
+  doCheck = false;
 
-  pythonImportsCheck = [
-    "pyefergy"
-  ];
+  pythonImportsCheck = [ "pyefergy" ];
 
   meta = with lib; {
+    changelog = "https://github.com/tkdrob/pyefergy/releases/tag/v${version}";
     description = "Python API library for Efergy energy meters";
     homepage = "https://github.com/tkdrob/pyefergy";
     license = with licenses; [ mit ];
diff --git a/pkgs/development/python-modules/pyegps/default.nix b/pkgs/development/python-modules/pyegps/default.nix
new file mode 100644
index 0000000000000..c89fd46ec23a1
--- /dev/null
+++ b/pkgs/development/python-modules/pyegps/default.nix
@@ -0,0 +1,41 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pytestCheckHook,
+  pyusb,
+  setuptools,
+  setuptools-scm,
+}:
+
+buildPythonPackage rec {
+  pname = "pyegps";
+  version = "0.2.5";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "gnumpi";
+    repo = "pyegps";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-iixk2sFa4KAayKFmQKtPjvoIYgxCMXnfkliKhyO2ba4=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [ pyusb ];
+
+  pythonImportsCheck = [ "pyegps" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    changelog = "https://github.com/gnumpi/pyEGPS/releases/tag/v${version}";
+    description = "Controlling Energenie Power Strips with python";
+    homepage = "https://github.com/gnumpi/pyegps";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyeight/default.nix b/pkgs/development/python-modules/pyeight/default.nix
index 3dec94efd3e98..6ccc5f099e4cb 100644
--- a/pkgs/development/python-modules/pyeight/default.nix
+++ b/pkgs/development/python-modules/pyeight/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyeight"
-  ];
+  pythonImportsCheck = [ "pyeight" ];
 
   meta = with lib; {
     description = "Python library to interface with the Eight Sleep API";
diff --git a/pkgs/development/python-modules/pyelectra/default.nix b/pkgs/development/python-modules/pyelectra/default.nix
new file mode 100644
index 0000000000000..749556926b07c
--- /dev/null
+++ b/pkgs/development/python-modules/pyelectra/default.nix
@@ -0,0 +1,37 @@
+{
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "pyelectra";
+  version = "1.2.4";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "jafar-atili";
+    repo = "pyelectra";
+    rev = "refs/tags/${version}";
+    hash = "sha256-3g+6AXbHMStk77k+1Qh5kgDswUZ8I627YiA/PguUGBg=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ aiohttp ];
+
+  pythonImportsCheck = [ "electrasmart" ];
+
+  # upstream has no tests
+  doCheck = false;
+
+  meta = {
+    changelog = "https://github.com/jafar-atili/pyElectra/releases/tag/${version}";
+    description = "Electra Smart Python Integration";
+    homepage = "https://github.com/jafar-atili/pyelectra";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyelftools/default.nix b/pkgs/development/python-modules/pyelftools/default.nix
index 84cdda65f1f95..b9976b5d91028 100644
--- a/pkgs/development/python-modules/pyelftools/default.nix
+++ b/pkgs/development/python-modules/pyelftools/default.nix
@@ -1,25 +1,29 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyelftools";
-  version = "0.30";
-  format = "setuptools";
+  version = "0.31";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "eliben";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-A9etnN7G24/Gu8YlV/YDpxZV+TG2eVXGx2ZjVnA9ZD4=";
+    repo = "pyelftools";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-kX89fMXqrEvhMAAjqKHzHmrYizKBt1uCWMOJtFNNhy4=";
   };
 
+  build-system = [ setuptools ];
+
   doCheck = stdenv.hostPlatform.system == "x86_64-linux" && stdenv.hostPlatform.isGnu;
 
   checkPhase = ''
@@ -29,16 +33,23 @@ buildPythonPackage rec {
     ${python.interpreter} test/run_readelf_tests.py --parallel
   '';
 
-  pythonImportsCheck = [
-    "elftools"
-  ];
+  pythonImportsCheck = [ "elftools" ];
 
-  meta = with lib; {
+  meta = {
     description = "Python library for analyzing ELF files and DWARF debugging information";
-    mainProgram = "readelf.py";
     homepage = "https://github.com/eliben/pyelftools";
     changelog = "https://github.com/eliben/pyelftools/blob/v${version}/CHANGES";
-    license = licenses.publicDomain;
-    maintainers = with maintainers; [ igsha pamplemousse ];
+    license = with lib.licenses; [
+      # Public domain with Unlicense waiver.
+      unlicense
+      # pyelftools bundles construct library that is licensed under MIT license.
+      # See elftools/construct/{LICENSE,README} in the source code.
+      mit
+    ];
+    maintainers = with lib.maintainers; [
+      igsha
+      pamplemousse
+    ];
+    mainProgram = "readelf.py";
   };
 }
diff --git a/pkgs/development/python-modules/pyemby/default.nix b/pkgs/development/python-modules/pyemby/default.nix
index 2646744d0bf8c..5f73af3f9b25a 100644
--- a/pkgs/development/python-modules/pyemby/default.nix
+++ b/pkgs/development/python-modules/pyemby/default.nix
@@ -1,28 +1,35 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyemby";
-  version = "1.9";
-  format = "setuptools";
+  version = "1.10";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "mezz64";
-    repo = pname;
-    rev = version;
-    hash = "sha256-4mOQLfPbRzZzpNLvekJHVKiqdGGKPhW6BpKkyRfk2Pc=";
+    repo = "pyemby";
+    rev = "refs/tags/${version}";
+    hash = "sha256-+A/SNMCUqo9TwWsQXwOKJCqmYhbilIdHYazLNQY+NkU=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     aiohttp
     async-timeout
   ];
 
-  # Project has no tests
+  # Module has no tests
   doCheck = false;
 
   pythonImportsCheck = [ "pyemby" ];
@@ -30,7 +37,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python library to interface with the Emby API";
     homepage = "https://github.com/mezz64/pyemby";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/pyemd/default.nix b/pkgs/development/python-modules/pyemd/default.nix
index 1fd61b054f67a..16d5cde886911 100644
--- a/pkgs/development/python-modules/pyemd/default.nix
+++ b/pkgs/development/python-modules/pyemd/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, cython
-, oldest-supported-numpy
-, packaging
-, setuptools
-, setuptools-scm
-, wheel
-, numpy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  cython,
+  oldest-supported-numpy,
+  packaging,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  numpy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -35,16 +36,12 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A Python wrapper for Ofir Pele and Michael Werman's implementation of the Earth Mover's Distance";
+    description = "Python wrapper for Ofir Pele and Michael Werman's implementation of the Earth Mover's Distance";
     homepage = "https://github.com/wmayner/pyemd";
     license = licenses.mit;
   };
diff --git a/pkgs/development/python-modules/pyemoncms/default.nix b/pkgs/development/python-modules/pyemoncms/default.nix
new file mode 100644
index 0000000000000..651b31bd7a7f7
--- /dev/null
+++ b/pkgs/development/python-modules/pyemoncms/default.nix
@@ -0,0 +1,46 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  aiohttp,
+  pytest-aiohttp,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "pyemoncms";
+  version = "0.1.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "Open-Building-Management";
+    repo = "pyemoncms";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-IBrYys0i9pTAw9ul8bqni0H3KNSvKQYNU6D4OSfR6ZE=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ aiohttp ];
+
+  pythonImportsCheck = [ "pyemoncms" ];
+
+  nativeCheckInputs = [
+    pytest-aiohttp
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # requires networking
+    "test_timeout"
+  ];
+
+  meta = {
+    changelog = "https://github.com/Open-Building-Management/pyemoncms/releases/tag/v${version}";
+    description = "Python library for emoncms API";
+    homepage = "https://github.com/Open-Building-Management/pyemoncms";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyemvue/default.nix b/pkgs/development/python-modules/pyemvue/default.nix
index b6f42daac6208..c2b6ac4d22ce0 100644
--- a/pkgs/development/python-modules/pyemvue/default.nix
+++ b/pkgs/development/python-modules/pyemvue/default.nix
@@ -1,30 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-
-# build-system
-, hatchling
-
-# propagated modules
-, requests
-, python-dateutil
-, pycognito
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+
+  # build-system
+  hatchling,
+
+  # propagated modules
+  requests,
+  python-dateutil,
+  pycognito,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "pyemvue";
-  version = "0.18.5";
+  version = "0.18.6";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-cgQARaGM6Jb2kEcG7HqPStRPkhHldJ7UbxQpxN6JbZE=";
+    hash = "sha256-FQ34pKRK1HDLoupMDfVaNxAhn1HbZHYi6se4ewlUWGA=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     requests
@@ -40,7 +39,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     changelog = "https://github.com/magico13/PyEmVue/releases/tag/v${version}";
-    description = "A Python library for reading data from the Emporia Vue energy monitoring system";
+    description = "Python library for reading data from the Emporia Vue energy monitoring system";
     homepage = "https://github.com/magico13/PyEmVue";
     license = licenses.mit;
     maintainers = with maintainers; [ presto8 ];
diff --git a/pkgs/development/python-modules/pyenchant/default.nix b/pkgs/development/python-modules/pyenchant/default.nix
index 448183cf0f580..d7661d9b24a0f 100644
--- a/pkgs/development/python-modules/pyenchant/default.nix
+++ b/pkgs/development/python-modules/pyenchant/default.nix
@@ -1,8 +1,10 @@
-{ lib, stdenv
-, buildPythonPackage
-, isPy27
-, fetchPypi
-, enchant2
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  isPy27,
+  fetchPypi,
+  enchant2,
 }:
 
 buildPythonPackage rec {
@@ -18,20 +20,22 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ enchant2 ];
 
-  postPatch = let
-    libext = stdenv.hostPlatform.extensions.sharedLibrary;
-  in ''
-    # Use the $PYENCHANT_LIBRARY_PATH envvar lookup line to hard-code the
-    # location of the nix enchant-2 library into _enchant.py.
-    #
-    # Also, they hardcode a bad path for Darwin in their library search code;
-    # This code should never be hit, but in case it does, we don't want to have
-    # it "accidentally" work by pulling something from /opt.
-    substituteInPlace enchant/_enchant.py                  \
-      --replace 'os.environ.get("PYENCHANT_LIBRARY_PATH")' \
-                "'${enchant2}/lib/libenchant-2${libext}'"  \
-      --replace '/opt/local/lib/' ""
-  '';
+  postPatch =
+    let
+      libext = stdenv.hostPlatform.extensions.sharedLibrary;
+    in
+    ''
+      # Use the $PYENCHANT_LIBRARY_PATH envvar lookup line to hard-code the
+      # location of the nix enchant-2 library into _enchant.py.
+      #
+      # Also, they hardcode a bad path for Darwin in their library search code;
+      # This code should never be hit, but in case it does, we don't want to have
+      # it "accidentally" work by pulling something from /opt.
+      substituteInPlace enchant/_enchant.py                  \
+        --replace 'os.environ.get("PYENCHANT_LIBRARY_PATH")' \
+                  "'${enchant2}/lib/libenchant-2${libext}'"  \
+        --replace '/opt/local/lib/' ""
+    '';
 
   # dictionaries needed for tests
   doCheck = false;
@@ -41,5 +45,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/pyenchant/pyenchant";
     license = licenses.lgpl21;
   };
-
 }
diff --git a/pkgs/development/python-modules/pyenphase/default.nix b/pkgs/development/python-modules/pyenphase/default.nix
index 45e4b014db726..a96386890be15 100644
--- a/pkgs/development/python-modules/pyenphase/default.nix
+++ b/pkgs/development/python-modules/pyenphase/default.nix
@@ -10,6 +10,7 @@
   poetry-core,
   pyjwt,
   pytest-asyncio,
+  pytest-cov-stub,
   pytestCheckHook,
   pythonOlder,
   respx,
@@ -19,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "pyenphase";
-  version = "1.20.2";
+  version = "1.22.0";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -28,13 +29,10 @@ buildPythonPackage rec {
     owner = "pyenphase";
     repo = "pyenphase";
     rev = "refs/tags/v${version}";
-    hash = "sha256-sjZaLqTYoXJ1cpaSuyLNAsUrACOMVah7DKaKxGkG0zE=";
+    hash = "sha256-letF0s/zJKdMT2nGnZpMFufja0bsL0zlwG+dCSK5BA4=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail " --cov=pyenphase --cov-report=term-missing:skip-covered" ""
-  '';
+  pythonRelaxDeps = [ "tenacity" ];
 
   build-system = [ poetry-core ];
 
@@ -50,14 +48,15 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytest-asyncio
+    pytest-cov-stub
     pytestCheckHook
     respx
     syrupy
   ];
 
-  disabledTests = [
-    # https://github.com/pyenphase/pyenphase/issues/97
-    "test_with_7_x_firmware"
+  disabledTestPaths = [
+    # Tests need network access
+    "tests/test_retries.py"
   ];
 
   pythonImportsCheck = [ "pyenphase" ];
diff --git a/pkgs/development/python-modules/pyenvisalink/default.nix b/pkgs/development/python-modules/pyenvisalink/default.nix
index 8ea5a09e0e4be..84167f4ae58d1 100644
--- a/pkgs/development/python-modules/pyenvisalink/default.nix
+++ b/pkgs/development/python-modules/pyenvisalink/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, colorlog
-, fetchPypi
-, pyserial
-, pythonOlder
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  colorlog,
+  fetchPypi,
+  pyserial,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pyenvisalink";
-  version = "4.6";
+  version = "4.7";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-CQvomHYNMrf0oQjNCcLyisxIV2+3TOgEPzA9seZYsOs=";
+    hash = "sha256-b5v/7+B/yyCnKrWCs0scAuIgV1wSLk6cVa57n+HncUw=";
   };
 
   propagatedBuildInputs = [
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Tests require an Envisalink device
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyenvisalink"
-  ];
+  pythonImportsCheck = [ "pyenvisalink" ];
 
   meta = with lib; {
     description = "Python interface for Envisalink 2DS/3 Alarm API";
diff --git a/pkgs/development/python-modules/pyephember/default.nix b/pkgs/development/python-modules/pyephember/default.nix
index 48cad7bc1954e..7efe8561c8834 100644
--- a/pkgs/development/python-modules/pyephember/default.nix
+++ b/pkgs/development/python-modules/pyephember/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, paho-mqtt
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  paho-mqtt,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -15,7 +16,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-j3SftxXKs9EZwdio26W5U0y5owH4yTteS4RUmzkZkoE=";
+    hash = "sha256-j3SftxXKs9EZwdio26W5U0y5owH4yTteS4RUmzkZkoE=";
   };
 
   propagatedBuildInputs = [
@@ -26,9 +27,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyephember"
-  ];
+  pythonImportsCheck = [ "pyephember" ];
 
   meta = with lib; {
     description = "Python client to the EPH Control Systems Ember API";
diff --git a/pkgs/development/python-modules/pyepsg/default.nix b/pkgs/development/python-modules/pyepsg/default.nix
index 0fb511e1c8341..47cf101d674bf 100644
--- a/pkgs/development/python-modules/pyepsg/default.nix
+++ b/pkgs/development/python-modules/pyepsg/default.nix
@@ -1,4 +1,9 @@
-{ buildPythonPackage, lib, fetchPypi, requests }:
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+  requests,
+}:
 
 buildPythonPackage rec {
   pname = "pyepsg";
@@ -18,7 +23,6 @@ buildPythonPackage rec {
     description = "Simple Python interface to epsg.io";
     license = licenses.lgpl3;
     homepage = "https://pyepsg.readthedocs.io/en/latest/";
-    maintainers = with maintainers; [ mredaelli ];
+    maintainers = with maintainers; [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pyerfa/default.nix b/pkgs/development/python-modules/pyerfa/default.nix
index 8561738f8428c..68e5f7d97496e 100644
--- a/pkgs/development/python-modules/pyerfa/default.nix
+++ b/pkgs/development/python-modules/pyerfa/default.nix
@@ -1,41 +1,41 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jinja2
-, oldest-supported-numpy
-, setuptools-scm
-, wheel
-, liberfa
-, packaging
-, numpy
-, pytestCheckHook
-, pytest-doctestplus
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jinja2,
+  setuptools,
+  setuptools-scm,
+  liberfa,
+  packaging,
+  numpy,
+  pytestCheckHook,
+  pytest-doctestplus,
 }:
 
 buildPythonPackage rec {
   pname = "pyerfa";
-  format = "pyproject";
-  version = "2.0.1.1";
+  version = "2.0.1.4";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-26x07409Ow8i7wrTu72zCyqeEFcLH6Wpi+NMe+Nsmms=";
+    hash = "sha256-rLimcTIy6jXAS8bkCsTkYd/MgX05XvKjyAUcGjMkndM=";
   };
 
-  nativeBuildInputs = [
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "numpy>=2.0.0rc1" "numpy"
+  '';
+
+  build-system = [
     jinja2
-    oldest-supported-numpy
     packaging
+    setuptools
     setuptools-scm
-    wheel
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
-  buildInputs = [
-    liberfa
-  ];
+  dependencies = [ numpy ];
+  buildInputs = [ liberfa ];
 
   preBuild = ''
     export PYERFA_USE_SYSTEM_LIBERFA=1
@@ -53,19 +53,17 @@ buildPythonPackage rec {
   preCheck = ''
     cd $out
   '';
-  pythonImportsCheck = [
-    "erfa"
-  ];
+  pythonImportsCheck = [ "erfa" ];
 
   meta = with lib; {
     description = "Python bindings for ERFA routines";
     longDescription = ''
-        PyERFA is the Python wrapper for the ERFA library (Essential Routines
-        for Fundamental Astronomy), a C library containing key algorithms for
-        astronomy, which is based on the SOFA library published by the
-        International Astronomical Union (IAU). All C routines are wrapped as
-        Numpy universal functions, so that they can be called with scalar or
-        array inputs.
+      PyERFA is the Python wrapper for the ERFA library (Essential Routines
+      for Fundamental Astronomy), a C library containing key algorithms for
+      astronomy, which is based on the SOFA library published by the
+      International Astronomical Union (IAU). All C routines are wrapped as
+      Numpy universal functions, so that they can be called with scalar or
+      array inputs.
     '';
     homepage = "https://github.com/liberfa/pyerfa";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/pyeverlights/default.nix b/pkgs/development/python-modules/pyeverlights/default.nix
index 22183ddcea285..dd9abeca4f313 100644
--- a/pkgs/development/python-modules/pyeverlights/default.nix
+++ b/pkgs/development/python-modules/pyeverlights/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyevilgenius/default.nix b/pkgs/development/python-modules/pyevilgenius/default.nix
index 079b1825440aa..40d48342e57e3 100644
--- a/pkgs/development/python-modules/pyevilgenius/default.nix
+++ b/pkgs/development/python-modules/pyevilgenius/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, async-timeout
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  async-timeout,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Project has no test
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyevilgenius"
-  ];
+  pythonImportsCheck = [ "pyevilgenius" ];
 
   meta = with lib; {
     description = "Python SDK to interact with Evil Genius Labs devices";
diff --git a/pkgs/development/python-modules/pyevmasm/default.nix b/pkgs/development/python-modules/pyevmasm/default.nix
index 581825f0d16b8..c683c93143b27 100644
--- a/pkgs/development/python-modules/pyevmasm/default.nix
+++ b/pkgs/development/python-modules/pyevmasm/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, future
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  future,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyevtk/default.nix b/pkgs/development/python-modules/pyevtk/default.nix
new file mode 100644
index 0000000000000..16081d1cc6138
--- /dev/null
+++ b/pkgs/development/python-modules/pyevtk/default.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  numpy,
+  pytestCheckHook,
+  pytest-cov,
+}:
+
+buildPythonPackage rec {
+  pname = "pyevtk";
+  version = "1.2.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "pyscience-projects";
+    repo = "pyevtk";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-HrodoVxjREZiutgRJ3ZUrART29+gAZfpR9f4A4SRh4Q=";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace-fail 'setup_requires=["pytest-runner"],' 'setup_requires=[],'
+  '';
+
+  build-system = [ setuptools ];
+  dependencies = [ numpy ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-cov
+  ];
+
+  pythonImportsCheck = [ "pyevtk" ];
+
+  meta = {
+    description = "Exports data to binary VTK files for visualization/analysis";
+    homepage = "https://github.com/pyscience-projects/pyevtk";
+    changelog = "https://github.com/pyscience-projects/pyevtk/blob/${src.rev}/CHANGES.txt";
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyexcel-io/default.nix b/pkgs/development/python-modules/pyexcel-io/default.nix
index 3c9dd3b09b87b..0bd4fdc27b795 100644
--- a/pkgs/development/python-modules/pyexcel-io/default.nix
+++ b/pkgs/development/python-modules/pyexcel-io/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, lml
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  lml,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-9ghL8a+l+/TGHPffRDcPpROCGvGIsC4+GbXvtm2Klp8=";
   };
 
-  propagatedBuildInputs = [
-    lml
-  ];
+  propagatedBuildInputs = [ lml ];
 
   # Tests depend on stuff that depends on this.
   doCheck = false;
@@ -30,6 +29,6 @@ buildPythonPackage rec {
     description = "One interface to read and write the data in various excel formats, import the data into and export the data from databases";
     homepage = "http://docs.pyexcel.org/";
     license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyexcel-ods/default.nix b/pkgs/development/python-modules/pyexcel-ods/default.nix
index 22339eb15bfec..8d0196473c09c 100644
--- a/pkgs/development/python-modules/pyexcel-ods/default.nix
+++ b/pkgs/development/python-modules/pyexcel-ods/default.nix
@@ -1,42 +1,58 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyexcel-io
-, odfpy
-, nose
-, pyexcel
-, pyexcel-xls
-, psutil
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  pyexcel-io,
+  odfpy,
+  pyexcel,
+  pyexcel-xls,
+  psutil,
+  pytestCheckHook,
+  pytest-cov-stub,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyexcel-ods";
   version = "0.6.0";
-  format = "setuptools";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "f61b56515fd4ccd4687f0a112422f74ce8535247ad2da49db90038d7e3ed397c";
+  src = fetchFromGitHub {
+    owner = "pyexcel";
+    repo = "pyexcel-ods";
+    rev = "v${version}";
+    hash = "sha256-wptjCSi56hotmiIE0TrLY7jsCHKwDR+a7d89sAQWBHg=";
   };
 
-  propagatedBuildInputs = [
+  patches = [
+    # https://github.com/pyexcel/pyexcel-ods/pull/45
+    (fetchpatch2 {
+      name = "nose-to-pytest.patch";
+      url = "https://github.com/pyexcel/pyexcel-ods/compare/661d4f0b484ed281128c72e1a2701e2d33fc1879...838b410e800a86c147644568aaa8b2c005d13491.patch";
+      hash = "sha256-1a52VM8yGDEjSFXTq3Di74xwv10d/QskpctOnz9zW1w=";
+    })
+  ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     pyexcel-io
     odfpy
   ];
 
   nativeCheckInputs = [
-    nose
+    pytestCheckHook
+    pytest-cov-stub
     pyexcel
     pyexcel-xls
     psutil
   ];
 
-  checkPhase = "nosetests";
-
   meta = {
     description = "Plug-in to pyexcel providing the capbility to read, manipulate and write data in ods formats using odfpy";
     homepage = "http://docs.pyexcel.org/";
     license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyexcel-xls/default.nix b/pkgs/development/python-modules/pyexcel-xls/default.nix
index 2188d25532ca9..c372ca08adf12 100644
--- a/pkgs/development/python-modules/pyexcel-xls/default.nix
+++ b/pkgs/development/python-modules/pyexcel-xls/default.nix
@@ -1,46 +1,61 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyexcel-io
-, xlrd
-, xlwt
-, nose
-, pyexcel
-, mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  pyexcel-io,
+  xlrd,
+  xlwt,
+  pyexcel,
+  pytestCheckHook,
+  pytest-cov,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyexcel-xls";
   version = "0.7.0";
-  format = "setuptools";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "5ec606ef8667aafbb0c3fbd8242a7c23bf175ee7c10b08f70799b84fb2db84cb";
+  src = fetchFromGitHub {
+    owner = "pyexcel";
+    repo = "pyexcel-xls";
+    rev = "v${version}";
+    hash = "sha256-wxsx/LfeBxi+NnHxfxk3svzsBcdwOiLQ1660eoHfmLg=";
   };
 
-  propagatedBuildInputs = [
+  patches = [
+    # https://github.com/pyexcel/pyexcel-xls/pull/54
+    (fetchpatch2 {
+      name = "nose-to-pytest.patch";
+      url = "https://github.com/pyexcel/pyexcel-xls/compare/d8953c8ff7dc9a4a3465f2cfc182acafa49f6ea2...9f0d48035114f73077dd0f109395af32b4d9d48b.patch";
+      hash = "sha256-2kVdN+kEYaJjXGzv9eudfKjRweMG0grTd5wnZXIDzUU=";
+      excludes = [ ".github/*" ];
+    })
+  ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     pyexcel-io
     xlrd
     xlwt
   ];
 
   nativeCheckInputs = [
-    nose
+    pytestCheckHook
     pyexcel
-    mock
+    pytest-cov
   ];
 
   postPatch = ''
     substituteInPlace setup.py --replace "xlrd<2" "xlrd<3"
   '';
 
-  checkPhase = "nosetests --exclude test_issue_151";
-
   meta = {
-    description = "A wrapper library to read, manipulate and write data in xls using xlrd and xlwt";
+    description = "Wrapper library to read, manipulate and write data in xls using xlrd and xlwt";
     homepage = "http://docs.pyexcel.org/";
     license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyexcel/default.nix b/pkgs/development/python-modules/pyexcel/default.nix
index 6c35f7b10af5f..404f29068affa 100644
--- a/pkgs/development/python-modules/pyexcel/default.nix
+++ b/pkgs/development/python-modules/pyexcel/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, chardet
-, lml
-, pyexcel-io
-, texttable
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  chardet,
+  lml,
+  pyexcel-io,
+  texttable,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     texttable
   ];
 
-  pythonImportsCheck = [
-    "pyexcel"
-  ];
+  pythonImportsCheck = [ "pyexcel" ];
 
   # Tests depend on pyexcel-xls & co. causing circular dependency.
   # https://github.com/pyexcel/pyexcel/blob/dev/tests/requirements.txt
@@ -39,6 +38,6 @@ buildPythonPackage rec {
     description = "Single API for reading, manipulating and writing data in csv, ods, xls, xlsx and xlsm files";
     homepage = "http://docs.pyexcel.org/";
     license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyexiftool/default.nix b/pkgs/development/python-modules/pyexiftool/default.nix
index e7240658ef330..36ed807a17bba 100644
--- a/pkgs/development/python-modules/pyexiftool/default.nix
+++ b/pkgs/development/python-modules/pyexiftool/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, exiftool
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  exiftool,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -27,21 +28,20 @@ buildPythonPackage rec {
                      'DEFAULT_EXECUTABLE = "${lib.getExe exiftool}"'
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   pythonImportsCheck = [ "exiftool" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = {
     changelog = "https://github.com/sylikc/pyexiftool/blob/${src.rev}/CHANGELOG.md";
     description = "Python wrapper for exiftool";
     homepage = "https://github.com/sylikc/pyexiftool";
-    license = with lib.licenses; [ bsd3 /* or */ gpl3Plus ];
+    license = with lib.licenses; [
+      bsd3 # or
+      gpl3Plus
+    ];
     maintainers = with lib.maintainers; [ dotlambda ];
   };
 }
diff --git a/pkgs/development/python-modules/pyexploitdb/default.nix b/pkgs/development/python-modules/pyexploitdb/default.nix
index c59205aa3f1a3..ed474ac2f9a95 100644
--- a/pkgs/development/python-modules/pyexploitdb/default.nix
+++ b/pkgs/development/python-modules/pyexploitdb/default.nix
@@ -1,26 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, gitpython
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  gitpython,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyexploitdb";
-  version = "0.2.9";
-  format = "setuptools";
+  version = "0.2.36";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     pname = "pyExploitDb";
     inherit version;
-    hash = "sha256-q16YB0lLlw9nXohcT20l41Bv40CqshWzE8nVBBSEppE=";
+    hash = "sha256-JezjKbCO75JFHLsDzk3zNMHO6Xpz2xTjecTfrXhgUiA=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     gitpython
     requests
   ];
@@ -28,14 +31,12 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyExploitDb"
-  ];
+  pythonImportsCheck = [ "pyExploitDb" ];
 
   meta = with lib; {
     description = "Library to fetch the most recent exploit-database";
     homepage = "https://github.com/GoVanguard/pyExploitDb";
-    changelog = "https://github.com/GoVanguard/pyExploitDb/blob/master/Changelog.txt";
+    changelog = "https://github.com/GoVanguard/pyExploitDb/blob/master/ChangeLog.md";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/pyezviz/default.nix b/pkgs/development/python-modules/pyezviz/default.nix
index 1f3f6662f386f..43fd100d7ce00 100644
--- a/pkgs/development/python-modules/pyezviz/default.nix
+++ b/pkgs/development/python-modules/pyezviz/default.nix
@@ -1,29 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, paho-mqtt
-, pandas
-, pycryptodome
-, pythonOlder
-, requests
-, xmltodict
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  paho-mqtt,
+  pandas,
+  pycryptodome,
+  pythonOlder,
+  requests,
+  setuptools,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
   pname = "pyezviz";
-  version = "0.2.2.3";
-  format = "setuptools";
+  version = "0.2.2.4";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "baqs";
     repo = "pyEzviz";
     rev = "refs/tags/${version}";
-    hash = "sha256-HZLWpoo0luAqqwLA3t7cDh0yVP6znrzMoUg7cuexd28=";
+    hash = "sha256-ngQu9g0qvJ3zDaTdGqJDGRoMhnGYdp5jHDoPiuXOwGs=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     paho-mqtt
     pandas
     pycryptodome
@@ -34,16 +38,14 @@ buildPythonPackage rec {
   # Project has no tests. test_cam_rtsp.py is more a sample for using the module
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyezviz"
-  ];
+  pythonImportsCheck = [ "pyezviz" ];
 
   meta = with lib; {
     description = "Python interface for for Ezviz cameras";
-    mainProgram = "pyezviz";
     homepage = "https://github.com/baqs/pyEzviz/";
     changelog = "https://github.com/BaQs/pyEzviz/releases/tag/${version}";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "pyezviz";
   };
 }
diff --git a/pkgs/development/python-modules/pyface/default.nix b/pkgs/development/python-modules/pyface/default.nix
index fd0f1409ca750..c93c7d266f5a2 100644
--- a/pkgs/development/python-modules/pyface/default.nix
+++ b/pkgs/development/python-modules/pyface/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, importlib-metadata
-, importlib-resources
-, setuptools
-, traits
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  importlib-metadata,
+  importlib-resources,
+  setuptools,
+  traits,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-fhNhg0e3pkjtIM29T9GlFkj1AQKR815OD/G/cKcgy/g=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     importlib-metadata
@@ -32,9 +31,7 @@ buildPythonPackage rec {
 
   doCheck = false; # Needs X server
 
-  pythonImportsCheck = [
-    "pyface"
-  ];
+  pythonImportsCheck = [ "pyface" ];
 
   meta = with lib; {
     description = "Traits-capable windowing framework";
diff --git a/pkgs/development/python-modules/pyfaidx/default.nix b/pkgs/development/python-modules/pyfaidx/default.nix
index 4999b1dcddf99..b3cb0f886bd71 100644
--- a/pkgs/development/python-modules/pyfaidx/default.nix
+++ b/pkgs/development/python-modules/pyfaidx/default.nix
@@ -1,39 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, importlib-metadata
-, nose
-, numpy
-, setuptools
-, setuptools-scm
-, six
-, glibcLocales
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  glibcLocales,
+  importlib-metadata,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "pyfaidx";
-  version = "0.8.1.1";
-  format = "pyproject";
+  version = "0.8.1.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-bwSCNSYZ8sxWADyiIyG9sNB2S2VnlbweQGKx+psIaGs=";
+    hash = "sha256-2EUkcEVbHnePk5aUR9uOok3rRiTHxAdpUWRZy2+HvDM=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    importlib-metadata
-    six
-  ];
+  dependencies = [ importlib-metadata ];
 
   nativeCheckInputs = [
     glibcLocales
-    nose
     numpy
     pytestCheckHook
   ];
@@ -43,15 +41,14 @@ buildPythonPackage rec {
     "tests/test_Fasta_bgzip.py"
   ];
 
-  pythonImportsCheck = [
-    "pyfaidx"
-  ];
+  pythonImportsCheck = [ "pyfaidx" ];
 
   meta = with lib; {
-    homepage = "https://github.com/mdshw5/pyfaidx";
     description = "Python classes for indexing, retrieval, and in-place modification of FASTA files using a samtools compatible index";
-    mainProgram = "faidx";
+    homepage = "https://github.com/mdshw5/pyfaidx";
+    changelog = "https://github.com/mdshw5/pyfaidx/releases/tag/v${version}";
     license = licenses.bsd3;
     maintainers = with maintainers; [ jbedo ];
+    mainProgram = "faidx";
   };
 }
diff --git a/pkgs/development/python-modules/pyfakefs/default.nix b/pkgs/development/python-modules/pyfakefs/default.nix
index c588607f5c126..0486b2b7f6651 100644
--- a/pkgs/development/python-modules/pyfakefs/default.nix
+++ b/pkgs/development/python-modules/pyfakefs/default.nix
@@ -1,51 +1,52 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-
-# build-system
-, setuptools
-
-# tests
-, pytestCheckHook
-, undefined
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+
+  # build-system
+  setuptools,
+
+  # tests
+  pandas,
+  pytestCheckHook,
+  undefined,
 }:
 
 buildPythonPackage rec {
   pname = "pyfakefs";
-  version = "5.3.5";
+  version = "5.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-fNxQCzWiFMt6YU4ZQFQ6zGZQ5pqUrHbjDzPJNzvZz5A=";
+    hash = "sha256-dEiqoHFC+JLQpOtSpe0yBqnwLGWZ5obNl9YkwYl5wVQ=";
   };
 
-  postPatch = ''
-    # test doesn't work in sandbox
-    substituteInPlace pyfakefs/tests/fake_filesystem_test.py \
-      --replace "test_expand_root" "notest_expand_root"
-    substituteInPlace pyfakefs/tests/fake_os_test.py \
-      --replace "test_path_links_not_resolved" "notest_path_links_not_resolved" \
-      --replace "test_append_mode_tell_linux_windows" "notest_append_mode_tell_linux_windows"
-  '' + (lib.optionalString stdenv.isDarwin ''
-    # this test fails on darwin due to case-insensitive file system
-    substituteInPlace pyfakefs/tests/fake_os_test.py \
-      --replace "test_rename_dir_to_existing_dir" "notest_rename_dir_to_existing_dir"
-  '');
-
-  nativeBuildInputs = [
-    setuptools
-  ];
-
-  pythonImportsCheck = [
-    "pyfakefs"
-  ];
+  postPatch =
+    ''
+      # test doesn't work in sandbox
+      substituteInPlace pyfakefs/tests/fake_filesystem_test.py \
+        --replace "test_expand_root" "notest_expand_root"
+      substituteInPlace pyfakefs/tests/fake_os_test.py \
+        --replace "test_path_links_not_resolved" "notest_path_links_not_resolved" \
+        --replace "test_append_mode_tell_linux_windows" "notest_append_mode_tell_linux_windows"
+    ''
+    + (lib.optionalString stdenv.hostPlatform.isDarwin ''
+      # this test fails on darwin due to case-insensitive file system
+      substituteInPlace pyfakefs/tests/fake_os_test.py \
+        --replace "test_rename_dir_to_existing_dir" "notest_rename_dir_to_existing_dir"
+    '');
+
+  nativeBuildInputs = [ setuptools ];
+
+  pythonImportsCheck = [ "pyfakefs" ];
 
   nativeCheckInputs = [
+    pandas
     pytestCheckHook
     undefined
   ];
diff --git a/pkgs/development/python-modules/pyfakewebcam/default.nix b/pkgs/development/python-modules/pyfakewebcam/default.nix
index 22e56a0a36c7a..681b06644ac59 100644
--- a/pkgs/development/python-modules/pyfakewebcam/default.nix
+++ b/pkgs/development/python-modules/pyfakewebcam/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, numpy, opencv4 }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  opencv4,
+}:
 
 buildPythonPackage rec {
   pname = "pyfakewebcam";
@@ -10,14 +16,17 @@ buildPythonPackage rec {
     sha256 = "152nglscxmv7600i1i2gahny5z0bybnqgq3npak8npb0lsnwxn1a";
   };
 
-  propagatedBuildInputs = [ numpy opencv4 ];
+  propagatedBuildInputs = [
+    numpy
+    opencv4
+  ];
 
   # No tests are available
   doCheck = false;
   pythonImportsCheck = [ "pyfakewebcam" ];
 
   meta = with lib; {
-    description = "A library for writing RGB frames to a fake webcam device on Linux";
+    description = "Library for writing RGB frames to a fake webcam device on Linux";
     homepage = "https://github.com/jremmons/pyfakewebcam";
     license = licenses.lgpl3Only;
     maintainers = with maintainers; [ emilytrau ];
diff --git a/pkgs/development/python-modules/pyfantom/default.nix b/pkgs/development/python-modules/pyfantom/default.nix
index 106bfa8d893f1..901a2be7484f7 100644
--- a/pkgs/development/python-modules/pyfantom/default.nix
+++ b/pkgs/development/python-modules/pyfantom/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchgit
+{
+  lib,
+  buildPythonPackage,
+  fetchgit,
 }:
 
 buildPythonPackage {
@@ -21,5 +22,4 @@ buildPythonPackage {
     description = "Wrapper for the LEGO Mindstorms Fantom Driver";
     license = licenses.gpl2;
   };
-
 }
diff --git a/pkgs/development/python-modules/pyfcm/default.nix b/pkgs/development/python-modules/pyfcm/default.nix
index 997c9e1863865..c65ead3e790b3 100644
--- a/pkgs/development/python-modules/pyfcm/default.nix
+++ b/pkgs/development/python-modules/pyfcm/default.nix
@@ -1,26 +1,38 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, requests
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  requests,
+  urllib3,
+  google-auth,
 }:
 
 buildPythonPackage rec {
   pname = "pyfcm";
-  version = "1.4.8";
-  format = "setuptools";
+  version = "2.0.1";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "olucurious";
     repo = "pyfcm";
-    rev = version;
-    sha256 = "15q6p21wsjm75ccmzcsgad1w9fgk6189hbrp7pawpxl7l3qxn2p7";
+    rev = "refs/tags/${version}";
+    hash = "sha256-lpSbb0DDXLHne062s7g27zRpvTuOHiqQkqGOtWvuWdI=";
   };
 
-  propagatedBuildInputs = [ requests ];
+  build-system = [ setuptools ];
+
+  dependencies = [
+    requests
+    urllib3
+    google-auth
+  ];
 
   # pyfcm's unit testing suite requires network access
   doCheck = false;
 
+  pythonImportsCheck = [ "pyfcm" ];
+
   meta = with lib; {
     description = "Python client for FCM - Firebase Cloud Messaging (Android, iOS and Web)";
     homepage = "https://github.com/olucurious/pyfcm";
diff --git a/pkgs/development/python-modules/pyfftw/default.nix b/pkgs/development/python-modules/pyfftw/default.nix
deleted file mode 100644
index cf5573c8c2b9b..0000000000000
--- a/pkgs/development/python-modules/pyfftw/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi
-, fftw, fftwFloat, fftwLongDouble, numpy, scipy, cython_0, dask }:
-
-buildPythonPackage rec {
-  version = "0.13.1";
-  pname = "pyFFTW";
-
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-CRVekKDG0MHy0fNmgYCn3pX7n4P+9RN6ES+wWXjocyA=";
-  };
-
-  preConfigure = ''
-    export LDFLAGS="-L${fftw.out}/lib -L${fftwFloat.out}/lib -L${fftwLongDouble.out}/lib"
-    export CFLAGS="-I${fftw.dev}/include -I${fftwFloat.dev}/include -I${fftwLongDouble.dev}/include"
-  '';
-
-  buildInputs = [ fftw fftwFloat fftwLongDouble];
-
-  propagatedBuildInputs = [ numpy scipy cython_0 dask ];
-
-  # Tests cannot import pyfftw. pyfftw works fine though.
-  doCheck = false;
-  pythonImportsCheck = [ "pyfftw" ];
-
-  meta = with lib; {
-    description = "A pythonic wrapper around FFTW, the FFT library, presenting a unified interface for all the supported transforms";
-    homepage = "http://hgomersall.github.com/pyFFTW/";
-    license = with licenses; [ bsd2 bsd3 ];
-  };
-}
diff --git a/pkgs/development/python-modules/pyfido/default.nix b/pkgs/development/python-modules/pyfido/default.nix
index 8a092e7e934d8..af48a98473019 100644
--- a/pkgs/development/python-modules/pyfido/default.nix
+++ b/pkgs/development/python-modules/pyfido/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyfiglet/default.nix b/pkgs/development/python-modules/pyfiglet/default.nix
index 4226fca32f7f7..a236951c493c3 100644
--- a/pkgs/development/python-modules/pyfiglet/default.nix
+++ b/pkgs/development/python-modules/pyfiglet/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   version = "1.0.2";
@@ -7,7 +11,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-dYeIAYq4+q3cCYTh6gX/Mw08ZL5mPFE8wfEF9qMGbas=";
+    hash = "sha256-dYeIAYq4+q3cCYTh6gX/Mw08ZL5mPFE8wfEF9qMGbas=";
   };
 
   doCheck = false;
@@ -15,7 +19,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "FIGlet in pure Python";
     mainProgram = "pyfiglet";
-    license     = licenses.gpl2Plus;
+    license = licenses.gpl2Plus;
     maintainers = with maintainers; [ thoughtpolice ];
   };
 }
diff --git a/pkgs/development/python-modules/pyfireservicerota/default.nix b/pkgs/development/python-modules/pyfireservicerota/default.nix
index fcdfdd0442d48..4042c0a235c53 100644
--- a/pkgs/development/python-modules/pyfireservicerota/default.nix
+++ b/pkgs/development/python-modules/pyfireservicerota/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, fetchpatch2
-, pdm-backend
-, pytz
-, oauthlib
-, requests
-, websocket-client
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  pdm-backend,
+  pytz,
+  oauthlib,
+  requests,
+  websocket-client,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +29,7 @@ buildPythonPackage rec {
       --replace-fail '"aiohttp_retry",' ""
   '';
 
-  nativeBuildInputs = [
-    pdm-backend
-  ];
+  nativeBuildInputs = [ pdm-backend ];
 
   propagatedBuildInputs = [
     pytz
diff --git a/pkgs/development/python-modules/pyflakes/default.nix b/pkgs/development/python-modules/pyflakes/default.nix
index fab3c7d789b2e..aaf9e961cb23b 100644
--- a/pkgs/development/python-modules/pyflakes/default.nix
+++ b/pkgs/development/python-modules/pyflakes/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,20 +22,16 @@ buildPythonPackage rec {
     hash = "sha256-ouCkkm9OrYob00uLTilqgWsTWfHhzaiZp7sa2C5liqk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "pyflakes" ];
 
   meta = with lib; {
     homepage = "https://github.com/PyCQA/pyflakes";
     changelog = "https://github.com/PyCQA/pyflakes/blob/${src.rev}/NEWS.rst";
-    description = "A simple program which checks Python source files for errors";
+    description = "Simple program which checks Python source files for errors";
     mainProgram = "pyflakes";
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/pkgs/development/python-modules/pyflexit/default.nix b/pkgs/development/python-modules/pyflexit/default.nix
index 6f1f582a931dd..22190d150b407 100644
--- a/pkgs/development/python-modules/pyflexit/default.nix
+++ b/pkgs/development/python-modules/pyflexit/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyflic/default.nix b/pkgs/development/python-modules/pyflic/default.nix
index 4ac6d735742e4..09b80a3aaf145 100644
--- a/pkgs/development/python-modules/pyflic/default.nix
+++ b/pkgs/development/python-modules/pyflic/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pyflic";
-  version = "2.0.3";
+  version = "2.0.4";
   format = "setuptools";
   disabled = pythonOlder "3.7";
 
@@ -14,7 +15,7 @@ buildPythonPackage rec {
     owner = "soldag";
     repo = pname;
     rev = version;
-    sha256 = "0adf4k191138jmbsfhkhhbgaxcq97d1hr5w48ryxr1fig64sjqy2";
+    sha256 = "sha256-K1trMBZfc1aHSNSddq0v//Gv8ySgT/ONQYgrKWzw2qs=";
   };
 
   # Projec thas no tests
diff --git a/pkgs/development/python-modules/pyflick/default.nix b/pkgs/development/python-modules/pyflick/default.nix
index 437f084748732..f9f7f084e0be1 100644
--- a/pkgs/development/python-modules/pyflick/default.nix
+++ b/pkgs/development/python-modules/pyflick/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, aiohttp
-, python-dateutil
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  aiohttp,
+  python-dateutil,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyfluidsynth/default.nix b/pkgs/development/python-modules/pyfluidsynth/default.nix
index f037b3c4badac..838ecd29dbfab 100644
--- a/pkgs/development/python-modules/pyfluidsynth/default.nix
+++ b/pkgs/development/python-modules/pyfluidsynth/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, wheel
-, numpy
-, fluidsynth
-, stdenv
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  wheel,
+  numpy,
+  fluidsynth,
+  stdenv,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   pythonImportsCheck = [ "fluidsynth" ];
 
diff --git a/pkgs/development/python-modules/pyflume/default.nix b/pkgs/development/python-modules/pyflume/default.nix
index 4a49c8160a252..e838e7c2159e4 100644
--- a/pkgs/development/python-modules/pyflume/default.nix
+++ b/pkgs/development/python-modules/pyflume/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, pyjwt
-, ratelimit
-, requests
-, requests-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  pyjwt,
+  ratelimit,
+  requests,
+  requests-mock,
 }:
 
 buildPythonPackage rec {
   pname = "pyflume";
-  version = "0.8.3";
+  version = "0.8.7";
   format = "setuptools";
 
   disabled = pythonOlder "3.10";
@@ -20,7 +21,7 @@ buildPythonPackage rec {
     owner = "ChrisMandich";
     repo = "PyFlume";
     rev = "refs/tags/v${version}";
-    hash = "sha256-RtzbAXjMtvKc8vnZIxIJnc6CS+BrYcQgdy5bVaJumg0=";
+    hash = "sha256-/8gLKe+6GaPQe0J3YBmOVcAcAcqfrWM7UQCoX+qOEmw=";
   };
 
   propagatedBuildInputs = [
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pyflume"
-  ];
+  pythonImportsCheck = [ "pyflume" ];
 
   meta = with lib; {
     description = "Python module to work with Flume sensors";
diff --git a/pkgs/development/python-modules/pyfma/default.nix b/pkgs/development/python-modules/pyfma/default.nix
index e0934dc34b89a..ab6444efebaad 100644
--- a/pkgs/development/python-modules/pyfma/default.nix
+++ b/pkgs/development/python-modules/pyfma/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, importlib-metadata
-, numpy
-, pybind11
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  importlib-metadata,
+  numpy,
+  pybind11,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,23 +23,13 @@ buildPythonPackage rec {
     sha256 = "12i68jj9n1qj9phjnj6f0kmfhlsd3fqjlk9p6d4gs008azw5m8yn";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  buildInputs = [
-    pybind11
-  ];
+  buildInputs = [ pybind11 ];
 
-  propagatedBuildInputs = [
-    numpy
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  propagatedBuildInputs = [ numpy ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "pyfma" ];
 
@@ -46,6 +37,6 @@ buildPythonPackage rec {
     description = "Fused multiply-add for Python";
     homepage = "https://github.com/nschloe/pyfma";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyfnip/default.nix b/pkgs/development/python-modules/pyfnip/default.nix
index 0dca398df7ccd..fd829efbbd83d 100644
--- a/pkgs/development/python-modules/pyfnip/default.nix
+++ b/pkgs/development/python-modules/pyfnip/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyformlang/default.nix b/pkgs/development/python-modules/pyformlang/default.nix
index 1f25eac53a9f1..8747d55313eb0 100644
--- a/pkgs/development/python-modules/pyformlang/default.nix
+++ b/pkgs/development/python-modules/pyformlang/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, networkx
-, numpy
-, pydot
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  networkx,
+  numpy,
+  pydot,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -33,13 +34,9 @@ buildPythonPackage rec {
     pydot
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyformlang"
-  ];
+  pythonImportsCheck = [ "pyformlang" ];
 
   meta = with lib; {
     description = "Framework for formal grammars";
diff --git a/pkgs/development/python-modules/pyfreedompro/default.nix b/pkgs/development/python-modules/pyfreedompro/default.nix
index 9a18a3f849943..bbb4766547144 100644
--- a/pkgs/development/python-modules/pyfreedompro/default.nix
+++ b/pkgs/development/python-modules/pyfreedompro/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, aiohttp
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  aiohttp,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     sha256 = "92812070a0c74761fa0c8cac98ddbe0bca781c8de80e2b08dbd04492e831c172";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # upstream has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/pyfribidi/default.nix b/pkgs/development/python-modules/pyfribidi/default.nix
index a47dff1326458..59aef896beeec 100644
--- a/pkgs/development/python-modules/pyfribidi/default.nix
+++ b/pkgs/development/python-modules/pyfribidi/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, isPyPy
-, six
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,8 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ six ];
 
   meta = with lib; {
-    description = "A simple wrapper around fribidi";
+    description = "Simple wrapper around fribidi";
     homepage = "https://github.com/pediapress/pyfribidi";
     license = licenses.gpl2;
   };
-
 }
diff --git a/pkgs/development/python-modules/pyfritzhome/default.nix b/pkgs/development/python-modules/pyfritzhome/default.nix
index 4118e780d3d0b..865bf8832fa95 100644
--- a/pkgs/development/python-modules/pyfritzhome/default.nix
+++ b/pkgs/development/python-modules/pyfritzhome/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyfritzhome";
-  version = "0.6.11";
+  version = "0.6.12";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -19,25 +20,19 @@ buildPythonPackage rec {
     owner = "hthiery";
     repo = "python-fritzhome";
     rev = "refs/tags/${version}";
-    hash = "sha256-YzrRkFa4J3NXdc4W5CHrHvqSVJ8yBGtaf6gRqmiY7gI=";
+    hash = "sha256-L+9CjSXJrPmlLif1SYfJr6C76IufUzj9FHSGQO78Vsw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     cryptography
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyfritzhome"
-  ];
+  pythonImportsCheck = [ "pyfritzhome" ];
 
   meta = with lib; {
     description = "Python Library to access AVM FRITZ!Box homeautomation";
diff --git a/pkgs/development/python-modules/pyfronius/default.nix b/pkgs/development/python-modules/pyfronius/default.nix
index 7176e6f48d451..c5cf2f3512b10 100644
--- a/pkgs/development/python-modules/pyfronius/default.nix
+++ b/pkgs/development/python-modules/pyfronius/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -17,31 +18,25 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "nielstron";
     repo = "pyfronius";
-    rev = "release-${version}";
+    rev = "refs/tags/release-${version}";
     hash = "sha256-7GtY/6uuLe7K9T7xMVt2ytpA6MKVWnyEoLtA5dSMiH4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  dependencies = [ aiohttp ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyfronius"
-  ];
+  pythonImportsCheck = [ "pyfronius" ];
 
   meta = with lib; {
     description = "Python module to communicate with Fronius Symo";
     homepage = "https://github.com/nielstron/pyfronius";
     changelog = "https://github.com/nielstron/pyfronius/releases/tag/release-${version}";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    # https://github.com/nielstron/pyfronius/issues/18
+    broken = versionAtLeast aiohttp.version "3.10.1";
   };
 }
diff --git a/pkgs/development/python-modules/pyftgl/default.nix b/pkgs/development/python-modules/pyftgl/default.nix
index 822c040c7e746..4dd6aa9b6dd64 100644
--- a/pkgs/development/python-modules/pyftgl/default.nix
+++ b/pkgs/development/python-modules/pyftgl/default.nix
@@ -1,12 +1,19 @@
-{ lib, buildPythonPackage, fetchFromGitHub
-, boost, freetype, ftgl, libGLU, libGL
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  stdenv,
+  boost,
+  freetype,
+  ftgl,
+  libGLU,
+  libGL,
+  python,
 }:
 
 let
 
   pythonVersion = with lib.versions; "${major python.version}${minor python.version}";
-
 in
 
 buildPythonPackage rec {
@@ -25,7 +32,17 @@ buildPythonPackage rec {
     sed -i "s,'boost_python','boost_python${pythonVersion}',g" setup.py
   '';
 
-  buildInputs = [ boost freetype ftgl libGLU libGL ];
+  env = lib.optionalAttrs stdenv.hostPlatform.isDarwin {
+    NIX_CFLAGS_COMPILE = "-L${libGL}/Library/Frameworks/OpenGL.framework/Versions/Current/Libraries";
+  };
+
+  buildInputs = [
+    boost
+    freetype
+    ftgl
+    libGLU
+    libGL
+  ];
 
   meta = with lib; {
     description = "Python bindings for FTGL (FreeType for OpenGL)";
diff --git a/pkgs/development/python-modules/pyftpdlib/default.nix b/pkgs/development/python-modules/pyftpdlib/default.nix
index e154e6f9a1a8a..efe1c179777b9 100644
--- a/pkgs/development/python-modules/pyftpdlib/default.nix
+++ b/pkgs/development/python-modules/pyftpdlib/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "pyftpdlib";
-  version = "1.5.9";
+  version = "1.5.10";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Mj1MQvFAau203xj69oD2TzLAgP9m9sJgkLpZL1v8Sg8=";
+    hash = "sha256-jb3rEhW8ui+3SNrjH/2xqwCFQMKNE7NwThePNooIcSg=";
   };
 
   build-system = [ setuptools ];
@@ -46,7 +46,7 @@ buildPythonPackage rec {
     homepage = "https://github.com/giampaolo/pyftpdlib/";
     changelog = "https://github.com/giampaolo/pyftpdlib/blob/release-${version}/HISTORY.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     mainProgram = "ftpbench";
   };
 }
diff --git a/pkgs/development/python-modules/pyfttt/default.nix b/pkgs/development/python-modules/pyfttt/default.nix
index e630fe2c41507..f31759aedc752 100644
--- a/pkgs/development/python-modules/pyfttt/default.nix
+++ b/pkgs/development/python-modules/pyfttt/default.nix
@@ -1,5 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi
-, requests }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+}:
 
 buildPythonPackage rec {
   pname = "pyfttt";
diff --git a/pkgs/development/python-modules/pyfume/default.nix b/pkgs/development/python-modules/pyfume/default.nix
index 5f3db44b0f114..b79bf238d48cf 100644
--- a/pkgs/development/python-modules/pyfume/default.nix
+++ b/pkgs/development/python-modules/pyfume/default.nix
@@ -1,31 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fst-pso
-, numpy
-, pandas
-, pythonOlder
-, scipy
-, setuptools
-, simpful
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fst-pso,
+  numpy,
+  pandas,
+  pythonOlder,
+  scipy,
+  setuptools,
+  simpful,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "pyfume";
-  version = "0.3.1";
+  version = "0.3.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    pname = "pyFUME";
-    inherit version;
-    hash = "sha256-8J9qhSaTlb/KiCjegmc8iaGaZOXJ0Pk1EquOTEUUtW0=";
+    inherit pname version;
+    hash = "sha256-UwW5OwFfu01lDKwz72iB2egbOoxb+t8UnEFIUjZmffU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
+  nativeBuildInputs = [ setuptools ];
+
+  pythonRelaxDeps = [
+    "numpy"
+    "pandas"
+    "scipy"
   ];
 
   propagatedBuildInputs = [
@@ -40,12 +44,10 @@ buildPythonPackage rec {
   # Module has not test
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyfume"
-  ];
+  pythonImportsCheck = [ "pyfume" ];
 
   meta = with lib; {
-    description = "A Python package for fuzzy model estimation";
+    description = "Python package for fuzzy model estimation";
     homepage = "https://github.com/CaroFuchs/pyFUME";
     changelog = "https://github.com/CaroFuchs/pyFUME/releases/tag/${version}";
     license = with licenses; [ gpl3Only ];
diff --git a/pkgs/development/python-modules/pyfunctional/default.nix b/pkgs/development/python-modules/pyfunctional/default.nix
new file mode 100644
index 0000000000000..1e4039cc54526
--- /dev/null
+++ b/pkgs/development/python-modules/pyfunctional/default.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  dill,
+  tabulate,
+}:
+
+buildPythonPackage rec {
+  pname = "pyfunctional";
+  version = "1.4.3";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "EntilZha";
+    repo = "PyFunctional";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-utUmHQw7Y5pQJkwuy8CbPnCrAd/esaf0n1Exr/trcRg=";
+  };
+
+  build-system = [ poetry-core ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail poetry.masonry.api poetry.core.masonry.api \
+      --replace-fail "poetry>=" "poetry-core>="
+  '';
+
+  dependencies = [
+    dill
+    tabulate
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+  pythonImportsCheck = [ "functional" ];
+
+  meta = {
+    description = "Python library for creating data pipelines with chain functional programming";
+    homepage = "https://github.com/EntilZha/PyFunctional";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyfuse3/default.nix b/pkgs/development/python-modules/pyfuse3/default.nix
index 851b37bbfb9ca..27cc23a317745 100644
--- a/pkgs/development/python-modules/pyfuse3/default.nix
+++ b/pkgs/development/python-modules/pyfuse3/default.nix
@@ -1,47 +1,48 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, cython
-, pkg-config
-, setuptools
-, fuse3
-, trio
-, python
-, pytestCheckHook
-, pytest-trio
-, which
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  cython,
+  pkg-config,
+  setuptools,
+  fuse3,
+  trio,
+  python,
+  pytestCheckHook,
+  pytest-trio,
+  which,
 }:
 
 buildPythonPackage rec {
   pname = "pyfuse3";
-  version = "3.3.0";
+  version = "3.4.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  format = "pyproject";
-
   src = fetchFromGitHub {
     owner = "libfuse";
     repo = "pyfuse3";
     rev = "refs/tags/${version}";
-    hash = "sha256-GLGuTFdTA16XnXKSBD7ET963a8xH9EG/JfPNu6/3DOg=";
+    hash = "sha256-J4xHiaV8GCtUQ9GJS8YRXpMsuzuwbtnzspvuIonHT24=";
   };
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "'pkg-config'" "'$(command -v $PKG_CONFIG)'"
+      --replace-fail "'pkg-config'" "'$(command -v $PKG_CONFIG)'"
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     cython
-    pkg-config
     setuptools
   ];
 
+  nativeBuildInputs = [ pkg-config ];
+
   buildInputs = [ fuse3 ];
 
-  propagatedBuildInputs = [ trio ];
+  dependencies = [ trio ];
 
   preBuild = ''
     ${python.pythonOnBuildForHost.interpreter} setup.py build_cython
@@ -66,7 +67,10 @@ buildPythonPackage rec {
     description = "Python 3 bindings for libfuse 3 with async I/O support";
     homepage = "https://github.com/libfuse/pyfuse3";
     license = licenses.lgpl2Plus;
-    maintainers = with maintainers; [ nyanloutre dotlambda ];
+    maintainers = with maintainers; [
+      nyanloutre
+      dotlambda
+    ];
     changelog = "https://github.com/libfuse/pyfuse3/blob/${version}/Changes.rst";
   };
 }
diff --git a/pkgs/development/python-modules/pyfwup/default.nix b/pkgs/development/python-modules/pyfwup/default.nix
new file mode 100644
index 0000000000000..ae3bb2ca109be
--- /dev/null
+++ b/pkgs/development/python-modules/pyfwup/default.nix
@@ -0,0 +1,52 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyusb,
+  tqdm,
+  libusb1,
+  setuptools,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "pyfwup";
+  version = "0.5.2";
+
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "greatscottgadgets";
+    repo = "pyfwup";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Kyc3f8beTg0W1+U7SvZuNPN1pdsco9rBUfoEtR7AI44=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail '"setuptools-git-versioning<2"' "" \
+      --replace-fail 'dynamic = ["version"]' 'version = "${version}"'
+  '';
+
+  dependencies = [
+    pyusb
+    tqdm
+    libusb1
+  ];
+
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [
+    "fwup"
+    "fwup_utils"
+  ];
+
+  meta = {
+    description = "Python FirmWare UPgrader";
+    homepage = "https://github.com/greatscottgadgets/pyfwup";
+    license = lib.licenses.bsd3;
+    maintainers = [ lib.maintainers.msanft ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyfxa/default.nix b/pkgs/development/python-modules/pyfxa/default.nix
index 39794d592103c..5f5ba161f5e78 100644
--- a/pkgs/development/python-modules/pyfxa/default.nix
+++ b/pkgs/development/python-modules/pyfxa/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchPypi
-, grequests
-, hawkauthlib
-, mock
-, pybrowserid
-, pyjwt
-, pytestCheckHook
-, pythonOlder
-, requests
-, responses
-, setuptools
-, six
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  grequests,
+  hawkauthlib,
+  mock,
+  pybrowserid,
+  pyjwt,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  responses,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "pyfxa";
   version = "0.7.8";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -28,7 +29,9 @@ buildPythonPackage rec {
     hash = "sha256-DMFZl1hbYNaScOTWkAbK2nKti6wD5SS5A30q7TW5vO4=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     cryptography
     hawkauthlib
     pybrowserid
@@ -45,9 +48,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "fxa"
-  ];
+  pythonImportsCheck = [ "fxa" ];
 
   disabledTestPaths = [
     # Requires network access
@@ -60,6 +61,6 @@ buildPythonPackage rec {
     mainProgram = "fxa-client";
     homepage = "https://github.com/mozilla/PyFxA";
     license = licenses.mpl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyfzf/default.nix b/pkgs/development/python-modules/pyfzf/default.nix
index 3578f863fa483..296d2d11670e2 100644
--- a/pkgs/development/python-modules/pyfzf/default.nix
+++ b/pkgs/development/python-modules/pyfzf/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fzf
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fzf,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-w+ZjQGFd/lR2TiTHc2uQSJXORmzJJZXsr9BO4PIw/Co=";
   };
 
-  propagatedBuildInputs = [
-    fzf
-  ];
+  propagatedBuildInputs = [ fzf ];
 
-  pythonImportsCheck = [
-    "pyfzf"
-  ];
+  pythonImportsCheck = [ "pyfzf" ];
 
   # Module has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/pygal/default.nix b/pkgs/development/python-modules/pygal/default.nix
index 6defbca5e5df3..c16eae5e8e513 100644
--- a/pkgs/development/python-modules/pygal/default.nix
+++ b/pkgs/development/python-modules/pygal/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, importlib-metadata
+  # dependencies
+  importlib-metadata,
 
-# optional-dependencies
-, lxml
-, cairosvg
+  # optional-dependencies
+  lxml,
+  cairosvg,
 
-# tests
-, pyquery
-, pytestCheckHook
+  # tests
+  pyquery,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -32,13 +33,9 @@ buildPythonPackage rec {
       --replace pytest-runner ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    importlib-metadata
-  ];
+  propagatedBuildInputs = [ importlib-metadata ];
 
   passthru.optional-dependencies = {
     lxml = [ lxml ];
@@ -62,6 +59,6 @@ buildPythonPackage rec {
     mainProgram = "pygal_gen.py";
     homepage = "http://www.pygal.org";
     license = licenses.lgpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pygame-ce/default.nix b/pkgs/development/python-modules/pygame-ce/default.nix
index a476ecd58b850..5c9e2432c822f 100644
--- a/pkgs/development/python-modules/pygame-ce/default.nix
+++ b/pkgs/development/python-modules/pygame-ce/default.nix
@@ -1,39 +1,43 @@
-{ stdenv
-, lib
-, substituteAll
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
-, python
-, pkg-config
-, setuptools
-, cython
-
-, AppKit
-, fontconfig
-, freetype
-, libjpeg
-, libpng
-, libX11
-, portmidi
-, SDL2
-, SDL2_image
-, SDL2_mixer
-, SDL2_ttf
+{
+  stdenv,
+  lib,
+  substituteAll,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  python,
+  pkg-config,
+  setuptools,
+  cython,
+  ninja,
+  meson-python,
+
+  AppKit,
+  fontconfig,
+  freetype,
+  libjpeg,
+  libpng,
+  libX11,
+  portmidi,
+  SDL2,
+  SDL2_image,
+  SDL2_mixer,
+  SDL2_ttf,
+  numpy,
 }:
 
 buildPythonPackage rec {
   pname = "pygame-ce";
-  version = "2.4.1";
+  version = "2.5.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "pygame-community";
     repo = "pygame-ce";
     rev = "refs/tags/${version}";
-    hash = "sha256-4Ky+QEUsQ0odcwEETk0yGECs7CcJQthhavboOnMDvF8=";
+    hash = "sha256-bt/6ukXZU79CWFqov9JON9ktQ/c4NKLxhX4Jif3Enxs=";
     # Unicode file cause different checksums on HFS+ vs. other filesystems
     postFetch = "rm -rf $out/docs/reST";
   };
@@ -41,35 +45,51 @@ buildPythonPackage rec {
   patches = [
     (substituteAll {
       src = ./fix-dependency-finding.patch;
-      buildinputs_include = builtins.toJSON (builtins.concatMap (dep: [
-        "${lib.getDev dep}/"
-        "${lib.getDev dep}/include"
-        "${lib.getDev dep}/include/SDL2"
-      ]) buildInputs);
-      buildinputs_lib = builtins.toJSON (builtins.concatMap (dep: [
-        "${lib.getLib dep}/"
-        "${lib.getLib dep}/lib"
-      ]) buildInputs);
+      buildinputs_include = builtins.toJSON (
+        builtins.concatMap (dep: [
+          "${lib.getDev dep}/"
+          "${lib.getDev dep}/include"
+          "${lib.getDev dep}/include/SDL2"
+        ]) buildInputs
+      );
+      buildinputs_lib = builtins.toJSON (
+        builtins.concatMap (dep: [
+          "${lib.getLib dep}/"
+          "${lib.getLib dep}/lib"
+        ]) buildInputs
+      );
     })
     # Skip tests that should be disabled without video driver
     ./skip-surface-tests.patch
   ];
 
-  postPatch = ''
-    substituteInPlace buildconfig/config_{unix,darwin}.py \
-      --replace-fail 'from distutils' 'from setuptools._distutils'
-    substituteInPlace src_py/sysfont.py \
-      --replace-fail 'path="fc-list"' 'path="${fontconfig}/bin/fc-list"' \
-      --replace-fail /usr/X11/bin/fc-list ${fontconfig}/bin/fc-list
-  '' + lib.optionalString stdenv.isDarwin ''
-    # flaky
-    rm test/system_test.py
-  '';
+  postPatch =
+    ''
+      # cython was pinned to fix windows build hangs (pygame-community/pygame-ce/pull/3015)
+      substituteInPlace pyproject.toml \
+        --replace-fail '"cython<=3.0.10",' '"cython",' \
+        --replace-fail '"meson<=1.5.0",' '"meson",' \
+        --replace-fail '"sphinx<=7.2.6",' "" \
+        --replace-fail '"ninja<=1.11.1.1",' ""
+      substituteInPlace buildconfig/config_{unix,darwin}.py \
+        --replace-fail 'from distutils' 'from setuptools._distutils'
+      substituteInPlace src_py/sysfont.py \
+        --replace-fail 'path="fc-list"' 'path="${fontconfig}/bin/fc-list"' \
+        --replace-fail /usr/X11/bin/fc-list ${fontconfig}/bin/fc-list
+    ''
+    + lib.optionalString stdenv.hostPlatform.isDarwin ''
+      # flaky
+      rm test/system_test.py
+      substituteInPlace test/meson.build \
+        --replace-fail "'system_test.py'," ""
+    '';
 
   nativeBuildInputs = [
     pkg-config
     cython
     setuptools
+    ninja
+    meson-python
   ];
 
   buildInputs = [
@@ -82,19 +102,24 @@ buildPythonPackage rec {
     SDL2_image
     SDL2_mixer
     SDL2_ttf
-  ] ++ lib.optionals stdenv.isDarwin [
-    AppKit
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ AppKit ];
+
+  nativeCheckInputs = [
+    numpy
   ];
 
+
   preConfigure = ''
-    ${python.pythonOnBuildForHost.interpreter} buildconfig/config.py
+    ${python.pythonOnBuildForHost.interpreter} -m buildconfig.config
   '';
 
-  env = {
-    SDL_CONFIG = "${SDL2.dev}/bin/sdl2-config";
-  } // lib.optionalAttrs stdenv.cc.isClang {
-    NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-function-pointer-types";
-  };
+  env =
+    {
+      SDL_CONFIG = "${SDL2.dev}/bin/sdl2-config";
+    }
+    // lib.optionalAttrs stdenv.cc.isClang {
+      NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-function-pointer-types";
+    };
 
   preCheck = ''
     export HOME=$(mktemp -d)
@@ -111,11 +136,25 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [
     "pygame"
+    "pygame.camera"
+    "pygame.colordict"
+    "pygame.cursors"
+    "pygame.freetype"
+    "pygame.ftfont"
+    "pygame.locals"
+    "pygame.midi"
+    "pygame.pkgdata"
+    "pygame.sndarray" # requires numpy
+    "pygame.sprite"
+    "pygame.surfarray"
+    "pygame.sysfont"
+    "pygame.version"
   ];
 
   meta = with lib; {
     description = "Pygame Community Edition (CE) - library for multimedia application built on SDL";
     homepage = "https://pyga.me/";
+    changelog = "https://github.com/pygame-community/pygame-ce/releases/tag/${version}";
     license = licenses.lgpl21Plus;
     maintainers = with maintainers; [ pbsds ];
     platforms = platforms.unix;
diff --git a/pkgs/development/python-modules/pygame-gui/default.nix b/pkgs/development/python-modules/pygame-gui/default.nix
index e74448a30768d..5906a6f9a9cb1 100644
--- a/pkgs/development/python-modules/pygame-gui/default.nix
+++ b/pkgs/development/python-modules/pygame-gui/default.nix
@@ -1,16 +1,18 @@
-{ lib
-, pkgs
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pygame-ce
-, python-i18n
-, pytestCheckHook
+{
+  lib,
+  pkgs,
+  buildPythonPackage,
+  nix-update-script,
+  fetchFromGitHub,
+  setuptools,
+  pygame-ce,
+  python-i18n,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pygame-gui";
-  version = "0610";
+  version = "0612";
   pyproject = true;
   # nixpkgs-update: no auto update
 
@@ -18,12 +20,10 @@ buildPythonPackage rec {
     owner = "MyreMylar";
     repo = "pygame_gui";
     rev = "refs/tags/v_${version}";
-    hash = "sha256-PVNi/I174AyEEjc+N2UGtgOYSGAgVQbqrKkWZnjOxFY=";
+    hash = "sha256-6Ps3pmQ8tYwQyv0TliOvUNLy3GjSJ2jdDQTTxfYej0o=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     pygame-ce
@@ -55,14 +55,19 @@ buildPythonPackage rec {
     "test_process_event_text_ctrl_x"
   ];
 
-  disabledTestPaths = [
-    "tests/test_performance/test_text_performance.py"
-  ];
+  disabledTestPaths = [ "tests/test_performance/test_text_performance.py" ];
+
+  passthru.updateScript = nix-update-script {
+    extraArgs = [ "--version-regex" "v_(.*)" ];
+  };
 
   meta = with lib; {
-    description = "A GUI system for pygame";
+    description = "GUI system for pygame";
     homepage = "https://github.com/MyreMylar/pygame_gui";
     license = with licenses; [ mit ];
-    maintainers = with maintainers; [ emilytrau pbsds ];
+    maintainers = with maintainers; [
+      emilytrau
+      pbsds
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pygame-sdl2/default.nix b/pkgs/development/python-modules/pygame-sdl2/default.nix
index 0201c9cb4a8a0..43ce26585f30e 100644
--- a/pkgs/development/python-modules/pygame-sdl2/default.nix
+++ b/pkgs/development/python-modules/pygame-sdl2/default.nix
@@ -1,16 +1,32 @@
-{ lib, buildPythonPackage, fetchurl, isPy27, renpy
-, cython_0, SDL2, SDL2_image, SDL2_ttf, SDL2_mixer, libjpeg, libpng }:
-
-buildPythonPackage rec {
+{
+  lib,
+  buildPythonPackage,
+  fetchurl,
+  isPy27,
+  renpy,
+  cython_0,
+  SDL2,
+  SDL2_image,
+  SDL2_ttf,
+  SDL2_mixer,
+  libjpeg,
+  libpng,
+  setuptools,
+}:
+let
   pname = "pygame-sdl2";
   version = "2.1.0";
-  format = "setuptools";
   renpy_version = renpy.base_version;
+in
+
+buildPythonPackage {
+  inherit pname version;
   name = "${pname}-${version}-${renpy_version}";
+  pyproject = true;
 
   src = fetchurl {
     url = "https://www.renpy.org/dl/${renpy_version}/pygame_sdl2-${version}+renpy${renpy_version}.tar.gz";
-    hash = "sha256-mrfrsRAVEqw7fwtYdeATp/8AtMn74x9pJEXwYZPOl2I=";
+    hash = "sha256-bcTrdXWLTCnZQ/fP5crKIPoqJiyz+o6s0PzRChV7TQE=";
   };
 
   # force rebuild of headers needed for install
@@ -24,27 +40,29 @@ buildPythonPackage rec {
   '';
 
   nativeBuildInputs = [
-    SDL2.dev cython_0
+    SDL2.dev
+    cython_0
+    setuptools
   ];
 
   buildInputs = [
-    SDL2 SDL2_image SDL2_ttf SDL2_mixer
-    libjpeg libpng
+    SDL2
+    SDL2_image
+    SDL2_ttf
+    SDL2_mixer
+    libjpeg
+    libpng
   ];
 
-
   doCheck = isPy27; # python3 tests are non-functional
 
-  postInstall = ''
-    ( cd "$out"/include/python*/ ;
-      ln -s pygame-sdl2 pygame_sdl2 || true ; )
-  '';
-
-  meta = with lib; {
-    description = "A reimplementation of parts of pygame API using SDL2";
-    homepage    = "https://github.com/renpy/pygame_sdl2";
-    # Some parts are also available under Zlib License
-    license     = licenses.lgpl2;
-    maintainers = with maintainers; [ raskin ];
+  meta = {
+    description = "Reimplementation of parts of pygame API using SDL2";
+    homepage = "https://github.com/renpy/pygame_sdl2";
+    license = with lib.licenses; [
+      lgpl2
+      zlib
+    ];
+    maintainers = with lib.maintainers; [ raskin ];
   };
 }
diff --git a/pkgs/development/python-modules/pygame/default.nix b/pkgs/development/python-modules/pygame/default.nix
index fca187c8cc58a..94efd4227e2ed 100644
--- a/pkgs/development/python-modules/pygame/default.nix
+++ b/pkgs/development/python-modules/pygame/default.nix
@@ -1,31 +1,32 @@
-{ stdenv
-, lib
-, substituteAll
-, fetchpatch
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
-
-# build-system
-, cython
-, setuptools
-, pkg-config
-
-# native dependencies
-, AppKit
-, fontconfig
-, freetype
-, libjpeg
-, libpng
-, libX11
-, portmidi
-, SDL2
-, SDL2_image
-, SDL2_mixer
-, SDL2_ttf
-
-# tests
-, python
+{
+  stdenv,
+  lib,
+  substituteAll,
+  fetchpatch,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+
+  # build-system
+  cython,
+  setuptools,
+  pkg-config,
+
+  # native dependencies
+  AppKit,
+  fontconfig,
+  freetype,
+  libjpeg,
+  libpng,
+  libX11,
+  portmidi,
+  SDL2,
+  SDL2_image,
+  SDL2_mixer,
+  SDL2_ttf,
+
+  # tests
+  python,
 }:
 
 buildPythonPackage rec {
@@ -50,15 +51,19 @@ buildPythonPackage rec {
     # Patch pygame's dependency resolution to let it find build inputs
     (substituteAll {
       src = ./fix-dependency-finding.patch;
-      buildinputs_include = builtins.toJSON (builtins.concatMap (dep: [
-        "${lib.getDev dep}/"
-        "${lib.getDev dep}/include"
-        "${lib.getDev dep}/include/SDL2"
-      ]) buildInputs);
-      buildinputs_lib = builtins.toJSON (builtins.concatMap (dep: [
-        "${lib.getLib dep}/"
-        "${lib.getLib dep}/lib"
-      ]) buildInputs);
+      buildinputs_include = builtins.toJSON (
+        builtins.concatMap (dep: [
+          "${lib.getDev dep}/"
+          "${lib.getDev dep}/include"
+          "${lib.getDev dep}/include/SDL2"
+        ]) buildInputs
+      );
+      buildinputs_lib = builtins.toJSON (
+        builtins.concatMap (dep: [
+          "${lib.getLib dep}/"
+          "${lib.getLib dep}/lib"
+        ]) buildInputs
+      );
     })
     # Skip tests that should be disabled without video driver
     ./skip-surface-tests.patch
@@ -94,9 +99,7 @@ buildPythonPackage rec {
     SDL2_image
     SDL2_mixer
     SDL2_ttf
-  ] ++ lib.optionals stdenv.isDarwin [
-    AppKit
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ AppKit ];
 
   preConfigure = ''
     ${python.pythonOnBuildForHost.interpreter} buildconfig/config.py
diff --git a/pkgs/development/python-modules/pygatt/default.nix b/pkgs/development/python-modules/pygatt/default.nix
index 67a7fea6b3341..f5f5f4e0831db 100644
--- a/pkgs/development/python-modules/pygatt/default.nix
+++ b/pkgs/development/python-modules/pygatt/default.nix
@@ -1,72 +1,57 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pynose
-, pexpect
-, pyserial
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  pexpect,
+  pyserial,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pygatt";
-  version = "4.0.5";
+  version = "5.0.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.5";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "peplin";
     repo = "pygatt";
     rev = "refs/tags/v${version}";
-    hash = "sha256-DUZGsztZViVNZwmhXoRN5FOQ7BgUeI0SsYgCHlvsrv0=";
+    hash = "sha256-TMIqC+JvNOLU38a9jkacRAbdmAAd4UekFUDRoAWhHFo=";
   };
 
   postPatch = ''
-    # Not support for Python < 3.4
     substituteInPlace setup.py \
-      --replace-fail "'enum-compat'" "" \
-      --replace-fail "'coverage >= 3.7.1'," "" \
-      --replace-fail "'nose >= 1.3.7'" ""
-    substituteInPlace tests/bgapi/test_bgapi.py \
-       --replace-fail "assertEquals" "assertEqual"
+      --replace-fail "setup_requires" "test_requires"
   '';
 
-  build-system = [
-    setuptools
-  ];
+  pythonRemoveDeps = [ "enum-compat" ];
 
-  dependencies = [
-    pyserial
-  ];
+  build-system = [ setuptools ];
 
-  passthru.optional-dependencies.GATTTOOL = [
-    pexpect
-  ];
+  dependencies = [ pyserial ];
 
-  nativeBuildInputs = [
-    # For cross compilation the doCheck is false and therefor the
-    # nativeCheckInputs not included. We have to include nose here, since
-    # setup.py requires nose unconditionally.
-    pynose
-  ];
+  optional-dependencies.GATTTOOL = [ pexpect ];
 
   nativeCheckInputs = [
     mock
     pytestCheckHook
-  ] ++ passthru.optional-dependencies.GATTTOOL;
+  ] ++ optional-dependencies.GATTTOOL;
 
-  pythonImportsCheck = [
-    "pygatt"
-  ];
+  pythonImportsCheck = [ "pygatt" ];
 
   meta = with lib; {
     description = "Python wrapper the BGAPI for accessing Bluetooth LE Devices";
     homepage = "https://github.com/peplin/pygatt";
     changelog = "https://github.com/peplin/pygatt/blob/v${version}/CHANGELOG.rst";
-    license = with licenses; [ asl20 mit ];
+    license = with licenses; [
+      asl20
+      mit
+    ];
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/pygccxml/default.nix b/pkgs/development/python-modules/pygccxml/default.nix
index 0d9b12edec7dc..d079ff5e1d0c5 100644
--- a/pkgs/development/python-modules/pygccxml/default.nix
+++ b/pkgs/development/python-modules/pygccxml/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, castxml
-, fetchFromGitHub
-, buildPythonPackage
-, llvmPackages
-, pythonOlder
-, setuptools
+{
+  lib,
+  castxml,
+  fetchFromGitHub,
+  buildPythonPackage,
+  llvmPackages,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-wHZy2BG3h+OMTvIAPtLlq1vsW5V/TqZdnzBJ9VipMiQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   buildInputs = [
     castxml
diff --git a/pkgs/development/python-modules/pygdbmi/default.nix b/pkgs/development/python-modules/pygdbmi/default.nix
index e7df202704e43..429222e76a2e8 100644
--- a/pkgs/development/python-modules/pygdbmi/default.nix
+++ b/pkgs/development/python-modules/pygdbmi/default.nix
@@ -1,9 +1,10 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, gdb
-, pytest
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gdb,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -18,7 +19,10 @@ buildPythonPackage rec {
     hash = "sha256-JqEDN8Pg/JttyYQbwkxKkLYuxVnvV45VlClD23eaYyc=";
   };
 
-  nativeCheckInputs = [ gdb pytest ];
+  nativeCheckInputs = [
+    gdb
+    pytest
+  ];
 
   # tests require gcc for some reason
   doCheck = !stdenv.hostPlatform.isDarwin;
diff --git a/pkgs/development/python-modules/pygeoip/default.nix b/pkgs/development/python-modules/pygeoip/default.nix
deleted file mode 100644
index 66d7140f38e06..0000000000000
--- a/pkgs/development/python-modules/pygeoip/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi
-, nose }:
-
-buildPythonPackage rec {
-  pname = "pygeoip";
-  version = "0.3.2";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "f22c4e00ddf1213e0fae36dc60b46ee7c25a6339941ec1a975539014c1f9a96d";
-  };
-
-  # requires geoip samples
-  doCheck = false;
-
-  buildInputs = [ nose ];
-
-  meta = with lib; {
-    description = "Pure Python GeoIP API";
-    homepage = "https://github.com/appliedsec/pygeoip";
-    license = licenses.lgpl3Plus;
-  };
-}
diff --git a/pkgs/development/python-modules/pygeos/default.nix b/pkgs/development/python-modules/pygeos/default.nix
deleted file mode 100644
index 298d4bdff7fe8..0000000000000
--- a/pkgs/development/python-modules/pygeos/default.nix
+++ /dev/null
@@ -1,53 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, geos_3_11
-, pytestCheckHook
-, cython_0
-, numpy
-}:
-
-buildPythonPackage rec {
-  pname = "pygeos";
-  version = "0.14";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-MPvBf2SEQgC4UTO4hfz7ZVQbh3lTH270+P5GfT+6diM=";
-  };
-
-  nativeBuildInputs = [
-    geos_3_11 # for geos-config
-    cython_0
-  ];
-
-  propagatedBuildInputs = [
-    numpy
-  ];
-
-  # The cythonized extensions are required to exist in the pygeos/ directory
-  # for the package to function. Therefore override of buildPhase was
-  # necessary.
-  buildPhase = ''
-    ${python.pythonOnBuildForHost.interpreter} setup.py build_ext --inplace
-    ${python.pythonOnBuildForHost.interpreter} setup.py bdist_wheel
-  '';
-
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-
-  pythonImportsCheck = [
-    "pygeos"
-  ];
-
-  meta = with lib; {
-    description = "Wraps GEOS geometry functions in numpy ufuncs";
-    homepage = "https://github.com/pygeos/pygeos";
-    changelog = "https://github.com/pygeos/pygeos/blob/${version}/CHANGELOG.rst";
-    license = licenses.bsd3;
-    maintainers = teams.geospatial.members;
-  };
-}
diff --git a/pkgs/development/python-modules/pygetwindow/default.nix b/pkgs/development/python-modules/pygetwindow/default.nix
index 2969fe850d489..238bffdeb2765 100644
--- a/pkgs/development/python-modules/pygetwindow/default.nix
+++ b/pkgs/development/python-modules/pygetwindow/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyrect
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyrect,
 }:
 buildPythonPackage rec {
   pname = "pygetwindow";
@@ -17,12 +18,10 @@ buildPythonPackage rec {
   # This lib officially only works completely on Windows and partially on MacOS but pyautogui requires it
   # pythonImportsCheck = [ "pygetwindow" ];
 
-  propagatedBuildInputs = [
-    pyrect
-  ];
+  propagatedBuildInputs = [ pyrect ];
 
   meta = with lib; {
-    description = "A simple, cross-platform module for obtaining GUI information on applications' windows.";
+    description = "Simple, cross-platform module for obtaining GUI information on applications' windows";
     homepage = "https://github.com/asweigart/PyGetWindow";
     license = licenses.bsd3;
     maintainers = with maintainers; [ lucasew ];
diff --git a/pkgs/development/python-modules/pygit2/default.nix b/pkgs/development/python-modules/pygit2/default.nix
index 1e17f95e54a70..db08e6efe974a 100644
--- a/pkgs/development/python-modules/pygit2/default.nix
+++ b/pkgs/development/python-modules/pygit2/default.nix
@@ -1,56 +1,47 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, cacert
-, cached-property
-, cffi
-, fetchPypi
-, isPyPy
-, libgit2
-, pycparser
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cacert,
+  cached-property,
+  cffi,
+  fetchPypi,
+  isPyPy,
+  libgit2,
+  pycparser,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pygit2";
-  version = "1.14.1";
+  version = "1.15.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-7FlYVxuCpjUXhcpkXlOUwxrkXuxThLL6nE4F3eNZetY=";
+    hash = "sha256-pjVSX/x0EoZp3i9jRgqUydVgljSkh1wKr85RD97sF6w=";
   };
 
-  preConfigure = lib.optionalString stdenv.isDarwin ''
+  preConfigure = lib.optionalString stdenv.hostPlatform.isDarwin ''
     export DYLD_LIBRARY_PATH="${libgit2}/lib"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  buildInputs = [
-    libgit2
-  ];
+  buildInputs = [ libgit2 ];
 
   propagatedBuildInputs = [
     cached-property
     pycparser
-  ] ++ lib.optionals (!isPyPy) [
-    cffi
-  ];
+  ] ++ lib.optionals (!isPyPy) [ cffi ];
 
-  propagatedNativeBuildInputs = lib.optionals (!isPyPy) [
-    cffi
-  ];
+  propagatedNativeBuildInputs = lib.optionals (!isPyPy) [ cffi ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # Disable tests that require networking
@@ -63,15 +54,13 @@ buildPythonPackage rec {
   # https://github.com/NixOS/nixpkgs/pull/72544#issuecomment-582674047
   SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
 
-  pythonImportsCheck = [
-    "pygit2"
-  ];
+  pythonImportsCheck = [ "pygit2" ];
 
   meta = with lib; {
-    description = "A set of Python bindings to the libgit2 shared library";
+    description = "Set of Python bindings to the libgit2 shared library";
     homepage = "https://github.com/libgit2/pygit2";
     changelog = "https://github.com/libgit2/pygit2/blob/v${version}/CHANGELOG.md";
     license = licenses.gpl2Only;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pygitguardian/default.nix b/pkgs/development/python-modules/pygitguardian/default.nix
index 1325a31fe1339..1bd193e0cc322 100644
--- a/pkgs/development/python-modules/pygitguardian/default.nix
+++ b/pkgs/development/python-modules/pygitguardian/default.nix
@@ -1,45 +1,47 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, marshmallow
-, marshmallow-dataclass
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
-, responses
-, setuptools
-, typing-extensions
-, vcrpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  marshmallow-dataclass,
+  marshmallow,
+  pdm-backend,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  responses,
+  setuptools,
+  typing-extensions,
+  vcrpy,
 }:
 
 buildPythonPackage rec {
   pname = "pygitguardian";
-  version = "1.14.0";
+  version = "1.17.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "GitGuardian";
     repo = "py-gitguardian";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Uw65+YOnln+IOyT+RgqMEWt5cOZsaeS8Nu8U6ooivWA=";
+    hash = "sha256-+L0rF5wy4iL/6nPdLSXwYazxsobH2G3pCATrqYe9B6U=";
   };
 
   pythonRelaxDeps = [
     "marshmallow-dataclass"
+    "setuptools"
   ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-    setuptools
+  build-system = [
+    pdm-backend
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     marshmallow
     marshmallow-dataclass
     requests
+    setuptools
     typing-extensions
   ];
 
@@ -49,9 +51,7 @@ buildPythonPackage rec {
     responses
   ];
 
-  pythonImportsCheck = [
-    "pygitguardian"
-  ];
+  pythonImportsCheck = [ "pygitguardian" ];
 
   disabledTests = [
     # Tests require an API key
@@ -68,6 +68,10 @@ buildPythonPackage rec {
     "test_multiscan_parameters"
     "test_quota_overview"
     "test_rate_limit"
+    "test_read_metadata_bad_response"
+    "test_read_metadata_no_remediation_message"
+    "test_read_metadata_remediation_message"
+    "test_retrieve_secret_incident"
     "test_sca_client_scan_diff"
     "test_sca_scan_all_with_params"
     "test_sca_scan_directory_invalid_tar"
diff --git a/pkgs/development/python-modules/pygithub/default.nix b/pkgs/development/python-modules/pygithub/default.nix
index 926f16c46af37..93232d3816af1 100644
--- a/pkgs/development/python-modules/pygithub/default.nix
+++ b/pkgs/development/python-modules/pygithub/default.nix
@@ -1,29 +1,30 @@
-{ lib
-, buildPythonPackage
-, deprecated
-, fetchFromGitHub
-, pynacl
-, typing-extensions
-, pyjwt
-, pythonOlder
-, requests
-, setuptools
-, setuptools-scm
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  deprecated,
+  fetchFromGitHub,
+  pynacl,
+  typing-extensions,
+  pyjwt,
+  pythonOlder,
+  requests,
+  setuptools,
+  setuptools-scm,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "pygithub";
-  version = "2.3.0";
+  version = "2.4.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "PyGithub";
     repo = "PyGithub";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ccAbn9x1r+wBIAK66ur8+2Op9ij09rQvHumq5Wh7TUU=";
+    hash = "sha256-VM3xxLa4MlR3vTpeOunsq4/bxZhuKXNKFZbFVul1cMw=";
   };
 
   build-system = [
@@ -43,15 +44,13 @@ buildPythonPackage rec {
   # Test suite makes REST calls against github.com
   doCheck = false;
 
-  pythonImportsCheck = [
-    "github"
-  ];
+  pythonImportsCheck = [ "github" ];
 
   meta = with lib; {
     description = "Python library to access the GitHub API v3";
     homepage = "https://github.com/PyGithub/PyGithub";
     changelog = "https://github.com/PyGithub/PyGithub/raw/v${version}/doc/changes.rst";
     license = licenses.lgpl3Plus;
-    maintainers = with maintainers; [ jhhuh ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyglet/default.nix b/pkgs/development/python-modules/pyglet/default.nix
index 62c8598f59187..663d6db5fb4db 100644
--- a/pkgs/development/python-modules/pyglet/default.nix
+++ b/pkgs/development/python-modules/pyglet/default.nix
@@ -1,20 +1,23 @@
-{ lib, stdenv
-, buildPythonPackage
-, fetchPypi
-, unzip
-, pythonOlder
-, libGL
-, libGLU
-, xorg
-, pytestCheckHook
-, glibc
-, gtk2-x11
-, gdk-pixbuf
-, fontconfig
-, freetype
-, ffmpeg-full
-, openal
-, libpulseaudio
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  unzip,
+  pythonOlder,
+  libGL,
+  libGLU,
+  xorg,
+  pytestCheckHook,
+  glibc,
+  gtk2-x11,
+  gdk-pixbuf,
+  fontconfig,
+  freetype,
+  ffmpeg-full,
+  openal,
+  libpulseaudio,
+  mesa,
 }:
 
 buildPythonPackage rec {
@@ -33,51 +36,53 @@ buildPythonPackage rec {
   # Even naively searching `LD_LIBRARY_PATH` won't work since `libc.so` is a linker script and
   # ctypes.cdll.LoadLibrary cannot deal with those. Therefore, just hardcode the paths to the
   # necessary libraries.
-  postPatch = let
-    ext = stdenv.hostPlatform.extensions.sharedLibrary;
-  in ''
-    cat > pyglet/lib.py <<EOF
-    import ctypes
-    def load_library(*names, **kwargs):
-        for name in names:
-            path = None
-            if name == 'GL':
-                path = '${libGL}/lib/libGL${ext}'
-            elif name == 'EGL':
-                path = '${libGL}/lib/libEGL${ext}'
-            elif name == 'GLU':
-                path = '${libGLU}/lib/libGLU${ext}'
-            elif name == 'c':
-                path = '${glibc}/lib/libc${ext}.6'
-            elif name == 'X11':
-                path = '${xorg.libX11}/lib/libX11${ext}'
-            elif name == 'gdk-x11-2.0':
-                path = '${gtk2-x11}/lib/libgdk-x11-2.0${ext}'
-            elif name == 'gdk_pixbuf-2.0':
-                path = '${gdk-pixbuf}/lib/libgdk_pixbuf-2.0${ext}'
-            elif name == 'Xext':
-                path = '${xorg.libXext}/lib/libXext${ext}'
-            elif name == 'fontconfig':
-                path = '${fontconfig.lib}/lib/libfontconfig${ext}'
-            elif name == 'freetype':
-                path = '${freetype}/lib/libfreetype${ext}'
-            elif name[0:2] == 'av' or name[0:2] == 'sw':
-                path = '${ffmpeg-full}/lib/lib' + name + '${ext}'
-            elif name == 'openal':
-                path = '${openal}/lib/libopenal${ext}'
-            elif name == 'pulse':
-                path = '${libpulseaudio}/lib/libpulse${ext}'
-            elif name == 'Xi':
-                path = '${xorg.libXi}/lib/libXi${ext}'
-            elif name == 'Xinerama':
-                path = '${xorg.libXinerama}/lib/libXinerama${ext}'
-            elif name == 'Xxf86vm':
-                path = '${xorg.libXxf86vm}/lib/libXxf86vm${ext}'
-            if path is not None:
-                return ctypes.cdll.LoadLibrary(path)
-        raise Exception("Could not load library {}".format(names))
-    EOF
-  '';
+  postPatch =
+    let
+      ext = stdenv.hostPlatform.extensions.sharedLibrary;
+    in
+    ''
+      cat > pyglet/lib.py <<EOF
+      import ctypes
+      def load_library(*names, **kwargs):
+          for name in names:
+              path = None
+              if name == 'GL':
+                  path = '${libGL}/lib/libGL${ext}'
+              elif name == 'EGL':
+                  path = '${libGL}/lib/libEGL${ext}'
+              elif name == 'GLU':
+                  path = '${libGLU}/lib/libGLU${ext}'
+              elif name == 'c':
+                  path = '${glibc}/lib/libc${ext}.6'
+              elif name == 'X11':
+                  path = '${xorg.libX11}/lib/libX11${ext}'
+              elif name == 'gdk-x11-2.0':
+                  path = '${gtk2-x11}/lib/libgdk-x11-2.0${ext}'
+              elif name == 'gdk_pixbuf-2.0':
+                  path = '${gdk-pixbuf}/lib/libgdk_pixbuf-2.0${ext}'
+              elif name == 'Xext':
+                  path = '${xorg.libXext}/lib/libXext${ext}'
+              elif name == 'fontconfig':
+                  path = '${fontconfig.lib}/lib/libfontconfig${ext}'
+              elif name == 'freetype':
+                  path = '${freetype}/lib/libfreetype${ext}'
+              elif name[0:2] == 'av' or name[0:2] == 'sw':
+                  path = '${lib.getLib ffmpeg-full}/lib/lib' + name + '${ext}'
+              elif name == 'openal':
+                  path = '${openal}/lib/libopenal${ext}'
+              elif name == 'pulse':
+                  path = '${libpulseaudio}/lib/libpulse${ext}'
+              elif name == 'Xi':
+                  path = '${xorg.libXi}/lib/libXi${ext}'
+              elif name == 'Xinerama':
+                  path = '${xorg.libXinerama}/lib/libXinerama${ext}'
+              elif name == 'Xxf86vm':
+                  path = '${xorg.libXxf86vm}/lib/libXxf86vm${ext}'
+              if path is not None:
+                  return ctypes.cdll.LoadLibrary(path)
+          raise Exception("Could not load library {}".format(names))
+      EOF
+    '';
 
   nativeBuildInputs = [ unzip ];
 
@@ -85,9 +90,7 @@ buildPythonPackage rec {
   # tests do run and pass in nix-shell, however.
   doCheck = false;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export PYGLET_HEADLESS=True
@@ -105,8 +108,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "http://www.pyglet.org/";
-    description = "A cross-platform windowing and multimedia library";
+    description = "Cross-platform windowing and multimedia library";
     license = licenses.bsd3;
-    platforms = platforms.mesaPlatforms;
+    inherit (mesa.meta) platforms;
   };
 }
diff --git a/pkgs/development/python-modules/pyglm/default.nix b/pkgs/development/python-modules/pyglm/default.nix
index 17fe906a47c5f..2afcae3d3bb43 100644
--- a/pkgs/development/python-modules/pyglm/default.nix
+++ b/pkgs/development/python-modules/pyglm/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,22 +19,16 @@ buildPythonPackage rec {
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "glm"
-  ];
+  pythonImportsCheck = [ "glm" ];
 
   meta = with lib; {
     homepage = "https://github.com/Zuzu-Typ/PyGLM";
-    description = "An OpenGL Mathematics (GLM) library for Python written in C++";
-    changelog = "https://github.com/Zuzu-Typ/PyGLM/releases/tag/${src.rev}";
+    description = "OpenGL Mathematics (GLM) library for Python written in C++";
+    changelog = "https://github.com/Zuzu-Typ/PyGLM/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = licenses.zlib;
     maintainers = with maintainers; [ sund3RRR ];
   };
diff --git a/pkgs/development/python-modules/pygls/default.nix b/pkgs/development/python-modules/pygls/default.nix
index e85c985b6c5ae..8128de3769b9d 100644
--- a/pkgs/development/python-modules/pygls/default.nix
+++ b/pkgs/development/python-modules/pygls/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, lsprotocol
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, typeguard
-, websockets
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lsprotocol,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  typeguard,
+  websockets,
 }:
 
 buildPythonPackage rec {
@@ -33,7 +33,6 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -42,9 +41,7 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    ws = [
-      websockets
-    ];
+    ws = [ websockets ];
   };
 
   nativeCheckInputs = [
@@ -55,14 +52,12 @@ buildPythonPackage rec {
   # Fixes hanging tests on Darwin
   __darwinAllowLocalNetworking = true;
 
-  preCheck = lib.optionalString stdenv.isDarwin ''
+  preCheck = lib.optionalString stdenv.hostPlatform.isDarwin ''
     # Darwin issue: OSError: [Errno 24] Too many open files
     ulimit -n 1024
   '';
 
-  pythonImportsCheck = [
-    "pygls"
-  ];
+  pythonImportsCheck = [ "pygls" ];
 
   meta = with lib; {
     description = "Pythonic generic implementation of the Language Server Protocol";
diff --git a/pkgs/development/python-modules/pygltflib/default.nix b/pkgs/development/python-modules/pygltflib/default.nix
index 7212192b260fc..bbfb1d08745d2 100644
--- a/pkgs/development/python-modules/pygltflib/default.nix
+++ b/pkgs/development/python-modules/pygltflib/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitLab
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, dataclasses-json
-, deprecated
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  dataclasses-json,
+  deprecated,
+  pytestCheckHook,
 }:
 
 let
@@ -32,18 +33,14 @@ buildPythonPackage rec {
     hash = "sha256-rUAg05M5biVsdG2yEH0Olng/0jH1R/Jo5/+j4ToKkTI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     dataclasses-json
     deprecated
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
   preCheck = ''
     ln -s ${gltf-sample-models} glTF-Sample-Models
   '';
diff --git a/pkgs/development/python-modules/pygmars/default.nix b/pkgs/development/python-modules/pygmars/default.nix
index 1cfa0838dac82..11bd26ee95316 100644
--- a/pkgs/development/python-modules/pygmars/default.nix
+++ b/pkgs/development/python-modules/pygmars/default.nix
@@ -1,44 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, setuptools-scm
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools-scm,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pygmars";
-  version = "0.8.0";
-  format = "setuptools";
+  version = "0.8.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "nexB";
-    repo = pname;
+    repo = "pygmars";
     rev = "refs/tags/v${version}";
-    hash = "sha256-PiH1lV1Vt9VTSOB+jep8FHIdk8qnauxj4nP3CIi/m7o=";
+    hash = "sha256-RwAZ1ZLh0zgGshSv7LleBHMotKapDFtD69ptqQnr0EA=";
   };
 
-  postPatch = ''
-    # https://github.com/nexB/pygmars/pull/9
-    substituteInPlace setup.cfg \
-      --replace ">=3.6.*" ">=3.6"
-  '';
-
   dontConfigure = true;
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pygmars"
-  ];
+  pythonImportsCheck = [ "pygmars" ];
 
   meta = with lib; {
     description = "Python lexing and parsing library";
diff --git a/pkgs/development/python-modules/pygments-better-html/default.nix b/pkgs/development/python-modules/pygments-better-html/default.nix
index 635707160305b..488126dbe18dc 100644
--- a/pkgs/development/python-modules/pygments-better-html/default.nix
+++ b/pkgs/development/python-modules/pygments-better-html/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pygments
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pygments,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
   pname = "pygments_better_html";
   version = "0.1.5";
-  disabled = ! isPy3k;
+  disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-SLAe5ubIGEchUNoHCct6CWisBja3WNEfpE48v9CTzPQ=";
+    hash = "sha256-SLAe5ubIGEchUNoHCct6CWisBja3WNEfpE48v9CTzPQ=";
   };
 
   propagatedBuildInputs = [ pygments ];
@@ -24,7 +25,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/Kwpolska/pygments_better_html";
-    description = "Improved line numbering for Pygments’ HTML formatter.";
+    description = "Improved line numbering for Pygments’ HTML formatter";
     license = licenses.bsd3;
     maintainers = with maintainers; [ hexa ];
   };
diff --git a/pkgs/development/python-modules/pygments-markdown-lexer/default.nix b/pkgs/development/python-modules/pygments-markdown-lexer/default.nix
index edd212b60d9d7..dd454bc4e8071 100644
--- a/pkgs/development/python-modules/pygments-markdown-lexer/default.nix
+++ b/pkgs/development/python-modules/pygments-markdown-lexer/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pygments
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pygments,
 }:
 
 buildPythonPackage rec {
@@ -24,5 +25,4 @@ buildPythonPackage rec {
     description = "Pygments Markdown Lexer – A Markdown lexer for Pygments to highlight Markdown code snippets";
     license = licenses.asl20;
   };
-
 }
diff --git a/pkgs/development/python-modules/pygments-style-github/default.nix b/pkgs/development/python-modules/pygments-style-github/default.nix
index 3bf20f31c7643..3c6945e66dfeb 100644
--- a/pkgs/development/python-modules/pygments-style-github/default.nix
+++ b/pkgs/development/python-modules/pygments-style-github/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pygments }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pygments,
+}:
 
 buildPythonPackage rec {
   pname = "pygments-style-github";
@@ -18,7 +23,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "pygments_style_github" ];
 
   meta = with lib; {
-    description = "A port of the github color scheme for pygments";
+    description = "Port of the github color scheme for pygments";
     homepage = "https://github.com/hugomaiavieira/pygments-style-github";
     license = licenses.bsd3;
     maintainers = with maintainers; [ drupol ];
diff --git a/pkgs/development/python-modules/pygments/default.nix b/pkgs/development/python-modules/pygments/default.nix
index 4be48e1c93309..007e36f172331 100644
--- a/pkgs/development/python-modules/pygments/default.nix
+++ b/pkgs/development/python-modules/pygments/default.nix
@@ -1,29 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-
-# build-system
-, hatchling
-
-# tests
-, pytestCheckHook
-, wcag-contrast-ratio
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+
+  # build-system
+  hatchling,
+
+  # tests
+  pytestCheckHook,
+  wcag-contrast-ratio,
+  pythonOlder
 }:
 
-let pygments = buildPythonPackage
-  rec {
+let
+  pygments = buildPythonPackage rec {
     pname = "pygments";
-    version = "2.17.2";
+    version = "2.18.0";
     pyproject = true;
 
+    disabled = pythonOlder "3.8"; # 2.18.0 requirement
+
     src = fetchPypi {
       inherit pname version;
-      hash = "sha256-2kbOyf0t5b46inhPQ05MSrZwtP9U1gXEwnF+nUnEw2c=";
+      hash = "sha256-eG/4AvMukTEb/ziJ9umoboFQX+mfJzW7bWCuDFAE8Zk=";
     };
 
-    nativeBuildInputs = [
-      hatchling
-    ];
+    nativeBuildInputs = [ hatchling ];
 
     # circular dependencies if enabled by default
     doCheck = false;
@@ -38,21 +40,22 @@ let pygments = buildPythonPackage
       "tests/examplefiles/bash/ltmain.sh"
     ];
 
-    pythonImportsCheck = [
-      "pygments"
-    ];
+    pythonImportsCheck = [ "pygments" ];
 
     passthru.tests = {
-      check = pygments.overridePythonAttrs (_: { doCheck = true; });
+      check = pygments.overridePythonAttrs (_: {
+        doCheck = true;
+      });
     };
 
-    meta = with lib; {
+    meta = {
       changelog = "https://github.com/pygments/pygments/releases/tag/${version}";
       homepage = "https://pygments.org/";
-      description = "A generic syntax highlighter";
+      description = "Generic syntax highlighter";
       mainProgram = "pygmentize";
-      license = licenses.bsd2;
-      maintainers = with maintainers; [ ];
+      license = lib.licenses.bsd2;
+      maintainers = with lib.maintainers; [ sigmanificient ];
     };
   };
-in pygments
+in
+pygments
diff --git a/pkgs/development/python-modules/pygmo/default.nix b/pkgs/development/python-modules/pygmo/default.nix
index c829ff91f6969..4f75a53e0545f 100644
--- a/pkgs/development/python-modules/pygmo/default.nix
+++ b/pkgs/development/python-modules/pygmo/default.nix
@@ -1,63 +1,62 @@
-{ lib
-, stdenv
-, toPythonModule
-, fetchFromGitHub
-, cmake
-, boost
-, eigen
-, ipopt
-, nlopt
-, pagmo2
-, python
-, cloudpickle
-, ipyparallel
-, numba
-, numpy
-, pybind11
+{
+  lib,
+  stdenv,
+  toPythonModule,
+  fetchFromGitHub,
+  cmake,
+  boost,
+  eigen,
+  ipopt,
+  nlopt,
+  pagmo2,
+  python,
+  cloudpickle,
+  ipyparallel,
+  numba,
+  numpy,
+  pybind11,
 }:
 
-toPythonModule (stdenv.mkDerivation rec {
-  pname = "pygmo";
-  version = "2.19.6";
-
-  src = fetchFromGitHub {
-    owner = "esa";
-    repo = "pygmo2";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-umXK8LGJJ6Xj6UbJ5k/DM/nYayjl+jBXtjar5/dWqFM=";
-  };
-
-  cmakeFlags = [
-    "-DPYGMO_INSTALL_PATH=${placeholder "out"}/${python.sitePackages}"
-  ];
-
-  nativeBuildInputs = [
-    cmake
-  ];
-
-  propagatedBuildInputs = [
-    cloudpickle
-    ipyparallel
-    numba
-    numpy
-    python
-  ];
-
-  buildInputs = [
-    boost
-    eigen
-    ipopt
-    nlopt
-    pagmo2
-    pybind11
-  ];
-
-  doCheck = true;
-
-  meta = with lib; {
-    description = "Parallel optimisation for Python";
-    homepage = "https://github.com/esa/pygmo2";
-    license = licenses.gpl3Plus;
-    maintainers = [ ];
-  };
-})
+toPythonModule (
+  stdenv.mkDerivation rec {
+    pname = "pygmo";
+    version = "2.19.7";
+
+    src = fetchFromGitHub {
+      owner = "esa";
+      repo = "pygmo2";
+      rev = "refs/tags/v${version}";
+      hash = "sha256-279KNnP11f5ob2senIVmbnlmhRp2p3RoZLsQRE6yJ5Q=";
+    };
+
+    cmakeFlags = [ "-DPYGMO_INSTALL_PATH=${placeholder "out"}/${python.sitePackages}" ];
+
+    nativeBuildInputs = [ cmake ];
+
+    propagatedBuildInputs = [
+      cloudpickle
+      ipyparallel
+      numba
+      numpy
+      python
+    ];
+
+    buildInputs = [
+      boost
+      eigen
+      ipopt
+      nlopt
+      pagmo2
+      pybind11
+    ];
+
+    doCheck = true;
+
+    meta = with lib; {
+      description = "Parallel optimisation for Python";
+      homepage = "https://github.com/esa/pygmo2";
+      license = licenses.gpl3Plus;
+      maintainers = [ ];
+    };
+  }
+)
diff --git a/pkgs/development/python-modules/pygmt/default.nix b/pkgs/development/python-modules/pygmt/default.nix
index c455bbcfab16e..852690233304a 100644
--- a/pkgs/development/python-modules/pygmt/default.nix
+++ b/pkgs/development/python-modules/pygmt/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, stdenv
-, pythonOlder
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools-scm
-, gmt
-, numpy
-, netcdf4
-, pandas
-, packaging
-, xarray
-, pytest-mpl
-, ipython
-, ghostscript
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  pythonOlder,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  gmt,
+  numpy,
+  netcdf4,
+  pandas,
+  packaging,
+  xarray,
+  pytest-mpl,
+  ipython,
+  ghostscript,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pygmt";
   version = "0.11.0";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
@@ -35,9 +36,7 @@ buildPythonPackage rec {
       --replace "env.get(\"GMT_LIBRARY_PATH\", \"\")" "env.get(\"GMT_LIBRARY_PATH\", \"${gmt}/lib\")"
   '';
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     numpy
@@ -61,17 +60,15 @@ buildPythonPackage rec {
     export HOME=$TMP
   '';
 
-  pythonImportsCheck = [
-    "pygmt"
-  ];
+  pythonImportsCheck = [ "pygmt" ];
 
   meta = with lib; {
-    description = "A Python interface for the Generic Mapping Tools";
+    description = "Python interface for the Generic Mapping Tools";
     homepage = "https://github.com/GenericMappingTools/pygmt";
     license = licenses.bsd3;
     changelog = "https://github.com/GenericMappingTools/pygmt/releases/tag/v${version}";
     # pygmt.exceptions.GMTCLibNotFoundError: Error loading the GMT shared library '/nix/store/r3xnnqgl89vrnq0kzxx0bmjwzks45mz8-gmt-6.1.1/lib/libgmt.dylib'
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     maintainers = with maintainers; [ sikmir ];
   };
 }
diff --git a/pkgs/development/python-modules/pygnmi/default.nix b/pkgs/development/python-modules/pygnmi/default.nix
index a83aaabfc5750..117d6a7b03bb7 100644
--- a/pkgs/development/python-modules/pygnmi/default.nix
+++ b/pkgs/development/python-modules/pygnmi/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cryptography
-, dictdiffer
-, grpcio
-, protobuf
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cryptography,
+  dictdiffer,
+  grpcio,
+  protobuf,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -34,13 +35,9 @@ buildPythonPackage rec {
   # TypeError: expected string or bytes-like object
   doCheck = false;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pygnmi"
-  ];
+  pythonImportsCheck = [ "pygnmi" ];
 
   meta = with lib; {
     description = "Pure Python gNMI client to manage network functions and collect telemetry";
@@ -48,6 +45,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/akarneliuk/pygnmi";
     changelog = "https://github.com/akarneliuk/pygnmi/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pygobject-stubs/default.nix b/pkgs/development/python-modules/pygobject-stubs/default.nix
index 38208b28ad301..d4a9b4f810360 100644
--- a/pkgs/development/python-modules/pygobject-stubs/default.nix
+++ b/pkgs/development/python-modules/pygobject-stubs/default.nix
@@ -2,7 +2,6 @@
   lib,
   buildPythonPackage,
   fetchFromGitHub,
-  pygobject3,
   pythonOlder,
   setuptools,
 }:
diff --git a/pkgs/development/python-modules/pygobject/3.nix b/pkgs/development/python-modules/pygobject/3.nix
index cc2d41147bca7..1f4592c7ddcfc 100644
--- a/pkgs/development/python-modules/pygobject/3.nix
+++ b/pkgs/development/python-modules/pygobject/3.nix
@@ -1,25 +1,29 @@
-{ lib
-, stdenv
-, fetchurl
-, buildPythonPackage
-, pkg-config
-, glib
-, gobject-introspection
-, pycairo
-, cairo
-, ncurses
-, meson
-, ninja
-, pythonOlder
-, gnome
-, python
+{
+  lib,
+  stdenv,
+  fetchurl,
+  buildPythonPackage,
+  pkg-config,
+  glib,
+  gobject-introspection,
+  pycairo,
+  cairo,
+  ncurses,
+  meson,
+  ninja,
+  pythonOlder,
+  gnome,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "pygobject";
-  version = "3.46.0";
+  version = "3.48.2";
 
-  outputs = [ "out" "dev" ];
+  outputs = [
+    "out"
+    "dev"
+  ];
 
   disabled = pythonOlder "3.8";
 
@@ -27,12 +31,10 @@ buildPythonPackage rec {
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "QmAIstrVSMmvHHsDtZ3wRA/eXDPzj7VAaxA6Q9ZTyvw=";
+    hash = "sha256-B5SutKm+MaCSrCBiG19U7CgPkYWUPTKLEFza5imK0ac=";
   };
 
-  depsBuildBuild = [
-    pkg-config
-  ];
+  depsBuildBuild = [ pkg-config ];
 
   nativeBuildInputs = [
     pkg-config
@@ -44,12 +46,11 @@ buildPythonPackage rec {
   buildInputs = [
     cairo
     glib
-  ] ++ lib.optionals stdenv.isDarwin [
-    ncurses
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ ncurses ];
 
   propagatedBuildInputs = [
     pycairo
+    gobject-introspection # e.g. try building: python3Packages.urwid python3Packages.pydbus
   ];
 
   mesonFlags = [
diff --git a/pkgs/development/python-modules/pygogo/default.nix b/pkgs/development/python-modules/pygogo/default.nix
deleted file mode 100644
index 4a6a89844e6a3..0000000000000
--- a/pkgs/development/python-modules/pygogo/default.nix
+++ /dev/null
@@ -1,53 +0,0 @@
-{ lib
-, pythonOlder
-, buildPythonPackage
-, fetchFromGitHub
-, pkutils
-  # Check Inputs
-, nose
-}:
-
-buildPythonPackage rec {
-  pname = "pygogo";
-  version = "0.13.2";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.6";
-
-  src = fetchFromGitHub {
-    owner = "reubano";
-    repo = "pygogo";
-    rev = "v${version}";
-    sha256 = "19rdf4sjrm5lp1vq1bki21a9lrkzz8sgrfwgjdkq4sgy90hn1jn9";
-  };
-
-  nativeBuildInputs = [
-    pkutils
-  ];
-
-  nativeCheckInputs = [
-    nose
-  ];
-
-  postPatch = ''
-    substituteInPlace dev-requirements.txt \
-      --replace "pkutils>=1.0.0,<2.0.0" "pkutils>=1.0.0"
-  '';
-
-  checkPhase = ''
-    runHook preCheck
-    nosetests
-    runHook postCheck
-  '';
-
-  pythonImportsCheck = [
-    "pygogo"
-  ];
-
-  meta = with lib; {
-    description = "Python logging library";
-    homepage = "https://github.com/reubano/pygogo/";
-    license = licenses.mit;
-    maintainers = with maintainers; [ drewrisinger ];
-  };
-}
diff --git a/pkgs/development/python-modules/pygount/default.nix b/pkgs/development/python-modules/pygount/default.nix
index 4b12364288368..19e733c6f5449 100644
--- a/pkgs/development/python-modules/pygount/default.nix
+++ b/pkgs/development/python-modules/pygount/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, chardet
-, gitpython
-, pygments
-, rich
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  chardet,
+  gitpython,
+  pygments,
+  rich,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pygount";
-  version = "1.6.1";
+  version = "1.8.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "roskakori";
     repo = "pygount";
     rev = "refs/tags/v${version}";
-    hash = "sha256-j+mXIyF/54MCm0yv7Z+ymy/EeZz7iS/a+/5I9lo1+Zo=";
+    hash = "sha256-PFqcSnJoGL4bXFy3hu3Iurbb8QK1NqCDs8aJmMxP4Hc=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     chardet
@@ -32,9 +31,7 @@ buildPythonPackage rec {
     rich
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # requires network access
@@ -42,9 +39,7 @@ buildPythonPackage rec {
     "test_can_extract_and_close_and_find_files_from_cloned_git_remote_url_with_revision"
   ];
 
-  pythonImportsCheck = [
-    "pygount"
-  ];
+  pythonImportsCheck = [ "pygount" ];
 
   meta = with lib; {
     description = "Count lines of code for hundreds of languages using pygments";
diff --git a/pkgs/development/python-modules/pygpgme/default.nix b/pkgs/development/python-modules/pygpgme/default.nix
index f4a09dbbfa0f6..a39bc08458ab6 100644
--- a/pkgs/development/python-modules/pygpgme/default.nix
+++ b/pkgs/development/python-modules/pygpgme/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, gpgme
-, isPyPy
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchurl,
+  gpgme,
+  isPyPy,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
@@ -27,8 +28,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://launchpad.net/pygpgme";
-    description = "A Python wrapper for the GPGME library";
+    description = "Python wrapper for the GPGME library";
     license = licenses.lgpl21;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pygraphviz/default.nix b/pkgs/development/python-modules/pygraphviz/default.nix
index 61fee2859d184..201902949cf2a 100644
--- a/pkgs/development/python-modules/pygraphviz/default.nix
+++ b/pkgs/development/python-modules/pygraphviz/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, substituteAll
-, graphviz
-, coreutils
-, pkg-config
-, setuptools
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  substituteAll,
+  graphviz,
+  coreutils,
+  pkg-config,
+  setuptools,
+  pytest,
 }:
 
 buildPythonPackage rec {
   pname = "pygraphviz";
-  version = "1.12";
+  version = "1.13";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -20,15 +21,18 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "pygraphviz";
     repo = "pygraphviz";
-    rev = "pygraphviz-${version}";
-    hash = "sha256-XDP77H724eiMa/V18OtLxpUpxlIVDmcFLMYOAbazquo=";
+    rev = "refs/tags/pygraphviz-${version}";
+    hash = "sha256-/H7eHgs3jtbgat8//1Y1S3iV5s0UBKW+J+zK+f8qGqI=";
   };
 
   patches = [
     # pygraphviz depends on graphviz executables and wc being in PATH
     (substituteAll {
       src = ./path.patch;
-      path = lib.makeBinPath [ graphviz coreutils ];
+      path = lib.makeBinPath [
+        graphviz
+        coreutils
+      ];
     })
   ];
 
@@ -53,6 +57,9 @@ buildPythonPackage rec {
     description = "Python interface to Graphviz graph drawing package";
     homepage = "https://github.com/pygraphviz/pygraphviz";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ matthiasbeyer dotlambda ];
+    maintainers = with maintainers; [
+      matthiasbeyer
+      dotlambda
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pygreat/default.nix b/pkgs/development/python-modules/pygreat/default.nix
index 2b1bccc8d2b23..6f66c9eb5dc7d 100644
--- a/pkgs/development/python-modules/pygreat/default.nix
+++ b/pkgs/development/python-modules/pygreat/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, isPy3k, fetchFromGitHub, future, pyusb }:
+{
+  lib,
+  buildPythonPackage,
+  isPy3k,
+  fetchFromGitHub,
+  future,
+  pyusb,
+}:
 
 buildPythonPackage {
   pname = "pygreat";
@@ -12,7 +19,10 @@ buildPythonPackage {
     sha256 = "1h0z83k1k4z8j36z936h61l8j3cjr3wsxr86k91v5c5h93g9dkqh";
   };
 
-  propagatedBuildInputs = [ future pyusb ];
+  propagatedBuildInputs = [
+    future
+    pyusb
+  ];
 
   disabled = !isPy3k;
 
@@ -28,5 +38,4 @@ buildPythonPackage {
     homepage = "https://greatscottgadgets.com/greatfet/";
     license = with licenses; [ bsd3 ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pygrok/default.nix b/pkgs/development/python-modules/pygrok/default.nix
index 9da5545d28736..3313a921808df 100644
--- a/pkgs/development/python-modules/pygrok/default.nix
+++ b/pkgs/development/python-modules/pygrok/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchFromGitHub, regex, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  regex,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "pygrok";
@@ -14,14 +20,14 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ regex ];
 
-  nativeCheckInputs =  [ pytest ];
+  nativeCheckInputs = [ pytest ];
   checkPhase = ''
     pytest
   '';
 
   meta = with lib; {
     maintainers = with maintainers; [ winpat ];
-    description = "A python implementation of jordansissel's grok regular expression library";
+    description = "Python implementation of jordansissel's grok regular expression library";
     homepage = "https://github.com/garyelephant/pygrok";
     license = licenses.mit;
     platforms = platforms.unix;
diff --git a/pkgs/development/python-modules/pygsl/default.nix b/pkgs/development/python-modules/pygsl/default.nix
index 13a4644962b39..7726badc81978 100644
--- a/pkgs/development/python-modules/pygsl/default.nix
+++ b/pkgs/development/python-modules/pygsl/default.nix
@@ -1,39 +1,48 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, gsl
-, swig
-, numpy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gsl,
+  swig,
+  numpy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pygsl";
-  version = "2.3.3";
+  version = "2.4.0";
   format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-F3m85Bs8sONw0Rv0EAOFK6R1DFHfW4dxuzQmXo4PHfM=";
+  src = fetchFromGitHub {
+    owner = "pygsl";
+    repo = "pygsl";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-7agGgfDUgY6mRry7d38vGGNLJC4dFUniy2M/cnejDDs=";
   };
 
+  # error: no member named 'n' in 'gsl_bspline_workspace'
+  postPatch = lib.optionalString (lib.versionAtLeast gsl.version "2.8") ''
+    substituteInPlace src/bspline/bspline.ic \
+      --replace-fail "self->w->n" "self->w->ncontrol"
+    substituteInPlace swig_src/bspline_wrap.c \
+      --replace-fail "self->w->n;" "self->w->ncontrol;"
+  '';
+
   nativeBuildInputs = [
     gsl.dev
     swig
   ];
-  buildInputs = [
-    gsl
-  ];
-  propagatedBuildInputs = [
-    numpy
-  ];
+  buildInputs = [ gsl ];
+  dependencies = [ numpy ];
+
+  preBuild = ''
+    python setup.py build_ext --inplace
+  '';
 
   preCheck = ''
     cd tests
   '';
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = {
     description = "Python interface for GNU Scientific Library";
diff --git a/pkgs/development/python-modules/pygtail/default.nix b/pkgs/development/python-modules/pygtail/default.nix
index 02f0dce14b591..a2d4a41c80aeb 100644
--- a/pkgs/development/python-modules/pygtail/default.nix
+++ b/pkgs/development/python-modules/pygtail/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchFromGitHub }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+}:
 
 buildPythonPackage rec {
   pname = "pygtail";
@@ -19,7 +23,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A library for reading log file lines that have not been read";
+    description = "Library for reading log file lines that have not been read";
     mainProgram = "pygtail";
     license = licenses.gpl2Plus;
     homepage = "https://github.com/bgreenlee/pygtail";
diff --git a/pkgs/development/python-modules/pygtfs/default.nix b/pkgs/development/python-modules/pygtfs/default.nix
index cabb211d484c4..b4a404dc209f8 100644
--- a/pkgs/development/python-modules/pygtfs/default.nix
+++ b/pkgs/development/python-modules/pygtfs/default.nix
@@ -1,51 +1,42 @@
-{ lib
-, buildPythonPackage
-, docopt
-, fetchPypi
-, nose
-, pytz
-, pythonOlder
-, setuptools-scm
-, six
-, sqlalchemy
+{
+  lib,
+  buildPythonPackage,
+  docopt,
+  fetchPypi,
+  pytz,
+  setuptools,
+  setuptools-scm,
+  six,
+  sqlalchemy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pygtfs";
   version = "0.1.9";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.7";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-J5vu51OOMabWd8h60PpvvBiCnwQlhEnBywNXxy9hOuA=";
   };
 
-  postPatch = ''
-    # https://github.com/jarondl/pygtfs/pull/72
-    substituteInPlace setup.py \
-      --replace "pytz>=2012d" "pytz"
-  '';
-
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     docopt
     pytz
     six
     sqlalchemy
   ];
 
-  nativeCheckInputs = [
-    nose
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+  pytestFlagsArray = [ "pygtfs/test/test.py" ];
 
-  pythonImportsCheck = [
-    "pygtfs"
-  ];
+  pythonImportsCheck = [ "pygtfs" ];
 
   meta = with lib; {
     description = "Python module for GTFS";
diff --git a/pkgs/development/python-modules/pygti/default.nix b/pkgs/development/python-modules/pygti/default.nix
index 5c7631a31c3ef..3f9239bd84584 100644
--- a/pkgs/development/python-modules/pygti/default.nix
+++ b/pkgs/development/python-modules/pygti/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools-scm
-, aiohttp
-, pytz
-, voluptuous
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools-scm,
+  aiohttp,
+  pytz,
+  voluptuous,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-2T4Yw4XEOkv+IWyB4Xa2dPu929VH0tLeUjQ5S8EVXz0=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     aiohttp
diff --git a/pkgs/development/python-modules/pygtkspellcheck/default.nix b/pkgs/development/python-modules/pygtkspellcheck/default.nix
index 1f9ac10b9eb45..f392f53a8c1a5 100644
--- a/pkgs/development/python-modules/pygtkspellcheck/default.nix
+++ b/pkgs/development/python-modules/pygtkspellcheck/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, gobject-introspection
-, gtk3
-, poetry-core
-, pyenchant
-, pygobject3
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  gobject-introspection,
+  gtk3,
+  poetry-core,
+  pyenchant,
+  pygobject3,
 }:
 
 buildPythonPackage rec {
@@ -31,14 +32,12 @@ buildPythonPackage rec {
 
   doCheck = false; # there are no tests
 
-  pythonImportsCheck = [
-    "gtkspellcheck"
-  ];
+  pythonImportsCheck = [ "gtkspellcheck" ];
 
   meta = with lib; {
     homepage = "https://github.com/koehlma/pygtkspellcheck";
-    description = "A Python spell-checking library for GtkTextViews based on Enchant";
+    description = "Python spell-checking library for GtkTextViews based on Enchant";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pygtrie/default.nix b/pkgs/development/python-modules/pygtrie/default.nix
index 88a69922988c7..4f4743f04f33e 100644
--- a/pkgs/development/python-modules/pygtrie/default.nix
+++ b/pkgs/development/python-modules/pygtrie/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchPypi, buildPythonPackage, ... }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  ...
+}:
 buildPythonPackage rec {
   pname = "pygtrie";
   version = "2.5.0";
diff --git a/pkgs/development/python-modules/pyhamcrest/default.nix b/pkgs/development/python-modules/pyhamcrest/default.nix
index 951bd81e02e85..791e843f08695 100644
--- a/pkgs/development/python-modules/pyhamcrest/default.nix
+++ b/pkgs/development/python-modules/pyhamcrest/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatch-vcs
-, hatchling
-, numpy
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatch-vcs,
+  hatchling,
+  numpy,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -46,9 +47,7 @@ buildPythonPackage rec {
     "test_numpy_numeric_type_int"
   ];
 
-  pythonImportsCheck = [
-    "hamcrest"
-  ];
+  pythonImportsCheck = [ "hamcrest" ];
 
   meta = with lib; {
     description = "Hamcrest framework for matcher objects";
diff --git a/pkgs/development/python-modules/pyhanko-certvalidator/default.nix b/pkgs/development/python-modules/pyhanko-certvalidator/default.nix
index e55936a8e41c3..d721bb46d2a67 100644
--- a/pkgs/development/python-modules/pyhanko-certvalidator/default.nix
+++ b/pkgs/development/python-modules/pyhanko-certvalidator/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, aiohttp
-, asn1crypto
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, freezegun
-, oscrypto
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
-, uritools
+{
+  lib,
+  aiohttp,
+  asn1crypto,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  freezegun,
+  oscrypto,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
+  uritools,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,7 @@ buildPythonPackage rec {
       --replace ', "pytest-runner",' ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     asn1crypto
@@ -72,15 +71,13 @@ buildPythonPackage rec {
     "test_ed"
   ];
 
-  pythonImportsCheck = [
-    "pyhanko_certvalidator"
-  ];
+  pythonImportsCheck = [ "pyhanko_certvalidator" ];
 
   meta = with lib; {
     description = "Python library for validating X.509 certificates and paths";
     homepage = "https://github.com/MatthiasValvekens/certvalidator";
     changelog = "https://github.com/MatthiasValvekens/certvalidator/blob/v${version}/changelog.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ wolfangaukang ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyhanko/default.nix b/pkgs/development/python-modules/pyhanko/default.nix
index 68d777bd1b281..cf46658aec26d 100644
--- a/pkgs/development/python-modules/pyhanko/default.nix
+++ b/pkgs/development/python-modules/pyhanko/default.nix
@@ -1,78 +1,70 @@
-{ lib
-, aiohttp
-, asn1crypto
-, buildPythonPackage
-, certomancer
-, click
-, cryptography
-, defusedxml
-, fetchFromGitHub
-, fonttools
-, freezegun
-, oscrypto
-, pillow
-, pyhanko-certvalidator
-, pytest-aiohttp
-, pytestCheckHook
-, python-barcode
-, python-pae
-, python-pkcs11
-, pythonOlder
-, pytz
-, pyyaml
-, qrcode
-, requests
-, requests-mock
-, setuptools
-, tzlocal
-, uharfbuzz
-, wheel
-, xsdata
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  asn1crypto,
+  click,
+  cryptography,
+  pyhanko-certvalidator,
+  pyyaml,
+  qrcode,
+  requests,
+  tzlocal,
+
+  # optional-dependencies
+  oscrypto,
+  defusedxml,
+  fonttools,
+  uharfbuzz,
+  pillow,
+  python-barcode,
+  python-pkcs11,
+  aiohttp,
+  xsdata,
+
+  # tests
+  certomancer,
+  freezegun,
+  pytest-aiohttp,
+  pytestCheckHook,
+  python-pae,
+  requests-mock,
 }:
 
 buildPythonPackage rec {
   pname = "pyhanko";
-  version = "0.21.0";
+  version = "0.25.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
-
   src = fetchFromGitHub {
     owner = "MatthiasValvekens";
     repo = "pyHanko";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+RlrXuKMY89mO4iuFw7RLQABy+wLrAeHlEvTDCpBSqU=";
+    hash = "sha256-keWAiqwaMZYh92B0mlR4+jjxBKLOAJ9Kgc0l0GiIQbc=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace ' "pytest-runner",' ""
-  '';
+  build-system = [ setuptools ];
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
-  ];
-
-  propagatedBuildInputs = [
+  dependencies = [
     asn1crypto
     click
     cryptography
     pyhanko-certvalidator
-    pytz
     pyyaml
     qrcode
     requests
     tzlocal
   ];
 
-  passthru.optional-dependencies = {
-    extra-pubkey-algs = [
-      oscrypto
-    ];
-    xmp = [
-      defusedxml
-    ];
+  optional-dependencies = {
+    extra-pubkey-algs = [ oscrypto ];
+    xmp = [ defusedxml ];
     opentype = [
       fonttools
       uharfbuzz
@@ -81,26 +73,20 @@ buildPythonPackage rec {
       pillow
       python-barcode
     ];
-    pkcs11 = [
-      python-pkcs11
-    ];
-    async-http = [
-      aiohttp
-    ];
-    etsi = [
-      xsdata
-    ];
+    pkcs11 = [ python-pkcs11 ];
+    async-http = [ aiohttp ];
+    etsi = [ xsdata ];
   };
 
   nativeCheckInputs = [
     aiohttp
     certomancer
     freezegun
-    python-pae
     pytest-aiohttp
-    requests-mock
     pytestCheckHook
-  ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
+    python-pae
+    requests-mock
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
   disabledTestPaths = [
     # ModuleNotFoundError: No module named 'csc_dummy'
@@ -133,16 +119,17 @@ buildPythonPackage rec {
     "test_ts_fetch_requests"
   ];
 
-  pythonImportsCheck = [
-    "pyhanko"
-  ];
+  pythonImportsCheck = [ "pyhanko" ];
 
-  meta = with lib; {
+  meta = {
     description = "Sign and stamp PDF files";
     mainProgram = "pyhanko";
     homepage = "https://github.com/MatthiasValvekens/pyHanko";
     changelog = "https://github.com/MatthiasValvekens/pyHanko/blob/v${version}/docs/changelog.rst";
-    license = licenses.mit;
-    maintainers = with maintainers; [ wolfangaukang ];
+    license = lib.licenses.mit;
+    maintainers = [ ];
+    # Most tests fail with:
+    # OSError: One or more parameters passed to a function were not valid.
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/pyhaversion/default.nix b/pkgs/development/python-modules/pyhaversion/default.nix
index 204b8526d8790..c4c5417ae47bc 100644
--- a/pkgs/development/python-modules/pyhaversion/default.nix
+++ b/pkgs/development/python-modules/pyhaversion/default.nix
@@ -1,35 +1,39 @@
-{ lib
-, aiohttp
-, aresponses
-, awesomeversion
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  aiohttp,
+  aresponses,
+  awesomeversion,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pyhaversion";
-  version = "23.1.0";
-  format = "setuptools";
+  version = "24.6.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.12";
 
   src = fetchFromGitHub {
     owner = "ludeeus";
-    repo = pname;
+    repo = "pyhaversion";
     rev = "refs/tags/${version}";
-    hash = "sha256-HMJqZn0yzN2dP5WTRCbem1Xw8nyH2Hy7oVP4kEKHHAo=";
+    hash = "sha256-UZ9236mERoz3WG9MfeN1ALKc8OjqpcbbIhiEsRYzn4I=";
   };
 
   postPatch = ''
     # Upstream doesn't set a version for the tagged releases
-    substituteInPlace setup.py \
-      --replace "main" ${version}
+    substituteInPlace pyproject.toml \
+      --replace-fail 'version = "0"' 'version = "${version}"'
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ poetry-core ];
+
+  dependencies = [
     aiohttp
     awesomeversion
   ];
@@ -40,9 +44,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pyhaversion"
-  ];
+  pythonImportsCheck = [ "pyhaversion" ];
 
   disabledTests = [
     # Error fetching version information from HaVersionSource.SUPERVISOR Server disconnected
diff --git a/pkgs/development/python-modules/pyhcl/default.nix b/pkgs/development/python-modules/pyhcl/default.nix
index efa9bed666137..d4abb9fabaae3 100644
--- a/pkgs/development/python-modules/pyhcl/default.nix
+++ b/pkgs/development/python-modules/pyhcl/default.nix
@@ -1,11 +1,12 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, isPy3k
-, lib
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy3k,
+  lib,
 
-# pythonPackages
-, coverage
-, pytest
+  # pythonPackages
+  coverage,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -41,8 +42,6 @@ buildPythonPackage rec {
     mainProgram = "hcltool";
     homepage = "https://github.com/virtuald/pyhcl";
     license = licenses.mpl20;
-    maintainers = with maintainers; [
-      kamadorueda
-    ];
+    maintainers = with maintainers; [ kamadorueda ];
   };
 }
diff --git a/pkgs/development/python-modules/pyheck/default.nix b/pkgs/development/python-modules/pyheck/default.nix
index 123ebe3db9785..fca55ff984b5c 100644
--- a/pkgs/development/python-modules/pyheck/default.nix
+++ b/pkgs/development/python-modules/pyheck/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, cargo
-, fetchFromGitHub
-, libiconv
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, rustc
-, rustPlatform
-, stdenv
+{
+  lib,
+  buildPythonPackage,
+  cargo,
+  fetchFromGitHub,
+  libiconv,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  rustc,
+  rustPlatform,
+  stdenv,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-mfXkrCbBaJ0da+taKJvfyU5NS43tYJWqtTUXiCLVoGQ=";
   };
 
-  cargoDeps = rustPlatform.importCargoLock {
-    lockFile = ./Cargo.lock;
-  };
+  cargoDeps = rustPlatform.importCargoLock { lockFile = ./Cargo.lock; };
 
   postPatch = ''
     ln -s ${./Cargo.lock} Cargo.lock
@@ -41,15 +40,11 @@ buildPythonPackage rec {
     rustPlatform.maturinBuildHook
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyheck"
-  ];
+  pythonImportsCheck = [ "pyheck" ];
 
   meta = with lib; {
     description = "Python bindings for heck, the Rust case conversion library";
diff --git a/pkgs/development/python-modules/pyheif/default.nix b/pkgs/development/python-modules/pyheif/default.nix
index 65b895b340da7..1771bf1ea7f95 100644
--- a/pkgs/development/python-modules/pyheif/default.nix
+++ b/pkgs/development/python-modules/pyheif/default.nix
@@ -1,26 +1,45 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cffi
-, libheif
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  cffi,
+  libheif,
+  piexif,
+  pillow,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pyheif";
-  version = "0.7.1";
-  format = "setuptools";
+  version = "0.8.0";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-hqXFF0N51xRrXtGmiJL69yaKE1+39QOaARv7em6QMgA=";
+  src = fetchFromGitHub {
+    owner = "carsales";
+    repo = "pyheif";
+    rev = "refs/tags/release-${version}";
+    hash = "sha256-7De8ekDceSkUcOgK7ppKad5W5qE0yxdS4kbgYVjxTGg=";
   };
 
-  propagatedBuildInputs = [ cffi libheif ];
+  build-system = [ setuptools ];
+
+  buildInputs = [ libheif ];
+
+  dependencies = [ cffi ];
+
+  pythonImportsCheck = [ "pyheif" ];
+
+  nativeCheckInputs = [
+    piexif
+    pillow
+    pytestCheckHook
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/carsales/pyheif";
     description = "Python interface to libheif library";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyheos/default.nix b/pkgs/development/python-modules/pyheos/default.nix
index 1600baba392d6..15f1f30a1fa37 100644
--- a/pkgs/development/python-modules/pyheos/default.nix
+++ b/pkgs/development/python-modules/pyheos/default.nix
@@ -1,23 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pyheos";
-  version = "0.7.2";
-  format = "setuptools";
+  version = "0.7.4";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "andrewsayre";
     repo = "pyheos";
-    rev = version;
-    sha256 = "0rgzg7lnqzzqrjp73c1hj1hq8p0j0msyih3yr4wa2rj81s8ihmby";
+    rev = "refs/tags/${version}";
+    hash = "sha256-vz81FepXWcCdlY1v7ozp+/l+XpYb91mNmRiLKwjrC4A=";
   };
 
+  build-system = [ setuptools ];
+
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
@@ -26,15 +29,12 @@ buildPythonPackage rec {
   disabledTests = [
     # accesses network
     "test_connect_timeout"
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    # stuck in epoll
-    "test_disconnect"
-    "test_commands_fail_when_disconnected"
   ];
 
   pythonImportsCheck = [ "pyheos" ];
 
   meta = with lib; {
+    changelog = "https://github.com/andrewsayre/pyheos/releases/tag/${version}";
     description = "Async python library for controlling HEOS devices through the HEOS CLI Protocol";
     homepage = "https://github.com/andrewsayre/pyheos";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/pyhepmc/default.nix b/pkgs/development/python-modules/pyhepmc/default.nix
index 1019d573a46e5..7161ad2fcfb66 100644
--- a/pkgs/development/python-modules/pyhepmc/default.nix
+++ b/pkgs/development/python-modules/pyhepmc/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cmake
-, setuptools
-, setuptools-scm
-, numpy
-, pybind11
-, wheel
-, pytestCheckHook
-, pythonOlder
-, graphviz
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cmake,
+  setuptools,
+  setuptools-scm,
+  numpy,
+  pybind11,
+  wheel,
+  pytestCheckHook,
+  pythonOlder,
+  graphviz,
 }:
 
 buildPythonPackage rec {
@@ -34,13 +35,9 @@ buildPythonPackage rec {
     wheel
   ];
 
-  buildInputs = [
-    pybind11
-  ];
+  buildInputs = [ pybind11 ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   dontUseCmakeConfigure = true;
 
@@ -65,4 +62,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ veprbl ];
   };
 }
-
diff --git a/pkgs/development/python-modules/pyhiveapi/default.nix b/pkgs/development/python-modules/pyhiveapi/default.nix
index 341e08186470c..4b782f86c0809 100644
--- a/pkgs/development/python-modules/pyhiveapi/default.nix
+++ b/pkgs/development/python-modules/pyhiveapi/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, unasync
-, boto3
-, botocore
-, requests
-, aiohttp
-, pyquery
-, loguru
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  unasync,
+  boto3,
+  botocore,
+  requests,
+  aiohttp,
+  pyquery,
+  loguru,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyhocon/default.nix b/pkgs/development/python-modules/pyhocon/default.nix
index a7c2bb2b6576d..ce479ce4c2da4 100644
--- a/pkgs/development/python-modules/pyhocon/default.nix
+++ b/pkgs/development/python-modules/pyhocon/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pyparsing
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  pyparsing,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pyhocon";
-  version = "0.3.60";
+  version = "0.3.61";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -19,7 +20,7 @@ buildPythonPackage rec {
     owner = "chimpler";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-H460j/DjY1lltapva3l87oyOJVjzUE9Q/oKti3SsUyU=";
+    hash = "sha256-xXx30uxJ8+KPVdYC6yRzEDJbwYSzIO/Gy1xrehvI5ZE=";
   };
 
   propagatedBuildInputs = [
@@ -37,9 +38,7 @@ buildPythonPackage rec {
       --replace "pyparsing~=2.0" "pyparsing>=2.0"
   '';
 
-  pythonImportsCheck = [
-    "pyhocon"
-  ];
+  pythonImportsCheck = [ "pyhocon" ];
 
   disabledTestPaths = [
     # pyparsing.exceptions.ParseException: Expected end of text, found '='
diff --git a/pkgs/development/python-modules/pyhomematic/default.nix b/pkgs/development/python-modules/pyhomematic/default.nix
index 03e7babfb4fe7..8b6b6e68627c7 100644
--- a/pkgs/development/python-modules/pyhomematic/default.nix
+++ b/pkgs/development/python-modules/pyhomematic/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, isPy3k
-, fetchPypi
-, python
+{
+  lib,
+  buildPythonPackage,
+  isPy3k,
+  fetchPypi,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -14,7 +15,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-uB9aDa1urIwL2DBdBwPi0sHWPW7SUZ3EaAjuMLSOudc=";
+    hash = "sha256-uB9aDa1urIwL2DBdBwPi0sHWPW7SUZ3EaAjuMLSOudc=";
   };
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/pyhomepilot/default.nix b/pkgs/development/python-modules/pyhomepilot/default.nix
index 80eacd42b39f5..db00d9190ff05 100644
--- a/pkgs/development/python-modules/pyhomepilot/default.nix
+++ b/pkgs/development/python-modules/pyhomepilot/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     sha256 = "00gmqx8cwsd15iccnlr8ypgqrdg6nw9ha518cfk7pyp8vhw1ziwy";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/pyhomeworks/default.nix b/pkgs/development/python-modules/pyhomeworks/default.nix
index 085107c4ad26a..72b4c432de088 100644
--- a/pkgs/development/python-modules/pyhomeworks/default.nix
+++ b/pkgs/development/python-modules/pyhomeworks/default.nix
@@ -1,28 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyhomeworks";
-  version = "0.0.6";
-  format = "setuptools";
+  version = "1.1.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "Eqbm8274B2hBuF+mREe8lqGhpzZExPJ29jzvwB5RNR8=";
+    hash = "sha256-Jq+rjhjmnPFNaEuCHyi+8i20RgLf1rpZg6QqwE7ax7M=";
   };
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "setuptools~=69.2.0" "setuptools"
+  '';
+
+  build-system = [ setuptools ];
+
   # Project has no real tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyhomeworks"
-  ];
+  pythonImportsCheck = [ "pyhomeworks" ];
 
   meta = with lib; {
     description = "Python interface to Lutron Homeworks Series 4/8";
diff --git a/pkgs/development/python-modules/pyhumps/default.nix b/pkgs/development/python-modules/pyhumps/default.nix
index b7ed9548e3a26..e5f36fe22d9d7 100644
--- a/pkgs/development/python-modules/pyhumps/default.nix
+++ b/pkgs/development/python-modules/pyhumps/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-ElL/LY2V2Z3efdV5FnDy9dSoBltULrzxsjaOx+7W9Oo=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "humps"
-  ];
+  pythonImportsCheck = [ "humps" ];
 
   meta = with lib; {
     description = "Module to convert strings (and dictionary keys) between snake case, camel case and pascal case";
diff --git a/pkgs/development/python-modules/pyi2cflash/default.nix b/pkgs/development/python-modules/pyi2cflash/default.nix
index 7a8a0ac595a6a..a0b47a94cecb8 100644
--- a/pkgs/development/python-modules/pyi2cflash/default.nix
+++ b/pkgs/development/python-modules/pyi2cflash/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyftdi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyftdi,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     sha256 = "1nkazgf7pajz7jym5rfy2df71lyfp4skxqbrg5ch0h4dwjdwllx1";
   };
 
-  propagatedBuildInputs = [
-    pyftdi
-  ];
+  propagatedBuildInputs = [ pyftdi ];
 
   # tests are not shipped with the PyPI source
   doCheck = false;
diff --git a/pkgs/development/python-modules/pyialarm/default.nix b/pkgs/development/python-modules/pyialarm/default.nix
index 6e2264b017eaf..f76788180202b 100644
--- a/pkgs/development/python-modules/pyialarm/default.nix
+++ b/pkgs/development/python-modules/pyialarm/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, dicttoxml2
-, fetchFromGitHub
-, pythonOlder
-, xmltodict
+{
+  lib,
+  buildPythonPackage,
+  dicttoxml2,
+  fetchFromGitHub,
+  pythonOlder,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyialarm"
-  ];
+  pythonImportsCheck = [ "pyialarm" ];
 
   meta = with lib; {
     description = "Python library to interface with Antifurto365 iAlarm systems";
diff --git a/pkgs/development/python-modules/pyicloud/default.nix b/pkgs/development/python-modules/pyicloud/default.nix
index daa442a573054..3cdd75e17b619 100644
--- a/pkgs/development/python-modules/pyicloud/default.nix
+++ b/pkgs/development/python-modules/pyicloud/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
-, setuptools
-, certifi
-, click
-, keyring
-, keyrings-alt
-, pytz
-, requests
-, six
-, tzlocal
-, pytest-mock
-, pytestCheckHook
-, future
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonAtLeast,
+  setuptools,
+  certifi,
+  click,
+  keyring,
+  keyrings-alt,
+  pytz,
+  requests,
+  six,
+  tzlocal,
+  pytest-mock,
+  pytestCheckHook,
+  future,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     hash = "sha256-2E1pdHHt8o7CGpdG+u4xy5OyNCueUGVw5CY8oicYd5w=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     certifi
diff --git a/pkgs/development/python-modules/pyicu/default.nix b/pkgs/development/python-modules/pyicu/default.nix
index c44bfcd29974b..8dd0fb09c7405 100644
--- a/pkgs/development/python-modules/pyicu/default.nix
+++ b/pkgs/development/python-modules/pyicu/default.nix
@@ -1,25 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, six
-, icu
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  six,
+  icu,
 }:
 
 buildPythonPackage rec {
   pname = "pyicu";
-  version = "2.12";
+  version = "2.13.1";
   format = "setuptools";
 
   src = fetchPypi {
     pname = "PyICU";
     inherit version;
-    hash = "sha256-vXq176k61pLm2qKc0kk2TlISGDKSIXJqETyjyygchhE=";
+    hash = "sha256-1JGQheqgfaErrejuch57v3reAVHKD4KUaibI9LmM3Os=";
   };
 
   nativeBuildInputs = [ icu ]; # for icu-config, but should be replaced with pkg-config
   buildInputs = [ icu ];
-  nativeCheckInputs = [ pytestCheckHook six ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    six
+  ];
 
   pythonImportsCheck = [ "icu" ];
 
diff --git a/pkgs/development/python-modules/pyicumessageformat/default.nix b/pkgs/development/python-modules/pyicumessageformat/default.nix
new file mode 100644
index 0000000000000..f37cee1ad919e
--- /dev/null
+++ b/pkgs/development/python-modules/pyicumessageformat/default.nix
@@ -0,0 +1,33 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "pyicumessageformat";
+  version = "1.0.0";
+  pyproject = true;
+  build-system = [ setuptools ];
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-s+l8DtEMKxA/DzpwGqZSlwDqCrZuDzsj3I5K7hgfyEA=";
+  };
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "pyicumessageformat" ];
+
+  meta = with lib; {
+    description = "Unopinionated Python3 parser for ICU MessageFormat";
+    homepage = "https://github.com/SirStendec/pyicumessageformat/";
+    # Based on master, as upstream doesn't tag their releases on GitHub anymore
+    changelog = "https://github.com/SirStendec/pyicumessageformat/blob/master/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ erictapen ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyimpfuzzy/default.nix b/pkgs/development/python-modules/pyimpfuzzy/default.nix
index 39bbee74e539d..469fa542aa873 100644
--- a/pkgs/development/python-modules/pyimpfuzzy/default.nix
+++ b/pkgs/development/python-modules/pyimpfuzzy/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, ssdeep
-, pefile
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  ssdeep,
+  pefile,
 }:
 buildPythonPackage rec {
   pname = "pyimpfuzzy";
@@ -14,23 +15,17 @@ buildPythonPackage rec {
     sha256 = "da9796df302db4b04a197128637f84988f1882f1e08fdd69bbf9fdc6cfbaf349";
   };
 
-  buildInputs = [
-    ssdeep
-  ];
+  buildInputs = [ ssdeep ];
 
-  propagatedBuildInputs = [
-    pefile
-  ];
+  propagatedBuildInputs = [ pefile ];
 
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyimpfuzzy"
-  ];
+  pythonImportsCheck = [ "pyimpfuzzy" ];
 
   meta = with lib; {
-    description = "A Python module which calculates and compares the impfuzzy (import fuzzy hashing)";
+    description = "Python module which calculates and compares the impfuzzy (import fuzzy hashing)";
     homepage = "https://github.com/JPCERTCC/impfuzzy";
     license = licenses.gpl2Only;
     maintainers = [ ];
diff --git a/pkgs/development/python-modules/pyindego/default.nix b/pkgs/development/python-modules/pyindego/default.nix
index b83aa414bc8cd..606ced6751213 100644
--- a/pkgs/development/python-modules/pyindego/default.nix
+++ b/pkgs/development/python-modules/pyindego/default.nix
@@ -1,36 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, aiohttp
-, requests
-, pytz
+  # dependencies
+  aiohttp,
+  requests,
+  pytz,
 
-# tests
-, mock
-, pytest-aiohttp
-, pytest-asyncio
-, pytestCheckHook
+  # tests
+  mock,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pyindego";
-  version = "3.1.1";
+  version = "3.2.2";
   pyproject = true;
 
-  src = fetchPypi {
-    pname = "pyIndego";
-    inherit version;
-    hash = "sha256-lRDi6qYMaPI8SiSNe0vzlKb92axujt44aei8opNPDug=";
+  src = fetchFromGitHub {
+    owner = "sander1988";
+    repo = "pyIndego";
+    rev = "refs/tags/${version}";
+    hash = "sha256-x8/MSbn+urmArQCyxZU1JEUyATJsPzp7bflymE+1rkk=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  postPatch = ''
+    sed -i "/addopts/d" pytest.ini
+  '';
+
+  build-system = [ setuptools ];
 
   dependencies = [
     aiohttp
@@ -52,14 +56,12 @@ buildPythonPackage rec {
     "test_update_battery"
   ];
 
-  pythonImportsCheck = [
-    "pyIndego"
-  ];
+  pythonImportsCheck = [ "pyIndego" ];
 
   meta = with lib; {
     description = "Python interface for Bosch API for lawnmowers";
-    homepage = "https://github.com/jm-73/pyIndego";
-    changelog = "https://github.com/jm-73/pyIndego/blob/${version}/CHANGELOG.md";
+    homepage = "https://github.com/sander1988/pyIndego";
+    changelog = "https://github.com/sander1988/pyIndego/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ hexa ];
   };
diff --git a/pkgs/development/python-modules/pyinfra/default.nix b/pkgs/development/python-modules/pyinfra/default.nix
index 1a32aa2ac6fbf..9492aa9484789 100644
--- a/pkgs/development/python-modules/pyinfra/default.nix
+++ b/pkgs/development/python-modules/pyinfra/default.nix
@@ -1,57 +1,60 @@
-{ lib
-, buildPythonPackage
-, click
-, colorama
-, configparser
-, distro
-, fetchFromGitHub
-, fetchpatch
-, gevent
-, jinja2
-, paramiko
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, pywinrm
-, pyyaml
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  click,
+  colorama,
+  configparser,
+  distro,
+  fetchFromGitHub,
+  gevent,
+  jinja2,
+  packaging,
+  paramiko,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  pywinrm,
+  pyyaml,
+  setuptools,
+  typeguard,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "pyinfra";
-  version = "2.9.2";
-  format = "setuptools";
+  version = "3.1.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "Fizzadar";
-    repo = pname;
+    repo = "pyinfra";
     rev = "refs/tags/v${version}";
-    hash = "sha256-lzbFwAg1aLCfBnSnqq4oVteArpkRBa7hU8V3vB5ODa8=";
+    hash = "sha256-NHQpYOXlqFU4BtiwiESGV8pM0O8kqCz2TpXOGz8T4zQ=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     click
     colorama
     configparser
     distro
     gevent
     jinja2
+    packaging
     paramiko
     python-dateutil
     pywinrm
     pyyaml
     setuptools
-  ];
+    typeguard
+  ] ++ lib.optionals (pythonOlder "3.10") [ typing-extensions ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyinfra"
-  ];
+  pythonImportsCheck = [ "pyinfra" ];
 
   disabledTests = [
     # Test requires SSH binary
@@ -60,7 +63,6 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python-based infrastructure automation";
-    mainProgram = "pyinfra";
     longDescription = ''
       pyinfra automates/provisions/manages/deploys infrastructure. It can be used for
       ad-hoc command execution, service deployment, configuration management and more.
@@ -68,7 +70,8 @@ buildPythonPackage rec {
     homepage = "https://pyinfra.com";
     downloadPage = "https://pyinfra.com/Fizzadar/pyinfra/releases";
     changelog = "https://github.com/Fizzadar/pyinfra/blob/v${version}/CHANGELOG.md";
-    maintainers = with maintainers; [ totoroot ];
     license = licenses.mit;
+    maintainers = with maintainers; [ totoroot ];
+    mainProgram = "pyinfra";
   };
 }
diff --git a/pkgs/development/python-modules/pyinotify/default.nix b/pkgs/development/python-modules/pyinotify/default.nix
index 9a2a99765504a..8232ab456719f 100644
--- a/pkgs/development/python-modules/pyinotify/default.nix
+++ b/pkgs/development/python-modules/pyinotify/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -13,14 +14,17 @@ buildPythonPackage rec {
     sha256 = "1x3i9wmzw33fpkis203alygfnrkcmq9w1aydcm887jh6frfqm6cw";
   };
 
+  patches = [ ./skip-asyncore-python-3.12.patch ];
+
   # No tests distributed
   doCheck = false;
 
+  pythonImportsCheck = [ "pyinotify" ];
+
   meta = with lib; {
     homepage = "https://github.com/seb-m/pyinotify/wiki";
     description = "Monitor filesystems events on Linux platforms with inotify";
     license = licenses.mit;
     platforms = platforms.linux;
   };
-
 }
diff --git a/pkgs/development/python-modules/pyinotify/skip-asyncore-python-3.12.patch b/pkgs/development/python-modules/pyinotify/skip-asyncore-python-3.12.patch
new file mode 100644
index 0000000000000..6f8f65545b8c3
--- /dev/null
+++ b/pkgs/development/python-modules/pyinotify/skip-asyncore-python-3.12.patch
@@ -0,0 +1,84 @@
+From 478d595a7d086423733e9f5da5edfe9f1df48682 Mon Sep 17 00:00:00 2001
+From: Troy Curtis Jr <troy@troycurtisjr.com>
+Date: Thu, 10 Aug 2023 21:51:15 -0400
+Subject: [PATCH] Make asyncore support optional for Python 3.
+
+Fixes #204.
+---
+ python3/pyinotify.py | 50 +++++++++++++++++++++++++-------------------
+ 1 file changed, 28 insertions(+), 22 deletions(-)
+
+diff --git a/python3/pyinotify.py b/python3/pyinotify.py
+index bc24313..f4a5a90 100755
+--- a/python3/pyinotify.py
++++ b/python3/pyinotify.py
+@@ -68,7 +68,6 @@ def __init__(self, version):
+ from datetime import datetime, timedelta
+ import time
+ import re
+-import asyncore
+ import glob
+ import locale
+ import subprocess
+@@ -1494,33 +1493,40 @@ def run(self):
+         self.loop()
+ 
+ 
+-class AsyncNotifier(asyncore.file_dispatcher, Notifier):
+-    """
+-    This notifier inherits from asyncore.file_dispatcher in order to be able to
+-    use pyinotify along with the asyncore framework.
++try:
++    import asyncore
+ 
+-    """
+-    def __init__(self, watch_manager, default_proc_fun=None, read_freq=0,
+-                 threshold=0, timeout=None, channel_map=None):
++    class AsyncNotifier(asyncore.file_dispatcher, Notifier):
+         """
+-        Initializes the async notifier. The only additional parameter is
+-        'channel_map' which is the optional asyncore private map. See
+-        Notifier class for the meaning of the others parameters.
++        This notifier inherits from asyncore.file_dispatcher in order to be able to
++        use pyinotify along with the asyncore framework.
+ 
+         """
+-        Notifier.__init__(self, watch_manager, default_proc_fun, read_freq,
+-                          threshold, timeout)
+-        asyncore.file_dispatcher.__init__(self, self._fd, channel_map)
++        def __init__(self, watch_manager, default_proc_fun=None, read_freq=0,
++                     threshold=0, timeout=None, channel_map=None):
++            """
++            Initializes the async notifier. The only additional parameter is
++            'channel_map' which is the optional asyncore private map. See
++            Notifier class for the meaning of the others parameters.
+ 
+-    def handle_read(self):
+-        """
+-        When asyncore tells us we can read from the fd, we proceed processing
+-        events. This method can be overridden for handling a notification
+-        differently.
++            """
++            Notifier.__init__(self, watch_manager, default_proc_fun, read_freq,
++                              threshold, timeout)
++            asyncore.file_dispatcher.__init__(self, self._fd, channel_map)
+ 
+-        """
+-        self.read_events()
+-        self.process_events()
++        def handle_read(self):
++            """
++            When asyncore tells us we can read from the fd, we proceed processing
++            events. This method can be overridden for handling a notification
++            differently.
++
++            """
++            self.read_events()
++            self.process_events()
++except ImportError:
++    # asyncore was removed in Python 3.12, but try the import instead of a
++    # version check in case the compatibility package is installed.
++    pass
+ 
+ 
+ class TornadoAsyncNotifier(Notifier):
diff --git a/pkgs/development/python-modules/pyinputevent/default.nix b/pkgs/development/python-modules/pyinputevent/default.nix
index 1172e595e213d..a0e85755b8e74 100644
--- a/pkgs/development/python-modules/pyinputevent/default.nix
+++ b/pkgs/development/python-modules/pyinputevent/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage {
@@ -21,5 +22,4 @@ buildPythonPackage {
     license = licenses.bsd3;
     platforms = platforms.unix;
   };
-
 }
diff --git a/pkgs/development/python-modules/pyinstaller-hooks-contrib/default.nix b/pkgs/development/python-modules/pyinstaller-hooks-contrib/default.nix
new file mode 100644
index 0000000000000..c3bfee6476174
--- /dev/null
+++ b/pkgs/development/python-modules/pyinstaller-hooks-contrib/default.nix
@@ -0,0 +1,45 @@
+{
+  lib
+, buildPythonPackage
+, fetchPypi
+, setuptools
+}:
+
+buildPythonPackage rec {
+  pname = "pyinstaller-hooks-contrib";
+  version = "2024.8";
+
+  pyproject = true;
+
+  src = fetchPypi {
+    pname = "pyinstaller_hooks_contrib";
+    inherit version;
+    hash = "sha256-KbaNh4q3OelnBVtWqT65tY5SnVsFT7q3ovK6z4DO8+I=";
+  };
+
+  build-system = [ setuptools ];
+
+  # There are tests for every hook, which means that
+  # new updates are going to require changes to test inputs
+  # and building tests creates a very big closure.
+  doCheck = false;
+
+  meta = {
+    description = "Community maintained hooks for PyInstaller";
+    longDescription = ''
+      A "hook" file extends PyInstaller to adapt it to the special needs and methods used by a Python package.
+      The word "hook" is used for two kinds of files. A runtime hook helps the bootloader to launch an app,
+      setting up the environment. A package hook (there are several types of those) tells PyInstaller
+      what to include in the final app - such as the data files and (hidden) imports mentioned above.
+      This repository is a collection of hooks for many packages, and allows PyInstaller to work with these packages seamlessly.
+    '';
+    homepage = "https://github.com/pyinstaller/pyinstaller-hooks-contrib";
+    # See https://github.com/pyinstaller/pyinstaller-hooks-contrib/issues/761
+    changelog = "https://github.com/pyinstaller/pyinstaller-hooks-contrib/blob/master/CHANGELOG.rst";
+    license = with lib.licenses; [
+      gpl2Plus
+      asl20
+    ];
+    maintainers = with lib.maintainers; [ h7x4 ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyinstaller-versionfile/default.nix b/pkgs/development/python-modules/pyinstaller-versionfile/default.nix
index b198bae9ec15c..f941b8dc67c16 100644
--- a/pkgs/development/python-modules/pyinstaller-versionfile/default.nix
+++ b/pkgs/development/python-modules/pyinstaller-versionfile/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, packaging
-, jinja2
-, pyyaml
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  packaging,
+  jinja2,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,17 @@ buildPythonPackage rec {
     hash = "sha256-lz1GuiXU+r8sMld5SsG3qS+FOsWfbvkQmO2bxAR3XcY=";
   };
 
-  propagatedBuildInputs = [ packaging jinja2 pyyaml ];
+  propagatedBuildInputs = [
+    packaging
+    jinja2
+    pyyaml
+  ];
 
   meta = {
-    description = "Create a windows version-file from a simple YAML file that can be used by PyInstaller.";
+    description = "Create a windows version-file from a simple YAML file that can be used by PyInstaller";
     mainProgram = "create-version-file";
     homepage = "https://pypi.org/project/pyinstaller-versionfile/";
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyinstaller/default.nix b/pkgs/development/python-modules/pyinstaller/default.nix
new file mode 100644
index 0000000000000..c8b4d4697202e
--- /dev/null
+++ b/pkgs/development/python-modules/pyinstaller/default.nix
@@ -0,0 +1,67 @@
+{
+  lib
+, buildPythonPackage
+, fetchPypi
+, setuptools
+, zlib
+, altgraph
+, packaging
+, pyinstaller-hooks-contrib
+, testers
+, pyinstaller
+, glibc
+, binutils
+, installShellFiles
+}:
+
+buildPythonPackage rec {
+  pname = "pyinstaller";
+  version = "6.9.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-9KdcVS+swuKjcPHkIrlxteXNtAWP84zqAjWqIfwLN48=";
+  };
+
+
+  build-system = [ setuptools ];
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  buildInputs = [ zlib.dev ];
+
+  dependencies = [
+    altgraph
+    packaging
+    pyinstaller-hooks-contrib
+  ];
+
+  makeWrapperArgs = [
+    "--prefix" "PATH" ":"  (lib.makeBinPath [ glibc binutils ])
+  ];
+
+  postInstall = ''
+    installManPage doc/pyinstaller.1 doc/pyi-makespec.1
+  '';
+
+  pythonImportsCheck = [ "PyInstaller" ];
+
+  passthru.tests.version = testers.testVersion {
+    package = pyinstaller;
+  };
+
+  meta = {
+    description = "A tool to bundle a python application with dependencies into a single package";
+    homepage = "https://pyinstaller.org/";
+    changelog = "https://pyinstaller.org/en/v${version}/CHANGES.html";
+    downloadPage = "https://pypi.org/project/pyinstaller/";
+    license = with lib.licenses; [
+      mit
+      asl20
+      gpl2Plus
+    ];
+    maintainers = with lib.maintainers; [ h7x4 ];
+    mainProgram = "pyinstaller";
+  };
+}
diff --git a/pkgs/development/python-modules/pyinsteon/default.nix b/pkgs/development/python-modules/pyinsteon/default.nix
index 22242ee62bf49..fe3c2dc444d75 100644
--- a/pkgs/development/python-modules/pyinsteon/default.nix
+++ b/pkgs/development/python-modules/pyinsteon/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, aiofiles
-, aiohttp
-, async-timeout
-, async-generator
-, buildPythonPackage
-, fetchFromGitHub
-, pypubsub
-, pyserial
-, pyserial-asyncio
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, setuptools
-, voluptuous
+{
+  lib,
+  aiofiles,
+  aiohttp,
+  async-timeout,
+  async-generator,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pypubsub,
+  pyserial,
+  pyserial-asyncio,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
+  voluptuous,
 }:
 
 buildPythonPackage rec {
   pname = "pyinsteon";
-  version = "1.5.3";
+  version = "1.6.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,12 +27,10 @@ buildPythonPackage rec {
     owner = "pyinsteon";
     repo = "pyinsteon";
     rev = "refs/tags/${version}";
-    hash = "sha256-9d6QbekUv63sjKdK+ZogYOkGfFXVW+JB6ITHnehLwtM=";
+    hash = "sha256-SyhPM3NS7iJX8jwTJ4YWZ72eYLn9JT6eESekPf5eCKI=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     aiofiles
@@ -48,14 +47,17 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  disabledTests = [
+    # RuntimeError: BUG: Dead Listener called, still subscribed!
+    "test_linking_with_i1_device"
+  ];
+
   disabledTestPaths = lib.optionals (pythonAtLeast "3.12") [
     # Tests are blocking or failing
     "tests/test_handlers/"
   ];
 
-  pythonImportsCheck = [
-    "pyinsteon"
-  ];
+  pythonImportsCheck = [ "pyinsteon" ];
 
   meta = with lib; {
     description = "Python library to support Insteon home automation projects";
diff --git a/pkgs/development/python-modules/pyinstrument/default.nix b/pkgs/development/python-modules/pyinstrument/default.nix
index 1646fcd1d115a..4cda737f82e70 100644
--- a/pkgs/development/python-modules/pyinstrument/default.nix
+++ b/pkgs/development/python-modules/pyinstrument/default.nix
@@ -1,15 +1,15 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "pyinstrument";
-  version = "4.6.0";
+  version = "4.7.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "joerick";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-NSE2mZPbKmvlQbBPx0MoqYfAOjmsf9CllX7dxygZfc4=";
+    hash = "sha256-Dvpx6Bf4obHL3inzIHhOrM3u/7X+0NRfEAyynDjtEwE=";
   };
 
   nativeBuildInputs = [
@@ -29,9 +29,7 @@ buildPythonPackage rec {
   # Module import recursion
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyinstrument"
-  ];
+  pythonImportsCheck = [ "pyinstrument" ];
 
   meta = with lib; {
     description = "Call stack profiler for Python";
diff --git a/pkgs/development/python-modules/pyintesishome/default.nix b/pkgs/development/python-modules/pyintesishome/default.nix
index 6d53d7bc2eb55..fa4b02f85e158 100644
--- a/pkgs/development/python-modules/pyintesishome/default.nix
+++ b/pkgs/development/python-modules/pyintesishome/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-QgIvIn8I5EtJSNj1FdOI+DPgG7/y2ToQ62dhk7flieo=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyintesishome"
-  ];
+  pythonImportsCheck = [ "pyintesishome" ];
 
   meta = with lib; {
     description = "Python interface for IntesisHome devices";
diff --git a/pkgs/development/python-modules/pyipma/default.nix b/pkgs/development/python-modules/pyipma/default.nix
index 9f74c16a0c067..f6df4bf932725 100644
--- a/pkgs/development/python-modules/pyipma/default.nix
+++ b/pkgs/development/python-modules/pyipma/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, freezegun
-, mock
-, geopy
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  mock,
+  geopy,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -38,9 +39,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pyipma"
-  ];
+  pythonImportsCheck = [ "pyipma" ];
 
   disabledTestPaths = [
     # Tests require network access
diff --git a/pkgs/development/python-modules/pyipp/default.nix b/pkgs/development/python-modules/pyipp/default.nix
index bfeb5e4a5eeef..284fb8368ffd7 100644
--- a/pkgs/development/python-modules/pyipp/default.nix
+++ b/pkgs/development/python-modules/pyipp/default.nix
@@ -1,49 +1,49 @@
-{ lib
-, aiohttp
-, aresponses
-, awesomeversion
-, backoff
-, buildPythonPackage
-, deepmerge
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  async-timeout,
+  awesomeversion,
+  backoff,
+  buildPythonPackage,
+  deepmerge,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "pyipp";
-  version = "0.15.0";
-  format = "pyproject";
+  version = "0.16.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
-   owner = "ctalkington";
-   repo = "python-ipp";
-   rev = "refs/tags/${version}";
-   hash = "sha256-k7NSCmugGov+lJXWeopUwKkGKL/EGhvxSSiby4CcmFM=";
+    owner = "ctalkington";
+    repo = "python-ipp";
+    rev = "refs/tags/${version}";
+    hash = "sha256-ddI9K0lJDZbVgO+hptP4I+EH//5vOoFDYXWxGALF8Ik=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace 'version = "0.0.0"' 'version = "${version}"' \
-      --replace "--cov" ""
+      --replace-fail 'version = "0.0.0"' 'version = "${version}"' \
+      --replace-fail "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     awesomeversion
     backoff
     deepmerge
     yarl
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ async-timeout ];
 
   nativeCheckInputs = [
     aresponses
@@ -53,9 +53,7 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [
-    "pyipp"
-  ];
+  pythonImportsCheck = [ "pyipp" ];
 
   meta = with lib; {
     changelog = "https://github.com/ctalkington/python-ipp/releases/tag/${version}";
diff --git a/pkgs/development/python-modules/pyipv8/default.nix b/pkgs/development/python-modules/pyipv8/default.nix
index 24f0ba95c0638..d4efef40e2d74 100644
--- a/pkgs/development/python-modules/pyipv8/default.nix
+++ b/pkgs/development/python-modules/pyipv8/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, cryptography
-, libnacl
-, aiohttp
-, aiohttp-apispec
-, pyopenssl
-, pyasn1
-, marshmallow
-, typing-extensions
-, packaging
-, apispec
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  cryptography,
+  libnacl,
+  aiohttp,
+  aiohttp-apispec,
+  pyopenssl,
+  pyasn1,
+  marshmallow,
+  typing-extensions,
+  packaging,
+  apispec,
 }:
 
 buildPythonPackage rec {
@@ -41,8 +42,6 @@ buildPythonPackage rec {
     description = "Python implementation of Tribler's IPv8 p2p-networking layer";
     homepage = "https://github.com/Tribler/py-ipv8";
     license = licenses.lgpl3Only;
-    maintainers = with maintainers; [
-      mkg20001
-    ];
+    maintainers = with maintainers; [ mkg20001 ];
   };
 }
diff --git a/pkgs/development/python-modules/pyiqvia/default.nix b/pkgs/development/python-modules/pyiqvia/default.nix
index 1c3669bc1aa76..dbc41c1c78516 100644
--- a/pkgs/development/python-modules/pyiqvia/default.nix
+++ b/pkgs/development/python-modules/pyiqvia/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, buildPythonPackage
-, aiohttp
-, aresponses
-, backoff
-, certifi
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, pytest-aiohttp
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, yarl
+{
+  lib,
+  buildPythonPackage,
+  aiohttp,
+  aresponses,
+  backoff,
+  certifi,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +28,7 @@ buildPythonPackage rec {
     hash = "sha256-qq6UQUz60WkmWqdmExlSQT3wapaHJr8DeH1eVrTOnpQ=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -53,9 +51,7 @@ buildPythonPackage rec {
     "examples/"
   ];
 
-  pythonImportsCheck = [
-    "pyiqvia"
-  ];
+  pythonImportsCheck = [ "pyiqvia" ];
 
   meta = with lib; {
     description = "Module for working with IQVIA data";
diff --git a/pkgs/development/python-modules/pyisbn/default.nix b/pkgs/development/python-modules/pyisbn/default.nix
index eec0e4b039ad4..fc4b9973c2dd7 100644
--- a/pkgs/development/python-modules/pyisbn/default.nix
+++ b/pkgs/development/python-modules/pyisbn/default.nix
@@ -1,36 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hypothesis
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  hypothesis,
+  pythonOlder,
+  pytestCheckHook,
+  pytest-cov-stub,
 }:
 
 buildPythonPackage rec {
   pname = "pyisbn";
   version = "1.3.1";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "06fm9rn31cb4b61hzy63cnwfjpppgyy517k8a04gzcv9g60n7xbh";
+    hash = "sha256-cPVjgXlps/8IUGieULx/917puGXD+A+DWWSxMGxO1Rk=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "--cov pyisbn --cov-report term-missing --no-cov-on-fail" ""
-  '';
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     hypothesis
     pytestCheckHook
+    pytest-cov-stub
   ];
 
-  pythonImportsCheck = [
-    "pyisbn"
-  ];
+  pythonImportsCheck = [ "pyisbn" ];
 
   meta = with lib; {
     description = "Python module for working with 10- and 13-digit ISBNs";
diff --git a/pkgs/development/python-modules/pyisemail/default.nix b/pkgs/development/python-modules/pyisemail/default.nix
index dfa60a85eaf65..df26b5a3602e7 100644
--- a/pkgs/development/python-modules/pyisemail/default.nix
+++ b/pkgs/development/python-modules/pyisemail/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, dnspython
-, fetchFromGitHub
-, hatchling
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dnspython,
+  fetchFromGitHub,
+  hatchling,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-bJCaVUhvEAoQ8zMsbcb1Et728XHt+shEPhhBzPzY/vo=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
-  propagatedBuildInputs = [
-    dnspython
-  ];
+  propagatedBuildInputs = [ dnspython ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyisemail"
-  ];
+  pythonImportsCheck = [ "pyisemail" ];
 
   meta = with lib; {
     description = "Module for email validation";
diff --git a/pkgs/development/python-modules/pyisy/default.nix b/pkgs/development/python-modules/pyisy/default.nix
index 13a5a9e8f9d84..1409c6525a6b3 100644
--- a/pkgs/development/python-modules/pyisy/default.nix
+++ b/pkgs/development/python-modules/pyisy/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, colorlog
-, fetchFromGitHub
-, python-dateutil
-, pythonOlder
-, requests
-, setuptools-scm
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  colorlog,
+  fetchFromGitHub,
+  python-dateutil,
+  pythonOlder,
+  requests,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
       --replace 'version_format="{tag}"' 'version="${version}"'
   '';
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     aiohttp
diff --git a/pkgs/development/python-modules/pyixapi/default.nix b/pkgs/development/python-modules/pyixapi/default.nix
index e452224d9e4f9..50c825dcc959d 100644
--- a/pkgs/development/python-modules/pyixapi/default.nix
+++ b/pkgs/development/python-modules/pyixapi/default.nix
@@ -1,9 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, poetry-core
-, requests
-, pyjwt
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pyjwt,
+  pythonOlder,
+  pytestCheckHook,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -11,26 +14,32 @@ buildPythonPackage rec {
   version = "0.2.3";
   pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-qkgPBIYv9xzGa29RiPAU3zNhcyutTUX1Vkmpd9YdeJU=";
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "peering-manager";
+    repo = "pyixapi";
+    rev = "refs/tags/${version}";
+    hash = "sha256-IiLjxOtyxGSaItxgEbsF8AER/j4Qe7SP9ZAEPjTiYI4=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  pythonRelaxDeps = [ "pyjwt" ];
+
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     requests
     pyjwt
   ];
 
+  nativeCheckInputs = [ pytestCheckHook ];
+
   pythonImportsCheck = [ "pyixapi" ];
 
   meta = with lib; {
+    description = "Python API client library for IX-API";
     homepage = "https://github.com/peering-manager/pyixapi/";
     changelog = "https://github.com/peering-manager/pyixapi/releases/tag/${version}";
-    description = "Python API client library for IX-API";
     license = licenses.asl20;
     maintainers = teams.wdz.members;
   };
diff --git a/pkgs/development/python-modules/pyjet/default.nix b/pkgs/development/python-modules/pyjet/default.nix
deleted file mode 100644
index ed0a5281e0fa4..0000000000000
--- a/pkgs/development/python-modules/pyjet/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib, buildPythonPackage, pythonOlder, fetchFromGitHub, cython, pytest, importlib-resources, numpy }:
-
-buildPythonPackage rec {
-  pname = "pyjet";
-  version = "1.9.0";
-  format = "setuptools";
-
-  # tests not included in pypi tarball
-  src = fetchFromGitHub {
-    owner = "scikit-hep";
-    repo = pname;
-    rev = "refs/tags/${version}";
-    hash = "sha256-0g0fCf0FIwde5Vsc/BJxjgMcs5llpD8JqOgFbMjOooc=";
-  };
-
-  nativeBuildInputs = [ cython ];
-  propagatedBuildInputs = [
-    numpy
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    importlib-resources
-  ];
-
-  nativeCheckInputs = [ pytest ];
-  checkPhase = ''
-    mv pyjet _pyjet
-    pytest tests/
-  '';
-
-  meta = with lib; {
-    homepage = "https://github.com/scikit-hep/pyjet";
-    description = "The interface between FastJet and NumPy";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ veprbl ];
-  };
-}
diff --git a/pkgs/development/python-modules/pyjks/default.nix b/pkgs/development/python-modules/pyjks/default.nix
index 19d885284ea4c..9b63d5a8f6198 100644
--- a/pkgs/development/python-modules/pyjks/default.nix
+++ b/pkgs/development/python-modules/pyjks/default.nix
@@ -1,11 +1,12 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
 
-# pythonPackages
-, pyasn1-modules
-, pycryptodomex
-, twofish
+  # pythonPackages
+  pyasn1-modules,
+  pycryptodomex,
+  twofish,
 }:
 
 buildPythonPackage rec {
@@ -31,8 +32,6 @@ buildPythonPackage rec {
     description = "Pure-Python Java Keystore (JKS) library";
     homepage = "https://github.com/kurtbrose/pyjks";
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [
-      kamadorueda
-    ];
+    maintainers = with lib.maintainers; [ kamadorueda ];
   };
 }
diff --git a/pkgs/development/python-modules/pyjnius/default.nix b/pkgs/development/python-modules/pyjnius/default.nix
index 98496bf4a54b5..85ad161547d6a 100644
--- a/pkgs/development/python-modules/pyjnius/default.nix
+++ b/pkgs/development/python-modules/pyjnius/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchPypi
-, jdk
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchPypi,
+  jdk,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,12 +24,10 @@ buildPythonPackage rec {
     cython
   ];
 
-  pythonImportsCheck = [
-    "jnius"
-  ];
+  pythonImportsCheck = [ "jnius" ];
 
   meta = with lib; {
-    description = "A Python module to access Java classes as Python classes using the Java Native Interface (JNI)";
+    description = "Python module to access Java classes as Python classes using the Java Native Interface (JNI)";
     homepage = "https://github.com/kivy/pyjnius";
     changelog = "https://github.com/kivy/pyjnius/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pyjson5/default.nix b/pkgs/development/python-modules/pyjson5/default.nix
new file mode 100644
index 0000000000000..ea68a8ae8cf77
--- /dev/null
+++ b/pkgs/development/python-modules/pyjson5/default.nix
@@ -0,0 +1,44 @@
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  wheel,
+}:
+
+buildPythonPackage rec {
+  pname = "pyjson5";
+  version = "1.6.6";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "Kijewski";
+    repo = "pyjson5";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-LNcz9JEOw6HO9eIf71w4NJdPOB4yixBfBeD7B/NLbfE=";
+    fetchSubmodules = true;
+  };
+
+  build-system = [
+    cython
+    setuptools
+    wheel
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "pyjson5" ];
+
+  meta = with lib; {
+    description = "JSON5 serializer and parser library";
+    homepage = "https://github.com/Kijewski/pyjson5";
+    changelog = "https://github.com/Kijewski/pyjson5/blob/${version}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyjsparser/default.nix b/pkgs/development/python-modules/pyjsparser/default.nix
index e7ef79b092cad..0b6eab26b5c35 100644
--- a/pkgs/development/python-modules/pyjsparser/default.nix
+++ b/pkgs/development/python-modules/pyjsparser/default.nix
@@ -1,37 +1,46 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pytestCheckHook
-, js2py
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pytestCheckHook,
+  js2py,
 }:
 
-let pyjsparser = buildPythonPackage rec {
-  pname = "pyjsparser";
-  version = "2.7.1";
-  format = "setuptools";
+let
+  pyjsparser = buildPythonPackage rec {
+    pname = "pyjsparser";
+    version = "2.7.1";
+    format = "setuptools";
 
-  src = fetchFromGitHub {
-    owner = "PiotrDabkowski";
-    repo = pname;
-    rev = "5465d037b30e334cb0997f2315ec1e451b8ad4c1";
-    hash = "sha256-Hqay9/qsjUfe62U7Q79l0Yy01L2Bnj5xNs6427k3Br8=";
-  };
+    src = fetchFromGitHub {
+      owner = "PiotrDabkowski";
+      repo = pname;
+      rev = "5465d037b30e334cb0997f2315ec1e451b8ad4c1";
+      hash = "sha256-Hqay9/qsjUfe62U7Q79l0Yy01L2Bnj5xNs6427k3Br8=";
+    };
 
-  nativeCheckInputs = [ pytestCheckHook js2py ];
+    nativeCheckInputs = [
+      pytestCheckHook
+      js2py
+    ];
 
-  # escape infinite recursion with js2py
-  doCheck = false;
+    # escape infinite recursion with js2py
+    doCheck = false;
 
-  passthru.tests = {
-    check = pyjsparser.overridePythonAttrs (_: { doCheck = true; });
-  };
+    passthru.tests = {
+      check = pyjsparser.overridePythonAttrs (_: {
+        doCheck = true;
+      });
+    };
 
-  pythonImportsCheck = [ "pyjsparser" ];
+    pythonImportsCheck = [ "pyjsparser" ];
 
-  meta = with lib; {
-    description = "Fast javascript parser (based on esprima.js)";
-    homepage = "https://github.com/PiotrDabkowski/pyjsparser";
-    license = licenses.mit;
-    maintainers = with maintainers; [ onny ];
+    meta = with lib; {
+      description = "Fast javascript parser (based on esprima.js)";
+      homepage = "https://github.com/PiotrDabkowski/pyjsparser";
+      license = licenses.mit;
+      maintainers = with maintainers; [ onny ];
+    };
   };
-}; in pyjsparser
+in
+pyjsparser
diff --git a/pkgs/development/python-modules/pyjwkest/default.nix b/pkgs/development/python-modules/pyjwkest/default.nix
index f89cd22a4c0c3..4663752311d1e 100644
--- a/pkgs/development/python-modules/pyjwkest/default.nix
+++ b/pkgs/development/python-modules/pyjwkest/default.nix
@@ -1,5 +1,12 @@
-{ lib, buildPythonPackage, fetchPypi,
-  future, pycryptodomex, pytest, requests, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  future,
+  pycryptodomex,
+  pytest,
+  requests,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -19,5 +26,10 @@ buildPythonPackage rec {
   };
 
   buildInputs = [ pytest ];
-  propagatedBuildInputs = [ future pycryptodomex requests six ];
+  propagatedBuildInputs = [
+    future
+    pycryptodomex
+    requests
+    six
+  ];
 }
diff --git a/pkgs/development/python-modules/pyjwt/default.nix b/pkgs/development/python-modules/pyjwt/default.nix
index f970605eb412a..daffbcb6d70c0 100644
--- a/pkgs/development/python-modules/pyjwt/default.nix
+++ b/pkgs/development/python-modules/pyjwt/default.nix
@@ -1,51 +1,47 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, cryptography
-, pytestCheckHook
-, pythonOlder
-, sphinxHook
-, sphinx-rtd-theme
-, zope-interface
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  cryptography,
+  pytestCheckHook,
+  pythonOlder,
+  sphinxHook,
+  sphinx-rtd-theme,
+  zope-interface,
+  oauthlib,
 }:
 
 buildPythonPackage rec {
   pname = "pyjwt";
-  version = "2.8.0";
-  format = "pyproject";
+  version = "2.9.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    pname = "PyJWT";
-    inherit version;
-    hash = "sha256-V+KNFW49XBAIjgxoq7kL+sPfgrQKcb0NqiDGXM1cI94=";
+  src = fetchFromGitHub {
+    owner = "jpadilla";
+    repo = "pyjwt";
+    rev = "refs/tags/${version}";
+    hash = "sha256-z1sqaSeign0ZDFcg94cli0fIVBxcK14VUlgP+mSaxRA=";
   };
 
-  postPatch = ''
-    sed -i '/types-cryptography/d' setup.cfg
-  '';
-
   outputs = [
     "out"
     "doc"
   ];
 
+  build-system = [ setuptools ];
+
   nativeBuildInputs = [
-    setuptools
     sphinxHook
     sphinx-rtd-theme
     zope-interface
   ];
 
-  passthru.optional-dependencies.crypto = [
-    cryptography
-  ];
+  optional-dependencies.crypto = [ cryptography ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ (lib.flatten (lib.attrValues passthru.optional-dependencies));
+  nativeCheckInputs = [ pytestCheckHook ] ++ (lib.flatten (lib.attrValues optional-dependencies));
 
   disabledTests = [
     # requires internet connection
@@ -54,6 +50,10 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "jwt" ];
 
+  passthru.tests = {
+    inherit oauthlib;
+  };
+
   meta = with lib; {
     changelog = "https://github.com/jpadilla/pyjwt/blob/${version}/CHANGELOG.rst";
     description = "JSON Web Token implementation in Python";
diff --git a/pkgs/development/python-modules/pykakasi/default.nix b/pkgs/development/python-modules/pykakasi/default.nix
index 1cfb8739888da..c2555281a6b03 100644
--- a/pkgs/development/python-modules/pykakasi/default.nix
+++ b/pkgs/development/python-modules/pykakasi/default.nix
@@ -1,47 +1,38 @@
-{ lib
-, buildPythonPackage
-, deprecated
-, fetchFromGitHub
-, importlib-metadata
-, jaconv
-, py-cpuinfo
-, pytest-benchmark
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  deprecated,
+  fetchFromGitea,
+  importlib-resources,
+  jaconv,
+  py-cpuinfo,
+  pytest-benchmark,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "pykakasi";
-  version = "2.2.1";
+  version = "2.3.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
-  src = fetchFromGitHub {
+  src = fetchFromGitea {
+    domain = "codeberg.org";
     owner = "miurahr";
     repo = "pykakasi";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ivlenHPD00bxc0c9G368tfTEckOC3vqDB5kMQzHXbVM==";
+    hash = "sha256-b2lYYdg1RW1xRD3hym7o1EnxzN/U5txVTWRifwZn3k0=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail ', "klepto"' ""
-  '';
-
-  build-system = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
   dependencies = [
     jaconv
     deprecated
-    setuptools
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ];
 
   nativeCheckInputs = [
     py-cpuinfo
@@ -54,18 +45,18 @@ buildPythonPackage rec {
     "test_benchmark"
     "pytest_benchmark_update_machine_info"
     "pytest_benchmark_update_json"
+    # Assertion error
+    "test_aozora"
   ];
 
-  pythonImportsCheck = [
-    "pykakasi"
-  ];
+  pythonImportsCheck = [ "pykakasi" ];
 
   meta = with lib; {
     description = "Python converter for Japanese Kana-kanji sentences into Kana-Roman";
-    mainProgram = "kakasi";
-    homepage = "https://github.com/miurahr/pykakasi";
-    changelog = "https://github.com/miurahr/pykakasi/releases/tag/v${version}";
-    license = licenses.mit;
+    homepage = "https://codeberg.org/miurahr/pykakasi";
+    changelog = "https://codeberg.org/miurahr/pykakasi/src/tag/v${version}/CHANGELOG.rst";
+    license = licenses.gpl3Plus;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "kakasi";
   };
 }
diff --git a/pkgs/development/python-modules/pykaleidescape/default.nix b/pkgs/development/python-modules/pykaleidescape/default.nix
index eac53807b5d4c..7f9ac2ec85822 100644
--- a/pkgs/development/python-modules/pykaleidescape/default.nix
+++ b/pkgs/development/python-modules/pykaleidescape/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, dnspython
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  dnspython,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-KM/gtpsQ27QZz2uI1t/yVN5no0zp9LZag1duAJzK55g=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -38,18 +37,18 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "kaleidescape"
-  ];
-
-  disabledTests = [
-    # Test requires network access
-    "test_resolve_succeeds"
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    # stuck in EpollSelector.poll()
-    "test_manual_disconnect"
-    "test_concurrency"
-  ];
+  pythonImportsCheck = [ "kaleidescape" ];
+
+  disabledTests =
+    [
+      # Test requires network access
+      "test_resolve_succeeds"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      # stuck in EpollSelector.poll()
+      "test_manual_disconnect"
+      "test_concurrency"
+    ];
 
   meta = with lib; {
     description = "Module for controlling Kaleidescape devices";
diff --git a/pkgs/development/python-modules/pykalman/default.nix b/pkgs/development/python-modules/pykalman/default.nix
index 7073e9382d3de..ce4e509174c81 100644
--- a/pkgs/development/python-modules/pykalman/default.nix
+++ b/pkgs/development/python-modules/pykalman/default.nix
@@ -1,42 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, scipy
-, pytestCheckHook
-, nose
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  scipy,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pykalman";
-  version = "0.9.5";
-  format = "setuptools";
+  version = "0.9.7";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-gWr0dyDZJKTGAW+nS54sjCEWWgjZFpPDIqF0Ho4H+zg=";
+  src = fetchFromGitHub {
+    owner = "pykalman";
+    repo = "pykalman";
+    rev = "aaf8c8574b0474b6f41b7b135a9a7f2dfbd0e86c"; # no tags
+    hash = "sha256-++YqxGMsFGv5OxicDFO9Xz89e62NG8X+6oR6M9ePUcg=";
   };
 
-  patches = [
-    # https://github.com/pykalman/pykalman/issues/83
-    ./fix-masked-arrays-not-supported.patch
-    # python 3.11 issues fix: https://github.com/pykalman/pykalman/pull/101
-    ./fix-p311-issues.patch
-  ];
+  build-system = [ setuptools ];
 
   propagatedBuildInputs = [
     numpy
     scipy
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-    nose
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
   pythonImportsCheck = [ "pykalman" ];
 
   meta = with lib; {
-    description = "An implementation of the Kalman Filter, Kalman Smoother, and EM algorithm in Python";
+    description = "Implementation of the Kalman Filter, Kalman Smoother, and EM algorithm in Python";
     homepage = "https://github.com/pykalman/pykalman";
     license = licenses.bsd2;
     maintainers = with maintainers; [ mbalatsko ];
diff --git a/pkgs/development/python-modules/pykalman/fix-masked-arrays-not-supported.patch b/pkgs/development/python-modules/pykalman/fix-masked-arrays-not-supported.patch
deleted file mode 100644
index f6dc6679cc54a..0000000000000
--- a/pkgs/development/python-modules/pykalman/fix-masked-arrays-not-supported.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- a/pykalman/utils.py
-+++ b/pykalman/utils.py
-@@ -70,7 +70,10 @@
-             cv_chol = linalg.cholesky(cv + min_covar * np.eye(n_dim),
-                                       lower=True)
-         cv_log_det = 2 * np.sum(np.log(np.diagonal(cv_chol)))
--        cv_sol = solve_triangular(cv_chol, (X - mu).T, lower=True).T
-+        try:
-+            cv_sol = solve_triangular(cv_chol, (X - mu).T, lower=True).T
-+        except ValueError:
-+            cv_sol = np.linalg.solve(cv_chol, (X - mu).T).T
-         log_prob[:, c] = - .5 * (np.sum(cv_sol ** 2, axis=1) + \
-                                      n_dim * np.log(2 * np.pi) + cv_log_det)
- 
diff --git a/pkgs/development/python-modules/pykalman/fix-p311-issues.patch b/pkgs/development/python-modules/pykalman/fix-p311-issues.patch
deleted file mode 100644
index 002c8b893aad2..0000000000000
--- a/pkgs/development/python-modules/pykalman/fix-p311-issues.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/pykalman/utils.py
-+++ b/pykalman/utils_copy.py
-@@ -40,6 +40,10 @@
- from scipy import linalg
- 
- 
-+# monkey patch
-+if not hasattr(inspect, 'getargspec'):
-+    inspect.getargspec = inspect.getfullargspec
-+
- def array1d(X, dtype=None, order=None):
-     """Returns at least 1-d array with data from X"""
-     return np.asarray(np.atleast_1d(X), dtype=dtype, order=order)
diff --git a/pkgs/development/python-modules/pykcs11/default.nix b/pkgs/development/python-modules/pykcs11/default.nix
new file mode 100644
index 0000000000000..b4fdeb938147b
--- /dev/null
+++ b/pkgs/development/python-modules/pykcs11/default.nix
@@ -0,0 +1,52 @@
+{
+  lib,
+  buildPythonPackage,
+  callPackage,
+  fetchPypi,
+  setuptools,
+  swig,
+}:
+
+buildPythonPackage rec {
+  pname = "pykcs11";
+  version = "1.5.16";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-Q9dGsGd/Q8xjS598Tastm6axqDuTHiWYJHBi+P9kHgc=";
+  };
+
+  build-system = [ setuptools ];
+
+  nativeBuildInputs = [ swig ];
+
+  pypaBuildFlags = [ "--skip-dependency-check" ];
+
+  outputs = [
+    "out"
+    "testout"
+  ];
+
+  postInstall = ''
+    mkdir $testout
+    cp -R test $testout/test
+  '';
+
+  pythonImportsCheck = [ "PyKCS11" ];
+
+  doCheck = false;
+
+  # tests complain about circular import, do testing with passthru.tests instead
+  passthru.tests = {
+    pytest = callPackage ./tests.nix { };
+  };
+
+  meta = with lib; {
+    description = "PKCS#11 wrapper for Python";
+    homepage = "https://github.com/LudovicRousseau/PyKCS11";
+    changelog = "https://github.com/LudovicRousseau/PyKCS11/releases/tag/${version}";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ hulr ];
+  };
+}
diff --git a/pkgs/development/python-modules/pykcs11/tests.nix b/pkgs/development/python-modules/pykcs11/tests.nix
new file mode 100644
index 0000000000000..00468733ae309
--- /dev/null
+++ b/pkgs/development/python-modules/pykcs11/tests.nix
@@ -0,0 +1,33 @@
+{
+  buildPythonPackage,
+  asn1crypto,
+  pykcs11,
+  pytestCheckHook,
+  softhsm,
+}:
+
+buildPythonPackage {
+  pname = "pykcs11-tests";
+  inherit (pykcs11) version;
+  format = "other";
+
+  src = pykcs11.testout;
+
+  dontBuild = true;
+  dontInstall = true;
+
+  nativeCheckInputs = [
+    asn1crypto
+    pykcs11
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    export HOME=$(mktemp -d)
+    export PYKCS11LIB=${softhsm}/lib/softhsm/libsofthsm2.so
+    export SOFTHSM2_CONF=$HOME/softhsm2.conf
+    echo "directories.tokendir = $HOME/tokens" > $HOME/softhsm2.conf
+    mkdir $HOME/tokens
+    ${softhsm}/bin/softhsm2-util --init-token --label "A token" --pin 1234 --so-pin 123456 --slot 0
+  '';
+}
diff --git a/pkgs/development/python-modules/pykdl/default.nix b/pkgs/development/python-modules/pykdl/default.nix
index 75f2ab61d2830..6670f6d145d04 100644
--- a/pkgs/development/python-modules/pykdl/default.nix
+++ b/pkgs/development/python-modules/pykdl/default.nix
@@ -1,36 +1,55 @@
-{ lib, stdenv, toPythonModule, fetchpatch, cmake, pybind11, orocos-kdl, eigen
-, python }:
+{
+  lib,
+  stdenv,
+  toPythonModule,
+  fetchpatch,
+  cmake,
+  pybind11,
+  orocos-kdl,
+  eigen,
+  python,
+}:
 
-toPythonModule (stdenv.mkDerivation {
-  pname = "pykdl";
-  inherit (orocos-kdl) version src;
+toPythonModule (
+  stdenv.mkDerivation {
+    pname = "pykdl";
+    inherit (orocos-kdl) version src;
 
-  sourceRoot = "${orocos-kdl.src.name}/python_orocos_kdl";
+    sourceRoot = "${orocos-kdl.src.name}/python_orocos_kdl";
 
-  patches = [
-    # Support system pybind11; the vendored copy doesn't support Python 3.11
-    (fetchpatch {
-      url = "https://github.com/orocos/orocos_kinematics_dynamics/commit/e25a13fc5820dbca6b23d10506407bca9bcdd25f.patch";
-      hash = "sha256-NGMVGEYsa7hVX+SgRZgeSm93BqxFR1uiyFvzyF5H0Y4=";
-      stripLen = 1;
-    })
-  ];
+    patches = [
+      # Support system pybind11; the vendored copy doesn't support Python 3.11
+      (fetchpatch {
+        url = "https://github.com/orocos/orocos_kinematics_dynamics/commit/e25a13fc5820dbca6b23d10506407bca9bcdd25f.patch";
+        hash = "sha256-NGMVGEYsa7hVX+SgRZgeSm93BqxFR1uiyFvzyF5H0Y4=";
+        stripLen = 1;
+      })
+    ];
 
-  # Fix hardcoded installation path
-  postPatch = ''
-    substituteInPlace CMakeLists.txt \
-      --replace dist-packages site-packages
-  '';
+    # Fix hardcoded installation path
+    postPatch = ''
+      substituteInPlace CMakeLists.txt \
+        --replace dist-packages site-packages
+    '';
 
-  nativeBuildInputs = [ cmake pybind11 ];
-  buildInputs = [ orocos-kdl eigen ];
-  propagatedBuildInputs = [ python ];
+    nativeBuildInputs = [
+      cmake
+      pybind11
+    ];
+    buildInputs = [
+      orocos-kdl
+      eigen
+    ];
+    propagatedBuildInputs = [ python ];
 
-  meta = with lib; {
-    description = "Kinematics and Dynamics Library (Python bindings)";
-    homepage = "https://www.orocos.org/kdl.html";
-    license = licenses.lgpl21Only;
-    maintainers = with maintainers; [ lopsided98 ];
-    platforms = platforms.all;
-  };
-})
+    cmakeFlags = [ "-DPYTHON_EXECUTABLE=${lib.getExe python.pythonOnBuildForHost}" ];
+
+    meta = with lib; {
+      description = "Kinematics and Dynamics Library (Python bindings)";
+      homepage = "https://www.orocos.org/kdl.html";
+      license = licenses.lgpl21Only;
+      maintainers = with maintainers; [ lopsided98 ];
+      platforms = platforms.all;
+    };
+  }
+)
diff --git a/pkgs/development/python-modules/pykdtree/default.nix b/pkgs/development/python-modules/pykdtree/default.nix
index b720f5b838b3a..f169201b2cc54 100644
--- a/pkgs/development/python-modules/pykdtree/default.nix
+++ b/pkgs/development/python-modules/pykdtree/default.nix
@@ -1,42 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build-system
-, cython
-, numpy
-, setuptools
+  # build-system
+  cython,
+  numpy,
+  setuptools,
 
-# native dependencies
-, openmp
+  # native dependencies
+  openmp,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pykdtree";
-  version = "1.3.11";
+  version = "1.3.13";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-bBI8e65SE68iPFKai0FhwH64VKb+QDizaVK62iEx68s=";
+    hash = "sha256-Osz4UulGZT45nD1Nu+EZ28bT9yz9LVqVyr8L8Mf5JP4=";
   };
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-warn "numpy>=2.0.0rc1,<3" "numpy"
+  '';
+
   nativeBuildInputs = [
     cython
     numpy
     setuptools
   ];
 
-  buildInputs = [
-    openmp
-  ];
+  buildInputs = [ openmp ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   preCheck = ''
     # make sure we don't import pykdtree from the source tree
@@ -44,9 +46,7 @@ buildPythonPackage rec {
     rm -rf pykdtree
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "kd-tree implementation for fast nearest neighbour search in Python";
diff --git a/pkgs/development/python-modules/pykeepass/default.nix b/pkgs/development/python-modules/pykeepass/default.nix
index da2e8d5bc837b..b6bac1517114e 100644
--- a/pkgs/development/python-modules/pykeepass/default.nix
+++ b/pkgs/development/python-modules/pykeepass/default.nix
@@ -1,43 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, argon2-cffi
-, construct
-, lxml
-, pycryptodomex
-, pyotp
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  argon2-cffi,
+  construct,
+  lxml,
+  pycryptodomex,
+  pyotp,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pykeepass";
-  version = "4.0.7";
+  version = "4.1.0.post1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "libkeepass";
     repo = "pykeepass";
-    rev = "v${version}";
-    hash = "sha256-qUNMjnIhQpUSQY0kN9bA4IxQx8fiFIA6p8rPqNqdjNo=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-64is/XoRF/kojqd4jQIAQi1od8TRhiv9uR+WNIGvP2A=";
   };
 
-  postPatch = ''
-    # https://github.com/libkeepass/pykeepass/pull/378
-    substituteInPlace pyproject.toml \
-      --replace-fail 'packages = ["pykeepass"]' 'packages = ["pykeepass", "pykeepass.kdbx_parsing"]'
-  '';
+  build-system = [ setuptools ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
-
-  propagatedBuildInputs = [
+  dependencies = [
     argon2-cffi
     construct
     lxml
     pycryptodomex
-    setuptools
   ];
 
   propagatedNativeBuildInputs = [ argon2-cffi ];
diff --git a/pkgs/development/python-modules/pykerberos/default.nix b/pkgs/development/python-modules/pykerberos/default.nix
index 25db2847dd350..8b8be76b12e53 100644
--- a/pkgs/development/python-modules/pykerberos/default.nix
+++ b/pkgs/development/python-modules/pykerberos/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchPypi, buildPythonPackage, krb5 }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  krb5-c, # C krb5 library, not PyPI krb5
+}:
 
 buildPythonPackage rec {
   pname = "pykerberos";
@@ -10,17 +15,18 @@ buildPythonPackage rec {
     hash = "sha256-nXAevY/FlsmdMVXVukWBO9WQjSbvg7oK3SUO22IqvtQ=";
   };
 
-  nativeBuildInputs = [ krb5 ]; # for krb5-config
+  nativeBuildInputs = [ krb5-c ]; # for krb5-config
 
-  buildInputs = [ krb5 ];
+  buildInputs = [ krb5-c ];
 
   # there are no tests
   doCheck = false;
+
   pythonImportsCheck = [ "kerberos" ];
 
   meta = with lib; {
     description = "High-level interface to Kerberos";
-    license     = licenses.asl20;
+    license = licenses.asl20;
     maintainers = with maintainers; [ catern ];
   };
 }
diff --git a/pkgs/development/python-modules/pykeyatome/default.nix b/pkgs/development/python-modules/pykeyatome/default.nix
index 18f6fb7a9ee86..70b52f3c009bf 100644
--- a/pkgs/development/python-modules/pykeyatome/default.nix
+++ b/pkgs/development/python-modules/pykeyatome/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fake-useragent
-, fetchFromGitHub
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
-, responses
-, simplejson
+{
+  lib,
+  buildPythonPackage,
+  fake-useragent,
+  fetchFromGitHub,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
+  responses,
+  simplejson,
 }:
 
 buildPythonPackage rec {
@@ -46,9 +47,7 @@ buildPythonPackage rec {
     "test_relog_after_session_down"
   ];
 
-  pythonImportsCheck = [
-    "pykeyatome"
-  ];
+  pythonImportsCheck = [ "pykeyatome" ];
 
   meta = with lib; {
     description = "Python module to get data from Atome Key";
diff --git a/pkgs/development/python-modules/pykira/default.nix b/pkgs/development/python-modules/pykira/default.nix
index c3303902bf6ff..a23d3b695f6e8 100644
--- a/pkgs/development/python-modules/pykira/default.nix
+++ b/pkgs/development/python-modules/pykira/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pykira"
-  ];
+  pythonImportsCheck = [ "pykira" ];
 
   meta = with lib; {
     description = "Python module to interact with Kira modules";
diff --git a/pkgs/development/python-modules/pykka/default.nix b/pkgs/development/python-modules/pykka/default.nix
index c9e19c4c1661c..1768d04891513 100644
--- a/pkgs/development/python-modules/pykka/default.nix
+++ b/pkgs/development/python-modules/pykka/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pytest-mock
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pytest-mock,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -22,28 +23,22 @@ buildPythonPackage rec {
     hash = "sha256-2baFwZPNuVU39Kt5B8QvGKu7jMbg+GZ3ROoTxzPOXac=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.10") [
-    typing-extensions
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.10") [ typing-extensions ];
 
   nativeCheckInputs = [
     pytestCheckHook
     pytest-mock
   ];
 
-  pythonImportsCheck = [
-    "pykka"
-  ];
+  pythonImportsCheck = [ "pykka" ];
 
   meta = with lib; {
     homepage = "https://www.pykka.org/";
-    description = "A Python implementation of the actor model";
+    description = "Python implementation of the actor model";
     changelog = "https://github.com/jodal/pykka/releases/tag/v${version}";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     license = licenses.asl20;
   };
 }
diff --git a/pkgs/development/python-modules/pykmtronic/default.nix b/pkgs/development/python-modules/pykmtronic/default.nix
index 092a3d826a40b..5f2b4b4cbe11b 100644
--- a/pkgs/development/python-modules/pykmtronic/default.nix
+++ b/pkgs/development/python-modules/pykmtronic/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, lxml
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  lxml,
 }:
 
 buildPythonPackage rec {
@@ -15,7 +16,10 @@ buildPythonPackage rec {
     hash = "sha256-8qLyBJp7C93x0PWbgDAtNEDJ5VLNfwZ3DRZfudRCBgo=";
   };
 
-  propagatedBuildInputs = [ aiohttp lxml ];
+  propagatedBuildInputs = [
+    aiohttp
+    lxml
+  ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/pykodi/default.nix b/pkgs/development/python-modules/pykodi/default.nix
index 75dda69262c7a..f4f52879d7fe8 100644
--- a/pkgs/development/python-modules/pykodi/default.nix
+++ b/pkgs/development/python-modules/pykodi/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, aiohttp
-, jsonrpc-async
-, jsonrpc-websocket
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  aiohttp,
+  jsonrpc-async,
+  jsonrpc-websocket,
 }:
 
 buildPythonPackage rec {
@@ -25,12 +26,10 @@ buildPythonPackage rec {
   # has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pykodi"
-  ];
+  pythonImportsCheck = [ "pykodi" ];
 
   meta = with lib; {
-    description = "An async python interface for Kodi over JSON-RPC";
+    description = "Async python interface for Kodi over JSON-RPC";
     homepage = "https://github.com/OnFreund/PyKodi";
     license = licenses.mit;
     maintainers = with maintainers; [ sephalon ];
diff --git a/pkgs/development/python-modules/pykoplenti/default.nix b/pkgs/development/python-modules/pykoplenti/default.nix
index 6078562a9714b..a4f605692c5f2 100644
--- a/pkgs/development/python-modules/pykoplenti/default.nix
+++ b/pkgs/development/python-modules/pykoplenti/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, prompt-toolkit
-, pycryptodome
-, pydantic
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  prompt-toolkit,
+  pycryptodome,
+  pydantic,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -25,12 +25,9 @@ buildPythonPackage rec {
     hash = "sha256-2sGkHCIGo1lzLurvQBmq+16sodAaK8v+mAbIH/Gd3+E=";
   };
 
-  pythonRelaxDeps = [
-    "pydantic"
-  ];
+  pythonRelaxDeps = [ "pydantic" ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -50,9 +47,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pykoplenti"
-  ];
+  pythonImportsCheck = [ "pykoplenti" ];
 
   meta = with lib; {
     description = "Python REST client API for Kostal Plenticore Inverters";
diff --git a/pkgs/development/python-modules/pykostalpiko/default.nix b/pkgs/development/python-modules/pykostalpiko/default.nix
index 13b67271bd51f..c9c1838198181 100644
--- a/pkgs/development/python-modules/pykostalpiko/default.nix
+++ b/pkgs/development/python-modules/pykostalpiko/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +29,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pykostalpiko"
-  ];
+  pythonImportsCheck = [ "pykostalpiko" ];
 
   meta = with lib; {
     description = "Library and CLI-tool to fetch the data from a Kostal Piko inverter";
diff --git a/pkgs/development/python-modules/pykrakenapi/default.nix b/pkgs/development/python-modules/pykrakenapi/default.nix
index 8326580395319..55cdaf71b4bb4 100644
--- a/pkgs/development/python-modules/pykrakenapi/default.nix
+++ b/pkgs/development/python-modules/pykrakenapi/default.nix
@@ -1,17 +1,15 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, krakenex
-, pandas
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  krakenex,
+  pandas,
 }:
 
 buildPythonPackage rec {
   pname = "pykrakenapi";
   version = "0.3.2";
 
-  disabled = pythonOlder "3.3";
-
   format = "setuptools";
 
   src = fetchFromGitHub {
diff --git a/pkgs/development/python-modules/pykulersky/default.nix b/pkgs/development/python-modules/pykulersky/default.nix
index a748191ba9d19..974034c587566 100644
--- a/pkgs/development/python-modules/pykulersky/default.nix
+++ b/pkgs/development/python-modules/pykulersky/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, bleak
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  bleak,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pykulersky"
-  ];
+  pythonImportsCheck = [ "pykulersky" ];
 
   meta = with lib; {
     description = "Python module to control Brightech Kuler Sky Bluetooth LED devices";
diff --git a/pkgs/development/python-modules/pykwalify/default.nix b/pkgs/development/python-modules/pykwalify/default.nix
index 991e822d42a22..bf1b69d8b68ba 100644
--- a/pkgs/development/python-modules/pykwalify/default.nix
+++ b/pkgs/development/python-modules/pykwalify/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, python-dateutil
-, docopt
-, fetchPypi
-, pytestCheckHook
-, ruamel-yaml
-, testfixtures
+{
+  lib,
+  buildPythonPackage,
+  fetchpatch,
+  python-dateutil,
+  docopt,
+  fetchPypi,
+  pytestCheckHook,
+  ruamel-yaml,
+  testfixtures,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pykwb/default.nix b/pkgs/development/python-modules/pykwb/default.nix
index 5de4abd0306dc..8ff7ab1f68ff9 100644
--- a/pkgs/development/python-modules/pykwb/default.nix
+++ b/pkgs/development/python-modules/pykwb/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyserial
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyserial,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-mor2TKhq08w4HzaUaspWOMEFwJaAKjXKoNAaoZJqWPQ=";
   };
 
-  propagatedBuildInputs = [
-    pyserial
-  ];
+  propagatedBuildInputs = [ pyserial ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pykwb"
-  ];
+  pythonImportsCheck = [ "pykwb" ];
 
   meta = with lib; {
     description = "Library for interacting with KWB Easyfire Pellet Central Heating Units";
diff --git a/pkgs/development/python-modules/pylacrosse/default.nix b/pkgs/development/python-modules/pylacrosse/default.nix
index f173d8569646c..0bd6c7f0b977f 100644
--- a/pkgs/development/python-modules/pylacrosse/default.nix
+++ b/pkgs/development/python-modules/pylacrosse/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pynose
-, pyserial
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  mock,
+  pyserial,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,24 +23,27 @@ buildPythonPackage rec {
     hash = "sha256-jrkehoPLYbutDfxMBO/vlx4nMylTNs/gtvoBTFHFsDw=";
   };
 
+  patches = [
+    # Migrate to pytest, https://github.com/hthiery/python-lacrosse/pull/17
+    (fetchpatch2 {
+      url = "https://github.com/hthiery/python-lacrosse/commit/cc2623c667bc252360a9b5ccb4fc05296cf23d9c.patch?full_index=1";
+      hash = "sha256-LKryLnXMKj1lVClneyHNVOWM5KPPhOGy0/FX/7Qy/jU=";
+    })
+  ];
+
   postPatch = ''
     substituteInPlace setup.py \
       --replace "version = version," "version = '${version}',"
   '';
 
-  propagatedBuildInputs = [
-    pyserial
-  ];
+  propagatedBuildInputs = [ pyserial ];
 
   nativeCheckInputs = [
     mock
-    pynose
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pylacrosse"
-  ];
+  pythonImportsCheck = [ "pylacrosse" ];
 
   meta = with lib; {
     description = "Python library for Jeelink LaCrosse";
diff --git a/pkgs/development/python-modules/pylacus/default.nix b/pkgs/development/python-modules/pylacus/default.nix
index 09941db80a0ed..436056cf66c70 100644
--- a/pkgs/development/python-modules/pylacus/default.nix
+++ b/pkgs/development/python-modules/pylacus/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "pylacus";
-  version = "1.9.0";
+  version = "1.10.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,23 +18,17 @@ buildPythonPackage rec {
     owner = "ail-project";
     repo = "PyLacus";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ytO9wtCkiC6CLWLkmSV/R+Rnx/W4Jv2dsgykZ2GB13U=";
+    hash = "sha256-HPd/kF79Xb5kyYdOpm6ny6/rRNeu8WkTv7rM1Kpb7YI=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  dependencies = [
-    requests
-  ];
+  dependencies = [ requests ];
 
   # Tests require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pylacus"
-  ];
+  pythonImportsCheck = [ "pylacus" ];
 
   meta = with lib; {
     description = "Module to enqueue and query a remote Lacus instance";
diff --git a/pkgs/development/python-modules/pylama/default.nix b/pkgs/development/python-modules/pylama/default.nix
index 5e379cefac639..112d9392d80d5 100644
--- a/pkgs/development/python-modules/pylama/default.nix
+++ b/pkgs/development/python-modules/pylama/default.nix
@@ -1,84 +1,87 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, substituteAll
-, git
-, eradicate
-, mccabe
-, mypy
-, pycodestyle
-, pydocstyle
-, pyflakes
-, vulture
-, setuptools
-, isort
-, pylint
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  substituteAll,
+  git,
+  eradicate,
+  mccabe,
+  mypy,
+  pycodestyle,
+  pydocstyle,
+  pyflakes,
+  vulture,
+  setuptools,
+  pylint,
+  pytestCheckHook,
 }:
 
-let pylama = buildPythonPackage rec {
-  pname = "pylama";
-  version = "8.4.1";
+let
+  pylama = buildPythonPackage rec {
+    pname = "pylama";
+    version = "8.4.1";
 
-  format = "setuptools";
+    format = "setuptools";
 
-  src = fetchFromGitHub {
-    name = "${pname}-${version}-source";
-    owner = "klen";
-    repo = "pylama";
-    rev = version;
-    hash = "sha256-WOGtZ412tX3YH42JCd5HIngunluwtMmQrOSUZp23LPU=";
-  };
+    src = fetchFromGitHub {
+      name = "${pname}-${version}-source";
+      owner = "klen";
+      repo = "pylama";
+      rev = version;
+      hash = "sha256-WOGtZ412tX3YH42JCd5HIngunluwtMmQrOSUZp23LPU=";
+    };
 
-  patches = [
-    (substituteAll {
-      src = ./paths.patch;
-      git = "${lib.getBin git}/bin/git";
-    })
-  ];
+    patches = [
+      (substituteAll {
+        src = ./paths.patch;
+        git = "${lib.getBin git}/bin/git";
+      })
+    ];
 
-  propagatedBuildInputs = [
-    eradicate
-    mccabe
-    mypy
-    pycodestyle
-    pydocstyle
-    pyflakes
-    setuptools
-    vulture
-  ];
+    propagatedBuildInputs = [
+      eradicate
+      mccabe
+      mypy
+      pycodestyle
+      pydocstyle
+      pyflakes
+      setuptools
+      vulture
+    ];
 
-  # escape infinite recursion pylint -> isort -> pylama
-  doCheck = false;
+    # escape infinite recursion pylint -> isort -> pylama
+    doCheck = false;
 
-  nativeCheckInputs = [
-    pylint
-    pytestCheckHook
-  ];
+    nativeCheckInputs = [
+      pylint
+      pytestCheckHook
+    ];
 
-  preCheck = ''
-    export HOME=$TEMP
-  '';
+    preCheck = ''
+      export HOME=$TEMP
+    '';
 
-  disabledTests = [
-    "test_quotes" # FIXME package pylama-quotes
-    "test_radon" # FIXME package radon
-  ];
+    disabledTests = [
+      "test_quotes" # FIXME package pylama-quotes
+      "test_radon" # FIXME package radon
+    ];
 
-  pythonImportsCheck = [
-    "pylama.main"
-  ];
+    pythonImportsCheck = [ "pylama.main" ];
 
-  passthru.tests = {
-    check = pylama.overridePythonAttrs (_: { doCheck = true; });
-  };
+    passthru.tests = {
+      check = pylama.overridePythonAttrs (_: {
+        doCheck = true;
+      });
+    };
 
-  meta = with lib; {
-    description = "Code audit tool for python";
-    mainProgram = "pylama";
-    homepage = "https://github.com/klen/pylama";
-    changelog = "https://github.com/klen/pylama/blob/${version}/Changelog";
-    license = licenses.mit;
-    maintainers = with maintainers; [ dotlambda ];
+    meta = with lib; {
+      description = "Code audit tool for python";
+      mainProgram = "pylama";
+      homepage = "https://github.com/klen/pylama";
+      changelog = "https://github.com/klen/pylama/blob/${version}/Changelog";
+      license = licenses.mit;
+      maintainers = with maintainers; [ dotlambda ];
+    };
   };
-}; in pylama
+in
+pylama
diff --git a/pkgs/development/python-modules/pylance/Cargo.lock b/pkgs/development/python-modules/pylance/Cargo.lock
new file mode 100644
index 0000000000000..781104da1ac52
--- /dev/null
+++ b/pkgs/development/python-modules/pylance/Cargo.lock
@@ -0,0 +1,6075 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "addr2line"
+version = "0.24.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375"
+dependencies = [
+ "gimli",
+]
+
+[[package]]
+name = "adler2"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
+
+[[package]]
+name = "ahash"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
+dependencies = [
+ "cfg-if",
+ "const-random",
+ "getrandom",
+ "once_cell",
+ "version_check",
+ "zerocopy",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "alloc-no-stdlib"
+version = "2.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
+
+[[package]]
+name = "alloc-stdlib"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
+dependencies = [
+ "alloc-no-stdlib",
+]
+
+[[package]]
+name = "allocator-api2"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
+
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.88"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e1496f8fb1fbf272686b8d37f523dab3e4a7443300055e74cdaa449f3114356"
+
+[[package]]
+name = "arc-swap"
+version = "1.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
+
+[[package]]
+name = "arrayref"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a"
+
+[[package]]
+name = "arrayvec"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
+
+[[package]]
+name = "arrow"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05048a8932648b63f21c37d88b552ccc8a65afb6dfe9fc9f30ce79174c2e7a85"
+dependencies = [
+ "arrow-arith",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-cast",
+ "arrow-csv",
+ "arrow-data",
+ "arrow-ipc",
+ "arrow-json",
+ "arrow-ord",
+ "arrow-row",
+ "arrow-schema",
+ "arrow-select",
+ "arrow-string",
+ "pyo3",
+]
+
+[[package]]
+name = "arrow-arith"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d8a57966e43bfe9a3277984a14c24ec617ad874e4c0e1d2a1b083a39cfbf22c"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "chrono",
+ "half",
+ "num",
+]
+
+[[package]]
+name = "arrow-array"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16f4a9468c882dc66862cef4e1fd8423d47e67972377d85d80e022786427768c"
+dependencies = [
+ "ahash",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "chrono",
+ "chrono-tz",
+ "half",
+ "hashbrown",
+ "num",
+]
+
+[[package]]
+name = "arrow-buffer"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c975484888fc95ec4a632cdc98be39c085b1bb518531b0c80c5d462063e5daa1"
+dependencies = [
+ "bytes",
+ "half",
+ "num",
+]
+
+[[package]]
+name = "arrow-cast"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da26719e76b81d8bc3faad1d4dbdc1bcc10d14704e63dc17fc9f3e7e1e567c8e"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "arrow-select",
+ "atoi",
+ "base64 0.22.1",
+ "chrono",
+ "comfy-table",
+ "half",
+ "lexical-core",
+ "num",
+ "ryu",
+]
+
+[[package]]
+name = "arrow-csv"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c13c36dc5ddf8c128df19bab27898eea64bf9da2b555ec1cd17a8ff57fba9ec2"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-cast",
+ "arrow-data",
+ "arrow-schema",
+ "chrono",
+ "csv",
+ "csv-core",
+ "lazy_static",
+ "lexical-core",
+ "regex",
+]
+
+[[package]]
+name = "arrow-data"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd9d6f18c65ef7a2573ab498c374d8ae364b4a4edf67105357491c031f716ca5"
+dependencies = [
+ "arrow-buffer",
+ "arrow-schema",
+ "half",
+ "num",
+]
+
+[[package]]
+name = "arrow-ipc"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e786e1cdd952205d9a8afc69397b317cfbb6e0095e445c69cda7e8da5c1eeb0f"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-cast",
+ "arrow-data",
+ "arrow-schema",
+ "flatbuffers",
+ "lz4_flex",
+ "zstd",
+]
+
+[[package]]
+name = "arrow-json"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb22284c5a2a01d73cebfd88a33511a3234ab45d66086b2ca2d1228c3498e445"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-cast",
+ "arrow-data",
+ "arrow-schema",
+ "chrono",
+ "half",
+ "indexmap",
+ "lexical-core",
+ "num",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "arrow-ord"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42745f86b1ab99ef96d1c0bcf49180848a64fe2c7a7a0d945bc64fa2b21ba9bc"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "arrow-select",
+ "half",
+ "num",
+]
+
+[[package]]
+name = "arrow-row"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4cd09a518c602a55bd406bcc291a967b284cfa7a63edfbf8b897ea4748aad23c"
+dependencies = [
+ "ahash",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "half",
+]
+
+[[package]]
+name = "arrow-schema"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e972cd1ff4a4ccd22f86d3e53e835c2ed92e0eea6a3e8eadb72b4f1ac802cf8"
+dependencies = [
+ "bitflags 2.6.0",
+]
+
+[[package]]
+name = "arrow-select"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "600bae05d43483d216fb3494f8c32fdbefd8aa4e1de237e790dbb3d9f44690a3"
+dependencies = [
+ "ahash",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "num",
+]
+
+[[package]]
+name = "arrow-string"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0dc1985b67cb45f6606a248ac2b4a288849f196bab8c657ea5589f47cdd55e6"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "arrow-select",
+ "memchr",
+ "num",
+ "regex",
+ "regex-syntax",
+]
+
+[[package]]
+name = "async-channel"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35"
+dependencies = [
+ "concurrent-queue",
+ "event-listener 2.5.3",
+ "futures-core",
+]
+
+[[package]]
+name = "async-channel"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a"
+dependencies = [
+ "concurrent-queue",
+ "event-listener-strategy",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-compression"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa"
+dependencies = [
+ "bzip2",
+ "flate2",
+ "futures-core",
+ "futures-io",
+ "memchr",
+ "pin-project-lite",
+ "tokio",
+ "xz2",
+ "zstd",
+ "zstd-safe",
+]
+
+[[package]]
+name = "async-executor"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec"
+dependencies = [
+ "async-task",
+ "concurrent-queue",
+ "fastrand 2.1.1",
+ "futures-lite 2.3.0",
+ "slab",
+]
+
+[[package]]
+name = "async-global-executor"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c"
+dependencies = [
+ "async-channel 2.3.1",
+ "async-executor",
+ "async-io 2.3.4",
+ "async-lock 3.4.0",
+ "blocking",
+ "futures-lite 2.3.0",
+ "once_cell",
+]
+
+[[package]]
+name = "async-io"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af"
+dependencies = [
+ "async-lock 2.8.0",
+ "autocfg",
+ "cfg-if",
+ "concurrent-queue",
+ "futures-lite 1.13.0",
+ "log",
+ "parking",
+ "polling 2.8.0",
+ "rustix 0.37.27",
+ "slab",
+ "socket2 0.4.10",
+ "waker-fn",
+]
+
+[[package]]
+name = "async-io"
+version = "2.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8"
+dependencies = [
+ "async-lock 3.4.0",
+ "cfg-if",
+ "concurrent-queue",
+ "futures-io",
+ "futures-lite 2.3.0",
+ "parking",
+ "polling 3.7.3",
+ "rustix 0.38.37",
+ "slab",
+ "tracing",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "async-lock"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b"
+dependencies = [
+ "event-listener 2.5.3",
+]
+
+[[package]]
+name = "async-lock"
+version = "3.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
+dependencies = [
+ "event-listener 5.3.1",
+ "event-listener-strategy",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-priority-channel"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acde96f444d31031f760c5c43dc786b97d3e1cb2ee49dd06898383fe9a999758"
+dependencies = [
+ "event-listener 4.0.3",
+]
+
+[[package]]
+name = "async-recursion"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "async-std"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c634475f29802fde2b8f0b505b1bd00dfe4df7d4a000f0b36f7671197d5c3615"
+dependencies = [
+ "async-channel 1.9.0",
+ "async-global-executor",
+ "async-io 2.3.4",
+ "async-lock 3.4.0",
+ "crossbeam-utils",
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-lite 2.3.0",
+ "gloo-timers",
+ "kv-log-macro",
+ "log",
+ "memchr",
+ "once_cell",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+ "wasm-bindgen-futures",
+]
+
+[[package]]
+name = "async-task"
+version = "4.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de"
+
+[[package]]
+name = "async-trait"
+version = "0.1.82"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "async_cell"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "834eee9ce518130a3b4d5af09ecc43e9d6b57ee76613f227a1ddd6b77c7a62bc"
+
+[[package]]
+name = "atoi"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "atomic-waker"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
+
+[[package]]
+name = "autocfg"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
+
+[[package]]
+name = "aws-config"
+version = "1.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "848d7b9b605720989929279fa644ce8f244d0ce3146fcca5b70e4eb7b3c020fc"
+dependencies = [
+ "aws-credential-types",
+ "aws-runtime",
+ "aws-sdk-sso",
+ "aws-sdk-ssooidc",
+ "aws-sdk-sts",
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-json",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-types",
+ "bytes",
+ "fastrand 2.1.1",
+ "hex",
+ "http 0.2.12",
+ "ring",
+ "time",
+ "tokio",
+ "tracing",
+ "url",
+ "zeroize",
+]
+
+[[package]]
+name = "aws-credential-types"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60e8f6b615cb5fc60a98132268508ad104310f0cfb25a1c22eee76efdf9154da"
+dependencies = [
+ "aws-smithy-async",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "zeroize",
+]
+
+[[package]]
+name = "aws-runtime"
+version = "1.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a10d5c055aa540164d9561a0e2e74ad30f0dcf7393c3a92f6733ddf9c5762468"
+dependencies = [
+ "aws-credential-types",
+ "aws-sigv4",
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-types",
+ "bytes",
+ "fastrand 2.1.1",
+ "http 0.2.12",
+ "http-body 0.4.6",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "tracing",
+ "uuid",
+]
+
+[[package]]
+name = "aws-sdk-dynamodb"
+version = "1.45.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7f3d9e807092149e3df266e3f4d9760dac439b90f82d8438e5b2c0bbe62007f"
+dependencies = [
+ "aws-credential-types",
+ "aws-runtime",
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-json",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-types",
+ "bytes",
+ "fastrand 2.1.1",
+ "http 0.2.12",
+ "once_cell",
+ "regex-lite",
+ "tracing",
+]
+
+[[package]]
+name = "aws-sdk-sso"
+version = "1.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "27bf24cd0d389daa923e974b0e7c38daf308fc21e963c049f57980235017175e"
+dependencies = [
+ "aws-credential-types",
+ "aws-runtime",
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-json",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-types",
+ "bytes",
+ "http 0.2.12",
+ "once_cell",
+ "regex-lite",
+ "tracing",
+]
+
+[[package]]
+name = "aws-sdk-ssooidc"
+version = "1.43.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b43b3220f1c46ac0e9dcc0a97d94b93305dacb36d1dd393996300c6b9b74364"
+dependencies = [
+ "aws-credential-types",
+ "aws-runtime",
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-json",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-types",
+ "bytes",
+ "http 0.2.12",
+ "once_cell",
+ "regex-lite",
+ "tracing",
+]
+
+[[package]]
+name = "aws-sdk-sts"
+version = "1.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1c46924fb1add65bba55636e12812cae2febf68c0f37361766f627ddcca91ce"
+dependencies = [
+ "aws-credential-types",
+ "aws-runtime",
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-json",
+ "aws-smithy-query",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-smithy-xml",
+ "aws-types",
+ "http 0.2.12",
+ "once_cell",
+ "regex-lite",
+ "tracing",
+]
+
+[[package]]
+name = "aws-sigv4"
+version = "1.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc8db6904450bafe7473c6ca9123f88cc11089e41a025408f992db4e22d3be68"
+dependencies = [
+ "aws-credential-types",
+ "aws-smithy-http",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "bytes",
+ "form_urlencoded",
+ "hex",
+ "hmac",
+ "http 0.2.12",
+ "http 1.1.0",
+ "once_cell",
+ "percent-encoding",
+ "sha2",
+ "time",
+ "tracing",
+]
+
+[[package]]
+name = "aws-smithy-async"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62220bc6e97f946ddd51b5f1361f78996e704677afc518a4ff66b7a72ea1378c"
+dependencies = [
+ "futures-util",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "aws-smithy-http"
+version = "0.60.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c8bc3e8fdc6b8d07d976e301c02fe553f72a39b7a9fea820e023268467d7ab6"
+dependencies = [
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "bytes",
+ "bytes-utils",
+ "futures-core",
+ "http 0.2.12",
+ "http-body 0.4.6",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "pin-utils",
+ "tracing",
+]
+
+[[package]]
+name = "aws-smithy-json"
+version = "0.60.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4683df9469ef09468dad3473d129960119a0d3593617542b7d52086c8486f2d6"
+dependencies = [
+ "aws-smithy-types",
+]
+
+[[package]]
+name = "aws-smithy-query"
+version = "0.60.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2fbd61ceb3fe8a1cb7352e42689cec5335833cd9f94103a61e98f9bb61c64bb"
+dependencies = [
+ "aws-smithy-types",
+ "urlencoding",
+]
+
+[[package]]
+name = "aws-smithy-runtime"
+version = "1.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1ce695746394772e7000b39fe073095db6d45a862d0767dd5ad0ac0d7f8eb87"
+dependencies = [
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "bytes",
+ "fastrand 2.1.1",
+ "h2 0.3.26",
+ "http 0.2.12",
+ "http-body 0.4.6",
+ "http-body 1.0.1",
+ "httparse",
+ "hyper 0.14.30",
+ "hyper-rustls 0.24.2",
+ "once_cell",
+ "pin-project-lite",
+ "pin-utils",
+ "rustls 0.21.12",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "aws-smithy-runtime-api"
+version = "1.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e086682a53d3aa241192aa110fa8dfce98f2f5ac2ead0de84d41582c7e8fdb96"
+dependencies = [
+ "aws-smithy-async",
+ "aws-smithy-types",
+ "bytes",
+ "http 0.2.12",
+ "http 1.1.0",
+ "pin-project-lite",
+ "tokio",
+ "tracing",
+ "zeroize",
+]
+
+[[package]]
+name = "aws-smithy-types"
+version = "1.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03701449087215b5369c7ea17fef0dd5d24cb93439ec5af0c7615f58c3f22605"
+dependencies = [
+ "base64-simd",
+ "bytes",
+ "bytes-utils",
+ "futures-core",
+ "http 0.2.12",
+ "http 1.1.0",
+ "http-body 0.4.6",
+ "http-body 1.0.1",
+ "http-body-util",
+ "itoa",
+ "num-integer",
+ "pin-project-lite",
+ "pin-utils",
+ "ryu",
+ "serde",
+ "time",
+ "tokio",
+ "tokio-util",
+]
+
+[[package]]
+name = "aws-smithy-xml"
+version = "0.60.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab0b0166827aa700d3dc519f72f8b3a91c35d0b8d042dc5d643a91e6f80648fc"
+dependencies = [
+ "xmlparser",
+]
+
+[[package]]
+name = "aws-types"
+version = "1.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5221b91b3e441e6675310829fd8984801b772cb1546ef6c0e54dec9f1ac13fef"
+dependencies = [
+ "aws-credential-types",
+ "aws-smithy-async",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "rustc_version",
+ "tracing",
+]
+
+[[package]]
+name = "backtrace"
+version = "0.3.74"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a"
+dependencies = [
+ "addr2line",
+ "cfg-if",
+ "libc",
+ "miniz_oxide",
+ "object",
+ "rustc-demangle",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "base64"
+version = "0.21.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
+
+[[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+
+[[package]]
+name = "base64-simd"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195"
+dependencies = [
+ "outref",
+ "vsimd",
+]
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
+
+[[package]]
+name = "bitpacking"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c1d3e2bfd8d06048a179f7b17afc3188effa10385e7b00dc65af6aae732ea92"
+dependencies = [
+ "crunchy",
+]
+
+[[package]]
+name = "bitvec"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c"
+dependencies = [
+ "funty",
+ "radium",
+ "tap",
+ "wyz",
+]
+
+[[package]]
+name = "blake2"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe"
+dependencies = [
+ "digest",
+]
+
+[[package]]
+name = "blake3"
+version = "1.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7"
+dependencies = [
+ "arrayref",
+ "arrayvec",
+ "cc",
+ "cfg-if",
+ "constant_time_eq",
+]
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "blocking"
+version = "1.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea"
+dependencies = [
+ "async-channel 2.3.1",
+ "async-task",
+ "futures-io",
+ "futures-lite 2.3.0",
+ "piper",
+]
+
+[[package]]
+name = "brotli"
+version = "6.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+ "brotli-decompressor",
+]
+
+[[package]]
+name = "brotli-decompressor"
+version = "4.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
+
+[[package]]
+name = "bytecount"
+version = "0.6.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce"
+
+[[package]]
+name = "bytemuck"
+version = "1.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae"
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "bytes"
+version = "1.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50"
+
+[[package]]
+name = "bytes-utils"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35"
+dependencies = [
+ "bytes",
+ "either",
+]
+
+[[package]]
+name = "bzip2"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8"
+dependencies = [
+ "bzip2-sys",
+ "libc",
+]
+
+[[package]]
+name = "bzip2-sys"
+version = "0.1.11+1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+]
+
+[[package]]
+name = "camino"
+version = "1.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cargo-platform"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cargo_metadata"
+version = "0.14.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa"
+dependencies = [
+ "camino",
+ "cargo-platform",
+ "semver",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "cc"
+version = "1.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476"
+dependencies = [
+ "jobserver",
+ "libc",
+ "shlex",
+]
+
+[[package]]
+name = "census"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f4c707c6a209cbe82d10abd08e1ea8995e9ea937d2550646e02798948992be0"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "chrono"
+version = "0.4.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
+dependencies = [
+ "android-tzdata",
+ "iana-time-zone",
+ "js-sys",
+ "num-traits",
+ "serde",
+ "wasm-bindgen",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "chrono-tz"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93698b29de5e97ad0ae26447b344c482a7284c737d9ddc5f9e52b74a336671bb"
+dependencies = [
+ "chrono",
+ "chrono-tz-build",
+ "phf",
+]
+
+[[package]]
+name = "chrono-tz-build"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c088aee841df9c3041febbb73934cfc39708749bf96dc827e3359cd39ef11b1"
+dependencies = [
+ "parse-zoneinfo",
+ "phf",
+ "phf_codegen",
+]
+
+[[package]]
+name = "comfy-table"
+version = "7.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b34115915337defe99b2aff5c2ce6771e5fbc4079f4b506301f5cf394c8452f7"
+dependencies = [
+ "strum",
+ "strum_macros",
+ "unicode-width",
+]
+
+[[package]]
+name = "concurrent-queue"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "const-random"
+version = "0.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359"
+dependencies = [
+ "const-random-macro",
+]
+
+[[package]]
+name = "const-random-macro"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e"
+dependencies = [
+ "getrandom",
+ "once_cell",
+ "tiny-keccak",
+]
+
+[[package]]
+name = "constant_time_eq"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6"
+
+[[package]]
+name = "core-foundation"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crc"
+version = "3.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636"
+dependencies = [
+ "crc-catalog",
+]
+
+[[package]]
+name = "crc-catalog"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
+
+[[package]]
+name = "crc32fast"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
+dependencies = [
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-queue"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
+
+[[package]]
+name = "crunchy"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
+name = "csv"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe"
+dependencies = [
+ "csv-core",
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "csv-core"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "dashmap"
+version = "5.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
+dependencies = [
+ "cfg-if",
+ "hashbrown",
+ "lock_api",
+ "once_cell",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "datafusion"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab9d55a9cd2634818953809f75ebe5248b00dd43c3227efb2a51a2d5feaad54e"
+dependencies = [
+ "ahash",
+ "arrow",
+ "arrow-array",
+ "arrow-ipc",
+ "arrow-schema",
+ "async-compression",
+ "async-trait",
+ "bytes",
+ "bzip2",
+ "chrono",
+ "dashmap",
+ "datafusion-common",
+ "datafusion-common-runtime",
+ "datafusion-execution",
+ "datafusion-expr",
+ "datafusion-functions",
+ "datafusion-functions-aggregate",
+ "datafusion-functions-array",
+ "datafusion-optimizer",
+ "datafusion-physical-expr",
+ "datafusion-physical-expr-common",
+ "datafusion-physical-plan",
+ "datafusion-sql",
+ "flate2",
+ "futures",
+ "glob",
+ "half",
+ "hashbrown",
+ "indexmap",
+ "itertools 0.12.1",
+ "log",
+ "num_cpus",
+ "object_store",
+ "parking_lot",
+ "parquet",
+ "paste",
+ "pin-project-lite",
+ "rand",
+ "sqlparser",
+ "tempfile",
+ "tokio",
+ "tokio-util",
+ "url",
+ "uuid",
+ "xz2",
+ "zstd",
+]
+
+[[package]]
+name = "datafusion-common"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "def66b642959e7f96f5d2da22e1f43d3bd35598f821e5ce351a0553e0f1b7367"
+dependencies = [
+ "ahash",
+ "arrow",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-schema",
+ "chrono",
+ "half",
+ "hashbrown",
+ "instant",
+ "libc",
+ "num_cpus",
+ "object_store",
+ "parquet",
+ "sqlparser",
+]
+
+[[package]]
+name = "datafusion-common-runtime"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f104bb9cb44c06c9badf8a0d7e0855e5f7fa5e395b887d7f835e8a9457dc1352"
+dependencies = [
+ "tokio",
+]
+
+[[package]]
+name = "datafusion-execution"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ac0fd8b5d80bbca3fc3b6f40da4e9f6907354824ec3b18bbd83fee8cf5c3c3e"
+dependencies = [
+ "arrow",
+ "chrono",
+ "dashmap",
+ "datafusion-common",
+ "datafusion-expr",
+ "futures",
+ "hashbrown",
+ "log",
+ "object_store",
+ "parking_lot",
+ "rand",
+ "tempfile",
+ "url",
+]
+
+[[package]]
+name = "datafusion-expr"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2103d2cc16fb11ef1fa993a6cac57ed5cb028601db4b97566c90e5fa77aa1e68"
+dependencies = [
+ "ahash",
+ "arrow",
+ "arrow-array",
+ "arrow-buffer",
+ "chrono",
+ "datafusion-common",
+ "paste",
+ "serde_json",
+ "sqlparser",
+ "strum",
+ "strum_macros",
+]
+
+[[package]]
+name = "datafusion-functions"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a369332afd0ef5bd565f6db2139fb9f1dfdd0afa75a7f70f000b74208d76994f"
+dependencies = [
+ "arrow",
+ "base64 0.22.1",
+ "blake2",
+ "blake3",
+ "chrono",
+ "datafusion-common",
+ "datafusion-execution",
+ "datafusion-expr",
+ "hashbrown",
+ "hex",
+ "itertools 0.12.1",
+ "log",
+ "md-5",
+ "rand",
+ "regex",
+ "sha2",
+ "unicode-segmentation",
+ "uuid",
+]
+
+[[package]]
+name = "datafusion-functions-aggregate"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92718db1aff70c47e5abf9fc975768530097059e5db7c7b78cd64b5e9a11fc77"
+dependencies = [
+ "ahash",
+ "arrow",
+ "arrow-schema",
+ "datafusion-common",
+ "datafusion-execution",
+ "datafusion-expr",
+ "datafusion-physical-expr-common",
+ "log",
+ "paste",
+ "sqlparser",
+]
+
+[[package]]
+name = "datafusion-functions-array"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30bb80f46ff3dcf4bb4510209c2ba9b8ce1b716ac8b7bf70c6bf7dca6260c831"
+dependencies = [
+ "arrow",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-ord",
+ "arrow-schema",
+ "datafusion-common",
+ "datafusion-execution",
+ "datafusion-expr",
+ "datafusion-functions",
+ "datafusion-functions-aggregate",
+ "itertools 0.12.1",
+ "log",
+ "paste",
+]
+
+[[package]]
+name = "datafusion-optimizer"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82f34692011bec4fdd6fc18c264bf8037b8625d801e6dd8f5111af15cb6d71d3"
+dependencies = [
+ "arrow",
+ "async-trait",
+ "chrono",
+ "datafusion-common",
+ "datafusion-expr",
+ "datafusion-physical-expr",
+ "hashbrown",
+ "indexmap",
+ "itertools 0.12.1",
+ "log",
+ "paste",
+ "regex-syntax",
+]
+
+[[package]]
+name = "datafusion-physical-expr"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "45538630defedb553771434a437f7ca8f04b9b3e834344aafacecb27dc65d5e5"
+dependencies = [
+ "ahash",
+ "arrow",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-ord",
+ "arrow-schema",
+ "arrow-string",
+ "base64 0.22.1",
+ "chrono",
+ "datafusion-common",
+ "datafusion-execution",
+ "datafusion-expr",
+ "datafusion-physical-expr-common",
+ "half",
+ "hashbrown",
+ "hex",
+ "indexmap",
+ "itertools 0.12.1",
+ "log",
+ "paste",
+ "petgraph",
+ "regex",
+]
+
+[[package]]
+name = "datafusion-physical-expr-common"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d8a72b0ca908e074aaeca52c14ddf5c28d22361e9cb6bc79bb733cd6661b536"
+dependencies = [
+ "ahash",
+ "arrow",
+ "datafusion-common",
+ "datafusion-expr",
+ "hashbrown",
+ "rand",
+]
+
+[[package]]
+name = "datafusion-physical-plan"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b504eae6107a342775e22e323e9103f7f42db593ec6103b28605b7b7b1405c4a"
+dependencies = [
+ "ahash",
+ "arrow",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-ord",
+ "arrow-schema",
+ "async-trait",
+ "chrono",
+ "datafusion-common",
+ "datafusion-common-runtime",
+ "datafusion-execution",
+ "datafusion-expr",
+ "datafusion-functions-aggregate",
+ "datafusion-physical-expr",
+ "datafusion-physical-expr-common",
+ "futures",
+ "half",
+ "hashbrown",
+ "indexmap",
+ "itertools 0.12.1",
+ "log",
+ "once_cell",
+ "parking_lot",
+ "pin-project-lite",
+ "rand",
+ "tokio",
+]
+
+[[package]]
+name = "datafusion-sql"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5db33f323f41b95ae201318ba654a9bf11113e58a51a1dff977b1a836d3d889"
+dependencies = [
+ "arrow",
+ "arrow-array",
+ "arrow-schema",
+ "datafusion-common",
+ "datafusion-expr",
+ "log",
+ "regex",
+ "sqlparser",
+ "strum",
+]
+
+[[package]]
+name = "datafusion-substrait"
+version = "40.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "434e52fbff22e6e04e6c787f603a6aba4961a7e249a29c743c5d4f609ec2dcef"
+dependencies = [
+ "arrow-buffer",
+ "async-recursion",
+ "chrono",
+ "datafusion",
+ "itertools 0.12.1",
+ "object_store",
+ "pbjson-types",
+ "prost 0.12.6",
+ "substrait",
+ "url",
+]
+
+[[package]]
+name = "deepsize"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cdb987ec36f6bf7bfbea3f928b75590b736fc42af8e54d97592481351b2b96c"
+dependencies = [
+ "deepsize_derive",
+]
+
+[[package]]
+name = "deepsize_derive"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "990101d41f3bc8c1a45641024377ee284ecc338e5ecf3ea0f0e236d897c72796"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "deranged"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
+dependencies = [
+ "powerfmt",
+ "serde",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
+ "subtle",
+]
+
+[[package]]
+name = "dirs"
+version = "5.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
+dependencies = [
+ "dirs-sys",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
+dependencies = [
+ "libc",
+ "option-ext",
+ "redox_users",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "doc-comment"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
+
+[[package]]
+name = "downcast-rs"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2"
+
+[[package]]
+name = "dyn-clone"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125"
+
+[[package]]
+name = "either"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
+
+[[package]]
+name = "env_logger"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580"
+dependencies = [
+ "humantime",
+ "is-terminal",
+ "log",
+ "regex",
+ "termcolor",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
+name = "errno"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "error-chain"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
+name = "event-listener"
+version = "2.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
+
+[[package]]
+name = "event-listener"
+version = "4.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener"
+version = "5.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1"
+dependencies = [
+ "event-listener 5.3.1",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "fastdivide"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59668941c55e5c186b8b58c391629af56774ec768f73c08bbcd56f09348eb00b"
+
+[[package]]
+name = "fastrand"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
+dependencies = [
+ "instant",
+]
+
+[[package]]
+name = "fastrand"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
+
+[[package]]
+name = "filetime"
+version = "0.2.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "libredox",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "fixedbitset"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
+
+[[package]]
+name = "flatbuffers"
+version = "24.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8add37afff2d4ffa83bc748a70b4b1370984f6980768554182424ef71447c35f"
+dependencies = [
+ "bitflags 1.3.2",
+ "rustc_version",
+]
+
+[[package]]
+name = "flate2"
+version = "1.0.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "fs4"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7e180ac76c23b45e767bd7ae9579bc0bb458618c4bc71835926e098e61d15f8"
+dependencies = [
+ "rustix 0.38.37",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "fsst"
+version = "0.17.0"
+dependencies = [
+ "rand",
+]
+
+[[package]]
+name = "funty"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
+
+[[package]]
+name = "futures"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
+
+[[package]]
+name = "futures-lite"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce"
+dependencies = [
+ "fastrand 1.9.0",
+ "futures-core",
+ "futures-io",
+ "memchr",
+ "parking",
+ "pin-project-lite",
+ "waker-fn",
+]
+
+[[package]]
+name = "futures-lite"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
+dependencies = [
+ "fastrand 2.1.1",
+ "futures-core",
+ "futures-io",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "futures-macro"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
+
+[[package]]
+name = "futures-task"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
+
+[[package]]
+name = "futures-util"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "libc",
+ "wasi",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "gimli"
+version = "0.31.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64"
+
+[[package]]
+name = "glob"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+
+[[package]]
+name = "gloo-timers"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "h2"
+version = "0.3.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
+dependencies = [
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "futures-util",
+ "http 0.2.12",
+ "indexmap",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "h2"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205"
+dependencies = [
+ "atomic-waker",
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "http 1.1.0",
+ "indexmap",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "half"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
+dependencies = [
+ "cfg-if",
+ "crunchy",
+ "num-traits",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.14.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+dependencies = [
+ "ahash",
+ "allocator-api2",
+]
+
+[[package]]
+name = "heck"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "hermit-abi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
+
+[[package]]
+name = "hermit-abi"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
+
+[[package]]
+name = "hex"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+
+[[package]]
+name = "hmac"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
+dependencies = [
+ "digest",
+]
+
+[[package]]
+name = "home"
+version = "0.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "hostname"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867"
+dependencies = [
+ "libc",
+ "match_cfg",
+ "winapi",
+]
+
+[[package]]
+name = "htmlescape"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163"
+
+[[package]]
+name = "http"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
+name = "http"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
+name = "http-body"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
+dependencies = [
+ "bytes",
+ "http 0.2.12",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "http-body"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
+dependencies = [
+ "bytes",
+ "http 1.1.0",
+]
+
+[[package]]
+name = "http-body-util"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
+dependencies = [
+ "bytes",
+ "futures-util",
+ "http 1.1.0",
+ "http-body 1.0.1",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "httparse"
+version = "1.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9"
+
+[[package]]
+name = "httpdate"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
+
+[[package]]
+name = "humantime"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+
+[[package]]
+name = "hyper"
+version = "0.14.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "h2 0.3.26",
+ "http 0.2.12",
+ "http-body 0.4.6",
+ "httparse",
+ "httpdate",
+ "itoa",
+ "pin-project-lite",
+ "socket2 0.5.7",
+ "tokio",
+ "tower-service",
+ "tracing",
+ "want",
+]
+
+[[package]]
+name = "hyper"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-util",
+ "h2 0.4.6",
+ "http 1.1.0",
+ "http-body 1.0.1",
+ "httparse",
+ "itoa",
+ "pin-project-lite",
+ "smallvec",
+ "tokio",
+ "want",
+]
+
+[[package]]
+name = "hyper-rustls"
+version = "0.24.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
+dependencies = [
+ "futures-util",
+ "http 0.2.12",
+ "hyper 0.14.30",
+ "log",
+ "rustls 0.21.12",
+ "rustls-native-certs 0.6.3",
+ "tokio",
+ "tokio-rustls 0.24.1",
+]
+
+[[package]]
+name = "hyper-rustls"
+version = "0.27.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333"
+dependencies = [
+ "futures-util",
+ "http 1.1.0",
+ "hyper 1.4.1",
+ "hyper-util",
+ "rustls 0.23.13",
+ "rustls-native-certs 0.8.0",
+ "rustls-pki-types",
+ "tokio",
+ "tokio-rustls 0.26.0",
+ "tower-service",
+]
+
+[[package]]
+name = "hyper-util"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-util",
+ "http 1.1.0",
+ "http-body 1.0.1",
+ "hyper 1.4.1",
+ "pin-project-lite",
+ "socket2 0.5.7",
+ "tokio",
+ "tower",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "hyperloglogplus"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "621debdf94dcac33e50475fdd76d34d5ea9c0362a834b9db08c3024696c1fbe3"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "windows-core",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "idna"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[package]]
+name = "indoc"
+version = "2.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
+
+[[package]]
+name = "instant"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "integer-encoding"
+version = "3.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02"
+
+[[package]]
+name = "integer-encoding"
+version = "4.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d762194228a2f1c11063e46e32e5acb96e66e906382b9eb5441f2e0504bbd5a"
+
+[[package]]
+name = "io-lifetimes"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
+dependencies = [
+ "hermit-abi 0.3.9",
+ "libc",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "ipnet"
+version = "2.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4"
+
+[[package]]
+name = "is-terminal"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b"
+dependencies = [
+ "hermit-abi 0.4.0",
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "itertools"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itertools"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itertools"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itertools"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
+
+[[package]]
+name = "jobserver"
+version = "0.1.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "js-sys"
+version = "0.3.70"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "kv-log-macro"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f"
+dependencies = [
+ "log",
+]
+
+[[package]]
+name = "lance"
+version = "0.17.0"
+dependencies = [
+ "arrow",
+ "arrow-arith",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-ord",
+ "arrow-row",
+ "arrow-schema",
+ "arrow-select",
+ "async-recursion",
+ "async-trait",
+ "async_cell",
+ "aws-credential-types",
+ "aws-sdk-dynamodb",
+ "byteorder",
+ "bytes",
+ "chrono",
+ "dashmap",
+ "datafusion",
+ "datafusion-functions",
+ "datafusion-physical-expr",
+ "deepsize",
+ "futures",
+ "half",
+ "itertools 0.12.1",
+ "lance-arrow",
+ "lance-core",
+ "lance-datafusion",
+ "lance-encoding",
+ "lance-file",
+ "lance-index",
+ "lance-io",
+ "lance-linalg",
+ "lance-table",
+ "lazy_static",
+ "log",
+ "moka",
+ "object_store",
+ "pin-project",
+ "prost 0.12.6",
+ "prost-build 0.12.6",
+ "rand",
+ "roaring",
+ "serde",
+ "serde_json",
+ "snafu",
+ "tantivy",
+ "tempfile",
+ "tfrecord",
+ "tokio",
+ "tracing",
+ "url",
+ "uuid",
+]
+
+[[package]]
+name = "lance-arrow"
+version = "0.17.0"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-cast",
+ "arrow-data",
+ "arrow-schema",
+ "arrow-select",
+ "getrandom",
+ "half",
+ "num-traits",
+ "rand",
+]
+
+[[package]]
+name = "lance-core"
+version = "0.17.0"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-schema",
+ "async-trait",
+ "byteorder",
+ "bytes",
+ "chrono",
+ "datafusion-common",
+ "datafusion-sql",
+ "deepsize",
+ "futures",
+ "lance-arrow",
+ "lazy_static",
+ "libc",
+ "log",
+ "mock_instant",
+ "moka",
+ "num_cpus",
+ "object_store",
+ "pin-project",
+ "prost 0.12.6",
+ "rand",
+ "roaring",
+ "serde_json",
+ "snafu",
+ "tokio",
+ "tokio-stream",
+ "tokio-util",
+ "tracing",
+ "url",
+]
+
+[[package]]
+name = "lance-datafusion"
+version = "0.17.0"
+dependencies = [
+ "arrow",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-ord",
+ "arrow-schema",
+ "arrow-select",
+ "async-trait",
+ "datafusion",
+ "datafusion-common",
+ "datafusion-functions",
+ "datafusion-physical-expr",
+ "datafusion-substrait",
+ "futures",
+ "lance-arrow",
+ "lance-core",
+ "lazy_static",
+ "log",
+ "prost 0.12.6",
+ "snafu",
+ "tokio",
+]
+
+[[package]]
+name = "lance-datagen"
+version = "0.17.0"
+dependencies = [
+ "arrow",
+ "arrow-array",
+ "arrow-cast",
+ "arrow-schema",
+ "chrono",
+ "futures",
+ "hex",
+ "rand",
+ "rand_xoshiro",
+]
+
+[[package]]
+name = "lance-encoding"
+version = "0.17.0"
+dependencies = [
+ "arrow",
+ "arrow-arith",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-cast",
+ "arrow-data",
+ "arrow-schema",
+ "arrow-select",
+ "bytes",
+ "fsst",
+ "futures",
+ "hex",
+ "hyperloglogplus",
+ "itertools 0.12.1",
+ "lance-arrow",
+ "lance-core",
+ "log",
+ "num-traits",
+ "prost 0.12.6",
+ "prost-build 0.12.6",
+ "prost-types 0.12.6",
+ "rand",
+ "snafu",
+ "tokio",
+ "tracing",
+ "zstd",
+]
+
+[[package]]
+name = "lance-file"
+version = "0.17.0"
+dependencies = [
+ "arrow-arith",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "arrow-select",
+ "async-recursion",
+ "async-trait",
+ "byteorder",
+ "bytes",
+ "datafusion-common",
+ "deepsize",
+ "futures",
+ "lance-arrow",
+ "lance-core",
+ "lance-encoding",
+ "lance-io",
+ "log",
+ "num-traits",
+ "object_store",
+ "prost 0.12.6",
+ "prost-build 0.12.6",
+ "prost-types 0.12.6",
+ "roaring",
+ "snafu",
+ "tempfile",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "lance-index"
+version = "0.17.0"
+dependencies = [
+ "arrow",
+ "arrow-array",
+ "arrow-ord",
+ "arrow-schema",
+ "arrow-select",
+ "async-recursion",
+ "async-trait",
+ "bitvec",
+ "bytes",
+ "crossbeam-queue",
+ "datafusion",
+ "datafusion-common",
+ "datafusion-expr",
+ "datafusion-physical-expr",
+ "datafusion-sql",
+ "deepsize",
+ "futures",
+ "half",
+ "itertools 0.12.1",
+ "lance-arrow",
+ "lance-core",
+ "lance-datafusion",
+ "lance-encoding",
+ "lance-file",
+ "lance-io",
+ "lance-linalg",
+ "lance-table",
+ "lazy_static",
+ "log",
+ "moka",
+ "num-traits",
+ "object_store",
+ "prost 0.12.6",
+ "prost-build 0.12.6",
+ "rand",
+ "rayon",
+ "roaring",
+ "serde",
+ "serde_json",
+ "snafu",
+ "tantivy",
+ "tempfile",
+ "tokio",
+ "tracing",
+ "uuid",
+]
+
+[[package]]
+name = "lance-io"
+version = "0.17.0"
+dependencies = [
+ "arrow",
+ "arrow-arith",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-cast",
+ "arrow-data",
+ "arrow-schema",
+ "arrow-select",
+ "async-priority-channel",
+ "async-recursion",
+ "async-trait",
+ "aws-config",
+ "aws-credential-types",
+ "byteorder",
+ "bytes",
+ "chrono",
+ "deepsize",
+ "futures",
+ "lance-arrow",
+ "lance-core",
+ "lazy_static",
+ "log",
+ "object_store",
+ "path_abs",
+ "pin-project",
+ "prost 0.12.6",
+ "prost-build 0.12.6",
+ "rand",
+ "shellexpand",
+ "snafu",
+ "tokio",
+ "tracing",
+ "url",
+]
+
+[[package]]
+name = "lance-linalg"
+version = "0.17.0"
+dependencies = [
+ "arrow-array",
+ "arrow-ord",
+ "arrow-schema",
+ "bitvec",
+ "cc",
+ "deepsize",
+ "futures",
+ "half",
+ "lance-arrow",
+ "lance-core",
+ "lazy_static",
+ "log",
+ "num-traits",
+ "rand",
+ "rayon",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "lance-table"
+version = "0.17.0"
+dependencies = [
+ "arrow",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-ipc",
+ "arrow-schema",
+ "async-trait",
+ "aws-credential-types",
+ "aws-sdk-dynamodb",
+ "byteorder",
+ "bytes",
+ "chrono",
+ "deepsize",
+ "futures",
+ "lance-arrow",
+ "lance-core",
+ "lance-file",
+ "lance-io",
+ "lazy_static",
+ "log",
+ "object_store",
+ "prost 0.12.6",
+ "prost-build 0.12.6",
+ "prost-types 0.12.6",
+ "rand",
+ "rangemap",
+ "roaring",
+ "serde",
+ "serde_json",
+ "snafu",
+ "tokio",
+ "tracing",
+ "url",
+ "uuid",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
+
+[[package]]
+name = "levenshtein_automata"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c2cdeb66e45e9f36bfad5bbdb4d2384e70936afbee843c6f6543f0c551ebb25"
+
+[[package]]
+name = "lexical-core"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46"
+dependencies = [
+ "lexical-parse-float",
+ "lexical-parse-integer",
+ "lexical-util",
+ "lexical-write-float",
+ "lexical-write-integer",
+]
+
+[[package]]
+name = "lexical-parse-float"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f"
+dependencies = [
+ "lexical-parse-integer",
+ "lexical-util",
+ "static_assertions",
+]
+
+[[package]]
+name = "lexical-parse-integer"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9"
+dependencies = [
+ "lexical-util",
+ "static_assertions",
+]
+
+[[package]]
+name = "lexical-util"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc"
+dependencies = [
+ "static_assertions",
+]
+
+[[package]]
+name = "lexical-write-float"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862"
+dependencies = [
+ "lexical-util",
+ "lexical-write-integer",
+ "static_assertions",
+]
+
+[[package]]
+name = "lexical-write-integer"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446"
+dependencies = [
+ "lexical-util",
+ "static_assertions",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.158"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
+
+[[package]]
+name = "libm"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
+
+[[package]]
+name = "libredox"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
+dependencies = [
+ "bitflags 2.6.0",
+ "libc",
+ "redox_syscall",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
+
+[[package]]
+name = "lock_api"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
+dependencies = [
+ "value-bag",
+]
+
+[[package]]
+name = "lru"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904"
+dependencies = [
+ "hashbrown",
+]
+
+[[package]]
+name = "lz4_flex"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5"
+dependencies = [
+ "twox-hash",
+]
+
+[[package]]
+name = "lzma-sys"
+version = "0.1.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+]
+
+[[package]]
+name = "mach2"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "match_cfg"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
+
+[[package]]
+name = "md-5"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
+dependencies = [
+ "cfg-if",
+ "digest",
+]
+
+[[package]]
+name = "measure_time"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbefd235b0aadd181626f281e1d684e116972988c14c264e42069d5e8a5775cc"
+dependencies = [
+ "instant",
+ "log",
+]
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "memmap2"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "memoffset"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "mime"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
+name = "miniz_oxide"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
+dependencies = [
+ "adler2",
+]
+
+[[package]]
+name = "mio"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec"
+dependencies = [
+ "hermit-abi 0.3.9",
+ "libc",
+ "wasi",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "mock_instant"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9366861eb2a2c436c20b12c8dbec5f798cea6b47ad99216be0282942e2c81ea0"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "moka"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa6e72583bf6830c956235bff0d5afec8cf2952f579ebad18ae7821a917d950f"
+dependencies = [
+ "async-io 1.13.0",
+ "async-lock 2.8.0",
+ "crossbeam-channel",
+ "crossbeam-epoch",
+ "crossbeam-utils",
+ "futures-util",
+ "once_cell",
+ "parking_lot",
+ "quanta",
+ "rustc_version",
+ "scheduled-thread-pool",
+ "skeptic",
+ "smallvec",
+ "tagptr",
+ "thiserror",
+ "triomphe",
+ "uuid",
+]
+
+[[package]]
+name = "multimap"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
+
+[[package]]
+name = "multimap"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03"
+
+[[package]]
+name = "murmurhash32"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2195bf6aa996a481483b29d62a7663eed3fe39600c460e323f8ff41e90bdd89b"
+
+[[package]]
+name = "noisy_float"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "978fe6e6ebc0bf53de533cd456ca2d9de13de13856eda1518a285d7705a213af"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
+[[package]]
+name = "nu-ansi-term"
+version = "0.46.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
+dependencies = [
+ "overload",
+ "winapi",
+]
+
+[[package]]
+name = "num"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23"
+dependencies = [
+ "num-bigint",
+ "num-complex",
+ "num-integer",
+ "num-iter",
+ "num-rational",
+ "num-traits",
+]
+
+[[package]]
+name = "num-bigint"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
+dependencies = [
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-complex"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-conv"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
+
+[[package]]
+name = "num-integer"
+version = "0.1.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-iter"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
+dependencies = [
+ "num-bigint",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+ "libm",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+dependencies = [
+ "hermit-abi 0.3.9",
+ "libc",
+]
+
+[[package]]
+name = "object"
+version = "0.36.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "object_store"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6da452820c715ce78221e8202ccc599b4a52f3e1eb3eedb487b680c81a8e3f3"
+dependencies = [
+ "async-trait",
+ "base64 0.22.1",
+ "bytes",
+ "chrono",
+ "futures",
+ "humantime",
+ "hyper 1.4.1",
+ "itertools 0.13.0",
+ "md-5",
+ "parking_lot",
+ "percent-encoding",
+ "quick-xml",
+ "rand",
+ "reqwest",
+ "ring",
+ "rustls-pemfile 2.1.3",
+ "serde",
+ "serde_json",
+ "snafu",
+ "tokio",
+ "tracing",
+ "url",
+ "walkdir",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+
+[[package]]
+name = "oneshot"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e296cf87e61c9cfc1a61c3c63a0f7f286ed4554e0e22be84e8a38e1d264a2a29"
+
+[[package]]
+name = "openssl-probe"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
+
+[[package]]
+name = "option-ext"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
+
+[[package]]
+name = "ordered-float"
+version = "2.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "outref"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a"
+
+[[package]]
+name = "overload"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
+
+[[package]]
+name = "ownedbytes"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3a059efb063b8f425b948e042e6b9bd85edfe60e913630ed727b23e2dfcc558"
+dependencies = [
+ "stable_deref_trait",
+]
+
+[[package]]
+name = "parking"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
+
+[[package]]
+name = "parking_lot"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "parquet"
+version = "52.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e977b9066b4d3b03555c22bdc442f3fadebd96a39111249113087d0edb2691cd"
+dependencies = [
+ "ahash",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-cast",
+ "arrow-data",
+ "arrow-ipc",
+ "arrow-schema",
+ "arrow-select",
+ "base64 0.22.1",
+ "brotli",
+ "bytes",
+ "chrono",
+ "flate2",
+ "futures",
+ "half",
+ "hashbrown",
+ "lz4_flex",
+ "num",
+ "num-bigint",
+ "object_store",
+ "paste",
+ "seq-macro",
+ "snap",
+ "thrift",
+ "tokio",
+ "twox-hash",
+ "zstd",
+ "zstd-sys",
+]
+
+[[package]]
+name = "parse-zoneinfo"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f2a05b18d44e2957b88f96ba460715e295bc1d7510468a2f3d3b44535d26c24"
+dependencies = [
+ "regex",
+]
+
+[[package]]
+name = "paste"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
+
+[[package]]
+name = "path_abs"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05ef02f6342ac01d8a93b65f96db53fe68a92a15f41144f97fb00a9e669633c3"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "std_prelude",
+ "stfu8",
+]
+
+[[package]]
+name = "pbjson"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1030c719b0ec2a2d25a5df729d6cff1acf3cc230bf766f4f97833591f7577b90"
+dependencies = [
+ "base64 0.21.7",
+ "serde",
+]
+
+[[package]]
+name = "pbjson-build"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2580e33f2292d34be285c5bc3dba5259542b083cfad6037b6d70345f24dcb735"
+dependencies = [
+ "heck 0.4.1",
+ "itertools 0.11.0",
+ "prost 0.12.6",
+ "prost-types 0.12.6",
+]
+
+[[package]]
+name = "pbjson-types"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18f596653ba4ac51bdecbb4ef6773bc7f56042dc13927910de1684ad3d32aa12"
+dependencies = [
+ "bytes",
+ "chrono",
+ "pbjson",
+ "pbjson-build",
+ "prost 0.12.6",
+ "prost-build 0.12.6",
+ "serde",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+
+[[package]]
+name = "petgraph"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
+dependencies = [
+ "fixedbitset",
+ "indexmap",
+]
+
+[[package]]
+name = "phf"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc"
+dependencies = [
+ "phf_shared",
+]
+
+[[package]]
+name = "phf_codegen"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a"
+dependencies = [
+ "phf_generator",
+ "phf_shared",
+]
+
+[[package]]
+name = "phf_generator"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0"
+dependencies = [
+ "phf_shared",
+ "rand",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b"
+dependencies = [
+ "siphasher",
+]
+
+[[package]]
+name = "pin-project"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "piper"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066"
+dependencies = [
+ "atomic-waker",
+ "fastrand 2.1.1",
+ "futures-io",
+]
+
+[[package]]
+name = "pkg-config"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
+
+[[package]]
+name = "polling"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce"
+dependencies = [
+ "autocfg",
+ "bitflags 1.3.2",
+ "cfg-if",
+ "concurrent-queue",
+ "libc",
+ "log",
+ "pin-project-lite",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "polling"
+version = "3.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511"
+dependencies = [
+ "cfg-if",
+ "concurrent-queue",
+ "hermit-abi 0.4.0",
+ "pin-project-lite",
+ "rustix 0.38.37",
+ "tracing",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "portable-atomic"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265"
+
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
+dependencies = [
+ "zerocopy",
+]
+
+[[package]]
+name = "prettyplease"
+version = "0.1.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86"
+dependencies = [
+ "proc-macro2",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "prettyplease"
+version = "0.2.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba"
+dependencies = [
+ "proc-macro2",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.86"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "prost"
+version = "0.11.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd"
+dependencies = [
+ "bytes",
+ "prost-derive 0.11.9",
+]
+
+[[package]]
+name = "prost"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29"
+dependencies = [
+ "bytes",
+ "prost-derive 0.12.6",
+]
+
+[[package]]
+name = "prost-build"
+version = "0.11.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270"
+dependencies = [
+ "bytes",
+ "heck 0.4.1",
+ "itertools 0.10.5",
+ "lazy_static",
+ "log",
+ "multimap 0.8.3",
+ "petgraph",
+ "prettyplease 0.1.25",
+ "prost 0.11.9",
+ "prost-types 0.11.9",
+ "regex",
+ "syn 1.0.109",
+ "tempfile",
+ "which",
+]
+
+[[package]]
+name = "prost-build"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4"
+dependencies = [
+ "bytes",
+ "heck 0.5.0",
+ "itertools 0.12.1",
+ "log",
+ "multimap 0.10.0",
+ "once_cell",
+ "petgraph",
+ "prettyplease 0.2.22",
+ "prost 0.12.6",
+ "prost-types 0.12.6",
+ "regex",
+ "syn 2.0.77",
+ "tempfile",
+]
+
+[[package]]
+name = "prost-derive"
+version = "0.11.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4"
+dependencies = [
+ "anyhow",
+ "itertools 0.10.5",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "prost-derive"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1"
+dependencies = [
+ "anyhow",
+ "itertools 0.12.1",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "prost-types"
+version = "0.11.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13"
+dependencies = [
+ "prost 0.11.9",
+]
+
+[[package]]
+name = "prost-types"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0"
+dependencies = [
+ "prost 0.12.6",
+]
+
+[[package]]
+name = "pulldown-cmark"
+version = "0.9.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b"
+dependencies = [
+ "bitflags 2.6.0",
+ "memchr",
+ "unicase",
+]
+
+[[package]]
+name = "pylance"
+version = "0.17.0"
+dependencies = [
+ "arrow",
+ "arrow-array",
+ "arrow-data",
+ "arrow-schema",
+ "async-trait",
+ "bytes",
+ "chrono",
+ "env_logger",
+ "futures",
+ "half",
+ "lance",
+ "lance-arrow",
+ "lance-core",
+ "lance-datagen",
+ "lance-encoding",
+ "lance-file",
+ "lance-index",
+ "lance-io",
+ "lance-linalg",
+ "lance-table",
+ "lazy_static",
+ "log",
+ "object_store",
+ "prost 0.12.6",
+ "prost-build 0.11.9",
+ "pyo3",
+ "serde",
+ "serde_json",
+ "serde_yaml",
+ "snafu",
+ "tokio",
+ "tracing",
+ "tracing-chrome",
+ "tracing-subscriber",
+ "url",
+ "uuid",
+]
+
+[[package]]
+name = "pyo3"
+version = "0.21.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5e00b96a521718e08e03b1a622f01c8a8deb50719335de3f60b3b3950f069d8"
+dependencies = [
+ "cfg-if",
+ "indoc",
+ "libc",
+ "memoffset",
+ "parking_lot",
+ "portable-atomic",
+ "pyo3-build-config",
+ "pyo3-ffi",
+ "pyo3-macros",
+ "unindent",
+]
+
+[[package]]
+name = "pyo3-build-config"
+version = "0.21.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7883df5835fafdad87c0d888b266c8ec0f4c9ca48a5bed6bbb592e8dedee1b50"
+dependencies = [
+ "once_cell",
+ "target-lexicon",
+]
+
+[[package]]
+name = "pyo3-ffi"
+version = "0.21.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01be5843dc60b916ab4dad1dca6d20b9b4e6ddc8e15f50c47fe6d85f1fb97403"
+dependencies = [
+ "libc",
+ "pyo3-build-config",
+]
+
+[[package]]
+name = "pyo3-macros"
+version = "0.21.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77b34069fc0682e11b31dbd10321cbf94808394c56fd996796ce45217dfac53c"
+dependencies = [
+ "proc-macro2",
+ "pyo3-macros-backend",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "pyo3-macros-backend"
+version = "0.21.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08260721f32db5e1a5beae69a55553f56b99bd0e1c3e6e0a5e8851a9d0f5a85c"
+dependencies = [
+ "heck 0.4.1",
+ "proc-macro2",
+ "pyo3-build-config",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "quanta"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a17e662a7a8291a865152364c20c7abc5e60486ab2001e8ec10b24862de0b9ab"
+dependencies = [
+ "crossbeam-utils",
+ "libc",
+ "mach2",
+ "once_cell",
+ "raw-cpuid",
+ "wasi",
+ "web-sys",
+ "winapi",
+]
+
+[[package]]
+name = "quick-xml"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96a05e2e8efddfa51a84ca47cec303fac86c8541b686d37cac5efc0e094417bc"
+dependencies = [
+ "memchr",
+ "serde",
+]
+
+[[package]]
+name = "quinn"
+version = "0.11.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684"
+dependencies = [
+ "bytes",
+ "pin-project-lite",
+ "quinn-proto",
+ "quinn-udp",
+ "rustc-hash 2.0.0",
+ "rustls 0.23.13",
+ "socket2 0.5.7",
+ "thiserror",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "quinn-proto"
+version = "0.11.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6"
+dependencies = [
+ "bytes",
+ "rand",
+ "ring",
+ "rustc-hash 2.0.0",
+ "rustls 0.23.13",
+ "slab",
+ "thiserror",
+ "tinyvec",
+ "tracing",
+]
+
+[[package]]
+name = "quinn-udp"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b"
+dependencies = [
+ "libc",
+ "once_cell",
+ "socket2 0.5.7",
+ "tracing",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "radium"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "rand_distr"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31"
+dependencies = [
+ "num-traits",
+ "rand",
+]
+
+[[package]]
+name = "rand_xoshiro"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa"
+dependencies = [
+ "rand_core",
+]
+
+[[package]]
+name = "rangemap"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f60fcc7d6849342eff22c4350c8b9a989ee8ceabc4b481253e8946b9fe83d684"
+
+[[package]]
+name = "raw-cpuid"
+version = "10.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "rayon"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
+dependencies = [
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
+dependencies = [
+ "crossbeam-deque",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0884ad60e090bf1345b93da0a5de8923c93884cd03f40dfcfddd3b4bee661853"
+dependencies = [
+ "bitflags 2.6.0",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
+dependencies = [
+ "getrandom",
+ "libredox",
+ "thiserror",
+]
+
+[[package]]
+name = "regex"
+version = "1.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-lite"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a"
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
+
+[[package]]
+name = "regress"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eae2a1ebfecc58aff952ef8ccd364329abe627762f5bf09ff42eb9d98522479"
+dependencies = [
+ "hashbrown",
+ "memchr",
+]
+
+[[package]]
+name = "reqwest"
+version = "0.12.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63"
+dependencies = [
+ "base64 0.22.1",
+ "bytes",
+ "futures-core",
+ "futures-util",
+ "h2 0.4.6",
+ "http 1.1.0",
+ "http-body 1.0.1",
+ "http-body-util",
+ "hyper 1.4.1",
+ "hyper-rustls 0.27.3",
+ "hyper-util",
+ "ipnet",
+ "js-sys",
+ "log",
+ "mime",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "quinn",
+ "rustls 0.23.13",
+ "rustls-native-certs 0.7.3",
+ "rustls-pemfile 2.1.3",
+ "rustls-pki-types",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "sync_wrapper",
+ "tokio",
+ "tokio-rustls 0.26.0",
+ "tokio-util",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "wasm-streams",
+ "web-sys",
+ "windows-registry",
+]
+
+[[package]]
+name = "ring"
+version = "0.17.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
+dependencies = [
+ "cc",
+ "cfg-if",
+ "getrandom",
+ "libc",
+ "spin",
+ "untrusted",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "roaring"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f4b84ba6e838ceb47b41de5194a60244fac43d9fe03b71dbe8c5a201081d6d1"
+dependencies = [
+ "bytemuck",
+ "byteorder",
+]
+
+[[package]]
+name = "rust-stemmers"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54"
+dependencies = [
+ "serde",
+ "serde_derive",
+]
+
+[[package]]
+name = "rustc-demangle"
+version = "0.1.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
+
+[[package]]
+name = "rustc-hash"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+
+[[package]]
+name = "rustc-hash"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"
+
+[[package]]
+name = "rustc_version"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "rustix"
+version = "0.37.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2"
+dependencies = [
+ "bitflags 1.3.2",
+ "errno",
+ "io-lifetimes",
+ "libc",
+ "linux-raw-sys 0.3.8",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "rustix"
+version = "0.38.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811"
+dependencies = [
+ "bitflags 2.6.0",
+ "errno",
+ "libc",
+ "linux-raw-sys 0.4.14",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "rustls"
+version = "0.21.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e"
+dependencies = [
+ "log",
+ "ring",
+ "rustls-webpki 0.101.7",
+ "sct",
+]
+
+[[package]]
+name = "rustls"
+version = "0.23.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8"
+dependencies = [
+ "log",
+ "once_cell",
+ "ring",
+ "rustls-pki-types",
+ "rustls-webpki 0.102.8",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "rustls-native-certs"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00"
+dependencies = [
+ "openssl-probe",
+ "rustls-pemfile 1.0.4",
+ "schannel",
+ "security-framework",
+]
+
+[[package]]
+name = "rustls-native-certs"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5"
+dependencies = [
+ "openssl-probe",
+ "rustls-pemfile 2.1.3",
+ "rustls-pki-types",
+ "schannel",
+ "security-framework",
+]
+
+[[package]]
+name = "rustls-native-certs"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcaf18a4f2be7326cd874a5fa579fae794320a0f388d365dca7e480e55f83f8a"
+dependencies = [
+ "openssl-probe",
+ "rustls-pemfile 2.1.3",
+ "rustls-pki-types",
+ "schannel",
+ "security-framework",
+]
+
+[[package]]
+name = "rustls-pemfile"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
+dependencies = [
+ "base64 0.21.7",
+]
+
+[[package]]
+name = "rustls-pemfile"
+version = "2.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425"
+dependencies = [
+ "base64 0.22.1",
+ "rustls-pki-types",
+]
+
+[[package]]
+name = "rustls-pki-types"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0"
+
+[[package]]
+name = "rustls-webpki"
+version = "0.101.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
+dependencies = [
+ "ring",
+ "untrusted",
+]
+
+[[package]]
+name = "rustls-webpki"
+version = "0.102.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9"
+dependencies = [
+ "ring",
+ "rustls-pki-types",
+ "untrusted",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6"
+
+[[package]]
+name = "ryu"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "schannel"
+version = "0.1.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b"
+dependencies = [
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "scheduled-thread-pool"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19"
+dependencies = [
+ "parking_lot",
+]
+
+[[package]]
+name = "schemars"
+version = "0.8.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92"
+dependencies = [
+ "dyn-clone",
+ "schemars_derive",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "schemars_derive"
+version = "0.8.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "serde_derive_internals",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "sct"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
+dependencies = [
+ "ring",
+ "untrusted",
+]
+
+[[package]]
+name = "security-framework"
+version = "2.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
+dependencies = [
+ "bitflags 2.6.0",
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "semver"
+version = "1.0.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "seq-macro"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4"
+
+[[package]]
+name = "serde"
+version = "1.0.210"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.210"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "serde_derive_internals"
+version = "0.29.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.128"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_tokenstream"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64060d864397305347a78851c51588fd283767e7e7589829e8121d65512340f1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "serde",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "serde_urlencoded"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
+dependencies = [
+ "form_urlencoded",
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_yaml"
+version = "0.9.34+deprecated"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
+dependencies = [
+ "indexmap",
+ "itoa",
+ "ryu",
+ "serde",
+ "unsafe-libyaml",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "sharded-slab"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
+dependencies = [
+ "lazy_static",
+]
+
+[[package]]
+name = "shellexpand"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da03fa3b94cc19e3ebfc88c4229c49d8f08cdbd1228870a45f0ffdf84988e14b"
+dependencies = [
+ "dirs",
+]
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "siphasher"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
+
+[[package]]
+name = "skeptic"
+version = "0.13.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16d23b015676c90a0f01c197bfdc786c20342c73a0afdda9025adb0bc42940a8"
+dependencies = [
+ "bytecount",
+ "cargo_metadata",
+ "error-chain",
+ "glob",
+ "pulldown-cmark",
+ "tempfile",
+ "walkdir",
+]
+
+[[package]]
+name = "sketches-ddsketch"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85636c14b73d81f541e525f585c0a2109e6744e1565b5c1668e31c70c10ed65c"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "slab"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+
+[[package]]
+name = "snafu"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4de37ad025c587a29e8f3f5605c00f70b98715ef90b9061a815b9e59e9042d6"
+dependencies = [
+ "doc-comment",
+ "snafu-derive",
+]
+
+[[package]]
+name = "snafu-derive"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "990079665f075b699031e9c08fd3ab99be5029b96f3b78dc0709e8f77e4efebf"
+dependencies = [
+ "heck 0.4.1",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "snap"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b"
+
+[[package]]
+name = "socket2"
+version = "0.4.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d"
+dependencies = [
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "socket2"
+version = "0.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "spin"
+version = "0.9.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
+
+[[package]]
+name = "sqlparser"
+version = "0.47.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "295e9930cd7a97e58ca2a070541a3ca502b17f5d1fa7157376d0fabd85324f25"
+dependencies = [
+ "log",
+ "sqlparser_derive",
+]
+
+[[package]]
+name = "sqlparser_derive"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01b2e185515564f15375f593fb966b5718bc624ba77fe49fa4616ad619690554"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "std_prelude"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8207e78455ffdf55661170876f88daf85356e4edd54e0a3dbc79586ca1e50cbe"
+
+[[package]]
+name = "stfu8"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51f1e89f093f99e7432c491c382b88a6860a5adbe6bf02574bf0a08efff1978"
+
+[[package]]
+name = "strum"
+version = "0.26.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06"
+dependencies = [
+ "strum_macros",
+]
+
+[[package]]
+name = "strum_macros"
+version = "0.26.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be"
+dependencies = [
+ "heck 0.5.0",
+ "proc-macro2",
+ "quote",
+ "rustversion",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "substrait"
+version = "0.36.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1ee6e584c8bf37104b7eb51c25eae07a9321b0e01379bec3b7c462d2f42afbf"
+dependencies = [
+ "heck 0.5.0",
+ "pbjson",
+ "pbjson-build",
+ "pbjson-types",
+ "prettyplease 0.2.22",
+ "prost 0.12.6",
+ "prost-build 0.12.6",
+ "prost-types 0.12.6",
+ "schemars",
+ "semver",
+ "serde",
+ "serde_json",
+ "serde_yaml",
+ "syn 2.0.77",
+ "typify",
+ "walkdir",
+]
+
+[[package]]
+name = "subtle"
+version = "2.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "sync_wrapper"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394"
+dependencies = [
+ "futures-core",
+]
+
+[[package]]
+name = "tagptr"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417"
+
+[[package]]
+name = "tantivy"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8d0582f186c0a6d55655d24543f15e43607299425c5ad8352c242b914b31856"
+dependencies = [
+ "aho-corasick",
+ "arc-swap",
+ "base64 0.22.1",
+ "bitpacking",
+ "byteorder",
+ "census",
+ "crc32fast",
+ "crossbeam-channel",
+ "downcast-rs",
+ "fastdivide",
+ "fnv",
+ "fs4",
+ "htmlescape",
+ "itertools 0.12.1",
+ "levenshtein_automata",
+ "log",
+ "lru",
+ "lz4_flex",
+ "measure_time",
+ "memmap2",
+ "num_cpus",
+ "once_cell",
+ "oneshot",
+ "rayon",
+ "regex",
+ "rust-stemmers",
+ "rustc-hash 1.1.0",
+ "serde",
+ "serde_json",
+ "sketches-ddsketch",
+ "smallvec",
+ "tantivy-bitpacker",
+ "tantivy-columnar",
+ "tantivy-common",
+ "tantivy-fst",
+ "tantivy-query-grammar",
+ "tantivy-stacker",
+ "tantivy-tokenizer-api",
+ "tempfile",
+ "thiserror",
+ "time",
+ "uuid",
+ "winapi",
+]
+
+[[package]]
+name = "tantivy-bitpacker"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "284899c2325d6832203ac6ff5891b297fc5239c3dc754c5bc1977855b23c10df"
+dependencies = [
+ "bitpacking",
+]
+
+[[package]]
+name = "tantivy-columnar"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12722224ffbe346c7fec3275c699e508fd0d4710e629e933d5736ec524a1f44e"
+dependencies = [
+ "downcast-rs",
+ "fastdivide",
+ "itertools 0.12.1",
+ "serde",
+ "tantivy-bitpacker",
+ "tantivy-common",
+ "tantivy-sstable",
+ "tantivy-stacker",
+]
+
+[[package]]
+name = "tantivy-common"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8019e3cabcfd20a1380b491e13ff42f57bb38bf97c3d5fa5c07e50816e0621f4"
+dependencies = [
+ "async-trait",
+ "byteorder",
+ "ownedbytes",
+ "serde",
+ "time",
+]
+
+[[package]]
+name = "tantivy-fst"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d60769b80ad7953d8a7b2c70cdfe722bbcdcac6bccc8ac934c40c034d866fc18"
+dependencies = [
+ "byteorder",
+ "regex-syntax",
+ "utf8-ranges",
+]
+
+[[package]]
+name = "tantivy-query-grammar"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "847434d4af57b32e309f4ab1b4f1707a6c566656264caa427ff4285c4d9d0b82"
+dependencies = [
+ "nom",
+]
+
+[[package]]
+name = "tantivy-sstable"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c69578242e8e9fc989119f522ba5b49a38ac20f576fc778035b96cc94f41f98e"
+dependencies = [
+ "tantivy-bitpacker",
+ "tantivy-common",
+ "tantivy-fst",
+ "zstd",
+]
+
+[[package]]
+name = "tantivy-stacker"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c56d6ff5591fc332739b3ce7035b57995a3ce29a93ffd6012660e0949c956ea8"
+dependencies = [
+ "murmurhash32",
+ "rand_distr",
+ "tantivy-common",
+]
+
+[[package]]
+name = "tantivy-tokenizer-api"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a0dcade25819a89cfe6f17d932c9cedff11989936bf6dd4f336d50392053b04"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "tap"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
+
+[[package]]
+name = "tar"
+version = "0.4.41"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909"
+dependencies = [
+ "filetime",
+ "libc",
+ "xattr",
+]
+
+[[package]]
+name = "target-lexicon"
+version = "0.12.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
+
+[[package]]
+name = "tempfile"
+version = "3.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64"
+dependencies = [
+ "cfg-if",
+ "fastrand 2.1.1",
+ "once_cell",
+ "rustix 0.38.37",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "termcolor"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "tfrecord"
+version = "0.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7036e822a1d906b8a49620e524a6fe21ab956583ac77f1427e908c61499a1f78"
+dependencies = [
+ "anyhow",
+ "async-std",
+ "bytemuck",
+ "crc",
+ "flate2",
+ "futures",
+ "glob",
+ "hex",
+ "hostname",
+ "integer-encoding 4.0.2",
+ "itertools 0.11.0",
+ "noisy_float",
+ "num",
+ "num-traits",
+ "once_cell",
+ "pin-project",
+ "prost 0.12.6",
+ "prost-build 0.12.6",
+ "tar",
+ "thiserror",
+ "ureq",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.63"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.63"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "thread_local"
+version = "1.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+]
+
+[[package]]
+name = "thrift"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e54bc85fc7faa8bc175c4bab5b92ba8d9a3ce893d0e9f42cc455c8ab16a9e09"
+dependencies = [
+ "byteorder",
+ "integer-encoding 3.0.4",
+ "ordered-float",
+]
+
+[[package]]
+name = "time"
+version = "0.3.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
+dependencies = [
+ "deranged",
+ "itoa",
+ "num-conv",
+ "powerfmt",
+ "serde",
+ "time-core",
+ "time-macros",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
+
+[[package]]
+name = "time-macros"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
+dependencies = [
+ "num-conv",
+ "time-core",
+]
+
+[[package]]
+name = "tiny-keccak"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237"
+dependencies = [
+ "crunchy",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
+name = "tokio"
+version = "1.40.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998"
+dependencies = [
+ "backtrace",
+ "bytes",
+ "libc",
+ "mio",
+ "pin-project-lite",
+ "signal-hook-registry",
+ "socket2 0.5.7",
+ "tokio-macros",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "tokio-macros"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "tokio-rustls"
+version = "0.24.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
+dependencies = [
+ "rustls 0.21.12",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-rustls"
+version = "0.26.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
+dependencies = [
+ "rustls 0.23.13",
+ "rustls-pki-types",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-stream"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1"
+dependencies = [
+ "futures-core",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-util"
+version = "0.7.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "futures-sink",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "tower"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project",
+ "pin-project-lite",
+ "tokio",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "tower-layer"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
+
+[[package]]
+name = "tower-service"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
+
+[[package]]
+name = "tracing"
+version = "0.1.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
+dependencies = [
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "tracing-chrome"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf0a738ed5d6450a9fb96e86a23ad808de2b727fd1394585da5cdd6788ffe724"
+dependencies = [
+ "serde_json",
+ "tracing-core",
+ "tracing-subscriber",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+dependencies = [
+ "once_cell",
+ "valuable",
+]
+
+[[package]]
+name = "tracing-log"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
+dependencies = [
+ "log",
+ "once_cell",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-subscriber"
+version = "0.3.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
+dependencies = [
+ "nu-ansi-term",
+ "sharded-slab",
+ "smallvec",
+ "thread_local",
+ "tracing-core",
+ "tracing-log",
+]
+
+[[package]]
+name = "triomphe"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6631e42e10b40c0690bf92f404ebcfe6e1fdb480391d15f17cc8e96eeed5369"
+
+[[package]]
+name = "try-lock"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
+
+[[package]]
+name = "twox-hash"
+version = "1.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
+dependencies = [
+ "cfg-if",
+ "static_assertions",
+]
+
+[[package]]
+name = "typenum"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+
+[[package]]
+name = "typify"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adb6beec125971dda80a086f90b4a70f60f222990ce4d63ad0fc140492f53444"
+dependencies = [
+ "typify-impl",
+ "typify-macro",
+]
+
+[[package]]
+name = "typify-impl"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93bbb24e990654aff858d80fee8114f4322f7d7a1b1ecb45129e2fcb0d0ad5ae"
+dependencies = [
+ "heck 0.5.0",
+ "log",
+ "proc-macro2",
+ "quote",
+ "regress",
+ "schemars",
+ "semver",
+ "serde",
+ "serde_json",
+ "syn 2.0.77",
+ "thiserror",
+ "unicode-ident",
+]
+
+[[package]]
+name = "typify-macro"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8e6491896e955692d68361c68db2b263e3bec317ec0b684e0e2fa882fb6e31e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "schemars",
+ "semver",
+ "serde",
+ "serde_json",
+ "serde_tokenstream",
+ "syn 2.0.77",
+ "typify-impl",
+]
+
+[[package]]
+name = "unicase"
+version = "2.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
+
+[[package]]
+name = "unindent"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce"
+
+[[package]]
+name = "unsafe-libyaml"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
+
+[[package]]
+name = "untrusted"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+
+[[package]]
+name = "ureq"
+version = "2.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a"
+dependencies = [
+ "base64 0.22.1",
+ "flate2",
+ "log",
+ "once_cell",
+ "rustls 0.23.13",
+ "rustls-pki-types",
+ "url",
+ "webpki-roots",
+]
+
+[[package]]
+name = "url"
+version = "2.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+]
+
+[[package]]
+name = "urlencoding"
+version = "2.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
+
+[[package]]
+name = "utf8-ranges"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fcfc827f90e53a02eaef5e535ee14266c1d569214c6aa70133a624d8a3164ba"
+
+[[package]]
+name = "uuid"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314"
+dependencies = [
+ "getrandom",
+ "serde",
+]
+
+[[package]]
+name = "valuable"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
+
+[[package]]
+name = "value-bag"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a84c137d37ab0142f0f2ddfe332651fdbf252e7b7dbb4e67b6c1f1b2e925101"
+
+[[package]]
+name = "version_check"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+
+[[package]]
+name = "vsimd"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64"
+
+[[package]]
+name = "waker-fn"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7"
+
+[[package]]
+name = "walkdir"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
+[[package]]
+name = "want"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
+dependencies = [
+ "try-lock",
+]
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.43"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
+
+[[package]]
+name = "wasm-streams"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129"
+dependencies = [
+ "futures-util",
+ "js-sys",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.70"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "webpki-roots"
+version = "0.26.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a"
+dependencies = [
+ "rustls-pki-types",
+]
+
+[[package]]
+name = "which"
+version = "4.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"
+dependencies = [
+ "either",
+ "home",
+ "once_cell",
+ "rustix 0.38.37",
+]
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
+dependencies = [
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-core"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-registry"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0"
+dependencies = [
+ "windows-result",
+ "windows-strings",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-result"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-strings"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
+dependencies = [
+ "windows-result",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "wyz"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed"
+dependencies = [
+ "tap",
+]
+
+[[package]]
+name = "xattr"
+version = "1.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f"
+dependencies = [
+ "libc",
+ "linux-raw-sys 0.4.14",
+ "rustix 0.38.37",
+]
+
+[[package]]
+name = "xmlparser"
+version = "0.13.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4"
+
+[[package]]
+name = "xz2"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2"
+dependencies = [
+ "lzma-sys",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
+dependencies = [
+ "byteorder",
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "zeroize"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
+
+[[package]]
+name = "zstd"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9"
+dependencies = [
+ "zstd-safe",
+]
+
+[[package]]
+name = "zstd-safe"
+version = "7.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059"
+dependencies = [
+ "zstd-sys",
+]
+
+[[package]]
+name = "zstd-sys"
+version = "2.0.12+zstd.1.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13"
+dependencies = [
+ "cc",
+ "pkg-config",
+]
diff --git a/pkgs/development/python-modules/pylance/default.nix b/pkgs/development/python-modules/pylance/default.nix
new file mode 100644
index 0000000000000..ff66678e664a2
--- /dev/null
+++ b/pkgs/development/python-modules/pylance/default.nix
@@ -0,0 +1,132 @@
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  rustPlatform,
+
+  # nativeBuildInputs
+  pkg-config,
+
+  # buildInputs
+  libiconv,
+  protobuf,
+  darwin,
+
+  # dependencies
+  numpy,
+  pyarrow,
+
+  # optional-dependencies
+  torch,
+
+  # tests
+  duckdb,
+  ml-dtypes,
+  pandas,
+  pillow,
+  polars,
+  pytestCheckHook,
+  tqdm,
+
+  # passthru
+  nix-update-script,
+}:
+
+buildPythonPackage rec {
+  pname = "pylance";
+  version = "0.17.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "lancedb";
+    repo = "lance";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-E+29CbVNbzmrQnBZt0860IvL4xYZqzE+uzSuKDwgxzg=";
+  };
+
+  buildAndTestSubdir = "python";
+
+  cargoDeps = rustPlatform.importCargoLock { lockFile = ./Cargo.lock; };
+
+  postPatch = ''
+    ln -s ${./Cargo.lock} Cargo.lock
+  '';
+
+  nativeBuildInputs = [
+    pkg-config
+    rustPlatform.cargoSetupHook
+  ];
+
+  build-system = [ rustPlatform.maturinBuildHook ];
+
+  buildInputs =
+    [
+      libiconv
+      protobuf
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin (
+      with darwin.apple_sdk.frameworks;
+      [
+        Security
+        SystemConfiguration
+      ]
+    );
+
+  pythonRelaxDeps = [ "pyarrow" ];
+
+  dependencies = [
+    numpy
+    pyarrow
+  ];
+
+  optional-dependencies = {
+    torch = [ torch ];
+  };
+
+  pythonImportsCheck = [ "lance" ];
+
+  nativeCheckInputs = [
+    duckdb
+    ml-dtypes
+    pandas
+    pillow
+    polars
+    pytestCheckHook
+    tqdm
+  ] ++ optional-dependencies.torch;
+
+  preCheck = ''
+    cd python/python/tests
+  '';
+
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
+    # AttributeError: module 'torch.distributed' has no attribute 'is_initialized'
+    "test_convert_int_tensors"
+    "test_ground_truth"
+    "test_index_cast_centroids"
+    "test_index_with_no_centroid_movement"
+    "test_iter_filter"
+    "test_iter_over_dataset_fixed_shape_tensor"
+    "test_iter_over_dataset_fixed_size_lists"
+  ];
+
+  passthru.updateScript = nix-update-script {
+    extraArgs = [
+      "--generate-lockfile"
+      "--lockfile-metadata-path"
+      "python"
+    ];
+  };
+
+  meta = {
+    description = "Python wrapper for Lance columnar format";
+    homepage = "https://github.com/lancedb/lance";
+    changelog = "https://github.com/lancedb/lance/releases/tag/v${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ natsukium ];
+    # test_indices.py ...sss.Fatal Python error: Fatal Python error: Illegal instructionIllegal instruction
+    # File "/nix/store/wiiccrs0vd1qbh4j6ki9p40xmamsjix3-python3.12-pylance-0.17.0/lib/python3.12/site-packages/lance/indices.py", line 237 in train_ivf
+    broken = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64;
+  };
+}
diff --git a/pkgs/development/python-modules/pylast/default.nix b/pkgs/development/python-modules/pylast/default.nix
index 9d4ef111f7e1a..19e1be9892f30 100644
--- a/pkgs/development/python-modules/pylast/default.nix
+++ b/pkgs/development/python-modules/pylast/default.nix
@@ -1,53 +1,52 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flaky
-, hatch-vcs
-, hatchling
-, httpx
-, importlib-metadata
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flaky,
+  hatch-vcs,
+  hatchling,
+  httpx,
+  importlib-metadata,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pylast";
-  version = "5.2.0";
-  format = "pyproject";
+  version = "5.3.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "pylast";
-    repo = pname;
+    repo = "pylast";
     rev = "refs/tags/${version}";
-    hash = "sha256-6yxsqruosSOJ5LeIBbvuEko4s9qU/ObNZiJD5YH/hvY=";
+    hash = "sha256-dgqTNISeyBkZ2m68pqw5rsoyPxLW4wWkv6iqq9bD5Ek=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-vcs
     hatchling
   ];
 
-  propagatedBuildInputs = [
-    httpx
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  dependencies = [ httpx ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   nativeCheckInputs = [
     pytestCheckHook
     flaky
   ];
 
-  pythonImportsCheck = [
-    "pylast"
-  ];
+  pythonImportsCheck = [ "pylast" ];
 
   meta = with lib; {
     description = "Python interface to last.fm (and compatibles)";
     homepage = "https://github.com/pylast/pylast";
+    changelog = "https://github.com/pylast/pylast/releases/tag/${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ fab rvolosatovs ];
+    maintainers = with maintainers; [
+      fab
+      rvolosatovs
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pylatex/default.nix b/pkgs/development/python-modules/pylatex/default.nix
index 44926587aa33c..ecd6adf3cdd2e 100644
--- a/pkgs/development/python-modules/pylatex/default.nix
+++ b/pkgs/development/python-modules/pylatex/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, ordered-set
-, pytestCheckHook
-, matplotlib
-, quantities
-, texlive
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  ordered-set,
+  pytestCheckHook,
+  matplotlib,
+  quantities,
+  texlive,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-gZKMYGMp7bzDY5+Xx9h1AFP4l0Zd936fDfSXyW5lY1k=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [ ordered-set ];
 
@@ -39,15 +38,11 @@ buildPythonPackage rec {
     pytestCheckHook
     matplotlib
     quantities
-    (texlive.combine { inherit (texlive)
-      scheme-small
-      lastpage
-      collection-fontsrecommended
-    ;})
+    (texlive.combine { inherit (texlive) scheme-small lastpage collection-fontsrecommended; })
   ];
 
   meta = with lib; {
-    description = "A Python library for creating LaTeX files and snippets";
+    description = "Python library for creating LaTeX files and snippets";
     homepage = "https://jeltef.github.io/PyLaTeX/current/";
     downloadPage = "https://github.com/JelteF/PyLaTeX/releases";
     changelog = "https://jeltef.github.io/PyLaTeX/current/changelog.html";
diff --git a/pkgs/development/python-modules/pylatexenc/default.nix b/pkgs/development/python-modules/pylatexenc/default.nix
index 8e66fc08a6560..d48fe47bf4473 100644
--- a/pkgs/development/python-modules/pylatexenc/default.nix
+++ b/pkgs/development/python-modules/pylatexenc/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pylaunches/default.nix b/pkgs/development/python-modules/pylaunches/default.nix
index 9adf3abfc61e1..106ea7a998880 100644
--- a/pkgs/development/python-modules/pylaunches/default.nix
+++ b/pkgs/development/python-modules/pylaunches/default.nix
@@ -1,30 +1,38 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pytest-asyncio
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pytest-asyncio,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pylaunches";
-  version = "1.4.0";
-  format = "setuptools";
+  version = "2.0.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "ludeeus";
-    repo = pname;
-    rev = version;
-    sha256 = "sha256-bIcnYcbfAwjet3cg97y+ujFfY2916ANk4sw0sZoU59g=";
+    repo = "pylaunches";
+    rev = "refs/tags/${version}";
+    hash = "sha256-NewzzZuiXwaWU59bu+M2QcSfydL1khvw/YJkbZ58W2Q=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  postPatch = ''
+    # Upstream doesn't set version in the repo
+    substituteInPlace pyproject.toml \
+      --replace-fail 'version = "0"' 'version = "${version}"'
+  '';
+
+  build-system = [ poetry-core ];
+
+  dependencies = [ aiohttp ];
 
   nativeCheckInputs = [
     aresponses
@@ -32,20 +40,12 @@ buildPythonPackage rec {
     pytest-asyncio
   ];
 
-  postPatch = ''
-    # Upstream doesn't set version in the repo
-    substituteInPlace setup.py \
-      --replace 'version="main",' 'version="${version}",' \
-      --replace ', "pytest-runner"' ""
-  '';
-
-  pythonImportsCheck = [
-    "pylaunches"
-  ];
+  pythonImportsCheck = [ "pylaunches" ];
 
   meta = with lib; {
     description = "Python module to get information about upcoming space launches";
     homepage = "https://github.com/ludeeus/pylaunches";
+    changelog = "https://github.com/ludeeus/pylaunches/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/pyld/default.nix b/pkgs/development/python-modules/pyld/default.nix
index 89d5544a31136..aa66ac581c3c0 100644
--- a/pkgs/development/python-modules/pyld/default.nix
+++ b/pkgs/development/python-modules/pyld/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchFromGitHub, python, requests }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  requests,
+}:
 
 let
 
@@ -15,7 +21,6 @@ let
     rev = "aceeaf224b64d6880189d795bd99c3ffadb5d79e";
     sha256 = "125q5rllfm8vg9mz8hn7bhvhv2vqpd86kx2kxlk84smh33l8kbyl";
   };
-
 in
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pylddwrap/default.nix b/pkgs/development/python-modules/pylddwrap/default.nix
index dc0ca98f186c2..b24700cee2c87 100644
--- a/pkgs/development/python-modules/pylddwrap/default.nix
+++ b/pkgs/development/python-modules/pylddwrap/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, icontract
-, pytestCheckHook
-, pythonOlder
-, substituteAll
-, typing-extensions
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  icontract,
+  pytestCheckHook,
+  pythonOlder,
+  substituteAll,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyleri/default.nix b/pkgs/development/python-modules/pyleri/default.nix
index 2ff3abf5978d9..2fdb2a0077c3c 100644
--- a/pkgs/development/python-modules/pyleri/default.nix
+++ b/pkgs/development/python-modules/pyleri/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, unittestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  unittestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-4t+6wtYzJbmL0TB/OXr89uZ2s8DeGlUdWwHd4YPsCW0=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyleri"
-  ];
+  pythonImportsCheck = [ "pyleri" ];
 
   meta = with lib; {
     description = "Module to parse SiriDB";
diff --git a/pkgs/development/python-modules/pylev/default.nix b/pkgs/development/python-modules/pylev/default.nix
index fdc5e2c080127..30831a8c5727b 100644
--- a/pkgs/development/python-modules/pylev/default.nix
+++ b/pkgs/development/python-modules/pylev/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pylgnetcast/default.nix b/pkgs/development/python-modules/pylgnetcast/default.nix
index f4811bf02dfc1..a017c49d574b2 100644
--- a/pkgs/development/python-modules/pylgnetcast/default.nix
+++ b/pkgs/development/python-modules/pylgnetcast/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-5lzLknuGLQryLCc4YQJn8AGuWTiSM90+8UTQ/WYfASM=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pylgnetcast"
-  ];
+  pythonImportsCheck = [ "pylgnetcast" ];
 
   meta = with lib; {
     description = "Python API client for the LG Smart TV running NetCast 3 or 4";
diff --git a/pkgs/development/python-modules/pylibacl/default.nix b/pkgs/development/python-modules/pylibacl/default.nix
index 68f2d2d125ca7..9438cb9102b9d 100644
--- a/pkgs/development/python-modules/pylibacl/default.nix
+++ b/pkgs/development/python-modules/pylibacl/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pkgs
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pkgs,
 }:
 
 buildPythonPackage rec {
@@ -11,7 +12,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-7UludMpUUtXUzr4j3yKepGJzWpZSi5+ijjzh96K+0xo=";
+    hash = "sha256-7UludMpUUtXUzr4j3yKepGJzWpZSi5+ijjzh96K+0xo=";
   };
 
   # ERROR: testExtended (tests.test_acls.AclExtensions)
@@ -21,7 +22,7 @@ buildPythonPackage rec {
   buildInputs = with pkgs; [ acl ];
 
   meta = {
-    description = "A Python extension module for POSIX ACLs, it can be used to query, list, add, and remove ACLs from files and directories under operating systems that support them";
+    description = "Python extension module for POSIX ACLs, it can be used to query, list, add, and remove ACLs from files and directories under operating systems that support them";
     license = lib.licenses.lgpl21Plus;
   };
 }
diff --git a/pkgs/development/python-modules/pylibconfig2/default.nix b/pkgs/development/python-modules/pylibconfig2/default.nix
index 0742272543434..608bb4da583f3 100644
--- a/pkgs/development/python-modules/pylibconfig2/default.nix
+++ b/pkgs/development/python-modules/pylibconfig2/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pyparsing }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyparsing,
+}:
 buildPythonPackage rec {
   pname = "pylibconfig2";
   version = "0.2.5";
diff --git a/pkgs/development/python-modules/pylibdmtx/default.nix b/pkgs/development/python-modules/pylibdmtx/default.nix
index bf2c4815ec3a6..97037747a25b2 100644
--- a/pkgs/development/python-modules/pylibdmtx/default.nix
+++ b/pkgs/development/python-modules/pylibdmtx/default.nix
@@ -1,9 +1,10 @@
-{ fetchFromGitHub
-, buildPythonPackage
-, pillow
-, numpy
-, libdmtx
-, lib
+{
+  fetchFromGitHub,
+  buildPythonPackage,
+  pillow,
+  numpy,
+  libdmtx,
+  lib,
 }:
 
 buildPythonPackage rec {
@@ -35,7 +36,10 @@ buildPythonPackage rec {
     rm pylibdmtx/tests/test_dmtx_library.py
   '';
 
-  propagatedBuildInputs = [ pillow numpy ];
+  propagatedBuildInputs = [
+    pillow
+    numpy
+  ];
 
   pythonImportsCheck = [ "pylibdmtx" ];
 
diff --git a/pkgs/development/python-modules/pylibjpeg-data/default.nix b/pkgs/development/python-modules/pylibjpeg-data/default.nix
new file mode 100644
index 0000000000000..dcc14a7fd912d
--- /dev/null
+++ b/pkgs/development/python-modules/pylibjpeg-data/default.nix
@@ -0,0 +1,39 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  flit-core,
+}:
+
+buildPythonPackage rec {
+  pname = "pylibjpeg-data";
+  version = "unstable-2024-03-28";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "pydicom";
+    repo = "pylibjpeg-data";
+    rev = "8253566715800a7fc3d4d949abab102c8172bca0";
+    hash = "sha256-TzhiZ4LCFZX75h3YRrEFO5kRVc5VwTOJd+1VFW3LsaQ=";
+  };
+
+  build-system = [ flit-core ];
+
+  doCheck = false; # no tests
+
+  pythonImportsCheck = [
+    "ljdata"
+    "ljdata.ds"
+    "ljdata.jpg"
+  ];
+
+  meta = {
+    description = "JPEG and DICOM data used for testing pylibjpeg";
+    homepage = "https://github.com/pydicom/pylibjpeg-data";
+    license = lib.licenses.mit;
+    maintainers = [ lib.maintainers.bcdarwin ];
+  };
+}
diff --git a/pkgs/development/python-modules/pylibjpeg-libjpeg/default.nix b/pkgs/development/python-modules/pylibjpeg-libjpeg/default.nix
index 9040f955efb4f..892e24c621225 100644
--- a/pkgs/development/python-modules/pylibjpeg-libjpeg/default.nix
+++ b/pkgs/development/python-modules/pylibjpeg-libjpeg/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, cython
-, poetry-core
-, setuptools
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  cython,
+  poetry-core,
+  setuptools,
+  numpy,
 }:
 
 buildPythonPackage rec {
   pname = "pylibjpeg-libjpeg";
-  version = "2.02";
+  version = "2.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,32 +21,26 @@ buildPythonPackage rec {
     owner = "pydicom";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-mGwku19Xe605fF3UU59712rYp+s/pP79lBRl79fhhTI=";
+    hash = "sha256-iU40QdAY5931YM3h3P+WCbiBfX88iVi2QdUvZLptsFs=";
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [
+  build-system = [
     cython
     poetry-core
     setuptools
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  dependencies = [ numpy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  doCheck = false;  # tests try to import 'libjpeg.data', which errors
+  doCheck = false; # tests try to import 'libjpeg.data', which errors
 
-  pythonImportsCheck = [
-    "libjpeg"
-  ];
+  pythonImportsCheck = [ "libjpeg" ];
 
   meta = with lib; {
-    description = "A JPEG, JPEG-LS and JPEG XT plugin for pylibjpeg";
+    description = "JPEG, JPEG-LS and JPEG XT plugin for pylibjpeg";
     homepage = "https://github.com/pydicom/pylibjpeg-libjpeg";
     changelog = "https://github.com/pydicom/pylibjpeg-libjpeg/releases/tag/v${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/development/python-modules/pylibjpeg-openjpeg/default.nix b/pkgs/development/python-modules/pylibjpeg-openjpeg/default.nix
new file mode 100644
index 0000000000000..e7b1fa52a8716
--- /dev/null
+++ b/pkgs/development/python-modules/pylibjpeg-openjpeg/default.nix
@@ -0,0 +1,77 @@
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  cmake,
+  cython,
+  poetry-core,
+  setuptools,
+  numpy,
+  openjpeg,
+  pytestCheckHook,
+  pydicom,
+  pylibjpeg,
+  pylibjpeg-data,
+}:
+
+buildPythonPackage rec {
+  pname = "pylibjpeg-openjpeg";
+  version = "2.3.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "pydicom";
+    repo = "pylibjpeg-openjpeg";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-cCDnARElNn+uY+HQ39OnGJRz2vTz0I8s0Oe+qGvqM1o=";
+  };
+
+  # don't use vendored openjpeg submodule:
+  # (note build writes into openjpeg source dir, so we have to make it writable)
+  postPatch = ''
+    rmdir lib/openjpeg
+    cp -r ${openjpeg.src} lib/openjpeg
+    chmod +rwX -R lib/openjpeg
+  '';
+
+  dontUseCmakeConfigure = true;
+
+  build-system = [
+    cmake
+    cython
+    poetry-core
+    setuptools
+  ];
+
+  dependencies = [ numpy ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pydicom
+    pylibjpeg-data
+    pylibjpeg
+  ];
+  disabledTestPaths = [
+    # ignore a few Python test files (e.g. performance tests) in openjpeg itself:
+    "lib/openjpeg"
+  ];
+
+  pytestFlagsArray = [ "openjpeg/tests" ];
+
+  pythonImportsCheck = [ "openjpeg" ];
+
+  meta = {
+    description = "A J2K and JP2 plugin for pylibjpeg";
+    homepage = "https://github.com/pydicom/pylibjpeg-openjpeg";
+    license = [ lib.licenses.mit ];
+    maintainers = with lib.maintainers; [ bcdarwin ];
+    # x86-linux: test_encode.py::TestEncodeBuffer failures
+    # darwin: numerous test failures, seemingly due to issues setting up test data
+    broken =
+      (stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux) || stdenv.hostPlatform.isDarwin;
+  };
+}
diff --git a/pkgs/development/python-modules/pylibjpeg/default.nix b/pkgs/development/python-modules/pylibjpeg/default.nix
index 134b0ebdb993c..155b3f1fe8c09 100644
--- a/pkgs/development/python-modules/pylibjpeg/default.nix
+++ b/pkgs/development/python-modules/pylibjpeg/default.nix
@@ -1,38 +1,19 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, flit-core
-, setuptools
-, numpy
-, pydicom
-, pylibjpeg-libjpeg
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  flit-core,
+  numpy,
+  pydicom,
+  pylibjpeg-data,
+  pylibjpeg-libjpeg,
 }:
 
-let
-  pylibjpeg-data = buildPythonPackage rec {
-    pname = "pylibjpeg-data";
-    version = "1.0.0dev0";
-    pyproject = true;
-
-    nativeBuildInputs = [ setuptools ];
-
-    src = fetchFromGitHub {
-      owner = "pydicom";
-      repo = "pylibjpeg-data";
-      rev = "2ab4b8a65b070656eca2582bd23197a3d01cdccd";
-      hash = "sha256-cFE1XjrqyGqwHCYGRucXK+q4k7ftUIbYwBw4WwIFtEc=";
-    };
-
-    doCheck = false;
-  };
-in
-
 buildPythonPackage rec {
   pname = "pylibjpeg";
-  version = "2.0.0";
+  version = "2.0.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -41,12 +22,12 @@ buildPythonPackage rec {
     owner = "pydicom";
     repo = "pylibjpeg";
     rev = "refs/tags/v${version}";
-    hash = "sha256-qGtrphsBBVieGS/8rdymbsjLMU/QEd7zFNAANN8bD+k=";
+    hash = "sha256-MA1A/hTIx95MYZ2LGOifnHn77wbv0ydAgQSzNZRykVg=";
   };
 
-  nativeBuildInputs = [ flit-core ];
+  build-system = [ flit-core ];
 
-  propagatedBuildInputs = [ numpy ];
+  dependencies = [ numpy ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -63,8 +44,5 @@ buildPythonPackage rec {
     changelog = "https://github.com/pydicom/pylibjpeg/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ bcdarwin ];
-    # several test failures of form
-    # "pydicom.errors.InvalidDicomError: File is missing DICOM File Meta Information header or the 'DICM' prefix is missing from the header. ..."
-    broken = stdenv.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/pyliblo/default.nix b/pkgs/development/python-modules/pyliblo/default.nix
index 0735fdcb72160..7caead892995a 100644
--- a/pkgs/development/python-modules/pyliblo/default.nix
+++ b/pkgs/development/python-modules/pyliblo/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, isPyPy
-, pythonAtLeast
-, liblo
-, cython_0
+{
+  lib,
+  buildPythonPackage,
+  fetchurl,
+  isPyPy,
+  liblo,
+  cython_0,
 }:
 
 buildPythonPackage rec {
@@ -34,5 +34,4 @@ buildPythonPackage rec {
     description = "Python wrapper for the liblo OSC library";
     license = licenses.lgpl21Only;
   };
-
 }
diff --git a/pkgs/development/python-modules/pylibmc/default.nix b/pkgs/development/python-modules/pylibmc/default.nix
index 3cd7a05e54ba2..e5730dfeb6144 100644
--- a/pkgs/development/python-modules/pylibmc/default.nix
+++ b/pkgs/development/python-modules/pylibmc/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, cyrus_sasl
-, fetchPypi
-, libmemcached
-, pythonOlder
-, zlib
+{
+  lib,
+  buildPythonPackage,
+  cyrus_sasl,
+  fetchPypi,
+  libmemcached,
+  pythonOlder,
+  zlib,
 }:
 
 buildPythonPackage rec {
@@ -25,21 +26,17 @@ buildPythonPackage rec {
     zlib
   ];
 
-  setupPyBuildFlags = [
-    "--with-sasl2"
-  ];
+  setupPyBuildFlags = [ "--with-sasl2" ];
 
   # Requires an external memcached server running
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pylibmc"
-  ];
+  pythonImportsCheck = [ "pylibmc" ];
 
   meta = with lib; {
     description = "Quick and small memcached client for Python";
     homepage = "http://sendapatch.se/projects/pylibmc/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pylink-square/default.nix b/pkgs/development/python-modules/pylink-square/default.nix
index 2903c0f8d5662..8f25327bc060b 100644
--- a/pkgs/development/python-modules/pylink-square/default.nix
+++ b/pkgs/development/python-modules/pylink-square/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchPypi
-, mock
-, psutil
-, pytestCheckHook
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  mock,
+  psutil,
+  pytestCheckHook,
+  pythonOlder,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "pylink-square";
-  version = "1.2.0";
-  format = "setuptools";
+  version = "1.3.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -20,10 +21,12 @@ buildPythonPackage rec {
     owner = "square";
     repo = "pylink";
     rev = "refs/tags/v${version}";
-    hash = "sha256-rcM7gvUUfXN5pL9uIihzmOCXA7NKjiMt2GaQaGJxD9M=";
+    hash = "sha256-4tdtyb0AjsAmFOPdkxbbro8PH3akC5uihN59lgijhkc=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     psutil
     six
   ];
@@ -33,9 +36,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pylink"
-  ];
+  pythonImportsCheck = [ "pylink" ];
 
   disabledTests = [
     # AttributeError: 'called_once_with' is not a valid assertion
diff --git a/pkgs/development/python-modules/pylint-celery/default.nix b/pkgs/development/python-modules/pylint-celery/default.nix
index d89afecbaa11f..99ffa65d6cd70 100644
--- a/pkgs/development/python-modules/pylint-celery/default.nix
+++ b/pkgs/development/python-modules/pylint-celery/default.nix
@@ -1,10 +1,11 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, isPy3k
-, lib
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy3k,
+  lib,
 
-# pythonPackages
-, pylint-plugin-utils
+  # pythonPackages
+  pylint-plugin-utils,
 }:
 
 buildPythonPackage rec {
@@ -20,19 +21,15 @@ buildPythonPackage rec {
     sha256 = "05fhwraq12c2724pn4py1bjzy5rmsrb1x68zck73nlp5icba6yap";
   };
 
-  propagatedBuildInputs = [
-    pylint-plugin-utils
-  ];
+  propagatedBuildInputs = [ pylint-plugin-utils ];
 
   # Testing requires a very old version of pylint, incompatible with other dependencies
   doCheck = false;
 
   meta = with lib; {
-    description = "A Pylint plugin to analyze Celery applications";
+    description = "Pylint plugin to analyze Celery applications";
     homepage = "https://github.com/PyCQA/pylint-celery";
     license = licenses.gpl2;
-    maintainers = with maintainers; [
-      kamadorueda
-    ];
+    maintainers = with maintainers; [ kamadorueda ];
   };
 }
diff --git a/pkgs/development/python-modules/pylint-django/default.nix b/pkgs/development/python-modules/pylint-django/default.nix
index d3f22e8532ef9..cac67ca5051ae 100644
--- a/pkgs/development/python-modules/pylint-django/default.nix
+++ b/pkgs/development/python-modules/pylint-django/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, django
-, django-tables2
-, django-tastypie
-, factory-boy
-, fetchFromGitHub
-, poetry-core
-, pylint-plugin-utils
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  django,
+  django-tables2,
+  django-tastypie,
+  factory-boy,
+  fetchFromGitHub,
+  poetry-core,
+  pylint-plugin-utils,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,18 +26,12 @@ buildPythonPackage rec {
     hash = "sha256-MNgu3LvFoohXA+JzUiHIaYFw0ssEe+H5T8Ea56LcGuI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    pylint-plugin-utils
-  ];
+  propagatedBuildInputs = [ pylint-plugin-utils ];
 
   passthru.optional-dependencies = {
-    with_django = [
-      django
-    ];
+    with_django = [ django ];
   };
 
   nativeCheckInputs = [
@@ -51,11 +46,11 @@ buildPythonPackage rec {
     "test_migrations_plugin"
     "func_noerror_model_unicode_lambda"
     "test_linter_should_be_pickleable_with_pylint_django_plugin_installed"
+    "func_noerror_model_fields"
+    "func_noerror_form_fields"
   ];
 
-  pythonImportsCheck = [
-    "pylint_django"
-  ];
+  pythonImportsCheck = [ "pylint_django" ];
 
   meta = with lib; {
     description = "Pylint plugin to analyze Django applications";
diff --git a/pkgs/development/python-modules/pylint-flask/default.nix b/pkgs/development/python-modules/pylint-flask/default.nix
index 0928e0bd07e13..375d1e1757745 100644
--- a/pkgs/development/python-modules/pylint-flask/default.nix
+++ b/pkgs/development/python-modules/pylint-flask/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, astroid
-, buildPythonPackage
-, fetchPypi
-, pylint
-, pylint-plugin-utils
-, pythonOlder
-, setuptools
+{
+  lib,
+  astroid,
+  buildPythonPackage,
+  fetchPypi,
+  pylint,
+  pylint-plugin-utils,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,13 +21,9 @@ buildPythonPackage rec {
     hash = "sha256-9Nl94iFr97/OB8nAixZul4/p8nJd4qUKmEWpfefjFRc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  buildInputs = [
-    pylint
-  ];
+  buildInputs = [ pylint ];
 
   propagatedBuildInputs = [
     astroid
@@ -37,12 +34,10 @@ buildPythonPackage rec {
   # also tests are only available at GitHub, with an old release tag
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pylint_flask"
-  ];
+  pythonImportsCheck = [ "pylint_flask" ];
 
   meta = with lib; {
-    description = "A Pylint plugin to analyze Flask applications";
+    description = "Pylint plugin to analyze Flask applications";
     homepage = "https://github.com/jschaf/pylint-flask";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ kamadorueda ];
diff --git a/pkgs/development/python-modules/pylint-plugin-utils/default.nix b/pkgs/development/python-modules/pylint-plugin-utils/default.nix
index 83315aed22a03..d6ddceb94cc96 100644
--- a/pkgs/development/python-modules/pylint-plugin-utils/default.nix
+++ b/pkgs/development/python-modules/pylint-plugin-utils/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pylint
-, pytestCheckHook
-, pythonOlder
-, toml
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pylint,
+  pytestCheckHook,
+  pythonOlder,
+  toml,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-xuPU1txfB+6+zJjtlfvNA950S5n7/PWPPFn1F3RtvCc=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     pylint
     toml
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pylint_plugin_utils"
-  ];
+  pythonImportsCheck = [ "pylint_plugin_utils" ];
 
   meta = with lib; {
     description = "Utilities and helpers for writing Pylint plugins";
diff --git a/pkgs/development/python-modules/pylint-venv/default.nix b/pkgs/development/python-modules/pylint-venv/default.nix
index b12ae73b8c34b..47d294f15317c 100644
--- a/pkgs/development/python-modules/pylint-venv/default.nix
+++ b/pkgs/development/python-modules/pylint-venv/default.nix
@@ -1,8 +1,9 @@
- { lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-dsVEHJawsTNKVCVmeOa61wOU5GPeyzAU/eUDFrK9PPg=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pylint_venv"
-  ];
+  pythonImportsCheck = [ "pylint_venv" ];
 
   meta = with lib; {
     description = "Module to make pylint respect virtual environments";
diff --git a/pkgs/development/python-modules/pylint/default.nix b/pkgs/development/python-modules/pylint/default.nix
index 046277a5fa586..9076d39d83f69 100644
--- a/pkgs/development/python-modules/pylint/default.nix
+++ b/pkgs/development/python-modules/pylint/default.nix
@@ -1,28 +1,29 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, astroid
-, dill
-, isort
-, mccabe
-, platformdirs
-, requests
-, setuptools
-, tomli
-, tomlkit
-, typing-extensions
-, gitpython
-, py
-, pytest-timeout
-, pytest-xdist
-, pytest7CheckHook
+{
+  lib,
+  stdenv,
+  astroid,
+  buildPythonPackage,
+  dill,
+  fetchFromGitHub,
+  gitpython,
+  isort,
+  mccabe,
+  platformdirs,
+  py,
+  pytest-timeout,
+  pytest-xdist,
+  pytest7CheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
+  tomli,
+  tomlkit,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "pylint";
-  version = "3.1.0";
+  version = "3.2.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -31,25 +32,22 @@ buildPythonPackage rec {
     owner = "pylint-dev";
     repo = "pylint";
     rev = "refs/tags/v${version}";
-    hash = "sha256-JHtMaZNwl+yLwEDD4Nl0vOt9NQ9DO7iIy5LR/9ta1Pw=";
+    hash = "sha256-b3KkSgTmN6ojMJaVQGwvHIa41M2eZS9prxcL5peX/xU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    astroid
-    dill
-    isort
-    mccabe
-    platformdirs
-    tomlkit
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    typing-extensions
-  ];
+  dependencies =
+    [
+      astroid
+      dill
+      isort
+      mccabe
+      platformdirs
+      tomlkit
+    ]
+    ++ lib.optionals (pythonOlder "3.11") [ tomli ]
+    ++ lib.optionals (pythonOlder "3.10") [ typing-extensions ];
 
   nativeCheckInputs = [
     gitpython
@@ -67,7 +65,8 @@ buildPythonPackage rec {
     # displaying implemented interfaces in pylint 3.0. The
     # implementation relies on the '__implements__'  attribute proposed
     # in PEP 245, which was rejected in 2006.
-    "-W" "ignore::DeprecationWarning"
+    "-W"
+    "ignore::DeprecationWarning"
     "-v"
   ];
 
@@ -84,30 +83,32 @@ buildPythonPackage rec {
     "tests/pyreverse/test_writer.py"
   ];
 
-  disabledTests = [
-    # AssertionError when self executing and checking output
-    # expected output looks like it should match though
-    "test_invocation_of_pylint_config"
-    "test_generate_rcfile"
-    "test_generate_toml_config"
-    "test_help_msg"
-    "test_output_of_callback_options"
-    # Failed: DID NOT WARN. No warnings of type (<class 'UserWarning'>,) were emitted. The list of emitted warnings is: [].
-    "test_save_and_load_not_a_linter_stats"
-    # Truncated string expectation mismatch
-    "test_truncated_compare"
-    # Probably related to pytest versions, see pylint-dev/pylint#9477 and pylint-dev/pylint#9483
-    "test_functional"
-    # AssertionError: assert [('specializa..., 'Ancestor')] == [('aggregatio..., 'Ancestor')]
-    "test_functional_relation_extraction"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_parallel_execution"
-    "test_py3k_jobs_option"
-  ];
+  disabledTests =
+    [
+      # AssertionError when self executing and checking output
+      # expected output looks like it should match though
+      "test_invocation_of_pylint_config"
+      "test_generate_rcfile"
+      "test_generate_toml_config"
+      "test_help_msg"
+      "test_output_of_callback_options"
+      # Failed: DID NOT WARN. No warnings of type (<class 'UserWarning'>,) were emitted. The list of emitted warnings is: [].
+      "test_save_and_load_not_a_linter_stats"
+      # Truncated string expectation mismatch
+      "test_truncated_compare"
+      # Probably related to pytest versions, see pylint-dev/pylint#9477 and pylint-dev/pylint#9483
+      "test_functional"
+      # AssertionError: assert [('specializa..., 'Ancestor')] == [('aggregatio..., 'Ancestor')]
+      "test_functional_relation_extraction"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      "test_parallel_execution"
+      "test_py3k_jobs_option"
+    ];
 
-  meta = with lib; {
+  meta = {
+    description = "Bug and style checker for Python";
     homepage = "https://pylint.readthedocs.io/en/stable/";
-    description = "A bug and style checker for Python";
     changelog = "https://github.com/pylint-dev/pylint/releases/tag/v${version}";
     longDescription = ''
       Pylint is a Python static code analysis tool which looks for programming errors,
@@ -118,7 +119,8 @@ buildPythonPackage rec {
       - symilar: an independent similarities checker
       - epylint: Emacs and Flymake compatible Pylint
     '';
-    license = licenses.gpl1Plus;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.gpl2Plus;
+    maintainers = [ ];
+    mainProgram = "pylint";
   };
 }
diff --git a/pkgs/development/python-modules/pylion/default.nix b/pkgs/development/python-modules/pylion/default.nix
index 10cfd173b66de..92d6823ffe6d2 100644
--- a/pkgs/development/python-modules/pylion/default.nix
+++ b/pkgs/development/python-modules/pylion/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromBitbucket
-, h5py
-, termcolor
-, pexpect
-, jinja2
-, sphinxHook
-, sphinx-rtd-theme
+{
+  lib,
+  buildPythonPackage,
+  fetchFromBitbucket,
+  h5py,
+  termcolor,
+  pexpect,
+  jinja2,
+  sphinxHook,
+  sphinx-rtd-theme,
 }:
 
 buildPythonPackage {
@@ -47,7 +48,7 @@ buildPythonPackage {
   '';
 
   meta = with lib; {
-    description = "A LAMMPS wrapper for molecular dynamics simulations of trapped ions";
+    description = "LAMMPS wrapper for molecular dynamics simulations of trapped ions";
     homepage = "https://bitbucket.org/dtrypogeorgos/pylion";
     license = licenses.mit;
     maintainers = with maintainers; [ doronbehar ];
diff --git a/pkgs/development/python-modules/pylitterbot/default.nix b/pkgs/development/python-modules/pylitterbot/default.nix
index add82ecc2d15f..ecd60bb6907f9 100644
--- a/pkgs/development/python-modules/pylitterbot/default.nix
+++ b/pkgs/development/python-modules/pylitterbot/default.nix
@@ -3,31 +3,34 @@
   aiohttp,
   aioresponses,
   buildPythonPackage,
+  deepdiff,
   fetchFromGitHub,
   poetry-core,
   poetry-dynamic-versioning,
+  pycognito,
   pyjwt,
   pytest-aiohttp,
   pytest-freezegun,
   pytestCheckHook,
   pythonOlder,
-  deepdiff,
 }:
 
 buildPythonPackage rec {
   pname = "pylitterbot";
-  version = "2023.5.0";
+  version = "2023.5.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "natekspencer";
     repo = "pylitterbot";
     rev = "refs/tags/v${version}";
-    hash = "sha256-MSQdX2PKQohmPGqtRZnUmCCVgKgaf4+cHAUItiPv7pY=";
+    hash = "sha256-Mpqa7pMxnFdSL1KGTUbgjh1zd8bAcoyzgxRZZ4SGfYc=";
   };
 
+  pythonRelaxDeps = [ "deepdiff" ];
+
   build-system = [
     poetry-core
     poetry-dynamic-versioning
@@ -36,6 +39,7 @@ buildPythonPackage rec {
   dependencies = [
     aiohttp
     deepdiff
+    pycognito
     pyjwt
   ];
 
diff --git a/pkgs/development/python-modules/pylnk3/default.nix b/pkgs/development/python-modules/pylnk3/default.nix
index 819c7d6c5a238..d6617e81798fc 100644
--- a/pkgs/development/python-modules/pylnk3/default.nix
+++ b/pkgs/development/python-modules/pylnk3/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, twine
-, invoke
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  invoke,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,16 +20,14 @@ buildPythonPackage rec {
     hash = "sha256-yu4BNvYai3iBVNyOfAOsLd5XrcFw8cR4arRyFJHKbpk=";
   };
 
-   propagatedBuildInputs = [
-     pytest
-     invoke
+  propagatedBuildInputs = [
+    pytest
+    invoke
   ];
   # There are no tests in pylnk3.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pylnk3"
-  ];
+  pythonImportsCheck = [ "pylnk3" ];
 
   meta = with lib; {
     description = "Python library for reading and writing Windows shortcut files (.lnk)";
diff --git a/pkgs/development/python-modules/pyloadapi/default.nix b/pkgs/development/python-modules/pyloadapi/default.nix
new file mode 100644
index 0000000000000..cb2e77d5d2238
--- /dev/null
+++ b/pkgs/development/python-modules/pyloadapi/default.nix
@@ -0,0 +1,63 @@
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatch-regex-commit,
+  hatchling,
+  pytest-asyncio,
+  pytestCheckHook,
+  python-dotenv,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "pyloadapi";
+  version = "1.4.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.12";
+
+  src = fetchFromGitHub {
+    owner = "tr4nt0r";
+    repo = "pyloadapi";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-USSTXHHhtUc8QF9U3t3rARXn5Iqo6KOGBa3VAfRMbiQ=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "--cov=src/pyloadapi/ --cov-report=term-missing" ""
+  '';
+
+  build-system = [
+    hatch-regex-commit
+    hatchling
+  ];
+
+  dependencies = [ aiohttp ];
+
+  nativeCheckInputs = [
+    aioresponses
+    pytest-asyncio
+    pytestCheckHook
+    python-dotenv
+  ];
+
+  pythonImportsCheck = [ "pyloadapi" ];
+
+  disabledTestPaths = [
+    # Tests require network access
+    "tests/test_cli.py"
+  ];
+
+  meta = with lib; {
+    description = "Simple wrapper for pyLoad's API";
+    homepage = "https://github.com/tr4nt0r/pyloadapi";
+    changelog = "https://github.com/tr4nt0r/pyloadapi/blob/${version}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
+
diff --git a/pkgs/development/python-modules/pylpsd/default.nix b/pkgs/development/python-modules/pylpsd/default.nix
index c04d82c802762..f583391a0d432 100644
--- a/pkgs/development/python-modules/pylpsd/default.nix
+++ b/pkgs/development/python-modules/pylpsd/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, numpy
-, scipy
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  numpy,
+  scipy,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
 
   # Tests fail and there are none
   doCheck = false;
-  pythonImportsCheck = [
-    "pylpsd"
-  ];
+  pythonImportsCheck = [ "pylpsd" ];
 
   propagatedBuildInputs = [
     numpy
@@ -26,7 +25,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "Python implementation of the LPSD algorithm for computing power spectral density with logarithmically spaced points.";
+    description = "Python implementation of the LPSD algorithm for computing power spectral density with logarithmically spaced points";
     homepage = "https://github.com/bleykauf/py-lpsd";
     license = licenses.mit;
     maintainers = with maintainers; [ doronbehar ];
diff --git a/pkgs/development/python-modules/pylru/default.nix b/pkgs/development/python-modules/pylru/default.nix
index a83f2fd3ad14e..27dd4c93d6fc8 100644
--- a/pkgs/development/python-modules/pylru/default.nix
+++ b/pkgs/development/python-modules/pylru/default.nix
@@ -1,8 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,12 +22,10 @@ buildPythonPackage rec {
   # Check with the next release if tests are ready
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pylru"
-  ];
+  pythonImportsCheck = [ "pylru" ];
 
   meta = with lib; {
-    description = "A least recently used (LRU) cache implementation";
+    description = "Least recently used (LRU) cache implementation";
     homepage = "https://github.com/jlhutch/pylru";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ abbradar ];
diff --git a/pkgs/development/python-modules/pyls-flake8/default.nix b/pkgs/development/python-modules/pyls-flake8/default.nix
index 9f217aca39072..c8b8329797a60 100644
--- a/pkgs/development/python-modules/pyls-flake8/default.nix
+++ b/pkgs/development/python-modules/pyls-flake8/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flake8
-, python-lsp-server
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flake8,
+  python-lsp-server,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,11 +20,14 @@ buildPythonPackage rec {
     sha256 = "14wkmwh8mqr826vdzxhvhdwrnx2akzmnbv3ar391qs4imwqfjx3l";
   };
 
-  propagatedBuildInputs = [ flake8 python-lsp-server ];
+  propagatedBuildInputs = [
+    flake8
+    python-lsp-server
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/emanspeaks/pyls-flake8";
-    description = "A Flake8 plugin for the Python LSP Server.";
+    description = "Flake8 plugin for the Python LSP Server";
     license = licenses.mit;
     maintainers = with maintainers; [ cpcloud ];
   };
diff --git a/pkgs/development/python-modules/pyls-isort/default.nix b/pkgs/development/python-modules/pyls-isort/default.nix
index e42c4129e791f..cc2048cc0450f 100644
--- a/pkgs/development/python-modules/pyls-isort/default.nix
+++ b/pkgs/development/python-modules/pyls-isort/default.nix
@@ -1,16 +1,21 @@
-{ lib, buildPythonPackage, fetchFromGitHub
-, python-lsp-server, isort
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  python-lsp-server,
+  isort,
 }:
 
 buildPythonPackage rec {
   pname = "pyls-isort";
   version = "0.2.2";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "paradoxxxzero";
     repo = "pyls-isort";
-    rev = "v${version}";
+    rev = "refs/tags/v${version}";
     sha256 = "0xba0aiyjfdi9swjzxk26l94dwlwvn17kkfjfscxl8gvspzsn057";
   };
 
@@ -19,14 +24,17 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "pyls_isort" ];
 
-  propagatedBuildInputs = [
-    isort python-lsp-server
+  build-system = [ setuptools ];
+
+  dependencies = [
+    isort
+    python-lsp-server
   ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://github.com/paradoxxxzero/pyls-isort";
     description = "Isort plugin for python-lsp-server";
-    license = licenses.mit;
-    maintainers = with maintainers; [ cpcloud ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ cpcloud ];
   };
 }
diff --git a/pkgs/development/python-modules/pyls-memestra/default.nix b/pkgs/development/python-modules/pyls-memestra/default.nix
index 312479d223d77..6a61f39ca4d66 100644
--- a/pkgs/development/python-modules/pyls-memestra/default.nix
+++ b/pkgs/development/python-modules/pyls-memestra/default.nix
@@ -1,22 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, deprecated
-, memestra
-, python-lsp-server
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # dependencies
+  deprecated,
+  memestra,
+  python-lsp-server,
 }:
 
 buildPythonPackage rec {
   pname = "pyls-memestra";
   version = "0.0.16";
-  format = "setuptools";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-zMVDd2uB4znw38z3yb0Nt7qQH5dGHTbQBIZO/qo1/t8=";
+  src = fetchFromGitHub {
+    owner = "QuantStack";
+    repo = "pyls-memestra";
+    rev = "refs/tags/${version}";
+    hash = "sha256-C1d2BibjpoZCPSy39PkdcLiLIwZZG+XTDWXVjTT1Bws=";
   };
 
-  propagatedBuildInputs = [
+  dependencies = [
     deprecated
     memestra
     python-lsp-server
@@ -25,14 +30,12 @@ buildPythonPackage rec {
   # Tests fail because they rely on writting to read-only files
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyls_memestra"
-  ];
+  pythonImportsCheck = [ "pyls_memestra" ];
 
-  meta = with lib; {
+  meta = {
     description = "Memestra plugin for the Python Language Server";
     homepage = "https://github.com/QuantStack/pyls-memestra";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/pyls-spyder/default.nix b/pkgs/development/python-modules/pyls-spyder/default.nix
index d6da0c2925968..de2cbdae88b8d 100644
--- a/pkgs/development/python-modules/pyls-spyder/default.nix
+++ b/pkgs/development/python-modules/pyls-spyder/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python-lsp-server
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python-lsp-server,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     sha256 = "11ajbsia60d4c9s6m6rbvaqp1d69fcdbq6a98lkzkkzv2b9pdhkk";
   };
 
-  propagatedBuildInputs = [
-    python-lsp-server
-  ];
+  propagatedBuildInputs = [ python-lsp-server ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "pyls_spyder" ];
 
@@ -31,6 +28,6 @@ buildPythonPackage rec {
     description = "Spyder extensions for the python-language-server";
     homepage = "https://github.com/spyder-ide/pyls-spyder";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pylsp-mypy/default.nix b/pkgs/development/python-modules/pylsp-mypy/default.nix
index e93e244063414..42baae0b0659f 100644
--- a/pkgs/development/python-modules/pylsp-mypy/default.nix
+++ b/pkgs/development/python-modules/pylsp-mypy/default.nix
@@ -1,55 +1,54 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, mypy
-, pytestCheckHook
-, python-lsp-server
-, pythonOlder
-, tomli
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  mypy,
+  pytestCheckHook,
+  python-lsp-server,
+  tomli,
 }:
 
 buildPythonPackage rec {
   pname = "pylsp-mypy";
-  version = "0.6.8";
-  format = "pyproject";
+  version = "0.6.9";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "python-lsp";
     repo = "pylsp-mypy";
     rev = "refs/tags/${version}";
-    hash = "sha256-oEWUXkE8U7/ye6puJZRSkQFi10BPGuc8XZQbHwqOPEI=";
+    hash = "sha256-MP9a8dI5ggM+XEJYB6O4nYDYIXbtxi2TK5b+JQgViZQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     mypy
     python-lsp-server
-    tomli
-  ];
+  ] ++ lib.optional (pythonOlder "3.11") tomli;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pylsp_mypy"
-  ];
+  pythonImportsCheck = [ "pylsp_mypy" ];
 
   disabledTests = [
     # Tests wants to call dmypy
     "test_option_overrides_dmypy"
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Mypy plugin for the Python LSP Server";
     homepage = "https://github.com/python-lsp/pylsp-mypy";
-    license = licenses.mit;
-    maintainers = with maintainers; [ cpcloud ];
+    changelog = "https://github.com/python-lsp/pylsp-mypy/releases/tag/${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ cpcloud ];
   };
 }
diff --git a/pkgs/development/python-modules/pylsp-rope/default.nix b/pkgs/development/python-modules/pylsp-rope/default.nix
index 22776d4dc6afc..e7af3803e4808 100644
--- a/pkgs/development/python-modules/pylsp-rope/default.nix
+++ b/pkgs/development/python-modules/pylsp-rope/default.nix
@@ -1,41 +1,52 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, rope
-, pytestCheckHook
-, python-lsp-server
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  rope,
+  python-lsp-server,
+
+  # checks
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pylsp-rope";
   version = "0.1.16";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.6";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-1oC2iMYKQCV6iELsgIpuDeFZakelMA8irs/caVVQIKc=";
+  src = fetchFromGitHub {
+    owner = "python-rope";
+    repo = "pylsp-rope";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Mr+mWRvOXoy7+SosMae80o0V1jBMn1dEoGmaR/BGHrc=";
   };
 
-  propagatedBuildInputs = [
+  build-system =  [
+    setuptools
+  ];
+
+  dependencies = [
     rope
     python-lsp-server
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  pythonImportsCheck = [ "pylsp_rope" ];
 
-  pythonImportsCheck = [
-    "pylsp_rope"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  meta = with lib; {
+  meta = {
     description = "Extended refactoring capabilities for Python LSP Server using Rope";
     homepage = "https://github.com/python-rope/pylsp-rope";
-    license = licenses.mit;
-    maintainers = with maintainers; [ GaetanLepage ];
+    changelog = "https://github.com/python-rope/pylsp-rope/releases/tag/${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/pylsqpack/default.nix b/pkgs/development/python-modules/pylsqpack/default.nix
index f1e595f88b472..e36214b2206cd 100644
--- a/pkgs/development/python-modules/pylsqpack/default.nix
+++ b/pkgs/development/python-modules/pylsqpack/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
     hash = "sha256-Ra5V5yGHdQX01czUlZHWk1PypUioZz36+yUdOFs8CX8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
diff --git a/pkgs/development/python-modules/pylti/default.nix b/pkgs/development/python-modules/pylti/default.nix
deleted file mode 100644
index a4f4abcb73042..0000000000000
--- a/pkgs/development/python-modules/pylti/default.nix
+++ /dev/null
@@ -1,53 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, httplib2
-, oauth
-, oauth2
-, semantic-version
-, flask
-, httpretty
-, oauthlib
-, pyflakes
-, pytest
-, pytestcache
-, pytest-cov
-, cov-core
-, pytest-flakes
-, sphinx
-, mock
-, chalice
-, isPy27
-}:
-
-buildPythonPackage rec {
-  pname = "pylti";
-  version = "0.7.0";
-  format = "setuptools";
-
-  disabled = !isPy27;
-
-  # There is no need to fix mock. https://github.com/mitodl/pylti/pull/48
-  postPatch = ''
-    substituteInPlace setup.py --replace "mock==1.0.1" "mock"
-  '';
-
-  propagatedBuildInputs = [ httplib2 oauth oauth2 semantic-version ];
-  nativeCheckInputs = [
-    flask httpretty oauthlib pyflakes pytest pytestcache pytest-cov cov-core
-    pytest-flakes sphinx mock chalice
-  ];
-
-  src = fetchPypi {
-    pname = "PyLTI";
-    inherit version;
-    sha256 = "80938a235b1ab390f6889a95237d087ea7adde5cc50fcae9c80c49898e8ee78e";
-  };
-
-  meta = {
-    description = "Implementation of IMS LTI interface that works with edX";
-    homepage = "https://github.com/mitodl/pylti";
-    license = lib.licenses.bsdOriginal;
-    maintainers = with lib.maintainers; [ layus ];
-  };
-}
diff --git a/pkgs/development/python-modules/pylutron-caseta/default.nix b/pkgs/development/python-modules/pylutron-caseta/default.nix
index 0abbd2eaa5172..2bd1368ffb02b 100644
--- a/pkgs/development/python-modules/pylutron-caseta/default.nix
+++ b/pkgs/development/python-modules/pylutron-caseta/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, click
-, cryptography
-, fetchFromGitHub
-, hatchling
-, pytest-asyncio
-, pytest-timeout
-, pytestCheckHook
-, pythonOlder
-, xdg
-, zeroconf
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  click,
+  cryptography,
+  fetchFromGitHub,
+  hatchling,
+  pytest-asyncio,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonOlder,
+  xdg,
+  zeroconf,
 }:
 
 buildPythonPackage rec {
   pname = "pylutron-caseta";
-  version = "0.20.0";
+  version = "0.21.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,18 +25,12 @@ buildPythonPackage rec {
     owner = "gurumitts";
     repo = "pylutron-caseta";
     rev = "refs/tags/v${version}";
-    hash = "sha256-7uUNLlVrMEgah2YvTECC4S2WArAQjeAyfgDd62sQsYA=";
+    hash = "sha256-u2FPWDWBSoS5mJPnYAkLTQR6K8YLDs77djdWL+7840o=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
-  propagatedBuildInputs = [
-    cryptography
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    async-timeout
-  ];
+  propagatedBuildInputs = [ cryptography ] ++ lib.optionals (pythonOlder "3.11") [ async-timeout ];
 
   passthru.optional-dependencies = {
     cli = [
@@ -49,17 +44,11 @@ buildPythonPackage rec {
     pytest-asyncio
     pytest-timeout
     pytestCheckHook
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    async-timeout
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ async-timeout ];
 
-  pytestFlagsArray = [
-    "--asyncio-mode=auto"
-  ];
+  pytestFlagsArray = [ "--asyncio-mode=auto" ];
 
-  pythonImportsCheck = [
-    "pylutron_caseta"
-  ];
+  pythonImportsCheck = [ "pylutron_caseta" ];
 
   meta = with lib; {
     description = "Python module o control Lutron Caseta devices";
diff --git a/pkgs/development/python-modules/pylutron/default.nix b/pkgs/development/python-modules/pylutron/default.nix
index 49ee5e278485e..f051004a490cb 100644
--- a/pkgs/development/python-modules/pylutron/default.nix
+++ b/pkgs/development/python-modules/pylutron/default.nix
@@ -1,35 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pylutron";
-  version = "0.2.12";
+  version = "0.2.15";
   pyproject = true;
 
+  disabled = pythonOlder "3.7";
+
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-UTn4HfyiyQAekIZD4I5lacYb7ySRhW8OUgiOg33JZtQ=";
+    hash = "sha256-1UUW3Ym11jR4dxSS1OOVPl6h69I6H782Q4ZeVitty0c=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pylutron"
-  ];
+  pythonImportsCheck = [ "pylutron" ];
 
   meta = with lib; {
-    changelog = "https://github.com/thecynic/pylutron/releases/tag/${version}";
     description = "Python library for controlling a Lutron RadioRA 2 system";
     homepage = "https://github.com/thecynic/pylutron";
-    license = with licenses; [ mit ];
+    changelog = "https://github.com/thecynic/pylutron/releases/tag/${version}";
+    license = with licenses; [
+      mit
+      psfl
+    ];
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/pylxd/default.nix b/pkgs/development/python-modules/pylxd/default.nix
index 3d94d0db35996..78c3cba291c48 100644
--- a/pkgs/development/python-modules/pylxd/default.nix
+++ b/pkgs/development/python-modules/pylxd/default.nix
@@ -1,19 +1,19 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, ddt
-, fetchFromGitHub
-, mock-services
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, requests
-, urllib3
-, pythonRelaxDepsHook
-, requests-toolbelt
-, requests-unixsocket
-, setuptools
-, ws4py
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  ddt,
+  fetchFromGitHub,
+  mock-services,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  requests,
+  urllib3,
+  requests-toolbelt,
+  requests-unixsocket,
+  setuptools,
+  ws4py,
 }:
 
 buildPythonPackage rec {
@@ -30,12 +30,9 @@ buildPythonPackage rec {
     hash = "sha256-Q4GMz7HFpJNPYlYgLhE0a7mVCwNpdbw4XVcUGQ2gUJ0=";
   };
 
-  pythonRelaxDeps = [
-    "urllib3"
-  ];
+  pythonRelaxDeps = [ "urllib3" ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -60,15 +57,13 @@ buildPythonPackage rec {
     "migration"
   ];
 
-  pythonImportsCheck = [
-    "pylxd"
-  ];
+  pythonImportsCheck = [ "pylxd" ];
 
   meta = with lib; {
     description = "Library for interacting with the LXD REST API";
     homepage = "https://pylxd.readthedocs.io/";
     changelog = "https://github.com/canonical/pylxd/releases/tag/${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pylyrics/default.nix b/pkgs/development/python-modules/pylyrics/default.nix
index 26530cabf401c..189b9d184db0b 100644
--- a/pkgs/development/python-modules/pylyrics/default.nix
+++ b/pkgs/development/python-modules/pylyrics/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, beautifulsoup4, requests }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  beautifulsoup4,
+  requests,
+}:
 
 buildPythonPackage rec {
   pname = "pylyrics";
@@ -23,9 +29,9 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A Pythonic Implementation of lyrics.wikia.com for getting lyrics of songs ";
+    description = "Pythonic Implementation of lyrics.wikia.com for getting lyrics of songs";
     homepage = "https://github.com/geekpradd/PyLyrics";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pylzma/default.nix b/pkgs/development/python-modules/pylzma/default.nix
index aa39989449945..bd0ba29d90d10 100644
--- a/pkgs/development/python-modules/pylzma/default.nix
+++ b/pkgs/development/python-modules/pylzma/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "pylzma";
diff --git a/pkgs/development/python-modules/pymacaroons/default.nix b/pkgs/development/python-modules/pymacaroons/default.nix
index 2950e71020dbb..3abfa6431e06e 100644
--- a/pkgs/development/python-modules/pymacaroons/default.nix
+++ b/pkgs/development/python-modules/pymacaroons/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, six, pynacl }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  pynacl,
+}:
 
 buildPythonPackage rec {
   pname = "pymacaroons";
diff --git a/pkgs/development/python-modules/pymailgunner/default.nix b/pkgs/development/python-modules/pymailgunner/default.nix
index 6b1b03cebf345..7e5a5bd5d8c47 100644
--- a/pkgs/development/python-modules/pymailgunner/default.nix
+++ b/pkgs/development/python-modules/pymailgunner/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-QKwpW1aeN6OI76Kocow1Zhghq4/fl/cMPexny0MTwQs=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pymailgunner"
-  ];
+  pythonImportsCheck = [ "pymailgunner" ];
 
   meta = with lib; {
     description = "Library for interacting with Mailgun e-mail service";
diff --git a/pkgs/development/python-modules/pymanopt/default.nix b/pkgs/development/python-modules/pymanopt/default.nix
index d6fbdacf4650d..0172ecc6540dd 100644
--- a/pkgs/development/python-modules/pymanopt/default.nix
+++ b/pkgs/development/python-modules/pymanopt/default.nix
@@ -1,39 +1,59 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, numpy
-, scipy
-, torch
-, autograd
-, matplotlib
-, pytestCheckHook
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  numpy,
+  scipy,
+  torch,
+  autograd,
+  matplotlib,
+  pytestCheckHook,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "pymanopt";
-  version = "2.2.0";
-  format = "setuptools";
+  version = "2.2.0-unstable-2024-07-10";
+  pyproject = true;
+
+  env.SETUPTOOLS_SCM_PRETEND_VERSION = "2.2.0";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
-    rev = "refs/tags/${version}";
-    hash = "sha256-pDFRYhswcuAHG9pcqvzXIy3Ivhxe5R5Ric7AFRh7MK4=";
+    rev = "1de3b6f47258820fdc072fceaeaa763b9fd263b0";
+    hash = "sha256-j/fVeMgoLLBgRYFtSj2ZyNJb8iuWlnn2/YpBqUoCAFk=";
   };
 
-  propagatedBuildInputs = [ numpy scipy torch ];
-  nativeCheckInputs = [ autograd matplotlib pytestCheckHook ];
+  preConfigure = ''
+    substituteInPlace pyproject.toml --replace-fail "\"pip==22.3.1\"," ""
+  '';
+
+  build-system = [
+    setuptools-scm
+  ];
+  dependencies = [
+    numpy
+    scipy
+    torch
+  ];
+  nativeCheckInputs = [
+    autograd
+    matplotlib
+    pytestCheckHook
+  ];
 
   preCheck = ''
     substituteInPlace "tests/conftest.py" \
-      --replace "import tensorflow as tf" ""
+      --replace-fail "import tensorflow as tf" ""
     substituteInPlace "tests/conftest.py" \
-      --replace "tf.random.set_seed(seed)" ""
+      --replace-fail "tf.random.set_seed(seed)" ""
   '';
 
   disabledTestPaths = [
     "tests/test_examples.py"
     "tests/backends/test_tensorflow.py"
+    "tests/backends/test_jax.py"
     "tests/test_problem.py"
   ];
 
@@ -44,6 +64,5 @@ buildPythonPackage rec {
     homepage = "https://www.pymanopt.org/";
     license = lib.licenses.bsd3;
     maintainers = with lib.maintainers; [ yl3dy ];
-    broken = lib.versionAtLeast scipy.version "1.10.0";
   };
 }
diff --git a/pkgs/development/python-modules/pymarshal/default.nix b/pkgs/development/python-modules/pymarshal/default.nix
index 755c03501e562..44bd1c8156141 100644
--- a/pkgs/development/python-modules/pymarshal/default.nix
+++ b/pkgs/development/python-modules/pymarshal/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, bson
-, pytestCheckHook
-, pyyaml
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  bson,
+  pytestCheckHook,
+  pytest-cov-stub,
+  pyyaml,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pymarshal";
   version = "2.2.0";
-  format = "setuptools";
-  disabled = pythonOlder "3.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "stargateaudio";
@@ -23,21 +23,16 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "'pytest-runner'" ""
-    substituteInPlace setup.cfg \
-      --replace "--cov=pymarshal --cov-report=html --cov-report=term" ""
+      --replace-fail "'pytest-runner'" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    bson
-  ];
+  dependencies = [ bson ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
     bson
     pyyaml
   ];
diff --git a/pkgs/development/python-modules/pymata-express/default.nix b/pkgs/development/python-modules/pymata-express/default.nix
index 47475845198a4..d516ba9b38e79 100644
--- a/pkgs/development/python-modules/pymata-express/default.nix
+++ b/pkgs/development/python-modules/pymata-express/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyserial
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyserial,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     sha256 = "1mibyn84kjahrv3kn51yl5mhkyig4piv6wanggzjflh5nm96bhy8";
   };
 
-  propagatedBuildInputs = [
-    pyserial
-  ];
+  propagatedBuildInputs = [ pyserial ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/pymatgen/default.nix b/pkgs/development/python-modules/pymatgen/default.nix
index 59981da7e7809..005a65b63169f 100644
--- a/pkgs/development/python-modules/pymatgen/default.nix
+++ b/pkgs/development/python-modules/pymatgen/default.nix
@@ -1,6 +1,5 @@
 {
   lib,
-  stdenv,
   ase,
   buildPythonPackage,
   cython,
@@ -32,7 +31,7 @@
 
 buildPythonPackage rec {
   pname = "pymatgen";
-  version = "2024.4.13";
+  version = "2024.7.18";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -41,7 +40,7 @@ buildPythonPackage rec {
     owner = "materialsproject";
     repo = "pymatgen";
     rev = "refs/tags/v${version}";
-    hash = "sha256-vjasWQgwjtoM/6Y1HwK1otMFejRWEj+YBxaIYDDSeeo=";
+    hash = "sha256-LL3cZO3LkmBuGGcO7dhO2Wtgqx9nxLureFpC8EqvS3M";
   };
 
   build-system = [ setuptools ];
@@ -82,8 +81,6 @@ buildPythonPackage rec {
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
   preCheck = ''
-    # hide from tests
-    mv pymatgen _pymatgen
     # ensure tests can find these
     export PMG_TEST_FILES_DIR="$(realpath ./tests/files)"
     # some tests cover the command-line scripts
@@ -107,11 +104,11 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "pymatgen" ];
 
   meta = with lib; {
-    description = "A robust materials analysis code that defines core object representations for structures and molecules";
+    description = "Robust materials analysis code that defines core object representations for structures and molecules";
     homepage = "https://pymatgen.org/";
     changelog = "https://github.com/materialsproject/pymatgen/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ psyanticy ];
-    broken = stdenv.isDarwin; # tests segfault. that's bad.
+    broken = true; # tests segfault. that's bad.
   };
 }
diff --git a/pkgs/development/python-modules/pymatreader/default.nix b/pkgs/development/python-modules/pymatreader/default.nix
index 484797381fa91..486e88a313a48 100644
--- a/pkgs/development/python-modules/pymatreader/default.nix
+++ b/pkgs/development/python-modules/pymatreader/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitLab
-, setuptools
-, h5py
-, numpy
-, scipy
-, xmltodict
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  setuptools,
+  h5py,
+  numpy,
+  scipy,
+  xmltodict,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -30,14 +31,12 @@ buildPythonPackage rec {
     xmltodict
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "pymatreader" ];
 
   meta = with lib; {
-    description = "A python package to read all kinds and all versions of Matlab mat files";
+    description = "Python package to read all kinds and all versions of Matlab mat files";
     homepage = "https://gitlab.com/obob/pymatreader/";
     changelog = "https://gitlab.com/obob/pymatreader/-/blob/${src.rev}/CHANGELOG.md";
     license = licenses.bsd2;
diff --git a/pkgs/development/python-modules/pymatting/default.nix b/pkgs/development/python-modules/pymatting/default.nix
index 371a4a03c2f38..46c2ee9bd2dfa 100644
--- a/pkgs/development/python-modules/pymatting/default.nix
+++ b/pkgs/development/python-modules/pymatting/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numba
-, numpy
-, pillow
-, pytestCheckHook
-, scipy
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numba,
+  numpy,
+  pillow,
+  pytestCheckHook,
+  scipy,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-wHCTqcBvVN/pTXH3iW57DPpMEsnehutRQB5NaugS6Zs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     numba
@@ -32,13 +31,9 @@ buildPythonPackage rec {
     scipy
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pymatting"
-  ];
+  pythonImportsCheck = [ "pymatting" ];
 
   disabledTests = [
     # no access to input data set
@@ -50,11 +45,10 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A Python library for alpha matting";
+    description = "Python library for alpha matting";
     homepage = "https://github.com/pymatting/pymatting";
     changelog = "https://github.com/pymatting/pymatting/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ blaggacao ];
   };
 }
-
diff --git a/pkgs/development/python-modules/pymaven-patch/default.nix b/pkgs/development/python-modules/pymaven-patch/default.nix
index 4d98ded89637b..c390123e4c5ae 100644
--- a/pkgs/development/python-modules/pymaven-patch/default.nix
+++ b/pkgs/development/python-modules/pymaven-patch/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pbr
-, requests
-, six
-, lxml
-, pytestCheckHook
-, pytest-cov
-, mock
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pbr,
+  requests,
+  six,
+  lxml,
+  pytestCheckHook,
+  pytest-cov,
+  mock,
 }:
 buildPythonPackage rec {
   pname = "pymaven-patch";
@@ -16,7 +17,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-DPfJPonwHwQI62Vu7FjLSiKMleA7PUfLc9MfiZBVzVA=";
+    hash = "sha256-DPfJPonwHwQI62Vu7FjLSiKMleA7PUfLc9MfiZBVzVA=";
   };
 
   propagatedBuildInputs = [
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     mock
   ];
 
-  pythonImportsCheck = [
-    "pymaven"
-  ];
+  pythonImportsCheck = [ "pymaven" ];
 
   meta = with lib; {
     description = "Python access to maven";
diff --git a/pkgs/development/python-modules/pymavlink/default.nix b/pkgs/development/python-modules/pymavlink/default.nix
index 93f68ad6b216b..beb8ab6461ef3 100644
--- a/pkgs/development/python-modules/pymavlink/default.nix
+++ b/pkgs/development/python-modules/pymavlink/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, future, lxml }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  future,
+  lxml,
+}:
 
 buildPythonPackage rec {
   pname = "pymavlink";
@@ -10,7 +16,10 @@ buildPythonPackage rec {
     hash = "sha256-7TIlzphdBhA6qyUa/Ig9BKmKHW21xzmV595MqssfZs0=";
   };
 
-  propagatedBuildInputs = [ future lxml ];
+  propagatedBuildInputs = [
+    future
+    lxml
+  ];
 
   # No tests included in PyPI tarball. We cannot use the GitHub tarball because
   # we would like to use the same commit of the mavlink messages repo as
@@ -23,7 +32,10 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python MAVLink interface and utilities";
     homepage = "https://github.com/ArduPilot/pymavlink";
-    license = with licenses; [ lgpl3Plus mit ];
+    license = with licenses; [
+      lgpl3Plus
+      mit
+    ];
     maintainers = with maintainers; [ lopsided98 ];
   };
 }
diff --git a/pkgs/development/python-modules/pymbolic/default.nix b/pkgs/development/python-modules/pymbolic/default.nix
index de9b8e9ae14c5..bc5292e6d15e3 100644
--- a/pkgs/development/python-modules/pymbolic/default.nix
+++ b/pkgs/development/python-modules/pymbolic/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, matchpy
-, pytestCheckHook
-, pythonOlder
-, pytools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  matchpy,
+  pytestCheckHook,
+  pythonOlder,
+  pytools,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [
-    pytools
-  ];
+  propagatedBuildInputs = [ pytools ];
 
   nativeCheckInputs = [
     matchpy
@@ -43,14 +42,12 @@ buildPythonPackage rec {
         --replace '"pytest>=2.3",' ""
   '';
 
-  pythonImportsCheck = [
-    "pymbolic"
-  ];
+  pythonImportsCheck = [ "pymbolic" ];
 
   meta = with lib; {
-    description = "A package for symbolic computation";
+    description = "Package for symbolic computation";
     homepage = "https://documen.tician.de/pymbolic/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pymc/default.nix b/pkgs/development/python-modules/pymc/default.nix
index 947aaa4241861..30161191dd59d 100644
--- a/pkgs/development/python-modules/pymc/default.nix
+++ b/pkgs/development/python-modules/pymc/default.nix
@@ -1,22 +1,28 @@
-{ lib
-, arviz
-, buildPythonPackage
-, cachetools
-, cloudpickle
-, fetchFromGitHub
-, numpy
-, pandas
-, pytensor
-, pythonOlder
-, rich
-, scipy
-, setuptools
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  arviz,
+  cachetools,
+  cloudpickle,
+  numpy,
+  pandas,
+  pytensor,
+  rich,
+  scipy,
+  threadpoolctl,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "pymc";
-  version = "5.14.0";
+  version = "5.16.2";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -25,7 +31,7 @@ buildPythonPackage rec {
     owner = "pymc-devs";
     repo = "pymc";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ZVGMzkStKSPLgBoyzA8SOvsof7QRR7TLmLhh5NmD/F8=";
+    hash = "sha256-vOU5P45AJPULGWj9lscZKP3JqfSpkPDnq1Fyq9lIawc=";
   };
 
   postPatch = ''
@@ -33,9 +39,7 @@ buildPythonPackage rec {
       --replace-fail ', "pytest-cov"' ""
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     arviz
@@ -46,6 +50,7 @@ buildPythonPackage rec {
     pytensor
     rich
     scipy
+    threadpoolctl
     typing-extensions
   ];
 
@@ -53,15 +58,16 @@ buildPythonPackage rec {
   # indicative for package usability hence tests are disabled by default.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pymc"
-  ];
+  pythonImportsCheck = [ "pymc" ];
 
-  meta = with lib; {
+  meta = {
     description = "Bayesian estimation, particularly using Markov chain Monte Carlo (MCMC)";
     homepage = "https://github.com/pymc-devs/pymc";
     changelog = "https://github.com/pymc-devs/pymc/releases/tag/v${version}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ nidabdella ferrine ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [
+      nidabdella
+      ferrine
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pymdown-extensions/default.nix b/pkgs/development/python-modules/pymdown-extensions/default.nix
index d760b9cd0dd47..627d5ad562dcf 100644
--- a/pkgs/development/python-modules/pymdown-extensions/default.nix
+++ b/pkgs/development/python-modules/pymdown-extensions/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, pytestCheckHook
-, markdown
-, pyyaml
-, pygments
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  hatchling,
+  pytestCheckHook,
+  markdown,
+  pyyaml,
+  pygments,
 
-# for passthru.tests
-, mkdocstrings
-, mkdocs-material
-, mkdocs-mermaid2-plugin
-, hydrus
+  # for passthru.tests
+  mkdocstrings,
+  mkdocs-material,
+  mkdocs-mermaid2-plugin,
+  hydrus,
 }:
 
 let
@@ -44,35 +46,59 @@ let
 in
 buildPythonPackage rec {
   pname = "pymdown-extensions";
-  version = "10.7.1";
-  format = "pyproject";
+  version = "10.8.1";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "facelessuser";
     repo = "pymdown-extensions";
     rev = "refs/tags/${version}";
-    hash = "sha256-P2MkGD0B9mn34ia3Kd4MQej1XryNVXWVMF4JHaPTS0M=";
+    hash = "sha256-No0RDBgr40xSOiKXQRLRZnMdV+5i4eM8Jwp7c2Jw/ZY=";
   };
 
-  nativeBuildInputs = [ hatchling ];
+  patches = [
+    (fetchpatch2 {
+      name = "pymdown-extensions-pygments-compat.patch";
+      url = "https://github.com/facelessuser/pymdown-extensions/commit/f1e2fad862c9738e420b8451dfdfbd9e90e849fc.patch";
+      hash = "sha256-ENYTRXBJ76VPhhab8MdOh+bkcQNRklXT3thvPi+gHIY=";
+    })
+  ];
+
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [ markdown pygments ];
+  dependencies = [
+    markdown
+    pygments
+  ];
 
   nativeCheckInputs = [
     pytestCheckHook
     pyyaml
   ];
 
+  disabledTests = [
+    # test artifact mismatch
+    "test_toc_tokens"
+  ];
+
   pythonImportsCheck = map (ext: "pymdownx.${ext}") extensions;
 
   passthru.tests = {
-    inherit mkdocstrings mkdocs-material mkdocs-mermaid2-plugin hydrus;
+    inherit
+      mkdocstrings
+      mkdocs-material
+      mkdocs-mermaid2-plugin
+      hydrus
+      ;
   };
 
   meta = with lib; {
     description = "Extensions for Python Markdown";
     homepage = "https://facelessuser.github.io/pymdown-extensions/";
-    license = with licenses; [ mit bsd2 ];
+    license = with licenses; [
+      mit
+      bsd2
+    ];
     maintainers = with maintainers; [ cpcloud ];
   };
 }
diff --git a/pkgs/development/python-modules/pymdstat/default.nix b/pkgs/development/python-modules/pymdstat/default.nix
index ced572b7b36d0..ecc913b075b14 100644
--- a/pkgs/development/python-modules/pymdstat/default.nix
+++ b/pkgs/development/python-modules/pymdstat/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -23,7 +24,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "pymdstat" ];
 
   meta = with lib; {
-    description = "A pythonic library to parse Linux /proc/mdstat file";
+    description = "Pythonic library to parse Linux /proc/mdstat file";
     homepage = "https://github.com/nicolargo/pymdstat";
     maintainers = with maintainers; [ rhoriguchi ];
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pymediainfo/default.nix b/pkgs/development/python-modules/pymediainfo/default.nix
index c65e6d0e14873..016b5ee6bf242 100644
--- a/pkgs/development/python-modules/pymediainfo/default.nix
+++ b/pkgs/development/python-modules/pymediainfo/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, stdenv
-, fetchPypi
-, buildPythonPackage
-, libmediainfo
-, setuptools-scm
-, pytest
-, glibcLocales
-, pythonOlder
+{
+  lib,
+  stdenv,
+  fetchPypi,
+  buildPythonPackage,
+  libmediainfo,
+  setuptools-scm,
+  pytest,
+  glibcLocales,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
                 "${libmediainfo}/lib/libmediainfo${stdenv.hostPlatform.extensions.sharedLibrary}.0"
   '';
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   nativeCheckInputs = [
     glibcLocales
@@ -45,15 +44,13 @@ buildPythonPackage rec {
     py.test -k 'not test_parse_url' tests
   '';
 
-  pythonImportsCheck = [
-    "pymediainfo"
-  ];
+  pythonImportsCheck = [ "pymediainfo" ];
 
   meta = with lib; {
     description = "Python wrapper for the mediainfo library";
     homepage = "https://github.com/sbraz/pymediainfo";
     changelog = "https://github.com/sbraz/pymediainfo/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pymediaroom/default.nix b/pkgs/development/python-modules/pymediaroom/default.nix
index 744ef3d02e2b3..8702da9fb97bd 100644
--- a/pkgs/development/python-modules/pymediaroom/default.nix
+++ b/pkgs/development/python-modules/pymediaroom/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, xmltodict
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pymedio/default.nix b/pkgs/development/python-modules/pymedio/default.nix
index 36673b071e61d..29ca1baddc069 100644
--- a/pkgs/development/python-modules/pymedio/default.nix
+++ b/pkgs/development/python-modules/pymedio/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, cryptography
-, nibabel
-, numpy
-, pydicom
-, simpleitk
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  cryptography,
+  nibabel,
+  numpy,
+  pydicom,
+  simpleitk,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-x3CHoWASDrUoCXfj73NF+0Y/3Mb31dK2Lh+o4OD9ryk=";
   };
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -36,9 +35,7 @@ buildPythonPackage rec {
     simpleitk
   ];
 
-  pythonImportsCheck = [
-    "pymedio"
-  ];
+  pythonImportsCheck = [ "pymedio" ];
 
   meta = with lib; {
     description = "Read medical image files into Numpy arrays";
diff --git a/pkgs/development/python-modules/pymee/default.nix b/pkgs/development/python-modules/pymee/default.nix
new file mode 100644
index 0000000000000..7c07ff13e5fc3
--- /dev/null
+++ b/pkgs/development/python-modules/pymee/default.nix
@@ -0,0 +1,40 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  aiohttp,
+  websockets,
+}:
+
+buildPythonPackage rec {
+  pname = "pymee";
+  version = "2.2.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "FreshlyBrewedCode";
+    repo = "pymee";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-4XKd0lZ6RAsG2zXjKMUeST6cNcg+SjT371gxLIhxkAA=";
+  };
+
+  build-system = [ setuptools ];
+  dependencies = [
+    aiohttp
+    websockets
+  ];
+
+  pythonImportsCheck = [ "pymee" ];
+
+  # no tests
+  doCheck = false;
+
+  meta = {
+    description = "Python library to interact with homee";
+    homepage = "https://github.com/FreshlyBrewedCode/pymee";
+    changelog = "https://github.com/FreshlyBrewedCode/pymee/blob/${src.rev}/CHANGELOG.md";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/pymeeus/default.nix b/pkgs/development/python-modules/pymeeus/default.nix
index 8799de9232457..4178c593aa0bc 100644
--- a/pkgs/development/python-modules/pymeeus/default.nix
+++ b/pkgs/development/python-modules/pymeeus/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pytest7CheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytest7CheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,13 +17,9 @@ buildPythonPackage rec {
     hash = "sha256-VI9xhr2LlsvAac9kmo6ON33OSax0SGcJhJ/mOpnK1oQ=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytest7CheckHook
-  ];
+  nativeCheckInputs = [ pytest7CheckHook ];
 
   meta = with lib; {
     homepage = "https://github.com/architest/pymeeus";
diff --git a/pkgs/development/python-modules/pymelcloud/default.nix b/pkgs/development/python-modules/pymelcloud/default.nix
index ad4e529c528ab..d859da4ff22ac 100644
--- a/pkgs/development/python-modules/pymelcloud/default.nix
+++ b/pkgs/development/python-modules/pymelcloud/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, aiohttp
-, asynctest
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  asynctest,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     sha256 = "1q6ny58cn9qy86blxbk6l2iklab7y11b734l7yb1bp35dmy27w26";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   doCheck = pythonOlder "3.11"; # asynctest is unsupported on python3.11
 
@@ -34,9 +33,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pymelcloud"
-  ];
+  pythonImportsCheck = [ "pymelcloud" ];
 
   meta = with lib; {
     description = "Python module for interacting with MELCloud";
diff --git a/pkgs/development/python-modules/pymemcache/default.nix b/pkgs/development/python-modules/pymemcache/default.nix
index 74784a35ff953..6f570f8d83065 100644
--- a/pkgs/development/python-modules/pymemcache/default.nix
+++ b/pkgs/development/python-modules/pymemcache/default.nix
@@ -1,33 +1,32 @@
-{ lib
-, buildPythonPackage
-, faker
-, fetchFromGitHub
-, mock
-, six
-, pytestCheckHook
-, python-memcached
-, pythonOlder
-, zstd
-, stdenv
+{
+  lib,
+  buildPythonPackage,
+  faker,
+  fetchFromGitHub,
+  mock,
+  pytestCheckHook,
+  python-memcached,
+  pythonOlder,
+  setuptools,
+  zstd,
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "pymemcache";
   version = "4.0.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "pinterest";
-    repo = pname;
+    repo = "pymemcache";
     rev = "v${version}";
     hash = "sha256-WgtHhp7lE6StoOBfSy9+v3ODe/+zUC7lGrc2S4M68+M=";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     faker
@@ -41,18 +40,17 @@ buildPythonPackage rec {
     sed -i "/--cov/d" setup.cfg
   '';
 
-  disabledTests = lib.optionals stdenv.is32bit [
+  disabledTests = lib.optionals stdenv.hostPlatform.is32bit [
     # test_compressed_complex is broken on 32-bit platforms
     # this can be removed on the next version bump
     # see also https://github.com/pinterest/pymemcache/pull/480
     "test_compressed_complex"
   ];
 
-  pythonImportsCheck = [
-    "pymemcache"
-  ];
+  pythonImportsCheck = [ "pymemcache" ];
 
   meta = with lib; {
+    changelog = "https://github.com/pinterest/pymemcache/blob/${src.rev}/ChangeLog.rst";
     description = "Python memcached client";
     homepage = "https://pymemcache.readthedocs.io/";
     license = with licenses; [ asl20 ];
diff --git a/pkgs/development/python-modules/pymemoize/default.nix b/pkgs/development/python-modules/pymemoize/default.nix
index 14f2fc39aa9e7..064c93931e63b 100644
--- a/pkgs/development/python-modules/pymemoize/default.nix
+++ b/pkgs/development/python-modules/pymemoize/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, django
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  django,
 }:
 
 buildPythonPackage rec {
@@ -27,4 +28,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ mmai ];
   };
 }
-
diff --git a/pkgs/development/python-modules/pyment/default.nix b/pkgs/development/python-modules/pyment/default.nix
index f3077acdd2ced..1628f723aa700 100644
--- a/pkgs/development/python-modules/pyment/default.nix
+++ b/pkgs/development/python-modules/pyment/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "pyment";
diff --git a/pkgs/development/python-modules/pymeta3/default.nix b/pkgs/development/python-modules/pymeta3/default.nix
index f0350c4153b74..ba5c244ea49bd 100644
--- a/pkgs/development/python-modules/pymeta3/default.nix
+++ b/pkgs/development/python-modules/pymeta3/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
 }:
 buildPythonPackage rec {
   pname = "pymeta3";
@@ -15,15 +16,16 @@ buildPythonPackage rec {
 
   doCheck = false; # Tests do not support Python3
 
-  pythonImportsCheck = [
-    "pymeta"
-  ];
+  pythonImportsCheck = [ "pymeta" ];
 
   meta = with lib; {
     description = "Pattern-matching language based on OMeta for Python 3 and 2";
     homepage = "https://github.com/wbond/pymeta3";
     changelog = "https://github.com/wbond/pymeta3/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ jfly matusf ];
+    maintainers = with maintainers; [
+      jfly
+      matusf
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pymetar/default.nix b/pkgs/development/python-modules/pymetar/default.nix
index 70bf0a4f8142a..f8657ddfcbf20 100644
--- a/pkgs/development/python-modules/pymetar/default.nix
+++ b/pkgs/development/python-modules/pymetar/default.nix
@@ -1,29 +1,38 @@
-{ lib, python, buildPythonPackage, isPy3k, fetchPypi }:
+{
+  lib,
+  python,
+  buildPythonPackage,
+  isPy3k,
+  fetchPypi,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "pymetar";
   version = "1.4";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "48dbe6c4929961021cb61e49bb9e0605b54c4b61b9fb9ade51076705a08ecd54";
+    hash = "sha256-SNvmxJKZYQIcth5Ju54GBbVMS2G5+5reUQdnBaCOzVQ=";
   };
 
+  build-system = [ setuptools ];
+
   checkPhase = ''
     cd testing/smoketest
     tar xzf reports.tgz
     mkdir logs
     patchShebangs runtests.sh
-    substituteInPlace runtests.sh --replace "break" "exit 1"  # fail properly
+    substituteInPlace runtests.sh --replace-fail "break" "exit 1"  # fail properly
     export PYTHONPATH="$PYTHONPATH:$out/${python.sitePackages}"
     ./runtests.sh
   '';
 
   meta = with lib; {
-    description = "A command-line tool to show the weather report by a given station ID";
+    description = "Command-line tool to show the weather report by a given station ID";
     mainProgram = "pymetar";
     homepage = "https://github.com/klausman/pymetar";
     license = licenses.gpl2Plus;
diff --git a/pkgs/development/python-modules/pymeteireann/default.nix b/pkgs/development/python-modules/pymeteireann/default.nix
index be85e6a5e008c..e3d251f99d73f 100644
--- a/pkgs/development/python-modules/pymeteireann/default.nix
+++ b/pkgs/development/python-modules/pymeteireann/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, pytz
-, xmltodict
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytz,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pymeteoclimatic/default.nix b/pkgs/development/python-modules/pymeteoclimatic/default.nix
index 6b17c943d142e..6ecba40d21445 100644
--- a/pkgs/development/python-modules/pymeteoclimatic/default.nix
+++ b/pkgs/development/python-modules/pymeteoclimatic/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchFromGitHub
-, lxml
-, pythonOlder
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxml,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-rP0+OYDnQ4GuoV7DzR6jtgH6ilTMLjdaEFJcz3L0GYQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     beautifulsoup4
     lxml
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "meteoclimatic"
-  ];
+  pythonImportsCheck = [ "meteoclimatic" ];
 
   meta = with lib; {
     description = "Python wrapper around the Meteoclimatic service";
diff --git a/pkgs/development/python-modules/pymetno/default.nix b/pkgs/development/python-modules/pymetno/default.nix
index 4e16030d95759..0c0279099b33b 100644
--- a/pkgs/development/python-modules/pymetno/default.nix
+++ b/pkgs/development/python-modules/pymetno/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, aiohttp
-, async-timeout
-, xmltodict
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  aiohttp,
+  async-timeout,
+  xmltodict,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pymetno";
-  version = "0.12.0";
+  version = "0.13.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -18,7 +19,7 @@ buildPythonPackage rec {
     owner = "Danielhiversen";
     repo = "PyMetno";
     rev = "refs/tags/${version}";
-    hash = "sha256-wRSUIaonjjucLM+A4GsF9Lrq2vZYCquEvblbmjKYpQE=";
+    hash = "sha256-0QODCJmGxgSKsTbsq4jsoP3cTy/0y6hq63j36bj7Dvo=";
   };
 
   propagatedBuildInputs = [
@@ -27,15 +28,13 @@ buildPythonPackage rec {
     xmltodict
   ];
 
-  pythonImportsCheck = [
-    "metno"
-  ];
+  pythonImportsCheck = [ "metno" ];
 
   # Project has no tests
   doCheck = false;
 
   meta = with lib; {
-    description = "A library to communicate with the met.no API";
+    description = "Library to communicate with the met.no API";
     homepage = "https://github.com/Danielhiversen/pyMetno/";
     changelog = "https://github.com/Danielhiversen/pyMetno/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pymfy/default.nix b/pkgs/development/python-modules/pymfy/default.nix
index 5600db81b1d15..5f4a95431f0ca 100644
--- a/pkgs/development/python-modules/pymfy/default.nix
+++ b/pkgs/development/python-modules/pymfy/default.nix
@@ -1,33 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, httpretty
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-oauthlib
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpretty,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-oauthlib,
 }:
 
 buildPythonPackage rec {
   pname = "pymfy";
   version = "0.11.0";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "tetienne";
     repo = "somfy-open-api";
-    rev = "v${version}";
-    sha256 = "0wpjwjmywfyqgwvfa5kwcjpaljc32qa088kk88nl9nqdvc31mzhv";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-G/4aBtsN20QtQnMiBBQWg0mqrmR8FuU2f9g77qvk8nI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  pythonRelaxDeps = [ "requests-oauthlib" ];
+
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     requests
     requests-oauthlib
   ];
@@ -37,14 +38,13 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pymfy"
-  ];
+  pythonImportsCheck = [ "pymfy" ];
 
   meta = with lib; {
     description = "Python client for the Somfy Open API";
     homepage = "https://github.com/tetienne/somfy-open-api";
-    license = with licenses; [ gpl3Only ];
+    changelog = "https://github.com/tetienne/somfy-open-api/releases/tag/v${version}";
+    license = licenses.gpl3Only;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/pymicro-vad/default.nix b/pkgs/development/python-modules/pymicro-vad/default.nix
new file mode 100644
index 0000000000000..00c2d546fedce
--- /dev/null
+++ b/pkgs/development/python-modules/pymicro-vad/default.nix
@@ -0,0 +1,42 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  pybind11,
+  setuptools,
+
+  # tests
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "pymicro-vad";
+  version = "1.0.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "rhasspy";
+    repo = "pymicro-vad";
+    rev = "refs/tags/${version}";
+    hash = "sha256-wpsUy+f4eSGlq6L2FOtnA0qJgMh5ZdfiH31aaU61cVw=";
+  };
+
+  build-system = [
+    pybind11
+    setuptools
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "pymicro_vad" ];
+
+  meta = with lib; {
+    changelog = "https://github.com/rhasspy/pymicro-vad/releases/tag/${version}";
+    description = "Self-contained voice activity detector";
+    homepage = "https://github.com/rhasspy/pymicro-vad";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/development/python-modules/pymicrobot/default.nix b/pkgs/development/python-modules/pymicrobot/default.nix
index 22581f493b73b..88360e0a65ed5 100644
--- a/pkgs/development/python-modules/pymicrobot/default.nix
+++ b/pkgs/development/python-modules/pymicrobot/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, bleak
-, bleak-retry-connector
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
+{
+  lib,
+  bleak,
+  bleak-retry-connector,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-8Nkkgznt4JzImJSAbdaX6znhvmgqwOIBjAXVhaMorLk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     bleak
@@ -32,9 +31,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "microbot"
-  ];
+  pythonImportsCheck = [ "microbot" ];
 
   meta = with lib; {
     description = "Library to communicate with MicroBot";
diff --git a/pkgs/development/python-modules/pymiele/default.nix b/pkgs/development/python-modules/pymiele/default.nix
index db951d6d7a990..745b83cb7f875 100644
--- a/pkgs/development/python-modules/pymiele/default.nix
+++ b/pkgs/development/python-modules/pymiele/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-nlilHcBdWpCIknhE/RRvcmuz1waNdmcPt++Vi3amvHg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -31,9 +30,7 @@ buildPythonPackage rec {
   # No tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pymiele"
-  ];
+  pythonImportsCheck = [ "pymiele" ];
 
   meta = with lib; {
     changelog = "https://github.com/astrandb/pymiele/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/pymilter/default.nix b/pkgs/development/python-modules/pymilter/default.nix
index be0ee9bd2bc45..6f0c4291d4d50 100644
--- a/pkgs/development/python-modules/pymilter/default.nix
+++ b/pkgs/development/python-modules/pymilter/default.nix
@@ -1,19 +1,37 @@
-{ lib, python, buildPythonPackage, fetchFromGitHub, libmilter, bsddb3, pydns, iana-etc, libredirect }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  libmilter,
+  berkeleydb,
+  pydns,
+  iana-etc,
+  libredirect,
+  pyasyncore,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "pymilter";
-  version = "1.0.5";
-  format = "setuptools";
+  version = "1.0.6";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "sdgathman";
-    repo = pname;
-    rev = "${pname}-${version}";
-    hash = "sha256-gZUWEDVZfDRiOOdG3lpiQldHxm/93l8qYVOHOEpHhzQ=";
+    repo = "pymilter";
+    rev = "refs/tags/pymilter-${version}";
+    hash = "sha256-plaWXwDAIsVzEtrabZuZj7T4WNfz2ntQHgcMCVf5S70=";
   };
 
+  build-system = [
+    setuptools
+  ];
   buildInputs = [ libmilter ];
-  propagatedBuildInputs = [ bsddb3 pydns ];
+  nativeCheckInputs = [ pyasyncore ];
+  dependencies = [
+    berkeleydb
+    pydns
+  ];
 
   preBuild = ''
     sed -i 's/import thread/import _thread as thread/' Milter/greylist.py
diff --git a/pkgs/development/python-modules/pymilvus/default.nix b/pkgs/development/python-modules/pymilvus/default.nix
index e0a68e2a43859..c9f706ca4a959 100644
--- a/pkgs/development/python-modules/pymilvus/default.nix
+++ b/pkgs/development/python-modules/pymilvus/default.nix
@@ -1,22 +1,22 @@
-{ lib
-, buildPythonPackage
-, environs
-, fetchFromGitHub
-, gitpython
-, grpcio
-, grpcio-testing
-, minio
-, mmh3
-, pandas
-, pyarrow
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
-, scikit-learn
-, setuptools-scm
-, ujson
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  environs,
+  fetchFromGitHub,
+  gitpython,
+  grpcio,
+  grpcio-testing,
+  minio,
+  mmh3,
+  pandas,
+  pyarrow,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  scikit-learn,
+  setuptools-scm,
+  ujson,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -40,7 +40,6 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     gitpython
-    pythonRelaxDepsHook
     setuptools-scm
     wheel
   ];
@@ -62,13 +61,9 @@ buildPythonPackage rec {
     scikit-learn
   ];
 
-  pythonImportsCheck = [
-    "pymilvus"
-  ];
+  pythonImportsCheck = [ "pymilvus" ];
 
-  disabledTests = [
-    "test_get_commit"
-  ];
+  disabledTests = [ "test_get_commit" ];
 
   meta = with lib; {
     description = "Python SDK for Milvus";
diff --git a/pkgs/development/python-modules/pymitv/default.nix b/pkgs/development/python-modules/pymitv/default.nix
index 98d3a88e97b95..a5f14cbfebfc8 100644
--- a/pkgs/development/python-modules/pymitv/default.nix
+++ b/pkgs/development/python-modules/pymitv/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pymodbus/default.nix b/pkgs/development/python-modules/pymodbus/default.nix
index d3c34f4c052da..38411beca94b3 100644
--- a/pkgs/development/python-modules/pymodbus/default.nix
+++ b/pkgs/development/python-modules/pymodbus/default.nix
@@ -20,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "pymodbus";
-  version = "3.6.8";
+  version = "3.6.9";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -29,7 +29,7 @@ buildPythonPackage rec {
     owner = "pymodbus-dev";
     repo = "pymodbus";
     rev = "refs/tags/v${version}";
-    hash = "sha256-6Rt5fbuaeAgbW5KKse1zZIJyq/p2P2MjXGwA7q0C7wA=";
+    hash = "sha256-ScqxDO0hif8p3C6+vvm7FgSEQjCXBwUPOc7Y/3OfkoI=";
   };
 
   postPatch = ''
@@ -46,7 +46,7 @@ buildPythonPackage rec {
       prompt-toolkit
       pygments
       click
-    ] ++ typer.optional-dependencies.all;
+    ];
     serial = [ pyserial ];
   };
 
diff --git a/pkgs/development/python-modules/pymongo-inmemory/default.nix b/pkgs/development/python-modules/pymongo-inmemory/default.nix
index 6447b0a7ffe94..431b08d76af22 100644
--- a/pkgs/development/python-modules/pymongo-inmemory/default.nix
+++ b/pkgs/development/python-modules/pymongo-inmemory/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, pymongo
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  pymongo,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pymongo-inmemory";
-  version = "0.4.1";
+  version = "0.4.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "kaizendorks";
     repo = "pymongo_inmemory";
     rev = "refs/tags/v${version}";
-    hash = "sha256-vYWVMSawk+03ie3PtqOyzd6wxiviq+IzyQ8bvEHNHfc=";
+    hash = "sha256-FDHHf9x62EqNcHjDF2vH8w8WG/15efEe+fDqGiiOe4A=";
   };
 
   postPatch = ''
@@ -36,17 +36,11 @@ buildPythonPackage rec {
         'os.makedirs(current_path)'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  dependencies = [
-    pymongo
-  ];
+  dependencies = [ pymongo ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # new test with insufficient monkey patching, try to remove on next bump
@@ -57,13 +51,11 @@ buildPythonPackage rec {
     export HOME="$(mktemp -d)"
   '';
 
-  pythonImportsCheck = [
-    "pymongo_inmemory"
-  ];
+  pythonImportsCheck = [ "pymongo_inmemory" ];
 
   meta = {
     homepage = "https://github.com/kaizendorks/pymongo_inmemory";
-    description = "A mongo mocking library with an ephemeral MongoDB running in memory";
+    description = "Mongo mocking library with an ephemeral MongoDB running in memory";
     maintainers = with lib.maintainers; [ pbsds ];
     license = lib.licenses.mit;
   };
diff --git a/pkgs/development/python-modules/pymongo/default.nix b/pkgs/development/python-modules/pymongo/default.nix
index 3d17ea66f1e71..c64d22d66cb97 100644
--- a/pkgs/development/python-modules/pymongo/default.nix
+++ b/pkgs/development/python-modules/pymongo/default.nix
@@ -1,34 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, dnspython
-
-# for passthru.tests
-, celery  # check-input only
-, flask-pymongo
-, kombu  # check-input only
-, mongoengine
-, motor
-, pymongo-inmemory
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  hatch-requirements-txt,
+  setuptools,
+  pythonOlder,
+  dnspython,
+
+  # for passthru.tests
+  celery, # check-input only
+  flask-pymongo,
+  kombu, # check-input only
+  mongoengine,
+  motor,
+  pymongo-inmemory,
 }:
 
 buildPythonPackage rec {
   pname = "pymongo";
-  version = "4.6.2";
-  format = "setuptools";
+  version = "4.8.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-q30BrIMqFmPa1ZLMvZK7Dwd1vI+YoZI8Xhp9f+rUla8=";
+    inherit version;
+    pname = "pymongo";
+    hash = "sha256-RU8ilYdXRNxw8YgeSy65nNrQCKM1dLyKrxIFMPZsDN4=";
   };
 
-  propagatedBuildInputs = [
-    dnspython
+  build-system = [
+    hatchling
+    hatch-requirements-txt
+    setuptools
   ];
 
+  dependencies = [ dnspython ];
+
   # Tests call a running mongodb instance
   doCheck = false;
 
@@ -42,13 +51,13 @@ buildPythonPackage rec {
       mongoengine
       motor
       pymongo-inmemory
-    ;
+      ;
   };
 
-  meta = with lib; {
+  meta = {
     description = "Python driver for MongoDB";
     homepage = "https://github.com/mongodb/mongo-python-driver";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.asl20;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pymoo/default.nix b/pkgs/development/python-modules/pymoo/default.nix
index 64858b1e076e6..fc044a935812a 100644
--- a/pkgs/development/python-modules/pymoo/default.nix
+++ b/pkgs/development/python-modules/pymoo/default.nix
@@ -1,27 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pytestCheckHook
-, writeText
-, autograd
-, cma
-, cython
-, deprecated
-, dill
-, matplotlib
-, nbformat
-, notebook
-, numba
-, numpy
-, pandas
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  setuptools,
+  pytestCheckHook,
+  writeText,
+  autograd,
+  cma,
+  cython,
+  deprecated,
+  dill,
+  matplotlib,
+  nbformat,
+  notebook,
+  numba,
+  numpy,
+  scipy,
 }:
 
 buildPythonPackage rec {
   pname = "pymoo";
   version = "0.6.0.1";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "anyoptimization";
@@ -45,21 +46,21 @@ buildPythonPackage rec {
     })
   ];
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "cma==3.2.2" "cma" \
-      --replace "'alive-progress'," ""
+  pythonRelaxDeps = [ "cma" ];
+  pythonRemoveDeps = [ "alive-progress" ];
 
+  postPatch = ''
     substituteInPlace pymoo/util/display/display.py \
-      --replace "from pymoo.util.display.progress import ProgressBar" "" \
-      --replace "ProgressBar() if progress else None" \
+      --replace-fail "from pymoo.util.display.progress import ProgressBar" "" \
+      --replace-fail "ProgressBar() if progress else None" \
                 "print('Missing alive_progress needed for progress=True!') if progress else None"
   '';
 
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     cython
   ];
-  propagatedBuildInputs = [
+  dependencies = [
     autograd
     cma
     deprecated
@@ -72,7 +73,7 @@ buildPythonPackage rec {
   doCheck = true;
   preCheck = ''
     substituteInPlace pymoo/config.py \
-      --replace "https://raw.githubusercontent.com/anyoptimization/pymoo-data/main/" \
+      --replace-fail "https://raw.githubusercontent.com/anyoptimization/pymoo-data/main/" \
                 "file://$pymoo_data/"
   '';
   nativeCheckInputs = [
@@ -82,16 +83,14 @@ buildPythonPackage rec {
     numba
   ];
   # Select some lightweight tests
-  pytestFlagsArray = [
-    "-m 'not long'"
-  ];
+  pytestFlagsArray = [ "-m 'not long'" ];
   disabledTests = [
     # ModuleNotFoundError: No module named 'pymoo.cython.non_dominated_sorting'
     "test_fast_non_dominated_sorting"
     "test_efficient_non_dominated_sort"
   ];
   # Avoid crashing sandboxed build on macOS
-  MATPLOTLIBRC=writeText "" ''
+  MATPLOTLIBRC = writeText "" ''
     backend: Agg
   '';
 
diff --git a/pkgs/development/python-modules/pymorphy2/default.nix b/pkgs/development/python-modules/pymorphy2/default.nix
index 57b843e54590f..748f7d8d24a39 100644
--- a/pkgs/development/python-modules/pymorphy2/default.nix
+++ b/pkgs/development/python-modules/pymorphy2/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, isPy3k
-, dawg-python
-, docopt
-, pymorphy2-dicts-ru
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  isPy3k,
+  dawg-python,
+  docopt,
+  pymorphy2-dicts-ru,
 }:
 
 buildPythonPackage rec {
@@ -32,6 +33,6 @@ buildPythonPackage rec {
     mainProgram = "pymorphy";
     homepage = "https://github.com/kmike/pymorphy2";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pymorphy2/dicts-ru.nix b/pkgs/development/python-modules/pymorphy2/dicts-ru.nix
index ac1f9f980bef3..4385990518762 100644
--- a/pkgs/development/python-modules/pymorphy2/dicts-ru.nix
+++ b/pkgs/development/python-modules/pymorphy2/dicts-ru.nix
@@ -1,6 +1,7 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
 }:
 
 buildPythonPackage rec {
@@ -18,6 +19,6 @@ buildPythonPackage rec {
     description = "Russian dictionaries for pymorphy2";
     homepage = "https://github.com/kmike/pymorphy2-dicts/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pymorphy3/default.nix b/pkgs/development/python-modules/pymorphy3/default.nix
index eea5aa474634f..1616ccd8574bb 100644
--- a/pkgs/development/python-modules/pymorphy3/default.nix
+++ b/pkgs/development/python-modules/pymorphy3/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, click
-, dawg-python
-, docopt
-, pytestCheckHook
-, pymorphy3-dicts-ru
-, pymorphy3-dicts-uk
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  click,
+  dawg-python,
+  docopt,
+  pytestCheckHook,
+  pymorphy3-dicts-ru,
+  pymorphy3-dicts-uk,
 }:
 
 buildPythonPackage rec {
   pname = "pymorphy3";
-  version = "2.0.1";
+  version = "2.0.2";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "no-plagiarism";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-AIAccIxv3lCZcTKHfE/s2n3A5fUWqon+dk0SvczritY=";
+    hash = "sha256-qYZm88wNOyZBb2Qhdpw83Oh679/dkWmrL/hQYsgEsaM=";
   };
 
   propagatedBuildInputs = [
@@ -28,13 +29,9 @@ buildPythonPackage rec {
     pymorphy3-dicts-uk
   ];
 
-  optional-dependencies.CLI = [
-    click
-  ];
+  optional-dependencies.CLI = [ click ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ optional-dependencies.CLI;
+  nativeCheckInputs = [ pytestCheckHook ] ++ optional-dependencies.CLI;
 
   pythonImportsCheck = [ "pymorphy3" ];
 
diff --git a/pkgs/development/python-modules/pymorphy3/dicts-ru.nix b/pkgs/development/python-modules/pymorphy3/dicts-ru.nix
index db32d092a30c2..6206a0cfe472d 100644
--- a/pkgs/development/python-modules/pymorphy3/dicts-ru.nix
+++ b/pkgs/development/python-modules/pymorphy3/dicts-ru.nix
@@ -1,6 +1,7 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pymorphy3/dicts-uk.nix b/pkgs/development/python-modules/pymorphy3/dicts-uk.nix
index 036bf452b893c..62260cbc262d1 100644
--- a/pkgs/development/python-modules/pymorphy3/dicts-uk.nix
+++ b/pkgs/development/python-modules/pymorphy3/dicts-uk.nix
@@ -1,6 +1,7 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pympler/default.nix b/pkgs/development/python-modules/pympler/default.nix
index 388fba817f780..b75c7e8b5af16 100644
--- a/pkgs/development/python-modules/pympler/default.nix
+++ b/pkgs/development/python-modules/pympler/default.nix
@@ -1,10 +1,12 @@
-{ lib, stdenv
-, bottle
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, pytestCheckHook
-, pythonAtLeast
+{
+  lib,
+  stdenv,
+  bottle,
+  buildPythonPackage,
+  fetchpatch,
+  fetchPypi,
+  pytestCheckHook,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
@@ -28,27 +30,25 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # There is a version of bottle bundled with Pympler, but it is broken on
   # Python 3.11. Fortunately, Pympler will preferentially import an external
   # bottle if it is available, so we make it an explicit dependency.
-  propagatedBuildInputs = [
-    bottle
-  ];
-
-  disabledTests = [
-    # 'AssertionError: 'function (test.muppy.test_summary.func)' != 'function (muppy.test_summary.func)'
-    # https://github.com/pympler/pympler/issues/134
-    "test_repr_function"
-  ] ++ lib.optionals (pythonAtLeast "3.11") [
-    # https://github.com/pympler/pympler/issues/148
-    "test_findgarbage"
-    "test_get_tree"
-    "test_prune"
-  ];
+  propagatedBuildInputs = [ bottle ];
+
+  disabledTests =
+    [
+      # 'AssertionError: 'function (test.muppy.test_summary.func)' != 'function (muppy.test_summary.func)'
+      # https://github.com/pympler/pympler/issues/134
+      "test_repr_function"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.11") [
+      # https://github.com/pympler/pympler/issues/148
+      "test_findgarbage"
+      "test_get_tree"
+      "test_prune"
+    ];
 
   doCheck = stdenv.hostPlatform.isLinux;
 
@@ -57,5 +57,4 @@ buildPythonPackage rec {
     homepage = "https://pythonhosted.org/Pympler/";
     license = licenses.asl20;
   };
-
 }
diff --git a/pkgs/development/python-modules/pymsgbox/default.nix b/pkgs/development/python-modules/pymsgbox/default.nix
index c05533638e655..d33838cf5c849 100644
--- a/pkgs/development/python-modules/pymsgbox/default.nix
+++ b/pkgs/development/python-modules/pymsgbox/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchPypi, buildPythonPackage, tkinter }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  tkinter,
+}:
 
 buildPythonPackage rec {
   pname = "pymsgbox";
@@ -17,7 +22,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "pymsgbox" ];
 
   meta = with lib; {
-    description = "A simple, cross-platform, pure Python module for JavaScript-like message boxes";
+    description = "Simple, cross-platform, pure Python module for JavaScript-like message boxes";
     homepage = "https://github.com/asweigart/PyMsgBox";
     license = licenses.bsd3;
     maintainers = with maintainers; [ jluttine ];
diff --git a/pkgs/development/python-modules/pymssql/default.nix b/pkgs/development/python-modules/pymssql/default.nix
new file mode 100644
index 0000000000000..e234606d1c864
--- /dev/null
+++ b/pkgs/development/python-modules/pymssql/default.nix
@@ -0,0 +1,55 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  freetds,
+  krb5-c,
+  openssl,
+  cython,
+  gevent,
+  psutil,
+  pytestCheckHook,
+  setuptools-scm,
+  sqlalchemy,
+  tomli,
+}:
+
+buildPythonPackage rec {
+  pname = "pymssql";
+  version = "2.3.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-8DTka1aAYdFxSPHe3qZI+dX2tzQOjP/g7bqhcTy0q6s=";
+  };
+
+  build-system = [
+    cython
+    setuptools-scm
+    tomli
+  ];
+
+  buildInputs = [
+    freetds
+    krb5-c
+    openssl
+  ];
+
+  nativeCheckInputs = [
+    gevent
+    psutil
+    pytestCheckHook
+    sqlalchemy
+  ];
+
+  pythonImportsCheck = [ "pymssql" ];
+
+  meta = with lib; {
+    changelog = "https://github.com/pymssql/pymssql/blob/v${version}/ChangeLog.rst";
+    description = "Simple database interface for Python that builds on top of FreeTDS to provide a Python DB-API (PEP-249) interface to Microsoft SQL Server";
+    homepage = "https://github.com/pymssql/pymssql";
+    license = licenses.lgpl21Plus;
+    maintainers = [ maintainers.sith-lord-vader ];
+  };
+}
diff --git a/pkgs/development/python-modules/pymsteams/default.nix b/pkgs/development/python-modules/pymsteams/default.nix
index 3672ce6285759..6708d5bed7071 100644
--- a/pkgs/development/python-modules/pymsteams/default.nix
+++ b/pkgs/development/python-modules/pymsteams/default.nix
@@ -1,38 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pymsteams";
-  version = "0.2.2";
-  format = "setuptools";
+  version = "0.2.3";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "rveachkc";
-    repo = pname;
-    rev = version;
-    hash = "sha256-H1AEjUnEK+seKsnFnHpn1/aHxXcbyz67NbzhlGDtbk4=";
+    repo ="pymsteams";
+    rev = "refs/tags/${version}";
+    hash = "sha256-suPCAzjQp46+kKFiCtm65lxBbsn78Owq4dVmWCdhIpA=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ requests ];
 
   # Tests require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pymsteams"
-  ];
+  pythonImportsCheck = [ "pymsteams" ];
 
   meta = with lib; {
     description = "Python module to interact with Microsoft Teams";
     homepage = "https://github.com/rveachkc/pymsteams";
+    changelog = "https://github.com/rveachkc/pymsteams/releases/tag/${version}";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/pymumble/default.nix b/pkgs/development/python-modules/pymumble/default.nix
index 9b89805d5f40c..bc15652d7027e 100644
--- a/pkgs/development/python-modules/pymumble/default.nix
+++ b/pkgs/development/python-modules/pymumble/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, opuslib
-, protobuf
-, pytestCheckHook
-, pycrypto
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  opuslib,
+  protobuf,
+  pytestCheckHook,
+  pycrypto,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pymunk/default.nix b/pkgs/development/python-modules/pymunk/default.nix
index f649f9bba0ad6..212e8e54dd24e 100644
--- a/pkgs/development/python-modules/pymunk/default.nix
+++ b/pkgs/development/python-modules/pymunk/default.nix
@@ -1,12 +1,13 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, python
-, cffi
-, pytestCheckHook
-, pythonOlder
-, ApplicationServices
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  cffi,
+  pytestCheckHook,
+  pythonOlder,
+  ApplicationServices,
 }:
 
 buildPythonPackage rec {
@@ -22,29 +23,19 @@ buildPythonPackage rec {
     hash = "sha256-AV6upaZcnbKmQm9tTItRB6LpckappjdHvMH/awn/KeE=";
   };
 
-  propagatedBuildInputs = [
-    cffi
-  ];
+  propagatedBuildInputs = [ cffi ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [
-    ApplicationServices
-  ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ ApplicationServices ];
 
   preBuild = ''
     ${python.pythonOnBuildForHost.interpreter} setup.py build_ext --inplace
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "pymunk/tests"
-  ];
+  pytestFlagsArray = [ "pymunk/tests" ];
 
-  pythonImportsCheck = [
-    "pymunk"
-  ];
+  pythonImportsCheck = [ "pymunk" ];
 
   meta = with lib; {
     description = "2d physics library";
diff --git a/pkgs/development/python-modules/pymupdf/default.nix b/pkgs/development/python-modules/pymupdf/default.nix
index f225524e7e18b..4ee28f0b62081 100644
--- a/pkgs/development/python-modules/pymupdf/default.nix
+++ b/pkgs/development/python-modules/pymupdf/default.nix
@@ -1,31 +1,32 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, python
-
-# build-system
-, libclang
-, psutil
-, setuptools
-, swig
-
-# native dependencies
-, freetype
-, harfbuzz
-, openjpeg
-, jbig2dec
-, libjpeg_turbo
-, gumbo
-, memstreamHook
-
-# dependencies
-, mupdf
-
-# tests
-, fonttools
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  python,
+
+  # build-system
+  libclang,
+  psutil,
+  setuptools,
+  swig,
+
+  # native dependencies
+  freetype,
+  harfbuzz,
+  openjpeg,
+  jbig2dec,
+  libjpeg_turbo,
+  gumbo,
+  memstreamHook,
+
+  # dependencies
+  mupdf,
+
+  # tests
+  fonttools,
+  pytestCheckHook,
 }:
 
 let
@@ -36,9 +37,10 @@ let
     enablePython = true;
     python3 = python;
   };
-in buildPythonPackage rec {
+in
+buildPythonPackage rec {
   pname = "pymupdf";
-  version = "1.23.26";
+  version = "1.24.8";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -47,15 +49,14 @@ in buildPythonPackage rec {
     owner = "pymupdf";
     repo = "PyMuPDF";
     rev = "refs/tags/${version}";
-    hash = "sha256-m2zq04+PDnlzFuqeSt27UhdHXTHxpHdMPIg5RQl/5bQ=";
+    hash = "sha256-NG4ZJYMYTQHiqpnaOz7hxf5UW417UKawe5EqXaBnKJ8=";
   };
 
   # swig is not wrapped as Python package
   # libclang calls itself just clang in wheel metadata
   postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail '"swig",' "" \
-      --replace-fail "libclang" "clang"
+    substituteInPlace setup.py \
+      --replace-fail "ret.append( 'swig')" "pass" \
   '';
 
   nativeBuildInputs = [
@@ -72,24 +73,22 @@ in buildPythonPackage rec {
     jbig2dec
     libjpeg_turbo
     gumbo
-  ] ++ lib.optionals (stdenv.system == "x86_64-darwin") [
-    memstreamHook
-  ];
+  ] ++ lib.optionals (stdenv.system == "x86_64-darwin") [ memstreamHook ];
 
-  propagatedBuildInputs = [
-    mupdf-cxx
-  ];
+  propagatedBuildInputs = [ mupdf-cxx ];
 
   env = {
     # force using system MuPDF (must be defined in environment and empty)
     PYMUPDF_SETUP_MUPDF_BUILD = "";
+    # Setup the name of the package away from the default 'libclang'
+    PYMUPDF_SETUP_LIBCLANG = "clang";
     # provide MuPDF paths
     PYMUPDF_MUPDF_LIB = "${lib.getLib mupdf-cxx}/lib";
     PYMUPDF_MUPDF_INCLUDE = "${lib.getDev mupdf-cxx}/include";
   };
 
   # TODO: manually add mupdf rpath until upstream fixes it
-  postInstall = lib.optionalString stdenv.isDarwin ''
+  postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
     for lib in */*.so $out/${python.sitePackages}/*/*.so; do
       install_name_tool -add_rpath ${lib.getLib mupdf-cxx}/lib "$lib"
     done
@@ -104,86 +103,96 @@ in buildPythonPackage rec {
     export PATH="$PATH:$out/bin";
   '';
 
-  disabledTests = [
-    # fails for indeterminate reasons
-    "test_2548"
-    "test_2753"
-    "test_3020"
-    "test_3050"
-    "test_3058"
-    "test_3177"
-    "test_3186"
-    "test_color_count"
-    "test_pilsave"
-    "test_fz_write_pixmap_as_jpeg"
-    # NotImplementedError
-    "test_1824"
-    "test_2093"
-    "test_2093"
-    "test_2108"
-    "test_2182"
-    "test_2182"
-    "test_2246"
-    "test_2270"
-    "test_2270"
-    "test_2391"
-    "test_2788"
-    "test_2861"
-    "test_2871"
-    "test_2886"
-    "test_2904"
-    "test_2922"
-    "test_2934"
-    "test_2957"
-    "test_2969"
-    "test_3070"
-    "test_3131"
-    "test_3140"
-    "test_3209"
-    "test_3209"
-    "test_caret"
-    "test_deletion"
-    "test_file_info"
-    "test_line"
-    "test_page_links_generator"
-    "test_polyline"
-    "test_redact"
-    "test_techwriter_append"
-    "test_text2"
-    # Issue with FzArchive
-    "test_htmlbox"
-    "test_2246"
-    "test_3140"
-    "test_fit_springer"
-    "test_write_stabilized_with_links"
-    "test_textbox"
-    "test_delete_image"
-    # Fonts not available
-    "test_fontarchive"
-    "test_subset_fonts"
-    # Exclude lint tests
-    "test_flake8"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # darwin does not support OCR right now
-    "test_tesseract"
-  ];
+  disabledTests =
+    [
+      # Fails in release tarballs without .git
+      "test_codespell"
+      "test_pylint"
+      # fails for indeterminate reasons
+      "test_2548"
+      "test_2753"
+      "test_3020"
+      "test_3050"
+      "test_3058"
+      "test_3177"
+      "test_3186"
+      "test_color_count"
+      "test_pilsave"
+      "test_fz_write_pixmap_as_jpeg"
+      # NotImplementedError
+      "test_1824"
+      "test_2093"
+      "test_2093"
+      "test_2108"
+      "test_2182"
+      "test_2182"
+      "test_2246"
+      "test_2270"
+      "test_2270"
+      "test_2391"
+      "test_2788"
+      "test_2861"
+      "test_2871"
+      "test_2886"
+      "test_2904"
+      "test_2922"
+      "test_2934"
+      "test_2957"
+      "test_2969"
+      "test_3070"
+      "test_3131"
+      "test_3140"
+      "test_3209"
+      "test_3209"
+      "test_3301"
+      "test_3347"
+      "test_caret"
+      "test_deletion"
+      "test_file_info"
+      "test_line"
+      "test_page_links_generator"
+      "test_polyline"
+      "test_redact"
+      "test_techwriter_append"
+      "test_text2"
+      # Issue with FzArchive
+      "test_htmlbox"
+      "test_2246"
+      "test_3140"
+      "test_3400"
+      "test_707560"
+      "test_open"
+      "test_objectstream1"
+      "test_objectstream2"
+      "test_objectstream3"
+      "test_fit_springer"
+      "test_write_stabilized_with_links"
+      "test_textbox"
+      "test_delete_image"
+      # Fonts not available
+      "test_fontarchive"
+      "test_subset_fonts"
+      # Exclude lint tests
+      "test_flake8"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # darwin does not support OCR right now
+      "test_tesseract"
+    ];
 
   disabledTestPaths = [
     # Issue with FzArchive
     "tests/test_docs_samples.py"
   ];
 
-  pythonImportsCheck = [
-    "fitz"
-    "fitz_old"
-  ];
+  pythonImportsCheck = [ "fitz" ];
 
-  meta = with lib; {
+  meta = {
     description = "Python bindings for MuPDF's rendering library";
     homepage = "https://github.com/pymupdf/PyMuPDF";
     changelog = "https://github.com/pymupdf/PyMuPDF/releases/tag/${version}";
-    license = licenses.agpl3Only;
-    maintainers = with maintainers; [ teto ];
-    platforms = platforms.unix;
+    license = lib.licenses.agpl3Only;
+    maintainers = with lib.maintainers; [ teto ];
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/pymvglive/default.nix b/pkgs/development/python-modules/pymvglive/default.nix
index dc58ba668692b..acd4676499a89 100644
--- a/pkgs/development/python-modules/pymvglive/default.nix
+++ b/pkgs/development/python-modules/pymvglive/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, requests }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+}:
 
 buildPythonPackage rec {
   pname = "pymvglive";
diff --git a/pkgs/development/python-modules/pymysensors/default.nix b/pkgs/development/python-modules/pymysensors/default.nix
index ee8c5be2a60a6..df42f2a4cc373 100644
--- a/pkgs/development/python-modules/pymysensors/default.nix
+++ b/pkgs/development/python-modules/pymysensors/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, awesomeversion
-, buildPythonPackage
-, click
-, crcmod
-, fetchFromGitHub
-, getmac
-, intelhex
-, paho-mqtt
-, pyserial
-, pyserial-asyncio
-, pytest-sugar
-, pytest-timeout
-, pytestCheckHook
-, pythonOlder
-, voluptuous
+{
+  lib,
+  awesomeversion,
+  buildPythonPackage,
+  click,
+  crcmod,
+  fetchFromGitHub,
+  getmac,
+  intelhex,
+  paho-mqtt,
+  pyserial,
+  pyserial-asyncio,
+  pytest-sugar,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonOlder,
+  voluptuous,
 }:
 
 buildPythonPackage rec {
@@ -42,9 +43,7 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    mqtt-client = [
-      paho-mqtt
-    ];
+    mqtt-client = [ paho-mqtt ];
   };
 
   nativeCheckInputs = [
@@ -53,9 +52,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "mysensors"
-  ];
+  pythonImportsCheck = [ "mysensors" ];
 
   meta = with lib; {
     description = "Python API for talking to a MySensors gateway";
diff --git a/pkgs/development/python-modules/pymysql/default.nix b/pkgs/development/python-modules/pymysql/default.nix
index e7711f5902b94..be019c73f1855 100644
--- a/pkgs/development/python-modules/pymysql/default.nix
+++ b/pkgs/development/python-modules/pymysql/default.nix
@@ -1,19 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cryptography
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  cryptography,
 }:
 
 buildPythonPackage rec {
   pname = "pymysql";
-  version = "1.0.2";
+  version = "1.1.1";
+  pyproject = true;
 
   src = fetchPypi {
-    pname = "PyMySQL";
+    pname = "pymysql";
     inherit version;
-    sha256 = "816927a350f38d56072aeca5dfb10221fe1dc653745853d30a216637f5d7ad36";
+    hash = "sha256-4SdhGq8rQXQDxgv03FcBJK60pX9fN7jpWuOZpC+QTNA=";
   };
 
+  build-system = [ setuptools ];
+
   propagatedBuildInputs = [ cryptography ];
 
   # Wants to connect to MySQL
diff --git a/pkgs/development/python-modules/pymysqlsa/default.nix b/pkgs/development/python-modules/pymysqlsa/default.nix
index 49b5a49193de2..9d1609d506ca5 100644
--- a/pkgs/development/python-modules/pymysqlsa/default.nix
+++ b/pkgs/development/python-modules/pymysqlsa/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pymysql
-, sqlalchemy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pymysql,
+  sqlalchemy,
 }:
 
 buildPythonPackage rec {
@@ -15,12 +16,14 @@ buildPythonPackage rec {
     sha256 = "a2676bce514a29b2d6ab418812259b0c2f7564150ac53455420a20bd7935314a";
   };
 
-  propagatedBuildInputs = [ pymysql sqlalchemy ];
+  propagatedBuildInputs = [
+    pymysql
+    sqlalchemy
+  ];
 
   meta = with lib; {
     description = "PyMySQL dialect for SQL Alchemy";
     homepage = "https://pypi.python.org/pypi/pymysql_sa";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/pymystem3/default.nix b/pkgs/development/python-modules/pymystem3/default.nix
index 9ffb4bcdedae6..0dd0b329acd0e 100644
--- a/pkgs/development/python-modules/pymystem3/default.nix
+++ b/pkgs/development/python-modules/pymystem3/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, isPy3k
-, requests
-, flake8
-, mock
-, pytest
-, mystem
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  isPy3k,
+  requests,
+  flake8,
+  mock,
+  pytest,
+  mystem,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,11 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [ requests ];
-  nativeCheckInputs = [ flake8 mock pytest ];
+  nativeCheckInputs = [
+    flake8
+    mock
+    pytest
+  ];
   doCheck = isPy3k; # fails on linting
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/pynac/default.nix b/pkgs/development/python-modules/pynac/default.nix
index 45fb25f7315a1..0a5e1257a94c8 100644
--- a/pkgs/development/python-modules/pynac/default.nix
+++ b/pkgs/development/python-modules/pynac/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchurl
+{
+  lib,
+  buildPythonPackage,
+  fetchurl,
 }:
 
 buildPythonPackage {
@@ -15,8 +16,7 @@ buildPythonPackage {
 
   meta = with lib; {
     homepage = "https://github.com/se-esss-litterbox/Pynac";
-    description = "A Python wrapper around the Dynac charged particle simulator";
+    description = "Python wrapper around the Dynac charged particle simulator";
     license = licenses.gpl3;
   };
-
 }
diff --git a/pkgs/development/python-modules/pynacl/default.nix b/pkgs/development/python-modules/pynacl/default.nix
index bd92adf250113..cc610d62e388f 100644
--- a/pkgs/development/python-modules/pynacl/default.nix
+++ b/pkgs/development/python-modules/pynacl/default.nix
@@ -1,19 +1,22 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, sphinxHook
-, pythonOlder
-, libsodium
-, cffi
-, hypothesis
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  sphinxHook,
+  pythonOlder,
+  libsodium,
+  cffi,
+  hypothesis,
 }:
 
 buildPythonPackage rec {
   pname = "pynacl";
   version = "1.5.0";
-  outputs = [ "out" "doc" ];
+  outputs = [
+    "out"
+    "doc"
+  ];
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -24,21 +27,13 @@ buildPythonPackage rec {
     sha256 = "8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba";
   };
 
-  nativeBuildInputs = [
-    sphinxHook
-  ];
+  nativeBuildInputs = [ sphinxHook ];
 
-  buildInputs = [
-    libsodium
-  ];
+  buildInputs = [ libsodium ];
 
-  propagatedNativeBuildInputs = [
-    cffi
-  ];
+  propagatedNativeBuildInputs = [ cffi ];
 
-  propagatedBuildInputs = [
-    cffi
-  ];
+  propagatedBuildInputs = [ cffi ];
 
   nativeCheckInputs = [
     hypothesis
@@ -47,14 +42,12 @@ buildPythonPackage rec {
 
   SODIUM_INSTALL = "system";
 
-  pythonImportsCheck = [
-    "nacl"
-  ];
+  pythonImportsCheck = [ "nacl" ];
 
   meta = with lib; {
     description = "Python binding to the Networking and Cryptography (NaCl) library";
     homepage = "https://github.com/pyca/pynacl/";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pynamecheap/default.nix b/pkgs/development/python-modules/pynamecheap/default.nix
index 3c05dd30eb1ea..adf63d29af72f 100644
--- a/pkgs/development/python-modules/pynamecheap/default.nix
+++ b/pkgs/development/python-modules/pynamecheap/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,7 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "Namecheap API client in Python.";
+    description = "Namecheap API client in Python";
     homepage = "https://github.com/Bemmu/PyNamecheap";
     license = licenses.mit;
   };
diff --git a/pkgs/development/python-modules/pynamodb/default.nix b/pkgs/development/python-modules/pynamodb/default.nix
index d22ed78e02d1a..cd556861748c1 100644
--- a/pkgs/development/python-modules/pynamodb/default.nix
+++ b/pkgs/development/python-modules/pynamodb/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, blinker
-, botocore
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-env
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, typing-extensions
+{
+  lib,
+  blinker,
+  botocore,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-env,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -25,20 +26,12 @@ buildPythonPackage rec {
     hash = "sha256-Ag/ivZ2SDYX0kwXbExt3kE/pMJgfoGc6gWoy+Rr6GTw=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    botocore
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    typing-extensions
-  ];
+  dependencies = [ botocore ] ++ lib.optionals (pythonOlder "3.11") [ typing-extensions ];
 
   optional-dependencies = {
-    signal = [
-      blinker
-    ];
+    signal = [ blinker ];
   };
 
   nativeCheckInputs = [
@@ -47,9 +40,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ optional-dependencies.signal;
 
-  pythonImportsCheck = [
-    "pynamodb"
-  ];
+  pythonImportsCheck = [ "pynamodb" ];
 
   disabledTests = [
     # Tests requires credentials or network access
@@ -75,6 +66,6 @@ buildPythonPackage rec {
     homepage = "http://jlafon.io/pynamodb.html";
     changelog = "https://github.com/pynamodb/PynamoDB/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pynanoleaf/default.nix b/pkgs/development/python-modules/pynanoleaf/default.nix
index 443865d8eaad6..892900c118ba5 100644
--- a/pkgs/development/python-modules/pynanoleaf/default.nix
+++ b/pkgs/development/python-modules/pynanoleaf/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k, requests }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  requests,
+}:
 
 buildPythonPackage rec {
   pname = "pynanoleaf";
@@ -17,13 +23,11 @@ buildPythonPackage rec {
   # pynanoleaf does not contain tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pynanoleaf"
-  ];
+  pythonImportsCheck = [ "pynanoleaf" ];
 
   meta = with lib; {
     homepage = "https://github.com/Oro/pynanoleaf";
-    description = "A Python3 wrapper for the Nanoleaf API, capable of controlling both Nanoleaf Aurora and Nanoleaf Canvas";
+    description = "Python3 wrapper for the Nanoleaf API, capable of controlling both Nanoleaf Aurora and Nanoleaf Canvas";
     license = licenses.mit;
     maintainers = with maintainers; [ oro ];
   };
diff --git a/pkgs/development/python-modules/pync/default.nix b/pkgs/development/python-modules/pync/default.nix
index d3efec9a6a264..46af3ed5db2fc 100644
--- a/pkgs/development/python-modules/pync/default.nix
+++ b/pkgs/development/python-modules/pync/default.nix
@@ -1,13 +1,15 @@
-{ lib, stdenv
-, buildPythonPackage
-, fetchPypi
-, python-dateutil
-, pkgs
-, which
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  python-dateutil,
+  pkgs,
+  which,
 }:
 
 buildPythonPackage rec {
-  version  = "2.0.3";
+  version = "2.0.3";
   pname = "pync";
   format = "setuptools";
 
@@ -19,16 +21,15 @@ buildPythonPackage rec {
   nativeCheckInputs = [ which ];
   propagatedBuildInputs = [ python-dateutil ];
 
-  preInstall = lib.optionalString stdenv.isDarwin ''
+  preInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
     sed -i 's|^\([ ]*\)self.bin_path.*$|\1self.bin_path = "${pkgs.terminal-notifier}/bin/terminal-notifier"|' build/lib/pync/TerminalNotifier.py
   '';
 
   meta = with lib; {
     description = "Python Wrapper for Mac OS 10.8 Notification Center";
-    homepage    = "https://pypi.python.org/pypi/pync";
-    license     = licenses.mit;
-    platforms   = platforms.darwin;
+    homepage = "https://pypi.python.org/pypi/pync";
+    license = licenses.mit;
+    platforms = platforms.darwin;
     maintainers = with maintainers; [ lovek323 ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pynecil/default.nix b/pkgs/development/python-modules/pynecil/default.nix
new file mode 100644
index 0000000000000..2066dc3ec02b6
--- /dev/null
+++ b/pkgs/development/python-modules/pynecil/default.nix
@@ -0,0 +1,47 @@
+{
+  bleak,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatch-regex-commit,
+  hatchling,
+  lib,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "pynecil";
+  version = "0.2.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "tr4nt0r";
+    repo = "pynecil";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-57TPgEC7NY75iVj31tdpCOrXUOcsFBy/4XltEHxlNFk=";
+  };
+
+  build-system = [
+    hatch-regex-commit
+    hatchling
+  ];
+
+  dependencies = [ bleak ];
+
+  pythonImportsCheck = [ "pynecil" ];
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytest-cov-stub
+    pytestCheckHook
+  ];
+
+  meta = {
+    changelog = "https://github.com/tr4nt0r/pynecil/releases/tag/v${version}";
+    description = "Python library to communicate with Pinecil V2 soldering irons via Bluetooth";
+    homepage = "https://github.com/tr4nt0r/pynecil";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/pynello/default.nix b/pkgs/development/python-modules/pynello/default.nix
index 4435bb7ec30ea..919674c639fcc 100644
--- a/pkgs/development/python-modules/pynello/default.nix
+++ b/pkgs/development/python-modules/pynello/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python-dateutil
-, pythonOlder
-, requests
-, requests-oauthlib
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python-dateutil,
+  pythonOlder,
+  requests,
+  requests-oauthlib,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pynello"
-  ];
+  pythonImportsCheck = [ "pynello" ];
 
   meta = with lib; {
     description = "Python library for nello.io intercoms";
diff --git a/pkgs/development/python-modules/pynest2d/default.nix b/pkgs/development/python-modules/pynest2d/default.nix
index a3b1929feb44e..87cbebb03d7ff 100644
--- a/pkgs/development/python-modules/pynest2d/default.nix
+++ b/pkgs/development/python-modules/pynest2d/default.nix
@@ -1,5 +1,13 @@
-{ lib, buildPythonPackage, fetchFromGitHub, python, cmake
-, libnest2d, sip4, clipper }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  cmake,
+  libnest2d,
+  sip4,
+  clipper,
+}:
 
 buildPythonPackage rec {
   version = "4.12.0";
@@ -13,14 +21,18 @@ buildPythonPackage rec {
     hash = "sha256-QQdTDhO4i9NVhegGTmdEQSNv3gooaZzTX/Rv86h3GEo=";
   };
 
-  propagatedBuildInputs = [ libnest2d sip4 clipper ];
+  propagatedBuildInputs = [
+    libnest2d
+    sip4
+    clipper
+  ];
   nativeBuildInputs = [ cmake ];
 
   CLIPPER_PATH = "${clipper.out}";
 
   postPatch = ''
-     sed -i 's#''${Python3_SITEARCH}#${placeholder "out"}/${python.sitePackages}#' cmake/SIPMacros.cmake
-   '';
+    sed -i 's#''${Python3_SITEARCH}#${placeholder "out"}/${python.sitePackages}#' cmake/SIPMacros.cmake
+  '';
 
   meta = with lib; {
     description = "Python bindings for libnest2d";
diff --git a/pkgs/development/python-modules/pynetbox/default.nix b/pkgs/development/python-modules/pynetbox/default.nix
index 0a08f4affa595..14ce4a0de9292 100644
--- a/pkgs/development/python-modules/pynetbox/default.nix
+++ b/pkgs/development/python-modules/pynetbox/default.nix
@@ -1,34 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools-scm
-, requests
-, six
-, pytestCheckHook
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  packaging,
+  requests,
+  pytestCheckHook,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
   pname = "pynetbox";
-  version = "7.3.3";
-  format = "setuptools";
+  version = "7.4.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "netbox-community";
-    repo = pname;
+    repo = "pynetbox";
     rev = "refs/tags/v${version}";
-    hash = "sha256-QIvh24ZqnF8uF9HOuY0yt3QT/jHgJ2C916d+rBqezWQ=";
+    hash = "sha256-JOUgQvOtvXRDM79Sp472OHPh1YEoA82T3R9aZFes8SI=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    packaging
     requests
-    six
   ];
 
+  pythonImportsCheck = [ "pynetbox" ];
+
   nativeCheckInputs = [
     pytestCheckHook
     pyyaml
diff --git a/pkgs/development/python-modules/pynetdicom/default.nix b/pkgs/development/python-modules/pynetdicom/default.nix
index 6f0407aacdff3..efcad7461e99f 100644
--- a/pkgs/development/python-modules/pynetdicom/default.nix
+++ b/pkgs/development/python-modules/pynetdicom/default.nix
@@ -1,21 +1,19 @@
 {
   lib,
-  stdenv,
   buildPythonPackage,
   fetchFromGitHub,
-  fetchpatch,
+  poetry-core,
   pydicom,
   pyfakefs,
   pytestCheckHook,
   pythonAtLeast,
   pythonOlder,
-  setuptools,
   sqlalchemy,
 }:
 
 buildPythonPackage rec {
   pname = "pynetdicom";
-  version = "2.0.2";
+  version = "2.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -24,18 +22,10 @@ buildPythonPackage rec {
     owner = "pydicom";
     repo = "pynetdicom";
     rev = "refs/tags/v${version}";
-    hash = "sha256-/JWQUtFBW4uqCbs/nUxj1pRBfTCXV4wcqTkqvzpdFrM=";
+    hash = "sha256-cEe0/mzmMnPoLQMx5AsJocGxCUVE512k9KlEmjzjzn4=";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "fix-python-3.11-test-attribute-errors";
-      url = "https://github.com/pydicom/pynetdicom/pull/754/commits/2126bd932d6dfb3f07045eb9400acb7eaa1b3069.patch";
-      hash = "sha256-t6Lg0sTZSWIE5q5pkBvEoHDQ+cklDn8SgNBcFk1myp4=";
-    })
-  ];
-
-  build-system = [ setuptools ];
+  build-system = [ poetry-core ];
 
   dependencies = [ pydicom ];
 
@@ -72,21 +62,23 @@ buildPythonPackage rec {
     "TestStoreSCUCLI"
   ];
 
-  disabledTestPaths = [
-    # Ignore apps tests
-    "pynetdicom/apps/tests/"
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    # https://github.com/pydicom/pynetdicom/issues/924
-    "pynetdicom/tests/test_assoc.py"
-    "pynetdicom/tests/test_transport.py"
-  ];
+  disabledTestPaths =
+    [
+      # Ignore apps tests
+      "pynetdicom/apps/tests/"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      # https://github.com/pydicom/pynetdicom/issues/924
+      "pynetdicom/tests/test_assoc.py"
+      "pynetdicom/tests/test_transport.py"
+    ];
 
   pythonImportsCheck = [ "pynetdicom" ];
 
   pytestFlagsArray = [
     # https://github.com/pydicom/pynetdicom/issues/923
     "-W"
-    "ignore::pytest.PytestRemovedIn8Warning"
+    "ignore::pytest.PytestRemovedIn9Warning"
   ];
 
   meta = with lib; {
@@ -95,7 +87,5 @@ buildPythonPackage rec {
     changelog = "https://github.com/pydicom/pynetdicom/releases/tag/v${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
-    # Tests are not passing on Darwin/Aarch64, thus it's assumed that it doesn't work
-    broken = stdenv.isDarwin || stdenv.isAarch64;
   };
 }
diff --git a/pkgs/development/python-modules/pynetgear/default.nix b/pkgs/development/python-modules/pynetgear/default.nix
index 1a20de636537b..301a957e861f9 100644
--- a/pkgs/development/python-modules/pynetgear/default.nix
+++ b/pkgs/development/python-modules/pynetgear/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-5Lj2cK/SOGgaPu8dI9X3Leg4dPAY7tdIHCzFnNaube8=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
-  pythonImportsCheck = [
-    "pynetgear"
-  ];
+  pythonImportsCheck = [ "pynetgear" ];
 
   # Tests don't pass
   # https://github.com/MatMaul/pynetgear/issues/109
diff --git a/pkgs/development/python-modules/pyngo/default.nix b/pkgs/development/python-modules/pyngo/default.nix
index ab2cce0b56521..ee1d1d2276658 100644
--- a/pkgs/development/python-modules/pyngo/default.nix
+++ b/pkgs/development/python-modules/pyngo/default.nix
@@ -1,26 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build-system
-, hatchling
+  # build-system
+  hatchling,
 
-# dependencies
-, django
-, pydantic
-, typing-extensions
+  # dependencies
+  django,
+  pydantic,
+  typing-extensions,
 
-# tests
-, django-stubs
-, pytestCheckHook
-, pytest-asyncio
+  # tests
+  django-stubs,
+  pytestCheckHook,
+  pytest-asyncio,
 }:
 
 buildPythonPackage rec {
   pname = "pyngo";
-  version = "2.0.1";
+  version = "2.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -29,12 +29,11 @@ buildPythonPackage rec {
     owner = "yezz123";
     repo = "pyngo";
     rev = "refs/tags/${version}";
-    hash = "sha256-wvy1L21AnQ4JP5seAh6DWksQU2OcbYTXKcixpFryH4w=";
+    hash = "sha256-E3UNgn/L1bbfYljufPp+bGAvSsADpPAvv/eJimD8v50=";
   };
 
   nativeBuildInputs = [
     hatchling
-    pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = [
diff --git a/pkgs/development/python-modules/pyngrok/default.nix b/pkgs/development/python-modules/pyngrok/default.nix
index 0646d6ac8b4b5..7082611f6716c 100644
--- a/pkgs/development/python-modules/pyngrok/default.nix
+++ b/pkgs/development/python-modules/pyngrok/default.nix
@@ -1,35 +1,32 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
   pname = "pyngrok";
-  version = "7.1.6";
+  version = "7.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-BcD8pjQJE2WKvdxiOgpTknrO2T4n/++AHSSBS8sYDqo=";
+    hash = "sha256-TkOvmy8hzu2NITeXAo/ogjAD8YW0l5Lk04MwI2XIFRU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pyyaml
-  ];
+  propagatedBuildInputs = [ pyyaml ];
 
   pythonImportsCheck = [ "pyngrok" ];
 
   meta = with lib; {
-    description = "A Python wrapper for ngrok";
+    description = "Python wrapper for ngrok";
     homepage = "https://github.com/alexdlaird/pyngrok";
     changelog = "https://github.com/alexdlaird/pyngrok/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pynina/default.nix b/pkgs/development/python-modules/pynina/default.nix
index 73e611d0f5010..9f95a1064550f 100644
--- a/pkgs/development/python-modules/pynina/default.nix
+++ b/pkgs/development/python-modules/pynina/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,16 +19,12 @@ buildPythonPackage rec {
     hash = "sha256-6HJ78tKl6If/ezwOrGl3VEYO4eMh/6cZq2j2AMBr0I8=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pynina"
-  ];
+  pythonImportsCheck = [ "pynina" ];
 
   meta = with lib; {
     description = "Python API wrapper to retrieve warnings from the german NINA app";
diff --git a/pkgs/development/python-modules/pynisher/default.nix b/pkgs/development/python-modules/pynisher/default.nix
index 34a6f158f1217..8249af5aa44cc 100644
--- a/pkgs/development/python-modules/pynisher/default.nix
+++ b/pkgs/development/python-modules/pynisher/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, psutil
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  psutil,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
   # No tests in the Pypi archive
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pynisher"
-  ];
+  pythonImportsCheck = [ "pynisher" ];
 
   meta = with lib; {
     description = "Module intended to limit a functions resources";
diff --git a/pkgs/development/python-modules/pynitrokey/default.nix b/pkgs/development/python-modules/pynitrokey/default.nix
index 41218201fd55a..a144da1003693 100644
--- a/pkgs/development/python-modules/pynitrokey/default.nix
+++ b/pkgs/development/python-modules/pynitrokey/default.nix
@@ -1,36 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonRelaxDepsHook
-, installShellFiles
-, libnitrokey
-, flit-core
-, certifi
-, cffi
-, click
-, cryptography
-, ecdsa
-, fido2
-, intelhex
-, nkdfu
-, python-dateutil
-, pyusb
-, requests
-, spsdk
-, tqdm
-, tlv8
-, typing-extensions
-, pyserial
-, protobuf
-, click-aliases
-, semver
-, nethsm
-, importlib-metadata
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  installShellFiles,
+  libnitrokey,
+  flit-core,
+  certifi,
+  cffi,
+  click,
+  cryptography,
+  ecdsa,
+  fido2,
+  intelhex,
+  nkdfu,
+  python-dateutil,
+  pyusb,
+  requests,
+  spsdk,
+  tqdm,
+  tlv8,
+  typing-extensions,
+  pyserial,
+  protobuf,
+  click-aliases,
+  semver,
+  nethsm,
+  importlib-metadata,
 }:
 
 let
   pname = "pynitrokey";
-  version = "0.4.47";
+  version = "0.4.50";
   mainProgram = "nitropy";
 in
 
@@ -40,7 +40,7 @@ buildPythonPackage {
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-WOHDskGAZGhiU48JGV0yDhWIpFELFLHhn9g5sbchKKg=";
+    hash = "sha256-BIBwIYxoUcK7E69REcu/qmrpNlyYwnA7Im3iRSsWlnA=";
   };
 
   propagatedBuildInputs = [
@@ -70,7 +70,6 @@ buildPythonPackage {
   nativeBuildInputs = [
     flit-core
     installShellFiles
-    pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = true;
@@ -80,9 +79,7 @@ buildPythonPackage {
 
   # libnitrokey is not propagated to users of the pynitrokey Python package.
   # It is only usable from the wrapped bin/nitropy
-  makeWrapperArgs = [
-    "--set LIBNK_PATH ${lib.makeLibraryPath [ libnitrokey ]}"
-  ];
+  makeWrapperArgs = [ "--set LIBNK_PATH ${lib.makeLibraryPath [ libnitrokey ]}" ];
 
   # no tests
   doCheck = false;
@@ -100,8 +97,14 @@ buildPythonPackage {
     description = "Python client for Nitrokey devices";
     homepage = "https://github.com/Nitrokey/pynitrokey";
     changelog = "https://github.com/Nitrokey/pynitrokey/releases/tag/v${version}";
-    license = with licenses; [ asl20 mit ];
-    maintainers = with maintainers; [ frogamic raitobezarius ];
+    license = with licenses; [
+      asl20
+      mit
+    ];
+    maintainers = with maintainers; [
+      frogamic
+      raitobezarius
+    ];
     inherit mainProgram;
   };
 }
diff --git a/pkgs/development/python-modules/pynmea2/default.nix b/pkgs/development/python-modules/pynmea2/default.nix
index 2bfdd61a62025..e4e9f37d2f50e 100644
--- a/pkgs/development/python-modules/pynmea2/default.nix
+++ b/pkgs/development/python-modules/pynmea2/default.nix
@@ -1,22 +1,44 @@
-{ lib, buildPythonPackage, fetchPypi, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  pytestCheckHook,
+  setuptools,
+  pythonOlder,
+}:
 
 buildPythonPackage rec {
   pname = "pynmea2";
   version = "1.19.0";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-Hap5uTJ5+IfRwjXlzFx54yZEVkE4zkaYmrD0ovyXDXw=";
   };
 
+  patches = [
+    # Removed depreciated imp and replaced with importlib, https://github.com/Knio/pynmea2/pull/164
+    (fetchpatch {
+      name = "remove-imp.patch";
+      url = "https://github.com/Knio/pynmea2/commit/c56717b5e859e978ad3b52b8f826faa5d50489f8.patch";
+      hash = "sha256-jeFyfukT+0NLNxvNCxL7TzL/8oKmKOam5ZUIvjdvN/Q=";
+    })
+  ];
+
+  build-system = [ setuptools ];
+
   nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "pynmea2" ];
 
   meta = {
-    homepage = "https://github.com/Knio/pynmea2";
     description = "Python library for the NMEA 0183 protcol";
+    homepage = "https://github.com/Knio/pynmea2";
+    changelog = "https://github.com/Knio/pynmea2/releases/tag/${version}";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ oxzi ];
   };
diff --git a/pkgs/development/python-modules/pynmeagps/default.nix b/pkgs/development/python-modules/pynmeagps/default.nix
index 7791bb13f315e..99964e420c00a 100644
--- a/pkgs/development/python-modules/pynmeagps/default.nix
+++ b/pkgs/development/python-modules/pynmeagps/default.nix
@@ -1,37 +1,41 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, setuptools
-, pytest-cov
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pynmeagps";
-  version = "1.0.35";
+  version = "1.0.42";
   pyproject = true;
 
+  disabled = pythonOlder "3.8";
+
   src = fetchFromGitHub {
     owner = "semuconsulting";
     repo = "pynmeagps";
-    rev = "v${version}";
-    hash = "sha256-ULGBfTHCFGUSF3cmJ4GEUrgGDo4uJwstBj8nZ7tj0AA=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-hlGqc4vZ/C98vQwJewK0cfC3zP9xyO0oXXtlyNUDg0Y=";
   };
 
-  nativeBuildInputs = [ setuptools ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "--cov --cov-report html --cov-fail-under 98" ""
+  '';
+
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-    pytest-cov
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pynmeagps"
-  ];
+  pythonImportsCheck = [ "pynmeagps" ];
 
   meta = {
-    homepage = "https://github.com/semuconsulting/pynmeagps";
     description = "NMEA protocol parser and generator";
+    homepage = "https://github.com/semuconsulting/pynmeagps";
+    changelog = "https://github.com/semuconsulting/pynmeagps/releases/tag/v${version}";
     license = lib.licenses.bsd3;
     maintainers = with lib.maintainers; [ dylan-gonzalez ];
   };
diff --git a/pkgs/development/python-modules/pynndescent/default.nix b/pkgs/development/python-modules/pynndescent/default.nix
index 3c77fec41b350..00a3e513ea671 100644
--- a/pkgs/development/python-modules/pynndescent/default.nix
+++ b/pkgs/development/python-modules/pynndescent/default.nix
@@ -1,32 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, importlib-metadata
-, joblib
-, llvmlite
-, numba
-, scikit-learn
-, scipy
-, setuptools
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  importlib-metadata,
+  joblib,
+  llvmlite,
+  numba,
+  scikit-learn,
+  scipy,
+  setuptools,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pynndescent";
-  version = "0.5.12";
+  version = "0.5.13";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-BzYpH8u+39Xgo6KA9xpj+Osvi9lnDUwLUawbTQga33A=";
+    hash = "sha256-10JUwO4KHu7IRZfV/on+3Pd4WT7qvjLC+XQSk0qYAPs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     joblib
@@ -34,17 +33,11 @@ buildPythonPackage rec {
     numba
     scikit-learn
     scipy
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pynndescent"
-  ];
+  pythonImportsCheck = [ "pynndescent" ];
 
   meta = with lib; {
     description = "Nearest Neighbor Descent";
diff --git a/pkgs/development/python-modules/pynose/default.nix b/pkgs/development/python-modules/pynose/default.nix
deleted file mode 100644
index e58681cbe9661..0000000000000
--- a/pkgs/development/python-modules/pynose/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-}:
-
-buildPythonPackage rec {
-  pname = "pynose";
-  version = "1.5.0";
-  pyproject = true;
-
-  src = fetchFromGitHub {
-    owner = "mdmintz";
-    repo = "pynose";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-Oi+vwInqgsdZfr5abJUa4zkTktpEuG0m89d1O8Oot0Q=";
-  };
-
-  nativeBuildInputs = [ setuptools ];
-
-  # has no tests
-  doCheck = false;
-
-  meta = with lib; {
-    description = "pynose fixes nose to extend unittest and make testing easier";
-    homepage = "https://github.com/mdmintz/pynose";
-    license = licenses.mit;
-    maintainers = with maintainers; [ SuperSandro2000 ];
-  };
-}
diff --git a/pkgs/development/python-modules/pynotifier/default.nix b/pkgs/development/python-modules/pynotifier/default.nix
index 7968677f1b62d..f264d9a328036 100644
--- a/pkgs/development/python-modules/pynotifier/default.nix
+++ b/pkgs/development/python-modules/pynotifier/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, libnotify
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  libnotify,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,13 +26,9 @@ buildPythonPackage rec {
         '"${lib.getExe' libnotify "notify-send"}"'
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "pynotifier" ];
 
diff --git a/pkgs/development/python-modules/pynput/default.nix b/pkgs/development/python-modules/pynput/default.nix
index 88c46532d997c..6d73c35e5ba62 100644
--- a/pkgs/development/python-modules/pynput/default.nix
+++ b/pkgs/development/python-modules/pynput/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
-, setuptools-lint
-, sphinx
+  # build-system
+  setuptools,
+  setuptools-lint,
+  sphinx,
 
-# dependencies
-, xlib
-, evdev
-, darwin
-, six
+  # dependencies
+  xlib,
+  evdev,
+  darwin,
+  six,
 
- # tests
-, unittestCheckHook
- }:
+  # tests
+  unittestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "pynput";
@@ -41,28 +42,29 @@ buildPythonPackage rec {
     sphinx
   ];
 
-  propagatedBuildInputs = [
-    six
-  ] ++ lib.optionals stdenv.isLinux [
-    evdev
-    xlib
-  ] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [
-    ApplicationServices
-    Quartz
-  ]);
+  propagatedBuildInputs =
+    [ six ]
+    ++ lib.optionals stdenv.hostPlatform.isLinux [
+      evdev
+      xlib
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin (
+      with darwin.apple_sdk.frameworks;
+      [
+        ApplicationServices
+        Quartz
+      ]
+    );
 
   doCheck = false; # requires running X server
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
-    description = "A library to control and monitor input devices";
+    broken = stdenv.hostPlatform.isDarwin;
+    description = "Library to control and monitor input devices";
     homepage = "https://github.com/moses-palmer/pynput";
     license = licenses.lgpl3;
     maintainers = with maintainers; [ nickhu ];
   };
 }
-
diff --git a/pkgs/development/python-modules/pynrrd/default.nix b/pkgs/development/python-modules/pynrrd/default.nix
index 7d36e42da70df..9be59daec1f51 100644
--- a/pkgs/development/python-modules/pynrrd/default.nix
+++ b/pkgs/development/python-modules/pynrrd/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, numpy
-, nptyping
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  numpy,
+  nptyping,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  pythonImportsCheck = [
-    "nrrd"
-  ];
+  pythonImportsCheck = [ "nrrd" ];
 
   meta = with lib; {
     homepage = "https://github.com/mhe/pynrrd";
diff --git a/pkgs/development/python-modules/pynslookup/default.nix b/pkgs/development/python-modules/pynslookup/default.nix
new file mode 100644
index 0000000000000..42591c750ca71
--- /dev/null
+++ b/pkgs/development/python-modules/pynslookup/default.nix
@@ -0,0 +1,39 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  dnspython,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "pynslookup";
+  version = "1.8.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "wesinator";
+    repo = "pynslookup";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-cb8oyI8D8SzBP+tm1jGPPshJYhPegYOH0RwIH03/K/A=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ dnspython ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "nslookup" ];
+
+  meta = with lib; {
+    description = "Module to do DNS lookups";
+    homepage = "https://github.com/wesinator/pynslookup";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pynuki/default.nix b/pkgs/development/python-modules/pynuki/default.nix
index 28c7117d680a7..42de5c5bdc028 100644
--- a/pkgs/development/python-modules/pynuki/default.nix
+++ b/pkgs/development/python-modules/pynuki/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pynacl
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pynacl,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-PF5FmAuPcJXq8gQ8HyzdtL2HiiUjueT+LAS1lYRvrwM=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     pynacl
@@ -33,9 +32,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pynuki"
-  ];
+  pythonImportsCheck = [ "pynuki" ];
 
   meta = with lib; {
     description = "Python bindings for nuki.io bridges";
diff --git a/pkgs/development/python-modules/pynut2/default.nix b/pkgs/development/python-modules/pynut2/default.nix
index 4c56cdff0de8a..44c687f125927 100644
--- a/pkgs/development/python-modules/pynut2/default.nix
+++ b/pkgs/development/python-modules/pynut2/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     sha256 = "1lg7n1frndfgw73s0ssl1h7kc6zxm7fpiwlc6v6d60kxzaj1dphx";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   pythonImportsCheck = [ "pynut2.nut2" ];
 
@@ -26,7 +25,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "API overhaul of PyNUT, a Python library to allow communication with NUT (Network UPS Tools) servers.";
+    description = "API overhaul of PyNUT, a Python library to allow communication with NUT (Network UPS Tools) servers";
     homepage = "https://github.com/mezz64/python-nut2";
     license = with licenses; [ gpl3Plus ];
     maintainers = [ maintainers.luker ];
diff --git a/pkgs/development/python-modules/pynvim-pp/default.nix b/pkgs/development/python-modules/pynvim-pp/default.nix
index a1dee20139b4e..feb57706f7a52 100644
--- a/pkgs/development/python-modules/pynvim-pp/default.nix
+++ b/pkgs/development/python-modules/pynvim-pp/default.nix
@@ -1,30 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pynvim
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pynvim,
+  setuptools,
 }:
 
 buildPythonPackage {
   pname = "pynvim-pp";
-  version = "unstable-2024-03-11";
+  version = "unstable-2024-07-31";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "ms-jpq";
     repo = "pynvim_pp";
-    rev = "34e3a027c595981886d7efd1c91071f3eaa4715d";
-    hash = "sha256-2+jDRJXlg9q4MN9vOhmeq4cWVJ0wp5r5xAh3G8lqgOg=";
+    rev = "6d3c298b7eb9543bce7ab515b0a39f256c1d37ca";
+    hash = "sha256-W6YaxI/fa2HL6+FIBTTA+7K2Be02iuIfFFVO/hhYnpo=";
   };
 
-  nativeBuildInputs = [ setuptools ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [ pynvim ];
+  dependencies = [ pynvim ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://github.com/ms-jpq/pynvim_pp";
     description = "Dependency to chadtree and coq_nvim plugins";
-    license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/pynvim/default.nix b/pkgs/development/python-modules/pynvim/default.nix
index 829ec7d68b121..c17df53869386 100644
--- a/pkgs/development/python-modules/pynvim/default.nix
+++ b/pkgs/development/python-modules/pynvim/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, msgpack
-, greenlet
-, pythonOlder
-, isPyPy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  msgpack,
+  greenlet,
+  pythonOlder,
+  isPyPy,
 }:
 
 buildPythonPackage rec {
@@ -27,22 +28,14 @@ buildPythonPackage rec {
       --replace " + pytest_runner" ""
   '';
 
-  buildInputs = [
-    setuptools
-  ];
+  buildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    msgpack
-  ] ++ lib.optionals (!isPyPy) [
-    greenlet
-  ];
+  propagatedBuildInputs = [ msgpack ] ++ lib.optionals (!isPyPy) [ greenlet ];
 
   # Tests require pkgs.neovim which we cannot add because of circular dependency
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pynvim"
-  ];
+  pythonImportsCheck = [ "pynvim" ];
 
   meta = with lib; {
     description = "Python client for Neovim";
diff --git a/pkgs/development/python-modules/pynvml/default.nix b/pkgs/development/python-modules/pynvml/default.nix
index f73f5bd7d56df..936a4f5ce8476 100644
--- a/pkgs/development/python-modules/pynvml/default.nix
+++ b/pkgs/development/python-modules/pynvml/default.nix
@@ -1,11 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, substituteAll
-, pythonOlder
-, addOpenGLRunpath
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  cudaPackages,
+  fetchFromGitHub,
+  substituteAll,
+  pythonOlder,
+  addDriverRunpath,
+  setuptools,
+  pytestCheckHook,
+  versioneer,
+  pynvml,
 }:
 
 buildPythonPackage rec {
@@ -24,23 +28,37 @@ buildPythonPackage rec {
   patches = [
     (substituteAll {
       src = ./0001-locate-libnvidia-ml.so.1-on-NixOS.patch;
-      inherit (addOpenGLRunpath) driverLink;
+      inherit (addDriverRunpath) driverLink;
     })
   ];
 
+  # unvendor versioneer
+  postPatch = ''
+    rm versioneer.py
+  '';
+
   nativeBuildInputs = [
     setuptools
+    versioneer
   ];
 
-  pythonImportsCheck = [ "pynvml" "pynvml.smi" ];
-
-  nativeCheckInputs = [
-    pytestCheckHook
+  pythonImportsCheck = [
+    "pynvml"
+    "pynvml.smi"
   ];
 
+  nativeCheckInputs = [ pytestCheckHook ];
+
   # OSError: /run/opengl-driver/lib/libnvidia-ml.so.1: cannot open shared object file: No such file or directory
   doCheck = false;
 
+  passthru.tests.tester-nvmlInit = cudaPackages.writeGpuTestPython { libraries = [ pynvml ]; } ''
+    import pynvml
+    from pynvml.smi import nvidia_smi  # noqa: F401
+
+    print(f"{pynvml.nvmlInit()=}")
+  '';
+
   meta = with lib; {
     description = "Python bindings for the NVIDIA Management Library";
     homepage = "https://github.com/gpuopenanalytics/pynvml";
diff --git a/pkgs/development/python-modules/pynws/default.nix b/pkgs/development/python-modules/pynws/default.nix
index 5c3b5c7c49a28..a923be9c4a33b 100644
--- a/pkgs/development/python-modules/pynws/default.nix
+++ b/pkgs/development/python-modules/pynws/default.nix
@@ -1,47 +1,60 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, freezegun
-, metar
-, pytest-aiohttp
-, pytest-asyncio
-, pytest-cov
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  metar,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  tenacity,
 }:
 
 buildPythonPackage rec {
   pname = "pynws";
-  version = "1.6.0";
-  format = "setuptools";
-  disabled = pythonOlder "3.6";
+  version = "2.0.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "MatthewFlamm";
-    repo = pname;
+    repo = "pynws";
     rev = "refs/tags/v${version}";
-    hash = "sha256-x56kfnmdVV0Fc7XSI60rrtEl4k3uzpIdZxTofUbkUHU=";
+    hash = "sha256-eAXIlX/K7Cpq+aiPHiRGqhtSHQDtbHONYP0AjRW8JjY=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
     aiohttp
     metar
   ];
 
+  optional-dependencies.retry = [ tenacity ];
+
   nativeCheckInputs = [
     freezegun
     pytest-aiohttp
     pytest-asyncio
-    pytest-cov
+    pytest-cov-stub
     pytestCheckHook
-  ];
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
   pythonImportsCheck = [ "pynws" ];
 
   meta = with lib; {
     description = "Python library to retrieve data from NWS/NOAA";
     homepage = "https://github.com/MatthewFlamm/pynws";
+    changelog = "https://github.com/MatthewFlamm/pynws/releases/tag/v${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/pynx584/default.nix b/pkgs/development/python-modules/pynx584/default.nix
index 405f66a7465c6..7597984397678 100644
--- a/pkgs/development/python-modules/pynx584/default.nix
+++ b/pkgs/development/python-modules/pynx584/default.nix
@@ -1,31 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flask
-, mock
-, prettytable
-, pyserial
-, pytestCheckHook
-, pythonOlder
-, requests
-, stevedore
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  flask,
+  mock,
+  prettytable,
+  pyserial,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  stevedore,
 }:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "pynx584";
-  version = "0.8.1";
-  format = "setuptools";
-  disabled = pythonOlder "3.6";
+  version = "0.8.2";
+  pyproject = true;
 
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "kk7ds";
-    repo = pname;
-    rev = version;
-    hash = "sha256-nF8+LbKqy/GrnPpykS5wEQMPoFYxi40pfM3Ys/UXCeo=";
+    repo = "pynx584";
+    rev = "refs/tags/0.8.2";
+    hash = "sha256-q5ra7tH4kaBrw0VAiyMsmWOkVhA7Y6bRuFP8dlxQjsE=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     flask
     prettytable
     pyserial
diff --git a/pkgs/development/python-modules/pynzb/default.nix b/pkgs/development/python-modules/pynzb/default.nix
index 18ef6c0312851..52d94c093f67a 100644
--- a/pkgs/development/python-modules/pynzb/default.nix
+++ b/pkgs/development/python-modules/pynzb/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -27,5 +28,4 @@ buildPythonPackage rec {
     license = licenses.bsd3;
     maintainers = with maintainers; [ domenkozar ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pyobihai/default.nix b/pkgs/development/python-modules/pyobihai/default.nix
index 1038c162556af..5a899e6987951 100644
--- a/pkgs/development/python-modules/pyobihai/default.nix
+++ b/pkgs/development/python-modules/pyobihai/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, defusedxml
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  defusedxml,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyobihai"
-  ];
+  pythonImportsCheck = [ "pyobihai" ];
 
   meta = with lib; {
     description = "Module to interact with Obihai devices";
diff --git a/pkgs/development/python-modules/pyocd-pemicro/default.nix b/pkgs/development/python-modules/pyocd-pemicro/default.nix
index 74dee58903cdf..174ec65e2f731 100644
--- a/pkgs/development/python-modules/pyocd-pemicro/default.nix
+++ b/pkgs/development/python-modules/pyocd-pemicro/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools-scm
-, pyocd
-, pypemicro
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools-scm,
+  pyocd,
+  pypemicro,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-qi803s8fkrLizcCLeDRz7CTQ56NGLQ4PPwCbxiRigwc=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     pyocd
diff --git a/pkgs/development/python-modules/pyocd/default.nix b/pkgs/development/python-modules/pyocd/default.nix
index 1f09ed696da04..bb10f18811187 100644
--- a/pkgs/development/python-modules/pyocd/default.nix
+++ b/pkgs/development/python-modules/pyocd/default.nix
@@ -1,27 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, capstone_4
-, cmsis-pack-manager
-, colorama
-, importlib-metadata
-, importlib-resources
-, intelhex
-, intervaltree
-, lark
-, natsort
-, prettytable
-, pyelftools
-, pylink-square
-, pyusb
-, pyyaml
-, setuptools
-, setuptools-scm
-, typing-extensions
-, stdenv
-, hidapi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  capstone_4,
+  cmsis-pack-manager,
+  colorama,
+  importlib-metadata,
+  importlib-resources,
+  intelhex,
+  intervaltree,
+  lark,
+  natsort,
+  prettytable,
+  pyelftools,
+  pylink-square,
+  pyusb,
+  pyyaml,
+  setuptools-scm,
+  typing-extensions,
+  stdenv,
+  hidapi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -43,17 +43,11 @@ buildPythonPackage rec {
     })
   ];
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "libusb-package>=1.0,<2.0" ""
-  '';
+  pythonRemoveDeps = [ "libusb-package" ];
 
-  nativeBuildInputs = [
-    setuptools
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     capstone_4
     cmsis-pack-manager
     colorama
@@ -69,24 +63,27 @@ buildPythonPackage rec {
     pyusb
     pyyaml
     typing-extensions
-  ] ++ lib.optionals (!stdenv.isLinux) [
-    hidapi
-  ];
+  ] ++ lib.optionals (!stdenv.hostPlatform.isLinux) [ hidapi ];
 
-  pythonImportsCheck = [
-    "pyocd"
-  ];
+  pythonImportsCheck = [ "pyocd" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
+  disabledTests = [
+    # AttributeError: 'not_called' is not a valid assertion
+    # Upstream fix at https://github.com/pyocd/pyOCD/pull/1710
+    "test_transfer_err_not_flushed"
   ];
 
+  nativeCheckInputs = [ pytestCheckHook ];
+
   meta = with lib; {
     changelog = "https://github.com/pyocd/pyOCD/releases/tag/v${version}";
     description = "Python library for programming and debugging Arm Cortex-M microcontrollers";
     downloadPage = "https://github.com/pyocd/pyOCD";
     homepage = "https://pyocd.io";
     license = licenses.asl20;
-    maintainers = with maintainers; [ frogamic sbruder ];
+    maintainers = with maintainers; [
+      frogamic
+      sbruder
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pyocr/default.nix b/pkgs/development/python-modules/pyocr/default.nix
index 0d87538a1ce4f..7df733b680a0f 100644
--- a/pkgs/development/python-modules/pyocr/default.nix
+++ b/pkgs/development/python-modules/pyocr/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, stdenv
-, fetchFromGitLab
-, buildPythonPackage
-, pillow
-, tesseract
-, cuneiform
-, isPy3k
-, substituteAll
-, pytestCheckHook
-, setuptools
-, setuptools-scm
-, withTesseractSupport ? true
-, withCuneiformSupport ? stdenv.hostPlatform.isLinux
+{
+  lib,
+  stdenv,
+  fetchFromGitLab,
+  buildPythonPackage,
+  pillow,
+  tesseract,
+  cuneiform,
+  isPy3k,
+  substituteAll,
+  pytestCheckHook,
+  setuptools,
+  setuptools-scm,
+  withTesseractSupport ? true,
+  withCuneiformSupport ? stdenv.hostPlatform.isLinux,
 }:
 
 buildPythonPackage rec {
@@ -30,26 +31,35 @@ buildPythonPackage rec {
     hash = "sha256-gE0+qbHCwpDdxXFY+4rjVU2FbUSfSVrvrVMcWUk+9FU=";
   };
 
-  patches = [] ++ (lib.optional withTesseractSupport (substituteAll {
+  patches =
+    [ ]
+    ++ (lib.optional withTesseractSupport (substituteAll {
       src = ./paths-tesseract.patch;
       inherit tesseract;
       tesseractLibraryLocation = "${tesseract}/lib/libtesseract${stdenv.hostPlatform.extensions.sharedLibrary}";
-    })) ++ (lib.optional stdenv.hostPlatform.isLinux (substituteAll {
+    }))
+    ++ (lib.optional stdenv.hostPlatform.isLinux (substituteAll {
       src = ./paths-cuneiform.patch;
       inherit cuneiform;
     }));
 
   propagatedBuildInputs = [ pillow ];
 
-  nativeBuildInputs = [ setuptools setuptools-scm ];
+  nativeBuildInputs = [
+    setuptools
+    setuptools-scm
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     inherit (src.meta) homepage;
     changelog = "https://gitlab.gnome.org/World/OpenPaperwork/pyocr/-/blob/${version}/ChangeLog";
-    description = "A Python wrapper for Tesseract and Cuneiform";
+    description = "Python wrapper for Tesseract and Cuneiform";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ symphorien tomodachi94 ];
+    maintainers = with maintainers; [
+      symphorien
+      tomodachi94
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pyoctoprintapi/default.nix b/pkgs/development/python-modules/pyoctoprintapi/default.nix
index 8dfd9cdf57f36..4fecaf44b4394 100644
--- a/pkgs/development/python-modules/pyoctoprintapi/default.nix
+++ b/pkgs/development/python-modules/pyoctoprintapi/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-
-# propagated
-, aiohttp
-
-# tests
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+
+  # propagated
+  aiohttp,
+
+  # tests
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 let
@@ -29,17 +30,11 @@ buildPythonPackage {
     hash = "sha256-DKqkT0Wyxf4grXBqei9IYBGMOgPxjzuo955M/nHDLo8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
-  pythonImportsCheck = [
-    "pyoctoprintapi"
-  ];
+  pythonImportsCheck = [ "pyoctoprintapi" ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -51,6 +46,6 @@ buildPythonPackage {
     homepage = "https://github.com/rfleming71/pyoctoprintapi";
     changelog = "https://github.com/rfleming71/pyoctoprintapi/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers= with maintainers; [ hexa ];
+    maintainers = with maintainers; [ hexa ];
   };
 }
diff --git a/pkgs/development/python-modules/pyodbc/default.nix b/pkgs/development/python-modules/pyodbc/default.nix
index da48d0d828ae9..5e224805d14dd 100644
--- a/pkgs/development/python-modules/pyodbc/default.nix
+++ b/pkgs/development/python-modules/pyodbc/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPyPy
-, pythonOlder
-, unixODBC
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  pythonOlder,
+  unixODBC,
 }:
 
 buildPythonPackage rec {
@@ -19,19 +20,15 @@ buildPythonPackage rec {
   };
 
   nativeBuildInputs = [
-    unixODBC  # for odbc_config
+    unixODBC # for odbc_config
   ];
 
-  buildInputs = [
-    unixODBC
-  ];
+  buildInputs = [ unixODBC ];
 
   # Tests require a database server
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyodbc"
-  ];
+  pythonImportsCheck = [ "pyodbc" ];
 
   meta = with lib; {
     description = "Python ODBC module to connect to almost any database";
diff --git a/pkgs/development/python-modules/pyogg/default.nix b/pkgs/development/python-modules/pyogg/default.nix
index 77f63870a2960..62e5509d2e445 100644
--- a/pkgs/development/python-modules/pyogg/default.nix
+++ b/pkgs/development/python-modules/pyogg/default.nix
@@ -1,14 +1,14 @@
-{ stdenv
-, lib
-, fetchPypi
-, buildPythonPackage
-, libvorbis
-, flac
-, libogg
-, libopus
-, opusfile
-, substituteAll
-, python
+{
+  stdenv,
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  libvorbis,
+  flac,
+  libogg,
+  libopus,
+  opusfile,
+  substituteAll,
 }:
 
 buildPythonPackage rec {
@@ -41,17 +41,20 @@ buildPythonPackage rec {
   doCheck = false;
 
   # patch has dos style eol
-  patchFlags = [ "-p1" "--binary" ];
+  patchFlags = [
+    "-p1"
+    "--binary"
+  ];
   patches = [
     (substituteAll {
       src = ./pyogg-paths.patch;
-      flacLibPath="${flac.out}/lib/libFLAC${stdenv.hostPlatform.extensions.sharedLibrary}";
-      oggLibPath="${libogg}/lib/libogg${stdenv.hostPlatform.extensions.sharedLibrary}";
-      vorbisLibPath="${libvorbis}/lib/libvorbis${stdenv.hostPlatform.extensions.sharedLibrary}";
-      vorbisFileLibPath="${libvorbis}/lib/libvorbisfile${stdenv.hostPlatform.extensions.sharedLibrary}";
-      vorbisEncLibPath="${libvorbis}/lib/libvorbisenc${stdenv.hostPlatform.extensions.sharedLibrary}";
-      opusLibPath="${libopus}/lib/libopus${stdenv.hostPlatform.extensions.sharedLibrary}";
-      opusFileLibPath="${opusfile}/lib/libopusfile${stdenv.hostPlatform.extensions.sharedLibrary}";
+      flacLibPath = "${flac.out}/lib/libFLAC${stdenv.hostPlatform.extensions.sharedLibrary}";
+      oggLibPath = "${libogg}/lib/libogg${stdenv.hostPlatform.extensions.sharedLibrary}";
+      vorbisLibPath = "${libvorbis}/lib/libvorbis${stdenv.hostPlatform.extensions.sharedLibrary}";
+      vorbisFileLibPath = "${libvorbis}/lib/libvorbisfile${stdenv.hostPlatform.extensions.sharedLibrary}";
+      vorbisEncLibPath = "${libvorbis}/lib/libvorbisenc${stdenv.hostPlatform.extensions.sharedLibrary}";
+      opusLibPath = "${libopus}/lib/libopus${stdenv.hostPlatform.extensions.sharedLibrary}";
+      opusFileLibPath = "${opusfile}/lib/libopusfile${stdenv.hostPlatform.extensions.sharedLibrary}";
     })
   ];
 
diff --git a/pkgs/development/python-modules/pyogrio/default.nix b/pkgs/development/python-modules/pyogrio/default.nix
new file mode 100644
index 0000000000000..63f798d21d859
--- /dev/null
+++ b/pkgs/development/python-modules/pyogrio/default.nix
@@ -0,0 +1,72 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+
+  certifi,
+  cython,
+  gdal,
+  numpy,
+  packaging,
+  setuptools,
+  versioneer,
+  wheel,
+}:
+
+buildPythonPackage rec {
+  pname = "pyogrio";
+  version = "0.9.0";
+  pyproject = true;
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "geopandas";
+    repo = "pyogrio";
+    rev = "v${version}";
+    hash = "sha256-HC7+dDehDwEIDQnCMYrsC1jE78AyfHqEhfOZLYSzTIw=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "versioneer[toml]==0.28" "versioneer[toml]"
+  '';
+
+  nativeBuildInputs = [
+    cython
+    gdal # for gdal-config
+    setuptools
+    versioneer
+    wheel
+  ] ++ versioneer.optional-dependencies.toml;
+
+  buildInputs = [ gdal ];
+
+  propagatedBuildInputs = [
+    certifi
+    numpy
+    packaging
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  preCheck = ''
+    python setup.py build_ext --inplace
+  '';
+
+  pytestFlagsArray = [
+    # disable tests which require network access
+    "-m 'not network'"
+  ];
+
+  pythonImportsCheck = [ "pyogrio" ];
+
+  meta = {
+    description = "Vectorized spatial vector file format I/O using GDAL/OGR";
+    homepage = "https://pyogrio.readthedocs.io/";
+    changelog = "https://github.com/geopandas/pyogrio/blob/${src.rev}/CHANGES.md";
+    license = lib.licenses.mit;
+    maintainers = lib.teams.geospatial.members;
+  };
+}
diff --git a/pkgs/development/python-modules/pyombi/default.nix b/pkgs/development/python-modules/pyombi/default.nix
index 912c076ae3582..5362e490e7e78 100644
--- a/pkgs/development/python-modules/pyombi/default.nix
+++ b/pkgs/development/python-modules/pyombi/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     sha256 = "1ykbmdc2v05ly9q358j7g73ma9fsqdlclc8i0k1yd0bn7219icpx";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/pyomo/default.nix b/pkgs/development/python-modules/pyomo/default.nix
index 35ab0ecec5095..6e8801ce12b84 100644
--- a/pkgs/development/python-modules/pyomo/default.nix
+++ b/pkgs/development/python-modules/pyomo/default.nix
@@ -1,16 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, parameterized
-, ply
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  parameterized,
+  ply,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyomo";
-  version = "6.7.1";
-  format = "setuptools";
+  version = "6.8.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -18,21 +20,19 @@ buildPythonPackage rec {
     repo = "pyomo";
     owner = "pyomo";
     rev = "refs/tags/${version}";
-    hash = "sha256-eTItw+wYo5lCla4oKSF97N4TFajjFtCMMq4DU9ahi1U=";
+    hash = "sha256-+r8HyIEFcWB6WHwKbos8IGRAmekRsPDJWbtQ5mVpHrE=";
   };
 
-  propagatedBuildInputs = [
-    ply
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ ply ];
 
   nativeCheckInputs = [
     parameterized
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pyomo"
-  ];
+  pythonImportsCheck = [ "pyomo" ];
 
   preCheck = ''
     export HOME=$(mktemp -d);
@@ -53,10 +53,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python Optimization Modeling Objects";
-    mainProgram = "pyomo";
-    homepage = "http://pyomo.org";
+    homepage = "http://www.pyomo.org/";
     changelog = "https://github.com/Pyomo/pyomo/releases/tag/${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
+    mainProgram = "pyomo";
   };
 }
diff --git a/pkgs/development/python-modules/pyopencl/default.nix b/pkgs/development/python-modules/pyopencl/default.nix
index 045229a5a60c8..edf4a4bfe7a25 100644
--- a/pkgs/development/python-modules/pyopencl/default.nix
+++ b/pkgs/development/python-modules/pyopencl/default.nix
@@ -1,73 +1,97 @@
-{ lib
-, stdenv
-, fetchPypi
-, buildPythonPackage
-, fetchpatch
-, appdirs
-, cffi
-, decorator
-, mako
-, mesa_drivers
-, numpy
-, ocl-icd
-, oldest-supported-numpy
-, opencl-headers
-, platformdirs
-, pybind11
-, pytest
-, pytestCheckHook
-, pytools
-, setuptools
-, six
-, wheel
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  buildPythonPackage,
+
+  # build-system
+  cmake,
+  nanobind,
+  ninja,
+  numpy,
+  scikit-build-core,
+
+  # buildInputs
+  opencl-headers,
+  pybind11,
+  darwin,
+  ocl-icd,
+
+  # dependencies
+  platformdirs,
+  pytools,
+
+  # tests
+  pytestCheckHook,
 }:
 
 let
   os-specific-buildInputs =
-    if stdenv.isDarwin then [ mesa_drivers.dev ] else [ ocl-icd ];
-in buildPythonPackage rec {
+    if stdenv.hostPlatform.isDarwin then [ darwin.apple_sdk.frameworks.OpenCL ] else [ ocl-icd ];
+in
+buildPythonPackage rec {
   pname = "pyopencl";
-  version = "2024.1";
-  format = "pyproject";
+  version = "2024.2.7";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-7NVy7pQK2L2hY5w6e+tog0/JqYrX6z9uAarE99nUusE=";
+  src = fetchFromGitHub {
+    owner = "inducer";
+    repo = "pyopencl";
+    rev = "refs/tags/v${version}";
+    fetchSubmodules = true;
+    hash = "sha256-VeaEDYnGfMYf9/WqMIZ9g4KounD48eWF3Romt79RMEQ=";
   };
 
-  nativeBuildInputs = [
-    oldest-supported-numpy
-    setuptools
-    wheel
+  build-system = [
+    cmake
+    nanobind
+    ninja
+    numpy
+    scikit-build-core
   ];
 
-  buildInputs = [ opencl-headers pybind11 ] ++ os-specific-buildInputs;
+  dontUseCmakeConfigure = true;
+
+  buildInputs = [
+    opencl-headers
+    pybind11
+  ] ++ os-specific-buildInputs;
 
-  propagatedBuildInputs = [
-    appdirs
-    cffi
-    decorator
-    mako
+  dependencies = [
     numpy
     platformdirs
     pytools
-    six
   ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
-  preBuild = ''
+  preCheck = ''
     export HOME=$(mktemp -d)
+
+    # https://github.com/NixOS/nixpkgs/issues/255262
+    cd $out
   '';
 
-  # gcc: error: pygpu_language_opencl.cpp: No such file or directory
+  # https://github.com/inducer/pyopencl/issues/784 Note that these failing
+  # tests are all the tests that are available.
   doCheck = false;
 
-  pythonImportsCheck = [ "pyopencl" ];
+  pythonImportsCheck = [
+    "pyopencl"
+    "pyopencl.array"
+    "pyopencl.cltypes"
+    "pyopencl.compyte"
+    "pyopencl.elementwise"
+    "pyopencl.tools"
+  ];
 
-  meta = with lib; {
+  meta = {
     description = "Python wrapper for OpenCL";
     homepage = "https://github.com/pyopencl/pyopencl";
-    license = licenses.mit;
+    changelog = "https://github.com/inducer/pyopencl/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+    # ld: symbol(s) not found for architecture arm64
+    broken = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64;
   };
 }
diff --git a/pkgs/development/python-modules/pyopengl-accelerate/default.nix b/pkgs/development/python-modules/pyopengl-accelerate/default.nix
index 4dc8803fa037f..f32d555d7589e 100644
--- a/pkgs/development/python-modules/pyopengl-accelerate/default.nix
+++ b/pkgs/development/python-modules/pyopengl-accelerate/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonAtLeast
-, fetchPypi
-, cython
-, numpy
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cython,
+  numpy,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyopengl/default.nix b/pkgs/development/python-modules/pyopengl/default.nix
index ddffa534ab85c..a4c4b1cbf21d7 100644
--- a/pkgs/development/python-modules/pyopengl/default.nix
+++ b/pkgs/development/python-modules/pyopengl/default.nix
@@ -1,8 +1,11 @@
-{ lib, stdenv
-, buildPythonPackage
-, fetchPypi
-, pkgs
-, pillow
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pkgs,
+  pillow,
+  mesa,
 }:
 
 buildPythonPackage rec {
@@ -18,42 +21,46 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ pillow ];
 
-  patchPhase = let
-    ext = stdenv.hostPlatform.extensions.sharedLibrary; in lib.optionalString (!stdenv.isDarwin) ''
-    # Theses lines are patching the name of dynamic libraries
-    # so pyopengl can find them at runtime.
-    substituteInPlace OpenGL/platform/glx.py \
-      --replace '"OpenGL",' '"${pkgs.libGL}/lib/libOpenGL${ext}",' \
-      --replace '"GL",' '"${pkgs.libGL}/lib/libGL${ext}",' \
-      --replace '"GLU",' '"${pkgs.libGLU}/lib/libGLU${ext}",' \
-      --replace '"GLX",' '"${pkgs.libglvnd}/lib/libGLX${ext}",' \
-      --replace '"glut",' '"${pkgs.freeglut}/lib/libglut${ext}",' \
-      --replace '"GLESv1_CM",' '"${pkgs.libGL}/lib/libGLESv1_CM${ext}",' \
-      --replace '"GLESv2",' '"${pkgs.libGL}/lib/libGLESv2${ext}",' \
-      --replace '"gle",' '"${pkgs.gle}/lib/libgle${ext}",' \
-      --replace "'EGL'" "'${pkgs.libGL}/lib/libEGL${ext}'"
-    substituteInPlace OpenGL/platform/egl.py \
-      --replace "('OpenGL','GL')" "('${pkgs.libGL}/lib/libOpenGL${ext}', '${pkgs.libGL}/lib/libGL${ext}')" \
-      --replace "'GLU'," "'${pkgs.libGLU}/lib/libGLU${ext}'," \
-      --replace "'glut'," "'${pkgs.freeglut}/lib/libglut${ext}'," \
-      --replace "'GLESv1_CM'," "'${pkgs.libGL}/lib/libGLESv1_CM${ext}'," \
-      --replace "'GLESv2'," "'${pkgs.libGL}/lib/libGLESv2${ext}'," \
-      --replace "'gle'," '"${pkgs.gle}/lib/libgle${ext}",' \
-      --replace "'EGL'," "'${pkgs.libGL}/lib/libEGL${ext}',"
-    substituteInPlace OpenGL/platform/darwin.py \
-      --replace "'OpenGL'," "'${pkgs.libGL}/lib/libGL${ext}'," \
-      --replace "'GLUT'," "'${pkgs.freeglut}/lib/libglut${ext}',"
-  '' + ''
-    # https://github.com/NixOS/nixpkgs/issues/76822
-    # pyopengl introduced a new "robust" way of loading libraries in 3.1.4.
-    # The later patch of the filepath does not work anymore because
-    # pyopengl takes the "name" (for us: the path) and tries to add a
-    # few suffix during its loading phase.
-    # The following patch put back the "name" (i.e. the path) in the
-    # list of possible files.
-    substituteInPlace OpenGL/platform/ctypesloader.py \
-      --replace "filenames_to_try = [base_name]" "filenames_to_try = [name]"
-  '';
+  patchPhase =
+    let
+      ext = stdenv.hostPlatform.extensions.sharedLibrary;
+    in
+    lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
+      # Theses lines are patching the name of dynamic libraries
+      # so pyopengl can find them at runtime.
+      substituteInPlace OpenGL/platform/glx.py \
+        --replace '"OpenGL",' '"${pkgs.libGL}/lib/libOpenGL${ext}",' \
+        --replace '"GL",' '"${pkgs.libGL}/lib/libGL${ext}",' \
+        --replace '"GLU",' '"${pkgs.libGLU}/lib/libGLU${ext}",' \
+        --replace '"GLX",' '"${pkgs.libglvnd}/lib/libGLX${ext}",' \
+        --replace '"glut",' '"${pkgs.libglut}/lib/libglut${ext}",' \
+        --replace '"GLESv1_CM",' '"${pkgs.libGL}/lib/libGLESv1_CM${ext}",' \
+        --replace '"GLESv2",' '"${pkgs.libGL}/lib/libGLESv2${ext}",' \
+        --replace '"gle",' '"${pkgs.gle}/lib/libgle${ext}",' \
+        --replace "'EGL'" "'${pkgs.libGL}/lib/libEGL${ext}'"
+      substituteInPlace OpenGL/platform/egl.py \
+        --replace "('OpenGL','GL')" "('${pkgs.libGL}/lib/libOpenGL${ext}', '${pkgs.libGL}/lib/libGL${ext}')" \
+        --replace "'GLU'," "'${pkgs.libGLU}/lib/libGLU${ext}'," \
+        --replace "'glut'," "'${pkgs.libglut}/lib/libglut${ext}'," \
+        --replace "'GLESv1_CM'," "'${pkgs.libGL}/lib/libGLESv1_CM${ext}'," \
+        --replace "'GLESv2'," "'${pkgs.libGL}/lib/libGLESv2${ext}'," \
+        --replace "'gle'," '"${pkgs.gle}/lib/libgle${ext}",' \
+        --replace "'EGL'," "'${pkgs.libGL}/lib/libEGL${ext}',"
+      substituteInPlace OpenGL/platform/darwin.py \
+        --replace "'OpenGL'," "'${pkgs.libGL}/lib/libGL${ext}'," \
+        --replace "'GLUT'," "'${pkgs.libglut}/lib/libglut${ext}',"
+    ''
+    + ''
+      # https://github.com/NixOS/nixpkgs/issues/76822
+      # pyopengl introduced a new "robust" way of loading libraries in 3.1.4.
+      # The later patch of the filepath does not work anymore because
+      # pyopengl takes the "name" (for us: the path) and tries to add a
+      # few suffix during its loading phase.
+      # The following patch put back the "name" (i.e. the path) in the
+      # list of possible files.
+      substituteInPlace OpenGL/platform/ctypesloader.py \
+        --replace "filenames_to_try = [base_name]" "filenames_to_try = [name]"
+    '';
 
   # Need to fix test runner
   # Tests have many dependencies
@@ -74,8 +81,6 @@ buildPythonPackage rec {
       liberal BSD-style Open-Source license.
     '';
     license = licenses.bsd3;
-    platforms = platforms.mesaPlatforms;
+    inherit (mesa.meta) platforms;
   };
-
-
 }
diff --git a/pkgs/development/python-modules/pyopengltk/default.nix b/pkgs/development/python-modules/pyopengltk/default.nix
new file mode 100644
index 0000000000000..b50780336e508
--- /dev/null
+++ b/pkgs/development/python-modules/pyopengltk/default.nix
@@ -0,0 +1,51 @@
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pyopengl,
+  writers,
+  tkinter,
+  pyopengltk,
+}:
+
+buildPythonPackage rec {
+  pname = "pyopengltk";
+  version = "0.0.4";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "jonwright";
+    repo = "pyopengltk";
+    rev = "dbed7b7d01cc5a90fd3e79769259b1dc0894b673"; # there is no tag
+    hash = "sha256-hQoTj8h/L5VZgmq7qgRImLBKZMecrilyir5Ar6ne4S0=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    pyopengl
+    tkinter
+  ];
+
+  doCheck = false;
+
+  pythonImportsCheck = [ "pyopengltk" ];
+
+  passthru.tests = {
+    cube = writers.writePython3 "cube" {
+      libraries = [ pyopengltk ];
+      doCheck = false;
+    } (builtins.readFile "${src}/examples/cube.py");
+  };
+
+  meta = {
+    description = "OpenGL frame for Python/Tkinter via ctypes and pyopengl";
+    homepage = "https://github.com/jonwright/pyopengltk";
+    maintainers = with lib.maintainers; [ sigmanificient ];
+    license = lib.licenses.mit;
+    # not supported yet, see: https://github.com/jonwright/pyopengltk/issues/12
+    broken = stdenv.hostPlatform.isDarwin;
+  };
+}
diff --git a/pkgs/development/python-modules/pyopenssl/default.nix b/pkgs/development/python-modules/pyopenssl/default.nix
index 31e9e810c9edd..0d8ae7f649eb0 100644
--- a/pkgs/development/python-modules/pyopenssl/default.nix
+++ b/pkgs/development/python-modules/pyopenssl/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, openssl
-, setuptools
-, cryptography
-, pytestCheckHook
-, pretend
-, sphinxHook
-, sphinx-rtd-theme
-, flaky
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  openssl,
+  setuptools,
+  cryptography,
+  pytestCheckHook,
+  pretend,
+  sphinxHook,
+  sphinx-rtd-theme,
+  pytest-rerunfailures,
 }:
 
 buildPythonPackage rec {
   pname = "pyopenssl";
-  version = "24.0.0";
+  version = "24.1.0";
   pyproject = true;
 
   src = fetchPypi {
     pname = "pyOpenSSL";
     inherit version;
-    hash = "sha256-aqMwOak//6RWPmVbYdETZNASZL6My0mQYQHgKjNFML8=";
+    hash = "sha256-yr7Uv6pd+fGhbA72Sgy2Uxi1zQd6ftp9aXATHKL0Gm8=";
   };
 
   outputs = [
@@ -41,13 +42,11 @@ buildPythonPackage rec {
     sed -i "/cryptography/ s/,<[0-9]*//g" setup.py
   '';
 
-  propagatedBuildInputs = [
-    cryptography
-  ];
+  propagatedBuildInputs = [ cryptography ];
 
   nativeCheckInputs = [
-    flaky
     pretend
+    pytest-rerunfailures
     pytestCheckHook
   ];
 
@@ -57,46 +56,50 @@ buildPythonPackage rec {
     export LANG="en_US.UTF-8"
   '';
 
-  disabledTests = [
-    # https://github.com/pyca/pyopenssl/issues/692
-    # These tests, we disable always.
-    "test_set_default_verify_paths"
-    "test_fallback_default_verify_paths"
-    # https://github.com/pyca/pyopenssl/issues/768
-    "test_wantWriteError"
-    # https://github.com/pyca/pyopenssl/issues/1043
-    "test_alpn_call_failure"
-  ] ++ lib.optionals (lib.hasPrefix "libressl" openssl.meta.name) [
-    # https://github.com/pyca/pyopenssl/issues/791
-    # These tests, we disable in the case that libressl is passed in as openssl.
-    "test_op_no_compression"
-    "test_npn_advertise_error"
-    "test_npn_select_error"
-    "test_npn_client_fail"
-    "test_npn_success"
-    "test_use_certificate_chain_file_unicode"
-    "test_use_certificate_chain_file_bytes"
-    "test_add_extra_chain_cert"
-    "test_set_session_id_fail"
-    "test_verify_with_revoked"
-    "test_set_notAfter"
-    "test_set_notBefore"
-  ] ++ lib.optionals (lib.versionAtLeast (lib.getVersion openssl.name) "1.1") [
-    # these tests are extremely tightly wed to the exact output of the openssl cli tool, including exact punctuation.
-    "test_dump_certificate"
-    "test_dump_privatekey_text"
-    "test_dump_certificate_request"
-    "test_export_text"
-  ] ++ lib.optionals stdenv.is32bit [
-    # https://github.com/pyca/pyopenssl/issues/974
-    "test_verify_with_time"
-  ];
+  disabledTests =
+    [
+      # https://github.com/pyca/pyopenssl/issues/692
+      # These tests, we disable always.
+      "test_set_default_verify_paths"
+      "test_fallback_default_verify_paths"
+      # https://github.com/pyca/pyopenssl/issues/768
+      "test_wantWriteError"
+      # https://github.com/pyca/pyopenssl/issues/1043
+      "test_alpn_call_failure"
+    ]
+    ++ lib.optionals (lib.hasPrefix "libressl" openssl.meta.name) [
+      # https://github.com/pyca/pyopenssl/issues/791
+      # These tests, we disable in the case that libressl is passed in as openssl.
+      "test_op_no_compression"
+      "test_npn_advertise_error"
+      "test_npn_select_error"
+      "test_npn_client_fail"
+      "test_npn_success"
+      "test_use_certificate_chain_file_unicode"
+      "test_use_certificate_chain_file_bytes"
+      "test_add_extra_chain_cert"
+      "test_set_session_id_fail"
+      "test_verify_with_revoked"
+      "test_set_notAfter"
+      "test_set_notBefore"
+    ]
+    ++ lib.optionals (lib.versionAtLeast (lib.getVersion openssl.name) "1.1") [
+      # these tests are extremely tightly wed to the exact output of the openssl cli tool, including exact punctuation.
+      "test_dump_certificate"
+      "test_dump_privatekey_text"
+      "test_dump_certificate_request"
+      "test_export_text"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.is32bit [
+      # https://github.com/pyca/pyopenssl/issues/974
+      "test_verify_with_time"
+    ];
 
   meta = with lib; {
     description = "Python wrapper around the OpenSSL library";
     homepage = "https://github.com/pyca/pyopenssl";
     changelog = "https://github.com/pyca/pyopenssl/blob/${version}/CHANGELOG.rst";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyopenuv/default.nix b/pkgs/development/python-modules/pyopenuv/default.nix
index db03bb04b422a..03354190a1074 100644
--- a/pkgs/development/python-modules/pyopenuv/default.nix
+++ b/pkgs/development/python-modules/pyopenuv/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiohttp
-, aresponses
-, backoff
-, buildPythonPackage
-, certifi
-, fetchFromGitHub
-, poetry-core
-, pytest-aiohttp
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aresponses,
+  backoff,
+  buildPythonPackage,
+  certifi,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-r+StbiU77/1dz41tCseleIWjiIvuvRveVgPNr3n4CEY=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -50,9 +49,7 @@ buildPythonPackage rec {
     "examples/"
   ];
 
-  pythonImportsCheck = [
-    "pyopenuv"
-  ];
+  pythonImportsCheck = [ "pyopenuv" ];
 
   meta = with lib; {
     description = "Python API to retrieve data from openuv.io";
diff --git a/pkgs/development/python-modules/pyopenweathermap/default.nix b/pkgs/development/python-modules/pyopenweathermap/default.nix
new file mode 100644
index 0000000000000..6b316dd72cc75
--- /dev/null
+++ b/pkgs/development/python-modules/pyopenweathermap/default.nix
@@ -0,0 +1,52 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  aiohttp,
+
+  # tests
+  pytest-asyncio,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "pyopenweathermap";
+  version = "0.1.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "freekode";
+    repo = "pyopenweathermap";
+    # https://github.com/freekode/pyopenweathermap/issues/2
+    rev = "refs/tags/v${version}";
+    hash = "sha256-OGalKlZP4pKKWKypjM5nVesvFAGLgvvRjMWzrEIp+VQ=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [ aiohttp ];
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [
+    "-m"
+    "'not network'"
+  ];
+
+  pythonImportsCheck = [ "pyopenweathermap" ];
+
+  meta = with lib; {
+    description = "Python library for OpenWeatherMap API for Home Assistant";
+    homepage = "https://github.com/freekode/pyopenweathermap";
+    license = licenses.mit;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyopnsense/default.nix b/pkgs/development/python-modules/pyopnsense/default.nix
index 7fdd6170a3774..a59440c9298d1 100644
--- a/pkgs/development/python-modules/pyopnsense/default.nix
+++ b/pkgs/development/python-modules/pyopnsense/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fixtures
-, mock
-, pbr
-, pytestCheckHook
-, pythonOlder
-, requests
-, testtools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fixtures,
+  mock,
+  pbr,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  testtools,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     testtools
   ];
 
-  pythonImportsCheck = [
-    "pyopnsense"
-  ];
+  pythonImportsCheck = [ "pyopnsense" ];
 
   meta = with lib; {
     description = "Python client for the OPNsense API";
diff --git a/pkgs/development/python-modules/pyoppleio/default.nix b/pkgs/development/python-modules/pyoppleio/default.nix
index 4487647ca81d8..b9ef0e23a73f3 100644
--- a/pkgs/development/python-modules/pyoppleio/default.nix
+++ b/pkgs/development/python-modules/pyoppleio/default.nix
@@ -1,14 +1,16 @@
-{ lib
-, buildPythonPackage
-, crc16
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  crc16,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyoppleio";
   version = "1.0.7";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -17,22 +19,20 @@ buildPythonPackage rec {
     hash = "sha256-S1w3pPqhX903kkXUq9ALz0+zRvNGOimLughRRVKjV8E=";
   };
 
-  propagatedBuildInputs = [
-    crc16
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ crc16 ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyoppleio"
-  ];
+  pythonImportsCheck = [ "pyoppleio" ];
 
   meta = with lib; {
     description = "Library for interacting with OPPLE lights";
-    mainProgram = "oppleio";
     homepage = "https://github.com/jedmeng/python-oppleio";
-    license = with licenses; [ asl20 ];
+    license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "oppleio";
   };
 }
diff --git a/pkgs/development/python-modules/pyorthanc/default.nix b/pkgs/development/python-modules/pyorthanc/default.nix
index 3c5b2ec5b78d5..a65d8d6b983bd 100644
--- a/pkgs/development/python-modules/pyorthanc/default.nix
+++ b/pkgs/development/python-modules/pyorthanc/default.nix
@@ -1,40 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pythonRelaxDepsHook
-, poetry-core
-, httpx
-, pydicom
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  poetry-core,
+  httpx,
+  pydicom,
 }:
 
 buildPythonPackage rec {
   pname = "pyorthanc";
-  version = "1.16.1";
+  version = "1.18.0";
   disabled = pythonOlder "3.8";
 
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "gacou54";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-6l3L0YUAqedyRjlQ6K3SaAMdGK2C0AeKpJj6MyXi4RA=";
+    hash = "sha256-ObZjTiEB4a7ForsugzKZDdIsTEWOX1zbv53ZJ4AllHE=";
   };
 
-  nativeBuildInputs = [ pythonRelaxDepsHook poetry-core ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [ httpx pydicom ];
-
-  pythonRelaxDeps = [
-    "httpx"
+  dependencies = [
+    httpx
+    pydicom
   ];
 
-  doCheck = false;  # requires orthanc server (not in Nixpkgs)
+  doCheck = false; # requires orthanc server (not in Nixpkgs)
 
-  pythonImportsCheck = [
-    "pyorthanc"
-  ];
+  pythonImportsCheck = [ "pyorthanc" ];
 
   meta = with lib; {
     description = "Python library that wraps the Orthanc REST API";
diff --git a/pkgs/development/python-modules/pyosf/default.nix b/pkgs/development/python-modules/pyosf/default.nix
index 3a23d687b8e17..be9f9d10153b2 100644
--- a/pkgs/development/python-modules/pyosf/default.nix
+++ b/pkgs/development/python-modules/pyosf/default.nix
@@ -1,14 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "pyosf";
   version = "1.0.5";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -21,21 +23,19 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "'pytest-runner', " ""
+      --replace-fail "'pytest-runner', " ""
   '';
 
   preBuild = "export HOME=$TMP";
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ requests ];
 
   # Tests require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyosf"
-  ];
+  pythonImportsCheck = [ "pyosf" ];
 
   meta = with lib; {
     description = "Pure Python library for simple sync with Open Science Framework";
diff --git a/pkgs/development/python-modules/pyosmium/default.nix b/pkgs/development/python-modules/pyosmium/default.nix
index 08599707498e1..fabca6700316b 100644
--- a/pkgs/development/python-modules/pyosmium/default.nix
+++ b/pkgs/development/python-modules/pyosmium/default.nix
@@ -1,41 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cmake
-, libosmium
-, protozero
-, boost
-, expat
-, bzip2
-, zlib
-, pybind11
-, pythonOlder
-, pytest-httpserver
-, pytestCheckHook
-, shapely
-, werkzeug
-, isPyPy
-, lz4
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cmake,
+  libosmium,
+  protozero,
+  boost,
+  expat,
+  bzip2,
+  zlib,
+  pybind11,
+  pythonOlder,
+  pytest-httpserver,
+  pytestCheckHook,
+  setuptools,
+  shapely,
+  werkzeug,
+  isPyPy,
+  lz4,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "pyosmium";
-  version = "3.7.0";
-  format = "setuptools";
+  version = "4.0.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6" || isPyPy;
+  disabled = pythonOlder "3.7" || isPyPy;
 
   src = fetchFromGitHub {
     owner = "osmcode";
-    repo = pname;
+    repo = "pyosmium";
     rev = "refs/tags/v${version}";
-    hash = "sha256-DBFDAKNrD93MRXjoM8dIJQ/HJ9Aj8oMJuPVQxTrKYfI=";
+    hash = "sha256-HYp1MzXSa0tx0hY0JyMf2bmEvm5YuS2R+o25TsO8J6I=";
   };
 
-  nativeBuildInputs = [
-    cmake
-  ];
+  build-system = [ setuptools ];
+
+  nativeBuildInputs = [ cmake ];
 
   buildInputs = [
     libosmium
@@ -48,9 +50,7 @@ buildPythonPackage rec {
     lz4
   ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  dependencies = [ requests ];
 
   preBuild = "cd ..";
 
@@ -61,11 +61,13 @@ buildPythonPackage rec {
     pytest-httpserver
   ];
 
-  meta = with lib; {
+  __darwinAllowLocalNetworking = true;
+
+  meta = {
     description = "Python bindings for libosmium";
     homepage = "https://osmcode.org/pyosmium";
     changelog = "https://github.com/osmcode/pyosmium/blob/v${version}/CHANGELOG.md";
-    license = licenses.bsd2;
-    maintainers = with maintainers; [ sikmir ];
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ sikmir ];
   };
 }
diff --git a/pkgs/development/python-modules/pyosohotwaterapi/default.nix b/pkgs/development/python-modules/pyosohotwaterapi/default.nix
index bd2b10976a070..f2af54a279bcb 100644
--- a/pkgs/development/python-modules/pyosohotwaterapi/default.nix
+++ b/pkgs/development/python-modules/pyosohotwaterapi/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, loguru
-, numpy
-, pythonOlder
-, setuptools
-, unasync
-, urllib3
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  loguru,
+  numpy,
+  pythonOlder,
+  setuptools,
+  unasync,
+  urllib3,
 }:
 
 buildPythonPackage rec {
@@ -24,18 +25,15 @@ buildPythonPackage rec {
     hash = "sha256-7FLGmmndrFqSl4oC8QFIYNlFJPr+xbiZG5ZRt4vx8+s=";
   };
 
-  postPatch = ''
-    # https://github.com/osohotwateriot/apyosohotwaterapi/pull/3
-    substituteInPlace requirements.txt \
-      --replace "pre-commit" ""
-  '';
+  # https://github.com/osohotwateriot/apyosohotwaterapi/pull/3
+  pythonRemoveDeps = [ "pre-commit" ];
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     unasync
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     loguru
     numpy
@@ -49,9 +47,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "apyosoenergyapi"
-  ];
+  pythonImportsCheck = [ "apyosoenergyapi" ];
 
   meta = with lib; {
     description = "Module for using the OSO Hotwater API";
diff --git a/pkgs/development/python-modules/pyotgw/default.nix b/pkgs/development/python-modules/pyotgw/default.nix
index 0283116b2160c..03a07846b89b9 100644
--- a/pkgs/development/python-modules/pyotgw/default.nix
+++ b/pkgs/development/python-modules/pyotgw/default.nix
@@ -2,7 +2,6 @@
   lib,
   buildPythonPackage,
   fetchFromGitHub,
-  pyserial-asyncio,
   pyserial-asyncio-fast,
   pytest-asyncio,
   pytestCheckHook,
diff --git a/pkgs/development/python-modules/pyotp/default.nix b/pkgs/development/python-modules/pyotp/default.nix
index df209f092bc50..312a229c10c16 100644
--- a/pkgs/development/python-modules/pyotp/default.nix
+++ b/pkgs/development/python-modules/pyotp/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-NGtmQuDb3eO0/1qTC2ZMqCq/oRY1btSMxCx9ZZDTb2M=";
   };
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   pythonImportsCheck = [ "pyotp" ];
 
diff --git a/pkgs/development/python-modules/pyoutbreaksnearme/default.nix b/pkgs/development/python-modules/pyoutbreaksnearme/default.nix
index 5aa9352f7a4cc..45b6c10ace184 100644
--- a/pkgs/development/python-modules/pyoutbreaksnearme/default.nix
+++ b/pkgs/development/python-modules/pyoutbreaksnearme/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, certifi
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, ujson
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  certifi,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  ujson,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     hash = "sha256-oR/DApOxNSSczrBeH4sytd/vasbD4rA1poW4zNoeAnU=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -52,9 +51,7 @@ buildPythonPackage rec {
     "examples/"
   ];
 
-  pythonImportsCheck = [
-    "pyoutbreaksnearme"
-  ];
+  pythonImportsCheck = [ "pyoutbreaksnearme" ];
 
   meta = with lib; {
     description = "Library for retrieving data from for Outbreaks Near Me";
diff --git a/pkgs/development/python-modules/pyoverkiz/default.nix b/pkgs/development/python-modules/pyoverkiz/default.nix
index ce40b9c2a9ec7..e0efa2fd575f3 100644
--- a/pkgs/development/python-modules/pyoverkiz/default.nix
+++ b/pkgs/development/python-modules/pyoverkiz/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, aiohttp
-, attrs
-, backoff
-, backports-strenum
-, boto3
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pyhumps
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, warrant-lite
+{
+  lib,
+  aiohttp,
+  attrs,
+  backoff,
+  backports-strenum,
+  boto3,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pyhumps,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  warrant-lite,
 }:
 
 buildPythonPackage rec {
   pname = "pyoverkiz";
-  version = "1.13.10";
+  version = "1.14.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -25,36 +26,26 @@ buildPythonPackage rec {
     owner = "iMicknl";
     repo = "python-overkiz-api";
     rev = "refs/tags/v${version}";
-    hash = "sha256-05S0tCfCXgvkheUBVDGX8my0c7SCi/ran2emjaGWd9s=";
+    hash = "sha256-mpD8seRGZZ+1Rgg1ADFiFgYZ1JmLRNdscRwfXIK6Pr4=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail 'pyhumps = "^3.0.2,!=3.7.3"' 'pyhumps = "^3.0.2"'
-  '';
-
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     aiohttp
     attrs
     backoff
-    backports-strenum
     boto3
     pyhumps
     warrant-lite
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ backports-strenum ];
 
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pyoverkiz"
-  ];
+  pythonImportsCheck = [ "pyoverkiz" ];
 
   meta = with lib; {
     description = "Module to interact with the Somfy TaHoma API or other OverKiz APIs";
diff --git a/pkgs/development/python-modules/pyowm/default.nix b/pkgs/development/python-modules/pyowm/default.nix
index d342ce313e8cb..78d8e05301e4f 100644
--- a/pkgs/development/python-modules/pyowm/default.nix
+++ b/pkgs/development/python-modules/pyowm/default.nix
@@ -8,7 +8,6 @@
   requests,
   setuptools,
   pytestCheckHook,
-  pythonRelaxDepsHook,
 }:
 
 buildPythonPackage rec {
@@ -29,7 +28,6 @@ buildPythonPackage rec {
 
   build-system = [ setuptools ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     geojson
diff --git a/pkgs/development/python-modules/pyownet/default.nix b/pkgs/development/python-modules/pyownet/default.nix
index 9a368c26087eb..2542877ef0e58 100644
--- a/pkgs/development/python-modules/pyownet/default.nix
+++ b/pkgs/development/python-modules/pyownet/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pypager/default.nix b/pkgs/development/python-modules/pypager/default.nix
new file mode 100644
index 0000000000000..94ed9f2cc7bd5
--- /dev/null
+++ b/pkgs/development/python-modules/pypager/default.nix
@@ -0,0 +1,41 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  prompt-toolkit,
+  pygments,
+}:
+
+buildPythonPackage {
+  pname = "pypager";
+  version = "3.0.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "prompt-toolkit";
+    repo = "pypager";
+    rev = "0255d59a14ffba81c3842ef570c96c8dfee91e8e";
+    hash = "sha256-uPpVAI12INKFZDiTQdzQ0dhWCBAGeu0488zZDEV22mU=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    prompt-toolkit
+    pygments
+  ];
+
+  pythonImportsCheck = [ "pypager" ];
+
+  # no tests
+  doCheck = false;
+
+  meta = {
+    description = ''Pure Python pager (like "more" and "less")'';
+    homepage = "https://github.com/prompt-toolkit/pypager";
+    license = lib.licenses.bsd3;
+    mainProgram = "pypager";
+    maintainers = with lib.maintainers; [ taha-yassine ];
+  };
+}
diff --git a/pkgs/development/python-modules/pypandoc/default.nix b/pkgs/development/python-modules/pypandoc/default.nix
index 7501cddbad185..727545b7148da 100644
--- a/pkgs/development/python-modules/pypandoc/default.nix
+++ b/pkgs/development/python-modules/pypandoc/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pandoc
-, pandocfilters
-, poetry-core
-, pythonOlder
-, substituteAll
-, texliveSmall
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pandoc,
+  pandocfilters,
+  poetry-core,
+  pythonOlder,
+  substituteAll,
+  texliveSmall,
 }:
 
 buildPythonPackage rec {
@@ -32,23 +33,22 @@ buildPythonPackage rec {
     ./skip-tests.patch
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   nativeCheckInputs = [
     texliveSmall
     pandocfilters
   ];
 
-  pythonImportsCheck = [
-    "pypandoc"
-  ];
+  pythonImportsCheck = [ "pypandoc" ];
 
   meta = with lib; {
     description = "Thin wrapper for pandoc";
     homepage = "https://github.com/JessicaTegner/pypandoc";
     license = licenses.mit;
-    maintainers = with maintainers; [ sternenseemann bennofs ];
+    maintainers = with maintainers; [
+      sternenseemann
+      bennofs
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pyparser/default.nix b/pkgs/development/python-modules/pyparser/default.nix
index f7db023608c24..7b78bf6f27f04 100644
--- a/pkgs/development/python-modules/pyparser/default.nix
+++ b/pkgs/development/python-modules/pyparser/default.nix
@@ -1,5 +1,8 @@
-{ buildPythonPackage, lib, fetchFromBitbucket
-, parse
+{
+  buildPythonPackage,
+  lib,
+  fetchFromBitbucket,
+  parse,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyparsing/default.nix b/pkgs/development/python-modules/pyparsing/default.nix
index 05d2586ff18d6..ac2e1be377f05 100644
--- a/pkgs/development/python-modules/pyparsing/default.nix
+++ b/pkgs/development/python-modules/pyparsing/default.nix
@@ -1,11 +1,12 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, flit-core
-, jinja2
-, pytestCheckHook
-, railroad-diagrams
-, pyparsing
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  flit-core,
+  jinja2,
+  pytestCheckHook,
+  railroad-diagrams,
+  pyparsing,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-0B8DjO4kLgvt4sYsk8CZI+5icdKy73XE2tWeqVLqO5A=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   # circular dependencies with pytest if enabled by default
   doCheck = false;
@@ -35,7 +34,9 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "pyparsing" ];
 
   passthru.tests = {
-    check = pyparsing.overridePythonAttrs (_: { doCheck = true; });
+    check = pyparsing.overridePythonAttrs (_: {
+      doCheck = true;
+    });
   };
 
   meta = with lib; {
@@ -46,7 +47,7 @@ buildPythonPackage rec {
       simple grammars, vs. the traditional lex/yacc approach, or the use of
       regular expressions. The pyparsing module provides a library of classes
       that client code uses to construct the grammar directly in Python code.
-   '';
+    '';
     license = licenses.mit;
     maintainers = with maintainers; [ kamadorueda ];
   };
diff --git a/pkgs/development/python-modules/pyparted/default.nix b/pkgs/development/python-modules/pyparted/default.nix
index 7eeedaa2cad8d..24acecdaf8c2b 100644
--- a/pkgs/development/python-modules/pyparted/default.nix
+++ b/pkgs/development/python-modules/pyparted/default.nix
@@ -1,11 +1,12 @@
-{ lib, stdenv
-, fetchFromGitHub
-, buildPythonPackage
-, isPyPy
-, pkgs
-, python
-, six
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  buildPythonPackage,
+  isPyPy,
+  pkgs,
+  six,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,23 +22,28 @@ buildPythonPackage rec {
     hash = "sha256-AiUCCrEbDD0OxrvXs1YN3/1IE7SuVasC2YCirIG58iU=";
   };
 
-  postPatch = ''
-    sed -i -e 's|mke2fs|${pkgs.e2fsprogs}/bin/mke2fs|' tests/baseclass.py
-    sed -i -e '
-      s|e\.path\.startswith("/tmp/temp-device-")|"temp-device-" in e.path|
-    ' tests/test__ped_ped.py
-  '' + lib.optionalString stdenv.isi686 ''
-    # remove some integers in this test case which overflow on 32bit systems
-    sed -i -r -e '/class *UnitGetSizeTestCase/,/^$/{/[0-9]{11}/d}' \
-      tests/test__ped_ped.py
-  '';
+  postPatch =
+    ''
+      sed -i -e 's|mke2fs|${pkgs.e2fsprogs}/bin/mke2fs|' tests/baseclass.py
+      sed -i -e '
+        s|e\.path\.startswith("/tmp/temp-device-")|"temp-device-" in e.path|
+      ' tests/test__ped_ped.py
+    ''
+    + lib.optionalString stdenv.hostPlatform.isi686 ''
+      # remove some integers in this test case which overflow on 32bit systems
+      sed -i -r -e '/class *UnitGetSizeTestCase/,/^$/{/[0-9]{11}/d}' \
+        tests/test__ped_ped.py
+    '';
 
   preConfigure = ''
     PATH="${pkgs.parted}/sbin:$PATH"
   '';
 
   nativeBuildInputs = [ pkgs.pkg-config ];
-  nativeCheckInputs = [ six pytestCheckHook ];
+  nativeCheckInputs = [
+    six
+    pytestCheckHook
+  ];
   propagatedBuildInputs = [ pkgs.parted ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/pypass/default.nix b/pkgs/development/python-modules/pypass/default.nix
index 7e609cbe1ccd9..1b9dc08d67200 100644
--- a/pkgs/development/python-modules/pypass/default.nix
+++ b/pkgs/development/python-modules/pypass/default.nix
@@ -1,21 +1,21 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, click
-, colorama
-, enum34
-, fetchPypi
-, git
-, gnugrep
-, gnupg
-, nose
-, pbr
-, pexpect
-, pythonAtLeast
-, pythonOlder
-, substituteAll
-, tree
-, xclip
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  click,
+  colorama,
+  fetchPypi,
+  git,
+  gnugrep,
+  gnupg,
+  pbr,
+  pexpect,
+  pythonAtLeast,
+  pytestCheckHook,
+  setuptools,
+  substituteAll,
+  tree,
+  xclip,
 }:
 
 # Use the `pypass` top-level attribute, if you're interested in the
@@ -23,11 +23,11 @@
 buildPythonPackage rec {
   pname = "pypass";
   version = "0.2.1";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1nm4mj7pd7gz4ghic6b3wrnd1b59hd1f0axavdabfl79wy511l7r";
+    hash = "sha256-+dAQiufpULdU26or4EKDqazQbOZjGRbhI/+ddo+spNo=";
   };
 
   # Set absolute nix store paths to the executables that pypass uses
@@ -47,40 +47,39 @@ buildPythonPackage rec {
     substituteInPlace requirements.txt --replace "enum34" ""
   '';
 
+  build-system = [ setuptools ];
+
   nativeBuildInputs = [ pbr ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     click
     colorama
     pexpect
-  ] ++ lib.optional (pythonOlder "3.4") enum34;
+  ];
 
-  nativeCheckInputs = [ nose ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Configuration so that the tests work
   preCheck = ''
-    HOME=$TEMP ${git}/bin/git config --global user.email "nix-builder@nixos.org"
-    HOME=$TEMP ${git}/bin/git config --global user.name "Nix Builder"
-    HOME=$TEMP ${git}/bin/git config --global pull.ff only
-    HOME=$TEMP make setup_gpg
+    export HOME=$(mktemp -d)
+    export GNUPGHOME=pypass/tests/gnupg
+    ${git}/bin/git config --global user.email "nix-builder@nixos.org"
+    ${git}/bin/git config --global user.name "Nix Builder"
+    ${git}/bin/git config --global pull.ff only
+    make setup_gpg
   '';
 
-  # Run tests but exclude the test that uses clipboard as I wasn't able to make
-  # it work - probably the X clipboard just doesn't work in the build
-  # environment..
-  checkPhase = ''
-    runHook preCheck
-    HOME=$TEMP GNUPGHOME=pypass/tests/gnupg nosetests -v --exclude=test_show_clip .
-    runHook postCheck
-  '';
+  # Presumably this test needs the X clipboard, which we don't have
+  # as the test environment is non-graphical.
+  disabledTests = [ "test_show_clip" ];
 
-  meta = with lib; {
-    broken = stdenv.isDarwin;
+  meta = {
+    broken = stdenv.hostPlatform.isDarwin;
     description = "Password manager pass in Python";
     mainProgram = "pypass";
     homepage = "https://github.com/aviau/python-pass";
-    license = licenses.gpl3Plus;
-    platforms = platforms.all;
-    maintainers = with maintainers; [ jluttine ];
+    license = lib.licenses.gpl3Plus;
+    platforms = lib.platforms.all;
+    maintainers = with lib.maintainers; [ jluttine ];
   };
 }
diff --git a/pkgs/development/python-modules/pypblib/default.nix b/pkgs/development/python-modules/pypblib/default.nix
index 0132f43ffa467..f4971a6b25774 100644
--- a/pkgs/development/python-modules/pypblib/default.nix
+++ b/pkgs/development/python-modules/pypblib/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "pypblib";
diff --git a/pkgs/development/python-modules/pypca/default.nix b/pkgs/development/python-modules/pypca/default.nix
index 7ca099f2d8658..60203cd00fdc7 100644
--- a/pkgs/development/python-modules/pypca/default.nix
+++ b/pkgs/development/python-modules/pypca/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, colorlog
-, fetchPypi
-, pythonOlder
-, pyserial
+{
+  lib,
+  buildPythonPackage,
+  colorlog,
+  fetchPypi,
+  pythonOlder,
+  pyserial,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pypcap/default.nix b/pkgs/development/python-modules/pypcap/default.nix
index 2c3997c8941aa..4bf0723dc6ce5 100644
--- a/pkgs/development/python-modules/pypcap/default.nix
+++ b/pkgs/development/python-modules/pypcap/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, dpkt
-, fetchFromGitHub
-, libpcap
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  dpkt,
+  fetchFromGitHub,
+  libpcap,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pypck/default.nix b/pkgs/development/python-modules/pypck/default.nix
index c4819b9a012a2..a24b786a30c32 100644
--- a/pkgs/development/python-modules/pypck/default.nix
+++ b/pkgs/development/python-modules/pypck/default.nix
@@ -1,35 +1,34 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytest-timeout
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pypck";
-  version = "0.7.19";
-  format = "pyproject";
+  version = "0.7.24";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "alengwenus";
-    repo = pname;
+    repo = "pypck";
     rev = "refs/tags/${version}";
-    hash = "sha256-D4uUR8A1mrT+mxUswS34hSRczjRkRro/pz9NbMUCPjM=";
+    hash = "sha256-DWdQUnURL3WBi916vOTawtBqq+SHTu4iLViGczwAWQE=";
   };
 
   postPatch = ''
     echo "${version}" > VERSION
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -37,19 +36,13 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "--asyncio-mode=auto"
-  ];
+  pytestFlagsArray = [ "--asyncio-mode=auto" ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [
-    "test_connection_lost"
-  ];
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [ "test_connection_lost" ];
 
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [
-    "pypck"
-  ];
+  pythonImportsCheck = [ "pypck" ];
 
   meta = with lib; {
     description = "LCN-PCK library written in Python";
diff --git a/pkgs/development/python-modules/pypdf/default.nix b/pkgs/development/python-modules/pypdf/default.nix
index 5e48ca58781c1..b9176cc76dbe0 100644
--- a/pkgs/development/python-modules/pypdf/default.nix
+++ b/pkgs/development/python-modules/pypdf/default.nix
@@ -1,34 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch2
-, pythonOlder
-
-# build-system
-, flit-core
-
-# docs
-, sphinxHook
-, sphinx-rtd-theme
-, myst-parser
-
-# propagates
-, typing-extensions
-
-# optionals
-, cryptography
-, pillow
-
-# tests
-, fpdf2
-, pytestCheckHook
-, pytest-timeout
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  pythonOlder,
+
+  # build-system
+  flit-core,
+
+  # docs
+  sphinxHook,
+  sphinx-rtd-theme,
+  myst-parser,
+
+  # propagates
+  typing-extensions,
+
+  # optionals
+  cryptography,
+  pillow,
+
+  # tests
+  fpdf2,
+  pytestCheckHook,
+  pytest-timeout,
 }:
 
 buildPythonPackage rec {
   pname = "pypdf";
-  version = "4.1.0";
-  format = "pyproject";
+  version = "5.0.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "py-pdf";
@@ -36,20 +37,9 @@ buildPythonPackage rec {
     rev = "refs/tags/${version}";
     # fetch sample files used in tests
     fetchSubmodules = true;
-    hash = "sha256-Z3flDC102FwEaNtef0YAfmAFSxpimQNyxt9tRfpKueg=";
+    hash = "sha256-omnNC1mzph59aqrXqLCuCk0LgzfJv/JhbQRrAgRhAIg=";
   };
 
-  patches = [
-    (fetchpatch2 {
-      # add missing test marker on networked test
-      url = "https://github.com/py-pdf/pypdf/commit/f43268734a529d4098e6258bf346148fd24c54f0.patch";
-      includes = [
-        "tests/test_generic.py"
-      ];
-      hash = "sha256-Ow32UB4crs3OgT+AmA9TNmcO5Y9SoSahybzD3AmWmVk=";
-    })
-  ];
-
   outputs = [
     "out"
     "doc"
@@ -64,52 +54,46 @@ buildPythonPackage rec {
     myst-parser
   ];
 
+  patches = [
+    (fetchpatch2 {
+      # Mark test_increment_writer as enable_socket (https://github.com/py-pdf/pypdf/pull/2867)
+      url = "https://github.com/py-pdf/pypdf/commit/d974d5c755a7b65f3b9c68c5742afdbc0c1693f6.patch";
+      hash = "sha256-4xiCAStP615IktTUgk31JbIxkxx8d6PQdu8Nfmhc1jo=";
+    })
+  ];
+
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "--disable-socket" ""
+      --replace-fail "--disable-socket" ""
   '';
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.10") [
-    typing-extensions
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.11") [ typing-extensions ];
 
-  passthru.optional-dependencies = rec {
+  optional-dependencies = rec {
     full = crypto ++ image;
-    crypto = [
-      cryptography
-    ];
-    image = [
-      pillow
-    ];
+    crypto = [ cryptography ];
+    image = [ pillow ];
   };
 
-  pythonImportsCheck = [
-    "pypdf"
-  ];
+  pythonImportsCheck = [ "pypdf" ];
 
   nativeCheckInputs = [
-    (fpdf2.overridePythonAttrs { doCheck = false; })  # avoid reference loop
+    (fpdf2.overridePythonAttrs { doCheck = false; }) # avoid reference loop
     pytestCheckHook
     pytest-timeout
-  ] ++ passthru.optional-dependencies.full;
+  ] ++ optional-dependencies.full;
 
   pytestFlagsArray = [
     # don't access the network
-    "-m" "'not enable_socket'"
-  ];
-
-  disabledTests = [
-    # requires fpdf2 which we don't package yet
-    "test_compression"
-    # infinite recursion when including fpdf2
-    "test_merging_many_temporary_files"
+    "-m"
+    "'not enable_socket'"
   ];
 
   meta = with lib; {
-    description = "A pure-python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files";
+    description = "Pure-python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files";
     homepage = "https://github.com/py-pdf/pypdf";
     changelog = "https://github.com/py-pdf/pypdf/blob/${src.rev}/CHANGELOG.md";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ javaes ];
   };
 }
diff --git a/pkgs/development/python-modules/pypdf2/default.nix b/pkgs/development/python-modules/pypdf2/default.nix
index 34087d582667a..d8bea0dbf51de 100644
--- a/pkgs/development/python-modules/pypdf2/default.nix
+++ b/pkgs/development/python-modules/pypdf2/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, pythonOlder
-, typing-extensions
-, unittestCheckHook
+{
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  lib,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "pypdf2";
   version = "3.0.1";
 
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchPypi {
     pname = "PyPDF2";
@@ -19,26 +19,22 @@ buildPythonPackage rec {
     hash = "sha256-p0QI9pumJx9xuTUu9O0D3FOjGqQE0ptdMfU7/s/uFEA=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.10") [
-    typing-extensions
-  ];
+  dependencies = lib.optionals (pythonOlder "3.10") [ typing-extensions ];
 
-  nativeCheckInputs = [ unittestCheckHook ];
+  # no test
+  doCheck = false;
 
-  pythonImportsCheck = [
-    "PyPDF2"
-  ];
+  pythonImportsCheck = [ "PyPDF2" ];
 
   meta = with lib; {
-    description = "A Pure-Python library built as a PDF toolkit";
+    description = "Pure-Python library built as a PDF toolkit";
     homepage = "https://pypdf2.readthedocs.io/";
     changelog = "https://github.com/py-pdf/PyPDF2/raw/${version}/CHANGELOG.md";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ desiderius vrthra ];
+    maintainers = with maintainers; [
+      desiderius
+    ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pypdf3/default.nix b/pkgs/development/python-modules/pypdf3/default.nix
index f70b04db22272..f611eb5ae0b9f 100644
--- a/pkgs/development/python-modules/pypdf3/default.nix
+++ b/pkgs/development/python-modules/pypdf3/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, glibcLocales
-, python
-, tqdm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  glibcLocales,
+  python,
+  tqdm,
 }:
 
 buildPythonPackage rec {
@@ -24,12 +25,10 @@ buildPythonPackage rec {
     ${python.interpreter} -m unittest tests/*.py
   '';
 
-  propagatedBuildInputs = [
-    tqdm
-  ];
+  propagatedBuildInputs = [ tqdm ];
 
   meta = with lib; {
-    description = "A Pure-Python library built as a PDF toolkit";
+    description = "Pure-Python library built as a PDF toolkit";
     homepage = "https://github.com/sfneal/PyPDF3";
     license = licenses.bsd3;
     maintainers = with maintainers; [ ambroisie ];
diff --git a/pkgs/development/python-modules/pypeg2/default.nix b/pkgs/development/python-modules/pypeg2/default.nix
index 092ba9472aa75..3074eb61522d5 100644
--- a/pkgs/development/python-modules/pypeg2/default.nix
+++ b/pkgs/development/python-modules/pypeg2/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -27,5 +28,4 @@ buildPythonPackage rec {
     homepage = "http://fdik.org/pyPEG";
     license = licenses.gpl2;
   };
-
 }
diff --git a/pkgs/development/python-modules/pypemicro/default.nix b/pkgs/development/python-modules/pypemicro/default.nix
index f73649ac72fe8..42c783a6e4c2e 100644
--- a/pkgs/development/python-modules/pypemicro/default.nix
+++ b/pkgs/development/python-modules/pypemicro/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi, autoPatchelfHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "pypemicro";
@@ -19,7 +23,13 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python interface for PEMicro debug probes";
     homepage = "https://github.com/NXPmicro/pypemicro";
-    license = with licenses; [ bsd3 unfree ]; # it includes shared libraries for which no license is available (https://github.com/NXPmicro/pypemicro/issues/10)
-    maintainers = with maintainers; [ frogamic sbruder ];
+    license = with licenses; [
+      bsd3
+      unfree
+    ]; # it includes shared libraries for which no license is available (https://github.com/NXPmicro/pypemicro/issues/10)
+    maintainers = with maintainers; [
+      frogamic
+      sbruder
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pyperclip/default.nix b/pkgs/development/python-modules/pyperclip/default.nix
index 73ea4bd1c80db..2354927ec2d7a 100644
--- a/pkgs/development/python-modules/pyperclip/default.nix
+++ b/pkgs/development/python-modules/pyperclip/default.nix
@@ -1,22 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, stdenv
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  setuptools,
 }:
 
 buildPythonPackage rec {
-  version = "1.8.2";
-  format = "setuptools";
+  version = "1.9.0";
   pname = "pyperclip";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57";
+    hash = "sha256-t94BQt3IG/xcdQfuoZ2pILkiUrVIuWGGyvlKXiUn0xA=";
   };
 
-  # No such file or directory: 'pbcopy'
-  doCheck = !stdenv.isDarwin;
+  build-system = [ setuptools ];
+
+  # https://github.com/asweigart/pyperclip/issues/263
+  doCheck = false;
 
   checkPhase = ''
     ${python.interpreter} tests/test_pyperclip.py
diff --git a/pkgs/development/python-modules/pyperf/default.nix b/pkgs/development/python-modules/pyperf/default.nix
index 76065f3531717..5c752a0834d17 100644
--- a/pkgs/development/python-modules/pyperf/default.nix
+++ b/pkgs/development/python-modules/pyperf/default.nix
@@ -1,35 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, psutil
-, unittestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  psutil,
+  unittestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyperf";
-  version = "2.6.3";
+  version = "2.7.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-l1L+dJwh5GClZLs/Uvwxm4ksYu5hxROLSpu/lK0nVeY=";
+    hash = "sha256-QgHGYBAy83TpyQDG0lRKL1iRq+3BqW7sDnsjOKYkdYk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    psutil
-  ];
+  propagatedBuildInputs = [ psutil ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   unittestFlagsArray = [
     "-s"
@@ -37,9 +32,7 @@ buildPythonPackage rec {
     "-v"
   ];
 
-  pythonImportsCheck = [
-    "pyperf"
-  ];
+  pythonImportsCheck = [ "pyperf" ];
 
   meta = with lib; {
     description = "Python module to generate and modify perf";
@@ -47,6 +40,6 @@ buildPythonPackage rec {
     homepage = "https://pyperf.readthedocs.io/";
     changelog = "https://github.com/psf/pyperf/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyperscan/default.nix b/pkgs/development/python-modules/pyperscan/default.nix
index 954da379d7ed6..7f2bde698eb8d 100644
--- a/pkgs/development/python-modules/pyperscan/default.nix
+++ b/pkgs/development/python-modules/pyperscan/default.nix
@@ -1,29 +1,30 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, buildPythonPackage
-, rustPlatform
-, pytestCheckHook
-, libiconv
-, vectorscan
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  buildPythonPackage,
+  rustPlatform,
+  pytestCheckHook,
+  libiconv,
+  vectorscan,
 }:
 
 buildPythonPackage rec {
   pname = "pyperscan";
-  version = "0.2.2";
+  version = "0.3.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "vlaci";
     repo = "pyperscan";
     rev = "v${version}";
-    hash = "sha256-ioNGEmWy+lEzazF1RzMFS06jYLNYll3QSlWAF0AoU7Y=";
+    hash = "sha256-uGZ0XFxnZHSLEWcwoHVd+xMulDRqEIrQ5Lf7886GdlM=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-2zppyxJ+XaI/JCkp7s27/jgtSbwxnI4Yil5KT8WgrVI=";
+    hash = "sha256-a4jNofPIHoKwsD82y2hG2QPu+eM5D7FSGCm2nDo2cLA=";
   };
 
   nativeBuildInputs = with rustPlatform; [
@@ -34,18 +35,22 @@ buildPythonPackage rec {
 
   checkInputs = [ pytestCheckHook ];
 
-  buildInputs = [ vectorscan ] ++ lib.optional stdenv.isDarwin libiconv;
-
-  # Disable default features to use the system vectorscan library instead of a vendored one.
-  maturinBuildFlags = [ "--no-default-features" ];
+  buildInputs = [ vectorscan ] ++ lib.optional stdenv.hostPlatform.isDarwin libiconv;
 
   pythonImportsCheck = [ "pyperscan" ];
 
   meta = with lib; {
-    description = "a hyperscan binding for Python, which supports vectorscan";
-    homepage = "https://github.com/vlaci/pyperscan";
+    description = "Hyperscan binding for Python, which supports vectorscan";
+    homepage = "https://vlaci.github.io/pyperscan/";
+    changelog = "https://github.com/vlaci/pyperscan/releases/tag/${src.rev}";
     platforms = platforms.unix;
-    license = with licenses; [ asl20 /* or */ mit ];
-    maintainers = with maintainers; [ tnias vlaci ];
+    license = with licenses; [
+      asl20 # or
+      mit
+    ];
+    maintainers = with maintainers; [
+      tnias
+      vlaci
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pyphen/default.nix b/pkgs/development/python-modules/pyphen/default.nix
index 15eb6342988fb..b8464e1852bbe 100644
--- a/pkgs/development/python-modules/pyphen/default.nix
+++ b/pkgs/development/python-modules/pyphen/default.nix
@@ -1,43 +1,42 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pyphen";
-  version = "0.14.0";
+  version = "0.16.0";
   format = "pyproject";
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-WWyLO+HBpwQRul9lF9nM/jCDx1iuK5SkXycHNG2OZvo=";
+    hash = "sha256-LABrPd8HLJVxq5dgbZqzwmqS6s7UwNWf0dJpiPMI9BM=";
   };
 
-  nativeBuildInputs = [
-    flit
-  ];
+  nativeBuildInputs = [ flit ];
 
   preCheck = ''
     sed -i '/addopts/d' pyproject.toml
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyphen"
-  ];
+  pythonImportsCheck = [ "pyphen" ];
 
   meta = with lib; {
     description = "Module to hyphenate text";
     homepage = "https://github.com/Kozea/Pyphen";
     changelog = "https://github.com/Kozea/Pyphen/releases/tag/${version}";
-    license = with licenses; [gpl2 lgpl21 mpl20];
+    license = with licenses; [
+      gpl2
+      lgpl21
+      mpl20
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pyphotonfile/default.nix b/pkgs/development/python-modules/pyphotonfile/default.nix
index c18d8c60d478b..315d9c9496edf 100644
--- a/pkgs/development/python-modules/pyphotonfile/default.nix
+++ b/pkgs/development/python-modules/pyphotonfile/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pillow
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pillow,
+  numpy,
 }:
 let
   version = "0.2.1+";
@@ -13,7 +14,10 @@ buildPythonPackage {
   inherit version;
 
   dontUseSetuptoolsCheck = true;
-  propagatedBuildInputs = [ pillow numpy ];
+  propagatedBuildInputs = [
+    pillow
+    numpy
+  ];
 
   src = fetchFromGitHub {
     owner = "cab404";
@@ -28,5 +32,4 @@ buildPythonPackage {
     description = "Library for reading and writing files for the Anycubic Photon 3D-Printer";
     homepage = "https://github.com/cab404/pyphotonfile";
   };
-
 }
diff --git a/pkgs/development/python-modules/pypika/default.nix b/pkgs/development/python-modules/pypika/default.nix
index ab2105ecee1fb..1acaee0a89f2b 100644
--- a/pkgs/development/python-modules/pypika/default.nix
+++ b/pkgs/development/python-modules/pypika/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, parameterized
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  parameterized,
+  unittestCheckHook,
 }:
 buildPythonPackage rec {
   pname = "pypika";
@@ -16,7 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-9HKT1xRu23F5ptiKhIgIR8srLIcpDzpowBNuYOhqMU0=";
   };
 
-  pythonImportsCheck = ["pypika"];
+  pythonImportsCheck = [ "pypika" ];
 
   nativeCheckInputs = [
     parameterized
@@ -24,10 +25,9 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A python SQL query builder";
+    description = "Python SQL query builder";
     homepage = "https://github.com/kayak/pypika";
     license = licenses.asl20;
     maintainers = with maintainers; [ blaggacao ];
   };
 }
-
diff --git a/pkgs/development/python-modules/pypillowfight/default.nix b/pkgs/development/python-modules/pypillowfight/default.nix
index 3d1b9807b34da..8c001b7ebf82c 100644
--- a/pkgs/development/python-modules/pypillowfight/default.nix
+++ b/pkgs/development/python-modules/pypillowfight/default.nix
@@ -1,39 +1,40 @@
-{ lib, buildPythonPackage, fetchFromGitLab, nose, pillow
-, isPy3k, isPyPy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  pillow,
+  pytestCheckHook,
+  setuptools,
 }:
 buildPythonPackage rec {
   pname = "pypillowfight";
-  version = "0.3.0";
-  format = "setuptools";
+  version = "0.3.0-unstable-2024-07-07";
+  pyproject = true;
 
   src = fetchFromGitLab {
     domain = "gitlab.gnome.org";
     group = "World";
     owner = "OpenPaperwork";
     repo = "libpillowfight";
-    rev = version;
-    sha256 = "096242v425mlqqj5g1giy59p7grxp05g78w6bk37vzph98jrgv3w";
+    # Currently no tagged release past 0.3.0 and we need these patches to fix Python 3.12 compat
+    rev = "4d5f739b725530cd61e709071d31e9f707c64bd6";
+    hash = "sha256-o5FzUSDq0lwkXGXRMsS5NB/Mp4Ie833wkxKPziR23f4=";
   };
 
   prePatch = ''
     echo '#define INTERNAL_PILLOWFIGHT_VERSION "${version}"' > src/pillowfight/_version.h
   '';
 
-  # Disable tests because they're designed to only work on Debian:
-  # https://github.com/jflesch/libpillowfight/issues/2#issuecomment-268259174
-  doCheck = false;
+  build-system = [ setuptools ];
 
-  # Python 2.x is not supported, see:
-  # https://github.com/jflesch/libpillowfight/issues/1
-  disabled = !isPy3k && !isPyPy;
+  dependencies = [ pillow ];
 
-  # This is needed by setup.py regardless of whether tests are enabled.
-  buildInputs = [ nose ];
-  propagatedBuildInputs = [ pillow ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  meta = with lib; {
+  meta = {
     description = "Library containing various image processing algorithms";
     inherit (src.meta) homepage;
-    license = licenses.gpl3Plus;
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ pyrox0 ];
   };
 }
diff --git a/pkgs/development/python-modules/pypinyin/default.nix b/pkgs/development/python-modules/pypinyin/default.nix
index 882e62505e929..48f4d8d798111 100644
--- a/pkgs/development/python-modules/pypinyin/default.nix
+++ b/pkgs/development/python-modules/pypinyin/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pypinyin";
-  version = "0.51.0";
+  version = "0.53.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -16,7 +17,7 @@ buildPythonPackage rec {
     owner = "mozillazg";
     repo = "python-pinyin";
     rev = "refs/tags/v${version}";
-    hash = "sha256-kbUVif3a3L7BHj1b37FME5wicalK/iild0pvwPawr6Q=";
+    hash = "sha256-NGW94Labk3vAv4bfq/+ba2lnL/uebg0ODZWEi2yNIjg=";
   };
 
   postPatch = ''
@@ -24,13 +25,9 @@ buildPythonPackage rec {
       "--cov-report term-missing" ""
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests"
-  ];
+  pytestFlagsArray = [ "tests" ];
 
   meta = with lib; {
     description = "Chinese Characters to Pinyin - 汉字转拼音";
diff --git a/pkgs/development/python-modules/pypiserver/default.nix b/pkgs/development/python-modules/pypiserver/default.nix
index 83cf132ed5c65..563f0311ee947 100644
--- a/pkgs/development/python-modules/pypiserver/default.nix
+++ b/pkgs/development/python-modules/pypiserver/default.nix
@@ -1,51 +1,58 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, passlib
-, pip
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-git
-, twine
-, watchdog
-, webtest
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  distutils,
+  fetchFromGitHub,
+  passlib,
+  pip,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-git,
+  setuptools,
+  twine,
+  watchdog,
+  webtest,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "pypiserver";
   version = "2.0.1";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
-    owner = pname;
-    repo = pname;
+    owner = "pypiserver";
+    repo = "pypiserver";
     rev = "refs/tags/v${version}";
     hash = "sha256-Eh/3URt7pcJhoDDLRP8iHyjlPsE5E9M/0Hixqi5YNdg=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-git
     wheel
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    distutils
     pip
   ];
 
-  passthru.optional-dependencies = {
-    passlib = [
-      passlib
-    ];
-    cache = [
-      watchdog
-    ];
+  optional-dependencies = {
+    passlib = [ passlib ];
+    cache = [ watchdog ];
   };
 
+  nativeCheckInputs = [
+    pip
+    pytestCheckHook
+    setuptools
+    twine
+    webtest
+  ] ++ lib.flatten (builtins.attrValues optional-dependencies);
+
   __darwinAllowLocalNetworking = true;
 
   # Tests need these permissions in order to use the FSEvents API on macOS.
@@ -57,14 +64,6 @@ buildPythonPackage rec {
     export HOME=$TMPDIR
   '';
 
-  nativeCheckInputs = [
-    pip
-    pytestCheckHook
-    setuptools
-    twine
-    webtest
-  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
-
   disabledTests = [
     # Fails to install the package
     "test_hash_algos"
@@ -77,16 +76,17 @@ buildPythonPackage rec {
     "docker/test_docker.py"
   ];
 
-  pythonImportsCheck = [
-    "pypiserver"
-  ];
+  pythonImportsCheck = [ "pypiserver" ];
 
   meta = with lib; {
     description = "Minimal PyPI server for use with pip/easy_install";
-    mainProgram = "pypi-server";
     homepage = "https://github.com/pypiserver/pypiserver";
     changelog = "https://github.com/pypiserver/pypiserver/releases/tag/v${version}";
-    license = with licenses; [ mit zlib ];
+    license = with licenses; [
+      mit
+      zlib
+    ];
     maintainers = with maintainers; [ austinbutler ];
+    mainProgram = "pypi-server";
   };
 }
diff --git a/pkgs/development/python-modules/pypitoken/default.nix b/pkgs/development/python-modules/pypitoken/default.nix
index 59a3be31094c5..8b09b773d8b50 100644
--- a/pkgs/development/python-modules/pypitoken/default.nix
+++ b/pkgs/development/python-modules/pypitoken/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, jsonschema
-, poetry-core
-, pymacaroons
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jsonschema,
+  poetry-core,
+  pymacaroons,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     sed -i "/--cov/d" setup.cfg
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     pymacaroons
@@ -43,9 +42,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pypitoken"
-  ];
+  pythonImportsCheck = [ "pypitoken" ];
 
   meta = with lib; {
     description = "Library for generating and manipulating PyPI tokens";
diff --git a/pkgs/development/python-modules/pyplaato/default.nix b/pkgs/development/python-modules/pyplaato/default.nix
index f070340f9290c..a2457396a9ad7 100644
--- a/pkgs/development/python-modules/pyplaato/default.nix
+++ b/pkgs/development/python-modules/pyplaato/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, aiohttp
-, python-dateutil
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  aiohttp,
+  python-dateutil,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyplaato"
-  ];
+  pythonImportsCheck = [ "pyplaato" ];
 
   meta = with lib; {
     description = "Python API client for fetching Plaato data";
diff --git a/pkgs/development/python-modules/pyplatec/default.nix b/pkgs/development/python-modules/pyplatec/default.nix
index 6a4e46f5c1c6f..486b980bd4cbb 100644
--- a/pkgs/development/python-modules/pyplatec/default.nix
+++ b/pkgs/development/python-modules/pyplatec/default.nix
@@ -1,7 +1,7 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -18,8 +18,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Library to simulate plate tectonics with Python bindings";
-    homepage    = "https://github.com/Mindwerks/plate-tectonics";
-    license     = licenses.lgpl3;
+    homepage = "https://github.com/Mindwerks/plate-tectonics";
+    license = licenses.lgpl3;
   };
-
 }
diff --git a/pkgs/development/python-modules/pypng/default.nix b/pkgs/development/python-modules/pypng/default.nix
index c79ec4f92a0ef..eb06d04b5dbe7 100644
--- a/pkgs/development/python-modules/pypng/default.nix
+++ b/pkgs/development/python-modules/pypng/default.nix
@@ -1,27 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pypng";
-  version = "0.0.21";
-  format = "pyproject";
+  version = "0.20220715.0";
+  pyproject = true;
 
-  src = fetchFromGitHub {
+  src = fetchFromGitLab {
     owner = "drj11";
     repo = "pypng";
     rev = "refs/tags/${pname}-${version}";
-    hash = "sha256-JU1GCSTm2s6Kczn6aRcF5DizPJVpizNtnAMJxTBi9vo=";
+    hash = "sha256-tTnsGCAmHexDWm/T5xpHpcBaQcBEqMfTFaoOAeC+pDs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
+  nativeBuildInputs = [ setuptools ];
+
+  patches = [
+    # pngsuite is imported by code/test_png.py but is not defined in
+    # setup.cfg, so it isn't built - this adds it to py_modules
+    ./setup-cfg-pngsuite.patch
   ];
 
-  pythonImportsCheck = [ "png" ];
+  # allow tests to use the binaries produced by this package
+  preCheck = ''
+    export PATH="$out/bin:$PATH"
+  '';
+
+  pythonImportsCheck = [
+    "png"
+    "pngsuite"
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
diff --git a/pkgs/development/python-modules/pypng/setup-cfg-pngsuite.patch b/pkgs/development/python-modules/pypng/setup-cfg-pngsuite.patch
new file mode 100644
index 0000000000000..085aa47f7f46d
--- /dev/null
+++ b/pkgs/development/python-modules/pypng/setup-cfg-pngsuite.patch
@@ -0,0 +1,12 @@
+diff --git a/setup.cfg b/setup.cfg
+index 04bba8a..db159d2 100644
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -28,6 +28,7 @@ package_dir =
+        = code
+ py_modules =
+     png
++    pngsuite
+ scripts =
+     code/prichunkpng
+     code/pricolpng
diff --git a/pkgs/development/python-modules/pypoint/default.nix b/pkgs/development/python-modules/pypoint/default.nix
index 20b4ba6d0a7ad..e0e5aab54350c 100644
--- a/pkgs/development/python-modules/pypoint/default.nix
+++ b/pkgs/development/python-modules/pypoint/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, authlib
-, httpx
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  authlib,
+  httpx,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
   # upstream has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pypoint"
-  ];
+  pythonImportsCheck = [ "pypoint" ];
 
   meta = with lib; {
     description = "Python module for communicating with Minut Point";
diff --git a/pkgs/development/python-modules/pypoolstation/default.nix b/pkgs/development/python-modules/pypoolstation/default.nix
index 6203e88cbf619..14e2c906f9a5e 100644
--- a/pkgs/development/python-modules/pypoolstation/default.nix
+++ b/pkgs/development/python-modules/pypoolstation/default.nix
@@ -1,28 +1,27 @@
-{ lib
-, aiohttp
-, backoff
-, buildPythonPackage
-, fetchPypi
-, importlib-metadata
-, poetry-core
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  backoff,
+  buildPythonPackage,
+  fetchPypi,
+  importlib-metadata,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pypoolstation";
-  version = "0.5.3";
+  version = "0.5.6";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-hszGCA2DDGQSh37lxp8G0bqHliH/+i2so5imDyzyOJw=";
+    hash = "sha256-E5/Z7TgIZlbIDB9I+DJI812ce8ctidDAXGCHBFzk7F8=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -33,9 +32,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pypoolstation"
-  ];
+  pythonImportsCheck = [ "pypoolstation" ];
 
   meta = with lib; {
     description = "Python library to interact the the Poolstation platform";
diff --git a/pkgs/development/python-modules/pyppeteer/default.nix b/pkgs/development/python-modules/pyppeteer/default.nix
index 186d3828f4cae..396fb5712e50c 100644
--- a/pkgs/development/python-modules/pyppeteer/default.nix
+++ b/pkgs/development/python-modules/pyppeteer/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, appdirs
-, buildPythonPackage
-, certifi
-, fetchFromGitHub
-, importlib-metadata
-, poetry-core
-, pyee
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, syncer
-, tqdm
-, urllib3
-, websockets
+{
+  lib,
+  appdirs,
+  buildPythonPackage,
+  certifi,
+  fetchFromGitHub,
+  importlib-metadata,
+  poetry-core,
+  pyee,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  syncer,
+  tqdm,
+  urllib3,
+  websockets,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
       --replace 'websockets = "^10.0"' 'websockets = "*"'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     appdirs
@@ -83,9 +82,7 @@ buildPythonPackage rec {
     "TestPDF"
   ];
 
-  pythonImportsCheck = [
-    "pyppeteer"
-  ];
+  pythonImportsCheck = [ "pyppeteer" ];
 
   meta = with lib; {
     description = "Headless chrome/chromium automation library (unofficial port of puppeteer)";
diff --git a/pkgs/development/python-modules/pyprecice/default.nix b/pkgs/development/python-modules/pyprecice/default.nix
index b390314dd9816..0013a3dbe7260 100644
--- a/pkgs/development/python-modules/pyprecice/default.nix
+++ b/pkgs/development/python-modules/pyprecice/default.nix
@@ -1,18 +1,21 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, mpi4py
-, numpy
-, precice
-, pkgconfig
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  setuptools,
+  pip,
+  cython,
+  fetchFromGitHub,
+  mpi4py,
+  numpy,
+  precice,
+  pkgconfig,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pyprecice";
-  version = "3.1.0";
-  format = "setuptools";
+  version = "3.1.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -20,10 +23,12 @@ buildPythonPackage rec {
     owner = "precice";
     repo = "python-bindings";
     rev = "refs/tags/v${version}";
-    hash = "sha256-5K6oVBhR6mBdkyOb/Ec0qg9x63tkoTnLIrE8dz8oCtc=";
+    hash = "sha256-qeDWj03Uo0Kf75MN0eI+DBwa94v7GRe6+FKYtVOM6vs=";
   };
 
   nativeBuildInputs = [
+    setuptools
+    pip
     cython
     pkgconfig
   ];
diff --git a/pkgs/development/python-modules/pypresence/default.nix b/pkgs/development/python-modules/pypresence/default.nix
index 87b32a590769a..b01f7573511f1 100644
--- a/pkgs/development/python-modules/pypresence/default.nix
+++ b/pkgs/development/python-modules/pypresence/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "pypresence";
@@ -7,7 +11,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-phkaOvM6lmfypO8BhVd8hrli7nCqgmQ8Rydopv7R+/M=";
+    hash = "sha256-phkaOvM6lmfypO8BhVd8hrli7nCqgmQ8Rydopv7R+/M=";
   };
 
   doCheck = false; # tests require internet connection
@@ -17,6 +21,6 @@ buildPythonPackage rec {
     homepage = "https://qwertyquerty.github.io/pypresence/html/index.html";
     description = "Discord RPC client written in Python";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyprind/default.nix b/pkgs/development/python-modules/pyprind/default.nix
index 58a508adf7951..9506f4c242187 100644
--- a/pkgs/development/python-modules/pyprind/default.nix
+++ b/pkgs/development/python-modules/pyprind/default.nix
@@ -1,6 +1,10 @@
-{ lib, fetchPypi, buildPythonPackage
-, psutil
-, pytest }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  psutil,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "pyprind";
@@ -24,6 +28,6 @@ buildPythonPackage rec {
     description = "Python Progress Bar and Percent Indicator Utility";
     homepage = "https://github.com/rasbt/pyprind";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyprobables/default.nix b/pkgs/development/python-modules/pyprobables/default.nix
index be4410cce276f..03a4fbd9567c4 100644
--- a/pkgs/development/python-modules/pyprobables/default.nix
+++ b/pkgs/development/python-modules/pyprobables/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-maikrZlBzhv35zPXmKqdJzAz6eZDmluLUvkOkaPTCDU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "probables"
-  ];
+  pythonImportsCheck = [ "probables" ];
 
   meta = with lib; {
     description = "Probabilistic data structures";
diff --git a/pkgs/development/python-modules/pyprof2calltree/default.nix b/pkgs/development/python-modules/pyprof2calltree/default.nix
index db979ae4297ec..7623c2f8a2474 100644
--- a/pkgs/development/python-modules/pyprof2calltree/default.nix
+++ b/pkgs/development/python-modules/pyprof2calltree/default.nix
@@ -1,19 +1,26 @@
-{ lib, buildPythonPackage, fetchFromGitHub }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "pyprof2calltree";
   version = "1.4.5";
-  format = "setuptools";
+  pyproject = true;
 
   # Fetch from GitHub because the PyPi packaged version does not
   # include all test files.
   src = fetchFromGitHub {
     owner = "pwaller";
     repo = "pyprof2calltree";
-    rev = "v" + version;
-    sha256 = "0akighssiswfhi5285rrj37am6flg3ip17c34bayq3r8yyk1iciy";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-PrIYpvcoD+zVIoOdcON41JmqzpA5FyRKhI7rqDV8cSo=";
   };
 
+  build-system = [ setuptools ];
+
   meta = with lib; {
     description = "Help visualize profiling data from cProfile with kcachegrind and qcachegrind";
     mainProgram = "pyprof2calltree";
diff --git a/pkgs/development/python-modules/pyproj/default.nix b/pkgs/development/python-modules/pyproj/default.nix
index bb98e96e02a16..4b3a6fedd0301 100644
--- a/pkgs/development/python-modules/pyproj/default.nix
+++ b/pkgs/development/python-modules/pyproj/default.nix
@@ -1,18 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, proj
-, pythonOlder
-, substituteAll
-, cython
-, pytestCheckHook
-, mock
-, certifi
-, numpy
-, shapely
-, pandas
-, xarray
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pytestCheckHook,
+  pythonOlder,
+  substituteAll,
+
+  certifi,
+  cython,
+  mock,
+  numpy,
+  pandas,
+  proj,
+  shapely,
+  xarray,
 }:
 
 buildPythonPackage rec {
@@ -35,21 +37,25 @@ buildPythonPackage rec {
       proj = proj;
       projdev = proj.dev;
     })
+
+    # fix test failure caused by update of EPSG DB
+    (fetchpatch {
+      url = "https://github.com/pyproj4/pyproj/commit/3f7c7e5bcec33d9b2f37ceb03c484ea318dff3ce.patch";
+      hash = "sha256-0J8AlInuhFDAYIBJAJ00XbqIanJY/D8xPVwlOapmLDE=";
+    })
   ];
 
   nativeBuildInputs = [ cython ];
   buildInputs = [ proj ];
 
-  propagatedBuildInputs = [
-     certifi
-  ];
+  propagatedBuildInputs = [ certifi ];
 
   nativeCheckInputs = [
-    pytestCheckHook
     mock
     numpy
-    shapely
     pandas
+    pytestCheckHook
+    shapely
     xarray
   ];
 
@@ -110,6 +116,12 @@ buildPythonPackage rec {
     homepage = "https://github.com/pyproj4/pyproj";
     changelog = "https://github.com/pyproj4/pyproj/blob/${src.rev}/docs/history.rst";
     license = licenses.mit;
-    maintainers = with maintainers; teams.geospatial.members ++ [ lsix dotlambda ];
+    maintainers =
+      with maintainers;
+      teams.geospatial.members
+      ++ [
+        lsix
+        dotlambda
+      ];
   };
 }
diff --git a/pkgs/development/python-modules/pyproject-api/default.nix b/pkgs/development/python-modules/pyproject-api/default.nix
index efcc356320152..746fd660e0d2f 100644
--- a/pkgs/development/python-modules/pyproject-api/default.nix
+++ b/pkgs/development/python-modules/pyproject-api/default.nix
@@ -1,33 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build time
-, hatchling
-, hatch-vcs
+  # build time
+  hatchling,
+  hatch-vcs,
 
-# runtime
-, packaging
-, toml
-, tomli
+  # runtime
+  packaging,
+  tomli,
 
-# docs
-, sphinxHook
-, furo
-, sphinx-autodoc-typehints
+  # docs
+  sphinxHook,
+  furo,
+  sphinx-autodoc-typehints,
 
-# tests
-, pytest-mock
-, pytestCheckHook
-, setuptools
-, virtualenv
-, wheel
+  # tests
+  pytest-mock,
+  pytestCheckHook,
+  setuptools,
+  virtualenv,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "pyproject-api";
-  version = "1.6.1";
+  version = "1.7.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -36,7 +36,7 @@ buildPythonPackage rec {
     owner = "tox-dev";
     repo = "pyproject-api";
     rev = "refs/tags/${version}";
-    hash = "sha256-XQD+36NP2zKUp/QRlgKhwzfMYBh6GVlCYXURXs2qeO8=";
+    hash = "sha256-TQ6cRkGnZpNchu+eL8gyUYbzp/7NWhG+LWeI8Hq52ok=";
   };
 
   outputs = [
@@ -54,11 +54,7 @@ buildPythonPackage rec {
     sphinx-autodoc-typehints
   ];
 
-  propagatedBuildInputs = [
-    packaging
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  propagatedBuildInputs = [ packaging ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   nativeCheckInputs = [
     pytest-mock
@@ -73,15 +69,13 @@ buildPythonPackage rec {
     "test_can_build_on_python_2"
   ];
 
-  pythonImportsCheck = [
-    "pyproject_api"
-  ];
+  pythonImportsCheck = [ "pyproject_api" ];
 
   meta = with lib; {
     changelog = "https://github.com/tox-dev/pyproject-api/releases/tag/${version}";
     description = "API to interact with the python pyproject.toml based projects";
     homepage = "https://github.com/tox-dev/pyproject-api";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyproject-hooks/default.nix b/pkgs/development/python-modules/pyproject-hooks/default.nix
index 3624b5f02edb2..28db88a18cf81 100644
--- a/pkgs/development/python-modules/pyproject-hooks/default.nix
+++ b/pkgs/development/python-modules/pyproject-hooks/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, pyproject-hooks
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, testpath
-, tomli
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  pyproject-hooks,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  testpath,
+  tomli,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,9 @@ buildPythonPackage rec {
     hash = "sha256-8nGymLl/WVXVP7ErcsH7GUjCLBprcLMVxUztrKAmTvU=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.11") [ tomli ];
 
   # We need to disable tests because this package is part of the bootstrap chain
   # and its test dependencies cannot be built yet when this is being built.
@@ -59,12 +56,10 @@ buildPythonPackage rec {
     };
   };
 
-  pythonImportsCheck = [
-    "pyproject_hooks"
-  ];
+  pythonImportsCheck = [ "pyproject_hooks" ];
 
   meta = with lib; {
-    description = "Low-level library for calling build-backends in `pyproject.toml`-based project ";
+    description = "Low-level library for calling build-backends in `pyproject.toml`-based project";
     homepage = "https://github.com/pypa/pyproject-hooks";
     changelog = "https://github.com/pypa/pyproject-hooks/blob/v${version}/docs/changelog.rst";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pyproject-metadata/default.nix b/pkgs/development/python-modules/pyproject-metadata/default.nix
index e5f5e157a52dd..1a51a0b8f8cdb 100644
--- a/pkgs/development/python-modules/pyproject-metadata/default.nix
+++ b/pkgs/development/python-modules/pyproject-metadata/default.nix
@@ -1,47 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, packaging
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, tomli
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  packaging,
+  pytestCheckHook,
+  pythonOlder,
+  tomli,
 }:
 
 buildPythonPackage rec {
   pname = "pyproject-metadata";
-  version = "0.7.1";
+  version = "0.8.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
-  src = fetchPypi rec {
-    inherit pname version;
-    hash = "sha256-CpTxixCLmyHzomo9VB8FbDTtyxfchyoUShVhj+1672c=";
+  src = fetchPypi {
+    pname = "pyproject_metadata";
+    inherit version;
+    hash = "sha256-N21aAHZKwpRApUV5+I5mt9nLfmKdNcNaHHJIv+vJtFU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
-  ];
+  build-system = [ flit-core ];
 
-  propagatedBuildInputs = [
-    packaging
-  ];
+  dependencies = [ packaging ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  nativeCheckInputs = [ pytestCheckHook ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   # Many broken tests, and missing test files
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyproject_metadata"
-  ];
+  pythonImportsCheck = [ "pyproject_metadata" ];
 
   meta = with lib; {
     description = "PEP 621 metadata parsing";
diff --git a/pkgs/development/python-modules/pyproject-parser/default.nix b/pkgs/development/python-modules/pyproject-parser/default.nix
new file mode 100644
index 0000000000000..246146a1c5a26
--- /dev/null
+++ b/pkgs/development/python-modules/pyproject-parser/default.nix
@@ -0,0 +1,50 @@
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  setuptools,
+  apeye-core,
+  attrs,
+  dom-toml,
+  domdf-python-tools,
+  natsort,
+  packaging,
+  shippinglabel,
+  typing-extensions,
+}:
+buildPythonPackage rec {
+  pname = "pyproject-parser";
+  version = "0.11.1";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-0ejtu6OlSA6w/z/+j2lDuikFGZh4r/HLBZhJAKZhggE=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    apeye-core
+    attrs
+    dom-toml
+    domdf-python-tools
+    natsort
+    packaging
+    shippinglabel
+    typing-extensions
+  ];
+
+  nativeCheckInputs = [ ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail '"setuptools!=61.*,<=67.1.0,>=40.6.0"' '"setuptools"'
+  '';
+
+  meta = {
+    description = "Parser for ‘pyproject.toml’";
+    homepage = "https://github.com/repo-helper/pyproject-parser";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tyberius-prime ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyprosegur/default.nix b/pkgs/development/python-modules/pyprosegur/default.nix
index f1be9de65abb3..6e79fae9dde87 100644
--- a/pkgs/development/python-modules/pyprosegur/default.nix
+++ b/pkgs/development/python-modules/pyprosegur/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, aiofiles
-, aiohttp
-, backoff
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiofiles,
+  aiohttp,
+  backoff,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyprosegur";
-  version = "0.0.10";
+  version = "0.0.12";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,14 +21,12 @@ buildPythonPackage rec {
     owner = "dgomes";
     repo = "pyprosegur";
     rev = "refs/tags/${version}";
-    hash = "sha256-OHFJhufymD181FODHlIu+O5xh9dfKwEIVQX/zTOC6ks=";
+    hash = "sha256-A223aafa0eXNBVd2cVVV7p2wXg4Z2rcoggM3czmRsOE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiofiles
     aiohttp
     backoff
@@ -37,9 +36,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyprosegur"
-  ];
+  pythonImportsCheck = [ "pyprosegur" ];
 
   meta = with lib; {
     description = "Python module to communicate with Prosegur Residential Alarms";
diff --git a/pkgs/development/python-modules/pyprusalink/default.nix b/pkgs/development/python-modules/pyprusalink/default.nix
index 7e8a924c96c74..61b482ee5846a 100644
--- a/pkgs/development/python-modules/pyprusalink/default.nix
+++ b/pkgs/development/python-modules/pyprusalink/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, httpx
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpx,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,23 +21,17 @@ buildPythonPackage rec {
     hash = "sha256-Opip696hXV1gqFC1cWfrSCkrsldl7M7XZAqUaVkDy7M=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    httpx
-  ];
+  propagatedBuildInputs = [ httpx ];
 
   # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyprusalink"
-  ];
+  pythonImportsCheck = [ "pyprusalink" ];
 
   meta = with lib; {
-    description = "Library to communicate with PrusaLink ";
+    description = "Library to communicate with PrusaLink";
     homepage = "https://github.com/home-assistant-libs/pyprusalink";
     changelog = "https://github.com/home-assistant-libs/pyprusalink/releases/tag/${version}";
     license = with licenses; [ asl20 ];
diff --git a/pkgs/development/python-modules/pypsrp/default.nix b/pkgs/development/python-modules/pypsrp/default.nix
index 1dd8c57a260d3..faddf2906f5fe 100644
--- a/pkgs/development/python-modules/pypsrp/default.nix
+++ b/pkgs/development/python-modules/pypsrp/default.nix
@@ -1,22 +1,21 @@
-{ lib
-, asyncssh
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, gssapi
-, httpcore
-, httpx
-, krb5
-, psrpcore
-, psutil
-, pyspnego
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, requests
-, requests-credssp
-, xmldiff
+{
+  lib,
+  asyncssh,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  httpcore,
+  httpx,
+  psrpcore,
+  psutil,
+  pyspnego,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  requests,
+  requests-credssp,
+  xmldiff,
 }:
 
 buildPythonPackage rec {
@@ -50,25 +49,13 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    credssp = [
-      requests-credssp
-    ];
-    kerberos = [
-      # pyspnego[kerberos] will have those two dependencies
-      gssapi
-      krb5
-    ];
-    named_pipe = [
-      psutil
-    ];
-    ssh = [
-      asyncssh
-    ];
+    credssp = [ requests-credssp ];
+    kerberos = pyspnego.optional-dependencies.kerberos;
+    named_pipe = [ psutil ];
+    ssh = [ asyncssh ];
   };
 
-  pythonImportsCheck = [
-    "pypsrp"
-  ];
+  pythonImportsCheck = [ "pypsrp" ];
 
   disabledTests = [
     # TypeError: Backend.load_rsa_private_numbers() missing 1 required...
diff --git a/pkgs/development/python-modules/pyptlib/default.nix b/pkgs/development/python-modules/pyptlib/default.nix
index 24d4cbf86b293..04a7a13248a2f 100644
--- a/pkgs/development/python-modules/pyptlib/default.nix
+++ b/pkgs/development/python-modules/pyptlib/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPyPy
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -16,12 +17,11 @@ buildPythonPackage rec {
     sha256 = "01y6vbwncqb0hxlnin6whd9wrrm5my4qzjhk76fnix78v7ip515r";
   };
 
-  doCheck = false;  # No such file or directory errors on 32bit
+  doCheck = false; # No such file or directory errors on 32bit
 
   meta = with lib; {
     homepage = "https://pypi.org/project/pyptlib/";
-    description = "A python implementation of the Pluggable Transports for Circumvention specification for Tor";
+    description = "Python implementation of the Pluggable Transports for Circumvention specification for Tor";
     license = licenses.bsd2;
   };
-
 }
diff --git a/pkgs/development/python-modules/pypubsub/default.nix b/pkgs/development/python-modules/pypubsub/default.nix
index e883700ca78ba..cac77e5cc2cd2 100644
--- a/pkgs/development/python-modules/pypubsub/default.nix
+++ b/pkgs/development/python-modules/pypubsub/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy27, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "pypubsub";
@@ -24,14 +30,14 @@ buildPythonPackage rec {
     homepage = "https://github.com/schollii/pypubsub";
     description = "Python 3 publish-subcribe library";
     longDescription = ''
-     Provides a publish-subscribe API to facilitate event-based or
-     message-based  architecture in a single-process application. It is pure
-     Python  and works on Python 3.3+. It is centered on the notion of a topic;
-     senders publish messages of a given topic, and listeners subscribe to
-     messages of a given topic, all inside the same process. The package also
-     supports a variety of advanced features that facilitate debugging and
-     maintaining topics and messages in larger desktop- or server-based
-     applications.
+      Provides a publish-subscribe API to facilitate event-based or
+      message-based  architecture in a single-process application. It is pure
+      Python  and works on Python 3.3+. It is centered on the notion of a topic;
+      senders publish messages of a given topic, and listeners subscribe to
+      messages of a given topic, all inside the same process. The package also
+      supports a variety of advanced features that facilitate debugging and
+      maintaining topics and messages in larger desktop- or server-based
+      applications.
     '';
     license = licenses.bsd2;
     maintainers = with maintainers; [ tfmoraes ];
diff --git a/pkgs/development/python-modules/pypugjs/default.nix b/pkgs/development/python-modules/pypugjs/default.nix
index 6f8bf6c67a253..0ad48f55d9315 100644
--- a/pkgs/development/python-modules/pypugjs/default.nix
+++ b/pkgs/development/python-modules/pypugjs/default.nix
@@ -1,46 +1,46 @@
-{ lib
-, buildPythonPackage
-, charset-normalizer
-, django
-, fetchFromGitHub
-, jinja2
-, mako
-, nose
-, pyramid
-, pyramid-mako
-, pytestCheckHook
-, six
-, tornado
+{
+  lib,
+  buildPythonPackage,
+  charset-normalizer,
+  django,
+  fetchFromGitHub,
+  jinja2,
+  mako,
+  pyramid,
+  pyramid-mako,
+  pytestCheckHook,
+  six,
+  tornado,
 }:
 
 buildPythonPackage rec {
   pname = "pypugjs";
-  version = "5.9.12";
+  version = "5.10.1";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "kakulukia";
     repo = "pypugjs";
-    rev = "v${version}";
-    hash = "sha256-6tIhKCa8wg01gNFygCS6GdUHfbWBu7wOZeMkCExRR34=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-W+EVNxT2OimNENHe4lJDn6Wm1EbBysGuCD3/Wkdew/U=";
   };
 
-  propagatedBuildInputs = [ six charset-normalizer ];
+  propagatedBuildInputs = [
+    six
+    charset-normalizer
+  ];
 
   nativeCheckInputs = [
     django
     jinja2
     mako
-    nose
     tornado
     pyramid
     pyramid-mako
     pytestCheckHook
   ];
 
-  pytestCheckFlags = [
-    "pypugjs/testsuite"
-  ];
+  pytestCheckFlags = [ "pypugjs/testsuite" ];
 
   meta = with lib; {
     description = "PugJS syntax template adapter for Django, Jinja2, Mako and Tornado templates";
diff --git a/pkgs/development/python-modules/pypykatz/default.nix b/pkgs/development/python-modules/pypykatz/default.nix
index 84d92530f9c5a..3dfe0131ebf2e 100644
--- a/pkgs/development/python-modules/pypykatz/default.nix
+++ b/pkgs/development/python-modules/pypykatz/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, aesedb
-, aiosmb
-, aiowinreg
-, buildPythonPackage
-, fetchPypi
-, minidump
-, minikerberos
-, msldap
-, pythonOlder
-, winsspi
+{
+  lib,
+  aesedb,
+  aiosmb,
+  aiowinreg,
+  buildPythonPackage,
+  fetchPypi,
+  minidump,
+  minikerberos,
+  msldap,
+  pythonOlder,
+  winsspi,
 }:
 
 buildPythonPackage rec {
   pname = "pypykatz";
-  version = "0.6.9";
+  version = "0.6.10";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Xni2cYI+ByTFSDvuWHDU97KljwMe3aT7P+VIir6ktks=";
+    hash = "sha256-M0LjYIa8leoMs/hDWM2nLqH8R00ZAL6uOCyXHA/0AJY=";
   };
 
   propagatedBuildInputs = [
@@ -36,9 +37,7 @@ buildPythonPackage rec {
   # Project doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pypykatz"
-  ];
+  pythonImportsCheck = [ "pypykatz" ];
 
   meta = with lib; {
     description = "Mimikatz implementation in Python";
diff --git a/pkgs/development/python-modules/pypytools/default.nix b/pkgs/development/python-modules/pypytools/default.nix
index 870768dc81129..6c6a74b43a9e3 100644
--- a/pkgs/development/python-modules/pypytools/default.nix
+++ b/pkgs/development/python-modules/pypytools/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, attrs
-, freezegun
-, numpy
-, py
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchpatch,
+  fetchPypi,
+  attrs,
+  freezegun,
+  numpy,
+  py,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-oUDAU+TRwLroNfQGYusAQKdRkHcazysqiDLfp77v5Sk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     # attrs is an implicit dependency
@@ -50,9 +49,7 @@ buildPythonPackage rec {
     })
   ];
 
-  pythonImportsCheck = [
-    "pypytools"
-  ];
+  pythonImportsCheck = [ "pypytools" ];
 
   disabledTests = lib.optionals (pythonAtLeast "3.11") [
     # https://github.com/antocuni/pypytools/issues/4
diff --git a/pkgs/development/python-modules/pyqldb/default.nix b/pkgs/development/python-modules/pyqldb/default.nix
index 377a33cb90a3a..ce8daa6c2887a 100644
--- a/pkgs/development/python-modules/pyqldb/default.nix
+++ b/pkgs/development/python-modules/pyqldb/default.nix
@@ -1,4 +1,12 @@
-{ lib, buildPythonPackage, fetchFromGitHub, boto3, amazon-ion, ionhash, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  boto3,
+  amazon-ion,
+  ionhash,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "pyqldb";
@@ -12,7 +20,11 @@ buildPythonPackage rec {
     hash = "sha256-TyIXvk3ZJn5J2SBFDTPJpSnGFOFheXIqR2daL5npOk8=";
   };
 
-  propagatedBuildInputs = [ boto3 amazon-ion ionhash ];
+  propagatedBuildInputs = [
+    boto3
+    amazon-ion
+    ionhash
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
diff --git a/pkgs/development/python-modules/pyqrcode/default.nix b/pkgs/development/python-modules/pyqrcode/default.nix
index 2b0ce5193555f..c624964eecf3e 100644
--- a/pkgs/development/python-modules/pyqrcode/default.nix
+++ b/pkgs/development/python-modules/pyqrcode/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "pyqrcode";
@@ -14,7 +18,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A QR code generator written purely in Python with SVG, EPS, PNG and terminal output";
+    description = "QR code generator written purely in Python with SVG, EPS, PNG and terminal output";
     homepage = "https://github.com/mnooner256/pyqrcode";
     license = licenses.bsd3;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/pkgs/development/python-modules/pyqt-builder/default.nix b/pkgs/development/python-modules/pyqt-builder/default.nix
index 1bf96713a4fe5..ef00791037b3c 100644
--- a/pkgs/development/python-modules/pyqt-builder/default.nix
+++ b/pkgs/development/python-modules/pyqt-builder/default.nix
@@ -1,29 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, packaging
-, setuptools
-, sip
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  packaging,
+  setuptools,
+  setuptools-scm,
+  sip,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "pyqt-builder";
-  version = "1.15.4";
+  version = "1.16.2";
   format = "pyproject";
 
   src = fetchPypi {
-    pname = "PyQt-builder";
+    pname = "pyqt_builder";
     inherit version;
-    hash = "sha256-OfjHXbF9nOF8trvz3xZQtc68HqTlvXOEPSHMlmErKuE=";
+    hash = "sha256-v3I823zSPSUS4qzae8a4HwD7BczF6aiEa9NNR1FM3bk=";
   };
 
   nativeBuildInputs = [
     setuptools
+    setuptools-scm
     wheel
   ];
 
-  propagatedBuildInputs = [ packaging sip ];
+  propagatedBuildInputs = [
+    packaging
+    sip
+  ];
 
   pythonImportsCheck = [ "pyqtbuild" ];
 
@@ -32,7 +38,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "PEP 517 compliant build system for PyQt";
-    homepage = "https://pypi.org/project/PyQt-builder/";
+    homepage = "https://github.com/Python-PyQt/PyQt-builder";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ nrdxp ];
   };
diff --git a/pkgs/development/python-modules/pyqt/5.x.nix b/pkgs/development/python-modules/pyqt/5.x.nix
index 0af19e2c174ef..5e1c966735559 100644
--- a/pkgs/development/python-modules/pyqt/5.x.nix
+++ b/pkgs/development/python-modules/pyqt/5.x.nix
@@ -1,33 +1,34 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, setuptools
-, isPy27
-, fetchPypi
-, pkg-config
-, dbus
-, lndir
-, dbus-python
-, sip
-, pyqt5-sip
-, pyqt-builder
-, libsForQt5
-, enableVerbose ? true
-, withConnectivity ? false
-, withMultimedia ? false
-, withWebKit ? false
-, withWebSockets ? false
-, withLocation ? false
-, withSerialPort ? false
-, withTools ? false
-, pkgsBuildTarget
-, buildPackages
-, dbusSupport ? !stdenv.isDarwin
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  setuptools,
+  isPy27,
+  fetchPypi,
+  pkg-config,
+  dbus,
+  lndir,
+  dbus-python,
+  sip,
+  pyqt5-sip,
+  pyqt-builder,
+  libsForQt5,
+  mesa,
+  enableVerbose ? true,
+  withConnectivity ? false,
+  withMultimedia ? false,
+  withWebKit ? false,
+  withWebSockets ? false,
+  withLocation ? false,
+  withSerialPort ? false,
+  withTools ? false,
+  pkgsBuildTarget,
+  dbusSupport ? !stdenv.hostPlatform.isDarwin,
 }:
 
 buildPythonPackage rec {
   pname = "pyqt5";
-  version = "5.15.9";
+  version = "5.15.10";
   format = "pyproject";
 
   disabled = isPy27;
@@ -35,7 +36,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "PyQt5";
     inherit version;
-    hash = "sha256-3EHoQBqQ3D4raStBG9VJKrVZrieidCTu1L05FVZOxMA=";
+    hash = "sha256-1Gt4BLGxCk/5F1P4ET5bVYDStEYvMiYoji2ESXM0iYo=";
   };
 
   patches = [
@@ -47,52 +48,54 @@ buildPythonPackage rec {
   ];
 
   postPatch =
-  # be more verbose
-  ''
-    cat >> pyproject.toml <<EOF
-  '' + lib.optionalString enableVerbose ''
-    [tool.sip.project]
-    verbose = true
-  ''
-  # Due to bug in SIP .whl name generation we have to bump minimal macos sdk upto 11.0 for
-  # aarch64-darwin. This patch can be removed once SIP will fix it in upstream,
-  # see https://github.com/NixOS/nixpkgs/pull/186612#issuecomment-1214635456.
-  + lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) ''
-    minimum-macos-version = "11.0"
-  '' + ''
-    EOF
-  ''
-
-  # pyqt-builder tries to compile *and run* these programs.  This
-  # is really sad because the only thing they do is print out a
-  # flag based on whether or not some compile-time symbol was
-  # defined.  This could all be done without having to *execute*
-  # cross-compiled programs!
-  #
-  # Here is the complete list of things checked:
-  #
-  # QT_NO_PRINTDIALOG                                                           => PyQt_PrintDialog
-  # QT_NO_PRINTER                                                               => PyQt_Printer
-  # QT_NO_PRINTPREVIEWDIALOG                                                    => PyQt_PrintPreviewDialog
-  # QT_NO_PRINTPREVIEWWIDGET                                                    => PyQt_PrintPreviewWidget
-  # QT_NO_SSL                                                                   => PyQt_SSL
-  # QT_SHARED || QT_DLL                                                         => shared (otherwise static)
-  # QT_NO_PROCESS                                                               => PyQt_Process
-  # QT_NO_FPU || Q_PROCESSOR_ARM || Q_OS_WINCE                                  => PyQt_qreal_double
-  # sizeof (qreal) != sizeof (double)                                           => PyQt_qreal_double
-  # !Q_COMPILER_CONSTEXPR !Q_COMPILER_UNIFORM_INIT                              => PyQt_CONSTEXPR
-  # QT_NO_ACCESSIBILITY                                                         => PyQt_Accessibility
-  # QT_NO_OPENGL                                                                => PyQt_OpenGL PyQt_Desktop_OpenGL
-  # defined(QT_OPENGL_ES) || defined(QT_OPENGL_ES_2) || defined(QT_OPENGL_ES_3) => PyQt_Desktop_OpenGL
-  # QT_NO_RAWFONT                                                               => PyQt_RawFont
-  # QT_NO_SESSIONMANAGER                                                        => PyQt_SessionManager
-  #
-  + lib.optionalString (!(stdenv.buildPlatform.canExecute stdenv.hostPlatform)) ''
-    rm config-tests/cfgtest_QtCore.cpp
-    rm config-tests/cfgtest_QtGui.cpp
-    rm config-tests/cfgtest_QtNetwork.cpp
-    rm config-tests/cfgtest_QtPrintSupport.cpp
-  '';
+    # be more verbose
+    ''
+      cat >> pyproject.toml <<EOF
+    ''
+    + lib.optionalString enableVerbose ''
+      [tool.sip.project]
+      verbose = true
+    ''
+    # Due to bug in SIP .whl name generation we have to bump minimal macos sdk upto 11.0 for
+    # aarch64-darwin. This patch can be removed once SIP will fix it in upstream,
+    # see https://github.com/NixOS/nixpkgs/pull/186612#issuecomment-1214635456.
+    + lib.optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) ''
+      minimum-macos-version = "11.0"
+    ''
+    + ''
+      EOF
+    ''
+
+    # pyqt-builder tries to compile *and run* these programs.  This
+    # is really sad because the only thing they do is print out a
+    # flag based on whether or not some compile-time symbol was
+    # defined.  This could all be done without having to *execute*
+    # cross-compiled programs!
+    #
+    # Here is the complete list of things checked:
+    #
+    # QT_NO_PRINTDIALOG                                                           => PyQt_PrintDialog
+    # QT_NO_PRINTER                                                               => PyQt_Printer
+    # QT_NO_PRINTPREVIEWDIALOG                                                    => PyQt_PrintPreviewDialog
+    # QT_NO_PRINTPREVIEWWIDGET                                                    => PyQt_PrintPreviewWidget
+    # QT_NO_SSL                                                                   => PyQt_SSL
+    # QT_SHARED || QT_DLL                                                         => shared (otherwise static)
+    # QT_NO_PROCESS                                                               => PyQt_Process
+    # QT_NO_FPU || Q_PROCESSOR_ARM || Q_OS_WINCE                                  => PyQt_qreal_double
+    # sizeof (qreal) != sizeof (double)                                           => PyQt_qreal_double
+    # !Q_COMPILER_CONSTEXPR !Q_COMPILER_UNIFORM_INIT                              => PyQt_CONSTEXPR
+    # QT_NO_ACCESSIBILITY                                                         => PyQt_Accessibility
+    # QT_NO_OPENGL                                                                => PyQt_OpenGL PyQt_Desktop_OpenGL
+    # defined(QT_OPENGL_ES) || defined(QT_OPENGL_ES_2) || defined(QT_OPENGL_ES_3) => PyQt_Desktop_OpenGL
+    # QT_NO_RAWFONT                                                               => PyQt_RawFont
+    # QT_NO_SESSIONMANAGER                                                        => PyQt_SessionManager
+    #
+    + lib.optionalString (!(stdenv.buildPlatform.canExecute stdenv.hostPlatform)) ''
+      rm config-tests/cfgtest_QtCore.cpp
+      rm config-tests/cfgtest_QtGui.cpp
+      rm config-tests/cfgtest_QtNetwork.cpp
+      rm config-tests/cfgtest_QtPrintSupport.cpp
+    '';
 
   enableParallelBuilding = true;
   # HACK: paralellize compilation of make calls within pyqt's setup.py
@@ -106,56 +109,57 @@ buildPythonPackage rec {
   '';
 
   # tons of warnings from subpackages, no point in playing whack-a-mole
-  env = lib.optionalAttrs (!enableVerbose) {
-    NIX_CFLAGS_COMPILE = "-w";
-  };
+  env = lib.optionalAttrs (!enableVerbose) { NIX_CFLAGS_COMPILE = "-w"; };
 
-  outputs = [ "out" "dev" ];
+  outputs = [
+    "out"
+    "dev"
+  ];
 
   dontWrapQtApps = true;
 
-  nativeBuildInputs = [
-    pkg-config
-  ] ++ lib.optionals (stdenv.buildPlatform == stdenv.hostPlatform) [
-    libsForQt5.qmake
-  ] ++ [
-    setuptools
-    lndir
-    sip
-  ] ++ (with pkgsBuildTarget.targetPackages.libsForQt5; [
-  ] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
-    qmake
-  ] ++ [
-    qtbase
-    qtsvg
-    qtdeclarative
-    qtwebchannel
-  ]
-    ++ lib.optional withConnectivity qtconnectivity
-    ++ lib.optional withMultimedia qtmultimedia
-    ++ lib.optional withWebKit qtwebkit
-    ++ lib.optional withWebSockets qtwebsockets
-    ++ lib.optional withLocation qtlocation
-    ++ lib.optional withSerialPort qtserialport
-    ++ lib.optional withTools qttools
-  );
-
-  buildInputs = with libsForQt5; [
-    dbus
-  ] ++ lib.optionals (stdenv.buildPlatform == stdenv.hostPlatform) [
-    qtbase
-  ] ++ [
-    qtsvg
-    qtdeclarative
-    pyqt-builder
-  ]
+  nativeBuildInputs =
+    [ pkg-config ]
+    ++ lib.optionals (stdenv.buildPlatform == stdenv.hostPlatform) [ libsForQt5.qmake ]
+    ++ [
+      setuptools
+      lndir
+      sip
+    ]
+    ++ (
+      with pkgsBuildTarget.targetPackages.libsForQt5;
+      [ ]
+      ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ qmake ]
+      ++ [
+        qtbase
+        qtsvg
+        qtdeclarative
+        qtwebchannel
+      ]
+      ++ lib.optional withConnectivity qtconnectivity
+      ++ lib.optional withMultimedia qtmultimedia
+      ++ lib.optional withWebKit qtwebkit
+      ++ lib.optional withWebSockets qtwebsockets
+      ++ lib.optional withLocation qtlocation
+      ++ lib.optional withSerialPort qtserialport
+      ++ lib.optional withTools qttools
+    );
+
+  buildInputs =
+    with libsForQt5;
+    [ dbus ]
+    ++ lib.optionals (stdenv.buildPlatform == stdenv.hostPlatform) [ qtbase ]
+    ++ [
+      qtsvg
+      qtdeclarative
+      pyqt-builder
+    ]
     ++ lib.optional withConnectivity qtconnectivity
     ++ lib.optional withWebKit qtwebkit
     ++ lib.optional withWebSockets qtwebsockets
     ++ lib.optional withLocation qtlocation
     ++ lib.optional withSerialPort qtserialport
-    ++ lib.optional withTools qttools
-  ;
+    ++ lib.optional withTools qttools;
 
   propagatedBuildInputs = [
     dbus-python
@@ -178,27 +182,27 @@ buildPythonPackage rec {
   # Checked using pythonImportsCheck
   doCheck = false;
 
-  pythonImportsCheck = [
-    "PyQt5"
-    "PyQt5.QtCore"
-    "PyQt5.QtQml"
-    "PyQt5.QtWidgets"
-    "PyQt5.QtGui"
-  ]
+  pythonImportsCheck =
+    [
+      "PyQt5"
+      "PyQt5.QtCore"
+      "PyQt5.QtQml"
+      "PyQt5.QtWidgets"
+      "PyQt5.QtGui"
+    ]
     ++ lib.optional withWebSockets "PyQt5.QtWebSockets"
     ++ lib.optional withWebKit "PyQt5.QtWebKit"
     ++ lib.optional withMultimedia "PyQt5.QtMultimedia"
     ++ lib.optional withConnectivity "PyQt5.QtBluetooth"
     ++ lib.optional withLocation "PyQt5.QtPositioning"
     ++ lib.optional withSerialPort "PyQt5.QtSerialPort"
-    ++ lib.optional withTools "PyQt5.QtDesigner"
-  ;
+    ++ lib.optional withTools "PyQt5.QtDesigner";
 
   meta = with lib; {
     description = "Python bindings for Qt5";
-    homepage    = "https://riverbankcomputing.com/";
-    license     = licenses.gpl3Only;
-    platforms   = platforms.mesaPlatforms;
+    homepage = "https://riverbankcomputing.com/";
+    license = licenses.gpl3Only;
+    inherit (mesa.meta) platforms;
     maintainers = with maintainers; [ sander ];
   };
 }
diff --git a/pkgs/development/python-modules/pyqt/6.x.nix b/pkgs/development/python-modules/pyqt/6.x.nix
index a568257c59000..9f031347d354e 100644
--- a/pkgs/development/python-modules/pyqt/6.x.nix
+++ b/pkgs/development/python-modules/pyqt/6.x.nix
@@ -1,24 +1,26 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchurl
-, pkg-config
-, dbus
-, lndir
-, setuptools
-, dbus-python
-, sip
-, pyqt6-sip
-, pyqt-builder
-, qt6Packages
-, pythonOlder
-, withMultimedia ? true
-, withWebSockets ? true
-, withLocation ? true
-# Not currently part of PyQt6
-#, withConnectivity ? true
-, withPrintSupport ? true
-, cups
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchurl,
+  pkg-config,
+  dbus,
+  lndir,
+  setuptools,
+  dbus-python,
+  sip,
+  pyqt6-sip,
+  pyqt-builder,
+  qt6Packages,
+  pythonOlder,
+  mesa,
+  withMultimedia ? true,
+  withWebSockets ? true,
+  withLocation ? true,
+  # Not currently part of PyQt6
+  #, withConnectivity ? true
+  withPrintSupport ? true,
+  cups,
 }:
 
 buildPythonPackage rec {
@@ -68,51 +70,55 @@ buildPythonPackage rec {
     export MAKEFLAGS+="''${enableParallelBuilding:+-j$NIX_BUILD_CORES}"
   '';
 
-  outputs = [ "out" "dev" ];
+  outputs = [
+    "out"
+    "dev"
+  ];
 
   dontWrapQtApps = true;
 
-  nativeBuildInputs = with qt6Packages; [
-    pkg-config
-    lndir
-    sip
-    qtbase
-    qtsvg
-    qtdeclarative
-    qtwebchannel
-    qmake
-    qtquick3d
-    qtquicktimeline
-  ]
-  # ++ lib.optional withConnectivity qtconnectivity
-  ++ lib.optional withMultimedia qtmultimedia
-  ++ lib.optional withWebSockets qtwebsockets
-  ++ lib.optional withLocation qtlocation
-  ;
-
-  buildInputs = with qt6Packages; [
-    dbus
-    qtbase
-    qtsvg
-    qtdeclarative
-    pyqt-builder
-    qtquick3d
-    qtquicktimeline
-  ]
-  # ++ lib.optional withConnectivity qtconnectivity
-  ++ lib.optional withWebSockets qtwebsockets
-  ++ lib.optional withLocation qtlocation
-  ;
-
-  propagatedBuildInputs = [
-    dbus-python
-    pyqt6-sip
-    setuptools
-  ]
-  # ld: library not found for -lcups
-  ++ lib.optionals (withPrintSupport && stdenv.isDarwin) [
-    cups
-  ];
+  nativeBuildInputs =
+    with qt6Packages;
+    [
+      pkg-config
+      lndir
+      sip
+      qtbase
+      qtsvg
+      qtdeclarative
+      qtwebchannel
+      qmake
+      qtquick3d
+      qtquicktimeline
+    ]
+    # ++ lib.optional withConnectivity qtconnectivity
+    ++ lib.optional withMultimedia qtmultimedia
+    ++ lib.optional withWebSockets qtwebsockets
+    ++ lib.optional withLocation qtlocation;
+
+  buildInputs =
+    with qt6Packages;
+    [
+      dbus
+      qtbase
+      qtsvg
+      qtdeclarative
+      pyqt-builder
+      qtquick3d
+      qtquicktimeline
+    ]
+    # ++ lib.optional withConnectivity qtconnectivity
+    ++ lib.optional withWebSockets qtwebsockets
+    ++ lib.optional withLocation qtlocation;
+
+  propagatedBuildInputs =
+    [
+      dbus-python
+      pyqt6-sip
+      setuptools
+    ]
+    # ld: library not found for -lcups
+    ++ lib.optionals (withPrintSupport && stdenv.hostPlatform.isDarwin) [ cups ];
 
   passthru = {
     inherit sip pyqt6-sip;
@@ -125,27 +131,27 @@ buildPythonPackage rec {
   # Checked using pythonImportsCheck, has no tests
   doCheck = true;
 
-  pythonImportsCheck = [
-    "PyQt6"
-    "PyQt6.QtCore"
-    "PyQt6.QtQml"
-    "PyQt6.QtWidgets"
-    "PyQt6.QtGui"
-    "PyQt6.QtQuick"
-  ]
-  ++ lib.optional withWebSockets "PyQt6.QtWebSockets"
-  ++ lib.optional withMultimedia "PyQt6.QtMultimedia"
-  # ++ lib.optional withConnectivity "PyQt6.QtConnectivity"
-  ++ lib.optional withLocation "PyQt6.QtPositioning"
-  ;
-
-  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-Wno-address-of-temporary";
+  pythonImportsCheck =
+    [
+      "PyQt6"
+      "PyQt6.QtCore"
+      "PyQt6.QtQml"
+      "PyQt6.QtWidgets"
+      "PyQt6.QtGui"
+      "PyQt6.QtQuick"
+    ]
+    ++ lib.optional withWebSockets "PyQt6.QtWebSockets"
+    ++ lib.optional withMultimedia "PyQt6.QtMultimedia"
+    # ++ lib.optional withConnectivity "PyQt6.QtConnectivity"
+    ++ lib.optional withLocation "PyQt6.QtPositioning";
+
+  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin "-Wno-address-of-temporary";
 
   meta = with lib; {
     description = "Python bindings for Qt6";
     homepage = "https://riverbankcomputing.com/";
     license = licenses.gpl3Only;
-    platforms = platforms.mesaPlatforms;
+    inherit (mesa.meta) platforms;
     maintainers = with maintainers; [ LunNova ];
   };
 }
diff --git a/pkgs/development/python-modules/pyqt/pyqt6-sip.nix b/pkgs/development/python-modules/pyqt/pyqt6-sip.nix
index f9b9bc308c804..e4b6c28d8b536 100644
--- a/pkgs/development/python-modules/pyqt/pyqt6-sip.nix
+++ b/pkgs/development/python-modules/pyqt/pyqt6-sip.nix
@@ -1,16 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mesa,
 }:
 
 buildPythonPackage rec {
   pname = "pyqt6-sip";
-  version = "13.6.0";
+  version = "13.8.0";
 
   src = fetchPypi {
     pname = "PyQt6_sip";
     inherit version;
-    hash = "sha256-JIbhWIBxlD1PZle6CQltyf/9IyKtLDAEHnjqPwN7V3g=";
+    hash = "sha256-L3TPPW2cq1FSvZ9J1XCy37h1U+u1xJGav94n9bn9adQ=";
   };
 
   # There is no test code and the check phase fails with:
@@ -20,9 +22,9 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python bindings for Qt5";
-    homepage = "https://www.riverbankcomputing.com/software/sip/";
+    homepage = "https://github.com/Python-SIP/sip";
     license = licenses.gpl3Only;
-    platforms = platforms.mesaPlatforms;
+    inherit (mesa.meta) platforms;
     maintainers = with maintainers; [ LunNova ];
   };
 }
diff --git a/pkgs/development/python-modules/pyqt/sip.nix b/pkgs/development/python-modules/pyqt/sip.nix
index 3702bad5cac7a..4a4ceebf66a6e 100644
--- a/pkgs/development/python-modules/pyqt/sip.nix
+++ b/pkgs/development/python-modules/pyqt/sip.nix
@@ -1,28 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mesa,
 }:
 
 buildPythonPackage rec {
   pname = "pyqt5-sip";
-  version = "12.13.0";
+  version = "12.15.0";
 
   src = fetchPypi {
     pname = "PyQt5_sip";
     inherit version;
-    hash = "sha256-fzIdr4S5ydvKYbgOHvN72v/A6TMS7a4s19oluVOXHZE=";
+    hash = "sha256-0j/fzzY7XO3Z05+KnFcQ59UoBPWwiljpHGOLNur8twI=";
   };
 
   # There is no test code and the check phase fails with:
   # > error: could not create 'PyQt5/sip.cpython-38-x86_64-linux-gnu.so': No such file or directory
   doCheck = false;
-  pythonImportsCheck = ["PyQt5.sip"];
+  pythonImportsCheck = [ "PyQt5.sip" ];
 
   meta = with lib; {
     description = "Python bindings for Qt5";
-    homepage    = "https://www.riverbankcomputing.com/software/sip/";
-    license     = licenses.gpl3Only;
-    platforms   = platforms.mesaPlatforms;
+    homepage = "https://github.com/Python-SIP/sip";
+    license = licenses.gpl3Only;
+    inherit (mesa.meta) platforms;
     maintainers = with maintainers; [ sander ];
   };
 }
diff --git a/pkgs/development/python-modules/pyqt3d/default.nix b/pkgs/development/python-modules/pyqt3d/default.nix
index c6129a08680e8..487ab3a109859 100644
--- a/pkgs/development/python-modules/pyqt3d/default.nix
+++ b/pkgs/development/python-modules/pyqt3d/default.nix
@@ -1,19 +1,19 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pyqt5
-, pyqt-builder
-, python
-, pythonOlder
-, qt3d
-, setuptools
-, sip
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyqt5,
+  pyqt-builder,
+  python,
+  pythonOlder,
+  qt3d,
+  setuptools,
+  sip,
 }:
 
 buildPythonPackage rec {
   pname = "pyqt3d";
-  version = "5.15.6";
+  version = "5.15.7";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "PyQt3D";
     inherit version;
-    hash = "sha256-fWxtVc2PwiGzE8mVwPhymjdxFJJvA3f46QEdRevziBw=";
+    hash = "sha256-6ng+tUbH2tLV6q+C6lBQ3eRSVamELgoddYSIHp4lqVE=";
   };
 
   postPatch = ''
@@ -29,7 +29,10 @@ buildPythonPackage rec {
       --replace "[tool.sip.project]" "[tool.sip.project]''\nsip-include-dirs = [\"${pyqt5}/${python.sitePackages}/PyQt5/bindings\"]"
   '';
 
-  outputs = [ "out" "dev" ];
+  outputs = [
+    "out"
+    "dev"
+  ];
 
   enableParallelBuilding = true;
   # HACK: paralellize compilation of make calls within pyqt's setup.py
@@ -51,22 +54,16 @@ buildPythonPackage rec {
     pyqt-builder
   ];
 
-  buildInputs = [
-    qt3d
-  ];
+  buildInputs = [ qt3d ];
 
-  propagatedBuildInputs = [
-    pyqt5
-  ];
+  propagatedBuildInputs = [ pyqt5 ];
 
   dontConfigure = true;
 
   # has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "PyQt5.Qt3DCore"
-  ];
+  pythonImportsCheck = [ "PyQt5.Qt3DCore" ];
 
   meta = with lib; {
     description = "Python bindings for the Qt 3D framework";
diff --git a/pkgs/development/python-modules/pyqt5-stubs/default.nix b/pkgs/development/python-modules/pyqt5-stubs/default.nix
index 957a2ac56c937..a891942d1d457 100644
--- a/pkgs/development/python-modules/pyqt5-stubs/default.nix
+++ b/pkgs/development/python-modules/pyqt5-stubs/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, pyqt5
-, pyqt3d
-, pyqtchart
-, pyqtdatavisualization
-, pyqtwebengine
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  pyqt5,
+  pyqt3d,
+  pyqtchart,
+  pyqtdatavisualization,
+  pyqtwebengine,
 }:
 
 buildPythonPackage rec {
@@ -22,26 +23,30 @@ buildPythonPackage rec {
     rev = version;
     hash = "sha256-qWnvlHnFRy8wbZJ28C0pYqAxod623Epe5z5FZufheDc=";
   };
-  postPatch = ''
-    # pulls in a dependency to mypy, but we don't want to run linters
-    rm tests/test_stubs.py
-  '' + lib.optionalString (!pyqt5.connectivityEnabled) ''
-    rm tests/qflags/test_QtBluetooth_*
-    rm tests/qflags/test_QtNfc_*
-  '' + lib.optionalString (!pyqt5.locationEnabled) ''
-    rm tests/qflags/test_QtLocation_*
-    rm tests/qflags/test_QtPositioning_*
-  '' + lib.optionalString (!pyqt5.multimediaEnabled) ''
-    rm tests/qflags/test_QtMultimedia_*
-  '' + lib.optionalString (!pyqt5.serialPortEnabled) ''
-    rm tests/qflags/test_QtSerialPort_*
-  '' + lib.optionalString (!pyqt5.toolsEnabled) ''
-    rm tests/qflags/test_QtDesigner_*
-  '';
+  postPatch =
+    ''
+      # pulls in a dependency to mypy, but we don't want to run linters
+      rm tests/test_stubs.py
+    ''
+    + lib.optionalString (!pyqt5.connectivityEnabled) ''
+      rm tests/qflags/test_QtBluetooth_*
+      rm tests/qflags/test_QtNfc_*
+    ''
+    + lib.optionalString (!pyqt5.locationEnabled) ''
+      rm tests/qflags/test_QtLocation_*
+      rm tests/qflags/test_QtPositioning_*
+    ''
+    + lib.optionalString (!pyqt5.multimediaEnabled) ''
+      rm tests/qflags/test_QtMultimedia_*
+    ''
+    + lib.optionalString (!pyqt5.serialPortEnabled) ''
+      rm tests/qflags/test_QtSerialPort_*
+    ''
+    + lib.optionalString (!pyqt5.toolsEnabled) ''
+      rm tests/qflags/test_QtDesigner_*
+    '';
 
-  pythonImportsCheck = [
-    "PyQt5-stubs"
-  ];
+  pythonImportsCheck = [ "PyQt5-stubs" ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -53,7 +58,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "Stubs for PyQt5 ";
+    description = "Stubs for PyQt5";
     homepage = "https://github.com/python-qt-tools/PyQt5-stubs";
     license = licenses.gpl3;
     maintainers = with maintainers; [ _999eagle ];
diff --git a/pkgs/development/python-modules/pyqt6-charts/default.nix b/pkgs/development/python-modules/pyqt6-charts/default.nix
index 478e1b1e0f422..0ab27728f7af0 100644
--- a/pkgs/development/python-modules/pyqt6-charts/default.nix
+++ b/pkgs/development/python-modules/pyqt6-charts/default.nix
@@ -1,12 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, sip
-, pyqt-builder
-, qt6Packages
-, pythonOlder
-, pyqt6
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  sip,
+  pyqt-builder,
+  qt6Packages,
+  pythonOlder,
+  pyqt6,
+  python,
+  mesa,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +21,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "PyQt6_Charts";
     inherit version;
-    sha256 = "sha256-xPfPNpko978DLk4z9xjTuP5m2hdtSVn+MHNalw2G81w=";
+    hash = "sha256-xPfPNpko978DLk4z9xjTuP5m2hdtSVn+MHNalw2G81w=";
   };
 
   # fix include path and increase verbosity
@@ -51,28 +53,22 @@ buildPythonPackage rec {
     pyqt-builder
   ];
 
-  buildInputs = with qt6Packages; [
-    qtcharts
-  ];
+  buildInputs = with qt6Packages; [ qtcharts ];
 
-  propagatedBuildInputs = [
-    pyqt6
-  ];
+  propagatedBuildInputs = [ pyqt6 ];
 
   dontConfigure = true;
 
   # has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "PyQt6.QtCharts"
-  ];
+  pythonImportsCheck = [ "PyQt6.QtCharts" ];
 
   meta = with lib; {
     description = "Python bindings for Qt6 QtCharts";
     homepage = "https://riverbankcomputing.com/";
     license = licenses.gpl3Only;
-    platforms = platforms.mesaPlatforms;
+    inherit (mesa.meta) platforms;
     maintainers = with maintainers; [ dandellion ];
   };
 }
diff --git a/pkgs/development/python-modules/pyqt6-webengine/default.nix b/pkgs/development/python-modules/pyqt6-webengine/default.nix
index f227a1469ab55..5ea0b8b1941d7 100644
--- a/pkgs/development/python-modules/pyqt6-webengine/default.nix
+++ b/pkgs/development/python-modules/pyqt6-webengine/default.nix
@@ -1,14 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pkg-config
-, lndir
-, sip
-, pyqt-builder
-, qt6Packages
-, pythonOlder
-, pyqt6
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pkg-config,
+  lndir,
+  sip,
+  pyqt-builder,
+  qt6Packages,
+  pythonOlder,
+  pyqt6,
+  python,
+  mesa,
 }:
 
 buildPythonPackage rec {
@@ -44,7 +46,10 @@ buildPythonPackage rec {
     export MAKEFLAGS+=" -j$NIX_BUILD_CORES"
   '';
 
-  outputs = [ "out" "dev" ];
+  outputs = [
+    "out"
+    "dev"
+  ];
 
   dontWrapQtApps = true;
 
@@ -57,13 +62,9 @@ buildPythonPackage rec {
     pyqt-builder
   ];
 
-  buildInputs = with qt6Packages; [
-    qtwebengine
-  ];
+  buildInputs = with qt6Packages; [ qtwebengine ];
 
-  propagatedBuildInputs = [
-    pyqt6
-  ];
+  propagatedBuildInputs = [ pyqt6 ];
 
   passthru = {
     inherit sip;
@@ -84,7 +85,10 @@ buildPythonPackage rec {
     description = "Python bindings for Qt6 WebEngine";
     homepage = "https://riverbankcomputing.com/";
     license = licenses.gpl3Only;
-    platforms = platforms.mesaPlatforms;
-    maintainers = with maintainers; [ LunNova nrdxp ];
+    inherit (mesa.meta) platforms;
+    maintainers = with maintainers; [
+      LunNova
+      nrdxp
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pyqtchart/default.nix b/pkgs/development/python-modules/pyqtchart/default.nix
index 3f95fe791574c..2ee389ad20750 100644
--- a/pkgs/development/python-modules/pyqtchart/default.nix
+++ b/pkgs/development/python-modules/pyqtchart/default.nix
@@ -1,19 +1,19 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pyqt5
-, pyqt-builder
-, python
-, pythonOlder
-, qtcharts
-, setuptools
-, sip
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyqt5,
+  pyqt-builder,
+  python,
+  pythonOlder,
+  qtcharts,
+  setuptools,
+  sip,
 }:
 
 buildPythonPackage rec {
   pname = "pyqtchart";
-  version = "5.15.6";
+  version = "5.15.7";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "PyQtChart";
     inherit version;
-    hash = "sha256-JpF5b+kqKUphdZKlxcNeeF3JH3dZ3vnrItp532N2Izk=";
+    hash = "sha256-vJ8dJscl6CCw//jbbpBuiyhhKKFLOpjFmgzQw9mSQJU=";
   };
 
   postPatch = ''
@@ -29,7 +29,10 @@ buildPythonPackage rec {
       --replace "[tool.sip.project]" "[tool.sip.project]''\nsip-include-dirs = [\"${pyqt5}/${python.sitePackages}/PyQt5/bindings\"]"
   '';
 
-  outputs = [ "out" "dev" ];
+  outputs = [
+    "out"
+    "dev"
+  ];
 
   enableParallelBuilding = true;
   # HACK: paralellize compilation of make calls within pyqt's setup.py
@@ -51,22 +54,16 @@ buildPythonPackage rec {
     pyqt-builder
   ];
 
-  buildInputs = [
-    qtcharts
-  ];
+  buildInputs = [ qtcharts ];
 
-  propagatedBuildInputs = [
-    pyqt5
-  ];
+  propagatedBuildInputs = [ pyqt5 ];
 
   dontConfigure = true;
 
   # has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "PyQt5.QtChart"
-  ];
+  pythonImportsCheck = [ "PyQt5.QtChart" ];
 
   meta = with lib; {
     description = "Python bindings for the Qt Charts library";
diff --git a/pkgs/development/python-modules/pyqtdarktheme/default.nix b/pkgs/development/python-modules/pyqtdarktheme/default.nix
index 0d60c8039898f..2d48412270719 100644
--- a/pkgs/development/python-modules/pyqtdarktheme/default.nix
+++ b/pkgs/development/python-modules/pyqtdarktheme/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-
-, darkdetect
-, poetry-core
-
-, pyqt5
-, pytest-mock
-, pytest-qt
-, pytestCheckHook
-, qt5
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  darkdetect,
+  poetry-core,
+
+  pyqt5,
+  pytest-mock,
+  pytest-qt,
+  pytestCheckHook,
+  qt5,
 }:
 
 buildPythonPackage rec {
@@ -27,17 +28,11 @@ buildPythonPackage rec {
     hash = "sha256-jK+wnIyPE8Bav0pzbvVisYYCzdRshYw1S2t0H3Pro5M=";
   };
 
-  patches = [
-    ./add-missing-argument-to-the-proxy-style-initializer.patch
-  ];
+  patches = [ ./add-missing-argument-to-the-proxy-style-initializer.patch ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    darkdetect
-  ];
+  propagatedBuildInputs = [ darkdetect ];
 
   nativeCheckInputs = [
     pyqt5
@@ -46,9 +41,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "qdarktheme"
-  ];
+  pythonImportsCheck = [ "qdarktheme" ];
 
   prePatch = ''
     sed -i 's#darkdetect = ".*"#darkdetect = "*"#' pyproject.toml
@@ -62,7 +55,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A flat dark theme for PySide and PyQt";
+    description = "Flat dark theme for PySide and PyQt";
     homepage = "https://pyqtdarktheme.readthedocs.io/en/stable";
     license = licenses.mit;
     maintainers = with maintainers; [ paveloom ];
diff --git a/pkgs/development/python-modules/pyqtdatavisualization/default.nix b/pkgs/development/python-modules/pyqtdatavisualization/default.nix
index 1561e9d4be51a..9fce4b02bc7d2 100644
--- a/pkgs/development/python-modules/pyqtdatavisualization/default.nix
+++ b/pkgs/development/python-modules/pyqtdatavisualization/default.nix
@@ -1,19 +1,19 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pyqt5
-, pyqt-builder
-, python
-, pythonOlder
-, qtdatavis3d
-, setuptools
-, sip
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyqt5,
+  pyqt-builder,
+  python,
+  pythonOlder,
+  qtdatavis3d,
+  setuptools,
+  sip,
 }:
 
 buildPythonPackage rec {
   pname = "pyqtdatavisualization";
-  version = "5.15.5";
+  version = "5.15.6";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "PyQtDataVisualization";
     inherit version;
-    hash = "sha256-iSf496pwhX7wDFHj379vg92fOFX0FuDVMVknYcu53H8=";
+    hash = "sha256-ntM7IOdHvGnh1hnxR7sWJcwA1u9ATb8Ha6E6n/b2Bh0=";
   };
 
   postPatch = ''
@@ -29,7 +29,10 @@ buildPythonPackage rec {
       --replace "[tool.sip.project]" "[tool.sip.project]''\nsip-include-dirs = [\"${pyqt5}/${python.sitePackages}/PyQt5/bindings\"]"
   '';
 
-  outputs = [ "out" "dev" ];
+  outputs = [
+    "out"
+    "dev"
+  ];
 
   enableParallelBuilding = true;
   # HACK: paralellize compilation of make calls within pyqt's setup.py
@@ -51,22 +54,16 @@ buildPythonPackage rec {
     pyqt-builder
   ];
 
-  buildInputs = [
-    qtdatavis3d
-  ];
+  buildInputs = [ qtdatavis3d ];
 
-  propagatedBuildInputs = [
-    pyqt5
-  ];
+  propagatedBuildInputs = [ pyqt5 ];
 
   dontConfigure = true;
 
   # has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "PyQt5.QtDataVisualization"
-  ];
+  pythonImportsCheck = [ "PyQt5.QtDataVisualization" ];
 
   meta = with lib; {
     description = "Python bindings for the Qt Data Visualization library";
diff --git a/pkgs/development/python-modules/pyqtgraph/default.nix b/pkgs/development/python-modules/pyqtgraph/default.nix
index e3e96571b1e8b..629f96d76df4e 100644
--- a/pkgs/development/python-modules/pyqtgraph/default.nix
+++ b/pkgs/development/python-modules/pyqtgraph/default.nix
@@ -1,50 +1,52 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, scipy
-, numpy
-, pyqt5
-, pyopengl
-, qt5
-, pytestCheckHook
-, freefont_ttf
-, makeFontsConf
-, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  scipy,
+  numpy,
+  pyqt6,
+  pyopengl,
+  qt6,
+  pytestCheckHook,
+  freefont_ttf,
+  makeFontsConf,
+  setuptools,
 }:
 
 let
-  fontsConf = makeFontsConf {
-    fontDirectories = [ freefont_ttf ];
-  };
+  fontsConf = makeFontsConf { fontDirectories = [ freefont_ttf ]; };
 in
 buildPythonPackage rec {
   pname = "pyqtgraph";
-  version = "0.13.4";
+  version = "0.13.7";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "pyqtgraph";
     repo = "pyqtgraph";
     rev = "refs/tags/pyqtgraph-${version}";
-    hash = "sha256-KVgsfvaVbR3eMRNqhJSBO4Hfk7KJgMdsZjKffx6vt84=";
+    hash = "sha256-MUwg1v6oH2TGmJ14Hp9i6KYierJbzPggK59QaHSXHVA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     numpy
-    pyqt5
     scipy
     pyopengl
   ];
+  buildInputs = [
+    # Not propagating it so that every consumer of this package will be able to
+    # use any of the upstream supported Qt Library, See:
+    # https://pyqtgraph.readthedocs.io/en/pyqtgraph-0.13.7/getting_started/how_to_use.html#pyqt-and-pyside
+    pyqt6
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
-    export QT_PLUGIN_PATH="${qt5.qtbase.bin}/${qt5.qtbase.qtPluginPrefix}"
+    export QT_PLUGIN_PATH="${lib.getBin qt6.qtbase}/${qt6.qtbase.qtPluginPrefix}"
     export QT_QPA_PLATFORM=offscreen
     export DYLD_FRAMEWORK_PATH=/System/Library/Frameworks
     export FONTCONFIG_FILE=${fontsConf}
@@ -55,23 +57,24 @@ buildPythonPackage rec {
     "tests"
   ];
 
-  disabledTests = lib.optionals (!stdenv.hostPlatform.isx86) [
-    # small precision-related differences on other architectures,
-    # upstream doesn't consider it serious.
-    # https://github.com/pyqtgraph/pyqtgraph/issues/2110
-    "test_PolyLineROI"
-  ] ++ lib.optionals (stdenv.isLinux && stdenv.isAarch64) [
-    # https://github.com/pyqtgraph/pyqtgraph/issues/2645
-    "test_rescaleData"
-  ];
+  disabledTests =
+    lib.optionals (!stdenv.hostPlatform.isx86) [
+      # small precision-related differences on other architectures,
+      # upstream doesn't consider it serious.
+      # https://github.com/pyqtgraph/pyqtgraph/issues/2110
+      "test_PolyLineROI"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
+      # https://github.com/pyqtgraph/pyqtgraph/issues/2645
+      "test_rescaleData"
+    ];
 
-  meta = with lib; {
+  meta = {
     description = "Scientific Graphics and GUI Library for Python";
     homepage = "https://www.pyqtgraph.org/";
     changelog = "https://github.com/pyqtgraph/pyqtgraph/blob/master/CHANGELOG";
-    license = licenses.mit;
-    platforms = platforms.unix;
-    maintainers = with maintainers; [ koral ];
+    license = lib.licenses.mit;
+    platforms = lib.platforms.unix;
+    maintainers = with lib.maintainers; [ koral doronbehar ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pyqtwebengine/default.nix b/pkgs/development/python-modules/pyqtwebengine/default.nix
index ec15596b4048f..11d0f847d8328 100644
--- a/pkgs/development/python-modules/pyqtwebengine/default.nix
+++ b/pkgs/development/python-modules/pyqtwebengine/default.nix
@@ -1,94 +1,114 @@
-{ lib, stdenv, pythonPackages, fetchPypi, pkg-config
-, qmake, qtbase, qtsvg, qtwebengine, qtwebchannel, qtdeclarative
-, wrapQtAppsHook
-, darwin
-, buildPackages
+{
+  lib,
+  setuptools,
+  stdenv,
+  fetchPypi,
+  pkg-config,
+  libsForQt5,
+  darwin,
+  buildPythonPackage,
+  python,
+  isPy27,
+  pyqt5,
+  sip,
+  pyqt-builder,
+  mesa,
 }:
 
 let
-  inherit (pythonPackages) buildPythonPackage python isPy27 pyqt5 sip pyqt-builder;
   inherit (darwin) autoSignDarwinBinariesHook;
-in buildPythonPackage (rec {
-  pname = "pyqtwebengine";
-  version = "5.15.6";
-  format = "pyproject";
+in
+buildPythonPackage (
+  rec {
+    pname = "pyqtwebengine";
+    version = "5.15.7";
+    format = "pyproject";
 
-  disabled = isPy27;
+    disabled = isPy27;
 
-  src = fetchPypi {
-    pname = "PyQtWebEngine";
-    inherit version;
-    sha256 = "sha256-riQe8qYceCk5xYtSwq6lOtmbMPOTTINY1eCm67P9ByE=";
-  };
+    src = fetchPypi {
+      pname = "PyQtWebEngine";
+      inherit version;
+      hash = "sha256-8SGsbkovlqwolhm8/Df2Tmg2LySjRlU/XWxC76Qiik0=";
+    };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace "[tool.sip.project]" "[tool.sip.project]''\nsip-include-dirs = [\"${pyqt5}/${python.sitePackages}/PyQt5/bindings\"]"
-  '';
+    postPatch = ''
+      substituteInPlace pyproject.toml \
+        --replace "[tool.sip.project]" "[tool.sip.project]''\nsip-include-dirs = [\"${pyqt5}/${python.sitePackages}/PyQt5/bindings\"]"
+    '';
 
-  outputs = [ "out" "dev" ];
+    outputs = [
+      "out"
+      "dev"
+    ];
 
-  nativeBuildInputs = [
-    pkg-config
-    qmake
-  ] ++ lib.optionals (stdenv.buildPlatform == stdenv.hostPlatform) [
-    sip
-  ] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
-    python.pythonOnBuildForHost.pkgs.sip
-  ] ++ [
-    qtbase
-    qtsvg
-    qtwebengine
-    pyqt-builder
-    pythonPackages.setuptools
-  ] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
-    qtdeclarative
-  ] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
-    autoSignDarwinBinariesHook
-  ];
+    nativeBuildInputs =
+      [
+        pkg-config
+        libsForQt5.qmake
+        libsForQt5.wrapQtAppsHook
+      ]
+      ++ lib.optionals (stdenv.buildPlatform == stdenv.hostPlatform) [ sip ]
+      ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
+        python.pythonOnBuildForHost.pkgs.sip
+      ]
+      ++ [
+        libsForQt5.qtbase
+        libsForQt5.qtsvg
+        libsForQt5.qtwebengine
+        pyqt-builder
+        setuptools
+      ]
+      ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ libsForQt5.qtdeclarative ]
+      ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
+        autoSignDarwinBinariesHook
+      ];
 
-  buildInputs = [
-    sip
-    qtbase
-    qtsvg
-    qtwebengine
-  ] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
-    qtwebchannel
-    qtdeclarative
-  ];
+    buildInputs =
+      [
+        sip
+        libsForQt5.qtbase
+        libsForQt5.qtsvg
+        libsForQt5.qtwebengine
+      ]
+      ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
+        libsForQt5.qtwebchannel
+        libsForQt5.qtdeclarative
+      ];
 
-  propagatedBuildInputs = [ pyqt5 ];
+    propagatedBuildInputs = [ pyqt5 ];
 
-  dontWrapQtApps = true;
+    dontWrapQtApps = true;
 
-  # Avoid running qmake, which is in nativeBuildInputs
-  dontConfigure = true;
+    # Avoid running qmake, which is in nativeBuildInputs
+    dontConfigure = true;
 
-  # Checked using pythonImportsCheck
-  doCheck = false;
+    # Checked using pythonImportsCheck
+    doCheck = false;
 
-  pythonImportsCheck = [
-    "PyQt5.QtWebEngine"
-    "PyQt5.QtWebEngineWidgets"
-  ];
+    pythonImportsCheck = [
+      "PyQt5.QtWebEngine"
+      "PyQt5.QtWebEngineWidgets"
+    ];
 
-  enableParallelBuilding = true;
+    enableParallelBuilding = true;
 
-  passthru = {
-    inherit wrapQtAppsHook;
-  };
+    passthru = {
+      inherit (libsForQt5) wrapQtAppsHook;
+    };
 
-  meta = with lib; {
-    description = "Python bindings for Qt5";
-    homepage    = "http://www.riverbankcomputing.co.uk";
-    license     = licenses.gpl3;
-    hydraPlatforms = lib.lists.intersectLists qtwebengine.meta.platforms platforms.mesaPlatforms;
-  };
-} // lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform) {
-  # TODO: figure out why the env hooks aren't adding these inclusions automatically
-  env.NIX_CFLAGS_COMPILE =
-    lib.concatStringsSep " " [
-      "-I${lib.getDev qtbase}/include/QtPrintSupport/"
-      "-I${lib.getDev qtwebchannel}/include/QtWebChannel/"
+    meta = {
+      description = "Python bindings for Qt5";
+      homepage = "http://www.riverbankcomputing.co.uk";
+      license = lib.licenses.gpl3;
+      hydraPlatforms = lib.lists.intersectLists libsForQt5.qtwebengine.meta.platforms mesa.meta.platforms;
+    };
+  }
+  // lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform) {
+    # TODO: figure out why the env hooks aren't adding these inclusions automatically
+    env.NIX_CFLAGS_COMPILE = lib.concatStringsSep " " [
+      "-I${lib.getDev libsForQt5.qtbase}/include/QtPrintSupport/"
+      "-I${lib.getDev libsForQt5.qtwebchannel}/include/QtWebChannel/"
     ];
-})
+  }
+)
diff --git a/pkgs/development/python-modules/pyquaternion/default.nix b/pkgs/development/python-modules/pyquaternion/default.nix
index cb10c3bc55454..fab1e6c4f8cc6 100644
--- a/pkgs/development/python-modules/pyquaternion/default.nix
+++ b/pkgs/development/python-modules/pyquaternion/default.nix
@@ -1,18 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, nose
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pyquaternion";
   version = "0.9.9";
-  format = "setuptools";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-sfYa8hnLL+lmtft5oZISTy5jo/end6w8rfKVexqBvqg=";
+  src = fetchFromGitHub {
+    owner = "KieranWynn";
+    repo = "pyquaternion";
+    rev = "v${version}";
+    hash = "sha256-L0wT9DFUDRcmmN7OpmIDNvtQWQrM7iFnZt6R2xrJ+3A=";
   };
 
   # The VERSION.txt file is required for setup.py
@@ -21,13 +25,18 @@ buildPythonPackage rec {
     echo "${version}" > VERSION.txt
   '';
 
-  propagatedBuildInputs = [ numpy ];
+  build-system = [ setuptools ];
+
+  dependencies = [ numpy ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pytestFlagsArray = [ "pyquaternion/test/" ];
 
-  nativeCheckInputs = [ nose ];
   pythonImportsCheck = [ "pyquaternion" ];
 
   meta = with lib; {
-    description = "Library for representing and using quaternions.";
+    description = "Library for representing and using quaternions";
     homepage = "http://kieranwynn.github.io/pyquaternion/";
     license = licenses.mit;
     maintainers = with maintainers; [ lucasew ];
diff --git a/pkgs/development/python-modules/pyquery/default.nix b/pkgs/development/python-modules/pyquery/default.nix
index f1de975c418bf..e066b9258411e 100644
--- a/pkgs/development/python-modules/pyquery/default.nix
+++ b/pkgs/development/python-modules/pyquery/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, cssselect
-, fetchPypi
-, lxml
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, requests
-, webob
-, webtest
+{
+  lib,
+  buildPythonPackage,
+  cssselect,
+  fetchPypi,
+  lxml,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  requests,
+  webob,
+  webtest,
 }:
 
 buildPythonPackage rec {
@@ -59,7 +60,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A jquery-like library for Python";
+    description = "Jquery-like library for Python";
     homepage = "https://github.com/gawel/pyquery";
     changelog = "https://github.com/gawel/pyquery/blob/${version}/CHANGES.rst";
     license = licenses.bsd0;
diff --git a/pkgs/development/python-modules/pyquil/default.nix b/pkgs/development/python-modules/pyquil/default.nix
index dc718777af700..84e97f2bf050d 100644
--- a/pkgs/development/python-modules/pyquil/default.nix
+++ b/pkgs/development/python-modules/pyquil/default.nix
@@ -3,44 +3,38 @@
   buildPythonPackage,
   deprecated,
   fetchFromGitHub,
-  importlib-metadata,
   ipython,
-  lark,
   matplotlib-inline,
   nest-asyncio,
   networkx,
   numpy,
   packaging,
   poetry-core,
-  pydantic,
   pytest-asyncio,
   pytest-mock,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
   qcs-sdk-python,
   respx,
   rpcq,
   scipy,
   syrupy,
-  tenacity,
   types-deprecated,
-  types-python-dateutil,
-  types-retry,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "pyquil";
-  version = "4.8.0";
+  version = "4.14.3";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "rigetti";
     repo = "pyquil";
     rev = "refs/tags/v${version}";
-    hash = "sha256-MGI+R3oteqDWsXP+SlAGSRGiQiAj44YG6V7o90A4Krc=";
+    hash = "sha256-kGrOvec2q1GoVweu5tTbz8kvnjG6RAfjlF64Uf3RTxw=";
   };
 
   pythonRelaxDeps = [
@@ -48,28 +42,24 @@ buildPythonPackage rec {
     "networkx"
     "packaging"
     "qcs-sdk-python"
+    "rpcq"
   ];
 
   build-system = [ poetry-core ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     deprecated
-    lark
     matplotlib-inline
     networkx
     numpy
     packaging
-    pydantic
     qcs-sdk-python
     rpcq
     scipy
-    tenacity
     types-deprecated
-    types-python-dateutil
-    types-retry
-  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
+    typing-extensions
+  ];
 
   nativeCheckInputs = [
     nest-asyncio
diff --git a/pkgs/development/python-modules/pyqvrpro/default.nix b/pkgs/development/python-modules/pyqvrpro/default.nix
index f170050954f72..53392e3cb18d6 100644
--- a/pkgs/development/python-modules/pyqvrpro/default.nix
+++ b/pkgs/development/python-modules/pyqvrpro/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-vcr
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, requests
-, untangle
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-vcr,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  requests,
+  untangle,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pyqvrpro"
-  ];
+  pythonImportsCheck = [ "pyqvrpro" ];
 
   meta = with lib; {
     description = "Module for interfacing with QVR Pro API";
diff --git a/pkgs/development/python-modules/pyqwikswitch/default.nix b/pkgs/development/python-modules/pyqwikswitch/default.nix
index 20a5d59833db9..5ccd23833092e 100644
--- a/pkgs/development/python-modules/pyqwikswitch/default.nix
+++ b/pkgs/development/python-modules/pyqwikswitch/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, attrs
-, requests
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  attrs,
+  requests,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyrabbit2/default.nix b/pkgs/development/python-modules/pyrabbit2/default.nix
index 8cd8be5186160..cd1da7f061843 100644
--- a/pkgs/development/python-modules/pyrabbit2/default.nix
+++ b/pkgs/development/python-modules/pyrabbit2/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -14,12 +15,10 @@ buildPythonPackage rec {
     sha256 = "d27160cb35c096f0072df57307233d01b117a451236e136604a8e51be6f106c0";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   meta = with lib; {
-    description = "A Pythonic interface to the RabbitMQ Management HTTP API";
+    description = "Pythonic interface to the RabbitMQ Management HTTP API";
     homepage = "https://github.com/deslum/pyrabbit2";
     license = licenses.mit;
     maintainers = [ ];
diff --git a/pkgs/development/python-modules/pyrad/default.nix b/pkgs/development/python-modules/pyrad/default.nix
index 8a70748887162..9e2cb672d95a0 100644
--- a/pkgs/development/python-modules/pyrad/default.nix
+++ b/pkgs/development/python-modules/pyrad/default.nix
@@ -1,60 +1,58 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, lib
-, poetry-core
-, netaddr
-, six
-, unittestCheckHook
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  poetry-core,
+  netaddr,
+  six,
+  unittestCheckHook,
+  fetchPypi,
 }:
+let
+  netaddr_0_8_0 = netaddr.overridePythonAttrs (oldAttrs: rec {
+    version = "0.8.0";
+
+    src = fetchPypi {
+      pname = "netaddr";
+      inherit version;
+      hash = "sha256-1sxXx6B7HZ0ukXqos2rozmHDW6P80bg8oxxaDuK1okM=";
+    };
+  });
+in
 
 buildPythonPackage rec {
   pname = "pyrad";
-  version = "2.4";
+  version = "2.4-unstable-2023-06-13";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "pyradius";
     repo = pname;
-    rev = version;
-    hash = "sha256-oqgkE0xG/8cmLeRZdGoHkaHbjtByeJwzBJwEdxH8oNY=";
+    rev = "dd34c5a29b46d83b0bea841e85fd72b79f315b87";
+    hash = "sha256-U4VVGkDDyN4J/tRDaDGSr2TSA4JmqIoQj5qn9qBAvQU=";
   };
 
-  patches = [
-    (fetchpatch {
-      # Migrate to poetry-core
-      url = "https://github.com/pyradius/pyrad/commit/a4b70067dd6269e14a2f9530d820390a8a454231.patch";
-      hash = "sha256-1We9wrVY3Or3GLIKK6hZvEjVYv6JOaahgP9zOMvgErE=";
-    })
-  ];
-
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
-    netaddr
+    netaddr_0_8_0
     six
   ];
 
   preCheck = ''
     substituteInPlace tests/testServer.py \
-      --replace "def testBind(self):" "def dontTestBind(self):" \
-      --replace "def testBindv6(self):" "def dontTestBindv6(self):"
+      --replace-warn "def testBind(self):" "def dontTestBind(self):" \
+      --replace-warn "def testBindv6(self):" "def dontTestBindv6(self):" \
   '';
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyrad"
-  ];
+  pythonImportsCheck = [ "pyrad" ];
 
-  meta = with lib; {
+  meta = {
     description = "Python RADIUS Implementation";
     homepage = "https://github.com/pyradius/pyrad";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ drawbu ];
   };
 }
diff --git a/pkgs/development/python-modules/pyradiomics/default.nix b/pkgs/development/python-modules/pyradiomics/default.nix
index 2d77f8f1df0bb..183f41044d317 100644
--- a/pkgs/development/python-modules/pyradiomics/default.nix
+++ b/pkgs/development/python-modules/pyradiomics/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, numpy
-, pykwalify
-, pywavelets
-, setuptools
-, simpleitk
-, six
-, versioneer
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  numpy,
+  pykwalify,
+  pywavelets,
+  setuptools,
+  simpleitk,
+  six,
+  versioneer,
 }:
 
 buildPythonPackage rec {
@@ -27,7 +28,10 @@ buildPythonPackage rec {
     name = "pyradiomics";
   };
 
-  nativeBuildInputs = [ setuptools versioneer ];
+  nativeBuildInputs = [
+    setuptools
+    versioneer
+  ];
 
   propagatedBuildInputs = [
     numpy
@@ -57,9 +61,7 @@ buildPythonPackage rec {
     "-k '${toString (lib.intersperse "and" (lib.forEach disabledTests (t: "not ${t}")))}'"
   ];
 
-  pythonImportsCheck = [
-    "radiomics"
-  ];
+  pythonImportsCheck = [ "radiomics" ];
 
   meta = with lib; {
     homepage = "https://pyradiomics.readthedocs.io";
diff --git a/pkgs/development/python-modules/pyradios/default.nix b/pkgs/development/python-modules/pyradios/default.nix
index 45e972ab5e285..1d979d2678151 100644
--- a/pkgs/development/python-modules/pyradios/default.nix
+++ b/pkgs/development/python-modules/pyradios/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, appdirs
-, httpx
-, setuptools
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  appdirs,
+  httpx,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyrainbird/default.nix b/pkgs/development/python-modules/pyrainbird/default.nix
index bca013babd9e9..1444533bb28c7 100644
--- a/pkgs/development/python-modules/pyrainbird/default.nix
+++ b/pkgs/development/python-modules/pyrainbird/default.nix
@@ -1,29 +1,30 @@
-{ lib
-, aiohttp-retry
-, buildPythonPackage
-, fetchFromGitHub
-, freezegun
-, ical
-, parameterized
-, pycryptodome
-, pydantic
-, pytest-aiohttp
-, pytest-asyncio
-, pytest-golden
-, pytest-mock
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, pyyaml
-, requests
-, requests-mock
-, responses
-, setuptools
+{
+  lib,
+  aiohttp-retry,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  ical,
+  mashumaro,
+  parameterized,
+  pycryptodome,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytest-golden,
+  pytest-mock,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  pyyaml,
+  requests,
+  requests-mock,
+  responses,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyrainbird";
-  version = "4.0.2";
+  version = "6.0.2";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -32,7 +33,7 @@ buildPythonPackage rec {
     owner = "allenporter";
     repo = "pyrainbird";
     rev = "refs/tags/${version}";
-    hash = "sha256-4AoxLZv0u8wCG3ihw0JqsqsO5zG5UyP4ebSX99ve8sg=";
+    hash = "sha256-CcoZZ60PItqy0bCc36WfyNF9Fc28aHwQ6hhnY41lBNg=";
   };
 
   postPatch = ''
@@ -40,15 +41,13 @@ buildPythonPackage rec {
       --replace-fail "--cov=pyrainbird --cov-report=term-missing" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp-retry
     ical
+    mashumaro
     pycryptodome
-    pydantic
     python-dateutil
     pyyaml
     requests
@@ -68,9 +67,7 @@ buildPythonPackage rec {
     responses
   ];
 
-  pythonImportsCheck = [
-    "pyrainbird"
-  ];
+  pythonImportsCheck = [ "pyrainbird" ];
 
   meta = with lib; {
     description = "Module to interact with Rainbird controllers";
diff --git a/pkgs/development/python-modules/pyramid-beaker/default.nix b/pkgs/development/python-modules/pyramid-beaker/default.nix
index aad88af5f16a4..87e9a30932cb3 100644
--- a/pkgs/development/python-modules/pyramid-beaker/default.nix
+++ b/pkgs/development/python-modules/pyramid-beaker/default.nix
@@ -1,14 +1,21 @@
-{ lib, buildPythonPackage, fetchPypi, pytest, beaker, pyramid }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  beaker,
+  pyramid,
+}:
 
 buildPythonPackage rec {
   pname = "pyramid-beaker";
-  version = "0.8";
+  version = "0.9";
   format = "setuptools";
 
   src = fetchPypi {
     pname = "pyramid_beaker";
     inherit version;
-    sha256 = "0hflx3qkcdml1mwpq53sz46s7jickpfn0zy0ns2c7j445j66bp3p";
+    hash = "sha256-zMUT60z7W0Flfym25rKMor17O/n9qRMGoQKa7pLRz6U=";
   };
 
   checkPhase = ''
@@ -18,7 +25,10 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ pytest ];
 
-  propagatedBuildInputs = [ beaker pyramid ];
+  propagatedBuildInputs = [
+    beaker
+    pyramid
+  ];
 
   meta = with lib; {
     description = "Beaker session factory backend for Pyramid";
diff --git a/pkgs/development/python-modules/pyramid-chameleon/default.nix b/pkgs/development/python-modules/pyramid-chameleon/default.nix
index ab4f230afbdd8..dadd0e534a3ff 100644
--- a/pkgs/development/python-modules/pyramid-chameleon/default.nix
+++ b/pkgs/development/python-modules/pyramid-chameleon/default.nix
@@ -1,13 +1,13 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, chameleon
-, fetchpatch
-, fetchPypi
-, pyramid
-, pytestCheckHook
-, setuptools
-, zope-interface
+{
+  lib,
+  buildPythonPackage,
+  chameleon,
+  fetchpatch,
+  fetchPypi,
+  pyramid,
+  pytestCheckHook,
+  setuptools,
+  zope-interface,
 }:
 
 buildPythonPackage rec {
@@ -39,13 +39,9 @@ buildPythonPackage rec {
     zope-interface
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyramid_chameleon"
-  ];
+  pythonImportsCheck = [ "pyramid_chameleon" ];
 
   meta = with lib; {
     description = "Chameleon template compiler for pyramid";
diff --git a/pkgs/development/python-modules/pyramid-exclog/default.nix b/pkgs/development/python-modules/pyramid-exclog/default.nix
index b0deb497a56f9..b88777f8692da 100644
--- a/pkgs/development/python-modules/pyramid-exclog/default.nix
+++ b/pkgs/development/python-modules/pyramid-exclog/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyramid
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyramid,
 }:
 
 buildPythonPackage rec {
@@ -20,10 +21,9 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "pyramid_exclog" ];
 
   meta = with lib; {
-    description = "A package which logs to a Python logger when an exception is raised by a Pyramid application";
+    description = "Package which logs to a Python logger when an exception is raised by a Pyramid application";
     homepage = "https://docs.pylonsproject.org/";
     license = licenses.bsd0;
     maintainers = with maintainers; [ domenkozar ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pyramid-jinja2/default.nix b/pkgs/development/python-modules/pyramid-jinja2/default.nix
index 0eab257384e47..f15a3623ee239 100644
--- a/pkgs/development/python-modules/pyramid-jinja2/default.nix
+++ b/pkgs/development/python-modules/pyramid-jinja2/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, webtest
-, markupsafe
-, jinja2
-, pytestCheckHook
-, zope-deprecation
-, pyramid
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  webtest,
+  markupsafe,
+  jinja2,
+  pytestCheckHook,
+  zope-deprecation,
+  pyramid,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -40,9 +41,7 @@ buildPythonPackage rec {
       --replace " --cov" ""
   '';
 
-  pythonImportsCheck = [
-    "pyramid_jinja2"
-  ];
+  pythonImportsCheck = [ "pyramid_jinja2" ];
 
   disabledTests = [
     # AssertionError: Lists differ: ['pyramid_jinja2-2.10',...
diff --git a/pkgs/development/python-modules/pyramid-mako/default.nix b/pkgs/development/python-modules/pyramid-mako/default.nix
index 11af191361377..f362fae175173 100644
--- a/pkgs/development/python-modules/pyramid-mako/default.nix
+++ b/pkgs/development/python-modules/pyramid-mako/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, webtest
-, pyramid
-, mako
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  webtest,
+  pyramid,
+  mako,
 }:
 
 buildPythonPackage rec {
@@ -27,12 +28,15 @@ buildPythonPackage rec {
   ];
 
   buildInputs = [ webtest ];
-  propagatedBuildInputs = [ pyramid mako ];
+  propagatedBuildInputs = [
+    pyramid
+    mako
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/Pylons/pyramid_mako";
     description = "Mako template bindings for the Pyramid web framework";
     license = licenses.bsd0;
-    maintainers = with maintainers; [];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyramid-multiauth/default.nix b/pkgs/development/python-modules/pyramid-multiauth/default.nix
index c70e7f0b0b649..2bf668f94e357 100644
--- a/pkgs/development/python-modules/pyramid-multiauth/default.nix
+++ b/pkgs/development/python-modules/pyramid-multiauth/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyramid
-, unittestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyramid,
+  unittestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,23 +19,17 @@ buildPythonPackage rec {
     hash = "sha256-+Aa+Vc4qCqDe/W5m/RBpYAyOMJkBv+ZGSqElJlkHqs4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pyramid
-  ];
+  propagatedBuildInputs = [ pyramid ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   meta = with lib; {
     changelog = "https://github.com/mozilla-services/pyramid_multiauth/releases/tag/${version}";
     description = "Authentication policy for Pyramid that proxies to a stack of other authentication policies";
     homepage = "https://github.com/mozilla-services/pyramid_multiauth";
     license = licenses.mpl20;
-    maintainers = with maintainers; [];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyramid/default.nix b/pkgs/development/python-modules/pyramid/default.nix
index d3f8d03debedf..3564c0bd1aea1 100644
--- a/pkgs/development/python-modules/pyramid/default.nix
+++ b/pkgs/development/python-modules/pyramid/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, webtest
-, zope-component
-, hupper
-, pastedeploy
-, plaster
-, plaster-pastedeploy
-, repoze-lru
-, translationstring
-, venusian
-, webob
-, zope-deprecation
-, zope-interface
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  webtest,
+  zope-component,
+  hupper,
+  pastedeploy,
+  plaster,
+  plaster-pastedeploy,
+  repoze-lru,
+  translationstring,
+  venusian,
+  webob,
+  zope-deprecation,
+  zope-interface,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -46,9 +47,7 @@ buildPythonPackage rec {
     zope-component
   ];
 
-  pythonImportsCheck = [
-    "pyramid"
-  ];
+  pythonImportsCheck = [ "pyramid" ];
 
   meta = with lib; {
     description = "Python web framework";
diff --git a/pkgs/development/python-modules/pyrate-limiter/default.nix b/pkgs/development/python-modules/pyrate-limiter/default.nix
index 8dc1c5c9426aa..9003ad79c5307 100644
--- a/pkgs/development/python-modules/pyrate-limiter/default.nix
+++ b/pkgs/development/python-modules/pyrate-limiter/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
@@ -16,13 +17,9 @@ buildPythonPackage rec {
     hash = "sha256-CPusPeyTS+QyWiMHsU0ii9ZxPuizsqv0wQy3uicrDw0=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  pythonImportsCheck = [
-    "pyrate_limiter"
-  ];
+  pythonImportsCheck = [ "pyrate_limiter" ];
 
   # The only consumer of this is Lutris (via python-moddb), and it requires 2.x,
   # so don't auto-update it and break Lutris every python-updates.
diff --git a/pkgs/development/python-modules/pyrdfa3/default.nix b/pkgs/development/python-modules/pyrdfa3/default.nix
index 6526824fd9ae4..bebc20c63e96d 100644
--- a/pkgs/development/python-modules/pyrdfa3/default.nix
+++ b/pkgs/development/python-modules/pyrdfa3/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, html5lib
-, pythonOlder
-, rdflib
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  html5lib,
+  pythonOlder,
+  rdflib,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-c2gdq5V/YJAWlnZziLlWpXaccwvEUdpv+y8ONvGDFMI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     rdflib
@@ -31,9 +30,7 @@ buildPythonPackage rec {
     requests
   ];
 
-  pythonImportsCheck = [
-    "pyRdfa"
-  ];
+  pythonImportsCheck = [ "pyRdfa" ];
 
   meta = with lib; {
     description = "RDFa 1.1 distiller/parser library";
diff --git a/pkgs/development/python-modules/pyre-extensions/default.nix b/pkgs/development/python-modules/pyre-extensions/default.nix
index 24bc9312de86c..3a51946a81d77 100644
--- a/pkgs/development/python-modules/pyre-extensions/default.nix
+++ b/pkgs/development/python-modules/pyre-extensions/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-# build inputs
-, typing-extensions
-, typing-inspect
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  # build inputs
+  typing-extensions,
+  typing-inspect,
 }:
 let
   pname = "pyre-extensions";
diff --git a/pkgs/development/python-modules/pyreaderwriterlock/default.nix b/pkgs/development/python-modules/pyreaderwriterlock/default.nix
index a9771f6698712..91a5d2934916e 100644
--- a/pkgs/development/python-modules/pyreaderwriterlock/default.nix
+++ b/pkgs/development/python-modules/pyreaderwriterlock/default.nix
@@ -1,19 +1,23 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
 
-  # propagates
-, typing-extensions
+  # build-system
+  setuptools,
+
+  # dependencies
+  typing-extensions,
 
   # tests
-, unittestCheckHook
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pyreaderwriterlock";
   version = "1.0.9";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -24,11 +28,11 @@ buildPythonPackage rec {
     hash = "sha256-8FC+4aDgGpF1BmOdlkFtMy7OfWdSmvn9fjKXSmmeJlg=";
   };
 
-  propagatedBuildInputs = [ typing-extensions ];
+  build-system = [ setuptools ];
+
+  dependencies = [ typing-extensions ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "readerwriterlock" ];
 
diff --git a/pkgs/development/python-modules/pyreadstat/default.nix b/pkgs/development/python-modules/pyreadstat/default.nix
index b8eaa04b1a93c..56894f1c4df43 100644
--- a/pkgs/development/python-modules/pyreadstat/default.nix
+++ b/pkgs/development/python-modules/pyreadstat/default.nix
@@ -1,20 +1,22 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, libiconv
-, pandas
-, python
-, pythonOlder
-, readstat
-, zlib
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+  libiconv,
+  pandas,
+  python,
+  pythonOlder,
+  readstat,
+  setuptools,
+  zlib,
 }:
 
 buildPythonPackage rec {
   pname = "pyreadstat";
-  version = "1.2.6";
-  format = "setuptools";
+  version = "1.2.7";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -22,27 +24,22 @@ buildPythonPackage rec {
     owner = "Roche";
     repo = "pyreadstat";
     rev = "refs/tags/v${version}";
-    hash = "sha256-VcPpGRrE/5udNijodO88Lw69JPOm6ZN7BZb4xD34srQ=";
+    hash = "sha256-XuLFLpZbaCj/MHq0+l6GoNqR5nAldAlEJhoO5ioWYTA=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     cython
+    setuptools
   ];
 
-  buildInputs = [
-    zlib
-  ] ++ lib.optionals stdenv.isDarwin [
-    libiconv
-  ];
+  buildInputs = [ zlib ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     readstat
     pandas
   ];
 
-  pythonImportsCheck = [
-    "pyreadstat"
-  ];
+  pythonImportsCheck = [ "pyreadstat" ];
 
   preCheck = ''
     export HOME=$(mktemp -d);
diff --git a/pkgs/development/python-modules/pyrect/default.nix b/pkgs/development/python-modules/pyrect/default.nix
index 0d61a2e182a0f..3b673068adaaa 100644
--- a/pkgs/development/python-modules/pyrect/default.nix
+++ b/pkgs/development/python-modules/pyrect/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pygame
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pygame,
 }:
 
 buildPythonPackage rec {
@@ -16,7 +17,10 @@ buildPythonPackage rec {
     hash = "sha256-9lFV9t+bkptnyv+9V8CUfFrlRJ07WA0XgHS/+0egm3g=";
   };
 
-  nativeCheckInputs = [ pytestCheckHook pygame ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pygame
+  ];
 
   preCheck = ''
     export LC_ALL="en_US.UTF-8"
diff --git a/pkgs/development/python-modules/pyregion/default.nix b/pkgs/development/python-modules/pyregion/default.nix
index 4d875032ef94c..d096a5d0c7b85 100644
--- a/pkgs/development/python-modules/pyregion/default.nix
+++ b/pkgs/development/python-modules/pyregion/default.nix
@@ -1,21 +1,21 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-# needed to build
-, cython
-, oldest-supported-numpy
-, setuptools
-, setuptools-scm
-, wheel
-# needed to run
-, astropy
-, numpy
-, pyparsing
-# needed to check
-, pytestCheckHook
-, pytest-astropy
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  # needed to build
+  cython,
+  oldest-supported-numpy,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  # needed to run
+  astropy,
+  numpy,
+  pyparsing,
+  # needed to check
+  pytestCheckHook,
+  pytest-astropy,
 }:
 
 buildPythonPackage rec {
@@ -52,7 +52,10 @@ buildPythonPackage rec {
     wheel
   ];
 
-  nativeCheckInputs = [ pytestCheckHook pytest-astropy ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-astropy
+  ];
 
   # Tests must be run in the build directory
   preCheck = ''
diff --git a/pkgs/development/python-modules/pyrender/default.nix b/pkgs/development/python-modules/pyrender/default.nix
index 41214174ae789..1ea8179345098 100644
--- a/pkgs/development/python-modules/pyrender/default.nix
+++ b/pkgs/development/python-modules/pyrender/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, fetchpatch
-, setuptools
-, freetype-py
-, imageio
-, networkx
-, numpy
-, pillow
-, pyglet
-, pyopengl
-, scipy
-, six
-, trimesh
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  fetchpatch,
+  setuptools,
+  freetype-py,
+  imageio,
+  networkx,
+  numpy,
+  pillow,
+  pyglet,
+  pyopengl,
+  scipy,
+  six,
+  trimesh,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -32,7 +33,8 @@ buildPythonPackage rec {
   };
 
   patches = [
-    (fetchpatch { # yet to be tagged
+    (fetchpatch {
+      # yet to be tagged
       name = "relax-pyopengl.patch";
       url = "https://github.com/mmatl/pyrender/commit/7c613e8aed7142df9ff40767a8f10b7a19b6255c.patch";
       hash = "sha256-SXRV9RC3PfQGjjIQ+n97HZrSDPae3rAHnTBiHXSFLaY=";
@@ -51,9 +53,7 @@ buildPythonPackage rec {
         'bm = trimesh.load("tests/data/WaterBottle.glb").geometry["WaterBottle"]'
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   dependencies = [
     freetype-py
@@ -70,9 +70,7 @@ buildPythonPackage rec {
 
   env.PYOPENGL_PLATFORM = "egl"; # enables headless rendering during check
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # does not work inside sandbox, no GPU
diff --git a/pkgs/development/python-modules/pyreqwest-impersonate/default.nix b/pkgs/development/python-modules/pyreqwest-impersonate/default.nix
new file mode 100644
index 0000000000000..8d9406666fe7b
--- /dev/null
+++ b/pkgs/development/python-modules/pyreqwest-impersonate/default.nix
@@ -0,0 +1,69 @@
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  rustPlatform,
+  pytest,
+  runCommand,
+  boringssl,
+  libiconv,
+  SystemConfiguration,
+}:
+
+let
+  # boring-sys expects the static libraries in build/ instead of lib/
+  boringssl-wrapper = runCommand "boringssl-wrapper" { } ''
+    mkdir $out
+    cd $out
+    ln -s ${boringssl.out}/lib build
+    ln -s ${boringssl.dev}/include include
+  '';
+in
+buildPythonPackage rec {
+  pname = "pyreqwest-impersonate";
+  version = "0.4.9";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "deedy5";
+    repo = "pyreqwest_impersonate";
+    rev = "v${version}";
+    hash = "sha256-U22NNYN8p3IQIAVb6dOrErFvuJ5m5yXi2ELbyuaNlFc=";
+  };
+
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit src;
+    name = "${pname}-${version}";
+    hash = "sha256-rj9tfOzhzfWBoxBGlTXHAmiH5qxyoLnHhlEijy/q+Ws=";
+  };
+
+  nativeBuildInputs = [
+    rustPlatform.bindgenHook
+    rustPlatform.cargoSetupHook
+    rustPlatform.maturinBuildHook
+  ];
+
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
+    libiconv
+    SystemConfiguration
+  ];
+
+  env.BORING_BSSL_PATH = boringssl-wrapper;
+
+  passthru.optional-dependencies = {
+    dev = [ pytest ];
+  };
+
+  # Test use network
+  doCheck = false;
+
+  pythonImportsCheck = [ "pyreqwest_impersonate" ];
+
+  meta = {
+    description = "HTTP client that can impersonate web browsers (Chrome/Edge/OkHttp/Safari), mimicking their headers and TLS/JA3/JA4/HTTP2 fingerprints";
+    homepage = "https://github.com/deedy5/pyreqwest_impersonate";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ drupol ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyrevolve/default.nix b/pkgs/development/python-modules/pyrevolve/default.nix
index 8fec5f23ef6e2..0af3e6fe85ec5 100644
--- a/pkgs/development/python-modules/pyrevolve/default.nix
+++ b/pkgs/development/python-modules/pyrevolve/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, contexttimer
-, setuptools
-, versioneer
-, cython_0
-, numpy
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  contexttimer,
+  setuptools,
+  versioneer,
+  cython_0,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -40,17 +41,13 @@ buildPythonPackage rec {
     numpy
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     rm -rf pyrevolve
   '';
 
-  pythonImportsCheck = [
-    "pyrevolve"
-  ];
+  pythonImportsCheck = [ "pyrevolve" ];
 
   meta = with lib; {
     homepage = "https://github.com/devitocodes/pyrevolve";
diff --git a/pkgs/development/python-modules/pyrfc3339/default.nix b/pkgs/development/python-modules/pyrfc3339/default.nix
index 368f3cda24de7..bf2abeb811d6f 100644
--- a/pkgs/development/python-modules/pyrfc3339/default.nix
+++ b/pkgs/development/python-modules/pyrfc3339/default.nix
@@ -1,16 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, pytz
-
-# tests
-, nose
+  # dependencies
+  pytz,
 }:
 
 buildPythonPackage rec {
@@ -24,24 +21,15 @@ buildPythonPackage rec {
     sha256 = "06jv7ar7lpvvk0dixzwdr3wgm0g1lipxs429s2z7knwwa7hwpf41";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
-
-  propagatedBuildInputs = [
-    pytz
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  doCheck = pythonOlder "3.12";
+  propagatedBuildInputs = [ pytz ];
 
-  nativeCheckInputs = [
-    nose
-  ];
+  doCheck = false; # tests are not including in PyPI tarball
 
   meta = with lib; {
     description = "Generate and parse RFC 3339 timestamps";
     homepage = "https://github.com/kurtraschke/pyRFC3339";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/pyrfxtrx/default.nix b/pkgs/development/python-modules/pyrfxtrx/default.nix
index e9c1fac671318..83a89a6793107 100644
--- a/pkgs/development/python-modules/pyrfxtrx/default.nix
+++ b/pkgs/development/python-modules/pyrfxtrx/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyserial
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyserial,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,17 +19,11 @@ buildPythonPackage rec {
     hash = "sha256-Y9UVJZxm5G5ywNLW8nm162cZTs3/mFeI+ZEUGoc9eAs=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    pyserial
-  ];
+  dependencies = [ pyserial ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Library to communicate with the RFXtrx family of devices";
diff --git a/pkgs/development/python-modules/pyric/default.nix b/pkgs/development/python-modules/pyric/default.nix
index 8ee447f0f0c22..e8a29ae7258c8 100644
--- a/pkgs/development/python-modules/pyric/default.nix
+++ b/pkgs/development/python-modules/pyric/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
   # Tests are outdated
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyric"
-  ];
+  pythonImportsCheck = [ "pyric" ];
 
   meta = with lib; {
     description = "Python Radio Interface Controller";
diff --git a/pkgs/development/python-modules/pyring-buffer/default.nix b/pkgs/development/python-modules/pyring-buffer/default.nix
index 6a5c709f617ea..afe261fa46019 100644
--- a/pkgs/development/python-modules/pyring-buffer/default.nix
+++ b/pkgs/development/python-modules/pyring-buffer/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,16 +19,12 @@ buildPythonPackage rec {
     hash = "sha256-bHhcBU4tjFAyZ3/GjaP/hDXz2N73mCChTNYHsZyBCSM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "pyring_buffer"
-  ];
+  pythonImportsCheck = [ "pyring_buffer" ];
 
   meta = with lib; {
-    description = "A pure Python ring buffer for bytes";
+    description = "Pure Python ring buffer for bytes";
     homepage = "https://github.com/rhasspy/pyring-buffer";
     changelog = "https://github.com/rhasspy/pyring-buffer/blob/${src.rev}/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/pyrisco/default.nix b/pkgs/development/python-modules/pyrisco/default.nix
index ee84881ff5f9b..faec26a7fe312 100644
--- a/pkgs/development/python-modules/pyrisco/default.nix
+++ b/pkgs/development/python-modules/pyrisco/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "pyrisco";
-  version = "0.6.1";
+  version = "0.6.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "OnFreund";
     repo = "pyrisco";
     rev = "refs/tags/v${version}";
-    hash = "sha256-NviB3C+YApOo3WGQ1L8Qwyh8C9l8sCgaSA+xn2wYhjg=";
+    hash = "sha256-Xd6m7P/9ZB0tY6io59kCr8n4H8PXMO3nyMRmm8rpgJs=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/pyrituals/default.nix b/pkgs/development/python-modules/pyrituals/default.nix
index b73ca18627354..c8514f59ae787 100644
--- a/pkgs/development/python-modules/pyrituals/default.nix
+++ b/pkgs/development/python-modules/pyrituals/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     sha256 = "0ynjz7khp67bwxjp580w3zijxr9yn44nmnbvkxjxq9scyb2mjf6g";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [ aiohttp ];
 
diff --git a/pkgs/development/python-modules/pyrmvtransport/default.nix b/pkgs/development/python-modules/pyrmvtransport/default.nix
index 60415585b1cdf..89eea0f2ecbb6 100644
--- a/pkgs/development/python-modules/pyrmvtransport/default.nix
+++ b/pkgs/development/python-modules/pyrmvtransport/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pythonOlder
-, flit
-, async-timeout
-, lxml
-, httpx
-, pytestCheckHook
-, pytest-asyncio
-, pytest-httpx
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pythonOlder,
+  flit,
+  async-timeout,
+  lxml,
+  httpx,
+  pytestCheckHook,
+  pytest-asyncio,
+  pytest-httpx,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-nFxGEyO+wyRzPayjjv8WNIJ+XIWbVn0dyyjQKHiyr40=";
   };
 
-  nativeBuildInputs = [
-    flit
-  ];
+  nativeBuildInputs = [ flit ];
 
   propagatedBuildInputs = [
     async-timeout
@@ -56,9 +55,7 @@ buildPythonPackage rec {
     })
   ];
 
-  pythonImportsCheck = [
-    "RMVtransport"
-  ];
+  pythonImportsCheck = [ "RMVtransport" ];
 
   meta = with lib; {
     homepage = "https://github.com/cgtobi/PyRMVtransport";
diff --git a/pkgs/development/python-modules/pyro-api/default.nix b/pkgs/development/python-modules/pyro-api/default.nix
index 9791d8bbaa8e1..c5f2ea37e0c80 100644
--- a/pkgs/development/python-modules/pyro-api/default.nix
+++ b/pkgs/development/python-modules/pyro-api/default.nix
@@ -1,4 +1,8 @@
-{ buildPythonPackage, fetchPypi, lib }:
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+}:
 
 buildPythonPackage rec {
   version = "0.1.2";
@@ -16,7 +20,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = {
-    description = "Generic API for dispatch to Pyro backends.";
+    description = "Generic API for dispatch to Pyro backends";
     homepage = "http://pyro.ai";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ georgewhewell ];
diff --git a/pkgs/development/python-modules/pyro-ppl/default.nix b/pkgs/development/python-modules/pyro-ppl/default.nix
index d96f124f6f643..94d2c640d97ee 100644
--- a/pkgs/development/python-modules/pyro-ppl/default.nix
+++ b/pkgs/development/python-modules/pyro-ppl/default.nix
@@ -1,59 +1,63 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, graphviz
-, jupyter
-, matplotlib
-, networkx
-, opt-einsum
-, pandas
-, pillow
-, pyro-api
-, pythonOlder
-, torch
-, scikit-learn
-, seaborn
-, setuptools
-, torchvision
-, tqdm
-, wget
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  graphviz,
+  ipywidgets,
+  matplotlib,
+  notebook,
+  numpy,
+  opt-einsum,
+  pandas,
+  pillow,
+  pyro-api,
+  pythonOlder,
+  scikit-learn,
+  scipy,
+  seaborn,
+  setuptools,
+  torch,
+  torchvision,
+  tqdm,
+  wget,
 }:
 
 buildPythonPackage rec {
   pname = "pyro-ppl";
-  version = "1.9.0";
+  version = "1.9.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit version pname;
-    hash = "sha256-QfTABRWVaCgPvFEWSJYKmKKxpBACfYvQpDIgrJsQLN8=";
+  src = fetchFromGitHub {
+    owner = "pyro-ppl";
+    repo = "pyro";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Dvbl/80EGoGWGhWYVIf/xjovUJG1+3WtpMH+lx1oB2E=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    numpy
+    opt-einsum
     pyro-api
     torch
-    networkx
-    opt-einsum
     tqdm
   ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     extras = [
+      notebook
+      ipywidgets
       graphviz
-      jupyter
-      # lap
       matplotlib
+      torchvision
       pandas
       pillow
       scikit-learn
       seaborn
-      torchvision
+      scipy
       # visdom
       wget
     ];
@@ -74,6 +78,9 @@ buildPythonPackage rec {
     homepage = "http://pyro.ai";
     changelog = "https://github.com/pyro-ppl/pyro/releases/tag/${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ teh georgewhewell ];
+    maintainers = with maintainers; [
+      teh
+      georgewhewell
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pyro4/default.nix b/pkgs/development/python-modules/pyro4/default.nix
index 7b0c8229c8998..387d5135d2d79 100644
--- a/pkgs/development/python-modules/pyro4/default.nix
+++ b/pkgs/development/python-modules/pyro4/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, cloudpickle
-, dill
-, fetchPypi
-, msgpack
-, pytestCheckHook
-, pythonAtLeast
-, serpent
+{
+  lib,
+  buildPythonPackage,
+  cloudpickle,
+  dill,
+  fetchPypi,
+  msgpack,
+  pytestCheckHook,
+  pythonAtLeast,
+  serpent,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-UR9bCATpLdd9wzrfnJR3h+P56cWpaxIWLwVXp8TOIfs=";
   };
 
-  propagatedBuildInputs = [
-    serpent
-  ];
+  propagatedBuildInputs = [ serpent ];
 
   buildInputs = [
     dill
@@ -34,9 +33,7 @@ buildPythonPackage rec {
     msgpack
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # add testsupport.py to PATH
   preCheck = ''
@@ -57,9 +54,7 @@ buildPythonPackage rec {
   # otherwise the tests hang the build
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [
-    "Pyro4"
-  ];
+  pythonImportsCheck = [ "Pyro4" ];
 
   meta = with lib; {
     description = "Distributed object middleware for Python (RPC)";
diff --git a/pkgs/development/python-modules/pyro5/default.nix b/pkgs/development/python-modules/pyro5/default.nix
index eacf7436cda6e..500f7143c9020 100644
--- a/pkgs/development/python-modules/pyro5/default.nix
+++ b/pkgs/development/python-modules/pyro5/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, serpent
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  serpent,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,15 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-gsPfyYYLSfiXso/yT+ZxbIQWcsYAr4/kDQ46f6yaP14=";
   };
 
-  propagatedBuildInputs = [
-    serpent
-  ];
+  propagatedBuildInputs = [ serpent ];
 
   __darwinAllowLocalNetworking = true;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Ignore network related tests, which fail in sandbox
@@ -37,13 +34,9 @@ buildPythonPackage rec {
     "GetIP"
     "TestNameServer"
     "TestBCSetup"
-  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
-    "Socket"
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ "Socket" ];
 
-  pythonImportsCheck = [
-    "Pyro5"
-  ];
+  pythonImportsCheck = [ "Pyro5" ];
 
   meta = with lib; {
     description = "Distributed object middleware for Python (RPC)";
diff --git a/pkgs/development/python-modules/pyrogram/default.nix b/pkgs/development/python-modules/pyrogram/default.nix
index c947cbaaa4eb6..b7961fa3e690f 100644
--- a/pkgs/development/python-modules/pyrogram/default.nix
+++ b/pkgs/development/python-modules/pyrogram/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pyaes
-, pysocks
-, pytestCheckHook
-, pytest-asyncio
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pyaes,
+  pysocks,
+  pytestCheckHook,
+  pytest-asyncio,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyroma/default.nix b/pkgs/development/python-modules/pyroma/default.nix
index 51816799034f9..eacbbe5b8b9c4 100644
--- a/pkgs/development/python-modules/pyroma/default.nix
+++ b/pkgs/development/python-modules/pyroma/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonAtLeast,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, build
-, docutils
-, flit-core
-, packaging
-, pygments
-, requests
-, trove-classifiers
+  # dependencies
+  build,
+  docutils,
+  flit-core,
+  packaging,
+  pygments,
+  requests,
+  trove-classifiers,
 
-# test
-, pytestCheckHook
+  # test
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -45,9 +46,7 @@ buildPythonPackage rec {
     trove-classifiers
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # tries to reach pypi
diff --git a/pkgs/development/python-modules/pyroute2/default.nix b/pkgs/development/python-modules/pyroute2/default.nix
index f6a185fc6dbae..4f94e2ce63fee 100644
--- a/pkgs/development/python-modules/pyroute2/default.nix
+++ b/pkgs/development/python-modules/pyroute2/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, importlib-metadata
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  importlib-metadata,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,13 +21,9 @@ buildPythonPackage rec {
     hash = "sha256-zB792ZwDWd74YBYvQ5au0t2RWTIAqrWvNtQ/e+ZEk50=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   # Requires root privileges, https://github.com/svinota/pyroute2/issues/778
   doCheck = false;
@@ -48,8 +45,14 @@ buildPythonPackage rec {
     description = "Python Netlink library";
     homepage = "https://github.com/svinota/pyroute2";
     changelog = "https://github.com/svinota/pyroute2/blob/${version}/CHANGELOG.rst";
-    license = with licenses; [ asl20 /* or */ gpl2Plus ];
-    maintainers = with maintainers; [ fab mic92 ];
+    license = with licenses; [
+      asl20 # or
+      gpl2Plus
+    ];
+    maintainers = with maintainers; [
+      fab
+      mic92
+    ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/pyrr/default.nix b/pkgs/development/python-modules/pyrr/default.nix
index b84d1a67f1d8d..a4f709f2dfb29 100644
--- a/pkgs/development/python-modules/pyrr/default.nix
+++ b/pkgs/development/python-modules/pyrr/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, multipledispatch
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  multipledispatch,
+  numpy,
 }:
 
 buildPythonPackage rec {
@@ -18,7 +18,10 @@ buildPythonPackage rec {
     hash = "sha256-u9O52MQskZRzw0rBH6uPdXdikWLJe7wyBZGNKIFA4BA=";
   };
 
-  propagatedBuildInputs = [ multipledispatch numpy ];
+  propagatedBuildInputs = [
+    multipledispatch
+    numpy
+  ];
 
   meta = with lib; {
     description = "3D mathematical functions using NumPy";
diff --git a/pkgs/development/python-modules/pyrsistent/default.nix b/pkgs/development/python-modules/pyrsistent/default.nix
index fae4bba430d36..57804f9bd150c 100644
--- a/pkgs/development/python-modules/pyrsistent/default.nix
+++ b/pkgs/development/python-modules/pyrsistent/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, setuptools
-, six
-, pytestCheckHook
-, hypothesis
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  setuptools,
+  six,
+  pytestCheckHook,
+  hypothesis,
 }:
 
 buildPythonPackage rec {
@@ -20,13 +21,14 @@ buildPythonPackage rec {
     hash = "sha256-TEj3j2KrWWxnkIYITQ3RMlSuTz1scqg//fXr3vjyZaQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [ six ];
 
-  nativeCheckInputs = [ pytestCheckHook hypothesis ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    hypothesis
+  ];
 
   pythonImportsCheck = [ "pyrsistent" ];
 
@@ -36,5 +38,4 @@ buildPythonPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ desiderius ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pyrss2gen/default.nix b/pkgs/development/python-modules/pyrss2gen/default.nix
index 9820eb1583f0f..f07f054cbce6c 100644
--- a/pkgs/development/python-modules/pyrss2gen/default.nix
+++ b/pkgs/development/python-modules/pyrss2gen/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -23,5 +24,4 @@ buildPythonPackage rec {
     license = licenses.bsd2;
     maintainers = with maintainers; [ domenkozar ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pyrtlsdr/default.nix b/pkgs/development/python-modules/pyrtlsdr/default.nix
index fdd89c28460be..21a3b1b4bd1ab 100644
--- a/pkgs/development/python-modules/pyrtlsdr/default.nix
+++ b/pkgs/development/python-modules/pyrtlsdr/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, rtl-sdr
-, setuptools
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  rtl-sdr,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-+z5YO6BzuGHo4LxeYvZvBzZekUf102SR3krWLyPkU2I=";
   };
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  propagatedBuildInputs = [ setuptools ];
 
   postPatch = ''
     sed "s|driver_files =.*|driver_files = ['${rtl-sdr}/lib/librtlsdr.so']|" -i rtlsdr/librtlsdr.py
diff --git a/pkgs/development/python-modules/pyrympro/default.nix b/pkgs/development/python-modules/pyrympro/default.nix
new file mode 100644
index 0000000000000..70ed0c42a0e63
--- /dev/null
+++ b/pkgs/development/python-modules/pyrympro/default.nix
@@ -0,0 +1,39 @@
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "pyrympro";
+  version = "0.0.8";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "OnFreund";
+    repo = "pyrympro";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-mRvKLPgtBgmFDTHqra7GslxsgsJpQ2w/DE0Zgz5jujk=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ aiohttp ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "pyrympro" ];
+
+  meta = with lib; {
+    description = "Module to interact with Read Your Meter Pro";
+    homepage = "https://github.com/OnFreund/pyrympro";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pysabnzbd/default.nix b/pkgs/development/python-modules/pysabnzbd/default.nix
index e6116e6442d17..4515bc0b37c82 100644
--- a/pkgs/development/python-modules/pysabnzbd/default.nix
+++ b/pkgs/development/python-modules/pysabnzbd/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, aiohttp
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  aiohttp,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-Ubl+kdcjMm1A7pa3Q5G+fFBwPIxA375Ci04/vVyUl+A=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # upstream has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/pysaj/default.nix b/pkgs/development/python-modules/pysaj/default.nix
index 15f8dd0fccf07..499cb552b36e0 100644
--- a/pkgs/development/python-modules/pysaj/default.nix
+++ b/pkgs/development/python-modules/pysaj/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, lxml
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxml,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pysaj"
-  ];
+  pythonImportsCheck = [ "pysaj" ];
 
   meta = with lib; {
     description = "Library to communicate with SAJ inverters";
diff --git a/pkgs/development/python-modules/pysam/default.nix b/pkgs/development/python-modules/pysam/default.nix
index dbce429f4338a..05efd63de69f9 100644
--- a/pkgs/development/python-modules/pysam/default.nix
+++ b/pkgs/development/python-modules/pysam/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, bzip2
-, bcftools
-, curl
-, cython
-, htslib
-, libdeflate
-, xz
-, pytestCheckHook
-, setuptools
-, samtools
-, zlib
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  bzip2,
+  bcftools,
+  curl,
+  cython,
+  htslib,
+  libdeflate,
+  xz,
+  pytestCheckHook,
+  setuptools,
+  samtools,
+  zlib,
 }:
 
 buildPythonPackage rec {
-  pname   = "pysam";
+  pname = "pysam";
   version = "0.22.1";
   pyproject = true;
 
@@ -75,7 +76,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A python module for reading, manipulating and writing genome data sets";
+    description = "Python module for reading, manipulating and writing genome data sets";
     downloadPage = "https://github.com/pysam-developers/pysam";
     homepage = "https://pysam.readthedocs.io/";
     maintainers = with maintainers; [ unode ];
diff --git a/pkgs/development/python-modules/pysaml2/default.nix b/pkgs/development/python-modules/pysaml2/default.nix
index 7f27356422538..51ed8f0cc31f9 100644
--- a/pkgs/development/python-modules/pysaml2/default.nix
+++ b/pkgs/development/python-modules/pysaml2/default.nix
@@ -1,27 +1,26 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, defusedxml
-, fetchFromGitHub
-, fetchPypi
-, paste
-, poetry-core
-, pyasn1
-, pymongo
-, pyopenssl
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, pythonRelaxDepsHook
-, pytz
-, repoze-who
-, requests
-, responses
-, setuptools
-, substituteAll
-, xmlschema
-, xmlsec
-, zope-interface
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  defusedxml,
+  fetchFromGitHub,
+  paste,
+  poetry-core,
+  pyasn1,
+  pymongo,
+  pyopenssl,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  pytz,
+  repoze-who,
+  requests,
+  responses,
+  setuptools,
+  substituteAll,
+  xmlschema,
+  xmlsec,
+  zope-interface,
 }:
 
 buildPythonPackage rec {
@@ -50,13 +49,10 @@ buildPythonPackage rec {
     sed -i 's/2999\(-.*T\)/2029\1/g' tests/*.xml
   '';
 
-  pythonRelaxDeps = [
-    "xmlschema"
-  ];
+  pythonRelaxDeps = [ "xmlschema" ];
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -93,15 +89,13 @@ buildPythonPackage rec {
     "test_conf_syslog"
   ];
 
-  pythonImportsCheck = [
-    "saml2"
-  ];
+  pythonImportsCheck = [ "saml2" ];
 
   meta = with lib; {
     description = "Python implementation of SAML Version 2 Standard";
     homepage = "https://github.com/IdentityPython/pysaml2";
     changelog = "https://github.com/IdentityPython/pysaml2/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pysatochip/default.nix b/pkgs/development/python-modules/pysatochip/default.nix
index f508bc303239d..5b2856984cbea 100644
--- a/pkgs/development/python-modules/pysatochip/default.nix
+++ b/pkgs/development/python-modules/pysatochip/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, certifi
-, cryptography
-, ecdsa
-, pyaes
-, pyopenssl
-, pyscard
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  certifi,
+  cryptography,
+  ecdsa,
+  pyaes,
+  pyopenssl,
+  pyscard,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,7 +29,13 @@ buildPythonPackage rec {
       --replace "pyopenssl==20.0.0" "pyopenssl"
   '';
 
-  propagatedBuildInputs = [ cryptography ecdsa pyaes pyopenssl pyscard ];
+  propagatedBuildInputs = [
+    cryptography
+    ecdsa
+    pyaes
+    pyopenssl
+    pyscard
+  ];
 
   nativeCheckInputs = [ certifi ];
 
diff --git a/pkgs/development/python-modules/pysbd/default.nix b/pkgs/development/python-modules/pysbd/default.nix
index f2062569534e6..fcc440fe4c74e 100644
--- a/pkgs/development/python-modules/pysbd/default.nix
+++ b/pkgs/development/python-modules/pysbd/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, tqdm
-, spacy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  tqdm,
+  spacy,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,10 @@ buildPythonPackage rec {
     sha256 = "12p7qm237z56hw4zr03n8rycgfymhki2m9c4w3ib0mvqq122a5dp";
   };
 
-  nativeCheckInputs = [ tqdm spacy ];
+  nativeCheckInputs = [
+    tqdm
+    spacy
+  ];
 
   doCheck = false; # requires pyconll and blingfire
 
diff --git a/pkgs/development/python-modules/pysc2/default.nix b/pkgs/development/python-modules/pysc2/default.nix
index b45c955416094..667ba03903230 100644
--- a/pkgs/development/python-modules/pysc2/default.nix
+++ b/pkgs/development/python-modules/pysc2/default.nix
@@ -1,19 +1,20 @@
-{ buildPythonPackage
-, lib
-, fetchFromGitHub
-, absl-py
-, enum34
-, future
-, mock
-, mpyq
-, numpy
-, portpicker
-, protobuf
-, pygame
-, s2clientprotocol
-, six
-, websocket-client
-, sc2-headless
+{
+  buildPythonPackage,
+  lib,
+  fetchFromGitHub,
+  absl-py,
+  enum34,
+  future,
+  mock,
+  mpyq,
+  numpy,
+  portpicker,
+  protobuf,
+  pygame,
+  s2clientprotocol,
+  six,
+  websocket-client,
+  sc2-headless,
 }:
 
 buildPythonPackage {
@@ -54,10 +55,10 @@ buildPythonPackage {
   ];
 
   meta = {
-    description = "Starcraft II environment and library for training agents.";
+    description = "Starcraft II environment and library for training agents";
     homepage = "https://github.com/deepmind/pysc2";
     license = lib.licenses.asl20;
     platforms = lib.platforms.linux;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyscaffold/default.nix b/pkgs/development/python-modules/pyscaffold/default.nix
index c394f9550fdc1..7b3bc447ef488 100644
--- a/pkgs/development/python-modules/pyscaffold/default.nix
+++ b/pkgs/development/python-modules/pyscaffold/default.nix
@@ -1,32 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, setuptools-scm
-, wheel
-, colorama
-, configupdater
-, importlib-metadata
-, packaging
-, platformdirs
-, tomlkit
-, pre-commit
-, pyscaffoldext-cookiecutter
-, pyscaffoldext-custom-extension
-, pyscaffoldext-django
-, pyscaffoldext-dsproject
-, pyscaffoldext-markdown
-, pyscaffoldext-travis
-, virtualenv
-, build
-, certifi
-, flake8
-, pytest
-, pytest-cov
-, pytest-randomly
-, pytest-xdist
-, sphinx
-, tox
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  colorama,
+  configupdater,
+  importlib-metadata,
+  packaging,
+  platformdirs,
+  tomlkit,
+  pre-commit,
+  pyscaffoldext-cookiecutter,
+  pyscaffoldext-custom-extension,
+  pyscaffoldext-django,
+  pyscaffoldext-dsproject,
+  pyscaffoldext-markdown,
+  pyscaffoldext-travis,
+  virtualenv,
+  build,
+  certifi,
+  flake8,
+  pytest,
+  pytest-cov,
+  pytest-randomly,
+  pytest-xdist,
+  sphinx,
+  tox,
 }:
 
 buildPythonPackage rec {
@@ -72,12 +73,8 @@ buildPythonPackage rec {
       pyscaffoldext-travis
       virtualenv
     ];
-    ds = [
-      pyscaffoldext-dsproject
-    ];
-    md = [
-      pyscaffoldext-markdown
-    ];
+    ds = [ pyscaffoldext-dsproject ];
+    md = [ pyscaffoldext-markdown ];
     testing = [
       build
       certifi
diff --git a/pkgs/development/python-modules/pyscaffoldext-cookiecutter/default.nix b/pkgs/development/python-modules/pyscaffoldext-cookiecutter/default.nix
index 88027434e1953..bcc4ed68bfdd2 100644
--- a/pkgs/development/python-modules/pyscaffoldext-cookiecutter/default.nix
+++ b/pkgs/development/python-modules/pyscaffoldext-cookiecutter/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, setuptools-scm
-, wheel
-, cookiecutter
-, importlib-metadata
-, pyscaffold
-, configupdater
-, pre-commit
-, pytest
-, pytest-cov
-, pytest-xdist
-, tox
-, virtualenv
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  cookiecutter,
+  importlib-metadata,
+  pyscaffold,
+  configupdater,
+  pre-commit,
+  pytest,
+  pytest-cov,
+  pytest-xdist,
+  tox,
+  virtualenv,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyscaffoldext-custom-extension/default.nix b/pkgs/development/python-modules/pyscaffoldext-custom-extension/default.nix
index 9d47769bdf021..f487b25c9eea6 100644
--- a/pkgs/development/python-modules/pyscaffoldext-custom-extension/default.nix
+++ b/pkgs/development/python-modules/pyscaffoldext-custom-extension/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, setuptools-scm
-, wheel
-, configupdater
-, importlib-metadata
-, packaging
-, pyscaffold
-, pre-commit
-, pytest
-, pytest-cov
-, pytest-xdist
-, tox
-, virtualenv
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  configupdater,
+  importlib-metadata,
+  packaging,
+  pyscaffold,
+  pre-commit,
+  pytest,
+  pytest-cov,
+  pytest-xdist,
+  tox,
+  virtualenv,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyscaffoldext-django/default.nix b/pkgs/development/python-modules/pyscaffoldext-django/default.nix
index 9a7725ad3244c..c85e01e099252 100644
--- a/pkgs/development/python-modules/pyscaffoldext-django/default.nix
+++ b/pkgs/development/python-modules/pyscaffoldext-django/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, setuptools-scm
-, wheel
-, django
-, pyscaffold
-, configupdater
-, pre-commit
-, pytest
-, pytest-cov
-, pytest-xdist
-, tox
-, virtualenv
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  django,
+  pyscaffold,
+  configupdater,
+  pre-commit,
+  pytest,
+  pytest-cov,
+  pytest-xdist,
+  tox,
+  virtualenv,
 }:
 
 buildPythonPackage rec {
@@ -55,6 +56,6 @@ buildPythonPackage rec {
     description = "Integration of django builtin scaffold cli (django-admin) into PyScaffold";
     homepage = "https://pypi.org/project/pyscaffoldext-django/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyscaffoldext-dsproject/default.nix b/pkgs/development/python-modules/pyscaffoldext-dsproject/default.nix
index e85bcc3b8e0ed..5f2cd21069fea 100644
--- a/pkgs/development/python-modules/pyscaffoldext-dsproject/default.nix
+++ b/pkgs/development/python-modules/pyscaffoldext-dsproject/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, setuptools-scm
-, wheel
-, importlib-metadata
-, pyscaffold
-, pyscaffoldext-markdown
-, configupdater
-, pre-commit
-, pytest
-, pytest-cov
-, pytest-xdist
-, tox
-, virtualenv
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  importlib-metadata,
+  pyscaffold,
+  pyscaffoldext-markdown,
+  configupdater,
+  pre-commit,
+  pytest,
+  pytest-cov,
+  pytest-xdist,
+  tox,
+  virtualenv,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyscaffoldext-markdown/default.nix b/pkgs/development/python-modules/pyscaffoldext-markdown/default.nix
index d0330a38f3144..82b25bac417ce 100644
--- a/pkgs/development/python-modules/pyscaffoldext-markdown/default.nix
+++ b/pkgs/development/python-modules/pyscaffoldext-markdown/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, setuptools-scm
-, wheel
-, importlib-metadata
-, myst-parser
-, pyscaffold
-, configupdater
-, pre-commit
-, pytest
-, pytest-cov
-, pytest-xdist
-, tox
-, twine
-, virtualenv
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  importlib-metadata,
+  myst-parser,
+  pyscaffold,
+  configupdater,
+  pre-commit,
+  pytest,
+  pytest-cov,
+  pytest-xdist,
+  tox,
+  twine,
+  virtualenv,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyscaffoldext-travis/default.nix b/pkgs/development/python-modules/pyscaffoldext-travis/default.nix
index 3d5ba4aa33e0b..46d27e7480b41 100644
--- a/pkgs/development/python-modules/pyscaffoldext-travis/default.nix
+++ b/pkgs/development/python-modules/pyscaffoldext-travis/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, setuptools-scm
-, wheel
-, importlib-metadata
-, pyscaffold
-, configupdater
-, pre-commit
-, pytest
-, pytest-cov
-, pytest-xdist
-, tox
-, virtualenv
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  importlib-metadata,
+  pyscaffold,
+  configupdater,
+  pre-commit,
+  pytest,
+  pytest-cov,
+  pytest-xdist,
+  tox,
+  virtualenv,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyscard/default.nix b/pkgs/development/python-modules/pyscard/default.nix
index 5fa9e60ae5c6c..4582cc1852036 100644
--- a/pkgs/development/python-modules/pyscard/default.nix
+++ b/pkgs/development/python-modules/pyscard/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, buildPythonPackage
-, setuptools
-, pkg-config
-, swig
-, pcsclite
-, PCSC
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  PCSC,
+  pcsclite,
+  pkg-config,
+  pytestCheckHook,
+  setuptools,
+  stdenv,
+  swig,
 }:
 
 let
   # Package does not support configuring the pcsc library.
-  withApplePCSC = stdenv.isDarwin;
+  withApplePCSC = stdenv.hostPlatform.isDarwin;
 in
 
 buildPythonPackage rec {
-  version = "2.0.9";
   pname = "pyscard";
+  version = "2.0.9";
   pyproject = true;
 
   src = fetchFromGitHub {
@@ -27,40 +28,45 @@ buildPythonPackage rec {
     hash = "sha256-DO4Ea+mlrWPpOLI8Eki+03UnsOXEhN2PAl0+gdN5sTo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    swig
-  ] ++ lib.optionals (!withApplePCSC) [
-    pkg-config
-  ];
+  build-system = [ setuptools ];
+
+  nativeBuildInputs = [ swig ] ++ lib.optionals (!withApplePCSC) [ pkg-config ];
 
   buildInputs = if withApplePCSC then [ PCSC ] else [ pcsclite ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch =
-    if withApplePCSC then ''
-      substituteInPlace smartcard/scard/winscarddll.c \
-        --replace "/System/Library/Frameworks/PCSC.framework/PCSC" \
-                  "${PCSC}/Library/Frameworks/PCSC.framework/PCSC"
-    '' else ''
-      substituteInPlace setup.py --replace "pkg-config" "$PKG_CONFIG"
-      substituteInPlace smartcard/scard/winscarddll.c \
-        --replace "libpcsclite.so.1" \
-                  "${lib.getLib pcsclite}/lib/libpcsclite${stdenv.hostPlatform.extensions.sharedLibrary}"
-    '';
+    if withApplePCSC then
+      ''
+        substituteInPlace smartcard/scard/winscarddll.c \
+          --replace-fail "/System/Library/Frameworks/PCSC.framework/PCSC" \
+                    "${PCSC}/Library/Frameworks/PCSC.framework/PCSC"
+      ''
+    else
+      ''
+        substituteInPlace setup.py --replace "pkg-config" "$PKG_CONFIG"
+        substituteInPlace smartcard/scard/winscarddll.c \
+          --replace-fail "libpcsclite.so.1" \
+                    "${lib.getLib pcsclite}/lib/libpcsclite${stdenv.hostPlatform.extensions.sharedLibrary}"
+      '';
 
   preCheck = ''
     # remove src module, so tests use the installed module instead
     rm -r smartcard
   '';
 
+  disabledTests = [
+    # AssertionError
+    "test_hresult"
+    "test_low_level"
+  ];
+
   meta = with lib; {
-    homepage = "https://pyscard.sourceforge.io/";
     description = "Smartcard library for python";
-    license = licenses.lgpl21;
+    homepage = "https://pyscard.sourceforge.io/";
+    changelog = "https://github.com/LudovicRousseau/pyscard/releases/tag/${version}";
+    license = licenses.lgpl21Plus;
     maintainers = with maintainers; [ layus ];
   };
 }
diff --git a/pkgs/development/python-modules/pyscf/default.nix b/pkgs/development/python-modules/pyscf/default.nix
index a8c0911276b4c..5866abddf4cfc 100644
--- a/pkgs/development/python-modules/pyscf/default.nix
+++ b/pkgs/development/python-modules/pyscf/default.nix
@@ -1,32 +1,33 @@
-{ buildPythonPackage
-, lib
-, fetchFromGitHub
-, cmake
-, blas
-, libcint
-, libxc
-, xcfun
-, cppe
-, h5py
-, numpy
-, scipy
-, pytestCheckHook
+{
+  buildPythonPackage,
+  lib,
+  fetchFromGitHub,
+  cmake,
+  blas,
+  libcint,
+  libxc,
+  xcfun,
+  cppe,
+  h5py,
+  numpy,
+  scipy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pyscf";
-  version = "2.5.0";
+  version = "2.6.2";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "pyscf";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-UCchzoYsqeIGViewPf4KedmhYktXLmp5Me4lzb1i8p0=";
+    hash = "sha256-gudkKhC5Cpd6ZM9mJ1SfemqmwDqhDmpAfYE8XGFpzmA=";
   };
 
   # setup.py calls Cmake and passes the arguments in CMAKE_CONFIGURE_ARGS to cmake.
-  nativeBuildInputs = [ cmake ];
+  build-system = [ cmake ];
   dontUseCmakeConfigure = true;
   preConfigure = ''
     export CMAKE_CONFIGURE_ARGS="-DBUILD_LIBCINT=0 -DBUILD_LIBXC=0 -DBUILD_XCFUN=0"
@@ -40,7 +41,7 @@ buildPythonPackage rec {
     xcfun
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cppe
     h5py
     numpy
@@ -85,6 +86,7 @@ buildPythonPackage rec {
     "test_veff"
     "test_collinear_kgks_gga"
     "test_libxc_gga_deriv4"
+    "test_sacasscf_grad"
   ];
 
   pytestFlagsArray = [
@@ -93,13 +95,18 @@ buildPythonPackage rec {
     "--ignore-glob=*_slow.*py"
     "--ignore-glob=*_kproxy_.*py"
     "--ignore-glob=test_proxy.py"
+    "--ignore-glob=pyscf/nac/test/test_sacasscf.py"
+    "--ignore-glob=pyscf/grad/test/test_casscf.py"
   ];
 
   meta = with lib; {
     description = "Python-based simulations of chemistry framework";
     homepage = "https://github.com/pyscf/pyscf";
     license = licenses.asl20;
-    platforms = [ "x86_64-linux" "x86_64-darwin" ];
+    platforms = [
+      "x86_64-linux"
+      "x86_64-darwin"
+    ];
     maintainers = [ maintainers.sheepforce ];
   };
 }
diff --git a/pkgs/development/python-modules/pyschedule/default.nix b/pkgs/development/python-modules/pyschedule/default.nix
index 3d51b3bb9deea..e3f09a5a58a0c 100644
--- a/pkgs/development/python-modules/pyschedule/default.nix
+++ b/pkgs/development/python-modules/pyschedule/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pulp
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pulp,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     sha256 = "6bba9e9ea07906ce2dfe3cd847c1822b137f6b13e9f975c50b347312fd98e110";
   };
 
-  propagatedBuildInputs = [
-    pulp
-  ];
+  propagatedBuildInputs = [ pulp ];
 
   # tests not included with pypi release (in examples)
   doCheck = false;
diff --git a/pkgs/development/python-modules/pyschemes/default.nix b/pkgs/development/python-modules/pyschemes/default.nix
index 384e375ecbded..5c7bc1afb9605 100644
--- a/pkgs/development/python-modules/pyschemes/default.nix
+++ b/pkgs/development/python-modules/pyschemes/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, fetchpatch
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  fetchpatch,
 }:
 
 buildPythonPackage rec {
@@ -25,14 +26,12 @@ buildPythonPackage rec {
       hash = "sha256-vDaWxMrn2aC2wmd035EWRZ3cd/XME81z/BWG0f2T9jc=";
     })
   ];
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "pyschemes" ];
 
   meta = with lib; {
-    description = "A library for validating data structures in Python";
+    description = "Library for validating data structures in Python";
     homepage = "https://github.com/spy16/pyschemes";
     license = licenses.wtfpl;
     maintainers = with maintainers; [ gador ];
diff --git a/pkgs/development/python-modules/pyschlage/default.nix b/pkgs/development/python-modules/pyschlage/default.nix
index d039364f6928d..31cb06940c925 100644
--- a/pkgs/development/python-modules/pyschlage/default.nix
+++ b/pkgs/development/python-modules/pyschlage/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pycognito
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pycognito,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "pyschlage";
-  version = "2024.2.0";
+  version = "2024.8.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,26 +21,22 @@ buildPythonPackage rec {
     owner = "dknowles2";
     repo = "pyschlage";
     rev = "refs/tags/${version}";
-    hash = "sha256-kjAV7VHKp7WpT6dNjuzYMTlcXbyIB2MNZQXOckDLWF8=";
+    hash = "sha256-40WNvpFNBhjg2+1H5PRBlziKrcSjl1fppUk4HOmDRDk=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pycognito
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyschlage"
-  ];
+  pythonImportsCheck = [ "pyschlage" ];
 
   meta = with lib; {
     description = "Library for interacting with Schlage Encode WiFi locks";
diff --git a/pkgs/development/python-modules/pyscreenshot/default.nix b/pkgs/development/python-modules/pyscreenshot/default.nix
index 50a1389fbb238..6112062c91e9b 100644
--- a/pkgs/development/python-modules/pyscreenshot/default.nix
+++ b/pkgs/development/python-modules/pyscreenshot/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, easyprocess
-, entrypoint2
-, jeepney
-, mss
-, pillow
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  easyprocess,
+  entrypoint2,
+  jeepney,
+  mss,
+  pillow,
 }:
 
 buildPythonPackage rec {
@@ -16,17 +17,19 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-jA6T8K72amv+Vahqv87WvTlq5LT2zB428EoorSYlWU0=";
+    hash = "sha256-jA6T8K72amv+Vahqv87WvTlq5LT2zB428EoorSYlWU0=";
   };
 
-  propagatedBuildInputs = [
-    easyprocess
-    entrypoint2
-    pillow
-  ] ++ lib.optionals (isPy3k) [
-    jeepney
-    mss
-  ];
+  propagatedBuildInputs =
+    [
+      easyprocess
+      entrypoint2
+      pillow
+    ]
+    ++ lib.optionals (isPy3k) [
+      jeepney
+      mss
+    ];
 
   # recursive dependency on pyvirtualdisplay
   doCheck = false;
@@ -37,6 +40,6 @@ buildPythonPackage rec {
     description = "python screenshot";
     homepage = "https://github.com/ponty/pyscreenshot";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyscreeze/default.nix b/pkgs/development/python-modules/pyscreeze/default.nix
index d5261471c8f10..51898b3ed9254 100644
--- a/pkgs/development/python-modules/pyscreeze/default.nix
+++ b/pkgs/development/python-modules/pyscreeze/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pillow
-, xlib
-, xvfb-run
-, scrot
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pillow,
+  xlib,
+  xvfb-run,
+  scrot,
 }:
 buildPythonPackage rec {
   pname = "pyscreeze";
@@ -18,18 +19,20 @@ buildPythonPackage rec {
   };
 
   pythonImportsCheck = [ "pyscreeze" ];
-  nativeCheckInputs = [ scrot xlib xvfb-run ];
+  nativeCheckInputs = [
+    scrot
+    xlib
+    xvfb-run
+  ];
   checkPhase = ''
     python -m unittest tests.test_pillow_unavailable
     xvfb-run python -m unittest tests.test_pyscreeze
   '';
 
-  propagatedBuildInputs = [
-    pillow
-  ];
+  propagatedBuildInputs = [ pillow ];
 
   meta = with lib; {
-    description = "PyScreeze is a simple, cross-platform screenshot module for Python 2 and 3.";
+    description = "PyScreeze is a simple, cross-platform screenshot module for Python 2 and 3";
     homepage = "https://github.com/asweigart/pyscreeze";
     license = licenses.bsd3;
     maintainers = with maintainers; [ lucasew ];
diff --git a/pkgs/development/python-modules/pyscrypt/default.nix b/pkgs/development/python-modules/pyscrypt/default.nix
index 223802d449965..69c613e21d561 100644
--- a/pkgs/development/python-modules/pyscrypt/default.nix
+++ b/pkgs/development/python-modules/pyscrypt/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, python }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+}:
 
 buildPythonPackage rec {
   pname = "pyscrypt";
diff --git a/pkgs/development/python-modules/pyscss/default.nix b/pkgs/development/python-modules/pyscss/default.nix
index 912b4acc14e99..af8307218eaf6 100644
--- a/pkgs/development/python-modules/pyscss/default.nix
+++ b/pkgs/development/python-modules/pyscss/default.nix
@@ -1,11 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, six
-, enum34
-, pathlib
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -21,17 +19,16 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ pytestCheckHook ];
 
-  propagatedBuildInputs = [ six ]
-    ++ lib.optionals (pythonOlder "3.4") [ enum34 pathlib ];
+  propagatedBuildInputs = [ six ];
 
   # Test suite is broken.
   # See https://github.com/Kronuz/pyScss/issues/415
   doCheck = false;
 
   meta = with lib; {
-    description = "A Scss compiler for Python";
+    description = "Scss compiler for Python";
     homepage = "https://pyscss.readthedocs.org/en/latest/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pysdcp/default.nix b/pkgs/development/python-modules/pysdcp/default.nix
index b6b1798f7ae1f..091eb865359b9 100644
--- a/pkgs/development/python-modules/pysdcp/default.nix
+++ b/pkgs/development/python-modules/pysdcp/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pysdl2/default.nix b/pkgs/development/python-modules/pysdl2/default.nix
index 0ab7010f09238..7854f24654320 100644
--- a/pkgs/development/python-modules/pysdl2/default.nix
+++ b/pkgs/development/python-modules/pysdl2/default.nix
@@ -1,4 +1,15 @@
-{ stdenv, lib, substituteAll, fetchPypi, buildPythonPackage, SDL2, SDL2_ttf, SDL2_image, SDL2_gfx, SDL2_mixer }:
+{
+  stdenv,
+  lib,
+  substituteAll,
+  fetchPypi,
+  buildPythonPackage,
+  SDL2,
+  SDL2_ttf,
+  SDL2_image,
+  SDL2_gfx,
+  SDL2_mixer,
+}:
 
 buildPythonPackage rec {
   pname = "pysdl2";
@@ -19,23 +30,34 @@ buildPythonPackage rec {
 
   # Deliberately not in propagated build inputs; users can decide
   # which library they want to include.
-  buildInputs = [ SDL2_ttf SDL2_image SDL2_gfx SDL2_mixer ];
+  buildInputs = [
+    SDL2_ttf
+    SDL2_image
+    SDL2_gfx
+    SDL2_mixer
+  ];
   propagatedBuildInputs = [ SDL2 ];
   patches = [
-    (substituteAll ({
-      src = ./PySDL2-dll.patch;
-    } // builtins.mapAttrs (_: pkg: "${pkg}/lib/lib${pkg.pname}${stdenv.hostPlatform.extensions.sharedLibrary}") {
-      # substituteAll keys must start lowercase
-      sdl2 = SDL2;
-      sdl2_ttf = SDL2_ttf;
-      sdl2_image = SDL2_image;
-      sdl2_gfx = SDL2_gfx;
-      sdl2_mixer = SDL2_mixer;
-    }))
+    (substituteAll (
+      {
+        src = ./PySDL2-dll.patch;
+      }
+      //
+        builtins.mapAttrs
+          (_: pkg: "${pkg}/lib/lib${pkg.pname}${stdenv.hostPlatform.extensions.sharedLibrary}")
+          {
+            # substituteAll keys must start lowercase
+            sdl2 = SDL2;
+            sdl2_ttf = SDL2_ttf;
+            sdl2_image = SDL2_image;
+            sdl2_gfx = SDL2_gfx;
+            sdl2_mixer = SDL2_mixer;
+          }
+    ))
   ];
 
   meta = {
-    description = "A wrapper around the SDL2 library and as such similar to the discontinued PySDL project";
+    description = "Wrapper around the SDL2 library and as such similar to the discontinued PySDL project";
     homepage = "https://github.com/marcusva/py-sdl2";
     license = lib.licenses.publicDomain;
     maintainers = with lib.maintainers; [ pmiddend ];
diff --git a/pkgs/development/python-modules/pysecuritas/default.nix b/pkgs/development/python-modules/pysecuritas/default.nix
index 0c777bca224d7..118518859d0b1 100644
--- a/pkgs/development/python-modules/pysecuritas/default.nix
+++ b/pkgs/development/python-modules/pysecuritas/default.nix
@@ -1,24 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
-, xmltodict
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
+  setuptools,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
   pname = "pysecuritas";
   version = "0.1.6";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "W3DLZCXUH9y5NPipFEu6URmKN+oVXMgeDF1rfKtxRng=";
+    hash = "sha256-W3DLZCXUH9y5NPipFEu6URmKN+oVXMgeDF1rfKtxRng=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     xmltodict
     requests
   ];
@@ -27,15 +31,13 @@ buildPythonPackage rec {
   # https://github.com/Cebeerre/pysecuritas/issues/13
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pysecuritas"
-  ];
+  pythonImportsCheck = [ "pysecuritas" ];
 
   meta = with lib; {
     description = "Python client to access Securitas Direct Mobile API";
-    mainProgram = "pysecuritas";
     homepage = "https://github.com/Cebeerre/pysecuritas";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "pysecuritas";
   };
 }
diff --git a/pkgs/development/python-modules/pysendfile/default.nix b/pkgs/development/python-modules/pysendfile/default.nix
index 0edd04ae331a2..48cc85cf27b03 100644
--- a/pkgs/development/python-modules/pysendfile/default.nix
+++ b/pkgs/development/python-modules/pysendfile/default.nix
@@ -1,6 +1,5 @@
 {
   lib,
-  stdenv,
   buildPythonPackage,
   fetchPypi,
   pythonOlder,
@@ -27,11 +26,10 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "sendfile" ];
 
   meta = with lib; {
-    description = "A Python interface to sendfile(2)";
+    description = "Python interface to sendfile(2)";
     homepage = "https://github.com/giampaolo/pysendfile";
     changelog = "https://github.com/giampaolo/pysendfile/blob/release-${version}/HISTORY.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
-    broken = stdenv.isDarwin;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pysensibo/default.nix b/pkgs/development/python-modules/pysensibo/default.nix
index 43d19bbc3862d..7fa1cb40565f6 100644
--- a/pkgs/development/python-modules/pysensibo/default.nix
+++ b/pkgs/development/python-modules/pysensibo/default.nix
@@ -1,32 +1,32 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pysensibo";
-  version = "1.0.36";
-  format = "setuptools";
+  version = "1.1.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.11";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-lsHKwFzfkGWuUiZGkt9zwjNDDU7i6gcqcEsi5SQqsSQ=";
+    hash = "sha256-yITcVEBtqH1B+MyhQweOzmdgPgWrueAkczp/UsT4J/4=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  build-system = [ poetry-core ];
+
+  dependencies = [ aiohttp ];
 
   # No tests implemented
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pysensibo"
-  ];
+  pythonImportsCheck = [ "pysensibo" ];
 
   meta = with lib; {
     description = "Module for interacting with Sensibo";
diff --git a/pkgs/development/python-modules/pysensors/default.nix b/pkgs/development/python-modules/pysensors/default.nix
index eccb831300fe0..650b0140f4c71 100644
--- a/pkgs/development/python-modules/pysensors/default.nix
+++ b/pkgs/development/python-modules/pysensors/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, unittestCheckHook, fetchFromGitHub, lm_sensors }:
+{
+  lib,
+  buildPythonPackage,
+  unittestCheckHook,
+  fetchFromGitHub,
+  lm_sensors,
+}:
 buildPythonPackage {
   version = "2017-07-13";
   format = "setuptools";
@@ -20,7 +26,10 @@ buildPythonPackage {
 
   nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [ "-s" "tests" ];
+  unittestFlagsArray = [
+    "-s"
+    "tests"
+  ];
 
   meta = with lib; {
     maintainers = with maintainers; [ guibou ];
diff --git a/pkgs/development/python-modules/pysequoia/default.nix b/pkgs/development/python-modules/pysequoia/default.nix
index 4e48f1c49dd10..f2c07cd5e4181 100644
--- a/pkgs/development/python-modules/pysequoia/default.nix
+++ b/pkgs/development/python-modules/pysequoia/default.nix
@@ -1,33 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pkg-config
-, rustPlatform
-, cargo
-, rustc
-, bzip2
-, nettle
-, openssl
-, pcsclite
-, stdenv
-, darwin
-, libiconv
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pkg-config,
+  rustPlatform,
+  cargo,
+  rustc,
+  bzip2,
+  nettle,
+  openssl,
+  pcsclite,
+  stdenv,
+  darwin,
+  libiconv,
 }:
 
 buildPythonPackage rec {
   pname = "pysequoia";
-  version = "0.1.20";
+  version = "0.1.24";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-KavsLp17e4ckX11B0pefiQ1Hma/O9x0VY/uVPiJm4Fs=";
+    hash = "sha256-sLGPVyUVh1MxAJz8933xGAxaI9+0L/D6wViy5ARLe44=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-7Lw6gR6o2HJ/zyG4b0wz4nmU2AIIAhyK9zaQ6w+/RgE=";
+    hash = "sha256-DLMAL1pJwJ5xU9XzJXlrqfNGloK9VNGxnapnh34bRhI=";
   };
 
   nativeBuildInputs = [
@@ -39,16 +40,18 @@ buildPythonPackage rec {
     rustc
   ];
 
-  buildInputs = [
-    bzip2
-    nettle
-    openssl
-    pcsclite
-  ] ++ lib.optionals stdenv.isDarwin [
-    darwin.apple_sdk.frameworks.CoreFoundation
-    darwin.apple_sdk.frameworks.Security
-    libiconv
-  ];
+  buildInputs =
+    [
+      bzip2
+      nettle
+      openssl
+      pcsclite
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      darwin.apple_sdk.frameworks.CoreFoundation
+      darwin.apple_sdk.frameworks.Security
+      libiconv
+    ];
 
   pythonImportsCheck = [ "pysequoia" ];
 
@@ -59,6 +62,6 @@ buildPythonPackage rec {
     license = licenses.asl20;
     maintainers = with maintainers; [ doronbehar ];
     # Broken since the 0.1.20 update according to ofborg. The errors are not clear...
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/pyserial-asyncio-fast/default.nix b/pkgs/development/python-modules/pyserial-asyncio-fast/default.nix
index d935b2c171551..17951563bed7b 100644
--- a/pkgs/development/python-modules/pyserial-asyncio-fast/default.nix
+++ b/pkgs/development/python-modules/pyserial-asyncio-fast/default.nix
@@ -1,43 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
-, wheel
+  # build-system
+  setuptools,
 
-# dependencies
-, pyserial
+  # dependencies
+  pyserial,
 
-# tests
-, pytestCheckHook
-, pytest-asyncio
+  # tests
+  pytestCheckHook,
+  pytest-asyncio,
 }:
 
 buildPythonPackage rec {
   pname = "pyserial-asyncio-fast";
-  version = "0.11";
+  version = "0.14";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "bdraco";
     repo = "pyserial-asyncio-fast";
     rev = version;
-    hash = "sha256-B1CLk7ggI7l+DaMDlnMjl2tfh+evvaf1nxzBpmqMBZk=";
+    hash = "sha256-ZnXuwHvYq/BrEW6YV6T0sQ03u2rpwNBnpF+dXAmvxKQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pyserial
-  ];
+  dependencies = [ pyserial ];
 
-  pythonImportsCheck = [
-    "serial_asyncio_fast"
-  ];
+  pythonImportsCheck = [ "serial_asyncio_fast" ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -45,6 +38,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
+    changelog = "https://github.com/home-assistant-libs/pyserial-asyncio-fast/releases/tag/${version}";
     description = "Fast asyncio extension package for pyserial that implements eager writes";
     homepage = "https://github.com/bdraco/pyserial-asyncio-fast";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/pyserial-asyncio/default.nix b/pkgs/development/python-modules/pyserial-asyncio/default.nix
index 6167c40d44f07..bd48ff1b4527e 100644
--- a/pkgs/development/python-modules/pyserial-asyncio/default.nix
+++ b/pkgs/development/python-modules/pyserial-asyncio/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pyserial
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pyserial,
 }:
 
 buildPythonPackage rec {
@@ -17,20 +18,16 @@ buildPythonPackage rec {
     hash = "sha256-tgMpI+BenXXsF6WvmphCnEbSg5rfr4BgTVLg+qzXoy8=";
   };
 
-  propagatedBuildInputs = [
-    pyserial
-  ];
+  propagatedBuildInputs = [ pyserial ];
 
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [
-    "serial_asyncio"
-  ];
+  pythonImportsCheck = [ "serial_asyncio" ];
 
   meta = with lib; {
     description = "Asyncio extension package for pyserial";
     homepage = "https://github.com/pyserial/pyserial-asyncio";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyserial/default.nix b/pkgs/development/python-modules/pyserial/default.nix
index a515c5acfcd15..156cf889185f1 100644
--- a/pkgs/development/python-modules/pyserial/default.nix
+++ b/pkgs/development/python-modules/pyserial/default.nix
@@ -1,10 +1,9 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, unittestCheckHook
-, pythonOlder
-, isPy3k
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -12,9 +11,6 @@ buildPythonPackage rec {
   version = "3.5";
   format = "setuptools";
 
-  # Supports Python 2.7 and 3.4+
-  disabled = isPy3k && pythonOlder "3.4";
-
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-PHfgFBcN//vYFub/wgXphC77EL6fWOwW0+hnW0klzds=";
@@ -29,12 +25,13 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [ "-s" "test" ];
-
-  pythonImportsCheck = [
-    "serial"
+  unittestFlagsArray = [
+    "-s"
+    "test"
   ];
 
+  pythonImportsCheck = [ "serial" ];
+
   meta = with lib; {
     description = "Python serial port extension";
     homepage = "https://github.com/pyserial/pyserial";
diff --git a/pkgs/development/python-modules/pyseventeentrack/default.nix b/pkgs/development/python-modules/pyseventeentrack/default.nix
new file mode 100644
index 0000000000000..1029c1f50e53d
--- /dev/null
+++ b/pkgs/development/python-modules/pyseventeentrack/default.nix
@@ -0,0 +1,47 @@
+{
+  aiohttp,
+  aresponses,
+  attrs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  poetry-core,
+  pytestCheckHook,
+  pytz,
+}:
+
+buildPythonPackage rec {
+  pname = "pyseventeentrack";
+  version = "1.0.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "shaiu";
+    repo = "pyseventeentrack";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-AHFJu2z3UWBR6BzwdxAKl3wpqBnsyj8pn16z1rgFVpw=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    aiohttp
+    attrs
+    pytz
+  ];
+
+  pythonImportsCheck = [ "pyseventeentrack" ];
+
+  nativeCheckInputs = [
+    aresponses
+    pytestCheckHook
+  ];
+
+  meta = {
+    changelog = "https://github.com/shaiu/pyseventeentrack/releases/tag/v${version}";
+    description = "Simple Python API for 17track.net";
+    homepage = "https://github.com/shaiu/pyseventeentrack";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/pysftp/default.nix b/pkgs/development/python-modules/pysftp/default.nix
index c138f21f01793..08ea007ba7b13 100644
--- a/pkgs/development/python-modules/pysftp/default.nix
+++ b/pkgs/development/python-modules/pysftp/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPyPy
-, paramiko
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  paramiko,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://bitbucket.org/dundeemt/pysftp";
-    description = "A friendly face on SFTP";
+    description = "Friendly face on SFTP";
     license = licenses.mit;
     longDescription = ''
       A simple interface to SFTP. The module offers high level abstractions
@@ -28,5 +29,4 @@ buildPythonPackage rec {
       Book, in the docs, to see what pysftp can do for you.
     '';
   };
-
 }
diff --git a/pkgs/development/python-modules/pyshark/default.nix b/pkgs/development/python-modules/pyshark/default.nix
index 523da70306624..7e4cff21d1812 100644
--- a/pkgs/development/python-modules/pyshark/default.nix
+++ b/pkgs/development/python-modules/pyshark/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, stdenv
-, appdirs
-, buildPythonPackage
-, fetchFromGitHub
-, lxml
-, packaging
-, py
-, pytestCheckHook
-, pythonOlder
-, termcolor
-, wireshark-cli
+{
+  lib,
+  stdenv,
+  appdirs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxml,
+  packaging,
+  py,
+  pytestCheckHook,
+  pythonOlder,
+  termcolor,
+  wireshark-cli,
 }:
 
 buildPythonPackage rec {
@@ -51,29 +52,27 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d)
   '';
 
-  disabledTests = [
-    # flaky
-    # KeyError: 'Packet of index 0 does not exist in capture'
-    "test_getting_packet_summary"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # fails on darwin
-    # _pickle.PicklingError: logger cannot be pickled
-    "test_iterate_empty_psml_capture"
-  ];
+  disabledTests =
+    [
+      # flaky
+      # KeyError: 'Packet of index 0 does not exist in capture'
+      "test_getting_packet_summary"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # fails on darwin
+      # _pickle.PicklingError: logger cannot be pickled
+      "test_iterate_empty_psml_capture"
+    ];
 
-  pythonImportsCheck = [
-    "pyshark"
-  ];
+  pythonImportsCheck = [ "pyshark" ];
 
-  pytestFlagsArray = [
-    "../tests/"
-  ];
+  pytestFlagsArray = [ "../tests/" ];
 
   meta = with lib; {
     description = "Python wrapper for tshark, allowing Python packet parsing using Wireshark dissectors";
     homepage = "https://github.com/KimiNewt/pyshark/";
     changelog = "https://github.com/KimiNewt/pyshark/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyshp/default.nix b/pkgs/development/python-modules/pyshp/default.nix
index 280e4cb7675be..176e04eed522d 100644
--- a/pkgs/development/python-modules/pyshp/default.nix
+++ b/pkgs/development/python-modules/pyshp/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-yfxhgk8a1rdpGVkE1sjJqT6tiFLimhu2m2SjGxLI6wo=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "shapefile"
-  ];
+  pythonImportsCheck = [ "shapefile" ];
 
   disabledTests = [
     # Requires network access
@@ -36,6 +33,6 @@ buildPythonPackage rec {
     description = "Python read/write support for ESRI Shapefile format";
     homepage = "https://github.com/GeospatialPython/pyshp";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pysiaalarm/default.nix b/pkgs/development/python-modules/pysiaalarm/default.nix
index db5973207f7e7..efeaf873820f3 100644
--- a/pkgs/development/python-modules/pysiaalarm/default.nix
+++ b/pkgs/development/python-modules/pysiaalarm/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, dataclasses-json
-, pycryptodome
-, setuptools-scm
-, pytest-asyncio
-, pytest-cases
-, pytest7CheckHook
-, pytz
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  dataclasses-json,
+  pycryptodome,
+  setuptools-scm,
+  pytest-asyncio,
+  pytest-cases,
+  pytest7CheckHook,
+  pytz,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
       --replace "--cov pysiaalarm --cov-report term-missing" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     dataclasses-json
diff --git a/pkgs/development/python-modules/pyside2-tools/default.nix b/pkgs/development/python-modules/pyside2-tools/default.nix
index 66d0fa51f2113..0bfcb985d949c 100644
--- a/pkgs/development/python-modules/pyside2-tools/default.nix
+++ b/pkgs/development/python-modules/pyside2-tools/default.nix
@@ -1,5 +1,13 @@
-{ wrapPython, python, lib, stdenv, cmake, qt5,
-  shiboken2, pyside2 }:
+{
+  wrapPython,
+  python,
+  lib,
+  stdenv,
+  cmake,
+  qt5,
+  shiboken2,
+  pyside2,
+}:
 
 stdenv.mkDerivation {
   pname = "pyside2-tools";
@@ -17,13 +25,20 @@ stdenv.mkDerivation {
     cd sources/pyside2-tools
   '';
 
-  nativeBuildInputs = [ cmake wrapPython ];
-  propagatedBuildInputs = [ shiboken2 pyside2 ];
-  buildInputs = [ python qt5.qtbase ];
-
-  cmakeFlags = [
-    "-DBUILD_TESTS=OFF"
+  nativeBuildInputs = [
+    cmake
+    wrapPython
+  ];
+  propagatedBuildInputs = [
+    shiboken2
+    pyside2
   ];
+  buildInputs = [
+    python
+    qt5.qtbase
+  ];
+
+  cmakeFlags = [ "-DBUILD_TESTS=OFF" ];
 
   dontWrapQtApps = true;
 
diff --git a/pkgs/development/python-modules/pyside2/Final-details-to-enable-3.12-wheel-compatibility.patch b/pkgs/development/python-modules/pyside2/Final-details-to-enable-3.12-wheel-compatibility.patch
new file mode 100644
index 0000000000000..beab48c54ad1c
--- /dev/null
+++ b/pkgs/development/python-modules/pyside2/Final-details-to-enable-3.12-wheel-compatibility.patch
@@ -0,0 +1,28 @@
+From: =?utf-8?q?Cristi=C3=A1n_Maureira-Fredes?=
+ <Cristian.Maureira-Fredes@qt.io>
+Date: Tue, 10 Oct 2023 15:52:09 +0200
+Subject: Final details to enable 3.12 wheel compatibility
+
+Change-Id: I0252c4e73e8c214ef8aa418ddf88bc452c0fdf53
+Pick-to: 6.6
+Task-number: PYSIDE-2230
+Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
+(cherry picked from commit 6c7bb7b6e1008909e49bc04d2a48024309a784cc)
+---
+ build_scripts/config.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/build_scripts/config.py b/build_scripts/config.py
+index 5fc23d4..fb27394 100644
+--- a/build_scripts/config.py
++++ b/build_scripts/config.py
+@@ -138,7 +138,7 @@ class Config(object):
+         setup_kwargs['zip_safe'] = False
+         setup_kwargs['cmdclass'] = cmd_class_dict
+         setup_kwargs['version'] = package_version
+-        setup_kwargs['python_requires'] = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <3.12"
++        setup_kwargs['python_requires'] = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <3.13"
+ 
+         if quiet:
+             # Tells distutils / setuptools to be quiet, and only print warnings or errors.
+
diff --git a/pkgs/development/python-modules/pyside2/Modify-sendCommand-signatures.patch b/pkgs/development/python-modules/pyside2/Modify-sendCommand-signatures.patch
new file mode 100644
index 0000000000000..7465b109f8a42
--- /dev/null
+++ b/pkgs/development/python-modules/pyside2/Modify-sendCommand-signatures.patch
@@ -0,0 +1,41 @@
+From: Dmitry Shachnev <mitya57@debian.org>
+Date: Sun, 4 Feb 2024 00:29:00 +0300
+Subject: Modify sendCommand signatures to use 0 as default value
+
+The original default value was QNodeCommand::CommandId(), and shiboken
+copies it verbatim from the header file, however it does not work because
+we do not generate "using namespace Qt3DCore;".
+
+0 is the same as QNodeCommand::CommandId().
+---
+ sources/pyside2/PySide2/Qt3DCore/typesystem_3dcore.xml | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/sources/pyside2/PySide2/Qt3DCore/typesystem_3dcore.xml b/sources/pyside2/PySide2/Qt3DCore/typesystem_3dcore.xml
+index 8696a12..310595f 100644
+--- a/sources/pyside2/PySide2/Qt3DCore/typesystem_3dcore.xml
++++ b/sources/pyside2/PySide2/Qt3DCore/typesystem_3dcore.xml
+@@ -58,6 +58,11 @@
+         <object-type name="QAspectJob"/>
+         <object-type name="QBackendNode">
+             <enum-type name="Mode"/>
++            <modify-function signature="sendCommand(const QString&amp;,const QVariant&amp;,unsigned long long)">
++              <modify-argument index="3">
++                <replace-default-expression with="0"/>
++              </modify-argument>
++            </modify-function>
+         </object-type>
+         <!-- TODO: Solve issues related to windows and a unresolved
+             external symbol
+@@ -82,6 +87,11 @@
+         </object-type>
+         <object-type name="QNode">
+             <enum-type name="PropertyTrackingMode"/>
++            <modify-function signature="sendCommand(const QString&amp;,const QVariant&amp;,unsigned long long)">
++              <modify-argument index="3">
++                <replace-default-expression with="0"/>
++              </modify-argument>
++            </modify-function>
+         </object-type>
+         <object-type name="QNodeCommand" since="5.10"/>
+         <object-type name="QNodeCreatedChangeBase"/>
diff --git a/pkgs/development/python-modules/pyside2/Python-3.12-Fix-the-structure-of-class-property.patch b/pkgs/development/python-modules/pyside2/Python-3.12-Fix-the-structure-of-class-property.patch
new file mode 100644
index 0000000000000..11c738512e387
--- /dev/null
+++ b/pkgs/development/python-modules/pyside2/Python-3.12-Fix-the-structure-of-class-property.patch
@@ -0,0 +1,37 @@
+From: Christian Tismer <tismer@stackless.com>
+Date: Tue, 14 Feb 2023 14:46:22 +0100
+Subject: Python 3.12: Fix the structure of class property
+
+There is a PySide bug in Python 3.10 already: The structure for
+classproperty derives from the property structure. This was extended
+in Python 3.10, already, but the type generation check was made more
+exhaustive in Python 3.12 and recognized that.
+
+This change is only for making the compiler/C API happy.
+In order to use the extension field, it is necessary to do a runtime
+check because of the Limited API.
+
+Task-number: PYSIDE-2230
+Change-Id: I88dcaa11589ff41852f08fa2defa5200a0dd4eb6
+Reviewed-by: Adrian Herrmann <adrian.herrmann@qt.io>
+Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
+(cherry picked from commit edfd9a5ad174a48f8d7da511dc6a1c69e931a418)
+---
+ sources/pyside2/libpyside/feature_select.cpp | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/sources/pyside2/libpyside/feature_select.cpp b/sources/pyside2/libpyside/feature_select.cpp
+index 3011b35..b9e1470 100644
+--- a/sources/pyside2/libpyside/feature_select.cpp
++++ b/sources/pyside2/libpyside/feature_select.cpp
+@@ -671,6 +671,11 @@ typedef struct {
+     PyObject *prop_set;
+     PyObject *prop_del;
+     PyObject *prop_doc;
++#if PY_VERSION_HEX >= 0x030A0000
++    // Note: This is a problem with Limited API: We have no direct access.
++    //       You need to pick it from runtime info.
++    PyObject *prop_name;
++#endif
+     int getter_doc;
+ } propertyobject;
diff --git a/pkgs/development/python-modules/pyside2/Support-running-PySide-on-Python-3.12.patch b/pkgs/development/python-modules/pyside2/Support-running-PySide-on-Python-3.12.patch
new file mode 100644
index 0000000000000..3291705b20017
--- /dev/null
+++ b/pkgs/development/python-modules/pyside2/Support-running-PySide-on-Python-3.12.patch
@@ -0,0 +1,298 @@
+From: Christian Tismer <tismer@stackless.com>
+Date: Tue, 14 Feb 2023 14:46:22 +0100
+Subject: Support running PySide on Python 3.12
+
+Builtin types no longer have tp_dict set. We need to
+use PyType_GetDict, instead. This works without Limited API
+at the moment.
+
+With some great cheating, this works with Limited API, too.
+We emulate PyType_GetDict by tp_dict if that is not 0.
+Otherwise we create an empty dict.
+
+Some small changes to Exception handling and longer
+warm-up in leaking tests were found, too.
+
+Pick-to: 6.6 6.5 6.2
+Task-number: PYSIDE-2230
+Change-Id: I8a56de6208ec00979255b39b5784dfc9b4b92def
+Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
+(cherry picked from commit 441ffbd4fc622e67acd81e9c1c6d3a0b0fbcacf0)
+---
+ build_scripts/config.py                            |  3 +-
+ sources/pyside2/PySide2/support/generate_pyi.py    |  8 ++++--
+ sources/pyside2/libpyside/feature_select.cpp       | 10 ++++---
+ sources/pyside2/libpyside/pysideproperty.cpp       |  4 +--
+ sources/pyside2/libpyside/pysidesignal.cpp         |  4 +--
+ sources/pyside2/tests/QtWidgets/bug_662.py         |  3 +-
+ sources/pyside2/tests/signals/bug_79.py            |  5 ++++
+ sources/shiboken2/libshiboken/pep384impl.cpp       | 33 ++++++++++++++++++++++
+ sources/shiboken2/libshiboken/pep384impl.h         |  8 ++++++
+ .../shiboken2/libshiboken/signature/signature.cpp  |  2 +-
+ .../libshiboken/signature/signature_helper.cpp     |  6 ++--
+ .../shibokensupport/signature/errorhandler.py      |  6 ++++
+ sources/shiboken2/tests/samplebinding/enum_test.py |  2 +-
+ 13 files changed, 78 insertions(+), 16 deletions(-)
+
+diff --git a/build_scripts/config.py b/build_scripts/config.py
+index f2b4c40..5fc23d4 100644
+--- a/build_scripts/config.py
++++ b/build_scripts/config.py
+@@ -94,7 +94,8 @@ class Config(object):
+             'Programming Language :: Python :: 3.8',
+             'Programming Language :: Python :: 3.9',
+             'Programming Language :: Python :: 3.10',
+-            'Programming Language :: Python :: 3.11'
++            'Programming Language :: Python :: 3.11',
++            'Programming Language :: Python :: 3.12',
+         ]
+ 
+         self.setup_script_dir = None
+diff --git a/sources/pyside2/PySide2/support/generate_pyi.py b/sources/pyside2/PySide2/support/generate_pyi.py
+index 1956533..fd05b1f 100644
+--- a/sources/pyside2/PySide2/support/generate_pyi.py
++++ b/sources/pyside2/PySide2/support/generate_pyi.py
+@@ -116,8 +116,12 @@ class Formatter(Writer):
+         """
+         def _typevar__repr__(self):
+             return "typing." + self.__name__
+-        typing.TypeVar.__repr__ = _typevar__repr__
+-
++        # This is no longer necessary for modern typing versions.
++        # Ignore therefore if the repr is read-only and cannot be changed.
++        try:
++            typing.TypeVar.__repr__ = _typevar__repr__
++        except TypeError:
++            pass
+         # Adding a pattern to substitute "Union[T, NoneType]" by "Optional[T]"
+         # I tried hard to replace typing.Optional by a simple override, but
+         # this became _way_ too much.
+diff --git a/sources/pyside2/libpyside/feature_select.cpp b/sources/pyside2/libpyside/feature_select.cpp
+index b9e1470..533c09d 100644
+--- a/sources/pyside2/libpyside/feature_select.cpp
++++ b/sources/pyside2/libpyside/feature_select.cpp
+@@ -358,7 +358,8 @@ static bool SelectFeatureSetSubtype(PyTypeObject *type, PyObject *select_id)
+      * This is the selector for one sublass. We need to call this for
+      * every subclass until no more subclasses or reaching the wanted id.
+      */
+-    if (Py_TYPE(type->tp_dict) == Py_TYPE(PyType_Type.tp_dict)) {
++    static const auto *pyTypeType_tp_dict = PepType_GetDict(&PyType_Type);
++    if (Py_TYPE(type->tp_dict) == Py_TYPE(pyTypeType_tp_dict)) {
+         // On first touch, we initialize the dynamic naming.
+         // The dict type will be replaced after the first call.
+         if (!replaceClassDict(type)) {
+@@ -385,7 +386,8 @@ static inline PyObject *SelectFeatureSet(PyTypeObject *type)
+      * Generated functions call this directly.
+      * Shiboken will assign it via a public hook of `basewrapper.cpp`.
+      */
+-    if (Py_TYPE(type->tp_dict) == Py_TYPE(PyType_Type.tp_dict)) {
++    static const auto *pyTypeType_tp_dict = PepType_GetDict(&PyType_Type);
++    if (Py_TYPE(type->tp_dict) == Py_TYPE(pyTypeType_tp_dict)) {
+         // We initialize the dynamic features by using our own dict type.
+         if (!replaceClassDict(type))
+             return nullptr;
+@@ -721,11 +723,11 @@ static bool patch_property_impl()
+     // Turn `__doc__` into a computed attribute without changing writability.
+     auto gsp = property_getset;
+     auto type = &PyProperty_Type;
+-    auto dict = type->tp_dict;
++    AutoDecRef dict(PepType_GetDict(type));
+     AutoDecRef descr(PyDescr_NewGetSet(type, gsp));
+     if (descr.isNull())
+         return false;
+-    if (PyDict_SetItemString(dict, gsp->name, descr) < 0)
++    if (PyDict_SetItemString(dict.object(), gsp->name, descr) < 0)
+         return false;
+     // Replace property_descr_get/set by slightly changed versions
+     return true;
+diff --git a/sources/pyside2/libpyside/pysideproperty.cpp b/sources/pyside2/libpyside/pysideproperty.cpp
+index 86909d3..d2e2c68 100644
+--- a/sources/pyside2/libpyside/pysideproperty.cpp
++++ b/sources/pyside2/libpyside/pysideproperty.cpp
+@@ -445,8 +445,8 @@ namespace {
+ 
+ static PyObject *getFromType(PyTypeObject *type, PyObject *name)
+ {
+-    PyObject *attr = nullptr;
+-    attr = PyDict_GetItem(type->tp_dict, name);
++    AutoDecRef tpDict(PepType_GetDict(type));
++    auto *attr = PyDict_GetItem(tpDict.object(), name);
+     if (!attr) {
+         PyObject *bases = type->tp_bases;
+         int size = PyTuple_GET_SIZE(bases);
+diff --git a/sources/pyside2/libpyside/pysidesignal.cpp b/sources/pyside2/libpyside/pysidesignal.cpp
+index 6824a71..f15d7aa 100644
+--- a/sources/pyside2/libpyside/pysidesignal.cpp
++++ b/sources/pyside2/libpyside/pysidesignal.cpp
+@@ -670,8 +670,8 @@ void updateSourceObject(PyObject *source)
+     Py_ssize_t pos = 0;
+     PyObject *value;
+     PyObject *key;
+-
+-    while (PyDict_Next(objType->tp_dict, &pos, &key, &value)) {
++    Shiboken::AutoDecRef tpDict(PepType_GetDict(objType));
++    while (PyDict_Next(tpDict, &pos, &key, &value)) {
+         if (PyObject_TypeCheck(value, PySideSignalTypeF())) {
+             Shiboken::AutoDecRef signalInstance(reinterpret_cast<PyObject *>(PyObject_New(PySideSignalInstance, PySideSignalInstanceTypeF())));
+             instanceInitialize(signalInstance.cast<PySideSignalInstance *>(), key, reinterpret_cast<PySideSignal *>(value), source, 0);
+diff --git a/sources/pyside2/tests/QtWidgets/bug_662.py b/sources/pyside2/tests/QtWidgets/bug_662.py
+index 7fb97de..ec0e6f9 100644
+--- a/sources/pyside2/tests/QtWidgets/bug_662.py
++++ b/sources/pyside2/tests/QtWidgets/bug_662.py
+@@ -40,7 +40,8 @@ from PySide2.QtWidgets import QTextEdit, QApplication
+ import sys
+ 
+ class testQTextBlock(unittest.TestCase):
+-    def tesIterator(self):
++
++    def testIterator(self):
+         edit = QTextEdit()
+         cursor = edit.textCursor()
+         fmt = QTextCharFormat()
+diff --git a/sources/pyside2/tests/signals/bug_79.py b/sources/pyside2/tests/signals/bug_79.py
+index ca25fb3..b70c8c5 100644
+--- a/sources/pyside2/tests/signals/bug_79.py
++++ b/sources/pyside2/tests/signals/bug_79.py
+@@ -60,6 +60,11 @@ class ConnectTest(unittest.TestCase):
+         gc.collect()
+         # if this is no debug build, then we check at least that
+         # we do not crash any longer.
++        for idx in range(200):
++            # PYSIDE-2230: Warm-up is necessary before measuring, because
++            # the code changes the constant parts after some time.
++            o.selectionModel().destroyed.connect(self.callback)
++            o.selectionModel().destroyed.disconnect(self.callback)
+         if not skiptest:
+             total = gettotalrefcount()
+         for idx in range(1000):
+diff --git a/sources/shiboken2/libshiboken/pep384impl.cpp b/sources/shiboken2/libshiboken/pep384impl.cpp
+index d12dae3..fed2716 100644
+--- a/sources/shiboken2/libshiboken/pep384impl.cpp
++++ b/sources/shiboken2/libshiboken/pep384impl.cpp
+@@ -810,6 +810,39 @@ init_PepRuntime()
+         PepRuntime_38_flag = 1;
+ }
+ 
++#ifdef Py_LIMITED_API
++static PyObject *emulatePyType_GetDict(PyTypeObject *type)
++{
++    if (_PepRuntimeVersion() < 0x030C00 || type->tp_dict) {
++        auto *res = type->tp_dict;
++        Py_XINCREF(res);
++        return res;
++    }
++    // PYSIDE-2230: Here we are really cheating. We don't know how to
++    //              access an internal dict, and so we simply pretend
++    //              it were an empty dict. This works great for our types.
++    // This was an unexpectedly simple solution :D
++    return PyDict_New();
++}
++#endif
++
++// PyType_GetDict: replacement for <static type>.tp_dict, which is
++// zero for builtin types since 3.12.
++PyObject *PepType_GetDict(PyTypeObject *type)
++{
++#if !defined(Py_LIMITED_API)
++#  if PY_VERSION_HEX >= 0x030C0000
++    return PyType_GetDict(type);
++#  else
++    // pre 3.12 fallback code, mimicking the addref-behavior.
++    Py_XINCREF(type->tp_dict);
++    return type->tp_dict;
++#  endif
++#else
++    return emulatePyType_GetDict(type);
++#endif // Py_LIMITED_API
++}
++
+ /*****************************************************************************
+  *
+  * Module Initialization
+diff --git a/sources/shiboken2/libshiboken/pep384impl.h b/sources/shiboken2/libshiboken/pep384impl.h
+index a870d6b..440784e 100644
+--- a/sources/shiboken2/libshiboken/pep384impl.h
++++ b/sources/shiboken2/libshiboken/pep384impl.h
+@@ -567,6 +567,14 @@ extern LIBSHIBOKEN_API PyObject *PepMapping_Items(PyObject *o);
+ 
+ extern LIBSHIBOKEN_API int PepRuntime_38_flag;
+ 
++/*****************************************************************************
++ *
++ * Runtime support for Python 3.12 incompatibility
++ *
++ */
++
++LIBSHIBOKEN_API PyObject *PepType_GetDict(PyTypeObject *type);
++
+ /*****************************************************************************
+  *
+  * Module Initialization
+diff --git a/sources/shiboken2/libshiboken/signature/signature.cpp b/sources/shiboken2/libshiboken/signature/signature.cpp
+index 191af3d..f817e47 100644
+--- a/sources/shiboken2/libshiboken/signature/signature.cpp
++++ b/sources/shiboken2/libshiboken/signature/signature.cpp
+@@ -482,7 +482,7 @@ static PyObject *adjustFuncName(const char *func_name)
+ 
+     // Find the feature flags
+     auto type = reinterpret_cast<PyTypeObject *>(obtype.object());
+-    auto dict = type->tp_dict;
++    AutoDecRef dict(PepType_GetDict(type));
+     int id = SbkObjectType_GetReserved(type);
+     id = id < 0 ? 0 : id;   // if undefined, set to zero
+     auto lower = id & 0x01;
+diff --git a/sources/shiboken2/libshiboken/signature/signature_helper.cpp b/sources/shiboken2/libshiboken/signature/signature_helper.cpp
+index 0246ec6..05eaa14 100644
+--- a/sources/shiboken2/libshiboken/signature/signature_helper.cpp
++++ b/sources/shiboken2/libshiboken/signature/signature_helper.cpp
+@@ -105,7 +105,8 @@ int add_more_getsets(PyTypeObject *type, PyGetSetDef *gsp, PyObject **doc_descr)
+      */
+     assert(PyType_Check(type));
+     PyType_Ready(type);
+-    PyObject *dict = type->tp_dict;
++    AutoDecRef tpDict(PepType_GetDict(type));
++    auto *dict = tpDict.object();
+     for (; gsp->name != nullptr; gsp++) {
+         PyObject *have_descr = PyDict_GetItemString(dict, gsp->name);
+         if (have_descr != nullptr) {
+@@ -346,7 +347,8 @@ static int _build_func_to_type(PyObject *obtype)
+      * We also check for hidden methods, see below.
+      */
+     auto *type = reinterpret_cast<PyTypeObject *>(obtype);
+-    PyObject *dict = type->tp_dict;
++    AutoDecRef tpDict(PepType_GetDict(type));
++    auto *dict = tpDict.object();
+     PyMethodDef *meth = type->tp_methods;
+ 
+     if (meth == nullptr)
+diff --git a/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/errorhandler.py b/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/errorhandler.py
+index 47ab89a..3e1266c 100644
+--- a/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/errorhandler.py
++++ b/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/errorhandler.py
+@@ -113,6 +113,12 @@ def seterror_argument(args, func_name, info):
+             msg = "{func_name}(): {info}".format(**locals())
+             err = AttributeError
+         return err, msg
++    if isinstance(info, Exception):
++        # PYSIDE-2230: Python 3.12 seems to always do normalization.
++        err = type(info)
++        info = info.args[0]
++        msg = f"{func_name}(): {info}"
++        return err, msg
+     if info and type(info) is dict:
+         keyword = tuple(info)[0]
+         msg = "{func_name}(): unsupported keyword '{keyword}'".format(**locals())
+diff --git a/sources/shiboken2/tests/samplebinding/enum_test.py b/sources/shiboken2/tests/samplebinding/enum_test.py
+index 0beb720..f2606a4 100644
+--- a/sources/shiboken2/tests/samplebinding/enum_test.py
++++ b/sources/shiboken2/tests/samplebinding/enum_test.py
+@@ -95,7 +95,7 @@ class EnumTest(unittest.TestCase):
+ 
+     def testEnumConstructorWithTooManyParameters(self):
+         '''Calling the constructor of non-extensible enum with the wrong number of parameters.'''
+-        self.assertRaises(TypeError, SampleNamespace.InValue, 13, 14)
++        self.assertRaises((TypeError, ValueError), SampleNamespace.InValue, 13, 14)
+ 
+     def testEnumConstructorWithNonNumberParameter(self):
+         '''Calling the constructor of non-extensible enum with a string.'''
+
diff --git a/pkgs/development/python-modules/pyside2/default.nix b/pkgs/development/python-modules/pyside2/default.nix
index 1d4cf2ce60389..2a3ff3c5ad343 100644
--- a/pkgs/development/python-modules/pyside2/default.nix
+++ b/pkgs/development/python-modules/pyside2/default.nix
@@ -1,26 +1,37 @@
-{ python
-, pythonAtLeast
-, disabledIf
-, fetchurl
-, lib
-, stdenv
-, cmake
-, libxcrypt
-, ninja
-, qt5
-, shiboken2
+{
+  python,
+  fetchurl,
+  lib,
+  stdenv,
+  cmake,
+  libxcrypt,
+  ninja,
+  qt5,
+  shiboken2,
 }:
 stdenv.mkDerivation rec {
   pname = "pyside2";
-  version = "5.15.11";
+  version = "5.15.14";
 
   src = fetchurl {
     url = "https://download.qt.io/official_releases/QtForPython/pyside2/PySide2-${version}-src/pyside-setup-opensource-src-${version}.tar.xz";
-    sha256 = "sha256-2lZ807eFTSegtK/j6J3osvmLem1XOTvlbx/BP3cPryk=";
+    hash = "sha256-MmURlPamt7zkLwTmixQBrSCH5HiaTI8/uGSehhicY3I=";
   };
 
   patches = [
+    ./nix_compile_cflags.patch
+    ./Final-details-to-enable-3.12-wheel-compatibility.patch
+    ./Python-3.12-Fix-the-structure-of-class-property.patch
+    ./Support-running-PySide-on-Python-3.12.patch
+    ./shiboken2-clang-Fix-and-simplify-resolveType-helper.patch
+    ./shiboken2-clang-Fix-build-with-clang-16.patch
+    ./shiboken2-clang-Fix-clashes-between-type-name-and-enumera.patch
+    ./shiboken2-clang-Record-scope-resolution-of-arguments-func.patch
+    ./shiboken2-clang-Remove-typedef-expansion.patch
+    ./shiboken2-clang-Suppress-class-scope-look-up-for-paramete.patch
+    ./shiboken2-clang-Write-scope-resolution-for-all-parameters.patch
     ./dont_ignore_optional_modules.patch
+    ./Modify-sendCommand-signatures.patch
   ];
 
   postPatch = ''
@@ -34,30 +45,41 @@ stdenv.mkDerivation rec {
 
   env.NIX_CFLAGS_COMPILE = "-I${qt5.qtdeclarative.dev}/include/QtQuick/${qt5.qtdeclarative.version}/QtQuick";
 
-  nativeBuildInputs = [ cmake ninja qt5.qmake python ];
+  nativeBuildInputs = [
+    cmake
+    ninja
+    qt5.qmake
+    (python.withPackages (
+      ps: with ps; [
+        distutils
+        setuptools
+      ]
+    ))
+  ];
 
-  buildInputs = (with qt5; [
-    qtbase
-    qtxmlpatterns
-    qtmultimedia
-    qttools
-    qtx11extras
-    qtlocation
-    qtscript
-    qtwebsockets
-    qtwebengine
-    qtwebchannel
-    qtcharts
-    qtsensors
-    qtsvg
-    qt3d
-  ]) ++ (with python.pkgs; [
-    setuptools
-  ]) ++ (lib.optionals (python.pythonOlder "3.9") [
-    # see similar issue: 202262
-    # libxcrypt is required for crypt.h for building older python modules
-    libxcrypt
-  ]);
+  buildInputs =
+    (with qt5; [
+      qtbase
+      qtxmlpatterns
+      qtmultimedia
+      qttools
+      qtx11extras
+      qtlocation
+      qtscript
+      qtwebsockets
+      qtwebengine
+      qtwebchannel
+      qtcharts
+      qtsensors
+      qtsvg
+      qt3d
+    ])
+    ++ (with python.pkgs; [ setuptools ])
+    ++ (lib.optionals (python.pythonOlder "3.9") [
+      # see similar issue: 202262
+      # libxcrypt is required for crypt.h for building older python modules
+      libxcrypt
+    ]);
 
   propagatedBuildInputs = [ shiboken2 ];
 
@@ -74,5 +96,7 @@ stdenv.mkDerivation rec {
     license = licenses.lgpl21;
     homepage = "https://wiki.qt.io/Qt_for_Python";
     maintainers = with maintainers; [ gebner ];
+    platforms = platforms.all;
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/pyside2/nix_compile_cflags.patch b/pkgs/development/python-modules/pyside2/nix_compile_cflags.patch
new file mode 100644
index 0000000000000..02f17c09a8883
--- /dev/null
+++ b/pkgs/development/python-modules/pyside2/nix_compile_cflags.patch
@@ -0,0 +1,23 @@
+diff --git a/sources/shiboken2/ApiExtractor/clangparser/compilersupport.cpp b/sources/shiboken2/ApiExtractor/clangparser/compilersupport.cpp
+index add278a..2626eb6 100644
+--- a/sources/shiboken2/ApiExtractor/clangparser/compilersupport.cpp
++++ b/sources/shiboken2/ApiExtractor/clangparser/compilersupport.cpp
+@@ -349,11 +349,15 @@ QByteArrayList emulatedCompilerOptions()
+ 
+     // Append the c++ include paths since Clang is unable to find
+     // <type_traits> etc (g++ 11.3).
+-    const HeaderPaths gppPaths = gppInternalIncludePaths(compilerFromCMake(QStringLiteral("g++")));
++    const HeaderPaths gppPaths = gppInternalIncludePaths(QStringLiteral("g++"));
+     for (const HeaderPath &h : gppPaths) {
+-        if (h.path.contains("c++")
+-            || h.path.contains("sysroot")) { // centOS
++        // PySide2 requires that Qt headers are not -isystem
++        // https://bugreports.qt.io/browse/PYSIDE-787
++        if (!h.path.contains("-qt")) {
++            // add using -isystem
+             headerPaths.append(h);
++        } else {
++            headerPaths.append({h.path, HeaderType::Standard});
+         }
+     }
+ #else
diff --git a/pkgs/development/python-modules/pyside2/shiboken2-clang-Fix-and-simplify-resolveType-helper.patch b/pkgs/development/python-modules/pyside2/shiboken2-clang-Fix-and-simplify-resolveType-helper.patch
new file mode 100644
index 0000000000000..304cff91a86d8
--- /dev/null
+++ b/pkgs/development/python-modules/pyside2/shiboken2-clang-Fix-and-simplify-resolveType-helper.patch
@@ -0,0 +1,88 @@
+From: Friedemann Kleint <Friedemann.Kleint@qt.io>
+Date: Tue, 25 Apr 2023 10:00:39 +0200
+Subject: shiboken2/clang: Fix and simplify resolveType() helper
+
+The function had a bug which only manifested with clang 16:
+"type" should have been assigned the type of the cursor
+obtained from clang_getTypeDeclaration(). With this, the complicated
+lookup code in getBaseClass() can be removed.
+
+Task-number: PYSIDE-2288
+Pick-to: 6.5
+Change-Id: I861e30451b3f4af2ec0c2e4ffa4179a429854533
+Reviewed-by: Christian Tismer <tismer@stackless.com>
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+---
+ .../ApiExtractor/clangparser/clangbuilder.cpp      | 39 ++++++++++------------
+ 1 file changed, 18 insertions(+), 21 deletions(-)
+
+diff --git a/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp b/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp
+index e8e5bcf..1b4c81c 100644
+--- a/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp
++++ b/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp
+@@ -627,6 +627,9 @@ long clang_EnumDecl_isScoped4(BaseVisitor *bv, const CXCursor &cursor)
+ #endif // CLANG_NO_ENUMDECL_ISSCOPED
+ 
+ // Resolve declaration and type of a base class
++// Note: TypeAliasTemplateDecl ("using QVector<T>=QList<T>") is automatically
++// resolved by clang_getTypeDeclaration(), but it stops at
++// TypeAliasDecl / TypedefDecl.
+ 
+ struct TypeDeclaration
+ {
+@@ -634,19 +637,23 @@ struct TypeDeclaration
+     CXCursor declaration;
+ };
+ 
++static inline bool isTypeAliasDecl(const CXCursor &cursor)
++{
++    const auto kind = clang_getCursorKind(cursor);
++    return kind == CXCursor_TypeAliasDecl || kind == CXCursor_TypedefDecl;
++}
++
+ static TypeDeclaration resolveBaseSpecifier(const CXCursor &cursor)
+ {
+     Q_ASSERT(clang_getCursorKind(cursor) == CXCursor_CXXBaseSpecifier);
+     CXType inheritedType = clang_getCursorType(cursor);
+     CXCursor decl = clang_getTypeDeclaration(inheritedType);
+-    if (inheritedType.kind != CXType_Unexposed) {
+-        while (true) {
+-            auto kind = clang_getCursorKind(decl);
+-            if (kind != CXCursor_TypeAliasDecl && kind != CXCursor_TypedefDecl)
+-                break;
+-            inheritedType = clang_getTypedefDeclUnderlyingType(decl);
+-            decl = clang_getTypeDeclaration(inheritedType);
+-        }
++    auto resolvedType = clang_getCursorType(decl);
++    if (resolvedType.kind != CXType_Invalid && resolvedType.kind != inheritedType.kind)
++        inheritedType = resolvedType;
++    while (isTypeAliasDecl(decl)) {
++        inheritedType = clang_getTypedefDeclUnderlyingType(decl);
++        decl = clang_getTypeDeclaration(inheritedType);
+     }
+     return {inheritedType, decl};
+ }
+@@ -656,20 +663,10 @@ void BuilderPrivate::addBaseClass(const CXCursor &cursor)
+ {
+     Q_ASSERT(clang_getCursorKind(cursor) == CXCursor_CXXBaseSpecifier);
+     // Note: spelling has "struct baseClass", use type
+-    QString baseClassName;
+     const auto decl = resolveBaseSpecifier(cursor);
+-    if (decl.type.kind == CXType_Unexposed) {
+-        // The type is unexposed when the base class is a template type alias:
+-        // "class QItemSelection : public QList<X>" where QList is aliased to QVector.
+-        // Try to resolve via code model.
+-        TypeInfo info = createTypeInfo(decl.type);
+-        auto parentScope = m_scopeStack.at(m_scopeStack.size() - 2); // Current is class.
+-        auto resolved = TypeInfo::resolveType(info, parentScope);
+-        if (resolved != info)
+-            baseClassName = resolved.toString();
+-    }
+-    if (baseClassName.isEmpty())
+-        baseClassName = getTypeName(decl.type);
++    QString baseClassName = getTypeName(decl.type);
++    if (baseClassName.startsWith(u"std::")) // Simplify "std::" types
++        baseClassName = createTypeInfo(decl.type).toString();
+ 
+     auto it = m_cursorClassHash.constFind(decl.declaration);
+     const CodeModel::AccessPolicy access = accessPolicy(clang_getCXXAccessSpecifier(cursor));
diff --git a/pkgs/development/python-modules/pyside2/shiboken2-clang-Fix-build-with-clang-16.patch b/pkgs/development/python-modules/pyside2/shiboken2-clang-Fix-build-with-clang-16.patch
new file mode 100644
index 0000000000000..b07cc33526f76
--- /dev/null
+++ b/pkgs/development/python-modules/pyside2/shiboken2-clang-Fix-build-with-clang-16.patch
@@ -0,0 +1,108 @@
+From: Friedemann Kleint <Friedemann.Kleint@qt.io>
+Date: Tue, 25 Apr 2023 14:01:45 +0200
+Subject: shiboken2/clang: Fix build with clang 16
+
+clang 16 returns more elaborated types instead of fully qualified type
+names. Qualify elaborated types when retrieving the type name.
+
+[ChangeLog][shiboken6] Support for libclang version 16 has been added.
+
+Task-number: PYSIDE-2288
+Pick-to: 6.5 5.15
+Change-Id: Ibd428280180967f11d82a72159e744c016afc927
+Reviewed-by: Christian Tismer <tismer@stackless.com>
+(cherry picked from commit 44ef1859214c66861a251d4a0faf5c38dc050850)
+---
+ .../ApiExtractor/clangparser/clangbuilder.cpp      |  2 +-
+ .../ApiExtractor/clangparser/clangutils.cpp        | 23 ++++++++++++++++++++++
+ .../ApiExtractor/clangparser/clangutils.h          |  1 +
+ .../shiboken2/ApiExtractor/tests/testtemplates.cpp |  3 +--
+ 4 files changed, 26 insertions(+), 3 deletions(-)
+
+diff --git a/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp b/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp
+index 332f1da..ed1e15d 100644
+--- a/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp
++++ b/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp
+@@ -524,7 +524,7 @@ TypeInfo BuilderPrivate::createTypeInfoHelper(const CXType &type) const
+     typeInfo.setConstant(clang_isConstQualifiedType(nestedType) != 0);
+     typeInfo.setVolatile(clang_isVolatileQualifiedType(nestedType) != 0);
+ 
+-    QString typeName = getTypeName(nestedType);
++    QString typeName = getResolvedTypeName(nestedType);
+     while (TypeInfo::stripLeadingConst(&typeName)
+            || TypeInfo::stripLeadingVolatile(&typeName)) {
+     }
+diff --git a/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp b/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp
+index 57271ef..295ede3 100644
+--- a/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp
++++ b/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp
+@@ -130,6 +130,23 @@ QString getCursorDisplayName(const CXCursor &cursor)
+     return result;
+ }
+ 
++static inline bool isBuiltinType(CXTypeKind kind)
++{
++    return kind >= CXType_FirstBuiltin && kind <= CXType_LastBuiltin;
++}
++
++// Resolve elaborated types occurring with clang 16
++static CXType resolveType(const CXType &type)
++{
++    if (!isBuiltinType(type.kind)) {
++        CXCursor decl = clang_getTypeDeclaration(type);
++        auto resolvedType = clang_getCursorType(decl);
++        if (resolvedType.kind != CXType_Invalid && resolvedType.kind != type.kind)
++            return resolvedType;
++    }
++    return type;
++}
++
+ QString getTypeName(const CXType &type)
+ {
+     CXString typeSpelling = clang_getTypeSpelling(type);
+@@ -138,6 +155,12 @@ QString getTypeName(const CXType &type)
+     return result;
+ }
+ 
++// Resolve elaborated types occurring with clang 16
++QString getResolvedTypeName(const CXType &type)
++{
++    return getTypeName(resolveType(type));
++}
++
+ Diagnostic::Diagnostic(const QString &m, const CXCursor &c, CXDiagnosticSeverity s)
+     : message(m), source(Other), severity(s)
+ {
+diff --git a/sources/shiboken2/ApiExtractor/clangparser/clangutils.h b/sources/shiboken2/ApiExtractor/clangparser/clangutils.h
+index f7c230a..aacaf63 100644
+--- a/sources/shiboken2/ApiExtractor/clangparser/clangutils.h
++++ b/sources/shiboken2/ApiExtractor/clangparser/clangutils.h
+@@ -52,6 +52,7 @@ QString getCursorKindName(CXCursorKind cursorKind);
+ QString getCursorSpelling(const CXCursor &cursor);
+ QString getCursorDisplayName(const CXCursor &cursor);
+ QString getTypeName(const CXType &type);
++QString getResolvedTypeName(const CXType &type);
+ inline QString getCursorTypeName(const CXCursor &cursor)
+     { return getTypeName(clang_getCursorType(cursor)); }
+ inline QString getCursorResultTypeName(const CXCursor &cursor)
+diff --git a/sources/shiboken2/ApiExtractor/tests/testtemplates.cpp b/sources/shiboken2/ApiExtractor/tests/testtemplates.cpp
+index 9f929c4..fbc5c4c 100644
+--- a/sources/shiboken2/ApiExtractor/tests/testtemplates.cpp
++++ b/sources/shiboken2/ApiExtractor/tests/testtemplates.cpp
+@@ -236,7 +236,6 @@ struct List {
+     const AbstractMetaFunction *erase = list->findFunction(QStringLiteral("erase"));
+     QVERIFY(erase);
+     QCOMPARE(erase->arguments().size(), 1);
+-    QEXPECT_FAIL("", "Clang: Some other code changes the parameter type", Abort);
+     QCOMPARE(erase->arguments().at(0)->type()->cppSignature(), QLatin1String("List::Iterator"));
+ }
+ 
+@@ -389,7 +388,7 @@ typedef BaseTemplateClass<TypeOne> TypeOneClass;
+     const ComplexTypeEntry* oneType = one->typeEntry();
+     const ComplexTypeEntry* baseType = base->typeEntry();
+     QCOMPARE(oneType->baseContainerType(), baseType);
+-    QCOMPARE(one->baseClassNames(), QStringList(QLatin1String("BaseTemplateClass<TypeOne>")));
++    QCOMPARE(one->baseClassNames(), QStringList(QLatin1String("NSpace::BaseTemplateClass<NSpace::TypeOne>")));
+ 
+     QVERIFY(one->hasTemplateBaseClassInstantiations());
+     AbstractMetaTypeList instantiations = one->templateBaseClassInstantiations();
diff --git a/pkgs/development/python-modules/pyside2/shiboken2-clang-Fix-clashes-between-type-name-and-enumera.patch b/pkgs/development/python-modules/pyside2/shiboken2-clang-Fix-clashes-between-type-name-and-enumera.patch
new file mode 100644
index 0000000000000..62de5a1531ee0
--- /dev/null
+++ b/pkgs/development/python-modules/pyside2/shiboken2-clang-Fix-clashes-between-type-name-and-enumera.patch
@@ -0,0 +1,92 @@
+From: Friedemann Kleint <Friedemann.Kleint@qt.io>
+Date: Tue, 25 Apr 2023 15:30:30 +0200
+Subject: shiboken2/clang: Fix clashes between type name and enumeration
+ values
+
+Remove all constant and enum value type entries found in the type lookup
+unless it is looking for template arguments; where it may be a
+non-type template argument.
+
+Task-number: PYSIDE-2288
+Pick-to: 6.5 5.15
+Change-Id: If0609ce0d0223f551ed6dee1d1e0ea3ef49d6917
+Reviewed-by: Christian Tismer <tismer@stackless.com>
+(cherry picked from commit e22f717153a5e9855531f45c0bf82ff2461a3f7e)
+---
+ .../shiboken2/ApiExtractor/abstractmetabuilder.cpp  | 21 +++++++++++++++++++--
+ .../shiboken2/ApiExtractor/abstractmetabuilder.h    |  3 ++-
+ .../shiboken2/ApiExtractor/typesystem_typedefs.h    |  1 +
+ 3 files changed, 22 insertions(+), 3 deletions(-)
+
+diff --git a/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp b/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp
+index 5a413ec..2f34e16 100644
+--- a/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp
++++ b/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp
+@@ -2144,6 +2144,13 @@ static bool isNumber(const QString &s)
+                        [](QChar c) { return c.isDigit(); });
+ }
+ 
++// A type entry relevant only for non type template "X<5>"
++static bool isNonTypeTemplateArgument(const TypeEntryCPtr &te)
++{
++    const auto type = te->type();
++    return type == TypeEntry::EnumValue || type == TypeEntry::ConstantValueType;
++}
++
+ AbstractMetaType *AbstractMetaBuilderPrivate::translateTypeStatic(const TypeInfo &_typei,
+                                                                   AbstractMetaClass *currentClass,
+                                                                   AbstractMetaBuilderPrivate *d,
+@@ -2271,7 +2278,15 @@ AbstractMetaType *AbstractMetaBuilderPrivate::translateTypeStatic(const TypeInfo
+         typeInfo.clearInstantiations();
+     }
+ 
+-    const TypeEntries types = findTypeEntries(qualifiedName, name, currentClass, d);
++    TypeEntries types = findTypeEntries(qualifiedName, name, currentClass, d);
++    if (!flags.testFlag(AbstractMetaBuilder::TemplateArgument)) {
++        // Avoid clashes between QByteArray and enum value QMetaType::QByteArray
++        // unless we are looking for template arguments.
++        auto end = std::remove_if(types.begin(), types.end(),
++                                  isNonTypeTemplateArgument);
++        types.erase(end, types.end());
++    }
++
+     if (types.isEmpty()) {
+         if (errorMessageIn) {
+             *errorMessageIn =
+@@ -2293,7 +2308,9 @@ AbstractMetaType *AbstractMetaBuilderPrivate::translateTypeStatic(const TypeInfo
+     const auto &templateArguments = typeInfo.instantiations();
+     for (int t = 0, size = templateArguments.size(); t < size; ++t) {
+         const  TypeInfo &ti = templateArguments.at(t);
+-        AbstractMetaType *targType = translateTypeStatic(ti, currentClass, d, flags, &errorMessage);
++        AbstractMetaType *targType = translateTypeStatic(ti, currentClass, d,
++                                                         flags | AbstractMetaBuilder::TemplateArgument,
++                                                         &errorMessage);
+         // For non-type template parameters, create a dummy type entry on the fly
+         // as is done for classes.
+         if (!targType) {
+diff --git a/sources/shiboken2/ApiExtractor/abstractmetabuilder.h b/sources/shiboken2/ApiExtractor/abstractmetabuilder.h
+index d2dc080..8916eaf 100644
+--- a/sources/shiboken2/ApiExtractor/abstractmetabuilder.h
++++ b/sources/shiboken2/ApiExtractor/abstractmetabuilder.h
+@@ -93,7 +93,8 @@ public:
+     void setSkipDeprecated(bool value);
+ 
+     enum TranslateTypeFlag {
+-        DontResolveType = 0x1
++        DontResolveType = 0x1,
++        TemplateArgument = 0x2
+     };
+     Q_DECLARE_FLAGS(TranslateTypeFlags, TranslateTypeFlag);
+ 
+diff --git a/sources/shiboken2/ApiExtractor/typesystem_typedefs.h b/sources/shiboken2/ApiExtractor/typesystem_typedefs.h
+index 73f92b2..5dcc65c 100644
+--- a/sources/shiboken2/ApiExtractor/typesystem_typedefs.h
++++ b/sources/shiboken2/ApiExtractor/typesystem_typedefs.h
+@@ -48,6 +48,7 @@ using CodeSnipList = QVector<CodeSnip>;
+ using DocModificationList = QVector<DocModification>;
+ using FieldModificationList = QVector<FieldModification>;
+ using FunctionModificationList = QVector<FunctionModification>;
++using TypeEntryCPtr = const TypeEntry *;
+ using TypeEntries = QVector<const TypeEntry *>;
+ 
+ #endif // TYPESYSTEM_TYPEDEFS_H
diff --git a/pkgs/development/python-modules/pyside2/shiboken2-clang-Record-scope-resolution-of-arguments-func.patch b/pkgs/development/python-modules/pyside2/shiboken2-clang-Record-scope-resolution-of-arguments-func.patch
new file mode 100644
index 0000000000000..f5b1fc0da31c5
--- /dev/null
+++ b/pkgs/development/python-modules/pyside2/shiboken2-clang-Record-scope-resolution-of-arguments-func.patch
@@ -0,0 +1,178 @@
+From: Friedemann Kleint <Friedemann.Kleint@qt.io>
+Date: Thu, 27 Apr 2023 12:44:10 +0200
+Subject: shiboken2/clang: Record scope resolution of arguments/function
+ return
+
+Add a flag indicating whether a type was specified with a leading "::"
+(scope resolution). Such parameters previously caused the function to
+rejected due to the "::TypeName" not being found. The type resolution
+added for clang 16 strips these qualifiers though, so, the information
+needs to be stored.
+
+Task-number: PYSIDE-2288
+Pick-to: 6.5 5.15
+Change-Id: I27d27c94ec43bcc4cb3b79e6e9ce6706c749a1e9
+Reviewed-by: Christian Tismer <tismer@stackless.com>
+(cherry picked from commit 075d8ad4660f05e6d2583ff1c05e9987ad624bfe)
+---
+ .../ApiExtractor/clangparser/clangbuilder.cpp      |  8 ++++++--
+ .../ApiExtractor/clangparser/clangutils.cpp        | 11 ++++++++++
+ .../ApiExtractor/clangparser/clangutils.h          |  1 +
+ .../shiboken2/ApiExtractor/parser/codemodel.cpp    | 24 ++++++++++++++++++++++
+ sources/shiboken2/ApiExtractor/parser/codemodel.h  |  8 ++++++++
+ 5 files changed, 50 insertions(+), 2 deletions(-)
+
+diff --git a/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp b/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp
+index ed1e15d..1b5cc5c 100644
+--- a/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp
++++ b/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp
+@@ -294,7 +294,9 @@ FunctionModelItem BuilderPrivate::createFunction(const CXCursor &cursor,
+         name = fixTypeName(name);
+     FunctionModelItem result(new _FunctionModelItem(m_model, name));
+     setFileName(cursor, result.data());
+-    result->setType(createTypeInfoHelper(clang_getCursorResultType(cursor)));
++    const auto type = clang_getCursorResultType(cursor);
++    result->setType(createTypeInfoHelper(type));
++    result->setScopeResolution(hasScopeResolution(type));
+     result->setFunctionType(t);
+     result->setScope(m_scope);
+     result->setStatic(clang_Cursor_getStorageClass(cursor) == CX_SC_Static);
+@@ -1031,7 +1033,9 @@ BaseVisitor::StartTokenResult Builder::startToken(const CXCursor &cursor)
+         if (d->m_currentArgument.isNull() && !d->m_currentFunction.isNull()) {
+             const QString name = getCursorSpelling(cursor);
+             d->m_currentArgument.reset(new _ArgumentModelItem(d->m_model, name));
+-            d->m_currentArgument->setType(d->createTypeInfo(cursor));
++            const auto type = clang_getCursorType(cursor);
++            d->m_currentArgument->setScopeResolution(hasScopeResolution(type));
++            d->m_currentArgument->setType(d->createTypeInfo(type));
+             d->m_currentFunction->addArgument(d->m_currentArgument);
+             QString defaultValueExpression = d->cursorValueExpression(this, cursor);
+             if (!defaultValueExpression.isEmpty()) {
+diff --git a/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp b/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp
+index 295ede3..ec6d228 100644
+--- a/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp
++++ b/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp
+@@ -155,6 +155,17 @@ QString getTypeName(const CXType &type)
+     return result;
+ }
+ 
++// Quick check for "::Type"
++bool hasScopeResolution(const CXType &type)
++{
++    CXString typeSpelling = clang_getTypeSpelling(type);
++    const QString spelling = QString::fromUtf8(clang_getCString(typeSpelling));
++    const bool result = spelling.startsWith(QLatin1String("::"))
++        || spelling.contains(QLatin1String(" ::"));
++    clang_disposeString(typeSpelling);
++    return result;
++}
++
+ // Resolve elaborated types occurring with clang 16
+ QString getResolvedTypeName(const CXType &type)
+ {
+diff --git a/sources/shiboken2/ApiExtractor/clangparser/clangutils.h b/sources/shiboken2/ApiExtractor/clangparser/clangutils.h
+index aacaf63..33f362c 100644
+--- a/sources/shiboken2/ApiExtractor/clangparser/clangutils.h
++++ b/sources/shiboken2/ApiExtractor/clangparser/clangutils.h
+@@ -52,6 +52,7 @@ QString getCursorKindName(CXCursorKind cursorKind);
+ QString getCursorSpelling(const CXCursor &cursor);
+ QString getCursorDisplayName(const CXCursor &cursor);
+ QString getTypeName(const CXType &type);
++bool hasScopeResolution(const CXType &type);
+ QString getResolvedTypeName(const CXType &type);
+ inline QString getCursorTypeName(const CXCursor &cursor)
+     { return getTypeName(clang_getCursorType(cursor)); }
+diff --git a/sources/shiboken2/ApiExtractor/parser/codemodel.cpp b/sources/shiboken2/ApiExtractor/parser/codemodel.cpp
+index dea0812..ba07a01 100644
+--- a/sources/shiboken2/ApiExtractor/parser/codemodel.cpp
++++ b/sources/shiboken2/ApiExtractor/parser/codemodel.cpp
+@@ -1121,11 +1121,23 @@ void _ArgumentModelItem::setDefaultValue(bool defaultValue)
+     m_defaultValue = defaultValue;
+ }
+ 
++bool _ArgumentModelItem::scopeResolution() const
++{
++    return m_scopeResolution;
++}
++
++void _ArgumentModelItem::setScopeResolution(bool v)
++{
++    m_scopeResolution = v;
++}
++
+ #ifndef QT_NO_DEBUG_STREAM
+ void _ArgumentModelItem::formatDebug(QDebug &d) const
+ {
+     _CodeModelItem::formatDebug(d);
+     d << ", type=" << m_type;
++    if (m_scopeResolution)
++        d << ", [m_scope resolution]";
+     if (m_defaultValue)
+         d << ", defaultValue=\"" << m_defaultValueExpression << '"';
+ }
+@@ -1200,6 +1212,16 @@ void _FunctionModelItem::setVariadics(bool isVariadics)
+     m_isVariadics = isVariadics;
+ }
+ 
++bool _FunctionModelItem::scopeResolution() const
++{
++    return m_scopeResolution;
++}
++
++void _FunctionModelItem::setScopeResolution(bool v)
++{
++    m_scopeResolution = v;
++}
++
+ bool _FunctionModelItem::isNoExcept() const
+ {
+     return m_exceptionSpecification == ExceptionSpecification::NoExcept;
+@@ -1343,6 +1365,8 @@ void _FunctionModelItem::formatDebug(QDebug &d) const
+         d << " [explicit]";
+     if (m_isInvokable)
+         d << " [invokable]";
++    if (m_scopeResolution)
++        d << " [scope resolution]";
+     formatModelItemList(d, ", arguments=", m_arguments);
+     if (m_isVariadics)
+         d << ",...";
+diff --git a/sources/shiboken2/ApiExtractor/parser/codemodel.h b/sources/shiboken2/ApiExtractor/parser/codemodel.h
+index b990ad9..85f298c 100644
+--- a/sources/shiboken2/ApiExtractor/parser/codemodel.h
++++ b/sources/shiboken2/ApiExtractor/parser/codemodel.h
+@@ -499,6 +499,10 @@ public:
+     QString defaultValueExpression() const { return m_defaultValueExpression; }
+     void setDefaultValueExpression(const QString &expr) { m_defaultValueExpression = expr; }
+ 
++    // Argument type has scope resolution "::ArgumentType"
++    bool scopeResolution() const;
++    void setScopeResolution(bool v);
++
+ #ifndef QT_NO_DEBUG_STREAM
+     void formatDebug(QDebug &d) const override;
+ #endif
+@@ -507,6 +511,7 @@ private:
+     TypeInfo m_type;
+     QString m_defaultValueExpression;
+     bool m_defaultValue = false;
++    bool m_scopeResolution = false;
+ };
+ 
+ class _MemberModelItem: public _CodeModelItem
+@@ -623,6 +628,8 @@ public:
+     bool isVariadics() const;
+     void setVariadics(bool isVariadics);
+ 
++    bool scopeResolution() const; // Return type has scope resolution "::ReturnType"
++    void setScopeResolution(bool v);
+ 
+     bool isSimilar(const FunctionModelItem &other) const;
+ 
+@@ -652,6 +659,7 @@ private:
+             uint m_isExplicit: 1;
+             uint m_isVariadics: 1;
+             uint m_isInvokable : 1; // Qt
++            uint m_scopeResolution: 1;
+         };
+         uint m_flags;
+     };
diff --git a/pkgs/development/python-modules/pyside2/shiboken2-clang-Remove-typedef-expansion.patch b/pkgs/development/python-modules/pyside2/shiboken2-clang-Remove-typedef-expansion.patch
new file mode 100644
index 0000000000000..142641173639a
--- /dev/null
+++ b/pkgs/development/python-modules/pyside2/shiboken2-clang-Remove-typedef-expansion.patch
@@ -0,0 +1,101 @@
+From: Friedemann Kleint <Friedemann.Kleint@qt.io>
+Date: Thu, 20 Apr 2023 11:16:15 +0200
+Subject: shiboken2/clang: Remove typedef expansion
+
+The functionality will be re-added by a subsequent change
+expanding elaborated types.
+
+Task-number: PYSIDE-2288
+Pick-to: 6.5 5.15
+Change-Id: I3245c6dccba7de0ed1ce0e7820e1edb4567ca3c2
+Reviewed-by: Christian Tismer <tismer@stackless.com>
+(cherry picked from commit 24742dca014109bd3c2a9775fc15ca306ab22c9c)
+---
+ .../ApiExtractor/clangparser/clangbuilder.cpp      | 39 ----------------------
+ 1 file changed, 39 deletions(-)
+
+diff --git a/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp b/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp
+index 1b4c81c..332f1da 100644
+--- a/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp
++++ b/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp
+@@ -140,7 +140,6 @@ static bool isSigned(CXTypeKind kind)
+ class BuilderPrivate {
+ public:
+     using CursorClassHash = QHash<CXCursor, ClassModelItem>;
+-    using CursorTypedefHash = QHash<CXCursor, TypeDefModelItem>;
+     using TypeInfoHash = QHash<CXType, TypeInfo>;
+ 
+     explicit BuilderPrivate(BaseVisitor *bv) : m_baseVisitor(bv), m_model(new CodeModel)
+@@ -197,9 +196,6 @@ public:
+     QString cursorValueExpression(BaseVisitor *bv, const CXCursor &cursor) const;
+     void addBaseClass(const CXCursor &cursor);
+ 
+-    template <class Item>
+-    void qualifyTypeDef(const CXCursor &typeRefCursor, const QSharedPointer<Item> &item) const;
+-
+     bool visitHeader(const char *cFileName) const;
+ 
+     void setFileName(const CXCursor &cursor, _CodeModelItem *item);
+@@ -213,7 +209,6 @@ public:
+     // classes can be correctly parented in case of forward-declared inner classes
+     // (QMetaObject::Connection)
+     CursorClassHash m_cursorClassHash;
+-    CursorTypedefHash m_cursorTypedefHash;
+ 
+     mutable TypeInfoHash m_typeInfoHash; // Cache type information
+     mutable QHash<QString, TemplateTypeAliasModelItem> m_templateTypeAliases;
+@@ -561,7 +556,6 @@ void BuilderPrivate::addTypeDef(const CXCursor &cursor, const CXType &cxType)
+     item->setType(createTypeInfo(cxType));
+     item->setScope(m_scope);
+     m_scopeStack.back()->addTypeDef(item);
+-    m_cursorTypedefHash.insert(cursor, item);
+ }
+ 
+ void BuilderPrivate::startTemplateTypeAlias(const CXCursor &cursor)
+@@ -703,31 +697,6 @@ static inline CXCursor definitionFromTypeRef(const CXCursor &typeRefCursor)
+     return clang_getTypeDeclaration(clang_getCursorType(typeRefCursor));
+ }
+ 
+-// Qualify function arguments or fields that are typedef'ed from another scope:
+-// enum ConversionFlag {};
+-// typedef QFlags<ConversionFlag> ConversionFlags;
+-// class QTextCodec {
+-//      enum ConversionFlag {};
+-//      typedef QFlags<ConversionFlag> ConversionFlags;
+-//      struct ConverterState {
+-//          explicit ConverterState(ConversionFlags);
+-//                                  ^^ qualify to QTextCodec::ConversionFlags
+-//          ConversionFlags m_flags;
+-//                          ^^ ditto
+-
+-template <class Item> // ArgumentModelItem, VariableModelItem
+-void BuilderPrivate::qualifyTypeDef(const CXCursor &typeRefCursor, const QSharedPointer<Item> &item) const
+-{
+-    TypeInfo type = item->type();
+-    if (type.qualifiedName().size() == 1) { // item's type is unqualified.
+-        const auto it = m_cursorTypedefHash.constFind(definitionFromTypeRef(typeRefCursor));
+-        if (it != m_cursorTypedefHash.constEnd() && !it.value()->scope().isEmpty()) {
+-            type.setQualifiedName(it.value()->scope() + type.qualifiedName());
+-            item->setType(type);
+-        }
+-    }
+-}
+-
+ void BuilderPrivate::setFileName(const CXCursor &cursor, _CodeModelItem *item)
+ {
+     const SourceRange range = getCursorRange(cursor);
+@@ -1120,14 +1089,6 @@ BaseVisitor::StartTokenResult Builder::startToken(const CXCursor &cursor)
+     }
+         break;
+     case CXCursor_TypeRef:
+-        if (!d->m_currentFunction.isNull()) {
+-            if (d->m_currentArgument.isNull())
+-                d->qualifyTypeDef(cursor, d->m_currentFunction); // return type
+-            else
+-                d->qualifyTypeDef(cursor, d->m_currentArgument);
+-        } else if (!d->m_currentField.isNull()) {
+-            d->qualifyTypeDef(cursor, d->m_currentField);
+-        }
+         break;
+     case CXCursor_CXXFinalAttr:
+          if (!d->m_currentFunction.isNull())
diff --git a/pkgs/development/python-modules/pyside2/shiboken2-clang-Suppress-class-scope-look-up-for-paramete.patch b/pkgs/development/python-modules/pyside2/shiboken2-clang-Suppress-class-scope-look-up-for-paramete.patch
new file mode 100644
index 0000000000000..db9791a981594
--- /dev/null
+++ b/pkgs/development/python-modules/pyside2/shiboken2-clang-Suppress-class-scope-look-up-for-paramete.patch
@@ -0,0 +1,96 @@
+From: Friedemann Kleint <Friedemann.Kleint@qt.io>
+Date: Thu, 27 Apr 2023 13:00:37 +0200
+Subject: shiboken2/clang: Suppress class scope look up for parameters with
+ scope resolution
+
+Add a flag to AbstractMetaBuilderPrivate::findTypeEntriesHelper()
+to suppress the class scope look in case scope resolution.
+
+Task-number: PYSIDE-2288
+Pick-to: 6.5 5.15
+Change-Id: I04a4810d03845fb48393c5efed3641220bd12d87
+Reviewed-by: Christian Tismer <tismer@stackless.com>
+---
+ sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp | 16 ++++++++++++----
+ sources/shiboken2/ApiExtractor/abstractmetabuilder.h   |  3 ++-
+ sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h |  1 +
+ 3 files changed, 15 insertions(+), 5 deletions(-)
+
+diff --git a/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp b/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp
+index 2f34e16..4bf4ab4 100644
+--- a/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp
++++ b/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp
+@@ -1845,7 +1845,10 @@ AbstractMetaFunction *AbstractMetaBuilderPrivate::traverseFunction(const Functio
+             return nullptr;
+         }
+ 
+-        AbstractMetaType *type = translateType(returnType, currentClass, {}, &errorMessage);
++        TranslateTypeFlags flags;
++        if (functionItem->scopeResolution())
++            flags.setFlag(AbstractMetaBuilder::NoClassScopeLookup);
++        AbstractMetaType *type = translateType(returnType, currentClass, flags, &errorMessage);
+         if (!type) {
+             const QString reason = msgUnmatchedReturnType(functionItem, errorMessage);
+             qCWarning(lcShiboken, "%s",
+@@ -1880,7 +1883,10 @@ AbstractMetaFunction *AbstractMetaBuilderPrivate::traverseFunction(const Functio
+             return nullptr;
+         }
+ 
+-        AbstractMetaType *metaType = translateType(arg->type(), currentClass, {}, &errorMessage);
++        TranslateTypeFlags flags;
++        if (arg->scopeResolution())
++            flags.setFlag(AbstractMetaBuilder::NoClassScopeLookup);
++        AbstractMetaType *metaType = translateType(arg->type(), currentClass, flags, &errorMessage);
+         if (!metaType) {
+             // If an invalid argument has a default value, simply remove it
+             // unless the function is virtual (since the override in the
+@@ -2073,11 +2079,13 @@ static const TypeEntry* findTypeEntryUsingContext(const AbstractMetaClass* metaC
+ // Helper for translateTypeStatic()
+ TypeEntries AbstractMetaBuilderPrivate::findTypeEntries(const QString &qualifiedName,
+                                                         const QString &name,
++                                                        TranslateTypeFlags flags,
+                                                         AbstractMetaClass *currentClass,
+                                                         AbstractMetaBuilderPrivate *d)
+ {
+     // 5.1 - Try first using the current scope
+-    if (currentClass) {
++    if (currentClass != nullptr
++        && !flags.testFlag(AbstractMetaBuilder::NoClassScopeLookup)) {
+         if (auto type = findTypeEntryUsingContext(currentClass, qualifiedName))
+             return {type};
+ 
+@@ -2278,7 +2286,7 @@ AbstractMetaType *AbstractMetaBuilderPrivate::translateTypeStatic(const TypeInfo
+         typeInfo.clearInstantiations();
+     }
+ 
+-    TypeEntries types = findTypeEntries(qualifiedName, name, currentClass, d);
++    TypeEntries types = findTypeEntries(qualifiedName, name, flags, currentClass, d);
+     if (!flags.testFlag(AbstractMetaBuilder::TemplateArgument)) {
+         // Avoid clashes between QByteArray and enum value QMetaType::QByteArray
+         // unless we are looking for template arguments.
+diff --git a/sources/shiboken2/ApiExtractor/abstractmetabuilder.h b/sources/shiboken2/ApiExtractor/abstractmetabuilder.h
+index 8916eaf..f333ad5 100644
+--- a/sources/shiboken2/ApiExtractor/abstractmetabuilder.h
++++ b/sources/shiboken2/ApiExtractor/abstractmetabuilder.h
+@@ -94,7 +94,8 @@ public:
+ 
+     enum TranslateTypeFlag {
+         DontResolveType = 0x1,
+-        TemplateArgument = 0x2
++        TemplateArgument = 0x2,
++        NoClassScopeLookup = 0x4
+     };
+     Q_DECLARE_FLAGS(TranslateTypeFlags, TranslateTypeFlag);
+ 
+diff --git a/sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h b/sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h
+index 8468950..8ddd369 100644
+--- a/sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h
++++ b/sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h
+@@ -154,6 +154,7 @@ public:
+                                                  TranslateTypeFlags flags = {},
+                                                  QString *errorMessageIn = nullptr);
+     static TypeEntries findTypeEntries(const QString &qualifiedName, const QString &name,
++                                       TranslateTypeFlags flags = {},
+                                        AbstractMetaClass *currentClass = nullptr,
+                                        AbstractMetaBuilderPrivate *d = nullptr);
+ 
diff --git a/pkgs/development/python-modules/pyside2/shiboken2-clang-Write-scope-resolution-for-all-parameters.patch b/pkgs/development/python-modules/pyside2/shiboken2-clang-Write-scope-resolution-for-all-parameters.patch
new file mode 100644
index 0000000000000..b0be6fa263178
--- /dev/null
+++ b/pkgs/development/python-modules/pyside2/shiboken2-clang-Write-scope-resolution-for-all-parameters.patch
@@ -0,0 +1,62 @@
+From: Friedemann Kleint <Friedemann.Kleint@qt.io>
+Date: Thu, 27 Apr 2023 12:18:39 +0200
+Subject: shiboken2/clang: Write scope resolution for all parameters of native
+ wrappers
+
+Make sure types are correct for cases like:
+
+- QtDBusHelper::QDBusReply::QDBusReply(::QDBusReply<void>)
+- Qt3DInput*Event constructors taking the equivalent QtGui classes
+  (Qt3DInput::QMouseEvent(::QMouseEvent *);
+
+[ChangeLog][shiboken6] Support for parameters/function return
+types with scope resolution has been improved.
+
+Fixes: PYSIDE-2288
+Pick-to: 6.5 5.15
+Change-Id: Id29758fceb88188f4cd834fbd5a7cc0ab511fb1a
+Reviewed-by: Christian Tismer <tismer@stackless.com>
+(cherry picked from commit dd863857436bbeeba4c0a1077f5ad16653296277)
+---
+ sources/shiboken2/generator/generator.cpp | 24 +++++++++++++-----------
+ 1 file changed, 13 insertions(+), 11 deletions(-)
+
+diff --git a/sources/shiboken2/generator/generator.cpp b/sources/shiboken2/generator/generator.cpp
+index 6028282..6147b8a 100644
+--- a/sources/shiboken2/generator/generator.cpp
++++ b/sources/shiboken2/generator/generator.cpp
+@@ -899,21 +899,23 @@ QString Generator::translateType(const AbstractMetaType *cType,
+                 if (index >= (s.size() - (constLen + 1))) // (VarType const)  or (VarType const[*|&])
+                     s = s.remove(index, constLen);
+             }
+-        } else if (options & Generator::ExcludeConst || options & Generator::ExcludeReference) {
++        } else {
+             AbstractMetaType *copyType = cType->copy();
++            if (options & Generator::ExcludeConst || options & Generator::ExcludeReference) {
++                if (options & Generator::ExcludeConst)
++                    copyType->setConstant(false);
+ 
+-            if (options & Generator::ExcludeConst)
+-                copyType->setConstant(false);
+-
+-            if (options & Generator::ExcludeReference)
+-                copyType->setReferenceType(NoReference);
+-
++                if (options & Generator::ExcludeReference)
++                    copyType->setReferenceType(NoReference);
++            }
+             s = copyType->cppSignature();
+-            if (!copyType->typeEntry()->isVoid() && !copyType->typeEntry()->isCppPrimitive())
+-                s.prepend(QLatin1String("::"));
++            const auto te = copyType->typeEntry();
++            if (!te->isVoid() && !te->isCppPrimitive()) { // Add scope resolution
++                const auto pos = s.indexOf(te->qualifiedCppName()); // Skip const/volatile
++                Q_ASSERT(pos >= 0);
++                s.insert(pos, QLatin1String("::"));
++            }
+             delete copyType;
+-        } else {
+-            s = cType->cppSignature();
+         }
+     }
+ 
diff --git a/pkgs/development/python-modules/pyside6/default.nix b/pkgs/development/python-modules/pyside6/default.nix
index bfc34a23fcd55..088f4e785af64 100644
--- a/pkgs/development/python-modules/pyside6/default.nix
+++ b/pkgs/development/python-modules/pyside6/default.nix
@@ -1,44 +1,26 @@
-{ lib
-, stdenv
-, cmake
-, ninja
-, python
-, moveBuildTree
-, shiboken6
+{
+  lib,
+  stdenv,
+  cmake,
+  cups,
+  ninja,
+  python,
+  pythonImportsCheckHook,
+  moveBuildTree,
+  shiboken6,
+  llvmPackages,
+  symlinkJoin,
+  libGL,
+  darwin,
 }:
-
-stdenv.mkDerivation rec {
-  pname = "pyside6";
-
-  inherit (shiboken6) version src;
-
-  sourceRoot = "pyside-setup-everywhere-src-${version}/sources/${pname}";
-
-  # FIXME: cmake/Macros/PySideModules.cmake supposes that all Qt frameworks on macOS
-  # reside in the same directory as QtCore.framework, which is not true for Nix.
-  postPatch = lib.optionalString stdenv.isLinux ''
-    # Don't ignore optional Qt modules
-    substituteInPlace cmake/PySideHelpers.cmake \
-      --replace-fail \
-        'string(FIND "''${_module_dir}" "''${_core_abs_dir}" found_basepath)' \
-        'set (found_basepath 0)'
-  '';
-
-  nativeBuildInputs = [
-    cmake
-    ninja
-    python
-  ] ++ lib.optionals stdenv.isDarwin [
-    moveBuildTree
-  ];
-
-  buildInputs = with python.pkgs.qt6; [
+let
+  packages = with python.pkgs.qt6; [
     # required
-    qtbase
     python.pkgs.ninja
     python.pkgs.packaging
     python.pkgs.setuptools
-  ] ++ lib.optionals stdenv.isLinux [
+    qtbase
+
     # optional
     qt3d
     qtcharts
@@ -54,19 +36,84 @@ stdenv.mkDerivation rec {
     qtsensors
     qtspeech
     qtsvg
-    qttools
     qtwebchannel
-    qtwebengine
     qtwebsockets
+    qtpositioning
+    qtlocation
+    qtshadertools
+    qtserialport
+    qtserialbus
+    qtgraphs
+    qttools
   ];
+  qt_linked = symlinkJoin {
+    name = "qt_linked";
+    paths = packages;
+  };
+in
 
-  propagatedBuildInputs = [
-    shiboken6
-  ];
+stdenv.mkDerivation (finalAttrs: {
+  pname = "pyside6";
 
-  cmakeFlags = [
-    "-DBUILD_TESTS=OFF"
-  ];
+  inherit (shiboken6) version src;
+
+  sourceRoot = "pyside-setup-everywhere-src-${finalAttrs.version}/sources/pyside6";
+
+  # cmake/Macros/PySideModules.cmake supposes that all Qt frameworks on macOS
+  # reside in the same directory as QtCore.framework, which is not true for Nix.
+  # We therefore symLink all required and optional Qt modules in one directory tree ("qt_linked").
+  # Also we remove "Designer" from darwin build, due to linking failure
+  postPatch =
+    ''
+      # Don't ignore optional Qt modules
+      substituteInPlace cmake/PySideHelpers.cmake \
+        --replace-fail \
+          'string(FIND "''${_module_dir}" "''${_core_abs_dir}" found_basepath)' \
+          'set (found_basepath 0)'
+    ''
+    + lib.optionalString stdenv.hostPlatform.isDarwin ''
+      substituteInPlace cmake/PySideHelpers.cmake \
+        --replace-fail \
+          "Designer" ""
+    '';
+
+  # "Couldn't find libclang.dylib You will likely need to add it manually to PATH to ensure the build succeeds."
+  env = lib.optionalAttrs stdenv.hostPlatform.isDarwin {
+    LLVM_INSTALL_DIR = "${llvmPackages.libclang.lib}/lib";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    ninja
+    python
+    pythonImportsCheckHook
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ moveBuildTree ];
+
+  buildInputs =
+    if stdenv.hostPlatform.isLinux then
+      # qtwebengine fails under darwin
+      # see https://github.com/NixOS/nixpkgs/pull/312987
+      packages ++ [ python.pkgs.qt6.qtwebengine ]
+    else
+      with darwin.apple_sdk_11_0.frameworks;
+      [
+        qt_linked
+        libGL
+        cups
+        # frameworks
+        IOKit
+        DiskArbitration
+        CoreBluetooth
+        EventKit
+        AVFoundation
+        Contacts
+        AGL
+        AppKit
+      ];
+
+  propagatedBuildInputs = [ shiboken6 ];
+
+  cmakeFlags = [ "-DBUILD_TESTS=OFF" ];
 
   dontWrapQtApps = true;
 
@@ -76,11 +123,18 @@ stdenv.mkDerivation rec {
     cp -r PySide6.egg-info $out/${python.sitePackages}/
   '';
 
-  meta = with lib; {
+  pythonImportsCheck = [ "PySide6" ];
+
+  meta = {
     description = "Python bindings for Qt";
-    license = with licenses; [ lgpl3Only gpl2Only gpl3Only ];
+    license = with lib.licenses; [
+      lgpl3Only
+      gpl2Only
+      gpl3Only
+    ];
     homepage = "https://wiki.qt.io/Qt_for_Python";
-    maintainers = with maintainers; [ gebner Enzime ];
-    platforms = platforms.all;
+    changelog = "https://code.qt.io/cgit/pyside/pyside-setup.git/tree/doc/changelogs/changes-${finalAttrs.version}?h=v${finalAttrs.version}";
+    maintainers = with lib.maintainers; [ gebner ];
+    platforms = lib.platforms.all;
   };
-}
+})
diff --git a/pkgs/development/python-modules/pysigma-backend-elasticsearch/default.nix b/pkgs/development/python-modules/pysigma-backend-elasticsearch/default.nix
index 4fea0395ef6f1..f80113fa1bb15 100644
--- a/pkgs/development/python-modules/pysigma-backend-elasticsearch/default.nix
+++ b/pkgs/development/python-modules/pysigma-backend-elasticsearch/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "pysigma-backend-elasticsearch";
-  version = "1.1.0";
+  version = "1.1.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "SigmaHQ";
     repo = "pySigma-backend-elasticsearch";
     rev = "refs/tags/v${version}";
-    hash = "sha256-1tCn0aPYhjyOQJxN0cqTMDCcE0eZwRtTK6OV3rU1a1E=";
+    hash = "sha256-7XecgpZ2DQr2f/Ge7skbielK7qwuGoy/KAoxzNvk9w4=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/pysigma-backend-insightidr/default.nix b/pkgs/development/python-modules/pysigma-backend-insightidr/default.nix
index 1fef60d8acf51..b062ff4356060 100644
--- a/pkgs/development/python-modules/pysigma-backend-insightidr/default.nix
+++ b/pkgs/development/python-modules/pysigma-backend-insightidr/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pysigma
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pysigma,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pysigma-backend-insightidr";
-  version = "0.2.2";
+  version = "0.2.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -19,25 +19,18 @@ buildPythonPackage rec {
     owner = "SigmaHQ";
     repo = "pySigma-backend-insightidr";
     rev = "refs/tags/v${version}";
-    hash = "sha256-B42MADteF0+GC/CPJPLaTGdGcQjC8KEsK9u3tBmtObg=";
+    hash = "sha256-wQMnnJ0KU+53MS3PIBkwIhUiyUdCrDbdUT6upk2Pp/8=";
   };
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  propagatedBuildInputs = [
-    pysigma
-  ];
+  propagatedBuildInputs = [ pysigma ];
 
-  pythonRelaxDeps = [
-    "pysigma"
-  ];
+  pythonRelaxDeps = [ "pysigma" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [
     "sigma.backends.insight_idr"
diff --git a/pkgs/development/python-modules/pysigma-backend-opensearch/default.nix b/pkgs/development/python-modules/pysigma-backend-opensearch/default.nix
index 666816669929d..2e2249fd9c54f 100644
--- a/pkgs/development/python-modules/pysigma-backend-opensearch/default.nix
+++ b/pkgs/development/python-modules/pysigma-backend-opensearch/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pysigma
-, pysigma-backend-elasticsearch
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pysigma,
+  pysigma-backend-elasticsearch,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "pysigma-backend-opensearch";
-  version = "1.0.1";
+  version = "1.0.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "SigmaHQ";
     repo = "pySigma-backend-opensearch";
     rev = "refs/tags/v${version}";
-    hash = "sha256-g3kGaNq07yMu3mnRDeZB3Ck8wwzK3HcOIzkl36cNOs8=";
+    hash = "sha256-VEMt9CKbhPRj1182WcLOqF9JOEzorrz9Yyqp0+FAA88=";
   };
 
   postPatch = ''
@@ -29,16 +29,12 @@ buildPythonPackage rec {
       --replace-fail " --cov=sigma --cov-report term --cov-report xml:cov.xml" ""
   '';
 
-  pythonRelaxDeps = [
-    "pysigma"
-  ];
+  pythonRelaxDeps = [ "pysigma" ];
 
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+
+  dependencies = [
     pysigma
     pysigma-backend-elasticsearch
   ];
@@ -48,9 +44,7 @@ buildPythonPackage rec {
     requests
   ];
 
-  pythonImportsCheck = [
-    "sigma.backends.opensearch"
-  ];
+  pythonImportsCheck = [ "sigma.backends.opensearch" ];
 
   disabledTests = [
     # Tests requires network access
diff --git a/pkgs/development/python-modules/pysigma-backend-qradar/default.nix b/pkgs/development/python-modules/pysigma-backend-qradar/default.nix
index 817cdf8866c96..c88fb3e2befd1 100644
--- a/pkgs/development/python-modules/pysigma-backend-qradar/default.nix
+++ b/pkgs/development/python-modules/pysigma-backend-qradar/default.nix
@@ -1,13 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pysigma
-, pysigma-pipeline-sysmon
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pysigma,
+  pysigma-pipeline-sysmon,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,27 +23,20 @@ buildPythonPackage rec {
     hash = "sha256-VymaxX+iqrRlf+WEt4xqEvNt5kg8xI5O/MoYahayu0o=";
   };
 
-  pythonRelaxDeps = [
-    "pysigma"
-  ];
+  pythonRelaxDeps = [ "pysigma" ];
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  propagatedBuildInputs = [
-    pysigma
-  ];
+  propagatedBuildInputs = [ pysigma ];
 
   nativeCheckInputs = [
     pysigma-pipeline-sysmon
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "sigma.backends.qradar"
-  ];
+  pythonImportsCheck = [ "sigma.backends.qradar" ];
 
   meta = with lib; {
     description = "Library to support Qradar for pySigma";
diff --git a/pkgs/development/python-modules/pysigma-backend-splunk/default.nix b/pkgs/development/python-modules/pysigma-backend-splunk/default.nix
index ec467e52e9ac8..a3a2d6ecc4668 100644
--- a/pkgs/development/python-modules/pysigma-backend-splunk/default.nix
+++ b/pkgs/development/python-modules/pysigma-backend-splunk/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pysigma
-, pysigma-pipeline-sysmon
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pysigma,
+  pysigma-pipeline-sysmon,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-PRJmFXVjcvXVHITwp6ESSoizmJOSiLTl1mj67rNhSNw=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    pysigma
-  ];
+  propagatedBuildInputs = [ pysigma ];
 
   nativeCheckInputs = [
     pysigma-pipeline-sysmon
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "sigma.backends.splunk"
-  ];
+  pythonImportsCheck = [ "sigma.backends.splunk" ];
 
   meta = with lib; {
     description = "Library to support Splunk for pySigma";
diff --git a/pkgs/development/python-modules/pysigma-backend-sqlite/default.nix b/pkgs/development/python-modules/pysigma-backend-sqlite/default.nix
index b9279b024102f..0cb08550f8642 100644
--- a/pkgs/development/python-modules/pysigma-backend-sqlite/default.nix
+++ b/pkgs/development/python-modules/pysigma-backend-sqlite/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pysigma
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pysigma,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-wbFSgtsiP5k1aGJx8PWDl0N28r0dgn6Fduk0PuM8x3w=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    pysigma
-  ];
+  propagatedBuildInputs = [ pysigma ];
 
   nativeCheckInputs = [
     pytestCheckHook
     requests
   ];
 
-  pythonImportsCheck = [
-    "sigma.backends.sqlite"
-  ];
+  pythonImportsCheck = [ "sigma.backends.sqlite" ];
 
   meta = with lib; {
     description = "Library to support sqlite for pySigma";
diff --git a/pkgs/development/python-modules/pysigma-pipeline-crowdstrike/default.nix b/pkgs/development/python-modules/pysigma-pipeline-crowdstrike/default.nix
index 0b08cd5e1b122..53c693974c2a6 100644
--- a/pkgs/development/python-modules/pysigma-pipeline-crowdstrike/default.nix
+++ b/pkgs/development/python-modules/pysigma-pipeline-crowdstrike/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pysigma
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pysigma,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pysigma-pipeline-crowdstrike";
-  version = "1.0.3";
+  version = "2.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,23 +19,20 @@ buildPythonPackage rec {
     owner = "SigmaHQ";
     repo = "pySigma-pipeline-crowdstrike";
     rev = "refs/tags/v${version}";
-    hash = "sha256-0uSoZC2cUgdOGE5saLlx5n0gbVPX61kkASCBFD4F5QM=";
+    hash = "sha256-9rYTBMVb664R9heOw/N/PUFotwOP1avdPUjPDhICkVU=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    pysigma
-  ];
+  dependencies = [ pysigma ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "sigma.pipelines.crowdstrike" ];
 
-  pythonImportsCheck = [
-    "sigma.pipelines.crowdstrike"
+  disabledTests = [
+    # Windows binary not mocked
+    "test_crowdstrike_pipeline_parentimage"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/pysigma-pipeline-sysmon/default.nix b/pkgs/development/python-modules/pysigma-pipeline-sysmon/default.nix
index a60b50f2bc2bc..4249731ec664c 100644
--- a/pkgs/development/python-modules/pysigma-pipeline-sysmon/default.nix
+++ b/pkgs/development/python-modules/pysigma-pipeline-sysmon/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pysigma
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pysigma,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-/WBHu1pFEiVPJQ97xEwjJJ92h9kHzTBPgmfQrR+RZjA=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    pysigma
-  ];
+  propagatedBuildInputs = [ pysigma ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "sigma.pipelines.sysmon"
-  ];
+  pythonImportsCheck = [ "sigma.pipelines.sysmon" ];
 
   meta = with lib; {
     description = "Library to support Sysmon pipeline for pySigma";
diff --git a/pkgs/development/python-modules/pysigma-pipeline-windows/default.nix b/pkgs/development/python-modules/pysigma-pipeline-windows/default.nix
index 5b6518bbf8d80..d40ceff1c7922 100644
--- a/pkgs/development/python-modules/pysigma-pipeline-windows/default.nix
+++ b/pkgs/development/python-modules/pysigma-pipeline-windows/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pysigma
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pysigma,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-Ss0OMd8urCYQUlvsm/m8Kz0jY4pVSEoZuLxs1JLWxQA=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    pysigma
-  ];
+  propagatedBuildInputs = [ pysigma ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "sigma.pipelines.windows"
-  ];
+  pythonImportsCheck = [ "sigma.pipelines.windows" ];
 
   meta = with lib; {
     description = "Library to support Windows service pipeline for pySigma";
diff --git a/pkgs/development/python-modules/pysigma/default.nix b/pkgs/development/python-modules/pysigma/default.nix
index 5816b43926ac0..8987f9820e84d 100644
--- a/pkgs/development/python-modules/pysigma/default.nix
+++ b/pkgs/development/python-modules/pysigma/default.nix
@@ -2,21 +2,19 @@
   lib,
   buildPythonPackage,
   fetchFromGitHub,
-  fetchpatch,
   jinja2,
   packaging,
   poetry-core,
   pyparsing,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
   pyyaml,
   requests,
 }:
 
 buildPythonPackage rec {
   pname = "pysigma";
-  version = "0.11.5";
+  version = "0.11.14";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,7 +23,7 @@ buildPythonPackage rec {
     owner = "SigmaHQ";
     repo = "pySigma";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Mr4etI6VNPWDVZj4A9j3Ka9v+BpFC75MLXppYELIWrg=";
+    hash = "sha256-jxVTXw3WZcOL5IDUHs+DRGoXDRFn99UWOz5j5mCEf8A=";
   };
 
   pythonRelaxDeps = [
@@ -35,7 +33,6 @@ buildPythonPackage rec {
 
   build-system = [ poetry-core ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     jinja2
diff --git a/pkgs/development/python-modules/pysignalclirestapi/default.nix b/pkgs/development/python-modules/pysignalclirestapi/default.nix
index 892a681aea909..c2357f4f95443 100644
--- a/pkgs/development/python-modules/pysignalclirestapi/default.nix
+++ b/pkgs/development/python-modules/pysignalclirestapi/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, requests
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  requests,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-LGP/Oo4FCvOq3LuUZRYFkK2JV1kEu3MeCDgnYo+91o4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     requests
diff --git a/pkgs/development/python-modules/pysigset/default.nix b/pkgs/development/python-modules/pysigset/default.nix
index b0cd337304afe..e0ecf26d4f398 100644
--- a/pkgs/development/python-modules/pysigset/default.nix
+++ b/pkgs/development/python-modules/pysigset/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "pysigset";
diff --git a/pkgs/development/python-modules/pysilero-vad/default.nix b/pkgs/development/python-modules/pysilero-vad/default.nix
index 332d7260e519f..020677f05e6a4 100644
--- a/pkgs/development/python-modules/pysilero-vad/default.nix
+++ b/pkgs/development/python-modules/pysilero-vad/default.nix
@@ -1,57 +1,48 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, stdenv
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  stdenv,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, numpy
-, onnxruntime
+  # dependencies
+  numpy,
+  onnxruntime,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pysilero-vad";
-  version = "1.0.0";
+  version = "2.0.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "rhasspy";
     repo = "pysilero-vad";
-    rev = "fc1e3f74e6282249c1fd67ab0f65832ad1ce9cc5";
-    hash = "sha256-5jS2xZEtvzXO/ffZzseTTUHfE528W9FvKB0AKG6T62k=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-p0pPhQo/raZhlHettmoc7FwnlZH9n2NI4tYHvikJ8i4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    pythonRelaxDepsHook
-  ];
+  build-system = [ setuptools ];
 
-  pythonRelaxDeps = [
-    "numpy"
-  ];
+  pythonRelaxDeps = [ "numpy" ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
     onnxruntime
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pysilero_vad"
-  ];
+  pythonImportsCheck = [ "pysilero_vad" ];
 
   meta = with lib; {
     # what():  /build/source/include/onnxruntime/core/common/logging/logging.h:294 static const onnxruntime::logging::Logger& onnxruntime::logging::LoggingManager::DefaultLogger() Attempt to use DefaultLogger but none has been registered.
-    broken = stdenv.isAarch64 && stdenv.isLinux;
+    broken = stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux;
     description = "Pre-packaged voice activity detector using silero-vad";
     homepage = "https://github.com/rhasspy/pysilero-vad";
     changelog = "https://github.com/rhasspy/pysilero-vad/blob/${src.rev}/CHANGELOG.md";
diff --git a/pkgs/development/python-modules/pysim/default.nix b/pkgs/development/python-modules/pysim/default.nix
index 542b0049ccd35..99563f726096f 100644
--- a/pkgs/development/python-modules/pysim/default.nix
+++ b/pkgs/development/python-modules/pysim/default.nix
@@ -1,23 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
-, pytest-asyncio
-, colorlog
-, smpp-pdu
-, pyscard
-, packaging
-, gsm0338
-, bidict
-, jsonpath-ng
-, termcolor
-, pyyaml
-, pycryptodomex
-, construct
-, pyserial
-, pytlv
-, cmd2
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  colorlog,
+  smpp-pdu,
+  pyscard,
+  packaging,
+  gsm0338,
+  bidict,
+  jsonpath-ng,
+  termcolor,
+  pyyaml,
+  pycryptodomex,
+  construct,
+  pyserial,
+  pytlv,
+  cmd2,
 }:
 
 buildPythonPackage {
@@ -36,9 +36,7 @@ buildPythonPackage {
     substituteInPlace setup.py --replace 'smpp.pdu @ git+https://github.com/hologram-io/smpp.pdu' 'smpp.pdu'
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     bidict
@@ -57,16 +55,14 @@ buildPythonPackage {
     termcolor
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "pySim" ];
 
   meta = with lib; {
-    description = "A python tool to program SIMs / USIMs / ISIMs.";
+    description = "Python tool to program SIMs / USIMs / ISIMs";
     homepage = "https://github.com/osmocom/pysim";
     license = licenses.gpl2;
-    maintainers = with maintainers; [ flokli janik ];
+    maintainers = with maintainers; [ flokli ];
   };
 }
diff --git a/pkgs/development/python-modules/pysimplegui/default.nix b/pkgs/development/python-modules/pysimplegui/default.nix
deleted file mode 100644
index 58deefb4f3d33..0000000000000
--- a/pkgs/development/python-modules/pysimplegui/default.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, tkinter
-, pythonOlder
-}:
-
-buildPythonPackage rec {
-  pname = "pysimplegui";
-  version = "5.0.3";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.6";
-
-  src = fetchPypi {
-    pname = "PySimpleGUI";
-    inherit version;
-    hash = "sha256-bnjPVGMVfma/tn8oCg6FLMI1W+9rtHMKNdarbNg61GM=";
-  };
-
-  propagatedBuildInputs = [
-    tkinter
-  ];
-
-  pythonImportsCheck = [
-    "PySimpleGUI"
-  ];
-
-  meta = with lib; {
-    description = "Python GUIs for Humans";
-    homepage = "https://github.com/PySimpleGUI/PySimpleGUI";
-    license = licenses.unfree;
-    maintainers = with maintainers; [ lucasew ];
-    broken = true; # update to v5 broke the package, it now needs rsa and is trying to access an X11 socket?
-  };
-}
diff --git a/pkgs/development/python-modules/pysimplesoap/default.nix b/pkgs/development/python-modules/pysimplesoap/default.nix
index d02761a1c9220..3d7d25a7b9f8a 100644
--- a/pkgs/development/python-modules/pysimplesoap/default.nix
+++ b/pkgs/development/python-modules/pysimplesoap/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchDebianPatch
-, fetchPypi
-, buildPythonPackage
-, m2crypto
-, nix-update-script
+{
+  lib,
+  fetchDebianPatch,
+  fetchPypi,
+  buildPythonPackage,
+  m2crypto,
+  nix-update-script,
 }:
 
 buildPythonPackage rec {
@@ -19,29 +20,47 @@ buildPythonPackage rec {
     hash = "sha256-sbv00NCt/5tlIZfWGqG3ZzGtYYhJ4n0o/lyyUJFtZ+E=";
   };
 
-  propagatedBuildInputs = [
-    m2crypto
-  ];
+  propagatedBuildInputs = [ m2crypto ];
 
   # Patches necessary for Python 3 compatibility plus bugfixes
-  patches = map (args: fetchDebianPatch ({
-    inherit pname version;
-    debianRevision = "5";
-  } // args)) [
-    # Merged upstream: f5f96210e1483f81cb5c582a6619e3ec4b473027
-    { patch = "Add-quotes-to-SOAPAction-header-in-SoapClient.patch";
-      hash = "sha256-xA8Wnrpr31H8wy3zHSNfezFNjUJt1HbSXn3qUMzeKc0="; }
-    # Merged upstream: ad03a21cafab982eed321553c4bfcda1755182eb
-    { patch = "fix-httplib2-version-check.patch";
-      hash = "sha256-zUeF3v0N/eMyRVRH3tQLfuUfMKOD/B/aqEwFh/7HxH4="; }
-    { patch = "reorder-type-check-to-avoid-a-TypeError.patch";
-      hash = "sha256-2p5Cqvh0SPfJ8B38wb/xq7jWGYgpI9pavA6qkMUb6hA="; }
-    # Merged upstream: 033e5899e131a2c1bdf7db5852f816f42aac9227
-    { patch = "Support-integer-values-in-maxOccurs-attribute.patch";
-      hash = "sha256-IZ0DP7io+ihcnB5547cR53FAdnpRLR6z4J5KsNrkfaI="; }
-    { patch = "PR204.patch";
-      hash = "sha256-JlxeTnKDFxvEMFBthZsaYRbNOoBvLJhBnXCRoiL/nVw="; }
-  ] ++ [ ./stringIO.patch ];
+  patches =
+    map
+      (
+        args:
+        fetchDebianPatch (
+          {
+            inherit pname version;
+            debianRevision = "5";
+          }
+          // args
+        )
+      )
+      [
+        # Merged upstream: f5f96210e1483f81cb5c582a6619e3ec4b473027
+        {
+          patch = "Add-quotes-to-SOAPAction-header-in-SoapClient.patch";
+          hash = "sha256-xA8Wnrpr31H8wy3zHSNfezFNjUJt1HbSXn3qUMzeKc0=";
+        }
+        # Merged upstream: ad03a21cafab982eed321553c4bfcda1755182eb
+        {
+          patch = "fix-httplib2-version-check.patch";
+          hash = "sha256-zUeF3v0N/eMyRVRH3tQLfuUfMKOD/B/aqEwFh/7HxH4=";
+        }
+        {
+          patch = "reorder-type-check-to-avoid-a-TypeError.patch";
+          hash = "sha256-2p5Cqvh0SPfJ8B38wb/xq7jWGYgpI9pavA6qkMUb6hA=";
+        }
+        # Merged upstream: 033e5899e131a2c1bdf7db5852f816f42aac9227
+        {
+          patch = "Support-integer-values-in-maxOccurs-attribute.patch";
+          hash = "sha256-IZ0DP7io+ihcnB5547cR53FAdnpRLR6z4J5KsNrkfaI=";
+        }
+        {
+          patch = "PR204.patch";
+          hash = "sha256-JlxeTnKDFxvEMFBthZsaYRbNOoBvLJhBnXCRoiL/nVw=";
+        }
+      ]
+    ++ [ ./stringIO.patch ];
 
   meta = with lib; {
     description = "Python simple and lightweight SOAP Library";
diff --git a/pkgs/development/python-modules/pysingleton/default.nix b/pkgs/development/python-modules/pysingleton/default.nix
index 790c7a0f9171d..1013951b0bba0 100644
--- a/pkgs/development/python-modules/pysingleton/default.nix
+++ b/pkgs/development/python-modules/pysingleton/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyskyqhub/default.nix b/pkgs/development/python-modules/pyskyqhub/default.nix
index 216e998a49020..95aedea3d074b 100644
--- a/pkgs/development/python-modules/pyskyqhub/default.nix
+++ b/pkgs/development/python-modules/pyskyqhub/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-yXqtABbsCh1yb96lsEA0gquikVenGLCo6J93AeXAC8k=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Tests require phyiscal hardware
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyskyqhub"
-  ];
+  pythonImportsCheck = [ "pyskyqhub" ];
 
   meta = with lib; {
     description = "Python module for accessing SkyQ Hub";
diff --git a/pkgs/development/python-modules/pyskyqremote/default.nix b/pkgs/development/python-modules/pyskyqremote/default.nix
index 27be3381ae4fa..64be0f25f39b7 100644
--- a/pkgs/development/python-modules/pyskyqremote/default.nix
+++ b/pkgs/development/python-modules/pyskyqremote/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, requests
-, websocket-client
-, xmltodict
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
+  websocket-client,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
   # Project has no tests, only a test script which looks like anusage example
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyskyqremote"
-  ];
+  pythonImportsCheck = [ "pyskyqremote" ];
 
   meta = with lib; {
     description = "Python module for accessing SkyQ boxes";
diff --git a/pkgs/development/python-modules/pyslim/default.nix b/pkgs/development/python-modules/pyslim/default.nix
index f21dc7b354e3f..4d26124cdafb3 100644
--- a/pkgs/development/python-modules/pyslim/default.nix
+++ b/pkgs/development/python-modules/pyslim/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, pythonOlder
-, msprime
-, numpy
-, tskit
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  pythonOlder,
+  msprime,
+  numpy,
+  tskit,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-valAhPEVZNv/IYe85a88SGE+2/9O1omvBywz/HeeRco=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     msprime
@@ -32,9 +31,7 @@ buildPythonPackage rec {
   # Requires non-packaged software SLiM
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyslim"
-  ];
+  pythonImportsCheck = [ "pyslim" ];
 
   meta = with lib; {
     description = "Tools for dealing with tree sequences coming to and from SLiM";
diff --git a/pkgs/development/python-modules/pyslurm/default.nix b/pkgs/development/python-modules/pyslurm/default.nix
index b910da5b69e26..8a8b69f52fb2b 100644
--- a/pkgs/development/python-modules/pyslurm/default.nix
+++ b/pkgs/development/python-modules/pyslurm/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, pythonOlder
-, fetchFromGitHub
-, fetchpatch
-, buildPythonPackage
-, cython
-, slurm
+{
+  lib,
+  pythonOlder,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  cython,
+  slurm,
 }:
 
 buildPythonPackage rec {
   pname = "pyslurm";
   version = "23.11.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
@@ -21,15 +22,17 @@ buildPythonPackage rec {
     hash = "sha256-Qi0XftneKj7hdDiLY2hoRONRrPv49mfQlvlNkudH54Y=";
   };
 
-  patches = [ (fetchpatch {
-    name = "remove-undeclared-KILL_JOB_ARRAY";
-    url = "https://github.com/PySlurm/pyslurm/commit/f7a7d8beb8ceb4e4c1b248bab2ebb995dcae77e2.patch";
-    hash = "sha256-kQLGiGzAhqP8Z6pObz9vdTRdITd12w7KuUDXsfyLIU8=";
-  })];
+  nativeBuildInputs = [ setuptools ];
 
-  buildInputs = [ cython slurm ];
+  buildInputs = [
+    cython
+    slurm
+  ];
 
-  setupPyBuildFlags = [ "--slurm-lib=${lib.getLib slurm}/lib" "--slurm-inc=${lib.getDev slurm}/include" ];
+  env = {
+    SLURM_LIB_DIR = "${lib.getLib slurm}/lib";
+    SLURM_INCLUDE_DIR = "${lib.getDev slurm}/include";
+  };
 
   # Test cases need /etc/slurm/slurm.conf and require a working slurm installation
   doCheck = false;
diff --git a/pkgs/development/python-modules/pysma/default.nix b/pkgs/development/python-modules/pysma/default.nix
index 973969e3d1363..17d120b65e74d 100644
--- a/pkgs/development/python-modules/pysma/default.nix
+++ b/pkgs/development/python-modules/pysma/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, attrs
-, buildPythonPackage
-, fetchPypi
-, jmespath
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  attrs,
+  buildPythonPackage,
+  fetchPypi,
+  jmespath,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # pypi does not contain tests and GitHub archive not available
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pysma"
-  ];
+  pythonImportsCheck = [ "pysma" ];
 
   meta = with lib; {
     description = "Python library for interacting with SMA Solar's WebConnect";
diff --git a/pkgs/development/python-modules/pysmappee/default.nix b/pkgs/development/python-modules/pysmappee/default.nix
index ae9d5fa983040..dbf3d11da54be 100644
--- a/pkgs/development/python-modules/pysmappee/default.nix
+++ b/pkgs/development/python-modules/pysmappee/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, cachetools
-, fetchFromGitHub
-, paho-mqtt
-, pythonOlder
-, pytz
-, requests
-, requests-oauthlib
-, schedule
+{
+  lib,
+  buildPythonPackage,
+  cachetools,
+  fetchFromGitHub,
+  paho-mqtt,
+  pythonOlder,
+  pytz,
+  requests,
+  requests-oauthlib,
+  schedule,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pysmappee"
-  ];
+  pythonImportsCheck = [ "pysmappee" ];
 
   meta = with lib; {
     description = "Python Library for the Smappee dev API";
diff --git a/pkgs/development/python-modules/pysmart/default.nix b/pkgs/development/python-modules/pysmart/default.nix
index 42854750bbbbf..4ad6663152d19 100644
--- a/pkgs/development/python-modules/pysmart/default.nix
+++ b/pkgs/development/python-modules/pysmart/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, chardet
-, humanfriendly
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
-, smartmontools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  chardet,
+  humanfriendly,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  smartmontools,
 }:
 
 buildPythonPackage rec {
@@ -33,17 +34,11 @@ buildPythonPackage rec {
     humanfriendly
   ];
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pySMART"
-  ];
+  pythonImportsCheck = [ "pySMART" ];
 
   meta = with lib; {
     description = "Wrapper for smartctl (smartmontools)";
diff --git a/pkgs/development/python-modules/pysmartapp/default.nix b/pkgs/development/python-modules/pysmartapp/default.nix
index e404ef905de13..295624bafc766 100644
--- a/pkgs/development/python-modules/pysmartapp/default.nix
+++ b/pkgs/development/python-modules/pysmartapp/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, httpsig
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpsig,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,18 +22,14 @@ buildPythonPackage rec {
     hash = "sha256-RiRGOO5l5hcHllyDDGLtQHr51JOTZhAa/wK8BfMqmAY=";
   };
 
-  propagatedBuildInputs = [
-    httpsig
-  ];
+  propagatedBuildInputs = [ httpsig ];
 
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pysmartapp"
-  ];
+  pythonImportsCheck = [ "pysmartapp" ];
 
   meta = with lib; {
     description = "Python implementation to work with SmartApp lifecycle events";
diff --git a/pkgs/development/python-modules/pysmartdl/default.nix b/pkgs/development/python-modules/pysmartdl/default.nix
index b5c052bdfaa76..b131b2e3e1965 100644
--- a/pkgs/development/python-modules/pysmartdl/default.nix
+++ b/pkgs/development/python-modules/pysmartdl/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-Etyv3xCB1cGozWDsskygwcTHJfC+V5hvqBNQAF8SIMM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # touch the network
@@ -39,15 +36,13 @@ buildPythonPackage rec {
     "test_unicode"
   ];
 
-  pythonImportsCheck = [
-    "pySmartDL"
-  ];
+  pythonImportsCheck = [ "pySmartDL" ];
 
   meta = with lib; {
     homepage = "https://github.com/iTaybb/pySmartDL";
-    description = "A Smart Download Manager for Python";
+    description = "Smart Download Manager for Python";
     changelog = "https://github.com/iTaybb/pySmartDL/blob/${src.rev}/ChangeLog.txt";
     license = licenses.unlicense;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pysmartthings/default.nix b/pkgs/development/python-modules/pysmartthings/default.nix
index 89b6ba537aec4..dfcfeb1755c8a 100644
--- a/pkgs/development/python-modules/pysmartthings/default.nix
+++ b/pkgs/development/python-modules/pysmartthings/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
       --replace "aiohttp>=3.8.0,<4.0.0" "aiohttp<=4.0.0"
   '';
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # https://github.com/andrewsayre/pysmartthings/issues/80
   doCheck = lib.versionOlder aiohttp.version "3.9.0";
@@ -38,9 +37,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pysmartthings"
-  ];
+  pythonImportsCheck = [ "pysmartthings" ];
 
   meta = with lib; {
     description = "Python library for interacting with the SmartThings cloud API";
diff --git a/pkgs/development/python-modules/pysmb/default.nix b/pkgs/development/python-modules/pysmb/default.nix
index 67f468a508f9c..5a2733c302052 100644
--- a/pkgs/development/python-modules/pysmb/default.nix
+++ b/pkgs/development/python-modules/pysmb/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyasn1
-, pythonOlder
-, tqdm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyasn1,
+  pythonOlder,
+  tqdm,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pysmbc/default.nix b/pkgs/development/python-modules/pysmbc/default.nix
index 83465ab859a2b..e01646ae5b7a3 100644
--- a/pkgs/development/python-modules/pysmbc/default.nix
+++ b/pkgs/development/python-modules/pysmbc/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, samba
-, pkg-config
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  samba,
+  pkg-config,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,20 +19,14 @@ buildPythonPackage rec {
     hash = "sha256-IvFxXfglif2cxCU/6rOQtO8Lq/FPZFE82NB7N4mWMiY=";
   };
 
-  nativeBuildInputs = [
-    pkg-config
-  ];
+  nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [
-    samba
-  ];
+  buildInputs = [ samba ];
 
   # Tests would require a local SMB server
   doCheck = false;
 
-  pythonImportsCheck = [
-    "smbc"
-  ];
+  pythonImportsCheck = [ "smbc" ];
 
   meta = with lib; {
     description = "libsmbclient binding for Python";
diff --git a/pkgs/development/python-modules/pysmf/default.nix b/pkgs/development/python-modules/pysmf/default.nix
index 6b3b50e9e1e7e..dfa1075f08163 100644
--- a/pkgs/development/python-modules/pysmf/default.nix
+++ b/pkgs/development/python-modules/pysmf/default.nix
@@ -1,4 +1,13 @@
-{ lib, buildPythonPackage, fetchPypi, pkg-config, libsmf, glib, pytest, cython }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pkg-config,
+  libsmf,
+  glib,
+  pytest,
+  cython,
+}:
 
 buildPythonPackage rec {
   pname = "pysmf";
@@ -14,12 +23,19 @@ buildPythonPackage rec {
     rm $sourceRoot/src/smf.c
   '';
 
-  nativeBuildInputs = [ pkg-config pytest cython ];
-  buildInputs = [ libsmf glib ];
+  nativeBuildInputs = [
+    pkg-config
+    pytest
+    cython
+  ];
+  buildInputs = [
+    libsmf
+    glib
+  ];
 
   meta = with lib; {
     homepage = "https://das.nasophon.de/pysmf/";
-    description = "Python extension module for reading and writing Standard MIDI Files, based on libsmf.";
+    description = "Python extension module for reading and writing Standard MIDI Files, based on libsmf";
     license = licenses.bsd2;
     maintainers = [ ];
   };
diff --git a/pkgs/development/python-modules/pysmi-lextudio/default.nix b/pkgs/development/python-modules/pysmi-lextudio/default.nix
deleted file mode 100644
index 184c8a8bd8f2c..0000000000000
--- a/pkgs/development/python-modules/pysmi-lextudio/default.nix
+++ /dev/null
@@ -1,49 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, jinja2
-, ply
-, poetry-core
-, pythonOlder
-, requests
-}:
-
-buildPythonPackage rec {
-  pname = "pysmi-lextudio";
-  version = "1.4.3";
-  pyproject = true;
-
-  disabled = pythonOlder "3.7";
-
-  src = fetchFromGitHub {
-    owner = "lextudio";
-    repo = "pysmi";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-JrWVoK7fqESUIJeprjB28iaqOEWgsTpTqUEmSZp9XDk=";
-  };
-
-  nativeBuildInputs = [
-    poetry-core
-  ];
-
-  propagatedBuildInputs = [
-    jinja2
-    ply
-    requests
-  ];
-
-  # Circular dependency on pysnmp-lextudio
-  doCheck = false;
-
-  pythonImportsCheck = [
-    "pysmi"
-  ];
-
-  meta = with lib; {
-    description = "SNMP MIB parser";
-    homepage = "https://github.com/lextudio/pysmi";
-    changelog = "https://github.com/lextudio/pysmi/blob/v${version}/CHANGES.rst";
-    license = licenses.bsd2;
-    maintainers = with maintainers; [ fab ];
-  };
-}
diff --git a/pkgs/development/python-modules/pysmi/default.nix b/pkgs/development/python-modules/pysmi/default.nix
index 3e32fd5bd4317..69aac0ffc10fa 100644
--- a/pkgs/development/python-modules/pysmi/default.nix
+++ b/pkgs/development/python-modules/pysmi/default.nix
@@ -1,29 +1,56 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, ply
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jinja2,
+  ply,
+  poetry-core,
+  pysmi,
+  pysnmp,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
-  version = "0.3.4";
-  format = "setuptools";
+  version = "1.5.0";
   pname = "pysmi";
+  pyproject = true;
 
- src = fetchPypi {
-    inherit pname version;
-    sha256 = "bd15a15020aee8376cab5be264c26330824a8b8164ed0195bd402dd59e4e8f7c";
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "lextudio";
+    repo = "pysmi";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-9yAsseMI50RhVeyFvuTo/pN9ftrvvUWYCacy2v3VVT8=";
   };
 
-  propagatedBuildInputs = [ ply ];
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    ply
+    jinja2
+    requests
+  ];
+
+  nativeCheckInputs = [
+    pysnmp
+    pytestCheckHook
+  ];
 
   # Tests require pysnmp, which in turn requires pysmi => infinite recursion
   doCheck = false;
 
+  pythonImportsCheck = [ "pysmi" ];
+
+  passthru.tests.pytest = pysmi.overridePythonAttrs { doCheck = true; };
+
   meta = with lib; {
-    homepage = "http://pysmi.sf.net";
-    description = "SNMP SMI/MIB Parser";
+    description = "SNMP MIB parser";
+    homepage = "https://github.com/lextudio/pysmi";
+    changelog = "https://github.com/lextudio/pysmi/blob/v${version}/CHANGES.rst";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ koral ];
+    maintainers = with maintainers; [ fab ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pysml/default.nix b/pkgs/development/python-modules/pysml/default.nix
index cfdfc1b476297..73a2d67ed8edd 100644
--- a/pkgs/development/python-modules/pysml/default.nix
+++ b/pkgs/development/python-modules/pysml/default.nix
@@ -1,50 +1,47 @@
-{ lib
-, aiohttp
-, async-timeout
-, bitstring
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pyserial-asyncio
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  bitstring,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pyserial-asyncio,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pysml";
-  version = "0.1.2";
-  format = "pyproject";
+  version = "0.1.3";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "mtdcr";
-    repo = pname;
+    repo = "pysml";
     rev = "refs/tags/${version}";
-    hash = "sha256-TLIpc0bVx1As2oLyYD+BBMalwJiKdvBCcrd1tUNyh6Y=";
+    hash = "sha256-LmybrMHHWsLd6Y2xMqJ8g65SQCsysBGxeL43qouo3SM=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     async-timeout
     bitstring
     pyserial-asyncio
   ];
 
-  # Project has no tests
+  # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sml"
-  ];
+  pythonImportsCheck = [ "sml" ];
 
   meta = with lib; {
     description = "Python library for EDL21 smart meters using Smart Message Language (SML)";
     homepage = "https://github.com/mtdcr/pysml";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/pysmlight/default.nix b/pkgs/development/python-modules/pysmlight/default.nix
new file mode 100644
index 0000000000000..d334e099908fb
--- /dev/null
+++ b/pkgs/development/python-modules/pysmlight/default.nix
@@ -0,0 +1,49 @@
+{
+  aiohttp,
+  aiohttp-sse-client2,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  mashumaro,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "pysmlight";
+  version = "0.1.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "smlight-tech";
+    repo = "pysmlight";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-b1f17jOEDQFtwBJa2zhbI8j2rRoMNJy8/WsVWanf6BI=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    aiohttp
+    aiohttp-sse-client2
+    mashumaro
+  ];
+
+  pythonImportsCheck = [ "pysmlight" ];
+
+  nativeCheckInputs = [
+    aresponses
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  meta = {
+    changelog = "https://github.com/smlight-tech/pysmlight/releases/tag/v${version}";
+    description = "Library implementing API control of the SMLIGHT SLZB-06 LAN Coordinators";
+    homepage = "https://github.com/smlight-tech/pysmlight";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/pysmt/default.nix b/pkgs/development/python-modules/pysmt/default.nix
index 61283ce4ad3be..7197bb1b6bb57 100644
--- a/pkgs/development/python-modules/pysmt/default.nix
+++ b/pkgs/development/python-modules/pysmt/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pysmt";
-  version = "0.9.5";
+  version = "0.9.6";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -16,16 +17,12 @@ buildPythonPackage rec {
     owner = "pysmt";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-cE+WmKzggYof/olxQb5M7xPsBONr39KdjOTG4ofYPUM=";
+    hash = "sha256-HmEdCJOF04h0z5UPpfYa07b78EEBj5KyVAk6aNRFPEo=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pysmt"
-  ];
+  pythonImportsCheck = [ "pysmt" ];
 
   meta = with lib; {
     description = "Python library for SMT formulae manipulation and solving";
diff --git a/pkgs/development/python-modules/pysnmp-lextudio/default.nix b/pkgs/development/python-modules/pysnmp-lextudio/default.nix
deleted file mode 100644
index 2f921aa8039a4..0000000000000
--- a/pkgs/development/python-modules/pysnmp-lextudio/default.nix
+++ /dev/null
@@ -1,75 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# build-system
-, poetry-core
-
-# dependencies
-, pyasn1
-, pysmi-lextudio
-, pysnmpcrypto
-
-# tests
-, pytestCheckHook
-, pytest-asyncio
-}:
-
-buildPythonPackage rec {
-  pname = "pysnmp-lextudio";
-  version = "6.1.2";
-  pyproject = true;
-
-  src = fetchFromGitHub {
-    owner = "lextudio";
-    repo = "pysnmp";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-iVej39OmTPiZL11+IetnqHaxFAhZ/YR7tjiRoc7pu8U=";
-  };
-
-  nativeBuildInputs = [
-    poetry-core
-  ];
-
-  propagatedBuildInputs = [
-    pyasn1
-    pysmi-lextudio
-    pysnmpcrypto
-  ];
-
-  nativeCheckInputs = [
-    pytestCheckHook
-    pytest-asyncio
-  ];
-
-  disabledTests = [
-    # Temporary failure in name resolutionc
-    "test_custom_asn1_mib_search_path"
-    "test_send_notification"
-    "test_send_trap"
-    "test_send_v3_inform_notification"
-    "test_send_v3_inform_sync"
-    "test_usm_sha_aes128"
-    "test_v1_get"
-    "test_v1_next"
-    "test_v1_set"
-    "test_v2c_bulk"
-    # pysnmp.smi.error.MibNotFoundError
-    "test_send_v3_trap_notification"
-    "test_addAsn1MibSource"
-    "test_v1_walk"
-    "test_v2_walk"
-  ];
-
-  pythonImportsCheck = [
-    "pysnmp"
-  ];
-
-  meta = with lib; {
-    description = "Python SNMP library";
-    homepage = "https://github.com/lextudio/pysnmp";
-    changelog = "https://github.com/lextudio/pysnmp/blob/${src.rev}/CHANGES.txt";
-    license = licenses.bsd2;
-    maintainers = with maintainers; [ hexa ];
-  };
-}
diff --git a/pkgs/development/python-modules/pysnmp-pyasn1/default.nix b/pkgs/development/python-modules/pysnmp-pyasn1/default.nix
index d962615e7adbf..2d81f0c4189f4 100644
--- a/pkgs/development/python-modules/pysnmp-pyasn1/default.nix
+++ b/pkgs/development/python-modules/pysnmp-pyasn1/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-W74aWMqGlat+aZfhbP1cTKRz7SomHdGwfK5yJwxgyqI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyasn1"
-  ];
+  pythonImportsCheck = [ "pyasn1" ];
 
   meta = with lib; {
     description = "Python ASN.1 encoder and decoder";
diff --git a/pkgs/development/python-modules/pysnmp-pysmi/default.nix b/pkgs/development/python-modules/pysnmp-pysmi/default.nix
index e87cc642400bd..4dbf57dcc6400 100644
--- a/pkgs/development/python-modules/pysnmp-pysmi/default.nix
+++ b/pkgs/development/python-modules/pysnmp-pysmi/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, ply
-, poetry-core
-, requests
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  ply,
+  poetry-core,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-dK02y8HXhwq1W6NOYsycjTpIMxoQY4qNT4n8TEycmWM=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     ply
@@ -33,9 +32,7 @@ buildPythonPackage rec {
   # Circular dependency with pysnmplib
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pysmi"
-  ];
+  pythonImportsCheck = [ "pysmi" ];
 
   meta = with lib; {
     description = "SNMP MIB parser";
diff --git a/pkgs/development/python-modules/pysnmp/default.nix b/pkgs/development/python-modules/pysnmp/default.nix
index 6921ef3ad9a96..3fa3a1dfe700b 100644
--- a/pkgs/development/python-modules/pysnmp/default.nix
+++ b/pkgs/development/python-modules/pysnmp/default.nix
@@ -1,32 +1,74 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyasn1
-, pycryptodomex
-, pysmi
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  pyasn1,
+  pysmi,
+  pysnmpcrypto,
+
+  # tests
+  pytestCheckHook,
+  pytest-asyncio,
 }:
 
 buildPythonPackage rec {
   pname = "pysnmp";
-  version = "4.4.12";
-  format = "setuptools";
+  version = "6.2.5";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1acbfvpbr45i137s00mbhh21p71ywjfw3r8z0ybcmjjqz7rbwg8c";
+  src = fetchFromGitHub {
+    owner = "lextudio";
+    repo = "pysnmp";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-EGMUTUN95wykU756GJSiXwr8Hi3kyaLPfqhuDgvhbBE=";
   };
 
-  patches = [ ./setup.py-Fix-the-setuptools-version-check.patch ];
+  pythonRemoveDeps = [ "pytest-cov" ];
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    pyasn1
+    pysmi
+    pysnmpcrypto
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-asyncio
+  ];
 
-  # NameError: name 'mibBuilder' is not defined
-  doCheck = false;
+  disabledTests = [
+    # Temporary failure in name resolution
+    "test_custom_asn1_mib_search_path"
+    "test_send_notification"
+    "test_send_trap"
+    "test_send_v3_inform_notification"
+    "test_send_v3_inform_sync"
+    "test_usm_sha_aes128"
+    "test_v1_get"
+    "test_v1_next"
+    "test_v1_set"
+    "test_v2c_bulk"
+    # pysnmp.smi.error.MibNotFoundError
+    "test_send_v3_trap_notification"
+    "test_addAsn1MibSource"
+    "test_v1_walk"
+    "test_v2_walk"
+  ];
 
-  propagatedBuildInputs = [ pyasn1 pycryptodomex pysmi ];
+  pythonImportsCheck = [ "pysnmp" ];
 
   meta = with lib; {
-    homepage = "http://snmplabs.com/pysnmp/index.html";
-    description = "A pure-Python SNMPv1/v2c/v3 library";
+    description = "Python SNMP library";
+    homepage = "https://github.com/lextudio/pysnmp";
+    changelog = "https://github.com/lextudio/pysnmp/blob/${src.rev}/CHANGES.txt";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ primeos koral ];
+    maintainers = with maintainers; [ hexa ];
   };
 }
diff --git a/pkgs/development/python-modules/pysnmpcrypto/default.nix b/pkgs/development/python-modules/pysnmpcrypto/default.nix
index ffeb9dddfbd8b..73e3ed2e17b35 100644
--- a/pkgs/development/python-modules/pysnmpcrypto/default.nix
+++ b/pkgs/development/python-modules/pysnmpcrypto/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, cryptography
-, pycryptodomex
+  # dependencies
+  cryptography,
+  pycryptodomex,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -30,28 +31,22 @@ buildPythonPackage rec {
       "observed_version = [36, 2, 0]"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     cryptography
     pycryptodomex
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pysnmpcrypto"
-  ];
+  pythonImportsCheck = [ "pysnmpcrypto" ];
 
   meta = with lib; {
     description = "Strong crypto support for Python SNMP library";
     homepage = "https://github.com/etingof/pysnmpcrypto";
     changelog = "https://github.com/etingof/pysnmpcrypto/blob/${version}/CHANGES.txt";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pysnmplib/default.nix b/pkgs/development/python-modules/pysnmplib/default.nix
index abcbe70562dea..ccb5320a67ac2 100644
--- a/pkgs/development/python-modules/pysnmplib/default.nix
+++ b/pkgs/development/python-modules/pysnmplib/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pycryptodomex
-, pysnmp-pyasn1
-, pysnmp-pysmi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pycryptodomex,
+  pysnmp-pyasn1,
+  pysnmp-pysmi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-AtQqXiy943cYhHDsyz9Yk5uA4xK7Q4p21CT3X3zYzrQ=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     pysnmp-pysmi
@@ -35,9 +34,7 @@ buildPythonPackage rec {
   # Module has no test, examples are used for testing
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pysnmp"
-  ];
+  pythonImportsCheck = [ "pysnmp" ];
 
   meta = with lib; {
     description = "Implementation of v1/v2c/v3 SNMP engine";
diff --git a/pkgs/development/python-modules/pysnooper/default.nix b/pkgs/development/python-modules/pysnooper/default.nix
index 9cebc9d7bc7a2..c8f3ca8bb96ed 100644
--- a/pkgs/development/python-modules/pysnooper/default.nix
+++ b/pkgs/development/python-modules/pysnooper/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,16 +19,12 @@ buildPythonPackage rec {
     hash = "sha256-gQZp4WKiUKBm2GYuVzrbxa93DpN8W1V48ou3NV0chZs=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pysnooper"
-  ];
+  pythonImportsCheck = [ "pysnooper" ];
 
   meta = with lib; {
-    description = "A poor man's debugger for Python";
+    description = "Poor man's debugger for Python";
     homepage = "https://github.com/cool-RR/PySnooper";
     license = licenses.mit;
     maintainers = with maintainers; [ seqizz ];
diff --git a/pkgs/development/python-modules/pysnooz/default.nix b/pkgs/development/python-modules/pysnooz/default.nix
index 4ff2513685f6a..4adef044fc7ad 100644
--- a/pkgs/development/python-modules/pysnooz/default.nix
+++ b/pkgs/development/python-modules/pysnooz/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, bleak
-, bleak-retry-connector
-, bluetooth-sensor-state-data
-, buildPythonPackage
-, events
-, fetchFromGitHub
-, freezegun
-, home-assistant-bluetooth
-, poetry-core
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, transitions
+{
+  lib,
+  bleak,
+  bleak-retry-connector,
+  bluetooth-sensor-state-data,
+  buildPythonPackage,
+  events,
+  fetchFromGitHub,
+  freezegun,
+  home-assistant-bluetooth,
+  poetry-core,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  transitions,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
       --replace " --cov=pysnooz --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     bleak
@@ -56,9 +55,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pysnooz"
-  ];
+  pythonImportsCheck = [ "pysnooz" ];
 
   meta = with lib; {
     description = "Library to control SNOOZ white noise machines";
diff --git a/pkgs/development/python-modules/pysnow/default.nix b/pkgs/development/python-modules/pysnow/default.nix
index 52613d602d828..f69e18f431372 100644
--- a/pkgs/development/python-modules/pysnow/default.nix
+++ b/pkgs/development/python-modules/pysnow/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, brotli
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, httpretty
-, ijson
-, poetry-core
-, python-magic
-, pytz
-, pytestCheckHook
-, requests-oauthlib
+{
+  lib,
+  brotli,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  httpretty,
+  ijson,
+  poetry-core,
+  python-magic,
+  pytz,
+  pytestCheckHook,
+  requests-oauthlib,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +18,6 @@ buildPythonPackage rec {
   version = "0.7.16";
   format = "pyproject";
 
-
   src = fetchFromGitHub {
     owner = "rbw";
     repo = pname;
@@ -25,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-nKOPCkS2b3ObmBnk/7FTv4o4vwUX+tOtZI5OQQ4HSTY=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     brotli
@@ -58,9 +56,7 @@ buildPythonPackage rec {
       --replace 'oauthlib = "^3.1.0"' 'oauthlib = "*"'
   '';
 
-  pythonImportsCheck = [
-    "pysnow"
-  ];
+  pythonImportsCheck = [ "pysnow" ];
 
   meta = with lib; {
     description = "ServiceNow HTTP client library written in Python";
@@ -68,5 +64,4 @@ buildPythonPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ almac ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pysocks/default.nix b/pkgs/development/python-modules/pysocks/default.nix
index b007ef9a41417..82c8c2dba332a 100644
--- a/pkgs/development/python-modules/pysocks/default.nix
+++ b/pkgs/development/python-modules/pysocks/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -18,8 +19,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "SOCKS module for Python";
-    license     = licenses.bsd3;
+    license = licenses.bsd3;
     maintainers = with maintainers; [ thoughtpolice ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pysol-cards/default.nix b/pkgs/development/python-modules/pysol-cards/default.nix
index f2837b93568ec..2db75c3f2820d 100644
--- a/pkgs/development/python-modules/pysol-cards/default.nix
+++ b/pkgs/development/python-modules/pysol-cards/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, six, random2 }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  random2,
+}:
 
 buildPythonPackage rec {
   pname = "pysol-cards";
@@ -11,7 +17,10 @@ buildPythonPackage rec {
     hash = "sha256-C4fKez+ZFVzM08/XOfc593RNb4GYIixtSToDSj1FcMM=";
   };
 
-  propagatedBuildInputs = [ six random2 ];
+  propagatedBuildInputs = [
+    six
+    random2
+  ];
 
   meta = with lib; {
     description = "Generates Solitaire deals";
diff --git a/pkgs/development/python-modules/pysolcast/default.nix b/pkgs/development/python-modules/pysolcast/default.nix
index 3123b1f392c68..db2df1ad97cbd 100644
--- a/pkgs/development/python-modules/pysolcast/default.nix
+++ b/pkgs/development/python-modules/pysolcast/default.nix
@@ -4,18 +4,18 @@
   buildPythonPackage,
   fetchFromGitHub,
   isodate,
+  poetry-core,
+  poetry-dynamic-versioning,
   pytestCheckHook,
   pythonOlder,
   pyyaml,
   requests,
   responses,
-  poetry-core,
-  pythonRelaxDepsHook,
 }:
 
 buildPythonPackage rec {
   pname = "pysolcast";
-  version = "2.0.2";
+  version = "2.0.6";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -24,14 +24,16 @@ buildPythonPackage rec {
     owner = "mcaulifn";
     repo = "solcast";
     rev = "refs/tags/v${version}";
-    hash = "sha256-DXJkbAlkxBjUEbziFNdr8SilB2GRUoAwvrr0HY56Deg=";
+    hash = "sha256-x91QVCDPjfC8rCVam/mrc8HP84ONa2/mJtSV64hrilc=";
   };
 
   pythonRelaxDeps = [ "responses" ];
 
-  build-system = [ poetry-core ];
+  build-system = [
+    poetry-core
+    poetry-dynamic-versioning
+  ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     anyconfig
diff --git a/pkgs/development/python-modules/pysolr/default.nix b/pkgs/development/python-modules/pysolr/default.nix
index 2a4e57154cea1..0ea9ceb5eca95 100644
--- a/pkgs/development/python-modules/pysolr/default.nix
+++ b/pkgs/development/python-modules/pysolr/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi, setuptools-scm, requests, mock }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  requests,
+  mock,
+}:
 
 buildPythonPackage rec {
   pname = "pysolr";
@@ -24,4 +31,3 @@ buildPythonPackage rec {
     license = licenses.bsd3;
   };
 }
-
diff --git a/pkgs/development/python-modules/pysoma/default.nix b/pkgs/development/python-modules/pysoma/default.nix
index ebb87a4612a1a..c27991b8ca09c 100644
--- a/pkgs/development/python-modules/pysoma/default.nix
+++ b/pkgs/development/python-modules/pysoma/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
   # Project has no test
   doCheck = false;
 
-  pythonImportsCheck = [
-    "api"
-  ];
+  pythonImportsCheck = [ "api" ];
 
   meta = with lib; {
     description = "Python wrapper for the HTTP API provided by SOMA Connect";
diff --git a/pkgs/development/python-modules/pysonos/default.nix b/pkgs/development/python-modules/pysonos/default.nix
index abb395bb12832..a95787c5444a6 100644
--- a/pkgs/development/python-modules/pysonos/default.nix
+++ b/pkgs/development/python-modules/pysonos/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy3k
-, xmltodict
-, ifaddr
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy3k,
+  xmltodict,
+  ifaddr,
+  requests,
 
   # Test dependencies
-, pytestCheckHook
-, mock
-, requests-mock
+  pytestCheckHook,
+  mock,
+  requests-mock,
 }:
 
 buildPythonPackage rec {
@@ -44,7 +45,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A SoCo fork with fixes for Home Assistant";
+    description = "SoCo fork with fixes for Home Assistant";
     homepage = "https://github.com/amelchio/pysonos";
     license = licenses.mit;
     maintainers = with maintainers; [ juaningan ];
diff --git a/pkgs/development/python-modules/pyspark/default.nix b/pkgs/development/python-modules/pyspark/default.nix
index 9763ed00cda57..7ffcf52bea8a3 100644
--- a/pkgs/development/python-modules/pyspark/default.nix
+++ b/pkgs/development/python-modules/pyspark/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, pandas
-, py4j
-, pyarrow
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  pandas,
+  py4j,
+  pyarrow,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,17 +29,22 @@ buildPythonPackage rec {
       --replace py4j== 'py4j>='
   '';
 
-  propagatedBuildInputs = [
-    py4j
-  ];
+  postFixup = ''
+    # find_python_home.py has been wrapped as a shell script
+    substituteInPlace $out/bin/find-spark-home \
+        --replace 'export SPARK_HOME=$($PYSPARK_DRIVER_PYTHON "$FIND_SPARK_HOME_PYTHON_SCRIPT")' \
+                  'export SPARK_HOME=$("$FIND_SPARK_HOME_PYTHON_SCRIPT")'
+    # patch PYTHONPATH in pyspark so that it properly looks at SPARK_HOME
+    substituteInPlace $out/bin/pyspark \
+        --replace 'export PYTHONPATH="''${SPARK_HOME}/python/:$PYTHONPATH"' \
+                  'export PYTHONPATH="''${SPARK_HOME}/..:''${SPARK_HOME}/python/:$PYTHONPATH"'
+  '';
+
+  propagatedBuildInputs = [ py4j ];
 
   passthru.optional-dependencies = {
-    ml = [
-      numpy
-    ];
-    mllib = [
-      numpy
-    ];
+    ml = [ numpy ];
+    mllib = [ numpy ];
     sql = [
       numpy
       pandas
@@ -49,9 +55,7 @@ buildPythonPackage rec {
   # Tests assume running spark instance
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyspark"
-  ];
+  pythonImportsCheck = [ "pyspark" ];
 
   meta = with lib; {
     description = "Python bindings for Apache Spark";
diff --git a/pkgs/development/python-modules/pyspcwebgw/default.nix b/pkgs/development/python-modules/pyspcwebgw/default.nix
index 8ac514d7fa5c7..7b3a607217993 100644
--- a/pkgs/development/python-modules/pyspcwebgw/default.nix
+++ b/pkgs/development/python-modules/pyspcwebgw/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, aiohttp
-, aioresponses
-, asynccmd
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  asynccmd,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-gdIrbr25GXaX26B1f7u0NKbqqnAC2tmMFZspzW6I4HI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     asynccmd
@@ -39,9 +38,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "--asyncio-mode=auto"
-  ];
+  pytestFlagsArray = [ "--asyncio-mode=auto" ];
 
   pythonImportsCheck = [ "pyspcwebgw" ];
 
diff --git a/pkgs/development/python-modules/pyspeex-noise/default.nix b/pkgs/development/python-modules/pyspeex-noise/default.nix
new file mode 100644
index 0000000000000..4db2a5f2855cf
--- /dev/null
+++ b/pkgs/development/python-modules/pyspeex-noise/default.nix
@@ -0,0 +1,43 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pybind11,
+  pytestCheckHook,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "pyspeex-noise";
+  version = "1.0.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "rhasspy";
+    repo = "pyspeex-noise";
+    rev = "refs/tags/${version}";
+    hash = "sha256-XtLA5yVVCZdpALPu3fx+U+aaA729Vs1UeOJsIm6/S+k=";
+  };
+
+  build-system = [
+    pybind11
+    setuptools
+  ];
+
+  pythonImportsCheck = [ "pyspeex_noise" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  meta = {
+    changelog = "https://github.com/rhasspy/pyspeex-noise/blob/${src.rev}/CHANGELOG.md";
+    description = "Noise suppression and automatic gain with speex";
+    homepage = "https://github.com/rhasspy/pyspeex-noise";
+    license = with lib.licenses; [
+      mit # pyspeex-noise
+      bsd3 # speex (vendored)
+    ];
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyspellchecker/default.nix b/pkgs/development/python-modules/pyspellchecker/default.nix
index ee8d980c1bb02..e1696d0382a18 100644
--- a/pkgs/development/python-modules/pyspellchecker/default.nix
+++ b/pkgs/development/python-modules/pyspellchecker/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-8IwTMj/RqMc9UqhzyvmrirPGuMEwj3iMr+FmF+8312U=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Pure python spell checking";
diff --git a/pkgs/development/python-modules/pyspf/default.nix b/pkgs/development/python-modules/pyspf/default.nix
index 3bf3a296d5655..8e69a942665f9 100644
--- a/pkgs/development/python-modules/pyspf/default.nix
+++ b/pkgs/development/python-modules/pyspf/default.nix
@@ -1,4 +1,9 @@
-{ lib, python, buildPythonPackage, fetchFromGitHub, pydns }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pydns,
+}:
 
 buildPythonPackage rec {
   pname = "pyspf";
diff --git a/pkgs/development/python-modules/pyspice/default.nix b/pkgs/development/python-modules/pyspice/default.nix
index 94fa032085c9d..c88331be6880a 100644
--- a/pkgs/development/python-modules/pyspice/default.nix
+++ b/pkgs/development/python-modules/pyspice/default.nix
@@ -1,16 +1,18 @@
-{ lib, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, libngspice
-, numpy
-, ply
-, scipy
-, pyyaml
-, cffi
-, requests
-, matplotlib
-, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  libngspice,
+  numpy,
+  ply,
+  scipy,
+  pyyaml,
+  cffi,
+  requests,
+  matplotlib,
+  setuptools,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyspiflash/default.nix b/pkgs/development/python-modules/pyspiflash/default.nix
index 24306c4893c32..eda0db8b767cb 100644
--- a/pkgs/development/python-modules/pyspiflash/default.nix
+++ b/pkgs/development/python-modules/pyspiflash/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyftdi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyftdi,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     sha256 = "0ifnw1qm4nssb03af93qw6vpa92rmyc2hisw9m4043pm9ryqcmpc";
   };
 
-  propagatedBuildInputs = [
-    pyftdi
-  ];
+  propagatedBuildInputs = [ pyftdi ];
 
   # tests are not shipped with the PyPI source
   doCheck = false;
diff --git a/pkgs/development/python-modules/pyspinel/default.nix b/pkgs/development/python-modules/pyspinel/default.nix
index c969b471e019e..7099e7e5a4e2d 100644
--- a/pkgs/development/python-modules/pyspinel/default.nix
+++ b/pkgs/development/python-modules/pyspinel/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyserial
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyserial,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     sha256 = "0s2r00zb909cq3dd28i91qbl0nz8cga3g98z84gq5jqkjpiy8269";
   };
 
-  propagatedBuildInputs = [
-    pyserial
-  ];
+  propagatedBuildInputs = [ pyserial ];
 
   # Tests are out-dated
   doCheck = false;
 
-  pythonImportsCheck = [
-    "spinel"
-  ];
+  pythonImportsCheck = [ "spinel" ];
 
   meta = with lib; {
     description = "Interface to the OpenThread Network Co-Processor (NCP)";
diff --git a/pkgs/development/python-modules/pyspnego/default.nix b/pkgs/development/python-modules/pyspnego/default.nix
index dca383ce6d9c3..992318ff06672 100644
--- a/pkgs/development/python-modules/pyspnego/default.nix
+++ b/pkgs/development/python-modules/pyspnego/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, gssapi
-, krb5
-, ruamel-yaml
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, glibcLocales
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  gssapi,
+  krb5,
+  ruamel-yaml,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  glibcLocales,
 }:
 
 buildPythonPackage rec {
@@ -26,27 +27,19 @@ buildPythonPackage rec {
     hash = "sha256-60aIRrhRynbuuFZzzBhJTlmU74CWuao8jWhr126cPrc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    cryptography
-  ];
+  propagatedBuildInputs = [ cryptography ];
 
   passthru.optional-dependencies = {
     kerberos = [
       gssapi
       krb5
     ];
-    yaml = [
-      ruamel-yaml
-    ];
+    yaml = [ ruamel-yaml ];
   };
 
-  pythonImportsCheck = [
-    "spnego"
-  ];
+  pythonImportsCheck = [ "spnego" ];
 
   nativeCheckInputs = [
     glibcLocales
diff --git a/pkgs/development/python-modules/pysptk/default.nix b/pkgs/development/python-modules/pysptk/default.nix
index 36d86db14450a..e148d8af8b06e 100644
--- a/pkgs/development/python-modules/pysptk/default.nix
+++ b/pkgs/development/python-modules/pysptk/default.nix
@@ -1,33 +1,31 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, cython
-, decorator
-, fetchPypi
-, numpy
-, pytestCheckHook
-, pythonOlder
-, scipy
-, six
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cython,
+  decorator,
+  fetchPypi,
+  numpy,
+  pythonOlder,
+  scipy,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "pysptk";
-  version = "0.2.2";
+  version = "1.0.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-QUgBA/bchWTaJ54u/ubcRfoVcDeV77wSnHOjkgfVauE=";
+    hash = "sha256-eLHJM4v3laQc3D/wP81GmcQBwyP1RjC7caGXEAeNCz8=";
   };
 
   PYSPTK_BUILD_VERSION = 0;
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
   propagatedBuildInputs = [
     decorator
@@ -39,12 +37,10 @@ buildPythonPackage rec {
   # Tests are not part of the PyPI releases
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pysptk"
-  ];
+  pythonImportsCheck = [ "pysptk" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     description = "Wrapper for Speech Signal Processing Toolkit (SPTK)";
     homepage = "https://pysptk.readthedocs.io/";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pyspx/default.nix b/pkgs/development/python-modules/pyspx/default.nix
index b8e3cb49df6fb..56f3ffcffa34d 100644
--- a/pkgs/development/python-modules/pyspx/default.nix
+++ b/pkgs/development/python-modules/pyspx/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, cffi
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  cffi,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -29,13 +30,9 @@ buildPythonPackage rec {
     wheel
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyspx"
-  ];
+  pythonImportsCheck = [ "pyspx" ];
 
   meta = with lib; {
     description = "Python bindings for SPHINCS";
diff --git a/pkgs/development/python-modules/pysqlcipher3/default.nix b/pkgs/development/python-modules/pysqlcipher3/default.nix
index 1b573628edda1..3b371ba727cff 100644
--- a/pkgs/development/python-modules/pysqlcipher3/default.nix
+++ b/pkgs/development/python-modules/pysqlcipher3/default.nix
@@ -1,12 +1,15 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder, sqlcipher }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  sqlcipher,
+}:
 
 buildPythonPackage rec {
   pname = "pysqlcipher3";
   version = "1.2.0";
   format = "setuptools";
 
-  disabled = pythonOlder "3.3";
-
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-PIAzgSZVlH6/KagJrFEGsrxpvgJ06szva1j0WAyNBsU=";
@@ -20,6 +23,6 @@ buildPythonPackage rec {
     description = "Python 3 bindings for SQLCipher";
     homepage = "https://github.com/rigglemania/pysqlcipher3/";
     license = licenses.zlib;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pysqlitecipher/default.nix b/pkgs/development/python-modules/pysqlitecipher/default.nix
index 6eaa1d13eb7d6..b1ff35671ad2a 100644
--- a/pkgs/development/python-modules/pysqlitecipher/default.nix
+++ b/pkgs/development/python-modules/pysqlitecipher/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, cryptography
-, onetimepad
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  cryptography,
+  onetimepad,
 }:
 
 buildPythonPackage rec {
@@ -31,7 +32,7 @@ buildPythonPackage rec {
 
   meta = {
     description = "Lightweight and easy to use sqlite wrapper with built-in encryption system";
-    homepage = "Ghttps://github.com/harshnative/pysqlitecipher";
+    homepage = "https://github.com/harshnative/pysqlitecipher";
     license = lib.licenses.gpl3Only;
     maintainers = with lib.maintainers; [ dotlambda ];
   };
diff --git a/pkgs/development/python-modules/pysqueezebox/default.nix b/pkgs/development/python-modules/pysqueezebox/default.nix
index 31748f890765f..06b755717601b 100644
--- a/pkgs/development/python-modules/pysqueezebox/default.nix
+++ b/pkgs/development/python-modules/pysqueezebox/default.nix
@@ -1,28 +1,34 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pysqueezebox";
-  version = "0.7.1";
-  format = "setuptools";
+  version = "0.9.2";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "rajlaud";
-    repo = pname;
+    repo = "pysqueezebox";
     rev = "refs/tags/v${version}";
-    hash = "sha256-WnL9Va3uaWlUHVBtit4v+XdYOFmPpxG91mAHEGwI+7c=";
+    hash = "sha256-gHv1dSWU0erzesneodMhCR1LQYutpDVithZ5M1lgk3I=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
+    async-timeout
     aiohttp
   ];
 
@@ -31,9 +37,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pysqueezebox"
-  ];
+  pythonImportsCheck = [ "pysqueezebox" ];
 
   disabledTests = lib.optionals (pythonAtLeast "3.12") [
     # AttributeError: 'has_calls' is not a valid assertion. Use a spec for the mock if 'has_calls' is meant to be an attribute.
@@ -48,6 +52,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Asynchronous library to control Logitech Media Server";
     homepage = "https://github.com/rajlaud/pysqueezebox";
+    changelog = "https://github.com/rajlaud/pysqueezebox/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ nyanloutre ];
   };
diff --git a/pkgs/development/python-modules/pysrim/default.nix b/pkgs/development/python-modules/pysrim/default.nix
index d00c430e3cc59..1c13452b0e558 100644
--- a/pkgs/development/python-modules/pysrim/default.nix
+++ b/pkgs/development/python-modules/pysrim/default.nix
@@ -1,15 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, pythonOlder
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  numpy,
+  pythonOlder,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
   pname = "pysrim";
   version = "0.5.10";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -20,10 +22,12 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "'pytest-runner', " ""
+      --replace-fail "'pytest-runner', " ""
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     numpy
     pyyaml
   ];
@@ -38,6 +42,6 @@ buildPythonPackage rec {
     description = "Srim Automation of Tasks via Python";
     homepage = "https://gitlab.com/costrouc/pysrim";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pysrt/default.nix b/pkgs/development/python-modules/pysrt/default.nix
index 3c62043d9e7f8..9be5028a87879 100644
--- a/pkgs/development/python-modules/pysrt/default.nix
+++ b/pkgs/development/python-modules/pysrt/default.nix
@@ -1,14 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, chardet
-, nose
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  chardet,
+  pytestCheckHook,
+  fetchpatch2,
 }:
 
 buildPythonPackage rec {
   pname = "pysrt";
   version = "1.1.2";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "byroot";
@@ -17,16 +20,22 @@ buildPythonPackage rec {
     sha256 = "1f5hxyzlh5mdvvi52qapys9qcinffr6ghgivb6k4jxa92cbs3mfg";
   };
 
-  nativeCheckInputs = [ nose ];
-  checkPhase = ''
-    nosetests -v
-  '';
+  patches = [
+    (fetchpatch2 {
+      url = "https://github.com/byroot/pysrt/commit/93f52f6d4f70f4e18dc71deeaae0ec1e9100a50f.patch?full_index=1";
+      hash = "sha256-nikMPwj3OHvl6LunAfRk6ZbFUvVgPwF696Dt8R7BY4U=";
+    })
+  ];
+
+  build-system = [ setuptools ];
 
   propagatedBuildInputs = [ chardet ];
 
+  nativeCheckInputs = [ pytestCheckHook ];
+
   meta = with lib; {
     homepage = "https://github.com/byroot/pysrt";
-    license = licenses.gpl3;
+    license = licenses.gpl3Only;
     description = "Python library used to edit or create SubRip files";
     mainProgram = "srt";
   };
diff --git a/pkgs/development/python-modules/pyssim/default.nix b/pkgs/development/python-modules/pyssim/default.nix
index e7632e67905cc..6b910b1d72072 100644
--- a/pkgs/development/python-modules/pyssim/default.nix
+++ b/pkgs/development/python-modules/pyssim/default.nix
@@ -1,11 +1,23 @@
-{ lib, buildPythonPackage, fetchFromGitHub, numpy, scipy, pillow, fetchpatch }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  scipy,
+  pillow,
+  fetchpatch,
+}:
 
 buildPythonPackage rec {
   pname = "pyssim";
   version = "0.6";
   format = "setuptools";
 
-  propagatedBuildInputs = [ numpy scipy pillow ];
+  propagatedBuildInputs = [
+    numpy
+    scipy
+    pillow
+  ];
 
   # PyPI tarball doesn't contain test images so let's use GitHub
   src = fetchFromGitHub {
diff --git a/pkgs/development/python-modules/pystac-client/default.nix b/pkgs/development/python-modules/pystac-client/default.nix
new file mode 100644
index 0000000000000..841e0f91b45e7
--- /dev/null
+++ b/pkgs/development/python-modules/pystac-client/default.nix
@@ -0,0 +1,62 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+
+  pystac,
+  pytest-benchmark,
+  pytest-console-scripts,
+  pytest-mock,
+  pytest-recording,
+  python-dateutil,
+  requests,
+  requests-mock,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "pystac-client";
+  version = "0.8.3";
+  pyproject = true;
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "stac-utils";
+    repo = "pystac-client";
+    rev = "v${version}";
+    hash = "sha256-tzfpvNtj+KkKjA75En+OwxYQWGzxHLACLkzWT2j/ThU=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    pystac
+    python-dateutil
+    requests
+  ];
+
+  nativeCheckInputs = [
+    pytest-benchmark
+    pytestCheckHook
+    pytest-console-scripts
+    pytest-mock
+    pytest-recording
+    requests-mock
+  ];
+
+  pytestFlagsArray = [
+    # Tests accessing Internet
+    "-m 'not vcr'"
+  ];
+
+  pythonImportsCheck = [ "pystac_client" ];
+
+  meta = {
+    description = "A Python client for working with STAC Catalogs and APIs";
+    homepage = "https://github.com/stac-utils/pystac-client";
+    license = lib.licenses.asl20;
+    maintainers = lib.teams.geospatial.members;
+  };
+}
diff --git a/pkgs/development/python-modules/pystac/default.nix b/pkgs/development/python-modules/pystac/default.nix
new file mode 100644
index 0000000000000..eb7f653db9de0
--- /dev/null
+++ b/pkgs/development/python-modules/pystac/default.nix
@@ -0,0 +1,53 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+
+  html5lib,
+  jsonschema,
+  pytest-cov,
+  pytest-mock,
+  pytest-recording,
+  python-dateutil,
+  requests-mock,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "pystac";
+  version = "1.10.1";
+  pyproject = true;
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "stac-utils";
+    repo = "pystac";
+    rev = "v${version}";
+    hash = "sha256-zJGDhKRX50Muo1YDEzfwypMLISnYBYKkPvUULYkUf68=";
+  };
+
+  build-system = [ setuptools ];
+
+  propagatedBuildInputs = [ python-dateutil ];
+
+  nativeCheckInputs = [
+    html5lib
+    jsonschema
+    pytestCheckHook
+    pytest-cov
+    pytest-mock
+    pytest-recording
+    requests-mock
+  ];
+
+  pythonImportsCheck = [ "pystac" ];
+
+  meta = {
+    description = "Python library for working with any SpatioTemporal Asset Catalog (STAC)";
+    homepage = "https://github.com/stac-utils/pystac";
+    license = lib.licenses.asl20;
+    maintainers = lib.teams.geospatial.members;
+  };
+}
diff --git a/pkgs/development/python-modules/pystache/default.nix b/pkgs/development/python-modules/pystache/default.nix
index 5cb51640b51db..f82f6c8e4ac2f 100644
--- a/pkgs/development/python-modules/pystache/default.nix
+++ b/pkgs/development/python-modules/pystache/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, unittestCheckHook
-, fetchPypi
-, pythonOlder
-, glibcLocales
+{
+  lib,
+  buildPythonPackage,
+  unittestCheckHook,
+  fetchPypi,
+  pythonOlder,
+  glibcLocales,
 }:
 
 buildPythonPackage rec {
@@ -20,22 +21,16 @@ buildPythonPackage rec {
 
   LC_ALL = "en_US.UTF-8";
 
-  buildInputs = [
-    glibcLocales
-  ];
+  buildInputs = [ glibcLocales ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  pythonImportsCheck = [
-    "pystache"
-  ];
+  pythonImportsCheck = [ "pystache" ];
 
   meta = with lib; {
-    description = "A framework-agnostic, logic-free templating system inspired by ctemplate and et";
+    description = "Framework-agnostic, logic-free templating system inspired by ctemplate and et";
     homepage = "https://github.com/defunkt/pystache";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pystardict/default.nix b/pkgs/development/python-modules/pystardict/default.nix
index c36dac0e7ae2e..ac890f7fdbf61 100644
--- a/pkgs/development/python-modules/pystardict/default.nix
+++ b/pkgs/development/python-modules/pystardict/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, six
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  six,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,15 +22,17 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ six ];
 
-  nativeBuildInputs = [ setuptools setuptools-scm ];
+  nativeBuildInputs = [
+    setuptools
+    setuptools-scm
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "pystardict" ];
 
   meta = with lib; {
-    description =
-      "Library for manipulating StarDict dictionaries from within Python";
+    description = "Library for manipulating StarDict dictionaries from within Python";
     homepage = "https://github.com/lig/pystardict";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ thornycrackers ];
diff --git a/pkgs/development/python-modules/pystatgrab/default.nix b/pkgs/development/python-modules/pystatgrab/default.nix
index 9ba3fb7b37851..942fe48d95b55 100644
--- a/pkgs/development/python-modules/pystatgrab/default.nix
+++ b/pkgs/development/python-modules/pystatgrab/default.nix
@@ -1,13 +1,16 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, libstatgrab
-, pkg-config
-, pythonOlder
-, setuptools
-, unittestCheckHook
-, wheel
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+  libstatgrab,
+  pkg-config,
+  pythonOlder,
+  setuptools,
+  unittestCheckHook,
+  wheel,
+  darwin,
 }:
 
 buildPythonPackage rec {
@@ -20,33 +23,34 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "libstatgrab";
     repo = "pystatgrab";
-    rev = "PYSTATGRAB_${lib.replaceStrings ["."] ["_"] version}";
+    rev = "PYSTATGRAB_${lib.replaceStrings [ "." ] [ "_" ] version}";
     hash = "sha256-0FDhkIK8jy3/SFmCzrl9l4RTeIKDjO0o5UoODx6Wnfs=";
   };
 
+  build-system = [
+    setuptools
+    wheel
+  ];
+
   nativeBuildInputs = [
     cython
     pkg-config
-    setuptools
-    wheel
   ];
 
   buildInputs = [
     libstatgrab
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin (with darwin.apple_sdk.frameworks; [ IOKit ]);
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  pythonImportsCheck = [
-    "statgrab"
-  ];
+  pythonImportsCheck = [ "statgrab" ];
 
   meta = with lib; {
     description = "Python bindings for libstatgrab";
     homepage = "https://github.com/libstatgrab/pystatgrab";
-    changelog = "https://github.com/libstatgrab/pystatgrab/blob/PYSTATGRAB_${lib.replaceStrings ["."] ["_"] version}/NEWS";
+    changelog = "https://github.com/libstatgrab/pystatgrab/blob/PYSTATGRAB_${
+      lib.replaceStrings [ "." ] [ "_" ] version
+    }/NEWS";
     license = licenses.lgpl21Only;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/pystemd/default.nix b/pkgs/development/python-modules/pystemd/default.nix
index 44251a333ed9c..86be5f000ed51 100644
--- a/pkgs/development/python-modules/pystemd/default.nix
+++ b/pkgs/development/python-modules/pystemd/default.nix
@@ -1,14 +1,14 @@
-{ stdenv
-, buildPythonPackage
-, lib
-, python
-, fetchPypi
-, systemd
-, lxml
-, psutil
-, pytest
-, mock
-, pkg-config }:
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+  systemd,
+  lxml,
+  psutil,
+  pytest,
+  mock,
+  pkg-config,
+}:
 
 buildPythonPackage rec {
   pname = "pystemd";
@@ -19,15 +19,19 @@ buildPythonPackage rec {
     hash = "sha256-Tc+ksTpVaFxJ09F8EGMeyhjDN3D2Yxb47yM3uJUcwUQ=";
   };
 
-  disabled = python.pythonOlder "3.4";
-
   buildInputs = [ systemd ];
 
   nativeBuildInputs = [ pkg-config ];
 
-  propagatedBuildInputs = [ lxml psutil ];
+  propagatedBuildInputs = [
+    lxml
+    psutil
+  ];
 
-  nativeCheckInputs = [ mock pytest ];
+  nativeCheckInputs = [
+    mock
+    pytest
+  ];
 
   checkPhase = "pytest tests";
 
diff --git a/pkgs/development/python-modules/pystemmer/default.nix b/pkgs/development/python-modules/pystemmer/default.nix
index 0c298904fdcd2..bddc42a816b0b 100644
--- a/pkgs/development/python-modules/pystemmer/default.nix
+++ b/pkgs/development/python-modules/pystemmer/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, python
-, fetchFromGitHub
-, fetchpatch2
-, buildPythonPackage
-, cython
-, setuptools
-, libstemmer
- }:
+{
+  lib,
+  python,
+  fetchFromGitHub,
+  fetchpatch2,
+  buildPythonPackage,
+  cython,
+  setuptools,
+  libstemmer,
+}:
 
 buildPythonPackage rec {
   pname = "pystemmer";
@@ -38,17 +39,11 @@ buildPythonPackage rec {
     export PYSTEMMER_SYSTEM_LIBSTEMMER="${lib.getDev libstemmer}/include"
   '';
 
-  env.NIX_CFLAGS_COMPILE = toString [
-    "-I${lib.getDev libstemmer}/include"
-  ];
+  env.NIX_CFLAGS_COMPILE = toString [ "-I${lib.getDev libstemmer}/include" ];
 
-  NIX_CFLAGS_LINK = [
-    "-L${libstemmer}/lib"
-  ];
+  NIX_CFLAGS_LINK = [ "-L${libstemmer}/lib" ];
 
-  pythonImportsCheck = [
-    "Stemmer"
-  ];
+  pythonImportsCheck = [ "Stemmer" ];
 
   checkPhase = ''
     runHook preCheck
diff --git a/pkgs/development/python-modules/pystray/default.nix b/pkgs/development/python-modules/pystray/default.nix
index a6d073dbd669d..632356001c59d 100644
--- a/pkgs/development/python-modules/pystray/default.nix
+++ b/pkgs/development/python-modules/pystray/default.nix
@@ -1,32 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pillow
-, xlib
-, six
-, xvfb-run
-, setuptools
-, gobject-introspection
-, pygobject3
-, gtk3
-, libayatana-appindicator
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pillow,
+  xlib,
+  six,
+  xvfb-run,
+  setuptools,
+  gobject-introspection,
+  pygobject3,
+  gtk3,
+  libayatana-appindicator,
+  pytest,
 }:
 
 buildPythonPackage rec {
   pname = "pystray";
-  version = "0.19.2";
-  format = "pyproject";
+  version = "0.19.5";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "moses-palmer";
     repo = "pystray";
     rev = "v${version}";
-    hash = "sha256-8B178MSe4ujlnGBmQhIu+BoAh1doP9V5cL0ermLQTvs=";
+    hash = "sha256-CZhbaXwKFrRBEomzfFPMQdMkTOl5lbgI64etfDRiRu4=";
   };
 
+  patches = [
+    # fix test_menu_construct_from_none test case
+    # https://github.com/moses-palmer/pystray/pull/133
+    (fetchpatch {
+      url = "https://github.com/moses-palmer/pystray/commit/813007e3034d950d93a2f3e5b029611c3c9c98ad.patch";
+      hash = "sha256-m2LfZcWXSfgxb73dac21VDdMDVz3evzcCz5QjdnfM1U=";
+    })
+  ];
+
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "'sphinx >=1.3.1'" ""
+      --replace-fail "'sphinx >=1.3.1'" ""
   '';
 
   nativeBuildInputs = [
@@ -44,19 +56,25 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
+    pytest
     xvfb-run
   ];
 
   checkPhase = ''
-    rm tests/icon_tests.py # test needs user input
+    runHook preCheck
+
+    xvfb-run -s '-screen 0 800x600x24' pytest tests/menu_descriptor_tests.py
 
-    xvfb-run -s '-screen 0 800x600x24' python setup.py test
+    runHook postCheck
   '';
 
   meta = with lib; {
     homepage = "https://github.com/moses-palmer/pystray";
     description = "This library allows you to create a system tray icon";
-    license = with licenses; [ gpl3Plus lgpl3Plus ];
+    license = with licenses; [
+      gpl3Plus
+      lgpl3Plus
+    ];
     platforms = platforms.linux;
     maintainers = with maintainers; [ jojosch ];
   };
diff --git a/pkgs/development/python-modules/pysubs2/default.nix b/pkgs/development/python-modules/pysubs2/default.nix
index bd17cd3695355..e03a87fffda02 100644
--- a/pkgs/development/python-modules/pysubs2/default.nix
+++ b/pkgs/development/python-modules/pysubs2/default.nix
@@ -1,39 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pysubs2";
-  version = "1.6.1";
+  version = "1.7.3";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "tkarabela";
     repo = pname;
-    rev =  version;
-    hash = "sha256-0bW9aB6ERRQK3psqeU0Siyi/8drEGisAp8UtTfOKlp0=";
+    rev = version;
+    hash = "sha256-PrpN+w/gCi7S9OmD6kbbvL9VlZEfy1DbehFTwjxsibA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pysubs2"
-  ];
+  pythonImportsCheck = [ "pysubs2" ];
 
   meta = with lib; {
     homepage = "https://github.com/tkarabela/pysubs2";
-    description = "A Python library for editing subtitle files";
+    description = "Python library for editing subtitle files";
     mainProgram = "pysubs2";
     license = licenses.mit;
-    maintainers = with maintainers; [ Benjamin-L ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pysuez/default.nix b/pkgs/development/python-modules/pysuez/default.nix
index 8af1c7ff006b4..e78c7f36d81ef 100644
--- a/pkgs/development/python-modules/pysuez/default.nix
+++ b/pkgs/development/python-modules/pysuez/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, regex
-, requests
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  regex,
+  requests,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
       --replace ", 'datetime'" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     regex
@@ -38,9 +37,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pysuez"
-  ];
+  pythonImportsCheck = [ "pysuez" ];
 
   meta = with lib; {
     description = "Module to get water consumption data from Suez";
diff --git a/pkgs/development/python-modules/pysvg-py3/default.nix b/pkgs/development/python-modules/pysvg-py3/default.nix
index 1647ce892ec9b..77d430e670527 100644
--- a/pkgs/development/python-modules/pysvg-py3/default.nix
+++ b/pkgs/development/python-modules/pysvg-py3/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, python
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  python,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pysvn/default.nix b/pkgs/development/python-modules/pysvn/default.nix
index 92d76cb06dcd7..24c75bf05e816 100644
--- a/pkgs/development/python-modules/pysvn/default.nix
+++ b/pkgs/development/python-modules/pysvn/default.nix
@@ -1,39 +1,46 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchurl
-, isPy3k
-, python
-, apr
-, aprutil
-, bash
-, e2fsprogs
-, expat
-, gcc
-, glibcLocales
-, neon
-, openssl
-, pycxx
-, subversion
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchurl,
+  python,
+  apr,
+  aprutil,
+  bash,
+  e2fsprogs,
+  expat,
+  gcc,
+  neon,
+  glibcLocales,
+  openssl,
+  pycxx,
+  subversion,
 }:
 
 buildPythonPackage rec {
   pname = "pysvn";
-  version = "1.9.20";
+  version = "1.9.22";
   format = "other";
 
   src = fetchurl {
     url = "mirror://sourceforge/project/pysvn/pysvn/V${version}/pysvn-${version}.tar.gz";
-    hash = "sha256-LbAz+KjEY3nkSJAzJNwlnSRYoWr4i1ITRUPV3ZBH7cc=";
+    hash = "sha256-KfLg9tuuKpXxJoniD002kDXGCTwOZ9jurCoPrWMRo7g=";
   };
 
-  patches = [
-    ./replace-python-first.patch
-  ];
+  patches = [ ./replace-python-first.patch ];
 
-  buildInputs = [ bash subversion apr aprutil expat neon openssl ]
-    ++ lib.optionals stdenv.isLinux [ e2fsprogs ]
-    ++ lib.optionals stdenv.isDarwin [ gcc ];
+  buildInputs =
+    [
+      bash
+      subversion
+      apr
+      aprutil
+      expat
+      neon
+      openssl
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isLinux [ e2fsprogs ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [ gcc ];
 
   preConfigure = ''
     cd Source
@@ -56,7 +63,7 @@ buildPythonPackage rec {
 
     # It is not only shebangs, some tests also write scripts dynamically
     # so it is easier to simply search and replace
-    sed -i "s|/bin/bash|${bash}/bin/bash|" ../Tests/test-*.sh
+    sed -i "s|/bin/bash|${lib.getExe bash}|" ../Tests/test-*.sh
     make -C ../Tests
 
     runHook postCheck
@@ -80,6 +87,6 @@ buildPythonPackage rec {
     license = licenses.asl20;
     maintainers = with maintainers; [ dotlambda ];
     # g++: command not found
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/pyswitchbee/default.nix b/pkgs/development/python-modules/pyswitchbee/default.nix
index 9fb94a5a05975..3d81a5b01ce60 100644
--- a/pkgs/development/python-modules/pyswitchbee/default.nix
+++ b/pkgs/development/python-modules/pyswitchbee/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, awesomeversion
-, buildPythonPackage
-, aiohttp
-, fetchFromGitHub
-, setuptools
-, pythonOlder
-, packaging
+{
+  lib,
+  awesomeversion,
+  buildPythonPackage,
+  aiohttp,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
+  packaging,
 }:
 
 buildPythonPackage rec {
   pname = "pyswitchbee";
-  version = "1.8.0";
+  version = "1.8.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.9";
@@ -19,12 +20,10 @@ buildPythonPackage rec {
     owner = "jafar-atili";
     repo = "pySwitchbee";
     rev = "refs/tags/${version}";
-    hash = "sha256-bMxWrapFX689yvC6+9NUunEtTe79+QNauFa1ZjG9ON4=";
+    hash = "sha256-at/HCY6htUz1ej09XPrb2QEyoiOWhIEpgSwJange1cU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -35,9 +34,7 @@ buildPythonPackage rec {
   # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "switchbee"
-  ];
+  pythonImportsCheck = [ "switchbee" ];
 
   meta = with lib; {
     description = "Library to control SwitchBee smart home device";
diff --git a/pkgs/development/python-modules/pyswitchbot/default.nix b/pkgs/development/python-modules/pyswitchbot/default.nix
index ad55dbc99fdfb..bb46fdeb5d370 100644
--- a/pkgs/development/python-modules/pyswitchbot/default.nix
+++ b/pkgs/development/python-modules/pyswitchbot/default.nix
@@ -1,36 +1,35 @@
-{ lib
-, bleak
-, bleak-retry-connector
-, boto3
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, pyopenssl
-, pythonOlder
-, pytestCheckHook
-, requests
-, setuptools
+{
+  lib,
+  bleak,
+  bleak-retry-connector,
+  boto3,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  pyopenssl,
+  pythonOlder,
+  pytestCheckHook,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyswitchbot";
-  version = "0.45.0";
+  version = "0.48.2";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "Danielhiversen";
     repo = "pySwitchbot";
     rev = "refs/tags/${version}";
-    hash = "sha256-lQVUHZvAZ4J0DLlUl30dSz2wwXKb9MK5prkXvub0yNI=";
+    hash = "sha256-5hoV7tM02dLrGvZ47ReVITayLFf2ceRVXOKbNa2t9iM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     bleak
     bleak-retry-connector
     boto3
@@ -39,18 +38,14 @@ buildPythonPackage rec {
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # mismatch in expected data structure
     "test_parse_advertisement_data_curtain"
   ];
 
-  pythonImportsCheck = [
-    "switchbot"
-  ];
+  pythonImportsCheck = [ "switchbot" ];
 
   meta = with lib; {
     description = "Python library to control Switchbot IoT devices";
diff --git a/pkgs/development/python-modules/pysychonaut/default.nix b/pkgs/development/python-modules/pysychonaut/default.nix
index 0962ee9b9db1c..408338cb4ef5b 100644
--- a/pkgs/development/python-modules/pysychonaut/default.nix
+++ b/pkgs/development/python-modules/pysychonaut/default.nix
@@ -1,8 +1,17 @@
-{ lib, buildPythonPackage, fetchPypi, requests, requests-cache, beautifulsoup4 }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  requests,
+  requests-cache,
+  beautifulsoup4,
+}:
 
 buildPythonPackage rec {
   pname = "pysychonaut";
   version = "0.6.0";
+  pyproject = true;
 
   src = fetchPypi {
     pname = "PySychonaut";
@@ -11,10 +20,16 @@ buildPythonPackage rec {
   };
 
   preConfigure = ''
-    substituteInPlace setup.py --replace "bs4" "beautifulsoup4"
+    substituteInPlace setup.py --replace-fail "bs4" "beautifulsoup4"
   '';
 
-  propagatedBuildInputs = [ requests requests-cache beautifulsoup4 ];
+  build-system = [ setuptools ];
+
+  dependencies = [
+    requests
+    requests-cache
+    beautifulsoup4
+  ];
 
   # No tests available
   doCheck = false;
@@ -23,7 +38,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Unofficial python api for Erowid, PsychonautWiki and AskTheCaterpillar";
     homepage = "https://github.com/OpenJarbas/PySychonaut";
-    maintainers = [ maintainers.ivar ];
+    maintainers = [ ];
     license = licenses.asl20;
   };
 }
diff --git a/pkgs/development/python-modules/pysyncobj/default.nix b/pkgs/development/python-modules/pysyncobj/default.nix
index 3909f1626dc33..33671fb433144 100644
--- a/pkgs/development/python-modules/pysyncobj/default.nix
+++ b/pkgs/development/python-modules/pysyncobj/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
   # Tests require network features
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pysyncobj"
-  ];
+  pythonImportsCheck = [ "pysyncobj" ];
 
   meta = with lib; {
     description = "Python library for replicating your class";
diff --git a/pkgs/development/python-modules/pysyncthru/default.nix b/pkgs/development/python-modules/pysyncthru/default.nix
index 568152605c77d..879c4f3388bd6 100644
--- a/pkgs/development/python-modules/pysyncthru/default.nix
+++ b/pkgs/development/python-modules/pysyncthru/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, aiohttp
-, demjson3
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  aiohttp,
+  demjson3,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,18 +24,14 @@ buildPythonPackage rec {
     hash = "sha256-Zije1WzfgIU9pT0H7T/Mx+5gEBCsRgMLkfsa/KB0YtI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
     demjson3
   ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   pythonImportsCheck = [ "pysyncthru" ];
 
diff --git a/pkgs/development/python-modules/pytabix/default.nix b/pkgs/development/python-modules/pytabix/default.nix
index 7ad01093b212b..b1508c27a08e7 100644
--- a/pkgs/development/python-modules/pytabix/default.nix
+++ b/pkgs/development/python-modules/pytabix/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, isPy3k
-, fetchPypi
-, zlib
+{
+  lib,
+  buildPythonPackage,
+  isPy3k,
+  fetchPypi,
+  zlib,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pytablewriter/default.nix b/pkgs/development/python-modules/pytablewriter/default.nix
index 8b37c75e9c24b..1b074f1b8584f 100644
--- a/pkgs/development/python-modules/pytablewriter/default.nix
+++ b/pkgs/development/python-modules/pytablewriter/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, buildPythonPackage
-, dataproperty
-, dominate
-, elasticsearch
-, fetchFromGitHub
-, loguru
-, mbstrdecoder
-, pandas
-, pathvalidate
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, setuptools
-, simplejson
-, tabledata
-, tcolorpy
-, toml
-, typepy
-, xlsxwriter
-, xlwt
+{
+  lib,
+  buildPythonPackage,
+  dataproperty,
+  dominate,
+  elasticsearch,
+  fetchFromGitHub,
+  loguru,
+  mbstrdecoder,
+  pandas,
+  pathvalidate,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  setuptools,
+  simplejson,
+  tabledata,
+  tcolorpy,
+  toml,
+  typepy,
+  xlsxwriter,
+  xlwt,
 }:
 
 buildPythonPackage rec {
@@ -35,9 +36,7 @@ buildPythonPackage rec {
     hash = "sha256-b3YzDqNATaT/FFG4/x9EGlYlhXKPvgNB2xnm0bzvLJQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     dataproperty
@@ -61,49 +60,33 @@ buildPythonPackage rec {
       xlsxwriter
       xlwt
     ];
-    es = [
-      elasticsearch
-    ];
-    es8 = [
-      elasticsearch
-    ];
+    es = [ elasticsearch ];
+    es8 = [ elasticsearch ];
     excel = [
       xlwt
       xlsxwriter
     ];
-    html = [
-      dominate
-    ];
-    logging = [
-      loguru
-    ];
+    html = [ dominate ];
+    logging = [ loguru ];
     # from = [
     #   pytablereader
     # ];
-    pandas = [
-      pandas
-    ];
+    pandas = [ pandas ];
     # sqlite = [
     #   simplesqlite
     # ];
     # theme = [
     #   pytablewriter-altrow-theme
     # ];
-    toml = [
-      toml
-    ];
-    yaml = [
-      pyyaml
-    ];
+    toml = [ toml ];
+    yaml = [ pyyaml ];
   };
 
   nativeCheckInputs = [
     pytestCheckHook
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "pathvalidate"
-  ];
+  pythonImportsCheck = [ "pathvalidate" ];
 
   disabledTests = [
     # Circular dependency
@@ -121,7 +104,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A library to write a table in various formats";
+    description = "Library to write a table in various formats";
     homepage = "https://github.com/thombashi/pytablewriter";
     changelog = "https://github.com/thombashi/pytablewriter/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pytado/default.nix b/pkgs/development/python-modules/pytado/default.nix
index 8a9a3f4cf2fa6..13e41ed77a5e0 100644
--- a/pkgs/development/python-modules/pytado/default.nix
+++ b/pkgs/development/python-modules/pytado/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, requests
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  requests,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pytado";
-  version = "0.17.5";
+  version = "0.17.6";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,24 +19,16 @@ buildPythonPackage rec {
     owner = "wmalgadey";
     repo = "PyTado";
     rev = "refs/tags/${version}";
-    hash = "sha256-FjdqZc4Zt2sLYJpnD/MAzr8Y9lGHteHB5psQqheS84I=";
+    hash = "sha256-KcYxUKQuO7TLS4YPg2mrBjP+DMnvZeJokGzwmeM/CvE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "PyTado"
-  ];
+  pythonImportsCheck = [ "PyTado" ];
 
   meta = with lib; {
     description = "Python binding for Tado web API";
@@ -43,6 +36,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/wmalgadey/PyTado";
     changelog = "https://github.com/wmalgadey/PyTado/releases/tag/${version}";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytaglib/default.nix b/pkgs/development/python-modules/pytaglib/default.nix
index e31ea59c546da..87bb086a72118 100644
--- a/pkgs/development/python-modules/pytaglib/default.nix
+++ b/pkgs/development/python-modules/pytaglib/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, taglib
-, cython
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  taglib,
+  cython,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     taglib
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "taglib"
-  ];
+  pythonImportsCheck = [ "taglib" ];
 
   meta = with lib; {
     description = "Python bindings for the Taglib audio metadata library";
diff --git a/pkgs/development/python-modules/pytankerkoenig/default.nix b/pkgs/development/python-modules/pytankerkoenig/default.nix
index 83c73a9d93d2a..67af158546972 100644
--- a/pkgs/development/python-modules/pytankerkoenig/default.nix
+++ b/pkgs/development/python-modules/pytankerkoenig/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pytap2/default.nix b/pkgs/development/python-modules/pytap2/default.nix
index d78a7b364779a..1e080f0bbad30 100644
--- a/pkgs/development/python-modules/pytap2/default.nix
+++ b/pkgs/development/python-modules/pytap2/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, nettools
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  nettools,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-GN8yFnS7HVgIP73/nVtYnwwhCBI9doGHLGSOaFiWIdw=";
   };
 
-  propagatedBuildInputs = [
-    nettools
-  ];
+  propagatedBuildInputs = [ nettools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pytap2"
-  ];
+  pythonImportsCheck = [ "pytap2" ];
 
   meta = with lib; {
     description = "Object-oriented wrapper around the Linux Tun/Tap device";
diff --git a/pkgs/development/python-modules/pytapo/default.nix b/pkgs/development/python-modules/pytapo/default.nix
index d369ace859f6b..1cc1d8f5d180e 100644
--- a/pkgs/development/python-modules/pytapo/default.nix
+++ b/pkgs/development/python-modules/pytapo/default.nix
@@ -1,37 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-
-# propagates
-, pycryptodome
-, requests
-, rtp
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pycryptodome,
+  requests,
+  rtp,
+  urllib3,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pytapo";
-  version = "3.3.19";
-  format = "setuptools";
+  version = "3.3.30";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Zm/ll6vOFW05euRgJN+SghVmMkSGQc9CVZkRu3h6AQQ=";
+    hash = "sha256-zSeDeGD/78bIoKm6B8BN4qWQE1ivNgyvnrGtgsekM3M=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     pycryptodome
     requests
     rtp
     urllib3
   ];
 
-  pythonImportsCheck = [
-    "pytapo"
-  ];
+  pythonImportsCheck = [ "pytapo" ];
 
   # Tests require actual hardware
   doCheck = false;
diff --git a/pkgs/development/python-modules/pytautulli/default.nix b/pkgs/development/python-modules/pytautulli/default.nix
index ae39788541e22..2b97ceb8fb0d4 100644
--- a/pkgs/development/python-modules/pytautulli/default.nix
+++ b/pkgs/development/python-modules/pytautulli/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -33,26 +34,18 @@ buildPythonPackage rec {
       --replace "str(self.port)" "int(self.port)"
   '';
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   checkInputs = [
     aresponses
     pytest-asyncio
   ];
 
-  pytestFlagsArray = [
-    "--asyncio-mode=auto"
-  ];
+  pytestFlagsArray = [ "--asyncio-mode=auto" ];
 
-  pythonImportsCheck = [
-    "pytautulli"
-  ];
+  pythonImportsCheck = [ "pytautulli" ];
 
   meta = with lib; {
     description = "Python module to get information from Tautulli";
diff --git a/pkgs/development/python-modules/pyte/default.nix b/pkgs/development/python-modules/pyte/default.nix
index 6968f568941ae..216b9d38b52ba 100644
--- a/pkgs/development/python-modules/pyte/default.nix
+++ b/pkgs/development/python-modules/pyte/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, wcwidth
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  wcwidth,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pytedee-async/default.nix b/pkgs/development/python-modules/pytedee-async/default.nix
index cdb89a843c139..ccf6fd94f7db6 100644
--- a/pkgs/development/python-modules/pytedee-async/default.nix
+++ b/pkgs/development/python-modules/pytedee-async/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pytedee-async";
-  version = "0.2.17";
+  version = "0.2.20";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -17,20 +18,14 @@ buildPythonPackage rec {
     owner = "zweckj";
     repo = "pytedee_async";
     rev = "refs/tags/v${version}";
-    hash = "sha256-5mCHCzoDJ6+ao2guhAtVjvPaAS6Hutn+NwaQIjWDlgo=";
+    hash = "sha256-mBE5h6oGEJ2Wzb/PCD4vwFs52tWy+YmQVA06BPVW1Kg=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    aiohttp
-  ];
+  dependencies = [ aiohttp ];
 
-  pythonImportsCheck = [
-    "pytedee_async"
-  ];
+  pythonImportsCheck = [ "pytedee_async" ];
 
   # Module has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/pytenable/default.nix b/pkgs/development/python-modules/pytenable/default.nix
index 2fba1b0b779f9..332a1b40e1c82 100644
--- a/pkgs/development/python-modules/pytenable/default.nix
+++ b/pkgs/development/python-modules/pytenable/default.nix
@@ -1,17 +1,22 @@
 {
   lib,
   buildPythonPackage,
+  cryptography,
   defusedxml,
   fetchFromGitHub,
+  gql,
+  graphql-core,
   marshmallow,
+  pytest-cov-stub,
   pytest-datafiles,
   pytest-vcr,
   pytestCheckHook,
   python-box,
   python-dateutil,
   pythonOlder,
-  requests,
   requests-pkcs12,
+  requests-toolbelt,
+  requests,
   responses,
   restfly,
   semver,
@@ -21,7 +26,7 @@
 
 buildPythonPackage rec {
   pname = "pytenable";
-  version = "1.4.22";
+  version = "1.5.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -30,23 +35,33 @@ buildPythonPackage rec {
     owner = "tenable";
     repo = "pyTenable";
     rev = "refs/tags/${version}";
-    hash = "sha256-acMafLlO0yGEnW+0XeBWUpDWvOPFAB4RK/XyAb2JbPw=";
+    hash = "sha256-SGfvaYzqJ+OsJ9sGyR3pgCbEkPondhMQMNrE/r/nIY0=";
   };
 
+  pythonRelaxDeps = [
+    "cryptography"
+    "defusedxml"
+  ];
+
   build-system = [ setuptools ];
 
   dependencies = [
     defusedxml
     marshmallow
     python-box
+    cryptography
+    gql
+    graphql-core
     python-dateutil
     requests
+    requests-toolbelt
     restfly
     semver
     typing-extensions
   ];
 
   nativeCheckInputs = [
+    pytest-cov-stub
     pytest-datafiles
     pytest-vcr
     pytestCheckHook
diff --git a/pkgs/development/python-modules/pytensor/default.nix b/pkgs/development/python-modules/pytensor/default.nix
index 5d997cab00444..328d21ebe8d2b 100644
--- a/pkgs/development/python-modules/pytensor/default.nix
+++ b/pkgs/development/python-modules/pytensor/default.nix
@@ -1,29 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cython
-, versioneer
-, cons
-, etuples
-, filelock
-, logical-unification
-, minikanren
-, numpy
-, scipy
-, typing-extensions
-, jax
-, jaxlib
-, numba
-, numba-scipy
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, tensorflow-probability
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  cython,
+  versioneer,
+
+  # dependencies
+  cons,
+  etuples,
+  filelock,
+  logical-unification,
+  minikanren,
+  numpy,
+  scipy,
+
+  # checks
+  jax,
+  jaxlib,
+  numba,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  tensorflow-probability,
+
+  nix-update-script,
 }:
 
 buildPythonPackage rec {
   pname = "pytensor";
-  version = "2.20.0";
+  version = "2.25.4";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -32,13 +39,12 @@ buildPythonPackage rec {
     owner = "pymc-devs";
     repo = "pytensor";
     rev = "refs/tags/rel-${version}";
-    hash = "sha256-bvkOMer+zYSsiU4a147eUEZjjUeTVpb9f/hepMZZ3sE=";
+    hash = "sha256-NPMUfSbujT1qHsdpCazDX2xF54HvFJkOaxHSUG/FQwM=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace "versioneer[toml]==0.28" "versioneer[toml]"
-  '';
+  pythonRelaxDeps = [
+    "scipy"
+  ];
 
   build-system = [
     cython
@@ -53,7 +59,6 @@ buildPythonPackage rec {
     minikanren
     numpy
     scipy
-    typing-extensions
   ];
 
   nativeCheckInputs = [
@@ -69,9 +74,7 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d)
   '';
 
-  pythonImportsCheck = [
-    "pytensor"
-  ];
+  pythonImportsCheck = [ "pytensor" ];
 
   disabledTests = [
     # benchmarks (require pytest-benchmark):
@@ -89,12 +92,22 @@ buildPythonPackage rec {
     "tests/sparse/sandbox/"
   ];
 
-  meta = with lib; {
+  passthru.updateScript = nix-update-script {
+    extraArgs = [
+      "--version-regex"
+      "rel-(.+)"
+    ];
+  };
+
+  meta = {
     description = "Python library to define, optimize, and efficiently evaluate mathematical expressions involving multi-dimensional arrays";
     mainProgram = "pytensor-cache";
     homepage = "https://github.com/pymc-devs/pytensor";
     changelog = "https://github.com/pymc-devs/pytensor/releases";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ bcdarwin ferrine ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [
+      bcdarwin
+      ferrine
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pytesseract/default.nix b/pkgs/development/python-modules/pytesseract/default.nix
index f6a220c02ebac..23a26fd52a1b9 100644
--- a/pkgs/development/python-modules/pytesseract/default.nix
+++ b/pkgs/development/python-modules/pytesseract/default.nix
@@ -1,12 +1,13 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, packaging
-, pillow
-, tesseract
-, substituteAll
-, pytestCheckHook
-, setuptools
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  packaging,
+  pillow,
+  tesseract,
+  substituteAll,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -28,13 +29,9 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  buildInputs = [
-    tesseract
-  ];
+  buildInputs = [ tesseract ];
 
   propagatedBuildInputs = [
     packaging
@@ -46,8 +43,8 @@ buildPythonPackage rec {
   meta = with lib; {
     homepage = "https://pypi.org/project/pytesseract/";
     license = licenses.asl20;
-    description = "A Python wrapper for Google Tesseract";
+    description = "Python wrapper for Google Tesseract";
     mainProgram = "pytesseract";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-aio/default.nix b/pkgs/development/python-modules/pytest-aio/default.nix
index ef643d765a7a9..b76cd96230d21 100644
--- a/pkgs/development/python-modules/pytest-aio/default.nix
+++ b/pkgs/development/python-modules/pytest-aio/default.nix
@@ -2,46 +2,48 @@
   lib,
   anyio,
   buildPythonPackage,
-  curio,
+  curio-compat,
   fetchFromGitHub,
   hypothesis,
   pytest,
   pytestCheckHook,
   pythonOlder,
   poetry-core,
-  sniffio,
   trio,
   trio-asyncio,
+  uvloop,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-aio";
-  version = "1.8.1";
+  version = "1.9.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "klen";
     repo = "pytest-aio";
     rev = "refs/tags/${version}";
-    hash = "sha256-MexIL9yFTzhkJ/61GgYoT54MWV8B0c1/CWkN5FVTvnw=";
+    hash = "sha256-6RxYn8/HAvXv1AEgSIEOLiaBkGgTcqQhWK+xbtxgj/o=";
   };
 
   build-system = [ poetry-core ];
 
   buildInputs = [ pytest ];
 
-  dependencies = [
+  optional-dependencies = {
+    curio = [ curio-compat ];
+    trio = [ trio ];
+    uvloop = [ uvloop ];
+  };
+
+  nativeCheckInputs = [
     anyio
-    curio
     hypothesis
-    sniffio
-    trio
+    pytestCheckHook
     trio-asyncio
-  ];
-
-  nativeCheckInputs = [ pytestCheckHook ];
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
   pythonImportsCheck = [ "pytest_aio" ];
 
diff --git a/pkgs/development/python-modules/pytest-aiohttp/default.nix b/pkgs/development/python-modules/pytest-aiohttp/default.nix
index 85dd9b7bf5375..d1eb23db0d9a6 100644
--- a/pkgs/development/python-modules/pytest-aiohttp/default.nix
+++ b/pkgs/development/python-modules/pytest-aiohttp/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, wheel
-, aiohttp
-, pytest
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  aiohttp,
+  pytest,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -31,18 +32,14 @@ buildPythonPackage rec {
     wheel
   ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   propagatedBuildInputs = [
     aiohttp
     pytest-asyncio
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     homepage = "https://github.com/aio-libs/pytest-aiohttp/";
diff --git a/pkgs/development/python-modules/pytest-annotate/default.nix b/pkgs/development/python-modules/pytest-annotate/default.nix
index 2c70cbd320f6f..31ed87e032138 100644
--- a/pkgs/development/python-modules/pytest-annotate/default.nix
+++ b/pkgs/development/python-modules/pytest-annotate/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pyannotate
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyannotate,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -16,13 +16,9 @@ buildPythonPackage rec {
     hash = "sha256-CSaTIPjSGHKCR0Nvet6W8zzz/oWEC0BjIULZ+JaMH9A=";
   };
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    pyannotate
-  ];
+  propagatedBuildInputs = [ pyannotate ];
 
   postPatch = ''
     substituteInPlace setup.py \
@@ -32,15 +28,12 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pytest_annotate"
-  ];
+  pythonImportsCheck = [ "pytest_annotate" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
     description = "Generate PyAnnotate annotations from your pytest tests";
     homepage = "https://github.com/kensho-technologies/pytest-annotate";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-ansible/default.nix b/pkgs/development/python-modules/pytest-ansible/default.nix
index b73ae05a8cce4..bc8106a999a6f 100644
--- a/pkgs/development/python-modules/pytest-ansible/default.nix
+++ b/pkgs/development/python-modules/pytest-ansible/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, stdenv
-, ansible-compat
-, ansible-core
-, buildPythonPackage
-, coreutils
-, fetchFromGitHub
-, packaging
-, pytest
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  stdenv,
+  ansible-compat,
+  ansible-core,
+  buildPythonPackage,
+  coreutils,
+  fetchFromGitHub,
+  packaging,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-ansible";
-  version = "24.1.2";
+  version = "24.9.0";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -24,69 +25,66 @@ buildPythonPackage rec {
     owner = "ansible";
     repo = "pytest-ansible";
     rev = "refs/tags/v${version}";
-    hash = "sha256-NtGk+azpSZZm9PUf6Q1Qipo/zaUH+bed7k3oFnQyKjw=";
+    hash = "sha256-OlRWtKMgcZCDCFcUl3YXzG/ERPfx2KBEaKNf0strgCU=";
   };
 
   postPatch = ''
-    substituteInPlace tests/conftest.py inventory \
-      --replace '/usr/bin/env' '${coreutils}/bin/env'
+    substituteInPlace inventory \
+      --replace-fail '/usr/bin/env' '${lib.getExe' coreutils "env"}'
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     ansible-core
     ansible-compat
     packaging
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export HOME=$TMPDIR
   '';
 
-  pytestFlagsArray = [
-    "tests/"
-  ];
+  pytestFlagsArray = [ "tests/" ];
 
-  disabledTests = [
-    # Host unreachable in the inventory
-    "test_become"
-    # [Errno -3] Temporary failure in name resolution
-    "test_connection_failure_v2"
-    "test_connection_failure_extra_inventory_v2"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # These tests fail in the Darwin sandbox
-    "test_ansible_facts"
-    "test_func"
-    "test_param_override_with_marker"
-  ];
+  disabledTests =
+    [
+      # Host unreachable in the inventory
+      "test_become"
+      # [Errno -3] Temporary failure in name resolution
+      "test_connection_failure_v2"
+      "test_connection_failure_extra_inventory_v2"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # These tests fail in the Darwin sandbox
+      "test_ansible_facts"
+      "test_func"
+      "test_param_override_with_marker"
+    ];
 
-  disabledTestPaths = [
-    # Test want s to execute pytest in a subprocess
-    "tests/integration/test_molecule.py"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # These tests fail in the Darwin sandbox
-    "tests/test_adhoc.py"
-    "tests/test_adhoc_result.py"
-  ] ++ lib.optionals (lib.versionAtLeast ansible-core.version "2.16") [
-    # Test fail in the NixOS environment
-    "tests/test_adhoc.py"
-  ];
+  disabledTestPaths =
+    [
+      # Test want s to execute pytest in a subprocess
+      "tests/integration/test_molecule.py"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # These tests fail in the Darwin sandbox
+      "tests/test_adhoc.py"
+      "tests/test_adhoc_result.py"
+    ]
+    ++ lib.optionals (lib.versionAtLeast ansible-core.version "2.16") [
+      # Test fail in the NixOS environment
+      "tests/test_adhoc.py"
+    ];
 
-  pythonImportsCheck = [
-    "pytest_ansible"
-  ];
+  pythonImportsCheck = [ "pytest_ansible" ];
 
   meta = with lib; {
     description = "Plugin for pytest to simplify calling ansible modules from tests or fixtures";
diff --git a/pkgs/development/python-modules/pytest-arraydiff/default.nix b/pkgs/development/python-modules/pytest-arraydiff/default.nix
index 2fc73552d5495..4a1912e958782 100644
--- a/pkgs/development/python-modules/pytest-arraydiff/default.nix
+++ b/pkgs/development/python-modules/pytest-arraydiff/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, pytest
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  pytest,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -16,32 +17,24 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-KTexRQ/JNWIPJHCdh9QMZ+BVoEPXuFQaJf36mU3aZ94=";
+    hash = "sha256-KTexRQ/JNWIPJHCdh9QMZ+BVoEPXuFQaJf36mU3aZ94=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   # The tests requires astropy, which itself requires pytest-arraydiff
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pytest_arraydiff"
-  ];
+  pythonImportsCheck = [ "pytest_arraydiff" ];
 
   meta = with lib; {
     description = "Pytest plugin to help with comparing array output from tests";
     homepage = "https://github.com/astrofrog/pytest-arraydiff";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-astropy-header/default.nix b/pkgs/development/python-modules/pytest-astropy-header/default.nix
index 43f2edfc30ea2..8b87d4422b579 100644
--- a/pkgs/development/python-modules/pytest-astropy-header/default.nix
+++ b/pkgs/development/python-modules/pytest-astropy-header/default.nix
@@ -1,12 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, pytest
-, pytest-cov
-, pytestCheckHook
-, numpy
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  pytestCheckHook,
+  numpy,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +18,9 @@ buildPythonPackage rec {
     sha256 = "77891101c94b75a8ca305453b879b318ab6001b370df02be2c0b6d1bb322db10";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/pytest-astropy/default.nix b/pkgs/development/python-modules/pytest-astropy/default.nix
index 33ffb661d73ed..f620e14a51b6c 100644
--- a/pkgs/development/python-modules/pytest-astropy/default.nix
+++ b/pkgs/development/python-modules/pytest-astropy/default.nix
@@ -1,20 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, attrs
-, hypothesis
-, pytest
-, pytest-arraydiff
-, pytest-astropy-header
-, pytest-cov
-, pytest-doctestplus
-, pytest-filter-subpackage
-, pytest-mock
-, pytest-openfiles
-, pytest-remotedata
-, setuptools
-, setuptools-scm
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  attrs,
+  hypothesis,
+  pytest,
+  pytest-arraydiff,
+  pytest-astropy-header,
+  pytest-cov,
+  pytest-doctestplus,
+  pytest-filter-subpackage,
+  pytest-mock,
+  pytest-remotedata,
+  setuptools,
+  setuptools-scm,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +34,7 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   propagatedBuildInputs = [
     attrs
@@ -47,7 +45,6 @@ buildPythonPackage rec {
     pytest-doctestplus
     pytest-filter-subpackage
     pytest-mock
-    pytest-openfiles
     pytest-remotedata
   ];
 
@@ -58,6 +55,6 @@ buildPythonPackage rec {
     description = "Meta-package containing dependencies for testing";
     homepage = "https://astropy.org";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-asyncio/default.nix b/pkgs/development/python-modules/pytest-asyncio/default.nix
index b7762e12175c1..78baca8da38ad 100644
--- a/pkgs/development/python-modules/pytest-asyncio/default.nix
+++ b/pkgs/development/python-modules/pytest-asyncio/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, callPackage
-, fetchFromGitHub
-, pytest
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  callPackage,
+  fetchFromGitHub,
+  pytest,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-asyncio";
-  version = "0.23.6"; # N.B.: when updating, tests bleak and aioesphomeapi tests
+  version = "0.23.8"; # N.B.: when updating, tests bleak and aioesphomeapi tests
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,7 +19,7 @@ buildPythonPackage rec {
     owner = "pytest-dev";
     repo = "pytest-asyncio";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+kyKcVzW05kqtLeC81rk3fJpOtyW3xSYshgl5gqIddE=";
+    hash = "sha256-kMv0crYuYHi1LF+VlXizZkG87kSL7xzsKq9tP9LgFVY=";
   };
 
   outputs = [
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     "testout"
   ];
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   postInstall = ''
     mkdir $testout
@@ -40,11 +37,9 @@ buildPythonPackage rec {
   '';
 
   doCheck = false;
-  passthru.tests.pytest = callPackage ./tests.nix {};
+  passthru.tests.pytest = callPackage ./tests.nix { };
 
-  pythonImportsCheck = [
-    "pytest_asyncio"
-  ];
+  pythonImportsCheck = [ "pytest_asyncio" ];
 
   meta = with lib; {
     description = "Library for testing asyncio code with pytest";
diff --git a/pkgs/development/python-modules/pytest-asyncio/tests.nix b/pkgs/development/python-modules/pytest-asyncio/tests.nix
index 7fd26c85488de..d5f8ead94cbe5 100644
--- a/pkgs/development/python-modules/pytest-asyncio/tests.nix
+++ b/pkgs/development/python-modules/pytest-asyncio/tests.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, flaky
-, hypothesis
-, pytest-asyncio
-, pytest-trio
-, pytestCheckHook
+{
+  buildPythonPackage,
+  flaky,
+  hypothesis,
+  pytest-asyncio,
+  pytest-trio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage {
@@ -17,9 +18,7 @@ buildPythonPackage {
   dontBuild = true;
   dontInstall = true;
 
-  propagatedBuildInputs = [
-    pytest-asyncio
-  ];
+  propagatedBuildInputs = [ pytest-asyncio ];
 
   nativeCheckInputs = [
     flaky
diff --git a/pkgs/development/python-modules/pytest-base-url/default.nix b/pkgs/development/python-modules/pytest-base-url/default.nix
index 1d8a3cb6396aa..d7afa906d75b6 100644
--- a/pkgs/development/python-modules/pytest-base-url/default.nix
+++ b/pkgs/development/python-modules/pytest-base-url/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, hatchling
-, hatch-vcs
-, pytest
-, pytest-localserver
-, pytest-metadata
-, requests
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  hatchling,
+  hatch-vcs,
+  pytest,
+  pytest-localserver,
+  pytest-metadata,
+  requests,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,13 +31,9 @@ buildPythonPackage rec {
     hatch-vcs
   ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -46,18 +43,14 @@ buildPythonPackage rec {
     pytest-metadata
   ];
 
-  pytestFlagsArray = [
-    "tests"
-  ];
+  pytestFlagsArray = [ "tests" ];
 
   disabledTests = [
     # should be xfail? or mocking doesn't work
     "test_url_fails"
   ];
 
-  pythonImportsCheck = [
-    "pytest_base_url"
-  ];
+  pythonImportsCheck = [ "pytest_base_url" ];
 
   meta = with lib; {
     description = "pytest plugin for URL based tests";
diff --git a/pkgs/development/python-modules/pytest-benchmark/default.nix b/pkgs/development/python-modules/pytest-benchmark/default.nix
index dc2c271371691..70dc1d0f7fb1d 100644
--- a/pkgs/development/python-modules/pytest-benchmark/default.nix
+++ b/pkgs/development/python-modules/pytest-benchmark/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, aspectlib
-, buildPythonPackage
-, elasticsearch
-, elastic-transport
-, fetchFromGitHub
-, fetchpatch
-, freezegun
-, git
-, mercurial
-, py-cpuinfo
-, pygal
-, pytest
-, pytestCheckHook
-, pytest-xdist
-, pythonOlder
-, setuptools
+{
+  lib,
+  aspectlib,
+  buildPythonPackage,
+  elasticsearch,
+  elastic-transport,
+  fetchFromGitHub,
+  fetchpatch,
+  freezegun,
+  git,
+  mercurial,
+  py-cpuinfo,
+  pygal,
+  pytest,
+  pytestCheckHook,
+  pytest-xdist,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -24,7 +25,6 @@ buildPythonPackage rec {
 
   disabled = pythonOlder "3.7";
 
-
   src = fetchFromGitHub {
     owner = "ionelmc";
     repo = pname;
@@ -49,17 +49,11 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    py-cpuinfo
-  ];
+  propagatedBuildInputs = [ py-cpuinfo ];
 
   passthru.optional-dependencies = {
     aspect = [ aspectlib ];
@@ -67,9 +61,7 @@ buildPythonPackage rec {
     elasticsearch = [ elasticsearch ];
   };
 
-  pythonImportsCheck = [
-    "pytest_benchmark"
-  ];
+  pythonImportsCheck = [ "pytest_benchmark" ];
 
   nativeCheckInputs = [
     elastic-transport
@@ -81,7 +73,8 @@ buildPythonPackage rec {
   ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
 
   pytestFlagsArray = [
-    "-W" "ignore::DeprecationWarning"
+    "-W"
+    "ignore::DeprecationWarning"
   ];
 
   preCheck = ''
diff --git a/pkgs/development/python-modules/pytest-black/default.nix b/pkgs/development/python-modules/pytest-black/default.nix
index a5fbb9874c576..f46abe031c3f3 100644
--- a/pkgs/development/python-modules/pytest-black/default.nix
+++ b/pkgs/development/python-modules/pytest-black/default.nix
@@ -1,8 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi
-, black
-, pytest
-, setuptools-scm
-, toml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  black,
+  pytest,
+  setuptools-scm,
+  toml,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +22,19 @@ buildPythonPackage rec {
 
   buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [ black toml ];
+  propagatedBuildInputs = [
+    black
+    toml
+  ];
 
   # does not contain tests
   doCheck = false;
   pythonImportsCheck = [ "pytest_black" ];
 
   meta = with lib; {
-    description = "A pytest plugin to enable format checking with black";
+    description = "Pytest plugin to enable format checking with black";
     homepage = "https://github.com/shopkeep/pytest-black";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-cases/default.nix b/pkgs/development/python-modules/pytest-cases/default.nix
index 9c89a38c1059a..8741af9da3354 100644
--- a/pkgs/development/python-modules/pytest-cases/default.nix
+++ b/pkgs/development/python-modules/pytest-cases/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, makefun
-, decopatch
-, pythonOlder
-, pytest
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  makefun,
+  decopatch,
+  pythonOlder,
+  pytest,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -20,13 +21,9 @@ buildPythonPackage rec {
     hash = "sha256-ySBUGHhHp9MNirZwn7FnCoMOThkjS+cAyFyWttcQLBY=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   propagatedBuildInputs = [
     decopatch
@@ -38,9 +35,7 @@ buildPythonPackage rec {
   # makefun, pytest-*) have circular dependencies.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pytest_cases"
-  ];
+  pythonImportsCheck = [ "pytest_cases" ];
 
   meta = with lib; {
     description = "Separate test code from test cases in pytest";
diff --git a/pkgs/development/python-modules/pytest-catchlog/default.nix b/pkgs/development/python-modules/pytest-catchlog/default.nix
index 4fbfd57fe583e..e4e2dffdbb29f 100644
--- a/pkgs/development/python-modules/pytest-catchlog/default.nix
+++ b/pkgs/development/python-modules/pytest-catchlog/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, pytest, unzip }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  unzip,
+}:
 
 buildPythonPackage rec {
   pname = "pytest-catchlog";
@@ -21,6 +27,6 @@ buildPythonPackage rec {
   meta = with lib; {
     license = licenses.mit;
     homepage = "https://pypi.python.org/pypi/pytest-catchlog/";
-    description = "py.test plugin to catch log messages. This is a fork of pytest-capturelog.";
+    description = "py.test plugin to catch log messages. This is a fork of pytest-capturelog";
   };
 }
diff --git a/pkgs/development/python-modules/pytest-celery/default.nix b/pkgs/development/python-modules/pytest-celery/default.nix
index 0af07db4ec1f8..12b7c581ab382 100644
--- a/pkgs/development/python-modules/pytest-celery/default.nix
+++ b/pkgs/development/python-modules/pytest-celery/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchFromGitHub, flit-core }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+}:
 
 buildPythonPackage rec {
   pname = "pytest-celery";
@@ -19,9 +24,7 @@ buildPythonPackage rec {
       --replace '"celery >= 4.4.0"' ""
   '';
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   # This package has nothing to test or import.
   doCheck = false;
diff --git a/pkgs/development/python-modules/pytest-check/default.nix b/pkgs/development/python-modules/pytest-check/default.nix
index efa2cc4049bc1..e73940edb312b 100644
--- a/pkgs/development/python-modules/pytest-check/default.nix
+++ b/pkgs/development/python-modules/pytest-check/default.nix
@@ -1,37 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, pytest
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  pytest,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-check";
-  version = "2.3.1";
+  version = "2.4.1";
   pyproject = true;
 
   src = fetchPypi {
     pname = "pytest_check";
     inherit version;
-    hash = "sha256-UbjxiozKpCbF2RPE4ORvAUqqdXlIHqA9Itfh9Jj2ibI=";
+    hash = "sha256-UiTvzvBZv38M2iU/jQ9icEtIGf9IyT9RxnWupqAU9lA=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pytest_check"
-  ];
+  pythonImportsCheck = [ "pytest_check" ];
 
   meta = with lib; {
     description = "pytest plugin allowing multiple failures per test";
diff --git a/pkgs/development/python-modules/pytest-cid/default.nix b/pkgs/development/python-modules/pytest-cid/default.nix
index eea7a6ead0ee5..b73648e2a673a 100644
--- a/pkgs/development/python-modules/pytest-cid/default.nix
+++ b/pkgs/development/python-modules/pytest-cid/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
-, flit-core
-, py-cid
-, pytestCheckHook
-, pytest-cov
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  flit-core,
+  py-cid,
+  pytestCheckHook,
+  pytest-cov,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,9 @@ buildPythonPackage rec {
       --replace "pytest >= 5.0, < 7.0" "pytest >= 5.0"
   '';
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    py-cid
-  ];
+  propagatedBuildInputs = [ py-cid ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -43,7 +40,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/ntninja/pytest-cid";
-    description = "A simple wrapper around py-cid for easily writing tests involving CIDs in datastructures";
+    description = "Simple wrapper around py-cid for easily writing tests involving CIDs in datastructures";
     license = licenses.mpl20;
     maintainers = with maintainers; [ Luflosi ];
   };
diff --git a/pkgs/development/python-modules/pytest-click/default.nix b/pkgs/development/python-modules/pytest-click/default.nix
index eaf81fa468db8..2a970b16e7e02 100644
--- a/pkgs/development/python-modules/pytest-click/default.nix
+++ b/pkgs/development/python-modules/pytest-click/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytest
-, click
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytest,
+  click,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
 
   buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    click
-  ];
+  propagatedBuildInputs = [ click ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
@@ -33,6 +32,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Stranger6667/pytest-click";
     changelog = "https://github.com/Stranger6667/pytest-click/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-console-scripts/default.nix b/pkgs/development/python-modules/pytest-console-scripts/default.nix
index 81b31c256cfdf..e3f63c4686f04 100644
--- a/pkgs/development/python-modules/pytest-console-scripts/default.nix
+++ b/pkgs/development/python-modules/pytest-console-scripts/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, mock
-, fetchPypi
-, pytestCheckHook
-, python
-, pythonOlder
-, setuptools-scm
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  mock,
+  fetchPypi,
+  pytestCheckHook,
+  python,
+  pythonOlder,
+  setuptools-scm,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,13 +22,9 @@ buildPythonPackage rec {
     hash = "sha256-WoJu2EzAr6IC655EOB19di973ajgwj+feafx9Ez0qJU=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  propagatedBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     mock
@@ -40,9 +37,7 @@ buildPythonPackage rec {
       --replace "#!/usr/bin/env python" "#!${python.interpreter}"
   '';
 
-  pythonImportsCheck = [
-    "pytest_console_scripts"
-  ];
+  pythonImportsCheck = [ "pytest_console_scripts" ];
 
   meta = with lib; {
     description = "Pytest plugin for testing console scripts";
@@ -52,6 +47,6 @@ buildPythonPackage rec {
     '';
     homepage = "https://github.com/kvas-it/pytest-console-scripts";
     license = licenses.mit;
-    maintainers = with maintainers; [ AluisioASG ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-cov-stub/default.nix b/pkgs/development/python-modules/pytest-cov-stub/default.nix
new file mode 100644
index 0000000000000..1a177559f3190
--- /dev/null
+++ b/pkgs/development/python-modules/pytest-cov-stub/default.nix
@@ -0,0 +1,22 @@
+{
+  lib,
+  buildPythonPackage,
+  hatchling,
+}:
+
+buildPythonPackage rec {
+  pname = "pytest-cov-stub";
+  # please use pythonRemoveDeps rather than change this version
+  version = (lib.importTOML ./src/pyproject.toml).project.version;
+  pyproject = true;
+
+  src = ./src;
+
+  build-system = [ hatchling ];
+
+  meta = with lib; {
+    description = "Nixpkgs checkPhase stub for pytest-cov";
+    license = licenses.mit;
+    maintainers = [ lib.maintainers.pbsds ];
+  };
+}
diff --git a/pkgs/development/python-modules/pytest-cov-stub/src/pyproject.toml b/pkgs/development/python-modules/pytest-cov-stub/src/pyproject.toml
new file mode 100644
index 0000000000000..1f356aa7f9963
--- /dev/null
+++ b/pkgs/development/python-modules/pytest-cov-stub/src/pyproject.toml
@@ -0,0 +1,13 @@
+[build-system]
+requires = ["hatchling"]
+build-backend = "hatchling.build"
+
+[project]
+name = "pytest-cov-nixpkgs-stub"
+version = "1.0.0"
+
+[tool.hatch.build.targets.wheel]
+packages = ["pytest_cov"]
+
+[project.entry-points.pytest11]
+pytest_cov = "pytest_cov.plugin"
diff --git a/pkgs/development/python-modules/pytest-cov-stub/src/pytest_cov/__init__.py b/pkgs/development/python-modules/pytest-cov-stub/src/pytest_cov/__init__.py
new file mode 100644
index 0000000000000..e69de29bb2d1d
--- /dev/null
+++ b/pkgs/development/python-modules/pytest-cov-stub/src/pytest_cov/__init__.py
diff --git a/pkgs/development/python-modules/pytest-cov-stub/src/pytest_cov/plugin.py b/pkgs/development/python-modules/pytest-cov-stub/src/pytest_cov/plugin.py
new file mode 100644
index 0000000000000..d03f4d1f7a882
--- /dev/null
+++ b/pkgs/development/python-modules/pytest-cov-stub/src/pytest_cov/plugin.py
@@ -0,0 +1,93 @@
+import argparse
+import pytest
+
+class CoverageError(Exception):
+    pass
+
+class PytestCovWarning(pytest.PytestWarning):
+    pass
+
+class CovDisabledWarning(PytestCovWarning):
+    pass
+
+class CovReportWarning(PytestCovWarning):
+    pass
+
+class StoreReport(argparse.Action):
+    def __call__(self, parser, namespace, values, option_string=None):
+        report_type, file = values
+        namespace.cov_report[report_type] = file
+
+def pytest_addoption(parser):
+    group = parser.getgroup('cov', 'coverage reporting')
+    group.addoption(
+        '--cov',
+        action='append',
+        default=[],
+        metavar='SOURCE',
+        nargs='?',
+        const=True,
+        dest='cov_source',
+    )
+    group.addoption(
+        '--cov-reset',
+        action='store_const',
+        const=[],
+        dest='cov_source',
+    )
+    group.addoption(
+        '--cov-report',
+        action=StoreReport,
+        default={},
+        metavar='TYPE',
+        type=lambda x: x.split(":", 1) if ":" in x else (x, None),
+    )
+    group.addoption(
+        '--cov-config',
+        action='store',
+        default='.coveragerc',
+        metavar='PATH',
+    )
+    group.addoption(
+        '--no-cov-on-fail',
+        action='store_true',
+        default=False,
+    )
+    group.addoption(
+        '--no-cov',
+        action='store_true',
+        default=False,
+    )
+    group.addoption(
+        '--cov-fail-under',
+        action='store',
+        metavar='MIN',
+        type=str,
+    )
+    group.addoption(
+        '--cov-append',
+        action='store_true',
+        default=False,
+    )
+    group.addoption(
+        '--cov-branch',
+        action='store_true',
+        default=None,
+    )
+    group.addoption(
+        '--cov-context',
+        action='store',
+        metavar='CONTEXT',
+        type=str,
+    )
+
+def pytest_configure(config):
+    config.addinivalue_line('markers', 'no_cover: disable coverage for this test.')
+
+@pytest.fixture
+def no_cover():
+    pass
+
+@pytest.fixture
+def cov():
+    pass
diff --git a/pkgs/development/python-modules/pytest-cov/default.nix b/pkgs/development/python-modules/pytest-cov/default.nix
index 08ab3e4d10343..07f162465f9eb 100644
--- a/pkgs/development/python-modules/pytest-cov/default.nix
+++ b/pkgs/development/python-modules/pytest-cov/default.nix
@@ -1,25 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, coverage
-, toml
-, tomli
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  coverage,
+  toml,
+  tomli,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-cov";
-  version = "4.1.0";
+  version = "5.0.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-OQSxPfv+xH8AO453/VtYnNEZBKId3xqzimTyBNahDvY=";
+    hash = "sha256-WDe1jp9uvTNbD4Bg7szmm2YkFbFtxQOIOgL0Xf6xSFc=";
   };
 
   buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [ coverage toml tomli ];
+  propagatedBuildInputs = [
+    coverage
+    toml
+    tomli
+  ];
 
   # xdist related tests fail with the following error
   # OSError: [Errno 13] Permission denied: 'py/_code'
diff --git a/pkgs/development/python-modules/pytest-cram/default.nix b/pkgs/development/python-modules/pytest-cram/default.nix
index 7aa58096f1bf7..674566e2301e6 100644
--- a/pkgs/development/python-modules/pytest-cram/default.nix
+++ b/pkgs/development/python-modules/pytest-cram/default.nix
@@ -1,12 +1,21 @@
-{ lib, buildPythonPackage, fetchPypi, pytest, cram, bash }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonAtLeast,
+  setuptools,
+  pytest_7,
+  cram,
+  bash,
+}:
 
 buildPythonPackage rec {
-  version = "0.2.2";
-  format = "setuptools";
   pname = "pytest-cram";
+  version = "0.2.2";
+  pyproject = true;
 
-  nativeCheckInputs = [ pytest ];
-  propagatedBuildInputs = [ cram ];
+  # relies on the imp module
+  disabled = pythonAtLeast "3.12";
 
   src = fetchPypi {
     inherit pname version;
@@ -19,6 +28,13 @@ buildPythonPackage rec {
       --replace "/bin/bash" "${bash}/bin/bash"
   '';
 
+  build-system = [ setuptools ];
+
+  dependencies = [ cram ];
+
+  # https://github.com/tbekolay/pytest-cram/issues/15
+  nativeCheckInputs = [ pytest_7 ];
+
   # Remove __init__.py from tests folder, otherwise pytest raises an error that
   # the imported and collected modules are different.
   checkPhase = ''
diff --git a/pkgs/development/python-modules/pytest-datadir/default.nix b/pkgs/development/python-modules/pytest-datadir/default.nix
index 4adaee73ceaee..3c241457449fa 100644
--- a/pkgs/development/python-modules/pytest-datadir/default.nix
+++ b/pkgs/development/python-modules/pytest-datadir/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pytest-datafiles/default.nix b/pkgs/development/python-modules/pytest-datafiles/default.nix
index 314231942089f..2d98d9cfb2806 100644
--- a/pkgs/development/python-modules/pytest-datafiles/default.nix
+++ b/pkgs/development/python-modules/pytest-datafiles/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, py
-, pytest
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  py,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,18 +27,14 @@ buildPythonPackage rec {
     pytest
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pytest_datafiles"
-  ];
+  pythonImportsCheck = [ "pytest_datafiles" ];
 
   meta = with lib; {
     description = "Pytest plugin to create a tmpdir containing predefined files/directories";
     homepage = "https://github.com/omarkohl/pytest-datafiles";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-dependency/default.nix b/pkgs/development/python-modules/pytest-dependency/default.nix
index 7ca70a0f4fc7d..e4409590a971c 100644
--- a/pkgs/development/python-modules/pytest-dependency/default.nix
+++ b/pkgs/development/python-modules/pytest-dependency/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -16,21 +17,13 @@ buildPythonPackage rec {
     hash = "sha256-k0sOajnZWZUGLBk/fq7tio/6Bv8bzvS2Kw3HSnCLrME=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pytest_dependency"
-  ];
+  pythonImportsCheck = [ "pytest_dependency" ];
 
   meta = with lib; {
     homepage = "https://github.com/RKrahl/pytest-dependency";
diff --git a/pkgs/development/python-modules/pytest-describe/default.nix b/pkgs/development/python-modules/pytest-describe/default.nix
index c1118327734c8..6ce782c442004 100644
--- a/pkgs/development/python-modules/pytest-describe/default.nix
+++ b/pkgs/development/python-modules/pytest-describe/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build
-, pytest
+  # build
+  pytest,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 let
@@ -22,13 +23,9 @@ buildPythonPackage {
     hash = "sha256-ObsF65DySX2co0Lvmgt/pbraflhQWuwz9m1mHWMZVbc=";
   };
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Describe-style plugin for the pytest framework";
diff --git a/pkgs/development/python-modules/pytest-django/default.nix b/pkgs/development/python-modules/pytest-django/default.nix
index af7169bffc607..71e6e66c5b5b1 100644
--- a/pkgs/development/python-modules/pytest-django/default.nix
+++ b/pkgs/development/python-modules/pytest-django/default.nix
@@ -1,12 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, django
-, setuptools
-, setuptools-scm
-, django-configurations
-, pytest
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  django,
+  setuptools,
+  setuptools-scm,
+  django-configurations,
+  pytest,
+  pytest-xdist,
+  pytestCheckHook,
 }:
 buildPythonPackage rec {
   pname = "pytest-django";
@@ -18,21 +20,18 @@ buildPythonPackage rec {
     hash = "sha256-XQVP4BHFbzsQ+Xj0Go77Llrfx+aA7zb7VxraHyR3nZA=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    django
-  ];
+  dependencies = [ django ];
 
   nativeCheckInputs = [
     django-configurations
+    pytest-xdist
     pytestCheckHook
   ];
 
@@ -52,7 +51,8 @@ buildPythonPackage rec {
   __darwinAllowLocalNetworking = true;
 
   meta = with lib; {
-    description = "py.test plugin for testing of Django applications";
+    changelog = "https://github.com/pytest-dev/pytest-django/blob/v${version}/docs/changelog.rst";
+    description = "Pytest plugin for testing of Django applications";
     homepage = "https://pytest-django.readthedocs.org/en/latest/";
     license = licenses.bsd3;
   };
diff --git a/pkgs/development/python-modules/pytest-docker-tools/default.nix b/pkgs/development/python-modules/pytest-docker-tools/default.nix
new file mode 100644
index 0000000000000..59a98ad271526
--- /dev/null
+++ b/pkgs/development/python-modules/pytest-docker-tools/default.nix
@@ -0,0 +1,54 @@
+{
+  lib,
+  buildPythonPackage,
+  docker,
+  fetchFromGitHub,
+  fetchpatch,
+  poetry-core,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "pytest-docker-tools";
+  version = "3.1.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "Jc2k";
+    repo = "pytest-docker-tools";
+    rev = "refs/tags/${version}";
+    hash = "sha256-6F3aSUyDlBBYG1kwOQvey7rujDdK83uJ3Q1dr8Uo1pw=";
+  };
+
+  patches = [
+    # Switch to poetry-core, https://github.com/Jc2k/pytest-docker-tools/pull/48
+    (fetchpatch {
+      name = "switch-poetry-core.patch";
+      url = "https://github.com/Jc2k/pytest-docker-tools/pull/48/commits/a655e4a32b075e06e89dd907b06bc4ad90703988.patch";
+      hash = "sha256-CwCBld7p+bqBfxV9IyxcCvfxXfnUSzCLF2m0ZduIqkU=";
+    })
+  ];
+
+  build-system = [ poetry-core ];
+
+  buildInputs = [ pytest ];
+
+  dependencies = [ docker ];
+
+  # Tests require a Docker setup
+  doCheck = false;
+
+  pythonImportsCheck = [ "pytest_docker_tools" ];
+
+  meta = with lib; {
+    description = "Opionated helpers for creating py.test fixtures for Docker integration and smoke testing environments";
+    homepage = "https://github.com/Jc2k/pytest-docker-tools";
+    changelog = "https://github.com/Jc2k/pytest-docker-tools/releases/tag/${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pytest-doctestplus/default.nix b/pkgs/development/python-modules/pytest-doctestplus/default.nix
index ff5e1b0ef2b67..64aae4d60ad20 100644
--- a/pkgs/development/python-modules/pytest-doctestplus/default.nix
+++ b/pkgs/development/python-modules/pytest-doctestplus/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, gitMinimal
-, numpy
-, packaging
-, pytest
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  gitMinimal,
+  numpy,
+  packaging,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -28,13 +29,9 @@ buildPythonPackage rec {
       --replace-fail '"git"' '"${lib.getExe gitMinimal}"'
   '';
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   propagatedBuildInputs = [
     packaging
@@ -61,6 +58,6 @@ buildPythonPackage rec {
     description = "Pytest plugin with advanced doctest features";
     homepage = "https://astropy.org";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-dotenv/default.nix b/pkgs/development/python-modules/pytest-dotenv/default.nix
index 9f045315f6d13..7f9a678468b8b 100644
--- a/pkgs/development/python-modules/pytest-dotenv/default.nix
+++ b/pkgs/development/python-modules/pytest-dotenv/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, pytest, python-dotenv }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  python-dotenv,
+}:
 
 buildPythonPackage rec {
   pname = "pytest-dotenv";
@@ -16,7 +22,7 @@ buildPythonPackage rec {
   nativeCheckInputs = [ pytest ];
 
   meta = with lib; {
-    description = "A pytest plugin that parses environment files before running tests";
+    description = "Pytest plugin that parses environment files before running tests";
     homepage = "https://github.com/quiqua/pytest-dotenv";
     license = licenses.mit;
     maintainers = with maintainers; [ cleeyv ];
diff --git a/pkgs/development/python-modules/pytest-emoji/default.nix b/pkgs/development/python-modules/pytest-emoji/default.nix
index 1700c34fb37a6..ef490315240c1 100644
--- a/pkgs/development/python-modules/pytest-emoji/default.nix
+++ b/pkgs/development/python-modules/pytest-emoji/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-GuKBbIIODDnMi9YMX3zR4Jc3cbK+Zibj1ZeWvYkUY24=";
   };
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pytest_emoji"
-  ];
+  pythonImportsCheck = [ "pytest_emoji" ];
 
   disabledTests = [
     # Test scompare CLI output
@@ -40,7 +35,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A pytest plugin that adds emojis to test result report";
+    description = "Pytest plugin that adds emojis to test result report";
     homepage = "https://github.com/hackebrot/pytest-emoji";
     changelog = "https://github.com/hackebrot/pytest-emoji/releases/tag/0.2.0";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pytest-env/default.nix b/pkgs/development/python-modules/pytest-env/default.nix
index c5589f1cccd4b..c013b583a0123 100644
--- a/pkgs/development/python-modules/pytest-env/default.nix
+++ b/pkgs/development/python-modules/pytest-env/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatch-vcs
-, hatchling
-, pytest
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatch-vcs,
+  hatchling,
+  pytest,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,9 @@ buildPythonPackage rec {
     hatchling
   ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Pytest plugin used to set environment variables";
diff --git a/pkgs/development/python-modules/pytest-error-for-skips/default.nix b/pkgs/development/python-modules/pytest-error-for-skips/default.nix
index 574e36c11970d..594c16c4a87ff 100644
--- a/pkgs/development/python-modules/pytest-error-for-skips/default.nix
+++ b/pkgs/development/python-modules/pytest-error-for-skips/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pytest-examples/default.nix b/pkgs/development/python-modules/pytest-examples/default.nix
index 03df14e8c7b96..fe4489dcf0ecc 100644
--- a/pkgs/development/python-modules/pytest-examples/default.nix
+++ b/pkgs/development/python-modules/pytest-examples/default.nix
@@ -1,83 +1,54 @@
-{ lib
-, black
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, hatchling
-, pytest
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, ruff
+{
+  lib,
+  black,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
+  ruff,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-examples";
-  version = "0.0.10";
-  format = "pyproject";
+  version = "0.0.13";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "pydantic";
     repo = "pytest-examples";
     rev = "refs/tags/v${version}";
-    hash = "sha256-jCxOGDJlFkMH9VtaaPsE5zt+p3Z/mrVzhdNSI51/nVM=";
+    hash = "sha256-R0gSWQEGMkJhkeXImyris2wzqjJ0hC3zO0voEdhWLoY=";
   };
 
-  patches = [
-    (fetchpatch {
-      url = "https://github.com/pydantic/pytest-examples/commit/551ba911713c2859caabc91b664723dd6bc800c5.patch";
-      hash = "sha256-Y3OU4fNyLADhBQGwX2jY0gagVV2q2dcn3kJRLUyCtZI=";
-    })
-    (fetchpatch {
-      url = "https://github.com/pydantic/pytest-examples/commit/3bef5d644fe3fdb076270833768e4c6df9148530.patch";
-      hash = "sha256-pf+WKzZNqgjbJiblMMLHWk23kjg4W9nm+KBmC8rG8Lw=";
-    })
-  ];
-
   postPatch = ''
     # ruff binary is used directly, the ruff Python package is not needed
     substituteInPlace pytest_examples/lint.py \
-      --replace "'ruff'" "'${ruff}/bin/ruff'"
+      --replace-fail "'ruff'" "'${lib.getExe ruff}'"
   '';
 
-  pythonRemoveDeps = [
-    "ruff"
-  ];
+  pythonRemoveDeps = [ "ruff" ];
 
-  nativeBuildInputs = [
+  build-system = [
     hatchling
-    pythonRelaxDepsHook
   ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    black
-  ];
+  dependencies = [ black ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-
-  pythonImportsCheck = [
-    "pytest_examples"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = [
-    # Test fails with latest ruff v0.1.2
-    # See https://github.com/pydantic/pytest-examples/issues/26
-    "test_ruff_error"
-  ];
+  pythonImportsCheck = [ "pytest_examples" ];
 
-  meta = with lib; {
+  meta = {
     description = "Pytest plugin for testing examples in docstrings and markdown files";
     homepage = "https://github.com/pydantic/pytest-examples";
     changelog = "https://github.com/pydantic/pytest-examples/releases/tag/v${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ fab ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-expect/default.nix b/pkgs/development/python-modules/pytest-expect/default.nix
index df5376e310e74..0a8211cdb2dd3 100644
--- a/pkgs/development/python-modules/pytest-expect/default.nix
+++ b/pkgs/development/python-modules/pytest-expect/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
-, pytest
-, u-msgpack-python
-, six
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+  pytest,
+  u-msgpack-python,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +18,10 @@ buildPythonPackage rec {
   };
 
   buildInputs = [ pytest ];
-  propagatedBuildInputs = [ u-msgpack-python six ];
+  propagatedBuildInputs = [
+    u-msgpack-python
+    six
+  ];
 
   # Tests in neither the archive nor the repo
   doCheck = false;
diff --git a/pkgs/development/python-modules/pytest-factoryboy/default.nix b/pkgs/development/python-modules/pytest-factoryboy/default.nix
index c1a89dbe012e9..5b10967a0b00b 100644
--- a/pkgs/development/python-modules/pytest-factoryboy/default.nix
+++ b/pkgs/development/python-modules/pytest-factoryboy/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, poetry-core
+  # build-system
+  poetry-core,
 
-# unpropagated
-, pytest
+  # unpropagated
+  pytest,
 
-# propagated
-, inflection
-, factory-boy
-, typing-extensions
+  # propagated
+  inflection,
+  factory-boy,
+  typing-extensions,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -29,13 +30,9 @@ buildPythonPackage rec {
     sha256 = "sha256-GYqYwtbmMWVqImVPPBbZNRJJGcbksUPsIbi6QuPRMco=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   propagatedBuildInputs = [
     factory-boy
@@ -43,17 +40,11 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  pythonImportsCheck = [
-    "pytest_factoryboy"
-  ];
+  pythonImportsCheck = [ "pytest_factoryboy" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "--ignore=docs"
-  ];
+  pytestFlagsArray = [ "--ignore=docs" ];
 
   meta = with lib; {
     description = "Integration of factory_boy into the pytest runner";
diff --git a/pkgs/development/python-modules/pytest-filter-subpackage/default.nix b/pkgs/development/python-modules/pytest-filter-subpackage/default.nix
index af173182f3132..9908c3b2b4ff5 100644
--- a/pkgs/development/python-modules/pytest-filter-subpackage/default.nix
+++ b/pkgs/development/python-modules/pytest-filter-subpackage/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, pytest-cov
-, pytest-doctestplus
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  pytest-cov,
+  pytest-doctestplus,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -21,33 +22,25 @@ buildPythonPackage rec {
     hash = "sha256-P0aPGzZRgSiGm5Xeq2YbpF7WKThUMp/vFNpMjKx4r1Y=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   propagatedBuildInputs = [
     pytest-doctestplus
     pytest-cov
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # missing some files
-  disabledTests = [
-    "with_rst"
-  ];
+  disabledTests = [ "with_rst" ];
 
   meta = with lib; {
     description = "Meta-package containing dependencies for testing";
     homepage = "https://github.com/astropy/pytest-filter-subpackage";
     changelog = "https://github.com/astropy/pytest-filter-subpackage/blob/v${version}/CHANGES.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-fixture-config/default.nix b/pkgs/development/python-modules/pytest-fixture-config/default.nix
index 31ab985dbff2d..3c94e6de6c98f 100644
--- a/pkgs/development/python-modules/pytest-fixture-config/default.nix
+++ b/pkgs/development/python-modules/pytest-fixture-config/default.nix
@@ -1,24 +1,41 @@
-{ lib, buildPythonPackage, fetchPypi
-, setuptools-git, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-git,
+  pytest,
+}:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "pytest-fixture-config";
-  version = "1.7.0";
-  format = "setuptools";
+  version = "1.7.1-unstable-2022-10-03";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "13i1qpz22w3x4dmw8vih5jdnbqfqvl7jiqs0dg764s0zf8bp98a1";
+  src = fetchFromGitHub {
+    owner = "man-group";
+    repo = "pytest-plugins";
+    rev = "5f9b88a65a8c1e506885352bbd9b2a47900f5014";
+    hash = "sha256-huN3RzwtfVf4iMJ96VRP/ldOxTUlUMF1wJIdbcGXHn4=";
   };
 
-  nativeBuildInputs = [ setuptools-git ];
+  patches = [ ./setuptools-72.0-compat.patch ];
+
+  postPatch = ''
+    cd pytest-fixture-config
+  '';
+
+  nativeBuildInputs = [
+    setuptools
+    setuptools-git
+  ];
 
   buildInputs = [ pytest ];
 
   doCheck = false;
 
   meta = with lib; {
-    description = "Simple configuration objects for Py.test fixtures. Allows you to skip tests when their required config variables aren’t set.";
+    description = "Simple configuration objects for Py.test fixtures. Allows you to skip tests when their required config variables aren’t set";
     homepage = "https://github.com/manahl/pytest-plugins";
     license = licenses.mit;
     maintainers = with maintainers; [ ryansydnor ];
diff --git a/pkgs/development/python-modules/pytest-fixture-config/setuptools-72.0-compat.patch b/pkgs/development/python-modules/pytest-fixture-config/setuptools-72.0-compat.patch
new file mode 100644
index 0000000000000..d44180e5957da
--- /dev/null
+++ b/pkgs/development/python-modules/pytest-fixture-config/setuptools-72.0-compat.patch
@@ -0,0 +1,396 @@
+diff --git a/common_setup.py b/common_setup.py
+index 002952b..11ca9c9 100644
+--- a/common_setup.py
++++ b/common_setup.py
+@@ -1,45 +1,5 @@
+ # Common setup.py code shared between all the projects in this repository
+-import sys
+ import os
+-import logging
+-
+-from setuptools.command.test import test as TestCommand
+-from setuptools.command.egg_info import egg_info as EggInfoCommand
+-
+-
+-class PyTest(TestCommand):
+-    pytest_args = []
+-    src_dir = None
+-
+-    def initialize_options(self):
+-        TestCommand.initialize_options(self)
+-
+-    def finalize_options(self):
+-        TestCommand.finalize_options(self)
+-        self.test_args = []
+-        self.test_suite = True
+-
+-    def run_tests(self):
+-        global pytest_args
+-        logging.basicConfig(format='%(asctime)s %(levelname)s %(name)s %(message)s', level='DEBUG')
+-
+-        # import here, cause outside the eggs aren't loaded
+-        import pytest
+-
+-        self.pytest_args.extend(['--junitxml', 'junit.xml'])
+-        errno = pytest.main(self.pytest_args)
+-        sys.exit(errno)
+-
+-
+-class EggInfo(EggInfoCommand):
+-    """ Customisation of the package metadata creation. Changes are:
+-         - Save the test requirements into an extra called 'tests'
+-    """
+-    def run(self):
+-        if self.distribution.extras_require is None:
+-            self.distribution.extras_require = {}
+-        self.distribution.extras_require['tests'] = self.distribution.tests_require
+-        EggInfoCommand.run(self)
+ 
+ 
+ def common_setup(src_dir):
+@@ -57,13 +17,6 @@ def common_setup(src_dir):
+         long_description = open(readme_file).read()
+         changelog = open(changelog_file).read()
+ 
+-    # Gather trailing arguments for pytest, this can't be done using setuptools' api
+-    if 'test' in sys.argv:
+-        PyTest.pytest_args = sys.argv[sys.argv.index('test') + 1:]
+-        if PyTest.pytest_args:
+-            sys.argv = sys.argv[:-len(PyTest.pytest_args)]
+-    PyTest.src_dir = src_dir
+-
+     return dict(
+             # Version is shared between all the projects in this repo
+             version=open(version_file).read().strip(),
+@@ -71,6 +24,5 @@ def common_setup(src_dir):
+             url='https://github.com/manahl/pytest-plugins',
+             license='MIT license',
+             platforms=['unix', 'linux'],
+-            cmdclass={'test': PyTest, 'egg_info': EggInfo},
+             include_package_data=True
+             )
+diff --git a/pytest-devpi-server/setup.py b/pytest-devpi-server/setup.py
+index 8891130..22b460f 100644
+--- a/pytest-devpi-server/setup.py
++++ b/pytest-devpi-server/setup.py
+@@ -27,8 +27,6 @@ install_requires = ['pytest-server-fixtures',
+                     'ruamel.yaml>=0.15;python_version > "3.4"',
+                     ]
+ 
+-tests_require = []
+-
+ entry_points = {
+     'pytest11': [
+         'devpi_server = _pytest_devpi_server',
+@@ -44,7 +42,6 @@ if __name__ == '__main__':
+         author_email='eeaston@gmail.com',
+         classifiers=classifiers,
+         install_requires=install_requires,
+-        tests_require=tests_require,
+         packages=find_packages(exclude='tests'),
+         entry_points=entry_points,
+     ))
+diff --git a/pytest-fixture-config/setup.py b/pytest-fixture-config/setup.py
+index 164ad33..15a9e16 100644
+--- a/pytest-fixture-config/setup.py
++++ b/pytest-fixture-config/setup.py
+@@ -20,8 +20,9 @@ classifiers = [
+ 
+ install_requires = ['pytest']
+ 
+-tests_require = ['six',
+-                 ]
++extras_require = {
++    'test': ["six"]
++}
+ 
+ if __name__ == '__main__':
+     kwargs = common_setup('pytest_fixture_config')
+@@ -32,7 +33,7 @@ if __name__ == '__main__':
+         author_email='eeaston@gmail.com',
+         classifiers=classifiers,
+         install_requires=install_requires,
+-        tests_require=tests_require,
++        extras_require=extras_require,
+         py_modules=['pytest_fixture_config'],
+     ))
+     setup(**kwargs)
+diff --git a/pytest-git/setup.py b/pytest-git/setup.py
+index 8f4a1d3..9c4557a 100644
+--- a/pytest-git/setup.py
++++ b/pytest-git/setup.py
+@@ -27,9 +27,6 @@ install_requires = ['pytest',
+                     'gitpython',
+                     ]
+ 
+-tests_require = [
+-                 ]
+-
+ entry_points = {
+     'pytest11': [
+         'git_repo = pytest_git',
+@@ -46,7 +43,6 @@ if __name__ == '__main__':
+         author_email='eeaston@gmail.com',
+         classifiers=classifiers,
+         install_requires=install_requires,
+-        tests_require=tests_require,
+         py_modules=['pytest_git'],
+         entry_points=entry_points,
+     ))
+diff --git a/pytest-listener/setup.py b/pytest-listener/setup.py
+index 3ce8897..dcde454 100644
+--- a/pytest-listener/setup.py
++++ b/pytest-listener/setup.py
+@@ -23,8 +23,6 @@ install_requires = ['six',
+                     'pytest-server-fixtures'
+                     ]
+ 
+-tests_require = []
+-
+ entry_points = {
+     'pytest11': [
+         'listener = pytest_listener',
+@@ -40,7 +38,6 @@ if __name__ == '__main__':
+         author_email='drtimcouper@gmail.com',
+         classifiers=classifiers,
+         install_requires=install_requires,
+-        tests_require=tests_require,
+         packages=find_packages(exclude='tests'),
+         entry_points=entry_points,
+     ))
+diff --git a/pytest-profiling/setup.py b/pytest-profiling/setup.py
+index 612899a..fa412da 100644
+--- a/pytest-profiling/setup.py
++++ b/pytest-profiling/setup.py
+@@ -22,9 +22,9 @@ install_requires = ['six',
+                     'gprof2dot',
+                     ]
+ 
+-tests_require = [
+-                 'pytest-virtualenv',
+-                 ]
++extras_require = {
++    'tests': ['pytest-virtualenv']
++}
+ 
+ entry_points = {
+     'pytest11': [
+@@ -41,7 +41,7 @@ if __name__ == '__main__':
+         author_email='ed@catmur.co.uk',
+         classifiers=classifiers,
+         install_requires=install_requires,
+-        tests_require=tests_require,
++        extras_require=extras_require,
+         py_modules=['pytest_profiling'],
+         entry_points=entry_points,
+     ))
+diff --git a/pytest-pyramid-server/setup.py b/pytest-pyramid-server/setup.py
+index f6fbea0..a02587a 100644
+--- a/pytest-pyramid-server/setup.py
++++ b/pytest-pyramid-server/setup.py
+@@ -26,9 +26,9 @@ install_requires = ['pytest-server-fixtures',
+                     'six',
+                     ]
+ 
+-tests_require = [
+-                 'pyramid-debugtoolbar',
+-                 ]
++extras_require = {
++    'tests': ['pyramid-debugtoolbar']
++}
+ 
+ entry_points = {
+     'pytest11': [
+@@ -48,7 +48,7 @@ if __name__ == '__main__':
+         author_email='eeaston@gmail.com',
+         classifiers=classifiers,
+         install_requires=install_requires,
+-        tests_require=tests_require,
++        extras_require=extras_require,
+         py_modules=['pytest_pyramid_server', 'pyramid_server_test'],
+         entry_points=entry_points,
+     ))
+diff --git a/pytest-qt-app/setup.py b/pytest-qt-app/setup.py
+index 27f367a..3170aaf 100644
+--- a/pytest-qt-app/setup.py
++++ b/pytest-qt-app/setup.py
+@@ -22,8 +22,9 @@ install_requires = ['pytest',
+                     'pytest-shutil',
+                     ]
+ 
+-tests_require = ['pytest-cov'
+-                 ]
++extras_require = {
++    'tests': ['pytest-cov']
++}
+ 
+ entry_points = {
+     'pytest11': [
+@@ -40,7 +41,7 @@ if __name__ == '__main__':
+         author_email='eeaston@gmail.com',
+         classifiers=classifiers,
+         install_requires=install_requires,
+-        tests_require=tests_require,
++        extras_require=extras_require,
+         py_modules=['pytest_qt_app'],
+         entry_points=entry_points,
+     ))
+diff --git a/pytest-server-fixtures/setup.py b/pytest-server-fixtures/setup.py
+index 065c1c2..88af64c 100644
+--- a/pytest-server-fixtures/setup.py
++++ b/pytest-server-fixtures/setup.py
+@@ -36,13 +36,12 @@ extras_require = {
+     's3': ["boto3"],
+     'docker': ["docker"],
+     'kubernetes': ["kubernetes"],
++    'tests': [
++        'mock; python_version<"3.3"',
++        'psutil',
++    ],
+ }
+ 
+-tests_require = [
+-                 'mock; python_version<"3.3"',
+-                 'psutil',
+-                 ]
+-
+ entry_points = {
+     'pytest11': [
+         'httpd_server = pytest_server_fixtures.httpd',
+@@ -66,7 +65,6 @@ if __name__ == '__main__':
+         classifiers=classifiers,
+         install_requires=install_requires,
+         extras_require=extras_require,
+-        tests_require=tests_require,
+         packages=find_packages(exclude='tests'),
+         entry_points=entry_points,
+     ))
+diff --git a/pytest-shutil/setup.py b/pytest-shutil/setup.py
+index 43ed91e..e1d9e56 100644
+--- a/pytest-shutil/setup.py
++++ b/pytest-shutil/setup.py
+@@ -27,8 +27,10 @@ install_requires = ['six',
+                     'termcolor'
+                     ]
+ 
+-tests_require = ['pytest',
+-                 ]
++
++extras_require = {
++    'tests':  ["pytest"],
++}
+ 
+ entry_points = {
+     'pytest11': [
+@@ -45,7 +47,7 @@ if __name__ == '__main__':
+         author_email='eeaston@gmail.com',
+         classifiers=classifiers,
+         install_requires=install_requires,
+-        tests_require=tests_require,
++        extras_require=extras_require,
+         packages=find_packages(exclude='tests'),
+         entry_points=entry_points,
+     ))
+diff --git a/pytest-svn/setup.py b/pytest-svn/setup.py
+index 470181f..9d4d272 100644
+--- a/pytest-svn/setup.py
++++ b/pytest-svn/setup.py
+@@ -21,9 +21,6 @@ install_requires = ['pytest',
+                     'pytest-shutil',
+                     ]
+ 
+-tests_require = [
+-                 ]
+-
+ entry_points = {
+     'pytest11': [
+         'svn_repo = pytest_svn',
+@@ -40,7 +37,6 @@ if __name__ == '__main__':
+         author_email='eeaston@gmail.com',
+         classifiers=classifiers,
+         install_requires=install_requires,
+-        tests_require=tests_require,
+         py_modules=['pytest_svn'],
+         entry_points=entry_points,
+     ))
+diff --git a/pytest-verbose-parametrize/setup.py b/pytest-verbose-parametrize/setup.py
+index ae0a482..b6fa5e1 100644
+--- a/pytest-verbose-parametrize/setup.py
++++ b/pytest-verbose-parametrize/setup.py
+@@ -21,10 +21,11 @@ install_requires = ['pytest',
+                     'six',
+                     ]
+ 
+-tests_require = ['mock; python_version<"3.3"',
+-                 'pytest-virtualenv',
+-                 'coverage',
+-                 ]
++extras_require = {
++    'tests': ['mock; python_version<"3.3"',
++              'pytest-virtualenv',
++              'coverage']
++}
+ 
+ entry_points = {
+     'pytest11': [
+@@ -41,7 +42,7 @@ if __name__ == '__main__':
+         author_email='eeaston@gmail.com',
+         classifiers=classifiers,
+         install_requires=install_requires,
+-        tests_require=tests_require,
++        extras_require=extras_require,
+         py_modules=['pytest_verbose_parametrize'],
+         entry_points=entry_points,
+     ))
+diff --git a/pytest-virtualenv/setup.py b/pytest-virtualenv/setup.py
+index 815b59c..55f97e3 100644
+--- a/pytest-virtualenv/setup.py
++++ b/pytest-virtualenv/setup.py
+@@ -25,9 +25,9 @@ install_requires = ['pytest-fixture-config',
+                     'importlib-metadata',
+                     ]
+ 
+-tests_require = [
+-                 'mock; python_version<"3.3"'
+-                 ]
++extras_require = {
++    'tests': ['mock; python_version<"3.3"']
++}
+ 
+ entry_points = {
+     'pytest11': [
+@@ -44,7 +44,7 @@ if __name__ == '__main__':
+         author_email='eeaston@gmail.com',
+         classifiers=classifiers,
+         install_requires=install_requires,
+-        tests_require=tests_require,
++        extras_require=extras_require,
+         py_modules=['pytest_virtualenv'],
+         entry_points=entry_points,
+     ))
+diff --git a/pytest-webdriver/setup.py b/pytest-webdriver/setup.py
+index 280818a..afb618b 100644
+--- a/pytest-webdriver/setup.py
++++ b/pytest-webdriver/setup.py
+@@ -23,8 +23,10 @@ install_requires = ['py',
+                     'selenium',
+                     ]
+ 
+-tests_require = ['mock; python_version<"3.3"',
+-                 ]
++
++extras_require = {
++    'tests':  ['mock; python_version,"3.3"'],
++}
+ 
+ entry_points = {
+     'pytest11': [
+@@ -41,7 +43,7 @@ if __name__ == '__main__':
+         author_email='eeaston@gmail.com',
+         classifiers=classifiers,
+         install_requires=install_requires,
+-        tests_require=tests_require,
++        extras_require=extras_require,
+         py_modules=['pytest_webdriver'],
+         entry_points=entry_points,
+     ))
diff --git a/pkgs/development/python-modules/pytest-flake8/default.nix b/pkgs/development/python-modules/pytest-flake8/default.nix
index fab7bab0ba943..f45abf0941fa7 100644
--- a/pkgs/development/python-modules/pytest-flake8/default.nix
+++ b/pkgs/development/python-modules/pytest-flake8/default.nix
@@ -1,47 +1,40 @@
-{ lib
-, fetchpatch
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, flake8
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools-scm,
+  flake8,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-flake8";
-  version = "1.1.1";
+  version = "1.2.2";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "ba4f243de3cb4c2486ed9e70752c80dd4b636f7ccb27d4eba763c35ed0cd316e";
+  src = fetchFromGitHub {
+    owner = "coherent-oss";
+    repo = "pytest-flake8";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-FsJysBj5S5HHGay+YZKMgb9RdUN637J+FfNl+m9l6ik=";
   };
 
-  patches = [
-    # https://github.com/tholo/pytest-flake8/issues/87
-    # https://github.com/tholo/pytest-flake8/pull/88
-    (fetchpatch {
-      url = "https://github.com/tholo/pytest-flake8/commit/976e6180201f7808a3007c8c5903a1637b18c0c8.patch";
-      hash = "sha256-Hbcpz4fTXtXRnIWuKuDhOVpGx9H1sdQRKqxadk2s+uE=";
-    })
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    flake8
-  ];
+  dependencies = [ flake8 ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = {
+    # https://github.com/coherent-oss/pytest-flake8/issues/3
+    broken = lib.versionAtLeast flake8.version "6";
+    changelog = "https://github.com/coherent-oss/pytest-flake8/blob/${src.rev}/NEWS.rst";
     description = "py.test plugin for efficiently checking PEP8 compliance";
-    homepage = "https://github.com/tholo/pytest-flake8";
+    homepage = "https://github.com/coherent-oss/pytest-flake8";
     maintainers = with lib.maintainers; [ jluttine ];
     license = lib.licenses.bsd2;
-    broken = lib.versionAtLeast flake8.version "6.0.0";
   };
 }
diff --git a/pkgs/development/python-modules/pytest-flakes/default.nix b/pkgs/development/python-modules/pytest-flakes/default.nix
index d6709da423adf..6c9a42cd632ab 100644
--- a/pkgs/development/python-modules/pytest-flakes/default.nix
+++ b/pkgs/development/python-modules/pytest-flakes/default.nix
@@ -1,6 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder
-, pytest
-, pyflakes
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytest,
+  pyflakes,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pytest-flask/default.nix b/pkgs/development/python-modules/pytest-flask/default.nix
index 428e0c5c3e01b..cc0096db1fd75 100644
--- a/pkgs/development/python-modules/pytest-flask/default.nix
+++ b/pkgs/development/python-modules/pytest-flask/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, flask
-, pytest
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
-, werkzeug
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  flask,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  werkzeug,
 }:
 
 buildPythonPackage rec {
@@ -22,33 +23,25 @@ buildPythonPackage rec {
     hash = "sha256-WL4cl7Ibo8TUfgp2ketBAHdIUGw2v1EAT3jfEGkfqV4=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   propagatedBuildInputs = [
     flask
     werkzeug
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pytest_flask"
-  ];
+  pythonImportsCheck = [ "pytest_flask" ];
 
-  pytestFlagsArray = lib.optionals stdenv.isDarwin [
+  pytestFlagsArray = lib.optionals stdenv.hostPlatform.isDarwin [
     "--ignore=tests/test_live_server.py"
   ];
 
   meta = with lib; {
-    description = "A set of pytest fixtures to test Flask applications";
+    description = "Set of pytest fixtures to test Flask applications";
     homepage = "https://pytest-flask.readthedocs.io/";
     changelog = "https://github.com/pytest-dev/pytest-flask/blob/${version}/docs/changelog.rst";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pytest-forked/default.nix b/pkgs/development/python-modules/pytest-forked/default.nix
index c7ed502e7a414..6a508417e2e1a 100644
--- a/pkgs/development/python-modules/pytest-forked/default.nix
+++ b/pkgs/development/python-modules/pytest-forked/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, pythonAtLeast
-, fetchFromGitHub
-, fetchpatch2
-, setuptools
-, setuptools-scm
-, wheel
-, py
-, pytest
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  pythonAtLeast,
+  fetchFromGitHub,
+  fetchpatch2,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  py,
+  pytest,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -43,24 +44,24 @@ buildPythonPackage rec {
     wheel
   ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    py
-  ];
+  propagatedBuildInputs = [ py ];
 
   nativeCheckInputs = [
     py
     pytestCheckHook
   ];
 
-  disabledTests = if (pythonAtLeast "3.12" && stdenv.isDarwin && stdenv.isx86_64) then [
-    # non reproducible test failure on hydra, works on community builder
-    # https://hydra.nixos.org/build/252537267
-    "test_xfail"
-  ] else null;
+  disabledTests =
+    if (pythonAtLeast "3.12" && stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) then
+      [
+        # non reproducible test failure on hydra, works on community builder
+        # https://hydra.nixos.org/build/252537267
+        "test_xfail"
+      ]
+    else
+      null;
 
   setupHook = ./setup-hook.sh;
 
diff --git a/pkgs/development/python-modules/pytest-freezegun/default.nix b/pkgs/development/python-modules/pytest-freezegun/default.nix
index 0435eb095124b..259f698431aba 100644
--- a/pkgs/development/python-modules/pytest-freezegun/default.nix
+++ b/pkgs/development/python-modules/pytest-freezegun/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, freezegun
-, pytest
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  freezegun,
+  pytest,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -30,13 +31,9 @@ buildPythonPackage rec {
 
   buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    freezegun
-  ];
+  propagatedBuildInputs = [ freezegun ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Wrap tests with fixtures in freeze_time";
diff --git a/pkgs/development/python-modules/pytest-freezer/default.nix b/pkgs/development/python-modules/pytest-freezer/default.nix
index d7381c44a6807..521def7dfda08 100644
--- a/pkgs/development/python-modules/pytest-freezer/default.nix
+++ b/pkgs/development/python-modules/pytest-freezer/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, freezegun
-, pytest
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  freezegun,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,25 +23,15 @@ buildPythonPackage rec {
     hash = "sha256-Eak6LNoyu2wvZbPaBBUO0UkyB9vni8YbsADGK0as7Cg=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    freezegun
-  ];
+  propagatedBuildInputs = [ freezegun ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pytest_freezer"
-  ];
+  pythonImportsCheck = [ "pytest_freezer" ];
 
   meta = with lib; {
     description = "Pytest plugin providing a fixture interface for spulec/freezegun";
diff --git a/pkgs/development/python-modules/pytest-golden/default.nix b/pkgs/development/python-modules/pytest-golden/default.nix
index dede2e30b9fdd..1d2879049e453 100644
--- a/pkgs/development/python-modules/pytest-golden/default.nix
+++ b/pkgs/development/python-modules/pytest-golden/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, atomicwrites
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  atomicwrites,
+  buildPythonPackage,
+  fetchFromGitHub,
   #, hatchling
-, ruamel-yaml
-, poetry-core
-, pytest
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, testfixtures
+  ruamel-yaml,
+  poetry-core,
+  pytest,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  testfixtures,
 }:
 
 buildPythonPackage rec {
@@ -33,19 +33,14 @@ buildPythonPackage rec {
       --replace poetry.masonry.api poetry.core.masonry.api
   '';
 
-  pythonRelaxDeps = [
-    "testfixtures"
-  ];
+  pythonRelaxDeps = [ "testfixtures" ];
 
   nativeBuildInputs = [
     # hatchling used for > 0.2.2
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   propagatedBuildInputs = [
     atomicwrites
@@ -58,9 +53,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pytest_golden"
-  ];
+  pythonImportsCheck = [ "pytest_golden" ];
 
   meta = with lib; {
     description = "Plugin for pytest that offloads expected outputs to data files";
diff --git a/pkgs/development/python-modules/pytest-grpc/default.nix b/pkgs/development/python-modules/pytest-grpc/default.nix
index 9918faad2c2e3..18fa92f9279d2 100644
--- a/pkgs/development/python-modules/pytest-grpc/default.nix
+++ b/pkgs/development/python-modules/pytest-grpc/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, grpcio
-, pytest
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  grpcio,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -16,13 +16,9 @@ buildPythonPackage rec {
     hash = "sha256-C9JoP/00GZRE1wfAqwGXCyLgr7umyx3bbVeMhev+Cb0=";
   };
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    grpcio
-  ];
+  propagatedBuildInputs = [ grpcio ];
 
   meta = with lib; {
     description = "pytest plugin for grpc";
diff --git a/pkgs/development/python-modules/pytest-harvest/default.nix b/pkgs/development/python-modules/pytest-harvest/default.nix
index 3cfcd66359975..35e5945c1a62a 100644
--- a/pkgs/development/python-modules/pytest-harvest/default.nix
+++ b/pkgs/development/python-modules/pytest-harvest/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools-scm
-, pytest-runner
-, pytest
-, decopatch
-, makefun
-, six
-, pytestCheckHook
-, numpy
-, pandas
-, tabulate
-, pytest-cases
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  pytest,
+  decopatch,
+  makefun,
+  six,
+  pytestCheckHook,
+  numpy,
+  pandas,
+  tabulate,
+  pytest-cases,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -33,11 +33,14 @@ buildPythonPackage rec {
   # we disable this file creation as it touches internet
   postPatch = ''
     echo "version = '${version}'" > pytest_harvest/_version.py
+
+    substituteInPlace pytest_harvest/tests/test_lazy_and_harvest.py \
+      --replace-fail "from distutils.version import LooseVersion" "from packaging.version import parse" \
+      --replace-fail "LooseVersion" "parse"
   '';
 
   nativeBuildInputs = [
     setuptools-scm
-    pytest-runner
   ];
 
   buildInputs = [ pytest ];
@@ -61,7 +64,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Store data created during your `pytest` tests execution, and retrieve it at the end of the session, e.g. for applicative benchmarking purposes";
     homepage = "https://github.com/smarie/python-pytest-harvest";
-    changelog = "https://github.com/smarie/python-pytest-harvest/releases/tag/${src.rev}";
+    changelog = "https://github.com/smarie/python-pytest-harvest/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = licenses.bsd3;
     maintainers = with maintainers; [ mbalatsko ];
   };
diff --git a/pkgs/development/python-modules/pytest-helpers-namespace/default.nix b/pkgs/development/python-modules/pytest-helpers-namespace/default.nix
index 6d1c3cf4f136d..ced0389f2887d 100644
--- a/pkgs/development/python-modules/pytest-helpers-namespace/default.nix
+++ b/pkgs/development/python-modules/pytest-helpers-namespace/default.nix
@@ -1,11 +1,12 @@
-{ buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, isPy27
-, lib
-, setuptools
-, setuptools-declarative-requirements
-, setuptools-scm
+{
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  isPy27,
+  lib,
+  setuptools,
+  setuptools-declarative-requirements,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,11 @@ buildPythonPackage rec {
     sha256 = "792038247e0021beb966a7ea6e3a70ff5fcfba77eb72c6ec8fd6287af871c35b";
   };
 
-  nativeBuildInputs = [ setuptools setuptools-declarative-requirements setuptools-scm ];
+  nativeBuildInputs = [
+    setuptools
+    setuptools-declarative-requirements
+    setuptools-scm
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
@@ -29,6 +34,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/saltstack/pytest-helpers-namespace";
     description = "PyTest Helpers Namespace";
     license = licenses.asl20;
-    maintainers = [ maintainers.kiwi ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-html/default.nix b/pkgs/development/python-modules/pytest-html/default.nix
index 6d4233e043b17..769eaffc3e034 100644
--- a/pkgs/development/python-modules/pytest-html/default.nix
+++ b/pkgs/development/python-modules/pytest-html/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildNpmPackage
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, hatch-vcs
-, hatchling
-, jinja2
-, pytest
-, pytest-metadata
+{
+  lib,
+  buildNpmPackage,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  hatch-vcs,
+  hatchling,
+  jinja2,
+  pytest,
+  pytest-metadata,
 }:
 let
   pname = "pytest-html";
@@ -45,8 +46,14 @@ buildPythonPackage {
     hatch-vcs
     hatchling
   ];
-  buildInputs = [ pytest web-assets ];
-  propagatedBuildInputs = [ jinja2 pytest-metadata ];
+  buildInputs = [
+    pytest
+    web-assets
+  ];
+  propagatedBuildInputs = [
+    jinja2
+    pytest-metadata
+  ];
 
   env.HATCH_BUILD_NO_HOOKS = true;
 
@@ -57,9 +64,7 @@ buildPythonPackage {
   # tests require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pytest_html"
-  ];
+  pythonImportsCheck = [ "pytest_html" ];
 
   meta = with lib; {
     description = "Plugin for generating HTML reports";
diff --git a/pkgs/development/python-modules/pytest-httpbin/default.nix b/pkgs/development/python-modules/pytest-httpbin/default.nix
index db94f2b6e1635..891b8ed2cb751 100644
--- a/pkgs/development/python-modules/pytest-httpbin/default.nix
+++ b/pkgs/development/python-modules/pytest-httpbin/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, httpbin
-, pytest
-, pytestCheckHook
-, pythonOlder
-, requests
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpbin,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-httpbin";
   version = "2.0.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -23,14 +24,11 @@ buildPythonPackage rec {
     hash = "sha256-tq9nz2na94HkLACt7xB1MUanh9/JOoe2vyEm5sAq0/4=";
   };
 
-  buildInputs = [
-    pytest
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    httpbin
-    six
-  ];
+  buildInputs = [ pytest ];
+
+  propagatedBuildInputs = [ httpbin ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -40,18 +38,19 @@ buildPythonPackage rec {
   disabledTests = [
     # incompatible with flask 2.3
     "test_redirect_location_is_https_for_secure_server"
+    # Timeout on Hydra
+    "test_dont_crash_on_handshake_timeout"
   ];
 
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [
-    "pytest_httpbin"
-  ];
+  pythonImportsCheck = [ "pytest_httpbin" ];
 
   meta = with lib; {
     description = "Test your HTTP library against a local copy of httpbin.org";
     homepage = "https://github.com/kevin1024/pytest-httpbin";
+    changelog = "https://github.com/kevin1024/pytest-httpbin/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-httpserver/default.nix b/pkgs/development/python-modules/pytest-httpserver/default.nix
index 5759f180ff70d..152223f2ea5c3 100644
--- a/pkgs/development/python-modules/pytest-httpserver/default.nix
+++ b/pkgs/development/python-modules/pytest-httpserver/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, requests
-, toml
-, werkzeug
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  toml,
+  werkzeug,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,9 @@ buildPythonPackage rec {
     hash = "sha256-KCsZs4MGENByF/wB+aj3yvMp7lssHNVKx8jLhDQ1u4k=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    werkzeug
-  ];
+  propagatedBuildInputs = [ werkzeug ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -43,9 +40,7 @@ buildPythonPackage rec {
     "test_wait_raise_assertion_false" # racy
   ];
 
-  pythonImportsCheck = [
-    "pytest_httpserver"
-  ];
+  pythonImportsCheck = [ "pytest_httpserver" ];
 
   meta = with lib; {
     description = "HTTP server for pytest to test HTTP clients";
diff --git a/pkgs/development/python-modules/pytest-httpx/default.nix b/pkgs/development/python-modules/pytest-httpx/default.nix
index 85eabe87a76d2..59a5a76e2eb5d 100644
--- a/pkgs/development/python-modules/pytest-httpx/default.nix
+++ b/pkgs/development/python-modules/pytest-httpx/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, httpx
-, pytest
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpx,
+  pytest,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -26,31 +26,22 @@ buildPythonPackage rec {
   };
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
     setuptools-scm
   ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    httpx
-  ];
+  propagatedBuildInputs = [ httpx ];
 
-  pythonRelaxDeps = [
-    "httpx"
-  ];
+  pythonRelaxDeps = [ "httpx" ];
 
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pytest_httpx"
-  ];
+  pythonImportsCheck = [ "pytest_httpx" ];
 
   meta = with lib; {
     description = "Send responses to httpx";
diff --git a/pkgs/development/python-modules/pytest-image-diff/default.nix b/pkgs/development/python-modules/pytest-image-diff/default.nix
index cbe607d0648ea..59b32c8f11729 100644
--- a/pkgs/development/python-modules/pytest-image-diff/default.nix
+++ b/pkgs/development/python-modules/pytest-image-diff/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, python3
-, buildPythonPackage
-, fetchFromGitHub
-, typing-extensions
-, diffimg
-, imgdiff
-, pytestCheckHook
-, recommonmark
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  typing-extensions,
+  diffimg,
+  imgdiff,
+  pytestCheckHook,
+  recommonmark,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pytest-instafail/default.nix b/pkgs/development/python-modules/pytest-instafail/default.nix
index 3b237105d4c0d..9afcd14deb179 100644
--- a/pkgs/development/python-modules/pytest-instafail/default.nix
+++ b/pkgs/development/python-modules/pytest-instafail/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -15,20 +16,14 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-M6YG9+DI5kbcO/7g1eOkt7eO98NhaM+h89k698pwbJ4=";
+    hash = "sha256-M6YG9+DI5kbcO/7g1eOkt7eO98NhaM+h89k698pwbJ4=";
   };
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pytest_instafail"
-  ];
+  pythonImportsCheck = [ "pytest_instafail" ];
 
   meta = with lib; {
     description = "pytest plugin that shows failures and errors instantly instead of waiting until the end of test session";
diff --git a/pkgs/development/python-modules/pytest-isort/default.nix b/pkgs/development/python-modules/pytest-isort/default.nix
index 6298d18ed0d2a..e4d5d98c406e7 100644
--- a/pkgs/development/python-modules/pytest-isort/default.nix
+++ b/pkgs/development/python-modules/pytest-isort/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, importlib-metadata
-, isort
-, poetry-core
-, pytest
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  importlib-metadata,
+  isort,
+  poetry-core,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,33 +24,21 @@ buildPythonPackage rec {
     hash = "sha256-1oCVIi0sXwac4AufScJJRsfvBwaBAwlMBRNqLcUXEh4=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    isort
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  propagatedBuildInputs = [ isort ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pytest_isort"
-  ];
+  pythonImportsCheck = [ "pytest_isort" ];
 
   meta = with lib; {
     description = "Pytest plugin to perform isort checks (import ordering)";
     homepage = "https://github.com/moccu/pytest-isort/";
     changelog = "https://github.com/stephrdev/pytest-isort/blob/${version}/CHANGELOG.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-jupyter/default.nix b/pkgs/development/python-modules/pytest-jupyter/default.nix
index 2cae0f7ef1b94..36e45343a3082 100644
--- a/pkgs/development/python-modules/pytest-jupyter/default.nix
+++ b/pkgs/development/python-modules/pytest-jupyter/default.nix
@@ -1,80 +1,79 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build
-, hatchling
-, pytest
+  # build
+  hatchling,
+  pytest,
 
-# runtime
-, jupyter-core
+  # runtime
+  jupyter-core,
 
-# optionals
-, jupyter-client
-, ipykernel
-, jupyter-server
-, nbformat
+  # optionals
+  jupyter-client,
+  ipykernel,
+  jupyter-server,
+  nbformat,
 
-# tests
-, pytest-timeout
-, pytestCheckHook
+  # tests
+  pytest-timeout,
+  pytestCheckHook,
 }:
 
-let self = buildPythonPackage rec {
-  pname = "pytest-jupyter";
-  version = "0.10.1";
-  pyproject = true;
+let
+  self = buildPythonPackage rec {
+    pname = "pytest-jupyter";
+    version = "0.10.1";
+    pyproject = true;
 
-  src = fetchFromGitHub {
-    owner = "jupyter-server";
-    repo = "pytest-jupyter";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-RTpXBbVCRj0oyZ1TXXDv3M7sAI4kA6f3ouzTr0rXjwY=";
-  };
+    src = fetchFromGitHub {
+      owner = "jupyter-server";
+      repo = "pytest-jupyter";
+      rev = "refs/tags/v${version}";
+      hash = "sha256-RTpXBbVCRj0oyZ1TXXDv3M7sAI4kA6f3ouzTr0rXjwY=";
+    };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+    nativeBuildInputs = [ hatchling ];
 
-  buildInputs = [
-    pytest
-  ];
+    buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    jupyter-core
-  ];
+    propagatedBuildInputs = [ jupyter-core ];
 
-  passthru.optional-dependencies = {
-    client = [
-      jupyter-client
-      nbformat
-      ipykernel
-    ];
-    server = [
-      jupyter-server
-      jupyter-client
-      nbformat
-      ipykernel
-    ];
-  };
+    passthru.optional-dependencies = {
+      client = [
+        jupyter-client
+        nbformat
+        ipykernel
+      ];
+      server = [
+        jupyter-server
+        jupyter-client
+        nbformat
+        ipykernel
+      ];
+    };
 
-  doCheck = false; # infinite recursion with jupyter-server
+    doCheck = false; # infinite recursion with jupyter-server
 
-  nativeCheckInputs = [
-    pytest-timeout
-    pytestCheckHook
-  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+    nativeCheckInputs = [
+      pytest-timeout
+      pytestCheckHook
+    ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  passthru.tests = {
-    check = self.overridePythonAttrs (_: { doCheck = false; });
-  };
+    passthru.tests = {
+      check = self.overridePythonAttrs (_: {
+        doCheck = false;
+      });
+    };
 
-  meta = with lib; {
-    changelog = "https://github.com/jupyter-server/pytest-jupyter/releases/tag/v${version}";
-    description = "pytest plugin for testing Jupyter core libraries and extensions";
-    homepage = "https://github.com/jupyter-server/pytest-jupyter";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    meta = with lib; {
+      changelog = "https://github.com/jupyter-server/pytest-jupyter/releases/tag/v${version}";
+      description = "pytest plugin for testing Jupyter core libraries and extensions";
+      homepage = "https://github.com/jupyter-server/pytest-jupyter";
+      license = licenses.bsd3;
+      maintainers = [ ];
+    };
   };
-};
-in self
+in
+self
diff --git a/pkgs/development/python-modules/pytest-lazy-fixture/default.nix b/pkgs/development/python-modules/pytest-lazy-fixture/default.nix
index b4006b7007835..64afaa0d07862 100644
--- a/pkgs/development/python-modules/pytest-lazy-fixture/default.nix
+++ b/pkgs/development/python-modules/pytest-lazy-fixture/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,17 +22,11 @@ buildPythonPackage rec {
     ./pytest-8-compatible.patch
   ];
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [
-    "pytest_lazyfixture"
-  ];
+  pythonImportsCheck = [ "pytest_lazyfixture" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Helps to use fixtures in pytest.mark.parametrize";
diff --git a/pkgs/development/python-modules/pytest-lazy-fixtures/default.nix b/pkgs/development/python-modules/pytest-lazy-fixtures/default.nix
new file mode 100644
index 0000000000000..236e6dad3bfe7
--- /dev/null
+++ b/pkgs/development/python-modules/pytest-lazy-fixtures/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "pytest-lazy-fixtures";
+  version = "1.0.7";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "dev-petrov";
+    repo = "pytest-lazy-fixtures";
+    rev = version;
+    hash = "sha256-BOKUg5HPBQfteKOEsdZ30h/hWbVZPuHMhtGXF3KfMXg=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "pytest_lazy_fixtures" ];
+
+  meta = with lib; {
+    description = "Allows you to use fixtures in @pytest.mark.parametrize";
+    homepage = "https://github.com/dev-petrov/pytest-lazy-fixtures";
+    license = licenses.mit;
+    maintainers = [ ];
+  };
+}
diff --git a/pkgs/development/python-modules/pytest-localserver/default.nix b/pkgs/development/python-modules/pytest-localserver/default.nix
index d550b4b274693..8549d394b9846 100644
--- a/pkgs/development/python-modules/pytest-localserver/default.nix
+++ b/pkgs/development/python-modules/pytest-localserver/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiosmtpd
-, buildPythonPackage
-, fetchPypi
-, werkzeug
-, pythonOlder
+{
+  lib,
+  aiosmtpd,
+  buildPythonPackage,
+  fetchPypi,
+  werkzeug,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
   # all tests access network: does not work in sandbox
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pytest_localserver"
-  ];
+  pythonImportsCheck = [ "pytest_localserver" ];
 
   meta = with lib; {
     description = "Plugin for the pytest testing framework to test server connections locally";
diff --git a/pkgs/development/python-modules/pytest-logdog/default.nix b/pkgs/development/python-modules/pytest-logdog/default.nix
index 176bde51525b3..b047d86acc12f 100644
--- a/pkgs/development/python-modules/pytest-logdog/default.nix
+++ b/pkgs/development/python-modules/pytest-logdog/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -22,25 +23,15 @@ buildPythonPackage rec {
     hash = "sha256-Tmoq+KAGzn0MMj29rukDfAc4LSIwC8DoMTuBAppV32I=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  propagatedBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pytest_logdog"
-  ];
+  pythonImportsCheck = [ "pytest_logdog" ];
 
   meta = with lib; {
     description = "Pytest plugin to test logging";
diff --git a/pkgs/development/python-modules/pytest-markdown-docs/default.nix b/pkgs/development/python-modules/pytest-markdown-docs/default.nix
new file mode 100644
index 0000000000000..d09187cafa59a
--- /dev/null
+++ b/pkgs/development/python-modules/pytest-markdown-docs/default.nix
@@ -0,0 +1,43 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  markdown-it-py,
+  pytest,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "pytest-markdown-docs";
+  version = "0.5.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "modal-com";
+    repo = "pytest-markdown-docs";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-mclN28tfPcoFxswECjbrkeOI51XXSqUXfbvuSHrd7Sw=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    markdown-it-py
+    pytest
+  ];
+
+  pythonImportsCheck = [ "pytest_markdown_docs" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = with lib; {
+    description = "Run pytest on markdown code fence blocks";
+    homepage = "https://github.com/modal-com/pytest-markdown-docs";
+    license = licenses.mit;
+    maintainers = with maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/pkgs/development/python-modules/pytest-md-report/default.nix b/pkgs/development/python-modules/pytest-md-report/default.nix
index 738579f3ec206..5caa415925895 100644
--- a/pkgs/development/python-modules/pytest-md-report/default.nix
+++ b/pkgs/development/python-modules/pytest-md-report/default.nix
@@ -1,26 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytablewriter
-, pytest
-, tcolorpy
-, typepy
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  pytablewriter,
+  pytest,
+  tcolorpy,
+  typepy,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-md-report";
-  version = "0.5.1";
-  format = "setuptools";
+  version = "0.6.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-WzPspBVcrtcDqZI+PuAttfI7YBKC5DW5IM+Y7iUdQFI=";
+    pname = "pytest_md_report";
+    inherit version;
+    hash = "sha256-XpbGVevJtcPHt4v3xTgsH2gFbpaQRDAlJ5D4c33lzpk=";
   };
 
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
   propagatedBuildInputs = [
     pytablewriter
     tcolorpy
@@ -34,7 +43,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "pytest_md_report" ];
 
   meta = with lib; {
-    description = "A pytest plugin to make a test results report with Markdown table format";
+    description = "Pytest plugin to make a test results report with Markdown table format";
     homepage = "https://github.com/thombashi/pytest-md-report";
     changelog = "https://github.com/thombashi/pytest-md-report/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pytest-metadata/default.nix b/pkgs/development/python-modules/pytest-metadata/default.nix
index d4eb108053b13..fc72d1843d388 100644
--- a/pkgs/development/python-modules/pytest-metadata/default.nix
+++ b/pkgs/development/python-modules/pytest-metadata/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatch-vcs
-, hatchling
-, pytest
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatch-vcs,
+  hatchling,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     hatch-vcs
   ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Plugin for accessing test session metadata";
diff --git a/pkgs/development/python-modules/pytest-mock/default.nix b/pkgs/development/python-modules/pytest-mock/default.nix
index f956a62e1a5a0..8d2c24dbd8c25 100644
--- a/pkgs/development/python-modules/pytest-mock/default.nix
+++ b/pkgs/development/python-modules/pytest-mock/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, pythonAtLeast
-, pythonOlder
-, fetchPypi
-, pytest
-, pytest-asyncio
-, pytestCheckHook
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  pythonAtLeast,
+  pythonOlder,
+  fetchPypi,
+  pytest,
+  pytest-asyncio,
+  pytestCheckHook,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-mock";
-  version = "3.12.0";
+  version = "3.14.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-MaQPA4wiytMih7tDkyBURR/1WD/wlLym9nXfL4vBpuk=";
+    hash = "sha256-JxklWh7+zq28BW1r8989HFAVUw+0DPNHwPmvrIhBC9A=";
   };
 
   nativeBuildInputs = [
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   nativeCheckInputs = [
     pytest-asyncio
diff --git a/pkgs/development/python-modules/pytest-mockito/default.nix b/pkgs/development/python-modules/pytest-mockito/default.nix
index 279b04b83e0e6..06b9a93553673 100644
--- a/pkgs/development/python-modules/pytest-mockito/default.nix
+++ b/pkgs/development/python-modules/pytest-mockito/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest
-, mockito
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
+  mockito,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,17 +20,11 @@ buildPythonPackage rec {
     hash = "sha256-vY/i1YV1lo4mZvnxsXBOyaq31YTiF0BY6PTVwdVX10I=";
   };
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    mockito
-  ];
+  propagatedBuildInputs = [ mockito ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = {
     description = "Base fixtures for mockito";
diff --git a/pkgs/development/python-modules/pytest-mockservers/default.nix b/pkgs/development/python-modules/pytest-mockservers/default.nix
index d524457ebbb44..3ab4e4e63cbf3 100644
--- a/pkgs/development/python-modules/pytest-mockservers/default.nix
+++ b/pkgs/development/python-modules/pytest-mockservers/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, aiohttp
-, pytest
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  fetchpatch,
+  poetry-core,
+  aiohttp,
+  pytest,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -32,13 +33,9 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -47,16 +44,12 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pytest_mockservers"
-  ];
+  pythonImportsCheck = [ "pytest_mockservers" ];
 
   meta = with lib; {
-    description = "A set of fixtures to test your requests to HTTP/UDP servers";
+    description = "Set of fixtures to test your requests to HTTP/UDP servers";
     homepage = "https://github.com/Gr1N/pytest-mockservers";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/development/python-modules/pytest-mpi/default.nix b/pkgs/development/python-modules/pytest-mpi/default.nix
new file mode 100644
index 0000000000000..7c375aa1087d2
--- /dev/null
+++ b/pkgs/development/python-modules/pytest-mpi/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools
+, sybil
+, pytest
+, pytestCheckHook
+, mpi
+, mpi4py
+}:
+
+buildPythonPackage rec {
+  pname = "pytest-mpi";
+  version = "0.6";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "aragilar";
+    repo = "pytest-mpi";
+    rev = "v${version}";
+    hash = "sha256-m3HTGLoPnYeg0oeIA1nzTzch7FtkuXTYpox4rRgo5MU=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+  buildInputs = [
+    # Don't propagate it to let a different pytest version be used if needed
+    pytest
+  ];
+  dependencies = [
+    sybil
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    mpi
+    mpi4py
+  ];
+  # Tests cause the Python interpreter to crash from some reason, a hard issue
+  # to debug. (TODO: discuss this with upstream)
+  doCheck = false;
+  pytestFlagsArray = [
+    # https://github.com/aragilar/pytest-mpi/issues/4#issuecomment-634614337
+    "-p" "pytester"
+  ];
+
+  pythonImportsCheck = [ "pytest_mpi" ];
+
+  meta = {
+    description = "Pytest plugin for working with MPI";
+    homepage = "https://github.com/aragilar/pytest-mpi";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ doronbehar ];
+  };
+}
diff --git a/pkgs/development/python-modules/pytest-mpl/default.nix b/pkgs/development/python-modules/pytest-mpl/default.nix
index f0ea49d1b7672..fd26b16b65083 100644
--- a/pkgs/development/python-modules/pytest-mpl/default.nix
+++ b/pkgs/development/python-modules/pytest-mpl/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, pytest
-, jinja2
-, matplotlib
-, nose
-, pillow
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  pytest,
+  jinja2,
+  matplotlib,
+  pillow,
+  pytest7CheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,25 +20,17 @@ buildPythonPackage rec {
     hash = "sha256-LVcWgRJOj/X04rnA0EfTfQSZ1rbY8vSaG1DN2ZMQRGk=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   propagatedBuildInputs = [
     jinja2
     matplotlib
-    nose
     pillow
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-
+  nativeCheckInputs = [ pytest7CheckHook ];
 
   disabledTests = [
     # Broken since b6e98f18950c2b5dbdc725c1181df2ad1be19fee
diff --git a/pkgs/development/python-modules/pytest-mypy-plugins/default.nix b/pkgs/development/python-modules/pytest-mypy-plugins/default.nix
index 097dabe8a39dc..ecc53049ee1ce 100644
--- a/pkgs/development/python-modules/pytest-mypy-plugins/default.nix
+++ b/pkgs/development/python-modules/pytest-mypy-plugins/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, decorator
-, fetchFromGitHub
-, jinja2
-, jsonschema
-, mypy
-, packaging
-, pytest
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, regex
-, setuptools
-, tomlkit
+{
+  lib,
+  buildPythonPackage,
+  decorator,
+  fetchFromGitHub,
+  jinja2,
+  jsonschema,
+  mypy,
+  packaging,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  regex,
+  setuptools,
+  tomlkit,
 }:
 
 buildPythonPackage rec {
@@ -29,13 +30,9 @@ buildPythonPackage rec {
     hash = "sha256-yme1g9Kj5guao0Lf8mbkNJRw6ipS2Wd4Io1cSlEBAGo=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   dependencies = [
     decorator
@@ -48,9 +45,7 @@ buildPythonPackage rec {
     tomlkit
   ];
 
-  pythonImportsCheck = [
-    "pytest_mypy_plugins"
-  ];
+  pythonImportsCheck = [ "pytest_mypy_plugins" ];
 
   nativeCheckInputs = [
     mypy
@@ -61,9 +56,7 @@ buildPythonPackage rec {
     export PATH="$PATH:$out/bin";
   '';
 
-  disabledTestPaths = [
-    "pytest_mypy_plugins/tests/test_explicit_configs.py"
-  ];
+  disabledTestPaths = [ "pytest_mypy_plugins/tests/test_explicit_configs.py" ];
 
   meta = with lib; {
     description = "Pytest plugin for testing mypy types, stubs, and plugins";
diff --git a/pkgs/development/python-modules/pytest-mypy/default.nix b/pkgs/development/python-modules/pytest-mypy/default.nix
index bfe9fb613e24b..6b83a3854c747 100644
--- a/pkgs/development/python-modules/pytest-mypy/default.nix
+++ b/pkgs/development/python-modules/pytest-mypy/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, attrs
-, buildPythonPackage
-, fetchPypi
-, filelock
-, pytest
-, mypy
-, setuptools
-, setuptools-scm
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  fetchPypi,
+  filelock,
+  pytest,
+  mypy,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   propagatedBuildInputs = [
     attrs
@@ -38,10 +37,10 @@ buildPythonPackage rec {
   doCheck = false;
   pythonImportsCheck = [ "pytest_mypy" ];
 
-  meta = with lib; {
+  meta = {
     description = "Mypy static type checker plugin for Pytest";
     homepage = "https://github.com/dbader/pytest-mypy";
-    license = licenses.mit;
-    maintainers = [ ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sigmanificient ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-notebook/default.nix b/pkgs/development/python-modules/pytest-notebook/default.nix
index 104c334539717..21f40beb6a893 100644
--- a/pkgs/development/python-modules/pytest-notebook/default.nix
+++ b/pkgs/development/python-modules/pytest-notebook/default.nix
@@ -1,20 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pythonRelaxDepsHook
-, attrs
-, jsonschema
-, nbclient
-, nbdime
-, nbformat
-, pytest
-, black
-, coverage
-, ipykernel
-, pytest-cov
-, pytest-regressions
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  attrs,
+  jsonschema,
+  nbclient,
+  nbdime,
+  nbformat,
+  pytest,
+  black,
+  coverage,
+  ipykernel,
+  pytest-cov,
+  pytest-regressions,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -31,7 +31,6 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     flit-core
-    pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = [
@@ -47,9 +46,7 @@ buildPythonPackage rec {
     nbformat
   ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   pythonImportsCheck = [ "pytest_notebook" ];
 
@@ -76,6 +73,8 @@ buildPythonPackage rec {
     "test_run_pass_with_meta"
   ];
 
+  __darwinAllowLocalNetworking = true;
+
   meta = {
     changelog = "https://github.com/chrisjsewell/pytest-notebook/blob/${src.rev}/docs/source/changelog.md";
     description = "Pytest plugin for regression testing and regenerating Jupyter Notebooks";
diff --git a/pkgs/development/python-modules/pytest-openfiles/default.nix b/pkgs/development/python-modules/pytest-openfiles/default.nix
deleted file mode 100644
index da894eff91e35..0000000000000
--- a/pkgs/development/python-modules/pytest-openfiles/default.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, isPy27
-, packaging
-, pytest
-, pytestCheckHook
-, psutil
-, setuptools-scm
-}:
-
-buildPythonPackage rec {
-  pname = "pytest-openfiles";
-  version = "0.5.0";
-  format = "setuptools";
-  disabled = isPy27; # abandoned
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "179c2911d8aee3441fee051aba08e0d9b4dab61b829ae4811906d5c49a3b0a58";
-  };
-
-  patches = [
-    (fetchpatch {
-      name = "replace-distutils-with-packaging.patch";
-      url = "https://github.com/astropy/pytest-openfiles/commit/e17e8123936689b0b0ecfb713976588d6793d8bb.patch";
-      includes = [ "pytest_openfiles/plugin.py" ];
-      hash = "sha256-+6xqOwnBO+jxenXxPdDhLqqm3w+ZRjWeVqqgz8j22bU=";
-    })
-  ];
-
-  nativeBuildInputs = [ setuptools-scm ];
-
-  buildInputs = [ pytest ];
-
-  propagatedBuildInputs = [
-    packaging
-    psutil
-  ];
-
-  nativeCheckInputs = [ pytestCheckHook ];
-
-  meta = with lib; {
-    description = "Pytest plugin for detecting inadvertent open file handles";
-    homepage = "https://astropy.org";
-    license = licenses.bsd3;
-    maintainers = [ ];
-  };
-}
diff --git a/pkgs/development/python-modules/pytest-order/default.nix b/pkgs/development/python-modules/pytest-order/default.nix
index 389ce90eddceb..86db6d272fe6e 100644
--- a/pkgs/development/python-modules/pytest-order/default.nix
+++ b/pkgs/development/python-modules/pytest-order/default.nix
@@ -1,24 +1,27 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
-, pytest
-, pytest-xdist
-, pytest-dependency
-, pytest-mock
-, pytestCheckHook
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  setuptools,
+  pytest-xdist,
+  pytest-dependency,
+  pytest-mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-order";
-  version = "1.2.0";
-  format = "setuptools";
+  version = "1.3.0";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-lE+GttRBqnsdqA+AHGq2W4S766Ry0KehLrQ7omZQEBo=";
+  src = fetchFromGitHub {
+    owner = "pytest-dev";
+    repo = "pytest-order";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-V1qJGkXn+HhuK5wiwkkJBEbfnv23R4x9Cv0J6ZTj5xE=";
   };
 
-  buildInputs = [ pytest ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -27,10 +30,15 @@ buildPythonPackage rec {
     pytest-mock
   ];
 
-  meta = {
+  strictDeps = true;
+
+  meta = with lib; {
     description = "Pytest plugin that allows you to customize the order in which your tests are run";
     homepage = "https://github.com/pytest-dev/pytest-order";
-    license = lib.licenses.mit;
-    maintainers = [ lib.maintainers.jacg ];
+    license = licenses.mit;
+    maintainers = with maintainers; [
+      jacg
+      Luflosi
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-parallel/default.nix b/pkgs/development/python-modules/pytest-parallel/default.nix
index 0bc2070ce3540..e3324bd91d8ce 100644
--- a/pkgs/development/python-modules/pytest-parallel/default.nix
+++ b/pkgs/development/python-modules/pytest-parallel/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-# build inputs
-, tblib
-, pytest
-, py
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  # build inputs
+  tblib,
+  pytest,
+  py,
 }:
 let
   pname = "pytest-parallel";
@@ -32,7 +32,7 @@ buildPythonPackage {
   ];
 
   meta = with lib; {
-    description = "A pytest plugin for parallel and concurrent testing";
+    description = "Pytest plugin for parallel and concurrent testing";
     homepage = "https://github.com/kevlened/pytest-parallelt";
     changelog = "https://github.com/kevlened/pytest-parallel/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pytest-param-files/default.nix b/pkgs/development/python-modules/pytest-param-files/default.nix
index 55923b5ed266b..aebd6ccb85e5e 100644
--- a/pkgs/development/python-modules/pytest-param-files/default.nix
+++ b/pkgs/development/python-modules/pytest-param-files/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, ruamel-yaml
-, pytest
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  ruamel-yaml,
+  pytest,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,25 +20,15 @@ buildPythonPackage rec {
     hash = "sha256-hgEEfKf9Kmah5WDNHoFWQJKLOs9Z5BDHiebXCdDc1zE=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    ruamel-yaml
-  ];
+  propagatedBuildInputs = [ ruamel-yaml ];
 
-  pythonImportsCheck = [
-    "pytest_param_files"
-  ];
+  pythonImportsCheck = [ "pytest_param_files" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Package to generate parametrized pytests from external files";
diff --git a/pkgs/development/python-modules/pytest-playwright/default.nix b/pkgs/development/python-modules/pytest-playwright/default.nix
index df1045a199552..31f75b538f325 100644
--- a/pkgs/development/python-modules/pytest-playwright/default.nix
+++ b/pkgs/development/python-modules/pytest-playwright/default.nix
@@ -1,21 +1,21 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, playwright
-, playwright-driver
-, pytest
-, pytest-base-url
-, pytestCheckHook
-, python-slugify
-, pythonOlder
-, setuptools-scm
-, django
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  playwright,
+  playwright-driver,
+  pytest,
+  pytest-base-url,
+  python-slugify,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-playwright";
-  version = "0.4.4";
-  format = "setuptools";
+  version = "0.5.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -23,18 +23,17 @@ buildPythonPackage rec {
     owner = "microsoft";
     repo = "playwright-pytest";
     rev = "refs/tags/v${version}";
-    hash = "sha256-jCK2i27wRGsv65zfzW+Ef72HNQd4Qu/Mw3HX66ZMQ9Y=";
+    hash = "sha256-F5tbqm1k4SdTHIUgwSunLIL2W5mhJoMI4x4UZBLidlA=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     playwright
     pytest-base-url
     python-slugify
@@ -48,9 +47,7 @@ buildPythonPackage rec {
     export PLAYWRIGHT_BROWSERS_PATH=${playwright-driver.browsers}
   '';
 
-  pythonImportsCheck = [
-    "pytest_playwright"
-  ];
+  pythonImportsCheck = [ "pytest_playwright" ];
 
   meta = with lib; {
     description = "Pytest plugin to write end-to-end browser tests with Playwright";
diff --git a/pkgs/development/python-modules/pytest-plt/default.nix b/pkgs/development/python-modules/pytest-plt/default.nix
index 55051359d7e4b..42e6e19abdf56 100644
--- a/pkgs/development/python-modules/pytest-plt/default.nix
+++ b/pkgs/development/python-modules/pytest-plt/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, matplotlib
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  matplotlib,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pytest-postgresql/default.nix b/pkgs/development/python-modules/pytest-postgresql/default.nix
index 6eed5ef6ad2c9..811b3928b8948 100644
--- a/pkgs/development/python-modules/pytest-postgresql/default.nix
+++ b/pkgs/development/python-modules/pytest-postgresql/default.nix
@@ -1,20 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, setuptools
-, mirakuru
-, port-for
-, psycopg
-, pytest
-, postgresql
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  pytest-cov-stub,
+  setuptools,
+  mirakuru,
+  port-for,
+  psycopg,
+  pytest,
+  postgresql,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-postgresql";
-  version = "5.0.0";
-  format = "pyproject";
+  version = "6.0.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -22,13 +24,12 @@ buildPythonPackage rec {
     owner = "ClearcodeHQ";
     repo = "pytest-postgresql";
     rev = "refs/tags/v${version}";
-    hash = "sha256-uWKp9yxTdlswoDPMlhx+2mF1cdhFzhGYKGHdXPGlz+w=";
+    hash = "sha256-6D9QNcfq518ORQDYCH5G+LLJ7tVWPFwB6ylZR3LOZ5g=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml  \
-      --replace "--cov" ""  \
-      --replace "--max-worker-restart=0" ""
+      --replace-fail "--max-worker-restart=0" ""
     sed -i 's#/usr/lib/postgresql/.*/bin/pg_ctl#${postgresql}/bin/pg_ctl#' pytest_postgresql/plugin.py
   '';
 
@@ -38,22 +39,24 @@ buildPythonPackage rec {
     mirakuru
     port-for
     psycopg
-    setuptools  # requires 'pkg_resources' at runtime
+    setuptools # requires 'pkg_resources' at runtime
   ];
 
   nativeCheckInputs = [
     postgresql
     pytestCheckHook
+    pytest-cov-stub
   ];
   pytestFlagsArray = [
     "-p"
     "no:postgresql"
   ];
-  disabledTestPaths = [ "tests/docker/test_noproc_docker.py" ];  # requires Docker
+  disabledTestPaths = [ "tests/docker/test_noproc_docker.py" ]; # requires Docker
   disabledTests = [
     # permissions issue running pg as Nixbld user
     "test_executor_init_with_password"
     # "ValueError: Pytest terminal summary report not found"
+    "test_postgres_loader_in_cli"
     "test_postgres_options_config_in_cli"
     "test_postgres_options_config_in_ini"
   ];
@@ -62,7 +65,6 @@ buildPythonPackage rec {
     "pytest_postgresql.executor"
   ];
 
-
   meta = with lib; {
     homepage = "https://pypi.python.org/pypi/pytest-postgresql";
     description = "Pytest plugin that enables you to test code on a temporary PostgreSQL database";
diff --git a/pkgs/development/python-modules/pytest-pudb/default.nix b/pkgs/development/python-modules/pytest-pudb/default.nix
index cc3e0db8570f9..376a7142af046 100644
--- a/pkgs/development/python-modules/pytest-pudb/default.nix
+++ b/pkgs/development/python-modules/pytest-pudb/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pytest
-, pudb
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pytest,
+  pudb,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pytest-pylint/default.nix b/pkgs/development/python-modules/pytest-pylint/default.nix
index c989948afd8c1..5df06f4dbc35b 100644
--- a/pkgs/development/python-modules/pytest-pylint/default.nix
+++ b/pkgs/development/python-modules/pytest-pylint/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pylint
-, pytest
-, pytestCheckHook
-, pythonOlder
-, toml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pylint,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
+  toml,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-pylint";
   version = "0.21.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -22,30 +24,26 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "pytest-runner" ""
+      --replace-fail "pytest-runner" ""
   '';
 
-  buildInputs = [
-    pytest
-  ];
+  build-system = [ setuptools ];
+
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pylint
     toml
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pytest_pylint"
-  ];
+  pythonImportsCheck = [ "pytest_pylint" ];
 
   meta = with lib; {
     description = "Pytest plugin to check source code with pylint";
     homepage = "https://github.com/carsongee/pytest-pylint";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-pytestrail/default.nix b/pkgs/development/python-modules/pytest-pytestrail/default.nix
index 618bccfa3bc5e..63c0d3735f387 100644
--- a/pkgs/development/python-modules/pytest-pytestrail/default.nix
+++ b/pkgs/development/python-modules/pytest-pytestrail/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools-scm
-, pytest
-, testrail-api
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  pytest,
+  testrail-api,
 }:
 
 buildPythonPackage rec {
@@ -18,24 +19,16 @@ buildPythonPackage rec {
     sha256 = "sha256-y34aRxQ8mu6b6GBRMFVzn1shMVc7TumdjRS3daMEZJM=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    testrail-api
-  ];
+  propagatedBuildInputs = [ testrail-api ];
 
   # all tests require network accesss
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pytest_pytestrail"
-  ];
+  pythonImportsCheck = [ "pytest_pytestrail" ];
 
   meta = with lib; {
     description = "Pytest plugin for interaction with TestRail";
diff --git a/pkgs/development/python-modules/pytest-qt/default.nix b/pkgs/development/python-modules/pytest-qt/default.nix
index 1996265365e15..d418cfee9e1f3 100644
--- a/pkgs/development/python-modules/pytest-qt/default.nix
+++ b/pkgs/development/python-modules/pytest-qt/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, pytest
-, pyqt5
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  pytest,
+  pyqt5,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,21 +20,13 @@ buildPythonPackage rec {
     hash = "sha256-dolhQqlApChTOQCNaSijbUvnSv7H5jRXfoQsnMXFaEQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  nativeCheckInputs = [
-    pyqt5
-  ];
+  nativeCheckInputs = [ pyqt5 ];
 
-  pythonImportsCheck = [
-    "pytestqt"
-  ];
+  pythonImportsCheck = [ "pytestqt" ];
 
   # Tests require X server
   doCheck = false;
@@ -42,6 +35,6 @@ buildPythonPackage rec {
     description = "pytest support for PyQt and PySide applications";
     homepage = "https://github.com/pytest-dev/pytest-qt";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-quickcheck/default.nix b/pkgs/development/python-modules/pytest-quickcheck/default.nix
index a5e11c66a71af..79ca2dc113634 100644
--- a/pkgs/development/python-modules/pytest-quickcheck/default.nix
+++ b/pkgs/development/python-modules/pytest-quickcheck/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, pytestCheckHook
-, pytest-flakes
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  pytestCheckHook,
+  pytest-flakes,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-UFF8ldnaImXU6al4kGjf720mbwXE6Nut9VlvNVrMVoY=";
   };
 
-  propagatedBuildInputs = [
-    pytest
-  ];
+  propagatedBuildInputs = [ pytest ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/pytest-raises/default.nix b/pkgs/development/python-modules/pytest-raises/default.nix
index 1b7beb74c5942..16d4c681f21ce 100644
--- a/pkgs/development/python-modules/pytest-raises/default.nix
+++ b/pkgs/development/python-modules/pytest-raises/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-wmtWPWwe1sFbWSYxs5ZXDUZM1qvjRGMudWdjQeskaz0=";
   };
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pytest_raises"
-  ];
+  pythonImportsCheck = [ "pytest_raises" ];
 
   disabledTests = [
     # Failed: nomatch: '*::test_pytest_mark_raises_unexpected_exception FAILED*'
@@ -41,7 +36,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "An implementation of pytest.raises as a pytest.mark fixture";
+    description = "Implementation of pytest.raises as a pytest.mark fixture";
     homepage = "https://github.com/Lemmons/pytest-raises";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/development/python-modules/pytest-raisesregexp/default.nix b/pkgs/development/python-modules/pytest-raisesregexp/default.nix
index edca8cbaa97dd..e6ce1e3a96e2d 100644
--- a/pkgs/development/python-modules/pytest-raisesregexp/default.nix
+++ b/pkgs/development/python-modules/pytest-raisesregexp/default.nix
@@ -1,23 +1,28 @@
-{ lib, buildPythonPackage, fetchPypi
-, py, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  py,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "pytest-raisesregexp";
   version = "2.1";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b54372494fc1f11388b1b9348aeb36b69609699eb8f46e0e010afc733d78236a";
+    hash = "sha256-tUNySU/B8ROIsbk0ius2tpYJaZ649G4OAQr8cz14I2o=";
   };
 
-  buildInputs = [ py pytest ];
+  build-system = [ setuptools ];
 
-  # https://github.com/kissgyorgy/pytest-raisesregexp/pull/3
-  prePatch = ''
-    sed -i '3i\import io' setup.py
-    substituteInPlace setup.py --replace "long_description=open('README.rst').read()," "long_description=io.open('README.rst', encoding='utf-8').read(),"
-  '';
+  buildInputs = [
+    py
+    pytest
+  ];
 
   meta = with lib; {
     description = "Simple pytest plugin to look for regex in Exceptions";
diff --git a/pkgs/development/python-modules/pytest-raisin/default.nix b/pkgs/development/python-modules/pytest-raisin/default.nix
index 2da96d21c9ea3..762a3a6fa0eca 100644
--- a/pkgs/development/python-modules/pytest-raisin/default.nix
+++ b/pkgs/development/python-modules/pytest-raisin/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-BI0SWy671DYDTPH4iO811ku6SzpH4ho7eQFUA8PmxW8=";
   };
 
-  nativeBuildInputs = [
-    flit
-  ];
+  nativeBuildInputs = [ flit ];
 
-  propagatedBuildInputs = [
-    pytest
-  ];
+  propagatedBuildInputs = [ pytest ];
 
   # tests cause circular pytest-raisin already registered with pytest error
   doCheck = false;
diff --git a/pkgs/development/python-modules/pytest-random-order/default.nix b/pkgs/development/python-modules/pytest-random-order/default.nix
index 2b2b6624c0998..9886bcf7f869b 100644
--- a/pkgs/development/python-modules/pytest-random-order/default.nix
+++ b/pkgs/development/python-modules/pytest-random-order/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, py
-, pytest
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  py,
+  pytest,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,13 +22,9 @@ buildPythonPackage rec {
     hash = "sha256-RHLX008fHF86NZxP/FwT7QZSMvMeyhnIhEwatAbnkIA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   nativeCheckInputs = [
     py
@@ -35,9 +32,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "random_order"
-  ];
+  pythonImportsCheck = [ "random_order" ];
 
   meta = with lib; {
     homepage = "https://github.com/jbasko/pytest-random-order";
diff --git a/pkgs/development/python-modules/pytest-randomly/default.nix b/pkgs/development/python-modules/pytest-randomly/default.nix
index 5549f89334a6c..b2ecfb4edb50a 100644
--- a/pkgs/development/python-modules/pytest-randomly/default.nix
+++ b/pkgs/development/python-modules/pytest-randomly/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, factory-boy
-, faker
-, fetchFromGitHub
-, importlib-metadata
-, numpy
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  factory-boy,
+  faker,
+  fetchFromGitHub,
+  importlib-metadata,
+  numpy,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -25,13 +26,9 @@ buildPythonPackage rec {
     hash = "sha256-bxbW22Nf/0hfJYSiz3xdrNCzrb7vZwuVvSIrWl0Bkv4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
   nativeCheckInputs = [
     factory-boy
@@ -47,9 +44,7 @@ buildPythonPackage rec {
     "no:randomly"
   ];
 
-  pythonImportsCheck = [
-    "pytest_randomly"
-  ];
+  pythonImportsCheck = [ "pytest_randomly" ];
 
   meta = with lib; {
     changelog = "https://github.com/pytest-dev/pytest-randomly/blob/${version}/CHANGELOG.rst";
diff --git a/pkgs/development/python-modules/pytest-recording/default.nix b/pkgs/development/python-modules/pytest-recording/default.nix
index e35b1a352b858..dd9e84b3517ef 100644
--- a/pkgs/development/python-modules/pytest-recording/default.nix
+++ b/pkgs/development/python-modules/pytest-recording/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-# install dependencies
-, pytest
-, vcrpy
-# test dependencies
-, hatchling
-, pytestCheckHook
-, pytest-httpbin
-, pytest-mock
-, requests
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  # install dependencies
+  pytest,
+  vcrpy,
+  # test dependencies
+  hatchling,
+  pytestCheckHook,
+  pytest-httpbin,
+  pytest-mock,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-recording";
-  version = "0.13.1";
+  version = "0.13.2";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "kiwicom";
     repo = "pytest-recording";
     rev = "refs/tags/v${version}";
-    hash = "sha256-HyV1wWYS/8p45mZxgA1XSChLCTYq5iOzBRqKXyZpwgo=";
+    hash = "sha256-C6uNp3knKKY0AX7fQYU85N82L6kyyO4HcExTz1bBtpE=";
   };
 
   buildInputs = [
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     pytest
   ];
 
-  propagatedBuildInputs = [
-    vcrpy
-  ];
+  propagatedBuildInputs = [ vcrpy ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -43,23 +42,19 @@ buildPythonPackage rec {
     requests
   ];
 
-  disabledTests = [
-    "test_block_network_with_allowed_hosts"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # Missing socket.AF_NETLINK
-    "test_other_socket"
-  ];
+  disabledTests =
+    [ "test_block_network_with_allowed_hosts" ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Missing socket.AF_NETLINK
+      "test_other_socket"
+    ];
 
-  pytestFlagsArray = [
-    "tests"
-  ];
+  pytestFlagsArray = [ "tests" ];
 
-  pythonImportsCheck = [
-    "pytest_recording"
-  ];
+  pythonImportsCheck = [ "pytest_recording" ];
 
   meta = with lib; {
-    description = "A pytest plugin that allows you recording of network interactions via VCR.py";
+    description = "Pytest plugin that allows you recording of network interactions via VCR.py";
     homepage = "https://github.com/kiwicom/pytest-recording";
     license = licenses.mit;
     maintainers = with maintainers; [ jbgosselin ];
diff --git a/pkgs/development/python-modules/pytest-regressions/default.nix b/pkgs/development/python-modules/pytest-regressions/default.nix
index e9950b01fdf18..5e47e2e1c6d5c 100644
--- a/pkgs/development/python-modules/pytest-regressions/default.nix
+++ b/pkgs/development/python-modules/pytest-regressions/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonAtLeast
-, pythonOlder
-, matplotlib
-, numpy
-, pandas
-, pillow
-, pytest
-, pytest-datadir
-, pytestCheckHook
-, pyyaml
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  matplotlib,
+  numpy,
+  pandas,
+  pillow,
+  pytest,
+  pytest-datadir,
+  pytestCheckHook,
+  pyyaml,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -26,20 +26,15 @@ buildPythonPackage rec {
     hash = "sha256-gYx4hMHP87q/ie67AsvCezB4VrGYVCfCTVLLgSoQb9k=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   propagatedBuildInputs = [
     pytest-datadir
     pyyaml
   ];
 
-
   nativeCheckInputs = [
     matplotlib
     pandas
@@ -47,12 +42,8 @@ buildPythonPackage rec {
   ];
 
   pytestFlagsArray = [
-    "-W" "ignore::DeprecationWarning"
-  ];
-
-  disabledTestPathss = lib.optionals (pythonAtLeast "3.12") [
-    # AttributeError: partially initialized module 'pandas' has no attribute '_pandas_datetime_CAPI' (most likely due to a circular import)
-    "tests/test_num_regression.py"
+    "-W"
+    "ignore::DeprecationWarning"
   ];
 
   pythonImportsCheck = [
@@ -61,9 +52,18 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    dataframe = [ pandas numpy ];
-    image = [ numpy pillow ];
-    num = [ numpy pandas ];
+    dataframe = [
+      pandas
+      numpy
+    ];
+    image = [
+      numpy
+      pillow
+    ];
+    num = [
+      numpy
+      pandas
+    ];
   };
 
   meta = with lib; {
@@ -76,6 +76,6 @@ buildPythonPackage rec {
     '';
     homepage = "https://github.com/ESSS/pytest-regressions";
     license = licenses.mit;
-    maintainers = with maintainers; [ AluisioASG ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-relaxed/default.nix b/pkgs/development/python-modules/pytest-relaxed/default.nix
index 8a541c74e5f69..522202a510110 100644
--- a/pkgs/development/python-modules/pytest-relaxed/default.nix
+++ b/pkgs/development/python-modules/pytest-relaxed/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, decorator
-, fetchPypi
-, invocations
-, invoke
-, pytest
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  decorator,
+  fetchPypi,
+  invoke,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,33 +21,24 @@ buildPythonPackage rec {
     hash = "sha256-lW6gKOww27+2gN2Oe0p/uPgKI5WV6Ius4Bi/LA1xgkg=";
   };
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    decorator
-  ];
+  propagatedBuildInputs = [ decorator ];
 
   nativeCheckInputs = [
-    invocations
     invoke
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "tests"
-  ];
+  pytestFlagsArray = [ "tests" ];
 
-  pythonImportsCheck = [
-    "pytest_relaxed"
-  ];
+  pythonImportsCheck = [ "pytest_relaxed" ];
 
   meta = with lib; {
     homepage = "https://pytest-relaxed.readthedocs.io/";
     description = "Relaxed test discovery/organization for pytest";
     changelog = "https://github.com/bitprophet/pytest-relaxed/blob/${version}/docs/changelog.rst";
     license = licenses.bsd0;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-remotedata/default.nix b/pkgs/development/python-modules/pytest-remotedata/default.nix
index 581145212f906..25cf16b2a6e6a 100644
--- a/pkgs/development/python-modules/pytest-remotedata/default.nix
+++ b/pkgs/development/python-modules/pytest-remotedata/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -20,38 +21,28 @@ buildPythonPackage rec {
     hash = "sha256-BcCL9jjN0e1m6wFzihZHw8cUc3w+w6vgCdLB95O0u1k=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   __darwinAllowLocalNetworking = true;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # These tests require a network connection
     "tests/test_strict_check.py"
   ];
 
-  pythonImportsCheck = [
-    "pytest_remotedata"
-  ];
+  pythonImportsCheck = [ "pytest_remotedata" ];
 
   meta = with lib; {
     description = "Pytest plugin for controlling remote data access";
     homepage = "https://github.com/astropy/pytest-remotedata";
     changelog = "https://github.com/astropy/pytest-remotedata/blob/v${version}/CHANGES.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-repeat/default.nix b/pkgs/development/python-modules/pytest-repeat/default.nix
index 1c020428c4b8e..8df24c2be1f87 100644
--- a/pkgs/development/python-modules/pytest-repeat/default.nix
+++ b/pkgs/development/python-modules/pytest-repeat/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatchling
-, hatch-vcs
-, pytest
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  hatch-vcs,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,23 +27,17 @@ buildPythonPackage rec {
     hatch-vcs
   ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pytest_repeat"
-  ];
+  pythonImportsCheck = [ "pytest_repeat" ];
 
   meta = with lib; {
     description = "Pytest plugin for repeating tests";
     homepage = "https://github.com/pytest-dev/pytest-repeat";
     changelog = "https://github.com/pytest-dev/pytest-repeat/blob/v${version}/CHANGES.rst";
     license = licenses.mpl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-rerunfailures/default.nix b/pkgs/development/python-modules/pytest-rerunfailures/default.nix
index 59d459adb6c92..751532baa6aa5 100644
--- a/pkgs/development/python-modules/pytest-rerunfailures/default.nix
+++ b/pkgs/development/python-modules/pytest-rerunfailures/default.nix
@@ -1,32 +1,43 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools
-, packaging
-, pytest
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  packaging,
+  pytest,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-rerunfailures";
-  version = "13.0";
+  version = "14.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-4TLb5CC8R29US5bnA27dCmlwdXQgm2Z3JjyVDRmwkZk=";
+    hash = "sha256-SkALy808ekrRUauK+sEj2Q7KOr4n+Ycl3E2XAoh9LpI=";
   };
 
-  nativeBuildInputs = [ setuptools ];
+  build-system = [ setuptools ];
 
   buildInputs = [ pytest ];
-  propagatedBuildInputs = [ packaging ];
+
+  dependencies = [ packaging ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
+  disabledTests = [
+    # https://github.com/pytest-dev/pytest-rerunfailures/issues/267
+    "test_run_session_teardown_once_after_reruns"
+    "test_exception_matches_rerun_except_query"
+    "test_exception_not_match_rerun_except_query"
+    "test_exception_matches_only_rerun_query"
+    "test_exception_match_only_rerun_in_dual_query"
+  ];
+
   meta = with lib; {
     description = "Pytest plugin to re-run tests to eliminate flaky failures";
     homepage = "https://github.com/pytest-dev/pytest-rerunfailures";
diff --git a/pkgs/development/python-modules/pytest-resource-path/default.nix b/pkgs/development/python-modules/pytest-resource-path/default.nix
index 28e62eaa7e459..66389e622e64d 100644
--- a/pkgs/development/python-modules/pytest-resource-path/default.nix
+++ b/pkgs/development/python-modules/pytest-resource-path/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, colorama
-, pytest
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  colorama,
+  pytest,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,21 +26,13 @@ buildPythonPackage rec {
       --replace "pytest-runner" ""
   '';
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    colorama
-  ];
+  propagatedBuildInputs = [ colorama ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pytest_resource_path"
-  ];
+  pythonImportsCheck = [ "pytest_resource_path" ];
 
   meta = with lib; {
     description = "Pytest plugin to provide path for uniform access to test resources";
diff --git a/pkgs/development/python-modules/pytest-responses/default.nix b/pkgs/development/python-modules/pytest-responses/default.nix
new file mode 100644
index 0000000000000..911fd0debdd22
--- /dev/null
+++ b/pkgs/development/python-modules/pytest-responses/default.nix
@@ -0,0 +1,38 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+  responses,
+}:
+
+buildPythonPackage rec {
+  pname = "pytest-responses";
+  version = "0.5.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "getsentry";
+    repo = "pytest-responses";
+    rev = "refs/tags/${version}";
+    hash = "sha256-6QAiNWCJbo4rmaByrc8VNw39/eF3uqFOss3GJuCvpZg=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ responses ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "pytest_responses" ];
+
+  meta = {
+    description = "Plugin for py.test response";
+    homepage = "https://github.com/getsentry/pytest-responses";
+    changelog = "https://github.com/getsentry/pytest-responses/blob/${version}/CHANGES";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ tochiaha ];
+    mainProgram = "pytest-reponses";
+  };
+}
diff --git a/pkgs/development/python-modules/pytest-reverse/default.nix b/pkgs/development/python-modules/pytest-reverse/default.nix
index 567b5b13683b9..9e6736625b364 100644
--- a/pkgs/development/python-modules/pytest-reverse/default.nix
+++ b/pkgs/development/python-modules/pytest-reverse/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytest
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-r0aSbUgArHQkpaXUvMT6oyOxEliQRtSGuDt4IILzhH4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   buildInputs = [ pytest ];
 
diff --git a/pkgs/development/python-modules/pytest-runner/default.nix b/pkgs/development/python-modules/pytest-runner/default.nix
deleted file mode 100644
index f0c7acda466a3..0000000000000
--- a/pkgs/development/python-modules/pytest-runner/default.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, pytest
-}:
-
-buildPythonPackage rec {
-  pname = "pytest-runner";
-  version = "6.0.1";
-  format = "pyproject";
-
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-cNRzlYWnAI83v0kzwBP9sye4h4paafy7MxbIiILw9Js=";
-  };
-
-  postPatch = ''
-    rm pytest.ini
-  '';
-
-  nativeBuildInputs = [
-    setuptools-scm
-    pytest
-  ];
-
-  checkPhase = ''
-    py.test tests
-  '';
-
-  # Fixture not found
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Invoke py.test as distutils command with dependency resolution";
-    homepage = "https://github.com/pytest-dev/pytest-runner";
-    license = licenses.mit;
-  };
-}
diff --git a/pkgs/development/python-modules/pytest-server-fixtures/default.nix b/pkgs/development/python-modules/pytest-server-fixtures/default.nix
index 29f26251b022c..eddc3fc06fa94 100644
--- a/pkgs/development/python-modules/pytest-server-fixtures/default.nix
+++ b/pkgs/development/python-modules/pytest-server-fixtures/default.nix
@@ -1,27 +1,47 @@
-{ lib, buildPythonPackage, fetchPypi
-, pytest, pytest-shutil, pytest-fixture-config, psutil
-, requests, future, retry }:
+{
+  lib,
+  buildPythonPackage,
+  future,
+  psutil,
+  pytest,
+  pytest-shutil,
+  pytest-fixture-config,
+  requests,
+  retry,
+  six,
+  setuptools,
+}:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "pytest-server-fixtures";
-  version = "1.7.1";
-  format = "setuptools";
+  inherit (pytest-fixture-config) version src patches;
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-xecz0gqNDnc8pRPjYOS6JkeVLqlCj6K9BVFsYoHqPOc=";
-  };
+  postPatch = ''
+    cd pytest-server-fixtures
+  '';
+
+  build-system = [ setuptools ];
 
   buildInputs = [ pytest ];
-  propagatedBuildInputs = [ pytest-shutil pytest-fixture-config psutil requests future retry ];
 
-  # RuntimeError: Unable to find a free server number to start Xvfb
+  dependencies = [
+    future
+    psutil
+    pytest-shutil
+    pytest-fixture-config
+    requests
+    retry
+    six
+  ];
+
+  # Don't run intergration tests
   doCheck = false;
 
   meta = with lib; {
     description = "Extensible server fixures for py.test";
-    homepage  = "https://github.com/manahl/pytest-plugins";
+    homepage = "https://github.com/manahl/pytest-plugins";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-services/default.nix b/pkgs/development/python-modules/pytest-services/default.nix
index 0b6a8f8f87b57..969b33dafcdb0 100644
--- a/pkgs/development/python-modules/pytest-services/default.nix
+++ b/pkgs/development/python-modules/pytest-services/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, psutil
-, pylibmc
-, pytest
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
-, setuptools-scm
-, toml
-, mysqlclient
-, zc-lockfile
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  psutil,
+  pylibmc,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools-scm,
+  toml,
+  mysqlclient,
+  zc-lockfile,
 }:
 
 buildPythonPackage rec {
@@ -57,9 +57,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pytest_services"
-  ];
+  pythonImportsCheck = [ "pytest_services" ];
 
   disabledTests = [
     # Tests require binaries and additional parts
diff --git a/pkgs/development/python-modules/pytest-shutil/default.nix b/pkgs/development/python-modules/pytest-shutil/default.nix
index 480c15b87c361..d8bde90932bf9 100644
--- a/pkgs/development/python-modules/pytest-shutil/default.nix
+++ b/pkgs/development/python-modules/pytest-shutil/default.nix
@@ -1,46 +1,52 @@
-{ lib
-, isPyPy
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  isPyPy,
+  buildPythonPackage,
+  pytest-fixture-config,
+  fetchpatch,
 
-# build
-, pytest
+  # build-time
+  setuptools,
+  setuptools-git,
 
-# runtime
-, setuptools-git
-, mock
-, path
-, execnet
-, termcolor
-, six
+  # runtime
+  pytest,
+  mock,
+  path,
+  execnet,
+  termcolor,
+  six,
 
-# tests
-, cmdline
-, pytestCheckHook
- }:
+  # tests
+  pytestCheckHook,
+}:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "pytest-shutil";
-  version = "1.7.0";
-  format = "setuptools";
+  inherit (pytest-fixture-config) version src;
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-2BZSYd5251CFBcNB2UwCsRPclj8nRUOrynTb+r0CEmE=";
-  };
+  # imp was removed in Python 3.12
+  patches = [
+    (fetchpatch {
+      name = "stop-using-imp.patch";
+      url = "https://build.opensuse.org/public/source/openSUSE:Factory/python-pytest-shutil/stop-using-imp.patch?rev=10";
+      hash = "sha256-ZsfOic6VmKIlK+HeAlUwiM4fXgw9wHo445dP9j5/h8Q=";
+    })
+  ] ++ pytest-fixture-config.patches;
 
   postPatch = ''
-    substituteInPlace setup.py \
-      --replace "contextlib2" 'contextlib2;python_version<"3"' \
-      --replace "path.py" "path"
+    cd pytest-shutil
   '';
 
-  buildInputs = [
-    pytest
+  build-system = [
+    setuptools
+    setuptools-git
   ];
 
-  propagatedBuildInputs = [
-    setuptools-git
+  buildInputs = [ pytest ];
+
+  dependencies = [
     mock
     path
     execnet
@@ -48,20 +54,17 @@ buildPythonPackage rec {
     six
   ];
 
-  nativeCheckInputs = [
-    cmdline
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = [
-    "test_pretty_formatter"
-  ] ++ lib.optionals isPyPy [
-    "test_run"
-    "test_run_integration"
-  ];
+  disabledTests =
+    [ "test_pretty_formatter" ]
+    ++ lib.optionals isPyPy [
+      "test_run"
+      "test_run_integration"
+    ];
 
   meta = with lib; {
-    description = "A goodie-bag of unix shell and environment tools for py.test";
+    description = "Goodie-bag of unix shell and environment tools for py.test";
     homepage = "https://github.com/manahl/pytest-plugins";
     maintainers = with maintainers; [ ryansydnor ];
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pytest-snapshot/default.nix b/pkgs/development/python-modules/pytest-snapshot/default.nix
index c04c9b74e3b3c..8d1f70fc8070c 100644
--- a/pkgs/development/python-modules/pytest-snapshot/default.nix
+++ b/pkgs/development/python-modules/pytest-snapshot/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, packaging
-, pytest
-, setuptools-scm
-, pytest7CheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  packaging,
+  pytest,
+  setuptools-scm,
+  pytest7CheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,31 +23,23 @@ buildPythonPackage rec {
     hash = "sha256-0PZu9wL29iEppLxxbl4D0E4WfOHe61KUUld003cRBRU=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    packaging
-  ];
+  propagatedBuildInputs = [ packaging ];
 
   nativeCheckInputs = [
     # https://github.com/joseph-roitman/pytest-snapshot/issues/71
     pytest7CheckHook
   ];
 
-  pythonImportsCheck = [
-    "pytest_snapshot"
-  ];
+  pythonImportsCheck = [ "pytest_snapshot" ];
 
   meta = with lib; {
-    description = "A plugin to enable snapshot testing with pytest";
+    description = "Plugin to enable snapshot testing with pytest";
     homepage = "https://github.com/joseph-roitman/pytest-snapshot/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-socket/default.nix b/pkgs/development/python-modules/pytest-socket/default.nix
index 9a420c1a0986d..c4350d412a3b3 100644
--- a/pkgs/development/python-modules/pytest-socket/default.nix
+++ b/pkgs/development/python-modules/pytest-socket/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest
-, pythonOlder
-, setuptoolsBuildHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,26 +21,20 @@ buildPythonPackage rec {
     hash = "sha256-19YF3q85maCVdVg2HOOPbN45RNjBf6kiFAhLut8B2tQ=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   # pytest-socket require network for majority of tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pytest_socket"
-  ];
+  pythonImportsCheck = [ "pytest_socket" ];
 
   meta = with lib; {
     description = "Pytest Plugin to disable socket calls during tests";
     homepage = "https://github.com/miketheman/pytest-socket";
     changelog = "https://github.com/miketheman/pytest-socket/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-spec/default.nix b/pkgs/development/python-modules/pytest-spec/default.nix
index 2a90d45a6ea1a..73aa1b558a1cd 100644
--- a/pkgs/development/python-modules/pytest-spec/default.nix
+++ b/pkgs/development/python-modules/pytest-spec/default.nix
@@ -1,34 +1,33 @@
 {
   lib,
   buildPythonPackage,
+  pythonOlder,
   fetchFromGitHub,
-  poetry-core,
+  setuptools,
+  setuptools-scm,
   pytest,
   pytestCheckHook,
   pytest-describe,
 }:
 
-buildPythonPackage {
+buildPythonPackage rec {
   pname = "pytest-spec";
-  version = "3.2.0-unstable-2023-06-04";
+  version = "4.0.0";
   pyproject = true;
 
+  disabled = pythonOlder "3.8";
+
   src = fetchFromGitHub {
     owner = "pchomik";
     repo = "pytest-spec";
-    rev = "e16e0550dd6bc557411e4312b7b42d53b26e69ef";
-    hash = "sha256-dyDUdZJU4E4y1yCzunAX2c48Qv6ogu0b60U/5YbJvIU=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-SOu4ucRcLQSk1YOfNifFDezsB+ZeLXTwbJJ93/3EASk=";
   };
 
-  postPatch = ''
-    sed -i '/addopts/d' setup.cfg
-    # TODO: upstream
-    substituteInPlace pyproject.toml \
-        --replace-fail "poetry>=0.12" "poetry-core" \
-        --replace-fail "poetry.masonry.api" "poetry.core.masonry.api"
-  '';
-
-  nativeBuildInputs = [ poetry-core ];
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
 
   buildInputs = [ pytest ];
 
@@ -37,12 +36,11 @@ buildPythonPackage {
     pytest-describe
   ];
 
-  pytestFlagsArray = [ "--spec" ];
-
   pythonImportsCheck = [ "pytest_spec" ];
 
   meta = {
-    description = "A pytest plugin to display test execution output like a SPECIFICATION";
+    changelog = "https://github.com/pchomik/pytest-spec/blob/${src.rev}/CHANGES.txt";
+    description = "Pytest plugin to display test execution output like a SPECIFICATION";
     homepage = "https://github.com/pchomik/pytest-spec";
     license = lib.licenses.gpl2Plus;
     maintainers = with lib.maintainers; [ tomasajt ];
diff --git a/pkgs/development/python-modules/pytest-subprocess/default.nix b/pkgs/development/python-modules/pytest-subprocess/default.nix
index 966ca16dd0ba3..e4eec03171ba9 100644
--- a/pkgs/development/python-modules/pytest-subprocess/default.nix
+++ b/pkgs/development/python-modules/pytest-subprocess/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, pytest
-, pytestCheckHook
-, docutils
-, pygments
-, pytest-rerunfailures
-, pytest-asyncio
-, anyio
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  pytest,
+  pytestCheckHook,
+  docutils,
+  pygments,
+  pytest-rerunfailures,
+  pytest-asyncio,
+  anyio,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-subprocess";
-  version = "1.5.0";
+  version = "1.5.2";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -23,16 +24,12 @@ buildPythonPackage rec {
     owner = "aklajnert";
     repo = "pytest-subprocess";
     rev = "refs/tags/${version}";
-    hash = "sha256-u9d9RhbikOyknMWs18j2efYJb9YdHsQrp31LfcbudoA=";
+    hash = "sha256-wEPIRWEwAiHSpcu9FMtkpAxqz64csT9AO27NDax3zNY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -43,12 +40,10 @@ buildPythonPackage rec {
     anyio
   ];
 
-  pytestFlagsArray = [
-    "-W ignore::DeprecationWarning"
-  ];
+  pytestFlagsArray = [ "-W ignore::DeprecationWarning" ];
 
   meta = with lib; {
-    description = "A plugin to fake subprocess for pytest";
+    description = "Plugin to fake subprocess for pytest";
     homepage = "https://github.com/aklajnert/pytest-subprocess";
     changelog = "https://github.com/aklajnert/pytest-subprocess/blob/${version}/HISTORY.rst";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pytest-subtesthack/default.nix b/pkgs/development/python-modules/pytest-subtesthack/default.nix
index 319fffe01db35..abf57ae1832a8 100644
--- a/pkgs/development/python-modules/pytest-subtesthack/default.nix
+++ b/pkgs/development/python-modules/pytest-subtesthack/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "pytest-subtesthack";
diff --git a/pkgs/development/python-modules/pytest-subtests/default.nix b/pkgs/development/python-modules/pytest-subtests/default.nix
index d9afd5f0c9a93..664e0609080d1 100644
--- a/pkgs/development/python-modules/pytest-subtests/default.nix
+++ b/pkgs/development/python-modules/pytest-subtests/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 
-# build-system
-, setuptools
-, setuptools-scm
+  # build-system
+  setuptools,
+  setuptools-scm,
 
-# dependencies
-, attrs
+  # dependencies
+  attrs,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -31,17 +32,11 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    attrs
-  ];
+  propagatedBuildInputs = [ attrs ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pytest_subtests"
-  ];
+  pythonImportsCheck = [ "pytest_subtests" ];
 
   meta = with lib; {
     description = "Pytest plugin for unittest subTest() support and subtests fixture";
diff --git a/pkgs/development/python-modules/pytest-sugar/default.nix b/pkgs/development/python-modules/pytest-sugar/default.nix
index 8076c639e7d4a..ac77a4ac27f14 100644
--- a/pkgs/development/python-modules/pytest-sugar/default.nix
+++ b/pkgs/development/python-modules/pytest-sugar/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, termcolor
-, pytest
-, packaging
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  termcolor,
+  pytest,
+  packaging,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,24 +21,20 @@ buildPythonPackage rec {
     hash = "sha256-ZCLoMlj1sMBM58YyF2x3Msq1/bkJyznMpckTn4EnbAo=";
   };
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   propagatedBuildInputs = [
     termcolor
     packaging
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A plugin that changes the default look and feel of pytest";
+    description = "Plugin that changes the default look and feel of pytest";
     homepage = "https://github.com/Frozenball/pytest-sugar";
     changelog = "https://github.com/Teemu/pytest-sugar/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-tap/default.nix b/pkgs/development/python-modules/pytest-tap/default.nix
index 32b12ddcc236b..91513ca894e27 100644
--- a/pkgs/development/python-modules/pytest-tap/default.nix
+++ b/pkgs/development/python-modules/pytest-tap/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytest
-, tappy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytest,
+  tappy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,26 +22,18 @@ buildPythonPackage rec {
     sha256 = "R0RSdKTyJYGq+x0+ut4pJEywTGNgGp/ps36ZaH5dyY4=";
   };
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    tappy
-  ];
+  propagatedBuildInputs = [ tappy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Fixed in 4ed0138bf659c348b6dfb8bb701ae1989625d3d8 and hopefully in next release
     "test_unittest_expected_failure"
   ];
 
-  pythonImportsCheck = [
-    "pytest_tap"
-  ];
+  pythonImportsCheck = [ "pytest_tap" ];
 
   meta = with lib; {
     description = "Test Anything Protocol (TAP) reporting plugin for pytest";
diff --git a/pkgs/development/python-modules/pytest-test-utils/default.nix b/pkgs/development/python-modules/pytest-test-utils/default.nix
index 127b0c1633561..3d2c0ecc35876 100644
--- a/pkgs/development/python-modules/pytest-test-utils/default.nix
+++ b/pkgs/development/python-modules/pytest-test-utils/default.nix
@@ -1,49 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, wheel
-, pytestCheckHook
-, pytest
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  pytest,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-test-utils";
-  version = "0.0.8";
-  format = "pyproject";
+  version = "0.1.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "iterative";
-    repo = pname;
+    repo = "pytest-test-utils";
     rev = "refs/tags/${version}";
-    hash = "sha256-5gB+hnJR2+NQd/n7RGrX1bzfKt8Np7IbWw61SZgNVJY=";
+    hash = "sha256-19oNAFff++7ntMdlnMXYc2w5I+EzGwWJh+rB1IjNZGk=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
-    wheel
   ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pytest_test_utils"
-  ];
+  pythonImportsCheck = [ "pytest_test_utils" ];
 
   meta = with lib; {
     description = "Pytest utilities for tests";
     homepage = "https://github.com/iterative/pytest-test-utils";
+    changelog = "https://github.com/iterative/pytest-test-utils/releases/tag/${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/pytest-testinfra/default.nix b/pkgs/development/python-modules/pytest-testinfra/default.nix
index d9743ad803e69..888233166693c 100644
--- a/pkgs/development/python-modules/pytest-testinfra/default.nix
+++ b/pkgs/development/python-modules/pytest-testinfra/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "pytest-testinfra";
-  version = "10.1.0";
+  version = "10.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-93Qzm5R3Ws3zqMSjeTqOrS6N/HD/NLd4vhWquhQPoZ4=";
+    hash = "sha256-qHbxRToBtY2U2dk23VA0TCwBrHiAorQdFb3yM67Zzx8=";
   };
 
   build-system = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/pytest-testmon/default.nix b/pkgs/development/python-modules/pytest-testmon/default.nix
index 9bceb430820ed..7fdf801dd1107 100644
--- a/pkgs/development/python-modules/pytest-testmon/default.nix
+++ b/pkgs/development/python-modules/pytest-testmon/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, coverage
-, fetchFromGitHub
-, poetry-core
-, pytest
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  coverage,
+  fetchFromGitHub,
+  pytest,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,24 +22,16 @@ buildPythonPackage rec {
     hash = "sha256-zbMX9r9lftdm9hzXMZRZZ/GEDViGk9QiYYUhO9ZcEAc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    coverage
-  ];
+  propagatedBuildInputs = [ coverage ];
 
   # The project does not include tests since version 1.3.0
   doCheck = false;
 
-  pythonImportsCheck = [
-    "testmon"
-  ];
+  pythonImportsCheck = [ "testmon" ];
 
   meta = with lib; {
     description = "Pytest plug-in which automatically selects and re-executes only tests affected by recent changes";
diff --git a/pkgs/development/python-modules/pytest-textual-snapshot/default.nix b/pkgs/development/python-modules/pytest-textual-snapshot/default.nix
index d9b51373bcdf0..911cdd5d0def0 100644
--- a/pkgs/development/python-modules/pytest-textual-snapshot/default.nix
+++ b/pkgs/development/python-modules/pytest-textual-snapshot/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, jinja2
-, pytest
-, rich
-, pythonOlder
-, syrupy
-, textual
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  jinja2,
+  pytest,
+  rich,
+  pythonOlder,
+  syrupy,
+  textual,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-textual-snapshot";
-  version = "0.4.0";
+  version = "1.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,16 +22,12 @@ buildPythonPackage rec {
     owner = "Textualize";
     repo = "pytest-textual-snapshot";
     rev = "refs/tags/v${version}";
-    hash = "sha256-XkXeyodRdwWqCP63Onx82Z3IbNLDDR/Lvaw8xUY7fAg=";
+    hash = "sha256-C8vL2kLOvVcDlTtNiG/pf7PwHzb/F0sWdkEcLvdGrd8=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   propagatedBuildInputs = [
     jinja2
@@ -42,9 +39,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pytest_textual_snapshot"
-  ];
+  pythonImportsCheck = [ "pytest_textual_snapshot" ];
 
   meta = with lib; {
     description = "Snapshot testing for Textual applications";
diff --git a/pkgs/development/python-modules/pytest-timeout/default.nix b/pkgs/development/python-modules/pytest-timeout/default.nix
index 3ea96b52634c2..d916162e5a5ca 100644
--- a/pkgs/development/python-modules/pytest-timeout/default.nix
+++ b/pkgs/development/python-modules/pytest-timeout/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, pytestCheckHook
-, pexpect
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  pytestCheckHook,
+  pexpect,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-Ejl3KRJcbsvaygEDW55SOdTblzUjIK8VWz9d4bpRZdk=";
   };
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -31,13 +30,9 @@ buildPythonPackage rec {
     "test_suppresses_timeout_when_debugger_is_entered"
   ];
 
-  pytestFlagsArray = [
-    "-ra"
-  ];
+  pytestFlagsArray = [ "-ra" ];
 
-  pythonImportsCheck = [
-    "pytest_timeout"
-  ];
+  pythonImportsCheck = [ "pytest_timeout" ];
 
   meta = with lib; {
     description = "Pytest plugin to abort hanging tests";
diff --git a/pkgs/development/python-modules/pytest-tornado/default.nix b/pkgs/development/python-modules/pytest-tornado/default.nix
index 0a39ce94b2e2b..b4851ea3a50a1 100644
--- a/pkgs/development/python-modules/pytest-tornado/default.nix
+++ b/pkgs/development/python-modules/pytest-tornado/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, pytest
-, tornado
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  pytest,
+  tornado,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -23,8 +24,8 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ tornado ];
 
   meta = with lib; {
-    description = "A py.test plugin providing fixtures and markers to simplify testing of asynchronous tornado applications.";
-    homepage =  "https://github.com/eugeniy/pytest-tornado";
+    description = "Py.test plugin providing fixtures and markers to simplify testing of asynchronous tornado applications";
+    homepage = "https://github.com/eugeniy/pytest-tornado";
     license = licenses.asl20;
   };
 }
diff --git a/pkgs/development/python-modules/pytest-tornasync/default.nix b/pkgs/development/python-modules/pytest-tornasync/default.nix
index b9fbd73c8402d..43464e3ce149a 100644
--- a/pkgs/development/python-modules/pytest-tornasync/default.nix
+++ b/pkgs/development/python-modules/pytest-tornasync/default.nix
@@ -1,5 +1,11 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy27
-, pytest, tornado }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  pytest,
+  tornado,
+}:
 
 buildPythonPackage rec {
   pname = "pytest-tornasync";
@@ -18,9 +24,7 @@ buildPythonPackage rec {
 
   buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    tornado
-  ];
+  propagatedBuildInputs = [ tornado ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -37,6 +41,6 @@ buildPythonPackage rec {
     description = "py.test plugin for testing Python 3.5+ Tornado code";
     homepage = "https://github.com/eukaryote/pytest-tornasync";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-trio/default.nix b/pkgs/development/python-modules/pytest-trio/default.nix
index 291b10f9b1b87..31caf8fc5e098 100644
--- a/pkgs/development/python-modules/pytest-trio/default.nix
+++ b/pkgs/development/python-modules/pytest-trio/default.nix
@@ -1,5 +1,13 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder
-, trio, hypothesis, outcome, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  trio,
+  hypothesis,
+  outcome,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "pytest-trio";
diff --git a/pkgs/development/python-modules/pytest-twisted/default.nix b/pkgs/development/python-modules/pytest-twisted/default.nix
index d83153c54c91e..a430b889b53f9 100644
--- a/pkgs/development/python-modules/pytest-twisted/default.nix
+++ b/pkgs/development/python-modules/pytest-twisted/default.nix
@@ -1,28 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, greenlet
-, pytest
-, decorator
-, twisted
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  greenlet,
+  pytest,
+  decorator,
+  twisted,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-twisted";
-  version = "1.14.1";
-  format = "setuptools";
+  version = "1.14.3";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-qbGLyfykfSiG+O/j/SeHmoHxwLtJ8cVgZmyedkSRtjI=";
+  src = fetchFromGitHub {
+    owner = "pytest-dev";
+    repo = "pytest-twisted";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-1dAfCa6hON0Vh9StI1Xw69IAwBzUkR6DdjQ0HNyoyME=";
   };
 
-  buildInputs = [
-    pytest
-  ];
+  build-system = [ setuptools ];
+
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     decorator
     greenlet
   ];
@@ -32,12 +36,11 @@ buildPythonPackage rec {
     twisted
   ];
 
-  pythonImportsCheck = [
-    "pytest_twisted"
-  ];
+  pythonImportsCheck = [ "pytest_twisted" ];
 
   meta = with lib; {
-    description = "A twisted plugin for py.test";
+    changelog = "https://github.com/pytest-dev/pytest-twisted/releases/tag/v${version}";
+    description = "Twisted plugin for py.test";
     homepage = "https://github.com/pytest-dev/pytest-twisted";
     license = licenses.bsd3;
     maintainers = [ ];
diff --git a/pkgs/development/python-modules/pytest-unordered/default.nix b/pkgs/development/python-modules/pytest-unordered/default.nix
index d0446e7646457..990586f28112a 100644
--- a/pkgs/development/python-modules/pytest-unordered/default.nix
+++ b/pkgs/development/python-modules/pytest-unordered/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest
-, pytest7CheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
+  pytest7CheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,18 +18,14 @@ buildPythonPackage rec {
     hash = "sha256-51UJjnGBO7qBvQlY8F0B29n8+EO2aa3DF3WOwcjZzSo=";
   };
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   nativeCheckInputs = [
     # https://github.com/utapyngo/pytest-unordered/issues/15
     pytest7CheckHook
   ];
 
-  pythonImportsCheck = [
-    "pytest_unordered"
-  ];
+  pythonImportsCheck = [ "pytest_unordered" ];
 
   meta = with lib; {
     changelog = "https://github.com/utapyngo/pytest-unordered/blob/v${version}/CHANGELOG.md";
diff --git a/pkgs/development/python-modules/pytest-vcr/default.nix b/pkgs/development/python-modules/pytest-vcr/default.nix
index eb28f2f74c287..2e77d3af8261a 100644
--- a/pkgs/development/python-modules/pytest-vcr/default.nix
+++ b/pkgs/development/python-modules/pytest-vcr/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest
-, vcrpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
+  vcrpy,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
 
   buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    vcrpy
-   ];
+  propagatedBuildInputs = [ vcrpy ];
 
   # Tests are using an obsolete attribute 'config'
   # https://github.com/ktosiek/pytest-vcr/issues/43
diff --git a/pkgs/development/python-modules/pytest-virtualenv/default.nix b/pkgs/development/python-modules/pytest-virtualenv/default.nix
index 408430d5127c2..fc027dd939299 100644
--- a/pkgs/development/python-modules/pytest-virtualenv/default.nix
+++ b/pkgs/development/python-modules/pytest-virtualenv/default.nix
@@ -1,24 +1,48 @@
-{ lib, buildPythonPackage, fetchPypi
-, pytest, pytest-cov, mock, cmdline, pytest-fixture-config, pytest-shutil, virtualenv }:
+{
+  lib,
+  buildPythonPackage,
+  cmdline,
+  importlib-metadata,
+  mock,
+  pytestCheckHook,
+  pytest,
+  pytest-fixture-config,
+  pytest-shutil,
+  setuptools,
+  virtualenv,
+}:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "pytest-virtualenv";
-  version = "1.7.0";
-  format = "setuptools";
+  inherit (pytest-fixture-config) version src patches;
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "03w2zz3crblj1p6i8nq17946hbn3zqp9z7cfnifw47hi4a4fww12";
-  };
+  postPatch = ''
+    cd pytest-virtualenv
+  '';
+
+  build-system = [ setuptools ];
+
+  buildInputs = [ pytest ];
+
+  dependencies = [
+    importlib-metadata
+    pytest-fixture-config
+    pytest-shutil
+    virtualenv
+  ];
 
-  nativeCheckInputs = [ pytest pytest-cov mock cmdline ];
-  propagatedBuildInputs = [ pytest-fixture-config pytest-shutil virtualenv ];
-  checkPhase = "py.test tests/unit ";
+  nativeCheckInputs = [
+    cmdline
+    mock
+    pytestCheckHook
+  ];
 
-  nativeBuildInputs = [ pytest ];
+  # Don't run integration tests
+  disabledTestPaths = [ "tests/integration/*" ];
 
   meta = with lib; {
-    description = "Create a Python virtual environment in your test that cleans up on teardown. The fixture has utility methods to install packages and list what’s installed.";
+    description = "Create a Python virtual environment in your test that cleans up on teardown. The fixture has utility methods to install packages and list what’s installed";
     homepage = "https://github.com/manahl/pytest-plugins";
     license = licenses.mit;
     maintainers = with maintainers; [ ryansydnor ];
diff --git a/pkgs/development/python-modules/pytest-voluptuous/default.nix b/pkgs/development/python-modules/pytest-voluptuous/default.nix
index ce1081e5febf8..dd5f6afd24112 100644
--- a/pkgs/development/python-modules/pytest-voluptuous/default.nix
+++ b/pkgs/development/python-modules/pytest-voluptuous/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest
-, pytestCheckHook
-, pythonOlder
-, six
-, voluptuous
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
+  six,
+  voluptuous,
 }:
 
 buildPythonPackage rec {
@@ -22,29 +23,21 @@ buildPythonPackage rec {
     hash = "sha256-xdj4qCSSJQI9Rb1WyUYrAg1I5wQ5o6IJyIjJAafP/LY=";
   };
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    voluptuous
-  ];
+  propagatedBuildInputs = [ voluptuous ];
 
   nativeCheckInputs = [
     pytestCheckHook
     six
   ];
 
-  pythonImportsCheck = [
-    "pytest_voluptuous"
-  ];
+  pythonImportsCheck = [ "pytest_voluptuous" ];
 
-  pytestFlagsArray = [
-    "tests/test_plugin.py"
-  ];
+  pytestFlagsArray = [ "tests/test_plugin.py" ];
 
   meta = with lib; {
-    description = "A pytest plugin for asserting data against voluptuous schema";
+    description = "Pytest plugin for asserting data against voluptuous schema";
     homepage = "https://github.com/F-Secure/pytest-voluptuous";
     changelog = "https://github.com/F-Secure/pytest-voluptuous/blob/${version}/CHANGELOG.rst";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/pytest-warnings/default.nix b/pkgs/development/python-modules/pytest-warnings/default.nix
index 594c27f18ec8d..d79138af5f414 100644
--- a/pkgs/development/python-modules/pytest-warnings/default.nix
+++ b/pkgs/development/python-modules/pytest-warnings/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "pytest-warnings";
diff --git a/pkgs/development/python-modules/pytest-watch/default.nix b/pkgs/development/python-modules/pytest-watch/default.nix
index 6158106d92deb..4008125457671 100644
--- a/pkgs/development/python-modules/pytest-watch/default.nix
+++ b/pkgs/development/python-modules/pytest-watch/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, docopt
-, colorama
-, pytest
-, watchdog
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  docopt,
+  colorama,
+  pytest,
+  watchdog,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,11 @@ buildPythonPackage rec {
 
   buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [ colorama docopt watchdog ];
+  propagatedBuildInputs = [
+    colorama
+    docopt
+    watchdog
+  ];
 
   # No Tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/pytest-xdist/default.nix b/pkgs/development/python-modules/pytest-xdist/default.nix
index 947040fbf5fd6..555c840311442 100644
--- a/pkgs/development/python-modules/pytest-xdist/default.nix
+++ b/pkgs/development/python-modules/pytest-xdist/default.nix
@@ -1,46 +1,46 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools-scm
-, pytestCheckHook
-, filelock
-, execnet
-, pytest
-, psutil
-, setproctitle
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  filelock,
+  execnet,
+  pytest,
+  psutil,
+  setproctitle,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-xdist";
-  version = "3.5.0";
+  version = "3.6.1";
   disabled = pythonOlder "3.7";
 
   pyproject = true;
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-y7NvPWfgxHi6pX+k7ciEOIfg9s/ELWd1MKNtdHKzLYo=";
+    pname = "pytest_xdist";
+    inherit version;
+    hash = "sha256-6tFWpNsjHux2lzf1dmjvWKIISjSy5VxKj6INhhEHMA0=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    execnet
-  ];
+  dependencies = [ execnet ];
 
   nativeCheckInputs = [
     filelock
     pytestCheckHook
   ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     psutil = [ psutil ];
     setproctitle = [ setproctitle ];
   };
diff --git a/pkgs/development/python-modules/pytest-xprocess/default.nix b/pkgs/development/python-modules/pytest-xprocess/default.nix
index 601eaecd3e05c..a27712212d30f 100644
--- a/pkgs/development/python-modules/pytest-xprocess/default.nix
+++ b/pkgs/development/python-modules/pytest-xprocess/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, psutil
-, py
-, pytest
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  psutil,
+  py,
+  pytest,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-xprocess";
-  version = "0.23.0";
+  version = "1.0.2";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-+NQEGiChwe8ZQwVOSj33rHtD5/KR9kD0PDTp3MSzTfo=";
+    hash = "sha256-FeJwY3WG6rxWdV7l/MgcSL20a6fvfA1bG2QwLQgMxg8=";
   };
 
   postPatch = ''
@@ -23,13 +24,9 @@ buildPythonPackage rec {
       --replace "'pytest-cache', " ""
   '';
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
   propagatedBuildInputs = [
     psutil
@@ -43,6 +40,6 @@ buildPythonPackage rec {
     description = "Pytest external process plugin";
     homepage = "https://github.com/pytest-dev";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-xvfb/default.nix b/pkgs/development/python-modules/pytest-xvfb/default.nix
index 0b555274c90af..0923c9b98bcea 100644
--- a/pkgs/development/python-modules/pytest-xvfb/default.nix
+++ b/pkgs/development/python-modules/pytest-xvfb/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, pyvirtualdisplay
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  pyvirtualdisplay,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,19 +19,15 @@ buildPythonPackage rec {
     hash = "sha256-N0arH00RWfA/dRY40FNonM0oQpGzi4+wPT67579pz8A=";
   };
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    pyvirtualdisplay
-  ];
+  propagatedBuildInputs = [ pyvirtualdisplay ];
 
   meta = with lib; {
-    description = "A pytest plugin to run Xvfb for tests";
+    description = "Pytest plugin to run Xvfb for tests";
     homepage = "https://github.com/The-Compiler/pytest-xvfb";
     changelog = "https://github.com/The-Compiler/pytest-xvfb/blob/v${version}/CHANGELOG.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest/7.nix b/pkgs/development/python-modules/pytest/7.nix
index 835e8ff42b3c0..8ca33b158e5ce 100644
--- a/pkgs/development/python-modules/pytest/7.nix
+++ b/pkgs/development/python-modules/pytest/7.nix
@@ -1,116 +1,122 @@
-{ lib
-, buildPythonPackage
-, callPackage
-, pythonOlder
-, fetchPypi
-, writeText
+{
+  lib,
+  buildPythonPackage,
+  callPackage,
+  pythonOlder,
+  fetchPypi,
+  writeText,
 
-# build-system
-, setuptools
-, setuptools-scm
+  # build-system
+  setuptools,
+  setuptools-scm,
 
-# dependencies
-, attrs
-, exceptiongroup
-, iniconfig
-, packaging
-, pluggy
-, tomli
+  # dependencies
+  attrs,
+  exceptiongroup,
+  iniconfig,
+  packaging,
+  pluggy,
+  tomli,
 
-# optional-dependencies
-, argcomplete
-, hypothesis
-, mock
-, nose
-, pygments
-, requests
-, xmlschema
+  # optional-dependencies
+  argcomplete,
+  hypothesis,
+  mock,
+  nose,
+  pygments,
+  requests,
+  xmlschema,
 }:
 
-let self = buildPythonPackage rec {
-  pname = "pytest";
-  version = "7.4.4";
-  pyproject = true;
+let
+  self = buildPythonPackage rec {
+    pname = "pytest";
+    version = "7.4.4";
+    pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-LPAAWSLGrOSj4uyLQIDrDZdT/ckxB0FTMvUM6eeZQoA=";
-  };
-
-  outputs = [
-    "out"
-    "testout"
-  ];
+    src = fetchPypi {
+      inherit pname version;
+      hash = "sha256-LPAAWSLGrOSj4uyLQIDrDZdT/ckxB0FTMvUM6eeZQoA=";
+    };
 
-  nativeBuildInputs = [
-    setuptools
-    setuptools-scm
-  ];
-
-  propagatedBuildInputs = [
-    iniconfig
-    packaging
-    pluggy
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    exceptiongroup
-    tomli
-  ];
+    outputs = [
+      "out"
+      "testout"
+    ];
 
-  passthru.optional-dependencies = {
-    testing = [
-      argcomplete
-      attrs
-      hypothesis
-      mock
-      nose
-      pygments
-      requests
+    nativeBuildInputs = [
       setuptools
-      xmlschema
+      setuptools-scm
     ];
-  };
 
-  postInstall = ''
-    mkdir $testout
-    cp -R testing $testout/testing
-  '';
+    propagatedBuildInputs =
+      [
+        iniconfig
+        packaging
+        pluggy
+      ]
+      ++ lib.optionals (pythonOlder "3.11") [
+        exceptiongroup
+        tomli
+      ];
 
-  doCheck = false;
-  passthru.tests.pytest = callPackage ./tests.nix {
-    pytest = self;
-  };
+    passthru.optional-dependencies = {
+      testing = [
+        argcomplete
+        attrs
+        hypothesis
+        mock
+        nose
+        pygments
+        requests
+        setuptools
+        xmlschema
+      ];
+    };
+
+    postInstall = ''
+      mkdir $testout
+      cp -R testing $testout/testing
+    '';
+
+    doCheck = false;
+    passthru.tests.pytest = callPackage ./tests.nix { pytest = self; };
 
-  # Remove .pytest_cache when using py.test in a Nix build
-  setupHook = writeText "pytest-hook" ''
-    pytestcachePhase() {
-        find $out -name .pytest_cache -type d -exec rm -rf {} +
-    }
-    preDistPhases+=" pytestcachePhase"
+    # Remove .pytest_cache when using py.test in a Nix build
+    setupHook = writeText "pytest-hook" ''
+      pytestcachePhase() {
+          find $out -name .pytest_cache -type d -exec rm -rf {} +
+      }
+      preDistPhases+=" pytestcachePhase"
 
-    # pytest generates it's own bytecode files to improve assertion messages.
-    # These files similar to cpython's bytecode files but are never laoded
-    # by python interpreter directly. We remove them for a few reasons:
-    # - files are non-deterministic: https://github.com/NixOS/nixpkgs/issues/139292
-    #   (file headers are generatedt by pytest directly and contain timestamps)
-    # - files are not needed after tests are finished
-    pytestRemoveBytecodePhase () {
-        # suffix is defined at:
-        #    https://github.com/pytest-dev/pytest/blob/7.2.1/src/_pytest/assertion/rewrite.py#L51-L53
-        find $out -name "*-pytest-*.py[co]" -delete
-    }
-    preDistPhases+=" pytestRemoveBytecodePhase"
-  '';
+      # pytest generates it's own bytecode files to improve assertion messages.
+      # These files similar to cpython's bytecode files but are never laoded
+      # by python interpreter directly. We remove them for a few reasons:
+      # - files are non-deterministic: https://github.com/NixOS/nixpkgs/issues/139292
+      #   (file headers are generatedt by pytest directly and contain timestamps)
+      # - files are not needed after tests are finished
+      pytestRemoveBytecodePhase () {
+          # suffix is defined at:
+          #    https://github.com/pytest-dev/pytest/blob/7.2.1/src/_pytest/assertion/rewrite.py#L51-L53
+          find $out -name "*-pytest-*.py[co]" -delete
+      }
+      preDistPhases+=" pytestRemoveBytecodePhase"
+    '';
 
-  pythonImportsCheck = [
-    "pytest"
-  ];
+    pythonImportsCheck = [ "pytest" ];
 
-  meta = with lib; {
-    description = "Framework for writing tests";
-    homepage = "https://docs.pytest.org";
-    changelog = "https://github.com/pytest-dev/pytest/releases/tag/${version}";
-    maintainers = with maintainers; [ domenkozar lovek323 madjar lsix ];
-    license = licenses.mit;
+    meta = with lib; {
+      description = "Framework for writing tests";
+      homepage = "https://docs.pytest.org";
+      changelog = "https://github.com/pytest-dev/pytest/releases/tag/${version}";
+      maintainers = with maintainers; [
+        domenkozar
+        lovek323
+        madjar
+        lsix
+      ];
+      license = licenses.mit;
+    };
   };
-};
-in self
+in
+self
diff --git a/pkgs/development/python-modules/pytest/default.nix b/pkgs/development/python-modules/pytest/default.nix
index 9b99112a5f0e9..fc5ca9c2a37b8 100644
--- a/pkgs/development/python-modules/pytest/default.nix
+++ b/pkgs/development/python-modules/pytest/default.nix
@@ -1,40 +1,40 @@
-{ lib
-, buildPythonPackage
-, callPackage
-, pythonOlder
-, fetchPypi
-, writeText
+{
+  lib,
+  buildPythonPackage,
+  callPackage,
+  pythonOlder,
+  fetchPypi,
+  writeText,
 
-# build-system
-, setuptools
-, setuptools-scm
+  # build-system
+  setuptools,
+  setuptools-scm,
 
-# dependencies
-, attrs
-, exceptiongroup
-, iniconfig
-, packaging
-, pluggy
-, tomli
+  # dependencies
+  attrs,
+  exceptiongroup,
+  iniconfig,
+  packaging,
+  pluggy,
+  tomli,
 
-# optional-dependencies
-, argcomplete
-, hypothesis
-, mock
-, nose
-, pygments
-, requests
-, xmlschema
+  # optional-dependencies
+  argcomplete,
+  hypothesis,
+  mock,
+  pygments,
+  requests,
+  xmlschema,
 }:
 
 buildPythonPackage rec {
   pname = "pytest";
-  version = "8.1.1";
+  version = "8.3.2";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-rJeBQadZSJSIF9NgKXt6rg/LnW/2vJ7G1RS4XVplwEQ=";
+    hash = "sha256-wTI0XRLOVRJCyHJp3oEkg/W8yHzbtHIuSEh7oZT5/c4=";
   };
 
   outputs = [
@@ -47,14 +47,16 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    iniconfig
-    packaging
-    pluggy
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    exceptiongroup
-    tomli
-  ];
+  propagatedBuildInputs =
+    [
+      iniconfig
+      packaging
+      pluggy
+    ]
+    ++ lib.optionals (pythonOlder "3.11") [
+      exceptiongroup
+      tomli
+    ];
 
   passthru.optional-dependencies = {
     testing = [
@@ -62,7 +64,6 @@ buildPythonPackage rec {
       attrs
       hypothesis
       mock
-      nose
       pygments
       requests
       setuptools
@@ -99,15 +100,18 @@ buildPythonPackage rec {
     preDistPhases+=" pytestRemoveBytecodePhase"
   '';
 
-  pythonImportsCheck = [
-    "pytest"
-  ];
+  pythonImportsCheck = [ "pytest" ];
 
   meta = with lib; {
     description = "Framework for writing tests";
     homepage = "https://docs.pytest.org";
     changelog = "https://github.com/pytest-dev/pytest/releases/tag/${version}";
-    maintainers = with maintainers; [ domenkozar lovek323 madjar lsix ];
+    maintainers = with maintainers; [
+      domenkozar
+      lovek323
+      madjar
+      lsix
+    ];
     license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/pytest/tests.nix b/pkgs/development/python-modules/pytest/tests.nix
index 8bf8dafdf9279..a60e3a031fdc7 100644
--- a/pkgs/development/python-modules/pytest/tests.nix
+++ b/pkgs/development/python-modules/pytest/tests.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, isPyPy
-, pytest
+{
+  buildPythonPackage,
+  isPyPy,
+  pytest,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pytestcache/default.nix b/pkgs/development/python-modules/pytestcache/default.nix
index cf8643db06d19..dbed88eb85fab 100644
--- a/pkgs/development/python-modules/pytestcache/default.nix
+++ b/pkgs/development/python-modules/pytestcache/default.nix
@@ -1,5 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi
-, pytest, execnet }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  execnet,
+}:
 
 buildPythonPackage rec {
   pname = "pytest-cache";
diff --git a/pkgs/development/python-modules/python-aodhclient/default.nix b/pkgs/development/python-modules/python-aodhclient/default.nix
new file mode 100644
index 0000000000000..9c3b015a53747
--- /dev/null
+++ b/pkgs/development/python-modules/python-aodhclient/default.nix
@@ -0,0 +1,82 @@
+{
+  lib,
+  buildPythonPackage,
+  cliff,
+  fetchFromGitHub,
+  keystoneauth1,
+  openstackdocstheme,
+  osc-lib,
+  oslo-i18n,
+  oslo-serialization,
+  oslo-utils,
+  oslotest,
+  osprofiler,
+  pbr,
+  pyparsing,
+  pythonOlder,
+  setuptools,
+  sphinxHook,
+  stestr,
+}:
+
+buildPythonPackage rec {
+  pname = "python-aodhclient";
+  version = "3.6.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "openstack";
+    repo = "python-aodhclient";
+    rev = "refs/tags/${version}";
+    hash = "sha256-FArXBkDOY0Weu3Fm/M0Qgg0XHTy95MqlUidZ/hUZfB8=";
+  };
+
+  env.PBR_VERSION = version;
+
+  build-system = [
+    pbr
+    setuptools
+  ];
+
+  nativeBuildInputs = [
+    openstackdocstheme
+    sphinxHook
+  ];
+
+  sphinxBuilders = [ "man" ];
+
+  dependencies = [
+    cliff
+    keystoneauth1
+    osc-lib
+    oslo-i18n
+    oslo-serialization
+    oslo-utils
+    osprofiler
+    pbr
+    pyparsing
+  ];
+
+  nativeCheckInputs = [
+    oslotest
+    stestr
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+    stestr run
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [ "aodhclient" ];
+
+  meta = {
+    homepage = "https://opendev.org/openstack/python-aodhclient";
+    description = "Client library for OpenStack Aodh API";
+    license = lib.licenses.asl20;
+    mainProgram = "aodh";
+    maintainers = lib.teams.openstack.members;
+  };
+}
diff --git a/pkgs/development/python-modules/python-apt/default.nix b/pkgs/development/python-modules/python-apt/default.nix
index 5d5a703a1afc4..fbb7933595ceb 100644
--- a/pkgs/development/python-modules/python-apt/default.nix
+++ b/pkgs/development/python-modules/python-apt/default.nix
@@ -2,33 +2,36 @@
   lib,
   apt,
   buildPythonPackage,
-  fetchgit,
+  fetchFromGitLab,
   setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "apt";
-  version = "2.7.6";
+  version = "2.8.0";
 
   pyproject = true;
 
-  src = fetchgit {
-    url = "https://git.launchpad.net/python-apt";
+  src = fetchFromGitLab {
+    domain = "salsa.debian.org";
+    owner = "apt-team";
+    repo = "python-apt";
     rev = "refs/tags/${version}";
-    hash = "sha256-1jTe8ncMKV78+cfSZ6p6qdjxs0plZLB4VwVtPLtDlAc=";
+    hash = "sha256-7l7rgyJ28iQuL6ShF/KYwL/kAXpLPTqnUIavVxNF+wU=";
   };
 
   buildInputs = [ apt.dev ];
 
-  nativeBuildInputs = [ setuptools ];
+  build-system = [ setuptools ];
 
   # Ensure the version is set properly without trying to invoke
   # dpkg-parsechangelog
-  env.DEBVER = "${version}";
+  env.DEBVER = version;
 
   pythonImportsCheck = [ "apt_pkg" ];
 
   meta = {
+    changelog = "https://salsa.debian.org/apt-team/python-apt/-/blob/${version}/debian/changelog";
     description = "Python bindings for APT";
     homepage = "https://launchpad.net/python-apt";
     license = lib.licenses.gpl2;
diff --git a/pkgs/development/python-modules/python-arango/default.nix b/pkgs/development/python-modules/python-arango/default.nix
index 09218269828a1..95e73ca2bb521 100644
--- a/pkgs/development/python-modules/python-arango/default.nix
+++ b/pkgs/development/python-modules/python-arango/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-
-# build-system
-, setuptools
-, setuptools-scm
-
-# dependencies
-, urllib3
-, requests
-, requests-toolbelt
-, pyjwt
-, importlib-metadata
-, packaging
-
-# tests
-, arangodb
-, mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+
+  # dependencies
+  urllib3,
+  requests,
+  requests-toolbelt,
+  pyjwt,
+  importlib-metadata,
+  packaging,
+
+  # tests
+  arangodb,
+  mock,
 }:
 
 let
@@ -32,16 +33,16 @@ in
 
 buildPythonPackage rec {
   pname = "python-arango";
-  version = "7.9.1";
+  version = "8.1.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
-    owner = "ArangoDB-Community";
+    owner = "arangodb";
     repo = "python-arango";
     rev = "refs/tags/${version}";
-    hash = "sha256-N10ysJKk0jxFyjgR/MXKHVS2MxCQtfFFGEh1IZ2eJk0=";
+    hash = "sha256-C2qFC0KOPO8I2CIDgFl0L7LyPgvqfqEeYdPAvwIJ+PY=";
   };
 
   nativeBuildInputs = [
@@ -147,9 +148,7 @@ buildPythonPackage rec {
     "test_replication_applier"
   ];
 
-  pythonImportsCheck = [
-    "arango"
-  ];
+  pythonImportsCheck = [ "arango" ];
 
   meta = with lib; {
     description = "Python Driver for ArangoDB";
diff --git a/pkgs/development/python-modules/python-awair/default.nix b/pkgs/development/python-modules/python-awair/default.nix
index fb65b6f848bc7..c814188477fa7 100644
--- a/pkgs/development/python-modules/python-awair/default.nix
+++ b/pkgs/development/python-modules/python-awair/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, voluptuous
-, vcrpy
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  voluptuous,
+  vcrpy,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/python-axolotl-curve25519/default.nix b/pkgs/development/python-modules/python-axolotl-curve25519/default.nix
index 9d039abd13f9d..cb2185845e651 100644
--- a/pkgs/development/python-modules/python-axolotl-curve25519/default.nix
+++ b/pkgs/development/python-modules/python-axolotl-curve25519/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "python-axolotl-curve25519";
diff --git a/pkgs/development/python-modules/python-axolotl/default.nix b/pkgs/development/python-modules/python-axolotl/default.nix
index 3725d0359a4e0..8af55b83ff587 100644
--- a/pkgs/development/python-modules/python-axolotl/default.nix
+++ b/pkgs/development/python-modules/python-axolotl/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi, cryptography, python-axolotl-curve25519, protobuf }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cryptography,
+  python-axolotl-curve25519,
+  protobuf,
+}:
 
 buildPythonPackage rec {
   pname = "python-axolotl";
@@ -10,7 +17,11 @@ buildPythonPackage rec {
     sha256 = "1bwdp24fmriffwx91aigs9k162albb51iskp23nc939z893q23py";
   };
 
-  propagatedBuildInputs = [ cryptography python-axolotl-curve25519 protobuf ];
+  propagatedBuildInputs = [
+    cryptography
+    python-axolotl-curve25519
+    protobuf
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/tgalal/python-axolotl";
diff --git a/pkgs/development/python-modules/python-barbicanclient/default.nix b/pkgs/development/python-modules/python-barbicanclient/default.nix
new file mode 100644
index 0000000000000..7188c83816053
--- /dev/null
+++ b/pkgs/development/python-modules/python-barbicanclient/default.nix
@@ -0,0 +1,85 @@
+{
+  lib,
+  buildPythonPackage,
+  cliff,
+  fetchFromGitea,
+  keystoneauth1,
+  openstackdocstheme,
+  oslo-i18n,
+  oslo-serialization,
+  oslo-utils,
+  pbr,
+  pythonOlder,
+  requests-mock,
+  requests,
+  setuptools,
+  sphinxcontrib-apidoc,
+  sphinxHook,
+  stestr,
+}:
+
+buildPythonPackage rec {
+  pname = "python-barbicanclient";
+  version = "7.0.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitea {
+    domain = "opendev.org";
+    owner = "openstack";
+    repo = "python-barbicanclient";
+    rev = version;
+    hash = "sha256-odoYyBulOQkjUpymFyZgvI+DYmdHJY3PaG8hh2ms+/0=";
+  };
+
+  env.PBR_VERSION = version;
+
+  postPatch = ''
+    # Disable rsvgconverter not needed to build manpage
+    substituteInPlace doc/source/conf.py \
+      --replace-fail "'sphinxcontrib.rsvgconverter'," "#'sphinxcontrib.rsvgconverter',"
+  '';
+
+  build-system = [
+    openstackdocstheme
+    pbr
+    setuptools
+    sphinxHook
+    sphinxcontrib-apidoc
+  ];
+
+  sphinxBuilders = [ "man" ];
+
+  dependencies = [
+    cliff
+    keystoneauth1
+    oslo-i18n
+    oslo-serialization
+    oslo-utils
+    requests
+  ];
+
+  doCheck = true;
+
+  nativeCheckInputs = [
+    requests-mock
+    stestr
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+    stestr run
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [ "barbicanclient" ];
+
+  meta = {
+    homepage = "https://opendev.org/openstack/python-barbicanclient";
+    description = "Client library for OpenStack Barbican API";
+    license = lib.licenses.asl20;
+    mainProgram = "barbican";
+    maintainers = lib.teams.openstack.members;
+  };
+}
diff --git a/pkgs/development/python-modules/python-barcode/default.nix b/pkgs/development/python-modules/python-barcode/default.nix
index 4c4d9b367993e..214e074ffd7a4 100644
--- a/pkgs/development/python-modules/python-barcode/default.nix
+++ b/pkgs/development/python-modules/python-barcode/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools-scm
-, pillow
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools-scm,
+  pillow,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,14 +20,10 @@ buildPythonPackage rec {
     hash = "sha256-Oxgl+9sR5ZdGbf9ChrTqmx6GpXcXtZ5WOuZ5cm/IVN4=";
   };
 
-  propagatedBuildInputs = [
-    setuptools-scm
-  ];
+  propagatedBuildInputs = [ setuptools-scm ];
 
   passthru.optional-dependencies = {
-    images = [
-      pillow
-    ];
+    images = [ pillow ];
   };
 
   postPatch = ''
@@ -36,9 +33,7 @@ buildPythonPackage rec {
       --replace "--no-cov-on-fail" ""
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.images;
+  nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.images;
 
   pythonImportsCheck = [ "barcode" ];
 
@@ -48,6 +43,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/WhyNotHugo/python-barcode";
     changelog = "https://github.com/WhyNotHugo/python-barcode/blob/v${version}/docs/changelog.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ wolfangaukang ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-baseconv/default.nix b/pkgs/development/python-modules/python-baseconv/default.nix
index 6e9acbb7873c7..c6f9386ca36c1 100644
--- a/pkgs/development/python-modules/python-baseconv/default.nix
+++ b/pkgs/development/python-modules/python-baseconv/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
 }:
 buildPythonPackage rec {
   pname = "python-baseconv";
@@ -8,7 +9,7 @@ buildPythonPackage rec {
   format = "setuptools";
 
   src = fetchPypi {
-    inherit pname version ;
+    inherit pname version;
     sha256 = "0539f8bd0464013b05ad62e0a1673f0ac9086c76b43ebf9f833053527cd9931b";
   };
 
diff --git a/pkgs/development/python-modules/python-benedict/default.nix b/pkgs/development/python-modules/python-benedict/default.nix
index 1757de4c851b6..055a993ca013b 100644
--- a/pkgs/development/python-modules/python-benedict/default.nix
+++ b/pkgs/development/python-modules/python-benedict/default.nix
@@ -1,26 +1,26 @@
-{ lib
-, boto3
-, buildPythonPackage
-, fetchFromGitHub
-, ftfy
-, mailchecker
-, openpyxl
-, orjson
-, phonenumbers
-, beautifulsoup4
-, pytestCheckHook
-, python-dateutil
-, python-decouple
-, python-fsutil
-, python-slugify
-, pythonOlder
-, pythonRelaxDepsHook
-, pyyaml
-, requests
-, setuptools
-, toml
-, xlrd
-, xmltodict
+{
+  lib,
+  boto3,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ftfy,
+  mailchecker,
+  openpyxl,
+  orjson,
+  phonenumbers,
+  beautifulsoup4,
+  pytestCheckHook,
+  python-dateutil,
+  python-decouple,
+  python-fsutil,
+  python-slugify,
+  pythonOlder,
+  pyyaml,
+  requests,
+  setuptools,
+  toml,
+  xlrd,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
@@ -37,12 +37,9 @@ buildPythonPackage rec {
     hash = "sha256-1/eLJFXACn1W5Yz43BIhdqqUVk3t9285d8aLwH+VmAE=";
   };
 
-  pythonRelaxDeps = [
-    "boto3"
-  ];
+  pythonRelaxDeps = [ "boto3" ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -84,22 +81,14 @@ buildPythonPackage rec {
       phonenumbers
       python-dateutil
     ];
-    s3 = [
-      boto3
-    ];
-    toml = [
-      toml
-    ];
+    s3 = [ boto3 ];
+    toml = [ toml ];
     xls = [
       openpyxl
       xlrd
     ];
-    xml = [
-      xmltodict
-    ];
-    yaml = [
-      pyyaml
-    ];
+    xml = [ xmltodict ];
+    yaml = [ pyyaml ];
   };
 
   nativeCheckInputs = [
@@ -123,9 +112,7 @@ buildPythonPackage rec {
     "test_from_yaml_with_valid_url_valid_content"
   ];
 
-  pythonImportsCheck = [
-    "benedict"
-  ];
+  pythonImportsCheck = [ "benedict" ];
 
   meta = with lib; {
     description = "Module with keylist/keypath support";
diff --git a/pkgs/development/python-modules/python-bidi/default.nix b/pkgs/development/python-modules/python-bidi/default.nix
index c88a2de6a1779..f2b52b1cbc70b 100644
--- a/pkgs/development/python-modules/python-bidi/default.nix
+++ b/pkgs/development/python-modules/python-bidi/default.nix
@@ -1,22 +1,48 @@
-{ lib, buildPythonPackage, fetchPypi, six }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  rustPlatform,
+  libiconv,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "python-bidi";
-  version = "0.4.2";
-  format = "setuptools";
+  version = "0.6.0";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "U0f3HoKz6Zdtxlfwne0r/jm6jWd3yoGlssVsMBIcSW4=";
+  src = fetchFromGitHub {
+    owner = "MeirKriheli";
+    repo = "python-bidi";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-LrXt9qaXfy8Rn9HjU4YSTFT4WsqzwCgh0flcxXOTF6E=";
   };
 
-  propagatedBuildInputs = [ six ];
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit src;
+    name = "${pname}-${version}";
+    hash = "sha256-34R8T8cXiX1iRx/Zb51Eb/nf0wLpN38hz0VnsmzPzws=";
+  };
+
+  buildInputs = [ libiconv ];
+
+  build-system = [
+    rustPlatform.cargoSetupHook
+    rustPlatform.maturinBuildHook
+  ];
+
+  preCheck = ''
+    rm -rf bidi
+  '';
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://github.com/MeirKriheli/python-bidi";
     description = "Pure python implementation of the BiDi layout algorithm";
     mainProgram = "pybidi";
-    platforms = platforms.unix;
-    maintainers = with maintainers; [ freezeboy ];
+    platforms = lib.platforms.unix;
+    maintainers = with lib.maintainers; [ freezeboy ];
   };
 }
diff --git a/pkgs/development/python-modules/python-binance/default.nix b/pkgs/development/python-modules/python-binance/default.nix
index 59a36e776094f..4f626ae2e78c4 100644
--- a/pkgs/development/python-modules/python-binance/default.nix
+++ b/pkgs/development/python-modules/python-binance/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, dateparser
-, fetchFromGitHub
-, fetchpatch
-, pycryptodome
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
-, six
-, ujson
-, websockets
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  dateparser,
+  fetchFromGitHub,
+  fetchpatch,
+  pycryptodome,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
+  six,
+  ujson,
+  websockets,
 }:
 
 buildPythonPackage rec {
@@ -57,9 +58,7 @@ buildPythonPackage rec {
     "tests/test_historical_klines.py"
   ];
 
-  pythonImportsCheck = [
-    "binance"
-  ];
+  pythonImportsCheck = [ "binance" ];
 
   meta = with lib; {
     description = "Binance Exchange API python implementation for automated trading";
diff --git a/pkgs/development/python-modules/python-box/default.nix b/pkgs/development/python-modules/python-box/default.nix
index 9a7350c34eb8e..97885c27a9522 100644
--- a/pkgs/development/python-modules/python-box/default.nix
+++ b/pkgs/development/python-modules/python-box/default.nix
@@ -1,22 +1,22 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, msgpack
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, ruamel-yaml
-, setuptools
-, toml
-, tomli
-, tomli-w
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+  msgpack,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  ruamel-yaml,
+  setuptools,
+  toml,
+  tomli,
+  tomli-w,
 }:
 
 buildPythonPackage rec {
   pname = "python-box";
-  version = "7.1.1";
+  version = "7.2.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "cdgriffith";
     repo = "Box";
     rev = "refs/tags/${version}";
-    hash = "sha256-oxT2y3um6BZ3bwYa+LWBoTgU+9b+V7XtQdCdECU3Gu0=";
+    hash = "sha256-5aORpuh0ezA3mUEpAPANDkdeN8ujNRfCUCV5qamMk68=";
   };
 
   nativeBuildInputs = [
@@ -39,35 +39,17 @@ buildPythonPackage rec {
       ruamel-yaml
       toml
     ];
-    yaml = [
-      ruamel-yaml
-    ];
-    ruamel-yaml = [
-      ruamel-yaml
-    ];
-    PyYAML = [
-      pyyaml
-    ];
-    tomli = [
-      tomli-w
-    ] ++ lib.optionals (pythonOlder "3.11") [
-      tomli
-    ];
-    toml = [
-      toml
-    ];
-    msgpack = [
-      msgpack
-    ];
+    yaml = [ ruamel-yaml ];
+    ruamel-yaml = [ ruamel-yaml ];
+    PyYAML = [ pyyaml ];
+    tomli = [ tomli-w ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
+    toml = [ toml ];
+    msgpack = [ msgpack ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.all;
+  nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.all;
 
-  pythonImportsCheck = [
-    "box"
-  ];
+  pythonImportsCheck = [ "box" ];
 
   meta = with lib; {
     description = "Python dictionaries with advanced dot notation access";
diff --git a/pkgs/development/python-modules/python-bring-api/default.nix b/pkgs/development/python-modules/python-bring-api/default.nix
index a5003690c404d..060c73d39cd44 100644
--- a/pkgs/development/python-modules/python-bring-api/default.nix
+++ b/pkgs/development/python-modules/python-bring-api/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,20 +22,14 @@ buildPythonPackage rec {
     hash = "sha256-VCGCm9N6pMhEYT9WuWh7qKacZEf6bcIpEsILfCC6his=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "python_bring_api"
-  ];
+  pythonImportsCheck = [ "python_bring_api" ];
 
   meta = with lib; {
     description = "Module to access the Bring! shopping lists API";
diff --git a/pkgs/development/python-modules/python-bsblan/default.nix b/pkgs/development/python-modules/python-bsblan/default.nix
index 01d9704c0399d..b6312d2c0178f 100644
--- a/pkgs/development/python-modules/python-bsblan/default.nix
+++ b/pkgs/development/python-modules/python-bsblan/default.nix
@@ -1,75 +1,68 @@
-{ lib
-, aiohttp
-, aresponses
-, backoff
-, buildPythonPackage
-, fetchFromGitHub
-, packaging
-, poetry-core
-, pydantic
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  async-timeout,
+  backoff,
+  buildPythonPackage,
+  fetchFromGitHub,
+  packaging,
+  poetry-core,
+  mashumaro,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "python-bsblan";
-  version = "0.5.18";
-  format = "pyproject";
+  version = "0.6.2";
+  pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.12";
 
   src = fetchFromGitHub {
     owner = "liudger";
-    repo = pname;
+    repo = "python-bsblan";
     rev = "refs/tags/v${version}";
-    hash = "sha256-SJUIJhsVn4LZiUx9h3Q2uWoeaQiKoIRrijTfPgCHnAA=";
+    hash = "sha256-/rdYCd5eyFqW96XaIzQOhsApzcTkrI46Gt226sLTLUQ=";
   };
 
   postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace 'version = "0.0.0"' 'version = "${version}"' \
-      --replace "--cov" ""
-    sed -i "/covdefaults/d" pyproject.toml
     sed -i "/ruff/d" pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  env.PACKAGE_VERSION = version;
+
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
+    async-timeout
     backoff
     packaging
-    pydantic
+    mashumaro
     yarl
   ];
 
   nativeCheckInputs = [
     aresponses
     pytest-asyncio
+    pytest-cov-stub
     pytest-mock
     pytestCheckHook
   ];
 
-  disabledTests = lib.optionals (lib.versionAtLeast aiohttp.version "3.9.0") [
-    # https://github.com/liudger/python-bsblan/issues/808
-    "test_http_error400"
-    "test_not_authorized_401_response"
-  ];
-
-  pythonImportsCheck = [
-    "bsblan"
-  ];
+  pythonImportsCheck = [ "bsblan" ];
 
   meta = with lib; {
     description = "Module to control and monitor an BSBLan device programmatically";
     homepage = "https://github.com/liudger/python-bsblan";
     changelog = "https://github.com/liudger/python-bsblan/releases/tag/v${version}";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/python-calamine/Cargo.lock b/pkgs/development/python-modules/python-calamine/Cargo.lock
new file mode 100644
index 0000000000000..ed92700823815
--- /dev/null
+++ b/pkgs/development/python-modules/python-calamine/Cargo.lock
@@ -0,0 +1,914 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "adler2"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
+
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "arbitrary"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110"
+dependencies = [
+ "derive_arbitrary",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
+
+[[package]]
+name = "bitflags"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
+
+[[package]]
+name = "bumpalo"
+version = "3.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
+
+[[package]]
+name = "bytecount"
+version = "0.6.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce"
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "calamine"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58785077b99914cfa7aa07b7203b1d5eb91efcd7d5ffd0f51a98b95c36112ef4"
+dependencies = [
+ "byteorder",
+ "chrono",
+ "codepage",
+ "encoding_rs",
+ "log",
+ "quick-xml",
+ "serde",
+ "zip",
+]
+
+[[package]]
+name = "camino"
+version = "1.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cargo-platform"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cargo_metadata"
+version = "0.14.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa"
+dependencies = [
+ "camino",
+ "cargo-platform",
+ "semver",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "cc"
+version = "1.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476"
+dependencies = [
+ "shlex",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "chrono"
+version = "0.4.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
+dependencies = [
+ "android-tzdata",
+ "iana-time-zone",
+ "js-sys",
+ "num-traits",
+ "serde",
+ "wasm-bindgen",
+ "windows-targets",
+]
+
+[[package]]
+name = "codepage"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48f68d061bc2828ae826206326e61251aca94c1e4a5305cf52d9138639c918b4"
+dependencies = [
+ "encoding_rs",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
+
+[[package]]
+name = "crc32fast"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
+
+[[package]]
+name = "derive_arbitrary"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "displaydoc"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
+name = "errno"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "error-chain"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
+name = "fastrand"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
+
+[[package]]
+name = "flate2"
+version = "1.0.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide",
+]
+
+[[package]]
+name = "glob"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+
+[[package]]
+name = "hashbrown"
+version = "0.14.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "windows-core",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[package]]
+name = "indoc"
+version = "2.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
+
+[[package]]
+name = "itoa"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
+
+[[package]]
+name = "js-sys"
+version = "0.3.70"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.158"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
+
+[[package]]
+name = "log"
+version = "0.4.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "memoffset"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "miniz_oxide"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
+dependencies = [
+ "adler2",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_enum"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179"
+dependencies = [
+ "num_enum_derive",
+]
+
+[[package]]
+name = "num_enum_derive"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56"
+dependencies = [
+ "proc-macro-crate",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33ea5043e58958ee56f3e15a90aee535795cd7dfd319846288d93c5b57d85cbe"
+
+[[package]]
+name = "portable-atomic"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265"
+
+[[package]]
+name = "proc-macro-crate"
+version = "3.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b"
+dependencies = [
+ "toml_edit",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.86"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "pulldown-cmark"
+version = "0.9.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b"
+dependencies = [
+ "bitflags",
+ "memchr",
+ "unicase",
+]
+
+[[package]]
+name = "pyo3"
+version = "0.22.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "831e8e819a138c36e212f3af3fd9eeffed6bf1510a805af35b0edee5ffa59433"
+dependencies = [
+ "cfg-if",
+ "chrono",
+ "indoc",
+ "libc",
+ "memoffset",
+ "once_cell",
+ "portable-atomic",
+ "pyo3-build-config",
+ "pyo3-ffi",
+ "pyo3-macros",
+ "unindent",
+]
+
+[[package]]
+name = "pyo3-build-config"
+version = "0.22.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e8730e591b14492a8945cdff32f089250b05f5accecf74aeddf9e8272ce1fa8"
+dependencies = [
+ "once_cell",
+ "python3-dll-a",
+ "target-lexicon",
+]
+
+[[package]]
+name = "pyo3-ffi"
+version = "0.22.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e97e919d2df92eb88ca80a037969f44e5e70356559654962cbb3316d00300c6"
+dependencies = [
+ "libc",
+ "pyo3-build-config",
+]
+
+[[package]]
+name = "pyo3-file"
+version = "0.8.1"
+source = "git+https://github.com/dimastbk/pyo3-file?rev=6da7c16902dde695a7b88fd83ce78ef4406e9bb7#6da7c16902dde695a7b88fd83ce78ef4406e9bb7"
+dependencies = [
+ "pyo3",
+ "skeptic",
+]
+
+[[package]]
+name = "pyo3-macros"
+version = "0.22.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb57983022ad41f9e683a599f2fd13c3664d7063a3ac5714cae4b7bee7d3f206"
+dependencies = [
+ "proc-macro2",
+ "pyo3-macros-backend",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "pyo3-macros-backend"
+version = "0.22.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec480c0c51ddec81019531705acac51bcdbeae563557c982aa8263bb96880372"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "pyo3-build-config",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "python-calamine"
+version = "0.2.3"
+dependencies = [
+ "calamine",
+ "chrono",
+ "pyo3",
+ "pyo3-build-config",
+ "pyo3-file",
+]
+
+[[package]]
+name = "python3-dll-a"
+version = "0.2.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd0b78171a90d808b319acfad166c4790d9e9759bbc14ac8273fe133673dd41b"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "quick-xml"
+version = "0.31.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33"
+dependencies = [
+ "encoding_rs",
+ "memchr",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rustix"
+version = "0.38.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811"
+dependencies = [
+ "bitflags",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "semver"
+version = "1.0.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.210"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.210"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.128"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "skeptic"
+version = "0.13.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16d23b015676c90a0f01c197bfdc786c20342c73a0afdda9025adb0bc42940a8"
+dependencies = [
+ "bytecount",
+ "cargo_metadata",
+ "error-chain",
+ "glob",
+ "pulldown-cmark",
+ "tempfile",
+ "walkdir",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "target-lexicon"
+version = "0.12.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
+
+[[package]]
+name = "tempfile"
+version = "3.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64"
+dependencies = [
+ "cfg-if",
+ "fastrand",
+ "once_cell",
+ "rustix",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.63"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.63"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
+
+[[package]]
+name = "toml_edit"
+version = "0.22.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d"
+dependencies = [
+ "indexmap",
+ "toml_datetime",
+ "winnow",
+]
+
+[[package]]
+name = "unicase"
+version = "2.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe"
+
+[[package]]
+name = "unindent"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce"
+
+[[package]]
+name = "version_check"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+
+[[package]]
+name = "walkdir"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
+dependencies = [
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "winnow"
+version = "0.6.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "zip"
+version = "1.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9cc23c04387f4da0374be4533ad1208cbb091d5c11d070dfef13676ad6497164"
+dependencies = [
+ "arbitrary",
+ "crc32fast",
+ "crossbeam-utils",
+ "displaydoc",
+ "flate2",
+ "indexmap",
+ "num_enum",
+ "thiserror",
+]
diff --git a/pkgs/development/python-modules/python-calamine/default.nix b/pkgs/development/python-modules/python-calamine/default.nix
new file mode 100644
index 0000000000000..ba4eb23badbd1
--- /dev/null
+++ b/pkgs/development/python-modules/python-calamine/default.nix
@@ -0,0 +1,69 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  rustPlatform,
+
+  # buildInputs
+  libiconv,
+
+  # build-system
+  cargo,
+  poetry-core,
+  rustc,
+
+  # dependencies
+  packaging,
+
+  # tests
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "python-calamine";
+  version = "0.2.3";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "dimastbk";
+    repo = "python-calamine";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-zZqhvfpkkbWLhPJIthDgxqvPUMpaXkyptuzY2fcecHU=";
+  };
+
+  cargoDeps = rustPlatform.importCargoLock {
+    lockFile = ./Cargo.lock;
+    outputHashes = {
+      "pyo3-file-0.8.1" = "sha256-EqeXykP7CF8SU5LgT9+y/FDy79E/DAJT2fc1OrmlOZE=";
+    };
+  };
+
+  postPatch = ''
+    ln -s ${./Cargo.lock} Cargo.lock
+  '';
+
+  buildInputs = [ libiconv ];
+
+  build-system = [
+    cargo
+    poetry-core
+    rustPlatform.cargoSetupHook
+    rustPlatform.maturinBuildHook
+    rustc
+  ];
+
+  dependencies = [ packaging ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "python_calamine" ];
+
+  meta = {
+    description = "Python binding for calamine";
+    homepage = "https://github.com/dimastbk/python-calamine";
+    changelog = "https://github.com/dimastbk/python-calamine/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ fab ];
+    mainProgram = "python-calamine";
+  };
+}
diff --git a/pkgs/development/python-modules/can/default.nix b/pkgs/development/python-modules/python-can/default.nix
index 28c401b667fe1..8224de600ae80 100644
--- a/pkgs/development/python-modules/can/default.nix
+++ b/pkgs/development/python-modules/python-can/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, future
-, hypothesis
-, packaging
-, parameterized
-, msgpack
-, pyserial
-, pytest-timeout
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, typing-extensions
-, wrapt
-, uptime
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  future,
+  hypothesis,
+  packaging,
+  parameterized,
+  msgpack,
+  pyserial,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
+  wrapt,
+  uptime,
 }:
 
 buildPythonPackage rec {
-  pname = "can";
-  version = "4.3.1";
+  pname = "python-can";
+  version = "4.4.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -28,7 +29,7 @@ buildPythonPackage rec {
     owner = "hardbyte";
     repo = "python-can";
     rev = "refs/tags/v${version}";
-    hash = "sha256-t2zt54nPOYcEE0RPb4fbW7sN4HzFXlDIHvHudstBwrM=";
+    hash = "sha256-p3B1LWSygDX0UhIx4XhXv15H7Hwn9UB20jFIPDZnuNs=";
   };
 
   postPatch = ''
@@ -36,9 +37,7 @@ buildPythonPackage rec {
       --replace " --cov=can --cov-config=tox.ini --cov-report=lcov --cov-report=term" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     msgpack
@@ -48,15 +47,9 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    serial = [
-      pyserial
-    ];
-    seeedstudio = [
-      pyserial
-    ];
-    pcan = [
-      uptime
-    ];
+    serial = [ pyserial ];
+    seeedstudio = [ pyserial ];
+    pcan = [ uptime ];
   };
 
   nativeCheckInputs = [
@@ -72,18 +65,20 @@ buildPythonPackage rec {
     "test/test_interface_canalystii.py"
   ];
 
-  disabledTests = [
-    # Tests require access socket
-    "BasicTestUdpMulticastBusIPv4"
-    "BasicTestUdpMulticastBusIPv6"
-    # pytest.approx is not supported in a boolean context (since pytest7)
-    "test_pack_unpack"
-    "test_receive"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # timing sensitive
-    "test_general"
-    "test_gap"
-  ];
+  disabledTests =
+    [
+      # Tests require access socket
+      "BasicTestUdpMulticastBusIPv4"
+      "BasicTestUdpMulticastBusIPv6"
+      # pytest.approx is not supported in a boolean context (since pytest7)
+      "test_pack_unpack"
+      "test_receive"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # timing sensitive
+      "test_general"
+      "test_gap"
+    ];
 
   preCheck = ''
     export PATH="$PATH:$out/bin";
@@ -91,15 +86,16 @@ buildPythonPackage rec {
     export CI=1
   '';
 
-  pythonImportsCheck = [
-    "can"
-  ];
+  pythonImportsCheck = [ "can" ];
 
   meta = with lib; {
     description = "CAN support for Python";
     homepage = "https://python-can.readthedocs.io";
     changelog = "https://github.com/hardbyte/python-can/releases/tag/v${version}";
     license = licenses.lgpl3Only;
-    maintainers = with maintainers; [ fab sorki ];
+    maintainers = with maintainers; [
+      fab
+      sorki
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/python-cinderclient/default.nix b/pkgs/development/python-modules/python-cinderclient/default.nix
index 037d93adb4a64..92e896e3ff65b 100644
--- a/pkgs/development/python-modules/python-cinderclient/default.nix
+++ b/pkgs/development/python-modules/python-cinderclient/default.nix
@@ -1,31 +1,49 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, ddt
-, keystoneauth1
-, oslo-i18n
-, oslo-serialization
-, oslo-utils
-, pbr
-, requests
-, prettytable
-, requests-mock
-, simplejson
-, stestr
-, stevedore
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  ddt,
+  keystoneauth1,
+  openstackdocstheme,
+  oslo-i18n,
+  oslo-serialization,
+  oslo-utils,
+  pbr,
+  requests,
+  prettytable,
+  pythonOlder,
+  reno,
+  requests-mock,
+  setuptools,
+  simplejson,
+  sphinxHook,
+  stestr,
+  stevedore,
 }:
 
 buildPythonPackage rec {
   pname = "python-cinderclient";
-  version = "9.5.0";
-  format = "setuptools";
+  version = "9.6.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-G51xev+TytQgBF+2xS9jdqty8IX4GTEwiSAg7EbJNVU=";
+    hash = "sha256-P+/eJoJS5S4w/idz9lgienjG3uN4/LEy0xyG5uybojg=";
   };
 
-  propagatedBuildInputs = [
+  nativeBuildInputs = [
+    openstackdocstheme
+    reno
+    sphinxHook
+  ];
+
+  sphinxBuilders = [ "man" ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     simplejson
     keystoneauth1
     oslo-i18n
@@ -44,7 +62,9 @@ buildPythonPackage rec {
   ];
 
   checkPhase = ''
+    runHook preCheck
     stestr run
+    runHook postCheck
   '';
 
   pythonImportsCheck = [ "cinderclient" ];
diff --git a/pkgs/development/python-modules/python-codon-tables/default.nix b/pkgs/development/python-modules/python-codon-tables/default.nix
index 455ea329675d3..f5fc127aa471c 100644
--- a/pkgs/development/python-modules/python-codon-tables/default.nix
+++ b/pkgs/development/python-modules/python-codon-tables/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/python-constraint/default.nix b/pkgs/development/python-modules/python-constraint/default.nix
index 7b191010aac58..2a9dfd05a4599 100644
--- a/pkgs/development/python-modules/python-constraint/default.nix
+++ b/pkgs/development/python-modules/python-constraint/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
   # Check inputs
-, pytestCheckHook
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,7 @@ buildPythonPackage rec {
   dontUseSetuptoolsCheck = true;
 
   meta = with lib; {
-    description = "Constraint Solving Problem resolver for Python.";
+    description = "Constraint Solving Problem resolver for Python";
     homepage = "https://labix.org/doc/constraint/";
     downloadPage = "https://github.com/python-constraint/python-constraint/releases";
     license = licenses.bsd2;
diff --git a/pkgs/development/python-modules/python-creole/default.nix b/pkgs/development/python-modules/python-creole/default.nix
index 7f27466fa2be5..53f77d388f5f4 100644
--- a/pkgs/development/python-modules/python-creole/default.nix
+++ b/pkgs/development/python-modules/python-creole/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, runtimeShell
-
-# build
-, poetry-core
-
-# propagates
-, docutils
-
-# tests
-, pytestCheckHook
-, readme-renderer
-, textile
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  runtimeShell,
+
+  # build
+  poetry-core,
+
+  # propagates
+  docutils,
+
+  # tests
+  pytestCheckHook,
+  readme-renderer,
+  textile,
 }:
 
 buildPythonPackage rec {
@@ -37,9 +38,7 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   postPatch = ''
     substituteInPlace Makefile \
@@ -48,13 +47,9 @@ buildPythonPackage rec {
     sed -i "/-cov/d" pytest.ini
   '';
 
-  propagatedBuildInputs = [
-    docutils
-  ];
+  propagatedBuildInputs = [ docutils ];
 
-  pythonImportsCheck = [
-    "creole"
-  ];
+  pythonImportsCheck = [ "creole" ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -86,6 +81,15 @@ buildPythonPackage rec {
     "creole/tests/test_rest2html.py"
   ];
 
+  pytestFlagsArray = [
+    # fixture mismatch after docutils update
+    "--deselect=creole/rest_tools/clean_writer.py::creole.rest_tools.clean_writer.rest2html"
+    "--deselect=creole/tests/test_cross_compare_all.py::CrossCompareTests::test_link"
+    "--deselect=creole/tests/test_cross_compare_all.py::CrossCompareTests::test_link_with_at_sign"
+    "--deselect=creole/tests/test_cross_compare_all.py::CrossCompareTests::test_link_with_unknown_protocol"
+    "--deselect=creole/tests/test_cross_compare_all.py::CrossCompareTests::test_link_without_title"
+  ];
+
   meta = with lib; {
     description = "Creole markup tools written in Python";
     homepage = "https://github.com/jedie/python-creole";
diff --git a/pkgs/development/python-modules/python-crfsuite/default.nix b/pkgs/development/python-modules/python-crfsuite/default.nix
index 34ed7eba301e5..5debefcbb3973 100644
--- a/pkgs/development/python-modules/python-crfsuite/default.nix
+++ b/pkgs/development/python-modules/python-crfsuite/default.nix
@@ -1,8 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,13 +20,9 @@ buildPythonPackage rec {
     rm -r pycrfsuite
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pycrfsuite"
-  ];
+  pythonImportsCheck = [ "pycrfsuite" ];
 
   meta = with lib; {
     description = "Python binding for CRFsuite";
diff --git a/pkgs/development/python-modules/python-crontab/default.nix b/pkgs/development/python-modules/python-crontab/default.nix
index 8af332aa316b7..55522bc960b57 100644
--- a/pkgs/development/python-modules/python-crontab/default.nix
+++ b/pkgs/development/python-modules/python-crontab/default.nix
@@ -1,35 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python-dateutil
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python-dateutil,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "python-crontab";
-  version = "3.0.0";
+  version = "3.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-eft0ZQOd39T7k9By1u4NRcGsi/FZfwaG6hT9Q2Hbo3k=";
+    hash = "sha256-9OoWBdJFM7Z/p6Y07ybLWaXy55VPbmd9LXoiKZWaL8g=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    python-dateutil
-  ];
+  propagatedBuildInputs = [ python-dateutil ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     "test_07_non_posix_shell"
@@ -40,9 +35,7 @@ buildPythonPackage rec {
     "test_20_frequency_at_year"
   ];
 
-  pythonImportsCheck = [
-    "crontab"
-  ];
+  pythonImportsCheck = [ "crontab" ];
 
   meta = with lib; {
     description = "Python API for crontab";
diff --git a/pkgs/development/python-modules/python-csxcad/default.nix b/pkgs/development/python-modules/python-csxcad/default.nix
index b7dc56ed27746..364b266a9c73b 100644
--- a/pkgs/development/python-modules/python-csxcad/default.nix
+++ b/pkgs/development/python-modules/python-csxcad/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cython
-, openems
-, csxcad
-, numpy
-, matplotlib
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  openems,
+  csxcad,
+  numpy,
+  matplotlib,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +17,7 @@ buildPythonPackage rec {
 
   sourceRoot = "${src.name}/python";
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
   propagatedBuildInputs = [
     openems
@@ -28,7 +26,11 @@ buildPythonPackage rec {
     matplotlib
   ];
 
-  setupPyBuildFlags = [ "-I${openems}/include" "-L${openems}/lib" "-R${openems}/lib" ];
+  setupPyBuildFlags = [
+    "-I${openems}/include"
+    "-L${openems}/lib"
+    "-R${openems}/lib"
+  ];
 
   meta = with lib; {
     description = "Python interface to CSXCAD";
diff --git a/pkgs/development/python-modules/python-ctags3/default.nix b/pkgs/development/python-modules/python-ctags3/default.nix
index 245fa3209ccb0..aa82db324c160 100644
--- a/pkgs/development/python-modules/python-ctags3/default.nix
+++ b/pkgs/development/python-modules/python-ctags3/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, cython, fetchFromGitHub }:
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+}:
 
 buildPythonPackage rec {
   pname = "python-ctags3";
@@ -12,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-XVsZckNVJ1H5q8FzqoVd1UWRw0zOygvRtb7arX9dwGE=";
   };
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
   # Regenerating the bindings keeps later versions of Python happy
   postPatch = ''
diff --git a/pkgs/development/python-modules/python-daemon/default.nix b/pkgs/development/python-modules/python-daemon/default.nix
index a0dc1f05b76e5..e8e8e2c018f79 100644
--- a/pkgs/development/python-modules/python-daemon/default.nix
+++ b/pkgs/development/python-modules/python-daemon/default.nix
@@ -1,31 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, docutils
-, lockfile
-, pytestCheckHook
-, testscenarios
-, testtools
-, twine
-, python
-, pythonOlder
-, fetchpatch
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  docutils,
+  lockfile,
+  packaging,
+  pytestCheckHook,
+  testscenarios,
+  testtools,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "python-daemon";
   version = "3.0.1";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-bFdFI3L36v9Ak0ocA60YJr9eeTVY6H/vSRMeZGS02uU=";
+    hash = "sha256-bFdFI3L36v9Ak0ocA60YJr9eeTVY6H/vSRMeZGS02uU=";
   };
 
+  postPatch = ''
+    sed -i "s/setuptools\.extern\.//g" version.py test_version.py
+  '';
+
   nativeBuildInputs = [
-    twine
+    setuptools
+    packaging
   ];
 
   propagatedBuildInputs = [
@@ -66,7 +71,10 @@ buildPythonPackage rec {
     description = "Library to implement a well-behaved Unix daemon process";
     homepage = "https://pagure.io/python-daemon/";
     # See "Copying" section in https://pagure.io/python-daemon/blob/main/f/README
-    license = with licenses; [ gpl3Plus asl20 ];
-    maintainers = with maintainers; [ ];
+    license = with licenses; [
+      gpl3Plus
+      asl20
+    ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-datemath/default.nix b/pkgs/development/python-modules/python-datemath/default.nix
index 3c12e92b9036f..efa1e5aed576c 100644
--- a/pkgs/development/python-modules/python-datemath/default.nix
+++ b/pkgs/development/python-modules/python-datemath/default.nix
@@ -1,54 +1,48 @@
-{ lib
-, arrow
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  arrow,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "python-datemath";
-  version = "1.5.5";
-  format = "setuptools";
+  version = "3.0.3";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "nickmaccarthy";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-WVWGhyBguE1+KEMQu0N5QxO7IC4rPEJ/2L3VWUCQNi4=";
+    repo = "python-datemath";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-VwdY6Gmbmoy7EKZjUlWj56uSiE0OdegPiQv+rmigkq8=";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "remove-unittest2.patch";
-      url = "https://github.com/nickmaccarthy/python-datemath/commit/781daa0241ed327d5f211f3b62f553f3ee3d86e0.patch";
-      hash = "sha256-WD6fuDaSSNXgYWoaUexiWnofCzEZzercEUlqTvOUT5I=";
-    })
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    arrow
-  ];
+  dependencies = [ arrow ];
 
   nativeCheckInputs = [
+    freezegun
     pytestCheckHook
+    pytz
   ];
 
-  pytestFlagsArray = [
-    "tests.py"
-  ];
+  pytestFlagsArray = [ "tests.py" ];
 
-  pythonImportsCheck = [
-    "datemath"
-  ];
+  pythonImportsCheck = [ "datemath" ];
 
-  meta = with lib; {
+  meta = {
     description = "Python module to emulate the date math used in SOLR and Elasticsearch";
     homepage = "https://github.com/nickmaccarthy/python-datemath";
-    license = with licenses; [ asl20 ];
-    maintainers = with maintainers; [ fab ];
+    changelog = "https://github.com/nickmaccarthy/python-datemath/blob/v${version}/CHANGELOG.md";
+    license = with lib.licenses; [ asl20 ];
+    maintainers = with lib.maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/python-dateutil/default.nix b/pkgs/development/python-modules/python-dateutil/default.nix
index dd7cc0f2ea1a5..71def22fc9c51 100644
--- a/pkgs/development/python-modules/python-dateutil/default.nix
+++ b/pkgs/development/python-modules/python-dateutil/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -41,7 +42,10 @@ buildPythonPackage rec {
     changelog = "https://github.com/dateutil/dateutil/blob/${version}/NEWS";
     description = "Powerful extensions to the standard datetime module";
     homepage = "https://github.com/dateutil/dateutil/";
-    license = with licenses; [ asl20 bsd3 ];
+    license = with licenses; [
+      asl20
+      bsd3
+    ];
     maintainers = with maintainers; [ dotlambda ];
   };
 }
diff --git a/pkgs/development/python-modules/python-dbusmock/default.nix b/pkgs/development/python-modules/python-dbusmock/default.nix
index 2a676f72832e2..9092a49d76903 100644
--- a/pkgs/development/python-modules/python-dbusmock/default.nix
+++ b/pkgs/development/python-modules/python-dbusmock/default.nix
@@ -1,14 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nose
-, dbus
-, dbus-python
-, pygobject3
-, bluez
-, networkmanager
-, setuptools-scm
-, runCommand
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  runCommand,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+
+  # dependencies
+  dbus-python,
+
+  # checks
+  dbus,
+  gobject-introspection,
+  pygobject3,
+  bluez,
+  networkmanager,
+  pytestCheckHook,
 }:
 
 let
@@ -18,10 +27,11 @@ let
     mkdir -p "$out/bin"
     ln -s "${bluez.test}/test/pbap-client" "$out/bin/pbap-client"
   '';
-in buildPythonPackage rec {
+in
+buildPythonPackage rec {
   pname = "python-dbusmock";
   version = "0.31.1";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "martinpitt";
@@ -30,53 +40,33 @@ in buildPythonPackage rec {
     hash = "sha256-DdV78o089Jkc7mSsGvlJgVpv8kPpMILo7lC6EbLxkxg=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    dbus-python
-  ];
+  dependencies = [ dbus-python ];
 
   nativeCheckInputs = [
     dbus
+    gobject-introspection
     pygobject3
     bluez
     pbap-client
     networkmanager
-    nose
+    pytestCheckHook
   ];
 
-  # TODO: Get the rest of these tests running?
-  NOSE_EXCLUDE = lib.concatStringsSep "," [
-    "test_bluez4" # NixOS ships BlueZ5
-    # These appear to fail because they're expecting to run in an Ubuntu chroot?
-    "test_everything" # BlueZ5 OBEX
-    "test_polkitd"
-    "test_consolekit"
-    "test_api"
-    "test_logind"
-    "test_notification_daemon"
-    "test_ofono"
-    "test_gnome_screensaver"
-    "test_cli"
-    "test_timedated"
-    "test_upower"
-    # needs glib
-    "test_accounts_service"
-    # needs dbus-daemon active
-    "test_systemd"
-    # Very slow, consider disabling?
-    # "test_networkmanager"
+  disabledTests = [
+    # wants to call upower, which is a reverse-dependency
+    "test_dbusmock_test_template"
+    # Failed to execute program org.TestSystem: No such file or directory
+    "test_system_service_activation"
+    "test_session_service_activation"
   ];
 
-  checkPhase = ''
-    runHook preCheck
-    nosetests -v
-    runHook postCheck
-  '';
-
   meta = with lib; {
+    changelog = "https://github.com/martinpitt/python-dbusmock/releases/tag/${version}";
     description = "Mock D-Bus objects for tests";
     homepage = "https://github.com/martinpitt/python-dbusmock";
     license = licenses.lgpl3Plus;
diff --git a/pkgs/development/python-modules/python-decouple/default.nix b/pkgs/development/python-modules/python-decouple/default.nix
index 144aec0fa5c51..41173ce424864 100644
--- a/pkgs/development/python-modules/python-decouple/default.nix
+++ b/pkgs/development/python-modules/python-decouple/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "decouple"
-  ];
+  pythonImportsCheck = [ "decouple" ];
 
   meta = with lib; {
     description = "Module to handle code and condifuration";
diff --git a/pkgs/development/python-modules/python-designateclient/default.nix b/pkgs/development/python-modules/python-designateclient/default.nix
new file mode 100644
index 0000000000000..44b5b4a665efc
--- /dev/null
+++ b/pkgs/development/python-modules/python-designateclient/default.nix
@@ -0,0 +1,83 @@
+{
+  lib,
+  buildPythonPackage,
+  debtcollector,
+  fetchFromGitea,
+  jsonschema,
+  keystoneauth1,
+  openstackdocstheme,
+  osc-lib,
+  oslo-serialization,
+  oslo-utils,
+  oslotest,
+  pbr,
+  pythonOlder,
+  requests-mock,
+  requests,
+  setuptools,
+  sphinxHook,
+  sphinxcontrib-apidoc,
+  stestr,
+}:
+
+buildPythonPackage rec {
+  pname = "python-designateclient";
+  version = "6.1.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitea {
+    domain = "opendev.org";
+    owner = "openstack";
+    repo = "python-designateclient";
+    rev = version;
+    hash = "sha256-MwcpRQXH8EjWv41iHxorbFL9EpYu8qOLkDeUx6inEAU=";
+  };
+
+  env.PBR_VERSION = version;
+
+  nativeBuildInputs = [
+    openstackdocstheme
+    sphinxHook
+    sphinxcontrib-apidoc
+  ];
+
+  sphinxBuilders = [ "man" ];
+
+  build-system = [
+    pbr
+    setuptools
+  ];
+
+  dependencies = [
+    debtcollector
+    jsonschema
+    keystoneauth1
+    osc-lib
+    oslo-serialization
+    oslo-utils
+    requests
+  ];
+
+  nativeCheckInputs = [
+    oslotest
+    requests-mock
+    stestr
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+    stestr run
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [ "designateclient" ];
+
+  meta = {
+    homepage = "https://opendev.org/openstack/python-designateclient";
+    description = "Client library for OpenStack Designate API";
+    license = lib.licenses.asl20;
+    maintainers = lib.teams.openstack.members;
+  };
+}
diff --git a/pkgs/development/python-modules/python-didl-lite/default.nix b/pkgs/development/python-modules/python-didl-lite/default.nix
index aaa5467308442..05746ccfadf56 100644
--- a/pkgs/development/python-modules/python-didl-lite/default.nix
+++ b/pkgs/development/python-modules/python-didl-lite/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, defusedxml
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  defusedxml,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-A+G97T/udyL/yRqykq1sEGDEI6ZwtDBc5xUNFiJp0UQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    defusedxml
-  ];
+  propagatedBuildInputs = [ defusedxml ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "didl_lite"
-  ];
+  pythonImportsCheck = [ "didl_lite" ];
 
   meta = with lib; {
     description = "DIDL-Lite (Digital Item Declaration Language) tools for Python";
diff --git a/pkgs/development/python-modules/python-digitalocean/default.nix b/pkgs/development/python-modules/python-digitalocean/default.nix
index c0ab09542d952..4597db497fb90 100644
--- a/pkgs/development/python-modules/python-digitalocean/default.nix
+++ b/pkgs/development/python-modules/python-digitalocean/default.nix
@@ -50,9 +50,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/koalalorenzo/python-digitalocean";
     changelog = "https://github.com/koalalorenzo/python-digitalocean/releases/tag/v${version}";
     license = with licenses; [ lgpl3Only ];
-    maintainers = with maintainers; [
-      kiwi
-      teh
-    ];
+    maintainers = with maintainers; [ teh ];
   };
 }
diff --git a/pkgs/development/python-modules/python-djvulibre/default.nix b/pkgs/development/python-modules/python-djvulibre/default.nix
index 3853e79511678..ce454d057abcf 100644
--- a/pkgs/development/python-modules/python-djvulibre/default.nix
+++ b/pkgs/development/python-modules/python-djvulibre/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cython
-, djvulibre
-, ghostscript_headless
-, packaging
-, pkg-config
-, requests
-, setuptools
-, unittestCheckHook
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cython,
+  djvulibre,
+  ghostscript_headless,
+  packaging,
+  pkg-config,
+  setuptools,
+  unittestCheckHook,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -43,7 +43,10 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [ "tests" "-v" ];
+  unittestFlagsArray = [
+    "tests"
+    "-v"
+  ];
 
   meta = with lib; {
     description = "Python support for the DjVu image format";
diff --git a/pkgs/development/python-modules/python-docs-theme/default.nix b/pkgs/development/python-modules/python-docs-theme/default.nix
index e464edc7cbc54..012157d46507b 100644
--- a/pkgs/development/python-modules/python-docs-theme/default.nix
+++ b/pkgs/development/python-modules/python-docs-theme/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pythonOlder
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pythonOlder,
+  sphinx,
 }:
 
 buildPythonPackage rec {
   pname = "python-docs-theme";
-  version = "2024.4";
+  version = "2024.6";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,20 +18,14 @@ buildPythonPackage rec {
     owner = "python";
     repo = "python-docs-theme";
     rev = "refs/tags/${version}";
-    hash = "sha256-x1r71/Urpqf0FtL2Bao5SgsRQfmwym34F7qYzxFkT5c=";
+    hash = "sha256-YKKF2e1La8jsCRS3M+LT+KmK0HxCRGQOof3MlVkMAuY=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-   sphinx
-  ];
+  propagatedBuildInputs = [ sphinx ];
 
-  pythonImportsCheck = [
-    "python_docs_theme"
-  ];
+  pythonImportsCheck = [ "python_docs_theme" ];
 
   meta = with lib; {
     description = "Sphinx theme for CPython project";
diff --git a/pkgs/development/python-modules/python-docx/default.nix b/pkgs/development/python-modules/python-docx/default.nix
index 6a5c01d216da7..28c4d4c3c115d 100644
--- a/pkgs/development/python-modules/python-docx/default.nix
+++ b/pkgs/development/python-modules/python-docx/default.nix
@@ -1,33 +1,34 @@
-{ lib
-, behave
-, buildPythonPackage
-, fetchPypi
-, lxml
-, mock
-, pyparsing
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, typing-extensions
+{
+  lib,
+  behave,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxml,
+  mock,
+  pyparsing,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "python-docx";
-  version = "1.1.0";
+  version = "1.1.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-WCm3IhQc8at5rt8MNNn+mSSyl2RYTA8hZOsrAtzfF8k=";
+  src = fetchFromGitHub {
+    owner = "python-openxml";
+    repo = "python-docx";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-isxMtq5j5J02GcHMzOJdJw+ZokLoxA6fG1xsN21Irbc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     lxml
     typing-extensions
   ];
@@ -43,9 +44,7 @@ buildPythonPackage rec {
     behave --format progress --stop --tags=-wip
   '';
 
-  pythonImportsCheck = [
-    "docx"
-  ];
+  pythonImportsCheck = [ "docx" ];
 
   disabledTests = [
     # https://github.com/python-openxml/python-docx/issues/1302
diff --git a/pkgs/development/python-modules/python-doi/default.nix b/pkgs/development/python-modules/python-doi/default.nix
index b917611deb36a..c624d12845324 100644
--- a/pkgs/development/python-modules/python-doi/default.nix
+++ b/pkgs/development/python-modules/python-doi/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy3k }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy3k,
+}:
 
 buildPythonPackage rec {
   pname = "python-doi";
diff --git a/pkgs/development/python-modules/python-dotenv/default.nix b/pkgs/development/python-modules/python-dotenv/default.nix
index 5a860279bc46f..30b817686a659 100644
--- a/pkgs/development/python-modules/python-dotenv/default.nix
+++ b/pkgs/development/python-modules/python-dotenv/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchPypi
-, ipython
-, mock
-, pytestCheckHook
-, pythonOlder
-, sh
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchPypi,
+  ipython,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  sh,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
     sh
   ];
 
-  disabledTests = [
-    "cli"
-  ];
+  disabledTests = [ "cli" ];
 
   pythonImportsCheck = [ "dotenv" ];
 
diff --git a/pkgs/development/python-modules/python-ecobee-api/default.nix b/pkgs/development/python-modules/python-ecobee-api/default.nix
index 4d12ee0c99d7c..4a99321dc880c 100644
--- a/pkgs/development/python-modules/python-ecobee-api/default.nix
+++ b/pkgs/development/python-modules/python-ecobee-api/default.nix
@@ -1,22 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "python-ecobee-api";
-  version = "0.2.17";
-  format = "setuptools";
+  version = "0.2.19";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-lJCbNOQJ8xmMa4V+tSFZx4QasK8ZLfsFavMP9Zge4K4=";
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "nkgilley";
+    repo = "python-ecobee-api";
+    rev = "refs/tags/${version}";
+    hash = "sha256-osEqDUVf7fU5DWRUQyFaM8jOi2OgSqbtMaLSWMKQMPw=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ requests ];
 
   # no tests implemented
   doCheck = false;
@@ -26,6 +33,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python API for talking to Ecobee thermostats";
     homepage = "https://github.com/nkgilley/python-ecobee-api";
+    changelog = "https://github.com/nkgilley/python-ecobee-api/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
   };
diff --git a/pkgs/development/python-modules/python-editor/default.nix b/pkgs/development/python-modules/python-editor/default.nix
index 40c86f3cf527d..21ae55ef67015 100644
--- a/pkgs/development/python-modules/python-editor/default.nix
+++ b/pkgs/development/python-modules/python-editor/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage {
@@ -19,7 +20,7 @@ buildPythonPackage {
   doCheck = false;
 
   meta = with lib; {
-    description = "A library that provides the `editor` module for programmatically";
+    description = "Library that provides the `editor` module for programmatically";
     homepage = "https://github.com/fmoo/python-editor";
     license = licenses.asl20;
   };
diff --git a/pkgs/development/python-modules/python-efl/default.nix b/pkgs/development/python-modules/python-efl/default.nix
index 6bc480b315de6..63c1043729fe7 100644
--- a/pkgs/development/python-modules/python-efl/default.nix
+++ b/pkgs/development/python-modules/python-efl/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, fetchurl
-, buildPythonPackage
-, pkg-config
-, python
-, dbus-python
-, packaging
-, enlightenment
-, directoryListingUpdater
+{
+  lib,
+  fetchurl,
+  buildPythonPackage,
+  pkg-config,
+  python,
+  dbus-python,
+  packaging,
+  enlightenment,
+  directoryListingUpdater,
 }:
 
 # Should be bumped along with EFL!
@@ -25,7 +26,10 @@ buildPythonPackage rec {
 
   buildInputs = [ enlightenment.efl ];
 
-  propagatedBuildInputs = [ dbus-python packaging ];
+  propagatedBuildInputs = [
+    dbus-python
+    packaging
+  ];
 
   preConfigure = ''
     NIX_CFLAGS_COMPILE="$(pkg-config --cflags efl evas) $NIX_CFLAGS_COMPILE"
@@ -47,7 +51,16 @@ buildPythonPackage rec {
     description = "Python bindings for Enlightenment Foundation Libraries";
     homepage = "https://github.com/DaveMDS/python-efl";
     platforms = platforms.linux;
-    license = with licenses; [ gpl3 lgpl3 ];
-    maintainers = with maintainers; [ matejc ftrvxmtrx ] ++ teams.enlightenment.members;
+    license = with licenses; [
+      gpl3
+      lgpl3
+    ];
+    maintainers =
+      with maintainers;
+      [
+        matejc
+        ftrvxmtrx
+      ]
+      ++ teams.enlightenment.members;
   };
 }
diff --git a/pkgs/development/python-modules/python-engineio-v3/default.nix b/pkgs/development/python-modules/python-engineio-v3/default.nix
new file mode 100644
index 0000000000000..65d755b43551d
--- /dev/null
+++ b/pkgs/development/python-modules/python-engineio-v3/default.nix
@@ -0,0 +1,46 @@
+{
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  requests,
+  setuptools,
+  six,
+  websocket-client,
+}:
+
+buildPythonPackage rec {
+  pname = "python-engineio-v3";
+  version = "3.14.2";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-tYri/+OKIJAWWzeijFwgY9PK66lH584dvZnoBWyzaFw=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ six ];
+
+  optional-dependencies = {
+    client = [
+      requests
+      websocket-client
+    ];
+    asyncio_client = [ aiohttp ];
+  };
+
+  pythonImportsCheck = [ "engineio_v3" ];
+
+  # no tests on PyPI
+  doCheck = false;
+
+  meta = {
+    description = "Engine.IO server";
+    homepage = "https://github.com/bdraco/python-engineio-v3";
+    license = lib.licenses.mit;
+    longDescription = "This is a release of 3.14.2 under the “engineio_v3” namespace for old systems.";
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/python-engineio/default.nix b/pkgs/development/python-modules/python-engineio/default.nix
index 952893fec269c..6a534a249f1fe 100644
--- a/pkgs/development/python-modules/python-engineio/default.nix
+++ b/pkgs/development/python-modules/python-engineio/default.nix
@@ -1,51 +1,46 @@
-{ lib
-, stdenv
-, aiohttp
-, buildPythonPackage
-, setuptools
-, eventlet
-, fetchFromGitHub
-, iana-etc
-, libredirect
-, mock
-, pytestCheckHook
-, pythonOlder
-, requests
-, simple-websocket
-, tornado
-, websocket-client
+{
+  lib,
+  stdenv,
+  aiohttp,
+  buildPythonPackage,
+  setuptools,
+  eventlet,
+  fetchFromGitHub,
+  iana-etc,
+  libredirect,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  simple-websocket,
+  tornado,
+  websocket-client,
 }:
 
 buildPythonPackage rec {
   pname = "python-engineio";
-  version = "4.9.0";
+  version = "4.9.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "miguelgrinberg";
     repo = "python-engineio";
     rev = "refs/tags/v${version}";
-    hash = "sha256-FpPGIK5HVtTzDOpORo+WPhS1860P3dm1nJkvakpzsjE=";
+    hash = "sha256-wn2qiVkL05GTopGJeghHe9i+wyOQZbEeYDmEIIbXDS0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    simple-websocket
-  ];
+  dependencies = [ simple-websocket ];
 
   passthru.optional-dependencies = {
     client = [
       requests
       websocket-client
     ];
-    asyncio_client = [
-      aiohttp
-    ];
+    asyncio_client = [ aiohttp ];
   };
 
   nativeCheckInputs = [
@@ -58,9 +53,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
-  preCheck = lib.optionalString stdenv.isLinux ''
+  preCheck = lib.optionalString stdenv.hostPlatform.isLinux ''
     echo "nameserver 127.0.0.1" > resolv.conf
     export NIX_REDIRECTS=/etc/protocols=${iana-etc}/etc/protocols:/etc/resolv.conf=$(realpath resolv.conf) \
       LD_PRELOAD=${libredirect}/lib/libredirect.so
@@ -71,13 +66,9 @@ buildPythonPackage rec {
   '';
 
   # somehow effective log level does not change?
-  disabledTests = [
-    "test_logger"
-  ];
+  disabledTests = [ "test_logger" ];
 
-  pythonImportsCheck = [
-    "engineio"
-  ];
+  pythonImportsCheck = [ "engineio" ];
 
   meta = with lib; {
     description = "Python based Engine.IO client and server";
diff --git a/pkgs/development/python-modules/python-escpos/default.nix b/pkgs/development/python-modules/python-escpos/default.nix
new file mode 100644
index 0000000000000..79db357347147
--- /dev/null
+++ b/pkgs/development/python-modules/python-escpos/default.nix
@@ -0,0 +1,101 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  setuptools,
+  setuptools-scm,
+
+  pillow,
+  qrcode,
+  python-barcode,
+  six,
+  appdirs,
+  pyyaml,
+  argcomplete,
+  importlib-resources,
+
+  pyusb,
+  pyserial,
+  pycups,
+
+  jaconv,
+  pytestCheckHook,
+  pytest-mock,
+  scripttest,
+  mock,
+  hypothesis,
+}:
+
+buildPythonPackage rec {
+  pname = "python-escpos";
+  version = "3.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "python-escpos";
+    repo = "python-escpos";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-f7qA1+8PwnXS526jjULEoyn0ejnvsneuWDt863p4J2g=";
+    fetchSubmodules = true;
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    pillow
+    qrcode
+    python-barcode
+    six
+    appdirs
+    pyyaml
+    argcomplete
+    importlib-resources
+  ];
+
+  optional-dependencies = {
+    usb = [ pyusb ];
+    serial = [ pyserial ];
+    cups = [ pycups ];
+    all = [
+      pyusb
+      pyserial
+      pycups
+    ];
+  };
+
+  preCheck = ''
+    # force the tests to use the module in $out
+    rm -r src
+
+    # disable checking coverage
+    substituteInPlace pyproject.toml \
+        --replace-fail "--cov escpos --cov-report=xml" ""
+
+    # allow tests to find the cli executable
+    export PATH="$out/bin:$PATH"
+  '';
+
+  nativeCheckInputs = [
+    jaconv
+    pytestCheckHook
+    pytest-mock
+    scripttest
+    mock
+    hypothesis
+  ] ++ optional-dependencies.all;
+
+  pythonImportsCheck = [ "escpos" ];
+
+  meta = {
+    changelog = "https://github.com/python-escpos/python-escpos/blob/${src.rev}/CHANGELOG.rst";
+    description = "Python library to manipulate ESC/POS printers";
+    homepage = "https://python-escpos.readthedocs.io/";
+    license = lib.licenses.mit;
+    mainProgram = "python-escpos";
+    maintainers = with lib.maintainers; [ tomasajt ];
+  };
+}
diff --git a/pkgs/development/python-modules/python-etcd/default.nix b/pkgs/development/python-modules/python-etcd/default.nix
index 4e711d914086b..031efa7b31e33 100644
--- a/pkgs/development/python-modules/python-etcd/default.nix
+++ b/pkgs/development/python-modules/python-etcd/default.nix
@@ -1,38 +1,56 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, mock
-, pyopenssl
-, urllib3
-, dnspython
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  urllib3,
+  dnspython,
+  pytestCheckHook,
+  etcd_3_4,
+  mock,
+  pyopenssl,
+  stdenv,
 }:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "python-etcd";
-  version = "0.4.5";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "f1b5ebb825a3e8190494f5ce1509fde9069f2754838ed90402a8c11e1f52b8cb";
+  version = "0.5.0-unstable-2023-10-31";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "jplana";
+    repo = "python-etcd";
+    rev = "5aea0fd4461bd05dd96e4ad637f6be7bceb1cee5";
+    hash = "sha256-eVirStLOPTbf860jfkNMWtGf+r0VygLZRjRDjBMCVKg=";
   };
 
-  buildInputs = [ nose mock pyopenssl ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [ urllib3 dnspython ];
+  dependencies = [
+    urllib3
+    dnspython
+  ];
 
-  postPatch = ''
-    sed -i '19s/dns/"dnspython"/' setup.py
-  '';
+  nativeCheckInputs = [
+    pytestCheckHook
+    etcd_3_4
+    mock
+    pyopenssl
+  ];
 
-  # Some issues with etcd not in path even though most tests passed
-  doCheck = false;
+  # arm64 is an unsupported platform on etcd 3.4. should be able to be removed on >= etcd 3.5
+  doCheck = !stdenv.hostPlatform.isAarch64;
+
+  preCheck = ''
+    for file in "test_auth" "integration/test_simple"; do
+      substituteInPlace src/etcd/tests/$file.py \
+        --replace-fail "assertEquals" "assertEqual"
+    done
+  '';
 
   meta = with lib; {
-    description = "A python client for Etcd";
+    description = "Python client for Etcd";
     homepage = "https://github.com/jplana/python-etcd";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/python-ethtool/default.nix b/pkgs/development/python-modules/python-ethtool/default.nix
deleted file mode 100644
index d91550e029131..0000000000000
--- a/pkgs/development/python-modules/python-ethtool/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pkg-config
-, libnl
-, nettools
-}:
-
-buildPythonPackage rec {
-  pname = "python-ethtool";
-  version = "0.15";
-  format = "setuptools";
-
-  src = fetchFromGitHub {
-    owner = "fedora-python";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "0arkcfq64a4fl88vjjsx4gd3mhcpa7mpq6sblpkgs4k4m9mccz6i";
-  };
-
-  postPatch = ''
-    substituteInPlace tests/parse_ifconfig.py --replace "Popen('ifconfig'," "Popen('${nettools}/bin/ifconfig',"
-  '';
-
-  buildInputs = [ libnl ];
-  nativeBuildInputs = [ pkg-config ];
-  pythonImportsCheck = [ "ethtool" ];
-
-  meta = with lib; {
-    description = "Python bindings for the ethtool kernel interface";
-    homepage = "https://github.com/fedora-python/python-ethtool";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ elohmeier ];
-  };
-}
diff --git a/pkgs/development/python-modules/python-ev3dev2/default.nix b/pkgs/development/python-modules/python-ev3dev2/default.nix
index 219678ef24218..dc185aced7d11 100644
--- a/pkgs/development/python-modules/python-ev3dev2/default.nix
+++ b/pkgs/development/python-modules/python-ev3dev2/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, pillow
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  pillow,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/python-family-hub-local/default.nix b/pkgs/development/python-modules/python-family-hub-local/default.nix
index 01d9da8423ddd..81ea4bff27ca3 100644
--- a/pkgs/development/python-modules/python-family-hub-local/default.nix
+++ b/pkgs/development/python-modules/python-family-hub-local/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, aiohttp
-, async-timeout
-, pillow
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  aiohttp,
+  async-timeout,
+  pillow,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +30,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyfamilyhublocal"
-  ];
+  pythonImportsCheck = [ "pyfamilyhublocal" ];
 
   meta = with lib; {
     description = "Module to accesse information from Samsung FamilyHub fridges locally";
diff --git a/pkgs/development/python-modules/python-fedora/default.nix b/pkgs/development/python-modules/python-fedora/default.nix
index 01c79c39ea1c5..4dda6c0bc84d8 100644
--- a/pkgs/development/python-modules/python-fedora/default.nix
+++ b/pkgs/development/python-modules/python-fedora/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchPypi
-, kitchen
-, lockfile
-, munch
-, nose
-, openidc-client
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
-, six
-, urllib3
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchPypi,
+  kitchen,
+  lockfile,
+  munch,
+  openidc-client,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
+  six,
+  urllib3,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-VrnYQaObQDDjiOkMe3fazUefHOXi/5sYw5VNl9Vwmhk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     beautifulsoup4
@@ -44,7 +42,6 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
-    nose
   ];
 
   disabledTestPaths = [
@@ -52,15 +49,13 @@ buildPythonPackage rec {
     "tests/functional/test_openidbaseclient.py"
   ];
 
-  pythonImportsCheck = [
-    "fedora"
-  ];
+  pythonImportsCheck = [ "fedora" ];
 
   meta = with lib; {
     description = "Module to interact with the infrastructure of the Fedora Project";
     homepage = "https://github.com/fedora-infra/python-fedora";
     changelog = "https://github.com/fedora-infra/python-fedora/releases/tag/${version}";
     license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-ffmpeg/default.nix b/pkgs/development/python-modules/python-ffmpeg/default.nix
new file mode 100644
index 0000000000000..1991f74926670
--- /dev/null
+++ b/pkgs/development/python-modules/python-ffmpeg/default.nix
@@ -0,0 +1,30 @@
+{
+  lib,
+  buildPythonPackage,
+  pyee,
+  fetchPypi,
+  setuptools-scm,
+}:
+
+buildPythonPackage rec {
+  pname = "python_ffmpeg";
+  version = "2.0.12";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "GayAr1oGSi9TwkWvGpCbLXZI6gRVANltO81Qe4jUPcc=";
+  };
+
+  propagatedBuildInputs = [ pyee ];
+
+  nativeBuildInputs = [ setuptools-scm ];
+  pythonImportsCheck = [ "ffmpeg" ];
+
+  meta = {
+    homepage = "https://github.com/jonghwanhyeon/python-ffmpeg";
+    description = "Python binding for FFmpeg which provides sync and async APIs";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ youhaveme9 ];
+  };
+}
diff --git a/pkgs/development/python-modules/python-flirt/default.nix b/pkgs/development/python-modules/python-flirt/default.nix
index 54d942fd08408..47fdc3cfa08dc 100644
--- a/pkgs/development/python-modules/python-flirt/default.nix
+++ b/pkgs/development/python-modules/python-flirt/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, rustPlatform
-, libiconv
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  rustPlatform,
+  libiconv,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     maturinBuildHook
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [
-    libiconv
-  ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
   buildAndTestSubdir = "pyflirt";
 
diff --git a/pkgs/development/python-modules/python-fluent/fluent-pygments.nix b/pkgs/development/python-modules/python-fluent/fluent-pygments.nix
new file mode 100644
index 0000000000000..141e13c1d5c41
--- /dev/null
+++ b/pkgs/development/python-modules/python-fluent/fluent-pygments.nix
@@ -0,0 +1,51 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pytestCheckHook,
+  setuptools,
+
+  # dependencies
+  fluent-syntax,
+  pygments,
+  six,
+}:
+
+let
+  version = "1.0";
+
+  src = fetchFromGitHub {
+    owner = "projectfluent";
+    repo = "python-fluent";
+    rev = "fluent.pygments@${version}";
+    hash = "sha256-AR2uce3HS1ELzpoHmx7F/5/nrL+7KhYemw/00nmvLik=";
+  };
+in
+buildPythonPackage {
+  pname = "fluent-pygments";
+  inherit version;
+  pyproject = true;
+
+  inherit src;
+  sourceRoot = "${src.name}/fluent.pygments";
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    fluent-syntax
+    pygments
+    six
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "fluent.pygments" ];
+
+  meta = {
+    changelog = "https://github.com/projectfluent/python-fluent/blob/main/fluent.pygments/CHANGELOG.rst";
+    description = "Plugin for pygments to add syntax highlighting of Fluent files in Sphinx";
+    homepage = "https://projectfluent.org/python-fluent/fluent.pygments/${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ getpsyched ];
+  };
+}
diff --git a/pkgs/development/python-modules/python-fluent/fluent-runtime.nix b/pkgs/development/python-modules/python-fluent/fluent-runtime.nix
new file mode 100644
index 0000000000000..1a011956eccee
--- /dev/null
+++ b/pkgs/development/python-modules/python-fluent/fluent-runtime.nix
@@ -0,0 +1,61 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pytestCheckHook,
+  setuptools,
+
+  # dependencies
+  attrs,
+  babel,
+  fluent-syntax,
+  pytz,
+  typing-extensions,
+}:
+
+let
+  version = "0.4.0";
+
+  src = fetchFromGitHub {
+    owner = "projectfluent";
+    repo = "python-fluent";
+    rev = "fluent.runtime@${version}";
+    hash = "sha256-Crg6ybweOZ4B3WfLMOcD7+TxGEZPTHJUxr8ItLB4G+Y=";
+  };
+in
+buildPythonPackage {
+  pname = "fluent-runtime";
+  inherit version;
+  pyproject = true;
+
+  inherit src;
+  sourceRoot = "${src.name}/fluent.runtime";
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    attrs
+    babel
+    fluent-syntax
+    pytz
+    typing-extensions
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  disabledTests = [
+    # https://github.com/projectfluent/python-fluent/pull/203
+    "test_timeZone"
+  ];
+
+  pythonImportsCheck = [ "fluent.runtime" ];
+
+  meta = {
+    changelog = "https://github.com/projectfluent/python-fluent/blob/${src.rev}/fluent.runtime/CHANGELOG.rst";
+    description = "Localization library for expressive translations";
+    downloadPage = "https://github.com/projectfluent/python-fluent/releases/tag/${src.rev}";
+    homepage = "https://projectfluent.org/python-fluent/fluent.runtime/${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ getpsyched ];
+  };
+}
diff --git a/pkgs/development/python-modules/python-fluent/fluent-syntax.nix b/pkgs/development/python-modules/python-fluent/fluent-syntax.nix
new file mode 100644
index 0000000000000..ddaa43560f2a7
--- /dev/null
+++ b/pkgs/development/python-modules/python-fluent/fluent-syntax.nix
@@ -0,0 +1,44 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pytestCheckHook,
+  setuptools,
+  typing-extensions,
+}:
+
+let
+  version = "0.19.0";
+
+  src = fetchFromGitHub {
+    owner = "projectfluent";
+    repo = "python-fluent";
+    rev = "fluent.syntax@${version}";
+    hash = "sha256-nULngwBG/ebICRDi6HMHBdT+r/oq6tbDL7C1iMZpMsA=";
+  };
+in
+buildPythonPackage {
+  pname = "fluent-syntax";
+  inherit version;
+  pyproject = true;
+
+  inherit src;
+  sourceRoot = "${src.name}/fluent.syntax";
+
+  build-system = [ setuptools ];
+
+  dependencies = [ typing-extensions ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "fluent.syntax" ];
+
+  meta = {
+    changelog = "https://github.com/projectfluent/python-fluent/blob/${src.rev}/fluent.syntax/CHANGELOG.md";
+    description = "Parse, analyze, process, and serialize Fluent files";
+    downloadPage = "https://github.com/projectfluent/python-fluent/releases/tag/${src.rev}";
+    homepage = "https://projectfluent.org/python-fluent/fluent.syntax/${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ getpsyched ];
+  };
+}
diff --git a/pkgs/development/python-modules/python-fontconfig/default.nix b/pkgs/development/python-modules/python-fontconfig/default.nix
index 7eab74cb280e9..a22b41a3d11a2 100644
--- a/pkgs/development/python-modules/python-fontconfig/default.nix
+++ b/pkgs/development/python-modules/python-fontconfig/default.nix
@@ -1,10 +1,19 @@
-{ lib, buildPythonPackage, fetchPypi, fontconfig, python, cython, freefont_ttf, makeFontsConf }:
+{
+  buildPythonPackage,
+  cython,
+  fetchPypi,
+  fetchpatch,
+  fontconfig,
+  freefont_ttf,
+  lib,
+  makeFontsConf,
+  python,
+}:
 
 let
-  fontsConf = makeFontsConf {
-    fontDirectories = [ freefont_ttf ];
-  };
-in buildPythonPackage rec {
+  fontsConf = makeFontsConf { fontDirectories = [ freefont_ttf ]; };
+in
+buildPythonPackage rec {
   pname = "python-fontconfig";
   version = "0.5.1";
 
@@ -17,6 +26,16 @@ in buildPythonPackage rec {
   buildInputs = [ fontconfig ];
   nativeBuildInputs = [ cython ];
 
+  patches = [
+    # distutils has been removed since python 3.12
+    # See https://github.com/vayn/python-fontconfig/pull/10
+    (fetchpatch {
+      name = "no-distutils.patch";
+      url = "https://github.com/vayn/python-fontconfig/commit/15e1a72c90e93a665569e0ba771ae53c7c8020c8.patch";
+      hash = "sha256-2mAemltWh3+LV4FDOg6uSD09zok3Eyd+v1WJJdouOV8=";
+    })
+  ];
+
   preBuild = ''
     ${python.pythonOnBuildForHost.interpreter} setup.py build_ext -i
   '';
@@ -30,6 +49,6 @@ in buildPythonPackage rec {
     homepage = "https://github.com/Vayn/python-fontconfig";
     description = "Python binding for Fontconfig";
     license = lib.licenses.gpl3;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-frontmatter/default.nix b/pkgs/development/python-modules/python-frontmatter/default.nix
index eab892f492835..7f630a0705a8d 100644
--- a/pkgs/development/python-modules/python-frontmatter/default.nix
+++ b/pkgs/development/python-modules/python-frontmatter/default.nix
@@ -1,4 +1,12 @@
-{ lib, fetchFromGitHub, buildPythonPackage, pyyaml, six, pytest, pyaml }:
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pyyaml,
+  six,
+  pytest,
+  pyaml,
+}:
 
 buildPythonPackage rec {
   pname = "python-frontmatter";
@@ -21,9 +29,7 @@ buildPythonPackage rec {
   # tries to import test.test, which conflicts with module
   # exported by python interpreter
   doCheck = false;
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
   pythonImportsCheck = [ "frontmatter" ];
 
diff --git a/pkgs/development/python-modules/python-fsutil/default.nix b/pkgs/development/python-modules/python-fsutil/default.nix
index c1c433ddd2db6..5bf32af287575 100644
--- a/pkgs/development/python-modules/python-fsutil/default.nix
+++ b/pkgs/development/python-modules/python-fsutil/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-Cs78zpf3W5UZJkkUBEP6l6fi2J4OtJXGvqqQ8PWKx+8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests/test.py"
-  ];
+  pytestFlagsArray = [ "tests/test.py" ];
 
   disabledTests = [
     # Tests require network access
@@ -43,9 +36,7 @@ buildPythonPackage rec {
     "test_read_file_from_url"
   ];
 
-  pythonImportsCheck = [
-    "fsutil"
-  ];
+  pythonImportsCheck = [ "fsutil" ];
 
   meta = with lib; {
     description = "Module with file-system utilities";
diff --git a/pkgs/development/python-modules/python-fullykiosk/default.nix b/pkgs/development/python-modules/python-fullykiosk/default.nix
index d1931f82f3104..66b6cb4528c43 100644
--- a/pkgs/development/python-modules/python-fullykiosk/default.nix
+++ b/pkgs/development/python-modules/python-fullykiosk/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "python-fullykiosk";
-  version = "0.0.12";
+  version = "0.0.14";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -16,19 +17,15 @@ buildPythonPackage rec {
     owner = "cgarwood";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-88PsJ1qAlOpxDtZyQe8pFC2Y3ygg3boiPxmYad58Fm8=";
+    hash = "sha256-+JBgBi05zNgIt2cXlHjFPI6nBFR7SpMCWIQHKtnZeX4=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "fullykiosk"
-  ];
+  pythonImportsCheck = [ "fullykiosk" ];
 
   meta = with lib; {
     description = "Wrapper for Fully Kiosk Browser REST interface";
diff --git a/pkgs/development/python-modules/python-fx/default.nix b/pkgs/development/python-modules/python-fx/default.nix
index 8e7de3b6a336b..40b09992d749d 100644
--- a/pkgs/development/python-modules/python-fx/default.nix
+++ b/pkgs/development/python-modules/python-fx/default.nix
@@ -1,37 +1,37 @@
-{ lib
-, antlr4-python3-runtime
-, asciimatics
-, buildPythonPackage
-, click
-, dacite
-, decorator
-, fetchFromGitHub
-, future
-, first
-, jsonpath-ng
-, loguru
-, overrides
-, pillow
-, ply
-, pyfiglet
-, pyperclip
-, pytestCheckHook
-, pythonOlder
-, antlr4
-, pythonRelaxDepsHook
-, pyyaml
-, setuptools
-, six
-, urwid
-, parameterized
-, wcwidth
-, yamale
+{
+  lib,
+  stdenv,
+  antlr4-python3-runtime,
+  asciimatics,
+  buildPythonPackage,
+  click,
+  dacite,
+  decorator,
+  fetchFromGitHub,
+  future,
+  first,
+  jsonpath-ng,
+  loguru,
+  overrides,
+  pillow,
+  ply,
+  pyfiglet,
+  pyperclip,
+  pytestCheckHook,
+  pythonOlder,
+  antlr4,
+  pyyaml,
+  setuptools,
+  urwid,
+  parameterized,
+  wcwidth,
+  yamale,
 }:
 
 buildPythonPackage rec {
   pname = "python-fx";
-  version = "0.3.1";
-  format = "setuptools";
+  version = "0.3.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -39,21 +39,20 @@ buildPythonPackage rec {
     owner = "cielong";
     repo = "pyfx";
     rev = "refs/tags/v${version}";
-    hash = "sha256-BXKH3AlYMNbMREW5Qx72PrbuZdXlmVS+knWWu/y9PsA=";
+    hash = "sha256-Q5ihWnoa7nf4EkrY4SgrwjaNvTva4RdW9GRbnbsPXPc=";
   };
 
   postPatch = ''
-    rm src/pyfx/model/common/jsonpath/*.{g4,interp,tokens}
-    antlr -Dlanguage=Python3 -visitor -o src/pyfx/model/common/jsonpath/ *.g4
+    rm src/pyfx/model/common/jsonpath/*.py # upstream checks in generated files, remove to ensure they were regenerated
+    antlr -Dlanguage=Python3 -visitor src/pyfx/model/common/jsonpath/*.g4
+    rm src/pyfx/model/common/jsonpath/*.{g4,interp,tokens} # no need to install
   '';
 
   pythonRelaxDeps = true;
 
-  nativeBuildInputs = [
-    antlr4
-    pythonRelaxDepsHook
-    setuptools
-  ];
+  build-system = [ setuptools ];
+
+  nativeBuildInputs = [ antlr4 ];
 
   propagatedBuildInputs = [
     antlr4-python3-runtime
@@ -71,7 +70,6 @@ buildPythonPackage rec {
     pyfiglet
     pyperclip
     pyyaml
-    six
     urwid
     wcwidth
     yamale
@@ -82,20 +80,17 @@ buildPythonPackage rec {
     parameterized
   ];
 
-  # antlr4 issue prevents us from running the tests
-  # https://github.com/antlr/antlr4/issues/4041
-  doCheck = false;
+  # FAILED tests/test_event_loops.py::TwistedEventLoopTest::test_run - AssertionError: 'callback called with future outcome: True' not found in ['...
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
-  # pythonImportsCheck = [
-  #   "pyfx"
-  # ];
+  pythonImportsCheck = [ "pyfx" ];
 
   meta = with lib; {
     description = "Module to view JSON in a TUI";
-    mainProgram = "pyfx";
     homepage = "https://github.com/cielong/pyfx";
     changelog = "https://github.com/cielong/pyfx/releases/tag/v${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "pyfx";
   };
 }
diff --git a/pkgs/development/python-modules/python-gammu/default.nix b/pkgs/development/python-modules/python-gammu/default.nix
index 4fb5e259329af..ed35a96f77520 100644
--- a/pkgs/development/python-modules/python-gammu/default.nix
+++ b/pkgs/development/python-modules/python-gammu/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
   #, pytestCheckHook
-, pythonOlder
-, pkg-config
-, gammu
+  pythonOlder,
+  pkg-config,
+  gammu,
 }:
 
 buildPythonPackage rec {
@@ -21,22 +22,16 @@ buildPythonPackage rec {
     hash = "sha256-lFQBrKWwdvUScwsBva08izZVeVDn1u+ldzixtL9YTpA=";
   };
 
-  nativeBuildInputs = [
-    pkg-config
-  ];
+  nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [
-    gammu
-  ];
+  buildInputs = [ gammu ];
 
   # Check with the next release if tests could be run with pytest
   # nativeCheckInputs = [ pytestCheckHook ];
   # Don't run tests for now
   doCheck = false;
 
-  pythonImportsCheck = [
-    "gammu"
-  ];
+  pythonImportsCheck = [ "gammu" ];
 
   meta = with lib; {
     description = "Python bindings for Gammu";
diff --git a/pkgs/development/python-modules/python-gitlab/default.nix b/pkgs/development/python-modules/python-gitlab/default.nix
index 3703843091d2c..33a15d52d7ed1 100644
--- a/pkgs/development/python-modules/python-gitlab/default.nix
+++ b/pkgs/development/python-modules/python-gitlab/default.nix
@@ -1,61 +1,53 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-
-# build-system
-, setuptools
-
-# dependencies
-, argcomplete
-, requests
-, requests-toolbelt
-, pyyaml
+{
+  lib,
+  argcomplete,
+  buildPythonPackage,
+  fetchPypi,
+  gql,
+  pythonOlder,
+  pyyaml,
+  requests-toolbelt,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "python-gitlab";
-  version = "4.4.0";
+  version = "4.11.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-HRF797QzroJV5ddOcsZgl49Q7oXrYiSMn7Uu9Dw+OBQ=";
+    pname = "python_gitlab";
+    inherit version;
+    hash = "sha256-evovnDBhi8Pa7pXSGGoG4c8Yyi+peJDrVf2N3E4zmBI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     requests
     requests-toolbelt
   ];
 
-  passthru.optional-dependencies = {
-    autocompletion = [
-      argcomplete
-    ];
-    yaml = [
-      pyyaml
-    ];
+  optional-dependencies = {
+    autocompletion = [ argcomplete ];
+    graphql = [ gql ] ++ gql.optional-dependencies.httpx;
+    yaml = [ pyyaml ];
   };
 
   # Tests rely on a gitlab instance on a local docker setup
   doCheck = false;
 
-  pythonImportsCheck = [
-    "gitlab"
-  ];
+  pythonImportsCheck = [ "gitlab" ];
 
   meta = with lib; {
     description = "Interact with GitLab API";
-    mainProgram = "gitlab";
     homepage = "https://github.com/python-gitlab/python-gitlab";
     changelog = "https://github.com/python-gitlab/python-gitlab/blob/v${version}/CHANGELOG.md";
     license = licenses.lgpl3Only;
     maintainers = with maintainers; [ nyanloutre ];
+    mainProgram = "gitlab";
   };
 }
diff --git a/pkgs/development/python-modules/python-glanceclient/default.nix b/pkgs/development/python-modules/python-glanceclient/default.nix
index 9fd1f21a083d8..ad872d465fa91 100644
--- a/pkgs/development/python-modules/python-glanceclient/default.nix
+++ b/pkgs/development/python-modules/python-glanceclient/default.nix
@@ -1,40 +1,57 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, coreutils
-, pbr
-, prettytable
-, keystoneauth1
-, requests
-, warlock
-, oslo-utils
-, oslo-i18n
-, wrapt
-, pyopenssl
-, pythonOlder
-, stestr
-, testscenarios
-, ddt
-, requests-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  coreutils,
+  setuptools,
+  pbr,
+  prettytable,
+  keystoneauth1,
+  requests,
+  warlock,
+  oslo-utils,
+  oslo-i18n,
+  wrapt,
+  pyopenssl,
+  pythonOlder,
+  stestr,
+  testscenarios,
+  ddt,
+  requests-mock,
+  writeText,
 }:
-
-buildPythonPackage rec {
+let
   pname = "python-glanceclient";
-  version = "4.5.0";
-  format = "setuptools";
+  version = "4.7.0";
+
+  disabledTests = [
+    "test_http_chunked_response"
+    "test_v1_download_has_no_stray_output_to_stdout"
+    "test_v2_requests_valid_cert_verification"
+    "test_download_has_no_stray_output_to_stdout"
+    "test_v2_download_has_no_stray_output_to_stdout"
+    "test_v2_requests_valid_cert_verification_no_compression"
+    "test_log_request_id_once"
+  ];
+in
+buildPythonPackage {
+  inherit pname version;
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ZGTE1be+S/4Tbhw6Px+9qMgkNTZgoDn6lnAJhNvVYuA=";
+    hash = "sha256-wZRS7xLaPEhLadIqiIznp0kQvbh4O76RJIxg76U3iBA=";
   };
 
   postPatch = ''
     substituteInPlace glanceclient/tests/unit/v1/test_shell.py \
-      --replace "/bin/echo" "${coreutils}/bin/echo"
+      --replace-fail "/bin/echo" "${lib.getExe' coreutils "echo"}"
   '';
 
+  nativeBuildInputs = [ setuptools ];
+
   propagatedBuildInputs = [
     pbr
     prettytable
@@ -55,12 +72,12 @@ buildPythonPackage rec {
   ];
 
   checkPhase = ''
-    stestr run
+    runHook preCheck
+    stestr run -e ${writeText "disabled-tests" (lib.concatStringsSep "\n" disabledTests)}
+    runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "glanceclient"
-  ];
+  pythonImportsCheck = [ "glanceclient" ];
 
   meta = with lib; {
     description = "Python bindings for the OpenStack Images API";
diff --git a/pkgs/development/python-modules/python-gnupg/default.nix b/pkgs/development/python-modules/python-gnupg/default.nix
index 95ebc2b954e8e..77a960e889589 100644
--- a/pkgs/development/python-modules/python-gnupg/default.nix
+++ b/pkgs/development/python-modules/python-gnupg/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, gnupg
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  gnupg,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "python-gnupg";
-  version = "0.5.2";
+  version = "0.5.3";
 
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-AdgBOTHJ+j9Fgku+pwVMA9bhHyWKcufghuFo28uRhUw=";
+    hash = "sha256-KQ2N25zWPfls/pKEubJl8Z/W4UXlWC3Fj9cnHwJtCkc=";
   };
 
   postPatch = ''
@@ -24,13 +25,9 @@ buildPythonPackage rec {
       --replace "os.environ.get('GPGBINARY', 'gpg')" "os.environ.get('GPGBINARY', '${gnupg}/bin/gpg')"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # network access
diff --git a/pkgs/development/python-modules/python-google-nest/default.nix b/pkgs/development/python-modules/python-google-nest/default.nix
index 32dc8de3964ad..39e4b707c5b97 100644
--- a/pkgs/development/python-modules/python-google-nest/default.nix
+++ b/pkgs/development/python-modules/python-google-nest/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests-oauthlib
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests-oauthlib,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-qL4Qk2NW41Sb9raF0vnEb04w3uyaWPauDnNY+DvnNgQ=";
   };
 
-  propagatedBuildInputs = [
-    requests-oauthlib
-  ];
+  propagatedBuildInputs = [ requests-oauthlib ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "nest"
-  ];
+  pythonImportsCheck = [ "nest" ];
 
   meta = with lib; {
     description = "Python API and command line tool for talking to Nest thermostats";
diff --git a/pkgs/development/python-modules/python-gvm/default.nix b/pkgs/development/python-modules/python-gvm/default.nix
index efe048a33d1fc..6d346d6c638b1 100644
--- a/pkgs/development/python-modules/python-gvm/default.nix
+++ b/pkgs/development/python-modules/python-gvm/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, defusedxml
-, fetchFromGitHub
-, lxml
-, paramiko
-, poetry-core
-, pontos
-, pytestCheckHook
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  defusedxml,
+  fetchFromGitHub,
+  lxml,
+  paramiko,
+  poetry-core,
+  pontos,
+  pytestCheckHook,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "python-gvm";
-  version = "24.3.0";
+  version = "24.8.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -23,12 +24,12 @@ buildPythonPackage rec {
     owner = "greenbone";
     repo = "python-gvm";
     rev = "refs/tags/v${version}";
-    hash = "sha256-GIEsP8+RJMIehsBbZWpIRXCdqxm042lPbYTHY7/fknM=";
+    hash = "sha256-JyImC75Le6S2kQXSU/Ze4TNaitJSJ8LD9j/ny+xjoGA=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
+
+  pythonRelaxDeps = [ "defusedxml" ];
 
   dependencies = [
     defusedxml
@@ -46,13 +47,9 @@ buildPythonPackage rec {
     # No running SSH available
     "test_connect_error"
     "test_feed_xml_error"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_feed_xml_error"
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ "test_feed_xml_error" ];
 
-  pythonImportsCheck = [
-    "gvm"
-  ];
+  pythonImportsCheck = [ "gvm" ];
 
   meta = with lib; {
     description = "Collection of APIs that help with remote controlling a Greenbone Security Manager";
diff --git a/pkgs/development/python-modules/python-hcl2/default.nix b/pkgs/development/python-modules/python-hcl2/default.nix
new file mode 100644
index 0000000000000..36ac08291140a
--- /dev/null
+++ b/pkgs/development/python-modules/python-hcl2/default.nix
@@ -0,0 +1,44 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  lark,
+  pytestCheckHook,
+  setuptools-scm,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "python-hcl2";
+  version = "4.3.5";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "amplify-education";
+    repo = "python-hcl2";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-Pz1FS1g0OYSThpxFcs6UCOAzGnF4kOuRwhx2KIl9sv4=";
+  };
+
+  disabled = pythonOlder "3.7";
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [ lark ];
+
+  pythonImportsCheck = [ "hcl2" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = with lib; {
+    description = "A parser for HCL2 written in Python using Lark";
+    homepage = "https://github.com/amplify-education/python-hcl2";
+    changelog = "https://github.com/amplify-education/python-hcl2/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ shivaraj-bh ];
+  };
+}
diff --git a/pkgs/development/python-modules/python-heatclient/default.nix b/pkgs/development/python-modules/python-heatclient/default.nix
index d29b07a94e505..ac13fca2c722f 100644
--- a/pkgs/development/python-modules/python-heatclient/default.nix
+++ b/pkgs/development/python-modules/python-heatclient/default.nix
@@ -1,37 +1,49 @@
-{ lib
-, buildPythonPackage
-, cliff
-, fetchPypi
-, iso8601
-, keystoneauth1
-, osc-lib
-, oslo-i18n
-, oslo-serialization
-, oslo-utils
-, pbr
-, prettytable
-, python-swiftclient
-, pythonOlder
-, pyyaml
-, requests
-, requests-mock
-, stestr
-, testscenarios
+{
+  lib,
+  buildPythonPackage,
+  cliff,
+  fetchPypi,
+  iso8601,
+  keystoneauth1,
+  openstackdocstheme,
+  osc-lib,
+  oslo-i18n,
+  oslo-serialization,
+  oslo-utils,
+  pbr,
+  prettytable,
+  python-swiftclient,
+  pythonOlder,
+  pyyaml,
+  requests,
+  requests-mock,
+  setuptools,
+  sphinxHook,
+  stestr,
+  testscenarios,
 }:
 
 buildPythonPackage rec {
   pname = "python-heatclient";
-  version = "3.5.0";
-  format = "setuptools";
+  version = "4.0.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-B1F40HYHFF91mkxwySR/kqCvlwLLtBgqwUvw2byOc9g=";
+    hash = "sha256-ozpv4yyu8lmWmKg2iGMMN8IJ29zr87Gj73dn5QMgifI=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    openstackdocstheme
+    setuptools
+    sphinxHook
+  ];
+
+  sphinxBuilders = [ "man" ];
+
+  dependencies = [
     cliff
     iso8601
     keystoneauth1
@@ -53,15 +65,17 @@ buildPythonPackage rec {
   ];
 
   checkPhase = ''
+    runHook preCheck
+
     stestr run -e <(echo "
       heatclient.tests.unit.test_common_http.HttpClientTest.test_get_system_ca_file
       heatclient.tests.unit.test_deployment_utils.TempURLSignalTest.test_create_temp_url
     ")
+
+    runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "heatclient"
-  ];
+  pythonImportsCheck = [ "heatclient" ];
 
   meta = with lib; {
     description = "Library for Heat built on the Heat orchestration API";
diff --git a/pkgs/development/python-modules/python-hglib/default.nix b/pkgs/development/python-modules/python-hglib/default.nix
index 5cce7429173f0..71e9bd7318ea4 100644
--- a/pkgs/development/python-modules/python-hglib/default.nix
+++ b/pkgs/development/python-modules/python-hglib/default.nix
@@ -1,21 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mercurial
-, nose
+{
+  lib,
+  buildPythonPackage,
+  fetchzip,
+  mercurial,
+  pytestCheckHook,
+  fetchpatch2,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "python-hglib";
   version = "2.6.2";
-  format = "setuptools";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-sYvR7VPJDuV9VxTWata7crZOkw1K7KmDCJLAi7KNpgg=";
+  src = fetchzip {
+    url = "https://repo.mercurial-scm.org/python-hglib/archive/${version}.tar.gz";
+    hash = "sha256-UXersegqJ9VAxy4Kvpb2IiOJfQbWryeeaGvwiR4ncW8=";
   };
 
-  nativeCheckInputs = [ mercurial nose ];
+  patches = [
+    (fetchpatch2 {
+      name = "remove-nose.patch";
+      excludes = [ "heptapod-ci.yml" ];
+      url = "https://repo.mercurial-scm.org/python-hglib/raw-rev/8341f2494b3fc1c0d9ee55fa4487c0ac82f64d2a";
+      hash = "sha256-4gicVCAH94itxHY0l8ek0L/RVhUrw2lMbbnENbWrV6U=";
+    })
+    (fetchpatch2 {
+      name = "fix-tests.patch";
+      url = "https://repo.mercurial-scm.org/python-hglib/raw-rev/a2afbf236ca86287e72f54e1248413625d1bc405";
+      hash = "sha256-T/yKJ8cMMOBVk24SXwyPOoD321S1fZEIunaPJAxI0KI=";
+    })
+  ];
+
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [
+    mercurial
+    pytestCheckHook
+  ];
 
   preCheck = ''
     export HGTMP=$(mktemp -d)
@@ -24,10 +46,10 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "hglib" ];
 
-  meta = with lib; {
-    description = "Library with a fast, convenient interface to Mercurial. It uses Mercurial’s command server for communication with hg.";
+  meta = {
+    description = "Library with a fast, convenient interface to Mercurial. It uses Mercurial’s command server for communication with hg";
     homepage = "https://www.mercurial-scm.org/wiki/PythonHglibs";
-    license = licenses.mit;
-    maintainers = [];
+    license = lib.licenses.mit;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-hl7/default.nix b/pkgs/development/python-modules/python-hl7/default.nix
index 1c2b058608699..b194bd7ca38bc 100644
--- a/pkgs/development/python-modules/python-hl7/default.nix
+++ b/pkgs/development/python-modules/python-hl7/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -27,7 +28,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "hl7" ];
 
   meta = with lib; {
-    description = "A simple library for parsing messages of Health Level 7 (HL7) version 2.x into Python objects";
+    description = "Simple library for parsing messages of Health Level 7 (HL7) version 2.x into Python objects";
     mainProgram = "mllp_send";
     homepage = "https://python-hl7.readthedocs.org";
     changelog = "https://python-hl7.readthedocs.io/en/latest/changelog.html";
diff --git a/pkgs/development/python-modules/python-homeassistant-analytics/default.nix b/pkgs/development/python-modules/python-homeassistant-analytics/default.nix
index 633e8baf58532..b4626a8d02dbe 100644
--- a/pkgs/development/python-modules/python-homeassistant-analytics/default.nix
+++ b/pkgs/development/python-modules/python-homeassistant-analytics/default.nix
@@ -22,7 +22,7 @@
 
 buildPythonPackage rec {
   pname = "python-homeassistant-analytics";
-  version = "0.6.0";
+  version = "0.7.0";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -31,7 +31,7 @@ buildPythonPackage rec {
     owner = "joostlek";
     repo = "python-homeassistant-analytics";
     rev = "refs/tags/v${version}";
-    hash = "sha256-uGi72UCIIvb5XZl7RkiAiR/TS+5VCpyvZfBsmlPzQEs=";
+    hash = "sha256-HPimk401tRBwszWvkyUEAcuLeYeEu0JUld16PESXkbo=";
   };
 
   postPatch = ''
@@ -58,8 +58,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "python_homeassistant_analytics" ];
 
   meta = with lib; {
-    changelog = "https://github.com/joostlek/python-homeassistant-analytics
-/releases/tag/v${version}";
+    changelog = "https://github.com/joostlek/python-homeassistant-analytics/releases/tag/v${version}";
     description = "Asynchronous Python client for Homeassistant Analytics";
     homepage = "https://github.com/joostlek/python-homeassistant-analytics
 ";
diff --git a/pkgs/development/python-modules/python-homewizard-energy/default.nix b/pkgs/development/python-modules/python-homewizard-energy/default.nix
index 8447c2bccbe9c..d19187bdc57df 100644
--- a/pkgs/development/python-modules/python-homewizard-energy/default.nix
+++ b/pkgs/development/python-modules/python-homewizard-energy/default.nix
@@ -1,19 +1,22 @@
-{ lib
-, aiohttp
-, aresponses
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, syrupy
+{
+  lib,
+  aiohttp,
+  aresponses,
+  async-timeout,
+  backoff,
+  buildPythonPackage,
+  fetchFromGitHub,
+  multidict,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  syrupy,
 }:
 
 buildPythonPackage rec {
   pname = "python-homewizard-energy";
-  version = "5.0.0";
+  version = "6.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -22,7 +25,7 @@ buildPythonPackage rec {
     owner = "DCSBL";
     repo = "python-homewizard-energy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-z9JJHS7w/lugV23xJjWHBWVQp38J3CKtj4IuDvpPQJw=";
+    hash = "sha256-etbYZKTNdlQCDc7LXir4D7LtRzYx9jhXZc1bJvsEb8E=";
   };
 
   postPatch = ''
@@ -30,13 +33,13 @@ buildPythonPackage rec {
       --replace-fail 'version = "0.0.0"' 'version = "${version}"'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     async-timeout
+    backoff
+    multidict
   ];
 
   __darwinAllowLocalNetworking = true;
@@ -48,9 +51,7 @@ buildPythonPackage rec {
     syrupy
   ];
 
-  pythonImportsCheck = [
-    "homewizard_energy"
-  ];
+  pythonImportsCheck = [ "homewizard_energy" ];
 
   meta = with lib; {
     description = "Library to communicate with HomeWizard Energy devices";
diff --git a/pkgs/development/python-modules/python-hosts/default.nix b/pkgs/development/python-modules/python-hosts/default.nix
index 7452abb860c31..0f582e7602501 100644
--- a/pkgs/development/python-modules/python-hosts/default.nix
+++ b/pkgs/development/python-modules/python-hosts/default.nix
@@ -1,44 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "python-hosts";
-  version = "1.0.5";
+  version = "1.0.7";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-xabbGnvzXNiE0koQVq9dmEib5Cv7kg1JjpZAyb7IZM0=";
+    pname = "python_hosts";
+    inherit version;
+    hash = "sha256-TFaZHiL2v/woCWgz3nh/kjUOhbfN1ghnBnJcVcTwSrk=";
   };
 
-  # win_inet_pton is required for Windows support
-  prePatch = ''
-    substituteInPlace setup.py \
-      --replace "install_requires=['win_inet_pton']," ""
-    substituteInPlace python_hosts/utils.py \
-      --replace "import win_inet_pton" ""
-  '';
-
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     pyyaml
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "python_hosts"
-  ];
+  pythonImportsCheck = [ "python_hosts" ];
 
   disabledTests = [
     # Tests require network access
@@ -60,4 +50,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ psyanticy ];
   };
 }
-
diff --git a/pkgs/development/python-modules/python-hpilo/default.nix b/pkgs/development/python-modules/python-hpilo/default.nix
index 6fdfc5d140315..6aeeab370c1b4 100644
--- a/pkgs/development/python-modules/python-hpilo/default.nix
+++ b/pkgs/development/python-modules/python-hpilo/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
@@ -23,7 +24,10 @@ buildPythonPackage rec {
     description = "Python module to access the HP iLO XML interface";
     mainProgram = "hpilo_cli";
     homepage = "https://seveas.github.io/python-hpilo/";
-    license = with licenses; [ asl20 gpl3Plus ];
+    license = with licenses; [
+      asl20
+      gpl3Plus
+    ];
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/python-http-client/default.nix b/pkgs/development/python-modules/python-http-client/default.nix
index f2ecd21458465..7d303d71ef012 100644
--- a/pkgs/development/python-modules/python-http-client/default.nix
+++ b/pkgs/development/python-modules/python-http-client/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     "test_daterange"
   ];
 
-  pythonImportsCheck = [
-    "python_http_client"
-  ];
+  pythonImportsCheck = [ "python_http_client" ];
 
   meta = with lib; {
     description = "Python HTTP library to call APIs";
diff --git a/pkgs/development/python-modules/python-i18n/default.nix b/pkgs/development/python-modules/python-i18n/default.nix
index 1ae07dfbec6d8..319fe49f8d1fe 100644
--- a/pkgs/development/python-modules/python-i18n/default.nix
+++ b/pkgs/development/python-modules/python-i18n/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pytestCheckHook, pyyaml }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pyyaml,
+}:
 
 buildPythonPackage rec {
   pname = "python-i18n";
@@ -18,7 +24,10 @@ buildPythonPackage rec {
       --replace-fail assertRaisesRegexp assertRaisesRegex
   '';
 
-  nativeCheckInputs = [ pytestCheckHook pyyaml ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pyyaml
+  ];
   pytestFlagsArray = [ "i18n/tests/run_tests.py" ];
   pythonImportsCheck = [ "i18n" ];
 
diff --git a/pkgs/development/python-modules/python-idzip/default.nix b/pkgs/development/python-modules/python-idzip/default.nix
index c754bb1445546..07ea6116f7820 100644
--- a/pkgs/development/python-modules/python-idzip/default.nix
+++ b/pkgs/development/python-modules/python-idzip/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
 
-, pythonOlder
+  pythonOlder,
 
-, setuptools
+  setuptools,
 
-, pytestCheckHook
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -34,13 +35,9 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # need third-party files
diff --git a/pkgs/development/python-modules/python-ipmi/default.nix b/pkgs/development/python-modules/python-ipmi/default.nix
index 4cb05be7257b5..2e644fa1dc820 100644
--- a/pkgs/development/python-modules/python-ipmi/default.nix
+++ b/pkgs/development/python-modules/python-ipmi/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, future
-, mock
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  future,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -27,22 +28,16 @@ buildPythonPackage rec {
       --replace-fail "version=version," "version='${version}',"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    future
-  ];
+  propagatedBuildInputs = [ future ];
 
   nativeCheckInputs = [
     mock
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pyipmi"
-  ];
+  pythonImportsCheck = [ "pyipmi" ];
 
   meta = with lib; {
     description = "Python IPMI Library";
diff --git a/pkgs/development/python-modules/python-ipware/default.nix b/pkgs/development/python-modules/python-ipware/default.nix
index 5564eabdb4f62..9e63a766bc0f6 100644
--- a/pkgs/development/python-modules/python-ipware/default.nix
+++ b/pkgs/development/python-modules/python-ipware/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, unittestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  unittestCheckHook,
+  setuptools,
 }:
 buildPythonPackage rec {
   pname = "python-ipware";
@@ -19,20 +20,14 @@ buildPythonPackage rec {
     hash = "sha256-j43uAcb1dyKe/SHQLLR+QJS6hKGB5qxjb9NiJaUPj8Y=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "python_ipware"
-  ];
+  pythonImportsCheck = [ "python_ipware" ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   meta = with lib; {
-    description = "A python package for server applications to retrieve client's IP address";
+    description = "Python package for server applications to retrieve client's IP address";
     homepage = "https://github.com/un33k/python-ipware";
     changelog = "https://github.com/un33k/python-ipware/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/python-ironicclient/default.nix b/pkgs/development/python-modules/python-ironicclient/default.nix
index 7e9a3b4ee7c27..80e72572d1347 100644
--- a/pkgs/development/python-modules/python-ironicclient/default.nix
+++ b/pkgs/development/python-modules/python-ironicclient/default.nix
@@ -1,36 +1,48 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pbr
-, appdirs
-, cliff
-, dogpile-cache
-, jsonschema
-, keystoneauth1
-, openstacksdk
-, osc-lib
-, oslo-utils
-, pyyaml
-, requests
-, stevedore
-, stestr
-, requests-mock
-, oslotest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cliff,
+  dogpile-cache,
+  jsonschema,
+  keystoneauth1,
+  openstackdocstheme,
+  openstacksdk,
+  osc-lib,
+  oslo-utils,
+  oslotest,
+  pbr,
+  platformdirs,
+  pyyaml,
+  requests,
+  requests-mock,
+  setuptools,
+  sphinxcontrib-apidoc,
+  sphinxHook,
+  stestr,
+  stevedore,
 }:
 
 buildPythonPackage rec {
   pname = "python-ironicclient";
-  version = "5.5.0";
-  format = "setuptools";
+  version = "5.8.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-JlO487QSPsBJZqPYRhsQYFA7noIN2q/stH4eZXAFLnY=";
+    hash = "sha256-hv7cI1hIZijKhoJxfrxp7hApcfEX2jUmudPilVLslC4=";
   };
 
-  propagatedBuildInputs = [
-    pbr
-    appdirs
+  build-system = [
+    openstackdocstheme
+    setuptools
+    sphinxcontrib-apidoc
+    sphinxHook
+  ];
+
+  sphinxBuilders = [ "man" ];
+
+  dependencies = [
     cliff
     dogpile-cache
     jsonschema
@@ -38,6 +50,8 @@ buildPythonPackage rec {
     openstacksdk
     osc-lib
     oslo-utils
+    pbr
+    platformdirs
     pyyaml
     requests
     stevedore
@@ -50,13 +64,15 @@ buildPythonPackage rec {
   ];
 
   checkPhase = ''
+    runHook preCheck
     stestr run
+    runHook postCheck
   '';
 
   pythonImportsCheck = [ "ironicclient" ];
 
   meta = with lib; {
-    description = "A client for OpenStack bare metal provisioning API, includes a Python module (ironicclient) and CLI (baremetal).";
+    description = "Client for OpenStack bare metal provisioning API, includes a Python module (ironicclient) and CLI (baremetal)";
     mainProgram = "baremetal";
     homepage = "https://github.com/openstack/python-ironicclient";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/python-izone/default.nix b/pkgs/development/python-modules/python-izone/default.nix
index 0173c277a5261..2eba0d6b1bb45 100644
--- a/pkgs/development/python-modules/python-izone/default.nix
+++ b/pkgs/development/python-modules/python-izone/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, aiohttp
-, netifaces
-, pytest-aio
-, pytest-asyncio
-, pytestCheckHook
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  aiohttp,
+  netifaces,
+  pytest-aio,
+  pytest-asyncio,
+  pytestCheckHook,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-0rj+tKn2pbFe+nczTMGLwIwmc4jCznGGF4/IMjlEvQg=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -41,9 +40,7 @@ buildPythonPackage rec {
 
   doCheck = false; # most tests access network
 
-  pythonImportsCheck = [
-    "pizone"
-  ];
+  pythonImportsCheck = [ "pizone" ];
 
   meta = with lib; {
     description = "Python interface to the iZone airconditioner controller";
diff --git a/pkgs/development/python-modules/python-jenkins/default.nix b/pkgs/development/python-modules/python-jenkins/default.nix
index 2632372f0dd84..e06a0760fbdd6 100644
--- a/pkgs/development/python-modules/python-jenkins/default.nix
+++ b/pkgs/development/python-modules/python-jenkins/default.nix
@@ -1,19 +1,19 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, mock
-, pbr
-, pyyaml
-, setuptools
-, six
-, multi-key-dict
-, testscenarios
-, requests
-, requests-mock
-, stestr
-, multiprocess
-, pythonRelaxDepsHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  pbr,
+  pyyaml,
+  setuptools,
+  six,
+  multi-key-dict,
+  testscenarios,
+  requests,
+  requests-mock,
+  stestr,
+  multiprocess,
 }:
 
 buildPythonPackage rec {
@@ -28,24 +28,31 @@ buildPythonPackage rec {
 
   # test uses timeout mechanism unsafe for use with the "spawn"
   # multiprocessing backend used on macos
-  postPatch = lib.optionalString stdenv.isDarwin ''
+  postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
     substituteInPlace tests/test_jenkins_sockets.py \
       --replace test_jenkins_open_no_timeout dont_test_jenkins_open_no_timeout
   '';
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
-  pythonRelaxDeps = [
-    "setuptools"
-  ];
+  pythonRelaxDeps = [ "setuptools" ];
 
   buildInputs = [ mock ];
-  propagatedBuildInputs = [ pbr pyyaml setuptools six multi-key-dict requests ];
+  propagatedBuildInputs = [
+    pbr
+    pyyaml
+    setuptools
+    six
+    multi-key-dict
+    requests
+  ];
 
   __darwinAllowLocalNetworking = true;
 
-  nativeCheckInputs = [ stestr testscenarios requests-mock multiprocess ];
+  nativeCheckInputs = [
+    stestr
+    testscenarios
+    requests-mock
+    multiprocess
+  ];
   checkPhase = ''
     # Skip tests that fail due to setuptools>=66.0.0 rejecting PEP 440
     # non-conforming versions. See
@@ -59,5 +66,4 @@ buildPythonPackage rec {
     license = licenses.bsd3;
     maintainers = with maintainers; [ gador ];
   };
-
 }
diff --git a/pkgs/development/python-modules/python-jose/default.nix b/pkgs/development/python-modules/python-jose/default.nix
index 6e3f406fe5a30..449fec2d7d076 100644
--- a/pkgs/development/python-modules/python-jose/default.nix
+++ b/pkgs/development/python-modules/python-jose/default.nix
@@ -1,22 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, ecdsa
-, rsa
-, pyasn1
+  # dependencies
+  ecdsa,
+  rsa,
+  pyasn1,
 
-# optional-dependencies
-, cryptography
-, pycrypto
-, pycryptodome
+  # optional-dependencies
+  cryptography,
+  pycrypto,
+  pycryptodome,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -31,14 +33,25 @@ buildPythonPackage rec {
     hash = "sha256-6VGC6M5oyGCOiXcYp6mpyhL+JlcYZKIqOQU9Sm/TkKM=";
   };
 
+  patches = [
+    (fetchpatch {
+      name = "CVE-2024-33663.patch";
+      url = "https://build.opensuse.org/public/source/openSUSE:Factory/python-python-jose/CVE-2024-33663.patch?rev=36cd8815411620042f56a3b81599b341";
+      hash = "sha256-uxOCa7Lg82zY2nuHzw6CbcymCKUodITrFU3lLY1XMFU=";
+    })
+    (fetchpatch {
+      name = "CVE-2024-33664.patch";
+      url = "https://build.opensuse.org/public/source/openSUSE:Factory/python-python-jose/CVE-2024-33664.patch?rev=36cd8815411620042f56a3b81599b341";
+      hash = "sha256-wx/U1T7t7TloP+dMXxGxEVB3bMC7e6epmN8RE8FKksM=";
+    })
+  ];
+
   postPatch = ''
     substituteInPlace setup.py \
       --replace '"pytest-runner",' ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     ecdsa
@@ -47,30 +60,27 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    cryptography = [
-      cryptography
-    ];
-    pycrypto = [
-      pycrypto
-    ];
-    pycryptodome = [
-      pycryptodome
-    ];
+    cryptography = [ cryptography ];
+    pycrypto = [ pycrypto ];
+    pycryptodome = [ pycryptodome ];
   };
 
-  pythonImportsCheck = [
-    "jose"
-  ];
+  pythonImportsCheck = [ "jose" ];
 
   nativeCheckInputs = [
     pytestCheckHook
-  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+  ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
+
+  disabledTests = [
+    # https://github.com/mpdavis/python-jose/issues/348
+    "TestBackendEcdsaCompatibility"
+  ];
 
   meta = with lib; {
     changelog = "https://github.com/mpdavis/python-jose/releases/tag/${version}";
     homepage = "https://github.com/mpdavis/python-jose";
-    description = "A JOSE implementation in Python";
+    description = "JOSE implementation in Python";
     license = licenses.mit;
-    maintainers = with maintainers; [ jhhuh ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-json-logger/default.nix b/pkgs/development/python-modules/python-json-logger/default.nix
index 0a02ccb688add..c56428e33c4a0 100644
--- a/pkgs/development/python-modules/python-json-logger/default.nix
+++ b/pkgs/development/python-modules/python-json-logger/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/python-jsonrpc-server/default.nix b/pkgs/development/python-modules/python-jsonrpc-server/default.nix
index 2cb13c747742e..dd82fbca2cb46 100644
--- a/pkgs/development/python-modules/python-jsonrpc-server/default.nix
+++ b/pkgs/development/python-modules/python-jsonrpc-server/default.nix
@@ -1,6 +1,14 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder
-, pytestCheckHook, mock, pytest-cov, coverage
-, future, futures ? null, ujson}:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  mock,
+  pytest-cov,
+  coverage,
+  future,
+  ujson,
+}:
 
 buildPythonPackage rec {
   pname = "python-jsonrpc-server";
@@ -19,15 +27,20 @@ buildPythonPackage rec {
   '';
 
   nativeCheckInputs = [
-    pytestCheckHook mock pytest-cov coverage
+    pytestCheckHook
+    mock
+    pytest-cov
+    coverage
   ];
 
-  propagatedBuildInputs = [ future ujson ]
-    ++ lib.optional (pythonOlder "3.2") futures;
+  propagatedBuildInputs = [
+    future
+    ujson
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/palantir/python-jsonrpc-server";
-    description = "A Python 2 and 3 asynchronous JSON RPC server";
+    description = "Python 2 and 3 asynchronous JSON RPC server";
     license = licenses.mit;
     maintainers = [ maintainers.mic92 ];
   };
diff --git a/pkgs/development/python-modules/python-juicenet/default.nix b/pkgs/development/python-modules/python-juicenet/default.nix
index ad27a913257e4..1ceb9d031cc69 100644
--- a/pkgs/development/python-modules/python-juicenet/default.nix
+++ b/pkgs/development/python-modules/python-juicenet/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-5RKnVwOfEHzFZCiC8OUpS8exKrENK+I3Ok45HlKEvtU=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # no tests implemented
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyjuicenet"
-  ];
+  pythonImportsCheck = [ "pyjuicenet" ];
 
   meta = with lib; {
     description = "Read and control Juicenet/Juicepoint/Juicebox based EVSE devices";
diff --git a/pkgs/development/python-modules/python-kasa/default.nix b/pkgs/development/python-modules/python-kasa/default.nix
index 807d5d5af9a70..b5d389bced407 100644
--- a/pkgs/development/python-modules/python-kasa/default.nix
+++ b/pkgs/development/python-modules/python-kasa/default.nix
@@ -1,43 +1,43 @@
-{ lib
-, aiohttp
-, anyio
-, async-timeout
-, asyncclick
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, kasa-crypt
-, orjson
-, poetry-core
-, pydantic
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, voluptuous
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  asyncclick,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  hatchling,
+  kasa-crypt,
+  orjson,
+  ptpython,
+  pydantic,
+  pytest-asyncio,
+  pytest-freezer,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  rich,
+  voluptuous,
 }:
 
 buildPythonPackage rec {
   pname = "python-kasa";
-  version = "0.6.2.1";
+  version = "0.7.3";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "python-kasa";
     repo = "python-kasa";
     rev = "refs/tags/${version}";
-    hash = "sha256-iCqJY3qkA3ZVXTCfxvQoaZsaqGui8PwKGAmLXKZgLJs=";
+    hash = "sha256-41FY1KaPDQxOHtxgaKRakNbiBm/qPYCICpvzxVAmSD8=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
-    anyio
     async-timeout
     asyncclick
     cryptography
@@ -46,37 +46,38 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytest-asyncio
+    pytest-freezer
     pytest-mock
     pytestCheckHook
     voluptuous
   ];
 
   passthru.optional-dependencies = {
+    shell = [
+      ptpython
+      rich
+    ];
     speedups = [
       kasa-crypt
       orjson
     ];
   };
 
-  pytestFlagsArray = [
-    "--asyncio-mode=auto"
-  ];
+  pytestFlagsArray = [ "--asyncio-mode=auto" ];
 
   disabledTestPaths = [
     # Skip the examples tests
     "kasa/tests/test_readme_examples.py"
   ];
 
-  pythonImportsCheck = [
-    "kasa"
-  ];
+  pythonImportsCheck = [ "kasa" ];
 
   meta = with lib; {
     description = "Python API for TP-Link Kasa Smarthome products";
-    mainProgram = "kasa";
     homepage = "https://python-kasa.readthedocs.io/";
     changelog = "https://github.com/python-kasa/python-kasa/blob/${version}/CHANGELOG.md";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "kasa";
   };
 }
diff --git a/pkgs/development/python-modules/python-keycloak/default.nix b/pkgs/development/python-modules/python-keycloak/default.nix
index a4adbf787aaca..e4e964d52749f 100644
--- a/pkgs/development/python-modules/python-keycloak/default.nix
+++ b/pkgs/development/python-modules/python-keycloak/default.nix
@@ -1,41 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, python-jose
-, pythonOlder
-, requests
-, requests-toolbelt
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  deprecation,
+  fetchFromGitHub,
+  jwcrypto,
+  poetry-core,
+  pythonOlder,
+  requests,
+  requests-toolbelt,
 }:
 
 buildPythonPackage rec {
   pname = "python-keycloak";
-  version = "2.6.0";
-  format = "pyproject";
+  version = "4.0.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "marcospereirampj";
     repo = "python-keycloak";
-    rev = "v${version}";
-    hash = "sha256-cuj0gJlZDkbJ2HRSMcQvO4nxpjw65CKGEpWCL5sucvg=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-ZXS29bND4GsJNhTGiUsLo+4FYd8Tubvg/+PJ33tqovY=";
   };
 
   postPatch = ''
+    # Upstream doesn't set version
     substituteInPlace pyproject.toml \
-      --replace 'version = "0.0.0"' 'version = "${version}"' \
-      --replace 'requests-toolbelt = "^0.9.1"' 'requests-toolbelt = "*"'
+      --replace-fail 'version = "0.0.0"' 'version = "${version}"'
   '';
 
-  buildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    python-jose
-    urllib3
+  dependencies = [
+    deprecation
+    jwcrypto
     requests
     requests-toolbelt
   ];
@@ -43,14 +42,13 @@ buildPythonPackage rec {
   # Test fixtures require a running keycloak instance
   doCheck = false;
 
-  pythonImportsCheck = [
-    "keycloak"
-  ];
+  pythonImportsCheck = [ "keycloak" ];
 
   meta = with lib; {
     description = "Provides access to the Keycloak API";
     homepage = "https://github.com/marcospereirampj/python-keycloak";
+    changelog = "https://github.com/marcospereirampj/python-keycloak/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-keystoneclient/default.nix b/pkgs/development/python-modules/python-keystoneclient/default.nix
index 81d3d3d217a72..3c25f946ea2ec 100644
--- a/pkgs/development/python-modules/python-keystoneclient/default.nix
+++ b/pkgs/development/python-modules/python-keystoneclient/default.nix
@@ -1,31 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, keystoneauth1
-, openssl
-, oslo-config
-, oslo-serialization
-, pbr
-, pythonOlder
-, requests-mock
-, stestr
-, testresources
-, testscenarios
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  keystoneauth1,
+  openssl,
+  oslo-config,
+  oslo-serialization,
+  pbr,
+  pythonOlder,
+  requests-mock,
+  setuptools,
+  stestr,
+  testresources,
+  testscenarios,
 }:
 
 buildPythonPackage rec {
   pname = "python-keystoneclient";
-  version = "5.4.0";
-  format = "setuptools";
+  version = "5.5.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-srS9vp2vews1O4gHZy7u0B+H3QO0+LQtDQYbCbiTH0E=";
+    hash = "sha256-wvWTT5VXaTbJjkW/WZrUi8sKxFFZPl+DROv1LLD0EfU=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     keystoneauth1
     oslo-config
     oslo-serialization
@@ -41,12 +45,12 @@ buildPythonPackage rec {
   ];
 
   checkPhase = ''
+    runHook preCheck
     stestr run
+    runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "keystoneclient"
-  ];
+  pythonImportsCheck = [ "keystoneclient" ];
 
   meta = with lib; {
     description = "Client Library for OpenStack Identity";
diff --git a/pkgs/development/python-modules/python-ldap-test/default.nix b/pkgs/development/python-modules/python-ldap-test/default.nix
index e88a49f4cc35f..5b2f69f4e5e93 100644
--- a/pkgs/development/python-modules/python-ldap-test/default.nix
+++ b/pkgs/development/python-modules/python-ldap-test/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, py4j }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  py4j,
+}:
 
 buildPythonPackage rec {
   pname = "python-ldap-test";
@@ -26,4 +31,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ psyanticy ];
   };
 }
-
diff --git a/pkgs/development/python-modules/python-ldap/default.nix b/pkgs/development/python-modules/python-ldap/default.nix
index 5bc9f3fecfcc0..ebb042b848ec6 100644
--- a/pkgs/development/python-modules/python-ldap/default.nix
+++ b/pkgs/development/python-modules/python-ldap/default.nix
@@ -1,22 +1,24 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build-system
-, setuptools
+  # build-system
+  distutils,
+  setuptools,
 
-# native dependencies
-, openldap
-, cyrus_sasl
+  # native dependencies
+  openldap,
+  cyrus_sasl,
 
-# dependencies
-, pyasn1
-, pyasn1-modules
+  # dependencies
+  pyasn1,
+  pyasn1-modules,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -33,7 +35,8 @@ buildPythonPackage rec {
     hash = "sha256-v1cWoRGxbvvFnHqnwoIfmiQQcxfaA8Bf3+M5bE5PtuU=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
+    distutils
     setuptools
   ];
 
@@ -42,14 +45,12 @@ buildPythonPackage rec {
     cyrus_sasl
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pyasn1
     pyasn1-modules
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     # Needed by tests to setup a mockup ldap server.
@@ -64,7 +65,7 @@ buildPythonPackage rec {
     "test_tls_ext_noca"
   ];
 
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   meta = with lib; {
     changelog = "https://github.com/python-ldap/python-ldap/releases/tag/python-ldap-${version}";
diff --git a/pkgs/development/python-modules/python-libnmap/default.nix b/pkgs/development/python-modules/python-libnmap/default.nix
index a6acf665ee855..3e3937051aaf6 100644
--- a/pkgs/development/python-modules/python-libnmap/default.nix
+++ b/pkgs/development/python-modules/python-libnmap/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, defusedxml
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  defusedxml,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,17 +21,13 @@ buildPythonPackage rec {
   };
 
   passthru.optional-dependencies = {
-    defusedxml = [
-      defusedxml
-    ];
+    defusedxml = [ defusedxml ];
   };
 
   # We don't want the nmap binary being present
   doCheck = false;
 
-  pythonImportsCheck = [
-    "libnmap"
-  ];
+  pythonImportsCheck = [ "libnmap" ];
 
   meta = with lib; {
     description = "Library to run nmap scans, parse and diff scan results";
diff --git a/pkgs/development/python-modules/python-linkplay/default.nix b/pkgs/development/python-modules/python-linkplay/default.nix
new file mode 100644
index 0000000000000..cc7671ebc3f17
--- /dev/null
+++ b/pkgs/development/python-modules/python-linkplay/default.nix
@@ -0,0 +1,55 @@
+{
+  aiofiles,
+  aiohttp,
+  appdirs,
+  async-timeout,
+  async-upnp-client,
+  buildPythonPackage,
+  deprecated,
+  fetchFromGitHub,
+  lib,
+  pytest-asyncio,
+  pytestCheckHook,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "python-linkplay";
+  version = "0.0.11";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "Velleman";
+    repo = "python-linkplay";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-IFDVIUBB/8FZMn6CKmZBbOEB3ghzer7Fe6YLhwtjJSU=";
+  };
+
+  build-system = [ setuptools ];
+
+  pythonRelaxDeps = [ "aiofiles" ];
+
+  dependencies = [
+    aiofiles
+    aiohttp
+    appdirs
+    async-timeout
+    async-upnp-client
+    deprecated
+  ];
+
+  pythonImportsCheck = [ "linkplay" ];
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  meta = {
+    changelog = "https://github.com/Velleman/python-linkplay/releases/tag/v${version}";
+    description = "Python Library for Seamless LinkPlay Device Control";
+    homepage = "https://github.com/Velleman/python-linkplay";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/python-linux-procfs/default.nix b/pkgs/development/python-modules/python-linux-procfs/default.nix
index e72b2e3620983..3a0ed111cb5cb 100644
--- a/pkgs/development/python-modules/python-linux-procfs/default.nix
+++ b/pkgs/development/python-modules/python-linux-procfs/default.nix
@@ -1,16 +1,24 @@
-{ lib, buildPythonPackage, fetchzip, six }:
+{
+  lib,
+  buildPythonPackage,
+  fetchurl,
+  setuptools,
+  six,
+}:
 
 buildPythonPackage rec {
   pname = "python-linux-procfs";
-  version = "0.6.3";
-  format = "setuptools";
+  version = "0.7.3";
+  pyproject = true;
 
-  src = fetchzip {
+  src = fetchurl {
     url = "https://git.kernel.org/pub/scm/libs/python/python-linux-procfs/python-linux-procfs.git/snapshot/python-linux-procfs-v${version}.tar.gz";
-    hash = "sha256-iaKL7CWJbIvvcUCah7bKdwKZoZJehbQpZ7n0liO8N64=";
+    hash = "sha256-6js8+PBqMwNYSe74zqZP8CZ5nt1ByjCWnex+wBY/LZU=";
   };
 
-  propagatedBuildInputs = [ six ];
+  build-system = [ setuptools ];
+
+  dependencies = [ six ];
 
   # contains no tests
   doCheck = false;
@@ -21,6 +29,5 @@ buildPythonPackage rec {
     mainProgram = "pflags";
     homepage = "https://git.kernel.org/pub/scm/libs/python/python-linux-procfs/python-linux-procfs.git/";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ elohmeier ];
   };
 }
diff --git a/pkgs/development/python-modules/python-logging-loki/default.nix b/pkgs/development/python-modules/python-logging-loki/default.nix
new file mode 100644
index 0000000000000..fe22ed58b7c62
--- /dev/null
+++ b/pkgs/development/python-modules/python-logging-loki/default.nix
@@ -0,0 +1,49 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  rfc3339,
+  requests,
+  freezegun,
+}:
+
+buildPythonPackage rec {
+  pname = "python-logging-loki";
+  version = "0.3.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "GreyZmeem";
+    repo = "python-logging-loki";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-1qHuv+xzATo11au+QAhD1lHcLJtnVKZDdQDGohHUhiI=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    rfc3339
+    requests
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    freezegun
+  ];
+
+  # ValueError
+  # Considering that the package has not been updated since 2019, it is likely that this test is broken
+  disabledTests = [ "test_can_build_tags_from_converting_dict" ];
+
+  pythonImportsCheck = [ "logging_loki" ];
+
+  meta = {
+    description = "Python logging handler for Loki";
+    homepage = "https://github.com/GreyZmeem/python-logging-loki";
+    changelog = "https://github.com/GreyZmeem/python-logging-loki/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ moraxyc ];
+  };
+}
diff --git a/pkgs/development/python-modules/python-logstash/default.nix b/pkgs/development/python-modules/python-logstash/default.nix
index 0ce49d98de036..71fddc53da0ac 100644
--- a/pkgs/development/python-modules/python-logstash/default.nix
+++ b/pkgs/development/python-modules/python-logstash/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "python-logstash";
diff --git a/pkgs/development/python-modules/python-louvain/default.nix b/pkgs/development/python-modules/python-louvain/default.nix
index b9f2647559910..2d908d28c28f8 100644
--- a/pkgs/development/python-modules/python-louvain/default.nix
+++ b/pkgs/development/python-modules/python-louvain/default.nix
@@ -1,11 +1,13 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, fetchpatch
-, networkx
-, pandas
-, scipy
-, numpy }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  fetchpatch,
+  networkx,
+  pandas,
+  scipy,
+  numpy,
+}:
 
 buildPythonPackage rec {
   pname = "python-louvain";
@@ -26,17 +28,23 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [ networkx numpy ];
+  propagatedBuildInputs = [
+    networkx
+    numpy
+  ];
 
   pythonImportsCheck = [ "community" ];
 
-  nativeCheckInputs = [ pandas scipy ];
+  nativeCheckInputs = [
+    pandas
+    scipy
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/taynaud/python-louvain";
     description = "Louvain Community Detection";
     mainProgram = "community";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-lsp-black/default.nix b/pkgs/development/python-modules/python-lsp-black/default.nix
index 20828ac3e38d7..2a963148439a3 100644
--- a/pkgs/development/python-modules/python-lsp-black/default.nix
+++ b/pkgs/development/python-modules/python-lsp-black/default.nix
@@ -1,19 +1,27 @@
-{ lib
-, pythonOlder
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, black
-, python-lsp-server
-, setuptools
-, tomli
-, fetchpatch
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  black,
+  fetchpatch,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  python-lsp-server,
+  tomli,
+
+  # checks
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "python-lsp-black";
   version = "2.0.0";
   pyproject = true;
+
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
@@ -24,43 +32,35 @@ buildPythonPackage rec {
   };
 
   patches =
-    /** includes a series of patches fixing tests not yet released as 2.0.1+ version
-        they are meant to keep up to date with black releases */
-    lib.optional
-      (with lib; versionAtLeast black.version "24.2.0")
-      (fetchpatch {
-        url = "https://github.com/python-lsp/python-lsp-black/commit/d43b41431379f9c9bb05fab158c4d97e6d515f8f.patch";
-        hash = "sha256-38bYU27+xtA8Kq3appXTkNnkG5/XgrUJ2nQ5+yuSU2U=";
-      })
-    ++ lib.optional
-      (with lib; versionAtLeast black.version "24.3.0")
-      (fetchpatch {
-        url = "https://github.com/python-lsp/python-lsp-black/commit/9298585a9d14d25920c33b188d79e820dc98d4a9.patch";
-        hash = "sha256-4u0VIS7eidVEiKRW2wc8lJVkJwhzJD/M+uuqmTtiZ7E=";
-      });
+    /**
+      includes a series of patches fixing tests not yet released as 2.0.1+ version
+       they are meant to keep up to date with black releases
+    */
+    lib.optional (lib.versionAtLeast black.version "24.2.0") (fetchpatch {
+      url = "https://github.com/python-lsp/python-lsp-black/commit/d43b41431379f9c9bb05fab158c4d97e6d515f8f.patch";
+      hash = "sha256-38bYU27+xtA8Kq3appXTkNnkG5/XgrUJ2nQ5+yuSU2U=";
+    })
+    ++ lib.optional (lib.versionAtLeast black.version "24.3.0") (fetchpatch {
+      url = "https://github.com/python-lsp/python-lsp-black/commit/9298585a9d14d25920c33b188d79e820dc98d4a9.patch";
+      hash = "sha256-4u0VIS7eidVEiKRW2wc8lJVkJwhzJD/M+uuqmTtiZ7E=";
+    });
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [ pytestCheckHook ];
-
-  propagatedBuildInputs = [
+  dependencies = [
     black
     python-lsp-server
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
-  pythonImportsCheck = [
-    "pylsp_black"
-  ];
+  pythonImportsCheck = [ "pylsp_black" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://github.com/python-lsp/python-lsp-black";
     description = "Black plugin for the Python LSP Server";
-    changelog = "https://github.com/python-lsp/python-lsp-black/blob/${src.rev}/CHANGELOG.md";
-    license = licenses.mit;
-    maintainers = with maintainers; [ cpcloud ];
+    changelog = "https://github.com/python-lsp/python-lsp-black/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ cpcloud ];
   };
 }
diff --git a/pkgs/development/python-modules/python-lsp-jsonrpc/default.nix b/pkgs/development/python-modules/python-lsp-jsonrpc/default.nix
index 040d901a7e73f..948eba8e6e579 100644
--- a/pkgs/development/python-modules/python-lsp-jsonrpc/default.nix
+++ b/pkgs/development/python-modules/python-lsp-jsonrpc/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
-, ujson
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  ujson,
 }:
 
 buildPythonPackage rec {
@@ -32,17 +33,11 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    ujson
-  ];
+  propagatedBuildInputs = [ ujson ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pylsp_jsonrpc"
-  ];
+  pythonImportsCheck = [ "pylsp_jsonrpc" ];
 
   meta = with lib; {
     description = "Python server implementation of the JSON RPC 2.0 protocol";
diff --git a/pkgs/development/python-modules/python-lsp-ruff/default.nix b/pkgs/development/python-modules/python-lsp-ruff/default.nix
index 3a208e6089207..a23cf5c03130d 100644
--- a/pkgs/development/python-modules/python-lsp-ruff/default.nix
+++ b/pkgs/development/python-modules/python-lsp-ruff/default.nix
@@ -1,25 +1,32 @@
-{ lib
-, pythonOlder
-, buildPythonPackage
-, fetchPypi
-, ruff
-, cattrs
-, lsprotocol
-, python-lsp-server
-, tomli
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  ruff,
+
+  # dependencies
+  cattrs,
+  lsprotocol,
+  python-lsp-server,
+  tomli,
+
+  # checks
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "python-lsp-ruff";
-  version = "2.2.1";
+  version = "2.2.2";
   pyproject = true;
   disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit version;
-    pname = "python_lsp_ruff";
-    hash = "sha256-C7OiJ7wTboq4xm6Rcz8mc9wV329/yeuZ1CZ9CZGzJ6U=";
+  src = fetchFromGitHub {
+    owner = "python-lsp";
+    repo = "python-lsp-ruff";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-czGA/gl7uoWG9UqYUaY9zER79IKfv7ClqgimgyNCAa4=";
   };
 
   postPatch = ''
@@ -31,23 +38,19 @@ buildPythonPackage rec {
     sed -i -e "s|workspace.root_path|'/tmp/'|g" tests/*.py
   '';
 
-  propagatedBuildInputs = [
+  dependencies = [
     cattrs
     lsprotocol
     python-lsp-server
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://github.com/python-lsp/python-lsp-ruff";
     description = "Ruff linting plugin for pylsp";
     changelog = "https://github.com/python-lsp/python-lsp-ruff/releases/tag/v${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ linsui ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ linsui ];
   };
 }
diff --git a/pkgs/development/python-modules/python-lsp-server/default.nix b/pkgs/development/python-modules/python-lsp-server/default.nix
index c79e3f7e8d7bc..54fa536f792e4 100644
--- a/pkgs/development/python-modules/python-lsp-server/default.nix
+++ b/pkgs/development/python-modules/python-lsp-server/default.nix
@@ -1,42 +1,50 @@
 {
   lib,
-  stdenv,
-  autopep8,
   buildPythonPackage,
-  docstring-to-markdown,
   fetchFromGitHub,
-  flake8,
-  flaky,
-  importlib-metadata,
+  pythonOlder,
+
+  # build-system
+  setuptools-scm,
+
+  # dependencies
+  docstring-to-markdown,
   jedi,
-  matplotlib,
-  mccabe,
-  numpy,
-  pandas,
   pluggy,
+  python-lsp-jsonrpc,
+  setuptools,
+  ujson,
+  importlib-metadata,
+
+  # optional-dependencies
+  autopep8,
+  flake8,
+  mccabe,
   pycodestyle,
   pydocstyle,
   pyflakes,
   pylint,
-  pyqt5,
-  pytestCheckHook,
-  python-lsp-jsonrpc,
-  pythonOlder,
-  pythonRelaxDepsHook,
   rope,
-  setuptools,
-  setuptools-scm,
   toml,
-  ujson,
-  websockets,
   whatthepatch,
   yapf,
+
+  # checks
+  flaky,
+  matplotlib,
+  numpy,
+  pandas,
+  pytestCheckHook,
+  websockets,
+
+  testers,
+  python-lsp-server,
 }:
 
 buildPythonPackage rec {
   pname = "python-lsp-server";
-  version = "1.11.0";
-  format = "pyproject";
+  version = "1.12.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -44,7 +52,7 @@ buildPythonPackage rec {
     owner = "python-lsp";
     repo = "python-lsp-server";
     rev = "refs/tags/v${version}";
-    hash = "sha256-0DFcnGlyDOK0Lxpr++xV6klhFF9b1fihH5FY/tblr+E=";
+    hash = "sha256-oFqa7DtFpJmDZrw+GJqrFH3QqnMAu9159q3IWT9vRko=";
   };
 
   postPatch = ''
@@ -62,8 +70,6 @@ buildPythonPackage rec {
     "pyflakes"
   ];
 
-  nativeBuildInputs = [ setuptools-scm ];
-
   build-system = [ setuptools-scm ];
 
   dependencies = [
@@ -75,7 +81,7 @@ buildPythonPackage rec {
     ujson
   ] ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     all = [
       autopep8
       flake8
@@ -104,31 +110,24 @@ buildPythonPackage rec {
     websockets = [ websockets ];
   };
 
-  nativeCheckInputs =
-    [
-      flaky
-      matplotlib
-      numpy
-      pandas
-      pytestCheckHook
-    ]
-    ++ passthru.optional-dependencies.all
-    # pyqt5 is broken on aarch64-darwin
-    ++ lib.optionals (!stdenv.isDarwin || !stdenv.isAarch64) [ pyqt5 ];
-
-  disabledTests =
-    [
-      # Don't run lint tests
-      "test_pydocstyle"
-      # https://github.com/python-lsp/python-lsp-server/issues/243
-      "test_numpy_completions"
-      "test_workspace_loads_pycodestyle_config"
-      "test_autoimport_code_actions_and_completions_for_notebook_document"
-    ]
-    ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
-      # pyqt5 is broken on aarch64-darwin
-      "test_pyqt_completion"
-    ];
+  nativeCheckInputs = [
+    flaky
+    matplotlib
+    numpy
+    pandas
+    pytestCheckHook
+  ] ++ optional-dependencies.all;
+
+  disabledTests = [
+    # Don't run lint tests
+    "test_pydocstyle"
+    # https://github.com/python-lsp/python-lsp-server/issues/243
+    # "test_numpy_completions"
+    "test_workspace_loads_pycodestyle_config"
+    "test_autoimport_code_actions_and_completions_for_notebook_document"
+    # avoid dependencies on many Qt things just to run one singular test
+    "test_pyqt_completion"
+  ];
 
   preCheck = ''
     export HOME=$(mktemp -d);
@@ -139,12 +138,19 @@ buildPythonPackage rec {
     "pylsp.python_lsp"
   ];
 
-  meta = with lib; {
+  passthru = {
+    tests.version = testers.testVersion {
+      package = python-lsp-server;
+      version = "v${version}";
+    };
+  };
+
+  meta = {
     description = "Python implementation of the Language Server Protocol";
     homepage = "https://github.com/python-lsp/python-lsp-server";
     changelog = "https://github.com/python-lsp/python-lsp-server/blob/v${version}/CHANGELOG.md";
-    license = licenses.mit;
-    maintainers = with maintainers; [ fab ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ fab ];
     mainProgram = "pylsp";
   };
 }
diff --git a/pkgs/development/python-modules/python-ly/default.nix b/pkgs/development/python-modules/python-ly/default.nix
index b1aa0c68b2090..1d7e39ccf446f 100644
--- a/pkgs/development/python-modules/python-ly/default.nix
+++ b/pkgs/development/python-modules/python-ly/default.nix
@@ -1,4 +1,8 @@
-{ buildPythonPackage, fetchPypi, lib }:
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+}:
 
 buildPythonPackage rec {
   pname = "python-ly";
@@ -17,6 +21,6 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Tool and library for manipulating LilyPond files";
     license = licenses.gpl2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-lzf/default.nix b/pkgs/development/python-modules/python-lzf/default.nix
index d7548fd8446f1..c2592f9562534 100644
--- a/pkgs/development/python-modules/python-lzf/default.nix
+++ b/pkgs/development/python-modules/python-lzf/default.nix
@@ -1,15 +1,27 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  unittestCheckHook,
+}:
 
 buildPythonPackage rec {
-  version = "0.2.4";
-  format = "setuptools";
+  version = "0.2.6";
   pname = "python-lzf";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1l8m6vzwm1m8hn7ldw8j8r2b6r199k8z3q0wnhdyy4p68hahyhni";
+  src = fetchFromGitHub {
+    owner = "teepark";
+    repo = "python-lzf";
+    rev = "refs/tags/release-${version}";
+    hash = "sha256-n5E75kRqe0dDbyFicoyLBAVi/SuoUU7qJka3viipQk8=";
   };
 
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ unittestCheckHook ];
+
   meta = with lib; {
     description = "liblzf python bindings";
     homepage = "https://github.com/teepark/python-lzf";
diff --git a/pkgs/development/python-modules/python-lzo/default.nix b/pkgs/development/python-modules/python-lzo/default.nix
index f0652410828c9..ec0d6ff58a8b9 100644
--- a/pkgs/development/python-modules/python-lzo/default.nix
+++ b/pkgs/development/python-modules/python-lzo/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, lzo
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lzo,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -22,23 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-iXAvOCzHPvNERMkE5y4QTHi4ZieW1wrYWYScs7zyb2c=";
   };
 
-
   nativeBuildInputs = [
     setuptools
     wheel
   ];
 
-  buildInputs = [
-    lzo
-  ];
+  buildInputs = [ lzo ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "lzo"
-  ];
+  pythonImportsCheck = [ "lzo" ];
 
   meta = with lib; {
     description = "Python bindings for the LZO data compression library";
diff --git a/pkgs/development/python-modules/python-magic/default.nix b/pkgs/development/python-modules/python-magic/default.nix
index efb32d8444ab2..942f4562d9dbb 100644
--- a/pkgs/development/python-modules/python-magic/default.nix
+++ b/pkgs/development/python-modules/python-magic/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, substituteAll
-, file
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  substituteAll,
+  file,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -44,14 +45,12 @@ buildPythonPackage rec {
     export LC_ALL=en_US.UTF-8
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A python interface to the libmagic file type identification library";
+    description = "Python interface to the libmagic file type identification library";
     homepage = "https://github.com/ahupp/python-magic";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-magnumclient/default.nix b/pkgs/development/python-modules/python-magnumclient/default.nix
new file mode 100644
index 0000000000000..06866a59ce848
--- /dev/null
+++ b/pkgs/development/python-modules/python-magnumclient/default.nix
@@ -0,0 +1,97 @@
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  decorator,
+  fetchFromGitHub,
+  fixtures,
+  keystoneauth1,
+  openstackdocstheme,
+  os-client-config,
+  osc-lib,
+  oslo-i18n,
+  oslo-log,
+  oslo-serialization,
+  oslo-utils,
+  oslotest,
+  osprofiler,
+  pbr,
+  prettytable,
+  python-openstackclient,
+  pythonOlder,
+  requests-mock,
+  requests,
+  setuptools,
+  sphinxHook,
+  stestr,
+  testtools,
+}:
+
+buildPythonPackage rec {
+  pname = "python-magnumclient";
+  version = "4.7.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "openstack";
+    repo = "python-magnumclient";
+    rev = "refs/tags/${version}";
+    hash = "sha256-2JHI3CB/DSZZ4LXzL3PCUSmubTciUXtZkc5jpeEc4kk=";
+  };
+
+  env.PBR_VERSION = version;
+
+  nativeBuildInputs = [
+    openstackdocstheme
+    sphinxHook
+  ];
+
+  sphinxBuilders = [ "man" ];
+
+  build-system = [
+    pbr
+    setuptools
+  ];
+
+  dependencies = [
+    cryptography
+    decorator
+    keystoneauth1
+    os-client-config
+    osc-lib
+    oslo-i18n
+    oslo-log
+    oslo-serialization
+    oslo-utils
+    prettytable
+    requests
+  ];
+
+  nativeCheckInputs = [
+    fixtures
+    python-openstackclient
+    osprofiler
+    oslotest
+    requests-mock
+    stestr
+    testtools
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+    stestr run
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [ "magnumclient" ];
+
+  meta = {
+    homepage = "https://github.com/openstack/python-magnumclient";
+    description = "Client library for OpenStack Magnum API";
+    license = lib.licenses.asl20;
+    mainProgram = "magnum";
+    maintainers = lib.teams.openstack.members;
+  };
+}
diff --git a/pkgs/development/python-modules/python-manilaclient/default.nix b/pkgs/development/python-modules/python-manilaclient/default.nix
index b2fbfef19f8cf..41b9912463bd5 100644
--- a/pkgs/development/python-modules/python-manilaclient/default.nix
+++ b/pkgs/development/python-modules/python-manilaclient/default.nix
@@ -1,43 +1,45 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, installShellFiles
-, pbr
-, openstackdocstheme
-, oslo-config
-, oslo-log
-, oslo-serialization
-, oslo-utils
-, prettytable
-, requests
-, simplejson
-, sphinx
-, sphinxcontrib-programoutput
-, babel
-, osc-lib
-, python-keystoneclient
-, debtcollector
-, callPackage
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pbr,
+  openstackdocstheme,
+  oslo-config,
+  oslo-log,
+  oslo-serialization,
+  oslo-utils,
+  prettytable,
+  requests,
+  setuptools,
+  sphinxHook,
+  sphinxcontrib-programoutput,
+  babel,
+  osc-lib,
+  python-keystoneclient,
+  debtcollector,
+  callPackage,
 }:
 
 buildPythonPackage rec {
   pname = "python-manilaclient";
-  version = "4.8.0";
-  format = "setuptools";
+  version = "5.0.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-TwvDtbYGkDZFIsr0GgwD2R0Il7pV2GCuDw3OZXxDXso=";
+    hash = "sha256-Mk/MSEYj/poibXl+h318gN3rTuNC/ebhKYO3/ACA4II=";
   };
 
-  nativeBuildInputs = [
-    installShellFiles
+  build-system = [
     openstackdocstheme
-    sphinx
+    setuptools
+    sphinxHook
     sphinxcontrib-programoutput
   ];
 
-  propagatedBuildInputs = [
+  sphinxBuilders = [ "man" ];
+
+  dependencies = [
     pbr
     oslo-config
     oslo-log
@@ -45,19 +47,12 @@ buildPythonPackage rec {
     oslo-utils
     prettytable
     requests
-    simplejson
     babel
     osc-lib
     python-keystoneclient
     debtcollector
   ];
 
-  postInstall = ''
-    export PATH=$out/bin:$PATH
-    sphinx-build -a -E -d doc/build/doctrees -b man doc/source doc/build/man
-    installManPage doc/build/man/python-manilaclient.1
-  '';
-
   # Checks moved to 'passthru.tests' to workaround infinite recursion
   doCheck = false;
 
@@ -65,9 +60,7 @@ buildPythonPackage rec {
     tests = callPackage ./tests.nix { };
   };
 
-  pythonImportsCheck = [
-    "manilaclient"
-  ];
+  pythonImportsCheck = [ "manilaclient" ];
 
   meta = with lib; {
     description = "Client library for OpenStack Manila API";
diff --git a/pkgs/development/python-modules/python-manilaclient/tests.nix b/pkgs/development/python-modules/python-manilaclient/tests.nix
index d1ceb5ed74318..f743e5b2fb13f 100644
--- a/pkgs/development/python-modules/python-manilaclient/tests.nix
+++ b/pkgs/development/python-modules/python-manilaclient/tests.nix
@@ -1,10 +1,11 @@
-{ buildPythonPackage
-, python-manilaclient
-, stestr
-, ddt
-, tempest
-, mock
-, python-openstackclient
+{
+  buildPythonPackage,
+  python-manilaclient,
+  stestr,
+  ddt,
+  tempest,
+  mock,
+  python-openstackclient,
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/python-mapnik/default.nix b/pkgs/development/python-modules/python-mapnik/default.nix
index 044199f6c2a66..c06251663e0ba 100644
--- a/pkgs/development/python-modules/python-mapnik/default.nix
+++ b/pkgs/development/python-modules/python-mapnik/default.nix
@@ -1,43 +1,42 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, substituteAll
-, isPyPy
-, python
-, pillow
-, pycairo
-, pkg-config
-, boost
-, cairo
-, harfbuzz
-, icu
-, libjpeg
-, libpng
-, libtiff
-, libwebp
-, mapnik
-, proj
-, zlib
-, libxml2
-, sqlite
-, nose
-, pytestCheckHook
-, stdenv
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  substituteAll,
+  isPyPy,
+  python,
+  setuptools,
+  pillow,
+  pycairo,
+  pkg-config,
+  boost,
+  cairo,
+  harfbuzz,
+  icu,
+  libjpeg,
+  libpng,
+  libtiff,
+  libwebp,
+  mapnik,
+  proj,
+  zlib,
+  libxml2,
+  sqlite,
+  pytestCheckHook,
+  darwin,
+  sparsehash,
 }:
 
 buildPythonPackage rec {
   pname = "python-mapnik";
-  version = "unstable-2023-02-23";
-  format = "setuptools";
+  version = "3.0.16-unstable-2024-02-22";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "mapnik";
     repo = "python-mapnik";
-    # Use proj6 branch in order to support Proj >= 6 (excluding commits after 2023-02-23)
-    # https://github.com/mapnik/python-mapnik/compare/master...proj6
-    rev = "687b2c72a24c59d701d62e4458c380f8c54f0549";
-    hash = "sha256-q3Snd3K/JndckwAVwSKU+kFK5E1uph78ty7mwVo/7Ik=";
+    rev = "5ab32f0209909cc98c26e1d86ce0c8ef29a9bf3d";
+    hash = "sha256-OqijA1WcyBcyWO8gntqp+xNIaV1Jqa0n1eMDip2OCvY=";
     # Only needed for test data
     fetchSubmodules = true;
   };
@@ -49,14 +48,21 @@ buildPythonPackage rec {
       src = ./find-libmapnik.patch;
       libmapnik = "${mapnik}/lib";
     })
+    # Use `std::optional` rather than `boost::optional`
+    # https://github.com/mapnik/python-mapnik/commit/e9f88a95a03dc081826a69da67bbec3e4cccd5eb
+    ./python-mapnik_std_optional.patch
   ];
 
+  stdenv = if python.stdenv.hostPlatform.isDarwin then darwin.apple_sdk_11_0.stdenv else python.stdenv;
+
+  build-system = [ setuptools ];
+
   nativeBuildInputs = [
     mapnik # for mapnik_config
     pkg-config
   ];
 
-  buildInputs = [
+  dependencies = [
     mapnik
     boost
     cairo
@@ -70,14 +76,16 @@ buildPythonPackage rec {
     zlib
     libxml2
     sqlite
+    sparsehash
   ];
 
-  propagatedBuildInputs = [ pillow pycairo ];
-
-  configureFlags = [
-    "XMLPARSER=libxml2"
+  propagatedBuildInputs = [
+    pillow
+    pycairo
   ];
 
+  configureFlags = [ "XMLPARSER=libxml2" ];
+
   disabled = isPyPy;
 
   preBuild = ''
@@ -88,38 +96,40 @@ buildPythonPackage rec {
     export XMLPARSER=libxml2
   '';
 
-  nativeCheckInputs = [
-    nose
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  preCheck = ''
-    # import from $out
-    rm -r mapnik
-  '' + lib.optionalString stdenv.isDarwin ''
-    # Replace the hardcoded /tmp references with $TMPDIR
-    sed -i "s,/tmp,$TMPDIR,g" test/python_tests/*.py
-  '';
+  preCheck =
+    ''
+      # import from $out
+      rm -r mapnik
+    ''
+    + lib.optionalString stdenv.hostPlatform.isDarwin ''
+      # Replace the hardcoded /tmp references with $TMPDIR
+      sed -i "s,/tmp,$TMPDIR,g" test/python_tests/*.py
+    '';
 
   # https://github.com/mapnik/python-mapnik/issues/255
   disabledTests = [
     "test_geometry_type"
-    "test_marker_ellipse_render1"
-    "test_marker_ellipse_render2"
-    "test_normalizing_definition"
     "test_passing_pycairo_context_pdf"
     "test_pdf_printing"
-    "test_visual_zoom_all_rendering2"
-    "test_wgs84_inverse_forward"
-  ] ++ lib.optionals stdenv.isDarwin [
+    "test_render_with_scale_factor"
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
+    "test_passing_pycairo_context_png"
     "test_passing_pycairo_context_svg"
+    "test_pycairo_pdf_surface1"
+    "test_pycairo_pdf_surface2"
+    "test_pycairo_pdf_surface3"
+    "test_pycairo_svg_surface1"
+    "test_pycairo_svg_surface2"
+    "test_pycairo_svg_surface3"
   ];
 
   pythonImportsCheck = [ "mapnik" ];
 
   meta = with lib; {
     description = "Python bindings for Mapnik";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     homepage = "https://mapnik.org";
     license = licenses.lgpl21Plus;
   };
diff --git a/pkgs/development/python-modules/python-mapnik/python-mapnik_std_optional.patch b/pkgs/development/python-modules/python-mapnik/python-mapnik_std_optional.patch
new file mode 100644
index 0000000000000..c285e77ca57b6
--- /dev/null
+++ b/pkgs/development/python-modules/python-mapnik/python-mapnik_std_optional.patch
@@ -0,0 +1,176 @@
+diff --git a/src/mapnik_image.cpp b/src/mapnik_image.cpp
+index 9add692c9..488427b56 100644
+--- a/src/mapnik_image.cpp
++++ b/src/mapnik_image.cpp
+@@ -230,7 +230,7 @@ unsigned get_type(mapnik::image_any & im)
+ 
+ std::shared_ptr<image_any> open_from_file(std::string const& filename)
+ {
+-    boost::optional<std::string> type = type_from_filename(filename);
++    auto type = type_from_filename(filename);
+     if (type)
+     {
+         std::unique_ptr<image_reader> reader(get_image_reader(filename,*type));
+diff --git a/src/mapnik_layer.cpp b/src/mapnik_layer.cpp
+index 4fc7ea579..fbd277a81 100644
+--- a/src/mapnik_layer.cpp
++++ b/src/mapnik_layer.cpp
+@@ -95,7 +95,7 @@ struct layer_pickle_suite : boost::python::pickle_suite
+ 
+ std::vector<std::string> & (mapnik::layer::*_styles_)() = &mapnik::layer::styles;
+ 
+-void set_maximum_extent(mapnik::layer & l, boost::optional<mapnik::box2d<double> > const& box)
++void set_maximum_extent(mapnik::layer & l, std::optional<mapnik::box2d<double> > const& box)
+ {
+     if (box)
+     {
+@@ -107,7 +107,7 @@ void set_maximum_extent(mapnik::layer & l, boost::optional<mapnik::box2d<double>
+     }
+ }
+ 
+-void set_buffer_size(mapnik::layer & l, boost::optional<int> const& buffer_size)
++void set_buffer_size(mapnik::layer & l, std::optional<int> const& buffer_size)
+ {
+     if (buffer_size)
+     {
+@@ -121,7 +121,7 @@ void set_buffer_size(mapnik::layer & l, boost::optional<int> const& buffer_size)
+ 
+ PyObject * get_buffer_size(mapnik::layer & l)
+ {
+-    boost::optional<int> buffer_size = l.buffer_size();
++    std::optional<int> buffer_size = l.buffer_size();
+     if (buffer_size)
+     {
+ #if PY_VERSION_HEX >= 0x03000000
+diff --git a/src/mapnik_map.cpp b/src/mapnik_map.cpp
+index 3587e5d8a..cfa523b03 100644
+--- a/src/mapnik_map.cpp
++++ b/src/mapnik_map.cpp
+@@ -105,7 +105,7 @@ mapnik::featureset_ptr query_map_point(mapnik::Map const& m, int index, double x
+     return m.query_map_point(idx, x, y);
+ }
+ 
+-void set_maximum_extent(mapnik::Map & m, boost::optional<mapnik::box2d<double> > const& box)
++void set_maximum_extent(mapnik::Map & m, std::optional<mapnik::box2d<double> > const& box)
+ {
+     if (box)
+     {
+diff --git a/src/python_optional.hpp b/src/python_optional.hpp
+index d690b7c51..9d86c340e 100644
+--- a/src/python_optional.hpp
++++ b/src/python_optional.hpp
+@@ -28,7 +28,7 @@
+ #include <mapnik/util/noncopyable.hpp>
+ #pragma GCC diagnostic pop
+ 
+-// boost::optional<T> to/from converter from John Wiegley
++// std::optional<T> to/from converter from John Wiegley
+ 
+ template <typename T, typename TfromPy>
+ struct object_from_python
+@@ -54,7 +54,7 @@ struct python_optional : public mapnik::util::noncopyable
+ {
+     struct optional_to_python
+     {
+-        static PyObject * convert(const boost::optional<T>& value)
++        static PyObject * convert(const std::optional<T>& value)
+         {
+             return (value ? boost::python::to_python_value<T>()(*value) :
+                     boost::python::detail::none());
+@@ -90,9 +90,9 @@ struct python_optional : public mapnik::util::noncopyable
+                                     data)->storage.bytes;
+ 
+             if (data->convertible == source)        // == None
+-                new (storage) boost::optional<T>(); // A Boost uninitialized value
++                new (storage) std::optional<T>(); // A Boost uninitialized value
+             else
+-                new (storage) boost::optional<T>(*static_cast<T *>(data->convertible));
++                new (storage) std::optional<T>(*static_cast<T *>(data->convertible));
+ 
+             data->convertible = storage;
+         }
+@@ -100,18 +100,18 @@ struct python_optional : public mapnik::util::noncopyable
+ 
+     explicit python_optional()
+     {
+-        register_python_conversion<boost::optional<T>,
++        register_python_conversion<std::optional<T>,
+             optional_to_python, optional_from_python>();
+     }
+ };
+ 
+-// to/from boost::optional<bool>
++// to/from std::optional<bool>
+ template <>
+ struct python_optional<float> : public mapnik::util::noncopyable
+ {
+     struct optional_to_python
+     {
+-        static PyObject * convert(const boost::optional<float>& value)
++        static PyObject * convert(const std::optional<float>& value)
+         {
+             return (value ? PyFloat_FromDouble(*value) :
+                     boost::python::detail::none());
+@@ -133,30 +133,30 @@ struct python_optional<float> : public mapnik::util::noncopyable
+                               boost::python::converter::rvalue_from_python_stage1_data * data)
+         {
+             using namespace boost::python::converter;
+-            void * const storage = ((rvalue_from_python_storage<boost::optional<bool> > *)
++            void * const storage = ((rvalue_from_python_storage<std::optional<bool> > *)
+                                     data)->storage.bytes;
+             if (source == Py_None)  // == None
+-                new (storage) boost::optional<float>(); // A Boost uninitialized value
++                new (storage) std::optional<float>(); // A Boost uninitialized value
+             else
+-                new (storage) boost::optional<float>(PyFloat_AsDouble(source));
++                new (storage) std::optional<float>(PyFloat_AsDouble(source));
+             data->convertible = storage;
+         }
+     };
+ 
+     explicit python_optional()
+     {
+-        register_python_conversion<boost::optional<float>,
++        register_python_conversion<std::optional<float>,
+             optional_to_python, optional_from_python>();
+     }
+ };
+ 
+-// to/from boost::optional<float>
++// to/from std::optional<float>
+ template <>
+ struct python_optional<bool> : public mapnik::util::noncopyable
+ {
+     struct optional_to_python
+     {
+-        static PyObject * convert(const boost::optional<bool>& value)
++        static PyObject * convert(const std::optional<bool>& value)
+         {
+             if (value)
+             {
+@@ -181,13 +181,13 @@ struct python_optional<bool> : public mapnik::util::noncopyable
+                               boost::python::converter::rvalue_from_python_stage1_data * data)
+         {
+             using namespace boost::python::converter;
+-            void * const storage = ((rvalue_from_python_storage<boost::optional<bool> > *)
++            void * const storage = ((rvalue_from_python_storage<std::optional<bool> > *)
+                                     data)->storage.bytes;
+             if (source == Py_None)  // == None
+-                new (storage) boost::optional<bool>(); // A Boost uninitialized value
++                new (storage) std::optional<bool>(); // A Boost uninitialized value
+             else
+             {
+-                new (storage) boost::optional<bool>(source == Py_True ? true : false);
++                new (storage) std::optional<bool>(source == Py_True ? true : false);
+             }
+             data->convertible = storage;
+         }
+@@ -195,7 +195,7 @@ struct python_optional<bool> : public mapnik::util::noncopyable
+ 
+     explicit python_optional()
+     {
+-        register_python_conversion<boost::optional<bool>,
++        register_python_conversion<std::optional<bool>,
+             optional_to_python, optional_from_python>();
+     }
+ };
diff --git a/pkgs/development/python-modules/python-markdown-math/default.nix b/pkgs/development/python-modules/python-markdown-math/default.nix
index 9ea32e8606462..3bf104029b40a 100644
--- a/pkgs/development/python-modules/python-markdown-math/default.nix
+++ b/pkgs/development/python-modules/python-markdown-math/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, markdown
-, isPy27
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  markdown,
+  isPy27,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/python-matter-server/default.nix b/pkgs/development/python-modules/python-matter-server/default.nix
index b157eba228acd..453bf9b8b7c28 100644
--- a/pkgs/development/python-modules/python-matter-server/default.nix
+++ b/pkgs/development/python-modules/python-matter-server/default.nix
@@ -1,45 +1,45 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, stdenvNoCC
-, substituteAll
-
-# build
-, setuptools
-, pythonRelaxDepsHook
-
-# propagates
-, aiohttp
-, aiorun
-, async-timeout
-, coloredlogs
-, dacite
-, orjson
-, home-assistant-chip-clusters
-
-# optionals
-, cryptography
-, home-assistant-chip-core
-, zeroconf
-
-# tests
-, python
-, pytest
-, pytest-aiohttp
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  stdenvNoCC,
+  substituteAll,
+
+  # build
+  setuptools,
+
+  # propagates
+  aiohttp,
+  aiorun,
+  async-timeout,
+  coloredlogs,
+  dacite,
+  orjson,
+  home-assistant-chip-clusters,
+
+  # optionals
+  cryptography,
+  home-assistant-chip-core,
+  zeroconf,
+
+  # tests
+  python,
+  pytest,
+  pytest-aiohttp,
+  pytestCheckHook,
 }:
 
 let
   paaCerts = stdenvNoCC.mkDerivation rec {
     pname = "matter-server-paa-certificates";
-    version = "1.2.0.1";
+    version = "1.3.0.0";
 
     src = fetchFromGitHub {
       owner = "project-chip";
       repo = "connectedhomeip";
       rev = "refs/tags/v${version}";
-      hash = "sha256-p3P0n5oKRasYz386K2bhN3QVfN6oFndFIUWLEUWB0ss=";
+      hash = "sha256-5MI6r0KhSTzolesTQ8YWeoko64jFu4jHfO5KOOKpV0A=";
     };
 
     installPhase = ''
@@ -55,8 +55,8 @@ in
 
 buildPythonPackage rec {
   pname = "python-matter-server";
-  version = "5.9.0";
-  format = "pyproject";
+  version = "6.3.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.10";
 
@@ -64,7 +64,7 @@ buildPythonPackage rec {
     owner = "home-assistant-libs";
     repo = "python-matter-server";
     rev = "refs/tags/${version}";
-    hash = "sha256-O3AJ7vBjuwRGa4AMwWIdxn5m2F45rLCjCHeff18b/5E=";
+    hash = "sha256-/e7U0knkWQq9PnTimA2/ncNTyekx7QOcFEdtJHUcb9I=";
   };
 
   patches = [
@@ -80,16 +80,13 @@ buildPythonPackage rec {
       --replace '--cov' ""
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "home-assistant-chip-clusters"
-  ];
+  pythonRelaxDeps = [ "home-assistant-chip-clusters" ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     aiorun
     async-timeout
@@ -99,7 +96,7 @@ buildPythonPackage rec {
     home-assistant-chip-clusters
   ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     server = [
       cryptography
       home-assistant-chip-core
@@ -110,15 +107,15 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     pytest-aiohttp
     pytestCheckHook
-  ]
-  ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
-
-  preCheck = let
-    pythonEnv = python.withPackages (_: propagatedBuildInputs ++ nativeCheckInputs ++ [ pytest ]);
-  in
-  ''
-    export PYTHONPATH=${pythonEnv}/${python.sitePackages}
-  '';
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
+
+  preCheck =
+    let
+      pythonEnv = python.withPackages (_: dependencies ++ nativeCheckInputs ++ [ pytest ]);
+    in
+    ''
+      export PYTHONPATH=${pythonEnv}/${python.sitePackages}
+    '';
 
   pytestFlagsArray = [
     # Upstream theymselves limit the test scope
diff --git a/pkgs/development/python-modules/python-matter-server/link-paa-root-certs.patch b/pkgs/development/python-modules/python-matter-server/link-paa-root-certs.patch
index 6c52715950562..f7b09bb0aff62 100644
--- a/pkgs/development/python-modules/python-matter-server/link-paa-root-certs.patch
+++ b/pkgs/development/python-modules/python-matter-server/link-paa-root-certs.patch
@@ -1,3 +1,13 @@
+From f45cf9898f2e5a3a4c2b73a9ed84c4a037a85a1e Mon Sep 17 00:00:00 2001
+From: Matt Leon <ml@mattleon.com>
+Date: Sat, 1 Jun 2024 23:28:41 -0400
+Subject: [PATCH] Symlink PAA root certificates to nix store
+
+---
+ matter_server/server/const.py                    | 2 ++
+ matter_server/server/helpers/paa_certificates.py | 6 ++++++
+ 2 files changed, 8 insertions(+)
+
 diff --git a/matter_server/server/const.py b/matter_server/server/const.py
 index 8cca3cf..43f02f5 100644
 --- a/matter_server/server/const.py
@@ -12,19 +22,19 @@ index 8cca3cf..43f02f5 100644
      .parent.resolve()
      .parent.resolve()
 diff --git a/matter_server/server/helpers/paa_certificates.py b/matter_server/server/helpers/paa_certificates.py
-index e530838..fdd6025 100644
+index de60c78..185e54c 100644
 --- a/matter_server/server/helpers/paa_certificates.py
 +++ b/matter_server/server/helpers/paa_certificates.py
-@@ -64,6 +64,8 @@ async def fetch_dcl_certificates(
-     fetch_production_certificates: bool = True,
+@@ -105,6 +105,8 @@ async def fetch_dcl_certificates(
+     base_url: str,
  ) -> int:
      """Fetch DCL PAA Certificates."""
 +    return 0
 +
-     LOGGER.info("Fetching the latest PAA root certificates from DCL.")
      fetch_count: int = 0
-     base_urls = set()
-@@ -124,6 +126,8 @@ async def fetch_dcl_certificates(
+ 
+     try:
+@@ -151,6 +153,8 @@ async def fetch_dcl_certificates(
  
  async def fetch_git_certificates(paa_root_cert_dir: Path) -> int:
      """Fetch Git PAA Certificates."""
@@ -33,12 +43,15 @@ index e530838..fdd6025 100644
      fetch_count = 0
      LOGGER.info("Fetching the latest PAA root certificates from Git.")
  
-@@ -159,6 +163,8 @@ async def fetch_certificates(
+@@ -185,6 +189,8 @@ async def fetch_certificates(
      fetch_production_certificates: bool = True,
  ) -> int:
      """Fetch PAA Certificates."""
 +    return 0
 +
      loop = asyncio.get_running_loop()
+     paa_root_cert_dir_version = paa_root_cert_dir / ".version"
  
-     if not paa_root_cert_dir.is_dir():
+-- 
+2.44.1
+
diff --git a/pkgs/development/python-modules/python-mbedtls/default.nix b/pkgs/development/python-modules/python-mbedtls/default.nix
index 967bade85b3b2..8459559938c7e 100644
--- a/pkgs/development/python-modules/python-mbedtls/default.nix
+++ b/pkgs/development/python-modules/python-mbedtls/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, certifi
-, cython
-, mbedtls_2
-, pytestCheckHook
-, setuptools
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  certifi,
+  cython,
+  mbedtls_2,
+  pytestCheckHook,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -26,18 +27,14 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  buildInputs = [
-    mbedtls_2
-  ];
+  buildInputs = [ mbedtls_2 ];
 
   propagatedBuildInputs = [
     certifi
     typing-extensions
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "mbedtls" ];
 
diff --git a/pkgs/development/python-modules/python-memcached/default.nix b/pkgs/development/python-modules/python-memcached/default.nix
index 4ca7cbbadd256..048e53e7eb4c9 100644
--- a/pkgs/development/python-modules/python-memcached/default.nix
+++ b/pkgs/development/python-modules/python-memcached/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, memcached
-, mock
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  memcached,
+  mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-Qko4Qr9WofeklU0uRRrSPrT8YaBYMCy0GP+TF7YZHLI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     memcached
diff --git a/pkgs/development/python-modules/python-miio/default.nix b/pkgs/development/python-modules/python-miio/default.nix
index 1d900d3d7fd8b..07466ebcddcd6 100644
--- a/pkgs/development/python-modules/python-miio/default.nix
+++ b/pkgs/development/python-modules/python-miio/default.nix
@@ -1,30 +1,30 @@
-{ lib
-, android-backup
-, appdirs
-, attrs
-, buildPythonPackage
-, click
-, construct
-, croniter
-, cryptography
-, defusedxml
-, fetchPypi
-, fetchpatch
-, importlib-metadata
-, micloud
-, netifaces
-, poetry-core
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, pytz
-, pyyaml
-, tqdm
-, zeroconf
+{
+  lib,
+  android-backup,
+  appdirs,
+  attrs,
+  buildPythonPackage,
+  click,
+  construct,
+  croniter,
+  cryptography,
+  defusedxml,
+  fetchPypi,
+  fetchpatch,
+  importlib-metadata,
+  micloud,
+  netifaces,
+  poetry-core,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  pyyaml,
+  tqdm,
+  zeroconf,
 }:
 
-
 buildPythonPackage rec {
   pname = "python-miio";
   version = "0.5.12";
@@ -37,9 +37,9 @@ buildPythonPackage rec {
     hash = "sha256-BJw1Gg3FO2R6WWKjkrpxDN4fTMTug5AIj0SNq1gEbBY=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  pythonRelaxDeps = [ "defusedxml" ];
+
+  nativeBuildInputs = [ poetry-core ];
 
   patches = [
     (fetchpatch {
@@ -64,9 +64,7 @@ buildPythonPackage rec {
     pyyaml
     tqdm
     zeroconf
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -74,9 +72,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "miio"
-  ];
+  pythonImportsCheck = [ "miio" ];
 
   meta = with lib; {
     description = "Python library for interfacing with Xiaomi smart appliances";
diff --git a/pkgs/development/python-modules/python-mimeparse/default.nix b/pkgs/development/python-modules/python-mimeparse/default.nix
index ddf89c914ad0b..5291c12e53a1e 100644
--- a/pkgs/development/python-modules/python-mimeparse/default.nix
+++ b/pkgs/development/python-modules/python-mimeparse/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -14,14 +15,12 @@ buildPythonPackage rec {
     sha256 = "76e4b03d700a641fd7761d3cd4fdbbdcd787eade1ebfac43f877016328334f78";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A module provides basic functions for parsing mime-type names and matching them against a list of media-ranges";
+    description = "Module provides basic functions for parsing mime-type names and matching them against a list of media-ranges";
     homepage = "https://github.com/dbtsai/python-mimeparse";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-mistralclient/default.nix b/pkgs/development/python-modules/python-mistralclient/default.nix
new file mode 100644
index 0000000000000..6452fe3063e29
--- /dev/null
+++ b/pkgs/development/python-modules/python-mistralclient/default.nix
@@ -0,0 +1,95 @@
+{
+  lib,
+  buildPythonPackage,
+  cliff,
+  fetchFromGitea,
+  keystoneauth1,
+  openstackdocstheme,
+  os-client-config,
+  osc-lib,
+  oslo-i18n,
+  oslo-serialization,
+  oslo-utils,
+  oslotest,
+  osprofiler,
+  pbr,
+  pythonOlder,
+  pyyaml,
+  requests-mock,
+  requests,
+  setuptools,
+  sphinxcontrib-apidoc,
+  sphinxHook,
+  stestr,
+  stevedore,
+  tempest,
+}:
+
+buildPythonPackage rec {
+  pname = "python-mistralclient";
+  version = "5.3.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitea {
+    domain = "opendev.org";
+    owner = "openstack";
+    repo = "python-mistralclient";
+    rev = version;
+    hash = "sha256-Vi56+OlFU2Aj7yJ/cH5y0ZbzPhglTciJcTnkbA0S7Qo=";
+  };
+
+  env.PBR_VERSION = version;
+
+  nativeBuildInputs = [
+    openstackdocstheme
+    sphinxHook
+    sphinxcontrib-apidoc
+  ];
+
+  sphinxBuilders = [ "man" ];
+
+  build-system = [
+    setuptools
+    pbr
+  ];
+
+  dependencies = [
+    cliff
+    keystoneauth1
+    osc-lib
+    oslo-i18n
+    oslo-serialization
+    oslo-utils
+    pbr
+    pyyaml
+    requests
+    stevedore
+  ];
+
+  nativeCheckInputs = [
+    os-client-config
+    oslotest
+    osprofiler
+    requests-mock
+    stestr
+    tempest
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+    stestr run
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [ "mistralclient" ];
+
+  meta = with lib; {
+    description = "OpenStack Mistral Command-line Client";
+    homepage = "https://opendev.org/openstack/python-mistralclient/";
+    license = licenses.asl20;
+    mainProgram = "mistral";
+    maintainers = teams.openstack.members;
+  };
+}
diff --git a/pkgs/development/python-modules/python-mnist/default.nix b/pkgs/development/python-modules/python-mnist/default.nix
index 5937fceb1a9c8..ec7d447f36c24 100644
--- a/pkgs/development/python-modules/python-mnist/default.nix
+++ b/pkgs/development/python-modules/python-mnist/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "python-mnist";
diff --git a/pkgs/development/python-modules/python-motionmount/default.nix b/pkgs/development/python-modules/python-motionmount/default.nix
index 8e1ba0bb644ec..a97d7be87769f 100644
--- a/pkgs/development/python-modules/python-motionmount/default.nix
+++ b/pkgs/development/python-modules/python-motionmount/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "python-motionmount";
-  version = "1.0.1";
+  version = "2.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "vogelsproducts";
     repo = "python-MotionMount";
     rev = "refs/tags/${version}";
-    hash = "sha256-F/nFo/PivnIogVwEh6MsQZQWg95kQMr6pZuf0SZa3n4=";
+    hash = "sha256-07wTlyfUSt44dBwOXjkXADA+HDy8531KYxJAKqBWKeQ=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/python-mpv-jsonipc/default.nix b/pkgs/development/python-modules/python-mpv-jsonipc/default.nix
index c0e72be598252..13118b3169585 100644
--- a/pkgs/development/python-modules/python-mpv-jsonipc/default.nix
+++ b/pkgs/development/python-modules/python-mpv-jsonipc/default.nix
@@ -1,5 +1,12 @@
-{ lib, buildPythonPackage, fetchFromGitHub, requests
-, tqdm, websocket-client, pythonOlder }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  tqdm,
+  websocket-client,
+  pythonOlder,
+}:
 
 buildPythonPackage rec {
   pname = "python-mpv-jsonipc";
@@ -17,7 +24,11 @@ buildPythonPackage rec {
   # 'mpv-jsonipc' does not have any tests
   doCheck = false;
 
-  propagatedBuildInputs = [ requests tqdm websocket-client ];
+  propagatedBuildInputs = [
+    requests
+    tqdm
+    websocket-client
+  ];
 
   pythonImportsCheck = [ "python_mpv_jsonipc" ];
 
diff --git a/pkgs/development/python-modules/python-multipart/default.nix b/pkgs/development/python-modules/python-multipart/default.nix
index f65beeed10d56..3703e12757626 100644
--- a/pkgs/development/python-modules/python-multipart/default.nix
+++ b/pkgs/development/python-modules/python-multipart/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatchling
-, pytestCheckHook
-, mock
-, pyyaml
-, six
-
-# for passthru.tests
-, asgi-csrf
-, connexion
-, fastapi
-, gradio
-, starlette
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  pytestCheckHook,
+  mock,
+  pyyaml,
+  six,
+
+  # for passthru.tests
+  asgi-csrf,
+  connexion,
+  fastapi,
+  gradio,
+  starlette,
 }:
 
 buildPythonPackage rec {
@@ -26,17 +27,11 @@ buildPythonPackage rec {
     hash = "sha256-A/VGiMZj8beXcQXwIQQ7B5MVHkyxwanUoR/BPWIsQCY=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
-  pythonImportsCheck = [
-    "multipart"
-  ];
+  pythonImportsCheck = [ "multipart" ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -51,11 +46,11 @@ buildPythonPackage rec {
       fastapi
       gradio
       starlette
-    ;
+      ;
   };
 
   meta = with lib; {
-    description = "A streaming multipart parser for Python";
+    description = "Streaming multipart parser for Python";
     homepage = "https://github.com/andrew-d/python-multipart";
     license = licenses.asl20;
     maintainers = with maintainers; [ ris ];
diff --git a/pkgs/development/python-modules/python-musicpd/default.nix b/pkgs/development/python-modules/python-musicpd/default.nix
index cc4ab6b722f0a..72ba24cc0aeba 100644
--- a/pkgs/development/python-modules/python-musicpd/default.nix
+++ b/pkgs/development/python-modules/python-musicpd/default.nix
@@ -1,24 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "python-musicpd";
-  version = "0.8.0";
+  version = "0.9.0";
 
   src = fetchPypi {
     inherit pname;
     inherit version;
-    sha256 = "sha256-5Br4rZO1c/pPmAZ/UecYjuVLttR8R+xeReKsc/xnaeI=";
+    hash = "sha256-/FdM0UolVqhJNpS60Q/nra1hSHKL/LiSMX7/Hcipwco=";
   };
 
-  format = "setuptools";
+  pyproject = true;
+
+  build-system = [ setuptools ];
 
   doCheck = true;
 
   meta = with lib; {
-    description = "An MPD (Music Player Daemon) client library written in pure Python.";
+    description = "MPD (Music Player Daemon) client library written in pure Python";
     homepage = "https://gitlab.com/kaliko/python-musicpd";
     license = licenses.lgpl3Plus;
     maintainers = with lib.maintainers; [ apfelkuchen6 ];
diff --git a/pkgs/development/python-modules/python-mystrom/default.nix b/pkgs/development/python-modules/python-mystrom/default.nix
index 5b2f76d2571e3..ac95067f25e77 100644
--- a/pkgs/development/python-modules/python-mystrom/default.nix
+++ b/pkgs/development/python-modules/python-mystrom/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, aiohttp
-, click
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  aiohttp,
+  click,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/python-ndn/default.nix b/pkgs/development/python-modules/python-ndn/default.nix
index 8051c79173e83..2484537aabf91 100644
--- a/pkgs/development/python-modules/python-ndn/default.nix
+++ b/pkgs/development/python-modules/python-ndn/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, aenum
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, lark
-, poetry-core
-, poetry-dynamic-versioning
-, pycryptodomex
-, pygtrie
-, pytestCheckHook
-, pythonRelaxDepsHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  aenum,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lark,
+  poetry-core,
+  poetry-dynamic-versioning,
+  pycryptodomex,
+  pygtrie,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -32,7 +32,6 @@ buildPythonPackage rec {
   nativeBuildInputs = [
     setuptools
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -44,21 +43,17 @@ buildPythonPackage rec {
     aiohttp
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonRelaxDeps = [
-    "lark"
-  ];
+  pythonRelaxDeps = [ "lark" ];
 
   pythonImportsCheck = [ "ndn" ];
 
   meta = with lib; {
-    description = "An NDN client library with AsyncIO support";
+    description = "NDN client library with AsyncIO support";
     homepage = "https://github.com/named-data/python-ndn";
     changelog = "https://github.com/named-data/python-ndn/blob/${src.rev}/CHANGELOG.rst";
     license = licenses.asl20;
-    maintainers = with maintainers; [ janik ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-nest/default.nix b/pkgs/development/python-modules/python-nest/default.nix
index 1cbdd2837a723..bcac7a5cad8ec 100644
--- a/pkgs/development/python-modules/python-nest/default.nix
+++ b/pkgs/development/python-modules/python-nest/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python-dateutil
-, requests
-, six
-, sseclient-py
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python-dateutil,
+  requests,
+  six,
+  sseclient-py,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "nest"
-  ];
+  pythonImportsCheck = [ "nest" ];
 
   meta = with lib; {
     description = "Python API and command line tool for talking to the Nest™ Thermostat";
diff --git a/pkgs/development/python-modules/python-neutronclient/default.nix b/pkgs/development/python-modules/python-neutronclient/default.nix
new file mode 100644
index 0000000000000..0c68f8c086db3
--- /dev/null
+++ b/pkgs/development/python-modules/python-neutronclient/default.nix
@@ -0,0 +1,98 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  # Build and Runtime
+  pbr,
+  cliff,
+  debtcollector,
+  iso8601,
+  netaddr,
+  openstacksdk,
+  osc-lib,
+  oslo-i18n,
+  oslo-log,
+  oslo-serialization,
+  oslo-utils,
+  os-client-config,
+  keystoneauth1,
+  python-keystoneclient,
+  requests,
+  hacking,
+  # Tests
+  fixtures,
+  oslotest,
+  osprofiler,
+  python-openstackclient,
+  subunit,
+  requests-mock,
+  stestr,
+  testtools,
+  testscenarios,
+  tempest,
+}:
+
+buildPythonPackage rec {
+  pname = "python-neutronclient";
+  version = "11.3.1";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-U82ZI/Q6OwdypA41YfdGVa3IA4+QJhqz3gW2IR0S7cs=";
+  };
+
+  build-system = [
+    setuptools
+    pbr
+  ];
+
+  dependencies = [
+    cliff
+    debtcollector
+    iso8601
+    netaddr
+    openstacksdk
+    osc-lib
+    oslo-i18n
+    oslo-log
+    oslo-serialization
+    oslo-utils
+    os-client-config
+    keystoneauth1
+    python-keystoneclient
+    requests
+  ];
+
+  nativeCheckInputs = [
+    hacking
+    fixtures
+    oslotest
+    osprofiler
+    python-openstackclient
+    subunit
+    requests-mock
+    stestr
+    testtools
+    testscenarios
+    tempest
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+
+    stestr run
+
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [ "neutronclient" ];
+
+  meta = with lib; {
+    description = "Python bindings for the OpenStack Networking API";
+    homepage = "https://opendev.org/openstack/python-neutronclient/";
+    license = licenses.asl20;
+    maintainers = teams.openstack.members;
+  };
+}
diff --git a/pkgs/development/python-modules/python-nmap/default.nix b/pkgs/development/python-modules/python-nmap/default.nix
index d0f3129a321c1..b6651d641dcbc 100644
--- a/pkgs/development/python-modules/python-nmap/default.nix
+++ b/pkgs/development/python-modules/python-nmap/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nmap
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  nmap,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-91r2uR3Y47DDH4adsyFj9iraaGlF5bfCX4S8D3+tO2Q=";
   };
 
-  propagatedBuildInputs = [
-    nmap
-  ];
+  propagatedBuildInputs = [ nmap ];
 
   postPatch = ''
     substituteInPlace setup.cfg \
@@ -26,9 +25,7 @@ buildPythonPackage rec {
   # Tests requires sudo and performs scans
   doCheck = false;
 
-  pythonImportsCheck = [
-    "nmap"
-  ];
+  pythonImportsCheck = [ "nmap" ];
 
   meta = with lib; {
     description = "Python library which helps in using nmap";
diff --git a/pkgs/development/python-modules/python-nomad/default.nix b/pkgs/development/python-modules/python-nomad/default.nix
index 3a7750e9deac7..2f4cfc1fef7ff 100644
--- a/pkgs/development/python-modules/python-nomad/default.nix
+++ b/pkgs/development/python-modules/python-nomad/default.nix
@@ -1,32 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  requests,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "python-nomad";
-  version = "2.0.0";
-  format = "setuptools";
+  version = "2.0.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-5IyHNw1ArE8fU9DoSQMGkDI9d/OiR1YI/7nTPeFIK+A=";
+    pname = "python_nomad";
+    inherit version;
+    hash = "sha256-TXCm6FxYoavjN3ASioQ7yXQVsDDXedDKBgGGP8ghQdM=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ requests ];
 
   # Tests require nomad agent
   doCheck = false;
 
-  pythonImportsCheck = [
-    "nomad"
-  ];
+  pythonImportsCheck = [ "nomad" ];
 
   meta = with lib; {
     description = "Python client library for Hashicorp Nomad";
diff --git a/pkgs/development/python-modules/python-novaclient/default.nix b/pkgs/development/python-modules/python-novaclient/default.nix
index d3451236d0914..481827342f53c 100644
--- a/pkgs/development/python-modules/python-novaclient/default.nix
+++ b/pkgs/development/python-modules/python-novaclient/default.nix
@@ -1,33 +1,48 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, ddt
-, iso8601
-, keystoneauth1
-, openssl
-, oslo-i18n
-, oslo-serialization
-, pbr
-, prettytable
-, pythonOlder
-, requests-mock
-, stestr
-, testscenarios
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  ddt,
+  iso8601,
+  keystoneauth1,
+  openssl,
+  openstackdocstheme,
+  oslo-i18n,
+  oslo-serialization,
+  pbr,
+  prettytable,
+  pythonOlder,
+  requests-mock,
+  setuptools,
+  sphinxcontrib-apidoc,
+  sphinxHook,
+  stestr,
+  testscenarios,
 }:
 
 buildPythonPackage rec {
   pname = "python-novaclient";
-  version = "18.6.0";
-  format = "setuptools";
+  version = "18.7.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-VzwQqkILCJjTX7FG7di7AFgGv/8BMa4rWjDKIqyJR3s=";
+    hash = "sha256-lMrQ8PTBYc7VKl7NhdE0/Wc7mX2nGUoDHAymk0Q0Cw0=";
   };
 
-  propagatedBuildInputs = [
+  nativeBuildInputs = [
+    openstackdocstheme
+    sphinxcontrib-apidoc
+    sphinxHook
+  ];
+
+  sphinxBuilders = [ "man" ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     iso8601
     keystoneauth1
     oslo-i18n
@@ -45,12 +60,14 @@ buildPythonPackage rec {
   ];
 
   checkPhase = ''
+    runHook preCheck
     stestr run -e <(echo "
     novaclient.tests.unit.test_shell.ParserTest.test_ambiguous_option
     novaclient.tests.unit.test_shell.ParserTest.test_not_really_ambiguous_option
     novaclient.tests.unit.test_shell.ShellTest.test_osprofiler
     novaclient.tests.unit.test_shell.ShellTestKeystoneV3.test_osprofiler
     ")
+    runHook postCheck
   '';
 
   pythonImportsCheck = [ "novaclient" ];
diff --git a/pkgs/development/python-modules/python-nvd3/default.nix b/pkgs/development/python-modules/python-nvd3/default.nix
index 3674cb9bf5681..1ab84159b4374 100644
--- a/pkgs/development/python-modules/python-nvd3/default.nix
+++ b/pkgs/development/python-modules/python-nvd3/default.nix
@@ -1,9 +1,17 @@
-{ lib, buildPythonPackage, fetchFromGitHub, python-slugify, jinja2, setuptools, coverage }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python-slugify,
+  jinja2,
+  setuptools,
+  pytestCheckHook,
+}:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "python-nvd3";
   version = "0.15.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "areski";
@@ -12,18 +20,22 @@ buildPythonPackage rec {
     sha256 = "1vjnicszcc9j0rgb58104fk9sry5xad1xli64jana9bkx42c6x1v";
   };
 
-  propagatedBuildInputs = [ python-slugify jinja2 setuptools ];
-  nativeCheckInputs = [ coverage ];
+  build-system = [ setuptools ];
 
-  checkPhase = ''
-    coverage run --source=nvd3 setup.py test
-  '';
+  dependencies = [
+    python-slugify
+    jinja2
+  ];
 
-  meta = with lib; {
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pytestFlagsArray = [ "tests.py" ];
+
+  meta = {
     homepage = "https://github.com/areski/python-nvd3";
     description = "Python Wrapper for NVD3 - It's time for beautiful charts";
     mainProgram = "nvd3";
-    license = licenses.mit;
-    maintainers = [ maintainers.ivan-tkatchev ];
+    license = lib.licenses.mit;
+    maintainers = [ lib.maintainers.ivan-tkatchev ];
   };
 }
diff --git a/pkgs/development/python-modules/python-oauth2/default.nix b/pkgs/development/python-modules/python-oauth2/default.nix
index cd1baccf286c8..14bf4a05a425e 100644
--- a/pkgs/development/python-modules/python-oauth2/default.nix
+++ b/pkgs/development/python-modules/python-oauth2/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +18,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Framework that aims at making it easy to provide authentication via OAuth 2.0 within an application stack";
-    homepage =  "https://github.com/wndhydrnt/python-oauth2";
+    homepage = "https://github.com/wndhydrnt/python-oauth2";
     license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/python-octaviaclient/default.nix b/pkgs/development/python-modules/python-octaviaclient/default.nix
new file mode 100644
index 0000000000000..5c671398eed5d
--- /dev/null
+++ b/pkgs/development/python-modules/python-octaviaclient/default.nix
@@ -0,0 +1,89 @@
+{
+  lib,
+  buildPythonPackage,
+  cliff,
+  doc8,
+  docutils,
+  fetchPypi,
+  hacking,
+  keystoneauth1,
+  openstackclient,
+  openstackdocstheme,
+  osc-lib,
+  oslotest,
+  oslo-serialization,
+  oslo-utils,
+  pbr,
+  pygments,
+  python-neutronclient,
+  requests,
+  requests-mock,
+  setuptools,
+  sphinx,
+  sphinxcontrib-apidoc,
+  stestr,
+  subunit,
+  testscenarios,
+}:
+
+buildPythonPackage rec {
+  pname = "python-octaviaclient";
+  version = "3.8.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-wrYhCY3gqcklSK8lapsgFq25Yi3awEGgarW2a7W1kO4=";
+  };
+
+  build-system = [
+    setuptools
+    pbr
+  ];
+
+  nativeBuildInputs = [
+    openstackdocstheme
+    sphinx
+    sphinxcontrib-apidoc
+  ];
+
+  dependencies = [
+    cliff
+    keystoneauth1
+    python-neutronclient
+    openstackclient
+    osc-lib
+    oslo-serialization
+    oslo-utils
+    requests
+  ];
+
+  nativeCheckInputs = [
+    hacking
+    requests-mock
+    doc8
+    docutils
+    pygments
+    subunit
+    oslotest
+    stestr
+    testscenarios
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+
+    stestr run
+
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [ "octaviaclient" ];
+
+  meta = with lib; {
+    description = "OpenStack Octavia Command-line Client";
+    homepage = "https://opendev.org/openstack/python-octaviaclient/";
+    license = licenses.asl20;
+    maintainers = teams.openstack.members;
+  };
+}
diff --git a/pkgs/development/python-modules/python-olm/default.nix b/pkgs/development/python-modules/python-olm/default.nix
index 8d0459e6eb633..642af55ed7862 100644
--- a/pkgs/development/python-modules/python-olm/default.nix
+++ b/pkgs/development/python-modules/python-olm/default.nix
@@ -1,9 +1,12 @@
-{ lib, buildPythonPackage, isPy3k, olm
-, cffi
-, future
-, aspectlib
-, pytest-benchmark
-, pytestCheckHook
+{
+  buildPythonPackage,
+  isPy3k,
+  olm,
+  cffi,
+  future,
+  aspectlib,
+  pytest-benchmark,
+  pytestCheckHook,
 }:
 
 buildPythonPackage {
@@ -25,9 +28,7 @@ buildPythonPackage {
     future
   ];
 
-  propagatedNativeBuildInputs = [
-    cffi
-  ];
+  propagatedNativeBuildInputs = [ cffi ];
 
   pythonImportsCheck = [ "olm" ];
 
diff --git a/pkgs/development/python-modules/python-on-whales/default.nix b/pkgs/development/python-modules/python-on-whales/default.nix
index 3cd8f85e6a40f..590ec69df6249 100644
--- a/pkgs/development/python-modules/python-on-whales/default.nix
+++ b/pkgs/development/python-modules/python-on-whales/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pythonOlder
-, pydantic
-, requests
-, tqdm
-, typer
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
+  pydantic,
+  requests,
+  tqdm,
+  typer,
 }:
 
 buildPythonPackage rec {
@@ -32,7 +33,7 @@ buildPythonPackage rec {
     typer
   ];
 
-  doCheck = false;  # majority of tests require Docker and/or network access
+  doCheck = false; # majority of tests require Docker and/or network access
   pythonImportsCheck = [ "python_on_whales" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/python-opendata-transport/default.nix b/pkgs/development/python-modules/python-opendata-transport/default.nix
index 473eb8089707f..0473b5dcfe19e 100644
--- a/pkgs/development/python-modules/python-opendata-transport/default.nix
+++ b/pkgs/development/python-modules/python-opendata-transport/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, urllib3
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  urllib3,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-2lEKPu5vjyqNUqz1NGmZ5b6YP3oWnCgoubDdiQCbdps=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -32,9 +31,7 @@ buildPythonPackage rec {
   # No tests are present
   doCheck = false;
 
-  pythonImportsCheck = [
-    "opendata_transport"
-  ];
+  pythonImportsCheck = [ "opendata_transport" ];
 
   meta = with lib; {
     description = "Python client for interacting with transport.opendata.ch";
diff --git a/pkgs/development/python-modules/python-openems/default.nix b/pkgs/development/python-modules/python-openems/default.nix
index c4b07b18cafa9..a13f0d8bff844 100644
--- a/pkgs/development/python-modules/python-openems/default.nix
+++ b/pkgs/development/python-modules/python-openems/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, cython_0
-, openems
-, csxcad
-, boost
-, python-csxcad
-, numpy
-, h5py
+{
+  lib,
+  buildPythonPackage,
+  cython_0,
+  openems,
+  csxcad,
+  boost,
+  python-csxcad,
+  numpy,
+  h5py,
 }:
 
 buildPythonPackage rec {
@@ -31,7 +32,11 @@ buildPythonPackage rec {
     h5py
   ];
 
-  setupPyBuildFlags = [ "-I${openems}/include" "-L${openems}/lib" "-R${openems}/lib" ];
+  setupPyBuildFlags = [
+    "-I${openems}/include"
+    "-L${openems}/lib"
+    "-R${openems}/lib"
+  ];
   pythonImportsCheck = [ "openEMS" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/python-opensky/default.nix b/pkgs/development/python-modules/python-opensky/default.nix
index e6b7a41f6e68b..bef8dadf31863 100644
--- a/pkgs/development/python-modules/python-opensky/default.nix
+++ b/pkgs/development/python-modules/python-opensky/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pydantic
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, syrupy
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pydantic,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  syrupy,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "python-opensky";
-  version = "1.0.0";
+  version = "1.0.1";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -23,7 +24,7 @@ buildPythonPackage rec {
     owner = "joostlek";
     repo = "python-opensky";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Ia6/Lr/uNuF1u0s4g0tpYaW+hKeLbUKxYC/O+ZBqiXI=";
+    hash = "sha256-V6iRwWzCnPCvu8eks2sHPYrX3OmaFnNj+i57kQJKYm0=";
   };
 
   postPatch = ''
@@ -34,9 +35,7 @@ buildPythonPackage rec {
       --replace ".joinpath(uri)" "/ uri"
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -51,9 +50,7 @@ buildPythonPackage rec {
     syrupy
   ];
 
-  pythonImportsCheck = [
-    "python_opensky"
-  ];
+  pythonImportsCheck = [ "python_opensky" ];
 
   meta = with lib; {
     description = "Asynchronous Python client for the OpenSky API";
diff --git a/pkgs/development/python-modules/python-openstackclient/default.nix b/pkgs/development/python-modules/python-openstackclient/default.nix
index 9663fce022f17..c82331304a0f5 100644
--- a/pkgs/development/python-modules/python-openstackclient/default.nix
+++ b/pkgs/development/python-modules/python-openstackclient/default.nix
@@ -1,62 +1,102 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, ddt
-, installShellFiles
-, openstackdocstheme
-, osc-lib
-, pbr
-, python-cinderclient
-, python-keystoneclient
-, python-novaclient
-, requests-mock
-, sphinx
-, sphinxcontrib-apidoc
-, stestr
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  ddt,
+  openstackdocstheme,
+  osc-lib,
+  osc-placement,
+  pbr,
+  python-aodhclient,
+  python-barbicanclient,
+  python-cinderclient,
+  python-designateclient,
+  python-heatclient,
+  python-ironicclient,
+  python-keystoneclient,
+  python-magnumclient,
+  python-manilaclient,
+  python-mistralclient,
+  python-neutronclient,
+  python-openstackclient,
+  python-watcherclient,
+  python-zaqarclient,
+  python-zunclient,
+  requests-mock,
+  requests,
+  setuptools,
+  sphinxHook,
+  sphinxcontrib-apidoc,
+  stestr,
+  testers,
 }:
 
 buildPythonPackage rec {
   pname = "python-openstackclient";
-  version = "6.6.0";
-  format = "setuptools";
+  version = "7.1.2";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-u+8e00gpxBBSsuyiZIDinKH3K+BY0UMNpTQexExPKVw=";
+    hash = "sha256-hLbxcm/LkqMU2dyTMYhIB12iR7eYMUhC0bFS8zZEGl0=";
   };
 
-  nativeBuildInputs = [
-    installShellFiles
+  build-system = [
     openstackdocstheme
-    sphinx
+    setuptools
+    sphinxHook
     sphinxcontrib-apidoc
   ];
 
-  propagatedBuildInputs = [
+  sphinxBuilders = [ "man" ];
+
+  dependencies = [
     osc-lib
     pbr
     python-cinderclient
     python-keystoneclient
-    python-novaclient
+    requests
   ];
 
-  postInstall = ''
-    sphinx-build -a -E -d doc/build/doctrees -b man doc/source doc/build/man
-    installManPage doc/build/man/openstack.1
-  '';
-
   nativeCheckInputs = [
     ddt
-    stestr
     requests-mock
+    stestr
   ];
 
   checkPhase = ''
+    runHook preCheck
     stestr run
+    runHook postCheck
   '';
 
   pythonImportsCheck = [ "openstackclient" ];
 
+  passthru = {
+    optional-dependencies = {
+      # See https://github.com/openstack/python-openstackclient/blob/master/doc/source/contributor/plugins.rst
+      cli-plugins = [
+        osc-placement
+        python-aodhclient
+        python-barbicanclient
+        python-designateclient
+        python-heatclient
+        python-ironicclient
+        python-magnumclient
+        python-manilaclient
+        python-mistralclient
+        python-neutronclient
+        python-watcherclient
+        python-zaqarclient
+        python-zunclient
+      ];
+    };
+    tests.version = testers.testVersion {
+      package = python-openstackclient;
+      command = "openstack --version";
+    };
+  };
+
   meta = with lib; {
     description = "OpenStack Command-line Client";
     mainProgram = "openstack";
diff --git a/pkgs/development/python-modules/python-openzwave/default.nix b/pkgs/development/python-modules/python-openzwave/default.nix
index 4611039e34d9a..6b516823c5aba 100644
--- a/pkgs/development/python-modules/python-openzwave/default.nix
+++ b/pkgs/development/python-modules/python-openzwave/default.nix
@@ -1,7 +1,18 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k
-, pkg-config
-, systemd, libyaml, openzwave, cython, pyserial
-, six, pydispatcher, urwid }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  pkg-config,
+  systemd,
+  libyaml,
+  openzwave,
+  cython,
+  pyserial,
+  six,
+  pydispatcher,
+  urwid,
+}:
 
 buildPythonPackage rec {
   pname = "python-openzwave";
@@ -18,8 +29,18 @@ buildPythonPackage rec {
   };
 
   nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ systemd libyaml openzwave cython ];
-  propagatedBuildInputs = [ six urwid pydispatcher pyserial ];
+  buildInputs = [
+    systemd
+    libyaml
+    openzwave
+    cython
+  ];
+  propagatedBuildInputs = [
+    six
+    urwid
+    pydispatcher
+    pyserial
+  ];
 
   # primary location for the .xml files is in /etc/openzwave so we override the
   # /usr/local/etc lookup instead as that allows us to dump new .xml files into
@@ -38,7 +59,7 @@ buildPythonPackage rec {
     description = "Python wrapper for the OpenZWave C++ library";
     homepage = "https://github.com/OpenZWave/python-openzwave";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     inherit (openzwave.meta) platforms;
   };
 }
diff --git a/pkgs/development/python-modules/python-osc/default.nix b/pkgs/development/python-modules/python-osc/default.nix
index b82549955bdad..ee782b7362a7a 100644
--- a/pkgs/development/python-modules/python-osc/default.nix
+++ b/pkgs/development/python-modules/python-osc/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,17 +20,11 @@ buildPythonPackage rec {
     hash = "sha256-pc4bpWyNgt9Ryz8pRrXdM6cFInkazEuFZOYtKyCtnKo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "pythonosc"
-  ];
+  pythonImportsCheck = [ "pythonosc" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Open Sound Control server and client in pure python";
diff --git a/pkgs/development/python-modules/python-otbr-api/default.nix b/pkgs/development/python-modules/python-otbr-api/default.nix
index 675f72d5e0356..6df0b0c8f36fd 100644
--- a/pkgs/development/python-modules/python-otbr-api/default.nix
+++ b/pkgs/development/python-modules/python-otbr-api/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, aiohttp
-, bitstruct
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, voluptuous
+{
+  lib,
+  aiohttp,
+  bitstruct,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  voluptuous,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-RMj4NdEbMIxh2PDzbhUWgmcdzRXY8RxcQNN/bbGOW5Q=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -41,9 +40,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "python_otbr_api"
-  ];
+  pythonImportsCheck = [ "python_otbr_api" ];
 
   meta = with lib; {
     description = "Library for the Open Thread Border Router";
diff --git a/pkgs/development/python-modules/python-owasp-zap-v2-4/default.nix b/pkgs/development/python-modules/python-owasp-zap-v2-4/default.nix
index e9ad3d9893ef2..5aaca9b14f110 100644
--- a/pkgs/development/python-modules/python-owasp-zap-v2-4/default.nix
+++ b/pkgs/development/python-modules/python-owasp-zap-v2-4/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyhamcrest
-, pytestCheckHook
-, requests
-, requests-mock
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyhamcrest,
+  pytestCheckHook,
+  requests,
+  requests-mock,
+  six,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/python-packer/default.nix b/pkgs/development/python-modules/python-packer/default.nix
index d4380da9b4e97..851cae395ad40 100644
--- a/pkgs/development/python-modules/python-packer/default.nix
+++ b/pkgs/development/python-modules/python-packer/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, fetchpatch, sh }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  sh,
+}:
 
 buildPythonPackage rec {
   pname = "python-packer";
@@ -22,7 +28,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "An interface for packer.io";
+    description = "Interface for packer.io";
     homepage = "https://github.com/nir0s/python-packer";
     license = licenses.asl20;
     maintainers = with maintainers; [ psyanticy ];
diff --git a/pkgs/development/python-modules/python-pae/default.nix b/pkgs/development/python-modules/python-pae/default.nix
index 73456cbd8f559..731626689adf2 100644
--- a/pkgs/development/python-modules/python-pae/default.nix
+++ b/pkgs/development/python-modules/python-pae/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, poetry-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  poetry-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,13 +21,9 @@ buildPythonPackage rec {
     hash = "sha256-D0X2T0ze79KR6Gno4UWpA/XvlkK6Y/jXUtLbzlOKr3E=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "python_pae" ];
 
@@ -34,6 +31,6 @@ buildPythonPackage rec {
     description = "Pre-authentication encoding (PAE) implementation in Python";
     homepage = "https://github.com/MatthiasValvekens/python-pae";
     license = licenses.mit;
-    maintainers = with maintainers; [ wolfangaukang ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-pam/default.nix b/pkgs/development/python-modules/python-pam/default.nix
index 22dcf9e467b8a..3a2d011ab0c53 100644
--- a/pkgs/development/python-modules/python-pam/default.nix
+++ b/pkgs/development/python-modules/python-pam/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pam
-, six
-, toml
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pam,
+  six,
+  toml,
 }:
 
 buildPythonPackage rec {
@@ -25,13 +26,9 @@ buildPythonPackage rec {
       --replace 'find_library("pam_misc")' '"${pam}/lib/libpam_misc.so"'
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  buildInputs = [
-    pam
-  ];
+  buildInputs = [ pam ];
 
   propagatedBuildInputs = [
     six
@@ -44,6 +41,9 @@ buildPythonPackage rec {
     description = "Python pam module";
     homepage = "https://github.com/FirefighterBlu3/python-pam";
     license = licenses.mit;
-    maintainers = with maintainers; [ abbradar mkg20001 ];
+    maintainers = with maintainers; [
+      abbradar
+      mkg20001
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/python-periphery/default.nix b/pkgs/development/python-modules/python-periphery/default.nix
index 6437bbffe01cc..95751831d2cc0 100644
--- a/pkgs/development/python-modules/python-periphery/default.nix
+++ b/pkgs/development/python-modules/python-periphery/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "python-periphery";
@@ -7,7 +11,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-YdRh1zaYKm92boeHIKsQpoFR4ujBCGYA2TiaxH5A6Io=";
+    hash = "sha256-YdRh1zaYKm92boeHIKsQpoFR4ujBCGYA2TiaxH5A6Io=";
   };
 
   # Some tests require physical probing and additional physical setup
diff --git a/pkgs/development/python-modules/python-picnic-api/default.nix b/pkgs/development/python-modules/python-picnic-api/default.nix
index b467a1a36f843..5267f99587c02 100644
--- a/pkgs/development/python-modules/python-picnic-api/default.nix
+++ b/pkgs/development/python-modules/python-picnic-api/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -14,17 +15,13 @@ buildPythonPackage rec {
     sha256 = "1axqw4bs3wa9mdac35h7r25v3i5g7v55cvyy48c4sg31dxnr4wcp";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Project doesn't ship tests
   # https://github.com/MikeBrink/python-picnic-api/issues/13
   doCheck = false;
 
-  pythonImportsCheck = [
-    "python_picnic_api"
-  ];
+  pythonImportsCheck = [ "python_picnic_api" ];
 
   meta = with lib; {
     description = "Python wrapper for the Picnic API";
diff --git a/pkgs/development/python-modules/python-pidfile/default.nix b/pkgs/development/python-modules/python-pidfile/default.nix
index b9629d7303cec..44a44306ee8e3 100644
--- a/pkgs/development/python-modules/python-pidfile/default.nix
+++ b/pkgs/development/python-modules/python-pidfile/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, psutil
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  psutil,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-pgQBL2iagsHMRFEKI85ZwyaIL7kcIftAy6s+lX958M0=";
   };
 
-  propagatedBuildInputs = [
-    psutil
-  ];
+  propagatedBuildInputs = [ psutil ];
 
   pythonImportsCheck = [ "pidfile" ];
 
diff --git a/pkgs/development/python-modules/python-pipedrive/default.nix b/pkgs/development/python-modules/python-pipedrive/default.nix
index a3c37ab5a5daa..9f541ba8005c0 100644
--- a/pkgs/development/python-modules/python-pipedrive/default.nix
+++ b/pkgs/development/python-modules/python-pipedrive/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, httplib2
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  httplib2,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/python-pkcs11/default.nix b/pkgs/development/python-modules/python-pkcs11/default.nix
index 260b26730728d..b4891105ce226 100644
--- a/pkgs/development/python-modules/python-pkcs11/default.nix
+++ b/pkgs/development/python-modules/python-pkcs11/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, asn1crypto
-, buildPythonPackage
-, cached-property
-, cython
-, fetchFromGitHub
-, setuptools-scm
+{
+  lib,
+  asn1crypto,
+  buildPythonPackage,
+  cached-property,
+  cython,
+  fetchFromGitHub,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/python-pptx/default.nix b/pkgs/development/python-modules/python-pptx/default.nix
index b18a5606f66b8..92ff6ce7857e7 100644
--- a/pkgs/development/python-modules/python-pptx/default.nix
+++ b/pkgs/development/python-modules/python-pptx/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, lxml
-, xlsxwriter
-, pillow
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  lxml,
+  xlsxwriter,
+  pillow,
 }:
 buildPythonPackage rec {
   pname = "python-pptx";
@@ -34,6 +35,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/scanny/python-pptx";
     description = "Create Open XML PowerPoint documents in Python";
     license = licenses.mit;
-    maintainers = with maintainers; [happysalada];
+    maintainers = with maintainers; [ happysalada ];
   };
 }
diff --git a/pkgs/development/python-modules/python-prctl/default.nix b/pkgs/development/python-modules/python-prctl/default.nix
index 6ebb017e7fd79..ffc946a56f54b 100644
--- a/pkgs/development/python-modules/python-prctl/default.nix
+++ b/pkgs/development/python-modules/python-prctl/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, libcap
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  libcap,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/python-ptrace/default.nix b/pkgs/development/python-modules/python-ptrace/default.nix
index 496987c94e4a4..545610fb695ff 100644
--- a/pkgs/development/python-modules/python-ptrace/default.nix
+++ b/pkgs/development/python-modules/python-ptrace/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-Vrv+9E6vOne+SBOMyldnzfRx6CeP4Umfm3LxUZB/Jc8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # requires distorm, which is optionally
   doCheck = false;
diff --git a/pkgs/development/python-modules/python-rabbitair/default.nix b/pkgs/development/python-modules/python-rabbitair/default.nix
index 28c0ab9f4e562..fee2f88d5038c 100644
--- a/pkgs/development/python-modules/python-rabbitair/default.nix
+++ b/pkgs/development/python-modules/python-rabbitair/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, typing-extensions
-, zeroconf
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
+  zeroconf,
 }:
 
 buildPythonPackage rec {
@@ -24,25 +25,19 @@ buildPythonPackage rec {
     hash = "sha256-CGr7NvnGRNTiKq5BpB/zmfgyd/2ggTbO0nj+Q+MavTs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     cryptography
     zeroconf
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "rabbitair"
-  ];
+  pythonImportsCheck = [ "rabbitair" ];
 
   disabledTests = [
     # Tests require network access
diff --git a/pkgs/development/python-modules/python-rapidjson/default.nix b/pkgs/development/python-modules/python-rapidjson/default.nix
index 6c6aea0f161cd..6a631e49875e2 100644
--- a/pkgs/development/python-modules/python-rapidjson/default.nix
+++ b/pkgs/development/python-modules/python-rapidjson/default.nix
@@ -1,34 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pythonOlder
-, rapidjson
-, pytestCheckHook
-, pytz
-, setuptools
-, substituteAll
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  rapidjson,
+  pytestCheckHook,
+  pytz,
+  setuptools,
+  substituteAll,
 }:
 
-let
-  rapidjson' = rapidjson.overrideAttrs (old: {
-    version = "unstable-2023-03-06";
-    src = fetchFromGitHub {
-      owner = "Tencent";
-      repo = "rapidjson";
-      rev = "5e17dbed34eef33af8f3e734820b5dc547a2a3aa";
-      hash = "sha256-CTy42X6P6+Gz4WbJ3tCpAw3qqlJ+mU1PaWW9LGG+6nU=";
-    };
-    patches = [
-      (fetchpatch {
-        name = "do-not-include-gtest-src-dir.patch";
-        url = "https://git.alpinelinux.org/aports/plain/community/rapidjson/do-not-include-gtest-src-dir.patch?id=9e5eefc7a5fcf5938a8dc8a3be8c75e9e6809909";
-        hash = "sha256-BjSZEwfCXA/9V+kxQ/2JPWbc26jQn35CfN8+8NW24s4=";
-      })
-    ];
-  });
-in buildPythonPackage rec {
-  version = "1.16";
+buildPythonPackage rec {
+  version = "1.20";
   pname = "python-rapidjson";
   disabled = pythonOlder "3.8";
 
@@ -38,28 +21,24 @@ in buildPythonPackage rec {
     owner = "python-rapidjson";
     repo = "python-rapidjson";
     rev = "refs/tags/v${version}";
-    hash = "sha256-4Z8cNu6tK5/yAu6b9Vb/EdXQj+fQgeT0QIszTEUurVM=";
+    hash = "sha256-xIswmHQMl5pAqvcTNqeuO3P6MynKt3ahzUgGQroaqmw=";
   };
 
   patches = [
     (substituteAll {
       src = ./rapidjson-include-dir.patch;
-      rapidjson = lib.getDev rapidjson';
+      rapidjson = lib.getDev rapidjson;
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     pytestCheckHook
     pytz
   ];
 
-  disabledTestPaths = [
-    "benchmarks"
-  ];
+  disabledTestPaths = [ "benchmarks" ];
 
   meta = with lib; {
     changelog = "https://github.com/python-rapidjson/python-rapidjson/blob/${src.rev}/CHANGES.rst";
diff --git a/pkgs/development/python-modules/python-redis-lock/default.nix b/pkgs/development/python-modules/python-redis-lock/default.nix
index 44527977bc192..a891f0a0e48c3 100644
--- a/pkgs/development/python-modules/python-redis-lock/default.nix
+++ b/pkgs/development/python-modules/python-redis-lock/default.nix
@@ -1,22 +1,25 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, eventlet
-, fetchPypi
-, gevent
-, pkgs
-, process-tests
-, pytestCheckHook
-, pythonOlder
-, redis
-, withDjango ? false
-, django-redis
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  setuptools,
+  eventlet,
+  fetchPypi,
+  fetchpatch,
+  gevent,
+  pkgs,
+  process-tests,
+  pytestCheckHook,
+  pythonOlder,
+  redis,
+  django-redis,
 }:
 
 buildPythonPackage rec {
   pname = "python-redis-lock";
   version = "4.0.0";
-  format = "setuptools";
+
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -25,38 +28,51 @@ buildPythonPackage rec {
     hash = "sha256-Sr0Lz0kTasrWZye/VIbdJJQHjKVeSe+mk/eUB3MZCRo=";
   };
 
-  propagatedBuildInputs = [
-    redis
-  ] ++ lib.optionals withDjango [
-    django-redis
+  # Fix django tests
+  postPatch = ''
+    substituteInPlace tests/test_project/settings.py \
+      --replace-fail "USE_L10N = True" ""
+  '';
+
+  patches = [
+    # https://github.com/ionelmc/python-redis-lock/pull/119
+    (fetchpatch {
+      url = "https://github.com/ionelmc/python-redis-lock/commit/ae404b7834990b833c1f0f703ec8fbcfecd201c2.patch";
+      hash = "sha256-Fo43+pCtnrEMxMdEEdo0YfJGkBlhhH0GjYNgpZeHF3U=";
+    })
+    ./test_signal_expiration_increase_sleep.patch
   ];
 
+  build-system = [ setuptools ];
+
+  dependencies = [ redis ];
+
+  optional-dependencies.django = [ django-redis ];
+
   nativeCheckInputs = [
     eventlet
     gevent
     pytestCheckHook
     process-tests
     pkgs.redis
-  ];
+  ] ++ optional-dependencies.django;
 
-  disabledTests = [
-    # https://github.com/ionelmc/python-redis-lock/issues/86
-    "test_no_overlap2"
-  ] ++ lib.optionals stdenv.isDarwin [
+  # For Django tests
+  preCheck = "export DJANGO_SETTINGS_MODULE=test_project.settings";
+
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
     # fail on Darwin because it defaults to multiprocessing `spawn`
     "test_reset_signalizes"
     "test_reset_all_signalizes"
   ];
 
-  pythonImportsCheck = [
-    "redis_lock"
-  ];
+  pythonImportsCheck = [ "redis_lock" ];
 
   meta = with lib; {
     changelog = "https://github.com/ionelmc/python-redis-lock/blob/v${version}/CHANGELOG.rst";
     description = "Lock context manager implemented via redis SETNX/BLPOP";
     homepage = "https://github.com/ionelmc/python-redis-lock";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ vanschelven ];
+    maintainers = with maintainers; [ erictapen ];
   };
 }
diff --git a/pkgs/development/python-modules/python-redis-lock/test_signal_expiration_increase_sleep.patch b/pkgs/development/python-modules/python-redis-lock/test_signal_expiration_increase_sleep.patch
new file mode 100644
index 0000000000000..47e721d37a317
--- /dev/null
+++ b/pkgs/development/python-modules/python-redis-lock/test_signal_expiration_increase_sleep.patch
@@ -0,0 +1,13 @@
+diff --git a/tests/test_redis_lock.py b/tests/test_redis_lock.py
+index ac9e3ef..331ab41 100644
+--- a/tests/test_redis_lock.py
++++ b/tests/test_redis_lock.py
+@@ -552,7 +552,7 @@ def test_signal_expiration(conn, signal_expire, method):
+         lock.release()
+     elif method == 'reset_all':
+         reset_all(conn)
+-    time.sleep(0.5)
++    time.sleep(0.6)
+     assert conn.exists('lock-signal:signal_expiration')
+     time.sleep((signal_expire - 500) / 1000.0)
+     assert conn.llen('lock-signal:signal_expiration') == 0
diff --git a/pkgs/development/python-modules/python-registry/default.nix b/pkgs/development/python-modules/python-registry/default.nix
index 4f8c4beae6c96..04c6e81d39112 100644
--- a/pkgs/development/python-modules/python-registry/default.nix
+++ b/pkgs/development/python-modules/python-registry/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, enum-compat
-, fetchFromGitHub
-, pytestCheckHook
-, unicodecsv
-, six
+{
+  lib,
+  buildPythonPackage,
+  enum-compat,
+  fetchFromGitHub,
+  pytestCheckHook,
+  unicodecsv,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -29,13 +30,9 @@ buildPythonPackage rec {
     six
   ];
 
-  disabledTestPaths = [
-    "samples"
-  ];
+  disabledTestPaths = [ "samples" ];
 
-  pythonImportsCheck = [
-    "Registry"
-  ];
+  pythonImportsCheck = [ "Registry" ];
 
   meta = with lib; {
     description = "Pure Python parser for Windows Registry hives";
diff --git a/pkgs/development/python-modules/python-roborock/default.nix b/pkgs/development/python-modules/python-roborock/default.nix
index 49ea2cc277d38..289a4e41005e9 100644
--- a/pkgs/development/python-modules/python-roborock/default.nix
+++ b/pkgs/development/python-modules/python-roborock/default.nix
@@ -15,12 +15,11 @@
   pytest-asyncio,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
 }:
 
 buildPythonPackage rec {
   pname = "python-roborock";
-  version = "2.0.0";
+  version = "2.6.0";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -29,7 +28,7 @@ buildPythonPackage rec {
     owner = "humbertogontijo";
     repo = "python-roborock";
     rev = "refs/tags/v${version}";
-    hash = "sha256-vtT6hsyiP1FxWo5PezcjJACknCT9JEhqSQ6C4FpU+Jg=";
+    hash = "sha256-Mszy1p7TOEynCePCEiLhwdWiKXfFnlo3/a3vc9TxGeY=";
   };
 
   postPatch = ''
@@ -41,7 +40,6 @@ buildPythonPackage rec {
 
   build-system = [ poetry-core ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -51,7 +49,7 @@ buildPythonPackage rec {
     dacite
     paho-mqtt
     pycryptodome
-  ] ++ lib.optionals stdenv.isDarwin [ pycryptodomex ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ pycryptodomex ];
 
   nativeCheckInputs = [
     pytest-asyncio
diff --git a/pkgs/development/python-modules/python-rtmidi/default.nix b/pkgs/development/python-modules/python-rtmidi/default.nix
index 9f073fd0a6ae7..818eeb919b291 100644
--- a/pkgs/development/python-modules/python-rtmidi/default.nix
+++ b/pkgs/development/python-modules/python-rtmidi/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, stdenv
-, alabaster
-, alsa-lib
-, buildPythonPackage
-, CoreAudio
-, CoreMIDI
-, CoreServices
-, Foundation
-, cython
-, fetchPypi
-, flake8
-, libjack2
-, meson-python
-, ninja
-, pkg-config
-, pythonOlder
-, tox
-, wheel
+{
+  lib,
+  stdenv,
+  alabaster,
+  alsa-lib,
+  buildPythonPackage,
+  CoreAudio,
+  CoreMIDI,
+  CoreServices,
+  Foundation,
+  cython,
+  fetchPypi,
+  flake8,
+  libjack2,
+  meson-python,
+  ninja,
+  pkg-config,
+  pythonOlder,
+  tox,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -40,16 +41,18 @@ buildPythonPackage rec {
     wheel
   ];
 
-  buildInputs = [
-  ] ++ lib.optionals stdenv.isLinux [
-    libjack2
-    alsa-lib
-  ] ++ lib.optionals stdenv.isDarwin [
-    CoreAudio
-    CoreMIDI
-    CoreServices
-    Foundation
-  ];
+  buildInputs =
+    [ ]
+    ++ lib.optionals stdenv.hostPlatform.isLinux [
+      libjack2
+      alsa-lib
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      CoreAudio
+      CoreMIDI
+      CoreServices
+      Foundation
+    ];
 
   nativeCheckInputs = [
     tox
@@ -57,15 +60,13 @@ buildPythonPackage rec {
     alabaster
   ];
 
-  pythonImportsCheck = [
-    "rtmidi"
-  ];
+  pythonImportsCheck = [ "rtmidi" ];
 
   meta = with lib; {
-    description = "A Python binding for the RtMidi C++ library implemented using Cython";
+    description = "Python binding for the RtMidi C++ library implemented using Cython";
     homepage = "https://github.com/SpotlightKid/python-rtmidi";
     changelog = "https://github.com/SpotlightKid/python-rtmidi/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-sat/default.nix b/pkgs/development/python-modules/python-sat/default.nix
index dfc512f6bc552..bf1c6c45982c7 100644
--- a/pkgs/development/python-modules/python-sat/default.nix
+++ b/pkgs/development/python-modules/python-sat/default.nix
@@ -1,4 +1,11 @@
-{ buildPythonPackage, fetchFromGitHub, lib, six, pypblib, pytestCheckHook }:
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  six,
+  pypblib,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "python-sat";
@@ -12,21 +19,24 @@ buildPythonPackage rec {
     hash = "sha256-zGdgD+SgoMB7/zDQI/trmV70l91TB7OkDxaJ30W3dkI=";
   };
 
-  propagatedBuildInputs = [ six pypblib ];
+  propagatedBuildInputs = [
+    six
+    pypblib
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
   # https://github.com/pysathq/pysat/pull/102
   postPatch = ''
-    # Fix for case-insensitive filesystem
-    cat >>solvers/patches/cadical.patch <<EOF
-diff --git solvers/cadical/VERSION solvers/cdc/VERSION
-deleted file mode 100644
---- solvers/cadical/VERSION
-+++ /dev/null
-@@ -1 +0,0 @@
--1.0.3
-EOF
+        # Fix for case-insensitive filesystem
+        cat >>solvers/patches/cadical.patch <<EOF
+    diff --git solvers/cadical/VERSION solvers/cdc/VERSION
+    deleted file mode 100644
+    --- solvers/cadical/VERSION
+    +++ /dev/null
+    @@ -1 +0,0 @@
+    -1.0.3
+    EOF
   '';
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/python-secp256k1-cardano/default.nix b/pkgs/development/python-modules/python-secp256k1-cardano/default.nix
index d5becf5d86264..ca14b00ea5256 100644
--- a/pkgs/development/python-modules/python-secp256k1-cardano/default.nix
+++ b/pkgs/development/python-modules/python-secp256k1-cardano/default.nix
@@ -1,10 +1,14 @@
-{ lib
-, fetchFromGitHub
-, python3
-, pkg-config
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pkg-config,
+  cffi,
+  secp256k1,
+  pytestCheckHook,
 }:
 
-python3.pkgs.buildPythonPackage {
+buildPythonPackage {
   pname = "python-secp256k1-cardano";
   version = "0.2.3";
 
@@ -19,22 +23,25 @@ python3.pkgs.buildPythonPackage {
 
   nativeBuildInputs = [ pkg-config ];
 
-  propagatedBuildInputs = with python3.pkgs; [ cffi secp256k1 ];
+  propagatedBuildInputs = [
+    cffi
+    secp256k1
+  ];
 
-  nativeCheckInputs = [ python3.pkgs.pytestCheckHook ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Tests expect .so files and are failing
   doCheck = false;
 
   preConfigure = ''
-    cp -r ${python3.pkgs.secp256k1.src} libsecp256k1
-    export INCLUDE_DIR=${python3.pkgs.secp256k1}/include
-    export LIB_DIR=${python3.pkgs.secp256k1}/lib
+    cp -r ${secp256k1.src} libsecp256k1
+    export INCLUDE_DIR=${secp256k1}/include
+    export LIB_DIR=${secp256k1}/lib
   '';
 
   meta = {
     homepage = "https://github.com/OpShin/python-secp256k1";
-    description = "A fork of python-secp256k1, fixing the commit hash of libsecp256k1 to a Cardano compatible version";
+    description = "Fork of python-secp256k1, fixing the commit hash of libsecp256k1 to a Cardano compatible version";
     license = with lib.licenses; [ mit ];
     maintainers = with lib.maintainers; [ t4ccer ];
   };
diff --git a/pkgs/development/python-modules/python-simple-hipchat/default.nix b/pkgs/development/python-modules/python-simple-hipchat/default.nix
index 754d7e79807e6..61b1fa8eab31d 100644
--- a/pkgs/development/python-modules/python-simple-hipchat/default.nix
+++ b/pkgs/development/python-modules/python-simple-hipchat/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "python-simple-hipchat";
diff --git a/pkgs/development/python-modules/python-slugify/default.nix b/pkgs/development/python-modules/python-slugify/default.nix
index 39ce7b39bacab..c640a72873259 100644
--- a/pkgs/development/python-modules/python-slugify/default.nix
+++ b/pkgs/development/python-modules/python-slugify/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, text-unidecode
-, unidecode
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  text-unidecode,
+  unidecode,
 }:
 
 buildPythonPackage rec {
@@ -17,36 +18,24 @@ buildPythonPackage rec {
 
   src = fetchFromGitHub {
     owner = "un33k";
-    repo =  "python-slugify";
+    repo = "python-slugify";
     rev = "refs/tags/v${version}";
     hash = "sha256-zReUMIkItnDot3XyYCoPUNHrrAllbClWFYcxdTy3A30=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    text-unidecode
-  ];
+  propagatedBuildInputs = [ text-unidecode ];
 
   passthru.optional-dependencies = {
-    unidecode = [
-      unidecode
-    ];
+    unidecode = [ unidecode ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "test.py"
-  ];
+  pytestFlagsArray = [ "test.py" ];
 
-  pythonImportsCheck = [
-    "slugify"
-  ];
+  pythonImportsCheck = [ "slugify" ];
 
   meta = with lib; {
     description = "Python Slugify application that handles Unicode";
@@ -54,6 +43,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/un33k/python-slugify";
     changelog = "https://github.com/un33k/python-slugify/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ vrthra ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-smarttub/default.nix b/pkgs/development/python-modules/python-smarttub/default.nix
index afe1451042b65..928dd5f4a2a2c 100644
--- a/pkgs/development/python-modules/python-smarttub/default.nix
+++ b/pkgs/development/python-modules/python-smarttub/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, inflection
-, pyjwt
-, pytest-asyncio
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  inflection,
+  pyjwt,
+  pytest-asyncio,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "python-smarttub";
-  version = "0.0.36";
+  version = "0.0.37";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -22,7 +23,7 @@ buildPythonPackage rec {
     owner = "mdz";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-cng19NW5Eq3arysl0B3dfK2Hy6lQFBFh7g2hxvxeklU=";
+    hash = "sha256-Dy7Nsq3qhVWb9W6ledD+Gq3fMQ/qLsxGmTBB+AQ5IZc=";
   };
 
   propagatedBuildInputs = [
@@ -43,9 +44,7 @@ buildPythonPackage rec {
       --replace "pyjwt~=2.1.0" "pyjwt>=2.1.0"
   '';
 
-  pythonImportsCheck = [
-    "smarttub"
-  ];
+  pythonImportsCheck = [ "smarttub" ];
 
   meta = with lib; {
     description = "Python API for SmartTub enabled hot tubs";
diff --git a/pkgs/development/python-modules/python-snap7/default.nix b/pkgs/development/python-modules/python-snap7/default.nix
index d33bdc77f8b0a..fcbd2f98060c7 100644
--- a/pkgs/development/python-modules/python-snap7/default.nix
+++ b/pkgs/development/python-modules/python-snap7/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, snap7
-, fetchFromGitHub
-, setuptools
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  snap7,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-90WwgqPHsHbuQUY49cSQblN1jfoLydiG0dm1aMF/NCA=";
   };
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  propagatedBuildInputs = [ setuptools ];
 
   prePatch = ''
     substituteInPlace snap7/common.py \
diff --git a/pkgs/development/python-modules/python-snappy/default.nix b/pkgs/development/python-modules/python-snappy/default.nix
index 1dfb5b83a6b57..806f067173df8 100644
--- a/pkgs/development/python-modules/python-snappy/default.nix
+++ b/pkgs/development/python-modules/python-snappy/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cramjam
-, setuptools
-, snappy
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cramjam,
+  setuptools,
+  snappy,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
 
   buildInputs = [ snappy ];
 
-  dependencies = [
-    cramjam
-  ];
+  dependencies = [ cramjam ];
 
   nativeCheckInputs = [ unittestCheckHook ];
 
@@ -34,6 +33,6 @@ buildPythonPackage rec {
     description = "Python library for the snappy compression library from Google";
     homepage = "https://github.com/intake/python-snappy";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-socketio-v4/default.nix b/pkgs/development/python-modules/python-socketio-v4/default.nix
new file mode 100644
index 0000000000000..3f2e17685581e
--- /dev/null
+++ b/pkgs/development/python-modules/python-socketio-v4/default.nix
@@ -0,0 +1,54 @@
+{
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  python-engineio-v3,
+  requests,
+  setuptools,
+  six,
+  websocket-client,
+  websockets,
+}:
+
+buildPythonPackage rec {
+  pname = "python-socketio-v4";
+  version = "4.6.1";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-3VzLPYT4p4Uh2U4DMpxu6kq1NPZXlOqWOljLOe0bM40=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    python-engineio-v3
+    six
+  ];
+
+  optional-dependencies = {
+    client = [
+      requests
+      websocket-client
+    ];
+    asyncio_client = [
+      aiohttp
+      websockets
+    ];
+  };
+
+  pythonImportsCheck = [ "socketio_v4" ];
+
+  # no tests on PyPI
+  doCheck = false;
+
+  meta = {
+    description = "Socket.IO server";
+    homepage = "https://github.com/bdraco/python-socketio-v4";
+    license = lib.licenses.mit;
+    longDescription = "This is a release of 4.6.1 under the “socketio_v4” namespace for old systems.";
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/python-socketio/default.nix b/pkgs/development/python-modules/python-socketio/default.nix
index c45cd33b43e0d..9ecfd72e38dee 100644
--- a/pkgs/development/python-modules/python-socketio/default.nix
+++ b/pkgs/development/python-modules/python-socketio/default.nix
@@ -1,31 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, bidict
-, python-engineio
+  # dependencies
+  bidict,
+  python-engineio,
 
-# optional-dependencies
-, aiohttp
-, requests
-, websocket-client
+  # optional-dependencies
+  aiohttp,
+  requests,
+  websocket-client,
 
-# tests
-, msgpack
-, pytestCheckHook
-, simple-websocket
-, uvicorn
+  # tests
+  msgpack,
+  pytestCheckHook,
+  simple-websocket,
+  uvicorn,
 
 }:
 
 buildPythonPackage rec {
   pname = "python-socketio";
-  version = "5.11.2";
+  version = "5.11.4";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -34,12 +35,10 @@ buildPythonPackage rec {
     owner = "miguelgrinberg";
     repo = "python-socketio";
     rev = "refs/tags/v${version}";
-    hash = "sha256-t5QbuXjipLaf9GV+N5FLq45xJPK2/FUaM/0s8RNPTzo=";
+    hash = "sha256-iWe9IwUR+nq9SAmHzFZYUJpVOOEbc1ZdiMAjaBjQrVs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     bidict
@@ -51,9 +50,7 @@ buildPythonPackage rec {
       requests
       websocket-client
     ];
-    asyncio_client = [
-      aiohttp
-    ];
+    asyncio_client = [ aiohttp ];
   };
 
   nativeCheckInputs = [
@@ -63,9 +60,7 @@ buildPythonPackage rec {
     simple-websocket
   ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "socketio"
-  ];
+  pythonImportsCheck = [ "socketio" ];
 
   meta = with lib; {
     description = "Python Socket.IO server and client";
diff --git a/pkgs/development/python-modules/python-socks/default.nix b/pkgs/development/python-modules/python-socks/default.nix
index 3bf501791b304..0796ea2b3c96d 100644
--- a/pkgs/development/python-modules/python-socks/default.nix
+++ b/pkgs/development/python-modules/python-socks/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, curio
-, fetchFromGitHub
-, anyio
-, flask
-, pytest-asyncio
-, pytest-trio
-, pythonOlder
-, pytestCheckHook
-, trio
-, trustme
-, yarl
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  curio,
+  fetchFromGitHub,
+  anyio,
+  flask,
+  pytest-asyncio,
+  pytest-trio,
+  pythonOlder,
+  pytestCheckHook,
+  trio,
+  trustme,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -48,15 +49,13 @@ buildPythonPackage rec {
     yarl
   ];
 
-  pythonImportsCheck = [
-    "python_socks"
-  ];
+  pythonImportsCheck = [ "python_socks" ];
 
   meta = with lib; {
     changelog = "https://github.com/romis2012/python-socks/releases/tag/v${version}";
     description = "Core proxy client (SOCKS4, SOCKS5, HTTP) functionality for Python";
     homepage = "https://github.com/romis2012/python-socks";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-songpal/default.nix b/pkgs/development/python-modules/python-songpal/default.nix
index 7affafc582bf1..84bb6e27f0120 100644
--- a/pkgs/development/python-modules/python-songpal/default.nix
+++ b/pkgs/development/python-modules/python-songpal/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, aiohttp
-, async-upnp-client
-, attrs
-, click
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  aiohttp,
+  async-upnp-client,
+  attrs,
+  click,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-PYw6xlUtBrxl+YeVO/2Njt5LYWEprzGPVNk1Mlr83HM=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     aiohttp
diff --git a/pkgs/development/python-modules/python-sql/default.nix b/pkgs/development/python-modules/python-sql/default.nix
index 2605080729c72..a7d91fcb759a8 100644
--- a/pkgs/development/python-modules/python-sql/default.nix
+++ b/pkgs/development/python-modules/python-sql/default.nix
@@ -1,29 +1,27 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "python-sql";
-  version = "1.4.3";
+  version = "1.5.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-YmC+/4NaNdOgrsTx2jUbC+nKoaDZSmy6lAp82Nz2Ymk=";
+    pname = "python_sql";
+    inherit version;
+    hash = "sha256-93RnHx0IT6a6Q4mJJM3r5O0NAHHfjWCAQKzU8cjYaqM=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "sql"
-  ];
+  pythonImportsCheck = [ "sql" ];
 
   meta = with lib; {
     description = "Library to write SQL queries in a pythonic way";
diff --git a/pkgs/development/python-modules/python-status/default.nix b/pkgs/development/python-modules/python-status/default.nix
index cf3beab789b67..5a1c14628dadc 100644
--- a/pkgs/development/python-modules/python-status/default.nix
+++ b/pkgs/development/python-modules/python-status/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/python-stdnum/default.nix b/pkgs/development/python-modules/python-stdnum/default.nix
index d8bdc0574dc95..2a2b5d714deea 100644
--- a/pkgs/development/python-modules/python-stdnum/default.nix
+++ b/pkgs/development/python-modules/python-stdnum/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, zeep
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  zeep,
 }:
 
 buildPythonPackage rec {
@@ -24,23 +25,15 @@ buildPythonPackage rec {
       --replace-fail " --cov=stdnum --cov-report=term-missing:skip-covered --cov-report=html" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   passthru.optional-dependencies = {
-    SOAP = [
-      zeep
-    ];
+    SOAP = [ zeep ];
   };
 
-  pythonImportsCheck = [
-    "stdnum"
-  ];
+  pythonImportsCheck = [ "stdnum" ];
 
   meta = with lib; {
     description = "Python module to handle standardized numbers and codes";
diff --git a/pkgs/development/python-modules/python-string-utils/default.nix b/pkgs/development/python-modules/python-string-utils/default.nix
index 17619b1b4db72..537f5f1f9a756 100644
--- a/pkgs/development/python-modules/python-string-utils/default.nix
+++ b/pkgs/development/python-modules/python-string-utils/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -13,13 +14,13 @@ buildPythonPackage rec {
     hash = "sha256-3PkGCwPwdkfApgNAjciwP4B/O1SgXG4Z6xRGAlb6wMs=";
   };
 
-  pythonImportsCheck = ["string_utils"];
+  pythonImportsCheck = [ "string_utils" ];
 
   # tests are not available in pypi tarball
   doCheck = false;
 
   meta = with lib; {
-    description = "A handy Python library to validate, manipulate and generate strings.";
+    description = "Handy Python library to validate, manipulate and generate strings";
     homepage = "https://github.com/daveoncode/python-string-utils";
     license = licenses.mit;
     maintainers = with maintainers; [ teto ];
diff --git a/pkgs/development/python-modules/python-swiftclient/default.nix b/pkgs/development/python-modules/python-swiftclient/default.nix
index 4e7c02371071b..9f4fca6cc4382 100644
--- a/pkgs/development/python-modules/python-swiftclient/default.nix
+++ b/pkgs/development/python-modules/python-swiftclient/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, installShellFiles
-, mock
-, openstacksdk
-, pbr
-, python-keystoneclient
-, pythonOlder
-, stestr
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  installShellFiles,
+  mock,
+  openstacksdk,
+  pbr,
+  python-keystoneclient,
+  pythonOlder,
+  stestr,
 }:
 
 buildPythonPackage rec {
   pname = "python-swiftclient";
-  version = "4.5.0";
+  version = "4.6.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-8qCIflo5KXq8BDJRrj+QiRTOFEei+NLcpWcWGGCBQr0=";
+    hash = "sha256-1NGFQEE4k/wWrYd5HXQPgj92NDXoIS5o61PWDaJjgjM=";
   };
 
   # remove duplicate script that will be created by setuptools from the
@@ -29,9 +30,7 @@ buildPythonPackage rec {
     sed -i '/bin\/swift/d' setup.cfg
   '';
 
-  nativeBuildInputs = [
-    installShellFiles
-  ];
+  nativeBuildInputs = [ installShellFiles ];
 
   propagatedBuildInputs = [
     pbr
@@ -54,9 +53,7 @@ buildPythonPackage rec {
     stestr run
   '';
 
-  pythonImportsCheck = [
-    "swiftclient"
-  ];
+  pythonImportsCheck = [ "swiftclient" ];
 
   meta = with lib; {
     homepage = "https://github.com/openstack/python-swiftclient";
diff --git a/pkgs/development/python-modules/python-tado/default.nix b/pkgs/development/python-modules/python-tado/default.nix
index a273b33a20848..6fb45f4f72828 100644
--- a/pkgs/development/python-modules/python-tado/default.nix
+++ b/pkgs/development/python-modules/python-tado/default.nix
@@ -1,15 +1,17 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "python-tado";
-  version = "0.17.5";
-  format = "setuptools";
+  version = "0.17.6";
+  pyproject = true;
 
   disabled = pythonOlder "3.5";
 
@@ -17,23 +19,23 @@ buildPythonPackage rec {
     owner = "wmalgadey";
     repo = "PyTado";
     rev = "refs/tags/${version}";
-    hash = "sha256-FjdqZc4Zt2sLYJpnD/MAzr8Y9lGHteHB5psQqheS84I=";
+    hash = "sha256-KcYxUKQuO7TLS4YPg2mrBjP+DMnvZeJokGzwmeM/CvE=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  dependencies = [ requests ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "PyTado" ];
 
   meta = with lib; {
     description = "Python binding for Tado web API. Pythonize your central heating!";
-    mainProgram = "pytado";
     homepage = "https://github.com/wmalgadey/PyTado";
     changelog = "https://github.com/wmalgadey/PyTado/releases/tag/${version}";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ jamiemagee ];
+    mainProgram = "pytado";
   };
 }
diff --git a/pkgs/development/python-modules/python-tds/default.nix b/pkgs/development/python-modules/python-tds/default.nix
index 502ff14336666..f4775b8e1798e 100644
--- a/pkgs/development/python-modules/python-tds/default.nix
+++ b/pkgs/development/python-modules/python-tds/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, six
-, pytestCheckHook
-, pyopenssl
-, pyspnego
-, namedlist
-, pydes
-, cryptography
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  six,
+  pytestCheckHook,
+  pyopenssl,
+  pyspnego,
+  namedlist,
+  pydes,
+  cryptography,
 }:
 
 buildPythonPackage rec {
@@ -25,16 +26,12 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "version.get_git_version()" '"${version}"'
+      --replace-fail "version.get_git_version()" '"${version}"'
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    six
-  ];
+  dependencies = [ six ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/python-technove/default.nix b/pkgs/development/python-modules/python-technove/default.nix
index 795ddf5b1236c..66413bc3f2593 100644
--- a/pkgs/development/python-modules/python-technove/default.nix
+++ b/pkgs/development/python-modules/python-technove/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, aiohttp
-, aresponses
-, awesomeversion
-, backoff
-, buildPythonPackage
-, cachetools
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  awesomeversion,
+  backoff,
+  buildPythonPackage,
+  cachetools,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "python-technove";
-  version = "1.2.2";
+  version = "1.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -24,7 +25,7 @@ buildPythonPackage rec {
     owner = "Moustachauve";
     repo = "pytechnove";
     rev = "refs/tags/v${version}";
-    hash = "sha256-kc5jR0IM2OagvmtqhicnBbrwrdk3E/iJhRIgUtKoirI=";
+    hash = "sha256-umtM2fIyEiimt/X2SvgqjaTYGutvJHkSJ3pRfwSbOfQ=";
   };
 
   postPatch = ''
@@ -32,9 +33,7 @@ buildPythonPackage rec {
       --replace-fail "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -50,9 +49,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "technove"
-  ];
+  pythonImportsCheck = [ "technove" ];
 
   meta = with lib; {
     description = "Python library to interact with TechnoVE local device API";
diff --git a/pkgs/development/python-modules/python-telegram-bot/default.nix b/pkgs/development/python-modules/python-telegram-bot/default.nix
index adb2fc81c9775..b664291e2c850 100644
--- a/pkgs/development/python-modules/python-telegram-bot/default.nix
+++ b/pkgs/development/python-modules/python-telegram-bot/default.nix
@@ -1,27 +1,30 @@
-{ lib
-, aiolimiter
-, apscheduler
-, beautifulsoup4
-, buildPythonPackage
-, cachetools
-, cryptography
-, fetchFromGitHub
-, flaky
-, httpx
-, pytest-asyncio
-, pytest-timeout
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, pytz
-, setuptools
-, wheel
-, tornado
+{
+  lib,
+  aiolimiter,
+  apscheduler,
+  beautifulsoup4,
+  buildPythonPackage,
+  cachetools,
+  cffi,
+  cryptography,
+  fetchFromGitHub,
+  flaky,
+  hatchling,
+  httpx,
+  pytest-asyncio,
+  pytest-timeout,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  pytz,
+  setuptools,
+  tornado,
 }:
 
 buildPythonPackage rec {
   pname = "python-telegram-bot";
-  version = "21.1";
+  version = "21.6";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -30,24 +33,30 @@ buildPythonPackage rec {
     owner = "python-telegram-bot";
     repo = "python-telegram-bot";
     rev = "refs/tags/v${version}";
-    hash = "sha256-s5C3f17VP5ooH78/4JQMkzuV1byi7rFPTmVr3lZliFc=";
+    hash = "sha256-FwAlceRqQfTjCCi+Mqrf0LCxSZD4mV/CVN6YPs947c4=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
-    wheel
+    hatchling
   ];
 
-  propagatedBuildInputs = [
-    aiolimiter
-    apscheduler
-    cachetools
-    cryptography
-    httpx
-    pytz
-  ]
-  ++ httpx.optional-dependencies.socks
-  ++ httpx.optional-dependencies.http2;
+  dependencies = [ httpx ];
+
+  optional-dependencies = rec {
+    all = ext ++ http2 ++ passport ++ socks;
+    callback-data = [ cachetools ];
+    ext = callback-data ++ job-queue ++ rate-limiter ++ webhooks;
+    http2 = httpx.optional-dependencies.http2;
+    job-queue = [
+      apscheduler
+      pytz
+    ];
+    passport = [ cryptography ] ++ lib.optionals (pythonAtLeast "3.13") [ cffi ];
+    rate-limiter = [ aiolimiter ];
+    socks = httpx.optional-dependencies.socks;
+    webhooks = [ tornado ];
+  };
 
   nativeCheckInputs = [
     beautifulsoup4
@@ -56,12 +65,9 @@ buildPythonPackage rec {
     pytest-timeout
     pytest-xdist
     pytestCheckHook
-    tornado
-  ];
+  ] ++ optional-dependencies.all;
 
-  pythonImportsCheck = [
-    "telegram"
-  ];
+  pythonImportsCheck = [ "telegram" ];
 
   disabledTests = [
     # Tests require network access
@@ -129,6 +135,9 @@ buildPythonPackage rec {
     homepage = "https://python-telegram-bot.org";
     changelog = "https://github.com/python-telegram-bot/python-telegram-bot/blob/v${version}/CHANGES.rst";
     license = licenses.lgpl3Only;
-    maintainers = with maintainers; [ veprbl pingiun ];
+    maintainers = with maintainers; [
+      veprbl
+      pingiun
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/python-telegram/default.nix b/pkgs/development/python-modules/python-telegram/default.nix
index 003806712d0e0..cfe1dbd671bfb 100644
--- a/pkgs/development/python-modules/python-telegram/default.nix
+++ b/pkgs/development/python-modules/python-telegram/default.nix
@@ -1,25 +1,28 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, tdlib
-, telegram-text
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  setuptools,
+  tdlib,
+  telegram-text,
 }:
 
 buildPythonPackage rec {
   pname = "python-telegram";
-  version = "0.18.0";
-  format = "setuptools";
-  disabled = pythonOlder "3.6";
+  version = "0.19.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "alexander-akhmetov";
     repo = "python-telegram";
-    rev = version;
-    hash = "sha256-2Q0nUZ2TMVWznd05+fqYojkRn4xfFZJrlqb1PMuBsAY=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-JnU59DZXpnaZXIY/apXQ2gBgiwT12rJIeVqzaP0l7Zk=";
   };
 
   postPatch = ''
@@ -27,30 +30,27 @@ buildPythonPackage rec {
     rm -fr telegram/lib
 
     substituteInPlace telegram/tdjson.py \
-      --replace "ctypes.util.find_library(\"tdjson\")" \
+      --replace-fail "ctypes.util.find_library(\"tdjson\")" \
                 "\"${tdlib}/lib/libtdjson${stdenv.hostPlatform.extensions.sharedLibrary}\""
   '';
 
-  propagatedBuildInputs = [
-    setuptools
+  build-inputs = [ setuptools ];
+
+  dependencies = [
+    setuptools-scm
     telegram-text
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = [
-    "TestGetTdjsonTdlibPath"
-  ];
+  disabledTests = [ "TestGetTdjsonTdlibPath" ];
 
-  pythonImportsCheck = [
-    "telegram.client"
-  ];
+  pythonImportsCheck = [ "telegram.client" ];
 
   meta = with lib; {
     description = "Python client for the Telegram's tdlib";
     homepage = "https://github.com/alexander-akhmetov/python-telegram";
+    changelog = "https://github.com/alexander-akhmetov/python-telegram/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ sikmir ];
   };
diff --git a/pkgs/development/python-modules/python-toolbox/default.nix b/pkgs/development/python-modules/python-toolbox/default.nix
index bd975092ae9a0..3a91ae373788e 100644
--- a/pkgs/development/python-modules/python-toolbox/default.nix
+++ b/pkgs/development/python-modules/python-toolbox/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, docutils
-, fetchFromGitHub
-, isPy27
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  docutils,
+  fetchFromGitHub,
+  isPy27,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/python-troveclient/default.nix b/pkgs/development/python-modules/python-troveclient/default.nix
new file mode 100644
index 0000000000000..891a907e55bfb
--- /dev/null
+++ b/pkgs/development/python-modules/python-troveclient/default.nix
@@ -0,0 +1,87 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httplib2,
+  keystoneauth1,
+  openstackdocstheme,
+  osc-lib,
+  oslo-i18n,
+  oslo-utils,
+  pbr,
+  prettytable,
+  python-mistralclient,
+  python-openstackclient,
+  python-swiftclient,
+  pythonOlder,
+  requests-mock,
+  requests,
+  setuptools,
+  sphinxcontrib-apidoc,
+  sphinxHook,
+  stestr,
+}:
+
+buildPythonPackage rec {
+  pname = "python-troveclient";
+  version = "8.5.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "openstack";
+    repo = "python-troveclient";
+    rev = "refs/tags/${version}";
+    hash = "sha256-lfnAmQ/IxEdc+XxC0dYxK2FgY7csNewGPuQuq0dNffM=";
+  };
+
+  env.PBR_VERSION = version;
+
+  nativeBuildInputs = [
+    openstackdocstheme
+    sphinxHook
+    sphinxcontrib-apidoc
+  ];
+
+  sphinxBuilders = [ "man" ];
+
+  build-system = [
+    pbr
+    setuptools
+  ];
+
+  dependencies = [
+    keystoneauth1
+    osc-lib
+    oslo-i18n
+    oslo-utils
+    prettytable
+    python-mistralclient
+    python-openstackclient
+    python-swiftclient
+    requests
+  ];
+
+  nativeCheckInputs = [
+    httplib2
+    requests-mock
+    stestr
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+    stestr run
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [ "troveclient" ];
+
+  meta = {
+    homepage = "https://github.com/openstack/python-troveclient";
+    description = "Client library for OpenStack Trove API";
+    license = lib.licenses.asl20;
+    mainProgram = "trove";
+    maintainers = lib.teams.openstack.members;
+  };
+}
diff --git a/pkgs/development/python-modules/python-trovo/default.nix b/pkgs/development/python-modules/python-trovo/default.nix
index d76d5d4a2b97d..dace99e3b34e9 100644
--- a/pkgs/development/python-modules/python-trovo/default.nix
+++ b/pkgs/development/python-modules/python-trovo/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, poetry-core
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  poetry-core,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-3EVSF4+nLvvM2RocNM2xz9Us5VrRRTCu/MWCcqwwikw=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [ requests ];
 
@@ -31,9 +30,9 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "trovoApi" ];
 
   meta = with lib; {
-    description = "A Python wrapper for the Trovo API";
+    description = "Python wrapper for the Trovo API";
     homepage = "https://codeberg.org/wolfangaukang/python-trovo";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ wolfangaukang ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-twitch-client/default.nix b/pkgs/development/python-modules/python-twitch-client/default.nix
index 29a10ced06f28..2128314b0d88d 100644
--- a/pkgs/development/python-modules/python-twitch-client/default.nix
+++ b/pkgs/development/python-modules/python-twitch-client/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, responses
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  responses,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +23,16 @@ buildPythonPackage rec {
     sha256 = "sha256-gxBpltwExb9bg3HLkz/MNlP5Q3/x97RHxhbwNqqanIM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     pytestCheckHook
     responses
   ];
 
-  pythonImportsCheck = [
-    "twitch"
-  ];
+  pythonImportsCheck = [ "twitch" ];
 
   disabledTests = [
     # Tests require network access
diff --git a/pkgs/development/python-modules/python-twitter/default.nix b/pkgs/development/python-modules/python-twitter/default.nix
index 92661187059f4..1811ba176a1ee 100644
--- a/pkgs/development/python-modules/python-twitter/default.nix
+++ b/pkgs/development/python-modules/python-twitter/default.nix
@@ -1,21 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, filetype
-, future
-, hypothesis
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-oauthlib
-, responses
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  filetype,
+  future,
+  hypothesis,
+  lib,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-oauthlib,
+  responses,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "python-twitter";
   version = "3.5";
-  format = "setuptools";
+
+  pyproject = true;
+  build-system = [ setuptools ];
 
   disabled = pythonOlder "3.7";
 
@@ -34,7 +38,7 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     filetype
     future
     requests
@@ -49,13 +53,16 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "'pytest-runner'" ""
+      --replace-fail "'pytest-runner'" ""
   '';
 
-  pythonImportsCheck = [
-    "twitter"
+  disabledTests = [
+    # AttributeError: 'FileCacheTest' object has no attribute 'assert_'
+    "test_filecache"
   ];
 
+  pythonImportsCheck = [ "twitter" ];
+
   meta = with lib; {
     description = "Python wrapper around the Twitter API";
     homepage = "https://github.com/bear/python-twitter";
diff --git a/pkgs/development/python-modules/python-u2flib-host/default.nix b/pkgs/development/python-modules/python-u2flib-host/default.nix
index e2f16cef34d9c..3edc24d30bbec 100644
--- a/pkgs/development/python-modules/python-u2flib-host/default.nix
+++ b/pkgs/development/python-modules/python-u2flib-host/default.nix
@@ -1,4 +1,10 @@
-{ lib, fetchPypi, buildPythonPackage, requests, hidapi }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  requests,
+  hidapi,
+}:
 
 buildPythonPackage rec {
   pname = "python-u2flib-host";
@@ -10,7 +16,10 @@ buildPythonPackage rec {
     sha256 = "02pwafd5kyjpc310ys0pgnd0adff1laz18naxxwsfrllqafqnrxb";
   };
 
-  propagatedBuildInputs = [ requests hidapi ];
+  propagatedBuildInputs = [
+    requests
+    hidapi
+  ];
 
   # Tests fail: "ValueError: underlying buffer has been detached"
   doCheck = false;
diff --git a/pkgs/development/python-modules/python-u2flib-server/default.nix b/pkgs/development/python-modules/python-u2flib-server/default.nix
index 08a62d41363aa..e1b44777dfeea 100644
--- a/pkgs/development/python-modules/python-u2flib-server/default.nix
+++ b/pkgs/development/python-modules/python-u2flib-server/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# propagates
-, cryptography
-, six
+  # propagates
+  cryptography,
+  six,
 
-# optional
-, webob
+  # optional
+  webob,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-ginP9u+aHcdaWpwcFYJWu0Ghf7+nDZq9i3TVAacIPhg=";
   };
 
-  patches = [
-    ./cryptography-37-compat.patch
-  ];
+  patches = [ ./cryptography-37-compat.patch ];
 
   propagatedBuildInputs = [
     cryptography
@@ -36,9 +34,7 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    u2f_server = [
-      webob
-    ];
+    u2f_server = [ webob ];
   };
 
   pythonImportsCheck = [
@@ -46,9 +42,7 @@ buildPythonPackage rec {
     "u2flib_server.u2f"
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.u2f_server;
+  nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.u2f_server;
 
   meta = with lib; {
     description = "Python based U2F server library";
diff --git a/pkgs/development/python-modules/python-uinput/default.nix b/pkgs/development/python-modules/python-uinput/default.nix
index f491ab1fe6bb4..01f1f2483282e 100644
--- a/pkgs/development/python-modules/python-uinput/default.nix
+++ b/pkgs/development/python-modules/python-uinput/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, udev
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  udev,
 }:
 
 buildPythonPackage rec {
@@ -11,7 +12,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-hTaXNEtk31U31K4yum+88FFdUakBCRD11QGZWQOLbro=";
+    hash = "sha256-hTaXNEtk31U31K4yum+88FFdUakBCRD11QGZWQOLbro=";
   };
 
   buildInputs = [ udev ];
diff --git a/pkgs/development/python-modules/python-ulid/default.nix b/pkgs/development/python-modules/python-ulid/default.nix
index af437c8f23fed..9dc439fde7062 100644
--- a/pkgs/development/python-modules/python-ulid/default.nix
+++ b/pkgs/development/python-modules/python-ulid/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, hatch-fancy-pypi-readme
-, hatch-vcs
-, hatchling
-, freezegun
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  hatch-fancy-pypi-readme,
+  hatch-vcs,
+  hatchling,
+  pydantic,
+  freezegun,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "python-ulid";
-  version = "2.2.0";
+  version = "2.7.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -20,19 +22,23 @@ buildPythonPackage rec {
     owner = "mdomke";
     repo = "python-ulid";
     rev = "refs/tags/${version}";
-    hash = "sha256-d5jCPxWUOfw/OCtbA9Db9+s1D5DAdL+vbPR8zavgbbo=";
+    hash = "sha256-Z9rYqekhrYa8ab17AVmKyObvq4HTOij7+LMlvRSqUQM=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-fancy-pypi-readme
     hatch-vcs
     hatchling
   ];
 
+  optional-dependencies = {
+    pydantic = [ pydantic ];
+  };
+
   nativeCheckInputs = [
     freezegun
     pytestCheckHook
-  ];
+  ] ++ optional-dependencies.pydantic;
 
   pythonImportsCheck = [ "ulid" ];
 
diff --git a/pkgs/development/python-modules/python-unshare/default.nix b/pkgs/development/python-modules/python-unshare/default.nix
index 86958dfc003e0..1cfe02a07e2e9 100644
--- a/pkgs/development/python-modules/python-unshare/default.nix
+++ b/pkgs/development/python-modules/python-unshare/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage {
@@ -19,10 +20,9 @@ buildPythonPackage {
 
   meta = with lib; {
     description = "Python bindings for the Linux unshare() syscall";
-    homepage    = "https://github.com/thetincho/python-unshare";
-    license     = licenses.gpl2;
-    platforms   = platforms.linux;
+    homepage = "https://github.com/thetincho/python-unshare";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
     maintainers = with maintainers; [ abbradar ];
   };
-
 }
diff --git a/pkgs/development/python-modules/python-utils/default.nix b/pkgs/development/python-modules/python-utils/default.nix
index 6e2e3fe795108..6fabd9a81763d 100644
--- a/pkgs/development/python-modules/python-utils/default.nix
+++ b/pkgs/development/python-modules/python-utils/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, loguru
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  loguru,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -29,14 +29,10 @@ buildPythonPackage rec {
       -e '/--mypy/d'
   '';
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ typing-extensions ];
 
   passthru.optional-dependencies = {
-    loguru = [
-      loguru
-    ];
+    loguru = [ loguru ];
   };
 
   nativeCheckInputs = [
@@ -44,16 +40,12 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ passthru.optional-dependencies.loguru;
 
-  pythonImportsCheck = [
-    "python_utils"
-  ];
+  pythonImportsCheck = [ "python_utils" ];
 
-  pytestFlagsArray = [
-    "_python_utils_tests"
-  ];
+  pytestFlagsArray = [ "_python_utils_tests" ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [
-    # Flaky tests on darwin
+  disabledTests = [
+    # Flaky tests
     "test_timeout_generator"
   ];
 
@@ -62,6 +54,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/WoLpH/python-utils";
     changelog = "https://github.com/wolph/python-utils/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-vagrant/default.nix b/pkgs/development/python-modules/python-vagrant/default.nix
index dcf29a4662d9a..3527defa41da0 100644
--- a/pkgs/development/python-modules/python-vagrant/default.nix
+++ b/pkgs/development/python-modules/python-vagrant/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
   # The tests try to connect to qemu
   doCheck = false;
 
-  pythonImportsCheck = [
-    "vagrant"
-  ];
+  pythonImportsCheck = [ "vagrant" ];
 
   meta = {
     description = "Python module that provides a thin wrapper around the vagrant command line executable";
diff --git a/pkgs/development/python-modules/python-velbus/default.nix b/pkgs/development/python-modules/python-velbus/default.nix
index 75d4e24f869b4..d93267cbcfb4e 100644
--- a/pkgs/development/python-modules/python-velbus/default.nix
+++ b/pkgs/development/python-modules/python-velbus/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyserial
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyserial,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-3eDfXPMO167QI/umLBjlHTBV67XQ8QYkg4EzfrRTw6M=";
   };
 
-  propagatedBuildInputs = [
-    pyserial
-  ];
+  propagatedBuildInputs = [ pyserial ];
 
   # Project has not tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "velbus"
-  ];
+  pythonImportsCheck = [ "velbus" ];
 
   meta = with lib; {
     description = "Python library to control the Velbus home automation system";
diff --git a/pkgs/development/python-modules/python-vipaccess/default.nix b/pkgs/development/python-modules/python-vipaccess/default.nix
index 7455408f0bc6d..b0d9e090e0ddd 100644
--- a/pkgs/development/python-modules/python-vipaccess/default.nix
+++ b/pkgs/development/python-modules/python-vipaccess/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, oath
-, pycryptodome
-, requests
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  oath,
+  pycryptodome,
+  requests,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -33,7 +34,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A free software implementation of Symantec's VIP Access application and protocol";
+    description = "Free software implementation of Symantec's VIP Access application and protocol";
     mainProgram = "vipaccess";
     homepage = "https://github.com/dlenski/python-vipaccess";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/python-vlc/default.nix b/pkgs/development/python-modules/python-vlc/default.nix
index cdc557bbe879d..3a58531de57c1 100644
--- a/pkgs/development/python-modules/python-vlc/default.nix
+++ b/pkgs/development/python-modules/python-vlc/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, libvlc
-, substituteAll
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  libvlc,
+  substituteAll,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,20 +24,16 @@ buildPythonPackage rec {
     # Patch path for VLC
     (substituteAll {
       src = ./vlc-paths.patch;
-      libvlcPath="${libvlc}/lib/libvlc.so.5";
+      libvlcPath = "${libvlc}/lib/libvlc.so.5";
     })
   ];
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  propagatedBuildInputs = [ setuptools ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "vlc"
-  ];
+  pythonImportsCheck = [ "vlc" ];
 
   meta = with lib; {
     description = "Python bindings for VLC, the cross-platform multimedia player and framework";
diff --git a/pkgs/development/python-modules/python-watcherclient/default.nix b/pkgs/development/python-modules/python-watcherclient/default.nix
new file mode 100644
index 0000000000000..b3cc4267f30c4
--- /dev/null
+++ b/pkgs/development/python-modules/python-watcherclient/default.nix
@@ -0,0 +1,75 @@
+{
+  lib,
+  buildPythonPackage,
+  cliff,
+  fetchFromGitHub,
+  keystoneauth1,
+  openstackdocstheme,
+  osc-lib,
+  oslo-i18n,
+  oslo-serialization,
+  oslo-utils,
+  pbr,
+  pythonOlder,
+  setuptools,
+  sphinxcontrib-apidoc,
+  sphinxHook,
+  stestr,
+}:
+
+buildPythonPackage rec {
+  pname = "python-watcherclient";
+  version = "4.4.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "openstack";
+    repo = "python-watcherclient";
+    rev = "refs/tags/${version}";
+    hash = "sha256-lDdiZKaeteKZEyfjpBx8KY+0FLFOYAnQXl0pTbqq0Ss=";
+  };
+
+  env.PBR_VERSION = version;
+
+  build-system = [
+    pbr
+    setuptools
+  ];
+
+  nativeBuildInputs = [
+    openstackdocstheme
+    sphinxcontrib-apidoc
+    sphinxHook
+  ];
+
+  sphinxBuilders = [ "man" ];
+
+  dependencies = [
+    cliff
+    keystoneauth1
+    osc-lib
+    oslo-i18n
+    oslo-serialization
+    oslo-utils
+  ];
+
+  nativeCheckInputs = [ stestr ];
+
+  checkPhase = ''
+    runHook preCheck
+    stestr run
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [ "watcherclient" ];
+
+  meta = {
+    homepage = "https://opendev.org/openstack/python-watcherclient";
+    description = "Client library for OpenStack Watcher API";
+    license = lib.licenses.asl20;
+    mainProgram = "watcher";
+    maintainers = lib.teams.openstack.members;
+  };
+}
diff --git a/pkgs/development/python-modules/python-whois/default.nix b/pkgs/development/python-modules/python-whois/default.nix
index be1186c5ee9c5..82c4286626b40 100644
--- a/pkgs/development/python-modules/python-whois/default.nix
+++ b/pkgs/development/python-modules/python-whois/default.nix
@@ -2,7 +2,6 @@
   lib,
   buildPythonPackage,
   fetchPypi,
-  pynose,
   pytestCheckHook,
   python-dateutil,
   pythonOlder,
@@ -28,7 +27,6 @@ buildPythonPackage rec {
   dependencies = [ python-dateutil ];
 
   nativeCheckInputs = [
-    pynose
     pytestCheckHook
     simplejson
   ];
diff --git a/pkgs/development/python-modules/python-wifi/default.nix b/pkgs/development/python-modules/python-wifi/default.nix
index 05936274eef01..2dfd18079c72a 100644
--- a/pkgs/development/python-modules/python-wifi/default.nix
+++ b/pkgs/development/python-modules/python-wifi/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,9 @@ buildPythonPackage rec {
     homepage = "http://pythonwifi.tuxfamily.org/";
     # From the README: "pythonwifi is licensed under LGPLv2+, however, the
     # examples (e.g. iwconfig.py and iwlist.py) are licensed under GPLv2+."
-    license = with licenses; [ lgpl2Plus gpl2Plus ];
+    license = with licenses; [
+      lgpl2Plus
+      gpl2Plus
+    ];
   };
-
 }
diff --git a/pkgs/development/python-modules/python-wink/default.nix b/pkgs/development/python-modules/python-wink/default.nix
index 45f3604624743..464daf8ebd020 100644
--- a/pkgs/development/python-modules/python-wink/default.nix
+++ b/pkgs/development/python-modules/python-wink/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/python-xapp/default.nix b/pkgs/development/python-modules/python-xapp/default.nix
new file mode 100644
index 0000000000000..9abed704189a6
--- /dev/null
+++ b/pkgs/development/python-modules/python-xapp/default.nix
@@ -0,0 +1,63 @@
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  meson,
+  ninja,
+  psutil,
+  pygobject3,
+  gtk3,
+  gobject-introspection,
+  xapp,
+  polkit,
+  gitUpdater,
+}:
+
+buildPythonPackage rec {
+  pname = "python-xapp";
+  version = "2.4.2";
+
+  format = "other";
+
+  src = fetchFromGitHub {
+    owner = "linuxmint";
+    repo = "python-xapp";
+    rev = version;
+    hash = "sha256-Gbm4YT9ZyrROOAbKz5xYd9J9YG9cUL2Oo6dDCPciaBs=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+  ];
+
+  propagatedBuildInputs = [
+    psutil
+    pygobject3
+    gtk3
+    gobject-introspection
+    xapp
+    polkit
+  ];
+
+  postPatch = ''
+    substituteInPlace "xapp/os.py" \
+      --replace-fail "/usr/bin/pkexec" "${polkit}/bin/pkexec"
+  '';
+
+  doCheck = false;
+  pythonImportsCheck = [ "xapp" ];
+
+  passthru = {
+    updateScript = gitUpdater { ignoredVersions = "^master.*"; };
+    skipBulkUpdate = true; # This should be bumped as part of Cinnamon update.
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/linuxmint/python-xapp";
+    description = "Cross-desktop libraries and common resources for python";
+    license = licenses.lgpl2Plus;
+    platforms = platforms.linux;
+    maintainers = teams.cinnamon.members;
+  };
+}
diff --git a/pkgs/development/python-modules/python-xmp-toolkit/default.nix b/pkgs/development/python-modules/python-xmp-toolkit/default.nix
index 73957c33da267..f5594e983ace5 100644
--- a/pkgs/development/python-modules/python-xmp-toolkit/default.nix
+++ b/pkgs/development/python-modules/python-xmp-toolkit/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, exempi
-, fetchFromGitHub
-, mock
-, pytz
-, lib, stdenv
+{
+  buildPythonPackage,
+  exempi,
+  fetchFromGitHub,
+  pytz,
+  lib,
+  stdenv,
 }:
 
 buildPythonPackage {
@@ -34,7 +35,7 @@ buildPythonPackage {
   '';
 
   # hangs on darwin + sandbox
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   preCheck = ''
     rm test/{test_exempi,test_files}.py
@@ -44,6 +45,6 @@ buildPythonPackage {
     homepage = "https://github.com/python-xmp-toolkit/python-xmp-toolkit";
     description = "Python XMP Toolkit for working with metadata";
     license = licenses.bsd3;
-    maintainers = [ maintainers.kiwi ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-xz/default.nix b/pkgs/development/python-modules/python-xz/default.nix
index a66ddd6ea8573..526c542451040 100644
--- a/pkgs/development/python-modules/python-xz/default.nix
+++ b/pkgs/development/python-modules/python-xz/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "python-xz";
   version = "0.5.0";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-oYjwQ26BFFXxvaYdzp2+bw/BQwM0v/n1r9DmaLs1R3Q=";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
+  build-system = [ setuptools-scm ];
 
-  # has no tests
+  # Module has no tests
   doCheck = false;
 
   pythonImportsCheck = [ "xz" ];
@@ -27,6 +28,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Pure Python library for seeking within compressed xz files";
     homepage = "https://github.com/Rogdham/python-xz";
+    changelog = "https://github.com/Rogdham/python-xz/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with lib.maintainers; [ mxmlnkn ];
     platforms = platforms.all;
diff --git a/pkgs/development/python-modules/python-yate/default.nix b/pkgs/development/python-modules/python-yate/default.nix
index a6cc7ac6575f5..6207b13381e80 100644
--- a/pkgs/development/python-modules/python-yate/default.nix
+++ b/pkgs/development/python-modules/python-yate/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,9 @@ buildPythonPackage rec {
     async-timeout
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "yate"
-  ];
+  pythonImportsCheck = [ "yate" ];
 
   meta = with lib; {
     description = "Python library for the yate telephony engine";
diff --git a/pkgs/development/python-modules/python-youtube/default.nix b/pkgs/development/python-modules/python-youtube/default.nix
index 62987a03bc431..3b48fde0c3e94 100644
--- a/pkgs/development/python-modules/python-youtube/default.nix
+++ b/pkgs/development/python-modules/python-youtube/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, dataclasses-json
-, isodate
-, requests
-, requests-oauthlib
-, pytestCheckHook
-, responses
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  dataclasses-json,
+  isodate,
+  requests,
+  requests-oauthlib,
+  pytestCheckHook,
+  responses,
 }:
 buildPythonPackage rec {
   pname = "python-youtube";
@@ -27,9 +28,7 @@ buildPythonPackage rec {
       --replace "--cov-report xml" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     dataclasses-json
@@ -46,11 +45,10 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A simple Python wrapper around for YouTube Data API";
+    description = "Simple Python wrapper around for YouTube Data API";
     homepage = "https://github.com/sns-sdks/python-youtube";
     changelog = "https://github.com/sns-sdks/python-youtube/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ blaggacao ];
   };
 }
-
diff --git a/pkgs/development/python-modules/python-zaqarclient/default.nix b/pkgs/development/python-modules/python-zaqarclient/default.nix
new file mode 100644
index 0000000000000..ee8c99b6b642a
--- /dev/null
+++ b/pkgs/development/python-modules/python-zaqarclient/default.nix
@@ -0,0 +1,82 @@
+{
+  lib,
+  buildPythonPackage,
+  ddt,
+  fetchFromGitHub,
+  jsonschema,
+  keystoneauth1,
+  openstackdocstheme,
+  osc-lib,
+  oslo-i18n,
+  oslo-log,
+  oslo-utils,
+  pbr,
+  pythonOlder,
+  requests-mock,
+  requests,
+  setuptools,
+  sphinxHook,
+  stestr,
+  stevedore,
+}:
+
+buildPythonPackage rec {
+  pname = "python-zaqarclient";
+  version = "2.7.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "openstack";
+    repo = "python-zaqarclient";
+    rev = "refs/tags/${version}";
+    hash = "sha256-WphTlqhrwxg5g88NH1W4b3uLAxLImnS34hDrlJjWeEU=";
+  };
+
+  env.PBR_VERSION = version;
+
+  build-system = [
+    pbr
+    setuptools
+  ];
+
+  nativeBuildInputs = [
+    openstackdocstheme
+    sphinxHook
+  ];
+
+  sphinxBuilders = [ "man" ];
+
+  dependencies = [
+    jsonschema
+    keystoneauth1
+    osc-lib
+    oslo-i18n
+    oslo-log
+    oslo-utils
+    requests
+    stevedore
+  ];
+
+  nativeCheckInputs = [
+    ddt
+    requests-mock
+    stestr
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+    stestr run
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [ "zaqarclient" ];
+
+  meta = {
+    homepage = "https://opendev.org/openstack/python-zaqarclient";
+    description = "Client library for OpenStack Zaqar API";
+    license = lib.licenses.asl20;
+    maintainers = lib.teams.openstack.members;
+  };
+}
diff --git a/pkgs/development/python-modules/python-zbar/default.nix b/pkgs/development/python-modules/python-zbar/default.nix
index 539823f064ac9..64dba8c8d3502 100644
--- a/pkgs/development/python-modules/python-zbar/default.nix
+++ b/pkgs/development/python-modules/python-zbar/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
-, setuptools
-, pillow
-, zbar
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pillow,
+  zbar,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -13,9 +13,6 @@ buildPythonPackage rec {
   version = "0.23.93";
   pyproject = true;
 
-  # distutils usage in setup.py
-  disabled = pythonAtLeast "3.12";
-
   src = fetchFromGitHub {
     owner = "mchehab";
     repo = "zbar";
@@ -53,6 +50,6 @@ buildPythonPackage rec {
     description = "Python bindings for zbar";
     homepage = "https://github.com/mchehab/zbar";
     license = licenses.lgpl21Only;
-    maintainers = with maintainers; [ wolfangaukang ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-zunclient/default.nix b/pkgs/development/python-modules/python-zunclient/default.nix
new file mode 100644
index 0000000000000..f538cdbac638c
--- /dev/null
+++ b/pkgs/development/python-modules/python-zunclient/default.nix
@@ -0,0 +1,92 @@
+{
+  lib,
+  buildPythonPackage,
+  docker,
+  fetchFromGitHub,
+  keystoneauth1,
+  openstackdocstheme,
+  osc-lib,
+  oslo-i18n,
+  oslo-log,
+  oslo-utils,
+  pbr,
+  prettytable,
+  pythonOlder,
+  setuptools,
+  sphinxHook,
+  stestr,
+  websocket-client,
+}:
+
+buildPythonPackage rec {
+  pname = "python-zunclient";
+  version = "5.0.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "openstack";
+    repo = "python-zunclient";
+    rev = "refs/tags/${version}";
+    hash = "sha256-EVfrxSc/eHYZR0FGFnNAxFCiXangt8uRkAC2zpwWqcA=";
+  };
+
+  env.PBR_VERSION = version;
+
+  build-system = [
+    pbr
+    setuptools
+  ];
+
+  nativeBuildInputs = [
+    openstackdocstheme
+    sphinxHook
+  ];
+
+  sphinxBuilders = [ "man" ];
+
+  # python-openstackclient is unused upstream
+  # and will cause infinite recursion in openstackclient-full package.
+  pythonRemoveDeps = [ "python-openstackclient" ];
+
+  dependencies = [
+    docker
+    keystoneauth1
+    osc-lib
+    oslo-i18n
+    oslo-log
+    oslo-utils
+    prettytable
+    websocket-client
+  ];
+
+  nativeCheckInputs = [ stestr ];
+
+  checkPhase = ''
+    runHook preCheck
+    stestr run -e <(echo "
+      zunclient.tests.unit.test_shell.ShellTest.test_main_endpoint_internal
+      zunclient.tests.unit.test_shell.ShellTest.test_main_endpoint_public
+      zunclient.tests.unit.test_shell.ShellTest.test_main_env_region
+      zunclient.tests.unit.test_shell.ShellTest.test_main_no_region
+      zunclient.tests.unit.test_shell.ShellTest.test_main_option_region
+      zunclient.tests.unit.test_shell.ShellTestKeystoneV3.test_main_endpoint_internal
+      zunclient.tests.unit.test_shell.ShellTestKeystoneV3.test_main_endpoint_public
+      zunclient.tests.unit.test_shell.ShellTestKeystoneV3.test_main_env_region
+      zunclient.tests.unit.test_shell.ShellTestKeystoneV3.test_main_no_region
+      zunclient.tests.unit.test_shell.ShellTestKeystoneV3.test_main_option_region
+    ")
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [ "zunclient" ];
+
+  meta = {
+    homepage = "https://opendev.org/openstack/python-zunclient";
+    description = "Client library for OpenStack Zun API";
+    license = lib.licenses.asl20;
+    mainProgram = "zun";
+    maintainers = lib.teams.openstack.members;
+  };
+}
diff --git a/pkgs/development/python-modules/python3-application/default.nix b/pkgs/development/python-modules/python3-application/default.nix
index 8abfd28cb15ef..b61ff595564f3 100644
--- a/pkgs/development/python-modules/python3-application/default.nix
+++ b/pkgs/development/python-modules/python3-application/default.nix
@@ -1,4 +1,11 @@
-{ stdenv, lib, isPy3k, buildPythonPackage, fetchFromGitHub, zope-interface, twisted }:
+{
+  lib,
+  isPy3k,
+  buildPythonPackage,
+  fetchFromGitHub,
+  zope-interface,
+  twisted,
+}:
 
 buildPythonPackage rec {
   pname = "python3-application";
@@ -14,16 +21,21 @@ buildPythonPackage rec {
     hash = "sha256-L7KN6rKkbjNmkSoy8vdMYpXSBkWN7afNpreJO0twjq8=";
   };
 
-  propagatedBuildInputs = [ zope-interface twisted ];
+  propagatedBuildInputs = [
+    zope-interface
+    twisted
+  ];
 
   pythonImportsCheck = [ "application" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
-    description = "A collection of modules that are useful when building python applications";
+    description = "Collection of modules that are useful when building python applications";
     homepage = "https://github.com/AGProjects/python3-application";
     license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [ chanley yureien ];
+    maintainers = with maintainers; [
+      chanley
+      yureien
+    ];
     longDescription = ''
       This package is a collection of modules that are useful when building python applications. Their purpose is to eliminate the need to divert resources into implementing the small tasks that every application needs to do in order to run successfully and focus instead on the application logic itself.
       The modules that the application package provides are:
diff --git a/pkgs/development/python-modules/python3-eventlib/default.nix b/pkgs/development/python-modules/python3-eventlib/default.nix
index a108e7f0b6251..0181dfebb87ec 100644
--- a/pkgs/development/python-modules/python3-eventlib/default.nix
+++ b/pkgs/development/python-modules/python3-eventlib/default.nix
@@ -1,4 +1,12 @@
-{ lib, fetchFromGitHub, buildPythonPackage, isPy3k, zope-interface, twisted, greenlet }:
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  isPy3k,
+  zope-interface,
+  twisted,
+  greenlet,
+}:
 
 buildPythonPackage rec {
   pname = "python3-eventlib";
@@ -14,14 +22,18 @@ buildPythonPackage rec {
     hash = "sha256-LFW3rCGa7A8tk6SjgYgjkLQ+72GE2WN8wG+XkXYTAoQ=";
   };
 
-  propagatedBuildInputs = [ zope-interface twisted greenlet ];
+  propagatedBuildInputs = [
+    zope-interface
+    twisted
+    greenlet
+  ];
 
   dontUseSetuptoolsCheck = true;
 
   pythonImportsCheck = [ "eventlib" ];
 
   meta = with lib; {
-    description = "A networking library written in Python";
+    description = "Networking library written in Python";
     homepage = "https://github.com/AGProjects/python3-eventlib";
     license = licenses.lgpl21Plus;
     maintainers = with maintainers; [ chanley ];
diff --git a/pkgs/development/python-modules/python3-gnutls/default.nix b/pkgs/development/python-modules/python3-gnutls/default.nix
index 72f695326d758..48b3b6d544638 100644
--- a/pkgs/development/python-modules/python3-gnutls/default.nix
+++ b/pkgs/development/python-modules/python3-gnutls/default.nix
@@ -1,28 +1,44 @@
-{ lib, fetchFromGitHub, substituteAll, buildPythonPackage, isPy3k, gnutls
-, twisted, pyopenssl, service-identity }:
+{
+  lib,
+  fetchFromGitHub,
+  substituteAll,
+  buildPythonPackage,
+  isPy3k,
+  gnutls,
+  twisted,
+  pyopenssl,
+  service-identity,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "python3-gnutls";
-  version = "3.1.9";
-  format = "setuptools";
+  version = "3.1.10";
+  pyproject = true;
 
   disabled = !isPy3k;
 
   src = fetchFromGitHub {
     owner = "AGProjects";
     repo = "python3-gnutls";
-    rev = "324b78f7cd3d9fe58c89c7f0b2bf94199bd6a6e5"; # version not tagged
-    hash = "sha256-18T8bAHlNERHobsspUFvSC6ulN55nrFFb5aqNwU8T00=";
+    rev = "refs/tags/release-${version}";
+    hash = "sha256-AdFRF3ZlkkAoSm5rvf/09FSYIo7SsZ38sD2joOLyukA=";
   };
 
-  propagatedBuildInputs = [ twisted pyopenssl service-identity ];
+  nativeBuildInputs = [ setuptools ];
+
+  propagatedBuildInputs = [
+    twisted
+    pyopenssl
+    service-identity
+  ];
 
   patches = [
     (substituteAll {
       src = ./libgnutls-path.patch;
       gnutlslib = "${lib.getLib gnutls}/lib";
     })
-   ];
+  ];
 
   pythonImportsCheck = [ "gnutls" ];
 
diff --git a/pkgs/development/python-modules/python3-openid/default.nix b/pkgs/development/python-modules/python3-openid/default.nix
index 9c70c1ff94787..e096743e909d7 100644
--- a/pkgs/development/python-modules/python3-openid/default.nix
+++ b/pkgs/development/python-modules/python3-openid/default.nix
@@ -1,4 +1,10 @@
-{ lib, isPy3k, buildPythonPackage, fetchPypi, defusedxml }:
+{
+  lib,
+  isPy3k,
+  buildPythonPackage,
+  fetchPypi,
+  defusedxml,
+}:
 
 buildPythonPackage rec {
   pname = "python3-openid";
diff --git a/pkgs/development/python-modules/python3-saml/default.nix b/pkgs/development/python-modules/python3-saml/default.nix
index adfea3091c718..fa5a004ff99d4 100644
--- a/pkgs/development/python-modules/python3-saml/default.nix
+++ b/pkgs/development/python-modules/python3-saml/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, freezegun
-, isodate
-, lxml
-, pytestCheckHook
-, pythonOlder
-, poetry-core
-, xmlsec
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  freezegun,
+  isodate,
+  lxml,
+  pytestCheckHook,
+  pythonOlder,
+  poetry-core,
+  xmlsec,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     isodate
@@ -49,9 +48,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "onelogin.saml2"
-  ];
+  pythonImportsCheck = [ "onelogin.saml2" ];
 
   disabledTests = [
     # Tests require network acces or additions files
diff --git a/pkgs/development/python-modules/pythondialog/default.nix b/pkgs/development/python-modules/pythondialog/default.nix
index abf7b8e9eb2a2..59d7e96a6b628 100644
--- a/pkgs/development/python-modules/pythondialog/default.nix
+++ b/pkgs/development/python-modules/pythondialog/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,8 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A Python interface to the UNIX dialog utility and mostly-compatible programs";
+    description = "Python interface to the UNIX dialog utility and mostly-compatible programs";
     homepage = "http://pythondialog.sourceforge.net/";
     license = licenses.lgpl3;
   };
-
 }
diff --git a/pkgs/development/python-modules/pythonegardia/default.nix b/pkgs/development/python-modules/pythonegardia/default.nix
index 1affca4ca65f4..4b3d6ce8f0e41 100644
--- a/pkgs/development/python-modules/pythonegardia/default.nix
+++ b/pkgs/development/python-modules/pythonegardia/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     sha256 = "sha256-lQ/7tH74MllwFe2kF5OcYSb4rQd+yJU1W6ztG4Z6Y0U=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Project has no tests, only two test file for manual interaction
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pythonegardia"
-  ];
+  pythonImportsCheck = [ "pythonegardia" ];
 
   meta = with lib; {
     description = "Python interface with Egardia/Woonveilig alarms";
diff --git a/pkgs/development/python-modules/pythonfinder/default.nix b/pkgs/development/python-modules/pythonfinder/default.nix
index 37535e49f998d..1261da097fe0c 100644
--- a/pkgs/development/python-modules/pythonfinder/default.nix
+++ b/pkgs/development/python-modules/pythonfinder/default.nix
@@ -1,15 +1,14 @@
-{ lib
-, buildPythonPackage
-, cached-property
-, click
-, fetchFromGitHub
-, fetchpatch
-, packaging
-, pydantic
-, pytest-timeout
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  cached-property,
+  click,
+  fetchFromGitHub,
+  packaging,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,40 +20,22 @@ buildPythonPackage rec {
 
   src = fetchFromGitHub {
     owner = "sarugaku";
-    repo = pname;
+    repo = "pythonfinder";
     rev = "refs/tags/${version}";
     hash = "sha256-CbaKXD7Sde8euRqvc/IHoXoSMF+dNd7vT9LkLWq4/IU=";
   };
 
-  patches = [
-    # https://github.com/sarugaku/pythonfinder/issues/142
-    (fetchpatch {
-      name = "pydantic_2-compatibility.patch";
-      url = "https://gitlab.archlinux.org/archlinux/packaging/packages/python-pythonfinder/-/raw/2.0.6-1/python-pythonfinder-2.0.6-pydantic2.patch";
-      hash = "sha256-mON1MeA+pj6VTB3zpBjF3LfB30wG0QH9nU4bD1djWwg=";
-    })
-  ];
-
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace " --cov" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    packaging
-    pydantic
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    cached-property
-  ];
+  propagatedBuildInputs = [ packaging ] ++ lib.optionals (pythonOlder "3.8") [ cached-property ];
 
   passthru.optional-dependencies = {
-    cli = [
-      click
-    ];
+    cli = [ click ];
   };
 
   nativeCheckInputs = [
@@ -62,16 +43,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "pythonfinder"
-  ];
-
-  # these tests invoke git in a subprocess and
-  # for some reason git can't be found even if included in nativeCheckInputs
-  # disabledTests = [
-  #   "test_shims_are_kept"
-  #   "test_shims_are_removed"
-  # ];
+  pythonImportsCheck = [ "pythonfinder" ];
 
   meta = with lib; {
     description = "Cross platform search tool for finding Python";
diff --git a/pkgs/development/python-modules/pythonix/default.nix b/pkgs/development/python-modules/pythonix/default.nix
index 9059e3b424ef4..18eb564192191 100644
--- a/pkgs/development/python-modules/pythonix/default.nix
+++ b/pkgs/development/python-modules/pythonix/default.nix
@@ -1,4 +1,15 @@
-{ lib, buildPythonPackage, fetchFromGitHub, ninja, boost, meson, pkg-config, nix, isPy3k, python }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ninja,
+  boost,
+  meson,
+  pkg-config,
+  nix,
+  isPy3k,
+  python,
+}:
 
 buildPythonPackage rec {
   pname = "pythonix";
@@ -14,9 +25,16 @@ buildPythonPackage rec {
 
   disabled = !isPy3k;
 
-  nativeBuildInputs = [ meson ninja pkg-config ];
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+  ];
 
-  buildInputs = [ nix boost ];
+  buildInputs = [
+    nix
+    boost
+  ];
 
   postInstall = ''
     # This is typically set by pipInstallHook/eggInstallHook,
@@ -28,7 +46,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = ''
-       Eval nix code from python.
+      Eval nix code from python.
     '';
     maintainers = [ ];
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pythonnet/default.nix b/pkgs/development/python-modules/pythonnet/default.nix
index 5a2272c668c3e..9119f1a27268c 100644
--- a/pkgs/development/python-modules/pythonnet/default.nix
+++ b/pkgs/development/python-modules/pythonnet/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pytestCheckHook
-, pycparser
-, psutil
-, dotnet-sdk
-, buildDotnetModule
-, clr-loader
-, setuptools
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pytestCheckHook,
+  pycparser,
+  psutil,
+  dotnet-sdk,
+  buildDotnetModule,
+  clr-loader,
+  setuptools,
 }:
 
 let
@@ -36,6 +37,8 @@ buildPythonPackage {
       --replace 'dynamic = ["version"]' 'version = "${version}"'
   '';
 
+  buildInputs = dotnet-build.nugetDeps;
+
   nativeBuildInputs = [
     setuptools
     dotnet-sdk
@@ -61,7 +64,7 @@ buildPythonPackage {
     dotnet restore \
       -p:ContinuousIntegrationBuild=true \
       -p:Deterministic=true \
-      --source ${dotnet-build.nuget-source}
+      --source "$nugetSource"
   '';
 
   # Rerun this when updating to refresh Nuget dependencies
@@ -74,6 +77,9 @@ buildPythonPackage {
     license = licenses.mit;
     # <https://github.com/pythonnet/pythonnet/issues/898>
     badPlatforms = [ "aarch64-linux" ];
-    maintainers = with maintainers; [ jraygauthier mdarocha ];
+    maintainers = with maintainers; [
+      jraygauthier
+      mdarocha
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pythonnet/deps.nix b/pkgs/development/python-modules/pythonnet/deps.nix
index 43d3a4992c7b0..2cbc3430b432a 100644
--- a/pkgs/development/python-modules/pythonnet/deps.nix
+++ b/pkgs/development/python-modules/pythonnet/deps.nix
@@ -1,194 +1,951 @@
 # This file was automatically generated by passthru.fetch-deps.
 # Please dont edit it manually, your changes might get overwritten!
 
-{ fetchNuGet }: [
-  (fetchNuGet { pname = "BenchmarkDotNet"; version = "0.13.1"; sha256 = "1kgypxfp34vjy9kvqq8csznsjbnv37pp4r0457i5l1j6zrsm76rp"; })
-  (fetchNuGet { pname = "BenchmarkDotNet.Annotations"; version = "0.13.1"; sha256 = "0fizarpvdajwcvfhd45c35xrnrci5rbn5ksf3zvlw4q300hnlsir"; })
-  (fetchNuGet { pname = "CommandLineParser"; version = "2.4.3"; sha256 = "1aca3q25n3dg55v4j3kzlzfzd5k2jpy6zhp8x7g74pdfdqzrhg55"; })
-  (fetchNuGet { pname = "Iced"; version = "1.8.0"; sha256 = "12cgd9p3jm81wd7m8bp3pm20gmrmbad2hcwzynhz644h3062nn24"; })
-  (fetchNuGet { pname = "Lost.Compat.NullabilityAttributes"; version = "0.0.4"; sha256 = "1h8m1n4x1p69xh86ia1rf4dcr17w965fpxws7d3458r4w1wl143a"; })
-  (fetchNuGet { pname = "Microsoft.Build.Tasks.Git"; version = "1.1.1"; sha256 = "1bb5p4zlnfn88skkvymxfsn0jybqncl4356hwnic9jxdq2d4fz1w"; })
-  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "2.6.1"; sha256 = "1plk343h9fyxg08b9bcnlqyaq00cbnc1v73pj9nbcyphmgf5bqfp"; })
-  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "2.10.0"; sha256 = "1l690xqrhmkasns5ghz0vqj8n2xyl5yrwan5gs52hwfxdwahqaaj"; })
-  (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "2.10.0"; sha256 = "0saabsr81crawdzs2cnzyjp5cgg2hk5k6q7n0i0pxghswb0m4dxk"; })
-  (fetchNuGet { pname = "Microsoft.CodeCoverage"; version = "16.11.0"; sha256 = "0f41l3kks6wk5vjaxpjh8m2flnrvlbvqgqflamhv8rfz4y8ifgdv"; })
-  (fetchNuGet { pname = "Microsoft.CodeCoverage"; version = "17.0.0"; sha256 = "18gdbsqf6i79ld4ikqr4jhx9ndsggm865b5xj1xmnmgg12ydp19a"; })
-  (fetchNuGet { pname = "Microsoft.CodeCoverage"; version = "17.6.2"; sha256 = "1wwmg6hn4dp2mvwn2bm81wccdw149lq17xdnpz17mvg4zcwmax7g"; })
-  (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.7.0"; sha256 = "0gd67zlw554j098kabg887b5a6pq9kzavpa3jjy5w53ccjzjfy8j"; })
-  (fetchNuGet { pname = "Microsoft.Diagnostics.NETCore.Client"; version = "0.2.61701"; sha256 = "1ic1607jj4ln8dbibf1fz5v9svk9x2kqlgvhndc6ijaqnbc4wcr1"; })
-  (fetchNuGet { pname = "Microsoft.Diagnostics.Runtime"; version = "1.1.126102"; sha256 = "0w7jcxkd4cix6dbh0szawilmykjmdc1rqysllrpwb7ivrxzazypn"; })
-  (fetchNuGet { pname = "Microsoft.Diagnostics.Tracing.TraceEvent"; version = "2.0.61"; sha256 = "0gq51l4yyyn8dir6w41im9fwhw9r6jz6n7jm4zhmvvway5ijbcac"; })
-  (fetchNuGet { pname = "Microsoft.DotNet.InternalAbstractions"; version = "1.0.0"; sha256 = "0mp8ihqlb7fsa789frjzidrfjc1lrhk88qp3xm5qvr7vf4wy4z8x"; })
-  (fetchNuGet { pname = "Microsoft.DotNet.PlatformAbstractions"; version = "2.1.0"; sha256 = "1qydvyyinj3b5mraazjal3n2k7jqhn05b6n1a2f3qjkqkxi63dmy"; })
-  (fetchNuGet { pname = "Microsoft.Net.Compilers.Toolset"; version = "4.0.1"; sha256 = "08njbdnmjzjd6phys94w0di3vcxfq7pniad6s3jc5f65r9s1f0w2"; })
-  (fetchNuGet { pname = "Microsoft.NET.Test.Sdk"; version = "16.11.0"; sha256 = "1a2y6vw6p9xp3w72zq2lwrjl8bxv87s9d7zd2dh4zwbzh1c5slxl"; })
-  (fetchNuGet { pname = "Microsoft.NET.Test.Sdk"; version = "17.0.0"; sha256 = "0bknyf5kig5icwjxls7pcn51x2b2qf91dz9qv67fl70v6cczaz2r"; })
-  (fetchNuGet { pname = "Microsoft.NET.Test.Sdk"; version = "17.6.2"; sha256 = "1a658bnh5q3lfkrr81h3lyx1mc3hggnjr1bpmim71rr2s42ad70v"; })
-  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.0.1"; sha256 = "01al6cfxp68dscl15z7rxfw9zvhm64dncsw09a1vmdkacsa2v6lr"; })
-  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; })
-  (fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.0.1"; sha256 = "0ppdkwy6s9p7x9jix3v4402wb171cdiibq7js7i13nxpdky7074p"; })
-  (fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.1.0"; sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh"; })
-  (fetchNuGet { pname = "Microsoft.NETFramework.ReferenceAssemblies"; version = "1.0.0"; sha256 = "0na724xhvqm63vq9y18fl9jw9q2v99bdwr353378s5fsi11qzxp9"; })
-  (fetchNuGet { pname = "Microsoft.NETFramework.ReferenceAssemblies.net461"; version = "1.0.0"; sha256 = "00vkn4c6i0rn1l9pv912y0wgb9h6ks76qah8hvk441nari8fqbm1"; })
-  (fetchNuGet { pname = "Microsoft.NETFramework.ReferenceAssemblies.net472"; version = "1.0.0"; sha256 = "1bqinq2nxnpqxziypg1sqy3ly0nymxxjpn8fwkn3rl4vl6gdg3rc"; })
-  (fetchNuGet { pname = "Microsoft.SourceLink.Common"; version = "1.1.1"; sha256 = "0xkdqs7az2cprar7jzjlgjpd64l6f8ixcmwmpkdm03fyb4s5m0bg"; })
-  (fetchNuGet { pname = "Microsoft.SourceLink.GitHub"; version = "1.1.1"; sha256 = "099y35f2npvva3jk1zp8hn0vb9pwm2l0ivjasdly6y2idv53s5yy"; })
-  (fetchNuGet { pname = "Microsoft.TestPlatform.ObjectModel"; version = "16.11.0"; sha256 = "1fc0ghk1cny4i8w43b94pxhl0srxisv6kaflkkp30ncsa9szhkxh"; })
-  (fetchNuGet { pname = "Microsoft.TestPlatform.ObjectModel"; version = "17.6.2"; sha256 = "0asbrbdyyig1p034smf79lszzbfv1cn6q181i7d4p2vsiqpjp9sj"; })
-  (fetchNuGet { pname = "Microsoft.TestPlatform.TestHost"; version = "16.11.0"; sha256 = "0hp1vndf2jhyg1f3miq4g2068z5kpfzy6nmswm25vymghxp1ws4k"; })
-  (fetchNuGet { pname = "Microsoft.TestPlatform.TestHost"; version = "17.6.2"; sha256 = "0lcj8kkcnxbwiaw6j0xf4fxqpa6z0s41nq52spvckfg4367lg4fg"; })
-  (fetchNuGet { pname = "Microsoft.Win32.Primitives"; version = "4.3.0"; sha256 = "0j0c1wj4ndj21zsgivsc24whiya605603kxrbiw6wkfdync464wq"; })
-  (fetchNuGet { pname = "Microsoft.Win32.Registry"; version = "4.3.0"; sha256 = "1gxyzxam8163vk1kb6xzxjj4iwspjsz9zhgn1w9rjzciphaz0ig7"; })
-  (fetchNuGet { pname = "Microsoft.Win32.Registry"; version = "4.5.0"; sha256 = "1zapbz161ji8h82xiajgriq6zgzmb1f3ar517p2h63plhsq5gh2q"; })
-  (fetchNuGet { pname = "NETStandard.Library"; version = "2.0.0"; sha256 = "1bc4ba8ahgk15m8k4nd7x406nhi0kwqzbgjk2dmw52ss553xz7iy"; })
-  (fetchNuGet { pname = "NETStandard.Library"; version = "2.0.3"; sha256 = "1fn9fxppfcg4jgypp2pmrpr6awl3qz1xmnri0cygpkwvyx27df1y"; })
-  (fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.1"; sha256 = "0fijg0w6iwap8gvzyjnndds0q4b8anwxxvik7y8vgq97dram4srb"; })
-  (fetchNuGet { pname = "Newtonsoft.Json"; version = "9.0.1"; sha256 = "0mcy0i7pnfpqm4pcaiyzzji4g0c8i3a5gjz28rrr28110np8304r"; })
-  (fetchNuGet { pname = "NonCopyableAnalyzer"; version = "0.7.0"; sha256 = "1jry36p53fkk3fn9pawgg7qiv79j30y0kvd4xrnd58d7zg7zzdj0"; })
-  (fetchNuGet { pname = "NuGet.Frameworks"; version = "5.0.0"; sha256 = "18ijvmj13cwjdrrm52c8fpq021531zaz4mj4b4zapxaqzzxf2qjr"; })
-  (fetchNuGet { pname = "NuGet.Frameworks"; version = "6.5.0"; sha256 = "0s37d1p4md0k6d4cy6sq36f2dgkd9qfbzapxhkvi8awwh0vrynhj"; })
-  (fetchNuGet { pname = "NUnit"; version = "3.12.0"; sha256 = "1880j2xwavi8f28vxan3hyvdnph4nlh5sbmh285s4lc9l0b7bdk2"; })
-  (fetchNuGet { pname = "NUnit"; version = "3.13.3"; sha256 = "0wdzfkygqnr73s6lpxg5b1pwaqz9f414fxpvpdmf72bvh4jaqzv6"; })
-  (fetchNuGet { pname = "NUnit3TestAdapter"; version = "3.16.1"; sha256 = "1pzhmapfdszsfza7zjr3zrlz4fssdxsyiwmlj76a40mbhxhfa4q9"; })
-  (fetchNuGet { pname = "NUnit3TestAdapter"; version = "3.17.0"; sha256 = "0kxc6z3b8ccdrcyqz88jm5yh5ch9nbg303v67q8sp5hhs8rl8nk6"; })
-  (fetchNuGet { pname = "NUnit3TestAdapter"; version = "4.5.0"; sha256 = "1srx1629s0k1kmf02nmz251q07vj6pv58mdafcr5dr0bbn1fh78i"; })
-  (fetchNuGet { pname = "Perfolizer"; version = "0.2.1"; sha256 = "012aqqi3y3nfikqmn26yajpwd52c04zlzp0p91iyslw7mf26qncy"; })
-  (fetchNuGet { pname = "runtime.any.System.Collections"; version = "4.3.0"; sha256 = "0bv5qgm6vr47ynxqbnkc7i797fdi8gbjjxii173syrx14nmrkwg0"; })
-  (fetchNuGet { pname = "runtime.any.System.Diagnostics.Tools"; version = "4.3.0"; sha256 = "1wl76vk12zhdh66vmagni66h5xbhgqq7zkdpgw21jhxhvlbcl8pk"; })
-  (fetchNuGet { pname = "runtime.any.System.Diagnostics.Tracing"; version = "4.3.0"; sha256 = "00j6nv2xgmd3bi347k00m7wr542wjlig53rmj28pmw7ddcn97jbn"; })
-  (fetchNuGet { pname = "runtime.any.System.Globalization"; version = "4.3.0"; sha256 = "1daqf33hssad94lamzg01y49xwndy2q97i2lrb7mgn28656qia1x"; })
-  (fetchNuGet { pname = "runtime.any.System.IO"; version = "4.3.0"; sha256 = "0l8xz8zn46w4d10bcn3l4yyn4vhb3lrj2zw8llvz7jk14k4zps5x"; })
-  (fetchNuGet { pname = "runtime.any.System.Reflection"; version = "4.3.0"; sha256 = "02c9h3y35pylc0zfq3wcsvc5nqci95nrkq0mszifc0sjx7xrzkly"; })
-  (fetchNuGet { pname = "runtime.any.System.Reflection.Extensions"; version = "4.3.0"; sha256 = "0zyri97dfc5vyaz9ba65hjj1zbcrzaffhsdlpxc9bh09wy22fq33"; })
-  (fetchNuGet { pname = "runtime.any.System.Reflection.Primitives"; version = "4.3.0"; sha256 = "0x1mm8c6iy8rlxm8w9vqw7gb7s1ljadrn049fmf70cyh42vdfhrf"; })
-  (fetchNuGet { pname = "runtime.any.System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "03kickal0iiby82wa5flar18kyv82s9s6d4xhk5h4bi5kfcyfjzl"; })
-  (fetchNuGet { pname = "runtime.any.System.Runtime"; version = "4.3.0"; sha256 = "1cqh1sv3h5j7ixyb7axxbdkqx6cxy00p4np4j91kpm492rf4s25b"; })
-  (fetchNuGet { pname = "runtime.any.System.Runtime.Handles"; version = "4.3.0"; sha256 = "0bh5bi25nk9w9xi8z23ws45q5yia6k7dg3i4axhfqlnj145l011x"; })
-  (fetchNuGet { pname = "runtime.any.System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "0c3g3g3jmhlhw4klrc86ka9fjbl7i59ds1fadsb2l8nqf8z3kb19"; })
-  (fetchNuGet { pname = "runtime.any.System.Text.Encoding"; version = "4.3.0"; sha256 = "0aqqi1v4wx51h51mk956y783wzags13wa7mgqyclacmsmpv02ps3"; })
-  (fetchNuGet { pname = "runtime.any.System.Text.Encoding.Extensions"; version = "4.3.0"; sha256 = "0lqhgqi0i8194ryqq6v2gqx0fb86db2gqknbm0aq31wb378j7ip8"; })
-  (fetchNuGet { pname = "runtime.any.System.Threading.Tasks"; version = "4.3.0"; sha256 = "03mnvkhskbzxddz4hm113zsch1jyzh2cs450dk3rgfjp8crlw1va"; })
-  (fetchNuGet { pname = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "16rnxzpk5dpbbl1x354yrlsbvwylrq456xzpsha1n9y3glnhyx9d"; })
-  (fetchNuGet { pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0hkg03sgm2wyq8nqk6dbm9jh5vcq57ry42lkqdmfklrw89lsmr59"; })
-  (fetchNuGet { pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0c2p354hjx58xhhz7wv6div8xpi90sc6ibdm40qin21bvi7ymcaa"; })
-  (fetchNuGet { pname = "runtime.native.System"; version = "4.3.0"; sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4"; })
-  (fetchNuGet { pname = "runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "18pzfdlwsg2nb1jjjjzyb5qlgy6xjxzmhnfaijq5s2jw3cm3ab97"; })
-  (fetchNuGet { pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0qyynf9nz5i7pc26cwhgi8j62ps27sqmf78ijcfgzab50z9g8ay3"; })
-  (fetchNuGet { pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1klrs545awhayryma6l7g2pvnp9xy4z0r1i40r80zb45q3i9nbyf"; })
-  (fetchNuGet { pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0zcxjv5pckplvkg0r6mw3asggm7aqzbdjimhvsasb0cgm59x09l3"; })
-  (fetchNuGet { pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0vhynn79ih7hw7cwjazn87rm9z9fj0rvxgzlab36jybgcpcgphsn"; })
-  (fetchNuGet { pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "160p68l2c7cqmyqjwxydcvgw7lvl1cr0znkw8fp24d1by9mqc8p3"; })
-  (fetchNuGet { pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "15zrc8fgd8zx28hdghcj5f5i34wf3l6bq5177075m2bc2j34jrqy"; })
-  (fetchNuGet { pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1p4dgxax6p7rlgj4q73k73rslcnz4wdcv8q2flg1s8ygwcm58ld5"; })
-  (fetchNuGet { pname = "runtime.unix.Microsoft.Win32.Primitives"; version = "4.3.0"; sha256 = "0y61k9zbxhdi0glg154v30kkq7f8646nif8lnnxbvkjpakggd5id"; })
-  (fetchNuGet { pname = "runtime.unix.System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "1lps7fbnw34bnh3lm31gs5c0g0dh7548wfmb8zz62v0zqz71msj5"; })
-  (fetchNuGet { pname = "runtime.unix.System.IO.FileSystem"; version = "4.3.0"; sha256 = "14nbkhvs7sji5r1saj2x8daz82rnf9kx28d3v2qss34qbr32dzix"; })
-  (fetchNuGet { pname = "runtime.unix.System.Private.Uri"; version = "4.3.0"; sha256 = "1jx02q6kiwlvfksq1q9qr17fj78y5v6mwsszav4qcz9z25d5g6vk"; })
-  (fetchNuGet { pname = "runtime.unix.System.Runtime.Extensions"; version = "4.3.0"; sha256 = "0pnxxmm8whx38dp6yvwgmh22smknxmqs5n513fc7m4wxvs1bvi4p"; })
-  (fetchNuGet { pname = "System.AppContext"; version = "4.1.0"; sha256 = "0fv3cma1jp4vgj7a8hqc9n7hr1f1kjp541s6z0q1r6nazb4iz9mz"; })
-  (fetchNuGet { pname = "System.AppContext"; version = "4.3.0"; sha256 = "1649qvy3dar900z3g817h17nl8jp4ka5vcfmsr05kh0fshn7j3ya"; })
-  (fetchNuGet { pname = "System.Buffers"; version = "4.3.0"; sha256 = "0fgns20ispwrfqll4q1zc1waqcmylb3zc50ys9x8zlwxh9pmd9jy"; })
-  (fetchNuGet { pname = "System.Buffers"; version = "4.4.0"; sha256 = "183f8063w8zqn99pv0ni0nnwh7fgx46qzxamwnans55hhs2l0g19"; })
-  (fetchNuGet { pname = "System.Collections"; version = "4.0.11"; sha256 = "1ga40f5lrwldiyw6vy67d0sg7jd7ww6kgwbksm19wrvq9hr0bsm6"; })
-  (fetchNuGet { pname = "System.Collections"; version = "4.3.0"; sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9"; })
-  (fetchNuGet { pname = "System.Collections.Concurrent"; version = "4.3.0"; sha256 = "0wi10md9aq33jrkh2c24wr2n9hrpyamsdhsxdcnf43b7y86kkii8"; })
-  (fetchNuGet { pname = "System.Collections.Immutable"; version = "1.5.0"; sha256 = "1d5gjn5afnrf461jlxzawcvihz195gayqpcfbv6dd7pxa9ialn06"; })
-  (fetchNuGet { pname = "System.Collections.NonGeneric"; version = "4.3.0"; sha256 = "07q3k0hf3mrcjzwj8fwk6gv3n51cb513w4mgkfxzm3i37sc9kz7k"; })
-  (fetchNuGet { pname = "System.Collections.Specialized"; version = "4.3.0"; sha256 = "1sdwkma4f6j85m3dpb53v9vcgd0zyc9jb33f8g63byvijcj39n20"; })
-  (fetchNuGet { pname = "System.ComponentModel"; version = "4.3.0"; sha256 = "0986b10ww3nshy30x9sjyzm0jx339dkjxjj3401r3q0f6fx2wkcb"; })
-  (fetchNuGet { pname = "System.ComponentModel.EventBasedAsync"; version = "4.3.0"; sha256 = "1rv9bkb8yyhqqqrx6x95njv6mdxlbvv527b44mrd93g8fmgkifl7"; })
-  (fetchNuGet { pname = "System.ComponentModel.Primitives"; version = "4.3.0"; sha256 = "1svfmcmgs0w0z9xdw2f2ps05rdxmkxxhf0l17xk9l1l8xfahkqr0"; })
-  (fetchNuGet { pname = "System.ComponentModel.TypeConverter"; version = "4.3.0"; sha256 = "17ng0p7v3nbrg3kycz10aqrrlw4lz9hzhws09pfh8gkwicyy481x"; })
-  (fetchNuGet { pname = "System.Console"; version = "4.3.0"; sha256 = "1flr7a9x920mr5cjsqmsy9wgnv3lvd0h1g521pdr1lkb2qycy7ay"; })
-  (fetchNuGet { pname = "System.Diagnostics.Debug"; version = "4.0.11"; sha256 = "0gmjghrqmlgzxivd2xl50ncbglb7ljzb66rlx8ws6dv8jm0d5siz"; })
-  (fetchNuGet { pname = "System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "00yjlf19wjydyr6cfviaph3vsjzg3d5nvnya26i2fvfg53sknh3y"; })
-  (fetchNuGet { pname = "System.Diagnostics.FileVersionInfo"; version = "4.3.0"; sha256 = "094hx249lb3vb336q7dg3v257hbxvz2jnalj695l7cg5kxzqwai7"; })
-  (fetchNuGet { pname = "System.Diagnostics.Process"; version = "4.3.0"; sha256 = "0g4prsbkygq8m21naqmcp70f24a1ksyix3dihb1r1f71lpi3cfj7"; })
-  (fetchNuGet { pname = "System.Diagnostics.StackTrace"; version = "4.3.0"; sha256 = "0ash4h9k0m7xsm0yl79r0ixrdz369h7y922wipp5gladmlbvpyjd"; })
-  (fetchNuGet { pname = "System.Diagnostics.Tools"; version = "4.0.1"; sha256 = "19cknvg07yhakcvpxg3cxa0bwadplin6kyxd8mpjjpwnp56nl85x"; })
-  (fetchNuGet { pname = "System.Diagnostics.Tools"; version = "4.3.0"; sha256 = "0in3pic3s2ddyibi8cvgl102zmvp9r9mchh82ns9f0ms4basylw1"; })
-  (fetchNuGet { pname = "System.Diagnostics.Tracing"; version = "4.3.0"; sha256 = "1m3bx6c2s958qligl67q7grkwfz3w53hpy7nc97mh6f7j5k168c4"; })
-  (fetchNuGet { pname = "System.Dynamic.Runtime"; version = "4.0.11"; sha256 = "1pla2dx8gkidf7xkciig6nifdsb494axjvzvann8g2lp3dbqasm9"; })
-  (fetchNuGet { pname = "System.Dynamic.Runtime"; version = "4.3.0"; sha256 = "1d951hrvrpndk7insiag80qxjbf2y0y39y8h5hnq9612ws661glk"; })
-  (fetchNuGet { pname = "System.Globalization"; version = "4.0.11"; sha256 = "070c5jbas2v7smm660zaf1gh0489xanjqymkvafcs4f8cdrs1d5d"; })
-  (fetchNuGet { pname = "System.Globalization"; version = "4.3.0"; sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki"; })
-  (fetchNuGet { pname = "System.Globalization.Extensions"; version = "4.3.0"; sha256 = "02a5zfxavhv3jd437bsncbhd2fp1zv4gxzakp1an9l6kdq1mcqls"; })
-  (fetchNuGet { pname = "System.IO"; version = "4.1.0"; sha256 = "1g0yb8p11vfd0kbkyzlfsbsp5z44lwsvyc0h3dpw6vqnbi035ajp"; })
-  (fetchNuGet { pname = "System.IO"; version = "4.3.0"; sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f"; })
-  (fetchNuGet { pname = "System.IO.Compression"; version = "4.3.0"; sha256 = "084zc82yi6yllgda0zkgl2ys48sypiswbiwrv7irb3r0ai1fp4vz"; })
-  (fetchNuGet { pname = "System.IO.FileSystem"; version = "4.0.1"; sha256 = "0kgfpw6w4djqra3w5crrg8xivbanh1w9dh3qapb28q060wb9flp1"; })
-  (fetchNuGet { pname = "System.IO.FileSystem"; version = "4.3.0"; sha256 = "0z2dfrbra9i6y16mm9v1v6k47f0fm617vlb7s5iybjjsz6g1ilmw"; })
-  (fetchNuGet { pname = "System.IO.FileSystem.Primitives"; version = "4.0.1"; sha256 = "1s0mniajj3lvbyf7vfb5shp4ink5yibsx945k6lvxa96r8la1612"; })
-  (fetchNuGet { pname = "System.IO.FileSystem.Primitives"; version = "4.3.0"; sha256 = "0j6ndgglcf4brg2lz4wzsh1av1gh8xrzdsn9f0yznskhqn1xzj9c"; })
-  (fetchNuGet { pname = "System.Linq"; version = "4.1.0"; sha256 = "1ppg83svb39hj4hpp5k7kcryzrf3sfnm08vxd5sm2drrijsla2k5"; })
-  (fetchNuGet { pname = "System.Linq"; version = "4.3.0"; sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7"; })
-  (fetchNuGet { pname = "System.Linq.Expressions"; version = "4.1.0"; sha256 = "1gpdxl6ip06cnab7n3zlcg6mqp7kknf73s8wjinzi4p0apw82fpg"; })
-  (fetchNuGet { pname = "System.Linq.Expressions"; version = "4.3.0"; sha256 = "0ky2nrcvh70rqq88m9a5yqabsl4fyd17bpr63iy2mbivjs2nyypv"; })
-  (fetchNuGet { pname = "System.Management"; version = "4.5.0"; sha256 = "19z5x23n21xi94bgl531l9hrm64nyw9d5fpd7klfvr5xfsbh9jwr"; })
-  (fetchNuGet { pname = "System.Memory"; version = "4.5.3"; sha256 = "0naqahm3wljxb5a911d37mwjqjdxv9l0b49p5dmfyijvni2ppy8a"; })
-  (fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.4.0"; sha256 = "0rdvma399070b0i46c4qq1h2yvjj3k013sqzkilz4bz5cwmx1rba"; })
-  (fetchNuGet { pname = "System.ObjectModel"; version = "4.0.12"; sha256 = "1sybkfi60a4588xn34nd9a58png36i0xr4y4v4kqpg8wlvy5krrj"; })
-  (fetchNuGet { pname = "System.Private.Uri"; version = "4.3.0"; sha256 = "04r1lkdnsznin0fj4ya1zikxiqr0h6r6a1ww2dsm60gqhdrf0mvx"; })
-  (fetchNuGet { pname = "System.Reflection"; version = "4.1.0"; sha256 = "1js89429pfw79mxvbzp8p3q93il6rdff332hddhzi5wqglc4gml9"; })
-  (fetchNuGet { pname = "System.Reflection"; version = "4.3.0"; sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m"; })
-  (fetchNuGet { pname = "System.Reflection.Emit"; version = "4.0.1"; sha256 = "0ydqcsvh6smi41gyaakglnv252625hf29f7kywy2c70nhii2ylqp"; })
-  (fetchNuGet { pname = "System.Reflection.Emit"; version = "4.3.0"; sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74"; })
-  (fetchNuGet { pname = "System.Reflection.Emit.ILGeneration"; version = "4.0.1"; sha256 = "1pcd2ig6bg144y10w7yxgc9d22r7c7ww7qn1frdfwgxr24j9wvv0"; })
-  (fetchNuGet { pname = "System.Reflection.Emit.ILGeneration"; version = "4.3.0"; sha256 = "0w1n67glpv8241vnpz1kl14sy7zlnw414aqwj4hcx5nd86f6994q"; })
-  (fetchNuGet { pname = "System.Reflection.Emit.Lightweight"; version = "4.0.1"; sha256 = "1s4b043zdbx9k39lfhvsk68msv1nxbidhkq6nbm27q7sf8xcsnxr"; })
-  (fetchNuGet { pname = "System.Reflection.Emit.Lightweight"; version = "4.3.0"; sha256 = "0ql7lcakycrvzgi9kxz1b3lljd990az1x6c4jsiwcacrvimpib5c"; })
-  (fetchNuGet { pname = "System.Reflection.Extensions"; version = "4.0.1"; sha256 = "0m7wqwq0zqq9gbpiqvgk3sr92cbrw7cp3xn53xvw7zj6rz6fdirn"; })
-  (fetchNuGet { pname = "System.Reflection.Extensions"; version = "4.3.0"; sha256 = "02bly8bdc98gs22lqsfx9xicblszr2yan7v2mmw3g7hy6miq5hwq"; })
-  (fetchNuGet { pname = "System.Reflection.Metadata"; version = "1.6.0"; sha256 = "1wdbavrrkajy7qbdblpbpbalbdl48q3h34cchz24gvdgyrlf15r4"; })
-  (fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.0.1"; sha256 = "1bangaabhsl4k9fg8khn83wm6yial8ik1sza7401621jc6jrym28"; })
-  (fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.3.0"; sha256 = "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276"; })
-  (fetchNuGet { pname = "System.Reflection.TypeExtensions"; version = "4.1.0"; sha256 = "1bjli8a7sc7jlxqgcagl9nh8axzfl11f4ld3rjqsyxc516iijij7"; })
-  (fetchNuGet { pname = "System.Reflection.TypeExtensions"; version = "4.3.0"; sha256 = "0y2ssg08d817p0vdag98vn238gyrrynjdj4181hdg780sif3ykp1"; })
-  (fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.0.1"; sha256 = "0b4i7mncaf8cnai85jv3wnw6hps140cxz8vylv2bik6wyzgvz7bi"; })
-  (fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49"; })
-  (fetchNuGet { pname = "System.Runtime"; version = "4.1.0"; sha256 = "02hdkgk13rvsd6r9yafbwzss8kr55wnj8d5c7xjnp8gqrwc8sn0m"; })
-  (fetchNuGet { pname = "System.Runtime"; version = "4.3.0"; sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7"; })
-  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.5.2"; sha256 = "1vz4275fjij8inf31np78hw50al8nqkngk04p3xv5n4fcmf1grgi"; })
-  (fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.1.0"; sha256 = "0rw4rm4vsm3h3szxp9iijc3ksyviwsv6f63dng3vhqyg4vjdkc2z"; })
-  (fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.3.0"; sha256 = "1ykp3dnhwvm48nap8q23893hagf665k0kn3cbgsqpwzbijdcgc60"; })
-  (fetchNuGet { pname = "System.Runtime.Handles"; version = "4.0.1"; sha256 = "1g0zrdi5508v49pfm3iii2hn6nm00bgvfpjq1zxknfjrxxa20r4g"; })
-  (fetchNuGet { pname = "System.Runtime.Handles"; version = "4.3.0"; sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8"; })
-  (fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.1.0"; sha256 = "01kxqppx3dr3b6b286xafqilv4s2n0gqvfgzfd4z943ga9i81is1"; })
-  (fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j"; })
-  (fetchNuGet { pname = "System.Runtime.InteropServices.RuntimeInformation"; version = "4.0.0"; sha256 = "0glmvarf3jz5xh22iy3w9v3wyragcm4hfdr17v90vs7vcrm7fgp6"; })
-  (fetchNuGet { pname = "System.Runtime.InteropServices.RuntimeInformation"; version = "4.3.0"; sha256 = "0q18r1sh4vn7bvqgd6dmqlw5v28flbpj349mkdish2vjyvmnb2ii"; })
-  (fetchNuGet { pname = "System.Runtime.Numerics"; version = "4.3.0"; sha256 = "19rav39sr5dky7afygh309qamqqmi9kcwvz3i0c5700v0c5cg61z"; })
-  (fetchNuGet { pname = "System.Runtime.Serialization.Primitives"; version = "4.1.1"; sha256 = "042rfjixknlr6r10vx2pgf56yming8lkjikamg3g4v29ikk78h7k"; })
-  (fetchNuGet { pname = "System.Security.AccessControl"; version = "4.5.0"; sha256 = "1wvwanz33fzzbnd2jalar0p0z3x0ba53vzx1kazlskp7pwyhlnq0"; })
-  (fetchNuGet { pname = "System.Security.Cryptography.Algorithms"; version = "4.3.0"; sha256 = "03sq183pfl5kp7gkvq77myv7kbpdnq3y0xj7vi4q1kaw54sny0ml"; })
-  (fetchNuGet { pname = "System.Security.Cryptography.Encoding"; version = "4.3.0"; sha256 = "1jr6w70igqn07k5zs1ph6xja97hxnb3mqbspdrff6cvssgrixs32"; })
-  (fetchNuGet { pname = "System.Security.Cryptography.Primitives"; version = "4.3.0"; sha256 = "0pyzncsv48zwly3lw4f2dayqswcfvdwq2nz0dgwmi7fj3pn64wby"; })
-  (fetchNuGet { pname = "System.Security.Cryptography.X509Certificates"; version = "4.3.0"; sha256 = "0valjcz5wksbvijylxijjxb1mp38mdhv03r533vnx1q3ikzdav9h"; })
-  (fetchNuGet { pname = "System.Security.Principal.Windows"; version = "4.5.0"; sha256 = "0rmj89wsl5yzwh0kqjgx45vzf694v9p92r4x4q6yxldk1cv1hi86"; })
-  (fetchNuGet { pname = "System.Text.Encoding"; version = "4.0.11"; sha256 = "1dyqv0hijg265dwxg6l7aiv74102d6xjiwplh2ar1ly6xfaa4iiw"; })
-  (fetchNuGet { pname = "System.Text.Encoding"; version = "4.3.0"; sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"; })
-  (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "4.3.0"; sha256 = "0lgxg1gn7pg7j0f942pfdc9q7wamzxsgq3ng248ikdasxz0iadkv"; })
-  (fetchNuGet { pname = "System.Text.Encoding.Extensions"; version = "4.0.11"; sha256 = "08nsfrpiwsg9x5ml4xyl3zyvjfdi4mvbqf93kjdh11j4fwkznizs"; })
-  (fetchNuGet { pname = "System.Text.Encoding.Extensions"; version = "4.3.0"; sha256 = "11q1y8hh5hrp5a3kw25cb6l00v5l5dvirkz8jr3sq00h1xgcgrxy"; })
-  (fetchNuGet { pname = "System.Text.RegularExpressions"; version = "4.1.0"; sha256 = "1mw7vfkkyd04yn2fbhm38msk7dz2xwvib14ygjsb8dq2lcvr18y7"; })
-  (fetchNuGet { pname = "System.Text.RegularExpressions"; version = "4.3.0"; sha256 = "1bgq51k7fwld0njylfn7qc5fmwrk2137gdq7djqdsw347paa9c2l"; })
-  (fetchNuGet { pname = "System.Threading"; version = "4.0.11"; sha256 = "19x946h926bzvbsgj28csn46gak2crv2skpwsx80hbgazmkgb1ls"; })
-  (fetchNuGet { pname = "System.Threading"; version = "4.3.0"; sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34"; })
-  (fetchNuGet { pname = "System.Threading.Tasks"; version = "4.0.11"; sha256 = "0nr1r41rak82qfa5m0lhk9mp0k93bvfd7bbd9sdzwx9mb36g28p5"; })
-  (fetchNuGet { pname = "System.Threading.Tasks"; version = "4.3.0"; sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7"; })
-  (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.0.0"; sha256 = "1cb51z062mvc2i8blpzmpn9d9mm4y307xrwi65di8ri18cz5r1zr"; })
-  (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.3.0"; sha256 = "1xxcx2xh8jin360yjwm4x4cf5y3a2bwpn2ygkfkwkicz7zk50s2z"; })
-  (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.5.2"; sha256 = "1sh63dz0dymqcwmprp0nadm77b83vmm7lyllpv578c397bslb8hj"; })
-  (fetchNuGet { pname = "System.Threading.Tasks.Parallel"; version = "4.3.0"; sha256 = "1rr3qa4hxwyj531s4nb3bwrxnxxwz617i0n9gh6x7nr7dd3ayzgh"; })
-  (fetchNuGet { pname = "System.Threading.Thread"; version = "4.3.0"; sha256 = "0y2xiwdfcph7znm2ysxanrhbqqss6a3shi1z3c779pj2s523mjx4"; })
-  (fetchNuGet { pname = "System.Threading.ThreadPool"; version = "4.3.0"; sha256 = "027s1f4sbx0y1xqw2irqn6x161lzj8qwvnh2gn78ciiczdv10vf1"; })
-  (fetchNuGet { pname = "System.ValueTuple"; version = "4.5.0"; sha256 = "00k8ja51d0f9wrq4vv5z2jhq8hy31kac2rg0rv06prylcybzl8cy"; })
-  (fetchNuGet { pname = "System.Xml.ReaderWriter"; version = "4.0.11"; sha256 = "0c6ky1jk5ada9m94wcadih98l6k1fvf6vi7vhn1msjixaha419l5"; })
-  (fetchNuGet { pname = "System.Xml.ReaderWriter"; version = "4.3.0"; sha256 = "0c47yllxifzmh8gq6rq6l36zzvw4kjvlszkqa9wq3fr59n0hl3s1"; })
-  (fetchNuGet { pname = "System.Xml.XDocument"; version = "4.0.11"; sha256 = "0n4lvpqzy9kc7qy1a4acwwd7b7pnvygv895az5640idl2y9zbz18"; })
-  (fetchNuGet { pname = "System.Xml.XDocument"; version = "4.3.0"; sha256 = "08h8fm4l77n0nd4i4fk2386y809bfbwqb7ih9d7564ifcxr5ssxd"; })
-  (fetchNuGet { pname = "System.Xml.XmlDocument"; version = "4.3.0"; sha256 = "0bmz1l06dihx52jxjr22dyv5mxv6pj4852lx68grjm7bivhrbfwi"; })
-  (fetchNuGet { pname = "System.Xml.XPath"; version = "4.3.0"; sha256 = "1cv2m0p70774a0sd1zxc8fm8jk3i5zk2bla3riqvi8gsm0r4kpci"; })
-  (fetchNuGet { pname = "System.Xml.XPath.XDocument"; version = "4.3.0"; sha256 = "1wxckyb7n1pi433xzz0qcwcbl1swpra64065mbwwi8dhdc4kiabn"; })
-  (fetchNuGet { pname = "System.Xml.XPath.XmlDocument"; version = "4.3.0"; sha256 = "1h9lh7qkp0lff33z847sdfjj8yaz98ylbnkbxlnsbflhj9xyfqrm"; })
+{ fetchNuGet }:
+[
+  (fetchNuGet {
+    pname = "BenchmarkDotNet";
+    version = "0.13.1";
+    sha256 = "1kgypxfp34vjy9kvqq8csznsjbnv37pp4r0457i5l1j6zrsm76rp";
+  })
+  (fetchNuGet {
+    pname = "BenchmarkDotNet.Annotations";
+    version = "0.13.1";
+    sha256 = "0fizarpvdajwcvfhd45c35xrnrci5rbn5ksf3zvlw4q300hnlsir";
+  })
+  (fetchNuGet {
+    pname = "CommandLineParser";
+    version = "2.4.3";
+    sha256 = "1aca3q25n3dg55v4j3kzlzfzd5k2jpy6zhp8x7g74pdfdqzrhg55";
+  })
+  (fetchNuGet {
+    pname = "Iced";
+    version = "1.8.0";
+    sha256 = "12cgd9p3jm81wd7m8bp3pm20gmrmbad2hcwzynhz644h3062nn24";
+  })
+  (fetchNuGet {
+    pname = "Lost.Compat.NullabilityAttributes";
+    version = "0.0.4";
+    sha256 = "1h8m1n4x1p69xh86ia1rf4dcr17w965fpxws7d3458r4w1wl143a";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.Build.Tasks.Git";
+    version = "1.1.1";
+    sha256 = "1bb5p4zlnfn88skkvymxfsn0jybqncl4356hwnic9jxdq2d4fz1w";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.CodeAnalysis.Analyzers";
+    version = "2.6.1";
+    sha256 = "1plk343h9fyxg08b9bcnlqyaq00cbnc1v73pj9nbcyphmgf5bqfp";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.CodeAnalysis.Common";
+    version = "2.10.0";
+    sha256 = "1l690xqrhmkasns5ghz0vqj8n2xyl5yrwan5gs52hwfxdwahqaaj";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.CodeAnalysis.CSharp";
+    version = "2.10.0";
+    sha256 = "0saabsr81crawdzs2cnzyjp5cgg2hk5k6q7n0i0pxghswb0m4dxk";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.CodeCoverage";
+    version = "16.11.0";
+    sha256 = "0f41l3kks6wk5vjaxpjh8m2flnrvlbvqgqflamhv8rfz4y8ifgdv";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.CodeCoverage";
+    version = "17.0.0";
+    sha256 = "18gdbsqf6i79ld4ikqr4jhx9ndsggm865b5xj1xmnmgg12ydp19a";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.CodeCoverage";
+    version = "17.6.2";
+    sha256 = "1wwmg6hn4dp2mvwn2bm81wccdw149lq17xdnpz17mvg4zcwmax7g";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.CSharp";
+    version = "4.7.0";
+    sha256 = "0gd67zlw554j098kabg887b5a6pq9kzavpa3jjy5w53ccjzjfy8j";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.Diagnostics.NETCore.Client";
+    version = "0.2.61701";
+    sha256 = "1ic1607jj4ln8dbibf1fz5v9svk9x2kqlgvhndc6ijaqnbc4wcr1";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.Diagnostics.Runtime";
+    version = "1.1.126102";
+    sha256 = "0w7jcxkd4cix6dbh0szawilmykjmdc1rqysllrpwb7ivrxzazypn";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.Diagnostics.Tracing.TraceEvent";
+    version = "2.0.61";
+    sha256 = "0gq51l4yyyn8dir6w41im9fwhw9r6jz6n7jm4zhmvvway5ijbcac";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.DotNet.InternalAbstractions";
+    version = "1.0.0";
+    sha256 = "0mp8ihqlb7fsa789frjzidrfjc1lrhk88qp3xm5qvr7vf4wy4z8x";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.DotNet.PlatformAbstractions";
+    version = "2.1.0";
+    sha256 = "1qydvyyinj3b5mraazjal3n2k7jqhn05b6n1a2f3qjkqkxi63dmy";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.Net.Compilers.Toolset";
+    version = "4.0.1";
+    sha256 = "08njbdnmjzjd6phys94w0di3vcxfq7pniad6s3jc5f65r9s1f0w2";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.NET.Test.Sdk";
+    version = "16.11.0";
+    sha256 = "1a2y6vw6p9xp3w72zq2lwrjl8bxv87s9d7zd2dh4zwbzh1c5slxl";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.NET.Test.Sdk";
+    version = "17.0.0";
+    sha256 = "0bknyf5kig5icwjxls7pcn51x2b2qf91dz9qv67fl70v6cczaz2r";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.NET.Test.Sdk";
+    version = "17.6.2";
+    sha256 = "1a658bnh5q3lfkrr81h3lyx1mc3hggnjr1bpmim71rr2s42ad70v";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.NETCore.Platforms";
+    version = "1.0.1";
+    sha256 = "01al6cfxp68dscl15z7rxfw9zvhm64dncsw09a1vmdkacsa2v6lr";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.NETCore.Platforms";
+    version = "1.1.0";
+    sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.NETCore.Targets";
+    version = "1.0.1";
+    sha256 = "0ppdkwy6s9p7x9jix3v4402wb171cdiibq7js7i13nxpdky7074p";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.NETCore.Targets";
+    version = "1.1.0";
+    sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.NETFramework.ReferenceAssemblies";
+    version = "1.0.0";
+    sha256 = "0na724xhvqm63vq9y18fl9jw9q2v99bdwr353378s5fsi11qzxp9";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.NETFramework.ReferenceAssemblies.net461";
+    version = "1.0.0";
+    sha256 = "00vkn4c6i0rn1l9pv912y0wgb9h6ks76qah8hvk441nari8fqbm1";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.NETFramework.ReferenceAssemblies.net472";
+    version = "1.0.0";
+    sha256 = "1bqinq2nxnpqxziypg1sqy3ly0nymxxjpn8fwkn3rl4vl6gdg3rc";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.SourceLink.Common";
+    version = "1.1.1";
+    sha256 = "0xkdqs7az2cprar7jzjlgjpd64l6f8ixcmwmpkdm03fyb4s5m0bg";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.SourceLink.GitHub";
+    version = "1.1.1";
+    sha256 = "099y35f2npvva3jk1zp8hn0vb9pwm2l0ivjasdly6y2idv53s5yy";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.TestPlatform.ObjectModel";
+    version = "16.11.0";
+    sha256 = "1fc0ghk1cny4i8w43b94pxhl0srxisv6kaflkkp30ncsa9szhkxh";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.TestPlatform.ObjectModel";
+    version = "17.6.2";
+    sha256 = "0asbrbdyyig1p034smf79lszzbfv1cn6q181i7d4p2vsiqpjp9sj";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.TestPlatform.TestHost";
+    version = "16.11.0";
+    sha256 = "0hp1vndf2jhyg1f3miq4g2068z5kpfzy6nmswm25vymghxp1ws4k";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.TestPlatform.TestHost";
+    version = "17.6.2";
+    sha256 = "0lcj8kkcnxbwiaw6j0xf4fxqpa6z0s41nq52spvckfg4367lg4fg";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.Win32.Primitives";
+    version = "4.3.0";
+    sha256 = "0j0c1wj4ndj21zsgivsc24whiya605603kxrbiw6wkfdync464wq";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.Win32.Registry";
+    version = "4.3.0";
+    sha256 = "1gxyzxam8163vk1kb6xzxjj4iwspjsz9zhgn1w9rjzciphaz0ig7";
+  })
+  (fetchNuGet {
+    pname = "Microsoft.Win32.Registry";
+    version = "4.5.0";
+    sha256 = "1zapbz161ji8h82xiajgriq6zgzmb1f3ar517p2h63plhsq5gh2q";
+  })
+  (fetchNuGet {
+    pname = "NETStandard.Library";
+    version = "2.0.0";
+    sha256 = "1bc4ba8ahgk15m8k4nd7x406nhi0kwqzbgjk2dmw52ss553xz7iy";
+  })
+  (fetchNuGet {
+    pname = "NETStandard.Library";
+    version = "2.0.3";
+    sha256 = "1fn9fxppfcg4jgypp2pmrpr6awl3qz1xmnri0cygpkwvyx27df1y";
+  })
+  (fetchNuGet {
+    pname = "Newtonsoft.Json";
+    version = "13.0.1";
+    sha256 = "0fijg0w6iwap8gvzyjnndds0q4b8anwxxvik7y8vgq97dram4srb";
+  })
+  (fetchNuGet {
+    pname = "Newtonsoft.Json";
+    version = "9.0.1";
+    sha256 = "0mcy0i7pnfpqm4pcaiyzzji4g0c8i3a5gjz28rrr28110np8304r";
+  })
+  (fetchNuGet {
+    pname = "NonCopyableAnalyzer";
+    version = "0.7.0";
+    sha256 = "1jry36p53fkk3fn9pawgg7qiv79j30y0kvd4xrnd58d7zg7zzdj0";
+  })
+  (fetchNuGet {
+    pname = "NuGet.Frameworks";
+    version = "5.0.0";
+    sha256 = "18ijvmj13cwjdrrm52c8fpq021531zaz4mj4b4zapxaqzzxf2qjr";
+  })
+  (fetchNuGet {
+    pname = "NuGet.Frameworks";
+    version = "6.5.0";
+    sha256 = "0s37d1p4md0k6d4cy6sq36f2dgkd9qfbzapxhkvi8awwh0vrynhj";
+  })
+  (fetchNuGet {
+    pname = "NUnit";
+    version = "3.12.0";
+    sha256 = "1880j2xwavi8f28vxan3hyvdnph4nlh5sbmh285s4lc9l0b7bdk2";
+  })
+  (fetchNuGet {
+    pname = "NUnit";
+    version = "3.13.3";
+    sha256 = "0wdzfkygqnr73s6lpxg5b1pwaqz9f414fxpvpdmf72bvh4jaqzv6";
+  })
+  (fetchNuGet {
+    pname = "NUnit3TestAdapter";
+    version = "3.16.1";
+    sha256 = "1pzhmapfdszsfza7zjr3zrlz4fssdxsyiwmlj76a40mbhxhfa4q9";
+  })
+  (fetchNuGet {
+    pname = "NUnit3TestAdapter";
+    version = "3.17.0";
+    sha256 = "0kxc6z3b8ccdrcyqz88jm5yh5ch9nbg303v67q8sp5hhs8rl8nk6";
+  })
+  (fetchNuGet {
+    pname = "NUnit3TestAdapter";
+    version = "4.5.0";
+    sha256 = "1srx1629s0k1kmf02nmz251q07vj6pv58mdafcr5dr0bbn1fh78i";
+  })
+  (fetchNuGet {
+    pname = "Perfolizer";
+    version = "0.2.1";
+    sha256 = "012aqqi3y3nfikqmn26yajpwd52c04zlzp0p91iyslw7mf26qncy";
+  })
+  (fetchNuGet {
+    pname = "runtime.any.System.Collections";
+    version = "4.3.0";
+    sha256 = "0bv5qgm6vr47ynxqbnkc7i797fdi8gbjjxii173syrx14nmrkwg0";
+  })
+  (fetchNuGet {
+    pname = "runtime.any.System.Diagnostics.Tools";
+    version = "4.3.0";
+    sha256 = "1wl76vk12zhdh66vmagni66h5xbhgqq7zkdpgw21jhxhvlbcl8pk";
+  })
+  (fetchNuGet {
+    pname = "runtime.any.System.Diagnostics.Tracing";
+    version = "4.3.0";
+    sha256 = "00j6nv2xgmd3bi347k00m7wr542wjlig53rmj28pmw7ddcn97jbn";
+  })
+  (fetchNuGet {
+    pname = "runtime.any.System.Globalization";
+    version = "4.3.0";
+    sha256 = "1daqf33hssad94lamzg01y49xwndy2q97i2lrb7mgn28656qia1x";
+  })
+  (fetchNuGet {
+    pname = "runtime.any.System.IO";
+    version = "4.3.0";
+    sha256 = "0l8xz8zn46w4d10bcn3l4yyn4vhb3lrj2zw8llvz7jk14k4zps5x";
+  })
+  (fetchNuGet {
+    pname = "runtime.any.System.Reflection";
+    version = "4.3.0";
+    sha256 = "02c9h3y35pylc0zfq3wcsvc5nqci95nrkq0mszifc0sjx7xrzkly";
+  })
+  (fetchNuGet {
+    pname = "runtime.any.System.Reflection.Extensions";
+    version = "4.3.0";
+    sha256 = "0zyri97dfc5vyaz9ba65hjj1zbcrzaffhsdlpxc9bh09wy22fq33";
+  })
+  (fetchNuGet {
+    pname = "runtime.any.System.Reflection.Primitives";
+    version = "4.3.0";
+    sha256 = "0x1mm8c6iy8rlxm8w9vqw7gb7s1ljadrn049fmf70cyh42vdfhrf";
+  })
+  (fetchNuGet {
+    pname = "runtime.any.System.Resources.ResourceManager";
+    version = "4.3.0";
+    sha256 = "03kickal0iiby82wa5flar18kyv82s9s6d4xhk5h4bi5kfcyfjzl";
+  })
+  (fetchNuGet {
+    pname = "runtime.any.System.Runtime";
+    version = "4.3.0";
+    sha256 = "1cqh1sv3h5j7ixyb7axxbdkqx6cxy00p4np4j91kpm492rf4s25b";
+  })
+  (fetchNuGet {
+    pname = "runtime.any.System.Runtime.Handles";
+    version = "4.3.0";
+    sha256 = "0bh5bi25nk9w9xi8z23ws45q5yia6k7dg3i4axhfqlnj145l011x";
+  })
+  (fetchNuGet {
+    pname = "runtime.any.System.Runtime.InteropServices";
+    version = "4.3.0";
+    sha256 = "0c3g3g3jmhlhw4klrc86ka9fjbl7i59ds1fadsb2l8nqf8z3kb19";
+  })
+  (fetchNuGet {
+    pname = "runtime.any.System.Text.Encoding";
+    version = "4.3.0";
+    sha256 = "0aqqi1v4wx51h51mk956y783wzags13wa7mgqyclacmsmpv02ps3";
+  })
+  (fetchNuGet {
+    pname = "runtime.any.System.Text.Encoding.Extensions";
+    version = "4.3.0";
+    sha256 = "0lqhgqi0i8194ryqq6v2gqx0fb86db2gqknbm0aq31wb378j7ip8";
+  })
+  (fetchNuGet {
+    pname = "runtime.any.System.Threading.Tasks";
+    version = "4.3.0";
+    sha256 = "03mnvkhskbzxddz4hm113zsch1jyzh2cs450dk3rgfjp8crlw1va";
+  })
+  (fetchNuGet {
+    pname = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+    version = "4.3.0";
+    sha256 = "16rnxzpk5dpbbl1x354yrlsbvwylrq456xzpsha1n9y3glnhyx9d";
+  })
+  (fetchNuGet {
+    pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+    version = "4.3.0";
+    sha256 = "0hkg03sgm2wyq8nqk6dbm9jh5vcq57ry42lkqdmfklrw89lsmr59";
+  })
+  (fetchNuGet {
+    pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+    version = "4.3.0";
+    sha256 = "0c2p354hjx58xhhz7wv6div8xpi90sc6ibdm40qin21bvi7ymcaa";
+  })
+  (fetchNuGet {
+    pname = "runtime.native.System";
+    version = "4.3.0";
+    sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4";
+  })
+  (fetchNuGet {
+    pname = "runtime.native.System.Security.Cryptography.OpenSsl";
+    version = "4.3.0";
+    sha256 = "18pzfdlwsg2nb1jjjjzyb5qlgy6xjxzmhnfaijq5s2jw3cm3ab97";
+  })
+  (fetchNuGet {
+    pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+    version = "4.3.0";
+    sha256 = "0qyynf9nz5i7pc26cwhgi8j62ps27sqmf78ijcfgzab50z9g8ay3";
+  })
+  (fetchNuGet {
+    pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+    version = "4.3.0";
+    sha256 = "1klrs545awhayryma6l7g2pvnp9xy4z0r1i40r80zb45q3i9nbyf";
+  })
+  (fetchNuGet {
+    pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+    version = "4.3.0";
+    sha256 = "0zcxjv5pckplvkg0r6mw3asggm7aqzbdjimhvsasb0cgm59x09l3";
+  })
+  (fetchNuGet {
+    pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+    version = "4.3.0";
+    sha256 = "0vhynn79ih7hw7cwjazn87rm9z9fj0rvxgzlab36jybgcpcgphsn";
+  })
+  (fetchNuGet {
+    pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+    version = "4.3.0";
+    sha256 = "160p68l2c7cqmyqjwxydcvgw7lvl1cr0znkw8fp24d1by9mqc8p3";
+  })
+  (fetchNuGet {
+    pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+    version = "4.3.0";
+    sha256 = "15zrc8fgd8zx28hdghcj5f5i34wf3l6bq5177075m2bc2j34jrqy";
+  })
+  (fetchNuGet {
+    pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl";
+    version = "4.3.0";
+    sha256 = "1p4dgxax6p7rlgj4q73k73rslcnz4wdcv8q2flg1s8ygwcm58ld5";
+  })
+  (fetchNuGet {
+    pname = "runtime.unix.Microsoft.Win32.Primitives";
+    version = "4.3.0";
+    sha256 = "0y61k9zbxhdi0glg154v30kkq7f8646nif8lnnxbvkjpakggd5id";
+  })
+  (fetchNuGet {
+    pname = "runtime.unix.System.Diagnostics.Debug";
+    version = "4.3.0";
+    sha256 = "1lps7fbnw34bnh3lm31gs5c0g0dh7548wfmb8zz62v0zqz71msj5";
+  })
+  (fetchNuGet {
+    pname = "runtime.unix.System.IO.FileSystem";
+    version = "4.3.0";
+    sha256 = "14nbkhvs7sji5r1saj2x8daz82rnf9kx28d3v2qss34qbr32dzix";
+  })
+  (fetchNuGet {
+    pname = "runtime.unix.System.Private.Uri";
+    version = "4.3.0";
+    sha256 = "1jx02q6kiwlvfksq1q9qr17fj78y5v6mwsszav4qcz9z25d5g6vk";
+  })
+  (fetchNuGet {
+    pname = "runtime.unix.System.Runtime.Extensions";
+    version = "4.3.0";
+    sha256 = "0pnxxmm8whx38dp6yvwgmh22smknxmqs5n513fc7m4wxvs1bvi4p";
+  })
+  (fetchNuGet {
+    pname = "System.AppContext";
+    version = "4.1.0";
+    sha256 = "0fv3cma1jp4vgj7a8hqc9n7hr1f1kjp541s6z0q1r6nazb4iz9mz";
+  })
+  (fetchNuGet {
+    pname = "System.AppContext";
+    version = "4.3.0";
+    sha256 = "1649qvy3dar900z3g817h17nl8jp4ka5vcfmsr05kh0fshn7j3ya";
+  })
+  (fetchNuGet {
+    pname = "System.Buffers";
+    version = "4.3.0";
+    sha256 = "0fgns20ispwrfqll4q1zc1waqcmylb3zc50ys9x8zlwxh9pmd9jy";
+  })
+  (fetchNuGet {
+    pname = "System.Buffers";
+    version = "4.4.0";
+    sha256 = "183f8063w8zqn99pv0ni0nnwh7fgx46qzxamwnans55hhs2l0g19";
+  })
+  (fetchNuGet {
+    pname = "System.Collections";
+    version = "4.0.11";
+    sha256 = "1ga40f5lrwldiyw6vy67d0sg7jd7ww6kgwbksm19wrvq9hr0bsm6";
+  })
+  (fetchNuGet {
+    pname = "System.Collections";
+    version = "4.3.0";
+    sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9";
+  })
+  (fetchNuGet {
+    pname = "System.Collections.Concurrent";
+    version = "4.3.0";
+    sha256 = "0wi10md9aq33jrkh2c24wr2n9hrpyamsdhsxdcnf43b7y86kkii8";
+  })
+  (fetchNuGet {
+    pname = "System.Collections.Immutable";
+    version = "1.5.0";
+    sha256 = "1d5gjn5afnrf461jlxzawcvihz195gayqpcfbv6dd7pxa9ialn06";
+  })
+  (fetchNuGet {
+    pname = "System.Collections.NonGeneric";
+    version = "4.3.0";
+    sha256 = "07q3k0hf3mrcjzwj8fwk6gv3n51cb513w4mgkfxzm3i37sc9kz7k";
+  })
+  (fetchNuGet {
+    pname = "System.Collections.Specialized";
+    version = "4.3.0";
+    sha256 = "1sdwkma4f6j85m3dpb53v9vcgd0zyc9jb33f8g63byvijcj39n20";
+  })
+  (fetchNuGet {
+    pname = "System.ComponentModel";
+    version = "4.3.0";
+    sha256 = "0986b10ww3nshy30x9sjyzm0jx339dkjxjj3401r3q0f6fx2wkcb";
+  })
+  (fetchNuGet {
+    pname = "System.ComponentModel.EventBasedAsync";
+    version = "4.3.0";
+    sha256 = "1rv9bkb8yyhqqqrx6x95njv6mdxlbvv527b44mrd93g8fmgkifl7";
+  })
+  (fetchNuGet {
+    pname = "System.ComponentModel.Primitives";
+    version = "4.3.0";
+    sha256 = "1svfmcmgs0w0z9xdw2f2ps05rdxmkxxhf0l17xk9l1l8xfahkqr0";
+  })
+  (fetchNuGet {
+    pname = "System.ComponentModel.TypeConverter";
+    version = "4.3.0";
+    sha256 = "17ng0p7v3nbrg3kycz10aqrrlw4lz9hzhws09pfh8gkwicyy481x";
+  })
+  (fetchNuGet {
+    pname = "System.Console";
+    version = "4.3.0";
+    sha256 = "1flr7a9x920mr5cjsqmsy9wgnv3lvd0h1g521pdr1lkb2qycy7ay";
+  })
+  (fetchNuGet {
+    pname = "System.Diagnostics.Debug";
+    version = "4.0.11";
+    sha256 = "0gmjghrqmlgzxivd2xl50ncbglb7ljzb66rlx8ws6dv8jm0d5siz";
+  })
+  (fetchNuGet {
+    pname = "System.Diagnostics.Debug";
+    version = "4.3.0";
+    sha256 = "00yjlf19wjydyr6cfviaph3vsjzg3d5nvnya26i2fvfg53sknh3y";
+  })
+  (fetchNuGet {
+    pname = "System.Diagnostics.FileVersionInfo";
+    version = "4.3.0";
+    sha256 = "094hx249lb3vb336q7dg3v257hbxvz2jnalj695l7cg5kxzqwai7";
+  })
+  (fetchNuGet {
+    pname = "System.Diagnostics.Process";
+    version = "4.3.0";
+    sha256 = "0g4prsbkygq8m21naqmcp70f24a1ksyix3dihb1r1f71lpi3cfj7";
+  })
+  (fetchNuGet {
+    pname = "System.Diagnostics.StackTrace";
+    version = "4.3.0";
+    sha256 = "0ash4h9k0m7xsm0yl79r0ixrdz369h7y922wipp5gladmlbvpyjd";
+  })
+  (fetchNuGet {
+    pname = "System.Diagnostics.Tools";
+    version = "4.0.1";
+    sha256 = "19cknvg07yhakcvpxg3cxa0bwadplin6kyxd8mpjjpwnp56nl85x";
+  })
+  (fetchNuGet {
+    pname = "System.Diagnostics.Tools";
+    version = "4.3.0";
+    sha256 = "0in3pic3s2ddyibi8cvgl102zmvp9r9mchh82ns9f0ms4basylw1";
+  })
+  (fetchNuGet {
+    pname = "System.Diagnostics.Tracing";
+    version = "4.3.0";
+    sha256 = "1m3bx6c2s958qligl67q7grkwfz3w53hpy7nc97mh6f7j5k168c4";
+  })
+  (fetchNuGet {
+    pname = "System.Dynamic.Runtime";
+    version = "4.0.11";
+    sha256 = "1pla2dx8gkidf7xkciig6nifdsb494axjvzvann8g2lp3dbqasm9";
+  })
+  (fetchNuGet {
+    pname = "System.Dynamic.Runtime";
+    version = "4.3.0";
+    sha256 = "1d951hrvrpndk7insiag80qxjbf2y0y39y8h5hnq9612ws661glk";
+  })
+  (fetchNuGet {
+    pname = "System.Globalization";
+    version = "4.0.11";
+    sha256 = "070c5jbas2v7smm660zaf1gh0489xanjqymkvafcs4f8cdrs1d5d";
+  })
+  (fetchNuGet {
+    pname = "System.Globalization";
+    version = "4.3.0";
+    sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki";
+  })
+  (fetchNuGet {
+    pname = "System.Globalization.Extensions";
+    version = "4.3.0";
+    sha256 = "02a5zfxavhv3jd437bsncbhd2fp1zv4gxzakp1an9l6kdq1mcqls";
+  })
+  (fetchNuGet {
+    pname = "System.IO";
+    version = "4.1.0";
+    sha256 = "1g0yb8p11vfd0kbkyzlfsbsp5z44lwsvyc0h3dpw6vqnbi035ajp";
+  })
+  (fetchNuGet {
+    pname = "System.IO";
+    version = "4.3.0";
+    sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f";
+  })
+  (fetchNuGet {
+    pname = "System.IO.Compression";
+    version = "4.3.0";
+    sha256 = "084zc82yi6yllgda0zkgl2ys48sypiswbiwrv7irb3r0ai1fp4vz";
+  })
+  (fetchNuGet {
+    pname = "System.IO.FileSystem";
+    version = "4.0.1";
+    sha256 = "0kgfpw6w4djqra3w5crrg8xivbanh1w9dh3qapb28q060wb9flp1";
+  })
+  (fetchNuGet {
+    pname = "System.IO.FileSystem";
+    version = "4.3.0";
+    sha256 = "0z2dfrbra9i6y16mm9v1v6k47f0fm617vlb7s5iybjjsz6g1ilmw";
+  })
+  (fetchNuGet {
+    pname = "System.IO.FileSystem.Primitives";
+    version = "4.0.1";
+    sha256 = "1s0mniajj3lvbyf7vfb5shp4ink5yibsx945k6lvxa96r8la1612";
+  })
+  (fetchNuGet {
+    pname = "System.IO.FileSystem.Primitives";
+    version = "4.3.0";
+    sha256 = "0j6ndgglcf4brg2lz4wzsh1av1gh8xrzdsn9f0yznskhqn1xzj9c";
+  })
+  (fetchNuGet {
+    pname = "System.Linq";
+    version = "4.1.0";
+    sha256 = "1ppg83svb39hj4hpp5k7kcryzrf3sfnm08vxd5sm2drrijsla2k5";
+  })
+  (fetchNuGet {
+    pname = "System.Linq";
+    version = "4.3.0";
+    sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7";
+  })
+  (fetchNuGet {
+    pname = "System.Linq.Expressions";
+    version = "4.1.0";
+    sha256 = "1gpdxl6ip06cnab7n3zlcg6mqp7kknf73s8wjinzi4p0apw82fpg";
+  })
+  (fetchNuGet {
+    pname = "System.Linq.Expressions";
+    version = "4.3.0";
+    sha256 = "0ky2nrcvh70rqq88m9a5yqabsl4fyd17bpr63iy2mbivjs2nyypv";
+  })
+  (fetchNuGet {
+    pname = "System.Management";
+    version = "4.5.0";
+    sha256 = "19z5x23n21xi94bgl531l9hrm64nyw9d5fpd7klfvr5xfsbh9jwr";
+  })
+  (fetchNuGet {
+    pname = "System.Memory";
+    version = "4.5.3";
+    sha256 = "0naqahm3wljxb5a911d37mwjqjdxv9l0b49p5dmfyijvni2ppy8a";
+  })
+  (fetchNuGet {
+    pname = "System.Numerics.Vectors";
+    version = "4.4.0";
+    sha256 = "0rdvma399070b0i46c4qq1h2yvjj3k013sqzkilz4bz5cwmx1rba";
+  })
+  (fetchNuGet {
+    pname = "System.ObjectModel";
+    version = "4.0.12";
+    sha256 = "1sybkfi60a4588xn34nd9a58png36i0xr4y4v4kqpg8wlvy5krrj";
+  })
+  (fetchNuGet {
+    pname = "System.Private.Uri";
+    version = "4.3.0";
+    sha256 = "04r1lkdnsznin0fj4ya1zikxiqr0h6r6a1ww2dsm60gqhdrf0mvx";
+  })
+  (fetchNuGet {
+    pname = "System.Reflection";
+    version = "4.1.0";
+    sha256 = "1js89429pfw79mxvbzp8p3q93il6rdff332hddhzi5wqglc4gml9";
+  })
+  (fetchNuGet {
+    pname = "System.Reflection";
+    version = "4.3.0";
+    sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m";
+  })
+  (fetchNuGet {
+    pname = "System.Reflection.Emit";
+    version = "4.0.1";
+    sha256 = "0ydqcsvh6smi41gyaakglnv252625hf29f7kywy2c70nhii2ylqp";
+  })
+  (fetchNuGet {
+    pname = "System.Reflection.Emit";
+    version = "4.3.0";
+    sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74";
+  })
+  (fetchNuGet {
+    pname = "System.Reflection.Emit.ILGeneration";
+    version = "4.0.1";
+    sha256 = "1pcd2ig6bg144y10w7yxgc9d22r7c7ww7qn1frdfwgxr24j9wvv0";
+  })
+  (fetchNuGet {
+    pname = "System.Reflection.Emit.ILGeneration";
+    version = "4.3.0";
+    sha256 = "0w1n67glpv8241vnpz1kl14sy7zlnw414aqwj4hcx5nd86f6994q";
+  })
+  (fetchNuGet {
+    pname = "System.Reflection.Emit.Lightweight";
+    version = "4.0.1";
+    sha256 = "1s4b043zdbx9k39lfhvsk68msv1nxbidhkq6nbm27q7sf8xcsnxr";
+  })
+  (fetchNuGet {
+    pname = "System.Reflection.Emit.Lightweight";
+    version = "4.3.0";
+    sha256 = "0ql7lcakycrvzgi9kxz1b3lljd990az1x6c4jsiwcacrvimpib5c";
+  })
+  (fetchNuGet {
+    pname = "System.Reflection.Extensions";
+    version = "4.0.1";
+    sha256 = "0m7wqwq0zqq9gbpiqvgk3sr92cbrw7cp3xn53xvw7zj6rz6fdirn";
+  })
+  (fetchNuGet {
+    pname = "System.Reflection.Extensions";
+    version = "4.3.0";
+    sha256 = "02bly8bdc98gs22lqsfx9xicblszr2yan7v2mmw3g7hy6miq5hwq";
+  })
+  (fetchNuGet {
+    pname = "System.Reflection.Metadata";
+    version = "1.6.0";
+    sha256 = "1wdbavrrkajy7qbdblpbpbalbdl48q3h34cchz24gvdgyrlf15r4";
+  })
+  (fetchNuGet {
+    pname = "System.Reflection.Primitives";
+    version = "4.0.1";
+    sha256 = "1bangaabhsl4k9fg8khn83wm6yial8ik1sza7401621jc6jrym28";
+  })
+  (fetchNuGet {
+    pname = "System.Reflection.Primitives";
+    version = "4.3.0";
+    sha256 = "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276";
+  })
+  (fetchNuGet {
+    pname = "System.Reflection.TypeExtensions";
+    version = "4.1.0";
+    sha256 = "1bjli8a7sc7jlxqgcagl9nh8axzfl11f4ld3rjqsyxc516iijij7";
+  })
+  (fetchNuGet {
+    pname = "System.Reflection.TypeExtensions";
+    version = "4.3.0";
+    sha256 = "0y2ssg08d817p0vdag98vn238gyrrynjdj4181hdg780sif3ykp1";
+  })
+  (fetchNuGet {
+    pname = "System.Resources.ResourceManager";
+    version = "4.0.1";
+    sha256 = "0b4i7mncaf8cnai85jv3wnw6hps140cxz8vylv2bik6wyzgvz7bi";
+  })
+  (fetchNuGet {
+    pname = "System.Resources.ResourceManager";
+    version = "4.3.0";
+    sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49";
+  })
+  (fetchNuGet {
+    pname = "System.Runtime";
+    version = "4.1.0";
+    sha256 = "02hdkgk13rvsd6r9yafbwzss8kr55wnj8d5c7xjnp8gqrwc8sn0m";
+  })
+  (fetchNuGet {
+    pname = "System.Runtime";
+    version = "4.3.0";
+    sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7";
+  })
+  (fetchNuGet {
+    pname = "System.Runtime.CompilerServices.Unsafe";
+    version = "4.5.2";
+    sha256 = "1vz4275fjij8inf31np78hw50al8nqkngk04p3xv5n4fcmf1grgi";
+  })
+  (fetchNuGet {
+    pname = "System.Runtime.Extensions";
+    version = "4.1.0";
+    sha256 = "0rw4rm4vsm3h3szxp9iijc3ksyviwsv6f63dng3vhqyg4vjdkc2z";
+  })
+  (fetchNuGet {
+    pname = "System.Runtime.Extensions";
+    version = "4.3.0";
+    sha256 = "1ykp3dnhwvm48nap8q23893hagf665k0kn3cbgsqpwzbijdcgc60";
+  })
+  (fetchNuGet {
+    pname = "System.Runtime.Handles";
+    version = "4.0.1";
+    sha256 = "1g0zrdi5508v49pfm3iii2hn6nm00bgvfpjq1zxknfjrxxa20r4g";
+  })
+  (fetchNuGet {
+    pname = "System.Runtime.Handles";
+    version = "4.3.0";
+    sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8";
+  })
+  (fetchNuGet {
+    pname = "System.Runtime.InteropServices";
+    version = "4.1.0";
+    sha256 = "01kxqppx3dr3b6b286xafqilv4s2n0gqvfgzfd4z943ga9i81is1";
+  })
+  (fetchNuGet {
+    pname = "System.Runtime.InteropServices";
+    version = "4.3.0";
+    sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j";
+  })
+  (fetchNuGet {
+    pname = "System.Runtime.InteropServices.RuntimeInformation";
+    version = "4.0.0";
+    sha256 = "0glmvarf3jz5xh22iy3w9v3wyragcm4hfdr17v90vs7vcrm7fgp6";
+  })
+  (fetchNuGet {
+    pname = "System.Runtime.InteropServices.RuntimeInformation";
+    version = "4.3.0";
+    sha256 = "0q18r1sh4vn7bvqgd6dmqlw5v28flbpj349mkdish2vjyvmnb2ii";
+  })
+  (fetchNuGet {
+    pname = "System.Runtime.Numerics";
+    version = "4.3.0";
+    sha256 = "19rav39sr5dky7afygh309qamqqmi9kcwvz3i0c5700v0c5cg61z";
+  })
+  (fetchNuGet {
+    pname = "System.Runtime.Serialization.Primitives";
+    version = "4.1.1";
+    sha256 = "042rfjixknlr6r10vx2pgf56yming8lkjikamg3g4v29ikk78h7k";
+  })
+  (fetchNuGet {
+    pname = "System.Security.AccessControl";
+    version = "4.5.0";
+    sha256 = "1wvwanz33fzzbnd2jalar0p0z3x0ba53vzx1kazlskp7pwyhlnq0";
+  })
+  (fetchNuGet {
+    pname = "System.Security.Cryptography.Algorithms";
+    version = "4.3.0";
+    sha256 = "03sq183pfl5kp7gkvq77myv7kbpdnq3y0xj7vi4q1kaw54sny0ml";
+  })
+  (fetchNuGet {
+    pname = "System.Security.Cryptography.Encoding";
+    version = "4.3.0";
+    sha256 = "1jr6w70igqn07k5zs1ph6xja97hxnb3mqbspdrff6cvssgrixs32";
+  })
+  (fetchNuGet {
+    pname = "System.Security.Cryptography.Primitives";
+    version = "4.3.0";
+    sha256 = "0pyzncsv48zwly3lw4f2dayqswcfvdwq2nz0dgwmi7fj3pn64wby";
+  })
+  (fetchNuGet {
+    pname = "System.Security.Cryptography.X509Certificates";
+    version = "4.3.0";
+    sha256 = "0valjcz5wksbvijylxijjxb1mp38mdhv03r533vnx1q3ikzdav9h";
+  })
+  (fetchNuGet {
+    pname = "System.Security.Principal.Windows";
+    version = "4.5.0";
+    sha256 = "0rmj89wsl5yzwh0kqjgx45vzf694v9p92r4x4q6yxldk1cv1hi86";
+  })
+  (fetchNuGet {
+    pname = "System.Text.Encoding";
+    version = "4.0.11";
+    sha256 = "1dyqv0hijg265dwxg6l7aiv74102d6xjiwplh2ar1ly6xfaa4iiw";
+  })
+  (fetchNuGet {
+    pname = "System.Text.Encoding";
+    version = "4.3.0";
+    sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr";
+  })
+  (fetchNuGet {
+    pname = "System.Text.Encoding.CodePages";
+    version = "4.3.0";
+    sha256 = "0lgxg1gn7pg7j0f942pfdc9q7wamzxsgq3ng248ikdasxz0iadkv";
+  })
+  (fetchNuGet {
+    pname = "System.Text.Encoding.Extensions";
+    version = "4.0.11";
+    sha256 = "08nsfrpiwsg9x5ml4xyl3zyvjfdi4mvbqf93kjdh11j4fwkznizs";
+  })
+  (fetchNuGet {
+    pname = "System.Text.Encoding.Extensions";
+    version = "4.3.0";
+    sha256 = "11q1y8hh5hrp5a3kw25cb6l00v5l5dvirkz8jr3sq00h1xgcgrxy";
+  })
+  (fetchNuGet {
+    pname = "System.Text.RegularExpressions";
+    version = "4.1.0";
+    sha256 = "1mw7vfkkyd04yn2fbhm38msk7dz2xwvib14ygjsb8dq2lcvr18y7";
+  })
+  (fetchNuGet {
+    pname = "System.Text.RegularExpressions";
+    version = "4.3.0";
+    sha256 = "1bgq51k7fwld0njylfn7qc5fmwrk2137gdq7djqdsw347paa9c2l";
+  })
+  (fetchNuGet {
+    pname = "System.Threading";
+    version = "4.0.11";
+    sha256 = "19x946h926bzvbsgj28csn46gak2crv2skpwsx80hbgazmkgb1ls";
+  })
+  (fetchNuGet {
+    pname = "System.Threading";
+    version = "4.3.0";
+    sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34";
+  })
+  (fetchNuGet {
+    pname = "System.Threading.Tasks";
+    version = "4.0.11";
+    sha256 = "0nr1r41rak82qfa5m0lhk9mp0k93bvfd7bbd9sdzwx9mb36g28p5";
+  })
+  (fetchNuGet {
+    pname = "System.Threading.Tasks";
+    version = "4.3.0";
+    sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7";
+  })
+  (fetchNuGet {
+    pname = "System.Threading.Tasks.Extensions";
+    version = "4.0.0";
+    sha256 = "1cb51z062mvc2i8blpzmpn9d9mm4y307xrwi65di8ri18cz5r1zr";
+  })
+  (fetchNuGet {
+    pname = "System.Threading.Tasks.Extensions";
+    version = "4.3.0";
+    sha256 = "1xxcx2xh8jin360yjwm4x4cf5y3a2bwpn2ygkfkwkicz7zk50s2z";
+  })
+  (fetchNuGet {
+    pname = "System.Threading.Tasks.Extensions";
+    version = "4.5.2";
+    sha256 = "1sh63dz0dymqcwmprp0nadm77b83vmm7lyllpv578c397bslb8hj";
+  })
+  (fetchNuGet {
+    pname = "System.Threading.Tasks.Parallel";
+    version = "4.3.0";
+    sha256 = "1rr3qa4hxwyj531s4nb3bwrxnxxwz617i0n9gh6x7nr7dd3ayzgh";
+  })
+  (fetchNuGet {
+    pname = "System.Threading.Thread";
+    version = "4.3.0";
+    sha256 = "0y2xiwdfcph7znm2ysxanrhbqqss6a3shi1z3c779pj2s523mjx4";
+  })
+  (fetchNuGet {
+    pname = "System.Threading.ThreadPool";
+    version = "4.3.0";
+    sha256 = "027s1f4sbx0y1xqw2irqn6x161lzj8qwvnh2gn78ciiczdv10vf1";
+  })
+  (fetchNuGet {
+    pname = "System.ValueTuple";
+    version = "4.5.0";
+    sha256 = "00k8ja51d0f9wrq4vv5z2jhq8hy31kac2rg0rv06prylcybzl8cy";
+  })
+  (fetchNuGet {
+    pname = "System.Xml.ReaderWriter";
+    version = "4.0.11";
+    sha256 = "0c6ky1jk5ada9m94wcadih98l6k1fvf6vi7vhn1msjixaha419l5";
+  })
+  (fetchNuGet {
+    pname = "System.Xml.ReaderWriter";
+    version = "4.3.0";
+    sha256 = "0c47yllxifzmh8gq6rq6l36zzvw4kjvlszkqa9wq3fr59n0hl3s1";
+  })
+  (fetchNuGet {
+    pname = "System.Xml.XDocument";
+    version = "4.0.11";
+    sha256 = "0n4lvpqzy9kc7qy1a4acwwd7b7pnvygv895az5640idl2y9zbz18";
+  })
+  (fetchNuGet {
+    pname = "System.Xml.XDocument";
+    version = "4.3.0";
+    sha256 = "08h8fm4l77n0nd4i4fk2386y809bfbwqb7ih9d7564ifcxr5ssxd";
+  })
+  (fetchNuGet {
+    pname = "System.Xml.XmlDocument";
+    version = "4.3.0";
+    sha256 = "0bmz1l06dihx52jxjr22dyv5mxv6pj4852lx68grjm7bivhrbfwi";
+  })
+  (fetchNuGet {
+    pname = "System.Xml.XPath";
+    version = "4.3.0";
+    sha256 = "1cv2m0p70774a0sd1zxc8fm8jk3i5zk2bla3riqvi8gsm0r4kpci";
+  })
+  (fetchNuGet {
+    pname = "System.Xml.XPath.XDocument";
+    version = "4.3.0";
+    sha256 = "1wxckyb7n1pi433xzz0qcwcbl1swpra64065mbwwi8dhdc4kiabn";
+  })
+  (fetchNuGet {
+    pname = "System.Xml.XPath.XmlDocument";
+    version = "4.3.0";
+    sha256 = "1h9lh7qkp0lff33z847sdfjj8yaz98ylbnkbxlnsbflhj9xyfqrm";
+  })
 ]
diff --git a/pkgs/development/python-modules/pythonocc-core/default.nix b/pkgs/development/python-modules/pythonocc-core/default.nix
index cedf05029c9ce..755834eecd32e 100644
--- a/pkgs/development/python-modules/pythonocc-core/default.nix
+++ b/pkgs/development/python-modules/pythonocc-core/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, stdenv
-, python
-, fetchFromGitHub
-, cmake
-, Cocoa
-, fontconfig
-, freetype
-, libGL
-, libGLU
-, libX11
-, libXext
-, libXi
-, libXmu
-, opencascade-occt
-, rapidjson
-, swig4
+{
+  lib,
+  stdenv,
+  python,
+  fetchFromGitHub,
+  cmake,
+  Cocoa,
+  fontconfig,
+  freetype,
+  libGL,
+  libGLU,
+  libX11,
+  libXext,
+  libXi,
+  libXmu,
+  opencascade-occt,
+  rapidjson,
+  swig,
 }:
 
 stdenv.mkDerivation rec {
@@ -34,12 +35,23 @@ stdenv.mkDerivation rec {
     --replace "/usr/X11R6/lib/libGLU.dylib" "${libGLU}/lib/libGLU.dylib"
   '';
 
-  nativeBuildInputs = [ cmake swig4 ];
+  nativeBuildInputs = [
+    cmake
+    swig
+  ];
   buildInputs = [
-    python opencascade-occt
-    freetype libGL libGLU libX11 libXext libXmu libXi
-    fontconfig rapidjson
-  ] ++ lib.optionals stdenv.isDarwin [ Cocoa ];
+    python
+    opencascade-occt
+    freetype
+    libGL
+    libGLU
+    libX11
+    libXext
+    libXmu
+    libXi
+    fontconfig
+    rapidjson
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ Cocoa ];
 
   cmakeFlags = [
     "-Wno-dev"
diff --git a/pkgs/development/python-modules/pythran/default.nix b/pkgs/development/python-modules/pythran/default.nix
index 3e62fa882cc9b..e74a9d62b210f 100644
--- a/pkgs/development/python-modules/pythran/default.nix
+++ b/pkgs/development/python-modules/pythran/default.nix
@@ -1,29 +1,29 @@
-{ lib
-, python
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, isPy3k
-, substituteAll
+{
+  lib,
+  python,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  substituteAll,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# native dependencies
-, openmp
-, xsimd
+  # native dependencies
+  openmp,
+  xsimd,
 
-# dependencies
-, ply
-, gast
-, numpy
-, beniget
+  # dependencies
+  ply,
+  gast,
+  numpy,
+  beniget,
 }:
 
 let
   inherit (python) stdenv;
-
-in buildPythonPackage rec {
+in
+buildPythonPackage rec {
   pname = "pythran";
   version = "0.15.0";
   pyproject = true;
@@ -31,15 +31,22 @@ in buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "serge-sans-paille";
     repo = "pythran";
-    rev = version;
+    rev = "refs/tags/${version}";
     hash = "sha256-TpD8YZnnv48PKYrUqR0/qvJG1XRbcMBcrkcERh6Q4q0=";
   };
 
   patches = [
+    (fetchpatch2 {
+      name = "bump-gast-to-0.6.0.patch";
+      url = "https://github.com/serge-sans-paille/pythran/commit/840a0e706ec39963aec6bcd1f118bf33177c20b4.patch";
+      hash = "sha256-FHGXWuAX/Nmn6uEfQgAXfUxIdApDwSfHHtOStxyme/0=";
+    })
     # Hardcode path to mp library
     (substituteAll {
       src = ./0001-hardcode-path-to-libgomp.patch;
-      gomp = "${if stdenv.cc.isClang then openmp else stdenv.cc.cc.lib}/lib/libgomp${stdenv.hostPlatform.extensions.sharedLibrary}";
+      gomp = "${
+        if stdenv.cc.isClang then openmp else stdenv.cc.cc.lib
+      }/lib/libgomp${stdenv.hostPlatform.extensions.sharedLibrary}";
     })
   ];
 
@@ -49,11 +56,9 @@ in buildPythonPackage rec {
     ln -s '${lib.getDev xsimd}'/include/xsimd pythran/
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     ply
     gast
     numpy
@@ -73,9 +78,8 @@ in buildPythonPackage rec {
   # Test suite is huge and has a circular dependency on scipy.
   doCheck = false;
 
-  disabled = !isPy3k;
-
   meta = {
+    changelog = "https://github.com/serge-sans-paille/pythran/blob/${src.rev}/Changelog";
     description = "Ahead of Time compiler for numeric kernels";
     homepage = "https://github.com/serge-sans-paille/pythran";
     license = lib.licenses.bsd3;
diff --git a/pkgs/development/python-modules/pytibber/default.nix b/pkgs/development/python-modules/pytibber/default.nix
index 83b1a73820e86..94810bfac05db 100644
--- a/pkgs/development/python-modules/pytibber/default.nix
+++ b/pkgs/development/python-modules/pytibber/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, gql
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gql,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pytibber";
-  version = "0.29.1";
+  version = "0.30.2";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -20,12 +21,10 @@ buildPythonPackage rec {
     owner = "Danielhiversen";
     repo = "pyTibber";
     rev = "refs/tags/${version}";
-    hash = "sha256-fKeNQifSCxsqR2mhK2w5kG669byYNNLkfxAYTUtfWE0=";
+    hash = "sha256-9Tnn68RxKwEruYEGo2pZQTQTlYnVMfa3MRzA55HlBRc=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     aiohttp
@@ -37,16 +36,12 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "test/test.py"
-  ];
+  pytestFlagsArray = [ "test/test.py" ];
 
   # Tests access network
   doCheck = false;
 
-  pythonImportsCheck = [
-    "tibber"
-  ];
+  pythonImportsCheck = [ "tibber" ];
 
   meta = with lib; {
     description = "Python library to communicate with Tibber";
diff --git a/pkgs/development/python-modules/pytidylib/default.nix b/pkgs/development/python-modules/pytidylib/default.nix
index e8d417f0cec59..7f5b2db40dd68 100644
--- a/pkgs/development/python-modules/pytidylib/default.nix
+++ b/pkgs/development/python-modules/pytidylib/default.nix
@@ -1,4 +1,11 @@
-{ lib, stdenv, buildPythonPackage, fetchPypi, unittestCheckHook, html-tidy }:
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  unittestCheckHook,
+  html-tidy,
+}:
 
 buildPythonPackage rec {
   pname = "pytidylib";
diff --git a/pkgs/development/python-modules/pytikz-allefeld/default.nix b/pkgs/development/python-modules/pytikz-allefeld/default.nix
index 9dd0bdb2bbe6b..9f78f9d2f9fa1 100644
--- a/pkgs/development/python-modules/pytikz-allefeld/default.nix
+++ b/pkgs/development/python-modules/pytikz-allefeld/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
-, setuptools
-, pymupdf
-, numpy
-, ipython
-, texlive
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  setuptools,
+  pymupdf,
+  numpy,
+  ipython,
+  texlive,
 }:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "pytikz-allefeld"; # "pytikz" on pypi is a different module
   version = "unstable-2022-11-01";
   pyproject = true;
@@ -24,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-G59UUkpjttJKNBN0MB/A9CftO8tO3nv8qlTxt3/fKHk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   dependencies = [
     pymupdf
@@ -52,9 +50,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/allefeld/pytikz";
-    description = "A Python interface to TikZ";
+    description = "Python interface to TikZ";
     license = licenses.gpl3;
     maintainers = with maintainers; [ pbsds ];
-    broken = stdenv.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/pytile/default.nix b/pkgs/development/python-modules/pytile/default.nix
index 73b084ec9d3d3..ab61021b10c31 100644
--- a/pkgs/development/python-modules/pytile/default.nix
+++ b/pkgs/development/python-modules/pytile/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, certifi
-, fetchFromGitHub
-, poetry-core
-, pytest-aiohttp
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  certifi,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-oHOeEaqkh+RjhpdQ5v1tFhaS6gUzl8UzDGnPLNRY90c=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -48,9 +47,7 @@ buildPythonPackage rec {
     "examples/"
   ];
 
-  pythonImportsCheck = [
-    "pytile"
-  ];
+  pythonImportsCheck = [ "pytile" ];
 
   __darwinAllowLocalNetworking = true;
 
diff --git a/pkgs/development/python-modules/pytimeparse/default.nix b/pkgs/development/python-modules/pytimeparse/default.nix
index ec7dac91c12a6..f7d3934384ce7 100644
--- a/pkgs/development/python-modules/pytimeparse/default.nix
+++ b/pkgs/development/python-modules/pytimeparse/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pynose
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,23 +19,18 @@ buildPythonPackage rec {
     hash = "sha256-6GE2R3vpJNfmcGRqmFYZV+jKcwjUSEHiH13ep1dVago=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pynose
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+  pytestFlagsArray = [ "pytimeparse/tests/testtimeparse.py" ];
 
-  pythonImportsCheck = [
-    "pytimeparse"
-  ];
+  pythonImportsCheck = [ "pytimeparse" ];
 
   meta = with lib; {
     description = "Library to parse various kinds of time expressions";
     homepage = "https://github.com/wroberts/pytimeparse";
     changelog = "https://github.com/wroberts/pytimeparse/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ vrthra ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytimeparse2/default.nix b/pkgs/development/python-modules/pytimeparse2/default.nix
index b35202e6fd4b1..75d1ff0f53fe9 100644
--- a/pkgs/development/python-modules/pytimeparse2/default.nix
+++ b/pkgs/development/python-modules/pytimeparse2/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchFromGitHub, buildPythonPackage, dateutils }:
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  dateutils,
+}:
 
 buildPythonPackage rec {
   pname = "pytimeparse2";
@@ -25,7 +30,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "pytimeparse2" ];
 
   meta = with lib; {
-    description = "A pytimeparse based project with the aim of optimizing functionality and providing stable support";
+    description = "Pytimeparse based project with the aim of optimizing functionality and providing stable support";
     homepage = "https://github.com/onegreyonewhite/pytimeparse2";
     license = licenses.mit;
     maintainers = with maintainers; [ gador ];
diff --git a/pkgs/development/python-modules/pytlv/default.nix b/pkgs/development/python-modules/pytlv/default.nix
index d4381f9044236..05e002a412c14 100644
--- a/pkgs/development/python-modules/pytlv/default.nix
+++ b/pkgs/development/python-modules/pytlv/default.nix
@@ -1,8 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, poetry-core
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-btxZ0oQzn1ZpwXihHlg6CduLh8nkerLV7SoFyXzJjVY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   pythonImportsCheck = [ "pytlv" ];
 
@@ -25,6 +23,6 @@ buildPythonPackage rec {
     description = "TLV (tag length lavue) data parser, especially useful for EMV tags parsing";
     homepage = "https://github.com/timgabets/pytlv";
     license = licenses.lgpl2;
-    maintainers = with maintainers; [ flokli janik ];
+    maintainers = with maintainers; [ flokli ];
   };
 }
diff --git a/pkgs/development/python-modules/pytm/default.nix b/pkgs/development/python-modules/pytm/default.nix
index 8d3d7c9af8389..dd22bbf5b88ea 100644
--- a/pkgs/development/python-modules/pytm/default.nix
+++ b/pkgs/development/python-modules/pytm/default.nix
@@ -1,11 +1,12 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, pythonOlder
-, pydal
-, graphviz
-, pandoc
-, plantuml
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pythonOlder,
+  pydal,
+  graphviz,
+  pandoc,
+  plantuml,
 }:
 
 buildPythonPackage rec {
@@ -21,14 +22,22 @@ buildPythonPackage rec {
     sha256 = "sha256-MseV1ucDCzSM36zx04g9v5euDX0t74KqUSB4+brHzt8=";
   };
 
-  propagatedBuildInputs = [ pydal graphviz pandoc plantuml ];
+  propagatedBuildInputs = [
+    pydal
+    graphviz
+    pandoc
+    plantuml
+  ];
 
   pythonImportsCheck = [ "pytm" ];
 
   meta = with lib; {
-    description = "A Pythonic framework for threat modeling";
+    description = "Pythonic framework for threat modeling";
     homepage = "https://owasp.org/www-project-pytm/";
-    license = with licenses; [ capec mit ];
+    license = with licenses; [
+      capec
+      mit
+    ];
     maintainers = with maintainers; [ wamserma ];
   };
 }
diff --git a/pkgs/development/python-modules/pytmx/default.nix b/pkgs/development/python-modules/pytmx/default.nix
index 177d255a13b59..77e3656e2f29d 100644
--- a/pkgs/development/python-modules/pytmx/default.nix
+++ b/pkgs/development/python-modules/pytmx/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pygame
-, pyglet
-, pysdl2
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pygame,
+  pyglet,
+  pysdl2,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -35,9 +36,7 @@ buildPythonPackage rec {
     "pytmx.util_pysdl2"
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # AssertionError on the property name
diff --git a/pkgs/development/python-modules/pytomlpp/default.nix b/pkgs/development/python-modules/pytomlpp/default.nix
index eb25af8282782..98b20b6ffc460 100644
--- a/pkgs/development/python-modules/pytomlpp/default.nix
+++ b/pkgs/development/python-modules/pytomlpp/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pybind11
-, pytestCheckHook
-, python-dateutil
-, doxygen
-, python
-, pelican
-, matplotlib
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pybind11,
+  pytestCheckHook,
+  python-dateutil,
+  doxygen,
+  python,
+  pelican,
+  matplotlib,
 }:
 
 buildPythonPackage rec {
@@ -54,7 +55,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "pytomlpp" ];
 
   meta = with lib; {
-    description = "A python wrapper for tomlplusplus";
+    description = "Python wrapper for tomlplusplus";
     homepage = "https://github.com/bobfang1992/pytomlpp";
     license = licenses.mit;
     maintainers = with maintainers; [ evils ];
diff --git a/pkgs/development/python-modules/pytomorrowio/default.nix b/pkgs/development/python-modules/pytomorrowio/default.nix
index 83d5af50c96fc..b749a805eb27c 100644
--- a/pkgs/development/python-modules/pytomorrowio/default.nix
+++ b/pkgs/development/python-modules/pytomorrowio/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, aiohttp
-, pytest-aiohttp
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  aiohttp,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-ZCA+GYuZuRgc4Pi9Bcg4zthOnkmQ+/IddFMkR0WYfKk=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   nativeCheckInputs = [
     pytest-aiohttp
@@ -30,9 +29,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pytomorrowio"
-  ];
+  pythonImportsCheck = [ "pytomorrowio" ];
 
   meta = {
     description = "Async Python package to access the Tomorrow.io API";
diff --git a/pkgs/development/python-modules/pytoolconfig/default.nix b/pkgs/development/python-modules/pytoolconfig/default.nix
index 1ba80dae80371..bec278f08e6f6 100644
--- a/pkgs/development/python-modules/pytoolconfig/default.nix
+++ b/pkgs/development/python-modules/pytoolconfig/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, docutils
-, fetchFromGitHub
-, packaging
-, pdm-backend
-, platformdirs
-, pydantic
-, pytestCheckHook
-, pythonOlder
-, sphinx
-, sphinx-autodoc-typehints
-, sphinx-rtd-theme
-, sphinxHook
-, tabulate
-, tomli
+{
+  lib,
+  buildPythonPackage,
+  docutils,
+  fetchFromGitHub,
+  packaging,
+  pdm-backend,
+  platformdirs,
+  pydantic,
+  pytestCheckHook,
+  pythonOlder,
+  sphinx,
+  sphinx-autodoc-typehints,
+  sphinx-rtd-theme,
+  sphinxHook,
+  tabulate,
+  tomli,
 }:
 
 buildPythonPackage rec {
@@ -47,28 +48,18 @@ buildPythonPackage rec {
     sphinxHook
   ] ++ passthru.optional-dependencies.doc;
 
-  propagatedBuildInputs = [
-    packaging
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  propagatedBuildInputs = [ packaging ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   passthru.optional-dependencies = {
-    validation = [
-      pydantic
-    ];
-    global = [
-      platformdirs
-    ];
+    validation = [ pydantic ];
+    global = [ platformdirs ];
     doc = [
       sphinx
       tabulate
     ];
   };
 
-  pythonImportsCheck = [
-    "pytoolconfig"
-  ];
+  pythonImportsCheck = [ "pytoolconfig" ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -79,6 +70,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/bagel897/pytoolconfig";
     changelog = "https://github.com/bagel897/pytoolconfig/releases/tag/v${version}";
     license = licenses.lgpl3Plus;
-    maintainers = with maintainers; [ fab hexa ];
+    maintainers = with maintainers; [
+      fab
+      hexa
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pytools/default.nix b/pkgs/development/python-modules/pytools/default.nix
index 7689e40c5b8e8..6f276f104f9e9 100644
--- a/pkgs/development/python-modules/pytools/default.nix
+++ b/pkgs/development/python-modules/pytools/default.nix
@@ -1,36 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, decorator
-, numpy
-, platformdirs
-, typing-extensions
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  decorator,
+  numpy,
+  platformdirs,
+  typing-extensions,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pytools";
-  version = "2024.1.1";
+  version = "2024.1.6";
   format = "setuptools";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-LIjt+pkMjjJRZ8N2WfseEKPBEz3691K719hFZAK43P8=";
+    hash = "sha256-u9t1BrCWakShd8XlVWdb7OHmXhW7sRFPNwsiPgaTIrk=";
   };
 
   propagatedBuildInputs = [
     decorator
     numpy
     platformdirs
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ typing-extensions ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [
     "pytools"
@@ -40,7 +37,7 @@ buildPythonPackage rec {
 
   meta = {
     homepage = "https://github.com/inducer/pytools/";
-    description = "Miscellaneous Python lifesavers.";
+    description = "Miscellaneous Python lifesavers";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ artuuge ];
   };
diff --git a/pkgs/development/python-modules/pytorch-lightning/default.nix b/pkgs/development/python-modules/pytorch-lightning/default.nix
index f7a50ce337fcd..b23ea7188d10c 100644
--- a/pkgs/development/python-modules/pytorch-lightning/default.nix
+++ b/pkgs/development/python-modules/pytorch-lightning/default.nix
@@ -1,52 +1,58 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, fsspec
-, lightning-utilities
-, numpy
-, packaging
-, pyyaml
-, tensorboardx
-, torch
-, torchmetrics
-, tqdm
-, traitlets
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# tests
-, psutil
-, pytestCheckHook
+  # build-system
+  setuptools,
+
+  # dependencies
+  fsspec,
+  lightning-utilities,
+  numpy,
+  packaging,
+  pyyaml,
+  tensorboardx,
+  torch,
+  torchmetrics,
+  tqdm,
+  traitlets,
+
+  # tests
+  psutil,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pytorch-lightning";
-  version = "2.2.1";
-  format = "pyproject";
+  version = "2.4.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "Lightning-AI";
     repo = "pytorch-lightning";
     rev = "refs/tags/${version}";
-    hash = "sha256-H2gbVCvGKbeHZVlvz6SmKI8Gzw649DxcwYgfGcehsmg=";
+    hash = "sha256-FngD3nYTGVEjS1VrXAVps2/B8VlS7BZMDAsmIDtAyW0=";
   };
 
   preConfigure = ''
     export PACKAGE_NAME=pytorch
- '';
+  '';
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     fsspec
+    lightning-utilities
     numpy
     packaging
     pyyaml
     tensorboardx
     torch
-    lightning-utilities
     torchmetrics
     tqdm
     traitlets
-  ]
-  ++ fsspec.optional-dependencies.http;
+  ] ++ fsspec.optional-dependencies.http;
 
   nativeCheckInputs = [
     psutil
@@ -57,14 +63,13 @@ buildPythonPackage rec {
   # models, which doesn't work in the sandbox.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pytorch_lightning"
-  ];
+  pythonImportsCheck = [ "pytorch_lightning" ];
 
-  meta = with lib; {
+  meta = {
     description = "Lightweight PyTorch wrapper for machine learning researchers";
-    homepage = "https://pytorch-lightning.readthedocs.io";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ tbenst ];
+    homepage = "https://github.com/Lightning-AI/pytorch-lightning";
+    changelog = "https://github.com/Lightning-AI/pytorch-lightning/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ tbenst ];
   };
 }
diff --git a/pkgs/development/python-modules/pytorch-metric-learning/default.nix b/pkgs/development/python-modules/pytorch-metric-learning/default.nix
index a1d1f7f38a2ca..19678c01938ef 100644
--- a/pkgs/development/python-modules/pytorch-metric-learning/default.nix
+++ b/pkgs/development/python-modules/pytorch-metric-learning/default.nix
@@ -1,21 +1,34 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy27
-, numpy
-, scikit-learn
-, pytestCheckHook
-, torch
-, torchvision
-, tqdm
-, faiss
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  config,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  numpy,
+  scikit-learn,
+  torch,
+  tqdm,
+
+  # optional-dependencies
+  faiss,
+  tensorboard,
+
+  # tests
+  cudaSupport ? config.cudaSupport,
+  pytestCheckHook,
+  torchvision
 }:
 
 buildPythonPackage rec {
-  pname   = "pytorch-metric-learning";
-  version = "2.5.0";
-  format = "setuptools";
+  pname = "pytorch-metric-learning";
+  version = "2.6.0";
+  pyproject = true;
 
   disabled = isPy27;
 
@@ -23,17 +36,33 @@ buildPythonPackage rec {
     owner = "KevinMusgrave";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-1y7VCnzgwFOMeMloVdYyszNhf/zZlBJUjuF4qgA5c0A=";
+    hash = "sha256-xlTqUUF+tUIbULd1B8XR18Kxd7kl2TRKdbp0GoAfi4g=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     numpy
     torch
     scikit-learn
-    torchvision
     tqdm
   ];
 
+  optional-dependencies = {
+    with-hooks = [
+      # TODO: record-keeper
+      faiss
+      tensorboard
+    ];
+    with-hooks-cpu = [
+      # TODO: record-keeper
+      faiss
+      tensorboard
+    ];
+  };
+
   preCheck = ''
     export HOME=$TMP
     export TEST_DEVICE=cpu
@@ -42,25 +71,33 @@ buildPythonPackage rec {
 
   # package only requires `unittest`, but use `pytest` to exclude tests
   nativeCheckInputs = [
-    faiss
     pytestCheckHook
-  ];
+    torchvision
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
   disabledTests = [
-    # TypeError: setup() missing 1 required positional argument: 'world_size'
-    "TestDistributedLossWrapper"
-    # require network access:
-    "TestInference"
-    "test_get_nearest_neighbors"
+    # network access
     "test_tuplestoweights_sampler"
-    "test_untrained_indexer"
     "test_metric_loss_only"
-    "test_pca"
-    # flaky
-    "test_distributed_classifier_loss_and_miner"
-  ] ++ lib.optionals (stdenv.isLinux && stdenv.isAarch64) [
-    # RuntimeError: DataLoader worker (pid(s) <...>) exited unexpectedly
+    "test_add_to_indexer"
+    "test_get_nearest_neighbors"
+    "test_list_of_text"
+    "test_untrained_indexer"
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
+    # AttributeError: module 'torch.distributed' has no attribute 'init_process_group'
+    "test_single_proc"
+  ] ++ lib.optionals cudaSupport [
+    # crashes with SIGBART
+    "test_accuracy_calculator_and_faiss_with_torch_and_numpy"
+    "test_accuracy_calculator_large_k"
+    "test_custom_knn"
     "test_global_embedding_space_tester"
+    "test_global_two_stream_embedding_space_tester"
+    "test_index_type"
+    "test_k_warning"
+    "test_many_tied_distances"
+    "test_query_within_reference"
+    "test_tied_distances"
     "test_with_same_parent_label_tester"
   ];
 
diff --git a/pkgs/development/python-modules/pytorch-msssim/default.nix b/pkgs/development/python-modules/pytorch-msssim/default.nix
index 371ae7514aeb0..a75aa6eb5b183 100644
--- a/pkgs/development/python-modules/pytorch-msssim/default.nix
+++ b/pkgs/development/python-modules/pytorch-msssim/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, torch
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  torch,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    torch
-  ];
+  propagatedBuildInputs = [ torch ];
 
   pythonImportsCheck = [ "pytorch_msssim" ];
 
diff --git a/pkgs/development/python-modules/pytorch-pfn-extras/default.nix b/pkgs/development/python-modules/pytorch-pfn-extras/default.nix
index 21da795609d9e..60d03910bcfb4 100644
--- a/pkgs/development/python-modules/pytorch-pfn-extras/default.nix
+++ b/pkgs/development/python-modules/pytorch-pfn-extras/default.nix
@@ -1,89 +1,121 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, lib
-, numpy
-, onnx
-, packaging
-, pytestCheckHook
-, pythonAtLeast
-, setuptools
-, stdenv
-, torch
-, torchvision
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  numpy,
+  packaging,
+  torch,
+  typing-extensions,
+
+  # tests
+  onnx,
+  pytestCheckHook,
+  torchvision,
+
+  pythonAtLeast,
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "pytorch-pfn-extras";
-  version = "0.7.6";
+  version = "0.7.7";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pfnet";
     repo = "pytorch-pfn-extras";
     rev = "refs/tags/v${version}";
-    hash = "sha256-vSon/0GxQfaRtSPsQbYAvE3s/F0HEN59VpzE3w1PnVE=";
+    hash = "sha256-0+ltkm7OH18hlpHYyZCmy1rRleF52IM2BjLoW44tJUY=";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "relax-setuptools.patch";
-      url = "https://github.com/pfnet/pytorch-pfn-extras/commit/96abe38c4baa6a144d604bdd4744c55627e55440.patch";
-      hash = "sha256-85UDGcgJyQS5gINbgpNM58b3XJGvf+ArtGhwJ5EXdhk=";
-    })
-  ];
+  build-system = [ setuptools ];
 
-  build-system = [
-    setuptools
+  dependencies = [
+    numpy
+    packaging
+    torch
+    typing-extensions
   ];
 
-  dependencies = [ numpy packaging torch typing-extensions ];
-
-  nativeCheckInputs = [ onnx pytestCheckHook torchvision ];
+  nativeCheckInputs = [
+    onnx
+    pytestCheckHook
+    torchvision
+  ];
 
   pytestFlagsArray = [
     # Requires CUDA access which is not possible in the nix environment.
     "-m 'not gpu and not mpi'"
     "-Wignore::DeprecationWarning"
+
+    # FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly...
+    "-Wignore::FutureWarning"
   ];
 
   pythonImportsCheck = [ "pytorch_pfn_extras" ];
 
-  disabledTestPaths = [
-    # Requires optuna which is currently (2022-02-16) marked as broken.
-    "tests/pytorch_pfn_extras_tests/test_config_types.py"
-
-    # requires onnxruntime which was removed because of poor maintainability
-    # See https://github.com/NixOS/nixpkgs/pull/105951 https://github.com/NixOS/nixpkgs/pull/155058
-    "tests/pytorch_pfn_extras_tests/onnx_tests/test_annotate.py"
-    "tests/pytorch_pfn_extras_tests/onnx_tests/test_as_output.py"
-    "tests/pytorch_pfn_extras_tests/onnx_tests/test_export.py"
-    "tests/pytorch_pfn_extras_tests/onnx_tests/test_export_testcase.py"
-    "tests/pytorch_pfn_extras_tests/onnx_tests/test_lax.py"
-    "tests/pytorch_pfn_extras_tests/onnx_tests/test_load_model.py"
-    "tests/pytorch_pfn_extras_tests/onnx_tests/test_torchvision.py"
-    "tests/pytorch_pfn_extras_tests/onnx_tests/utils.py"
-
-    # RuntimeError: No Op registered for Gradient with domain_version of 9
-    "tests/pytorch_pfn_extras_tests/onnx_tests/test_grad.py"
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    # RuntimeError: Dynamo is not supported on Python 3.12+
-    "tests/pytorch_pfn_extras_tests/dynamo_tests/test_compile.py"
-    "tests/pytorch_pfn_extras_tests/test_ops/test_register.py"
-  ] ++ lib.optionals (stdenv.hostPlatform.isDarwin) [
-    # torch.distributed is not available on darwin
-    "tests/pytorch_pfn_extras_tests/training_tests/extensions_tests/test_sharded_snapshot.py"
-  ] ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
-    # RuntimeError: internal error
-    # convolution (e.g. F.conv3d) causes runtime error
-    "tests/pytorch_pfn_extras_tests/nn_tests/modules_tests/test_lazy_conv.py"
-  ];
+  disabledTests =
+    [
+      # AssertionError: assert 4 == 0
+      # where 4 = <MagicMock id='140733587469184'>.call_count
+      "test_lr_scheduler_wait_for_first_optimizer_step"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin) [
+      # torch.distributed is not available on darwin
+      "test_create_distributed_evaluator"
+      "test_distributed_evaluation"
+      "test_distributed_evaluator_progress_bar"
+    ];
+
+  disabledTestPaths =
+    [
+      # Requires optuna which is currently (2022-02-16) marked as broken.
+      "tests/pytorch_pfn_extras_tests/test_config_types.py"
+
+      # requires onnxruntime which was removed because of poor maintainability
+      # See https://github.com/NixOS/nixpkgs/pull/105951 https://github.com/NixOS/nixpkgs/pull/155058
+      "tests/pytorch_pfn_extras_tests/onnx_tests/test_annotate.py"
+      "tests/pytorch_pfn_extras_tests/onnx_tests/test_as_output.py"
+      "tests/pytorch_pfn_extras_tests/onnx_tests/test_export.py"
+      "tests/pytorch_pfn_extras_tests/onnx_tests/test_export_testcase.py"
+      "tests/pytorch_pfn_extras_tests/onnx_tests/test_lax.py"
+      "tests/pytorch_pfn_extras_tests/onnx_tests/test_load_model.py"
+      "tests/pytorch_pfn_extras_tests/onnx_tests/test_torchvision.py"
+      "tests/pytorch_pfn_extras_tests/onnx_tests/utils.py"
+
+      # RuntimeError: No Op registered for Gradient with domain_version of 9
+      "tests/pytorch_pfn_extras_tests/onnx_tests/test_grad.py"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      # RuntimeError: Dynamo is not supported on Python 3.12+
+      "tests/pytorch_pfn_extras_tests/dynamo_tests/test_compile.py"
+      "tests/pytorch_pfn_extras_tests/test_ops/test_register.py"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin) [
+      # torch.distributed is not available on darwin
+      "tests/pytorch_pfn_extras_tests/distributed_tests/test_distributed_validation_sampler.py"
+      "tests/pytorch_pfn_extras_tests/nn_tests/parallel_tests/test_distributed.py"
+      "tests/pytorch_pfn_extras_tests/profiler_tests/test_record.py"
+      "tests/pytorch_pfn_extras_tests/profiler_tests/test_time_summary.py"
+      "tests/pytorch_pfn_extras_tests/training_tests/extensions_tests/test_accumulate.py"
+      "tests/pytorch_pfn_extras_tests/training_tests/extensions_tests/test_sharded_snapshot.py"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
+      # RuntimeError: internal error
+      # convolution (e.g. F.conv3d) causes runtime error
+      "tests/pytorch_pfn_extras_tests/nn_tests/modules_tests/test_lazy_conv.py"
+    ];
 
-  meta = with lib; {
+  meta = {
     description = "Supplementary components to accelerate research and development in PyTorch";
     homepage = "https://github.com/pfnet/pytorch-pfn-extras";
-    license = licenses.mit;
-    maintainers = with maintainers; [ samuela ];
+    changelog = "https://github.com/pfnet/pytorch-pfn-extras/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ samuela ];
   };
 }
diff --git a/pkgs/development/python-modules/pytouchlinesl/default.nix b/pkgs/development/python-modules/pytouchlinesl/default.nix
new file mode 100644
index 0000000000000..3a6e0db6b04d9
--- /dev/null
+++ b/pkgs/development/python-modules/pytouchlinesl/default.nix
@@ -0,0 +1,48 @@
+{
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pydantic,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "pytouchlinesl";
+  version = "0.1.5";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "jnsgruk";
+    repo = "pytouchlinesl";
+    rev = "refs/tags/${version}";
+    hash = "sha256-kdLMuxA1Ig85mH7s9rlmVjEsItXxRlDA1JTFasnJogg=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    aiohttp
+    pydantic
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-asyncio
+  ];
+
+  pythonImportsCheck = [ "pytouchlinesl" ];
+
+  meta = {
+    description = "A Python API client for Roth's TouchlineSL API";
+    homepage = "https://github.com/jnsgruk/pytouchlinesl";
+    changelog = "https://github.com/jnsgruk/pytouchlinesl/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ jnsgruk ];
+  };
+}
diff --git a/pkgs/development/python-modules/pytraccar/default.nix b/pkgs/development/python-modules/pytraccar/default.nix
index 3af3cb33e96d7..c26ee031b8873 100644
--- a/pkgs/development/python-modules/pytraccar/default.nix
+++ b/pkgs/development/python-modules/pytraccar/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pytest-asyncio
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pytest-asyncio,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,13 +23,9 @@ buildPythonPackage rec {
     hash = "sha256-WTRqYw66iD4bbb1aWJfBI67+DtE1FE4oiuUKpfVqypE=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # https://github.com/ludeeus/pytraccar/issues/31
   doCheck = lib.versionOlder aiohttp.version "3.9.0";
@@ -38,9 +35,7 @@ buildPythonPackage rec {
     pytest-asyncio
   ];
 
-  pytestFlagsArray = [
-    "--asyncio-mode=auto"
-  ];
+  pytestFlagsArray = [ "--asyncio-mode=auto" ];
 
   postPatch = ''
     # Upstream doesn't set version in the repo
@@ -48,9 +43,7 @@ buildPythonPackage rec {
       --replace 'version = "0"' 'version = "${version}"'
   '';
 
-  pythonImportsCheck = [
-    "pytraccar"
-  ];
+  pythonImportsCheck = [ "pytraccar" ];
 
   meta = with lib; {
     description = "Python library to handle device information from Traccar";
diff --git a/pkgs/development/python-modules/pytradfri/default.nix b/pkgs/development/python-modules/pytradfri/default.nix
index b4de887f54559..9e710823127aa 100644
--- a/pkgs/development/python-modules/pytradfri/default.nix
+++ b/pkgs/development/python-modules/pytradfri/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, aiocoap
-, dtlssocket
-, pydantic
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  aiocoap,
+  dtlssocket,
+  pydantic,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-CWv3ebDulZuiFP+nJ2Xr7U/HTDFTqA9VYC0USLkpWR0=";
   };
 
-  propagatedBuildInputs = [
-    pydantic
-  ];
+  propagatedBuildInputs = [ pydantic ];
 
   passthru.optional-dependencies = {
     async = [
@@ -33,14 +32,9 @@ buildPythonPackage rec {
     ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ]
-  ++ passthru.optional-dependencies.async;
+  nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.async;
 
-  pythonImportsCheck = [
-    "pytradfri"
-  ];
+  pythonImportsCheck = [ "pytradfri" ];
 
   meta = with lib; {
     description = "Python package to communicate with the IKEA Trådfri ZigBee Gateway";
diff --git a/pkgs/development/python-modules/pytrafikverket/default.nix b/pkgs/development/python-modules/pytrafikverket/default.nix
index d880602a51238..0af8bb7f59a40 100644
--- a/pkgs/development/python-modules/pytrafikverket/default.nix
+++ b/pkgs/development/python-modules/pytrafikverket/default.nix
@@ -1,44 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, aiohttp
-, lxml
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  aiohttp,
+  aiozoneinfo,
+  lxml,
+  pythonOlder,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
   pname = "pytrafikverket";
-  version = "0.3.10";
+  version = "1.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-B3K9wDFj7uSgs6BsJUnD6r2JVcH7u7UrbVXUTMGqmQE=";
+    hash = "sha256-qvJbAE5C19RSg5p823sCJ/dWIHBSD4kJrw/p8PF2HkI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
+    aiozoneinfo
     lxml
   ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pytrafikverket"
-  ];
+  pythonImportsCheck = [ "pytrafikverket" ];
 
   meta = with lib; {
     description = "Library to get data from the Swedish Transport Administration (Trafikverket) API";
-    homepage = "https://github.com/endor-force/pytrafikverket";
-    changelog = "https://github.com/endor-force/pytrafikverket/releases/tag/${version}";
+    homepage = "https://github.com/gjohansson-ST/pytrafikverket";
+    changelog = "https://github.com/gjohansson-ST/pytrafikverket/releases/tag/v${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/pytransportnsw/default.nix b/pkgs/development/python-modules/pytransportnsw/default.nix
index 67c0749df56bd..db65727bf85d8 100644
--- a/pkgs/development/python-modules/pytransportnsw/default.nix
+++ b/pkgs/development/python-modules/pytransportnsw/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     sha256 = "00jklgjirmc58hiaqqc2n2rgixvx91bgrd6lv6hv28k51kid10f3";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/pytransportnswv2/default.nix b/pkgs/development/python-modules/pytransportnswv2/default.nix
index a2cf2afb7087f..e2e8c0c81e248 100644
--- a/pkgs/development/python-modules/pytransportnswv2/default.nix
+++ b/pkgs/development/python-modules/pytransportnswv2/default.nix
@@ -1,25 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, gtfs-realtime-bindings
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  gtfs-realtime-bindings,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pytransportnswv2";
-  version = "0.2.4";
-  format = "setuptools";
+  version = "0.4.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    pname = "PyTransportNSWv2";
-    inherit version;
-    sha256 = "129rrqckqgfrwdx0b83dqphcv55cxs5i8jl1ascia7rpzjn109ah";
+    inherit pname version;
+    hash = "sha256-LbFBzC7kGa2qz+XQZDmjhE2FhmScesx5jtLtkV0hlg8=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     gtfs-realtime-bindings
     requests
   ];
@@ -32,7 +35,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python module to access Transport NSW information";
     homepage = "https://github.com/andystewart999/TransportNSW";
-    license = with licenses; [ gpl3Only ];
+    license = licenses.gpl3Only;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/pytrends/default.nix b/pkgs/development/python-modules/pytrends/default.nix
index d52436348ad74..c9e20859086ba 100644
--- a/pkgs/development/python-modules/pytrends/default.nix
+++ b/pkgs/development/python-modules/pytrends/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, setuptools-scm
-, wheel
-, requests
-, lxml
-, pandas
-, pytestCheckHook
-, pytest-recording
-, responses
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  requests,
+  lxml,
+  pandas,
+  pytestCheckHook,
+  pytest-recording,
+  responses,
 }:
 
 buildPythonPackage rec {
@@ -33,7 +34,11 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [ requests lxml pandas ];
+  propagatedBuildInputs = [
+    requests
+    lxml
+    pandas
+  ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -41,9 +46,7 @@ buildPythonPackage rec {
     responses
   ];
 
-  pytestFlagsArray = [
-    "--block-network"
-  ];
+  pytestFlagsArray = [ "--block-network" ];
 
   pythonImportsCheck = [ "pytrends" ];
 
@@ -53,5 +56,4 @@ buildPythonPackage rec {
     license = [ licenses.asl20 ];
     maintainers = [ maintainers.mmahut ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pytricia/default.nix b/pkgs/development/python-modules/pytricia/default.nix
index 88bbce684fca7..f906b58fe0af4 100644
--- a/pkgs/development/python-modules/pytricia/default.nix
+++ b/pkgs/development/python-modules/pytricia/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
@@ -16,7 +17,7 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "A library for fast IP address lookup in Python";
+    description = "Library for fast IP address lookup in Python";
     homepage = "https://github.com/jsommers/pytricia";
     license = with licenses; [ lgpl3Plus ];
     maintainers = with maintainers; [ mkg ];
diff --git a/pkgs/development/python-modules/pytrydan/default.nix b/pkgs/development/python-modules/pytrydan/default.nix
index 5a191bf800fe7..90de831555624 100644
--- a/pkgs/development/python-modules/pytrydan/default.nix
+++ b/pkgs/development/python-modules/pytrydan/default.nix
@@ -1,22 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, httpx
-, orjson
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, respx
-, rich
-, syrupy
-, tenacity
-, typer
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpx,
+  orjson,
+  poetry-core,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytestCheckHook,
+  pythonOlder,
+  respx,
+  rich,
+  syrupy,
+  tenacity,
+  typer,
 }:
 
 buildPythonPackage rec {
   pname = "pytrydan";
-  version = "0.4.0";
+  version = "0.8.1";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -25,19 +27,14 @@ buildPythonPackage rec {
     owner = "dgomes";
     repo = "pytrydan";
     rev = "refs/tags/v${version}";
-    hash = "sha256-9PyRICtZ+0Ezinu28oFgFOSnOyCmD7zZbdc/chN+sCo=";
+    hash = "sha256-OHC+Ul64BYCsgoFDxI1hPjBGkd/pQ0j0c9Pt5lWg1E0=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace " --cov=pytrydan --cov-report=term-missing:skip-covered" ""
-  '';
+  pythonRelaxDeps = [ "tenacity" ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     httpx
     orjson
     rich
@@ -47,21 +44,20 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytest-asyncio
+    pytest-cov-stub
     pytestCheckHook
     respx
     syrupy
   ];
 
-  pythonImportsCheck = [
-    "pytrydan"
-  ];
+  pythonImportsCheck = [ "pytrydan" ];
 
   meta = with lib; {
     description = "Library to interface with V2C EVSE Trydan";
-    mainProgram = "pytrydan";
     homepage = "https://github.com/dgomes/pytrydan";
     changelog = "https://github.com/dgomes/pytrydan/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "pytrydan";
   };
 }
diff --git a/pkgs/development/python-modules/pyttsx3/default.nix b/pkgs/development/python-modules/pyttsx3/default.nix
index 0cd58e6fa5bcd..deeddc6b6d521 100644
--- a/pkgs/development/python-modules/pyttsx3/default.nix
+++ b/pkgs/development/python-modules/pyttsx3/default.nix
@@ -1,13 +1,17 @@
-{ stdenv, lib, buildPythonPackage, fetchPypi, espeak-ng }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "pyttsx3";
-  version = "2.90";
+  version = "2.97";
   format = "wheel";
 
   src = fetchPypi {
     inherit pname version format;
-    sha256 = "a585b6d8cffc19bd92db1e0ccbd8aa9c6528dd2baa5a47045d6fed542a44aa19";
+    sha256 = "sha256-GM4wZDtnutHZc2H7s6PHyo/MdQ7Y6YrCJuu2I7AeSw8=";
     dist = "py3";
     python = "py3";
   };
@@ -16,7 +20,6 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
     description = "Offline text-to-speech synthesis library";
     homepage = "https://github.com/nateshmbhat/pyttsx3";
     license = licenses.mpl20;
diff --git a/pkgs/development/python-modules/pytube/default.nix b/pkgs/development/python-modules/pytube/default.nix
index 2e173e5f482b2..eabf55c89caa9 100644
--- a/pkgs/development/python-modules/pytube/default.nix
+++ b/pkgs/development/python-modules/pytube/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,13 +21,9 @@ buildPythonPackage rec {
     hash = "sha256-Nvs/YlOjk/P5nd1kpUnCM2n6yiEaqZP830UQI0Ug1rk=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = [
-    "test_streaming"
-  ];
+  disabledTests = [ "test_streaming" ];
 
   disabledTestPaths = [
     "tests/test_extract.py"
diff --git a/pkgs/development/python-modules/pytubefix/default.nix b/pkgs/development/python-modules/pytubefix/default.nix
new file mode 100644
index 0000000000000..343bcca0a9654
--- /dev/null
+++ b/pkgs/development/python-modules/pytubefix/default.nix
@@ -0,0 +1,44 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "pytubefix";
+  version = "6.4.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "JuanBindez";
+    repo = "pytubefix";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-FbmVQ+nt/WEwE5vRMo2610TO463CT8nCseqB30uXjSM=";
+  };
+
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  disabledTestPaths = [
+    # require network access
+    "tests/test_captions.py"
+    "tests/test_cli.py"
+    "tests/test_exceptions.py"
+    "tests/test_extract.py"
+    "tests/test_main.py"
+    "tests/test_query.py"
+    "tests/test_streams.py"
+  ];
+
+  pythonImportsCheck = [ "pytubefix" ];
+
+  meta = {
+    homepage = "https://github.com/JuanBindez/pytubefix";
+    description = "Pytube fork with additional features and fixes";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ youhaveme9 ];
+  };
+}
diff --git a/pkgs/development/python-modules/pytun/default.nix b/pkgs/development/python-modules/pytun/default.nix
index 0c16d8eb5f55a..166afc4544339 100644
--- a/pkgs/development/python-modules/pytun/default.nix
+++ b/pkgs/development/python-modules/pytun/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
   pname = "pytun";
-  version = "2.3.0";
+  version = "2.4.1";
   format = "setuptools";
 
   src = fetchFromGitHub {
     rev = "v${version}";
     owner = "montag451";
     repo = "pytun";
-    sha256 = "1cqq8aci38058fjh4a0xf21wac177fw576p2yjl2b8jd9rnsqbl5";
+    sha256 = "sha256-DZ7CoLi6LPhuc55HF9dtek+/N4A29ecnZn7bk7jweuI=";
   };
 
   # Test directory contains examples, not tests.
diff --git a/pkgs/development/python-modules/pyturbojpeg/default.nix b/pkgs/development/python-modules/pyturbojpeg/default.nix
index b64b7527e8bef..eb08b2e9873e3 100644
--- a/pkgs/development/python-modules/pyturbojpeg/default.nix
+++ b/pkgs/development/python-modules/pyturbojpeg/default.nix
@@ -1,51 +1,52 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, libjpeg_turbo
-, setuptools
-, numpy
-, python
-, substituteAll
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  libjpeg_turbo,
+  setuptools,
+  numpy,
+  python,
+  substituteAll,
 }:
 
 buildPythonPackage rec {
   pname = "pyturbojpeg";
-  version = "1.7.3";
+  version = "1.7.7";
   pyproject = true;
 
-  src = fetchPypi {
-    pname = "PyTurboJPEG";
-    inherit version;
-    hash = "sha256-edSOOrU0YVKP+4AJxCCYnQh6iewxVFTM1QmU88mukis=";
+  src = fetchFromGitHub {
+    owner = "lilohuang";
+    repo = "PyTurboJPEG";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-JPjGZGVMZH6sDNRdV6kWsCpEjLT2aMrTy+bI4mRbdpw=";
   };
 
   patches = [
     (substituteAll {
       src = ./lib-path.patch;
-      libturbojpeg = "${libjpeg_turbo.out}/lib/libturbojpeg${stdenv.hostPlatform.extensions.sharedLibrary}";
+      libturbojpeg = "${lib.getLib libjpeg_turbo}/lib/libturbojpeg${stdenv.hostPlatform.extensions.sharedLibrary}";
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  dependencies = [ numpy ];
 
   # upstream has no tests, but we want to test whether the library is found
   checkPhase = ''
+    runHook preCheck
+
     ${python.interpreter} -c 'from turbojpeg import TurboJPEG; TurboJPEG()'
+
+    runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "turbojpeg"
-  ];
+  pythonImportsCheck = [ "turbojpeg" ];
 
   meta = with lib; {
-    description = "A Python wrapper of libjpeg-turbo for decoding and encoding JPEG image";
+    changelog = "https://github.com/lilohuang/PyTurboJPEG/releases/tag/v${version}";
+    description = "Python wrapper of libjpeg-turbo for decoding and encoding JPEG image";
     homepage = "https://github.com/lilohuang/PyTurboJPEG";
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/pkgs/development/python-modules/pytweening/default.nix b/pkgs/development/python-modules/pytweening/default.nix
index 1c7535f4405ef..b15a6e6b6a7a5 100644
--- a/pkgs/development/python-modules/pytweening/default.nix
+++ b/pkgs/development/python-modules/pytweening/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 buildPythonPackage rec {
   pname = "pytweening";
diff --git a/pkgs/development/python-modules/pytz-deprecation-shim/default.nix b/pkgs/development/python-modules/pytz-deprecation-shim/default.nix
index dd37c3c1af28a..ef40519c544a1 100644
--- a/pkgs/development/python-modules/pytz-deprecation-shim/default.nix
+++ b/pkgs/development/python-modules/pytz-deprecation-shim/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonAtLeast
-, pythonOlder
-, backports-zoneinfo
-, python-dateutil
-, setuptools
-, tzdata
-, hypothesis
-, pytestCheckHook
-, pytz
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonAtLeast,
+  pythonOlder,
+  backports-zoneinfo,
+  python-dateutil,
+  setuptools,
+  tzdata,
+  hypothesis,
+  pytestCheckHook,
+  pytz,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,10 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = (lib.optionals (pythonAtLeast "3.6" && pythonOlder "3.9") [
-    backports-zoneinfo
-  ]) ++ (lib.optionals (pythonOlder "3.6") [
-    python-dateutil
-  ]) ++ (lib.optionals (pythonAtLeast "3.6") [
-    tzdata
-  ]);
+  propagatedBuildInputs =
+    (lib.optionals (pythonAtLeast "3.6" && pythonOlder "3.9") [ backports-zoneinfo ])
+    ++ (lib.optionals (pythonOlder "3.6") [ python-dateutil ])
+    ++ (lib.optionals (pythonAtLeast "3.6") [ tzdata ]);
 
   nativeCheckInputs = [
     hypothesis
diff --git a/pkgs/development/python-modules/pytz/default.nix b/pkgs/development/python-modules/pytz/default.nix
index 359c7c142d5e1..d99da5d17d18c 100644
--- a/pkgs/development/python-modules/pytz/default.nix
+++ b/pkgs/development/python-modules/pytz/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -15,13 +16,14 @@ buildPythonPackage rec {
     hash = "sha256-KilzXqnBi68UtEiEa95aSAMO0mdXhHLYlVzQ50Q6mBI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [ "-s" "pytz/tests" ];
+  unittestFlagsArray = [
+    "-s"
+    "pytz/tests"
+  ];
 
   pythonImportsCheck = [ "pytz" ];
 
diff --git a/pkgs/development/python-modules/pytzdata/default.nix b/pkgs/development/python-modules/pytzdata/default.nix
index f6b8e94389256..8b66daba06afa 100644
--- a/pkgs/development/python-modules/pytzdata/default.nix
+++ b/pkgs/development/python-modules/pytzdata/default.nix
@@ -1,4 +1,8 @@
-{ lib, fetchPypi, buildPythonPackage }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+}:
 
 buildPythonPackage rec {
   pname = "pytzdata";
diff --git a/pkgs/development/python-modules/pyu2f/default.nix b/pkgs/development/python-modules/pyu2f/default.nix
index ef09f1285183d..fd63b2bf10ed0 100644
--- a/pkgs/development/python-modules/pyu2f/default.nix
+++ b/pkgs/development/python-modules/pyu2f/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, six
-, mock
-, pyfakefs
-, pytest-forked
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  six,
+  mock,
+  pyfakefs,
+  pytest-forked,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     sha256 = "0mx7bn1p3n0fxyxa82wg3c719hby7vqkxv57fhf7zvhlg2zfnr0v";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   postPatch = ''
     for path in \
diff --git a/pkgs/development/python-modules/pyuca/default.nix b/pkgs/development/python-modules/pyuca/default.nix
index 94b29dc80f9b3..e4a7a2a0b5f14 100644
--- a/pkgs/development/python-modules/pyuca/default.nix
+++ b/pkgs/development/python-modules/pyuca/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,16 +17,12 @@ buildPythonPackage rec {
     hash = "sha256-KIWk+/o1MX5J9cO7xITvjHrYg0NdgdTetOzfGVwAI/4=";
   };
 
-  pythonImportsCheck = [
-    "pyuca"
-  ];
+  pythonImportsCheck = [ "pyuca" ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   meta = with lib; {
-    description = "A Python implementation of the Unicode Collation Algorithm";
+    description = "Python implementation of the Unicode Collation Algorithm";
     homepage = "https://github.com/jtauber/pyuca";
     license = licenses.mit;
     maintainers = with maintainers; [ hexa ];
diff --git a/pkgs/development/python-modules/pyudev/default.nix b/pkgs/development/python-modules/pyudev/default.nix
index 685da38ed2f18..f7b75f0ff22e6 100644
--- a/pkgs/development/python-modules/pyudev/default.nix
+++ b/pkgs/development/python-modules/pyudev/default.nix
@@ -1,31 +1,37 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, six
-, udev
-, pytest
-, mock
-, hypothesis
-, docutils
-, stdenvNoCC
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  six,
+  udev,
+  pytest,
+  mock,
+  hypothesis,
+  docutils,
+  stdenvNoCC,
 }:
 
 buildPythonPackage rec {
   pname = "pyudev";
-  version = "0.24.1";
+  version = "0.24.3";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-deVNNyGPWsRbDaHw/ZzF5SajysPvHPrUEM96sziwFHE=";
+    hash = "sha256-LpRUJ6IWdIk7uXYyQB22ITnZHOoe6WE3zHsHrSIZj8c=";
   };
 
-  postPatch = lib.optionalString stdenvNoCC.isLinux ''
+  postPatch = lib.optionalString stdenvNoCC.hostPlatform.isLinux ''
     substituteInPlace src/pyudev/_ctypeslib/utils.py \
       --replace "find_library(name)" "'${lib.getLib udev}/lib/libudev.so'"
-    '';
+  '';
 
-  nativeCheckInputs = [ pytest mock hypothesis docutils ];
+  nativeCheckInputs = [
+    pytest
+    mock
+    hypothesis
+    docutils
+  ];
   propagatedBuildInputs = [ six ];
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/pyunbound/default.nix b/pkgs/development/python-modules/pyunbound/default.nix
new file mode 100644
index 0000000000000..13357faec5931
--- /dev/null
+++ b/pkgs/development/python-modules/pyunbound/default.nix
@@ -0,0 +1,70 @@
+{ lib, buildPythonPackage, unbound, openssl, expat, libevent, swig, python, stdenv }:
+
+buildPythonPackage rec {
+  pname = "pyunbound";
+  inherit (unbound) version src;
+  pyproject = false; # Built with configure script
+
+  patches = unbound.patches or null;
+
+  nativeBuildInputs = [ swig ];
+
+  buildInputs = [ openssl expat libevent python ];
+
+  postPatch = ''
+    substituteInPlace Makefile.in \
+      --replace "\$(DESTDIR)\$(PYTHON_SITE_PKG)" "$out/${python.sitePackages}" \
+      --replace "\$(LIBTOOL) --mode=install cp _unbound.la" "cp _unbound.la"
+  '';
+
+  preConfigure = "export PYTHON_VERSION=${python.pythonVersion}";
+
+  configureFlags = [
+    "--with-ssl=${openssl.dev}"
+    "--with-libexpat=${expat.dev}"
+    "--with-libevent=${libevent.dev}"
+    "--localstatedir=/var"
+    "--sysconfdir=/etc"
+    "--sbindir=\${out}/bin"
+    "--enable-pie"
+    "--enable-relro-now"
+    "--with-pyunbound"
+    "DESTDIR=$out"
+    "PREFIX="
+  ];
+
+  preInstall = ''
+    mkdir -p $out/${python.sitePackages} $out/etc/${pname}
+    cp .libs/_unbound.so .libs/libunbound.so* $out/${python.sitePackages}
+    substituteInPlace _unbound.la \
+      --replace "-L.libs $PWD/libunbound.la" "-L$out/${python.sitePackages}"
+  '';
+
+  installFlags = [
+    "configfile=\${out}/etc/unbound/unbound.conf"
+    "pyunbound-install"
+    "lib"
+  ];
+
+  # All we want is the Unbound Python module
+  postInstall = ''
+    # Generate the built in root anchor and root key and store these in a logical place
+    # to be used by tools depending only on the Python module
+    $out/bin/unbound-anchor -l | head -1 > $out/etc/${pname}/root.anchor
+    $out/bin/unbound-anchor -l | tail --lines=+2 - > $out/etc/${pname}/root.key
+    # We don't need anything else
+    rm -r $out/bin $out/share $out/include $out/etc/unbound
+  ''
+  # patchelf is only available on Linux and no patching is needed on darwin
+  + lib.optionalString stdenv.hostPlatform.isLinux ''
+    patchelf --replace-needed libunbound.so.8 $out/${python.sitePackages}/libunbound.so.8 $out/${python.sitePackages}/_unbound.so
+  '';
+
+  meta = with lib; {
+    description = "Python library for Unbound, the validating, recursive, and caching DNS resolver";
+    license = licenses.bsd3;
+    homepage = "https://www.unbound.net";
+    maintainers = with maintainers; [ leenaars ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/development/python-modules/pyunifi/default.nix b/pkgs/development/python-modules/pyunifi/default.nix
index 5b0272076b9fc..b006354be12cf 100644
--- a/pkgs/development/python-modules/pyunifi/default.nix
+++ b/pkgs/development/python-modules/pyunifi/default.nix
@@ -1,5 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi
-, requests }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+}:
 
 buildPythonPackage rec {
   pname = "pyunifi";
diff --git a/pkgs/development/python-modules/pyunifiprotect/default.nix b/pkgs/development/python-modules/pyunifiprotect/default.nix
deleted file mode 100644
index 7b7a042ad8be6..0000000000000
--- a/pkgs/development/python-modules/pyunifiprotect/default.nix
+++ /dev/null
@@ -1,113 +0,0 @@
-{ lib
-, aiofiles
-, aiohttp
-, aioshutil
-, async-timeout
-, buildPythonPackage
-, dateparser
-, fetchFromGitHub
-, ffmpeg
-, hatch-vcs
-, hatchling
-, ipython
-, orjson
-, packaging
-, pillow
-, platformdirs
-, poetry-core
-, py
-, pydantic
-, pyjwt
-, pytest-aiohttp
-, pytest-asyncio
-, pytest-benchmark
-, pytest-timeout
-, pytest-xdist
-, pytestCheckHook
-, python-dotenv
-, pythonOlder
-, pytz
-, termcolor
-, typer
-}:
-
-buildPythonPackage rec {
-  pname = "pyunifiprotect";
-  version = "5.1.2";
-  pyproject = true;
-
-  disabled = pythonOlder "3.9";
-
-  src = fetchFromGitHub {
-    owner = "briis";
-    repo = "pyunifiprotect";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-DtQm6u3O0kdVJ23Ch+hJQ6HTOt5iAMdhCzC1K/oICWk=";
-  };
-
-  env.SETUPTOOLS_SCM_PRETEND_VERSION = version;
-
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail "--strict-markers -ra -Wd --ignore=.* --no-cov-on-fail --cov=pyunifiprotect --cov-append --maxfail=10 -n=auto" ""
-  '';
-
-  build-system = [
-    hatch-vcs
-    hatchling
-  ];
-
-  dependencies = [
-    aiofiles
-    aiohttp
-    aioshutil
-    dateparser
-    orjson
-    packaging
-    pillow
-    platformdirs
-    pydantic
-    pyjwt
-    pytz
-    typer
-  ] ++ typer.optional-dependencies.all
-  ++ lib.optionals (pythonOlder "3.11") [
-    async-timeout
-  ];
-
-  passthru.optional-dependencies = {
-    shell = [
-      ipython
-      python-dotenv
-      termcolor
-    ];
-  };
-
-  nativeCheckInputs = [
-    ffmpeg # Required for command ffprobe
-    py
-    pytest-aiohttp
-    pytest-asyncio
-    pytest-benchmark
-    pytest-timeout
-    pytest-xdist
-    pytestCheckHook
-  ];
-
-  pythonImportsCheck = [
-    "pyunifiprotect"
-  ];
-
-  pytestFlagsArray = [
-    "--benchmark-disable"
-  ];
-
-  meta = with lib; {
-    description = "Library for interacting with the Unifi Protect API";
-    mainProgram = "unifi-protect";
-    homepage = "https://github.com/briis/pyunifiprotect";
-    changelog = "https://github.com/AngellusMortis/pyunifiprotect/releases/tag/v${version}";
-    license = with licenses; [ mit ];
-    maintainers = with maintainers; [ fab ];
-  };
-}
diff --git a/pkgs/development/python-modules/pyunpack/default.nix b/pkgs/development/python-modules/pyunpack/default.nix
index 631c9706f0df0..4c3c56c7ed533 100644
--- a/pkgs/development/python-modules/pyunpack/default.nix
+++ b/pkgs/development/python-modules/pyunpack/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
-, easyprocess
-, entrypoint2
-, patool
-, cabextract
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  easyprocess,
+  entrypoint2,
+  patool,
+  cabextract,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyupdate/default.nix b/pkgs/development/python-modules/pyupdate/default.nix
index 34c4d1f54ae68..7224907916d24 100644
--- a/pkgs/development/python-modules/pyupdate/default.nix
+++ b/pkgs/development/python-modules/pyupdate/default.nix
@@ -1,5 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k
-, requests }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  requests,
+}:
 
 buildPythonPackage rec {
   pname = "pyupdate";
diff --git a/pkgs/development/python-modules/pyupgrade/default.nix b/pkgs/development/python-modules/pyupgrade/default.nix
index 04ccee1bc7573..f5a4ad76af479 100644
--- a/pkgs/development/python-modules/pyupgrade/default.nix
+++ b/pkgs/development/python-modules/pyupgrade/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, tokenize-rt
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  tokenize-rt,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-n6WlJc7Hh7SArJ8Z0fikxidtpXaPQvKTDGn6HukL2q8=";
   };
 
-  propagatedBuildInputs = [
-    tokenize-rt
-  ];
+  propagatedBuildInputs = [ tokenize-rt ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyupgrade"
-  ];
+  pythonImportsCheck = [ "pyupgrade" ];
 
   meta = with lib; {
     description = "Tool to automatically upgrade syntax for newer versions of the language";
diff --git a/pkgs/development/python-modules/pyuptimerobot/default.nix b/pkgs/development/python-modules/pyuptimerobot/default.nix
index 8b6af6dc5d921..918be59eaddf9 100644
--- a/pkgs/development/python-modules/pyuptimerobot/default.nix
+++ b/pkgs/development/python-modules/pyuptimerobot/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pytest-asyncio
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pytest-asyncio,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
       --replace 'version="main",' 'version="${version}",'
   '';
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   nativeCheckInputs = [
     aresponses
@@ -38,9 +37,7 @@ buildPythonPackage rec {
     pytest-asyncio
   ];
 
-  pythonImportsCheck = [
-    "pyuptimerobot"
-  ];
+  pythonImportsCheck = [ "pyuptimerobot" ];
 
   meta = with lib; {
     description = "Python API wrapper for Uptime Robot";
diff --git a/pkgs/development/python-modules/pyusb/default.nix b/pkgs/development/python-modules/pyusb/default.nix
index 091ee1b5f4f48..c9fdbb623bebe 100644
--- a/pkgs/development/python-modules/pyusb/default.nix
+++ b/pkgs/development/python-modules/pyusb/default.nix
@@ -1,4 +1,11 @@
-{ lib, stdenv, fetchPypi, buildPythonPackage, libusb1, setuptools-scm }:
+{
+  lib,
+  stdenv,
+  fetchPypi,
+  buildPythonPackage,
+  libusb1,
+  setuptools-scm,
+}:
 
 buildPythonPackage rec {
   pname = "pyusb";
@@ -10,17 +17,14 @@ buildPythonPackage rec {
     sha256 = "a4cc7404a203144754164b8b40994e2849fde1cfff06b08492f12fff9d9de7b9";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   # Fix the USB backend library lookup
-  postPatch =
-    ''
-      libusb=${libusb1.out}/lib/libusb-1.0${stdenv.hostPlatform.extensions.sharedLibrary}
-      test -f $libusb || { echo "ERROR: $libusb doesn't exist, please update/fix this build expression."; exit 1; }
-      sed -i -e "s|find_library=None|find_library=lambda _:\"$libusb\"|" usb/backend/libusb1.py
-    '';
+  postPatch = ''
+    libusb=${libusb1.out}/lib/libusb-1.0${stdenv.hostPlatform.extensions.sharedLibrary}
+    test -f $libusb || { echo "ERROR: $libusb doesn't exist, please update/fix this build expression."; exit 1; }
+    sed -i -e "s|find_library=None|find_library=lambda _:\"$libusb\"|" usb/backend/libusb1.py
+  '';
 
   # No tests included
   doCheck = false;
@@ -28,7 +32,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "usb" ];
 
   meta = with lib; {
-    description = "Python USB access module (wraps libusb 1.0)";  # can use other backends
+    description = "Python USB access module (wraps libusb 1.0)"; # can use other backends
     homepage = "https://pyusb.github.io/pyusb/";
     license = licenses.bsd3;
     maintainers = with maintainers; [ bjornfor ];
diff --git a/pkgs/development/python-modules/pyuseragents/default.nix b/pkgs/development/python-modules/pyuseragents/default.nix
index 0bfae94e02752..f817a04222de0 100644
--- a/pkgs/development/python-modules/pyuseragents/default.nix
+++ b/pkgs/development/python-modules/pyuseragents/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyutil/default.nix b/pkgs/development/python-modules/pyutil/default.nix
index 91f5d0d89f894..a98538cc43eab 100644
--- a/pkgs/development/python-modules/pyutil/default.nix
+++ b/pkgs/development/python-modules/pyutil/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPyPy
-, mock
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, setuptools
-, simplejson
-, twisted
-, versioneer
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  mock,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
+  simplejson,
+  twisted,
+  versioneer,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    jsonutil = [
-      simplejson
-    ];
+    jsonutil = [ simplejson ];
     # Module not available
     # randcookie = [
     #   zbase32
@@ -49,9 +48,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "pyutil"
-  ];
+  pythonImportsCheck = [ "pyutil" ];
 
   disabledTests = lib.optionals (pythonAtLeast "3.12") [
     # https://github.com/tpltnt/pyutil/issues/10
@@ -74,5 +71,4 @@ buildPythonPackage rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ prusnak ];
   };
-
 }
diff --git a/pkgs/development/python-modules/pyutilib/default.nix b/pkgs/development/python-modules/pyutilib/default.nix
deleted file mode 100644
index ba1670a92645a..0000000000000
--- a/pkgs/development/python-modules/pyutilib/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, six
-}:
-
-buildPythonPackage rec {
-  pname = "pyutilib";
-  version = "6.0.0";
-  format = "setuptools";
-
-  src = fetchPypi {
-    pname = "PyUtilib";
-    inherit version;
-    hash = "sha256-08FPjtkCioMbK/Ubird3brqH5mz8WKBrmcNZqqZA8EA=";
-  };
-
-  propagatedBuildInputs = [
-    nose
-    six
-  ];
-
-  # tests require text files that are not included in the pypi package
-  doCheck = false;
-
-  meta = with lib; {
-    description = "PyUtilib: A collection of Python utilities";
-    homepage = "https://github.com/PyUtilib/pyutilib";
-    license = licenses.bsd3;
-    maintainers = [ ];
-  };
-}
diff --git a/pkgs/development/python-modules/pyuv/default.nix b/pkgs/development/python-modules/pyuv/default.nix
index 594e1d7b34e08..00073be609f00 100644
--- a/pkgs/development/python-modules/pyuv/default.nix
+++ b/pkgs/development/python-modules/pyuv/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, pythonAtLeast
-, fetchFromGitHub
-, fetchpatch
-, libuv
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  setuptools,
+  libuv,
 }:
 
 buildPythonPackage rec {
   pname = "pyuv";
   version = "1.4.0";
-  format = "setuptools";
-  disabled = pythonAtLeast "3.12";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "saghul";
@@ -32,6 +32,8 @@ buildPythonPackage rec {
     })
   ];
 
+  build-system = [ setuptools ];
+
   setupPyBuildFlags = [ "--use-system-libuv" ];
 
   buildInputs = [ libuv ];
diff --git a/pkgs/development/python-modules/pyvcd/default.nix b/pkgs/development/python-modules/pyvcd/default.nix
index 9f206dcda1bff..3904923d53b4e 100644
--- a/pkgs/development/python-modules/pyvcd/default.nix
+++ b/pkgs/development/python-modules/pyvcd/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools-scm
-, six
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools-scm,
+  six,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -15,7 +16,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-Mb4/UBRBqbjF3HJmD/e5z++bQ7ISGiPZb1htKGMnApA=";
+    hash = "sha256-Mb4/UBRBqbjF3HJmD/e5z++bQ7ISGiPZb1htKGMnApA=";
   };
 
   buildInputs = [ setuptools-scm ];
@@ -29,6 +30,8 @@ buildPythonPackage rec {
     homepage = "https://github.com/SanDisk-Open-Source/pyvcd";
     changelog = "https://github.com/SanDisk-Open-Source/pyvcd/blob/${version}/CHANGELOG.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ sb0 emily ];
+    maintainers = with maintainers; [
+      sb0
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pyvera/default.nix b/pkgs/development/python-modules/pyvera/default.nix
index b43840b0790a1..5a6c502e2eb00 100644
--- a/pkgs/development/python-modules/pyvera/default.nix
+++ b/pkgs/development/python-modules/pyvera/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-cov
-, pytest-asyncio
-, pytest-timeout
-, responses
-, pytestCheckHook
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-cov-stub,
+  pytest-asyncio,
+  pytest-timeout,
+  responses,
+  pytestCheckHook,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -29,7 +30,7 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     pytest-asyncio
     pytest-timeout
-    pytest-cov
+    pytest-cov-stub
     pytestCheckHook
     responses
   ];
diff --git a/pkgs/development/python-modules/pyverilog/default.nix b/pkgs/development/python-modules/pyverilog/default.nix
index bc526604d87b1..9e7077a60f57d 100644
--- a/pkgs/development/python-modules/pyverilog/default.nix
+++ b/pkgs/development/python-modules/pyverilog/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, jinja2
-, ply
-, verilog
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  jinja2,
+  ply,
+  iverilog,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pyverilog";
   version = "1.3.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
@@ -23,23 +25,25 @@ buildPythonPackage rec {
   patchPhase = ''
     # The path to Icarus can still be overridden via an environment variable at runtime.
     substituteInPlace pyverilog/vparser/preprocessor.py \
-      --replace "iverilog = 'iverilog'" "iverilog = '${verilog}/bin/iverilog'"
+      --replace-fail \
+        "iverilog = 'iverilog'" \
+        "iverilog = '${lib.getExe' iverilog "iverilog"}'"
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     jinja2
     ply
-    verilog
+    iverilog
   ];
 
   preCheck = ''
     substituteInPlace pytest.ini \
-      --replace "python_paths" "pythonpath"
+      --replace-fail "python_paths" "pythonpath"
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     homepage = "https://github.com/PyHDI/Pyverilog";
diff --git a/pkgs/development/python-modules/pyversasense/default.nix b/pkgs/development/python-modules/pyversasense/default.nix
index 908d9d37f7bad..d6328c4acf813 100644
--- a/pkgs/development/python-modules/pyversasense/default.nix
+++ b/pkgs/development/python-modules/pyversasense/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, aiohttp
-, asynctest
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  asynctest,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     sha256 = "vTaDEwImWDMInwti0Jj+j+RFEtXOOKtiH5wOMD6ZmJk=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   doCheck = pythonOlder "3.11"; # asynctest unsupported on python3.11
 
@@ -34,9 +33,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "tests/test.py"
-  ];
+  pytestFlagsArray = [ "tests/test.py" ];
 
   disabledTests = [
     # Tests are not properly mocking network requests
@@ -46,9 +43,7 @@ buildPythonPackage rec {
     "test_samples"
   ];
 
-  pythonImportsCheck = [
-    "pyversasense"
-  ];
+  pythonImportsCheck = [ "pyversasense" ];
 
   meta = with lib; {
     description = "Python library to communicate with the VersaSense API";
diff --git a/pkgs/development/python-modules/pyvesync/default.nix b/pkgs/development/python-modules/pyvesync/default.nix
index 62ea4229079e8..d8f370167ba2e 100644
--- a/pkgs/development/python-modules/pyvesync/default.nix
+++ b/pkgs/development/python-modules/pyvesync/default.nix
@@ -1,32 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pyvesync";
-  version = "2.1.10";
+  version = "2.1.12";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ddtTtTAUpvS8DN1vKVN+CjnmYp20xyxHydwOaDRjWzo=";
+    hash = "sha256-k9eAbHFFo5rFYTNVxN4qEFnW2zmXThr3Ki1lZtj9V/g=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Test are not available (not in PyPI tarball and there are no GitHub releases)
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyvesync"
-  ];
+  pythonImportsCheck = [ "pyvesync" ];
 
   meta = with lib; {
     description = "Python library to manage Etekcity Devices and Levoit Air Purifier";
diff --git a/pkgs/development/python-modules/pyvex/default.nix b/pkgs/development/python-modules/pyvex/default.nix
index a3d62043d901e..39f5574596749 100644
--- a/pkgs/development/python-modules/pyvex/default.nix
+++ b/pkgs/development/python-modules/pyvex/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, stdenv
-, bitstring
-, buildPythonPackage
-, cffi
-, fetchPypi
-, pycparser
-, pythonOlder
-, setuptools
+{
+  lib,
+  stdenv,
+  bitstring,
+  buildPythonPackage,
+  cffi,
+  fetchPypi,
+  pycparser,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyvex";
-  version = "9.2.101";
+  version = "9.2.119";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-zI86NYe0b9ppm9Zv6+zfB3UclhIm1TTqcC9vrBn3NR8=";
+    hash = "sha256-c9CaftT7VInEMRsWN7FhDHwXJccma5wkUfiN9EpjUTQ=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     bitstring
@@ -31,12 +30,12 @@ buildPythonPackage rec {
     pycparser
   ];
 
-  postPatch = lib.optionalString stdenv.isDarwin ''
+  postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
     substituteInPlace vex/Makefile-gcc \
       --replace-fail '/usr/bin/ar' 'ar'
   '';
 
-  setupPyBuildFlags = lib.optionals stdenv.isLinux [
+  setupPyBuildFlags = lib.optionals stdenv.hostPlatform.isLinux [
     "--plat-name"
     "linux"
   ];
@@ -44,21 +43,23 @@ buildPythonPackage rec {
   preBuild = ''
     export CC=${stdenv.cc.targetPrefix}cc
     substituteInPlace pyvex_c/Makefile \
-      --replace 'AR=ar' 'AR=${stdenv.cc.targetPrefix}ar'
+      --replace-fail 'AR=ar' 'AR=${stdenv.cc.targetPrefix}ar'
   '';
 
   # No tests are available on PyPI, GitHub release has tests
   # Switch to GitHub release after all angr parts are present
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyvex"
-  ];
+  pythonImportsCheck = [ "pyvex" ];
 
   meta = with lib; {
     description = "Python interface to libVEX and VEX IR";
     homepage = "https://github.com/angr/pyvex";
-    license = with licenses; [ bsd2 gpl3Plus lgpl3Plus ];
+    license = with licenses; [
+      bsd2
+      gpl3Plus
+      lgpl3Plus
+    ];
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/pyvicare-neo/default.nix b/pkgs/development/python-modules/pyvicare-neo/default.nix
new file mode 100644
index 0000000000000..5980fca223f28
--- /dev/null
+++ b/pkgs/development/python-modules/pyvicare-neo/default.nix
@@ -0,0 +1,43 @@
+{
+  authlib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  poetry-core,
+  pytestCheckHook,
+  requests,
+  types-requests,
+}:
+
+buildPythonPackage rec {
+  pname = "pyvicare-neo";
+  version = "0.3.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "CFenner";
+    repo = "PyViCare";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-QjFrBf58uM5OProKsesyY43MuE1MnIVIVqs5rWUTmes=";
+  };
+
+  build-system = [ poetry-core ];
+
+  propagatedBuildInputs = [
+    authlib
+    requests
+    types-requests
+  ];
+
+  pythonImportsCheck = [ "PyViCare" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    changelog = "https://github.com/CFenner/PyViCare/releases/tag/v${version}";
+    description = "Library to communicate with the Viessmann ViCare API";
+    homepage = "https://github.com/CFenner/PyViCare";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyvicare/default.nix b/pkgs/development/python-modules/pyvicare/default.nix
deleted file mode 100644
index 56f74a93b21e5..0000000000000
--- a/pkgs/development/python-modules/pyvicare/default.nix
+++ /dev/null
@@ -1,51 +0,0 @@
-{ lib
-, authlib
-, buildPythonPackage
-, fetchFromGitHub
-, pkce
-, pytestCheckHook
-, pythonOlder
-, simplejson
-}:
-
-buildPythonPackage rec {
-  pname = "pyvicare";
-  version = "2.32.0";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.7";
-
-  src = fetchFromGitHub {
-    owner = "somm15";
-    repo = "PyViCare";
-    rev = "refs/tags/${version}";
-    hash = "sha256-qK5JCaCL+gbgNcBo5IjhlRrXD1IhA1B56hmcjvPie6Y=";
-  };
-
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "version_config=True," 'version="${version}",' \
-      --replace "'setuptools-git-versioning<1.8.0'" ""
-  '';
-
-  propagatedBuildInputs = [
-    authlib
-    pkce
-  ];
-
-  nativeCheckInputs = [
-    pytestCheckHook
-    simplejson
-  ];
-
-  pythonImportsCheck = [
-    "PyViCare"
-  ];
-
-  meta = with lib; {
-    description = "Python Library to access Viessmann ViCare API";
-    homepage = "https://github.com/somm15/PyViCare";
-    license = with licenses; [ asl20 ];
-    maintainers = with maintainers; [ fab ];
-  };
-}
diff --git a/pkgs/development/python-modules/pyvips/default.nix b/pkgs/development/python-modules/pyvips/default.nix
index a3872cdb858ba..7fc07f20a61a6 100644
--- a/pkgs/development/python-modules/pyvips/default.nix
+++ b/pkgs/development/python-modules/pyvips/default.nix
@@ -1,14 +1,16 @@
-{ stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pytestCheckHook
-, glib
-, vips
-, cffi
-, pkgconfig  # from pythonPackages
-, pkg-config  # from pkgs
-, lib }:
+{
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pytestCheckHook,
+  glib,
+  vips,
+  cffi,
+  pkgconfig, # from pythonPackages
+  pkg-config, # from pkgs
+  lib,
+}:
 
 buildPythonPackage rec {
   pname = "pyvips";
@@ -24,9 +26,15 @@ buildPythonPackage rec {
     hash = "sha256-9S7h3bkm+QP78cpemYS7l3c8t+wXsJ5MUAP2T50R/Mc=";
   };
 
-  nativeBuildInputs = [ pkgconfig pkg-config ];
+  nativeBuildInputs = [
+    pkgconfig
+    pkg-config
+  ];
 
-  buildInputs = [ glib vips ];
+  buildInputs = [
+    glib
+    vips
+  ];
 
   propagatedBuildInputs = [ cffi ];
 
@@ -47,10 +55,13 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "pyvips" ];
 
   meta = with lib; {
-    description = "A python wrapper for libvips";
+    description = "Python wrapper for libvips";
     homepage = "https://github.com/libvips/pyvips";
     changelog = "https://github.com/libvips/pyvips/blob/v${version}/CHANGELOG.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ccellado anthonyroussel ];
+    maintainers = with maintainers; [
+      ccellado
+      anthonyroussel
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pyvirtualdisplay/default.nix b/pkgs/development/python-modules/pyvirtualdisplay/default.nix
index b4d29851ef34f..0574c57063389 100644
--- a/pkgs/development/python-modules/pyvirtualdisplay/default.nix
+++ b/pkgs/development/python-modules/pyvirtualdisplay/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, easyprocess }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  easyprocess,
+}:
 
 buildPythonPackage rec {
   pname = "pyvirtualdisplay";
diff --git a/pkgs/development/python-modules/pyvis/default.nix b/pkgs/development/python-modules/pyvis/default.nix
index cb39d67192c9f..ae152c2286aca 100644
--- a/pkgs/development/python-modules/pyvis/default.nix
+++ b/pkgs/development/python-modules/pyvis/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, fetchFromGitHub
-, fetchpatch
-, buildPythonPackage
-, setuptools
-, networkx
-, jinja2
-, ipython
-, jsonpickle
-, pytestCheckHook
-, numpy
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  networkx,
+  jinja2,
+  ipython,
+  jsonpickle,
+  pytestCheckHook,
+  numpy,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-eo9Mk2c0hrBarCrzwmkXha3Qt4Bl1qR7Lhl9EkUx96E=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   dependencies = [
     jinja2
diff --git a/pkgs/development/python-modules/pyvisa-py/default.nix b/pkgs/development/python-modules/pyvisa-py/default.nix
index d64213c2c540d..4a2b39a87ab21 100644
--- a/pkgs/development/python-modules/pyvisa-py/default.nix
+++ b/pkgs/development/python-modules/pyvisa-py/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, setuptools
-, setuptools-scm
-, gpib-ctypes
-, pyserial
-, pyusb
-, pyvisa
-, typing-extensions
-, psutil
-, zeroconf
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  setuptools-scm,
+  gpib-ctypes,
+  pyserial,
+  pyusb,
+  pyvisa,
+  typing-extensions,
+  psutil,
+  zeroconf,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -47,9 +48,7 @@ buildPythonPackage rec {
     # vicp = [ pyvicp zeroconf ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Module that implements the Virtual Instrument Software Architecture";
diff --git a/pkgs/development/python-modules/pyvisa-sim/default.nix b/pkgs/development/python-modules/pyvisa-sim/default.nix
index 9fcce19d6a202..69e61ea9d0342 100644
--- a/pkgs/development/python-modules/pyvisa-sim/default.nix
+++ b/pkgs/development/python-modules/pyvisa-sim/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, fetchPypi
-, pythonOlder
-, buildPythonPackage
-, pyvisa
-, pyyaml
-, stringparser
-, typing-extensions
-, pytestCheckHook
-, setuptools
-, setuptools-scm
-, wheel
+{
+  lib,
+  fetchPypi,
+  pythonOlder,
+  buildPythonPackage,
+  pyvisa,
+  pyyaml,
+  stringparser,
+  typing-extensions,
+  pytestCheckHook,
+  setuptools,
+  setuptools-scm,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -38,16 +39,12 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "pyvisa_sim" ];
 
   # should be fixed after 0.5.1, remove at next release
-  disabledTestPaths = [
-    "pyvisa_sim/testsuite/test_all.py"
-  ];
+  disabledTestPaths = [ "pyvisa_sim/testsuite/test_all.py" ];
 
   meta = with lib; {
     description = "Simulated backend for PyVISA implementing TCPIP, GPIB, RS232, and USB resources";
diff --git a/pkgs/development/python-modules/pyvisa/default.nix b/pkgs/development/python-modules/pyvisa/default.nix
index 3d017f8ad2e50..c70ec5302ff11 100644
--- a/pkgs/development/python-modules/pyvisa/default.nix
+++ b/pkgs/development/python-modules/pyvisa/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, setuptools-scm
-, setuptools
-, typing-extensions
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools-scm,
+  setuptools,
+  typing-extensions,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -27,18 +28,12 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ typing-extensions ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Test can't find cli tool bin path correctly
-  disabledTests = [
-    "test_visa_info"
-  ];
+  disabledTests = [ "test_visa_info" ];
 
   meta = with lib; {
     description = "Python package for support of the Virtual Instrument Software Architecture (VISA)";
diff --git a/pkgs/development/python-modules/pyvista/default.nix b/pkgs/development/python-modules/pyvista/default.nix
index e0bfb1246f52c..19c5051f94936 100644
--- a/pkgs/development/python-modules/pyvista/default.nix
+++ b/pkgs/development/python-modules/pyvista/default.nix
@@ -1,51 +1,48 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, imageio
-, matplotlib
-, numpy
-, pillow
-, pooch
-, pythonOlder
-, scooby
-, setuptools
-, vtk
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  matplotlib,
+  numpy,
+  pillow,
+  pooch,
+  pythonOlder,
+  scooby,
+  setuptools,
+  typing-extensions,
+  vtk,
 }:
 
 buildPythonPackage rec {
   pname = "pyvista";
-  version = "0.43.6";
+  version = "0.44.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
-    owner = pname;
-    repo = pname;
+    owner = "pyvista";
+    repo = "pyvista";
     rev = "refs/tags/v${version}";
-    hash = "sha256-EhhnX7r8yHynEVahMSB6LxCAquQcUF4cI0S4oW+IZ/Y=";
+    hash = "sha256-P4kmsaeZqwEUdLJmfTRHkh8zdlOGLw+YLp9fa05xLXU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    imageio
+  dependencies = [
     matplotlib
     numpy
     pillow
     pooch
     scooby
+    typing-extensions
     vtk
   ];
 
   # Fatal Python error: Aborted
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyvista"
-  ];
+  pythonImportsCheck = [ "pyvista" ];
 
   meta = with lib; {
     description = "Easier Pythonic interface to VTK";
diff --git a/pkgs/development/python-modules/pyviz-comms/default.nix b/pkgs/development/python-modules/pyviz-comms/default.nix
index 4b36784949908..a83c270779656 100644
--- a/pkgs/development/python-modules/pyviz-comms/default.nix
+++ b/pkgs/development/python-modules/pyviz-comms/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
-, param
-, panel
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  param,
+  panel,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyvizio/default.nix b/pkgs/development/python-modules/pyvizio/default.nix
index 930e6e77bfa92..d981f8b142e4c 100644
--- a/pkgs/development/python-modules/pyvizio/default.nix
+++ b/pkgs/development/python-modules/pyvizio/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, click
-, fetchPypi
-, jsonpickle
-, requests
-, tabulate
-, xmltodict
-, zeroconf
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  click,
+  fetchPypi,
+  jsonpickle,
+  requests,
+  tabulate,
+  xmltodict,
+  zeroconf,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +18,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-AtqMWe2zgRqOp5S9oKq7keHNHM8pnTmV1mfGiVzygTc=";
+    hash = "sha256-AtqMWe2zgRqOp5S9oKq7keHNHM8pnTmV1mfGiVzygTc=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pyvlx/default.nix b/pkgs/development/python-modules/pyvlx/default.nix
index 263971e93321a..65c469091eeae 100644
--- a/pkgs/development/python-modules/pyvlx/default.nix
+++ b/pkgs/development/python-modules/pyvlx/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, setuptools
-, typing-extensions
-, zeroconf
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  setuptools,
+  typing-extensions,
+  zeroconf,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-J+oJQHsULrJQNdZqYsl2hufNubMwV1KtG10jZH0jbU4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     pyyaml
@@ -34,13 +33,9 @@ buildPythonPackage rec {
     zeroconf
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyvlx"
-  ];
+  pythonImportsCheck = [ "pyvlx" ];
 
   meta = with lib; {
     description = "Python client to work with Velux units";
@@ -52,6 +47,6 @@ buildPythonPackage rec {
     changelog = "https://github.com/Julius2342/pyvlx/releases/tag/${version}";
     license = with licenses; [ lgpl2Only ];
     maintainers = with maintainers; [ fab ];
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/pyvmomi/default.nix b/pkgs/development/python-modules/pyvmomi/default.nix
index f395f88bf7dc5..16260ed5de0a3 100644
--- a/pkgs/development/python-modules/pyvmomi/default.nix
+++ b/pkgs/development/python-modules/pyvmomi/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, lxml
-, requests
-, six
-, pyopenssl
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxml,
+  requests,
+  six,
+  pyopenssl,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "pyvmomi";
-  version = "8.0.2.0.1";
+  version = "8.0.3.0.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -19,7 +20,7 @@ buildPythonPackage rec {
     owner = "vmware";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-Y7Zor70P4lhkAslckg/prfCmnszVMFPntWdJpfWnvIM=";
+    hash = "sha256-wJe45r9fWNkg8oWJZ47bcqoWzOvxpO4soV2SU4N0tb0=";
   };
 
   propagatedBuildInputs = [
@@ -47,6 +48,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/vmware/pyvmomi";
     changelog = "https://github.com/vmware/pyvmomi/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyvo/default.nix b/pkgs/development/python-modules/pyvo/default.nix
index 6ebabd1b73405..f5f79271998c1 100644
--- a/pkgs/development/python-modules/pyvo/default.nix
+++ b/pkgs/development/python-modules/pyvo/default.nix
@@ -1,34 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, astropy
-, pillow
-, pythonOlder
-, pytestCheckHook
-, pytest-astropy
-, requests
-, requests-mock
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  astropy,
+  pillow,
+  pythonOlder,
+  pytestCheckHook,
+  pytest-astropy,
+  requests,
+  requests-mock,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "pyvo";
-  version = "1.5.1";
-  format = "setuptools";
+  version = "1.5.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.8"; # according to setup.cfg
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ByCBD+e3ZrpT0Q6dnkuyO8lnwVGm85LiKmy/4NRTpjI=";
+    hash = "sha256-uKJMRNrOXGB7HZOv0CV9FfoQnx6GV3I0fqlJ7qAcj3E=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     astropy
     requests
   ];
diff --git a/pkgs/development/python-modules/pyvolumio/default.nix b/pkgs/development/python-modules/pyvolumio/default.nix
index aac4f9c73a710..10a846948f24d 100644
--- a/pkgs/development/python-modules/pyvolumio/default.nix
+++ b/pkgs/development/python-modules/pyvolumio/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyvoro/default.nix b/pkgs/development/python-modules/pyvoro/default.nix
index 5c17554935d2e..403f61571b460 100644
--- a/pkgs/development/python-modules/pyvoro/default.nix
+++ b/pkgs/development/python-modules/pyvoro/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pywal/default.nix b/pkgs/development/python-modules/pywal/default.nix
index a37a52f146632..2a5ff3bd8e69f 100644
--- a/pkgs/development/python-modules/pywal/default.nix
+++ b/pkgs/development/python-modules/pywal/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi, imagemagick, feh, isPy3k }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  imagemagick,
+  feh,
+  isPy3k,
+}:
 
 buildPythonPackage rec {
   pname = "pywal";
diff --git a/pkgs/development/python-modules/pywatchman/default.nix b/pkgs/development/python-modules/pywatchman/default.nix
index b4448ecdbe1d0..f51d3c2dbce54 100644
--- a/pkgs/development/python-modules/pywatchman/default.nix
+++ b/pkgs/development/python-modules/pywatchman/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, watchman }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  watchman,
+}:
 
 buildPythonPackage rec {
   pname = "pywatchman";
@@ -7,7 +12,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-JTVNnjZH+UQRpME+UQyDoc7swXl3sFJbpBsW5wGceww=";
+    hash = "sha256-JTVNnjZH+UQRpME+UQyDoc7swXl3sFJbpBsW5wGceww=";
   };
 
   postPatch = ''
@@ -23,5 +28,4 @@ buildPythonPackage rec {
     homepage = "https://facebook.github.io/watchman/";
     license = licenses.bsd3;
   };
-
 }
diff --git a/pkgs/development/python-modules/pywaterkotte/default.nix b/pkgs/development/python-modules/pywaterkotte/default.nix
index 43f276a2df825..04b7ebbe06f43 100644
--- a/pkgs/development/python-modules/pywaterkotte/default.nix
+++ b/pkgs/development/python-modules/pywaterkotte/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, pytestCheckHook
-, pythonOlder
-, requests
-, responses
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  responses,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-zK0x6LyXPPNPA20Zq+S1B1q7ZWGxQmWf4JxEfjNkPQw=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     pytestCheckHook
     responses
   ];
 
-  pythonImportsCheck = [
-    "pywaterkotte"
-  ];
+  pythonImportsCheck = [ "pywaterkotte" ];
 
   meta = with lib; {
     description = "Library to communicate with Waterkotte heatpumps";
diff --git a/pkgs/development/python-modules/pywavefront/default.nix b/pkgs/development/python-modules/pywavefront/default.nix
index 0139f8209f371..534b5647c046d 100644
--- a/pkgs/development/python-modules/pywavefront/default.nix
+++ b/pkgs/development/python-modules/pywavefront/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pyglet
-, pytestCheckHook
-, mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pyglet,
+  pytestCheckHook,
+  mock,
 }:
 
 buildPythonPackage rec {
@@ -19,20 +20,15 @@ buildPythonPackage rec {
     hash = "sha256-ci40L2opJ+NYYtaAeX1Y5pzkdK+loFspTriX/xv4KR8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  passthru.optional-dependencies.visualization = [
-    pyglet
-  ];
+  passthru.optional-dependencies.visualization = [ pyglet ];
 
   nativeCheckInputs = [
     pytestCheckHook
     mock
   ];
 
-
   pythonImportsCheck = [ "pywavefront" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/pywavelets/default.nix b/pkgs/development/python-modules/pywavelets/default.nix
index a4d8117fc3720..149b9fb57fd83 100644
--- a/pkgs/development/python-modules/pywavelets/default.nix
+++ b/pkgs/development/python-modules/pywavelets/default.nix
@@ -1,34 +1,45 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, cython
-, nose
-, pytest
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  meson-python,
+  cython,
+  pytestCheckHook,
+  numpy,
 }:
 
 buildPythonPackage rec {
   pname = "pywavelets";
-  version = "1.4.1";
-  disabled = isPy27;
+  version = "1.6.0";
+  pyproject = true;
 
-  src = fetchPypi {
-    pname = "PyWavelets";
-    inherit version;
-    hash = "sha256-ZDevPd8IMRjCbY+Xq0OwckuVbJ+Vjp6niGWfaig0upM=";
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "PyWavelets";
+    repo = "pywt";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-Dr6LWGVlYGDD21l1RQ7elScovcen5uuFdJJXe3deB5o=";
   };
 
-  nativeCheckInputs = [ nose pytest ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail '"numpy>=2.0.0rc1,<2.3",' ""
+  '';
 
-  buildInputs = [ cython ];
+  build-system = [
+    meson-python
+    cython
+    numpy
+  ];
 
-  propagatedBuildInputs = [ numpy ];
+  dependencies = [ numpy ];
 
-  # Somehow nosetests doesn't run the tests, so let's use pytest instead
-  doCheck = false; # tests use relative paths, which fail to resolve
-  checkPhase = ''
-    py.test pywt/tests
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  preCheck = ''
+    cd $out
   '';
 
   # ensure compiled modules are present
@@ -43,7 +54,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Wavelet transform module";
     homepage = "https://github.com/PyWavelets/pywt";
+    changelog = "https://github.com/PyWavelets/pywt/releases/tag/v${version}";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/pywayland/default.nix b/pkgs/development/python-modules/pywayland/default.nix
index 97e75684e8f4e..4dc2fb89330dc 100644
--- a/pkgs/development/python-modules/pywayland/default.nix
+++ b/pkgs/development/python-modules/pywayland/default.nix
@@ -1,24 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, cffi
-, pkg-config
-, wayland
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  cffi,
+  pkg-config,
+  wayland,
+  wayland-scanner,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pywayland";
-  version = "0.4.17";
+  version = "0.4.18";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-9/0ZAmOML3oVrAfzGj72iV08FgyiYBSByoKyxhojxlc=";
+    hash = "sha256-WYreAng6rQWjKPZjtRtpTFq2i9XR4JJsDaPFISxWZTM=";
   };
 
-  nativeBuildInputs = [ pkg-config ];
+  depsBuildBuild = [ pkg-config ];
+  nativeBuildInputs = [ wayland-scanner ];
   propagatedNativeBuildInputs = [ cffi ];
   buildInputs = [ wayland ];
   propagatedBuildInputs = [ cffi ];
diff --git a/pkgs/development/python-modules/pywaze/default.nix b/pkgs/development/python-modules/pywaze/default.nix
index c47817f21bbef..081db245b8c22 100644
--- a/pkgs/development/python-modules/pywaze/default.nix
+++ b/pkgs/development/python-modules/pywaze/default.nix
@@ -12,16 +12,16 @@
 
 buildPythonPackage rec {
   pname = "pywaze";
-  version = "1.0.1";
+  version = "1.1.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "eifinger";
     repo = "pywaze";
     rev = "refs/tags/v${version}";
-    hash = "sha256-sWI9kUR0SSqE97an/YfvhQqmrK+OEWXRzG4MBYyp8Jg=";
+    hash = "sha256-XE+VdxUjq8KBSIU6rUlBweKEkZD3gqJuy9J4u9JVy7Q=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/pywbem/default.nix b/pkgs/development/python-modules/pywbem/default.nix
index bba152dd43671..9f5ed908aef8f 100644
--- a/pkgs/development/python-modules/pywbem/default.nix
+++ b/pkgs/development/python-modules/pywbem/default.nix
@@ -1,37 +1,38 @@
-{ lib
-, buildPythonPackage
-, decorator
-, fetchPypi
-, formencode
-, httpretty
-, libxml2
-, lxml
-, mock
-, nocasedict
-, nocaselist
-, pbr
-, ply
-, pytest
-, pythonOlder
-, pytz
-, pyyaml
-, requests
-, requests-mock
-, six
-, testfixtures
-, yamlloader
+{
+  lib,
+  buildPythonPackage,
+  decorator,
+  fetchPypi,
+  formencode,
+  httpretty,
+  libxml2,
+  lxml,
+  mock,
+  nocasedict,
+  nocaselist,
+  pbr,
+  ply,
+  pytest,
+  pythonOlder,
+  pytz,
+  pyyaml,
+  requests,
+  requests-mock,
+  six,
+  testfixtures,
+  yamlloader,
 }:
 
 buildPythonPackage rec {
   pname = "pywbem";
-  version = "1.6.3";
+  version = "1.7.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-eN8w3umMUIYgtZm4lR8yKoHGwKnXt4/+XgF7lBfNl7k=";
+    hash = "sha256-3Dt4WEABf1/LY4HFZoJZjOu/yEUYUXaPheIxioTga2g=";
   };
 
   propagatedBuildInputs = [
@@ -58,15 +59,13 @@ buildPythonPackage rec {
     testfixtures
   ];
 
-  pythonImportsCheck = [
-    "pywbem"
-  ];
+  pythonImportsCheck = [ "pywbem" ];
 
   meta = with lib; {
     description = "Support for the WBEM standard for systems management";
     homepage = "https://pywbem.github.io";
     changelog = "https://github.com/pywbem/pywbem/blob/${version}/docs/changes.rst";
     license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyweatherflowrest/default.nix b/pkgs/development/python-modules/pyweatherflowrest/default.nix
index 2d04fe3feb21c..44d0ab267280a 100644
--- a/pkgs/development/python-modules/pyweatherflowrest/default.nix
+++ b/pkgs/development/python-modules/pyweatherflowrest/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyweatherflowrest";
   version = "1.0.11";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -20,26 +21,14 @@ buildPythonPackage rec {
     hash = "sha256-l1V3HgzqnnoY6sWHwfgBtcIR782RwKhekY2qOLrUMNY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-
-  propagatedBuildInputs = [
-    aiohttp
-  ];
-
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace "--cov=pyweatherflowrest --cov-append" ""
-  '';
+  dependencies = [ aiohttp ];
 
   # Module has no tests. test.py is a demo script
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyweatherflowrest"
-  ];
+  pythonImportsCheck = [ "pyweatherflowrest" ];
 
   meta = with lib; {
     description = "Python module to get data from WeatherFlow Weather Stations";
diff --git a/pkgs/development/python-modules/pyweatherflowudp/default.nix b/pkgs/development/python-modules/pyweatherflowudp/default.nix
index 34674635a4185..a39c1d3562942 100644
--- a/pkgs/development/python-modules/pyweatherflowudp/default.nix
+++ b/pkgs/development/python-modules/pyweatherflowudp/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pint
-, poetry-core
-, psychrolib
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pint,
+  poetry-core,
+  psychrolib,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-aTwGFYTtd07BsWFaFc7ns+8oh2AxTUfRFSu81Zv5OoA=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     pint
@@ -37,9 +36,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pyweatherflowudp"
-  ];
+  pythonImportsCheck = [ "pyweatherflowudp" ];
 
   disabledTests = [
     # Tests require network access
@@ -59,4 +56,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ fab ];
   };
 }
-
diff --git a/pkgs/development/python-modules/pywebcopy/default.nix b/pkgs/development/python-modules/pywebcopy/default.nix
new file mode 100644
index 0000000000000..e8d8cb61a3346
--- /dev/null
+++ b/pkgs/development/python-modules/pywebcopy/default.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pytestCheckHook,
+  setuptools,
+  cachecontrol,
+  lxml-html-clean,
+  requests,
+  six,
+}:
+
+buildPythonPackage rec {
+  pname = "pywebcopy";
+  version = "7.0.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "rajatomar788";
+    repo = "pywebcopy";
+    rev = "v${version}";
+    hash = "sha256-XTPk3doF9dqImsLtTB03YKMWLzQrJpJtjNXe+691rZo=";
+  };
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "pywebcopy" ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    cachecontrol
+    lxml-html-clean
+    requests
+    six
+  ];
+
+  meta = {
+    changelog = "https://github.com/rajatomar788/pywebcopy/blob/master/docs/changelog.md";
+    description = "Python package for cloning complete webpages and websites to local storage";
+    homepage = "https://github.com/rajatomar788/pywebcopy/";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ d3vil0p3r ];
+  };
+}
diff --git a/pkgs/development/python-modules/pywebpush/default.nix b/pkgs/development/python-modules/pywebpush/default.nix
index ebb3313b20c52..cc00679867f31 100644
--- a/pkgs/development/python-modules/pywebpush/default.nix
+++ b/pkgs/development/python-modules/pywebpush/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, cryptography
-, fetchPypi
-, http-ece
-, mock
-, py-vapid
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
-, six
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  http-ece,
+  mock,
+  py-vapid,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-A8zD6XW2A3S3Y0xJVZVha+Ujvyx9oNl26E/amsjGMwE=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     aiohttp
@@ -43,9 +42,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pywebpush"
-  ];
+  pythonImportsCheck = [ "pywebpush" ];
 
   meta = with lib; {
     description = "Webpush Data encryption library for Python";
diff --git a/pkgs/development/python-modules/pywebview/default.nix b/pkgs/development/python-modules/pywebview/default.nix
index b2d8322752211..db508d3e5ef92 100644
--- a/pkgs/development/python-modules/pywebview/default.nix
+++ b/pkgs/development/python-modules/pywebview/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools-scm
-, bottle
-, importlib-resources
-, proxy-tools
-, pygobject3
-, pyqtwebengine
-, pytest
-, pythonOlder
-, qt5
-, qtpy
-, six
-, xvfb-run
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  bottle,
+  importlib-resources,
+  proxy-tools,
+  pygobject3,
+  pyqtwebengine,
+  pytest,
+  pythonOlder,
+  qt5,
+  qtpy,
+  six,
+  xvfb-run,
 }:
 
 buildPythonPackage rec {
@@ -39,9 +40,7 @@ buildPythonPackage rec {
     pyqtwebengine
     proxy-tools
     six
-  ] ++ lib.optionals (pythonOlder "3.7") [
-    importlib-resources
-  ];
+  ] ++ lib.optionals (pythonOlder "3.7") [ importlib-resources ];
 
   nativeCheckInputs = [
     pygobject3
@@ -68,9 +67,7 @@ buildPythonPackage rec {
     popd
   '';
 
-  pythonImportsCheck = [
-    "webview"
-  ];
+  pythonImportsCheck = [ "webview" ];
 
   meta = with lib; {
     description = "Lightweight cross-platform wrapper around a webview";
diff --git a/pkgs/development/python-modules/pywemo/default.nix b/pkgs/development/python-modules/pywemo/default.nix
index c0e69285d15ad..4734e95229254 100644
--- a/pkgs/development/python-modules/pywemo/default.nix
+++ b/pkgs/development/python-modules/pywemo/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hypothesis
-, ifaddr
-, lxml
-, poetry-core
-, pytest-vcr
-, pytestCheckHook
-, pythonOlder
-, requests
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hypothesis,
+  ifaddr,
+  lxml,
+  poetry-core,
+  pytest-vcr,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  urllib3,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-XpCRrCJYHv1so5/aHoGrtkgp3RX1NUKPUawJqK/FaG0=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     ifaddr
@@ -45,9 +44,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "pywemo"
-  ];
+  pythonImportsCheck = [ "pywemo" ];
 
   meta = with lib; {
     description = "Python module to discover and control WeMo devices";
diff --git a/pkgs/development/python-modules/pywerview/default.nix b/pkgs/development/python-modules/pywerview/default.nix
index e3fb6770f3656..61ba21dc75867 100644
--- a/pkgs/development/python-modules/pywerview/default.nix
+++ b/pkgs/development/python-modules/pywerview/default.nix
@@ -1,40 +1,39 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchFromGitHub
-, gssapi
-, impacket
-, ldap3
-, lxml
-, pyasn1
-, pycryptodome
-, pythonOlder
-, setuptools
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gssapi,
+  impacket,
+  ldap3-bleeding-edge,
+  lxml,
+  pyasn1,
+  pycryptodome,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pywerview";
-  version = "0.6";
+  version = "0.7.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "the-useless-one";
-    repo ="pywerview";
+    repo = "pywerview";
     rev = "refs/tags/v${version}";
-    hash = "sha256-WZE6qWq9v4A78YELMEcbgyufBRrVFRTqlhGmknpKn1Y=";
+    hash = "sha256-G4kcKlb6bq9Vx52MVZ+DCN5k1QcvkoMXm9P959nA1fI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     beautifulsoup4
     gssapi
     impacket
-    ldap3
+    ldap3-bleeding-edge
     lxml
     pycryptodome
     pyasn1
@@ -43,16 +42,14 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pywerview"
-  ];
+  pythonImportsCheck = [ "pywerview" ];
 
   meta = with lib; {
     description = "Module for PowerSploit's PowerView support";
-    mainProgram = "pywerview";
     homepage = "https://github.com/the-useless-one/pywerview";
     changelog = "https://github.com/the-useless-one/pywerview/releases/tag/v${version}";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "pywerview";
   };
 }
diff --git a/pkgs/development/python-modules/pywfa/default.nix b/pkgs/development/python-modules/pywfa/default.nix
index 2aca36a07da71..e782071aadbd2 100644
--- a/pkgs/development/python-modules/pywfa/default.nix
+++ b/pkgs/development/python-modules/pywfa/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, cython
-, setuptools
-, wheel
-, pysam
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  cython,
+  setuptools,
+  wheel,
+  pysam,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -46,7 +47,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python wrapper for wavefront alignment using WFA2-lib";
     homepage = "https://github.com/kcleal/pywfa";
-    changelog = "https://github.com/kcleal/pywfa/releases/tag/${src.rev}";
+    changelog = "https://github.com/kcleal/pywfa/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ natsukium ];
   };
diff --git a/pkgs/development/python-modules/pywilight/default.nix b/pkgs/development/python-modules/pywilight/default.nix
index e25f24d403347..1c8d28858c75f 100644
--- a/pkgs/development/python-modules/pywilight/default.nix
+++ b/pkgs/development/python-modules/pywilight/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, ifaddr
-, requests
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  ifaddr,
+  requests,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pywilight"
-  ];
+  pythonImportsCheck = [ "pywilight" ];
 
   meta = with lib; {
     description = "Python API for WiLight device";
diff --git a/pkgs/development/python-modules/pywinrm/default.nix b/pkgs/development/python-modules/pywinrm/default.nix
index 2455b476a4d95..6350402a7739a 100644
--- a/pkgs/development/python-modules/pywinrm/default.nix
+++ b/pkgs/development/python-modules/pywinrm/default.nix
@@ -1,51 +1,60 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, mock
-, pytestCheckHook
-, requests
-, requests-ntlm
-, six
-, xmltodict
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  pykerberos,
+  pytestCheckHook,
+  pythonOlder,
+  requests-credssp,
+  requests-ntlm,
+  requests,
+  setuptools,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
   pname = "pywinrm";
-  version = "0.4.3";
-  format = "setuptools";
+  version = "0.5.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-mVZ0v1rGSyViycVlQEcxCeUw02veEMJi1aUpYSGtVWU=";
+    hash = "sha256-VCjrHklK95VFRs1P8Vye8aMKdeBbJaOf1gbO8iIB6fE=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     requests
     requests-ntlm
-    six
     xmltodict
   ];
 
+  optional-dependencies = {
+    credssp = [ requests-credssp ];
+    kerberos = [ pykerberos ];
+  };
+
   nativeCheckInputs = [
     mock
     pytestCheckHook
-  ];
+  ] ++ lib.flatten (builtins.attrValues optional-dependencies);
 
-  pythonImportsCheck = [
-    "winrm"
-  ];
+  pythonImportsCheck = [ "winrm" ];
 
-  pytestFlagsArray = [
-    "winrm/tests/"
-  ];
+  pytestFlagsArray = [ "winrm/tests/" ];
 
   meta = with lib; {
     description = "Python library for Windows Remote Management";
     homepage = "https://github.com/diyan/pywinrm";
+    changelog = "https://github.com/diyan/pywinrm/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ elasticdog kamadorueda ];
+    maintainers = with maintainers; [
+      elasticdog
+      kamadorueda
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pywizlight/default.nix b/pkgs/development/python-modules/pywizlight/default.nix
index 860ce91d71446..3a925663da96e 100644
--- a/pkgs/development/python-modules/pywizlight/default.nix
+++ b/pkgs/development/python-modules/pywizlight/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,18 +22,14 @@ buildPythonPackage rec {
     hash = "sha256-IkuAYEg5nuUT6zxmuJe6afp4MVWf0+HAnEoAdOrdTvQ=";
   };
 
-  propagatedBuildInputs = [
-    click
-  ];
+  propagatedBuildInputs = [ click ];
 
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "--asyncio-mode=auto"
-  ];
+  pytestFlagsArray = [ "--asyncio-mode=auto" ];
 
   disabledTests = [
     # Tests requires network features (e. g., discovery testing)
@@ -43,9 +40,7 @@ buildPythonPackage rec {
     "test_error_PilotBuilder_cold_white_lower"
   ];
 
-  pythonImportsCheck = [
-    "pywizlight"
-  ];
+  pythonImportsCheck = [ "pywizlight" ];
 
   meta = with lib; {
     description = "Python connector for WiZ light bulbs";
diff --git a/pkgs/development/python-modules/pywlroots/default.nix b/pkgs/development/python-modules/pywlroots/default.nix
index ec39364573913..2e2d887b4c792 100644
--- a/pkgs/development/python-modules/pywlroots/default.nix
+++ b/pkgs/development/python-modules/pywlroots/default.nix
@@ -1,39 +1,53 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, cffi
-, pkg-config
-, libxkbcommon
-, libinput
-, pixman
-, pythonOlder
-, udev
-, wlroots
-, wayland
-, pywayland
-, xkbcommon
-, xorg
-, pytestCheckHook
-, qtile
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  cffi,
+  pkg-config,
+  libxkbcommon,
+  libinput,
+  pixman,
+  pythonOlder,
+  udev,
+  wlroots,
+  wayland,
+  pywayland,
+  xkbcommon,
+  xorg,
+  pytestCheckHook,
+  qtile,
 }:
 
 buildPythonPackage rec {
   pname = "pywlroots";
-  version = "0.16.7";
+  version = "0.17.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-zfjcXQCXysG+JMw00YES/GQk/yjHH9kCksb9SlZt9wo=";
+    hash = "sha256-cssr4UBIwMvInM8bV4YwE6mXf9USSMMAzMcgAefEPbs=";
   };
 
   nativeBuildInputs = [ pkg-config ];
   propagatedNativeBuildInputs = [ cffi ];
-  buildInputs = [ libinput libxkbcommon pixman xorg.libxcb xorg.xcbutilwm udev wayland wlroots ];
-  propagatedBuildInputs = [ cffi pywayland xkbcommon ];
+  buildInputs = [
+    libinput
+    libxkbcommon
+    pixman
+    xorg.libxcb
+    xorg.xcbutilwm
+    udev
+    wayland
+    wlroots
+  ];
+  propagatedBuildInputs = [
+    cffi
+    pywayland
+    xkbcommon
+  ];
   nativeCheckInputs = [ pytestCheckHook ];
 
   postBuild = ''
@@ -42,7 +56,9 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "wlroots" ];
 
-  passthru.tests = { inherit qtile; };
+  passthru.tests = {
+    inherit qtile;
+  };
 
   meta = with lib; {
     homepage = "https://github.com/flacjacket/pywlroots";
diff --git a/pkgs/development/python-modules/pyworld/default.nix b/pkgs/development/python-modules/pyworld/default.nix
index cf1547c8cab6f..76addd25795e6 100644
--- a/pkgs/development/python-modules/pyworld/default.nix
+++ b/pkgs/development/python-modules/pyworld/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, cython
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  cython,
 }:
 
 buildPythonPackage rec {
@@ -15,13 +16,9 @@ buildPythonPackage rec {
     hash = "sha256-EGxw7np9jJukiNgCLyAzcGkppA8CZCVrjofaWquYMDo=";
   };
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   pythonImportsCheck = [ "pyworld" ];
 
diff --git a/pkgs/development/python-modules/pyws66i/default.nix b/pkgs/development/python-modules/pyws66i/default.nix
index 6931a0531cedf..47df292892020 100644
--- a/pkgs/development/python-modules/pyws66i/default.nix
+++ b/pkgs/development/python-modules/pyws66i/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-NTL2+xLqSNsz4YdUTwr0nFjhm1NNgB8qDnWSoE2sizY=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyws66i"
-  ];
+  pythonImportsCheck = [ "pyws66i" ];
 
   meta = with lib; {
     description = "Library to interface with WS66i 6-zone amplifier";
diff --git a/pkgs/development/python-modules/pyx/default.nix b/pkgs/development/python-modules/pyx/default.nix
index 393f631233228..0cb5b39462e6b 100644
--- a/pkgs/development/python-modules/pyx/default.nix
+++ b/pkgs/development/python-modules/pyx/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyxattr/default.nix b/pkgs/development/python-modules/pyxattr/default.nix
index ebb922c8d97a5..67fd9778ebb3b 100644
--- a/pkgs/development/python-modules/pyxattr/default.nix
+++ b/pkgs/development/python-modules/pyxattr/default.nix
@@ -1,27 +1,28 @@
-{ lib
-, pkgs
-, fetchPypi
-, buildPythonPackage
+{
+  lib,
+  pkgs,
+  fetchPypi,
+  buildPythonPackage,
 }:
 
 buildPythonPackage rec {
-    pname = "pyxattr";
-    version = "0.8.1";
-    format = "setuptools";
+  pname = "pyxattr";
+  version = "0.8.1";
+  format = "setuptools";
 
-    src = fetchPypi {
-      inherit pname version;
-      hash = "sha256-SMV47PjqC9Q1GxdSRw4wGpCjdhx8IfAPlT3PbW+m7lo=";
-    };
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-SMV47PjqC9Q1GxdSRw4wGpCjdhx8IfAPlT3PbW+m7lo=";
+  };
 
-    # IOError: [Errno 95] Operation not supported (expected)
-    doCheck = false;
+  # IOError: [Errno 95] Operation not supported (expected)
+  doCheck = false;
 
-    buildInputs = with pkgs; [ attr ];
+  buildInputs = with pkgs; [ attr ];
 
-    meta = with lib; {
-      description = "A Python extension module which gives access to the extended attributes for filesystem objects available in some operating systems";
-      license = licenses.lgpl21Plus;
-      inherit (pkgs.attr.meta) platforms;
-    };
+  meta = with lib; {
+    description = "Python extension module which gives access to the extended attributes for filesystem objects available in some operating systems";
+    license = licenses.lgpl21Plus;
+    inherit (pkgs.attr.meta) platforms;
+  };
 }
diff --git a/pkgs/development/python-modules/pyxbe/default.nix b/pkgs/development/python-modules/pyxbe/default.nix
index 3442d5f9848ef..7fc137cdaf1d4 100644
--- a/pkgs/development/python-modules/pyxbe/default.nix
+++ b/pkgs/development/python-modules/pyxbe/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-iLzGGgizUbaEG1xrNq4WDaWrGtcaLwAYgn4NGYiSDBo=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Update location for run with pytest
   preCheck = ''
@@ -29,9 +28,7 @@ buildPythonPackage rec {
       --replace '"xbefiles"' '"tests/xbefiles"'
   '';
 
-  pythonImportsCheck = [
-    "xbe"
-  ];
+  pythonImportsCheck = [ "xbe" ];
 
   meta = with lib; {
     description = "Library to work with XBE files";
diff --git a/pkgs/development/python-modules/pyxdg/default.nix b/pkgs/development/python-modules/pyxdg/default.nix
index a5ef39c2f69a6..b7ec762f7d6b5 100644
--- a/pkgs/development/python-modules/pyxdg/default.nix
+++ b/pkgs/development/python-modules/pyxdg/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitLab
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
 }:
 
 buildPythonPackage rec {
@@ -8,7 +9,7 @@ buildPythonPackage rec {
   version = "0.28";
   format = "setuptools";
 
-  src =  fetchFromGitLab {
+  src = fetchFromGitLab {
     domain = "gitlab.freedesktop.org";
     owner = "xdg";
     repo = pname;
diff --git a/pkgs/development/python-modules/pyxeoma/default.nix b/pkgs/development/python-modules/pyxeoma/default.nix
index 2036440a4699b..18199146a9210 100644
--- a/pkgs/development/python-modules/pyxeoma/default.nix
+++ b/pkgs/development/python-modules/pyxeoma/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyxiaomigateway/default.nix b/pkgs/development/python-modules/pyxiaomigateway/default.nix
index dde2e8df94ae3..c42d7f055c8c2 100644
--- a/pkgs/development/python-modules/pyxiaomigateway/default.nix
+++ b/pkgs/development/python-modules/pyxiaomigateway/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cryptography
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cryptography,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyxl3/default.nix b/pkgs/development/python-modules/pyxl3/default.nix
index e6f940e0272f0..04d5ef2b5b969 100644
--- a/pkgs/development/python-modules/pyxl3/default.nix
+++ b/pkgs/development/python-modules/pyxl3/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, isPy27
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  isPy27,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/pyxlsb/default.nix b/pkgs/development/python-modules/pyxlsb/default.nix
index df000db7e25df..36e33930d47d4 100644
--- a/pkgs/development/python-modules/pyxlsb/default.nix
+++ b/pkgs/development/python-modules/pyxlsb/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -21,6 +22,5 @@ buildPythonPackage rec {
     description = "Excel 2007-2010 Binary Workbook (xlsb) parser";
     homepage = "https://github.com/willtrnr/pyxlsb";
     license = licenses.lgpl3Plus;
-    maintainers = with maintainers; [ elohmeier ];
   };
 }
diff --git a/pkgs/development/python-modules/pyxnat/default.nix b/pkgs/development/python-modules/pyxnat/default.nix
index 6fc74602a8a85..b6f0944cfa5ac 100644
--- a/pkgs/development/python-modules/pyxnat/default.nix
+++ b/pkgs/development/python-modules/pyxnat/default.nix
@@ -1,20 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, lxml
-, matplotlib
-, networkx
-, pandas
-, requests
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  lxml,
+  matplotlib,
+  networkx,
+  pandas,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyxnat";
-  version = "1.6";
-  format = "setuptools";
+  version = "1.6.2";
+  pyproject = true;
+
   disabled = pythonOlder "3.8";
 
   # PyPI dist missing test configuration files:
@@ -22,21 +24,19 @@ buildPythonPackage rec {
     owner = "pyxnat";
     repo = "pyxnat";
     rev = "refs/tags/${version}";
-    hash = "sha256-QejYisvQFN7CsDOx9wAgTHmRZcSEqgIr8twG4XucfZ4=";
+    hash = "sha256-21nTIYbIYlFWNJTxqsuijamqRunpdc7/VBawvrWadWI=";
   };
 
+  build-system = [ setuptools ];
+
   propagatedBuildInputs = [
     lxml
     requests
-    six
   ];
 
-  # future is not used, and pathlib is installed part of python38+
-  # w/o an external package
+  # pathlib is installed part of python38+ w/o an external package
   prePatch = ''
-    substituteInPlace setup.py \
-      --replace "pathlib>=1.0" "" \
-      --replace "future>=0.16" ""
+    substituteInPlace setup.py --replace-fail "pathlib>=1.0" ""
     sed -i '/--cov/d' setup.cfg
   '';
 
@@ -51,15 +51,24 @@ buildPythonPackage rec {
   '';
   pytestFlagsArray = [ "pyxnat" ];
   disabledTestPaths = [
-    # try to access network even though PYXNAT_SKIP_NETWORK_TESTS is set:
+    # require a running local XNAT instance e.g. in a docker container:
+    "pyxnat/tests/attributes_test.py"
+    "pyxnat/tests/custom_variables_test.py"
+    "pyxnat/tests/interfaces_test.py"
     "pyxnat/tests/pipelines_test.py"
+    "pyxnat/tests/provenance_test.py"
+    "pyxnat/tests/prearchive_test.py"
+    "pyxnat/tests/repr_test.py"
+    "pyxnat/tests/resources_test.py"
     "pyxnat/tests/search_test.py"
+    "pyxnat/tests/sessionmirror_test.py"
+    "pyxnat/tests/test_resource_functions.py"
     "pyxnat/tests/user_and_project_management_test.py"
   ];
   disabledTests = [
     # try to access network even though PYXNAT_SKIP_NETWORK_TESTS is set:
-    "test_ashs_volumes"
     "test_inspector_structure"
+    "test_project_manager"
   ];
 
   pythonImportsCheck = [ "pyxnat" ];
diff --git a/pkgs/development/python-modules/pyyaml-env-tag/default.nix b/pkgs/development/python-modules/pyyaml-env-tag/default.nix
index 71488c1bb5eb7..8167c85c6534f 100644
--- a/pkgs/development/python-modules/pyyaml-env-tag/default.nix
+++ b/pkgs/development/python-modules/pyyaml-env-tag/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pyyaml
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pyyaml,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,13 +19,9 @@ buildPythonPackage rec {
     sha256 = "1nsva88jsmwn0cb9jnrfiz4dvs9xakkpgfii7g1xwkx1pmsjc2bh";
   };
 
-  propagatedBuildInputs = [
-    pyyaml
-  ];
+  propagatedBuildInputs = [ pyyaml ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "yaml_env_tag" ];
 
diff --git a/pkgs/development/python-modules/pyyaml-include/default.nix b/pkgs/development/python-modules/pyyaml-include/default.nix
index 3b5b9faeec9ef..5e14b6cd84827 100644
--- a/pkgs/development/python-modules/pyyaml-include/default.nix
+++ b/pkgs/development/python-modules/pyyaml-include/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pyyaml
-, setuptools
-, setuptools-scm
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pyyaml,
+  setuptools,
+  setuptools-scm,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    pyyaml
-  ];
+  propagatedBuildInputs = [ pyyaml ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "yamlinclude" ];
 
@@ -40,6 +37,6 @@ buildPythonPackage rec {
     description = "Extending PyYAML with a custom constructor for including YAML files within YAML files";
     homepage = "https://github.com/tanbro/pyyaml-include";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyyaml/default.nix b/pkgs/development/python-modules/pyyaml/default.nix
index ce562e48ce549..f9aafffd09055 100644
--- a/pkgs/development/python-modules/pyyaml/default.nix
+++ b/pkgs/development/python-modules/pyyaml/default.nix
@@ -1,45 +1,42 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, cython_0
-, setuptools
-, libyaml
-, python
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  cython,
+  setuptools,
+  libyaml,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "pyyaml";
-  version = "6.0.1";
+  version = "6.0.2";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
-
-  format = "pyproject";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "yaml";
     repo = "pyyaml";
-    rev = version;
-    hash = "sha256-YjWMyMVDByLsN5vEecaYjHpR1sbBey1L/khn4oH9SPA=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-IQoZd9Lp0ZHLAQN3PFwMsZVTsIVJyIaT9D6fpkzA8IA=";
   };
 
-  nativeBuildInputs = [
-    cython_0
+  build-system = [
+    cython
     setuptools
   ];
 
   buildInputs = [ libyaml ];
 
-  checkPhase = ''
-    runHook preCheck
-    PYTHONPATH="tests/lib:$PYTHONPATH" ${python.interpreter} -m test_all
-    runHook postCheck
-  '';
-
   pythonImportsCheck = [ "yaml" ];
 
+  nativeCheckInputs = [ pytestCheckHook ];
+
   meta = with lib; {
-    description = "The next generation YAML parser and emitter for Python";
+    changelog = "https://github.com/yaml/pyyaml/blob/${src.rev}/CHANGES";
+    description = "Next generation YAML parser and emitter for Python";
     homepage = "https://github.com/yaml/pyyaml";
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/pkgs/development/python-modules/pyyardian/default.nix b/pkgs/development/python-modules/pyyardian/default.nix
index 0216d562faea7..f0c76c798bc05 100644
--- a/pkgs/development/python-modules/pyyardian/default.nix
+++ b/pkgs/development/python-modules/pyyardian/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pythonOlder
-, wheel
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -26,16 +27,12 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Tests require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyyardian"
-  ];
+  pythonImportsCheck = [ "pyyardian" ];
 
   meta = with lib; {
     description = "Module for interacting with the Yardian irrigation controller";
diff --git a/pkgs/development/python-modules/pyzabbix/default.nix b/pkgs/development/python-modules/pyzabbix/default.nix
index ae695f6f86846..1dd570d0660fa 100644
--- a/pkgs/development/python-modules/pyzabbix/default.nix
+++ b/pkgs/development/python-modules/pyzabbix/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, packaging
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  packaging,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-2yCbxPUlbTrtjD9eKmkw0fKnjiwPzmjIo5vKGv4aerU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     packaging
@@ -33,9 +32,7 @@ buildPythonPackage rec {
   # Tests require a running Zabbix instance
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyzabbix"
-  ];
+  pythonImportsCheck = [ "pyzabbix" ];
 
   meta = with lib; {
     description = "Module to interact with the Zabbix API";
diff --git a/pkgs/development/python-modules/pyzbar/default.nix b/pkgs/development/python-modules/pyzbar/default.nix
index 334db791c3b7c..3a5c0b6ff36f7 100644
--- a/pkgs/development/python-modules/pyzbar/default.nix
+++ b/pkgs/development/python-modules/pyzbar/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, pillow
-, zbar
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  pillow,
+  zbar,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,7 +23,10 @@ buildPythonPackage rec {
 
   buildInputs = [ zbar ];
 
-  propagatedBuildInputs = [ pillow numpy ];
+  propagatedBuildInputs = [
+    pillow
+    numpy
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
@@ -45,7 +49,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "pyzbar" ];
 
   meta = with lib; {
-    description = "Read one-dimensional barcodes and QR codes from Python using the zbar library.";
+    description = "Read one-dimensional barcodes and QR codes from Python using the zbar library";
     homepage = "https://github.com/NaturalHistoryMuseum/pyzbar";
     license = licenses.mit;
     maintainers = with maintainers; [ gador ];
diff --git a/pkgs/development/python-modules/pyzerproc/default.nix b/pkgs/development/python-modules/pyzerproc/default.nix
index 6270b26bb7189..5245b0205f374 100644
--- a/pkgs/development/python-modules/pyzerproc/default.nix
+++ b/pkgs/development/python-modules/pyzerproc/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, bleak
-, click
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytest-mock
-, pythonAtLeast
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  bleak,
+  click,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytest-mock,
+  pythonAtLeast,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -44,9 +45,7 @@ buildPythonPackage rec {
     "tests/test_light.py"
   ];
 
-  pythonImportsCheck = [
-    "pyzerproc"
-  ];
+  pythonImportsCheck = [ "pyzerproc" ];
 
   meta = with lib; {
     description = "Python library to control Zerproc Bluetooth LED smart string lights";
diff --git a/pkgs/development/python-modules/pyzipper/default.nix b/pkgs/development/python-modules/pyzipper/default.nix
index 5aa583228b49a..8112958b10c35 100644
--- a/pkgs/development/python-modules/pyzipper/default.nix
+++ b/pkgs/development/python-modules/pyzipper/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, pycryptodomex
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  pycryptodomex,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -23,21 +24,13 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pycryptodomex
-  ];
+  propagatedBuildInputs = [ pycryptodomex ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyzipper"
-  ];
+  pythonImportsCheck = [ "pyzipper" ];
 
   disabledTests = [
     # Tests are parsing CLI output
diff --git a/pkgs/development/python-modules/pyzmq/default.nix b/pkgs/development/python-modules/pyzmq/default.nix
index 51429d535df4a..6c4b8076294fd 100644
--- a/pkgs/development/python-modules/pyzmq/default.nix
+++ b/pkgs/development/python-modules/pyzmq/default.nix
@@ -1,55 +1,52 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPyPy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
 
-# build-system
-, cython
-, setuptools
-, setuptools-scm
-, packaging
-, cffi
+  # build-system
+  cffi,
+  cython,
+  cmake,
+  ninja,
+  packaging,
+  pathspec,
+  scikit-build-core,
 
-# dependencies
-
-, py
-, pytestCheckHook
-, python
-, pythonOlder
-, tornado
-, zeromq
-, pytest-asyncio
+  # checks
+  pytestCheckHook,
+  python,
+  pythonOlder,
+  tornado,
+  zeromq,
+  pytest-asyncio,
 }:
 
 buildPythonPackage rec {
   pname = "pyzmq";
-  version = "25.1.2";
+  version = "26.0.3";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-k/GqMR6LuRLjTwBM8YZAek6Q7sTw7MDv0mBWv37aAiY=";
+    hash = "sha256-26fZ8uBH36K8o7AfT4SqUkZyUgPWKE43kPLKFfumtAo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    setuptools-scm
+  build-system = [
+    cmake
+    ninja
     packaging
-  ] ++ (if isPyPy then [
-    cffi
-  ] else [
-    cython
-  ]);
+    pathspec
+    scikit-build-core
+  ] ++ (if isPyPy then [ cffi ] else [ cython ]);
 
-  buildInputs = [
-    zeromq
-  ];
+  dontUseCmakeConfigure = true;
 
-  propagatedBuildInputs = lib.optionals isPyPy [
-    cffi
-  ];
+  buildInputs = [ zeromq ];
+
+  dependencies = lib.optionals isPyPy [ cffi ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -57,9 +54,7 @@ buildPythonPackage rec {
     pytest-asyncio
   ];
 
-  pythonImportsCheck = [
-    "zmq"
-  ];
+  pythonImportsCheck = [ "zmq" ];
 
   pytestFlagsArray = [
     "$out/${python.sitePackages}/zmq/tests/" # Folder with tests
@@ -89,7 +84,10 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python bindings for ØMQ";
     homepage = "https://pyzmq.readthedocs.io/";
-    license = with licenses; [ bsd3 /* or */ lgpl3Only ];
-    maintainers = with maintainers; [ ];
+    license = with licenses; [
+      bsd3 # or
+      lgpl3Only
+    ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyzufall/default.nix b/pkgs/development/python-modules/pyzufall/default.nix
deleted file mode 100644
index 71418c1607d02..0000000000000
--- a/pkgs/development/python-modules/pyzufall/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ lib, fetchPypi, python, buildPythonPackage, nose, future, coverage }:
-
-buildPythonPackage rec {
-  pname = "pyzufall";
-  version = "0.13.2";
-
-  src = fetchPypi {
-    pname = "PyZufall";
-    inherit version;
-    sha256 = "1jffhi20m82fdf78bjhncbdxkfzcskrlipxlrqq9741xdvrn14b5";
-  };
-
-  # disable tests due to problem with nose
-  # https://github.com/nose-devs/nose/issues/1037
-  doCheck = false;
-
-  nativeCheckInputs = [ nose coverage ];
-  propagatedBuildInputs = [ future ];
-
-  checkPhase = ''
-    ${python.interpreter} setup.py nosetests
-  '';
-
-  meta = with lib; {
-    homepage = "https://pyzufall.readthedocs.io/de/latest/";
-    description = "Library for generating random data and sentences in german language";
-    license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ davidak ];
-  };
-}
diff --git a/pkgs/development/python-modules/pyzx/default.nix b/pkgs/development/python-modules/pyzx/default.nix
new file mode 100644
index 0000000000000..d39d2b48ef240
--- /dev/null
+++ b/pkgs/development/python-modules/pyzx/default.nix
@@ -0,0 +1,66 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+  ipywidgets,
+  lark,
+  numpy,
+  pyperclip,
+  tqdm,
+  typing-extensions,
+}:
+
+buildPythonPackage rec {
+  pname = "pyzx";
+  version = "0.8.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "zxcalc";
+    repo = "pyzx";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-4yc4P2v2L/F/A1A9z41ow2KA0aUA+3SJyC+wyMWzhwM=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    ipywidgets
+    lark
+    numpy
+    pyperclip
+    tqdm
+    typing-extensions
+  ];
+
+  pythonRelaxDeps = [ "ipywidgets" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+  disabledTestPaths = [
+    # too expensive, and print results instead of reporting failures:
+    "tests/long_scalar_test.py"
+    "tests/long_test.py"
+  ];
+
+  pythonImportsCheck = [
+    "pyzx"
+    "pyzx.circuit"
+    "pyzx.graph"
+    "pyzx.routing"
+    "pyzx.local_search"
+    "pyzx.scripts"
+  ];
+
+  meta = {
+    description = "Library for quantum circuit rewriting and optimisation using the ZX-calculus";
+    homepage = "https://github.com/zxcalc/pyzx";
+    changelog = "https://github.com/zxcalc/pyzx/blob/${src.rev}/CHANGELOG.md";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ bcdarwin ];
+  };
+}
diff --git a/pkgs/development/python-modules/qasync/default.nix b/pkgs/development/python-modules/qasync/default.nix
index d8eb5b4c7c694..58451552bd3f6 100644
--- a/pkgs/development/python-modules/qasync/default.nix
+++ b/pkgs/development/python-modules/qasync/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyqt5
-, pytestCheckHook
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyqt5,
+  pytestCheckHook,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "qasync" ];
 
-  disabledTestPaths = [
-    "tests/test_qeventloop.py"
-  ];
+  disabledTestPaths = [ "tests/test_qeventloop.py" ];
 
   meta = {
     description = "Allows coroutines to be used in PyQt/PySide applications by providing an implementation of the PEP 3156 event-loop";
diff --git a/pkgs/development/python-modules/qbittorrent-api/default.nix b/pkgs/development/python-modules/qbittorrent-api/default.nix
index c2087c3f52b15..f38927594aa7d 100644
--- a/pkgs/development/python-modules/qbittorrent-api/default.nix
+++ b/pkgs/development/python-modules/qbittorrent-api/default.nix
@@ -1,21 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, urllib3
-, packaging
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  urllib3,
+  packaging,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "qbittorrent-api";
-  version = "2024.3.60";
+  version = "2024.9.66";
   pyproject = true;
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-gnT19BKyPqzcRK1aKsC97NxktR4aqPd3LOlVo9/1gJY=";
+    pname = "qbittorrent_api";
+    inherit version;
+    hash = "sha256-Vx5ShmEARDfQtIldTQuL0LkLUdo0QE/ANsLa4yq3OXo=";
   };
 
   propagatedBuildInputs = [
@@ -32,9 +34,7 @@ buildPythonPackage rec {
   # Tests require internet access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "qbittorrentapi"
-  ];
+  pythonImportsCheck = [ "qbittorrentapi" ];
 
   meta = with lib; {
     description = "Python client implementation for qBittorrent's Web API";
diff --git a/pkgs/development/python-modules/qcelemental/default.nix b/pkgs/development/python-modules/qcelemental/default.nix
index 59c8f47eea386..71cfa490452b0 100644
--- a/pkgs/development/python-modules/qcelemental/default.nix
+++ b/pkgs/development/python-modules/qcelemental/default.nix
@@ -1,19 +1,20 @@
-{ stdenv
-, buildPythonPackage
-, lib
-, fetchPypi
-, poetry-core
-, networkx
-, numpy
-, pint
-, pydantic
-, pytestCheckHook
-, pythonOlder
+{
+  stdenv,
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+  poetry-core,
+  networkx,
+  numpy,
+  pint,
+  pydantic,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "qcelemental";
-  version = "0.27.1";
+  version = "0.28.0";
 
   pyproject = true;
 
@@ -21,12 +22,10 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-dlcfIUKAg6yc4S3RXVJ1sKM29E1ZvHY82kjx1CM8/08=";
+    hash = "sha256-2pb924jBcB+BKyU2mmoWnTXy1URsN8YuhgSMsPGxaKI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     networkx
@@ -35,16 +34,12 @@ buildPythonPackage rec {
     pydantic
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "qcelemental"
-  ];
+  pythonImportsCheck = [ "qcelemental" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     description = "Periodic table, physical constants and molecule parsing for quantum chemistry";
     homepage = "https://github.com/MolSSI/QCElemental";
     changelog = "https://github.com/MolSSI/QCElemental/blob/v${version}/docs/changelog.rst";
diff --git a/pkgs/development/python-modules/qcengine/default.nix b/pkgs/development/python-modules/qcengine/default.nix
index 7c572c98ea768..4d5b62c62083f 100644
--- a/pkgs/development/python-modules/qcengine/default.nix
+++ b/pkgs/development/python-modules/qcengine/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, psutil
-, py-cpuinfo
-, pydantic
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, qcelemental
-, msgpack
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  psutil,
+  py-cpuinfo,
+  pydantic,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  qcelemental,
+  msgpack,
 }:
 
 buildPythonPackage rec {
   pname = "qcengine";
-  version = "0.29.0";
+  version = "0.30.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-cIfX9MpRMXtBfLKHKTzCLkv31fBIyanTQHEs8hHk7aQ=";
+    hash = "sha256-umLTTbz0h+g2j2wZdioZ4cXwavfnBfbFg8BjKzW8z30=";
   };
 
   propagatedBuildInputs = [
@@ -32,13 +33,9 @@ buildPythonPackage rec {
     msgpack
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "qcengine"
-  ];
+  pythonImportsCheck = [ "qcengine" ];
 
   meta = with lib; {
     description = "Quantum chemistry program executor and IO standardizer (QCSchema) for quantum chemistry";
diff --git a/pkgs/development/python-modules/qcodes-contrib-drivers/default.nix b/pkgs/development/python-modules/qcodes-contrib-drivers/default.nix
index c50def28bc118..d6bd8c809582a 100644
--- a/pkgs/development/python-modules/qcodes-contrib-drivers/default.nix
+++ b/pkgs/development/python-modules/qcodes-contrib-drivers/default.nix
@@ -1,35 +1,44 @@
-{ lib
-, fetchFromGitHub
-, pythonOlder
-, buildPythonPackage
-, setuptools
-, versioningit
-, qcodes
-, packaging
-, pytestCheckHook
-, pytest-mock
-, pyvisa-sim
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  versioningit,
+  cffi,
+  qcodes,
+  packaging,
+  pandas,
+  pytestCheckHook,
+  pytest-mock,
+  pyvisa-sim,
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "qcodes-contrib-drivers";
-  version = "0.21.0";
+  version = "0.22.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
-  format = "pyproject";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "QCoDeS";
     repo = "Qcodes_contrib_drivers";
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-7WkG6Bq4J4PU4eWX52RaupQ8cNzE+sJ7s3PoXFRxG2w=";
+    sha256 = "sha256-/W5oC5iqYifMR3/s7aSQ2yTJNmkemkc0KVxIU0Es3zY=";
   };
 
-  nativeBuildInputs = [ setuptools versioningit ];
+  build-system = [
+    setuptools
+    versioningit
+  ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    cffi
     qcodes
     packaging
+    pandas
   ];
 
   nativeCheckInputs = [
@@ -40,19 +49,25 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "qcodes_contrib_drivers" ];
 
-  # should be fixed starting with 0.19.0, remove at next release
-  disabledTestPaths = [
-    "qcodes_contrib_drivers/tests/test_Keysight_M3201A.py"
-  ];
+  disabledTests =
+    lib.optionals (stdenv.hostPlatform.isDarwin) [
+      # At index 13 diff: 'sour6:volt 0.29000000000000004' != 'sour6:volt 0.29'
+      "test_stability_diagram_external"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
+      # AssertionError: assert ['outp:trig4:...9999996', ...] == ['outp:trig4:...t 0.266', ...]
+      "test_stability_diagram_external"
+    ];
 
   postInstall = ''
     export HOME="$TMPDIR"
   '';
 
-  meta = with lib; {
+  meta = {
     description = "User contributed drivers for QCoDeS";
     homepage = "https://github.com/QCoDeS/Qcodes_contrib_drivers";
-    license = licenses.mit;
-    maintainers = with maintainers; [ evilmav ];
+    changelog = "https://github.com/QCoDeS/Qcodes_contrib_drivers/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ evilmav ];
   };
 }
diff --git a/pkgs/development/python-modules/qcodes/default.nix b/pkgs/development/python-modules/qcodes/default.nix
index 740939959e764..e10eb77d2816a 100644
--- a/pkgs/development/python-modules/qcodes/default.nix
+++ b/pkgs/development/python-modules/qcodes/default.nix
@@ -1,72 +1,84 @@
-{ lib
-, broadbean
-, buildPythonPackage
-, cf-xarray
-, dask
-, deepdiff
-, fetchFromGitHub
-, h5netcdf
-, h5py
-, hypothesis
-, importlib-metadata
-, ipykernel
-, ipython
-, ipywidgets
-, jsonschema
-, lxml
-, matplotlib
-, numpy
-, opencensus
-, opencensus-ext-azure
-, opentelemetry-api
-, packaging
-, pandas
-, pillow
-, pip
-, pytest-asyncio
-, pytest-mock
-, pytest-rerunfailures
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, pyvisa
-, pyvisa-sim
-, rsa
-, ruamel-yaml
-, setuptools
-, sphinx
-, tabulate
-, tqdm
-, typing-extensions
-, uncertainties
-, versioningit
-, websockets
-, wheel
-, wrapt
-, xarray
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+  versioningit,
+  wheel,
+
+  # dependencies
+  broadbean,
+  cf-xarray,
+  dask,
+  h5netcdf,
+  h5py,
+  ipykernel,
+  ipython,
+  ipywidgets,
+  jsonschema,
+  libcst,
+  matplotlib,
+  numpy,
+  opentelemetry-api,
+  packaging,
+  pandas,
+  pillow,
+  pyarrow,
+  pyvisa,
+  ruamel-yaml,
+  tabulate,
+  tqdm,
+  typing-extensions,
+  uncertainties,
+  websockets,
+  wrapt,
+  xarray,
+
+  # optional-dependencies
+  furo,
+  jinja2,
+  nbsphinx,
+  pyvisa-sim,
+  scipy,
+  sphinx,
+  sphinx-issues,
+  towncrier,
+  opencensus,
+  opencensus-ext-azure,
+
+  # checks
+  deepdiff,
+  hypothesis,
+  lxml,
+  pip,
+  pytest-asyncio,
+  pytest-mock,
+  pytest-rerunfailures,
+  pytest-xdist,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "qcodes";
-  version = "0.44.1";
+  version = "0.48.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
-
   src = fetchFromGitHub {
     owner = "microsoft";
     repo = "Qcodes";
     rev = "refs/tags/v${version}";
-    hash = "sha256-AggAVq/yfJUZRwoQb29QoIbVIAdV3solKCjivqucLZk=";
+    hash = "sha256-Q1WyuK1mCbs75kGY1Aaw7S5EfFRjwqzZnhNyeSx7qc8=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     versioningit
     wheel
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     broadbean
     cf-xarray
     dask
@@ -78,14 +90,12 @@ buildPythonPackage rec {
     jsonschema
     matplotlib
     numpy
-    opencensus
-    opencensus-ext-azure
     opentelemetry-api
     packaging
     pandas
     pillow
+    pyarrow
     pyvisa
-    rsa
     ruamel-yaml
     tabulate
     tqdm
@@ -94,13 +104,43 @@ buildPythonPackage rec {
     websockets
     wrapt
     xarray
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
   ];
 
+  optional-dependencies = {
+    docs = [
+      # autodocsumm
+      furo
+      jinja2
+      nbsphinx
+      pyvisa-sim
+      # qcodes-loop
+      scipy
+      sphinx
+      # sphinx-favicon
+      sphinx-issues
+      # sphinx-jsonschema
+      # sphinxcontrib-towncrier
+      towncrier
+    ];
+    loop = [
+      # qcodes-loop
+    ];
+    opencensus = [
+      opencensus
+      opencensus-ext-azure
+    ];
+    refactor = [
+      libcst
+    ];
+    zurichinstruments = [
+      # zhinst-qcodes
+    ];
+  };
+
   nativeCheckInputs = [
     deepdiff
     hypothesis
+    libcst
     lxml
     pip
     pytest-asyncio
@@ -150,25 +190,27 @@ buildPythonPackage rec {
     "test_step_ramp"
   ];
 
-  pythonImportsCheck = [
-    "qcodes"
-  ];
+  pythonImportsCheck = [ "qcodes" ];
 
+  # Remove the `asyncio_default_fixture_loop_scope` option as it has been introduced in newer `pytest-asyncio` v0.24
+  # which is not in nixpkgs yet:
+  # pytest.PytestConfigWarning: Unknown config option: asyncio_default_fixture_loop_scope
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace-fail 'default-version = "0.0"' 'default-version = "${version}"'
+      --replace-fail 'default-version = "0.0"' 'default-version = "${version}"' \
+      --replace-fail 'asyncio_default_fixture_loop_scope = "function"' ""
   '';
 
   postInstall = ''
     export HOME="$TMPDIR"
   '';
 
-  meta = with lib; {
+  meta = {
     description = "Python-based data acquisition framework";
     changelog = "https://github.com/QCoDeS/Qcodes/releases/tag/v${version}";
     downloadPage = "https://github.com/QCoDeS/Qcodes";
     homepage = "https://qcodes.github.io/Qcodes/";
-    license = licenses.mit;
-    maintainers = with maintainers; [ evilmav ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ evilmav ];
   };
 }
diff --git a/pkgs/development/python-modules/qcs-api-client-common/Cargo.lock b/pkgs/development/python-modules/qcs-api-client-common/Cargo.lock
new file mode 100644
index 0000000000000..e014440032fd6
--- /dev/null
+++ b/pkgs/development/python-modules/qcs-api-client-common/Cargo.lock
@@ -0,0 +1,3879 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "addr2line"
+version = "0.24.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375"
+dependencies = [
+ "gimli",
+]
+
+[[package]]
+name = "adler2"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.89"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6"
+
+[[package]]
+name = "ascii-canvas"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6"
+dependencies = [
+ "term",
+]
+
+[[package]]
+name = "assert-json-diff"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "async-attributes"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5"
+dependencies = [
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "async-channel"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35"
+dependencies = [
+ "concurrent-queue",
+ "event-listener 2.5.3",
+ "futures-core",
+]
+
+[[package]]
+name = "async-channel"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a"
+dependencies = [
+ "concurrent-queue",
+ "event-listener-strategy",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-executor"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec"
+dependencies = [
+ "async-task",
+ "concurrent-queue",
+ "fastrand",
+ "futures-lite",
+ "slab",
+]
+
+[[package]]
+name = "async-global-executor"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c"
+dependencies = [
+ "async-channel 2.3.1",
+ "async-executor",
+ "async-io",
+ "async-lock",
+ "blocking",
+ "futures-lite",
+ "once_cell",
+]
+
+[[package]]
+name = "async-io"
+version = "2.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8"
+dependencies = [
+ "async-lock",
+ "cfg-if",
+ "concurrent-queue",
+ "futures-io",
+ "futures-lite",
+ "parking",
+ "polling",
+ "rustix",
+ "slab",
+ "tracing",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "async-lock"
+version = "3.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
+dependencies = [
+ "event-listener 5.3.1",
+ "event-listener-strategy",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-object-pool"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "333c456b97c3f2d50604e8b2624253b7f787208cb72eb75e64b0ad11b221652c"
+dependencies = [
+ "async-std",
+]
+
+[[package]]
+name = "async-process"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb"
+dependencies = [
+ "async-channel 2.3.1",
+ "async-io",
+ "async-lock",
+ "async-signal",
+ "async-task",
+ "blocking",
+ "cfg-if",
+ "event-listener 5.3.1",
+ "futures-lite",
+ "rustix",
+ "tracing",
+]
+
+[[package]]
+name = "async-signal"
+version = "0.2.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3"
+dependencies = [
+ "async-io",
+ "async-lock",
+ "atomic-waker",
+ "cfg-if",
+ "futures-core",
+ "futures-io",
+ "rustix",
+ "signal-hook-registry",
+ "slab",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "async-socks5"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77f634add2445eb2c1f785642a67ca1073fedd71e73dc3ca69435ef9b9bdedc7"
+dependencies = [
+ "async-trait",
+ "thiserror",
+ "tokio",
+]
+
+[[package]]
+name = "async-std"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c634475f29802fde2b8f0b505b1bd00dfe4df7d4a000f0b36f7671197d5c3615"
+dependencies = [
+ "async-attributes",
+ "async-channel 1.9.0",
+ "async-global-executor",
+ "async-io",
+ "async-lock",
+ "async-process",
+ "crossbeam-utils",
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-lite",
+ "gloo-timers",
+ "kv-log-macro",
+ "log",
+ "memchr",
+ "once_cell",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+ "wasm-bindgen-futures",
+]
+
+[[package]]
+name = "async-stream"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51"
+dependencies = [
+ "async-stream-impl",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-stream-impl"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "async-task"
+version = "4.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de"
+
+[[package]]
+name = "async-trait"
+version = "0.1.82"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "atomic"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994"
+dependencies = [
+ "bytemuck",
+]
+
+[[package]]
+name = "atomic-waker"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
+
+[[package]]
+name = "autocfg"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
+
+[[package]]
+name = "axum"
+version = "0.6.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf"
+dependencies = [
+ "async-trait",
+ "axum-core",
+ "bitflags 1.3.2",
+ "bytes",
+ "futures-util",
+ "http",
+ "http-body",
+ "hyper",
+ "itoa",
+ "matchit",
+ "memchr",
+ "mime",
+ "percent-encoding",
+ "pin-project-lite",
+ "rustversion",
+ "serde",
+ "sync_wrapper",
+ "tower",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "axum-core"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c"
+dependencies = [
+ "async-trait",
+ "bytes",
+ "futures-util",
+ "http",
+ "http-body",
+ "mime",
+ "rustversion",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "backoff"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1"
+dependencies = [
+ "futures-core",
+ "getrandom",
+ "instant",
+ "pin-project-lite",
+ "rand",
+ "tokio",
+]
+
+[[package]]
+name = "backtrace"
+version = "0.3.74"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a"
+dependencies = [
+ "addr2line",
+ "cfg-if",
+ "libc",
+ "miniz_oxide",
+ "object",
+ "rustc-demangle",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "base64"
+version = "0.21.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
+
+[[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+
+[[package]]
+name = "basic-cookies"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67bd8fd42c16bdb08688243dc5f0cc117a3ca9efeeaba3a345a18a6159ad96f7"
+dependencies = [
+ "lalrpop",
+ "lalrpop-util",
+ "regex",
+]
+
+[[package]]
+name = "bit-set"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1"
+dependencies = [
+ "bit-vec",
+]
+
+[[package]]
+name = "bit-vec"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "blocking"
+version = "1.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea"
+dependencies = [
+ "async-channel 2.3.1",
+ "async-task",
+ "futures-io",
+ "futures-lite",
+ "piper",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
+
+[[package]]
+name = "bytemuck"
+version = "1.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae"
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "bytes"
+version = "1.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50"
+
+[[package]]
+name = "cc"
+version = "1.1.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "45bcde016d64c21da4be18b655631e5ab6d3107607e71a73a9f53eb48aae23fb"
+dependencies = [
+ "shlex",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "chrono"
+version = "0.4.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
+dependencies = [
+ "android-tzdata",
+ "iana-time-zone",
+ "js-sys",
+ "num-traits",
+ "wasm-bindgen",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "concurrent-queue"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "convert_case"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
+
+[[package]]
+name = "core-foundation"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
+
+[[package]]
+name = "crunchy"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
+name = "darling"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"
+dependencies = [
+ "darling_core",
+ "darling_macro",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
+dependencies = [
+ "darling_core",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "deranged"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
+dependencies = [
+ "powerfmt",
+]
+
+[[package]]
+name = "derive_builder"
+version = "0.20.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd33f37ee6a119146a1781d3356a7c26028f83d779b2e04ecd45fdc75c76877b"
+dependencies = [
+ "derive_builder_macro",
+]
+
+[[package]]
+name = "derive_builder_core"
+version = "0.20.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7431fa049613920234f22c47fdc33e6cf3ee83067091ea4277a3f8c4587aae38"
+dependencies = [
+ "darling",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "derive_builder_macro"
+version = "0.20.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4abae7035bf79b9877b779505d8cf3749285b80c43941eda66604841889451dc"
+dependencies = [
+ "derive_builder_core",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "derive_more"
+version = "0.99.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce"
+dependencies = [
+ "convert_case",
+ "proc-macro2",
+ "quote",
+ "rustc_version",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
+]
+
+[[package]]
+name = "dirs"
+version = "5.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
+dependencies = [
+ "dirs-sys",
+]
+
+[[package]]
+name = "dirs-next"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
+dependencies = [
+ "cfg-if",
+ "dirs-sys-next",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
+dependencies = [
+ "libc",
+ "option-ext",
+ "redox_users",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "dirs-sys-next"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
+dependencies = [
+ "libc",
+ "redox_users",
+ "winapi",
+]
+
+[[package]]
+name = "either"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
+
+[[package]]
+name = "ena"
+version = "0.14.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5"
+dependencies = [
+ "log",
+]
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
+name = "errno"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "event-listener"
+version = "2.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
+
+[[package]]
+name = "event-listener"
+version = "5.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1"
+dependencies = [
+ "event-listener 5.3.1",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "fastrand"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
+
+[[package]]
+name = "figment"
+version = "0.10.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8cb01cd46b0cf372153850f4c6c272d9cbea2da513e07538405148f95bd789f3"
+dependencies = [
+ "atomic",
+ "parking_lot",
+ "pear",
+ "serde",
+ "tempfile",
+ "toml",
+ "uncased",
+ "version_check",
+]
+
+[[package]]
+name = "fixedbitset"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "futures"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
+
+[[package]]
+name = "futures-lite"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
+dependencies = [
+ "fastrand",
+ "futures-core",
+ "futures-io",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "futures-macro"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
+
+[[package]]
+name = "futures-task"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
+
+[[package]]
+name = "futures-timer"
+version = "3.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24"
+
+[[package]]
+name = "futures-util"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "libc",
+ "wasi",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "gimli"
+version = "0.31.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64"
+
+[[package]]
+name = "glob"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+
+[[package]]
+name = "gloo-timers"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "h2"
+version = "0.3.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
+dependencies = [
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "futures-util",
+ "http",
+ "indexmap 2.5.0",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+
+[[package]]
+name = "hashbrown"
+version = "0.14.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+
+[[package]]
+name = "headers"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270"
+dependencies = [
+ "base64 0.21.7",
+ "bytes",
+ "headers-core",
+ "http",
+ "httpdate",
+ "mime",
+ "sha1",
+]
+
+[[package]]
+name = "headers-core"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429"
+dependencies = [
+ "http",
+]
+
+[[package]]
+name = "heck"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "hermit-abi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
+
+[[package]]
+name = "hermit-abi"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
+
+[[package]]
+name = "home"
+version = "0.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "http"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
+name = "http-body"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
+dependencies = [
+ "bytes",
+ "http",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "http-range-header"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f"
+
+[[package]]
+name = "httparse"
+version = "1.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9"
+
+[[package]]
+name = "httpdate"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
+
+[[package]]
+name = "httpmock"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08ec9586ee0910472dec1a1f0f8acf52f0fdde93aea74d70d4a3107b4be0fd5b"
+dependencies = [
+ "assert-json-diff",
+ "async-object-pool",
+ "async-std",
+ "async-trait",
+ "base64 0.21.7",
+ "basic-cookies",
+ "crossbeam-utils",
+ "form_urlencoded",
+ "futures-util",
+ "hyper",
+ "lazy_static",
+ "levenshtein",
+ "log",
+ "regex",
+ "serde",
+ "serde_json",
+ "serde_regex",
+ "similar",
+ "tokio",
+ "url",
+]
+
+[[package]]
+name = "hyper"
+version = "0.14.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http",
+ "http-body",
+ "httparse",
+ "httpdate",
+ "itoa",
+ "pin-project-lite",
+ "socket2",
+ "tokio",
+ "tower-service",
+ "tracing",
+ "want",
+]
+
+[[package]]
+name = "hyper-proxy"
+version = "0.9.1"
+source = "git+https://github.com/rigetti/hyper-proxy#e08329b56787326d6ec8d0bbcc1f96913af105c8"
+dependencies = [
+ "bytes",
+ "futures-util",
+ "headers",
+ "http",
+ "hyper",
+ "hyper-rustls",
+ "rustls-native-certs 0.6.3",
+ "tokio",
+ "tokio-rustls 0.24.1",
+ "tower-service",
+ "webpki",
+]
+
+[[package]]
+name = "hyper-rustls"
+version = "0.24.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
+dependencies = [
+ "futures-util",
+ "http",
+ "hyper",
+ "log",
+ "rustls 0.21.12",
+ "rustls-native-certs 0.6.3",
+ "tokio",
+ "tokio-rustls 0.24.1",
+]
+
+[[package]]
+name = "hyper-socks2"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc38166fc2732d450e9372388d269eb38ff0b75a3cfb4c542e65b2f6893629c4"
+dependencies = [
+ "async-socks5",
+ "futures",
+ "http",
+ "hyper",
+ "thiserror",
+ "tokio",
+]
+
+[[package]]
+name = "hyper-timeout"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1"
+dependencies = [
+ "hyper",
+ "pin-project-lite",
+ "tokio",
+ "tokio-io-timeout",
+]
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.61"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "windows-core",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "ident_case"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+
+[[package]]
+name = "idna"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "indexmap"
+version = "1.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
+dependencies = [
+ "autocfg",
+ "hashbrown 0.12.3",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.14.5",
+]
+
+[[package]]
+name = "indoc"
+version = "2.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
+
+[[package]]
+name = "inlinable_string"
+version = "0.1.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb"
+
+[[package]]
+name = "instant"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "inventory"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767"
+
+[[package]]
+name = "ipnet"
+version = "2.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4"
+
+[[package]]
+name = "itertools"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itertools"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
+
+[[package]]
+name = "js-sys"
+version = "0.3.70"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "jsonwebtoken"
+version = "9.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9ae10193d25051e74945f1ea2d0b42e03cc3b890f7e4cc5faa44997d808193f"
+dependencies = [
+ "base64 0.21.7",
+ "js-sys",
+ "pem",
+ "ring",
+ "serde",
+ "serde_json",
+ "simple_asn1",
+]
+
+[[package]]
+name = "kv-log-macro"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f"
+dependencies = [
+ "log",
+]
+
+[[package]]
+name = "lalrpop"
+version = "0.20.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca"
+dependencies = [
+ "ascii-canvas",
+ "bit-set",
+ "ena",
+ "itertools 0.11.0",
+ "lalrpop-util",
+ "petgraph",
+ "pico-args",
+ "regex",
+ "regex-syntax",
+ "string_cache",
+ "term",
+ "tiny-keccak",
+ "unicode-xid",
+ "walkdir",
+]
+
+[[package]]
+name = "lalrpop-util"
+version = "0.20.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553"
+dependencies = [
+ "regex-automata",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
+
+[[package]]
+name = "levenshtein"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760"
+
+[[package]]
+name = "libc"
+version = "0.2.158"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
+
+[[package]]
+name = "libredox"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
+dependencies = [
+ "bitflags 2.6.0",
+ "libc",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
+
+[[package]]
+name = "lock_api"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
+dependencies = [
+ "value-bag",
+]
+
+[[package]]
+name = "matchit"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "memoffset"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "mime"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+
+[[package]]
+name = "mime_guess"
+version = "2.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e"
+dependencies = [
+ "mime",
+ "unicase",
+]
+
+[[package]]
+name = "miniz_oxide"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
+dependencies = [
+ "adler2",
+]
+
+[[package]]
+name = "mio"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec"
+dependencies = [
+ "hermit-abi 0.3.9",
+ "libc",
+ "wasi",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "multimap"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03"
+
+[[package]]
+name = "new_debug_unreachable"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
+
+[[package]]
+name = "nu-ansi-term"
+version = "0.46.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
+dependencies = [
+ "overload",
+ "winapi",
+]
+
+[[package]]
+name = "num-bigint"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
+dependencies = [
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-complex"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-conv"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
+
+[[package]]
+name = "num-integer"
+version = "0.1.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "object"
+version = "0.36.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+
+[[package]]
+name = "openssl-probe"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
+
+[[package]]
+name = "opentelemetry"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9591d937bc0e6d2feb6f71a559540ab300ea49955229c347a517a28d27784c54"
+dependencies = [
+ "opentelemetry_api",
+ "opentelemetry_sdk",
+]
+
+[[package]]
+name = "opentelemetry-http"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7594ec0e11d8e33faf03530a4c49af7064ebba81c1480e01be67d90b356508b"
+dependencies = [
+ "async-trait",
+ "bytes",
+ "http",
+ "opentelemetry_api",
+]
+
+[[package]]
+name = "opentelemetry_api"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a81f725323db1b1206ca3da8bb19874bbd3f57c3bcd59471bfb04525b265b9b"
+dependencies = [
+ "futures-channel",
+ "futures-util",
+ "indexmap 1.9.3",
+ "js-sys",
+ "once_cell",
+ "pin-project-lite",
+ "thiserror",
+ "urlencoding",
+]
+
+[[package]]
+name = "opentelemetry_sdk"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa8e705a0612d48139799fcbaba0d4a90f06277153e43dd2bdc16c6f0edd8026"
+dependencies = [
+ "async-trait",
+ "crossbeam-channel",
+ "futures-channel",
+ "futures-executor",
+ "futures-util",
+ "once_cell",
+ "opentelemetry_api",
+ "ordered-float",
+ "percent-encoding",
+ "rand",
+ "regex",
+ "thiserror",
+ "tokio",
+ "tokio-stream",
+]
+
+[[package]]
+name = "option-ext"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
+
+[[package]]
+name = "ordered-float"
+version = "3.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "overload"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
+
+[[package]]
+name = "parking"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
+
+[[package]]
+name = "parking_lot"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "paste"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
+
+[[package]]
+name = "pbjson"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1030c719b0ec2a2d25a5df729d6cff1acf3cc230bf766f4f97833591f7577b90"
+dependencies = [
+ "base64 0.21.7",
+ "serde",
+]
+
+[[package]]
+name = "pbjson-build"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2580e33f2292d34be285c5bc3dba5259542b083cfad6037b6d70345f24dcb735"
+dependencies = [
+ "heck 0.4.1",
+ "itertools 0.11.0",
+ "prost",
+ "prost-types",
+]
+
+[[package]]
+name = "pbjson-types"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18f596653ba4ac51bdecbb4ef6773bc7f56042dc13927910de1684ad3d32aa12"
+dependencies = [
+ "bytes",
+ "chrono",
+ "pbjson",
+ "pbjson-build",
+ "prost",
+ "prost-build",
+ "serde",
+]
+
+[[package]]
+name = "pear"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bdeeaa00ce488657faba8ebf44ab9361f9365a97bd39ffb8a60663f57ff4b467"
+dependencies = [
+ "inlinable_string",
+ "pear_codegen",
+ "yansi",
+]
+
+[[package]]
+name = "pear_codegen"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4bab5b985dc082b345f812b7df84e1bef27e7207b39e448439ba8bd69c93f147"
+dependencies = [
+ "proc-macro2",
+ "proc-macro2-diagnostics",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "pem"
+version = "3.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae"
+dependencies = [
+ "base64 0.22.1",
+ "serde",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+
+[[package]]
+name = "petgraph"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
+dependencies = [
+ "fixedbitset",
+ "indexmap 2.5.0",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
+dependencies = [
+ "siphasher",
+]
+
+[[package]]
+name = "pico-args"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315"
+
+[[package]]
+name = "pin-project"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "piper"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066"
+dependencies = [
+ "atomic-waker",
+ "fastrand",
+ "futures-io",
+]
+
+[[package]]
+name = "polling"
+version = "3.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511"
+dependencies = [
+ "cfg-if",
+ "concurrent-queue",
+ "hermit-abi 0.4.0",
+ "pin-project-lite",
+ "rustix",
+ "tracing",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "portable-atomic"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265"
+
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
+dependencies = [
+ "zerocopy",
+]
+
+[[package]]
+name = "precomputed-hash"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
+
+[[package]]
+name = "prettyplease"
+version = "0.2.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba"
+dependencies = [
+ "proc-macro2",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "3.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b"
+dependencies = [
+ "toml_edit",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.86"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "proc-macro2-diagnostics"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+ "version_check",
+ "yansi",
+]
+
+[[package]]
+name = "prost"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29"
+dependencies = [
+ "bytes",
+ "prost-derive",
+]
+
+[[package]]
+name = "prost-build"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4"
+dependencies = [
+ "bytes",
+ "heck 0.5.0",
+ "itertools 0.12.1",
+ "log",
+ "multimap",
+ "once_cell",
+ "petgraph",
+ "prettyplease",
+ "prost",
+ "prost-types",
+ "regex",
+ "syn 2.0.77",
+ "tempfile",
+]
+
+[[package]]
+name = "prost-derive"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1"
+dependencies = [
+ "anyhow",
+ "itertools 0.12.1",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "prost-types"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0"
+dependencies = [
+ "prost",
+]
+
+[[package]]
+name = "pyo3"
+version = "0.20.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53bdbb96d49157e65d45cc287af5f32ffadd5f4761438b527b055fb0d4bb8233"
+dependencies = [
+ "cfg-if",
+ "indoc",
+ "inventory",
+ "libc",
+ "memoffset",
+ "num-complex",
+ "parking_lot",
+ "portable-atomic",
+ "pyo3-build-config 0.20.3",
+ "pyo3-ffi",
+ "pyo3-macros",
+ "unindent",
+]
+
+[[package]]
+name = "pyo3-asyncio"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ea6b68e93db3622f3bb3bf363246cf948ed5375afe7abff98ccbdd50b184995"
+dependencies = [
+ "futures",
+ "once_cell",
+ "pin-project-lite",
+ "pyo3",
+ "tokio",
+]
+
+[[package]]
+name = "pyo3-build-config"
+version = "0.20.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "deaa5745de3f5231ce10517a1f5dd97d53e5a2fd77aa6b5842292085831d48d7"
+dependencies = [
+ "once_cell",
+ "target-lexicon",
+]
+
+[[package]]
+name = "pyo3-build-config"
+version = "0.22.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e61cef80755fe9e46bb8a0b8f20752ca7676dcc07a5277d8b7768c6172e529b3"
+dependencies = [
+ "once_cell",
+ "target-lexicon",
+]
+
+[[package]]
+name = "pyo3-ffi"
+version = "0.20.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b42531d03e08d4ef1f6e85a2ed422eb678b8cd62b762e53891c05faf0d4afa"
+dependencies = [
+ "libc",
+ "pyo3-build-config 0.20.3",
+]
+
+[[package]]
+name = "pyo3-macros"
+version = "0.20.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7305c720fa01b8055ec95e484a6eca7a83c841267f0dd5280f0c8b8551d2c158"
+dependencies = [
+ "proc-macro2",
+ "pyo3-macros-backend",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "pyo3-macros-backend"
+version = "0.20.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c7e9b68bb9c3149c5b0cade5d07f953d6d125eb4337723c4ccdb665f1f96185"
+dependencies = [
+ "heck 0.4.1",
+ "proc-macro2",
+ "pyo3-build-config 0.20.3",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "qcs-api-client-common"
+version = "0.10.2"
+dependencies = [
+ "async-trait",
+ "backoff",
+ "base64 0.22.1",
+ "chrono",
+ "derive_builder",
+ "figment",
+ "futures",
+ "home",
+ "http",
+ "httpmock",
+ "jsonwebtoken",
+ "paste",
+ "pyo3",
+ "pyo3-asyncio",
+ "pyo3-build-config 0.22.3",
+ "reqwest",
+ "rigetti-pyo3",
+ "rstest 0.21.0",
+ "serde",
+ "serial_test",
+ "shellexpand",
+ "thiserror",
+ "time",
+ "tokio",
+ "toml",
+ "tracing",
+ "url",
+ "urlpattern",
+]
+
+[[package]]
+name = "qcs-api-client-grpc"
+version = "0.10.2"
+dependencies = [
+ "async-std",
+ "backoff",
+ "futures-util",
+ "http",
+ "http-body",
+ "hyper",
+ "hyper-proxy",
+ "hyper-socks2",
+ "jsonwebtoken",
+ "once_cell",
+ "opentelemetry",
+ "opentelemetry-http",
+ "opentelemetry_api",
+ "opentelemetry_sdk",
+ "pbjson",
+ "pbjson-build",
+ "pbjson-types",
+ "prost",
+ "prost-build",
+ "qcs-api-client-common",
+ "rstest 0.17.0",
+ "serde",
+ "serde_json",
+ "tempfile",
+ "thiserror",
+ "tokio",
+ "tokio-stream",
+ "tonic",
+ "tonic-build",
+ "tonic-health",
+ "tonic-web",
+ "tower",
+ "tracing",
+ "tracing-opentelemetry",
+ "tracing-subscriber",
+ "url",
+ "urlpattern",
+]
+
+[[package]]
+name = "qcs-api-client-openapi"
+version = "0.11.2"
+dependencies = [
+ "anyhow",
+ "qcs-api-client-common",
+ "reqwest",
+ "reqwest-middleware",
+ "reqwest-tracing",
+ "rstest 0.17.0",
+ "serde",
+ "serde_json",
+ "task-local-extensions",
+ "tokio",
+ "tracing",
+ "url",
+ "urlpattern",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0884ad60e090bf1345b93da0a5de8923c93884cd03f40dfcfddd3b4bee661853"
+dependencies = [
+ "bitflags 2.6.0",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
+dependencies = [
+ "getrandom",
+ "libredox",
+ "thiserror",
+]
+
+[[package]]
+name = "regex"
+version = "1.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
+
+[[package]]
+name = "relative-path"
+version = "1.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2"
+
+[[package]]
+name = "reqwest"
+version = "0.11.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62"
+dependencies = [
+ "base64 0.21.7",
+ "bytes",
+ "encoding_rs",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http",
+ "http-body",
+ "hyper",
+ "hyper-rustls",
+ "ipnet",
+ "js-sys",
+ "log",
+ "mime",
+ "mime_guess",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "rustls 0.21.12",
+ "rustls-native-certs 0.6.3",
+ "rustls-pemfile 1.0.4",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "sync_wrapper",
+ "system-configuration",
+ "tokio",
+ "tokio-rustls 0.24.1",
+ "tokio-socks",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "winreg",
+]
+
+[[package]]
+name = "reqwest-middleware"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a735987236a8e238bf0296c7e351b999c188ccc11477f311b82b55c93984216"
+dependencies = [
+ "anyhow",
+ "async-trait",
+ "http",
+ "reqwest",
+ "serde",
+ "task-local-extensions",
+ "thiserror",
+]
+
+[[package]]
+name = "reqwest-tracing"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "190838e54153d7a7e2ea98851304b3ce92daeabf14c54d32b01b84a3e636f683"
+dependencies = [
+ "anyhow",
+ "async-trait",
+ "getrandom",
+ "matchit",
+ "opentelemetry",
+ "reqwest",
+ "reqwest-middleware",
+ "task-local-extensions",
+ "tracing",
+ "tracing-opentelemetry",
+]
+
+[[package]]
+name = "rigetti-pyo3"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c59068763670399bb3e895a17cc631d9214c3172b64fc74d3ab63dac7371c340"
+dependencies = [
+ "num-complex",
+ "num-traits",
+ "paste",
+ "pyo3",
+ "time",
+]
+
+[[package]]
+name = "ring"
+version = "0.17.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
+dependencies = [
+ "cc",
+ "cfg-if",
+ "getrandom",
+ "libc",
+ "spin",
+ "untrusted",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "rstest"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de1bb486a691878cd320c2f0d319ba91eeaa2e894066d8b5f8f117c000e9d962"
+dependencies = [
+ "futures",
+ "futures-timer",
+ "rstest_macros 0.17.0",
+ "rustc_version",
+]
+
+[[package]]
+name = "rstest"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9afd55a67069d6e434a95161415f5beeada95a01c7b815508a82dcb0e1593682"
+dependencies = [
+ "futures",
+ "futures-timer",
+ "rstest_macros 0.21.0",
+ "rustc_version",
+]
+
+[[package]]
+name = "rstest_macros"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "290ca1a1c8ca7edb7c3283bd44dc35dd54fdec6253a3912e201ba1072018fca8"
+dependencies = [
+ "cfg-if",
+ "proc-macro2",
+ "quote",
+ "rustc_version",
+ "syn 1.0.109",
+ "unicode-ident",
+]
+
+[[package]]
+name = "rstest_macros"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4165dfae59a39dd41d8dec720d3cbfbc71f69744efb480a3920f5d4e0cc6798d"
+dependencies = [
+ "cfg-if",
+ "glob",
+ "proc-macro-crate",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "relative-path",
+ "rustc_version",
+ "syn 2.0.77",
+ "unicode-ident",
+]
+
+[[package]]
+name = "rustc-demangle"
+version = "0.1.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
+
+[[package]]
+name = "rustc_version"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "rustix"
+version = "0.38.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811"
+dependencies = [
+ "bitflags 2.6.0",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "rustls"
+version = "0.21.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e"
+dependencies = [
+ "log",
+ "ring",
+ "rustls-webpki 0.101.7",
+ "sct",
+]
+
+[[package]]
+name = "rustls"
+version = "0.22.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432"
+dependencies = [
+ "log",
+ "ring",
+ "rustls-pki-types",
+ "rustls-webpki 0.102.8",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "rustls-native-certs"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00"
+dependencies = [
+ "openssl-probe",
+ "rustls-pemfile 1.0.4",
+ "schannel",
+ "security-framework",
+]
+
+[[package]]
+name = "rustls-native-certs"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5"
+dependencies = [
+ "openssl-probe",
+ "rustls-pemfile 2.1.3",
+ "rustls-pki-types",
+ "schannel",
+ "security-framework",
+]
+
+[[package]]
+name = "rustls-pemfile"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
+dependencies = [
+ "base64 0.21.7",
+]
+
+[[package]]
+name = "rustls-pemfile"
+version = "2.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425"
+dependencies = [
+ "base64 0.22.1",
+ "rustls-pki-types",
+]
+
+[[package]]
+name = "rustls-pki-types"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0"
+
+[[package]]
+name = "rustls-webpki"
+version = "0.101.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
+dependencies = [
+ "ring",
+ "untrusted",
+]
+
+[[package]]
+name = "rustls-webpki"
+version = "0.102.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9"
+dependencies = [
+ "ring",
+ "rustls-pki-types",
+ "untrusted",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6"
+
+[[package]]
+name = "ryu"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "scc"
+version = "2.1.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c947adb109a8afce5fc9c7bf951f87f146e9147b3a6a58413105628fb1d1e66"
+dependencies = [
+ "sdd",
+]
+
+[[package]]
+name = "schannel"
+version = "0.1.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b"
+dependencies = [
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "sct"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
+dependencies = [
+ "ring",
+ "untrusted",
+]
+
+[[package]]
+name = "sdd"
+version = "3.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60a7b59a5d9b0099720b417b6325d91a52cbf5b3dcb5041d864be53eefa58abc"
+
+[[package]]
+name = "security-framework"
+version = "2.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
+dependencies = [
+ "bitflags 2.6.0",
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "semver"
+version = "1.0.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
+
+[[package]]
+name = "serde"
+version = "1.0.210"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.210"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.128"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_regex"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8136f1a4ea815d7eac4101cfd0b16dc0cb5e1fe1b8609dfd728058656b7badf"
+dependencies = [
+ "regex",
+ "serde",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde_urlencoded"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
+dependencies = [
+ "form_urlencoded",
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serial_test"
+version = "3.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b4b487fe2acf240a021cf57c6b2b4903b1e78ca0ecd862a71b71d2a51fed77d"
+dependencies = [
+ "futures",
+ "log",
+ "once_cell",
+ "parking_lot",
+ "scc",
+ "serial_test_derive",
+]
+
+[[package]]
+name = "serial_test_derive"
+version = "3.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "sha1"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "sharded-slab"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
+dependencies = [
+ "lazy_static",
+]
+
+[[package]]
+name = "shellexpand"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da03fa3b94cc19e3ebfc88c4229c49d8f08cdbd1228870a45f0ffdf84988e14b"
+dependencies = [
+ "dirs",
+]
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "similar"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e"
+
+[[package]]
+name = "simple_asn1"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085"
+dependencies = [
+ "num-bigint",
+ "num-traits",
+ "thiserror",
+ "time",
+]
+
+[[package]]
+name = "siphasher"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
+
+[[package]]
+name = "slab"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+
+[[package]]
+name = "socket2"
+version = "0.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "spin"
+version = "0.9.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
+
+[[package]]
+name = "string_cache"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b"
+dependencies = [
+ "new_debug_unreachable",
+ "once_cell",
+ "parking_lot",
+ "phf_shared",
+ "precomputed-hash",
+]
+
+[[package]]
+name = "strsim"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+
+[[package]]
+name = "subtle"
+version = "2.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "sync_wrapper"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+
+[[package]]
+name = "system-configuration"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "system-configuration-sys",
+]
+
+[[package]]
+name = "system-configuration-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "target-lexicon"
+version = "0.12.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
+
+[[package]]
+name = "task-local-extensions"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba323866e5d033818e3240feeb9f7db2c4296674e4d9e16b97b7bf8f490434e8"
+dependencies = [
+ "pin-utils",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64"
+dependencies = [
+ "cfg-if",
+ "fastrand",
+ "once_cell",
+ "rustix",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "term"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f"
+dependencies = [
+ "dirs-next",
+ "rustversion",
+ "winapi",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.63"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.63"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "thread_local"
+version = "1.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+]
+
+[[package]]
+name = "time"
+version = "0.3.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
+dependencies = [
+ "deranged",
+ "itoa",
+ "num-conv",
+ "powerfmt",
+ "serde",
+ "time-core",
+ "time-macros",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
+
+[[package]]
+name = "time-macros"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
+dependencies = [
+ "num-conv",
+ "time-core",
+]
+
+[[package]]
+name = "tiny-keccak"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237"
+dependencies = [
+ "crunchy",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
+name = "tokio"
+version = "1.40.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998"
+dependencies = [
+ "backtrace",
+ "bytes",
+ "libc",
+ "mio",
+ "parking_lot",
+ "pin-project-lite",
+ "signal-hook-registry",
+ "socket2",
+ "tokio-macros",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "tokio-io-timeout"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf"
+dependencies = [
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-macros"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "tokio-rustls"
+version = "0.24.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
+dependencies = [
+ "rustls 0.21.12",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-rustls"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f"
+dependencies = [
+ "rustls 0.22.4",
+ "rustls-pki-types",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-socks"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d4770b8024672c1101b3f6733eab95b18007dbe0847a8afe341fcf79e06043f"
+dependencies = [
+ "either",
+ "futures-util",
+ "thiserror",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-stream"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1"
+dependencies = [
+ "futures-core",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-util"
+version = "0.7.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "futures-sink",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "toml"
+version = "0.8.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.22.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b072cee73c449a636ffd6f32bd8de3a9f7119139aff882f44943ce2986dc5cf"
+dependencies = [
+ "indexmap 2.5.0",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow",
+]
+
+[[package]]
+name = "tonic"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13"
+dependencies = [
+ "async-stream",
+ "async-trait",
+ "axum",
+ "base64 0.21.7",
+ "bytes",
+ "h2",
+ "http",
+ "http-body",
+ "hyper",
+ "hyper-timeout",
+ "percent-encoding",
+ "pin-project",
+ "prost",
+ "rustls-native-certs 0.7.3",
+ "rustls-pemfile 2.1.3",
+ "rustls-pki-types",
+ "tokio",
+ "tokio-rustls 0.25.0",
+ "tokio-stream",
+ "tower",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tonic-build"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be4ef6dd70a610078cb4e338a0f79d06bc759ff1b22d2120c2ff02ae264ba9c2"
+dependencies = [
+ "prettyplease",
+ "proc-macro2",
+ "prost-build",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "tonic-health"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2cef6e24bc96871001a7e48e820ab240b3de2201e59b517cf52835df2f1d2350"
+dependencies = [
+ "async-stream",
+ "prost",
+ "tokio",
+ "tokio-stream",
+ "tonic",
+]
+
+[[package]]
+name = "tonic-web"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc3b0e1cedbf19fdfb78ef3d672cb9928e0a91a9cb4629cc0c916e8cff8aaaa1"
+dependencies = [
+ "base64 0.21.7",
+ "bytes",
+ "http",
+ "http-body",
+ "hyper",
+ "pin-project",
+ "tokio-stream",
+ "tonic",
+ "tower-http",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tower"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "indexmap 1.9.3",
+ "pin-project",
+ "pin-project-lite",
+ "rand",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tower-http"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140"
+dependencies = [
+ "bitflags 2.6.0",
+ "bytes",
+ "futures-core",
+ "futures-util",
+ "http",
+ "http-body",
+ "http-range-header",
+ "pin-project-lite",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "tower-layer"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
+
+[[package]]
+name = "tower-service"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
+
+[[package]]
+name = "tracing"
+version = "0.1.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
+dependencies = [
+ "log",
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+dependencies = [
+ "once_cell",
+ "valuable",
+]
+
+[[package]]
+name = "tracing-log"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2"
+dependencies = [
+ "log",
+ "once_cell",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-log"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
+dependencies = [
+ "log",
+ "once_cell",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-opentelemetry"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc09e402904a5261e42cf27aea09ccb7d5318c6717a9eec3d8e2e65c56b18f19"
+dependencies = [
+ "once_cell",
+ "opentelemetry",
+ "tracing",
+ "tracing-core",
+ "tracing-log 0.1.4",
+ "tracing-subscriber",
+]
+
+[[package]]
+name = "tracing-subscriber"
+version = "0.3.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
+dependencies = [
+ "nu-ansi-term",
+ "sharded-slab",
+ "smallvec",
+ "thread_local",
+ "tracing-core",
+ "tracing-log 0.2.0",
+]
+
+[[package]]
+name = "try-lock"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
+
+[[package]]
+name = "typenum"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+
+[[package]]
+name = "uncased"
+version = "0.9.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
+name = "unic-char-property"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221"
+dependencies = [
+ "unic-char-range",
+]
+
+[[package]]
+name = "unic-char-range"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc"
+
+[[package]]
+name = "unic-common"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc"
+
+[[package]]
+name = "unic-ucd-ident"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987"
+dependencies = [
+ "unic-char-property",
+ "unic-char-range",
+ "unic-ucd-version",
+]
+
+[[package]]
+name = "unic-ucd-version"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4"
+dependencies = [
+ "unic-common",
+]
+
+[[package]]
+name = "unicase"
+version = "2.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "unicode-xid"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a"
+
+[[package]]
+name = "unindent"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce"
+
+[[package]]
+name = "untrusted"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+
+[[package]]
+name = "url"
+version = "2.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+]
+
+[[package]]
+name = "urlencoding"
+version = "2.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
+
+[[package]]
+name = "urlpattern"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9bd5ff03aea02fa45b13a7980151fe45009af1980ba69f651ec367121a31609"
+dependencies = [
+ "derive_more",
+ "regex",
+ "serde",
+ "unic-ucd-ident",
+ "url",
+]
+
+[[package]]
+name = "valuable"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
+
+[[package]]
+name = "value-bag"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a84c137d37ab0142f0f2ddfe332651fdbf252e7b7dbb4e67b6c1f1b2e925101"
+
+[[package]]
+name = "version_check"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+
+[[package]]
+name = "walkdir"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
+[[package]]
+name = "want"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
+dependencies = [
+ "try-lock",
+]
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.43"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
+
+[[package]]
+name = "web-sys"
+version = "0.3.70"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "webpki"
+version = "0.22.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53"
+dependencies = [
+ "ring",
+ "untrusted",
+]
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
+dependencies = [
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-core"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "winnow"
+version = "0.6.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winreg"
+version = "0.50.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "yansi"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
+
+[[package]]
+name = "zerocopy"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
+dependencies = [
+ "byteorder",
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
+[[package]]
+name = "zeroize"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
diff --git a/pkgs/development/python-modules/qcs-api-client-common/default.nix b/pkgs/development/python-modules/qcs-api-client-common/default.nix
new file mode 100644
index 0000000000000..fc0a04a74ba04
--- /dev/null
+++ b/pkgs/development/python-modules/qcs-api-client-common/default.nix
@@ -0,0 +1,77 @@
+{
+  buildPythonPackage,
+  cargo,
+  fetchFromGitHub,
+  grpc-interceptor,
+  grpcio,
+  httpx,
+  lib,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  rustc,
+  rustPlatform,
+  syrupy,
+}:
+
+buildPythonPackage rec {
+  pname = "qcs-api-client-common";
+  version = "0.10.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "rigetti";
+    repo = "qcs-api-client-rust";
+    rev = "refs/tags/common/v${version}";
+    hash = "sha256-WXTqzdbBZmBj/+mVK/watOuaq/WqKtaMVhp+ogjmhqM=";
+  };
+
+  cargoDeps = rustPlatform.importCargoLock {
+    lockFile = ./Cargo.lock;
+    outputHashes = {
+      "hyper-proxy-0.9.1" = "sha256-P9/qMHfq56rkQoBQF3o/SmbOfcePcFf8yh1YQve3oGM=";
+    };
+  };
+
+  # FIXME use
+  #     buildAndTestSubdir = "qcs-api-client-common";
+  # instead, which makes the tests fail
+  postPatch = ''
+    cd qcs-api-client-common
+  '';
+  cargoRoot = "..";
+
+  build-system = [ rustPlatform.maturinBuildHook ];
+
+  nativeBuildInputs = [
+    cargo
+    rustPlatform.cargoSetupHook
+    rustc
+  ];
+
+  dependencies = [
+    grpc-interceptor
+    grpcio
+    httpx
+  ];
+
+  preCheck = ''
+    # import from $out
+    rm -r qcs_api_client_common
+  '';
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytest-mock
+    pytestCheckHook
+    syrupy
+  ];
+
+  meta = {
+    changelog = "https://github.com/rigetti/qcs-api-client-rust/blob/${src.rev}/qcs-api-client-common/CHANGELOG-py.md";
+    description = "Contains core QCS client functionality and middleware implementations";
+    homepage = "https://github.com/rigetti/qcs-api-client-rust/tree/main/qcs-api-client-common";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/qcs-api-client/default.nix b/pkgs/development/python-modules/qcs-api-client/default.nix
index 98e3b05812f1c..34984ec5755ec 100644
--- a/pkgs/development/python-modules/qcs-api-client/default.nix
+++ b/pkgs/development/python-modules/qcs-api-client/default.nix
@@ -8,13 +8,14 @@
   iso8601,
   poetry-core,
   pydantic,
+  pydantic-settings,
   pyjwt,
   pytest-asyncio,
   pytestCheckHook,
   python-dateutil,
   pythonAtLeast,
   pythonOlder,
-  pythonRelaxDepsHook,
+  tenacity,
   respx,
   retrying,
   rfc3339,
@@ -23,16 +24,16 @@
 
 buildPythonPackage rec {
   pname = "qcs-api-client";
-  version = "0.25.0";
+  version = "0.25.5";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "rigetti";
     repo = "qcs-api-client-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-dKjiicrPLRlaIwHwSqpY5dBMTzrZD4xfw3h54IN3rh0=";
+    hash = "sha256-fVUvAXtZcMWBBK0wdGJA0oIneCNKI4GI2qNIc30HU9M=";
   };
 
   patches = [
@@ -53,17 +54,18 @@ buildPythonPackage rec {
 
   build-system = [ poetry-core ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     attrs
     httpx
     iso8601
     pydantic
+    pydantic-settings
     pyjwt
     python-dateutil
     retrying
     rfc3339
+    tenacity
     toml
   ];
 
diff --git a/pkgs/development/python-modules/qcs-sdk-python/Cargo.lock b/pkgs/development/python-modules/qcs-sdk-python/Cargo.lock
index 0c1265d5ac40c..6a205f28323de 100644
--- a/pkgs/development/python-modules/qcs-sdk-python/Cargo.lock
+++ b/pkgs/development/python-modules/qcs-sdk-python/Cargo.lock
@@ -4,9 +4,9 @@ version = 3
 
 [[package]]
 name = "addr2line"
-version = "0.21.0"
+version = "0.22.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
+checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678"
 dependencies = [
  "gimli",
 ]
@@ -19,9 +19,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
 
 [[package]]
 name = "aho-corasick"
-version = "1.1.2"
+version = "1.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
 dependencies = [
  "memchr",
 ]
@@ -37,9 +37,9 @@ dependencies = [
 
 [[package]]
 name = "anyhow"
-version = "1.0.81"
+version = "1.0.86"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247"
+checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
 
 [[package]]
 name = "approx"
@@ -53,9 +53,9 @@ dependencies = [
 
 [[package]]
 name = "arc-swap"
-version = "1.7.0"
+version = "1.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b3d0060af21e8d11a926981cc00c6c1541aa91dd64b9f881985c3da1094425f"
+checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
 
 [[package]]
 name = "assert2"
@@ -66,7 +66,7 @@ dependencies = [
  "assert2-macros",
  "diff",
  "is-terminal",
- "yansi",
+ "yansi 0.5.1",
 ]
 
 [[package]]
@@ -111,18 +111,27 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.53",
+ "syn 2.0.66",
 ]
 
 [[package]]
 name = "async-trait"
-version = "0.1.78"
+version = "0.1.80"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "461abc97219de0eaaf81fe3ef974a540158f3d079c2ab200f891f1a2ef201e85"
+checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.53",
+ "syn 2.0.66",
+]
+
+[[package]]
+name = "atomic"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994"
+dependencies = [
+ "bytemuck",
 ]
 
 [[package]]
@@ -138,9 +147,9 @@ dependencies = [
 
 [[package]]
 name = "autocfg"
-version = "1.1.0"
+version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
 
 [[package]]
 name = "axum"
@@ -203,9 +212,9 @@ dependencies = [
 
 [[package]]
 name = "backtrace"
-version = "0.3.69"
+version = "0.3.73"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
+checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a"
 dependencies = [
  "addr2line",
  "cc",
@@ -229,6 +238,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
 
 [[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+
+[[package]]
 name = "bindgen"
 version = "0.53.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -249,7 +264,7 @@ dependencies = [
  "regex",
  "rustc-hash",
  "shlex",
- "which 3.1.1",
+ "which",
 ]
 
 [[package]]
@@ -284,15 +299,21 @@ dependencies = [
 
 [[package]]
 name = "bumpalo"
-version = "3.15.4"
+version = "3.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa"
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
 
 [[package]]
 name = "bytecount"
-version = "0.6.7"
+version = "0.6.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1e5f035d16fc623ae5f74981db80a439803888314e3a555fd6f04acd51a3205"
+checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce"
+
+[[package]]
+name = "bytemuck"
+version = "1.16.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "102087e286b4677862ea56cf8fc58bb2cdfa8725c40ffb80fe3a008eb7f2fc83"
 
 [[package]]
 name = "byteorder"
@@ -302,9 +323,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 
 [[package]]
 name = "bytes"
-version = "1.5.0"
+version = "1.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952"
 
 [[package]]
 name = "cached"
@@ -330,7 +351,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b48814962d2fd604c50d2b9433c2a41a0ab567779ee2c02f7fba6eca1221f082"
 dependencies = [
  "cached_proc_macro_types",
- "darling",
+ "darling 0.14.4",
  "proc-macro2",
  "quote",
  "syn 1.0.109",
@@ -356,12 +377,13 @@ dependencies = [
 
 [[package]]
 name = "cc"
-version = "1.0.90"
+version = "1.0.99"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
+checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695"
 dependencies = [
  "jobserver",
  "libc",
+ "once_cell",
 ]
 
 [[package]]
@@ -375,9 +397,9 @@ dependencies = [
 
 [[package]]
 name = "cfg-expr"
-version = "0.15.7"
+version = "0.15.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa50868b64a9a6fda9d593ce778849ea8715cd2a3d2cc17ffdb4a2f2f2f1961d"
+checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02"
 dependencies = [
  "smallvec",
  "target-lexicon",
@@ -397,9 +419,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[package]]
 name = "chrono"
-version = "0.4.35"
+version = "0.4.38"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a"
+checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
 dependencies = [
  "num-traits",
 ]
@@ -488,9 +510,9 @@ dependencies = [
 
 [[package]]
 name = "crossbeam-channel"
-version = "0.5.12"
+version = "0.5.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95"
+checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
 dependencies = [
  "crossbeam-utils",
 ]
@@ -525,9 +547,9 @@ dependencies = [
 
 [[package]]
 name = "crossbeam-utils"
-version = "0.8.19"
+version = "0.8.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
 
 [[package]]
 name = "crypto-common"
@@ -554,8 +576,18 @@ version = "0.14.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850"
 dependencies = [
- "darling_core",
- "darling_macro",
+ "darling_core 0.14.4",
+ "darling_macro 0.14.4",
+]
+
+[[package]]
+name = "darling"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"
+dependencies = [
+ "darling_core 0.20.10",
+ "darling_macro 0.20.10",
 ]
 
 [[package]]
@@ -573,17 +605,42 @@ dependencies = [
 ]
 
 [[package]]
+name = "darling_core"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim 0.11.1",
+ "syn 2.0.66",
+]
+
+[[package]]
 name = "darling_macro"
 version = "0.14.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e"
 dependencies = [
- "darling_core",
+ "darling_core 0.14.4",
  "quote",
  "syn 1.0.109",
 ]
 
 [[package]]
+name = "darling_macro"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
+dependencies = [
+ "darling_core 0.20.10",
+ "quote",
+ "syn 2.0.66",
+]
+
+[[package]]
 name = "deranged"
 version = "0.3.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -598,7 +655,16 @@ version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8"
 dependencies = [
- "derive_builder_macro",
+ "derive_builder_macro 0.12.0",
+]
+
+[[package]]
+name = "derive_builder"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0350b5cb0331628a5916d6c5c0b72e97393b8b6b03b47a9284f4e7f5a405ffd7"
+dependencies = [
+ "derive_builder_macro 0.20.0",
 ]
 
 [[package]]
@@ -607,23 +673,45 @@ version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f"
 dependencies = [
- "darling",
+ "darling 0.14.4",
  "proc-macro2",
  "quote",
  "syn 1.0.109",
 ]
 
 [[package]]
+name = "derive_builder_core"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d48cda787f839151732d396ac69e3473923d54312c070ee21e9effcaa8ca0b1d"
+dependencies = [
+ "darling 0.20.10",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.66",
+]
+
+[[package]]
 name = "derive_builder_macro"
 version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e"
 dependencies = [
- "derive_builder_core",
+ "derive_builder_core 0.12.0",
  "syn 1.0.109",
 ]
 
 [[package]]
+name = "derive_builder_macro"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b"
+dependencies = [
+ "derive_builder_core 0.20.0",
+ "syn 2.0.66",
+]
+
+[[package]]
 name = "derive_more"
 version = "0.99.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -664,10 +752,41 @@ dependencies = [
 ]
 
 [[package]]
+name = "dirs"
+version = "4.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059"
+dependencies = [
+ "dirs-sys",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6"
+dependencies = [
+ "libc",
+ "redox_users",
+ "winapi",
+]
+
+[[package]]
+name = "displaydoc"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.66",
+]
+
+[[package]]
 name = "either"
-version = "1.10.0"
+version = "1.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
+checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b"
 
 [[package]]
 name = "encode_unicode"
@@ -677,9 +796,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
 
 [[package]]
 name = "encoding_rs"
-version = "0.8.33"
+version = "0.8.34"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"
+checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59"
 dependencies = [
  "cfg-if 1.0.0",
 ]
@@ -726,9 +845,9 @@ dependencies = [
 
 [[package]]
 name = "errno"
-version = "0.3.8"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
+checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
 dependencies = [
  "libc",
  "windows-sys 0.52.0",
@@ -736,9 +855,23 @@ dependencies = [
 
 [[package]]
 name = "fastrand"
-version = "2.0.1"
+version = "2.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
+checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a"
+
+[[package]]
+name = "figment"
+version = "0.10.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8cb01cd46b0cf372153850f4c6c272d9cbea2da513e07538405148f95bd789f3"
+dependencies = [
+ "atomic",
+ "pear",
+ "serde",
+ "toml 0.8.14",
+ "uncased",
+ "version_check",
+]
 
 [[package]]
 name = "fixedbitset"
@@ -826,7 +959,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.53",
+ "syn 2.0.66",
 ]
 
 [[package]]
@@ -877,9 +1010,9 @@ dependencies = [
 
 [[package]]
 name = "getrandom"
-version = "0.2.12"
+version = "0.2.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
 dependencies = [
  "cfg-if 1.0.0",
  "js-sys",
@@ -890,9 +1023,9 @@ dependencies = [
 
 [[package]]
 name = "gimli"
-version = "0.28.1"
+version = "0.29.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
+checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd"
 
 [[package]]
 name = "glob"
@@ -912,7 +1045,7 @@ dependencies = [
  "futures-sink",
  "futures-util",
  "http",
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "slab",
  "tokio",
  "tokio-util",
@@ -920,6 +1053,20 @@ dependencies = [
 ]
 
 [[package]]
+name = "handlebars"
+version = "4.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "faa67bab9ff362228eb3d00bd024a4965d8231bbb7921167f0cfa66c6626b225"
+dependencies = [
+ "log",
+ "pest",
+ "pest_derive",
+ "serde",
+ "serde_json",
+ "thiserror",
+]
+
+[[package]]
 name = "hashbrown"
 version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -933,9 +1080,9 @@ checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
 
 [[package]]
 name = "hashbrown"
-version = "0.14.3"
+version = "0.14.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
 
 [[package]]
 name = "headers"
@@ -1033,9 +1180,9 @@ checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f"
 
 [[package]]
 name = "httparse"
-version = "1.8.0"
+version = "1.9.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+checksum = "d0e7a4dd27b9476dc40cb050d3632d3bba3a70ddbff012285f7f8559a1e7e545"
 
 [[package]]
 name = "httpdate"
@@ -1054,9 +1201,9 @@ dependencies = [
 
 [[package]]
 name = "hyper"
-version = "0.14.28"
+version = "0.14.29"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80"
+checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33"
 dependencies = [
  "bytes",
  "futures-channel",
@@ -1121,7 +1268,7 @@ dependencies = [
  "futures-util",
  "http",
  "hyper",
- "rustls 0.21.10",
+ "rustls 0.21.12",
  "tokio",
  "tokio-rustls 0.24.1",
 ]
@@ -1153,6 +1300,124 @@ dependencies = [
 ]
 
 [[package]]
+name = "icu_collections"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"
+dependencies = [
+ "displaydoc",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locid"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"
+dependencies = [
+ "displaydoc",
+ "litemap",
+ "tinystr",
+ "writeable",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locid_transform"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e"
+dependencies = [
+ "displaydoc",
+ "icu_locid",
+ "icu_locid_transform_data",
+ "icu_provider",
+ "tinystr",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locid_transform_data"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e"
+
+[[package]]
+name = "icu_normalizer"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"
+dependencies = [
+ "displaydoc",
+ "icu_collections",
+ "icu_normalizer_data",
+ "icu_properties",
+ "icu_provider",
+ "smallvec",
+ "utf16_iter",
+ "utf8_iter",
+ "write16",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer_data"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516"
+
+[[package]]
+name = "icu_properties"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f8ac670d7422d7f76b32e17a5db556510825b29ec9154f235977c9caba61036"
+dependencies = [
+ "displaydoc",
+ "icu_collections",
+ "icu_locid_transform",
+ "icu_properties_data",
+ "icu_provider",
+ "tinystr",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_properties_data"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569"
+
+[[package]]
+name = "icu_provider"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9"
+dependencies = [
+ "displaydoc",
+ "icu_locid",
+ "icu_provider_macros",
+ "stable_deref_trait",
+ "tinystr",
+ "writeable",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_provider_macros"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.66",
+]
+
+[[package]]
 name = "ident_case"
 version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1160,12 +1425,14 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
 
 [[package]]
 name = "idna"
-version = "0.5.0"
+version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+checksum = "4716a3a0933a1d01c2f72450e89596eb51dd34ef3c211ccd875acdf1f8fe47ed"
 dependencies = [
- "unicode-bidi",
- "unicode-normalization",
+ "icu_normalizer",
+ "icu_properties",
+ "smallvec",
+ "utf8_iter",
 ]
 
 [[package]]
@@ -1180,38 +1447,43 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.2.5"
+version = "2.2.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
 dependencies = [
  "equivalent",
- "hashbrown 0.14.3",
+ "hashbrown 0.14.5",
 ]
 
 [[package]]
 name = "indoc"
-version = "2.0.4"
+version = "2.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
+
+[[package]]
+name = "inlinable_string"
+version = "0.1.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8"
+checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb"
 
 [[package]]
 name = "insta"
-version = "1.36.1"
+version = "1.39.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0a7c22c4d34ef4788c351e971c52bfdfe7ea2766f8c5466bc175dd46e52ac22e"
+checksum = "810ae6042d48e2c9e9215043563a58a80b877bc863228a74cf10c49d4620a6f5"
 dependencies = [
  "console",
  "lazy_static",
  "linked-hash-map",
  "similar",
- "yaml-rust",
 ]
 
 [[package]]
 name = "instant"
-version = "0.1.12"
+version = "0.1.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
 dependencies = [
  "cfg-if 1.0.0",
 ]
@@ -1259,15 +1531,15 @@ dependencies = [
 
 [[package]]
 name = "itoa"
-version = "1.0.10"
+version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
 
 [[package]]
 name = "jobserver"
-version = "0.1.28"
+version = "0.1.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6"
+checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e"
 dependencies = [
  "libc",
 ]
@@ -1283,9 +1555,9 @@ dependencies = [
 
 [[package]]
 name = "jsonwebtoken"
-version = "9.2.0"
+version = "9.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c7ea04a7c5c055c175f189b6dc6ba036fd62306b58c66c9f6389036c503a3f4"
+checksum = "b9ae10193d25051e74945f1ea2d0b42e03cc3b890f7e4cc5faa44997d808193f"
 dependencies = [
  "base64 0.21.7",
  "js-sys",
@@ -1320,18 +1592,18 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
 
 [[package]]
 name = "lexical"
-version = "6.1.1"
+version = "7.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7aefb36fd43fef7003334742cbf77b243fcd36418a1d1bdd480d613a67968f6"
+checksum = "8ecd3381ac77c22d4e2607284ac71e44b21c21bd3785ee807d21976d54ee16f9"
 dependencies = [
  "lexical-core",
 ]
 
 [[package]]
 name = "lexical-core"
-version = "0.8.5"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46"
+checksum = "0885f6cdfe75c96e45bbf1c4e49511f128201391ce3b56e60e29f5a1fadbc1c1"
 dependencies = [
  "lexical-parse-float",
  "lexical-parse-integer",
@@ -1342,9 +1614,9 @@ dependencies = [
 
 [[package]]
 name = "lexical-parse-float"
-version = "0.8.5"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f"
+checksum = "924f7ec090cd4f60bd873f160b0fb69a0c80bb3a98f2e778a1893ae0e5c4b0b9"
 dependencies = [
  "lexical-parse-integer",
  "lexical-util",
@@ -1353,9 +1625,9 @@ dependencies = [
 
 [[package]]
 name = "lexical-parse-integer"
-version = "0.8.6"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9"
+checksum = "8feab1da84a2ab0ddbbad2fb1830b755f71a9a8d996c7a1f2a553faf72aa3686"
 dependencies = [
  "lexical-util",
  "static_assertions",
@@ -1363,18 +1635,18 @@ dependencies = [
 
 [[package]]
 name = "lexical-util"
-version = "0.8.5"
+version = "1.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc"
+checksum = "591ce1a12ecd3b26d4121ab360a6a4483a67f05a5372add6acbfd0b65c9285d9"
 dependencies = [
  "static_assertions",
 ]
 
 [[package]]
 name = "lexical-write-float"
-version = "0.8.5"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862"
+checksum = "05b0f3f9ddada5942b54e97654d535df37c9340ad66c24b50360a90619779f41"
 dependencies = [
  "lexical-util",
  "lexical-write-integer",
@@ -1383,9 +1655,9 @@ dependencies = [
 
 [[package]]
 name = "lexical-write-integer"
-version = "0.8.5"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446"
+checksum = "48c6d47254ddb292771dce7697ae2be9619f8e369d01a9ccda15ef2ff50443fc"
 dependencies = [
  "lexical-util",
  "static_assertions",
@@ -1393,9 +1665,9 @@ dependencies = [
 
 [[package]]
 name = "libc"
-version = "0.2.153"
+version = "0.2.155"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
 
 [[package]]
 name = "libloading"
@@ -1414,10 +1686,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19"
 dependencies = [
  "cfg-if 1.0.0",
- "windows-targets 0.52.4",
+ "windows-targets 0.52.5",
 ]
 
 [[package]]
+name = "libm"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
+
+[[package]]
 name = "libquil-sys"
 version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1435,6 +1713,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "libredox"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
+dependencies = [
+ "bitflags 2.5.0",
+ "libc",
+]
+
+[[package]]
 name = "linked-hash-map"
 version = "0.5.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1442,15 +1730,21 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.4.13"
+version = "0.4.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
+checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
+
+[[package]]
+name = "litemap"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704"
 
 [[package]]
 name = "lock_api"
-version = "0.4.11"
+version = "0.4.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
 dependencies = [
  "autocfg",
  "scopeguard",
@@ -1469,6 +1763,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
 
 [[package]]
+name = "matchers"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
+dependencies = [
+ "regex-automata 0.1.10",
+]
+
+[[package]]
 name = "matchit"
 version = "0.7.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1486,15 +1789,15 @@ dependencies = [
 
 [[package]]
 name = "memchr"
-version = "2.7.1"
+version = "2.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
 
 [[package]]
 name = "memoffset"
-version = "0.9.0"
+version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
 dependencies = [
  "autocfg",
 ]
@@ -1523,9 +1826,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
 
 [[package]]
 name = "miniz_oxide"
-version = "0.7.2"
+version = "0.7.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
+checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae"
 dependencies = [
  "adler",
 ]
@@ -1543,9 +1846,38 @@ dependencies = [
 
 [[package]]
 name = "multimap"
-version = "0.8.3"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03"
+
+[[package]]
+name = "nalgebra"
+version = "0.29.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d506eb7e08d6329505faa8a3a00a5dcc6de9f76e0c77e4b75763ae3c770831ff"
+dependencies = [
+ "approx",
+ "matrixmultiply",
+ "nalgebra-macros",
+ "num-complex",
+ "num-rational",
+ "num-traits",
+ "rand",
+ "rand_distr",
+ "simba",
+ "typenum",
+]
+
+[[package]]
+name = "nalgebra-macros"
+version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
+checksum = "01fcc0b8149b4632adc89ac3b7b31a12fb6099a0317a4eb2ebff574ef7de7218"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
 
 [[package]]
 name = "ndarray"
@@ -1605,9 +1937,9 @@ dependencies = [
 
 [[package]]
 name = "num"
-version = "0.4.1"
+version = "0.4.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af"
+checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23"
 dependencies = [
  "num-bigint",
  "num-complex",
@@ -1619,11 +1951,10 @@ dependencies = [
 
 [[package]]
 name = "num-bigint"
-version = "0.4.4"
+version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0"
+checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7"
 dependencies = [
- "autocfg",
  "num-integer",
  "num-traits",
  "serde",
@@ -1631,9 +1962,9 @@ dependencies = [
 
 [[package]]
 name = "num-complex"
-version = "0.4.5"
+version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6"
+checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
 dependencies = [
  "num-traits",
  "serde",
@@ -1656,9 +1987,9 @@ dependencies = [
 
 [[package]]
 name = "num-iter"
-version = "0.1.44"
+version = "0.1.45"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9"
+checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
 dependencies = [
  "autocfg",
  "num-integer",
@@ -1667,11 +1998,10 @@ dependencies = [
 
 [[package]]
 name = "num-rational"
-version = "0.4.1"
+version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
+checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
 dependencies = [
- "autocfg",
  "num-bigint",
  "num-integer",
  "num-traits",
@@ -1680,11 +2010,12 @@ dependencies = [
 
 [[package]]
 name = "num-traits"
-version = "0.2.18"
+version = "0.2.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
 dependencies = [
  "autocfg",
+ "libm",
 ]
 
 [[package]]
@@ -1714,9 +2045,9 @@ dependencies = [
 
 [[package]]
 name = "object"
-version = "0.32.2"
+version = "0.36.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
+checksum = "576dfe1fc8f9df304abb159d767a29d0476f7750fbf8aa7ad07816004a207434"
 dependencies = [
  "memchr",
 ]
@@ -1740,7 +2071,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9591d937bc0e6d2feb6f71a559540ab300ea49955229c347a517a28d27784c54"
 dependencies = [
  "opentelemetry_api",
- "opentelemetry_sdk",
+ "opentelemetry_sdk 0.20.0",
+]
+
+[[package]]
+name = "opentelemetry"
+version = "0.23.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b69a91d4893e713e06f724597ad630f1fa76057a5e1026c0ca67054a9032a76"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+ "js-sys",
+ "once_cell",
+ "pin-project-lite",
+ "thiserror",
 ]
 
 [[package]]
@@ -1756,6 +2101,53 @@ dependencies = [
 ]
 
 [[package]]
+name = "opentelemetry-otlp"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a94c69209c05319cdf7460c6d4c055ed102be242a0a6245835d7bc42c6ec7f54"
+dependencies = [
+ "async-trait",
+ "futures-core",
+ "http",
+ "opentelemetry 0.23.0",
+ "opentelemetry-proto",
+ "opentelemetry_sdk 0.23.0",
+ "prost",
+ "thiserror",
+ "tokio",
+ "tonic",
+]
+
+[[package]]
+name = "opentelemetry-proto"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "984806e6cf27f2b49282e2a05e288f30594f3dbc74eb7a6e99422bc48ed78162"
+dependencies = [
+ "opentelemetry 0.23.0",
+ "opentelemetry_sdk 0.23.0",
+ "prost",
+ "tonic",
+]
+
+[[package]]
+name = "opentelemetry-stdout"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6d080bf06af02b738feb2e6830cf72c30b76ca18b40f555cdf1b53e7b491bfe"
+dependencies = [
+ "async-trait",
+ "chrono",
+ "futures-util",
+ "opentelemetry 0.23.0",
+ "opentelemetry_sdk 0.23.0",
+ "ordered-float 4.2.0",
+ "serde",
+ "serde_json",
+ "thiserror",
+]
+
+[[package]]
 name = "opentelemetry_api"
 version = "0.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1784,7 +2176,7 @@ dependencies = [
  "futures-util",
  "once_cell",
  "opentelemetry_api",
- "ordered-float",
+ "ordered-float 3.9.2",
  "percent-encoding",
  "rand",
  "regex",
@@ -1792,6 +2184,29 @@ dependencies = [
 ]
 
 [[package]]
+name = "opentelemetry_sdk"
+version = "0.23.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae312d58eaa90a82d2e627fd86e075cf5230b3f11794e2ed74199ebbe572d4fd"
+dependencies = [
+ "async-trait",
+ "futures-channel",
+ "futures-executor",
+ "futures-util",
+ "glob",
+ "lazy_static",
+ "once_cell",
+ "opentelemetry 0.23.0",
+ "ordered-float 4.2.0",
+ "percent-encoding",
+ "rand",
+ "serde_json",
+ "thiserror",
+ "tokio",
+ "tokio-stream",
+]
+
+[[package]]
 name = "ordered-float"
 version = "3.9.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1801,6 +2216,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "ordered-float"
+version = "4.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a76df7075c7d4d01fdcb46c912dd17fba5b60c78ea480b475f2b6ab6f666584e"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
 name = "overload"
 version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1808,9 +2232,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
 
 [[package]]
 name = "parking_lot"
-version = "0.12.1"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
 dependencies = [
  "lock_api",
  "parking_lot_core",
@@ -1818,22 +2242,22 @@ dependencies = [
 
 [[package]]
 name = "parking_lot_core"
-version = "0.9.9"
+version = "0.9.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
 dependencies = [
  "cfg-if 1.0.0",
  "libc",
  "redox_syscall",
  "smallvec",
- "windows-targets 0.48.5",
+ "windows-targets 0.52.5",
 ]
 
 [[package]]
 name = "paste"
-version = "1.0.14"
+version = "1.0.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
 
 [[package]]
 name = "pbjson"
@@ -1873,6 +2297,29 @@ dependencies = [
 ]
 
 [[package]]
+name = "pear"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bdeeaa00ce488657faba8ebf44ab9361f9365a97bd39ffb8a60663f57ff4b467"
+dependencies = [
+ "inlinable_string",
+ "pear_codegen",
+ "yansi 1.0.1",
+]
+
+[[package]]
+name = "pear_codegen"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4bab5b985dc082b345f812b7df84e1bef27e7207b39e448439ba8bd69c93f147"
+dependencies = [
+ "proc-macro2",
+ "proc-macro2-diagnostics",
+ "quote",
+ "syn 2.0.66",
+]
+
+[[package]]
 name = "peeking_take_while"
 version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1880,11 +2327,11 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
 
 [[package]]
 name = "pem"
-version = "3.0.3"
+version = "3.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b8fcc794035347fb64beda2d3b462595dd2753e3f268d89c5aae77e8cf2c310"
+checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae"
 dependencies = [
- "base64 0.21.7",
+ "base64 0.22.1",
  "serde",
 ]
 
@@ -1895,13 +2342,58 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
 
 [[package]]
+name = "pest"
+version = "2.7.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8"
+dependencies = [
+ "memchr",
+ "thiserror",
+ "ucd-trie",
+]
+
+[[package]]
+name = "pest_derive"
+version = "2.7.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459"
+dependencies = [
+ "pest",
+ "pest_generator",
+]
+
+[[package]]
+name = "pest_generator"
+version = "2.7.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687"
+dependencies = [
+ "pest",
+ "pest_meta",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.66",
+]
+
+[[package]]
+name = "pest_meta"
+version = "2.7.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd"
+dependencies = [
+ "once_cell",
+ "pest",
+ "sha2",
+]
+
+[[package]]
 name = "petgraph"
-version = "0.6.4"
+version = "0.6.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9"
+checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
 dependencies = [
  "fixedbitset",
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
 ]
 
 [[package]]
@@ -1921,14 +2413,14 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.53",
+ "syn 2.0.66",
 ]
 
 [[package]]
 name = "pin-project-lite"
-version = "0.2.13"
+version = "0.2.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
 
 [[package]]
 name = "pin-utils"
@@ -1962,28 +2454,41 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
 
 [[package]]
 name = "prettyplease"
-version = "0.2.16"
+version = "0.2.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5"
+checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e"
 dependencies = [
  "proc-macro2",
- "syn 2.0.53",
+ "syn 2.0.66",
 ]
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.79"
+version = "1.0.85"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
+checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
+name = "proc-macro2-diagnostics"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.66",
+ "version_check",
+ "yansi 1.0.1",
+]
+
+[[package]]
 name = "prost"
-version = "0.12.3"
+version = "0.12.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a"
+checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29"
 dependencies = [
  "bytes",
  "prost-derive",
@@ -1991,13 +2496,13 @@ dependencies = [
 
 [[package]]
 name = "prost-build"
-version = "0.12.3"
+version = "0.12.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c55e02e35260070b6f716a2423c2ff1c3bb1642ddca6f99e1f26d06268a0e2d2"
+checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4"
 dependencies = [
  "bytes",
- "heck 0.4.1",
- "itertools 0.11.0",
+ "heck 0.5.0",
+ "itertools 0.12.1",
  "log",
  "multimap",
  "once_cell",
@@ -2006,29 +2511,28 @@ dependencies = [
  "prost",
  "prost-types",
  "regex",
- "syn 2.0.53",
+ "syn 2.0.66",
  "tempfile",
- "which 4.4.2",
 ]
 
 [[package]]
 name = "prost-derive"
-version = "0.12.3"
+version = "0.12.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e"
+checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1"
 dependencies = [
  "anyhow",
- "itertools 0.11.0",
+ "itertools 0.12.1",
  "proc-macro2",
  "quote",
- "syn 2.0.53",
+ "syn 2.0.66",
 ]
 
 [[package]]
 name = "prost-types"
-version = "0.12.3"
+version = "0.12.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e"
+checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0"
 dependencies = [
  "prost",
 ]
@@ -2047,7 +2551,7 @@ dependencies = [
  "num-complex",
  "parking_lot",
  "portable-atomic",
- "pyo3-build-config",
+ "pyo3-build-config 0.20.3",
  "pyo3-ffi",
  "pyo3-macros",
  "unindent",
@@ -2077,13 +2581,23 @@ dependencies = [
 ]
 
 [[package]]
+name = "pyo3-build-config"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7879eb018ac754bba32cb0eec7526391c02c14a093121857ed09fbf1d1057d41"
+dependencies = [
+ "once_cell",
+ "target-lexicon",
+]
+
+[[package]]
 name = "pyo3-ffi"
 version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "62b42531d03e08d4ef1f6e85a2ed422eb678b8cd62b762e53891c05faf0d4afa"
 dependencies = [
  "libc",
- "pyo3-build-config",
+ "pyo3-build-config 0.20.3",
 ]
 
 [[package]]
@@ -2106,7 +2620,7 @@ dependencies = [
  "proc-macro2",
  "pyo3-macros-backend",
  "quote",
- "syn 2.0.53",
+ "syn 2.0.66",
 ]
 
 [[package]]
@@ -2117,26 +2631,72 @@ checksum = "7c7e9b68bb9c3149c5b0cade5d07f953d6d125eb4337723c4ccdb665f1f96185"
 dependencies = [
  "heck 0.4.1",
  "proc-macro2",
- "pyo3-build-config",
+ "pyo3-build-config 0.20.3",
+ "quote",
+ "syn 2.0.66",
+]
+
+[[package]]
+name = "pyo3-opentelemetry"
+version = "0.3.2-dev.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f8d7f2bd9d6af9240258fce526857a85f03f89bd7f9cf18580ab0e80263ca4a"
+dependencies = [
+ "opentelemetry 0.23.0",
+ "opentelemetry_sdk 0.23.0",
+ "pyo3",
+ "pyo3-opentelemetry-macros",
+]
+
+[[package]]
+name = "pyo3-opentelemetry-macros"
+version = "0.3.2-rc.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51e7dacb594f115c33f49a0bbc15fdfe7b47ba58d1db03cbdd3e2809a2ff1182"
+dependencies = [
+ "proc-macro2",
  "quote",
- "syn 2.0.53",
+ "syn 2.0.66",
+]
+
+[[package]]
+name = "pyo3-tracing-subscriber"
+version = "0.1.2-dev.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32dd810a19ef59f9ea7dfb3c84bbaa5cb577a15d92a56bd2e781b8c4e5cba8eb"
+dependencies = [
+ "handlebars",
+ "opentelemetry 0.23.0",
+ "opentelemetry-otlp",
+ "opentelemetry-proto",
+ "opentelemetry-stdout",
+ "opentelemetry_sdk 0.23.0",
+ "pyo3",
+ "pyo3-asyncio",
+ "serde",
+ "thiserror",
+ "tokio",
+ "tonic",
+ "tracing",
+ "tracing-opentelemetry 0.24.0",
+ "tracing-subscriber",
 ]
 
 [[package]]
 name = "qcs"
-version = "0.21.4"
+version = "0.24.1"
 dependencies = [
  "assert2",
  "async-trait",
  "built",
  "cached",
- "derive_builder",
+ "derive_builder 0.12.0",
  "enum-as-inner",
  "erased-serde",
  "float-cmp",
  "futures",
  "hex",
- "indexmap 1.9.3",
+ "indexmap 2.2.6",
  "insta",
  "itertools 0.11.0",
  "lazy_static",
@@ -2144,6 +2704,8 @@ dependencies = [
  "maplit",
  "ndarray",
  "num",
+ "opentelemetry 0.23.0",
+ "opentelemetry_sdk 0.23.0",
  "qcs-api",
  "qcs-api-client-common",
  "qcs-api-client-grpc",
@@ -2184,22 +2746,31 @@ dependencies = [
 
 [[package]]
 name = "qcs-api-client-common"
-version = "0.7.12"
+version = "0.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e96a94ca1f4ac3e094d51d90deb5d158dddfd0723cca1b50d302acfd2e4e78ef"
+checksum = "1cf1692d12ab36478f43f1ef493a8b2445f7f5d17164f739d8b0fd57ad59e6e6"
 dependencies = [
  "async-trait",
  "backoff",
+ "base64 0.22.1",
+ "derive_builder 0.20.0",
+ "figment",
  "futures",
  "home",
  "http",
  "jsonwebtoken",
+ "paste",
+ "pyo3",
+ "pyo3-asyncio",
+ "pyo3-build-config 0.22.1",
  "reqwest",
+ "rigetti-pyo3 0.3.6",
  "serde",
+ "shellexpand",
  "thiserror",
  "time",
  "tokio",
- "toml 0.7.8",
+ "toml 0.8.14",
  "tracing",
  "url",
  "urlpattern",
@@ -2207,9 +2778,9 @@ dependencies = [
 
 [[package]]
 name = "qcs-api-client-grpc"
-version = "0.7.14"
+version = "0.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b82196be0676c8dc24749a830e886ffda6e34b3130c6a7078354c24dec07933a"
+checksum = "b6224aeaaafb92d44439a398a03b042889edacbe23a115cfb1ff1e17c80c8bf2"
 dependencies = [
  "backoff",
  "http",
@@ -2217,7 +2788,7 @@ dependencies = [
  "hyper",
  "hyper-proxy",
  "hyper-socks2",
- "opentelemetry",
+ "opentelemetry 0.20.0",
  "opentelemetry-http",
  "opentelemetry_api",
  "pbjson",
@@ -2240,9 +2811,9 @@ dependencies = [
 
 [[package]]
 name = "qcs-api-client-openapi"
-version = "0.8.13"
+version = "0.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e318c4bffb689688d4f95afb2b5a52a70e12a191da402e0dded093102fcb1e9"
+checksum = "c5107bbd313d31d1eede8dec2bc9c69e0aa50ffc6207457bb4d8c3ab3cb32434"
 dependencies = [
  "anyhow",
  "qcs-api-client-common",
@@ -2260,26 +2831,32 @@ dependencies = [
 
 [[package]]
 name = "qcs-sdk-python"
-version = "0.17.4"
+version = "0.20.1"
 dependencies = [
  "async-trait",
  "numpy",
  "once_cell",
+ "opentelemetry 0.23.0",
+ "opentelemetry_sdk 0.23.0",
  "paste",
+ "prost",
  "pyo3",
  "pyo3-asyncio",
- "pyo3-build-config",
+ "pyo3-build-config 0.20.3",
  "pyo3-log",
+ "pyo3-opentelemetry",
+ "pyo3-tracing-subscriber",
  "qcs",
  "qcs-api",
  "qcs-api-client-common",
  "qcs-api-client-grpc",
  "qcs-api-client-openapi",
  "quil-rs",
- "rigetti-pyo3",
+ "rigetti-pyo3 0.4.1",
  "serde_json",
  "thiserror",
  "tokio",
+ "tracing",
 ]
 
 [[package]]
@@ -2290,11 +2867,11 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
 
 [[package]]
 name = "quil-rs"
-version = "0.23.0"
-source = "git+https://github.com/rigetti/quil-rs?tag=quil-py/v0.7.0#3bb618124c2165b7329c58c0f217d8ee9d816e67"
+version = "0.28.1"
+source = "git+https://github.com/rigetti/quil-rs?tag=quil-py/v0.12.1#a0f2776893d3ce33eb9f29449f3b4b0e9ed24174"
 dependencies = [
  "approx",
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "itertools 0.12.1",
  "lexical",
  "ndarray",
@@ -2305,15 +2882,16 @@ dependencies = [
  "petgraph",
  "regex",
  "serde",
+ "statrs",
  "strum",
  "thiserror",
 ]
 
 [[package]]
 name = "quote"
-version = "1.0.35"
+version = "1.0.36"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
 dependencies = [
  "proc-macro2",
 ]
@@ -2349,6 +2927,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "rand_distr"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31"
+dependencies = [
+ "num-traits",
+ "rand",
+]
+
+[[package]]
 name = "rawpointer"
 version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2356,9 +2944,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
 
 [[package]]
 name = "rayon"
-version = "1.9.0"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
 dependencies = [
  "either",
  "rayon-core",
@@ -2376,41 +2964,67 @@ dependencies = [
 
 [[package]]
 name = "redox_syscall"
-version = "0.4.1"
+version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd"
 dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.5.0",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891"
+dependencies = [
+ "getrandom",
+ "libredox",
+ "thiserror",
 ]
 
 [[package]]
 name = "regex"
-version = "1.10.3"
+version = "1.10.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
+checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f"
 dependencies = [
  "aho-corasick",
  "memchr",
- "regex-automata",
- "regex-syntax",
+ "regex-automata 0.4.7",
+ "regex-syntax 0.8.4",
 ]
 
 [[package]]
 name = "regex-automata"
-version = "0.4.6"
+version = "0.1.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
+checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+dependencies = [
+ "regex-syntax 0.6.29",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
 dependencies = [
  "aho-corasick",
  "memchr",
- "regex-syntax",
+ "regex-syntax 0.8.4",
 ]
 
 [[package]]
 name = "regex-syntax"
-version = "0.8.2"
+version = "0.6.29"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
 
 [[package]]
 name = "reqwest"
@@ -2436,7 +3050,7 @@ dependencies = [
  "once_cell",
  "percent-encoding",
  "pin-project-lite",
- "rustls 0.21.10",
+ "rustls 0.21.12",
  "rustls-native-certs 0.6.3",
  "rustls-pemfile 1.0.4",
  "serde",
@@ -2481,24 +3095,38 @@ dependencies = [
  "async-trait",
  "getrandom",
  "matchit",
- "opentelemetry",
+ "opentelemetry 0.20.0",
  "reqwest",
  "reqwest-middleware",
  "task-local-extensions",
  "tracing",
- "tracing-opentelemetry",
+ "tracing-opentelemetry 0.20.0",
 ]
 
 [[package]]
 name = "rigetti-pyo3"
-version = "0.3.1"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c59068763670399bb3e895a17cc631d9214c3172b64fc74d3ab63dac7371c340"
+dependencies = [
+ "num-complex",
+ "num-traits",
+ "paste",
+ "pyo3",
+ "time",
+]
+
+[[package]]
+name = "rigetti-pyo3"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff977cba40f2cadf214226cf51c9729a4f5730a5413f901246eed78cb6e795c9"
+checksum = "f924032d36104a859f936762576a9e6fc0811b37a1f4a8144c0b9b25ee89607b"
 dependencies = [
  "num-complex",
  "num-traits",
  "paste",
  "pyo3",
+ "time",
 ]
 
 [[package]]
@@ -2533,9 +3161,9 @@ dependencies = [
 
 [[package]]
 name = "rmp"
-version = "0.8.12"
+version = "0.8.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f9860a6cc38ed1da53456442089b4dfa35e7cedaa326df63017af88385e6b20"
+checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4"
 dependencies = [
  "byteorder",
  "num-traits",
@@ -2544,9 +3172,9 @@ dependencies = [
 
 [[package]]
 name = "rmp-serde"
-version = "1.1.2"
+version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bffea85eea980d8a74453e5d02a8d93028f3c34725de143085a844ebe953258a"
+checksum = "52e599a477cf9840e92f2cde9a7189e67b42c57532749bf90aea6ec10facd4db"
 dependencies = [
  "byteorder",
  "rmp",
@@ -2581,9 +3209,9 @@ dependencies = [
 
 [[package]]
 name = "rustc-demangle"
-version = "0.1.23"
+version = "0.1.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
+checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
 
 [[package]]
 name = "rustc-hash"
@@ -2602,9 +3230,9 @@ dependencies = [
 
 [[package]]
 name = "rustix"
-version = "0.38.31"
+version = "0.38.34"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949"
+checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
 dependencies = [
  "bitflags 2.5.0",
  "errno",
@@ -2628,9 +3256,9 @@ dependencies = [
 
 [[package]]
 name = "rustls"
-version = "0.21.10"
+version = "0.21.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba"
+checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e"
 dependencies = [
  "log",
  "ring 0.17.8",
@@ -2640,14 +3268,14 @@ dependencies = [
 
 [[package]]
 name = "rustls"
-version = "0.22.2"
+version = "0.22.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e87c9956bd9807afa1f77e0f7594af32566e830e088a5576d27c5b6f30f49d41"
+checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432"
 dependencies = [
  "log",
  "ring 0.17.8",
  "rustls-pki-types",
- "rustls-webpki 0.102.2",
+ "rustls-webpki 0.102.4",
  "subtle",
  "zeroize",
 ]
@@ -2683,7 +3311,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792"
 dependencies = [
  "openssl-probe",
- "rustls-pemfile 2.1.1",
+ "rustls-pemfile 2.1.2",
  "rustls-pki-types",
  "schannel",
  "security-framework",
@@ -2700,19 +3328,19 @@ dependencies = [
 
 [[package]]
 name = "rustls-pemfile"
-version = "2.1.1"
+version = "2.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f48172685e6ff52a556baa527774f61fcaa884f59daf3375c62a3f1cd2549dab"
+checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d"
 dependencies = [
- "base64 0.21.7",
+ "base64 0.22.1",
  "rustls-pki-types",
 ]
 
 [[package]]
 name = "rustls-pki-types"
-version = "1.3.1"
+version = "1.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ede67b28608b4c60685c7d54122d4400d90f62b40caee7700e700380a390fa8"
+checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d"
 
 [[package]]
 name = "rustls-webpki"
@@ -2726,9 +3354,9 @@ dependencies = [
 
 [[package]]
 name = "rustls-webpki"
-version = "0.102.2"
+version = "0.102.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610"
+checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e"
 dependencies = [
  "ring 0.17.8",
  "rustls-pki-types",
@@ -2737,15 +3365,24 @@ dependencies = [
 
 [[package]]
 name = "rustversion"
-version = "1.0.14"
+version = "1.0.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
+checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6"
 
 [[package]]
 name = "ryu"
-version = "1.0.17"
+version = "1.0.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
+
+[[package]]
+name = "safe_arch"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a"
+dependencies = [
+ "bytemuck",
+]
 
 [[package]]
 name = "same-file"
@@ -2799,11 +3436,11 @@ dependencies = [
 
 [[package]]
 name = "security-framework"
-version = "2.9.2"
+version = "2.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de"
+checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0"
 dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.5.0",
  "core-foundation",
  "core-foundation-sys",
  "libc",
@@ -2812,9 +3449,9 @@ dependencies = [
 
 [[package]]
 name = "security-framework-sys"
-version = "2.9.1"
+version = "2.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a"
+checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7"
 dependencies = [
  "core-foundation-sys",
  "libc",
@@ -2822,38 +3459,38 @@ dependencies = [
 
 [[package]]
 name = "semver"
-version = "1.0.22"
+version = "1.0.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
+checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
 dependencies = [
  "serde",
 ]
 
 [[package]]
 name = "serde"
-version = "1.0.197"
+version = "1.0.203"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
+checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.197"
+version = "1.0.203"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
+checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.53",
+ "syn 2.0.66",
 ]
 
 [[package]]
 name = "serde_json"
-version = "1.0.114"
+version = "1.0.117"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
+checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3"
 dependencies = [
  "itoa",
  "ryu",
@@ -2862,9 +3499,9 @@ dependencies = [
 
 [[package]]
 name = "serde_spanned"
-version = "0.6.5"
+version = "0.6.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1"
+checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0"
 dependencies = [
  "serde",
 ]
@@ -2893,6 +3530,17 @@ dependencies = [
 ]
 
 [[package]]
+name = "sha2"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
+dependencies = [
+ "cfg-if 1.0.0",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
 name = "sharded-slab"
 version = "0.1.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2902,16 +3550,38 @@ dependencies = [
 ]
 
 [[package]]
+name = "shellexpand"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da03fa3b94cc19e3ebfc88c4229c49d8f08cdbd1228870a45f0ffdf84988e14b"
+dependencies = [
+ "dirs",
+]
+
+[[package]]
 name = "shlex"
 version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2"
 
 [[package]]
+name = "simba"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0b7840f121a46d63066ee7a99fc81dcabbc6105e437cae43528cea199b5a05f"
+dependencies = [
+ "approx",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "wide",
+]
+
+[[package]]
 name = "similar"
-version = "2.4.0"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32fea41aca09ee824cc9724996433064c89f7777e60762749a4170a14abbfa21"
+checksum = "fa42c91313f1d05da9b26f267f931cf178d4aba455b4c4622dd7355eb80c6640"
 
 [[package]]
 name = "simple_asn1"
@@ -2946,15 +3616,15 @@ dependencies = [
 
 [[package]]
 name = "smallvec"
-version = "1.13.1"
+version = "1.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
 
 [[package]]
 name = "socket2"
-version = "0.5.6"
+version = "0.5.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871"
+checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c"
 dependencies = [
  "libc",
  "windows-sys 0.52.0",
@@ -2973,12 +3643,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
 
 [[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
 name = "static_assertions"
 version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
 
 [[package]]
+name = "statrs"
+version = "0.16.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b35a062dbadac17a42e0fc64c27f419b25d6fae98572eb43c8814c9e873d7721"
+dependencies = [
+ "approx",
+ "lazy_static",
+ "nalgebra",
+ "num-traits",
+ "rand",
+]
+
+[[package]]
 name = "strsim"
 version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2991,6 +3680,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
 
 [[package]]
+name = "strsim"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+
+[[package]]
 name = "strum"
 version = "0.26.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3001,15 +3696,15 @@ dependencies = [
 
 [[package]]
 name = "strum_macros"
-version = "0.26.2"
+version = "0.26.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946"
+checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be"
 dependencies = [
- "heck 0.4.1",
+ "heck 0.5.0",
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.53",
+ "syn 2.0.66",
 ]
 
 [[package]]
@@ -3031,9 +3726,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.53"
+version = "2.0.66"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032"
+checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3047,6 +3742,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
 
 [[package]]
+name = "synstructure"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.66",
+]
+
+[[package]]
 name = "system-configuration"
 version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3076,7 +3782,7 @@ dependencies = [
  "cfg-expr",
  "heck 0.5.0",
  "pkg-config",
- "toml 0.8.12",
+ "toml 0.8.14",
  "version-compare",
 ]
 
@@ -3134,7 +3840,7 @@ dependencies = [
  "cfg-if 1.0.0",
  "proc-macro2",
  "quote",
- "syn 2.0.53",
+ "syn 2.0.66",
 ]
 
 [[package]]
@@ -3145,7 +3851,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.53",
+ "syn 2.0.66",
  "test-case-core",
 ]
 
@@ -3160,22 +3866,22 @@ dependencies = [
 
 [[package]]
 name = "thiserror"
-version = "1.0.58"
+version = "1.0.61"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
+checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.58"
+version = "1.0.61"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
+checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.53",
+ "syn 2.0.66",
 ]
 
 [[package]]
@@ -3190,9 +3896,9 @@ dependencies = [
 
 [[package]]
 name = "time"
-version = "0.3.34"
+version = "0.3.36"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749"
+checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
 dependencies = [
  "deranged",
  "itoa",
@@ -3211,34 +3917,29 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
 
 [[package]]
 name = "time-macros"
-version = "0.2.17"
+version = "0.2.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774"
+checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
 dependencies = [
  "num-conv",
  "time-core",
 ]
 
 [[package]]
-name = "tinyvec"
-version = "1.6.0"
+name = "tinystr"
+version = "0.7.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f"
 dependencies = [
- "tinyvec_macros",
+ "displaydoc",
+ "zerovec",
 ]
 
 [[package]]
-name = "tinyvec_macros"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
-
-[[package]]
 name = "tokio"
-version = "1.36.0"
+version = "1.38.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931"
+checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a"
 dependencies = [
  "backtrace",
  "bytes",
@@ -3264,13 +3965,13 @@ dependencies = [
 
 [[package]]
 name = "tokio-macros"
-version = "2.2.0"
+version = "2.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
+checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.53",
+ "syn 2.0.66",
 ]
 
 [[package]]
@@ -3290,7 +3991,7 @@ version = "0.24.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
 dependencies = [
- "rustls 0.21.10",
+ "rustls 0.21.12",
  "tokio",
 ]
 
@@ -3300,7 +4001,7 @@ version = "0.25.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f"
 dependencies = [
- "rustls 0.22.2",
+ "rustls 0.22.4",
  "rustls-pki-types",
  "tokio",
 ]
@@ -3330,16 +4031,15 @@ dependencies = [
 
 [[package]]
 name = "tokio-util"
-version = "0.7.10"
+version = "0.7.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15"
+checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1"
 dependencies = [
  "bytes",
  "futures-core",
  "futures-sink",
  "pin-project-lite",
  "tokio",
- "tracing",
 ]
 
 [[package]]
@@ -3356,21 +4056,21 @@ dependencies = [
 
 [[package]]
 name = "toml"
-version = "0.8.12"
+version = "0.8.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3"
+checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335"
 dependencies = [
  "serde",
  "serde_spanned",
  "toml_datetime",
- "toml_edit 0.22.8",
+ "toml_edit 0.22.14",
 ]
 
 [[package]]
 name = "toml_datetime"
-version = "0.6.5"
+version = "0.6.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
+checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf"
 dependencies = [
  "serde",
 ]
@@ -3381,7 +4081,7 @@ version = "0.19.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
 dependencies = [
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "serde",
  "serde_spanned",
  "toml_datetime",
@@ -3390,15 +4090,15 @@ dependencies = [
 
 [[package]]
 name = "toml_edit"
-version = "0.22.8"
+version = "0.22.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c12219811e0c1ba077867254e5ad62ee2c9c190b0d957110750ac0cda1ae96cd"
+checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38"
 dependencies = [
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "serde",
  "serde_spanned",
  "toml_datetime",
- "winnow 0.6.5",
+ "winnow 0.6.13",
 ]
 
 [[package]]
@@ -3421,7 +4121,7 @@ dependencies = [
  "pin-project",
  "prost",
  "rustls-native-certs 0.7.0",
- "rustls-pemfile 2.1.1",
+ "rustls-pemfile 2.1.2",
  "rustls-pki-types",
  "tokio",
  "tokio-rustls 0.25.0",
@@ -3442,7 +4142,7 @@ dependencies = [
  "proc-macro2",
  "prost-build",
  "quote",
- "syn 2.0.53",
+ "syn 2.0.66",
 ]
 
 [[package]]
@@ -3535,7 +4235,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.53",
+ "syn 2.0.66",
 ]
 
 [[package]]
@@ -3577,7 +4277,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fc09e402904a5261e42cf27aea09ccb7d5318c6717a9eec3d8e2e65c56b18f19"
 dependencies = [
  "once_cell",
- "opentelemetry",
+ "opentelemetry 0.20.0",
  "tracing",
  "tracing-core",
  "tracing-log 0.1.4",
@@ -3585,17 +4285,52 @@ dependencies = [
 ]
 
 [[package]]
+name = "tracing-opentelemetry"
+version = "0.24.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f68803492bf28ab40aeccaecc7021096bd256baf7ca77c3d425d89b35a7be4e4"
+dependencies = [
+ "js-sys",
+ "once_cell",
+ "opentelemetry 0.23.0",
+ "opentelemetry_sdk 0.23.0",
+ "smallvec",
+ "tracing",
+ "tracing-core",
+ "tracing-log 0.2.0",
+ "tracing-subscriber",
+ "web-time",
+]
+
+[[package]]
+name = "tracing-serde"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1"
+dependencies = [
+ "serde",
+ "tracing-core",
+]
+
+[[package]]
 name = "tracing-subscriber"
 version = "0.3.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
 dependencies = [
+ "matchers",
  "nu-ansi-term",
+ "once_cell",
+ "regex",
+ "serde",
+ "serde_json",
  "sharded-slab",
  "smallvec",
  "thread_local",
+ "tracing",
  "tracing-core",
  "tracing-log 0.2.0",
+ "tracing-serde",
 ]
 
 [[package]]
@@ -3611,6 +4346,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
 
 [[package]]
+name = "ucd-trie"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9"
+
+[[package]]
+name = "uncased"
+version = "0.9.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
 name = "unic-char-property"
 version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3661,31 +4411,16 @@ dependencies = [
 ]
 
 [[package]]
-name = "unicode-bidi"
-version = "0.3.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
-
-[[package]]
 name = "unicode-ident"
 version = "1.0.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
 
 [[package]]
-name = "unicode-normalization"
-version = "0.1.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
-dependencies = [
- "tinyvec",
-]
-
-[[package]]
 name = "unicode-width"
-version = "0.1.11"
+version = "0.1.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
+checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
 
 [[package]]
 name = "unindent"
@@ -3707,9 +4442,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
 
 [[package]]
 name = "url"
-version = "2.5.0"
+version = "2.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
+checksum = "f7c25da092f0a868cdf09e8674cd3b7ef3a7d92a24253e663a2fb85e2496de56"
 dependencies = [
  "form_urlencoded",
  "idna",
@@ -3736,6 +4471,18 @@ dependencies = [
 ]
 
 [[package]]
+name = "utf16_iter"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246"
+
+[[package]]
+name = "utf8_iter"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
+
+[[package]]
 name = "uuid"
 version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3789,9 +4536,9 @@ dependencies = [
 
 [[package]]
 name = "warp"
-version = "0.3.6"
+version = "0.3.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1e92e22e03ff1230c03a1a8ee37d2f89cd489e2e541b7550d6afad96faed169"
+checksum = "4378d202ff965b011c64817db11d5829506d3404edeadb61f190d111da3f231c"
 dependencies = [
  "bytes",
  "futures-channel",
@@ -3804,13 +4551,11 @@ dependencies = [
  "mime_guess",
  "percent-encoding",
  "pin-project",
- "rustls-pemfile 1.0.4",
  "scoped-tls",
  "serde",
  "serde_json",
  "serde_urlencoded",
  "tokio",
- "tokio-stream",
  "tokio-util",
  "tower-service",
  "tracing",
@@ -3843,7 +4588,7 @@ dependencies = [
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.53",
+ "syn 2.0.66",
  "wasm-bindgen-shared",
 ]
 
@@ -3877,7 +4622,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.53",
+ "syn 2.0.66",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
@@ -3899,6 +4644,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "web-time"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
 name = "webpki"
 version = "0.21.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3924,15 +4679,13 @@ dependencies = [
 ]
 
 [[package]]
-name = "which"
-version = "4.4.2"
+name = "wide"
+version = "0.7.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"
+checksum = "901e8597c777fa042e9e245bd56c0dc4418c5db3f845b6ff94fbac732c6a0692"
 dependencies = [
- "either",
- "home",
- "once_cell",
- "rustix",
+ "bytemuck",
+ "safe_arch",
 ]
 
 [[package]]
@@ -3953,11 +4706,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
 
 [[package]]
 name = "winapi-util"
-version = "0.1.6"
+version = "0.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
+checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b"
 dependencies = [
- "winapi",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -3981,7 +4734,7 @@ version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
 dependencies = [
- "windows-targets 0.52.4",
+ "windows-targets 0.52.5",
 ]
 
 [[package]]
@@ -4001,17 +4754,18 @@ dependencies = [
 
 [[package]]
 name = "windows-targets"
-version = "0.52.4"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
+checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
 dependencies = [
- "windows_aarch64_gnullvm 0.52.4",
- "windows_aarch64_msvc 0.52.4",
- "windows_i686_gnu 0.52.4",
- "windows_i686_msvc 0.52.4",
- "windows_x86_64_gnu 0.52.4",
- "windows_x86_64_gnullvm 0.52.4",
- "windows_x86_64_msvc 0.52.4",
+ "windows_aarch64_gnullvm 0.52.5",
+ "windows_aarch64_msvc 0.52.5",
+ "windows_i686_gnu 0.52.5",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc 0.52.5",
+ "windows_x86_64_gnu 0.52.5",
+ "windows_x86_64_gnullvm 0.52.5",
+ "windows_x86_64_msvc 0.52.5",
 ]
 
 [[package]]
@@ -4022,9 +4776,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.52.4"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
+checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
 
 [[package]]
 name = "windows_aarch64_msvc"
@@ -4034,9 +4788,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.52.4"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
+checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
 
 [[package]]
 name = "windows_i686_gnu"
@@ -4046,9 +4800,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.52.4"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
+checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
 
 [[package]]
 name = "windows_i686_msvc"
@@ -4058,9 +4818,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.52.4"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
+checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
 
 [[package]]
 name = "windows_x86_64_gnu"
@@ -4070,9 +4830,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.52.4"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
+checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
@@ -4082,9 +4842,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
-version = "0.52.4"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
+checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
 
 [[package]]
 name = "windows_x86_64_msvc"
@@ -4094,9 +4854,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.52.4"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
+checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
 
 [[package]]
 name = "winnow"
@@ -4109,9 +4869,9 @@ dependencies = [
 
 [[package]]
 name = "winnow"
-version = "0.6.5"
+version = "0.6.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8"
+checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1"
 dependencies = [
  "memchr",
 ]
@@ -4127,13 +4887,16 @@ dependencies = [
 ]
 
 [[package]]
-name = "yaml-rust"
-version = "0.4.5"
+name = "write16"
+version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
-dependencies = [
- "linked-hash-map",
-]
+checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936"
+
+[[package]]
+name = "writeable"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
 
 [[package]]
 name = "yansi"
@@ -4142,10 +4905,61 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
 
 [[package]]
+name = "yansi"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
+
+[[package]]
+name = "yoke"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5"
+dependencies = [
+ "serde",
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.66",
+ "synstructure",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.66",
+ "synstructure",
+]
+
+[[package]]
 name = "zeroize"
-version = "1.7.0"
+version = "1.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
+checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
 
 [[package]]
 name = "zeromq-src"
@@ -4158,6 +4972,28 @@ dependencies = [
 ]
 
 [[package]]
+name = "zerovec"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079"
+dependencies = [
+ "yoke",
+ "zerofrom",
+ "zerovec-derive",
+]
+
+[[package]]
+name = "zerovec-derive"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.66",
+]
+
+[[package]]
 name = "zmq"
 version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/pkgs/development/python-modules/qcs-sdk-python/default.nix b/pkgs/development/python-modules/qcs-sdk-python/default.nix
index 100a7874fd187..854ed41a3437a 100644
--- a/pkgs/development/python-modules/qcs-sdk-python/default.nix
+++ b/pkgs/development/python-modules/qcs-sdk-python/default.nix
@@ -1,18 +1,24 @@
 {
   lib,
+  stdenv,
   buildPythonPackage,
   fetchFromGitHub,
+  opentelemetry-api,
+  opentelemetry-sdk,
   pytest-asyncio,
   pytestCheckHook,
   pythonOlder,
+  qcs-api-client-common,
   quil,
   rustPlatform,
+  darwin,
+  libiconv,
   syrupy,
 }:
 
 buildPythonPackage rec {
   pname = "qcs-sdk-python";
-  version = "0.17.4";
+  version = "0.20.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,13 +27,13 @@ buildPythonPackage rec {
     owner = "rigetti";
     repo = "qcs-sdk-rust";
     rev = "python/v${version}";
-    hash = "sha256-Z/NK+xnugFieJqAbvGaVvxUaz9RC1vpWb4ydZTVbZeU=";
+    hash = "sha256-OuFEygZWfNnhRDLeEY10gGYD9EF5LkPd+K3Uu8X0hwY=";
   };
 
   cargoDeps = rustPlatform.importCargoLock {
     lockFile = ./Cargo.lock;
     outputHashes = {
-      "quil-rs-0.23.0" = "sha256-l9wj1j7PJ5L497dPlkEpJ4ctAfjUIada5Vbn2h5ioVE=";
+      "quil-rs-0.28.1" = "sha256-nyKLBL5Q51u2OTkpr9oKb0c5saWeW3wmZC3g7vxyeEQ=";
     };
   };
 
@@ -38,9 +44,23 @@ buildPythonPackage rec {
     rustPlatform.maturinBuildHook
   ];
 
-  dependencies = [ quil ];
+  dependencies = [
+    qcs-api-client-common
+    quil
+  ];
+
+  optional-dependencies = {
+    tracing-opentelemetry = [ opentelemetry-api ];
+  };
+
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
+    darwin.apple_sdk.frameworks.Security
+    darwin.apple_sdk.frameworks.SystemConfiguration
+    libiconv
+  ];
 
   nativeCheckInputs = [
+    opentelemetry-sdk
     pytest-asyncio
     pytestCheckHook
     syrupy
diff --git a/pkgs/development/python-modules/qdarkstyle/default.nix b/pkgs/development/python-modules/qdarkstyle/default.nix
index 7c35ba6869292..80dca57b1d6a1 100644
--- a/pkgs/development/python-modules/qdarkstyle/default.nix
+++ b/pkgs/development/python-modules/qdarkstyle/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, helpdev
-, qtpy
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  helpdev,
+  qtpy,
 }:
 
 buildPythonPackage rec {
@@ -19,10 +20,13 @@ buildPythonPackage rec {
   # No tests available
   doCheck = false;
 
-  propagatedBuildInputs = [ helpdev qtpy ];
+  propagatedBuildInputs = [
+    helpdev
+    qtpy
+  ];
 
   meta = with lib; {
-    description = "A dark stylesheet for Python and Qt applications";
+    description = "Dark stylesheet for Python and Qt applications";
     homepage = "https://github.com/ColinDuquesnoy/QDarkStyleSheet";
     license = licenses.mit;
     maintainers = with maintainers; [ nyanloutre ];
diff --git a/pkgs/development/python-modules/qdldl/default.nix b/pkgs/development/python-modules/qdldl/default.nix
index a5af403d4d7a6..c63b45d896113 100644
--- a/pkgs/development/python-modules/qdldl/default.nix
+++ b/pkgs/development/python-modules/qdldl/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cmake
-, pybind11
-, numpy
-, scipy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cmake,
+  pybind11,
+  numpy,
+  scipy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "qdldl";
-  version = "0.1.7.post1";
+  version = "0.1.7.post4";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-eY2IwW4CU2rmXHHwa2Tj+/MbdNfke8EP+YFnaGMrOmQ=";
+    hash = "sha256-DBY7mvuSxLadRGOHsdQpUJRDiwQexOhRAnG2xP8fhv0=";
   };
 
   dontUseCmakeConfigure = true;
@@ -32,7 +33,7 @@ buildPythonPackage rec {
   nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A free LDL factorization routine";
+    description = "Free LDL factorization routine";
     homepage = "https://github.com/oxfordcontrol/qdldl";
     downloadPage = "https://github.com/oxfordcontrol/qdldl-python";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/qdrant-client/default.nix b/pkgs/development/python-modules/qdrant-client/default.nix
index 33fdd38d4edb5..d54ac47473a56 100644
--- a/pkgs/development/python-modules/qdrant-client/default.nix
+++ b/pkgs/development/python-modules/qdrant-client/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "qdrant-client";
-  version = "1.9.0";
+  version = "1.11.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
     owner = "qdrant";
     repo = "qdrant-client";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ka5qhs9yhvbGkxXlq9Z3ZMuY1muf9HaODTxCgSLU4io=";
+    hash = "sha256-DVyaBQ8r52H9q2NNDsplfPxoxwZeK3pHNfnyw9a9hvw=";
   };
 
   build-system = [ poetry-core ];
diff --git a/pkgs/development/python-modules/qds-sdk/default.nix b/pkgs/development/python-modules/qds-sdk/default.nix
deleted file mode 100644
index d4fb7a5031449..0000000000000
--- a/pkgs/development/python-modules/qds-sdk/default.nix
+++ /dev/null
@@ -1,51 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, boto
-, inflection
-, requests
-, six
-, urllib3
-, mock
-, pytestCheckHook
-}:
-
-buildPythonPackage rec {
-  pname = "qds-sdk";
-  version = "1.16.1";
-  pyproject = true;
-
-  src = fetchFromGitHub {
-    owner = "qubole";
-    repo = "qds-sdk-py";
-    rev = "refs/tags/V${version}";
-    hash = "sha256-8aPIE2E3Fy2EiBM2FPRyjnJolIBdOzafI3Fvlod5hxU=";
-  };
-
-  nativeBuildInputs = [
-    setuptools
-  ];
-
-  propagatedBuildInputs = [
-    boto
-    inflection
-    requests
-    six
-    urllib3
-  ];
-
-  nativeCheckInputs = [ pytestCheckHook mock ];
-
-  pythonImportsCheck = [
-    "qds_sdk"
-  ];
-
-  meta = with lib; {
-    description = "A Python module that provides the tools you need to authenticate with, and use the Qubole Data Service API";
-    homepage = "https://github.com/qubole/qds-sdk-py";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ shahrukh330 ];
-    mainProgram = "qds.py";
-  };
-}
diff --git a/pkgs/development/python-modules/qemu/default.nix b/pkgs/development/python-modules/qemu/default.nix
index ba730548bca89..9971f254c43e1 100644
--- a/pkgs/development/python-modules/qemu/default.nix
+++ b/pkgs/development/python-modules/qemu/default.nix
@@ -1,10 +1,15 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, qemu
-, setuptools
-, fuseSupport ? false, fusepy
-, tuiSupport ? false, urwid, urwid-readline, pygments
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  qemu,
+  setuptools,
+  fuseSupport ? false,
+  fusepy,
+  tuiSupport ? false,
+  urwid,
+  urwid-readline,
+  pygments,
 }:
 
 buildPythonPackage {
@@ -29,13 +34,16 @@ buildPythonPackage {
     fi
   '';
 
-  buildInputs = [
-    setuptools
-  ];
+  buildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [ ]
+  propagatedBuildInputs =
+    [ ]
     ++ lib.optionals fuseSupport [ fusepy ]
-    ++ lib.optionals tuiSupport [ urwid urwid-readline pygments ];
+    ++ lib.optionals tuiSupport [
+      urwid
+      urwid-readline
+      pygments
+    ];
 
   # Project requires avocado-framework for testing, therefore replacing check phase
   checkPhase = ''
@@ -47,10 +55,10 @@ buildPythonPackage {
   pythonImportsCheck = [ "qemu" ];
 
   preFixup =
-    (lib.optionalString (! tuiSupport) ''
+    (lib.optionalString (!tuiSupport) ''
       rm $out/bin/qmp-tui
     '')
-    + (lib.optionalString (! fuseSupport) ''
+    + (lib.optionalString (!fuseSupport) ''
       rm $out/bin/qom-fuse
     '');
 
@@ -58,6 +66,9 @@ buildPythonPackage {
     homepage = "http://www.qemu.org/";
     description = "Python tooling used by the QEMU project to build, configure, and test QEMU";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ devplayer0 davhau ];
+    maintainers = with maintainers; [
+      devplayer0
+      davhau
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/qgrid/default.nix b/pkgs/development/python-modules/qgrid/default.nix
index 778a9eae37145..a508d6351688d 100644
--- a/pkgs/development/python-modules/qgrid/default.nix
+++ b/pkgs/development/python-modules/qgrid/default.nix
@@ -1,21 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, ipywidgets
-, notebook
-, pandas
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchpatch,
+  fetchPypi,
+  ipywidgets,
+  looseversion,
+  notebook,
+  pandas,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "qgrid";
   version = "1.3.1";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-/or1tQgzCE3AtqJlzRrHuDfAPA+FIRUBY1YNzneNcRw=";
+    hash = "sha256-/or1tQgzCE3AtqJlzRrHuDfAPA+FIRUBY1YNzneNcRw=";
   };
 
   patches = [
@@ -27,15 +29,19 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [
+  postPatch = ''
+    substituteInPlace qgrid/grid.py \
+      --replace-fail "from distutils.version import LooseVersion" "from looseversion import LooseVersion"
+  '';
+
+  dependencies = [
     ipywidgets
+    looseversion
     notebook
     pandas
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Those tests are also failing upstream
   disabledTests = [
@@ -49,10 +55,10 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "qgrid" ];
 
-  meta = with lib; {
-    description = "An interactive grid for sorting, filtering, and editing DataFrames in Jupyter notebooks";
+  meta = {
+    description = "Interactive grid for sorting, filtering, and editing DataFrames in Jupyter notebooks";
     homepage = "https://github.com/quantopian/qgrid";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/qiling/default.nix b/pkgs/development/python-modules/qiling/default.nix
index b7d424be3bfeb..34de987c8e4ef 100644
--- a/pkgs/development/python-modules/qiling/default.nix
+++ b/pkgs/development/python-modules/qiling/default.nix
@@ -1,20 +1,20 @@
-{ lib
-, buildPythonPackage
-, capstone
-, fetchFromGitHub
-, fetchPypi
-, gevent
-, keystone-engine
-, multiprocess
-, pefile
-, pyelftools
-, pythonOlder
-, python-fx
-, python-registry
-, pyyaml
-, questionary
-, termcolor
-, unicorn
+{
+  lib,
+  buildPythonPackage,
+  capstone,
+  fetchPypi,
+  gevent,
+  keystone-engine,
+  multiprocess,
+  pefile,
+  pyelftools,
+  pythonOlder,
+  python-fx,
+  python-registry,
+  pyyaml,
+  questionary,
+  termcolor,
+  unicorn,
 }:
 
 buildPythonPackage rec {
@@ -48,9 +48,7 @@ buildPythonPackage rec {
   # amongst other things)
   doCheck = false;
 
-  pythonImportsCheck = [
-    "qiling"
-  ];
+  pythonImportsCheck = [ "qiling" ];
 
   meta = with lib; {
     description = "Qiling Advanced Binary Emulation Framework";
diff --git a/pkgs/development/python-modules/qimage2ndarray/default.nix b/pkgs/development/python-modules/qimage2ndarray/default.nix
index 2a5f575fb117d..23e66a6c374a2 100644
--- a/pkgs/development/python-modules/qimage2ndarray/default.nix
+++ b/pkgs/development/python-modules/qimage2ndarray/default.nix
@@ -1,6 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k
-, numpy
-, pyqt5
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  numpy,
+  pyqt5,
 }:
 
 buildPythonPackage rec {
@@ -24,7 +28,7 @@ buildPythonPackage rec {
 
   meta = {
     homepage = "https://github.com/hmeine/qimage2ndarray";
-    description = "A small python extension for quickly converting between QImages and numpy.ndarrays (in both directions)";
+    description = "Small python extension for quickly converting between QImages and numpy.ndarrays (in both directions)";
     license = lib.licenses.bsd3;
     maintainers = with lib.maintainers; [ tbenst ];
   };
diff --git a/pkgs/development/python-modules/qingping-ble/default.nix b/pkgs/development/python-modules/qingping-ble/default.nix
index 1a678a2db4969..949ebbd187b8a 100644
--- a/pkgs/development/python-modules/qingping-ble/default.nix
+++ b/pkgs/development/python-modules/qingping-ble/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, bluetooth-data-tools
-, bluetooth-sensor-state-data
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, sensor-state-data
+{
+  lib,
+  bluetooth-data-tools,
+  bluetooth-sensor-state-data,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  sensor-state-data,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-5w3KGJLdHFv6kURKTz3YImZNjaETiVqbbJTJpBSLSo8=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     bluetooth-data-tools
@@ -33,18 +32,14 @@ buildPythonPackage rec {
     sensor-state-data
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace " --cov=qingping_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  pythonImportsCheck = [
-    "qingping_ble"
-  ];
+  pythonImportsCheck = [ "qingping_ble" ];
 
   meta = with lib; {
     description = "Library for Qingping BLE devices";
diff --git a/pkgs/development/python-modules/qiskit-aer/default.nix b/pkgs/development/python-modules/qiskit-aer/default.nix
index 6f6f42f8fd760..18bd47bf5bf70 100644
--- a/pkgs/development/python-modules/qiskit-aer/default.nix
+++ b/pkgs/development/python-modules/qiskit-aer/default.nix
@@ -1,32 +1,30 @@
-{ stdenv
-, lib
-, pythonOlder
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
+{
+  lib,
+  pythonOlder,
+  buildPythonPackage,
+  fetchFromGitHub,
   # C Inputs
-, blas
-, catch2
-, cmake
-, cython
-, fmt
-, muparserx
-, ninja
-, nlohmann_json
-, spdlog
+  blas,
+  catch2,
+  cmake,
+  cython,
+  fmt,
+  muparserx,
+  ninja,
+  nlohmann_json,
+  spdlog,
   # Python Inputs
-, cvxpy
-, numpy
-, pybind11
-, scikit-build
+  cvxpy,
+  numpy,
+  pybind11,
+  scikit-build,
   # Check Inputs
-, pytestCheckHook
-, ddt
-, fixtures
-, pytest-timeout
-, qiskit-terra
-, setuptools
-, testtools
+  pytestCheckHook,
+  ddt,
+  fixtures,
+  pytest-timeout,
+  qiskit-terra,
+  testtools,
 }:
 
 buildPythonPackage rec {
@@ -69,7 +67,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     cvxpy
-    cython  # generates some cython files at runtime that need to be cython-ized
+    cython # generates some cython files at runtime that need to be cython-ized
     numpy
     pybind11
   ];
diff --git a/pkgs/development/python-modules/qiskit-finance/default.nix b/pkgs/development/python-modules/qiskit-finance/default.nix
index 62584bb17165f..0fb5525fee2c6 100644
--- a/pkgs/development/python-modules/qiskit-finance/default.nix
+++ b/pkgs/development/python-modules/qiskit-finance/default.nix
@@ -1,27 +1,28 @@
-{ lib
-, pythonOlder
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  pythonOlder,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
   # Python Inputs
-, fastdtw
-, numpy
-, pandas
-, psutil
-, qiskit-terra
-, qiskit-optimization
-, scikit-learn
-, scipy
-, quandl
-, yfinance
+  fastdtw,
+  numpy,
+  pandas,
+  psutil,
+  qiskit-terra,
+  qiskit-optimization,
+  scikit-learn,
+  scipy,
+  quandl,
+  yfinance,
   # Check Inputs
-, pytestCheckHook
-, ddt
-, pytest-timeout
-, qiskit-aer
+  pytestCheckHook,
+  ddt,
+  pytest-timeout,
+  qiskit-aer,
 }:
 
 buildPythonPackage rec {
@@ -42,9 +43,7 @@ buildPythonPackage rec {
     substituteInPlace requirements.txt --replace "pandas<1.4.0" "pandas"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     fastdtw
@@ -76,9 +75,7 @@ buildPythonPackage rec {
     "test_yahoo"
     "test_wikipedia"
   ];
-  pytestFlagsArray = [
-    "--durations=10"
-  ];
+  pytestFlagsArray = [ "--durations=10" ];
 
   meta = with lib; {
     description = "Software for developing quantum computing programs";
diff --git a/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix b/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix
index 030f94efc8524..833dec1f0d2c8 100644
--- a/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix
+++ b/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix
@@ -1,30 +1,31 @@
-{ lib
-, pythonOlder
-, buildPythonPackage
-, fetchFromGitHub
-, arrow
-, nest-asyncio
-, qiskit-terra
-, requests
-, requests-ntlm
-, websocket-client
+{
+  lib,
+  pythonOlder,
+  buildPythonPackage,
+  fetchFromGitHub,
+  arrow,
+  nest-asyncio,
+  qiskit-terra,
+  requests,
+  requests-ntlm,
+  websocket-client,
   # Visualization inputs
-, withVisualization ? true
-, ipython
-, ipyvuetify
-, ipywidgets
-, matplotlib
-, plotly
-, pyperclip
-, seaborn
+  withVisualization ? true,
+  ipython,
+  ipyvuetify,
+  ipywidgets,
+  matplotlib,
+  plotly,
+  pyperclip,
+  seaborn,
   # check inputs
-, pytestCheckHook
-, nbconvert
-, nbformat
-, pproxy
-, qiskit-aer
-, websockets
-, vcrpy
+  pytestCheckHook,
+  nbconvert,
+  nbformat,
+  pproxy,
+  qiskit-aer,
+  websockets,
+  vcrpy,
 }:
 
 let
@@ -78,7 +79,7 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "qiskit.providers.ibmq" ];
   disabledTests = [
-    "test_coder_operators"  # fails for some reason on nixos-21.05+
+    "test_coder_operators" # fails for some reason on nixos-21.05+
     # These disabled tests require internet connection, aren't skipped elsewhere
     "test_old_api_url"
     "test_non_auth_url"
diff --git a/pkgs/development/python-modules/qiskit-ignis/default.nix b/pkgs/development/python-modules/qiskit-ignis/default.nix
index 9fbaa5957fee8..a51ad99805b9e 100644
--- a/pkgs/development/python-modules/qiskit-ignis/default.nix
+++ b/pkgs/development/python-modules/qiskit-ignis/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, stdenv
-, pythonOlder
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, qiskit-terra
-, scikit-learn
-, scipy
+{
+  lib,
+  stdenv,
+  pythonOlder,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  qiskit-terra,
+  scikit-learn,
+  scipy,
   # Optional package inputs
-, withVisualization ? false
-, matplotlib
-, withCvx ? false
-, cvxpy
-, withJit ? false
-, numba
+  withVisualization ? false,
+  matplotlib,
+  withCvx ? false,
+  cvxpy,
+  withJit ? false,
+  numba,
   # Check Inputs
-, pytestCheckHook
-, ddt
-, pyfakefs
-, qiskit-aer
+  pytestCheckHook,
+  ddt,
+  pyfakefs,
+  qiskit-aer,
 }:
 
 buildPythonPackage rec {
@@ -36,14 +37,16 @@ buildPythonPackage rec {
     hash = "sha256-WyLNtZhtuGzqCJdOBvtBjZZiGFQihpeSjJQtP7lI248=";
   };
 
-  propagatedBuildInputs = [
-    numpy
-    qiskit-terra
-    scikit-learn
-    scipy
-  ] ++ lib.optionals (withCvx) [ cvxpy ]
-  ++ lib.optionals (withVisualization) [ matplotlib ]
-  ++ lib.optionals (withJit) [ numba ];
+  propagatedBuildInputs =
+    [
+      numpy
+      qiskit-terra
+      scikit-learn
+      scipy
+    ]
+    ++ lib.optionals (withCvx) [ cvxpy ]
+    ++ lib.optionals (withVisualization) [ matplotlib ]
+    ++ lib.optionals (withJit) [ numba ];
 
   # Tests
   pythonImportsCheck = [ "qiskit.ignis" ];
@@ -57,11 +60,13 @@ buildPythonPackage rec {
     pyfakefs
     qiskit-aer
   ];
-  disabledTests = [
-    "test_tensored_meas_cal_on_circuit" # Flaky test, occasionally returns result outside bounds
-  ] ++ lib.optionals stdenv.isAarch64 [
-    "test_fitters" # Fails check that arrays are close. Might be due to aarch64 math issues.
-  ];
+  disabledTests =
+    [
+      "test_tensored_meas_cal_on_circuit" # Flaky test, occasionally returns result outside bounds
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isAarch64 [
+      "test_fitters" # Fails check that arrays are close. Might be due to aarch64 math issues.
+    ];
 
   meta = with lib; {
     description = "Qiskit tools for quantum hardware verification, noise characterization, and error correction";
diff --git a/pkgs/development/python-modules/qiskit-machine-learning/default.nix b/pkgs/development/python-modules/qiskit-machine-learning/default.nix
index 1ad1b138af87b..16c3e94431a2e 100644
--- a/pkgs/development/python-modules/qiskit-machine-learning/default.nix
+++ b/pkgs/development/python-modules/qiskit-machine-learning/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, pythonOlder
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  pythonOlder,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
   # Python Inputs
-, fastdtw
-, numpy
-, psutil
-, qiskit-terra
-, scikit-learn
-, sparse
-, torch
+  fastdtw,
+  numpy,
+  psutil,
+  qiskit-terra,
+  scikit-learn,
+  sparse,
+  torch,
   # Check Inputs
-, pytestCheckHook
-, ddt
-, pytest-timeout
-, qiskit-aer
+  pytestCheckHook,
+  ddt,
+  pytest-timeout,
+  qiskit-aer,
 }:
 
 buildPythonPackage rec {
@@ -35,9 +36,7 @@ buildPythonPackage rec {
     hash = "sha256-EBjWWoNRuIZFWQkrjf9IyZZ648rP5d7MZkjeIYifgGk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     fastdtw
@@ -49,7 +48,7 @@ buildPythonPackage rec {
     sparse
   ];
 
-  doCheck = false;  # TODO: enable. Tests fail on unstable due to some multithreading issue?
+  doCheck = false; # TODO: enable. Tests fail on unstable due to some multithreading issue?
   nativeCheckInputs = [
     pytestCheckHook
     pytest-timeout
@@ -63,7 +62,7 @@ buildPythonPackage rec {
     "--durations=10"
     "--showlocals"
     "-vv"
-    "--ignore=test/connectors/test_torch_connector.py"  # TODO: fix, get multithreading errors with python3.9, segfaults
+    "--ignore=test/connectors/test_torch_connector.py" # TODO: fix, get multithreading errors with python3.9, segfaults
   ];
   disabledTests = [
     # Slow tests >10 s
diff --git a/pkgs/development/python-modules/qiskit-nature/default.nix b/pkgs/development/python-modules/qiskit-nature/default.nix
index 483f9f67cc422..61710ba4c8e37 100644
--- a/pkgs/development/python-modules/qiskit-nature/default.nix
+++ b/pkgs/development/python-modules/qiskit-nature/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, pythonOlder
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  pythonOlder,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
   # Python Inputs
-, h5py
-, numpy
-, psutil
-, qiskit-terra
-, rustworkx
-, scikit-learn
-, scipy
-, withPyscf ? false
-, pyscf
+  h5py,
+  numpy,
+  psutil,
+  qiskit-terra,
+  rustworkx,
+  scikit-learn,
+  scipy,
+  withPyscf ? false,
+  pyscf,
   # Check Inputs
-, pytestCheckHook
-, ddt
-, pylatexenc
-, qiskit-aer
+  pytestCheckHook,
+  ddt,
+  pylatexenc,
+  qiskit-aer,
 }:
 
 buildPythonPackage rec {
@@ -37,9 +38,7 @@ buildPythonPackage rec {
     hash = "sha256-SVzg3McB885RMyAp90Kr6/iVKw3Su9ucTob2jBckBo0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     h5py
@@ -60,12 +59,10 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "qiskit_nature" ];
 
-  pytestFlagsArray = [
-    "--durations=10"
-  ];
+  pytestFlagsArray = [ "--durations=10" ];
 
   disabledTests = [
-    "test_two_qubit_reduction"  # failure cause unclear
+    "test_two_qubit_reduction" # failure cause unclear
   ];
 
   meta = with lib; {
@@ -75,7 +72,7 @@ buildPythonPackage rec {
     changelog = "https://qiskit.org/documentation/release_notes.html";
     sourceProvenance = with sourceTypes; [
       fromSource
-      binaryNativeCode  # drivers/gaussiand/gauopen/*.so
+      binaryNativeCode # drivers/gaussiand/gauopen/*.so
     ];
     license = licenses.asl20;
     maintainers = with maintainers; [ drewrisinger ];
diff --git a/pkgs/development/python-modules/qiskit-optimization/default.nix b/pkgs/development/python-modules/qiskit-optimization/default.nix
index 3e1d6b3e49e08..539f7bcbe28b5 100644
--- a/pkgs/development/python-modules/qiskit-optimization/default.nix
+++ b/pkgs/development/python-modules/qiskit-optimization/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, pythonOlder
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  pythonOlder,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
   # Python Inputs
-, decorator
-, docplex
-, networkx
-, numpy
-, qiskit-terra
-, scipy
+  decorator,
+  docplex,
+  networkx,
+  numpy,
+  qiskit-terra,
+  scipy,
   # Check Inputs
-, pytestCheckHook
-, ddt
-, pylatexenc
-, qiskit-aer
+  pytestCheckHook,
+  ddt,
+  pylatexenc,
+  qiskit-aer,
 }:
 
 buildPythonPackage rec {
@@ -38,9 +39,7 @@ buildPythonPackage rec {
     substituteInPlace requirements.txt --replace "networkx>=2.2,<2.6" "networkx"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     docplex
diff --git a/pkgs/development/python-modules/qiskit-terra/default.nix b/pkgs/development/python-modules/qiskit-terra/default.nix
index 38c01d252ae13..eb433a22e8ef7 100644
--- a/pkgs/development/python-modules/qiskit-terra/default.nix
+++ b/pkgs/development/python-modules/qiskit-terra/default.nix
@@ -1,48 +1,49 @@
-{ stdenv
-, lib
-, pythonAtLeast
-, pythonOlder
-, buildPythonPackage
-, fetchFromGitHub
-, cargo
-, rustPlatform
-, rustc
-, libiconv
+{
+  stdenv,
+  lib,
+  pythonAtLeast,
+  pythonOlder,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cargo,
+  rustPlatform,
+  rustc,
+  libiconv,
   # Python requirements
-, dill
-, numpy
-, networkx
-, ply
-, psutil
-, python-constraint
-, python-dateutil
-, rustworkx
-, scipy
-, scikit-quant ? null
-, setuptools-rust
-, stevedore
-, symengine
-, sympy
-, tweedledum
-, withVisualization ? false
+  dill,
+  numpy,
+  networkx,
+  ply,
+  psutil,
+  python-constraint,
+  python-dateutil,
+  rustworkx,
+  scipy,
+  scikit-quant ? null,
+  setuptools-rust,
+  stevedore,
+  symengine,
+  sympy,
+  tweedledum,
+  withVisualization ? false,
   # Python visualization requirements, optional
-, ipywidgets
-, matplotlib
-, pillow
-, pydot
-, pygments
-, pylatexenc
-, seaborn
+  ipywidgets,
+  matplotlib,
+  pillow,
+  pydot,
+  pygments,
+  pylatexenc,
+  seaborn,
   # Crosstalk-adaptive layout pass
-, withCrosstalkPass ? false
-, z3-solver
+  withCrosstalkPass ? false,
+  z3-solver,
   # test requirements
-, ddt
-, hypothesis
-, nbformat
-, nbconvert
-, pytestCheckHook
-, python
+  ddt,
+  hypothesis,
+  nbformat,
+  nbconvert,
+  pytestCheckHook,
+  python,
 }:
 
 let
@@ -72,9 +73,14 @@ buildPythonPackage rec {
     hash = "sha256-4/LVKDNxKsRztCtU/mMfKMVHHJqfadZXmxeOlnlz9Tc=";
   };
 
-  nativeBuildInputs = [ setuptools-rust rustc cargo rustPlatform.cargoSetupHook ];
+  nativeBuildInputs = [
+    setuptools-rust
+    rustc
+    cargo
+    rustPlatform.cargoSetupHook
+  ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
@@ -82,23 +88,25 @@ buildPythonPackage rec {
     hash = "sha256-f5VLNxv9DKwfRy5zacydfz4Zrkbiee7JecOAbVelSto=";
   };
 
-  propagatedBuildInputs = [
-    dill
-    numpy
-    networkx
-    ply
-    psutil
-    python-constraint
-    python-dateutil
-    rustworkx
-    scipy
-    scikit-quant
-    stevedore
-    symengine
-    sympy
-    tweedledum
-  ] ++ lib.optionals withVisualization visualizationPackages
-  ++ lib.optionals withCrosstalkPass crosstalkPackages;
+  propagatedBuildInputs =
+    [
+      dill
+      numpy
+      networkx
+      ply
+      psutil
+      python-constraint
+      python-dateutil
+      rustworkx
+      scipy
+      scikit-quant
+      stevedore
+      symengine
+      sympy
+      tweedledum
+    ]
+    ++ lib.optionals withVisualization visualizationPackages
+    ++ lib.optionals withCrosstalkPass crosstalkPackages;
 
   # *** Tests ***
   nativeCheckInputs = [
@@ -125,68 +133,68 @@ buildPythonPackage rec {
     "test/visual/mpl/circuit/test_circuit_matplotlib_drawer.py"
   ];
   pytestFlagsArray = [ "--durations=10" ];
-  disabledTests = [
-    "TestUnitarySynthesisPlugin" # use unittest mocks for transpiler.run(), seems incompatible somehow w/ pytest infrastructure
-    # matplotlib tests seems to fail non-deterministically
-    "TestMatplotlibDrawer"
-    "TestGraphMatplotlibDrawer"
-    "test_copy" # assertNotIn doesn't seem to work as expected w/ pytest vs unittest
-
-    "test_bound_pass_manager" # AssertionError: 0 != 2
-    "test_complex_parameter_bound_to_real" # qiskit.circuit.exceptions.CircuitError: "Invalid param type <class 'complex'> for gate rx."
-    "test_expressions_of_parameter_with_constant" # Floating point arithmetic error
-    "test_handle_measurement" # AssertionError: The two circuits are not equal
-
-    # Flaky tests
-    "test_pulse_limits" # Fails on GitHub Actions, probably due to minor floating point arithmetic error.
-    "test_cx_equivalence"  # Fails due to flaky test
-    "test_two_qubit_synthesis_not_pulse_optimal" # test of random circuit, seems to randomly fail depending on seed
-    "test_qv_natural" # fails due to sign error. Not sure why
-  ] ++ lib.optionals (lib.versionAtLeast matplotlib.version "3.4.0") [
-    "test_plot_circuit_layout"
-  ]
-  # Disabling slow tests for build constraints
-  ++ [
-    "test_all_examples"
-    "test_controlled_random_unitary"
-    "test_controlled_standard_gates_1"
-    "test_jupyter_jobs_pbars"
-    "test_lookahead_swap_higher_depth_width_is_better"
-    "test_move_measurements"
-    "test_job_monitor"
-    "test_wait_for_final_state"
-    "test_multi_controlled_y_rotation_matrix_basic_mode"
-    "test_two_qubit_weyl_decomposition_abc"
-    "test_isometry"
-    "test_parallel"
-    "test_random_state"
-    "test_random_clifford_valid"
-    "test_to_matrix"
-    "test_block_collection_reduces_1q_gate"
-    "test_multi_controlled_rotation_gate_matrices"
-    "test_block_collection_runs_for_non_cx_bases"
-    "test_with_two_qubit_reduction"
-    "test_basic_aer_qasm"
-    "test_hhl"
-    "test_H2_hamiltonian"
-    "test_max_evals_grouped_2"
-    "test_qaoa_qc_mixer_4"
-    "test_abelian_grouper_random_2"
-    "test_pauli_two_design"
-    "test_shor_factoring"
-    "test_sample_counts_memory_ghz"
-    "test_two_qubit_weyl_decomposition_ab0"
-    "test_sample_counts_memory_superposition"
-    "test_piecewise_polynomial_function"
-    "test_piecewise_chebyshev_mutability"
-    "test_bit_conditional_no_cregbundle"
-    "test_gradient_wrapper2"
-    "test_two_qubit_weyl_decomposition_abmb"
-    "test_two_qubit_weyl_decomposition_abb"
-    "test_vqe_qasm"
-    "test_dag_from_networkx"
-    "test_defaults_to_dict_46"
-  ];
+  disabledTests =
+    [
+      "TestUnitarySynthesisPlugin" # use unittest mocks for transpiler.run(), seems incompatible somehow w/ pytest infrastructure
+      # matplotlib tests seems to fail non-deterministically
+      "TestMatplotlibDrawer"
+      "TestGraphMatplotlibDrawer"
+      "test_copy" # assertNotIn doesn't seem to work as expected w/ pytest vs unittest
+
+      "test_bound_pass_manager" # AssertionError: 0 != 2
+      "test_complex_parameter_bound_to_real" # qiskit.circuit.exceptions.CircuitError: "Invalid param type <class 'complex'> for gate rx."
+      "test_expressions_of_parameter_with_constant" # Floating point arithmetic error
+      "test_handle_measurement" # AssertionError: The two circuits are not equal
+
+      # Flaky tests
+      "test_pulse_limits" # Fails on GitHub Actions, probably due to minor floating point arithmetic error.
+      "test_cx_equivalence" # Fails due to flaky test
+      "test_two_qubit_synthesis_not_pulse_optimal" # test of random circuit, seems to randomly fail depending on seed
+      "test_qv_natural" # fails due to sign error. Not sure why
+    ]
+    ++ lib.optionals (lib.versionAtLeast matplotlib.version "3.4.0") [ "test_plot_circuit_layout" ]
+    # Disabling slow tests for build constraints
+    ++ [
+      "test_all_examples"
+      "test_controlled_random_unitary"
+      "test_controlled_standard_gates_1"
+      "test_jupyter_jobs_pbars"
+      "test_lookahead_swap_higher_depth_width_is_better"
+      "test_move_measurements"
+      "test_job_monitor"
+      "test_wait_for_final_state"
+      "test_multi_controlled_y_rotation_matrix_basic_mode"
+      "test_two_qubit_weyl_decomposition_abc"
+      "test_isometry"
+      "test_parallel"
+      "test_random_state"
+      "test_random_clifford_valid"
+      "test_to_matrix"
+      "test_block_collection_reduces_1q_gate"
+      "test_multi_controlled_rotation_gate_matrices"
+      "test_block_collection_runs_for_non_cx_bases"
+      "test_with_two_qubit_reduction"
+      "test_basic_aer_qasm"
+      "test_hhl"
+      "test_H2_hamiltonian"
+      "test_max_evals_grouped_2"
+      "test_qaoa_qc_mixer_4"
+      "test_abelian_grouper_random_2"
+      "test_pauli_two_design"
+      "test_shor_factoring"
+      "test_sample_counts_memory_ghz"
+      "test_two_qubit_weyl_decomposition_ab0"
+      "test_sample_counts_memory_superposition"
+      "test_piecewise_polynomial_function"
+      "test_piecewise_chebyshev_mutability"
+      "test_bit_conditional_no_cregbundle"
+      "test_gradient_wrapper2"
+      "test_two_qubit_weyl_decomposition_abmb"
+      "test_two_qubit_weyl_decomposition_abb"
+      "test_vqe_qasm"
+      "test_dag_from_networkx"
+      "test_defaults_to_dict_46"
+    ];
 
   # Moves tests to $PACKAGEDIR/test. They can't be run from /build because of finding
   # cythonized modules and expecting to find some resource files in the test directory.
@@ -205,9 +213,8 @@ buildPythonPackage rec {
     popd
   '';
 
-
   meta = with lib; {
-    description = "Provides the foundations for Qiskit.";
+    description = "Provides the foundations for Qiskit";
     longDescription = ''
       Allows the user to write quantum circuits easily, and takes care of the constraints of real hardware.
     '';
diff --git a/pkgs/development/python-modules/qiskit/default.nix b/pkgs/development/python-modules/qiskit/default.nix
index 0977a1944e938..84d68da4b937c 100644
--- a/pkgs/development/python-modules/qiskit/default.nix
+++ b/pkgs/development/python-modules/qiskit/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, pythonOlder
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  pythonOlder,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
   # Python Inputs
-, qiskit-aer
-, qiskit-ibmq-provider
-, qiskit-ignis
-, qiskit-terra
+  qiskit-aer,
+  qiskit-ibmq-provider,
+  qiskit-ignis,
+  qiskit-terra,
   # Optional inputs
-, withOptionalPackages ? true
-, qiskit-finance
-, qiskit-machine-learning
-, qiskit-nature
-, qiskit-optimization
+  withOptionalPackages ? true,
+  qiskit-finance,
+  qiskit-machine-learning,
+  qiskit-nature,
+  qiskit-optimization,
   # Check Inputs
-, pytestCheckHook
+  pytestCheckHook,
 }:
 
 let
@@ -44,9 +45,7 @@ buildPythonPackage rec {
     hash = "sha256-Cjfn+9h8W08FcAlVC7b7O8Z+VGx5UeHosSgYJin/evE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     qiskit-aer
@@ -71,6 +70,9 @@ buildPythonPackage rec {
     downloadPage = "https://github.com/QISKit/qiskit/releases";
     changelog = "https://qiskit.org/documentation/release_notes.html";
     license = licenses.asl20;
-    maintainers = with maintainers; [ drewrisinger pandaman ];
+    maintainers = with maintainers; [
+      drewrisinger
+      pandaman
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/qmk-dotty-dict/default.nix b/pkgs/development/python-modules/qmk-dotty-dict/default.nix
index 39b7fe21b88c7..16fe955ef8389 100644
--- a/pkgs/development/python-modules/qmk-dotty-dict/default.nix
+++ b/pkgs/development/python-modules/qmk-dotty-dict/default.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, poetry-core
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
@@ -9,16 +10,14 @@ buildPythonPackage rec {
   version = "1.3.1";
   pyproject = true;
 
-  src = fetchFromGitHub  {
+  src = fetchFromGitHub {
     owner = "pawelzny";
     repo = "dotty_dict";
     rev = "refs/tags/v${version}";
     hash = "sha256-kY7o9wgfsV7oc5twOeuhG47C0Js6JzCt02S9Sd8dSGc=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   doCheck = false;
 
@@ -31,6 +30,6 @@ buildPythonPackage rec {
       some non-UTF8 locale settings.
     '';
     license = licenses.mit;
-    maintainers = with maintainers; [ babariviere ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/qnap-qsw/default.nix b/pkgs/development/python-modules/qnap-qsw/default.nix
index f4e9a1cdf8b82..697b0b98fe8a0 100644
--- a/pkgs/development/python-modules/qnap-qsw/default.nix
+++ b/pkgs/development/python-modules/qnap-qsw/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     sha256 = "WP1bGt7aAtSVFOMJgPXKqVSbi5zj9K7qoIVrYCrPGqk=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "qnap_qsw"
-  ];
+  pythonImportsCheck = [ "qnap_qsw" ];
 
   meta = with lib; {
     description = "Python library to interact with the QNAP QSW API";
diff --git a/pkgs/development/python-modules/qnapstats/default.nix b/pkgs/development/python-modules/qnapstats/default.nix
index e42b0753bd3e6..88f892c42e36d 100644
--- a/pkgs/development/python-modules/qnapstats/default.nix
+++ b/pkgs/development/python-modules/qnapstats/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, xmltodict
-, responses
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  xmltodict,
+  responses,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     xmltodict
   ];
 
-  nativeCheckInputs = [
-    responses
-  ];
+  nativeCheckInputs = [ responses ];
 
   checkPhase = ''
     runHook preCheck
diff --git a/pkgs/development/python-modules/qpageview/default.nix b/pkgs/development/python-modules/qpageview/default.nix
index db5ea8ad1f7df..449ea678d83e5 100644
--- a/pkgs/development/python-modules/qpageview/default.nix
+++ b/pkgs/development/python-modules/qpageview/default.nix
@@ -1,11 +1,14 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, python3Packages
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  pyqt5,
+  poppler-qt5,
+  pycups,
 }:
 
-python3Packages.buildPythonPackage rec {
+buildPythonPackage rec {
   pname = "qpageview";
   version = "0.6.2";
   format = "setuptools";
@@ -19,12 +22,16 @@ python3Packages.buildPythonPackage rec {
     hash = "sha256-XFMTOD7ums8sbFHUViEI9q6/rCjUmEtXAdd3/OmLsHU=";
   };
 
-  propagatedBuildInputs = with python3Packages; [ pyqt5 poppler-qt5 pycups ];
+  propagatedBuildInputs = [
+    pyqt5
+    poppler-qt5
+    pycups
+  ];
 
   pythonImportsCheck = [ "qpageview" ];
 
   meta = with lib; {
-    description = "A page-based viewer widget for Qt5/PyQt5";
+    description = "Page-based viewer widget for Qt5/PyQt5";
     homepage = "https://github.com/frescobaldi/qpageview";
     changelog = "https://github.com/frescobaldi/qpageview/blob/${src.rev}/ChangeLog";
     license = licenses.gpl3Only;
diff --git a/pkgs/development/python-modules/qpsolvers/default.nix b/pkgs/development/python-modules/qpsolvers/default.nix
index 9d3bba7ecb024..468099e7b59ee 100644
--- a/pkgs/development/python-modules/qpsolvers/default.nix
+++ b/pkgs/development/python-modules/qpsolvers/default.nix
@@ -1,37 +1,36 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, buildPythonPackage
-, unittestCheckHook
-, flit-core
-, numpy
-, scipy
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  unittestCheckHook,
+  flit-core,
+  numpy,
+  scipy,
 
-# optional dependencies
-, clarabel
-, cvxopt
-, daqp
-, ecos
-, gurobipy
-, osqp
-, quadprog
-, scs
+  # optional dependencies
+  clarabel,
+  cvxopt,
+  daqp,
+  ecos,
+  gurobipy,
+  osqp,
+  quadprog,
+  scs,
+  highspy,
 }:
 buildPythonPackage rec {
   pname = "qpsolvers";
-  version = "4.3.2";
+  version = "4.3.3";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "qpsolvers";
     repo = "qpsolvers";
     rev = "refs/tags/v${version}";
-    hash = "sha256-EU7/OGLeOIHw7wyNTibMmHZLAiRTCUFwjEaVNsHg1vw=";
+    hash = "sha256-AQHd3tBfPzISQXsXHQQyh59nmym5gt8Jfogd6gRG3EM=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   pythonImportsCheck = [ "qpsolvers" ];
 
@@ -47,7 +46,7 @@ buildPythonPackage rec {
     daqp = [ daqp ];
     ecos = [ ecos ];
     gurobi = [ gurobipy ];
-    # highs = [ highspy ];
+    highs = [ highspy ];
     # mosek = [ cvxopt mosek ];
     osqp = [ osqp ];
     # piqp = [ piqp ];
@@ -55,14 +54,21 @@ buildPythonPackage rec {
     # qpalm = [ qpalm ];
     quadprog = [ quadprog ];
     scs = [ scs ];
-    open_source_solvers = with passthru.optional-dependencies; lib.flatten [
-      clarabel cvxopt daqp ecos /* highs */ osqp /* piqp proxqp qpalm */ quadprog scs
-    ];
+    open_source_solvers =
+      with passthru.optional-dependencies;
+      lib.flatten [
+        clarabel
+        cvxopt
+        daqp
+        osqp # piqp proxqp qpalm
+        ecos
+        highs
+        quadprog
+        scs
+      ];
   };
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ] ++ passthru.optional-dependencies.open_source_solvers;
+  nativeCheckInputs = [ unittestCheckHook ] ++ passthru.optional-dependencies.open_source_solvers;
 
   meta = with lib; {
     changelog = "https://github.com/qpsolvers/qpsolvers/blob/${src.rev}/CHANGELOG.md";
diff --git a/pkgs/development/python-modules/qrcode-terminal/default.nix b/pkgs/development/python-modules/qrcode-terminal/default.nix
new file mode 100644
index 0000000000000..2ec58510c7070
--- /dev/null
+++ b/pkgs/development/python-modules/qrcode-terminal/default.nix
@@ -0,0 +1,38 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  qrcode,
+  pillow,
+}:
+buildPythonPackage rec {
+  pname = "qrcode-terminal";
+  version = "0.8";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-Hitp5mK5NG6Y3ZWYMDPp1Dz/BkPYr9oSYF9RVCjmZsA=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    qrcode
+    pillow
+  ];
+
+  # have no test
+  doCheck = false;
+
+  pythonImportsCheck = [ "qrcode_terminal" ];
+
+  meta = {
+    description = "Display QRCode in Terminal";
+    homepage = "https://github.com/alishtory/qrcode-terminal";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ moraxyc ];
+    mainProgram = "qrcode-terminal-py";
+  };
+}
diff --git a/pkgs/development/python-modules/qrcode/default.nix b/pkgs/development/python-modules/qrcode/default.nix
index b5c3d2aec6b34..2c7df77b33a10 100644
--- a/pkgs/development/python-modules/qrcode/default.nix
+++ b/pkgs/development/python-modules/qrcode/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mock
-, pillow
-, pypng
-, pytestCheckHook
-, pythonAtLeast
-, qrcode
-, setuptools
-, testers
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  pillow,
+  pypng,
+  pytestCheckHook,
+  pythonAtLeast,
+  qrcode,
+  setuptools,
+  testers,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-ndlpRUgn4Sfb2TaWsgdHI55tVA4IKTfJDxSslbMPWEU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     typing-extensions
@@ -33,9 +32,7 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  passthru.optional-dependencies.pil = [
-    pillow
-  ];
+  passthru.optional-dependencies.pil = [ pillow ];
 
   nativeCheckInputs = [
     mock
@@ -49,8 +46,9 @@ buildPythonPackage rec {
     };
   };
 
-  disabledTests = lib.optionals (pythonAtLeast "3.12") [
-    "test_change"
+  disabledTests = lib.optionals (pythonAtLeast "3.12") [ "test_change" ] ++ [
+    # Attempts to open a file which doesn't exist in sandbox
+    "test_piped"
   ];
 
   meta = with lib; {
@@ -59,6 +57,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/lincolnloop/python-qrcode";
     changelog = "https://github.com/lincolnloop/python-qrcode/blob/v${version}/CHANGES.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/qreactor/default.nix b/pkgs/development/python-modules/qreactor/default.nix
index e4648919d9f7c..5caaf04047e80 100644
--- a/pkgs/development/python-modules/qreactor/default.nix
+++ b/pkgs/development/python-modules/qreactor/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, twisted
-, qtpy
-, pyqt5
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  twisted,
+  qtpy,
+  pyqt5,
 }:
 
 buildPythonPackage rec {
@@ -18,19 +18,14 @@ buildPythonPackage rec {
     sha256 = "1nb5iwg0nfz86shw28a2kj5pyhd4jvvxhf73fhnfbl8scgnvjv9h";
   };
 
-  disabled = pythonOlder "3.0";
-
   propagatedBuildInputs = [
-    twisted qtpy
+    twisted
+    qtpy
   ];
 
-  nativeCheckInputs = [
-    pyqt5
-  ];
+  nativeCheckInputs = [ pyqt5 ];
 
-  pythonImportsCheck = [
-    "qreactor"
-  ];
+  pythonImportsCheck = [ "qreactor" ];
 
   meta = with lib; {
     homepage = "https://github.com/frmdstryr/qt-reactor";
diff --git a/pkgs/development/python-modules/qscintilla-qt5/default.nix b/pkgs/development/python-modules/qscintilla-qt5/default.nix
index 46622bc3e9911..2ef0d3280f83d 100644
--- a/pkgs/development/python-modules/qscintilla-qt5/default.nix
+++ b/pkgs/development/python-modules/qscintilla-qt5/default.nix
@@ -1,15 +1,25 @@
-{ lib
-, pythonPackages
-, qscintilla
-, qtbase
-, qmake
-, qtmacextras
-, stdenv
+{
+  lib,
+  pythonPackages,
+  qscintilla,
+  qtbase,
+  qmake,
+  qtmacextras,
+  stdenv,
 }:
 
 let
-  inherit (pythonPackages) buildPythonPackage isPy3k python sip sipbuild pyqt5 pyqt-builder;
-in buildPythonPackage rec {
+  inherit (pythonPackages)
+    buildPythonPackage
+    isPy3k
+    python
+    sip
+    sipbuild
+    pyqt5
+    pyqt-builder
+    ;
+in
+buildPythonPackage rec {
   pname = "qscintilla-qt5";
   version = qscintilla.version;
   src = qscintilla.src;
@@ -17,30 +27,38 @@ in buildPythonPackage rec {
 
   disabled = !isPy3k;
 
-  nativeBuildInputs = [ sip qmake pyqt-builder qscintilla pythonPackages.setuptools ];
+  nativeBuildInputs = [
+    sip
+    qmake
+    pyqt-builder
+    qscintilla
+    pythonPackages.setuptools
+  ];
   buildInputs = [ qtbase ];
-  propagatedBuildInputs = [ pyqt5 ] ++ lib.optionals stdenv.isDarwin [ qtmacextras ];
+  propagatedBuildInputs = [ pyqt5 ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ qtmacextras ];
 
   dontWrapQtApps = true;
 
-  postPatch = ''
-    cd Python
-    cp pyproject-qt5.toml pyproject.toml
-    echo '[tool.sip.project]' >> pyproject.toml
-    echo 'sip-include-dirs = [ "${pyqt5}/${python.sitePackages}/PyQt5/bindings"]' \
-       >> pyproject.toml
-  '' + lib.optionalString stdenv.isDarwin ''
-    substituteInPlace project.py \
-      --replace \
-      "if self.project.qsci_external_lib:
-                if self.qsci_features_dir is not None:" \
-      "if self.project.qsci_external_lib:
-                self.builder_settings.append('QT += widgets')
+  postPatch =
+    ''
+      cd Python
+      cp pyproject-qt5.toml pyproject.toml
+      echo '[tool.sip.project]' >> pyproject.toml
+      echo 'sip-include-dirs = [ "${pyqt5}/${python.sitePackages}/PyQt5/bindings"]' \
+         >> pyproject.toml
+    ''
+    + lib.optionalString stdenv.hostPlatform.isDarwin ''
+      substituteInPlace project.py \
+        --replace \
+        "if self.project.qsci_external_lib:
+                  if self.qsci_features_dir is not None:" \
+        "if self.project.qsci_external_lib:
+                  self.builder_settings.append('QT += widgets')
 
-                self.builder_settings.append('QT += printsupport')
+                  self.builder_settings.append('QT += printsupport')
 
-                if self.qsci_features_dir is not None:"
-  '';
+                  if self.qsci_features_dir is not None:"
+    '';
 
   dontConfigure = true;
 
@@ -60,7 +78,7 @@ in buildPythonPackage rec {
   pythonImportsCheck = [ "PyQt5.Qsci" ];
 
   meta = with lib; {
-    description = "A Python binding to QScintilla, Qt based text editing control";
+    description = "Python binding to QScintilla, Qt based text editing control";
     license = licenses.lgpl21Plus;
     maintainers = with maintainers; [ lsix ];
     homepage = "https://www.riverbankcomputing.com/software/qscintilla/";
diff --git a/pkgs/development/python-modules/qstylizer/default.nix b/pkgs/development/python-modules/qstylizer/default.nix
index ee49d37055d4c..ab9c3032d047d 100644
--- a/pkgs/development/python-modules/qstylizer/default.nix
+++ b/pkgs/development/python-modules/qstylizer/default.nix
@@ -1,35 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, inflection
-, pbr
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, tinycss2
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  pbr,
+  setuptools,
+
+  # dependencies
+  inflection,
+  tinycss2,
+
+  # checks
+  pytestCheckHook,
+  pytest-mock,
 }:
 
 buildPythonPackage rec {
   pname = "qstylizer";
-  version = "0.2.2";
-  format = "setuptools";
+  version = "0.2.3";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "blambright";
-    repo = pname;
-    rev = version;
-    hash = "sha256-QJ4xhaAoVO4/VncXKzI8Q5f/rPfctJ8CvfedkQVgZgQ=";
+    repo = "qstylizer";
+    rev = "refs/tags/${version}";
+    hash = "sha256-eZVBUGQxa2cr0O48iKWNTqM9E5ZAsiT1WfXjdYdxIdg=";
   };
 
   PBR_VERSION = version;
 
-  nativeBuildInputs = [
+  build-system = [
     pbr
+    setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     inflection
     tinycss2
   ];
@@ -39,14 +48,12 @@ buildPythonPackage rec {
     pytest-mock
   ];
 
-  pythonImportsCheck = [
-    "qstylizer"
-  ];
+  pythonImportsCheck = [ "qstylizer" ];
 
-  meta = with lib; {
+  meta = {
     description = "Qt stylesheet generation utility for PyQt/PySide";
     homepage = "https://github.com/blambright/qstylizer";
-    license = licenses.mit;
-    maintainers = with maintainers; [ drewrisinger ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ drewrisinger ];
   };
 }
diff --git a/pkgs/development/python-modules/qt-material/default.nix b/pkgs/development/python-modules/qt-material/default.nix
index 25885676a9daf..2a6d64c55e22d 100644
--- a/pkgs/development/python-modules/qt-material/default.nix
+++ b/pkgs/development/python-modules/qt-material/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jinja2
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jinja2,
 }:
 
 buildPythonPackage rec {
@@ -14,13 +15,9 @@ buildPythonPackage rec {
     hash = "sha256-tdu1relyF8964za7fAR8kL6zncfyBIpJjJFq1fL3riM=";
   };
 
-  propagatedBuildInputs = [
-    jinja2
-  ];
+  propagatedBuildInputs = [ jinja2 ];
 
-  pythonImportsCheck = [
-    "qt_material"
-  ];
+  pythonImportsCheck = [ "qt_material" ];
 
   meta = with lib; {
     description = "Material inspired stylesheet for PySide2, PySide6, PyQt5 and PyQt6";
diff --git a/pkgs/development/python-modules/qt5reactor/default.nix b/pkgs/development/python-modules/qt5reactor/default.nix
index 07420ca1502d9..08b2d7c2c1a9a 100644
--- a/pkgs/development/python-modules/qt5reactor/default.nix
+++ b/pkgs/development/python-modules/qt5reactor/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyqt5
-, twisted
-, pytest-twisted
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyqt5,
+  twisted,
+  pytest-twisted,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/qtawesome/default.nix b/pkgs/development/python-modules/qtawesome/default.nix
index b5e668c10a685..0b7c60d3f4148 100644
--- a/pkgs/development/python-modules/qtawesome/default.nix
+++ b/pkgs/development/python-modules/qtawesome/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyqt5
-, pytestCheckHook
-, pythonOlder
-, qtpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyqt5,
+  pytestCheckHook,
+  pythonOlder,
+  qtpy,
 }:
 
 buildPythonPackage rec {
@@ -26,16 +27,12 @@ buildPythonPackage rec {
     qtpy
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Requires https://github.com/boylea/qtbot which is unmaintained
   doCheck = false;
 
-  pythonImportsCheck = [
-    "qtawesome"
-  ];
+  pythonImportsCheck = [ "qtawesome" ];
 
   meta = with lib; {
     description = "Iconic fonts in PyQt and PySide applications";
@@ -43,7 +40,7 @@ buildPythonPackage rec {
     homepage = "https://github.com/spyder-ide/qtawesome";
     changelog = "https://github.com/spyder-ide/qtawesome/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     platforms = platforms.linux; # fails on Darwin
   };
 }
diff --git a/pkgs/development/python-modules/qtconsole/default.nix b/pkgs/development/python-modules/qtconsole/default.nix
index db6f65abdda35..858785307a47b 100644
--- a/pkgs/development/python-modules/qtconsole/default.nix
+++ b/pkgs/development/python-modules/qtconsole/default.nix
@@ -1,59 +1,62 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, ipykernel
-, jupyter-core
-, jupyter-client
-, ipython-genutils
-, pygments
-, pyqt5
-, pytestCheckHook
-, pythonOlder
-, pyzmq
-, qtpy
-, traitlets
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  ipykernel,
+  jupyter-core,
+  jupyter-client,
+  pygments,
+  pyqt5,
+  qtpy,
+  traitlets,
+
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "qtconsole";
-  version = "5.5.1";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.7";
-
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-oOgGxpUduUkGKOTfgMrslmm2UUnHukD5vwM8AlpbVrw=";
+  version = "5.6.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "jupyter";
+    repo = "qtconsole";
+    rev = "refs/tags/${version}";
+    hash = "sha256-V82tGAmpvfGeUoewtJXXsBBXx2HNcV9/IMJxJg3bJL8=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     ipykernel
-    ipython-genutils
     jupyter-core
     jupyter-client
     pygments
     pyqt5
-    pyzmq
     qtpy
     traitlets
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # : cannot connect to X server
   doCheck = false;
 
-  pythonImportsCheck = [
-    "qtconsole"
-  ];
+  pythonImportsCheck = [ "qtconsole" ];
 
-  meta = with lib; {
+  meta = {
     description = "Jupyter Qt console";
     mainProgram = "jupyter-qtconsole";
     homepage = "https://qtconsole.readthedocs.io/";
-    license = licenses.bsd3;
-    platforms = platforms.unix;
+    changelog = "https://qtconsole.readthedocs.io/en/stable/changelog.html#changes-in-jupyter-qt-console";
+    license = lib.licenses.bsd3;
+    platforms = lib.platforms.unix;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/qtile-extras/default.nix b/pkgs/development/python-modules/qtile-extras/default.nix
index 84cc437e48ca4..90f4393178849 100644
--- a/pkgs/development/python-modules/qtile-extras/default.nix
+++ b/pkgs/development/python-modules/qtile-extras/default.nix
@@ -11,6 +11,7 @@
   pytest-asyncio,
   pytest-lazy-fixture,
   pytestCheckHook,
+  python-dateutil,
   qtile,
   requests,
   setuptools-scm,
@@ -19,14 +20,14 @@
 
 buildPythonPackage rec {
   pname = "qtile-extras";
-  version = "0.25.0";
+  version = "0.28.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "elParaguayo";
     repo = "qtile-extras";
     rev = "refs/tags/v${version}";
-    hash = "sha256-OYzSKOVg4D5gKxaEreclYq3D16dl8ddLipSdifokDNY=";
+    hash = "sha256-rF9tRzOdMiISN8vupBt9+1d3pWJqbNS83odtm5SzXZI=";
   };
 
   build-system = [ setuptools-scm ];
@@ -41,6 +42,7 @@ buildPythonPackage rec {
     pytest-asyncio
     pytest-lazy-fixture
     pytestCheckHook
+    python-dateutil
     qtile
     requests
     xorgserver
@@ -62,6 +64,8 @@ buildPythonPackage rec {
     # AttributeError: 'NoneType' object has no attribute 'theta'
     "test_image_size_horizontal"
     "test_image_size_vertical"
+    # flaky, timing sensitive
+    "test_visualiser"
   ];
 
   disabledTestPaths = [
diff --git a/pkgs/development/python-modules/qtile/default.nix b/pkgs/development/python-modules/qtile/default.nix
index 6dc9cc0119436..6baaa6c47da2d 100644
--- a/pkgs/development/python-modules/qtile/default.nix
+++ b/pkgs/development/python-modules/qtile/default.nix
@@ -1,46 +1,48 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cairocffi
-, dbus-next
-, dbus-python
-, glib
-, iwlib
-, libdrm
-, libinput
-, libxkbcommon
-, mpd2
-, pango
-, pixman
-, pkg-config
-, psutil
-, pulsectl-asyncio
-, pygobject3
-, python-dateutil
-, pywayland
-, pywlroots
-, pyxdg
-, setuptools
-, setuptools-scm
-, wayland
-, wlroots
-, xcbutilcursor
-, xcbutilwm
-, xcffib
-, xkbcommon
-, nixosTests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cairocffi,
+  dbus-next,
+  glib,
+  iwlib,
+  libcst,
+  libdrm,
+  libinput,
+  libxkbcommon,
+  mpd2,
+  pango,
+  pixman,
+  pkg-config,
+  psutil,
+  pulsectl-asyncio,
+  pygobject3,
+  pytz,
+  pywayland,
+  pywlroots,
+  pyxdg,
+  setuptools,
+  setuptools-scm,
+  wayland,
+  wlroots,
+  xcbutilcursor,
+  xcbutilwm,
+  xcffib,
+  xkbcommon,
+  nixosTests,
+  extraPackages ? [ ],
 }:
 
 buildPythonPackage rec {
   pname = "qtile";
-  version = "0.25.0";
-  format = "setuptools";
+  version = "0.28.1";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "qtile";
     repo = "qtile";
     rev = "refs/tags/v${version}";
-    hash = "sha256-j5hpXfUSDUT9nBr6CafIzqdTYQxSWok+ZlQA7bGdVvk=";
+    hash = "sha256-r8cAht40r1/6rG1xrfx34YEPuPeyBCuSvX7MarLTTCc=";
   };
 
   patches = [
@@ -49,32 +51,32 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace libqtile/pangocffi.py \
-      --replace libgobject-2.0.so.0 ${glib.out}/lib/libgobject-2.0.so.0 \
-      --replace libpangocairo-1.0.so.0 ${pango.out}/lib/libpangocairo-1.0.so.0 \
-      --replace libpango-1.0.so.0 ${pango.out}/lib/libpango-1.0.so.0
+      --replace-fail libgobject-2.0.so.0 ${glib.out}/lib/libgobject-2.0.so.0 \
+      --replace-fail libpangocairo-1.0.so.0 ${pango.out}/lib/libpangocairo-1.0.so.0 \
+      --replace-fail libpango-1.0.so.0 ${pango.out}/lib/libpango-1.0.so.0
     substituteInPlace libqtile/backend/x11/xcursors.py \
-      --replace libxcb-cursor.so.0 ${xcbutilcursor.out}/lib/libxcb-cursor.so.0
+      --replace-fail libxcb-cursor.so.0 ${xcbutilcursor.out}/lib/libxcb-cursor.so.0
     substituteInPlace libqtile/backend/wayland/cffi/build.py \
-        --replace /usr/include/pixman-1 ${lib.getDev pixman}/include \
-        --replace /usr/include/libdrm ${lib.getDev libdrm}/include/libdrm
+        --replace-fail /usr/include/pixman-1 ${lib.getDev pixman}/include \
+        --replace-fail /usr/include/libdrm ${lib.getDev libdrm}/include/libdrm
   '';
 
-  nativeBuildInputs = [
-    pkg-config
+  build-system = [
     setuptools
     setuptools-scm
+    pkg-config
   ];
 
-  propagatedBuildInputs = [
+  dependencies = extraPackages ++ [
     (cairocffi.override { withXcffib = true; })
     dbus-next
-    dbus-python
     iwlib
+    libcst
     mpd2
     psutil
     pulsectl-asyncio
     pygobject3
-    python-dateutil
+    pytz
     pywayland
     pywlroots
     pyxdg
@@ -96,12 +98,20 @@ buildPythonPackage rec {
     providedSessions = [ "qtile" ];
   };
 
+  postInstall = ''
+    install resources/qtile.desktop -Dt $out/share/xsessions
+    install resources/qtile-wayland.desktop -Dt $out/share/wayland-sessions
+  '';
+
   meta = with lib; {
     homepage = "http://www.qtile.org/";
     license = licenses.mit;
-    description = "A small, flexible, scriptable tiling window manager written in Python";
+    description = "Small, flexible, scriptable tiling window manager written in Python";
     mainProgram = "qtile";
     platforms = platforms.linux;
-    maintainers = with maintainers; [ arjan-s ];
+    maintainers = with maintainers; [
+      arjan-s
+      sigmanificient
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/qtile/wrapper.nix b/pkgs/development/python-modules/qtile/wrapper.nix
deleted file mode 100644
index b4f6e4c2e23b2..0000000000000
--- a/pkgs/development/python-modules/qtile/wrapper.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ python3 }:
-
-(python3.withPackages (_: [ python3.pkgs.qtile ])).overrideAttrs (_: {
-  # restore some qtile attrs, beautify name
-  inherit (python3.pkgs.qtile) pname version meta;
-  name = with python3.pkgs.qtile; "${pname}-${version}";
-  passthru.unwrapped = python3.pkgs.qtile;
-})
diff --git a/pkgs/development/python-modules/qtpy/default.nix b/pkgs/development/python-modules/qtpy/default.nix
index 5aef7c38edff1..cdac0a59c71d1 100644
--- a/pkgs/development/python-modules/qtpy/default.nix
+++ b/pkgs/development/python-modules/qtpy/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-
-# propagates
-, packaging
-
-# tests
-, pyqt5
-, pyside2
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+
+  # propagates
+  packaging,
+
+  # tests
+  pyqt5,
+  pyside2,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-paFf/VGVUKE2G9xW/8B/2lamr3KS8Xx7OV1Ag69jKYc=";
   };
 
-  propagatedBuildInputs = [
-    packaging
-  ];
+  propagatedBuildInputs = [ packaging ];
 
   doCheck = false; # ModuleNotFoundError: No module named 'PyQt5.QtConnectivity'
   nativeCheckInputs = [
diff --git a/pkgs/development/python-modules/quadprog/default.nix b/pkgs/development/python-modules/quadprog/default.nix
index c566887bb3634..d592c443e1d56 100644
--- a/pkgs/development/python-modules/quadprog/default.nix
+++ b/pkgs/development/python-modules/quadprog/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, cython
-, setuptools
-, numpy
-, pytestCheckHook
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  cython,
+  setuptools,
+  numpy,
+  pytestCheckHook,
+  scipy,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/qualysclient/default.nix b/pkgs/development/python-modules/qualysclient/default.nix
index be16a8c48cc56..e8ada185d51a4 100644
--- a/pkgs/development/python-modules/qualysclient/default.nix
+++ b/pkgs/development/python-modules/qualysclient/default.nix
@@ -1,22 +1,24 @@
-{ lib
-, buildPythonPackage
-, certifi
-, charset-normalizer
-, fetchFromGitHub
-, idna
-, lxml
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, requests
-, responses
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  setuptools,
+  certifi,
+  charset-normalizer,
+  fetchFromGitHub,
+  idna,
+  lxml,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  responses,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "qualysclient";
   version = "0.0.4.8.3";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
@@ -29,10 +31,12 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "version=__version__," 'version="${version}",'
+      --replace-fail "version=__version__," 'version="${version}",'
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     certifi
     charset-normalizer
     idna
@@ -47,9 +51,7 @@ buildPythonPackage rec {
     responses
   ];
 
-  pythonImportsCheck = [
-    "qualysclient"
-  ];
+  pythonImportsCheck = [ "qualysclient" ];
 
   meta = with lib; {
     description = "Python SDK for interacting with the Qualys API";
diff --git a/pkgs/development/python-modules/quamash/default.nix b/pkgs/development/python-modules/quamash/default.nix
index 7257f480696d0..b920d7421f8e3 100644
--- a/pkgs/development/python-modules/quamash/default.nix
+++ b/pkgs/development/python-modules/quamash/default.nix
@@ -1,6 +1,12 @@
-{ lib, buildPythonPackage, fetchFromGitHub
-, pytest, isPy3k, pyqt5, pyqt ? pyqt5
-, fetchpatch
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
+  isPy3k,
+  pyqt5,
+  pyqt ? pyqt5,
+  fetchpatch,
 }:
 
 buildPythonPackage rec {
@@ -30,7 +36,7 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ pytest ];
   checkPhase = ''
-     pytest -k 'test_qthreadexec.py' # the others cause the test execution to be aborted, I think because of asyncio
+    pytest -k 'test_qthreadexec.py' # the others cause the test execution to be aborted, I think because of asyncio
   '';
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/quandl/default.nix b/pkgs/development/python-modules/quandl/default.nix
index 85a8fdd12bccd..ea7a305eb3770 100644
--- a/pkgs/development/python-modules/quandl/default.nix
+++ b/pkgs/development/python-modules/quandl/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, factory-boy
-, faker
-, fetchPypi
-, httpretty
-, importlib-metadata
-, inflection
-, jsondate
-, mock
-, more-itertools
-, numpy
-, pandas
-, parameterized
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, requests
-, six
+{
+  lib,
+  buildPythonPackage,
+  factory-boy,
+  faker,
+  fetchPypi,
+  httpretty,
+  importlib-metadata,
+  inflection,
+  jsondate,
+  mock,
+  more-itertools,
+  numpy,
+  pandas,
+  parameterized,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  requests,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     hash = "sha256-bguC+8eGFhCzV3xTlyd8QiDgZe7g/tTkbNa2AhZVtkw=";
   };
 
-  patches = [
-    ./pandas2-datetime-removal.patch
-  ];
+  patches = [ ./pandas2-datetime-removal.patch ];
 
   propagatedBuildInputs = [
     pandas
@@ -44,9 +43,7 @@ buildPythonPackage rec {
     python-dateutil
     six
     more-itertools
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   nativeCheckInputs = [
     factory-boy
@@ -58,9 +55,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "quandl"
-  ];
+  pythonImportsCheck = [ "quandl" ];
 
   meta = with lib; {
     description = "Quandl Python client library";
diff --git a/pkgs/development/python-modules/quantile-forest/default.nix b/pkgs/development/python-modules/quantile-forest/default.nix
index 3b6bd12cd4c83..78c90591e5958 100644
--- a/pkgs/development/python-modules/quantile-forest/default.nix
+++ b/pkgs/development/python-modules/quantile-forest/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "quantile-forest";
-  version = "1.3.4";
+  version = "1.3.11";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "zillow";
     repo = "quantile-forest";
     rev = "refs/tags/v${version}";
-    hash = "sha256-hzLJq0y+qjc48PfHW3i73x9safGOy0V1HEQ5WR8IXpI=";
+    hash = "sha256-0gdXjr+mRInZtvmgH1vRjLCkXZmTn1zWmD3E1ass9hQ=";
   };
 
   build-system = [
diff --git a/pkgs/development/python-modules/quantile-python/default.nix b/pkgs/development/python-modules/quantile-python/default.nix
index 98206ff8aaba2..5d15c92520563 100644
--- a/pkgs/development/python-modules/quantile-python/default.nix
+++ b/pkgs/development/python-modules/quantile-python/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/quantiphy-eval/default.nix b/pkgs/development/python-modules/quantiphy-eval/default.nix
index 92e1f94c1adcf..a95cf4903b5dd 100644
--- a/pkgs/development/python-modules/quantiphy-eval/default.nix
+++ b/pkgs/development/python-modules/quantiphy-eval/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, inform
-, pythonOlder
-, sly
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  inform,
+  pythonOlder,
+  sly,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-7VHcuINhe17lRNkHUnZkVOEtD6mVWk5gu0NbrLZwprg=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     inform
diff --git a/pkgs/development/python-modules/quantiphy/default.nix b/pkgs/development/python-modules/quantiphy/default.nix
index 56790351dcd66..66026ad8eafbe 100644
--- a/pkgs/development/python-modules/quantiphy/default.nix
+++ b/pkgs/development/python-modules/quantiphy/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pytestCheckHook
-, pythonOlder
-, inform
-, parametrize-from-file
-, setuptools
-, voluptuous
-, quantiphy-eval
-, rkm-codes
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pytestCheckHook,
+  pythonOlder,
+  inform,
+  parametrize-from-file,
+  setuptools,
+  voluptuous,
+  quantiphy-eval,
+  rkm-codes,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-QXCs93plNSVNiCLEoXx2raH6EbH1rXyjvpBfl+8eXjc=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     quantiphy-eval
@@ -43,9 +42,7 @@ buildPythonPackage rec {
     voluptuous
   ];
 
-  pythonImportsCheck = [
-    "quantiphy"
-  ];
+  pythonImportsCheck = [ "quantiphy" ];
 
   meta = with lib; {
     description = "Module for physical quantities (numbers with units)";
diff --git a/pkgs/development/python-modules/quantities/default.nix b/pkgs/development/python-modules/quantities/default.nix
index 0461c5bc83c85..991274fd267ad 100644
--- a/pkgs/development/python-modules/quantities/default.nix
+++ b/pkgs/development/python-modules/quantities/default.nix
@@ -1,52 +1,58 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "quantities";
   version = "0.15.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-nqMeKg11F88k1UaxQUbe+SkmOZk6YWzKYbh173lrSys=";
+  src = fetchFromGitHub {
+    owner = "python-quantities";
+    repo = "python-quantities";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-N20xfzGtM0VnfkJtzMytNLySTkgVz2xf1nEJxlwBSCI=";
   };
 
-  nativeBuildInputs = [
+  patches = [
+    (fetchpatch2 {
+      name = "prevent-arbitrary-code-eval.patch";
+      url = "https://github.com/python-quantities/python-quantities/pull/236.patch";
+      hash = "sha256-H1tOfXqNMIKY01m6o2PsfZG0CvnWNxW2qIWA5ce1lRk=";
+    })
+  ];
+
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  dependencies = [ numpy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # test fails with numpy 1.24
     "test_mul"
   ];
 
-  pythonImportsCheck = [
-    "quantities"
-  ];
+  pythonImportsCheck = [ "quantities" ];
 
   meta = with lib; {
     description = "Quantities is designed to handle arithmetic and conversions of physical quantities";
     homepage = "https://python-quantities.readthedocs.io/";
     changelog = "https://github.com/python-quantities/python-quantities/blob/v${version}/CHANGES.txt";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/quantulum3/default.nix b/pkgs/development/python-modules/quantulum3/default.nix
index ae35505d86480..685145d941eaa 100644
--- a/pkgs/development/python-modules/quantulum3/default.nix
+++ b/pkgs/development/python-modules/quantulum3/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, pythonAtLeast
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
   # build inputs
-, inflect
-, num2words
-, numpy
-, scipy
-, scikit-learn
-, joblib
-, wikipedia
-, stemming
-, setuptools
+  inflect,
+  num2words,
+  numpy,
+  scipy,
+  scikit-learn,
+  joblib,
+  wikipedia,
+  stemming,
+  setuptools,
 }:
 let
   pname = "quantulum3";
diff --git a/pkgs/development/python-modules/quantum-gateway/default.nix b/pkgs/development/python-modules/quantum-gateway/default.nix
index 43c9c8dcb2d36..e39b66b42ae64 100644
--- a/pkgs/development/python-modules/quantum-gateway/default.nix
+++ b/pkgs/development/python-modules/quantum-gateway/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, buildPythonPackage
-, esprima
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
-, setuptools-scm
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  esprima,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
+  urllib3,
 }:
 
 buildPythonPackage rec {
@@ -35,9 +35,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "quantum_gateway"
-  ];
+  pythonImportsCheck = [ "quantum_gateway" ];
 
   disabledTests = [
     # Tests require network features
diff --git a/pkgs/development/python-modules/quart-cors/default.nix b/pkgs/development/python-modules/quart-cors/default.nix
index 78f3f0311f880..9299487aa7323 100644
--- a/pkgs/development/python-modules/quart-cors/default.nix
+++ b/pkgs/development/python-modules/quart-cors/default.nix
@@ -1,24 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# build-system
-, poetry-core
-
-# propagates
-, quart
-, typing-extensions
-
-# tests
-, pytestCheckHook
-, pytest-asyncio
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  poetry-core,
+
+  # propagates
+  quart,
+  typing-extensions,
+
+  # tests
+  pytestCheckHook,
+  pytest-asyncio,
+  pytest-cov-stub,
 }:
 
 buildPythonPackage rec {
   pname = "quart-cors";
   version = "0.7.0";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pgjones";
@@ -27,28 +29,16 @@ buildPythonPackage rec {
     hash = "sha256-qUzs0CTZHf3fGADBXPkd3CjZ6dnz1t3cTxflMErvz/k=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace "--no-cov-on-fail " ""
-  '';
+  dependencies = [ quart ] ++ lib.optionals (pythonOlder "3.10") [ typing-extensions ];
 
-  propagatedBuildInputs = [
-    quart
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    typing-extensions
-  ];
-
-  pythonImportsCheck = [
-    "quart_cors"
-  ];
+  pythonImportsCheck = [ "quart_cors" ];
 
   nativeCheckInputs = [
     pytestCheckHook
     pytest-asyncio
+    pytest-cov-stub
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/quart/default.nix b/pkgs/development/python-modules/quart/default.nix
index 515e4c9a324dc..0388b58a34c99 100644
--- a/pkgs/development/python-modules/quart/default.nix
+++ b/pkgs/development/python-modules/quart/default.nix
@@ -1,75 +1,74 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build-system
-, poetry-core
+  # build-system
+  poetry-core,
 
-# propagates
-, aiofiles
-, blinker
-, click
-, flask
-, hypercorn
-, importlib-metadata
-, itsdangerous
-, jinja2
-, markupsafe
-, pydata-sphinx-theme
-, python-dotenv
-, typing-extensions
-, werkzeug
+  # propagates
+  aiofiles,
+  blinker,
+  click,
+  flask,
+  hypercorn,
+  importlib-metadata,
+  itsdangerous,
+  jinja2,
+  markupsafe,
+  pydata-sphinx-theme,
+  python-dotenv,
+  typing-extensions,
+  werkzeug,
 
-# tests
-, hypothesis
-, mock
-, py
-, pytest-asyncio
-, pytest7CheckHook
+  # tests
+  hypothesis,
+  mock,
+  py,
+  pytest-asyncio,
+  pytest7CheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "quart";
-  version = "0.19.5";
+  version = "0.19.6";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pallets";
     repo = "quart";
     rev = "refs/tags/${version}";
-    hash = "sha256-T2+76AVvXrads7AbjNAExV0i4doQ2xIUEwekVB2JXAo=";
+    hash = "sha256-oR03Qu93F+pcWywbdYgMKIAdohBNezlGz04ws3yGAxs=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace "--no-cov-on-fail " ""
   '';
 
-  dependencies = [
-    aiofiles
-    blinker
-    click
-    flask
-    hypercorn
-    itsdangerous
-    jinja2
-    markupsafe
-    pydata-sphinx-theme
-    python-dotenv
-    werkzeug
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-    typing-extensions
-  ];
+  dependencies =
+    [
+      aiofiles
+      blinker
+      click
+      flask
+      hypercorn
+      itsdangerous
+      jinja2
+      markupsafe
+      pydata-sphinx-theme
+      python-dotenv
+      werkzeug
+    ]
+    ++ lib.optionals (pythonOlder "3.10") [
+      importlib-metadata
+      typing-extensions
+    ];
 
-  pythonImportsCheck = [
-    "quart"
-  ];
+  pythonImportsCheck = [ "quart" ];
 
   nativeCheckInputs = [
     hypothesis
@@ -80,7 +79,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "An async Python micro framework for building web applications";
+    description = "Async Python micro framework for building web applications";
     mainProgram = "quart";
     homepage = "https://github.com/pallets/quart/";
     changelog = "https://github.com/pallets/quart/blob/${src.rev}/CHANGES.rst";
diff --git a/pkgs/development/python-modules/quaternion/default.nix b/pkgs/development/python-modules/quaternion/default.nix
index 6307334edfdf8..0a109427b8edd 100644
--- a/pkgs/development/python-modules/quaternion/default.nix
+++ b/pkgs/development/python-modules/quaternion/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, oldest-supported-numpy
-, scipy
-, numba
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  oldest-supported-numpy,
+  scipy,
+  numba,
 }:
 
 buildPythonPackage rec {
   pname = "quaternion";
-  version = "2023.0.3";
+  version = "2023.0.4";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "moble";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-vSkFHYXcT14aW3OTfqYymVQbpWnKFEVkhh3IQTi5xS4=";
+    hash = "sha256-i+UPi+DrhItplfc6EvDhmr3CEH2/cHODoHVBElM7jY8=";
   };
 
   propagatedBuildInputs = [
@@ -25,7 +26,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A package add built-in support for quaternions to numpy";
+    description = "Package add built-in support for quaternions to numpy";
     homepage = "https://github.com/moble/quaternion";
     license = licenses.mit;
     maintainers = [ maintainers.ocfox ];
diff --git a/pkgs/development/python-modules/qudida/default.nix b/pkgs/development/python-modules/qudida/default.nix
index 48d83c4d14ee7..7e0bac314b258 100644
--- a/pkgs/development/python-modules/qudida/default.nix
+++ b/pkgs/development/python-modules/qudida/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, opencv4
-, pythonOlder
-, pythonRelaxDepsHook
-, scikit-learn
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  opencv4,
+  pythonOlder,
+  scikit-learn,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -21,13 +21,8 @@ buildPythonPackage rec {
     hash = "sha256-2xmOKIerDJqgAj5WWvv/Qd+3azYfhf1eE/eA11uhjMg=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
-  pythonRemoveDeps = [
-    "opencv-python"
-  ];
+  pythonRemoveDeps = [ "opencv-python" ];
 
   propagatedBuildInputs = [
     numpy
diff --git a/pkgs/development/python-modules/querystring-parser/default.nix b/pkgs/development/python-modules/querystring-parser/default.nix
index 0e104dd1fdded..61763323bc238 100644
--- a/pkgs/development/python-modules/querystring-parser/default.nix
+++ b/pkgs/development/python-modules/querystring-parser/default.nix
@@ -2,7 +2,6 @@
   lib,
   buildPythonPackage,
   fetchPypi,
-  python,
   pythonOlder,
   setuptools,
   six,
diff --git a/pkgs/development/python-modules/questionary/default.nix b/pkgs/development/python-modules/questionary/default.nix
index 98a50c6079ca0..9663e8e1fdd13 100644
--- a/pkgs/development/python-modules/questionary/default.nix
+++ b/pkgs/development/python-modules/questionary/default.nix
@@ -1,12 +1,12 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, prompt-toolkit
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  prompt-toolkit,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,22 +25,15 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "prompt_toolkit"
-  ];
+  pythonRelaxDeps = [ "prompt_toolkit" ];
 
-  propagatedBuildInputs = [
-    prompt-toolkit
-  ];
+  propagatedBuildInputs = [ prompt-toolkit ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  preCheck = lib.optionalString stdenv.isDarwin ''
+  preCheck = lib.optionalString stdenv.hostPlatform.isDarwin ''
     ulimit -n 1024
   '';
 
@@ -49,9 +42,7 @@ buildPythonPackage rec {
     "test_blank_line_fix"
   ];
 
-  pythonImportsCheck = [
-    "questionary"
-  ];
+  pythonImportsCheck = [ "questionary" ];
 
   meta = with lib; {
     description = "Python library to build command line user prompts";
diff --git a/pkgs/development/python-modules/queuelib/default.nix b/pkgs/development/python-modules/queuelib/default.nix
index e9643b813d77b..53105b8ef7495 100644
--- a/pkgs/development/python-modules/queuelib/default.nix
+++ b/pkgs/development/python-modules/queuelib/default.nix
@@ -1,26 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
 }:
 
 buildPythonPackage rec {
   pname = "queuelib";
-  version = "1.6.2";
+  version = "1.7.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4b207267f2642a8699a1f806045c56eb7ad1a85a10c0e249884580d139c2fcd2";
+    hash = "sha256-KFUWIJbPAjBRCJCzVDeeocD/GdEF0xR9NJ0kM7siKwg=";
   };
 
   buildInputs = [ pytest ];
 
   meta = with lib; {
-    description = "A collection of persistent (disk-based) queues for Python";
+    description = "Collection of persistent (disk-based) queues for Python";
     homepage = "https://github.com/scrapy/queuelib";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/quil/default.nix b/pkgs/development/python-modules/quil/default.nix
index 41f79d79bdf3d..98175f1cbbdad 100644
--- a/pkgs/development/python-modules/quil/default.nix
+++ b/pkgs/development/python-modules/quil/default.nix
@@ -1,5 +1,6 @@
 {
   lib,
+  stdenv,
   buildPythonPackage,
   pythonOlder,
   fetchFromGitHub,
@@ -7,11 +8,12 @@
   numpy,
   pytestCheckHook,
   syrupy,
+  libiconv,
 }:
 
 buildPythonPackage rec {
   pname = "quil";
-  version = "0.7.1";
+  version = "0.12.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,29 +22,32 @@ buildPythonPackage rec {
     owner = "rigetti";
     repo = "quil-rs";
     rev = "quil-py/v${version}";
-    hash = "sha256-GFePbCJnVbzL4cpQ7fy1tk2l7NhAyTVW63lVYTv0/Oo=";
+    hash = "sha256-OCQp8WKOxyZNMu2waeasSZ4E8VhFqDZcgGbDoMpKeHg=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     name = "${pname}-${version}";
     inherit src;
-    hash = "sha256-catUGCFbkvov1z52f6eyxogflu61VcjIItgEVEWzkpY=";
+    hash = "sha256-EmSDjheLEyFr0w6XOvJYdRmGGlv2L/wh3qAN8Nn5lyg=";
   };
 
   buildAndTestSubdir = "quil-py";
 
-  preConfigure = ''
-    cargo metadata --offline
-  '';
-
   build-system = [
     rustPlatform.cargoSetupHook
     rustPlatform.maturinBuildHook
   ];
 
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
+
   dependencies = [ numpy ];
 
-  pythonImportsCheck = [ "numpy" ];
+  pythonImportsCheck = [
+    "quil.expression"
+    "quil.instructions"
+    "quil.program"
+    "quil.validation"
+  ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/quixote/default.nix b/pkgs/development/python-modules/quixote/default.nix
index 557a59390fb93..cfbabdb57e449 100644
--- a/pkgs/development/python-modules/quixote/default.nix
+++ b/pkgs/development/python-modules/quixote/default.nix
@@ -32,7 +32,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A small and flexible Python Web application framework";
+    description = "Small and flexible Python Web application framework";
     homepage = "https://pypi.org/project/Quixote/";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/development/python-modules/qutip/default.nix b/pkgs/development/python-modules/qutip/default.nix
index d30759869cc8e..8cc5ccba6c306 100644
--- a/pkgs/development/python-modules/qutip/default.nix
+++ b/pkgs/development/python-modules/qutip/default.nix
@@ -1,25 +1,27 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, cvxopt
-, cvxpy
-, cython_0
-, fetchFromGitHub
-, ipython
-, matplotlib
-, numpy
-, packaging
-, pytest-rerunfailures
-, pytestCheckHook
-, python
-, pythonOlder
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  cvxopt,
+  cvxpy,
+  cython_0,
+  fetchFromGitHub,
+  ipython,
+  matplotlib,
+  numpy,
+  oldest-supported-numpy,
+  packaging,
+  pytest-rerunfailures,
+  pytestCheckHook,
+  python,
+  pythonOlder,
+  scipy,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "qutip";
-  version = "4.7.5";
-  format = "setuptools";
+  version = "5.0.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -27,11 +29,13 @@ buildPythonPackage rec {
     owner = pname;
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-4nXZPZFu9L+Okha3qvPil1KvLGO1EbrzotQjqQ8r9l8=";
+    hash = "sha256-lMPzgmUaoEQB5TzmqEJFiFTuS3AGpyMMjPHlPUKTLvk=";
   };
 
   nativeBuildInputs = [
     cython_0
+    setuptools
+    oldest-supported-numpy
   ];
 
   propagatedBuildInputs = [
@@ -45,11 +49,6 @@ buildPythonPackage rec {
     pytest-rerunfailures
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  # Disabling OpenMP support on Darwin.
-  setupPyGlobalFlags = lib.optionals (!stdenv.isDarwin) [
-    "--with-openmp"
-  ];
-
   # QuTiP tries to access the home directory to create an rc file for us.
   # We need to go to another directory to run the tests from there.
   # This is due to the Cython-compiled modules not being in the correct location
@@ -67,17 +66,11 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "qutip"
-  ];
+  pythonImportsCheck = [ "qutip" ];
 
   passthru.optional-dependencies = {
-    graphics = [
-      matplotlib
-    ];
-    ipython = [
-      ipython
-    ];
+    graphics = [ matplotlib ];
+    ipython = [ ipython ];
     semidefinite = [
       cvxpy
       cvxopt
diff --git a/pkgs/development/python-modules/r2pipe/default.nix b/pkgs/development/python-modules/r2pipe/default.nix
index ab043450e40e1..a1de5b4107c39 100644
--- a/pkgs/development/python-modules/r2pipe/default.nix
+++ b/pkgs/development/python-modules/r2pipe/default.nix
@@ -1,37 +1,39 @@
-{ stdenv
-, lib
-, python
-, buildPythonPackage
-, fetchPypi
-, radare2
-, coreutils
-, pythonOlder
+{
+  stdenv,
+  lib,
+  python,
+  buildPythonPackage,
+  fetchPypi,
+  radare2,
+  coreutils,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "r2pipe";
-  version = "1.8.8";
+  version = "1.9.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
-  postPatch = let
-    r2lib = "${lib.getOutput "lib" radare2}/lib";
-    libr_core = "${r2lib}/libr_core${stdenv.hostPlatform.extensions.sharedLibrary}";
-  in
-  ''
-    # Fix find_library, can be removed after
-    # https://github.com/NixOS/nixpkgs/issues/7307 is resolved.
-    substituteInPlace r2pipe/native.py --replace 'find_library("r_core")' "'${libr_core}'"
+  postPatch =
+    let
+      r2lib = "${lib.getOutput "lib" radare2}/lib";
+      libr_core = "${r2lib}/libr_core${stdenv.hostPlatform.extensions.sharedLibrary}";
+    in
+    ''
+      # Fix find_library, can be removed after
+      # https://github.com/NixOS/nixpkgs/issues/7307 is resolved.
+      substituteInPlace r2pipe/native.py --replace 'find_library("r_core")' "'${libr_core}'"
 
-    # Fix the default r2 executable
-    substituteInPlace r2pipe/open_sync.py --replace 'r2e = "radare2"' "r2e = '${radare2}/bin/radare2'"
-    substituteInPlace r2pipe/open_base.py --replace 'which("radare2")' "'${radare2}/bin/radare2'"
-  '';
+      # Fix the default r2 executable
+      substituteInPlace r2pipe/open_sync.py --replace 'r2e = "radare2"' "r2e = '${radare2}/bin/radare2'"
+      substituteInPlace r2pipe/open_base.py --replace 'which("radare2")' "'${radare2}/bin/radare2'"
+    '';
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-wAOmO5bev1zgPcJoiqKlS4anUKayo8HsncQXM+b1clQ=";
+    hash = "sha256-Ah3kb+Hk1pMlQ8D1SMPAISbL2n6TDG0Ih9ezmW7oIRk=";
   };
 
   # Tiny sanity check to make sure r2pipe finds radare2 (since r2pipe doesn't
diff --git a/pkgs/development/python-modules/rachiopy/default.nix b/pkgs/development/python-modules/rachiopy/default.nix
index 1eb1b547e418f..5aa28e5173709 100644
--- a/pkgs/development/python-modules/rachiopy/default.nix
+++ b/pkgs/development/python-modules/rachiopy/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, jsonschema
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jsonschema,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-PsdEXNy8vUxba/C00ARhLTQU9gMlChy9XdU20r+Maus=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     jsonschema
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "rachiopy"
-  ];
+  pythonImportsCheck = [ "rachiopy" ];
 
   meta = with lib; {
     description = "Python client for Rachio Irrigation controller";
diff --git a/pkgs/development/python-modules/radian/default.nix b/pkgs/development/python-modules/radian/default.nix
index 09d0c38c41575..e42e16f307c2e 100644
--- a/pkgs/development/python-modules/radian/default.nix
+++ b/pkgs/development/python-modules/radian/default.nix
@@ -1,33 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pyte
-, pexpect
-, ptyprocess
-, jedi
-, git
-, lineedit
-, prompt-toolkit
-, pygments
-, rchitect
-, R
-, rPackages
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pyte,
+  pexpect,
+  ptyprocess,
+  pythonOlder,
+  jedi,
+  git,
+  lineedit,
+  prompt-toolkit,
+  pygments,
+  rchitect,
+  R,
+  rPackages,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "radian";
-  version = "0.6.12";
-  format = "setuptools";
+  version = "0.6.13";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "randy3k";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-cojKbDNqcUay5RxvWszQ96eC4jVI4G7iRv/ZYWgidCQ=";
+    hash = "sha256-gz2VczAgVbvISzvY/v0GvZ/Erv6ipZwPU61r6OJ+3Fo=";
   };
 
   postPatch = ''
@@ -35,19 +38,26 @@ buildPythonPackage rec {
       --replace '"pytest-runner"' ""
   '';
 
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
   nativeBuildInputs = [
     R # needed at setup time to detect R_HOME
   ];
 
-  propagatedBuildInputs = [
-    lineedit
-    prompt-toolkit
-    pygments
-    rchitect
-  ] ++ (with rPackages; [
-    reticulate
-    askpass
-  ]);
+  propagatedBuildInputs =
+    [
+      lineedit
+      prompt-toolkit
+      pygments
+      rchitect
+    ]
+    ++ (with rPackages; [
+      reticulate
+      askpass
+    ]);
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -68,7 +78,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "radian" ];
 
   meta = with lib; {
-    description = "A 21 century R console";
+    description = "21 century R console";
     mainProgram = "radian";
     homepage = "https://github.com/randy3k/radian";
     changelog = "https://github.com/randy3k/radian/blob/v${version}/CHANGELOG.md";
diff --git a/pkgs/development/python-modules/radicale-infcloud/default.nix b/pkgs/development/python-modules/radicale-infcloud/default.nix
index a59b8221f5d83..7780900718563 100644
--- a/pkgs/development/python-modules/radicale-infcloud/default.nix
+++ b/pkgs/development/python-modules/radicale-infcloud/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchFromGitHub, buildPythonPackage, radicale }:
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  radicale,
+}:
 
 buildPythonPackage {
   pname = "radicale-infcloud";
@@ -22,7 +27,10 @@ buildPythonPackage {
   meta = with lib; {
     homepage = "https://github.com/Unrud/RadicaleInfCloud/";
     description = "Integrate InfCloud into Radicale's web interface";
-    license = with licenses; [ agpl3Plus gpl3 ];
+    license = with licenses; [
+      agpl3Plus
+      gpl3
+    ];
     maintainers = with maintainers; [ erictapen ];
   };
 }
diff --git a/pkgs/development/python-modules/radio-beam/default.nix b/pkgs/development/python-modules/radio-beam/default.nix
index c0e9c31a5eca1..f88a1957bdb10 100644
--- a/pkgs/development/python-modules/radio-beam/default.nix
+++ b/pkgs/development/python-modules/radio-beam/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, fetchPypi
-, fetchpatch2
-, buildPythonPackage
-, setuptools-scm
-, astropy
-, numpy
-, matplotlib
-, scipy
-, six
-, pytestCheckHook
-, pytest-astropy
+{
+  lib,
+  fetchPypi,
+  fetchpatch2,
+  buildPythonPackage,
+  setuptools-scm,
+  astropy,
+  numpy,
+  matplotlib,
+  scipy,
+  six,
+  pytestCheckHook,
+  pytest-astropy,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     astropy
@@ -48,9 +47,7 @@ buildPythonPackage rec {
     pytest-astropy
   ];
 
-  pythonImportsCheck = [
-    "radio_beam"
-  ];
+  pythonImportsCheck = [ "radio_beam" ];
 
   meta = with lib; {
     description = "Tools for Beam IO and Manipulation";
diff --git a/pkgs/development/python-modules/radios/default.nix b/pkgs/development/python-modules/radios/default.nix
index 5831579f7df56..241e95a189852 100644
--- a/pkgs/development/python-modules/radios/default.nix
+++ b/pkgs/development/python-modules/radios/default.nix
@@ -1,21 +1,21 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, pythonRelaxDepsHook
-, aiodns
-, aiohttp
-, awesomeversion
-, backoff
-, cachetools
-, mashumaro
-, orjson
-, pycountry
-, yarl
-, aresponses
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  aiodns,
+  aiohttp,
+  awesomeversion,
+  backoff,
+  cachetools,
+  mashumaro,
+  orjson,
+  pycountry,
+  yarl,
+  aresponses,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,7 +25,6 @@ buildPythonPackage rec {
 
   disabled = pythonOlder "3.11";
 
-
   src = fetchFromGitHub {
     owner = "frenck";
     repo = "python-radios";
@@ -41,12 +40,9 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "pycountry"
-  ];
+  pythonRelaxDeps = [ "pycountry" ];
 
   propagatedBuildInputs = [
     aiodns
diff --git a/pkgs/development/python-modules/radiotherm/default.nix b/pkgs/development/python-modules/radiotherm/default.nix
index 1d62144e00cc8..c574b09301b8b 100644
--- a/pkgs/development/python-modules/radiotherm/default.nix
+++ b/pkgs/development/python-modules/radiotherm/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/radish-bdd/default.nix b/pkgs/development/python-modules/radish-bdd/default.nix
index f0f9070180ef9..6e350cbccf71f 100644
--- a/pkgs/development/python-modules/radish-bdd/default.nix
+++ b/pkgs/development/python-modules/radish-bdd/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, click
-, colorful
-, docopt
-, fetchFromGitHub
-, freezegun
-, humanize
-, lark
-, lxml
-, parse-type
-, pysingleton
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, tag-expressions
+{
+  lib,
+  buildPythonPackage,
+  click,
+  colorful,
+  docopt,
+  fetchFromGitHub,
+  freezegun,
+  humanize,
+  lark,
+  lxml,
+  parse-type,
+  pysingleton,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  tag-expressions,
 }:
 
 buildPythonPackage rec {
@@ -50,13 +51,9 @@ buildPythonPackage rec {
     pyyaml
   ];
 
-  pythonImportsCheck = [
-    "radish"
-  ];
+  pythonImportsCheck = [ "radish" ];
 
-  disabledTests = [
-    "test_main_cli_calls"
-  ];
+  disabledTests = [ "test_main_cli_calls" ];
 
   meta = with lib; {
     description = "Behaviour-Driven-Development tool for python";
diff --git a/pkgs/development/python-modules/radon/default.nix b/pkgs/development/python-modules/radon/default.nix
index 23f1a9427b560..5d494b4c2996b 100644
--- a/pkgs/development/python-modules/radon/default.nix
+++ b/pkgs/development/python-modules/radon/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, fetchpatch
-# Python deps
-, mando
-, colorama
-, pytest-mock
-, tomli
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  fetchpatch,
+  # Python deps
+  mando,
+  colorama,
+  pytest-mock,
+  tomli,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -47,14 +46,10 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    toml = [
-      tomli
-    ];
+    toml = [ tomli ];
   };
 
-  pythonImportsCheck = [
-    "radon"
-  ];
+  pythonImportsCheck = [ "radon" ];
 
   meta = with lib; {
     description = "Various code metrics for Python code";
diff --git a/pkgs/development/python-modules/railroad-diagrams/default.nix b/pkgs/development/python-modules/railroad-diagrams/default.nix
index e720c180014ba..b8970bc1ccd4b 100644
--- a/pkgs/development/python-modules/railroad-diagrams/default.nix
+++ b/pkgs/development/python-modules/railroad-diagrams/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,14 +20,12 @@ buildPythonPackage rec {
   # This is a dependency of pyparsing, which is a dependency of pytest
   doCheck = false;
 
-  pythonImportsCheck = [
-    "railroad"
-  ];
+  pythonImportsCheck = [ "railroad" ];
 
   meta = with lib; {
     description = "Module to generate SVG railroad syntax diagrams";
     homepage = "https://github.com/tabatkins/railroad-diagrams";
     license = licenses.cc0;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/rainbowstream/default.nix b/pkgs/development/python-modules/rainbowstream/default.nix
index 5f2f4c5904c5b..92fcac8b67ad0 100644
--- a/pkgs/development/python-modules/rainbowstream/default.nix
+++ b/pkgs/development/python-modules/rainbowstream/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, arrow
-, buildPythonPackage
-, fetchFromGitHub
-, freetype
-, glibcLocales
-, libjpeg
-, pillow
-, pocket
-, pyfiglet
-, pysocks
-, python
-, python-dateutil
-, requests
-, twitter
-, zlib
+{
+  lib,
+  arrow,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freetype,
+  glibcLocales,
+  libjpeg,
+  pillow,
+  pocket,
+  pyfiglet,
+  pysocks,
+  python,
+  python-dateutil,
+  requests,
+  twitter,
+  zlib,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/raincloudy/default.nix b/pkgs/development/python-modules/raincloudy/default.nix
index 3a247bc6a81ed..5db3430efb3dc 100644
--- a/pkgs/development/python-modules/raincloudy/default.nix
+++ b/pkgs/development/python-modules/raincloudy/default.nix
@@ -1,51 +1,54 @@
-{ lib
-, aiohttp
-, aioresponses
-, beautifulsoup4
-, buildPythonPackage
-, fetchFromGitHub
-, html5lib
-, pytest-asyncio
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
-, setuptools
-, setuptools-scm
-, urllib3
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitHub,
+  html5lib,
+  pytest-asyncio,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  requests,
+  requests-mock,
+  setuptools,
+  setuptools-scm,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "raincloudy";
   version = "1.2.0";
-  format = "setuptools";
+  pypriject = true;
 
-  disabled = pythonOlder "3.7";
+  # https://github.com/vanstinator/raincloudy/issues/65
+  disabled = pythonOlder "3.7" || pythonAtLeast "3.12";
 
   src = fetchFromGitHub {
     owner = "vanstinator";
-    repo = pname;
+    repo = "raincloudy";
     rev = "refs/tags/${version}";
     hash = "sha256-qCkBVirM09iA1sXiOB9FJns8bHjQq7rRk8XbRWrtBDI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    setuptools-scm
-  ];
-
   postPatch = ''
     # https://github.com/vanstinator/raincloudy/pull/60
     substituteInPlace setup.py \
-      --replace "bs4" "beautifulsoup4" \
+      --replace-fail "bs4" "beautifulsoup4" \
 
     # fix raincloudy.aio package discovery, by relying on
     # autodiscovery instead.
     sed -i '/packages=/d' setup.py
   '';
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
     aiohttp
     requests
     beautifulsoup4
@@ -74,7 +77,8 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Module to interact with Melnor RainCloud Smart Garden Watering Irrigation Timer";
     homepage = "https://github.com/vanstinator/raincloudy";
-    license = with licenses; [ asl20 ];
+    changelog = "https://github.com/vanstinator/raincloudy/releases/tag/${version}";
+    license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/ramlfications/default.nix b/pkgs/development/python-modules/ramlfications/default.nix
index e58cbeeb79477..22fef92b576d2 100644
--- a/pkgs/development/python-modules/ramlfications/default.nix
+++ b/pkgs/development/python-modules/ramlfications/default.nix
@@ -1,6 +1,20 @@
-{ lib, buildPythonPackage, fetchPypi
-, mock, pytest, pytest-mock, pytest-server-fixtures, pytest-localserver
-, termcolor, click, markdown2, six, jsonref, pyyaml, xmltodict, attrs
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  pytest,
+  pytest-mock,
+  pytest-server-fixtures,
+  pytest-localserver,
+  termcolor,
+  click,
+  markdown2,
+  six,
+  jsonref,
+  pyyaml,
+  xmltodict,
+  attrs,
 }:
 
 buildPythonPackage rec {
@@ -10,22 +24,37 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-wcQd5j74y7d0xFeWlwlhceZj95ixUmv5upnv/6Rl1ew=";
+    hash = "sha256-wcQd5j74y7d0xFeWlwlhceZj95ixUmv5upnv/6Rl1ew=";
   };
 
   meta = with lib; {
-    description = "A Python RAML parser.";
+    description = "Python RAML parser";
     mainProgram = "ramlfications";
-    homepage    = "https://ramlfications.readthedocs.org";
-    license     = licenses.asl20;
-    maintainers = with maintainers; [ ];
-    platforms   = platforms.all;
+    homepage = "https://ramlfications.readthedocs.org";
+    license = licenses.asl20;
+    maintainers = [ ];
+    platforms = platforms.all;
   };
 
   doCheck = false;
   # [darwin]  AssertionError: Expected 'update_mime_types' to have been called once. Called 0 times.
 
-  buildInputs = [ mock pytest pytest-mock pytest-server-fixtures pytest-localserver ];
+  buildInputs = [
+    mock
+    pytest
+    pytest-mock
+    pytest-server-fixtures
+    pytest-localserver
+  ];
 
-  propagatedBuildInputs = [ termcolor click markdown2 six jsonref pyyaml xmltodict attrs ];
+  propagatedBuildInputs = [
+    termcolor
+    click
+    markdown2
+    six
+    jsonref
+    pyyaml
+    xmltodict
+    attrs
+  ];
 }
diff --git a/pkgs/development/python-modules/random-user-agent/default.nix b/pkgs/development/python-modules/random-user-agent/default.nix
new file mode 100644
index 0000000000000..086c8dab39370
--- /dev/null
+++ b/pkgs/development/python-modules/random-user-agent/default.nix
@@ -0,0 +1,36 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "random-user-agent";
+  version = "1.0.1-unstable-2018-12-26";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "Luqman-Ud-Din";
+    repo = "random_user_agent";
+    rev = "9547a1d93558c5838f734357c695fee92be905f7";
+    hash = "sha256-BkMx7N8O9I4rD8lvpoyXTZbZDsoozIpYUQh+zkLQ7Uc=";
+  };
+
+  build-system = [ setuptools ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "random_user_agent" ];
+
+  meta = with lib; {
+    description = "Module to get list of user agents based on filters";
+    homepage = "https://github.com/Luqman-Ud-Din/random_user_agent";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/random2/default.nix b/pkgs/development/python-modules/random2/default.nix
index ee289b906d343..89d544e54a9b7 100644
--- a/pkgs/development/python-modules/random2/default.nix
+++ b/pkgs/development/python-modules/random2/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPyPy
-, fetchpatch
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  fetchpatch,
 }:
 
 buildPythonPackage rec {
@@ -30,5 +31,4 @@ buildPythonPackage rec {
     description = "Python 3 compatible Python 2 `random` Module";
     license = licenses.psfl;
   };
-
 }
diff --git a/pkgs/development/python-modules/randomfiletree/default.nix b/pkgs/development/python-modules/randomfiletree/default.nix
index 9326c7b3062b9..b4075202f51d5 100644
--- a/pkgs/development/python-modules/randomfiletree/default.nix
+++ b/pkgs/development/python-modules/randomfiletree/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/range-typed-integers/default.nix b/pkgs/development/python-modules/range-typed-integers/default.nix
index 1bb5d7b26f620..912bee04ffc74 100644
--- a/pkgs/development/python-modules/range-typed-integers/default.nix
+++ b/pkgs/development/python-modules/range-typed-integers/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -26,7 +27,7 @@ buildPythonPackage rec {
   checkInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A package provides integer types that have a specific range of valid values";
+    description = "Package provides integer types that have a specific range of valid values";
     homepage = "https://github.com/theCapypara/range-typed-integers";
     license = [ licenses.mit ];
     maintainers = with maintainers; [ marius851000 ];
diff --git a/pkgs/development/python-modules/rangehttpserver/default.nix b/pkgs/development/python-modules/rangehttpserver/default.nix
index 6fbcebbffed8e..9317045da4de0 100644
--- a/pkgs/development/python-modules/rangehttpserver/default.nix
+++ b/pkgs/development/python-modules/rangehttpserver/default.nix
@@ -1,26 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytest7CheckHook
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytest7CheckHook,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "rangehttpserver";
-  version = "1.3.3";
+  version = "1.4.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "danvk";
     repo = "RangeHTTPServer";
     rev = "refs/tags/${version}";
-    hash = "sha256-ZXEbis37QO8t05JQ2qQQf5rkUSxq3DwzR3khAJkZ5W0=";
+    hash = "sha256-wvGJ5wHYLb7wJUGgurkdRTABV6kTH7/GXzXgpd0Ypbc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -29,9 +28,7 @@ buildPythonPackage rec {
     requests
   ];
 
-  pythonImportsCheck = [
-    "RangeHTTPServer"
-  ];
+  pythonImportsCheck = [ "RangeHTTPServer" ];
 
   meta = with lib; {
     description = "SimpleHTTPServer with support for Range requests";
diff --git a/pkgs/development/python-modules/rangeparser/default.nix b/pkgs/development/python-modules/rangeparser/default.nix
index 8cc4833975c0c..60330d213a242 100644
--- a/pkgs/development/python-modules/rangeparser/default.nix
+++ b/pkgs/development/python-modules/rangeparser/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -19,17 +20,11 @@ buildPythonPackage rec {
     hash = "sha256-gjA7Iytg802Lv7/rLfhGE0yjz4e6FfOXbEoWNPjhCOY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "rangeparser"
-  ];
+  pythonImportsCheck = [ "rangeparser" ];
 
   meta = with lib; {
     description = "Parses ranges";
diff --git a/pkgs/development/python-modules/rank-bm25/default.nix b/pkgs/development/python-modules/rank-bm25/default.nix
index 9b0c5080449d1..7318aa2a79346 100644
--- a/pkgs/development/python-modules/rank-bm25/default.nix
+++ b/pkgs/development/python-modules/rank-bm25/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  numpy,
 }:
 let
   pname = "rank-bm25";
@@ -27,14 +28,12 @@ buildPythonPackage {
     substituteInPlace setup.py --replace "get_version()" "'${version}'"
   '';
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   pythonImportsCheck = [ "rank_bm25" ];
 
   meta = with lib; {
-    description = "A Collection of BM25 Algorithms in Python";
+    description = "Collection of BM25 Algorithms in Python";
     homepage = "https://github.com/dorianbrown/rank_bm25";
     changelog = "https://github.com/dorianbrown/rank_bm25/releases/tag/${version}";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/rapidfuzz-capi/default.nix b/pkgs/development/python-modules/rapidfuzz-capi/default.nix
index 9444b949a5105..342f09b2708b8 100644
--- a/pkgs/development/python-modules/rapidfuzz-capi/default.nix
+++ b/pkgs/development/python-modules/rapidfuzz-capi/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/rapidfuzz/default.nix b/pkgs/development/python-modules/rapidfuzz/default.nix
index 740389c8e0d6a..64246e6835eeb 100644
--- a/pkgs/development/python-modules/rapidfuzz/default.nix
+++ b/pkgs/development/python-modules/rapidfuzz/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, cmake
-, cython
-, ninja
-, scikit-build
-, setuptools
-, numpy
-, hypothesis
-, pandas
-, pytestCheckHook
-, rapidfuzz-cpp
-, taskflow
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  cmake,
+  cython,
+  ninja,
+  scikit-build,
+  setuptools,
+  numpy,
+  hypothesis,
+  pandas,
+  pytestCheckHook,
+  rapidfuzz-cpp,
+  taskflow,
 }:
 
 buildPythonPackage rec {
   pname = "rapidfuzz";
-  version = "3.8.1";
+  version = "3.9.7";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -27,12 +28,13 @@ buildPythonPackage rec {
     owner = "maxbachmann";
     repo = "RapidFuzz";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ljuqezL/Iu4VQelPi7KApBknDrWzikX7FD5iw5NcOL4=";
+    hash = "sha256-hyjzY9ogroUa4nGSG8HOyr5FxifX9d7Hf8ezKq6zxVk=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace-fail "Cython >=3.0.9, <3.1.0" "Cython"
+      --replace-fail "scikit-build~=0.18.0" "scikit-build" \
+      --replace-fail "Cython >=3.0.11, <3.1.0" "Cython"
   '';
 
   build-system = [
@@ -50,15 +52,13 @@ buildPythonPackage rec {
     taskflow
   ];
 
-  preBuild = ''
-    export RAPIDFUZZ_BUILD_EXTENSION=1
-  '' + lib.optionalString (stdenv.isDarwin && stdenv.isx86_64) ''
-    export CMAKE_ARGS="-DCMAKE_CXX_COMPILER_AR=$AR -DCMAKE_CXX_COMPILER_RANLIB=$RANLIB"
-  '';
-
-  env.NIX_CFLAGS_COMPILE = toString (lib.optionals (stdenv.cc.isClang && stdenv.isDarwin) [
-    "-fno-lto"  # work around https://github.com/NixOS/nixpkgs/issues/19098
-  ]);
+  preBuild =
+    ''
+      export RAPIDFUZZ_BUILD_EXTENSION=1
+    ''
+    + lib.optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) ''
+      export CMAKE_ARGS="-DCMAKE_CXX_COMPILER_AR=$AR -DCMAKE_CXX_COMPILER_RANLIB=$RANLIB"
+    '';
 
   passthru.optional-dependencies = {
     full = [ numpy ];
@@ -74,7 +74,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTests = lib.optionals (stdenv.isDarwin && stdenv.isx86_64) [
+  disabledTests = lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) [
     # segfaults
     "test_cdist"
   ];
diff --git a/pkgs/development/python-modules/rapidgzip/default.nix b/pkgs/development/python-modules/rapidgzip/default.nix
index 475d5291c20e9..77d710a944ea8 100644
--- a/pkgs/development/python-modules/rapidgzip/default.nix
+++ b/pkgs/development/python-modules/rapidgzip/default.nix
@@ -1,25 +1,30 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchPypi
-, pythonOlder
-, setuptools
-, nasm
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  nasm,
 }:
 
 buildPythonPackage rec {
   pname = "rapidgzip";
-  version = "0.13.3";
+  version = "0.14.2";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-3PvBRYswEtnAZerRD18laW6pQ8i6cgRgGZy+bgSOaI0=";
+    hash = "sha256-84NiaaOBw6kqBwVfVTcnaebRaQH5bg9JvxohwQkYZAk=";
   };
 
-  nativeBuildInputs = [ cython nasm setuptools ];
+  nativeBuildInputs = [
+    cython
+    nasm
+    setuptools
+  ];
 
   # has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/rapidocr-onnxruntime/default.nix b/pkgs/development/python-modules/rapidocr-onnxruntime/default.nix
new file mode 100644
index 0000000000000..5739ca88b3b03
--- /dev/null
+++ b/pkgs/development/python-modules/rapidocr-onnxruntime/default.nix
@@ -0,0 +1,126 @@
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  fetchzip,
+  substitute,
+  pytestCheckHook,
+
+  setuptools,
+  pyclipper,
+  opencv4,
+  numpy,
+  six,
+  shapely,
+  pyyaml,
+  pillow,
+  onnxruntime,
+}:
+let
+  version = "1.3.24";
+
+  src = fetchFromGitHub {
+    owner = "RapidAI";
+    repo = "RapidOCR";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-+iY+/IdOgsn+LPZQ4Kdzxuh31csQ7dyh5Zf552ne3N0=";
+  };
+
+  models = fetchzip {
+    url = "https://github.com/RapidAI/RapidOCR/releases/download/v1.1.0/required_for_whl_v1.3.0.zip";
+    hash = "sha256-j/0nzyvu/HfNTt5EZ+2Phe5dkyPOdQw/OZTz0yS63aA=";
+    stripRoot = false;
+  } + "/required_for_whl_v1.3.0/resources/models";
+in
+buildPythonPackage {
+  pname = "rapidocr-onnxruntime";
+  inherit version src;
+  pyproject = true;
+
+  sourceRoot = "${src.name}/python";
+
+  # HACK:
+  # Upstream uses a very unconventional structure to organize the packages, and we have to coax the
+  # existing infrastructure to work with it.
+  # See https://github.com/RapidAI/RapidOCR/blob/02829ef986bc2a5c4f33e9c45c9267bcf2d07a1d/.github/workflows/gen_whl_to_pypi_rapidocr_ort.yml#L80-L92
+  # for the "intended" way of building this package.
+
+  # The setup.py supplied by upstream tries to determine the current version by
+  # fetching the latest version of the package from PyPI, and then bumping the version number.
+  # This is not allowed in the Nix build environment as we do not have internet access,
+  # hence we patch that out and get the version from the build environment directly.
+  patches = [
+    (substitute {
+      src = ./setup-py-override-version-checking.patch;
+      substitutions = [
+        "--subst-var-by"
+        "version"
+        version
+      ];
+    })
+  ];
+
+  postPatch = ''
+    mv setup_onnxruntime.py setup.py
+    mkdir -p rapidocr_onnxruntime/models
+
+    ln -s ${models}/* rapidocr_onnxruntime/models
+
+    # Magic patch from upstream - what does this even do??
+    echo "from .rapidocr_onnxruntime.main import RapidOCR, VisRes" > __init__.py
+  '';
+
+  # Upstream expects the source files to be under rapidocr_onnxruntime/rapidocr_onnxruntime
+  # instead of rapidocr_onnxruntime for the wheel to build correctly.
+  preBuild = ''
+    mkdir rapidocr_onnxruntime_t
+    mv rapidocr_onnxruntime rapidocr_onnxruntime_t
+    mv rapidocr_onnxruntime_t rapidocr_onnxruntime
+  '';
+
+  # Revert the above hack
+  postBuild = ''
+    mv rapidocr_onnxruntime rapidocr_onnxruntime_t
+    mv rapidocr_onnxruntime_t/* .
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    pyclipper
+    opencv4
+    numpy
+    six
+    shapely
+    pyyaml
+    pillow
+    onnxruntime
+  ];
+
+  # Remove because we have adopted the `opencv4` as an attribute name.
+  pythonRemoveDeps = [ "opencv-python" ];
+
+  pythonImportsCheck = [ "rapidocr_onnxruntime" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  # These are tests for different backends.
+  disabledTestPaths = [
+    "tests/test_vino.py"
+    "tests/test_paddle.py"
+  ];
+
+  meta = {
+    # This seems to be related to https://github.com/microsoft/onnxruntime/issues/10038
+    # Also some related issue: https://github.com/NixOS/nixpkgs/pull/319053#issuecomment-2167713362
+    broken = (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64);
+    changelog = "https://github.com/RapidAI/RapidOCR/releases/tag/v${version}";
+    description = "Cross platform OCR Library based on OnnxRuntime";
+    homepage = "https://github.com/RapidAI/RapidOCR";
+    license = with lib.licenses; [ asl20 ];
+    maintainers = with lib.maintainers; [ pluiedev ];
+    mainProgram = "rapidocr_onnxruntime";
+  };
+}
diff --git a/pkgs/development/python-modules/rapidocr-onnxruntime/setup-py-override-version-checking.patch b/pkgs/development/python-modules/rapidocr-onnxruntime/setup-py-override-version-checking.patch
new file mode 100644
index 0000000000000..227618c2a60ca
--- /dev/null
+++ b/pkgs/development/python-modules/rapidocr-onnxruntime/setup-py-override-version-checking.patch
@@ -0,0 +1,30 @@
+diff --git a/setup_onnxruntime.py b/setup_onnxruntime.py
+index cd698d1..c6e8a33 100644
+--- a/setup_onnxruntime.py
++++ b/setup_onnxruntime.py
+@@ -6,7 +6,6 @@ from pathlib import Path
+ from typing import List, Union
+ 
+ import setuptools
+-from get_pypi_latest_version import GetPyPiLatestVersion
+ 
+ 
+ def read_txt(txt_path: Union[Path, str]) -> List[str]:
+@@ -26,16 +25,7 @@ def get_readme():
+ 
+ MODULE_NAME = "rapidocr_onnxruntime"
+ 
+-obtainer = GetPyPiLatestVersion()
+-latest_version = obtainer(MODULE_NAME)
+-VERSION_NUM = obtainer.version_add_one(latest_version)
+-
+-if len(sys.argv) > 2:
+-    match_str = " ".join(sys.argv[2:])
+-    matched_versions = obtainer.extract_version(match_str)
+-    if matched_versions:
+-        VERSION_NUM = matched_versions
+-sys.argv = sys.argv[:2]
++VERSION_NUM = "@version@"
+ 
+ project_urls = {
+     "Documentation": "https://rapidai.github.io/RapidOCRDocs/docs/install_usage/rapidocr/usage/",
diff --git a/pkgs/development/python-modules/rapt-ble/default.nix b/pkgs/development/python-modules/rapt-ble/default.nix
index 4c5df7b4b9fa2..a72e0f68d6577 100644
--- a/pkgs/development/python-modules/rapt-ble/default.nix
+++ b/pkgs/development/python-modules/rapt-ble/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, bluetooth-data-tools
-, bluetooth-sensor-state-data
-, buildPythonPackage
-, fetchFromGitHub
-, home-assistant-bluetooth
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, sensor-state-data
+{
+  lib,
+  bluetooth-data-tools,
+  bluetooth-sensor-state-data,
+  buildPythonPackage,
+  fetchFromGitHub,
+  home-assistant-bluetooth,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  sensor-state-data,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
       --replace " --cov=rapt_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     bluetooth-data-tools
@@ -40,13 +39,9 @@ buildPythonPackage rec {
     sensor-state-data
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "rapt_ble"
-  ];
+  pythonImportsCheck = [ "rapt_ble" ];
 
   meta = with lib; {
     description = "Library for RAPT Pill hydrometer BLE devices";
diff --git a/pkgs/development/python-modules/rarfile/default.nix b/pkgs/development/python-modules/rarfile/default.nix
index 4f3cbc28ea770..ec0ebf0302caf 100644
--- a/pkgs/development/python-modules/rarfile/default.nix
+++ b/pkgs/development/python-modules/rarfile/default.nix
@@ -1,6 +1,14 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pytestCheckHook, nose, libarchive, glibcLocales, isPy27
-# unrar is non-free software
-, useUnrar ? false, unrar
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  libarchive,
+  pythonOlder,
+  setuptools,
+  # unrar is non-free software
+  useUnrar ? false,
+  unrar,
 }:
 
 assert useUnrar -> unrar != null;
@@ -9,35 +17,47 @@ assert !useUnrar -> libarchive != null;
 buildPythonPackage rec {
   pname = "rarfile";
   version = "4.2";
-  format = "setuptools";
-  disabled = isPy27;
+  pyproject = true;
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "markokr";
     repo = "rarfile";
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-ZiwD2LG25fMd4Z+QWsh/x3ceG5QRBH4s/TZDwMnfpNI=";
+    hash = "sha256-ZiwD2LG25fMd4Z+QWsh/x3ceG5QRBH4s/TZDwMnfpNI=";
   };
 
-  nativeCheckInputs = [ pytestCheckHook nose glibcLocales ];
-
-  prePatch = ''
-    substituteInPlace rarfile.py \
-  '' + (if useUnrar then
-        ''--replace 'UNRAR_TOOL = "unrar"' "UNRAR_TOOL = \"${unrar}/bin/unrar\""
+  prePatch =
+    ''
+      substituteInPlace rarfile.py \
+    ''
+    + (
+      if useUnrar then
+        ''
+          --replace 'UNRAR_TOOL = "unrar"' "UNRAR_TOOL = \"${unrar}/bin/unrar\""
+        ''
+      else
+        ''
+          --replace 'ALT_TOOL = "bsdtar"' "ALT_TOOL = \"${libarchive}/bin/bsdtar\""
         ''
-       else
-        ''--replace 'ALT_TOOL = "bsdtar"' "ALT_TOOL = \"${libarchive}/bin/bsdtar\""
-        '')
-     + "";
-  # the tests only work with the standard unrar package
+    )
+    + "";
+
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  # The tests only work with the standard unrar package
   doCheck = useUnrar;
-  LC_ALL = "en_US.UTF-8";
+
   pythonImportsCheck = [ "rarfile" ];
 
   meta = with lib; {
     description = "RAR archive reader for Python";
     homepage = "https://github.com/markokr/rarfile";
+    changelog = "https://github.com/markokr/rarfile/releases/tag/v${version}";
     license = licenses.isc;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/rasterio/default.nix b/pkgs/development/python-modules/rasterio/default.nix
index b11ff18fc9db2..3365f12c1bc37 100644
--- a/pkgs/development/python-modules/rasterio/default.nix
+++ b/pkgs/development/python-modules/rasterio/default.nix
@@ -1,37 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, stdenv
-, testers
-
-, affine
-, attrs
-, boto3
-, certifi
-, click
-, click-plugins
-, cligj
-, cython
-, gdal
-, hypothesis
-, ipython
-, matplotlib
-, numpy
-, packaging
-, pytest-randomly
-, setuptools
-, shapely
-, snuggs
-, wheel
-
-, rasterio  # required to run version test
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  stdenv,
+  testers,
+
+  affine,
+  attrs,
+  boto3,
+  certifi,
+  click,
+  click-plugins,
+  cligj,
+  cython,
+  gdal,
+  hypothesis,
+  ipython,
+  matplotlib,
+  numpy,
+  packaging,
+  pytest-randomly,
+  setuptools,
+  shapely,
+  snuggs,
+  wheel,
+
+  rasterio, # required to run version test
 }:
 
 buildPythonPackage rec {
   pname = "rasterio";
-  version = "1.3.10";
+  version = "1.3.11";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -40,7 +41,7 @@ buildPythonPackage rec {
     owner = "rasterio";
     repo = "rasterio";
     rev = "refs/tags/${version}";
-    hash = "sha256-FidUaSpbTR8X1/Cqy/IwApkOOl2RRtPqYJaSISRPThI=";
+    hash = "sha256-Yh3n2oyARf7LAtJU8Oa3WWc+oscl7e2N7jpW0v1uTVk=";
   };
 
   postPatch = ''
@@ -48,10 +49,10 @@ buildPythonPackage rec {
     substituteInPlace rasterio/rio/calc.py \
       --replace-fail "from distutils.version import LooseVersion" ""
 
-    # relax dependency on yet non-packaged, RC version of numpy
+    # relax numpy dependency
     substituteInPlace pyproject.toml \
-      --replace-fail "numpy==2.0.0rc1" "numpy"
-    '';
+      --replace-fail "numpy>=2.0.0,<3.0" "numpy"
+  '';
 
   nativeBuildInputs = [
     cython
@@ -73,15 +74,9 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    ipython = [
-      ipython
-    ];
-    plot = [
-      matplotlib
-    ];
-    s3 = [
-      boto3
-    ];
+    ipython = [ ipython ];
+    plot = [ matplotlib ];
+    s3 = [ boto3 ];
   };
 
   nativeCheckInputs = [
@@ -99,20 +94,14 @@ buildPythonPackage rec {
     rm -r rasterio # prevent importing local rasterio
   '';
 
-  pytestFlagsArray = [
-    "-m 'not network'"
-  ];
+  pytestFlagsArray = [ "-m 'not network'" ];
 
   disabledTests = [
     # flaky
     "test_outer_boundless_pixel_fidelity"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_reproject_error_propagation"
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ "test_reproject_error_propagation" ];
 
-  pythonImportsCheck = [
-    "rasterio"
-  ];
+  pythonImportsCheck = [ "rasterio" ];
 
   passthru.tests.version = testers.testVersion {
     package = rasterio;
diff --git a/pkgs/development/python-modules/ratarmount/default.nix b/pkgs/development/python-modules/ratarmount/default.nix
index 64c11f7f3fe72..bdfa8a21c883c 100644
--- a/pkgs/development/python-modules/ratarmount/default.nix
+++ b/pkgs/development/python-modules/ratarmount/default.nix
@@ -1,24 +1,45 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, fusepy
-, ratarmountcore
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fusepy,
+  indexed-gzip,
+  indexed-zstd,
+  libarchive-c,
+  python-xz,
+  pythonOlder,
+  rapidgzip,
+  rarfile,
+  ratarmountcore,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "ratarmount";
-  version = "0.15.0";
-  format = "setuptools";
+  version = "0.15.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-2slLshH07O+4PIU3dF9vX2ZcXjaUVyTFYc59LL2J5iY=";
+    hash = "sha256-1JAj9vA/aZLDvZC7j5PD1OL9n4I0gag4Ezc0i68OQsw=";
   };
 
-  propagatedBuildInputs = [ ratarmountcore fusepy ];
+  pythonRelaxDeps = [ "python-xz" ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    fusepy
+    indexed-gzip
+    indexed-zstd
+    libarchive-c
+    python-xz
+    rapidgzip
+    rarfile
+    ratarmountcore
+  ];
 
   checkPhase = ''
     runHook preCheck
@@ -30,10 +51,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Mounts archives as read-only file systems by way of indexing";
-    mainProgram = "ratarmount";
     homepage = "https://github.com/mxmlnkn/ratarmount";
+    changelog = "https://github.com/mxmlnkn/ratarmount/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with lib.maintainers; [ mxmlnkn ];
-    platforms = platforms.all;
+    mainProgram = "ratarmount";
   };
 }
diff --git a/pkgs/development/python-modules/ratarmountcore/default.nix b/pkgs/development/python-modules/ratarmountcore/default.nix
index 844fa2c499230..b966e0a319be7 100644
--- a/pkgs/development/python-modules/ratarmountcore/default.nix
+++ b/pkgs/development/python-modules/ratarmountcore/default.nix
@@ -1,42 +1,62 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, indexed-bzip2
-, indexed-gzip
-, indexed-zstd
-, python-xz
-, setuptools
-, rapidgzip
-, rarfile
-, zstandard     # Python bindings
-, zstd          # System tool
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  indexed-gzip,
+  indexed-zstd,
+  libarchive-c,
+  pytestCheckHook,
+  python-xz,
+  pythonOlder,
+  rapidgzip,
+  rarfile,
+  setuptools,
+  zstandard, # Python bindings
+  zstd, # System tool
 }:
 
 buildPythonPackage rec {
   pname = "ratarmountcore";
-  version = "0.6.3";
+  version = "0.7.2";
   pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "mxmlnkn";
     repo = "ratarmount";
     rev = "core-v${version}";
-    hash = "sha256-2jG066BUkhyHRqRyFAucQRJrjXQNw2ccCxERKkltO3Y=";
+    hash = "sha256-2LPGKdofx2ID8BU0dZhGiZ3tUkd+niEVGvTSBFX4InU=";
     fetchSubmodules = true;
   };
 
   sourceRoot = "${src.name}/core";
 
-  nativeBuildInputs = [ setuptools ];
-  propagatedBuildInputs = [ indexed-gzip indexed-bzip2 indexed-zstd python-xz rapidgzip rarfile ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [ "ratarmountcore" ];
+  optional-dependencies = {
+    full = [
+      indexed-gzip
+      indexed-zstd
+      python-xz
+      rapidgzip
+      rarfile
+    ];
+    _7z = [ libarchive-c ];
+    bzip2 = [ rapidgzip ];
+    gzip = [ indexed-gzip ];
+    rar = [ rarfile ];
+    xz = [ python-xz ];
+    zstd = [ indexed-zstd ];
+  };
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    zstandard
+    zstd
+  ] ++ lib.flatten (builtins.attrValues optional-dependencies);
 
-  nativeCheckInputs = [ pytestCheckHook zstandard zstd ];
+  pythonImportsCheck = [ "ratarmountcore" ];
 
   disabledTestPaths = [
     # Disable this test because for arcane reasons running pytest with nix-build uses 10-100x
@@ -48,9 +68,17 @@ buildPythonPackage rec {
     "tests/test_BlockParallelReaders.py"
   ];
 
+  disabledTests = [
+    # Tests with issues
+    "test_file_versions"
+    "test_stream_compressed"
+    "test_chimera_file"
+  ];
+
   meta = with lib; {
     description = "Library for accessing archives by way of indexing";
     homepage = "https://github.com/mxmlnkn/ratarmount/tree/master/core";
+    changelog = "https://github.com/mxmlnkn/ratarmount/blob/core-v${version}/core/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with lib.maintainers; [ mxmlnkn ];
   };
diff --git a/pkgs/development/python-modules/ratelim/default.nix b/pkgs/development/python-modules/ratelim/default.nix
index c271b44ca32f9..c48469168cba9 100644
--- a/pkgs/development/python-modules/ratelim/default.nix
+++ b/pkgs/development/python-modules/ratelim/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, decorator
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  decorator,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     sha256 = "07dirdd8y23706110nb0lfz5pzbrcvd9y74h64la3y8igqbk4vc2";
   };
 
-  propagatedBuildInputs = [
-    decorator
-  ];
+  propagatedBuildInputs = [ decorator ];
 
   pythonImportsCheck = [ "ratelim" ];
 
diff --git a/pkgs/development/python-modules/ratelimit/default.nix b/pkgs/development/python-modules/ratelimit/default.nix
index 5a2c40efd1055..b17d017fbd6aa 100644
--- a/pkgs/development/python-modules/ratelimit/default.nix
+++ b/pkgs/development/python-modules/ratelimit/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/rauth/default.nix b/pkgs/development/python-modules/rauth/default.nix
deleted file mode 100644
index 059dfa9a2a60d..0000000000000
--- a/pkgs/development/python-modules/rauth/default.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, requests
-, pytestCheckHook
-, mock
-, nose
-, pycrypto
-}:
-
-buildPythonPackage rec {
-  pname = "rauth";
-  version = "0.7.2";
-  format = "setuptools";
-
-  src = fetchFromGitHub {
-    owner = "litl";
-    repo = "rauth";
-    rev = version;
-    hash = "sha256-wRKZbxZCEfihOaJM8sk8438LE++KJWxdOGImpL1gHa4=";
-  };
-
-  patches = [
-    (fetchpatch {
-      # https://github.com/litl/rauth/pull/211
-      name = "fix-pycrypdodome-replacement-for-pycrypto.patch";
-      url = "https://github.com/litl/rauth/commit/7fb3b7bf1a1869a52cf59ee3eb607d318e97265c.patch";
-      hash = "sha256-jiAIw+VQ2d/bkm2brqfY1RUrNGf+lsMPnoI91gGUS6o=";
-    })
-  ];
-
-  propagatedBuildInputs = [
-    requests
-  ];
-
-  pythonImportsCheck = [ "rauth" ];
-
-  nativeCheckInputs = [
-    pytestCheckHook
-    mock
-    nose
-    pycrypto
-  ];
-
-  meta = with lib; {
-    description = "A Python library for OAuth 1.0/a, 2.0, and Ofly";
-    homepage = "https://github.com/litl/rauth";
-    changelog = "https://github.com/litl/rauth/blob/${src.rev}/CHANGELOG";
-    license = licenses.mit;
-    maintainers = with maintainers; [ blaggacao ];
-  };
-}
-
diff --git a/pkgs/development/python-modules/raven/default.nix b/pkgs/development/python-modules/raven/default.nix
index f49230494e482..88727591db838 100644
--- a/pkgs/development/python-modules/raven/default.nix
+++ b/pkgs/development/python-modules/raven/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, blinker
-, flask
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  blinker,
+  flask,
 }:
 
 buildPythonPackage rec {
@@ -23,7 +24,10 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "raven" ];
 
   passthru.optional-dependencies = {
-    flask = [ blinker flask ];
+    flask = [
+      blinker
+      flask
+    ];
   };
 
   meta = {
diff --git a/pkgs/development/python-modules/rawkit/default.nix b/pkgs/development/python-modules/rawkit/default.nix
index 7a644220e93a9..00f469329e660 100644
--- a/pkgs/development/python-modules/rawkit/default.nix
+++ b/pkgs/development/python-modules/rawkit/default.nix
@@ -1,6 +1,12 @@
-{ lib, fetchPypi, buildPythonPackage, fetchpatch
-, libraw
-, pytest, mock }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  fetchpatch,
+  libraw,
+  pytest,
+  mock,
+}:
 
 buildPythonPackage rec {
   pname = "rawkit";
@@ -22,7 +28,10 @@ buildPythonPackage rec {
 
   buildInputs = [ libraw ];
 
-  nativeCheckInputs = [ pytest mock ];
+  nativeCheckInputs = [
+    pytest
+    mock
+  ];
 
   checkPhase = ''
     py.test tests
@@ -32,6 +41,6 @@ buildPythonPackage rec {
     description = "CTypes based LibRaw bindings for Python";
     homepage = "https://rawkit.readthedocs.org/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ray/binary-hashes.nix b/pkgs/development/python-modules/ray/binary-hashes.nix
index 7edac88e63066..4ce40625e3c30 100644
--- a/pkgs/development/python-modules/ray/binary-hashes.nix
+++ b/pkgs/development/python-modules/ray/binary-hashes.nix
@@ -1,8 +1,11 @@
 {
   cp310 = {
-    hash = "sha256-y3T30qpaIeX53LMVpPm96CIyjna6lc0Lo3DP2gmKZ/Q=";
+    hash = "sha256-KZMkQeaKt9rTWydsdjZwv0Lr9yHN3E9N6CAL2SrAXFg=";
   };
   cp311 = {
-    hash = "sha256-x9FDjLqHJuyaWclpZOAHtgoHKENmR/SMODIoaSwvLuA=";
+    hash = "sha256-tCAnnKFPAswn/Fkv8fKNqaoIuWIxa/Zd3zcNuHcILpE=";
+  };
+  cp312 = {
+    hash = "sha256-AmjHvC6Ltu+buJaSmd61hXv2cr/LWdqV23SVqKUC+Lo=";
   };
 }
diff --git a/pkgs/development/python-modules/ray/default.nix b/pkgs/development/python-modules/ray/default.nix
index b1c886153192b..6a9532f953d52 100644
--- a/pkgs/development/python-modules/ray/default.nix
+++ b/pkgs/development/python-modules/ray/default.nix
@@ -1,114 +1,87 @@
-{ aiohttp
-, aiohttp-cors
-, aiorwlock
-, aiosignal
-, attrs
-, autoPatchelfHook
-, buildPythonPackage
-, fetchPypi
-, click
-, cloudpickle
-, colorama
-, colorful
-, cython
-, dm-tree
-, fastapi
-, filelock
-, frozenlist
-, fsspec
-, gpustat
-, grpcio
-, gym
-, jsonschema
-, lib
-, lz4
-, matplotlib
-, msgpack
-, numpy
-, opencensus
-, packaging
-, pandas
-, py-spy
-, prometheus-client
-, psutil
-, pyarrow
-, pydantic
-, python
-, pythonAtLeast
-, pythonOlder
-, pythonRelaxDepsHook
-, pyyaml
-, requests
-, scikit-image
-, scipy
-, setproctitle
-, smart-open
-, starlette
-, tabulate
-, tensorboardx
-, uvicorn
-, virtualenv
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  pythonAtLeast,
+  python,
+  fetchPypi,
+  autoPatchelfHook,
+
+  # dependencies
+  aiohttp,
+  aiohttp-cors,
+  aiosignal,
+  attrs,
+  click,
+  cloudpickle,
+  colorama,
+  colorful,
+  cython,
+  filelock,
+  frozenlist,
+  gpustat,
+  grpcio,
+  jsonschema,
+  msgpack,
+  numpy,
+  opencensus,
+  packaging,
+  prometheus-client,
+  psutil,
+  pydantic,
+  py-spy,
+  pyyaml,
+  requests,
+  setproctitle,
+  smart-open,
+  virtualenv,
+
+  # optional-dependencies
+  fsspec,
+  pandas,
+  pyarrow,
+  dm-tree,
+  gym,
+  lz4,
+  matplotlib,
+  scikit-image,
+  scipy,
+  aiorwlock,
+  fastapi,
+  starlette,
+  uvicorn,
+  tabulate,
+  tensorboardx,
 }:
 
 let
   pname = "ray";
-  version = "2.10.0";
+  version = "2.37.0";
 in
 buildPythonPackage rec {
   inherit pname version;
   format = "wheel";
 
-  disabled = pythonOlder "3.10" || pythonAtLeast "3.12";
+  disabled = pythonOlder "3.10" || pythonAtLeast "3.13";
 
   src =
     let
-      pyShortVersion = "cp${builtins.replaceStrings ["."] [""] python.pythonVersion}";
-      binary-hash = (import ./binary-hashes.nix)."${pyShortVersion}" or {};
+      pyShortVersion = "cp${builtins.replaceStrings [ "." ] [ "" ] python.pythonVersion}";
+      binary-hash = (import ./binary-hashes.nix)."${pyShortVersion}" or { };
     in
-    fetchPypi ({
-      inherit pname version format;
-      dist = pyShortVersion;
-      python = pyShortVersion;
-      abi = pyShortVersion;
-      platform = "manylinux2014_x86_64";
-    } // binary-hash);
-
-  passthru.optional-dependencies = rec {
-    data-deps = [
-      pandas
-      pyarrow
-      fsspec
-    ];
-
-    serve-deps = [
-      aiorwlock
-      fastapi
-      pandas
-      starlette
-      uvicorn
-    ];
-
-    tune-deps = [
-      tabulate
-      tensorboardx
-    ];
-
-    rllib-deps = tune-deps ++ [
-      dm-tree
-      gym
-      lz4
-      matplotlib
-      scikit-image
-      pyyaml
-      scipy
-    ];
-
-    air-deps = data-deps ++ serve-deps ++ tune-deps ++ rllib-deps;
-  };
+    fetchPypi (
+      {
+        inherit pname version format;
+        dist = pyShortVersion;
+        python = pyShortVersion;
+        abi = pyShortVersion;
+        platform = "manylinux2014_x86_64";
+      }
+      // binary-hash
+    );
 
   nativeBuildInputs = [
     autoPatchelfHook
-    pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = [
@@ -118,11 +91,11 @@ buildPythonPackage rec {
     "virtualenv"
   ];
 
-  propagatedBuildInputs = [
-    attrs
+  dependencies = [
     aiohttp
     aiohttp-cors
     aiosignal
+    attrs
     click
     cloudpickle
     colorama
@@ -137,10 +110,10 @@ buildPythonPackage rec {
     numpy
     opencensus
     packaging
-    py-spy
     prometheus-client
     psutil
     pydantic
+    py-spy
     pyyaml
     requests
     setproctitle
@@ -148,20 +121,48 @@ buildPythonPackage rec {
     virtualenv
   ];
 
+  optional-dependencies = rec {
+    air-deps = data-deps ++ serve-deps ++ tune-deps ++ rllib-deps;
+    data-deps = [
+      fsspec
+      pandas
+      pyarrow
+    ];
+    rllib-deps = tune-deps ++ [
+      dm-tree
+      gym
+      lz4
+      matplotlib
+      pyyaml
+      scikit-image
+      scipy
+    ];
+    serve-deps = [
+      aiorwlock
+      fastapi
+      pandas
+      starlette
+      uvicorn
+    ];
+    tune-deps = [
+      tabulate
+      tensorboardx
+    ];
+  };
+
   postInstall = ''
     chmod +x $out/${python.sitePackages}/ray/core/src/ray/{gcs/gcs_server,raylet/raylet}
   '';
 
-  pythonImportsCheck = [
-    "ray"
-  ];
+  pythonImportsCheck = [ "ray" ];
 
-  meta = with lib; {
-    description = "A unified framework for scaling AI and Python applications";
+  meta = {
+    description = "Unified framework for scaling AI and Python applications";
     homepage = "https://github.com/ray-project/ray";
     changelog = "https://github.com/ray-project/ray/releases/tag/ray-${version}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ billhuang ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ billhuang ];
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
     platforms = [ "x86_64-linux" ];
   };
 }
diff --git a/pkgs/development/python-modules/raylib-python-cffi/default.nix b/pkgs/development/python-modules/raylib-python-cffi/default.nix
new file mode 100644
index 0000000000000..eaaa13c96cb33
--- /dev/null
+++ b/pkgs/development/python-modules/raylib-python-cffi/default.nix
@@ -0,0 +1,83 @@
+{
+  stdenv,
+  gcc,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  cffi,
+  pkg-config,
+  glfw,
+  libffi,
+  raylib,
+  physac,
+  raygui,
+  darwin,
+  lib,
+}:
+
+let
+  inherit (darwin.apple_sdk.frameworks)
+    OpenGL
+    Cocoa
+    IOKit
+    CoreFoundation
+    CoreVideo
+    ;
+in
+buildPythonPackage rec {
+  pname = "raylib-python-cffi";
+  version = "5.0.0.3";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "electronstudio";
+    repo = "raylib-python-cffi";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-R/w39zYkoOF5JqHDyqVIdON9yXFo2PeosyEQZOd4aYo=";
+  };
+
+  build-system = [ setuptools ];
+  dependencies = [ cffi ];
+
+  patches = [
+    # This patch fixes to the builder script function to call pkg-config
+    # using the library name rather than searching only through raylib
+    ./fix_pyray_builder.patch
+
+    # use get_lib_flags() instead of linking to libraylib.a directly
+    ./fix_macos_raylib.patch
+  ];
+
+  nativeBuildInputs = [
+    pkg-config
+    gcc
+  ];
+
+  # tests require a graphic environment
+  doCheck = false;
+
+  pythonImportsCheck = [ "pyray" ];
+
+  buildInputs =
+    [
+      glfw
+      libffi
+      raylib
+      physac
+      raygui
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      OpenGL
+      Cocoa
+      IOKit
+      CoreFoundation
+      CoreVideo
+    ];
+
+  meta = {
+    description = "Python CFFI bindings for Raylib";
+    homepage = "https://electronstudio.github.io/raylib-python-cffi";
+    license = lib.licenses.epl20;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/raylib-python-cffi/fix_macos_raylib.patch b/pkgs/development/python-modules/raylib-python-cffi/fix_macos_raylib.patch
new file mode 100644
index 0000000000000..be2f41a3720cb
--- /dev/null
+++ b/pkgs/development/python-modules/raylib-python-cffi/fix_macos_raylib.patch
@@ -0,0 +1,11 @@
+--- a/raylib/build.py
++++ b/raylib/build.py
+@@ -158,7 +158,7 @@ def build_unix():
+
+     if platform.system() == "Darwin":
+         print("BUILDING FOR MAC")
+-        extra_link_args = [get_the_lib_path() + '/libraylib.a', '-framework', 'OpenGL', '-framework', 'Cocoa',
++        extra_link_args = get_lib_flags() + ['-framework', 'OpenGL', '-framework', 'Cocoa',
+                            '-framework', 'IOKit', '-framework', 'CoreFoundation', '-framework',
+                            'CoreVideo']
+         libraries = []
diff --git a/pkgs/development/python-modules/raylib-python-cffi/fix_pyray_builder.patch b/pkgs/development/python-modules/raylib-python-cffi/fix_pyray_builder.patch
new file mode 100644
index 0000000000000..0d167e2b0795a
--- /dev/null
+++ b/pkgs/development/python-modules/raylib-python-cffi/fix_pyray_builder.patch
@@ -0,0 +1,61 @@
+--- a/raylib/build.py	2024-05-18 18:36:26.911488056 +0200
++++ b/raylib/build.py	2024-05-18 18:40:04.770587090 +0200
+@@ -32,8 +32,8 @@
+     return subprocess.run(['pkg-config', '--exists', 'raylib'], text=True, stdout=subprocess.PIPE).returncode == 0
+ 
+ 
+-def get_the_include_path():
+-    return subprocess.run(['pkg-config', '--variable=includedir', 'raylib'], text=True,
++def get_the_include_path(libname):
++    return subprocess.run(['pkg-config', '--variable=includedir', libname], text=True,
+                           stdout=subprocess.PIPE).stdout.strip()
+ 
+ 
+@@ -106,9 +106,9 @@
+     if not check_raylib_installed():
+         raise Exception("ERROR: raylib not found by pkg-config.  Please install pkg-config and Raylib.")
+ 
+-    raylib_h = get_the_include_path() + "/raylib.h"
+-    rlgl_h = get_the_include_path() + "/rlgl.h"
+-    raymath_h = get_the_include_path() + "/raymath.h"
++    raylib_h = get_the_include_path("raylib") + "/raylib.h"
++    rlgl_h = get_the_include_path("raylib") + "/rlgl.h"
++    raymath_h = get_the_include_path("raylib") + "/raymath.h"
+ 
+     if not os.path.isfile(raylib_h):
+         raise Exception("ERROR: " + raylib_h + " not found.  Please install Raylib.")
+@@ -125,13 +125,13 @@
+     #include "raymath.h"
+     """
+ 
+-    glfw3_h = get_the_include_path() + "/GLFW/glfw3.h"
++    glfw3_h = get_the_include_path("glfw3") + "/GLFW/glfw3.h"
+     if check_header_exists(glfw3_h):
+         ffi_includes += """
+         #include "GLFW/glfw3.h"
+         """
+ 
+-    raygui_h = get_the_include_path() + "/raygui.h"
++    raygui_h = get_the_include_path("raygui") + "/raygui.h"
+     if check_header_exists(raygui_h):
+         ffi_includes += """
+         #define RAYGUI_IMPLEMENTATION
+@@ -139,7 +139,7 @@
+         #include "raygui.h"
+         """
+ 
+-    physac_h = get_the_include_path() + "/physac.h"
++    physac_h = get_the_include_path("physac") + "/physac.h"
+     if check_header_exists(physac_h):
+         ffi_includes += """
+         #define PHYSAC_IMPLEMENTATION
+@@ -172,7 +172,7 @@
+ 
+     ffibuilder.set_source("raylib._raylib_cffi",
+                           ffi_includes,
+-                          include_dirs=[get_the_include_path()],
++                          include_dirs=[get_the_include_path("libffi")],
+                           extra_link_args=extra_link_args,
+                           extra_compile_args=extra_compile_args,
+                           libraries=libraries)
+
diff --git a/pkgs/development/python-modules/razdel/default.nix b/pkgs/development/python-modules/razdel/default.nix
index 519abbd734f44..a5f23fbd37f82 100644
--- a/pkgs/development/python-modules/razdel/default.nix
+++ b/pkgs/development/python-modules/razdel/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest7CheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest7CheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/rbtools/default.nix b/pkgs/development/python-modules/rbtools/default.nix
index 57887196cbaee..bbab71ec70bb5 100644
--- a/pkgs/development/python-modules/rbtools/default.nix
+++ b/pkgs/development/python-modules/rbtools/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, isPy3k
-, setuptools
-, colorama
-, six
-, texttable
-, tqdm
+{
+  lib,
+  buildPythonPackage,
+  fetchurl,
+  isPy3k,
+  setuptools,
+  colorama,
+  six,
+  texttable,
+  tqdm,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,13 @@ buildPythonPackage rec {
     sha256 = "577c2f8bbf88f77bda84ee95af0310b59111c156f48a5aab56ca481e2f77eaf4";
   };
 
-  propagatedBuildInputs = [ six texttable tqdm colorama setuptools ];
+  propagatedBuildInputs = [
+    six
+    texttable
+    tqdm
+    colorama
+    setuptools
+  ];
 
   # The kgb test dependency is not in nixpkgs
   doCheck = false;
@@ -33,5 +40,4 @@ buildPythonPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ domenkozar ];
   };
-
 }
diff --git a/pkgs/development/python-modules/rchitect/default.nix b/pkgs/development/python-modules/rchitect/default.nix
index cbafc0d2b2b6d..785b0218d9f28 100644
--- a/pkgs/development/python-modules/rchitect/default.nix
+++ b/pkgs/development/python-modules/rchitect/default.nix
@@ -1,28 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cffi
-, pytestCheckHook
-, pytest-mock
-, pythonOlder
-, R
-, rPackages
-, six
-, packaging
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cffi,
+  packaging,
+  pytestCheckHook,
+  pytest-mock,
+  pythonOlder,
+  R,
+  rPackages,
+  setuptools,
+  setuptools-scm,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "rchitect";
-  version = "0.4.6";
-  format = "setuptools";
+  version = "0.4.7";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "randy3k";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-IVyYzf433m03RRfL5SmUOdaXFy0NHf/QuAdtUeUjIz0=";
+    hash = "sha256-M7OWDo3mEEOYtjIpzPIpzPMBtv2TZJKJkSfHczZYS8Y=";
   };
 
   postPatch = ''
@@ -30,13 +33,16 @@ buildPythonPackage rec {
       --replace '"pytest-runner"' ""
   '';
 
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
   propagatedBuildInputs = [
     cffi
     six
     packaging
-  ] ++ (with rPackages; [
-    reticulate
-  ]);
+  ] ++ (with rPackages; [ reticulate ]);
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/rcssmin/default.nix b/pkgs/development/python-modules/rcssmin/default.nix
index 15fc1c3bfee18..7f32b5075d504 100644
--- a/pkgs/development/python-modules/rcssmin/default.nix
+++ b/pkgs/development/python-modules/rcssmin/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,14 +21,12 @@ buildPythonPackage rec {
   # tests auto-discovery
   doCheck = false;
 
-  pythonImportsCheck = [
-    "rcssmin"
-  ];
+  pythonImportsCheck = [ "rcssmin" ];
 
   meta = with lib; {
     description = "CSS minifier written in pure python";
     homepage = "http://opensource.perlig.de/rcssmin/";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/rdflib/default.nix b/pkgs/development/python-modules/rdflib/default.nix
index d0f62efa6a78b..17bf74863a746 100644
--- a/pkgs/development/python-modules/rdflib/default.nix
+++ b/pkgs/development/python-modules/rdflib/default.nix
@@ -1,30 +1,31 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# builds
-, poetry-core
-
-# propagates
-, isodate
-, pyparsing
-
-# propagates <3.8
-, importlib-metadata
-
-# extras: networkx
-, networkx
-
-# extras: html
-, html5lib
-
-# tests
-, pip
-, pytest-cov
-, pytest7CheckHook
-, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # builds
+  poetry-core,
+
+  # propagates
+  isodate,
+  pyparsing,
+
+  # propagates <3.8
+  importlib-metadata,
+
+  # extras: networkx
+  networkx,
+
+  # extras: html
+  html5lib,
+
+  # tests
+  pip,
+  pytest-cov,
+  pytest7CheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -41,25 +42,17 @@ buildPythonPackage rec {
     hash = "sha256-VCjvgXMun1Hs+gPeqjzLXbIX1NBQ5aMLz0aWlwsm0iY=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     isodate
     html5lib
     pyparsing
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   passthru.optional-dependencies = {
-    html = [
-      html5lib
-    ];
-    networkx = [
-      networkx
-    ];
+    html = [ html5lib ];
+    networkx = [ networkx ];
   };
 
   __darwinAllowLocalNetworking = true;
@@ -70,9 +63,7 @@ buildPythonPackage rec {
     # Failed: DID NOT WARN. No warnings of type (<class 'UserWarning'>,) were emitted.
     pytest7CheckHook
     setuptools
-  ]
-  ++ passthru.optional-dependencies.networkx
-  ++ passthru.optional-dependencies.html;
+  ] ++ passthru.optional-dependencies.networkx ++ passthru.optional-dependencies.html;
 
   pytestFlagsArray = [
     # requires network access
@@ -80,28 +71,28 @@ buildPythonPackage rec {
     "--deselect=test/jsonld/test_onedotone.py::test_suite"
   ];
 
-  disabledTests = [
-    # Requires network access
-    "test_service"
-    "testGuessFormatForParse"
-    "test_infix_owl_example1"
-    "test_context"
-    "test_example"
-    "test_guess_format_for_parse"
-    "rdflib.extras.infixowl"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # Require loopback network access
-    "TestGraphHTTP"
-  ];
+  disabledTests =
+    [
+      # Requires network access
+      "test_service"
+      "testGuessFormatForParse"
+      "test_infix_owl_example1"
+      "test_context"
+      "test_example"
+      "test_guess_format_for_parse"
+      "rdflib.extras.infixowl"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Require loopback network access
+      "TestGraphHTTP"
+    ];
 
-  pythonImportsCheck = [
-    "rdflib"
-  ];
+  pythonImportsCheck = [ "rdflib" ];
 
   meta = with lib; {
     description = "Python library for working with RDF";
     homepage = "https://rdflib.readthedocs.io";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/rdkit/default.nix b/pkgs/development/python-modules/rdkit/default.nix
index 2d5af44a068d5..248f212f0abeb 100644
--- a/pkgs/development/python-modules/rdkit/default.nix
+++ b/pkgs/development/python-modules/rdkit/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, cmake
-, comic-neue
-, boost
-, catch2_3
-, inchi
-, cairo
-, eigen
-, python
-, rapidjson
-, maeparser
-, coordgenlibs
-, numpy
-, pandas
-, pillow
-, memorymappingHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cmake,
+  comic-neue,
+  boost,
+  catch2_3,
+  inchi,
+  cairo,
+  eigen,
+  python,
+  rapidjson,
+  maeparser,
+  coordgenlibs,
+  numpy,
+  pandas,
+  pillow,
+  memorymappingHook,
 }:
 let
   external = {
@@ -77,17 +78,13 @@ buildPythonPackage rec {
     ln -s ${comic-neue}/share/fonts/truetype/ComicNeue-Regular.ttf Data/Fonts/
   '';
 
-  nativeBuildInputs = [
-    cmake
-  ];
+  nativeBuildInputs = [ cmake ];
 
   buildInputs = [
     boost
     cairo
     catch2_3
-  ] ++ lib.optionals (stdenv.system == "x86_64-darwin") [
-    memorymappingHook
-  ];
+  ] ++ lib.optionals (stdenv.system == "x86_64-darwin") [ memorymappingHook ];
 
   propagatedBuildInputs = [
     numpy
@@ -103,10 +100,10 @@ buildPythonPackage rec {
 
   preConfigure = ''
     # Since we can't expand with bash in cmakeFlags
-    cmakeFlags="$cmakeFlags -DPYTHON_NUMPY_INCLUDE_PATH=$(${python}/bin/python -c 'import numpy; print(numpy.get_include())')"
-    cmakeFlags="$cmakeFlags -DFREESASA_DIR=$PWD/External/FreeSASA/freesasa"
-    cmakeFlags="$cmakeFlags -DFREESASA_SRC_DIR=$PWD/External/FreeSASA/freesasa"
-    cmakeFlags="$cmakeFlags -DAVALONTOOLS_DIR=$PWD/External/AvalonTools/avalon"
+    appendToVar cmakeFlags "-DPYTHON_NUMPY_INCLUDE_PATH=$(${python}/bin/python -c 'import numpy; print(numpy.get_include())')"
+    appendToVar cmakeFlags "-DFREESASA_DIR=$PWD/External/FreeSASA/freesasa"
+    appendToVar cmakeFlags "-DFREESASA_SRC_DIR=$PWD/External/FreeSASA/freesasa"
+    appendToVar cmakeFlags "-DAVALONTOOLS_DIR=$PWD/External/AvalonTools/avalon"
   '';
 
   cmakeFlags = [
@@ -153,7 +150,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Open source toolkit for cheminformatics";
-    maintainers = with maintainers; [ rmcgibbo natsukium ];
+    maintainers = with maintainers; [
+      rmcgibbo
+      natsukium
+    ];
     license = licenses.bsd3;
     homepage = "https://www.rdkit.org";
     changelog = "https://github.com/rdkit/rdkit/releases/tag/${src.rev}";
diff --git a/pkgs/development/python-modules/re-assert/default.nix b/pkgs/development/python-modules/re-assert/default.nix
index 9cf32d79802e2..5dc156b15053b 100644
--- a/pkgs/development/python-modules/re-assert/default.nix
+++ b/pkgs/development/python-modules/re-assert/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, regex
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  regex,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
   # No tests in archive
   doCheck = false;
 
-  propagatedBuildInputs = [
-    regex
-  ];
+  propagatedBuildInputs = [ regex ];
 
   meta = {
     description = "Show where your regex match assertion failed";
diff --git a/pkgs/development/python-modules/reactivex/default.nix b/pkgs/development/python-modules/reactivex/default.nix
index 430581fce58ff..ab38b8a968b41 100644
--- a/pkgs/development/python-modules/reactivex/default.nix
+++ b/pkgs/development/python-modules/reactivex/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -22,13 +23,9 @@ buildPythonPackage rec {
     hash = "sha256-W1qYNbYV6Roz1GJtP/vpoPD6KigWaaQOWe1R5DZHlUw=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ typing-extensions ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -41,9 +38,7 @@ buildPythonPackage rec {
       --replace 'version = "0.0.0"' 'version = "${version}"'
   '';
 
-  pythonImportsCheck = [
-    "reactivex"
-  ];
+  pythonImportsCheck = [ "reactivex" ];
 
   meta = with lib; {
     description = "Library for composing asynchronous and event-based programs";
diff --git a/pkgs/development/python-modules/readabilipy/default.nix b/pkgs/development/python-modules/readabilipy/default.nix
index e97b238ac599b..862a6428546c9 100644
--- a/pkgs/development/python-modules/readabilipy/default.nix
+++ b/pkgs/development/python-modules/readabilipy/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchFromGitHub
-, html5lib
-, lxml
-, pytestCheckHook
-, pythonOlder
-, regex
-, setuptools
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitHub,
+  html5lib,
+  lxml,
+  pytestCheckHook,
+  pythonOlder,
+  regex,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-XrmdQjLFYdadWeO5DoKAQeEdta+6T6BqfvGlDkzLMyM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     beautifulsoup4
@@ -35,13 +34,9 @@ buildPythonPackage rec {
     regex
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "readabilipy"
-  ];
+  pythonImportsCheck = [ "readabilipy" ];
 
   disabledTests = [
     # AssertionError
diff --git a/pkgs/development/python-modules/readability-lxml/default.nix b/pkgs/development/python-modules/readability-lxml/default.nix
index b1360d7bf5206..7c75c32be269e 100644
--- a/pkgs/development/python-modules/readability-lxml/default.nix
+++ b/pkgs/development/python-modules/readability-lxml/default.nix
@@ -1,12 +1,14 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, chardet
-, cssselect
-, lxml
-, timeout-decorator
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  chardet,
+  cssselect,
+  lxml,
+  lxml-html-clean,
+  timeout-decorator,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +23,12 @@ buildPythonPackage rec {
     hash = "sha256-MKdQRety24qOG9xgIdaCJ72XEImP42SlMG6tC7bwzo4=";
   };
 
-  propagatedBuildInputs = [ chardet cssselect lxml ];
+  propagatedBuildInputs = [
+    chardet
+    cssselect
+    lxml
+    lxml-html-clean
+  ];
 
   postPatch = ''
     substituteInPlace setup.py --replace 'sys.platform == "darwin"' "False"
@@ -32,7 +39,7 @@ buildPythonPackage rec {
     timeout-decorator
   ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
     # Test is broken on darwin. Fix in master from https://github.com/buriy/python-readability/pull/178
     "test_many_repeated_spaces"
   ];
diff --git a/pkgs/development/python-modules/readchar/default.nix b/pkgs/development/python-modules/readchar/default.nix
index 115e0c284a2a8..b9d80f945c25d 100644
--- a/pkgs/development/python-modules/readchar/default.nix
+++ b/pkgs/development/python-modules/readchar/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# tests
-, pytestCheckHook
-, pexpect
+  # tests
+  pytestCheckHook,
+  pexpect,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,7 @@ buildPythonPackage rec {
       --replace 'sys.platform.startswith("linux")' 'sys.platform.startswith(("darwin", "linux"))'
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   pythonImportsCheck = [ "readchar" ];
 
diff --git a/pkgs/development/python-modules/readlike/default.nix b/pkgs/development/python-modules/readlike/default.nix
index da43d1cec2ceb..fa7480f31ad4d 100644
--- a/pkgs/development/python-modules/readlike/default.nix
+++ b/pkgs/development/python-modules/readlike/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,7 +19,10 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [ "-s" "tests" ];
+  unittestFlagsArray = [
+    "-s"
+    "tests"
+  ];
 
   meta = with lib; {
     description = "GNU Readline-like line editing module";
diff --git a/pkgs/development/python-modules/readmdict/default.nix b/pkgs/development/python-modules/readmdict/default.nix
index 5ce332df55045..9089bd1b44dd4 100644
--- a/pkgs/development/python-modules/readmdict/default.nix
+++ b/pkgs/development/python-modules/readmdict/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
 
-, poetry-core
-, python-lzo
-, tkinter
+  poetry-core,
+  python-lzo,
+  tkinter,
 
-, pytestCheckHook
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -24,28 +25,22 @@ buildPythonPackage rec {
     hash = "sha256-1/f+o2bVscT3EA8XQyS2hWjhimLRzfIBM6u2O7UqwcA=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     python-lzo
     tkinter
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "readmdict"
-  ];
+  pythonImportsCheck = [ "readmdict" ];
 
   meta = with lib; {
     description = "Read mdx/mdd files (repacking of readmdict from mdict-analysis)";
     mainProgram = "readmdict";
     homepage = "https://github.com/ffreemt/readmdict";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/readme-renderer/default.nix b/pkgs/development/python-modules/readme-renderer/default.nix
index 13a8074a56907..2ffce823140c4 100644
--- a/pkgs/development/python-modules/readme-renderer/default.nix
+++ b/pkgs/development/python-modules/readme-renderer/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, bleach
-, buildPythonPackage
-, cmarkgfm
-, docutils
-, fetchPypi
-, nh3
-, pygments
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  cmarkgfm,
+  docutils,
+  fetchPypi,
+  nh3,
+  pygments,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-GBjdKBQIE1Ce7tjWJof3zU97rZDU21hgAcXcCdT94xE=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     docutils
@@ -34,36 +32,21 @@ buildPythonPackage rec {
     pygments
   ];
 
-  optional-dependencies.md = [
-    cmarkgfm
-  ];
+  optional-dependencies.md = [ cmarkgfm ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ]
-  ++ optional-dependencies.md;
+  nativeCheckInputs = [ pytestCheckHook ] ++ optional-dependencies.md;
 
   disabledTests = [
-    # https://github.com/pypa/readme_renderer/issues/221
-    "test_GFM_"
-    # https://github.com/pypa/readme_renderer/issues/274
-    "test_CommonMark_008.md"
+    "test_rst_fixtures"
     "test_rst_008.rst"
-    # Relies on old distutils behaviour removed by setuptools (TypeError: dist must be a Distribution instance)
-    "test_valid_rst"
-    "test_invalid_rst"
-    "test_malicious_rst"
-    "test_invalid_missing"
-    "test_invalid_empty"
   ];
 
-  pythonImportsCheck = [
-    "readme_renderer"
-  ];
+  pythonImportsCheck = [ "readme_renderer" ];
 
   meta = with lib; {
     description = "Python library for rendering readme descriptions";
     homepage = "https://github.com/pypa/readme_renderer";
+    changelog = "https://github.com/pypa/readme_renderer/releases/tag/${version}";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/readme/default.nix b/pkgs/development/python-modules/readme/default.nix
index 2e959bf268719..40ab041428977 100644
--- a/pkgs/development/python-modules/readme/default.nix
+++ b/pkgs/development/python-modules/readme/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, readme-renderer
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  readme-renderer,
 }:
 
 buildPythonPackage rec {
@@ -15,13 +16,9 @@ buildPythonPackage rec {
     sha256 = "32fbe1538a437da160fa4e4477270bfdcd8876e2e364d0d12898302644496231";
   };
 
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
-  propagatedBuildInputs = [
-    readme-renderer
-  ];
+  propagatedBuildInputs = [ readme-renderer ];
 
   checkPhase = ''
     pytest
@@ -37,5 +34,4 @@ buildPythonPackage rec {
     license = licenses.asl20;
     maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/readthedocs-sphinx-ext/default.nix b/pkgs/development/python-modules/readthedocs-sphinx-ext/default.nix
index 7d114a5fe23ef..6d974563bc1e3 100644
--- a/pkgs/development/python-modules/readthedocs-sphinx-ext/default.nix
+++ b/pkgs/development/python-modules/readthedocs-sphinx-ext/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, requests
-, pytestCheckHook
-, mock
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  requests,
+  pytestCheckHook,
+  mock,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -18,13 +19,9 @@ buildPythonPackage rec {
     hash = "sha256-7l/VuZ258MGAsjlsvOUoqjZnGVG5UmuwJy2/zlUXvSc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/rebulk/default.nix b/pkgs/development/python-modules/rebulk/default.nix
index cab55c3a29fea..7bec155f52a1e 100644
--- a/pkgs/development/python-modules/rebulk/default.nix
+++ b/pkgs/development/python-modules/rebulk/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, regex
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  regex,
 }:
 
 buildPythonPackage rec {
@@ -18,23 +19,17 @@ buildPythonPackage rec {
     hash = "sha256-DTC/gPygD6nGlxhaxHXarJveX2Rs4zOMn/XV3B69/rw=";
   };
 
-  propagatedBuildInputs = [
-    regex
-  ];
+  propagatedBuildInputs = [ regex ];
 
-  buildInputs = [
-    pytestCheckHook
-  ];
+  buildInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "rebulk"
-  ];
+  pythonImportsCheck = [ "rebulk" ];
 
   meta = with lib; {
     description = "Advanced string matching from simple patterns";
     homepage = "https://github.com/Toilal/rebulk/";
     changelog = "https://github.com/Toilal/rebulk/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/recipe-scrapers/default.nix b/pkgs/development/python-modules/recipe-scrapers/default.nix
index 4c9ad2d8295e1..dc72a492a20e0 100644
--- a/pkgs/development/python-modules/recipe-scrapers/default.nix
+++ b/pkgs/development/python-modules/recipe-scrapers/default.nix
@@ -1,20 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, beautifulsoup4
-, extruct
-, language-tags
-, regex
-, requests
-, pytestCheckHook
-, responses
-, setuptools
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  beautifulsoup4,
+  extruct,
+  language-tags,
+  regex,
+  requests,
+  pytestCheckHook,
+  responses,
+  setuptools,
+  pythonOlder,
+  nixosTests,
 }:
 
 buildPythonPackage rec {
   pname = "recipe-scrapers";
-  version = "14.56.0";
+  version = "15.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -23,12 +25,10 @@ buildPythonPackage rec {
     owner = "hhursev";
     repo = "recipe-scrapers";
     rev = "refs/tags/${version}";
-    hash = "sha256-+9oQLCuR+rRCG5tnyofHd8WMkQ5QPsWfLCnwIDU5d9o=";
+    hash = "sha256-PCtvDd/1eAbo1aHUPMu0XHNHMwBTbjZmdSNrY2PmxQc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     beautifulsoup4
@@ -48,9 +48,13 @@ buildPythonPackage rec {
     "test_instructions"
   ];
 
-  pythonImportsCheck = [
-    "recipe_scrapers"
-  ];
+  pythonImportsCheck = [ "recipe_scrapers" ];
+
+  passthru = {
+    tests = {
+      inherit (nixosTests) mealie tandoor-recipes;
+    };
+  };
 
   meta = with lib; {
     description = "Python package for scraping recipes data";
diff --git a/pkgs/development/python-modules/recline/default.nix b/pkgs/development/python-modules/recline/default.nix
index 074e1da03386c..b60e2b6ebc196 100644
--- a/pkgs/development/python-modules/recline/default.nix
+++ b/pkgs/development/python-modules/recline/default.nix
@@ -1,26 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pudb
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pudb,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "recline";
-  version = "2023.5";
+  version = "2024.7.1";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "NetApp";
     repo = "recline";
-    rev = "v${version}";
-    sha256 = "sha256-jsWOPkzhN4D+Q/lK5yWg1kTgFkmOEIQY8O7oAXq5Nak=";
+    rev = "refs/tags/v${version}";
+    sha256 = "sha256-Qc4oofuhSZ2S5zuCY9Ce9ISldYI3MDUJXFc8VcXdLIU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pudb
@@ -33,6 +32,6 @@ buildPythonPackage rec {
     description = "This library helps you quickly implement an interactive command-based application";
     homepage = "https://github.com/NetApp/recline";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/recommonmark/default.nix b/pkgs/development/python-modules/recommonmark/default.nix
index b58cf8f280002..0569adc5b93ec 100644
--- a/pkgs/development/python-modules/recommonmark/default.nix
+++ b/pkgs/development/python-modules/recommonmark/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, commonmark
-, docutils
-, sphinx
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  commonmark,
+  docutils,
+  sphinx,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,11 @@ buildPythonPackage rec {
   };
 
   nativeCheckInputs = [ pytestCheckHook ];
-  propagatedBuildInputs = [ commonmark docutils sphinx ];
+  propagatedBuildInputs = [
+    commonmark
+    docutils
+    sphinx
+  ];
 
   dontUseSetuptoolsCheck = true;
 
@@ -35,7 +40,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "recommonmark" ];
 
   meta = {
-    description = "A docutils-compatibility bridge to CommonMark";
+    description = "Docutils-compatibility bridge to CommonMark";
     homepage = "https://github.com/rtfd/recommonmark";
     license = lib.licenses.mit;
   };
diff --git a/pkgs/development/python-modules/reconplogger/default.nix b/pkgs/development/python-modules/reconplogger/default.nix
index 319730e8168f5..6b1800c7052bf 100644
--- a/pkgs/development/python-modules/reconplogger/default.nix
+++ b/pkgs/development/python-modules/reconplogger/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "reconplogger";
-  version = "4.16.0";
+  version = "4.16.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "omni-us";
     repo = "reconplogger";
     rev = "refs/tags/v${version}";
-    hash = "sha256-jBWy5oHyZpRUWb8OW0dRFfpu3m3hTd5dpIOQCRO5swM=";
+    hash = "sha256-F/6vT3jLxpteUFtYNtGyiO/JxeRtwJKpdGXTFJ6IDCE=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/recordlinkage/default.nix b/pkgs/development/python-modules/recordlinkage/default.nix
index 7b92cfacebf9d..b89a11830bc4a 100644
--- a/pkgs/development/python-modules/recordlinkage/default.nix
+++ b/pkgs/development/python-modules/recordlinkage/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, bottleneck
-, buildPythonPackage
-, fetchPypi
-, jellyfish
-, joblib
-, networkx
-, numexpr
-, numpy
-, pandas
-, pyarrow
-, pytest
-, pythonOlder
-, scikit-learn
-, scipy
-, setuptools
-, setuptools-scm
-, wheel
+{
+  lib,
+  bottleneck,
+  buildPythonPackage,
+  fetchPypi,
+  jellyfish,
+  joblib,
+  networkx,
+  numexpr,
+  numpy,
+  pandas,
+  pyarrow,
+  pytest,
+  pythonOlder,
+  scikit-learn,
+  scipy,
+  setuptools,
+  setuptools-scm,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -51,13 +52,9 @@ buildPythonPackage rec {
 
   # pytestCheckHook does not work
   # Reusing their CI setup which involves 'rm -rf recordlinkage' in preCheck phase do not work too.
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
-  pythonImportsCheck = [
-    "recordlinkage"
-  ];
+  pythonImportsCheck = [ "recordlinkage" ];
 
   meta = with lib; {
     description = "Library to link records in or between data sources";
diff --git a/pkgs/development/python-modules/recurring-ical-events/default.nix b/pkgs/development/python-modules/recurring-ical-events/default.nix
index fd5cdb62dd7c5..3be853d2fc5e4 100644
--- a/pkgs/development/python-modules/recurring-ical-events/default.nix
+++ b/pkgs/development/python-modules/recurring-ical-events/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, icalendar
-, pytz
-, python-dateutil
-, x-wr-timezone
-, pytestCheckHook
-, restructuredtext-lint
-, pygments
-, tzdata
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  icalendar,
+  python-dateutil,
+  tzdata,
+  x-wr-timezone,
+  pytestCheckHook,
+  pytz,
+  restructuredtext-lint,
+  pygments,
 }:
 
 buildPythonPackage rec {
   pname = "recurring-ical-events";
-  version = "2.2.0";
+  version = "3.3.0";
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   pyproject = true;
 
@@ -25,25 +26,31 @@ buildPythonPackage rec {
     owner = "niccokunzmann";
     repo = "python-recurring-ical-events";
     rev = "v${version}";
-    hash = "sha256-Njd+sc35jlA96iVf2uuVN2BK92ctwUDfBAUfpgqtPs0=";
+    hash = "sha256-1Ggxi61epge6Rxc/vJ7OuuNjjeaQYReEPeOZV8DLghk=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
+
+  pythonRelaxDeps = [ "icalendar" ];
 
   dependencies = [
     icalendar
-    pytz
     python-dateutil
+    tzdata
     x-wr-timezone
   ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytz
     restructuredtext-lint
     pygments
-    tzdata
+  ];
+
+  disabledTests = lib.optionals (lib.versionOlder icalendar.version "6") [
+    # ModuleNotFoundError: No module named 'icalendar.timezone'
+    "test_can_import_zoneinfo"
+    "test_documentation_file"
   ];
 
   pythonImportsCheck = [ "recurring_ical_events" ];
diff --git a/pkgs/development/python-modules/recursive-pth-loader/default.nix b/pkgs/development/python-modules/recursive-pth-loader/default.nix
index e42988eeff9a8..c5a21d488fcfe 100644
--- a/pkgs/development/python-modules/recursive-pth-loader/default.nix
+++ b/pkgs/development/python-modules/recursive-pth-loader/default.nix
@@ -12,14 +12,13 @@ stdenv.mkDerivation {
 
   buildPhase = "${python.pythonOnBuildForHost}/bin/${python.pythonOnBuildForHost.executable} -m compileall .";
 
-  installPhase =
-    ''
-      dst=$out/${python.sitePackages}
-      mkdir -p $dst
-      cp sitecustomize.* $dst/
-    '';
+  installPhase = ''
+    dst=$out/${python.sitePackages}
+    mkdir -p $dst
+    cp sitecustomize.* $dst/
+  '';
 
   meta = {
-      description = "Enable recursive processing of pth files anywhere in sys.path";
+    description = "Enable recursive processing of pth files anywhere in sys.path";
   };
 }
diff --git a/pkgs/development/python-modules/red-black-tree-mod/default.nix b/pkgs/development/python-modules/red-black-tree-mod/default.nix
index dd17a45bc8ea3..91de8a60cb74d 100644
--- a/pkgs/development/python-modules/red-black-tree-mod/default.nix
+++ b/pkgs/development/python-modules/red-black-tree-mod/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-OONlKQOiv5Y3nCfCCCygt7kFFYZi3X7wyX9P2TqaqQg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # Module has no test
   doCheck = false;
 
-  pythonImportsCheck = [
-    "red_black_dict_mod"
-  ];
+  pythonImportsCheck = [ "red_black_dict_mod" ];
 
   meta = with lib; {
     description = "Flexible python implementation of red black trees";
diff --git a/pkgs/development/python-modules/redbaron/default.nix b/pkgs/development/python-modules/redbaron/default.nix
index 52a3ac5b265e9..5938221f7c0d0 100644
--- a/pkgs/development/python-modules/redbaron/default.nix
+++ b/pkgs/development/python-modules/redbaron/default.nix
@@ -1,4 +1,10 @@
-{ lib, fetchPypi, buildPythonPackage, baron, pytestCheckHook }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  baron,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "redbaron";
@@ -15,7 +21,7 @@ buildPythonPackage rec {
   preCheck = ''
     rm -rf tests/__pycache__
     rm tests/test_bounding_box.py
-  ''; #error about fixtures
+  ''; # error about fixtures
 
   nativeCheckInputs = [ pytestCheckHook ];
 
diff --git a/pkgs/development/python-modules/redis-om/default.nix b/pkgs/development/python-modules/redis-om/default.nix
index 1549b891636ff..c3f6455c725dd 100644
--- a/pkgs/development/python-modules/redis-om/default.nix
+++ b/pkgs/development/python-modules/redis-om/default.nix
@@ -1,27 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pythonRelaxDepsHook
-, unasync
-, poetry-core
-, python
-, click
-, hiredis
-, more-itertools
-, pydantic
-, python-ulid
-, redis
-, types-redis
-, typing-extensions
-, pkgs
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  unasync,
+  poetry-core,
+  python,
+  click,
+  hiredis,
+  more-itertools,
+  pydantic,
+  python-ulid,
+  redis,
+  types-redis,
+  typing-extensions,
+  pkgs,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "redis-om";
-  version = "0.2.2";
+  version = "0.3.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -30,11 +30,10 @@ buildPythonPackage rec {
     owner = "redis";
     repo = "redis-om-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-E11wpTrE+HIT+jgn1zMC8L7RGas83DAJd1R0WWHp7Jc=";
+    hash = "sha256-FN39Db94Z7z3luCDKi8b4Ku7bFwxEOXtBT5aXbDGVtw=";
   };
 
   build-system = [
-    pythonRelaxDepsHook
     unasync
     poetry-core
   ];
@@ -86,7 +85,7 @@ buildPythonPackage rec {
     description = "Object mapping, and more, for Redis and Python";
     mainProgram = "migrate";
     homepage = "https://github.com/redis/redis-om-python";
-    changelog = "https://github.com/redis/redis-om-python/releases/tag/${src.rev}";
+    changelog = "https://github.com/redis/redis-om-python/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ natsukium ];
   };
diff --git a/pkgs/development/python-modules/redis/default.nix b/pkgs/development/python-modules/redis/default.nix
index d987092e48f02..a55e5b293bb46 100644
--- a/pkgs/development/python-modules/redis/default.nix
+++ b/pkgs/development/python-modules/redis/default.nix
@@ -1,34 +1,35 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
 
-# propagates
-, async-timeout
-, deprecated
-, importlib-metadata
-, packaging
-, typing-extensions
+  # propagates
+  async-timeout,
+  deprecated,
+  importlib-metadata,
+  packaging,
+  typing-extensions,
 
-# extras: hiredis
-, hiredis
+  # extras: hiredis
+  hiredis,
 
-# extras: ocsp
-, cryptography
-, pyopenssl
-, requests
+  # extras: ocsp
+  cryptography,
+  pyopenssl,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "redis";
-  version = "5.0.1";
+  version = "5.0.6";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-DatJXNV1MGnTvGUKDd6Kj57d4W/FaRtomlZu2lgQDQ8=";
+    hash = "sha256-OEc818Y4mtPkSpH0w+r2vLip90YAfym/T7IIJP8LIZc=";
   };
 
   propagatedBuildInputs = [
@@ -36,14 +37,10 @@ buildPythonPackage rec {
     deprecated
     packaging
     typing-extensions
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   passthru.optional-dependencies = {
-    hiredis = [
-      hiredis
-    ];
+    hiredis = [ hiredis ];
     ocsp = [
       cryptography
       pyopenssl
diff --git a/pkgs/development/python-modules/redshift-connector/default.nix b/pkgs/development/python-modules/redshift-connector/default.nix
index 704eb5d1e1f61..6273cd695f39a 100644
--- a/pkgs/development/python-modules/redshift-connector/default.nix
+++ b/pkgs/development/python-modules/redshift-connector/default.nix
@@ -1,21 +1,22 @@
-{ beautifulsoup4
-, boto3
-, buildPythonPackage
-, fetchFromGitHub
-, lib
-, lxml
-, packaging
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, pytz
-, requests
-, scramp
+{
+  beautifulsoup4,
+  boto3,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  lxml,
+  packaging,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  requests,
+  scramp,
 }:
 
 buildPythonPackage rec {
   pname = "redshift-connector";
-  version = "2.1.0";
+  version = "2.1.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -24,7 +25,7 @@ buildPythonPackage rec {
     owner = "aws";
     repo = "amazon-redshift-python-driver";
     rev = "refs/tags/v${version}";
-    hash = "sha256-EYJFJbeYUW/vCD46sm5CLeyINL/hcF7IA2myuVmqFaY=";
+    hash = "sha256-NjUgmvmy0buBFpXjcEsZU0F2JNeXE3GBpkaxClvo4T0=";
   };
 
   # remove addops as they add test directory and coverage parameters to pytest
diff --git a/pkgs/development/python-modules/reedsolo/default.nix b/pkgs/development/python-modules/reedsolo/default.nix
index a2fb336f70b4d..491c60d713061 100644
--- a/pkgs/development/python-modules/reedsolo/default.nix
+++ b/pkgs/development/python-modules/reedsolo/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, cython
-, setuptools
+  # build-system
+  cython,
+  setuptools,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     "tests/test_creedsolo.py" # TODO: package creedsolo
diff --git a/pkgs/development/python-modules/referencing/default.nix b/pkgs/development/python-modules/referencing/default.nix
index 0113f23e47420..3e7063e42ecc6 100644
--- a/pkgs/development/python-modules/referencing/default.nix
+++ b/pkgs/development/python-modules/referencing/default.nix
@@ -1,39 +1,39 @@
-{ lib
-, attrs
-, buildPythonPackage
-, fetchFromGitHub
-, hatch-vcs
-, hatchling
-, jsonschema
-, pytest-subtests
-, pytestCheckHook
-, pythonOlder
-, rpds-py
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatch-vcs,
+  hatchling,
+  jsonschema,
+  pytest-subtests,
+  pytestCheckHook,
+  pythonOlder,
+  rpds-py,
 }:
 
-
 let
   self = buildPythonPackage rec {
     pname = "referencing";
-    version = "0.33.0";
-    format = "pyproject";
+    version = "0.34.0";
+    pyproject = true;
 
-    disabled = pythonOlder "3.7";
+    disabled = pythonOlder "3.8";
 
     src = fetchFromGitHub {
       owner = "python-jsonschema";
       repo = "referencing";
       rev = "refs/tags/v${version}";
       fetchSubmodules = true;
-      hash = "sha256-QP/F6UNiKHGNMhGphDJgEFZnpGU5izExcI/A9WJjA5Q=";
+      hash = "sha256-Vx+WVgt09I04Z/sIYsLLtPCwuo5wW0Z2o2OTH2V17UY=";
     };
 
-    nativeBuildInputs = [
+    build-system = [
       hatch-vcs
       hatchling
     ];
 
-    propagatedBuildInputs = [
+    dependencies = [
       attrs
       rpds-py
     ];
@@ -44,22 +44,20 @@ let
       pytestCheckHook
     ];
 
-    # avoid infinite recursion with jsonschema
+    # Avoid infinite recursion with jsonschema
     doCheck = false;
 
     passthru.tests.referencing = self.overridePythonAttrs { doCheck = true; };
 
-    pythonImportsCheck = [
-      "referencing"
-    ];
+    pythonImportsCheck = [ "referencing" ];
 
     meta = with lib; {
       description = "Cross-specification JSON referencing";
       homepage = "https://github.com/python-jsonschema/referencing";
-      changelog = "https://github.com/python-jsonschema/referencing/blob/${version}/CHANGELOG.rst";
+      changelog = "https://github.com/python-jsonschema/referencing/releases/tag/v${version}";
       license = licenses.mit;
       maintainers = with maintainers; [ fab ];
     };
   };
 in
-  self
+self
diff --git a/pkgs/development/python-modules/refery/default.nix b/pkgs/development/python-modules/refery/default.nix
index 0bae769fbdadd..cddfa64d361f4 100644
--- a/pkgs/development/python-modules/refery/default.nix
+++ b/pkgs/development/python-modules/refery/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-
-, poetry-core
-, pyyaml
-, colorama
-, junit-xml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+
+  poetry-core,
+  pyyaml,
+  colorama,
+  junit-xml,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     junit-xml
   ];
 
-  pythonImportCheck = [
-    "refery"
-  ];
+  pythonImportsCheck = [ "refery" ];
 
   disabled = pythonOlder "3.10";
 
diff --git a/pkgs/development/python-modules/reflex-chakra/default.nix b/pkgs/development/python-modules/reflex-chakra/default.nix
new file mode 100644
index 0000000000000..9f25b9ae9b356
--- /dev/null
+++ b/pkgs/development/python-modules/reflex-chakra/default.nix
@@ -0,0 +1,41 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "reflex-chakra";
+  version = "0.6.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "reflex-dev";
+    repo = "reflex-chakra";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-5Lins7cbZWQTbJFBwR9qUdgTPHifPxD3BrvaawIKCJE=";
+  };
+
+  pythonRemoveDeps = [
+    # Circular dependency
+    "reflex"
+  ];
+
+  build-system = [ poetry-core ];
+
+  # pythonImportsCheck = [ "reflex_chakra" ];
+
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Chakra Implementation in Reflex";
+    homepage = "https://github.com/reflex-dev/reflex-chakra";
+    changelog = "https://github.com/reflex-dev/reflex-chakra/releases/tag/v${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/reflex-hosting-cli/default.nix b/pkgs/development/python-modules/reflex-hosting-cli/default.nix
new file mode 100644
index 0000000000000..52cc78f0ee558
--- /dev/null
+++ b/pkgs/development/python-modules/reflex-hosting-cli/default.nix
@@ -0,0 +1,62 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  charset-normalizer,
+  httpx,
+  pipdeptree,
+  platformdirs,
+  pydantic,
+  python-dateutil,
+  rich,
+  tabulate,
+  typer,
+  websockets,
+}:
+
+buildPythonPackage rec {
+  pname = "reflex-hosting-cli";
+  version = "0.1.13";
+  pyproject = true;
+
+  # source is not published https://github.com/reflex-dev/reflex/issues/3762
+  src = fetchPypi {
+    pname = "reflex_hosting_cli";
+    inherit version;
+    hash = "sha256-xdav3P63TO4EajdN29WRFquO15fa5oj8x0TauuJNxXE=";
+  };
+
+  pythonRelaxDeps = [ "pipdeptree" ];
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    charset-normalizer
+    httpx
+    pipdeptree
+    platformdirs
+    pydantic
+    python-dateutil
+    rich
+    tabulate
+    typer
+    websockets
+  ];
+
+  pythonImportsCheck = [
+    "reflex_cli"
+    "reflex_cli.cli"
+    "reflex_cli.deployments"
+  ];
+
+  # no tests on pypi
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Reflex Hosting CLI";
+    homepage = "https://pypi.org/project/reflex-hosting-cli/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ pbsds ];
+  };
+}
diff --git a/pkgs/development/python-modules/reflex/default.nix b/pkgs/development/python-modules/reflex/default.nix
new file mode 100644
index 0000000000000..33b9c45c5de66
--- /dev/null
+++ b/pkgs/development/python-modules/reflex/default.nix
@@ -0,0 +1,146 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  alembic,
+  attrs,
+  build,
+  charset-normalizer,
+  dill,
+  distro,
+  fastapi,
+  gunicorn,
+  httpx,
+  jinja2,
+  lazy-loader,
+  numpy,
+  pandas,
+  pillow,
+  platformdirs,
+  plotly,
+  psutil,
+  pydantic,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  python-engineio,
+  python-multipart,
+  python-socketio,
+  pythonOlder,
+  redis,
+  reflex-chakra,
+  reflex-hosting-cli,
+  rich,
+  sqlmodel,
+  starlette-admin,
+  tomlkit,
+  twine,
+  typer,
+  unzip,
+  uvicorn,
+  watchdog,
+  watchfiles,
+  wrapt,
+}:
+
+buildPythonPackage rec {
+  pname = "reflex";
+  version = "0.6.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "reflex-dev";
+    repo = "reflex";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-6yu9EfyX/1kvvmkmKGJrZnVffRHGWY/iUrn5BIrNx38=";
+  };
+
+  pythonRelaxDeps = [
+    "fastapi"
+    "gunicorn"
+  ];
+
+  pythonRemoveDeps = [
+    "setuptools"
+    "build"
+  ];
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    alembic
+    build # used in custom_components/custom_components.py
+    charset-normalizer
+    dill
+    distro
+    fastapi
+    gunicorn
+    httpx
+    jinja2
+    lazy-loader
+    platformdirs
+    psutil
+    pydantic
+    python-engineio
+    python-multipart
+    python-socketio
+    redis
+    reflex-chakra
+    reflex-hosting-cli
+    rich
+    sqlmodel
+    starlette-admin
+    tomlkit
+    twine # used in custom_components/custom_components.py
+    typer
+    uvicorn
+    watchdog
+    watchfiles
+    wrapt
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-asyncio
+    pytest-mock
+    attrs
+    numpy
+    plotly
+    pandas
+    pillow
+    unzip
+  ];
+
+  disabledTests = [
+    # Tests touche network
+    "test_find_and_check_urls"
+    "test_event_actions"
+    "test_upload_file"
+    # /proc is too funky in nix sandbox
+    "test_get_cpu_info"
+    # broken
+    "test_potentially_dirty_substates" # AssertionError: Extra items in the left set
+    # flaky
+    "test_preprocess" # KeyError: 'reflex___state____state'
+    "test_send" # AssertionError: Expected 'post' to have been called once. Called 0 times.
+  ];
+
+  disabledTestPaths = [
+    "benchmarks/"
+    "integration/"
+  ];
+
+  pythonImportsCheck = [ "reflex" ];
+
+  meta = with lib; {
+    description = "Web apps in pure Python";
+    homepage = "https://github.com/reflex-dev/reflex";
+    changelog = "https://github.com/reflex-dev/reflex/releases/tag/${src.rev}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ pbsds ];
+    mainProgram = "reflex";
+  };
+}
diff --git a/pkgs/development/python-modules/reflink/default.nix b/pkgs/development/python-modules/reflink/default.nix
index ab7504cf2f312..feb533ee69f00 100644
--- a/pkgs/development/python-modules/reflink/default.nix
+++ b/pkgs/development/python-modules/reflink/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, cffi
-, fetchPypi
-, lib
-, pytestCheckHook
+{
+  buildPythonPackage,
+  cffi,
+  fetchPypi,
+  lib,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/refoss-ha/default.nix b/pkgs/development/python-modules/refoss-ha/default.nix
new file mode 100644
index 0000000000000..e8564038e94e9
--- /dev/null
+++ b/pkgs/development/python-modules/refoss-ha/default.nix
@@ -0,0 +1,34 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "refoss-ha";
+  version = "1.2.4";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "ashionky";
+    repo = "refoss_ha";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-DFP2lEZkjW5L94CnhJS04ydM66gnKzvgpiXOAejs768=";
+  };
+
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "refoss_ha" ];
+
+  # upstream has no tests
+  doCheck = false;
+
+  meta = {
+    changelog = "https://github.com/ashionky/refoss_ha/releases/tag/v${version}";
+    description = "Refoss support for Home Assistant";
+    homepage = "https://github.com/ashionky/refoss_ha";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/regenmaschine/default.nix b/pkgs/development/python-modules/regenmaschine/default.nix
index 9c8cd8053f5f7..9b24dc91f92ff 100644
--- a/pkgs/development/python-modules/regenmaschine/default.nix
+++ b/pkgs/development/python-modules/regenmaschine/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, certifi
-, fetchFromGitHub
-, poetry-core
-, pytest-aiohttp
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  certifi,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     hash = "sha256-RdmK6oK92j4xqLoAjjqlONYu3IfNNWudo4v7jcc+VGU=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -50,9 +49,7 @@ buildPythonPackage rec {
     "examples/"
   ];
 
-  pythonImportsCheck = [
-    "regenmaschine"
-  ];
+  pythonImportsCheck = [ "regenmaschine" ];
 
   __darwinAllowLocalNetworking = true;
 
diff --git a/pkgs/development/python-modules/regex/default.nix b/pkgs/development/python-modules/regex/default.nix
index 0ada0fe50ba22..4434ff860134f 100644
--- a/pkgs/development/python-modules/regex/default.nix
+++ b/pkgs/development/python-modules/regex/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "regex";
-  version = "2023.12.25";
+  version = "2024.5.15";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-KRcaoSjaaa/fS95BLVvtwzXyyo/P5EiQOFd9BfFhgeU=";
+    hash = "sha256-0+4C2eX0gsyDCRNKke6qy90iYboRGw/vN0jutJE+aiw=";
   };
 
   checkPhase = ''
     ${python.interpreter} -m unittest
   '';
 
-  pythonImportsCheck = [
-    "regex"
-  ];
+  pythonImportsCheck = [ "regex" ];
 
   meta = with lib; {
     description = "Alternative regular expression module, to replace re";
diff --git a/pkgs/development/python-modules/regional/default.nix b/pkgs/development/python-modules/regional/default.nix
index ccbfb1cb874aa..ea995ee27a7db 100644
--- a/pkgs/development/python-modules/regional/default.nix
+++ b/pkgs/development/python-modules/regional/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, scipy
-, matplotlib
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  scipy,
+  matplotlib,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,13 +29,9 @@ buildPythonPackage rec {
     scipy
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "regional"
-  ];
+  pythonImportsCheck = [ "regional" ];
 
   disabledTests = [
     "test_dilate"
@@ -46,6 +43,6 @@ buildPythonPackage rec {
     description = "Simple manipualtion and display of spatial regions";
     homepage = "https://github.com/freeman-lab/regional";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/regress/default.nix b/pkgs/development/python-modules/regress/default.nix
index b70e52008778f..e59496b767d12 100644
--- a/pkgs/development/python-modules/regress/default.nix
+++ b/pkgs/development/python-modules/regress/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, stdenv
-, fetchPypi
-, buildPythonPackage
-, rustPlatform
-, libiconv
+{
+  lib,
+  stdenv,
+  fetchPypi,
+  buildPythonPackage,
+  rustPlatform,
+  libiconv,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +18,10 @@ buildPythonPackage rec {
     hash = "sha256-tCrFBjkK6obzaYkYiJ3WQ5yi3KkC86/cbXCSnRRGZu8=";
   };
 
-  nativeBuildInputs = with rustPlatform; [ cargoSetupHook maturinBuildHook ];
+  nativeBuildInputs = with rustPlatform; [
+    cargoSetupHook
+    maturinBuildHook
+  ];
 
   buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
@@ -28,7 +32,7 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "Python bindings to the Rust regress crate, exposing ECMA regular expressions.";
+    description = "Python bindings to the Rust regress crate, exposing ECMA regular expressions";
     homepage = "https://github.com/Julian/regress";
     license = licenses.mit;
     maintainers = [ maintainers.matthiasbeyer ];
diff --git a/pkgs/development/python-modules/reikna/default.nix b/pkgs/development/python-modules/reikna/default.nix
index ad71a2943ea18..95bdca651be5d 100644
--- a/pkgs/development/python-modules/reikna/default.nix
+++ b/pkgs/development/python-modules/reikna/default.nix
@@ -1,14 +1,17 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, sphinx
-, pytest-cov
-, pytest
-, mako
-, numpy
-, funcsigs
-, withCuda ? false, pycuda
-, withOpenCL ? true, pyopencl
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  sphinx,
+  pytest-cov,
+  pytest,
+  mako,
+  numpy,
+  funcsigs,
+  withCuda ? false,
+  pycuda,
+  withOpenCL ? true,
+  pyopencl,
 }:
 
 buildPythonPackage rec {
@@ -21,11 +24,17 @@ buildPythonPackage rec {
     hash = "sha256-fpa1Pfo5EAafg7Pgha17G6k5G13fdErjclv0On/uYyI=";
   };
 
-  nativeCheckInputs = [ sphinx pytest-cov pytest ];
+  nativeCheckInputs = [
+    sphinx
+    pytest-cov
+    pytest
+  ];
 
-  propagatedBuildInputs = [ mako numpy funcsigs ]
-    ++ lib.optional withCuda pycuda
-    ++ lib.optional withOpenCL pyopencl;
+  propagatedBuildInputs = [
+    mako
+    numpy
+    funcsigs
+  ] ++ lib.optional withCuda pycuda ++ lib.optional withOpenCL pyopencl;
 
   checkPhase = ''
     py.test
@@ -38,7 +47,5 @@ buildPythonPackage rec {
     description = "GPGPU algorithms for PyCUDA and PyOpenCL";
     homepage = "https://github.com/fjarri/reikna";
     license = licenses.mit;
-
   };
-
 }
diff --git a/pkgs/development/python-modules/related/default.nix b/pkgs/development/python-modules/related/default.nix
index 8c131e146944e..d36157d818ccc 100644
--- a/pkgs/development/python-modules/related/default.nix
+++ b/pkgs/development/python-modules/related/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, attrs
-, buildPythonPackage
-, fetchPypi
-, future
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, pyyaml
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  fetchPypi,
+  future,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     pyyaml
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     # Remove outdated setup.cfg
@@ -47,9 +46,7 @@ buildPythonPackage rec {
     "test_store_data_from_json"
   ];
 
-  pythonImportsCheck = [
-    "related"
-  ];
+  pythonImportsCheck = [ "related" ];
 
   meta = with lib; {
     description = "Nested Object Models in Python";
diff --git a/pkgs/development/python-modules/relatorio/default.nix b/pkgs/development/python-modules/relatorio/default.nix
index 14460fb9b17b0..458633c1a36a2 100644
--- a/pkgs/development/python-modules/relatorio/default.nix
+++ b/pkgs/development/python-modules/relatorio/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, genshi
-, lxml
-, pyyaml
-, python-magic
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  genshi,
+  lxml,
+  pyyaml,
+  python-magic,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "relatorio";
-  version = "0.10.1";
+  version = "0.10.2";
 
   disabled = pythonOlder "3.5";
 
@@ -19,7 +20,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a0c72302d50d5dfa433ddab191672eec1dde1c6ed26330a378b720e5a3012e23";
+    hash = "sha256-zgCOmcR9FWj0lpi78U0G1CKR5kyNyr541HusIrBpF/Q=";
   };
 
   propagatedBuildInputs = [
@@ -28,20 +29,21 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    chart = [ /* pycha */ pyyaml ];
+    chart = [
+      # pycha
+      pyyaml
+    ];
     fodt = [ python-magic ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.fodt;
+  nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.fodt;
 
   pythonImportsCheck = [ "relatorio" ];
 
   meta = {
     homepage = "https://relatorio.tryton.org/";
     changelog = "https://hg.tryton.org/relatorio/file/${version}/CHANGELOG";
-    description = "A templating library able to output odt and pdf files";
+    description = "Templating library able to output odt and pdf files";
     mainProgram = "relatorio-render";
     maintainers = with lib.maintainers; [ johbo ];
     license = lib.licenses.gpl2Plus;
diff --git a/pkgs/development/python-modules/releases/default.nix b/pkgs/development/python-modules/releases/default.nix
index 05c6d5ae75d00..2db172bdeb5be 100644
--- a/pkgs/development/python-modules/releases/default.nix
+++ b/pkgs/development/python-modules/releases/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, semantic-version
-, sphinx
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  semantic-version,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,10 @@ buildPythonPackage rec {
     substituteInPlace setup.py --replace "semantic_version<2.7" "semantic_version"
   '';
 
-  propagatedBuildInputs = [ semantic-version sphinx ];
+  propagatedBuildInputs = [
+    semantic-version
+    sphinx
+  ];
 
   # Test suite doesn't run. See https://github.com/bitprophet/releases/issues/95.
   doCheck = false;
@@ -29,7 +33,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "releases" ];
 
   meta = with lib; {
-    description = "A Sphinx extension for changelog manipulation";
+    description = "Sphinx extension for changelog manipulation";
     homepage = "https://github.com/bitprophet/releases";
     license = licenses.bsd2;
     maintainers = with maintainers; [ samuela ];
diff --git a/pkgs/development/python-modules/remarshal/default.nix b/pkgs/development/python-modules/remarshal/default.nix
index 0d8829201afc2..dedab0bbc95e8 100644
--- a/pkgs/development/python-modules/remarshal/default.nix
+++ b/pkgs/development/python-modules/remarshal/default.nix
@@ -1,20 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonRelaxDepsHook
-
-# build deps
-, poetry-core
-
-# propagates
-, cbor2
-, python-dateutil
-, pyyaml
-, tomlkit
-, u-msgpack-python
-
-# tested using
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build deps
+  poetry-core,
+
+  # propagates
+  cbor2,
+  python-dateutil,
+  pyyaml,
+  tomlkit,
+  u-msgpack-python,
+
+  # tested using
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -31,12 +31,9 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "pytest"
-  ];
+  pythonRelaxDeps = [ "pytest" ];
 
   propagatedBuildInputs = [
     cbor2
@@ -46,9 +43,7 @@ buildPythonPackage rec {
     u-msgpack-python
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     changelog = "https://github.com/remarshal-project/remarshal/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/remi/default.nix b/pkgs/development/python-modules/remi/default.nix
index 64b6a70669743..909523d7ffc8e 100644
--- a/pkgs/development/python-modules/remi/default.nix
+++ b/pkgs/development/python-modules/remi/default.nix
@@ -1,12 +1,12 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
-, matplotlib
-, python-snap7
-, opencv4
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  matplotlib,
+  python-snap7,
+  opencv4,
 }:
 
 buildPythonPackage rec {
@@ -16,7 +16,7 @@ buildPythonPackage rec {
 
   src = fetchFromGitHub {
     owner = "rawpython";
-    repo = pname;
+    repo = "remi";
     rev = version;
     hash = "sha256-VQn+Uzp6oGSit8ot0e8B0C2N41Q8+J+o91skyVN1gDA=";
   };
@@ -41,8 +41,10 @@ buildPythonPackage rec {
         "self.assertEqual("
   '';
 
-  nativeBuildInputs = [
-    setuptools
+  build-system = [ setuptools ];
+
+  dependencies = [
+    setuptools # pkg_resources is referenced at runtime
   ];
 
   nativeCheckInputs = [
@@ -58,10 +60,10 @@ buildPythonPackage rec {
     "editor.widgets"
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Pythonic, lightweight and websocket-based webui library";
     homepage = "https://github.com/rawpython/remi";
-    license = with licenses; [ asl20 ];
-    maintainers = with maintainers; [ pbsds ];
+    license = with lib.licenses; [ asl20 ];
+    maintainers = with lib.maintainers; [ pbsds ];
   };
 }
diff --git a/pkgs/development/python-modules/remote-pdb/default.nix b/pkgs/development/python-modules/remote-pdb/default.nix
index 5081c34c3c464..c17f48d451554 100644
--- a/pkgs/development/python-modules/remote-pdb/default.nix
+++ b/pkgs/development/python-modules/remote-pdb/default.nix
@@ -1,4 +1,8 @@
-{ buildPythonPackage, fetchFromGitHub, lib }:
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+}:
 buildPythonPackage rec {
   pname = "remote-pdb";
   version = "2.1.0";
@@ -10,7 +14,7 @@ buildPythonPackage rec {
     hash = "sha256-/7RysJOJigU4coC6d/Ob2lrtw8u8nLZI8wBk4oEEY3g=";
   };
   meta = with lib; {
-    description = "Remote vanilla PDB (over TCP sockets).";
+    description = "Remote vanilla PDB (over TCP sockets)";
     homepage = "https://github.com/ionelmc/python-remote-pdb";
     license = licenses.bsd2;
     maintainers = with maintainers; [ mic92 ];
diff --git a/pkgs/development/python-modules/remotezip/default.nix b/pkgs/development/python-modules/remotezip/default.nix
index ec81726cd243f..a362f99324aac 100644
--- a/pkgs/development/python-modules/remotezip/default.nix
+++ b/pkgs/development/python-modules/remotezip/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, requests
-, tabulate
-, pytestCheckHook
-, requests-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  requests,
+  pytestCheckHook,
+  requests-mock,
 }:
 
 buildPythonPackage rec {
@@ -20,22 +20,16 @@ buildPythonPackage rec {
     hash = "sha256-TNEM7Dm4iH4Z/P/PAqjJppbn1CKmyi9Xpq/sU9O8uxg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     pytestCheckHook
     requests-mock
   ];
 
-  pythonImportsCheck = [
-    "remotezip"
-  ];
+  pythonImportsCheck = [ "remotezip" ];
 
   meta = with lib; {
     description = "Python module to access single members of a zip archive without downloading the full content";
diff --git a/pkgs/development/python-modules/renault-api/default.nix b/pkgs/development/python-modules/renault-api/default.nix
index 61362a5021f61..5a932562f5734 100644
--- a/pkgs/development/python-modules/renault-api/default.nix
+++ b/pkgs/development/python-modules/renault-api/default.nix
@@ -19,33 +19,28 @@
 
 buildPythonPackage rec {
   pname = "renault-api";
-  version = "0.2.2";
-  format = "pyproject";
+  version = "0.2.7";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "hacf-fr";
     repo = "renault-api";
     rev = "refs/tags/v${version}";
-    hash = "sha256-FZ1VNO8gEH7HJRu9EVuKIwSQbceG720tCVqAPqHwISQ=";
+    hash = "sha256-tke2bE+djV1N70meMOytYmbPmYDN8fU+Da81Mf6nNAI=";
   };
 
   build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     cryptography
     marshmallow-dataclass
     pyjwt
   ];
 
-  dependencies = [
-    aioresponses
-    pytest-asyncio
-  ];
-
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     cli = [
       click
       dateparser
@@ -54,11 +49,11 @@ buildPythonPackage rec {
   };
 
   nativeCheckInputs = [
+    aioresponses
+    pytest-asyncio
     pytestCheckHook
     typeguard
-  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
-
-  pytestFlagsArray = [ "--asyncio-mode=auto" ];
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
   pythonImportsCheck = [ "renault_api" ];
 
diff --git a/pkgs/development/python-modules/rencode/default.nix b/pkgs/development/python-modules/rencode/default.nix
index ffbe1ef8967af..388e7ec9cd810 100644
--- a/pkgs/development/python-modules/rencode/default.nix
+++ b/pkgs/development/python-modules/rencode/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cython
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cython,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [ cython ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     # import from $out
@@ -33,6 +32,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/aresch/rencode";
     description = "Fast (basic) object serialization similar to bencode";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/renson-endura-delta/default.nix b/pkgs/development/python-modules/renson-endura-delta/default.nix
index 013678d5eeec9..03914c36dba2a 100644
--- a/pkgs/development/python-modules/renson-endura-delta/default.nix
+++ b/pkgs/development/python-modules/renson-endura-delta/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -27,22 +28,16 @@ buildPythonPackage rec {
       --replace "'pytest-runner'" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     pytestCheckHook
     requests-mock
   ];
 
-  pythonImportsCheck = [
-    "renson_endura_delta"
-  ];
+  pythonImportsCheck = [ "renson_endura_delta" ];
 
   meta = with lib; {
     description = "Module to interact with Renson endura delta";
diff --git a/pkgs/development/python-modules/reolink-aio/default.nix b/pkgs/development/python-modules/reolink-aio/default.nix
index b1fb08c4bdf33..d3ffb497799b0 100644
--- a/pkgs/development/python-modules/reolink-aio/default.nix
+++ b/pkgs/development/python-modules/reolink-aio/default.nix
@@ -1,42 +1,39 @@
-{ lib
-, aiohttp
-, aiortsp
-, buildPythonPackage
-, fetchFromGitHub
-, orjson
-, pythonOlder
-, setuptools
-, typing-extensions
+{
+  lib,
+  aiohttp,
+  aiortsp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  orjson,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "reolink-aio";
-  version = "0.8.9";
+  version = "0.9.11";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "starkillerOG";
     repo = "reolink_aio";
     rev = "refs/tags/${version}";
-    hash = "sha256-MUhB8A51dj+FA3+lvBrFyAWizKq5CpYwo38E1euJsHs=";
+    hash = "sha256-xIN6ioX02YgzY3sh3l7rFT6UQCMnzlrX/CJj483G6ig=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     aiortsp
     orjson
     typing-extensions
   ];
 
-  pythonImportsCheck = [
-    "reolink_aio"
-  ];
+  pythonImportsCheck = [ "reolink_aio" ];
 
   # All tests require a network device
   doCheck = false;
@@ -45,7 +42,7 @@ buildPythonPackage rec {
     description = "Module to interact with the Reolink IP camera API";
     homepage = "https://github.com/starkillerOG/reolink_aio";
     changelog = "https://github.com/starkillerOG/reolink_aio/releases/tag/${version}";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/reolink/default.nix b/pkgs/development/python-modules/reolink/default.nix
index 06143c2922f44..c05b83b06dea7 100644
--- a/pkgs/development/python-modules/reolink/default.nix
+++ b/pkgs/development/python-modules/reolink/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, aiohttp
-, aiounittest
-, buildPythonPackage
-, fetchFromGitHub
-, ffmpeg-python
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  lib,
+  aiohttp,
+  aiounittest,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ffmpeg-python,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -43,9 +44,7 @@ buildPythonPackage rec {
   # https://github.com/fwestenberg/reolink/issues/83
   doCheck = false;
 
-  pytestFlagsArray = [
-    "test.py"
-  ];
+  pytestFlagsArray = [ "test.py" ];
 
   disabledTests = [
     # Tests require network access
@@ -56,9 +55,7 @@ buildPythonPackage rec {
     "test_succes"
   ];
 
-  pythonImportsCheck = [
-    "reolink"
-  ];
+  pythonImportsCheck = [ "reolink" ];
 
   meta = with lib; {
     description = "Module to interact with the Reolink IP camera API";
diff --git a/pkgs/development/python-modules/reorder-python-imports/default.nix b/pkgs/development/python-modules/reorder-python-imports/default.nix
index b00896c801f0d..06201690ea5ee 100644
--- a/pkgs/development/python-modules/reorder-python-imports/default.nix
+++ b/pkgs/development/python-modules/reorder-python-imports/default.nix
@@ -1,49 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, aspy-refactor-imports
-, classify-imports
+{
+  lib,
+  buildPythonPackage,
+  classify-imports,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "reorder-python-imports";
-  version = "3.12.0";
-  format = "setuptools";
+  version = "3.13.0";
+  pyproject = true;
+
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "asottile";
     repo = "reorder_python_imports";
-    rev = "v${version}";
-    hash = "sha256-bKv9APbraR2359IzzkzXs4sEXrTvGK3J4LO3wFHOti0=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-N0hWrrUeojlUDZx2Azs/y2kCaknQ62hHdp0J2ZXPElY=";
   };
 
-  propagatedBuildInputs = [
-    aspy-refactor-imports
-    classify-imports
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ classify-imports ];
 
-  pythonImportsCheck = [
-    "reorder_python_imports"
-  ];
+  pythonImportsCheck = [ "reorder_python_imports" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # prints an explanation about PYTHONPATH first
   # and therefore fails the assertion
-  disabledTests = [
-    "test_success_messages_are_printed_on_stderr"
-  ];
+  disabledTests = [ "test_success_messages_are_printed_on_stderr" ];
 
   meta = with lib; {
     description = "Tool for automatically reordering python imports";
-    mainProgram = "reorder-python-imports";
     homepage = "https://github.com/asottile/reorder_python_imports";
     license = licenses.mit;
     maintainers = with maintainers; [ gador ];
+    mainProgram = "reorder-python-imports";
   };
 }
diff --git a/pkgs/development/python-modules/reparser/default.nix b/pkgs/development/python-modules/reparser/default.nix
index fe0befde9db1b..4ea2dab3e785c 100644
--- a/pkgs/development/python-modules/reparser/default.nix
+++ b/pkgs/development/python-modules/reparser/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, isPy27
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  isPy27,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/repath/default.nix b/pkgs/development/python-modules/repath/default.nix
index b052b408e9f4c..88eb3ad0c3a2f 100644
--- a/pkgs/development/python-modules/repath/default.nix
+++ b/pkgs/development/python-modules/repath/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -14,16 +15,12 @@ buildPythonPackage rec {
     hash = "sha256-gpITm6xqDkP9nXBgXU6NrrJdRmcuSE7TGiTHzgrvD7c=";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
-  pythonImportsCheck = [
-    "repath"
-  ];
+  pythonImportsCheck = [ "repath" ];
 
   meta = {
-    description = "A port of the node module path-to-regexp to Python";
+    description = "Port of the node module path-to-regexp to Python";
     homepage = "https://github.com/nickcoutsos/python-repath";
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.heyimnova ];
diff --git a/pkgs/development/python-modules/repeated-test/default.nix b/pkgs/development/python-modules/repeated-test/default.nix
index f87d5cdc782c6..3a3531458eed3 100644
--- a/pkgs/development/python-modules/repeated-test/default.nix
+++ b/pkgs/development/python-modules/repeated-test/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools-scm
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools-scm,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,17 +20,11 @@ buildPythonPackage rec {
     hash = "sha256-3YPU8SL9rud5s0pnwwH5TJk1MXsDhdkDnZp/Oj6sgXs=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "repeated_test"
-  ];
+  pythonImportsCheck = [ "repeated_test" ];
 
   meta = with lib; {
     description = "Unittest-compatible framework for repeating a test function over many fixtures";
diff --git a/pkgs/development/python-modules/repl-python-wakatime/default.nix b/pkgs/development/python-modules/repl-python-wakatime/default.nix
new file mode 100644
index 0000000000000..72bdb809a8cb6
--- /dev/null
+++ b/pkgs/development/python-modules/repl-python-wakatime/default.nix
@@ -0,0 +1,52 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  ipython,
+  keyring,
+  ptpython,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-generate,
+  setuptools-scm,
+}:
+
+buildPythonPackage rec {
+  pname = "repl-python-wakatime";
+  version = "0.0.11";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-HoCdeo03Lf3g5Xg0GgAyWOu2PtGqy33vg5bQrfkEPkE=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+    setuptools-generate
+  ];
+
+  dependencies = [
+    ptpython
+    ipython
+  ];
+
+  nativeCheckInputs = [
+    keyring
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "repl_python_wakatime" ];
+
+  meta = with lib; {
+    description = "Python REPL plugin for automatic time tracking and metrics generated from your programming activity";
+    homepage = "https://github.com/wakatime/repl-python-wakatime";
+    changelog = "https://github.com/wakatime/repl-python-wakatime/releases/tag/${version}";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ jfvillablanca ];
+  };
+}
diff --git a/pkgs/development/python-modules/repocheck/default.nix b/pkgs/development/python-modules/repocheck/default.nix
index 9b73dabf027ef..d5df17ae89fdd 100644
--- a/pkgs/development/python-modules/repocheck/default.nix
+++ b/pkgs/development/python-modules/repocheck/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
@@ -21,5 +22,4 @@ buildPythonPackage rec {
     mainProgram = "repocheck";
     license = licenses.gpl3Plus;
   };
-
 }
diff --git a/pkgs/development/python-modules/reportengine/default.nix b/pkgs/development/python-modules/reportengine/default.nix
deleted file mode 100644
index 79e1a908f7ebb..0000000000000
--- a/pkgs/development/python-modules/reportengine/default.nix
+++ /dev/null
@@ -1,53 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit
-, jinja2
-, ruamel-yaml
-, matplotlib
-, pandas
-, pandoc
-, pygments
-, blessings
-, curio
-, hypothesis
-, pytestCheckHook
-}:
-
-buildPythonPackage rec {
-  pname = "reportengine";
-  version = "0.31";
-  format = "pyproject";
-
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-jrt+ml8o1PUidV1bY0hCyNgcPaVTBloW574/i5Pl7iE=";
-  };
-
-  nativeBuildInputs = [ flit ];
-
-  propagatedBuildInputs = [
-    jinja2
-    ruamel-yaml
-    matplotlib
-    pandas
-    pygments
-    blessings
-    curio
-  ];
-
-  nativeCheckInputs = [
-    hypothesis
-    pandoc
-    pytestCheckHook
-  ];
-
-  pythonImportsCheck = [ "reportengine" ];
-
-  meta = with lib; {
-    description = "A framework for declarative data analysis";
-    homepage = "https://github.com/NNPDF/reportengine/";
-    license = with licenses; [ gpl2Only ];
-    maintainers = with maintainers; [ veprbl ];
-  };
-}
diff --git a/pkgs/development/python-modules/reportlab-qrcode/default.nix b/pkgs/development/python-modules/reportlab-qrcode/default.nix
new file mode 100644
index 0000000000000..b540fd219caf7
--- /dev/null
+++ b/pkgs/development/python-modules/reportlab-qrcode/default.nix
@@ -0,0 +1,50 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  wheel,
+  qrcode,
+  reportlab,
+  pillow,
+  pytest,
+  pyzbar,
+}:
+
+buildPythonPackage rec {
+  pname = "reportlab-qrcode";
+  version = "0.1.6";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-m/oeuA797MEBOJBIG157VIa7TbEbRRVK/O8Arz/oO/o=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+    wheel
+  ];
+
+  propagatedBuildInputs = [
+    qrcode
+    reportlab
+  ];
+
+  passthru.optional-dependencies = {
+    testing = [
+      pillow
+      pytest
+      pyzbar
+    ];
+  };
+
+  pythonImportsCheck = [ "reportlab_qrcode" ];
+
+  meta = with lib; {
+    description = "Allows to create QR codes for use with the ReportLab PDF library";
+    homepage = "https://pypi.org/project/reportlab-qrcode/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ xanderio ];
+  };
+}
diff --git a/pkgs/development/python-modules/reportlab/default.nix b/pkgs/development/python-modules/reportlab/default.nix
index ef0a575789e75..186b02c60375c 100644
--- a/pkgs/development/python-modules/reportlab/default.nix
+++ b/pkgs/development/python-modules/reportlab/default.nix
@@ -1,20 +1,24 @@
-{ lib
-, buildPythonPackage
-, chardet
-, fetchPypi
-, freetype
-, pillow
-, setuptools
-, glibcLocales
-, python
-, isPyPy
+{
+  lib,
+  buildPythonPackage,
+  chardet,
+  fetchPypi,
+  freetype,
+  pillow,
+  setuptools,
+  glibcLocales,
+  python,
+  isPyPy,
 }:
 
 let
-  ft = freetype.overrideAttrs (oldArgs: { dontDisableStatic = true; });
-in buildPythonPackage rec {
+  ft = freetype.overrideAttrs (oldArgs: {
+    dontDisableStatic = true;
+  });
+in
+buildPythonPackage rec {
   pname = "reportlab";
-  version = "4.1.0";
+  version = "4.2.2";
   pyproject = true;
 
   # See https://bitbucket.org/pypy/compatibility/wiki/reportlab%20toolkit
@@ -22,7 +26,7 @@ in buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Opn69BJpEVnAaLP/AcFTB84v0s9rhgGZQ0h04AIECoQ=";
+    hash = "sha256-dl7svdaEkcVpR+KcOLi2m4NO5du90vt0CfCOvevwRCg=";
   };
 
   postPatch = ''
@@ -36,22 +40,16 @@ in buildPythonPackage rec {
     rm tests/test_graphics_charts.py
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  buildInputs = [
-    ft
-  ];
+  buildInputs = [ ft ];
 
   propagatedBuildInputs = [
     chardet
     pillow
   ];
 
-  nativeCheckInputs = [
-    glibcLocales
-  ];
+  nativeCheckInputs = [ glibcLocales ];
 
   checkPhase = ''
     runHook preCheck
@@ -62,9 +60,9 @@ in buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "An Open Source Python library for generating PDFs and graphics";
+    description = "Open Source Python library for generating PDFs and graphics";
     homepage = "https://www.reportlab.com/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/repoze-lru/default.nix b/pkgs/development/python-modules/repoze-lru/default.nix
index ef8ecba935ed6..1fbfd29947366 100644
--- a/pkgs/development/python-modules/repoze-lru/default.nix
+++ b/pkgs/development/python-modules/repoze-lru/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,17 +17,11 @@ buildPythonPackage rec {
     hash = "sha256-BCmnXhk4Dk7VDAaU4mrIgZtOp4Ue4fx1g8hXLbgK/3c=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "repoze/lru/tests.py"
-  ];
+  pytestFlagsArray = [ "repoze/lru/tests.py" ];
 
   disabledTests = [
     # time sensitive tests
@@ -39,7 +34,7 @@ buildPythonPackage rec {
   pythonNamespaces = [ "repoze" ];
 
   meta = with lib; {
-    description = "A tiny LRU cache implementation and decorator";
+    description = "Tiny LRU cache implementation and decorator";
     homepage = "http://www.repoze.org/";
     changelog = "https://github.com/repoze/repoze.lru/blob/${version}/CHANGES.rst";
     license = licenses.bsd0;
diff --git a/pkgs/development/python-modules/repoze-sphinx-autointerface/default.nix b/pkgs/development/python-modules/repoze-sphinx-autointerface/default.nix
index 879a18e3d4a71..ca7c14c1e2d90 100644
--- a/pkgs/development/python-modules/repoze-sphinx-autointerface/default.nix
+++ b/pkgs/development/python-modules/repoze-sphinx-autointerface/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, pytestCheckHook
-, zope-interface
-, zope-testrunner
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  pytestCheckHook,
+  zope-interface,
+  zope-testrunner,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-SGvxQjpGlrkVPkiM750ybElv/Bbd6xSwyYh7RsYOKKE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     zope-interface
@@ -36,9 +35,7 @@ buildPythonPackage rec {
     zope-testrunner
   ];
 
-  pythonImportsCheck = [
-    "repoze.sphinx.autointerface"
-  ];
+  pythonImportsCheck = [ "repoze.sphinx.autointerface" ];
 
   pythonNamespaces = [
     "repoze"
diff --git a/pkgs/development/python-modules/repoze-who/default.nix b/pkgs/development/python-modules/repoze-who/default.nix
index 07d6de4e67e68..6616b1c1e027d 100644
--- a/pkgs/development/python-modules/repoze-who/default.nix
+++ b/pkgs/development/python-modules/repoze-who/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, zope-interface
-, webob
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  zope-interface,
+  webob,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,25 +19,22 @@ buildPythonPackage rec {
     hash = "sha256-6VWt8AwfCwxxXoKJeaI37Ev37nCCe9l/Xhe/gnYNyzA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
-
-  propagatedBuildInputs = [ zope-interface webob ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
+  propagatedBuildInputs = [
+    zope-interface
+    webob
   ];
 
+  nativeCheckInputs = [ pytestCheckHook ];
+
   # skip failing test
   # OSError: [Errno 22] Invalid argument
   preCheck = ''
     rm repoze/who/plugins/tests/test_htpasswd.py
   '';
 
-  pythonImportsCheck = [
-    "repoze.who"
-  ];
+  pythonImportsCheck = [ "repoze.who" ];
 
   pythonNamespaces = [
     "repoze"
@@ -49,6 +47,6 @@ buildPythonPackage rec {
     homepage = "http://www.repoze.org";
     changelog = "https://github.com/repoze/repoze.who/blob/${version}/CHANGES.rst";
     license = licenses.bsd0;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/reproject/default.nix b/pkgs/development/python-modules/reproject/default.nix
index ff6e3070cf7e0..48fec33e8cd13 100644
--- a/pkgs/development/python-modules/reproject/default.nix
+++ b/pkgs/development/python-modules/reproject/default.nix
@@ -1,45 +1,45 @@
-{ lib
-, astropy
-, astropy-extension-helpers
-, astropy-healpix
-, buildPythonPackage
-, cloudpickle
-, cython
-, dask
-, fetchPypi
-, fsspec
-, numpy
-, oldest-supported-numpy
-, pytest-astropy
-, pytestCheckHook
-, pythonOlder
-, scipy
-, setuptools-scm
-, zarr
+{
+  lib,
+  astropy,
+  astropy-extension-helpers,
+  astropy-healpix,
+  buildPythonPackage,
+  cloudpickle,
+  cython,
+  dask,
+  fetchPypi,
+  fsspec,
+  numpy,
+  pytest-astropy,
+  pytestCheckHook,
+  pythonOlder,
+  scipy,
+  setuptools-scm,
+  zarr,
 }:
 
 buildPythonPackage rec {
   pname = "reproject";
-  version = "0.13.0";
+  version = "0.14.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-lL6MkKVSWmV6KPkG/9fjc2c2dFQ14i9fiJAr3VFfcuI=";
+    hash = "sha256-3TxPd2CEmKWDlE1nC2GnXBUASe/DNgZnS1GJoRo5u8A=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "cython==" "cython>="
+      --replace "cython==" "cython>=" \
+      --replace "numpy>=2.0.0rc1" "numpy"
   '';
 
   nativeBuildInputs = [
     astropy-extension-helpers
     cython
     numpy
-    oldest-supported-numpy
     setuptools-scm
   ];
 
@@ -65,11 +65,11 @@ buildPythonPackage rec {
     "-p no:warnings"
     # Uses network
     "--ignore build/lib*/reproject/interpolation/"
+    # prevent "'filterwarnings' not found in `markers` configuration option" error
+    "-o 'markers=filterwarnings'"
   ];
 
-  pythonImportsCheck = [
-    "reproject"
-  ];
+  pythonImportsCheck = [ "reproject" ];
 
   meta = with lib; {
     description = "Reproject astronomical images";
diff --git a/pkgs/development/python-modules/reprshed/default.nix b/pkgs/development/python-modules/reprshed/default.nix
index 1aa9469aab29c..fb05ed5726250 100644
--- a/pkgs/development/python-modules/reprshed/default.nix
+++ b/pkgs/development/python-modules/reprshed/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
@@ -15,13 +16,11 @@ buildPythonPackage rec {
     hash = "sha256-XfmiewI74eDLKTAU6Ed76QXfJYMRb+idRACl6CW07ME=";
   };
 
-  pythonImportsCheck = [
-    "reprshed"
-  ];
+  pythonImportsCheck = [ "reprshed" ];
 
   meta = with lib; {
     homepage = "https://github.com/mentalisttraceur/python-reprshed";
-    description = "A toolshed for writing great __repr__ methods quickly and easily";
+    description = "Toolshed for writing great __repr__ methods quickly and easily";
     license = licenses.bsd0;
     maintainers = with maintainers; [ netali ];
   };
diff --git a/pkgs/development/python-modules/reptor/default.nix b/pkgs/development/python-modules/reptor/default.nix
index a9051dc3eb5fb..09a1c303c5208 100644
--- a/pkgs/development/python-modules/reptor/default.nix
+++ b/pkgs/development/python-modules/reptor/default.nix
@@ -13,12 +13,9 @@
   markdown-it-py,
   mdurl,
   pygments,
-  pytest,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
   pyyaml,
-  reptor,
   requests,
   rich,
   setuptools,
@@ -33,23 +30,22 @@
 
 buildPythonPackage rec {
   pname = "reptor";
-  version = "0.19";
+  version = "0.23";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "Syslifters";
     repo = "reptor";
     rev = "refs/tags/${version}";
-    hash = "sha256-7ZmMG1Fil8/JAks50baT/p1H7wHjap58+i81/DFlSAk=";
+    hash = "sha256-IZjPdfg6q5uWEpvQE3djekvChcB7HWbbPqAv/0tu6fM=";
   };
 
   pythonRelaxDeps = true;
 
   build-system = [ setuptools ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     asgiref
@@ -102,10 +98,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Module to do automated pentest reporting with SysReptor";
-    mainProgram = "reptor";
     homepage = "https://github.com/Syslifters/reptor";
     changelog = "https://github.com/Syslifters/reptor/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "reptor";
   };
 }
diff --git a/pkgs/development/python-modules/reqif/default.nix b/pkgs/development/python-modules/reqif/default.nix
index 0a13af92ee51f..7548fb3c6f84b 100644
--- a/pkgs/development/python-modules/reqif/default.nix
+++ b/pkgs/development/python-modules/reqif/default.nix
@@ -1,20 +1,20 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, jinja2
-, lxml
-, pytestCheckHook
-, python
-, pythonOlder
-, pythonRelaxDepsHook
-, xmlschema
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  jinja2,
+  lxml,
+  pytestCheckHook,
+  python,
+  pythonOlder,
+  xmlschema,
 }:
 
 buildPythonPackage rec {
   pname = "reqif";
-  version = "0.0.40";
+  version = "0.0.42";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "strictdoc-project";
     repo = "reqif";
     rev = "refs/tags/${version}";
-    hash = "sha256-VQvwynFv/DN5RHT00rxtDcJ9wsEpKdsh3rdyUakBr2Q=";
+    hash = "sha256-cQhis7jrcly3cw2LRv7hpPBFAB0Uag69czf+wJvbh/Q=";
   };
 
   postPatch = ''
@@ -34,7 +34,6 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     hatchling
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -44,13 +43,9 @@ buildPythonPackage rec {
     xmlschema
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "reqif"
-  ];
+  pythonImportsCheck = [ "reqif" ];
 
   meta = with lib; {
     description = "Python library for ReqIF format";
diff --git a/pkgs/development/python-modules/requests-aws4auth/default.nix b/pkgs/development/python-modules/requests-aws4auth/default.nix
index 9ce588e3206b2..8e5218dc7dbdd 100644
--- a/pkgs/development/python-modules/requests-aws4auth/default.nix
+++ b/pkgs/development/python-modules/requests-aws4auth/default.nix
@@ -1,46 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, httpx
-, pytestCheckHook
-, python
-, pythonOlder
-, requests
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpx,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "requests-aws4auth";
-  version = "1.2.3";
-  format = "setuptools";
+  version = "1.3.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "tedder";
-    repo = pname;
+    repo = "requests-aws4auth";
     rev = "refs/tags/v${version}";
-    hash = "sha256-9ySuX7eKrSwgxgFoMdnVTsIfpnm9kVcI9AqSb+AsVaU=";
+    hash = "sha256-tRo38fdWqZmutGhWv8Hks+oFaLv770RlAHYgS3S6xJA=";
   };
 
-  propagatedBuildInputs = [
-    requests
-    six
-  ];
+  build-system = [ setuptools ];
 
-  passthru.optional-dependencies = {
-    httpx = [
-      httpx
-    ];
+  dependencies = [ requests ];
+
+  optional-dependencies = {
+    httpx = [ httpx ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.httpx;
+  nativeCheckInputs = [ pytestCheckHook ] ++ optional-dependencies.httpx;
 
-  pythonImportsCheck = [
-    "requests_aws4auth"
-  ];
+  pythonImportsCheck = [ "requests_aws4auth" ];
 
   meta = with lib; {
     description = "Amazon Web Services version 4 authentication for the Python Requests library";
diff --git a/pkgs/development/python-modules/requests-cache/default.nix b/pkgs/development/python-modules/requests-cache/default.nix
index 1e4b0299be290..3df15dd5ca4e1 100644
--- a/pkgs/development/python-modules/requests-cache/default.nix
+++ b/pkgs/development/python-modules/requests-cache/default.nix
@@ -1,37 +1,38 @@
-{ lib
-, attrs
-, buildPythonPackage
-, bson
-, boto3
-, botocore
-, cattrs
-, fetchFromGitHub
-, itsdangerous
-, platformdirs
-, poetry-core
-, psutil
-, pymongo
-, pytestCheckHook
-, pytest-rerunfailures
-, pytest-xdist
-, pythonOlder
-, pyyaml
-, redis
-, requests
-, requests-mock
-, responses
-, rich
-, tenacity
-, time-machine
-, timeout-decorator
-, ujson
-, urllib3
-, url-normalize
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  bson,
+  boto3,
+  botocore,
+  cattrs,
+  fetchFromGitHub,
+  itsdangerous,
+  platformdirs,
+  poetry-core,
+  psutil,
+  pymongo,
+  pytestCheckHook,
+  pytest-rerunfailures,
+  pytest-xdist,
+  pythonOlder,
+  pyyaml,
+  redis,
+  requests,
+  requests-mock,
+  responses,
+  rich,
+  tenacity,
+  time-machine,
+  timeout-decorator,
+  ujson,
+  urllib3,
+  url-normalize,
 }:
 
 buildPythonPackage rec {
   pname = "requests-cache";
-  version = "1.2.0";
+  version = "1.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -40,12 +41,10 @@ buildPythonPackage rec {
     owner = "requests-cache";
     repo = "requests-cache";
     rev = "refs/tags/v${version}";
-    hash = "sha256-w1ptKi/MH3kGZxLMUNq/Gs6btGx+n2fG4nfQUXCXmiY=";
+    hash = "sha256-juRCcBUr+Ko6kVPpUapwRbUGqWLKaRiCqppOc3S5FMU=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     attrs
@@ -61,24 +60,12 @@ buildPythonPackage rec {
       boto3
       botocore
     ];
-    mongodbo = [
-      pymongo
-    ];
-    redis = [
-      redis
-    ];
-    bson = [
-      bson
-    ];
-    json = [
-      ujson
-    ];
-    security = [
-      itsdangerous
-    ];
-    yaml = [
-      pyyaml
-    ];
+    mongodbo = [ pymongo ];
+    redis = [ redis ];
+    bson = [ bson ];
+    json = [ ujson ];
+    security = [ itsdangerous ];
+    yaml = [ pyyaml ];
   };
 
   nativeCheckInputs = [
@@ -92,9 +79,7 @@ buildPythonPackage rec {
     tenacity
     time-machine
     timeout-decorator
-  ]
-  ++ passthru.optional-dependencies.json
-  ++ passthru.optional-dependencies.security;
+  ] ++ passthru.optional-dependencies.json ++ passthru.optional-dependencies.security;
 
   preCheck = ''
     export HOME=$(mktemp -d);
@@ -113,9 +98,7 @@ buildPythonPackage rec {
     "test_stale_if_error__error_code"
   ];
 
-  pythonImportsCheck = [
-    "requests_cache"
-  ];
+  pythonImportsCheck = [ "requests_cache" ];
 
   meta = with lib; {
     description = "Persistent cache for requests library";
diff --git a/pkgs/development/python-modules/requests-credssp/default.nix b/pkgs/development/python-modules/requests-credssp/default.nix
index 8c7dfc3aee8d5..f6be7b9908f28 100644
--- a/pkgs/development/python-modules/requests-credssp/default.nix
+++ b/pkgs/development/python-modules/requests-credssp/default.nix
@@ -1,13 +1,12 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, gssapi
-, krb5
-, pyspnego
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  pyspnego,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -30,21 +29,13 @@ buildPythonPackage rec {
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   passthru.optional-dependencies = {
-    kerberos = [
-      # pyspnego[kerberos] will have those two dependencies
-      gssapi
-      krb5
-    ];
+    kerberos = pyspnego.optional-dependencies.kerberos;
   };
 
-  pythonImportsCheck = [
-    "requests_credssp"
-  ];
+  pythonImportsCheck = [ "requests_credssp" ];
 
   meta = with lib; {
     description = "HTTPS CredSSP authentication with the requests library";
diff --git a/pkgs/development/python-modules/requests-download/default.nix b/pkgs/development/python-modules/requests-download/default.nix
index 8a09dabbaf13b..63390f71e1fd4 100644
--- a/pkgs/development/python-modules/requests-download/default.nix
+++ b/pkgs/development/python-modules/requests-download/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/requests-file/default.nix b/pkgs/development/python-modules/requests-file/default.nix
index 294c3c76d872b..80c72a0b46141 100644
--- a/pkgs/development/python-modules/requests-file/default.nix
+++ b/pkgs/development/python-modules/requests-file/default.nix
@@ -1,20 +1,26 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, requests
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "requests-file";
-  version = "2.0.0";
+  version = "2.1.0";
   pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-IMWTFinFWP2lZsrMEM/izVAkM+Yo9WjDTIDZagzJWXI=";
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "dashea";
+    repo = "requests-file";
+    rev = "refs/tags/${version}";
+    hash = "sha256-JtdtE44yiw2mLMZ0bJv0QiGWb7f8ywPLF7+BUufh/g4=";
   };
 
   build-system = [
@@ -22,22 +28,17 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  dependencies = [ requests ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "requests_file"
-  ];
+  pythonImportsCheck = [ "requests_file" ];
 
   meta = with lib; {
     description = "Transport adapter for fetching file:// URLs with the requests python library";
     homepage = "https://github.com/dashea/requests-file";
+    changelog = "https://github.com/dashea/requests-file/blob/${version}/CHANGES.rst";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/requests-futures/default.nix b/pkgs/development/python-modules/requests-futures/default.nix
index b2f1aab469886..e370ec6f846fd 100644
--- a/pkgs/development/python-modules/requests-futures/default.nix
+++ b/pkgs/development/python-modules/requests-futures/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -14,19 +15,15 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-9VpO+ABw4oWOfR5zEj0r+uryW5P9NDhNjd8UjitnY3M=";
+    hash = "sha256-9VpO+ABw4oWOfR5zEj0r+uryW5P9NDhNjd8UjitnY3M=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Tests are disabled because they require being online
   doCheck = false;
 
-  pythonImportsCheck = [
-    "requests_futures"
-  ];
+  pythonImportsCheck = [ "requests_futures" ];
 
   meta = with lib; {
     description = "Asynchronous Python HTTP Requests for Humans using Futures";
diff --git a/pkgs/development/python-modules/requests-gssapi/default.nix b/pkgs/development/python-modules/requests-gssapi/default.nix
index 68cd617618549..de1c0e5fd3888 100644
--- a/pkgs/development/python-modules/requests-gssapi/default.nix
+++ b/pkgs/development/python-modules/requests-gssapi/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, gssapi
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  gssapi,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,25 +21,19 @@ buildPythonPackage rec {
     hash = "sha256-TVK/jCqiqCkTDvzKhcFJQ/3QqnVFWquYWyuHJhWcIMo=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     gssapi
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportCheck = [
-    "requests_gssapi"
-  ];
+  pythonImportsCheck = [ "requests_gssapi" ];
 
   meta = with lib; {
-    description = "A GSSAPI authentication handler for python-requests";
+    description = "GSSAPI authentication handler for python-requests";
     homepage = "https://github.com/pythongssapi/requests-gssapi";
     changelog = "https://github.com/pythongssapi/requests-gssapi/blob/v${version}/HISTORY.rst";
     license = licenses.isc;
diff --git a/pkgs/development/python-modules/requests-hawk/default.nix b/pkgs/development/python-modules/requests-hawk/default.nix
index 0f4b040be5826..24370891b5ddd 100644
--- a/pkgs/development/python-modules/requests-hawk/default.nix
+++ b/pkgs/development/python-modules/requests-hawk/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, python, mohawk, requests }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mohawk,
+  requests,
+}:
 
 buildPythonPackage rec {
   pname = "requests-hawk";
@@ -7,13 +13,16 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-rZIFBCyUvbFa+qGbB4DhEHeyTZ5c/6wfs9JssIqkNbc=";
+    hash = "sha256-rZIFBCyUvbFa+qGbB4DhEHeyTZ5c/6wfs9JssIqkNbc=";
   };
 
-  propagatedBuildInputs = [ mohawk requests ];
+  propagatedBuildInputs = [
+    mohawk
+    requests
+  ];
 
   meta = with lib; {
-    description = "Hawk authentication strategy for the requests python library.";
+    description = "Hawk authentication strategy for the requests python library";
     homepage = "https://github.com/mozilla-services/requests-hawk";
     license = licenses.asl20;
     maintainers = with maintainers; [ austinbutler ];
diff --git a/pkgs/development/python-modules/requests-http-signature/default.nix b/pkgs/development/python-modules/requests-http-signature/default.nix
index d0eda6329cda2..541604089e254 100644
--- a/pkgs/development/python-modules/requests-http-signature/default.nix
+++ b/pkgs/development/python-modules/requests-http-signature/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, http-message-signatures
-, http-sfv
-, requests
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  http-message-signatures,
+  http-sfv,
+  requests,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-sW2vYqT/nY27DvEKHdptc3dUpuqKmD7PLMs+Xp+cpeU=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     http-message-signatures
@@ -33,22 +32,16 @@ buildPythonPackage rec {
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "test/test.py"
-  ];
+  pytestFlagsArray = [ "test/test.py" ];
 
   disabledTests = [
     # Test require network access
     "test_readme_example"
   ];
 
-  pythonImportsCheck = [
-    "requests_http_signature"
-  ];
+  pythonImportsCheck = [ "requests_http_signature" ];
 
   meta = with lib; {
     description = "Requests authentication module for HTTP Signature";
diff --git a/pkgs/development/python-modules/requests-kerberos/default.nix b/pkgs/development/python-modules/requests-kerberos/default.nix
index 38a38f27dfa40..70a5eebacdb5d 100644
--- a/pkgs/development/python-modules/requests-kerberos/default.nix
+++ b/pkgs/development/python-modules/requests-kerberos/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, pykerberos
-, pyspnego
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  pyspnego,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "requests-kerberos";
-  version = "0.14.0";
+  version = "0.15.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -21,33 +22,27 @@ buildPythonPackage rec {
     owner = "requests";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-Y9dTzFCgVmSnbnTE0kEfjpEkXDEA+uOqFHLkSC27YGg=";
+    hash = "sha256-s1Q3zqKPSuTkiFExr+axai9Eta1xjw/cip8xzfDGR88=";
   };
 
-  propagatedBuildInputs = [
-    cryptography
-    requests
-    pykerberos
-    pyspnego
-  ];
+  propagatedBuildInputs =
+    [
+      cryptography
+      requests
+      pyspnego
+    ]
+    # Avoid broken Python krb5 package on Darwin
+    ++ lib.optionals (!stdenv.hostPlatform.isDarwin) pyspnego.optional-dependencies.kerberos;
 
   nativeCheckInputs = [
     pytestCheckHook
     pytest-mock
   ];
 
-  # avoid needing to package krb5
-  postPatch = ''
-    substituteInPlace setup.py \
-    --replace "pyspnego[kerberos]" "pyspnego"
-  '';
-
-  pythonImportsCheck = [
-    "requests_kerberos"
-  ];
+  pythonImportsCheck = [ "requests_kerberos" ];
 
   meta = with lib; {
-    description = "An authentication handler for using Kerberos with Python Requests";
+    description = "Authentication handler for using Kerberos with Python Requests";
     homepage = "https://github.com/requests/requests-kerberos";
     license = licenses.isc;
     maintainers = with maintainers; [ catern ];
diff --git a/pkgs/development/python-modules/requests-mock/default.nix b/pkgs/development/python-modules/requests-mock/default.nix
index 4e72ce67364ac..d97df4e4b77bd 100644
--- a/pkgs/development/python-modules/requests-mock/default.nix
+++ b/pkgs/development/python-modules/requests-mock/default.nix
@@ -1,27 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fixtures
-, purl
-, pytestCheckHook
-, python
-, requests
-, requests-futures
-, six
-, testtools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fixtures,
+  purl,
+  pytestCheckHook,
+  requests,
+  requests-futures,
+  setuptools,
+  setuptools-scm,
+  testtools,
 }:
 
 buildPythonPackage rec {
   pname = "requests-mock";
-  version = "1.11.0";
-  format = "setuptools";
+  version = "1.12.1";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-7xC1crSJpfKOCbcIaXIIxKOyuJ74Cp8BWENA6jV+w8Q=";
+    hash = "sha256-6eEuMztSUVboKjyFLyIBa5FYIg0vR0VN6crop303FAE=";
   };
 
-  propagatedBuildInputs = [ requests six ];
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [ requests ];
 
   nativeCheckInputs = [
     fixtures
diff --git a/pkgs/development/python-modules/requests-ntlm/default.nix b/pkgs/development/python-modules/requests-ntlm/default.nix
index 43a002e1e19e8..baa445aeb17cb 100644
--- a/pkgs/development/python-modules/requests-ntlm/default.nix
+++ b/pkgs/development/python-modules/requests-ntlm/default.nix
@@ -1,27 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, cryptography
-, pyspnego
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  cryptography,
+  pyspnego,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "requests-ntlm";
-  version = "1.2.0";
+  version = "1.3.0";
 
   format = "pyproject";
 
   src = fetchPypi {
     pname = "requests_ntlm";
     inherit version;
-    hash = "sha256-M8KF9QdOMXy90zjRma+kanwBEy5cER02vUFVNOm5Fqg=";
+    hash = "sha256-spzCRiYj3/35uIxD4YDMtzW0AHIopUIiDogsWK5Wxmg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     cryptography
diff --git a/pkgs/development/python-modules/requests-oauthlib/default.nix b/pkgs/development/python-modules/requests-oauthlib/default.nix
index 150719c6fff62..27b2ae885573a 100644
--- a/pkgs/development/python-modules/requests-oauthlib/default.nix
+++ b/pkgs/development/python-modules/requests-oauthlib/default.nix
@@ -1,24 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mock
-, oauthlib
-, pytestCheckHook
-, requests
-, requests-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  oauthlib,
+  pytestCheckHook,
+  requests,
+  requests-mock,
 }:
 
 buildPythonPackage rec {
   pname = "requests-oauthlib";
-  version = "1.3.1";
+  version = "2.0.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-db6sSkeIHuuU1epdatMe+IhWr/4jMrmq+1LGRSzPDXo=";
+    hash = "sha256-s9/669iE2M13hJQ2lgOp57WNKREb9rQb3C3NhyA69Ok=";
   };
 
-  propagatedBuildInputs = [ oauthlib requests ];
+  propagatedBuildInputs = [
+    oauthlib
+    requests
+  ];
 
   nativeCheckInputs = [
     mock
@@ -33,6 +37,9 @@ buildPythonPackage rec {
     "test_url_is_native_str"
   ];
 
+  # Requires selenium and chrome
+  disabledTestPaths = [ "tests/examples/test_native_spa_pkce_auth0.py" ];
+
   pythonImportsCheck = [ "requests_oauthlib" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/requests-pkcs12/default.nix b/pkgs/development/python-modules/requests-pkcs12/default.nix
index 87f20922a712a..550465962e313 100644
--- a/pkgs/development/python-modules/requests-pkcs12/default.nix
+++ b/pkgs/development/python-modules/requests-pkcs12/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyopenssl
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyopenssl,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "requests-pkcs12";
-  version = "1.24";
+  version = "1.25";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -17,7 +18,7 @@ buildPythonPackage rec {
     owner = "m-click";
     repo = "requests_pkcs12";
     rev = version;
-    hash = "sha256-JLFUdg7kbjhlpGgrQ29U1TRTKhjDlvMGc/FRE+awfLc=";
+    hash = "sha256-ukS0vxG2Rd71GsF1lmpsDSM2JovwqhXsaAnZdF8WGQo=";
   };
 
   propagatedBuildInputs = [
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "requests_pkcs12"
-  ];
+  pythonImportsCheck = [ "requests_pkcs12" ];
 
   meta = with lib; {
     description = "PKCS#12 support for the Python requests library";
diff --git a/pkgs/development/python-modules/requests-ratelimiter/default.nix b/pkgs/development/python-modules/requests-ratelimiter/default.nix
index af5304341b287..8c95037aef9ae 100644
--- a/pkgs/development/python-modules/requests-ratelimiter/default.nix
+++ b/pkgs/development/python-modules/requests-ratelimiter/default.nix
@@ -1,43 +1,47 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pyrate-limiter
-, requests
-, pytestCheckHook
-, requests-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pyrate-limiter,
+  pytestCheckHook,
+  pythonOlder,
+  requests-mock,
+  requests,
+  requests-cache,
 }:
 
 buildPythonPackage rec {
   pname = "requests-ratelimiter";
-  version = "0.6.0";
+  version = "0.7.0";
   pyproject = true;
 
+  disabled = pythonOlder "3.7";
+
   src = fetchFromGitHub {
     owner = "JWCook";
     repo = "requests-ratelimiter";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ctCD+vlV90KCO7DdPUZJipBC/lz6NXx0gYuHHrs22IY=";
+    hash = "sha256-DS4BzS8AD4axniyV6jVYXWZ6cQLvMPp8tdGoBhYu51o=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pyrate-limiter
     requests
   ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    requests-cache
     requests-mock
   ];
 
   pythonImportsCheck = [ "requests_ratelimiter" ];
 
   meta = with lib; {
-    description = "Easy rate-limiting for python requests";
+    description = "Module for rate-limiting for requests";
     homepage = "https://github.com/JWCook/requests-ratelimiter";
     changelog = "https://github.com/JWCook/requests-ratelimiter/blob/${src.rev}/HISTORY.md";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/requests-toolbelt/default.nix b/pkgs/development/python-modules/requests-toolbelt/default.nix
index 0d4bf487d7bff..ae687d9645f8d 100644
--- a/pkgs/development/python-modules/requests-toolbelt/default.nix
+++ b/pkgs/development/python-modules/requests-toolbelt/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, betamax
-, buildPythonPackage
-, fetchPypi
-, pyopenssl
-, pytestCheckHook
-, requests
-, trustme
+{
+  lib,
+  betamax,
+  buildPythonPackage,
+  fetchPypi,
+  pyopenssl,
+  pytestCheckHook,
+  requests,
+  trustme,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-doGgo9BHAStb3A7jfX+PB+vnarCMrsz8OSHOI8iNW8Y=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     betamax
@@ -39,9 +38,7 @@ buildPythonPackage rec {
     "test_request_with_base"
   ];
 
-  pythonImportsCheck = [
-    "requests_toolbelt"
-  ];
+  pythonImportsCheck = [ "requests_toolbelt" ];
 
   meta = with lib; {
     description = "Toolbelt of useful classes and functions to be used with requests";
diff --git a/pkgs/development/python-modules/requests-unixsocket/default.nix b/pkgs/development/python-modules/requests-unixsocket/default.nix
index 58ecce446c21b..12708f749bbef 100644
--- a/pkgs/development/python-modules/requests-unixsocket/default.nix
+++ b/pkgs/development/python-modules/requests-unixsocket/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, pbr
-, requests
-, pytestCheckHook
-, waitress
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  pbr,
+  requests,
+  pytestCheckHook,
+  waitress,
 }:
 
 buildPythonPackage rec {
@@ -25,24 +26,24 @@ buildPythonPackage rec {
       url = "https://github.com/msabramo/requests-unixsocket/commit/39b9c64847a52ddc8c6d14ff414a6a7a3f6358d9.patch";
       hash = "sha256-DFtjhk33JLCu7FW6XI7uf2klNmwzvh2QNwxUb4W223Q=";
     })
+    # https://github.com/msabramo/requests-unixsocket/pull/72
+    (fetchpatch {
+      name = "requests-2.32-compatibility.patch";
+      url = "https://github.com/msabramo/requests-unixsocket/commit/8b02ed531d8def03b4cf767e8a925be09db43dff.patch";
+      hash = "sha256-rCmdCPGB2gf+aY/AikSCPuzGCYf1GFWcUKraqgS26vc=";
+    })
   ];
 
-  nativeBuildInputs = [
-    pbr
-  ];
+  nativeBuildInputs = [ pbr ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     pytestCheckHook
     waitress
   ];
 
-  pythonImportsCheck = [
-    "requests_unixsocket"
-  ];
+  pythonImportsCheck = [ "requests_unixsocket" ];
 
   meta = with lib; {
     description = "Use requests to talk HTTP via a UNIX domain socket";
diff --git a/pkgs/development/python-modules/requests-wsgi-adapter/default.nix b/pkgs/development/python-modules/requests-wsgi-adapter/default.nix
index 906bf06f8eafc..8cdec28f2abb2 100644
--- a/pkgs/development/python-modules/requests-wsgi-adapter/default.nix
+++ b/pkgs/development/python-modules/requests-wsgi-adapter/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-WncJ6Qq/SdGB9sMqo3eUU39yXeD23UI2K8jIyQgSyHg=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # tests are not contained in pypi-release
   doCheck = false;
diff --git a/pkgs/development/python-modules/requests/ca-load-regression.patch b/pkgs/development/python-modules/requests/ca-load-regression.patch
new file mode 100644
index 0000000000000..e20d213cd23a8
--- /dev/null
+++ b/pkgs/development/python-modules/requests/ca-load-regression.patch
@@ -0,0 +1,126 @@
+From 2769cb607d4e696e2fe70802d4246ccc5abd64a8 Mon Sep 17 00:00:00 2001
+From: Nate Prewitt <nate.prewitt@gmail.com>
+Date: Wed, 29 May 2024 12:48:48 -0700
+Subject: [PATCH 1/3] Consider cert settings when using default context
+
+---
+ src/requests/adapters.py | 26 ++++++++++++++++++--------
+ 1 file changed, 18 insertions(+), 8 deletions(-)
+
+diff --git a/src/requests/adapters.py b/src/requests/adapters.py
+index 9a58b16025..991b7e21c9 100644
+--- a/src/requests/adapters.py
++++ b/src/requests/adapters.py
+@@ -87,6 +87,23 @@ def SOCKSProxyManager(*args, **kwargs):
+     _preloaded_ssl_context = None
+ 
+ 
++def _should_use_default_context(
++    verify: "bool | str | None",
++    client_cert: "typing.Tuple[str, str] | str | None",
++    poolmanager_kwargs: typing.Dict[str, typing.Any],
++) -> bool:
++    # Determine if we have and should use our default SSLContext
++    # to optimize performance on standard requests.
++    has_poolmanager_ssl_context = poolmanager_kwargs.get("ssl_context")
++    should_use_default_ssl_context = (
++        verify is True
++        and _preloaded_ssl_context is not None
++        and not has_poolmanager_ssl_context
++        and client_cert is None
++    )
++    return should_use_default_ssl_context
++
++
+ def _urllib3_request_context(
+     request: "PreparedRequest",
+     verify: "bool | str | None",
+@@ -98,19 +115,12 @@ def _urllib3_request_context(
+     parsed_request_url = urlparse(request.url)
+     scheme = parsed_request_url.scheme.lower()
+     port = parsed_request_url.port
+-
+-    # Determine if we have and should use our default SSLContext
+-    # to optimize performance on standard requests.
+     poolmanager_kwargs = getattr(poolmanager, "connection_pool_kw", {})
+-    has_poolmanager_ssl_context = poolmanager_kwargs.get("ssl_context")
+-    should_use_default_ssl_context = (
+-        _preloaded_ssl_context is not None and not has_poolmanager_ssl_context
+-    )
+ 
+     cert_reqs = "CERT_REQUIRED"
+     if verify is False:
+         cert_reqs = "CERT_NONE"
+-    elif verify is True and should_use_default_ssl_context:
++    elif _should_use_default_context(verify, client_cert, poolmanager_kwargs):
+         pool_kwargs["ssl_context"] = _preloaded_ssl_context
+     elif isinstance(verify, str):
+         if not os.path.isdir(verify):
+
+From e341df3efa0323072fab5d16307e2a20295675b9 Mon Sep 17 00:00:00 2001
+From: Nate Prewitt <nate.prewitt@gmail.com>
+Date: Fri, 31 May 2024 11:41:48 -0700
+Subject: [PATCH 2/3] Set default ca_cert bundle if verify is True
+
+---
+ src/requests/adapters.py | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+diff --git a/src/requests/adapters.py b/src/requests/adapters.py
+index 991b7e21c9..ba5a0ec4f0 100644
+--- a/src/requests/adapters.py
++++ b/src/requests/adapters.py
+@@ -118,15 +118,23 @@ def _urllib3_request_context(
+     poolmanager_kwargs = getattr(poolmanager, "connection_pool_kw", {})
+ 
+     cert_reqs = "CERT_REQUIRED"
++    cert_loc = None
+     if verify is False:
+         cert_reqs = "CERT_NONE"
+     elif _should_use_default_context(verify, client_cert, poolmanager_kwargs):
+         pool_kwargs["ssl_context"] = _preloaded_ssl_context
++    elif verify is True:
++        # Set default ca cert location if none provided
++        cert_loc = extract_zipped_paths(DEFAULT_CA_BUNDLE_PATH)
+     elif isinstance(verify, str):
+-        if not os.path.isdir(verify):
+-            pool_kwargs["ca_certs"] = verify
++        cert_loc = verify
++
++    if cert_loc is not None:
++        if not os.path.isdir(cert_loc):
++            pool_kwargs["ca_certs"] = cert_loc
+         else:
+-            pool_kwargs["ca_cert_dir"] = verify
++            pool_kwargs["ca_cert_dir"] = cert_loc
++
+     pool_kwargs["cert_reqs"] = cert_reqs
+     if client_cert is not None:
+         if isinstance(client_cert, tuple) and len(client_cert) == 2:
+
+From da96a92e2eb6dfe7c74704267bcb8f9fd6fb92b0 Mon Sep 17 00:00:00 2001
+From: Nate Prewitt <nate.prewitt@gmail.com>
+Date: Fri, 31 May 2024 12:20:11 -0700
+Subject: [PATCH 3/3] Correct comment to match actual behavior
+
+---
+ src/requests/adapters.py | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/src/requests/adapters.py b/src/requests/adapters.py
+index ba5a0ec4f0..54143f9e6b 100644
+--- a/src/requests/adapters.py
++++ b/src/requests/adapters.py
+@@ -334,10 +334,8 @@ def cert_verify(self, conn, url, verify, cert):
+         if url.lower().startswith("https") and verify:
+             conn.cert_reqs = "CERT_REQUIRED"
+ 
+-            # Only load the CA certificates if 'verify' is a string indicating the CA bundle to use.
+-            # Otherwise, if verify is a boolean, we don't load anything since
+-            # the connection will be using a context with the default certificates already loaded,
+-            # and this avoids a call to the slow load_verify_locations()
++            # Only load the CA certificates if `verify` is a
++            # string indicating the CA bundle to use.
+             if verify is not True:
+                 # `verify` must be a str with a path then
+                 cert_loc = verify
diff --git a/pkgs/development/python-modules/requests/default.nix b/pkgs/development/python-modules/requests/default.nix
index 33749a992471c..6ffe869c0a6a7 100644
--- a/pkgs/development/python-modules/requests/default.nix
+++ b/pkgs/development/python-modules/requests/default.nix
@@ -1,24 +1,24 @@
-{ lib
-, stdenv
-, brotlicffi
-, buildPythonPackage
-, certifi
-, chardet
-, charset-normalizer
-, fetchPypi
-, fetchpatch
-, idna
-, pysocks
-, pytest-mock
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, urllib3
+{
+  lib,
+  stdenv,
+  brotlicffi,
+  buildPythonPackage,
+  certifi,
+  chardet,
+  charset-normalizer,
+  fetchPypi,
+  idna,
+  pysocks,
+  pytest-mock,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "requests";
-  version = "2.31.0";
+  version = "2.32.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -27,9 +27,15 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-lCxadY+Y15Dq7Ropy27vx/+w0c968Fw9J5Flbb1q0eE=";
+    hash = "sha256-VTZUF3NOsYJVWQqf+euX6eHaho1MzWQCOZ6vaK8gp2A=";
   };
 
+  patches = [
+    # https://github.com/psf/requests/issues/6730
+    # https://github.com/psf/requests/pull/6731
+    ./ca-load-regression.patch
+  ];
+
   dependencies = [
     brotlicffi
     certifi
@@ -39,50 +45,45 @@ buildPythonPackage rec {
   ];
 
   optional-dependencies = {
-    security = [];
-    socks = [
-      pysocks
-    ];
-    use_chardet_on_py3 = [
-      chardet
-    ];
+    security = [ ];
+    socks = [ pysocks ];
+    use_chardet_on_py3 = [ chardet ];
   };
 
   nativeCheckInputs = [
     pytest-mock
     pytest-xdist
     pytestCheckHook
-  ]
-  ++ optional-dependencies.socks;
+  ] ++ optional-dependencies.socks;
 
-  disabledTests = [
-    # Disable tests that require network access and use httpbin
-    "requests.api.request"
-    "requests.models.PreparedRequest"
-    "requests.sessions.Session"
-    "requests"
-    "test_redirecting_to_bad_url"
-    "test_requests_are_updated_each_time"
-    "test_should_bypass_proxies_pass_only_hostname"
-    "test_urllib3_pool_connection_closed"
-    "test_urllib3_retries"
-    "test_use_proxy_from_environment"
-    "TestRequests"
-    "TestTimeout"
-  ] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
-    # Fatal Python error: Aborted
-    "test_basic_response"
-    "test_text_response"
-  ];
+  disabledTests =
+    [
+      # Disable tests that require network access and use httpbin
+      "requests.api.request"
+      "requests.models.PreparedRequest"
+      "requests.sessions.Session"
+      "requests"
+      "test_redirecting_to_bad_url"
+      "test_requests_are_updated_each_time"
+      "test_should_bypass_proxies_pass_only_hostname"
+      "test_urllib3_pool_connection_closed"
+      "test_urllib3_retries"
+      "test_use_proxy_from_environment"
+      "TestRequests"
+      "TestTimeout"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
+      # Fatal Python error: Aborted
+      "test_basic_response"
+      "test_text_response"
+    ];
 
-  disabledTestPaths = lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
+  disabledTestPaths = lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
     # Fatal Python error: Aborted
     "tests/test_lowlevel.py"
   ];
 
-  pythonImportsCheck = [
-    "requests"
-  ];
+  pythonImportsCheck = [ "requests" ];
 
   meta = with lib; {
     description = "HTTP library for Python";
diff --git a/pkgs/development/python-modules/requestsexceptions/default.nix b/pkgs/development/python-modules/requestsexceptions/default.nix
index 5530c2ecd48cb..d545693191273 100644
--- a/pkgs/development/python-modules/requestsexceptions/default.nix
+++ b/pkgs/development/python-modules/requestsexceptions/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pbr }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pbr,
+}:
 
 buildPythonPackage rec {
   pname = "requestsexceptions";
@@ -18,7 +23,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "Import exceptions from potentially bundled packages in requests.";
+    description = "Import exceptions from potentially bundled packages in requests";
     homepage = "https://pypi.python.org/pypi/requestsexceptions";
     license = licenses.asl20;
     maintainers = with maintainers; [ makefu ];
diff --git a/pkgs/development/python-modules/requirements-detector/default.nix b/pkgs/development/python-modules/requirements-detector/default.nix
index aab180853d5a9..4106b7cbf01f2 100644
--- a/pkgs/development/python-modules/requirements-detector/default.nix
+++ b/pkgs/development/python-modules/requirements-detector/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, astroid
-, buildPythonPackage
-, fetchFromGitHub
-, packaging
-, poetry-core
-, semver
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, toml
+{
+  lib,
+  astroid,
+  buildPythonPackage,
+  fetchFromGitHub,
+  packaging,
+  poetry-core,
+  semver,
+  pytestCheckHook,
+  pythonOlder,
+  toml,
 }:
 
 buildPythonPackage rec {
@@ -25,36 +25,27 @@ buildPythonPackage rec {
     hash = "sha256-qmrHFQRypBJOI1N6W/Dtc5ss9JGqoPhFlbqrLHcb6vc=";
   };
 
-  pythonRelaxDeps = [
-    "astroid"
-  ];
-
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     astroid
     packaging
     toml
     semver
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "requirements_detector"
-  ];
+  pythonImportsCheck = [ "requirements_detector" ];
 
   meta = with lib; {
     description = "Python tool to find and list requirements of a Python project";
-    mainProgram = "detect-requirements";
     homepage = "https://github.com/landscapeio/requirements-detector";
     changelog = "https://github.com/landscapeio/requirements-detector/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ kamadorueda ];
+    mainProgram = "detect-requirements";
+    # https://github.com/landscapeio/requirements-detector/issues/48
+    broken = versionAtLeast astroid.version "3";
   };
 }
diff --git a/pkgs/development/python-modules/requirements-parser/default.nix b/pkgs/development/python-modules/requirements-parser/default.nix
index 50afeafe218eb..f8658fed6a0b6 100644
--- a/pkgs/development/python-modules/requirements-parser/default.nix
+++ b/pkgs/development/python-modules/requirements-parser/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "requirements-parser";
-  version = "0.9.0";
+  version = "0.11.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "madpah";
     repo = "requirements-parser";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ZkyfK2s6wmKX/AJsOXlAHOpJ2/zZO0zipdM3j2BrrWo=";
+    hash = "sha256-o9IriQXa2Pd7s16IENqcWgi73XZQoXsbXU471V1CFaI=";
   };
 
   build-system = [ poetry-core ];
@@ -39,6 +39,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/davidfischer/requirements-parser";
     changelog = "https://github.com/madpah/requirements-parser/blob/v${version}/CHANGELOG.md";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/reretry/default.nix b/pkgs/development/python-modules/reretry/default.nix
index e5db5b50cbaaa..240a37a611ec3 100644
--- a/pkgs/development/python-modules/reretry/default.nix
+++ b/pkgs/development/python-modules/reretry/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "reretry";
@@ -11,7 +15,7 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "An easy to use retry decorator.";
+    description = "Easy to use retry decorator";
     homepage = "https://github.com/leshchenko1979/reretry";
     license = licenses.asl20;
     maintainers = with maintainers; [ renatoGarcia ];
diff --git a/pkgs/development/python-modules/rerun-sdk/default.nix b/pkgs/development/python-modules/rerun-sdk/default.nix
index f6476b1675bde..13b7226782ba9 100644
--- a/pkgs/development/python-modules/rerun-sdk/default.nix
+++ b/pkgs/development/python-modules/rerun-sdk/default.nix
@@ -14,27 +14,36 @@
   pytestCheckHook,
   python,
   libiconv,
+  semver,
+  opencv4,
 }:
 
 buildPythonPackage {
   pname = "rerun-sdk";
-  inherit (rerun) version;
   pyproject = true;
 
-  inherit (rerun) src;
-  inherit (rerun) cargoDeps;
+  inherit (rerun)
+    src
+    version
+    cargoDeps
+    cargoPatches
+    patches
+    ;
 
   nativeBuildInputs = [
     rustPlatform.cargoSetupHook
     rustPlatform.maturinBuildHook
+    rerun
   ];
 
-  buildInputs = [
-    libiconv # No-op on Linux, necessary on Darwin.
-  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
-    darwin.apple_sdk.frameworks.AppKit
-    darwin.apple_sdk.frameworks.CoreServices
-  ];
+  buildInputs =
+    [
+      libiconv # No-op on Linux, necessary on Darwin.
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      darwin.apple_sdk.frameworks.AppKit
+      darwin.apple_sdk.frameworks.CoreServices
+    ];
 
   propagatedBuildInputs = [
     attrs
@@ -42,6 +51,8 @@ buildPythonPackage {
     pillow
     pyarrow
     typing-extensions
+    semver
+    opencv4
   ];
 
   buildAndTestSubdir = "rerun_py";
@@ -64,7 +75,7 @@ buildPythonPackage {
   ];
 
   inherit (rerun) addDlopenRunpaths addDlopenRunpathsPhase;
-  postPhases = lib.optionals stdenv.isLinux [ "addDlopenRunpathsPhase" ];
+  postPhases = lib.optionals stdenv.hostPlatform.isLinux [ "addDlopenRunpathsPhase" ];
 
   disabledTestPaths = [
     # "fixture 'benchmark' not found"
@@ -73,7 +84,12 @@ buildPythonPackage {
 
   meta = {
     description = "Python bindings for `rerun` (an interactive visualization tool for stream data)";
-    inherit (rerun.meta) changelog homepage license maintainers;
+    inherit (rerun.meta)
+      changelog
+      homepage
+      license
+      maintainers
+      ;
     mainProgram = "rerun";
   };
 }
diff --git a/pkgs/development/python-modules/resampy/default.nix b/pkgs/development/python-modules/resampy/default.nix
index 84ded22389939..eb93492e75947 100644
--- a/pkgs/development/python-modules/resampy/default.nix
+++ b/pkgs/development/python-modules/resampy/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, numba
-, numpy
-, pytestCheckHook
-, pythonOlder
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+  numba,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  scipy,
 }:
 
 buildPythonPackage rec {
@@ -39,14 +40,12 @@ buildPythonPackage rec {
       --replace " --cov-report term-missing --cov resampy --cov-report=xml" ""
   '';
 
-  pythonImportsCheck = [
-    "resampy"
-  ];
+  pythonImportsCheck = [ "resampy" ];
 
   meta = with lib; {
     description = "Efficient signal resampling";
     homepage = "https://github.com/bmcfee/resampy";
     license = licenses.isc;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/resend/default.nix b/pkgs/development/python-modules/resend/default.nix
index 5ce129dd67160..acb8871f01f38 100644
--- a/pkgs/development/python-modules/resend/default.nix
+++ b/pkgs/development/python-modules/resend/default.nix
@@ -1,15 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pythonOlder
-, pytestCheckHook
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
+  pytestCheckHook,
+  requests,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "resend";
-  version = "0.8.0";
+  version = "2.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,24 +20,19 @@ buildPythonPackage rec {
     owner = "resend";
     repo = "resend-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-6cQtI3it2AS8UdT83fp3y3IcbjSyPmBlQuymN74fBNo=";
+    hash = "sha256-pxHDR9hJWhNHwSYJbakOCEkJbHU/RDhvTy5AGyfr33w=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     requests
+    typing-extensions
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "resend"
-  ];
+  pythonImportsCheck = [ "resend" ];
 
   meta = with lib; {
     description = "SDK for Resend";
diff --git a/pkgs/development/python-modules/resize-right/default.nix b/pkgs/development/python-modules/resize-right/default.nix
index 99b42faf39952..43afc063867a8 100644
--- a/pkgs/development/python-modules/resize-right/default.nix
+++ b/pkgs/development/python-modules/resize-right/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# dependencies
-, numpy
-, torch
+  # dependencies
+  numpy,
+  torch,
 }:
 
 buildPythonPackage rec {
@@ -22,15 +23,13 @@ buildPythonPackage rec {
     torch
   ];
 
-  pythonImportsCheck = [
-    "resize_right"
-  ];
+  pythonImportsCheck = [ "resize_right" ];
 
   # no tests
   doCheck = false;
 
   meta = with lib; {
-    description = "The correct way to resize images or tensors. For Numpy or Pytorch (differentiable";
+    description = "Correct way to resize images or tensors. For Numpy or Pytorch (differentiable";
     homepage = "https://github.com/assafshocher/ResizeRight";
     license = licenses.mit;
     maintainers = teams.tts.members;
diff --git a/pkgs/development/python-modules/resolvelib/default.nix b/pkgs/development/python-modules/resolvelib/default.nix
index d6c479fc4adf5..98e8e8d6487d7 100644
--- a/pkgs/development/python-modules/resolvelib/default.nix
+++ b/pkgs/development/python-modules/resolvelib/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, commentjson
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  commentjson,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,24 +19,20 @@ buildPythonPackage rec {
     hash = "sha256-oxyPn3aFPOyx/2aP7Eg2ThtPbyzrFT1JzWqy6GqNbzM=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     commentjson
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "resolvelib"
-  ];
+  pythonImportsCheck = [ "resolvelib" ];
 
   meta = with lib; {
     description = "Resolve abstract dependencies into concrete ones";
     homepage = "https://github.com/sarugaku/resolvelib";
     changelog = "https://github.com/sarugaku/resolvelib/blob/${src.rev}/CHANGELOG.rst";
     license = licenses.isc;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/responses/default.nix b/pkgs/development/python-modules/responses/default.nix
index 5a9960cbac597..615234474a6a9 100644
--- a/pkgs/development/python-modules/responses/default.nix
+++ b/pkgs/development/python-modules/responses/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch2
-, pytest-asyncio
-, pytest-httpserver
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, requests
-, setuptools
-, tomli
-, tomli-w
-, types-pyyaml
-, types-toml
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  pytest-asyncio,
+  pytest-httpserver,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  requests,
+  setuptools,
+  tomli,
+  tomli-w,
+  types-pyyaml,
+  types-toml,
+  urllib3,
 }:
 
 buildPythonPackage rec {
@@ -40,9 +41,7 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     pyyaml
@@ -57,13 +56,9 @@ buildPythonPackage rec {
     pytest-httpserver
     pytestCheckHook
     tomli-w
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
-  pythonImportsCheck = [
-    "responses"
-  ];
+  pythonImportsCheck = [ "responses" ];
 
   meta = with lib; {
     description = "Python module for mocking out the requests Python library";
diff --git a/pkgs/development/python-modules/respx/default.nix b/pkgs/development/python-modules/respx/default.nix
index 9d0bf307ff235..7f6ea4561385b 100644
--- a/pkgs/development/python-modules/respx/default.nix
+++ b/pkgs/development/python-modules/respx/default.nix
@@ -1,33 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flask
-, httpcore
-, httpx
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, starlette
-, trio
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flask,
+  httpcore,
+  httpx,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  starlette,
+  trio,
 }:
 
 buildPythonPackage rec {
   pname = "respx";
-  version = "0.20.2";
-  format = "setuptools";
+  version = "0.21.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "lundberg";
-    repo = pname;
+    repo = "respx";
     rev = version;
-    hash = "sha256-OiBKNK8V9WNQDe29Q5+E/jjBWD0qFcYUzhYUWA+7oFc=";
+    hash = "sha256-sBb9HPvX+AKJUMWBME381F2amYdQmBiM8OguGW3lFG0=";
   };
 
-  propagatedBuildInputs = [
-    httpx
-  ];
+  postPatch = ''
+    sed -i "/--cov/d" setup.cfg
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [ httpx ];
 
   nativeCheckInputs = [
     httpcore
@@ -39,23 +45,15 @@ buildPythonPackage rec {
     trio
   ];
 
-  postPatch = ''
-    sed -i "/--cov/d" setup.cfg
-  '';
+  disabledTests = [ "test_pass_through" ];
 
-  disabledTests = [
-    "test_pass_through"
-  ];
-
-  pythonImportsCheck = [
-    "respx"
-  ];
+  pythonImportsCheck = [ "respx" ];
 
   meta = with lib; {
     description = "Python library for mocking HTTPX";
     homepage = "https://lundberg.github.io/respx/";
     changelog = "https://github.com/lundberg/respx/blob/${version}/CHANGELOG.md";
-    license = with licenses; [ bsd3 ];
+    license = licenses.bsd3;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/restfly/default.nix b/pkgs/development/python-modules/restfly/default.nix
index 8ebc4ee2b880e..3cdb15c0044de 100644
--- a/pkgs/development/python-modules/restfly/default.nix
+++ b/pkgs/development/python-modules/restfly/default.nix
@@ -1,37 +1,45 @@
-{ lib
-, arrow
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-datafiles
-, pytest-vcr
-, pytestCheckHook
-, python-box
-, pythonOlder
-, responses
-, requests
+{
+  lib,
+  arrow,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-cov-stub,
+  pytest-datafiles,
+  pytest-vcr,
+  pytestCheckHook,
+  python-box,
+  pythonOlder,
+  requests,
+  responses,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "restfly";
-  version = "1.4.7";
-  format = "setuptools";
+  version = "1.5.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "stevemcgrath";
-    repo = pname;
-    rev = version;
-    hash = "sha256-PPXJHatJKve9fIjveVYRnTSIDHFmnSDWTnkgO91twJs=";
+    repo = "restfly";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Zdn/hUvAZ9TaAWyDpNiEiA9mYDbWmiXBUa+IV/g8n2M=";
   };
 
-  propagatedBuildInputs = [
-    requests
+  build-system = [ setuptools ];
+
+  dependencies = [
     arrow
     python-box
+    requests
+    typing-extensions
   ];
 
   nativeCheckInputs = [
+    pytest-cov-stub
     pytest-datafiles
     pytest-vcr
     pytestCheckHook
@@ -43,14 +51,13 @@ buildPythonPackage rec {
     "test_session_ssl_error"
   ];
 
-  pythonImportsCheck = [
-    "restfly"
-  ];
+  pythonImportsCheck = [ "restfly" ];
 
   meta = with lib; {
     description = "Python RESTfly API Library Framework";
     homepage = "https://github.com/stevemcgrath/restfly";
-    license = with licenses; [ mit ];
+    changelog = "https://github.com/librestfly/restfly/blob/${version}/CHANGELOG.md";
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/restrictedpython/default.nix b/pkgs/development/python-modules/restrictedpython/default.nix
index 64dbb30168290..daba92a14a6c6 100644
--- a/pkgs/development/python-modules/restrictedpython/default.nix
+++ b/pkgs/development/python-modules/restrictedpython/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest-mock
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest-mock,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "restrictedpython";
-  version = "7.1";
+  version = "7.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,25 +19,19 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "RestrictedPython";
     inherit version;
-    hash = "sha256-h1rrUcE51440zvhgXcZTCbRJFoBg3QhVGh/p7bR8uaU=";
+    hash = "sha256-TR0w9wmmYhynxCNvCLZ7cyplHICZFF8TcHjH3UvtPSE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     pytestCheckHook
     pytest-mock
   ];
 
-  disabledTests = lib.optionals (pythonAtLeast "3.11") [
-    "test_compile__compile_restricted_exec__5"
-  ];
+  disabledTests = lib.optionals (pythonAtLeast "3.11") [ "test_compile__compile_restricted_exec__5" ];
 
-  pythonImportsCheck = [
-    "RestrictedPython"
-  ];
+  pythonImportsCheck = [ "RestrictedPython" ];
 
   meta = with lib; {
     description = "Restricted execution environment for Python to run untrusted code";
diff --git a/pkgs/development/python-modules/restructuredtext-lint/default.nix b/pkgs/development/python-modules/restructuredtext-lint/default.nix
index 3b7f4dfd57f15..29249205de92d 100644
--- a/pkgs/development/python-modules/restructuredtext-lint/default.nix
+++ b/pkgs/development/python-modules/restructuredtext-lint/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, docutils
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  docutils,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,23 +18,15 @@ buildPythonPackage rec {
     hash = "sha256-GyNcDJIjQatsUwOQiS656S+QubdQRgY+BHys+w8FDEU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [ docutils ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "restructuredtext_lint/test/test.py"
-  ];
+  pytestFlagsArray = [ "restructuredtext_lint/test/test.py" ];
 
-  pythonImportsCheck = [
-    "restructuredtext_lint"
-  ];
+  pythonImportsCheck = [ "restructuredtext_lint" ];
 
   meta = {
     description = "reStructuredText linter";
diff --git a/pkgs/development/python-modules/restview/default.nix b/pkgs/development/python-modules/restview/default.nix
index e5694e92137d5..485210d20b3f9 100644
--- a/pkgs/development/python-modules/restview/default.nix
+++ b/pkgs/development/python-modules/restview/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, docutils
-, readme-renderer
-, packaging
-, pygments
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  docutils,
+  readme-renderer,
+  packaging,
+  pygments,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,13 +29,9 @@ buildPythonPackage rec {
     pygments
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "restview"
-  ];
+  pythonImportsCheck = [ "restview" ];
 
   disabledTests = [
     # Tests are comparing output
diff --git a/pkgs/development/python-modules/result/default.nix b/pkgs/development/python-modules/result/default.nix
index 111c8dad2a306..db123e0310675 100644
--- a/pkgs/development/python-modules/result/default.nix
+++ b/pkgs/development/python-modules/result/default.nix
@@ -1,21 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pytest-asyncio
-, nix-update-script
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pytest-asyncio,
+  nix-update-script,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "result";
-  version = "0.16.1";
-  format = "setuptools";
+  version = "0.17.0";
+  pyproject = true;
+  build-system = [
+    setuptools
+    wheel
+  ];
 
   src = fetchFromGitHub {
     owner = "rustedpy";
     repo = "result";
     rev = "v${version}";
-    hash = "sha256-7BvFIQbl4Udd9GTpbMrAqP0P1BGn/C1CHQ3QUCEMXPs=";
+    hash = "sha256-o+7qKxGQCeMUnsmEReggvf+XwQWFHRCYArYk3DxCa50=";
   };
 
   postPatch = ''
@@ -33,7 +40,7 @@ buildPythonPackage rec {
     pytest-asyncio
   ];
 
-  passthru.updateScript = nix-update-script {};
+  passthru.updateScript = nix-update-script { };
   pythonImportsCheck = [ "result" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/rethinkdb/default.nix b/pkgs/development/python-modules/rethinkdb/default.nix
index 35db8bd3dd3dd..2a3f6c1db08ad 100644
--- a/pkgs/development/python-modules/rethinkdb/default.nix
+++ b/pkgs/development/python-modules/rethinkdb/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, looseversion
-, six
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  looseversion,
+  six,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-NjTgPuE91jf9cZa4BHS/RMZNProd0GnqkrlJJnAqYL0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     looseversion
@@ -34,5 +33,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/RethinkDB/rethinkdb-python";
     license = licenses.asl20;
   };
-
 }
diff --git a/pkgs/development/python-modules/retry-decorator/default.nix b/pkgs/development/python-modules/retry-decorator/default.nix
index a2c984dfe4125..7d63966c08a05 100644
--- a/pkgs/development/python-modules/retry-decorator/default.nix
+++ b/pkgs/development/python-modules/retry-decorator/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-0dZq4YbPcH4ItyMnpF7B20YYLtzwniJClBK9gRndU1M=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "retry_decorator"
-  ];
+  pythonImportsCheck = [ "retry_decorator" ];
 
   meta = with lib; {
     description = "Decorator for retrying when exceptions occur";
diff --git a/pkgs/development/python-modules/retry/default.nix b/pkgs/development/python-modules/retry/default.nix
index 993c7270b8073..c4df5b909e443 100644
--- a/pkgs/development/python-modules/retry/default.nix
+++ b/pkgs/development/python-modules/retry/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pbr
-, decorator
-, py
-, mock
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pbr,
+  decorator,
+  py,
+  mock,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     sha256 = "f8bfa8b99b69c4506d6f5bd3b0aabf77f98cdb17f3c9fc3f5ca820033336fba4";
   };
 
-  nativeBuildInputs = [
-    pbr
-  ];
+  nativeBuildInputs = [ pbr ];
 
   propagatedBuildInputs = [
     decorator
diff --git a/pkgs/development/python-modules/retrying/default.nix b/pkgs/development/python-modules/retrying/default.nix
index 36e76f6bc6c72..11eab85380a65 100644
--- a/pkgs/development/python-modules/retrying/default.nix
+++ b/pkgs/development/python-modules/retrying/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,21 +18,17 @@ buildPythonPackage rec {
     hash = "sha256-NF2oxXZb2YKx0ZFd65EC/T0fetFr2EqXALhfZNJOjz4=";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   # doesn't ship tests in tarball
   doCheck = false;
 
-  pythonImportsCheck = [
-    "retrying"
-  ];
+  pythonImportsCheck = [ "retrying" ];
 
   meta = with lib; {
     description = "General-purpose retrying library";
     homepage = "https://github.com/rholder/retrying";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/returns/default.nix b/pkgs/development/python-modules/returns/default.nix
index 2e0275bd80408..27fa225ba7d05 100644
--- a/pkgs/development/python-modules/returns/default.nix
+++ b/pkgs/development/python-modules/returns/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, anyio
-, buildPythonPackage
-, curio
-, fetchFromGitHub
-, httpx
-, hypothesis
-, poetry-core
-, pytest-aio
-, pytest-subtests
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, trio
-, typing-extensions
+{
+  lib,
+  anyio,
+  buildPythonPackage,
+  curio,
+  fetchFromGitHub,
+  httpx,
+  hypothesis,
+  poetry-core,
+  pytest-aio,
+  pytest-subtests,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  trio,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "returns";
-  version = "0.22.0";
+  version = "0.23.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -26,7 +27,7 @@ buildPythonPackage rec {
     owner = "dry-python";
     repo = "returns";
     rev = "refs/tags/${version}";
-    hash = "sha256-0eFirhBsj8SWfoAPWEMuFa+EvBgHKpNeKVj3qJ4L6hE=";
+    hash = "sha256-4ZP/wvPgqQQec/BaXuL9r7BEc2G+LztMdFul0NeEJTc=";
   };
 
   postPatch = ''
@@ -35,13 +36,9 @@ buildPythonPackage rec {
       -e '/--mypy.*/d'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ typing-extensions ];
 
   nativeCheckInputs = [
     anyio
@@ -59,13 +56,9 @@ buildPythonPackage rec {
     rm -rf returns/contrib/mypy
   '';
 
-  pythonImportsCheck = [
-    "returns"
-  ];
+  pythonImportsCheck = [ "returns" ];
 
-  pytestFlagsArray = [
-    "--ignore=typesafety"
-  ];
+  pytestFlagsArray = [ "--ignore=typesafety" ];
 
   meta = with lib; {
     description = "Make your functions return something meaningful, typed, and safe!";
diff --git a/pkgs/development/python-modules/reuse/default.nix b/pkgs/development/python-modules/reuse/default.nix
index e697d8b26210f..277933b3c358d 100644
--- a/pkgs/development/python-modules/reuse/default.nix
+++ b/pkgs/development/python-modules/reuse/default.nix
@@ -3,47 +3,83 @@
   buildPythonPackage,
   fetchFromGitHub,
   poetry-core,
+  sphinxHook,
+  furo,
+  myst-parser,
+  pbr,
+  sphinxcontrib-apidoc,
+
+  # dependencies
+  attrs,
   binaryornot,
   boolean-py,
   debian,
   jinja2,
   license-expression,
+  tomlkit,
+
+  # test dependencies
+  freezegun,
   pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "reuse";
-  version = "3.0.2";
+  version = "4.0.3";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "fsfe";
     repo = "reuse-tool";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ZYmQtJ503HDmu+Cd6IxOrCcOVH+CcFnFe3oe6PqvcE0=";
+    hash = "sha256-oKtQBT8tuAk4S/Sygp4qxLk4ADWDTG0MbVaL5O2qsuA=";
   };
 
-  build-system = [ poetry-core ];
+  outputs = [
+    "out"
+    "doc"
+    "man"
+  ];
+
+  build-system = [
+    poetry-core
+    sphinxHook
+    furo
+    myst-parser
+    pbr
+    sphinxcontrib-apidoc
+  ];
 
   dependencies = [
+    attrs
     binaryornot
     boolean-py
     debian
     jinja2
     license-expression
+    tomlkit
   ];
 
-  nativeCheckInputs = [ pytestCheckHook ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    freezegun
+  ];
 
   disabledTestPaths = [
     # pytest wants to execute the actual source files for some reason, which fails with ImportPathMismatchError()
     "src/reuse"
   ];
 
+  sphinxBuilders = [
+    "html"
+    "man"
+  ];
+  sphinxRoot = "docs";
+
   pythonImportsCheck = [ "reuse" ];
 
   meta = with lib; {
-    description = "A tool for compliance with the REUSE Initiative recommendations";
+    description = "Tool for compliance with the REUSE Initiative recommendations";
     homepage = "https://github.com/fsfe/reuse-tool";
     changelog = "https://github.com/fsfe/reuse-tool/blob/v${version}/CHANGELOG.md";
     license = with licenses; [
diff --git a/pkgs/development/python-modules/rfc3339-validator/default.nix b/pkgs/development/python-modules/rfc3339-validator/default.nix
index 9de6919692a4e..d4f70dac0763c 100644
--- a/pkgs/development/python-modules/rfc3339-validator/default.nix
+++ b/pkgs/development/python-modules/rfc3339-validator/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, hypothesis
-, six
-, strict-rfc3339
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  hypothesis,
+  six,
+  strict-rfc3339,
 }:
 
 buildPythonPackage rec {
@@ -20,13 +21,17 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ six ];
 
-  nativeCheckInputs = [ pytestCheckHook hypothesis strict-rfc3339 ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    hypothesis
+    strict-rfc3339
+  ];
   pythonImportsCheck = [ "rfc3339_validator" ];
 
   meta = with lib; {
     description = "RFC 3339 validator for Python";
     homepage = "https://github.com/naimetti/rfc3339-validator";
     license = licenses.mit;
-    maintainers = with maintainers; [ AluisioASG ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/rfc3339/default.nix b/pkgs/development/python-modules/rfc3339/default.nix
index 9c5faa38131cb..f95888578ac57 100644
--- a/pkgs/development/python-modules/rfc3339/default.nix
+++ b/pkgs/development/python-modules/rfc3339/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/rfc3986-validator/default.nix b/pkgs/development/python-modules/rfc3986-validator/default.nix
index 823eb16aef1a8..bceb67a22594a 100644
--- a/pkgs/development/python-modules/rfc3986-validator/default.nix
+++ b/pkgs/development/python-modules/rfc3986-validator/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hypothesis
-, rfc3987
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hypothesis,
+  rfc3987,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -32,6 +33,6 @@ buildPythonPackage rec {
     description = "Pure python rfc3986 validator";
     homepage = "https://github.com/naimetti/rfc3986-validator";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/rfc3986/default.nix b/pkgs/development/python-modules/rfc3986/default.nix
index d2b4bf57a062c..863d4562056d6 100644
--- a/pkgs/development/python-modules/rfc3986/default.nix
+++ b/pkgs/development/python-modules/rfc3986/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, idna
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  idna,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,22 +19,16 @@ buildPythonPackage rec {
     hash = "sha256-l6rPnb1L/YKbqtbmMJ+mVzqvG+P2+nNcirBeRs7LJhw=";
   };
 
-  propagatedBuildInputs = [
-    idna
-  ];
+  propagatedBuildInputs = [ idna ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "rfc3986"
-  ];
+  pythonImportsCheck = [ "rfc3986" ];
 
   meta = with lib; {
     description = "Validating URI References per RFC 3986";
     homepage = "https://rfc3986.readthedocs.org";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/rfc3987/default.nix b/pkgs/development/python-modules/rfc3987/default.nix
index 51c6d04ea6dc5..25c77a68e95ef 100644
--- a/pkgs/development/python-modules/rfc3987/default.nix
+++ b/pkgs/development/python-modules/rfc3987/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "rfc3987";
diff --git a/pkgs/development/python-modules/rfc6555/default.nix b/pkgs/development/python-modules/rfc6555/default.nix
index a3986a490feb9..596a2ca07290e 100644
--- a/pkgs/development/python-modules/rfc6555/default.nix
+++ b/pkgs/development/python-modules/rfc6555/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,23 +20,19 @@ buildPythonPackage rec {
     hash = "sha256-Lmwgusc4EQlF0GHmMTUxWzUCjBk19cvurNwbOnT+1jM=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Disabling tests that require a functional DNS IPv{4,6} stack to pass
     "test_create_connection_has_proper_timeout"
   ];
 
-  pythonImportsCheck = [
-    "rfc6555"
-  ];
+  pythonImportsCheck = [ "rfc6555" ];
 
   meta = with lib; {
     description = "Python implementation of the Happy Eyeballs Algorithm";
     homepage = "https://github.com/sethmlarson/rfc6555";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/rfc7464/default.nix b/pkgs/development/python-modules/rfc7464/default.nix
index e65c9ec3ab2ab..1765b46be03e9 100644
--- a/pkgs/development/python-modules/rfc7464/default.nix
+++ b/pkgs/development/python-modules/rfc7464/default.nix
@@ -1,4 +1,8 @@
-{ buildPythonPackage, fetchPypi, lib }:
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+}:
 
 buildPythonPackage rec {
   pname = "rfc7464";
@@ -13,7 +17,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/moshez/rfc7464";
-    description = "RFC 7464 is a proposed standard for streaming JSON documents.";
+    description = "RFC 7464 is a proposed standard for streaming JSON documents";
     license = [ licenses.mit ];
     maintainers = with maintainers; [ shlevy ];
   };
diff --git a/pkgs/development/python-modules/rfc8785/default.nix b/pkgs/development/python-modules/rfc8785/default.nix
new file mode 100644
index 0000000000000..c3505ebc460e4
--- /dev/null
+++ b/pkgs/development/python-modules/rfc8785/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, flit-core
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "rfc8785";
+  version = "0.1.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "trailofbits";
+    repo = "rfc8785.py";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-hMH//DpxgNoNLZJ8XL8SikcTfj0w0FvlBMfnPCkqzZ4=";
+  };
+
+  build-system = [
+    flit-core
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "rfc8785" ];
+
+  meta = with lib; {
+    description = "Module for RFC8785 (JSON Canonicalization Scheme)";
+    homepage = "https://github.com/trailofbits/rfc8785.py";
+    changelog = "https://github.com/trailofbits/rfc8785.py/releases/tag/v${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/rfcat/default.nix b/pkgs/development/python-modules/rfcat/default.nix
index 9ee83c5fa7286..4112e826f7e49 100644
--- a/pkgs/development/python-modules/rfcat/default.nix
+++ b/pkgs/development/python-modules/rfcat/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, future
-, ipython
-, numpy
-, pyserial
-, pyusb
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  future,
+  ipython,
+  numpy,
+  pyserial,
+  pyusb,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -38,13 +39,9 @@ buildPythonPackage rec {
     cp etc/udev/rules.d/20-rfcat.rules $out/etc/udev/rules.d
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "rflib"
-  ];
+  pythonImportsCheck = [ "rflib" ];
 
   meta = with lib; {
     description = "Swiss Army knife of sub-GHz ISM band radio";
diff --git a/pkgs/development/python-modules/rflink/default.nix b/pkgs/development/python-modules/rflink/default.nix
index 354c66c41adc2..e5959e3a9b86d 100644
--- a/pkgs/development/python-modules/rflink/default.nix
+++ b/pkgs/development/python-modules/rflink/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, async-timeout
-, docopt
-, pyserial
-, pyserial-asyncio
-, setuptools
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  async-timeout,
+  docopt,
+  pyserial,
+  pyserial-asyncio,
+  setuptools,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -32,18 +33,14 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace setup.py \
       --replace "version=version_from_git()" "version='${version}'"
   '';
 
-  pythonImportsCheck = [
-    "rflink.protocol"
-  ];
+  pythonImportsCheck = [ "rflink.protocol" ];
 
   meta = with lib; {
     description = "Library and CLI tools for interacting with RFlink 433MHz transceiver";
diff --git a/pkgs/development/python-modules/rich-argparse-plus/default.nix b/pkgs/development/python-modules/rich-argparse-plus/default.nix
index e152ce267f4c4..159190d45e1d2 100644
--- a/pkgs/development/python-modules/rich-argparse-plus/default.nix
+++ b/pkgs/development/python-modules/rich-argparse-plus/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, rich
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  rich,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-oF2wuvyLYwObVJ4fhJl9b/sdfmQ2ahgKkfd9ZwObfPw=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    rich
-  ];
+  propagatedBuildInputs = [ rich ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "rich_argparse_plus"
-  ];
+  pythonImportsCheck = [ "rich_argparse_plus" ];
 
   disabledTests = [
     # Tests are comparing CLI output
diff --git a/pkgs/development/python-modules/rich-argparse/default.nix b/pkgs/development/python-modules/rich-argparse/default.nix
index 7dc2878d391d0..8edcfa9fbd951 100644
--- a/pkgs/development/python-modules/rich-argparse/default.nix
+++ b/pkgs/development/python-modules/rich-argparse/default.nix
@@ -1,38 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, rich
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  pytestCheckHook,
+  pythonOlder,
+  rich,
 }:
 
 buildPythonPackage rec {
   pname = "rich-argparse";
-  version = "1.4.0";
-  format = "pyproject";
+  version = "1.5.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "hamdanal";
     repo = "rich-argparse";
     rev = "refs/tags/v${version}";
-    hash = "sha256-iQ8x8UM0zmb2qYUpSh6RSEaBMrDpwY0ZHaJ9GJqn4Hs=";
+    hash = "sha256-kHGNjVx3d+JSsN/BpNua2rGD5S5sBfJvh1NyqQnziBI=";
   };
 
-  propagatedBuildInputs = [
-    hatchling
-    rich
-  ];
+  build-system = [ hatchling ];
+
+  dependencies = [ rich ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "rich_argparse"
-  ];
+  pythonImportsCheck = [ "rich_argparse" ];
 
   meta = with lib; {
-    description = "Format argparse help output using rich.";
+    description = "Format argparse help output using rich";
     homepage = "https://github.com/hamdanal/rich-argparse";
     changelog = "https://github.com/hamdanal/rich-argparse/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/rich-click/default.nix b/pkgs/development/python-modules/rich-click/default.nix
index e10c6b496a9fe..5e6c06ba8364d 100644
--- a/pkgs/development/python-modules/rich-click/default.nix
+++ b/pkgs/development/python-modules/rich-click/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, pythonOlder
-, rich
-, setuptools
-, typer
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  pythonOlder,
+  rich,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "rich-click";
-  version = "1.7.4";
+  version = "1.8.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,14 +20,12 @@ buildPythonPackage rec {
     owner = "ewels";
     repo = "rich-click";
     rev = "refs/tags/v${version}";
-    hash = "sha256-eqpxNurMHn4ClD0KjTQ7Yfny61tcYBRKlW74axjLI8A=";
+    hash = "sha256-7Avg8HcN9q0EUOnkvuM0oIbwTUGAY2ksbX3SOVZtPOc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     click
     rich
     typing-extensions
@@ -36,16 +34,14 @@ buildPythonPackage rec {
   # Module has no test
   doCheck = false;
 
-  pythonImportsCheck = [
-    "rich_click"
-  ];
+  pythonImportsCheck = [ "rich_click" ];
 
   meta = with lib; {
     description = "Module to format click help output nicely with rich";
-    mainProgram = "rich-click";
     homepage = "https://github.com/ewels/rich-click";
     changelog = "https://github.com/ewels/rich-click/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "rich-click";
   };
 }
diff --git a/pkgs/development/python-modules/rich-pixels/default.nix b/pkgs/development/python-modules/rich-pixels/default.nix
index 7b77e59b6c9fa..a5b94f5a9504e 100644
--- a/pkgs/development/python-modules/rich-pixels/default.nix
+++ b/pkgs/development/python-modules/rich-pixels/default.nix
@@ -1,63 +1,49 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, pytestCheckHook
-, syrupy
-, pillow
-, rich
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  pillow,
+  rich,
+  pytestCheckHook,
+  pythonOlder,
+  syrupy,
 }:
 
 buildPythonPackage rec {
   pname = "rich-pixels";
-  version = "2.2.0";
-  format = "pyproject";
+  version = "3.0.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "darrenburns";
     repo = "rich-pixels";
-    rev = version;
-    hash = "sha256-fbpnHEfBPWLSYhgETqKbdmmzt7Lu/4oKgetjgNvv04c=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Sqs0DOyxJBfZmm/SVSTMSmaaeRlusiSp6VBnJjKYjgQ=";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "fix-version.patch";
-      url = "https://github.com/darrenburns/rich-pixels/commit/ff1cc3fef789321831f29e9bf282ae6b337eddb2.patch";
-      hash = "sha256-58ZHBNg1RCuOfuE034qF1SbAgoiWMNlSG3c5pCSLUyI=";
-    })
-  ];
-
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  pythonRelaxDeps = [ "pillow" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  build-system = [ hatchling ];
 
-  checkInputs = [
-    syrupy
-  ];
-
-  propagatedBuildInputs = [
+  dependencies = [
     pillow
     rich
   ];
 
-  pythonRelaxDeps = [
-    "pillow"
+  nativeCheckInputs = [
+    pytestCheckHook
+    syrupy
   ];
 
   pythonImportsCheck = [ "rich_pixels" ];
 
   meta = with lib; {
-    description = "A Rich-compatible library for writing pixel images and ASCII art to the terminal";
+    description = "Rich-compatible library for writing pixel images and ASCII art to the terminal";
     homepage = "https://github.com/darrenburns/rich-pixels";
-    changelog = "https://github.com/darrenburns/rich-pixels/releases/tag/${src.rev}";
+    changelog = "https://github.com/darrenburns/rich-pixels/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
   };
diff --git a/pkgs/development/python-modules/rich-rst/default.nix b/pkgs/development/python-modules/rich-rst/default.nix
index 5db47dfc65ea1..277ba67562e8c 100644
--- a/pkgs/development/python-modules/rich-rst/default.nix
+++ b/pkgs/development/python-modules/rich-rst/default.nix
@@ -1,38 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, docutils
-, rich
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  docutils,
+  rich,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "rich-rst";
-  version = "1.2.0";
-  format = "pyproject";
+  version = "1.3.1";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "wasi-master";
-    repo = pname;
+    repo = "rich-rst";
     rev = "refs/tags/v${version}";
-    hash = "sha256-jFPboZ5/T2I6EuyVM+45lrLWen8Kqf94gWXS1WDf1qU=";
+    hash = "sha256-jbzGTEth5Qoc0ORFCS3sZMrGUpoQQOVsd+l3/zMWy20=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [ docutils rich ];
+  dependencies = [
+    docutils
+    rich
+  ];
 
-  # Module has no tests
-  doCheck = false;
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "rich_rst" ];
 
   meta = with lib; {
-    description = "A beautiful reStructuredText renderer for rich";
+    description = "Beautiful reStructuredText renderer for rich";
     homepage = "https://github.com/wasi-master/rich-rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ joelkoen ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/rich-theme-manager/default.nix b/pkgs/development/python-modules/rich-theme-manager/default.nix
new file mode 100644
index 0000000000000..f465b77b6ef6d
--- /dev/null
+++ b/pkgs/development/python-modules/rich-theme-manager/default.nix
@@ -0,0 +1,34 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  rich,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "rich-theme-manager";
+  version = "0.11.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "RhetTbull";
+    repo = "rich_theme_manager";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-nSNG+lWOPmh66I9EmPvWqbeceY/cu+zBpgVlDTNuHc0=";
+  };
+
+  build-system = [ poetry-core ];
+  dependencies = [ rich ];
+
+  pythonImportsCheck = [ "rich_theme_manager" ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "Define custom styles and themes for use with rich";
+    license = lib.licenses.mit;
+    homepage = "https://github.com/RhetTbull/rich_theme_manager";
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/rich/default.nix b/pkgs/development/python-modules/rich/default.nix
index 518be3f4e2fea..e32427b7b1e43 100644
--- a/pkgs/development/python-modules/rich/default.nix
+++ b/pkgs/development/python-modules/rich/default.nix
@@ -1,29 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# build-system
-, poetry-core
-
-# dependencies
-, markdown-it-py
-, pygments
-, typing-extensions
-
-# optional-dependencies
-, ipywidgets
-
-# tests
-, attrs
-, pytestCheckHook
-, setuptools
-
-# for passthru.tests
-, enrich
-, httpie
-, rich-rst
-, textual
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  markdown-it-py,
+  pygments,
+  typing-extensions,
+
+  # optional-dependencies
+  ipywidgets,
+
+  # tests
+  attrs,
+  pytestCheckHook,
+  setuptools,
+
+  # for passthru.tests
+  enrich,
+  httpie,
+  rich-rst,
+  textual,
 }:
 
 buildPythonPackage rec {
@@ -40,21 +41,15 @@ buildPythonPackage rec {
     hash = "sha256-7LvmPrCpHfPEfJ1r8IFnQhYkBstvtIrWYhGwcchlc0s=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     markdown-it-py
     pygments
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.9") [ typing-extensions ];
 
   passthru.optional-dependencies = {
-    jupyter = [
-      ipywidgets
-    ];
+    jupyter = [ ipywidgets ];
   };
 
   nativeCheckInputs = [
@@ -77,12 +72,15 @@ buildPythonPackage rec {
     "test_syntax_highlight_ranges"
   ];
 
-  pythonImportsCheck = [
-    "rich"
-  ];
+  pythonImportsCheck = [ "rich" ];
 
   passthru.tests = {
-    inherit enrich httpie rich-rst textual;
+    inherit
+      enrich
+      httpie
+      rich-rst
+      textual
+      ;
   };
 
   meta = with lib; {
@@ -90,6 +88,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Textualize/rich";
     changelog = "https://github.com/Textualize/rich/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ris joelkoen ];
+    maintainers = with maintainers; [ ris ];
   };
 }
diff --git a/pkgs/development/python-modules/riden/default.nix b/pkgs/development/python-modules/riden/default.nix
new file mode 100644
index 0000000000000..30c89f4e68e4f
--- /dev/null
+++ b/pkgs/development/python-modules/riden/default.nix
@@ -0,0 +1,50 @@
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  modbus-tk,
+  poetry-core,
+  pyserial,
+  pythonOlder,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "riden";
+  version = "1.2.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "geeksville";
+    repo = "riden";
+    rev = "refs/tags/${version}";
+    hash = "sha256-uR1CsVsGn/QC4krHaxl6GqRnTPbFdRaqyMEl2RVMHPU=";
+  };
+
+  build-system = [
+    poetry-core
+    setuptools
+  ];
+
+  dependencies = [
+    click
+    modbus-tk
+    pyserial
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "riden" ];
+
+  meta = with lib; {
+    description = "Module for Riden RD power supplies";
+    homepage = "https://github.com/geeksville/riden";
+    changelog = "https://github.com/geeksville/Riden/releases/tag/${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/ring-doorbell/default.nix b/pkgs/development/python-modules/ring-doorbell/default.nix
index 1ef168dbe4769..4bfbc9d1e54ab 100644
--- a/pkgs/development/python-modules/ring-doorbell/default.nix
+++ b/pkgs/development/python-modules/ring-doorbell/default.nix
@@ -1,55 +1,65 @@
 {
   lib,
+  aiofiles,
+  aiohttp,
+  aioresponses,
   asyncclick,
   buildPythonPackage,
   fetchPypi,
   firebase-messaging,
+  freezegun,
+  hatchling,
   oauthlib,
-  poetry-core,
   pytest-asyncio,
+  pytest-freezer,
   pytest-mock,
   pytest-socket,
   pytestCheckHook,
   pythonOlder,
   pytz,
-  requests,
-  requests-mock,
-  requests-oauthlib,
+  typing-extensions,
+  websockets,
 }:
 
 buildPythonPackage rec {
   pname = "ring-doorbell";
-  version = "0.8.11";
+  version = "0.9.5";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     pname = "ring_doorbell";
     inherit version;
-    hash = "sha256-XygVfIf6zlKy2kv/9TKLG8MpYX4YnzYIKiSG7nP5YI8=";
+    hash = "sha256-NnKcUr0SExXRDkNCIGU3LtwU1LIMAZzurn2Aoua1lzA=";
   };
 
-  build-system = [ poetry-core ];
+  pythonRelaxDeps = [ "requests-oauthlib" ];
+
+  build-system = [ hatchling ];
 
   dependencies = [
+    aiofiles
+    aiohttp
     asyncclick
     oauthlib
     pytz
-    requests
-    requests-oauthlib
+    typing-extensions
+    websockets
   ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     listen = [ firebase-messaging ];
   };
 
   nativeCheckInputs = [
+    aioresponses
+    freezegun
     pytest-asyncio
+    pytest-freezer
     pytest-mock
     pytest-socket
     pytestCheckHook
-    requests-mock
   ];
 
   pythonImportsCheck = [ "ring_doorbell" ];
@@ -57,7 +67,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Library to communicate with Ring Door Bell";
     homepage = "https://github.com/tchellomello/python-ring-doorbell";
-    changelog = "https://github.com/tchellomello/python-ring-doorbell/releases/tag/${version}";
+    changelog = "https://github.com/tchellomello/python-ring-doorbell/blob/${version}/CHANGELOG.md";
     license = licenses.lgpl3Plus;
     maintainers = with maintainers; [ graham33 ];
     mainProgram = "ring-doorbell";
diff --git a/pkgs/development/python-modules/rio-tiler/default.nix b/pkgs/development/python-modules/rio-tiler/default.nix
new file mode 100644
index 0000000000000..88e126d4d5ccf
--- /dev/null
+++ b/pkgs/development/python-modules/rio-tiler/default.nix
@@ -0,0 +1,66 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pytestCheckHook,
+  pythonOlder,
+
+  attrs,
+  boto3,
+  cachetools,
+  color-operations,
+  hatchling,
+  httpx,
+  morecantile,
+  numexpr,
+  numpy,
+  pydantic,
+  pystac,
+  rasterio,
+  rioxarray,
+}:
+
+buildPythonPackage rec {
+  pname = "rio-tiler";
+  version = "6.7.0";
+  pyproject = true;
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "cogeotiff";
+    repo = "rio-tiler";
+    rev = "refs/tags/${version}";
+    hash = "sha256-i70Bh7RHPgLLaqBo9vHRrJylsNE3Ly3xJq9j12Ch58E=";
+  };
+
+  build-system = [ hatchling ];
+
+  propagatedBuildInputs = [
+    attrs
+    cachetools
+    color-operations
+    httpx
+    morecantile
+    numexpr
+    numpy
+    pydantic
+    pystac
+    rasterio
+  ];
+
+  nativeCheckInputs = [
+    boto3
+    pytestCheckHook
+    rioxarray
+  ];
+
+  pythonImportsCheck = [ "rio_tiler" ];
+
+  meta = with lib; {
+    description = "User friendly Rasterio plugin to read raster datasets";
+    homepage = "https://cogeotiff.github.io/rio-tiler/";
+    license = licenses.bsd3;
+    maintainers = lib.teams.geospatial.members;
+  };
+}
diff --git a/pkgs/development/python-modules/rioxarray/default.nix b/pkgs/development/python-modules/rioxarray/default.nix
new file mode 100644
index 0000000000000..10a6c15d3cf19
--- /dev/null
+++ b/pkgs/development/python-modules/rioxarray/default.nix
@@ -0,0 +1,69 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  # build-system
+  setuptools,
+  # dependencies
+  numpy,
+  packaging,
+  pyproj,
+  rasterio,
+  xarray,
+  # tests
+  dask,
+  netcdf4,
+  pytestCheckHook,
+  stdenv,
+}:
+
+buildPythonPackage rec {
+  pname = "rioxarray";
+  version = "0.17.0";
+  pyproject = true;
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "corteva";
+    repo = "rioxarray";
+    rev = "refs/tags/${version}";
+    hash = "sha256-mOXyfkreQ55vWmPCG2U/ijcKZqzHoQQLfKArSh2fDmA=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    numpy
+    packaging
+    pyproj
+    rasterio
+    xarray
+  ];
+
+  nativeCheckInputs = [
+    dask
+    netcdf4
+    pytestCheckHook
+  ];
+
+  disabledTests =
+    [ "test_clip_geojson__no_drop" ]
+    ++ lib.optionals
+      (stdenv.hostPlatform.system == "aarch64-linux" || stdenv.hostPlatform.system == "aarch64-darwin")
+      [
+        # numerical errors
+        "test_clip_geojson"
+        "test_open_rasterio_mask_chunk_clip"
+      ];
+
+  pythonImportsCheck = [ "rioxarray" ];
+
+  meta = {
+    description = "geospatial xarray extension powered by rasterio";
+    homepage = "https://corteva.github.io/rioxarray/";
+    changelog = "https://github.com/corteva/rioxarray/releases/tag/${version}";
+    license = lib.licenses.asl20;
+    maintainers = lib.teams.geospatial.members;
+  };
+}
diff --git a/pkgs/development/python-modules/ripe-atlas-cousteau/default.nix b/pkgs/development/python-modules/ripe-atlas-cousteau/default.nix
index b02f1f9a72f0f..93a6308099c82 100644
--- a/pkgs/development/python-modules/ripe-atlas-cousteau/default.nix
+++ b/pkgs/development/python-modules/ripe-atlas-cousteau/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, jsonschema
-, pytestCheckHook
-, python-dateutil
-, python-socketio
-, pythonOlder
-, requests
-, websocket-client
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jsonschema,
+  pytestCheckHook,
+  python-dateutil,
+  python-socketio,
+  pythonOlder,
+  requests,
+  websocket-client,
 }:
 
 buildPythonPackage rec {
@@ -15,7 +16,6 @@ buildPythonPackage rec {
   version = "2.0.0";
   format = "setuptools";
 
-
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
@@ -42,9 +42,7 @@ buildPythonPackage rec {
     jsonschema
   ];
 
-  pythonImportsCheck = [
-    "ripe.atlas.cousteau"
-  ];
+  pythonImportsCheck = [ "ripe.atlas.cousteau" ];
 
   meta = with lib; {
     description = "Python client library for RIPE ATLAS API";
diff --git a/pkgs/development/python-modules/ripe-atlas-sagan/default.nix b/pkgs/development/python-modules/ripe-atlas-sagan/default.nix
index a9ed4bd3f52cc..c6d36a7b8849e 100644
--- a/pkgs/development/python-modules/ripe-atlas-sagan/default.nix
+++ b/pkgs/development/python-modules/ripe-atlas-sagan/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, pytz
-, ujson
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  pytz,
+  ujson,
 }:
 
 buildPythonPackage rec {
@@ -30,30 +31,22 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    fast = [
-      ujson
-    ];
+    fast = [ ujson ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests/*.py"
-  ];
+  pytestFlagsArray = [ "tests/*.py" ];
 
   disabledTests = [
     # This test fail for unknown reason, I suspect it to be flaky.
     "test_invalid_country_code"
   ];
 
-  pythonImportsCheck = [
-    "ripe.atlas.sagan"
-  ];
+  pythonImportsCheck = [ "ripe.atlas.sagan" ];
 
   meta = with lib; {
-    description = "A parsing library for RIPE Atlas measurements results";
+    description = "Parsing library for RIPE Atlas measurements results";
     homepage = "https://github.com/RIPE-NCC/ripe-atlas-sagan";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ raitobezarius ];
diff --git a/pkgs/development/python-modules/riprova/default.nix b/pkgs/development/python-modules/riprova/default.nix
index cafe14e01bd91..737f941f8dbbb 100644
--- a/pkgs/development/python-modules/riprova/default.nix
+++ b/pkgs/development/python-modules/riprova/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
 }:
 
-buildPythonPackage rec{
+buildPythonPackage rec {
   pname = "riprova";
   version = "0.3.1";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-FgFySbvBjcZU2bjo40/1O7glc6oFWW05jinEOfMWMVI=";
+    hash = "sha256-FgFySbvBjcZU2bjo40/1O7glc6oFWW05jinEOfMWMVI=";
   };
 
   propagatedBuildInputs = [ six ];
diff --git a/pkgs/development/python-modules/ripser/default.nix b/pkgs/development/python-modules/ripser/default.nix
index c71d9f0a03fde..318282f763a0a 100644
--- a/pkgs/development/python-modules/ripser/default.nix
+++ b/pkgs/development/python-modules/ripser/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchPypi
-, numpy
-, persim
-, pytestCheckHook
-, pythonOlder
-, scikit-learn
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchPypi,
+  numpy,
+  persim,
+  pytestCheckHook,
+  pythonOlder,
+  scikit-learn,
+  scipy,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-J5ctOvGtmg/e2ls7fN59LR4AbHedC9gKk6f8jIDIoFI=";
   };
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
   propagatedBuildInputs = [
     numpy
@@ -33,9 +32,7 @@ buildPythonPackage rec {
     persim
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     # specifically needed for darwin
@@ -44,15 +41,13 @@ buildPythonPackage rec {
     echo "backend: ps" > $HOME/.matplotlib/matplotlibrc
   '';
 
-  pythonImportsCheck = [
-    "ripser"
-  ];
+  pythonImportsCheck = [ "ripser" ];
 
   meta = with lib; {
-    description = "A Lean Persistent Homology Library for Python";
+    description = "Lean Persistent Homology Library for Python";
     homepage = "https://ripser.scikit-tda.org";
     changelog = "https://github.com/scikit-tda/ripser.py/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/riscof/default.nix b/pkgs/development/python-modules/riscof/default.nix
index eabaf0ded5305..8debd6ea4657e 100644
--- a/pkgs/development/python-modules/riscof/default.nix
+++ b/pkgs/development/python-modules/riscof/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, git
-, jinja2
-, pythonOlder
-, riscv-config
-, riscv-isac
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jinja2,
+  pythonOlder,
+  riscv-config,
+  riscv-isac,
 }:
 
 buildPythonPackage rec {
@@ -41,9 +41,7 @@ buildPythonPackage rec {
     jinja2
   ];
 
-  pythonImportsCheck = [
-    "riscof"
-  ];
+  pythonImportsCheck = [ "riscof" ];
 
   # No unitests available
   doCheck = false;
diff --git a/pkgs/development/python-modules/riscv-config/default.nix b/pkgs/development/python-modules/riscv-config/default.nix
index 298772e12cc76..c03e97c6232e4 100644
--- a/pkgs/development/python-modules/riscv-config/default.nix
+++ b/pkgs/development/python-modules/riscv-config/default.nix
@@ -3,17 +3,15 @@
   buildPythonPackage,
   cerberus,
   fetchFromGitHub,
-  fetchpatch,
   pythonOlder,
   pyyaml,
   ruamel-yaml,
   setuptools,
-  pythonRelaxDepsHook,
 }:
 
 buildPythonPackage rec {
   pname = "riscv-config";
-  version = "3.18.1";
+  version = "3.18.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -22,14 +20,13 @@ buildPythonPackage rec {
     owner = "riscv-software-src";
     repo = "riscv-config";
     rev = "refs/tags/${version}";
-    hash = "sha256-lBjSHfnuNPi4Ks5ZCRLqJx3/l4GMmMEEIud8ZVl/S4Q=";
+    hash = "sha256-eaHi6ezgU8gQYH97gCS2TzEzIP3F4zfn7uiA/To2Gmc=";
   };
 
   pythonRelaxDeps = [ "pyyaml" ];
 
   build-system = [ setuptools ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     cerberus
diff --git a/pkgs/development/python-modules/riscv-isac/default.nix b/pkgs/development/python-modules/riscv-isac/default.nix
index 19a6eea713194..5c6e305715eed 100644
--- a/pkgs/development/python-modules/riscv-isac/default.nix
+++ b/pkgs/development/python-modules/riscv-isac/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, click
-, colorlog
-, gitpython
-, pluggy
-, pyelftools
-, pytablewriter
-, pytestCheckHook
-, pyyaml
-, ruamel-yaml
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  click,
+  colorlog,
+  gitpython,
+  pluggy,
+  pyelftools,
+  pytablewriter,
+  pytestCheckHook,
+  pyyaml,
+  ruamel-yaml,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -44,16 +45,12 @@ buildPythonPackage rec {
     ruamel-yaml
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "riscv_isac"
-  ];
+  pythonImportsCheck = [ "riscv_isac" ];
 
   meta = with lib; {
-    description = "An ISA coverage extraction tool";
+    description = "ISA coverage extraction tool";
     mainProgram = "riscv_isac";
     homepage = "https://github.com/riscv/riscv-isac";
     changelog = "https://github.com/riscv-software-src/riscv-isac/blob/${version}/CHANGELOG.md";
diff --git a/pkgs/development/python-modules/rising/default.nix b/pkgs/development/python-modules/rising/default.nix
index 5df3998f80154..49b38e2e3426b 100644
--- a/pkgs/development/python-modules/rising/default.nix
+++ b/pkgs/development/python-modules/rising/default.nix
@@ -1,40 +1,60 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pytestCheckHook
-, pythonRelaxDepsHook
-, dill
-, lightning-utilities
-, numpy
-, torch
-, threadpoolctl
-, tqdm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  versioneer,
+
+  # dependencies
+  lightning-utilities,
+  numpy,
+  torch,
+  threadpoolctl,
+  tqdm,
+
+  # tests
+  dill,
+  pytestCheckHook,
+
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "rising";
   version = "0.3.0";
-  format = "setuptools";
-  disabled = pythonOlder "3.8";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "PhoenixDL";
-    repo = pname;
+    repo = "rising";
     rev = "refs/tags/v${version}";
     hash = "sha256-sBzVTst5Tp2oZZ+Xsg3M7uAMbucL6idlpYwHvib3EaY=";
   };
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
-
   pythonRelaxDeps = [ "lightning-utilities" ];
 
-  propagatedBuildInputs = [
-    lightning-utilities numpy torch threadpoolctl tqdm
+  # Remove vendorized versioneer (incompatible with python 3.12)
+  postPatch = ''
+    rm versioneer.py
+  '';
+
+  build-system = [ versioneer ];
+
+  dependencies = [
+    lightning-utilities
+    numpy
+    torch
+    threadpoolctl
+    tqdm
   ];
-  nativeCheckInputs = [ dill pytestCheckHook ];
-  disabledTests = lib.optionals (stdenv.isLinux && stdenv.isAarch64) [
+
+  nativeCheckInputs = [
+    dill
+    pytestCheckHook
+  ];
+
+  disabledTests = lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
     # RuntimeError: DataLoader worker (pid(s) <...>) exited unexpectedly:
     "test_progressive_resize_integration"
   ];
diff --git a/pkgs/development/python-modules/ritassist/default.nix b/pkgs/development/python-modules/ritassist/default.nix
index a23bb3df5deee..8a3691b307c41 100644
--- a/pkgs/development/python-modules/ritassist/default.nix
+++ b/pkgs/development/python-modules/ritassist/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, ciso8601
-, fetchPypi
-, geopy
-, pythonOlder
-, requests
-, sseclient
+{
+  lib,
+  buildPythonPackage,
+  ciso8601,
+  fetchPypi,
+  geopy,
+  pythonOlder,
+  requests,
+  sseclient,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ritassist"
-  ];
+  pythonImportsCheck = [ "ritassist" ];
 
   meta = with lib; {
     description = "Python client to access RitAssist and FleetGO API";
diff --git a/pkgs/development/python-modules/rjpl/default.nix b/pkgs/development/python-modules/rjpl/default.nix
index 8d5cfbc92aae1..439d207aa58dd 100644
--- a/pkgs/development/python-modules/rjpl/default.nix
+++ b/pkgs/development/python-modules/rjpl/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, requests
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  requests,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-GLNIpZuM3yuCnPyjBa8KjdaL5cFK8InluuY+LTCrimc=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "rjpl"
-  ];
+  pythonImportsCheck = [ "rjpl" ];
 
   meta = with lib; {
     description = "Library for interacting with the Rejseplanen API";
diff --git a/pkgs/development/python-modules/rjsmin/default.nix b/pkgs/development/python-modules/rjsmin/default.nix
index f2a7a7874e6f8..b3984446c404d 100644
--- a/pkgs/development/python-modules/rjsmin/default.nix
+++ b/pkgs/development/python-modules/rjsmin/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,14 +21,12 @@ buildPythonPackage rec {
   # tests auto-discovery
   doCheck = false;
 
-  pythonImportsCheck = [
-    "rjsmin"
-  ];
+  pythonImportsCheck = [ "rjsmin" ];
 
   meta = with lib; {
     description = "Module to minify Javascript";
     homepage = "http://opensource.perlig.de/rjsmin/";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/rki-covid-parser/default.nix b/pkgs/development/python-modules/rki-covid-parser/default.nix
index 4a9263f389c2a..f7e91699b9b26 100644
--- a/pkgs/development/python-modules/rki-covid-parser/default.nix
+++ b/pkgs/development/python-modules/rki-covid-parser/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,9 @@ buildPythonPackage rec {
     hash = "sha256-e0MJjE4zgBPL+vt9EkgsdGrgqUyKK/1S9ZFxy56PUjc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   nativeCheckInputs = [
     aioresponses
@@ -43,9 +40,7 @@ buildPythonPackage rec {
     "tests/test_endpoint_availibility.py"
   ];
 
-  pythonImportsCheck = [
-    "rki_covid_parser"
-  ];
+  pythonImportsCheck = [ "rki_covid_parser" ];
 
   meta = with lib; {
     description = "Python module for working with data from the Robert-Koch Institut";
diff --git a/pkgs/development/python-modules/rkm-codes/default.nix b/pkgs/development/python-modules/rkm-codes/default.nix
index 0a8869052d604..9fa267fa4b7d6 100644
--- a/pkgs/development/python-modules/rkm-codes/default.nix
+++ b/pkgs/development/python-modules/rkm-codes/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-CkLLZuWcNL8sqAupc7lHXu0DXUXrX3qwd1g/ekyHdw4=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  propagatedBuildInputs = [ setuptools ];
 
   # this has a circular dependency on quantiphy
   preBuild = ''
diff --git a/pkgs/development/python-modules/rlax/default.nix b/pkgs/development/python-modules/rlax/default.nix
index ceb8e9758619d..977db6b748ec6 100644
--- a/pkgs/development/python-modules/rlax/default.nix
+++ b/pkgs/development/python-modules/rlax/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, absl-py
-, chex
-, distrax
-, dm-env
-, jax
-, jaxlib
-, numpy
-, tensorflow-probability
-, dm-haiku
-, optax
-, pytest-xdist
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  absl-py,
+  chex,
+  distrax,
+  dm-env,
+  jax,
+  jaxlib,
+  numpy,
+  tensorflow-probability,
+  dm-haiku,
+  optax,
+  pytest-xdist,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -29,7 +30,8 @@ buildPythonPackage rec {
   };
 
   patches = [
-    (fetchpatch {  # Follow chex API change (https://github.com/google-deepmind/chex/pull/52)
+    (fetchpatch {
+      # Follow chex API change (https://github.com/google-deepmind/chex/pull/52)
       name = "replace-deprecated-chex-assertions";
       url = "https://github.com/google-deepmind/rlax/commit/30e7913a1102667137654d6e652a6c4b9e9ba1f4.patch";
       hash = "sha256-OPnuTKEtwZ28hzR1660v3DcktxTYjhR1xYvFbQvOhgs=";
@@ -54,9 +56,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "rlax"
-  ];
+  pythonImportsCheck = [ "rlax" ];
 
   disabledTests = [
     # RuntimeErrors
diff --git a/pkgs/development/python-modules/rlcard/default.nix b/pkgs/development/python-modules/rlcard/default.nix
new file mode 100644
index 0000000000000..e80a46e301a0e
--- /dev/null
+++ b/pkgs/development/python-modules/rlcard/default.nix
@@ -0,0 +1,76 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  numpy,
+  pip,
+  termcolor,
+  pytestCheckHook,
+  torch,
+  pythonAtLeast,
+}:
+
+buildPythonPackage rec {
+  pname = "rlcard";
+  version = "1.0.7";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "datamllab";
+    repo = "rlcard";
+    rev = "refs/tags/${version}";
+    hash = "sha256-SWj6DBItQzSM+nioV54a350Li7tbBaVXsQxNAqVgB0k=";
+  };
+
+  build-system = [
+    setuptools
+    wheel
+  ];
+
+  dependencies = [
+    numpy
+    # pip is required at runtime (https://github.com/datamllab/rlcard/blob/1.0.7/rlcard/utils/utils.py#L10)
+    pip
+    termcolor
+  ];
+
+  pythonImportsCheck = [ "rlcard" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    torch
+  ];
+
+  disabledTests = [
+    # AttributeError: module 'numpy' has no attribute 'int'.
+    # https://github.com/datamllab/rlcard/issues/266
+    "test_decode_action"
+    "test_get_legal_actions"
+    "test_get_perfect_information"
+    "test_get_player_id"
+    "test_init_game"
+    "test_is_deterministic"
+    "test_proceed_game"
+    "test_reset_and_extract_state"
+    "test_run"
+    "test_step"
+    "test_step"
+    "test_step_back"
+    "test_step_back"
+
+    # ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 3 dimensions. The detected shape was (1, 1, 5) + inhomogeneous part.
+    "test_reorganize"
+  ];
+
+  meta = with lib; {
+    description = "Reinforcement Learning / AI Bots in Card (Poker) Games - Blackjack, Leduc, Texas, DouDizhu, Mahjong, UNO";
+    homepage = "https://github.com/datamllab/rlcard";
+    changelog = "https://github.com/datamllab/rlcard/releases/tag/${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ GaetanLepage ];
+    # Relies on deprecated distutils
+    broken = pythonAtLeast "3.12";
+  };
+}
diff --git a/pkgs/development/python-modules/rlp/default.nix b/pkgs/development/python-modules/rlp/default.nix
index 8aeee9d0dd9c2..3c258f2b8feaf 100644
--- a/pkgs/development/python-modules/rlp/default.nix
+++ b/pkgs/development/python-modules/rlp/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, fetchFromGitHub
-, setuptools
-, buildPythonPackage
-, eth-utils
-, hypothesis
-, pytestCheckHook
+{
+  lib,
+  fetchFromGitHub,
+  setuptools,
+  buildPythonPackage,
+  eth-utils,
+  hypothesis,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,11 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-cRp+ZOPYs9kcqMKGaiYMOFBY+aPCyFqu+1/5wloLwqU=";
   };
 
-  build-system = [ setuptools];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    eth-utils
-  ];
+  propagatedBuildInputs = [ eth-utils ];
 
   nativeCheckInputs = [
     hypothesis
@@ -36,6 +35,6 @@ buildPythonPackage rec {
     description = "RLP serialization library";
     homepage = "https://github.com/ethereum/pyrlp";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/rmcl/default.nix b/pkgs/development/python-modules/rmcl/default.nix
index 001992f539eb3..eebfe1c329f84 100644
--- a/pkgs/development/python-modules/rmcl/default.nix
+++ b/pkgs/development/python-modules/rmcl/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, poetry-core
-, asks
-, trio
-, xdg
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  poetry-core,
+  asks,
+  trio,
+  xdg,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
       --replace '= "^' '= ">='
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     asks
diff --git a/pkgs/development/python-modules/rmrl/default.nix b/pkgs/development/python-modules/rmrl/default.nix
index 3b93126aa73c9..0dc783881414e 100644
--- a/pkgs/development/python-modules/rmrl/default.nix
+++ b/pkgs/development/python-modules/rmrl/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, pythonRelaxDepsHook
-, pdfrw
-, reportlab
-, rmscene
-, setuptools
-, svglib
-, xdg
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  pdfrw,
+  reportlab,
+  rmscene,
+  setuptools,
+  svglib,
+  xdg,
 }:
 
 buildPythonPackage rec {
@@ -29,7 +29,6 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = [
diff --git a/pkgs/development/python-modules/rmscene/default.nix b/pkgs/development/python-modules/rmscene/default.nix
index a7eb4d2c632ce..7da1d58a976d9 100644
--- a/pkgs/development/python-modules/rmscene/default.nix
+++ b/pkgs/development/python-modules/rmscene/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, pythonRelaxDepsHook
-, fetchFromGitHub
-, poetry-core
-, packaging
-, hypothesis
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  packaging,
+  hypothesis,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,16 +25,11 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "packaging"
-  ];
+  pythonRelaxDeps = [ "packaging" ];
 
-  propagatedBuildInputs = [
-    packaging
-  ];
+  propagatedBuildInputs = [ packaging ];
 
   pythonImportsCheck = [ "rmscene" ];
 
diff --git a/pkgs/development/python-modules/rmsd/default.nix b/pkgs/development/python-modules/rmsd/default.nix
index caa13ff5299f9..c60fcf298f082 100644
--- a/pkgs/development/python-modules/rmsd/default.nix
+++ b/pkgs/development/python-modules/rmsd/default.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
-, scipy
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+  scipy,
 }:
 
 buildPythonPackage rec {
@@ -24,6 +25,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/charnley/rmsd";
     license = licenses.bsd2;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ sheepforce markuskowa ];
+    maintainers = with maintainers; [
+      sheepforce
+      markuskowa
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/rnc2rng/default.nix b/pkgs/development/python-modules/rnc2rng/default.nix
index 90bfc37266f80..7b691f638b44e 100644
--- a/pkgs/development/python-modules/rnc2rng/default.nix
+++ b/pkgs/development/python-modules/rnc2rng/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, rply
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  rply,
 }:
 
 buildPythonPackage rec {
@@ -12,7 +13,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-3Z/7vWnQnLB+bnqM+A/ShwP9xtO5Am+HVrScvjMUZ2s=";
+    hash = "sha256-3Z/7vWnQnLB+bnqM+A/ShwP9xtO5Am+HVrScvjMUZ2s=";
   };
 
   propagatedBuildInputs = [ rply ];
diff --git a/pkgs/development/python-modules/rnginline/default.nix b/pkgs/development/python-modules/rnginline/default.nix
index acea2482f32cf..966dec934aa2f 100644
--- a/pkgs/development/python-modules/rnginline/default.nix
+++ b/pkgs/development/python-modules/rnginline/default.nix
@@ -1,37 +1,37 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, poetry-core
-, pythonRelaxDepsHook
-, lxml
-, docopt-ng
-, typing-extensions
-, importlib-metadata
-, importlib-resources
-, pytestCheckHook
-, mock
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  poetry-core,
+  lxml,
+  docopt-ng,
+  typing-extensions,
+  importlib-metadata,
+  importlib-resources,
+  pytestCheckHook,
+  mock,
 }:
 
 buildPythonPackage rec {
   pname = "rnginline";
   version = "1.0.0";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-JWqzs+OqOynIAWYVgGrZiuiCqObAgGe6rBt0DcP3U6E=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
-
   pythonRelaxDeps = [
     "docopt-ng"
+    "importlib-metadata"
+    "lxml"
   ];
 
-  propagatedBuildInputs = [
+  build-system = [ poetry-core ];
+
+
+  dependencies = [
     docopt-ng
     lxml
     typing-extensions
@@ -47,8 +47,9 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "rnginline" ];
 
   meta = with lib; {
-    description = "A Python library and command-line tool for loading multi-file RELAX NG schemas from arbitary URLs, and flattening them into a single RELAX NG schema";
+    description = "Python library and command-line tool for loading multi-file RELAX NG schemas from arbitary URLs, and flattening them into a single RELAX NG schema";
     homepage = "https://github.com/h4l/rnginline";
+    changelog = "https://github.com/h4l/rnginline/blob/${version}/CHANGELOG.md";
     license = licenses.asl20;
     maintainers = with maintainers; [ lesuisse ];
   };
diff --git a/pkgs/development/python-modules/rns/default.nix b/pkgs/development/python-modules/rns/default.nix
index 0df16e875cf18..d77410a53a8b9 100644
--- a/pkgs/development/python-modules/rns/default.nix
+++ b/pkgs/development/python-modules/rns/default.nix
@@ -1,16 +1,19 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, netifaces
-, pyserial
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  esptool,
+  fetchFromGitHub,
+  netifaces,
+  pyserial,
+  pythonOlder,
+  replaceVars,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "rns";
-  version = "0.7.3";
+  version = "0.7.9";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -19,14 +22,18 @@ buildPythonPackage rec {
     owner = "markqvist";
     repo = "Reticulum";
     rev = "refs/tags/${version}";
-    hash = "sha256-QcYjqqeXBKx+Ef00Bw1OJMWDMdQgp/fqh3r5yhsa0Kg=";
+    hash = "sha256-O3dxfO8MrTKaYRCBNygZlXKuIA3rjEr8TCtR/vrUYmo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
+  patches = [
+    (replaceVars ./unvendor-esptool.patch {
+      esptool = lib.getExe esptool;
+    })
   ];
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     cryptography
     netifaces
     pyserial
@@ -35,9 +42,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "RNS"
-  ];
+  pythonImportsCheck = [ "RNS" ];
 
   meta = with lib; {
     description = "Cryptography-based networking stack for wide-area networks";
diff --git a/pkgs/development/python-modules/rns/unvendor-esptool.patch b/pkgs/development/python-modules/rns/unvendor-esptool.patch
new file mode 100644
index 0000000000000..ed05812ddd5ae
--- /dev/null
+++ b/pkgs/development/python-modules/rns/unvendor-esptool.patch
@@ -0,0 +1,263 @@
+diff --git a/RNS/Utilities/rnodeconf.py b/RNS/Utilities/rnodeconf.py
+index 566df60..8f6201d 100755
+--- a/RNS/Utilities/rnodeconf.py
++++ b/RNS/Utilities/rnodeconf.py
+@@ -1453,18 +1453,17 @@ def main():
+                         print("\nReady to extract firmware images from the RNode")
+                         print("Press enter to start the extraction process")
+                         input()
+-                        extract_recovery_esptool()
+ 
+                         hash_f = open(EXT_DIR+"/extracted_rnode_firmware.version", "wb")
+                         hash_f.write(v_str.encode("utf-8"))
+                         hash_f.close()
+ 
+                         extraction_parts = [
+-                            ("bootloader", "python \""+CNF_DIR+"/recovery_esptool.py\" --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0x1000 0x4650 \""+EXT_DIR+"/extracted_rnode_firmware.bootloader\""),
+-                            ("partition table", "python \""+CNF_DIR+"/recovery_esptool.py\" --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0x8000 0xC00 \""+EXT_DIR+"/extracted_rnode_firmware.partitions\""),
+-                            ("app boot", "python \""+CNF_DIR+"/recovery_esptool.py\" --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0xe000 0x2000 \""+EXT_DIR+"/extracted_rnode_firmware.boot_app0\""),
+-                            ("application image", "python \""+CNF_DIR+"/recovery_esptool.py\" --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0x10000 0x200000 \""+EXT_DIR+"/extracted_rnode_firmware.bin\""),
+-                            ("console image", "python \""+CNF_DIR+"/recovery_esptool.py\" --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0x210000 0x1F0000 \""+EXT_DIR+"/extracted_console_image.bin\""),
++                            ("bootloader", "@esptool@ --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0x1000 0x4650 \""+EXT_DIR+"/extracted_rnode_firmware.bootloader\""),
++                            ("partition table", "@esptool@ --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0x8000 0xC00 \""+EXT_DIR+"/extracted_rnode_firmware.partitions\""),
++                            ("app boot", "@esptool@ --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0xe000 0x2000 \""+EXT_DIR+"/extracted_rnode_firmware.boot_app0\""),
++                            ("application image", "@esptool@ --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0x10000 0x200000 \""+EXT_DIR+"/extracted_rnode_firmware.bin\""),
++                            ("console image", "@esptool@ --chip esp32 --port "+port_path+" --baud "+args.baud_flash+" --before default_reset --after hard_reset read_flash 0x210000 0x1F0000 \""+EXT_DIR+"/extracted_console_image.bin\""),
+                         ]
+                         import subprocess, shlex
+                         for part, command in extraction_parts:
+@@ -2290,25 +2289,12 @@ def main():
+                     graceful_exit()
+             elif platform == ROM.PLATFORM_ESP32:
+                 numeric_version = float(selected_version)
+-                flasher_dir = UPD_DIR+"/"+selected_version
+-                flasher = flasher_dir+"/esptool.py"
+-                if not os.path.isfile(flasher):
+-                    if os.path.isfile(CNF_DIR+"/recovery_esptool.py"):
+-                        import shutil
+-                        if not os.path.isdir(flasher_dir):
+-                            os.makedirs(flasher_dir)
+-                        shutil.copy(CNF_DIR+"/recovery_esptool.py", flasher)
+-                        RNS.log("No flasher present, using recovery flasher to write firmware to device")
+-
+-                if os.path.isfile(flasher):
+-                    import stat
+-                    os.chmod(flasher, stat.S_IRWXU | stat.S_IRGRP | stat.S_IXGRP)
+ 
+-                if which(flasher) is not None:
++                if True:
+                     if fw_filename == "rnode_firmware_tbeam.zip":
+                         if numeric_version >= 1.55:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2326,7 +2312,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2344,7 +2330,7 @@ def main():
+                     elif fw_filename == "rnode_firmware_tbeam_sx1262.zip":
+                         if numeric_version >= 1.55:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2362,7 +2348,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2380,7 +2366,7 @@ def main():
+                     elif fw_filename == "rnode_firmware_lora32v10.zip":
+                         if numeric_version >= 1.59:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2398,7 +2384,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2416,7 +2402,7 @@ def main():
+                     elif fw_filename == "rnode_firmware_lora32v20.zip":
+                         if numeric_version >= 1.55:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2434,7 +2420,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2452,7 +2438,7 @@ def main():
+                     elif fw_filename == "rnode_firmware_lora32v21.zip":
+                         if numeric_version >= 1.55:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2470,7 +2456,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2487,7 +2473,7 @@ def main():
+                             ]
+                     elif fw_filename == "rnode_firmware_lora32v21_tcxo.zip":
+                         return [
+-                            sys.executable, flasher,
++                            "@esptool@",
+                             "--chip", "esp32",
+                             "--port", args.port,
+                             "--baud", args.baud_flash,
+@@ -2506,7 +2492,7 @@ def main():
+                     elif fw_filename == "rnode_firmware_heltec32v2.zip":
+                         if numeric_version >= 1.55:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2524,7 +2510,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2541,7 +2527,7 @@ def main():
+                             ]
+                     elif fw_filename == "rnode_firmware_heltec32v3.zip":
+                         return [
+-                            sys.executable, flasher,
++                            "@esptool@",
+                             "--chip", "esp32-s3",
+                             "--port", args.port,
+                             "--baud", args.baud_flash,
+@@ -2559,7 +2545,7 @@ def main():
+                     elif fw_filename == "rnode_firmware_featheresp32.zip":
+                         if numeric_version >= 1.55:
+                             return [
+-                               sys.executable,  flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2577,7 +2563,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2595,7 +2581,7 @@ def main():
+                     elif fw_filename == "rnode_firmware_esp32_generic.zip":
+                         if numeric_version >= 1.55:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2613,7 +2599,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2631,7 +2617,7 @@ def main():
+                     elif fw_filename == "rnode_firmware_ng20.zip":
+                         if numeric_version >= 1.55:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2649,7 +2635,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2667,7 +2653,7 @@ def main():
+                     elif fw_filename == "rnode_firmware_ng21.zip":
+                         if numeric_version >= 1.55:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2685,7 +2671,7 @@ def main():
+                             ]
+                         else:
+                             return [
+-                                sys.executable, flasher,
++                                "@esptool@",
+                                 "--chip", "esp32",
+                                 "--port", args.port,
+                                 "--baud", args.baud_flash,
+@@ -2702,7 +2688,7 @@ def main():
+                             ]
+                     elif fw_filename == "rnode_firmware_t3s3.zip":
+                         return [
+-                            sys.executable, flasher,
++                            "@esptool@",
+                             "--chip", "esp32s3",
+                             "--port", args.port,
+                             "--baud", args.baud_flash,
+@@ -2720,7 +2706,7 @@ def main():
+                         ]
+                     elif fw_filename == "extracted_rnode_firmware.zip":
+                         return [
+-                            sys.executable, flasher,
++                            "@esptool@",
+                             "--chip", "esp32",
+                             "--port", args.port,
+                             "--baud", args.baud_flash,
diff --git a/pkgs/development/python-modules/roadlib/default.nix b/pkgs/development/python-modules/roadlib/default.nix
index 77c05f8dc5972..eaaf3eff9faf3 100644
--- a/pkgs/development/python-modules/roadlib/default.nix
+++ b/pkgs/development/python-modules/roadlib/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "roadlib";
-  version = "0.24.0";
+  version = "0.26.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-+5vR2iTFu50PJIsj4sW6McH1sg3yyEIwk15W8Jk0GKA=";
+    hash = "sha256-qh+xVBqQ/bkXl7Xa6w+SIkQRwIUW5ut4yosGko+8xrY=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/roadrecon/default.nix b/pkgs/development/python-modules/roadrecon/default.nix
index 0f1f412919b22..87db63bab3a8e 100644
--- a/pkgs/development/python-modules/roadrecon/default.nix
+++ b/pkgs/development/python-modules/roadrecon/default.nix
@@ -1,19 +1,19 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, flask
-, flask-cors
-, flask-marshmallow
-, flask-sqlalchemy
-, marshmallow
-, marshmallow-sqlalchemy
-, openpyxl
-, pythonOlder
-, pythonRelaxDepsHook
-, roadlib
-, setuptools
-, sqlalchemy
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  flask,
+  flask-cors,
+  flask-marshmallow,
+  flask-sqlalchemy,
+  marshmallow,
+  marshmallow-sqlalchemy,
+  openpyxl,
+  pythonOlder,
+  roadlib,
+  setuptools,
+  sqlalchemy,
 }:
 
 buildPythonPackage rec {
@@ -28,12 +28,9 @@ buildPythonPackage rec {
     hash = "sha256-OEftVwU30tLP091Z5CIl67hkjjcqY+Qo04/wHZlbuFc=";
   };
 
-  pythonRelaxDeps = [
-    "flask"
-  ];
+  pythonRelaxDeps = [ "flask" ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -50,9 +47,7 @@ buildPythonPackage rec {
     sqlalchemy
   ];
 
-  pythonImportsCheck = [
-    "roadtools.roadrecon"
-  ];
+  pythonImportsCheck = [ "roadtools.roadrecon" ];
 
   meta = with lib; {
     description = "Azure AD recon";
diff --git a/pkgs/development/python-modules/roadtools/default.nix b/pkgs/development/python-modules/roadtools/default.nix
index 6ea6bc5138b2d..e1cdcf4001e4e 100644
--- a/pkgs/development/python-modules/roadtools/default.nix
+++ b/pkgs/development/python-modules/roadtools/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, roadrecon
-, roadlib
-, roadtx
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  roadrecon,
+  roadlib,
+  roadtx,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-Cqcd+bKkfYXCeJBXu6peMjBoA6gve2XBPdCAAuTKGEE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     roadrecon
@@ -30,9 +29,7 @@ buildPythonPackage rec {
     roadtx
   ];
 
-  pythonImportsCheck = [
-    "roadtools"
-  ];
+  pythonImportsCheck = [ "roadtools" ];
 
   meta = with lib; {
     description = "Azure AD tooling framework";
diff --git a/pkgs/development/python-modules/roadtx/default.nix b/pkgs/development/python-modules/roadtx/default.nix
index eca756a0f0338..d390acea281d0 100644
--- a/pkgs/development/python-modules/roadtx/default.nix
+++ b/pkgs/development/python-modules/roadtx/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "roadtx";
-  version = "1.8.1";
+  version = "1.8.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-hhxmwD1+mZtU/VmB8yXeQESh0AGtjhdpDXRG3+mYfEk=";
+    hash = "sha256-BJYBQBxgYbozY0rPgxpiduUxb6wEFBJxXY8TRVlLz5M=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/robomachine/default.nix b/pkgs/development/python-modules/robomachine/default.nix
index afcdf0ed3599d..00f5bce3267d3 100644
--- a/pkgs/development/python-modules/robomachine/default.nix
+++ b/pkgs/development/python-modules/robomachine/default.nix
@@ -1,12 +1,11 @@
-{ stdenv
-, lib
-, allpairspy
-, buildPythonPackage
-, fetchPypi
-, pyparsing
-, pythonRelaxDepsHook
-, robotframework
-, setuptools
+{
+  lib,
+  allpairspy,
+  buildPythonPackage,
+  fetchPypi,
+  pyparsing,
+  robotframework,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +20,6 @@ buildPythonPackage rec {
   };
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -31,17 +29,11 @@ buildPythonPackage rec {
     allpairspy
   ];
 
-  pythonRemoveDeps = [
-    "argparse"
-  ];
+  pythonRemoveDeps = [ "argparse" ];
 
-  pythonRelaxDeps = [
-    "pyparsing"
-  ];
+  pythonRelaxDeps = [ "pyparsing" ];
 
-  pythonImportsCheck = [
-    "robomachine"
-  ];
+  pythonImportsCheck = [ "robomachine" ];
 
   meta = with lib; {
     description = "Test data generator for Robot Framework";
diff --git a/pkgs/development/python-modules/robot-detection/default.nix b/pkgs/development/python-modules/robot-detection/default.nix
index 87475e14e0916..0e582aa3867b7 100644
--- a/pkgs/development/python-modules/robot-detection/default.nix
+++ b/pkgs/development/python-modules/robot-detection/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, six }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+}:
 
 buildPythonPackage rec {
   pname = "robot-detection";
diff --git a/pkgs/development/python-modules/robotframework-databaselibrary/default.nix b/pkgs/development/python-modules/robotframework-databaselibrary/default.nix
index e60162ea38d21..fa0b02658d20a 100644
--- a/pkgs/development/python-modules/robotframework-databaselibrary/default.nix
+++ b/pkgs/development/python-modules/robotframework-databaselibrary/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, robotframework
-, robotframework-excellib
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  robotframework,
+  robotframework-excellib,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "DatabaseLibrary" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Database Library contains utilities meant for Robot Framework";
@@ -41,5 +40,4 @@ buildPythonPackage rec {
     license = licenses.asl20;
     maintainers = with maintainers; [ talkara ];
   };
-
 }
diff --git a/pkgs/development/python-modules/robotframework-excellib/default.nix b/pkgs/development/python-modules/robotframework-excellib/default.nix
index 550cc45e8ca35..8810bfbac9a1b 100644
--- a/pkgs/development/python-modules/robotframework-excellib/default.nix
+++ b/pkgs/development/python-modules/robotframework-excellib/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, openpyxl
-, robotframework
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  openpyxl,
+  robotframework,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-ZzAwlYM8DgWD1hfWRnY8u2RnZc3V368kgigBApeDZYg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     openpyxl
diff --git a/pkgs/development/python-modules/robotframework-pythonlibcore/default.nix b/pkgs/development/python-modules/robotframework-pythonlibcore/default.nix
index 39feab338d240..0a24bb1ca9dfd 100644
--- a/pkgs/development/python-modules/robotframework-pythonlibcore/default.nix
+++ b/pkgs/development/python-modules/robotframework-pythonlibcore/default.nix
@@ -1,19 +1,19 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, fetchpatch2
-, setuptools
-, robotframework
-, approvaltests
-, pytest-mockito
-, pytestCheckHook
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  robotframework,
+  approvaltests,
+  pytest-mockito,
+  pytestCheckHook,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "robotframework-pythonlibcore";
-  version = "4.4.0";
+  version = "4.4.1";
 
   disabled = pythonOlder "3.8";
 
@@ -23,23 +23,12 @@ buildPythonPackage rec {
     owner = "robotframework";
     repo = "PythonLibCore";
     rev = "refs/tags/v${version}";
-    hash = "sha256-282A4EW88z6ODSIEIIeBbN8YO491rwI4M7njI7kL3XQ=";
+    hash = "sha256-5RUi65+DljCqWoB8vZxc0hyIefEFOWuKluplXrD0SkI=";
   };
 
-  patches = [
-    (fetchpatch2 {
-      url = "https://github.com/robotframework/PythonLibCore/commit/8b756a4bd119d660109437023789bfada21bdc78.patch";
-      hash = "sha256-4NtgkGbIj9gH9Det6VNh1MpGSGroESxQ8X2ZTeoX/zU=";
-    })
-  ];
-
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    robotframework
-  ];
+  dependencies = [ robotframework ];
 
   nativeCheckInputs = [
     approvaltests
diff --git a/pkgs/development/python-modules/robotframework-requests/default.nix b/pkgs/development/python-modules/robotframework-requests/default.nix
index d1b6f21df06be..38080bd66615f 100644
--- a/pkgs/development/python-modules/robotframework-requests/default.nix
+++ b/pkgs/development/python-modules/robotframework-requests/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, lxml
-, pytestCheckHook
-, pythonOlder
-, requests
-, robotframework
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxml,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  robotframework,
 }:
 
 buildPythonPackage rec {
@@ -28,22 +29,16 @@ buildPythonPackage rec {
     robotframework
   ];
 
-  buildInputs = [
-    pytestCheckHook
-  ];
+  buildInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "RequestsLibrary"
-  ];
+  pythonImportsCheck = [ "RequestsLibrary" ];
 
-  pytestFlagsArray = [
-    "utests"
-  ];
+  pytestFlagsArray = [ "utests" ];
 
   meta = with lib; {
     description = "Robot Framework keyword library wrapper around the HTTP client library requests";
     homepage = "https://github.com/bulkan/robotframework-requests";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/robotframework-selenium2library/default.nix b/pkgs/development/python-modules/robotframework-selenium2library/default.nix
index c66d7c6ad646b..c9567e83f16ef 100644
--- a/pkgs/development/python-modules/robotframework-selenium2library/default.nix
+++ b/pkgs/development/python-modules/robotframework-selenium2library/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, robotframework-seleniumlibrary }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  robotframework-seleniumlibrary,
+}:
 
 buildPythonPackage rec {
   version = "3.0.0";
@@ -21,5 +26,4 @@ buildPythonPackage rec {
     license = licenses.asl20;
     maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/robotframework-seleniumlibrary/default.nix b/pkgs/development/python-modules/robotframework-seleniumlibrary/default.nix
index a1130eaac619a..c32adc8dc3094 100644
--- a/pkgs/development/python-modules/robotframework-seleniumlibrary/default.nix
+++ b/pkgs/development/python-modules/robotframework-seleniumlibrary/default.nix
@@ -1,19 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, robotframework
-, robotframework-pythonlibcore
-, selenium
-, approvaltests
-, pytest-mockito
-, pytestCheckHook
-, robotstatuschecker
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  click,
+  robotframework,
+  robotframework-pythonlibcore,
+  selenium,
+  approvaltests,
+  pytest-mockito,
+  pytestCheckHook,
+  robotstatuschecker,
 }:
 
 buildPythonPackage rec {
   pname = "robotframework-seleniumlibrary";
-  version = "6.3.0";
+  version = "6.6.1";
   pyproject = true;
 
   # no tests included in PyPI tarball
@@ -21,14 +23,13 @@ buildPythonPackage rec {
     owner = "robotframework";
     repo = "SeleniumLibrary";
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-/bYk8S9fGTsftBokz1FH+7HwdhhtAvZgtQscUESTsjY=";
+    sha256 = "sha256-ULY0FH1RFQIlhS45LU3vUKi6urZJHiDgi6NdqU5tV2g=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    click
     robotframework
     robotframework-pythonlibcore
     selenium
@@ -45,11 +46,13 @@ buildPythonPackage rec {
     mkdir utest/output_dir
   '';
 
-  meta = with lib; {
+  __darwinAllowLocalNetworking = true;
+
+  meta = {
     changelog = "https://github.com/robotframework/SeleniumLibrary/blob/${src.rev}/docs/SeleniumLibrary-${version}.rst";
     description = "Web testing library for Robot Framework";
     homepage = "https://github.com/robotframework/SeleniumLibrary";
-    license = licenses.asl20;
-    maintainers = [ ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ dotlambda ];
   };
 }
diff --git a/pkgs/development/python-modules/robotframework-sshlibrary/default.nix b/pkgs/development/python-modules/robotframework-sshlibrary/default.nix
index 0a55d66b0a60d..c8717a2ed2ace 100644
--- a/pkgs/development/python-modules/robotframework-sshlibrary/default.nix
+++ b/pkgs/development/python-modules/robotframework-sshlibrary/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, robotframework
-, paramiko
-, scp
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  robotframework,
+  paramiko,
+  scp,
 }:
 
 buildPythonPackage rec {
@@ -19,12 +20,15 @@ buildPythonPackage rec {
   # unit tests are impure
   doCheck = false;
 
-  propagatedBuildInputs = [ robotframework paramiko scp ];
+  propagatedBuildInputs = [
+    robotframework
+    paramiko
+    scp
+  ];
 
   meta = with lib; {
     description = "SSHLibrary is a Robot Framework test library for SSH and SFTP";
     homepage = "https://github.com/robotframework/SSHLibrary";
     license = licenses.asl20;
   };
-
 }
diff --git a/pkgs/development/python-modules/robotframework-tools/default.nix b/pkgs/development/python-modules/robotframework-tools/default.nix
index 48cf214986c2c..048822afb1d04 100644
--- a/pkgs/development/python-modules/robotframework-tools/default.nix
+++ b/pkgs/development/python-modules/robotframework-tools/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, robotframework
-, moretools
-, path
-, six
-, zetup
-, modeled
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  robotframework,
+  moretools,
+  path,
+  six,
+  zetup,
+  modeled,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/robotframework/default.nix b/pkgs/development/python-modules/robotframework/default.nix
index f87fe2bdd37a7..ddc6071451c51 100644
--- a/pkgs/development/python-modules/robotframework/default.nix
+++ b/pkgs/development/python-modules/robotframework/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, jsonschema
-, python
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  jsonschema,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "robotframework";
-  version = "7.0";
+  version = "7.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,16 +19,12 @@ buildPythonPackage rec {
     owner = "robotframework";
     repo = "robotframework";
     rev = "refs/tags/v${version}";
-    hash = "sha256-IyOm2MTHj2rOew/IkyGIfI4XZSFU88+Tx8KHKIRT2G4=";
+    hash = "sha256-nzkgJdSWbFcAnAqRTq4+Wy1lqdz+Xxf2i4RKnj/A5SA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    jsonschema
-  ];
+  nativeCheckInputs = [ jsonschema ];
 
   checkPhase = ''
     ${python.interpreter} utest/run.py
diff --git a/pkgs/development/python-modules/robotstatuschecker/default.nix b/pkgs/development/python-modules/robotstatuschecker/default.nix
index 949945515c225..927dcf59c2169 100644
--- a/pkgs/development/python-modules/robotstatuschecker/default.nix
+++ b/pkgs/development/python-modules/robotstatuschecker/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, robotframework
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  robotframework,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
       --replace-fail BuiltIn.Log Log
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [ robotframework ];
 
@@ -40,7 +39,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A tool for checking that Robot Framework test cases have expected statuses and log messages";
+    description = "Tool for checking that Robot Framework test cases have expected statuses and log messages";
     homepage = "https://github.com/robotframework/statuschecker";
     license = licenses.asl20;
     maintainers = [ ];
diff --git a/pkgs/development/python-modules/robotsuite/default.nix b/pkgs/development/python-modules/robotsuite/default.nix
index ffc86ec86815b..dc19ae15154e8 100644
--- a/pkgs/development/python-modules/robotsuite/default.nix
+++ b/pkgs/development/python-modules/robotsuite/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, lxml
-, robotframework
-, pytestCheckHook
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  lxml,
+  robotframework,
+  pytestCheckHook,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Python unittest test suite for Robot Framework";
diff --git a/pkgs/development/python-modules/rocket-errbot/default.nix b/pkgs/development/python-modules/rocket-errbot/default.nix
index 9d86e73bd8517..57c9d2eeae31e 100644
--- a/pkgs/development/python-modules/rocket-errbot/default.nix
+++ b/pkgs/development/python-modules/rocket-errbot/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchPypi, fetchpatch, buildPythonPackage }:
+{
+  lib,
+  fetchPypi,
+  fetchpatch,
+  buildPythonPackage,
+}:
 
 buildPythonPackage rec {
   pname = "rocket-errbot";
@@ -11,12 +16,14 @@ buildPythonPackage rec {
   };
 
   # remove with 1.2.6
-  patches = [ (fetchpatch {
-    # https://github.com/errbotio/rocket/pull/1
-    name = "errbotio-rocket-pull-1.patch";
-    url = "https://github.com/errbotio/rocket/compare/f1a52fe17164f83bccce5e6a1935fc5071c2265f...d69adcd49de5d78bd80f952a2ee31e6a0bac4e3d.patch";
-    sha256 = "1s668yv5b86b78vbqwhcl44k2l16c9bhk3199yy9hayf0vkxnwif";
-  }) ];
+  patches = [
+    (fetchpatch {
+      # https://github.com/errbotio/rocket/pull/1
+      name = "errbotio-rocket-pull-1.patch";
+      url = "https://github.com/errbotio/rocket/compare/f1a52fe17164f83bccce5e6a1935fc5071c2265f...d69adcd49de5d78bd80f952a2ee31e6a0bac4e3d.patch";
+      sha256 = "1s668yv5b86b78vbqwhcl44k2l16c9bhk3199yy9hayf0vkxnwif";
+    })
+  ];
 
   meta = {
     homepage = "https://github.com/errbotio/rocket";
@@ -24,4 +31,3 @@ buildPythonPackage rec {
     license = lib.licenses.mit;
   };
 }
-
diff --git a/pkgs/development/python-modules/rocketchat-api/default.nix b/pkgs/development/python-modules/rocketchat-api/default.nix
new file mode 100644
index 0000000000000..4593f30b8db2f
--- /dev/null
+++ b/pkgs/development/python-modules/rocketchat-api/default.nix
@@ -0,0 +1,44 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  packaging,
+  requests,
+}:
+
+buildPythonPackage rec {
+  pname = "rocketchat-api";
+  version = "1.32.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "jadolg";
+    repo = "rocketchat_API";
+    rev = "refs/tags/${version}";
+    hash = "sha256-mzcesoBU8sOznAgvi2u8NsUheyLXPZuyIkGghbc556c=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    packaging
+    requests
+  ];
+
+  pythonImportsCheck = [
+    "rocketchat_API"
+    "rocketchat_API.APIExceptions"
+    "rocketchat_API.APISections"
+  ];
+
+  # requires running a Rocket.Chat server
+  doCheck = false;
+
+  meta = {
+    description = "Python API wrapper for Rocket.Chat";
+    homepage = "https://github.com/jadolg/rocketchat_API";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/roku/default.nix b/pkgs/development/python-modules/roku/default.nix
index 354e2f650fac7..5041ec57ab1a1 100644
--- a/pkgs/development/python-modules/roku/default.nix
+++ b/pkgs/development/python-modules/roku/default.nix
@@ -1,4 +1,11 @@
-{ lib, fetchFromGitHub, buildPythonPackage, requests, pytest, flask, isPy27
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  requests,
+  pytest,
+  flask,
+  isPy27,
 }:
 
 buildPythonPackage rec {
@@ -16,11 +23,14 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ requests ];
 
-  nativeCheckInputs = [ pytest flask ];
+  nativeCheckInputs = [
+    pytest
+    flask
+  ];
   pythonImportsCheck = [ "roku" ];
 
   meta = with lib; {
-    description = "Screw remotes. Control your Roku with Python.";
+    description = "Screw remotes. Control your Roku with Python";
     homepage = "https://github.com/jcarbaugh/python-roku";
     license = licenses.bsd3;
   };
diff --git a/pkgs/development/python-modules/rokuecp/default.nix b/pkgs/development/python-modules/rokuecp/default.nix
index 0a204c11be28a..f8cec672c27a6 100644
--- a/pkgs/development/python-modules/rokuecp/default.nix
+++ b/pkgs/development/python-modules/rokuecp/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, aiohttp
-, aresponses
-, awesomeversion
-, backoff
-, buildPythonPackage
-, cachetools
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytest-freezegun
-, pytestCheckHook
-, pythonOlder
-, xmltodict
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  awesomeversion,
+  backoff,
+  buildPythonPackage,
+  cachetools,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytest-freezegun,
+  pytestCheckHook,
+  pythonOlder,
+  xmltodict,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "rokuecp";
-  version = "0.19.2";
-  format = "pyproject";
+  version = "0.19.4";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
@@ -26,14 +27,18 @@ buildPythonPackage rec {
     owner = "ctalkington";
     repo = "python-rokuecp";
     rev = "refs/tags/${version}";
-    hash = "sha256-L6uedckc2lEQ6CUlQGEyDhnuVsxRRgDQJUEsZTfm2sU=";
+    hash = "sha256-GotVSRSMdbAtDmVEXNizf5Pf/02sva1R/6ULL6h7ciY=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail 'version = "0.0.0"' 'version = "${version}"' \
+      --replace-fail "--cov" ""
+  '';
+
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     backoff
     cachetools
@@ -49,12 +54,6 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace 'version = "0.0.0"' 'version = "${version}"' \
-      --replace "--cov" ""
-  '';
-
   disabledTests = [
     # Network related tests are having troube in the sandbox
     "test_resolve_hostname"
@@ -66,9 +65,7 @@ buildPythonPackage rec {
     "test_get_tv_channels_single_channel"
   ];
 
-  pythonImportsCheck = [
-    "rokuecp"
-  ];
+  pythonImportsCheck = [ "rokuecp" ];
 
   meta = with lib; {
     description = "Asynchronous Python client for Roku (ECP)";
diff --git a/pkgs/development/python-modules/rollbar/default.nix b/pkgs/development/python-modules/rollbar/default.nix
index 26edb9046504f..cd71a84d64132 100644
--- a/pkgs/development/python-modules/rollbar/default.nix
+++ b/pkgs/development/python-modules/rollbar/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, aiocontextvars
-, blinker
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, httpx
-, mock
-, pytestCheckHook
-, requests
-, six
-, pythonOlder
-, webob
+{
+  lib,
+  aiocontextvars,
+  blinker,
+  buildPythonPackage,
+  fetchPypi,
+  httpx,
+  mock,
+  pytestCheckHook,
+  requests,
+  six,
+  pythonOlder,
+  webob,
 }:
 
 buildPythonPackage rec {
@@ -44,15 +44,13 @@ buildPythonPackage rec {
   # https://github.com/rollbar/pyrollbar/pull/340
   doCheck = false;
 
-  pythonImportsCheck = [
-    "rollbar"
-  ];
+  pythonImportsCheck = [ "rollbar" ];
 
   meta = with lib; {
     description = "Error tracking and logging from Python to Rollbar";
     mainProgram = "rollbar";
     homepage = "https://github.com/rollbar/pyrollbar";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/roman/default.nix b/pkgs/development/python-modules/roman/default.nix
index f1a0ac31e1e6a..83ab749a7889f 100644
--- a/pkgs/development/python-modules/roman/default.nix
+++ b/pkgs/development/python-modules/roman/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -19,5 +20,4 @@ buildPythonPackage rec {
     homepage = "https://pypi.python.org/pypi/roman";
     license = licenses.psfl;
   };
-
 }
diff --git a/pkgs/development/python-modules/ronin/default.nix b/pkgs/development/python-modules/ronin/default.nix
deleted file mode 100644
index 5b001aa392a39..0000000000000
--- a/pkgs/development/python-modules/ronin/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, blessings
-, colorama
-, glob2
-}:
-
-buildPythonPackage rec {
-  pname = "ronin";
-  version = "1.1.1";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit version pname;
-    hash = "sha256-5gZ8S0NR4JzKBIdi/xYtVmFg9ObbCSkT7sz+OKWnK/U=";
-  };
-
-  propagatedBuildInputs = [
-    blessings
-    colorama
-    glob2
-  ];
-
-  pythonImportsCheck = [
-    "ronin"
-  ];
-
-  meta = with lib; {
-    homepage = "https://github.com/tliron/ronin/";
-    description = "A straightforward but powerful build system based on Ninja and Python";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ AndersonTorres ];
-  };
-}
diff --git a/pkgs/development/python-modules/roombapy/default.nix b/pkgs/development/python-modules/roombapy/default.nix
index 465da76efe4ba..e2196301166a1 100644
--- a/pkgs/development/python-modules/roombapy/default.nix
+++ b/pkgs/development/python-modules/roombapy/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, amqtt
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, mashumaro
-, orjson
-, paho-mqtt
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, tabulate
+{
+  lib,
+  amqtt,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  mashumaro,
+  orjson,
+  paho-mqtt,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  tabulate,
 }:
 
 buildPythonPackage rec {
@@ -30,12 +30,9 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "orjson"
-  ];
+  pythonRelaxDeps = [ "orjson" ];
 
   propagatedBuildInputs = [
     mashumaro
@@ -64,9 +61,7 @@ buildPythonPackage rec {
     "test_roomba_connect"
   ];
 
-  pythonImportsCheck = [
-    "roombapy"
-  ];
+  pythonImportsCheck = [ "roombapy" ];
 
   meta = with lib; {
     description = "Python program and library to control Wi-Fi enabled iRobot Roombas";
diff --git a/pkgs/development/python-modules/roonapi/default.nix b/pkgs/development/python-modules/roonapi/default.nix
index 7c8935a6def99..76f93dc339052 100644
--- a/pkgs/development/python-modules/roonapi/default.nix
+++ b/pkgs/development/python-modules/roonapi/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, ifaddr
-, poetry-core
-, pythonOlder
-, requests
-, six
-, websocket-client
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ifaddr,
+  poetry-core,
+  pythonOlder,
+  requests,
+  six,
+  websocket-client,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-6wQsaZ50J2xIPXzICglg5pf8U0r4tL8iqcbdwjZadwU=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     ifaddr
@@ -37,9 +36,7 @@ buildPythonPackage rec {
   # Tests require access to the Roon API
   doCheck = false;
 
-  pythonImportsCheck = [
-    "roonapi"
-  ];
+  pythonImportsCheck = [ "roonapi" ];
 
   meta = with lib; {
     description = "Python library to interface with the Roon API";
diff --git a/pkgs/development/python-modules/rope/default.nix b/pkgs/development/python-modules/rope/default.nix
index e027b1922ec9c..d3a1408149f7c 100644
--- a/pkgs/development/python-modules/rope/default.nix
+++ b/pkgs/development/python-modules/rope/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytoolconfig
-, pytest-timeout
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytoolconfig,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,13 +23,9 @@ buildPythonPackage rec {
     hash = "sha256-g/fta5gW/xPs3VaVuLtikfLhqCKyy1AKRnOcOXjQ8bA=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    pytoolconfig
-  ] ++ pytoolconfig.optional-dependencies.global;
+  dependencies = [ pytoolconfig ] ++ pytoolconfig.optional-dependencies.global;
 
   __darwinAllowLocalNetworking = true;
 
@@ -48,6 +45,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/python-rope/rope";
     changelog = "https://github.com/python-rope/rope/blob/${version}/CHANGELOG.md";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ropgadget/default.nix b/pkgs/development/python-modules/ropgadget/default.nix
index d0ae5b7aeec04..53908cb4db730 100644
--- a/pkgs/development/python-modules/ropgadget/default.nix
+++ b/pkgs/development/python-modules/ropgadget/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, capstone
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  capstone,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-6m8opcTM4vrK+VCPXxNhZttUq6YmS8swLUDhjyfinWE=";
   };
 
-  propagatedBuildInputs = [
-    capstone
-  ];
+  propagatedBuildInputs = [ capstone ];
 
   # Test suite is working with binaries
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ropgadget"
-  ];
+  pythonImportsCheck = [ "ropgadget" ];
 
   meta = with lib; {
     description = "Tool to search for gadgets in binaries to facilitate ROP exploitation";
diff --git a/pkgs/development/python-modules/ropper/default.nix b/pkgs/development/python-modules/ropper/default.nix
index 973b11de4728b..b7f12332711e3 100644
--- a/pkgs/development/python-modules/ropper/default.nix
+++ b/pkgs/development/python-modules/ropper/default.nix
@@ -1,11 +1,11 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, capstone
-, filebytes
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  capstone,
+  filebytes,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -27,13 +27,9 @@ buildPythonPackage rec {
     filebytes
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ropper"
-  ];
+  pythonImportsCheck = [ "ropper" ];
 
   meta = with lib; {
     description = "Show information about files in different file formats";
@@ -41,6 +37,5 @@ buildPythonPackage rec {
     homepage = "https://scoding.de/ropper/";
     license = licenses.bsd3;
     maintainers = with maintainers; [ bennofs ];
-    broken = stdenv.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/rotary-embedding-torch/default.nix b/pkgs/development/python-modules/rotary-embedding-torch/default.nix
index a04262e401735..3f314290871d6 100644
--- a/pkgs/development/python-modules/rotary-embedding-torch/default.nix
+++ b/pkgs/development/python-modules/rotary-embedding-torch/default.nix
@@ -1,27 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# build-system
-, setuptools
-, wheel
-
-# dependencies
-, beartype
-, einops
-, torch
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+  wheel,
+
+  # dependencies
+  beartype,
+  einops,
+  torch,
 }:
 
 buildPythonPackage rec {
   pname = "rotary-embedding-torch";
-  version = "0.5.3";
+  version = "0.8.3";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "lucidrains";
     repo = "rotary-embedding-torch";
     rev = "refs/tags/${version}";
-    hash = "sha256-CCz/va5oydgU1JRDHKooRezbDbeGZHtD8Zy6fWJ2uRg=";
+    hash = "sha256-oxlWx3cB+gsFwSre+e8e792Y012zOzhUrO0wxEwzrgI=";
   };
 
   nativeBuildInputs = [
@@ -35,9 +36,7 @@ buildPythonPackage rec {
     torch
   ];
 
-  pythonImportsCheck = [
-    "rotary_embedding_torch"
-  ];
+  pythonImportsCheck = [ "rotary_embedding_torch" ];
 
   doCheck = false; # no tests
 
diff --git a/pkgs/development/python-modules/rouge-score/default.nix b/pkgs/development/python-modules/rouge-score/default.nix
index 09d2bcc1dc81d..adc543b1d907c 100644
--- a/pkgs/development/python-modules/rouge-score/default.nix
+++ b/pkgs/development/python-modules/rouge-score/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, fetchPypi
-, fetchFromGitHub
-, python
-, buildPythonPackage
-, absl-py
-, nltk
-, numpy
-, six
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  absl-py,
+  nltk,
+  numpy,
+  six,
+  pytestCheckHook,
+  pythonOlder,
 }:
 let
   testdata = fetchFromGitHub {
@@ -18,10 +19,11 @@ let
     rev = "1d4d2f1aa6f2883a790d2ae46a6ee8ab150d8f31";
     hash = "sha256-ojqk6U2caS7Xz4iGUC9aQVHrKb2QNvMlPuQAL/jJat0=";
   };
-in buildPythonPackage rec {
+in
+buildPythonPackage rec {
   pname = "rouge-score";
   version = "0.1.2";
-  format = "setuptools";
+  pyproject = true;
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
@@ -34,10 +36,19 @@ in buildPythonPackage rec {
   # the tar file from pypi doesn't come with the test data
   postPatch = ''
     substituteInPlace rouge_score/test_util.py \
-      --replace 'os.path.join(os.path.dirname(__file__), "testdata")' '"${testdata}/rouge/testdata/"'
+      --replace-fail \
+        'os.path.join(os.path.dirname(__file__), "testdata")' \
+        '"${testdata}/rouge/testdata/"'
   '';
 
-  propagatedBuildInputs = [ absl-py nltk numpy six ];
+  build-system = [ setuptools ];
+
+  dependencies = [
+    absl-py
+    nltk
+    numpy
+    six
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
diff --git a/pkgs/development/python-modules/routeros-api/default.nix b/pkgs/development/python-modules/routeros-api/default.nix
index 52bc4295a89f6..2d6208ce27b1e 100644
--- a/pkgs/development/python-modules/routeros-api/default.nix
+++ b/pkgs/development/python-modules/routeros-api/default.nix
@@ -1,36 +1,41 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, six
-, mock
-, tox
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  mock,
+  setuptools,
+  tox,
 }:
 
 buildPythonPackage rec {
   pname = "routeros-api";
-  version = "0.17.0";
-  format = "setuptools";
+  version = "0.18.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
 
-  # N.B. The version published on PyPI is missing tests.
   src = fetchFromGitHub {
     owner = "socialwifi";
-    repo = pname;
-    rev = version;
-    sha256 = "wpIfeYZ1w/yoNCHLYFVjn0O4Rb+N5lfvYzhGuN+HDTA=";
+    repo = "routeros-api";
+    rev = "refs/tags/${version}";
+    hash = "sha256-6IpoByG3YhHh2dPS18ufaoI1vzTZBsZa9WNHS/fImrg=";
   };
 
+  build-system = [ setuptools ];
+
   nativeCheckInputs = [
     mock
     tox
   ];
 
-  propagatedBuildInputs = [ six ];
+  pythonImportsCheck = [ "routeros_api" ];
 
   meta = with lib; {
-    description = "Python API to RouterBoard devices produced by MikroTik.";
+    description = "Python API to RouterBoard devices produced by MikroTik";
     homepage = "https://github.com/socialwifi/RouterOS-api";
+    changelog = "https://github.com/socialwifi/RouterOS-api/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ quentin ];
-    platforms = platforms.all;
   };
 }
diff --git a/pkgs/development/python-modules/routes/default.nix b/pkgs/development/python-modules/routes/default.nix
index 5e639b557d40f..925653572f363 100644
--- a/pkgs/development/python-modules/routes/default.nix
+++ b/pkgs/development/python-modules/routes/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, repoze-lru
-, six
-, soupsieve
-, webob
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  repoze-lru,
+  six,
+  soupsieve,
+  webob,
 }:
 
 buildPythonPackage rec {
@@ -18,7 +19,12 @@ buildPythonPackage rec {
     sha256 = "b6346459a15f0cbab01a45a90c3d25caf980d4733d628b4cc1952b865125d053";
   };
 
-  propagatedBuildInputs = [ repoze-lru six soupsieve webob ];
+  propagatedBuildInputs = [
+    repoze-lru
+    six
+    soupsieve
+    webob
+  ];
 
   # incompatible with latest soupsieve
   doCheck = false;
@@ -29,6 +35,6 @@ buildPythonPackage rec {
     description = "Re-implementation of the Rails routes system for mapping URLs to application actions";
     homepage = "https://github.com/bbangert/routes";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/rova/default.nix b/pkgs/development/python-modules/rova/default.nix
index 32c0c97b3494e..a127bfffaef43 100644
--- a/pkgs/development/python-modules/rova/default.nix
+++ b/pkgs/development/python-modules/rova/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,20 +21,14 @@ buildPythonPackage rec {
     hash = "sha256-y73Vf/E2xDy+2vnvZEllRUgsDfX33Q7AsL/UY2pR1sI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "rova"
-  ];
+  pythonImportsCheck = [ "rova" ];
 
   meta = with lib; {
     description = "Module to access for ROVA calendars";
diff --git a/pkgs/development/python-modules/rowan/default.nix b/pkgs/development/python-modules/rowan/default.nix
new file mode 100644
index 0000000000000..d8fe055a99387
--- /dev/null
+++ b/pkgs/development/python-modules/rowan/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools
+, pytestCheckHook
+, scipy
+, numpy
+}:
+
+buildPythonPackage rec {
+  pname = "rowan";
+  version = "1.3.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "glotzerlab";
+    repo = "rowan";
+    rev = "v${version}";
+    hash = "sha256-klIqyX04w1xYmYtAbLF5jwpcJ83oKOaENboxyCL70EY=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+  ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    scipy
+  ];
+
+  propagatedBuildInputs = [
+    numpy
+  ];
+
+  pythonImportsCheck = [ "rowan" ];
+
+  meta = with lib; {
+    description = "Python package for working with quaternions";
+    homepage = "https://github.com/glotzerlab/rowan";
+    changelog = "https://github.com/glotzerlab/rowan/blob/${src.rev}/ChangeLog.rst";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ doronbehar ];
+  };
+}
diff --git a/pkgs/development/python-modules/rpcq/default.nix b/pkgs/development/python-modules/rpcq/default.nix
index 42643ca748261..63b90d423dd0a 100644
--- a/pkgs/development/python-modules/rpcq/default.nix
+++ b/pkgs/development/python-modules/rpcq/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, msgpack
-, numpy
-, pytest-asyncio
-, pytestCheckHook
-, python-rapidjson
-, pythonOlder
-, pyzmq
-, ruamel-yaml
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  msgpack,
+  numpy,
+  pytest-asyncio,
+  pytestCheckHook,
+  python-rapidjson,
+  pythonOlder,
+  pyzmq,
+  ruamel-yaml,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
       --replace "msgpack>=0.6,<1.0" "msgpack"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     msgpack
@@ -54,12 +53,10 @@ buildPythonPackage rec {
     "rpcq/test/test_spec.py"
   ];
 
-  pythonImportsCheck = [
-    "rpcq"
-  ];
+  pythonImportsCheck = [ "rpcq" ];
 
   meta = with lib; {
-    description = "The RPC framework and message specification for rigetti Quantum Cloud services";
+    description = "RPC framework and message specification for rigetti Quantum Cloud services";
     homepage = "https://github.com/rigetti/rpcq";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/development/python-modules/rpdb/default.nix b/pkgs/development/python-modules/rpdb/default.nix
index 7b3fb288f26ce..ae689da1474ea 100644
--- a/pkgs/development/python-modules/rpdb/default.nix
+++ b/pkgs/development/python-modules/rpdb/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -18,5 +19,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/tamentis/rpdb";
     license = licenses.bsd2;
   };
-
 }
diff --git a/pkgs/development/python-modules/rpds-py/default.nix b/pkgs/development/python-modules/rpds-py/default.nix
index 76798ccfc397c..3b67477598679 100644
--- a/pkgs/development/python-modules/rpds-py/default.nix
+++ b/pkgs/development/python-modules/rpds-py/default.nix
@@ -1,18 +1,19 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, cargo
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, rustc
-, rustPlatform
-, libiconv
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  cargo,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  rustc,
+  rustPlatform,
+  libiconv,
 }:
 
 buildPythonPackage rec {
   pname = "rpds-py";
-  version = "0.17.1";
+  version = "0.18.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -20,13 +21,13 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "rpds_py";
     inherit version;
-    hash = "sha256-AhCyZo8kwHgwcmC/iL2snW8Qk2Nd9RI3ib/uTY1/yOc=";
+    hash = "sha256-3Ei0edVAdwyBH70eubortmlRhj5Ejv7C4sECYlMo6S8=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-sFutrKLa2ISxtUN7hmw2P02nl4SM6Hn4yj1kkXrNWmI=";
+    hash = "sha256-caNEmU3K5COYa/UImE4BZYaFTc3Csi3WmnBSbFN3Yn8=";
   };
 
   nativeBuildInputs = [
@@ -36,17 +37,11 @@ buildPythonPackage rec {
     rustc
   ];
 
-  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
-    libiconv
-  ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "rpds"
-  ];
+  pythonImportsCheck = [ "rpds" ];
 
   meta = with lib; {
     description = "Python bindings to Rust's persistent data structures (rpds";
diff --git a/pkgs/development/python-modules/rpi-bad-power/default.nix b/pkgs/development/python-modules/rpi-bad-power/default.nix
index 5a73ee4a1bf1f..00e7830fbd7c8 100644
--- a/pkgs/development/python-modules/rpi-bad-power/default.nix
+++ b/pkgs/development/python-modules/rpi-bad-power/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
 }:
 
 let
@@ -20,17 +21,11 @@ buildPythonPackage {
     hash = "sha256:1yvfz28blq4fdnn614n985vbs5hcw1gm3i9am53k410sfs7ilvkk";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "rpi_bad_power"
-  ];
+  pythonImportsCheck = [ "rpi_bad_power" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Python library to detect bad power supply on Raspberry Pi";
diff --git a/pkgs/development/python-modules/rpi-gpio/default.nix b/pkgs/development/python-modules/rpi-gpio/default.nix
index a045744d122ed..569e8cd07c0c7 100644
--- a/pkgs/development/python-modules/rpi-gpio/default.nix
+++ b/pkgs/development/python-modules/rpi-gpio/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "rpi-gpio";
diff --git a/pkgs/development/python-modules/rpi-gpio2/default.nix b/pkgs/development/python-modules/rpi-gpio2/default.nix
deleted file mode 100644
index 2836cd7e3703a..0000000000000
--- a/pkgs/development/python-modules/rpi-gpio2/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib, libgpiod, buildPythonPackage, fetchFromGitHub }:
-
-buildPythonPackage rec {
-  pname = "rpi-gpio2";
-  version = "0.4.0";
-  format = "setuptools";
-
-  # PyPi source does not work for some reason
-  src = fetchFromGitHub {
-    owner = "underground-software";
-    repo = "RPi.GPIO2";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-CNnej67yTh3C8n4cCA7NW97rlfIDrrlepRNDkv+BUeY=";
-  };
-
-  propagatedBuildInputs = [
-    libgpiod
-  ];
-
-  # Disable checks because they need to run on the specific platform
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://github.com/underground-software/RPi.GPIO2";
-    description = ''
-      Compatibility layer between RPi.GPIO syntax and libgpiod semantics
-    '';
-    license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ onny ];
-  };
-}
diff --git a/pkgs/development/python-modules/rplcd/default.nix b/pkgs/development/python-modules/rplcd/default.nix
index e521523ba697b..899dc8c5c31ee 100644
--- a/pkgs/development/python-modules/rplcd/default.nix
+++ b/pkgs/development/python-modules/rplcd/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "rplcd";
diff --git a/pkgs/development/python-modules/rply/default.nix b/pkgs/development/python-modules/rply/default.nix
index ff42e93f95600..064a7a7a90401 100644
--- a/pkgs/development/python-modules/rply/default.nix
+++ b/pkgs/development/python-modules/rply/default.nix
@@ -1,26 +1,25 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, appdirs
-, py
-, pytestCheckHook
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  appdirs,
+  py,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "rply";
-  version = "0.7.7";
+  version = "0.7.8";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "alex";
     repo = "rply";
     rev = "v${version}";
-    hash = "sha256-5uINDCX4Jr4bSSwqBjvkS3f5wTMnZvsRGq1DeCw8Y+M=";
+    hash = "sha256-mO/wcIsDIBjoxUsFvzftj5H5ziJijJcoyrUk52fcyE4=";
   };
 
-  propagatedBuildInputs = [
-    appdirs
-  ];
+  propagatedBuildInputs = [ appdirs ];
 
   nativeCheckInputs = [
     py
@@ -32,7 +31,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A python Lex/Yacc that works with RPython";
+    description = "Python Lex/Yacc that works with RPython";
     homepage = "https://github.com/alex/rply";
     license = licenses.bsd3;
     maintainers = with maintainers; [ nixy ];
diff --git a/pkgs/development/python-modules/rpmfile/default.nix b/pkgs/development/python-modules/rpmfile/default.nix
index 89401e4ac6076..da05ba50a2717 100644
--- a/pkgs/development/python-modules/rpmfile/default.nix
+++ b/pkgs/development/python-modules/rpmfile/default.nix
@@ -1,28 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
 }:
 buildPythonPackage rec {
   pname = "rpmfile";
-  version = "2.0.0";
+  version = "2.1.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-tLDdVTrZlxGk+oYmeCm/4XLAPx6hzkztJP+lXtiDhb4=";
+    hash = "sha256-CsK7qJJ3xxhcuGHJxtfQyaJovlFpUW28amjxVWqeP5k=";
   };
 
   # Tests access the internet
   doCheck = false;
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  pythonImportsCheck = [
-    "rpmfile"
-  ];
+  pythonImportsCheck = [ "rpmfile" ];
 
   meta = with lib; {
     description = "Read rpm archive files";
diff --git a/pkgs/development/python-modules/rpmfluff/default.nix b/pkgs/development/python-modules/rpmfluff/default.nix
index 2d8a45fd102fd..2b60f24e7d396 100644
--- a/pkgs/development/python-modules/rpmfluff/default.nix
+++ b/pkgs/development/python-modules/rpmfluff/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, glibcLocales
+{
+  lib,
+  buildPythonPackage,
+  fetchurl,
+  glibcLocales,
 }:
 
 buildPythonPackage rec {
@@ -10,11 +11,11 @@ buildPythonPackage rec {
   format = "setuptools";
 
   src = fetchurl {
-  url = "https://releases.pagure.org/${pname}/${pname}-${version}.tar.xz";
+    url = "https://releases.pagure.org/${pname}/${pname}-${version}.tar.xz";
     sha256 = "19vnlzma8b0aghdiixk0q3wc10y6306hsnic0qvswaaiki94fss1";
   };
 
-  LC_ALL="en_US.utf-8";
+  LC_ALL = "en_US.utf-8";
   buildInputs = [ glibcLocales ];
 
   meta = with lib; {
@@ -23,5 +24,4 @@ buildPythonPackage rec {
     license = licenses.gpl2;
     maintainers = with maintainers; [ disassembler ];
   };
-
 }
diff --git a/pkgs/development/python-modules/rpy2/default.nix b/pkgs/development/python-modules/rpy2/default.nix
index c10b23414b425..582e35508502c 100644
--- a/pkgs/development/python-modules/rpy2/default.nix
+++ b/pkgs/development/python-modules/rpy2/default.nix
@@ -1,64 +1,62 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, isPyPy
-, R
-, rWrapper
-, rPackages
-, pcre
-, xz
-, bzip2
-, zlib
-, icu
-, ipython
-, jinja2
-, pytz
-, pandas
-, numpy
-, cffi
-, tzlocal
-, simplegeneric
-, pytestCheckHook
-, extraRPackages ? []
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  R,
+  libdeflate,
+  rWrapper,
+  rPackages,
+  pcre,
+  xz,
+  bzip2,
+  zlib,
+  icu,
+  ipython,
+  jinja2,
+  pytz,
+  pandas,
+  numpy,
+  cffi,
+  tzlocal,
+  simplegeneric,
+  pytestCheckHook,
+  extraRPackages ? [ ],
 }:
 
 buildPythonPackage rec {
-    version = "3.5.15";
-    format = "setuptools";
-    pname = "rpy2";
+  version = "3.5.16";
+  format = "setuptools";
+  pname = "rpy2";
 
-    disabled = isPyPy;
-    src = fetchPypi {
-      inherit version pname;
-      hash = "sha256-RE+uSoTcfyM7cOqrCqgTmO4BR8ThrjjdRSTXedbyWys=";
-    };
+  disabled = isPyPy;
+  src = fetchPypi {
+    inherit version pname;
+    hash = "sha256-g34vdFg2WKXEwzl2GnP5Q08z75ztPjDGTadWIWXCgBs=";
+  };
 
-    patches = [
-      # R_LIBS_SITE is used by the nix r package to point to the installed R libraries.
-      # This patch sets R_LIBS_SITE when rpy2 is imported.
-      ./rpy2-3.x-r-libs-site.patch
+  patches = [
+    # R_LIBS_SITE is used by the nix r package to point to the installed R libraries.
+    # This patch sets R_LIBS_SITE when rpy2 is imported.
+    ./rpy2-3.x-r-libs-site.patch
+  ];
 
-      # https://github.com/rpy2/rpy2/pull/1094
-      (fetchpatch {
-        url = "https://github.com/rpy2/rpy2/commit/026d069a008163a62d12567bcb938410d0f9bf7a.diff";
-        hash = "sha256-x778upSY3zab5EiRyOcsbDpPj7vN/7XzefEs+wvkNg0=";
-      })
-    ];
+  postPatch = ''
+    substituteInPlace 'rpy2/rinterface_lib/embedded.py' --replace '@NIX_R_LIBS_SITE@' "$R_LIBS_SITE"
+    substituteInPlace 'requirements.txt' --replace 'pytest' ""
+  '';
 
-    postPatch = ''
-      substituteInPlace 'rpy2/rinterface_lib/embedded.py' --replace '@NIX_R_LIBS_SITE@' "$R_LIBS_SITE"
-      substituteInPlace 'requirements.txt' --replace 'pytest' ""
-    '';
-
-    buildInputs = [
+  buildInputs =
+    [
       pcre
       xz
       bzip2
       zlib
       icu
-    ] ++ (with rPackages; [
+      libdeflate
+    ]
+    ++ (with rPackages; [
       # packages expected by the test framework
       ggplot2
       dplyr
@@ -70,34 +68,41 @@ buildPythonPackage rec {
       lazyeval
       lme4
       tidyr
-    ]) ++ extraRPackages ++ rWrapper.recommendedPackages;
+    ])
+    ++ extraRPackages
+    ++ rWrapper.recommendedPackages;
+
+  nativeBuildInputs = [
+    R # needed at setup time to detect R_HOME (alternatively set R_HOME explicitly)
+  ];
 
-    nativeBuildInputs = [
-      R # needed at setup time to detect R_HOME (alternatively set R_HOME explicitly)
-    ];
+  propagatedBuildInputs = [
+    ipython
+    jinja2
+    pytz
+    pandas
+    numpy
+    cffi
+    tzlocal
+    simplegeneric
+  ];
 
-    propagatedBuildInputs = [
-      ipython
-      jinja2
-      pytz
-      pandas
-      numpy
-      cffi
-      tzlocal
-      simplegeneric
-    ];
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
-    doCheck = !stdenv.isDarwin;
+  # https://github.com/rpy2/rpy2/issues/1111
+  disabledTests = [
+    "test_parse_incomplete_error"
+    "test_parse_error"
+    "test_parse_error_when_evaluting"
+  ];
 
-    nativeCheckInputs = [
-      pytestCheckHook
-    ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-    meta = {
-      homepage = "https://rpy2.github.io/";
-      description = "Python interface to R";
-      license = lib.licenses.gpl2Plus;
-      platforms = lib.platforms.unix;
-      maintainers = with lib.maintainers; [ joelmo ];
-    };
-  }
+  meta = {
+    homepage = "https://rpy2.github.io/";
+    description = "Python interface to R";
+    license = lib.licenses.gpl2Plus;
+    platforms = lib.platforms.unix;
+    maintainers = with lib.maintainers; [ joelmo ];
+  };
+}
diff --git a/pkgs/development/python-modules/rpyc/default.nix b/pkgs/development/python-modules/rpyc/default.nix
index 73c40ee23f79f..336ddca0bf73b 100644
--- a/pkgs/development/python-modules/rpyc/default.nix
+++ b/pkgs/development/python-modules/rpyc/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, plumbum
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  plumbum,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,17 +23,11 @@ buildPythonPackage rec {
     hash = "sha256-BvXEXZlVbOmKBwnSBCDksUkbT7JPcMX48KZe/Gd5Y8Q=";
   };
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  dependencies = [
-    plumbum
-  ];
+  dependencies = [ plumbum ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export PYTHONPATH=$(pwd)/tests:$PYTHONPATH
@@ -62,11 +57,9 @@ buildPythonPackage rec {
     "tests/test_magic.py"
   ];
 
-  pythonImportsCheck = [
-    "rpyc"
-  ];
+  pythonImportsCheck = [ "rpyc" ];
 
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   meta = with lib; {
     description = "Remote Python Call (RPyC), a transparent and symmetric RPC library";
diff --git a/pkgs/development/python-modules/rpyc4/default.nix b/pkgs/development/python-modules/rpyc4/default.nix
deleted file mode 100644
index c883ebef4dc67..0000000000000
--- a/pkgs/development/python-modules/rpyc4/default.nix
+++ /dev/null
@@ -1,74 +0,0 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, hatchling
-, plumbum
-, pytestCheckHook
-, pythonOlder
-, pythonAtLeast
-}:
-
-buildPythonPackage rec {
-  pname = "rpyc4";
-  # Pinned version for linien, see also:
-  # https://github.com/linien-org/pyrp3/pull/10#discussion_r1302816237
-  version = "4.1.5";
-  format = "pyproject";
-
-  # Since this is an outdated version, upstream might have fixed the
-  # compatibility issues with Python3.12, but we can't enjoy them yet.
-  disabled = pythonOlder "3.7" || pythonAtLeast "3.12";
-
-  src = fetchFromGitHub {
-    owner = "tomerfiliba";
-    repo = "rpyc";
-    rev = version;
-    hash = "sha256-8NOcXZDR3w0TNj1+LZ7lzQAt7yDgspjOp2zk1bsbVls=";
-  };
-
-  nativeBuildInputs = [
-    setuptools
-    hatchling
-  ];
-
-  propagatedBuildInputs = [
-    plumbum
-  ];
-
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-
-  disabledTests = [
-    # Disable tests that requires network access
-    "test_api"
-    "test_close_timeout"
-    "test_deploy"
-    "test_listing"
-    "test_pruning"
-    "test_rpyc"
-    # Test is outdated
-    # ssl.SSLError: [SSL: NO_CIPHERS_AVAILABLE] no ciphers available (_ssl.c:997)
-    "test_ssl_conenction"
-  ];
-  disabledTestPaths = [
-    "tests/test_ssh.py"
-    "tests/test_teleportation.py"
-  ];
-
-  pythonImportsCheck = [
-    "rpyc"
-  ];
-
-  doCheck = !stdenv.isDarwin;
-
-  meta = with lib; {
-    description = "Remote Python Call (RPyC), a transparent and symmetric RPC library";
-    homepage = "https://rpyc.readthedocs.org";
-    changelog = "https://github.com/tomerfiliba-org/rpyc/blob/${version}/CHANGELOG.rst";
-    license = with licenses; [ mit ];
-    maintainers = with maintainers; [ fab ];
-  };
-}
diff --git a/pkgs/development/python-modules/rq/default.nix b/pkgs/development/python-modules/rq/default.nix
index 45c8627be5df1..3136801492470 100644
--- a/pkgs/development/python-modules/rq/default.nix
+++ b/pkgs/development/python-modules/rq/default.nix
@@ -1,26 +1,26 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
 
-# build-system
-, hatchling
+  # build-system
+  hatchling,
 
-# dependencies
-, click
-, redis
+  # dependencies
+  click,
+  redis,
 
-# tests
-, psutil
-, pytestCheckHook
-, redis-server
-, sentry-sdk
+  # tests
+  psutil,
+  pytestCheckHook,
+  redis-server,
+  sentry-sdk,
 }:
 
 buildPythonPackage rec {
   pname = "rq";
-  version = "1.16.1";
+  version = "1.16.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -29,12 +29,10 @@ buildPythonPackage rec {
     owner = "rq";
     repo = "rq";
     rev = "refs/tags/v${version}";
-    hash = "sha256-1E7jPTSQCjuKZVFL4uZqL1WZHnxWSLTNcnpyvfHz7oY=";
+    hash = "sha256-8uhCV4aJNbY273jOa9D5OlgEG1w3hXVncClKQTO9Pyk=";
   };
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   dependencies = [
     click
@@ -47,25 +45,24 @@ buildPythonPackage rec {
     sentry-sdk
   ];
 
-  preCheck = lib.optionalString stdenv.isLinux ''
+  preCheck = ''
     PATH=$out/bin:$PATH
     ${redis-server}/bin/redis-server &
-    REDIS_PID=$!
   '';
 
-  postCheck = lib.optionalString stdenv.isLinux ''
-    kill $REDIS_PID
+  postCheck = ''
+    kill %%
   '';
 
-  pythonImportsCheck = [
-    "rq"
-  ];
+  __darwinAllowLocalNetworking = true;
 
   disabledTests = [
-    # AttributeError
+    # https://github.com/rq/rq/commit/fd261d5d8fc0fe604fa396ee6b9c9b7a7bb4142f
     "test_clean_large_registry"
   ];
 
+  pythonImportsCheck = [ "rq" ];
+
   meta = with lib; {
     description = "Library for creating background jobs and processing them";
     homepage = "https://github.com/nvie/rq/";
@@ -74,4 +71,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ mrmebelman ];
   };
 }
-
diff --git a/pkgs/development/python-modules/rsa/default.nix b/pkgs/development/python-modules/rsa/default.nix
index 792024166d977..e6ae0e7fd61eb 100644
--- a/pkgs/development/python-modules/rsa/default.nix
+++ b/pkgs/development/python-modules/rsa/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pyasn1
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pyasn1,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     substituteInPlace setup.py --replace "open('README.md')" "open('README.md',encoding='utf-8')"
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [ pyasn1 ];
 
@@ -35,17 +34,13 @@ buildPythonPackage rec {
     sed -i '/addopts/d' tox.ini
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTestPaths = [
-    "tests/test_mypy.py"
-  ];
+  disabledTestPaths = [ "tests/test_mypy.py" ];
 
   meta = with lib; {
     homepage = "https://stuvel.eu/rsa";
     license = licenses.asl20;
-    description = "A pure-Python RSA implementation";
+    description = "Pure-Python RSA implementation";
   };
 }
diff --git a/pkgs/development/python-modules/rsskey/default.nix b/pkgs/development/python-modules/rsskey/default.nix
index 61cba286d1b11..e76744b1fb46e 100644
--- a/pkgs/development/python-modules/rsskey/default.nix
+++ b/pkgs/development/python-modules/rsskey/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, feedparser
-, httpx
-, loca
-, markdownify
-, trio
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  feedparser,
+  httpx,
+  loca,
+  markdownify,
+  trio,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-QedLuwd0ES2LWhZ72Cjh3+ZZ7HbRyNsyLN9lNFbY5dQ=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     feedparser
diff --git a/pkgs/development/python-modules/rst2ansi/default.nix b/pkgs/development/python-modules/rst2ansi/default.nix
index 4f1ca27137a27..c7b99f6bfd683 100644
--- a/pkgs/development/python-modules/rst2ansi/default.nix
+++ b/pkgs/development/python-modules/rst2ansi/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, docutils, }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  docutils,
+}:
 
 buildPythonPackage rec {
   pname = "rst2ansi";
@@ -13,7 +18,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ docutils ];
 
   meta = with lib; {
-    description = "A rst converter to ansi-decorated console output";
+    description = "Rst converter to ansi-decorated console output";
     mainProgram = "rst2ansi";
     homepage = "https://github.com/Snaipe/python-rst-to-ansi";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/rst2pdf/default.nix b/pkgs/development/python-modules/rst2pdf/default.nix
index f40da3a301f77..40225a9acb034 100644
--- a/pkgs/development/python-modules/rst2pdf/default.nix
+++ b/pkgs/development/python-modules/rst2pdf/default.nix
@@ -1,36 +1,42 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, setuptools-scm
-, wheel
-, docutils
-, importlib-metadata
-, jinja2
-, packaging
-, pygments
-, pyyaml
-, reportlab
-, smartypants
-, pillow
-, pytestCheckHook
-, pymupdf
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  installShellFiles,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  docutils,
+  importlib-metadata,
+  jinja2,
+  packaging,
+  pygments,
+  pyyaml,
+  reportlab,
+  smartypants,
+  pillow,
+  pytestCheckHook,
+  pymupdf,
+  sphinx,
 }:
 
 buildPythonPackage rec {
   pname = "rst2pdf";
-  version = "0.101";
+  version = "0.102";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-AF8FssEIFHmeY2oVrAPNe85pbmgKWO52yD6ycNNzTSg=";
+    hash = "sha256-NzAGJOlTpz7d3cuubyRjDvVGfCC+61jfZIrcUwhE9CU=";
   };
 
-  outputs = [ "out" "man" ];
+  outputs = [
+    "out"
+    "man"
+  ];
 
   nativeBuildInputs = [
+    installShellFiles
     setuptools
     setuptools-scm
     wheel
@@ -48,9 +54,7 @@ buildPythonPackage rec {
     pillow
   ];
 
-  pythonImportsCheck = [
-    "rst2pdf"
-  ];
+  pythonImportsCheck = [ "rst2pdf" ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -62,8 +66,8 @@ buildPythonPackage rec {
   doCheck = false;
 
   postInstall = ''
-    mkdir -p $man/share/man/man1/
-    ${docutils}/bin/rst2man.py doc/rst2pdf.rst $man/share/man/man1/rst2pdf.1
+    ${lib.getExe' docutils "rst2man"} doc/rst2pdf.rst rst2pdf.1
+    installManPage rst2pdf.1
   '';
 
   meta = with lib; {
@@ -72,6 +76,6 @@ buildPythonPackage rec {
     homepage = "https://rst2pdf.org/";
     changelog = "https://github.com/rst2pdf/rst2pdf/blob/${version}/CHANGES.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ pyrox0 ];
   };
 }
diff --git a/pkgs/development/python-modules/rstcheck/default.nix b/pkgs/development/python-modules/rstcheck/default.nix
index 91f58f1347103..206f9192d92aa 100644
--- a/pkgs/development/python-modules/rstcheck/default.nix
+++ b/pkgs/development/python-modules/rstcheck/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "rstcheck";
-  version = "6.2.1";
+  version = "6.2.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "rstcheck";
     repo = "rstcheck";
     rev = "refs/tags/v${version}";
-    hash = "sha256-S04l+x/rIc/XSvq2lSKCQp6KK5mmKI2mOgPgJ3WKe5M=";
+    hash = "sha256-CB8UtYAJpPrUOGgHOIp9Ts0GaID6GdtKHWD/ihxRoNg=";
   };
 
   build-system = [
@@ -39,11 +39,11 @@ buildPythonPackage rec {
     types-docutils
     pydantic
     typer
-  ] ++ typer.optional-dependencies.all;
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
     # Disabled until https://github.com/rstcheck/rstcheck-core/issues/19 is resolved.
     "test_error_without_config_file_macos"
     "test_file_1_is_bad_without_config_macos"
diff --git a/pkgs/development/python-modules/rstr/default.nix b/pkgs/development/python-modules/rstr/default.nix
index 3c80a274ceaf6..7bf0eb244fb90 100644
--- a/pkgs/development/python-modules/rstr/default.nix
+++ b/pkgs/development/python-modules/rstr/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, setuptools-scm
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
   ];
 
   doCheck = true;
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   meta = with lib; {
     description = "Python library to generate random strings";
@@ -34,4 +33,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ danc86 ];
   };
 }
-
diff --git a/pkgs/development/python-modules/rtb-data/default.nix b/pkgs/development/python-modules/rtb-data/default.nix
new file mode 100644
index 0000000000000..4202e2bb1af86
--- /dev/null
+++ b/pkgs/development/python-modules/rtb-data/default.nix
@@ -0,0 +1,31 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "rtb-data";
+  version = "1.0.1";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-xRKS3c31li5ZRWw6WrYqTVQKXqW91ONbKWP57Dglzx0=";
+  };
+
+  nativeBuildInputs = [ setuptools ];
+
+  pythonImportsCheck = [ "rtbdata" ];
+
+  meta = with lib; {
+    description = "Data files for the Robotics Toolbox for Python";
+    homepage = "https://pypi.org/project/rtb-data/";
+    license = licenses.mit;
+    maintainers = with maintainers; [
+      djacu
+      a-camarillo
+    ];
+  };
+}
diff --git a/pkgs/development/python-modules/rtfde/default.nix b/pkgs/development/python-modules/rtfde/default.nix
index 3b11adc34a1a1..d436f19a45eb3 100644
--- a/pkgs/development/python-modules/rtfde/default.nix
+++ b/pkgs/development/python-modules/rtfde/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, lark
-, lxml
-, oletools
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lark,
+  lxml,
+  oletools,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "rtfde";
-  version = "0.1.1";
+  version = "0.1.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,18 +21,10 @@ buildPythonPackage rec {
     owner = "seamustuohy";
     repo = "RTFDE";
     rev = "refs/tags/${version}";
-    hash = "sha256-ai9JQ3gphY/IievBNdHiblIpc0IPS9wp7CVvBIRzG/4=";
+    hash = "sha256-zmcf9wqlKz55dOIchUC9sgW0PcTCPc52IkbIonOFlmU=";
   };
 
-  postPatch = ''
-    # https://github.com/seamustuohy/RTFDE/issues/31
-    substituteInPlace setup.py \
-      --replace-fail "==" ">="
-  '';
-
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     lark
@@ -43,8 +36,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "RTFDE"
+  pythonImportsCheck = [ "RTFDE" ];
+
+  disabledTests = [
+    # Content mismatch
+    "test_bin_data_captured"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/rtfunicode/default.nix b/pkgs/development/python-modules/rtfunicode/default.nix
index 2de60bc6bef92..07d7ecc2ea8ca 100644
--- a/pkgs/development/python-modules/rtfunicode/default.nix
+++ b/pkgs/development/python-modules/rtfunicode/default.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
-, lib
-, fetchFromGitHub
-, unittestCheckHook
+{
+  buildPythonPackage,
+  lib,
+  fetchFromGitHub,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/rtmidi-python/default.nix b/pkgs/development/python-modules/rtmidi-python/default.nix
index 462207a2fea45..cdb87a0c86573 100644
--- a/pkgs/development/python-modules/rtmidi-python/default.nix
+++ b/pkgs/development/python-modules/rtmidi-python/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, cython_0
-, alsa-lib
-, CoreAudio
-, CoreMIDI
-, CoreServices
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  cython_0,
+  alsa-lib,
+  CoreAudio,
+  CoreMIDI,
+  CoreServices,
 }:
 
 buildPythonPackage rec {
@@ -24,27 +25,25 @@ buildPythonPackage rec {
   '';
 
   nativeBuildInputs = [ cython_0 ];
-  buildInputs = lib.optionals stdenv.isLinux [
-    alsa-lib
-  ] ++ lib.optionals stdenv.isDarwin [
-    CoreAudio
-    CoreMIDI
-    CoreServices
-  ];
+  buildInputs =
+    lib.optionals stdenv.hostPlatform.isLinux [ alsa-lib ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      CoreAudio
+      CoreMIDI
+      CoreServices
+    ];
 
   setupPyBuildFlags = [ "--from-cython" ];
 
   # package has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "rtmidi_python"
-  ];
+  pythonImportsCheck = [ "rtmidi_python" ];
 
   meta = with lib; {
     description = "Python wrapper for RtMidi";
     homepage = "https://github.com/superquadratic/rtmidi-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/rtmixer/default.nix b/pkgs/development/python-modules/rtmixer/default.nix
index 83d6198403773..994cd103c18ff 100644
--- a/pkgs/development/python-modules/rtmixer/default.nix
+++ b/pkgs/development/python-modules/rtmixer/default.nix
@@ -1,12 +1,13 @@
-{ fetchFromGitHub
-, buildPythonPackage
-, isPy27
-, cython
-, portaudio
-, cffi
-, pa-ringbuffer
-, sounddevice
-, lib
+{
+  fetchFromGitHub,
+  buildPythonPackage,
+  isPy27,
+  cython,
+  portaudio,
+  cffi,
+  pa-ringbuffer,
+  sounddevice,
+  lib,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,7 @@ buildPythonPackage rec {
     owner = "spatialaudio";
     repo = "python-rtmixer";
     rev = "refs/tags/${version}";
-    sha256 = "sha256-S8aVfxoG0o5GarDX5ZIDQ3GKOT32NtttQJ449FI9Fy0=";
+    hash = "sha256-S8aVfxoG0o5GarDX5ZIDQ3GKOT32NtttQJ449FI9Fy0=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/development/python-modules/rtoml/default.nix b/pkgs/development/python-modules/rtoml/default.nix
index 2ccec6d9e5b10..fe83ca2e32dc7 100644
--- a/pkgs/development/python-modules/rtoml/default.nix
+++ b/pkgs/development/python-modules/rtoml/default.nix
@@ -1,19 +1,19 @@
-{ lib
-, buildPythonPackage
-, cargo
-, fetchFromGitHub
-, libiconv
-, pytestCheckHook
-, pythonOlder
-, rustPlatform
-, rustc
-, setuptools-rust
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  libiconv,
+  dirty-equals,
+  pytest-benchmark,
+  pytestCheckHook,
+  pythonOlder,
+  rustPlatform,
 }:
 
 buildPythonPackage rec {
   pname = "rtoml";
-  version = "0.8";
-  format = "setuptools";
+  version = "0.10";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -21,36 +21,39 @@ buildPythonPackage rec {
     owner = "samuelcolvin";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-tvX4KcQGw0khBjEXVFmkhsVyAkdr2Bgm6IfD1yGZ37c=";
+    hash = "sha256-1movtKMQkQ6PEpKpSkK0Oy4AV0ee7XrS0P9m6QwZTaM=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-KcF3Z71S7ZNZicViqwpClfT736nYYbKcKWylOP+S3HI=";
+    hash = "sha256-BWcOIZMl4yHxxKxCn6Qh69MlMdz3REp3izN0A1eFX3o=";
   };
 
-  nativeBuildInputs = with rustPlatform; [
-    setuptools-rust
-    rustc
-    cargo
-    rustPlatform.cargoSetupHook
+  build-system = with rustPlatform; [
+    cargoSetupHook
+    maturinBuildHook
   ];
 
-  buildInputs = [
-    libiconv
-  ];
+  buildInputs = [ libiconv ];
 
-  pythonImportsCheck = [
-    "rtoml"
-  ];
+  pythonImportsCheck = [ "rtoml" ];
 
   nativeCheckInputs = [
+    dirty-equals
+    pytest-benchmark
     pytestCheckHook
   ];
 
+  pytestFlagsArray = [ "--benchmark-disable" ];
+
+  disabledTests = [
+    # TypeError: loads() got an unexpected keyword argument 'name'
+    "test_load_data_toml"
+  ];
+
   preCheck = ''
-    cd tests
+    rm -rf rtoml
   '';
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/rtp/default.nix b/pkgs/development/python-modules/rtp/default.nix
index aef1171d8d47b..ad27d151776c5 100644
--- a/pkgs/development/python-modules/rtp/default.nix
+++ b/pkgs/development/python-modules/rtp/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python3
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
   # nativeCheckInputs
-, hypothesis
-, unittestCheckHook
+  hypothesis,
+  unittestCheckHook,
 
 }:
 
@@ -24,15 +24,16 @@ buildPythonPackage rec {
     unittestCheckHook
   ];
 
-  unittestFlagsArray = [ "-s" "tests" "-v" ];
-
-  pythonImportsCheck = [
-    "rtp"
+  unittestFlagsArray = [
+    "-s"
+    "tests"
+    "-v"
   ];
 
+  pythonImportsCheck = [ "rtp" ];
 
   meta = with lib; {
-    description = "A library for decoding/encoding rtp packets";
+    description = "Library for decoding/encoding rtp packets";
     homepage = "https://github.com/bbc/rd-apmm-python-lib-rtp";
     license = licenses.asl20;
     maintainers = with maintainers; [ fleaz ];
diff --git a/pkgs/development/python-modules/rtree/default.nix b/pkgs/development/python-modules/rtree/default.nix
index ff4b3b85e9cf0..3829984642858 100644
--- a/pkgs/development/python-modules/rtree/default.nix
+++ b/pkgs/development/python-modules/rtree/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, libspatialindex
-, numpy
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  libspatialindex,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "rtree";
-  version = "1.2.0";
+  version = "1.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,7 +22,7 @@ buildPythonPackage rec {
     owner = "Toblerity";
     repo = "rtree";
     rev = "refs/tags/${version}";
-    hash = "sha256-RmAiyYrkUMBN/ebmo27WvFcRmYlKkywuQHLLUbluTTw=";
+    hash = "sha256-yuSPRb8SRz+FRmwFCKDx+gtp9IWaneQ84jDuZP7TX0A=";
   };
 
   postPatch = ''
@@ -48,6 +49,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Toblerity/rtree";
     changelog = "https://github.com/Toblerity/rtree/blob/${version}/CHANGES.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ bgamari ];
+    maintainers = with maintainers; teams.geospatial.members ++ [ bgamari ];
   };
 }
diff --git a/pkgs/development/python-modules/rtslib/default.nix b/pkgs/development/python-modules/rtslib/default.nix
index 968a33607d920..d4643c8839c1c 100644
--- a/pkgs/development/python-modules/rtslib/default.nix
+++ b/pkgs/development/python-modules/rtslib/default.nix
@@ -1,4 +1,11 @@
-{ lib, fetchFromGitHub, buildPythonPackage, six, pyudev, pygobject3 }:
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  six,
+  pyudev,
+  pygobject3,
+}:
 
 buildPythonPackage rec {
   pname = "rtslib";
@@ -12,12 +19,17 @@ buildPythonPackage rec {
     hash = "sha256-z9fpSVyv96ZoJaP0ch2A3bX/o/K23ooEpxa/OAhY6Z4=";
   };
 
-  propagatedBuildInputs = [ six pyudev pygobject3 ];
+  propagatedBuildInputs = [
+    six
+    pyudev
+    pygobject3
+  ];
 
   meta = with lib; {
-    description = "A Python object API for managing the Linux LIO kernel target";
+    description = "Python object API for managing the Linux LIO kernel target";
     mainProgram = "targetctl";
     homepage = "https://github.com/open-iscsi/rtslib-fb";
     license = licenses.asl20;
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/python-modules/rtsp-to-webrtc/default.nix b/pkgs/development/python-modules/rtsp-to-webrtc/default.nix
index 812a4fc1ba1fa..5686b12f4492c 100644
--- a/pkgs/development/python-modules/rtsp-to-webrtc/default.nix
+++ b/pkgs/development/python-modules/rtsp-to-webrtc/default.nix
@@ -1,42 +1,43 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "rtsp-to-webrtc";
-  version = "0.5.1";
-  format = "setuptools";
+  version = "0.6.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "allenporter";
     repo = "rtsp-to-webrtc-client";
-    rev = version;
-    hash = "sha256-miMBN/8IO4v03mMoclCa3GFl6HCS3Sh6z2HOQ39MRZY=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-D022d2CDKtHTuvEGo8GkOGWHi5sV4g6UwNB9xS2xxIs=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ aiohttp ];
 
   nativeCheckInputs = [
     pytest-aiohttp
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "rtsp_to_webrtc"
-  ];
+  pythonImportsCheck = [ "rtsp_to_webrtc" ];
 
   meta = with lib; {
     description = "Module for RTSPtoWeb and RTSPtoWebRTC";
     homepage = "https://github.com/allenporter/rtsp-to-webrtc-client";
+    changelog = "https://github.com/allenporter/rtsp-to-webrtc-client/releases/tag/${version}";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/ruamel-base/default.nix b/pkgs/development/python-modules/ruamel-base/default.nix
index a3906794bd845..2d38ff808ddab 100644
--- a/pkgs/development/python-modules/ruamel-base/default.nix
+++ b/pkgs/development/python-modules/ruamel-base/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -25,6 +26,6 @@ buildPythonPackage rec {
     description = "Common routines for ruamel packages";
     homepage = "https://sourceforge.net/projects/ruamel-base/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ruamel-yaml-clib/default.nix b/pkgs/development/python-modules/ruamel-yaml-clib/default.nix
index a7a362bcf4ab6..58a41a102246c 100644
--- a/pkgs/development/python-modules/ruamel-yaml-clib/default.nix
+++ b/pkgs/development/python-modules/ruamel-yaml-clib/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchhg
-, cython
+{
+  lib,
+  buildPythonPackage,
+  fetchhg,
+  cython,
 }:
 
 buildPythonPackage rec {
@@ -30,6 +31,6 @@ buildPythonPackage rec {
     description = "YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order";
     homepage = "https://sourceforge.net/projects/ruamel-yaml-clib/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ruamel-yaml/default.nix b/pkgs/development/python-modules/ruamel-yaml/default.nix
index 4ac0d552ebdf4..eeb77714fddc8 100644
--- a/pkgs/development/python-modules/ruamel-yaml/default.nix
+++ b/pkgs/development/python-modules/ruamel-yaml/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, ruamel-base
-, ruamel-yaml-clib
-, isPyPy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  ruamel-base,
+  ruamel-yaml-clib,
+  isPyPy,
 }:
 
 buildPythonPackage rec {
@@ -18,15 +19,12 @@ buildPythonPackage rec {
     hash = "sha256-iyfmohfnhsb75WNNjz8RvGPg+A9qWJDyiGPZxFqsMRs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # Tests use relative paths
   doCheck = false;
 
-  propagatedBuildInputs = [ ruamel-base ]
-    ++ lib.optional (!isPyPy) ruamel-yaml-clib;
+  propagatedBuildInputs = [ ruamel-base ] ++ lib.optional (!isPyPy) ruamel-yaml-clib;
 
   pythonImportsCheck = [ "ruamel.yaml" ];
 
@@ -35,6 +33,6 @@ buildPythonPackage rec {
     homepage = "https://sourceforge.net/projects/ruamel-yaml/";
     changelog = "https://sourceforge.net/p/ruamel-yaml/code/ci/default/tree/CHANGES";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/rubicon-objc/default.nix b/pkgs/development/python-modules/rubicon-objc/default.nix
index f12f08e0ad47f..f24e49364f0a8 100644
--- a/pkgs/development/python-modules/rubicon-objc/default.nix
+++ b/pkgs/development/python-modules/rubicon-objc/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, darwin
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, setuptools-scm
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  darwin,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "rubicon-objc";
-  version = "0.4.8";
+  version = "0.4.9";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,12 +20,12 @@ buildPythonPackage rec {
     owner = "beeware";
     repo = "rubicon-objc";
     rev = "refs/tags/v${version}";
-    hash = "sha256-aFKzLeVYn5u8hTEgXCum3XpZxI7C/Wql41jkWkCF0HQ=";
+    hash = "sha256-jQ/q2yIXJp+X4ajcbEqxXuYtYeyZJ1xTBjSlzqLuRpg=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace-fail "setuptools==69.2.0" "setuptools" \
+      --replace-fail "setuptools==69.5.1" "setuptools" \
       --replace-fail "setuptools_scm==8.0.4" "setuptools_scm"
   '';
 
@@ -37,22 +38,16 @@ buildPythonPackage rec {
     make -C tests/objc
   '';
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  checkInputs = [
-    darwin.apple_sdk.frameworks.Foundation
-  ];
+  checkInputs = [ darwin.apple_sdk.frameworks.Foundation ];
 
-  pythonImportsCheck = [
-    "rubicon.objc"
-  ];
+  pythonImportsCheck = [ "rubicon.objc" ];
 
   __darwinAllowLocalNetworking = true;
 
   meta = {
-    description = "A bridge interface between Python and Objective-C";
+    description = "Bridge interface between Python and Objective-C";
     homepage = "https://github.com/beeware/rubicon-objc/";
     changelog = "https://github.com/beeware/rubicon-objc/releases/tag/v${version}";
     license = lib.licenses.bsd3;
diff --git a/pkgs/development/python-modules/rubymarshal/default.nix b/pkgs/development/python-modules/rubymarshal/default.nix
index 08303c74ae717..d2b485ee4f061 100644
--- a/pkgs/development/python-modules/rubymarshal/default.nix
+++ b/pkgs/development/python-modules/rubymarshal/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, hypothesis, isPy3k }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hypothesis,
+  isPy3k,
+}:
 
 buildPythonPackage rec {
   pname = "rubymarshal";
diff --git a/pkgs/development/python-modules/ruff-api/Cargo.lock b/pkgs/development/python-modules/ruff-api/Cargo.lock
new file mode 100644
index 0000000000000..e6be1c5b10f69
--- /dev/null
+++ b/pkgs/development/python-modules/ruff-api/Cargo.lock
@@ -0,0 +1,2861 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "Inflector"
+version = "0.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3"
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "annotate-snippets"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7021ce4924a3f25f802b2cccd1af585e39ea1a363a1aa2e72afe54b67a3a7a7"
+
+[[package]]
+name = "annotate-snippets"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccaf7e9dfbb6ab22c82e473cd1a8a7bd313c19a5b7e40970f3d89ef5a5c9e81e"
+dependencies = [
+ "unicode-width",
+ "yansi-term",
+]
+
+[[package]]
+name = "anstream"
+version = "0.6.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "is_terminal_polyfill",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-query"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "3.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8"
+dependencies = [
+ "anstyle",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.86"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
+
+[[package]]
+name = "argfile"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a1cc0ba69de57db40674c66f7cf2caee3981ddef084388482c95c0e2133e5e8"
+dependencies = [
+ "fs-err",
+ "os_str_bytes",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
+
+[[package]]
+name = "bincode"
+version = "1.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
+
+[[package]]
+name = "bstr"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c"
+dependencies = [
+ "memchr",
+ "regex-automata 0.4.7",
+ "serde",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "cachedir"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4703f3937077db8fa35bee3c8789343c1aec2585f0146f09d658d4ccc0e8d873"
+dependencies = [
+ "tempfile",
+]
+
+[[package]]
+name = "cc"
+version = "1.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "cfg_aliases"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
+
+[[package]]
+name = "chic"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5b5db619f3556839cb2223ae86ff3f9a09da2c5013be42bc9af08c9589bf70c"
+dependencies = [
+ "annotate-snippets 0.6.1",
+]
+
+[[package]]
+name = "chrono"
+version = "0.4.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
+dependencies = [
+ "android-tzdata",
+ "iana-time-zone",
+ "num-traits",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "clap"
+version = "4.5.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc"
+dependencies = [
+ "clap_builder",
+ "clap_derive",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.5.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "clap_lex",
+ "strsim",
+ "terminal_size",
+]
+
+[[package]]
+name = "clap_complete"
+version = "4.5.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8670053e87c316345e384ca1f3eba3006fc6355ed8b8a1140d104e109e3df34"
+dependencies = [
+ "clap",
+]
+
+[[package]]
+name = "clap_complete_command"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "183495371ea78d4c9ff638bfc6497d46fed2396e4f9c50aebc1278a4a9919a3d"
+dependencies = [
+ "clap",
+ "clap_complete",
+ "clap_complete_fig",
+ "clap_complete_nushell",
+]
+
+[[package]]
+name = "clap_complete_fig"
+version = "4.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d494102c8ff3951810c72baf96910b980fb065ca5d3101243e6a8dc19747c86b"
+dependencies = [
+ "clap",
+ "clap_complete",
+]
+
+[[package]]
+name = "clap_complete_nushell"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d02bc8b1a18ee47c4d2eec3fb5ac034dc68ebea6125b1509e9ccdffcddce66e"
+dependencies = [
+ "clap",
+ "clap_complete",
+]
+
+[[package]]
+name = "clap_derive"
+version = "4.5.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97"
+
+[[package]]
+name = "clearscreen"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f8c93eb5f77c9050c7750e14f13ef1033a40a0aac70c6371535b6763a01438c"
+dependencies = [
+ "nix",
+ "terminfo",
+ "thiserror",
+ "which",
+ "winapi",
+]
+
+[[package]]
+name = "colorchoice"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0"
+
+[[package]]
+name = "colored"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8"
+dependencies = [
+ "lazy_static",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+
+[[package]]
+name = "countme"
+version = "3.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636"
+
+[[package]]
+name = "crossbeam"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8"
+dependencies = [
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-epoch",
+ "crossbeam-queue",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
+dependencies = [
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-queue"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
+
+[[package]]
+name = "darling"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"
+dependencies = [
+ "darling_core",
+ "darling_macro",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
+dependencies = [
+ "darling_core",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "dirs"
+version = "4.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059"
+dependencies = [
+ "dirs-sys 0.3.7",
+]
+
+[[package]]
+name = "dirs"
+version = "5.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
+dependencies = [
+ "dirs-sys 0.4.1",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6"
+dependencies = [
+ "libc",
+ "redox_users",
+ "winapi",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
+dependencies = [
+ "libc",
+ "option-ext",
+ "redox_users",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "drop_bomb"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9bda8e21c04aca2ae33ffc2fd8c23134f3cac46db123ba97bd9d3f3b8a4a85e1"
+
+[[package]]
+name = "either"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
+
+[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
+name = "errno"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "fastrand"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a"
+
+[[package]]
+name = "fern"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9f0c14694cbd524c8720dd69b0e3179344f04ebb5f90f2e4a440c6ea3b2f1ee"
+dependencies = [
+ "log",
+]
+
+[[package]]
+name = "filetime"
+version = "0.2.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall 0.4.1",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "fs-err"
+version = "2.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "fsevent-sys"
+version = "4.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "getopts"
+version = "0.2.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5"
+dependencies = [
+ "unicode-width",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "libc",
+ "wasi",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "glob"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+
+[[package]]
+name = "globset"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1"
+dependencies = [
+ "aho-corasick",
+ "bstr",
+ "log",
+ "regex-automata 0.4.7",
+ "regex-syntax 0.8.4",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.14.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "home"
+version = "0.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "windows-core",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "ident_case"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+
+[[package]]
+name = "idna"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "ignore"
+version = "0.4.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1"
+dependencies = [
+ "crossbeam-deque",
+ "globset",
+ "log",
+ "memchr",
+ "regex-automata 0.4.7",
+ "same-file",
+ "walkdir",
+ "winapi-util",
+]
+
+[[package]]
+name = "imperative"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29a1f6526af721f9aec9ceed7ab8ebfca47f3399d08b80056c2acca3fcb694a9"
+dependencies = [
+ "phf",
+ "rust-stemmers",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+ "serde",
+]
+
+[[package]]
+name = "indoc"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306"
+
+[[package]]
+name = "inotify"
+version = "0.9.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff"
+dependencies = [
+ "bitflags 1.3.2",
+ "inotify-sys",
+ "libc",
+]
+
+[[package]]
+name = "inotify-sys"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "is-docker"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "is-macro"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59a85abdc13717906baccb5a1e435556ce0df215f242892f721dff62bf25288f"
+dependencies = [
+ "Inflector",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "is-wsl"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5"
+dependencies = [
+ "is-docker",
+ "once_cell",
+]
+
+[[package]]
+name = "is_terminal_polyfill"
+version = "1.70.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
+
+[[package]]
+name = "itertools"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
+
+[[package]]
+name = "jod-thread"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b23360e99b8717f20aaa4598f5a6541efbe30630039fbc7706cf954a87947ae"
+
+[[package]]
+name = "js-sys"
+version = "0.3.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "kqueue"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c"
+dependencies = [
+ "kqueue-sys",
+ "libc",
+]
+
+[[package]]
+name = "kqueue-sys"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b"
+dependencies = [
+ "bitflags 1.3.2",
+ "libc",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
+
+[[package]]
+name = "libc"
+version = "0.2.155"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
+
+[[package]]
+name = "libcst"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10293a04a48e8b0cb2cc825a93b83090e527bffd3c897a0255ad7bc96079e920"
+dependencies = [
+ "chic",
+ "libcst_derive",
+ "memchr",
+ "paste",
+ "peg",
+ "regex",
+ "thiserror",
+]
+
+[[package]]
+name = "libcst_derive"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2ae40017ac09cd2c6a53504cb3c871c7f2b41466eac5bc66ba63f39073b467b"
+dependencies = [
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "libmimalloc-sys"
+version = "0.1.39"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23aa6811d3bd4deb8a84dde645f943476d13b248d818edcf8ce0b2f37f036b44"
+dependencies = [
+ "cc",
+ "libc",
+]
+
+[[package]]
+name = "libredox"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
+dependencies = [
+ "bitflags 2.6.0",
+ "libc",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
+
+[[package]]
+name = "lock_api"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
+
+[[package]]
+name = "lsp-server"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "248f65b78f6db5d8e1b1604b4098a28b43d21a8eb1deeca22b1c421b276c7095"
+dependencies = [
+ "crossbeam-channel",
+ "log",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "lsp-types"
+version = "0.95.1"
+source = "git+https://github.com/astral-sh/lsp-types.git?rev=3512a9f#3512a9f33eadc5402cfab1b8f7340824c8ca1439"
+dependencies = [
+ "bitflags 1.3.2",
+ "serde",
+ "serde_json",
+ "serde_repr",
+ "url",
+]
+
+[[package]]
+name = "matchers"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
+dependencies = [
+ "regex-automata 0.1.10",
+]
+
+[[package]]
+name = "matches"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
+
+[[package]]
+name = "matchit"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3"
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "memoffset"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "mimalloc"
+version = "0.1.43"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68914350ae34959d83f732418d51e2427a794055d0b9529f48259ac07af65633"
+dependencies = [
+ "libmimalloc-sys",
+]
+
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
+name = "mio"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
+dependencies = [
+ "libc",
+ "log",
+ "wasi",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "natord"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "308d96db8debc727c3fd9744aac51751243420e46edf401010908da7f8d5e57c"
+
+[[package]]
+name = "newtype-uuid"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3526cb7c660872e401beaf3297f95f548ce3b4b4bdd8121b7c0713771d7c4a6e"
+dependencies = [
+ "uuid",
+]
+
+[[package]]
+name = "nix"
+version = "0.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
+dependencies = [
+ "bitflags 2.6.0",
+ "cfg-if",
+ "cfg_aliases",
+ "libc",
+]
+
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
+[[package]]
+name = "notify"
+version = "6.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"
+dependencies = [
+ "bitflags 2.6.0",
+ "crossbeam-channel",
+ "filetime",
+ "fsevent-sys",
+ "inotify",
+ "kqueue",
+ "libc",
+ "log",
+ "mio",
+ "walkdir",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "nu-ansi-term"
+version = "0.46.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
+dependencies = [
+ "overload",
+ "winapi",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+
+[[package]]
+name = "option-ext"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
+
+[[package]]
+name = "os_str_bytes"
+version = "7.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ac44c994af577c799b1b4bd80dc214701e349873ad894d6cdf96f4f7526e0b9"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "overload"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
+
+[[package]]
+name = "parking_lot"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall 0.5.3",
+ "smallvec",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "paste"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
+
+[[package]]
+name = "path-absolutize"
+version = "3.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4af381fe79fa195b4909485d99f73a80792331df0625188e707854f0b3383f5"
+dependencies = [
+ "path-dedot",
+]
+
+[[package]]
+name = "path-dedot"
+version = "3.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07ba0ad7e047712414213ff67533e6dd477af0a4e1d14fb52343e53d30ea9397"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "path-slash"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42"
+
+[[package]]
+name = "pathdiff"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
+
+[[package]]
+name = "peg"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "295283b02df346d1ef66052a757869b2876ac29a6bb0ac3f5f7cd44aebe40e8f"
+dependencies = [
+ "peg-macros",
+ "peg-runtime",
+]
+
+[[package]]
+name = "peg-macros"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bdad6a1d9cf116a059582ce415d5f5566aabcd4008646779dab7fdc2a9a9d426"
+dependencies = [
+ "peg-runtime",
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "peg-runtime"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3aeb8f54c078314c2065ee649a7241f46b9d8e418e1a9581ba0546657d7aa3a"
+
+[[package]]
+name = "pep440_rs"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0c29f9c43de378b4e4e0cd7dbcce0e5cfb80443de8c05620368b2948bc936a1"
+dependencies = [
+ "once_cell",
+ "regex",
+ "serde",
+ "unicode-width",
+]
+
+[[package]]
+name = "pep440_rs"
+version = "0.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "466eada3179c2e069ca897b99006cbb33f816290eaeec62464eea907e22ae385"
+dependencies = [
+ "once_cell",
+ "serde",
+ "unicode-width",
+ "unscanny",
+]
+
+[[package]]
+name = "pep508_rs"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "910c513bea0f4f833122321c0f20e8c704e01de98692f6989c2ec21f43d88b1e"
+dependencies = [
+ "once_cell",
+ "pep440_rs 0.4.0",
+ "regex",
+ "serde",
+ "thiserror",
+ "tracing",
+ "unicode-width",
+ "url",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+
+[[package]]
+name = "phf"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc"
+dependencies = [
+ "phf_shared",
+]
+
+[[package]]
+name = "phf_codegen"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a"
+dependencies = [
+ "phf_generator",
+ "phf_shared",
+]
+
+[[package]]
+name = "phf_generator"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0"
+dependencies = [
+ "phf_shared",
+ "rand",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b"
+dependencies = [
+ "siphasher",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
+dependencies = [
+ "zerocopy",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.86"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "pyo3"
+version = "0.19.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e681a6cfdc4adcc93b4d3cf993749a4552018ee0a9b65fc0ccfad74352c72a38"
+dependencies = [
+ "cfg-if",
+ "indoc",
+ "libc",
+ "memoffset",
+ "parking_lot",
+ "pyo3-build-config",
+ "pyo3-ffi",
+ "pyo3-macros",
+ "unindent",
+]
+
+[[package]]
+name = "pyo3-build-config"
+version = "0.19.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "076c73d0bc438f7a4ef6fdd0c3bb4732149136abd952b110ac93e4edb13a6ba5"
+dependencies = [
+ "once_cell",
+ "target-lexicon",
+]
+
+[[package]]
+name = "pyo3-ffi"
+version = "0.19.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e53cee42e77ebe256066ba8aa77eff722b3bb91f3419177cf4cd0f304d3284d9"
+dependencies = [
+ "libc",
+ "pyo3-build-config",
+]
+
+[[package]]
+name = "pyo3-macros"
+version = "0.19.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfeb4c99597e136528c6dd7d5e3de5434d1ceaf487436a3f03b2d56b6fc9efd1"
+dependencies = [
+ "proc-macro2",
+ "pyo3-macros-backend",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "pyo3-macros-backend"
+version = "0.19.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "947dc12175c254889edc0c02e399476c2f652b4b9ebd123aa655c224de259536"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "pyproject-toml"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95c3dd745f99aa3c554b7bb00859f7d18c2f1d6afd749ccc86d60b61e702abd9"
+dependencies = [
+ "indexmap",
+ "pep440_rs 0.4.0",
+ "pep508_rs",
+ "serde",
+ "toml",
+]
+
+[[package]]
+name = "quick-junit"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfc1a6a5406a114913df2df8507998c755311b55b78584bed5f6e88f6417c4d4"
+dependencies = [
+ "chrono",
+ "indexmap",
+ "newtype-uuid",
+ "quick-xml",
+ "strip-ansi-escapes",
+ "thiserror",
+ "uuid",
+]
+
+[[package]]
+name = "quick-xml"
+version = "0.31.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "rayon"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
+dependencies = [
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
+dependencies = [
+ "crossbeam-deque",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4"
+dependencies = [
+ "bitflags 2.6.0",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891"
+dependencies = [
+ "getrandom",
+ "libredox",
+ "thiserror",
+]
+
+[[package]]
+name = "regex"
+version = "1.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata 0.4.7",
+ "regex-syntax 0.8.4",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+dependencies = [
+ "regex-syntax 0.6.29",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax 0.8.4",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
+
+[[package]]
+name = "ruff"
+version = "0.4.10"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "anyhow",
+ "argfile",
+ "bincode",
+ "bitflags 2.6.0",
+ "cachedir",
+ "chrono",
+ "clap",
+ "clap_complete_command",
+ "clearscreen",
+ "colored",
+ "filetime",
+ "ignore",
+ "is-macro",
+ "itertools",
+ "log",
+ "mimalloc",
+ "notify",
+ "path-absolutize",
+ "rayon",
+ "regex",
+ "ruff_cache",
+ "ruff_diagnostics",
+ "ruff_linter",
+ "ruff_macros",
+ "ruff_notebook",
+ "ruff_python_ast",
+ "ruff_python_formatter",
+ "ruff_server",
+ "ruff_source_file",
+ "ruff_text_size",
+ "ruff_workspace",
+ "rustc-hash",
+ "serde",
+ "serde_json",
+ "shellexpand",
+ "strum",
+ "tempfile",
+ "thiserror",
+ "tikv-jemallocator",
+ "toml",
+ "tracing",
+ "walkdir",
+ "wild",
+]
+
+[[package]]
+name = "ruff-api"
+version = "0.0.8"
+dependencies = [
+ "glob",
+ "pyo3",
+ "ruff",
+ "ruff_formatter",
+ "ruff_linter",
+ "ruff_python_ast",
+ "ruff_python_formatter",
+ "ruff_workspace",
+ "rustc-hash",
+]
+
+[[package]]
+name = "ruff_cache"
+version = "0.0.0"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "filetime",
+ "glob",
+ "globset",
+ "itertools",
+ "regex",
+ "seahash",
+]
+
+[[package]]
+name = "ruff_diagnostics"
+version = "0.0.0"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "anyhow",
+ "is-macro",
+ "log",
+ "ruff_text_size",
+ "serde",
+]
+
+[[package]]
+name = "ruff_formatter"
+version = "0.0.0"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "drop_bomb",
+ "ruff_cache",
+ "ruff_macros",
+ "ruff_text_size",
+ "rustc-hash",
+ "serde",
+ "static_assertions",
+ "tracing",
+ "unicode-width",
+]
+
+[[package]]
+name = "ruff_index"
+version = "0.0.0"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "ruff_macros",
+]
+
+[[package]]
+name = "ruff_linter"
+version = "0.4.10"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "aho-corasick",
+ "annotate-snippets 0.9.2",
+ "anyhow",
+ "bitflags 2.6.0",
+ "chrono",
+ "clap",
+ "colored",
+ "fern",
+ "glob",
+ "globset",
+ "imperative",
+ "is-macro",
+ "is-wsl",
+ "itertools",
+ "libcst",
+ "log",
+ "memchr",
+ "natord",
+ "once_cell",
+ "path-absolutize",
+ "pathdiff",
+ "pep440_rs 0.6.6",
+ "pyproject-toml",
+ "quick-junit",
+ "regex",
+ "ruff_cache",
+ "ruff_diagnostics",
+ "ruff_macros",
+ "ruff_notebook",
+ "ruff_python_ast",
+ "ruff_python_codegen",
+ "ruff_python_index",
+ "ruff_python_literal",
+ "ruff_python_parser",
+ "ruff_python_semantic",
+ "ruff_python_stdlib",
+ "ruff_python_trivia",
+ "ruff_source_file",
+ "ruff_text_size",
+ "rustc-hash",
+ "serde",
+ "serde_json",
+ "similar",
+ "smallvec",
+ "strum",
+ "strum_macros",
+ "thiserror",
+ "toml",
+ "typed-arena",
+ "unicode-width",
+ "unicode_names2",
+ "url",
+]
+
+[[package]]
+name = "ruff_macros"
+version = "0.0.0"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "itertools",
+ "proc-macro2",
+ "quote",
+ "ruff_python_trivia",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "ruff_notebook"
+version = "0.0.0"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "anyhow",
+ "itertools",
+ "once_cell",
+ "rand",
+ "ruff_diagnostics",
+ "ruff_source_file",
+ "ruff_text_size",
+ "serde",
+ "serde_json",
+ "serde_with",
+ "thiserror",
+ "uuid",
+]
+
+[[package]]
+name = "ruff_python_ast"
+version = "0.0.0"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "aho-corasick",
+ "bitflags 2.6.0",
+ "is-macro",
+ "itertools",
+ "once_cell",
+ "ruff_python_trivia",
+ "ruff_source_file",
+ "ruff_text_size",
+ "rustc-hash",
+ "serde",
+]
+
+[[package]]
+name = "ruff_python_codegen"
+version = "0.0.0"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "once_cell",
+ "ruff_python_ast",
+ "ruff_python_literal",
+ "ruff_python_parser",
+ "ruff_source_file",
+ "ruff_text_size",
+]
+
+[[package]]
+name = "ruff_python_formatter"
+version = "0.0.0"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "anyhow",
+ "clap",
+ "countme",
+ "itertools",
+ "memchr",
+ "once_cell",
+ "regex",
+ "ruff_cache",
+ "ruff_formatter",
+ "ruff_macros",
+ "ruff_python_ast",
+ "ruff_python_parser",
+ "ruff_python_trivia",
+ "ruff_source_file",
+ "ruff_text_size",
+ "rustc-hash",
+ "serde",
+ "smallvec",
+ "static_assertions",
+ "thiserror",
+ "tracing",
+]
+
+[[package]]
+name = "ruff_python_index"
+version = "0.0.0"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "ruff_python_ast",
+ "ruff_python_parser",
+ "ruff_python_trivia",
+ "ruff_source_file",
+ "ruff_text_size",
+]
+
+[[package]]
+name = "ruff_python_literal"
+version = "0.0.0"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "bitflags 2.6.0",
+ "itertools",
+ "ruff_python_ast",
+ "unic-ucd-category",
+]
+
+[[package]]
+name = "ruff_python_parser"
+version = "0.0.0"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "bitflags 2.6.0",
+ "bstr",
+ "memchr",
+ "ruff_python_ast",
+ "ruff_python_trivia",
+ "ruff_text_size",
+ "rustc-hash",
+ "static_assertions",
+ "unicode-ident",
+ "unicode-normalization",
+ "unicode_names2",
+]
+
+[[package]]
+name = "ruff_python_semantic"
+version = "0.0.0"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "bitflags 2.6.0",
+ "is-macro",
+ "ruff_index",
+ "ruff_python_ast",
+ "ruff_python_stdlib",
+ "ruff_source_file",
+ "ruff_text_size",
+ "rustc-hash",
+]
+
+[[package]]
+name = "ruff_python_stdlib"
+version = "0.0.0"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "ruff_python_trivia"
+version = "0.0.0"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "itertools",
+ "ruff_source_file",
+ "ruff_text_size",
+ "unicode-ident",
+]
+
+[[package]]
+name = "ruff_server"
+version = "0.2.2"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "anyhow",
+ "crossbeam",
+ "globset",
+ "jod-thread",
+ "libc",
+ "lsp-server",
+ "lsp-types",
+ "regex",
+ "ruff_diagnostics",
+ "ruff_formatter",
+ "ruff_linter",
+ "ruff_notebook",
+ "ruff_python_ast",
+ "ruff_python_codegen",
+ "ruff_python_formatter",
+ "ruff_python_index",
+ "ruff_python_parser",
+ "ruff_source_file",
+ "ruff_text_size",
+ "ruff_workspace",
+ "rustc-hash",
+ "serde",
+ "serde_json",
+ "shellexpand",
+ "tracing",
+ "tracing-subscriber",
+ "walkdir",
+]
+
+[[package]]
+name = "ruff_source_file"
+version = "0.0.0"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "memchr",
+ "once_cell",
+ "ruff_text_size",
+ "serde",
+]
+
+[[package]]
+name = "ruff_text_size"
+version = "0.0.0"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "ruff_workspace"
+version = "0.0.0"
+source = "git+https://github.com/astral-sh/ruff.git?tag=v0.4.10#b54922fd7394c36cdc390fd21aaee99206ebc361"
+dependencies = [
+ "anyhow",
+ "colored",
+ "dirs 5.0.1",
+ "glob",
+ "globset",
+ "ignore",
+ "is-macro",
+ "itertools",
+ "log",
+ "matchit",
+ "path-absolutize",
+ "path-slash",
+ "pep440_rs 0.6.6",
+ "regex",
+ "ruff_cache",
+ "ruff_formatter",
+ "ruff_linter",
+ "ruff_macros",
+ "ruff_python_ast",
+ "ruff_python_formatter",
+ "ruff_source_file",
+ "rustc-hash",
+ "serde",
+ "shellexpand",
+ "strum",
+ "toml",
+]
+
+[[package]]
+name = "rust-stemmers"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54"
+dependencies = [
+ "serde",
+ "serde_derive",
+]
+
+[[package]]
+name = "rustc-hash"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+
+[[package]]
+name = "rustix"
+version = "0.38.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
+dependencies = [
+ "bitflags 2.6.0",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6"
+
+[[package]]
+name = "ryu"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "seahash"
+version = "4.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
+
+[[package]]
+name = "serde"
+version = "1.0.204"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.204"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.122"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_repr"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde_with"
+version = "3.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "serde_with_macros",
+]
+
+[[package]]
+name = "serde_with_macros"
+version = "3.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350"
+dependencies = [
+ "darling",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "sharded-slab"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
+dependencies = [
+ "lazy_static",
+]
+
+[[package]]
+name = "shellexpand"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da03fa3b94cc19e3ebfc88c4229c49d8f08cdbd1228870a45f0ffdf84988e14b"
+dependencies = [
+ "dirs 5.0.1",
+]
+
+[[package]]
+name = "similar"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e"
+
+[[package]]
+name = "siphasher"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
+
+[[package]]
+name = "smallvec"
+version = "1.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "strip-ansi-escapes"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55ff8ef943b384c414f54aefa961dd2bd853add74ec75e7ac74cf91dba62bcfa"
+dependencies = [
+ "vte",
+]
+
+[[package]]
+name = "strsim"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+
+[[package]]
+name = "strum"
+version = "0.26.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06"
+dependencies = [
+ "strum_macros",
+]
+
+[[package]]
+name = "strum_macros"
+version = "0.26.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "rustversion",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.72"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "target-lexicon"
+version = "0.12.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
+
+[[package]]
+name = "tempfile"
+version = "3.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8fcd239983515c23a32fb82099f97d0b11b8c72f654ed659363a95c3dad7a53"
+dependencies = [
+ "cfg-if",
+ "fastrand",
+ "once_cell",
+ "rustix",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "terminal_size"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7"
+dependencies = [
+ "rustix",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "terminfo"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "666cd3a6681775d22b200409aad3b089c5b99fb11ecdd8a204d9d62f8148498f"
+dependencies = [
+ "dirs 4.0.0",
+ "fnv",
+ "nom",
+ "phf",
+ "phf_codegen",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.63"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.63"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "thread_local"
+version = "1.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+]
+
+[[package]]
+name = "tikv-jemalloc-sys"
+version = "0.5.4+5.3.0-patched"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9402443cb8fd499b6f327e40565234ff34dbda27460c5b47db0db77443dd85d1"
+dependencies = [
+ "cc",
+ "libc",
+]
+
+[[package]]
+name = "tikv-jemallocator"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "965fe0c26be5c56c94e38ba547249074803efd52adfb66de62107d95aab3eaca"
+dependencies = [
+ "libc",
+ "tikv-jemalloc-sys",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
+name = "toml"
+version = "0.8.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.22.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow",
+]
+
+[[package]]
+name = "tracing"
+version = "0.1.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
+dependencies = [
+ "log",
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+dependencies = [
+ "once_cell",
+ "valuable",
+]
+
+[[package]]
+name = "tracing-log"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
+dependencies = [
+ "log",
+ "once_cell",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-subscriber"
+version = "0.3.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
+dependencies = [
+ "matchers",
+ "nu-ansi-term",
+ "once_cell",
+ "regex",
+ "sharded-slab",
+ "smallvec",
+ "thread_local",
+ "tracing",
+ "tracing-core",
+ "tracing-log",
+]
+
+[[package]]
+name = "typed-arena"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a"
+
+[[package]]
+name = "unic-char-property"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221"
+dependencies = [
+ "unic-char-range",
+]
+
+[[package]]
+name = "unic-char-range"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc"
+
+[[package]]
+name = "unic-common"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc"
+
+[[package]]
+name = "unic-ucd-category"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b8d4591f5fcfe1bd4453baaf803c40e1b1e69ff8455c47620440b46efef91c0"
+dependencies = [
+ "matches",
+ "unic-char-property",
+ "unic-char-range",
+ "unic-ucd-version",
+]
+
+[[package]]
+name = "unic-ucd-version"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4"
+dependencies = [
+ "unic-common",
+]
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "unicode-width"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
+
+[[package]]
+name = "unicode_names2"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "addeebf294df7922a1164f729fb27ebbbcea99cc32b3bf08afab62757f707677"
+dependencies = [
+ "phf",
+ "unicode_names2_generator",
+]
+
+[[package]]
+name = "unicode_names2_generator"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f444b8bba042fe3c1251ffaca35c603f2dc2ccc08d595c65a8c4f76f3e8426c0"
+dependencies = [
+ "getopts",
+ "log",
+ "phf_codegen",
+ "rand",
+]
+
+[[package]]
+name = "unindent"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1766d682d402817b5ac4490b3c3002d91dfa0d22812f341609f97b08757359c"
+
+[[package]]
+name = "unscanny"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9df2af067a7953e9c3831320f35c1cc0600c30d44d9f7a12b01db1cd88d6b47"
+
+[[package]]
+name = "url"
+version = "2.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+ "serde",
+]
+
+[[package]]
+name = "utf8parse"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
+
+[[package]]
+name = "uuid"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314"
+dependencies = [
+ "getrandom",
+ "rand",
+ "uuid-macro-internal",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "uuid-macro-internal"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee1cd046f83ea2c4e920d6ee9f7c3537ef928d75dce5d84a87c2c5d6b3999a3a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "valuable"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
+
+[[package]]
+name = "vte"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f5022b5fbf9407086c180e9557be968742d839e68346af7792b8592489732197"
+dependencies = [
+ "utf8parse",
+ "vte_generate_state_changes",
+]
+
+[[package]]
+name = "vte_generate_state_changes"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e369bee1b05d510a7b4ed645f5faa90619e05437111783ea5848f28d97d3c2e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "walkdir"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
+
+[[package]]
+name = "which"
+version = "6.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d9c5ed668ee1f17edb3b627225343d210006a90bb1e3745ce1f30b1fb115075"
+dependencies = [
+ "either",
+ "home",
+ "rustix",
+ "winsafe",
+]
+
+[[package]]
+name = "wild"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3131afc8c575281e1e80f36ed6a092aa502c08b18ed7524e86fbbb12bb410e1"
+dependencies = [
+ "glob",
+]
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
+dependencies = [
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-core"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "winnow"
+version = "0.6.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winsafe"
+version = "0.0.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904"
+
+[[package]]
+name = "yansi-term"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe5c30ade05e61656247b2e334a031dfd0cc466fadef865bdcdea8d537951bf1"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
+dependencies = [
+ "byteorder",
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
diff --git a/pkgs/development/python-modules/ruff-api/default.nix b/pkgs/development/python-modules/ruff-api/default.nix
new file mode 100644
index 0000000000000..a363c4c7d32ad
--- /dev/null
+++ b/pkgs/development/python-modules/ruff-api/default.nix
@@ -0,0 +1,61 @@
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cargo,
+  darwin,
+  fetchFromGitHub,
+  libiconv,
+  pythonOlder,
+  rustc,
+  rustPlatform,
+}:
+
+buildPythonPackage rec {
+  pname = "ruff-api";
+  version = "0.0.8";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "amyreese";
+    repo = "ruff-api";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-BW/qXq4HemqxhvjIKrrn07eqGJwAbYei7e+I+oHxujU=";
+  };
+
+  cargoDeps = rustPlatform.importCargoLock {
+    lockFile = ./Cargo.lock;
+    outputHashes = {
+      "lsp-types-0.95.1" = "sha256-8Oh299exWXVi6A39pALOISNfp8XBya8z+KT/Z7suRxQ=";
+      "ruff-0.4.10" = "sha256-FRBuvXtnbxRWoI0f8SM0U0Z5TRyX5Tbgq3d34Oh2bG4=";
+    };
+  };
+
+  nativeBuildInputs = [
+    cargo
+    rustPlatform.cargoSetupHook
+    rustPlatform.maturinBuildHook
+    rustc
+  ];
+
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
+    darwin.apple_sdk.frameworks.CoreFoundation
+    darwin.apple_sdk.frameworks.CoreServices
+    libiconv
+  ];
+
+  # Tests have issues at the moment, check with next update
+  doCheck = false;
+
+  pythonImportsCheck = [ "ruff_api" ];
+
+  meta = with lib; {
+    description = "Experimental Python API for Ruff";
+    homepage = "https://github.com/amyreese/ruff-api";
+    changelog = "https://github.com/amyreese/ruff-api/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/ruffus/default.nix b/pkgs/development/python-modules/ruffus/default.nix
index eecd65b513de6..f7c96b10d3e1a 100644
--- a/pkgs/development/python-modules/ruffus/default.nix
+++ b/pkgs/development/python-modules/ruffus/default.nix
@@ -1,9 +1,11 @@
-{ gevent
-, buildPythonPackage
-, fetchFromGitHub
-, hostname
-, pytest
-, lib, stdenv
+{
+  gevent,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hostname,
+  pytest,
+  lib,
+  stdenv,
 }:
 
 buildPythonPackage rec {
@@ -26,7 +28,7 @@ buildPythonPackage rec {
   ];
 
   # tests very flaky & hang often on darwin
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
   # test files do indeed need to be executed separately
   checkPhase = ''
     pushd ruffus/test
@@ -42,7 +44,6 @@ buildPythonPackage rec {
     description = "Light-weight Python Computational Pipeline Management";
     homepage = "http://www.ruffus.org.uk";
     license = licenses.mit;
-    maintainers = [ maintainers.kiwi ];
+    maintainers = [ ];
   };
 }
-
diff --git a/pkgs/development/python-modules/rules/default.nix b/pkgs/development/python-modules/rules/default.nix
index 3563b76affe75..81af412a75d63 100644
--- a/pkgs/development/python-modules/rules/default.nix
+++ b/pkgs/development/python-modules/rules/default.nix
@@ -1,28 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# tests
-, django
-, djangorestframework
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # tests
+  django,
+  djangorestframework,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "rules";
-  version = "3.3.0";
-  format = "setuptools";
+  version = "3.5.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "dfunckt";
     repo = "django-rules";
-    rev = "v${version}";
-    hash = "sha256-UFRfRwcvxEn0fD3ScJJ7f/EHd93BOpY3cEF9QDryJZY=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-8Kay2b2uwaI/ml/cPpcj9svoDQI0ptV8tyGeZ76SgZw=";
   };
 
-  pythonImportsCheck = [
-    "rules"
-  ];
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "rules" ];
 
   nativeCheckInputs = [
     django
diff --git a/pkgs/development/python-modules/runs/default.nix b/pkgs/development/python-modules/runs/default.nix
index ec751bfd7f4b1..19ea9683b3784 100644
--- a/pkgs/development/python-modules/runs/default.nix
+++ b/pkgs/development/python-modules/runs/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, xmod
-, pytestCheckHook
-, tdir
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  xmod,
+  pytestCheckHook,
+  tdir,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-aEamhXr3C+jYDzQGzcmGFyl5oEtovxlNacFM08y0ZEk=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  dependencies = [
-    xmod
-  ];
+  dependencies = [ xmod ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -37,15 +34,13 @@ buildPythonPackage rec {
     "test_many"
   ];
 
-  pythonImportsCheck = [
-    "runs"
-  ];
+  pythonImportsCheck = [ "runs" ];
 
   meta = with lib; {
     description = "Run a block of text as a subprocess";
     homepage = "https://github.com/rec/runs";
     changelog = "https://github.com/rec/runs/blob/${src.rev}/CHANGELOG";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/rustworkx/default.nix b/pkgs/development/python-modules/rustworkx/default.nix
index 69b231854995d..3f17b45e2d20f 100644
--- a/pkgs/development/python-modules/rustworkx/default.nix
+++ b/pkgs/development/python-modules/rustworkx/default.nix
@@ -1,16 +1,17 @@
-{ fetchFromGitHub
-, buildPythonPackage
-, cargo
-, rustPlatform
-, rustc
-, setuptools-rust
-, numpy
-, fixtures
-, networkx
-, testtools
-, libiconv
-, stdenv
-, lib
+{
+  fetchFromGitHub,
+  buildPythonPackage,
+  cargo,
+  rustPlatform,
+  rustc,
+  setuptools-rust,
+  numpy,
+  fixtures,
+  networkx,
+  testtools,
+  libiconv,
+  stdenv,
+  lib,
 }:
 
 buildPythonPackage rec {
@@ -37,14 +38,18 @@ buildPythonPackage rec {
     rustc
   ];
 
-  buildInputs = [ numpy ] ++ lib.optionals stdenv.isDarwin [ libiconv ];
+  buildInputs = [ numpy ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
-  checkInputs = [ fixtures networkx testtools ];
+  checkInputs = [
+    fixtures
+    networkx
+    testtools
+  ];
 
   pythonImportsCheck = [ "rustworkx" ];
 
   meta = with lib; {
-    description = "A high performance Python graph library implemented in Rust";
+    description = "High performance Python graph library implemented in Rust";
     homepage = "https://github.com/Qiskit/rustworkx";
     license = licenses.asl20;
     maintainers = with maintainers; [ raitobezarius ];
diff --git a/pkgs/development/python-modules/ruuvitag-ble/default.nix b/pkgs/development/python-modules/ruuvitag-ble/default.nix
index d69e92636aef9..629e3c539954a 100644
--- a/pkgs/development/python-modules/ruuvitag-ble/default.nix
+++ b/pkgs/development/python-modules/ruuvitag-ble/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, bluetooth-data-tools
-, bluetooth-sensor-state-data
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, home-assistant-bluetooth
-, pytestCheckHook
-, pythonOlder
-, sensor-state-data
+{
+  lib,
+  bluetooth-data-tools,
+  bluetooth-sensor-state-data,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  home-assistant-bluetooth,
+  pytestCheckHook,
+  pythonOlder,
+  sensor-state-data,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-J+807p2mE+VZ0oqldFtjdcNGsRTkAU54s6byQSGrng4=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     bluetooth-data-tools
@@ -35,18 +34,14 @@ buildPythonPackage rec {
     sensor-state-data
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace " --cov=ruuvitag_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  pythonImportsCheck = [
-    "ruuvitag_ble"
-  ];
+  pythonImportsCheck = [ "ruuvitag_ble" ];
 
   meta = with lib; {
     description = "Library for Ruuvitag BLE devices";
diff --git a/pkgs/development/python-modules/ruyaml/default.nix b/pkgs/development/python-modules/ruyaml/default.nix
index 4131200f2276a..0bcd0dd7a71dc 100644
--- a/pkgs/development/python-modules/ruyaml/default.nix
+++ b/pkgs/development/python-modules/ruyaml/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, distro
-, fetchFromGitHub
-, fetchpatch
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  distro,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -29,25 +29,18 @@ buildPythonPackage rec {
       --replace '"setuptools_scm_git_archive >= 1.1",' ""
   '';
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    distro
-  ];
+  propagatedBuildInputs = [ distro ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pytestFlagsArray = [
-    "-W" "ignore::DeprecationWarning"
+    "-W"
+    "ignore::DeprecationWarning"
   ];
 
-  pythonImportsCheck = [
-    "ruyaml"
-  ];
+  pythonImportsCheck = [ "ruyaml" ];
 
   disabledTests = [
     # Assertion error
diff --git a/pkgs/development/python-modules/rx/default.nix b/pkgs/development/python-modules/rx/default.nix
index 852dfcb7e6631..3102568bcb82c 100644
--- a/pkgs/development/python-modules/rx/default.nix
+++ b/pkgs/development/python-modules/rx/default.nix
@@ -1,9 +1,16 @@
-{ lib, fetchPypi, buildPythonPackage, pythonOlder, nose }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "rx";
   version = "3.2.0";
-  format = "setuptools";
+  pyproject = true;
+
   disabled = pythonOlder "3.6";
 
   # Use fetchPypi to avoid the updater script to migrate it to `reactivex` which
@@ -14,12 +21,9 @@ buildPythonPackage rec {
     sha256 = "b657ca2b45aa485da2f7dcfd09fac2e554f7ac51ff3c2f8f2ff962ecd963d91c";
   };
 
-  nativeCheckInputs = [ nose ];
+  build-system = [ setuptools ];
 
-  # Some tests are nondeterministic. (`grep sleep -r tests`)
-  # test_timeout_schedule_action_cancel: https://hydra.nixos.org/build/74954646
-  # test_new_thread_scheduler_timeout: https://hydra.nixos.org/build/74949851
-  doCheck = false;
+  doCheck = false; # PyPI tarball does not provides tests
 
   pythonImportsCheck = [ "rx" ];
 
diff --git a/pkgs/development/python-modules/rxv/default.nix b/pkgs/development/python-modules/rxv/default.nix
index 9f947a78ad2a1..30be2072b595e 100644
--- a/pkgs/development/python-modules/rxv/default.nix
+++ b/pkgs/development/python-modules/rxv/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, defusedxml
-, fetchFromGitHub
-, mock
-, pytest-asyncio
-, pytest-timeout
-, pytest-vcr
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  defusedxml,
+  fetchFromGitHub,
+  mock,
+  pytest-asyncio,
+  pytest-timeout,
+  pytest-vcr,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     sha256 = "0jldnlzbfg5jm1nbgv91mlvcqkswd9f2n3qj9aqlbmj1cxq19yz8";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     defusedxml
diff --git a/pkgs/development/python-modules/ryd-client/default.nix b/pkgs/development/python-modules/ryd-client/default.nix
new file mode 100644
index 0000000000000..958a96b2c3b77
--- /dev/null
+++ b/pkgs/development/python-modules/ryd-client/default.nix
@@ -0,0 +1,32 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  requests,
+}:
+buildPythonPackage rec {
+  pname = "ryd-client";
+  version = "0.0.6";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-PxrVdVw+dAkF8WWzYyg2/B5CFurNPA5XRNtH9uu/SiY=";
+  };
+
+  build-system = [ setuptools ];
+  dependencies = [ requests ];
+
+  # no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "ryd_client" ];
+
+  meta = {
+    description = "Python client library for the Return YouTube Dislike API";
+    homepage = "https://github.com/bbilly1/ryd-client";
+    license = lib.licenses.mit;
+    maintainers = [ lib.maintainers.ericthemagician ];
+  };
+}
diff --git a/pkgs/development/python-modules/rzpipe/default.nix b/pkgs/development/python-modules/rzpipe/default.nix
index d5a98e0c63bb7..76a29b256f1c6 100644
--- a/pkgs/development/python-modules/rzpipe/default.nix
+++ b/pkgs/development/python-modules/rzpipe/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
   # No native rz_core library
   doCheck = false;
 
-  pythonImportsCheck = [
-    "rzpipe"
-  ];
+  pythonImportsCheck = [ "rzpipe" ];
 
   meta = with lib; {
     description = "Python interface for rizin";
diff --git a/pkgs/development/python-modules/s2clientprotocol/default.nix b/pkgs/development/python-modules/s2clientprotocol/default.nix
index 0bbc0fefe2d89..08ce5f72eaaa3 100644
--- a/pkgs/development/python-modules/s2clientprotocol/default.nix
+++ b/pkgs/development/python-modules/s2clientprotocol/default.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
-, protobuf
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+  protobuf,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,9 @@ buildPythonPackage rec {
   buildInputs = [ protobuf ];
 
   meta = {
-    description = "StarCraft II - client protocol.";
-    homepage = "https://github.com/Blizzard/sc2client-proto";
+    description = "StarCraft II - client protocol";
+    homepage = "https://github.com/Blizzard/s2client-proto";
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/s3fs/default.nix b/pkgs/development/python-modules/s3fs/default.nix
index 46c7044759eda..bd53e3b3ef2bb 100644
--- a/pkgs/development/python-modules/s3fs/default.nix
+++ b/pkgs/development/python-modules/s3fs/default.nix
@@ -1,33 +1,31 @@
-{ lib
-, stdenv
-, aiobotocore
-, aiohttp
-, buildPythonPackage
-, docutils
-, fetchPypi
-, fsspec
-, pythonOlder
+{
+  lib,
+  aiobotocore,
+  aiohttp,
+  buildPythonPackage,
+  docutils,
+  fetchPypi,
+  fsspec,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "s3fs";
-  version = "2024.3.1";
+  version = "2024.6.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-G4vI29Zee2D1SHN49u7/4d5ZqnLKqe/Kba1quHdAVIc=";
+    hash = "sha256-bCEG1sNPv7uI49IMbzVyiW1e49NRKJZpYwHCGjxUG+o=";
   };
 
   postPatch = ''
     sed -i 's/fsspec==.*/fsspec/' requirements.txt
   '';
 
-  buildInputs = [
-    docutils
-  ];
+  buildInputs = [ docutils ];
 
   propagatedBuildInputs = [
     aiobotocore
@@ -40,13 +38,10 @@ buildPythonPackage rec {
   # pythonPackages.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "s3fs"
-  ];
+  pythonImportsCheck = [ "s3fs" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
-    description = "A Pythonic file interface for S3";
+    description = "Pythonic file interface for S3";
     homepage = "https://github.com/fsspec/s3fs";
     changelog = "https://github.com/fsspec/s3fs/raw/${version}/docs/source/changelog.rst";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/s3transfer/default.nix b/pkgs/development/python-modules/s3transfer/default.nix
index 124b44f097cc5..d245c6b0b964b 100644
--- a/pkgs/development/python-modules/s3transfer/default.nix
+++ b/pkgs/development/python-modules/s3transfer/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, stdenv
-, botocore
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  stdenv,
+  botocore,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "s3transfer";
-  version = "0.10.0";
+  version = "0.10.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,40 +20,30 @@ buildPythonPackage rec {
     owner = "boto";
     repo = "s3transfer";
     rev = "refs/tags/${version}";
-    hash = "sha256-21xycx1+84uY4gFr7N+ra98dpsEwxy9zeSl4QA66nUc=";
+    hash = "sha256-EHNkYviafnuU8AADp9oyaDuAnoPOdOVNSLCcoONnHPY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    botocore
-  ];
+  propagatedBuildInputs = [ botocore ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTestPaths = [
-    # Requires network access
-    "tests/integration"
-  ] ++
-  # There was a change in python 3.8 that defaults multiprocessing to spawn instead of fork on macOS
-  # See https://bugs.python.org/issue33725 and https://github.com/python/cpython/pull/13603.
-  # I suspect the underlying issue here is that upstream tests aren't compatible with spawn multiprocessing, and pass on linux where the default is still fork
-  lib.optionals stdenv.isDarwin [
-    "tests/unit/test_compat.py"
-  ];
+  disabledTestPaths =
+    [
+      # Requires network access
+      "tests/integration"
+    ]
+    ++
+    # There was a change in python 3.8 that defaults multiprocessing to spawn instead of fork on macOS
+    # See https://bugs.python.org/issue33725 and https://github.com/python/cpython/pull/13603.
+    # I suspect the underlying issue here is that upstream tests aren't compatible with spawn multiprocessing, and pass on linux where the default is still fork
+    lib.optionals stdenv.hostPlatform.isDarwin [ "tests/unit/test_compat.py" ];
 
-  pythonImportsCheck = [
-    "s3transfer"
-  ];
+  pythonImportsCheck = [ "s3transfer" ];
 
   passthru.optional-dependencies = {
-    crt = [
-      botocore.optional-dependencies.crt
-    ];
+    crt = [ botocore.optional-dependencies.crt ];
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/sabctools/default.nix b/pkgs/development/python-modules/sabctools/default.nix
index d5e684bbbb46d..4f07633db51f0 100644
--- a/pkgs/development/python-modules/sabctools/default.nix
+++ b/pkgs/development/python-modules/sabctools/default.nix
@@ -7,26 +7,26 @@
 }:
 buildPythonPackage rec {
   pname = "sabctools";
-  version = "8.1.0"; # needs to match version sabnzbd expects, e.g. https://github.com/sabnzbd/sabnzbd/blob/4.0.x/requirements.txt#L3
+  version = "8.2.5";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-PYfbmR9wT3SHT+oFyQF2F13g7FgdvY/l9p0D65c/+RU=";
+    hash = "sha256-ZEC813/JpGPEFL+nXKFAXFfUrrhECCIqONe27LwS00g=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = ["sabctools"];
+  pythonImportsCheck = [ "sabctools" ];
 
-  passthru.tests = {inherit sabnzbd;};
+  passthru.tests = {
+    inherit sabnzbd;
+  };
 
   meta = with lib; {
     description = "C implementations of functions for use within SABnzbd";
     homepage = "https://github.com/sabnzbd/sabctools";
     license = licenses.gpl2Only;
-    maintainers = with maintainers; [adamcstephens];
+    maintainers = with maintainers; [ adamcstephens ];
   };
 }
diff --git a/pkgs/development/python-modules/sabyenc/default.nix b/pkgs/development/python-modules/sabyenc/default.nix
index 8ba0b1df0db9d..9dd7e040ca88a 100644
--- a/pkgs/development/python-modules/sabyenc/default.nix
+++ b/pkgs/development/python-modules/sabyenc/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "sabyenc";
@@ -19,5 +23,4 @@ buildPythonPackage rec {
     license = lib.licenses.lgpl3;
     maintainers = [ lib.maintainers.georgewhewell ];
   };
-
 }
diff --git a/pkgs/development/python-modules/sabyenc3/default.nix b/pkgs/development/python-modules/sabyenc3/default.nix
index 19bd3d36fc46c..814ca92de8dbd 100644
--- a/pkgs/development/python-modules/sabyenc3/default.nix
+++ b/pkgs/development/python-modules/sabyenc3/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
   # Tests are not included in pypi distribution
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sabyenc3"
-  ];
+  pythonImportsCheck = [ "sabyenc3" ];
 
   meta = with lib; {
     description = "yEnc Decoding for Python 3";
diff --git a/pkgs/development/python-modules/sacn/default.nix b/pkgs/development/python-modules/sacn/default.nix
index 609d8969be6bc..d33c4597e8704 100644
--- a/pkgs/development/python-modules/sacn/default.nix
+++ b/pkgs/development/python-modules/sacn/default.nix
@@ -1,33 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "sacn";
-  version = "1.9.0";
+  version = "1.10.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-LimA0I8y1tdjFk244iWvKJj0Rx3OEaYOSIJtirRHh4o=";
+    hash = "sha256-Z2Td/tdXYfQ9/QvM1NeT/OgQ/TYa3CQtWo8O1Dl3+Ao=";
   };
 
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sacn"
-  ];
+  pythonImportsCheck = [ "sacn" ];
 
   meta = with lib; {
-    description = "A simple ANSI E1.31 (aka sACN) module";
+    description = "Simple ANSI E1.31 (aka sACN) module";
     homepage = "https://github.com/Hundemeier/sacn";
     changelog = "https://github.com/Hundemeier/sacn/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sacrebleu/default.nix b/pkgs/development/python-modules/sacrebleu/default.nix
index 7a0540b82c738..50a3a5d998b7f 100644
--- a/pkgs/development/python-modules/sacrebleu/default.nix
+++ b/pkgs/development/python-modules/sacrebleu/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# Propagated build inputs
-, portalocker
-, regex
-, tabulate
-, numpy
-, colorama
-, lxml
+  # Propagated build inputs
+  portalocker,
+  regex,
+  tabulate,
+  numpy,
+  colorama,
+  lxml,
 
-# Check inputs
-, pytestCheckHook
+  # Check inputs
+  pytestCheckHook,
 }:
 let
   pname = "sacrebleu";
-  version = "2.3.1";
+  version = "2.4.2";
 in
 buildPythonPackage {
   inherit pname version;
@@ -24,8 +25,8 @@ buildPythonPackage {
   src = fetchFromGitHub {
     owner = "mjpost";
     repo = pname;
-    rev = "v${version}";
-    hash = "sha256-+58dhQv5LkjccjktfoAG2gqja6TMLIxHIbRgzZPDhKo=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-evSBHvDFOJlE2f9uM+NNCQeABY5lCc3Rs9dq11n7v5c=";
   };
 
   # postPatch = ''
@@ -42,9 +43,7 @@ buildPythonPackage {
     lxml
   ];
 
-  checkInputs = [
-    pytestCheckHook
-  ];
+  checkInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # require network access
diff --git a/pkgs/development/python-modules/sacremoses/default.nix b/pkgs/development/python-modules/sacremoses/default.nix
index c08589b66e256..08960b6dbc398 100644
--- a/pkgs/development/python-modules/sacremoses/default.nix
+++ b/pkgs/development/python-modules/sacremoses/default.nix
@@ -1,11 +1,12 @@
-{ buildPythonPackage
-, lib
-, fetchFromGitHub
-, click
-, six
-, tqdm
-, joblib
-, pytest
+{
+  buildPythonPackage,
+  lib,
+  fetchFromGitHub,
+  click,
+  six,
+  tqdm,
+  joblib,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,12 @@ buildPythonPackage rec {
     sha256 = "1gzr56w8yx82mn08wax5m0xyg15ym4ri5l80gmagp8r53443j770";
   };
 
-  propagatedBuildInputs = [ click six tqdm joblib ];
+  propagatedBuildInputs = [
+    click
+    six
+    tqdm
+    joblib
+  ];
 
   nativeCheckInputs = [ pytest ];
   # ignore tests which call to remote host
diff --git a/pkgs/development/python-modules/safe-pysha3/default.nix b/pkgs/development/python-modules/safe-pysha3/default.nix
index bb96ee1c2dcb9..be79b88ef4ad5 100644
--- a/pkgs/development/python-modules/safe-pysha3/default.nix
+++ b/pkgs/development/python-modules/safe-pysha3/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
       --replace "failIf" "assertFalse"
   '';
 
-  pythonImportsCheck = [
-    "sha3"
-  ];
+  pythonImportsCheck = [ "sha3" ];
 
   meta = {
     changelog = "https://github.com/5afe/pysha3/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/safe/default.nix b/pkgs/development/python-modules/safe/default.nix
deleted file mode 100644
index 6a4515b90f83c..0000000000000
--- a/pkgs/development/python-modules/safe/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-}:
-
-buildPythonPackage rec {
-  version = "0.4";
-  pname = "Safe";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "a2fdac9fe8a9dcf02b438201d6ce0b7be78f85dc6492d03edfb89be2adf489de";
-  };
-
-  buildInputs = [ nose ];
-
-  meta = with lib; {
-    homepage = "https://github.com/lepture/safe";
-    license = licenses.bsd3;
-    description = "Check password strength";
-  };
-
-}
diff --git a/pkgs/development/python-modules/safeio/default.nix b/pkgs/development/python-modules/safeio/default.nix
index d0dd6c4ca5e16..d1920654d2ef3 100644
--- a/pkgs/development/python-modules/safeio/default.nix
+++ b/pkgs/development/python-modules/safeio/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -20,6 +21,6 @@ buildPythonPackage rec {
     description = "Safely make I/O operations to files in Python even from multiple threads";
     homepage = "https://github.com/Animenosekai/safeIO";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/safetensors/default.nix b/pkgs/development/python-modules/safetensors/default.nix
index 2b6d9ba0ab19f..584cc1e7d6af1 100644
--- a/pkgs/development/python-modules/safetensors/default.nix
+++ b/pkgs/development/python-modules/safetensors/default.nix
@@ -1,74 +1,81 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, cargo
-, fetchFromGitHub
-, h5py
-, numpy
-, pythonOlder
-, pytestCheckHook
-, rustc
-, rustPlatform
-, setuptools-rust
-, torch
-, libiconv
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  rustPlatform,
+
+  # nativeBuildInputs
+  cargo,
+  rustc,
+  setuptools-rust,
+
+  # buildInputs
+  libiconv,
+
+  # tests
+  h5py,
+  numpy,
+  pytestCheckHook,
+  torch,
 }:
 
 buildPythonPackage rec {
   pname = "safetensors";
-  version = "0.4.3";
+  version = "0.4.5";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
-
   src = fetchFromGitHub {
     owner = "huggingface";
     repo = "safetensors";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Rc+o7epQJ8qEvdgbFnGvXxBr/U4eULZwkKNEaPlJkyU=";
+    hash = "sha256-gr4hBbecaGHaoNhRQQXWfLfNB0/wQPKftSiTnGgngog=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     sourceRoot = "${src.name}/bindings/python";
-    hash = "sha256-tzNEUvWgolSwX0t/JLgYcTEIv3/FiKxoTJ4VjFQs8AY=";
+    hash = "sha256-zDXzEVvmJF1dEVUFGBc3losr9U1q/qJCjNFkdJ/pCd4=";
   };
 
   sourceRoot = "${src.name}/bindings/python";
 
   nativeBuildInputs = [
-    setuptools-rust
     cargo
     rustc
     rustPlatform.cargoSetupHook
     rustPlatform.maturinBuildHook
+    setuptools-rust
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
   nativeCheckInputs = [
-    h5py numpy pytestCheckHook torch
+    h5py
+    numpy
+    pytestCheckHook
+    torch
   ];
   pytestFlagsArray = [ "tests" ];
   # don't require PaddlePaddle (not in Nixpkgs), Flax, or Tensorflow (onerous) to run tests:
-  disabledTestPaths = [
-    "tests/test_flax_comparison.py"
-    "tests/test_paddle_comparison.py"
-    "tests/test_tf_comparison.py"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # don't require mlx (not in Nixpkgs) to run tests
-    "tests/test_mlx_comparison.py"
-  ];
+  disabledTestPaths =
+    [
+      "tests/test_flax_comparison.py"
+      "tests/test_paddle_comparison.py"
+      "tests/test_tf_comparison.py"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # don't require mlx (not in Nixpkgs) to run tests
+      "tests/test_mlx_comparison.py"
+    ];
 
-  pythonImportsCheck = [
-    "safetensors"
-  ];
+  pythonImportsCheck = [ "safetensors" ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://github.com/huggingface/safetensors";
     description = "Fast (zero-copy) and safe (unlike pickle) format for storing tensors";
     changelog = "https://github.com/huggingface/safetensors/releases/tag/v${version}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ bcdarwin ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ bcdarwin ];
   };
 }
diff --git a/pkgs/development/python-modules/safety-schemas/default.nix b/pkgs/development/python-modules/safety-schemas/default.nix
index 0f9724e95f65e..40e22736088d2 100644
--- a/pkgs/development/python-modules/safety-schemas/default.nix
+++ b/pkgs/development/python-modules/safety-schemas/default.nix
@@ -1,36 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatchling
-, pythonRelaxDepsHook
-, dparse
-, packaging
-, pydantic
-, ruamel-yaml
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  dparse,
+  packaging,
+  pydantic,
+  ruamel-yaml,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "safety-schemas";
-  version = "0.0.2";
+  version = "0.0.5";
   pyproject = true;
 
   src = fetchPypi {
     pname = "safety_schemas";
     inherit version;
-    hash = "sha256-fRsEDsBkgPBc/2tF6nqT4JyJQt+GT7DQHd62fDI8+ow=";
+    hash = "sha256-DeX8mlPUQjZEqM6aF6LkdHFKon5X81BhRulaQXEP8QQ=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-    pythonRelaxDepsHook
-  ];
+  build-system = [ hatchling ];
 
-  pythonRelaxDeps = [
-    "dparse"
-  ];
+  pythonRelaxDeps = [ "dparse" ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     dparse
     packaging
     pydantic
diff --git a/pkgs/development/python-modules/safety/default.nix b/pkgs/development/python-modules/safety/default.nix
index 529ed4d8d4c27..8bef717dabf5a 100644
--- a/pkgs/development/python-modules/safety/default.nix
+++ b/pkgs/development/python-modules/safety/default.nix
@@ -1,45 +1,49 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, pythonRelaxDepsHook
-, setuptools
-, click
-, urllib3
-, requests
-, packaging
-, dparse
-, ruamel-yaml
-, jinja2
-, marshmallow
-, authlib
-, jwt
-, rich
-, typer
-, pydantic
-, safety-schemas
-, typing-extensions
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  click,
+  urllib3,
+  requests,
+  packaging,
+  dparse,
+  ruamel-yaml,
+  jinja2,
+  marshmallow,
+  authlib,
+  rich,
+  typer,
+  pydantic,
+  safety-schemas,
+  typing-extensions,
+  filelock,
+  psutil,
+  git,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "safety";
-  version = "3.0.1";
+  version = "3.2.7";
 
   disabled = pythonOlder "3.7";
 
   pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-HyAA8DZS86C/xn+P0emLxXI8y3bhXLG91oVFw9gD3wE=";
+  src = fetchFromGitHub {
+    owner = "pyupio";
+    repo = "safety";
+    rev = "refs/tags/${version}";
+    hash = "sha256-JWbiw9qgfDo0UMAcqIhk1Y5tW0aSaZtbVdpdaY2z+3w=";
   };
 
   postPatch = ''
     substituteInPlace safety/safety.py \
-      --replace-fail "telemetry=True" "telemetry=False"
+      --replace-fail "telemetry: bool = True" "telemetry: bool = False"
     substituteInPlace safety/util.py \
-      --replace-fail "telemetry = True" "telemetry = False"
+      --replace-fail "telemetry: bool = True" "telemetry: bool = False"
     substituteInPlace safety/cli.py \
       --replace-fail "disable-optional-telemetry', default=False" \
                      "disable-optional-telemetry', default=True"
@@ -47,19 +51,14 @@ buildPythonPackage rec {
       --replace-fail "telemetry=True" "telemetry=False"
   '';
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   pythonRelaxDeps = [
-    "packaging"
     "dparse"
-    "authlib"
-    "pydantic"
+    "filelock"
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     setuptools
     click
     urllib3
@@ -70,15 +69,17 @@ buildPythonPackage rec {
     jinja2
     marshmallow
     authlib
-    jwt
     rich
     typer
     pydantic
     safety-schemas
     typing-extensions
+    filelock
+    psutil
   ];
 
   nativeCheckInputs = [
+    git
     pytestCheckHook
   ];
 
@@ -86,11 +87,14 @@ buildPythonPackage rec {
   disabledTests = [
     "test_announcements_if_is_not_tty"
     "test_check_live"
-    "test_check_live_cached"
+    "test_debug_flag"
     "test_get_packages_licenses_without_api_key"
-    "test_validate_with_policy_file_using_invalid_keyword"
+    "test_validate_with_basic_policy_file"
   ];
 
+  # ImportError: cannot import name 'get_command_for' from partially initialized module 'safety.cli_util' (most likely due to a circular import)
+  disabledTestPaths = [ "tests/alerts/test_utils.py" ];
+
   preCheck = ''
     export HOME=$(mktemp -d)
   '';
@@ -101,6 +105,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/pyupio/safety";
     changelog = "https://github.com/pyupio/safety/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ thomasdesr dotlambda ];
+    maintainers = with maintainers; [
+      thomasdesr
+      dotlambda
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/sagemaker/default.nix b/pkgs/development/python-modules/sagemaker/default.nix
index 33e0c85697c1e..23906dc2d9a34 100644
--- a/pkgs/development/python-modules/sagemaker/default.nix
+++ b/pkgs/development/python-modules/sagemaker/default.nix
@@ -1,38 +1,38 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, fetchpatch
-, pythonRelaxDepsHook
-, setuptools
-, attrs
-, boto3
-, cloudpickle
-, google-pasta
-, numpy
-, protobuf
-, smdebug-rulesconfig
-, importlib-metadata
-, packaging
-, pandas
-, pathos
-, schema
-, pyyaml
-, jsonschema
-, platformdirs
-, tblib
-, urllib3
-, requests
-, docker
-, tqdm
-, psutil
-, scipy
-, accelerate
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  fetchpatch,
+  setuptools,
+  attrs,
+  boto3,
+  cloudpickle,
+  google-pasta,
+  numpy,
+  protobuf,
+  smdebug-rulesconfig,
+  importlib-metadata,
+  packaging,
+  pandas,
+  pathos,
+  schema,
+  pyyaml,
+  jsonschema,
+  platformdirs,
+  tblib,
+  urllib3,
+  requests,
+  docker,
+  tqdm,
+  psutil,
+  scipy,
+  accelerate,
 }:
 
 buildPythonPackage rec {
   pname = "sagemaker";
-  version = "2.217.0";
+  version = "2.224.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -41,7 +41,7 @@ buildPythonPackage rec {
     owner = "aws";
     repo = "sagemaker-python-sdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-p73M0hBVpakdXGM56ECr4D3mQCBmB7Ud/p+Rj1+/Bic=";
+    hash = "sha256-Kc66sygHGFqMvSY7rACb62wJEJesnN4KDmtYZLIOsqc=";
   };
 
   patches = [
@@ -59,7 +59,6 @@ buildPythonPackage rec {
 
   build-system = [
     setuptools
-    pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = [
@@ -99,7 +98,11 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    local = [ urllib3 docker pyyaml ];
+    local = [
+      urllib3
+      docker
+      pyyaml
+    ];
     scipy = [ scipy ];
     huggingface = [ accelerate ];
     # feature-processor = [ pyspark sagemaker-feature-store-pyspark ]; # not available in nixpkgs
diff --git a/pkgs/development/python-modules/salib/default.nix b/pkgs/development/python-modules/salib/default.nix
new file mode 100644
index 0000000000000..9b1f1ccd799bc
--- /dev/null
+++ b/pkgs/development/python-modules/salib/default.nix
@@ -0,0 +1,64 @@
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  hatchling,
+  hatch-vcs,
+  numpy,
+  scipy,
+  matplotlib,
+  pandas,
+  multiprocess,
+  pathos,
+}:
+let
+  finalAttrs = {
+    pname = "salib";
+    version = "1.5.1";
+    pyproject = true;
+
+    src = fetchPypi {
+      inherit (finalAttrs) pname version;
+      hash = "sha256-5KnDGbjdAplajcmD9XxFLLflttvUPnt4VskMtqMyu18=";
+    };
+
+    build-system = [
+      hatchling
+      hatch-vcs
+    ];
+
+    dependencies = [
+      numpy
+      scipy
+      matplotlib
+      pandas
+      multiprocess
+    ];
+
+    optional-dependencies = {
+      distributed = [ pathos ];
+    };
+
+    # There are no tests in the pypi package
+    doCheck = false;
+
+    pythonImportsCheck = [
+      "SALib"
+      "SALib.analyze"
+      "SALib.plotting"
+      "SALib.sample"
+      "SALib.test_functions"
+      "SALib.util"
+    ];
+
+    meta = {
+      changelog = "https://github.com/SALib/SALib/releases";
+      description = "Python implementations of commonly used sensitivity analysis methods, useful in systems modeling to calculate the effects of model inputs or exogenous factors on outputs of interest";
+      homepage = "https://github.com/SALib/SALib";
+      license = lib.licenses.mit;
+      maintainers = with lib.maintainers; [ theobori ];
+      mainProgram = "salib";
+    };
+  };
+in
+buildPythonPackage finalAttrs
diff --git a/pkgs/development/python-modules/salmon-mail/default.nix b/pkgs/development/python-modules/salmon-mail/default.nix
index 4b821da0fe6c9..72df3f89e3b9a 100644
--- a/pkgs/development/python-modules/salmon-mail/default.nix
+++ b/pkgs/development/python-modules/salmon-mail/default.nix
@@ -1,18 +1,46 @@
-{ stdenv, lib, buildPythonPackage, fetchPypi, dnspython, chardet, lmtpd
-, python-daemon, six, jinja2, mock, click }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  dnspython,
+  chardet,
+  python-daemon,
+  jinja2,
+  click,
+  unittestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "salmon-mail";
-  version = "3.2.0";
-  format = "setuptools";
+  version = "3.3.0";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0q2m6xri1b7qv46rqpv2qfdgk2jvswj8lpaacnxwjna3m685fhfx";
+  src = fetchFromGitHub {
+    owner = "moggers87";
+    repo = "salmon";
+    rev = "refs/tags/${version}";
+    hash = "sha256-ysBO/ridfy7YPoTsVwAxar9UvfM/qxrx2dp0EtDNLvE=";
   };
 
-  nativeCheckInputs = [ jinja2 mock ];
-  propagatedBuildInputs = [ chardet dnspython lmtpd python-daemon six click ];
+  nativeCheckInputs = [
+    jinja2
+    unittestCheckHook
+  ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    chardet
+    click
+    dnspython
+    python-daemon
+  ];
+
+  pythonImportsCheck = [
+    "salmon"
+    "salmon.handlers"
+  ];
 
   # Darwin tests fail without this. See:
   # https://github.com/NixOS/nixpkgs/pull/82166#discussion_r399909846
@@ -20,15 +48,13 @@ buildPythonPackage rec {
 
   # The tests use salmon executable installed by salmon itself so we need to add
   # that to PATH
-  checkPhase = ''
-    # tests fail and pytest is not supported
-    rm tests/server_tests.py
-    PATH=$out/bin:$PATH python setup.py test
+  preCheck = ''
+    export PATH=$out/bin:$PATH
   '';
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
     homepage = "https://salmon-mail.readthedocs.org/";
+    changelog = "https://github.com/moggers87/salmon/blob/${src.rev}/CHANGELOG.rst";
     description = "Pythonic mail application server";
     mainProgram = "salmon";
     license = licenses.gpl3Only;
diff --git a/pkgs/development/python-modules/samarium/default.nix b/pkgs/development/python-modules/samarium/default.nix
new file mode 100644
index 0000000000000..9e32e1c5b5dfe
--- /dev/null
+++ b/pkgs/development/python-modules/samarium/default.nix
@@ -0,0 +1,32 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  crossandra,
+  dahlia,
+}:
+
+buildPythonPackage rec {
+  pname = "samarium";
+  version = "0.6.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "samarium-lang";
+    repo = "samarium";
+    rev = "refs/tags/${version}";
+    hash = "sha256-sOkJ67B8LaIA2cwCHaFnc16lMG8uaegBJCzF6Li77vk=";
+  };
+
+  build-system = [ poetry-core ];
+  dependencies = [ crossandra dahlia ];
+
+  meta = with lib; {
+    changelog = "https://github.com/samarium-lang/samarium/blob/${src.rev}/CHANGELOG.md";
+    description = "The Samarium Programming Language";
+    license = licenses.mit;
+    homepage = "https://samarium-lang.github.io/Samarium";
+    maintainers = with maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/sampledata/default.nix b/pkgs/development/python-modules/sampledata/default.nix
deleted file mode 100644
index ae5086fe47b78..0000000000000
--- a/pkgs/development/python-modules/sampledata/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi,
-  nose, pytz, six, versiontools
-}:
-
-buildPythonPackage rec {
-  pname = "sampledata";
-  version = "0.3.7";
-  format = "setuptools";
-
-  meta = {
-    description = "Sample Data generator for Python ";
-    homepage = "https://github.com/jespino/sampledata";
-    license = lib.licenses.bsd3;
-  };
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1kx2j49lag30d32zhzsr50gl5b949wa4lcdap2filg0d07picsdh";
-  };
-
-  buildInputs = [ nose versiontools ];
-  propagatedBuildInputs = [ pytz six ];
-
-# ERROR: test_image_path_from_directory (tests.tests.TestImageHelpers)
-# ERROR: test_image_stream (tests.tests.TestImageHelpers)
-  doCheck = false;
-
-  checkPhase = ''
-    nosetests -e "TestImageHelpers"
-  '';
-}
diff --git a/pkgs/development/python-modules/samplerate/default.nix b/pkgs/development/python-modules/samplerate/default.nix
index 7ac9950a69668..cfeface653cab 100644
--- a/pkgs/development/python-modules/samplerate/default.nix
+++ b/pkgs/development/python-modules/samplerate/default.nix
@@ -1,46 +1,63 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, cffi
-, numpy
-, libsamplerate
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  cmake,
+  setuptools,
+  setuptools-scm,
+  pybind11,
+
+  # dependencies
+  cffi,
+  numpy,
+
+  # native dependencies
+  libsamplerate,
+
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "samplerate";
-  version = "0.1.0";
-  format = "setuptools";
+  version = "0.2.1";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "tuxu";
     repo = "python-samplerate";
-    rev = "refs/tags/${version}";
-    hash = "sha256-lHZ9SVnKcsEsnKYXR/QocGbKPEoA7yCZxXvrNPeH1rA=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-/9NFJcn8R0DFjVhFAIYOtzZM90hjVIfsVXFlS0nHNhA=";
   };
 
   postPatch = ''
-    substituteInPlace setup.py \
-      --replace ", 'pytest-runner'" ""
-
-    substituteInPlace samplerate/lowlevel.py --replace \
-      "lib_filename = _find_library('samplerate')" \
-      'lib_filename = "${libsamplerate.out}/lib/libsamplerate${stdenv.hostPlatform.extensions.sharedLibrary}"'
+    # unvendor pybind11, libsamplerate
+    rm -r external
+    substituteInPlace CMakeLists.txt \
+      --replace-fail "add_subdirectory(external)" "find_package(pybind11 REQUIRED)"
   '';
 
+  build-system = [
+    cmake
+    setuptools
+    setuptools-scm
+    pybind11
+  ];
+
+  dontUseCmakeConfigure = true;
+
+  buildInputs = [ libsamplerate ];
+
   propagatedBuildInputs = [
     cffi
     numpy
   ];
 
-  pythonImportsCheck = [
-    "samplerate"
-  ];
+  pythonImportsCheck = [ "samplerate" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     rm -rf samplerate
diff --git a/pkgs/development/python-modules/samsungctl/default.nix b/pkgs/development/python-modules/samsungctl/default.nix
index f4f3653d94e97..c139a1d1a4c63 100644
--- a/pkgs/development/python-modules/samsungctl/default.nix
+++ b/pkgs/development/python-modules/samsungctl/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# extra: websocket
-, websocket-client
+  # extra: websocket
+  websocket-client,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
   };
 
   passthru.optional-dependencies = {
-    websocket = [
-      websocket-client
-    ];
+    websocket = [ websocket-client ];
     # interactive_ui requires curses package
   };
 
diff --git a/pkgs/development/python-modules/samsungtvws/default.nix b/pkgs/development/python-modules/samsungtvws/default.nix
index d1f5236639f36..7111961f9224c 100644
--- a/pkgs/development/python-modules/samsungtvws/default.nix
+++ b/pkgs/development/python-modules/samsungtvws/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy27
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
 
-# propagates:
-, requests
-, websocket-client
+  # propagates:
+  requests,
+  websocket-client,
 
-# extras: async
-, aiohttp
-, websockets
+  # extras: async
+  aiohttp,
+  websockets,
 
-# extras: encrypted
-, cryptography
-, py3rijndael
+  # extras: encrypted
+  cryptography,
+  py3rijndael,
 
-# tests
-, aioresponses
-, pytest-asyncio
-, pytestCheckHook
+  # tests
+  aioresponses,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -54,9 +55,7 @@ buildPythonPackage rec {
     aioresponses
     pytest-asyncio
     pytestCheckHook
-  ]
-  ++ passthru.optional-dependencies.async
-  ++ passthru.optional-dependencies.encrypted;
+  ] ++ passthru.optional-dependencies.async ++ passthru.optional-dependencies.encrypted;
 
   pythonImportsCheck = [ "samsungtvws" ];
 
diff --git a/pkgs/development/python-modules/sane/default.nix b/pkgs/development/python-modules/sane/default.nix
index 4198549f24ccc..1b82f6039878e 100644
--- a/pkgs/development/python-modules/sane/default.nix
+++ b/pkgs/development/python-modules/sane/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, sane-backends
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  sane-backends,
 }:
 
 buildPythonPackage rec {
@@ -15,13 +16,11 @@ buildPythonPackage rec {
     sha256 = "JAmOuDxujhsBEm5q16WwR5wHsBPF0iBQm1VYkv5JJd4=";
   };
 
-  buildInputs = [
-    sane-backends
-  ];
+  buildInputs = [ sane-backends ];
 
   meta = with lib; {
     homepage = "https://github.com/python-pillow/Sane";
-    description = "Python interface to the SANE scanner and frame grabber ";
+    description = "Python interface to the SANE scanner and frame grabber";
     license = licenses.mit;
     maintainers = with maintainers; [ doronbehar ];
   };
diff --git a/pkgs/development/python-modules/saneyaml/default.nix b/pkgs/development/python-modules/saneyaml/default.nix
index 37ba299b8f5ba..0e47b565bba7b 100644
--- a/pkgs/development/python-modules/saneyaml/default.nix
+++ b/pkgs/development/python-modules/saneyaml/default.nix
@@ -1,41 +1,39 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, setuptools-scm
-, pyyaml
-, pytestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools-scm,
+  pyyaml,
+  pytestCheckHook,
+  pythonOlder,
 }:
+
 buildPythonPackage rec {
   pname = "saneyaml";
-  version = "0.6.0";
-  format = "setuptools";
+  version = "0.6.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-sjCfeDZiPNbbkyV067xD4/ZcdD52NReeZL7ssNFibkQ=";
+    hash = "sha256-Gc+9i/lNcwmYFix5D+XOyau1MAzFiQ/jfcbbyqj7Frs=";
   };
 
   dontConfigure = true;
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    pyyaml
-  ];
+  dependencies = [ pyyaml ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "saneyaml"
-  ];
+  pythonImportsCheck = [ "saneyaml" ];
 
   meta = with lib; {
-    description = "A PyYaml wrapper with sane behaviour to read and write readable YAML safely";
+    description = "PyYaml wrapper with sane behaviour to read and write readable YAML safely";
     homepage = "https://github.com/nexB/saneyaml";
+    changelog = "https://github.com/aboutcode-org/saneyaml/blob/v${version}/CHANGELOG.rst";
     license = licenses.asl20;
     maintainers = [ ];
   };
diff --git a/pkgs/development/python-modules/sanic-auth/default.nix b/pkgs/development/python-modules/sanic-auth/default.nix
index 23b38820ff22f..27555052af9c0 100644
--- a/pkgs/development/python-modules/sanic-auth/default.nix
+++ b/pkgs/development/python-modules/sanic-auth/default.nix
@@ -1,25 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, sanic
-, sanic-testing
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  sanic,
+  sanic-testing,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "sanic-auth";
   version = "0.3.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     pname = "Sanic-Auth";
     inherit version;
-    sha256 = "0dc24ynqjraqwgvyk0g9bj87zgpq4xnssl24hnsn7l5vlkmk8198";
+    hash = "sha256-KAU066S70GO1hURQrW0n+L5/kFzpgen341hlia0ngjU=";
   };
 
-  propagatedBuildInputs = [
-    sanic
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ sanic ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -34,12 +36,10 @@ buildPythonPackage rec {
   postPatch = ''
     # Support for httpx>=0.20.0
     substituteInPlace tests/test_auth.py \
-      --replace "allow_redirects=False" "follow_redirects=False"
+      --replace-fail "allow_redirects=False" "follow_redirects=False"
   '';
 
-  pythonImportsCheck = [
-    "sanic_auth"
-  ];
+  pythonImportsCheck = [ "sanic_auth" ];
 
   meta = with lib; {
     description = "Simple Authentication for Sanic";
diff --git a/pkgs/development/python-modules/sanic-routing/default.nix b/pkgs/development/python-modules/sanic-routing/default.nix
index f0e09c73862fc..c542076886d53 100644
--- a/pkgs/development/python-modules/sanic-routing/default.nix
+++ b/pkgs/development/python-modules/sanic-routing/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pytest-asyncio
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pytest-asyncio,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,15 +26,13 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "sanic_routing"
-  ];
+  pythonImportsCheck = [ "sanic_routing" ];
 
   meta = with lib; {
     description = "Core routing component for the Sanic web framework";
     homepage = "https://github.com/sanic-org/sanic-routing";
     changelog = "https://github.com/sanic-org/sanic-routing/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ AluisioASG ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sanic-testing/default.nix b/pkgs/development/python-modules/sanic-testing/default.nix
index e29ad8eb3c4ff..c326c76e0f5ba 100644
--- a/pkgs/development/python-modules/sanic-testing/default.nix
+++ b/pkgs/development/python-modules/sanic-testing/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, buildPythonPackage
-, callPackage
-, fetchFromGitHub
-, httpx
-, pythonOlder
-, sanic
-, websockets
+{
+  lib,
+  buildPythonPackage,
+  callPackage,
+  fetchFromGitHub,
+  httpx,
+  pythonOlder,
+  sanic,
+  setuptools,
+  websockets,
 }:
 
 buildPythonPackage rec {
   pname = "sanic-testing";
-  version = "23.12.0";
-  format = "setuptools";
+  version = "24.6.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -19,7 +21,7 @@ buildPythonPackage rec {
     owner = "sanic-org";
     repo = "sanic-testing";
     rev = "refs/tags/v${version}";
-    hash = "sha256-pFsGB0QDeO/iliHOitHqBIQtDlwRgFg8nhgMLsopoec=";
+    hash = "sha256-biUgxa0sINHAYzyKimVD8+/mPUq2dlnCl2BN+UeUaEo=";
   };
 
   outputs = [
@@ -27,7 +29,9 @@ buildPythonPackage rec {
     "testsout"
   ];
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     httpx
     sanic
     websockets
@@ -52,6 +56,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/sanic-org/sanic-testing";
     changelog = "https://github.com/sanic-org/sanic-testing/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ AluisioASG ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sanic-testing/tests.nix b/pkgs/development/python-modules/sanic-testing/tests.nix
index 167a74217463b..977aab1562086 100644
--- a/pkgs/development/python-modules/sanic-testing/tests.nix
+++ b/pkgs/development/python-modules/sanic-testing/tests.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, pytest-asyncio
-, pytestCheckHook
-, sanic-testing
-, setuptools
+{
+  buildPythonPackage,
+  pytest-asyncio,
+  pytestCheckHook,
+  sanic-testing,
+  setuptools,
 }:
 
 buildPythonPackage {
@@ -22,7 +23,5 @@ buildPythonPackage {
     setuptools
   ];
 
-  pythonImportsCheck = [
-    "sanic_testing"
-  ];
+  pythonImportsCheck = [ "sanic_testing" ];
 }
diff --git a/pkgs/development/python-modules/sanic/default.nix b/pkgs/development/python-modules/sanic/default.nix
index c8cb16ecc1375..6979926cd7c9b 100644
--- a/pkgs/development/python-modules/sanic/default.nix
+++ b/pkgs/development/python-modules/sanic/default.nix
@@ -1,61 +1,48 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pythonAtLeast
-
-# build-system
-, setuptools
-, wheel
-
-# propagates
-, aiofiles
-, html5tagger
-, httptools
-, multidict
-, sanic-routing
-, tracerite
-, typing-extensions
-, ujson
-, uvloop
-, websockets
-
-# optionals
-, aioquic
-
-# tests
-, doCheck ? !stdenv.isDarwin # on Darwin, tests fail but pkg still works
-
-, beautifulsoup4
-, gunicorn
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, sanic-testing
-, uvicorn
+{
+  lib,
+  stdenv,
+  aiofiles,
+  aioquic,
+  beautifulsoup4,
+  buildPythonPackage,
+  doCheck ? !stdenv.hostPlatform.isDarwin, # on Darwin, tests fail but pkg still works
+  fetchFromGitHub,
+  gunicorn,
+  html5tagger,
+  httptools,
+  multidict,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  sanic-routing,
+  sanic-testing,
+  setuptools,
+  tracerite,
+  typing-extensions,
+  ujson,
+  uvicorn,
+  uvloop,
+  websockets,
 }:
 
 buildPythonPackage rec {
   pname = "sanic";
-  version = "23.12.1";
-  format = "pyproject";
+  version = "24.6.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "sanic-org";
-    repo = pname;
+    repo = "sanic";
     rev = "refs/tags/v${version}";
-    hash = "sha256-TizjibqoLNMX0m5oPyncKgFnltXOLZUIPSzVIeKU25w=";
+    hash = "sha256-AviYqdr+r5ya4mFJKGUatBsaMMmCQGqE3YtDJwTuaY0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiofiles
     httptools
     html5tagger
@@ -72,9 +59,7 @@ buildPythonPackage rec {
     ext = [
       # TODO: sanic-ext
     ];
-    http3 = [
-      aioquic
-    ];
+    http3 = [ aioquic ];
   };
 
   nativeCheckInputs = [
@@ -88,17 +73,19 @@ buildPythonPackage rec {
 
   inherit doCheck;
 
-  preCheck = ''
-    # Some tests depends on sanic on PATH
-    PATH="$out/bin:$PATH"
-    PYTHONPATH=$PWD:$PYTHONPATH
+  preCheck =
+    ''
+      # Some tests depends on sanic on PATH
+      PATH="$out/bin:$PATH"
+      PYTHONPATH=$PWD:$PYTHONPATH
 
-    # needed for relative paths for some packages
-    cd tests
-  '' + lib.optionalString stdenv.isDarwin ''
-    # OSError: [Errno 24] Too many open files
-    ulimit -n 1024
-  '';
+      # needed for relative paths for some packages
+      cd tests
+    ''
+    + lib.optionalString stdenv.hostPlatform.isDarwin ''
+      # OSError: [Errno 24] Too many open files
+      ulimit -n 1024
+    '';
 
   # uvloop usage is buggy
   #SANIC_NO_UVLOOP = true;
@@ -108,39 +95,44 @@ buildPythonPackage rec {
     "-vvv"
   ];
 
-  disabledTests = [
-    # Require networking
-    "test_full_message"
-    # Server mode mismatch (debug vs production)
-    "test_num_workers"
-    # Racy tests
-    "test_keep_alive_client_timeout"
-    "test_keep_alive_server_timeout"
-    "test_zero_downtime"
-    # sanic.exceptions.SanicException: Cannot setup Sanic Simple Server without a path to a directory
-    "test_load_app_simple"
-    # create defunct python processes
-    "test_reloader_live"
-    "test_reloader_live_with_dir"
-    "test_reload_listeners"
-    # crash the python interpreter
-    "test_host_port_localhost"
-    "test_host_port"
-    "test_server_run"
-    # NoneType object is not subscriptable
-    "test_serve_app_implicit"
-    # AssertionError: assert [] == ['Restarting a process', 'Begin restart termination', 'Starting a process']
-    "test_default_reload_shutdown_order"
-    # App not found.
-    "test_input_is_dir"
-    # HTTP 500 with Websocket subprotocols
-    "test_websocket_route_with_subprotocols"
-    # Socket closes early
-    "test_no_exceptions_when_cancel_pending_request"
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    # AttributeError: 'has_calls' is not a valid assertion. Use a spec for the mock if 'has_calls' is meant to be an attribute.
-    "test_ws_frame_put_message_into_queue"
-  ];
+  disabledTests =
+    [
+      # Require networking
+      "test_full_message"
+      # Server mode mismatch (debug vs production)
+      "test_num_workers"
+      # Racy tests
+      "test_custom_cert_loader"
+      "test_keep_alive_client_timeout"
+      "test_keep_alive_server_timeout"
+      "test_logger_vhosts"
+      "test_ssl_in_multiprocess_mode"
+      "test_zero_downtime"
+      # sanic.exceptions.SanicException: Cannot setup Sanic Simple Server without a path to a directory
+      "test_load_app_simple"
+      # Tests create defunct Python processes
+      "test_reloader_live"
+      "test_reloader_live_with_dir"
+      "test_reload_listeners"
+      # Tests crash the Python interpreter
+      "test_host_port_localhost"
+      "test_host_port"
+      "test_server_run"
+      # NoneType object is not subscriptable
+      "test_serve_app_implicit"
+      # AssertionError: assert [] == ['Restarting a process', 'Begin restart termination', 'Starting a process']
+      "test_default_reload_shutdown_order"
+      # App not found.
+      "test_input_is_dir"
+      # HTTP 500 with Websocket subprotocols
+      "test_websocket_route_with_subprotocols"
+      # Socket closes early
+      "test_no_exceptions_when_cancel_pending_request"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      # AttributeError: 'has_calls' is not a valid assertion. Use a spec for the mock if 'has_calls' is meant to be an attribute.
+      "test_ws_frame_put_message_into_queue"
+    ];
 
   disabledTestPaths = [
     # We are not interested in benchmarks
@@ -154,7 +146,7 @@ buildPythonPackage rec {
     "test_multiprocessing.py"
   ];
 
-  # avoid usage of nixpkgs-review in darwin since tests will compete usage
+  # Avoid usage of nixpkgs-review in darwin since tests will compete usage
   # for the same local port
   __darwinAllowLocalNetworking = true;
 
@@ -162,10 +154,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Web server and web framework";
-    mainProgram = "sanic";
     homepage = "https://github.com/sanic-org/sanic/";
     changelog = "https://github.com/sanic-org/sanic/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ AluisioASG ];
+    maintainers = [ ];
+    mainProgram = "sanic";
   };
 }
diff --git a/pkgs/development/python-modules/sanix/default.nix b/pkgs/development/python-modules/sanix/default.nix
index 64fd15074556b..8f807fdd4ae27 100644
--- a/pkgs/development/python-modules/sanix/default.nix
+++ b/pkgs/development/python-modules/sanix/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,13 +21,9 @@ buildPythonPackage rec {
     hash = "sha256-D2w3hmL8ym63liWOYdZS4ry3lJ0utbbYGagWoOTT1TQ=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    requests
-  ];
+  dependencies = [ requests ];
 
   # Module has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/sansio-multipart/default.nix b/pkgs/development/python-modules/sansio-multipart/default.nix
index e9379bc52236a..ef47ab77c7ed4 100644
--- a/pkgs/development/python-modules/sansio-multipart/default.nix
+++ b/pkgs/development/python-modules/sansio-multipart/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, isPy27
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  isPy27,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/sarge/default.nix b/pkgs/development/python-modules/sarge/default.nix
index f3dc0f269f859..e9ad2980e319a 100644
--- a/pkgs/development/python-modules/sarge/default.nix
+++ b/pkgs/development/python-modules/sarge/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-bT1DbcQi+SbeRBsL7ILuQbSnAj3BBB4+FNl+Zek5xU4=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Aarch64-linux times out for these tests, so they need to be disabled.
@@ -26,9 +25,7 @@ buildPythonPackage rec {
     "test_feeder"
   ];
 
-  pythonImportsCheck = [
-    "sarge"
-  ];
+  pythonImportsCheck = [ "sarge" ];
 
   meta = with lib; {
     description = "Python wrapper for subprocess which provides command pipeline functionality";
diff --git a/pkgs/development/python-modules/sarif-om/default.nix b/pkgs/development/python-modules/sarif-om/default.nix
index dafaad9d11e33..98a9503f44572 100644
--- a/pkgs/development/python-modules/sarif-om/default.nix
+++ b/pkgs/development/python-modules/sarif-om/default.nix
@@ -1,6 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi
-, attrs
-, pbr
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  attrs,
+  pbr,
 }:
 
 buildPythonPackage rec {
@@ -14,13 +17,9 @@ buildPythonPackage rec {
     sha256 = "cd5f416b3083e00d402a92e449a7ff67af46f11241073eea0461802a3b5aef98";
   };
 
-  nativeBuildInputs = [
-    pbr
-  ];
+  nativeBuildInputs = [ pbr ];
 
-  propagatedBuildInputs = [
-    attrs
-  ];
+  propagatedBuildInputs = [ attrs ];
 
   pythonImportsCheck = [ "sarif_om" ];
 
@@ -31,6 +30,6 @@ buildPythonPackage rec {
     description = "Classes implementing the SARIF 2.1.0 object model";
     homepage = "https://github.com/microsoft/sarif-python-om";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sarif-tools/default.nix b/pkgs/development/python-modules/sarif-tools/default.nix
new file mode 100644
index 0000000000000..c499d021447d7
--- /dev/null
+++ b/pkgs/development/python-modules/sarif-tools/default.nix
@@ -0,0 +1,62 @@
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  poetry-core,
+  jsonpath-ng,
+  jinja2,
+  python,
+  python-docx,
+  matplotlib,
+  pyyaml,
+  pytestCheckHook,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "sarif-tools";
+  version = "3.0.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "microsoft";
+    repo = "sarif-tools";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-MYwhewUTZ3Wl93p6bN3+bHqtXz+BAlAhte+JaetPQYU=";
+  };
+
+  disabled = pythonOlder "3.8";
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    jsonpath-ng
+    jinja2
+    python
+    python-docx
+    matplotlib
+    pyyaml
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonRelaxDeps = [ "python-docx" ];
+
+  disabledTests = [
+    # Broken, re-enable once https://github.com/microsoft/sarif-tools/pull/41 is merged
+    "test_version"
+  ];
+
+  pythonImportsCheck = [ "sarif" ];
+
+  meta = {
+    description = "Set of command line tools and Python library for working with SARIF files";
+    homepage = "https://github.com/microsoft/sarif-tools";
+    changelog = "https://github.com/microsoft/sarif-tools/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ puzzlewolf ];
+    mainProgram = "sarif";
+  };
+}
diff --git a/pkgs/development/python-modules/sasmodels/default.nix b/pkgs/development/python-modules/sasmodels/default.nix
index a0e1907c9b1d1..0f044c6e28b5c 100644
--- a/pkgs/development/python-modules/sasmodels/default.nix
+++ b/pkgs/development/python-modules/sasmodels/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pytest
-, numpy
-, scipy
-, matplotlib
-, docutils
-, pyopencl
-, opencl-headers
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pytest,
+  numpy,
+  scipy,
+  matplotlib,
+  docutils,
+  pyopencl,
+  opencl-headers,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-GZQYVvQ4bEBizTmJ+o5fIfGr8gn2/4uD3PxIswEjzSE=";
   };
 
-  buildInputs = [
-    opencl-headers
-  ];
+  buildInputs = [ opencl-headers ];
 
   propagatedBuildInputs = [
     docutils
@@ -39,17 +38,13 @@ buildPythonPackage rec {
 
   # Note: the 1.0.5 release should be compatible with pytest6, so this can
   # be set back to 'pytest' at that point
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
   checkPhase = ''
     HOME=$(mktemp -d) py.test -c ./pytest.ini
   '';
 
-  pythonImportsCheck = [
-    "sasmodels"
-  ];
+  pythonImportsCheck = [ "sasmodels" ];
 
   meta = with lib; {
     description = "Library of small angle scattering models";
diff --git a/pkgs/development/python-modules/scalene/01-manifest-no-git.patch b/pkgs/development/python-modules/scalene/01-manifest-no-git.patch
new file mode 100644
index 0000000000000..85f4bf7e86b49
--- /dev/null
+++ b/pkgs/development/python-modules/scalene/01-manifest-no-git.patch
@@ -0,0 +1,23 @@
+From 4e25ccee2f1eeed1dfdd9356b4fde511a48d9f01 Mon Sep 17 00:00:00 2001
+From: Sarah Clark <seclark@nextquestion.net>
+Date: Sat, 24 Aug 2024 11:32:38 -0700
+Subject: [PATCH] Update MANIFEST.in to remove .git references
+
+---
+ MANIFEST.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/MANIFEST.in b/MANIFEST.in
+index 5ebcb7781..7340b1982 100644
+--- a/MANIFEST.in
++++ b/MANIFEST.in
+@@ -1,5 +1,5 @@
+ graft vendor/Heap-Layers
+-prune vendor/Heap-Layers/.git
++# prune vendor/Heap-Layers/.git
+ graft vendor/printf
+-prune vendor/printf/.git
++# prune vendor/printf/.git
+ exclude scalene/old/*
+
+--
diff --git a/pkgs/development/python-modules/scalene/02-pyproject-unpin-setuptools.patch b/pkgs/development/python-modules/scalene/02-pyproject-unpin-setuptools.patch
new file mode 100644
index 0000000000000..80ab0080e631f
--- /dev/null
+++ b/pkgs/development/python-modules/scalene/02-pyproject-unpin-setuptools.patch
@@ -0,0 +1,23 @@
+From 777be9c46c4caed5f3fcde65b70ada4d773f4298 Mon Sep 17 00:00:00 2001
+From: Sarah Clark <seclark@nextquestion.net>
+Date: Sat, 24 Aug 2024 11:26:30 -0700
+Subject: [PATCH] Unpin setuptools
+
+---
+ pyproject.toml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pyproject.toml b/pyproject.toml
+index d17d12dc8..6bf1c7a38 100644
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -54,7 +54,7 @@ scalene = "scalene.__main__:main"
+ [build-system]
+ build-backend = "setuptools.build_meta"
+ requires = [
+-    "setuptools>=65.5.1,<71.0", # Pin to setuptools<71.0 to avoid this bug: https://github.com/pypa/setuptools/issues/4496
++    "setuptools>=65.5.1",
+     "setuptools_scm>=8",
+     "wheel",
+     "cython",
+--
diff --git a/pkgs/development/python-modules/scalene/default.nix b/pkgs/development/python-modules/scalene/default.nix
index 29a51e38b631b..820de7be473b3 100644
--- a/pkgs/development/python-modules/scalene/default.nix
+++ b/pkgs/development/python-modules/scalene/default.nix
@@ -1,41 +1,68 @@
-{ lib
-, buildPythonPackage
-, hypothesis
-, fetchpatch
-, fetchPypi
-, setuptools
-, setuptools-scm
-, cloudpickle
-, cython
-, jinja2
-, numpy
-, psutil
-, pynvml
-, pytestCheckHook
-, pythonOlder
-, rich
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cloudpickle,
+  cython,
+  hypothesis,
+  jinja2,
+  numpy,
+  nvidia-ml-py,
+  psutil,
+  pynvml,
+  pytestCheckHook,
+  pythonOlder,
+  rich,
+  setuptools-scm,
+  setuptools,
 }:
 
+let
+  heap-layers-src = fetchFromGitHub {
+    owner = "emeryberger";
+    repo = "heap-layers";
+    name = "Heap-Layers";
+    rev = "a2048eae91b531dc5d72be7a194e0b333c06bd4c";
+    sha256 = "sha256-vl3z30CBX7hav/DM/UE0EQ9lLxZF48tMJrYMXuSulyA=";
+  };
+
+  printf-src = fetchFromGitHub {
+    owner = "mpaland";
+    repo = "printf";
+    name = "printf";
+    rev = "v4.0.0";
+    sha256 = "sha256-tgLJNJw/dJGQMwCmfkWNBvHB76xZVyyfVVplq7aSJnI=";
+  };
+in
+
 buildPythonPackage rec {
   pname = "scalene";
-  version = "1.5.38";
+  version = "1.5.44.1";
   pyproject = true;
   disabled = pythonOlder "3.9";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-LR1evkn2m6FNBmJnUUJubesxIPeHG6RDgLFBHDuxe38=";
+  src = fetchFromGitHub {
+    owner = "plasma-umass";
+    repo = "scalene";
+    rev = "v${version}";
+    hash = "sha256-XMz+gwiNaKiKplD4kOE1yhcg+dkzjEdDYjW0JsDEMQE=";
   };
 
   patches = [
-    # fix scalene_config import. remove on next update
-    (fetchpatch {
-      name = "scalene_config-import-fix.patch";
-      url = "https://github.com/plasma-umass/scalene/commit/cd437be11f600ac0925ce77efa516e6d83934200.patch";
-      hash = "sha256-YjFh+mu5jyIJYUQFhmGqLXhec6lgQAdj4tWxij3NkwU=";
-    })
+    ./01-manifest-no-git.patch
+    ./02-pyproject-unpin-setuptools.patch
   ];
 
+  prePatch = ''
+    cp -r ${heap-layers-src} vendor/Heap-Layers
+    mkdir vendor/printf
+    cp ${printf-src}/printf.c vendor/printf/printf.cpp
+    cp -r ${printf-src}/* vendor/printf
+    sed -i"" 's/^#define printf printf_/\/\/&/' vendor/printf/printf.h
+    sed -i"" 's/^#define vsnprintf vsnprintf_/\/\/&/' vendor/printf/printf.h
+  '';
+
   nativeBuildInputs = [
     cython
     setuptools
@@ -45,28 +72,28 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     cloudpickle
     jinja2
+    numpy
     psutil
     pynvml
     rich
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isLinux [ nvidia-ml-py ];
+
+  pythonRemoveDeps = [
+    "nvidia-ml-py3"
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ "nvidia-ml-py" ];
 
   __darwinAllowLocalNetworking = true;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   checkInputs = [
     hypothesis
     numpy
   ];
 
-  disabledTestPaths = [
-    # remove on next update
-    # Failing Darwin-specific tests that were subsequently removed from the source repo.
-    "tests/test_coverup_35.py"
-    "tests/test_coverup_42.py"
-    "tests/test_coverup_43.py"
+  disabledTests = [
+    # Flaky -- socket collision
+    "test_show_browser"
   ];
 
   # remove scalene directory to prevent pytest import confusion
diff --git a/pkgs/development/python-modules/scales/default.nix b/pkgs/development/python-modules/scales/default.nix
index 9c7ebfe8e9a02..ff9ab853e5c92 100644
--- a/pkgs/development/python-modules/scales/default.nix
+++ b/pkgs/development/python-modules/scales/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  nose,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -26,5 +27,4 @@ buildPythonPackage rec {
     homepage = "https://www.github.com/Cue/scales";
     license = licenses.asl20;
   };
-
 }
diff --git a/pkgs/development/python-modules/scancode-toolkit/default.nix b/pkgs/development/python-modules/scancode-toolkit/default.nix
index 47f7eb93a349b..24badfd1d1ded 100644
--- a/pkgs/development/python-modules/scancode-toolkit/default.nix
+++ b/pkgs/development/python-modules/scancode-toolkit/default.nix
@@ -1,80 +1,79 @@
-{ lib
-, attrs
-, beautifulsoup4
-, bitarray
-, boolean-py
-, buildPythonPackage
-, chardet
-, click
-, colorama
-, commoncode
-, container-inspector
-, debian-inspector
-, dparse2
-, extractcode
-, extractcode-7z
-, extractcode-libarchive
-, fasteners
-, fetchPypi
-, fingerprints
-, ftfy
-, gemfileparser2
-, html5lib
-, importlib-metadata
-, intbitset
-, jaraco-functools
-, javaproperties
-, jinja2
-, jsonstreams
-, license-expression
-, lxml
-, markupsafe
-, packageurl-python
-, packaging
-, parameter-expansion-patched
-, pefile
-, pip-requirements-parser
-, pkginfo2
-, pluggy
-, plugincode
-, publicsuffix2
-, pyahocorasick
-, pycryptodome
-, pygmars
-, pygments
-, pymaven-patch
-, pytestCheckHook
-, pythonOlder
-, requests
-, saneyaml
-, setuptools
-, spdx-tools
-, text-unidecode
-, toml
-, typecode
-, typecode-libmagic
-, urlpy
-, xmltodict
-, zipp
+{
+  lib,
+  attrs,
+  beautifulsoup4,
+  bitarray,
+  boolean-py,
+  buildPythonPackage,
+  chardet,
+  click,
+  colorama,
+  commoncode,
+  container-inspector,
+  debian-inspector,
+  dparse2,
+  extractcode,
+  extractcode-7z,
+  extractcode-libarchive,
+  fasteners,
+  fetchPypi,
+  fingerprints,
+  ftfy,
+  gemfileparser2,
+  html5lib,
+  importlib-metadata,
+  intbitset,
+  jaraco-functools,
+  javaproperties,
+  jinja2,
+  jsonstreams,
+  license-expression,
+  lxml,
+  markupsafe,
+  packageurl-python,
+  packaging,
+  parameter-expansion-patched,
+  pefile,
+  pip-requirements-parser,
+  pkginfo2,
+  pluggy,
+  plugincode,
+  publicsuffix2,
+  pyahocorasick,
+  pycryptodome,
+  pygmars,
+  pygments,
+  pymaven-patch,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  saneyaml,
+  setuptools,
+  spdx-tools,
+  text-unidecode,
+  toml,
+  typecode,
+  typecode-libmagic,
+  urlpy,
+  xmltodict,
+  zipp,
 }:
 
 buildPythonPackage rec {
   pname = "scancode-toolkit";
-  version = "32.1.0";
+  version = "32.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-WjVtE+3KtFdtBLqNUzFwDrWAUQLblE+DNGjABH+5zWc=";
+    hash = "sha256-o+c2aB9oAI5xyHj2xtQowSP4Wjq6RAAmasXjrzXR5ko=";
   };
 
   dontConfigure = true;
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     attrs
@@ -128,13 +127,9 @@ buildPythonPackage rec {
     typecode-libmagic
     urlpy
     xmltodict
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    zipp
-  ];
+  ] ++ lib.optionals (pythonOlder "3.9") [ zipp ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Importing scancode needs a writeable home, and preCheck happens in between
   # pythonImportsCheckPhase and pytestCheckPhase.
@@ -142,9 +137,7 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d)
   '';
 
-  pythonImportsCheck = [
-    "scancode"
-  ];
+  pythonImportsCheck = [ "scancode" ];
 
   disabledTestPaths = [
     # Tests are outdated
@@ -159,7 +152,10 @@ buildPythonPackage rec {
     description = "Tool to scan code for license, copyright, package and their documented dependencies and other interesting facts";
     homepage = "https://github.com/nexB/scancode-toolkit";
     changelog = "https://github.com/nexB/scancode-toolkit/blob/v${version}/CHANGELOG.rst";
-    license = with licenses; [ asl20 cc-by-40 ];
-    maintainers = with maintainers; [ ];
+    license = with licenses; [
+      asl20
+      cc-by-40
+    ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/scapy/default.nix b/pkgs/development/python-modules/scapy/default.nix
index dede907418e3f..6e1ab5aad6e3e 100644
--- a/pkgs/development/python-modules/scapy/default.nix
+++ b/pkgs/development/python-modules/scapy/default.nix
@@ -1,13 +1,31 @@
-{ buildPythonPackage, fetchFromGitHub, stdenv, lib, isPyPy
-, pycrypto, ecdsa # TODO
-, mock, can, brotli
-, withOptionalDeps ? true, tcpdump, ipython
-, withCryptography ? true, cryptography
-, withVoipSupport ? true, sox
-, withPlottingSupport ? true, matplotlib
-, withGraphicsSupport ? false, pyx, texliveBasic, graphviz, imagemagick
-, withManufDb ? false, wireshark
-, libpcap
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  stdenv,
+  lib,
+  isPyPy,
+  pycrypto,
+  ecdsa, # TODO
+  mock,
+  python-can,
+  brotli,
+  withOptionalDeps ? true,
+  tcpdump,
+  ipython,
+  withCryptography ? true,
+  cryptography,
+  withVoipSupport ? true,
+  sox,
+  withPlottingSupport ? true,
+  matplotlib,
+  withGraphicsSupport ? false,
+  pyx,
+  texliveBasic,
+  graphviz,
+  imagemagick,
+  withManufDb ? false,
+  wireshark,
+  libpcap,
 # 2D/3D graphics and graphs TODO: VPython
 # TODO: nmap, numpy
 }:
@@ -26,35 +44,51 @@ buildPythonPackage rec {
     hash = "sha256-xJlovcxUQOQHfOU0Jgin/ayd2T5fOyeN4Jg0DbLHoeU=";
   };
 
-  patches = [
-    ./find-library.patch
-  ];
+  patches = [ ./find-library.patch ];
 
-  postPatch = ''
-    printf "${version}" > scapy/VERSION
+  postPatch =
+    ''
+      printf "${version}" > scapy/VERSION
 
-    libpcap_file="${lib.getLib libpcap}/lib/libpcap${stdenv.hostPlatform.extensions.sharedLibrary}"
-    if ! [ -e "$libpcap_file" ]; then
-        echo "error: $libpcap_file not found" >&2
-        exit 1
-    fi
-    substituteInPlace "scapy/libs/winpcapy.py" \
-        --replace "@libpcap_file@" "$libpcap_file"
-  '' + lib.optionalString withManufDb ''
-    substituteInPlace scapy/data.py --replace "/opt/wireshark" "${wireshark}"
-  '';
+      libpcap_file="${lib.getLib libpcap}/lib/libpcap${stdenv.hostPlatform.extensions.sharedLibrary}"
+      if ! [ -e "$libpcap_file" ]; then
+          echo "error: $libpcap_file not found" >&2
+          exit 1
+      fi
+      substituteInPlace "scapy/libs/winpcapy.py" \
+          --replace "@libpcap_file@" "$libpcap_file"
+    ''
+    + lib.optionalString withManufDb ''
+      substituteInPlace scapy/data.py --replace "/opt/wireshark" "${wireshark}"
+    '';
 
   buildInputs = lib.optional withVoipSupport sox;
 
-  propagatedBuildInputs = [ pycrypto ecdsa ]
-    ++ lib.optionals withOptionalDeps [ tcpdump ipython ]
+  propagatedBuildInputs =
+    [
+      pycrypto
+      ecdsa
+    ]
+    ++ lib.optionals withOptionalDeps [
+      tcpdump
+      ipython
+    ]
     ++ lib.optional withCryptography cryptography
     ++ lib.optional withPlottingSupport matplotlib
-    ++ lib.optionals withGraphicsSupport [ pyx texliveBasic graphviz imagemagick ];
+    ++ lib.optionals withGraphicsSupport [
+      pyx
+      texliveBasic
+      graphviz
+      imagemagick
+    ];
 
   # Running the tests seems too complicated:
   doCheck = false;
-  nativeCheckInputs = [ mock can brotli ];
+  nativeCheckInputs = [
+    mock
+    python-can
+    brotli
+  ];
   checkPhase = ''
     # TODO: be more specific about files
     patchShebangs .
@@ -63,7 +97,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "scapy" ];
 
   meta = with lib; {
-    description = "A Python-based network packet manipulation program and library";
+    description = "Python-based network packet manipulation program and library";
     mainProgram = "scapy";
     longDescription = ''
       Scapy is a powerful Python-based interactive packet manipulation program
@@ -90,6 +124,9 @@ buildPythonPackage rec {
     changelog = "https://github.com/secdev/scapy/releases/tag/v${version}";
     license = licenses.gpl2Only;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ primeos bjornfor ];
+    maintainers = with maintainers; [
+      primeos
+      bjornfor
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/schedule/default.nix b/pkgs/development/python-modules/schedule/default.nix
index 443b0f73d2df4..c0b86fd2ddfda 100644
--- a/pkgs/development/python-modules/schedule/default.nix
+++ b/pkgs/development/python-modules/schedule/default.nix
@@ -1,26 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mock
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "schedule";
-  version = "1.2.1";
+  version = "1.2.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-hDvAU4uZyT8CuLUOPjmIbAby0AOyT0jhqkyt+j80Enk=";
+    hash = "sha256-Ff6cdf5f2blifz8ZzA7xQgUI+fmkb0XNB2nvde3l8Lc=";
   };
 
-  buildInputs = [
-    mock
-  ];
-
   preCheck = ''
     # https://github.com/dbader/schedule/issues/488
     substituteInPlace test_schedule.py --replace \
@@ -28,15 +24,13 @@ buildPythonPackage rec {
       "# self.assertRaises(ScheduleValueError, every().day.until, datetime.time(hour=5))"
   '';
 
-  pythonImportsCheck = [
-    "schedule"
-  ];
+  pythonImportsCheck = [ "schedule" ];
 
   meta = with lib; {
     description = "Python job scheduling for humans";
     homepage = "https://github.com/dbader/schedule";
     changelog = "https://github.com/dbader/schedule/blob/${version}/HISTORY.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/schema-salad/default.nix b/pkgs/development/python-modules/schema-salad/default.nix
index 8d267299add02..6e3b6e3d5ed62 100644
--- a/pkgs/development/python-modules/schema-salad/default.nix
+++ b/pkgs/development/python-modules/schema-salad/default.nix
@@ -4,12 +4,12 @@
   buildPythonPackage,
   cachecontrol,
   fetchFromGitHub,
+  fetchpatch,
   importlib-resources,
   mistune,
   mypy,
   mypy-extensions,
   pytestCheckHook,
-  pythonRelaxDepsHook,
   pythonOlder,
   rdflib,
   requests,
@@ -22,7 +22,7 @@
 
 buildPythonPackage rec {
   pname = "schema-salad";
-  version = "8.5.20240410123758";
+  version = "8.5.20240503091721";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -31,7 +31,7 @@ buildPythonPackage rec {
     owner = "common-workflow-language";
     repo = "schema_salad";
     rev = "refs/tags/${version}";
-    hash = "sha256-AgXqeiA4sP7KBnUpb2uMWq45G0LhJ5uLtORrOG4UuB0=";
+    hash = "sha256-VbEIkWzg6kPnJWqbvlfsD83oS0VQasGQo+pUIPiGjhU=";
   };
 
   postPatch = ''
@@ -57,6 +57,11 @@ buildPythonPackage rec {
     ++ cachecontrol.optional-dependencies.filecache
     ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ];
 
+  patches = [ (fetchpatch {
+    url = "https://patch-diff.githubusercontent.com/raw/common-workflow-language/schema_salad/pull/840.patch";
+    hash = "sha256-fke75FCCn23LAMJ5bDWJpuBR6E9XIpjmzzXSbjqpxn8=";
+  } ) ];
+
   nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.pycodegen;
 
   preCheck = ''
diff --git a/pkgs/development/python-modules/schema/default.nix b/pkgs/development/python-modules/schema/default.nix
index 008813330dc81..9ffeb56f887d8 100644
--- a/pkgs/development/python-modules/schema/default.nix
+++ b/pkgs/development/python-modules/schema/default.nix
@@ -1,40 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mock
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "schema";
-  version = "0.7.5";
+  version = "0.7.7";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-8GcXESxhiVyrxHB3UriHFuhCCogZ1xQEUB4RT5EEMZc=";
+    hash = "sha256-faVTq9KVihncJUfDiM3lM5izkZYXWpvlnqHK9asKGAc=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
-  pythonRemoveDeps = [
-    "contextlib2"
-  ];
+  pythonRemoveDeps = [ "contextlib2" ];
 
   nativeCheckInputs = [
     mock
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "schema"
-  ];
+  pythonImportsCheck = [ "schema" ];
 
   meta = with lib; {
     description = "Library for validating Python data structures";
diff --git a/pkgs/development/python-modules/schemainspect/default.nix b/pkgs/development/python-modules/schemainspect/default.nix
index e2c375b11b929..65077eb806d85 100644
--- a/pkgs/development/python-modules/schemainspect/default.nix
+++ b/pkgs/development/python-modules/schemainspect/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pythonOlder
-, sqlalchemy
-, sqlbag
-, setuptools
-, poetry-core
-, pytestCheckHook
-, pytest-xdist
-, pytest-sugar
-, postgresql
-, postgresqlTestHook
-,
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pythonOlder,
+  sqlalchemy,
+  sqlbag,
+  setuptools,
+  poetry-core,
+  pytestCheckHook,
+  pytest-xdist,
+  pytest-sugar,
+  postgresql,
+  postgresqlTestHook,
 }:
 buildPythonPackage rec {
   pname = "schemainspect";
@@ -30,17 +30,14 @@ buildPythonPackage rec {
 
   patches = [
     # https://github.com/djrobstep/schemainspect/pull/87
-    (fetchpatch
-      {
-        name = "specify_poetry.patch";
-        url = "https://github.com/djrobstep/schemainspect/commit/bdcd001ef7798236fe0ff35cef52f34f388bfe68.patch";
-        hash = "sha256-/SEmcV9GjjvzfbszeGPkfd2DvYenl7bZyWdC0aI3M4M=";
-      })
+    (fetchpatch {
+      name = "specify_poetry.patch";
+      url = "https://github.com/djrobstep/schemainspect/commit/bdcd001ef7798236fe0ff35cef52f34f388bfe68.patch";
+      hash = "sha256-/SEmcV9GjjvzfbszeGPkfd2DvYenl7bZyWdC0aI3M4M=";
+    })
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
   propagatedBuildInputs = [
     setuptools # needed for 'pkg_resources'
     sqlalchemy
@@ -100,9 +97,7 @@ buildPythonPackage rec {
     "-svv"
     "tests"
   ];
-  pythonImportsCheck = [
-    "schemainspect"
-  ];
+  pythonImportsCheck = [ "schemainspect" ];
 
   postUnpack = ''
     # this dir is used to bump the version number, having it here fails the build
diff --git a/pkgs/development/python-modules/schemdraw/default.nix b/pkgs/development/python-modules/schemdraw/default.nix
index 441e668f81fc7..0bf09e59751c2 100644
--- a/pkgs/development/python-modules/schemdraw/default.nix
+++ b/pkgs/development/python-modules/schemdraw/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, pyparsing
-, matplotlib
-, latex2mathml
-, ziafont
-, ziamath
-, pytestCheckHook
-, nbval
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  pyparsing,
+  matplotlib,
+  latex2mathml,
+  ziafont,
+  ziamath,
+  pytestCheckHook,
+  nbval,
 }:
 
 buildPythonPackage rec {
   pname = "schemdraw";
-  version = "0.18";
-  format = "pyproject";
+  version = "0.19";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -23,21 +24,15 @@ buildPythonPackage rec {
     owner = "cdelker";
     repo = pname;
     rev = version;
-    hash = "sha256-JJc3LA+fqB+2g7pPIZ8YMV921EyYpLZrHSJCYyYThZg=";
+    hash = "sha256-vqEHcazE5DNHr0FceOWLqq+RZmMK5ovHDVjy/2wbTJU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pyparsing
-  ];
+  dependencies = [ pyparsing ];
 
-  passthru.optional-dependencies = {
-    matplotlib = [
-      matplotlib
-    ];
+  optional-dependencies = {
+    matplotlib = [ matplotlib ];
     svgmath = [
       latex2mathml
       ziafont
@@ -56,15 +51,17 @@ buildPythonPackage rec {
 
   # Strip out references to unfree fonts from the test suite
   postPatch = ''
-    substituteInPlace test/test_styles.ipynb --replace "font='Times', " ""
+    substituteInPlace test/test_backend.ipynb --replace-fail "(font='Times')" "()"
   '';
 
+  preCheck = "rm test/test_pictorial.ipynb"; # Tries to download files
+
   pytestFlagsArray = [ "--nbval-lax" ];
 
   pythonImportsCheck = [ "schemdraw" ];
 
   meta = with lib; {
-    description = "A package for producing high-quality electrical circuit schematic diagrams";
+    description = "Package for producing high-quality electrical circuit schematic diagrams";
     homepage = "https://schemdraw.readthedocs.io/en/latest/";
     changelog = "https://schemdraw.readthedocs.io/en/latest/changes.html";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/schiene/default.nix b/pkgs/development/python-modules/schiene/default.nix
index cc8d49668064f..20267d300d69a 100644
--- a/pkgs/development/python-modules/schiene/default.nix
+++ b/pkgs/development/python-modules/schiene/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "schiene"
-  ];
+  pythonImportsCheck = [ "schiene" ];
 
   meta = with lib; {
     description = "Python library for interacting with Bahn.de";
diff --git a/pkgs/development/python-modules/schwifty/default.nix b/pkgs/development/python-modules/schwifty/default.nix
index 1a33c71f7ff5f..793627bb3c613 100644
--- a/pkgs/development/python-modules/schwifty/default.nix
+++ b/pkgs/development/python-modules/schwifty/default.nix
@@ -1,60 +1,60 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build-system
-, hatchling
-, hatch-vcs
+  # build-system
+  hatchling,
+  hatch-vcs,
 
-# dependencies
-, iso3166
-, pycountry
+  # dependencies
+  importlib-resources,
+  iso3166,
+  pycountry,
+  rstr,
 
-# optional-dependencies
-, pydantic
+  # optional-dependencies
+  pydantic,
 
-# tests
-, pytestCheckHook
-, pytest-cov
-, pythonOlder
+  # tests
+  pytestCheckHook,
+  pytest-cov,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "schwifty";
-  version = "2024.1.1.post0";
-  format = "pyproject";
+  version = "2024.8.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ZFDu+stuKdsVc8bTuSZ4LZX8BuQhORjyEMosnrk1rX0=";
+    hash = "sha256-XWdB0yGYKxz2PJVNbXpNnsG/SaF3ysZn8JjrDn/rZ7w=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatchling
     hatch-vcs
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     iso3166
     pycountry
-  ];
+    rstr
+  ] ++ lib.optionals (pythonOlder "3.12") [ importlib-resources ];
 
-  passthru.optional-dependencies = {
-    pydantic = [
-      pydantic
-    ];
+  optional-dependencies = {
+    pydantic = [ pydantic ];
   };
 
   nativeCheckInputs = [
     pytest-cov
     pytestCheckHook
-  ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
-  pythonImportsCheck = [
-    "schwifty"
-  ];
+  pythonImportsCheck = [ "schwifty" ];
 
   meta = with lib; {
     changelog = "https://github.com/mdomke/schwifty/blob/${version}/CHANGELOG.rst";
diff --git a/pkgs/development/python-modules/scikit-bio/default.nix b/pkgs/development/python-modules/scikit-bio/default.nix
index c08f992f2293b..7068063a8cb5d 100644
--- a/pkgs/development/python-modules/scikit-bio/default.nix
+++ b/pkgs/development/python-modules/scikit-bio/default.nix
@@ -1,53 +1,64 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cython
-, lockfile
-, cachecontrol
-, decorator
-, h5py
-, ipython
-, matplotlib
-, natsort
-, numpy
-, pandas
-, scipy
-, hdmedians
-, scikit-learn
-, coverage
-, python
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  cython,
+  oldest-supported-numpy,
+  requests,
+  decorator,
+  natsort,
+  numpy,
+  pandas,
+  scipy,
+  h5py,
+  hdmedians,
+  biom-format,
+  python,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
-  version = "0.5.9";
-  format = "setuptools";
   pname = "scikit-bio";
-  disabled = !isPy3k;
+  version = "0.6.0";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-euBE3IvuIxkAJIrcOoZZB352FA1WrJ9CvQH7eYEBSRA=";
+  src = fetchFromGitHub {
+    owner = "scikit-bio";
+    repo = "scikit-bio";
+    rev = "refs/tags/${version}";
+    hash = "sha256-v8/r52pJpMi34SekPQBf7CqRbs+ZEyPR3WO5RBB7uKg=";
   };
 
-  nativeBuildInputs = [ cython ];
-  nativeCheckInputs = [ coverage ];
-  propagatedBuildInputs = [ lockfile cachecontrol decorator ipython matplotlib natsort numpy pandas scipy h5py hdmedians scikit-learn ];
+  build-system = [
+    setuptools
+    cython
+    oldest-supported-numpy
+  ];
 
-  # cython package not included for tests
-  doCheck = false;
+  dependencies = [
+    requests
+    decorator
+    natsort
+    numpy
+    pandas
+    scipy
+    h5py
+    hdmedians
+    biom-format
+  ];
 
-  checkPhase = ''
-    ${python.interpreter} -m skbio.test
-  '';
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  # only the $out dir contains the built cython extensions, so we run the tests inside there
+  pytestFlagsArray = [ "${placeholder "out"}/${python.sitePackages}/skbio" ];
 
   pythonImportsCheck = [ "skbio" ];
 
-  meta = with lib; {
+  meta = {
     homepage = "http://scikit-bio.org/";
     description = "Data structures, algorithms and educational resources for bioinformatics";
-    license = licenses.bsd3;
-    platforms = [ "x86_64-linux" "x86_64-darwin" ];
-    maintainers = [ ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ tomasajt ];
   };
 }
diff --git a/pkgs/development/python-modules/scikit-build-core/default.nix b/pkgs/development/python-modules/scikit-build-core/default.nix
index 0e4734d4a53b8..3dafa8134d0f7 100644
--- a/pkgs/development/python-modules/scikit-build-core/default.nix
+++ b/pkgs/development/python-modules/scikit-build-core/default.nix
@@ -1,92 +1,93 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, distlib
-, pythonOlder
-, exceptiongroup
-, hatch-vcs
-, hatchling
-, cattrs
-, cmake
-, ninja
-, packaging
-, pathspec
-, pyproject-metadata
-, pytest-subprocess
-, pytestCheckHook
-, setuptools
-, tomli
-, virtualenv
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  hatch-vcs,
+  hatchling,
+  cmake,
+  ninja,
+
+  # dependencies
+  packaging,
+  pathspec,
+  exceptiongroup,
+
+  # tests
+  build,
+  cattrs,
+  numpy,
+  pybind11,
+  pytest-subprocess,
+  pytestCheckHook,
+  setuptools,
+  tomli,
+  virtualenv,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "scikit-build-core";
-  version = "0.8.2";
+  version = "0.10.5";
   pyproject = true;
 
-  src = fetchPypi {
-    pname = "scikit_build_core";
-    inherit version;
-    hash = "sha256-UOwkuVaMmqbicjPe6yl4kyvHmFYhKzBXXL+kBJZVxDY=";
+  src = fetchFromGitHub {
+    owner = "scikit-build";
+    repo = "scikit-build-core";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-hpwXEWPofgMT4ua2tZI1mtGbaBkT2XPBd6QL8xTi1A0=";
   };
 
   postPatch = lib.optionalString (pythonOlder "3.11") ''
     substituteInPlace pyproject.toml \
-      --replace '"error",' '"error", "ignore::UserWarning",'
+      --replace-fail '"error",' '"error", "ignore::UserWarning",'
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-vcs
     hatchling
   ];
 
-  propagatedBuildInputs = [
-    packaging
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    exceptiongroup
-    tomli
-  ];
-
-  passthru.optional-dependencies = {
-    pyproject = [
-      distlib
+  dependencies =
+    [
+      packaging
       pathspec
-      pyproject-metadata
+    ]
+    ++ lib.optionals (pythonOlder "3.11") [
+      exceptiongroup
+      tomli
     ];
-  };
-
-  dontUseCmakeConfigure = true;
 
   nativeCheckInputs = [
+    build
     cattrs
     cmake
     ninja
+    numpy
+    pybind11
     pytest-subprocess
     pytestCheckHook
     setuptools
     virtualenv
     wheel
-  ] ++ passthru.optional-dependencies.pyproject;
+  ];
+
+  # cmake is only used for tests
+  dontUseCmakeConfigure = true;
+
+  pytestFlagsArray = [ "-m 'not isolated and not network'" ];
 
   disabledTestPaths = [
-    # runs pip, requires network access
-    "tests/test_custom_modules.py"
-    "tests/test_pyproject_pep517.py"
-    "tests/test_pyproject_pep518.py"
-    "tests/test_pyproject_pep660.py"
-    "tests/test_setuptools_pep517.py"
-    "tests/test_setuptools_pep518.py"
     # store permissions issue in Nix:
     "tests/test_editable.py"
   ];
 
-  pythonImportsCheck = [
-    "scikit_build_core"
-  ];
+  pythonImportsCheck = [ "scikit_build_core" ];
 
   meta = with lib; {
-    description = "A next generation Python CMake adaptor and Python API for plugins";
+    description = "Next generation Python CMake adaptor and Python API for plugins";
     homepage = "https://github.com/scikit-build/scikit-build-core";
     changelog = "https://github.com/scikit-build/scikit-build-core/releases/tag/v${version}";
     license = with licenses; [ asl20 ];
diff --git a/pkgs/development/python-modules/scikit-build/default.nix b/pkgs/development/python-modules/scikit-build/default.nix
index acaf74e10953e..f5c54e856e247 100644
--- a/pkgs/development/python-modules/scikit-build/default.nix
+++ b/pkgs/development/python-modules/scikit-build/default.nix
@@ -1,49 +1,45 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, fetchpatch2
-, hatch-fancy-pypi-readme
-, hatch-vcs
-, hatchling
-, distro
-, packaging
-, setuptools
-, wheel
-, tomli
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  fetchpatch2,
+  hatch-fancy-pypi-readme,
+  hatch-vcs,
+  hatchling,
+  distro,
+  packaging,
+  setuptools,
+  wheel,
+  tomli,
   # Test Inputs
-, cmake
-, cython
-, git
-, pytestCheckHook
-, pytest-mock
-, requests
-, virtualenv
+  cmake,
+  cython,
+  git,
+  pytestCheckHook,
+  pytest-mock,
+  requests,
+  virtualenv,
 }:
 
 buildPythonPackage rec {
   pname = "scikit-build";
-  version = "0.17.6";
-  format = "pyproject";
+  version = "0.18.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     pname = "scikit_build";
     inherit version;
-    hash = "sha256-tRpRo2s3xCZQmUtQR5EvWbIuMhCyPjIfKHYR+e9uXJ0=";
+    hash = "sha256-caE69GfRo4UQw0lHhuLttz6tU+qSK95uUZ3FNyqmUJY=";
   };
 
   patches = [
-    # https://github.com/scikit-build/scikit-build/pull/1032
-    # https://github.com/scikit-build/scikit-build/issues/1047
-    ./python312-compatibility.patch
-
     (fetchpatch2 {
-      # https://github.com/scikit-build/scikit-build/pull/1073
-      name = "skbuild-suppress-permissionerror.patch";
-      url = "https://github.com/scikit-build/scikit-build/commit/41183413e4f5ef29cf3d21e470a2cfa2305733f8.patch";
-      hash = "sha256-M5Sbt4CBuiAeGgN0D/toglVi1V2GlA9hPIOMzcqOwdo=";
+      name = "setuptools-70.2.0-compat.patch";
+      url = "https://github.com/scikit-build/scikit-build/commit/7005897053bc5c71d823c36bbd89bd43121670f1.patch";
+      hash = "sha256-YGNCS1AXnqHQMd40CDePVNAzLe5gQ/nJxASAZafsxK8=";
     })
   ];
 
@@ -53,20 +49,18 @@ buildPythonPackage rec {
     sed -i "/'error',/d" pyproject.toml
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-fancy-pypi-readme
     hatch-vcs
     hatchling
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     distro
     packaging
     setuptools
     wheel
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   nativeCheckInputs = [
     cmake
@@ -92,6 +86,8 @@ buildPythonPackage rec {
     "test_dual_pep518" # pip exits with code 1
     "test_isolated_env_trigger_reconfigure" # Regex pattern 'exit skbuild saving cmake spec' does not match 'exit skbuild running make'.
     "test_hello_wheel" # [Errno 2] No such file or directory: '_skbuild/linux-x86_64-3.9/setuptools/bdist.linux-x86_64/wheel/helloModule.py'
+    "test_hello_cython_sdist" # [Errno 2] No such file or directory: 'dist/hello-cython-1.2.3.tar.gz'
+    "test_hello_pure_sdist" # [Errno 2] No such file or directory: 'dist/hello-pure-1.2.3.tar.gz'
     # sdist contents differ, contains additional setup.py
     "test_hello_sdist"
     "test_manifest_in_sdist"
@@ -102,7 +98,10 @@ buildPythonPackage rec {
     changelog = "https://github.com/scikit-build/scikit-build/blob/${version}/CHANGES.rst";
     description = "Improved build system generator for CPython C/C++/Fortran/Cython extensions";
     homepage = "https://github.com/scikit-build/scikit-build";
-    license = with licenses; [ mit bsd2 ]; # BSD due to reuses of PyNE code
+    license = with licenses; [
+      mit
+      bsd2
+    ]; # BSD due to reuses of PyNE code
     maintainers = with maintainers; [ FlorianFranzen ];
   };
 }
diff --git a/pkgs/development/python-modules/scikit-build/python312-compatibility.patch b/pkgs/development/python-modules/scikit-build/python312-compatibility.patch
deleted file mode 100644
index 8e86eccf010b7..0000000000000
--- a/pkgs/development/python-modules/scikit-build/python312-compatibility.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-diff --git a/skbuild/resources/cmake/FindPythonExtensions.cmake b/skbuild/resources/cmake/FindPythonExtensions.cmake
-index 59b30c2..62298d5 100644
---- a/skbuild/resources/cmake/FindPythonExtensions.cmake
-+++ b/skbuild/resources/cmake/FindPythonExtensions.cmake
-@@ -254,19 +254,23 @@ endif()
- include(targetLinkLibrariesWithDynamicLookup)
- 
- set(_command "
--import distutils.sysconfig
-+import sys
-+
-+if sys.version_info >= (3,10):
-+  import sysconfig
-+else:
-+  from distutils import sysconfig
- import itertools
- import os
- import os.path
- import site
--import sys
- 
- result = None
- rel_result = None
- candidate_lists = []
- 
- try:
--    candidate_lists.append((distutils.sysconfig.get_python_lib(),))
-+    candidate_lists.append((sysconfig.get_python_lib(),))
- except AttributeError: pass
- 
- try:
-@@ -293,7 +297,7 @@ sys.stdout.write(\";\".join((
-     sys.prefix,
-     result,
-     rel_result,
--    distutils.sysconfig.get_config_var('EXT_SUFFIX')
-+    sysconfig.get_config_var('EXT_SUFFIX')
- )))
- ")
- 
diff --git a/pkgs/development/python-modules/scikit-fmm/default.nix b/pkgs/development/python-modules/scikit-fmm/default.nix
index b3e4891333acc..57cc5902ed73f 100644
--- a/pkgs/development/python-modules/scikit-fmm/default.nix
+++ b/pkgs/development/python-modules/scikit-fmm/default.nix
@@ -1,23 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  meson-python,
+  numpy,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "scikit-fmm";
-  version = "2023.4.2";
-  format = "setuptools";
+  version = "2024.5.29";
+  pyproject = true;
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-14ccR/ggdyq6kvJWUe8U5NJ96M45PArjwCqzxuJCPAs=";
+    pname = "scikit_fmm";
+    inherit version;
+    hash = "sha256-sy7J5UKXhuL5K8zr3lBulUMekwNlBFfC8C2VzguVTUE=";
   };
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "oldest-supported-numpy" "numpy"
+  '';
+
+  build-system = [ meson-python ];
+
+  dependencies = [ numpy ];
 
   checkPhase = ''
     mkdir testdir; cd testdir
@@ -25,9 +33,9 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A Python extension module which implements the fast marching method";
+    description = "Python extension module which implements the fast marching method";
     homepage = "https://github.com/scikit-fmm/scikit-fmm";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/scikit-fuzzy/default.nix b/pkgs/development/python-modules/scikit-fuzzy/default.nix
index 03f10f129cbd5..d184f566657e5 100644
--- a/pkgs/development/python-modules/scikit-fuzzy/default.nix
+++ b/pkgs/development/python-modules/scikit-fuzzy/default.nix
@@ -1,54 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pythonAtLeast
-, setuptools
-, matplotlib
-, networkx
-, nose
-, numpy
-, scipy
-, pytest7CheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  matplotlib,
+  networkx,
+  numpy,
+  scipy,
+  pytest7CheckHook,
 }:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "scikit-fuzzy";
-  version = "unstable-2022-11-07";
+  version = "0.4.2-unstable-2023-09-14";
   pyproject = true;
 
-  # code depends on distutils
-  disabled = pythonAtLeast "3.12";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
-    owner = pname;
-    repo = pname;
-    rev = "d8c45c259d62955004379592e45bc64c8e002fc3";
-    hash = "sha256-kS48aHC719wUdc2WcJa9geoMUcLHSj7ZsoRZYAhF2a0=";
+    owner = "scikit-fuzzy";
+    repo = "scikit-fuzzy";
+    rev = "d7551b649f34c2f5e98836e9b502279226d3b225";
+    hash = "sha256-91Udm2dIaIwTVG6V1EqYA/4qryuS4APgaa7tIa3sSQE=";
   };
 
-  patches = [
-    # https://github.com/scikit-fuzzy/scikit-fuzzy/pull/299
-    (fetchpatch {
-      name = "numpy-1.25-test-compatibility-1.patch";
-      url = "https://github.com/scikit-fuzzy/scikit-fuzzy/commit/d7d114cff002e2edf9361a55cb985615e91797b5.patch";
-      hash = "sha256-udF/z94tVGRHq7gcOko4BSkvVnqe/A/bAARfCPrc06M=";
-    })
-    (fetchpatch {
-      name = "numpy-1.25-test-compatibility-2.patch";
-      url = "https://github.com/scikit-fuzzy/scikit-fuzzy/commit/f1612f6aeff34dc9329dbded7cee098fcd22ffd9.patch";
-      hash = "sha256-Le1ECR4+RjWCkfqjVrd471GD7tuVaQlZ7RZd3zvFdHU=";
-    })
-    (fetchpatch {
-      name = "numpy-1.25-test-compatibility-3.patch";
-      url = "https://github.com/scikit-fuzzy/scikit-fuzzy/commit/459b9602cf182b7b42f93aad8bcf3bda6f20bfb5.patch";
-      hash = "sha256-gKrhNpGt6XoAlMwQW70OPFZj/ZC8NhQq6dEaBpGE8yY=";
-    })
-  ];
-
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   propagatedBuildInputs = [
     networkx
@@ -58,10 +35,11 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     matplotlib
-    nose
     pytest7CheckHook
   ];
 
+  preCheck = "rm -rf build";
+
   pythonImportsCheck = [ "skfuzzy" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/scikit-hep-testdata/default.nix b/pkgs/development/python-modules/scikit-hep-testdata/default.nix
index be99cd22b6abd..611474d85df60 100644
--- a/pkgs/development/python-modules/scikit-hep-testdata/default.nix
+++ b/pkgs/development/python-modules/scikit-hep-testdata/default.nix
@@ -1,50 +1,45 @@
-{ lib
-, fetchFromGitHub
-, pythonAtLeast
-, buildPythonPackage
-, importlib-resources
-, pyyaml
-, requests
-, setuptools-scm
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  pythonAtLeast,
+  buildPythonPackage,
+  importlib-resources,
+  pyyaml,
+  requests,
+  setuptools-scm,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "scikit-hep-testdata";
-  version = "0.4.44";
-  format = "pyproject";
+  version = "0.4.48";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "scikit-hep";
-    repo = pname;
+    repo = "scikit-hep-testdata";
     rev = "refs/tags/v${version}";
-    hash = "sha256-7a1F7180mnbMiEwRWzDQt2EhRsleSoVhWtTc+5DR/2o=";
+    hash = "sha256-B0YmO48aGDRsQ56+q7/Z6xquCNjbAQ55fkY6auvwB90=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pyyaml
     requests
-  ] ++ lib.optionals (!pythonAtLeast "3.9") [
-    importlib-resources
-  ];
+  ] ++ lib.optionals (!pythonAtLeast "3.9") [ importlib-resources ];
 
   SKHEP_DATA = 1; # install the actual root files
 
   doCheck = false; # tests require networking
 
-  pythonImportsCheck = [
-    "skhep_testdata"
-  ];
+  pythonImportsCheck = [ "skhep_testdata" ];
 
   meta = with lib; {
     homepage = "https://github.com/scikit-hep/scikit-hep-testdata";
-    description = "A common package to provide example files (e.g., ROOT) for testing and developing packages against";
+    description = "Common package to provide example files (e.g., ROOT) for testing and developing packages against";
     changelog = "https://github.com/scikit-hep/scikit-hep-testdata/releases/tag/v${version}";
     license = licenses.bsd3;
     maintainers = with maintainers; [ veprbl ];
diff --git a/pkgs/development/python-modules/scikit-image/default.nix b/pkgs/development/python-modules/scikit-image/default.nix
index f29f9870b26a5..3c0743354787a 100644
--- a/pkgs/development/python-modules/scikit-image/default.nix
+++ b/pkgs/development/python-modules/scikit-image/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, buildPythonPackage
-, python
-, pythonOlder
-, astropy
-, cloudpickle
-, cython
-, dask
-, imageio
-, lazy-loader
-, matplotlib
-, meson-python
-, networkx
-, numpy
-, packaging
-, pillow
-, pooch
-, pyamg
-, pytestCheckHook
-, numpydoc
-, pythran
-, pywavelets
-, scikit-learn
-, scipy
-, setuptools
-, simpleitk
-, six
-, tifffile
-, wheel
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  buildPythonPackage,
+  python,
+  pythonOlder,
+  astropy,
+  cloudpickle,
+  cython,
+  dask,
+  imageio,
+  lazy-loader,
+  matplotlib,
+  meson-python,
+  networkx,
+  numpy,
+  packaging,
+  pillow,
+  pooch,
+  pyamg,
+  pytestCheckHook,
+  numpydoc,
+  pythran,
+  pywavelets,
+  scikit-learn,
+  scipy,
+  setuptools,
+  simpleitk,
+  tifffile,
+  wheel,
 }:
 
 let
@@ -78,9 +78,7 @@ let
     ];
 
     passthru.optional-dependencies = {
-      data = [
-        pooch
-      ];
+      data = [ pooch ];
       optional = [
         astropy
         cloudpickle
@@ -95,7 +93,10 @@ let
 
     # test suite is very cpu intensive, move to passthru.tests
     doCheck = false;
-    nativeCheckInputs = [ pytestCheckHook numpydoc ];
+    nativeCheckInputs = [
+      pytestCheckHook
+      numpydoc
+    ];
 
     # (1) The package has cythonized modules, whose .so libs will appear only in the wheel, i.e. in nix store;
     # (2) To stop Python from importing the wrong directory, i.e. the one in the build dir, not the one in nix store, `skimage` dir should be removed or renamed;
@@ -110,23 +111,33 @@ let
       # Requires network access (actually some data is loaded via `skimage._shared.testing.fetch` in the global scope, which calls `pytest.skip` when a network is unaccessible, leading to a pytest collection error).
       "${installedPackageRoot}/skimage/filters/rank/tests/test_rank.py"
     ];
-    pytestFlagsArray = [ "${installedPackageRoot}" "--pyargs" "skimage" ] ++ builtins.map (testid: "--deselect=" + testid) ([
-      # These tests require network access
-      "skimage/data/test_data.py::test_skin"
-      "skimage/data/tests/test_data.py::test_skin"
-      "skimage/io/tests/test_io.py::test_imread_http_url"
-      "skimage/restoration/tests/test_rolling_ball.py::test_ndim"
-    ] ++ lib.optionals stdenv.isDarwin [
-      # Matplotlib tests are broken inside darwin sandbox
-      "skimage/feature/tests/test_util.py::test_plot_matches"
-      "skimage/filters/tests/test_thresholding.py::TestSimpleImage::test_try_all_threshold"
-      "skimage/io/tests/test_mpl_imshow.py::"
-      # See https://github.com/scikit-image/scikit-image/issues/7061 and https://github.com/scikit-image/scikit-image/issues/7104
-      "skimage/measure/tests/test_fit.py"
-    ] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
-      # https://github.com/scikit-image/scikit-image/issues/7104
-      "skimage/measure/tests/test_moments.py"
-    ]);
+    pytestFlagsArray =
+      [
+        "${installedPackageRoot}"
+        "--pyargs"
+        "skimage"
+      ]
+      ++ builtins.map (testid: "--deselect=" + testid) (
+        [
+          # These tests require network access
+          "skimage/data/test_data.py::test_skin"
+          "skimage/data/tests/test_data.py::test_skin"
+          "skimage/io/tests/test_io.py::test_imread_http_url"
+          "skimage/restoration/tests/test_rolling_ball.py::test_ndim"
+        ]
+        ++ lib.optionals stdenv.hostPlatform.isDarwin [
+          # Matplotlib tests are broken inside darwin sandbox
+          "skimage/feature/tests/test_util.py::test_plot_matches"
+          "skimage/filters/tests/test_thresholding.py::TestSimpleImage::test_try_all_threshold"
+          "skimage/io/tests/test_mpl_imshow.py::"
+          # See https://github.com/scikit-image/scikit-image/issues/7061 and https://github.com/scikit-image/scikit-image/issues/7104
+          "skimage/measure/tests/test_fit.py"
+        ]
+        ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
+          # https://github.com/scikit-image/scikit-image/issues/7104
+          "skimage/measure/tests/test_moments.py"
+        ]
+      );
 
     # Check cythonized modules
     pythonImportsCheck = [
@@ -152,10 +163,10 @@ let
     meta = {
       description = "Image processing routines for SciPy";
       homepage = "https://scikit-image.org";
-      changelog = "https://github.com/scikit-image/scikit-image/releases/tag/${src.rev}";
+      changelog = "https://github.com/scikit-image/scikit-image/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
       license = lib.licenses.bsd3;
       maintainers = with lib.maintainers; [ yl3dy ];
     };
   };
 in
-  self
+self
diff --git a/pkgs/development/python-modules/scikit-learn-extra/default.nix b/pkgs/development/python-modules/scikit-learn-extra/default.nix
index c6d897fb49fec..a7472648fd173 100644
--- a/pkgs/development/python-modules/scikit-learn-extra/default.nix
+++ b/pkgs/development/python-modules/scikit-learn-extra/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, numpy
-, cython
-, scipy
-, scikit-learn
-, matplotlib
-, pytestCheckHook
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  numpy,
+  cython,
+  scipy,
+  scikit-learn,
+  matplotlib,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,19 @@ buildPythonPackage rec {
     sha256 = "sha256-dHOwo6NIuhcvIehpuJQ621JEg5O3mnXycAhpTZKaxns=";
   };
 
-  nativeBuildInputs = [ numpy cython ];
-  propagatedBuildInputs = [ numpy scipy scikit-learn ];
-  nativeCheckInputs = [ matplotlib pytestCheckHook ];
+  nativeBuildInputs = [
+    numpy
+    cython
+  ];
+  propagatedBuildInputs = [
+    numpy
+    scipy
+    scikit-learn
+  ];
+  nativeCheckInputs = [
+    matplotlib
+    pytestCheckHook
+  ];
 
   preCheck = ''
     # Remove the package in the build dir, because Python defaults to it and
@@ -38,7 +49,7 @@ buildPythonPackage rec {
     "doc"
   ];
   disabledTests = [
-    "build"   # needs network connection
+    "build" # needs network connection
     "test_all_estimators" # sklearn.exceptions.NotFittedError: Estimator fails to pass `check_is_fitted` even though it has been fit.
   ];
 
@@ -51,7 +62,7 @@ buildPythonPackage rec {
   ];
 
   meta = {
-    description = "A set of tools for scikit-learn";
+    description = "Set of tools for scikit-learn";
     homepage = "https://github.com/scikit-learn-contrib/scikit-learn-extra";
     license = lib.licenses.bsd3;
     maintainers = with lib.maintainers; [ yl3dy ];
diff --git a/pkgs/development/python-modules/scikit-learn/default.nix b/pkgs/development/python-modules/scikit-learn/default.nix
index bbcb44de2c02a..eeba3f116d9d9 100644
--- a/pkgs/development/python-modules/scikit-learn/default.nix
+++ b/pkgs/development/python-modules/scikit-learn/default.nix
@@ -1,54 +1,54 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-
-# build-system
-, cython
-, gfortran
-, numpy
-, scipy
-, setuptools
-, wheel
-
-# native dependencies
-, glibcLocales
-, llvmPackages
-, pytestCheckHook
-, pytest-xdist
-, pillow
-, joblib
-, threadpoolctl
-, pythonOlder
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+
+  # build-system
+  cython,
+  gfortran,
+  meson-python,
+  numpy,
+  scipy,
+
+  # native dependencies
+  glibcLocales,
+  llvmPackages,
+  pytestCheckHook,
+  pytest-xdist,
+  pillow,
+  joblib,
+  threadpoolctl,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "scikit-learn";
-  version = "1.4.1.post1";
+  version = "1.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-k9PUlv8ZZUcPmXfQXl7DN2+x5jsQ5P2l450jwtiWmjA=";
+    pname = "scikit_learn";
+    inherit version;
+    hash = "sha256-eJ49sBx1DtbUlvott9UGN4V7RR5XvK6GO/9wfBJHvvc=";
   };
 
-  patches = [
-    (fetchpatch { # included in >= 1.4.2
-      name = "test_standard_scaler_dtype.patch";
-      url = "https://github.com/jeremiedbb/scikit-learn/commit/87c32d35eeb8f6f7fec63dc3d97d9c416545f053.diff";
-      hash = "sha256-iOBOoWHuWChCTnZ5go7MobPcHRGMChROpCI7V/5ik1Y=";
-    })
-  ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "numpy>=2.0.0rc2" "numpy"
+
+    substituteInPlace meson.build --replace-fail \
+      "run_command('sklearn/_build_utils/version.py', check: true).stdout().strip()," \
+      "'${version}',"
+  '';
 
   buildInputs = [
+    numpy.blas
     pillow
     glibcLocales
-  ] ++ lib.optionals stdenv.cc.isClang [
-    llvmPackages.openmp
-  ];
+  ] ++ lib.optionals stdenv.cc.isClang [ llvmPackages.openmp ];
 
   nativeBuildInputs = [
     gfortran
@@ -56,14 +56,9 @@ buildPythonPackage rec {
 
   build-system = [
     cython
+    meson-python
     numpy
     scipy
-    setuptools
-    wheel
-  ];
-
-  propagatedBuildInputs = [
-    numpy.blas
   ];
 
   dependencies = [
@@ -78,31 +73,37 @@ buildPythonPackage rec {
     pytest-xdist
   ];
 
-  env.LC_ALL="en_US.UTF-8";
+  env.LC_ALL = "en_US.UTF-8";
 
   preBuild = ''
     export SKLEARN_BUILD_PARALLEL=$NIX_BUILD_CORES
   '';
 
   # PermissionError: [Errno 1] Operation not permitted: '/nix/nix-installer'
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   disabledTests = [
     # Skip test_feature_importance_regression - does web fetch
     "test_feature_importance_regression"
+  ] ++ lib.optionals stdenv.hostPlatform.isAarch64 [
+    # doesn't seem to produce correct results?
+    # possibly relevant: https://github.com/scikit-learn/scikit-learn/issues/25838#issuecomment-2308650816
+    "test_sparse_input"
   ];
 
   pytestFlagsArray = [
     # verbose build outputs needed to debug hard-to-reproduce hydra failures
     "-v"
-    "--pyargs" "sklearn"
+    "--pyargs"
+    "sklearn"
 
     # NuSVC memmap tests causes segmentation faults in certain environments
     # (e.g. Hydra Darwin machines) related to a long-standing joblib issue
     # (https://github.com/joblib/joblib/issues/563). See also:
     # https://github.com/scikit-learn/scikit-learn/issues/17582
     # Since we are overriding '-k' we need to include the 'disabledTests' from above manually.
-    "-k" "'not (NuSVC and memmap) ${toString (lib.forEach disabledTests (t: "and not ${t}"))}'"
+    "-k"
+    "'not (NuSVC and memmap) ${toString (lib.forEach disabledTests (t: "and not ${t}"))}'"
   ];
 
   preCheck = ''
@@ -114,12 +115,13 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "sklearn" ];
 
   meta = with lib; {
-    description = "A set of python modules for machine learning and data mining";
-    changelog = let
-      major = versions.major version;
-      minor = versions.minor version;
-      dashVer = replaceStrings ["."] ["-"] version;
-    in
+    description = "Set of python modules for machine learning and data mining";
+    changelog =
+      let
+        major = versions.major version;
+        minor = versions.minor version;
+        dashVer = replaceStrings [ "." ] [ "-" ] version;
+      in
       "https://scikit-learn.org/stable/whats_new/v${major}.${minor}.html#version-${dashVer}";
     homepage = "https://scikit-learn.org";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/scikit-misc/default.nix b/pkgs/development/python-modules/scikit-misc/default.nix
index 4b995c0ba006a..5b6e9f347b3c6 100644
--- a/pkgs/development/python-modules/scikit-misc/default.nix
+++ b/pkgs/development/python-modules/scikit-misc/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, cython
-, gfortran
-, git
-, meson-python
-, pkg-config
-, blas
-, lapack
-, numpy
-, setuptools
-, wheel
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cython,
+  gfortran,
+  git,
+  meson-python,
+  pkg-config,
+  blas,
+  lapack,
+  numpy,
+  setuptools,
+  wheel,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -51,9 +51,7 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   buildInputs = [
     blas
@@ -65,22 +63,16 @@ buildPythonPackage rec {
     "-Dlapack=${lapack.pname}"
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # can not run tests from source directory
   preCheck = ''
     cd "$(mktemp -d)"
   '';
 
-  pytestFlagsArray = [
-    "--pyargs skmisc"
-  ];
+  pytestFlagsArray = [ "--pyargs skmisc" ];
 
-  pythonImportsCheck = [
-    "skmisc"
-  ];
+  pythonImportsCheck = [ "skmisc" ];
 
   meta = with lib; {
     description = "Miscellaneous tools for scientific computing";
diff --git a/pkgs/development/python-modules/scikit-optimize/default.nix b/pkgs/development/python-modules/scikit-optimize/default.nix
index 0456d3697ad25..bc5beda2b27ca 100644
--- a/pkgs/development/python-modules/scikit-optimize/default.nix
+++ b/pkgs/development/python-modules/scikit-optimize/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, isPy27
-, buildPythonPackage
-, fetchFromGitHub
-, matplotlib
-, numpy
-, scipy
-, scikit-learn
-, pyaml
-, pytestCheckHook
+{
+  lib,
+  isPy27,
+  buildPythonPackage,
+  fetchFromGitHub,
+  matplotlib,
+  numpy,
+  scipy,
+  scikit-learn,
+  pyaml,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
     pyaml
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Sequential model-based optimization toolbox";
diff --git a/pkgs/development/python-modules/scikit-posthocs/0001-increased-abs-tolerance-for-wilcoxon-test.patch b/pkgs/development/python-modules/scikit-posthocs/0001-increased-abs-tolerance-for-wilcoxon-test.patch
deleted file mode 100644
index e3fa524e5a4ff..0000000000000
--- a/pkgs/development/python-modules/scikit-posthocs/0001-increased-abs-tolerance-for-wilcoxon-test.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 02266a00ce0eb6a089e7efe07816da1aa5152fc9 Mon Sep 17 00:00:00 2001
-From: Maksim Terpilovskii <maximtrp@gmail.com>
-Date: Sun, 31 Jul 2022 12:25:14 +0300
-Subject: [PATCH] increased abs tolerance for wilcoxon test
-
----
- tests/test_posthocs.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tests/test_posthocs.py b/tests/test_posthocs.py
-index 956d808..8cc65e4 100644
---- a/tests/test_posthocs.py
-+++ b/tests/test_posthocs.py
-@@ -471,7 +471,7 @@ class TestPosthocs(unittest.TestCase):
-                               [2.857818e-06, 1.230888e-05, 1]])
- 
-         results = sp.posthoc_wilcoxon(self.df.sort_index(), val_col = 'pulse', group_col = 'kind')
--        self.assertTrue(np.allclose(results, r_results))
-+        self.assertTrue(np.allclose(results, r_results, atol=1e-4))
- 
- 
-     def test_posthoc_scheffe(self):
--- 
-2.36.1
-
diff --git a/pkgs/development/python-modules/scikit-posthocs/0002-Update-test_posthocs.py.patch b/pkgs/development/python-modules/scikit-posthocs/0002-Update-test_posthocs.py.patch
deleted file mode 100644
index fa4d6d3ececff..0000000000000
--- a/pkgs/development/python-modules/scikit-posthocs/0002-Update-test_posthocs.py.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 5416ffba3ab01aebab3909400b5a9e847022898e Mon Sep 17 00:00:00 2001
-From: Maksim Terpilovskii <maximtrp@gmail.com>
-Date: Thu, 16 Mar 2023 00:20:02 +0300
-Subject: [PATCH] Update test_posthocs.py
-
----
- tests/test_posthocs.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/tests/test_posthocs.py b/tests/test_posthocs.py
-index 8cc65e4..42ca5f3 100644
---- a/tests/test_posthocs.py
-+++ b/tests/test_posthocs.py
-@@ -71,7 +71,7 @@ class TestPosthocs(unittest.TestCase):
-         a = splt.sign_plot(x, flat=True, labels=False)
-         with self.assertRaises(ValueError):
-             splt.sign_plot(x.astype(float), flat=True, labels=False)
--        self.assertTrue(isinstance(a, ma._subplots.Axes))
-+        self.assertTrue(isinstance(a, ma._axes.Axes))
- 
-     def test_sign_plot_nonflat(self):
- 
-@@ -85,7 +85,7 @@ class TestPosthocs(unittest.TestCase):
-         with self.assertRaises(ValueError):
-             splt.sign_plot(x.astype(np.int64), labels=False)
- 
--        self.assertTrue(isinstance(a, ma._subplots.Axes) and isinstance(cbar, mpl.colorbar.ColorbarBase))
-+        self.assertTrue(isinstance(a, ma._axes.Axes) and isinstance(cbar, mpl.colorbar.ColorbarBase))
- 
-     # Outliers tests
-     def test_outliers_iqr(self):
--- 
-2.36.1
-
diff --git a/pkgs/development/python-modules/scikit-posthocs/default.nix b/pkgs/development/python-modules/scikit-posthocs/default.nix
index e8f3933299a74..7072fb03234a6 100644
--- a/pkgs/development/python-modules/scikit-posthocs/default.nix
+++ b/pkgs/development/python-modules/scikit-posthocs/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, matplotlib
-, numpy
-, pandas
-, scipy
-, seaborn
-, statsmodels
-, pytestCheckHook
-, seaborn-data
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  matplotlib,
+  numpy,
+  pandas,
+  scipy,
+  seaborn,
+  statsmodels,
+  pytestCheckHook,
+  seaborn-data,
 }:
 
 buildPythonPackage rec {
   pname = "scikit-posthocs";
   version = "0.9.0";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "maximtrp";
@@ -25,13 +26,6 @@ buildPythonPackage rec {
     hash = "sha256-sRop5DKakrZEBswzTvumn68wKqU15zM5aCLfZ/PdsFg=";
   };
 
-  patches = [
-    # Fixed on master: https://github.com/maximtrp/scikit-posthocs/commit/02266a00ce0eb6a089e7efe07816da1aa5152fc9
-    ./0001-increased-abs-tolerance-for-wilcoxon-test.patch
-    # Fixed on master: https://github.com/maximtrp/scikit-posthocs/commit/5416ffba3ab01aebab3909400b5a9e847022898e
-    ./0002-Update-test_posthocs.py.patch
-  ];
-
   nativeBuildInputs = [
     setuptools
     wheel
@@ -50,9 +44,7 @@ buildPythonPackage rec {
     # tests require to write to home directory
     export SEABORN_DATA=${seaborn-data.exercise}
   '';
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
   pythonImportsCheck = [ "scikit_posthocs" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/scikit-rf/default.nix b/pkgs/development/python-modules/scikit-rf/default.nix
index aa49911009eb8..3cbaf5f39e45e 100644
--- a/pkgs/development/python-modules/scikit-rf/default.nix
+++ b/pkgs/development/python-modules/scikit-rf/default.nix
@@ -1,72 +1,61 @@
-{ stdenv
-, lib
-, pythonOlder
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, scipy
-, pandas
-, matplotlib
-, tox
-, coverage
-, flake8
-, nbval
-, pyvisa
-, networkx
-, ipython
-, ipykernel
-, ipywidgets
-, jupyter-client
-, sphinx-rtd-theme
-, sphinx
-, nbsphinx
-, openpyxl
-, qtpy
-, pyqtgraph
-, pyqt5
-, setuptools
-, pytestCheckHook
-, pytest-cov
-, pytest-mock
+{
+  stdenv,
+  lib,
+  pythonOlder,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  scipy,
+  pandas,
+  matplotlib,
+  nbval,
+  pyvisa,
+  networkx,
+  ipython,
+  ipykernel,
+  ipywidgets,
+  jupyter-client,
+  sphinx-rtd-theme,
+  sphinx,
+  nbsphinx,
+  openpyxl,
+  setuptools,
+  pytestCheckHook,
+  pytest-mock,
 }:
 
 buildPythonPackage rec {
   pname = "scikit-rf";
-  version = "0.32.0";
+  version = "1.3.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "scikit-rf";
-    repo = pname;
-    rev = "refs/tags/v.${version}";
-    hash = "sha256-J7V4nQ8OxW4w75OyiMdUal8k5oXSn96g4w6k1+KV1Dw=";
+    repo = "scikit-rf";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-cYQDoEX33fjxekTA2COHMvcLxCFCD7g9bp3y9sE4uUU=";
   };
 
-  buildInputs = [
-    setuptools
-  ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "--cov=skrf" ""
+  '';
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
     scipy
     pandas
   ];
 
-  passthru.optional-dependencies = {
-    plot = [
-      matplotlib
-    ];
-    xlsx = [
-      openpyxl
-    ];
-    netw = [
-      networkx
-    ];
-    visa = [
-      pyvisa
-    ];
+  optional-dependencies = {
+    plot = [ matplotlib ];
+    xlsx = [ openpyxl ];
+    netw = [ networkx ];
+    visa = [ pyvisa ];
     docs = [
       ipython
       ipykernel
@@ -77,42 +66,30 @@ buildPythonPackage rec {
       nbsphinx
       openpyxl
     ];
-    qtapps = [
-      qtpy
-      pyqtgraph
-      pyqt5
-    ];
   };
 
+  env = lib.optionalAttrs stdenv.hostPlatform.isDarwin { MPLBACKEND = "Agg"; };
+
   nativeCheckInputs = [
-    tox
-    coverage
-    flake8
-    pytest-cov
     pytest-mock
     nbval
     matplotlib
     pyvisa
     openpyxl
     networkx
-  ];
-
-  checkInputs = [
     pytestCheckHook
   ];
 
   # test_calibration.py generates a divide by zero error on darwin
   # https://github.com/scikit-rf/scikit-rf/issues/972
-  disabledTestPaths =
-    lib.optional (stdenv.isAarch64 && stdenv.isDarwin)
-    "skrf/calibration/tests/test_calibration.py";
+  disabledTestPaths = lib.optional (
+    stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isDarwin
+  ) "skrf/calibration/tests/test_calibration.py";
 
-  pythonImportsCheck = [
-    "skrf"
-  ];
+  pythonImportsCheck = [ "skrf" ];
 
   meta = with lib; {
-    description = "A Python library for RF/Microwave engineering";
+    description = "Python library for RF/Microwave engineering";
     homepage = "https://scikit-rf.org/";
     changelog = "https://github.com/scikit-rf/scikit-rf/releases/tag/v${version}";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/scikit-survival/default.nix b/pkgs/development/python-modules/scikit-survival/default.nix
index 003bc4882b91d..78e58877d5160 100644
--- a/pkgs/development/python-modules/scikit-survival/default.nix
+++ b/pkgs/development/python-modules/scikit-survival/default.nix
@@ -1,18 +1,19 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, cython
-, ecos
-, joblib
-, numexpr
-, numpy
-, osqp
-, pandas
-, setuptools-scm
-, scikit-learn
-, scipy
-, pytestCheckHook
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cython,
+  ecos,
+  joblib,
+  numexpr,
+  numpy,
+  osqp,
+  pandas,
+  setuptools-scm,
+  scikit-learn,
+  scipy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -60,19 +61,20 @@ buildPythonPackage rec {
   postCheck = "popd";
 
   # very long tests, unnecessary for a leaf package
-  disabledTests = [
-    "test_coxph"
-    "test_datasets"
-    "test_ensemble_selection"
-    "test_minlip"
-    "test_pandas_inputs"
-    "test_survival_svm"
-    "test_tree"
-  ] ++ lib.optional (stdenv.isDarwin && stdenv.isAarch64)
-    # floating point mismatch on aarch64
-    # 27079905.88052468 to far from 27079905.880496684
-    "test_coxnet"
-  ;
+  disabledTests =
+    [
+      "test_coxph"
+      "test_datasets"
+      "test_ensemble_selection"
+      "test_minlip"
+      "test_pandas_inputs"
+      "test_survival_svm"
+      "test_tree"
+    ]
+    ++ lib.optional (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64)
+      # floating point mismatch on aarch64
+      # 27079905.88052468 to far from 27079905.880496684
+      "test_coxnet";
 
   meta = with lib; {
     description = "Survival analysis built on top of scikit-learn";
diff --git a/pkgs/development/python-modules/scikit-tda/default.nix b/pkgs/development/python-modules/scikit-tda/default.nix
index c4730484f7265..fcdb7a495bc55 100644
--- a/pkgs/development/python-modules/scikit-tda/default.nix
+++ b/pkgs/development/python-modules/scikit-tda/default.nix
@@ -1,33 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, scipy
-, scikit-learn
-, matplotlib
-, numba
-, umap-learn
-, cython
-, ripser
-, persim
-, pillow
-, kmapper
-, tadasets
-, pytest
-, isPy27
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  scipy,
+  scikit-learn,
+  matplotlib,
+  numba,
+  umap-learn,
+  cython,
+  ripser,
+  persim,
+  pillow,
+  kmapper,
+  tadasets,
+  pytest,
+  isPy27,
 }:
 
 buildPythonPackage rec {
   pname = "scikit-tda";
-  version = "1.0.0";
+  version = "1.1.1";
   format = "setuptools";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "scikit-tda";
     repo = "scikit-tda";
-    rev = "v${version}";
-    sha256 = "0yhmf5jmxywyj6l9q0rfv9r8wpdk063fvvfnb4azwwccblgz37rj";
+    rev = "refs/tags/v${version}";
+    sha256 = "sha256-sf7UxCFJZlIMGOgNFwoh/30U7xsBCZuJ3eumsjEelMc=";
   };
 
   propagatedBuildInputs = [
@@ -45,9 +46,7 @@ buildPythonPackage rec {
     tadasets
   ];
 
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
   checkPhase = ''
     pytest test
diff --git a/pkgs/development/python-modules/scikits-odes/default.nix b/pkgs/development/python-modules/scikits-odes/default.nix
index 4d56ab6fa944c..f5ddb753ffaf0 100644
--- a/pkgs/development/python-modules/scikits-odes/default.nix
+++ b/pkgs/development/python-modules/scikits-odes/default.nix
@@ -1,23 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cython
-, enum34
-, gfortran
-, isPy27
-, isPy3k
-, numpy
-, pytest
-, python
-, scipy
-, sundials
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonAtLeast,
+  cython,
+  enum34,
+  gfortran,
+  isPy27,
+  isPy3k,
+  numpy,
+  pytest,
+  python,
+  scipy,
+  sundials,
 }:
 
 buildPythonPackage rec {
   pname = "scikits.odes";
   version = "2.7.0";
 
-  disabled = isPy27;
+  # https://github.com/bmcage/odes/issues/130
+  disabled = isPy27 || pythonAtLeast "3.12";
 
   src = fetchPypi {
     inherit pname version;
@@ -44,10 +47,14 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A scikit offering extra ode/dae solvers, as an extension to what is available in scipy";
+    description = "Scikit offering extra ode/dae solvers, as an extension to what is available in scipy";
     homepage = "https://github.com/bmcage/odes";
     license = licenses.bsd3;
     maintainers = with maintainers; [ idontgetoutmuch ];
-    platforms = [ "aarch64-linux" "x86_64-linux" "x86_64-darwin" ];
+    platforms = [
+      "aarch64-linux"
+      "x86_64-linux"
+      "x86_64-darwin"
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/scikits-samplerate/default.nix b/pkgs/development/python-modules/scikits-samplerate/default.nix
deleted file mode 100644
index 5a437c07f46bb..0000000000000
--- a/pkgs/development/python-modules/scikits-samplerate/default.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-{ lib
-, buildPythonPackage
-, numpy
-, libsamplerate
-, fetchFromGitHub
-}:
-
-buildPythonPackage {
-  pname = "scikits-samplerate";
-  version = "0.3.3";
-  format = "setuptools";
-
-  src = fetchFromGitHub {
-    owner = "cournape";
-    repo = "samplerate";
-    rev = "a536c97eb2d6195b5f266ea3cc3a35364c4c2210";
-    hash = "sha256-7x03Q6VXfP9p8HCk15IDZ9HeqTyi5F1AlGX/otdh8VU=";
-  };
-
-  buildInputs =  [
-    libsamplerate
-  ];
-
-  propagatedBuildInputs = [
-    numpy
-  ];
-
-  preConfigure = ''
-     cat > site.cfg << END
-     [samplerate]
-     library_dirs=${libsamplerate.out}/lib
-     include_dirs=${lib.getDev libsamplerate}/include
-     END
-  '';
-
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://github.com/cournape/samplerate";
-    description = "High quality sampling rate convertion from audio data in numpy arrays";
-    license = licenses.gpl2;
-  };
-
-}
diff --git a/pkgs/development/python-modules/scim2-filter-parser/default.nix b/pkgs/development/python-modules/scim2-filter-parser/default.nix
index f3d37df7735cd..4ea0d1a6c7d5d 100644
--- a/pkgs/development/python-modules/scim2-filter-parser/default.nix
+++ b/pkgs/development/python-modules/scim2-filter-parser/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, django
-, sly
-, mock
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  poetry-core,
+  django,
+  sly,
+  mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -30,28 +31,20 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace "poetry.masonry.api" "poetry.core.masonry.api"
   '';
 
-  propagatedBuildInputs = [
-    sly
-  ];
+  propagatedBuildInputs = [ sly ];
 
   passthru.optional-dependencies = {
-    django-query = [
-      django
-    ];
+    django-query = [ django ];
   };
 
-  pythonImportsCheck = [
-    "scim2_filter_parser"
-  ];
+  pythonImportsCheck = [ "scim2_filter_parser" ];
 
   nativeCheckInputs = [
     mock
@@ -59,7 +52,7 @@ buildPythonPackage rec {
   ] ++ passthru.optional-dependencies.django-query;
 
   meta = with lib; {
-    description = "A customizable parser/transpiler for SCIM2.0 filters";
+    description = "Customizable parser/transpiler for SCIM2.0 filters";
     homepage = "https://github.com/15five/scim2-filter-parser";
     changelog = "https://github.com/15five/scim2-filter-parser/blob/${version}/CHANGELOG.rst";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/scipy/default.nix b/pkgs/development/python-modules/scipy/default.nix
index 64e261c374039..4677b47f1188f 100644
--- a/pkgs/development/python-modules/scipy/default.nix
+++ b/pkgs/development/python-modules/scipy/default.nix
@@ -1,30 +1,44 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, fetchpatch
-, fetchurl
-, writeText
-, python
-, pythonOlder
-, buildPythonPackage
-, cython
-, gfortran
-, meson-python
-, nukeReferences
-, pkg-config
-, pythran
-, wheel
-, setuptools
-, hypothesis
-, pytest7CheckHook
-, pytest-xdist
-, numpy
-, pybind11
-, pooch
-, libxcrypt
-, xsimd
-, blas
-, lapack
+{
+  lib,
+  stdenv,
+  fetchurl,
+  writeText,
+  python,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+
+  # build-system
+  cython,
+  gfortran,
+  meson-python,
+  nukeReferences,
+  pythran,
+  pkg-config,
+  setuptools,
+  xcbuild,
+
+  # buildInputs
+  # Upstream has support for using Darwin's Accelerate package. However this
+  # requires a Darwin user to work on a nice way to do that via an override.
+  # See:
+  # https://github.com/scipy/scipy/blob/v1.14.0/scipy/meson.build#L194-L211
+  blas,
+  lapack,
+  pybind11,
+  pooch,
+  xsimd,
+
+  # dependencies
+  numpy,
+
+  # tests
+  hypothesis,
+  pytest7CheckHook,
+  pytest-xdist,
+
+  # Reverse dependency
+  sage,
 }:
 
 let
@@ -34,15 +48,16 @@ let
   #     nix-shell maintainers/scripts/update.nix --argstr package python3.pkgs.scipy
   #
   # The update script uses sed regexes to replace them with the updated hashes.
-  version = "1.13.0";
-  srcHash = "sha256-HaYk92hOREHMOXppK+Bs9DrBu9KUVUsZ0KV+isTofUo=";
+  version = "1.14.0";
+  srcHash = "sha256-rNplvbDExmMfcPuvhs+y9j5/9G6QR1GdMgQLty6oi2c=";
   datasetsHashes = {
     ascent = "1qjp35ncrniq9rhzb14icwwykqg2208hcssznn3hz27w39615kh3";
     ecg = "1bwbjp43b7znnwha5hv6wiz3g0bhwrpqpi75s12zidxrbwvd62pj";
     face = "11i8x29h80y7hhyqhil1fg8mxag5f827g33lhnsf44qk116hp2wx";
   };
   datasets = lib.mapAttrs (
-    d: hash: fetchurl {
+    d: hash:
+    fetchurl {
       url = "https://raw.githubusercontent.com/scipy/dataset-${d}/main/${d}.dat";
       sha256 = hash;
     }
@@ -50,19 +65,20 @@ let
   # Additional cross compilation related properties that scipy reads in scipy/meson.build
   crossFileScipy = writeText "cross-file-scipy.conf" ''
     [properties]
-    numpy-include-dir = '${numpy}/${python.sitePackages}/numpy/core/include'
+    numpy-include-dir = '${numpy.coreIncludeDir}'
     pythran-include-dir = '${pythran}/${python.sitePackages}/pythran'
     host-python-path = '${python.interpreter}'
     host-python-version = '${python.pythonVersion}'
   '';
-in buildPythonPackage {
+in
+buildPythonPackage {
   inherit pname version;
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "scipy";
-    repo = pname;
-    rev = "v${version}";
+    repo = "scipy";
+    rev = "refs/tags/v${version}";
     hash = srcHash;
     fetchSubmodules = true;
   };
@@ -72,16 +88,8 @@ in buildPythonPackage {
     (fetchpatch {
       url = "https://github.com/scipy/scipy/commit/dd50ac9d98dbb70625333a23e3a90e493228e3be.patch";
       hash = "sha256-Vf6/hhwu6X5s8KWhq8bUZKtSkdVu/GtEpGtj8Olxe7s=";
-      excludes = [
-        "doc/source/dev/contributor/meson_advanced.rst"
-      ];
+      excludes = [ "doc/source/dev/contributor/meson_advanced.rst" ];
     })
-    # Fix for https://github.com/scipy/scipy/issues/20300 until 1.13.1 is
-    # released. Patch is based upon:
-    # https://github.com/scipy/pocketfft/commit/9367142748fcc9696a1c9e5a99b76ed9897c9daa
-    # Couldn't use fetchpatch because it is a submodule of scipy, and
-    # extraPrefix doesn't fit this purpose.
-    ./pocketfft-aligned_alloc.patch
   ];
 
   # Upstream says in a comment in their pyproject.toml that building against
@@ -91,18 +99,26 @@ in buildPythonPackage {
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace-fail 'numpy>=2.0.0rc1,' 'numpy' \
+      --replace-fail "pybind11>=2.12.0,<2.13.0" "pybind11>=2.12.0" \
   '';
 
-  nativeBuildInputs = [
-    cython
-    gfortran
-    meson-python
-    nukeReferences
-    pythran
-    pkg-config
-    wheel
-    setuptools
-  ];
+  build-system =
+    [
+      cython
+      gfortran
+      meson-python
+      nukeReferences
+      pythran
+      pkg-config
+      setuptools
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Minimal version required according to:
+      # https://github.com/scipy/scipy/blob/v1.14.0/scipy/meson.build#L185-L188
+      (xcbuild.override {
+        sdkVer = "13.3";
+      })
+    ];
 
   buildInputs = [
     blas
@@ -110,11 +126,9 @@ in buildPythonPackage {
     pybind11
     pooch
     xsimd
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    libxcrypt
   ];
 
-  propagatedBuildInputs = [ numpy ];
+  dependencies = [ numpy ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -127,7 +141,7 @@ in buildPythonPackage {
 
   # The following tests are broken on aarch64-darwin with newer compilers and library versions.
   # See https://github.com/scipy/scipy/issues/18308
-  disabledTests = lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
+  disabledTests = lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
     "test_a_b_neg_int_after_euler_hypergeometric_transformation"
     "test_dst4_definition_ortho"
     "test_load_mat4_le"
@@ -136,20 +150,25 @@ in buildPythonPackage {
     "test_uint64_max"
   ];
 
-  doCheck = !(stdenv.isx86_64 && stdenv.isDarwin);
-
-  preConfigure = ''
-    # Helps parallelization a bit
-    export NPY_NUM_BUILD_JOBS=$NIX_BUILD_CORES
-    # We download manually the datasets and this variable tells the pooch
-    # library where these files are cached. See also:
-    # https://github.com/scipy/scipy/pull/18518#issuecomment-1562350648 And at:
-    # https://github.com/scipy/scipy/pull/17965#issuecomment-1560759962
-    export XDG_CACHE_HOME=$PWD; export HOME=$(mktemp -d); mkdir scipy-data
-  '' + (lib.concatStringsSep "\n" (lib.mapAttrsToList (d: dpath:
-    # Actually copy the datasets
-    "cp ${dpath} scipy-data/${d}.dat"
-  ) datasets));
+  doCheck = !(stdenv.hostPlatform.isx86_64 && stdenv.hostPlatform.isDarwin);
+
+  preConfigure =
+    ''
+      # Helps parallelization a bit
+      export NPY_NUM_BUILD_JOBS=$NIX_BUILD_CORES
+      # We download manually the datasets and this variable tells the pooch
+      # library where these files are cached. See also:
+      # https://github.com/scipy/scipy/pull/18518#issuecomment-1562350648 And at:
+      # https://github.com/scipy/scipy/pull/17965#issuecomment-1560759962
+      export XDG_CACHE_HOME=$PWD; export HOME=$(mktemp -d); mkdir scipy-data
+    ''
+    + (lib.concatStringsSep "\n" (
+      lib.mapAttrsToList (
+        d: dpath:
+        # Actually copy the datasets
+        "cp ${dpath} scipy-data/${d}.dat"
+      ) datasets
+    ));
 
   mesonFlags = [
     "-Dblas=${blas.pname}"
@@ -168,7 +187,9 @@ in buildPythonPackage {
   #
   #         ldr     x0, [x0, ___stack_chk_guard];momd
   #
-  hardeningDisable = lib.optionals (stdenv.isAarch64 && stdenv.isDarwin) [ "stackprotector" ];
+  hardeningDisable = lib.optionals (stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isDarwin) [
+    "stackprotector"
+  ];
 
   # remove references to dev dependencies
   postInstall = ''
@@ -185,24 +206,27 @@ in buildPythonPackage {
 
   passthru = {
     inherit blas;
-    updateScript = [
-      ./update.sh
-      # Pass it this file name as argument
-      (builtins.unsafeGetAttrPos "pname" python.pkgs.scipy).file
-    ]
-    # Pass it the names of the datasets to update their hashes
-    ++ (builtins.attrNames datasetsHashes)
-    ;
+    updateScript =
+      [
+        ./update.sh
+        # Pass it this file name as argument
+        (builtins.unsafeGetAttrPos "pname" python.pkgs.scipy).file
+      ]
+      # Pass it the names of the datasets to update their hashes
+      ++ (builtins.attrNames datasetsHashes);
+    tests = {
+      inherit sage;
+    };
   };
 
   SCIPY_USE_G77_ABI_WRAPPER = 1;
 
-  meta = with lib; {
+  meta = {
     changelog = "https://github.com/scipy/scipy/releases/tag/v${version}";
     description = "SciPy (pronounced 'Sigh Pie') is open-source software for mathematics, science, and engineering";
     downloadPage = "https://github.com/scipy/scipy";
     homepage = "https://www.scipy.org/";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ doronbehar ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ doronbehar ];
   };
 }
diff --git a/pkgs/development/python-modules/scipy/pocketfft-aligned_alloc.patch b/pkgs/development/python-modules/scipy/pocketfft-aligned_alloc.patch
deleted file mode 100644
index 80b047c7061c5..0000000000000
--- a/pkgs/development/python-modules/scipy/pocketfft-aligned_alloc.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From fbe3c10d117de98d80a86a10f76d4cd74efc55a8 Mon Sep 17 00:00:00 2001
-From: Martin Reinecke <martin@mpa-garching.mpg.de>
-Date: Fri, 22 Mar 2024 10:53:05 +0100
-Subject: [PATCH] unconditionaly disable use of aligned_alloc
-
----
- pocketfft_hdronly.h | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/scipy/_lib/pocketfft/pocketfft_hdronly.h b/scipy/_lib/pocketfft/pocketfft_hdronly.h
-index 6c98f2d..66eea06 100644
---- a/scipy/_lib/pocketfft/pocketfft_hdronly.h
-+++ b/scipy/_lib/pocketfft/pocketfft_hdronly.h
-@@ -152,11 +152,11 @@ template<> struct VLEN<double> { static constexpr size_t val=2; };
- #endif
- #endif
- 
--// the __MINGW32__ part in the conditional below works around the problem that
--// the standard C++ library on Windows does not provide aligned_alloc() even
--// though the MinGW compiler and MSVC may advertise C++17 compliance.
--// aligned_alloc is only supported from MacOS 10.15.
--#if (__cplusplus >= 201703L) && (!defined(__MINGW32__)) && (!defined(_MSC_VER)) && (__MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_15)
-+// std::aligned_alloc is a bit cursed ... it doesn't exist on MacOS < 10.15
-+// and in musl, and other OSes seem to have even more peculiarities.
-+// Let's unconditionally work around it for now.
-+# if 0
-+//#if (__cplusplus >= 201703L) && (!defined(__MINGW32__)) && (!defined(_MSC_VER)) && (__MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_15)
- inline void *aligned_alloc(size_t align, size_t size)
-   {
-   // aligned_alloc() requires that the requested size is a multiple of "align"
diff --git a/pkgs/development/python-modules/scmrepo/default.nix b/pkgs/development/python-modules/scmrepo/default.nix
index e902cac511017..6c39cc2af8b62 100644
--- a/pkgs/development/python-modules/scmrepo/default.nix
+++ b/pkgs/development/python-modules/scmrepo/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, asyncssh
-, buildPythonPackage
-, dulwich
-, dvc-http
-, dvc-objects
-, fetchFromGitHub
-, fsspec
-, funcy
-, gitpython
-, pathspec
-, pygit2
-, pygtrie
-, pythonOlder
-, setuptools
-, setuptools-scm
-, shortuuid
+{
+  lib,
+  asyncssh,
+  buildPythonPackage,
+  dulwich,
+  dvc-http,
+  dvc-objects,
+  fetchFromGitHub,
+  fsspec,
+  funcy,
+  gitpython,
+  pathspec,
+  pygit2,
+  pygtrie,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  shortuuid,
 }:
 
 buildPythonPackage rec {
   pname = "scmrepo";
-  version = "3.3.1";
+  version = "3.3.7";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -28,7 +29,7 @@ buildPythonPackage rec {
     owner = "iterative";
     repo = "scmrepo";
     rev = "refs/tags/${version}";
-    hash = "sha256-swv5uWsyM4mEXlurizUewnbdAOtjWgvzCO9IPfz2ZPE=";
+    hash = "sha256-Z9HUeZPsskEPTwRRwK4z4p2Lv7Ukg7du6OAxvDwEcPc=";
   };
 
   build-system = [
@@ -53,9 +54,7 @@ buildPythonPackage rec {
   # Requires a running Docker instance
   doCheck = false;
 
-  pythonImportsCheck = [
-    "scmrepo"
-  ];
+  pythonImportsCheck = [ "scmrepo" ];
 
   meta = with lib; {
     description = "SCM wrapper and fsspec filesystem";
diff --git a/pkgs/development/python-modules/scooby/default.nix b/pkgs/development/python-modules/scooby/default.nix
index 869a1a5895014..90be3a6538722 100644
--- a/pkgs/development/python-modules/scooby/default.nix
+++ b/pkgs/development/python-modules/scooby/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, pytest-console-scripts
-, pytestCheckHook
-, pythonOlder
-, pyvips
-, scipy
-, setuptools-scm
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  pytest-console-scripts,
+  pytestCheckHook,
+  pythonOlder,
+  pyvips,
+  scipy,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "scooby";
-  version = "0.9.2";
+  version = "0.10.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -22,12 +23,10 @@ buildPythonPackage rec {
     owner = "banesullivan";
     repo = "scooby";
     rev = "refs/tags/v${version}";
-    hash = "sha256-x6GPRo0OuXJtN41urviY0joZKzq0SQjUdRBpIylgcXY=";
+    hash = "sha256-KXhLN8KPz61l+4v88+kVSvodT6OXDJ3Pw9A9aFWSqYE=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   nativeCheckInputs = [
     beautifulsoup4
@@ -42,9 +41,7 @@ buildPythonPackage rec {
     export PATH="$PATH:$out/bin";
   '';
 
-  pythonImportsCheck = [
-    "scooby"
-  ];
+  pythonImportsCheck = [ "scooby" ];
 
   disabledTests = [
     # Tests have additions requirements (e.g., time and module)
@@ -58,7 +55,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     changelog = "https://github.com/banesullivan/scooby/releases/tag/v${version}";
-    description = "A lightweight tool for reporting Python package versions and hardware resources";
+    description = "Lightweight tool for reporting Python package versions and hardware resources";
     mainProgram = "scooby";
     homepage = "https://github.com/banesullivan/scooby";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/scour/default.nix b/pkgs/development/python-modules/scour/default.nix
index 2b757d4dc3a2a..815a267c03916 100644
--- a/pkgs/development/python-modules/scour/default.nix
+++ b/pkgs/development/python-modules/scour/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, six }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+}:
 
 buildPythonPackage rec {
   pname = "scour";
@@ -16,10 +21,10 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "An SVG Optimizer / Cleaner ";
+    description = "SVG Optimizer / Cleaner";
     mainProgram = "scour";
-    homepage    = "https://github.com/scour-project/scour";
-    license     = licenses.asl20;
+    homepage = "https://github.com/scour-project/scour";
+    license = licenses.asl20;
     maintainers = with maintainers; [ worldofpeace ];
   };
 }
diff --git a/pkgs/development/python-modules/scp/default.nix b/pkgs/development/python-modules/scp/default.nix
index 3be97953547f5..cf95431301a7c 100644
--- a/pkgs/development/python-modules/scp/default.nix
+++ b/pkgs/development/python-modules/scp/default.nix
@@ -1,23 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, paramiko
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  paramiko,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "scp";
-  version = "0.14.5";
+  version = "0.15.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ZPABWJmz0hLLgIjn1A668Ghoif8OJD1cEkLv6LUPBT4=";
+    hash = "sha256-8bIumTISPM8X7r8Z4JU8bpFI9Yn5PZG4cpQaaWMFyD8=";
   };
 
-  propagatedBuildInputs = [
-    paramiko
-  ];
+  propagatedBuildInputs = [ paramiko ];
 
   checkPhase = ''
     SCPPY_PORT=10022 ${python.interpreter} test.py
diff --git a/pkgs/development/python-modules/scramp/default.nix b/pkgs/development/python-modules/scramp/default.nix
index aa6013589cd33..63014b75aa347 100644
--- a/pkgs/development/python-modules/scramp/default.nix
+++ b/pkgs/development/python-modules/scramp/default.nix
@@ -1,19 +1,19 @@
-{ lib
-, asn1crypto
-, buildPythonPackage
-, fetchFromGitHub
-, importlib-metadata
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  asn1crypto,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  versioningit,
 }:
 
 buildPythonPackage rec {
   pname = "scramp";
-  version = "1.4.4";
-  format = "pyproject";
+  version = "1.4.5";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -21,19 +21,15 @@ buildPythonPackage rec {
     owner = "tlocke";
     repo = "scramp";
     rev = version;
-    hash = "sha256-WOyv1fLSXG7p+WKs2QSwlsh8FSK/lxp6I1hPY0VIkKo=";
+    hash = "sha256-KpododRJ+CYRGBR7Sr5cVBhJvUwh9YmPERd/DAJqEcY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
+  build-system = [
+    hatchling
+    versioningit
   ];
 
-  propagatedBuildInputs = [
-    asn1crypto
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  dependencies = [ asn1crypto ];
 
   nativeCheckInputs = [
     pytest-mock
@@ -47,18 +43,14 @@ buildPythonPackage rec {
     sed -i "/dynamic =/d" pyproject.toml
   '';
 
-  pythonImportsCheck = [
-    "scramp"
-  ];
+  pythonImportsCheck = [ "scramp" ];
 
-  disabledTests = [
-    "test_readme"
-  ];
+  disabledTests = [ "test_readme" ];
 
   meta = with lib; {
     description = "Implementation of the SCRAM authentication protocol";
     homepage = "https://github.com/tlocke/scramp";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/scrap-engine/default.nix b/pkgs/development/python-modules/scrap-engine/default.nix
index 785b7280c746f..d1ca60e1bf435 100644
--- a/pkgs/development/python-modules/scrap-engine/default.nix
+++ b/pkgs/development/python-modules/scrap-engine/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +18,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     maintainers = with maintainers; [ fgaz ];
-    description = "A 2D ascii game engine for the terminal";
+    description = "2D ascii game engine for the terminal";
     homepage = "https://github.com/lxgr-linux/scrap_engine";
     license = licenses.gpl3Only;
   };
diff --git a/pkgs/development/python-modules/scrapy-deltafetch/default.nix b/pkgs/development/python-modules/scrapy-deltafetch/default.nix
index 755b3f02df658..fa2c1ab63c40e 100644
--- a/pkgs/development/python-modules/scrapy-deltafetch/default.nix
+++ b/pkgs/development/python-modules/scrapy-deltafetch/default.nix
@@ -1,25 +1,33 @@
-{ lib, fetchPypi, buildPythonPackage, scrapy, bsddb3 }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  scrapy,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "scrapy-deltafetch";
   version = "2.0.1";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "13f7968bd0ffae133e2a1dede215e683b8c95285f046260603a5c3e25f2d57b0";
+    hash = "sha256-E/eWi9D/rhM+Kh3t4hXmg7jJUoXwRiYGA6XD4l8tV7A=";
   };
 
-  propagatedBuildInputs = [ bsddb3 scrapy ];
+  dependencies = [ scrapy ];
+
+  build-system = [ setuptools ];
 
   # no tests
   doCheck = false;
   pythonImportsCheck = [ "scrapy_deltafetch" ];
 
-  meta = with lib; {
+  meta = {
     description = "Scrapy spider middleware to ignore requests to pages containing items seen in previous crawls";
     homepage = "https://github.com/scrapy-plugins/scrapy-deltafetch";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ evanjs ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ evanjs ];
   };
 }
diff --git a/pkgs/development/python-modules/scrapy-fake-useragent/default.nix b/pkgs/development/python-modules/scrapy-fake-useragent/default.nix
index f4474235cd237..36163e8a0c91e 100644
--- a/pkgs/development/python-modules/scrapy-fake-useragent/default.nix
+++ b/pkgs/development/python-modules/scrapy-fake-useragent/default.nix
@@ -1,18 +1,21 @@
-{ lib
-, buildPythonPackage
-, fake-useragent
-, faker
-, fetchFromGitHub
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, scrapy
+{
+  lib,
+  buildPythonPackage,
+  setuptools,
+  fake-useragent,
+  faker,
+  fetchFromGitHub,
+  pytest-cov-stub,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  scrapy,
 }:
 
 buildPythonPackage rec {
   pname = "scrapy-fake-useragent";
   version = "1.4.4";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -26,23 +29,24 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace pytest.ini \
-      --replace " --cov=scrapy_fake_useragent --cov-report=term --cov-report=html --fulltrace" ""
+      --replace-fail " --fulltrace" ""
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     fake-useragent
     faker
   ];
 
   nativeCheckInputs = [
+    pytest-cov-stub
     pytest-mock
     pytestCheckHook
     scrapy
   ];
 
-  pythonImportsCheck = [
-    "scrapy_fake_useragent"
-  ];
+  pythonImportsCheck = [ "scrapy_fake_useragent" ];
 
   disabledTests = [
     # AttributeError: 'RetryUserAgentMiddleware' object has no attribute 'EXCEPTIONS_TO_RETRY'
@@ -54,6 +58,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/alecxe/scrapy-fake-useragent";
     changelog = "https://github.com/alecxe/scrapy-fake-useragent/blob/master/CHANGELOG.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/scrapy-splash/default.nix b/pkgs/development/python-modules/scrapy-splash/default.nix
index da37c1712abad..f3de180ef9487 100644
--- a/pkgs/development/python-modules/scrapy-splash/default.nix
+++ b/pkgs/development/python-modules/scrapy-splash/default.nix
@@ -1,4 +1,10 @@
-{ lib, fetchPypi, buildPythonPackage, scrapy, six }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  scrapy,
+  six,
+}:
 
 buildPythonPackage rec {
   pname = "scrapy-splash";
@@ -10,7 +16,10 @@ buildPythonPackage rec {
     hash = "sha256-7PEwJk3AjgxGHIYH7K13dGimStAd7bJinA+BvV/NcpU=";
   };
 
-  propagatedBuildInputs = [ scrapy six ];
+  propagatedBuildInputs = [
+    scrapy
+    six
+  ];
 
   # no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/scrapy/default.nix b/pkgs/development/python-modules/scrapy/default.nix
index 68bb9460c14fd..010481da31e8a 100644
--- a/pkgs/development/python-modules/scrapy/default.nix
+++ b/pkgs/development/python-modules/scrapy/default.nix
@@ -1,48 +1,57 @@
-{ lib
-, stdenv
-, botocore
-, buildPythonPackage
-, cryptography
-, cssselect
-, fetchPypi
-, glibcLocales
-, installShellFiles
-, itemadapter
-, itemloaders
-, jmespath
-, lxml
-, packaging
-, parsel
-, pexpect
-, protego
-, pydispatcher
-, pyopenssl
-, pytestCheckHook
-, pythonOlder
-, queuelib
-, service-identity
-, setuptools
-, sybil
-, testfixtures
-, tldextract
-, twisted
-, w3lib
-, zope-interface
+{
+  lib,
+  stdenv,
+  botocore,
+  buildPythonPackage,
+  cryptography,
+  cssselect,
+  defusedxml,
+  fetchFromGitHub,
+  glibcLocales,
+  installShellFiles,
+  itemadapter,
+  itemloaders,
+  jmespath,
+  lxml,
+  packaging,
+  parsel,
+  pexpect,
+  protego,
+  pydispatcher,
+  pyopenssl,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  queuelib,
+  service-identity,
+  setuptools,
+  sybil,
+  testfixtures,
+  tldextract,
+  twisted,
+  uvloop,
+  w3lib,
+  zope-interface,
 }:
 
 buildPythonPackage rec {
   pname = "scrapy";
-  version = "2.11.1";
+  version = "2.11.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit version;
-    pname = "Scrapy";
-    hash = "sha256-czoDnHQj5StpvygQtTMgk9TkKoSEYDWcB7Auz/j3Pr4=";
+  src = fetchFromGitHub {
+    owner = "scrapy";
+    repo = "scrapy";
+    rev = "refs/tags/${version}";
+    hash = "sha256-EaO1kQ3VSTwEW+r0kSKycOxHNTPwwCVjch1ZBrTU0qQ=";
   };
 
+  pythonRelaxDeps = [
+    "defusedxml"
+  ];
+
   nativeBuildInputs = [
     installShellFiles
     setuptools
@@ -51,6 +60,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     cryptography
     cssselect
+    defusedxml
     itemadapter
     itemloaders
     lxml
@@ -72,9 +82,11 @@ buildPythonPackage rec {
     glibcLocales
     jmespath
     pexpect
+    pytest-xdist
     pytestCheckHook
     sybil
     testfixtures
+    uvloop
   ];
 
   LC_ALL = "en_US.UTF-8";
@@ -87,45 +99,34 @@ buildPythonPackage rec {
     "docs"
   ];
 
-  disabledTests = [
-    # It's unclear if the failures are related to libxml2, https://github.com/NixOS/nixpkgs/pull/123890
-    "test_nested_css"
-    "test_nested_xpath"
-    "test_flavor_detection"
-    "test_follow_whitespace"
-    # Requires network access
-    "AnonymousFTPTestCase"
-    "FTPFeedStorageTest"
-    "FeedExportTest"
-    "test_custom_asyncio_loop_enabled_true"
-    "test_custom_loop_asyncio"
-    "test_custom_loop_asyncio_deferred_signal"
-    "FileFeedStoragePreFeedOptionsTest"  # https://github.com/scrapy/scrapy/issues/5157
-    "test_persist"
-    "test_timeout_download_from_spider_nodata_rcvd"
-    "test_timeout_download_from_spider_server_hangs"
-    "test_unbounded_response"
-    "CookiesMiddlewareTest"
-    # Depends on uvloop
-    "test_asyncio_enabled_reactor_different_loop"
-    "test_asyncio_enabled_reactor_same_loop"
-    # Fails with AssertionError
-    "test_peek_fifo"
-    "test_peek_one_element"
-    "test_peek_lifo"
-    "test_callback_kwargs"
-    # Test fails on Hydra
-    "test_start_requests_laziness"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_xmliter_encoding"
-    "test_download"
-    "test_reactor_default_twisted_reactor_select"
-    "URIParamsSettingTest"
-    "URIParamsFeedOptionTest"
-    # flaky on darwin-aarch64
-    "test_fixed_delay"
-    "test_start_requests_laziness"
-  ];
+  disabledTests =
+    [
+      # Requires network access
+      "AnonymousFTPTestCase"
+      "FTPFeedStorageTest"
+      "FeedExportTest"
+      "test_custom_asyncio_loop_enabled_true"
+      "test_custom_loop_asyncio"
+      "test_custom_loop_asyncio_deferred_signal"
+      "FileFeedStoragePreFeedOptionsTest" # https://github.com/scrapy/scrapy/issues/5157
+      "test_persist"
+      "test_timeout_download_from_spider_nodata_rcvd"
+      "test_timeout_download_from_spider_server_hangs"
+      "test_unbounded_response"
+      "CookiesMiddlewareTest"
+      # Test fails on Hydra
+      "test_start_requests_laziness"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      "test_xmliter_encoding"
+      "test_download"
+      "test_reactor_default_twisted_reactor_select"
+      "URIParamsSettingTest"
+      "URIParamsFeedOptionTest"
+      # flaky on darwin-aarch64
+      "test_fixed_delay"
+      "test_start_requests_laziness"
+    ];
 
   postInstall = ''
     installManPage extras/scrapy.1
@@ -134,9 +135,7 @@ buildPythonPackage rec {
       --bash extras/scrapy_bash_completion
   '';
 
-  pythonImportsCheck = [
-    "scrapy"
-  ];
+  pythonImportsCheck = [ "scrapy" ];
 
   __darwinAllowLocalNetworking = true;
 
diff --git a/pkgs/development/python-modules/screed/default.nix b/pkgs/development/python-modules/screed/default.nix
index dd5a637e87c18..68dfdfb88c763 100644
--- a/pkgs/development/python-modules/screed/default.nix
+++ b/pkgs/development/python-modules/screed/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, setuptools-scm
-, pytestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
+  setuptools-scm,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -31,7 +32,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A simple read-only sequence database, designed for short reads";
+    description = "Simple read-only sequence database, designed for short reads";
     mainProgram = "screed";
     homepage = "https://pypi.org/project/screed/";
     maintainers = with maintainers; [ luizirber ];
diff --git a/pkgs/development/python-modules/screeninfo/default.nix b/pkgs/development/python-modules/screeninfo/default.nix
index 40479baca0d16..9f1a6c3a6e241 100644
--- a/pkgs/development/python-modules/screeninfo/default.nix
+++ b/pkgs/development/python-modules/screeninfo/default.nix
@@ -1,13 +1,14 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, libX11
-, libXinerama
-, libXrandr
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  libX11,
+  libXinerama,
+  libXrandr,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-TEy4wff0eRRkX98yK9054d33Tm6G6qWrd9Iv+ITcFmA=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   postPatch = ''
     substituteInPlace screeninfo/enumerators/xinerama.py \
@@ -37,9 +36,7 @@ buildPythonPackage rec {
       --replace 'load_library("Xrandr")' 'ctypes.cdll.LoadLibrary("${libXrandr}/lib/libXrandr.so")'
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # We don't have a screen
@@ -49,7 +46,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "screeninfo" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     description = "Fetch location and size of physical screens";
     homepage = "https://github.com/rr-/screeninfo";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/screenlogicpy/default.nix b/pkgs/development/python-modules/screenlogicpy/default.nix
index 9245c427e15b1..1b2a68910955f 100644
--- a/pkgs/development/python-modules/screenlogicpy/default.nix
+++ b/pkgs/development/python-modules/screenlogicpy/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
-, pythonOlder
-, pytest-asyncio
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonAtLeast,
+  pythonOlder,
+  pytest-asyncio,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,38 +24,34 @@ buildPythonPackage rec {
     hash = "sha256-z6cM0sihZvOHCA3v1DYQEev0axf4AcqEW13WA1EMhQM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    async-timeout
-  ];
+  propagatedBuildInputs = [ async-timeout ];
 
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
   ];
 
-  disabledTests = [
-    # Tests require network access
-    "test_async_discovery"
-    "test_async"
-    "test_asyncio_gateway_discovery"
-    "test_discovery_async_discover"
-    "test_gateway_discovery"
-    "test_gateway"
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    # Tests block on Python 3.12
-    "test_sub_unsub"
-    "test_attach_existing"
-    "test_login_async_connect_to_gateway"
-    "test_login_async_gateway_connect"
-  ];
+  disabledTests =
+    [
+      # Tests require network access
+      "test_async_discovery"
+      "test_async"
+      "test_asyncio_gateway_discovery"
+      "test_discovery_async_discover"
+      "test_gateway_discovery"
+      "test_gateway"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      # Tests block on Python 3.12
+      "test_sub_unsub"
+      "test_attach_existing"
+      "test_login_async_connect_to_gateway"
+      "test_login_async_gateway_connect"
+    ];
 
-  pythonImportsCheck = [
-    "screenlogicpy"
-  ];
+  pythonImportsCheck = [ "screenlogicpy" ];
 
   meta = with lib; {
     description = "Python interface for Pentair Screenlogic devices";
diff --git a/pkgs/development/python-modules/scripttest/default.nix b/pkgs/development/python-modules/scripttest/default.nix
index f61c1747e0595..a480429b6f31f 100644
--- a/pkgs/development/python-modules/scripttest/default.nix
+++ b/pkgs/development/python-modules/scripttest/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,9 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A library for testing interactive command-line applications";
+    description = "Library for testing interactive command-line applications";
     homepage = "https://pypi.org/project/scripttest/";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/scs/default.nix b/pkgs/development/python-modules/scs/default.nix
index 3584174bf2844..e311b2f2f25f8 100644
--- a/pkgs/development/python-modules/scs/default.nix
+++ b/pkgs/development/python-modules/scs/default.nix
@@ -1,68 +1,60 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, meson-python
-, pkg-config
-, Accelerate
-, blas
-, lapack
-, numpy
-, scipy
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  meson-python,
+  numpy,
+  pkg-config,
+
+  # buildInputs
+  Accelerate,
+  blas,
+  lapack,
+
+  # dependencies
+  scipy,
+
   # check inputs
-, pytestCheckHook
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "scs";
-  version = "3.2.4";
+  version = "3.2.7";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "bodono";
     repo = "scs-python";
-    rev = version;
-    hash = "sha256-UmMbnj7QZSvHWSUk1Qa0VP4i3iDCYHxoa+qBmEdFjRs=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-ZhY4h0C8aF3IjD9NMtevcNTSqX+tIUao9bC+WlP+uDk=";
     fetchSubmodules = true;
   };
 
-  patches = [
-    # needed for building against netlib's reference blas implementation and
-    # the pkg-config patch. remove on next update
-    (fetchpatch {
-      name = "find-and-ld-lapack.patch";
-      url = "https://github.com/bodono/scs-python/commit/a0aea80e7d490770d6a47d2c79396f6c3341c1f9.patch";
-      hash = "sha256-yHF8f7SLoG7veZ6DEq1HVH6rT2KtFONwJtqSiKcxOdg=";
-    })
-    # add support for pkg-config. remove on next update
-    (fetchpatch {
-      name = "use-pkg-config.patch";
-      url = "https://github.com/bodono/scs-python/commit/dd17e2e5282ebe85f2df8a7c6b25cfdeb894970d.patch";
-      hash = "sha256-vSeSJeeu5Wx3RXPyB39YTo0RU8HtAojrUw85Q76/QzA=";
-    })
-    # fix test_solve_random_cone_prob on linux after scipy 1.12 update
-    # https://github.com/bodono/scs-python/pull/82
-    (fetchpatch {
-      name = "scipy-1.12-fix.patch";
-      url = "https://github.com/bodono/scs-python/commit/4baf4effdc2ce7ac2dd1beaf864f1a5292eb06c6.patch";
-      hash = "sha256-U/F5MakwYZN5hCaeAkcCG38WQxX9mXy9OvhyEQqN038=";
-    })
-  ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "numpy >= 2.0.0" "numpy"
+  '';
 
-  nativeBuildInputs = [
+  build-system = [
     meson-python
+    numpy
     pkg-config
   ];
 
-  buildInputs = if stdenv.isDarwin then [
-    Accelerate
-  ] else [
-    blas
-    lapack
-  ];
+  buildInputs =
+    if stdenv.hostPlatform.isDarwin then
+      [ Accelerate ]
+    else
+      [
+        blas
+        lapack
+      ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
     scipy
   ];
@@ -70,7 +62,7 @@ buildPythonPackage rec {
   nativeCheckInputs = [ pytestCheckHook ];
   pythonImportsCheck = [ "scs" ];
 
-  meta = with lib; {
+  meta = {
     description = "Python interface for SCS: Splitting Conic Solver";
     longDescription = ''
       Solves convex cone programs via operator splitting.
@@ -79,7 +71,7 @@ buildPythonPackage rec {
     '';
     homepage = "https://github.com/cvxgrp/scs"; # upstream C package
     downloadPage = "https://github.com/bodono/scs-python";
-    license = licenses.mit;
-    maintainers = with maintainers; [ drewrisinger ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ drewrisinger ];
   };
 }
diff --git a/pkgs/development/python-modules/sdds/default.nix b/pkgs/development/python-modules/sdds/default.nix
index 8051215440802..a69a2b6b27c93 100644
--- a/pkgs/development/python-modules/sdds/default.nix
+++ b/pkgs/development/python-modules/sdds/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "sdds";
-  version = "0.4.1";
+  version = "0.4.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -17,20 +18,14 @@ buildPythonPackage rec {
     owner = "pylhc";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-4phANoYohuCaLbzO4TgRkSS+UHE8CnzonpEd46xzD0M=";
+    hash = "sha256-h1gEqzmKCUr8+w3Fv8lv35/0itZwela//AQsD3u0UJA=";
   };
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "sdds"
-  ];
+  pythonImportsCheck = [ "sdds" ];
 
   meta = with lib; {
     description = "Module to handle SDDS files";
diff --git a/pkgs/development/python-modules/sdkmanager/default.nix b/pkgs/development/python-modules/sdkmanager/default.nix
index 2900c012cf79d..225600d174661 100644
--- a/pkgs/development/python-modules/sdkmanager/default.nix
+++ b/pkgs/development/python-modules/sdkmanager/default.nix
@@ -1,18 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitLab
-, pythonOlder
-, pythonAtLeast
-, argcomplete
-, requests
-, looseversion
-, gnupg
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  pythonOlder,
+  pythonAtLeast,
+  argcomplete,
+  requests,
+  setuptools,
+  looseversion,
+  gnupg,
 }:
 
 buildPythonPackage rec {
   pname = "sdkmanager";
-  version = "0.6.6";
-  format = "setuptools";
+  version = "0.6.8";
+  pyproject = true;
 
   disabled = pythonOlder "3.5";
 
@@ -20,16 +22,17 @@ buildPythonPackage rec {
     owner = "fdroid";
     repo = pname;
     rev = version;
-    hash = "sha256-Vuht2gH9ivNG7PgG+XKtkdKoszkkoI91reQKg6D50xs=";
+    hash = "sha256-Ev90WS/T+Rb8h/21XHQdy/GePhGiYWwyfP88OUyBojQ=";
   };
 
-  propagatedBuildInputs = [
+  pythonRelaxDeps = [ "urllib3" ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     argcomplete
     requests
-  ] ++ requests.optional-dependencies.socks
-  ++ lib.optionals (pythonAtLeast "3.12") [
-    looseversion
-  ];
+  ] ++ requests.optional-dependencies.socks ++ lib.optionals (pythonAtLeast "3.12") [ looseversion ];
 
   postInstall = ''
     wrapProgram $out/bin/sdkmanager \
@@ -43,7 +46,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://gitlab.com/fdroid/sdkmanager";
-    description = "A drop-in replacement for sdkmanager from the Android SDK written in Python";
+    description = "Drop-in replacement for sdkmanager from the Android SDK written in Python";
     mainProgram = "sdkmanager";
     license = licenses.agpl3Plus;
     maintainers = with maintainers; [ linsui ];
diff --git a/pkgs/development/python-modules/sdnotify/default.nix b/pkgs/development/python-modules/sdnotify/default.nix
index c6c0fb224b317..08ef15ac3dcf0 100644
--- a/pkgs/development/python-modules/sdnotify/default.nix
+++ b/pkgs/development/python-modules/sdnotify/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -14,7 +15,7 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "A pure Python implementation of systemd's service notification protocol";
+    description = "Pure Python implementation of systemd's service notification protocol";
     homepage = "https://github.com/bb4242/sdnotify";
     license = licenses.mit;
     maintainers = with maintainers; [ pmiddend ];
diff --git a/pkgs/development/python-modules/seaborn/default.nix b/pkgs/development/python-modules/seaborn/default.nix
index beaf5d2e109bb..16e9d1b98078b 100644
--- a/pkgs/development/python-modules/seaborn/default.nix
+++ b/pkgs/development/python-modules/seaborn/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, matplotlib
-, pytest-xdist
-, pytestCheckHook
-, numpy
-, pandas
-, pythonOlder
-, scipy
-, statsmodels
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  matplotlib,
+  pytest-xdist,
+  pytestCheckHook,
+  numpy,
+  pandas,
+  pythonOlder,
+  scipy,
+  statsmodels,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     hash = "sha256-aGIVcdG/XN999nYBHh3lJqGa3QVt0j8kmzaxdkULznY=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     matplotlib
@@ -49,21 +48,21 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTests = [
-    # requires internet connection
-    "test_load_dataset_string_error"
-  ] ++ lib.optionals (!stdenv.hostPlatform.isx86) [
-    # overly strict float tolerances
-    "TestDendrogram"
-  ];
+  disabledTests =
+    [
+      # requires internet connection
+      "test_load_dataset_string_error"
+    ]
+    ++ lib.optionals (!stdenv.hostPlatform.isx86) [
+      # overly strict float tolerances
+      "TestDendrogram"
+    ];
 
   # All platforms should use Agg. Let's set it explicitly to avoid probing GUI
   # backends (leads to crashes on macOS).
-  env.MPLBACKEND="Agg";
+  env.MPLBACKEND = "Agg";
 
-  pythonImportsCheck = [
-    "seaborn"
-  ];
+  pythonImportsCheck = [ "seaborn" ];
 
   meta = with lib; {
     description = "Statistical data visualization";
diff --git a/pkgs/development/python-modules/seabreeze/default.nix b/pkgs/development/python-modules/seabreeze/default.nix
index 119e36d663ef9..7bb81e8006eb1 100644
--- a/pkgs/development/python-modules/seabreeze/default.nix
+++ b/pkgs/development/python-modules/seabreeze/default.nix
@@ -1,24 +1,26 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-
-# build-system
-, cython
-, git
-, pkgconfig
-, setuptools
-, setuptools-scm
-
-# dependneices
-, numpy
-
-# optional-dependenices
-, pyusb
-
-# tests
-, mock
-, pytestCheckHook
-, zipp
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+
+  # build-system
+  cython,
+  git,
+  pkgconfig,
+  setuptools,
+  setuptools-scm,
+
+  # dependneices
+  numpy,
+  libusb-compat-0_1,
+
+  # optional-dependenices
+  pyusb,
+
+  # tests
+  mock,
+  pytestCheckHook,
+  zipp,
 }:
 
 ## Usage
@@ -28,17 +30,26 @@
 
 buildPythonPackage rec {
   pname = "seabreeze";
-  version = "2.6.0";
+  version = "2.9.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "ap--";
     repo = "python-seabreeze";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Ead9G4i8/mFwPqL2PGsndtmX93Njld3nvTTr6ROJTac=";
+    hash = "sha256-NzZ+ZRfJ97Ufp6hmqN6ziBFfdvJXpmWwh9A66od/8Hc=";
     leaveDotGit = true;
   };
 
+  enableParallelBuilding = true;
+
+  postPatch = ''
+    # pkgconfig cant find libusb, doing it manually
+    substituteInPlace setup.py \
+      --replace-fail 'pkgconfig.parse("libusb")' \
+        "{'include_dirs': ['${libusb-compat-0_1}/include'], 'library_dirs': ['${libusb-compat-0_1}/lib'], 'libraries': ['usb']}"
+  '';
+
   nativeBuildInputs = [
     cython
     git
@@ -49,12 +60,11 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     numpy
+    libusb-compat-0_1
   ];
 
   passthru.optional-dependencies = {
-    pyseabreeze = [
-      pyusb
-    ];
+    pyseabreeze = [ pyusb ];
   };
 
   postInstall = ''
@@ -69,12 +79,14 @@ buildPythonPackage rec {
     zipp
   ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
 
+  disabledTests = [ "TestHardware" ];
+
   setupPyBuildFlags = [ "--without-cseabreeze" ];
 
   meta = with lib; {
     homepage = "https://github.com/ap--/python-seabreeze";
-    description = "A python library to access Ocean Optics spectrometers";
-    maintainers = [];
+    description = "Python library to access Ocean Optics spectrometers";
+    maintainers = [ ];
     license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/seasonal/default.nix b/pkgs/development/python-modules/seasonal/default.nix
index d38559ff2eed2..f6aa8d2e36461 100644
--- a/pkgs/development/python-modules/seasonal/default.nix
+++ b/pkgs/development/python-modules/seasonal/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, numpy
-, scipy
-, pandas
-, matplotlib
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  numpy,
+  scipy,
+  pandas,
+  matplotlib,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
       --replace 'setup_requires=["pytest-runner"],' ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     numpy
@@ -41,15 +40,15 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    csv = [
-      pandas
-    ];
-    plot = [
-      matplotlib
-    ];
+    csv = [ pandas ];
+    plot = [ matplotlib ];
   };
 
-  pythonImportsCheck = [ "seasonal" "seasonal.trend" "seasonal.periodogram" ];
+  pythonImportsCheck = [
+    "seasonal"
+    "seasonal.trend"
+    "seasonal.periodogram"
+  ];
   nativeCheckInputs = [
     pytestCheckHook
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
diff --git a/pkgs/development/python-modules/seatconnect/default.nix b/pkgs/development/python-modules/seatconnect/default.nix
index 0acce07138e6d..a1a8bc36b311f 100644
--- a/pkgs/development/python-modules/seatconnect/default.nix
+++ b/pkgs/development/python-modules/seatconnect/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, aiohttp
-, beautifulsoup4
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, lxml
-, pyjwt
-, pythonOlder
-, setuptools-scm
-, xmltodict
+{
+  lib,
+  aiohttp,
+  beautifulsoup4,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  lxml,
+  pyjwt,
+  pythonOlder,
+  setuptools-scm,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-HITVrI0o94a61gy/TYSGFtLBYX4Rw/dK1o2/KsvHLTQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -41,9 +40,7 @@ buildPythonPackage rec {
   # Project only has a dummy test
   doCheck = false;
 
-  pythonImportsCheck = [
-    "seatconnect"
-  ];
+  pythonImportsCheck = [ "seatconnect" ];
 
   meta = with lib; {
     description = "Python module to communicate with Seat Connect";
diff --git a/pkgs/development/python-modules/seccomp/default.nix b/pkgs/development/python-modules/seccomp/default.nix
index 3257722b17823..2e8830277b944 100644
--- a/pkgs/development/python-modules/seccomp/default.nix
+++ b/pkgs/development/python-modules/seccomp/default.nix
@@ -1,11 +1,14 @@
-{ buildPythonPackage, lib
-, cython, libseccomp
+{
+  buildPythonPackage,
+  lib,
+  cython,
+  libseccomp,
 }:
 
 buildPythonPackage rec {
-  pname   = "libseccomp";
+  pname = "libseccomp";
   version = libseccomp.version;
-  src     = libseccomp.pythonsrc;
+  src = libseccomp.pythonsrc;
 
   VERSION_RELEASE = version; # used by build system
 
@@ -23,7 +26,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python bindings for libseccomp";
-    license     = with licenses; [ lgpl21 ];
+    license = with licenses; [ lgpl21 ];
     maintainers = with maintainers; [ thoughtpolice ];
   };
 }
diff --git a/pkgs/development/python-modules/secp256k1/default.nix b/pkgs/development/python-modules/secp256k1/default.nix
index 2e2455d4e349e..4d46563e92a84 100644
--- a/pkgs/development/python-modules/secp256k1/default.nix
+++ b/pkgs/development/python-modules/secp256k1/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pkg-config
-, pytestCheckHook
-, cffi
-, secp256k1
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pkg-config,
+  pytestCheckHook,
+  cffi,
+  secp256k1,
 }:
 
 buildPythonPackage rec {
@@ -25,7 +26,10 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [ pkg-config ];
 
-  propagatedBuildInputs = [ cffi secp256k1 ];
+  propagatedBuildInputs = [
+    cffi
+    secp256k1
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
@@ -42,6 +46,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/ludbb/secp256k1-py";
     description = "Python FFI bindings for secp256k1";
     license = with lib.licenses; [ mit ];
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/secretstorage/default.nix b/pkgs/development/python-modules/secretstorage/default.nix
index 59584ee9170fb..8e59e1efe9579 100644
--- a/pkgs/development/python-modules/secretstorage/default.nix
+++ b/pkgs/development/python-modules/secretstorage/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchPypi
-, jeepney
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  jeepney,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
   # Needs a D-Bus session
   doCheck = false;
 
-  pythonImportsCheck = [
-    "secretstorage"
-  ];
+  pythonImportsCheck = [ "secretstorage" ];
 
   meta = with lib; {
     description = "Python bindings to FreeDesktop.org Secret Service API";
diff --git a/pkgs/development/python-modules/sectools/default.nix b/pkgs/development/python-modules/sectools/default.nix
index f65c80aabdc13..9607ad4ab5ba7 100644
--- a/pkgs/development/python-modules/sectools/default.nix
+++ b/pkgs/development/python-modules/sectools/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, ldap3
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ldap3,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,20 +21,14 @@ buildPythonPackage rec {
     hash = "sha256-k3k1/DFmv0resnsNht/C+2Xh6qbSQmk83eN/3vtDU00=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    ldap3
-  ];
+  propagatedBuildInputs = [ ldap3 ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sectools"
-  ];
+  pythonImportsCheck = [ "sectools" ];
 
   meta = with lib; {
     description = "library containing functions to write security tools";
diff --git a/pkgs/development/python-modules/secure/default.nix b/pkgs/development/python-modules/secure/default.nix
index c1fbd3e83e2a7..f78cda89176c3 100644
--- a/pkgs/development/python-modules/secure/default.nix
+++ b/pkgs/development/python-modules/secure/default.nix
@@ -1,6 +1,10 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy27
-, maya
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  maya,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -16,7 +20,10 @@ buildPythonPackage rec {
     sha256 = "1ajz1nx0nnhsc80xbgbc42ib2h08qnccvsp5i583rd9b0f9pklwk";
   };
 
-  propagatedBuildInputs = [ maya requests ];
+  propagatedBuildInputs = [
+    maya
+    requests
+  ];
 
   # no tests in release
   doCheck = false;
@@ -27,6 +34,6 @@ buildPythonPackage rec {
     description = "Adds optional security headers and cookie attributes for Python web frameworks";
     homepage = "https://github.com/TypeError/secure.py";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/securetar/default.nix b/pkgs/development/python-modules/securetar/default.nix
index b4c8c90989eca..5532859810d52 100644
--- a/pkgs/development/python-modules/securetar/default.nix
+++ b/pkgs/development/python-modules/securetar/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-D50ceRlK+v5Uo3qBBpVtKwI8zKU/qh1Njn3qeKM4LiY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    cryptography
-  ];
+  propagatedBuildInputs = [ cryptography ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "securetar"
-  ];
+  pythonImportsCheck = [ "securetar" ];
 
   meta = with lib; {
     description = "Module to handle tarfile backups";
diff --git a/pkgs/development/python-modules/securityreporter/default.nix b/pkgs/development/python-modules/securityreporter/default.nix
index df2f60a22cff4..3826f8397f5d6 100644
--- a/pkgs/development/python-modules/securityreporter/default.nix
+++ b/pkgs/development/python-modules/securityreporter/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, docker
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, requests
-, responses
+{
+  lib,
+  buildPythonPackage,
+  docker,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  responses,
 }:
 
 buildPythonPackage rec {
   pname = "securityreporter";
-  version = "1.0.2";
+  version = "1.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,16 +21,12 @@ buildPythonPackage rec {
     owner = "dongit-org";
     repo = "python-reporter";
     rev = "refs/tags/v${version}";
-    hash = "sha256-mBZVsoDnDRYHdcFzi4kuwmAJDRdpysUbNRcDzIhYRGY=";
+    hash = "sha256-Ddq1qjaQemawK+u3ArlsChrkzRbcuaj5LrswyTGwTrg=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  dependencies = [
-    requests
-  ];
+  dependencies = [ requests ];
 
   nativeCheckInputs = [
     docker
@@ -37,9 +34,7 @@ buildPythonPackage rec {
     responses
   ];
 
-  pythonImportsCheck = [
-    "reporter"
-  ];
+  pythonImportsCheck = [ "reporter" ];
 
   disabledTestPaths = [
     # Test require a running Docker instance
@@ -47,7 +42,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A Python wrapper for the Reporter API";
+    description = "Python wrapper for the Reporter API";
     homepage = "https://github.com/dongit-org/python-reporter";
     changelog = "https://github.com/dongit-org/python-reporter/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/seedir/default.nix b/pkgs/development/python-modules/seedir/default.nix
index 6c5e5bc899f29..f0c1f25d13406 100644
--- a/pkgs/development/python-modules/seedir/default.nix
+++ b/pkgs/development/python-modules/seedir/default.nix
@@ -1,47 +1,41 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, natsort
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  natsort,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "seedir";
-  version = "0.4.2";
-  format = "setuptools";
+  version = "0.5.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "earnestt1234";
-    repo = pname;
+    repo = "seedir";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ioez5lBNyiBK3poL2Px3KtCQeM+Gh2d4iD3SoAIHFAk=";
+    hash = "sha256-ilL2KKN5sJclVcStO/kZoacsPoMgcFW1/8M/PQjxw/U=";
   };
 
-  propagatedBuildInputs = [
-    natsort
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  dependencies = [ natsort ];
 
-  pythonImportsCheck = [
-    "seedir"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests/tests.py"
-  ];
+  pythonImportsCheck = [ "seedir" ];
 
   meta = with lib; {
     description = "Module for for creating, editing, and reading folder tree diagrams";
-    mainProgram = "seedir";
     homepage = "https://github.com/earnestt1234/seedir";
     changelog = "https://github.com/earnestt1234/seedir/releases/tag/v${version}";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "seedir";
   };
 }
diff --git a/pkgs/development/python-modules/seekpath/default.nix b/pkgs/development/python-modules/seekpath/default.nix
index 39b173d0875f0..356a4d2b42747 100644
--- a/pkgs/development/python-modules/seekpath/default.nix
+++ b/pkgs/development/python-modules/seekpath/default.nix
@@ -1,4 +1,15 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, numpy, future, spglib, glibcLocales, pytest, scipy }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  numpy,
+  future,
+  spglib,
+  glibcLocales,
+  pytest,
+  scipy,
+}:
 
 buildPythonPackage rec {
   pname = "seekpath";
@@ -16,7 +27,12 @@ buildPythonPackage rec {
   LC_ALL = "en_US.utf-8";
 
   # scipy isn't listed in install_requires, but used in package
-  propagatedBuildInputs = [ numpy spglib future scipy ];
+  propagatedBuildInputs = [
+    numpy
+    spglib
+    future
+    scipy
+  ];
 
   nativeBuildInputs = [ glibcLocales ];
 
@@ -28,10 +44,9 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A module to obtain and visualize band paths in the Brillouin zone of crystal structures.";
+    description = "Module to obtain and visualize band paths in the Brillouin zone of crystal structures";
     homepage = "https://github.com/giovannipizzi/seekpath";
     license = licenses.mit;
     maintainers = with maintainers; [ psyanticy ];
   };
 }
-
diff --git a/pkgs/development/python-modules/segments/default.nix b/pkgs/development/python-modules/segments/default.nix
index e55eb4c49bad8..322446fd0353b 100644
--- a/pkgs/development/python-modules/segments/default.nix
+++ b/pkgs/development/python-modules/segments/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy27
-, setuptools
-, regex
-, csvw
-, clldutils
-, pytestCheckHook
-, pytest-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  setuptools,
+  regex,
+  csvw,
+  clldutils,
+  pytestCheckHook,
+  pytest-mock,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
       --replace-fail "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     regex
@@ -49,6 +48,6 @@ buildPythonPackage rec {
     mainProgram = "segments";
     homepage = "https://github.com/cldf/segments";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/segno/default.nix b/pkgs/development/python-modules/segno/default.nix
index 21a10677c5e14..d87b902458fee 100644
--- a/pkgs/development/python-modules/segno/default.nix
+++ b/pkgs/development/python-modules/segno/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# build-system
-, flit-core
-
-# dependencies
-, importlib-metadata
-
-# tests
-, pytestCheckHook
-, pypng
-, pyzbar
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  flit-core,
+
+  # dependencies
+  importlib-metadata,
+
+  # tests
+  pytestCheckHook,
+  pypng,
+  pyzbar,
 }:
 
 buildPythonPackage rec {
@@ -27,13 +28,9 @@ buildPythonPackage rec {
     hash = "sha256-5CDrQhbgUydz1ORp4ktZwhcgbJxQq1snKIAA0v4mZ00=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -46,9 +43,7 @@ buildPythonPackage rec {
     "test_plugin"
   ];
 
-  pythonImportsCheck = [
-    "segno"
-  ];
+  pythonImportsCheck = [ "segno" ];
 
   meta = with lib; {
     changelog = "https://github.com/heuer/segno/releases/tag/${version}";
diff --git a/pkgs/development/python-modules/segyio/add_missing_cstdint.patch b/pkgs/development/python-modules/segyio/add_missing_cstdint.patch
new file mode 100644
index 0000000000000..2c26d6e454b14
--- /dev/null
+++ b/pkgs/development/python-modules/segyio/add_missing_cstdint.patch
@@ -0,0 +1,47 @@
+From 64f06c0643f1f8691a8f2757496b60f1ab98c866 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Sa=C3=AFd=20Benaissa?= <sbenaissa@shearwatergeo.com>
+Date: Fri, 8 Dec 2023 21:51:32 +0100
+Subject: [PATCH] Add include for cstdint, fix segyio build on fedora
+
+---
+ lib/experimental/segyio/segyio.hpp | 1 +
+ python/segyio/segyio.cpp           | 1 +
+ python/setup.py                    | 2 +-
+ 3 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/lib/experimental/segyio/segyio.hpp b/lib/experimental/segyio/segyio.hpp
+index 706f07ff5..7ba3ffb99 100644
+--- a/lib/experimental/segyio/segyio.hpp
++++ b/lib/experimental/segyio/segyio.hpp
+@@ -13,6 +13,7 @@
+ #include <vector>
+ 
+ #include <segyio/segy.h>
++#include <cstdint>
+ 
+ /*
+  * KNOWN ISSUES AND TODOs:
+diff --git a/python/segyio/segyio.cpp b/python/segyio/segyio.cpp
+index 76da965c3..bd8a8622e 100644
+--- a/python/segyio/segyio.cpp
++++ b/python/segyio/segyio.cpp
+@@ -16,6 +16,7 @@
+ #include <cstring>
+ #include <sstream>
+ #include <stdexcept>
++#include <cstdint>
+ 
+ #if PY_MAJOR_VERSION >= 3
+ #define IS_PY3K
+diff --git a/python/setup.py b/python/setup.py
+index 6c6553bc7..654075be9 100644
+--- a/python/setup.py
++++ b/python/setup.py
+@@ -1,6 +1,6 @@
+ import os
+ import sys
+-import skbuild
++import skbuild  # pip install scikit-build
+ import setuptools
+ 
+ long_description = """
diff --git a/pkgs/development/python-modules/segyio/default.nix b/pkgs/development/python-modules/segyio/default.nix
index fb1f4d28e6165..9e221db8cfe7a 100644
--- a/pkgs/development/python-modules/segyio/default.nix
+++ b/pkgs/development/python-modules/segyio/default.nix
@@ -1,17 +1,23 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, cmake
-, ninja
-, python
-, scikit-build
-, pytest
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cmake,
+  ninja,
+  scikit-build,
+  pytest,
+  numpy,
 }:
 
-stdenv.mkDerivation rec {
+buildPythonPackage rec {
   pname = "segyio";
   version = "1.9.12";
+  pyproject = false; # Built with cmake
+
+  patches = [
+    # https://github.com/equinor/segyio/pull/570
+    ./add_missing_cstdint.patch
+  ];
 
   postPatch = ''
     # Removing unecessary build dependency
@@ -30,12 +36,19 @@ stdenv.mkDerivation rec {
     hash = "sha256-+N2JvHBxpdbysn4noY/9LZ4npoQ9143iFEzaxoafnms=";
   };
 
-  nativeBuildInputs = [ cmake ninja python scikit-build ];
+  nativeBuildInputs = [
+    cmake
+    ninja
+    scikit-build
+  ];
 
   doCheck = true;
   # I'm not modifying the checkPhase nor adding a pytestCheckHook because the pytest is called
   # within the cmake test phase
-  nativeCheckInputs = [ pytest numpy ];
+  nativeCheckInputs = [
+    pytest
+    numpy
+  ];
 
   meta = with lib; {
     description = "Fast Python library for SEGY files";
diff --git a/pkgs/development/python-modules/selectors2/default.nix b/pkgs/development/python-modules/selectors2/default.nix
deleted file mode 100644
index ef9df617b6df3..0000000000000
--- a/pkgs/development/python-modules/selectors2/default.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ stdenv, lib, buildPythonPackage, fetchPypi
-, nose, psutil, mock }:
-
-buildPythonPackage rec {
-  version = "2.0.2";
-  format = "setuptools";
-  pname = "selectors2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1f1bbaac203a23fbc851dc1b5a6e92c50698cc8cefa5873eb5b89eef53d1d82b";
-  };
-
-  patches = [
-    ./mapping-import.patch
-  ];
-
-  nativeCheckInputs = [ nose psutil mock ];
-
-  checkPhase = ''
-    # https://github.com/NixOS/nixpkgs/pull/46186#issuecomment-419450064
-    # Trick to disable certain tests that depend on timing which
-    # will always fail on hydra
-    export TRAVIS=""
-    nosetests tests/test_selectors2.py \
-      --exclude=test_above_fd_setsize
-  '';
-
-  meta = with lib; {
-    broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin;
-    homepage = "https://www.github.com/SethMichaelLarson/selectors2";
-    description = "Back-ported, durable, and portable selectors";
-    license = licenses.mit;
-    maintainers = [ ];
-  };
-}
diff --git a/pkgs/development/python-modules/selectors2/mapping-import.patch b/pkgs/development/python-modules/selectors2/mapping-import.patch
deleted file mode 100644
index 64f74a5ce29bf..0000000000000
--- a/pkgs/development/python-modules/selectors2/mapping-import.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/selectors2.py b/selectors2.py
-index 1625a30..c4a1231 100644
---- a/selectors2.py
-+++ b/selectors2.py
-@@ -22,7 +22,8 @@
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- # SOFTWARE.
- 
--from collections import namedtuple, Mapping
-+from collections import namedtuple
-+from collections.abc import Mapping
- import errno
- import math
- import platform
diff --git a/pkgs/development/python-modules/selenium-wire/default.nix b/pkgs/development/python-modules/selenium-wire/default.nix
index bbc98666394b9..b301c953bb71a 100644
--- a/pkgs/development/python-modules/selenium-wire/default.nix
+++ b/pkgs/development/python-modules/selenium-wire/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, blinker
-, brotli
-, buildPythonPackage
-, certifi
-, fetchFromGitHub
-, h2
-, hyperframe
-, kaitaistruct
-, pyasn1
-, httpbin
-, pyopenssl
-, pyparsing
-, pysocks
-, gunicorn
-, pytestCheckHook
-, pythonOlder
-, selenium
-, setuptools
-, wsproto
-, zstandard
+{
+  lib,
+  blinker,
+  brotli,
+  buildPythonPackage,
+  certifi,
+  fetchFromGitHub,
+  h2,
+  hyperframe,
+  kaitaistruct,
+  pyasn1,
+  httpbin,
+  pyopenssl,
+  pyparsing,
+  pysocks,
+  gunicorn,
+  pytestCheckHook,
+  pythonOlder,
+  selenium,
+  setuptools,
+  wsproto,
+  zstandard,
 }:
 
 buildPythonPackage rec {
@@ -35,11 +36,9 @@ buildPythonPackage rec {
     hash = "sha256-KgaDxHS0dAK6CT53L1qqx1aORMmkeaiXAUtGC82hiIQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     blinker
     brotli
     certifi
@@ -61,9 +60,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "seleniumwire"
-  ];
+  pythonImportsCheck = [ "seleniumwire" ];
 
   disabledTestPaths = [
     # Don't run End2End tests
@@ -76,5 +73,6 @@ buildPythonPackage rec {
     changelog = "https://github.com/wkeeling/selenium-wire/blob/${version}/HISTORY.rst";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    broken = versionAtLeast blinker.version "1.8";
   };
 }
diff --git a/pkgs/development/python-modules/selenium/default.nix b/pkgs/development/python-modules/selenium/default.nix
index 9f8336201eb99..ab3b46b438164 100644
--- a/pkgs/development/python-modules/selenium/default.nix
+++ b/pkgs/development/python-modules/selenium/default.nix
@@ -1,23 +1,25 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, selenium-manager
-, certifi
-, pytestCheckHook
-, pythonOlder
-, trio
-, trio-websocket
-, typing-extensions
-, urllib3
-, pytest-trio
-, nixosTests
-, stdenv
-, python
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  selenium-manager,
+  certifi,
+  pytestCheckHook,
+  pythonOlder,
+  trio,
+  trio-websocket,
+  typing-extensions,
+  websocket-client,
+  urllib3,
+  pytest-trio,
+  nixosTests,
+  stdenv,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "selenium";
-  version = "4.18.1";
+  version = "4.22.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -27,29 +29,32 @@ buildPythonPackage rec {
     repo = "selenium";
     # check if there is a newer tag with or without -python suffix
     rev = "refs/tags/selenium-${version}";
-    hash = "sha256-1C9Epsk9rFlShxHGGzbWl6smrMzPn2h3yCWlzUIMpY8=";
+    hash = "sha256-qBuZgI5SSBwxbSBrAT0W/HzzV2JmPL00hPJ6s57QTeg=";
   };
 
   preConfigure = ''
     cd py
   '';
 
-  postInstall = ''
-    DST_PREFIX=$out/${python.sitePackages}/selenium/webdriver/
-    DST_REMOTE=$DST_PREFIX/remote/
-    DST_FF=$DST_PREFIX/firefox
-    cp ../rb/lib/selenium/webdriver/atoms/getAttribute.js $DST_REMOTE
-    cp ../rb/lib/selenium/webdriver/atoms/isDisplayed.js $DST_REMOTE
-    cp ../rb/lib/selenium/webdriver/atoms/findElements.js $DST_REMOTE
-    cp ../javascript/cdp-support/mutation-listener.js $DST_REMOTE
-    cp ../third_party/js/selenium/webdriver.json $DST_FF/webdriver_prefs.json
-  '' + lib.optionalString stdenv.isDarwin ''
-    mkdir -p $DST_PREFIX/common/macos
-    ln -s ${lib.getExe selenium-manager} $DST_PREFIX/common/macos/
-  '' + lib.optionalString stdenv.isLinux ''
-    mkdir -p $DST_PREFIX/common/linux/
-    ln -s ${lib.getExe selenium-manager} $DST_PREFIX/common/linux/
-  '';
+  postInstall =
+    ''
+      DST_PREFIX=$out/${python.sitePackages}/selenium/webdriver/
+      DST_REMOTE=$DST_PREFIX/remote/
+      DST_FF=$DST_PREFIX/firefox
+      cp ../rb/lib/selenium/webdriver/atoms/getAttribute.js $DST_REMOTE
+      cp ../rb/lib/selenium/webdriver/atoms/isDisplayed.js $DST_REMOTE
+      cp ../rb/lib/selenium/webdriver/atoms/findElements.js $DST_REMOTE
+      cp ../javascript/cdp-support/mutation-listener.js $DST_REMOTE
+      cp ../third_party/js/selenium/webdriver.json $DST_FF/webdriver_prefs.json
+    ''
+    + lib.optionalString stdenv.hostPlatform.isDarwin ''
+      mkdir -p $DST_PREFIX/common/macos
+      ln -s ${lib.getExe selenium-manager} $DST_PREFIX/common/macos/
+    ''
+    + lib.optionalString stdenv.hostPlatform.isLinux ''
+      mkdir -p $DST_PREFIX/common/linux/
+      ln -s ${lib.getExe selenium-manager} $DST_PREFIX/common/linux/
+    '';
 
   propagatedBuildInputs = [
     certifi
@@ -57,6 +62,7 @@ buildPythonPackage rec {
     trio-websocket
     urllib3
     typing-extensions
+    websocket-client
   ] ++ urllib3.optional-dependencies.socks;
 
   nativeCheckInputs = [
diff --git a/pkgs/development/python-modules/semantic-version/default.nix b/pkgs/development/python-modules/semantic-version/default.nix
index d80afabb21693..26f33ea2a3682 100644
--- a/pkgs/development/python-modules/semantic-version/default.nix
+++ b/pkgs/development/python-modules/semantic-version/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,18 +19,17 @@ buildPythonPackage rec {
     hash = "sha256-vau20zaZjLs3jUuds6S1ah4yNXAdwF6iaQ2amX7VBBw=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "semantic_version"
-  ];
+  pythonImportsCheck = [ "semantic_version" ];
 
   meta = with lib; {
-    description = "A library implementing the 'SemVer' scheme";
+    description = "Library implementing the 'SemVer' scheme";
     homepage = "https://github.com/rbarrois/python-semanticversion/";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ layus makefu ];
+    maintainers = with maintainers; [
+      layus
+      makefu
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/semaphore-bot/default.nix b/pkgs/development/python-modules/semaphore-bot/default.nix
index d8dd7afecafc8..e69a920bc8ea8 100644
--- a/pkgs/development/python-modules/semaphore-bot/default.nix
+++ b/pkgs/development/python-modules/semaphore-bot/default.nix
@@ -1,26 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python-dateutil
-, attrs
-, anyio
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  python-dateutil,
+  attrs,
+  anyio,
 }:
 
 buildPythonPackage rec {
   pname = "semaphore-bot";
   version = "0.17.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit version pname;
     hash = "sha256-3zb6+HdOB6+YrVRcmIHsokFKUOlFmKCoVNllvM+aOXQ=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py --replace "anyio>=3.5.0,<=3.6.2" "anyio"
-  '';
+  pythonRelaxDeps = [
+    "anyio"
+    "attrs"
+    "python-dateutil"
+  ];
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     anyio
     attrs
     python-dateutil
diff --git a/pkgs/development/python-modules/send2trash/default.nix b/pkgs/development/python-modules/send2trash/default.nix
index bd08e6c2dcdec..f497e2fef41cd 100644
--- a/pkgs/development/python-modules/send2trash/default.nix
+++ b/pkgs/development/python-modules/send2trash/default.nix
@@ -1,8 +1,10 @@
-{ lib, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,19 +19,15 @@ buildPythonPackage rec {
     hash = "sha256-p0Pd9g+nLoT+oruthwjBn2E9rznvcx35VmzOAce2iTY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   preCheck = ''
     export HOME=$TMPDIR
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Send file to trash natively under macOS, Windows and Linux";
@@ -37,6 +35,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/hsoft/send2trash";
     changelog = "https://github.com/arsenetar/send2trash/blob/${version}/CHANGES.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sendgrid/default.nix b/pkgs/development/python-modules/sendgrid/default.nix
index 82f336a7fd43c..e8ce7251b5a23 100644
--- a/pkgs/development/python-modules/sendgrid/default.nix
+++ b/pkgs/development/python-modules/sendgrid/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flask
-, pytestCheckHook
-, python-http-client
-, pythonOlder
-, pyyaml
-, starkbank-ecdsa
-, six
-, werkzeug
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flask,
+  pytestCheckHook,
+  python-http-client,
+  pythonOlder,
+  pyyaml,
+  starkbank-ecdsa,
+  six,
+  werkzeug,
 }:
 
 buildPythonPackage rec {
@@ -44,9 +45,7 @@ buildPythonPackage rec {
     "live_test.py"
   ];
 
-  pythonImportsCheck = [
-    "sendgrid"
-  ];
+  pythonImportsCheck = [ "sendgrid" ];
 
   meta = with lib; {
     description = "Python client for SendGrid";
diff --git a/pkgs/development/python-modules/senf/default.nix b/pkgs/development/python-modules/senf/default.nix
new file mode 100644
index 0000000000000..14ed23d06933d
--- /dev/null
+++ b/pkgs/development/python-modules/senf/default.nix
@@ -0,0 +1,37 @@
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  hypothesis,
+  pytestCheckHook,
+}:
+buildPythonPackage rec {
+  pname = "senf";
+  version = "1.5.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-kFlFEOqYVBM47YWmwUOPuiCqoqSW+I3y0tNlSFZjjNE=";
+  };
+
+  nativeCheckInputs = [
+    hypothesis
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # Both don't work even with HOME specified...
+    "test_getuserdir"
+    "test_expanduser_user"
+  ];
+
+  pythonImportsCheck = [ "senf" ];
+
+  meta = with lib; {
+    description = "Consistent filename handling for all Python versions and platforms";
+    homepage = "https://senf.readthedocs.io/en/latest/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ cab404 ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/sense-energy/default.nix b/pkgs/development/python-modules/sense-energy/default.nix
index cc91f276c0e7e..b3f99bf3ee383 100644
--- a/pkgs/development/python-modules/sense-energy/default.nix
+++ b/pkgs/development/python-modules/sense-energy/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, aiohttp
-, ciso8601
-, async-timeout
-, kasa-crypt
-, orjson
-, pythonOlder
-, requests
-, websocket-client
-, websockets
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  aiohttp,
+  ciso8601,
+  async-timeout,
+  kasa-crypt,
+  orjson,
+  pythonOlder,
+  requests,
+  websocket-client,
+  websockets,
 }:
 
 buildPythonPackage rec {
   pname = "sense-energy";
-  version = "0.12.3";
+  version = "0.12.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -24,7 +25,7 @@ buildPythonPackage rec {
     owner = "scottbonline";
     repo = "sense";
     rev = "refs/tags/${version}";
-    hash = "sha256-aAPDYg5ttOAkKF5c1ft2apIQoReh4t22+78PtmLZNlI=";
+    hash = "sha256-jHYXqlRV1JR95GtO9E6oYj69Jj8TsvLANcI1kl7/Gl4=";
   };
 
   postPatch = ''
@@ -32,9 +33,7 @@ buildPythonPackage rec {
       --replace-fail "{{VERSION_PLACEHOLDER}}" "${version}"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -50,9 +49,7 @@ buildPythonPackage rec {
   # no tests implemented
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sense_energy"
-  ];
+  pythonImportsCheck = [ "sense_energy" ];
 
   meta = with lib; {
     description = "API for the Sense Energy Monitor";
diff --git a/pkgs/development/python-modules/sensirion-ble/default.nix b/pkgs/development/python-modules/sensirion-ble/default.nix
index 86f81f67814b9..8dea1faea5e93 100644
--- a/pkgs/development/python-modules/sensirion-ble/default.nix
+++ b/pkgs/development/python-modules/sensirion-ble/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, bluetooth-data-tools
-, bluetooth-sensor-state-data
-, home-assistant-bluetooth
-, sensor-state-data
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  bluetooth-data-tools,
+  bluetooth-sensor-state-data,
+  home-assistant-bluetooth,
+  sensor-state-data,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
       --replace " --cov=sensirion_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     bluetooth-data-tools
@@ -39,9 +38,7 @@ buildPythonPackage rec {
     sensor-state-data
   ];
 
-  pythonImportsCheck = [
-    "sensirion_ble"
-  ];
+  pythonImportsCheck = [ "sensirion_ble" ];
 
   meta = with lib; {
     description = "Parser for Sensirion BLE devices";
diff --git a/pkgs/development/python-modules/sensor-state-data/default.nix b/pkgs/development/python-modules/sensor-state-data/default.nix
index 7802340cedef2..5f76694f3cbe8 100644
--- a/pkgs/development/python-modules/sensor-state-data/default.nix
+++ b/pkgs/development/python-modules/sensor-state-data/default.nix
@@ -1,16 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, home-assistant-bluetooth
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, sensor-state-data
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "sensor-state-data";
-  version = "2.18.0";
+  version = "2.18.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.9";
@@ -19,25 +18,19 @@ buildPythonPackage rec {
     owner = "Bluetooth-Devices";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-wYYSS4lABCbIhmUU3z3Wh0+4zwpEzXl8Kk9gi6LBrbQ=";
+    hash = "sha256-9GdBKUhueis8pnQP5ZNxvEyRXVGINTueVzLOR4xx5mU=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace " --cov=sensor_state_data --cov-report=term-missing:skip-covered" ""
   '';
 
-  pythonImportsCheck = [
-    "sensor_state_data"
-  ];
+  pythonImportsCheck = [ "sensor_state_data" ];
 
   meta = with lib; {
     description = "Models for storing and converting Sensor Data state";
diff --git a/pkgs/development/python-modules/sensorpro-ble/default.nix b/pkgs/development/python-modules/sensorpro-ble/default.nix
index 4c8412e7f9363..4a730bf48d92f 100644
--- a/pkgs/development/python-modules/sensorpro-ble/default.nix
+++ b/pkgs/development/python-modules/sensorpro-ble/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, bluetooth-data-tools
-, bluetooth-sensor-state-data
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, sensor-state-data
+{
+  lib,
+  bluetooth-data-tools,
+  bluetooth-sensor-state-data,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  sensor-state-data,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
       --replace " --cov=sensorpro_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     bluetooth-data-tools
@@ -38,13 +37,9 @@ buildPythonPackage rec {
     sensor-state-data
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "sensorpro_ble"
-  ];
+  pythonImportsCheck = [ "sensorpro_ble" ];
 
   meta = with lib; {
     description = "Library for Sensorpro BLE devices";
diff --git a/pkgs/development/python-modules/sensorpush-ble/default.nix b/pkgs/development/python-modules/sensorpush-ble/default.nix
index e26378b1e2465..fb458d9d0626c 100644
--- a/pkgs/development/python-modules/sensorpush-ble/default.nix
+++ b/pkgs/development/python-modules/sensorpush-ble/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, bluetooth-data-tools
-, bluetooth-sensor-state-data
-, buildPythonPackage
-, fetchFromGitHub
-, home-assistant-bluetooth
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, sensor-state-data
+{
+  lib,
+  bluetooth-data-tools,
+  bluetooth-sensor-state-data,
+  buildPythonPackage,
+  fetchFromGitHub,
+  home-assistant-bluetooth,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  sensor-state-data,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
       --replace " --cov=sensorpush_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     bluetooth-data-tools
@@ -40,13 +39,9 @@ buildPythonPackage rec {
     sensor-state-data
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook  ];
-
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "sensorpush_ble"
-  ];
+  pythonImportsCheck = [ "sensorpush_ble" ];
 
   meta = with lib; {
     description = "Library for SensorPush BLE devices";
diff --git a/pkgs/development/python-modules/sentence-splitter/default.nix b/pkgs/development/python-modules/sentence-splitter/default.nix
index 38ebc7fd6e2e7..1b88987698ce1 100644
--- a/pkgs/development/python-modules/sentence-splitter/default.nix
+++ b/pkgs/development/python-modules/sentence-splitter/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-
-, pytestCheckHook
-, regex
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  pytestCheckHook,
+  regex,
 }:
 
 buildPythonPackage rec {
@@ -21,22 +22,16 @@ buildPythonPackage rec {
     hash = "sha256-FxRi8fhKB9++lCTFpCAug0fxjkSVTKChLY84vkshR34=";
   };
 
-  propagatedBuildInputs = [
-    regex
-  ];
+  propagatedBuildInputs = [ regex ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "sentence_splitter"
-  ];
+  pythonImportsCheck = [ "sentence_splitter" ];
 
   meta = with lib; {
     description = "Text to sentence splitter using heuristic algorithm by Philipp Koehn and Josh Schroeder";
     homepage = "https://github.com/mediacloud/sentence-splitter";
     license = licenses.lgpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sentence-transformers/default.nix b/pkgs/development/python-modules/sentence-transformers/default.nix
index aa68ab9133e80..b9cf305a8d659 100644
--- a/pkgs/development/python-modules/sentence-transformers/default.nix
+++ b/pkgs/development/python-modules/sentence-transformers/default.nix
@@ -1,39 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, huggingface-hub
-, nltk
-, numpy
-, pytestCheckHook
-, pythonOlder
-, scikit-learn
-, scipy
-, sentencepiece
-, setuptools
-, tokenizers
-, torch
-, torchvision
-, tqdm
-, transformers
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  huggingface-hub,
+  nltk,
+  numpy,
+  scikit-learn,
+  scipy,
+  sentencepiece,
+  tokenizers,
+  torch,
+  tqdm,
+  transformers,
+
+  # tests
+  accelerate,
+  datasets,
+  pytestCheckHook,
+  pytest-cov,
 }:
 
 buildPythonPackage rec {
   pname = "sentence-transformers";
-  version = "2.7.0";
+  version = "3.1.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
-
   src = fetchFromGitHub {
     owner = "UKPLab";
     repo = "sentence-transformers";
     rev = "refs/tags/v${version}";
-    hash = "sha256-xER+WHprW83KWJ0bom+lTn0HNU7PgGROnp/QLG1uUcw=";
+    hash = "sha256-YtAgv0vH2aL7UX3ETVfwDEQYEWYo5Pj/R45CeH7T3BU=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     huggingface-hub
@@ -44,43 +49,56 @@ buildPythonPackage rec {
     sentencepiece
     tokenizers
     torch
-    torchvision
     tqdm
     transformers
   ];
 
   nativeCheckInputs = [
+    accelerate
+    datasets
     pytestCheckHook
+    pytest-cov
   ];
 
-  pythonImportsCheck = [
-    "sentence_transformers"
-  ];
+  pythonImportsCheck = [ "sentence_transformers" ];
 
   disabledTests = [
     # Tests require network access
-    "test_simple_encode"
-    "test_paraphrase_mining"
     "test_cmnrl_same_grad"
     "test_LabelAccuracyEvaluator"
+    "test_model_card_reuse"
+    "test_paraphrase_mining"
     "test_ParaphraseMiningEvaluator"
+    "test_simple_encode"
+    "test_trainer"
+    "test_trainer_invalid_column_names"
+    "test_trainer_multi_dataset_errors"
   ];
 
   disabledTestPaths = [
     # Tests require network access
-    "tests/test_pretrained_stsb.py"
-    "tests/test_sentence_transformer.py"
+    "tests/evaluation/test_information_retrieval_evaluator.py"
     "tests/test_compute_embeddings.py"
-    "tests/test_multi_process.py"
     "tests/test_cross_encoder.py"
+    "tests/test_model_card_data.py"
+    "tests/test_multi_process.py"
+    "tests/test_pretrained_stsb.py"
+    "tests/test_sentence_transformer.py"
     "tests/test_train_stsb.py"
   ];
 
-  meta = with lib; {
+  # Sentence-transformer needs a writable hf_home cache
+  postInstall = ''
+    export HF_HOME=$(mktemp -d)
+  '';
+
+  meta = {
     description = "Multilingual Sentence & Image Embeddings with BERT";
     homepage = "https://github.com/UKPLab/sentence-transformers";
     changelog = "https://github.com/UKPLab/sentence-transformers/releases/tag/${version}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ dit7ya ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ dit7ya ];
+    # Segmentation fault at import
+    broken = stdenv.hostPlatform.system == "x86_64-darwin";
   };
 }
diff --git a/pkgs/development/python-modules/sentencepiece/default.nix b/pkgs/development/python-modules/sentencepiece/default.nix
index 0307cd4be7fcc..211d753d1c943 100644
--- a/pkgs/development/python-modules/sentencepiece/default.nix
+++ b/pkgs/development/python-modules/sentencepiece/default.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
+{
+  buildPythonPackage,
 
-, sentencepiece
-, pkg-config
+  sentencepiece,
+  pkg-config,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/sentinel/default.nix b/pkgs/development/python-modules/sentinel/default.nix
index adec747c772ad..e89a52fa0fbbc 100644
--- a/pkgs/development/python-modules/sentinel/default.nix
+++ b/pkgs/development/python-modules/sentinel/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi}:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "sentinel";
diff --git a/pkgs/development/python-modules/sentinels/default.nix b/pkgs/development/python-modules/sentinels/default.nix
index 331c957a9f4f6..8a7a2328f9b47 100644
--- a/pkgs/development/python-modules/sentinels/default.nix
+++ b/pkgs/development/python-modules/sentinels/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,13 +19,9 @@ buildPythonPackage rec {
     sha256 = "1cglkxph47pki4db4kjx5g4ikxp2milqdlcjgqwmx4p1gx6p1q3v";
   };
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  propagatedBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "sentinels" ];
 
diff --git a/pkgs/development/python-modules/sentry-sdk/1.nix b/pkgs/development/python-modules/sentry-sdk/1.nix
new file mode 100644
index 0000000000000..db47e03c017d9
--- /dev/null
+++ b/pkgs/development/python-modules/sentry-sdk/1.nix
@@ -0,0 +1,136 @@
+{
+  lib,
+  stdenv,
+  aiohttp,
+  apache-beam,
+  asttokens,
+  blinker,
+  bottle,
+  buildPythonPackage,
+  celery,
+  certifi,
+  chalice,
+  django,
+  executing,
+  falcon,
+  fetchFromGitHub,
+  flask,
+  gevent,
+  httpx,
+  jsonschema,
+  mock,
+  pure-eval,
+  pyrsistent,
+  pyspark,
+  pysocks,
+  pytest-forked,
+  pytest-localserver,
+  pytest-watch,
+  pytestCheckHook,
+  pythonOlder,
+  quart,
+  rq,
+  sanic,
+  setuptools,
+  sqlalchemy,
+  tornado,
+  urllib3,
+}:
+
+buildPythonPackage rec {
+  pname = "sentry-sdk";
+  version = "1.45.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "getsentry";
+    repo = "sentry-python";
+    rev = "refs/tags/${version}";
+    hash = "sha256-OWoMqJlf0vmBHWWsW6mF4u5X9USzxkFmCJyX7Ws0dD0=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    certifi
+    urllib3
+  ];
+
+  passthru.optional-dependencies = {
+    aiohttp = [ aiohttp ];
+    beam = [ apache-beam ];
+    bottle = [ bottle ];
+    celery = [ celery ];
+    chalice = [ chalice ];
+    django = [ django ];
+    falcon = [ falcon ];
+    flask = [
+      flask
+      blinker
+    ];
+    httpx = [ httpx ];
+    pyspark = [ pyspark ];
+    pure_eval = [
+      asttokens
+      executing
+      pure-eval
+    ];
+    quart = [
+      quart
+      blinker
+    ];
+    rq = [ rq ];
+    sanic = [ sanic ];
+    sqlalchemy = [ sqlalchemy ];
+    tornado = [ tornado ];
+  };
+
+  nativeCheckInputs = [
+    asttokens
+    executing
+    gevent
+    jsonschema
+    mock
+    pure-eval
+    pyrsistent
+    pysocks
+    pytest-forked
+    pytest-localserver
+    pytest-watch
+    pytestCheckHook
+  ];
+
+  doCheck = !stdenv.hostPlatform.isDarwin;
+
+  disabledTests = [
+    # Issue with the asseration
+    "test_auto_enabling_integrations_catches_import_error"
+    "test_default_release"
+  ];
+
+  disabledTestPaths =
+    [
+      # Varius integration tests fail every once in a while when we
+      # upgrade dependencies, so don't bother testing them.
+      "tests/integrations/"
+    ]
+    ++ lib.optionals (stdenv.buildPlatform != "x86_64-linux") [
+      # test crashes on aarch64
+      "tests/test_transport.py"
+    ];
+
+  pythonImportsCheck = [ "sentry_sdk" ];
+
+  meta = with lib; {
+    description = "Python SDK for Sentry.io";
+    homepage = "https://github.com/getsentry/sentry-python";
+    changelog = "https://github.com/getsentry/sentry-python/blob/${version}/CHANGELOG.md";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [
+      fab
+      gebner
+    ];
+  };
+}
diff --git a/pkgs/development/python-modules/sentry-sdk/default.nix b/pkgs/development/python-modules/sentry-sdk/default.nix
index 3f57549a1e39d..14c1db3403481 100644
--- a/pkgs/development/python-modules/sentry-sdk/default.nix
+++ b/pkgs/development/python-modules/sentry-sdk/default.nix
@@ -1,136 +1,204 @@
-{
-  lib,
-  stdenv,
-  aiohttp,
-  apache-beam,
-  asttokens,
-  blinker,
-  bottle,
-  buildPythonPackage,
-  celery,
-  certifi,
-  chalice,
-  django,
-  executing,
-  falcon,
-  fetchFromGitHub,
-  flask,
-  gevent,
-  httpx,
-  jsonschema,
-  mock,
-  pure-eval,
-  pyrsistent,
-  pyspark,
-  pysocks,
-  pytest-forked,
-  pytest-localserver,
-  pytest-watch,
-  pytestCheckHook,
-  pythonOlder,
-  quart,
-  rq,
-  sanic,
-  setuptools,
-  sqlalchemy,
-  tornado,
-  urllib3,
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+
+# build-system
+, setuptools
+
+# dependencies
+, certifi
+, urllib3
+
+# optional-dependencies
+, aiohttp
+, anthropic
+, asyncpg
+, apache-beam
+, bottle
+, celery
+, celery-redbeat
+, chalice
+, clickhouse-driver
+, django
+, falcon
+, fastapi
+, flask
+, blinker
+, markupsafe
+, grpcio
+, protobuf
+, httpx
+, huey
+, huggingface-hub
+, langchain
+, loguru
+, openai
+, tiktoken
+, pure-eval
+, executing
+, asttokens
+, pymongo
+, pyspark
+, quart
+, rq
+, sanic
+, sqlalchemy
+, starlette
+, tornado
+
+# checks
+, ipdb
+, jsonschema
+, pip
+, pyrsistent
+, pysocks
+, pytest-asyncio
+, pytestCheckHook
+, pytest-forked
+, pytest-localserver
+, pytest-xdist
+, pytest-watch
+, responses
 }:
 
 buildPythonPackage rec {
   pname = "sentry-sdk";
-  version = "1.45.0";
+  version = "2.14.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
-
   src = fetchFromGitHub {
     owner = "getsentry";
     repo = "sentry-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-OWoMqJlf0vmBHWWsW6mF4u5X9USzxkFmCJyX7Ws0dD0=";
+    hash = "sha256-VrrzM81O3tG2GveP8Eq9kxVPSok7JIj3XjGOauGIlxY=";
   };
 
-  build-system = [ setuptools ];
+  postPatch = ''
+    sed -i "/addopts =/d" pytest.ini
+  '';
+
+  build-system = [
+    setuptools
+  ];
 
   dependencies = [
     certifi
     urllib3
   ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     aiohttp = [ aiohttp ];
+    anthropic = [ anthropic ];
+    # TODO: arq
+    asyncpg = [ asyncpg ];
     beam = [ apache-beam ];
     bottle = [ bottle ];
     celery = [ celery ];
+    celery-redbeat = [ celery-redbeat ];
     chalice = [ chalice ];
+    clickhouse-driver = [ clickhouse-driver ];
     django = [ django ];
     falcon = [ falcon ];
+    fastapi = [ fastapi ];
     flask = [
-      flask
       blinker
+      flask
+      markupsafe
+    ];
+    grpcio = [
+      grpcio
+      protobuf
     ];
     httpx = [ httpx ];
-    pyspark = [ pyspark ];
+    huey = [ huey ];
+    huggingface-hub = [ huggingface-hub ];
+    langchain = [ langchain ];
+    loguru = [ loguru ];
+    openai = [
+      openai
+      tiktoken
+    ];
+    # TODO: opentelemetry
+    # TODO: opentelemetry-experimental
     pure_eval = [
       asttokens
       executing
       pure-eval
     ];
+    pymongo = [ pymongo ];
+    pyspark = [ pyspark ];
     quart = [
-      quart
       blinker
+      quart
     ];
     rq = [ rq ];
     sanic = [ sanic ];
     sqlalchemy = [ sqlalchemy ];
+    starlette = [ starlette ];
+    # TODO: starlite
     tornado = [ tornado ];
   };
 
   nativeCheckInputs = [
-    asttokens
-    executing
-    gevent
-    jsonschema
-    mock
-    pure-eval
+    ipdb
     pyrsistent
+    responses
     pysocks
+    setuptools
+    executing
+    jsonschema
+    pip
+    pytest-asyncio
     pytest-forked
     pytest-localserver
+    pytest-xdist
     pytest-watch
     pytestCheckHook
   ];
 
-  doCheck = !stdenv.isDarwin;
+  __darwinAllowLocalNetworking = true;
 
   disabledTests = [
-    # Issue with the asseration
-    "test_auto_enabling_integrations_catches_import_error"
+    # depends on git revision
     "test_default_release"
+    # tries to pip install old setuptools version
+    "test_error_has_existing_trace_context_performance_disabled"
+    "test_error_has_existing_trace_context_performance_enabled"
+    "test_error_has_new_trace_context_performance_disabled"
+    "test_error_has_new_trace_context_performance_enabled"
+    "test_traces_sampler_gets_correct_values_in_sampling_context"
+    "test_performance_error"
+    "test_performance_no_error"
+    "test_timeout_error"
+    "test_handled_exception"
+    "test_unhandled_exception"
+    # network access
+    "test_create_connection_trace"
+    "test_crumb_capture"
+    "test_getaddrinfo_trace"
+    "test_omit_url_data_if_parsing_fails"
+    "test_span_origin"
+    # AttributeError: type object 'ABCMeta' has no attribute 'setup_once'
+    "test_ensure_integration_enabled_async_no_original_function_enabled"
+    "test_ensure_integration_enabled_no_original_function_enabled"
+    # sess = envelopes[1]
+    # IndexError: list index out of range
+    "test_session_mode_defaults_to_request_mode_in_wsgi_handler"
+    # assert count_item_types["sessions"] == 1
+    # assert 0 == 1
+    "test_auto_session_tracking_with_aggregates"
+    # timing sensitive
+    "test_profile_captured"
+    "test_continuous_profiler_manual_start_and_stop"
   ];
 
-  disabledTestPaths =
-    [
-      # Varius integration tests fail every once in a while when we
-      # upgrade dependencies, so don't bother testing them.
-      "tests/integrations/"
-    ]
-    ++ lib.optionals (stdenv.buildPlatform != "x86_64-linux") [
-      # test crashes on aarch64
-      "tests/test_transport.py"
-    ];
-
   pythonImportsCheck = [ "sentry_sdk" ];
 
   meta = with lib; {
-    description = "Python SDK for Sentry.io";
+    description = "Official Python SDK for Sentry.io";
     homepage = "https://github.com/getsentry/sentry-python";
-    changelog = "https://github.com/getsentry/sentry-python/blob/${version}/CHANGELOG.md";
-    license = licenses.bsd2;
-    maintainers = with maintainers; [
-      fab
-      gebner
-    ];
+    changelog = "https://github.com/getsentry/sentry-python/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ hexa ];
   };
 }
diff --git a/pkgs/development/python-modules/sepaxml/default.nix b/pkgs/development/python-modules/sepaxml/default.nix
index 56c40e892f0cb..d1e12b2ae1fad 100644
--- a/pkgs/development/python-modules/sepaxml/default.nix
+++ b/pkgs/development/python-modules/sepaxml/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, lxml
-, pytestCheckHook
-, text-unidecode
-, xmlschema
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  lxml,
+  pytestCheckHook,
+  text-unidecode,
+  xmlschema,
 }:
 
 buildPythonPackage rec {
@@ -32,14 +33,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "sepaxml"
-  ];
+  pythonImportsCheck = [ "sepaxml" ];
 
   meta = with lib; {
     description = "SEPA Direct Debit XML generation in python";
     homepage = "https://github.com/raphaelm/python-sepaxml/";
     license = licenses.mit;
-    maintainers = with maintainers; [ elohmeier ];
   };
 }
diff --git a/pkgs/development/python-modules/seqdiag/default.nix b/pkgs/development/python-modules/seqdiag/default.nix
index 8b8a89bd49db3..754ef870f8656 100644
--- a/pkgs/development/python-modules/seqdiag/default.nix
+++ b/pkgs/development/python-modules/seqdiag/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, blockdiag
-, buildPythonPackage
-, fetchFromGitHub
-, pynose
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  blockdiag,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,26 +22,16 @@ buildPythonPackage rec {
     hash = "sha256-Dh9JMx50Nexi0q39rYr9MpkKmQRAfT7lzsNOXoTuphg=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    blockdiag
-  ];
+  dependencies = [ blockdiag ];
 
-  nativeCheckInputs = [
-    pynose
-    pytestCheckHook
-  ];
+  patches = [ ./fix_test_generate.patch ];
 
-  pytestFlagsArray = [
-    "src/seqdiag/tests/"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+  pytestFlagsArray = [ "src/seqdiag/tests/" ];
 
-  pythonImportsCheck = [
-    "seqdiag"
-  ];
+  pythonImportsCheck = [ "seqdiag" ];
 
   meta = with lib; {
     description = "Generate sequence-diagram image from spec-text file (similar to Graphviz)";
diff --git a/pkgs/development/python-modules/seqdiag/fix_test_generate.patch b/pkgs/development/python-modules/seqdiag/fix_test_generate.patch
new file mode 100644
index 0000000000000..d96c1308e6ed7
--- /dev/null
+++ b/pkgs/development/python-modules/seqdiag/fix_test_generate.patch
@@ -0,0 +1,25 @@
+diff --git a/src/seqdiag/tests/test_generate_diagram.py b/src/seqdiag/tests/test_generate_diagram.py
+index cdd340f..a1dd2d4 100644
+--- a/src/seqdiag/tests/test_generate_diagram.py
++++ b/src/seqdiag/tests/test_generate_diagram.py
+@@ -13,19 +13,5 @@
+ #  See the License for the specific language governing permissions and
+ #  limitations under the License.
+ 
+-import os
+-
+ from blockdiag.tests.test_generate_diagram import (get_diagram_files,
+-                                                   testcase_generator)
+-
+-import seqdiag.command
+-
+-
+-def test_generate():
+-    mainfunc = seqdiag.command.main
+-    basepath = os.path.dirname(__file__)
+-    files = get_diagram_files(basepath)
+-    options = []
+-
+-    for testcase in testcase_generator(basepath, mainfunc, files, options):
+-        yield testcase
++                                                   test_generate_with_separate)
diff --git a/pkgs/development/python-modules/seqeval/default.nix b/pkgs/development/python-modules/seqeval/default.nix
index f93021f38ef4e..a8a06ed89ab24 100644
--- a/pkgs/development/python-modules/seqeval/default.nix
+++ b/pkgs/development/python-modules/seqeval/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, scikit-learn
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  scikit-learn,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
     scikit-learn
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # tests call perl script and get stuck in there
@@ -40,9 +39,9 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A Python framework for sequence labeling evaluation";
+    description = "Python framework for sequence labeling evaluation";
     homepage = "https://github.com/chakki-works/seqeval";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/serialio/default.nix b/pkgs/development/python-modules/serialio/default.nix
index 2ee338c66631c..e5cfb9bc6d8c6 100644
--- a/pkgs/development/python-modules/serialio/default.nix
+++ b/pkgs/development/python-modules/serialio/default.nix
@@ -1,11 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, pyserial
-, sockio
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pyserial,
+  sockio,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +29,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "serialio"
-  ];
+  pythonImportsCheck = [ "serialio" ];
 
   meta = with lib; {
     description = "Library for concurrency agnostic serial communication";
diff --git a/pkgs/development/python-modules/serializable/default.nix b/pkgs/development/python-modules/serializable/default.nix
index 5c881558d69ec..abc9e1378b108 100644
--- a/pkgs/development/python-modules/serializable/default.nix
+++ b/pkgs/development/python-modules/serializable/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, simplejson
-, six
-, typechecks
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  simplejson,
+  six,
+  typechecks,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-AXlgIc1B7bkR+joXn6ZSxk/t848CWlgVZp8WIsSZFKQ=";
   };
 
-  propagatedBuildInputs = [ simplejson six typechecks ];
+  propagatedBuildInputs = [
+    simplejson
+    six
+    typechecks
+  ];
 
   pythonImportsCheck = [ "serializable" ];
 
diff --git a/pkgs/development/python-modules/serpent/default.nix b/pkgs/development/python-modules/serpent/default.nix
index 8be976ca36428..f6ddf55407032 100644
--- a/pkgs/development/python-modules/serpent/default.nix
+++ b/pkgs/development/python-modules/serpent/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, isPy27
-, enum34
-, attrs
-, pytz
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  enum34,
+  attrs,
+  pytz,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,15 +21,16 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = lib.optionals isPy27 [ enum34 ];
 
-  nativeCheckInputs = [ attrs pytz ];
-  checkPhase = ''
-    ${python.interpreter} setup.py test
-  '';
+  nativeCheckInputs = [
+    attrs
+    pytz
+    pytestCheckHook
+  ];
 
   meta = with lib; {
-    description = "A simple serialization library based on ast.literal_eval";
+    description = "Simple serialization library based on ast.literal_eval";
     homepage = "https://github.com/irmen/Serpent";
     license = licenses.mit;
     maintainers = with maintainers; [ prusnak ];
-    };
+  };
 }
diff --git a/pkgs/development/python-modules/serpy/default.nix b/pkgs/development/python-modules/serpy/default.nix
index 9f086e4c86e58..10f0561849722 100644
--- a/pkgs/development/python-modules/serpy/default.nix
+++ b/pkgs/development/python-modules/serpy/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,21 +18,17 @@ buildPythonPackage rec {
     sha256 = "3772b2a9923fbf674000ff51abebf6ea8f0fca0a2cfcbfa0d63ff118193d1ec5";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   # ImportError: No module named 'tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "serpy"
-  ];
+  pythonImportsCheck = [ "serpy" ];
 
   meta = with lib; {
     description = "Ridiculously fast object serialization";
     homepage = "https://github.com/clarkduvall/serpy";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/servefile/default.nix b/pkgs/development/python-modules/servefile/default.nix
index 327a278eff93b..147c9953bc47e 100644
--- a/pkgs/development/python-modules/servefile/default.nix
+++ b/pkgs/development/python-modules/servefile/default.nix
@@ -1,10 +1,10 @@
-{ stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, lib
-, pyopenssl
-, pytestCheckHook
-, requests
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pyopenssl,
+  pytestCheckHook,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +21,10 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ pyopenssl ];
 
-  nativeCheckInputs = [ pytestCheckHook requests ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    requests
+  ];
   # Test attempts to connect to a port on localhost which fails in nix build
   # environment.
   disabledTests = [
diff --git a/pkgs/development/python-modules/serverfiles/default.nix b/pkgs/development/python-modules/serverfiles/default.nix
index 9c8fa8cb14973..5decec746d7b6 100644
--- a/pkgs/development/python-modules/serverfiles/default.nix
+++ b/pkgs/development/python-modules/serverfiles/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,7 @@ buildPythonPackage rec {
   nativeCheckInputs = [ unittestCheckHook ];
 
   meta = {
-    description = "An utility that accesses files on a HTTP server and stores them locally for reuse";
+    description = "Utility that accesses files on a HTTP server and stores them locally for reuse";
     homepage = "https://github.com/biolab/serverfiles";
     license = [ lib.licenses.gpl3Plus ];
     maintainers = [ lib.maintainers.lucasew ];
diff --git a/pkgs/development/python-modules/serverlessrepo/default.nix b/pkgs/development/python-modules/serverlessrepo/default.nix
index 68ebeca520697..4d1c79fda5abd 100644
--- a/pkgs/development/python-modules/serverlessrepo/default.nix
+++ b/pkgs/development/python-modules/serverlessrepo/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, boto3
-, six
-, pyyaml
-, mock
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  boto3,
+  six,
+  pyyaml,
+  mock,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -38,13 +39,9 @@ buildPythonPackage rec {
       --replace "boto3~=1.9, >=1.9.56" "boto3"
   '';
 
-  pytestFlagsArray = [
-    "tests/unit"
-  ];
+  pytestFlagsArray = [ "tests/unit" ];
 
-  pythonImportsCheck = [
-    "serverlessrepo"
-  ];
+  pythonImportsCheck = [ "serverlessrepo" ];
 
   meta = with lib; {
     homepage = "https://github.com/awslabs/aws-serverlessrepo-python";
diff --git a/pkgs/development/python-modules/service-identity/default.nix b/pkgs/development/python-modules/service-identity/default.nix
index 9f708245cd443..2a6e22a9a4cf6 100644
--- a/pkgs/development/python-modules/service-identity/default.nix
+++ b/pkgs/development/python-modules/service-identity/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, attrs
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, hatch-fancy-pypi-readme
-, hatch-vcs
-, hatchling
-, idna
-, pyasn1
-, pyasn1-modules
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  hatch-fancy-pypi-readme,
+  hatch-vcs,
+  hatchling,
+  idna,
+  pyasn1,
+  pyasn1-modules,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -41,13 +42,9 @@ buildPythonPackage rec {
     pyasn1-modules
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "service_identity"
-  ];
+  pythonImportsCheck = [ "service_identity" ];
 
   meta = with lib; {
     description = "Service identity verification for pyOpenSSL";
diff --git a/pkgs/development/python-modules/setproctitle/default.nix b/pkgs/development/python-modules/setproctitle/default.nix
index dfbee6e92469d..e07667cdd05c1 100644
--- a/pkgs/development/python-modules/setproctitle/default.nix
+++ b/pkgs/development/python-modules/setproctitle/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,24 +19,17 @@ buildPythonPackage rec {
     hash = "sha256-yRPhUefqAVZ4N/8DeiPKh0AZKIAZi3+7kLFtGBYHyq4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # tries to compile programs with dependencies that aren't available
-  disabledTestPaths = [
-    "tests/setproctitle_test.py"
-  ];
+  disabledTestPaths = [ "tests/setproctitle_test.py" ];
 
   meta = with lib; {
     description = "Allows a process to change its title (as displayed by system tools such as ps and top)";
-    homepage =  "https://github.com/dvarrazzo/py-setproctitle";
+    homepage = "https://github.com/dvarrazzo/py-setproctitle";
     license = licenses.bsdOriginal;
     maintainers = with maintainers; [ exi ];
   };
-
 }
diff --git a/pkgs/development/python-modules/setupmeta/default.nix b/pkgs/development/python-modules/setupmeta/default.nix
index 46e1b9a18a3ef..458d65e9c0347 100644
--- a/pkgs/development/python-modules/setupmeta/default.nix
+++ b/pkgs/development/python-modules/setupmeta/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, git
-, mock
-, pep440
-, pip
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
-, six
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  git,
+  mock,
+  pep440,
+  pip,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  six,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -59,9 +60,7 @@ buildPythonPackage rec {
     "test_brand_new_project"
   ];
 
-  pythonImportsCheck = [
-    "setupmeta"
-  ];
+  pythonImportsCheck = [ "setupmeta" ];
 
   meta = with lib; {
     description = "Python module to simplify setup.py files";
diff --git a/pkgs/development/python-modules/setuptools-changelog-shortener/default.nix b/pkgs/development/python-modules/setuptools-changelog-shortener/default.nix
index fef62dfbfbb92..59fe9fd4b52c6 100644
--- a/pkgs/development/python-modules/setuptools-changelog-shortener/default.nix
+++ b/pkgs/development/python-modules/setuptools-changelog-shortener/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, tomli
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  tomli,
+  wheel,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/setuptools-declarative-requirements/default.nix b/pkgs/development/python-modules/setuptools-declarative-requirements/default.nix
index 4e090aac53b6c..694be226df0d5 100644
--- a/pkgs/development/python-modules/setuptools-declarative-requirements/default.nix
+++ b/pkgs/development/python-modules/setuptools-declarative-requirements/default.nix
@@ -1,5 +1,12 @@
-{ buildPythonPackage, fetchPypi, lib, pypiserver, pytestCheckHook
-, setuptools-scm, virtualenv }:
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  pypiserver,
+  pytestCheckHook,
+  setuptools-scm,
+  virtualenv,
+}:
 
 buildPythonPackage rec {
   pname = "setuptools-declarative-requirements";
@@ -13,7 +20,11 @@ buildPythonPackage rec {
 
   buildInputs = [ setuptools-scm ];
 
-  nativeCheckInputs = [ pypiserver pytestCheckHook virtualenv ];
+  nativeCheckInputs = [
+    pypiserver
+    pytestCheckHook
+    virtualenv
+  ];
 
   # Tests use network
   doCheck = false;
diff --git a/pkgs/development/python-modules/setuptools-dso/default.nix b/pkgs/development/python-modules/setuptools-dso/default.nix
index 306d6b794e609..707a404a90254 100644
--- a/pkgs/development/python-modules/setuptools-dso/default.nix
+++ b/pkgs/development/python-modules/setuptools-dso/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose2
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  nose2,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,10 @@ buildPythonPackage rec {
 
   build-system = [ setuptools ];
 
-  nativeCheckInputs = [ nose2 pytestCheckHook ];
+  nativeCheckInputs = [
+    nose2
+    pytestCheckHook
+  ];
 
   meta = with lib; {
     description = "setuptools extension for building non-Python Dynamic Shared Objects";
diff --git a/pkgs/development/python-modules/setuptools-generate/default.nix b/pkgs/development/python-modules/setuptools-generate/default.nix
index 9f2b71697e9bb..261fefab1ea1c 100644
--- a/pkgs/development/python-modules/setuptools-generate/default.nix
+++ b/pkgs/development/python-modules/setuptools-generate/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools-scm
-, click
-, help2man
-, markdown-it-py
-, shtab
-, tomli
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools-scm,
+  click,
+  help2man,
+  markdown-it-py,
+  shtab,
+  tomli,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,22 +26,16 @@ buildPythonPackage rec {
     hash = "sha256-xDjxkWy/n0jStI9eLcM6WduyU9vGjtBOmJ86dpXjceQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     click
     help2man
     markdown-it-py
     shtab
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "setuptools_generate" ];
 
diff --git a/pkgs/development/python-modules/setuptools-gettext/default.nix b/pkgs/development/python-modules/setuptools-gettext/default.nix
index 394f4c4693fad..31440a40e5a34 100644
--- a/pkgs/development/python-modules/setuptools-gettext/default.nix
+++ b/pkgs/development/python-modules/setuptools-gettext/default.nix
@@ -1,37 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  tomli,
+  pytestCheckHook,
+  gettext,
 }:
 
 buildPythonPackage rec {
   pname = "setuptools-gettext";
-  version = "0.1.11";
-  format = "setuptools";
+  version = "0.1.14";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "breezy-team";
     repo = "setuptools-gettext";
     rev = "refs/tags/v${version}";
-    hash = "sha256-yLKn4wwGgRdlsISAT71lD2vkIefsTJRB+OEA030adZY=";
+    hash = "sha256-05xKWRxmoI8tnRENuiK3Z3WNMyjgXIX5p3vhzSUeytQ=";
   };
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ setuptools ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
+
+  pythonImportsCheck = [ "setuptools_gettext" ];
 
-  pythonImportsCheck = [
-    "setuptools_gettext"
+  nativeCheckInputs = [
+    pytestCheckHook
+    gettext
   ];
 
-  meta = with lib; {
+  meta = {
     changelog = "https://github.com/breezy-team/setuptools-gettext/releases/tag/v${version}";
     description = "setuptools plugin for building mo files";
     homepage = "https://github.com/breezy-team/setuptools-gettext";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ tomasajt ];
   };
 }
diff --git a/pkgs/development/python-modules/setuptools-git-versioning/default.nix b/pkgs/development/python-modules/setuptools-git-versioning/default.nix
index 311de1fe5ff87..edc6a72c015f7 100644
--- a/pkgs/development/python-modules/setuptools-git-versioning/default.nix
+++ b/pkgs/development/python-modules/setuptools-git-versioning/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, build
-, coverage
-, git
-, packaging
-, pytestCheckHook
-, pytest-rerunfailures
-, pythonOlder
-, setuptools
-, toml
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  build,
+  coverage,
+  git,
+  packaging,
+  pytestCheckHook,
+  pytest-rerunfailures,
+  pythonOlder,
+  setuptools,
+  toml,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -33,13 +34,9 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     packaging
     setuptools
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    toml
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ toml ];
 
-  pythonImportsCheck = [
-    "setuptools_git_versioning"
-  ];
+  pythonImportsCheck = [ "setuptools_git_versioning" ];
 
   nativeCheckInputs = [
     build
@@ -56,7 +53,10 @@ buildPythonPackage rec {
   '';
 
   # limit tests because the full suite takes several minutes to run
-  pytestFlagsArray = [ "-m" "important" ];
+  pytestFlagsArray = [
+    "-m"
+    "important"
+  ];
 
   disabledTests = [
     # runs an isolated build that uses internet to download dependencies
diff --git a/pkgs/development/python-modules/setuptools-git/default.nix b/pkgs/development/python-modules/setuptools-git/default.nix
index 8e0b4af312b5f..ae5b4224ad0fe 100644
--- a/pkgs/development/python-modules/setuptools-git/default.nix
+++ b/pkgs/development/python-modules/setuptools-git/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pkgs
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pkgs,
 }:
 
 buildPythonPackage rec {
@@ -22,5 +23,4 @@ buildPythonPackage rec {
     homepage = "https://pypi.python.org/pypi/setuptools-git";
     license = licenses.bsd3;
   };
-
 }
diff --git a/pkgs/development/python-modules/setuptools-lint/default.nix b/pkgs/development/python-modules/setuptools-lint/default.nix
index 561b75e804832..3c89bdecda355 100644
--- a/pkgs/development/python-modules/setuptools-lint/default.nix
+++ b/pkgs/development/python-modules/setuptools-lint/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pylint }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pylint,
+}:
 
 buildPythonPackage rec {
   pname = "setuptools-lint";
@@ -19,4 +24,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ nickhu ];
   };
 }
-
diff --git a/pkgs/development/python-modules/setuptools-odoo/default.nix b/pkgs/development/python-modules/setuptools-odoo/default.nix
index cc2e767d2520d..6e2a3556013f8 100644
--- a/pkgs/development/python-modules/setuptools-odoo/default.nix
+++ b/pkgs/development/python-modules/setuptools-odoo/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, git
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
-, writeScript
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  git,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  writeScript,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-38YlkDH/PuJ1yvQ43OYmdnRd1SGJULv6fC/+fitLDJ8=";
   };
 
-  propagatedBuildInputs = [
-    setuptools-scm
-  ];
+  propagatedBuildInputs = [ setuptools-scm ];
 
   # HACK https://github.com/NixOS/nixpkgs/pull/229460
   patchPhase = ''
@@ -37,9 +36,7 @@ buildPythonPackage rec {
     runHook postPatch
   '';
 
-  pythonImportsCheck = [
-    "setuptools_odoo"
-  ];
+  pythonImportsCheck = [ "setuptools_odoo" ];
 
   setupHook = writeScript "setupHook.sh" ''
     setuptoolsOdooHook() {
diff --git a/pkgs/development/python-modules/setuptools-rust/default.nix b/pkgs/development/python-modules/setuptools-rust/default.nix
index a4aae07428245..89ece83ec0546 100644
--- a/pkgs/development/python-modules/setuptools-rust/default.nix
+++ b/pkgs/development/python-modules/setuptools-rust/default.nix
@@ -1,13 +1,18 @@
-{ callPackage
-, lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, semantic-version
-, setuptools
-, setuptools-scm
-, tomli
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  maturin,
+  pythonOlder,
+  rustPlatform,
+  rustc,
+  cargo,
+  semantic-version,
+  setuptools,
+  setuptools-rust,
+  setuptools-scm,
+  tomli,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -31,23 +36,38 @@ buildPythonPackage rec {
     semantic-version
     setuptools
     typing-extensions
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
-  pythonImportsCheck = [
-    "setuptools_rust"
-  ];
+  pythonImportsCheck = [ "setuptools_rust" ];
 
   doCheck = false;
 
-  passthru.tests.pyo3 = callPackage ./pyo3-test { };
+  passthru.tests = {
+    pyo3 = maturin.tests.pyo3.override {
+      format = "setuptools";
+      buildAndTestSubdir = null;
+
+      nativeBuildInputs =
+        [ setuptools-rust ]
+        ++ [
+          rustPlatform.cargoSetupHook
+          cargo
+          rustc
+        ];
+
+      preConfigure = ''
+        # sourceRoot puts Cargo.lock in the wrong place due to the
+        # example setup.
+        cd examples/word-count
+      '';
+    };
+  };
 
   meta = with lib; {
     description = "Setuptools plugin for Rust support";
     homepage = "https://github.com/PyO3/setuptools-rust";
     changelog = "https://github.com/PyO3/setuptools-rust/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/setuptools-rust/pyo3-test/default.nix b/pkgs/development/python-modules/setuptools-rust/pyo3-test/default.nix
deleted file mode 100644
index 3a82ef799255d..0000000000000
--- a/pkgs/development/python-modules/setuptools-rust/pyo3-test/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ callPackage
-, cargo
-, rustPlatform
-, rustc
-, setuptools-rust
-}:
-
-callPackage ../../../tools/rust/maturin/pyo3-test/generic.nix {
-  # Isolated builds break for this package, because PyO3 is not
-  # in the build root of the Python Package:
-  #
-  # https://github.com/pypa/pip/issues/6276
-  #
-  format = "setuptools";
-
-  nativeBuildInputs = [ setuptools-rust ] ++ [
-    rustPlatform.cargoSetupHook
-    cargo
-    rustc
-  ];
-
-  preConfigure = ''
-    # sourceRoot puts Cargo.lock in the wrong place due to the
-    # example setup.
-    cd examples/word-count
-  '';
-}
diff --git a/pkgs/development/python-modules/setuptools-scm-git-archive/default.nix b/pkgs/development/python-modules/setuptools-scm-git-archive/default.nix
index f5f7fcd0561d1..a53df0fb0a581 100644
--- a/pkgs/development/python-modules/setuptools-scm-git-archive/default.nix
+++ b/pkgs/development/python-modules/setuptools-scm-git-archive/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, setuptools-scm
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,17 +23,11 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests.py"
-  ];
+  pytestFlagsArray = [ "tests.py" ];
 
-  pythonImportsCheck = [
-    "setuptools_scm_git_archive"
-  ];
+  pythonImportsCheck = [ "setuptools_scm_git_archive" ];
 
   meta = with lib; {
     description = "setuptools_scm plugin for git archives";
diff --git a/pkgs/development/python-modules/setuptools-scm/default.nix b/pkgs/development/python-modules/setuptools-scm/default.nix
index 01a1f0ff0d4b4..cc82356de85a7 100644
--- a/pkgs/development/python-modules/setuptools-scm/default.nix
+++ b/pkgs/development/python-modules/setuptools-scm/default.nix
@@ -1,54 +1,46 @@
-{ lib
-, buildPythonPackage
-, callPackage
-, fetchPypi
-, pythonOlder
-
-# build-system
-, setuptools
-
-# dependencies
-, packaging
-, typing-extensions
-, tomli
-
-# optional-dependencies
-, rich
+{
+  lib,
+  buildPythonPackage,
+  callPackage,
+  fetchPypi,
+  pythonOlder,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  packaging,
+  typing-extensions,
+  tomli,
+
+  # optional-dependencies
+  rich,
 }:
 
 buildPythonPackage rec {
   pname = "setuptools-scm";
-  version = "8.0.4";
+  version = "8.1.0";
   pyproject = true;
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-tfQ/9oAGaVlRk/0JiRVk7p0dfcsZbKtLJQbVOi4clcc=";
+    pname = "setuptools_scm";
+    inherit version;
+    hash = "sha256-Qt6htldxy6k7elFdZaZdgkblYHaKZrkQalksjn8myKc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  build-system = [ setuptools ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     packaging
     setuptools
     typing-extensions
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
-  passthru.optional-dependencies = {
-    rich = [
-      rich
-    ];
+  optional-dependencies = {
+    rich = [ rich ];
   };
 
-  pythonImportsCheck = [
-    "setuptools_scm"
-  ];
+  pythonImportsCheck = [ "setuptools_scm" ];
 
   # check in passthru.tests.pytest to escape infinite recursion on pytest
   doCheck = false;
diff --git a/pkgs/development/python-modules/setuptools-scm/tests.nix b/pkgs/development/python-modules/setuptools-scm/tests.nix
index b679a0f5ca4c3..ad203b22c88a0 100644
--- a/pkgs/development/python-modules/setuptools-scm/tests.nix
+++ b/pkgs/development/python-modules/setuptools-scm/tests.nix
@@ -1,10 +1,11 @@
-{ buildPythonPackage
-, setuptools-scm
-, pytestCheckHook
-, git
-, mercurial
-, pip
-, virtualenv
+{
+  buildPythonPackage,
+  setuptools-scm,
+  pytestCheckHook,
+  git,
+  mercurial,
+  pip,
+  virtualenv,
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/setuptools-trial/default.nix b/pkgs/development/python-modules/setuptools-trial/default.nix
index 14f666d311a24..3d1bd90167dcc 100644
--- a/pkgs/development/python-modules/setuptools-trial/default.nix
+++ b/pkgs/development/python-modules/setuptools-trial/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, twisted
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  twisted,
 }:
 
 buildPythonPackage rec {
@@ -19,20 +20,14 @@ buildPythonPackage rec {
     hash = "sha256-FCIPj3YcSLoeJSbwhxlQd89U+tcJizgs4iBCLw/1mxI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    twisted
-  ];
+  propagatedBuildInputs = [ twisted ];
 
   # Couldn't get tests working
   doCheck = false;
 
-  pythonImportsCheck = [
-    "setuptools_trial"
-  ];
+  pythonImportsCheck = [ "setuptools_trial" ];
 
   meta = with lib; {
     description = "Setuptools plugin that makes unit tests execute with trial instead of pyunit";
diff --git a/pkgs/development/python-modules/setuptools/default.nix b/pkgs/development/python-modules/setuptools/default.nix
index 46a2597ed1419..7882a9363860a 100644
--- a/pkgs/development/python-modules/setuptools/default.nix
+++ b/pkgs/development/python-modules/setuptools/default.nix
@@ -1,21 +1,23 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, wheel
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  distutils,
+  fetchFromGitHub,
+  python,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "setuptools";
-  version = "69.2.0";
+  version = "72.1.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "pypa";
     repo = "setuptools";
     rev = "refs/tags/v${version}";
-    hash = "sha256-kll4zYFQn4g/8Fq0Y5vLvDXtotxYMbiNAgGa0sClFQk=";
+    hash = "sha256-3Hm9HxJdSmyhHtDZeMF76HaR17vZwZWYYhS6Z0nA8rU=";
   };
 
   patches = [
@@ -23,9 +25,7 @@ buildPythonPackage rec {
     ./setuptools-distutils-C++.patch
   ];
 
-  nativeBuildInputs = [
-    wheel
-  ];
+  nativeBuildInputs = [ wheel ];
 
   preBuild = lib.optionalString (!stdenv.hostPlatform.isWindows) ''
     export SETUPTOOLS_INSTALL_WINDOWS_SPECIFIC_FILES=0
@@ -34,10 +34,16 @@ buildPythonPackage rec {
   # Requires pytest, causing infinite recursion.
   doCheck = false;
 
+  passthru.tests = {
+    inherit distutils;
+  };
+
   meta = with lib; {
     description = "Utilities to facilitate the installation of Python packages";
     homepage = "https://github.com/pypa/setuptools";
-    changelog = "https://setuptools.pypa.io/en/stable/history.html#v${replaceStrings [ "." ] [ "-" ] version}";
+    changelog = "https://setuptools.pypa.io/en/stable/history.html#v${
+      replaceStrings [ "." ] [ "-" ] version
+    }";
     license = with licenses; [ mit ];
     platforms = python.meta.platforms;
     maintainers = teams.python.members;
diff --git a/pkgs/development/python-modules/setuptools/setuptools-distutils-C++.patch b/pkgs/development/python-modules/setuptools/setuptools-distutils-C++.patch
index 399e1682357de..10eae862de8a5 100644
--- a/pkgs/development/python-modules/setuptools/setuptools-distutils-C++.patch
+++ b/pkgs/development/python-modules/setuptools/setuptools-distutils-C++.patch
@@ -1,8 +1,8 @@
 diff --git a/setuptools/_distutils/cygwinccompiler.py b/setuptools/_distutils/cygwinccompiler.py
-index 47efa377..5cdbbe10 100644
+index 7b812fd05..c122a4318 100644
 --- a/setuptools/_distutils/cygwinccompiler.py
 +++ b/setuptools/_distutils/cygwinccompiler.py
-@@ -101,14 +101,19 @@ class CygwinCCompiler(UnixCCompiler):
+@@ -99,14 +99,18 @@ class CygwinCCompiler(UnixCCompiler):
          self.cxx = os.environ.get('CXX', 'g++')
  
          self.linker_dll = self.cc
@@ -10,19 +10,18 @@ index 47efa377..5cdbbe10 100644
          shared_option = "-shared"
  
          self.set_executables(
-             compiler='%s -mcygwin -O -Wall' % self.cc,
-             compiler_so='%s -mcygwin -mdll -O -Wall' % self.cc,
-             compiler_cxx='%s -mcygwin -O -Wall' % self.cxx,
-+            compiler_so_cxx='%s -mcygwin -mdll -O -Wall' % self.cxx,
-             linker_exe='%s -mcygwin' % self.cc,
-             linker_so=('{} -mcygwin {}'.format(self.linker_dll, shared_option)),
-+            linker_exe_cxx='%s -mcygwin' % self.cxx,
-+            linker_so_cxx=('%s -mcygwin %s' %
-+                (self.linker_dll_cxx, shared_option)),
+             compiler=f'{self.cc} -mcygwin -O -Wall',
+             compiler_so=f'{self.cc} -mcygwin -mdll -O -Wall',
++            compiler_so_cxx=f'{self.cxx} -mcygwin -mdll -O -Wall',
+             compiler_cxx=f'{self.cxx} -mcygwin -O -Wall',
+             linker_exe=f'{self.cc} -mcygwin',
+             linker_so=(f'{self.linker_dll} -mcygwin {shared_option}'),
++            linker_exe_cxx=f'{self.cxx} -mcygwin',
++            linker_so_cxx=(f'{self.cxx} -mcygwin {shared_option}'),
          )
  
          # Include the appropriate MSVC runtime library if Python was built
-@@ -140,9 +145,12 @@ class CygwinCCompiler(UnixCCompiler):
+@@ -138,9 +142,12 @@ class CygwinCCompiler(UnixCCompiler):
                  raise CompileError(msg)
          else:  # for other files use the C-compiler
              try:
@@ -38,24 +37,24 @@ index 47efa377..5cdbbe10 100644
              except DistutilsExecError as msg:
                  raise CompileError(msg)
  
-@@ -278,9 +286,12 @@ class Mingw32CCompiler(CygwinCCompiler):
+@@ -276,9 +283,12 @@ class Mingw32CCompiler(CygwinCCompiler):
          self.set_executables(
-             compiler='%s -O -Wall' % self.cc,
-             compiler_so='%s -mdll -O -Wall' % self.cc,
-+            compiler_so_cxx='%s -mdll -O -Wall' % self.cxx,
-             compiler_cxx='%s -O -Wall' % self.cxx,
-             linker_exe='%s' % self.cc,
-             linker_so='{} {}'.format(self.linker_dll, shared_option),
-+            linker_exe_cxx='%s' % self.cxx,
-+            linker_so_cxx='%s %s' % (self.linker_dll_cxx, shared_option)
+             compiler=f'{self.cc} -O -Wall',
+             compiler_so=f'{self.cc} -shared -O -Wall',
++            compiler_so_cxx=f'{self.cxx} -mdll -O -Wall',
+             compiler_cxx=f'{self.cxx} -O -Wall',
+             linker_exe=f'{self.cc}',
+             linker_so=f'{self.linker_dll} {shared_option}',
++            linker_exe_cxx=f'{self.cxx}',
++            linker_so_cxx=f'{self.linker_dll_cxx} {shared_option}',
          )
  
      def runtime_library_dir_option(self, dir):
 diff --git a/setuptools/_distutils/sysconfig.py b/setuptools/_distutils/sysconfig.py
-index a40a7231..e5aad4f4 100644
+index 7ebe67687..a995edf80 100644
 --- a/setuptools/_distutils/sysconfig.py
 +++ b/setuptools/_distutils/sysconfig.py
-@@ -297,6 +297,7 @@ def customize_compiler(compiler):  # noqa: C901
+@@ -304,6 +304,7 @@ def customize_compiler(compiler):  # noqa: C901
              cflags,
              ccshared,
              ldshared,
@@ -63,7 +62,7 @@ index a40a7231..e5aad4f4 100644
              shlib_suffix,
              ar,
              ar_flags,
-@@ -306,11 +307,14 @@ def customize_compiler(compiler):  # noqa: C901
+@@ -313,11 +314,14 @@ def customize_compiler(compiler):  # noqa: C901
              'CFLAGS',
              'CCSHARED',
              'LDSHARED',
@@ -78,7 +77,7 @@ index a40a7231..e5aad4f4 100644
          if 'CC' in os.environ:
              newcc = os.environ['CC']
              if 'LDSHARED' not in os.environ and ldshared.startswith(cc):
-@@ -322,19 +326,27 @@ def customize_compiler(compiler):  # noqa: C901
+@@ -329,19 +333,27 @@ def customize_compiler(compiler):  # noqa: C901
              cxx = os.environ['CXX']
          if 'LDSHARED' in os.environ:
              ldshared = os.environ['LDSHARED']
@@ -107,7 +106,7 @@ index a40a7231..e5aad4f4 100644
          if 'AR' in os.environ:
              ar = os.environ['AR']
          if 'ARFLAGS' in os.environ:
-@@ -343,13 +355,17 @@ def customize_compiler(compiler):  # noqa: C901
+@@ -350,13 +362,17 @@ def customize_compiler(compiler):  # noqa: C901
              archiver = ar + ' ' + ar_flags
  
          cc_cmd = cc + ' ' + cflags
@@ -127,10 +126,10 @@ index a40a7231..e5aad4f4 100644
          )
  
 diff --git a/setuptools/_distutils/unixccompiler.py b/setuptools/_distutils/unixccompiler.py
-index 6ca2332a..5ac64128 100644
+index 7e68596b2..7214dbd20 100644
 --- a/setuptools/_distutils/unixccompiler.py
 +++ b/setuptools/_distutils/unixccompiler.py
-@@ -115,9 +115,12 @@ class UnixCCompiler(CCompiler):
+@@ -118,9 +118,12 @@ class UnixCCompiler(CCompiler):
          'preprocessor': None,
          'compiler': ["cc"],
          'compiler_so': ["cc"],
@@ -144,7 +143,7 @@ index 6ca2332a..5ac64128 100644
          'archiver': ["ar", "-cr"],
          'ranlib': None,
      }
-@@ -181,8 +184,13 @@ class UnixCCompiler(CCompiler):
+@@ -187,8 +190,13 @@ class UnixCCompiler(CCompiler):
  
      def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts):
          compiler_so = compiler_fixup(self.compiler_so, cc_args + extra_postargs)
@@ -159,7 +158,7 @@ index 6ca2332a..5ac64128 100644
          except DistutilsExecError as msg:
              raise CompileError(msg)
  
-@@ -250,7 +258,8 @@ class UnixCCompiler(CCompiler):
+@@ -256,7 +264,8 @@ class UnixCCompiler(CCompiler):
                  # building an executable or linker_so (with shared options)
                  # when building a shared library.
                  building_exe = target_desc == CCompiler.EXECUTABLE
diff --git a/pkgs/development/python-modules/setuptools/tag-date.patch b/pkgs/development/python-modules/setuptools/tag-date.patch
index 441177a5d17e4..30ed812c67409 100644
--- a/pkgs/development/python-modules/setuptools/tag-date.patch
+++ b/pkgs/development/python-modules/setuptools/tag-date.patch
@@ -1,12 +1,9 @@
 diff --git a/setup.cfg b/setup.cfg
-index f23714b6..8aaeb330 100644
+index 38922089a..a743a2467 100644
 --- a/setup.cfg
 +++ b/setup.cfg
-@@ -1,6 +1,6 @@
+@@ -1,3 +1,3 @@
  [egg_info]
  tag_build = .post
 -tag_date = 1
 +tag_date = 0
-
- [aliases]
- clean_egg_info = egg_info -Db ''
diff --git a/pkgs/development/python-modules/sev-snp-measure/default.nix b/pkgs/development/python-modules/sev-snp-measure/default.nix
index 5293bc1179c0c..886bdf993632d 100644
--- a/pkgs/development/python-modules/sev-snp-measure/default.nix
+++ b/pkgs/development/python-modules/sev-snp-measure/default.nix
@@ -1,38 +1,32 @@
-{ buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, lib
-, pythonRelaxDepsHook
-, setuptools
+{
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  lib,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "sev-snp-measure";
-  version = "0.0.9";
+  version = "0.0.11";
 
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "virtee";
     repo = "sev-snp-measure";
-    rev = "v${version}";
-    hash = "sha256-efW4DMple26S3Jizc7yAvdPjVivyMJq4fEdkuToamGc=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-M+d9uIAQvEmEsdhhjlwHbhB2RhlaGjphN4ov2ipzCFY=";
   };
 
   nativeBuildInputs = [
     setuptools
-    pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = [ "cryptography" ];
 
   propagatedBuildInputs = [ cryptography ];
 
-  postPatch = ''
-    # See https://github.com/virtee/sev-snp-measure/pull/46
-    sed -i '/types-cryptography/d' setup.cfg requirements.txt
-  '';
-
   pythonImportsCheck = [ "sevsnpmeasure" ];
 
   meta = {
diff --git a/pkgs/development/python-modules/seventeentrack/default.nix b/pkgs/development/python-modules/seventeentrack/default.nix
index 351392aec46a2..d0331594e3fd5 100644
--- a/pkgs/development/python-modules/seventeentrack/default.nix
+++ b/pkgs/development/python-modules/seventeentrack/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiohttp
-, aresponses
-, attrs
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, pytz
+{
+  lib,
+  aiohttp,
+  aresponses,
+  attrs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
 }:
 
 buildPythonPackage rec {
@@ -40,9 +41,7 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -63,9 +62,7 @@ buildPythonPackage rec {
     "examples/"
   ];
 
-  pythonImportsCheck = [
-    "seventeentrack"
-  ];
+  pythonImportsCheck = [ "seventeentrack" ];
 
   meta = with lib; {
     description = "Python library to track package info from 17track.com";
diff --git a/pkgs/development/python-modules/sexpdata/default.nix b/pkgs/development/python-modules/sexpdata/default.nix
index 0349c7cd94797..4eb5d9f81322e 100644
--- a/pkgs/development/python-modules/sexpdata/default.nix
+++ b/pkgs/development/python-modules/sexpdata/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -17,21 +18,17 @@ buildPythonPackage rec {
     hash = "sha256-krZ7A2H2dm+PnkS5UZzz+8+vp1Xbhbv4k8Phz03awQk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sexpdata"
-  ];
+  pythonImportsCheck = [ "sexpdata" ];
 
   meta = with lib; {
     description = "S-expression parser for Python";
     homepage = "https://github.com/jd-boyd/sexpdata";
     changelog = "https://github.com/jd-boyd/sexpdata/releases/tag/v${version}";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sfepy/default.nix b/pkgs/development/python-modules/sfepy/default.nix
index 8e2c18fb1e625..599e853e5f723 100644
--- a/pkgs/development/python-modules/sfepy/default.nix
+++ b/pkgs/development/python-modules/sfepy/default.nix
@@ -1,48 +1,60 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, scipy
-, matplotlib
-, pyparsing
-, tables
-, cython_0
-, python
-, sympy
-, meshio
-, mpi4py
-, psutil
-, openssh
-, pyvista
-, pytest
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  cmake,
+  cython_0,
+  ninja,
+  oldest-supported-numpy,
+  setuptools,
+  scikit-build,
+  numpy,
+  scipy,
+  matplotlib,
+  pyparsing,
+  tables,
+  python,
+  sympy,
+  meshio,
+  openssh,
+  pyvista,
+  pytest,
 }:
 
 buildPythonPackage rec {
   pname = "sfepy";
-  version = "2023.1";
-  format = "setuptools";
+  version = "2024.1";
+  pyproject = true;
+
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "sfepy";
     repo = "sfepy";
     rev = "release_${version}";
-    hash = "sha256-PuU6DL9zftHltpYI9VZQzKGIP8l9UUU8GVChrHtpNM0=";
+    hash = "sha256-r2Qx9uJmVS4ugJxrIxg2UscnYu1Qr4hEkcz66NyWGmA=";
   };
 
-  propagatedBuildInputs = [
-    numpy
+  build-system = [
+    cmake
     cython_0
+    ninja
+    oldest-supported-numpy
+    setuptools
+    scikit-build
+  ];
+
+  dontUseCmakeConfigure = true;
+
+  dependencies = [
+    numpy
     scipy
     matplotlib
     pyparsing
     tables
     sympy
     meshio
-    mpi4py
-    psutil
-    openssh
     pyvista
   ];
 
@@ -58,9 +70,7 @@ buildPythonPackage rec {
     rm sfepy/tests/test_quadratures.py
   '';
 
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
   checkPhase = ''
     export OMPI_MCA_plm_rsh_agent=${openssh}/bin/ssh
@@ -71,10 +81,10 @@ buildPythonPackage rec {
     ${python.interpreter} -c "import sfepy; sfepy.test()"
   '';
 
-  meta = with lib; {
+  meta = {
     homepage = "https://sfepy.org/";
     description = "Simple Finite Elements in Python";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ wd15 ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ wd15 ];
   };
 }
diff --git a/pkgs/development/python-modules/sfrbox-api/default.nix b/pkgs/development/python-modules/sfrbox-api/default.nix
index c1939e70a7e46..4764b5ff573fa 100644
--- a/pkgs/development/python-modules/sfrbox-api/default.nix
+++ b/pkgs/development/python-modules/sfrbox-api/default.nix
@@ -1,50 +1,46 @@
-{ lib
-, buildPythonPackage
-, click
-, defusedxml
-, fetchFromGitHub
-, httpx
-, poetry-core
-, pydantic
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, respx
+{
+  lib,
+  buildPythonPackage,
+  click,
+  defusedxml,
+  fetchFromGitHub,
+  httpx,
+  mashumaro,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  respx,
 }:
 
 buildPythonPackage rec {
   pname = "sfrbox-api";
-  version = "0.0.9";
+  version = "0.0.11";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "hacf-fr";
     repo = "sfrbox-api";
     rev = "refs/tags/v${version}";
-    hash = "sha256-rMfX9vA8IuWxXvVs4WYNHO6neeoie/3gABwhXyJoAF8=";
+    hash = "sha256-Ec3UOserFijBK6goyM6AMOekfLgjBq8l/9sMKYnj240=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace 'pydantic = ">=1.10.2"' 'pydantic = "*"'
-  '';
-
-  nativeBuildInputs = [
-    poetry-core
+  pythonRelaxDeps = [
+    "defusedxml"
   ];
 
-  propagatedBuildInputs = [
+  build-system = [ poetry-core ];
+
+  dependencies = [
     defusedxml
+    mashumaro
     httpx
-    pydantic
   ];
 
   passthru.optional-dependencies = {
-    cli = [
-      click
-    ];
+    cli = [ click ];
   };
 
   nativeCheckInputs = [
@@ -53,16 +49,14 @@ buildPythonPackage rec {
     respx
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "sfrbox_api"
-  ];
+  pythonImportsCheck = [ "sfrbox_api" ];
 
   meta = with lib; {
     description = "Module for the SFR Box API";
-    mainProgram = "sfrbox-api";
     homepage = "https://github.com/hacf-fr/sfrbox-api";
     changelog = "https://github.com/hacf-fr/sfrbox-api/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "sfrbox-api";
   };
 }
diff --git a/pkgs/development/python-modules/sgmllib3k/default.nix b/pkgs/development/python-modules/sgmllib3k/default.nix
index e828e750fc8fb..1670a533e664e 100644
--- a/pkgs/development/python-modules/sgmllib3k/default.nix
+++ b/pkgs/development/python-modules/sgmllib3k/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, pytestCheckHook
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  pytestCheckHook,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
@@ -18,19 +19,13 @@ buildPythonPackage rec {
     hash = "sha256-eGj7HIv6dkwaxWPTzzacOB0TJdNhJJM6cm8p/NqoEuk=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = lib.optionals (pythonAtLeast "3.10") [
-    "test_declaration_junk_chars"
-  ];
+  disabledTests = lib.optionals (pythonAtLeast "3.10") [ "test_declaration_junk_chars" ];
 
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sgmllib"
-  ];
+  pythonImportsCheck = [ "sgmllib" ];
 
   meta = with lib; {
     homepage = "https://pypi.org/project/sgmllib3k/";
diff --git a/pkgs/development/python-modules/sgp4/default.nix b/pkgs/development/python-modules/sgp4/default.nix
index daa6a08f67f15..ce2826708c466 100644
--- a/pkgs/development/python-modules/sgp4/default.nix
+++ b/pkgs/development/python-modules/sgp4/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, numpy }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+}:
 
 buildPythonPackage rec {
   pname = "sgp4";
diff --git a/pkgs/development/python-modules/sh/default.nix b/pkgs/development/python-modules/sh/default.nix
index 46332d0d528a2..655e93f4e964b 100644
--- a/pkgs/development/python-modules/sh/default.nix
+++ b/pkgs/development/python-modules/sh/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
- }:
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "sh";
@@ -18,40 +19,36 @@ buildPythonPackage rec {
     hash = "sha256-c4Ms4ydcW7LgmAI1WuYD74nzILuY/Xg+JePJe0q5AQQ=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests"
-  ];
+  pytestFlagsArray = [ "tests" ];
 
   # A test needs the HOME directory to be different from $TMPDIR.
   preCheck = ''
     export HOME=$(mktemp -d)
   '';
 
-  disabledTests = [
-    # Disable tests that fail on Hydra
-    "test_no_fd_leak"
-    "test_piped_exception1"
-    "test_piped_exception2"
-    "test_unicode_path"
-    # fails to import itself after modifying the environment
-    "test_environment"
-    # timing sensitive through usage of sleep(1) and signal handling
-    # https://github.com/amoffat/sh/issues/684
-    "test_general_signal"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # Disable tests that fail on Darwin sandbox
-    "test_background_exception"
-    "test_cwd"
-    "test_ok_code"
-  ];
+  disabledTests =
+    [
+      # Disable tests that fail on Hydra
+      "test_no_fd_leak"
+      "test_piped_exception1"
+      "test_piped_exception2"
+      "test_unicode_path"
+      # fails to import itself after modifying the environment
+      "test_environment"
+      # timing sensitive through usage of sleep(1) and signal handling
+      # https://github.com/amoffat/sh/issues/684
+      "test_general_signal"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Disable tests that fail on Darwin sandbox
+      "test_background_exception"
+      "test_cwd"
+      "test_ok_code"
+    ];
 
   meta = with lib; {
     description = "Python subprocess interface";
diff --git a/pkgs/development/python-modules/shamir-mnemonic/default.nix b/pkgs/development/python-modules/shamir-mnemonic/default.nix
index 8d8a5f535b77b..11d580eaf8894 100644
--- a/pkgs/development/python-modules/shamir-mnemonic/default.nix
+++ b/pkgs/development/python-modules/shamir-mnemonic/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, isPy3k
-, fetchFromGitHub
-, attrs
-, click
-, colorama
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  isPy3k,
+  fetchFromGitHub,
+  attrs,
+  click,
+  colorama,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/shap/default.nix b/pkgs/development/python-modules/shap/default.nix
index 2bc1a8f5c2eca..25246028a5144 100644
--- a/pkgs/development/python-modules/shap/default.nix
+++ b/pkgs/development/python-modules/shap/default.nix
@@ -1,37 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, writeText
-, catboost
-, cloudpickle
-, ipython
-, lightgbm
-, lime
-, matplotlib
-, nose
-, numba
-, numpy
-, oldest-supported-numpy
-, opencv4
-, pandas
-, pyspark
-, pytest-mpl
-, scikit-learn
-, scipy
-, sentencepiece
-, setuptools
-, setuptools-scm
-, slicer
-, tqdm
-, transformers
-, xgboost
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  writeText,
+  catboost,
+  cloudpickle,
+  ipython,
+  lightgbm,
+  lime,
+  matplotlib,
+  numba,
+  numpy,
+  oldest-supported-numpy,
+  opencv4,
+  pandas,
+  pyspark,
+  pytest-mpl,
+  scikit-learn,
+  scipy,
+  sentencepiece,
+  setuptools,
+  setuptools-scm,
+  slicer,
+  tqdm,
+  transformers,
+  xgboost,
 }:
 
 buildPythonPackage rec {
   pname = "shap";
-  version = "0.45.0";
+  version = "0.45.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -40,7 +40,7 @@ buildPythonPackage rec {
     owner = "slundberg";
     repo = "shap";
     rev = "refs/tags/v${version}";
-    hash = "sha256-x8845saPoLsWu3Z8Thkhqo3HeLmfAZANj3KE0ftVqZc=";
+    hash = "sha256-REMAubT9WRe0exfhO4UCLt3FFQHq4HApHnI6i2F/V1o=";
   };
 
   nativeBuildInputs = [
@@ -61,48 +61,52 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    plots = [ matplotlib ipython ];
+    plots = [
+      matplotlib
+      ipython
+    ];
     others = [ lime ];
   };
 
-  preCheck = let
-    # This pytest hook mocks and catches attempts at accessing the network
-    # tests that try to access the network will raise, get caught, be marked as skipped and tagged as xfailed.
-    conftestSkipNetworkErrors = writeText "conftest.py" ''
-      from _pytest.runner import pytest_runtest_makereport as orig_pytest_runtest_makereport
-      import urllib, requests, transformers
-
-      class NetworkAccessDeniedError(RuntimeError): pass
-      def deny_network_access(*a, **kw):
-        raise NetworkAccessDeniedError
-
-      requests.head = deny_network_access
-      requests.get  = deny_network_access
-      urllib.request.urlopen = deny_network_access
-      urllib.request.Request = deny_network_access
-      transformers.AutoTokenizer.from_pretrained = deny_network_access
-
-      def pytest_runtest_makereport(item, call):
-        tr = orig_pytest_runtest_makereport(item, call)
-        if call.excinfo is not None and call.excinfo.type is NetworkAccessDeniedError:
-            tr.outcome = 'skipped'
-            tr.wasxfail = "reason: Requires network access."
-        return tr
+  preCheck =
+    let
+      # This pytest hook mocks and catches attempts at accessing the network
+      # tests that try to access the network will raise, get caught, be marked as skipped and tagged as xfailed.
+      conftestSkipNetworkErrors = writeText "conftest.py" ''
+        from _pytest.runner import pytest_runtest_makereport as orig_pytest_runtest_makereport
+        import urllib, requests, transformers
+
+        class NetworkAccessDeniedError(RuntimeError): pass
+        def deny_network_access(*a, **kw):
+          raise NetworkAccessDeniedError
+
+        requests.head = deny_network_access
+        requests.get  = deny_network_access
+        urllib.request.urlopen = deny_network_access
+        urllib.request.Request = deny_network_access
+        transformers.AutoTokenizer.from_pretrained = deny_network_access
+
+        def pytest_runtest_makereport(item, call):
+          tr = orig_pytest_runtest_makereport(item, call)
+          if call.excinfo is not None and call.excinfo.type is NetworkAccessDeniedError:
+              tr.outcome = 'skipped'
+              tr.wasxfail = "reason: Requires network access."
+          return tr
+      '';
+    in
+    ''
+      export HOME=$TMPDIR
+      # when importing the local copy the extension is not found
+      rm -r shap
+
+      # Add pytest hook skipping tests that access network.
+      # These tests are marked as "Expected fail" (xfail)
+      cat ${conftestSkipNetworkErrors} >> tests/conftest.py
     '';
-  in ''
-    export HOME=$TMPDIR
-    # when importing the local copy the extension is not found
-    rm -r shap
-
-    # Add pytest hook skipping tests that access network.
-    # These tests are marked as "Expected fail" (xfail)
-    cat ${conftestSkipNetworkErrors} >> tests/conftest.py
-  '';
 
   nativeCheckInputs = [
     ipython
     matplotlib
-    nose
     pytest-mpl
     pytestCheckHook
     # optional dependencies, which only serve to enable more tests:
@@ -134,15 +138,16 @@ buildPythonPackage rec {
     "test_simple_bar_with_cohorts_dict"
   ];
 
-  pythonImportsCheck = [
-    "shap"
-  ];
+  pythonImportsCheck = [ "shap" ];
 
   meta = with lib; {
-    description = "A unified approach to explain the output of any machine learning model";
+    description = "Unified approach to explain the output of any machine learning model";
     homepage = "https://github.com/slundberg/shap";
     changelog = "https://github.com/slundberg/shap/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ evax natsukium ];
+    maintainers = with maintainers; [
+      evax
+      natsukium
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/shapely/1.8.nix b/pkgs/development/python-modules/shapely/1.8.nix
deleted file mode 100644
index 4382ba93ec5e2..0000000000000
--- a/pkgs/development/python-modules/shapely/1.8.nix
+++ /dev/null
@@ -1,90 +0,0 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, substituteAll
-
-, cython_0
-, geos_3_11
-, numpy
-, oldest-supported-numpy
-, setuptools
-, wheel
-}:
-
-buildPythonPackage rec {
-  pname = "shapely";
-  version = "1.8.5";
-  pyproject = true;
-
-  disabled = pythonOlder "3.7";
-
-  src = fetchPypi {
-    pname = "Shapely";
-    inherit version;
-    hash = "sha256-6CttYOz7EkEgyI/hBqR4WWu+qxQhFtfn9ko2TayQKpI=";
-  };
-
-  # Environment variable used in shapely/_buildcfg.py
-  GEOS_LIBRARY_PATH = "${geos_3_11}/lib/libgeos_c${stdenv.hostPlatform.extensions.sharedLibrary}";
-
-  patches = [
-    # Patch to search form GOES .so/.dylib files in a Nix-aware way
-    (substituteAll {
-      src = ./library-paths.patch;
-      libgeos_c = GEOS_LIBRARY_PATH;
-      libc = lib.optionalString (!stdenv.isDarwin) "${stdenv.cc.libc}/lib/libc${stdenv.hostPlatform.extensions.sharedLibrary}.6";
-    })
-  ];
-
-  postPatch = ''
-    substituteInPlace pyproject.toml --replace "setuptools<64" "setuptools"
-  '';
-
-  nativeBuildInputs = [
-    cython_0
-    geos_3_11 # for geos-config
-    oldest-supported-numpy
-    setuptools
-    wheel
-  ];
-
-  buildInputs = [
-    geos_3_11
-  ];
-
-  propagatedBuildInputs = [
-    numpy
-  ];
-
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-
-  preCheck = ''
-    rm -r shapely # prevent import of local shapely
-  '';
-
-  disabledTests = lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
-    # FIXME(lf-): these logging tests are broken, which is definitely our
-    # fault. I've tried figuring out the cause and failed.
-    #
-    # It is apparently some sandbox or no-sandbox related thing on macOS only
-    # though.
-    "test_error_handler_exception"
-    "test_error_handler"
-    "test_info_handler"
-  ];
-
-  pythonImportsCheck = [ "shapely" ];
-
-  meta = with lib; {
-    changelog = "https://github.com/shapely/shapely/blob/${version}/CHANGES.txt";
-    description = "Manipulation and analysis of geometric objects";
-    homepage = "https://github.com/shapely/shapely";
-    license = licenses.bsd3;
-    maintainers = teams.geospatial.members;
-  };
-}
diff --git a/pkgs/development/python-modules/shapely/default.nix b/pkgs/development/python-modules/shapely/default.nix
index 28f2acdffb2d5..0959a8e3e0c95 100644
--- a/pkgs/development/python-modules/shapely/default.nix
+++ b/pkgs/development/python-modules/shapely/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 
-, cython_0
-, geos
-, numpy
-, oldest-supported-numpy
-, setuptools
-, wheel
+  cython_0,
+  geos,
+  numpy,
+  oldest-supported-numpy,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "shapely";
-  version = "2.0.4";
+  version = "2.0.6";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Xcc2En+scACbjTCaDut08+CJeeUwz3AX8vUH72Lmz7g=";
+    hash = "sha256-mX9hWbFIQFnsI5ysqlNGf9i1Vk2r4YbNhKwpRGY7C/Y=";
   };
 
   nativeBuildInputs = [
@@ -33,17 +34,11 @@ buildPythonPackage rec {
     wheel
   ];
 
-  buildInputs = [
-    geos
-  ];
+  buildInputs = [ geos ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Fix a ModuleNotFoundError. Investigated at:
   # https://github.com/NixOS/nixpkgs/issues/255262
@@ -51,7 +46,7 @@ buildPythonPackage rec {
     cd $out
   '';
 
-  disabledTests = lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
+  disabledTests = lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
     # FIXME(lf-): these logging tests are broken, which is definitely our
     # fault. I've tried figuring out the cause and failed.
     #
diff --git a/pkgs/development/python-modules/shaperglot/default.nix b/pkgs/development/python-modules/shaperglot/default.nix
index 9201436d3b609..20c898c076981 100644
--- a/pkgs/development/python-modules/shaperglot/default.nix
+++ b/pkgs/development/python-modules/shaperglot/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, gflanguages
-, num2words
-, protobuf
-, pytestCheckHook
-, pyyaml
-, setuptools
-, setuptools-scm
-, strictyaml
-, termcolor
-, ufo2ft
-, vharfbuzz
-, youseedee
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gflanguages,
+  num2words,
+  protobuf,
+  pytestCheckHook,
+  pyyaml,
+  setuptools,
+  setuptools-scm,
+  strictyaml,
+  termcolor,
+  ufo2ft,
+  vharfbuzz,
+  youseedee,
 }:
 
 buildPythonPackage rec {
@@ -46,9 +47,7 @@ buildPythonPackage rec {
   ];
 
   doCheck = true;
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Tool to test OpenType fonts for language support";
diff --git a/pkgs/development/python-modules/sharedmem/default.nix b/pkgs/development/python-modules/sharedmem/default.nix
index 0e4a36f6ce276..0615feb911dfb 100644
--- a/pkgs/development/python-modules/sharedmem/default.nix
+++ b/pkgs/development/python-modules/sharedmem/default.nix
@@ -1,4 +1,9 @@
-{ buildPythonPackage, fetchPypi, lib, numpy }:
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  numpy,
+}:
 
 buildPythonPackage rec {
 
diff --git a/pkgs/development/python-modules/sharkiq/default.nix b/pkgs/development/python-modules/sharkiq/default.nix
index 0b99c15564fd4..afff1db73d9a7 100644
--- a/pkgs/development/python-modules/sharkiq/default.nix
+++ b/pkgs/development/python-modules/sharkiq/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, requests
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/sharp-aquos-rc/default.nix b/pkgs/development/python-modules/sharp-aquos-rc/default.nix
index 5dc7580467e87..11af74710b245 100644
--- a/pkgs/development/python-modules/sharp-aquos-rc/default.nix
+++ b/pkgs/development/python-modules/sharp-aquos-rc/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/shazamio/default.nix b/pkgs/development/python-modules/shazamio/default.nix
index e96776e60b8a1..06f058b03275e 100644
--- a/pkgs/development/python-modules/shazamio/default.nix
+++ b/pkgs/development/python-modules/shazamio/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, wheel
-, aiofiles
-, aiohttp
-, dataclass-factory
-, numpy
-, pydantic
-, pydub
-, ffmpeg
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  poetry-core,
+  wheel,
+  aiofiles,
+  aiohttp,
+  dataclass-factory,
+  numpy,
+  pydantic,
+  pydub,
+  ffmpeg,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -67,9 +68,9 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "shazamio" ];
 
   meta = with lib; {
-    description = "A free asynchronous library from reverse engineered Shazam API";
+    description = "Free asynchronous library from reverse engineered Shazam API";
     homepage = "https://github.com/dotX12/ShazamIO";
-    changelog = "https://github.com/dotX12/ShazamIO/releases/tag/${src.rev}";
+    changelog = "https://github.com/dotX12/ShazamIO/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
     # https://github.com/shazamio/ShazamIO/issues/80
diff --git a/pkgs/development/python-modules/shellescape/default.nix b/pkgs/development/python-modules/shellescape/default.nix
index 6ea61402c0493..fe0a29458b6f0 100644
--- a/pkgs/development/python-modules/shellescape/default.nix
+++ b/pkgs/development/python-modules/shellescape/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,7 +23,10 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Shell escape a string to safely use it as a token in a shell command (backport of Python shlex.quote)";
     homepage = "https://github.com/chrissimpkins/shellescape";
-    license = with licenses; [ mit psfl ];
+    license = with licenses; [
+      mit
+      psfl
+    ];
     maintainers = with maintainers; [ veprbl ];
   };
 }
diff --git a/pkgs/development/python-modules/shellingham/default.nix b/pkgs/development/python-modules/shellingham/default.nix
index 71b5d5e438bf4..75b61530b9096 100644
--- a/pkgs/development/python-modules/shellingham/default.nix
+++ b/pkgs/development/python-modules/shellingham/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,18 +22,14 @@ buildPythonPackage rec {
     hash = "sha256-xeBo3Ok+XPrHN4nQd7M8/11leSV/8z1f7Sj33+HFVtQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pytest-mock
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "shellingham"
-  ];
+  pythonImportsCheck = [ "shellingham" ];
 
   meta = with lib; {
     description = "Tool to detect the surrounding shell";
diff --git a/pkgs/development/python-modules/shiboken2/default.nix b/pkgs/development/python-modules/shiboken2/default.nix
index 45eecc6faebfd..88f59fc86ebb2 100644
--- a/pkgs/development/python-modules/shiboken2/default.nix
+++ b/pkgs/development/python-modules/shiboken2/default.nix
@@ -1,21 +1,18 @@
-{ python
-, lib
-, stdenv
-, pyside2
-, cmake
-, qt5
-, libxcrypt
-, llvmPackages_15
+{
+  python,
+  lib,
+  stdenv,
+  pyside2,
+  cmake,
+  qt5,
+  libxcrypt,
+  llvmPackages_15,
 }:
 
 stdenv.mkDerivation {
   pname = "shiboken2";
 
-  inherit (pyside2) version src;
-
-  patches = [
-    ./nix_compile_cflags.patch
-  ];
+  inherit (pyside2) version src patches;
 
   postPatch = ''
     cd sources/shiboken2
@@ -23,24 +20,31 @@ stdenv.mkDerivation {
 
   CLANG_INSTALL_DIR = llvmPackages_15.libclang.out;
 
-  nativeBuildInputs = [ cmake ];
-
-  buildInputs = [
-    llvmPackages_15.libclang
-    python
-    python.pkgs.setuptools
-    qt5.qtbase
-    qt5.qtxmlpatterns
-  ] ++ (lib.optionals (python.pythonOlder "3.9") [
-    # see similar issue: 202262
-    # libxcrypt is required for crypt.h for building older python modules
-    libxcrypt
-  ]);
-
-  cmakeFlags = [
-    "-DBUILD_TESTS=OFF"
+  nativeBuildInputs = [
+    cmake
+    (python.withPackages (
+      ps: with ps; [
+        distutils
+        setuptools
+      ]
+    ))
   ];
 
+  buildInputs =
+    [
+      llvmPackages_15.libclang
+      python.pkgs.setuptools
+      qt5.qtbase
+      qt5.qtxmlpatterns
+    ]
+    ++ (lib.optionals (python.pythonOlder "3.9") [
+      # see similar issue: 202262
+      # libxcrypt is required for crypt.h for building older python modules
+      libxcrypt
+    ]);
+
+  cmakeFlags = [ "-DBUILD_TESTS=OFF" ];
+
   dontWrapQtApps = true;
 
   postInstall = ''
@@ -53,9 +57,11 @@ stdenv.mkDerivation {
   meta = with lib; {
     description = "Generator for the PySide2 Qt bindings";
     mainProgram = "shiboken2";
-    license = with licenses; [ gpl2 lgpl21 ];
+    license = with licenses; [
+      gpl2
+      lgpl21
+    ];
     homepage = "https://wiki.qt.io/Qt_for_Python";
     maintainers = with maintainers; [ gebner ];
-    broken = stdenv.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/shiboken2/nix_compile_cflags.patch b/pkgs/development/python-modules/shiboken2/nix_compile_cflags.patch
deleted file mode 100644
index c3c63dc67ba9a..0000000000000
--- a/pkgs/development/python-modules/shiboken2/nix_compile_cflags.patch
+++ /dev/null
@@ -1,30 +0,0 @@
---- pyside-setup-everywhere-src-5.12.6/sources/shiboken2/ApiExtractor/clangparser/compilersupport.cpp~	2020-07-08 14:37:13.022476435 -0700
-+++ pyside-setup-everywhere-src-5.12.6/sources/shiboken2/ApiExtractor/clangparser/compilersupport.cpp	2020-07-08 14:37:18.271484269 -0700
-@@ -330,17 +330,15 @@
-     }
- #endif // NEED_CLANG_BUILTIN_INCLUDES
- 
--    // Append the c++ include paths since Clang is unable to find <list> etc
--    // on RHEL 7 with g++ 6.3 or CentOS 7.2.
--    // A fix for this has been added to Clang 5.0, so, the code can be removed
--    // once Clang 5.0 is the minimum version.
--    if (needsGppInternalHeaders()) {
--        const HeaderPaths gppPaths = gppInternalIncludePaths(compilerFromCMake(QStringLiteral("g++")));
--        for (const HeaderPath &h : gppPaths) {
--            if (h.path.contains("c++")
--                || h.path.contains("sysroot")) { // centOS
--                headerPaths.append(h);
--            }
-+    const HeaderPaths gppPaths = gppInternalIncludePaths(QStringLiteral("g++"));
-+    for (const HeaderPath &h : gppPaths) {
-+        // PySide2 requires that Qt headers are not -isystem
-+        // https://bugreports.qt.io/browse/PYSIDE-787
-+        if (!h.path.contains("-qt")) {
-+            // add using -isystem
-+            headerPaths.append(h);
-+        } else {
-+            headerPaths.append({h.path, HeaderType::Standard});
-         }
-     }
- #else
-
diff --git a/pkgs/development/python-modules/shiboken6/default.nix b/pkgs/development/python-modules/shiboken6/default.nix
index 57b7e64273d6e..2c491e193d80d 100644
--- a/pkgs/development/python-modules/shiboken6/default.nix
+++ b/pkgs/development/python-modules/shiboken6/default.nix
@@ -1,37 +1,34 @@
-{ lib
-, fetchurl
-, llvmPackages
-, python
-, cmake
-, autoPatchelfHook
-, stdenv
+{
+  lib,
+  fetchurl,
+  llvmPackages,
+  python,
+  cmake,
+  autoPatchelfHook,
+  stdenv,
 }:
 
 let
   stdenv' = if stdenv.cc.isClang then stdenv else llvmPackages.stdenv;
 in
-stdenv'.mkDerivation rec {
+stdenv'.mkDerivation (finalAttrs: {
   pname = "shiboken6";
-  version = "6.7.0";
+  version = "6.7.2";
 
   src = fetchurl {
     # https://download.qt.io/official_releases/QtForPython/shiboken6/
-    url = "https://download.qt.io/official_releases/QtForPython/shiboken6/PySide6-${version}-src/pyside-setup-everywhere-src-${version}.tar.xz";
-    hash = "sha256-gurjcHN99ez1OcFl0J18gdX8YVOlQbjT03sRJ1+ePo8=";
+    url = "mirror://qt/official_releases/QtForPython/shiboken6/PySide6-${finalAttrs.version}-src/pyside-setup-everywhere-src-${finalAttrs.version}.tar.xz";
+    hash = "sha256-OisNDW54yapd3H8GyktvEaP+FFYLrrFI7qU7XZjjaMc=";
   };
 
-  sourceRoot = "pyside-setup-everywhere-src-${version}/sources/${pname}";
+  sourceRoot = "pyside-setup-everywhere-src-${finalAttrs.version}/sources/shiboken6";
 
-  patches = [
-    ./fix-include-qt-headers.patch
-  ];
+  patches = [ ./fix-include-qt-headers.patch ];
 
   nativeBuildInputs = [
     cmake
     (python.pythonOnBuildForHost.withPackages (ps: [ ps.setuptools ]))
-  ] ++ lib.optionals stdenv.isLinux [
-    autoPatchelfHook
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ];
 
   buildInputs = [
     llvmPackages.llvm
@@ -42,9 +39,7 @@ stdenv'.mkDerivation rec {
     python.pkgs.setuptools
   ];
 
-  cmakeFlags = [
-    "-DBUILD_TESTS=OFF"
-  ];
+  cmakeFlags = [ "-DBUILD_TESTS=OFF" ];
 
   # We intentionally use single quotes around `${BASH}` since it expands from a CMake
   # variable available in this file.
@@ -52,18 +47,6 @@ stdenv'.mkDerivation rec {
     substituteInPlace cmake/ShibokenHelpers.cmake --replace-fail '#!/bin/bash' '#!''${BASH}'
   '';
 
-  # Due to Shiboken.abi3.so being linked to libshiboken6.abi3.so.6.6 in the build tree,
-  # we need to remove the build tree reference from the RPATH and then add the correct
-  # directory to the RPATH. On Linux, the second part is handled by autoPatchelfHook.
-  # https://bugreports.qt.io/browse/PYSIDE-2233
-  preFixup = ''
-    echo "fixing RPATH of Shiboken.abi3.so"
-  '' + lib.optionalString stdenv.isDarwin ''
-    install_name_tool -change {@rpath,$out/lib}/libshiboken6.abi3.6.6.dylib $out/${python.sitePackages}/shiboken6/Shiboken.abi3.so
-  '' + lib.optionalString stdenv.isLinux ''
-    patchelf $out/${python.sitePackages}/shiboken6/Shiboken.abi3.so --shrink-rpath --allowed-rpath-prefixes ${builtins.storeDir}
-  '';
-
   postInstall = ''
     cd ../../..
     ${python.pythonOnBuildForHost.interpreter} setup.py egg_info --build-type=shiboken6
@@ -72,11 +55,16 @@ stdenv'.mkDerivation rec {
 
   dontWrapQtApps = true;
 
-  meta = with lib; {
+  meta = {
     description = "Generator for the pyside6 Qt bindings";
-    license = with licenses; [ lgpl3Only gpl2Only gpl3Only ];
+    license = with lib.licenses; [
+      lgpl3Only
+      gpl2Only
+      gpl3Only
+    ];
     homepage = "https://wiki.qt.io/Qt_for_Python";
-    maintainers = with maintainers; [ gebner Enzime ];
-    platforms = platforms.all;
+    changelog = "https://code.qt.io/cgit/pyside/pyside-setup.git/tree/doc/changelogs/changes-${finalAttrs.version}?h=v${finalAttrs.version}";
+    maintainers = with lib.maintainers; [ gebner ];
+    platforms = lib.platforms.all;
   };
-}
+})
diff --git a/pkgs/development/python-modules/shimmy/default.nix b/pkgs/development/python-modules/shimmy/default.nix
new file mode 100644
index 0000000000000..b50135e517bf5
--- /dev/null
+++ b/pkgs/development/python-modules/shimmy/default.nix
@@ -0,0 +1,100 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  gymnasium,
+  numpy,
+  ale-py,
+  bsuite,
+  dm-control,
+  gym,
+  imageio,
+  pettingzoo,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "shimmy";
+  version = "1.3.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "Farama-Foundation";
+    repo = "Shimmy";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-rYBbGyMSFF/iIGruKn2JXKAVIZIfJDEHUEZUESiUg/k=";
+  };
+
+  build-system = [
+    setuptools
+    wheel
+  ];
+
+  dependencies = [
+    gymnasium
+    numpy
+  ];
+
+  pythonImportsCheck = [ "shimmy" ];
+
+  nativeCheckInputs = [
+    ale-py
+    bsuite
+    dm-control
+    gym
+    imageio
+    pettingzoo
+    pytestCheckHook
+  ];
+
+  disabledTestPaths = [
+    # Requires unpackaged labmaze
+    "tests/test_dm_control_multi_agent.py"
+
+    # Requires unpackaged pyspiel
+    "tests/test_openspiel.py"
+
+    # Broken since ale-py v0.9.0 due to API change
+    # https://github.com/Farama-Foundation/Shimmy/issues/120
+    "tests/test_atari.py"
+  ];
+
+  preCheck = ''
+    export HOME=$(mktemp -d)
+  '';
+
+  disabledTests = [
+    # Require network access
+    "test_check_env[bsuite/mnist_noise-v0]"
+    "test_check_env[bsuite/mnist_scale-v0]"
+    "test_check_env[bsuite/mnist-v0]"
+    "test_existing_env"
+    "test_loading_env"
+    "test_pickle[bsuite/mnist-v0]"
+    "test_seeding[bsuite/mnist_noise-v0]"
+    "test_seeding[bsuite/mnist_scale-v0]"
+    "test_seeding[bsuite/mnist-v0]"
+    "test_seeding"
+
+    # RuntimeError: std::exception
+    "test_check_env"
+    "test_seeding[dm_control/quadruped-escape-v0]"
+    "test_rendering_camera_id"
+    "test_rendering_multiple_cameras"
+    "test_rendering_depth"
+    "test_render_height_widths"
+  ];
+
+  meta = {
+    changelog = "https://github.com/Farama-Foundation/Shimmy/releases/tag/v${version}";
+    description = "API conversion tool for popular external reinforcement learning environments";
+    homepage = "https://github.com/Farama-Foundation/Shimmy";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/pkgs/development/python-modules/shiny/default.nix b/pkgs/development/python-modules/shiny/default.nix
new file mode 100644
index 0000000000000..d22649c725ef3
--- /dev/null
+++ b/pkgs/development/python-modules/shiny/default.nix
@@ -0,0 +1,77 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+
+  appdirs,
+  asgiref,
+  click,
+  htmltools,
+  linkify-it-py,
+  markdown-it-py,
+  mdit-py-plugins,
+  python-multipart,
+  questionary,
+  starlette,
+  uvicorn,
+  watchfiles,
+  websockets,
+
+  pytestCheckHook,
+  pytest-asyncio,
+  pytest-playwright,
+  pytest-xdist,
+  pytest-timeout,
+  pytest-rerunfailures,
+  pandas,
+}:
+
+buildPythonPackage rec {
+  pname = "shiny";
+  version = "0.10.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "posit-dev";
+    repo = "py-shiny";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-s1j9bMAapO0iRXsuNxiwlNaVv2EoWcl9U7WnHwQe9n8=";
+  };
+
+  build-system = [ setuptools ];
+  dependencies = [
+    appdirs
+    asgiref
+    click
+    htmltools
+    linkify-it-py
+    markdown-it-py
+    mdit-py-plugins
+    python-multipart
+    questionary
+    starlette
+    uvicorn
+    watchfiles
+    websockets
+  ];
+
+  pythonImportsCheck = [ "shiny" ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-asyncio
+    pytest-playwright
+    pytest-xdist
+    pytest-timeout
+    pytest-rerunfailures
+    pandas
+  ];
+
+  meta = {
+    changelog = "https://github.com/posit-dev/py-shiny/blob/${src.rev}/CHANGELOG.md";
+    description = "Build fast, beautiful web applications in Python";
+    license = lib.licenses.mit;
+    homepage = "https://shiny.posit.co/py";
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/shippai/default.nix b/pkgs/development/python-modules/shippai/default.nix
index b0591385b961d..e005b12dded32 100644
--- a/pkgs/development/python-modules/shippai/default.nix
+++ b/pkgs/development/python-modules/shippai/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "shippai";
diff --git a/pkgs/development/python-modules/shippinglabel/default.nix b/pkgs/development/python-modules/shippinglabel/default.nix
new file mode 100644
index 0000000000000..5cb75872f870e
--- /dev/null
+++ b/pkgs/development/python-modules/shippinglabel/default.nix
@@ -0,0 +1,45 @@
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  setuptools,
+  dist-meta,
+  dom-toml,
+  domdf-python-tools,
+  packaging,
+  typing-extensions,
+}:
+buildPythonPackage rec {
+  pname = "shippinglabel";
+  version = "2.0.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-hZYsK+IX/a4bZMtD+hMEYDnwgqhdkkEHkG0MPkAgy20=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    dist-meta
+    dom-toml
+    domdf-python-tools
+    packaging
+    typing-extensions
+  ];
+
+  nativeCheckInputs = [ ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail '"setuptools!=61.*,<=67.1.0,>=40.6.0"' '"setuptools"'
+  '';
+
+  meta = {
+    description = "Utilities for handling packages.";
+    homepage = "https://github.com/domdfcoding/shippinglabel";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tyberius-prime ];
+  };
+}
diff --git a/pkgs/development/python-modules/shiv/default.nix b/pkgs/development/python-modules/shiv/default.nix
index a508ee2ec6959..804c33c3e744c 100644
--- a/pkgs/development/python-modules/shiv/default.nix
+++ b/pkgs/development/python-modules/shiv/default.nix
@@ -1,25 +1,30 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, click
-, pip
-, setuptools
-, wheel
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  click,
+  pip,
+  setuptools,
+  wheel,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "shiv";
-  version = "1.0.5";
+  version = "1.0.6";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-3eryU4+4HFfMIrmst1Vlm6GounzvtCfFiAYFhAH/RdU=";
+    hash = "sha256-4iJ2gTWXe+vftcDRp9/qKVV8VmtY0wDVuMJTXvIj13Y=";
   };
 
-  propagatedBuildInputs = [ click pip setuptools wheel ];
+  propagatedBuildInputs = [
+    click
+    pip
+    setuptools
+    wheel
+  ];
 
   pythonImportsCheck = [ "shiv" ];
 
diff --git a/pkgs/development/python-modules/shlib/default.nix b/pkgs/development/python-modules/shlib/default.nix
index 81ffccead0e44..8bc4ba90d3e1d 100644
--- a/pkgs/development/python-modules/shlib/default.nix
+++ b/pkgs/development/python-modules/shlib/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pytestCheckHook
-, braceexpand
-, inform
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pytestCheckHook,
+  braceexpand,
+  inform,
 }:
 
 buildPythonPackage rec {
@@ -23,18 +24,14 @@ buildPythonPackage rec {
     patchShebangs .
   '';
 
-  build-system = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
   dependencies = [
     braceexpand
     inform
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "shlib" ];
 
diff --git a/pkgs/development/python-modules/shodan/default.nix b/pkgs/development/python-modules/shodan/default.nix
index 43ea7bdba8a7d..e83336b07b910 100644
--- a/pkgs/development/python-modules/shodan/default.nix
+++ b/pkgs/development/python-modules/shodan/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, click-plugins
-, colorama
-, fetchPypi
-, pythonOlder
-, requests
-, setuptools
-, tldextract
-, xlsxwriter
+{
+  lib,
+  buildPythonPackage,
+  click-plugins,
+  colorama,
+  fetchPypi,
+  pythonOlder,
+  requests,
+  setuptools,
+  tldextract,
+  xlsxwriter,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
   # The tests require a shodan api key, so skip them.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "shodan"
-  ];
+  pythonImportsCheck = [ "shodan" ];
 
   meta = with lib; {
     description = "Python library and command-line utility for Shodan";
@@ -44,6 +43,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/achillean/shodan-python";
     changelog = "https://github.com/achillean/shodan-python/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ fab lihop ];
+    maintainers = with maintainers; [
+      fab
+      lihop
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/shortuuid/default.nix b/pkgs/development/python-modules/shortuuid/default.nix
index 17b69da44700b..1ccefc016c933 100644
--- a/pkgs/development/python-modules/shortuuid/default.nix
+++ b/pkgs/development/python-modules/shortuuid/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,17 +19,11 @@ buildPythonPackage rec {
     hash = "sha256-O7nPB/YGJgWEsd9GOZwLh92Edz57JZErfjkeMHl8XnI=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "shortuuid"
-  ];
+  pythonImportsCheck = [ "shortuuid" ];
 
   meta = with lib; {
     description = "Library to generate concise, unambiguous and URL-safe UUIDs";
diff --git a/pkgs/development/python-modules/should-dsl/default.nix b/pkgs/development/python-modules/should-dsl/default.nix
index 444e04b7f36f8..5ff8faa1b862c 100644
--- a/pkgs/development/python-modules/should-dsl/default.nix
+++ b/pkgs/development/python-modules/should-dsl/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "should-dsl";
diff --git a/pkgs/development/python-modules/shouldbe/default.nix b/pkgs/development/python-modules/shouldbe/default.nix
deleted file mode 100644
index 0c03d6d58d420..0000000000000
--- a/pkgs/development/python-modules/shouldbe/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ lib
-, buildPythonPackage
-, pythonAtLeast
-, fetchPypi
-, nose
-, forbiddenfruit
-}:
-
-buildPythonPackage rec {
-  version = "0.1.2";
-  format = "setuptools";
-  pname = "shouldbe";
-  # incompatible, https://github.com/DirectXMan12/should_be/issues/4
-  disabled = pythonAtLeast "3.8";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "16zbvjxf71dl4yfbgcr6idyim3mdrfvix1dv8b95p0s9z07372pj";
-  };
-
-  nativeCheckInputs = [ nose ];
-  propagatedBuildInputs = [ forbiddenfruit ];
-
-  meta = with lib; {
-    description = "Python Assertion Helpers inspired by Shouldly";
-    homepage =  "https://pypi.python.org/pypi/shouldbe/";
-    license = licenses.mit;
-  };
-
-}
diff --git a/pkgs/development/python-modules/show-in-file-manager/default.nix b/pkgs/development/python-modules/show-in-file-manager/default.nix
index e48268c7ef66f..a08a874d690c0 100644
--- a/pkgs/development/python-modules/show-in-file-manager/default.nix
+++ b/pkgs/development/python-modules/show-in-file-manager/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, argparse-manpage
-, setuptools
-, packaging
-, pyxdg
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  argparse-manpage,
+  setuptools,
+  packaging,
+  pyxdg,
 }:
 
 buildPythonPackage rec {
@@ -23,10 +24,7 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  propagatedBuildInputs = [
-    packaging
-  ]
-  ++ lib.optional (stdenv.isLinux) pyxdg;
+  propagatedBuildInputs = [ packaging ] ++ lib.optional (stdenv.hostPlatform.isLinux) pyxdg;
 
   meta = with lib; {
     homepage = "https://github.com/damonlynch/showinfilemanager";
@@ -40,6 +38,6 @@ buildPythonPackage rec {
       something with them.
     '';
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/showit/default.nix b/pkgs/development/python-modules/showit/default.nix
index 4b424f76a2e39..b98b48df2cd99 100644
--- a/pkgs/development/python-modules/showit/default.nix
+++ b/pkgs/development/python-modules/showit/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, matplotlib
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  matplotlib,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     matplotlib
   ];
 
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
   checkPhase = ''
     pytest test
diff --git a/pkgs/development/python-modules/shtab/default.nix b/pkgs/development/python-modules/shtab/default.nix
index 7ec98fce432b4..2b1b13840848a 100644
--- a/pkgs/development/python-modules/shtab/default.nix
+++ b/pkgs/development/python-modules/shtab/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-timeout
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
-, bashInteractive
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  bashInteractive,
 }:
 
 buildPythonPackage rec {
@@ -39,9 +40,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "shtab"
-  ];
+  pythonImportsCheck = [ "shtab" ];
 
   meta = with lib; {
     description = "Module for shell tab completion of Python CLI applications";
diff --git a/pkgs/development/python-modules/shutilwhich/default.nix b/pkgs/development/python-modules/shutilwhich/default.nix
index c3c48f47e6cd5..bc022fbe0f853 100644
--- a/pkgs/development/python-modules/shutilwhich/default.nix
+++ b/pkgs/development/python-modules/shutilwhich/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/sievelib/default.nix b/pkgs/development/python-modules/sievelib/default.nix
index 4d4e15659c55e..f52b15c7dfafe 100644
--- a/pkgs/development/python-modules/sievelib/default.nix
+++ b/pkgs/development/python-modules/sievelib/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "sievelib";
-  version = "1.4.0";
+  version = "1.4.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-eM8es/WZENFBASjOk1KVbbwkmzxTr7NirOiSLt7F3N8=";
+    hash = "sha256-z0cUBzFVMs9x2/b2YrAAzq0rR3pwz/XEshvF1DJLpT4=";
   };
 
   build-system = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/signalslot/default.nix b/pkgs/development/python-modules/signalslot/default.nix
index 98e3a15eec579..7bf0f0ef5b7ec 100644
--- a/pkgs/development/python-modules/signalslot/default.nix
+++ b/pkgs/development/python-modules/signalslot/default.nix
@@ -1,14 +1,13 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, pythonRelaxDepsHook
-, contexter
-, eventlet
-, mock
-, pytest-xdist
-, pytestCheckHook
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  contexter,
+  eventlet,
+  mock,
+  pytest-xdist,
+  pytestCheckHook,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +26,6 @@ buildPythonPackage rec {
       --replace "--cov-report html" ""
   '';
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   propagatedBuildInputs = [
     contexter
diff --git a/pkgs/development/python-modules/signedjson/default.nix b/pkgs/development/python-modules/signedjson/default.nix
index e57a86c37f21c..a03238cf2e00c 100644
--- a/pkgs/development/python-modules/signedjson/default.nix
+++ b/pkgs/development/python-modules/signedjson/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, canonicaljson
-, fetchPypi
-, importlib-metadata
-, pynacl
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
-, typing-extensions
-, unpaddedbase64
+{
+  lib,
+  buildPythonPackage,
+  canonicaljson,
+  fetchPypi,
+  importlib-metadata,
+  pynacl,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  typing-extensions,
+  unpaddedbase64,
 }:
 
 buildPythonPackage rec {
@@ -23,31 +24,27 @@ buildPythonPackage rec {
     hash = "sha256-zZHFavU/Fp7wMsYunEoyktwViGaTMxjQWS40Yts9ZJI=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    canonicaljson
-    unpaddedbase64
-    pynacl
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-    typing-extensions
-  ];
+  propagatedBuildInputs =
+    [
+      canonicaljson
+      unpaddedbase64
+      pynacl
+    ]
+    ++ lib.optionals (pythonOlder "3.8") [
+      importlib-metadata
+      typing-extensions
+    ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "signedjson"
-  ];
+  pythonImportsCheck = [ "signedjson" ];
 
   meta = with lib; {
     description = "Sign JSON with Ed25519 signatures";
     homepage = "https://github.com/matrix-org/python-signedjson";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/signify/default.nix b/pkgs/development/python-modules/signify/default.nix
index 1c7f503d33c12..ec2bed3ce36fc 100644
--- a/pkgs/development/python-modules/signify/default.nix
+++ b/pkgs/development/python-modules/signify/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, asn1crypto
-, buildPythonPackage
-, certvalidator
-, fetchFromGitHub
-, mscerts
-, oscrypto
-, pyasn1
-, pyasn1-modules
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, typing-extensions
+{
+  lib,
+  asn1crypto,
+  buildPythonPackage,
+  certvalidator,
+  fetchFromGitHub,
+  mscerts,
+  oscrypto,
+  pyasn1,
+  pyasn1-modules,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     hash = "sha256-29SyzqtZ1cI+1xrSPLFr63vwB5st/9i5b3FYtJn6eok=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     asn1crypto
@@ -41,13 +40,9 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  pythonImportsCheck = [
-    "signify"
-  ];
+  pythonImportsCheck = [ "signify" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     changelog = "https://github.com/ralphje/signify/blob/${src.rev}/docs/changelog.rst";
diff --git a/pkgs/development/python-modules/signxml/default.nix b/pkgs/development/python-modules/signxml/default.nix
index c6c6ccea9b15e..cf5b9504012ed 100644
--- a/pkgs/development/python-modules/signxml/default.nix
+++ b/pkgs/development/python-modules/signxml/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, certifi
-, cryptography
-, fetchFromGitHub
-, lxml
-, pyopenssl
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  certifi,
+  cryptography,
+  fetchFromGitHub,
+  lxml,
+  pyopenssl,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-TlOIHYvx1o46nr/3qq45pgeOqmuyWaaTGvOS0Jwz1zs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     certifi
@@ -35,17 +34,11 @@ buildPythonPackage rec {
     pyopenssl
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "signxml"
-  ];
+  pythonImportsCheck = [ "signxml" ];
 
-  pytestFlagsArray = [
-    "test/test.py"
-  ];
+  pytestFlagsArray = [ "test/test.py" ];
 
   meta = with lib; {
     description = "Python XML Signature and XAdES library";
diff --git a/pkgs/development/python-modules/sigparse/default.nix b/pkgs/development/python-modules/sigparse/default.nix
new file mode 100644
index 0000000000000..d06a2a91e49dc
--- /dev/null
+++ b/pkgs/development/python-modules/sigparse/default.nix
@@ -0,0 +1,41 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  fetchpatch
+}:
+
+buildPythonPackage rec {
+  pname = "sigparse";
+  version = "3.0.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "Lunarmagpie";
+    repo = "sigparse";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-VzWDqplYgwrJXXd5IUzEIp0YRuofybqmGrNKPaGqQFM=";
+  };
+
+  patches = [
+    # pyproject.toml version file is set as 1.0.0
+    (fetchpatch {
+      url = "https://github.com/Lunarmagpie/sigparse/pull/14/commits/44780382410bc6913bdd8ff7e92948078adb736c.patch";
+      hash = "sha256-3EOkdBQDBodMBp4ENdvquJlRvAAywQhdWAX4dWFmhL0=";
+    })
+  ];
+
+  build-system = [ poetry-core ];
+  pythonImportsCheck = [ "sigparse" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "Backports python 3.10 typing features into 3.7, 3.8, and 3.9";
+    license = lib.licenses.mit;
+    homepage = "https://github.com/Lunarmagpie/sigparse";
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/sigrok/default.nix b/pkgs/development/python-modules/sigrok/default.nix
index b8b925ba6b16a..40253c5ad19c7 100644
--- a/pkgs/development/python-modules/sigrok/default.nix
+++ b/pkgs/development/python-modules/sigrok/default.nix
@@ -1,62 +1,67 @@
-{ lib
-, stdenv
-, libsigrok
-, toPythonModule
-, python
-, autoreconfHook
-, pythonImportsCheckHook
-, pythonCatchConflictsHook
-, swig
-, setuptools
-, numpy
-, pygobject3
+{
+  lib,
+  stdenv,
+  libsigrok,
+  toPythonModule,
+  python,
+  autoreconfHook,
+  pythonImportsCheckHook,
+  pythonCatchConflictsHook,
+  swig,
+  setuptools,
+  numpy,
+  pygobject3,
 }:
 
 # build libsigrok plus its Python bindings. Unfortunately it does not appear
 # to be possible to build them separately, at least not easily.
-toPythonModule ((libsigrok.override {
-  inherit python;
-}).overrideAttrs (orig: {
-  pname = "${python.libPrefix}-sigrok";
-
-  patches = orig.patches or [] ++ [
-    # Makes libsigrok install the bindings into site-packages properly (like
-    # we expect) instead of making a version-specific *.egg subdirectory.
-    ./python-install.patch
-  ];
-
-  nativeBuildInputs = orig.nativeBuildInputs or [] ++ [
-    autoreconfHook
-    setuptools
-    swig
-    numpy
-  ] ++ lib.optionals (stdenv.hostPlatform == stdenv.buildPlatform) [
-    pythonImportsCheckHook
-    pythonCatchConflictsHook
-  ];
-
-  buildInputs = orig.buildInputs or [] ++ [
-    pygobject3 # makes headers available the configure script checks for
-  ];
-
-  propagatedBuildInputs = orig.propagatedBuildInputs or [] ++ [
-    pygobject3
-    numpy
-  ];
-
-  postInstall = ''
-    ${orig.postInstall or ""}
-
-    # for pythonImportsCheck
-    export PYTHONPATH="$out/${python.sitePackages}:$PYTHONPATH"
-  '';
-
-  pythonImportsCheck = [ "sigrok" "sigrok.core" ];
-
-  meta = orig.meta // {
-    description = "Python bindings for libsigrok";
-    maintainers = orig.meta.maintainers ++ [
-      lib.maintainers.sternenseemann
+toPythonModule (
+  (libsigrok.override { inherit python; }).overrideAttrs (orig: {
+    pname = "${python.libPrefix}-sigrok";
+
+    patches = orig.patches or [ ] ++ [
+      # Makes libsigrok install the bindings into site-packages properly (like
+      # we expect) instead of making a version-specific *.egg subdirectory.
+      ./python-install.patch
+    ];
+
+    nativeBuildInputs =
+      orig.nativeBuildInputs or [ ]
+      ++ [
+        autoreconfHook
+        setuptools
+        swig
+        numpy
+      ]
+      ++ lib.optionals (stdenv.hostPlatform == stdenv.buildPlatform) [
+        pythonImportsCheckHook
+        pythonCatchConflictsHook
+      ];
+
+    buildInputs = orig.buildInputs or [ ] ++ [
+      pygobject3 # makes headers available the configure script checks for
+    ];
+
+    propagatedBuildInputs = orig.propagatedBuildInputs or [ ] ++ [
+      pygobject3
+      numpy
     ];
-  };
-}))
+
+    postInstall = ''
+      ${orig.postInstall or ""}
+
+      # for pythonImportsCheck
+      export PYTHONPATH="$out/${python.sitePackages}:$PYTHONPATH"
+    '';
+
+    pythonImportsCheck = [
+      "sigrok"
+      "sigrok.core"
+    ];
+
+    meta = orig.meta // {
+      description = "Python bindings for libsigrok";
+      maintainers = orig.meta.maintainers ++ [ lib.maintainers.sternenseemann ];
+    };
+  })
+)
diff --git a/pkgs/development/python-modules/sigstore-protobuf-specs/default.nix b/pkgs/development/python-modules/sigstore-protobuf-specs/default.nix
index 5e89670edef68..043b47e243108 100644
--- a/pkgs/development/python-modules/sigstore-protobuf-specs/default.nix
+++ b/pkgs/development/python-modules/sigstore-protobuf-specs/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, pythonOlder
-, flit-core
-, fetchPypi
-, buildPythonPackage
-, betterproto
+{
+  lib,
+  pythonOlder,
+  flit-core,
+  fetchPypi,
+  buildPythonPackage,
+  betterproto,
 }:
 
 buildPythonPackage rec {
   pname = "sigstore-protobuf-specs";
-  version = "0.3.0";
+  version = "0.3.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -16,23 +17,17 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "sigstore_protobuf_specs";
     inherit version;
-    hash = "sha256-MyKttzmSvKDz3G1MLDi6wpCGoR0mMamDrbJ5jljjKlQ=";
+    hash = "sha256-yuBBtAUCYAuKYz9DwldpXQIiqU76HlEQp+x62njDnZk=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    betterproto
-  ];
+  propagatedBuildInputs = [ betterproto ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sigstore_protobuf_specs"
-  ];
+  pythonImportsCheck = [ "sigstore_protobuf_specs" ];
 
   meta = with lib; {
     description = "Library for serializing and deserializing Sigstore messages";
diff --git a/pkgs/development/python-modules/sigstore/default.nix b/pkgs/development/python-modules/sigstore/default.nix
index 804e2fb69d897..50afaabf6e989 100644
--- a/pkgs/development/python-modules/sigstore/default.nix
+++ b/pkgs/development/python-modules/sigstore/default.nix
@@ -78,11 +78,11 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A codesigning tool for Python packages";
+    description = "Codesigning tool for Python packages";
     homepage = "https://github.com/sigstore/sigstore-python";
     changelog = "https://github.com/sigstore/sigstore-python/blob/${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     mainProgram = "sigstore";
   };
 }
diff --git a/pkgs/development/python-modules/sigtools/default.nix b/pkgs/development/python-modules/sigtools/default.nix
index 87dc4e91e6e90..46c3e3caad9f6 100644
--- a/pkgs/development/python-modules/sigtools/default.nix
+++ b/pkgs/development/python-modules/sigtools/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, attrs
-, buildPythonPackage
-, fetchPypi
-, mock
-, pythonOlder
-, repeated-test
-, setuptools-scm
-, sphinx
-, unittestCheckHook
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  repeated-test,
+  setuptools-scm,
+  sphinx,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -15,20 +15,14 @@ buildPythonPackage rec {
   version = "4.0.1";
   format = "pyproject";
 
-  disabled = pythonOlder "3.4";
-
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-S44TWpzU0uoA2mcMCTNy105nK6OruH9MmNjnPepURFw=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    attrs
-  ];
+  propagatedBuildInputs = [ attrs ];
 
   nativeCheckInputs = [
     mock
@@ -37,14 +31,12 @@ buildPythonPackage rec {
     unittestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "sigtools"
-  ];
+  pythonImportsCheck = [ "sigtools" ];
 
   meta = with lib; {
     description = "Utilities for working with inspect.Signature objects";
     homepage = "https://sigtools.readthedocs.io/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/simanneal/default.nix b/pkgs/development/python-modules/simanneal/default.nix
index 9bd957780adee..2bd0bd80be065 100644
--- a/pkgs/development/python-modules/simanneal/default.nix
+++ b/pkgs/development/python-modules/simanneal/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchFromGitHub, buildPythonPackage, pytest }:
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "simanneal";
@@ -16,7 +21,7 @@ buildPythonPackage rec {
   checkPhase = "pytest tests";
 
   meta = with lib; {
-    description = "A python implementation of the simulated annealing optimization technique";
+    description = "Python implementation of the simulated annealing optimization technique";
     homepage = "https://github.com/perrygeo/simanneal";
     license = licenses.isc;
     maintainers = with maintainers; [ veprbl ];
diff --git a/pkgs/development/python-modules/simber/default.nix b/pkgs/development/python-modules/simber/default.nix
index c5e3a8ef22108..651f97e2048ad 100644
--- a/pkgs/development/python-modules/simber/default.nix
+++ b/pkgs/development/python-modules/simber/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, colorama
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  colorama,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-kHoFZD7nhVxJu9MqePLkL7KTG2saPecY9238c/oeEco=";
   };
 
-  propagatedBuildInputs = [
-    colorama
-  ];
+  propagatedBuildInputs = [ colorama ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "simber"
-  ];
+  pythonImportsCheck = [ "simber" ];
 
   meta = with lib; {
     description = "Simple, minimal and powerful logger for Python";
diff --git a/pkgs/development/python-modules/simpful/default.nix b/pkgs/development/python-modules/simpful/default.nix
index 37f2ae860c0ec..2759c829246ed 100644
--- a/pkgs/development/python-modules/simpful/default.nix
+++ b/pkgs/development/python-modules/simpful/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, matplotlib
-, numpy
-, pytestCheckHook
-, pythonOlder
-, requests
-, scipy
-, seaborn
-, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  matplotlib,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  scipy,
+  seaborn,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-NtTw7sF1WfVebUk1wHrM8FHAe3/FXDcMApPkDbw0WXo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     numpy
@@ -47,9 +46,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "simpful"
-  ];
+  pythonImportsCheck = [ "simpful" ];
 
   meta = with lib; {
     description = "Library for fuzzy logic";
@@ -57,6 +54,6 @@ buildPythonPackage rec {
     changelog = "https://github.com/aresio/simpful/releases/tag/${version}";
     license = with licenses; [ lgpl3Only ];
     maintainers = with maintainers; [ fab ];
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/simple-di/default.nix b/pkgs/development/python-modules/simple-di/default.nix
index 79437c4a0b344..b8d32effc0983 100644
--- a/pkgs/development/python-modules/simple-di/default.nix
+++ b/pkgs/development/python-modules/simple-di/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  pythonImportsCheck = [
-    "simple_di"
-  ];
+  pythonImportsCheck = [ "simple_di" ];
 
   # pypi distribution contains no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/simple-parsing/default.nix b/pkgs/development/python-modules/simple-parsing/default.nix
new file mode 100644
index 0000000000000..b263f24ba1d6d
--- /dev/null
+++ b/pkgs/development/python-modules/simple-parsing/default.nix
@@ -0,0 +1,83 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+  poetry-dynamic-versioning,
+
+  # dependencies
+  docstring-parser,
+  typing-extensions,
+
+  # optional-dependencies
+  tomli,
+  tomli-w,
+  pyyaml,
+
+  # tests
+  matplotlib,
+  numpy,
+  orion,
+  pytest-benchmark,
+  pytest-regressions,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "simple-parsing";
+  version = "0.1.6";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "lebrice";
+    repo = "SimpleParsing";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-RDS1sWzaQqXp/0a7dXlUHnd6z+GTIpUN1MnUCTI9LGw=";
+  };
+
+  build-system = [
+    poetry-core
+    poetry-dynamic-versioning
+  ];
+
+  dependencies = [
+    docstring-parser
+    typing-extensions
+  ];
+
+  optional-dependencies = {
+    toml = [
+      tomli
+      tomli-w
+    ];
+    yaml = [ pyyaml ];
+  };
+
+  pythonImportsCheck = [ "simple_parsing" ];
+
+  nativeCheckInputs = [
+    matplotlib
+    numpy
+    orion
+    pytest-benchmark
+    pytest-regressions
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # Expected: OrderedDict([('a', 1), ('b', 2), ('c', 5), ('d', 6), ('e', 7)])
+    # Got: OrderedDict({'a': 1, 'b': 2, 'c': 5, 'd': 6, 'e': 7})
+    # https://github.com/lebrice/SimpleParsing/issues/326
+    "simple_parsing.utils.dict_union"
+  ];
+
+  meta = {
+    description = "Simple, Elegant, Typed Argument Parsing with argparse";
+    changelog = "https://github.com/lebrice/SimpleParsing/releases/tag/v${version}";
+    homepage = "https://github.com/lebrice/SimpleParsing";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/pkgs/development/python-modules/simple-rest-client/default.nix b/pkgs/development/python-modules/simple-rest-client/default.nix
index 325454c30ea71..023b604c8a57a 100644
--- a/pkgs/development/python-modules/simple-rest-client/default.nix
+++ b/pkgs/development/python-modules/simple-rest-client/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, httpx
-, pytest-asyncio
-, pytest-httpserver
-, pytestCheckHook
-, python-slugify
-, python-status
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpx,
+  pytest-asyncio,
+  pytest-httpserver,
+  pytestCheckHook,
+  python-slugify,
+  python-status,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -45,13 +46,9 @@ buildPythonPackage rec {
       --replace "asyncmock" ""
   '';
 
-  disabledTestPaths = [
-    "tests/test_decorators.py"
-  ];
+  disabledTestPaths = [ "tests/test_decorators.py" ];
 
-  pythonImportsCheck = [
-    "simple_rest_client"
-  ];
+  pythonImportsCheck = [ "simple_rest_client" ];
 
   meta = with lib; {
     description = "Simple REST client for Python";
diff --git a/pkgs/development/python-modules/simple-rlp/default.nix b/pkgs/development/python-modules/simple-rlp/default.nix
index f91f21a67d0c4..dd5aa752cdbd7 100644
--- a/pkgs/development/python-modules/simple-rlp/default.nix
+++ b/pkgs/development/python-modules/simple-rlp/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/simple-salesforce/default.nix b/pkgs/development/python-modules/simple-salesforce/default.nix
index e42d569b45e8d..b876c0e487015 100644
--- a/pkgs/development/python-modules/simple-salesforce/default.nix
+++ b/pkgs/development/python-modules/simple-salesforce/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, more-itertools
-, pendulum
-, pyjwt
-, pytestCheckHook
-, pythonOlder
-, pytz
-, requests
-, responses
-, setuptools
-, typing-extensions
-, zeep
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  more-itertools,
+  pendulum,
+  pyjwt,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  requests,
+  responses,
+  setuptools,
+  typing-extensions,
+  zeep,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
     hash = "sha256-nrfIyXftS2X2HuuLFRZpWLz/IbRasqUzv+r/HvhxfAw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     cryptography
@@ -49,16 +48,13 @@ buildPythonPackage rec {
     responses
   ];
 
-  pythonImportsCheck = [
-    "simple_salesforce"
-  ];
+  pythonImportsCheck = [ "simple_salesforce" ];
 
   meta = with lib; {
-    description = "A very simple Salesforce.com REST API client for Python";
+    description = "Very simple Salesforce.com REST API client for Python";
     homepage = "https://github.com/simple-salesforce/simple-salesforce";
     changelog = "https://github.com/simple-salesforce/simple-salesforce/blob/v${version}/CHANGES";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/simple-term-menu/default.nix b/pkgs/development/python-modules/simple-term-menu/default.nix
index 7a348b1f602da..ea67d21d5adc9 100644
--- a/pkgs/development/python-modules/simple-term-menu/default.nix
+++ b/pkgs/development/python-modules/simple-term-menu/default.nix
@@ -1,8 +1,8 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -10,8 +10,6 @@ buildPythonPackage rec {
   version = "1.6.4";
   pyproject = true;
 
-  disabled = pythonOlder "3.4";
-
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-vpxdvY3xKkBLFM2Oldb8AtWMYOJVX2Xd3kF3fEh/s7k=";
@@ -25,7 +23,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A Python package which creates simple interactive menus on the command line";
+    description = "Python package which creates simple interactive menus on the command line";
     mainProgram = "simple-term-menu";
     homepage = "https://github.com/IngoMeyer441/simple-term-menu";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/simple-websocket-server/default.nix b/pkgs/development/python-modules/simple-websocket-server/default.nix
index 485a9a5c7cd4a..e7e2c0af5ae4e 100644
--- a/pkgs/development/python-modules/simple-websocket-server/default.nix
+++ b/pkgs/development/python-modules/simple-websocket-server/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchFromGitHub }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+}:
 
 buildPythonPackage {
   pname = "simple-websocket-server";
@@ -14,7 +18,7 @@ buildPythonPackage {
   doCheck = false; # no tests
 
   meta = with lib; {
-    description = "A python based websocket server that is simple and easy to use";
+    description = "Python based websocket server that is simple and easy to use";
     homepage = "https://github.com/dpallot/simple-websocket-server/";
     license = licenses.mit;
     maintainers = with maintainers; [ rvolosatovs ];
diff --git a/pkgs/development/python-modules/simple-websocket/default.nix b/pkgs/development/python-modules/simple-websocket/default.nix
index 5af426fb5ba2c..a7937b59f6c1e 100644
--- a/pkgs/development/python-modules/simple-websocket/default.nix
+++ b/pkgs/development/python-modules/simple-websocket/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, setuptools
-, wheel
-, wsproto
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+  wheel,
+  wsproto,
 }:
 
 buildPythonPackage rec {
@@ -24,17 +25,11 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    wsproto
-  ];
+  propagatedBuildInputs = [ wsproto ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "simple_websocket"
-  ];
+  pythonImportsCheck = [ "simple_websocket" ];
 
   meta = with lib; {
     description = "Simple WebSocket server and client for Python";
diff --git a/pkgs/development/python-modules/simpleaudio/default.nix b/pkgs/development/python-modules/simpleaudio/default.nix
index ed90911dfc9b5..8e336d4e61c2f 100644
--- a/pkgs/development/python-modules/simpleaudio/default.nix
+++ b/pkgs/development/python-modules/simpleaudio/default.nix
@@ -1,4 +1,10 @@
-{ alsa-lib, buildPythonPackage, fetchFromGitHub, isPy27, lib }:
+{
+  alsa-lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  lib,
+}:
 
 buildPythonPackage rec {
   pname = "simpleaudio";
@@ -13,12 +19,13 @@ buildPythonPackage rec {
     sha256 = "12nypzb1m14yip4zrbzin5jc5awyp1d5md5y40g5anj4phb4hx1i";
   };
 
+  patches = [ ./python312-fix.patch ];
+
   buildInputs = [ alsa-lib ];
 
   meta = with lib; {
     homepage = "https://github.com/hamiltron/py-simple-audio";
-    description =
-      "A simple audio playback Python extension - cross-platform, asynchronous, dependency-free";
+    description = "Simple audio playback Python extension - cross-platform, asynchronous, dependency-free";
     license = licenses.mit;
     maintainers = with maintainers; [ lucus16 ];
   };
diff --git a/pkgs/development/python-modules/simpleaudio/python312-fix.patch b/pkgs/development/python-modules/simpleaudio/python312-fix.patch
new file mode 100644
index 0000000000000..4fc689fc8d3ad
--- /dev/null
+++ b/pkgs/development/python-modules/simpleaudio/python312-fix.patch
@@ -0,0 +1,98 @@
+From 6a7cb95c5af4537bad72bad9b190e09cb6d7883c Mon Sep 17 00:00:00 2001
+From: cexen <cexenial@gmail.com>
+Date: Sun, 21 Jan 2024 21:01:29 +0900
+Subject: [PATCH] replace PyMem_* to PyMem_Raw*
+
+Fixes #72.
+---
+ c_src/posix_mutex.c     | 4 ++--
+ c_src/simpleaudio.c     | 8 ++++----
+ c_src/simpleaudio_win.c | 8 ++++----
+ 3 files changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/c_src/posix_mutex.c b/c_src/posix_mutex.c
+index 533a3f1..04619f1 100644
+--- a/c_src/posix_mutex.c
++++ b/c_src/posix_mutex.c
+@@ -10,14 +10,14 @@ MIT License (see LICENSE.txt)
+ 
+ void* create_mutex() {
+   void* mutex;
+-  mutex = PyMem_Malloc(sizeof(pthread_mutex_t));
++  mutex = PyMem_RawMalloc(sizeof(pthread_mutex_t));
+   pthread_mutex_init((pthread_mutex_t*)mutex, NULL);
+   return mutex;
+ }
+ 
+ void destroy_mutex(void* mutex) {
+   pthread_mutex_destroy((pthread_mutex_t*)mutex);
+-  PyMem_Free(mutex);
++  PyMem_RawFree(mutex);
+ }
+ 
+ void grab_mutex(void* mutex) {
+diff --git a/c_src/simpleaudio.c b/c_src/simpleaudio.c
+index edacba3..b0b24b8 100644
+--- a/c_src/simpleaudio.c
++++ b/c_src/simpleaudio.c
+@@ -219,7 +219,7 @@ void delete_list_item(play_item_t* play_item) {
+         play_item->prev_item->next_item = play_item->next_item;
+     }
+     destroy_mutex(play_item->mutex);
+-    PyMem_Free(play_item);
++    PyMem_RawFree(play_item);
+ }
+ 
+ /*********************************************/
+@@ -228,7 +228,7 @@ play_item_t* new_list_item(play_item_t* list_head) {
+     play_item_t* new_item;
+     play_item_t* old_tail;
+ 
+-    new_item = PyMem_Malloc(sizeof(play_item_t));
++    new_item = PyMem_RawMalloc(sizeof(play_item_t));
+     new_item->next_item = NULL;
+ 
+     old_tail = list_head;
+@@ -269,13 +269,13 @@ void destroy_audio_blob(audio_blob_t* audio_blob) {
+     grab_mutex(audio_blob->list_mutex);
+     delete_list_item(audio_blob->play_list_item);
+     release_mutex(audio_blob->list_mutex);
+-    PyMem_Free(audio_blob);
++    PyMem_RawFree(audio_blob);
+ }
+ 
+ /********************************************/
+ 
+ audio_blob_t* create_audio_blob() {
+-    audio_blob_t* audio_blob = PyMem_Malloc(sizeof(audio_blob_t));
++    audio_blob_t* audio_blob = PyMem_RawMalloc(sizeof(audio_blob_t));
+ 
+     dbg1("created audio blob at %p\n", audio_blob);
+ 
+diff --git a/c_src/simpleaudio_win.c b/c_src/simpleaudio_win.c
+index 5aed022..ba79d23 100644
+--- a/c_src/simpleaudio_win.c
++++ b/c_src/simpleaudio_win.c
+@@ -57,8 +57,8 @@ MMRESULT fill_buffer(WAVEHDR* wave_header, audio_blob_t* audio_blob) {
+         if (audio_blob->num_buffers > 0) {
+             dbg2("done buffering - dellocating a buffer\n");
+ 
+-            PyMem_Free(wave_header->lpData);
+-            PyMem_Free(wave_header);
++            PyMem_RawFree(wave_header->lpData);
++            PyMem_RawFree(wave_header);
+             audio_blob->num_buffers--;
+         }
+         if (audio_blob->num_buffers == 0) {
+@@ -182,9 +182,9 @@ PyObject* play_os(Py_buffer buffer_obj, int len_samples, int num_channels, int b
+     dbg1("allocating %d buffers of %d bytes\n", NUM_BUFS, buffer_size);
+ 
+     for (i = 0; i < NUM_BUFS; i++) {
+-        temp_wave_hdr = PyMem_Malloc(sizeof(WAVEHDR));
++        temp_wave_hdr = PyMem_RawMalloc(sizeof(WAVEHDR));
+         memset(temp_wave_hdr, 0, sizeof(WAVEHDR));
+-        temp_wave_hdr->lpData = PyMem_Malloc(buffer_size);
++        temp_wave_hdr->lpData = PyMem_RawMalloc(buffer_size);
+         temp_wave_hdr->dwBufferLength = buffer_size;
+ 
+         result = fill_buffer(temp_wave_hdr, audio_blob);
diff --git a/pkgs/development/python-modules/simplebayes/default.nix b/pkgs/development/python-modules/simplebayes/default.nix
index 1db9ff589e982..bfa761b59e442 100644
--- a/pkgs/development/python-modules/simplebayes/default.nix
+++ b/pkgs/development/python-modules/simplebayes/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nose
-, mock
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  unittestCheckHook,
+  mock,
+  isPy3k,
 }:
 
 buildPythonPackage {
@@ -20,18 +21,18 @@ buildPythonPackage {
     sha256 = "0mp7rvfdmpfxnka4czw3lv5kkh6gdxh6dm4r6hcln1zzfg9lxp4h";
   };
 
-  nativeCheckInputs = [ nose mock ];
+  nativeCheckInputs = [
+    mock
+    unittestCheckHook
+  ];
 
   postPatch = lib.optionalString isPy3k ''
     sed -i -e 's/open *(\([^)]*\))/open(\1, encoding="utf-8")/' setup.py
   '';
 
-  checkPhase = "nosetests tests/test.py";
-
   meta = with lib; {
     description = "Memory-based naive bayesian text classifier";
     homepage = "https://github.com/hickeroar/simplebayes";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/simpleeval/default.nix b/pkgs/development/python-modules/simpleeval/default.nix
index 57693fb3791c6..21cd49585fe7b 100644
--- a/pkgs/development/python-modules/simpleeval/default.nix
+++ b/pkgs/development/python-modules/simpleeval/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,21 +18,13 @@ buildPythonPackage rec {
     hash = "sha256-I1GILYPE6OyotgRe0Ek/iHHv6q9/b/MlcTxMAtfZD80=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "test_simpleeval.py"
-  ];
+  pytestFlagsArray = [ "test_simpleeval.py" ];
 
-  pythonImportsCheck = [
-    "simpleeval"
-  ];
+  pythonImportsCheck = [ "simpleeval" ];
 
   meta = with lib; {
     description = "Simple, safe single expression evaluator library";
diff --git a/pkgs/development/python-modules/simplefin4py/default.nix b/pkgs/development/python-modules/simplefin4py/default.nix
new file mode 100644
index 0000000000000..485079e15b75e
--- /dev/null
+++ b/pkgs/development/python-modules/simplefin4py/default.nix
@@ -0,0 +1,52 @@
+{
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  dataclasses-json,
+  fetchFromGitHub,
+  lib,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "simplefin4py";
+  version = "0.0.18";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "jeeftor";
+    repo = "SimpleFin4py";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-S+E2zwvrXN0YDY6IxplG0D15zSoeUPMyQt2oyM3QB2Q=";
+  };
+
+  build-system = [ poetry-core ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    dataclasses-json
+  ];
+
+  pythonImportsCheck = [ "simplefin4py" ];
+
+  nativeCheckInputs = [
+    aioresponses
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # fails in non-UTC time zones
+    "test_dates"
+  ];
+
+  meta = {
+    changelog = "https://github.com/jeeftor/simplefin4py/releases/tag/v${version}";
+    description = "Python API for Accessing SimpleFIN";
+    homepage = "https://github.com/jeeftor/SimpleFin4py";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/simplefix/default.nix b/pkgs/development/python-modules/simplefix/default.nix
index 329c1ba313e0d..85ab1f40cc90a 100644
--- a/pkgs/development/python-modules/simplefix/default.nix
+++ b/pkgs/development/python-modules/simplefix/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-D85JW3JRQ1xErw6krMbAg94WYjPi76Xqjv/MGNMY5ZU=";
   };
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  pythonImportsCheck = [
-    "simplefix"
-  ];
+  pythonImportsCheck = [ "simplefix" ];
 
   unittestFlagsArray = [
     "-s"
diff --git a/pkgs/development/python-modules/simplegeneric/default.nix b/pkgs/development/python-modules/simplegeneric/default.nix
index 4bc1683404d6c..274b0a6ebb02f 100644
--- a/pkgs/development/python-modules/simplegeneric/default.nix
+++ b/pkgs/development/python-modules/simplegeneric/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/simplehound/default.nix b/pkgs/development/python-modules/simplehound/default.nix
index af97b7cc96197..bf2efed90c09a 100644
--- a/pkgs/development/python-modules/simplehound/default.nix
+++ b/pkgs/development/python-modules/simplehound/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, requests
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests-mock
+{
+  lib,
+  requests,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests-mock,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/simpleitk/default.nix b/pkgs/development/python-modules/simpleitk/default.nix
index e07e6e994d432..e15a2a7a726d6 100644
--- a/pkgs/development/python-modules/simpleitk/default.nix
+++ b/pkgs/development/python-modules/simpleitk/default.nix
@@ -1,18 +1,22 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, cmake
-, swig4
-, elastix
-, itk
-, numpy
-, simpleitk
-, scikit-build
+{
+  buildPythonPackage,
+  pythonOlder,
+  cmake,
+  swig,
+  elastix,
+  itk,
+  numpy,
+  simpleitk,
+  scikit-build,
 }:
 
 buildPythonPackage rec {
-  inherit (simpleitk) pname version src meta;
+  inherit (simpleitk)
+    pname
+    version
+    src
+    meta
+    ;
   format = "pyproject";
   disabled = pythonOlder "3.8";
 
@@ -23,7 +27,7 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     cmake
-    swig4
+    swig
     scikit-build
   ];
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/simplejson/default.nix b/pkgs/development/python-modules/simplejson/default.nix
index b136d9e94dac6..b8d70a31b7aaa 100644
--- a/pkgs/development/python-modules/simplejson/default.nix
+++ b/pkgs/development/python-modules/simplejson/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,15 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-+HHtU6sxxwISciLxiwa5m1zj7h/SLDmRxOZNqW5FQSY=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
-  pythonImportsCheck = [
-    "simplejson"
-  ];
+  pythonImportsCheck = [ "simplejson" ];
 
   meta = with lib; {
     description = "Extensible JSON encoder/decoder for Python";
@@ -40,7 +37,10 @@ buildPythonPackage rec {
     '';
     homepage = "https://github.com/simplejson/simplejson";
     changelog = "https://github.com/simplejson/simplejson/blob/v${version}/CHANGES.txt";
-    license = with licenses; [ mit afl21 ];
+    license = with licenses; [
+      mit
+      afl21
+    ];
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/simplekml/default.nix b/pkgs/development/python-modules/simplekml/default.nix
index 550cd81a4f4e8..99637db57a430 100644
--- a/pkgs/development/python-modules/simplekml/default.nix
+++ b/pkgs/development/python-modules/simplekml/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python package to generate KML";
-    homepage =  "https://simplekml.readthedocs.io/";
+    homepage = "https://simplekml.readthedocs.io/";
     license = licenses.lgpl3Plus;
     maintainers = with maintainers; [ rvolosatovs ];
   };
diff --git a/pkgs/development/python-modules/simplekv/default.nix b/pkgs/development/python-modules/simplekv/default.nix
index 22851e6da57b4..24598ed8bf03e 100644
--- a/pkgs/development/python-modules/simplekv/default.nix
+++ b/pkgs/development/python-modules/simplekv/default.nix
@@ -41,7 +41,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A simple key-value store for binary data";
+    description = "Simple key-value store for binary data";
     homepage = "https://github.com/mbr/simplekv";
     changelog = "https://github.com/mbr/simplekv/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/simplemma/default.nix b/pkgs/development/python-modules/simplemma/default.nix
index 60cb7438e9fbb..3cd1ddface07c 100644
--- a/pkgs/development/python-modules/simplemma/default.nix
+++ b/pkgs/development/python-modules/simplemma/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
 
-, pytestCheckHook
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "simplemma";
-  version = "0.9.1";
+  version = "1.0.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -16,22 +17,18 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "adbar";
     repo = "simplemma";
-    rev = "v${version}";
-    hash = "sha256-2IvAJ+tRnlYISymYXznCGAoUTKkM/PoYwpZpuMSXRYQ=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-lhk6QrBg0m8orYHphnP+YiCnJFE44buyp3NQbz0U550=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "simplemma"
-  ];
+  pythonImportsCheck = [ "simplemma" ];
 
   meta = with lib; {
     description = "Simple multilingual lemmatizer for Python, especially useful for speed and efficiency";
     homepage = "https://github.com/adbar/simplemma";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/simplenote/default.nix b/pkgs/development/python-modules/simplenote/default.nix
index 1a00b7ef5b6a4..2c3203446683d 100644
--- a/pkgs/development/python-modules/simplenote/default.nix
+++ b/pkgs/development/python-modules/simplenote/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
@@ -15,13 +16,12 @@ buildPythonPackage rec {
     sha256 = "1grvvgzdybhxjydalnsgh2aaz3f48idv5lqs48gr0cn7n18xwhd5";
   };
 
-   propagatedBuildInputs = [ ];
+  propagatedBuildInputs = [ ];
 
-   meta = with lib; {
-    description = "A python library for the simplenote.com web service";
+  meta = with lib; {
+    description = "Python library for the simplenote.com web service";
     homepage = "http://readthedocs.org/docs/simplenotepy/en/latest/api.html";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
-   };
-
+    maintainers = [ ];
+  };
 }
diff --git a/pkgs/development/python-modules/simplepush/default.nix b/pkgs/development/python-modules/simplepush/default.nix
index e7461a850b301..8df3016adc1f9 100644
--- a/pkgs/development/python-modules/simplepush/default.nix
+++ b/pkgs/development/python-modules/simplepush/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-DvDPihhx1rzJN6iQP5rHluplJ1AaN0b/glcd+tZCues=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -35,9 +34,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "simplepush"
-  ];
+  pythonImportsCheck = [ "simplepush" ];
 
   meta = with lib; {
     description = "Module to send push notifications via Simplepush";
diff --git a/pkgs/development/python-modules/simplesat/default.nix b/pkgs/development/python-modules/simplesat/default.nix
index 7000b010af966..3f81b311c811d 100644
--- a/pkgs/development/python-modules/simplesat/default.nix
+++ b/pkgs/development/python-modules/simplesat/default.nix
@@ -1,16 +1,19 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, writeText
-, lib
-, attrs
-, six
-, okonomiyaki
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  writeText,
+  lib,
+  attrs,
+  mock,
+  okonomiyaki,
+  pytestCheckHook,
+  pyyaml,
+  setuptools,
+  six,
 }:
 
 let
-  version = "0.8.2";
-  format = "setuptools";
-
+  version = "0.9.0";
   versionFile = writeText "simplesat_ver" ''
     version = '${version}'
     full_version = '${version}'
@@ -19,27 +22,41 @@ let
     msi_version = '${version}.000'
     version_info = (${lib.versions.major version}, ${lib.versions.minor version}, ${lib.versions.patch version}, 'final', 0)
   '';
-
-in buildPythonPackage rec {
+in
+buildPythonPackage rec {
   pname = "simplesat";
   inherit version;
-
-  propagatedBuildInputs = [ attrs six okonomiyaki ];
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "enthought";
     repo = "sat-solver";
-    rev = "v${version}";
-    hash = "sha256-6BQn1W2JGrMmNqgxi+sXx06XzNMcvwqYGMkpD0SSpT8=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-8sUOV42MLM3otG3EKvVzKKGAUpSlaTj850QZxZa62bE=";
   };
 
   preConfigure = ''
     cp ${versionFile} simplesat/_version.py
   '';
-  dontUseSetuptoolsCheck = true;
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    attrs
+    okonomiyaki
+    six
+  ];
 
   pythonImportsCheck = [ "simplesat" ];
 
+  nativeCheckInputs = [
+    mock
+    pytestCheckHook
+    pyyaml
+  ];
+
+  pytestFlagsArray = [ "simplesat/tests" ];
+
   meta = with lib; {
     homepage = "https://github.com/enthought/sat-solver";
     description = "Prototype for SAT-based dependency handling";
diff --git a/pkgs/development/python-modules/simplesqlite/default.nix b/pkgs/development/python-modules/simplesqlite/default.nix
index c616841813652..37afa77248730 100644
--- a/pkgs/development/python-modules/simplesqlite/default.nix
+++ b/pkgs/development/python-modules/simplesqlite/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, dataproperty
-, mbstrdecoder
-, pathvalidate
-, sqliteschema
-, setuptools
-, tabledata
-, typepy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  dataproperty,
+  mbstrdecoder,
+  pathvalidate,
+  sqliteschema,
+  setuptools,
+  tabledata,
+  typepy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/simplisafe-python/default.nix b/pkgs/development/python-modules/simplisafe-python/default.nix
index f417a5f6368d4..bd912e113ebdc 100644
--- a/pkgs/development/python-modules/simplisafe-python/default.nix
+++ b/pkgs/development/python-modules/simplisafe-python/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, aiohttp
-, aresponses
-, backoff
-, beautifulsoup4
-, buildPythonPackage
-, certifi
-, docutils
-, fetchFromGitHub
-, poetry-core
-, pytest-aiohttp
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, pytz
-, types-pytz
-, voluptuous
-, websockets
+{
+  lib,
+  aiohttp,
+  aresponses,
+  backoff,
+  beautifulsoup4,
+  buildPythonPackage,
+  certifi,
+  docutils,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  types-pytz,
+  voluptuous,
+  websockets,
 }:
 
 buildPythonPackage rec {
@@ -32,10 +33,7 @@ buildPythonPackage rec {
     hash = "sha256-ewbR2FI0t2F8HF0ZL5omsclB9OPAjHygGLPtSkVlvgM=";
   };
 
-
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -69,9 +67,7 @@ buildPythonPackage rec {
     "examples/"
   ];
 
-  pythonImportsCheck = [
-    "simplipy"
-  ];
+  pythonImportsCheck = [ "simplipy" ];
 
   __darwinAllowLocalNetworking = true;
 
diff --git a/pkgs/development/python-modules/simpy/default.nix b/pkgs/development/python-modules/simpy/default.nix
index 91b1b6c7002ee..7672536d5432e 100644
--- a/pkgs/development/python-modules/simpy/default.nix
+++ b/pkgs/development/python-modules/simpy/default.nix
@@ -1,11 +1,12 @@
-{ buildPythonPackage
-, fetchPypi
-, isPy27
-, lib
-, setuptools
-, setuptools-scm
-, py
-, pytestCheckHook
+{
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  lib,
+  setuptools,
+  setuptools-scm,
+  py,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -35,6 +36,9 @@ buildPythonPackage rec {
     homepage = "https://simpy.readthedocs.io/en/${version}/";
     description = "Process-based discrete-event simulation framework based on standard Python";
     license = [ licenses.mit ];
-    maintainers = with maintainers; [ dmrauh shlevy ];
+    maintainers = with maintainers; [
+      dmrauh
+      shlevy
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/single-source/default.nix b/pkgs/development/python-modules/single-source/default.nix
index 3bf2ff810d507..809493dc0a300 100644
--- a/pkgs/development/python-modules/single-source/default.nix
+++ b/pkgs/development/python-modules/single-source/default.nix
@@ -1,49 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, importlib-metadata
-, poetry-core
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  toml,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "single-source";
-  version = "0.3.0";
-  format = "pyproject";
+  version = "0.4.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "rabbit72";
     repo = "single-source";
     rev = "refs/tags/v${version}";
-    hash = "sha256-bhfMRIeJUd5JhN2tPww7fdbmHQ7ypcsZrYSa55v0+W8=";
+    hash = "sha256-4l9ochlscQoWJVkYN8Iq2DsiU7qoOf7nUFYgBOebK/g=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
-
-  propagatedBuildInputs = [
-    importlib-metadata
-  ];
+  build-system = [ poetry-core ];
 
   nativeCheckInputs = [
+    toml
     pytest-mock
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "single_source"
-  ];
+  pythonImportsCheck = [ "single_source" ];
 
-  meta = with lib; {
+  meta = {
     description = "Access to the project version in Python code for PEP 621-style projects";
     homepage = "https://github.com/rabbit72/single-source";
     changelog = "https://github.com/rabbit72/single-source/releases/tag/v${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ nickcao ];
   };
 }
diff --git a/pkgs/development/python-modules/single-version/default.nix b/pkgs/development/python-modules/single-version/default.nix
index 558126bbbd71e..869ef6a38309f 100644
--- a/pkgs/development/python-modules/single-version/default.nix
+++ b/pkgs/development/python-modules/single-version/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -28,6 +28,6 @@ buildPythonPackage rec {
     description = "Utility to let you have a single source of version in your code base";
     homepage = "https://github.com/hongquan/single-version";
     license = licenses.mit;
-    maintainers = with maintainers; [ wolfangaukang ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/siobrultech-protocols/default.nix b/pkgs/development/python-modules/siobrultech-protocols/default.nix
index 49d873f95167a..4bdb5917ecbe2 100644
--- a/pkgs/development/python-modules/siobrultech-protocols/default.nix
+++ b/pkgs/development/python-modules/siobrultech-protocols/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -34,7 +35,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A Sans-I/O Python client library for Brultech Devices";
+    description = "Sans-I/O Python client library for Brultech Devices";
     homepage = "https://github.com/sdwilsh/siobrultech-protocols";
     changelog = "https://github.com/sdwilsh/siobrultech-protocols/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/siosocks/default.nix b/pkgs/development/python-modules/siosocks/default.nix
index 7af2a1118c312..7bbcce74073f0 100644
--- a/pkgs/development/python-modules/siosocks/default.nix
+++ b/pkgs/development/python-modules/siosocks/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest-asyncio
-, pytest-trio
-, pytestCheckHook
-, pythonOlder
-, trio
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest-asyncio,
+  pytest-trio,
+  pytestCheckHook,
+  pythonOlder,
+  trio,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-uja79vWhPYOhhTUBIh+XpS4GnrYJy0/XpDXXQjnyHWM=";
   };
 
-  propagatedBuildInputs = [
-    trio
-  ];
+  propagatedBuildInputs = [ trio ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -44,9 +43,7 @@ buildPythonPackage rec {
     "tests/test_socketserver.py"
   ];
 
-  pythonImportsCheck = [
-    "siosocks"
-  ];
+  pythonImportsCheck = [ "siosocks" ];
 
   meta = with lib; {
     description = "Python socks 4/5 client/server library/framework";
diff --git a/pkgs/development/python-modules/sip/4.x.nix b/pkgs/development/python-modules/sip/4.x.nix
index 9c89a01797e72..e9305188ca6b7 100644
--- a/pkgs/development/python-modules/sip/4.x.nix
+++ b/pkgs/development/python-modules/sip/4.x.nix
@@ -1,12 +1,22 @@
-{ lib, fetchurl, fetchpatch, buildPythonPackage, python, isPyPy, pythonAtLeast, sip-module ? "sip" }:
+{
+  lib,
+  fetchurl,
+  fetchpatch,
+  buildPythonPackage,
+  python,
+  isPyPy,
+  pythonAtLeast,
+  pythonOlder,
+  sip-module ? "sip",
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = sip-module;
   version = "4.19.25";
   format = "other";
 
-  # relies on distutils
-  disabled = isPyPy || pythonAtLeast "3.12";
+  disabled = isPyPy;
 
   src = fetchurl {
     url = "https://www.riverbankcomputing.com/static/Downloads/sip/${version}/sip-${version}.tar.gz";
@@ -21,6 +31,12 @@ buildPythonPackage rec {
     })
   ];
 
+  postPatch = lib.optionalString (pythonAtLeast "3.12") ''
+    substituteInPlace configure.py --replace-fail "from distutils" "from setuptools._distutils"
+  '';
+
+  propagatedBuildInputs = lib.optional (pythonAtLeast "3.12") setuptools;
+
   configurePhase = ''
     ${python.executable} ./configure.py \
       --sip-module ${sip-module} \
@@ -30,16 +46,28 @@ buildPythonPackage rec {
 
   enableParallelBuilding = true;
 
-  pythonImportsCheck = [ sip-module "sipconfig" ];
+  pythonImportsCheck = [
+    # https://www.riverbankcomputing.com/pipermail/pyqt/2023-January/045094.html
+    # the import check for "sip" will fail, as it segfaults as the interperter is shutting down.
+    # This is an upstream bug with sip4 on python3.12, and happens in the ubuntu packages version as well.
+    # As the pacakge works fine until exit, just remove the import check for now.
+    # See discussion at https://github.com/NixOS/nixpkgs/pull/327976#discussion_r1706488319
+    (lib.optional (pythonOlder "3.12") sip-module)
+
+    "sipconfig"
+  ];
 
   doCheck = true;
 
   meta = with lib; {
     description = "Creates C++ bindings for Python modules";
     mainProgram = "sip";
-    homepage    = "https://riverbankcomputing.com/";
-    license     = licenses.gpl2Plus;
-    maintainers = with maintainers; [ lovek323 sander ];
-    platforms   = platforms.all;
+    homepage = "https://riverbankcomputing.com/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [
+      lovek323
+      sander
+    ];
+    platforms = platforms.all;
   };
 }
diff --git a/pkgs/development/python-modules/sip/default.nix b/pkgs/development/python-modules/sip/default.nix
index 30dd904f13962..8a398654b08ce 100644
--- a/pkgs/development/python-modules/sip/default.nix
+++ b/pkgs/development/python-modules/sip/default.nix
@@ -1,17 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, packaging
-, ply
-, toml
-, tomli
-
-# tests
-, poppler-qt5
-, qgis
-, qgis-ltr
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  packaging,
+  tomli,
+
+  # tests
+  poppler-qt5,
+  qgis,
+  qgis-ltr,
 }:
 
 buildPythonPackage rec {
@@ -24,16 +23,12 @@ buildPythonPackage rec {
     hash = "sha256-iIVHsBi7JMNq3tUZ6T0+UT1MaqC6VbfMGv+9Rc8Qdiw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     packaging
     setuptools
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   # There aren't tests
   doCheck = false;
@@ -47,8 +42,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Creates C++ bindings for Python modules";
-    homepage    = "https://riverbankcomputing.com/";
-    license     = licenses.gpl3Only;
+    homepage = "https://riverbankcomputing.com/";
+    license = licenses.gpl3Only;
     maintainers = with maintainers; [ nrdxp ];
   };
 }
diff --git a/pkgs/development/python-modules/siphashc/default.nix b/pkgs/development/python-modules/siphashc/default.nix
new file mode 100644
index 0000000000000..639f06ead5f1e
--- /dev/null
+++ b/pkgs/development/python-modules/siphashc/default.nix
@@ -0,0 +1,31 @@
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "siphashc";
+  version = "2.4.1";
+  pyproject = true;
+  build-system = [ setuptools ];
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-ptNpy7VkUXHbjvdir6v+eYOmtQ/j8XPXq4lj7ceS/5s=";
+  };
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "siphashc" ];
+
+  meta = with lib; {
+    description = "Python c-module for siphash";
+    homepage = "https://github.com/WeblateOrg/siphashc";
+    changelog = "https://github.com/WeblateOrg/siphashc/blob/${version}/CHANGES.rst";
+    license = licenses.isc;
+    maintainers = with maintainers; [ erictapen ];
+  };
+}
diff --git a/pkgs/development/python-modules/sipyco/default.nix b/pkgs/development/python-modules/sipyco/default.nix
index 454876d16e8b0..438072e9b0722 100644
--- a/pkgs/development/python-modules/sipyco/default.nix
+++ b/pkgs/development/python-modules/sipyco/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  numpy,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-sEYWtp11piUIa8YyuTOdFIIJ2GfcrUb+HEzPVKr4hW8=";
   };
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "sipyco"
-  ];
+  pythonImportsCheck = [ "sipyco" ];
 
   meta = with lib; {
     description = "Simple Python Communications - used by the ARTIQ experimental control package";
diff --git a/pkgs/development/python-modules/sismic/default.nix b/pkgs/development/python-modules/sismic/default.nix
new file mode 100644
index 0000000000000..8128e5490d29f
--- /dev/null
+++ b/pkgs/development/python-modules/sismic/default.nix
@@ -0,0 +1,59 @@
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  behave,
+  ruamel-yaml,
+  schema,
+  pytestCheckHook,
+  pytest-mock,
+}:
+
+let
+  version = "1.6.6";
+in
+buildPythonPackage {
+  pname = "sismic";
+  inherit version;
+  pyproject = true;
+
+  build-system = [ setuptools ];
+
+  src = fetchFromGitHub {
+    owner = "AlexandreDecan";
+    repo = "sismic";
+    rev = "refs/tags/${version}";
+    hash = "sha256-MvJyyERH0l5547cVmpxnHXRf9q1ylK9/ZfyLYBQfsbY=";
+  };
+
+  pythonRelaxDeps = [ "behave" ];
+
+  dependencies = [
+    behave
+    ruamel-yaml
+    schema
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-mock
+  ];
+
+  pythonImportsCheck = [ "sismic" ];
+
+  pytestFlagsArray = [ "tests/" ];
+
+  disabledTests = [
+    # Time related tests, might lead to flaky tests on slow/busy machines
+    "test_clock"
+  ];
+
+  meta = {
+    changelog = "https://github.com/AlexandreDecan/sismic/releases/tag/${version}";
+    description = "Sismic Interactive Statechart Model Interpreter and Checker";
+    homepage = "https://github.com/AlexandreDecan/sismic";
+    license = lib.licenses.lgpl3Only;
+    maintainers = with lib.maintainers; [ drupol ];
+  };
+}
diff --git a/pkgs/development/python-modules/sisyphus-control/default.nix b/pkgs/development/python-modules/sisyphus-control/default.nix
index 8e9a5b0168c8c..617c222578117 100644
--- a/pkgs/development/python-modules/sisyphus-control/default.nix
+++ b/pkgs/development/python-modules/sisyphus-control/default.nix
@@ -1,18 +1,20 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, netifaces
-, python-engineio
-, python-socketio
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  netifaces,
+  poetry-core,
+  python-engineio-v3,
+  python-socketio-v4,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "sisyphus-control";
-  version = "3.1.3";
-  format = "setuptools";
+  version = "3.1.4";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -20,36 +22,36 @@ buildPythonPackage rec {
     owner = "jkeljo";
     repo = "sisyphus-control";
     rev = "refs/tags/v${version}";
-    hash = "sha256-FbZWvsm2NT9a7TgHKWh/LHPsse6NBLK2grlOtHDbV2Y=";
+    hash = "sha256-1/trJ/mfiXljNt7ZIBwQ45mIBbqg68e29lvVsPDPzoU=";
   };
 
-  pythonRelaxDeps = [
-    "python-engineio"
-    "python-socketio"
+  patches = [
+    # https://github.com/jkeljo/sisyphus-control/pull/9
+    (fetchpatch2 {
+      name = "specify-build-system.patch";
+      url = "https://github.com/jkeljo/sisyphus-control/commit/dd48079e03a53cdb3af721de0d307209286c38f0.patch";
+      hash = "sha256-573YLPrNbbMXSrZ3gK8cmHmuk2+UeggcKL/+eo4pgrs=";
+    })
   ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     netifaces
-    python-engineio
-    python-socketio
+    python-engineio-v3
+    python-socketio-v4
   ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sisyphus_control"
-  ];
+  pythonImportsCheck = [ "sisyphus_control" ];
 
   meta = with lib; {
     description = "Control your Sisyphus Kinetic Art Table";
     homepage = "https://github.com/jkeljo/sisyphus-control";
-    changelog = "https://github.com/jkeljo/sisyphus-control/blob/${version}/CHANGELOG.rst";
+    changelog = "https://github.com/jkeljo/sisyphus-control/blob/${src.rev}/CHANGELOG.rst";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/siuba/default.nix b/pkgs/development/python-modules/siuba/default.nix
index dbaab8c6df6b5..4dbeb677987a4 100644
--- a/pkgs/development/python-modules/siuba/default.nix
+++ b/pkgs/development/python-modules/siuba/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, hypothesis
-, numpy
-, pandas
-, psycopg2
-, pymysql
-, python-dateutil
-, pytz
-, pyyaml
-, six
-, sqlalchemy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  hypothesis,
+  numpy,
+  pandas,
+  psycopg2,
+  pymysql,
+  python-dateutil,
+  pytz,
+  pyyaml,
+  six,
+  sqlalchemy,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/six/default.nix b/pkgs/development/python-modules/six/default.nix
index afaedae9529ec..89e77586339b7 100644
--- a/pkgs/development/python-modules/six/default.nix
+++ b/pkgs/development/python-modules/six/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPyPy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,14 +17,16 @@ buildPythonPackage rec {
     sha256 = "1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = if isPyPy then [
-    # uses ctypes to find native library
-    "--deselect=test_six.py::test_move_items"
-  ] else null;
+  pytestFlagsArray =
+    if isPyPy then
+      [
+        # uses ctypes to find native library
+        "--deselect=test_six.py::test_move_items"
+      ]
+    else
+      null;
 
   pythonImportsCheck = [ "six" ];
 
diff --git a/pkgs/development/python-modules/sjcl/default.nix b/pkgs/development/python-modules/sjcl/default.nix
index a44ceb91589f4..ba519e78e952e 100644
--- a/pkgs/development/python-modules/sjcl/default.nix
+++ b/pkgs/development/python-modules/sjcl/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pycryptodome
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pycryptodome,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,12 +25,10 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ unittestCheckHook ];
 
-  pythonImportsCheck = [
-    "sjcl"
-  ];
+  pythonImportsCheck = [ "sjcl" ];
 
   meta = with lib; {
-    description = "Decrypt and encrypt messages compatible to the \"Stanford Javascript Crypto Library (SJCL)\" message format. This is a wrapper around pycrypto.";
+    description = "Decrypt and encrypt messages compatible to the \"Stanford Javascript Crypto Library (SJCL)\" message format. This is a wrapper around pycrypto";
     homepage = "https://github.com/berlincode/sjcl";
     license = licenses.bsd3;
     maintainers = with maintainers; [ binsky ];
diff --git a/pkgs/development/python-modules/skein/default.nix b/pkgs/development/python-modules/skein/default.nix
index ff0884330b396..42ead31640cfb 100644
--- a/pkgs/development/python-modules/skein/default.nix
+++ b/pkgs/development/python-modules/skein/default.nix
@@ -1,21 +1,25 @@
-{ buildPythonPackage
-, callPackage
-, fetchPypi
-, isPy27
-, lib
-, cryptography
-, grpcio
-, pyyaml
-, grpcio-tools
-, hadoop
-, pytestCheckHook
-, python
+{
+  buildPythonPackage,
+  callPackage,
+  fetchPypi,
+  isPy27,
+  pythonOlder,
+  lib,
+  cryptography,
+  grpcio,
+  pyyaml,
+  grpcio-tools,
+  hadoop,
+  pytestCheckHook,
+  python,
+  setuptools,
+  versioneer,
 }:
 
 buildPythonPackage rec {
   pname = "skein";
   version = "0.8.2";
-  format = "setuptools";
+  pyproject = true;
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-nXTqsJNX/LwAglPcPZkmdYPfF+vDLN+nNdZaDFTrHzE=";
@@ -25,7 +29,11 @@ buildPythonPackage rec {
   jarHash = "sha256-x2KH6tnoG7sogtjrJvUaxy0PCEA8q/zneuI969oBOKo=";
   skeinJar = callPackage ./skeinjar.nix { inherit pname version jarHash; };
 
-  propagatedBuildInputs = [ cryptography grpcio pyyaml ];
+  propagatedBuildInputs = [
+    cryptography
+    grpcio
+    pyyaml
+  ] ++ lib.optionals (!pythonOlder "3.12") [ setuptools ];
   buildInputs = [ grpcio-tools ];
 
   preBuild = ''
@@ -34,10 +42,19 @@ buildPythonPackage rec {
     ln -s ${skeinJar} skein/java/skein.jar
   '';
 
-  postPatch = ''
-    substituteInPlace skein/core.py --replace "'yarn'" "'${hadoop}/bin/yarn'" \
-      --replace "else 'java'" "else '${hadoop.jdk}/bin/java'"
-  '';
+  postPatch =
+    ''
+      substituteInPlace skein/core.py --replace "'yarn'" "'${hadoop}/bin/yarn'" \
+        --replace "else 'java'" "else '${hadoop.jdk}/bin/java'"
+      # Remove vendorized versioneer
+      rm versioneer.py
+    ''
+    + lib.optionalString (!pythonOlder "3.12") ''
+      substituteInPlace skein/utils.py \
+        --replace-fail "distutils" "setuptools._distutils"
+    '';
+
+  build-system = [ versioneer ];
 
   pythonImportsCheck = [ "skein" ];
 
@@ -51,12 +68,15 @@ buildPythonPackage rec {
     "test_cli"
   ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://jcristharif.com/skein";
-    description = "A tool and library for easily deploying applications on Apache YARN";
+    description = "Tool and library for easily deploying applications on Apache YARN";
     mainProgram = "skein";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ alexbiehl illustris ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [
+      alexbiehl
+      illustris
+    ];
     # https://github.com/NixOS/nixpkgs/issues/48663#issuecomment-1083031627
     # replace with https://github.com/NixOS/nixpkgs/pull/140325 once it is merged
     broken = lib.traceIf isPy27 "${pname} not supported on ${python.executable}" isPy27;
diff --git a/pkgs/development/python-modules/skein/skeinjar.nix b/pkgs/development/python-modules/skein/skeinjar.nix
index 1cec80fa93330..74df5ea12b8c8 100644
--- a/pkgs/development/python-modules/skein/skeinjar.nix
+++ b/pkgs/development/python-modules/skein/skeinjar.nix
@@ -1,4 +1,11 @@
-{ fetchPypi, unzip, stdenv, pname, version, jarHash }:
+{
+  fetchPypi,
+  unzip,
+  stdenv,
+  pname,
+  version,
+  jarHash,
+}:
 
 stdenv.mkDerivation rec {
   inherit pname version;
diff --git a/pkgs/development/python-modules/skia-pathops/default.nix b/pkgs/development/python-modules/skia-pathops/default.nix
index 2c35cba96937d..8e27202ad838c 100644
--- a/pkgs/development/python-modules/skia-pathops/default.nix
+++ b/pkgs/development/python-modules/skia-pathops/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, cython
-, isPyPy
-, ninja
-, setuptools-scm
-, setuptools
-, fetchPypi
-, gn
-, pytestCheckHook
-, xcodebuild
-, ApplicationServices
-, OpenGL
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cython,
+  isPyPy,
+  ninja,
+  setuptools-scm,
+  setuptools,
+  fetchPypi,
+  gn,
+  pytestCheckHook,
+  xcodebuild,
+  ApplicationServices,
+  OpenGL,
 }:
 
 buildPythonPackage rec {
@@ -26,31 +27,42 @@ buildPythonPackage rec {
     hash = "sha256-oFYkneL2H6VRFrnuVVE8aja4eK7gDJFFDkBNFgZIXLs=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "build_cmd = [sys.executable, build_skia_py, build_dir]" \
-        'build_cmd = [sys.executable, build_skia_py, "--no-fetch-gn", "--no-virtualenv", "--gn-path", "${gn}/bin/gn", build_dir]'
-  '' + lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) ''
-    substituteInPlace src/cpp/skia-builder/skia/gn/skia/BUILD.gn \
-      --replace "-march=armv7-a" "-march=armv8-a" \
-      --replace "-mfpu=neon" "" \
-      --replace "-mthumb" ""
-    substituteInPlace src/cpp/skia-builder/skia/src/core/SkOpts.cpp \
-      --replace "defined(SK_CPU_ARM64)" "0"
-  '' + lib.optionalString (stdenv.isDarwin && stdenv.isx86_64) /* old compiler? */ ''
-    patch -p1 <<EOF
-    --- a/src/cpp/skia-builder/skia/include/private/base/SkTArray.h
-    +++ b/src/cpp/skia-builder/skia/include/private/base/SkTArray.h
-    @@ -492 +492 @@:
-    -    static constexpr int kMaxCapacity = SkToInt(std::min(SIZE_MAX / sizeof(T), (size_t)INT_MAX));
-    +    static constexpr int kMaxCapacity = SkToInt(std::min<size_t>(SIZE_MAX / sizeof(T), (size_t)INT_MAX));
-    EOF
-  '';
+  postPatch =
+    ''
+      substituteInPlace setup.py \
+        --replace "build_cmd = [sys.executable, build_skia_py, build_dir]" \
+          'build_cmd = [sys.executable, build_skia_py, "--no-fetch-gn", "--no-virtualenv", "--gn-path", "${gn}/bin/gn", build_dir]'
+    ''
+    + lib.optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) ''
+      substituteInPlace src/cpp/skia-builder/skia/gn/skia/BUILD.gn \
+        --replace "-march=armv7-a" "-march=armv8-a" \
+        --replace "-mfpu=neon" "" \
+        --replace "-mthumb" ""
+      substituteInPlace src/cpp/skia-builder/skia/src/core/SkOpts.cpp \
+        --replace "defined(SK_CPU_ARM64)" "0"
+    ''
+    +
+      lib.optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) # old compiler?
+        ''
+          patch -p1 <<EOF
+          --- a/src/cpp/skia-builder/skia/include/private/base/SkTArray.h
+          +++ b/src/cpp/skia-builder/skia/include/private/base/SkTArray.h
+          @@ -492 +492 @@:
+          -    static constexpr int kMaxCapacity = SkToInt(std::min(SIZE_MAX / sizeof(T), (size_t)INT_MAX));
+          +    static constexpr int kMaxCapacity = SkToInt(std::min<size_t>(SIZE_MAX / sizeof(T), (size_t)INT_MAX));
+          EOF
+        '';
 
-  nativeBuildInputs = [ cython ninja setuptools-scm ]
-    ++ lib.optionals stdenv.isDarwin [ xcodebuild ];
+  nativeBuildInputs = [
+    cython
+    ninja
+    setuptools-scm
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ xcodebuild ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [ ApplicationServices OpenGL ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
+    ApplicationServices
+    OpenGL
+  ];
 
   propagatedBuildInputs = [ setuptools ];
 
diff --git a/pkgs/development/python-modules/skidl/default.nix b/pkgs/development/python-modules/skidl/default.nix
index 2203dee0ca3f9..06871bd079051 100644
--- a/pkgs/development/python-modules/skidl/default.nix
+++ b/pkgs/development/python-modules/skidl/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, future
-, kinparse
-, pyspice
-, graphviz
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  future,
+  kinparse,
+  pyspice,
+  graphviz,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/skl2onnx/default.nix b/pkgs/development/python-modules/skl2onnx/default.nix
index ca3e567b036c6..8d258c18883cc 100644
--- a/pkgs/development/python-modules/skl2onnx/default.nix
+++ b/pkgs/development/python-modules/skl2onnx/default.nix
@@ -1,26 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, scipy
-, protobuf
-, onnx
-, scikit-learn
-, onnxconverter-common
-, onnxruntime
-, pandas
-, unittestCheckHook
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  scipy,
+  protobuf,
+  onnx,
+  scikit-learn,
+  onnxconverter-common,
+  onnxruntime,
+  pandas,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "skl2onnx";
-  version = "1.16.0";
+  version = "1.17.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-M3Cz1AZc4txZM4eMMnP0rqQflFzGUUVDsTrS1X82nOU=";
+    hash = "sha256-cSfchORw9In2gJTM//mlqBW2CfcA1D5wjm9lijOwZAM=";
   };
 
   propagatedBuildInputs = [
@@ -32,9 +32,6 @@ buildPythonPackage rec {
     onnxconverter-common
   ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   pythonRelaxDeps = [ "scikit-learn" ];
 
@@ -44,7 +41,10 @@ buildPythonPackage rec {
     unittestCheckHook
   ];
 
-  unittestFlagsArray = [ "-s" "tests" ];
+  unittestFlagsArray = [
+    "-s"
+    "tests"
+  ];
 
   # Core dump
   doCheck = false;
diff --git a/pkgs/development/python-modules/sklearn-deap/default.nix b/pkgs/development/python-modules/sklearn-deap/default.nix
index 7e8f8e159ecad..00d5dd7a784e2 100644
--- a/pkgs/development/python-modules/sklearn-deap/default.nix
+++ b/pkgs/development/python-modules/sklearn-deap/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, deap
-, numpy
-, scikit-learn
-, scipy
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  deap,
+  numpy,
+  scikit-learn,
+  scipy,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -34,12 +35,15 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [ numpy scipy deap scikit-learn ];
-
-  nativeCheckInputs = [
-    unittestCheckHook
+  propagatedBuildInputs = [
+    numpy
+    scipy
+    deap
+    scikit-learn
   ];
 
+  nativeCheckInputs = [ unittestCheckHook ];
+
   pythonImportsCheck = [ "evolutionary_search" ];
 
   meta = with lib; {
@@ -49,4 +53,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ psyanticy ];
   };
 }
-
diff --git a/pkgs/development/python-modules/skodaconnect/default.nix b/pkgs/development/python-modules/skodaconnect/default.nix
index 3cd175e518f10..0ffb5bbf42226 100644
--- a/pkgs/development/python-modules/skodaconnect/default.nix
+++ b/pkgs/development/python-modules/skodaconnect/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, aiohttp
-, beautifulsoup4
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, flit-core
-, lxml
-, pyjwt
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  beautifulsoup4,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  flit-core,
+  lxml,
+  pyjwt,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-Cy2sXj8+t8lIqrKmI9Aa7tNEIvRArynU/02ajJ+tYHg=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -39,9 +38,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "skodaconnect"
-  ];
+  pythonImportsCheck = [ "skodaconnect" ];
 
   meta = with lib; {
     description = "Python module to communicate with Skoda Connect";
diff --git a/pkgs/development/python-modules/skops/default.nix b/pkgs/development/python-modules/skops/default.nix
new file mode 100644
index 0000000000000..70df89009fd35
--- /dev/null
+++ b/pkgs/development/python-modules/skops/default.nix
@@ -0,0 +1,71 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  pytestCheckHook,
+  pytest-cov-stub,
+  huggingface-hub,
+  matplotlib,
+  pandas,
+  scikit-learn,
+  stdenv,
+  streamlit,
+  tabulate,
+}:
+
+buildPythonPackage rec {
+  pname = "skops";
+  version = "0.10";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "skops-dev";
+    repo = "skops";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-2uX5sGVdTnZEbl0VXI8E7h1pQYQVbpQeUKUchCZpgg4=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    huggingface-hub
+    scikit-learn
+    tabulate
+  ];
+
+  nativeCheckInputs = [
+    matplotlib
+    pandas
+    pytestCheckHook
+    pytest-cov-stub
+    streamlit
+  ];
+  pytestFlagsArray = [ "skops" ];
+  disabledTestPaths =
+    [
+      # try to download data from Huggingface Hub:
+      "skops/hub_utils/tests"
+      "skops/card/tests"
+      # minor output formatting issue
+      "skops/card/_model_card.py"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Segfaults on darwin
+      "skops/io/tests/test_persist.py"
+    ];
+
+  pythonImportsCheck = [ "skops" ];
+
+  meta = {
+    description = "Library for saving/loading, sharing, and deploying scikit-learn based models";
+    mainProgram = "skops";
+    homepage = "https://skops.readthedocs.io/en/stable";
+    changelog = "https://github.com/skops-dev/skops/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = [ lib.maintainers.bcdarwin ];
+  };
+}
diff --git a/pkgs/development/python-modules/skorch/default.nix b/pkgs/development/python-modules/skorch/default.nix
index 01d23f596dd9e..3e139d4714a82 100644
--- a/pkgs/development/python-modules/skorch/default.nix
+++ b/pkgs/development/python-modules/skorch/default.nix
@@ -1,29 +1,30 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, numpy
-, scikit-learn
-, scipy
-, tabulate
-, torch
-, tqdm
-, flaky
-, pandas
-, pytestCheckHook
-, safetensors
-, pythonAtLeast
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  numpy,
+  scikit-learn,
+  scipy,
+  tabulate,
+  torch,
+  tqdm,
+  flaky,
+  pandas,
+  pytestCheckHook,
+  safetensors,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
   pname = "skorch";
-  version = "0.15.0";
+  version = "1.0.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-39XVBlCmbg162z9uL84GZrU+v+M8waXbGdVV72ZYf84=";
+    hash = "sha256-JcplwaeYlGRAJXRNac1Ya/hgWoHE+NWjZhCU9eaSyRQ=";
   };
 
   disabled = pythonOlder "3.8";
@@ -52,28 +53,33 @@ buildPythonPackage rec {
       --replace "--cov-config .coveragerc" ""
   '';
 
-  disabledTests = [
-    # on CPU, these expect artifacts from previous GPU run
-    "test_load_cuda_params_to_cpu"
-    # failing tests
-    "test_pickle_load"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # there is a problem with the compiler selection
-    "test_fit_and_predict_with_compile"
-  ] ++ lib.optionals (pythonAtLeast "3.11") [
-    # Python 3.11+ not yet supported for torch.compile
-    # https://github.com/pytorch/pytorch/blob/v2.0.1/torch/_dynamo/eval_frame.py#L376-L377
-    "test_fit_and_predict_with_compile"
-  ];
+  disabledTests =
+    [
+      # on CPU, these expect artifacts from previous GPU run
+      "test_load_cuda_params_to_cpu"
+      # failing tests
+      "test_pickle_load"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # there is a problem with the compiler selection
+      "test_fit_and_predict_with_compile"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.11") [
+      # Python 3.11+ not yet supported for torch.compile
+      # https://github.com/pytorch/pytorch/blob/v2.0.1/torch/_dynamo/eval_frame.py#L376-L377
+      "test_fit_and_predict_with_compile"
+    ];
 
-  disabledTestPaths = [
-    # tries to import `transformers` and download HuggingFace data
-    "skorch/tests/test_hf.py"
-  ] ++ lib.optionals (stdenv.hostPlatform.system != "x86_64-linux") [
-    # torch.distributed is disabled by default in darwin
-    # aarch64-linux also failed these tests
-    "skorch/tests/test_history.py"
-  ];
+  disabledTestPaths =
+    [
+      # tries to import `transformers` and download HuggingFace data
+      "skorch/tests/test_hf.py"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.system != "x86_64-linux") [
+      # torch.distributed is disabled by default in darwin
+      # aarch64-linux also failed these tests
+      "skorch/tests/test_history.py"
+    ];
 
   pythonImportsCheck = [ "skorch" ];
 
diff --git a/pkgs/development/python-modules/skrl/default.nix b/pkgs/development/python-modules/skrl/default.nix
index 143a86dff84e1..eb99c9240a567 100644
--- a/pkgs/development/python-modules/skrl/default.nix
+++ b/pkgs/development/python-modules/skrl/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, gym
-, gymnasium
-, torch
-, tensorboard
-, tqdm
-, wandb
-, packaging
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  gym,
+  gymnasium,
+  torch,
+  tensorboard,
+  tqdm,
+  wandb,
+  packaging,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/skybellpy/default.nix b/pkgs/development/python-modules/skybellpy/default.nix
index 69837c5d68533..c05b3b0b96ef7 100644
--- a/pkgs/development/python-modules/skybellpy/default.nix
+++ b/pkgs/development/python-modules/skybellpy/default.nix
@@ -1,29 +1,36 @@
-{ lib
-, buildPythonPackage
-, colorlog
-, fetchFromGitHub
-, pytest-sugar
-, pytest-timeout
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
+{
+  lib,
+  buildPythonPackage,
+  colorlog,
+  fetchFromGitHub,
+  pytest-sugar,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  requests,
+  requests-mock,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "skybellpy";
   version = "0.6.3";
-  format = "setuptools";
-  disabled = pythonOlder "3.6";
+  pyproject = true;
+
+  # Still uses distrutils, https://github.com/MisterWil/skybellpy/issues/22
+  disabled = pythonOlder "3.6" || pythonAtLeast "3.12";
 
   src = fetchFromGitHub {
     owner = "MisterWil";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "1ghvm0pcdyhq6xfjc2dkldd701x77w07077sx09xsk6q2milmvzz";
+    repo = "skybellpy";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-/+9KYxXYTN0T6PoccAA/pwdwWqOzCSZdNxj6xi6oG74=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     colorlog
     requests
   ];
@@ -39,9 +46,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python wrapper for the Skybell alarm API";
-    mainProgram = "skybellpy";
     homepage = "https://github.com/MisterWil/skybellpy";
-    license = with licenses; [ mit ];
+    changelog = "https://github.com/MisterWil/skybellpy/releases/tag/v${version}";
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "skybellpy";
   };
 }
diff --git a/pkgs/development/python-modules/skyfield/default.nix b/pkgs/development/python-modules/skyfield/default.nix
index b3dc5a236ea46..8fe675eb5bed6 100644
--- a/pkgs/development/python-modules/skyfield/default.nix
+++ b/pkgs/development/python-modules/skyfield/default.nix
@@ -1,33 +1,55 @@
-{ lib, buildPythonPackage, pythonOlder, fetchFromGitHub, certifi, numpy, sgp4, jplephem
-, pandas, ipython, matplotlib, assay
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  certifi,
+  numpy,
+  sgp4,
+  jplephem,
+  pandas,
+  ipython,
+  matplotlib,
+  assay,
 }:
 
 buildPythonPackage rec {
   pname = "skyfield";
-  version = "1.45";
-  format = "setuptools";
+  version = "1.49";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "skyfielders";
     repo = "python-skyfield";
     rev = version;
-    hash = "sha256-kZrXNVE+JGPGiVsd6CTwOqfciYLsD2A4pTS3FpqO+Dk=";
+    hash = "sha256-PZ63sohdfpop3nYQr2RIMjPbrL9jdfincEhw5D8NZ+Y=";
   };
 
   # Fix broken tests on "exotic" platforms.
   # https://github.com/skyfielders/python-skyfield/issues/582#issuecomment-822033858
   postPatch = ''
     substituteInPlace skyfield/tests/test_planetarylib.py \
-      --replace "if IS_32_BIT" "if True"
+      --replace-fail "if IS_32_BIT" "if True"
   '';
 
-  propagatedBuildInputs = [ certifi numpy sgp4 jplephem ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [ pandas ipython matplotlib assay ];
+  dependencies = [
+    certifi
+    numpy
+    sgp4
+    jplephem
+  ];
 
-  # assay is broken on Python >= 3.11
-  # https://github.com/brandon-rhodes/assay/issues/15
-  doCheck = pythonOlder "3.11";
+  nativeCheckInputs = [
+    pandas
+    ipython
+    matplotlib
+    assay
+  ];
+
+  doCheck = true;
 
   checkPhase = ''
     runHook preCheck
diff --git a/pkgs/development/python-modules/skytemple-dtef/default.nix b/pkgs/development/python-modules/skytemple-dtef/default.nix
index 92b03f7d35496..2ce2555a25ca6 100644
--- a/pkgs/development/python-modules/skytemple-dtef/default.nix
+++ b/pkgs/development/python-modules/skytemple-dtef/default.nix
@@ -1,10 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pillow
-, pytestCheckHook
-, pythonOlder
-, skytemple-files
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pillow,
+  pytestCheckHook,
+  pythonOlder,
+  skytemple-files,
 }:
 
 buildPythonPackage rec {
@@ -16,26 +18,24 @@ buildPythonPackage rec {
 
   src = fetchFromGitHub {
     owner = "SkyTemple";
-    repo = pname;
+    repo = "skytemple-dtef";
     rev = version;
     hash = "sha256-vVh4WRjx/iFJnTZC7D/OCi0gOwKaXs/waVXUEu5Cda8=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     pillow
     skytemple-files
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "skytemple_dtef"
-  ];
+  pythonImportsCheck = [ "skytemple_dtef" ];
 
   meta = with lib; {
-    description = "A format for standardized rule-based tilesets with 256 adjacency combinations";
+    description = "Format for standardized rule-based tilesets with 256 adjacency combinations";
     homepage = "https://github.com/SkyTemple/skytemple-dtef";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ marius851000 ];
diff --git a/pkgs/development/python-modules/skytemple-eventserver/default.nix b/pkgs/development/python-modules/skytemple-eventserver/default.nix
index 94c38cbcf468c..275948b3970d2 100644
--- a/pkgs/development/python-modules/skytemple-eventserver/default.nix
+++ b/pkgs/development/python-modules/skytemple-eventserver/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchFromGitHub }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+}:
 
 buildPythonPackage rec {
   pname = "skytemple-eventserver";
diff --git a/pkgs/development/python-modules/skytemple-files/default.nix b/pkgs/development/python-modules/skytemple-files/default.nix
index 1f91f3a4bea20..240c0a65d8057 100644
--- a/pkgs/development/python-modules/skytemple-files/default.nix
+++ b/pkgs/development/python-modules/skytemple-files/default.nix
@@ -1,69 +1,75 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, appdirs
-, dungeon-eos
-, explorerscript
-, ndspy
-, pillow
-, setuptools
-, skytemple-rust
-, tilequant
-, pyyaml
-, pmdsky-debug-py
-, range-typed-integers
-, importlib-resources
-, typing-extensions
-, pythonOlder
-, # optional dependancies for SpriteCollab
-  aiohttp
-, lru-dict
-, graphql-core
-, gql
-, armips
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  appdirs,
+  dungeon-eos,
+  explorerscript,
+  ndspy,
+  pillow,
+  setuptools,
+  skytemple-rust,
+  pyyaml,
+  pmdsky-debug-py,
+  range-typed-integers,
+  pythonOlder,
+  # optional dependancies for SpriteCollab
+  aiohttp,
+  lru-dict,
+  graphql-core,
+  gql,
+  armips,
   # tests
-, pytestCheckHook
-, parameterized
-, xmldiff
+  pytestCheckHook,
+  parameterized,
+  xmldiff,
 }:
 
 buildPythonPackage rec {
   pname = "skytemple-files";
-  version = "1.6.5";
+  version = "1.7.0";
   pyproject = true;
 
+  disabled = pythonOlder "3.9";
+
   src = fetchFromGitHub {
     owner = "SkyTemple";
-    repo = pname;
+    repo = "skytemple-files";
     rev = version;
-    hash = "sha256-y6VHRfwQNoehp06BoZXuprYtsiGgoNL4rztJw40P4FI=";
+    hash = "sha256-G2AAQ+eRnsMTWrAF0SNmxUmOoHTSMCuSy1kUZbFy8y0=";
     # Most patches are in submodules
     fetchSubmodules = true;
   };
 
+  patches = [
+    (fetchpatch2 {
+      name = "fix-tests.patch";
+      url = "https://github.com/SkyTemple/skytemple-files/commit/854e5514e6c63ba082618d14643e3a4b30a6c2b2.patch";
+      hash = "sha256-oTV2EQQ2OPgu2pYB2fLd4jODfybnV29YNLxzDs2v6Cg=";
+    })
+  ];
+
   postPatch = ''
     substituteInPlace skytemple_files/patch/arm_patcher.py skytemple_files/data/data_cd/armips_importer.py \
-      --replace "exec_name = os.getenv(\"SKYTEMPLE_ARMIPS_EXEC\", f\"{prefix}armips\")" "exec_name = \"${armips}/bin/armips\""
+      --replace-fail "exec_name = os.getenv(\"SKYTEMPLE_ARMIPS_EXEC\", f\"{prefix}armips\")" "exec_name = \"${armips}/bin/armips\""
   '';
 
+  build-system = [ setuptools ];
+
   buildInputs = [ armips ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     appdirs
     dungeon-eos
     explorerscript
     ndspy
     pillow
-    setuptools
     skytemple-rust
-    tilequant
     pyyaml
     pmdsky-debug-py
     range-typed-integers
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    importlib-resources
-    typing-extensions
   ];
 
   passthru.optional-dependencies = {
@@ -75,7 +81,11 @@ buildPythonPackage rec {
     ] ++ gql.optional-dependencies.aiohttp;
   };
 
-  checkInputs = [ pytestCheckHook parameterized xmldiff ] ++ passthru.optional-dependencies.spritecollab;
+  nativeCheckInputs = [
+    pytestCheckHook
+    parameterized
+    xmldiff
+  ] ++ passthru.optional-dependencies.spritecollab;
   pytestFlagsArray = [ "test/" ];
   disabledTestPaths = [
     "test/skytemple_files_test/common/spritecollab/sc_online_test.py"
@@ -90,6 +100,6 @@ buildPythonPackage rec {
     mainProgram = "skytemple_export_maps";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ marius851000 ];
-    broken = stdenv.isDarwin; # pyobjc is missing
+    broken = stdenv.hostPlatform.isDarwin; # pyobjc is missing
   };
 }
diff --git a/pkgs/development/python-modules/skytemple-icons/default.nix b/pkgs/development/python-modules/skytemple-icons/default.nix
index b78bc27e3c259..20c6187a2c25a 100644
--- a/pkgs/development/python-modules/skytemple-icons/default.nix
+++ b/pkgs/development/python-modules/skytemple-icons/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchFromGitHub }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+}:
 
 buildPythonPackage rec {
   pname = "skytemple-icons";
@@ -19,6 +23,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/SkyTemple/skytemple-icons";
     description = "Icons for SkyTemple";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/skytemple-rust/default.nix b/pkgs/development/python-modules/skytemple-rust/default.nix
index 5a604db033e61..83873d2e0aa3b 100644
--- a/pkgs/development/python-modules/skytemple-rust/default.nix
+++ b/pkgs/development/python-modules/skytemple-rust/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, cargo
-, fetchPypi
-, libiconv
-, Foundation
-, rustPlatform
-, rustc
-, setuptools-rust
-, range-typed-integers
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cargo,
+  fetchPypi,
+  libiconv,
+  Foundation,
+  rustPlatform,
+  rustc,
+  setuptools-rust,
+  range-typed-integers,
 }:
 
 buildPythonPackage rec {
@@ -27,8 +28,16 @@ buildPythonPackage rec {
     hash = "sha256-0a57RmZPztcIeRs7GNYe18JO+LlWoeNWG3nD9cG0XIU=";
   };
 
-  buildInputs = lib.optionals stdenv.isDarwin [ libiconv Foundation ];
-  nativeBuildInputs = [ setuptools-rust rustPlatform.cargoSetupHook cargo rustc ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
+    libiconv
+    Foundation
+  ];
+  nativeBuildInputs = [
+    setuptools-rust
+    rustPlatform.cargoSetupHook
+    cargo
+    rustc
+  ];
   propagatedBuildInputs = [ range-typed-integers ];
 
   GETTEXT_SYSTEM = true;
diff --git a/pkgs/development/python-modules/skytemple-ssb-debugger/default.nix b/pkgs/development/python-modules/skytemple-ssb-debugger/default.nix
index 324f34f33524d..e50bc2ae59aa8 100644
--- a/pkgs/development/python-modules/skytemple-ssb-debugger/default.nix
+++ b/pkgs/development/python-modules/skytemple-ssb-debugger/default.nix
@@ -1,40 +1,50 @@
-{ buildPythonPackage
-, explorerscript
-, fetchFromGitHub
-, gobject-introspection
-, gtk3
-, gtksourceview4
-, importlib-metadata
-, lib
-, ndspy
-, nest-asyncio
-, pmdsky-debug-py
-, pycairo
-, pygobject3
-, pygtkspellcheck
-, pythonOlder
-, range-typed-integers
-, skytemple-files
-, skytemple-icons
-, skytemple-ssb-emulator
-, wrapGAppsHook
+{
+  buildPythonPackage,
+  explorerscript,
+  fetchFromGitHub,
+  setuptools,
+  gobject-introspection,
+  gtk3,
+  gtksourceview4,
+  importlib-metadata,
+  lib,
+  ndspy,
+  nest-asyncio,
+  pmdsky-debug-py,
+  pycairo,
+  pygobject3,
+  pygtkspellcheck,
+  pythonOlder,
+  range-typed-integers,
+  skytemple-files,
+  skytemple-icons,
+  skytemple-ssb-emulator,
+  wrapGAppsHook3,
 }:
 
 buildPythonPackage rec {
   pname = "skytemple-ssb-debugger";
-  version = "1.6.4";
+  version = "1.7.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "SkyTemple";
-    repo = pname;
+    repo = "skytemple-ssb-debugger";
     rev = version;
-    hash = "sha256-whnwFwPYPGF+UtjrzRKgXJNPsUGvmE+HHKJcPf0qcuA=";
+    hash = "sha256-S38Nw7FntacEdwdGu2d/zUKOsGostVy9+U2KPxlvI5Q=";
   };
 
-  buildInputs = [ gtk3 gtksourceview4 ];
-  nativeBuildInputs = [ gobject-introspection wrapGAppsHook ];
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  buildInputs = [
+    gtk3
+    gtksourceview4
+  ];
+  nativeBuildInputs = [
+    gobject-introspection
+    wrapGAppsHook3
+  ];
+  dependencies = [
     explorerscript
     ndspy
     nest-asyncio
@@ -46,9 +56,7 @@ buildPythonPackage rec {
     skytemple-files
     skytemple-icons
     skytemple-ssb-emulator
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
   doCheck = false; # requires Pokémon Mystery Dungeon ROM
   pythonImportsCheck = [ "skytemple_ssb_debugger" ];
diff --git a/pkgs/development/python-modules/skytemple-ssb-emulator/default.nix b/pkgs/development/python-modules/skytemple-ssb-emulator/default.nix
index 39c034e3d87a2..ad3fdd758bac5 100644
--- a/pkgs/development/python-modules/skytemple-ssb-emulator/default.nix
+++ b/pkgs/development/python-modules/skytemple-ssb-emulator/default.nix
@@ -1,22 +1,23 @@
-{ alsa-lib
-, buildPythonPackage
-, cargo
-, fetchPypi
-, glib
-, lib
-, libpcap
-, meson
-, ninja
-, openal
-, pkg-config
-, range-typed-integers
-, rustc
-, rustPlatform
-, SDL2
-, setuptools
-, setuptools-rust
-, soundtouch
-, zlib
+{
+  alsa-lib,
+  buildPythonPackage,
+  cargo,
+  fetchPypi,
+  glib,
+  lib,
+  libpcap,
+  meson,
+  ninja,
+  openal,
+  pkg-config,
+  range-typed-integers,
+  rustc,
+  rustPlatform,
+  SDL2,
+  setuptools,
+  setuptools-rust,
+  soundtouch,
+  zlib,
 }:
 buildPythonPackage rec {
   pname = "skytemple-ssb-emulator";
@@ -56,18 +57,12 @@ buildPythonPackage rec {
     setuptools-rust
   ];
 
-  propagatedBuildInputs = [
-    range-typed-integers
-  ];
+  propagatedBuildInputs = [ range-typed-integers ];
 
-  hardeningDisable = [
-    "format"
-  ];
+  hardeningDisable = [ "format" ];
 
   doCheck = false; # there are no tests
-  pythonImportsCheck = [
-    "skytemple_ssb_emulator"
-  ];
+  pythonImportsCheck = [ "skytemple_ssb_emulator" ];
 
   meta = with lib; {
     description = "SkyTemple Script Engine Debugger Emulator Backend";
diff --git a/pkgs/development/python-modules/slack-bolt/default.nix b/pkgs/development/python-modules/slack-bolt/default.nix
index 94291d7a9cc41..7eeb546c5d5d9 100644
--- a/pkgs/development/python-modules/slack-bolt/default.nix
+++ b/pkgs/development/python-modules/slack-bolt/default.nix
@@ -1,33 +1,34 @@
-{ aiohttp
-, bottle
-, buildPythonPackage
-, chalice
-, cherrypy
-, django
-, docker
-, falcon
-, fastapi
-, fetchFromGitHub
-, flask
-, flask-sockets
-, gunicorn
-, lib
-, moto
-, numpy
-, pyramid
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, sanic
-, setuptools
-, sanic-testing
-, slack-sdk
-, starlette
-, tornado
-, uvicorn
-, websocket-client
-, websockets
-, werkzeug
+{
+  lib,
+  aiohttp,
+  bottle,
+  buildPythonPackage,
+  chalice,
+  cherrypy,
+  django,
+  docker,
+  falcon,
+  fastapi,
+  fetchFromGitHub,
+  fetchpatch,
+  flask,
+  flask-sockets,
+  gunicorn,
+  moto,
+  pyramid,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  sanic,
+  setuptools,
+  sanic-testing,
+  slack-sdk,
+  starlette,
+  tornado,
+  uvicorn,
+  websocket-client,
+  websockets,
+  werkzeug,
 }:
 
 buildPythonPackage rec {
@@ -44,19 +45,23 @@ buildPythonPackage rec {
     hash = "sha256-UwVStemFVA4hgqnSpCKpQGwLYG+p5z7MwFXXnIhrvNk=";
   };
 
-  # The packaged pytest-runner version is too new as of 2023-07-27. It's not really needed anyway. Unfortunately,
-  # pythonRelaxDepsHook doesn't work on setup_requires packages.
   postPatch = ''
-    substituteInPlace setup.py --replace "pytest-runner==5.2" ""
+    substituteInPlace setup.py \
+      --replace-fail "pytest-runner==5.2" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
+  patches = [
+    # moto >=5 support, https://github.com/slackapi/bolt-python/pull/1046
+    (fetchpatch {
+      name = "moto-support.patch";
+      url = "https://github.com/slackapi/bolt-python/commit/69c2015ef49773de111f184dca9668aefac9e7c0.patch";
+      hash = "sha256-KW7KPeOqanV4n1UOv4DCadplJsqsPY+ju4ry0IvUqpA=";
+    })
   ];
 
-  propagatedBuildInputs = [
-    slack-sdk
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ slack-sdk ];
 
   passthru.optional-dependencies = {
     async = [
@@ -91,7 +96,6 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  # Work around "Read-only file system: '/homeless-shelter'" errors
   preCheck = ''
     export HOME="$(mktemp -d)"
   '';
@@ -116,7 +120,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "slack_bolt" ];
 
   meta = with lib; {
-    description = "A framework to build Slack apps using Python";
+    description = "Framework to build Slack apps using Python";
     homepage = "https://github.com/slackapi/bolt-python";
     changelog = "https://github.com/slackapi/bolt-python/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/slack-sdk/default.nix b/pkgs/development/python-modules/slack-sdk/default.nix
index 2782b5eea5db7..2f4c2d0f00819 100644
--- a/pkgs/development/python-modules/slack-sdk/default.nix
+++ b/pkgs/development/python-modules/slack-sdk/default.nix
@@ -1,27 +1,27 @@
-{ stdenv
-, lib
-, aiodns
-, aiohttp
-, boto3
-, buildPythonPackage
-, codecov
-, fetchFromGitHub
-, flake8
-, flask-sockets
-, moto
-, pythonOlder
-, psutil
-, pytest-asyncio
-, pytestCheckHook
-, setuptools
-, sqlalchemy
-, websocket-client
-, websockets
+{
+  lib,
+  aiodns,
+  aiohttp,
+  boto3,
+  buildPythonPackage,
+  codecov,
+  fetchFromGitHub,
+  flake8,
+  flask-sockets,
+  moto,
+  pythonOlder,
+  psutil,
+  pytest-asyncio,
+  pytestCheckHook,
+  setuptools,
+  sqlalchemy,
+  websocket-client,
+  websockets,
 }:
 
 buildPythonPackage rec {
   pname = "slack-sdk";
-  version = "3.27.1";
+  version = "3.33.1";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -30,7 +30,7 @@ buildPythonPackage rec {
     owner = "slackapi";
     repo = "python-slack-sdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-fBHu4e6pSt8yzXbLWr5cwjRFDfvdH2jzpSNzdMBg4N0=";
+    hash = "sha256-OcGzpYwa8Ouf1ojQS9KnqlL37EYCZo5yjNeXXrkd0B4=";
   };
 
   postPatch = ''
@@ -38,11 +38,9 @@ buildPythonPackage rec {
       --replace-fail ', "pytest-runner"' ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiodns
     aiohttp
     boto3
@@ -78,15 +76,13 @@ buildPythonPackage rec {
     "test_issue_690_oauth_access"
   ];
 
-  pythonImportsCheck = [
-    "slack_sdk"
-  ];
+  pythonImportsCheck = [ "slack_sdk" ];
 
   meta = with lib; {
     description = "Slack Developer Kit for Python";
     homepage = "https://slack.dev/python-slack-sdk/";
     changelog = "https://github.com/slackapi/python-slack-sdk/releases/tag/v${version}";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/slackclient/default.nix b/pkgs/development/python-modules/slackclient/default.nix
deleted file mode 100644
index 9769f22727a36..0000000000000
--- a/pkgs/development/python-modules/slackclient/default.nix
+++ /dev/null
@@ -1,90 +0,0 @@
-{ lib
-, stdenv
-, aiohttp
-, boto3
-, buildPythonPackage
-, fetchFromGitHub
-, flask
-, flask-sockets
-, pythonOlder
-, mock
-, moto
-, psutil
-, pytest-mock
-, pytestCheckHook
-, requests
-, responses
-, sqlalchemy
-, websockets
-, websocket-client
-}:
-
-buildPythonPackage rec {
-  pname = "slackclient";
-  version = "3.27.1";
-  format =  "setuptools";
-
-  disabled = pythonOlder "3.6";
-
-  src = fetchFromGitHub {
-    owner = "slackapi";
-    repo = "python-slack-sdk";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-fBHu4e6pSt8yzXbLWr5cwjRFDfvdH2jzpSNzdMBg4N0=";
-  };
-
-  propagatedBuildInputs = [
-    aiohttp
-    websocket-client
-    requests
-  ];
-
-  nativeCheckInputs = [
-    boto3
-    flask
-    flask-sockets
-    mock
-    moto
-    psutil
-    pytest-mock
-    pytestCheckHook
-    responses
-    sqlalchemy
-    websockets
-  ];
-
-  pytestFlagsArray = [
-    # Exclude tests that requires network features
-    "--ignore=integration_tests"
-  ];
-
-  preCheck = ''
-    export HOME=$(mktemp -d)
-  '';
-
-  disabledTests = [
-    "test_start_raises_an_error_if_rtm_ws_url_is_not_returned"
-    "test_interactions"
-    "test_send_message_while_disconnection"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # these fail with `ConnectionResetError: [Errno 54] Connection reset by peer`
-    "test_issue_690_oauth_access"
-    "test_issue_690_oauth_v2_access"
-    "test_send"
-    "test_send_attachments"
-    "test_send_blocks"
-    "test_send_dict"
-  ];
-
-  pythonImportsCheck = [
-    "slack"
-  ];
-
-  meta = with lib; {
-    description = "A client for Slack, which supports the Slack Web API and Real Time Messaging (RTM) API";
-    homepage = "https://github.com/slackapi/python-slackclient";
-    changelog = "https://github.com/slackapi/python-slack-sdk/releases/tag/v${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ flokli psyanticy ];
-  };
-}
diff --git a/pkgs/development/python-modules/sleekxmpp/default.nix b/pkgs/development/python-modules/sleekxmpp/default.nix
index 4f4554b5a4ae9..9c8031a6b878b 100644
--- a/pkgs/development/python-modules/sleekxmpp/default.nix
+++ b/pkgs/development/python-modules/sleekxmpp/default.nix
@@ -1,4 +1,12 @@
-{ stdenv, lib, fetchPypi, buildPythonPackage, pythonAtLeast, dnspython, pyasn1 }:
+{
+  stdenv,
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonAtLeast,
+  dnspython,
+  pyasn1,
+}:
 
 buildPythonPackage rec {
   pname = "sleekxmpp";
@@ -7,22 +15,23 @@ buildPythonPackage rec {
 
   disabled = pythonAtLeast "3.10"; # Deprecated in favor of Slixmpp
 
-  propagatedBuildInputs = [ dnspython pyasn1 ];
-
-  patches = [
-    ./dnspython-ip6.patch
+  propagatedBuildInputs = [
+    dnspython
+    pyasn1
   ];
 
+  patches = [ ./dnspython-ip6.patch ];
+
   src = fetchPypi {
     inherit pname version;
     sha256 = "d213c1de71d92505f95ced0460ee0f84fdc4ddcacb7d7dd343739ed4028e5569";
   };
 
   meta = with lib; {
-    broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin;
+    broken =
+      (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) || stdenv.hostPlatform.isDarwin;
     description = "XMPP library for Python";
     license = licenses.mit;
     homepage = "http://sleekxmpp.com/";
   };
-
 }
diff --git a/pkgs/development/python-modules/sleekxmppfs/default.nix b/pkgs/development/python-modules/sleekxmppfs/default.nix
new file mode 100644
index 0000000000000..d24fe4b40d272
--- /dev/null
+++ b/pkgs/development/python-modules/sleekxmppfs/default.nix
@@ -0,0 +1,42 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  dnspython,
+  pyasn1,
+  pyasn1-modules,
+}:
+
+buildPythonPackage rec {
+  pname = "sleekxmppfs";
+  version = "1.4.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "aszymanik";
+    repo = "SleekXMPP";
+    rev = "refs/tags/sleek-${version}";
+    hash = "sha256-E2S4fMk5dRr8g42iOYmKOknHX7NS6EZ/LAZKc1v3dPg=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    dnspython
+    pyasn1
+    pyasn1-modules
+  ];
+
+  pythonImportsCheck = [ "sleekxmppfs" ];
+
+  # tests weren't adapted for the fork
+  doCheck = false;
+
+  meta = {
+    description = "A fork of SleekXMPP with TLS cert validation disabled, intended only to be used with the sucks project";
+    license = lib.licenses.mit;
+    homepage = "https://github.com/aszymanik/SleekXMPP";
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/sleepyq/default.nix b/pkgs/development/python-modules/sleepyq/default.nix
index e93a77fd2e79e..2804be073b9e5 100644
--- a/pkgs/development/python-modules/sleepyq/default.nix
+++ b/pkgs/development/python-modules/sleepyq/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, inflection
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  inflection,
+  requests,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/slicedimage/default.nix b/pkgs/development/python-modules/slicedimage/default.nix
index 680bb0f6a5be1..8c7b0e242ce44 100644
--- a/pkgs/development/python-modules/slicedimage/default.nix
+++ b/pkgs/development/python-modules/slicedimage/default.nix
@@ -1,18 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, boto3
-, diskcache
-, enum34
-, packaging
-, pathlib
-, numpy
-, requests
-, scikit-image
-, six
-, pytestCheckHook
-, isPy27
-, tifffile
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  boto3,
+  diskcache,
+  packaging,
+  numpy,
+  requests,
+  scikit-image,
+  six,
+  pytestCheckHook,
+  tifffile,
 }:
 
 buildPythonPackage rec {
@@ -36,12 +34,10 @@ buildPythonPackage rec {
     scikit-image
     six
     tifffile
-  ] ++ lib.optionals isPy27 [ pathlib enum34 ];
-
-  nativeCheckInputs = [
-    pytestCheckHook
   ];
 
+  nativeCheckInputs = [ pytestCheckHook ];
+
   # Ignore tests which require setup, check again if disabledTestFiles can be used
   pytestFlagsArray = [ "--ignore tests/io_" ];
 
diff --git a/pkgs/development/python-modules/slicer/default.nix b/pkgs/development/python-modules/slicer/default.nix
index f678dfb2eaa20..79e514f7ee9be 100644
--- a/pkgs/development/python-modules/slicer/default.nix
+++ b/pkgs/development/python-modules/slicer/default.nix
@@ -1,56 +1,37 @@
-{ lib
-, buildPythonPackage
-, dos2unix
-, fetchpatch
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, pandas
-, torch
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  dos2unix,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  pandas,
+  torch,
+  scipy,
 }:
 
 buildPythonPackage rec {
   pname = "slicer";
-  version = "0.0.7";
-  format = "setuptools";
-  disabled = pythonOlder "3.6";
+  version = "0.0.8";
+  pyproject = true;
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-9dX3tF+Y0VW5wLplVPqXcMaybVeTo+d6EDD7VpEOvuw=";
+    hash = "sha256-LnVTr3PwwMLTVfSvzD7Pl8byFW/PRZOVXD9Wz2xNbrc=";
   };
 
   prePatch = ''
     dos2unix slicer/*
   '';
 
-  patches = [
-    # these patches add support for numpy>=1.24
-    (fetchpatch {
-      url = "https://github.com/interpretml/slicer/commit/028e09e639c4a3c99abe1d537cce30af2eebb081.patch";
-      hash = "sha256-jh/cbz7cx2ks6jMNh1gI1n5RS/OHBtSIDZRxUGyrl/I=";
-    })
-    (fetchpatch {
-      url = "https://github.com/interpretml/slicer/commit/d4bb09f136d7e1f64711633c16a37e7bee738696.patch";
-      hash = "sha256-9rh99s4JWF4iKClZ19jvqSeRulL32xB5Use8PGkh/SA=";
-    })
-    (fetchpatch {
-      url = "https://github.com/interpretml/slicer/commit/74b3683a5a7bd982f9eaaf8d8d665dfdaf2c6604.patch";
-      hash = "sha256-R3zsC3udYPFUT93eRhb6wyc9S5n2wceiOunWJ8K+648=";
-    })
-  ];
-
-  nativeBuildInputs = [
-    dos2unix
-  ];
-
-  nativeCheckInputs = [ pytestCheckHook pandas torch scipy ];
+  nativeBuildInputs = [ dos2unix ];
 
-  disabledTests = [
-    # IndexError: too many indices for array
-    "test_slicer_sparse"
-    "test_operations_2d"
+  nativeCheckInputs = [
+    pytestCheckHook
+    pandas
+    torch
+    scipy
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/slicerator/default.nix b/pkgs/development/python-modules/slicerator/default.nix
index a8a4a7d3b8d22..6dc89369d0c39 100644
--- a/pkgs/development/python-modules/slicerator/default.nix
+++ b/pkgs/development/python-modules/slicerator/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,9 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A lazy-loading, fancy-sliceable iterable";
+    description = "Lazy-loading, fancy-sliceable iterable";
     homepage = "https://github.com/soft-matter/slicerator";
     license = licenses.bsdOriginal;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/slimit/default.nix b/pkgs/development/python-modules/slimit/default.nix
index 40b4f0ca67b04..771fd05d8ceb1 100644
--- a/pkgs/development/python-modules/slimit/default.nix
+++ b/pkgs/development/python-modules/slimit/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, ply
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ply,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,17 +18,11 @@ buildPythonPackage rec {
     hash = "sha256-J+8RGENM/+eaTNvoC54XXPP+aWmazlssjnZAY88J/F0=";
   };
 
-  propagatedBuildInputs = [
-    ply
-  ];
+  propagatedBuildInputs = [ ply ];
 
-  pythonImportsCheck = [
-    "slimit"
-  ];
+  pythonImportsCheck = [ "slimit" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "SlimIt -  a JavaScript minifier/parser in Python";
diff --git a/pkgs/development/python-modules/slither-analyzer/default.nix b/pkgs/development/python-modules/slither-analyzer/default.nix
index 2dc276bac48b0..87cc7f7cf77c3 100644
--- a/pkgs/development/python-modules/slither-analyzer/default.nix
+++ b/pkgs/development/python-modules/slither-analyzer/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, crytic-compile
-, fetchFromGitHub
-, makeWrapper
-, packaging
-, prettytable
-, pythonOlder
-, setuptools-scm
-, solc
-, web3
-, withSolc ? false
-, testers
-, slither-analyzer
+{
+  lib,
+  nix-update-script,
+  buildPythonPackage,
+  crytic-compile,
+  fetchFromGitHub,
+  makeWrapper,
+  packaging,
+  prettytable,
+  pythonOlder,
+  setuptools-scm,
+  solc,
+  web3,
+  withSolc ? false,
+  testers,
+  slither-analyzer,
 }:
 
 buildPythonPackage rec {
   pname = "slither-analyzer";
-  version = "0.10.2";
+  version = "0.10.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,7 +27,7 @@ buildPythonPackage rec {
     owner = "crytic";
     repo = "slither";
     rev = "refs/tags/${version}";
-    hash = "sha256-KmbmljtmMtrJxgSMJjQ8fdk6RpEXcAVBuo24EsyMV8k=";
+    hash = "sha256-KWLv0tpd1FHZ9apipVPWw6VjtfYpngsH7XDQQ3luBZA=";
   };
 
   nativeBuildInputs = [
@@ -83,6 +84,8 @@ buildPythonPackage rec {
     version = "${version}";
   };
 
+  passthru.updateScript = nix-update-script { };
+
   meta = with lib; {
     description = "Static Analyzer for Solidity";
     longDescription = ''
@@ -94,6 +97,10 @@ buildPythonPackage rec {
     changelog = "https://github.com/crytic/slither/releases/tag/${version}";
     license = licenses.agpl3Plus;
     mainProgram = "slither";
-    maintainers = with maintainers; [ arturcygan fab hellwolf ];
+    maintainers = with maintainers; [
+      arturcygan
+      fab
+      hellwolf
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/slixmpp/default.nix b/pkgs/development/python-modules/slixmpp/default.nix
index 82fba525c0372..e487f91d05a76 100644
--- a/pkgs/development/python-modules/slixmpp/default.nix
+++ b/pkgs/development/python-modules/slixmpp/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, aiodns
-, aiohttp
-, fetchPypi
-, gnupg
-, pyasn1
-, pyasn1-modules
-, pytestCheckHook
-, substituteAll
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  aiodns,
+  aiohttp,
+  fetchPypi,
+  gnupg,
+  pyasn1,
+  pyasn1-modules,
+  pytestCheckHook,
+  substituteAll,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     pyasn1-modules
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   patches = [
     (substituteAll {
@@ -47,9 +46,7 @@ buildPythonPackage rec {
     "tests/test_xep_0454.py"
   ];
 
-  pythonImportsCheck = [
-    "slixmpp"
-  ];
+  pythonImportsCheck = [ "slixmpp" ];
 
   meta = with lib; {
     description = "Python library for XMPP";
diff --git a/pkgs/development/python-modules/slob/default.nix b/pkgs/development/python-modules/slob/default.nix
index 38b0c9d92bfdf..3e72030896d55 100644
--- a/pkgs/development/python-modules/slob/default.nix
+++ b/pkgs/development/python-modules/slob/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy3k
-, pyicu
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy3k,
+  pyicu,
+  python,
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/slovnet/default.nix b/pkgs/development/python-modules/slovnet/default.nix
index 7f813564cafd1..182b0475766af 100644
--- a/pkgs/development/python-modules/slovnet/default.nix
+++ b/pkgs/development/python-modules/slovnet/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, razdel
-, navec
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  razdel,
+  navec,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +18,11 @@ buildPythonPackage rec {
     hash = "sha256-AtIle9ybnMHSQr007iyGHGSPcIPveJj+FGirzDge95k=";
   };
 
-  propagatedBuildInputs = [ numpy navec razdel ];
+  propagatedBuildInputs = [
+    numpy
+    navec
+    razdel
+  ];
   nativeCheckInputs = [ pytestCheckHook ];
   pytestFlagsArray = [ "tests/" ];
   disabledTestPaths = [
diff --git a/pkgs/development/python-modules/slowapi/default.nix b/pkgs/development/python-modules/slowapi/default.nix
index c64a89d896df5..2e42fc17271f2 100644
--- a/pkgs/development/python-modules/slowapi/default.nix
+++ b/pkgs/development/python-modules/slowapi/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fastapi
-, fetchFromGitHub
-, limits
-, mock
-, hiro
-, httpx
-, poetry-core
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, redis
-, starlette
+{
+  lib,
+  buildPythonPackage,
+  fastapi,
+  fetchFromGitHub,
+  limits,
+  mock,
+  hiro,
+  httpx,
+  poetry-core,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  redis,
+  starlette,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     hash = "sha256-R/Mr+Qv22AN7HCDGmAUVh4efU8z4gMIyhC0AuKmxgdE=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     limits
@@ -50,13 +49,9 @@ buildPythonPackage rec {
     # AssertionError: Regex pattern 'parameter `request` must be an instance of starlette.requests.Request' does not match 'This portal is not running'.
     "test_endpoint_request_param_invalid"
     "test_endpoint_response_param_invalid"
-  ] ++ lib.optionals (pythonAtLeast "3.10") [
-    "test_multiple_decorators"
-  ];
+  ] ++ lib.optionals (pythonAtLeast "3.10") [ "test_multiple_decorators" ];
 
-  pythonImportsCheck = [
-    "slowapi"
-  ];
+  pythonImportsCheck = [ "slowapi" ];
 
   meta = with lib; {
     description = "Python library for API rate limiting";
diff --git a/pkgs/development/python-modules/slpp/default.nix b/pkgs/development/python-modules/slpp/default.nix
index 74dbfcc834cde..10c964c61177c 100644
--- a/pkgs/development/python-modules/slpp/default.nix
+++ b/pkgs/development/python-modules/slpp/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-, setuptools
-, six
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -17,25 +18,19 @@ buildPythonPackage rec {
     hash = "sha256-If3ZMoNICQxxpdMnc+juaKq4rX7MMi9eDMAQEUy1Scg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   # No tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "slpp"
-  ];
+  pythonImportsCheck = [ "slpp" ];
 
   meta = with lib; {
     description = "Simple lua-python parser";
     homepage = "https://github.com/SirAnthony/slpp";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/slugid/default.nix b/pkgs/development/python-modules/slugid/default.nix
index 3d3e541872673..cc695e5f2dbd6 100644
--- a/pkgs/development/python-modules/slugid/default.nix
+++ b/pkgs/development/python-modules/slugid/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, lib
-, fetchFromGitHub
+{
+  buildPythonPackage,
+  lib,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
 
   doCheck = false; # has no tests
 
-  pythonImportsCheck = [
-    "slugid"
-  ];
+  pythonImportsCheck = [ "slugid" ];
 
   meta = with lib; {
     description = "URL-safe base64 UUID encoder for generating 22 character slugs";
diff --git a/pkgs/development/python-modules/sly/default.nix b/pkgs/development/python-modules/sly/default.nix
index a1ba8f67f87b7..6087af1deee5f 100644
--- a/pkgs/development/python-modules/sly/default.nix
+++ b/pkgs/development/python-modules/sly/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,25 +19,19 @@ buildPythonPackage rec {
     hash = "sha256-JR1CAV6FBxWK7CFk8GA130qCsDFM5kUPRX1xJedkkCQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   postPatch = ''
     # imperative dev dependency installation
     rm Makefile
   '';
 
-  pythonImportsCheck = [
-    "sly"
-  ];
+  pythonImportsCheck = [ "sly" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "An improved PLY implementation of lex and yacc for Python 3";
+    description = "Improved PLY implementation of lex and yacc for Python 3";
     homepage = "https://github.com/dabeaz/sly";
     license = licenses.bsd3;
     maintainers = [ ];
diff --git a/pkgs/development/python-modules/smart-meter-texas/default.nix b/pkgs/development/python-modules/smart-meter-texas/default.nix
index 556f978c73124..f373faeb278b7 100644
--- a/pkgs/development/python-modules/smart-meter-texas/default.nix
+++ b/pkgs/development/python-modules/smart-meter-texas/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, aiohttp
-, asn1
-, python-dateutil
-, tenacity
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  aiohttp,
+  asn1,
+  python-dateutil,
+  setuptools,
+  tenacity,
 }:
 
 buildPythonPackage rec {
   pname = "smart-meter-texas";
-  version = "0.5.3";
-  format = "setuptools";
+  version = "0.5.5";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
@@ -19,15 +21,17 @@ buildPythonPackage rec {
     owner = "grahamwetzler";
     repo = "smart-meter-texas";
     rev = "refs/tags/v${version}";
-    hash = "sha256-8htd5fLrtkaVlSEm+RB7tWA5YZkcAOjAXVNzZiMwP7k=";
+    hash = "sha256-dHWcYrBtmKdEIU45rMy4KvoPX88hnRpd4KBlbJaNvgI=";
   };
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "pytest-runner" ""
+      --replace-fail "pytest-runner" ""
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     aiohttp
     asn1
     python-dateutil
diff --git a/pkgs/development/python-modules/smart-open/default.nix b/pkgs/development/python-modules/smart-open/default.nix
index b9622276bdf88..aa98f44b02ff1 100644
--- a/pkgs/development/python-modules/smart-open/default.nix
+++ b/pkgs/development/python-modules/smart-open/default.nix
@@ -1,20 +1,22 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, azure-common
-, azure-core
-, azure-storage-blob
-, boto3
-, google-cloud-storage
-, requests
-, moto
-, paramiko
-, pytestCheckHook
-, responses
-, setuptools
-, wrapt
-, zstandard
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  fetchpatch,
+  azure-common,
+  azure-core,
+  azure-storage-blob,
+  boto3,
+  google-cloud-storage,
+  requests,
+  moto,
+  paramiko,
+  pytestCheckHook,
+  responses,
+  setuptools,
+  wrapt,
+  zstandard,
 }:
 
 buildPythonPackage rec {
@@ -31,43 +33,35 @@ buildPythonPackage rec {
     hash = "sha256-4HOTaF6AKXGlVCvSGKnnaH73aa4IO0aRxz03XQ4gSd8=";
   };
 
-  build-system = [
-    setuptools
+  patches = [
+    # https://github.com/RaRe-Technologies/smart_open/pull/822
+    # fix test_smart_open.py on python 3.12
+    (fetchpatch {
+      name = "fix-smart-open-test.patch";
+      url = "https://github.com/RaRe-Technologies/smart_open/commit/3d29564ca034a56d343c9d14b178aaa0ff4c937c.patch";
+      hash = "sha256-CrAeqaIMM8bctWiFnq9uamnIlkaslDyjaWL6k9wUjT8=";
+    })
   ];
 
-  dependencies = [
-    wrapt
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ wrapt ];
 
   optional-dependencies = {
-    s3 = [
-      boto3
-    ];
-    gcs = [
-      google-cloud-storage
-    ];
+    s3 = [ boto3 ];
+    gcs = [ google-cloud-storage ];
     azure = [
       azure-storage-blob
       azure-common
       azure-core
     ];
-    http = [
-      requests
-    ];
-    webhdfs = [
-      requests
-    ];
-    ssh = [
-      paramiko
-    ];
-    zst = [
-      zstandard
-    ];
+    http = [ requests ];
+    webhdfs = [ requests ];
+    ssh = [ paramiko ];
+    zst = [ zstandard ];
   };
 
-  pythonImportsCheck = [
-    "smart_open"
-  ];
+  pythonImportsCheck = [ "smart_open" ];
 
   nativeCheckInputs = [
     moto
@@ -75,9 +69,7 @@ buildPythonPackage rec {
     responses
   ] ++ lib.flatten (builtins.attrValues optional-dependencies);
 
-  pytestFlagsArray = [
-    "smart_open"
-  ];
+  pytestFlagsArray = [ "smart_open" ];
 
   disabledTests = [
     # https://github.com/RaRe-Technologies/smart_open/issues/784
@@ -88,7 +80,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    changelog =  "https://github.com/piskvorky/smart_open/releases/tag/v${version}";
+    changelog = "https://github.com/piskvorky/smart_open/releases/tag/v${version}";
     description = "Library for efficient streaming of very large file";
     homepage = "https://github.com/RaRe-Technologies/smart_open";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/smarthab/default.nix b/pkgs/development/python-modules/smarthab/default.nix
index f317e9a008ede..4060a3a92a91d 100644
--- a/pkgs/development/python-modules/smarthab/default.nix
+++ b/pkgs/development/python-modules/smarthab/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, aiohttp
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  aiohttp,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
     sha256 = "bf929455a2f7cc1e275b331de73d983587138a8d9179574988ba05fa152d3ccf";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # no tests on PyPI, no tags on GitLab
   doCheck = false;
diff --git a/pkgs/development/python-modules/smartypants/default.nix b/pkgs/development/python-modules/smartypants/default.nix
index 3d0fd5ba6e2c3..e51744b9f5076 100644
--- a/pkgs/development/python-modules/smartypants/default.nix
+++ b/pkgs/development/python-modules/smartypants/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch2
-, isPyPy
-, setuptools
-, docutils
-, pygments
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  isPyPy,
+  setuptools,
+  docutils,
+  pygments,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     docutils
diff --git a/pkgs/development/python-modules/smbprotocol/default.nix b/pkgs/development/python-modules/smbprotocol/default.nix
index f72eef539134d..68405f52beff5 100644
--- a/pkgs/development/python-modules/smbprotocol/default.nix
+++ b/pkgs/development/python-modules/smbprotocol/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, pyspnego
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  pyspnego,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -33,7 +34,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
     # https://github.com/jborean93/smbprotocol/issues/119
     "test_copymode_local_to_local_symlink_dont_follow"
     "test_copystat_local_to_local_symlink_dont_follow_fail"
@@ -43,9 +44,7 @@ buildPythonPackage rec {
     "test_recv_"
   ];
 
-  pythonImportsCheck = [
-    "smbprotocol"
-  ];
+  pythonImportsCheck = [ "smbprotocol" ];
 
   meta = with lib; {
     description = "Python SMBv2 and v3 Client";
diff --git a/pkgs/development/python-modules/smbus-cffi/default.nix b/pkgs/development/python-modules/smbus-cffi/default.nix
index b32cde3a87a4b..7d76327862c9d 100644
--- a/pkgs/development/python-modules/smbus-cffi/default.nix
+++ b/pkgs/development/python-modules/smbus-cffi/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cffi
-, py
-, pytestCheckHook
-, pyserial
-, fetchpatch
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cffi,
+  py,
+  pytestCheckHook,
+  pyserial,
+  fetchpatch,
 }:
 
 buildPythonPackage rec {
@@ -39,7 +40,11 @@ buildPythonPackage rec {
   # requires hardware access
   pytestFlagsArray = [ "--ignore=test/test_smbus_integration.py" ];
 
-  nativeCheckInputs = [ py pytestCheckHook pyserial ];
+  nativeCheckInputs = [
+    py
+    pytestCheckHook
+    pyserial
+  ];
 
   meta = with lib; {
     description = "Python module for SMBus access through Linux I2C /dev interface";
diff --git a/pkgs/development/python-modules/smbus2/default.nix b/pkgs/development/python-modules/smbus2/default.nix
index 893dd1921b512..f88d43362d583 100644
--- a/pkgs/development/python-modules/smbus2/default.nix
+++ b/pkgs/development/python-modules/smbus2/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-tjJurJzDn0ATiYY3Xo66lwUs98/7ZLG3d4+h1prVHAI=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "smbus2"
-  ];
+  pythonImportsCheck = [ "smbus2" ];
 
   meta = with lib; {
     description = "Drop-in replacement for smbus-cffi/smbus-python";
diff --git a/pkgs/development/python-modules/smdebug-rulesconfig/default.nix b/pkgs/development/python-modules/smdebug-rulesconfig/default.nix
index 1c64184c093bd..6f91ebe4c79a9 100644
--- a/pkgs/development/python-modules/smdebug-rulesconfig/default.nix
+++ b/pkgs/development/python-modules/smdebug-rulesconfig/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "smdebug-rulesconfig";
diff --git a/pkgs/development/python-modules/smhi-pkg/default.nix b/pkgs/development/python-modules/smhi-pkg/default.nix
index a6b5334cedfcc..a31cb56a3a364 100644
--- a/pkgs/development/python-modules/smhi-pkg/default.nix
+++ b/pkgs/development/python-modules/smhi-pkg/default.nix
@@ -1,26 +1,25 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "smhi-pkg";
-  version = "1.0.16";
+  version = "1.0.17";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "joysoftware";
     repo = "pypi_smhi";
     rev = "refs/tags/${version}";
-    hash = "sha256-jcIXzAZO9SxC/0apdjAVv1GmBTbdlasfXr1/Tj9adNc=";
+    hash = "sha256-dJh44JGWy3VafTnwwxWcr5cXClmzY1YuySy1RJzOak8=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   nativeCheckInputs = [
     pytest-asyncio
diff --git a/pkgs/development/python-modules/smmap/default.nix b/pkgs/development/python-modules/smmap/default.nix
index dd58978ced49a..27ae1788145fd 100644
--- a/pkgs/development/python-modules/smmap/default.nix
+++ b/pkgs/development/python-modules/smmap/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, setuptools
-, nosexcover
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,18 +16,14 @@ buildPythonPackage rec {
     hash = "sha256-jXkCjqbMEx2l6rCZpdlamY1DxneZVv/+O0VQQJEQdto=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  doCheck = pythonOlder "3.12";
+  pythonImportsCheck = [ "smmap" ];
 
-  nativeCheckInputs = [
-    nosexcover
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = {
-    description = "A pure python implementation of a sliding window memory map manager";
+    description = "Pure python implementation of a sliding window memory map manager";
     homepage = "https://github.com/gitpython-developers/smmap";
     maintainers = [ ];
     license = lib.licenses.bsd3;
diff --git a/pkgs/development/python-modules/smpp-pdu/default.nix b/pkgs/development/python-modules/smpp-pdu/default.nix
index e320b7e242c64..a515b53716274 100644
--- a/pkgs/development/python-modules/smpp-pdu/default.nix
+++ b/pkgs/development/python-modules/smpp-pdu/default.nix
@@ -1,12 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pydantic
-, requests
-, pytestCheckHook
-, pytest-asyncio
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage {
@@ -22,13 +19,9 @@ buildPythonPackage {
     hash = "sha256-/icVexc2S8sbJqn4ioeIhYxyDFIENuCfsFhl0uAHa9g=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "smpp.pdu" ];
 
@@ -36,6 +29,6 @@ buildPythonPackage {
     description = "Library for parsing Protocol Data Units (PDUs) in SMPP protocol";
     homepage = "https://github.com/hologram-io/smpp.pdu";
     license = licenses.asl20;
-    maintainers = with maintainers; [ flokli janik ];
+    maintainers = with maintainers; [ flokli ];
   };
 }
diff --git a/pkgs/development/python-modules/smpplib/default.nix b/pkgs/development/python-modules/smpplib/default.nix
index a991532fa9174..4a1753d7a7aeb 100644
--- a/pkgs/development/python-modules/smpplib/default.nix
+++ b/pkgs/development/python-modules/smpplib/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, six
-, mock
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  six,
+  mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -14,12 +15,10 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-UhWpWwU40m8YlgDgmCsx2oKB90U81uKGLFsh4+EAIzE=";
+    hash = "sha256-UhWpWwU40m8YlgDgmCsx2oKB90U81uKGLFsh4+EAIzE=";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   nativeCheckInputs = [
     mock
@@ -30,15 +29,13 @@ buildPythonPackage rec {
     rm -rf $out/${python.sitePackages}/tests
   '';
 
-  pythonImportsCheck = [
-    "smpplib"
-  ];
+  pythonImportsCheck = [ "smpplib" ];
 
   meta = with lib; {
     description = "SMPP library for Python";
     homepage = "https://github.com/python-smpplib/python-smpplib";
     changelog = "https://github.com/python-smpplib/python-smpplib/releases/tag/${version}";
     license = licenses.lgpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/smtpdfix/default.nix b/pkgs/development/python-modules/smtpdfix/default.nix
index 5d34cd6693bff..51346fe358aa4 100644
--- a/pkgs/development/python-modules/smtpdfix/default.nix
+++ b/pkgs/development/python-modules/smtpdfix/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonAtLeast
-, setuptools
-, pytest
-, portpicker
-, cryptography
-, aiosmtpd
-, pytestCheckHook
-, pytest-asyncio
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonAtLeast,
+  setuptools,
+  pytest,
+  portpicker,
+  cryptography,
+  aiosmtpd,
+  pytestCheckHook,
+  pytest-asyncio,
 }:
 
 buildPythonPackage rec {
   pname = "smtpdfix";
-  version = "0.5.1";
+  version = "0.5.2";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-882i0T6EySZ6jxOgoM11MU+ha41XfKjDDhUjeX7qvp4=";
+    hash = "sha256-5NGs6Q83EqGRJ+2IdOaXqGFIwfSNKy2wwHIJaOjj7JU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiosmtpd
@@ -43,7 +42,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "An SMTP server for use as a pytest fixture for testing";
+    description = "SMTP server for use as a pytest fixture for testing";
     homepage = "https://github.com/bebleo/smtpdfix";
     changelog = "https://github.com/bebleo/smtpdfix/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/snakebite/default.nix b/pkgs/development/python-modules/snakebite/default.nix
index a5a1addf81b0a..26fffc7559336 100644
--- a/pkgs/development/python-modules/snakebite/default.nix
+++ b/pkgs/development/python-modules/snakebite/default.nix
@@ -1,40 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, protobuf
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  protobuf,
 }:
 
 buildPythonPackage rec {
   pname = "snakebite";
   version = "2.11.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "085238b4944cb9c658ee62d5794de936ac3d0c337c504b2cc86424a205ae978a";
+    hash = "sha256-CFI4tJRMucZY7mLVeU3pNqw9DDN8UEssyGQkogWul4o=";
   };
 
-  propagatedBuildInputs = [
-    protobuf
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ protobuf ];
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "'argparse'" ""
+      --replace-fail "'argparse'" ""
   '';
 
   # Tests require hadoop hdfs
   doCheck = false;
 
-  pythonImportsCheck = [
-    "snakebite"
-  ];
+  pythonImportsCheck = [ "snakebite" ];
 
   meta = with lib; {
     description = "Pure Python HDFS client";
     mainProgram = "snakebite";
     homepage = "https://github.com/spotify/snakebite";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/snakemake-executor-plugin-cluster-generic/default.nix b/pkgs/development/python-modules/snakemake-executor-plugin-cluster-generic/default.nix
index 8785039c6a189..67ae31e9ff34c 100644
--- a/pkgs/development/python-modules/snakemake-executor-plugin-cluster-generic/default.nix
+++ b/pkgs/development/python-modules/snakemake-executor-plugin-cluster-generic/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, snakemake-interface-executor-plugins
-, snakemake-interface-common
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  snakemake-interface-executor-plugins,
+  snakemake-interface-common,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-RHMefoJOZb6TjRsFCORLFdHtI5ZpTsV6CHrjHKMat9o=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     snakemake-interface-executor-plugins
diff --git a/pkgs/development/python-modules/snakemake-interface-common/default.nix b/pkgs/development/python-modules/snakemake-interface-common/default.nix
index 2bc7a0672dba4..d9d3d09a45526 100644
--- a/pkgs/development/python-modules/snakemake-interface-common/default.nix
+++ b/pkgs/development/python-modules/snakemake-interface-common/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "snakemake-interface-common";
-  version = "1.17.2";
+  version = "1.17.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "snakemake";
     repo = "snakemake-interface-common";
     rev = "refs/tags/v${version}";
-    hash = "sha256-N8mSS+gABAgXm01BcsMk89a3HsIsc3RHxCAi3GlxtRg=";
+    hash = "sha256-91Sh6JNpCEWPRkrEwoJeycZS1D4lXWA4IJLVcxBYLnI=";
   };
 
   build-system = [ poetry-core ];
diff --git a/pkgs/development/python-modules/snakemake-interface-executor-plugins/default.nix b/pkgs/development/python-modules/snakemake-interface-executor-plugins/default.nix
index e40a0842b9086..19365d837ff2f 100644
--- a/pkgs/development/python-modules/snakemake-interface-executor-plugins/default.nix
+++ b/pkgs/development/python-modules/snakemake-interface-executor-plugins/default.nix
@@ -1,27 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, argparse-dataclass
-, throttler
-, snakemake-interface-common
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  argparse-dataclass,
+  throttler,
+  snakemake-interface-common,
 }:
 
 buildPythonPackage rec {
   pname = "snakemake-interface-executor-plugins";
-  version = "9.1.1";
+  version = "9.2.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "snakemake";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-jANSGNdWmc6ERClLR/pExoboyz8gUL2FW3W7kDQDOQo=";
+    hash = "sha256-WMbJP17YnDzFVcr6YepT5Ltw+Jo6PPn7ayIrjx2k+go=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     argparse-dataclass
diff --git a/pkgs/development/python-modules/snakemake-interface-report-plugins/default.nix b/pkgs/development/python-modules/snakemake-interface-report-plugins/default.nix
index 85c4c756b534d..c20a0ad122462 100644
--- a/pkgs/development/python-modules/snakemake-interface-report-plugins/default.nix
+++ b/pkgs/development/python-modules/snakemake-interface-report-plugins/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, snakemake-interface-common
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  snakemake-interface-common,
 }:
 
 buildPythonPackage rec {
@@ -17,18 +18,14 @@ buildPythonPackage rec {
     hash = "sha256-30x4avA3FrqZ4GoTl6Js5h3VG5LW7BNHOcNWxznXoT0=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    snakemake-interface-common
-  ];
+  propagatedBuildInputs = [ snakemake-interface-common ];
 
   pythonImportsCheck = [ "snakemake_interface_report_plugins" ];
 
   meta = with lib; {
-    description = "The interface for Snakemake report plugins";
+    description = "Interface for Snakemake report plugins";
     homepage = "https://github.com/snakemake/snakemake-interface-report-plugins";
     license = licenses.mit;
     maintainers = with maintainers; [ veprbl ];
diff --git a/pkgs/development/python-modules/snakemake-interface-storage-plugins/default.nix b/pkgs/development/python-modules/snakemake-interface-storage-plugins/default.nix
index 6df9688d1064a..e1a4d580b68f3 100644
--- a/pkgs/development/python-modules/snakemake-interface-storage-plugins/default.nix
+++ b/pkgs/development/python-modules/snakemake-interface-storage-plugins/default.nix
@@ -1,29 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, reretry
-, snakemake-interface-common
-, throttler
-, wrapt
-, snakemake
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  reretry,
+  snakemake-interface-common,
+  throttler,
+  wrapt,
 }:
 
 buildPythonPackage rec {
   pname = "snakemake-interface-storage-plugins";
-  version = "3.2.2";
+  version = "3.3.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "snakemake";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-syUjK32RPV9FMV7RSpXy+PJ2AVigGH+ywm6iTjUAuec=";
+    hash = "sha256-qjQZc7DIXIPmqXq+Fjslgrq2LbjbdRS/twGsp/jrxRY=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     reretry
diff --git a/pkgs/development/python-modules/snakemake-storage-plugin-fs/default.nix b/pkgs/development/python-modules/snakemake-storage-plugin-fs/default.nix
new file mode 100644
index 0000000000000..18925b034c051
--- /dev/null
+++ b/pkgs/development/python-modules/snakemake-storage-plugin-fs/default.nix
@@ -0,0 +1,43 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  snakemake-interface-storage-plugins,
+  snakemake-interface-common,
+  sysrsync,
+}:
+
+buildPythonPackage rec {
+  pname = "snakemake-storage-plugin-fs";
+  version = "1.0.6";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "snakemake";
+    repo = pname;
+    rev = "refs/tags/v${version}";
+    hash = "sha256-9A2W+V0d9K1Ei4WXqIZfIcOYsWgpGVP7P/ANy8jOGu0=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    snakemake-interface-storage-plugins
+    snakemake-interface-common
+    sysrsync
+  ];
+
+  # The current tests are not worth dealing with cyclic dependency on snakemake
+  doCheck = false;
+
+  # Use nothing due to a cyclic dependency on snakemake
+  pythonImportsCheck = [ ];
+
+  meta = with lib; {
+    description = "A Snakemake storage plugin that reads and writes from a locally mounted filesystem using rsync";
+    homepage = "https://github.com/snakemake/snakemake-storage-plugin-fs";
+    license = licenses.mit;
+    maintainers = with maintainers; [ veprbl ];
+  };
+}
diff --git a/pkgs/development/python-modules/snakemake-storage-plugin-s3/default.nix b/pkgs/development/python-modules/snakemake-storage-plugin-s3/default.nix
index 9f194eb253570..358aca0d82abf 100644
--- a/pkgs/development/python-modules/snakemake-storage-plugin-s3/default.nix
+++ b/pkgs/development/python-modules/snakemake-storage-plugin-s3/default.nix
@@ -1,37 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, boto3
-, botocore
-, poetry-core
-, snakemake
-, snakemake-interface-storage-plugins
-, snakemake-interface-common
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  boto3,
+  botocore,
+  poetry-core,
+  snakemake,
+  snakemake-interface-storage-plugins,
+  snakemake-interface-common,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "snakemake-storage-plugin-s3";
-  version = "0.2.10";
-  format = "pyproject";
+  version = "0.2.12";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "snakemake";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-k21DRQdSUFkdwNb7MZJmClhIg+pdSc7H6FkDrbf4DT8=";
+    hash = "sha256-TKv/7b3+uhY18v7p1ZSya5KJEMUv4M1NkObP9vPzMxU=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace ">=2.0,<2.2" "*"
-  '';
+  build-system = [ poetry-core ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
-
-  propagatedBuildInputs = [
+  dependencies = [
     boto3
     botocore
     snakemake-interface-storage-plugins
@@ -39,14 +33,12 @@ buildPythonPackage rec {
     urllib3
   ];
 
-  nativeCheckInputs = [
-    snakemake
-  ];
+  nativeCheckInputs = [ snakemake ];
 
   pythonImportsCheck = [ "snakemake_storage_plugin_s3" ];
 
   meta = with lib; {
-    description = "A Snakemake storage plugin for S3 API storage (AWS S3, MinIO, etc.)";
+    description = "Snakemake storage plugin for S3 API storage (AWS S3, MinIO, etc.)";
     homepage = "https://github.com/snakemake/snakemake-storage-plugin-s3";
     license = licenses.mit;
     maintainers = with maintainers; [ veprbl ];
diff --git a/pkgs/development/python-modules/snakemake-storage-plugin-xrootd/default.nix b/pkgs/development/python-modules/snakemake-storage-plugin-xrootd/default.nix
index 82d8c2928c3cf..405020619195e 100644
--- a/pkgs/development/python-modules/snakemake-storage-plugin-xrootd/default.nix
+++ b/pkgs/development/python-modules/snakemake-storage-plugin-xrootd/default.nix
@@ -1,49 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, snakemake
-, snakemake-interface-storage-plugins
-, snakemake-interface-common
-, xrootd
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  snakemake,
+  snakemake-interface-storage-plugins,
+  snakemake-interface-common,
+  xrootd,
 }:
 
 buildPythonPackage rec {
   pname = "snakemake-storage-plugin-xrootd";
-  version = "unstable-2023-12-16";
-  format = "pyproject";
+  version = "0.1.4";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "snakemake";
     repo = pname;
-    rev = "408f1e956b5427c34b49eeca340492a438e8eccb";
-    hash = "sha256-CcSG//D9kz0Q4LtaSngJpCtY0dbNFFuKMVmBxR1fcMo=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-1plBss9jRzIIGQE7rXDEnAomFxNzSUKsw0VyhYA2mIc=";
   };
 
   # xrootd<6.0.0,>=5.6.4 not satisfied by version 5.7rc20240303
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace 'xrootd = "^5.6.4"' ""
-  '';
+  pythonRelaxDeps = [ "xrootd" ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     snakemake-interface-storage-plugins
     snakemake-interface-common
     xrootd
   ];
 
-  nativeCheckInputs = [
-    snakemake
-  ];
+  nativeCheckInputs = [ snakemake ];
 
   pythonImportsCheck = [ "snakemake_storage_plugin_xrootd" ];
 
   meta = with lib; {
-    description = "A Snakemake storage plugin for handling input and output via XRootD";
+    description = "Snakemake storage plugin for handling input and output via XRootD";
     homepage = "https://github.com/snakemake/snakemake-storage-plugin-xrootd";
     license = licenses.mit;
     maintainers = with maintainers; [ veprbl ];
diff --git a/pkgs/development/python-modules/snakeviz/default.nix b/pkgs/development/python-modules/snakeviz/default.nix
index 6e3cc6244799d..c2fd38466ff64 100644
--- a/pkgs/development/python-modules/snakeviz/default.nix
+++ b/pkgs/development/python-modules/snakeviz/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, ipython
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
-, tornado
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ipython,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
+  tornado,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,9 @@ buildPythonPackage rec {
     hash = "sha256-tW1zUfCgOGQ8TjrKo2lBzGb0MSe25dP0/P9Q6x3736E=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    tornado
-  ];
+  propagatedBuildInputs = [ tornado ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -39,9 +36,7 @@ buildPythonPackage rec {
     requests
   ];
 
-  pythonImportsCheck = [
-    "snakeviz"
-  ];
+  pythonImportsCheck = [ "snakeviz" ];
 
   preCheck = ''
     export PATH="$PATH:$out/bin";
diff --git a/pkgs/development/python-modules/snap-helpers/default.nix b/pkgs/development/python-modules/snap-helpers/default.nix
index c21df9231ee5b..a1a9ef70c1888 100644
--- a/pkgs/development/python-modules/snap-helpers/default.nix
+++ b/pkgs/development/python-modules/snap-helpers/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nix-update-script
-, pyyaml
-, setuptools
-, pytestCheckHook
-, pytest-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  nix-update-script,
+  pyyaml,
+  setuptools,
+  pytestCheckHook,
+  pytest-mock,
 }:
 
 buildPythonPackage rec {
@@ -21,17 +22,11 @@ buildPythonPackage rec {
     hash = "sha256-7JBvrD4WNOcFSVx3xauk4JgiVGKWuUEdUMRlH7mudE4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pyyaml
-  ];
+  propagatedBuildInputs = [ pyyaml ];
 
-  pythonImportsCheck = [
-    "snaphelpers"
-  ];
+  pythonImportsCheck = [ "snaphelpers" ];
 
   nativeCheckInputs = [
     pytest-mock
@@ -41,7 +36,7 @@ buildPythonPackage rec {
   passthru.updateScript = nix-update-script { };
 
   meta = {
-    description = "Interact with snap configuration and properties from inside a snap.";
+    description = "Interact with snap configuration and properties from inside a snap";
     homepage = "https://github.com/albertodonato/snap-helpers";
     changelog = "https://github.com/albertodonato/snap-helpers/releases/tag/${version}";
     license = lib.licenses.lgpl3Only;
@@ -49,4 +44,3 @@ buildPythonPackage rec {
     platforms = lib.platforms.linux;
   };
 }
-
diff --git a/pkgs/development/python-modules/snapcast/default.nix b/pkgs/development/python-modules/snapcast/default.nix
index 89a2b814bedb9..bd46684d42089 100644
--- a/pkgs/development/python-modules/snapcast/default.nix
+++ b/pkgs/development/python-modules/snapcast/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, construct
-, packaging
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  construct,
+  packaging,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,22 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-gn+X0DZnox4mkJwDVgwNXae63iGbiqPIO15UV5pDwuY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     construct
     packaging
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "snapcast"
-  ];
+  pythonImportsCheck = [ "snapcast" ];
 
   disabledTests = [
     # AssertionError and TypeError
diff --git a/pkgs/development/python-modules/snapshottest/default.nix b/pkgs/development/python-modules/snapshottest/default.nix
index b19873318fd7d..4c697fcdb9238 100644
--- a/pkgs/development/python-modules/snapshottest/default.nix
+++ b/pkgs/development/python-modules/snapshottest/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fastdiff
-, six
-, termcolor
-, pytestCheckHook
-, pytest-cov
-, django
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fastdiff,
+  six,
+  termcolor,
+  pytestCheckHook,
+  pytest-cov,
+  django,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,17 @@ buildPythonPackage rec {
     sha256 = "0g35ggqw4jd9zmazw55kj6gfjdghv49qx4jw5q231qyqj8fzijmv";
   };
 
-  propagatedBuildInputs = [ fastdiff six termcolor ];
+  propagatedBuildInputs = [
+    fastdiff
+    six
+    termcolor
+  ];
 
-  nativeCheckInputs = [ django pytestCheckHook pytest-cov ];
+  nativeCheckInputs = [
+    django
+    pytestCheckHook
+    pytest-cov
+  ];
 
   pythonImportsCheck = [ "snapshottest" ];
 
@@ -29,6 +38,6 @@ buildPythonPackage rec {
     description = "Snapshot testing for pytest, unittest, Django, and Nose";
     homepage = "https://github.com/syrusakbary/snapshottest";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/snaptime/default.nix b/pkgs/development/python-modules/snaptime/default.nix
index 8f148eba4e68e..c48cfd27f9b19 100644
--- a/pkgs/development/python-modules/snaptime/default.nix
+++ b/pkgs/development/python-modules/snaptime/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, python-dateutil
-, pytz
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  python-dateutil,
+  pytz,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-4/HriQQ9WNMHIauYy2UCPxpMJ0DjsZdwQpixY8ktUIs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   dependencies = [
     python-dateutil
diff --git a/pkgs/development/python-modules/sniffio/default.nix b/pkgs/development/python-modules/sniffio/default.nix
index 9496f0cb081ed..5bfe0e6c191b3 100644
--- a/pkgs/development/python-modules/sniffio/default.nix
+++ b/pkgs/development/python-modules/sniffio/default.nix
@@ -1,12 +1,13 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
-, setuptools
-, setuptools-scm
-, glibcLocales
-, isPy3k
-, pytestCheckHook
-, curio
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  glibcLocales,
+  isPy3k,
+  pytestCheckHook,
+  curio,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  buildInputs = [
-    glibcLocales
-  ];
+  buildInputs = [ glibcLocales ];
 
   nativeCheckInputs = [
     curio
diff --git a/pkgs/development/python-modules/snitun/default.nix b/pkgs/development/python-modules/snitun/default.nix
index 10df697818267..13a86fb63e9d5 100644
--- a/pkgs/development/python-modules/snitun/default.nix
+++ b/pkgs/development/python-modules/snitun/default.nix
@@ -1,36 +1,37 @@
-{ lib
-, stdenv
-, setuptools
-, async-timeout
-, attrs
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, pytest-aiohttp
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
+{
+  lib,
+  stdenv,
+  aiohttp,
+  async-timeout,
+  attrs,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "snitun";
-  version = "0.36.2";
+  version = "0.39.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "NabuCasa";
     repo = "snitun";
     rev = "refs/tags/${version}";
-    hash = "sha256-ViNsmTq1iLxNujA71b9JZB5AZ79ZbiqdTyDeBGd4gUA=";
+    hash = "sha256-jewDQqvLUh/066BSEADXkCvjLFRnodKtUPKfvi0KUpI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    aiohttp
     async-timeout
     attrs
     cryptography
@@ -41,41 +42,44 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTests = [
-    # AssertionError: Expected 'fileno' to not have been called. Called 1 times.
-    "test_client_stop_no_wait"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_multiplexer_data_channel_abort_full" # https://github.com/NabuCasa/snitun/issues/61
-    # port binding conflicts
-    "test_snitun_single_runner_timeout"
-    "test_snitun_single_runner_throttling"
-    # ConnectionResetError: [Errno 54] Connection reset by peer
-    "test_peer_listener_timeout"
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    # blocking
-    "test_flow_client_peer"
-    "test_close_client_peer"
-    "test_init_connector"
-    "test_flow_connector"
-    "test_close_connector_remote"
-    "test_init_connector_whitelist"
-    "test_init_multiplexer_server"
-    "test_init_multiplexer_client"
-    "test_init_multiplexer_server_throttling"
-    "test_init_multiplexer_client_throttling"
-    "test_multiplexer_ping"
-    "test_multiplexer_ping_error"
-    "test_multiplexer_init_channel_full"
-    "test_multiplexer_close_channel_full"
-    "test_init_dual_peer_with_multiplexer"
-  ];
+  disabledTests =
+    [
+      # AssertionError: Expected 'fileno' to not have been called. Called 1 times.
+      "test_client_stop_no_wait"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      "test_multiplexer_data_channel_abort_full" # https://github.com/NabuCasa/snitun/issues/61
+      # port binding conflicts
+      "test_snitun_single_runner_timeout"
+      "test_snitun_single_runner_throttling"
+      # ConnectionResetError: [Errno 54] Connection reset by peer
+      "test_peer_listener_timeout"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      # blocking
+      "test_flow_client_peer"
+      "test_close_client_peer"
+      "test_init_connector"
+      "test_flow_connector"
+      "test_close_connector_remote"
+      "test_init_connector_whitelist"
+      "test_init_multiplexer_server"
+      "test_init_multiplexer_client"
+      "test_init_multiplexer_server_throttling"
+      "test_init_multiplexer_client_throttling"
+      "test_multiplexer_ping"
+      "test_multiplexer_ping_error"
+      "test_multiplexer_init_channel_full"
+      "test_multiplexer_close_channel_full"
+      "test_init_dual_peer_with_multiplexer"
+    ];
 
   pythonImportsCheck = [ "snitun" ];
 
   meta = with lib; {
+    description = "SNI proxy with TCP multiplexer";
     changelog = "https://github.com/NabuCasa/snitun/releases/tag/${version}";
     homepage = "https://github.com/nabucasa/snitun";
-    description = "SNI proxy with TCP multiplexer";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ Scriptkiddi ];
     platforms = platforms.linux;
diff --git a/pkgs/development/python-modules/snorkel/default.nix b/pkgs/development/python-modules/snorkel/default.nix
index 04e605d14554b..91c650aa657c2 100644
--- a/pkgs/development/python-modules/snorkel/default.nix
+++ b/pkgs/development/python-modules/snorkel/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, tensorboard
-, scipy
-, tqdm
-, scikit-learn
-, munkres
-, networkx
-, torch
-, pandas
-# test dependencies
-, pytestCheckHook
-, spacy
-, pyspark
-, dill
-, dask
-, spacy-models
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  tensorboard,
+  scipy,
+  tqdm,
+  scikit-learn,
+  munkres,
+  networkx,
+  torch,
+  pandas,
+  # test dependencies
+  pytestCheckHook,
+  spacy,
+  pyspark,
+  dill,
+  dask,
+  spacy-models,
 }:
 let
   pname = "snorkel";
@@ -60,7 +61,7 @@ buildPythonPackage {
   ] ++ dask.optional-dependencies.distributed;
 
   meta = with lib; {
-    description = "A system for quickly generating training data with weak supervision";
+    description = "System for quickly generating training data with weak supervision";
     homepage = "https://github.com/snorkel-team/snorkel";
     changelog = "https://github.com/snorkel/snorkel/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/snowballstemmer/default.nix b/pkgs/development/python-modules/snowballstemmer/default.nix
index a1723bd15792a..37a2a51390d86 100644
--- a/pkgs/development/python-modules/snowballstemmer/default.nix
+++ b/pkgs/development/python-modules/snowballstemmer/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, pystemmer, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  pystemmer,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "snowballstemmer";
diff --git a/pkgs/development/python-modules/snowflake-connector-python/default.nix b/pkgs/development/python-modules/snowflake-connector-python/default.nix
index f7d7743ef6e5b..0dd9835e617bd 100644
--- a/pkgs/development/python-modules/snowflake-connector-python/default.nix
+++ b/pkgs/development/python-modules/snowflake-connector-python/default.nix
@@ -5,61 +5,58 @@
   certifi,
   cffi,
   charset-normalizer,
+  cryptography,
   cython,
-  fetchPypi,
+  fetchFromGitHub,
   filelock,
   idna,
   keyring,
-  oscrypto,
   packaging,
   pandas,
   platformdirs,
   pyarrow,
-  pycryptodomex,
   pyjwt,
   pyopenssl,
+  pytest-xdist,
+  pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
   pytz,
   requests,
   setuptools,
   sortedcontainers,
   tomlkit,
   typing-extensions,
-  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "snowflake-connector-python";
-  version = "3.8.1";
+  version = "3.12.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-m8zhoNniEs7s9F7c6gLRjiBalfiMwEcK2kqLrLVCR9U=";
+  src = fetchFromGitHub {
+    owner = "snowflakedb";
+    repo = "snowflake-connector-python";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-A6QnKCROd1vJpFCTrLEoHVo43xojdjpgYS3qQm64gcY=";
   };
 
   build-system = [
     cython
     setuptools
-    wheel
   ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
-
   dependencies = [
     asn1crypto
     certifi
     cffi
     charset-normalizer
+    cryptography
     filelock
     idna
-    oscrypto
     packaging
     platformdirs
-    pycryptodomex
     pyjwt
     pyopenssl
     pytz
@@ -69,7 +66,7 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     pandas = [
       pandas
       pyarrow
@@ -77,9 +74,35 @@ buildPythonPackage rec {
     secure-local-storage = [ keyring ];
   };
 
-  # Tests require encrypted secrets, see
-  # https://github.com/snowflakedb/snowflake-connector-python/tree/master/.github/workflows/parameters
-  doCheck = false;
+  preCheck = ''
+    export HOME=$(mktemp -d)
+  '';
+
+  nativeCheckInputs = [
+    pytest-xdist
+    pytestCheckHook
+  ];
+
+  disabledTestPaths = [
+    # Tests require encrypted secrets, see
+    # https://github.com/snowflakedb/snowflake-connector-python/tree/master/.github/workflows/parameters
+    "test/extras/simple_select1.py"
+    "test/integ"
+    # error getting schema from stream, error code: 0, error info: Expected to
+    # be able to read 19504 bytes for message body but got 19503
+    "test/unit/test_connection.py"
+    "test/unit/test_cursor.py"
+    "test/unit/test_error_arrow_stream.py"
+    "test/unit/test_ocsp.py"
+    "test/unit/test_retry_network.py"
+    "test/unit/test_s3_util.py"
+  ];
+
+  disabledTests = [
+    # Tests connect to the internet
+    "test_status_when_num_of_chunks_is_zero"
+    "test_test_socket_get_cert"
+  ];
 
   pythonImportsCheck = [
     "snowflake"
@@ -91,6 +114,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/snowflakedb/snowflake-connector-python";
     changelog = "https://github.com/snowflakedb/snowflake-connector-python/blob/v${version}/DESCRIPTION.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/snowflake-sqlalchemy/default.nix b/pkgs/development/python-modules/snowflake-sqlalchemy/default.nix
index d8857b971a31a..26942b6d91180 100644
--- a/pkgs/development/python-modules/snowflake-sqlalchemy/default.nix
+++ b/pkgs/development/python-modules/snowflake-sqlalchemy/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-, snowflake-connector-python
-, sqlalchemy
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  snowflake-connector-python,
+  sqlalchemy,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "snowflake-sqlalchemy";
-  version = "1.5.1";
+  version = "1.5.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-TxODQC/8iTEZdL2BDe4iADrvSvDzEqD9tVd4MzrRq/c=";
+    hash = "sha256-eRkew/6/syvP/s1m8qfdVhvVcTRepLzL9BzB+1wGgv8=";
   };
 
   propagatedBuildInputs = [
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Pypi does not include tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "snowflake.sqlalchemy"
-  ];
+  pythonImportsCheck = [ "snowflake.sqlalchemy" ];
 
   meta = with lib; {
     changelog = "https://github.com/snowflakedb/snowflake-sqlalchemy/blob/v${version}/DESCRIPTION.md";
diff --git a/pkgs/development/python-modules/snscrape/default.nix b/pkgs/development/python-modules/snscrape/default.nix
index e834fc3226ff0..b2b4622c38382 100644
--- a/pkgs/development/python-modules/snscrape/default.nix
+++ b/pkgs/development/python-modules/snscrape/default.nix
@@ -1,43 +1,48 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchFromGitHub
-, filelock
-, lxml
-, pythonOlder
-, pytz
-, requests
-, setuptools-scm
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  filelock,
+  lxml,
+  pythonOlder,
+  pytz,
+  requests,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "snscrape";
   version = "0.7.0.20230622";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "JustAnotherArchivist";
-    repo = pname;
+    repo = "snscrape";
     rev = "refs/tags/v${version}";
     hash = "sha256-9xAUMr1SWFePEvIz6DFEexk9Txex3u8wPNfMAdxEUCA=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
+  patches = [
+    # Fix find_module deprecation, https://github.com/JustAnotherArchivist/snscrape/pull/1036
+    (fetchpatch {
+      name = "fix-find-module.patch";
+      url = "https://github.com/JustAnotherArchivist/snscrape/commit/7f4717aaaaa8d4c96fa1dbe72ded799a722732ee.patch";
+      hash = "sha256-6O9bZ5GlTPuR0MML/O4DDRBcDX/CJbU54ZE551cfPHo=";
+    })
   ];
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools-scm ];
+
+  dependencies = [
     beautifulsoup4
     filelock
     lxml
     requests
-  ]
-  ++ requests.optional-dependencies.socks
-  ++ lib.optionals (pythonOlder "3.9") [
-    pytz
-  ];
+  ] ++ requests.optional-dependencies.socks ++ lib.optionals (pythonOlder "3.9") [ pytz ];
 
   # There are no tests; make sure the executable works.
   checkPhase = ''
@@ -45,15 +50,13 @@ buildPythonPackage rec {
     snscrape --help
   '';
 
-  pythonImportsCheck = [
-    "snscrape"
-  ];
+  pythonImportsCheck = [ "snscrape" ];
 
   meta = with lib; {
-    description = "A social networking service scraper";
-    mainProgram = "snscrape";
+    description = "Social networking service scraper";
     homepage = "https://github.com/JustAnotherArchivist/snscrape";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ ivan ];
+    mainProgram = "snscrape";
   };
 }
diff --git a/pkgs/development/python-modules/snuggs/default.nix b/pkgs/development/python-modules/snuggs/default.nix
index 8824645973ede..b742c8d6985ad 100644
--- a/pkgs/development/python-modules/snuggs/default.nix
+++ b/pkgs/development/python-modules/snuggs/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, click
-, numpy
-, pyparsing
-, pytestCheckHook
-, hypothesis
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  click,
+  numpy,
+  pyparsing,
+  pytestCheckHook,
+  hypothesis,
 }:
 
 buildPythonPackage rec {
@@ -31,14 +32,21 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [ click numpy pyparsing ];
+  propagatedBuildInputs = [
+    click
+    numpy
+    pyparsing
+  ];
 
-  nativeCheckInputs = [ pytestCheckHook hypothesis ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    hypothesis
+  ];
 
   meta = with lib; {
     description = "S-expressions for Numpy";
     license = licenses.mit;
     homepage = "https://github.com/mapbox/snuggs";
-    maintainers = with maintainers; [ mredaelli ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/social-auth-app-django/default.nix b/pkgs/development/python-modules/social-auth-app-django/default.nix
index 1806752e60203..a366853ded7ac 100644
--- a/pkgs/development/python-modules/social-auth-app-django/default.nix
+++ b/pkgs/development/python-modules/social-auth-app-django/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, social-auth-core
-, django
-, python
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  social-auth-core,
+  django,
+  python,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "social-auth-app-django";
-  version = "5.4.1";
+  version = "5.4.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -18,20 +19,14 @@ buildPythonPackage rec {
     owner = "python-social-auth";
     repo = "social-app-django";
     rev = "refs/tags/${version}";
-    hash = "sha256-BvPQo0pXffGYu0tpy5yHT9lJVwOTewBiX5GLeezBrhE=";
+    hash = "sha256-W9boogixZ7X6qysfh2YEat+TOBy1VNreGr27y8hno+0=";
   };
 
-  propagatedBuildInputs = [
-    social-auth-core
-  ];
+  propagatedBuildInputs = [ social-auth-core ];
 
-  pythonImportsCheck = [
-    "social_django"
-  ];
+  pythonImportsCheck = [ "social_django" ];
 
-  nativeCheckInputs = [
-    django
-  ];
+  nativeCheckInputs = [ django ];
 
   checkPhase = ''
     ${python.interpreter} -m django test --settings="tests.settings"
diff --git a/pkgs/development/python-modules/social-auth-core/default.nix b/pkgs/development/python-modules/social-auth-core/default.nix
index 2417de9daf191..7f9091b46f435 100644
--- a/pkgs/development/python-modules/social-auth-core/default.nix
+++ b/pkgs/development/python-modules/social-auth-core/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, defusedxml
-, fetchFromGitHub
-, httpretty
-, lxml
-, oauthlib
-, pyjwt
-, pytestCheckHook
-, python-jose
-, python3-openid
-, python3-saml
-, pythonOlder
-, requests
-, requests-oauthlib
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  defusedxml,
+  fetchFromGitHub,
+  httpretty,
+  lxml,
+  oauthlib,
+  pyjwt,
+  pytestCheckHook,
+  python-jose,
+  python3-openid,
+  python3-saml,
+  pythonOlder,
+  requests,
+  requests-oauthlib,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
     hash = "sha256-tFaRvNoO5K7ytqMhL//Ntasc7jb4PYXB1yyjFvFqQH8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     cryptography
@@ -46,16 +45,12 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    openidconnect = [
-      python-jose
-    ];
+    openidconnect = [ python-jose ];
     saml = [
       lxml
       python3-saml
     ];
-    azuread = [
-      cryptography
-    ];
+    azuread = [ cryptography ];
   };
 
   nativeCheckInputs = [
@@ -73,9 +68,7 @@ buildPythonPackage rec {
       --replace "{posargs:-v --cov=social_core}" "{posargs:-v}"
   '';
 
-  pythonImportsCheck = [
-    "social_core"
-  ];
+  pythonImportsCheck = [ "social_core" ];
 
   meta = with lib; {
     description = "Module for social authentication/registration mechanisms";
diff --git a/pkgs/development/python-modules/socialscan/default.nix b/pkgs/development/python-modules/socialscan/default.nix
index 430cc1f5a7253..c0b4541e7373b 100644
--- a/pkgs/development/python-modules/socialscan/default.nix
+++ b/pkgs/development/python-modules/socialscan/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, colorama
-, pythonOlder
-, tqdm
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  colorama,
+  pythonOlder,
+  tqdm,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
   # Tests require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "socialscan"
-  ];
+  pythonImportsCheck = [ "socialscan" ];
 
   meta = with lib; {
     description = "Python library and CLI for accurately querying username and email usage on online platforms";
diff --git a/pkgs/development/python-modules/socid-extractor/default.nix b/pkgs/development/python-modules/socid-extractor/default.nix
index 6346d808127bd..1fd9b67c5a5cf 100644
--- a/pkgs/development/python-modules/socid-extractor/default.nix
+++ b/pkgs/development/python-modules/socid-extractor/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchFromGitHub
-, python-dateutil
-, pythonOlder
-, requests
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python-dateutil,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
   # Test require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "socid_extractor"
-  ];
+  pythonImportsCheck = [ "socid_extractor" ];
 
   meta = with lib; {
     description = "Python module to extract details from personal pages";
diff --git a/pkgs/development/python-modules/socketio-client/default.nix b/pkgs/development/python-modules/socketio-client/default.nix
index 3c45ee1d54622..4f71777668217 100644
--- a/pkgs/development/python-modules/socketio-client/default.nix
+++ b/pkgs/development/python-modules/socketio-client/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, requests
-, six
-, websocket-client
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  requests,
+  six,
+  websocket-client,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
@@ -27,12 +28,10 @@ buildPythonPackage rec {
   # Perform networking tests.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "socketIO_client"
-  ];
+  pythonImportsCheck = [ "socketIO_client" ];
 
   meta = with lib; {
-    description = "A socket.io client library for protocol 1.x";
+    description = "Socket.io client library for protocol 1.x";
     homepage = "https://github.com/invisibleroads/socketIO-client";
     license = licenses.mit;
     maintainers = with maintainers; [ raitobezarius ];
diff --git a/pkgs/development/python-modules/sockio/default.nix b/pkgs/development/python-modules/sockio/default.nix
index 8ce561b781f93..eedd12e0dc32d 100644
--- a/pkgs/development/python-modules/sockio/default.nix
+++ b/pkgs/development/python-modules/sockio/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "sockio"
-  ];
+  pythonImportsCheck = [ "sockio" ];
 
   disabledTests = [
     # Tests require network access
diff --git a/pkgs/development/python-modules/sockjs-tornado/default.nix b/pkgs/development/python-modules/sockjs-tornado/default.nix
index 37d75b76edd9f..dd653621d6c58 100644
--- a/pkgs/development/python-modules/sockjs-tornado/default.nix
+++ b/pkgs/development/python-modules/sockjs-tornado/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, tornado }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  tornado,
+}:
 
 buildPythonPackage rec {
   pname = "sockjs-tornado";
diff --git a/pkgs/development/python-modules/sockjs/default.nix b/pkgs/development/python-modules/sockjs/default.nix
index 228ac2fd6bbf8..c41bef8e1c7fc 100644
--- a/pkgs/development/python-modules/sockjs/default.nix
+++ b/pkgs/development/python-modules/sockjs/default.nix
@@ -1,13 +1,18 @@
-{ lib, buildPythonPackage, fetchPypi, aiohttp }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  aiohttp,
+}:
 
 buildPythonPackage rec {
   pname = "sockjs";
-  version = "0.11.0";
+  version = "0.13.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "A0fUBO2e8xllBnh+2AGPh+5OLQuupJ1CDN1TqWm+wik=";
+    hash = "sha256-V+lZoj8gqNVRSdHl2ws7hwcm8rStgWbUG9z0EbNs33Y=";
   };
 
   propagatedBuildInputs = [ aiohttp ];
diff --git a/pkgs/development/python-modules/socksio/default.nix b/pkgs/development/python-modules/socksio/default.nix
index fb767db631d87..decae7430fa27 100644
--- a/pkgs/development/python-modules/socksio/default.nix
+++ b/pkgs/development/python-modules/socksio/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, pythonAtLeast
-, flit-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchpatch,
+  fetchPypi,
+  flit-core,
+  pytestCheckHook,
 }:
 
 let
@@ -29,18 +29,14 @@ buildPythonPackage {
     })
   ];
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   # remove coverage configuration
   preCheck = ''
     rm pytest.ini
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Sans-I/O implementation of SOCKS4, SOCKS4A, and SOCKS5";
diff --git a/pkgs/development/python-modules/socksipy-branch/default.nix b/pkgs/development/python-modules/socksipy-branch/default.nix
index e9266bb27fe69..e09d1aeb025ad 100644
--- a/pkgs/development/python-modules/socksipy-branch/default.nix
+++ b/pkgs/development/python-modules/socksipy-branch/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -18,5 +19,4 @@ buildPythonPackage rec {
     description = "This Python module allows you to create TCP connections through a SOCKS proxy without any special effort";
     license = licenses.bsd3;
   };
-
 }
diff --git a/pkgs/development/python-modules/soco/default.nix b/pkgs/development/python-modules/soco/default.nix
index 347273e453e61..191f963c7594e 100644
--- a/pkgs/development/python-modules/soco/default.nix
+++ b/pkgs/development/python-modules/soco/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "soco";
-  version = "0.30.3";
+  version = "0.30.4";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
     owner = "SoCo";
     repo = "SoCo";
     rev = "refs/tags/v${version}";
-    hash = "sha256-QAF3f1JMGFFsgdZzoyo+RwKKMaLG+hy+lvZwCzceU/g=";
+    hash = "sha256-t5Cxlm5HhN6WY6ty4i2MAtqjbC7DwZqSp1g5nybFAH4=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/softlayer/default.nix b/pkgs/development/python-modules/softlayer/default.nix
index 8ce880889d663..b2238da2916f3 100644
--- a/pkgs/development/python-modules/softlayer/default.nix
+++ b/pkgs/development/python-modules/softlayer/default.nix
@@ -1,27 +1,27 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, mock
-, prettytable
-, prompt-toolkit
-, ptable
-, pygments
-, pytestCheckHook
-, pythonOlder
-, requests
-, rich
-, sphinx
-, testtools
-, tkinter
-, urllib3
-, zeep
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  mock,
+  prettytable,
+  prompt-toolkit,
+  ptable,
+  pygments,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  rich,
+  sphinx,
+  testtools,
+  tkinter,
+  urllib3,
+  zeep,
 }:
 
 buildPythonPackage rec {
   pname = "softlayer";
-  version = "6.1.11";
+  version = "6.2.5";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -30,7 +30,7 @@ buildPythonPackage rec {
     owner = pname;
     repo = "softlayer-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-2iN3T58aICQlGwr10/e/mWE9pA4rbJCBTE1jTu3GeGk=";
+    hash = "sha256-wDLMVonPUexoaZ60kRBILmr5l46yajzACozCp6uETGY=";
   };
 
   postPatch = ''
@@ -71,9 +71,7 @@ buildPythonPackage rec {
     "tests/transports/soap_tests.py.unstable"
   ];
 
-  pythonImportsCheck = [
-    "SoftLayer"
-  ];
+  pythonImportsCheck = [ "SoftLayer" ];
 
   meta = with lib; {
     description = "Python libraries that assist in calling the SoftLayer API";
diff --git a/pkgs/development/python-modules/solaredge/default.nix b/pkgs/development/python-modules/solaredge/default.nix
deleted file mode 100644
index 6dc0fa09be312..0000000000000
--- a/pkgs/development/python-modules/solaredge/default.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python-dateutil
-, pythonOlder
-, pytz
-, requests
-}:
-
-buildPythonPackage rec {
-  pname = "solaredge";
-  version = "0.0.4";
-  format = "setuptools";
-  disabled = pythonOlder "3.7";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0q4gib0l3qnlpncg84ki027vr1apjlr47vd6845rpk7zkm8lqgfz";
-  };
-
-  propagatedBuildInputs = [
-    python-dateutil
-    pytz
-    requests
-  ];
-
-  # Project has no tests
-  doCheck = false;
-  pythonImportsCheck = [ "solaredge" ];
-
-  meta = with lib; {
-    description = "Python wrapper for Solaredge monitoring service";
-    homepage = "https://github.com/bertouttier/solaredge";
-    license = with licenses; [ mit ];
-    maintainers = with maintainers; [ fab ];
-  };
-}
diff --git a/pkgs/development/python-modules/solarlog-cli/default.nix b/pkgs/development/python-modules/solarlog-cli/default.nix
new file mode 100644
index 0000000000000..a2b039d217a89
--- /dev/null
+++ b/pkgs/development/python-modules/solarlog-cli/default.nix
@@ -0,0 +1,52 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  hatchling,
+  aiohttp,
+  mashumaro,
+  aioresponses,
+  pytest-aio,
+  pytestCheckHook,
+  syrupy,
+}:
+
+buildPythonPackage rec {
+  pname = "solarlog-cli";
+  version = "0.3.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.12";
+
+  src = fetchFromGitHub {
+    owner = "dontinelli";
+    repo = "solarlog_cli";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-jNvwSh89Ncl/rR/cUNVbJfJThJTa9JlANjvH/vRruAU=";
+  };
+
+  build-system = [ hatchling ];
+
+  dependencies = [
+    aiohttp
+    mashumaro
+  ];
+
+  pythonImportsCheck = [ "solarlog_cli" ];
+
+  nativeCheckInputs = [
+    aioresponses
+    pytest-aio
+    pytestCheckHook
+    syrupy
+  ];
+
+  meta = {
+    changelog = "https://github.com/dontinelli/solarlog_cli/releases/tag/v${version}";
+    description = "Python library to access the Solar-Log JSON interface";
+    homepage = "https://github.com/dontinelli/solarlog_cli";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/solax/default.nix b/pkgs/development/python-modules/solax/default.nix
index ffba0140becdb..7fa65384766a0 100644
--- a/pkgs/development/python-modules/solax/default.nix
+++ b/pkgs/development/python-modules/solax/default.nix
@@ -1,33 +1,32 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchPypi
-, pytest-asyncio
-, pytest-httpserver
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
-, voluptuous
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchPypi,
+  pytest-asyncio,
+  pytest-httpserver,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  voluptuous,
 }:
 
 buildPythonPackage rec {
   pname = "solax";
-  version = "3.0.5";
+  version = "3.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-PQ7qJCNfXGNF2RK6pHwf0U1DXgv2j2uQ64Nv/qh8f8s=";
+    hash = "sha256-OgQ320UBDChQXPFMeulDx8NKNvajr399tuoAmsIEhFg=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     async-timeout
     voluptuous
@@ -39,9 +38,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "solax"
-  ];
+  pythonImportsCheck = [ "solax" ];
 
   disabledTests = [
     # Tests require network access
diff --git a/pkgs/development/python-modules/solc-select/default.nix b/pkgs/development/python-modules/solc-select/default.nix
index f0724bd241ad3..3a9e0f7bb4a98 100644
--- a/pkgs/development/python-modules/solc-select/default.nix
+++ b/pkgs/development/python-modules/solc-select/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, packaging
-, pycryptodome
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  packaging,
+  pycryptodome,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/solidpython2/default.nix b/pkgs/development/python-modules/solidpython2/default.nix
new file mode 100644
index 0000000000000..54dd8e2c2004a
--- /dev/null
+++ b/pkgs/development/python-modules/solidpython2/default.nix
@@ -0,0 +1,49 @@
+{ buildPythonPackage
+, fetchFromGitHub
+, lib
+, ply
+, setuptools
+, poetry-core
+, withOpenSCAD ? false
+, openscad
+}:
+buildPythonPackage rec {
+  pname = "solidpython2";
+  version = "2.1.0";
+  pyproject = true;
+  src = fetchFromGitHub {
+    owner = "jeff-dh";
+    repo = "SolidPython";
+    rev = "v${version}";
+    hash = "sha256-Tq3hrsC2MmueCqChk6mY/u/pCjF/pFuU2o3K+qw7ImY=";
+  };
+
+  # NOTE: this patch makes tests runnable outside the source-tree
+  # - it uses diff instead of git-diff
+  # - modifies the tests output to resemble the paths resulting from running inside the source-tree
+  # - drop the openscad image geneneration tests, these don't work on the nix sandbox due to the need for xserver
+  patches = [ ./difftool_tests.patch ];
+
+  propagatedBuildInputs = lib.optionals withOpenSCAD [openscad];
+
+  build-system = [
+    poetry-core
+  ];
+  dependencies = [
+    ply
+    setuptools
+  ];
+  pythonImportsCheck = [ "solid2" ];
+  checkPhase = ''
+    runHook preCheck
+    python $TMPDIR/source/tests/run_tests.py
+    runHook postCheck
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/jeff-dh/SolidPython";
+    description = "A python frontend for solid modelling that compiles to OpenSCAD";
+    license = licenses.lgpl2Plus;
+    maintainers = with maintainers; [ jonboh ];
+  };
+}
diff --git a/pkgs/development/python-modules/solidpython2/difftool_tests.patch b/pkgs/development/python-modules/solidpython2/difftool_tests.patch
new file mode 100644
index 0000000000000..a5c950a9fc03d
--- /dev/null
+++ b/pkgs/development/python-modules/solidpython2/difftool_tests.patch
@@ -0,0 +1,35 @@
+diff --git a/tests/examples_test.py b/tests/examples_test.py
+index 77204fd..9784389 100644
+--- a/tests/examples_test.py
++++ b/tests/examples_test.py
+@@ -48,14 +48,19 @@ class ExamplesTest(unittest.TestCase):
+             subprocess.check_call(["python3", f.as_posix()])
+             # copy generated scad file to examples_scad/
+             copyWithRelativeIncludes(f.with_suffix(".scad"), test_scad_file)
+-            # call git diff test/examples_scad/{f}.scad
+-            diff = subprocess.check_output(["git", "diff",
+-                                            test_scad_file.as_posix()])
+-            # make sure there's no diff
+-            self.assertEqual(diff.decode(), "")
+-            # render with openscad
+-            subprocess.check_call([get_openscad_executable(), "-o",
+-                                   test_scad_file.with_suffix(".png"),
+-                                   "--preview", "-",
+-                                   test_scad_file],
+-                                   stderr=subprocess.DEVNULL)
++            subprocess.check_call(
++                [
++                    "sed",
++                    "-i",
++                    f"s#^include <.*/solid2#include <../../solid2#g",
++                    test_scad_file.as_posix(),
++                ]
++            )
++            nixsrc = os.getenv("src")
++            subprocess.check_call(
++                [
++                    "diff",
++                    f"{nixsrc}/tests/examples_scad/{f.with_suffix('.scad').name}",
++                    test_scad_file.as_posix(),
++                ]
++            )
diff --git a/pkgs/development/python-modules/solo-python/default.nix b/pkgs/development/python-modules/solo-python/default.nix
index fef12eb963a3f..679351c90657c 100644
--- a/pkgs/development/python-modules/solo-python/default.nix
+++ b/pkgs/development/python-modules/solo-python/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, flit
-, click
-, cryptography
-, ecdsa
-, fido2
-, intelhex
-, pyserial
-, pyusb
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  flit,
+  click,
+  cryptography,
+  ecdsa,
+  fido2,
+  intelhex,
+  pyserial,
+  pyusb,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     hash = "sha256-XVPYr7JwxeZfZ68+vQ7a7MNiAfJ2bvMbM3R1ryVJ+OU=";
   };
 
-  nativeBuildInputs = [
-    flit
-  ];
+  nativeBuildInputs = [ flit ];
 
   propagatedBuildInputs = [
     click
@@ -58,7 +57,10 @@ buildPythonPackage rec {
     description = "Python tool and library for SoloKeys Solo 1";
     homepage = "https://github.com/solokeys/solo1-cli";
     maintainers = with maintainers; [ wucke13 ];
-    license = with licenses; [ asl20 mit ];
+    license = with licenses; [
+      asl20
+      mit
+    ];
     # not compatible with fido2 >= 1.0.0
     # https://github.com/solokeys/solo1-cli/issues/157
     broken = versionAtLeast fido2.version "1.0.0";
diff --git a/pkgs/development/python-modules/somajo/default.nix b/pkgs/development/python-modules/somajo/default.nix
index 2401bb9264a85..bcf489a45330d 100644
--- a/pkgs/development/python-modules/somajo/default.nix
+++ b/pkgs/development/python-modules/somajo/default.nix
@@ -1,46 +1,42 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, buildPythonPackage
-, pythonOlder
-, setuptools
-, regex
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  setuptools,
+  regex,
 }:
 
 buildPythonPackage rec {
   pname = "somajo";
-  version = "2.4.2";
+  version = "2.4.3";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "tsproisl";
     repo = "SoMaJo";
     rev = "refs/tags/v${version}";
-    hash = "sha256-5rlgDnPYTtuVMincG5CgVwNh/IGmZk6ItvzdB/wHmgg=";
+    hash = "sha256-fq891LX6PukUEfrXplulhnisuPX/RqLAQ/5ty/Fvm9k=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    regex
-  ];
+  dependencies = [ regex ];
 
   # loops forever
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
-  pythonImportsCheck = [
-    "somajo"
-  ];
+  pythonImportsCheck = [ "somajo" ];
 
   meta = with lib; {
     description = "Tokenizer and sentence splitter for German and English web texts";
-    mainProgram = "somajo-tokenizer";
     homepage = "https://github.com/tsproisl/SoMaJo";
+    changelog = "https://github.com/tsproisl/SoMaJo/blob/v${version}/CHANGES.txt";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
+    mainProgram = "somajo-tokenizer";
   };
 }
diff --git a/pkgs/development/python-modules/somfy-mylink-synergy/default.nix b/pkgs/development/python-modules/somfy-mylink-synergy/default.nix
index fce4af2086804..1bb28e17cd1fe 100644
--- a/pkgs/development/python-modules/somfy-mylink-synergy/default.nix
+++ b/pkgs/development/python-modules/somfy-mylink-synergy/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/somweb/default.nix b/pkgs/development/python-modules/somweb/default.nix
new file mode 100644
index 0000000000000..7abe33c14bf32
--- /dev/null
+++ b/pkgs/development/python-modules/somweb/default.nix
@@ -0,0 +1,41 @@
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "somweb";
+  version = "1.2.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "taarskog";
+    repo = "pySOMweb";
+    rev = "v${version}";
+    hash = "sha256-cLKEKDCMK7lCtbmj2KbhgJUCZpPnPI5tZvO5L+ey8qI=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    aiohttp
+    requests
+  ];
+
+  pythonImportsCheck = [ "somweb" ];
+
+  doCheck = false; # no tests
+
+  meta = with lib; {
+    changelog = "https://github.com/taarskog/pySOMweb/releases/tag/v${version}";
+    description = "A client library to control garage door operators produced by SOMMER through their SOMweb device";
+    homepage = "https://github.com/taarskog/pysomweb";
+    license = licenses.mit;
+    maintainers = with maintainers; [ uvnikita ];
+    mainProgram = "somweb";
+  };
+}
diff --git a/pkgs/development/python-modules/sonarr/default.nix b/pkgs/development/python-modules/sonarr/default.nix
index 0d2fe50b39762..479ae69e96b94 100644
--- a/pkgs/development/python-modules/sonarr/default.nix
+++ b/pkgs/development/python-modules/sonarr/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, aiohttp
-, yarl
-, aresponses
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  aiohttp,
+  yarl,
+  aresponses,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/sonos-websocket/default.nix b/pkgs/development/python-modules/sonos-websocket/default.nix
index ce182adb8fac3..1239043c26a2b 100644
--- a/pkgs/development/python-modules/sonos-websocket/default.nix
+++ b/pkgs/development/python-modules/sonos-websocket/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-1sgYLwIW7VWnHJGsfIQ95AGZ5j/DPMKQr5n7F+/MsuY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -33,9 +32,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sonos_websocket"
-  ];
+  pythonImportsCheck = [ "sonos_websocket" ];
 
   meta = with lib; {
     description = "Library to communicate with Sonos devices over websockets";
diff --git a/pkgs/development/python-modules/sopel/default.nix b/pkgs/development/python-modules/sopel/default.nix
index 93b942811c389..853c2ae32caca 100644
--- a/pkgs/development/python-modules/sopel/default.nix
+++ b/pkgs/development/python-modules/sopel/default.nix
@@ -1,76 +1,78 @@
-{ lib
-, buildPythonPackage
-, dnspython
-, fetchPypi
-, geoip2
-, ipython
-, isPyPy
-, praw
-, pyenchant
-, pygeoip
-, pytestCheckHook
-, pythonOlder
-, pytz
-, sqlalchemy
-, xmltodict
+{
+  lib,
+  buildPythonPackage,
+  dnspython,
+  fetchPypi,
+  geoip2,
+  ipython,
+  isPyPy,
+  setuptools,
+  praw,
+  pyenchant,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  sqlalchemy,
+  xmltodict,
+  importlib-metadata,
 }:
 
 buildPythonPackage rec {
   pname = "sopel";
-  version = "7.1.9";
-  format = "setuptools";
+  version = "8.0.0";
+  pyproject = true;
 
   disabled = isPyPy || pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-IJ+ovLQv6/UU1oepmUQjzaWBG3Rdd3xvui7FjK85Urs=";
+    hash = "sha256-juLJp0Et5qMZwBZzw0e4tKg1cBYqAsH8KUzqNoIP70U=";
   };
 
-  patches = [
-    # https://github.com/sopel-irc/sopel/issues/2401
-    # https://github.com/sopel-irc/sopel/commit/596adc44330939519784389cbb927435305ef758.patch
-    # rewrite the patch because there are too many patches needed to apply the above patch.
-    ./python311-support.patch
-  ];
+  build-system = [ setuptools ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "setuptools~=66.1" "setuptools"
+  '';
 
-  propagatedBuildInputs = [
+  dependencies = [
     dnspython
     geoip2
     ipython
     praw
     pyenchant
-    pygeoip
     pytz
     sqlalchemy
     xmltodict
+    importlib-metadata
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  pythonRemoveDeps = [ "sopel-help" ];
 
-  postPatch = ''
-    substituteInPlace requirements.txt \
-      --replace "praw>=4.0.0,<6.0.0" "praw" \
-      --replace "sqlalchemy<1.4" "sqlalchemy" \
-      --replace "xmltodict==0.12" "xmltodict>=0.12"
-  '';
+  pythonRelaxDeps = [ "sqlalchemy" ];
 
-  preCheck = ''
-    export TESTDIR=$(mktemp -d)
-    cp -R ./test $TESTDIR
-    pushd $TESTDIR
-  '';
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  postCheck = ''
-    popd
-  '';
-
-  pythonImportsCheck = [
-    "sopel"
+  disabledTests = [
+    # requires network access
+    "test_example_exchange_cmd_0"
+    "test_example_exchange_cmd_1"
+    "test_example_duck_0"
+    "test_example_duck_1"
+    "test_example_suggest_0"
+    "test_example_suggest_1"
+    "test_example_suggest_2"
+    "test_example_tr2_0"
+    "test_example_tr2_1"
+    "test_example_tr2_2"
+    "test_example_title_command_0"
+    "test_example_wiktionary_0"
+    "test_example_wiktionary_ety_0"
   ];
 
+  pythonImportsCheck = [ "sopel" ];
+
   meta = with lib; {
     description = "Simple and extensible IRC bot";
     homepage = "https://sopel.chat";
diff --git a/pkgs/development/python-modules/sopel/python311-support.patch b/pkgs/development/python-modules/sopel/python311-support.patch
deleted file mode 100644
index dfa0283409acd..0000000000000
--- a/pkgs/development/python-modules/sopel/python311-support.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-diff --git a/sopel/plugins/handlers.py b/sopel/plugins/handlers.py
-index 76902aa0..05f0279d 100644
---- a/sopel/plugins/handlers.py
-+++ b/sopel/plugins/handlers.py
-@@ -46,20 +46,15 @@ from __future__ import absolute_import, division, print_function, unicode_litera
- 
- import imp
- import importlib
-+import importlib.util
- import inspect
- import itertools
- import os
-+import sys
- 
- from sopel import loader
- from . import exceptions
- 
--try:
--    reload = importlib.reload
--except AttributeError:
--    # py2: no reload function
--    # TODO: imp is deprecated, to be removed when py2 support is dropped
--    reload = imp.reload
--
- 
- class AbstractPluginHandler(object):
-     """Base class for plugin handlers.
-@@ -301,7 +296,7 @@ class PyModulePlugin(AbstractPluginHandler):
- 
-         This method assumes the plugin is already loaded.
-         """
--        self._module = reload(self._module)
-+        self._module = importlib.reload(self._module)
- 
-     def is_loaded(self):
-         return self._module is not None
-@@ -402,45 +397,31 @@ class PyFilePlugin(PyModulePlugin):
- 
-         if good_file:
-             name = os.path.basename(filename)[:-3]
--            module_type = imp.PY_SOURCE
-+            spec = importlib.util.spec_from_file_location(
-+                name,
-+                filename,
-+            )
-         elif good_dir:
-             name = os.path.basename(filename)
--            module_type = imp.PKG_DIRECTORY
-+            spec = importlib.util.spec_from_file_location(
-+                name,
-+                os.path.join(filename, '__init__.py'),
-+                submodule_search_locations=filename,
-+            )
-         else:
-             raise exceptions.PluginError('Invalid Sopel plugin: %s' % filename)
- 
-         self.filename = filename
-         self.path = filename
--        self.module_type = module_type
-+        self.module_spec = spec
- 
-         super(PyFilePlugin, self).__init__(name)
- 
-     def _load(self):
--        # The current implementation uses `imp.load_module` to perform the
--        # load action, which also reloads the module. However, `imp` is
--        # deprecated in Python 3, so that might need to be changed when the
--        # support for Python 2 is dropped.
--        #
--        # However, the solution for Python 3 is non-trivial, since the
--        # `importlib` built-in module does not have a similar function,
--        # therefore requires to dive into its public internals
--        # (``importlib.machinery`` and ``importlib.util``).
--        #
--        # All of that is doable, but represents a lot of work. As long as
--        # Python 2 is supported, we can keep it for now.
--        #
--        # TODO: switch to ``importlib`` when Python2 support is dropped.
--        if self.module_type == imp.PY_SOURCE:
--            with open(self.path) as mod:
--                description = ('.py', 'U', self.module_type)
--                mod = imp.load_module(self.name, mod, self.path, description)
--        elif self.module_type == imp.PKG_DIRECTORY:
--            description = ('', '', self.module_type)
--            mod = imp.load_module(self.name, None, self.path, description)
--        else:
--            raise TypeError('Unsupported module type')
--
--        return mod
-+        module = importlib.util.module_from_spec(self.module_spec)
-+        sys.modules[self.name] = module
-+        self.module_spec.loader.exec_module(module)
-+        return module
- 
-     def get_meta_description(self):
-         """Retrieve a meta description for the plugin.
diff --git a/pkgs/development/python-modules/sorl-thumbnail/default.nix b/pkgs/development/python-modules/sorl-thumbnail/default.nix
index 2337d6b940c26..de3fd466ec6e4 100644
--- a/pkgs/development/python-modules/sorl-thumbnail/default.nix
+++ b/pkgs/development/python-modules/sorl-thumbnail/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, setuptools-scm
-, django
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  django,
 }:
 
 buildPythonPackage rec {
@@ -24,18 +25,14 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  buildInputs = [
-    django
-  ];
+  buildInputs = [ django ];
 
   env.DJANGO_SETTINGS_MODULE = "sorl.thumbnail.conf.defaults";
 
   # Disabled due to an improper configuration error when tested against django. This looks like something broken in the test cases for sorl.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sorl.thumbnail"
-  ];
+  pythonImportsCheck = [ "sorl.thumbnail" ];
 
   meta = with lib; {
     homepage = "https://sorl-thumbnail.readthedocs.org/en/latest/";
diff --git a/pkgs/development/python-modules/sortedcollections/default.nix b/pkgs/development/python-modules/sortedcollections/default.nix
index 97cf9d8afa159..3ee4eff750235 100644
--- a/pkgs/development/python-modules/sortedcollections/default.nix
+++ b/pkgs/development/python-modules/sortedcollections/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-cov
-, pytestCheckHook
-, sortedcontainers
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-cov,
+  pytestCheckHook,
+  sortedcontainers,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/sortedcontainers/default.nix b/pkgs/development/python-modules/sortedcontainers/default.nix
index 5cf34d566dcef..967119bbe776c 100644
--- a/pkgs/development/python-modules/sortedcontainers/default.nix
+++ b/pkgs/development/python-modules/sortedcontainers/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 let
@@ -19,21 +20,21 @@ let
 
     doCheck = false;
 
-    nativeCheckInputs = [
-      pytestCheckHook
-    ];
+    nativeCheckInputs = [ pytestCheckHook ];
 
     pythonImportsCheck = [ "sortedcontainers" ];
 
     passthru.tests = {
-      pytest = sortedcontainers.overridePythonAttrs (_: { doCheck = true; });
+      pytest = sortedcontainers.overridePythonAttrs (_: {
+        doCheck = true;
+      });
     };
 
     meta = with lib; {
       description = "Python Sorted Container Types: SortedList, SortedDict, and SortedSet";
       homepage = "https://grantjenks.com/docs/sortedcontainers/";
       license = licenses.asl20;
-      maintainers = with maintainers; [ ];
+      maintainers = [ ];
     };
   };
 in
diff --git a/pkgs/development/python-modules/soundcard/default.nix b/pkgs/development/python-modules/soundcard/default.nix
new file mode 100644
index 0000000000000..6fd42cd2ec91e
--- /dev/null
+++ b/pkgs/development/python-modules/soundcard/default.nix
@@ -0,0 +1,50 @@
+{
+  buildPythonPackage,
+  cffi,
+  fetchPypi,
+  lib,
+  libpulseaudio,
+  numpy,
+  setuptools,
+  testers,
+}:
+let
+  version = "0.4.3";
+in
+buildPythonPackage {
+  inherit version;
+  pname = "soundcard";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit version;
+    pname = "SoundCard";
+    hash = "sha256-QQg1UUuhCAmAPLmIfUJw85K1nq82WRW7lFFq8/ix0Dc=";
+  };
+
+  patchPhase = ''
+    substituteInPlace soundcard/pulseaudio.py \
+      --replace "'pulse'" "'${libpulseaudio}/lib/libpulse.so'"
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    cffi
+    numpy
+  ];
+
+  # doesn't work because there are not many soundcards in the
+  # sandbox. See VM-test
+  # pythonImportsCheck = [ "soundcard" ];
+
+  passthru.tests.vm-with-soundcard = testers.runNixOSTest ./test.nix;
+
+  meta = {
+    description = "Pure-Python Real-Time Audio Library";
+    homepage = "https://github.com/bastibe/SoundCard";
+    changelog = "https://github.com/bastibe/SoundCard/blob/${version}/README.rst#changelog";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ matthiasdotsh ];
+  };
+}
diff --git a/pkgs/development/python-modules/soundcard/test.nix b/pkgs/development/python-modules/soundcard/test.nix
new file mode 100644
index 0000000000000..720e7336cd6af
--- /dev/null
+++ b/pkgs/development/python-modules/soundcard/test.nix
@@ -0,0 +1,47 @@
+{
+  name = "Python Soundcard Library Test";
+
+  nodes.machine =
+    { pkgs, ... }:
+    {
+      environment.systemPackages = [ (pkgs.python3.withPackages (ps: [ ps.soundcard ])) ];
+
+      hardware.pulseaudio.enable = true;
+      hardware.pulseaudio.systemWide = true;
+
+      virtualisation.qemu.options = [
+        "-device virtio-sound-pci,audiodev=my_audiodev"
+        "-audiodev wav,id=my_audiodev"
+      ];
+    };
+
+  interactive.nodes.machine =
+    { ... }:
+    {
+      services.openssh.enable = true;
+      services.openssh.settings.PermitRootLogin = "yes";
+      users.extraUsers.root.initialPassword = "";
+      users.extraUsers.root.hashedPassword = null;
+      users.extraUsers.root.hashedPasswordFile = null;
+      users.extraUsers.root.initialHashedPassword = null;
+      virtualisation.forwardPorts = [
+        {
+          from = "host";
+          host.port = 2222;
+          guest.port = 22;
+        }
+      ];
+    };
+
+  testScript =
+    let
+      script = builtins.toFile "import.py" ''
+        import soundcard
+      '';
+    in
+    ''
+      start_all()
+      machine.wait_for_unit("multi-user.target")
+      machine.succeed("python ${script}")
+    '';
+}
diff --git a/pkgs/development/python-modules/soundcloud-v2/default.nix b/pkgs/development/python-modules/soundcloud-v2/default.nix
index d1df08cf90396..fa777afe1f410 100644
--- a/pkgs/development/python-modules/soundcloud-v2/default.nix
+++ b/pkgs/development/python-modules/soundcloud-v2/default.nix
@@ -1,28 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, dacite
-, python-dateutil
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  dacite,
+  python-dateutil,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "soundcloud-v2";
-  version = "1.3.7";
+  version = "1.5.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-DiaCnIEXKSxyE4+MCq0KwdKWUGfWO3LAVwsMNEkOmqc=";
+    hash = "sha256-cnM70Yz9xw3TPqGk8VYAag6u1nLjQS2kS7xRBJtFodU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     dacite
@@ -39,6 +38,6 @@ buildPythonPackage rec {
     description = "Python wrapper for the v2 SoundCloud API";
     homepage = "https://github.com/7x11x13/soundcloud.py";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sounddevice/default.nix b/pkgs/development/python-modules/sounddevice/default.nix
index 34e413c21ab47..a4140a8a7f8af 100644
--- a/pkgs/development/python-modules/sounddevice/default.nix
+++ b/pkgs/development/python-modules/sounddevice/default.nix
@@ -1,26 +1,31 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, cffi
-, numpy
-, portaudio
-, substituteAll
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  cffi,
+  numpy,
+  portaudio,
+  substituteAll,
 }:
 
 buildPythonPackage rec {
   pname = "sounddevice";
-  version = "0.4.6";
+  version = "0.4.7";
   format = "setuptools";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Mja3jxXwQVvfAGpiDO8HPQwFIoUdZvSpYe1tjrFIL+k=";
+    hash = "sha256-abOGgY1QotUYYH1LlzRC6NUkdgx81si4vgPYyY/EvOc=";
   };
 
-  propagatedBuildInputs = [ cffi numpy portaudio ];
+  propagatedBuildInputs = [
+    cffi
+    numpy
+    portaudio
+  ];
 
   # No tests included nor upstream available.
   doCheck = false;
diff --git a/pkgs/development/python-modules/soundfile/default.nix b/pkgs/development/python-modules/soundfile/default.nix
index 3a0193028c0d9..3e421ab2ac864 100644
--- a/pkgs/development/python-modules/soundfile/default.nix
+++ b/pkgs/development/python-modules/soundfile/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, numpy
-, libsndfile
-, cffi
-, isPyPy
-, stdenv
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  numpy,
+  libsndfile,
+  cffi,
+  isPyPy,
+  stdenv,
 }:
 
 buildPythonPackage rec {
@@ -14,27 +15,29 @@ buildPythonPackage rec {
   version = "0.12.1";
   format = "setuptools";
   # https://github.com/bastibe/python-soundfile/issues/157
-  disabled = isPyPy || stdenv.isi686;
+  disabled = isPyPy || stdenv.hostPlatform.isi686;
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-6OEBeyzx3adnrvGdL9nuXr4H4FDUMPd6Cnxmugi4za4=";
   };
 
-  patches = [
-    ./0001-Fix-build-on-linux-arm64.patch
-  ];
+  patches = [ ./0001-Fix-build-on-linux-arm64.patch ];
 
   postPatch = ''
     substituteInPlace soundfile.py --replace "_find_library('sndfile')" "'${libsndfile.out}/lib/libsndfile${stdenv.hostPlatform.extensions.sharedLibrary}'"
   '';
 
   nativeCheckInputs = [ pytestCheckHook ];
-  propagatedBuildInputs = [ numpy libsndfile cffi ];
+  propagatedBuildInputs = [
+    numpy
+    libsndfile
+    cffi
+  ];
   propagatedNativeBuildInputs = [ cffi ];
 
   meta = {
-    description = "An audio library based on libsndfile, CFFI and NumPy";
+    description = "Audio library based on libsndfile, CFFI and NumPy";
     license = lib.licenses.bsd3;
     homepage = "https://github.com/bastibe/python-soundfile";
   };
diff --git a/pkgs/development/python-modules/soupsieve/default.nix b/pkgs/development/python-modules/soupsieve/default.nix
index 1ae1cb7b8d2be..b5583765da31b 100644
--- a/pkgs/development/python-modules/soupsieve/default.nix
+++ b/pkgs/development/python-modules/soupsieve/default.nix
@@ -1,8 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatchling
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-VmPVp7O/ru4LxDcuf8SPnP9JQLPuxUpkUcxSmfEJdpA=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   # Circular dependency on beautifulsoup4
   doCheck = false;
@@ -26,9 +24,9 @@ buildPythonPackage rec {
   # pythonImportsCheck = [ "soupsieve" ];
 
   meta = with lib; {
-    description = "A CSS4 selector implementation for Beautiful Soup";
+    description = "CSS4 selector implementation for Beautiful Soup";
     license = licenses.mit;
     homepage = "https://github.com/facelessuser/soupsieve";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sourmash/default.nix b/pkgs/development/python-modules/sourmash/default.nix
index 2a9dc470f1451..8e29c2845d12f 100644
--- a/pkgs/development/python-modules/sourmash/default.nix
+++ b/pkgs/development/python-modules/sourmash/default.nix
@@ -1,43 +1,52 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, rustPlatform
-, bitstring
-, cachetools
-, cffi
-, deprecation
-, iconv
-, matplotlib
-, numpy
-, scipy
-, screed
-, hypothesis
-, pytest-xdist
-, pyyaml
-, pytestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  stdenv,
+  pythonOlder,
+  overrideSDK,
+  rustPlatform,
+  bitstring,
+  cachetools,
+  cffi,
+  deprecation,
+  iconv,
+  matplotlib,
+  numpy,
+  scipy,
+  screed,
+  hypothesis,
+  pytest-xdist,
+  pyyaml,
+  pytestCheckHook,
 }:
-
+let
+  stdenv' =
+    if stdenv.hostPlatform.isDarwin then overrideSDK stdenv { darwinMinVersion = "10.14"; } else stdenv;
+in
 buildPythonPackage rec {
   pname = "sourmash";
-  version = "4.8.4";
-  format = "pyproject";
-  disabled = pythonOlder "3.8";
+  version = "4.8.11";
+  pyproject = true;
+  disabled = pythonOlder "3.9";
+
+  stdenv = stdenv';
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Q1hMESwzEHGXcd4XW4nLqU8cLTCxrqRgAOr1qB77roo=";
+    hash = "sha256-GganbfRkuSaFd5qqpu0CpXe91zpKsyly6BNFgQNNNL8=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-HisWvJgx15OfYoMzzqYm1JyY1/jmGXBSZZmuNaKTDjI=";
+    hash = "sha256-im/TPxnT8c2QbWlzCY60wVwJFRIhSnVW7E4kv6bm0p4=";
   };
 
   nativeBuildInputs = with rustPlatform; [
     cargoSetupHook
     maturinBuildHook
+    bindgenHook
   ];
 
   buildInputs = [ iconv ];
diff --git a/pkgs/development/python-modules/soxr/default.nix b/pkgs/development/python-modules/soxr/default.nix
index 7cd1cc0af6bc6..841ba83259f78 100644
--- a/pkgs/development/python-modules/soxr/default.nix
+++ b/pkgs/development/python-modules/soxr/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# build-system
-, cython
-, numpy
-, oldest-supported-numpy
-, setuptools
-, setuptools-scm
-, gnutar
-
-# native
-, libsoxr
-
-# tests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  cython,
+  numpy,
+  oldest-supported-numpy,
+  setuptools,
+  setuptools-scm,
+  gnutar,
+
+  # native
+  libsoxr,
+
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -44,17 +45,11 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  buildInputs = [
-    libsoxr
-  ];
+  buildInputs = [ libsoxr ];
 
-  pythonImportsCheck = [
-    "soxr"
-  ];
+  pythonImportsCheck = [ "soxr" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "High quality, one-dimensional sample-rate conversion library";
diff --git a/pkgs/development/python-modules/spacy-alignments/default.nix b/pkgs/development/python-modules/spacy-alignments/default.nix
index 103c100492843..9315953b5a25c 100644
--- a/pkgs/development/python-modules/spacy-alignments/default.nix
+++ b/pkgs/development/python-modules/spacy-alignments/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, stdenv
-, cargo
-, fetchPypi
-, buildPythonPackage
-, isPy3k
-, rustPlatform
-, rustc
-, setuptools-rust
-, libiconv
+{
+  lib,
+  stdenv,
+  cargo,
+  fetchPypi,
+  buildPythonPackage,
+  isPy3k,
+  rustPlatform,
+  rustc,
+  setuptools-rust,
+  libiconv,
 }:
 
 buildPythonPackage rec {
@@ -35,7 +36,7 @@ buildPythonPackage rec {
     rustc
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
   # Fails because spacy_alignments module cannot be loaded correctly.
   doCheck = false;
@@ -46,6 +47,6 @@ buildPythonPackage rec {
     description = "Align tokenizations for spaCy and transformers";
     homepage = "https://github.com/explosion/spacy-alignments";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/spacy-loggers/default.nix b/pkgs/development/python-modules/spacy-loggers/default.nix
index 72361aa04bf85..8ac6396cf0abc 100644
--- a/pkgs/development/python-modules/spacy-loggers/default.nix
+++ b/pkgs/development/python-modules/spacy-loggers/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, callPackage
-, fetchPypi
-, buildPythonPackage
-, wandb
-, wasabi
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  wandb,
+  wasabi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/spacy-pkuseg/default.nix b/pkgs/development/python-modules/spacy-pkuseg/default.nix
index 02f47d7911541..f1896a50ad182 100644
--- a/pkgs/development/python-modules/spacy-pkuseg/default.nix
+++ b/pkgs/development/python-modules/spacy-pkuseg/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, cython
-, numpy
-, srsly
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  cython,
+  numpy,
+  srsly,
 }:
 
 buildPythonPackage rec {
@@ -26,7 +27,10 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [ cython ];
 
-  propagatedBuildInputs = [ numpy srsly ];
+  propagatedBuildInputs = [
+    numpy
+    srsly
+  ];
 
   pythonImportsCheck = [ "spacy_pkuseg" ];
 
@@ -34,6 +38,6 @@ buildPythonPackage rec {
     description = "Toolkit for multi-domain Chinese word segmentation (spaCy fork)";
     homepage = "https://github.com/explosion/spacy-pkuseg";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/spacy-transformers/annotation-test/default.nix b/pkgs/development/python-modules/spacy-transformers/annotation-test/default.nix
index f2b4bfb3a068f..d6d1094447d24 100644
--- a/pkgs/development/python-modules/spacy-transformers/annotation-test/default.nix
+++ b/pkgs/development/python-modules/spacy-transformers/annotation-test/default.nix
@@ -1,15 +1,28 @@
-{ stdenv, pytest, spacy-models }:
+{
+  lib,
+  stdenv,
+  pytest,
+  spacy-models,
+}:
 
 stdenv.mkDerivation {
   name = "spacy-transformers-annotation-test";
 
-  src = ./.;
+  src = lib.fileset.toSource {
+    root = ./.;
+    fileset = lib.fileset.unions [
+      ./annotate.py
+    ];
+  };
 
   dontConfigure = true;
   dontBuild = true;
   doCheck = true;
 
-  nativeCheckInputs = [ pytest spacy-models.en_core_web_trf ];
+  nativeCheckInputs = [
+    pytest
+    spacy-models.en_core_web_trf
+  ];
 
   checkPhase = ''
     pytest annotate.py
diff --git a/pkgs/development/python-modules/spacy-transformers/default.nix b/pkgs/development/python-modules/spacy-transformers/default.nix
index bdff12f84e627..ddc71b75eac5b 100644
--- a/pkgs/development/python-modules/spacy-transformers/default.nix
+++ b/pkgs/development/python-modules/spacy-transformers/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, callPackage
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, cython
-, pythonRelaxDepsHook
-, spacy
-, numpy
-, transformers
-, torch
-, srsly
-, spacy-alignments
-, pytestCheckHook
+{
+  lib,
+  callPackage,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  cython,
+  spacy,
+  numpy,
+  transformers,
+  torch,
+  srsly,
+  spacy-alignments,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +34,6 @@ buildPythonPackage rec {
     cython
   ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   dependencies = [
     spacy
@@ -47,20 +44,14 @@ buildPythonPackage rec {
     spacy-alignments
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonRelaxDeps = [
-    "transformers"
-  ];
+  pythonRelaxDeps = [ "transformers" ];
 
   # Test fails due to missing arguments for trfs2arrays().
   doCheck = false;
 
-  pythonImportsCheck = [
-    "spacy_transformers"
-  ];
+  pythonImportsCheck = [ "spacy_transformers" ];
 
   passthru.tests.annotation = callPackage ./annotation-test { };
 
diff --git a/pkgs/development/python-modules/spacy/annotation-test/default.nix b/pkgs/development/python-modules/spacy/annotation-test/default.nix
index 91ab0f33acaac..cb8a97aa568fc 100644
--- a/pkgs/development/python-modules/spacy/annotation-test/default.nix
+++ b/pkgs/development/python-modules/spacy/annotation-test/default.nix
@@ -1,15 +1,28 @@
-{ stdenv, pytest, spacy-models }:
+{
+  lib,
+  stdenv,
+  pytest,
+  spacy-models,
+}:
 
 stdenv.mkDerivation {
   name = "spacy-annotation-test";
 
-  src = ./.;
+  src = lib.fileset.toSource {
+    root  = ./.;
+    fileset = lib.fileset.unions [
+      ./annotate.py
+    ];
+  };
 
   dontConfigure = true;
   dontBuild = true;
   doCheck = true;
 
-  nativeCheckInputs = [ pytest spacy-models.en_core_web_sm ];
+  nativeCheckInputs = [
+    pytest
+    spacy-models.en_core_web_sm
+  ];
 
   checkPhase = ''
     pytest annotate.py
diff --git a/pkgs/development/python-modules/spacy/default.nix b/pkgs/development/python-modules/spacy/default.nix
index 32b78f40cdc11..03fffb27b8a44 100644
--- a/pkgs/development/python-modules/spacy/default.nix
+++ b/pkgs/development/python-modules/spacy/default.nix
@@ -1,77 +1,74 @@
-{ lib
-, stdenv
-, blis
-, buildPythonPackage
-, callPackage
-, catalogue
-, cymem
-, cython_0
-, fetchPypi
-, hypothesis
-, jinja2
-, jsonschema
-, langcodes
-, mock
-, murmurhash
-, numpy
-, packaging
-, pathy
-, preshed
-, pydantic
-, pytestCheckHook
-, python
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
-, setuptools
-, spacy-legacy
-, spacy-loggers
-, srsly
-, thinc
-, tqdm
-, typer
-, typing-extensions
-, wasabi
-, weasel
-, writeScript
-, nix
-, git
-, nix-update
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  callPackage,
+  catalogue,
+  cymem,
+  cython_0,
+  fetchPypi,
+  hypothesis,
+  jinja2,
+  langcodes,
+  mock,
+  murmurhash,
+  numpy,
+  packaging,
+  preshed,
+  pydantic,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
+  spacy-legacy,
+  spacy-loggers,
+  srsly,
+  thinc,
+  tqdm,
+  typer,
+  wasabi,
+  weasel,
+  writeScript,
+  nix,
+  git,
+  nix-update,
 }:
 
 buildPythonPackage rec {
   pname = "spacy";
-  version = "3.7.4";
+  version = "3.7.6";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Ul8s7S5AdhViyMrOk+9qHm6MSD8nvVZLwbFfYI776Fs=";
+    hash = "sha256-9AZcCqxcSLv7L/4ZHVXMszv7AFN2r71MzW1ek0FRTjQ=";
   };
 
-  pythonRelaxDeps = [
-    "smart-open"
-    "typer"
-  ];
+  postPatch = ''
+    # thinc version 8.3.0 had no functional changes
+    # also see https://github.com/explosion/spaCy/issues/13607
+    substituteInPlace pyproject.toml setup.cfg \
+      --replace-fail "thinc>=8.2.2,<8.3.0" "thinc>=8.2.2,<8.4.0"
+  '';
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
+  build-system = [
+    cymem
     cython_0
+    murmurhash
+    numpy
+    thinc
   ];
 
-  propagatedBuildInputs = [
-    blis
+  dependencies = [
     catalogue
     cymem
     jinja2
-    jsonschema
     langcodes
     murmurhash
     numpy
     packaging
-    pathy
     preshed
     pydantic
     requests
@@ -84,8 +81,6 @@ buildPythonPackage rec {
     typer
     wasabi
     weasel
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
   ];
 
   nativeCheckInputs = [
@@ -94,16 +89,12 @@ buildPythonPackage rec {
     mock
   ];
 
-  doCheck = true;
-
   # Fixes ModuleNotFoundError when running tests on Cythonized code. See #255262
   preCheck = ''
     cd $out
   '';
 
-  pytestFlagsArray = [
-    "-m 'slow'"
-  ];
+  pytestFlagsArray = [ "-m 'slow'" ];
 
   disabledTests = [
     # touches network
@@ -112,15 +103,19 @@ buildPythonPackage rec {
     "test_project_assets"
   ];
 
-  pythonImportsCheck = [
-    "spacy"
-  ];
+  pythonImportsCheck = [ "spacy" ];
 
   passthru = {
     updateScript = writeScript "update-spacy" ''
       #!${stdenv.shell}
       set -eou pipefail
-      PATH=${lib.makeBinPath [ nix git nix-update ]}
+      PATH=${
+        lib.makeBinPath [
+          nix
+          git
+          nix-update
+        ]
+      }
 
       nix-update python3Packages.spacy
 
@@ -134,8 +129,8 @@ buildPythonPackage rec {
     description = "Industrial-strength Natural Language Processing (NLP)";
     mainProgram = "spacy";
     homepage = "https://github.com/explosion/spaCy";
-    changelog = "https://github.com/explosion/spaCy/releases/tag/v${version}";
+    changelog = "https://github.com/explosion/spaCy/releases/tag/release-v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/spacy/legacy.nix b/pkgs/development/python-modules/spacy/legacy.nix
index f94855e66a3f4..3bd9c33b7e828 100644
--- a/pkgs/development/python-modules/spacy/legacy.nix
+++ b/pkgs/development/python-modules/spacy/legacy.nix
@@ -1,6 +1,7 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
   # nativeCheckInputs = [ pytestCheckHook spacy ];
   doCheck = false;
 
-  pythonImportsCheck = [
-    "spacy_legacy"
-  ];
+  pythonImportsCheck = [ "spacy_legacy" ];
 
   meta = with lib; {
     description = "Legacy registered functions for spaCy backwards compatibility";
diff --git a/pkgs/development/python-modules/spacy/lookups-data.nix b/pkgs/development/python-modules/spacy/lookups-data.nix
index 70469761eddb7..3e1e024350d83 100644
--- a/pkgs/development/python-modules/spacy/lookups-data.nix
+++ b/pkgs/development/python-modules/spacy/lookups-data.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, spacy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  spacy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/spacy/models.nix b/pkgs/development/python-modules/spacy/models.nix
index 3c8a3cc0ff2f3..a8e99669b4489 100644
--- a/pkgs/development/python-modules/spacy/models.nix
+++ b/pkgs/development/python-modules/spacy/models.nix
@@ -1,22 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, protobuf
-, pymorphy3
-, pymorphy3-dicts-uk
-, sentencepiece
-, setuptools
-, spacy
-, spacy-pkuseg
-, spacy-transformers
-, writeScript
-, stdenv
-, jq
-, nix
-, moreutils
+{
+  lib,
+  buildPythonPackage,
+  fetchurl,
+  protobuf,
+  pymorphy3,
+  pymorphy3-dicts-uk,
+  sentencepiece,
+  setuptools,
+  spacy,
+  spacy-pkuseg,
+  spacy-transformers,
+  writeScript,
+  stdenv,
+  jq,
+  nix,
+  moreutils,
 }:
 let
-  buildModelPackage = { pname, version, sha256, license }:
+  buildModelPackage =
+    {
+      pname,
+      version,
+      sha256,
+      license,
+    }:
 
     let
       lang = builtins.substring 0 2 pname;
@@ -31,10 +38,14 @@ let
         inherit sha256;
       };
 
-      propagatedBuildInputs = [ spacy ]
+      propagatedBuildInputs =
+        [ spacy ]
         ++ lib.optionals (lib.hasSuffix "_trf" pname) [ spacy-transformers ]
         ++ lib.optionals (lang == "ru") [ pymorphy3 ]
-        ++ lib.optionals (lang == "uk") [ pymorphy3 pymorphy3-dicts-uk ]
+        ++ lib.optionals (lang == "uk") [
+          pymorphy3
+          pymorphy3-dicts-uk
+        ]
         ++ lib.optionals (lang == "zh") [ spacy-pkuseg ]
         ++ lib.optionals (pname == "fr_dep_news_trf") [ sentencepiece ];
 
@@ -43,18 +54,20 @@ let
           --replace "protobuf<3.21.0" "protobuf"
       '';
 
-      nativeBuildInputs = [
-        setuptools
-      ] ++ lib.optionals requires-protobuf [
-        protobuf
-      ];
+      nativeBuildInputs = [ setuptools ] ++ lib.optionals requires-protobuf [ protobuf ];
 
       pythonImportsCheck = [ pname ];
 
       passthru.updateScript = writeScript "update-spacy-models" ''
         #!${stdenv.shell}
         set -eou pipefail
-        PATH=${lib.makeBinPath [ jq nix moreutils ]}
+        PATH=${
+          lib.makeBinPath [
+            jq
+            nix
+            moreutils
+          ]
+        }
 
         IFS=. read -r major minor patch <<<"${spacy.version}"
         spacyVersion="$(echo "$major.$minor.0")"
@@ -75,14 +88,14 @@ let
         popd || exit
       '';
 
-      meta = with lib; {
+      meta = {
         description = "Models for the spaCy NLP library";
         homepage = "https://github.com/explosion/spacy-models";
-        license = licenses.${license};
+        license = lib.licenses.${license};
       };
     };
 
-  makeModelSet = models: with lib; listToAttrs (map (m: nameValuePair m.pname (buildModelPackage m)) models);
-
+  makeModelSet =
+    models: lib.listToAttrs (map (m: lib.nameValuePair m.pname (buildModelPackage m)) models);
 in
 makeModelSet (lib.importJSON ./models.json)
diff --git a/pkgs/development/python-modules/spake2/default.nix b/pkgs/development/python-modules/spake2/default.nix
index 2ccd62fcdf15c..98602e7d521b2 100644
--- a/pkgs/development/python-modules/spake2/default.nix
+++ b/pkgs/development/python-modules/spake2/default.nix
@@ -1,44 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch2
-, setuptools
-, hkdf
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  setuptools,
+  cryptography,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "spake2";
-  version = "0.8";
+  version = "0.9";
   pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "c17a614b29ee4126206e22181f70a406c618d3c6c62ca6d6779bce95e9c926f4";
+  src = fetchFromGitHub {
+    owner = "warner";
+    repo = "python-spake2";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-WPMGH1OzG+5O+2lNl2sv06/dNardY+BHYDS290Z36vQ=";
   };
 
-  patches = [
-    # https://github.com/warner/python-spake2/pull/16
-    (fetchpatch2 {
-      name = "python312-compat.patch";
-      url = "https://github.com/warner/python-spake2/commit/1b04d33106b105207c97c64b2589c45790720b0b.patch";
-      hash = "sha256-OoBz0lN17VyVGg6UfT+Zj9M1faFTNpPIhxrwCgUwMc8=";
-    })
-  ];
+  build-system = [ setuptools ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
-
-  propagatedBuildInputs = [
-    hkdf
-  ];
+  dependencies = [ cryptography ];
 
   pythonImportsCheck = [ "spake2" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     changelog = "https://github.com/warner/python-spake2/blob/v${version}/NEWS";
diff --git a/pkgs/development/python-modules/spark-parser/default.nix b/pkgs/development/python-modules/spark-parser/default.nix
index 690d9a295de44..f82b7df763426 100644
--- a/pkgs/development/python-modules/spark-parser/default.nix
+++ b/pkgs/development/python-modules/spark-parser/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, click
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  unittestCheckHook,
+  click,
 }:
 
 buildPythonPackage rec {
@@ -16,15 +17,20 @@ buildPythonPackage rec {
     sha256 = "0np2y4jcir4a4j18wws7yzkz2zj6nqhdhn41rpq8pyskg6wrgfx7";
   };
 
-  buildInputs = [ nose ];
   propagatedBuildInputs = [ click ];
 
+  nativeCheckInputs = [ unittestCheckHook ];
+  unittestFlagsArray = [
+    "-s"
+    "test"
+    "-v"
+  ];
+
   meta = with lib; {
-    description = "An Early-Algorithm Context-free grammar Parser";
+    description = "Early-Algorithm Context-free grammar Parser";
     mainProgram = "spark-parser-coverage";
     homepage = "https://github.com/rocky/python-spark";
     license = licenses.mit;
-    maintainers = with maintainers; [raskin];
+    maintainers = with maintainers; [ raskin ];
   };
-
 }
diff --git a/pkgs/development/python-modules/sparklines/default.nix b/pkgs/development/python-modules/sparklines/default.nix
index d5d4e33127932..9b7c002e40fc7 100644
--- a/pkgs/development/python-modules/sparklines/default.nix
+++ b/pkgs/development/python-modules/sparklines/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, future
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  future,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "sparklines";
-  version = "0.4.2";
+  version = "0.5.0";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "deeplook";
     repo = pname;
-    rev = "v${version}";
-    sha256 = "1hfxp5c4wbyddy7fgmnda819w3dia3i6gqb2323dr2z016p84r7l";
+    rev = "refs/tags/v${version}";
+    sha256 = "sha256-oit1bDqP96wwfTRCV8V0N9P/+pkdW2WYOWT6u3lb4Xs=";
   };
 
   propagatedBuildInputs = [ future ];
diff --git a/pkgs/development/python-modules/sparqlwrapper/default.nix b/pkgs/development/python-modules/sparqlwrapper/default.nix
index 1abea197499d5..20c32f52379fb 100644
--- a/pkgs/development/python-modules/sparqlwrapper/default.nix
+++ b/pkgs/development/python-modules/sparqlwrapper/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, keepalive
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  keepalive,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/sparse/default.nix b/pkgs/development/python-modules/sparse/default.nix
index acb9bfa1d8fa2..6c6e5b76eeafb 100644
--- a/pkgs/development/python-modules/sparse/default.nix
+++ b/pkgs/development/python-modules/sparse/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, buildPythonPackage
-, dask
-, fetchPypi
-, numba
-, numpy
-, pytest7CheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  dask,
+  fetchPypi,
+  numba,
+  numpy,
+  pytest7CheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  scipy,
 }:
 
 buildPythonPackage rec {
   pname = "sparse";
-  version = "0.15.1";
+  version = "0.15.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-lzrcuIqNuOPYBHlTMx4m0/ZKVlf5tGprhZxHZjw+75k=";
+    hash = "sha256-1LHFfST/D2Ty/VtalbSbf7hO0geibX1Yzidk3MXHK4Q=";
   };
 
   postPatch = ''
@@ -44,9 +45,7 @@ buildPythonPackage rec {
     pytest7CheckHook
   ];
 
-  pythonImportsCheck = [
-    "sparse"
-  ];
+  pythonImportsCheck = [ "sparse" ];
 
   pytestFlagsArray = [
     "-W"
@@ -59,6 +58,6 @@ buildPythonPackage rec {
     changelog = "https://sparse.pydata.org/en/stable/changelog.html";
     downloadPage = "https://github.com/pydata/sparse/releases/tag/${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sparsezoo/default.nix b/pkgs/development/python-modules/sparsezoo/default.nix
new file mode 100644
index 0000000000000..fa28c365cad40
--- /dev/null
+++ b/pkgs/development/python-modules/sparsezoo/default.nix
@@ -0,0 +1,118 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  click,
+  geocoder,
+  numpy,
+  onnx,
+  pyyaml,
+  requests,
+  tqdm,
+  pandas,
+  protobuf,
+  py-machineid,
+  pydantic,
+
+  # checks
+  matplotlib,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "sparsezoo";
+  version = "1.8.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "neuralmagic";
+    repo = "sparsezoo";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-c4F95eVvj673eFO/rbmv4LY3pGmqo+arbsYqElznwdA=";
+  };
+
+  build-system = [ setuptools ];
+
+  pythonRelaxDeps = [ "onnx" ];
+
+  dependencies = [
+    click
+    geocoder
+    numpy
+    onnx
+    pyyaml
+    requests
+    tqdm
+    pandas
+    protobuf
+    py-machineid
+    pydantic
+  ];
+
+  pythonImportsCheck = [ "sparsezoo" ];
+
+  nativeCheckInputs = [
+    matplotlib
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # Require network access
+    "test_analysis"
+    "test_custom_default"
+    "test_draw_operation_chart"
+    "test_draw_parameter_chart"
+    "test_draw_parameter_operation_combined_chart"
+    "test_draw_sparsity_by_layer_chart"
+    "test_extract_node_id"
+    "test_fail_default_on_empty"
+    "test_folder_structure"
+    "test_from_model_analysis"
+    "test_generate_outputs"
+    "test_get_layer_and_op_counts"
+    "test_get_node_bias"
+    "test_get_node_bias_name"
+    "test_get_node_four_block_sparsity"
+    "test_get_node_num_four_block_zeros_and_size"
+    "test_get_node_num_zeros_and_size"
+    "test_get_node_sparsity"
+    "test_get_node_weight_and_shape"
+    "test_get_node_weight_name"
+    "test_get_ops_dict"
+    "test_get_zero_point"
+    "test_graphql_api_response"
+    "test_is_four_block_sparse_layer"
+    "test_is_parameterized_prunable_layer"
+    "test_is_quantized_layer"
+    "test_is_sparse_layer"
+    "test_latency_extractor"
+    "test_load_files_from_stub"
+    "test_model_from_stub"
+    "test_model_gz_extraction_from_local_files"
+    "test_model_gz_extraction_from_stub"
+    "test_recipe_getters"
+    "test_search_models"
+    "test_setup_model_from_objects"
+    "test_setup_model_from_paths"
+    "test_validate"
+  ];
+
+  disabledTestPaths = [
+    # Require network access
+    "tests/sparsezoo/analyze/test_model_analysis_creation.py"
+    "tests/sparsezoo/deployment_package/utils/test_utils.py"
+  ];
+
+  meta = {
+    description = "Neural network model repository for highly sparse and sparse-quantized models with matching sparsification recipes";
+    homepage = "https://github.com/neuralmagic/sparsezoo";
+    changelog = "https://github.com/neuralmagic/sparsezoo/releases/tag/v${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/pkgs/development/python-modules/spatial-image/default.nix b/pkgs/development/python-modules/spatial-image/default.nix
index e578ac7e54209..6209ebc4de5cc 100644
--- a/pkgs/development/python-modules/spatial-image/default.nix
+++ b/pkgs/development/python-modules/spatial-image/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, flit-core
-, pytestCheckHook
-, numpy
-, xarray
-, xarray-dataclasses
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  flit-core,
+  pytestCheckHook,
+  numpy,
+  xarray,
+  xarray-dataclasses,
 }:
 
 buildPythonPackage rec {
   pname = "spatial-image";
-  version = "1.0.0";
+  version = "1.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,12 +21,10 @@ buildPythonPackage rec {
     owner = "spatial-image";
     repo = "spatial-image";
     rev = "refs/tags/v${version}";
-    hash = "sha256-nCsxPhIgGmZZntYbhQ3KnzptcKdN288eNixbQDgECSQ=";
+    hash = "sha256-yIAqHhq2naTA8PdLOdrNSrhEOhRwlFD6x9dH4xDVt9Y=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     numpy
@@ -38,7 +37,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "spatial_image" ];
 
   meta = with lib; {
-    description = "A multi-dimensional spatial image data structure for scientific Python";
+    description = "Multi-dimensional spatial image data structure for scientific Python";
     homepage = "https://github.com/spatial-image/spatial-image";
     changelog = "https://github.com/spatial-image/spatial-image/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/spatialmath-python/default.nix b/pkgs/development/python-modules/spatialmath-python/default.nix
new file mode 100644
index 0000000000000..f889c325ac2ee
--- /dev/null
+++ b/pkgs/development/python-modules/spatialmath-python/default.nix
@@ -0,0 +1,74 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  oldest-supported-numpy,
+  setuptools,
+  ansitable,
+  matplotlib,
+  numpy,
+  scipy,
+  typing-extensions,
+  coverage,
+  flake8,
+  pytest,
+  pytest-timeout,
+  pytest-xvfb,
+  sympy,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "spatialmath-python";
+  version = "1.1.10";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    pname = "spatialmath_python";
+    inherit version;
+    hash = "sha256-7h29RHCrxdexpabtxMQx/7RahQmCDGHhdJ1WETvtfYg=";
+  };
+
+  nativeBuildInputs = [
+    oldest-supported-numpy
+    setuptools
+  ];
+
+  pythonRemoveDeps = [ "pre-commit" ];
+
+  propagatedBuildInputs = [
+    ansitable
+    matplotlib
+    numpy
+    scipy
+    typing-extensions
+  ];
+
+  passthru.optional-dependencies = {
+    dev = [
+      coverage
+      flake8
+      pytest
+      pytest-timeout
+      pytest-xvfb
+      sympy
+    ];
+  };
+
+  pythonImportsCheck = [ "spatialmath" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = with lib; {
+    description = "Provides spatial maths capability for Python";
+    homepage = "https://pypi.org/project/spatialmath-python/";
+    license = licenses.mit;
+    maintainers = with maintainers; [
+      djacu
+      a-camarillo
+    ];
+  };
+}
diff --git a/pkgs/development/python-modules/spdx-lookup/default.nix b/pkgs/development/python-modules/spdx-lookup/default.nix
index 6bcb2c9427966..420ce4c68976c 100644
--- a/pkgs/development/python-modules/spdx-lookup/default.nix
+++ b/pkgs/development/python-modules/spdx-lookup/default.nix
@@ -1,13 +1,16 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, nix-update-script
-, spdx
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  nix-update-script,
+  setuptools,
+  spdx,
 }:
 
 buildPythonPackage rec {
   pname = "spdx-lookup";
   version = "0.3.2";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "bbqsrc";
@@ -16,13 +19,14 @@ buildPythonPackage rec {
     hash = "sha256-jtzhqRAj1BWdU8AuR7Gr343mL5alLXhi+SyCkCI5AAU=";
   };
 
-  propagatedBuildInputs = [
-    spdx
-  ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [
-    "spdx_lookup"
-  ];
+  dependencies = [ spdx ];
+
+  pythonImportsCheck = [ "spdx_lookup" ];
+
+  # upstream has no tests
+  doCheck = false;
 
   passthru.updateScript = nix-update-script { };
 
@@ -34,4 +38,3 @@ buildPythonPackage rec {
     maintainers = with lib.maintainers; [ jnsgruk ];
   };
 }
-
diff --git a/pkgs/development/python-modules/spdx-tools/default.nix b/pkgs/development/python-modules/spdx-tools/default.nix
index 415534bff531f..336d8cb5549c1 100644
--- a/pkgs/development/python-modules/spdx-tools/default.nix
+++ b/pkgs/development/python-modules/spdx-tools/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, beartype
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, license-expression
-, ply
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, rdflib
-, semantic-version
-, setuptools
-, setuptools-scm
-, uritools
-, xmltodict
+{
+  lib,
+  beartype,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  license-expression,
+  ply,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  rdflib,
+  semantic-version,
+  setuptools,
+  setuptools-scm,
+  uritools,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
@@ -47,13 +48,9 @@ buildPythonPackage rec {
     xmltodict
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "spdx_tools.spdx"
-  ];
+  pythonImportsCheck = [ "spdx_tools.spdx" ];
 
   disabledTestPaths = [
     # Test depends on the currently not packaged pyshacl module
diff --git a/pkgs/development/python-modules/spdx/default.nix b/pkgs/development/python-modules/spdx/default.nix
index f09fcfceec8d3..a99ee507936b6 100644
--- a/pkgs/development/python-modules/spdx/default.nix
+++ b/pkgs/development/python-modules/spdx/default.nix
@@ -1,12 +1,15 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, nix-update-script
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  nix-update-script,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "spdx";
   version = "2.5";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "bbqsrc";
@@ -15,9 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-lfTgAX4Wl01xrvLA12ZUqjah7ZiLafMAU+yNNdVkRk0=";
   };
 
-  pythonImportsCheck = [
-    "spdx"
-  ];
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "spdx" ];
+
+  # upstream has no tests
+  doCheck = false;
 
   passthru.updateScript = nix-update-script { };
 
@@ -29,4 +35,3 @@ buildPythonPackage rec {
     maintainers = with lib.maintainers; [ jnsgruk ];
   };
 }
-
diff --git a/pkgs/development/python-modules/speaklater/default.nix b/pkgs/development/python-modules/speaklater/default.nix
index 1ae66d9f4ffec..1529e200f731b 100644
--- a/pkgs/development/python-modules/speaklater/default.nix
+++ b/pkgs/development/python-modules/speaklater/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -19,5 +20,4 @@ buildPythonPackage rec {
     license = licenses.bsd0;
     maintainers = with maintainers; [ matejc ];
   };
-
 }
diff --git a/pkgs/development/python-modules/speaklater3/default.nix b/pkgs/development/python-modules/speaklater3/default.nix
index 5898dfe5cd1aa..780ef60bb996f 100644
--- a/pkgs/development/python-modules/speaklater3/default.nix
+++ b/pkgs/development/python-modules/speaklater3/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/spectral-cube/default.nix b/pkgs/development/python-modules/spectral-cube/default.nix
index 007528e228659..d9c3e6466143d 100644
--- a/pkgs/development/python-modules/spectral-cube/default.nix
+++ b/pkgs/development/python-modules/spectral-cube/default.nix
@@ -1,23 +1,31 @@
-{ lib
-, stdenv
-, aplpy
-, astropy
-, buildPythonPackage
-, casa-formats-io
-, dask
-, fetchPypi
-, joblib
-, pytest-astropy
-, pytestCheckHook
-, pythonOlder
-, radio-beam
-, setuptools-scm
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+
+  # build-system
+  setuptools-scm,
+
+  # dependencies
+  astropy,
+  casa-formats-io,
+  dask,
+  joblib,
+  looseversion,
+  radio-beam,
+
+  # checks
+  aplpy,
+  pytest-astropy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "spectral-cube";
   version = "0.6.5";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -26,16 +34,17 @@ buildPythonPackage rec {
     hash = "sha256-gJzrr3+/FsQN/HHDERxf/NECArwOaTqFwmI/Q2Z9HTM=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  patches = [ ./distutils-looseversion.patch ];
+
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     astropy
     casa-formats-io
-    radio-beam
-    joblib
     dask
+    joblib
+    looseversion
+    radio-beam
   ];
 
   nativeCheckInputs = [
@@ -51,19 +60,17 @@ buildPythonPackage rec {
 
   # On x86_darwin, this test fails with "Fatal Python error: Aborted"
   # when sandbox = true.
-  disabledTestPaths = lib.optionals stdenv.isDarwin [
+  disabledTestPaths = lib.optionals stdenv.hostPlatform.isDarwin [
     "spectral_cube/tests/test_visualization.py"
   ];
 
-  pythonImportsCheck = [
-    "spectral_cube"
-  ];
+  pythonImportsCheck = [ "spectral_cube" ];
 
-  meta = with lib; {
+  meta = {
     description = "Library for reading and analyzing astrophysical spectral data cubes";
     homepage = "https://spectral-cube.readthedocs.io";
     changelog = "https://github.com/radio-astro-tools/spectral-cube/releases/tag/v${version}";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ smaret ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ smaret ];
   };
 }
diff --git a/pkgs/development/python-modules/spectral-cube/distutils-looseversion.patch b/pkgs/development/python-modules/spectral-cube/distutils-looseversion.patch
new file mode 100644
index 0000000000000..857d37a1a88ab
--- /dev/null
+++ b/pkgs/development/python-modules/spectral-cube/distutils-looseversion.patch
@@ -0,0 +1,152 @@
+diff --git a/spectral_cube/conftest.py b/spectral_cube/conftest.py
+index 0d7c158..6fac9b4 100644
+--- a/spectral_cube/conftest.py
++++ b/spectral_cube/conftest.py
+@@ -4,7 +4,7 @@
+ from __future__ import print_function, absolute_import, division
+ 
+ import os
+-from distutils.version import LooseVersion
++from looseversion import LooseVersion
+ from astropy.units.equivalencies import pixel_scale
+ 
+ # Import casatools and casatasks here if available as they can otherwise
+diff --git a/spectral_cube/lower_dimensional_structures.py b/spectral_cube/lower_dimensional_structures.py
+index f0e3745..1b1e1f8 100644
+--- a/spectral_cube/lower_dimensional_structures.py
++++ b/spectral_cube/lower_dimensional_structures.py
+@@ -526,7 +526,7 @@ class Projection(LowerDimensionalObject, SpatialCoordMixinClass,
+                               " installed.")
+ 
+         # Need version > 0.2 to work with cubes
+-        from distutils.version import LooseVersion
++        from looseversion import LooseVersion
+         if LooseVersion(version) < "0.3":
+             raise Warning("Requires version >=0.3 of reproject. The current "
+                           "version is: {}".format(version))
+diff --git a/spectral_cube/np_compat.py b/spectral_cube/np_compat.py
+index ed4a134..39aa320 100644
+--- a/spectral_cube/np_compat.py
++++ b/spectral_cube/np_compat.py
+@@ -1,7 +1,7 @@
+ from __future__ import print_function, absolute_import, division
+ 
+ import numpy as np
+-from distutils.version import LooseVersion
++from looseversion import LooseVersion
+ 
+ def allbadtonan(function):
+     """
+diff --git a/spectral_cube/spectral_cube.py b/spectral_cube/spectral_cube.py
+index 771a2d4..af752b4 100644
+--- a/spectral_cube/spectral_cube.py
++++ b/spectral_cube/spectral_cube.py
+@@ -57,7 +57,7 @@ from .spectral_axis import (determine_vconv_from_ctype, get_rest_value_from_wcs,
+                             doppler_beta, doppler_gamma, doppler_z)
+ from .io.core import SpectralCubeRead, SpectralCubeWrite
+ 
+-from distutils.version import LooseVersion
++from looseversion import LooseVersion
+ 
+ 
+ __all__ = ['BaseSpectralCube', 'SpectralCube', 'VaryingResolutionSpectralCube']
+@@ -2659,7 +2659,7 @@ class BaseSpectralCube(BaseNDClass, MaskableArrayMixinClass,
+ 
+         reproj_kwargs = kwargs
+         # Need version > 0.2 to work with cubes, >= 0.5 for memmap
+-        from distutils.version import LooseVersion
++        from looseversion import LooseVersion
+         if LooseVersion(version) < "0.5":
+             raise Warning("Requires version >=0.5 of reproject. The current "
+                           "version is: {}".format(version))
+diff --git a/spectral_cube/tests/test_masks.py b/spectral_cube/tests/test_masks.py
+index c38ba27..1d6895d 100644
+--- a/spectral_cube/tests/test_masks.py
++++ b/spectral_cube/tests/test_masks.py
+@@ -14,7 +14,7 @@ from .. import (BooleanArrayMask, LazyMask, LazyComparisonMask,
+                 FunctionMask, CompositeMask)
+ from ..masks import is_broadcastable_and_smaller, dims_to_skip, view_of_subset
+ 
+-from distutils.version import LooseVersion
++from looseversion import LooseVersion
+ 
+ 
+ def test_spectral_cube_mask():
+diff --git a/spectral_cube/tests/test_moments.py b/spectral_cube/tests/test_moments.py
+index 3043dd5..7e05c5b 100644
+--- a/spectral_cube/tests/test_moments.py
++++ b/spectral_cube/tests/test_moments.py
+@@ -1,7 +1,7 @@
+ from __future__ import print_function, absolute_import, division
+ 
+ import warnings
+-from distutils.version import LooseVersion
++from looseversion import LooseVersion
+ 
+ import pytest
+ import numpy as np
+diff --git a/spectral_cube/tests/test_performance.py b/spectral_cube/tests/test_performance.py
+index bdee040..a778abc 100644
+--- a/spectral_cube/tests/test_performance.py
++++ b/spectral_cube/tests/test_performance.py
+@@ -20,7 +20,7 @@ except ImportError:
+ 
+ # The comparison of Quantities in test_memory_usage
+ # fail with older versions of numpy
+-from distutils.version import LooseVersion
++from looseversion import LooseVersion
+ 
+ NPY_VERSION_CHECK = LooseVersion(np.version.version) >= "1.13"
+ 
+diff --git a/spectral_cube/tests/test_regrid.py b/spectral_cube/tests/test_regrid.py
+index 496ddd5..5b1fec7 100644
+--- a/spectral_cube/tests/test_regrid.py
++++ b/spectral_cube/tests/test_regrid.py
+@@ -18,7 +18,7 @@ except ImportError:
+ 
+ # The comparison of Quantities in test_memory_usage
+ # fail with older versions of numpy
+-from distutils.version import LooseVersion
++from looseversion import LooseVersion
+ 
+ NPY_VERSION_CHECK = LooseVersion(np.version.version) >= "1.13"
+ 
+diff --git a/spectral_cube/tests/test_spectral_cube.py b/spectral_cube/tests/test_spectral_cube.py
+index 9ebeb7d..93e5647 100644
+--- a/spectral_cube/tests/test_spectral_cube.py
++++ b/spectral_cube/tests/test_spectral_cube.py
+@@ -6,7 +6,7 @@ import operator
+ import itertools
+ import warnings
+ import mmap
+-from distutils.version import LooseVersion
++from looseversion import LooseVersion
+ import sys
+ 
+ import pytest
+diff --git a/spectral_cube/tests/test_subcubes.py b/spectral_cube/tests/test_subcubes.py
+index 6f74f68..217c324 100644
+--- a/spectral_cube/tests/test_subcubes.py
++++ b/spectral_cube/tests/test_subcubes.py
+@@ -1,7 +1,7 @@
+ from __future__ import print_function, absolute_import, division
+ 
+ import pytest
+-from distutils.version import LooseVersion
++from looseversion import LooseVersion
+ 
+ from astropy import units as u
+ from astropy import wcs
+diff --git a/spectral_cube/tests/test_visualization.py b/spectral_cube/tests/test_visualization.py
+index 85ea038..0ac8d58 100644
+--- a/spectral_cube/tests/test_visualization.py
++++ b/spectral_cube/tests/test_visualization.py
+@@ -1,7 +1,7 @@
+ from __future__ import print_function, absolute_import, division
+ 
+ import pytest
+-from distutils.version import LooseVersion
++from looseversion import LooseVersion
+ 
+ from .test_spectral_cube import cube_and_raw
+ 
diff --git a/pkgs/development/python-modules/speechbrain/default.nix b/pkgs/development/python-modules/speechbrain/default.nix
index 2a91b2b0b100d..0d31dd6d23f66 100644
--- a/pkgs/development/python-modules/speechbrain/default.nix
+++ b/pkgs/development/python-modules/speechbrain/default.nix
@@ -1,34 +1,34 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, huggingface-hub
-, hyperpyyaml
-, joblib
-, lib
-, numpy
-, packaging
-, pythonOlder
-, sentencepiece
-, scipy
-, torch
-, torchaudio
-, tqdm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # dependencies
+  huggingface-hub,
+  hyperpyyaml,
+  joblib,
+  numpy,
+  packaging,
+  sentencepiece,
+  scipy,
+  torch,
+  torchaudio,
+  tqdm,
 }:
 
 buildPythonPackage rec {
   pname = "speechbrain";
-  version = "1.0.0";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.7";
+  version = "1.0.1";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "speechbrain";
     repo = "speechbrain";
     rev = "refs/tags/v${version}";
-    hash = "sha256-s23RHxqr+ZCWPYNchFpyYa01mY+Bum3thgNbJP8rAmA=";
+    hash = "sha256-JoVu53HuTPkUIyJGqLE80yu7jzPje8/r5Hk6lJsz2XA=";
   };
 
-  propagatedBuildInputs = [
+  dependencies = [
     huggingface-hub
     hyperpyyaml
     joblib
@@ -45,11 +45,11 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "speechbrain" ];
 
-  meta = with lib; {
-    description = "A PyTorch-based Speech Toolkit";
+  meta = {
+    description = "PyTorch-based Speech Toolkit";
     homepage = "https://speechbrain.github.io";
     changelog = "https://github.com/speechbrain/speechbrain/releases/tag/v${version}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/speechrecognition/default.nix b/pkgs/development/python-modules/speechrecognition/default.nix
index a6e839ead5ce9..8629af8a075f5 100644
--- a/pkgs/development/python-modules/speechrecognition/default.nix
+++ b/pkgs/development/python-modules/speechrecognition/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, pytestCheckHook
-, pythonOlder
-, torch
-, requests
-, setuptools
-, soundfile
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  torch,
+  requests,
+  setuptools,
+  soundfile,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "speechrecognition";
-  version = "3.10.3";
+  version = "3.10.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -22,12 +23,10 @@ buildPythonPackage rec {
     owner = "Uberi";
     repo = "speech_recognition";
     rev = "refs/tags/${version}";
-    hash = "sha256-g2DE3u2nuJHqWA2X8S6zw5nUVS1yvSqO0VI3zKoIUgg=";
+    hash = "sha256-icXZUg2lVLo8Z5t9ptDj67BjQLnEgrG8geYZ/lZeJt4=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     requests
@@ -41,9 +40,7 @@ buildPythonPackage rec {
     soundfile
   ];
 
-  pythonImportsCheck = [
-    "speech_recognition"
-  ];
+  pythonImportsCheck = [ "speech_recognition" ];
 
   disabledTests = [
     # Test files are missing in source
@@ -57,7 +54,11 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Speech recognition module for Python, supporting several engines and APIs, online and offline";
     homepage = "https://github.com/Uberi/speech_recognition";
-    license = with licenses; [ gpl2Only bsd3 ];
+    changelog = "https://github.com/Uberi/speech_recognition/releases/tag/${version}";
+    license = with licenses; [
+      gpl2Only
+      bsd3
+    ];
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/speedtest-cli/default.nix b/pkgs/development/python-modules/speedtest-cli/default.nix
index d91edda3a546a..3a995087f7d0e 100644
--- a/pkgs/development/python-modules/speedtest-cli/default.nix
+++ b/pkgs/development/python-modules/speedtest-cli/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 # cannot be built as pythonApplication because the library functions are
@@ -22,6 +23,9 @@ buildPythonPackage rec {
     description = "Command line interface for testing internet bandwidth using speedtest.net";
     homepage = "https://github.com/sivel/speedtest-cli";
     license = licenses.asl20;
-    maintainers = with maintainers; [ makefu domenkozar ];
+    maintainers = with maintainers; [
+      makefu
+      domenkozar
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/speg/default.nix b/pkgs/development/python-modules/speg/default.nix
index 93ae40d326038..1ec6bc84493d1 100644
--- a/pkgs/development/python-modules/speg/default.nix
+++ b/pkgs/development/python-modules/speg/default.nix
@@ -1,7 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, speg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +21,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A PEG-based parser interpreter with memoization (in time)";
+    description = "PEG-based parser interpreter with memoization (in time)";
     homepage = "https://github.com/avakar/speg";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ xworld21 ];
diff --git a/pkgs/development/python-modules/spglib/default.nix b/pkgs/development/python-modules/spglib/default.nix
index 2939ab51989c7..bebf413b2b58e 100644
--- a/pkgs/development/python-modules/spglib/default.nix
+++ b/pkgs/development/python-modules/spglib/default.nix
@@ -1,31 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-
-# build-system
-, scikit-build-core
-, cmake
-, pathspec
-, ninja
-, pyproject-metadata
-, setuptools-scm
-
-# dependencies
-, numpy
-
-# tests
-, pytestCheckHook
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+
+  # build-system
+  scikit-build-core,
+  cmake,
+  pathspec,
+  ninja,
+  pyproject-metadata,
+  setuptools-scm,
+
+  # dependencies
+  numpy,
+
+  # tests
+  pytestCheckHook,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
   pname = "spglib";
-  version = "2.3.1";
+  version = "2.5.0";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-c24l7GfCIMsg+rcBfE/mOC7t7iIwdtV/QEc0KxvGjOM=";
+    hash = "sha256-+LtjiJe+kbnb1MCF2f3h9pBI9ZSeIPODLLlDjldBjUs=";
   };
 
   nativeBuildInputs = [
@@ -39,18 +40,20 @@ buildPythonPackage rec {
 
   dontUseCmakeConfigure = true;
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  postPatch = ''
+    # relax v2 constrain in [build-system] intended for binary backward compat
+    substituteInPlace pyproject.toml \
+      --replace-fail "numpy~=2.0" "numpy"
+  '';
+
+  propagatedBuildInputs = [ numpy ];
 
   nativeCheckInputs = [
     pytestCheckHook
     pyyaml
   ];
 
-  pythonImportsCheck = [
-    "spglib"
-  ];
+  pythonImportsCheck = [ "spglib" ];
 
   meta = with lib; {
     description = "Python bindings for C library for finding and handling crystal symmetries";
diff --git a/pkgs/development/python-modules/sphfile/default.nix b/pkgs/development/python-modules/sphfile/default.nix
index 99e366a5c29a7..806f39efa63b3 100644
--- a/pkgs/development/python-modules/sphfile/default.nix
+++ b/pkgs/development/python-modules/sphfile/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchurl, buildPythonPackage, numpy }:
+{
+  lib,
+  fetchurl,
+  buildPythonPackage,
+  numpy,
+}:
 
 buildPythonPackage rec {
   pname = "sphfile";
@@ -16,9 +21,9 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Numpy-based NIST SPH audio-file reader";
-    homepage    = "https://github.com/mcfletch/sphfile";
-    license     = licenses.mit;
+    homepage = "https://github.com/mcfletch/sphfile";
+    license = licenses.mit;
     maintainers = with maintainers; [ abbradar ];
-    platforms   = platforms.unix;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/sphinx-argparse/default.nix b/pkgs/development/python-modules/sphinx-argparse/default.nix
index 7ab3ae03c3433..8a88c346dbac4 100644
--- a/pkgs/development/python-modules/sphinx-argparse/default.nix
+++ b/pkgs/development/python-modules/sphinx-argparse/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -24,18 +25,14 @@ buildPythonPackage rec {
       --replace "if action_group.title == 'optional arguments':" "if action_group.title == 'optional arguments' or action_group.title == 'options':"
   '';
 
-  propagatedBuildInputs = [
-    sphinx
-  ];
+  propagatedBuildInputs = [ sphinx ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "sphinxarg" ];
 
   meta = {
-    description = "A sphinx extension that automatically documents argparse commands and options";
+    description = "Sphinx extension that automatically documents argparse commands and options";
     homepage = "https://github.com/ashb/sphinx-argparse";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ clacke ];
diff --git a/pkgs/development/python-modules/sphinx-autoapi/default.nix b/pkgs/development/python-modules/sphinx-autoapi/default.nix
index ca80a717ba545..1da00715ba974 100644
--- a/pkgs/development/python-modules/sphinx-autoapi/default.nix
+++ b/pkgs/development/python-modules/sphinx-autoapi/default.nix
@@ -1,63 +1,61 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, astroid
-, anyascii
-, jinja2
-, pyyaml
-, sphinx
+  # dependencies
+  astroid,
+  jinja2,
+  pyyaml,
+  sphinx,
+  stdlib-list,
 
-# tests
-, beautifulsoup4
-, mock
-, pytestCheckHook
+  # tests
+  beautifulsoup4,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "sphinx-autoapi";
-  version = "3.0.0";
-  format = "pyproject";
+  version = "3.3.2";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-CevWdKMrREZyIrD7ipF7l8iVI/INvwW1LLij8OFXFN4=";
+    pname = "sphinx_autoapi";
+    inherit version;
+    hash = "sha256-6/i0Sy66tcKPAmPsbC+KzdFW6bLVOaWOyjnS82hEUXM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    anyascii
-    astroid
-    jinja2
-    pyyaml
-    sphinx
-  ];
+  dependencies =
+    [
+      astroid
+      jinja2
+      pyyaml
+      sphinx
+    ]
+    ++ lib.optionals (pythonOlder "3.10") [
+      stdlib-list
+    ];
 
   nativeCheckInputs = [
     beautifulsoup4
-    mock
     pytestCheckHook
   ];
 
   disabledTests = [
-    # failing typing assertions
+    # require network access
     "test_integration"
-    "test_annotations"
   ];
 
-  pythonImportsCheck = [
-    "autoapi"
-  ];
+  pythonImportsCheck = [ "autoapi" ];
 
   meta = with lib; {
     homepage = "https://github.com/readthedocs/sphinx-autoapi";
diff --git a/pkgs/development/python-modules/sphinx-autobuild/default.nix b/pkgs/development/python-modules/sphinx-autobuild/default.nix
index d4ad4cedab8cf..b802384ae133d 100644
--- a/pkgs/development/python-modules/sphinx-autobuild/default.nix
+++ b/pkgs/development/python-modules/sphinx-autobuild/default.nix
@@ -1,35 +1,47 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, colorama
-, sphinx
-, livereload
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  flit-core,
+
+  # dependencies
+  colorama,
+  sphinx,
+  starlette,
+  uvicorn,
+  watchfiles,
+  websockets,
+
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "sphinx-autobuild";
-  version = "2024.2.4";
+  version = "2024.04.16";
   pyproject = true;
 
-  src = fetchPypi {
-    pname = "sphinx_autobuild";
-    inherit version;
-    hash = "sha256-y50hIaF21i1FRxYkhyr8X613Va1mJzir5ADs9KeVQwM=";
+  src = fetchFromGitHub {
+    owner = "sphinx-doc";
+    repo = "sphinx-autobuild";
+    rev = "refs/tags/${version}";
+    hash = "sha256-5HgRqt2ZTGcQ6X2sZN0gRfahmwlqpDbae5gOnGa02L0=";
   };
 
-  build-system = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
   dependencies = [
     colorama
     sphinx
-    livereload
+    starlette
+    uvicorn
+    watchfiles
+    websockets
   ];
 
-  # No tests included.
-  doCheck = false;
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "sphinx_autobuild" ];
 
@@ -38,6 +50,6 @@ buildPythonPackage rec {
     mainProgram = "sphinx-autobuild";
     homepage = "https://github.com/sphinx-doc/sphinx-autobuild";
     license = with licenses; [ mit ];
-    maintainers = with maintainers; [holgerpeters];
+    maintainers = with maintainers; [ holgerpeters ];
   };
 }
diff --git a/pkgs/development/python-modules/sphinx-autodoc-typehints/default.nix b/pkgs/development/python-modules/sphinx-autodoc-typehints/default.nix
index e5bba673e4ce1..7d3030c7226a8 100644
--- a/pkgs/development/python-modules/sphinx-autodoc-typehints/default.nix
+++ b/pkgs/development/python-modules/sphinx-autodoc-typehints/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatch-vcs
-, hatchling
-, pythonOlder
-, sphinx
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatch-vcs,
+  hatchling,
+  pythonOlder,
+  sphinx,
+  pytestCheckHook,
 }:
 
 let
   pname = "sphinx-autodoc-typehints";
-  version = "2.0.0";
+  version = "2.1.1";
 in
 
 buildPythonPackage {
@@ -22,7 +23,7 @@ buildPythonPackage {
   src = fetchPypi {
     pname = "sphinx_autodoc_typehints";
     inherit version;
-    hash = "sha256-fyzawucP2Xh5Jrbp5UHNTe0eg40rRv2iobsKdexbfzo=";
+    hash = "sha256-AHK2X1qygYwinW1sLMmTdwr1XTa7e/sWAB4vzk0UiAw=";
   };
 
   nativeBuildInputs = [
@@ -30,20 +31,14 @@ buildPythonPackage {
     hatchling
   ];
 
-  propagatedBuildInputs = [
-    sphinx
-  ];
+  propagatedBuildInputs = [ sphinx ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # requires spobjinv, nbtyping
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sphinx_autodoc_typehints"
-  ];
+  pythonImportsCheck = [ "sphinx_autodoc_typehints" ];
 
   meta = with lib; {
     changelog = "https://github.com/tox-dev/sphinx-autodoc-typehints/releases/tag/${version}";
diff --git a/pkgs/development/python-modules/sphinx-automodapi/default.nix b/pkgs/development/python-modules/sphinx-automodapi/default.nix
index e8e888204113b..371be354dc70f 100644
--- a/pkgs/development/python-modules/sphinx-automodapi/default.nix
+++ b/pkgs/development/python-modules/sphinx-automodapi/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchurl
-, pythonOlder
-, setuptools-scm
-, git
-, sphinx
-, pytestCheckHook
-, cython
-, gcc
-, graphviz
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchurl,
+  pythonOlder,
+  setuptools-scm,
+  git,
+  sphinx,
+  pytestCheckHook,
+  cython,
+  gcc,
+  graphviz,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/sphinx-basic-ng/default.nix b/pkgs/development/python-modules/sphinx-basic-ng/default.nix
index 990be1979b4e2..9afde893cfde9 100644
--- a/pkgs/development/python-modules/sphinx-basic-ng/default.nix
+++ b/pkgs/development/python-modules/sphinx-basic-ng/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-MHBGIKOKhGklrx3O075LRud8NhY2hzlTWh+jalrFpko=";
   };
 
-  propagatedBuildInputs = [
-    sphinx
-  ];
+  propagatedBuildInputs = [ sphinx ];
 
   # no tests implemented
   doCheck = false;
@@ -28,7 +27,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "sphinx_basic_ng" ];
 
   meta = with lib; {
-    description = "A modernised skeleton for Sphinx themes";
+    description = "Modernised skeleton for Sphinx themes";
     homepage = "https://sphinx-basic-ng.readthedocs.io/en/latest/";
     license = licenses.mit;
     maintainers = with maintainers; [ Luflosi ];
diff --git a/pkgs/development/python-modules/sphinx-better-theme/default.nix b/pkgs/development/python-modules/sphinx-better-theme/default.nix
index 8000c8bbb820f..130f96e3b78c2 100644
--- a/pkgs/development/python-modules/sphinx-better-theme/default.nix
+++ b/pkgs/development/python-modules/sphinx-better-theme/default.nix
@@ -1,10 +1,18 @@
-{ lib, buildPythonPackage, fetchFromGitHub, sphinxHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  sphinxHook,
+}:
 
 buildPythonPackage rec {
   pname = "sphinx-better-theme";
   version = "0.1.5";
   format = "setuptools";
-  outputs = [ "out" "doc" ];
+  outputs = [
+    "out"
+    "doc"
+  ];
 
   src = fetchFromGitHub {
     owner = "irskep";
diff --git a/pkgs/development/python-modules/sphinx-book-theme/default.nix b/pkgs/development/python-modules/sphinx-book-theme/default.nix
index ce8ce4e226b0d..15d4262b69697 100644
--- a/pkgs/development/python-modules/sphinx-book-theme/default.nix
+++ b/pkgs/development/python-modules/sphinx-book-theme/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, sphinx
-, pydata-sphinx-theme
-, jupyter-book
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  sphinx,
+  pydata-sphinx-theme,
+  jupyter-book,
 }:
 
 buildPythonPackage rec {
   pname = "sphinx-book-theme";
-  version = "1.1.2";
+  version = "1.1.3";
 
   format = "wheel";
 
@@ -20,7 +21,7 @@ buildPythonPackage rec {
     dist = "py3";
     python = "py3";
     pname = "sphinx_book_theme";
-    hash = "sha256-zudERm/eSPUDArhRKRsgiqZ+cmyjG3o7+5tuahRWY+A=";
+    hash = "sha256-pVSpp6w4gZeah6KxD2M6oqVwbnIhihD3G+OLPJ6DGuk=";
   };
 
   propagatedBuildInputs = [
@@ -28,19 +29,17 @@ buildPythonPackage rec {
     sphinx
   ];
 
-  pythonImportsCheck = [
-    "sphinx_book_theme"
-  ];
+  pythonImportsCheck = [ "sphinx_book_theme" ];
 
   passthru.tests = {
     inherit jupyter-book;
   };
 
   meta = with lib; {
-    description = "A clean book theme for scientific explanations and documentation with Sphinx";
+    description = "Clean book theme for scientific explanations and documentation with Sphinx";
     homepage = "https://github.com/executablebooks/sphinx-book-theme";
     changelog = "https://github.com/executablebooks/sphinx-book-theme/raw/v${version}/CHANGELOG.md";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sphinx-codeautolink/default.nix b/pkgs/development/python-modules/sphinx-codeautolink/default.nix
index 6b024d4fd83bf..f41f3b38c7227 100644
--- a/pkgs/development/python-modules/sphinx-codeautolink/default.nix
+++ b/pkgs/development/python-modules/sphinx-codeautolink/default.nix
@@ -1,31 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-# documentation build dependencies
-, sphinxHook
-, sphinx-rtd-theme
-, matplotlib
-, ipython
-# runtime dependencies
-, sphinx
-, beautifulsoup4
-# check dependencies
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  # documentation build dependencies
+  sphinxHook,
+  sphinx-rtd-theme,
+  matplotlib,
+  ipython,
+  # runtime dependencies
+  sphinx,
+  beautifulsoup4,
+  # check dependencies
+  pytest,
 }:
 
 buildPythonPackage rec {
   pname = "sphinx-codeautolink";
-  version = "0.15.1";
+  version = "0.15.2";
   format = "pyproject";
 
-  outputs = [ "out" "doc" ];
+  outputs = [
+    "out"
+    "doc"
+  ];
 
   src = fetchFromGitHub {
     owner = "felix-hilden";
     repo = "sphinx-codeautolink";
     rev = "refs/tags/v${version}";
-    hash = "sha256-BnGcLAM/KK8Ub+GmRY1oatUCyP4hvY2O1WTjLHBebpw=";
+    hash = "sha256-h1lteF5a3ga1VlhXCz2biydli3sg3ktPbz0O5n0eeFI=";
   };
 
   nativeBuildInputs = [
@@ -38,14 +42,17 @@ buildPythonPackage rec {
 
   sphinxRoot = "docs/src";
 
-  propagatedBuildInputs = [ sphinx beautifulsoup4 ];
+  propagatedBuildInputs = [
+    sphinx
+    beautifulsoup4
+  ];
 
   nativeCheckInputs = [ pytest ];
 
   pythonImportsCheck = [ "sphinx_codeautolink" ];
 
   meta = with lib; {
-    description = "A sphinx extension that makes code examples clickable";
+    description = "Sphinx extension that makes code examples clickable";
     homepage = "https://github.com/felix-hilden/sphinx-codeautolink";
     license = licenses.mit;
     maintainers = with maintainers; [ kaction ];
diff --git a/pkgs/development/python-modules/sphinx-comments/default.nix b/pkgs/development/python-modules/sphinx-comments/default.nix
index 03a6461174cc1..65dedffdfacbb 100644
--- a/pkgs/development/python-modules/sphinx-comments/default.nix
+++ b/pkgs/development/python-modules/sphinx-comments/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -25,6 +26,6 @@ buildPythonPackage rec {
     description = "Add comments and annotation to your documentation";
     homepage = "https://github.com/executablebooks/sphinx-comments";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sphinx-copybutton/default.nix b/pkgs/development/python-modules/sphinx-copybutton/default.nix
index 5a765e7c120c5..67216681b75e3 100644
--- a/pkgs/development/python-modules/sphinx-copybutton/default.nix
+++ b/pkgs/development/python-modules/sphinx-copybutton/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,14 @@ buildPythonPackage rec {
     fetchSubmodules = true;
   };
 
-  propagatedBuildInputs = [
-    sphinx
-  ];
+  propagatedBuildInputs = [ sphinx ];
 
   doCheck = false; # no tests
 
   pythonImportsCheck = [ "sphinx_copybutton" ];
 
   meta = with lib; {
-    description = "A small sphinx extension to add a \"copy\" button to code blocks";
+    description = "Small sphinx extension to add a \"copy\" button to code blocks";
     homepage = "https://github.com/executablebooks/sphinx-copybutton";
     license = licenses.mit;
     maintainers = with maintainers; [ Luflosi ];
diff --git a/pkgs/development/python-modules/sphinx-design/default.nix b/pkgs/development/python-modules/sphinx-design/default.nix
index 49883dc65760e..032caf4a0e83a 100644
--- a/pkgs/development/python-modules/sphinx-design/default.nix
+++ b/pkgs/development/python-modules/sphinx-design/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, flit-core
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  flit-core,
+  sphinx,
 }:
 
 buildPythonPackage rec {
   pname = "sphinx-design";
-  version = "0.5.0";
+  version = "0.6.1";
 
   format = "pyproject";
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit version;
     pname = "sphinx_design";
-    hash = "sha256-6OUTrOpvktFcbeOzTpVEWPJFuOdhtFtjlQ9lNzNSqwA=";
+    hash = "sha256-tE7qNxk4bQTXZcGoJXysorPm+EIdezpedCwP1F+E5jI=";
   };
 
   nativeBuildInputs = [ flit-core ];
@@ -27,10 +28,10 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "sphinx_design" ];
 
   meta = with lib; {
-    description = "A sphinx extension for designing beautiful, view size responsive web components";
+    description = "Sphinx extension for designing beautiful, view size responsive web components";
     homepage = "https://github.com/executablebooks/sphinx-design";
     changelog = "https://github.com/executablebooks/sphinx-design/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sphinx-external-toc/default.nix b/pkgs/development/python-modules/sphinx-external-toc/default.nix
index fa676391daede..ab45c1b8bfaf4 100644
--- a/pkgs/development/python-modules/sphinx-external-toc/default.nix
+++ b/pkgs/development/python-modules/sphinx-external-toc/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, flit-core
-, click
-, pyyaml
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  flit-core,
+  click,
+  pyyaml,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     inherit version;
     pname = "sphinx_external_toc";
-    sha256 = "sha256-p9LGPMR+xohUZEOyi8TvRmEhgn7z3Hu1Cd41S61OouA=";
+    hash = "sha256-p9LGPMR+xohUZEOyi8TvRmEhgn7z3Hu1Cd41S61OouA=";
   };
 
   nativeBuildInputs = [ flit-core ];
@@ -33,11 +34,11 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "sphinx_external_toc" ];
 
   meta = with lib; {
-    description = "A sphinx extension that allows the site-map to be defined in a single YAML file";
+    description = "Sphinx extension that allows the site-map to be defined in a single YAML file";
     mainProgram = "sphinx-etoc";
     homepage = "https://github.com/executablebooks/sphinx-external-toc";
     changelog = "https://github.com/executablebooks/sphinx-external-toc/raw/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sphinx-fortran/default.nix b/pkgs/development/python-modules/sphinx-fortran/default.nix
index b4e2b7dd6e4f4..e01342e8e6eb8 100644
--- a/pkgs/development/python-modules/sphinx-fortran/default.nix
+++ b/pkgs/development/python-modules/sphinx-fortran/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, future
-, numpy
-, sphinx
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  future,
+  numpy,
+  sphinx,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
   # Tests are failing because reference files are not updated
   doCheck = false;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Fortran domain and autodoc extensions to Sphinx";
diff --git a/pkgs/development/python-modules/sphinx-hoverxref/default.nix b/pkgs/development/python-modules/sphinx-hoverxref/default.nix
index d6237387bf88c..643e3111311d1 100644
--- a/pkgs/development/python-modules/sphinx-hoverxref/default.nix
+++ b/pkgs/development/python-modules/sphinx-hoverxref/default.nix
@@ -1,28 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pythonImportsCheckHook
-# documentation build dependencies
-, sphinxHook
-, sphinx-notfound-page
-, sphinx-prompt
-, sphinx-rtd-theme
-, sphinx-tabs
-, sphinx-version-warning
-, sphinx-autoapi
-, sphinxcontrib-bibtex
-, sphinxemoji
-# runtime dependencies
-, sphinx
-, sphinxcontrib-jquery
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pythonImportsCheckHook,
+  # documentation build dependencies
+  sphinxHook,
+  sphinx-notfound-page,
+  sphinx-prompt,
+  sphinx-rtd-theme,
+  sphinx-tabs,
+  sphinx-version-warning,
+  sphinx-autoapi,
+  sphinxcontrib-bibtex,
+  sphinxemoji,
+  # runtime dependencies
+  sphinx,
+  sphinxcontrib-jquery,
 }:
 
 buildPythonPackage rec {
   pname = "sphinx-hoverxref";
   version = "1.3.0";
   format = "pyproject";
-  outputs = [ "out" "doc" ];
+  outputs = [
+    "out"
+    "doc"
+  ];
 
   src = fetchFromGitHub {
     owner = "readthedocs";
@@ -46,12 +50,15 @@ buildPythonPackage rec {
     sphinxemoji
   ];
 
-  propagatedBuildInputs = [ sphinx sphinxcontrib-jquery ];
+  propagatedBuildInputs = [
+    sphinx
+    sphinxcontrib-jquery
+  ];
 
   pythonImportsCheck = [ "hoverxref" ];
 
   meta = with lib; {
-    description = "A sphinx extension for creating tooltips on the cross references of the documentation";
+    description = "Sphinx extension for creating tooltips on the cross references of the documentation";
     longDescription = ''
       sphinx-hoverxref is a Sphinx extension to show a floating window
       (tooltips or modal dialogues) on the cross references of the
diff --git a/pkgs/development/python-modules/sphinx-inline-tabs/default.nix b/pkgs/development/python-modules/sphinx-inline-tabs/default.nix
index 0f44efae97962..5a36420dc4306 100644
--- a/pkgs/development/python-modules/sphinx-inline-tabs/default.nix
+++ b/pkgs/development/python-modules/sphinx-inline-tabs/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-1oZheHDNOQU0vWL3YClQrJe94WyUJ72bCAF1UKtjJ0w=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    sphinx
-  ];
+  propagatedBuildInputs = [ sphinx ];
 
   # no tests, see https://github.com/pradyunsg/sphinx-inline-tabs/issues/6
   doCheck = false;
diff --git a/pkgs/development/python-modules/sphinx-intl/default.nix b/pkgs/development/python-modules/sphinx-intl/default.nix
index 1fdf937ae6504..3d17e1256a492 100644
--- a/pkgs/development/python-modules/sphinx-intl/default.nix
+++ b/pkgs/development/python-modules/sphinx-intl/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, transifex-cli
-, babel
-, click
-, setuptools
-, sphinx
-, pytestCheckHook
-, mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  transifex-cli,
+  babel,
+  click,
+  setuptools,
+  sphinx,
+  pytestCheckHook,
+  mock,
 }:
 
 buildPythonPackage rec {
   pname = "sphinx-intl";
-  version = "2.1.0";
-  format = "setuptools";
+  version = "2.2.0";
+  format = "pyproject";
 
- src = fetchFromGitHub {
+  src = fetchFromGitHub {
     owner = "sphinx-doc";
     repo = pname;
     rev = version;
-    hash = "sha256-U/YCviGrsZNruVzfP0P2dGcB0K0Afh+XUZtp71OeP6c=";
+    hash = "sha256-4sFKrUSk8DqPbEM+Q3cRijXyxRSIdkIEAI/mAmB0wB0=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/sphinx-issues/default.nix b/pkgs/development/python-modules/sphinx-issues/default.nix
index 9cf4b680c7cd5..ea8f4268fb973 100644
--- a/pkgs/development/python-modules/sphinx-issues/default.nix
+++ b/pkgs/development/python-modules/sphinx-issues/default.nix
@@ -1,10 +1,19 @@
-{ lib, buildPythonPackage, sphinx, fetchFromGitHub, pandoc }:
+{
+  lib,
+  buildPythonPackage,
+  sphinx,
+  fetchFromGitHub,
+  pandoc,
+}:
 
 buildPythonPackage rec {
   pname = "sphinx-issues";
   version = "3.0.1";
   format = "setuptools";
-  outputs = [ "out" "doc" ];
+  outputs = [
+    "out"
+    "doc"
+  ];
 
   src = fetchFromGitHub {
     owner = "sloria";
@@ -30,7 +39,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/sloria/sphinx-issues";
-    description = "Sphinx extension for linking to your project's issue tracker.";
+    description = "Sphinx extension for linking to your project's issue tracker";
     license = licenses.mit;
     maintainers = with maintainers; [ kaction ];
   };
diff --git a/pkgs/development/python-modules/sphinx-jinja/default.nix b/pkgs/development/python-modules/sphinx-jinja/default.nix
index c557325cd376c..7627dddd4ba54 100644
--- a/pkgs/development/python-modules/sphinx-jinja/default.nix
+++ b/pkgs/development/python-modules/sphinx-jinja/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder, sphinx }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  sphinx,
+}:
 
 buildPythonPackage rec {
   pname = "sphinx-jinja";
@@ -22,7 +28,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Sphinx extension to include jinja templates in documentation";
     homepage = "https://github.com/tardyp/sphinx-jinja";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/sphinx-jupyterbook-latex/default.nix b/pkgs/development/python-modules/sphinx-jupyterbook-latex/default.nix
index 3d015a15f44ac..0df375058c153 100644
--- a/pkgs/development/python-modules/sphinx-jupyterbook-latex/default.nix
+++ b/pkgs/development/python-modules/sphinx-jupyterbook-latex/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, flit-core
-, packaging
-, sphinx
-, click
-, myst-parser
-, pytest-regressions
-, pytestCheckHook
-, sphinx-external-toc
-, sphinxcontrib-bibtex
-, texsoup
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  flit-core,
+  packaging,
+  sphinx,
+  click,
+  myst-parser,
+  pytest-regressions,
+  pytestCheckHook,
+  sphinx-external-toc,
+  sphinxcontrib-bibtex,
+  texsoup,
+  defusedxml,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +30,7 @@ buildPythonPackage rec {
     hash = "sha256-ZTR+s6a/++xXrLMtfFRmSmAeMWa/1de12ukxfsx85g4=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     packaging
@@ -47,6 +47,7 @@ buildPythonPackage rec {
     sphinx-external-toc
     sphinxcontrib-bibtex
     texsoup
+    defusedxml
   ];
 
   meta = with lib; {
@@ -54,6 +55,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/executablebooks/sphinx-jupyterbook-latex";
     changelog = "https://github.com/executablebooks/sphinx-jupyterbook-latex/raw/v${version}/CHANGELOG.md";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sphinx-markdown-parser/default.nix b/pkgs/development/python-modules/sphinx-markdown-parser/default.nix
index b67667ca804d0..a8409208c4938 100644
--- a/pkgs/development/python-modules/sphinx-markdown-parser/default.nix
+++ b/pkgs/development/python-modules/sphinx-markdown-parser/default.nix
@@ -1,21 +1,21 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, commonmark
-, fetchFromGitHub
-, markdown
-, pydash
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, recommonmark
-, setuptools
-, sphinx
-, unify
-, yapf
+{
+  lib,
+  buildPythonPackage,
+  commonmark,
+  fetchFromGitHub,
+  markdown,
+  pydash,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  recommonmark,
+  setuptools,
+  sphinx,
+  unify,
+  yapf,
 }:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "sphinx-markdown-parser";
   version = "0.2.4";
   pyproject = true;
@@ -31,9 +31,7 @@ buildPythonPackage rec {
     sha256 = "0i0hhapmdmh83yx61lxi2h4bsmhnzddamz95844g2ghm132kw5mv";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     commonmark
@@ -45,17 +43,11 @@ buildPythonPackage rec {
     yapf
   ];
 
-  buildInputs = [
-    sphinx
-  ];
+  buildInputs = [ sphinx ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "sphinx_markdown_parser"
-  ];
+  pythonImportsCheck = [ "sphinx_markdown_parser" ];
 
   disabledTests = [
     # AssertionError
@@ -69,6 +61,5 @@ buildPythonPackage rec {
     homepage = "https://github.com/clayrisser/sphinx-markdown-parser";
     license = licenses.mit;
     maintainers = with maintainers; [ FlorianFranzen ];
-    broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/sphinx-markdown-tables/default.nix b/pkgs/development/python-modules/sphinx-markdown-tables/default.nix
index a560314a29865..6c9d36c69f0c1 100644
--- a/pkgs/development/python-modules/sphinx-markdown-tables/default.nix
+++ b/pkgs/development/python-modules/sphinx-markdown-tables/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, sphinx
-, markdown
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  sphinx,
+  markdown,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/sphinx-material/default.nix b/pkgs/development/python-modules/sphinx-material/default.nix
index 9cbcb31d33478..752c15928d408 100644
--- a/pkgs/development/python-modules/sphinx-material/default.nix
+++ b/pkgs/development/python-modules/sphinx-material/default.nix
@@ -1,19 +1,22 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, css-html-js-minify
-, fetchPypi
-, lxml
-, python-slugify
-, pythonOlder
-, sphinx
-, unidecode
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  css-html-js-minify,
+  fetchPypi,
+  lxml,
+  python-slugify,
+  pythonOlder,
+  setuptools,
+  sphinx,
+  unidecode,
+  versioneer,
 }:
 
 buildPythonPackage rec {
   pname = "sphinx-material";
   version = "0.0.36";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -23,7 +26,17 @@ buildPythonPackage rec {
     hash = "sha256-7v9ffT3AFq8yuv33DGbmcdFch1Tb4GE9+9Yp++2RKGk=";
   };
 
-  propagatedBuildInputs = [
+  postPatch = ''
+    # Remove vendorized versioneer.py
+    rm versioneer.py
+  '';
+
+  build-system = [
+    setuptools
+    versioneer
+  ];
+
+  dependencies = [
     sphinx
     beautifulsoup4
     python-slugify
@@ -32,15 +45,15 @@ buildPythonPackage rec {
     lxml
   ];
 
-  doCheck = false; # no tests
+  # Module has no tests
+  doCheck = false;
 
-  pythonImportsCheck = [
-    "sphinx_material"
-  ];
+  pythonImportsCheck = [ "sphinx_material" ];
 
   meta = with lib; {
-    description = "A material-based, responsive theme inspired by mkdocs-material";
+    description = "Material-based, responsive theme inspired by mkdocs-material";
     homepage = "https://bashtage.github.io/sphinx-material";
+    changelog = "https://github.com/bashtage/sphinx-material/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ FlorianFranzen ];
   };
diff --git a/pkgs/development/python-modules/sphinx-mdinclude/default.nix b/pkgs/development/python-modules/sphinx-mdinclude/default.nix
index 64928f4379081..f938f267eb659 100644
--- a/pkgs/development/python-modules/sphinx-mdinclude/default.nix
+++ b/pkgs/development/python-modules/sphinx-mdinclude/default.nix
@@ -1,33 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build-system
-, flit-core
+  # build-system
+  flit-core,
 
-# dependencies
-, docutils
-, mistune
-, pygments
+  # dependencies
+  docutils,
+  mistune,
+  pygments,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "sphinx-mdinclude";
-  version = "0.5.3";
+  version = "0.6.1";
   format = "pyproject";
 
   src = fetchPypi {
     pname = "sphinx_mdinclude";
     inherit version;
-    hash = "sha256-KZjj0YswIsmYPRtyGR/jfiX/zNVBZcvjrLIszu3ZGvQ=";
+    hash = "sha256-7OPYEuLVWbTn5H9ntqh7Dipom2svURR5XI7Uf/s5wWk=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     docutils
@@ -35,15 +34,13 @@ buildPythonPackage rec {
     pygments
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     broken = true; # https://github.com/omnilib/sphinx-mdinclude/issues/22
     homepage = "https://github.com/omnilib/sphinx-mdinclude";
     changelog = "https://github.com/omnilib/sphinx-mdinclude/blob/v${version}/CHANGELOG.md";
-    description = "Sphinx extension for including or writing pages in Markdown format.";
+    description = "Sphinx extension for including or writing pages in Markdown format";
     longDescription = ''
       A simple Sphinx extension that enables including Markdown documents from within
       reStructuredText.
diff --git a/pkgs/development/python-modules/sphinx-multitoc-numbering/default.nix b/pkgs/development/python-modules/sphinx-multitoc-numbering/default.nix
index 22030c9787dad..66ca1490bacab 100644
--- a/pkgs/development/python-modules/sphinx-multitoc-numbering/default.nix
+++ b/pkgs/development/python-modules/sphinx-multitoc-numbering/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, sphinx
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  sphinx,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,23 +19,17 @@ buildPythonPackage rec {
     hash = "sha256-yWB2caxREjb6XWGnSRwQMecA6NSYydJBjmxh0SUSCa4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    sphinx
-  ];
+  propagatedBuildInputs = [ sphinx ];
 
-  pythonImportsCheck = [
-    "sphinx_multitoc_numbering"
-  ];
+  pythonImportsCheck = [ "sphinx_multitoc_numbering" ];
 
   meta = with lib; {
     description = "Supporting continuous HTML section numbering";
     homepage = "https://github.com/executablebooks/sphinx-multitoc-numbering";
     changelog = "https://github.com/executablebooks/sphinx-multitoc-numbering/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sphinx-notfound-page/default.nix b/pkgs/development/python-modules/sphinx-notfound-page/default.nix
index 0621c2867d03f..58c81240c42a6 100644
--- a/pkgs/development/python-modules/sphinx-notfound-page/default.nix
+++ b/pkgs/development/python-modules/sphinx-notfound-page/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pythonImportsCheckHook
-, pythonOlder
-# documentation build dependencies
-, sphinxHook
-, sphinx-prompt
-, sphinx-rtd-theme
-, sphinx-tabs
-, sphinx-autoapi
-, sphinxemoji
-# runtime dependencies
-, sphinx
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pythonImportsCheckHook,
+  pythonOlder,
+  # documentation build dependencies
+  sphinxHook,
+  sphinx-prompt,
+  sphinx-rtd-theme,
+  sphinx-tabs,
+  sphinx-autoapi,
+  sphinxemoji,
+  # runtime dependencies
+  sphinx,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -46,20 +47,14 @@ buildPythonPackage rec {
     sphinxemoji
   ];
 
-  buildInputs = [
-    sphinx
-  ];
+  buildInputs = [ sphinx ];
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  propagatedBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "notfound"
-  ];
+  pythonImportsCheck = [ "notfound" ];
 
   meta = with lib; {
-    description = "A sphinx extension to create a custom 404 page with absolute URLs hardcoded";
+    description = "Sphinx extension to create a custom 404 page with absolute URLs hardcoded";
     homepage = "https://github.com/readthedocs/sphinx-notfound-page";
     changelog = "https://github.com/readthedocs/sphinx-notfound-page/blob/${version}/CHANGELOG.rst";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/sphinx-prompt/default.nix b/pkgs/development/python-modules/sphinx-prompt/default.nix
index 4d96a831d6263..57fa112da926d 100644
--- a/pkgs/development/python-modules/sphinx-prompt/default.nix
+++ b/pkgs/development/python-modules/sphinx-prompt/default.nix
@@ -1,19 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, poetry-core
-, poetry-dynamic-versioning
+  # build-system
+  poetry-core,
+  poetry-dynamic-versioning,
 
-# dependencies
-, docutils
-, pygments
-, sphinx
+  # dependencies
+  docutils,
+  pygments,
+  sphinx,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -36,7 +36,6 @@ buildPythonPackage rec {
   nativeBuildInputs = [
     poetry-core
     poetry-dynamic-versioning
-    pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = [
@@ -51,15 +50,13 @@ buildPythonPackage rec {
     sphinx
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # versions >=1.8.0 cannot be build from source
   passthru.skipBulkUpdate = true;
 
   meta = with lib; {
-    description = "A sphinx extension for creating unselectable prompt";
+    description = "Sphinx extension for creating unselectable prompt";
     homepage = "https://github.com/sbrunner/sphinx-prompt";
     license = licenses.bsd3;
     maintainers = with maintainers; [ kaction ];
diff --git a/pkgs/development/python-modules/sphinx-pytest/default.nix b/pkgs/development/python-modules/sphinx-pytest/default.nix
index 7bc41418fe46a..9cc950fcad95e 100644
--- a/pkgs/development/python-modules/sphinx-pytest/default.nix
+++ b/pkgs/development/python-modules/sphinx-pytest/default.nix
@@ -1,10 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pytest
-, sphinx
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pytest,
+  sphinx,
+  defusedxml,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,23 +21,16 @@ buildPythonPackage rec {
     hash = "sha256-oSBBt+hSMs4mvGqibQHoYHXr2j/bpsGOnIMfwfTfWKQ=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    sphinx
-  ];
+  propagatedBuildInputs = [ sphinx ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  pythonImportsCheck = [
-    "sphinx_pytest"
-  ];
+  pythonImportsCheck = [ "sphinx_pytest" ];
 
   nativeCheckInputs = [
+    defusedxml
     pytestCheckHook
   ];
 
diff --git a/pkgs/development/python-modules/sphinx-rtd-dark-mode/default.nix b/pkgs/development/python-modules/sphinx-rtd-dark-mode/default.nix
index dbe40c0fcafd1..863f93848846d 100644
--- a/pkgs/development/python-modules/sphinx-rtd-dark-mode/default.nix
+++ b/pkgs/development/python-modules/sphinx-rtd-dark-mode/default.nix
@@ -1,10 +1,11 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, pynose
-, setuptools
-, sphinx
-, sphinx-rtd-theme
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pytestCheckHook,
+  setuptools,
+  sphinx,
+  sphinx-rtd-theme,
 }:
 
 buildPythonPackage rec {
@@ -19,33 +20,21 @@ buildPythonPackage rec {
     hash = "sha256-N5KG2Wqn9wfGNY3VH4FnBce1aZUbnvVmwD10Loe0Qn4=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    sphinx-rtd-theme
-  ];
+  dependencies = [ sphinx-rtd-theme ];
 
   nativeCheckInputs = [
-    pynose
+    pytestCheckHook
     sphinx
   ];
 
-  checkPhase = ''
-    runHook preCheck
-
-    nosetests tests
+  pytestFlagsArray = [ "tests/build.py" ];
 
-    runHook postCheck
-  '';
-
-  pythonImportsCheck = [
-    "sphinx_rtd_dark_mode"
-  ];
+  pythonImportsCheck = [ "sphinx_rtd_dark_mode" ];
 
   meta = with lib; {
-    description = "Adds a toggleable dark mode to the Read the Docs theme for Sphinx.";
+    description = "Adds a toggleable dark mode to the Read the Docs theme for Sphinx";
     homepage = "https://github.com/MrDogeBro/sphinx_rtd_dark_mode";
     changelog = "https://github.com/MrDogeBro/sphinx_rtd_dark_mode/releases/tag/v${version}";
     maintainers = with maintainers; [ wolfgangwalther ];
diff --git a/pkgs/development/python-modules/sphinx-rtd-theme/default.nix b/pkgs/development/python-modules/sphinx-rtd-theme/default.nix
index 1e8e0cd4b1e71..b53a9849ac066 100644
--- a/pkgs/development/python-modules/sphinx-rtd-theme/default.nix
+++ b/pkgs/development/python-modules/sphinx-rtd-theme/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, docutils
-, sphinx
-, readthedocs-sphinx-ext
-, sphinxcontrib-jquery
-, pytestCheckHook
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  docutils,
+  sphinx,
+  readthedocs-sphinx-ext,
+  sphinxcontrib-jquery,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -31,23 +31,23 @@ buildPythonPackage rec {
     sphinxcontrib-jquery
   ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   nativeCheckInputs = [
     pytestCheckHook
     readthedocs-sphinx-ext
   ];
 
+  disabledTests = [
+    # docutils 0.21 compat
+    "test_basic"
+  ];
+
   pythonRelaxDeps = [
     "docutils"
     "sphinxcontrib-jquery"
   ];
 
-  pythonImportsCheck = [
-    "sphinx_rtd_theme"
-  ];
+  pythonImportsCheck = [ "sphinx_rtd_theme" ];
 
   meta = with lib; {
     description = "Sphinx theme for readthedocs.org";
diff --git a/pkgs/development/python-modules/sphinx-serve/default.nix b/pkgs/development/python-modules/sphinx-serve/default.nix
index 729118dd50963..1b0ab4166f272 100644
--- a/pkgs/development/python-modules/sphinx-serve/default.nix
+++ b/pkgs/development/python-modules/sphinx-serve/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/sphinx-sitemap/default.nix b/pkgs/development/python-modules/sphinx-sitemap/default.nix
index b14d669a10c9a..918282c97679e 100644
--- a/pkgs/development/python-modules/sphinx-sitemap/default.nix
+++ b/pkgs/development/python-modules/sphinx-sitemap/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, sphinx
-, sphinx-pytest
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  sphinx,
+  sphinx-pytest,
+  pytestCheckHook,
 }:
 let
   pname = "sphinx-sitemap";
@@ -21,13 +22,9 @@ buildPythonPackage {
     hash = "sha256-R8nAaEPd2vQs9Z0Fa5yvTP0KP3O+DnIJLPeISZ10Xtk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    sphinx
-  ];
+  propagatedBuildInputs = [ sphinx ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/sphinx-tabs/default.nix b/pkgs/development/python-modules/sphinx-tabs/default.nix
index e11db20b64d7a..9b8538408a7df 100644
--- a/pkgs/development/python-modules/sphinx-tabs/default.nix
+++ b/pkgs/development/python-modules/sphinx-tabs/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# build-system
-, setuptools
-
-# documentation build dependencies
-, sphinxHook
-# runtime dependencies
-, sphinx
-, pygments
-, docutils
-# test dependencies
-, pytest
-, beautifulsoup4
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # documentation build dependencies
+  sphinxHook,
+  # runtime dependencies
+  sphinx,
+  pygments,
+  docutils,
+  # test dependencies
+  pytest,
+  beautifulsoup4,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,10 @@ buildPythonPackage rec {
   version = "3.4.5";
   format = "pyproject";
 
-  outputs = [ "out" "doc" ];
+  outputs = [
+    "out"
+    "doc"
+  ];
 
   src = fetchFromGitHub {
     owner = "executablebooks";
@@ -41,14 +45,15 @@ buildPythonPackage rec {
     docutils
   ];
 
-  nativeCheckInputs = [ pytest
+  nativeCheckInputs = [
+    pytest
     beautifulsoup4
   ];
 
   pythonImportsCheck = [ "sphinx_tabs" ];
 
   meta = with lib; {
-    description = "A sphinx extension for creating tabbed content when building HTML.";
+    description = "Sphinx extension for creating tabbed content when building HTML";
     homepage = "https://github.com/executablebooks/sphinx-tabs";
     license = licenses.mit;
     maintainers = with maintainers; [ kaction ];
diff --git a/pkgs/development/python-modules/sphinx-testing/default.nix b/pkgs/development/python-modules/sphinx-testing/default.nix
index 0aaad111f73db..ec2f2055e3332 100644
--- a/pkgs/development/python-modules/sphinx-testing/default.nix
+++ b/pkgs/development/python-modules/sphinx-testing/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mock
-, sphinx
-, six
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  sphinx,
+  six,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,10 +18,19 @@ buildPythonPackage rec {
     sha256 = "ef661775b5722d7b00f67fc229104317d35637a4fb4434bf2c005afdf1da4d09";
   };
 
-  nativeCheckInputs = [ unittestCheckHook mock ];
-  propagatedBuildInputs = [ sphinx six ];
+  nativeCheckInputs = [
+    unittestCheckHook
+    mock
+  ];
+  propagatedBuildInputs = [
+    sphinx
+    six
+  ];
 
-  unittestFlagsArray = [ "-s" "tests" ];
+  unittestFlagsArray = [
+    "-s"
+    "tests"
+  ];
 
   # Test failures https://github.com/sphinx-doc/sphinx-testing/issues/5
   doCheck = false;
diff --git a/pkgs/development/python-modules/sphinx-thebe/default.nix b/pkgs/development/python-modules/sphinx-thebe/default.nix
index a9d3f78c069aa..bae64efe89490 100644
--- a/pkgs/development/python-modules/sphinx-thebe/default.nix
+++ b/pkgs/development/python-modules/sphinx-thebe/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatch-vcs
-, hatchling
-, pythonOlder
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatch-vcs,
+  hatchling,
+  pythonOlder,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -25,19 +26,15 @@ buildPythonPackage rec {
     hatchling
   ];
 
-  propagatedBuildInputs = [
-    sphinx
-  ];
+  propagatedBuildInputs = [ sphinx ];
 
-  pythonImportsCheck = [
-    "sphinx_thebe"
-  ];
+  pythonImportsCheck = [ "sphinx_thebe" ];
 
   meta = with lib; {
     description = "Integrate interactive code blocks into your documentation with Thebe and Binder";
     homepage = "https://github.com/executablebooks/sphinx-thebe";
     changelog = "https://github.com/executablebooks/sphinx-thebe/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sphinx-togglebutton/default.nix b/pkgs/development/python-modules/sphinx-togglebutton/default.nix
index 7416e7d15eba1..4af3ba41ce103 100644
--- a/pkgs/development/python-modules/sphinx-togglebutton/default.nix
+++ b/pkgs/development/python-modules/sphinx-togglebutton/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, wheel
-, docutils
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  wheel,
+  docutils,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -27,14 +28,12 @@ buildPythonPackage rec {
     sphinx
   ];
 
-  pythonImportsCheck = [
-    "sphinx_togglebutton"
-  ];
+  pythonImportsCheck = [ "sphinx_togglebutton" ];
 
   meta = with lib; {
     description = "Toggle page content and collapse admonitions in Sphinx";
     homepage = "https://github.com/executablebooks/sphinx-togglebutton";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sphinx-version-warning/default.nix b/pkgs/development/python-modules/sphinx-version-warning/default.nix
index 7561fcd0dba56..6856bcd4fee7d 100644
--- a/pkgs/development/python-modules/sphinx-version-warning/default.nix
+++ b/pkgs/development/python-modules/sphinx-version-warning/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pythonImportsCheckHook
-, pythonOlder
-, setuptools
-, sphinx
-, sphinx-autoapi
-, sphinx-prompt
-, sphinx-rtd-theme
-, sphinx-tabs
-, sphinxemoji
-, sphinxHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pythonImportsCheckHook,
+  pythonOlder,
+  setuptools,
+  sphinx,
+  sphinx-autoapi,
+  sphinx-prompt,
+  sphinx-rtd-theme,
+  sphinx-tabs,
+  sphinxemoji,
+  sphinxHook,
 }:
 
 # Latest tagged release release "1.1.2" (Nov 2018) does not contain
@@ -56,16 +57,12 @@ buildPythonPackage {
     setuptools
   ];
 
-  buildInputs = [
-    sphinx
-  ];
+  buildInputs = [ sphinx ];
 
-  pythonImportsCheck = [
-    "versionwarning"
-  ];
+  pythonImportsCheck = [ "versionwarning" ];
 
   meta = with lib; {
-    description = "A sphinx extension to show a warning banner at the top of your documentation";
+    description = "Sphinx extension to show a warning banner at the top of your documentation";
     homepage = "https://github.com/humitos/sphinx-version-warning";
     changelog = "https://github.com/humitos/sphinx-version-warning/blob/${version}/CHANGELOG.rst";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/sphinx/default.nix b/pkgs/development/python-modules/sphinx/default.nix
index 43b7ebcd99ee9..16e2a81e50432 100644
--- a/pkgs/development/python-modules/sphinx/default.nix
+++ b/pkgs/development/python-modules/sphinx/default.nix
@@ -1,42 +1,46 @@
-{ lib
-, buildPythonPackage
-, pythonAtLeast
-, pythonOlder
-, fetchFromGitHub
-, isPyPy
+{
+  lib,
+  buildPythonPackage,
+  pythonAtLeast,
+  pythonOlder,
+  fetchFromGitHub,
+  fetchpatch2,
+  isPyPy,
 
-# nativeBuildInputs
-, flit-core
+  # build-system
+  flit-core,
 
-# propagatedBuildInputs
-, babel
-, alabaster
-, docutils
-, imagesize
-, importlib-metadata
-, jinja2
-, packaging
-, pygments
-, requests
-, snowballstemmer
-, sphinxcontrib-applehelp
-, sphinxcontrib-devhelp
-, sphinxcontrib-htmlhelp
-, sphinxcontrib-jsmath
-, sphinxcontrib-qthelp
-, sphinxcontrib-serializinghtml
-, sphinxcontrib-websupport
+  # dependencies
+  babel,
+  alabaster,
+  docutils,
+  imagesize,
+  importlib-metadata,
+  jinja2,
+  packaging,
+  pygments,
+  requests,
+  snowballstemmer,
+  sphinxcontrib-applehelp,
+  sphinxcontrib-devhelp,
+  sphinxcontrib-htmlhelp,
+  sphinxcontrib-jsmath,
+  sphinxcontrib-qthelp,
+  sphinxcontrib-serializinghtml,
+  sphinxcontrib-websupport,
+  tomli,
 
-# check phase
-, filelock
-, html5lib
-, pytestCheckHook
-, pytest-xdist
+  # check phase
+  defusedxml,
+  filelock,
+  html5lib,
+  pytestCheckHook,
+  pytest-xdist,
 }:
 
 buildPythonPackage rec {
   pname = "sphinx";
-  version = "7.2.6";
+  version = "7.3.7";
   format = "pyproject";
   disabled = pythonOlder "3.9";
 
@@ -51,38 +55,46 @@ buildPythonPackage rec {
       mv tests/roots/test-images/{testimäge,testimæge}.png
       sed -i 's/testimäge/testimæge/g' tests/{test_build*.py,roots/test-images/index.rst}
     '';
-    hash = "sha256-IjpRGeGpGfzrEvwIKtuu2l1S74w8W+AbqDOGnWwtRck=";
+    hash = "sha256-XGGRWEvd1SbQsK8W5yxDzBd5hlvXcDzr8t5Qa6skH/M=";
   };
 
-  nativeBuildInputs = [
-    flit-core
+  patches = [
+    (fetchpatch2 {
+      name = "python-3.13-compat.patch";
+      url = "https://github.com/sphinx-doc/sphinx/commit/3496de62b743942115acb486cf35dfcc102586c3.patch";
+      hash = "sha256-5VBPOQeGyj3a8VBq4hc9S/eKaeVZeGCTNislwgsauZo=";
+    })
   ];
 
-  propagatedBuildInputs = [
-    alabaster
-    babel
-    docutils
-    imagesize
-    jinja2
-    packaging
-    pygments
-    requests
-    snowballstemmer
-    sphinxcontrib-applehelp
-    sphinxcontrib-devhelp
-    sphinxcontrib-htmlhelp
-    sphinxcontrib-jsmath
-    sphinxcontrib-qthelp
-    sphinxcontrib-serializinghtml
-    # extra[docs]
-    sphinxcontrib-websupport
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ];
+  build-system = [ flit-core ];
+
+  dependencies =
+    [
+      alabaster
+      babel
+      docutils
+      imagesize
+      jinja2
+      packaging
+      pygments
+      requests
+      snowballstemmer
+      sphinxcontrib-applehelp
+      sphinxcontrib-devhelp
+      sphinxcontrib-htmlhelp
+      sphinxcontrib-jsmath
+      sphinxcontrib-qthelp
+      sphinxcontrib-serializinghtml
+      # extra[docs]
+      sphinxcontrib-websupport
+    ]
+    ++ lib.optionals (pythonOlder "3.11") [ tomli ]
+    ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
   __darwinAllowLocalNetworking = true;
 
   nativeCheckInputs = [
+    defusedxml
     filelock
     html5lib
     pytestCheckHook
@@ -93,39 +105,44 @@ buildPythonPackage rec {
     export HOME=$TMPDIR
   '';
 
-  disabledTests = [
-    # requires network access
-    "test_latex_images"
-    # racy
-    "test_defaults"
-    "test_check_link_response_only"
-    "test_anchors_ignored_for_url"
-    "test_autodoc_default_options"
-    "test_too_many_requests_retry_after_int_delay"
-    # racy with pytest-xdist
-    "test_domain_cpp_build_semicolon"
-    "test_class_alias"
-    "test_class_alias_having_doccomment"
-    "test_class_alias_for_imported_object_having_doccomment"
-    "test_decorators"
-    # requires cython_0, but fails miserably on 3.11
-    "test_cython"
-  ] ++ lib.optionals isPyPy [
-    # PyPy has not __builtins__ which get asserted
-    # https://doc.pypy.org/en/latest/cpython_differences.html#miscellaneous
-    "test_autosummary_generate_content_for_module"
-    "test_autosummary_generate_content_for_module_skipped"
-    # internals are asserted which are sightly different in PyPy
-    "test_autodoc_inherited_members_None"
-    "test_automethod_for_builtin"
-    "test_builtin_function"
-    "test_isattributedescriptor"
-    "test_methoddescriptor"
-    "test_partialfunction"
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    # https://github.com/sphinx-doc/sphinx/issues/12202 (Fixed in 7.3)
-    "test_enum_class"
-  ];
+  disabledTests =
+    [
+      # requires network access
+      "test_latex_images"
+      # racy
+      "test_defaults"
+      "test_check_link_response_only"
+      "test_anchors_ignored_for_url"
+      "test_autodoc_default_options"
+      "test_too_many_requests_retry_after_int_delay"
+      # racy with pytest-xdist
+      "test_domain_cpp_build_semicolon"
+      "test_class_alias"
+      "test_class_alias_having_doccomment"
+      "test_class_alias_for_imported_object_having_doccomment"
+      "test_decorators"
+      # requires cython_0, but fails miserably on 3.11
+      "test_cython"
+      # Could not fetch remote image: http://localhost:7777/sphinx.png
+      "test_copy_images"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [
+      # https://github.com/sphinx-doc/sphinx/issues/12430
+      "test_autodoc_type_aliases"
+    ]
+    ++ lib.optionals isPyPy [
+      # PyPy has not __builtins__ which get asserted
+      # https://doc.pypy.org/en/latest/cpython_differences.html#miscellaneous
+      "test_autosummary_generate_content_for_module"
+      "test_autosummary_generate_content_for_module_skipped"
+      # internals are asserted which are sightly different in PyPy
+      "test_autodoc_inherited_members_None"
+      "test_automethod_for_builtin"
+      "test_builtin_function"
+      "test_isattributedescriptor"
+      "test_methoddescriptor"
+      "test_partialfunction"
+    ];
 
   meta = {
     description = "Python documentation generator";
diff --git a/pkgs/development/python-modules/sphinxawesome-theme/default.nix b/pkgs/development/python-modules/sphinxawesome-theme/default.nix
new file mode 100644
index 0000000000000..8d028f2c63e71
--- /dev/null
+++ b/pkgs/development/python-modules/sphinxawesome-theme/default.nix
@@ -0,0 +1,35 @@
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  poetry-core,
+  sphinx,
+  beautifulsoup4,
+}:
+
+buildPythonPackage rec {
+  pname = "sphinxawesome-theme";
+  version = "5.2.0";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit version;
+    pname = "sphinxawesome_theme";
+    hash = "sha256-wk8eXAueR1OA0W/F8fO/2ElVgX2gkF2V9+IICdfNPF0=";
+  };
+
+  build-system = [ poetry-core ];
+  dependencies = [
+    sphinx
+    beautifulsoup4
+  ];
+
+  pythonRelaxDeps = [ "sphinx" ];
+
+  meta = {
+    description = "Awesome Sphinx Theme";
+    homepage = "https://sphinxawesome.xyz/";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [sigmanificient];
+  };
+}
diff --git a/pkgs/development/python-modules/sphinxcontrib-actdiag/default.nix b/pkgs/development/python-modules/sphinxcontrib-actdiag/default.nix
index bfe5739b2a7b0..35eee667daf4e 100644
--- a/pkgs/development/python-modules/sphinxcontrib-actdiag/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-actdiag/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, sphinx
-, actdiag
-, blockdiag
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  sphinx,
+  actdiag,
+  blockdiag,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     sphinx
   ];
 
-  pythonImportsCheck = [
-    "sphinxcontrib.actdiag"
-  ];
+  pythonImportsCheck = [ "sphinxcontrib.actdiag" ];
 
   pythonNamespaces = [ "sphinxcontrib" ];
 
diff --git a/pkgs/development/python-modules/sphinxcontrib-apidoc/default.nix b/pkgs/development/python-modules/sphinxcontrib-apidoc/default.nix
index 9abab99c05985..359b5387f6399 100644
--- a/pkgs/development/python-modules/sphinxcontrib-apidoc/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-apidoc/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pbr
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pbr,
+  setuptools,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/sphinxcontrib-applehelp/default.nix b/pkgs/development/python-modules/sphinxcontrib-applehelp/default.nix
index b5b52c92912e5..9a9e1a2e0078e 100644
--- a/pkgs/development/python-modules/sphinxcontrib-applehelp/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-applehelp/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, flit-core
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  flit-core,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-xApPlvN3bEOT2TNBIFOWL6wrhPTJmnmCukLglXanBhk=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   # Check is disabled due to circular dependency of sphinx
   dontCheckRuntimeDeps = true;
diff --git a/pkgs/development/python-modules/sphinxcontrib-asyncio/default.nix b/pkgs/development/python-modules/sphinxcontrib-asyncio/default.nix
index 1044723818964..f935b694e630d 100644
--- a/pkgs/development/python-modules/sphinxcontrib-asyncio/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-asyncio/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -14,15 +15,11 @@ buildPythonPackage rec {
     hash = "sha256-mf0m4P5+34ckSnGpnDFv0Mm1CFbCUZrMqSfr50EAci4=";
   };
 
-  propagatedBuildInputs = [
-    sphinx
-  ];
+  propagatedBuildInputs = [ sphinx ];
 
   doCheck = false; # no tests
 
-  pythonImportsCheck = [
-    "sphinxcontrib.asyncio"
-  ];
+  pythonImportsCheck = [ "sphinxcontrib.asyncio" ];
 
   pythonNamespaces = [ "sphinxcontrib" ];
 
@@ -30,6 +27,6 @@ buildPythonPackage rec {
     description = "Sphinx extension to add asyncio-specific markups";
     homepage = "https://github.com/aio-libs/sphinxcontrib-asyncio";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sphinxcontrib-bayesnet/default.nix b/pkgs/development/python-modules/sphinxcontrib-bayesnet/default.nix
index ca968f3f232c2..ce7df8dcba700 100644
--- a/pkgs/development/python-modules/sphinxcontrib-bayesnet/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-bayesnet/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, sphinx
-, sphinxcontrib-tikz
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  sphinx,
+  sphinxcontrib-tikz,
 }:
 
 buildPythonPackage rec {
@@ -15,7 +16,10 @@ buildPythonPackage rec {
     hash = "sha256-+M+K8WzQqxQUGgAgGPK+isf3gKK7HOrdI6nNW/V8Wv0=";
   };
 
-  propagatedBuildInputs = [ sphinx sphinxcontrib-tikz ];
+  propagatedBuildInputs = [
+    sphinx
+    sphinxcontrib-tikz
+  ];
 
   # No tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/sphinxcontrib-bibtex/default.nix b/pkgs/development/python-modules/sphinxcontrib-bibtex/default.nix
index 2d5a7b9974649..dbd91f0e5da66 100644
--- a/pkgs/development/python-modules/sphinxcontrib-bibtex/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-bibtex/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, oset
-, pybtex
-, pybtex-docutils
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  oset,
+  pybtex,
+  pybtex-docutils,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -29,16 +30,14 @@ buildPythonPackage rec {
 
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sphinxcontrib.bibtex"
-  ];
+  pythonImportsCheck = [ "sphinxcontrib.bibtex" ];
 
   pythonNamespaces = [ "sphinxcontrib" ];
 
   meta = with lib; {
-    description = "A Sphinx extension for BibTeX style citations";
+    description = "Sphinx extension for BibTeX style citations";
     homepage = "https://github.com/mcmtroffaes/sphinxcontrib-bibtex";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sphinxcontrib-blockdiag/default.nix b/pkgs/development/python-modules/sphinxcontrib-blockdiag/default.nix
index 9f0790c0d6431..159cc00b32efa 100644
--- a/pkgs/development/python-modules/sphinxcontrib-blockdiag/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-blockdiag/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, unittestCheckHook
-, mock
-, sphinx-testing
-, sphinx
-, blockdiag
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  unittestCheckHook,
+  mock,
+  sphinx-testing,
+  sphinx,
+  blockdiag,
 }:
 
 buildPythonPackage rec {
@@ -18,23 +19,31 @@ buildPythonPackage rec {
     sha256 = "aa49bf924516f5de8a479994c7be81e077df5599c9da2a082003d5b388e1d450";
   };
 
-  buildInputs = [ mock sphinx-testing ];
-  propagatedBuildInputs = [ sphinx blockdiag ];
+  buildInputs = [
+    mock
+    sphinx-testing
+  ];
+  propagatedBuildInputs = [
+    sphinx
+    blockdiag
+  ];
 
   # Seems to look for files in the wrong dir
   doCheck = false;
 
   nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [ "-s" "tests" ];
+  unittestFlagsArray = [
+    "-s"
+    "tests"
+  ];
 
   pythonNamespaces = [ "sphinxcontrib" ];
 
   meta = with lib; {
     description = "Sphinx blockdiag extension";
     homepage = "https://github.com/blockdiag/sphinxcontrib-blockdiag";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     license = licenses.bsd2;
   };
-
 }
diff --git a/pkgs/development/python-modules/sphinxcontrib-confluencebuilder/default.nix b/pkgs/development/python-modules/sphinxcontrib-confluencebuilder/default.nix
index 240e51c724180..afbe62d9c9894 100644
--- a/pkgs/development/python-modules/sphinxcontrib-confluencebuilder/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-confluencebuilder/default.nix
@@ -1,29 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, docutils
-, sphinx
-, requests
-, jinja2
+{
+  lib,
+  buildPythonPackage,
+  docutils,
+  fetchPypi,
+  flit-core,
+  jinja2,
+  pythonOlder,
+  requests,
+  sphinx,
 }:
 
 buildPythonPackage rec {
   pname = "sphinxcontrib-confluencebuilder";
-  version = "2.5.1";
-  format = "pyproject";
+  version = "2.7.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     pname = "sphinxcontrib_confluencebuilder";
     inherit version;
-    hash = "sha256-PQpkwQ95UVJwDGTAq1xdcSvd07FZpZfA/4jq3ywlMas=";
+    hash = "sha256-Tj9m0TcPkg+FIWwYixahpox27Yn+0tXPppwb5EwmBk0=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     docutils
     sphinx
     requests
@@ -33,17 +35,16 @@ buildPythonPackage rec {
   # Tests are disabled due to a circular dependency on Sphinx
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sphinxcontrib.confluencebuilder"
-  ];
+  pythonImportsCheck = [ "sphinxcontrib.confluencebuilder" ];
 
   pythonNamespaces = [ "sphinxcontrib" ];
 
   meta = with lib; {
     description = "Confluence builder for sphinx";
-    mainProgram = "sphinx-build-confluence";
     homepage = "https://github.com/sphinx-contrib/confluencebuilder";
+    changelog = "https://github.com/sphinx-contrib/confluencebuilder/blob/v${version}/CHANGES.rst";
     license = licenses.bsd1;
     maintainers = with maintainers; [ graysonhead ];
+    mainProgram = "sphinx-build-confluence";
   };
 }
diff --git a/pkgs/development/python-modules/sphinxcontrib-devhelp/default.nix b/pkgs/development/python-modules/sphinxcontrib-devhelp/default.nix
index 5e37386e55100..d2daaded5b90b 100644
--- a/pkgs/development/python-modules/sphinxcontrib-devhelp/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-devhelp/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, flit-core
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  flit-core,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-mJP9P5BQa8S5e9uXfOuPvYI5ifQxayjDhB7BKFRDctM=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   # Check is disabled due to circular dependency of sphinx
   dontCheckRuntimeDeps = true;
@@ -29,7 +28,7 @@ buildPythonPackage rec {
   pythonNamespaces = [ "sphinxcontrib" ];
 
   meta = with lib; {
-    description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document.";
+    description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document";
     homepage = "https://github.com/sphinx-doc/sphinxcontrib-devhelp";
     license = licenses.bsd2;
     maintainers = teams.sphinx.members;
diff --git a/pkgs/development/python-modules/sphinxcontrib-ditaa/default.nix b/pkgs/development/python-modules/sphinxcontrib-ditaa/default.nix
new file mode 100644
index 0000000000000..18554a01e18ee
--- /dev/null
+++ b/pkgs/development/python-modules/sphinxcontrib-ditaa/default.nix
@@ -0,0 +1,41 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  sphinx,
+  ditaa,
+}:
+
+buildPythonPackage rec {
+  pname = "sphinxcontrib-ditaa";
+  version = "1.0.2";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-V/LhOwWbOP3olYC+ypFqxsp0VrLXBsPd6p3UiQ5fW9M=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    sphinx
+    ditaa
+  ];
+
+  # no tests provided
+  doCheck = false;
+
+  # ? needs docutils exported as runtime dep
+  #pythonImportsCheck = [ "sphinxcontrib.ditaa" ];
+
+  pythonNamespaces = [ "sphinxcontrib" ];
+
+  meta = {
+    description = "Sphinx ditaa extension";
+    homepage = "https://pypi.org/project/sphinxcontrib-ditaa";
+    maintainers = with lib.maintainers; [ rconybea ];
+    license = lib.licenses.bsd2;
+  };
+}
diff --git a/pkgs/development/python-modules/sphinxcontrib-excel-table/default.nix b/pkgs/development/python-modules/sphinxcontrib-excel-table/default.nix
index 732ed446aa28e..329db4319a51a 100644
--- a/pkgs/development/python-modules/sphinxcontrib-excel-table/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-excel-table/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, sphinx
-, openpyxl
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  sphinx,
+  openpyxl,
 }:
 
 buildPythonPackage rec {
@@ -15,7 +16,10 @@ buildPythonPackage rec {
     hash = "sha256:1q79byn3k3ribvwqafbpixwabjhymk46ns8ym0hxcn8vhf5nljzd";
   };
 
-  propagatedBuildInputs = [ sphinx openpyxl ];
+  propagatedBuildInputs = [
+    sphinx
+    openpyxl
+  ];
 
   pythonImportsCheck = [ "sphinxcontrib.excel_table" ];
 
diff --git a/pkgs/development/python-modules/sphinxcontrib-fulltoc/default.nix b/pkgs/development/python-modules/sphinxcontrib-fulltoc/default.nix
index f29e46b014e0f..1d2850bb20b29 100644
--- a/pkgs/development/python-modules/sphinxcontrib-fulltoc/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-fulltoc/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder, sphinx, pbr }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  sphinx,
+  pbr,
+}:
 
 buildPythonPackage rec {
   pname = "sphinxcontrib-fulltoc";
diff --git a/pkgs/development/python-modules/sphinxcontrib-htmlhelp/default.nix b/pkgs/development/python-modules/sphinxcontrib-htmlhelp/default.nix
index c49e3c49da31b..69b237b0452bf 100644
--- a/pkgs/development/python-modules/sphinxcontrib-htmlhelp/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-htmlhelp/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, flit-core
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  flit-core,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-Dch2N9XeU91e7DpqAXU7HM+ZSUvXVqr+zXS0+p5ykBU=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   # Check is disabled due to circular dependency of sphinx
   dontCheckRuntimeDeps = true;
diff --git a/pkgs/development/python-modules/sphinxcontrib-httpdomain/default.nix b/pkgs/development/python-modules/sphinxcontrib-httpdomain/default.nix
index 8be6779391a36..a483e50deea39 100644
--- a/pkgs/development/python-modules/sphinxcontrib-httpdomain/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-httpdomain/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -27,5 +28,4 @@ buildPythonPackage rec {
     homepage = "https://bitbucket.org/birkenfeld/sphinx-contrib";
     license = licenses.bsd0;
   };
-
 }
diff --git a/pkgs/development/python-modules/sphinxcontrib-jquery/default.nix b/pkgs/development/python-modules/sphinxcontrib-jquery/default.nix
index fef662c85daef..66047794eceaf 100644
--- a/pkgs/development/python-modules/sphinxcontrib-jquery/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-jquery/default.nix
@@ -1,10 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, flit-core
-, pytestCheckHook
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  flit-core,
+  defusedxml,
+  pytestCheckHook,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -33,15 +35,12 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  pythonImportsCheck = [
-    "sphinxcontrib.jquery"
-  ];
+  pythonImportsCheck = [ "sphinxcontrib.jquery" ];
 
   nativeCheckInputs = [
+    defusedxml
     pytestCheckHook
     sphinx
   ];
diff --git a/pkgs/development/python-modules/sphinxcontrib-jsmath/default.nix b/pkgs/development/python-modules/sphinxcontrib-jsmath/default.nix
index f0728a67adb2e..9ce7c66abc997 100644
--- a/pkgs/development/python-modules/sphinxcontrib-jsmath/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-jsmath/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
 }:
 
 buildPythonPackage rec {
@@ -21,7 +22,7 @@ buildPythonPackage rec {
   pythonNamespaces = [ "sphinxcontrib" ];
 
   meta = with lib; {
-    description = "sphinxcontrib-jsmath is a sphinx extension which renders display math in HTML via JavaScript.";
+    description = "sphinxcontrib-jsmath is a sphinx extension which renders display math in HTML via JavaScript";
     homepage = "https://github.com/sphinx-doc/sphinxcontrib-jsmath";
     license = licenses.bsd0;
     maintainers = teams.sphinx.members;
diff --git a/pkgs/development/python-modules/sphinxcontrib-katex/default.nix b/pkgs/development/python-modules/sphinxcontrib-katex/default.nix
index 9420c9882cbd2..6716a3ba7902a 100644
--- a/pkgs/development/python-modules/sphinxcontrib-katex/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-katex/default.nix
@@ -1,32 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  sphinx,
+  pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "sphinxcontrib-katex";
-  version = "0.9.9";
-  format = "setuptools";
+  version = "0.9.10";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-1ZTILfVLBI1Z1I5GsQn2IhezEaublSCMq5bZAvmj/ik=";
+    pname = "sphinxcontrib_katex";
+    inherit version;
+    hash = "sha256-MJqS2uJF28WE/36l+2VJcnuuleTlIAi3TSWdL9GtDew=";
   };
 
-  propagatedBuildInputs = [
-    sphinx
-  ];
+  build-system = [ setuptools ];
 
-  # There are no unit tests
-  doCheck = false;
+  dependencies = [ sphinx ];
 
-  pythonImportsCheck = [
-    "sphinxcontrib.katex"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "sphinxcontrib.katex" ];
 
   pythonNamespaces = [ "sphinxcontrib" ];
 
diff --git a/pkgs/development/python-modules/sphinxcontrib-log-cabinet/default.nix b/pkgs/development/python-modules/sphinxcontrib-log-cabinet/default.nix
index 2dfc743a60f97..b9dfabb9fd81e 100644
--- a/pkgs/development/python-modules/sphinxcontrib-log-cabinet/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-log-cabinet/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchFromGitHub, sphinx }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  sphinx,
+}:
 
 buildPythonPackage rec {
   pname = "sphinxcontrib-log-cabinet";
diff --git a/pkgs/development/python-modules/sphinxcontrib-mscgen/default.nix b/pkgs/development/python-modules/sphinxcontrib-mscgen/default.nix
index 7350b837a7f85..a95cd57dec85d 100644
--- a/pkgs/development/python-modules/sphinxcontrib-mscgen/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-mscgen/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, sphinx
-, mscgen
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  sphinx,
+  mscgen,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
   # There are no unit tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sphinxcontrib.mscgen"
-  ];
+  pythonImportsCheck = [ "sphinxcontrib.mscgen" ];
 
   pythonNamespaces = [ "sphinxcontrib" ];
 
diff --git a/pkgs/development/python-modules/sphinxcontrib-newsfeed/default.nix b/pkgs/development/python-modules/sphinxcontrib-newsfeed/default.nix
index ee9661d954e4f..2f7b6c1ee34df 100644
--- a/pkgs/development/python-modules/sphinxcontrib-newsfeed/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-newsfeed/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -15,13 +16,9 @@ buildPythonPackage rec {
     sha256 = "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    sphinx
-  ];
+  propagatedBuildInputs = [ sphinx ];
 
   pythonNamespaces = [ "sphinxcontrib" ];
 
@@ -30,5 +27,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/prometheusresearch/sphinxcontrib-newsfeed";
     license = licenses.bsd2;
   };
-
 }
diff --git a/pkgs/development/python-modules/sphinxcontrib-nwdiag/default.nix b/pkgs/development/python-modules/sphinxcontrib-nwdiag/default.nix
index de4ebf723bf1e..56ca8292903cc 100644
--- a/pkgs/development/python-modules/sphinxcontrib-nwdiag/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-nwdiag/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, blockdiag
-, buildPythonPackage
-, fetchPypi
-, nwdiag
-, pythonOlder
-, sphinx
+{
+  lib,
+  blockdiag,
+  buildPythonPackage,
+  fetchPypi,
+  nwdiag,
+  pythonOlder,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     sphinx
   ];
 
-  pythonImportsCheck = [
-    "sphinxcontrib.nwdiag"
-  ];
+  pythonImportsCheck = [ "sphinxcontrib.nwdiag" ];
 
   pythonNamespaces = [ "sphinxcontrib" ];
 
diff --git a/pkgs/development/python-modules/sphinxcontrib-openapi/default.nix b/pkgs/development/python-modules/sphinxcontrib-openapi/default.nix
index 6cfc2dc3d4c69..1076db106fcb9 100644
--- a/pkgs/development/python-modules/sphinxcontrib-openapi/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-openapi/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, deepmerge
-, fetchPypi
-, fetchpatch
-, isPy27
-, setuptools-scm
-, jsonschema
-, picobox
-, pyyaml
-, sphinx-mdinclude
-, sphinxcontrib-httpdomain
+{
+  lib,
+  buildPythonPackage,
+  deepmerge,
+  fetchPypi,
+  isPy27,
+  setuptools-scm,
+  jsonschema,
+  picobox,
+  pyyaml,
+  sphinx-mdinclude,
+  sphinxcontrib-httpdomain,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/sphinxcontrib-plantuml/default.nix b/pkgs/development/python-modules/sphinxcontrib-plantuml/default.nix
index 6e0b7802d03a8..e21f983ee759a 100644
--- a/pkgs/development/python-modules/sphinxcontrib-plantuml/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-plantuml/default.nix
@@ -1,27 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, sphinx
-, plantuml
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  sphinx,
+  plantuml,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "sphinxcontrib-plantuml";
-  version = "0.29";
-  format = "setuptools";
+  version = "0.30";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-l6Tyomr5HbiHcMz4o7LgMwW82n7EGn+Wn8jLJ7hKPEQ=";
+    hash = "sha256-KhJmykO930RkCuRBBwA99EkN4rPDFUoNYnz7Y+mhab8=";
   };
 
-  propagatedBuildInputs = [
-    sphinx
-    plantuml
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ sphinx ];
+
+  propagatedBuildInputs = [ plantuml ];
+
+  pythonImportsCheck = [ "sphinxcontrib.plantuml" ];
 
   # No tests included.
   doCheck = false;
@@ -32,6 +37,6 @@ buildPythonPackage rec {
     description = "Provides a Sphinx domain for embedding UML diagram with PlantUML";
     homepage = "https://github.com/sphinx-contrib/plantuml/";
     license = with licenses; [ bsd2 ];
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sphinxcontrib-programoutput/default.nix b/pkgs/development/python-modules/sphinxcontrib-programoutput/default.nix
index 63dcfb16242b5..6a455531ab0d4 100644
--- a/pkgs/development/python-modules/sphinxcontrib-programoutput/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-programoutput/default.nix
@@ -1,8 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, sphinx
-, sphinxcontrib-serializinghtml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-MA7puMrug1XSXMdLTRx+/RLmCNKtFl4xQdMeb7wVK38=";
   };
 
-  buildInputs = [
-    sphinx
-  ];
+  buildInputs = [ sphinx ];
 
   # fails to import sphinxcontrib.serializinghtml
   doCheck = false;
@@ -30,6 +28,6 @@ buildPythonPackage rec {
     description = "Sphinx extension to include program output";
     homepage = "https://github.com/NextThought/sphinxcontrib-programoutput";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sphinxcontrib-qthelp/default.nix b/pkgs/development/python-modules/sphinxcontrib-qthelp/default.nix
index 607060e2931d0..402432dd1e498 100644
--- a/pkgs/development/python-modules/sphinxcontrib-qthelp/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-qthelp/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, flit-core
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  flit-core,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-BT3tw4gjqApyCagIYLFrci6eAgnjL+qYyQ5OZiRYjtY=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   # Check is disabled due to circular dependency of sphinx
   dontCheckRuntimeDeps = true;
@@ -29,7 +28,7 @@ buildPythonPackage rec {
   pythonNamespaces = [ "sphinxcontrib" ];
 
   meta = with lib; {
-    description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document.";
+    description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document";
     homepage = "https://github.com/sphinx-doc/sphinxcontrib-qthelp";
     license = licenses.bsd2;
     maintainers = teams.sphinx.members;
diff --git a/pkgs/development/python-modules/sphinxcontrib-seqdiag/default.nix b/pkgs/development/python-modules/sphinxcontrib-seqdiag/default.nix
index 085cb57305480..fbca10bced535 100644
--- a/pkgs/development/python-modules/sphinxcontrib-seqdiag/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-seqdiag/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, blockdiag
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, seqdiag
-, sphinx
+{
+  lib,
+  blockdiag,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  seqdiag,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     sphinx
   ];
 
-  pythonImportsCheck = [
-    "sphinxcontrib.seqdiag"
-  ];
+  pythonImportsCheck = [ "sphinxcontrib.seqdiag" ];
 
   pythonNamespaces = [ "sphinxcontrib" ];
 
diff --git a/pkgs/development/python-modules/sphinxcontrib-serializinghtml/default.nix b/pkgs/development/python-modules/sphinxcontrib-serializinghtml/default.nix
index c2f09769d1ac9..99b4d5e5867f4 100644
--- a/pkgs/development/python-modules/sphinxcontrib-serializinghtml/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-serializinghtml/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, flit-core
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  flit-core,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-k/P13EWLkbGS/hDDl+Mk8mLPFj158ygsFY6ENqLEUR8=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   # Check is disabled due to circular dependency of sphinx
   dontCheckRuntimeDeps = true;
@@ -29,7 +28,7 @@ buildPythonPackage rec {
   pythonNamespaces = [ "sphinxcontrib" ];
 
   meta = with lib; {
-    description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle).";
+    description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)";
     homepage = "https://github.com/sphinx-doc/sphinxcontrib-serializinghtml";
     license = licenses.bsd2;
     maintainers = teams.sphinx.members;
diff --git a/pkgs/development/python-modules/sphinxcontrib-spelling/default.nix b/pkgs/development/python-modules/sphinxcontrib-spelling/default.nix
index b7a71f891c32c..6bff5f2fc6c72 100644
--- a/pkgs/development/python-modules/sphinxcontrib-spelling/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-spelling/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, importlib-metadata
-, sphinx
-, pyenchant
-, setuptools
-, setuptools-scm
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  importlib-metadata,
+  sphinx,
+  pyenchant,
+  setuptools,
+  setuptools-scm,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -31,16 +32,12 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     sphinx
     pyenchant
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   # No tests included
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sphinxcontrib.spelling"
-  ];
+  pythonImportsCheck = [ "sphinxcontrib.spelling" ];
 
   pythonNamespaces = [ "sphinxcontrib" ];
 
@@ -49,6 +46,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/sphinx-contrib/spelling";
     changelog = "https://github.com/sphinx-contrib/spelling/blob/${version}/docs/source/history.rst";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sphinxcontrib-tikz/default.nix b/pkgs/development/python-modules/sphinxcontrib-tikz/default.nix
index fb44f8ce343a5..50c892cd5cd51 100644
--- a/pkgs/development/python-modules/sphinxcontrib-tikz/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-tikz/default.nix
@@ -1,24 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, sphinx
-, pdf2svg
-, texliveSmall
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  sphinx,
+  pdf2svg,
+  texliveSmall,
 }:
 
 buildPythonPackage rec {
   pname = "sphinxcontrib-tikz";
-  version = "0.4.18";
+  version = "0.4.20";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-+IQV2uoKqAGQzq0te6z7vi+NnvQGZ0Sb7XjhdT05Tzo=";
+    hash = "sha256-LuO9H5yi80nAgjpPNQfZHEEOf5a+IPBR/vevFmXzQco=";
   };
 
   postPatch = ''
     substituteInPlace sphinxcontrib/tikz.py \
-      --replace "config.latex_engine" "'${texliveSmall.withPackages (ps: with ps; [ standalone pgfplots ])}/bin/pdflatex'" \
+      --replace "config.latex_engine" "'${
+        texliveSmall.withPackages (
+          ps: with ps; [
+            standalone
+            pgfplots
+          ]
+        )
+      }/bin/pdflatex'" \
       --replace "system(['pdf2svg'" "system(['${pdf2svg}/bin/pdf2svg'"
   '';
 
@@ -34,8 +42,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "TikZ extension for Sphinx";
     homepage = "https://bitbucket.org/philexander/tikz";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     license = licenses.bsd3;
   };
-
 }
diff --git a/pkgs/development/python-modules/sphinxcontrib-wavedrom/default.nix b/pkgs/development/python-modules/sphinxcontrib-wavedrom/default.nix
index 6f35e2b59e32a..3f56d44878e65 100644
--- a/pkgs/development/python-modules/sphinxcontrib-wavedrom/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-wavedrom/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools-scm
-, sphinx
-, wavedrom
-, xcffib
-, cairosvg
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  sphinx,
+  wavedrom,
+  xcffib,
+  cairosvg,
 }:
 
 buildPythonPackage rec {
@@ -36,7 +36,7 @@ buildPythonPackage rec {
   pythonNamespaces = [ "sphinxcontrib" ];
 
   meta = with lib; {
-    description = "A sphinx extension that allows including wavedrom diagrams by using its text-based representation";
+    description = "Sphinx extension that allows including wavedrom diagrams by using its text-based representation";
     homepage = "https://github.com/bavovanachte/sphinx-wavedrom";
     license = licenses.mit;
     maintainers = with maintainers; [ fsagbuya ];
diff --git a/pkgs/development/python-modules/sphinxcontrib-websupport/default.nix b/pkgs/development/python-modules/sphinxcontrib-websupport/default.nix
index 7371d8abdea81..a30a5a9809057 100644
--- a/pkgs/development/python-modules/sphinxcontrib-websupport/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-websupport/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, jinja2
-, sphinxcontrib-serializinghtml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  jinja2,
+  sphinxcontrib-serializinghtml,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-4yKALr/V/nk2jv2GSuuHsGNWauYZEdzLJxTiikXtdWE=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     jinja2
diff --git a/pkgs/development/python-modules/sphinxcontrib-youtube/default.nix b/pkgs/development/python-modules/sphinxcontrib-youtube/default.nix
index ab48066dc6af2..2321bc467f5e0 100644
--- a/pkgs/development/python-modules/sphinxcontrib-youtube/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-youtube/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, sphinx
-, requests
-, flit-core
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  sphinx,
+  requests,
+  flit-core,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,10 @@ buildPythonPackage rec {
     hash = "sha256-XuOfZ77tg9akmgTuMQN20OhgkFbn/6YzT46vpTsXxC8=";
   };
 
-  propagatedBuildInputs = [ sphinx requests ];
+  propagatedBuildInputs = [
+    sphinx
+    requests
+  ];
 
   # tests require internet access
   doCheck = false;
diff --git a/pkgs/development/python-modules/sphinxemoji/default.nix b/pkgs/development/python-modules/sphinxemoji/default.nix
index 639e6d2ab12be..b563388ab1a92 100644
--- a/pkgs/development/python-modules/sphinxemoji/default.nix
+++ b/pkgs/development/python-modules/sphinxemoji/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, sphinx
-, sphinxHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  sphinx,
+  sphinxHook,
 }:
 
 buildPythonPackage rec {
@@ -11,7 +12,10 @@ buildPythonPackage rec {
   version = "0.2.0";
   format = "pyproject";
 
-  outputs = [ "out" "doc" ];
+  outputs = [
+    "out"
+    "doc"
+  ];
 
   src = fetchFromGitHub {
     owner = "sphinx-contrib";
@@ -29,12 +33,10 @@ buildPythonPackage rec {
     sphinx
     # sphinxemoji.py imports pkg_resources directly
     setuptools
-   ];
-
-  pythonImportsCheck = [
-    "sphinxemoji"
   ];
 
+  pythonImportsCheck = [ "sphinxemoji" ];
+
   meta = with lib; {
     description = "Extension to use emoji codes in your Sphinx documentation";
     homepage = "https://github.com/sphinx-contrib/emojicodes";
diff --git a/pkgs/development/python-modules/sphinxext-opengraph/default.nix b/pkgs/development/python-modules/sphinxext-opengraph/default.nix
index 570cf5b95b599..2740b83afbb4d 100644
--- a/pkgs/development/python-modules/sphinxext-opengraph/default.nix
+++ b/pkgs/development/python-modules/sphinxext-opengraph/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, sphinx
-, matplotlib
-, pytestCheckHook
-, pythonOlder
-, beautifulsoup4
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  sphinx,
+  matplotlib,
+  pytestCheckHook,
+  pythonOlder,
+  beautifulsoup4,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -23,19 +24,13 @@ buildPythonPackage rec {
     hash = "sha256-B+bJ1tKqTTlbNeJLxk56o2a21n3Yg6OHwJiFfCx46aw=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   passthru.optional-dependencies = {
-    social_cards_generation = [
-      matplotlib
-    ];
+    social_cards_generation = [ matplotlib ];
   };
 
-  propagatedBuildInputs = [
-    sphinx
-  ];
+  propagatedBuildInputs = [ sphinx ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/spiderpy/default.nix b/pkgs/development/python-modules/spiderpy/default.nix
index 1747e8609924c..88823aff54ba4 100644
--- a/pkgs/development/python-modules/spiderpy/default.nix
+++ b/pkgs/development/python-modules/spiderpy/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, isPy27
-, fetchFromGitHub
-, poetry-core
-, requests
+{
+  lib,
+  buildPythonPackage,
+  isPy27,
+  fetchFromGitHub,
+  poetry-core,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -20,13 +21,9 @@ buildPythonPackage rec {
     hash = "sha256-Yujy8HSMbK2DQ/913r2c74hKPYDfcHFKq04ysqxG+go=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # tests don't mock remote resources
   doCheck = false;
diff --git a/pkgs/development/python-modules/spidev/default.nix b/pkgs/development/python-modules/spidev/default.nix
index b4e5344cca85c..1e62e9b3f988e 100644
--- a/pkgs/development/python-modules/spidev/default.nix
+++ b/pkgs/development/python-modules/spidev/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "spidev";
@@ -22,5 +26,4 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ hexa ];
     platforms = platforms.linux;
   };
-
 }
diff --git a/pkgs/development/python-modules/spinners/default.nix b/pkgs/development/python-modules/spinners/default.nix
index 6328a43df8f77..a5dcf83a68c12 100644
--- a/pkgs/development/python-modules/spinners/default.nix
+++ b/pkgs/development/python-modules/spinners/default.nix
@@ -1,7 +1,9 @@
-{ buildPythonPackage
-, fetchPypi
-, isPy27
-, lib }:
+{
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  lib,
+}:
 
 buildPythonPackage rec {
   pname = "spinners";
@@ -19,7 +21,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "spinners" ];
 
   meta = with lib; {
-    description = "Spinners for the Terminal.";
+    description = "Spinners for the Terminal";
     homepage = "https://github.com/manrajgrover/py-spinners";
     license = licenses.mit;
     maintainers = with maintainers; [ urbas ];
diff --git a/pkgs/development/python-modules/splinter/default.nix b/pkgs/development/python-modules/splinter/default.nix
index 95ad23ec85c21..c85096167742e 100644
--- a/pkgs/development/python-modules/splinter/default.nix
+++ b/pkgs/development/python-modules/splinter/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, urllib3
-, selenium
-, cssselect
-, django
-, flask
-, lxml
-, pytestCheckHook
-, zope-testbrowser
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  urllib3,
+  selenium,
+  cssselect,
+  django,
+  flask,
+  lxml,
+  pytestCheckHook,
+  zope-testbrowser,
 }:
 
 buildPythonPackage rec {
@@ -28,18 +29,26 @@ buildPythonPackage rec {
     hash = "sha256-PGGql8yI1YosoUBAyDoI/8k7s4sVYnXEV7eow3GHH88=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    urllib3
-  ];
+  propagatedBuildInputs = [ urllib3 ];
 
   passthru.optional-dependencies = {
-    "zope.testbrowser" = [ zope-testbrowser lxml cssselect ];
-    django = [ django lxml cssselect ];
-    flask = [ flask lxml cssselect ];
+    "zope.testbrowser" = [
+      zope-testbrowser
+      lxml
+      cssselect
+    ];
+    django = [
+      django
+      lxml
+      cssselect
+    ];
+    flask = [
+      flask
+      lxml
+      cssselect
+    ];
     selenium = [ selenium ];
   };
 
diff --git a/pkgs/development/python-modules/spotipy/default.nix b/pkgs/development/python-modules/spotipy/default.nix
index 8ed6525fd0723..00017c3408812 100644
--- a/pkgs/development/python-modules/spotipy/default.nix
+++ b/pkgs/development/python-modules/spotipy/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, redis
-, requests
-, six
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  redis,
+  requests,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "spotipy";
-  version = "2.23.0";
+  version = "2.24.0";
   format = "setuptools";
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Dfr+CCOdqubBb6po9gtXddQMQRByXhp8VFrUx/tm1Og=";
+    hash = "sha256-OWr4HmQghlUa8VcnDN/nQsFzlAWHG6nawfplG4ZJ7w0=";
   };
 
   propagatedBuildInputs = [
     redis
     requests
-    six
     urllib3
   ];
 
diff --git a/pkgs/development/python-modules/spsdk/default.nix b/pkgs/development/python-modules/spsdk/default.nix
index b64ef4a3d910f..26dfd177e285f 100644
--- a/pkgs/development/python-modules/spsdk/default.nix
+++ b/pkgs/development/python-modules/spsdk/default.nix
@@ -1,69 +1,66 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonRelaxDepsHook
-, asn1crypto
-, astunparse
-, bincopy
-, bitstring
-, click
-, click-command-tree
-, click-option-group
-, colorama
-, crcmod
-, cryptography
-, deepmerge
-, fastjsonschema
-, hexdump
-, libusbsio
-, oscrypto
-, platformdirs
-, prettytable
-, pylink-square
-, pyocd
-, pyocd-pemicro
-, pypemicro
-, pyserial
-, requests
-, ruamel-yaml
-, setuptools
-, sly
-, spsdk
-, testers
-, typing-extensions
-, ipykernel
-, pytest-notebook
-, pytestCheckHook
-, voluptuous
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  asn1crypto,
+  bincopy,
+  bitstring,
+  click,
+  click-command-tree,
+  click-option-group,
+  colorama,
+  crcmod,
+  cryptography,
+  deepmerge,
+  fastjsonschema,
+  hexdump,
+  libusbsio,
+  oscrypto,
+  packaging,
+  platformdirs,
+  prettytable,
+  pyocd,
+  pyserial,
+  requests,
+  ruamel-yaml,
+  setuptools-scm,
+  sly,
+  spsdk,
+  testers,
+  typing-extensions,
+  ipykernel,
+  pytest-notebook,
+  pytestCheckHook,
+  voluptuous,
 }:
 
 buildPythonPackage rec {
   pname = "spsdk";
-  version = "2.1.1";
+  version = "2.2.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "nxp-mcuxpresso";
     repo = "spsdk";
     rev = "refs/tags/${version}";
-    hash = "sha256-cWz2zML/gb9l2C5VEBti+nX3ZLyGbLFyLZGjk5GfTJw=";
+    hash = "sha256-qFgG9jdF667EtMqXGGk/oxTEi+6J2s/3gKokP+JaFVw=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-    setuptools
-  ];
+  build-system = [ setuptools-scm ];
 
   pythonRelaxDeps = [
-    "click"
     "cryptography"
-    "platformdirs"
+    "requests"
+    "packaging"
     "typing-extensions"
   ];
 
-  propagatedBuildInputs = [
+  # Remove unneeded unfree package. pyocd-pemicro is only used when
+  # generating a pyinstaller package, which we don't do.
+  pythonRemoveDeps = [ "pyocd-pemicro" ];
+
+  dependencies = [
     asn1crypto
-    astunparse
     bincopy
     bitstring
     click
@@ -77,12 +74,10 @@ buildPythonPackage rec {
     hexdump
     libusbsio
     oscrypto
+    packaging
     platformdirs
     prettytable
-    pylink-square
     pyocd
-    pyocd-pemicro
-    pypemicro
     pyserial
     requests
     ruamel-yaml
@@ -97,22 +92,19 @@ buildPythonPackage rec {
     voluptuous
   ];
 
-  disabledTests = [
-    "test_nxpcrypto_create_signature_algorithm"
-    "test_nxpimage_sb31_kaypair_not_matching"
-  ];
-
   pythonImportsCheck = [ "spsdk" ];
 
   passthru.tests.version = testers.testVersion { package = spsdk; };
 
   meta = with lib; {
-    broken = versionAtLeast cryptography.version "41.1";
     changelog = "https://github.com/nxp-mcuxpresso/spsdk/blob/${src.rev}/docs/release_notes.rst";
     description = "NXP Secure Provisioning SDK";
     homepage = "https://github.com/nxp-mcuxpresso/spsdk";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ frogamic sbruder ];
+    maintainers = with maintainers; [
+      frogamic
+      sbruder
+    ];
     mainProgram = "spsdk";
   };
 }
diff --git a/pkgs/development/python-modules/spur/default.nix b/pkgs/development/python-modules/spur/default.nix
index 4b4fe911817e1..6762556268fde 100644
--- a/pkgs/development/python-modules/spur/default.nix
+++ b/pkgs/development/python-modules/spur/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, paramiko
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  paramiko,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-LTkZ1p2P9fsD+gZEQZaCS68Q6nGc4qFGMNtH75gQmXQ=";
   };
 
-  propagatedBuildInputs = [
-    paramiko
-  ];
+  propagatedBuildInputs = [ paramiko ];
 
   # Tests require a running SSH server
   doCheck = false;
 
-  pythonImportsCheck = [
-    "spur"
-  ];
+  pythonImportsCheck = [ "spur" ];
 
   meta = with lib; {
     description = "Python module to run commands and manipulate files locally or over SSH";
diff --git a/pkgs/development/python-modules/spyder-kernels/default.nix b/pkgs/development/python-modules/spyder-kernels/default.nix
index 30f76ffd62587..46bf6bb70bb29 100644
--- a/pkgs/development/python-modules/spyder-kernels/default.nix
+++ b/pkgs/development/python-modules/spyder-kernels/default.nix
@@ -1,59 +1,56 @@
-{ lib
-, buildPythonPackage
-, cloudpickle
-, fetchPypi
-, ipykernel
-, ipython
-, jupyter-client
-, packaging
-, pythonOlder
-, pyxdg
-, pyzmq
-, wurlitzer
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  cloudpickle,
+  ipykernel,
+  ipython,
+  jupyter-client,
+  pyxdg,
+  pyzmq,
+  wurlitzer,
 }:
 
 buildPythonPackage rec {
   pname = "spyder-kernels";
-  version = "2.5.1";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.7";
-
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-BQQqP5eyXxfN+o11AR/Xmq8CdSM0ip3/8PWiC92wubA=";
+  version = "3.0.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "spyder-ide";
+    repo = "spyder-kernels";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-oyPgujvaj2tqouZKuMVDq3gxm0GNrKmeUWqUFUkEMB4=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     cloudpickle
     ipykernel
     ipython
     jupyter-client
-    packaging
     pyxdg
     pyzmq
     wurlitzer
   ];
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "ipykernel>=6.16.1,<7" "ipykernel" \
-      --replace "ipython>=7.31.1,<8" "ipython"
-  '';
-
   # No tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "spyder_kernels"
-  ];
+  pythonImportsCheck = [ "spyder_kernels" ];
 
-  meta = with lib; {
+  meta = {
     description = "Jupyter kernels for Spyder's console";
     homepage = "https://docs.spyder-ide.org/current/ipythonconsole.html";
     downloadPage = "https://github.com/spyder-ide/spyder-kernels/releases";
     changelog = "https://github.com/spyder-ide/spyder-kernels/blob/v${version}/CHANGELOG.md";
-    license = licenses.mit;
-    maintainers = with maintainers; [ gebner ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ gebner ];
   };
 }
diff --git a/pkgs/development/python-modules/spyder/default.nix b/pkgs/development/python-modules/spyder/default.nix
index edefde907e2cc..6c18f7e382e8d 100644
--- a/pkgs/development/python-modules/spyder/default.nix
+++ b/pkgs/development/python-modules/spyder/default.nix
@@ -1,61 +1,65 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, atomicwrites
-, chardet
-, cloudpickle
-, cookiecutter
-, diff-match-patch
-, intervaltree
-, jedi
-, jellyfish
-, keyring
-, matplotlib
-, nbconvert
-, numpy
-, numpydoc
-, pickleshare
-, psutil
-, pygments
-, pylint-venv
-, pyls-spyder
-, pyopengl
-, pyqtwebengine
-, python-lsp-black
-, python-lsp-server
-, pyxdg
-, pyzmq
-, qdarkstyle
-, qstylizer
-, qtawesome
-, qtconsole
-, qtpy
-, rope
-, rtree
-, scipy
-, setuptools
-, spyder-kernels
-, textdistance
-, three-merge
-, watchdog
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+
+  # dependencies
+  aiohttp,
+  asyncssh,
+  atomicwrites,
+  chardet,
+  cloudpickle,
+  cookiecutter,
+  diff-match-patch,
+  fzf,
+  intervaltree,
+  jedi,
+  jellyfish,
+  keyring,
+  matplotlib,
+  nbconvert,
+  numpy,
+  numpydoc,
+  pickleshare,
+  psutil,
+  pygithub,
+  pygments,
+  pylint-venv,
+  pyls-spyder,
+  pyopengl,
+  pyqtwebengine,
+  python-lsp-black,
+  python-lsp-server,
+  pyuca,
+  pyzmq,
+  qdarkstyle,
+  qstylizer,
+  qtawesome,
+  qtconsole,
+  qtpy,
+  rope,
+  rtree,
+  scipy,
+  setuptools,
+  spyder-kernels,
+  superqt,
+  textdistance,
+  three-merge,
+  watchdog,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "spyder";
-  version = "5.5.4";
+  version = "6.0.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
-
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-UiIyoFREfd3gV0uhSgZ8TVFQiP3yprrBZDOm3+8Dge0=";
+    hash = "sha256-cJeC6ICRWIu+YU3m673ntHVEpNbCJeGZ3lrSK3fYsTA=";
   };
 
-  patches = [
-    ./dont-clear-pythonpath.patch
-  ];
+  patches = [ ./dont-clear-pythonpath.patch ];
 
   build-system = [
     pyqtwebengine.wrapQtAppsHook
@@ -63,11 +67,14 @@ buildPythonPackage rec {
   ];
 
   dependencies = [
+    aiohttp
+    asyncssh
     atomicwrites
     chardet
     cloudpickle
     cookiecutter
     diff-match-patch
+    fzf
     intervaltree
     jedi
     jellyfish
@@ -78,6 +85,7 @@ buildPythonPackage rec {
     numpydoc
     pickleshare
     psutil
+    pygithub
     pygments
     pylint-venv
     pyls-spyder
@@ -85,7 +93,7 @@ buildPythonPackage rec {
     pyqtwebengine
     python-lsp-black
     python-lsp-server
-    pyxdg
+    pyuca
     pyzmq
     qdarkstyle
     qstylizer
@@ -96,23 +104,16 @@ buildPythonPackage rec {
     rtree
     scipy
     spyder-kernels
+    superqt
     textdistance
     three-merge
     watchdog
+    yarl
   ] ++ python-lsp-server.optional-dependencies.all;
 
   # There is no test for spyder
   doCheck = false;
 
-  postPatch = ''
-    # Remove dependency on pyqtwebengine
-    # This is still part of the pyqt 5.11 version we have in nixpkgs
-    sed -i /pyqtwebengine/d setup.py
-    substituteInPlace setup.py \
-      --replace "qdarkstyle>=3.0.2,<3.1.0" "qdarkstyle" \
-      --replace "ipython>=7.31.1,<8.0.0" "ipython"
-  '';
-
   postInstall = ''
     # Add Python libs to env so Spyder subprocesses
     # created to run compute kernels don't fail with ImportErrors
@@ -125,7 +126,7 @@ buildPythonPackage rec {
     makeWrapperArgs+=("''${qtWrapperArgs[@]}")
   '';
 
-  meta = with lib; {
+  meta = {
     description = "Scientific python development environment";
     mainProgram = "spyder";
     longDescription = ''
@@ -136,8 +137,8 @@ buildPythonPackage rec {
     homepage = "https://www.spyder-ide.org/";
     downloadPage = "https://github.com/spyder-ide/spyder/releases";
     changelog = "https://github.com/spyder-ide/spyder/blob/master/CHANGELOG.md";
-    license = licenses.mit;
-    maintainers = with maintainers; [ gebner ];
-    platforms = platforms.linux;
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ gebner ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/development/python-modules/spyder/dont-clear-pythonpath.patch b/pkgs/development/python-modules/spyder/dont-clear-pythonpath.patch
index abb021e395543..0d623c69ee346 100644
--- a/pkgs/development/python-modules/spyder/dont-clear-pythonpath.patch
+++ b/pkgs/development/python-modules/spyder/dont-clear-pythonpath.patch
@@ -1,25 +1,21 @@
 diff --git a/spyder/app/start.py b/spyder/app/start.py
-index 97b08a600..66486e510 100644
+index ad9f2b8d0..442b4fc46 100644
 --- a/spyder/app/start.py
 +++ b/spyder/app/start.py
-@@ -6,20 +6,8 @@
+@@ -6,16 +6,8 @@
  # (see spyder/__init__.py for details)
  # -----------------------------------------------------------------------------
-
+ 
 -# Remove PYTHONPATH paths from sys.path before other imports to protect against
 -# shadowed standard libraries.
  import os
  import sys
 -if os.environ.get('PYTHONPATH'):
 -    for path in os.environ['PYTHONPATH'].split(os.pathsep):
--        if os.name == 'nt' and 'pkgs' in path:
--            # Don't remove pynsist installer entry for 'pkgs' directory
--            continue
--        else:
--            try:
--                sys.path.remove(path.rstrip(os.sep))
--            except ValueError:
--                pass
-
+-        try:
+-            sys.path.remove(path.rstrip(os.sep))
+-        except ValueError:
+-            pass
+ 
  # Standard library imports
  import ctypes
diff --git a/pkgs/development/python-modules/spylls/default.nix b/pkgs/development/python-modules/spylls/default.nix
index 99f2a8031eadf..ecc1b8034ade1 100644
--- a/pkgs/development/python-modules/spylls/default.nix
+++ b/pkgs/development/python-modules/spylls/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-, pythonOlder
+  pythonOlder,
 
-, poetry-core
+  poetry-core,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     --replace-fail "poetry>=" "poetry-core>="
   '';
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   # no unit tests in source distribution...
   doCheck = false;
diff --git a/pkgs/development/python-modules/spyse-python/default.nix b/pkgs/development/python-modules/spyse-python/default.nix
index 56ffdfe8c080b..fc96952be47a5 100644
--- a/pkgs/development/python-modules/spyse-python/default.nix
+++ b/pkgs/development/python-modules/spyse-python/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, dataclasses-json
-, fetchFromGitHub
-, fetchpatch
-, limiter
-, pythonOlder
-, requests
-, responses
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  dataclasses-json,
+  fetchFromGitHub,
+  fetchpatch,
+  limiter,
+  pythonOlder,
+  requests,
+  responses,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -33,20 +34,19 @@ buildPythonPackage rec {
     })
   ];
 
+  pythonRemoveDeps = [ "dataclasses" ];
+
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "'dataclasses~=0.6'," "" \
-      --replace "dataclasses-json~=0.5.4" "dataclasses-json>=0.5.4" \
-      --replace "responses~=0.13.3" "responses>=0.13.3" \
-      --replace "limiter~=0.1.2" "limiter>=0.1.2" \
-      --replace "requests~=2.26.0" "requests>=2.26.0"
+      --replace-fail "dataclasses-json~=0.5.4" "dataclasses-json>=0.5.4" \
+      --replace-fail "responses~=0.13.3" "responses>=0.13.3" \
+      --replace-fail "limiter~=0.1.2" "limiter>=0.1.2" \
+      --replace-fail "requests~=2.26.0" "requests>=2.26.0"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     requests
     dataclasses-json
     responses
@@ -56,9 +56,7 @@ buildPythonPackage rec {
   # Tests requires an API token
   doCheck = false;
 
-  pythonImportsCheck = [
-    "spyse"
-  ];
+  pythonImportsCheck = [ "spyse" ];
 
   meta = with lib; {
     description = "Python module for spyse.com API";
diff --git a/pkgs/development/python-modules/spython/default.nix b/pkgs/development/python-modules/spython/default.nix
index 4339a3ccfec2e..aeddaa35e7885 100644
--- a/pkgs/development/python-modules/spython/default.nix
+++ b/pkgs/development/python-modules/spython/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "spython";
-  version = "0.3.12";
+  version = "0.3.14";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -17,25 +18,19 @@ buildPythonPackage rec {
     owner = "singularityhub";
     repo = "singularity-cli";
     rev = "refs/tags/${version}";
-    hash = "sha256-fRtqOpDgVMYlVDwbPkrnpd7PT4fV+2WS6RmpJoxaKdQ=";
+    hash = "sha256-PNMzqnKb691wcd8aGSleqHOcsUrahl8e0r5s5ek5GmQ=";
   };
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace '"pytest-runner"' ""
+      --replace-fail '"pytest-runner"' ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "spython"
-  ];
+  pythonImportsCheck = [ "spython" ];
 
   disabledTests = [
     # Assertion errors
@@ -51,10 +46,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Streamlined singularity python client (spython) for singularity";
-    mainProgram = "spython";
     homepage = "https://github.com/singularityhub/singularity-cli";
     changelog = "https://github.com/singularityhub/singularity-cli/blob/${version}/CHANGELOG.md";
     license = licenses.mpl20;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "spython";
   };
 }
diff --git a/pkgs/development/python-modules/sqids/default.nix b/pkgs/development/python-modules/sqids/default.nix
index a9d5fe3729532..11ab9463a812c 100644
--- a/pkgs/development/python-modules/sqids/default.nix
+++ b/pkgs/development/python-modules/sqids/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools-scm
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools-scm,
+  hypothesis,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "sqids";
-  version = "0.4.1";
+  version = "0.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-/8P7/vY0kb7ouUCpgGU4g0Xb77BtSeQVt6nkdcogD50=";
+    hash = "sha256-ZHeY59W/6yNuesRwnP1M2AhjCmxQ+AIF3xe0yT5WAUA=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
   nativeCheckInputs = [
+    hypothesis
     pytestCheckHook
   ];
 
@@ -30,7 +31,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://sqids.org/python";
-    description = "A library that lets you generate short YouTube-looking IDs from numbers";
+    description = "Library that lets you generate short YouTube-looking IDs from numbers";
     license = with licenses; mit;
     maintainers = with maintainers; [ panicgh ];
   };
diff --git a/pkgs/development/python-modules/sqlalchemy-citext/default.nix b/pkgs/development/python-modules/sqlalchemy-citext/default.nix
index b040ee597ef8b..0c0d631bf1512 100644
--- a/pkgs/development/python-modules/sqlalchemy-citext/default.nix
+++ b/pkgs/development/python-modules/sqlalchemy-citext/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, psycopg2
-, sqlalchemy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  psycopg2,
+  sqlalchemy,
 }:
 
 buildPythonPackage rec {
@@ -28,7 +29,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "citext" ];
 
   meta = with lib; {
-    description = "A sqlalchemy plugin that allows postgres use of CITEXT";
+    description = "Sqlalchemy plugin that allows postgres use of CITEXT";
     homepage = "https://github.com/mahmoudimus/sqlalchemy-citext";
     license = licenses.mit;
     maintainers = [ ];
diff --git a/pkgs/development/python-modules/sqlalchemy-continuum/default.nix b/pkgs/development/python-modules/sqlalchemy-continuum/default.nix
index 7801b029e1f28..77452fbccde61 100644
--- a/pkgs/development/python-modules/sqlalchemy-continuum/default.nix
+++ b/pkgs/development/python-modules/sqlalchemy-continuum/default.nix
@@ -1,69 +1,65 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flask
-, flask-login
-, flask-sqlalchemy
-, psycopg2
-, pymysql
-, pytestCheckHook
-, pythonOlder
-, sqlalchemy
-, sqlalchemy-i18n
-, sqlalchemy-utils
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  flask,
+  flask-login,
+  flask-sqlalchemy,
+  psycopg2,
+  pymysql,
+  pytestCheckHook,
+  pythonOlder,
+  sqlalchemy,
+  sqlalchemy-i18n,
+  sqlalchemy-utils,
 }:
 
 buildPythonPackage rec {
   pname = "sqlalchemy-continuum";
-  version = "1.4.1";
-  format = "setuptools";
+  version = "1.4.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    pname = "SQLAlchemy-Continuum";
+    pname = "sqlalchemy_continuum";
     inherit version;
-    hash = "sha256-4BZGzfv9azGiGwrrprv/ZhJY1b6Ed8dQDKs6HHSEjm4=";
+    hash = "sha256-D9K+efcY7aR8IgaHnZLsTr8YiTZGN7PK8+5dNL0ZyOM=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     sqlalchemy
     sqlalchemy-utils
   ];
 
-  passthru.optional-dependencies = {
-    flask = [
-      flask
-    ];
-    flask-login = [
-      flask-login
-    ];
-    flask-sqlalchemy = [
-      flask-sqlalchemy
-    ];
-    i18n = [
-      sqlalchemy-i18n
-    ];
+  optional-dependencies = {
+    flask = [ flask ];
+    flask-login = [ flask-login ];
+    flask-sqlalchemy = [ flask-sqlalchemy ];
+    i18n = [ sqlalchemy-i18n ];
   };
 
   nativeCheckInputs = [
     psycopg2
     pymysql
     pytestCheckHook
-  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
-  # Indicate tests that we don't have a database server at hand
-  env.DB = "sqlite";
+  preCheck = ''
+    # Indicate tests that we don't have a database server at hand
+    export DB=sqlite
+  '';
 
-  pythonImportsCheck = [
-    "sqlalchemy_continuum"
-  ];
+  pythonImportsCheck = [ "sqlalchemy_continuum" ];
 
   meta = with lib; {
     description = "Versioning and auditing extension for SQLAlchemy";
     homepage = "https://github.com/kvesteri/sqlalchemy-continuum/";
     changelog = "https://github.com/kvesteri/sqlalchemy-continuum/blob/${version}/CHANGES.rst";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sqlalchemy-file/default.nix b/pkgs/development/python-modules/sqlalchemy-file/default.nix
new file mode 100644
index 0000000000000..0cd6d46988aef
--- /dev/null
+++ b/pkgs/development/python-modules/sqlalchemy-file/default.nix
@@ -0,0 +1,78 @@
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  fasteners,
+  libcloud,
+  pillow,
+  pytestCheckHook,
+  sqlalchemy,
+  sqlmodel,
+}:
+
+buildPythonPackage rec {
+  pname = "sqlalchemy-file";
+  version = "0.6.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "jowilf";
+    repo = "sqlalchemy-file";
+    rev = version;
+    hash = "sha256-gtW7YA/rQ48tnqPdypMnSqqtwb90nhAkiQNhgEr1M3I=";
+  };
+
+  build-system = [ hatchling ];
+
+  dependencies = [
+    libcloud
+    sqlalchemy
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    fasteners
+    pillow
+    sqlmodel
+  ];
+
+  preCheck = ''
+    # used in get_test_container in tests/utils.py
+    # fixes FileNotFoundError: [Errno 2] No such file or directory: '/tmp/storage/...'
+    mkdir .storage
+    export LOCAL_PATH="$PWD/.storage"
+  '';
+
+  disabledTestPaths = lib.optionals stdenv.hostPlatform.isDarwin [
+    # very flaky, sandbox issues?
+    # libcloud.storage.types.ContainerDoesNotExistError
+    # sqlite3.OperationalError: attempt to write a readonly database
+    "tests/test_content_type_validator.py"
+    "tests/test_image_field.py"
+    "tests/test_image_validator.py"
+    "tests/test_metadata.py"
+    "tests/test_multiple_field.py"
+    "tests/test_multiple_storage.py"
+    "tests/test_processor.py"
+    "tests/test_single_field.py"
+    "tests/test_size_validator.py"
+    "tests/test_sqlmodel.py"
+  ];
+
+  pythonImportsCheck = [
+    "sqlalchemy_file"
+    "sqlalchemy_file.file"
+    "sqlalchemy_file.types"
+    "sqlalchemy_file.helpers"
+  ];
+
+  meta = with lib; {
+    description = "SQLAlchemy extension for attaching files to SQLAlchemy model and uploading them to various storage with Apache Libcloud";
+    homepage = "https://github.com/jowilf/sqlalchemy-file";
+    changelog = "https://github.com/jowilf/sqlalchemy-file/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ pbsds ];
+  };
+}
diff --git a/pkgs/development/python-modules/sqlalchemy-i18n/default.nix b/pkgs/development/python-modules/sqlalchemy-i18n/default.nix
index a33a9783319ff..b3540712d926e 100644
--- a/pkgs/development/python-modules/sqlalchemy-i18n/default.nix
+++ b/pkgs/development/python-modules/sqlalchemy-i18n/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, sqlalchemy
-, sqlalchemy-utils
-, six
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  sqlalchemy,
+  sqlalchemy-utils,
+  six,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/sqlalchemy-jsonfield/default.nix b/pkgs/development/python-modules/sqlalchemy-jsonfield/default.nix
index 54422df03e5a6..e03c86a80a596 100644
--- a/pkgs/development/python-modules/sqlalchemy-jsonfield/default.nix
+++ b/pkgs/development/python-modules/sqlalchemy-jsonfield/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, sqlalchemy
-, setuptools-scm
-, setuptools
-, sphinx
-, pytestCheckHook
-, pytest-sugar
-, pymysql
-, psycopg2
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  sqlalchemy,
+  setuptools-scm,
+  setuptools,
+  pytestCheckHook,
+  pytest-sugar,
+  pymysql,
+  psycopg2,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-4zLXB3UQh6pgQ80KrxkLeC5yiv1R8t2+JmSukmGXr7I=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     sqlalchemy
@@ -42,9 +40,7 @@ buildPythonPackage rec {
     psycopg2
   ];
 
-  pythonImportsCheck = [
-    "sqlalchemy_jsonfield"
-  ];
+  pythonImportsCheck = [ "sqlalchemy_jsonfield" ];
 
   meta = with lib; {
     description = "SQLALchemy JSONField implementation for storing dicts at SQL independently from JSON type support";
diff --git a/pkgs/development/python-modules/sqlalchemy-migrate/default.nix b/pkgs/development/python-modules/sqlalchemy-migrate/default.nix
deleted file mode 100644
index cf3a6b64cfcc0..0000000000000
--- a/pkgs/development/python-modules/sqlalchemy-migrate/default.nix
+++ /dev/null
@@ -1,71 +0,0 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, python
-, scripttest
-, pytz
-, pbr
-, tempita
-, decorator
-, sqlalchemy
-, six
-, sqlparse
-, testrepository
-}:
-
-buildPythonPackage rec {
-  pname = "sqlalchemy-migrate";
-  version = "0.13.0";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1y0lcqii7b4vp7yh9dyxrl4i77hi8jkkw7d06mgdw2h458ljxh0b";
-  };
-
-  patches = [
-    # See: https://review.openstack.org/#/c/608382/
-    # https://github.com/openstack/sqlalchemy-migrate/pull/18
-    (fetchpatch {
-      url = "https://github.com/openstack/sqlalchemy-migrate/commit/a5d69a17d9354ec1a792493280f96484740cf7ff.patch";
-      sha256 = "1qyfq2m7w7xqf0r9bc2x42qcra4r9k9l9g1jy5j0fvlb6bvvjj07";
-    })
-    ./python3.11-comp.diff
-  ];
-
-  postPatch = ''
-    substituteInPlace test-requirements.txt \
-      --replace "ibm_db_sa>=0.3.0;python_version<'3.0'" "" \
-      --replace "ibm-db-sa-py3;python_version>='3.0'" "" \
-      --replace "tempest-lib>=0.1.0" "" \
-      --replace "testtools>=0.9.34,<0.9.36" "" \
-      --replace "pylint" ""
-  '';
-
-  nativeCheckInputs = [ scripttest pytz testrepository ];
-  propagatedBuildInputs = [ pbr tempita decorator sqlalchemy six sqlparse ];
-
-  doCheck = !stdenv.isDarwin;
-
-  checkPhase = ''
-    export PATH=$PATH:$out/bin
-    echo sqlite:///__tmp__ > test_db.cfg
-    # depends on ibm_db_sa
-    rm migrate/tests/changeset/databases/test_ibmdb2.py
-    # wants very old testtools
-    rm migrate/tests/versioning/test_schema.py
-    # transient failures on py27
-    substituteInPlace migrate/tests/versioning/test_util.py --replace "test_load_model" "noop"
-    ${python.interpreter} setup.py test
-  '';
-
-  meta = with lib; {
-    homepage = "https://opendev.org/x/sqlalchemy-migrate";
-    description = "Schema migration tools for SQLAlchemy";
-    license = licenses.asl20;
-    maintainers = teams.openstack.members ++ (with maintainers; [ makefu ]);
-    broken = lib.versionAtLeast sqlalchemy.version "2.0.0";
-  };
-}
diff --git a/pkgs/development/python-modules/sqlalchemy-migrate/python3.11-comp.diff b/pkgs/development/python-modules/sqlalchemy-migrate/python3.11-comp.diff
deleted file mode 100644
index c8e201b0ca6d8..0000000000000
--- a/pkgs/development/python-modules/sqlalchemy-migrate/python3.11-comp.diff
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/migrate/versioning/shell.py b/migrate/versioning/shell.py
-index 5fb86b1..fae0ce4 100644
---- a/migrate/versioning/shell.py
-+++ b/migrate/versioning/shell.py
-@@ -108,7 +108,7 @@ def main(argv=None, **kwargs):
-         parser.error("Invalid command %s" % command)
- 
-     parser.set_usage(inspect.getdoc(command_func))
--    f_args, f_varargs, f_kwargs, f_defaults = inspect.getargspec(command_func)
-+    f_args, f_varargs, f_kwargs, f_defaults, _, _, _ = inspect.getfullargspec(command_func)
-     for arg in f_args:
-         parser.add_option(
-             "--%s" % arg,
diff --git a/pkgs/development/python-modules/sqlalchemy-mixins/default.nix b/pkgs/development/python-modules/sqlalchemy-mixins/default.nix
index 1a075b227913d..1adb1c21d046f 100644
--- a/pkgs/development/python-modules/sqlalchemy-mixins/default.nix
+++ b/pkgs/development/python-modules/sqlalchemy-mixins/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nose
-, pytestCheckHook
-, pythonOlder
-, six
-, sqlalchemy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
+  six,
+  sqlalchemy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "sqlalchemy-mixins";
   version = "2.0.5";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -22,19 +23,16 @@ buildPythonPackage rec {
     hash = "sha256-iJrRlV/M0Z1IOdrwWSblefm6wjvdk4/v0am+It8VeWI=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     six
     sqlalchemy
   ];
 
-  nativeCheckInputs = [
-    nose
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "sqlalchemy_mixins"
-  ];
+  pythonImportsCheck = [ "sqlalchemy_mixins" ];
 
   meta = with lib; {
     description = "Python mixins for SQLAlchemy ORM";
diff --git a/pkgs/development/python-modules/sqlalchemy-utils/default.nix b/pkgs/development/python-modules/sqlalchemy-utils/default.nix
index 1ace2eab95900..e4865cd091af8 100644
--- a/pkgs/development/python-modules/sqlalchemy-utils/default.nix
+++ b/pkgs/development/python-modules/sqlalchemy-utils/default.nix
@@ -1,67 +1,55 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 
-# runtime
-, importlib-metadata
-, sqlalchemy
+  # runtime
+  importlib-metadata,
+  sqlalchemy,
 
-# optionals
-, babel
-, arrow
-, pendulum
-#, intervals
-, phonenumbers
-, passlib
-, colour
-, python-dateutil
-, furl
-, cryptography
+  # optionals
+  babel,
+  arrow,
+  pendulum,
+  #, intervals
+  phonenumbers,
+  passlib,
+  colour,
+  python-dateutil,
+  furl,
+  cryptography,
 
-# tests
-, pytestCheckHook
-, pygments
-, jinja2
-, docutils
-, flexmock
-, psycopg2
-, psycopg2cffi
-, pg8000
-, pytz
-, backports-zoneinfo
-, pymysql
-, pyodbc
+  # tests
+  pytestCheckHook,
+  pygments,
+  jinja2,
+  docutils,
+  flexmock,
+  psycopg2,
+  psycopg2cffi,
+  pg8000,
+  pytz,
+  backports-zoneinfo,
+  pymysql,
+  pyodbc,
 
 }:
 
 buildPythonPackage rec {
   pname = "sqlalchemy-utils";
-  version = "0.41.1";
+  version = "0.41.2";
   format = "setuptools";
 
   src = fetchPypi {
     inherit version;
     pname = "SQLAlchemy-Utils";
-    hash = "sha256-ohgb/wHuuER544Vx0sBxjrUgQvmv2MGU0NAod+hLfXQ=";
+    hash = "sha256-vFmcjDszGeU85sXDxHESC9Ml0AcftvOKEOkk49B7mZA=";
   };
 
-  patches = [
-    ./skip-database-tests.patch
+  patches = [ ./skip-database-tests.patch ];
 
-    (fetchpatch {
-      # sqlalchemy 2.0.22+ compat; https://github.com/kvesteri/sqlalchemy-utils/pull/725
-      url = "https://github.com/kvesteri/sqlalchemy-utils/commit/712aabaefc5c8ca3680751c705cf5a5984c74af1.patch";
-      hash = "sha256-xBdiUtFWjlUhBzHgGFbaKBt3at6NDo+mv9sd8WwiPOA=";
-    })
-  ];
-
-  propagatedBuildInputs = [
-    sqlalchemy
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  propagatedBuildInputs = [ sqlalchemy ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   passthru.optional-dependencies = {
     babel = [ babel ];
@@ -76,27 +64,26 @@ buildPythonPackage rec {
     encrypted = [ cryptography ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-    pygments
-    jinja2
-    docutils
-    flexmock
-    psycopg2
-    pg8000
-    pytz
-    python-dateutil
-    pymysql
-    pyodbc
-  ]
-  ++ lib.flatten (builtins.attrValues passthru.optional-dependencies)
-  ++ lib.optionals (pythonOlder "3.12") [
-    # requires distutils, which were removed in 3.12
-    psycopg2cffi
-  ]
-  ++ lib.optionals (pythonOlder "3.9") [
-    backports-zoneinfo
-  ];
+  nativeCheckInputs =
+    [
+      pytestCheckHook
+      pygments
+      jinja2
+      docutils
+      flexmock
+      psycopg2
+      pg8000
+      pytz
+      python-dateutil
+      pymysql
+      pyodbc
+    ]
+    ++ lib.flatten (builtins.attrValues passthru.optional-dependencies)
+    ++ lib.optionals (pythonOlder "3.12") [
+      # requires distutils, which were removed in 3.12
+      psycopg2cffi
+    ]
+    ++ lib.optionals (pythonOlder "3.9") [ backports-zoneinfo ];
 
   pytestFlagsArray = [
     "--deselect tests/functions/test_database.py::TestDatabasePostgresCreateDatabaseCloseConnection::test_create_database_twice"
diff --git a/pkgs/development/python-modules/sqlalchemy-views/default.nix b/pkgs/development/python-modules/sqlalchemy-views/default.nix
index beafdbc2b5383..596ff985290fa 100644
--- a/pkgs/development/python-modules/sqlalchemy-views/default.nix
+++ b/pkgs/development/python-modules/sqlalchemy-views/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, sqlalchemy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  sqlalchemy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,21 +23,13 @@ buildPythonPackage rec {
     substituteInPlace tox.ini --replace '--cov=sqlalchemy_views --cov-report=term' ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    sqlalchemy
-  ];
+  propagatedBuildInputs = [ sqlalchemy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "sqlalchemy_views"
-  ];
+  pythonImportsCheck = [ "sqlalchemy_views" ];
 
   meta = with lib; {
     description = "Adds CreateView and DropView constructs to SQLAlchemy";
diff --git a/pkgs/development/python-modules/sqlalchemy/1_4.nix b/pkgs/development/python-modules/sqlalchemy/1_4.nix
index a630b110314d8..b741a7710c560 100644
--- a/pkgs/development/python-modules/sqlalchemy/1_4.nix
+++ b/pkgs/development/python-modules/sqlalchemy/1_4.nix
@@ -1,114 +1,79 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, greenlet
+  # dependencies
+  greenlet,
 
-# optionals
-, aiomysql
-, aiosqlite
-, asyncmy
-, asyncpg
-, cx-oracle
-, mariadb
-, mypy
-, mysql-connector
-, mysqlclient
-, pg8000
-, psycopg2
-, psycopg2cffi
-# TODO: pymssql
-, pymysql
-, pyodbc
-# TODO: sqlcipher3
-, typing-extensions
+  # optionals
+  aiomysql,
+  aiosqlite,
+  asyncmy,
+  asyncpg,
+  cx-oracle,
+  mariadb,
+  mypy,
+  mysql-connector,
+  mysqlclient,
+  pg8000,
+  psycopg2,
+  psycopg2cffi,
+  # TODO: pymssql
+  pymysql,
+  pyodbc,
+  # TODO: sqlcipher3
+  typing-extensions,
 
-# tests
-, mock
-, pytest-xdist
-, pytestCheckHook
+  # tests
+  mock,
+  pytest-xdist,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "sqlalchemy";
-  version = "1.4.52";
+  version = "1.4.54";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "sqlalchemy";
     repo = "sqlalchemy";
     rev = "rel_${lib.replaceStrings [ "." ] [ "_" ] version}";
-    hash = "sha256-3JiPDOI6KDQwtBtISvHi3d+Rdm0pz1d9cnZu3+f4jYE=";
+    hash = "sha256-6qAjyqMVrugABHssAQuql3z1YHTAOSm5hARJuJXJJvo=";
   };
 
   postPatch = ''
     sed -i '/tag_build = dev/d' setup.cfg
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    greenlet
-  ];
+  propagatedBuildInputs = [ greenlet ];
 
   passthru.optional-dependencies = lib.fix (self: {
-    asyncio = [
-      greenlet
-    ];
-    mypy = [
-      mypy
-    ];
-    mssql = [
-      pyodbc
-    ];
+    asyncio = [ greenlet ];
+    mypy = [ mypy ];
+    mssql = [ pyodbc ];
     mssql_pymysql = [
       # TODO: pymssql
     ];
-    mssql_pyodbc = [
-      pyodbc
-    ];
-    mysql = [
-      mysqlclient
-    ];
-    mysql_connector = [
-      mysql-connector
-    ];
-    mariadb_connector = [
-      mariadb
-    ];
-    oracle = [
-      cx-oracle
-    ];
-    postgresql = [
-      psycopg2
-    ];
-    postgresql_pg8000 = [
-      pg8000
-    ];
-    postgresql_asyncpg = [
-      asyncpg
-    ] ++ self.asyncio;
-    postgresql_psycopg2binary = [
-      psycopg2
-    ];
-    postgresql_psycopg2cffi = [
-      psycopg2cffi
-    ];
-    pymysql = [
-      pymysql
-    ];
-    aiomysql = [
-      aiomysql
-    ] ++ self.asyncio;
-    asyncmy = [
-      asyncmy
-    ] ++ self.asyncio;
+    mssql_pyodbc = [ pyodbc ];
+    mysql = [ mysqlclient ];
+    mysql_connector = [ mysql-connector ];
+    mariadb_connector = [ mariadb ];
+    oracle = [ cx-oracle ];
+    postgresql = [ psycopg2 ];
+    postgresql_pg8000 = [ pg8000 ];
+    postgresql_asyncpg = [ asyncpg ] ++ self.asyncio;
+    postgresql_psycopg2binary = [ psycopg2 ];
+    postgresql_psycopg2cffi = [ psycopg2cffi ];
+    pymysql = [ pymysql ];
+    aiomysql = [ aiomysql ] ++ self.asyncio;
+    asyncmy = [ asyncmy ] ++ self.asyncio;
     aiosqlite = [
       aiosqlite
       typing-extensions
@@ -131,13 +96,13 @@ buildPythonPackage rec {
     "test/aaa_profiling"
   ];
 
-  pythonImportsCheck = [
-    "sqlalchemy"
-  ];
+  pythonImportsCheck = [ "sqlalchemy" ];
 
   meta = with lib; {
-    changelog = "https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_${builtins.replaceStrings [ "." ] [ "_" ] version}";
-    description = "The Database Toolkit for Python";
+    changelog = "https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_${
+      builtins.replaceStrings [ "." ] [ "_" ] version
+    }";
+    description = "Database Toolkit for Python";
     homepage = "https://github.com/sqlalchemy/sqlalchemy";
     license = licenses.mit;
   };
diff --git a/pkgs/development/python-modules/sqlalchemy/default.nix b/pkgs/development/python-modules/sqlalchemy/default.nix
index ae1f22b4c2f68..426be56eea9d4 100644
--- a/pkgs/development/python-modules/sqlalchemy/default.nix
+++ b/pkgs/development/python-modules/sqlalchemy/default.nix
@@ -1,47 +1,48 @@
-{ lib
-, isPyPy
-, pythonOlder
-, fetchFromGitHub
-, buildPythonPackage
+{
+  lib,
+  isPyPy,
+  pythonOlder,
+  fetchFromGitHub,
+  buildPythonPackage,
 
-# build
-, cython
-, setuptools
+  # build
+  cython,
+  setuptools,
 
-# propagates
-, greenlet
-, typing-extensions
+  # propagates
+  greenlet,
+  typing-extensions,
 
-# optionals
-, aiomysql
-, aiosqlite
-, asyncmy
-, asyncpg
-, cx-oracle
-, mariadb
-, mypy
-, mysql-connector
-, mysqlclient
-, oracledb
-, pg8000
-, psycopg
-, psycopg2
-, psycopg2cffi
-# TODO: pymssql
-, pymysql
-, pyodbc
-# TODO: sqlcipher3
+  # optionals
+  aiomysql,
+  aiosqlite,
+  asyncmy,
+  asyncpg,
+  cx-oracle,
+  mariadb,
+  mypy,
+  mysql-connector,
+  mysqlclient,
+  oracledb,
+  pg8000,
+  psycopg,
+  psycopg2,
+  psycopg2cffi,
+  # TODO: pymssql
+  pymysql,
+  pyodbc,
+  # TODO: sqlcipher3
 
-# tests
-, mock
-, pytest-xdist
-, pytestCheckHook
+  # tests
+  mock,
+  pytest-xdist,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "sqlalchemy";
-  version = "2.0.29";
-  format = "pyproject";
+  version = "2.0.32";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -49,18 +50,17 @@ buildPythonPackage rec {
     owner = "sqlalchemy";
     repo = "sqlalchemy";
     rev = "refs/tags/rel_${lib.replaceStrings [ "." ] [ "_" ] version}";
-    hash = "sha256-jEkuvwq/KKjcsREWDvvTFT87kgu3TSBR3JaseOs54qc=";
+    hash = "sha256-B0T4GsTIis2ZZykRnNOFfhyfW4qU/waXeP0BS5+G1IM=";
   };
 
   postPatch = ''
     sed -i '/tag_build = dev/d' setup.cfg
+
+    substituteInPlace pyproject.toml \
+      --replace-fail "setuptools>=61.0,<69.3" "setuptools"
   '';
 
-  nativeBuildInputs =[
-    setuptools
-  ] ++ lib.optionals (!isPyPy) [
-    cython
-  ];
+  nativeBuildInputs = [ setuptools ] ++ lib.optionals (!isPyPy) [ cython ];
 
   propagatedBuildInputs = [
     greenlet
@@ -68,66 +68,28 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = lib.fix (self: {
-    asyncio = [
-      greenlet
-    ];
-    mypy = [
-      mypy
-    ];
-    mssql = [
-      pyodbc
-    ];
+    asyncio = [ greenlet ];
+    mypy = [ mypy ];
+    mssql = [ pyodbc ];
     mssql_pymysql = [
       # TODO: pymssql
     ];
-    mssql_pyodbc = [
-      pyodbc
-    ];
-    mysql = [
-      mysqlclient
-    ];
-    mysql_connector = [
-      mysql-connector
-    ];
-    mariadb_connector = [
-      mariadb
-    ];
-    oracle = [
-      cx-oracle
-    ];
-    oracle_oracledb = [
-      oracledb
-    ];
-    postgresql = [
-      psycopg2
-    ];
-    postgresql_pg8000 = [
-      pg8000
-    ];
-    postgresql_asyncpg = [
-      asyncpg
-    ] ++ self.asyncio;
-    postgresql_psycopg2binary = [
-      psycopg2
-    ];
-    postgresql_psycopg2cffi = [
-      psycopg2cffi
-    ];
-    postgresql_psycopg = [
-      psycopg
-    ];
-    postgresql_psycopgbinary = [
-      psycopg
-    ];
-    pymysql = [
-      pymysql
-    ];
-    aiomysql = [
-      aiomysql
-    ] ++ self.asyncio;
-    asyncmy = [
-      asyncmy
-    ] ++ self.asyncio;
+    mssql_pyodbc = [ pyodbc ];
+    mysql = [ mysqlclient ];
+    mysql_connector = [ mysql-connector ];
+    mariadb_connector = [ mariadb ];
+    oracle = [ cx-oracle ];
+    oracle_oracledb = [ oracledb ];
+    postgresql = [ psycopg2 ];
+    postgresql_pg8000 = [ pg8000 ];
+    postgresql_asyncpg = [ asyncpg ] ++ self.asyncio;
+    postgresql_psycopg2binary = [ psycopg2 ];
+    postgresql_psycopg2cffi = [ psycopg2cffi ];
+    postgresql_psycopg = [ psycopg ];
+    postgresql_psycopgbinary = [ psycopg ];
+    pymysql = [ pymysql ];
+    aiomysql = [ aiomysql ] ++ self.asyncio;
+    asyncmy = [ asyncmy ] ++ self.asyncio;
     aiosqlite = [
       aiosqlite
       typing-extensions
@@ -152,8 +114,10 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    changelog = "https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_${builtins.replaceStrings [ "." ] [ "_" ] version}";
-    description = "The Python SQL toolkit and Object Relational Mapper";
+    changelog = "https://github.com/sqlalchemy/sqlalchemy/releases/tag/rel_${
+      builtins.replaceStrings [ "." ] [ "_" ] version
+    }";
+    description = "Python SQL toolkit and Object Relational Mapper";
     homepage = "http://www.sqlalchemy.org/";
     license = licenses.mit;
   };
diff --git a/pkgs/development/python-modules/sqlbag/default.nix b/pkgs/development/python-modules/sqlbag/default.nix
index 8b21d89ad5da5..3915bf562e0f0 100644
--- a/pkgs/development/python-modules/sqlbag/default.nix
+++ b/pkgs/development/python-modules/sqlbag/default.nix
@@ -1,23 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy27
-, psycopg2
-, pymysql
-, sqlalchemy
-, pathlib
-, six
-, flask
-, pendulum
-, packaging
-, setuptools
-, poetry-core
-, pytestCheckHook
-, pytest-xdist
-, pytest-sugar
-, postgresql
-, postgresqlTestHook
-,
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  psycopg2,
+  pymysql,
+  sqlalchemy,
+  six,
+  flask,
+  pendulum,
+  packaging,
+  setuptools,
+  poetry-core,
+  pytestCheckHook,
+  pytest-xdist,
+  pytest-sugar,
+  postgresql,
+  postgresqlTestHook,
 }:
 buildPythonPackage rec {
   pname = "sqlbag";
@@ -32,22 +30,18 @@ buildPythonPackage rec {
     hash = "sha256-lipgnkqrzjzqwbhtVcWDQypBNzq6Dct/qoM8y/FNiNs=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs =
-    [
-      sqlalchemy
-      six
-      packaging
+  propagatedBuildInputs = [
+    sqlalchemy
+    six
+    packaging
 
-      psycopg2
-      pymysql
+    psycopg2
+    pymysql
 
-      setuptools # needed for 'pkg_resources'
-    ]
-    ++ lib.optional isPy27 pathlib;
+    setuptools # needed for 'pkg_resources'
+  ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -82,14 +76,13 @@ buildPythonPackage rec {
     "tests"
   ];
 
-  pythonImportsCheck = [
-    "sqlbag"
-  ];
+  pythonImportsCheck = [ "sqlbag" ];
 
   meta = with lib; {
     description = "Handy python code for doing database things";
     homepage = "https://github.com/djrobstep/sqlbag";
     license = with licenses; [ unlicense ];
     maintainers = with maintainers; [ soispha ];
+    broken = true; # Fails to build against the current flask version
   };
 }
diff --git a/pkgs/development/python-modules/sqlglot/default.nix b/pkgs/development/python-modules/sqlglot/default.nix
index c25a2c10bc59e..f146f9d8a7f5e 100644
--- a/pkgs/development/python-modules/sqlglot/default.nix
+++ b/pkgs/development/python-modules/sqlglot/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, duckdb
-, fetchFromGitHub
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  duckdb,
+  fetchFromGitHub,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -43,12 +44,10 @@ buildPythonPackage rec {
     "tests/dataframe/integration"
   ];
 
-  pythonImportsCheck = [
-    "sqlglot"
-  ];
+  pythonImportsCheck = [ "sqlglot" ];
 
   meta = with lib; {
-    description = "A no dependency Python SQL parser, transpiler, and optimizer";
+    description = "No dependency Python SQL parser, transpiler, and optimizer";
     homepage = "https://github.com/tobymao/sqlglot";
     changelog = "https://github.com/tobymao/sqlglot/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/sqlite-anyio/default.nix b/pkgs/development/python-modules/sqlite-anyio/default.nix
new file mode 100644
index 0000000000000..811e70487945e
--- /dev/null
+++ b/pkgs/development/python-modules/sqlite-anyio/default.nix
@@ -0,0 +1,44 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  hatchling,
+  anyio,
+  pytestCheckHook,
+  trio,
+}:
+
+buildPythonPackage rec {
+  pname = "sqlite-anyio";
+  version = "0.2.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "davidbrochart";
+    repo = "sqlite-anyio";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-cZyTpFmYD0l20Cmxl+Hwfh3oVkWvtXD45dMpcSwA2QE=";
+  };
+
+  build-system = [ hatchling ];
+
+  dependencies = [ anyio ];
+
+  pythonImportsCheck = [ "sqlite_anyio" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    trio
+  ];
+
+  meta = with lib; {
+    description = "Asynchronous client for SQLite using AnyIO";
+    homepage = "https://github.com/davidbrochart/sqlite-anyio";
+    changelog = "https://github.com/davidbrochart/sqlite-anyio/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = [ ];
+  };
+}
diff --git a/pkgs/development/python-modules/sqlite-fts4/default.nix b/pkgs/development/python-modules/sqlite-fts4/default.nix
index 27a6913020a03..1d7af05a78e33 100644
--- a/pkgs/development/python-modules/sqlite-fts4/default.nix
+++ b/pkgs/development/python-modules/sqlite-fts4/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-Ibiows3DSnzjIUv7U9tYNVnDaecBBxjXzDqxbIlNhhU=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "sqlite_fts4"
-  ];
+  pythonImportsCheck = [ "sqlite_fts4" ];
 
   meta = with lib; {
     description = "Custom Python functions for working with SQLite FTS4";
diff --git a/pkgs/development/python-modules/sqlite-migrate/default.nix b/pkgs/development/python-modules/sqlite-migrate/default.nix
index b19d3e590f526..8c1d58d9dc017 100644
--- a/pkgs/development/python-modules/sqlite-migrate/default.nix
+++ b/pkgs/development/python-modules/sqlite-migrate/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, sqlite-utils
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  sqlite-utils,
 }:
 
 buildPythonPackage rec {
@@ -19,24 +20,16 @@ buildPythonPackage rec {
     hash = "sha256-wztAqe3TW0SQ4JX1XPWeA4KNJci5c3fNih97cmlPwRE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    sqlite-utils
-  ];
+  propagatedBuildInputs = [ sqlite-utils ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "sqlite_migrate"
-  ];
+  pythonImportsCheck = [ "sqlite_migrate" ];
 
   meta = with lib; {
-    description = "A simple database migration system for SQLite, based on sqlite-utils";
+    description = "Simple database migration system for SQLite, based on sqlite-utils";
     homepage = "https://github.com/simonw/sqlite-migrate";
     changelog = "https://github.com/simonw/sqlite-migrate/releases/tag/${version}";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/sqlite-utils/default.nix b/pkgs/development/python-modules/sqlite-utils/default.nix
index cd93626f08ebe..85a18c97d88f9 100644
--- a/pkgs/development/python-modules/sqlite-utils/default.nix
+++ b/pkgs/development/python-modules/sqlite-utils/default.nix
@@ -1,38 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, pythonOlder
-, click
-, click-default-group
-, python-dateutil
-, sqlite-fts4
-, tabulate
-, pluggy
-, pytestCheckHook
-, hypothesis
-, testers
-, sqlite-utils
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  click,
+  click-default-group,
+  python-dateutil,
+  sqlite-fts4,
+  tabulate,
+  pluggy,
+  pytestCheckHook,
+  hypothesis,
+  testers,
+  sqlite-utils,
+  setuptools,
 }:
-
 buildPythonPackage rec {
   pname = "sqlite-utils";
-  version = "3.36";
-  format = "setuptools";
+  version = "3.37";
+  pyproject = true;
+
+  build-system = [ setuptools ];
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-3MMROU/obcFvZQN7AHXiOO/P0uEuZdU+0ZaVRQKZbzw=";
+    inherit version;
+    pname = "sqlite_utils";
+    hash = "sha256-VCpxAz1OeTb+kJIwrJeU0+IAAhg4q2Pbrzzo9bwic6Q=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "click-default-group-wheel" "click-default-group"
-  '';
-
-  propagatedBuildInputs = [
+  dependencies = [
     click
     click-default-group
     python-dateutil
@@ -46,13 +44,9 @@ buildPythonPackage rec {
     hypothesis
   ];
 
-  pythonImportsCheck = [
-    "sqlite_utils"
-  ];
+  pythonImportsCheck = [ "sqlite_utils" ];
 
-  passthru.tests.version = testers.testVersion {
-    package = sqlite-utils;
-  };
+  passthru.tests.version = testers.testVersion { package = sqlite-utils; };
 
   meta = with lib; {
     description = "Python CLI utility and library for manipulating SQLite databases";
@@ -60,6 +54,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/simonw/sqlite-utils";
     changelog = "https://github.com/simonw/sqlite-utils/releases/tag/${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ meatcar techknowlogick ];
+    maintainers = with maintainers; [
+      meatcar
+      techknowlogick
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/sqlitedict/default.nix b/pkgs/development/python-modules/sqlitedict/default.nix
index eb11a9805c2fc..8dbe9d93b4521 100644
--- a/pkgs/development/python-modules/sqlitedict/default.nix
+++ b/pkgs/development/python-modules/sqlitedict/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, py
-, pytest-benchmark
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  py,
+  pytest-benchmark,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-GfvvkQ6a75UBPn70IFOvjvL1MedSc4siiIjA3IsQnic=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     py
@@ -36,13 +35,9 @@ buildPythonPackage rec {
     mkdir tests/db
   '';
 
-  pythonImportsCheck = [
-    "sqlitedict"
-  ];
+  pythonImportsCheck = [ "sqlitedict" ];
 
-  pytestFlagsArray = [
-    "--benchmark-disable"
-  ];
+  pytestFlagsArray = [ "--benchmark-disable" ];
 
   meta = with lib; {
     description = "Persistent, thread-safe dict";
diff --git a/pkgs/development/python-modules/sqliteschema/default.nix b/pkgs/development/python-modules/sqliteschema/default.nix
index cb73b6e5a606b..f4c5c89e08e72 100644
--- a/pkgs/development/python-modules/sqliteschema/default.nix
+++ b/pkgs/development/python-modules/sqliteschema/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mbstrdecoder
-, setuptools
-, simplesqlite
-, sqliteschema
-, tabledata
-, typepy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mbstrdecoder,
+  setuptools,
+  simplesqlite,
+  sqliteschema,
+  tabledata,
+  typepy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/sqlmap/default.nix b/pkgs/development/python-modules/sqlmap/default.nix
index 9771771c8d0f2..f7632133b5450 100644
--- a/pkgs/development/python-modules/sqlmap/default.nix
+++ b/pkgs/development/python-modules/sqlmap/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "sqlmap";
-  version = "1.8.4";
+  version = "1.8.9";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-zTFdGDzvPlNebsepPxXn2++22YANlDu82yprs7eHfac=";
+    hash = "sha256-0ARkSUzmrqyRSPl3EXU7NzcnaWf+Zbt4zQZ626gvfEs=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/sqlmodel/default.nix b/pkgs/development/python-modules/sqlmodel/default.nix
index 55bf943264de7..89f19b1e65057 100644
--- a/pkgs/development/python-modules/sqlmodel/default.nix
+++ b/pkgs/development/python-modules/sqlmodel/default.nix
@@ -1,20 +1,23 @@
 {
   lib,
   buildPythonPackage,
+  black,
+  jinja2,
   dirty-equals,
   fastapi,
   fetchFromGitHub,
+  fetchpatch,
   pdm-backend,
   pydantic,
   pytest-asyncio,
-  pytest7CheckHook,
+  pytestCheckHook,
   pythonOlder,
   sqlalchemy,
 }:
 
 buildPythonPackage rec {
   pname = "sqlmodel";
-  version = "0.0.18";
+  version = "0.0.22";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -23,9 +26,17 @@ buildPythonPackage rec {
     owner = "tiangolo";
     repo = "sqlmodel";
     rev = "refs/tags/${version}";
-    hash = "sha256-2ens+wEFJThccBTBeBy8j1AzKJtebg3dJTGG6+Cpt+Q=";
+    hash = "sha256-y6lY6DlfdCF5dliRkiU6r+ny/a9ssDtqRmF+/rcKFkg=";
   };
 
+  patches = [
+    (fetchpatch { # https://github.com/tiangolo/sqlmodel/pull/969
+      name = "passthru-environ-variables.patch";
+      url = "https://github.com/tiangolo/sqlmodel/pull/969/commits/42d33049e9e4182b78914ad41d1e3d30125126ba.patch";
+      hash = "sha256-dPuFCFUnmTpduxn45tE8XUP0Jlwjwmwe+zFaKSganOg=";
+    })
+  ];
+
   build-system = [ pdm-backend ];
 
   dependencies = [
@@ -34,10 +45,12 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
+    black
+    jinja2
     dirty-equals
     fastapi
     pytest-asyncio
-    pytest7CheckHook
+    pytestCheckHook
   ];
 
   pythonImportsCheck = [ "sqlmodel" ];
diff --git a/pkgs/development/python-modules/sqlobject/default.nix b/pkgs/development/python-modules/sqlobject/default.nix
index e4ac317418ab2..75eccd5268eb0 100644
--- a/pkgs/development/python-modules/sqlobject/default.nix
+++ b/pkgs/development/python-modules/sqlobject/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, formencode
-, pastedeploy
-, paste
-, pydispatcher
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  formencode,
+  pastedeploy,
+  paste,
+  pydispatcher,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -29,24 +30,20 @@ buildPythonPackage rec {
     pydispatcher
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # https://github.com/sqlobject/sqlobject/issues/179
     "test_fail"
   ];
 
-  pythonImportsCheck = [
-    "sqlobject"
-  ];
+  pythonImportsCheck = [ "sqlobject" ];
 
   meta = with lib; {
     description = "Object Relational Manager for providing an object interface to your database";
     homepage = "https://www.sqlobject.org/";
     changelog = "https://github.com/sqlobject/sqlobject/blob/${version}/docs/News.rst";
     license = licenses.lgpl21Only;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sqlparse/default.nix b/pkgs/development/python-modules/sqlparse/default.nix
index c0afa5eeb7c1c..69c91cf65c0cf 100644
--- a/pkgs/development/python-modules/sqlparse/default.nix
+++ b/pkgs/development/python-modules/sqlparse/default.nix
@@ -1,32 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, installShellFiles
-, pytestCheckHook
-, isPy3k
-
-# for passthru.tests
-, django
-, django_4
-, django-silk
-, pgadmin4
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  installShellFiles,
+  pytestCheckHook,
+  pythonOlder,
+
+  # for passthru.tests
+  django,
+  django_4,
+  django-silk,
+  pgadmin4,
 }:
 
 buildPythonPackage rec {
   pname = "sqlparse";
-  version = "0.4.4";
+  version = "0.5.0";
+  pyproject = true;
 
-  disabled = !isPy3k;
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-1EYYPoS4NJ+jBh8P5/BsqUumW0JpRv/r5uPoKVMyQgw=";
+    hash = "sha256-cU0KSTLAWdFhifWO9UEewih6Q2DxfN0O3S0J1MUIfJM=";
   };
 
-  format = "pyproject";
+  build-system = [ hatchling ];
 
-  nativeBuildInputs = [ flit-core installShellFiles ];
+  nativeBuildInputs = [ installShellFiles ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
@@ -35,16 +37,22 @@ buildPythonPackage rec {
   '';
 
   passthru.tests = {
-    inherit django django_4 django-silk pgadmin4;
+    inherit
+      django
+      django_4
+      django-silk
+      pgadmin4
+      ;
   };
 
   meta = with lib; {
     description = "Non-validating SQL parser for Python";
-    mainProgram = "sqlformat";
     longDescription = ''
       Provides support for parsing, splitting and formatting SQL statements.
     '';
     homepage = "https://github.com/andialbrecht/sqlparse";
+    changelog = "https://github.com/andialbrecht/sqlparse/blob/${version}/CHANGELOG";
     license = licenses.bsd3;
+    mainProgram = "sqlformat";
   };
 }
diff --git a/pkgs/development/python-modules/sqlsoup/default.nix b/pkgs/development/python-modules/sqlsoup/default.nix
deleted file mode 100644
index d75621cc6345c..0000000000000
--- a/pkgs/development/python-modules/sqlsoup/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ buildPythonPackage, fetchPypi, lib, sqlalchemy, nose }:
-
-buildPythonPackage rec {
-  pname = "sqlsoup";
-  version = "0.9.1";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1mj00fhxj75ac3i8xk9jmm7hvcjz9p4x2r3yndcwsgb659rvgbrg";
-  };
-
-  propagatedBuildInputs = [ sqlalchemy ];
-  nativeCheckInputs = [ nose ];
-
-  meta = with lib; {
-    description = "A one step database access tool, built on the SQLAlchemy ORM";
-    homepage = "https://github.com/zzzeek/sqlsoup";
-    license = licenses.mit;
-    maintainers = [];
-    broken = true; # incompatible with sqlalchemy>=1.4 and unmaintained since 2016
-  };
-}
diff --git a/pkgs/development/python-modules/sqltrie/default.nix b/pkgs/development/python-modules/sqltrie/default.nix
index 6c8ee069a8cfe..8b229ed9ef390 100644
--- a/pkgs/development/python-modules/sqltrie/default.nix
+++ b/pkgs/development/python-modules/sqltrie/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, attrs
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pygtrie
-, orjson
-, python
-, setuptools-scm
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pygtrie,
+  orjson,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "sqltrie";
-  version = "0.11.0";
+  version = "0.11.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -20,12 +20,10 @@ buildPythonPackage rec {
     owner = "iterative";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-QR5IlMHrDNsauKW3VQG0ibMUwetATuwX4fszGPzKuxg=";
+    hash = "sha256-elW1hCB0sXc+GyIO0358EwcIn8J1qJZE2pOLAxqxhwA=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     attrs
@@ -36,9 +34,7 @@ buildPythonPackage rec {
   # nox is not available at the moment
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sqltrie"
-  ];
+  pythonImportsCheck = [ "sqltrie" ];
 
   meta = with lib; {
     description = "DVC's data management subsystem";
diff --git a/pkgs/development/python-modules/squarify/default.nix b/pkgs/development/python-modules/squarify/default.nix
index 5bdc4c43f3fb1..b37df470acaad 100644
--- a/pkgs/development/python-modules/squarify/default.nix
+++ b/pkgs/development/python-modules/squarify/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, pytestCheckHook
-, matplotlib
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pytestCheckHook,
+  matplotlib,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/sre-yield/default.nix b/pkgs/development/python-modules/sre-yield/default.nix
index 68d8c43ebb13a..04cc121840902 100644
--- a/pkgs/development/python-modules/sre-yield/default.nix
+++ b/pkgs/development/python-modules/sre-yield/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,14 +17,10 @@ buildPythonPackage rec {
     hash = "sha256-6U8aKjy6//4dzRXB1U5AGhUX4FKqZMfTFk+I3HYde4o=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   doCheck = true;
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   meta = with lib; {
     description = "Python library to efficiently generate all values that can match a given regular expression";
@@ -33,4 +30,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ danc86 ];
   };
 }
-
diff --git a/pkgs/development/python-modules/srp/default.nix b/pkgs/development/python-modules/srp/default.nix
index 9527131231340..6ac658f7ef794 100644
--- a/pkgs/development/python-modules/srp/default.nix
+++ b/pkgs/development/python-modules/srp/default.nix
@@ -1,38 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "srp";
-  version = "1.0.20";
+  version = "1.0.21";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-LbRTvc4mue6tNnp7V4MHTvgOhIK/MMAUCnuJg2oFRwc=";
+    hash = "sha256-hmgTvPUhGJoVY+bKMRK29U/fclpBCi2+u28NhLgqHx0=";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   # Tests ends up with libssl.so cannot load shared
   doCheck = false;
 
-  pythonImportsCheck = [
-    "srp"
-  ];
+  pythonImportsCheck = [ "srp" ];
 
   meta = with lib; {
     description = "Implementation of the Secure Remote Password protocol (SRP)";
     longDescription = ''
-     This package provides an implementation of the Secure Remote Password protocol (SRP).
-     SRP is a cryptographically strong authentication protocol for password-based, mutual authentication over an insecure network connection.
+      This package provides an implementation of the Secure Remote Password protocol (SRP).
+      SRP is a cryptographically strong authentication protocol for password-based, mutual authentication over an insecure network connection.
     '';
     homepage = "https://github.com/cocagne/pysrp";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/srpenergy/default.nix b/pkgs/development/python-modules/srpenergy/default.nix
index 8d82ad614d0dc..7eb66f05d5442 100644
--- a/pkgs/development/python-modules/srpenergy/default.nix
+++ b/pkgs/development/python-modules/srpenergy/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, python-dateutil
-, requests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  python-dateutil,
+  requests,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -27,18 +28,14 @@ buildPythonPackage rec {
       --replace-fail "setuptools==" "setuptools>="
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     python-dateutil
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "srpenergy.client" ];
 
diff --git a/pkgs/development/python-modules/srptools/default.nix b/pkgs/development/python-modules/srptools/default.nix
index 801980b9214d1..9455f16b18f61 100644
--- a/pkgs/development/python-modules/srptools/default.nix
+++ b/pkgs/development/python-modules/srptools/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,17 +19,11 @@ buildPythonPackage rec {
     hash = "sha256-f6QzclahVC6PW7S+0Z4dmuqY/l/5uvdmkzQqHdasfJY=";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "srptools"
-  ];
+  pythonImportsCheck = [ "srptools" ];
 
   meta = with lib; {
     description = "Module to implement Secure Remote Password (SRP) authentication";
@@ -36,6 +31,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/idlesign/srptools";
     changelog = "https://github.com/idlesign/srptools/blob/v${version}/CHANGELOG";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/srsly/default.nix b/pkgs/development/python-modules/srsly/default.nix
index be1871c0dd14e..5d40ccd3a06e5 100644
--- a/pkgs/development/python-modules/srsly/default.nix
+++ b/pkgs/development/python-modules/srsly/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, cython_0
-, catalogue
-, mock
-, numpy
-, psutil
-, pytest
-, ruamel-yaml
-, setuptools
-, tornado
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  cython_0,
+  catalogue,
+  mock,
+  numpy,
+  psutil,
+  pytest,
+  ruamel-yaml,
+  setuptools,
+  tornado,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  propagatedBuildInputs = [
-    catalogue
-  ];
+  propagatedBuildInputs = [ catalogue ];
 
   nativeCheckInputs = [
     mock
@@ -43,9 +42,7 @@ buildPythonPackage rec {
     tornado
   ];
 
-  pythonImportsCheck = [
-    "srsly"
-  ];
+  pythonImportsCheck = [ "srsly" ];
 
   meta = with lib; {
     changelog = "https://github.com/explosion/srsly/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/srt/default.nix b/pkgs/development/python-modules/srt/default.nix
index 8fb0d72761418..b1badbc6c71ba 100644
--- a/pkgs/development/python-modules/srt/default.nix
+++ b/pkgs/development/python-modules/srt/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hypothesis
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hypothesis,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -11,11 +11,9 @@ buildPythonPackage rec {
   version = "3.5.3";
   format = "setuptools";
 
-  disabled = pythonOlder "2.7";
-
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-SIQxUEOk8HQP0fh47WyqN2rAbXDhNfMGptxEYy7tDMA=";
+    hash = "sha256-SIQxUEOk8HQP0fh47WyqN2rAbXDhNfMGptxEYy7tDMA=";
   };
 
   nativeCheckInputs = [
@@ -27,8 +25,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/cdown/srt";
-    description = "A tiny but featureful Python library for parsing, modifying, and composing SRT files";
+    description = "Tiny but featureful Python library for parsing, modifying, and composing SRT files";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ friedelino ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/srvlookup/default.nix b/pkgs/development/python-modules/srvlookup/default.nix
index a81c1d25da23c..c13860e68db96 100644
--- a/pkgs/development/python-modules/srvlookup/default.nix
+++ b/pkgs/development/python-modules/srvlookup/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, dnspython
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  dnspython,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-iXbi25HsoNX0hnhwZoFik5ddlJ7i+xml3HGaezj3jgY=";
   };
 
-  propagatedBuildInputs = [
-    dnspython
-  ];
+  propagatedBuildInputs = [ dnspython ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "srvlookup"
-  ];
+  pythonImportsCheck = [ "srvlookup" ];
 
   meta = with lib; {
     description = "Wrapper for dnspython to return SRV records for a given host, protocol, and domain name";
diff --git a/pkgs/development/python-modules/ssdeep/default.nix b/pkgs/development/python-modules/ssdeep/default.nix
index 44a7f37190dc7..83c720de8e830 100644
--- a/pkgs/development/python-modules/ssdeep/default.nix
+++ b/pkgs/development/python-modules/ssdeep/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, cffi
-, fetchFromGitHub
-, pytestCheckHook
-, six
-, ssdeep
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  cffi,
+  fetchFromGitHub,
+  pytestCheckHook,
+  six,
+  ssdeep,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,27 +23,21 @@ buildPythonPackage rec {
     hash = "sha256-I5ci5BS+B3OE0xdLSahu3HCh99jjhnRHJFz830SvFpg=";
   };
 
-  buildInputs = [
-    ssdeep
-  ];
+  buildInputs = [ ssdeep ];
 
   propagatedBuildInputs = [
     cffi
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace setup.py \
       --replace '"pytest-runner"' ""
   '';
 
-  pythonImportsCheck = [
-    "ssdeep"
-  ];
+  pythonImportsCheck = [ "ssdeep" ];
 
   meta = with lib; {
     description = "Python wrapper for the ssdeep library";
diff --git a/pkgs/development/python-modules/ssdp/default.nix b/pkgs/development/python-modules/ssdp/default.nix
index 87e4181c9b635..b354b35a01c1b 100644
--- a/pkgs/development/python-modules/ssdp/default.nix
+++ b/pkgs/development/python-modules/ssdp/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, flit-scm
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  flit-scm,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -31,13 +32,9 @@ buildPythonPackage rec {
     flit-scm
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ssdp"
-  ];
+  pythonImportsCheck = [ "ssdp" ];
 
   meta = with lib; {
     description = "Python asyncio library for Simple Service Discovery Protocol (SSDP)";
diff --git a/pkgs/development/python-modules/ssdpy/default.nix b/pkgs/development/python-modules/ssdpy/default.nix
index ba9d32d710b18..8cadb4ec74fa9 100644
--- a/pkgs/development/python-modules/ssdpy/default.nix
+++ b/pkgs/development/python-modules/ssdpy/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
-, pytest-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  pytest-mock,
 }:
 
 buildPythonPackage rec {
@@ -40,7 +41,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     changelog = "https://github.com/MoshiBin/ssdpy/releases/tag/${version}";
-    description = "A lightweight, compatible SSDP library for Python";
+    description = "Lightweight, compatible SSDP library for Python";
     homepage = "https://github.com/MoshiBin/ssdpy";
     license = licenses.mit;
     maintainers = with maintainers; [ mjm ];
diff --git a/pkgs/development/python-modules/sse-starlette/default.nix b/pkgs/development/python-modules/sse-starlette/default.nix
index d2fc7de38bb17..b6526f96e2395 100644
--- a/pkgs/development/python-modules/sse-starlette/default.nix
+++ b/pkgs/development/python-modules/sse-starlette/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "sse-starlette";
-  version = "2.1.0";
+  version = "2.1.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
     owner = "sysid";
     repo = "sse-starlette";
     rev = "refs/tags/v${version}";
-    hash = "sha256-gBkEs1jSKIOme2rbLf+pM3jFDgJkxyU92q+GsUsp8Eo=";
+    hash = "sha256-cnUx3wYawyqt/m/FB6abxknMbc64k09a1kAJoA4yN6w=";
   };
 
   build-system = [ pdm-backend ];
diff --git a/pkgs/development/python-modules/sseclient-py/default.nix b/pkgs/development/python-modules/sseclient-py/default.nix
index 5e9fcf4c61e9a..b8ea4f4053f3f 100644
--- a/pkgs/development/python-modules/sseclient-py/default.nix
+++ b/pkgs/development/python-modules/sseclient-py/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,17 +20,11 @@ buildPythonPackage rec {
     hash = "sha256-rNiJqR7/e+Rhi6kVBY8gZJZczqSUsyszotXkb4OKfWk=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "sseclient"
-  ];
+  pythonImportsCheck = [ "sseclient" ];
 
-  pytestFlagsArray = [
-    "tests/unittests.py"
-  ];
+  pytestFlagsArray = [ "tests/unittests.py" ];
 
   meta = with lib; {
     description = "Pure-Python Server Side Events (SSE) client";
diff --git a/pkgs/development/python-modules/sseclient/default.nix b/pkgs/development/python-modules/sseclient/default.nix
index bc1be1222bbe6..70927d104e5dc 100644
--- a/pkgs/development/python-modules/sseclient/default.nix
+++ b/pkgs/development/python-modules/sseclient/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, requests
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -24,13 +25,9 @@ buildPythonPackage rec {
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = [
-    "event_stream"
-  ];
+  disabledTests = [ "event_stream" ];
 
   meta = with lib; {
     description = "Client library for reading Server Sent Event streams";
diff --git a/pkgs/development/python-modules/ssg/default.nix b/pkgs/development/python-modules/ssg/default.nix
index 53fbbb0f3868e..a54b198a4533c 100644
--- a/pkgs/development/python-modules/ssg/default.nix
+++ b/pkgs/development/python-modules/ssg/default.nix
@@ -4,7 +4,7 @@
   fetchFromGitHub,
   fetchpatch,
 
-  python3,
+  python,
   unittestCheckHook,
   setuptools,
 
@@ -45,7 +45,7 @@ buildPythonPackage {
 
   pythonImportsCheck = [ "ssg" ];
 
-  postInstall = "rm -rf $out/${python3.sitePackages}/scripts";
+  postInstall = "rm -rf $out/${python.sitePackages}/scripts";
 
   meta = with lib; {
     description = "TCRF syllable segmenter for Thai";
diff --git a/pkgs/development/python-modules/sshfs/default.nix b/pkgs/development/python-modules/sshfs/default.nix
index a014d59b38c8a..f180d5c6c3a82 100644
--- a/pkgs/development/python-modules/sshfs/default.nix
+++ b/pkgs/development/python-modules/sshfs/default.nix
@@ -1,56 +1,70 @@
-{ stdenv
-, lib
-, asyncssh
-, bcrypt
-, buildPythonPackage
-, fetchFromGitHub
-, fsspec
-, mock-ssh-server
-, pytest-asyncio
-, pytestCheckHook
-, setuptools
-, setuptools-scm
+{
+  lib,
+  stdenv,
+  asyncssh,
+  bcrypt,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fsspec,
+  importlib-metadata,
+  mock-ssh-server,
+  pytest-asyncio,
+  pytestCheckHook,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "sshfs";
-  version = "2024.4.1";
+  version = "2024.6.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "fsspec";
     repo = "sshfs";
     rev = "refs/tags/${version}";
-    hash = "sha256-qkEojf/3YBMoYbRt0Q93MJYXyL9AWR24AEe3/zdn58U=";
+    hash = "sha256-8Vut/JDLmWrTys8aaIBRbaWlvGCg6edaXmMCFxjGhag=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     asyncssh
-    bcrypt
     fsspec
   ];
 
+  optional-dependencies = {
+    bcrypt = [ asyncssh ] ++ asyncssh.optional-dependencies.bcrypt;
+    fido2 = [ asyncssh ] ++ asyncssh.optional-dependencies.fido2;
+    gssapi = [ asyncssh ] ++ asyncssh.optional-dependencies.gssapi;
+    libnacl = [ asyncssh ] ++ asyncssh.optional-dependencies.libnacl;
+    pkcs11 = [ asyncssh ] ++ asyncssh.optional-dependencies.python-pkcs11;
+    pyopenssl = [ asyncssh ] ++ asyncssh.optional-dependencies.pyopenssl;
+  };
+
   __darwinAllowLocalNetworking = true;
 
   nativeCheckInputs = [
+    importlib-metadata
     mock-ssh-server
     pytest-asyncio
     pytestCheckHook
   ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [
-    # test fails with sandbox enabled
-    "test_checksum"
-  ];
+  disabledTests =
+    [
+      # Test requires network access
+      "test_config_expansions"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Test fails with sandbox enabled
+      "test_checksum"
+    ];
 
-  pythonImportsCheck = [
-    "sshfs"
-  ];
+  pythonImportsCheck = [ "sshfs" ];
 
   meta = with lib; {
     description = "SSH/SFTP implementation for fsspec";
diff --git a/pkgs/development/python-modules/sshpubkeys/default.nix b/pkgs/development/python-modules/sshpubkeys/default.nix
index a63b456292f37..0f2fc24474a12 100644
--- a/pkgs/development/python-modules/sshpubkeys/default.nix
+++ b/pkgs/development/python-modules/sshpubkeys/default.nix
@@ -1,6 +1,9 @@
-{ lib, buildPythonPackage, fetchFromGitHub
-, cryptography
-, ecdsa
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cryptography,
+  ecdsa,
 }:
 
 buildPythonPackage rec {
@@ -15,7 +18,10 @@ buildPythonPackage rec {
     sha256 = "1qsixmqg97kyvg1naw76blq4314vaw4hl5f9wi0v111mcmdia1r4";
   };
 
-  propagatedBuildInputs = [ cryptography ecdsa ];
+  propagatedBuildInputs = [
+    cryptography
+    ecdsa
+  ];
 
   meta = with lib; {
     description = "OpenSSH Public Key Parser for Python";
diff --git a/pkgs/development/python-modules/sshtunnel/default.nix b/pkgs/development/python-modules/sshtunnel/default.nix
index dff398addf8a4..1422b50c320d1 100644
--- a/pkgs/development/python-modules/sshtunnel/default.nix
+++ b/pkgs/development/python-modules/sshtunnel/default.nix
@@ -1,7 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi
-, paramiko
-, pytestCheckHook
-, mock
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  paramiko,
+  pytestCheckHook,
+  mock,
 }:
 
 buildPythonPackage rec {
@@ -16,7 +19,10 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ paramiko ];
 
-  nativeCheckInputs = [ pytestCheckHook mock ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    mock
+  ];
 
   # disable impure tests
   disabledTests = [
@@ -30,6 +36,6 @@ buildPythonPackage rec {
     mainProgram = "sshtunnel";
     homepage = "https://github.com/pahaz/sshtunnel";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sslib/default.nix b/pkgs/development/python-modules/sslib/default.nix
index 4f0492b84b37e..422a775e1ef51 100644
--- a/pkgs/development/python-modules/sslib/default.nix
+++ b/pkgs/development/python-modules/sslib/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchPypi, buildPythonPackage, isPy3k }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  isPy3k,
+}:
 
 buildPythonPackage rec {
   pname = "sslib";
@@ -16,7 +21,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/jqueiroz/python-sslib";
-    description = "A Python3 library for sharing secrets";
+    description = "Python3 library for sharing secrets";
     license = licenses.mit;
     maintainers = with maintainers; [ jqueiroz ];
   };
diff --git a/pkgs/development/python-modules/ssort/default.nix b/pkgs/development/python-modules/ssort/default.nix
new file mode 100644
index 0000000000000..71a950b98bd70
--- /dev/null
+++ b/pkgs/development/python-modules/ssort/default.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  pathspec,
+  pytestCheckHook,
+  pyyaml,
+}:
+
+buildPythonPackage rec {
+  pname = "ssort";
+  version = "0.13.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "bwhmather";
+    repo = "ssort";
+    rev = "refs/tags/${version}";
+    hash = "sha256-P/FUayCC7KfXjtzclTPLhLw5o0bV4L98tes69w+038o=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ pathspec ];
+
+  pythonImportsCheck = [ "ssort" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pyyaml
+  ];
+
+  preCheck = ''
+    export PATH=$out/bin:$PATH
+  '';
+
+  meta = {
+    description = "Automatically sorting python statements within a module";
+    homepage = "https://github.com/bwhmather/ssort";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tochiaha ];
+    mainProgram = "ssort";
+  };
+}
diff --git a/pkgs/development/python-modules/stack-data/default.nix b/pkgs/development/python-modules/stack-data/default.nix
index d6cbacf3abd08..5e27b9805af63 100644
--- a/pkgs/development/python-modules/stack-data/default.nix
+++ b/pkgs/development/python-modules/stack-data/default.nix
@@ -1,41 +1,36 @@
-{ asttokens
-, buildPythonPackage
-, cython
-, executing
-, fetchFromGitHub
-, git
-, lib
-, littleutils
-, pure-eval
-, pygments
-, pytestCheckHook
-, setuptools-scm
-, toml
-, typeguard
+{
+  asttokens,
+  buildPythonPackage,
+  cython,
+  executing,
+  fetchFromGitHub,
+  lib,
+  littleutils,
+  pure-eval,
+  pygments,
+  pytestCheckHook,
+  setuptools-scm,
+  typeguard,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "stack-data";
-  version = "0.2.0";
-  format = "setuptools";
+  version = "0.6.3";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "alexmojaki";
     repo = "stack_data";
-    rev = "v${version}";
-    hash = "sha256-brXFrk1UU5hxCVeRvGK7wzRA0Hoj9fgqoxTIwInPrEc=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-dmBhfCg60KX3gWp3k1CGRxW14z3BLlair0PjLW9HFYo=";
   };
 
-  nativeBuildInputs = [
-    git
+  build-system = [
+    setuptools
     setuptools-scm
-    toml
-  ];
-
-  propagatedBuildInputs = [
-    asttokens
-    executing
-    pure-eval
+    wheel
   ];
 
   nativeCheckInputs = [
@@ -46,9 +41,11 @@ buildPythonPackage rec {
     typeguard
   ];
 
-  # https://github.com/alexmojaki/stack_data/issues/50
-  # incompatible with typeguard>=3
-  doCheck = false;
+  dependencies = [
+    asttokens
+    executing
+    pure-eval
+  ];
 
   disabledTests = [
     # AssertionError
@@ -63,7 +60,9 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Extract data from stack frames and tracebacks";
     homepage = "https://github.com/alexmojaki/stack_data/";
+    changelog = "https://github.com/alexmojaki/stack_data/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ jluttine ];
+    mainProgram = "stack-data";
   };
 }
diff --git a/pkgs/development/python-modules/stamina/default.nix b/pkgs/development/python-modules/stamina/default.nix
new file mode 100644
index 0000000000000..9597bc5496439
--- /dev/null
+++ b/pkgs/development/python-modules/stamina/default.nix
@@ -0,0 +1,53 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+
+, hatch-fancy-pypi-readme
+, hatch-vcs
+, hatchling
+
+, tenacity
+, typing-extensions
+
+, anyio
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "stamina";
+  version = "24.3.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "hynek";
+    repo = "stamina";
+    rev = "refs/tags/${version}";
+    hash = "sha256-DasubVqKRhX4CRyKyJ3fIA9Rxmy+kGxkW0pDdu8OPPo=";
+  };
+
+  nativeBuildInputs = [
+    hatch-fancy-pypi-readme
+    hatch-vcs
+    hatchling
+  ];
+
+  propagatedBuildInputs = [
+    tenacity
+    typing-extensions
+  ];
+
+  pythonImportsCheck = [ "stamina" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    anyio
+  ];
+
+  meta = with lib; {
+    description = "Production-grade retries for Python";
+    homepage = "https://github.com/hynek/stamina";
+    changelog = "https://github.com/hynek/stamina/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ mbalatsko ];
+  };
+}
diff --git a/pkgs/development/python-modules/stanio/default.nix b/pkgs/development/python-modules/stanio/default.nix
index ef4928e6e4f8b..a87e753c1886f 100644
--- a/pkgs/development/python-modules/stanio/default.nix
+++ b/pkgs/development/python-modules/stanio/default.nix
@@ -1,30 +1,27 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  numpy,
 }:
 
 buildPythonPackage rec {
   pname = "stanio";
-  version = "0.5.0";
+  version = "0.5.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-3uQpMU2WXzkBga+o/3/4FERG7rWMwlR8zBCLpz5nROI=";
+    hash = "sha256-NI1S+UfexDHhGPS2AcTFKWkpuGQB1NTdWqk3Ow1K5Kw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   pythonImportsCheck = [ "stanio" ];
 
diff --git a/pkgs/development/python-modules/stanza/default.nix b/pkgs/development/python-modules/stanza/default.nix
index 0f7d7fddacb1b..543ab64e63bf2 100644
--- a/pkgs/development/python-modules/stanza/default.nix
+++ b/pkgs/development/python-modules/stanza/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, emoji
-, fetchFromGitHub
-, networkx
-, numpy
-, peft
-, protobuf
-, pythonOlder
-, requests
-, six
-, toml
-, torch
-, tqdm
-, transformers
+{
+  lib,
+  buildPythonPackage,
+  emoji,
+  fetchFromGitHub,
+  networkx,
+  numpy,
+  peft,
+  protobuf,
+  pythonOlder,
+  requests,
+  six,
+  toml,
+  torch,
+  tqdm,
+  transformers,
 }:
 
 buildPythonPackage rec {
   pname = "stanza";
-  version = "1.8.2";
+  version = "1.9.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -26,7 +27,7 @@ buildPythonPackage rec {
     owner = "stanfordnlp";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-twgMWKWUvhnGNqQ42MOptnikdSBiDFpiMCI2RPo+3XU=";
+    hash = "sha256-hrRn6ITsN7kFL1T6VjSXPDytANEeJYKwMaSdCG+YJyM=";
   };
 
   propagatedBuildInputs = [
@@ -46,9 +47,7 @@ buildPythonPackage rec {
   # Tests require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "stanza"
-  ];
+  pythonImportsCheck = [ "stanza" ];
 
   meta = with lib; {
     description = "Official Stanford NLP Python Library for Many Human Languages";
diff --git a/pkgs/development/python-modules/starkbank-ecdsa/default.nix b/pkgs/development/python-modules/starkbank-ecdsa/default.nix
index ec741b7e1ee41..f0158e4a0d42f 100644
--- a/pkgs/development/python-modules/starkbank-ecdsa/default.nix
+++ b/pkgs/development/python-modules/starkbank-ecdsa/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-HarlCDE2qOLbyhMLOE++bTC+7srJqwmohM6vrJkJ/gc=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     cd tests
@@ -32,9 +31,7 @@ buildPythonPackage rec {
     "*.py"
   ];
 
-  pythonImportsCheck = [
-    "ellipticcurve"
-  ];
+  pythonImportsCheck = [ "ellipticcurve" ];
 
   meta = with lib; {
     description = "Python ECDSA library";
diff --git a/pkgs/development/python-modules/starlette-admin/default.nix b/pkgs/development/python-modules/starlette-admin/default.nix
new file mode 100644
index 0000000000000..a60768ef42206
--- /dev/null
+++ b/pkgs/development/python-modules/starlette-admin/default.nix
@@ -0,0 +1,127 @@
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  aiosqlite,
+  arrow,
+  babel,
+  cacert,
+  colour,
+  fasteners,
+  httpx,
+  jinja2,
+  mongoengine,
+  motor,
+  passlib,
+  phonenumbers,
+  pillow,
+  psycopg2,
+  pydantic,
+  pytest-asyncio,
+  pytestCheckHook,
+  python-multipart,
+  requests,
+  sqlalchemy,
+  sqlalchemy-file,
+  sqlalchemy-utils,
+  sqlmodel,
+  starlette,
+}:
+
+buildPythonPackage rec {
+  pname = "starlette-admin";
+  version = "0.14.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "jowilf";
+    repo = "starlette-admin";
+    rev = version;
+    hash = "sha256-DoYD8Hc5pd68+BhASw3mwwCdhu0vYHiELjVmVwU8FHs=";
+  };
+
+  build-system = [ hatchling ];
+
+  dependencies = [
+    jinja2
+    python-multipart
+    starlette
+  ];
+
+  optional-dependencies = {
+    i18n = [ babel ];
+  };
+
+  nativeCheckInputs = [
+    aiosqlite
+    arrow
+    babel
+    cacert
+    colour
+    fasteners
+    httpx
+    mongoengine
+    motor
+    passlib
+    phonenumbers
+    pillow
+    psycopg2
+    pydantic
+    pytest-asyncio
+    pytestCheckHook
+    requests
+    sqlalchemy
+    sqlalchemy-file
+    sqlalchemy-utils
+    sqlmodel
+  ];
+
+  preCheck = ''
+    # used in get_test_container in tests/sqla/utils.py
+    # fixes FileNotFoundError: [Errno 2] No such file or directory: '/tmp/storage/...'
+    mkdir .storage
+    export LOCAL_PATH="$PWD/.storage"
+  '';
+
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
+    # flaky, depends on test order
+    "test_ensuring_pk"
+    # flaky, of-by-one
+    "test_api"
+  ];
+
+  disabledTestPaths =
+    [
+      # odmantic is not packaged
+      "tests/odmantic"
+      # needs mongodb running on port 27017
+      "tests/mongoengine"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # very flaky, sandbox issues?
+      # libcloud.storage.types.ContainerDoesNotExistError
+      # sqlite3.OperationalError: attempt to write a readonly database
+      "tests/sqla/test_sync_engine.py"
+      "tests/sqla/test_async_engine.py"
+    ];
+
+  pythonImportsCheck = [
+    "starlette_admin"
+    "starlette_admin.actions"
+    "starlette_admin.base"
+    "starlette_admin.fields"
+    "starlette_admin.i18n"
+    "starlette_admin.tools"
+    "starlette_admin.views"
+  ];
+
+  meta = with lib; {
+    description = "Fast, beautiful and extensible administrative interface framework for Starlette & FastApi applications";
+    homepage = "https://github.com/jowilf/starlette-admin";
+    changelog = "https://github.com/jowilf/starlette-admin/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ pbsds ];
+  };
+}
diff --git a/pkgs/development/python-modules/starlette-context/default.nix b/pkgs/development/python-modules/starlette-context/default.nix
index 2657e9740a60e..1fbe852147d75 100644
--- a/pkgs/development/python-modules/starlette-context/default.nix
+++ b/pkgs/development/python-modules/starlette-context/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, httpx
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, starlette
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpx,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  starlette,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,9 @@ buildPythonPackage rec {
     hash = "sha256-ZKwE2M86clYKdptd0o/j8VYUOj/Y/72uUnpxFbJ65vw=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  dependencies = [
-    starlette
-  ];
+  dependencies = [ starlette ];
 
   nativeCheckInputs = [
     httpx
@@ -37,9 +34,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "starlette_context"
-  ];
+  pythonImportsCheck = [ "starlette_context" ];
 
   meta = with lib; {
     description = "Middleware for Starlette that allows you to store and access the context data of a request";
diff --git a/pkgs/development/python-modules/starlette-wtf/default.nix b/pkgs/development/python-modules/starlette-wtf/default.nix
index 3ca744a71f2f4..9396dba186d76 100644
--- a/pkgs/development/python-modules/starlette-wtf/default.nix
+++ b/pkgs/development/python-modules/starlette-wtf/default.nix
@@ -1,31 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, itsdangerous
-, python-multipart
-, starlette
-, wtforms
-, httpx
-, jinja2
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  itsdangerous,
+  python-multipart,
+  starlette,
+  wtforms,
+  httpx,
+  jinja2,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "starlette-wtf";
-  version = "0.4.3";
+  version = "0.4.5";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "muicss";
     repo = "starlette-wtf";
-    rev = "v${version}";
-    hash = "sha256-TSxcIgINRjQwiyhpGOEEpXJKcPlhFCxMQh4/GY1g1lw=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-88zU2NAsdty2OhHauwQ5+6LazuRDYPoqN9IIipI1t2Q=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
   propagatedBuildInputs = [
     itsdangerous
     python-multipart
@@ -40,7 +39,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A simple tool for integrating Starlette and WTForms";
+    description = "Simple tool for integrating Starlette and WTForms";
     changelog = "https://github.com/muicss/starlette-wtf/blob/v${version}/CHANGELOG.md";
     homepage = "https://github.com/muicss/starlette-wtf";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/starlette/default.nix b/pkgs/development/python-modules/starlette/default.nix
index 5bdc0c505a090..21551a5786dae 100644
--- a/pkgs/development/python-modules/starlette/default.nix
+++ b/pkgs/development/python-modules/starlette/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-
-# build-system
-, hatchling
-
-# dependencies
-, anyio
-, typing-extensions
-
-# optional dependencies
-, itsdangerous
-, jinja2
-, python-multipart
-, pyyaml
-, httpx
-
-# tests
-, pytestCheckHook
-, pythonOlder
-, trio
-
-# reverse dependencies
-, fastapi
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  hatchling,
+
+  # dependencies
+  anyio,
+  typing-extensions,
+
+  # optional dependencies
+  itsdangerous,
+  jinja2,
+  python-multipart,
+  pyyaml,
+  httpx,
+
+  # tests
+  pytestCheckHook,
+  pythonOlder,
+  trio,
+
+  # reverse dependencies
+  fastapi,
 }:
 
 buildPythonPackage rec {
@@ -39,17 +40,11 @@ buildPythonPackage rec {
     hash = "sha256-GiCN1sfhLu9i19d2OcLZrlY8E64DFrFh+ITRSvLaxdE=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
-    anyio
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    typing-extensions
-  ];
+  dependencies = [ anyio ] ++ lib.optionals (pythonOlder "3.10") [ typing-extensions ];
 
-  passthru.optional-dependencies.full = [
+  optional-dependencies.full = [
     itsdangerous
     jinja2
     python-multipart
@@ -61,16 +56,18 @@ buildPythonPackage rec {
     pytestCheckHook
     trio
     typing-extensions
-  ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
   pytestFlagsArray = [
-    "-W" "ignore::DeprecationWarning"
-    "-W" "ignore::trio.TrioDeprecationWarning"
+    "-W"
+    "ignore::DeprecationWarning"
+    "-W"
+    "ignore::trio.TrioDeprecationWarning"
+    "-W"
+    "ignore::ResourceWarning" # FIXME remove once test suite is fully compatible with anyio 4.4.0
   ];
 
-  pythonImportsCheck = [
-    "starlette"
-  ];
+  pythonImportsCheck = [ "starlette" ];
 
   passthru.tests = {
     inherit fastapi;
@@ -80,7 +77,7 @@ buildPythonPackage rec {
     changelog = "https://www.starlette.io/release-notes/#${lib.replaceStrings [ "." ] [ "" ] version}";
     downloadPage = "https://github.com/encode/starlette";
     homepage = "https://www.starlette.io/";
-    description = "The little ASGI framework that shines";
+    description = "Little ASGI framework that shines";
     license = licenses.bsd3;
     maintainers = with maintainers; [ wd15 ];
   };
diff --git a/pkgs/development/python-modules/starline/default.nix b/pkgs/development/python-modules/starline/default.nix
index 0496aad832614..4fbccc73f76a6 100644
--- a/pkgs/development/python-modules/starline/default.nix
+++ b/pkgs/development/python-modules/starline/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, fetchpatch
-, setuptools
-, requests
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  fetchpatch,
+  setuptools,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -28,13 +29,9 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # no tests implemented
   doCheck = false;
diff --git a/pkgs/development/python-modules/stashy/default.nix b/pkgs/development/python-modules/stashy/default.nix
index fbac0df71f1de..96903ff8e51f1 100644
--- a/pkgs/development/python-modules/stashy/default.nix
+++ b/pkgs/development/python-modules/stashy/default.nix
@@ -1,30 +1,32 @@
-{ lib
-, buildPythonPackage
-, decorator
-, fetchPypi
-, pythonOlder
-, requests
- }:
+{
+  lib,
+  buildPythonPackage,
+  decorator,
+  fetchPypi,
+  requests,
+}:
 
 buildPythonPackage rec {
   pname = "stashy";
   version = "0.7";
   format = "setuptools";
-  disabled = pythonOlder "3.4";
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "1x89zazwxnsx6rdfw8nfr372hj4sk8nrcs5hsjxpcxcva0calrcr";
   };
 
-  propagatedBuildInputs = [ decorator requests ];
+  propagatedBuildInputs = [
+    decorator
+    requests
+  ];
 
   # Tests require internet connection
   doCheck = false;
   pythonImportsCheck = [ "stashy" ];
 
   meta = with lib; {
-    description = "Python client for the Atlassian Bitbucket Server (formerly known as Stash) REST API.";
+    description = "Python client for the Atlassian Bitbucket Server (formerly known as Stash) REST API";
     homepage = "https://github.com/cosmin/stashy";
     license = licenses.asl20;
     maintainers = with maintainers; [ mupdt ];
diff --git a/pkgs/development/python-modules/static3/default.nix b/pkgs/development/python-modules/static3/default.nix
index cf0c6c8e30f4c..050fb2119daee 100644
--- a/pkgs/development/python-modules/static3/default.nix
+++ b/pkgs/development/python-modules/static3/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# optionals
-, genshi
+  # optionals
+  genshi,
 
-# tests
-, pytestCheckHook
-, webtest
+  # tests
+  pytestCheckHook,
+  webtest,
 }:
 
 buildPythonPackage rec {
@@ -31,23 +32,19 @@ buildPythonPackage rec {
     KidMagic = [
       # TODO: kid
     ];
-    Genshimagic = [
-      genshi
-    ];
+    Genshimagic = [ genshi ];
   };
 
-  pythonImportsCheck = [
-    "static"
-  ];
+  pythonImportsCheck = [ "static" ];
 
-  nativeCheckInputs  = [
+  nativeCheckInputs = [
     pytestCheckHook
     webtest
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
   meta = with lib; {
     changelog = "https://github.com/rmohr/static3/releases/tag/v${version}";
-    description = "A really simple WSGI way to serve static (or mixed) content";
+    description = "Really simple WSGI way to serve static (or mixed) content";
     mainProgram = "static";
     homepage = "https://github.com/rmohr/static3";
     license = licenses.lgpl21Only;
diff --git a/pkgs/development/python-modules/staticjinja/default.nix b/pkgs/development/python-modules/staticjinja/default.nix
index a0e6659d0d25a..2967f11b9aa67 100644
--- a/pkgs/development/python-modules/staticjinja/default.nix
+++ b/pkgs/development/python-modules/staticjinja/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, poetry-core
-, docopt-ng
-, easywatch
-, jinja2
-, pytestCheckHook
-, pytest-check
-, pythonOlder
-, markdown
-, testers
-, tomlkit
-, typing-extensions
-, staticjinja
-, callPackage
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  poetry-core,
+  docopt-ng,
+  easywatch,
+  jinja2,
+  pytestCheckHook,
+  pytest-check,
+  pythonOlder,
+  markdown,
+  testers,
+  tomlkit,
+  typing-extensions,
+  staticjinja,
+  callPackage,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
     hash = "sha256-LfJTQhZtnTOm39EWF1m2MP5rxz/5reE0G1Uk9L7yx0w=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     jinja2
@@ -56,11 +55,11 @@ buildPythonPackage rec {
 
   passthru.tests = {
     version = testers.testVersion { package = staticjinja; };
-    minimal-template = callPackage ./test-minimal-template {};
+    minimal-template = callPackage ./test-minimal-template { };
   };
 
   meta = with lib; {
-    description = "A library and cli tool that makes it easy to build static sites using Jinja2";
+    description = "Library and cli tool that makes it easy to build static sites using Jinja2";
     mainProgram = "staticjinja";
     homepage = "https://staticjinja.readthedocs.io/en/latest/";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/staticmap/default.nix b/pkgs/development/python-modules/staticmap/default.nix
index bb3eac8655bdf..2136f016fc2c0 100644
--- a/pkgs/development/python-modules/staticmap/default.nix
+++ b/pkgs/development/python-modules/staticmap/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pillow
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pillow,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -15,7 +16,10 @@ buildPythonPackage rec {
     hash = "sha256-x6lrkCumEpLoGMILCBBhnWuBps21C8wauS1QrE2yCn8=";
   };
 
-  propagatedBuildInputs = [ requests pillow ];
+  propagatedBuildInputs = [
+    requests
+    pillow
+  ];
 
   pythonImportsCheck = [ "staticmap" ];
 
@@ -23,7 +27,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A small, python-based library for creating map images with lines and markers";
+    description = "Small, python-based library for creating map images with lines and markers";
     homepage = "https://pypi.org/project/staticmap/";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ traxys ];
diff --git a/pkgs/development/python-modules/statistics/default.nix b/pkgs/development/python-modules/statistics/default.nix
index 2e3c62671a1cb..5664dc2eaefb5 100644
--- a/pkgs/development/python-modules/statistics/default.nix
+++ b/pkgs/development/python-modules/statistics/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, docutils
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  docutils,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,9 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = {
-    description = "A Python 2.* port of 3.4 Statistics Module";
+    description = "Python 2.* port of 3.4 Statistics Module";
     homepage = "https://github.com/digitalemagine/py-statistics";
     license = lib.licenses.asl20;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/statmake/default.nix b/pkgs/development/python-modules/statmake/default.nix
index 0970b8f882dc8..2e92efe1e5bd0 100644
--- a/pkgs/development/python-modules/statmake/default.nix
+++ b/pkgs/development/python-modules/statmake/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, attrs
-, buildPythonPackage
-, cattrs
-, exceptiongroup
-, fetchFromGitHub
-, fonttools
-, fs
-, importlib-metadata
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, ufo2ft
-, ufolib2
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  cattrs,
+  exceptiongroup,
+  fetchFromGitHub,
+  fonttools,
+  fs,
+  importlib-metadata,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  ufo2ft,
+  ufolib2,
 }:
 
 buildPythonPackage rec {
@@ -28,21 +29,18 @@ buildPythonPackage rec {
     hash = "sha256-3BZ71JVvj7GCojM8ycu160viPj8BLJ1SiW86Df2fzsw=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    attrs
-    cattrs
-    fonttools
-    # required by fonttools[ufo]
-    fs
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    exceptiongroup
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  propagatedBuildInputs =
+    [
+      attrs
+      cattrs
+      fonttools
+      # required by fonttools[ufo]
+      fs
+    ]
+    ++ lib.optionals (pythonOlder "3.11") [ exceptiongroup ]
+    ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -50,9 +48,7 @@ buildPythonPackage rec {
     ufolib2
   ];
 
-  pythonImportsCheck = [
-    "statmake"
-  ];
+  pythonImportsCheck = [ "statmake" ];
 
   disabledTests = [
     # Test requires an update as later cattrs is present in Nixpkgs
@@ -66,6 +62,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/daltonmaag/statmake";
     changelog = "https://github.com/daltonmaag/statmake/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/statsd/default.nix b/pkgs/development/python-modules/statsd/default.nix
index 7ff02acd0bdcb..21127c85adf8d 100644
--- a/pkgs/development/python-modules/statsd/default.nix
+++ b/pkgs/development/python-modules/statsd/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pynose
-, mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -11,26 +12,26 @@ buildPythonPackage rec {
   version = "4.0.1";
   format = "pyproject";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-mXY9qBv+qNr2s9ItEarMsBqND1LqUh2qs351ikyn0Sg=";
+  src = fetchFromGitHub {
+    owner = "jsocol";
+    repo = "pystatsd";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-g830TjFERKUguFKlZeaOhCTlaUs0wcDg4bMdRDr3smw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [ pynose mock ];
+  nativeCheckInputs = [
+    mock
+    pytestCheckHook
+  ];
 
-  checkPhase = ''
-    nosetests -sv
-  '';
+  pytestFlagsArray = [ "statsd/tests.py" ];
 
   meta = with lib; {
     maintainers = with maintainers; [ domenkozar ];
-    description = "A simple statsd client";
+    description = "Simple statsd client";
     license = licenses.mit;
     homepage = "https://github.com/jsocol/pystatsd";
   };
-
 }
diff --git a/pkgs/development/python-modules/statsmodels/default.nix b/pkgs/development/python-modules/statsmodels/default.nix
index d92e618c99be3..d917d3ebf7359 100644
--- a/pkgs/development/python-modules/statsmodels/default.nix
+++ b/pkgs/development/python-modules/statsmodels/default.nix
@@ -1,41 +1,51 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchPypi
-, numpy
-, oldest-supported-numpy
-, packaging
-, pandas
-, patsy
-, pythonAtLeast
-, pythonOlder
-, scipy
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchPypi,
+  numpy,
+  packaging,
+  pandas,
+  patsy,
+  pythonOlder,
+  scipy,
+  setuptools,
+  setuptools-scm,
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "statsmodels";
-  version = "0.14.1";
+  version = "0.14.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ImDv3B74nznGcKC9gVGx0IQ1Z3gbyv7GzaBTTrR6lPY=";
+    hash = "sha256-iQVQFHrTqBzaJPC6GlxAIa3BYBCAvQDhka581v7s1q0=";
   };
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "numpy>=2.0.0rc1,<3" "numpy"
+  '';
+
   build-system = [
     cython
-    oldest-supported-numpy
+    numpy
     scipy
     setuptools
     setuptools-scm
-  ] ++ lib.optionals (pythonAtLeast "3.12") [
-    numpy
   ];
 
+  env = lib.optionalAttrs stdenv.cc.isClang {
+    NIX_CFLAGS_COMPILE = toString [
+      "-Wno-error=implicit-function-declaration"
+      "-Wno-error=int-conversion"
+    ];
+  };
+
   dependencies = [
     numpy
     packaging
@@ -47,9 +57,7 @@ buildPythonPackage rec {
   # Huge test suites with several test failures
   doCheck = false;
 
-  pythonImportsCheck = [
-    "statsmodels"
-  ];
+  pythonImportsCheck = [ "statsmodels" ];
 
   meta = with lib; {
     description = "Statistical computations and models for use with SciPy";
diff --git a/pkgs/development/python-modules/std-uritemplate/default.nix b/pkgs/development/python-modules/std-uritemplate/default.nix
index 5b5d2faa301c7..b6c195ebf9d4e 100644
--- a/pkgs/development/python-modules/std-uritemplate/default.nix
+++ b/pkgs/development/python-modules/std-uritemplate/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "std-uritemplate";
-  version = "0.0.57";
+  version = "1.0.6";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -16,7 +16,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "std_uritemplate";
     inherit version;
-    hash = "sha256-9K3HF67BOFYuZSuV2nT8aBWpQiMdlxMUhWuB9DTBuUw=";
+    hash = "sha256-m+1iEgSp27R/ieqVjJfEY9FfKLzLyAGquMmw11cZ7GI=";
   };
 
   build-system = [ poetry-core ];
diff --git a/pkgs/development/python-modules/std2/default.nix b/pkgs/development/python-modules/std2/default.nix
index 8e117b10e775b..f25c28601d123 100644
--- a/pkgs/development/python-modules/std2/default.nix
+++ b/pkgs/development/python-modules/std2/default.nix
@@ -1,27 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
 }:
 
 buildPythonPackage {
   pname = "std2";
-  version = "unstable-2023-10-07";
+  version = "0-unstable-2024-09-02";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "ms-jpq";
     repo = "std2";
-    rev = "6332e559ee51c3a7c956804afdd7e1cc6ad47965";
-    hash = "sha256-huN7P/Ws6anrFXDG7L5xxMenS25BHquV9cMi1s7WFJ4=";
+    rev = "205d1f52e9b5438ef2b732c77e1144847cafa8d0";
+    hash = "sha256-WdUefadEk92cGnDI+KbQBpjg+d7KgI6bjlQlyhRRRFA=";
   };
 
   nativeBuildInputs = [ setuptools ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://github.com/ms-jpq/std2";
     description = "Dependency to chadtree and coq_nvim plugins";
-    license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/stdiomask/default.nix b/pkgs/development/python-modules/stdiomask/default.nix
index 90d73baceecf3..5a78a3a727e19 100644
--- a/pkgs/development/python-modules/stdiomask/default.nix
+++ b/pkgs/development/python-modules/stdiomask/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/stdlib-list/default.nix b/pkgs/development/python-modules/stdlib-list/default.nix
index 89dbf4afb3e14..6109e6ce2fc7c 100644
--- a/pkgs/development/python-modules/stdlib-list/default.nix
+++ b/pkgs/development/python-modules/stdlib-list/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build-system
-, flit-core
+  # build-system
+  flit-core,
 }:
 
 buildPythonPackage rec {
@@ -17,22 +18,18 @@ buildPythonPackage rec {
     hash = "sha256-ZRnFDWRVE+0odle/6FbVJ/J3MxVAaR3er3eyVFmWShQ=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  pythonImportsCheck = [
-    "stdlib_list"
-  ];
+  pythonImportsCheck = [ "stdlib_list" ];
 
   # tests see mismatches to our standard library
   doCheck = false;
 
   meta = with lib; {
     changelog = "https://github.com/pypi/stdlib-list/releases/tag/v${version}";
-    description = "A list of Python Standard Libraries";
+    description = "List of Python Standard Libraries";
     homepage = "https://github.com/jackmaney/python-stdlib-list";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/stdlibs/default.nix b/pkgs/development/python-modules/stdlibs/default.nix
index 677d282f06536..fb9c0f54479f4 100644
--- a/pkgs/development/python-modules/stdlibs/default.nix
+++ b/pkgs/development/python-modules/stdlibs/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "stdlibs";
-  version = "2024.1.28";
-  format = "pyproject";
+  version = "2024.5.15";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -16,19 +17,15 @@ buildPythonPackage rec {
     owner = "omnilib";
     repo = "stdlibs";
     rev = "refs/tags/v${version}";
-    hash = "sha256-xf46ih7viVUKNIT1tLs5MQPNjNtQlQ2N9BJIGPt4Srk=";
+    hash = "sha256-DthHvL5x3HVwACLnxeyuoC0hb8OokabODircEY9eEhE=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "stdlibs"
-  ];
+  pythonImportsCheck = [ "stdlibs" ];
 
   meta = with lib; {
     description = "Overview of the Python stdlib";
diff --git a/pkgs/development/python-modules/steamodd/default.nix b/pkgs/development/python-modules/steamodd/default.nix
index edc489b297e8e..dd1be22acb1a4 100644
--- a/pkgs/development/python-modules/steamodd/default.nix
+++ b/pkgs/development/python-modules/steamodd/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/steamship/default.nix b/pkgs/development/python-modules/steamship/default.nix
index dc39e50aebcd2..ef61a23970649 100644
--- a/pkgs/development/python-modules/steamship/default.nix
+++ b/pkgs/development/python-modules/steamship/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, pythonRelaxDepsHook
-, requests
-, pydantic
-, aiohttp
-, inflection
-, fluent-logger
-, toml
-, click
-, semver
-, tiktoken
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  requests,
+  pydantic,
+  aiohttp,
+  inflection,
+  fluent-logger,
+  toml,
+  click,
+  semver,
+  tiktoken,
 }:
 
 buildPythonPackage rec {
@@ -24,13 +24,10 @@ buildPythonPackage rec {
     hash = "sha256-U9SA2Dvepl9BjrvhH+8bVBNjby8IWu5UE+/oor7YWzI=";
   };
 
-  pythonRelaxDeps = [
-    "requests"
-  ];
+  pythonRelaxDeps = [ "requests" ];
 
   nativeBuildInputs = [
     setuptools-scm
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -48,12 +45,10 @@ buildPythonPackage rec {
   # almost all tests require "steamship api key"
   doCheck = false;
 
-  pythonImportsCheck = [
-    "steamship"
-  ];
+  pythonImportsCheck = [ "steamship" ];
 
   meta = with lib; {
-    description = "The fastest way to add language AI to your product";
+    description = "Fastest way to add language AI to your product";
     homepage = "https://www.steamship.com/";
     changelog = "https://github.com/steamship-core/python-client/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/stem/default.nix b/pkgs/development/python-modules/stem/default.nix
index 7d9dc7564a09f..fd7cf8c9d6bf8 100644
--- a/pkgs/development/python-modules/stem/default.nix
+++ b/pkgs/development/python-modules/stem/default.nix
@@ -1,11 +1,13 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, cryptography
-, mock
-, python
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  fetchpatch,
+  setuptools,
+  cryptography,
+  mock,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -23,10 +25,16 @@ buildPythonPackage rec {
     hash = "sha256-Oc73Jx31SLzuhT9Iym5HHszKfflKZ+3aky5flXudvmI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
+  patches = [
+    # fixes deprecated test assertion, assertRaisesRegexp in python 3
+    (fetchpatch {
+      url = "https://github.com/trishtzy/stem/commit/d5012a1039f05c69ebe832723ce96ecbe8f79fe1.patch";
+      hash = "sha256-ozOTx4/c86sW/9Ss5eZ6ZxX63ByJT5x7JF6wBBd+VFY=";
+    })
   ];
 
+  nativeBuildInputs = [ setuptools ];
+
   nativeCheckInputs = [
     cryptography
     mock
diff --git a/pkgs/development/python-modules/stemming/default.nix b/pkgs/development/python-modules/stemming/default.nix
index b0e9ce0c44530..98ef1eea9b092 100644
--- a/pkgs/development/python-modules/stemming/default.nix
+++ b/pkgs/development/python-modules/stemming/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
 }:
 let
   pname = "stemming";
@@ -24,7 +25,7 @@ buildPythonPackage {
   pythonImportsCheck = [ "stemming" ];
 
   meta = with lib; {
-    description = "Python implementations of various stemming algorithms.";
+    description = "Python implementations of various stemming algorithms";
     homepage = "https://github.com/nmstoker/stemming";
     license = licenses.unlicense;
     maintainers = with maintainers; [ happysalada ];
diff --git a/pkgs/development/python-modules/stestr/default.nix b/pkgs/development/python-modules/stestr/default.nix
index 723188d6c5eec..57c1723b86c30 100644
--- a/pkgs/development/python-modules/stestr/default.nix
+++ b/pkgs/development/python-modules/stestr/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cliff
-, fixtures
-, future
-, pbr
-, setuptools
-, subunit
-, testtools
-, tomlkit
-, voluptuous
-, callPackage
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cliff,
+  fixtures,
+  future,
+  pbr,
+  setuptools,
+  subunit,
+  testtools,
+  tomlkit,
+  voluptuous,
+  callPackage,
 }:
 
 buildPythonPackage rec {
@@ -55,7 +56,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "stestr" ];
 
   meta = with lib; {
-    description = "A parallel Python test runner built around subunit";
+    description = "Parallel Python test runner built around subunit";
     mainProgram = "stestr";
     homepage = "https://github.com/mtreinish/stestr";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/stestr/tests.nix b/pkgs/development/python-modules/stestr/tests.nix
index f4964fa8f66e3..21d1fd2c7a1e9 100644
--- a/pkgs/development/python-modules/stestr/tests.nix
+++ b/pkgs/development/python-modules/stestr/tests.nix
@@ -1,6 +1,4 @@
-{  buildPythonPackage
-, stestr
-}:
+{ buildPythonPackage, stestr }:
 
 buildPythonPackage {
   pname = "stestr-tests";
@@ -19,9 +17,7 @@ buildPythonPackage {
     pythonOutputDistPhase() { touch $dist; }
   '';
 
-  nativeCheckInputs = [
-    stestr
-  ];
+  nativeCheckInputs = [ stestr ];
 
   checkPhase = ''
     export PATH=$out/bin:$PATH
diff --git a/pkgs/development/python-modules/stevedore/default.nix b/pkgs/development/python-modules/stevedore/default.nix
index 3e7d9dfab3245..5d6c048ecfb40 100644
--- a/pkgs/development/python-modules/stevedore/default.nix
+++ b/pkgs/development/python-modules/stevedore/default.nix
@@ -1,39 +1,49 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, importlib-metadata
-, pbr
-, setuptools
-, six
+{
+  lib,
+  buildPythonPackage,
+  callPackage,
+  fetchPypi,
+  pythonOlder,
+  importlib-metadata,
+  pbr,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "stevedore";
-  version = "5.2.0";
-  format = "setuptools";
-  disabled = pythonOlder "3.6";
+  version = "5.3.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Rrk8pA4RFM6pPXOKbB42U5aYG7a7eMJwRbdYfJRzVE0=";
+    hash = "sha256-mmQmX0BgMSgoFRwgTvvpt6mFKg2SKHVjRNvH5AI+N1o=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
     pbr
     setuptools
-    six
-  ] ++ lib.optionals (pythonOlder "3.8") [
+  ];
+
+  dependencies = [
     importlib-metadata
+    setuptools
   ];
 
+  # Checks moved to 'passthru.tests' to workaround infinite recursion
   doCheck = false;
+
+  passthru.tests = {
+    tests = callPackage ./tests.nix { };
+  };
+
   pythonImportsCheck = [ "stevedore" ];
 
   meta = with lib; {
     description = "Manage dynamic plugins for Python applications";
     homepage = "https://docs.openstack.org/stevedore/";
     license = licenses.asl20;
-    maintainers = with maintainers; [ fab ];
+    maintainers = teams.openstack.members ++ (with maintainers; [ fab ]);
   };
 }
diff --git a/pkgs/development/python-modules/stevedore/tests.nix b/pkgs/development/python-modules/stevedore/tests.nix
new file mode 100644
index 0000000000000..7ae013a6e241b
--- /dev/null
+++ b/pkgs/development/python-modules/stevedore/tests.nix
@@ -0,0 +1,29 @@
+{
+  buildPythonPackage,
+  docutils,
+  sphinx,
+  stestr,
+  stevedore,
+}:
+
+buildPythonPackage {
+  pname = "stevedore-tests";
+  inherit (stevedore) version src;
+  format = "other";
+
+  dontBuild = true;
+  dontInstall = true;
+
+  nativeCheckInputs = [
+    docutils
+    sphinx
+    stestr
+    stevedore
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+    stestr run
+    runHook postCheck
+  '';
+}
diff --git a/pkgs/development/python-modules/stickytape/default.nix b/pkgs/development/python-modules/stickytape/default.nix
index 99e63ebd3dfb2..405d7202a16da 100644
--- a/pkgs/development/python-modules/stickytape/default.nix
+++ b/pkgs/development/python-modules/stickytape/default.nix
@@ -1,38 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nose
-, pytestCheckHook
-, pythonOlder
-, spur
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "stickytape";
   version = "0.2.1";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = pythonOlder "3.4";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "mwilliamson";
-    repo = pname;
-    rev = version;
+    repo = "stickytape";
+    rev = "refs/tags/${version}";
     hash = "sha256-KOZN9oxPb91l8QVU07I49UMNXqox8j+oekA1fMtj6l8=";
   };
 
+  build-system = [ setuptools ];
+
   # Tests have additional requirements
   doCheck = false;
 
-  pythonImportsCheck = [
-    "stickytape"
-  ];
+  pythonImportsCheck = [ "stickytape" ];
 
   meta = with lib; {
     description = "Python module to convert Python packages into a single script";
-    mainProgram = "stickytape";
     homepage = "https://github.com/mwilliamson/stickytape";
-    license = with licenses; [ bsd2 ];
+    license = licenses.bsd2;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "stickytape";
   };
 }
diff --git a/pkgs/development/python-modules/stim/default.nix b/pkgs/development/python-modules/stim/default.nix
index 3e95b74ef9ef4..9d1cda9a761fb 100644
--- a/pkgs/development/python-modules/stim/default.nix
+++ b/pkgs/development/python-modules/stim/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, cirq-core
-, fetchFromGitHub
-, matplotlib
-, networkx
-, numpy
-, pandas
-, pybind11
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, scipy
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  cirq-core,
+  fetchFromGitHub,
+  matplotlib,
+  networkx,
+  numpy,
+  pandas,
+  pybind11,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  scipy,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -32,7 +33,7 @@ buildPythonPackage rec {
   postPatch = ''
     # asked to relax this in https://github.com/quantumlib/Stim/issues/623
     substituteInPlace pyproject.toml \
-      --replace "pybind11==" "pybind11>="
+      --replace-quiet "pybind11~=" "pybind11>="
   '';
 
   nativeBuildInputs = [
@@ -41,9 +42,7 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   nativeCheckInputs = [
     cirq-core
@@ -55,9 +54,7 @@ buildPythonPackage rec {
     scipy
   ];
 
-  pythonImportsCheck = [
-    "stim"
-  ];
+  pythonImportsCheck = [ "stim" ];
 
   enableParallelBuilding = true;
 
@@ -67,7 +64,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A tool for high performance simulation and analysis of quantum stabilizer circuits, especially quantum error correction (QEC) circuits";
+    description = "Tool for high performance simulation and analysis of quantum stabilizer circuits, especially quantum error correction (QEC) circuits";
     mainProgram = "stim";
     homepage = "https://github.com/quantumlib/stim";
     changelog = "https://github.com/quantumlib/Stim/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/stix2-validator/default.nix b/pkgs/development/python-modules/stix2-validator/default.nix
new file mode 100644
index 0000000000000..105e11713d0ef
--- /dev/null
+++ b/pkgs/development/python-modules/stix2-validator/default.nix
@@ -0,0 +1,55 @@
+{
+  lib,
+  buildPythonPackage,
+  colorama,
+  cpe,
+  fetchFromGitHub,
+  jsonschema,
+  python-dateutil,
+  pythonOlder,
+  requests,
+  setuptools,
+  simplejson,
+  stix2-patterns,
+}:
+
+buildPythonPackage rec {
+  pname = "stix2-validator";
+  version = "3.2.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "oasis-open";
+    repo = "cti-stix-validator";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-OI1SXILyCRGl1ZsoyYDl+/RsBhTP24eqECtW3uazS2k=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    colorama
+    cpe
+    jsonschema
+    python-dateutil
+    requests
+    simplejson
+    stix2-patterns
+  ];
+
+  # Tests need more work
+  # Exception: Could not deserialize ATN with version  (expected 4).
+  doCheck = false;
+
+  # nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "Validator for STIX 2.0 JSON normative requirements and best practices";
+    homepage = "https://github.com/oasis-open/cti-stix-validator/";
+    changelog = "https://github.com/oasis-open/cti-stix-validator/blob/${src.rev}/CHANGELOG";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/stm32loader/default.nix b/pkgs/development/python-modules/stm32loader/default.nix
index fec3eb6b56e60..4fab0c1b30774 100644
--- a/pkgs/development/python-modules/stm32loader/default.nix
+++ b/pkgs/development/python-modules/stm32loader/default.nix
@@ -1,19 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch2,
 
-# build-system
-, flit-core
+  # build-system
+  flit-core,
 
-# dependenices
-, progress
-, pyserial
+  # dependenices
+  progress,
+  pyserial,
 
-# optional-dependencies
-, intelhex
+  # optional-dependencies
+  intelhex,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -26,28 +28,31 @@ buildPythonPackage rec {
     hash = "sha256-QTLSEjdJtDH4GCamnKHN5pEjW41rRtAMXxyZZMM5K3w=";
   };
 
-  nativeBuildInputs = [
-    flit-core
+  patches = [
+    # fix build with python 3.12
+    # https://github.com/florisla/stm32loader/pull/79
+    (fetchpatch2 {
+      url = "https://github.com/florisla/stm32loader/commit/96f59b2984b0d0371b2da0360d6e8d94d0b39a68.patch?full_index=1";
+      hash = "sha256-JUEjQWOnzeMA1OELS214OR7+MYUkCKN5lxwsmRoFbfo=";
+    })
   ];
 
+  nativeBuildInputs = [ flit-core ];
+
   propagatedBuildInputs = [
     progress
     pyserial
   ];
 
   passthru.optional-dependencies = {
-    hex = [
-      intelhex
-    ];
+    hex = [ intelhex ];
   };
 
   nativeCheckInputs = [
     pytestCheckHook
   ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
 
-  pytestFlagsArray = [
-    "tests/unit"
-  ];
+  pytestFlagsArray = [ "tests/unit" ];
 
   meta = with lib; {
     description = "Flash firmware to STM32 microcontrollers in Python";
@@ -55,6 +60,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/florisla/stm32loader";
     changelog = "https://github.com/florisla/stm32loader/blob/v${version}/CHANGELOG.md";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ emily ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/stone/default.nix b/pkgs/development/python-modules/stone/default.nix
index a2053f60aeeb8..d7698c977d0ab 100644
--- a/pkgs/development/python-modules/stone/default.nix
+++ b/pkgs/development/python-modules/stone/default.nix
@@ -1,11 +1,12 @@
 {
-  lib,
   buildPythonPackage,
   fetchFromGitHub,
+  fetchpatch,
+  lib,
   mock,
+  packaging,
   ply,
   pytestCheckHook,
-  pythonAtLeast,
   pythonOlder,
   setuptools,
   six,
@@ -13,17 +14,32 @@
 
 buildPythonPackage rec {
   pname = "stone";
-  version = "3.3.3";
+  version = "3.3.6";
   pyproject = true;
 
-  # distutils removal, https://github.com/dropbox/stone/issues/323
-  disabled = pythonOlder "3.7" || pythonAtLeast "3.12";
+  disabled = pythonOlder "3.7";
+
+  patches = [
+    # fix distutils issue
+    # fix versions in tests to conform pep 440
+    # See https://github.com/dropbox/stone/pull/334
+    (fetchpatch {
+      name = "no-distutils.patch";
+      url = "https://github.com/dropbox/stone/commit/f772d8d3b7e2ce62b14b4fb208a478bc8e54c7f2.patch";
+      hash = "sha256-SH4gG5S13n/pXppm62LvH9poGfeQGGonW7bkzdYh73Q=";
+    })
+    (fetchpatch {
+      name = "fix-test-pep-440.patch";
+      url = "https://github.com/dropbox/stone/commit/f36de56b1f87eae61829258b2f16aa8319bbcc5c.patch";
+      hash = "sha256-sBJukNk02RmQQza1qhLAkyx1OJRck0/zQOeRaXD9tkY=";
+    })
+  ];
 
   src = fetchFromGitHub {
     owner = "dropbox";
     repo = "stone";
     rev = "refs/tags/v${version}";
-    hash = "sha256-l86j2fd6x57bKt/TFGiyg+ZFjZFFCo43rE48MoPvXWc=";
+    hash = "sha256-Og0hUUCCd9wRdHUhZBl62rDAunP2Bph5COsCw/T1kUA=";
   };
 
   postPatch = ''
@@ -36,6 +52,7 @@ buildPythonPackage rec {
   dependencies = [
     ply
     six
+    packaging
   ];
 
   nativeCheckInputs = [
@@ -50,7 +67,7 @@ buildPythonPackage rec {
     homepage = "https://github.com/dropbox/stone";
     changelog = "https://github.com/dropbox/stone/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
     mainProgram = "stone";
   };
 }
diff --git a/pkgs/development/python-modules/stookalert/default.nix b/pkgs/development/python-modules/stookalert/default.nix
index 82552ca44bb39..0948c87731572 100644
--- a/pkgs/development/python-modules/stookalert/default.nix
+++ b/pkgs/development/python-modules/stookalert/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
     sha256 = "38c479e2fb7668f9b37aff0f9ffdd7bfd1ee9393528f2d3d36b5911b40da70a1";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # upstream has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/stookwijzer/default.nix b/pkgs/development/python-modules/stookwijzer/default.nix
new file mode 100644
index 0000000000000..6a2cb56f1161b
--- /dev/null
+++ b/pkgs/development/python-modules/stookwijzer/default.nix
@@ -0,0 +1,41 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  aiohttp,
+  pytz,
+}:
+
+buildPythonPackage rec {
+  pname = "stookwijzer";
+  version = "1.4.10";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "fwestenberg";
+    repo = "stookwijzer";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-uvmv35rdmqfr+psGQdnb3g2q72qCx4ew3gJdGeun6W8=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    aiohttp
+    pytz
+  ];
+
+  pythonImportsCheck = [ "stookwijzer" ];
+
+  # upstream has no tests
+  doCheck = false;
+
+  meta = {
+    changelog = "https://github.com/fwestenberg/stookwijzer/releases/tag/v${version}";
+    description = "Python package for the Stookwijzer API";
+    homepage = "https://github.com/fwestenberg/stookwijzer";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/stopit/default.nix b/pkgs/development/python-modules/stopit/default.nix
index 06ed79491ed71..4569b1ba88e2a 100644
--- a/pkgs/development/python-modules/stopit/default.nix
+++ b/pkgs/development/python-modules/stopit/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
 
 }:
 
diff --git a/pkgs/development/python-modules/stransi/default.nix b/pkgs/development/python-modules/stransi/default.nix
index 5b2802ea1afe8..52e6ee474549f 100644
--- a/pkgs/development/python-modules/stransi/default.nix
+++ b/pkgs/development/python-modules/stransi/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, hypothesis
-, pytestCheckHook
-, ochre
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  hypothesis,
+  pytestCheckHook,
+  ochre,
 }:
 
 buildPythonPackage rec {
@@ -19,23 +20,19 @@ buildPythonPackage rec {
     hash = "sha256-PDMel6emra5bzX+FwHvUVpFu2YkRKy31UwkCL4sGJ14=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   nativeCheckInputs = [
     hypothesis
     pytestCheckHook
   ];
 
-  propagatedBuildInputs = [
-    ochre
-  ];
+  propagatedBuildInputs = [ ochre ];
 
   pythonImportsCheck = [ "stransi" ];
 
   meta = with lib; {
-    description = "A lightweight Python parser library for ANSI escape code sequences";
+    description = "Lightweight Python parser library for ANSI escape code sequences";
     homepage = "https://github.com/getcuia/stransi";
     changelog = "https://github.com/getcuia/stransi/releases/tag/${src.rev}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/strategies/default.nix b/pkgs/development/python-modules/strategies/default.nix
index f9f31e34d1586..07aa6b8f00db3 100644
--- a/pkgs/development/python-modules/strategies/default.nix
+++ b/pkgs/development/python-modules/strategies/default.nix
@@ -1,6 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi
-, multipledispatch, toolz
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  multipledispatch,
+  toolz,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -13,13 +17,16 @@ buildPythonPackage rec {
     sha256 = "02i4ydrs9k61p8iv2vl2akks8p9gc88rw8031wlwb1zqsyjmb328";
   };
 
-  propagatedBuildInputs = [ multipledispatch toolz ];
+  propagatedBuildInputs = [
+    multipledispatch
+    toolz
+  ];
   nativeCheckInputs = [ pytest ];
 
   meta = {
-    description = "A Python library for control flow programming";
-    homepage    = "https://github.com/logpy/strategies";
-    license     = lib.licenses.mit;
+    description = "Python library for control flow programming";
+    homepage = "https://github.com/logpy/strategies";
+    license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ suhr ];
   };
 }
diff --git a/pkgs/development/python-modules/stravalib/default.nix b/pkgs/development/python-modules/stravalib/default.nix
index 8f9898657b658..f35593ecd95be 100644
--- a/pkgs/development/python-modules/stravalib/default.nix
+++ b/pkgs/development/python-modules/stravalib/default.nix
@@ -1,37 +1,38 @@
-{ lib
-, arrow
-, buildPythonPackage
-, fetchFromGitHub
-, pint
-, pydantic
-, pythonOlder
-, pytz
-, requests
-, responses
-, setuptools
-, setuptools-scm
+{
+  lib,
+  arrow,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pint,
+  pydantic,
+  pythonOlder,
+  pytz,
+  requests,
+  responses,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "stravalib";
-  version = "1.6";
+  version = "2.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "stravalib";
     repo = "stravalib";
     rev = "refs/tags/v${version}";
-    hash = "sha256-U+QlSrijvT77/m+yjhFxbcVTQe51J+PR4Kc8N+qG+wI=";
+    hash = "sha256-uF29fK+ZSSO688zKYYiSEygBUJZ6NBcvdgGgz3I1I6Q=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     arrow
     pint
     pydantic
@@ -43,9 +44,7 @@ buildPythonPackage rec {
   # Tests require network access, testing strava API
   doCheck = false;
 
-  pythonImportsCheck = [
-    "stravalib"
-  ];
+  pythonImportsCheck = [ "stravalib" ];
 
   meta = with lib; {
     description = "Python library for interacting with Strava v3 REST API";
@@ -53,6 +52,5 @@ buildPythonPackage rec {
     changelog = "https://github.com/stravalib/stravalib/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ sikmir ];
-    broken = lib.versionAtLeast pydantic.version "2";
   };
 }
diff --git a/pkgs/development/python-modules/strawberry-graphql/default.nix b/pkgs/development/python-modules/strawberry-graphql/default.nix
index 40ae06c91c8fc..1e3a816d6572d 100644
--- a/pkgs/development/python-modules/strawberry-graphql/default.nix
+++ b/pkgs/development/python-modules/strawberry-graphql/default.nix
@@ -1,57 +1,59 @@
-{ lib
-, aiohttp
-, asgiref
-, buildPythonPackage
-, chalice
-, channels
-, click
-, daphne
-, django
-, email-validator
-, fastapi
-, fetchFromGitHub
-, fetchpatch
-, flask
-, freezegun
-, graphql-core
-, libcst
-, opentelemetry-api
-, opentelemetry-sdk
-, poetry-core
-, pydantic
-, pygments
-, pyinstrument
-, pytest-aiohttp
-, pytest-asyncio
-, pytest-django
-, pytest-emoji
-, pytest-flask
-, pytest-mock
-, pytest-snapshot
-, pytestCheckHook
-, python-dateutil
-, python-multipart
-, pythonOlder
-, rich
-, sanic
-, sanic-testing
-, starlette
-, typing-extensions
-, uvicorn
+{
+  lib,
+  aiohttp,
+  asgiref,
+  buildPythonPackage,
+  chalice,
+  channels,
+  click,
+  daphne,
+  django,
+  email-validator,
+  fastapi,
+  fetchFromGitHub,
+  fetchpatch,
+  flask,
+  freezegun,
+  graphql-core,
+  inline-snapshot,
+  libcst,
+  opentelemetry-api,
+  opentelemetry-sdk,
+  poetry-core,
+  pydantic,
+  pygments,
+  pyinstrument,
+  pytest-aiohttp,
+  pytest-asyncio,
+  pytest-django,
+  pytest-emoji,
+  pytest-flask,
+  pytest-mock,
+  pytest-snapshot,
+  pytestCheckHook,
+  python-dateutil,
+  python-multipart,
+  pythonOlder,
+  rich,
+  sanic,
+  sanic-testing,
+  starlette,
+  typing-extensions,
+  uvicorn,
 }:
 
 buildPythonPackage rec {
   pname = "strawberry-graphql";
-  version = "0.219.2";
-  format = "pyproject";
+  version = "0.237.3";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "strawberry-graphql";
     repo = "strawberry";
     rev = "refs/tags/${version}";
-    hash = "sha256-uIUETjzuDnlQp6wM7uxyLRSMT5uyrXFrI9NilcjP0BU=";
+    hash = "sha256-w9ADHKpYijUtN/tB9ANN2ebTMNw8wvqMuYP9fNkisQw=";
   };
 
   patches = [
@@ -61,24 +63,16 @@ buildPythonPackage rec {
       url = "https://github.com/strawberry-graphql/strawberry/commit/710bb96f47c244e78fc54c921802bcdb48f5f421.patch";
       hash = "sha256-ekUZ2hDPCqwXp9n0YjBikwSkhCmVKUzQk7LrPECcD7Y=";
     })
-    (fetchpatch {
-      # https://github.com/strawberry-graphql/strawberry/pull/3255
-      name = "fix-tests-with-pydantic_2.patch";
-      url = "https://github.com/strawberry-graphql/strawberry/commit/0a0dc284ee6d31d4e82ac7ff1ed9fea4dff39fa6.patch";
-      hash = "sha256-LACWD7XA6YL/apJwhpx3LPCKxKUfa+XWyTLK+Zkxlaw=";
-    })
   ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "--emoji --mypy-ini-file=mypy.ini" "" \
+      --replace-fail "--emoji" "" \
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     graphql-core
     python-dateutil
     typing-extensions
@@ -123,37 +117,29 @@ buildPythonPackage rec {
       opentelemetry-api
       opentelemetry-sdk
     ];
-    pydantic = [
-      pydantic
-    ];
-    sanic = [
-      sanic
-    ];
+    pydantic = [ pydantic ];
+    sanic = [ sanic ];
     fastapi = [
       fastapi
       python-multipart
     ];
-    chalice = [
-      chalice
-    ];
+    chalice = [ chalice ];
     cli = [
       click
       pygments
       rich
       libcst
     ];
-    # starlite = [
-    #   starlite
-    # ];
-    pyinstrument = [
-      pyinstrument
-    ];
+    # starlite = [ starlite ];
+    # litestar = [ litestar ];
+    pyinstrument = [ pyinstrument ];
   };
 
   nativeCheckInputs = [
     daphne
     email-validator
     freezegun
+    inline-snapshot
     pytest-asyncio
     pytest-emoji
     pytest-mock
@@ -162,9 +148,7 @@ buildPythonPackage rec {
     sanic-testing
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "strawberry"
-  ];
+  pythonImportsCheck = [ "strawberry" ];
 
   disabledTestPaths = [
     "tests/benchmarks/"
@@ -172,7 +156,6 @@ buildPythonPackage rec {
     "tests/django/test_dataloaders.py"
     "tests/exceptions/"
     "tests/http/"
-    "tests/mypy/test_plugin.py" # avoid dependency on mypy
     "tests/schema/extensions/"
     "tests/schema/test_dataloaders.py"
     "tests/schema/test_lazy/"
@@ -180,16 +163,17 @@ buildPythonPackage rec {
     "tests/test_dataloaders.py"
     "tests/utils/test_pretty_print.py"
     "tests/websockets/test_graphql_transport_ws.py"
+    "tests/litestar/"
   ];
 
   __darwinAllowLocalNetworking = true;
 
   meta = with lib; {
-    description = "A GraphQL library for Python that leverages type annotations";
-    mainProgram = "strawberry";
+    description = "GraphQL library for Python that leverages type annotations";
     homepage = "https://strawberry.rocks";
     changelog = "https://github.com/strawberry-graphql/strawberry/blob/${version}/CHANGELOG.md";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ izorkin ];
+    mainProgram = "strawberry";
   };
 }
diff --git a/pkgs/development/python-modules/strct/default.nix b/pkgs/development/python-modules/strct/default.nix
index c5f9bc2f994b4..989b4e006d30b 100644
--- a/pkgs/development/python-modules/strct/default.nix
+++ b/pkgs/development/python-modules/strct/default.nix
@@ -1,50 +1,33 @@
-{ lib
-, fetchFromGitHub
-, fetchpatch
-, buildPythonPackage
-, setuptools
-, pytestCheckHook
-, sortedcontainers
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  pytestCheckHook,
+  pytest-cov-stub,
+  sortedcontainers,
 }:
 
 buildPythonPackage rec {
   pname = "strct";
-  version = "0.0.32";
+  version = "0.0.34";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "shaypal5";
     repo = "strct";
     rev = "v${version}";
-    hash = "sha256-ctafvdfSOdp7tlCUYg7d5XTXR1qBcWvOVtGtNUnhYIw=";
+    hash = "sha256-uPM2U+emZUCGqEhIeTBmaOu8eSfK4arqvv9bItBWpUs=";
   };
 
-  patches = [
-    # https://github.com/shaypal5/strct/pull/4
-    (fetchpatch {
-      name = "fix-versioneer-on-python312.patch";
-      url = "https://github.com/shaypal5/strct/commit/a1e5b6ca9045b52efdfdbb3c82e12a01e251d41b.patch";
-      hash = "sha256-xXADCSIhq1ARny2twzrhR1J8LkMFWFl6tmGxrM8RvkU=";
-    })
-  ];
-
-  postPatch = ''
-    substituteInPlace pytest.ini \
-      --replace-fail  \
-        "--cov" \
-        "#--cov"
+  # don't append .dev0 to version
+  env.RELEASING_PROCESS = "1";
 
-    # configure correct version, which fails due to missing .git
-    substituteInPlace versioneer.py strct/_version.py \
-      --replace-fail '"0+unknown"' '"${version}"'
-  '';
-
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
     sortedcontainers
   ];
 
@@ -58,7 +41,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A small pure-python package for data structure related utility functions";
+    description = "Small pure-python package for data structure related utility functions";
     homepage = "https://github.com/shaypal5/strct";
     license = licenses.mit;
     maintainers = with maintainers; [ pbsds ];
diff --git a/pkgs/development/python-modules/streamcontroller-plugin-tools/default.nix b/pkgs/development/python-modules/streamcontroller-plugin-tools/default.nix
new file mode 100644
index 0000000000000..1375f6eae7859
--- /dev/null
+++ b/pkgs/development/python-modules/streamcontroller-plugin-tools/default.nix
@@ -0,0 +1,33 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  loguru,
+  rpyc,
+}:
+buildPythonPackage rec {
+  pname = "streamcontroller-plugin-tools";
+  version = "2.0.0";
+
+  src = fetchFromGitHub {
+    owner = "StreamController";
+    repo = "streamcontroller-plugin-tools";
+    rev = version;
+    hash = "sha256-dQZPRSzHhI3X+Pf7miwJlECGFgUfp68PtvwXAmpq5/s=";
+  };
+
+  dependencies = [
+    loguru
+    rpyc
+  ];
+
+  pythonImportsCheck = [ "streamcontroller_plugin_tools" ];
+
+  meta = with lib; {
+    description = "StreamController plugin tools";
+    homepage = "https://github.com/StreamController/streamcontroller-plugin-tools";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ sifmelcara ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/development/python-modules/streamdeck/default.nix b/pkgs/development/python-modules/streamdeck/default.nix
index 6202fcdf1f798..ba23f550e0c27 100644
--- a/pkgs/development/python-modules/streamdeck/default.nix
+++ b/pkgs/development/python-modules/streamdeck/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, substituteAll
-, pkgs
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  substituteAll,
+  pkgs,
 }:
 
 buildPythonPackage rec {
@@ -32,6 +33,5 @@ buildPythonPackage rec {
     homepage = "https://github.com/abcminiuser/python-elgato-streamdeck";
     license = licenses.mit;
     maintainers = with maintainers; [ majiir ];
-    broken = stdenv.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/streaming-form-data/default.nix b/pkgs/development/python-modules/streaming-form-data/default.nix
index 18df3a778da2b..0d13b9db97cca 100644
--- a/pkgs/development/python-modules/streaming-form-data/default.nix
+++ b/pkgs/development/python-modules/streaming-form-data/default.nix
@@ -1,5 +1,12 @@
-{ lib, fetchFromGitHub, buildPythonPackage, pythonOlder,
-cython, pytestCheckHook, requests-toolbelt }:
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonOlder,
+  cython,
+  pytestCheckHook,
+  requests-toolbelt,
+}:
 
 buildPythonPackage rec {
   pname = "streaming-form-data";
@@ -17,13 +24,14 @@ buildPythonPackage rec {
   # streaming-form-data has a small bit of code that uses smart_open, which has a massive closure.
   # The only consumer of streaming-form-data is Moonraker, which doesn't use that code.
   # So, just drop the dependency to not have to deal with it.
-  patches = [
-    ./drop-smart-open.patch
-  ];
+  patches = [ ./drop-smart-open.patch ];
 
   nativeBuildInputs = [ cython ];
 
-  nativeCheckInputs = [ pytestCheckHook requests-toolbelt ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    requests-toolbelt
+  ];
 
   pytestFlagsArray = [ "tests" ];
 
diff --git a/pkgs/development/python-modules/streamlabswater/default.nix b/pkgs/development/python-modules/streamlabswater/default.nix
index 68f6011edcf48..6ca91eaa33ca4 100644
--- a/pkgs/development/python-modules/streamlabswater/default.nix
+++ b/pkgs/development/python-modules/streamlabswater/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-kXG0Wg3PVryMBQ9RMMtEzudMiwVQq7Ikw2OK7JcBojA=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/streamlit/default.nix b/pkgs/development/python-modules/streamlit/default.nix
index 7dc7395749b39..71ce1b81aa9aa 100644
--- a/pkgs/development/python-modules/streamlit/default.nix
+++ b/pkgs/development/python-modules/streamlit/default.nix
@@ -1,58 +1,58 @@
-{ lib
-, stdenv
-, altair
-, blinker
-, buildPythonPackage
-, cachetools
-, click
-, fetchPypi
-, gitpython
-, importlib-metadata
-, numpy
-, packaging
-, pandas
-, pillow
-, protobuf
-, pyarrow
-, pydeck
-, pympler
-, python-dateutil
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools
-, requests
-, rich
-, tenacity
-, toml
-, tornado
-, typing-extensions
-, tzlocal
-, validators
-, watchdog
+{
+  lib,
+  stdenv,
+  altair,
+  blinker,
+  buildPythonPackage,
+  cachetools,
+  click,
+  fetchPypi,
+  gitpython,
+  importlib-metadata,
+  numpy,
+  packaging,
+  pandas,
+  pillow,
+  protobuf,
+  pyarrow,
+  pydeck,
+  pympler,
+  python-dateutil,
+  pythonOlder,
+  setuptools,
+  requests,
+  rich,
+  tenacity,
+  toml,
+  tornado,
+  typing-extensions,
+  tzlocal,
+  validators,
+  watchdog,
 }:
 
 buildPythonPackage rec {
   pname = "streamlit";
-  version = "1.33.0";
+  version = "1.38.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-qNqP9G9blIxW0tx6ynphz42ZX08hdEz4IliudeYwBLo=";
+    hash = "sha256-xL82s++HFJntRZRXSDRYMRP5Pwd90wNdUW0pV4byrWM=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
-    pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = [
     "packaging"
+    "tenacity"
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     altair
     blinker
     cachetools
@@ -76,16 +76,12 @@ buildPythonPackage rec {
     typing-extensions
     tzlocal
     validators
-  ] ++ lib.optionals (!stdenv.isDarwin) [
-    watchdog
-  ];
+  ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ watchdog ];
 
   # pypi package does not include the tests, but cannot be built with fetchFromGitHub
   doCheck = false;
 
-  pythonImportsCheck = [
-    "streamlit"
-  ];
+  pythonImportsCheck = [ "streamlit" ];
 
   postInstall = ''
     rm $out/bin/streamlit.cmd # remove windows helper
@@ -94,9 +90,12 @@ buildPythonPackage rec {
   meta = with lib; {
     homepage = "https://streamlit.io/";
     changelog = "https://github.com/streamlit/streamlit/releases/tag/${version}";
-    description = "The fastest way to build custom ML tools";
+    description = "Fastest way to build custom ML tools";
     mainProgram = "streamlit";
-    maintainers = with maintainers; [ natsukium yrashk ];
+    maintainers = with maintainers; [
+      natsukium
+      yrashk
+    ];
     license = licenses.asl20;
   };
 }
diff --git a/pkgs/development/python-modules/streamz/default.nix b/pkgs/development/python-modules/streamz/default.nix
index ff12abf47ae39..eea52b8fa8f26 100644
--- a/pkgs/development/python-modules/streamz/default.nix
+++ b/pkgs/development/python-modules/streamz/default.nix
@@ -1,27 +1,29 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, confluent-kafka
-, distributed
-, fetchpatch
-, fetchPypi
-, flaky
-, graphviz
-, networkx
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, requests
-, six
-, toolz
-, tornado
-, zict
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  confluent-kafka,
+  dask,
+  dask-expr,
+  distributed,
+  flaky,
+  graphviz,
+  networkx,
+  pytest-asyncio,
+  pytestCheckHook,
+  requests,
+  six,
+  toolz,
+  tornado,
+  zict,
 }:
 
 buildPythonPackage rec {
   pname = "streamz";
   version = "0.6.4";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
@@ -30,7 +32,9 @@ buildPythonPackage rec {
     hash = "sha256-VXfWkEwuxInBQVQJV3IQXgGVRkiBmYfUZCBMbjyWNPM=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     networkx
     six
     toolz
@@ -40,6 +44,8 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     confluent-kafka
+    dask
+    dask-expr
     distributed
     flaky
     graphviz
@@ -48,9 +54,7 @@ buildPythonPackage rec {
     requests
   ];
 
-  pythonImportsCheck = [
-    "streamz"
-  ];
+  pythonImportsCheck = [ "streamz" ];
 
   disabledTests = [
     # Error with distutils version: fixture 'cleanup' not found
@@ -74,10 +78,9 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
     description = "Pipelines to manage continuous streams of data";
     homepage = "https://github.com/python-streamz/streamz";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/strenum/default.nix b/pkgs/development/python-modules/strenum/default.nix
index b3ae130af2705..68e6a93e76c24 100644
--- a/pkgs/development/python-modules/strenum/default.nix
+++ b/pkgs/development/python-modules/strenum/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -37,17 +38,11 @@ buildPythonPackage rec {
       --replace " --cov=strenum --cov-report term-missing --black --pylint" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "strenum"
-  ];
+  pythonImportsCheck = [ "strenum" ];
 
   meta = with lib; {
     description = "Module for enum that inherits from str";
diff --git a/pkgs/development/python-modules/strict-rfc3339/default.nix b/pkgs/development/python-modules/strict-rfc3339/default.nix
index 783aa49904d7f..5f4cfe3b7c4bb 100644
--- a/pkgs/development/python-modules/strict-rfc3339/default.nix
+++ b/pkgs/development/python-modules/strict-rfc3339/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "strict-rfc3339";
diff --git a/pkgs/development/python-modules/strictyaml/default.nix b/pkgs/development/python-modules/strictyaml/default.nix
index d9d57faf48f4d..9e5a4ed1e3e35 100644
--- a/pkgs/development/python-modules/strictyaml/default.nix
+++ b/pkgs/development/python-modules/strictyaml/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, ruamel-yaml
-, python-dateutil
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  ruamel-yaml,
+  python-dateutil,
 }:
 
 buildPythonPackage rec {
@@ -32,15 +33,13 @@ buildPythonPackage rec {
   # https://hitchdev.com/approach/contributing-to-hitch-libraries/
   doCheck = false;
 
-  pythonImportsCheck = [
-    "strictyaml"
-  ];
+  pythonImportsCheck = [ "strictyaml" ];
 
   meta = with lib; {
     description = "Strict, typed YAML parser";
     homepage = "https://hitchdev.com/strictyaml/";
     changelog = "https://hitchdev.com/strictyaml/changelog/";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/stringbrewer/default.nix b/pkgs/development/python-modules/stringbrewer/default.nix
index d93552816cd26..8b79efd7be55d 100644
--- a/pkgs/development/python-modules/stringbrewer/default.nix
+++ b/pkgs/development/python-modules/stringbrewer/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, rstr
-, sre-yield
-, pythonImportsCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  rstr,
+  sre-yield,
+  pythonImportsCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     rstr
     sre-yield
   ];
-  nativeBuildInputs = [
-    pythonImportsCheckHook
-  ];
+  nativeBuildInputs = [ pythonImportsCheckHook ];
 
   # Package has no tests
   doCheck = false;
@@ -35,4 +34,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ danc86 ];
   };
 }
-
diff --git a/pkgs/development/python-modules/stringcase/default.nix b/pkgs/development/python-modules/stringcase/default.nix
index 3875afcc72baa..6fa57744e1f93 100644
--- a/pkgs/development/python-modules/stringcase/default.nix
+++ b/pkgs/development/python-modules/stringcase/default.nix
@@ -1,4 +1,7 @@
-{ buildPythonPackage, fetchPypi, lib
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/stringly/default.nix b/pkgs/development/python-modules/stringly/default.nix
index b0b8f0515b59a..c7637bb082c7c 100644
--- a/pkgs/development/python-modules/stringly/default.nix
+++ b/pkgs/development/python-modules/stringly/default.nix
@@ -1,4 +1,9 @@
-{ lib , python, buildPythonPackage , fetchPypi, typing-extensions }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  typing-extensions,
+}:
 
 buildPythonPackage rec {
   pname = "stringly";
@@ -12,13 +17,7 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "stringly" ];
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
-
-  checkPhase = ''
-    ${python.interpreter} -m unittest
-  '';
+  propagatedBuildInputs = [ typing-extensions ];
 
   meta = with lib; {
     description = "Stringly: Human Readable Object Serialization";
diff --git a/pkgs/development/python-modules/stringparser/default.nix b/pkgs/development/python-modules/stringparser/default.nix
index 900f102088060..63f163d5f8995 100644
--- a/pkgs/development/python-modules/stringparser/default.nix
+++ b/pkgs/development/python-modules/stringparser/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -27,17 +28,11 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ typing-extensions ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "stringparser"
-  ];
+  pythonImportsCheck = [ "stringparser" ];
 
   meta = with lib; {
     description = "Easy to use pattern matching and information extraction";
diff --git a/pkgs/development/python-modules/stripe/default.nix b/pkgs/development/python-modules/stripe/default.nix
index fe31361a65be7..3d3bd39ca13af 100644
--- a/pkgs/development/python-modules/stripe/default.nix
+++ b/pkgs/development/python-modules/stripe/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
-, setuptools
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "stripe";
-  version = "9.4.0";
+  version = "10.12.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-D94cu/Re4Nd71/vYVhiG37bawPNuWp5T/cpKc4biPsw=";
+    hash = "sha256-Wr7ERUjTgUvB4HCqGFK8s/xcwCnpR8D3MxVusfjIcDA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     requests
     typing-extensions
   ];
@@ -31,15 +30,13 @@ buildPythonPackage rec {
   # Tests require network connectivity and there's no easy way to disable them
   doCheck = false;
 
-  pythonImportsCheck = [
-    "stripe"
-  ];
+  pythonImportsCheck = [ "stripe" ];
 
   meta = with lib; {
     description = "Stripe Python bindings";
     homepage = "https://github.com/stripe/stripe-python";
     changelog = "https://github.com/stripe/stripe-python/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/striprtf/default.nix b/pkgs/development/python-modules/striprtf/default.nix
index d7024ef130de5..94afa18cf9faf 100644
--- a/pkgs/development/python-modules/striprtf/default.nix
+++ b/pkgs/development/python-modules/striprtf/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -16,14 +17,12 @@ buildPythonPackage rec {
     hash = "sha256-/bK7p6xEAHLRxB6rUNjXSuiPYKi2V1xuLHgF3EYgk6o=";
   };
 
-  pythonImportsCheck = [
-    "striprtf"
-  ];
+  pythonImportsCheck = [ "striprtf" ];
 
   meta = with lib; {
     changelog = "https://github.com/joshy/striprtf/blob/v${version}/CHANGELOG.md";
     homepage = "https://github.com/joshy/striprtf";
-    description = "A simple library to convert rtf to text";
+    description = "Simple library to convert rtf to text";
     mainProgram = "striprtf";
     maintainers = with maintainers; [ aanderse ];
     license = with licenses; [ bsd3 ];
diff --git a/pkgs/development/python-modules/strpdatetime/default.nix b/pkgs/development/python-modules/strpdatetime/default.nix
new file mode 100644
index 0000000000000..f7e758bd1c3fd
--- /dev/null
+++ b/pkgs/development/python-modules/strpdatetime/default.nix
@@ -0,0 +1,39 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  textx,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "strpdatetime";
+  version = "0.3.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "RhetTbull";
+    repo = "strpdatetime";
+    rev = "v${version}";
+    hash = "sha256-eb3KJCFRkEt9KEP1gMQYuP50qXqItrexJhKvtJDHl9o=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [ textx ];
+  pythonRelaxDeps = [ "textx" ];
+
+  patches = [ ./fix-locale.patch ];
+
+  pythonImportsCheck = [ "strpdatetime" ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "Parse strings into Python datetime objects";
+    license = lib.licenses.psfl;
+    changelog = "https://github.com/RhetTbull/strpdatetime/blob/${src.rev}/CHANGELOG.md";
+    homepage = "https://github.com/RhetTbull/strpdatetime";
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/strpdatetime/fix-locale.patch b/pkgs/development/python-modules/strpdatetime/fix-locale.patch
new file mode 100644
index 0000000000000..d79bd63c66556
--- /dev/null
+++ b/pkgs/development/python-modules/strpdatetime/fix-locale.patch
@@ -0,0 +1,10 @@
+diff --git a/tests/test_strpdatetime.py b/tests/test_strpdatetime.py
+index 6c371d6..a3d0232 100644
+--- a/tests/test_strpdatetime.py
++++ b/tests/test_strpdatetime.py
+@@ -44,5 +44,4 @@ TEST_DATA = [
+ @pytest.mark.parametrize("string, format, expected", TEST_DATA)
+ def test_datetime_strptime(string, format, expected):
+     """Test datetime_strptime"""
+-    locale.setlocale(locale.LC_ALL, "en_US.UTF-8")
+     assert strpdatetime(string, format) == expected
diff --git a/pkgs/development/python-modules/structlog/default.nix b/pkgs/development/python-modules/structlog/default.nix
index a6c826a00a5e0..0831fd99bbb61 100644
--- a/pkgs/development/python-modules/structlog/default.nix
+++ b/pkgs/development/python-modules/structlog/default.nix
@@ -1,21 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, freezegun
-, hatch-fancy-pypi-readme
-, hatch-vcs
-, hatchling
-, pretend
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, simplejson
-, twisted
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  hatch-fancy-pypi-readme,
+  hatch-vcs,
+  hatchling,
+  pretend,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  simplejson,
 }:
 
 buildPythonPackage rec {
   pname = "structlog";
-  version = "24.1.0";
+  version = "24.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,10 +24,10 @@ buildPythonPackage rec {
     owner = "hynek";
     repo = "structlog";
     rev = "refs/tags/${version}";
-    hash = "sha256-0Yc28UEeozK2+IqILFTqHoTiM5L2SA4t6jld4qTBSzQ=";
+    hash = "sha256-z3ecgsep/BQJ+Fv78rV4XiFU4+1aaUEfNEtIqy44KV4=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-fancy-pypi-readme
     hatch-vcs
     hatchling
@@ -39,12 +39,9 @@ buildPythonPackage rec {
     pytest-asyncio
     pytestCheckHook
     simplejson
-    twisted
   ];
 
-  pythonImportsCheck = [
-    "structlog"
-  ];
+  pythonImportsCheck = [ "structlog" ];
 
   meta = with lib; {
     description = "Painless structural logging";
diff --git a/pkgs/development/python-modules/stubserver/default.nix b/pkgs/development/python-modules/stubserver/default.nix
index 87b9cd988cce4..af0ba80ce0609 100644
--- a/pkgs/development/python-modules/stubserver/default.nix
+++ b/pkgs/development/python-modules/stubserver/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
   # Tests are not shipped and the source not tagged
   doCheck = false;
 
-  pythonImportsCheck = [
-    "stubserver"
-  ];
+  pythonImportsCheck = [ "stubserver" ];
 
   meta = with lib; {
     description = "Web and FTP server for use in unit and7or acceptance tests";
diff --git a/pkgs/development/python-modules/stumpy/default.nix b/pkgs/development/python-modules/stumpy/default.nix
index 491af1105dae7..f8d9015b28405 100644
--- a/pkgs/development/python-modules/stumpy/default.nix
+++ b/pkgs/development/python-modules/stumpy/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, scipy
-, numba
-, pandas
-, dask
-, distributed
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  scipy,
+  numba,
+  pandas,
+  dask,
+  distributed,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -38,9 +39,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "stumpy"
-  ];
+  pythonImportsCheck = [ "stumpy" ];
 
   pytestFlagsArray = [
     # whole testsuite is very CPU intensive, only run core tests
@@ -52,6 +51,6 @@ buildPythonPackage rec {
     description = "Library that can be used for a variety of time series data mining tasks";
     homepage = "https://github.com/TDAmeritrade/stumpy";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/stupidartnet/default.nix b/pkgs/development/python-modules/stupidartnet/default.nix
index 6ed5783f13d20..8c97d3cb5e6ed 100644
--- a/pkgs/development/python-modules/stupidartnet/default.nix
+++ b/pkgs/development/python-modules/stupidartnet/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-6vEzInt1ofVVjTZAOH0Zw3BdwpX//1ZWwJqWPP5fIC8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "stupidArtnet"
-  ];
+  pythonImportsCheck = [ "stupidArtnet" ];
 
   meta = with lib; {
     description = "Library implementation of the Art-Net protocol";
diff --git a/pkgs/development/python-modules/stups-cli-support/default.nix b/pkgs/development/python-modules/stups-cli-support/default.nix
index 33673f7a47af5..7b37464a69be5 100644
--- a/pkgs/development/python-modules/stups-cli-support/default.nix
+++ b/pkgs/development/python-modules/stups-cli-support/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, clickclick
-, dnspython
-, requests
-, pytest
-, pytest-cov
-, isPy3k
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  clickclick,
+  dnspython,
+  requests,
+  pytestCheckHook,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
   pname = "stups-cli-support";
   version = "1.1.20";
-  format = "setuptools";
+  pyproject = true;
   disabled = !isPy3k;
 
   src = fetchFromGitHub {
@@ -22,7 +23,9 @@ buildPythonPackage rec {
     sha256 = "1r6g29gd009p87m8a6wv4rzx7f0564zdv67qz5xys4wsgvc95bx0";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     clickclick
     dnspython
     requests
@@ -30,13 +33,10 @@ buildPythonPackage rec {
 
   preCheck = "export HOME=$TEMPDIR";
 
-  nativeCheckInputs = [
-    pytest
-    pytest-cov
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "Helper library for all STUPS command line tools.";
+    description = "Helper library for all STUPS command line tools";
     homepage = "https://github.com/zalando-stups/stups-cli-support";
     license = licenses.asl20;
     maintainers = [ maintainers.mschuwalow ];
diff --git a/pkgs/development/python-modules/stups-fullstop/default.nix b/pkgs/development/python-modules/stups-fullstop/default.nix
index 2b668871f57f6..494c8ecf1e9ee 100644
--- a/pkgs/development/python-modules/stups-fullstop/default.nix
+++ b/pkgs/development/python-modules/stups-fullstop/default.nix
@@ -1,12 +1,14 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, requests
-, stups-cli-support
-, stups-zign
-, pytest
-, pytest-cov
-, isPy3k
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonAtLeast,
+  requests,
+  stups-cli-support,
+  stups-zign,
+  pytest,
+  pytest-cov,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -38,9 +40,12 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "Convenience command line tool for fullstop. audit reporting.";
+    description = "Convenience command line tool for fullstop. audit reporting";
     homepage = "https://github.com/zalando-stups/stups-fullstop-cli";
     license = licenses.asl20;
     maintainers = [ maintainers.mschuwalow ];
+    # Uses regex patterns deprecated in 3.9:
+    #     re.error: global flags not at the start of the expression at ...
+    broken = pythonAtLeast "3.11";
   };
 }
diff --git a/pkgs/development/python-modules/stups-pierone/default.nix b/pkgs/development/python-modules/stups-pierone/default.nix
index b99ac4cf520bf..1415e07ab1afc 100644
--- a/pkgs/development/python-modules/stups-pierone/default.nix
+++ b/pkgs/development/python-modules/stups-pierone/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, requests
-, stups-cli-support
-, stups-zign
-, pytest
-, pytest-cov
-, hypothesis
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  requests,
+  stups-cli-support,
+  stups-zign,
+  pytestCheckHook,
+  hypothesis,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "stups-pierone";
   version = "1.1.51";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -24,7 +25,11 @@ buildPythonPackage rec {
     hash = "sha256-OypGYHfiFUfcUndylM2N2WfPnfXXJ4gvWypUbltYAYE=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  pythonRelaxDeps = [ "stups-zign" ];
+
+  dependencies = [
     requests
     stups-cli-support
     stups-zign
@@ -35,14 +40,11 @@ buildPythonPackage rec {
   '';
 
   nativeCheckInputs = [
-    pytest
-    pytest-cov
+    pytestCheckHook
     hypothesis
   ];
 
-  pythonImportsCheck = [
-    "pierone"
-  ];
+  pythonImportsCheck = [ "pierone" ];
 
   meta = with lib; {
     description = "Convenient command line client for STUPS' Pier One Docker registry";
diff --git a/pkgs/development/python-modules/stups-tokens/default.nix b/pkgs/development/python-modules/stups-tokens/default.nix
index dd95394632659..3d9c4cd07735e 100644
--- a/pkgs/development/python-modules/stups-tokens/default.nix
+++ b/pkgs/development/python-modules/stups-tokens/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, requests
-, mock
-, pytest
-, pytest-cov
-, isPy3k
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  setuptools,
+  requests,
+  mock,
+  pytestCheckHook,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
   pname = "stups-tokens";
   version = "1.1.19";
-  format = "setuptools";
+  pyproject = true;
   disabled = !isPy3k;
 
   src = fetchFromGitHub {
@@ -21,18 +22,17 @@ buildPythonPackage rec {
     sha256 = "09z3l3xzdlwpivbi141gk1k0zd9m75mjwbdy81zc386rr9k8s0im";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ requests ];
 
   nativeCheckInputs = [
     mock
-    pytest
-    pytest-cov
+    pytestCheckHook
   ];
 
   meta = with lib; {
-    description = "A Python library that keeps OAuth 2.0 service access tokens in memory for your usage.";
+    description = "Python library that keeps OAuth 2.0 service access tokens in memory for your usage";
     homepage = "https://github.com/zalando-stups/python-tokens";
     license = licenses.asl20;
     maintainers = [ maintainers.mschuwalow ];
diff --git a/pkgs/development/python-modules/stups-zign/default.nix b/pkgs/development/python-modules/stups-zign/default.nix
index 3fd99c0621678..1c54cdb512120 100644
--- a/pkgs/development/python-modules/stups-zign/default.nix
+++ b/pkgs/development/python-modules/stups-zign/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, stups-tokens
-, stups-cli-support
-, pytest
-, pytest-cov
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  setuptools,
+  stups-tokens,
+  stups-cli-support,
+  pytestCheckHook,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
   pname = "stups-zign";
   version = "1.2";
-  format = "setuptools";
+  pyproject = true;
   disabled = !isPy3k;
 
   src = fetchFromGitHub {
@@ -30,7 +31,9 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     stups-tokens
     stups-cli-support
   ];
@@ -39,13 +42,10 @@ buildPythonPackage rec {
     export HOME=$TEMPDIR
   ";
 
-  nativeCheckInputs = [
-    pytest
-    pytest-cov
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "OAuth2 token management command line utility.";
+    description = "OAuth2 token management command line utility";
     homepage = "https://github.com/zalando-stups/zign";
     license = licenses.asl20;
     maintainers = [ maintainers.mschuwalow ];
diff --git a/pkgs/development/python-modules/stytra/default.nix b/pkgs/development/python-modules/stytra/default.nix
index 821aaa41437c8..5af44d4639219 100644
--- a/pkgs/development/python-modules/stytra/default.nix
+++ b/pkgs/development/python-modules/stytra/default.nix
@@ -1,33 +1,33 @@
-{ lib
-, anytree
-, arrayqueues
-, av
-, buildPythonPackage
-, colorspacious
-, fetchPypi
-, flammkuchen
-, git
-, gitpython
-, imageio
-, imageio-ffmpeg
-, lightparam
-, matplotlib
-, nose
-, numba
-, numpy
-, opencv4
-, pandas
-, pims
-, pyqt5
-, pyqtgraph
-, pyserial
-, pytestCheckHook
-, pythonOlder
-, qdarkstyle
-, qimage2ndarray
-, scikit-image
-, scipy
-, tables
+{
+  lib,
+  anytree,
+  arrayqueues,
+  av,
+  buildPythonPackage,
+  colorspacious,
+  fetchPypi,
+  flammkuchen,
+  git,
+  gitpython,
+  imageio,
+  imageio-ffmpeg,
+  lightparam,
+  matplotlib,
+  numba,
+  numpy,
+  opencv4,
+  pandas,
+  pims,
+  pyqt5,
+  pyqtgraph,
+  pyserial,
+  pytestCheckHook,
+  pythonOlder,
+  qdarkstyle,
+  qimage2ndarray,
+  scikit-image,
+  scipy,
+  tables,
 }:
 
 buildPythonPackage rec {
@@ -73,7 +73,6 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
-    nose
     pytestCheckHook
     pyserial
   ];
@@ -84,10 +83,9 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A modular package to control stimulation and track behaviour";
+    description = "Modular package to control stimulation and track behaviour";
     homepage = "https://github.com/portugueslab/stytra";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ tbenst ];
-    broken = true;  # incompatible with pyqtgraph>0.13.0: https://github.com/portugueslab/stytra/issues/87
   };
 }
diff --git a/pkgs/development/python-modules/subarulink/default.nix b/pkgs/development/python-modules/subarulink/default.nix
index 1cff8ae459ff3..6adb88a40f328 100644
--- a/pkgs/development/python-modules/subarulink/default.nix
+++ b/pkgs/development/python-modules/subarulink/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, stdiomask
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  stdiomask,
 }:
 
 buildPythonPackage rec {
   pname = "subarulink";
-  version = "0.7.11";
+  version = "0.7.12";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -20,7 +21,7 @@ buildPythonPackage rec {
     owner = "G-Two";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-HKtToMh4dAUpA654tFkUEM9DLPGr9XRQK0ezYzNPzqk=";
+    hash = "sha256-vH4jdH8ZqMSGqHa/4WzvSy7IcN8b3rr/TswsWtoSxOw=";
   };
 
   propagatedBuildInputs = [
@@ -45,9 +46,7 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d)
   '';
 
-  pythonImportsCheck = [
-    "subarulink"
-  ];
+  pythonImportsCheck = [ "subarulink" ];
 
   meta = with lib; {
     description = "Python module for interacting with STARLINK-enabled vehicle";
diff --git a/pkgs/development/python-modules/subliminal/default.nix b/pkgs/development/python-modules/subliminal/default.nix
index b72d8e0311ccc..23347af0ff452 100644
--- a/pkgs/development/python-modules/subliminal/default.nix
+++ b/pkgs/development/python-modules/subliminal/default.nix
@@ -1,96 +1,89 @@
-{ lib
-, appdirs
-, babelfish
-, beautifulsoup4
-, buildPythonPackage
-, chardet
-, click
-, dogpile-cache
-, enzyme
-, fetchFromGitHub
-, guessit
-, pysrt
-, pytestCheckHook
-, pythonOlder
-, pytz
-, rarfile
-, requests
-, six
-, stevedore
-, sympy
-, vcrpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  babelfish,
+  beautifulsoup4,
+  chardet,
+  click,
+  click-option-group,
+  dogpile-cache,
+  enzyme,
+  guessit,
+  srt,
+  pysubs2,
+  rarfile,
+  requests,
+  platformdirs,
+  stevedore,
+  tomli,
+
+  pytestCheckHook,
+  pytest-cov,
+  pytest-xdist,
+  mypy,
+  sympy,
+  vcrpy,
 }:
 
 buildPythonPackage rec {
   pname = "subliminal";
-  version = "2.1.0";
-  format = "setuptools";
+  version = "2.2.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "Diaoul";
-    repo = pname;
+    repo = "subliminal";
     rev = "refs/tags/${version}";
-    hash = "sha256-P4gVxKKCGKS3MC4F3yTAaOSv36TtdoYfrf61tBHg8VY=";
+    hash = "sha256-g7gg2qdLKl7bg/nNXRWN9wZaNShOOc38sVASZrIycMU=";
   };
 
-  postPatch = ''
-    substituteInPlace pytest.ini \
-      --replace " --pep8 --flakes" ""
-  '';
-
   propagatedBuildInputs = [
-    appdirs
     babelfish
     beautifulsoup4
     chardet
     click
+    click-option-group
     dogpile-cache
     enzyme
     guessit
-    pysrt
-    pytz
+    srt
+    pysubs2
     rarfile
     requests
-    six
+    platformdirs
     stevedore
+    tomli
   ];
 
   nativeCheckInputs = [
+    pytestCheckHook
+    pytest-cov
+    pytest-xdist
+    mypy
     sympy
     vcrpy
-    pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "subliminal"
-  ];
+  pythonImportsCheck = [ "subliminal" ];
 
   disabledTests = [
-    # Tests rewuire network access
-    "test_refine_video_metadata"
+    # Tests require network access
+    "test_refine"
     "test_scan"
     "test_hash"
-    "test_provider_pool_list_subtitles"
-    "test_async_provider_pool_list_subtitles"
-    "test_list_subtitles"
-    "test_download_bad_subtitle"
-    # Not implemented
-    "test_save_subtitles"
-  ];
-
-  disabledTestPaths = [
-    # AttributeError: module 'rarfile' has no attribute 'custom_check'
-    "tests/test_legendastv.py"
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Python library to search and download subtitles";
     homepage = "https://github.com/Diaoul/subliminal";
     changelog = "https://github.com/Diaoul/subliminal/blob/${version}/HISTORY.rst";
-    license = licenses.mit;
-    maintainers = with maintainers; [ doronbehar ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ doronbehar ];
     # Too many tests fail ever since a certain python-updates merge, see:
     # https://github.com/Diaoul/subliminal/issues/1062 . Disabling tests
     # alltogether may produce a not completly failing executable, but that
diff --git a/pkgs/development/python-modules/subprocess-tee/default.nix b/pkgs/development/python-modules/subprocess-tee/default.nix
index 462a0cd60b0b5..d7e572746520d 100644
--- a/pkgs/development/python-modules/subprocess-tee/default.nix
+++ b/pkgs/development/python-modules/subprocess-tee/default.nix
@@ -1,22 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, pytestCheckHook
-, enrich
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  enrich,
 }:
 
 buildPythonPackage rec {
   pname = "subprocess-tee";
-  version = "0.4.1";
-  format = "pyproject";
+  version = "0.4.2";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-s8EkmT+LiNHrHC/eC8IGl4fqxyC6iHccuhfoyTMkgl0=";
+  src = fetchFromGitHub {
+    owner = "pycontribs";
+    repo = "subprocess-tee";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-rfI4UZdENfSQ9EbQeldv6DDGIQe5yMjboGTCOwed1AU=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
@@ -32,13 +37,12 @@ buildPythonPackage rec {
     "test_rich_console_ex"
   ];
 
-  pythonImportsCheck = [
-    "subprocess_tee"
-  ];
+  pythonImportsCheck = [ "subprocess_tee" ];
 
   meta = with lib; {
     homepage = "https://github.com/pycontribs/subprocess-tee";
-    description = "A subprocess.run drop-in replacement that supports a tee mode";
+    description = "Subprocess.run drop-in replacement that supports a tee mode";
+    changelog = "https://github.com/pycontribs/subprocess-tee/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ putchar ];
   };
diff --git a/pkgs/development/python-modules/subunit/default.nix b/pkgs/development/python-modules/subunit/default.nix
index 299d7a2ecd29c..b101ec505aebe 100644
--- a/pkgs/development/python-modules/subunit/default.nix
+++ b/pkgs/development/python-modules/subunit/default.nix
@@ -1,19 +1,20 @@
-{ buildPythonPackage
-# pkgs dependencies
-, check
-, cppunit
-, pkg-config
-, subunit
-, pythonOlder
-
-# python dependencies
-, extras
-, fixtures
-, hypothesis
-, pytestCheckHook
-, setuptools
-, testscenarios
-, testtools
+{
+  buildPythonPackage,
+  # pkgs dependencies
+  check,
+  cppunit,
+  pkg-config,
+  subunit,
+  pythonOlder,
+
+  # python dependencies
+  extras,
+  fixtures,
+  hypothesis,
+  pytestCheckHook,
+  setuptools,
+  testscenarios,
+  testtools,
 }:
 
 buildPythonPackage {
@@ -32,7 +33,10 @@ buildPythonPackage {
     setuptools
   ];
 
-  buildInputs = [ check cppunit ];
+  buildInputs = [
+    check
+    cppunit
+  ];
 
   propagatedBuildInputs = [
     extras
@@ -46,9 +50,7 @@ buildPythonPackage {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "python/subunit"
-  ];
+  pytestFlagsArray = [ "python/subunit" ];
 
   disabledTestPaths = [
     # these tests require testtools and don't work with pytest
diff --git a/pkgs/development/python-modules/subunit2sql/default.nix b/pkgs/development/python-modules/subunit2sql/default.nix
index 7955ed3d8d89a..402ee1a7bc3ec 100644
--- a/pkgs/development/python-modules/subunit2sql/default.nix
+++ b/pkgs/development/python-modules/subunit2sql/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mock
-, oslo-concurrency
-, oslo-db
-, pbr
-, python-dateutil
-, stestr
-, testresources
-, testscenarios
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  oslo-concurrency,
+  oslo-db,
+  pbr,
+  python-dateutil,
+  stestr,
+  testresources,
+  testscenarios,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/subzerod/default.nix b/pkgs/development/python-modules/subzerod/default.nix
index 3739e595e00c0..49d59c66833d3 100644
--- a/pkgs/development/python-modules/subzerod/default.nix
+++ b/pkgs/development/python-modules/subzerod/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-/7g8Upj9Hb4m83JXLI3X2lqa9faCt42LVxh+V9WpI68=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "subzerod"
-  ];
+  pythonImportsCheck = [ "subzerod" ];
 
   meta = with lib; {
     description = "Python module to help with the enumeration of subdomains";
diff --git a/pkgs/development/python-modules/succulent/default.nix b/pkgs/development/python-modules/succulent/default.nix
index 74d369acefc1b..d756f3c7ac7e9 100644
--- a/pkgs/development/python-modules/succulent/default.nix
+++ b/pkgs/development/python-modules/succulent/default.nix
@@ -1,53 +1,48 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flask
-, pandas
-, pyyaml
-, poetry-core
-, pytestCheckHook
-, pythonRelaxDepsHook
-, pythonOlder
-, toml-adapt
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flask,
+  lxml,
+  pandas,
+  pyyaml,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
   pname = "succulent";
-  version = "0.3.3";
-  format = "pyproject";
+  version = "0.3.4";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "firefly-cpp";
     repo = "succulent";
     rev = "refs/tags/${version}";
-    hash = "sha256-+S4ekvaQvbBxjUQkG+Bd9lYdZwHB3oq7Ay9kWquCcyE=";
+    hash = "sha256-lU4M/ObX2mhHgYsc72zLp87g1lJ6ikfTeEojEdJwjGs=";
   };
 
-  pythonRelaxDeps = [
-    "flask"
-    "pandas"
-  ];
+  pythonRelaxDeps = [ "flask" ];
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
     flask
+    lxml
     pandas
     pyyaml
+    xmltodict
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "succulent"
-  ];
+  pythonImportsCheck = [ "succulent" ];
 
   meta = with lib; {
     description = "Collect POST requests";
diff --git a/pkgs/development/python-modules/sudachidict/default.nix b/pkgs/development/python-modules/sudachidict/default.nix
index 65f5d4630d064..1035f42bff840 100644
--- a/pkgs/development/python-modules/sudachidict/default.nix
+++ b/pkgs/development/python-modules/sudachidict/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, sudachidict
-, setuptools
-, sudachipy
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  sudachidict,
+  setuptools,
+  sudachipy,
 }:
 
 buildPythonPackage rec {
@@ -30,13 +31,9 @@ buildPythonPackage rec {
       --replace "%%DICT_TYPE%%" ${sudachidict.dict-type}
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    sudachipy
-  ];
+  propagatedBuildInputs = [ sudachipy ];
 
   # we need to prepare some files before the build
   # https://github.com/WorksApplications/SudachiDict/blob/develop/package_python.sh
diff --git a/pkgs/development/python-modules/sudachipy/default.nix b/pkgs/development/python-modules/sudachipy/default.nix
index 3e3bd5b4adf65..20233c1f7d9a0 100644
--- a/pkgs/development/python-modules/sudachipy/default.nix
+++ b/pkgs/development/python-modules/sudachipy/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, cargo
-, libiconv
-, rustPlatform
-, rustc
-, sudachi-rs
-, setuptools-rust
-, pytestCheckHook
-, sudachidict-core
-, tokenizers
-, sudachipy
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cargo,
+  libiconv,
+  rustPlatform,
+  rustc,
+  sudachi-rs,
+  setuptools-rust,
+  pytestCheckHook,
+  sudachidict-core,
+  tokenizers,
+  sudachipy,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     setuptools-rust
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [
-    libiconv
-  ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
   preBuild = ''
     cd python
@@ -47,21 +46,17 @@ buildPythonPackage rec {
     tokenizers
   ];
 
-  pythonImportsCheck = [
-    "sudachipy"
-  ];
+  pythonImportsCheck = [ "sudachipy" ];
 
   passthru = {
     inherit (sudachi-rs) updateScript;
     tests = {
-      pytest = sudachipy.overridePythonAttrs (
-        _: {
-          doCheck = true;
-          # avoid catchConflicts of sudachipy
-          # we don't need to install this package since it is just a test
-          dontInstall = true;
-        }
-      );
+      pytest = sudachipy.overridePythonAttrs (_: {
+        doCheck = true;
+        # avoid catchConflicts of sudachipy
+        # we don't need to install this package since it is just a test
+        dontInstall = true;
+      });
     };
   };
 
diff --git a/pkgs/development/python-modules/suds-community/default.nix b/pkgs/development/python-modules/suds-community/default.nix
new file mode 100644
index 0000000000000..e3a9d8a129877
--- /dev/null
+++ b/pkgs/development/python-modules/suds-community/default.nix
@@ -0,0 +1,14 @@
+{
+  mkPythonMetaPackage,
+  suds,
+}:
+
+mkPythonMetaPackage {
+  pname = "suds-community";
+  inherit (suds) version;
+  dependencies = [ suds ];
+  optional-dependencies = suds.optional-dependencies or { };
+  meta = {
+    inherit (suds.meta) changelog description homepage;
+  };
+}
diff --git a/pkgs/development/python-modules/suds/default.nix b/pkgs/development/python-modules/suds/default.nix
new file mode 100644
index 0000000000000..35dc2eeaa5bc1
--- /dev/null
+++ b/pkgs/development/python-modules/suds/default.nix
@@ -0,0 +1,40 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+  six,
+}:
+
+buildPythonPackage rec {
+  pname = "suds";
+  version = "1.2.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "suds-community";
+    repo = "suds";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-YdL+zDelRspQ6VMqa45vK1DDS3HjFvKE1P02USVBrEo=";
+  };
+
+  build-system = [ setuptools ];
+
+  env.SUDS_PACKAGE = "suds";
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    six
+  ];
+
+  pythonImportsCheck = [ "suds" ];
+
+  meta = {
+    changelog = "https://github.com/suds-community/suds/blob/v${version}/CHANGELOG.md";
+    description = "Lightweight SOAP python client for consuming Web Services";
+    homepage = "https://github.com/suds-community/suds";
+    license = lib.licenses.lgpl3Plus;
+    maintainers = with lib.maintainers; [ wrmilling ];
+  };
+}
diff --git a/pkgs/development/python-modules/summarytools/default.nix b/pkgs/development/python-modules/summarytools/default.nix
index 4bbbae78c88b7..58457768fe0e7 100644
--- a/pkgs/development/python-modules/summarytools/default.nix
+++ b/pkgs/development/python-modules/summarytools/default.nix
@@ -1,31 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, ipython
-, matplotlib
-, numpy
-, pandas
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  ipython,
+  matplotlib,
+  numpy,
+  pandas,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "summarytools";
-  version = "0.2.3";
+  version = "0.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
-  # no version tags in GitHub repo
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-wsDf9IXCMQe0cVfQQuRVwMhxkhhUxbPu06yWZPLvgw4=";
+    hash = "sha256-m29ug+JZC4HgMIVopovA/dyR40Z1IcADOiDWKg9mzdc=";
   };
 
-  nativeBuildInputs = [ setuptools ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     ipython
     matplotlib
     numpy
@@ -33,11 +33,13 @@ buildPythonPackage rec {
   ];
 
   nativeCheckImports = [ pytestCheckHook ];
+
   pythonImportsCheck = [ "summarytools" ];
 
   meta = with lib; {
     description = "Python port of the R summarytools package for summarizing dataframes";
     homepage = "https://github.com/6chaoran/jupyter-summarytools";
+    changelog = "https://github.com/6chaoran/jupyter-summarytools/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ bcdarwin ];
   };
diff --git a/pkgs/development/python-modules/sumo/default.nix b/pkgs/development/python-modules/sumo/default.nix
index 1f60553de0bce..719bb0a882779 100644
--- a/pkgs/development/python-modules/sumo/default.nix
+++ b/pkgs/development/python-modules/sumo/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, cython
-, h5py
-, matplotlib
-, numpy
-, phonopy
-, pymatgen
-, scipy
-, seekpath
-, spglib
-, castepxbin
-, pytestCheckHook
-, colormath
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  cython,
+  h5py,
+  matplotlib,
+  numpy,
+  phonopy,
+  pymatgen,
+  scipy,
+  seekpath,
+  spglib,
+  castepxbin,
+  pytestCheckHook,
+  colormath,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     hash = "sha256-nQ5US7maFcOJCqFYeokGiBFp3jhiOPSfCBeclLdHdkk=";
   };
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
   propagatedBuildInputs = [
     castepxbin
@@ -47,13 +46,9 @@ buildPythonPackage rec {
     spglib
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "sumo"
-  ];
+  pythonImportsCheck = [ "sumo" ];
 
   meta = with lib; {
     description = "Toolkit for plotting and analysis of ab initio solid-state calculation data";
diff --git a/pkgs/development/python-modules/sumtypes/default.nix b/pkgs/development/python-modules/sumtypes/default.nix
index 1b6f1c38e6042..91ae86b01206c 100644
--- a/pkgs/development/python-modules/sumtypes/default.nix
+++ b/pkgs/development/python-modules/sumtypes/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, attrs
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,13 +21,9 @@ buildPythonPackage rec {
     hash = "sha256-qwQyFKVnGEqHUqFmUSnHVvedsp2peM6rJZcS90paLOo=";
   };
 
-  propagatedBuildInputs = [
-    attrs
-  ];
+  propagatedBuildInputs = [ attrs ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Algebraic data types for Python";
diff --git a/pkgs/development/python-modules/sunpy/default.nix b/pkgs/development/python-modules/sunpy/default.nix
index 17aa79c34020d..34cec394a1049 100644
--- a/pkgs/development/python-modules/sunpy/default.nix
+++ b/pkgs/development/python-modules/sunpy/default.nix
@@ -1,44 +1,45 @@
-{ lib
-, stdenv
-, asdf
-, astropy
-, astropy-extension-helpers
-, astropy-helpers
-, beautifulsoup4
-, buildPythonPackage
-, drms
-, fetchPypi
-, glymur
-, h5netcdf
-, hypothesis
-, lxml
-, matplotlib
-, numpy
-, pandas
-, parfive
-, pytest-astropy
-, pytestCheckHook
-, pytest-mock
-, python-dateutil
-, pythonOlder
-, scikit-image
-, scipy
-, setuptools-scm
-, sqlalchemy
-, tqdm
-, zeep
+{
+  lib,
+  stdenv,
+  asdf,
+  astropy,
+  astropy-extension-helpers,
+  astropy-helpers,
+  beautifulsoup4,
+  buildPythonPackage,
+  drms,
+  fetchPypi,
+  glymur,
+  h5netcdf,
+  hypothesis,
+  lxml,
+  matplotlib,
+  numpy,
+  pandas,
+  parfive,
+  pytest-astropy,
+  pytestCheckHook,
+  pytest-mock,
+  python-dateutil,
+  pythonOlder,
+  scikit-image,
+  scipy,
+  setuptools-scm,
+  sqlalchemy,
+  tqdm,
+  zeep,
 }:
 
 buildPythonPackage rec {
   pname = "sunpy";
-  version = "5.1.1";
+  version = "5.1.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-k2fsmvKjl/zVljiyAHII1O6vntJOPo3CWWwmsYlsLh8=";
+    hash = "sha256-y+tw1I+C6wDFlJvObWrOhisrryQCeXulkwFyRCuAgTA=";
   };
 
   nativeBuildInputs = [
@@ -58,9 +59,7 @@ buildPythonPackage rec {
       asdf
       # asdf-astropy
     ];
-    database = [
-      sqlalchemy
-    ];
+    database = [ sqlalchemy ];
     image = [
       scikit-image
       scipy
@@ -85,12 +84,14 @@ buildPythonPackage rec {
     ];
   };
 
-  nativeCheckInputs = [
-    hypothesis
-    pytest-astropy
-    pytest-mock
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.asdf
+  nativeCheckInputs =
+    [
+      hypothesis
+      pytest-astropy
+      pytest-mock
+      pytestCheckHook
+    ]
+    ++ passthru.optional-dependencies.asdf
     ++ passthru.optional-dependencies.database
     ++ passthru.optional-dependencies.image
     ++ passthru.optional-dependencies.net
@@ -102,7 +103,7 @@ buildPythonPackage rec {
   '';
 
   # darwin has write permission issues
-  doCheck = stdenv.isLinux;
+  doCheck = stdenv.hostPlatform.isLinux;
 
   preCheck = ''
     export HOME=$(mktemp -d)
@@ -158,7 +159,7 @@ buildPythonPackage rec {
     description = "Python for Solar Physics";
     homepage = "https://sunpy.org";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     broken = true;
   };
 }
diff --git a/pkgs/development/python-modules/sunwatcher/default.nix b/pkgs/development/python-modules/sunwatcher/default.nix
index ee3a2e200b17c..0fcac2bfb205f 100644
--- a/pkgs/development/python-modules/sunwatcher/default.nix
+++ b/pkgs/development/python-modules/sunwatcher/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     sha256 = "0swmvmmbfb914k473yv3fc4zizy2abq2qhd7h6lixli11l5wfjxv";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/sunweg/default.nix b/pkgs/development/python-modules/sunweg/default.nix
index c662a01868ed4..535b6d253727a 100644
--- a/pkgs/development/python-modules/sunweg/default.nix
+++ b/pkgs/development/python-modules/sunweg/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  python-dateutil,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "sunweg";
-  version = "2.1.1";
+  version = "3.0.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,23 +19,20 @@ buildPythonPackage rec {
     owner = "rokam";
     repo = "sunweg";
     rev = "refs/tags/${version}";
-    hash = "sha256-fgNtxCBIuNulCfuDaEsM7kL1WpwNE9O+JQ1DMZrz5jA=";
+    hash = "sha256-/pniECgavRiQdKzNtPINNhOijUW/uhPEOQJtjfr46ps=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
+    python-dateutil
     requests
   ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sunweg"
-  ];
+  pythonImportsCheck = [ "sunweg" ];
 
   meta = with lib; {
     description = "Module to access the WEG solar energy platform";
diff --git a/pkgs/development/python-modules/superqt/default.nix b/pkgs/development/python-modules/superqt/default.nix
index e7c3aaa04589a..c2fbba8406847 100644
--- a/pkgs/development/python-modules/superqt/default.nix
+++ b/pkgs/development/python-modules/superqt/default.nix
@@ -1,44 +1,66 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools-scm
-, pyqt5
-, qtpy
-, typing-extensions
-, pytestCheckHook
-, pygments
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatch-vcs,
+  hatchling,
+  pint,
+  pygments,
+  pyqt5,
+  pyqt6,
+  pyside2,
+  pyside6,
+  pytestCheckHook,
+  pythonOlder,
+  qtpy,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "superqt";
-  version = "0.3.8";
-  format = "pyproject";
+  version = "0.6.7";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
-    owner = "napari";
-    repo = pname;
+    owner = "pyapp-kit";
+    repo = "superqt";
     rev = "refs/tags/v${version}";
-    hash = "sha256-zEMG2zscGDlRxtLn/lUTEjZBPabcwzMcj/kMcy3yOs8=";
+    hash = "sha256-/VR9Lc1x+7J/3zyo/eBFBvGkPXzpTfPpNAvNhSzWio8=";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
+  build-system = [
+    hatch-vcs
+    hatchling
+  ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    pygments
     pyqt5
     qtpy
     typing-extensions
-    pygments
   ];
 
+  passthru.optional-dependencies = {
+    quantity = [ pint ];
+    pyside2 = [ pyside2 ];
+    pyside6 = [ pyside6 ];
+    pyqt6 = [ pyqt6 ];
+  };
+
   nativeCheckInputs = [ pytestCheckHook ];
 
-  doCheck = false; # Segfaults...
+  # Segmentation fault
+  doCheck = false;
 
-  pythonImportsCheck = [ "superqt" ];
+  # Segmentation fault
+  # pythonImportsCheck = [ "superqt" ];
 
   meta = with lib; {
     description = "Missing widgets and components for Qt-python (napari/superqt)";
     homepage = "https://github.com/napari/superqt";
+    changelog = "https://github.com/pyapp-kit/superqt/releases/tag/v${version}";
     license = licenses.bsd3;
     maintainers = with maintainers; [ SomeoneSerge ];
   };
diff --git a/pkgs/development/python-modules/supervise-api/default.nix b/pkgs/development/python-modules/supervise-api/default.nix
index 3bd223127a7d9..841663678e562 100644
--- a/pkgs/development/python-modules/supervise-api/default.nix
+++ b/pkgs/development/python-modules/supervise-api/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, substituteAll
-, supervise
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  supervise,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,20 +23,14 @@ buildPythonPackage rec {
       --replace 'which("supervise")' '"${supervise}/bin/supervise"'
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "supervise_api"
-  ];
+  pythonImportsCheck = [ "supervise_api" ];
 
   meta = {
-    description = "An API for running processes safely and securely";
+    description = "API for running processes safely and securely";
     homepage = "https://github.com/catern/supervise";
     license = lib.licenses.mit;
     platforms = lib.platforms.linux;
diff --git a/pkgs/development/python-modules/supervisor/default.nix b/pkgs/development/python-modules/supervisor/default.nix
index b99b5cfd05b3b..8a6bb95f3c3cd 100644
--- a/pkgs/development/python-modules/supervisor/default.nix
+++ b/pkgs/development/python-modules/supervisor/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, mock
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,25 +21,21 @@ buildPythonPackage rec {
     hash = "sha256-NHYbrhojxYGSKBpRFfsH+/IsmwEzwIFmvv/HD+0+vBI=";
   };
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  propagatedBuildInputs = [ setuptools ];
 
   # wants to write to /tmp/foo which is likely already owned by another
   # nixbld user on hydra
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   nativeCheckInputs = [
     mock
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "supervisor"
-  ];
+  pythonImportsCheck = [ "supervisor" ];
 
   meta = with lib; {
-    description = "A system for controlling process state under UNIX";
+    description = "System for controlling process state under UNIX";
     homepage = "http://supervisord.org/";
     changelog = "https://github.com/Supervisor/supervisor/blob/${version}/CHANGES.rst";
     license = licenses.free; # http://www.repoze.org/LICENSE.txt
diff --git a/pkgs/development/python-modules/sure/default.nix b/pkgs/development/python-modules/sure/default.nix
index 9d16cd48af4ca..f4ca02501d00e 100644
--- a/pkgs/development/python-modules/sure/default.nix
+++ b/pkgs/development/python-modules/sure/default.nix
@@ -1,51 +1,56 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, mock
-, six
-, isPyPy
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
+  mock,
+  six,
+  isPyPy,
 }:
 
 buildPythonPackage rec {
   pname = "sure";
   version = "2.0.1";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = isPyPy;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-yPxvq8Dn9phO6ruUJUDkVkblvvC7mf5Z4C2mNOTUuco=";
+    hash = "sha256-yPxvq8Dn9phO6ruUJUDkVkblvvC7mf5Z4C2mNOTUuco=";
   };
 
   postPatch = ''
     substituteInPlace setup.cfg \
-      --replace "rednose = 1" ""
+      --replace "rednose = 1" "" \
+      --replace-fail "--cov=sure" ""
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     mock
     six
   ];
 
-  doCheck = pythonOlder "3.12"; # nose requires imp module
-
   nativeCheckInputs = [
-    nose
+    pytestCheckHook
+    mock
   ];
 
-  pythonImportsCheck = [
-    "sure"
+  disabledTestPaths = [
+    "tests/test_old_api.py" # require nose
   ];
 
-  meta = with lib; {
+  pythonImportsCheck = [ "sure" ];
+
+  meta = {
     description = "Utility belt for automated testing";
     mainProgram = "sure";
     homepage = "https://sure.readthedocs.io/";
     changelog = "https://github.com/gabrielfalcao/sure/blob/v${version}/CHANGELOG.md";
-    license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ sigmanificient ];
   };
 }
diff --git a/pkgs/development/python-modules/surepy/default.nix b/pkgs/development/python-modules/surepy/default.nix
index d590681fd7fc4..14ffe80ccae82 100644
--- a/pkgs/development/python-modules/surepy/default.nix
+++ b/pkgs/development/python-modules/surepy/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, aiodns
-, aiohttp
-, async-timeout
-, attrs
-, brotlipy
-, buildPythonPackage
-, faust-cchardet
-, click
-, colorama
-, fetchFromGitHub
-, halo
-, poetry-core
-, pythonOlder
-, requests
-, rich
+{
+  lib,
+  aiodns,
+  aiohttp,
+  async-timeout,
+  attrs,
+  brotlipy,
+  buildPythonPackage,
+  faust-cchardet,
+  click,
+  colorama,
+  fetchFromGitHub,
+  halo,
+  poetry-core,
+  pythonOlder,
+  requests,
+  rich,
 }:
 
 buildPythonPackage rec {
@@ -37,9 +38,7 @@ buildPythonPackage rec {
       --replace 'rich = "^10.1.0"' 'rich = ">=10.1.0"'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiodns
@@ -58,9 +57,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "surepy"
-  ];
+  pythonImportsCheck = [ "surepy" ];
 
   meta = with lib; {
     description = "Python library to interact with the Sure Petcare API";
diff --git a/pkgs/development/python-modules/surt/default.nix b/pkgs/development/python-modules/surt/default.nix
index d11e8e2fe53f9..74e5723eb9062 100644
--- a/pkgs/development/python-modules/surt/default.nix
+++ b/pkgs/development/python-modules/surt/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, six
-, tldextract
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  six,
+  tldextract,
 }:
 
 buildPythonPackage rec {
@@ -27,13 +28,9 @@ buildPythonPackage rec {
     tldextract
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "surt"
-  ];
+  pythonImportsCheck = [ "surt" ];
 
   disabledTests = [
     # Tests want to download Public Suffix List
diff --git a/pkgs/development/python-modules/survey/default.nix b/pkgs/development/python-modules/survey/default.nix
index 9564195c94779..f0ff72b8b7857 100644
--- a/pkgs/development/python-modules/survey/default.nix
+++ b/pkgs/development/python-modules/survey/default.nix
@@ -1,23 +1,26 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "survey";
-  version = "5.3.0";
-  format = "setuptools";
+  version = "5.4.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-jMTtsrEdt3NPy8NfeNPX4YNwjH2gaQfO89Iag/MBS+A=";
+    hash = "sha256-JT0tcNBReNdfbZrwSgv0OFcBz9Hp1N5JF4nP9oXfTJs=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
@@ -25,7 +28,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "survey" ];
 
   meta = with lib; {
-    description = "A simple library for creating beautiful interactive prompts";
+    description = "Simple library for creating beautiful interactive prompts";
     homepage = "https://github.com/Exahilosys/survey";
     changelog = "https://github.com/Exahilosys/survey/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/sv-ttk/default.nix b/pkgs/development/python-modules/sv-ttk/default.nix
index 834178a5c2362..542ef1d2ed272 100644
--- a/pkgs/development/python-modules/sv-ttk/default.nix
+++ b/pkgs/development/python-modules/sv-ttk/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, tkinter
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  tkinter,
 }:
 
 buildPythonPackage rec {
@@ -21,16 +22,12 @@ buildPythonPackage rec {
   # No tests available
   doCheck = false;
 
-  propagatedBuildInputs = [
-    tkinter
-  ];
+  propagatedBuildInputs = [ tkinter ];
 
-  pythonImportsCheck = [
-    "sv_ttk"
-  ];
+  pythonImportsCheck = [ "sv_ttk" ];
 
   meta = with lib; {
-    description = "A gorgeous theme for Tkinter/ttk, based on the Sun Valley visual style";
+    description = "Gorgeous theme for Tkinter/ttk, based on the Sun Valley visual style";
     homepage = "https://github.com/rdbende/Sun-Valley-ttk-theme";
     changelog = "https://github.com/rdbende/Sun-Valley-ttk-theme/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/svg-path/default.nix b/pkgs/development/python-modules/svg-path/default.nix
index 2ec9f5b780251..9f9cca8b929de 100644
--- a/pkgs/development/python-modules/svg-path/default.nix
+++ b/pkgs/development/python-modules/svg-path/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pillow
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pillow,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,14 +29,12 @@ buildPythonPackage rec {
     "test_image"
   ];
 
-  pythonImportsCheck = [
-    "svg.path"
-  ];
+  pythonImportsCheck = [ "svg.path" ];
 
   meta = with lib; {
     description = "SVG path objects and parser";
     homepage = "https://github.com/regebro/svg.path";
     license = licenses.mit;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/svg-py/default.nix b/pkgs/development/python-modules/svg-py/default.nix
index 236e5fd3105da..30396791e8761 100644
--- a/pkgs/development/python-modules/svg-py/default.nix
+++ b/pkgs/development/python-modules/svg-py/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pytestCheckHook
-, pythonOlder
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
   pname = "svg-py";
-  version = "1.4.3";
+  version = "1.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,21 +19,17 @@ buildPythonPackage rec {
     owner = "orsinium-labs";
     repo = "svg.py";
     rev = "refs/tags/${version}";
-    hash = "sha256-rnxznJM3ihuEJrD3ba6uMdGMozIrLw/QyGzA3JPygH4=";
+    hash = "sha256-Lxzk3IVCD4PG36Pozz2crccwxCAAAM2QfS4rgwbjs6g=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   nativeCheckInputs = [
     pytestCheckHook
     pyyaml
   ];
 
-  pythonImportsCheck = [
-    "svg"
-  ];
+  pythonImportsCheck = [ "svg" ];
 
   disabledTestPaths = [
     # Tests need additional files
diff --git a/pkgs/development/python-modules/svg2tikz/default.nix b/pkgs/development/python-modules/svg2tikz/default.nix
index 7e24071c9c7c2..e295f2bdc6eab 100644
--- a/pkgs/development/python-modules/svg2tikz/default.nix
+++ b/pkgs/development/python-modules/svg2tikz/default.nix
@@ -1,41 +1,45 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, inkex
-, lxml
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  inkex,
+  lxml,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "svg2tikz";
-  version = "3.0.1";
+  version = "3.2.0";
 
   disabled = pythonOlder "3.7";
 
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "xyz2tex";
     repo = "svg2tikz";
     rev = "refs/tags/v${version}";
-    hash = "sha256-hvGvJFxhu7llj+tFfZvz12dZ8QYjY7zcLzB5S44l+IM=";
+    hash = "sha256-5SOUvrK83ff1x4MTVoJy68OaDmZUfrEwraEWmPMJKTA=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     inkex
     lxml
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
+  pythonRelaxDeps = [
+    "lxml"
   ];
 
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
   pythonImportsCheck = [ "svg2tikz" ];
 
   meta = with lib; {
@@ -43,6 +47,9 @@ buildPythonPackage rec {
     homepage = "https://github.com/xyz2tex/svg2tikz";
     description = "Set of tools for converting SVG graphics to TikZ/PGF code";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ dotlambda gal_bolle ];
+    maintainers = with maintainers; [
+      dotlambda
+      gal_bolle
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/svgelements/default.nix b/pkgs/development/python-modules/svgelements/default.nix
index 22a7e2c5b1adb..7e4709ff5a08f 100644
--- a/pkgs/development/python-modules/svgelements/default.nix
+++ b/pkgs/development/python-modules/svgelements/default.nix
@@ -1,15 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, anyio
-, numpy
-, pillow
-, pytest-forked
-, pytest-xdist
-, pytestCheckHook
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  setuptools,
+  wheel,
+  anyio,
+  numpy,
+  pillow,
+  pytest-forked,
+  pytest-xdist,
+  pytestCheckHook,
+  scipy,
 }:
 
 buildPythonPackage rec {
@@ -24,14 +26,22 @@ buildPythonPackage rec {
     hash = "sha256-nx2sGXeeh8S17TfRDFifQbdSxc4YGsDNnrPSSbxv7S4=";
   };
 
-  nativeBuildInputs = [
+  patches = [
+    (fetchpatch {
+      name = "fix-assert-tests";
+      url = "https://github.com/meerk40t/svgelements/commit/23da98941a94cf1afed39c10750222ccfee73c9f.patch";
+      hash = "sha256-/53w4eWlaSNEQxuoAxPrN2HciZ3Az2A2SKcIAlNgKAs=";
+    })
+  ];
+
+  build-system = [
     setuptools
     wheel
   ];
 
   pythonImportsCheck = [ "svgelements" ];
 
-  nativeCheckInputs =  [
+  nativeCheckInputs = [
     anyio
     numpy
     pillow
@@ -41,10 +51,10 @@ buildPythonPackage rec {
     scipy
   ];
 
-  meta = with lib; {
+  meta = {
     description = "SVG Parsing for Elements, Paths, and other SVG Objects";
     homepage = "https://github.com/meerk40t/svgelements";
-    license = licenses.mit;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/svglib/default.nix b/pkgs/development/python-modules/svglib/default.nix
index 61ac8a625656f..ab8978e144c96 100644
--- a/pkgs/development/python-modules/svglib/default.nix
+++ b/pkgs/development/python-modules/svglib/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, cssselect2
-, lxml
-, pillow
-, pytestCheckHook
-, reportlab
-, tinycss2
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  cssselect2,
+  lxml,
+  pillow,
+  pytestCheckHook,
+  reportlab,
+  tinycss2,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     tinycss2
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Ignore tests that require network access (TestWikipediaFlags and TestW3CSVG), and tests that
@@ -42,12 +41,10 @@ buildPythonPackage rec {
     "TestOtherFiles"
   ];
 
-  pythonImportsCheck = [
-    "svglib.svglib"
-  ];
+  pythonImportsCheck = [ "svglib.svglib" ];
 
   meta = with lib; {
-    description = "A pure-Python library for reading and converting SVG";
+    description = "Pure-Python library for reading and converting SVG";
     mainProgram = "svg2pdf";
     homepage = "https://github.com/deeplook/svglib";
     changelog = "https://github.com/deeplook/svglib/blob/v${version}/CHANGELOG.rst";
diff --git a/pkgs/development/python-modules/svgutils/default.nix b/pkgs/development/python-modules/svgutils/default.nix
index ea2c7c547e437..40e50d9b9a0f7 100644
--- a/pkgs/development/python-modules/svgutils/default.nix
+++ b/pkgs/development/python-modules/svgutils/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, lxml
-, matplotlib
-, pytestCheckHook
-, nose
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  setuptools,
+  lxml,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,14 +20,27 @@ buildPythonPackage rec {
     hash = "sha256-ITvZx+3HMbTyaRmCb7tR0LKqCxGjqDdV9/2taziUD0c=";
   };
 
-  nativeBuildInputs = [ setuptools ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    lxml
-    matplotlib
+  dependencies = [ lxml ];
+
+  patches = [
+    # Remove nose dependency, see: https://github.com/btel/svg_utils/pull/131
+
+    # this first commit is required, as isort moved nose imports
+    (fetchpatch2 {
+      url = "https://github.com/btel/svg_utils/commit/48b078a729aeb6b1160142ab65157474c95a61b6.patch?full_index=1";
+      hash = "sha256-9toOFfNkgGF3TvM340vYOTkuSEHBeiyBRSGqqobfiqI=";
+    })
+
+    # migrate to pytest
+    (fetchpatch2 {
+      url = "https://github.com/btel/svg_utils/commit/931a80220be7c0efa2fc6e1d47858d69a08df85e.patch?full_index=1";
+      hash = "sha256-SMv0i8p3s57TDn6NM17RrHF9kVgsy2YJJ0KEBQKn2J0=";
+    })
   ];
 
-  nativeCheckInputs = [ pytestCheckHook nose ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "svgutils" ];
 
diff --git a/pkgs/development/python-modules/svgwrite/default.nix b/pkgs/development/python-modules/svgwrite/default.nix
index 7ac6fd9f13cfc..24bb2622ecc19 100644
--- a/pkgs/development/python-modules/svgwrite/default.nix
+++ b/pkgs/development/python-modules/svgwrite/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,8 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A Python library to create SVG drawings";
+    description = "Python library to create SVG drawings";
     homepage = "https://github.com/mozman/svgwrite";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/swagger-spec-validator/default.nix b/pkgs/development/python-modules/swagger-spec-validator/default.nix
index 7b9ed410106be..c6f41fd03b1cb 100644
--- a/pkgs/development/python-modules/swagger-spec-validator/default.nix
+++ b/pkgs/development/python-modules/swagger-spec-validator/default.nix
@@ -1,4 +1,13 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pyyaml, jsonschema, six, pytestCheckHook, mock }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyyaml,
+  jsonschema,
+  six,
+  pytestCheckHook,
+  mock,
+}:
 
 buildPythonPackage rec {
   pname = "swagger-spec-validator";
diff --git a/pkgs/development/python-modules/swagger-ui-bundle/default.nix b/pkgs/development/python-modules/swagger-ui-bundle/default.nix
index 13ebaed72c6d4..b71ae59cca9ba 100644
--- a/pkgs/development/python-modules/swagger-ui-bundle/default.nix
+++ b/pkgs/development/python-modules/swagger-ui-bundle/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 
-# build-system
-, poetry-core
+  # build-system
+  poetry-core,
 
-# dependencies
-, importlib-resources
-, jinja2
+  # dependencies
+  importlib-resources,
+  jinja2,
 
- }:
+}:
 
 buildPythonPackage rec {
   pname = "swagger-ui-bundle";
@@ -23,15 +24,9 @@ buildPythonPackage rec {
     hash = "sha256-IGc8NDHIcz1dFhXs952azzDP91ICrK8hp9nH9IlxRSk=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    jinja2
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    importlib-resources
-  ];
+  propagatedBuildInputs = [ jinja2 ] ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ];
 
   # package contains no tests
   doCheck = false;
@@ -40,6 +35,5 @@ buildPythonPackage rec {
     description = "bundled swagger-ui pip package";
     homepage = "https://github.com/dtkav/swagger_ui_bundle";
     license = licenses.asl20;
-    maintainers = with maintainers; [ elohmeier ];
   };
 }
diff --git a/pkgs/development/python-modules/swift/default.nix b/pkgs/development/python-modules/swift/default.nix
index ec4f1b7a39632..26806dea71a87 100644
--- a/pkgs/development/python-modules/swift/default.nix
+++ b/pkgs/development/python-modules/swift/default.nix
@@ -1,35 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, boto3
-, cryptography
-, eventlet
-, greenlet
-, iana-etc
-, installShellFiles
-, libredirect
-, lxml
-, mock
-, netifaces
-, pastedeploy
-, pbr
-, pyeclib
-, requests
-, setuptools
-, six
-, stestr
-, swiftclient
-, xattr
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  boto3,
+  cryptography,
+  eventlet,
+  greenlet,
+  iana-etc,
+  installShellFiles,
+  libredirect,
+  lxml,
+  mock,
+  netifaces,
+  pastedeploy,
+  pbr,
+  pyeclib,
+  requests,
+  setuptools,
+  six,
+  stestr,
+  swiftclient,
+  xattr,
 }:
 
 buildPythonPackage rec {
   pname = "swift";
-  version = "2.33.0";
-  format = "setuptools";
+  version = "2.34.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-4TlJcquK8MC9zQfLKmb88B5xHje1kbPD2jSLiR+N8hs=";
+    hash = "sha256-ZvdWWvPUdZIEadxV0nhqgTXhgJJu+hD1LnYCAP+9gpM=";
   };
 
   postPatch = ''
@@ -37,9 +38,11 @@ buildPythonPackage rec {
     rm test/functional/s3api/{__init__.py,s3_test_client.py}
   '';
 
-  nativeBuildInputs = [
-    installShellFiles
+  nativeBuildInputs = [ installShellFiles ];
+
+  build-system = [
     pbr
+    setuptools
   ];
 
   propagatedBuildInputs = [
@@ -56,17 +59,17 @@ buildPythonPackage rec {
     xattr
   ];
 
-  postInstall = ''
-    installManPage doc/manpages/*
-  '';
-
-  nativeCheckInputs = [
+  dependencies = [
     boto3
     mock
     stestr
     swiftclient
   ];
 
+  postInstall = ''
+    installManPage doc/manpages/*
+  '';
+
   # a lot of tests currently fail while establishing a connection
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/swifter/default.nix b/pkgs/development/python-modules/swifter/default.nix
new file mode 100644
index 0000000000000..53c5ea5c508ac
--- /dev/null
+++ b/pkgs/development/python-modules/swifter/default.nix
@@ -0,0 +1,52 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  dask,
+  pandas,
+  psutil,
+  tqdm,
+  ipywidgets,
+  ray,
+}:
+
+buildPythonPackage rec {
+  pname = "swifter";
+  version = "1.4.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "jmcarpenter2";
+    repo = "swifter";
+    rev = "refs/tags/${version}";
+    hash = "sha256-lgdf8E9GGjeLY4ERzxqtjQuYVtdtIZt2HFLSiNBbtX4=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    pandas
+    psutil
+    dask
+    tqdm
+  ] ++ dask.optional-dependencies.dataframe;
+
+  optional-dependencies = {
+    groupby = [ ray ];
+    notebook = [ ipywidgets ];
+  };
+
+  pythonImportsCheck = [ "swifter" ];
+
+  # tests may hang due to ignoring cpu core limit
+  # https://github.com/jmcarpenter2/swifter/issues/221
+  doCheck = false;
+
+  meta = {
+    description = "Package which efficiently applies any function to a pandas dataframe or series in the fastest available manner";
+    homepage = "https://github.com/jmcarpenter2/swifter";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ natsukium ];
+  };
+}
diff --git a/pkgs/development/python-modules/swisshydrodata/default.nix b/pkgs/development/python-modules/swisshydrodata/default.nix
index 1ab94a63df381..24048a199746b 100644
--- a/pkgs/development/python-modules/swisshydrodata/default.nix
+++ b/pkgs/development/python-modules/swisshydrodata/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, requests
-, requests-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  requests,
+  requests-mock,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     sha256 = "1rdgfc6zg5j3fvrpbqs9vc3n5m66r5yljawyl7nmrqd5lwq1lqak";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/switchbot-api/default.nix b/pkgs/development/python-modules/switchbot-api/default.nix
index 4f6f5ff177842..ee048637b4350 100644
--- a/pkgs/development/python-modules/switchbot-api/default.nix
+++ b/pkgs/development/python-modules/switchbot-api/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "switchbot-api";
-  version = "2.1.0";
+  version = "2.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -17,26 +18,20 @@ buildPythonPackage rec {
     owner = "SeraphicCorp";
     repo = "py-switchbot-api";
     rev = "refs/tags/v${version}";
-    hash = "sha256-dJLjWwBzrT3GnsRpTIXu3SkVDUlnAbRwBlfSQaHWPzc=";
+    hash = "sha256-jpm01wDVLgGr5SMaevxiYGfv8tVa1ibRtcHkEK3yb58=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  dependencies = [
-    aiohttp
-  ];
+  dependencies = [ aiohttp ];
 
   # Module has no tests
-  doCheck= false;
+  doCheck = false;
 
-  pythonImportsCheck = [
-    "switchbot_api"
-  ];
+  pythonImportsCheck = [ "switchbot_api" ];
 
   meta = with lib; {
-    description = "An asynchronous library to use Switchbot API";
+    description = "Asynchronous library to use Switchbot API";
     homepage = "https://github.com/SeraphicCorp/py-switchbot-api";
     changelog = "https://github.com/SeraphicCorp/py-switchbot-api/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/swspotify/default.nix b/pkgs/development/python-modules/swspotify/default.nix
index e2627660006ba..21bd1348525cb 100644
--- a/pkgs/development/python-modules/swspotify/default.nix
+++ b/pkgs/development/python-modules/swspotify/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, dbus-python
-, fetchFromGitHub
-, flask
-, flask-cors
-, poetry-core
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  dbus-python,
+  fetchFromGitHub,
+  flask,
+  flask-cors,
+  poetry-core,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-xGLvc154xnje45Akf7H1qqQRUc03gGVt8AhGlkcP3kY=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     dbus-python
@@ -38,9 +36,7 @@ buildPythonPackage rec {
   # Tests want to use Dbus
   doCheck = false;
 
-  pythonImportsCheck = [
-    "SwSpotify"
-  ];
+  pythonImportsCheck = [ "SwSpotify" ];
 
   meta = with lib; {
     description = "Library to get the currently playing song and artist from Spotify";
diff --git a/pkgs/development/python-modules/sybil/default.nix b/pkgs/development/python-modules/sybil/default.nix
index 045c5f97501cb..57e3c394843d8 100644
--- a/pkgs/development/python-modules/sybil/default.nix
+++ b/pkgs/development/python-modules/sybil/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "sybil";
   version = "6.0.3";
-  pyproject =  true;
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -19,22 +20,18 @@ buildPythonPackage rec {
     hash = "sha256-SqAP+hj+pivsuGxx9/TvmfVrfrLSWQRYIjKh0ui0AVc=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   # Circular dependency with testfixtures
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sybil"
-  ];
+  pythonImportsCheck = [ "sybil" ];
 
   meta = with lib; {
     description = "Automated testing for the examples in your documentation";
     homepage = "https://github.com/cjw296/sybil";
     changelog = "https://github.com/simplistix/sybil/blob/${version}/CHANGELOG.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/symengine/default.nix b/pkgs/development/python-modules/symengine/default.nix
index 7d02d2e0c6fd9..d59abb27c8d66 100644
--- a/pkgs/development/python-modules/symengine/default.nix
+++ b/pkgs/development/python-modules/symengine/default.nix
@@ -1,18 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cython
-, cmake
-, symengine
-, pytest
-, sympy
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  cython,
+  cmake,
+  symengine,
+  pytest,
+  sympy,
+  python,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "symengine";
   version = "0.11.0";
-  format = "setuptools";
+
+  build-system = [ setuptools ];
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "symengine";
@@ -21,26 +26,39 @@ buildPythonPackage rec {
     hash = "sha256-uUMcNnynE2itIwc7IGFwxveqLRL8f4dAAcaD6FUWJaY=";
   };
 
+  env = {
+    SymEngine_DIR = "${symengine}";
+  };
+
+  patches = [
+    # Distutils has been removed in python 3.12
+    # See https://github.com/symengine/symengine.py/pull/478
+    (fetchpatch {
+      name = "no-distutils.patch";
+      url = "https://github.com/symengine/symengine.py/pull/478/commits/e72006d5f7425cd50c54b22766e0ed4bcd2dca85.patch";
+      hash = "sha256-kGJRGkBgxOfI1wf88JwnSztkOYd1wvg62H7wA6CcYEQ=";
+    })
+  ];
+
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "\"cmake\"" "\"${cmake}/bin/cmake\"" \
-      --replace "'cython>=0.29.24'" "'cython'"
+      --replace-fail "\"cmake\"" "\"${lib.getExe' cmake "cmake"}\"" \
+      --replace-fail "'cython>=0.29.24'" "'cython'"
+
+    export PATH=${cython}/bin:$PATH
   '';
 
   nativeBuildUnputs = [ cmake ];
 
   buildInputs = [ cython ];
 
-  nativeCheckInputs = [ pytest sympy ];
-
-  setupPyBuildFlags = [
-    "--symengine-dir=${symengine}/"
-    "--define=\"CYTHON_BIN=${cython}/bin/cython\""
+  nativeCheckInputs = [
+    pytest
+    sympy
   ];
 
   checkPhase = ''
-    mkdir empty
-    cd empty
+    mkdir empty && cd empty
     ${python.interpreter} ../bin/test_python.py
   '';
 
diff --git a/pkgs/development/python-modules/sympy/default.nix b/pkgs/development/python-modules/sympy/default.nix
index d2a10492153e0..c9978724763bc 100644
--- a/pkgs/development/python-modules/sympy/default.nix
+++ b/pkgs/development/python-modules/sympy/default.nix
@@ -1,18 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, glibcLocales
-, mpmath
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  glibcLocales,
+  mpmath,
+
+  # Reverse dependency
+  sage,
 }:
 
 buildPythonPackage rec {
   pname = "sympy";
-  version = "1.12";
+  version = "1.12.1";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-6/WVyNrD4P3EFSxRh4tJg5bsfzDnqRTWBx5nTUlCD7g=";
+    hash = "sha256-KHewP5mM2MCPB80N5bdnEZzT70DQn0HDDXIvZoaw+4g=";
   };
 
   nativeCheckInputs = [ glibcLocales ];
@@ -27,11 +31,15 @@ buildPythonPackage rec {
     export LANG="en_US.UTF-8"
   '';
 
+  passthru.tests = {
+    inherit sage;
+  };
+
   meta = with lib; {
-    description = "A Python library for symbolic mathematics";
+    description = "Python library for symbolic mathematics";
     mainProgram = "isympy";
-    homepage    = "https://www.sympy.org/";
-    license     = licenses.bsd3;
+    homepage = "https://www.sympy.org/";
+    license = licenses.bsd3;
     maintainers = with maintainers; [ lovek323 ] ++ teams.sage.members;
   };
 }
diff --git a/pkgs/development/python-modules/symspellpy/default.nix b/pkgs/development/python-modules/symspellpy/default.nix
index ad3b732209ef7..ea823e6f204bc 100644
--- a/pkgs/development/python-modules/symspellpy/default.nix
+++ b/pkgs/development/python-modules/symspellpy/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
 
-, pythonOlder
+  pythonOlder,
 
-, pytestCheckHook
+  pytestCheckHook,
 
-, setuptools
+  setuptools,
 
   # for testing
-, numpy
-, importlib-resources
+  numpy,
+  importlib-resources,
 
   # requirements
-, editdistpy
+  editdistpy,
 }:
 
 buildPythonPackage rec {
@@ -46,13 +47,9 @@ buildPythonPackage rec {
     hash = "sha256-D8xdMCy4fSff3nuS2sD2QHWk0869AlFDE+lFRvayYDQ=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    editdistpy
-  ];
+  dependencies = [ editdistpy ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -65,12 +62,11 @@ buildPythonPackage rec {
     "symspellpy.symspellpy"
   ];
 
-  meta = with lib;
-    {
-      description = "Python port of SymSpell v6.7.1, which provides much higher speed and lower memory consumption";
-      homepage = "https://github.com/mammothb/symspellpy";
-      changelog = "https://github.com/mammothb/symspellpy/releases/tag/v${version}";
-      license = licenses.mit;
-      maintainers = with maintainers; [ vizid ];
-    };
+  meta = with lib; {
+    description = "Python port of SymSpell v6.7.1, which provides much higher speed and lower memory consumption";
+    homepage = "https://github.com/mammothb/symspellpy";
+    changelog = "https://github.com/mammothb/symspellpy/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ vizid ];
+  };
 }
diff --git a/pkgs/development/python-modules/syncedlyrics/default.nix b/pkgs/development/python-modules/syncedlyrics/default.nix
index a53740b37253d..40a69fc50322a 100644
--- a/pkgs/development/python-modules/syncedlyrics/default.nix
+++ b/pkgs/development/python-modules/syncedlyrics/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
-, pythonRelaxDepsHook
-, rapidfuzz
-, requests
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
+  rapidfuzz,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "syncedlyrics";
-  version = "0.9.0";
+  version = "1.0.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,17 +20,14 @@ buildPythonPackage rec {
     owner = "rtcq";
     repo = "syncedlyrics";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Q0Hu403Hxr4iDuZfGQjgTSuNMVgsqd9zLRl9Vc1YzyQ=";
+    hash = "sha256-rKYze8Z7F6cEkpex6UCFUW9+mf2UWT+T86C5COhYQHY=";
   };
 
   build-system = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "rapidfuzz"
-  ];
+  pythonRelaxDeps = [ "rapidfuzz" ];
 
   dependencies = [
     requests
@@ -41,16 +38,14 @@ buildPythonPackage rec {
   # Tests require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "syncedlyrics"
-  ];
+  pythonImportsCheck = [ "syncedlyrics" ];
 
   meta = with lib; {
     description = "Module to get LRC format (synchronized) lyrics";
-    mainProgram = "syncedlyrics";
     homepage = "https://github.com/rtcq/syncedlyrics";
     changelog = "https://github.com/rtcq/syncedlyrics/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "syncedlyrics";
   };
 }
diff --git a/pkgs/development/python-modules/syncer/default.nix b/pkgs/development/python-modules/syncer/default.nix
index cb86cd2e7ceea..aed4172d9a3f4 100644
--- a/pkgs/development/python-modules/syncer/default.nix
+++ b/pkgs/development/python-modules/syncer/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/synergy/default.nix b/pkgs/development/python-modules/synergy/default.nix
index 570390d67f153..6666d2db45e50 100644
--- a/pkgs/development/python-modules/synergy/default.nix
+++ b/pkgs/development/python-modules/synergy/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, numpy
-, scipy
-, matplotlib
-, plotly
-, pandas
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  numpy,
+  scipy,
+  matplotlib,
+  plotly,
+  pandas,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,9 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "synergy" ];
 
   meta = with lib; {
-    description = "A Python library for calculating, analyzing, and visualizing drug combination synergy";
+    description = "Python library for calculating, analyzing, and visualizing drug combination synergy";
     homepage = "https://github.com/djwooten/synergy";
-    maintainers = [ maintainers.ivar ];
+    maintainers = [ ];
     license = licenses.gpl3Plus;
   };
 }
diff --git a/pkgs/development/python-modules/synologydsm-api/default.nix b/pkgs/development/python-modules/synologydsm-api/default.nix
deleted file mode 100644
index 8be0564de4d73..0000000000000
--- a/pkgs/development/python-modules/synologydsm-api/default.nix
+++ /dev/null
@@ -1,64 +0,0 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, pythonRelaxDepsHook
-, requests
-, urllib3
-, pytestCheckHook
-}:
-
-buildPythonPackage rec {
-  pname = "synologydsm-api";
-  version = "1.0.2";
-
-  pyproject = true;
-
-  disabled = pythonOlder "3.7";
-
-  src = fetchFromGitHub {
-    owner = "hacf-fr";
-    repo = "synologydsm-api";
-    rev = "v${version}";
-    hash = "sha256-UQdPwvRdv7SCOTxkA1bfskQ9oL/DB0j1TdJE04ODyj8=";
-  };
-
-  patches = [
-    # https://github.com/hacf-fr/synologydsm-api/pull/84
-    (fetchpatch {
-      name = "switch-to-poetry-core.patch";
-      url = "https://github.com/hacf-fr/synologydsm-api/commit/f1ea2be927388bdff6d43d09027b82a854635e34.patch";
-      hash = "sha256-+c25zLkTtjeX7IE+nZEnjrWfnDhDJpeHN7qRKO5rF4g=";
-    })
-  ];
-
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
-
-  pythonRelaxDeps = [
-    "urllib3"
-  ];
-
-  propagatedBuildInputs = [
-    requests
-    urllib3
-  ];
-
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-
-  pythonImportsCheck = [ "synology_dsm" ];
-
-  meta = with lib; {
-    description = "Python API for communication with Synology DSM";
-    mainProgram = "synologydsm-api";
-    homepage = "https://github.com/hacf-fr/synologydsm-api";
-    license = licenses.mit;
-    maintainers = with maintainers; [ dotlambda ];
-  };
-}
diff --git a/pkgs/development/python-modules/syrupy/default.nix b/pkgs/development/python-modules/syrupy/default.nix
index c5b860e840504..60cf1380d560b 100644
--- a/pkgs/development/python-modules/syrupy/default.nix
+++ b/pkgs/development/python-modules/syrupy/default.nix
@@ -1,38 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, poetry-core
-, pytest
-, colored
-, invoke
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  poetry-core,
+  pytest,
+  invoke,
 }:
 
 buildPythonPackage rec {
   pname = "syrupy";
-  version = "4.6.1";
-  format = "pyproject";
+  version = "4.7.1";
+  pyproject = true;
 
   disabled = lib.versionOlder python.version "3.8.1";
 
   src = fetchFromGitHub {
-    owner = "tophat";
+    owner = "syrupy-project";
     repo = "syrupy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-NBJJqQsZqqKHOdqGa/j/2KQvlenLCEJBqlfdjtFK00U=";
+    hash = "sha256-dTUugNqzaMuKV6ZwxRSf9df7tsnmZUBhgqwgGxBhirw=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  buildInputs = [
-    pytest
-  ];
-
-  propagatedBuildInputs = [
-    colored
-  ];
+  buildInputs = [ pytest ];
 
   nativeCheckInputs = [
     invoke
@@ -48,11 +40,11 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "syrupy" ];
 
-  meta = with lib; {
-    changelog = "https://github.com/tophat/syrupy/releases/tag/v${version}";
+  meta = {
+    changelog = "https://github.com/syrupy-project/syrupy/blob/${src.rev}/CHANGELOG.md";
     description = "Pytest Snapshot Test Utility";
-    homepage = "https://github.com/tophat/syrupy";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    homepage = "https://github.com/syrupy-project/syrupy";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ dotlambda ];
   };
 }
diff --git a/pkgs/development/python-modules/syslog-rfc5424-formatter/default.nix b/pkgs/development/python-modules/syslog-rfc5424-formatter/default.nix
index 50ebc91d9e81c..61c9a489b7387 100644
--- a/pkgs/development/python-modules/syslog-rfc5424-formatter/default.nix
+++ b/pkgs/development/python-modules/syslog-rfc5424-formatter/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
   # Tests are not picked up, review later again
   doCheck = false;
 
-  pythonImportsCheck = [
-    "syslog_rfc5424_formatter"
-  ];
+  pythonImportsCheck = [ "syslog_rfc5424_formatter" ];
 
   meta = with lib; {
     description = "Python logging formatter for emitting RFC5424 Syslog messages";
diff --git a/pkgs/development/python-modules/sysrsync/default.nix b/pkgs/development/python-modules/sysrsync/default.nix
new file mode 100644
index 0000000000000..809ca324cce12
--- /dev/null
+++ b/pkgs/development/python-modules/sysrsync/default.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  setuptools,
+  rsync,
+  toml,
+}:
+
+buildPythonPackage rec {
+  pname = "sysrsync";
+  version = "1.1.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "gchamon";
+    repo = pname;
+    rev = "refs/tags/${version}";
+    hash = "sha256-2Sz3JrNmIGOnad+qjRzbAgsFEzDtwBT0KLEFyQKZra4=";
+  };
+
+  postPatch = ''
+    substituteInPlace sysrsync/command_maker.py \
+      --replace-fail "'rsync'" "'${rsync}/bin/rsync'"
+  '';
+
+  build-system = [
+    poetry-core
+    setuptools
+  ];
+
+  dependencies = [
+    toml
+  ];
+
+  pythonImportsCheck = [ "sysrsync" ];
+
+  meta = with lib; {
+    description = "Simple and safe system's rsync wrapper for Python";
+    homepage = "https://github.com/gchamon/sysrsync";
+    license = licenses.mit;
+    maintainers = with maintainers; [ veprbl ];
+  };
+}
diff --git a/pkgs/development/python-modules/systembridge/default.nix b/pkgs/development/python-modules/systembridge/default.nix
index f60a1c3298c4b..3af2cb7c4964d 100644
--- a/pkgs/development/python-modules/systembridge/default.nix
+++ b/pkgs/development/python-modules/systembridge/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, websockets
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  websockets,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/systembridgeconnector/default.nix b/pkgs/development/python-modules/systembridgeconnector/default.nix
index 04132ffe081a2..221cca321e047 100644
--- a/pkgs/development/python-modules/systembridgeconnector/default.nix
+++ b/pkgs/development/python-modules/systembridgeconnector/default.nix
@@ -1,20 +1,22 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, fetchpatch2
-, setuptools
-, aiohttp
-, incremental
-, systembridgemodels
-, pytest-aiohttp
-, pytest-socket
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  aiohttp,
+  incremental,
+  packaging,
+  systembridgemodels,
+  pytest-aiohttp,
+  pytest-socket,
+  pytestCheckHook,
+  syrupy,
 }:
 
 buildPythonPackage rec {
   pname = "systembridgeconnector";
-  version = "4.0.4";
+  version = "4.1.5";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -23,28 +25,28 @@ buildPythonPackage rec {
     owner = "timmo001";
     repo = "system-bridge-connector";
     rev = "refs/tags/${version}";
-    hash = "sha256-Guh9qbRLp+b2SuFgBx7jf16vRShuHJBi3WOVn9Akce8=";
+    hash = "sha256-AzAN7reBAI4atEFutgFrdQHFy/Qc90PQxwSaHaftn5Q=";
   };
 
-  patches = [
-    (fetchpatch2 {
-      url = "https://github.com/timmo001/system-bridge-connector/commit/25aa172775ee983dc4a29b8dda880aefbad70040.patch";
-      hash = "sha256-PedW1S1gZmWkS4sJBqSAx3aoA1KppYS5Xlhoaxqkcd4=";
-    })
-  ];
-
   postPatch = ''
+    substituteInPlace requirements_setup.txt \
+      --replace-fail ">=" " #"
+
     substituteInPlace systembridgeconnector/_version.py \
       --replace-fail ", dev=0" ""
   '';
 
-  nativeBuildInputs = [
+  build-system = [
+    incremental
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  pythonRelaxDeps = [ "incremental" ];
+
+  dependencies = [
     aiohttp
     incremental
+    packaging
     systembridgemodels
   ];
 
@@ -54,13 +56,16 @@ buildPythonPackage rec {
     pytest-aiohttp
     pytest-socket
     pytestCheckHook
+    syrupy
   ];
 
   disabledTests = [
-    # ConnectionClosedException: Connection closed to server
-    "test_get_files"
+    "test_get_data"
+    "test_wait_for_response_timeout"
   ];
 
+  pytestFlagsArray = [ "--snapshot-warn-unused" ];
+
   meta = {
     changelog = "https://github.com/timmo001/system-bridge-connector/releases/tag/${version}";
     description = "This is the connector package for the System Bridge project";
diff --git a/pkgs/development/python-modules/systembridgemodels/default.nix b/pkgs/development/python-modules/systembridgemodels/default.nix
index 82d581ff3e1e4..ebb8dcea57ad8 100644
--- a/pkgs/development/python-modules/systembridgemodels/default.nix
+++ b/pkgs/development/python-modules/systembridgemodels/default.nix
@@ -1,15 +1,17 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, incremental
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  incremental,
+  pytestCheckHook,
+  syrupy,
 }:
 
 buildPythonPackage rec {
   pname = "systembridgemodels";
-  version = "4.0.4";
+  version = "4.2.4";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -18,28 +20,40 @@ buildPythonPackage rec {
     owner = "timmo001";
     repo = "system-bridge-models";
     rev = "refs/tags/${version}";
-    hash = "sha256-iFJ95ouhfbaC0D2Gkc1KO+JueYTFTOj1unnYSDyPAe8=";
+    hash = "sha256-FjHDd7nI30ChaClL0b1ME9Zv+DV0BiMsfgGOKQF/qBk=";
   };
 
   postPatch = ''
+    substituteInPlace requirements_setup.txt \
+      --replace-fail ">=" " #"
+
     substituteInPlace systembridgemodels/_version.py \
-      --replace-fail ", dev=1" ""
+      --replace-fail ", dev=0" ""
   '';
 
-  nativeBuildInputs = [
+  build-system = [
+    incremental
     setuptools
   ];
 
-  propagatedBuildInputs = [
-    incremental
-  ];
+  pythonRelaxDeps = [ "incremental" ];
+
+  dependencies = [ incremental ];
 
   pythonImportsCheck = [ "systembridgemodels" ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    syrupy
+  ];
+
+  disabledTests = [
+    "test_system"
+    "test_update"
   ];
 
+  pytestFlagsArray = [ "--snapshot-warn-unused" ];
+
   meta = {
     changelog = "https://github.com/timmo001/system-bridge-models/releases/tag/${version}";
     description = "This is the models package used by the System Bridge project";
diff --git a/pkgs/development/python-modules/systemd/default.nix b/pkgs/development/python-modules/systemd/default.nix
index de195da11240d..ebf70c9946cb5 100644
--- a/pkgs/development/python-modules/systemd/default.nix
+++ b/pkgs/development/python-modules/systemd/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, libredirect
-, systemd
-, pkg-config
-, pytest
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  libredirect,
+  systemd,
+  pkg-config,
+  pytest,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-8p4m4iM/z4o6PHRQIpuSXb64tPTWGlujEYCDVLiIt2o=";
   };
 
-  nativeBuildInputs = [
-    pkg-config
-  ];
+  nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [
-    systemd
-  ];
+  buildInputs = [ systemd ];
 
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
   checkPhase = ''
     echo "12345678901234567890123456789012" > machine-id
diff --git a/pkgs/development/python-modules/sysv-ipc/default.nix b/pkgs/development/python-modules/sysv-ipc/default.nix
index e6e1db135a05c..d7e2f628756fe 100644
--- a/pkgs/development/python-modules/sysv-ipc/default.nix
+++ b/pkgs/development/python-modules/sysv-ipc/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -20,5 +21,4 @@ buildPythonPackage rec {
     homepage = "http://semanchuk.com/philip/sysv_ipc/";
     maintainers = with maintainers; [ ris ];
   };
-
 }
diff --git a/pkgs/development/python-modules/tabcmd/default.nix b/pkgs/development/python-modules/tabcmd/default.nix
index 956e71bff6054..1c2906333437f 100644
--- a/pkgs/development/python-modules/tabcmd/default.nix
+++ b/pkgs/development/python-modules/tabcmd/default.nix
@@ -10,9 +10,8 @@
   pyinstaller-versionfile,
   pytest-order,
   pytestCheckHook,
-  python3,
+  python,
   pythonOlder,
-  pythonRelaxDepsHook,
   requests,
   setuptools,
   setuptools-scm,
@@ -26,14 +25,14 @@
 
 buildPythonPackage rec {
   pname = "tabcmd";
-  version = "2.0.13";
+  version = "2.0.14";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-f9zoYeb4RzcCtgcCYYvvuCuFrjqpP3Fhv38bUWH24+g=";
+    hash = "sha256-wyfKy0g2btdNMNviCd7brB+lwZvPcZ3/DnymdVjCGFg=";
   };
 
   prePatch = ''
@@ -47,7 +46,6 @@ buildPythonPackage rec {
     "urllib3"
   ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   build-system = [ setuptools ];
 
@@ -81,7 +79,7 @@ buildPythonPackage rec {
     cp -r build/lib/tabcmd/__main__.py $out/bin/
 
     # Create a 'tabcmd' script with python3 shebang
-    echo "#!${python3}/bin/python3" > $out/bin/tabcmd
+    echo "#!${python.interpreter}" > $out/bin/tabcmd
 
     # Append __main__.py contents
     cat $out/bin/__main__.py >> $out/bin/tabcmd
@@ -93,11 +91,12 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "tabcmd" ];
 
   meta = with lib; {
-    description = "A command line client for working with Tableau Server";
+    broken = true;
+    description = "Command line client for working with Tableau Server";
     homepage = "https://github.com/tableau/tabcmd";
     changelog = "https://github.com/tableau/tabcmd/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     mainProgram = "tabcmd";
   };
 }
diff --git a/pkgs/development/python-modules/tableaudocumentapi/default.nix b/pkgs/development/python-modules/tableaudocumentapi/default.nix
index 437c1b2183947..9f841867cb5ef 100644
--- a/pkgs/development/python-modules/tableaudocumentapi/default.nix
+++ b/pkgs/development/python-modules/tableaudocumentapi/default.nix
@@ -1,15 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, lxml
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  lxml,
+  pytestCheckHook,
+  pythonOlder,
+  fetchpatch,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "tableaudocumentapi";
   version = "0.11";
-  format = "setuptools";
+
+  pyproject = true;
+  build-system = [ setuptools ];
 
   disabled = pythonOlder "3.7";
 
@@ -17,18 +22,21 @@ buildPythonPackage rec {
     inherit pname version;
     hash = "sha256-g6V1UBf+P21FcZkR3PHoUmdmrQwEvjdd1VKhvNmvOys=";
   };
-
-  propagatedBuildInputs = [
-    lxml
+  patches = [
+    # distutils has been removed since python 3.12
+    # see https://github.com/tableau/document-api-python/pull/255
+    (fetchpatch {
+      name = "no-distutils.patch";
+      url = "https://github.com/tableau/document-api-python/pull/255/commits/59280bbe073060d1249e6404e11303ed6faa84f6.patch";
+      hash = "sha256-mjIF9iP1BQXvqkS0jYNTm8otkhSKLj2b2iHSMZ2K0iI=";
+    })
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  dependencies = [ lxml ];
 
-  pythonImportsCheck = [
-    "tableaudocumentapi"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "tableaudocumentapi" ];
 
   # ModuleNotFoundError: No module named 'test.assets'
   doCheck = false;
@@ -38,6 +46,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/tableau/document-api-python";
     changelog = "https://github.com/tableau/document-api-python/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/tableauserverclient/default.nix b/pkgs/development/python-modules/tableauserverclient/default.nix
index 3ddf8c9a2d15c..032b4e189b70f 100644
--- a/pkgs/development/python-modules/tableauserverclient/default.nix
+++ b/pkgs/development/python-modules/tableauserverclient/default.nix
@@ -1,27 +1,27 @@
-{ lib
-, buildPythonPackage
-, defusedxml
-, fetchPypi
-, packaging
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
-, requests-mock
-, setuptools
-, versioneer
+{
+  lib,
+  buildPythonPackage,
+  defusedxml,
+  fetchPypi,
+  packaging,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
+  setuptools,
+  versioneer,
 }:
 
 buildPythonPackage rec {
   pname = "tableauserverclient";
-  version = "0.30";
+  version = "0.31";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-MIE6V84xLEbgmTwvP6jQC0H//gBnMTO1sowL1HIMbpQ=";
+    hash = "sha256-e00/+yVKg7dGGq3Os+oWu/F93j5e9dnwWZxKwm+soqM=";
   };
 
   postPatch = ''
@@ -29,13 +29,10 @@ buildPythonPackage rec {
     rm versioneer.py
   '';
 
-  pythonRelaxDeps = [
-    "urllib3"
-  ];
+  pythonRelaxDeps = [ "urllib3" ];
 
   nativeBuildInputs = [
     setuptools
-    pythonRelaxDepsHook
     versioneer
   ];
 
@@ -53,15 +50,13 @@ buildPythonPackage rec {
   # Tests attempt to create some file artifacts and fails
   doCheck = false;
 
-  pythonImportsCheck = [
-    "tableauserverclient"
-  ];
+  pythonImportsCheck = [ "tableauserverclient" ];
 
   meta = with lib; {
     description = "Module for working with the Tableau Server REST API";
     homepage = "https://github.com/tableau/server-client-python";
     changelog = "https://github.com/tableau/server-client-python/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/tabledata/default.nix b/pkgs/development/python-modules/tabledata/default.nix
index 290774b17b41d..49769b3f0e51e 100644
--- a/pkgs/development/python-modules/tabledata/default.nix
+++ b/pkgs/development/python-modules/tabledata/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, dataproperty
-, typepy
-, pytestCheckHook
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  dataproperty,
+  typepy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,13 +19,16 @@ buildPythonPackage rec {
     hash = "sha256-84KrXnks76mvIjcEeQPpwd8rPO5SMbH/jfqERaFTrWo=";
   };
 
-  propagatedBuildInputs = [ dataproperty typepy ];
+  propagatedBuildInputs = [
+    dataproperty
+    typepy
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     homepage = "https://github.com/thombashi/tabledata";
-    description = "A library to represent tabular data";
+    description = "Library to represent tabular data";
     changelog = "https://github.com/thombashi/tabledata/releases/tag/v${version}";
     maintainers = with maintainers; [ genericnerdyusername ];
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/tables/default.nix b/pkgs/development/python-modules/tables/default.nix
index fd034b2091335..e7f22b68f39f9 100644
--- a/pkgs/development/python-modules/tables/default.nix
+++ b/pkgs/development/python-modules/tables/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, blosc2
-, bzip2
-, c-blosc
-, cython
-, hdf5
-, lzo
-, numpy
-, numexpr
-, packaging
-, setuptools
-, sphinx
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
+  blosc2,
+  bzip2,
+  c-blosc,
+  cython,
+  hdf5,
+  lzo,
+  numpy,
+  numexpr,
+  packaging,
+  setuptools,
+  sphinx,
   # Test inputs
-, python
-, pytest
-, py-cpuinfo
+  python,
+  pytest,
+  py-cpuinfo,
 }:
 
 buildPythonPackage rec {
@@ -79,9 +80,7 @@ buildPythonPackage rec {
     "--blosc2=${lib.getDev blosc2.c-blosc2}"
   ];
 
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
   preCheck = ''
     cd ..
diff --git a/pkgs/development/python-modules/tablib/default.nix b/pkgs/development/python-modules/tablib/default.nix
index 679f8df11559a..443b83ce78103 100644
--- a/pkgs/development/python-modules/tablib/default.nix
+++ b/pkgs/development/python-modules/tablib/default.nix
@@ -1,30 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, markuppy
-, odfpy
-, openpyxl
-, pandas
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, setuptools-scm
-, tabulate
-, unicodecsv
-, xlrd
-, xlwt
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  markuppy,
+  odfpy,
+  openpyxl,
+  pandas,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  setuptools-scm,
+  tabulate,
+  unicodecsv,
+  xlrd,
+  xlwt,
 }:
 
 buildPythonPackage rec {
   pname = "tablib";
-  version = "3.5.0";
+  version = "3.6.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-9mYd/EXh1PUfqKYjn5yDSTgIWaW/qnMoBkXwRtbJbjM=";
+    hash = "sha256-BAaF/eEekjdnX0Pphe25S2MlCl6SNvidVhzm+xRluDk=";
   };
 
   postPatch = ''
@@ -32,9 +33,7 @@ buildPythonPackage rec {
       --replace " --cov=tablib --cov=tests --cov-report xml --cov-report term --cov-report html" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   passthru.optional-dependencies = {
     all = [
@@ -47,28 +46,16 @@ buildPythonPackage rec {
       xlrd
       xlwt
     ];
-    cli = [
-      tabulate
-    ];
-    html = [
-      markuppy
-    ];
-    ods = [
-      odfpy
-    ];
-    pandas = [
-      pandas
-    ];
+    cli = [ tabulate ];
+    html = [ markuppy ];
+    ods = [ odfpy ];
+    pandas = [ pandas ];
     xls = [
       xlrd
       xlwt
     ];
-    xlsx = [
-      openpyxl
-    ];
-    yaml = [
-      pyyaml
-    ];
+    xlsx = [ openpyxl ];
+    yaml = [ pyyaml ];
   };
 
   nativeCheckInputs = [
@@ -82,15 +69,13 @@ buildPythonPackage rec {
     "tests/test_tablib.py"
   ];
 
-  pythonImportsCheck = [
-    "tablib"
-  ];
+  pythonImportsCheck = [ "tablib" ];
 
   meta = with lib; {
     description = "Format-agnostic tabular dataset library";
     homepage = "https://tablib.readthedocs.io/";
     changelog = "https://github.com/jazzband/tablib/raw/v${version}/HISTORY.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/tabula-py/default.nix b/pkgs/development/python-modules/tabula-py/default.nix
index bdc31012cf2d0..0299d511c25a8 100644
--- a/pkgs/development/python-modules/tabula-py/default.nix
+++ b/pkgs/development/python-modules/tabula-py/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, distro
-, fetchFromGitHub
-, jre
-, numpy
-, pandas
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
-, jpype1
+{
+  lib,
+  buildPythonPackage,
+  distro,
+  fetchFromGitHub,
+  jre,
+  numpy,
+  pandas,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  jpype1,
 }:
 
 buildPythonPackage rec {
   pname = "tabula-py";
-  version = "2.9.0";
+  version = "2.9.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -23,37 +24,31 @@ buildPythonPackage rec {
     owner = "chezou";
     repo = "tabula-py";
     rev = "refs/tags/v${version}";
-    hash = "sha256-MGv2n8DoSjumD3lRcqwI0sEsaEDgs1n+st8DwZuZauo=";
+    hash = "sha256-dEcVIlK3M7zqRMN7W7mnnMPWhM2A4/qvf0aY61ko4yE=";
   };
 
   postPatch = ''
     substituteInPlace tabula/backend.py \
-      --replace '"java"' '"${lib.getExe jre}"'
+      --replace-fail '"java"' '"${lib.getExe jre}"'
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  buildInputs = [
-    jre
-  ];
+  buildInputs = [ jre ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     distro
     numpy
     pandas
     jpype1
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "tabula"
-  ];
+  pythonImportsCheck = [ "tabula" ];
 
   disabledTests = [
     # Tests require network access
diff --git a/pkgs/development/python-modules/tabulate/default.nix b/pkgs/development/python-modules/tabulate/default.nix
index 9b1108481c755..c781a453397ac 100644
--- a/pkgs/development/python-modules/tabulate/default.nix
+++ b/pkgs/development/python-modules/tabulate/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools-scm
-, setuptools
-, wcwidth
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools-scm,
+  setuptools,
+  wcwidth,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/tabview/default.nix b/pkgs/development/python-modules/tabview/default.nix
index 8d83fe4ef9ad5..4db25a42b8cd0 100644
--- a/pkgs/development/python-modules/tabview/default.nix
+++ b/pkgs/development/python-modules/tabview/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/tadasets/default.nix b/pkgs/development/python-modules/tadasets/default.nix
index 4f3b179e63dca..ad437fd3497bb 100644
--- a/pkgs/development/python-modules/tadasets/default.nix
+++ b/pkgs/development/python-modules/tadasets/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, matplotlib
-, pytest
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  matplotlib,
+  pytest,
+  scipy,
 }:
 
 buildPythonPackage rec {
@@ -14,7 +15,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-PWbq+dCQ8mGR81lolBDSArxjkTdis1ZpLY0MqZfZ66I=";
+    hash = "sha256-PWbq+dCQ8mGR81lolBDSArxjkTdis1ZpLY0MqZfZ66I=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/tag-expressions/default.nix b/pkgs/development/python-modules/tag-expressions/default.nix
index e87c489dae4a0..ed06454a5f6ab 100644
--- a/pkgs/development/python-modules/tag-expressions/default.nix
+++ b/pkgs/development/python-modules/tag-expressions/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-/6Ym72jlgVdpel4V2W2aCKNtISDT9y5qz7+gTllUuPg=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "tagexpressions"
-  ];
+  pythonImportsCheck = [ "tagexpressions" ];
 
   meta = with lib; {
     description = "Package to parse logical tag expressions";
diff --git a/pkgs/development/python-modules/tago/default.nix b/pkgs/development/python-modules/tago/default.nix
index d20d99f9ebc18..eb42efff56896 100644
--- a/pkgs/development/python-modules/tago/default.nix
+++ b/pkgs/development/python-modules/tago/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, promise
-, python-socketio
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
-, websockets
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  promise,
+  python-socketio,
+  pythonOlder,
+  requests,
+  websockets,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +26,6 @@ buildPythonPackage rec {
 
   pythonRelaxDeps = true;
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -41,9 +38,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "tago"
-  ];
+  pythonImportsCheck = [ "tago" ];
 
   meta = with lib; {
     description = "Python module for interacting with Tago.io";
diff --git a/pkgs/development/python-modules/tagoio-sdk/default.nix b/pkgs/development/python-modules/tagoio-sdk/default.nix
index 626872794e035..4e2984a987215 100644
--- a/pkgs/development/python-modules/tagoio-sdk/default.nix
+++ b/pkgs/development/python-modules/tagoio-sdk/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, python-dateutil
-, python-socketio
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
-, requests-mock
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  python-dateutil,
+  python-socketio,
+  pythonOlder,
+  requests,
+  requests-mock,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +26,10 @@ buildPythonPackage rec {
     hash = "sha256-37/fg2vbwYPhYPvSJ2YxWAPrfspqTE3thIL/VR1+AkI=";
   };
 
-  pythonRelaxDeps = [
-    "requests"
-  ];
+  pythonRelaxDeps = [ "requests" ];
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -47,9 +44,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "tagoio_sdk"
-  ];
+  pythonImportsCheck = [ "tagoio_sdk" ];
 
   meta = with lib; {
     description = "Module for interacting with Tago.io";
diff --git a/pkgs/development/python-modules/tahoma-api/default.nix b/pkgs/development/python-modules/tahoma-api/default.nix
index edd3469416680..13744f25f24d0 100644
--- a/pkgs/development/python-modules/tahoma-api/default.nix
+++ b/pkgs/development/python-modules/tahoma-api/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/tailer/default.nix b/pkgs/development/python-modules/tailer/default.nix
index ffc7e3da17c8b..dbdc4e527962c 100644
--- a/pkgs/development/python-modules/tailer/default.nix
+++ b/pkgs/development/python-modules/tailer/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/tailscale/default.nix b/pkgs/development/python-modules/tailscale/default.nix
index c146c7fd9bd8c..4df1e2b709325 100644
--- a/pkgs/development/python-modules/tailscale/default.nix
+++ b/pkgs/development/python-modules/tailscale/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, mashumaro
-, orjson
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mashumaro,
+  orjson,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "tailscale";
-  version = "0.6.0";
+  version = "0.6.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.11";
@@ -23,7 +24,7 @@ buildPythonPackage rec {
     owner = "frenck";
     repo = "python-tailscale";
     rev = "refs/tags/v${version}";
-    hash = "sha256-wO6yMMU5fxk8GQ0e4ZCse2atlR4wrzulZOFXkVKAsmU=";
+    hash = "sha256-47n/BjTHkw0rT8xTHGZOMNwZTy0nDuoHsTJrRyr8qjc=";
   };
 
   postPatch = ''
@@ -33,9 +34,7 @@ buildPythonPackage rec {
       --replace "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -50,9 +49,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "tailscale"
-  ];
+  pythonImportsCheck = [ "tailscale" ];
 
   meta = with lib; {
     description = "Python client for the Tailscale API";
diff --git a/pkgs/development/python-modules/takethetime/default.nix b/pkgs/development/python-modules/takethetime/default.nix
index c79df0b179f12..e5671d5c08e8d 100644
--- a/pkgs/development/python-modules/takethetime/default.nix
+++ b/pkgs/development/python-modules/takethetime/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -12,7 +13,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "TakeTheTime";
     inherit version;
-    sha256 = "sha256-2+MEU6G1lqOPni4/qOGtxa8tv2RsoIN61cIFmhb+L/k=";
+    hash = "sha256-2+MEU6G1lqOPni4/qOGtxa8tv2RsoIN61cIFmhb+L/k=";
   };
 
   disabled = pythonOlder "3.6";
diff --git a/pkgs/development/python-modules/tank-utility/default.nix b/pkgs/development/python-modules/tank-utility/default.nix
index d9783789df7ca..9d195004e9845 100644
--- a/pkgs/development/python-modules/tank-utility/default.nix
+++ b/pkgs/development/python-modules/tank-utility/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pytestCheckHook
-, pythonOlder
-, requests
-, responses
-, setuptools
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  responses,
+  setuptools,
+  urllib3,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-h9y3X+FSzSFt+bd/chz+x0nocHaKZ8DvreMxAYMs8/E=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     requests
@@ -39,9 +38,7 @@ buildPythonPackage rec {
     responses
   ];
 
-  pythonImportsCheck = [
-    "tank_utility"
-  ];
+  pythonImportsCheck = [ "tank_utility" ];
 
   meta = with lib; {
     description = "Library for the Tank Utility API";
diff --git a/pkgs/development/python-modules/tappy/default.nix b/pkgs/development/python-modules/tappy/default.nix
index d2a311f7e95af..916ac21e3d8ec 100644
--- a/pkgs/development/python-modules/tappy/default.nix
+++ b/pkgs/development/python-modules/tappy/default.nix
@@ -1,19 +1,35 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  pyyaml,
+  more-itertools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "tap.py";
   version = "3.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3c0cd45212ad5a25b35445964e2517efa000a118a1bfc3437dae828892eaf1e1";
+    hash = "sha256-PAzUUhKtWiWzVEWWTiUX76AAoRihv8NDfa6CiJLq8eE=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+
+  optional-dependencies = {
+    yaml = [
+      pyyaml
+      more-itertools
+    ];
   };
 
   nativeCheckInputs = [ pytestCheckHook ];
@@ -21,9 +37,10 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "tap" ];
 
   meta = with lib; {
-    description = "A set of tools for working with the Test Anything Protocol (TAP) in Python";
+    description = "Set of tools for working with the Test Anything Protocol (TAP) in Python";
     homepage = "https://github.com/python-tap/tappy";
     changelog = "https://tappy.readthedocs.io/en/latest/releases.html";
+    mainProgram = "tappy";
     license = licenses.bsd2;
     maintainers = with maintainers; [ sfrijters ];
   };
diff --git a/pkgs/development/python-modules/tasklib/default.nix b/pkgs/development/python-modules/tasklib/default.nix
index b7fdbcd5a9fbb..30a2fafa97581 100644
--- a/pkgs/development/python-modules/tasklib/default.nix
+++ b/pkgs/development/python-modules/tasklib/default.nix
@@ -1,17 +1,15 @@
-{ lib
-, pythonPackages
-, fetchPypi
-, taskwarrior
-, writeShellScriptBin
+{
+  lib,
+  buildPythonPackage,
+  six,
+  pytz,
+  tzlocal,
+  fetchPypi,
+  taskwarrior2,
+  writeShellScriptBin,
 }:
 
-with pythonPackages;
-
-let
-
-wsl_stub = writeShellScriptBin "wsl" "true";
-
-in buildPythonPackage rec {
+buildPythonPackage rec {
   pname = "tasklib";
   version = "2.5.1";
   format = "setuptools";
@@ -28,16 +26,17 @@ in buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
-    taskwarrior
-    wsl_stub
+    taskwarrior2
+    # stub
+    (writeShellScriptBin "wsl" "true")
   ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://github.com/robgolding/tasklib";
     description = "Library for interacting with taskwarrior databases";
     changelog = "https://github.com/GothenburgBitFactory/tasklib/releases/tag/${version}";
-    maintainers = with maintainers; [ arcnmx ];
-    platforms = platforms.all;
-    license = licenses.bsd3;
+    maintainers = with lib.maintainers; [ arcnmx ];
+    platforms = lib.platforms.all;
+    license = lib.licenses.bsd3;
   };
 }
diff --git a/pkgs/development/python-modules/taskw-ng/default.nix b/pkgs/development/python-modules/taskw-ng/default.nix
index 15f6412831d63..35bda3dfb9621 100644
--- a/pkgs/development/python-modules/taskw-ng/default.nix
+++ b/pkgs/development/python-modules/taskw-ng/default.nix
@@ -8,9 +8,8 @@
   poetry-dynamic-versioning,
   python-dateutil,
   pythonOlder,
-  pythonRelaxDepsHook,
   pytz,
-  taskwarrior,
+  taskwarrior2,
 }:
 
 buildPythonPackage rec {
@@ -37,7 +36,6 @@ buildPythonPackage rec {
     poetry-dynamic-versioning
   ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   propagatedBuildInputs = [
     kitchen
@@ -46,7 +44,7 @@ buildPythonPackage rec {
     pytz
   ];
 
-  checkInputs = [ taskwarrior ];
+  checkInputs = [ taskwarrior2 ];
 
   # TODO: doesn't pass because `can_use` fails and `task --version` seems not to be answering.
   # pythonImportsCheck = [ "taskw_ng" ];
diff --git a/pkgs/development/python-modules/taskw/default.nix b/pkgs/development/python-modules/taskw/default.nix
index 36ac9293e1d4c..9e4ad7c8bbcc9 100644
--- a/pkgs/development/python-modules/taskw/default.nix
+++ b/pkgs/development/python-modules/taskw/default.nix
@@ -1,20 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonAtLeast,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# native dependencies
-, pkgs
+  # native dependencies
+  taskwarrior2,
 
-# dependencies
-, kitchen
-, python-dateutil
-, pytz
+  # dependencies
+  kitchen,
+  python-dateutil,
+  pytz,
 
-# tests
-, pytest7CheckHook
+  # tests
+  pytest7CheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,6 +24,9 @@ buildPythonPackage rec {
   version = "2.0.0";
   pyproject = true;
 
+  # ModuleNotFoundError: No module named 'distutils'
+  disabled = pythonAtLeast "3.12";
+
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-EQm9+b3nqbMqUAejAsh4MD/2UYi2QiWsdKMomkxUi90=";
@@ -34,14 +39,12 @@ buildPythonPackage rec {
   ];
   postPatch = ''
     substituteInPlace taskw/warrior.py \
-      --replace '@@taskwarrior@@' '${pkgs.taskwarrior}'
+      --replace '@@taskwarrior@@' '${taskwarrior2}'
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  buildInputs = [ pkgs.taskwarrior ];
+  buildInputs = [ taskwarrior2 ];
 
   dependencies = [
     kitchen
@@ -52,7 +55,7 @@ buildPythonPackage rec {
   nativeCheckInputs = [ pytest7CheckHook ];
 
   meta = with lib; {
-    homepage =  "https://github.com/ralphbean/taskw";
+    homepage = "https://github.com/ralphbean/taskw";
     description = "Python bindings for your taskwarrior database";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ pierron ];
diff --git a/pkgs/development/python-modules/tatsu/default.nix b/pkgs/development/python-modules/tatsu/default.nix
index 69b17a826fb5c..5e601845b4cc3 100644
--- a/pkgs/development/python-modules/tatsu/default.nix
+++ b/pkgs/development/python-modules/tatsu/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, colorama
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, regex
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  colorama,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  regex,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "tatsu";
-  version = "5.12.0";
+  version = "5.12.1";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -19,25 +20,19 @@ buildPythonPackage rec {
     owner = "neogeny";
     repo = "TatSu";
     rev = "refs/tags/v${version}";
-    hash = "sha256-55sTUqNwfWg5h9msByq2RuVx/z23ST7p7pA/ZsIeYr8=";
+    hash = "sha256-dY+hvNwYrkKko9A5yRT0EWYlvVu3OrhJMzk/8cjzuUo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     colorama
     regex
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "tatsu"
-  ];
+  pythonImportsCheck = [ "tatsu" ];
 
   meta = with lib; {
     description = "Generates Python parsers from grammars in a variation of EBNF";
@@ -49,6 +44,6 @@ buildPythonPackage rec {
     homepage = "https://tatsu.readthedocs.io/";
     changelog = "https://github.com/neogeny/TatSu/releases/tag/v${version}";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/taxi/default.nix b/pkgs/development/python-modules/taxi/default.nix
index 98d998f92a404..92a389512cad4 100644
--- a/pkgs/development/python-modules/taxi/default.nix
+++ b/pkgs/development/python-modules/taxi/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, appdirs
-, requests
-, click
-, setuptools
-, pytestCheckHook
-, freezegun
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  appdirs,
+  requests,
+  click,
+  setuptools,
+  pytestCheckHook,
+  freezegun,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/taxii2-client/default.nix b/pkgs/development/python-modules/taxii2-client/default.nix
new file mode 100644
index 0000000000000..49ad9b8916306
--- /dev/null
+++ b/pkgs/development/python-modules/taxii2-client/default.nix
@@ -0,0 +1,43 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytz,
+  requests,
+  setuptools,
+  six,
+}:
+
+buildPythonPackage rec {
+  pname = "taxii2-client";
+  version = "2.3.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "oasis-open";
+    repo = "cti-taxii-client";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-e22bJdLAlm30vv/xIgLSjcwmzfN0Pwt2JydLgEbA+Is=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    pytz
+    requests
+    six
+  ];
+
+  pythonImportsCheck = [ "taxii2client" ];
+
+  meta = {
+    description = "TAXII 2 client library";
+    homepage = "https://github.com/oasis-open/cti-taxii-client/";
+    changelog = "https://github.com/oasis-open/cti-taxii-client/blob/${src.rev}/CHANGES.txt";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/tbats/default.nix b/pkgs/development/python-modules/tbats/default.nix
index 8976fef859d34..1f0545b49caf3 100644
--- a/pkgs/development/python-modules/tbats/default.nix
+++ b/pkgs/development/python-modules/tbats/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, numpy
-, pmdarima
-, scikit-learn
-, scipy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  numpy,
+  pmdarima,
+  scikit-learn,
+  scipy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-f6QqDq/ffbnFBZRAT6KQRlqvZZSE+Pff2/o+htVabZI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     numpy
diff --git a/pkgs/development/python-modules/tblib/default.nix b/pkgs/development/python-modules/tblib/default.nix
index 283bfcd83e402..86a036c47d5da 100644
--- a/pkgs/development/python-modules/tblib/default.nix
+++ b/pkgs/development/python-modules/tblib/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -16,12 +17,10 @@ buildPythonPackage rec {
     hash = "sha256-k2InkKCingTwNGRY+s4eFE3E0y9JNxTGw9/4Kkrbd+Y=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   meta = with lib; {
-    description = "Traceback fiddling library. Allows you to pickle tracebacks.";
+    description = "Traceback fiddling library. Allows you to pickle tracebacks";
     homepage = "https://github.com/ionelmc/python-tblib";
     license = licenses.bsd2;
     maintainers = with maintainers; [ teh ];
diff --git a/pkgs/development/python-modules/tbm-utils/default.nix b/pkgs/development/python-modules/tbm-utils/default.nix
index 7f4963ca6dba3..9daa9648fe1ec 100644
--- a/pkgs/development/python-modules/tbm-utils/default.nix
+++ b/pkgs/development/python-modules/tbm-utils/default.nix
@@ -10,7 +10,6 @@
   pprintpp,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
   wrapt,
 }:
 
@@ -52,7 +51,6 @@ buildPythonPackage rec {
 
   build-system = [ poetry-core ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   propagatedBuildInputs = [
     attrs
@@ -63,14 +61,14 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
     # Skip on macOS because /etc/localtime is accessed through the pendulum
     # library, which is not allowed in a sandboxed build.
     "test_create_parser_filter_dates"
     "test_parse_args"
   ];
 
-  disabledTestPaths = lib.optionals stdenv.isDarwin [
+  disabledTestPaths = lib.optionals stdenv.hostPlatform.isDarwin [
     # Skip on macOS because /etc/localtime is accessed through the pendulum
     # library, which is not allowed in a sandboxed build.
     "tests/test_datetime.py"
@@ -80,10 +78,10 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "tbm_utils" ];
 
   meta = with lib; {
-    description = "A commonly-used set of utilities";
+    description = "Commonly-used set of utilities";
     homepage = "https://github.com/thebigmunch/tbm-utils";
     changelog = "https://github.com/thebigmunch/tbm-utils/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/tcolorpy/default.nix b/pkgs/development/python-modules/tcolorpy/default.nix
index 87c9f5b8147d3..f807ca1bf08a0 100644
--- a/pkgs/development/python-modules/tcolorpy/default.nix
+++ b/pkgs/development/python-modules/tcolorpy/default.nix
@@ -1,26 +1,36 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, pytestCheckHook
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pytestCheckHook,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "tcolorpy";
-  version = "0.1.4";
-  format = "setuptools";
+  version = "0.1.6";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "thombashi";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-cCdKeixRfXkvEGBqozMWw2RjliLdzhlMv8GE2Q40LZQ=";
+    hash = "sha256-esucU+So1YKzkuMt6ICCrQ5SzQVv24lh12SE1Jl5Y/w=";
   };
 
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  pythonImportsCheck = [ "tcolorpy" ];
+
   nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     homepage = "https://github.com/thombashi/tcolorpy";
-    description = "A library to apply true color for terminal text";
+    description = "Library to apply true color for terminal text";
     maintainers = with maintainers; [ genericnerdyusername ];
     license = licenses.mit;
   };
diff --git a/pkgs/development/python-modules/tcxparser/default.nix b/pkgs/development/python-modules/tcxparser/default.nix
index c011b9e32fac7..4de4e9a39a971 100644
--- a/pkgs/development/python-modules/tcxparser/default.nix
+++ b/pkgs/development/python-modules/tcxparser/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, lxml
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxml,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,9 @@ buildPythonPackage rec {
     python-dateutil
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "tcxparser"
-  ];
+  pythonImportsCheck = [ "tcxparser" ];
 
   meta = with lib; {
     description = "Simple parser for Garmin TCX files";
@@ -41,4 +38,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ firefly-cpp ];
   };
 }
-
diff --git a/pkgs/development/python-modules/tcxreader/default.nix b/pkgs/development/python-modules/tcxreader/default.nix
index c9a965ae8145f..9bcab11b58822 100644
--- a/pkgs/development/python-modules/tcxreader/default.nix
+++ b/pkgs/development/python-modules/tcxreader/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,24 +21,17 @@ buildPythonPackage rec {
     hash = "sha256-qTAqRzrHFj0nEujlkBohLaprIvvkSYhcDoRfqWIJMjo=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "tcxreader"
-  ];
+  pythonImportsCheck = [ "tcxreader" ];
 
   meta = with lib; {
-    description = "A reader for Garmin’s TCX file format";
+    description = "Reader for Garmin’s TCX file format";
     homepage = "https://github.com/alenrajsp/tcxreader";
     changelog = "https://github.com/alenrajsp/tcxreader/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ firefly-cpp ];
   };
 }
-
diff --git a/pkgs/development/python-modules/tdir/default.nix b/pkgs/development/python-modules/tdir/default.nix
index 644adda75ff0e..c00e0b3f0bc5d 100644
--- a/pkgs/development/python-modules/tdir/default.nix
+++ b/pkgs/development/python-modules/tdir/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, dek
-, xmod
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  dek,
+  xmod,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,28 +20,22 @@ buildPythonPackage rec {
     hash = "sha256-YYQ33Blhqk/CbocqkB9Nh6qbzMjQT07fmzx+fDTvdw8=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     dek
     xmod
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "tdir"
-  ];
+  pythonImportsCheck = [ "tdir" ];
 
   meta = with lib; {
     description = "Create, fill a temporary directory";
     homepage = "https://github.com/rec/tdir";
     changelog = "https://github.com/rec/tdir/blob/${src.rev}/CHANGELOG";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/teamcity-messages/default.nix b/pkgs/development/python-modules/teamcity-messages/default.nix
index bc4f25003b605..b68f7acbca927 100644
--- a/pkgs/development/python-modules/teamcity-messages/default.nix
+++ b/pkgs/development/python-modules/teamcity-messages/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,17 +20,11 @@ buildPythonPackage rec {
     hash = "sha256-9az7kD7nKqMF2b3/eFgF+pOKKIYLvTy2sf4TSJfHRnA=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests/unit-tests/"
-  ];
+  pytestFlagsArray = [ "tests/unit-tests/" ];
 
-  pythonImportsCheck = [
-    "teamcity"
-  ];
+  pythonImportsCheck = [ "teamcity" ];
 
   meta = with lib; {
     description = "Python unit test reporting to TeamCity";
diff --git a/pkgs/development/python-modules/telegram-text/default.nix b/pkgs/development/python-modules/telegram-text/default.nix
index ca37dde8fb861..f14ed0d939b72 100644
--- a/pkgs/development/python-modules/telegram-text/default.nix
+++ b/pkgs/development/python-modules/telegram-text/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, poetry-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  poetry-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-eUy4kyCmM/5Ag/0s9hYW2IIg+OTX2L7EsoOYivhd0pU=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Python markup module for Telegram messenger";
diff --git a/pkgs/development/python-modules/telegram/default.nix b/pkgs/development/python-modules/telegram/default.nix
index d07baaa4169fd..c706a7b7dad7a 100644
--- a/pkgs/development/python-modules/telegram/default.nix
+++ b/pkgs/development/python-modules/telegram/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -18,5 +19,4 @@ buildPythonPackage rec {
     description = "Telegram APIs";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/telegraph/default.nix b/pkgs/development/python-modules/telegraph/default.nix
index b6bca3a357a31..387c7034bb82d 100644
--- a/pkgs/development/python-modules/telegraph/default.nix
+++ b/pkgs/development/python-modules/telegraph/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, requests
-, httpx
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
+  httpx,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,33 +22,21 @@ buildPythonPackage rec {
     hash = "sha256-xARX8lSOftNVYY4InR5vU4OiguCJJJZv/W76G9eLgNY=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   passthru.optional-dependencies = {
-    aio = [
-      httpx
-    ];
+    aio = [ httpx ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests/"
-  ];
+  pytestFlagsArray = [ "tests/" ];
 
-  disabledTests = [
-    "test_get_page"
-  ];
+  disabledTests = [ "test_get_page" ];
 
   doCheck = true;
 
-  pythonImportsCheck = [
-    "telegraph"
-  ];
+  pythonImportsCheck = [ "telegraph" ];
 
   meta = with lib; {
     description = "Telegraph API wrapper";
@@ -57,4 +46,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ gp2112 ];
   };
 }
-
diff --git a/pkgs/development/python-modules/telepath/default.nix b/pkgs/development/python-modules/telepath/default.nix
index 73cab072dbd2f..3af1ba09950f5 100644
--- a/pkgs/development/python-modules/telepath/default.nix
+++ b/pkgs/development/python-modules/telepath/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, django
-, fetchFromGitHub
-, lib
-, python
+{
+  buildPythonPackage,
+  django,
+  fetchFromGitHub,
+  lib,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -26,7 +27,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "telepath" ];
 
   meta = with lib; {
-    description = "A library for exchanging data between Python and JavaScript";
+    description = "Library for exchanging data between Python and JavaScript";
     homepage = "https://github.com/wagtail/telepath";
     changelog = "https://github.com/wagtail/telepath/blob/v${version}/CHANGELOG.md";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/telethon-session-sqlalchemy/default.nix b/pkgs/development/python-modules/telethon-session-sqlalchemy/default.nix
index 8cea09fea3a02..9d24e4c252902 100644
--- a/pkgs/development/python-modules/telethon-session-sqlalchemy/default.nix
+++ b/pkgs/development/python-modules/telethon-session-sqlalchemy/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k, sqlalchemy }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  sqlalchemy,
+}:
 
 buildPythonPackage rec {
   pname = "telethon-session-sqlalchemy";
@@ -12,9 +18,7 @@ buildPythonPackage rec {
     sha256 = "f847c57302a102eb88e29ed95b8f4efa69582db2966fd806c21376b9a66ad4a8";
   };
 
-  propagatedBuildInputs = [
-    sqlalchemy
-  ];
+  propagatedBuildInputs = [ sqlalchemy ];
 
   # No tests available
   doCheck = false;
diff --git a/pkgs/development/python-modules/telethon/default.nix b/pkgs/development/python-modules/telethon/default.nix
index f40809dabf9e5..b349c470f8fe9 100644
--- a/pkgs/development/python-modules/telethon/default.nix
+++ b/pkgs/development/python-modules/telethon/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, openssl
-, rsa
-, pyaes
-, pythonOlder
-, setuptools
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  openssl,
+  rsa,
+  pyaes,
+  pythonOlder,
+  setuptools,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
       "ctypes.util.find_library('ssl')" "'${lib.getLib openssl}/lib/libssl.so'"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     rsa
@@ -42,9 +41,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "tests/telethon"
-  ];
+  pytestFlagsArray = [ "tests/telethon" ];
 
   meta = with lib; {
     homepage = "https://github.com/LonamiWebs/Telethon";
diff --git a/pkgs/development/python-modules/teletype/default.nix b/pkgs/development/python-modules/teletype/default.nix
index 83cfb471e0d2d..73aa506b29aa1 100644
--- a/pkgs/development/python-modules/teletype/default.nix
+++ b/pkgs/development/python-modules/teletype/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -17,19 +18,15 @@ buildPythonPackage rec {
     hash = "sha256-uBppM4w9GlMgYqKFGw1Rcjvq+mnU04K3E74jCgK9YYo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "teletype"
-  ];
+  pythonImportsCheck = [ "teletype" ];
 
   meta = with lib; {
-    description = "A high-level cross platform tty library";
+    description = "High-level cross platform tty library";
     homepage = "https://github.com/jkwill87/teletype";
     license = licenses.mit;
     maintainers = with maintainers; [ urlordjames ];
diff --git a/pkgs/development/python-modules/telfhash/default.nix b/pkgs/development/python-modules/telfhash/default.nix
index f2f403765006c..18b67b6bf5022 100644
--- a/pkgs/development/python-modules/telfhash/default.nix
+++ b/pkgs/development/python-modules/telfhash/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, capstone
-, packaging
-, pyelftools
-, tlsh
-, nose
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  capstone,
+  packaging,
+  pyelftools,
+  tlsh,
+  setuptools,
 }:
 buildPythonPackage rec {
   pname = "telfhash";
   version = "0.9.8";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "trendmicro";
@@ -22,28 +23,23 @@ buildPythonPackage rec {
   # The tlsh library's name is just "tlsh"
   postPatch = ''
     substituteInPlace requirements.txt \
-       --replace "python-tlsh" "tlsh" \
-       --replace "py-tlsh" "tlsh"
+       --replace-fail "python-tlsh" "tlsh" \
+       --replace-fail "py-tlsh" "tlsh" \
+       --replace-fail "nose>=1.3.7" ""
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     capstone
     pyelftools
     tlsh
     packaging
   ];
 
-  nativeCheckInputs = [
-    nose
-  ];
+  doCheck = false; # no tests
 
-  checkPhase = ''
-    nosetests
-  '';
-
-  pythonImportsCheck = [
-    "telfhash"
-  ];
+  pythonImportsCheck = [ "telfhash" ];
 
   meta = with lib; {
     description = "Symbol hash for ELF files";
diff --git a/pkgs/development/python-modules/tellduslive/default.nix b/pkgs/development/python-modules/tellduslive/default.nix
index b367c5d4417e1..32382d635c7d9 100644
--- a/pkgs/development/python-modules/tellduslive/default.nix
+++ b/pkgs/development/python-modules/tellduslive/default.nix
@@ -1,44 +1,46 @@
-{ lib
-, buildPythonPackage
-, docopt
-, fetchFromGitHub
-, requests
-, requests-oauthlib
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  docopt,
+  fetchFromGitHub,
+  requests,
+  requests-oauthlib,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "tellduslive";
-  version = "0.10.11";
-  format = "setuptools";
+  version = "0.10.12";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "molobrakos";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "0aqhj6fq2z2qb4jyk23ygjicf5nlj8lkya7blkyqb7jra5k1gyg0";
+    repo = "tellduslive";
+    rev = "refs/tags/v${version}";
+    sha256 = "sha256-fWL+VSvoT+dT0jzD8DZEMxzTlqj4TYGCJPLpeui5q64=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     docopt
     requests
     requests-oauthlib
   ];
 
-  # Project has no tests
+  # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "tellduslive"
-  ];
+  pythonImportsCheck = [ "tellduslive" ];
 
   meta = with lib; {
     description = "Python module to communicate with Telldus Live";
-    mainProgram = "tellduslive";
     homepage = "https://github.com/molobrakos/tellduslive";
-    license = with licenses; [ unlicense ];
+    license = licenses.unlicense;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "tellduslive";
   };
 }
diff --git a/pkgs/development/python-modules/temescal/default.nix b/pkgs/development/python-modules/temescal/default.nix
index 2c19ab2844ad8..c7a824b92c2ee 100644
--- a/pkgs/development/python-modules/temescal/default.nix
+++ b/pkgs/development/python-modules/temescal/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pycryptodome
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pycryptodome,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-MfTftheNj8zI3iXIIJU+jy9xikvX9eO58LA0NCMJBnY=";
   };
 
-  propagatedBuildInputs = [
-    pycryptodome
-  ];
+  propagatedBuildInputs = [ pycryptodome ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "temescal"
-  ];
+  pythonImportsCheck = [ "temescal" ];
 
   meta = with lib; {
     description = "Module for interacting with LG speaker systems";
diff --git a/pkgs/development/python-modules/temperusb/default.nix b/pkgs/development/python-modules/temperusb/default.nix
index 79363508ecbf4..2dc1a2af1ffdb 100644
--- a/pkgs/development/python-modules/temperusb/default.nix
+++ b/pkgs/development/python-modules/temperusb/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pyusb
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pyusb,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-PwKHT1zzVn+nmxO/R+aK+029WaaHBo7FyVV4eQtHhbM=";
   };
 
-  propagatedBuildInputs = [
-    pyusb
-  ];
+  propagatedBuildInputs = [ pyusb ];
 
   # Module has no tests which are shipped and source is not tagged
   doCheck = false;
 
-  pythonImportsCheck = [
-    "temperusb"
-  ];
+  pythonImportsCheck = [ "temperusb" ];
 
   meta = with lib; {
     description = "Library to read TEMPer USB HID devices";
diff --git a/pkgs/development/python-modules/tempest/default.nix b/pkgs/development/python-modules/tempest/default.nix
index ad8ad53dafadf..fcae826816fb8 100644
--- a/pkgs/development/python-modules/tempest/default.nix
+++ b/pkgs/development/python-modules/tempest/default.nix
@@ -1,77 +1,80 @@
-{ lib
-, buildPythonPackage
-, defusedxml
-, fetchPypi
-, pbr
-, cliff
-, jsonschema
-, testtools
-, paramiko
-, netaddr
-, oslo-concurrency
-, oslo-config
-, oslo-log
-, stestr
-, oslo-serialization
-, oslo-utils
-, fixtures
-, pythonOlder
-, pyyaml
-, subunit
-, stevedore
-, prettytable
-, urllib3
-, debtcollector
-, hacking
-, oslotest
-, bash
-, python
-, setuptools
+{
+  lib,
+  bash,
+  buildPythonPackage,
+  cliff,
+  debtcollector,
+  defusedxml,
+  fetchPypi,
+  fixtures,
+  hacking,
+  jsonschema,
+  netaddr,
+  oslo-concurrency,
+  oslo-config,
+  oslo-log,
+  oslo-serialization,
+  oslo-utils,
+  oslotest,
+  paramiko,
+  pbr,
+  prettytable,
+  python,
+  pythonOlder,
+  pyyaml,
+  setuptools,
+  stestr,
+  stevedore,
+  subunit,
+  testscenarios,
+  testtools,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "tempest";
-  version = "38.0.0";
+  version = "40.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-2WmSN4NrH5/y5iAuYaaVuZkuh1ym14jFj7OXw8Jfxtc=";
+    hash = "sha256-s2EvD1TDoRoKrvpRc6h3P7xRyT941nW1hveucXDLB4w=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  pythonRelaxDeps = [ "defusedxml" ];
 
-  propagatedBuildInputs = [
-    pbr
+  build-system = [ setuptools ];
+
+  dependencies = [
     cliff
+    debtcollector
     defusedxml
+    fixtures
     jsonschema
-    testtools
-    paramiko
     netaddr
     oslo-concurrency
     oslo-config
     oslo-log
-    stestr
     oslo-serialization
     oslo-utils
-    fixtures
+    paramiko
+    pbr
+    prettytable
     pyyaml
-    subunit
+    stestr
     stevedore
-    prettytable
+    subunit
+    testscenarios
+    testtools
     urllib3
-    debtcollector
   ];
 
   nativeCheckInputs = [
-    stestr
     hacking
     oslotest
+    stestr
   ];
 
   checkPhase = ''
@@ -90,9 +93,10 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "tempest" ];
 
   meta = with lib; {
-    description = "An OpenStack integration test suite that runs against live OpenStack cluster and validates an OpenStack deployment";
+    description = "OpenStack integration test suite that runs against live OpenStack cluster and validates an OpenStack deployment";
     homepage = "https://github.com/openstack/tempest";
     license = licenses.asl20;
+    mainProgram = "tempest";
     maintainers = teams.openstack.members;
   };
 }
diff --git a/pkgs/development/python-modules/tempita/default.nix b/pkgs/development/python-modules/tempita/default.nix
deleted file mode 100644
index d7e2c91357721..0000000000000
--- a/pkgs/development/python-modules/tempita/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ lib, buildPythonPackage, fetchFromGitHub, nose }:
-
-buildPythonPackage {
-  version = "0.5.3-2016-09-28";
-  format = "setuptools";
-  pname = "tempita";
-
-  src = fetchFromGitHub {
-    owner = "agramfort";
-    repo = "tempita";
-    rev = "47414a7c6e46a9a9afe78f0bce2ea299fa84d10";
-    sha256 = "0f33jjjs5rvp7ar2j6ggyfykcrsrn04jaqcq71qfvycf6b7nw3rn";
-  };
-
-  buildInputs = [ nose ];
-
-  meta = {
-    homepage = "https://github.com/agramfort/tempita";
-    description = "A very small text templating language";
-    license = lib.licenses.mit;
-  };
-}
diff --git a/pkgs/development/python-modules/templateflow/default.nix b/pkgs/development/python-modules/templateflow/default.nix
index b46387740b51f..83d9ccfb885c6 100644
--- a/pkgs/development/python-modules/templateflow/default.nix
+++ b/pkgs/development/python-modules/templateflow/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools-scm
-, nipreps-versions
-, pybids
-, requests
-, tqdm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools-scm,
+  nipreps-versions,
+  pybids,
+  requests,
+  tqdm,
 }:
 
 buildPythonPackage rec {
@@ -31,7 +32,7 @@ buildPythonPackage rec {
     tqdm
   ];
 
-  doCheck = false;  # most tests try to download data
+  doCheck = false; # most tests try to download data
   #pythonImportsCheck = [ "templateflow" ];  # touches $HOME/.cache, hence needs https://github.com/NixOS/nixpkgs/pull/120300
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/tempora/default.nix b/pkgs/development/python-modules/tempora/default.nix
index b33d72b99b790..8ac06879c1052 100644
--- a/pkgs/development/python-modules/tempora/default.nix
+++ b/pkgs/development/python-modules/tempora/default.nix
@@ -1,39 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, freezegun
-, jaraco-functools
-, pytest-freezegun
-, pytestCheckHook
-, pythonOlder
-, pytz
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jaraco-functools,
+  pytest-freezer,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "tempora";
-  version = "5.5.1";
-  format = "pyproject";
+  version = "5.7.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-ortR4hIZdtkxNHs+QzkXw2S4P91fZO8nM2yGW/H7D3U=";
+  src = fetchFromGitHub {
+    owner = "jaraco";
+    repo = "tempora";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-M6nWKYvgn4tk2diiTDAYb1uQdP8H1M8yqhsFLJ9H7HU=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     jaraco-functools
-    pytz
+    python-dateutil
   ];
 
   nativeCheckInputs = [
-    freezegun
-    pytest-freezegun
+    pytest-freezer
     pytestCheckHook
   ];
 
@@ -50,6 +49,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/jaraco/tempora";
     changelog = "https://github.com/jaraco/tempora/blob/v${version}/NEWS.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/tenacity/default.nix b/pkgs/development/python-modules/tenacity/default.nix
index 5fe70090feeac..5ac8b3e2c9637 100644
--- a/pkgs/development/python-modules/tenacity/default.nix
+++ b/pkgs/development/python-modules/tenacity/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pbr
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
-, tornado
-, typeguard
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pbr,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  tornado,
+  typeguard,
 }:
 
 buildPythonPackage rec {
   pname = "tenacity";
-  version = "8.2.3";
+  version = "8.4.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-U5jvDXjmP0AAfB+0wL/5bhkROU0vqNGU93YZwF/2zIo=";
+    hash = "sha256-VLFBK4eN334fFXfNSVJ7rYze8yQhvVmb6sDGw/EFgv0=";
   };
 
   nativeBuildInputs = [
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     typeguard
   ];
 
-  pythonImportsCheck = [
-    "tenacity"
-  ];
+  pythonImportsCheck = [ "tenacity" ];
 
   meta = with lib; {
     homepage = "https://github.com/jd/tenacity";
diff --git a/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix b/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix
index 502e791ddd309..48131db46a68f 100644
--- a/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix
+++ b/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "tencentcloud-sdk-python";
-  version = "3.0.1139";
+  version = "3.0.1241";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "TencentCloud";
     repo = "tencentcloud-sdk-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-DH+15I/kMuUbRU8jYGLaDWxO7zumJ7Bh5yze3mmrh/M=";
+    hash = "sha256-vL6FcD3M8M9RYJZt4LvQOD0Wr6i8KsAQSokjB/o4Lqw=";
   };
 
   build-system = [ setuptools ];
@@ -30,12 +30,7 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "tencentcloud" ];
 
-  pytestFlagsArray = [
-    # Other tests require credentials
-    "tests/unit/test_deserialize_warning.py"
-    "tests/unit/test_import.py"
-    "tests/unit/test_serialization.py"
-  ];
+  pytestFlagsArray = [ "tests/unit/" ];
 
   meta = with lib; {
     description = "Tencent Cloud API 3.0 SDK for Python";
diff --git a/pkgs/development/python-modules/tendo/default.nix b/pkgs/development/python-modules/tendo/default.nix
index fe02bc0aed29b..3c8dae032c694 100644
--- a/pkgs/development/python-modules/tendo/default.nix
+++ b/pkgs/development/python-modules/tendo/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -31,13 +32,9 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "tendo"
-  ];
+  pythonImportsCheck = [ "tendo" ];
 
   meta = with lib; {
     description = "Adds basic functionality that is not provided by Python";
diff --git a/pkgs/development/python-modules/tensorboard-data-server/default.nix b/pkgs/development/python-modules/tensorboard-data-server/default.nix
index 6277049f92a0e..ef0662c4c2dac 100644
--- a/pkgs/development/python-modules/tensorboard-data-server/default.nix
+++ b/pkgs/development/python-modules/tensorboard-data-server/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+}:
 
 buildPythonPackage rec {
   pname = "tensorboard-data-server";
diff --git a/pkgs/development/python-modules/tensorboard-plugin-profile/default.nix b/pkgs/development/python-modules/tensorboard-plugin-profile/default.nix
index 158437a93d1fc..9719d1d0c6a0b 100644
--- a/pkgs/development/python-modules/tensorboard-plugin-profile/default.nix
+++ b/pkgs/development/python-modules/tensorboard-plugin-profile/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, setuptools
-, gviz-api
-, protobuf
-, werkzeug
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools,
+  gviz-api,
+  protobuf,
+  werkzeug,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-t9AZg0BGjDcOxtoRBHZO0joIgLHpoKqEUY4pxmw8sjg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     gviz-api
@@ -31,7 +30,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "Profile Tensorboard Plugin.";
+    description = "Profile Tensorboard Plugin";
     homepage = "http://tensorflow.org";
     license = licenses.asl20;
     maintainers = with maintainers; [ ndl ];
diff --git a/pkgs/development/python-modules/tensorboard-plugin-wit/default.nix b/pkgs/development/python-modules/tensorboard-plugin-wit/default.nix
index ec4a63f65d437..4a5760e3e92ed 100644
--- a/pkgs/development/python-modules/tensorboard-plugin-wit/default.nix
+++ b/pkgs/development/python-modules/tensorboard-plugin-wit/default.nix
@@ -1,4 +1,7 @@
-{ lib, fetchPypi, buildPythonPackage
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
 }:
 
 buildPythonPackage rec {
@@ -14,7 +17,7 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "What-If Tool TensorBoard plugin.";
+    description = "What-If Tool TensorBoard plugin";
     homepage = "http://tensorflow.org";
     license = licenses.asl20;
     maintainers = with maintainers; [ ndl ];
diff --git a/pkgs/development/python-modules/tensorboard/default.nix b/pkgs/development/python-modules/tensorboard/default.nix
index 9fdc3bb711922..2c09edbf60a4f 100644
--- a/pkgs/development/python-modules/tensorboard/default.nix
+++ b/pkgs/development/python-modules/tensorboard/default.nix
@@ -1,20 +1,20 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, pythonRelaxDepsHook
-, numpy
-, wheel
-, werkzeug
-, protobuf
-, grpcio
-, markdown
-, absl-py
-, google-auth-oauthlib
-, setuptools
-, tensorboard-data-server
-, tensorboard-plugin-wit
-, tensorboard-plugin-profile
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
+  numpy,
+  wheel,
+  werkzeug,
+  protobuf,
+  grpcio,
+  markdown,
+  absl-py,
+  google-auth-oauthlib,
+  setuptools,
+  tensorboard-data-server,
+  tensorboard-plugin-wit,
+  tensorboard-plugin-profile,
 }:
 
 # tensorflow/tensorboard is built from a downloaded wheel, because
@@ -23,7 +23,7 @@
 
 buildPythonPackage rec {
   pname = "tensorboard";
-  version = "2.16.2";
+  version = "2.17.0";
   format = "wheel";
   disabled = pythonOlder "3.9";
 
@@ -31,12 +31,9 @@ buildPythonPackage rec {
     inherit pname version format;
     dist = "py3";
     python = "py3";
-    hash = "sha256-nytOfa2GZnYVwOXNBy8eqEA/wDKimfAHLW90hVd1zEU=";
+    hash = "sha256-hZpJmpsftooFiFiWRIZicQC3H8shZGhhxh0xhGpkePs=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   pythonRelaxDeps = [
     "google-auth-oauthlib"
diff --git a/pkgs/development/python-modules/tensorboardx/default.nix b/pkgs/development/python-modules/tensorboardx/default.nix
index 820b00744195d..aab6bc7e9df6a 100644
--- a/pkgs/development/python-modules/tensorboardx/default.nix
+++ b/pkgs/development/python-modules/tensorboardx/default.nix
@@ -1,19 +1,20 @@
-{ boto3
-, buildPythonPackage
-, crc32c
-, fetchFromGitHub
-, lib
-, matplotlib
-, moto
-, numpy
-, protobuf
-, pytestCheckHook
-, torch
-, setuptools-scm
-, soundfile
-, stdenv
-, tensorboard
-, torchvision
+{
+  boto3,
+  buildPythonPackage,
+  crc32c,
+  fetchFromGitHub,
+  lib,
+  matplotlib,
+  moto,
+  numpy,
+  protobuf,
+  pytestCheckHook,
+  torch,
+  setuptools-scm,
+  soundfile,
+  stdenv,
+  tensorboard,
+  torchvision,
 }:
 
 buildPythonPackage rec {
@@ -54,16 +55,18 @@ buildPythonPackage rec {
     torchvision
   ];
 
-  disabledTests = [
-    # ImportError: Visdom visualization requires installation of Visdom
-    "test_TorchVis"
-    # Requires network access (FileNotFoundError: [Errno 2] No such file or directory: 'wget')
-    "test_onnx_graph"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # Fails with a mysterious error in pytorch:
-    # RuntimeError: required keyword attribute 'name' has the wrong type
-    "test_pytorch_graph"
-  ];
+  disabledTests =
+    [
+      # ImportError: Visdom visualization requires installation of Visdom
+      "test_TorchVis"
+      # Requires network access (FileNotFoundError: [Errno 2] No such file or directory: 'wget')
+      "test_onnx_graph"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Fails with a mysterious error in pytorch:
+      # RuntimeError: required keyword attribute 'name' has the wrong type
+      "test_pytorch_graph"
+    ];
 
   disabledTestPaths = [
     # we are not interested in linting errors
@@ -79,7 +82,10 @@ buildPythonPackage rec {
     downloadPage = "https://github.com/lanpa/tensorboardX";
     changelog = "https://github.com/lanpa/tensorboardX/blob/${src.rev}/HISTORY.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ lebastr akamaus ];
+    maintainers = with maintainers; [
+      lebastr
+      akamaus
+    ];
     platforms = platforms.all;
   };
 }
diff --git a/pkgs/development/python-modules/tensordict/default.nix b/pkgs/development/python-modules/tensordict/default.nix
index 6c64ca00c5ee5..1ad591e13be6b 100644
--- a/pkgs/development/python-modules/tensordict/default.nix
+++ b/pkgs/development/python-modules/tensordict/default.nix
@@ -1,21 +1,29 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, torch
-, wheel
-, which
-, cloudpickle
-, numpy
-, h5py
-, pytestCheckHook
-, stdenv
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+  torch,
+  which,
+
+  # dependencies
+  cloudpickle,
+  numpy,
+  orjson,
+
+  # checks
+  h5py,
+  pytestCheckHook,
+
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "tensordict";
-  version = "0.3.1";
+  version = "0.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,25 +32,23 @@ buildPythonPackage rec {
     owner = "pytorch";
     repo = "tensordict";
     rev = "refs/tags/v${version}";
-    hash = "sha256-eCx1r7goqOdGX/0mSGCiLhdGQTh4Swa5aFiLSsL56p0=";
+    hash = "sha256-jnRlN9gefR77pioIXf0qM1CP6EtpeQkBvVIecGkb/pw=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     torch
-    wheel
     which
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cloudpickle
     numpy
+    orjson
     torch
   ];
 
-  pythonImportsCheck = [
-    "tensordict"
-  ];
+  pythonImportsCheck = [ "tensordict" ];
 
   # We have to delete the source because otherwise it is used instead of the installed package.
   preCheck = ''
@@ -54,23 +60,51 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  # RuntimeError: internal error
-  disabledTests = lib.optionals (stdenv.hostPlatform.system == "aarch64-linux") [
-    "test_add_scale_sequence"
-    "test_modules"
-    "test_setattr"
-  ];
+  disabledTests =
+    [
+      # Hangs forever
+      "test_copy_onto"
+
+      # EOFError (MPI related)
+      # AssertionError: assert tensor(False)
+      # +  where tensor(False) = <built-in method all of Tensor object at 0x7ffe49bf87d0>()
+      "test_mp"
+
+      # torch._dynamo.exc.BackendCompilerFailed
+      # Requires a more recent version of triton
+      # Re-enable when https://github.com/NixOS/nixpkgs/pull/328247 is merged
+      "test_functional"
+      "test_linear"
+      "test_seq"
+      "test_seq_lmbda"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.system == "aarch64-linux") [
+      # RuntimeError: internal error
+      "test_add_scale_sequence"
+      "test_modules"
+      "test_setattr"
+
+      # _queue.Empty errors in multiprocessing tests
+      "test_isend"
+
+      # hangs forever
+      "test_map_iter_interrupt_early"
+    ];
+
+  disabledTestPaths = lib.optionals stdenv.hostPlatform.isDarwin [
+    # torch._dynamo.exc.BackendCompilerFailed: backend='inductor' raised:
+    # OpenMP support not found.
+    "test/test_compile.py"
 
-  # ModuleNotFoundError: No module named 'torch._C._distributed_c10d'; 'torch._C' is not a package
-  disabledTestPaths = lib.optionals stdenv.isDarwin [
+    # ModuleNotFoundError: No module named 'torch._C._distributed_c10d'; 'torch._C' is not a package
     "test/test_distributed.py"
   ];
 
-  meta = with lib; {
-    description = "A pytorch dedicated tensor container";
+  meta = {
+    description = "Pytorch dedicated tensor container";
     changelog = "https://github.com/pytorch/tensordict/releases/tag/v${version}";
     homepage = "https://github.com/pytorch/tensordict";
-    license = licenses.mit;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/tensorflow-datasets/default.nix b/pkgs/development/python-modules/tensorflow-datasets/default.nix
index 8440eb58f4fc9..15a8115c20366 100644
--- a/pkgs/development/python-modules/tensorflow-datasets/default.nix
+++ b/pkgs/development/python-modules/tensorflow-datasets/default.nix
@@ -1,49 +1,50 @@
-{ apache-beam
-, array-record
-, attrs
-, beautifulsoup4
-, buildPythonPackage
-, click
-, datasets
-, dill
-, dm-tree
-, fetchFromGitHub
-, ffmpeg
-, future
-, imagemagick
-, importlib-resources
-, jax
-, jaxlib
-, jinja2
-, langdetect
-, lib
-, lxml
-, matplotlib
-, mwparserfromhell
-, mwxml
-, networkx
-, nltk
-, numpy
-, opencv4
-, pandas
-, pillow
-, promise
-, protobuf
-, psutil
-, pycocotools
-, pydub
-, pytest-xdist
-, pytestCheckHook
-, requests
-, scikit-image
-, scipy
-, six
-, tensorflow
-, tensorflow-metadata
-, termcolor
-, tifffile
-, tqdm
-, zarr
+{
+  apache-beam,
+  array-record,
+  attrs,
+  beautifulsoup4,
+  buildPythonPackage,
+  click,
+  datasets,
+  dill,
+  dm-tree,
+  fetchFromGitHub,
+  ffmpeg,
+  future,
+  imagemagick,
+  importlib-resources,
+  jax,
+  jaxlib,
+  jinja2,
+  langdetect,
+  lib,
+  lxml,
+  matplotlib,
+  mwparserfromhell,
+  mwxml,
+  networkx,
+  nltk,
+  numpy,
+  opencv4,
+  pandas,
+  pillow,
+  promise,
+  protobuf,
+  psutil,
+  pycocotools,
+  pydub,
+  pytest-xdist,
+  pytestCheckHook,
+  requests,
+  scikit-image,
+  scipy,
+  six,
+  tensorflow,
+  tensorflow-metadata,
+  termcolor,
+  tifffile,
+  tqdm,
+  zarr,
 }:
 
 buildPythonPackage rec {
@@ -81,9 +82,7 @@ buildPythonPackage rec {
     tqdm
   ];
 
-  pythonImportsCheck = [
-    "tensorflow_datasets"
-  ];
+  pythonImportsCheck = [ "tensorflow_datasets" ];
 
   nativeCheckInputs = [
     apache-beam
diff --git a/pkgs/development/python-modules/tensorflow-estimator/bin.nix b/pkgs/development/python-modules/tensorflow-estimator/bin.nix
index c7d8e4d630be9..1acfcec9a8780 100644
--- a/pkgs/development/python-modules/tensorflow-estimator/bin.nix
+++ b/pkgs/development/python-modules/tensorflow-estimator/bin.nix
@@ -1,27 +1,33 @@
-{ lib, fetchPypi, buildPythonPackage
-, numpy
-, absl-py
-, mock
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  numpy,
+  absl-py,
+  mock,
 }:
 
 buildPythonPackage rec {
   pname = "tensorflow-estimator";
-  version = "2.11.0";
+  version = "2.15.0";
   format = "wheel";
 
   src = fetchPypi {
     pname = "tensorflow_estimator";
     inherit version format;
-    hash = "sha256-6jtkrP/z2aJE8GF4yb3ty90/Eltn0IiNuoIpSY0GRos=";
+    hash = "sha256-rt8h7sf7LckRUPyRoc4SvETbtyJ4oItY55/4fJ4o8VM=";
   };
 
-  propagatedBuildInputs = [ mock numpy absl-py ];
+  propagatedBuildInputs = [
+    mock
+    numpy
+    absl-py
+  ];
 
   meta = with lib; {
-    description = "TensorFlow Estimator is a high-level API that encapsulates model training, evaluation, prediction, and exporting.";
+    description = "TensorFlow Estimator is a high-level API that encapsulates model training, evaluation, prediction, and exporting";
     homepage = "http://tensorflow.org";
     license = licenses.asl20;
     maintainers = with maintainers; [ jyp ];
   };
 }
-
diff --git a/pkgs/development/python-modules/tensorflow-metadata/default.nix b/pkgs/development/python-modules/tensorflow-metadata/default.nix
index 0f11461eb9d66..14a1d00dc4503 100644
--- a/pkgs/development/python-modules/tensorflow-metadata/default.nix
+++ b/pkgs/development/python-modules/tensorflow-metadata/default.nix
@@ -1,9 +1,10 @@
-{ absl-py
-, buildPythonPackage
-, fetchFromGitHub
-, googleapis-common-protos
-, protobuf
-, lib
+{
+  absl-py,
+  buildPythonPackage,
+  fetchFromGitHub,
+  googleapis-common-protos,
+  protobuf,
+  lib,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-ZfX25CaV+tZVdas+n7O6Gqv1GxOP1iwippIXxfhcOfg=";
   };
 
-  patches = [
-    ./build.patch
-  ];
+  patches = [ ./build.patch ];
 
   postPatch = ''
     substituteInPlace setup.py \
@@ -44,9 +43,7 @@ buildPythonPackage rec {
   # has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "tensorflow_metadata"
-  ];
+  pythonImportsCheck = [ "tensorflow_metadata" ];
 
   meta = with lib; {
     description = "Standard representations for metadata that are useful when training machine learning models with TensorFlow";
diff --git a/pkgs/development/python-modules/tensorflow-probability/default.nix b/pkgs/development/python-modules/tensorflow-probability/default.nix
index 769a4969fc2dd..7b059969ebb6d 100644
--- a/pkgs/development/python-modules/tensorflow-probability/default.nix
+++ b/pkgs/development/python-modules/tensorflow-probability/default.nix
@@ -1,33 +1,45 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, bazel_6
-, buildBazelPackage
-, buildPythonPackage
-, cctools
-, python
-, setuptools
-, wheel
-, absl-py
-, tensorflow
-, six
-, numpy
-, dm-tree
-, keras
-, decorator
-, cloudpickle
-, gast
-, hypothesis
-, scipy
-, pandas
-, mpmath
-, matplotlib
-, mock
-, pytest
+{
+  lib,
+  stdenv,
+
+  # bazel wheel
+  buildBazelPackage,
+  fetchFromGitHub,
+
+  # nativeBuildInputs
+  python,
+  setuptools,
+  wheel,
+  absl-py,
+
+  bazel_6,
+  cctools,
+
+  # python package
+  buildPythonPackage,
+
+  # dependencies
+  cloudpickle,
+  decorator,
+  dm-tree,
+  gast,
+  keras,
+  numpy,
+  six,
+  tensorflow,
+
+  # tests
+  hypothesis,
+  matplotlib,
+  mock,
+  mpmath,
+  pandas,
+  pytest,
+  scipy,
 }:
 
 let
-  version = "0.21.0";
+  version = "0.24.0";
   pname = "tensorflow-probability";
 
   # first build all binaries and generate setup.py using bazel
@@ -37,21 +49,21 @@ let
       owner = "tensorflow";
       repo = "probability";
       rev = "refs/tags/v${version}";
-      hash = "sha256-DsJd1E5n86xNS7Ci0DXxoUxQ9jH8OwTZq2UuLlQtMUU=";
+      hash = "sha256-V6aw4NtGOHlvcbgLWMH29x81eck1PyzV93ANelvpL4c=";
     };
     nativeBuildInputs = [
+      absl-py
       # needed to create the output wheel in installPhase
       python
       setuptools
-      wheel
-      absl-py
       tensorflow
+      wheel
     ];
 
     bazel = bazel_6;
 
     bazelTargets = [ ":pip_pkg" ];
-    LIBTOOL = lib.optionalString stdenv.isDarwin "${cctools}/bin/libtool";
+    LIBTOOL = lib.optionalString stdenv.hostPlatform.isDarwin "${cctools}/bin/libtool";
 
     fetchAttrs = {
       sha256 = "sha256-TbWcWYidyXuAMgBnO2/k0NKCzc4wThf2uUeC3QxdBJY=";
@@ -82,27 +94,27 @@ buildPythonPackage {
 
   src = bazel-wheel;
 
-  propagatedBuildInputs = [
-    tensorflow
-    six
-    numpy
-    decorator
+  dependencies = [
     cloudpickle
-    gast
+    decorator
     dm-tree
+    gast
     keras
+    numpy
+    six
+    tensorflow
   ];
 
   # Listed here:
   # https://github.com/tensorflow/probability/blob/f3777158691787d3658b5e80883fe1a933d48989/testing/dependency_install_lib.sh#L83
   nativeCheckInputs = [
     hypothesis
-    pytest
-    scipy
-    pandas
-    mpmath
     matplotlib
     mock
+    mpmath
+    pandas
+    pytest
+    scipy
   ];
 
   # Ideally, we run unit tests with pytest, but in checkPhase, only the Bazel-build wheel is available.
@@ -113,10 +125,11 @@ buildPythonPackage {
   # sanity check
   pythonImportsCheck = [ "tensorflow_probability" ];
 
-  meta = with lib; {
+  meta = {
     description = "Library for probabilistic reasoning and statistical analysis";
     homepage = "https://www.tensorflow.org/probability/";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ GaetanLepage ];
+    changelog = "https://github.com/tensorflow/probability/releases/tag/v${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
   };
 }
diff --git a/pkgs/development/python-modules/tensorflow/bin.nix b/pkgs/development/python-modules/tensorflow/bin.nix
index 1040023619262..c187737eeeadc 100644
--- a/pkgs/development/python-modules/tensorflow/bin.nix
+++ b/pkgs/development/python-modules/tensorflow/bin.nix
@@ -1,62 +1,76 @@
-{ stdenv
-, lib
-, fetchurl
-, buildPythonPackage
-, isPy3k, pythonOlder, pythonAtLeast, astor
-, gast
-, google-pasta
-, wrapt
-, numpy
-, six
-, termcolor
-, packaging
-, protobuf
-, absl-py
-, grpcio
-, mock
-, scipy
-, wheel
-, jax
-, opt-einsum
-, tensorflow-estimator-bin
-, tensorboard
-, config
-, cudaSupport ? config.cudaSupport
-, cudaPackagesGoogle
-, zlib
-, python
-, keras-applications
-, keras-preprocessing
-, addOpenGLRunpath
-, astunparse
-, flatbuffers
-, h5py
-, typing-extensions
+{
+  stdenv,
+  lib,
+  fetchurl,
+  buildPythonPackage,
+  isPy3k,
+  astor,
+  gast,
+  google-pasta,
+  wrapt,
+  numpy,
+  six,
+  termcolor,
+  packaging,
+  protobuf,
+  absl-py,
+  grpcio,
+  mock,
+  scipy,
+  distutils,
+  wheel,
+  jax,
+  ml-dtypes,
+  opt-einsum,
+  tensorflow-estimator-bin,
+  tensorboard,
+  config,
+  cudaSupport ? config.cudaSupport,
+  cudaPackages,
+  zlib,
+  python,
+  keras-applications,
+  keras-preprocessing,
+  addDriverRunpath,
+  astunparse,
+  flatbuffers,
+  h5py,
+  llvmPackages,
+  typing-extensions,
 }:
 
-# We keep this binary build for two reasons:
+# We keep this binary build for three reasons:
 # - the source build doesn't work on Darwin.
 # - the source build is currently brittle and not easy to maintain
+# - the source build doesn't work on NVIDIA Jetson platforms
 
 # unsupported combination
-assert ! (stdenv.isDarwin && cudaSupport);
+assert !(stdenv.hostPlatform.isDarwin && cudaSupport);
 
 let
   packages = import ./binary-hashes.nix;
-  inherit (cudaPackagesGoogle) cudatoolkit cudnn;
-in buildPythonPackage {
+  inherit (cudaPackages) cudatoolkit cudnn;
+
+  isCudaJetson = cudaSupport && cudaPackages.cudaFlags.isJetsonBuild;
+  isCudaX64 = cudaSupport && stdenv.hostPlatform.isx86_64;
+in
+buildPythonPackage {
   pname = "tensorflow" + lib.optionalString cudaSupport "-gpu";
-  inherit (packages) version;
+  version = packages."${"version" + lib.optionalString isCudaJetson "_jetson"}";
   format = "wheel";
 
-  src = let
-    pyVerNoDot = lib.strings.stringAsChars (x: lib.optionalString (x != ".") x) python.pythonVersion;
-    platform = if stdenv.isDarwin then "mac" else "linux";
-    unit = if cudaSupport then "gpu" else "cpu";
-    key = "${platform}_py_${pyVerNoDot}_${unit}";
-  in fetchurl (packages.${key} or {});
+  src =
+    let
+      pyVerNoDot = lib.strings.stringAsChars (x: lib.optionalString (x != ".") x) python.pythonVersion;
+      platform = stdenv.system;
+      cuda = lib.optionalString cudaSupport (if isCudaJetson then "_jetson" else "_gpu");
+      key = "${platform}_${pyVerNoDot}${cuda}";
+    in
+    fetchurl (packages.${key} or (throw "tensoflow-bin: unsupported configuration: ${key}"));
+
+  buildInputs = [ llvmPackages.openmp ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     astunparse
     flatbuffers
     typing-extensions
@@ -64,7 +78,7 @@ in buildPythonPackage {
     protobuf
     numpy
     scipy
-    jax
+    (if isCudaX64 then jax else ml-dtypes)
     termcolor
     grpcio
     six
@@ -81,7 +95,13 @@ in buildPythonPackage {
     h5py
   ] ++ lib.optional (!isPy3k) mock;
 
-  nativeBuildInputs = [ wheel ] ++ lib.optionals cudaSupport [ addOpenGLRunpath ];
+  build-system =
+    [
+      distutils
+      wheel
+    ]
+    ++ lib.optionals cudaSupport [ addDriverRunpath ]
+    ++ lib.optionals isCudaJetson [ cudaPackages.autoAddCudaCompatRunpath ];
 
   preConfigure = ''
     unset SOURCE_DATE_EPOCH
@@ -91,7 +111,11 @@ in buildPythonPackage {
 
     pushd dist
 
-    orig_name="$(echo ./*.whl)"
+    for f in tensorflow-*+nv*.whl; do
+      # e.g. *nv24.07* -> *nv24.7*
+      mv "$f" "$(sed -E 's/(nv[0-9]+)\.0*([0-9]+)/\1.\2/' <<< "$f")"
+    done
+
     wheel unpack --dest unpacked ./*.whl
     rm ./*.whl
     (
@@ -113,7 +137,6 @@ in buildPythonPackage {
         -e "s/Requires-Dist: numpy (.*)/Requires-Dist: numpy/"
     )
     wheel pack ./unpacked/tensorflow*
-    mv *.whl $orig_name # avoid changes to the _os_arch.whl suffix
 
     popd
   '';
@@ -137,7 +160,7 @@ in buildPythonPackage {
 
       rpath = lib.makeLibraryPath (libpaths ++ cudapaths);
     in
-    lib.optionalString stdenv.isLinux ''
+    lib.optionalString stdenv.hostPlatform.isLinux ''
       # This is an array containing all the directories in the tensorflow2
       # package that contain .so files.
       #
@@ -168,6 +191,7 @@ in buildPythonPackage {
         "$out/${python.sitePackages}/tensorflow/python/saved_model"
         "$out/${python.sitePackages}/tensorflow/python/util"
         "$out/${python.sitePackages}/tensorflow/tsl/python/lib/core"
+        "$out/${python.sitePackages}/tensorflow.libs/"
         "${rpath}"
       )
 
@@ -180,7 +204,7 @@ in buildPythonPackage {
         chmod a+rx "$lib"
         patchelf --set-rpath "$rrPath" "$lib"
         ${lib.optionalString cudaSupport ''
-          addOpenGLRunpath "$lib"
+          addDriverRunpath "$lib"
         ''}
       done
     '';
@@ -199,16 +223,15 @@ in buildPythonPackage {
     "tensorflow.python.framework"
   ];
 
-  passthru = {
-    cudaPackages = cudaPackagesGoogle;
-  };
-
-  meta = with lib; {
+  meta = {
     description = "Computation using data flow graphs for scalable machine learning";
     homepage = "http://tensorflow.org";
-    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
-    license = licenses.asl20;
-    maintainers = with maintainers; [ jyp abbradar ];
-    platforms = [ "x86_64-linux" "x86_64-darwin" ];
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [
+      jyp
+      abbradar
+    ];
+    badPlatforms = [ "x86_64-darwin" ];
   };
 }
diff --git a/pkgs/development/python-modules/tensorflow/binary-hashes.nix b/pkgs/development/python-modules/tensorflow/binary-hashes.nix
index 9204d1652d032..2a6a31b540b26 100644
--- a/pkgs/development/python-modules/tensorflow/binary-hashes.nix
+++ b/pkgs/development/python-modules/tensorflow/binary-hashes.nix
@@ -1,39 +1,72 @@
 {
-version = "2.15.0";
-linux_py_39_cpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
-  sha256 = "01m5wn9wpywd2cscklr2h8wdsf3wzg11dhgl0nfj7a997v2bvlyg";
-};
-linux_py_310_cpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
-  sha256 = "0qjahvq9gd89cx2dwkb6gk3s947czmasp9cx1pqyw1x5f113s2zn";
-};
-linux_py_311_cpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
-  sha256 = "0w3jz7rpbf4r8hm91rjh666qyqflqy6x619fas1iqcgnfx8pjv7l";
-};
-linux_py_39_gpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-2.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
-  sha256 = "0ckij6jffsi6yvjfiysnwrfblhqm5g1f8dkw4i7n3dwndnanba1z";
-};
-linux_py_310_gpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-2.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
-  sha256 = "1y0cxsps4rkidc2c3apaf7vd9vsnjg5lpcq30bnrnzcvvx1inq7d";
-};
-linux_py_311_gpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-2.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
-  sha256 = "1z7bd4yrdxa7rq4k1fybbwnyhxf4rm9nwx15bpk2m53c5hmyrs6y";
-};
-mac_py_39_cpu = {
-  url = "https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.15.0-cp39-cp39-macosx_10_15_x86_64.whl";
-  sha256 = "1kqb5h4vs4jlhlqjmqvcg6jivccwqj1rgklrgrhvw09wzzhxvz1c";
-};
-mac_py_310_cpu = {
-  url = "https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.15.0-cp310-cp310-macosx_10_15_x86_64.whl";
-  sha256 = "0wmawdfhva9ixal7468c0rrx8qd7nzgkxy6i9k2s7cqn8c7qw94v";
-};
-mac_py_311_cpu = {
-  url = "https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.15.0-cp311-cp311-macosx_10_15_x86_64.whl";
-  sha256 = "0cigk43fabps7vskz4pfgmca3wa0545b15qridyqdbyp5ri1c1qy";
-};
+  version = "2.17.0";
+  version_jetson = "2.16.1+nv24.07";
+  x86_64-linux_39 = {
+    url = "https://storage.googleapis.com/tensorflow/versions/2.17.0/tensorflow_cpu-2.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
+    sha256 = "1aacn68b88bnnmpl1q0irih0avzm2lfyhwr3wldg144n5zljlrbx";
+  };
+  x86_64-linux_310 = {
+    url = "https://storage.googleapis.com/tensorflow/versions/2.17.0/tensorflow_cpu-2.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
+    sha256 = "0swhlncyaxdhygml1z246799lihfp72yxym845n46z4gm0s3hb86";
+  };
+  x86_64-linux_311 = {
+    url = "https://storage.googleapis.com/tensorflow/versions/2.17.0/tensorflow_cpu-2.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
+    sha256 = "11a2i78hdlmzfkzxpr3g07n6cr2l8jmjdz5h73ipvmjkw7zq7wz7";
+  };
+  x86_64-linux_312 = {
+    url = "https://storage.googleapis.com/tensorflow/versions/2.17.0/tensorflow_cpu-2.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
+    sha256 = "0v31jwlhbbv5aby3zlr1lk5gjwqq6y41vpf4mnwlj69jj0wlv3qw";
+  };
+  x86_64-linux_39_gpu = {
+    url = "https://storage.googleapis.com/tensorflow/versions/2.17.0/tensorflow-2.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
+    sha256 = "0xa1brn4207c0rcilnjmadmnmyyg5zb2dfh2p43whbpbdmsfds2a";
+  };
+  x86_64-linux_310_gpu = {
+    url = "https://storage.googleapis.com/tensorflow/versions/2.17.0/tensorflow-2.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
+    sha256 = "1v5l57rqpl6i00mzx2ksvdh1dx2gfis6vhnkcl550znbskg96z0l";
+  };
+  x86_64-linux_311_gpu = {
+    url = "https://storage.googleapis.com/tensorflow/versions/2.17.0/tensorflow-2.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
+    sha256 = "0ll55lwn6igja9xyin3ilf0v1yv5drw6y6d8vbx8zgay3dxpffc3";
+  };
+  x86_64-linux_312_gpu = {
+    url = "https://storage.googleapis.com/tensorflow/versions/2.17.0/tensorflow-2.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
+    sha256 = "1977hcs0rk1z2sjh7h8497m6r1yskzgj8nya50wyskgvdbmbzmqa";
+  };
+  aarch64-linux_39 = {
+    url = "https://storage.googleapis.com/tensorflow/versions/2.17.0/tensorflow-2.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+    sha256 = "0ird9r7s7pib89k9d66wdblkibh1n02li57a5vxbh8pdfkzprqyx";
+  };
+  aarch64-linux_310 = {
+    url = "https://storage.googleapis.com/tensorflow/versions/2.17.0/tensorflow-2.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+    sha256 = "05bgybxgwwrqvxcrvlrx3wdxy03vags2pis8lp1sn85g52n86rmk";
+  };
+  aarch64-linux_311 = {
+    url = "https://storage.googleapis.com/tensorflow/versions/2.17.0/tensorflow-2.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+    sha256 = "17cxqqpz1dk3iddi36c91arkanxb5xnfnsfcikhck9lglf7gk0na";
+  };
+  aarch64-linux_312 = {
+    url = "https://storage.googleapis.com/tensorflow/versions/2.17.0/tensorflow-2.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+    sha256 = "1zrscms9qkfpiscnl8c7ibfipwpw8jrdfvwh4wb69p9rxvqgxbbj";
+  };
+  aarch64-linux_310_jetson = {
+    url = "https://developer.download.nvidia.com/compute/redist/jp/v60/tensorflow/tensorflow-2.16.1+nv24.07-cp310-cp310-linux_aarch64.whl";
+    sha256 = "1ymdknl5v41z6z0wg068diici30am8vysg6b6sqxr8w6yk4aib42";
+  };
+  aarch64-darwin_39 = {
+    url = "https://storage.googleapis.com/tensorflow/versions/2.17.0/tensorflow-2.17.0-cp39-cp39-macosx_12_0_arm64.whl";
+    sha256 = "01a3hjnrgjp2i0ciwyy0gki41cy32prvjhr20zhlcjwbssarxy4p";
+  };
+  aarch64-darwin_310 = {
+    url = "https://storage.googleapis.com/tensorflow/versions/2.17.0/tensorflow-2.17.0-cp310-cp310-macosx_12_0_arm64.whl";
+    sha256 = "10ypfpmgppvvf3h7hl0m9i8ndjpk2n2v04jlaw907icviapfapsi";
+  };
+  aarch64-darwin_311 = {
+    url = "https://storage.googleapis.com/tensorflow/versions/2.17.0/tensorflow-2.17.0-cp311-cp311-macosx_12_0_arm64.whl";
+    sha256 = "0kd62x53fzv6zcxh4bggakiczxd8ghjrjr9hn6fi7yyc4in6vlp8";
+  };
+  aarch64-darwin_312 = {
+    url = "https://storage.googleapis.com/tensorflow/versions/2.17.0/tensorflow-2.17.0-cp312-cp312-macosx_12_0_arm64.whl";
+    sha256 = "0482xdh9mj65iz4651llfznbc268yqm0j9dvx9rfii97svyb867f";
+  };
 }
diff --git a/pkgs/development/python-modules/tensorflow/default.nix b/pkgs/development/python-modules/tensorflow/default.nix
index 069b87b76f843..69df6b23d50a9 100644
--- a/pkgs/development/python-modules/tensorflow/default.nix
+++ b/pkgs/development/python-modules/tensorflow/default.nix
@@ -1,35 +1,90 @@
-{ stdenv, bazel_5, buildBazelPackage, lib, fetchFromGitHub, symlinkJoin
-, addOpenGLRunpath, fetchpatch, fetchzip, linkFarm
-# Python deps
-, buildPythonPackage, pythonOlder, python
-# Python libraries
-, numpy, tensorboard, abseil-cpp, absl-py
-, packaging, setuptools, wheel, keras-preprocessing, google-pasta
-, opt-einsum, astunparse, h5py
-, termcolor, grpcio, six, wrapt, protobuf-python, tensorflow-estimator-bin
-, dill, flatbuffers-python, portpicker, tblib, typing-extensions
-# Common deps
-, git, pybind11, which, binutils, glibcLocales, cython, perl
-# Common libraries
-, jemalloc, mpi, gast, grpc, sqlite, boringssl, jsoncpp, nsync
-, curl, snappy, flatbuffers-core, icu, double-conversion, libpng, libjpeg_turbo, giflib, protobuf-core
-# Upstream by default includes cuda support since tensorflow 1.15. We could do
-# that in nix as well. It would make some things easier and less confusing, but
-# it would also make the default tensorflow package unfree. See
-# https://groups.google.com/a/tensorflow.org/forum/#!topic/developers/iRCt5m4qUz0
-, config
-, cudaSupport ? config.cudaSupport
-, cudaPackagesGoogle
-, cudaCapabilities ? cudaPackagesGoogle.cudaFlags.cudaCapabilities
-, mklSupport ? false, mkl
-, tensorboardSupport ? true
-# XLA without CUDA is broken
-, xlaSupport ? cudaSupport
-, sse42Support ? stdenv.hostPlatform.sse4_2Support
-, avx2Support  ? stdenv.hostPlatform.avx2Support
-, fmaSupport   ? stdenv.hostPlatform.fmaSupport
-# Darwin deps
-, Foundation, Security, cctools, llvmPackages
+{
+  stdenv,
+  bazel_5,
+  buildBazelPackage,
+  lib,
+  fetchFromGitHub,
+  symlinkJoin,
+  addDriverRunpath,
+  fetchpatch,
+  fetchzip,
+  linkFarm,
+  # Python deps
+  buildPythonPackage,
+  pythonAtLeast,
+  pythonOlder,
+  python,
+  # Python libraries
+  numpy,
+  tensorboard,
+  abseil-cpp,
+  absl-py,
+  packaging,
+  setuptools,
+  wheel,
+  keras-preprocessing,
+  google-pasta,
+  opt-einsum,
+  astunparse,
+  h5py,
+  termcolor,
+  grpcio,
+  six,
+  wrapt,
+  protobuf-python,
+  tensorflow-estimator-bin,
+  dill,
+  flatbuffers-python,
+  portpicker,
+  tblib,
+  typing-extensions,
+  # Common deps
+  git,
+  pybind11,
+  which,
+  binutils,
+  glibcLocales,
+  cython,
+  perl,
+  # Common libraries
+  jemalloc,
+  mpi,
+  gast,
+  grpc,
+  sqlite,
+  boringssl,
+  jsoncpp,
+  nsync,
+  curl,
+  snappy,
+  flatbuffers-core,
+  icu,
+  double-conversion,
+  libpng,
+  libjpeg_turbo,
+  giflib,
+  protobuf-core,
+  # Upstream by default includes cuda support since tensorflow 1.15. We could do
+  # that in nix as well. It would make some things easier and less confusing, but
+  # it would also make the default tensorflow package unfree. See
+  # https://groups.google.com/a/tensorflow.org/forum/#!topic/developers/iRCt5m4qUz0
+  config,
+  cudaSupport ? config.cudaSupport,
+  cudaPackages,
+  cudaCapabilities ? cudaPackages.cudaFlags.cudaCapabilities,
+  mklSupport ? false,
+  mkl,
+  tensorboardSupport ? true,
+  # XLA without CUDA is broken
+  xlaSupport ? cudaSupport,
+  sse42Support ? stdenv.hostPlatform.sse4_2Support,
+  avx2Support ? stdenv.hostPlatform.avx2Support,
+  fmaSupport ? stdenv.hostPlatform.fmaSupport,
+  # Darwin deps
+  Foundation,
+  Security,
+  cctools,
+  llvmPackages,
 }:
 
 let
@@ -50,36 +105,61 @@ let
   # __ZN4llvm11SmallPtrSetIPKNS_10AllocaInstELj8EED1Ev in any of the
   # translation units, so the build fails at link time
   stdenv =
-    if cudaSupport then cudaPackagesGoogle.backendStdenv
-    else if originalStdenv.isDarwin then llvmPackages.stdenv
-    else originalStdenv;
-  inherit (cudaPackagesGoogle) cudatoolkit nccl;
+    if cudaSupport then
+      cudaPackages.backendStdenv
+    else if originalStdenv.hostPlatform.isDarwin then
+      llvmPackages.stdenv
+    else
+      originalStdenv;
+  inherit (cudaPackages) cudatoolkit nccl;
   # use compatible cuDNN (https://www.tensorflow.org/install/source#gpu)
   # cudaPackages.cudnn led to this:
   # https://github.com/tensorflow/tensorflow/issues/60398
   cudnnAttribute = "cudnn_8_6";
-  cudnn = cudaPackagesGoogle.${cudnnAttribute};
+  cudnnMerged = symlinkJoin {
+    name = "cudnn-merged";
+    paths = [
+      (lib.getDev cudaPackages.${cudnnAttribute})
+      (lib.getLib cudaPackages.${cudnnAttribute})
+    ];
+  };
   gentoo-patches = fetchzip {
     url = "https://dev.gentoo.org/~perfinion/patches/tensorflow-patches-2.12.0.tar.bz2";
     hash = "sha256-SCRX/5/zML7LmKEPJkcM5Tebez9vv/gmE4xhT/jyqWs=";
   };
   protobuf-extra = linkFarm "protobuf-extra" [
-    { name = "include"; path = protobuf-core.src; }
+    {
+      name = "include";
+      path = protobuf-core.src;
+    }
   ];
 
   withTensorboard = (pythonOlder "3.6") || tensorboardSupport;
 
-  # FIXME: migrate to redist cudaPackages
-  cudatoolkit_joined = symlinkJoin {
-    name = "${cudatoolkit.name}-merged";
-    paths = [
-      cudatoolkit.lib
-      cudatoolkit.out
-    ] ++ lib.optionals (lib.versionOlder cudatoolkit.version "11") [
-      # for some reason some of the required libs are in the targets/x86_64-linux
-      # directory; not sure why but this works around it
-      "${cudatoolkit}/targets/${stdenv.system}"
-    ];
+  cudaComponents = with cudaPackages; [
+    (cuda_nvcc.__spliced.buildHost or cuda_nvcc)
+    (cuda_nvprune.__spliced.buildHost or cuda_nvprune)
+    cuda_cccl # block_load.cuh
+    cuda_cudart # cuda.h
+    cuda_cupti # cupti.h
+    cuda_nvcc # See https://github.com/google/jax/issues/19811
+    cuda_nvml_dev # nvml.h
+    cuda_nvtx # nvToolsExt.h
+    libcublas # cublas_api.h
+    libcufft # cufft.h
+    libcurand # curand.h
+    libcusolver # cusolver_common.h
+    libcusparse # cusparse.h
+  ];
+
+  cudatoolkitDevMerged = symlinkJoin {
+    name = "cuda-${cudaPackages.cudaVersion}-dev-merged";
+    paths = lib.concatMap (p: [
+      (lib.getBin p)
+      (lib.getDev p)
+      (lib.getLib p)
+      (lib.getOutput "static" p) # Makes for a very fat closure
+    ]) cudaComponents;
   };
 
   # Tensorflow expects bintools at hard-coded paths, e.g. /usr/bin/ar
@@ -96,9 +176,7 @@ let
   # Needed for _some_ system libraries, grep INCLUDEDIR.
   includes_joined = symlinkJoin {
     name = "tensorflow-deps-merged";
-    paths = [
-      jsoncpp
-    ];
+    paths = [ jsoncpp ];
   };
 
   tfFeature = x: if x then "1" else "0";
@@ -108,31 +186,31 @@ let
   variant = lib.optionalString cudaSupport "-gpu";
   pname = "tensorflow${variant}";
 
-  pythonEnv = python.withPackages (_:
-    [ # python deps needed during wheel build time (not runtime, see the buildPythonPackage part for that)
-      # This list can likely be shortened, but each trial takes multiple hours so won't bother for now.
-      absl-py
-      astunparse
-      dill
-      flatbuffers-python
-      gast
-      google-pasta
-      grpcio
-      h5py
-      keras-preprocessing
-      numpy
-      opt-einsum
-      packaging
-      protobuf-python
-      setuptools
-      six
-      tblib
-      tensorboard
-      tensorflow-estimator-bin
-      termcolor
-      typing-extensions
-      wheel
-      wrapt
+  pythonEnv = python.withPackages (_: [
+    # python deps needed during wheel build time (not runtime, see the buildPythonPackage part for that)
+    # This list can likely be shortened, but each trial takes multiple hours so won't bother for now.
+    absl-py
+    astunparse
+    dill
+    flatbuffers-python
+    gast
+    google-pasta
+    grpcio
+    h5py
+    keras-preprocessing
+    numpy
+    opt-einsum
+    packaging
+    protobuf-python
+    setuptools
+    six
+    tblib
+    tensorboard
+    tensorflow-estimator-bin
+    termcolor
+    typing-extensions
+    wheel
+    wrapt
   ]);
 
   rules_cc_darwin_patched = stdenv.mkDerivation {
@@ -195,15 +273,19 @@ let
       runHook postInstall
     '';
   };
-  bazel-build = if stdenv.isDarwin then _bazel-build.overrideAttrs (prev: {
-    bazelFlags = prev.bazelFlags ++ [
-      "--override_repository=rules_cc=${rules_cc_darwin_patched}"
-      "--override_repository=llvm-raw=${llvm-raw_darwin_patched}"
-    ];
-    preBuild = ''
-      export AR="${cctools}/bin/libtool"
-    '';
-  }) else _bazel-build;
+  bazel-build =
+    if stdenv.hostPlatform.isDarwin then
+      _bazel-build.overrideAttrs (prev: {
+        bazelFlags = prev.bazelFlags ++ [
+          "--override_repository=rules_cc=${rules_cc_darwin_patched}"
+          "--override_repository=llvm-raw=${llvm-raw_darwin_patched}"
+        ];
+        preBuild = ''
+          export AR="${cctools}/bin/libtool"
+        '';
+      })
+    else
+      _bazel-build;
 
   _bazel-build = buildBazelPackage.override { inherit stdenv; } {
     name = "${pname}-${version}";
@@ -220,92 +302,103 @@ let
     # https://gitweb.gentoo.org/repo/gentoo.git/tree/sci-libs/tensorflow
 
     nativeBuildInputs = [
-      which pythonEnv cython perl protobuf-core protobuf-extra
-    ] ++ lib.optional cudaSupport addOpenGLRunpath;
-
-    buildInputs = [
-      jemalloc
-      mpi
-      glibcLocales
-      git
-
-      # libs taken from system through the TF_SYS_LIBS mechanism
-      abseil-cpp
-      boringssl
-      curl
-      double-conversion
-      flatbuffers-core
-      giflib
-      grpc
-      # Necessary to fix the "`GLIBCXX_3.4.30' not found" error
-      (icu.override { inherit stdenv; })
-      jsoncpp
-      libjpeg_turbo
-      libpng
-      (pybind11.overridePythonAttrs (_: { inherit stdenv; }))
-      snappy
-      sqlite
-    ] ++ lib.optionals cudaSupport [
-      cudatoolkit
-      cudnn
-    ] ++ lib.optionals mklSupport [
-      mkl
-    ] ++ lib.optionals stdenv.isDarwin [
-      Foundation
-      Security
-    ] ++ lib.optionals (!stdenv.isDarwin) [
-      nsync
-    ];
+      which
+      pythonEnv
+      cython
+      perl
+      protobuf-core
+      protobuf-extra
+    ] ++ lib.optional cudaSupport addDriverRunpath;
+
+    buildInputs =
+      [
+        jemalloc
+        mpi
+        glibcLocales
+        git
+
+        # libs taken from system through the TF_SYS_LIBS mechanism
+        abseil-cpp
+        boringssl
+        curl
+        double-conversion
+        flatbuffers-core
+        giflib
+        grpc
+        # Necessary to fix the "`GLIBCXX_3.4.30' not found" error
+        (icu.override { inherit stdenv; })
+        jsoncpp
+        libjpeg_turbo
+        libpng
+        (pybind11.overridePythonAttrs (_: {
+          inherit stdenv;
+        }))
+        snappy
+        sqlite
+      ]
+      ++ lib.optionals cudaSupport [
+        cudatoolkit
+        cudnnMerged
+      ]
+      ++ lib.optionals mklSupport [ mkl ]
+      ++ lib.optionals stdenv.hostPlatform.isDarwin [
+        Foundation
+        Security
+      ]
+      ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ nsync ];
 
     # arbitrarily set to the current latest bazel version, overly careful
     TF_IGNORE_MAX_BAZEL_VERSION = true;
 
-    LIBTOOL = lib.optionalString stdenv.isDarwin "${cctools}/bin/libtool";
+    LIBTOOL = lib.optionalString stdenv.hostPlatform.isDarwin "${cctools}/bin/libtool";
 
     # Take as many libraries from the system as possible. Keep in sync with
     # list of valid syslibs in
     # https://github.com/tensorflow/tensorflow/blob/master/third_party/systemlibs/syslibs_configure.bzl
-    TF_SYSTEM_LIBS = lib.concatStringsSep "," ([
-      "absl_py"
-      "astor_archive"
-      "astunparse_archive"
-      "boringssl"
-      "com_google_absl"
-      # Not packaged in nixpkgs
-      # "com_github_googleapis_googleapis"
-      # "com_github_googlecloudplatform_google_cloud_cpp"
-      "com_github_grpc_grpc"
-      "com_google_protobuf"
-      # Fails with the error: external/org_tensorflow/tensorflow/core/profiler/utils/tf_op_utils.cc:46:49: error: no matching function for call to 're2::RE2::FullMatch(absl::lts_2020_02_25::string_view&, re2::RE2&)'
-      # "com_googlesource_code_re2"
-      "curl"
-      "cython"
-      "dill_archive"
-      "double_conversion"
-      "flatbuffers"
-      "functools32_archive"
-      "gast_archive"
-      "gif"
-      "hwloc"
-      "icu"
-      "jsoncpp_git"
-      "libjpeg_turbo"
-      "nasm"
-      "opt_einsum_archive"
-      "org_sqlite"
-      "pasta"
-      "png"
-      "pybind11"
-      "six_archive"
-      "snappy"
-      "tblib_archive"
-      "termcolor_archive"
-      "typing_extensions_archive"
-      "wrapt"
-      "zlib"
-    ] ++ lib.optionals (!stdenv.isDarwin) [
-      "nsync" # fails to build on darwin
-    ]);
+    TF_SYSTEM_LIBS = lib.concatStringsSep "," (
+      [
+        "absl_py"
+        "astor_archive"
+        "astunparse_archive"
+        "boringssl"
+        "com_google_absl"
+        # Not packaged in nixpkgs
+        # "com_github_googleapis_googleapis"
+        # "com_github_googlecloudplatform_google_cloud_cpp"
+        "com_github_grpc_grpc"
+        "com_google_protobuf"
+        # Fails with the error: external/org_tensorflow/tensorflow/core/profiler/utils/tf_op_utils.cc:46:49: error: no matching function for call to 're2::RE2::FullMatch(absl::lts_2020_02_25::string_view&, re2::RE2&)'
+        # "com_googlesource_code_re2"
+        "curl"
+        "cython"
+        "dill_archive"
+        "double_conversion"
+        "flatbuffers"
+        "functools32_archive"
+        "gast_archive"
+        "gif"
+        "hwloc"
+        "icu"
+        "jsoncpp_git"
+        "libjpeg_turbo"
+        "nasm"
+        "opt_einsum_archive"
+        "org_sqlite"
+        "pasta"
+        "png"
+        "pybind11"
+        "six_archive"
+        "snappy"
+        "tblib_archive"
+        "termcolor_archive"
+        "typing_extensions_archive"
+        "wrapt"
+        "zlib"
+      ]
+      ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
+        "nsync" # fails to build on darwin
+      ]
+    );
 
     INCLUDEDIR = "${includes_joined}/include";
 
@@ -326,7 +419,7 @@ let
     TF_NEED_MPI = tfFeature cudaSupport;
 
     TF_NEED_CUDA = tfFeature cudaSupport;
-    TF_CUDA_PATHS = lib.optionalString cudaSupport "${cudatoolkit_joined},${cudnn},${nccl}";
+    TF_CUDA_PATHS = lib.optionalString cudaSupport "${cudatoolkitDevMerged},${cudnnMerged},${lib.getLib nccl}";
     TF_CUDA_COMPUTE_CAPABILITIES = lib.concatStringsSep "," cudaCapabilities;
 
     # Needed even when we override stdenv: e.g. for ar
@@ -348,47 +441,51 @@ let
       ./protobuf_python.patch
       ./pybind11_protobuf_python_runtime_dep.patch
       ./pybind11_protobuf_newer_version.patch
-    ] ++ lib.optionals (stdenv.hostPlatform.system == "aarch64-darwin") [
-      ./absl_to_std.patch
-    ];
+    ] ++ lib.optionals (stdenv.hostPlatform.system == "aarch64-darwin") [ ./absl_to_std.patch ];
 
-    postPatch = ''
-      # bazel 3.3 should work just as well as bazel 3.1
-      rm -f .bazelversion
-      patchShebangs .
-    '' + lib.optionalString (stdenv.hostPlatform.system == "x86_64-darwin") ''
-      cat ${./com_google_absl_fix_macos.patch} >> third_party/absl/com_google_absl_fix_mac_and_nvcc_build.patch
-    '' + lib.optionalString (!withTensorboard) ''
-      # Tensorboard pulls in a bunch of dependencies, some of which may
-      # include security vulnerabilities. So we make it optional.
-      # https://github.com/tensorflow/tensorflow/issues/20280#issuecomment-400230560
-      sed -i '/tensorboard ~=/d' tensorflow/tools/pip_package/setup.py
-    '';
+    postPatch =
+      ''
+        # bazel 3.3 should work just as well as bazel 3.1
+        rm -f .bazelversion
+        patchShebangs .
+      ''
+      + lib.optionalString (stdenv.hostPlatform.system == "x86_64-darwin") ''
+        cat ${./com_google_absl_fix_macos.patch} >> third_party/absl/com_google_absl_fix_mac_and_nvcc_build.patch
+      ''
+      + lib.optionalString (!withTensorboard) ''
+        # Tensorboard pulls in a bunch of dependencies, some of which may
+        # include security vulnerabilities. So we make it optional.
+        # https://github.com/tensorflow/tensorflow/issues/20280#issuecomment-400230560
+        sed -i '/tensorboard ~=/d' tensorflow/tools/pip_package/setup.py
+      '';
 
     # https://github.com/tensorflow/tensorflow/pull/39470
     env.NIX_CFLAGS_COMPILE = toString [ "-Wno-stringop-truncation" ];
 
-    preConfigure = let
-      opt_flags = []
-        ++ lib.optionals sse42Support ["-msse4.2"]
-        ++ lib.optionals avx2Support ["-mavx2"]
-        ++ lib.optionals fmaSupport ["-mfma"];
-    in ''
-      patchShebangs configure
-
-      # dummy ldconfig
-      mkdir dummy-ldconfig
-      echo "#!${stdenv.shell}" > dummy-ldconfig/ldconfig
-      chmod +x dummy-ldconfig/ldconfig
-      export PATH="$PWD/dummy-ldconfig:$PATH"
-
-      export PYTHON_LIB_PATH="$NIX_BUILD_TOP/site-packages"
-      export CC_OPT_FLAGS="${lib.concatStringsSep " " opt_flags}"
-      mkdir -p "$PYTHON_LIB_PATH"
-
-      # To avoid mixing Python 2 and Python 3
-      unset PYTHONPATH
-    '';
+    preConfigure =
+      let
+        opt_flags =
+          [ ]
+          ++ lib.optionals sse42Support [ "-msse4.2" ]
+          ++ lib.optionals avx2Support [ "-mavx2" ]
+          ++ lib.optionals fmaSupport [ "-mfma" ];
+      in
+      ''
+        patchShebangs configure
+
+        # dummy ldconfig
+        mkdir dummy-ldconfig
+        echo "#!${stdenv.shell}" > dummy-ldconfig/ldconfig
+        chmod +x dummy-ldconfig/ldconfig
+        export PATH="$PWD/dummy-ldconfig:$PATH"
+
+        export PYTHON_LIB_PATH="$NIX_BUILD_TOP/site-packages"
+        export CC_OPT_FLAGS="${lib.concatStringsSep " " opt_flags}"
+        mkdir -p "$PYTHON_LIB_PATH"
+
+        # To avoid mixing Python 2 and Python 3
+        unset PYTHONPATH
+      '';
 
     configurePhase = ''
       runHook preConfigure
@@ -398,39 +495,53 @@ let
 
     hardeningDisable = [ "format" ];
 
-    bazelBuildFlags = [
-      "--config=opt" # optimize using the flags set in the configure phase
-    ]
-    ++ lib.optionals stdenv.cc.isClang [
-      "--cxxopt=-x" "--cxxopt=c++"
-      "--host_cxxopt=-x" "--host_cxxopt=c++"
-
-      # workaround for https://github.com/bazelbuild/bazel/issues/15359
-      "--spawn_strategy=sandboxed"
-    ]
-    ++ lib.optionals (mklSupport) [ "--config=mkl" ];
-
-    bazelTargets = [ "//tensorflow/tools/pip_package:build_pip_package //tensorflow/tools/lib_package:libtensorflow" ];
+    bazelBuildFlags =
+      [
+        "--config=opt" # optimize using the flags set in the configure phase
+      ]
+      ++ lib.optionals stdenv.cc.isClang [
+        "--cxxopt=-x"
+        "--cxxopt=c++"
+        "--host_cxxopt=-x"
+        "--host_cxxopt=c++"
+
+        # workaround for https://github.com/bazelbuild/bazel/issues/15359
+        "--spawn_strategy=sandboxed"
+      ]
+      ++ lib.optionals (mklSupport) [ "--config=mkl" ];
+
+    bazelTargets = [
+      "//tensorflow/tools/pip_package:build_pip_package //tensorflow/tools/lib_package:libtensorflow"
+    ];
 
     removeRulesCC = false;
     # Without this Bazel complaints about sandbox violations.
     dontAddBazelOpts = true;
 
     fetchAttrs = {
-      sha256 = {
-      x86_64-linux = if cudaSupport
-        then "sha256-5VFMNHeLrUxW5RTr6EhT3pay9nWJ5JkZTGirDds5QkU="
-        else "sha256-KzgWV69Btr84FdwQ5JI2nQEsqiPg1/+TWdbw5bmxXOE=";
-      aarch64-linux = if cudaSupport
-        then "sha256-ty5+51BwHWE1xR4/0WcWTp608NzSAS/iiyN+9zx7/wI="
-        else "sha256-9btXrNHqd720oXTPDhSmFidv5iaZRLjCVX8opmrMjXk=";
-      x86_64-darwin = "sha256-gqb03kB0z2pZQ6m1fyRp1/Nbt8AVVHWpOJSeZNCLc4w=";
-      aarch64-darwin = "sha256-WdgAaFZU+ePwWkVBhLzjlNT7ELfGHOTaMdafcAMD5yo=";
-      }.${stdenv.hostPlatform.system} or (throw "unsupported system ${stdenv.hostPlatform.system}");
+      sha256 =
+        {
+          x86_64-linux =
+            if cudaSupport then
+              "sha256-5VFMNHeLrUxW5RTr6EhT3pay9nWJ5JkZTGirDds5QkU="
+            else
+              "sha256-KzgWV69Btr84FdwQ5JI2nQEsqiPg1/+TWdbw5bmxXOE=";
+          aarch64-linux =
+            if cudaSupport then
+              "sha256-ty5+51BwHWE1xR4/0WcWTp608NzSAS/iiyN+9zx7/wI="
+            else
+              "sha256-9btXrNHqd720oXTPDhSmFidv5iaZRLjCVX8opmrMjXk=";
+          x86_64-darwin = "sha256-gqb03kB0z2pZQ6m1fyRp1/Nbt8AVVHWpOJSeZNCLc4w=";
+          aarch64-darwin = "sha256-WdgAaFZU+ePwWkVBhLzjlNT7ELfGHOTaMdafcAMD5yo=";
+        }
+        .${stdenv.hostPlatform.system} or (throw "unsupported system ${stdenv.hostPlatform.system}");
     };
 
     buildAttrs = {
-      outputs = [ "out" "python" ];
+      outputs = [
+        "out"
+        "python"
+      ];
 
       # need to rebuild schemas since we use a different flatbuffers version
       preBuild = ''
@@ -470,37 +581,37 @@ let
 
       postFixup = lib.optionalString cudaSupport ''
         find $out -type f \( -name '*.so' -or -name '*.so.*' \) | while read lib; do
-          addOpenGLRunpath "$lib"
+          addDriverRunpath "$lib"
         done
       '';
 
-      requiredSystemFeatures = [
-        "big-parallel"
-      ];
+      requiredSystemFeatures = [ "big-parallel" ];
     };
 
-    meta = with lib; {
-      badPlatforms = lib.optionals cudaSupport lib.platforms.darwin;
-      changelog = "https://github.com/tensorflow/tensorflow/releases/tag/v${version}";
-      description = "Computation using data flow graphs for scalable machine learning";
-      homepage = "http://tensorflow.org";
-      license = licenses.asl20;
-      maintainers = with maintainers; [ abbradar ];
-      platforms = with platforms; linux ++ darwin;
-      broken =
-        stdenv.isDarwin
-        || !(xlaSupport -> cudaSupport)
-        || !(cudaSupport -> builtins.hasAttr cudnnAttribute cudaPackagesGoogle)
-        || !(cudaSupport -> cudaPackagesGoogle ? cudatoolkit);
-    } // lib.optionalAttrs stdenv.isDarwin {
-      timeout = 86400; # 24 hours
-      maxSilent = 14400; # 4h, double the default of 7200s
-    };
+    meta =
+      {
+        badPlatforms = lib.optionals cudaSupport lib.platforms.darwin;
+        changelog = "https://github.com/tensorflow/tensorflow/releases/tag/v${version}";
+        description = "Computation using data flow graphs for scalable machine learning";
+        homepage = "http://tensorflow.org";
+        license = lib.licenses.asl20;
+        maintainers = with lib.maintainers; [ abbradar ];
+        platforms = with lib.platforms; linux ++ darwin;
+        broken =
+          stdenv.hostPlatform.isDarwin
+          || !(xlaSupport -> cudaSupport)
+          || !(cudaSupport -> builtins.hasAttr cudnnAttribute cudaPackages)
+          || !(cudaSupport -> cudaPackages ? cudatoolkit);
+      }
+      // lib.optionalAttrs stdenv.hostPlatform.isDarwin {
+        timeout = 86400; # 24 hours
+        maxSilent = 14400; # 4h, double the default of 7200s
+      };
   };
-
-in buildPythonPackage {
+in
+buildPythonPackage {
   inherit version pname;
-  disabled = pythonOlder "3.8";
+  disabled = pythonAtLeast "3.12";
 
   src = bazel-build.python;
 
@@ -550,17 +661,15 @@ in buildPythonPackage {
     termcolor
     typing-extensions
     wrapt
-  ] ++ lib.optionals withTensorboard [
-    tensorboard
-  ];
+  ] ++ lib.optionals withTensorboard [ tensorboard ];
 
-  nativeBuildInputs = lib.optionals cudaSupport [ addOpenGLRunpath ];
+  nativeBuildInputs = lib.optionals cudaSupport [ addDriverRunpath ];
 
   postFixup = lib.optionalString cudaSupport ''
     find $out -type f \( -name '*.so' -or -name '*.so.*' \) | while read lib; do
-      addOpenGLRunpath "$lib"
+      addDriverRunpath "$lib"
 
-      patchelf --set-rpath "${cudatoolkit}/lib:${cudatoolkit.lib}/lib:${cudnn}/lib:${nccl}/lib:$(patchelf --print-rpath "$lib")" "$lib"
+      patchelf --set-rpath "${cudatoolkit}/lib:${cudatoolkit.lib}/lib:${cudnnMerged}/lib:${lib.getLib nccl}/lib:$(patchelf --print-rpath "$lib")" "$lib"
     done
   '';
 
@@ -594,7 +703,6 @@ in buildPythonPackage {
   # Regression test for #77626 removed because not more `tensorflow.contrib`.
 
   passthru = {
-    cudaPackages = cudaPackagesGoogle;
     deps = bazel-build.deps;
     libtensorflow = bazel-build.out;
   };
diff --git a/pkgs/development/python-modules/tensorflow/prefetcher.sh b/pkgs/development/python-modules/tensorflow/prefetcher.sh
index 136d982f2f60f..912977ecc42a5 100755
--- a/pkgs/development/python-modules/tensorflow/prefetcher.sh
+++ b/pkgs/development/python-modules/tensorflow/prefetcher.sh
@@ -1,28 +1,39 @@
 #!/usr/bin/env bash
 
-version="2.15.0"
+version="2.17.0"
+version_jetson="2.16.1+nv24.07"
 
-bucket="https://storage.googleapis.com/tensorflow"
+bucket="https://storage.googleapis.com/tensorflow/versions/${version}"
+bucket_jetson="https://developer.download.nvidia.com/compute/redist/jp/v60/tensorflow"
 
 # List of binary wheels for Tensorflow.  The most recent versions can be found
 # on the following page:
 # https://www.tensorflow.org/install/pip?lang=python3#package-location
 url_and_key_list=(
-"linux_py_39_cpu $bucket/linux/cpu/tensorflow_cpu-${version}-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
-"linux_py_310_cpu $bucket/linux/cpu/tensorflow_cpu-${version}-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
-"linux_py_311_cpu $bucket/linux/cpu/tensorflow_cpu-${version}-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
-"linux_py_39_gpu $bucket/linux/gpu/tensorflow-${version}-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
-"linux_py_310_gpu $bucket/linux/gpu/tensorflow-${version}-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
-"linux_py_311_gpu $bucket/linux/gpu/tensorflow-${version}-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
-"mac_py_39_cpu $bucket/mac/cpu/tensorflow-${version}-cp39-cp39-macosx_10_15_x86_64.whl"
-"mac_py_310_cpu $bucket/mac/cpu/tensorflow-${version}-cp310-cp310-macosx_10_15_x86_64.whl"
-"mac_py_311_cpu $bucket/mac/cpu/tensorflow-${version}-cp311-cp311-macosx_10_15_x86_64.whl"
+"x86_64-linux_39 $bucket/tensorflow_cpu-${version}-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
+"x86_64-linux_310 $bucket/tensorflow_cpu-${version}-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
+"x86_64-linux_311 $bucket/tensorflow_cpu-${version}-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
+"x86_64-linux_312 $bucket/tensorflow_cpu-${version}-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
+"x86_64-linux_39_gpu $bucket/tensorflow-${version}-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
+"x86_64-linux_310_gpu $bucket/tensorflow-${version}-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
+"x86_64-linux_311_gpu $bucket/tensorflow-${version}-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
+"x86_64-linux_312_gpu $bucket/tensorflow-${version}-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
+"aarch64-linux_39 $bucket/tensorflow-${version}-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
+"aarch64-linux_310 $bucket/tensorflow-${version}-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
+"aarch64-linux_311 $bucket/tensorflow-${version}-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
+"aarch64-linux_312 $bucket/tensorflow-${version}-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
+"aarch64-linux_310_jetson $bucket_jetson/tensorflow-${version_jetson}-cp310-cp310-linux_aarch64.whl"
+"aarch64-darwin_39 $bucket/tensorflow-${version}-cp39-cp39-macosx_12_0_arm64.whl"
+"aarch64-darwin_310 $bucket/tensorflow-${version}-cp310-cp310-macosx_12_0_arm64.whl"
+"aarch64-darwin_311 $bucket/tensorflow-${version}-cp311-cp311-macosx_12_0_arm64.whl"
+"aarch64-darwin_312 $bucket/tensorflow-${version}-cp312-cp312-macosx_12_0_arm64.whl"
 )
 
 hashfile=binary-hashes.nix
 rm -f $hashfile
 echo "{" >> $hashfile
 echo "version = \"$version\";" >> $hashfile
+echo "version_jetson = \"$version_jetson\";" >> $hashfile
 
 for url_and_key in "${url_and_key_list[@]}"; do
   key=$(echo "$url_and_key" | cut -d' ' -f1)
diff --git a/pkgs/development/python-modules/tensorly/default.nix b/pkgs/development/python-modules/tensorly/default.nix
index a6e5c5a42e6ed..20bd49a8a9bad 100644
--- a/pkgs/development/python-modules/tensorly/default.nix
+++ b/pkgs/development/python-modules/tensorly/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, pytestCheckHook
-, pythonOlder
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  scipy,
 }:
 
 buildPythonPackage rec {
   pname = "tensorly";
-  version = "0.8.1";
+  version = "0.8.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -18,7 +19,7 @@ buildPythonPackage rec {
     owner = pname;
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-hwpdExW/ESOavFkL3old1Efo5WC+PYmcgJp5/oLelaA=";
+    hash = "sha256-kYKyLY2V6M53co+26ZTZP4U6bHkFebKI5Uhh1x1/N58=";
   };
 
   propagatedBuildInputs = [
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     scipy
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [
     "tensorly"
@@ -48,9 +47,7 @@ buildPythonPackage rec {
     "tensorly.contrib"
   ];
 
-  pytestFlagsArray = [
-    "tensorly"
-  ];
+  pytestFlagsArray = [ "tensorly" ];
 
   disabledTests = [
     # this can fail on hydra and other peoples machines, check with others before re-enabling
diff --git a/pkgs/development/python-modules/tensorrt/default.nix b/pkgs/development/python-modules/tensorrt/default.nix
index 2f3606d8562ec..b69986fdc7e71 100644
--- a/pkgs/development/python-modules/tensorrt/default.nix
+++ b/pkgs/development/python-modules/tensorrt/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, python
-, autoAddDriverRunpath
-, buildPythonPackage
-, autoPatchelfHook
-, unzip
-, cudaPackages
+{
+  lib,
+  python,
+  autoAddDriverRunpath,
+  buildPythonPackage,
+  autoPatchelfHook,
+  unzip,
+  cudaPackages,
 }:
 
 let
@@ -39,9 +40,7 @@ buildPythonPackage rec {
     cudaPackages.tensorrt
   ];
 
-  pythonImportsCheck = [
-    "tensorrt"
-  ];
+  pythonImportsCheck = [ "tensorrt" ];
 
   meta = with lib; {
     description = "Python bindings for TensorRT, a high-performance deep learning interface";
@@ -49,8 +48,6 @@ buildPythonPackage rec {
     license = licenses.unfree;
     platforms = [ "x86_64-linux" ];
     maintainers = with maintainers; [ aidalgol ];
-    broken =
-      !(cudaPackages ? tensorrt)
-      || !(cudaPackages ? cudnn);
+    broken = !(cudaPackages ? tensorrt) || !(cudaPackages ? cudnn);
   };
 }
diff --git a/pkgs/development/python-modules/tensorstore/default.nix b/pkgs/development/python-modules/tensorstore/default.nix
index 7ad175d700772..7a550a5c4ede7 100644
--- a/pkgs/development/python-modules/tensorstore/default.nix
+++ b/pkgs/development/python-modules/tensorstore/default.nix
@@ -1,11 +1,12 @@
-{ autoPatchelfHook
-, buildPythonPackage
-, fetchPypi
-, lib
-, ml-dtypes
-, numpy
-, python
-, stdenv
+{
+  autoPatchelfHook,
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  ml-dtypes,
+  numpy,
+  python,
+  stdenv,
 }:
 
 let
@@ -15,17 +16,17 @@ let
     "aarch64-darwin" = "macosx_11_0_arm64";
   };
   hashes = {
-    "310-x86_64-linux" = "sha256-1b6w9wgT6fffTTpJ3MxdPSrFD7Xaby6prQYFljVn4x4=";
-    "311-x86_64-linux" = "sha256-8+HlzaxH30gB5N+ZKR0Oq+yswhq5gjiSF9jVsg8U22E=";
-    "312-x86_64-linux" = "sha256-e8iEQzB4D3RSXgrcPC4me/vsFKoXf1QFNZfQ7968zQE=";
-    "310-aarch64-darwin" = "sha256-2C60yJk/Pbx2woV7hzEmWGzNKWWnySDfTPm247PWIRA=";
-    "311-aarch64-darwin" = "sha256-rdLB7l/8ZYjV589qKtORiyu1rC7W30wzrsz1uihNRpk=";
-    "312-aarch64-darwin" = "sha256-DpbYMIbqceQeiL7PYwnvn9jLtv8EmfHXmxvPfZCw914=";
+    "310-x86_64-linux" = "sha256-oB68FjYzmRARWpbajQuLpAzWwg9CCji4tLZRFCsztjk=";
+    "311-x86_64-linux" = "sha256-kGEecBu7b3TFGUIRirI9q2W3nipiQwsh/1OB92RqDB4=";
+    "312-x86_64-linux" = "sha256-Vw8sT5kahSN20BQs3MOYesSUZqk4CuvfZR1z5nAO7g8=";
+    "310-aarch64-darwin" = "sha256-2vuVxmJMx/GeaHgzUS6rRdysQFHreVzZ5IT5YSDUJro=";
+    "311-aarch64-darwin" = "sha256-0xRVDSDE9upz2yU7mzpa3Y6l6M5FWOMAPKWBC8eY3Eo=";
+    "312-aarch64-darwin" = "sha256-i2TmLOl2aHD5iyzF6YpjbHKFmBGPx5ixPYyNKKQfRNM=";
   };
 in
 buildPythonPackage rec {
   pname = "tensorstore";
-  version = "0.1.53";
+  version = "0.1.65";
   format = "wheel";
 
   # The source build involves some wonky Bazel stuff.
@@ -36,24 +37,26 @@ buildPythonPackage rec {
     abi = "cp${pythonVersionNoDot}";
     dist = "cp${pythonVersionNoDot}";
     platform = systemToPlatform.${stdenv.system} or (throw "unsupported system");
-    hash = hashes."${pythonVersionNoDot}-${stdenv.system}" or (throw "unsupported system/python version combination");
+    hash =
+      hashes."${pythonVersionNoDot}-${stdenv.system}"
+        or (throw "unsupported system/python version combination");
   };
 
-  nativeBuildInputs = lib.optionals stdenv.isLinux [ autoPatchelfHook ];
+  nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     ml-dtypes
     numpy
   ];
 
   pythonImportsCheck = [ "tensorstore" ];
 
-  meta = with lib; {
+  meta = {
     description = "Library for reading and writing large multi-dimensional arrays";
     homepage = "https://google.github.io/tensorstore";
     changelog = "https://github.com/google/tensorstore/releases/tag/v${version}";
-    license = licenses.asl20;
-    sourceProvenance = [ sourceTypes.binaryNativeCode ];
-    maintainers = with maintainers; [ samuela ];
+    license = lib.licenses.asl20;
+    sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
+    maintainers = with lib.maintainers; [ samuela ];
   };
 }
diff --git a/pkgs/development/python-modules/termcolor/default.nix b/pkgs/development/python-modules/termcolor/default.nix
index 474af852d39f0..1755f671b3ee8 100644
--- a/pkgs/development/python-modules/termcolor/default.nix
+++ b/pkgs/development/python-modules/termcolor/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatch-vcs
-, hatchling
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatch-vcs,
+  hatchling,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,13 +22,9 @@ buildPythonPackage rec {
     hatchling
   ];
 
-  pythonImportsCheck = [
-    "termcolor"
-  ];
+  pythonImportsCheck = [ "termcolor" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "ANSI color formatting for output in terminal";
diff --git a/pkgs/development/python-modules/termgraph/default.nix b/pkgs/development/python-modules/termgraph/default.nix
index 2e9f0a8c22bf7..b2ae6ae1f979b 100644
--- a/pkgs/development/python-modules/termgraph/default.nix
+++ b/pkgs/development/python-modules/termgraph/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, colorama
-, fetchFromGitHub
-, lib
-, pytestCheckHook
+{
+  buildPythonPackage,
+  colorama,
+  fetchFromGitHub,
+  lib,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -24,7 +25,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "termgraph" ];
 
   meta = with lib; {
-    description = "A python command-line tool which draws basic graphs in the terminal";
+    description = "Python command-line tool which draws basic graphs in the terminal";
     mainProgram = "termgraph";
     homepage = "https://github.com/mkaz/termgraph";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/terminado/default.nix b/pkgs/development/python-modules/terminado/default.nix
index 52c0eaa61f818..7773844c2febc 100644
--- a/pkgs/development/python-modules/terminado/default.nix
+++ b/pkgs/development/python-modules/terminado/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatchling
-, ptyprocess
-, tornado
-, pytest-timeout
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  ptyprocess,
+  tornado,
+  pytest-timeout,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,18 +19,14 @@ buildPythonPackage rec {
     hash = "sha256-3gnyxLhd5HZfdxRoj/9X0+dbrR+Qm1if3ogEYMdT/S4=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     ptyprocess
     tornado
   ];
 
-  pythonImportsCheck = [
-    "terminado"
-  ];
+  pythonImportsCheck = [ "terminado" ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -42,6 +39,6 @@ buildPythonPackage rec {
     description = "Terminals served by Tornado websockets";
     homepage = "https://github.com/jupyter/terminado";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/terminaltables/default.nix b/pkgs/development/python-modules/terminaltables/default.nix
index 83895d7ad0bc2..f88cc61838da2 100644
--- a/pkgs/development/python-modules/terminaltables/default.nix
+++ b/pkgs/development/python-modules/terminaltables/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -18,5 +19,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/Robpol86/terminaltables";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/terminaltexteffects/default.nix b/pkgs/development/python-modules/terminaltexteffects/default.nix
new file mode 100644
index 0000000000000..27b07d5615888
--- /dev/null
+++ b/pkgs/development/python-modules/terminaltexteffects/default.nix
@@ -0,0 +1,35 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "terminaltexteffects";
+  version = "0.11.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+   # no tests on pypi, no tags on github
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-FDDLc7oAOgSpaxmuS6Wzej+vEOuSx3WT2ntpfoET3LI=";
+  };
+
+  build-system = [ poetry-core ];
+
+  pythonImportsCheck = [ "terminaltexteffects" ];
+
+  meta = with lib; {
+    description = "A collection of visual effects that can be applied to terminal piped stdin text";
+    homepage = "https://chrisbuilds.github.io/terminaltexteffects";
+    changelog = "https://chrisbuilds.github.io/terminaltexteffects/changeblog/";
+    license = licenses.mit;
+    platforms = with platforms; unix;
+    maintainers = with maintainers; [ qwqawawow ];
+    mainProgram = "tte";
+  };
+}
diff --git a/pkgs/development/python-modules/termplotlib/default.nix b/pkgs/development/python-modules/termplotlib/default.nix
index 5ed244959eb1e..c4112b3e16293 100644
--- a/pkgs/development/python-modules/termplotlib/default.nix
+++ b/pkgs/development/python-modules/termplotlib/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, substituteAll
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, exdown
-, numpy
-, gnuplot
-, setuptools
+{
+  lib,
+  substituteAll,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  exdown,
+  numpy,
+  gnuplot,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     sha256 = "1qfrv2w7vb2bbjvd5lqfq57c23iqkry0pwmif1ha3asmz330rja1";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   format = "pyproject";
   nativeCheckInputs = [
diff --git a/pkgs/development/python-modules/termstyle/default.nix b/pkgs/development/python-modules/termstyle/default.nix
index 862cea1741687..a3d752b7e7a7a 100644
--- a/pkgs/development/python-modules/termstyle/default.nix
+++ b/pkgs/development/python-modules/termstyle/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "termstyle";
diff --git a/pkgs/development/python-modules/tern/default.nix b/pkgs/development/python-modules/tern/default.nix
index 45553889b1bd0..978ba12ee1a1a 100644
--- a/pkgs/development/python-modules/tern/default.nix
+++ b/pkgs/development/python-modules/tern/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, debian-inspector
-, docker
-, dockerfile-parse
-, fetchPypi
-, gitpython
-, idna
-, license-expression
-, packageurl-python
-, pbr
-, prettytable
-, pythonOlder
-, pyyaml
-, regex
-, requests
-, stevedore
+{
+  lib,
+  buildPythonPackage,
+  debian-inspector,
+  docker,
+  dockerfile-parse,
+  fetchPypi,
+  gitpython,
+  idna,
+  license-expression,
+  packageurl-python,
+  pbr,
+  prettytable,
+  pythonOlder,
+  pyyaml,
+  regex,
+  requests,
+  stevedore,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,7 @@ buildPythonPackage rec {
     cp requirements.{in,txt}
   '';
 
-  nativeBuildInputs = [
-    pbr
-  ];
+  nativeBuildInputs = [ pbr ];
 
   propagatedBuildInputs = [
     pyyaml
@@ -55,12 +54,10 @@ buildPythonPackage rec {
   # No tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "tern"
-  ];
+  pythonImportsCheck = [ "tern" ];
 
   meta = with lib; {
-    description = "A software composition analysis tool and Python library that generates a Software Bill of Materials for container images and Dockerfiles";
+    description = "Software composition analysis tool and Python library that generates a Software Bill of Materials for container images and Dockerfiles";
     mainProgram = "tern";
     homepage = "https://github.com/tern-tools/tern";
     changelog = "https://github.com/tern-tools/tern/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/tesla-fleet-api/default.nix b/pkgs/development/python-modules/tesla-fleet-api/default.nix
index fad5795a930e5..9e854fc168d61 100644
--- a/pkgs/development/python-modules/tesla-fleet-api/default.nix
+++ b/pkgs/development/python-modules/tesla-fleet-api/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiohttp
-, aiolimiter
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  aiolimiter,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "tesla-fleet-api";
-  version = "0.5.6";
+  version = "0.7.8";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -18,12 +19,10 @@ buildPythonPackage rec {
     owner = "Teslemetry";
     repo = "python-tesla-fleet-api";
     rev = "refs/tags/v${version}";
-    hash = "sha256-dkxKC0WAgfDvUD9YktRrNCgXpw2+6apfsMVqStZICII=";
+    hash = "sha256-jExS2bnxz35mqzN2f6qrqInpoNWGUYLzueKeXp//9/8=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     aiohttp
@@ -31,11 +30,9 @@ buildPythonPackage rec {
   ];
 
   # Module has no tests
-  doCheck  =false;
+  doCheck = false;
 
-  pythonImportsCheck = [
-    "tesla_fleet_api"
-  ];
+  pythonImportsCheck = [ "tesla_fleet_api" ];
 
   meta = with lib; {
     description = "Python library for Tesla Fleet API and Teslemetry";
diff --git a/pkgs/development/python-modules/tesla-powerwall/default.nix b/pkgs/development/python-modules/tesla-powerwall/default.nix
index 95222f4de3894..8677ae389af62 100644
--- a/pkgs/development/python-modules/tesla-powerwall/default.nix
+++ b/pkgs/development/python-modules/tesla-powerwall/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, aiohttp
-, urllib3
-, orjson
-, aresponses
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  aiohttp,
+  urllib3,
+  orjson,
+  aresponses,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-cAsJKFM0i0e7w2T4HP4a5ybJGuDvBAGCGmPEKFzNFAY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -39,13 +38,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "tests/unit"
-  ];
+  pytestFlagsArray = [ "tests/unit" ];
 
-  pythonImportsCheck = [
-    "tesla_powerwall"
-  ];
+  pythonImportsCheck = [ "tesla_powerwall" ];
 
   meta = with lib; {
     description = "API for Tesla Powerwall";
diff --git a/pkgs/development/python-modules/tesla-wall-connector/default.nix b/pkgs/development/python-modules/tesla-wall-connector/default.nix
index 9bce448f7d2ae..cc5907be5b37a 100644
--- a/pkgs/development/python-modules/tesla-wall-connector/default.nix
+++ b/pkgs/development/python-modules/tesla-wall-connector/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, aiohttp
-, aioresponses
-, aresponses
-, backoff
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aresponses,
+  backoff,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-GblKXWV9h37E3bxNsx17hEe0uDm8ahzJUx8wiE+Vc38=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -40,9 +38,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "tesla_wall_connector"
-  ];
+  pythonImportsCheck = [ "tesla_wall_connector" ];
 
   meta = with lib; {
     description = "Library for communicating with a Tesla Wall Connector";
diff --git a/pkgs/development/python-modules/teslajsonpy/default.nix b/pkgs/development/python-modules/teslajsonpy/default.nix
index bbfabbefd78a6..a6d0ea2e8ee66 100644
--- a/pkgs/development/python-modules/teslajsonpy/default.nix
+++ b/pkgs/development/python-modules/teslajsonpy/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "teslajsonpy";
-  version = "3.10.3";
+  version = "3.12.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
     owner = "zabuldon";
     repo = "teslajsonpy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-g5csh014gXdYJ28cBn0Frk5g3zFuZ9ufrypcLcNPwg0=";
+    hash = "sha256-oIuIE5N/cHCEP3azMrwNiknP4q3rDxg4BiFQiJqcFkc=";
   };
 
   build-system = [ poetry-core ];
diff --git a/pkgs/development/python-modules/tess/default.nix b/pkgs/development/python-modules/tess/default.nix
index b11cf5535d1d1..d0443f82392a9 100644
--- a/pkgs/development/python-modules/tess/default.nix
+++ b/pkgs/development/python-modules/tess/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cython
-, numpy
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cython,
+  numpy,
+  scipy,
 }:
 
 buildPythonPackage {
@@ -20,10 +21,13 @@ buildPythonPackage {
 
   buildInputs = [ cython ];
 
-  propagatedBuildInputs = [ numpy scipy ];
+  propagatedBuildInputs = [
+    numpy
+    scipy
+  ];
 
   meta = with lib; {
-    description = "A module for calculating and analyzing Voronoi tessellations";
+    description = "Module for calculating and analyzing Voronoi tessellations";
     homepage = "https://tess.readthedocs.org";
     license = licenses.bsd3;
     maintainers = [ ];
diff --git a/pkgs/development/python-modules/tesserocr/default.nix b/pkgs/development/python-modules/tesserocr/default.nix
index 95b5ced2a7d35..1bddf639b4c7e 100644
--- a/pkgs/development/python-modules/tesserocr/default.nix
+++ b/pkgs/development/python-modules/tesserocr/default.nix
@@ -1,38 +1,43 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
 
-# build dependencies
-, cython
-, leptonica
-, pkg-config
-, tesseract4
+  # build-system
+  cython,
+  pkg-config,
+  setuptools,
 
-# propagates
-, pillow
+  # native dependencies
+  leptonica,
+  tesseract4,
 
-# tests
-, unittestCheckHook
+  # dependencies
+  pillow,
+
+  # tests
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "tesserocr";
-  version = "2.6.3";
+  version = "2.7.1";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-RMHE73vcKGz6FEzhoJfoHDMp9KQ1CbyElKGrhSM4xuE=";
+    hash = "sha256-N0TFyLur8YFyhJx3Mb4A3C5eRPjFVtN8hQ54h5SuCvQ=";
   };
 
   # https://github.com/sirfz/tesserocr/issues/314
   postPatch = ''
-    sed -i '/allheaders.h/a\    pass\n\ncdef extern from "leptonica/pix_internal.h" nogil:' tesseract.pxd
+    sed -i '/allheaders.h/a\    pass\n\ncdef extern from "leptonica/pix_internal.h" nogil:' tesserocr/tesseract.pxd
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     cython
     pkg-config
+    setuptools
   ];
 
   buildInputs = [
@@ -40,21 +45,19 @@ buildPythonPackage rec {
     tesseract4
   ];
 
-  propagatedBuildInputs = [
-    pillow
-  ];
+  dependencies = [ pillow ];
 
-  pythonImportsCheck = [
-    "tesserocr"
-  ];
+  pythonImportsCheck = [ "tesserocr" ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
+
+  preCheck = ''
+    rm -rf tesserocr
+  '';
 
   meta = with lib; {
     changelog = "https://github.com/sirfz/tesserocr/releases/tag/v${version}";
-    description = "A simple, Pillow-friendly, wrapper around the tesseract-ocr API for Optical Character Recognition (OCR)";
+    description = "Simple, Pillow-friendly, wrapper around the tesseract-ocr API for Optical Character Recognition (OCR)";
     homepage = "https://github.com/sirfz/tesserocr";
     license = licenses.mit;
     maintainers = with maintainers; [ mtrsk ];
diff --git a/pkgs/development/python-modules/test-tube/default.nix b/pkgs/development/python-modules/test-tube/default.nix
index 0c4e75169c9f5..d133362c3fb2f 100644
--- a/pkgs/development/python-modules/test-tube/default.nix
+++ b/pkgs/development/python-modules/test-tube/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy27
-, pytestCheckHook
-, future
-, imageio
-, numpy
-, pandas
-, torch
-, tensorboard
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  pytestCheckHook,
+  future,
+  imageio,
+  numpy,
+  pandas,
+  torch,
+  tensorboard,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     sha256 = "0w60xarmcw06gc4002sy7bjfykdz34gbgniswxkl0lw8a1v0xn2m";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   propagatedBuildInputs = [
     future
diff --git a/pkgs/development/python-modules/testbook/default.nix b/pkgs/development/python-modules/testbook/default.nix
index 331a7b61160c1..3e6661ceb687b 100644
--- a/pkgs/development/python-modules/testbook/default.nix
+++ b/pkgs/development/python-modules/testbook/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, nbformat
-, nbclient
-, ipykernel
-, pandas
-, pytestCheckHook
-, setuptools
-, traitlets
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  nbformat,
+  nbclient,
+  ipykernel,
+  pandas,
+  pytestCheckHook,
+  setuptools,
+  traitlets,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     nbformat
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     ipykernel
@@ -41,12 +40,10 @@ buildPythonPackage rec {
     traitlets
   ];
 
-  pythonImportsCheck = [
-    "testbook"
-  ];
+  pythonImportsCheck = [ "testbook" ];
 
   meta = with lib; {
-    description = "A unit testing framework extension for testing code in Jupyter Notebooks";
+    description = "Unit testing framework extension for testing code in Jupyter Notebooks";
     homepage = "https://testbook.readthedocs.io/";
     license = with licenses; [ bsd3 ];
     maintainers = with maintainers; [ djacu ];
diff --git a/pkgs/development/python-modules/testcontainers/default.nix b/pkgs/development/python-modules/testcontainers/default.nix
index 66607ed06fff1..e1ef6e67796ad 100644
--- a/pkgs/development/python-modules/testcontainers/default.nix
+++ b/pkgs/development/python-modules/testcontainers/default.nix
@@ -1,35 +1,37 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, deprecation
-, docker
-, wrapt
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  poetry-core,
+
+  # buildInputs
+  deprecation,
+  docker,
+  wrapt,
+
+  # dependencies
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "testcontainers";
-  version = "4.4.0";
-  disabled = pythonOlder "3.9";
-
+  version = "4.8.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "testcontainers";
     repo = "testcontainers-python";
     rev = "refs/tags/testcontainers-v${version}";
-    hash = "sha256-1iwbfArEjYxpEpMlmJ8rzVLXA8OSNT7ozkpTVTIL91U=";
+    hash = "sha256-UCT0AmpDWMiAeRuW4BadZl4cJFCQPDogHOSkTYi/tqM=";
   };
 
   postPatch = ''
     echo "${version}" > VERSION
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   buildInputs = [
     deprecation
@@ -37,23 +39,18 @@ buildPythonPackage rec {
     wrapt
   ];
 
-  dependencies = [
-    typing-extensions
-  ];
+  dependencies = [ typing-extensions ];
 
   # Tests require various container and database services running
   doCheck = false;
 
-  pythonImportsCheck = [
-    "testcontainers"
-  ];
+  pythonImportsCheck = [ "testcontainers" ];
 
-  meta = with lib; {
-    description = ''
-      Allows using docker containers for functional and integration testing
-    '';
+  meta = {
+    description = "Allows using docker containers for functional and integration testing";
     homepage = "https://github.com/testcontainers/testcontainers-python";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ onny ];
+    changelog = "https://github.com/testcontainers/testcontainers-python/releases/tag/testcontainers-v${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ onny ];
   };
 }
diff --git a/pkgs/development/python-modules/testfixtures/default.nix b/pkgs/development/python-modules/testfixtures/default.nix
index b8c0a5dc1371a..e95952f940103 100644
--- a/pkgs/development/python-modules/testfixtures/default.nix
+++ b/pkgs/development/python-modules/testfixtures/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mock
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, sybil
-, twisted
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  sybil,
+  twisted,
 }:
 
 buildPythonPackage rec {
   pname = "testfixtures";
-  version = "8.1.0";
+  version = "8.3.0";
   pyproject = true;
   # DO NOT CONTACT upstream.
   # https://github.com/simplistix/ is only concerned with internal CI process.
@@ -24,12 +25,10 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-gISJkDBIWcOito3+S8r3e25kJaOSUEe8JaUnVSd7+m0=";
+    hash = "sha256-1MC4SvLyZ2EPkIAJtQ1vmDpOWK3iLGe6tnh7WkAtWcA=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     mock
@@ -43,13 +42,9 @@ buildPythonPackage rec {
     "testfixtures/tests/test_django"
   ];
 
-  pytestFlagsArray = [
-    "testfixtures/tests"
-  ];
+  pytestFlagsArray = [ "testfixtures/tests" ];
 
-  pythonImportsCheck = [
-    "testfixtures"
-  ];
+  pythonImportsCheck = [ "testfixtures" ];
 
   meta = with lib; {
     description = "Collection of helpers and mock objects for unit tests and doc tests";
diff --git a/pkgs/development/python-modules/testing-common-database/default.nix b/pkgs/development/python-modules/testing-common-database/default.nix
index ff323b85e720f..0555bd8ee0252 100644
--- a/pkgs/development/python-modules/testing-common-database/default.nix
+++ b/pkgs/development/python-modules/testing-common-database/default.nix
@@ -1,19 +1,27 @@
-{ lib, buildPythonPackage, fetchPypi  }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "testing.common.database";
   version = "2.0.3";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "0wvdv0frl7xib05sixjv9m6jywaa2wdhdhsqqdfk45akk2r80pcn";
   };
 
-  postPatch =  ''
+  postPatch = ''
     substituteInPlace src/testing/common/database.py \
-      --replace "collections.Callable" "collections.abc.Callable"
+      --replace-fail "collections.Callable" "collections.abc.Callable"
   '';
 
+  build-system = [ setuptools ];
+
   # There are no unit tests
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/testing-postgresql/default.nix b/pkgs/development/python-modules/testing-postgresql/default.nix
index ad64fa53bebb5..1b16def315807 100644
--- a/pkgs/development/python-modules/testing-postgresql/default.nix
+++ b/pkgs/development/python-modules/testing-postgresql/default.nix
@@ -1,20 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pg8000
-, postgresql
-, psycopg2
-, pytestCheckHook
-, pythonOlder
-, sqlalchemy
-, testing-common-database
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pg8000,
+  postgresql,
+  psycopg2,
+  pytestCheckHook,
+  pythonOlder,
+  sqlalchemy,
+  testing-common-database,
 }:
 
 buildPythonPackage rec {
   pname = "testing-postgresql";
   # Version 1.3.0 isn't working so let's use the latest commit from GitHub
   version = "unstable-2017-10-31";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -25,7 +27,9 @@ buildPythonPackage rec {
     hash = "sha256-A4tahAaa98X66ZYa3QxIQDZkwAwVB6ZDRObEhkbUWKs=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     testing-common-database
     pg8000
   ];
@@ -39,17 +43,19 @@ buildPythonPackage rec {
   # Add PostgreSQL to search path
   prePatch = ''
     substituteInPlace src/testing/postgresql.py \
-      --replace "/usr/local/pgsql" "${postgresql}"
+      --replace-fail "/usr/local/pgsql" "${postgresql}"
   '';
 
+  pythonRelaxDeps = [ "pg8000" ];
+
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "pg8000 >= 1.10" "pg8000"
+      --replace-fail "pg8000 >= 1.10" "pg8000"
+    substituteInPlace tests/test_postgresql.py \
+      --replace-fail "self.assertRegexpMatches" "self.assertRegex"
   '';
 
-  pythonImportsCheck = [
-    "testing.postgresql"
-  ];
+  pythonImportsCheck = [ "testing.postgresql" ];
 
   # Fix tests for Darwin build. See:
   # https://github.com/NixOS/nixpkgs/pull/74716#issuecomment-598546916
diff --git a/pkgs/development/python-modules/testpath/default.nix b/pkgs/development/python-modules/testpath/default.nix
index eb66bea56f573..913226ddc78b0 100644
--- a/pkgs/development/python-modules/testpath/default.nix
+++ b/pkgs/development/python-modules/testpath/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,13 +17,9 @@ buildPythonPackage rec {
     hash = "sha256-LxuX5kQsAmgevgG9hPUxAop8rqGvOCUAD1I0XDAoXg8=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # exe are only required when testpath is used on windows
   # https://github.com/jupyter/testpath/blob/de8ca59539eb23b9781e55848b7d2646c8c61df9/testpath/commands.py#L128
@@ -30,7 +27,7 @@ buildPythonPackage rec {
     rm testpath/cli-32.exe testpath/cli-64.exe
   '';
 
-  preCheck = lib.optionalString stdenv.isDarwin ''
+  preCheck = lib.optionalString stdenv.hostPlatform.isDarwin ''
     # Work around https://github.com/jupyter/testpath/issues/24
     export TMPDIR="/tmp"
   '';
@@ -40,5 +37,4 @@ buildPythonPackage rec {
     license = licenses.mit;
     homepage = "https://github.com/jupyter/testpath";
   };
-
 }
diff --git a/pkgs/development/python-modules/testrail-api/default.nix b/pkgs/development/python-modules/testrail-api/default.nix
index 0e9daa6cdde99..d4292ef2c3703 100644
--- a/pkgs/development/python-modules/testrail-api/default.nix
+++ b/pkgs/development/python-modules/testrail-api/default.nix
@@ -1,16 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, responses
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  responses,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "testrail-api";
-  version = "1.13.0";
+  version = "1.13.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,36 +21,28 @@ buildPythonPackage rec {
     owner = "tolstislon";
     repo = "testrail-api";
     rev = "refs/tags/${version}";
-    hash = "sha256-NGdNpNJ9ejwneSacNmifGJ8TMUuBqMu9tHTyLxTB5Uk=";
+    hash = "sha256-GR1yhky33XZZFcPEO2WRvVUkmekG9HoM00doVgTCD+0=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "setuptools_scm==7.1.0" "setuptools_scm"
-  '';
-
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  dependencies = [ requests ];
 
   nativeCheckInputs = [
     pytestCheckHook
     responses
   ];
 
-  pythonImportsCheck = [
-    "testrail_api"
-  ];
+  pythonImportsCheck = [ "testrail_api" ];
 
-  meta = with lib; {
-    description = "A Python wrapper of the TestRail API";
+  meta = {
+    description = "Python wrapper of the TestRail API";
     homepage = "https://github.com/tolstislon/testrail-api";
-    changelog = "https://github.com/tolstislon/ytestrail-api/releases/tag/${version}";
-    license = with licenses; [ mit ];
-    maintainers = with maintainers; [ aanderse ];
+    changelog = "https://github.com/tolstislon/testrail-api/releases/tag/${version}";
+    license = with lib.licenses; [ mit ];
+    maintainers = with lib.maintainers; [ aanderse ];
   };
 }
diff --git a/pkgs/development/python-modules/testrepository/default.nix b/pkgs/development/python-modules/testrepository/default.nix
index 751292ab5be75..ec6a5d6624254 100644
--- a/pkgs/development/python-modules/testrepository/default.nix
+++ b/pkgs/development/python-modules/testrepository/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, testtools
-, testresources
-, pbr
-, subunit
-, fixtures
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  testtools,
+  testresources,
+  pbr,
+  subunit,
+  fixtures,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -16,22 +17,25 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-Nor89+CQs8aIvddUol9kvDFOUSuBb4xxufn8F9w3o9k=";
+    hash = "sha256-Nor89+CQs8aIvddUol9kvDFOUSuBb4xxufn8F9w3o9k=";
   };
 
   nativeCheckInputs = [ testresources ];
   buildInputs = [ pbr ];
-  propagatedBuildInputs = [ fixtures subunit testtools ];
+  propagatedBuildInputs = [
+    fixtures
+    subunit
+    testtools
+  ];
 
   checkPhase = ''
     ${python.interpreter} ./testr
   '';
 
   meta = with lib; {
-    description = "A database of test results which can be used as part of developer workflow";
+    description = "Database of test results which can be used as part of developer workflow";
     mainProgram = "testr";
     homepage = "https://pypi.python.org/pypi/testrepository";
     license = licenses.bsd2;
   };
-
 }
diff --git a/pkgs/development/python-modules/testresources/default.nix b/pkgs/development/python-modules/testresources/default.nix
index 724a6c3643583..7d4710c743882 100644
--- a/pkgs/development/python-modules/testresources/default.nix
+++ b/pkgs/development/python-modules/testresources/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pbr
-, fixtures
-, testtools
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pbr,
+  fixtures,
+  testtools,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -23,13 +24,9 @@ buildPythonPackage rec {
       --replace "failIf" "assertFalse"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pbr
-  ];
+  propagatedBuildInputs = [ pbr ];
 
   nativeCheckInputs = [
     fixtures
diff --git a/pkgs/development/python-modules/testscenarios/default.nix b/pkgs/development/python-modules/testscenarios/default.nix
index 8218947d68683..f46f4e2f2c1ac 100644
--- a/pkgs/development/python-modules/testscenarios/default.nix
+++ b/pkgs/development/python-modules/testscenarios/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build-system
-, pbr
-, setuptools
+  # build-system
+  pbr,
+  setuptools,
 
-# dependencies
-, testtools
+  # dependencies
+  testtools,
 
-# tests
-, python
+  # tests
+  python,
 }:
 
 buildPythonPackage rec {
@@ -48,9 +49,8 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A pyunit extension for dependency injection";
+    description = "Pyunit extension for dependency injection";
     homepage = "https://github.com/testing-cabal/testscenarios";
     license = licenses.asl20;
   };
-
 }
diff --git a/pkgs/development/python-modules/testtools/default.nix b/pkgs/development/python-modules/testtools/default.nix
index ffc007af7acf6..df074958d1cdc 100644
--- a/pkgs/development/python-modules/testtools/default.nix
+++ b/pkgs/development/python-modules/testtools/default.nix
@@ -1,46 +1,41 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonAtLeast
-, pythonRelaxDepsHook
-
-# build-system
-, hatchling
-, hatch-vcs
-
-# dependencies
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonAtLeast,
+
+  # build-system
+  hatchling,
+  hatch-vcs,
+
+  # dependencies
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "testtools";
-  version = "2.7.1";
+  version = "2.7.2";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-323pYBDinuIfY3oUfqvzDVCyXjhB3R1o+T7onOd+Nmw=";
+    hash = "sha256-W+W7wfD6D4tgrKbO7AeEXUHQxHXPRFv6200sRew5fqM=";
   };
 
   nativeBuildInputs = [
     hatchling
     hatch-vcs
-    pythonRelaxDepsHook
   ];
 
-  pythonRemoveDeps = [
-    "fixtures"
-  ];
+  pythonRemoveDeps = [ "fixtures" ];
 
-  propagatedBuildInputs = lib.optionals (pythonAtLeast "3.12") [
-    setuptools
-  ];
+  propagatedBuildInputs = lib.optionals (pythonAtLeast "3.12") [ setuptools ];
 
   # testscenarios has a circular dependency on testtools
   doCheck = false;
 
   meta = {
-    description = "A set of extensions to the Python standard library's unit testing framework";
+    description = "Set of extensions to the Python standard library's unit testing framework";
     homepage = "https://pypi.python.org/pypi/testtools";
     license = lib.licenses.mit;
   };
diff --git a/pkgs/development/python-modules/texsoup/default.nix b/pkgs/development/python-modules/texsoup/default.nix
index da59b2fc28bc5..86519f929c7e8 100644
--- a/pkgs/development/python-modules/texsoup/default.nix
+++ b/pkgs/development/python-modules/texsoup/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,15 +18,11 @@ buildPythonPackage rec {
     hash = "sha256-XKYJycYivtrszU46B3Bd4JLrvckBpQu9gKDMdr6MyZU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   pythonImportsCheck = [ "TexSoup" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     substituteInPlace pytest.ini \
@@ -36,6 +33,6 @@ buildPythonPackage rec {
     description = "Fault-tolerant Python3 package for searching, navigating, and modifying LaTeX documents";
     homepage = "https://github.com/alvinwan/TexSoup";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/text-unidecode/default.nix b/pkgs/development/python-modules/text-unidecode/default.nix
index b971b94c99ab6..dd72689635ee6 100644
--- a/pkgs/development/python-modules/text-unidecode/default.nix
+++ b/pkgs/development/python-modules/text-unidecode/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "text-unidecode";
@@ -17,7 +22,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "The most basic Text::Unidecode port";
+    description = "Most basic Text::Unidecode port";
     homepage = "https://github.com/kmike/text-unidecode";
     license = licenses.artistic1;
   };
diff --git a/pkgs/development/python-modules/textacy/default.nix b/pkgs/development/python-modules/textacy/default.nix
index 18bdddfa08185..31e94229e7712 100644
--- a/pkgs/development/python-modules/textacy/default.nix
+++ b/pkgs/development/python-modules/textacy/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, cachetools
-, cytoolz
-, fetchPypi
-, floret
-, jellyfish
-, joblib
-, matplotlib
-, networkx
-, numpy
-, pyemd
-, pyphen
-, pytestCheckHook
-, pythonOlder
-, requests
-, scikit-learn
-, scipy
-, spacy
-, tqdm
+{
+  lib,
+  buildPythonPackage,
+  cachetools,
+  cytoolz,
+  fetchPypi,
+  floret,
+  jellyfish,
+  joblib,
+  matplotlib,
+  networkx,
+  numpy,
+  pyemd,
+  pyphen,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  scikit-learn,
+  scipy,
+  spacy,
+  tqdm,
 }:
 
 buildPythonPackage rec {
@@ -28,7 +29,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-a+AkSMCPx9fE7fhSiQBuOaSlPvdHIB/yS2dcZS9AxoY=";
+    hash = "sha256-a+AkSMCPx9fE7fhSiQBuOaSlPvdHIB/yS2dcZS9AxoY=";
   };
 
   propagatedBuildInputs = [
@@ -49,9 +50,7 @@ buildPythonPackage rec {
     tqdm
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pytestFlagsArray = [
     # Almost all tests have to deal with downloading a dataset, only test pure tests
diff --git a/pkgs/development/python-modules/textdistance/default.nix b/pkgs/development/python-modules/textdistance/default.nix
index c362e936eb32d..b331d1fdd2f7a 100644
--- a/pkgs/development/python-modules/textdistance/default.nix
+++ b/pkgs/development/python-modules/textdistance/default.nix
@@ -1,33 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "textdistance";
-  version = "4.6.1";
+  version = "4.6.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-JYllgBse+FaGppq/bDzv3F2iHC+9iMkMaHJfV6fUXyE=";
+    hash = "sha256-1tq8ULTqgyzc8OHmAhvQx/zZreFViI15u2o8Mfzi3G8=";
   };
 
   # There aren't tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "textdistance"
-  ];
+  pythonImportsCheck = [ "textdistance" ];
 
   meta = with lib; {
     description = "Python library for comparing distance between two or more sequences";
     homepage = "https://github.com/life4/textdistance";
     changelog = "https://github.com/life4/textdistance/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/textfsm/default.nix b/pkgs/development/python-modules/textfsm/default.nix
index 84eba320791cb..89ba02bf4f258 100644
--- a/pkgs/development/python-modules/textfsm/default.nix
+++ b/pkgs/development/python-modules/textfsm/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, six
-, future
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  six,
+  future,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -11,7 +12,6 @@ buildPythonPackage rec {
   version = "1.1.3";
   format = "setuptools";
 
-
   src = fetchFromGitHub {
     owner = "google";
     repo = pname;
@@ -30,15 +30,13 @@ buildPythonPackage rec {
     future
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Python module for parsing semi-structured text into python tables";
     mainProgram = "textfsm";
     homepage = "https://github.com/google/textfsm";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/textile/default.nix b/pkgs/development/python-modules/textile/default.nix
index 01686e4fc2acc..09e83fa1caeba 100644
--- a/pkgs/development/python-modules/textile/default.nix
+++ b/pkgs/development/python-modules/textile/default.nix
@@ -1,49 +1,58 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, html5lib
-, pytestCheckHook
-, pythonOlder
-, regex
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  nh3,
+  pillow,
+  pytest-cov-stub,
+  pytestCheckHook,
+  pythonOlder,
+  regex,
+  setuptools-scm,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "textile";
-  version = "4.0.2";
-  format = "setuptools";
+  version = "4.0.3";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
-    owner = pname;
+    owner = "textile";
     repo = "python-textile";
-    rev = version;
-    hash = "sha256-WwX7h07Bq8sNsViHwmfhrrqleXacmrIY4ZBBaP2kKnI=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-KVDppsvX48loV9OJ70yqmQ5ZSypzcxrjH1j31DcyfM8=";
   };
 
-  propagatedBuildInputs = [
-    html5lib
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    nh3
     regex
   ];
 
+  optional-dependencies = {
+    imagesize = [ pillow ];
+  };
+
   nativeCheckInputs = [
+    pytest-cov-stub
     pytestCheckHook
   ];
 
-  postPatch = ''
-    substituteInPlace pytest.ini \
-      --replace " --cov=textile --cov-report=html --cov-append --cov-report=term-missing" ""
-  '';
-
-  pythonImportsCheck = [
-    "textile"
-  ];
+  pythonImportsCheck = [ "textile" ];
 
   meta = with lib; {
     description = "MOdule for generating web text";
-    mainProgram = "pytextile";
     homepage = "https://github.com/textile/python-textile";
+    changelog = "https://github.com/textile/python-textile/blob/${version}/CHANGELOG.textile";
     license = licenses.bsd3;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "pytextile";
   };
 }
diff --git a/pkgs/development/python-modules/textnets/default.nix b/pkgs/development/python-modules/textnets/default.nix
index 399bc5288022a..09b47a1b12075 100644
--- a/pkgs/development/python-modules/textnets/default.nix
+++ b/pkgs/development/python-modules/textnets/default.nix
@@ -1,23 +1,23 @@
-{ lib
-, buildPythonPackage
-, cairocffi
-, cython
-, fetchPypi
-, igraph
-, leidenalg
-, pandas
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, scipy
-, setuptools
-, spacy
-, spacy-lookups-data
-, en_core_web_sm
-, toolz
-, tqdm
-, wasabi
+{
+  lib,
+  buildPythonPackage,
+  cairocffi,
+  cython,
+  fetchPypi,
+  igraph,
+  leidenalg,
+  pandas,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  scipy,
+  setuptools,
+  spacy,
+  spacy-lookups-data,
+  en_core_web_sm,
+  toolz,
+  tqdm,
+  wasabi,
 }:
 
 buildPythonPackage rec {
@@ -33,13 +33,15 @@ buildPythonPackage rec {
   };
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     cython
     poetry-core
     setuptools
   ];
 
-  pythonRelaxDeps = [ "igraph" "leidenalg" ];
+  pythonRelaxDeps = [
+    "igraph"
+    "leidenalg"
+  ];
 
   propagatedBuildInputs = [
     cairocffi
@@ -59,9 +61,7 @@ buildPythonPackage rec {
     en_core_web_sm
   ];
 
-  pythonImportsCheck = [
-    "textnets"
-  ];
+  pythonImportsCheck = [ "textnets" ];
 
   # Enables the package to find the cythonized .so files during testing. See #255262
   preCheck = ''
diff --git a/pkgs/development/python-modules/textparser/default.nix b/pkgs/development/python-modules/textparser/default.nix
index 86c436ac21f99..f0f2e0b16a3d9 100644
--- a/pkgs/development/python-modules/textparser/default.nix
+++ b/pkgs/development/python-modules/textparser/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,21 +19,15 @@ buildPythonPackage rec {
     hash = "sha256-VvcI51qp0AKtt22CO6bvFm1+zsHj5MpMHKED+BdWgzU=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "textparser"
-  ];
+  pythonImportsCheck = [ "textparser" ];
 
   meta = with lib; {
     homepage = "https://github.com/eerimoq/textparser";
-    description = "A text parser";
+    description = "Text parser";
     license = licenses.mit;
     maintainers = with maintainers; [ gray-heron ];
   };
diff --git a/pkgs/development/python-modules/texttable/default.nix b/pkgs/development/python-modules/texttable/default.nix
index d1134a28601a9..82ebb624d73e4 100644
--- a/pkgs/development/python-modules/texttable/default.nix
+++ b/pkgs/development/python-modules/texttable/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,23 +18,17 @@ buildPythonPackage rec {
     hash = "sha256-LSBo+1URWAfTrHekymj6SIA+hOuw7iNA+FgQejZSJjg=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "texttable"
-  ];
+  pythonImportsCheck = [ "texttable" ];
 
-  pytestFlagsArray = [
-    "tests.py"
-  ];
+  pytestFlagsArray = [ "tests.py" ];
 
   meta = with lib; {
     description = "Module to generate a formatted text table, using ASCII characters";
     homepage = "https://github.com/foutaise/texttable";
     changelog = "https://github.com/foutaise/texttable/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/textual-dev/default.nix b/pkgs/development/python-modules/textual-dev/default.nix
index d8ca583d97b62..0e2b1c4884bee 100644
--- a/pkgs/development/python-modules/textual-dev/default.nix
+++ b/pkgs/development/python-modules/textual-dev/default.nix
@@ -1,16 +1,14 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, msgpack
-, poetry-core
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, textual
-, time-machine
-, typing-extensions
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  msgpack,
+  poetry-core,
+  pythonOlder,
+  textual,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -27,11 +25,9 @@ buildPythonPackage rec {
     hash = "sha256-QnMKVt1WxnwGnZFNb7Gbus7xewGvyG5xJ0hIKKK5hug=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     click
     msgpack
@@ -39,21 +35,17 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  nativeCheckInputs = [
-    pytest-aiohttp
-    pytestCheckHook
-    time-machine
-  ];
+  # Tests require a running textual WS server
+  doCheck = false;
 
-  pythonImportsCheck = [
-    "textual_dev"
-  ];
+  pythonImportsCheck = [ "textual_dev" ];
 
   meta = with lib; {
     description = "Development tools for Textual";
-    mainProgram = "textual";
     homepage = "https://github.com/Textualize/textual-dev";
+    changelog = "https://github.com/Textualize/textual-dev/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ yannip ];
+    mainProgram = "textual";
   };
 }
diff --git a/pkgs/development/python-modules/textual-universal-directorytree/default.nix b/pkgs/development/python-modules/textual-universal-directorytree/default.nix
index 0e9e3e6d002c3..20429de6f8104 100644
--- a/pkgs/development/python-modules/textual-universal-directorytree/default.nix
+++ b/pkgs/development/python-modules/textual-universal-directorytree/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, textual
-, universal-pathlib
-, adlfs
-, aiohttp
-, gcsfs
-, paramiko
-, requests
-, s3fs
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  textual,
+  universal-pathlib,
+  adlfs,
+  aiohttp,
+  gcsfs,
+  paramiko,
+  requests,
+  s3fs,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "textual-universal-directorytree";
-  version = "1.1.0";
+  version = "1.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,12 +25,10 @@ buildPythonPackage rec {
     owner = "juftin";
     repo = "textual-universal-directorytree";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ncQ3IRaZaCv1rMUWT9dkUKo6OAEC5pziMCM7adIBGWo=";
+    hash = "sha256-hUig0aJWSS0FsgRIrs74/uVaQgH6tczJWO5rj6TVOvQ=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     textual
@@ -47,14 +46,12 @@ buildPythonPackage rec {
     ];
   };
 
-  pythonImportsCheck = [
-    "textual_universal_directorytree"
-  ];
+  pythonImportsCheck = [ "textual_universal_directorytree" ];
 
   meta = with lib; {
     description = "Textual plugin for a DirectoryTree compatible with remote filesystems";
     homepage = "https://github.com/juftin/textual-universal-directorytree";
-    changelog = "https://github.com/juftin/textual-universal-directorytree/releases/tag/${src.rev}";
+    changelog = "https://github.com/juftin/textual-universal-directorytree/releases/tag/${lib.removePrefix "refs/tags/" src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
   };
diff --git a/pkgs/development/python-modules/textual/default.nix b/pkgs/development/python-modules/textual/default.nix
index c9303d198b62c..f018431f4842d 100644
--- a/pkgs/development/python-modules/textual/default.nix
+++ b/pkgs/development/python-modules/textual/default.nix
@@ -1,22 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, jinja2
-, markdown-it-py
-, poetry-core
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, rich
-, syrupy
-, time-machine
-, tree-sitter
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jinja2,
+  markdown-it-py,
+  platformdirs,
+  poetry-core,
+  pytest-aiohttp,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  rich,
+  syrupy,
+  time-machine,
+  tree-sitter,
+  tree-sitter-languages,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "textual";
-  version = "0.53.1";
+  version = "0.79.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,53 +29,53 @@ buildPythonPackage rec {
     owner = "Textualize";
     repo = "textual";
     rev = "refs/tags/v${version}";
-    hash = "sha256-73qEogHe69B66r4EJOj2RAP95O5z7v/UYARTIEPxrcA=";
+    hash = "sha256-QD9iRgl6hwlFL5DLYyXL5aA/Xsvpe5/KXdEdMS+3L/8=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
+    platformdirs
     markdown-it-py
     rich
     typing-extensions
-  ] ++ markdown-it-py.optional-dependencies.plugins
-    ++ markdown-it-py.optional-dependencies.linkify;
+  ] ++ markdown-it-py.optional-dependencies.plugins ++ markdown-it-py.optional-dependencies.linkify;
 
   optional-dependencies = {
     syntax = [
       tree-sitter
-      # tree-sitter-languages
-    ];
+    ] ++ lib.optionals (!tree-sitter-languages.meta.broken) [ tree-sitter-languages ];
   };
 
   nativeCheckInputs = [
     jinja2
     pytest-aiohttp
+    pytest-xdist
     pytestCheckHook
     syrupy
     time-machine
-  ] ++ optional-dependencies.syntax;
+    tree-sitter
+  ];
 
   disabledTestPaths = [
-    # snapshot tests require syrupy<4
+    # Snapshot tests require syrupy<4
     "tests/snapshot_tests/test_snapshots.py"
   ];
 
   disabledTests = [
     # Assertion issues
     "test_textual_env_var"
-    "test_softbreak_split_links_rendered_correctly"
 
-    # requires tree-sitter-languages which is not packaged in nixpkgs
+    # Requirements for tests are not quite ready
     "test_register_language"
     "test_language_binary_missing"
   ];
 
-  pythonImportsCheck = [
-    "textual"
-  ];
+  # Some tests in groups require state from previous tests
+  # See https://github.com/Textualize/textual/issues/4924#issuecomment-2304889067
+  pytestFlagsArray = [ "--dist=loadgroup" ];
+
+  pythonImportsCheck = [ "textual" ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -80,6 +84,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Textualize/textual";
     changelog = "https://github.com/Textualize/textual/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ joelkoen ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/textwrap3/default.nix b/pkgs/development/python-modules/textwrap3/default.nix
index 17832c11b8cf0..1cf7dcb376ead 100644
--- a/pkgs/development/python-modules/textwrap3/default.nix
+++ b/pkgs/development/python-modules/textwrap3/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
     sha256 = "5008eeebdb236f6303dcd68f18b856d355f6197511d952ba74bc75e40e0c3414";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Textwrap from Python 3.6 backport plus a few tweaks";
diff --git a/pkgs/development/python-modules/textx/default.nix b/pkgs/development/python-modules/textx/default.nix
index 46847572714c7..9244644395784 100644
--- a/pkgs/development/python-modules/textx/default.nix
+++ b/pkgs/development/python-modules/textx/default.nix
@@ -1,54 +1,35 @@
-{ lib
-, buildPythonPackage
-, python
-, fetchFromGitHub
-, mkdocs
-, twine
-, arpeggio
-, click
-, future
-, setuptools
-, callPackage
-, gprof2dot
-, html5lib
-, jinja2
-, psutil
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  python,
+  fetchFromGitHub,
+  arpeggio,
+  click,
+  callPackage,
+  flit-core,
 }:
 
 let
   textx = buildPythonPackage rec {
     pname = "textx";
-    version = "3.0.0";
-    format = "setuptools";
+    version = "4.0.1";
+    pyproject = true;
 
     src = fetchFromGitHub {
       owner = pname;
       repo = pname;
       rev = version;
-      hash = "sha256-uZlO82dKtWQQR5+Q7dWk3+ZoUzAjDJ8qzC4UMLCtnBk=";
+      hash = "sha256-qiKOG6B7yWWzkL7bmcRAVv6AOHKTWmrlrsJlXD5RoaQ=";
     };
 
-    postPatch = ''
-      substituteInPlace setup.cfg --replace "click >=7.0, <8.0" "click >=7.0"
-    '';
-
     outputs = [
       "out"
       "testout"
     ];
 
-    nativeBuildInputs = [
-      mkdocs
-      twine
-    ];
+    build-system = [ flit-core ];
 
-    propagatedBuildInputs = [
-      arpeggio
-      click
-      future
-      setuptools
-    ];
+    dependencies = [ arpeggio ];
 
     postInstall = ''
       # FileNotFoundError: [Errno 2] No such file or directory: '$out/lib/python3.10/site-packages/textx/textx.tx
@@ -59,9 +40,7 @@ let
       cp -r tests $testout/tests
     '';
 
-    pythonImportsCheck = [
-      "textx"
-    ];
+    pythonImportsCheck = [ "textx" ];
 
     # Circular dependencies, do tests in passthru.tests instead.
     doCheck = false;
@@ -73,8 +52,9 @@ let
           textx-example-project
           textx-flow-codegen
           textx-flow-dsl
-          textx-types-dsl;
-       };
+          textx-types-dsl
+          ;
+      };
     };
 
     meta = with lib; {
@@ -89,16 +69,19 @@ let
   textx-data-dsl = buildPythonPackage rec {
     pname = "textx-data-dsl";
     version = "1.0.0";
+    pyproject = true;
+
     inherit (textx) src;
-    # `format` isn't included in the output of `mk-python-derivation`.
-    # So can't inherit format: `error: attribute 'format' missing`.
-    format = "setuptools";
     pathToSourceRoot = "tests/functional/registration/projects/data_dsl";
     sourceRoot = "${src.name}/" + pathToSourceRoot;
-    propagatedBuildInputs = [
+
+    build-system = [ flit-core ];
+
+    dependencies = [
       textx
       textx-types-dsl
     ];
+
     meta = with lib; {
       inherit (textx.meta) license maintainers;
       description = "Sample textX language for testing";
@@ -109,14 +92,19 @@ let
   textx-flow-codegen = buildPythonPackage rec {
     pname = "textx-flow-codegen";
     version = "1.0.0";
+    pyproject = true;
+
     inherit (textx) src;
-    format = "setuptools";
+
     pathToSourceRoot = "tests/functional/registration/projects/flow_codegen";
     sourceRoot = "${src.name}/" + pathToSourceRoot;
-    propagatedBuildInputs = [
-      click
+
+    build-system = [ flit-core ];
+    dependencies = [
       textx
+      click
     ];
+
     meta = with lib; {
       inherit (textx.meta) license maintainers;
       description = "Sample textX language for testing";
@@ -127,13 +115,16 @@ let
   textx-flow-dsl = buildPythonPackage rec {
     pname = "textx-flow-dsl";
     version = "1.0.0";
+    pyproject = true;
+
     inherit (textx) src;
-    format = "setuptools";
+
     pathToSourceRoot = "tests/functional/registration/projects/flow_dsl";
     sourceRoot = "${src.name}/" + pathToSourceRoot;
-    propagatedBuildInputs = [
-      textx
-    ];
+
+    build-system = [ flit-core ];
+    dependencies = [ textx ];
+
     meta = with lib; {
       inherit (textx.meta) license maintainers;
       description = "Sample textX language for testing";
@@ -144,13 +135,16 @@ let
   textx-types-dsl = buildPythonPackage rec {
     pname = "textx-types-dsl";
     version = "1.0.0";
+    pyproject = true;
+
     inherit (textx) src;
-    format = "setuptools";
+
     pathToSourceRoot = "tests/functional/registration/projects/types_dsl";
     sourceRoot = "${src.name}/" + pathToSourceRoot;
-    propagatedBuildInputs = [
-      textx
-    ];
+
+    build-system = [ flit-core ];
+    dependencies = [ textx ];
+
     meta = with lib; {
       inherit (textx.meta) license maintainers;
       description = "Sample textX language for testing";
@@ -161,13 +155,16 @@ let
   textx-example-project = buildPythonPackage rec {
     pname = "textx-example-project";
     version = "1.0.0";
+    pyproject = true;
+
     inherit (textx) src;
-    format = "setuptools";
+
     pathToSourceRoot = "tests/functional/subcommands/example_project";
     sourceRoot = "${src.name}/" + pathToSourceRoot;
-    propagatedBuildInputs = [
-      textx
-    ];
+
+    build-system = [ flit-core ];
+    dependencies = [ textx ];
+
     meta = with lib; {
       inherit (textx.meta) license maintainers;
       description = "Sample textX sub-command for testing";
@@ -175,4 +172,4 @@ let
     };
   };
 in
-  textx
+textx
diff --git a/pkgs/development/python-modules/textx/tests.nix b/pkgs/development/python-modules/textx/tests.nix
index 488c276e910f3..ff1c888d2dbbe 100644
--- a/pkgs/development/python-modules/textx/tests.nix
+++ b/pkgs/development/python-modules/textx/tests.nix
@@ -1,24 +1,27 @@
-{ lib
-, buildPythonPackage
-, click
-, gprof2dot
-, html5lib
-, jinja2
-, memory-profiler
-, psutil
-, pytestCheckHook
-, setuptools
-, textx
-, textx-data-dsl
-, textx-example-project
-, textx-flow-codegen
-, textx-flow-dsl
-, textx-types-dsl
+{
+  lib,
+  buildPythonPackage,
+  attrs,
+  click,
+  gprof2dot,
+  html5lib,
+  jinja2,
+  memory-profiler,
+  psutil,
+  pytestCheckHook,
+  setuptools,
+  textx,
+  textx-data-dsl,
+  textx-example-project,
+  textx-flow-codegen,
+  textx-flow-dsl,
+  textx-types-dsl,
 }:
 
 buildPythonPackage {
   pname = "textx-tests";
   inherit (textx) version;
+  pyproject = false;
 
   srcs = textx.testout;
 
@@ -26,6 +29,7 @@ buildPythonPackage {
   dontInstall = true;
 
   nativeCheckInputs = [
+    attrs
     click
     gprof2dot
     html5lib
@@ -41,8 +45,9 @@ buildPythonPackage {
     textx-types-dsl
   ];
 
-  pytestFlagsArray = [
-    "tests/functional"
+  pytestFlagsArray = [ "tests/functional" ];
+  disabledTests = [
+    "test_examples" # assertion error: 0 == 12
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/tf-keras/default.nix b/pkgs/development/python-modules/tf-keras/default.nix
new file mode 100644
index 0000000000000..c6d9e0c6fdb45
--- /dev/null
+++ b/pkgs/development/python-modules/tf-keras/default.nix
@@ -0,0 +1,53 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  wheel,
+  numpy,
+  tensorflow,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "tf-keras";
+  version = "2.17.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchPypi {
+    pname = "tf_keras";
+    inherit version;
+    hash = "sha256-/al8GNow2g9ypafoDz7uNDsJ9MIG2tbFfJRPss0YVg4=";
+  };
+
+  nativeBuildInputs = [
+  ];
+
+  pythonRelaxDeps = [
+    "tensorflow"
+  ];
+
+  build-system = [
+    setuptools
+    wheel
+  ];
+
+  dependencies = [
+    numpy
+    tensorflow
+  ];
+
+  pythonImportsCheck = [ "tf_keras" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "Deep learning for humans";
+    homepage = "https://pypi.org/project/tf-keras/";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/pkgs/development/python-modules/tf2onnx/default.nix b/pkgs/development/python-modules/tf2onnx/default.nix
index deb739ce162f1..54a837089bc8a 100644
--- a/pkgs/development/python-modules/tf2onnx/default.nix
+++ b/pkgs/development/python-modules/tf2onnx/default.nix
@@ -1,25 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonRelaxDepsHook
-, pytest-runner
-# runtime dependencies
-, numpy
-, onnx
-, requests
-, six
-, flatbuffers
-, protobuf
-, tensorflow
-# check dependencies
-, pytestCheckHook
-, graphviz
-, parameterized
-, pytest-cov
-, pyyaml
-, timeout-decorator
-, onnxruntime
-, keras
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  # runtime dependencies
+  numpy,
+  onnx,
+  requests,
+  six,
+  flatbuffers,
+  protobuf,
+  tensorflow,
+  # check dependencies
+  pytestCheckHook,
+  graphviz,
+  parameterized,
+  pytest-cov,
+  pyyaml,
+  timeout-decorator,
+  onnxruntime,
+  keras,
 }:
 
 buildPythonPackage rec {
@@ -34,14 +33,12 @@ buildPythonPackage rec {
     hash = "sha256-qtRzckw/KHWm3gjFwF+cPuBhGbfktjhYIwImwHn2CFk=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-    pytest-runner
-  ];
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace-fail "'pytest-runner'" ""
+  '';
 
-  pythonRelaxDeps = [
-    "flatbuffers"
-  ];
+  pythonRelaxDeps = [ "flatbuffers" ];
 
   propagatedBuildInputs = [
     numpy
@@ -73,14 +70,17 @@ buildPythonPackage rec {
     "tests/test_einsum_optimizers.py"
   ];
 
-  disabledTests = [
-    "test_profile_conversion_time"
-  ];
+  disabledTests = [ "test_profile_conversion_time" ];
 
   meta = with lib; {
     description = "Convert TensorFlow, Keras, Tensorflow.js and Tflite models to ONNX";
     homepage = "https://github.com/onnx/tensorflow-onnx";
     license = licenses.asl20;
     maintainers = with maintainers; [ happysalada ];
+    # Duplicated `protobuf` in the derivation:
+    # - version 4.24.4 (from onnx), the default version of protobuf in nixpkgs
+    # - version 4.21.12 (from tensorflow), pinned as such because tensorflow is outdated and does
+    #   not support more recent versions of protobuf
+    broken = true;
   };
 }
diff --git a/pkgs/development/python-modules/tflearn/default.nix b/pkgs/development/python-modules/tflearn/default.nix
index d2eee46f14ce8..3bd15b7fba5e1 100644
--- a/pkgs/development/python-modules/tflearn/default.nix
+++ b/pkgs/development/python-modules/tflearn/default.nix
@@ -1,5 +1,13 @@
-{ lib, fetchPypi, buildPythonPackage, pytest, scipy, h5py
-, pillow, tensorflow }:
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pytest,
+  scipy,
+  h5py,
+  pillow,
+  tensorflow,
+}:
 
 buildPythonPackage rec {
   pname = "tflearn";
@@ -13,13 +21,18 @@ buildPythonPackage rec {
 
   buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [ scipy h5py pillow tensorflow ];
+  propagatedBuildInputs = [
+    scipy
+    h5py
+    pillow
+    tensorflow
+  ];
 
   doCheck = false;
 
   meta = with lib; {
     description = "Deep learning library featuring a higher-level API for TensorFlow";
-    homepage    = "https://github.com/tflearn/tflearn";
-    license     = licenses.mit;
+    homepage = "https://github.com/tflearn/tflearn";
+    license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/tftpy/default.nix b/pkgs/development/python-modules/tftpy/default.nix
index 92589c8cfc229..2fe4c4b7b2666 100644
--- a/pkgs/development/python-modules/tftpy/default.nix
+++ b/pkgs/development/python-modules/tftpy/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/tgcrypto/default.nix b/pkgs/development/python-modules/tgcrypto/default.nix
index 6d5ebba2ee1e3..2eb68c4f59d48 100644
--- a/pkgs/development/python-modules/tgcrypto/default.nix
+++ b/pkgs/development/python-modules/tgcrypto/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,13 +22,9 @@ buildPythonPackage rec {
     hash = "sha256-u+mXzkmM79NBi4oHnb32RbN9WPnba/cm1q2Ko0uNEZg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "tgcrypto" ];
 
diff --git a/pkgs/development/python-modules/theano-pymc/default.nix b/pkgs/development/python-modules/theano-pymc/default.nix
deleted file mode 100644
index fa8218237cc12..0000000000000
--- a/pkgs/development/python-modules/theano-pymc/default.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, pandas
-, numpy
-, scipy
-, filelock
-, pytest
-, nose
-, parameterized
-}:
-
-buildPythonPackage rec {
-  pname = "theano-pymc";
-  version = "1.1.2";
-  format = "setuptools";
-  disabled = pythonOlder "3.6";
-
-  src = fetchPypi {
-    pname = "Theano-PyMC";
-    inherit version;
-    sha256 = "5da6c2242ea72a991c8446d7fe7d35189ea346ef7d024c890397011114bf10fc";
-  };
-
-  # No need for coverage stats in Nix builds
-  postPatch = ''
-    substituteInPlace setup.py --replace ", 'pytest-cov'" ""
-  '';
-
-  propagatedBuildInputs = [
-    pandas
-    numpy
-    scipy
-    filelock
-  ];
-
-  # The test suite is computationally intensive and test failures are not
-  # indicative for package usability hence tests are disabled by default.
-  doCheck = false;
-  pythonImportsCheck = [ "theano" ];
-
-  meta = {
-    description = "PyMC theano fork";
-    homepage = "https://github.com/majidaldo/Theano-PyMC";
-    license = lib.licenses.asl20;
-    maintainers = with lib.maintainers; [ nidabdella ];
-    broken = true;
-  };
-}
diff --git a/pkgs/development/python-modules/theano/default.nix b/pkgs/development/python-modules/theano/default.nix
deleted file mode 100644
index 78a2a0836e765..0000000000000
--- a/pkgs/development/python-modules/theano/default.nix
+++ /dev/null
@@ -1,107 +0,0 @@
-{ lib, stdenv
-, runCommandCC
-, fetchPypi
-, buildPythonPackage
-, isPyPy
-, pythonOlder
-, isPy3k
-, nose
-, numpy
-, scipy
-, setuptools
-, six
-, libgpuarray
-, config
-, cudaSupport ? config.cudaSupport, cudaPackages ? { }
-, cudnnSupport ? cudaSupport
-}:
-
-let
-  inherit (cudaPackages) cudatoolkit cudnn;
-in
-
-assert cudnnSupport -> cudaSupport;
-
-let
-  wrapped = command: buildTop: buildInputs:
-    runCommandCC "${command}-wrapped" { inherit buildInputs; } ''
-      type -P '${command}' || { echo '${command}: not found'; exit 1; }
-      cat > "$out" <<EOF
-      #!$(type -P bash)
-      $(declare -xp | sed -e '/^[^=]\+="\('"''${NIX_STORE//\//\\/}"'\|[^\/]\)/!d')
-      declare -x NIX_BUILD_TOP="${buildTop}"
-      $(type -P '${command}') "\$@"
-      EOF
-      chmod +x "$out"
-    '';
-
-  # Theano spews warnings and disabled flags if the compiler isn't named g++
-  cxx_compiler_name =
-    if stdenv.cc.isGNU then "g++" else
-    if stdenv.cc.isClang then "clang++" else
-    throw "Unknown C++ compiler";
-  cxx_compiler = wrapped cxx_compiler_name "\\$HOME/.theano"
-    (    lib.optional cudaSupport libgpuarray_
-      ++ lib.optional cudnnSupport cudnn );
-
-  # We need to be careful with overriding Python packages within the package set
-  # as this can lead to collisions!
-  libgpuarray_ = libgpuarray.override { inherit cudaSupport cudaPackages; };
-
-in buildPythonPackage rec {
-  pname = "theano";
-  version = "1.0.5";
-  format = "setuptools";
-
-  disabled = isPyPy || pythonOlder "2.6" || (isPy3k && pythonOlder "3.3");
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "129f43ww2a6badfdr6b88kzjzz2b0wk0dwkvwb55z6dsagfkk53f";
-  };
-
-  postPatch = ''
-    substituteInPlace theano/configdefaults.py \
-      --replace 'StrParam(param, is_valid=warn_cxx)' 'StrParam('\'''${cxx_compiler}'\''', is_valid=warn_cxx)' \
-      --replace 'rc == 0 and config.cxx != ""' 'config.cxx != ""'
-  '' + lib.optionalString cudaSupport ''
-    substituteInPlace theano/configdefaults.py \
-      --replace 'StrParam(get_cuda_root)' 'StrParam('\'''${cudatoolkit}'\''')'
-  '' + lib.optionalString cudnnSupport ''
-    substituteInPlace theano/configdefaults.py \
-      --replace 'StrParam(default_dnn_base_path)' 'StrParam('\'''${cudnn}'\''')'
-  '';
-
-  # needs to be postFixup so it runs before pythonImportsCheck even when
-  # doCheck = false (meaning preCheck would be disabled)
-  postFixup = ''
-    mkdir -p check-phase
-    export HOME=$(pwd)/check-phase
-  '';
-  doCheck = false;
-  # takes far too long, also throws "TypeError: sort() missing 1 required positional argument: 'a'"
-  # when run from the installer, and testing with Python 3.5 hits github.com/Theano/Theano/issues/4276,
-  # the fix for which hasn't been merged yet.
-
-  # keep Nose around since running the tests by hand is possible from Python or bash
-  nativeCheckInputs = [ nose ];
-  # setuptools needed for cuda support
-  propagatedBuildInputs = [
-    libgpuarray_
-    numpy
-    numpy.blas
-    scipy
-    setuptools
-    six
-  ];
-
-  pythonImportsCheck = [ "theano" ];
-
-  meta = with lib; {
-    homepage = "https://github.com/Theano/Theano";
-    description = "A Python library for large-scale array computation";
-    license = licenses.bsd3;
-    maintainers = [ ];
-    broken = true;
-  };
-}
diff --git a/pkgs/development/python-modules/thefuzz/default.nix b/pkgs/development/python-modules/thefuzz/default.nix
index 1297ef2895c10..d307d5912b035 100644
--- a/pkgs/development/python-modules/thefuzz/default.nix
+++ b/pkgs/development/python-modules/thefuzz/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pytestCheckHook
-, hypothesis
-, levenshtein
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytestCheckHook,
+  hypothesis,
+  levenshtein,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     substituteInPlace test_thefuzz.py --replace "import pycodestyle" ""
   '';
 
-  pythonImportsCheck = [
-    "thefuzz"
-  ];
+  pythonImportsCheck = [ "thefuzz" ];
 
   nativeCheckInputs = [
     hypothesis
diff --git a/pkgs/development/python-modules/thelogrus/default.nix b/pkgs/development/python-modules/thelogrus/default.nix
index 62011023516dd..2ba9c5c1fd9b5 100644
--- a/pkgs/development/python-modules/thelogrus/default.nix
+++ b/pkgs/development/python-modules/thelogrus/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, dateutils
-, fetchFromGitHub
-, poetry-core
-, pyaml
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  dateutils,
+  fetchFromGitHub,
+  poetry-core,
+  pyaml,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -24,12 +24,9 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "pyaml"
-  ];
+  pythonRelaxDeps = [ "pyaml" ];
 
   propagatedBuildInputs = [
     dateutils
@@ -39,9 +36,7 @@ buildPythonPackage rec {
   # Module has no unit tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "thelogrus"
-  ];
+  pythonImportsCheck = [ "thelogrus" ];
 
   meta = with lib; {
     description = "Python 3 version of logrus";
diff --git a/pkgs/development/python-modules/thermobeacon-ble/default.nix b/pkgs/development/python-modules/thermobeacon-ble/default.nix
index 38e6708e0e390..d6546fca8153d 100644
--- a/pkgs/development/python-modules/thermobeacon-ble/default.nix
+++ b/pkgs/development/python-modules/thermobeacon-ble/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, bluetooth-data-tools
-, bluetooth-sensor-state-data
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, sensor-state-data
+{
+  lib,
+  bluetooth-data-tools,
+  bluetooth-sensor-state-data,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  sensor-state-data,
 }:
 
 buildPythonPackage rec {
   pname = "thermobeacon-ble";
-  version = "0.6.2";
+  version = "0.7.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -20,7 +21,7 @@ buildPythonPackage rec {
     owner = "bluetooth-devices";
     repo = "thermobeacon-ble";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Nmu9oS6zkCTqk/cf8+fqDFhVcG/2JuDDumGTCubeS5o=";
+    hash = "sha256-XeLTY78zg+5HR+GH9bHl2t86ifcWm7AA4zSwJOknsdc=";
   };
 
   postPatch = ''
@@ -28,9 +29,7 @@ buildPythonPackage rec {
       --replace " --cov=thermobeacon_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     bluetooth-data-tools
@@ -38,13 +37,9 @@ buildPythonPackage rec {
     sensor-state-data
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "thermobeacon_ble"
-  ];
+  pythonImportsCheck = [ "thermobeacon_ble" ];
 
   meta = with lib; {
     description = "Library for Thermobeacon BLE devices";
diff --git a/pkgs/development/python-modules/thermopro-ble/default.nix b/pkgs/development/python-modules/thermopro-ble/default.nix
index 573047f99fe81..1308da2326172 100644
--- a/pkgs/development/python-modules/thermopro-ble/default.nix
+++ b/pkgs/development/python-modules/thermopro-ble/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, bluetooth-data-tools
-, bluetooth-sensor-state-data
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, sensor-state-data
+{
+  lib,
+  bluetooth-data-tools,
+  bluetooth-sensor-state-data,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  sensor-state-data,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-xaRbp9XLCDGJ0NE0TzJygn2OzqvSFszs97vGHawCkzU=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     bluetooth-data-tools
@@ -33,18 +32,14 @@ buildPythonPackage rec {
     sensor-state-data
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace " --cov=thermopro_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  pythonImportsCheck = [
-    "thermopro_ble"
-  ];
+  pythonImportsCheck = [ "thermopro_ble" ];
 
   meta = with lib; {
     description = "Library for Thermopro BLE devices";
diff --git a/pkgs/development/python-modules/thespian/default.nix b/pkgs/development/python-modules/thespian/default.nix
index 564e7d73e6191..67a1906a3c032 100644
--- a/pkgs/development/python-modules/thespian/default.nix
+++ b/pkgs/development/python-modules/thespian/default.nix
@@ -1,4 +1,8 @@
-{ fetchPypi, buildPythonPackage, lib }:
+{
+  fetchPypi,
+  buildPythonPackage,
+  lib,
+}:
 
 buildPythonPackage rec {
   version = "3.10.7";
diff --git a/pkgs/development/python-modules/thinc/default.nix b/pkgs/development/python-modules/thinc/default.nix
index b62c408a77fb1..99126084f28a9 100644
--- a/pkgs/development/python-modules/thinc/default.nix
+++ b/pkgs/development/python-modules/thinc/default.nix
@@ -1,79 +1,82 @@
-{ lib
-, stdenv
-, Accelerate
-, blis
-, buildPythonPackage
-, catalogue
-, confection
-, CoreFoundation
-, CoreGraphics
-, CoreVideo
-, cymem
-, cython_0
-, fetchPypi
-, hypothesis
-, mock
-, murmurhash
-, numpy
-, plac
-, preshed
-, pydantic
-, pytestCheckHook
-, python
-, pythonOlder
-, setuptools
-, srsly
-, tqdm
-, typing-extensions
-, wasabi
+{
+  lib,
+  stdenv,
+  Accelerate,
+  blis,
+  buildPythonPackage,
+  catalogue,
+  confection,
+  CoreFoundation,
+  CoreGraphics,
+  CoreVideo,
+  cymem,
+  cython_0,
+  fetchPypi,
+  hypothesis,
+  mock,
+  murmurhash,
+  numpy,
+  preshed,
+  pydantic,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  srsly,
+  typing-extensions,
+  wasabi,
 }:
 
 buildPythonPackage rec {
   pname = "thinc";
-  version = "8.2.3";
-  format = "setuptools";
+  version = "8.3.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-9a/FIikSqAvai9zslYNiorpTjXAn3I22FUhF0oWdynY=";
+    hash = "sha256-6zvtVPXADsmt2qogjFHM+gWUg9cxQM1RWqMzc3Fcblk=";
   };
 
   postPatch = ''
+    # As per https://github.com/explosion/thinc/releases/tag/release-v8.3.0 no
+    # code changes were required for NumPy 2.0. Thus Thinc should be compatible
+    # with NumPy 1.0 and 2.0.
+    substituteInPlace pyproject.toml setup.cfg \
+      --replace-fail "numpy>=2.0.0,<2.1.0" numpy
     substituteInPlace setup.cfg \
-      --replace "preshed>=3.0.2,<3.1.0" "preshed"
+      --replace-fail "numpy>=2.0.1,<2.1.0" numpy
   '';
 
-  nativeBuildInputs = [
+  build-system = [
+    blis
+    cymem
+    cython_0
+    murmurhash
+    numpy
+    preshed
     setuptools
   ];
 
-  buildInputs = [
-    cython_0
-  ] ++ lib.optionals stdenv.isDarwin [
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
     Accelerate
     CoreFoundation
     CoreGraphics
     CoreVideo
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     blis
     catalogue
     confection
     cymem
     murmurhash
     numpy
-    plac
     preshed
     pydantic
     srsly
-    tqdm
     wasabi
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
   nativeCheckInputs = [
     hypothesis
@@ -81,18 +84,13 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  # Add native extensions.
   preCheck = ''
-    export PYTHONPATH=$out/${python.sitePackages}:$PYTHONPATH
-
     # avoid local paths, relative imports wont resolve correctly
     mv thinc/tests tests
     rm -r thinc
   '';
 
-  pythonImportsCheck = [
-    "thinc"
-  ];
+  pythonImportsCheck = [ "thinc" ];
 
   meta = with lib; {
     description = "Library for NLP machine learning";
diff --git a/pkgs/development/python-modules/thinqconnect/default.nix b/pkgs/development/python-modules/thinqconnect/default.nix
new file mode 100644
index 0000000000000..0b269d0ff3d7b
--- /dev/null
+++ b/pkgs/development/python-modules/thinqconnect/default.nix
@@ -0,0 +1,46 @@
+{
+  lib,
+  aiohttp,
+  awsiotsdk,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyopenssl,
+  pythonOlder,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "pythinqconnect";
+  version = "0.9.7-unstable-2024-09-09";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "thinq-connect";
+    repo = "pythinqconnect";
+    # https://github.com/thinq-connect/pythinqconnect/issues/1
+    rev = "39d535a2a5d1067a110eea37ae92002d0793b7e9";
+    hash = "sha256-+nQAUqg5rB2eJgPBJJR8NsQ1O2Wb4UsbBQVPir1jyAU=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    aiohttp
+    awsiotsdk
+    pyopenssl
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "thinqconnect" ];
+
+  meta = {
+    description = "Module to interacting with the LG ThinQ Connect Open API";
+    homepage = "https://github.com/thinq-connect/pythinqconnect";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/thorlabspm100/default.nix b/pkgs/development/python-modules/thorlabspm100/default.nix
index 333105d0ad6f6..c88dab853f579 100644
--- a/pkgs/development/python-modules/thorlabspm100/default.nix
+++ b/pkgs/development/python-modules/thorlabspm100/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, unittestCheckHook
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  unittestCheckHook,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -17,17 +18,11 @@ buildPythonPackage rec {
     hash = "sha256-X4qEow6u4aE0sbFwZfK3YEso2RS0c9j4iaWJPHaPQV4=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  pythonImportsCheck = [
-    "ThorlabsPM100"
-  ];
+  pythonImportsCheck = [ "ThorlabsPM100" ];
 
   meta = with lib; {
     description = "Interface to the PM100A/D power meter from Thorlabs";
diff --git a/pkgs/development/python-modules/threadloop/default.nix b/pkgs/development/python-modules/threadloop/default.nix
index fdf0e3a08114a..bdc80d921c048 100644
--- a/pkgs/development/python-modules/threadloop/default.nix
+++ b/pkgs/development/python-modules/threadloop/default.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
-, tornado
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  tornado,
 }:
 
 buildPythonPackage rec {
@@ -14,18 +15,16 @@ buildPythonPackage rec {
     sha256 = "8b180aac31013de13c2ad5c834819771992d350267bddb854613ae77ef571944";
   };
 
-  propagatedBuildInputs = [
-    tornado
-  ];
+  propagatedBuildInputs = [ tornado ];
 
   doCheck = false; # ImportError: cannot import name 'ThreadLoop' from 'threadloop'
 
   pythonImportsCheck = [ "threadloop" ];
 
   meta = with lib; {
-    description = "A library to run tornado coroutines from synchronous Python";
+    description = "Library to run tornado coroutines from synchronous Python";
     homepage = "https://github.com/GoodPete/threadloop";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/threadpool/default.nix b/pkgs/development/python-modules/threadpool/default.nix
index 4b08fd7acef83..d3e0499b03546 100644
--- a/pkgs/development/python-modules/threadpool/default.nix
+++ b/pkgs/development/python-modules/threadpool/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -18,5 +19,4 @@ buildPythonPackage rec {
     description = "Easy to use object-oriented thread pool framework";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/threadpoolctl/default.nix b/pkgs/development/python-modules/threadpoolctl/default.nix
index a8d3cd41e6a86..14ae9cca78ce2 100644
--- a/pkgs/development/python-modules/threadpoolctl/default.nix
+++ b/pkgs/development/python-modules/threadpoolctl/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, flit-core
-, pytestCheckHook
-, numpy
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  flit-core,
+  pytestCheckHook,
+  numpy,
+  scipy,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-nWaBhiFw76azx6dV4I18XodiUnHiLb0gNNhXks6iHIg=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -47,9 +46,7 @@ buildPythonPackage rec {
     "test_threadpool_limits_manual_restore"
   ];
 
-  pythonImportsCheck = [
-    "threadpoolctl"
-  ];
+  pythonImportsCheck = [ "threadpoolctl" ];
 
   meta = with lib; {
     homepage = "https://github.com/joblib/threadpoolctl";
@@ -57,5 +54,4 @@ buildPythonPackage rec {
     license = licenses.bsd3;
     maintainers = with maintainers; [ bcdarwin ];
   };
-
 }
diff --git a/pkgs/development/python-modules/threat9-test-bed/default.nix b/pkgs/development/python-modules/threat9-test-bed/default.nix
index cb4f47e6496e3..8f4cc23d3e8ef 100644
--- a/pkgs/development/python-modules/threat9-test-bed/default.nix
+++ b/pkgs/development/python-modules/threat9-test-bed/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, click
-, faker
-, fetchFromGitHub
-, flask
-, gunicorn
-, pyopenssl
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
-, requests
+{
+  lib,
+  buildPythonPackage,
+  click,
+  faker,
+  fetchFromGitHub,
+  flask,
+  gunicorn,
+  pyopenssl,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-0YSjMf2gDdrvkDaT77iwfCkiDDXKHnZyI8d7JmBSuCg=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     click
@@ -39,13 +38,9 @@ buildPythonPackage rec {
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "threat9_test_bed"
-  ];
+  pythonImportsCheck = [ "threat9_test_bed" ];
 
   disabledTests = [
     # Assertion issue with the response codes
diff --git a/pkgs/development/python-modules/three-merge/default.nix b/pkgs/development/python-modules/three-merge/default.nix
index 18d9eea211e5d..e20e1aea09acb 100644
--- a/pkgs/development/python-modules/three-merge/default.nix
+++ b/pkgs/development/python-modules/three-merge/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, diff-match-patch }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  diff-match-patch,
+}:
 
 buildPythonPackage rec {
   pname = "three-merge";
@@ -20,6 +25,6 @@ buildPythonPackage rec {
     description = "Simple library for merging two strings with respect to a base one";
     homepage = "https://github.com/spyder-ide/three-merge";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/thrift/default.nix b/pkgs/development/python-modules/thrift/default.nix
index 40f959122690a..4052080fc351b 100644
--- a/pkgs/development/python-modules/thrift/default.nix
+++ b/pkgs/development/python-modules/thrift/default.nix
@@ -1,20 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
+{
+  lib,
+  buildPythonPackage,
+  distutils,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "thrift";
   version = "0.20.0";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-TdZi6t9riuvopBcpUnvWmt9s6qKoaBy+9k0Sc7Po/ro=";
   };
 
-  propagatedBuildInputs = [ six ];
+  build-system = [
+    distutils
+    setuptools
+  ];
+
+  dependencies = [ six ];
 
   # No tests. Breaks when not disabling.
   doCheck = false;
diff --git a/pkgs/development/python-modules/thriftpy2/default.nix b/pkgs/development/python-modules/thriftpy2/default.nix
index e6a696dec9bb8..c9e962a3acb0f 100644
--- a/pkgs/development/python-modules/thriftpy2/default.nix
+++ b/pkgs/development/python-modules/thriftpy2/default.nix
@@ -1,32 +1,34 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, ply
-, pythonOlder
-, six
-, tornado
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+  ply,
+  pythonOlder,
+  six,
+  setuptools,
+  tornado,
 }:
 
 buildPythonPackage rec {
   pname = "thriftpy2";
-  version = "0.4.20";
-  format = "setuptools";
+  version = "0.5.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "Thriftpy";
-    repo = pname;
+    repo = "thriftpy2";
     rev = "refs/tags/v${version}";
-    hash = "sha256-IEYoSLaJUeQdwHaXR0UUlCZg5zBEh5Y2/IwB4RVEAcg=";
+    hash = "sha256-GBJL+IqZpT1/msJLiwiS5YDyB4hIe/e3pYPWx0A+lWY=";
   };
 
-  nativeBuildInputs = [
-    cython
-  ];
+  build-system = [ setuptools ];
+
+  nativeBuildInputs = [ cython ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     ply
     six
     tornado
@@ -35,9 +37,7 @@ buildPythonPackage rec {
   # Not all needed files seems to be present
   doCheck = false;
 
-  pythonImportsCheck = [
-    "thriftpy2"
-  ];
+  pythonImportsCheck = [ "thriftpy2" ];
 
   meta = with lib; {
     description = "Python module for Apache Thrift";
diff --git a/pkgs/development/python-modules/throttler/default.nix b/pkgs/development/python-modules/throttler/default.nix
index dea390403592a..4dc15bffedae1 100644
--- a/pkgs/development/python-modules/throttler/default.nix
+++ b/pkgs/development/python-modules/throttler/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, aiohttp
-, codecov
-, flake8
-, pytest
-, pytest-asyncio
-, pytest-cov
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  aiohttp,
+  codecov,
+  flake8,
+  pytest,
+  pytest-asyncio,
+  pytest-cov,
 }:
 
 buildPythonPackage rec {
@@ -35,7 +36,7 @@ buildPythonPackage rec {
   pytestFlagsArray = [ "tests/" ];
 
   meta = with lib; {
-    description = "Zero-dependency Python package for easy throttling with asyncio support.";
+    description = "Zero-dependency Python package for easy throttling with asyncio support";
     homepage = "https://github.com/uburuntu/throttler";
     license = licenses.mit;
     maintainers = with maintainers; [ renatoGarcia ];
diff --git a/pkgs/development/python-modules/thttp/default.nix b/pkgs/development/python-modules/thttp/default.nix
index 0e42f2a0c23a7..afda125c5d4e6 100644
--- a/pkgs/development/python-modules/thttp/default.nix
+++ b/pkgs/development/python-modules/thttp/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-e15QMRMpTcWo8TfH3tk23ybSlXFb8F4B/eqAp9oyK8g=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "thttp"
-  ];
+  pythonImportsCheck = [ "thttp" ];
 
   meta = with lib; {
-    description = "A lightweight wrapper around urllib";
+    description = "Lightweight wrapper around urllib";
     homepage = "https://github.com/sesh/thttp";
     changelog = "https://github.com/sesh/thttp/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/tidalapi/default.nix b/pkgs/development/python-modules/tidalapi/default.nix
index 8c3c2429dc72e..dcd27bffb2bcd 100644
--- a/pkgs/development/python-modules/tidalapi/default.nix
+++ b/pkgs/development/python-modules/tidalapi/default.nix
@@ -1,42 +1,45 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, python-dateutil
-, poetry-core
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python-dateutil,
+  poetry-core,
+  requests,
+  isodate,
+  ratelimit,
+  typing-extensions,
+  mpegdash,
 }:
-
 buildPythonPackage rec {
   pname = "tidalapi";
-  version = "0.7.5";
-  format = "pyproject";
+  version = "0.7.6";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-QzrIWQ7cWpPAu3+/zqAqX9eDWOF8F3Xj8Rt5D8I6h9M=";
+    hash = "sha256-X6U34T1sM4P+JFpOfcI7CmULcGZ4SCXwP2fFHKi1cWE=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     requests
     python-dateutil
+    mpegdash
+    isodate
+    ratelimit
+    typing-extensions
   ];
 
   doCheck = false; # tests require internet access
 
-  pythonImportsCheck = [
-    "tidalapi"
-  ];
+  pythonImportsCheck = [ "tidalapi" ];
 
-  meta = with lib; {
+  meta = {
     changelog = "https://github.com/tamland/python-tidal/releases/tag/v${version}";
     description = "Unofficial Python API for TIDAL music streaming service";
     homepage = "https://github.com/tamland/python-tidal";
-    license = licenses.gpl3;
-    maintainers = [ ];
+    license = lib.licenses.gpl3;
+    maintainers = with lib.maintainers; [ drawbu ];
   };
 }
diff --git a/pkgs/development/python-modules/tidyexc/default.nix b/pkgs/development/python-modules/tidyexc/default.nix
index 5e14812fe7bc6..71e62e6d8a94a 100644
--- a/pkgs/development/python-modules/tidyexc/default.nix
+++ b/pkgs/development/python-modules/tidyexc/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, flit
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  flit,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     sha256 = "1gl1jmihafawg7hvnn4xb20vd2x5qpvca0m1wr2gk0m2jj42yiq6";
   };
 
-  nativeBuildInputs = [
-    flit
-  ];
+  nativeBuildInputs = [ flit ];
 
-  pythonImportsCheck = [
-    "tidyexc"
-  ];
+  pythonImportsCheck = [ "tidyexc" ];
 
   meta = with lib; {
     description = "Raise rich, helpful exceptions";
diff --git a/pkgs/development/python-modules/tifffile/default.nix b/pkgs/development/python-modules/tifffile/default.nix
index 30d99043f04c9..bb85250daebfa 100644
--- a/pkgs/development/python-modules/tifffile/default.nix
+++ b/pkgs/development/python-modules/tifffile/default.nix
@@ -1,30 +1,32 @@
-{ lib
-, buildPythonPackage
-, dask
-, fetchPypi
-, fsspec
-, lxml
-, numpy
-, pytestCheckHook
-, pythonOlder
-, zarr
+{
+  lib,
+  buildPythonPackage,
+  dask,
+  fetchPypi,
+  fsspec,
+  lxml,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  zarr,
 }:
 
 buildPythonPackage rec {
   pname = "tifffile";
-  version = "2024.2.12";
-  format = "setuptools";
+  version = "2024.9.20";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-SSCj7I6OAD5nPTxlMYY8me7dVw0bi34UHAcu14/4Aw0=";
+    hash = "sha256-P7874vmVpwUaiuBaS+cMlvwHifIu1vHEEEyXPPaKZAs=";
   };
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ numpy ];
 
   nativeCheckInputs = [
     dask
@@ -51,9 +53,7 @@ buildPythonPackage rec {
     "test_issue_invalid_predictor"
   ];
 
-  pythonImportsCheck = [
-    "tifffile"
-  ];
+  pythonImportsCheck = [ "tifffile" ];
 
   # flaky, often killed due to OOM or timeout
   env.SKIP_LARGE = "1";
diff --git a/pkgs/development/python-modules/tika-client/default.nix b/pkgs/development/python-modules/tika-client/default.nix
index e148fce241635..f2e74ad90c93e 100644
--- a/pkgs/development/python-modules/tika-client/default.nix
+++ b/pkgs/development/python-modules/tika-client/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, hatchling
-, httpx
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  hatchling,
+  httpx,
 }:
 buildPythonPackage rec {
   pname = "tika-client";
-  version = "0.5.0";
+  version = "0.6.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -16,16 +17,14 @@ buildPythonPackage rec {
     owner = "stumpylog";
     repo = "tika-client";
     rev = "refs/tags/${version}";
-    hash = "sha256-fFibRF3SoDOje6M9YmZI0dwYVn/cvgXqmClvqvNy5f8=";
+    hash = "sha256-1Gc/WF8eEGT17z2CiuSLUIngDZVoHdBhfsUddNUBwWo=";
   };
 
   propagatedBuildInputs = [
     hatchling
     httpx
   ];
-  pythonImportsCheck = [
-    "tika_client"
-  ];
+  pythonImportsCheck = [ "tika_client" ];
   # Almost all of the tests (all except one in 0.1.0) fail since there
   # is no tika http API endpoint reachable. Since tika is not yet
   # packaged for nixpkgs, it seems like an unreasonable amount of effort
@@ -33,7 +32,7 @@ buildPythonPackage rec {
   doChecks = false;
 
   meta = with lib; {
-    description = "A modern Python REST client for Apache Tika server";
+    description = "Modern Python REST client for Apache Tika server";
     homepage = "https://github.com/stumpylog/tika-client";
     changelog = "https://github.com/stumpylog/tika-client/blob/${version}/CHANGELOG.md";
     license = licenses.mpl20;
diff --git a/pkgs/development/python-modules/tika/default.nix b/pkgs/development/python-modules/tika/default.nix
index f9a6458900847..8d2148523f814 100644
--- a/pkgs/development/python-modules/tika/default.nix
+++ b/pkgs/development/python-modules/tika/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyyaml
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyyaml,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -15,14 +16,17 @@ buildPythonPackage rec {
     hash = "sha256-VmcOuBKUTrJe1z8bOwdapB56E1t0skCCLyi4GeWzc9o=";
   };
 
-  propagatedBuildInputs = [ pyyaml requests ];
+  propagatedBuildInputs = [
+    pyyaml
+    requests
+  ];
 
   # Requires network
   doCheck = false;
   pythonImportsCheck = [ pname ];
 
   meta = with lib; {
-    description = "A Python binding to the Apache Tika™ REST services";
+    description = "Python binding to the Apache Tika™ REST services";
     mainProgram = "tika-python";
     homepage = "https://github.com/chrismattmann/tika-python";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/tiktoken/Cargo.lock b/pkgs/development/python-modules/tiktoken/Cargo.lock
index e65fd819d3d4c..c0ae6a2870677 100644
--- a/pkgs/development/python-modules/tiktoken/Cargo.lock
+++ b/pkgs/development/python-modules/tiktoken/Cargo.lock
@@ -4,18 +4,18 @@ version = 3
 
 [[package]]
 name = "aho-corasick"
-version = "1.0.5"
+version = "1.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
 dependencies = [
  "memchr",
 ]
 
 [[package]]
 name = "autocfg"
-version = "1.1.0"
+version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
 
 [[package]]
 name = "bit-set"
@@ -34,15 +34,15 @@ checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
 
 [[package]]
 name = "bitflags"
-version = "1.3.2"
+version = "2.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
 
 [[package]]
 name = "bstr"
-version = "1.6.2"
+version = "1.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c2f7349907b712260e64b0afe2f84692af14a454be26187d9df565c7f69266a"
+checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706"
 dependencies = [
  "memchr",
  "regex-automata",
@@ -66,22 +66,28 @@ dependencies = [
 ]
 
 [[package]]
+name = "heck"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+
+[[package]]
 name = "indoc"
-version = "1.0.9"
+version = "2.0.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306"
+checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
 
 [[package]]
 name = "libc"
-version = "0.2.148"
+version = "0.2.155"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
 
 [[package]]
 name = "lock_api"
-version = "0.4.10"
+version = "0.4.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
 dependencies = [
  "autocfg",
  "scopeguard",
@@ -89,30 +95,30 @@ dependencies = [
 
 [[package]]
 name = "memchr"
-version = "2.6.3"
+version = "2.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
 
 [[package]]
 name = "memoffset"
-version = "0.9.0"
+version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
 dependencies = [
  "autocfg",
 ]
 
 [[package]]
 name = "once_cell"
-version = "1.18.0"
+version = "1.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
 
 [[package]]
 name = "parking_lot"
-version = "0.12.1"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
 dependencies = [
  "lock_api",
  "parking_lot_core",
@@ -120,9 +126,9 @@ dependencies = [
 
 [[package]]
 name = "parking_lot_core"
-version = "0.9.8"
+version = "0.9.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
 dependencies = [
  "cfg-if",
  "libc",
@@ -132,25 +138,32 @@ dependencies = [
 ]
 
 [[package]]
+name = "portable-atomic"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
+
+[[package]]
 name = "proc-macro2"
-version = "1.0.67"
+version = "1.0.86"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
 name = "pyo3"
-version = "0.19.2"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e681a6cfdc4adcc93b4d3cf993749a4552018ee0a9b65fc0ccfad74352c72a38"
+checksum = "53bdbb96d49157e65d45cc287af5f32ffadd5f4761438b527b055fb0d4bb8233"
 dependencies = [
  "cfg-if",
  "indoc",
  "libc",
  "memoffset",
  "parking_lot",
+ "portable-atomic",
  "pyo3-build-config",
  "pyo3-ffi",
  "pyo3-macros",
@@ -159,9 +172,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-build-config"
-version = "0.19.2"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "076c73d0bc438f7a4ef6fdd0c3bb4732149136abd952b110ac93e4edb13a6ba5"
+checksum = "deaa5745de3f5231ce10517a1f5dd97d53e5a2fd77aa6b5842292085831d48d7"
 dependencies = [
  "once_cell",
  "target-lexicon",
@@ -169,9 +182,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-ffi"
-version = "0.19.2"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e53cee42e77ebe256066ba8aa77eff722b3bb91f3419177cf4cd0f304d3284d9"
+checksum = "62b42531d03e08d4ef1f6e85a2ed422eb678b8cd62b762e53891c05faf0d4afa"
 dependencies = [
  "libc",
  "pyo3-build-config",
@@ -179,50 +192,52 @@ dependencies = [
 
 [[package]]
 name = "pyo3-macros"
-version = "0.19.2"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dfeb4c99597e136528c6dd7d5e3de5434d1ceaf487436a3f03b2d56b6fc9efd1"
+checksum = "7305c720fa01b8055ec95e484a6eca7a83c841267f0dd5280f0c8b8551d2c158"
 dependencies = [
  "proc-macro2",
  "pyo3-macros-backend",
  "quote",
- "syn 1.0.109",
+ "syn",
 ]
 
 [[package]]
 name = "pyo3-macros-backend"
-version = "0.19.2"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "947dc12175c254889edc0c02e399476c2f652b4b9ebd123aa655c224de259536"
+checksum = "7c7e9b68bb9c3149c5b0cade5d07f953d6d125eb4337723c4ccdb665f1f96185"
 dependencies = [
+ "heck",
  "proc-macro2",
+ "pyo3-build-config",
  "quote",
- "syn 1.0.109",
+ "syn",
 ]
 
 [[package]]
 name = "quote"
-version = "1.0.33"
+version = "1.0.36"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
+checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
 dependencies = [
  "proc-macro2",
 ]
 
 [[package]]
 name = "redox_syscall"
-version = "0.3.5"
+version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd"
 dependencies = [
  "bitflags",
 ]
 
 [[package]]
 name = "regex"
-version = "1.9.5"
+version = "1.10.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47"
+checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -232,9 +247,9 @@ dependencies = [
 
 [[package]]
 name = "regex-automata"
-version = "0.3.8"
+version = "0.4.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795"
+checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -243,9 +258,9 @@ dependencies = [
 
 [[package]]
 name = "regex-syntax"
-version = "0.7.5"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
+checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
 
 [[package]]
 name = "rustc-hash"
@@ -261,46 +276,35 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 
 [[package]]
 name = "serde"
-version = "1.0.188"
+version = "1.0.204"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
+checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.188"
+version = "1.0.204"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
+checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.36",
+ "syn",
 ]
 
 [[package]]
 name = "smallvec"
-version = "1.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9"
-
-[[package]]
-name = "syn"
-version = "1.0.109"
+version = "1.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
 
 [[package]]
 name = "syn"
-version = "2.0.36"
+version = "2.0.71"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91e02e55d62894af2a08aca894c6577281f76769ba47c94d5756bec8ac6e7373"
+checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -309,13 +313,13 @@ dependencies = [
 
 [[package]]
 name = "target-lexicon"
-version = "0.12.11"
+version = "0.12.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a"
+checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2"
 
 [[package]]
 name = "tiktoken"
-version = "0.5.1"
+version = "0.7.0"
 dependencies = [
  "bstr",
  "fancy-regex",
@@ -332,19 +336,20 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
 
 [[package]]
 name = "unindent"
-version = "0.1.11"
+version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1766d682d402817b5ac4490b3c3002d91dfa0d22812f341609f97b08757359c"
+checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce"
 
 [[package]]
 name = "windows-targets"
-version = "0.48.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
 dependencies = [
  "windows_aarch64_gnullvm",
  "windows_aarch64_msvc",
  "windows_i686_gnu",
+ "windows_i686_gnullvm",
  "windows_i686_msvc",
  "windows_x86_64_gnu",
  "windows_x86_64_gnullvm",
@@ -353,42 +358,48 @@ dependencies = [
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.48.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.48.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.48.5"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.48.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.48.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
-version = "0.48.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.48.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
diff --git a/pkgs/development/python-modules/tiktoken/default.nix b/pkgs/development/python-modules/tiktoken/default.nix
index 3cf68063f1199..9ce945ebf7c33 100644
--- a/pkgs/development/python-modules/tiktoken/default.nix
+++ b/pkgs/development/python-modules/tiktoken/default.nix
@@ -1,46 +1,50 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, rustPlatform
-, cargo
-, rustc
-, setuptools
-, setuptools-rust
-, wheel
-, libiconv
-, requests
-, regex
-, blobfile
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  rustPlatform,
+  cargo,
+  rustc,
+  setuptools,
+  setuptools-rust,
+  libiconv,
+  requests,
+  regex,
+  blobfile,
 }:
 let
   pname = "tiktoken";
-  version = "0.5.1";
+  version = "0.7.0";
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-J+dzVkIyAE9PgQ/R+FI2Zz7DpW7X8SBvye2GcOvtuXo=";
+    hash = "sha256-EHcmbpScJOApH2w1BDPG8JcTZezisXOiO8O5+d7+9rY=";
   };
   postPatch = ''
     cp ${./Cargo.lock} Cargo.lock
   '';
 in
 buildPythonPackage {
-  inherit pname version src postPatch;
-  format = "pyproject";
+  inherit
+    pname
+    version
+    src
+    postPatch
+    ;
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  nativeBuildInput = [
+  build-system = [
     setuptools
     setuptools-rust
-    wheel
   ];
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src postPatch;
     name = "${pname}-${version}";
-    hash = "sha256-Q7XO+auj4tKDAGbqNn9pmJg8EJvooN2ie0lWwZVrld4=";
+    hash = "sha256-i0AQUu9ERDWBw0kjTTTyn4VHMig/k2/7wX2884MCGx8=";
   };
 
   nativeBuildInputs = [
@@ -50,9 +54,9 @@ buildPythonPackage {
     rustc
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     requests
     regex
     blobfile
@@ -61,12 +65,10 @@ buildPythonPackage {
   # almost all tests require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "tiktoken"
-  ];
+  pythonImportsCheck = [ "tiktoken" ];
 
   meta = with lib; {
-    description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models.";
+    description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models";
     homepage = "https://github.com/openai/tiktoken";
     license = licenses.mit;
     maintainers = with maintainers; [ happysalada ];
diff --git a/pkgs/development/python-modules/tikzplotlib/default.nix b/pkgs/development/python-modules/tikzplotlib/default.nix
index 564d8e58b8ee0..e09c735f4c1f6 100644
--- a/pkgs/development/python-modules/tikzplotlib/default.nix
+++ b/pkgs/development/python-modules/tikzplotlib/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, matplotlib
-, numpy
-, pillow
-, webcolors
-, flit-core
-, pytestCheckHook
-, pandas
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  matplotlib,
+  numpy,
+  pillow,
+  webcolors,
+  flit-core,
+  pytestCheckHook,
+  pandas,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/tiledb/default.nix b/pkgs/development/python-modules/tiledb/default.nix
index 3231ae8036335..a9cfbc082c902 100644
--- a/pkgs/development/python-modules/tiledb/default.nix
+++ b/pkgs/development/python-modules/tiledb/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, python
-, buildPythonPackage
-, fetchFromGitHub
-, cython
-, pybind11
-, tiledb
-, numpy
-, wheel
-, isPy3k
-, setuptools-scm
-, psutil
-, pandas
+{
+  lib,
+  python,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cython,
+  pybind11,
+  tiledb,
+  numpy,
+  wheel,
+  isPy3k,
+  setuptools-scm,
+  psutil,
+  pandas,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  buildInputs = [
-    tiledb
-  ];
+  buildInputs = [ tiledb ];
 
   propagatedBuildInputs = [
     numpy
diff --git a/pkgs/development/python-modules/tilequant/default.nix b/pkgs/development/python-modules/tilequant/default.nix
index 906f644d89b11..e6f43890f5647 100644
--- a/pkgs/development/python-modules/tilequant/default.nix
+++ b/pkgs/development/python-modules/tilequant/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchPypi
-, ordered-set
-, pillow
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools
-, setuptools-dso
-, sortedcollections
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchPypi,
+  ordered-set,
+  pillow,
+  pythonOlder,
+  setuptools,
+  setuptools-dso,
+  sortedcollections,
 }:
 
 buildPythonPackage rec {
@@ -23,12 +23,9 @@ buildPythonPackage rec {
     hash = "sha256-uW1g3nlT6Y+1beifo/MOlGxsGL7on/jcAROxSddySHk=";
   };
 
-  pythonRelaxDeps = [
-    "pillow"
-  ];
+  pythonRelaxDeps = [ "pillow" ];
 
   build-system = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -42,9 +39,7 @@ buildPythonPackage rec {
 
   doCheck = false; # there are no tests
 
-  pythonImportsCheck = [
-    "tilequant"
-  ];
+  pythonImportsCheck = [ "tilequant" ];
 
   meta = with lib; {
     description = "Tool for quantizing image colors using tile-based palette restrictions";
diff --git a/pkgs/development/python-modules/tiler/default.nix b/pkgs/development/python-modules/tiler/default.nix
index 9de7bc0ec92fa..40766f6436c6d 100644
--- a/pkgs/development/python-modules/tiler/default.nix
+++ b/pkgs/development/python-modules/tiler/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, setuptools
-, setuptools-scm
-, wheel
-, numpy
-, tqdm
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchpatch,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  numpy,
+  tqdm,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -40,9 +41,7 @@ buildPythonPackage rec {
     tqdm
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "tiler" ];
 
diff --git a/pkgs/development/python-modules/tilestache/default.nix b/pkgs/development/python-modules/tilestache/default.nix
index a33a219b1f02a..23fe0e26ea7cb 100644
--- a/pkgs/development/python-modules/tilestache/default.nix
+++ b/pkgs/development/python-modules/tilestache/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, modestmaps
-, pillow
-, pycairo
-, python-mapnik
-, simplejson
-, werkzeug
-, isPy27
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  modestmaps,
+  pillow,
+  pycairo,
+  python-mapnik,
+  simplejson,
+  werkzeug,
+  isPy27,
 }:
 
 buildPythonPackage rec {
@@ -22,12 +23,18 @@ buildPythonPackage rec {
     sha256 = "1qjrabl6qr7i6yj6v647ck92abcyklb0vmb6h6kj7x8v2cj5xbvk";
   };
 
-  propagatedBuildInputs = [ modestmaps pillow pycairo python-mapnik simplejson werkzeug ];
+  propagatedBuildInputs = [
+    modestmaps
+    pillow
+    pycairo
+    python-mapnik
+    simplejson
+    werkzeug
+  ];
 
   meta = with lib; {
-    description = "A tile server for rendered geographic data";
+    description = "Tile server for rendered geographic data";
     homepage = "http://tilestache.org";
     license = licenses.bsd3;
   };
-
 }
diff --git a/pkgs/development/python-modules/tilt-ble/default.nix b/pkgs/development/python-modules/tilt-ble/default.nix
index 1be167f9a88af..11c8961308b70 100644
--- a/pkgs/development/python-modules/tilt-ble/default.nix
+++ b/pkgs/development/python-modules/tilt-ble/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, bluetooth-sensor-state-data
-, buildPythonPackage
-, fetchFromGitHub
-, home-assistant-bluetooth
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, sensor-state-data
+{
+  lib,
+  bluetooth-sensor-state-data,
+  buildPythonPackage,
+  fetchFromGitHub,
+  home-assistant-bluetooth,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  sensor-state-data,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-ok9XWx47hcke535480NORfS1pSagaOJvMR48lYTa/Tg=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     bluetooth-sensor-state-data
@@ -33,18 +32,14 @@ buildPythonPackage rec {
     sensor-state-data
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace " --cov=tilt_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  pythonImportsCheck = [
-    "tilt_ble"
-  ];
+  pythonImportsCheck = [ "tilt_ble" ];
 
   meta = with lib; {
     description = "Library for Tilt BLE devices";
diff --git a/pkgs/development/python-modules/time-machine/default.nix b/pkgs/development/python-modules/time-machine/default.nix
index 6ce2e7194c8cd..17d3827f48530 100644
--- a/pkgs/development/python-modules/time-machine/default.nix
+++ b/pkgs/development/python-modules/time-machine/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonAtLeast
-, pythonOlder
-, setuptools
-, backports-zoneinfo
-, python-dateutil
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
+  backports-zoneinfo,
+  python-dateutil,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "time-machine";
-  version = "2.13.0";
+  version = "2.14.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,22 +21,16 @@ buildPythonPackage rec {
     owner = "adamchainz";
     repo = pname;
     rev = version;
-    hash = "sha256-SjenPLLr4JoWK5HAokwgW+bw3mfAZiuDb1N7Za5wtrw=";
+    hash = "sha256-u5RxNv+hsL+0yxtiWeYHtmMQY7bvb8WY7ipouj+IZJ8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     python-dateutil
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    backports-zoneinfo
-  ];
+  ] ++ lib.optionals (pythonOlder "3.9") [ backports-zoneinfo ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = lib.optionals (pythonAtLeast "3.9") [
     # https://github.com/adamchainz/time-machine/issues/405
@@ -47,9 +42,7 @@ buildPythonPackage rec {
     "test_move_to_datetime_with_tzinfo_zoneinfo"
   ];
 
-  pythonImportsCheck = [
-    "time_machine"
-  ];
+  pythonImportsCheck = [ "time_machine" ];
 
   meta = with lib; {
     changelog = "https://github.com/adamchainz/time-machine/blob/${src.rev}/CHANGELOG.rst";
diff --git a/pkgs/development/python-modules/timeago/default.nix b/pkgs/development/python-modules/timeago/default.nix
index 8f450d2c03a80..a1bd21cf16ae5 100644
--- a/pkgs/development/python-modules/timeago/default.nix
+++ b/pkgs/development/python-modules/timeago/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     sha256 = "sha256-PqORJKAVrjezU/yP2ky3gb1XsM8obDI3GQzi+mok/OM=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pytestFlagsArray = [ "test/testcase.py" ];
 
diff --git a/pkgs/development/python-modules/timecop/default.nix b/pkgs/development/python-modules/timecop/default.nix
index 443b609fb4c4f..8099f646606cb 100644
--- a/pkgs/development/python-modules/timecop/default.nix
+++ b/pkgs/development/python-modules/timecop/default.nix
@@ -31,7 +31,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "timecop" ];
 
   meta = with lib; {
-    description = "A port of the most excellent TimeCop Ruby Gem for Python";
+    description = "Port of the most excellent TimeCop Ruby Gem for Python";
     homepage = "https://github.com/bluekelp/pytimecop";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ zakame ];
diff --git a/pkgs/development/python-modules/timelib/default.nix b/pkgs/development/python-modules/timelib/default.nix
index 2667867505a6c..15e7251dd6a01 100644
--- a/pkgs/development/python-modules/timelib/default.nix
+++ b/pkgs/development/python-modules/timelib/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -14,14 +15,11 @@ buildPythonPackage rec {
     hash = "sha256-0bInBlVxhuYFjaiLoPhYN0AbKuneFX9ZNT3JeNglGHo=";
   };
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
   meta = with lib; {
     description = "Parse english textual date descriptions";
     homepage = "https://github.com/pediapress/timelib/";
     license = licenses.zlib;
   };
-
 }
diff --git a/pkgs/development/python-modules/timeout-decorator/default.nix b/pkgs/development/python-modules/timeout-decorator/default.nix
index 2907117d34836..ea7750dfc97e6 100644
--- a/pkgs/development/python-modules/timeout-decorator/default.nix
+++ b/pkgs/development/python-modules/timeout-decorator/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 buildPythonPackage rec {
   pname = "timeout-decorator";
   version = "0.5.0";
diff --git a/pkgs/development/python-modules/timeslot/default.nix b/pkgs/development/python-modules/timeslot/default.nix
index 1a71651ca0540..d1ac79f37995f 100644
--- a/pkgs/development/python-modules/timeslot/default.nix
+++ b/pkgs/development/python-modules/timeslot/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, poetry-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  poetry-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,13 +23,9 @@ buildPythonPackage rec {
 
   disabled = pythonOlder "3.6";
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pytestFlagsArray = [
     # The pyproject.toml specifies the flag `--cov=timeslot`,
diff --git a/pkgs/development/python-modules/timetagger/default.nix b/pkgs/development/python-modules/timetagger/default.nix
index 3edaa14529048..de944d5b26b31 100644
--- a/pkgs/development/python-modules/timetagger/default.nix
+++ b/pkgs/development/python-modules/timetagger/default.nix
@@ -1,25 +1,25 @@
-{ lib
-, stdenv
-, asgineer
-, bcrypt
-, buildPythonPackage
-, fetchFromGitHub
-, iptools
-, itemdb
-, jinja2
-, markdown
-, nodejs
-, pscript
-, pyjwt
-, pytestCheckHook
-, pythonOlder
-, requests
-, uvicorn
+{
+  lib,
+  asgineer,
+  bcrypt,
+  buildPythonPackage,
+  fetchFromGitHub,
+  iptools,
+  itemdb,
+  jinja2,
+  markdown,
+  nodejs,
+  pscript,
+  pyjwt,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  uvicorn,
 }:
 
 buildPythonPackage rec {
   pname = "timetagger";
-  version = "24.4.1";
+  version = "24.07.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -28,7 +28,7 @@ buildPythonPackage rec {
     owner = "almarklein";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-Qt6VKExigzMaEb5ZEEPHCe5DSYdx5KPIfVC0khx7pP4=";
+    hash = "sha256-zm+3vk2ZeaZjciANNVSVxDT5S2LhOAl3B4AE2RgA5Tw=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/timezonefinder/default.nix b/pkgs/development/python-modules/timezonefinder/default.nix
index 79675ebc629ae..e869dc7ddc855 100644
--- a/pkgs/development/python-modules/timezonefinder/default.nix
+++ b/pkgs/development/python-modules/timezonefinder/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cffi
-, h3
-, numba
-, numpy
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cffi,
+  h3,
+  numba,
+  numpy,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "timezonefinder";
-  version = "6.5.0";
+  version = "6.5.3";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -22,16 +23,17 @@ buildPythonPackage rec {
     owner = "jannikmi";
     repo = "timezonefinder";
     rev = "refs/tags/${version}";
-    hash = "sha256-V5g1zTdXWeJba71/eUGQbF9XOhMQuzivtGkqGD4OHMY=";
+    hash = "sha256-8fDKgM6LVe7aJgD4UfTpg0EjKGuudzYsmqniocozmAE=";
   };
 
-  nativeBuildInputs = [
-    cffi
+  build-system = [
     poetry-core
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  nativeBuildInputs = [ cffi ];
+
+  dependencies = [
     cffi
     h3
     numpy
@@ -42,9 +44,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "timezonefinder"
-  ];
+  pythonImportsCheck = [ "timezonefinder" ];
 
   preCheck = ''
     # Some tests need the CLI on the PATH
@@ -54,9 +54,9 @@ buildPythonPackage rec {
   meta = with lib; {
     changelog = "https://github.com/jannikmi/timezonefinder/blob/${version}/CHANGELOG.rst";
     description = "Module for finding the timezone of any point on earth (coordinates) offline";
-    mainProgram = "timezonefinder";
     homepage = "https://github.com/MrMinimal64/timezonefinder";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "timezonefinder";
   };
 }
diff --git a/pkgs/development/python-modules/timing-asgi/default.nix b/pkgs/development/python-modules/timing-asgi/default.nix
index d1dc1ccc81b4e..c67885f692609 100644
--- a/pkgs/development/python-modules/timing-asgi/default.nix
+++ b/pkgs/development/python-modules/timing-asgi/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, asynctest
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +24,7 @@ buildPythonPackage rec {
     --replace-fail "poetry>=" "poetry-core>="
   '';
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   pythonImportsCheck = [ "timing_asgi" ];
 
diff --git a/pkgs/development/python-modules/timm/default.nix b/pkgs/development/python-modules/timm/default.nix
index 18ac893e9261d..afee885b54464 100644
--- a/pkgs/development/python-modules/timm/default.nix
+++ b/pkgs/development/python-modules/timm/default.nix
@@ -1,37 +1,42 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pdm-backend
-, huggingface-hub
-, pyyaml
-, safetensors
-, torch
-, torchvision
-, expecttest
-, pytestCheckHook
-, pytest-timeout
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  pdm-backend,
+
+  # dependencies
+  huggingface-hub,
+  pyyaml,
+  safetensors,
+  torch,
+  torchvision,
+
+  # checks
+  expecttest,
+  pytestCheckHook,
+  pytest-timeout,
 }:
 
 buildPythonPackage rec {
   pname = "timm";
-  version = "0.9.16";
+  version = "1.0.9";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "huggingface";
     repo = "pytorch-image-models";
     rev = "refs/tags/v${version}";
-    hash = "sha256-IWEDKuI2565Z07q1MxTpzKS+CROPR6SyaD5fKcQ5eXk=";
+    hash = "sha256-iWZXile3hCUMx2q3VHJasX7rlJmT0OKBm9rkCXuWISw=";
   };
 
-  nativeBuildInputs = [
-    pdm-backend
-  ];
+  build-system = [ pdm-backend ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     huggingface-hub
     pyyaml
     safetensors
@@ -45,9 +50,7 @@ buildPythonPackage rec {
     pytest-timeout
   ];
 
-  pytestFlagsArray = [
-    "tests"
-  ];
+  pytestFlagsArray = [ "tests" ];
 
   disabledTestPaths = [
     # Takes too long and also tries to download models
@@ -64,11 +67,11 @@ buildPythonPackage rec {
     "timm.data"
   ];
 
-  meta = with lib; {
+  meta = {
     description = "PyTorch image models, scripts, and pretrained weights";
     homepage = "https://huggingface.co/docs/timm/index";
     changelog = "https://github.com/huggingface/pytorch-image-models/blob/v${version}/README.md#whats-new";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ bcdarwin ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ bcdarwin ];
   };
 }
diff --git a/pkgs/development/python-modules/timy/default.nix b/pkgs/development/python-modules/timy/default.nix
new file mode 100644
index 0000000000000..3fb4096bb5196
--- /dev/null
+++ b/pkgs/development/python-modules/timy/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "timy";
+  version = "0.4.2";
+
+  src = fetchFromGitHub {
+    owner = "ramonsaraiva";
+    repo = "timy";
+    rev = "36a97e55f058de002a0da4f2a8e18c00d944821c";
+    hash = "sha256-4Opaph8Q1tQH+C/Epur8AA26RN4vO944DjCg0zDJqxM=";
+  };
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    description = "Minimalist measurement of python code time";
+    homepage = "https://github.com/ramonsaraiva/timy";
+    license = licenses.mit;
+    maintainers = with maintainers; [ flandweber ];
+  };
+}
diff --git a/pkgs/development/python-modules/tiny-proxy/default.nix b/pkgs/development/python-modules/tiny-proxy/default.nix
index 9a319d90a1649..48c2bb04f6644 100644
--- a/pkgs/development/python-modules/tiny-proxy/default.nix
+++ b/pkgs/development/python-modules/tiny-proxy/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, anyio
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  anyio,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,20 +21,14 @@ buildPythonPackage rec {
     hash = "sha256-59T09qcOstl/yfzQmNlTNxGerQethZntwDAHwz/5FFM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    anyio
-  ];
+  propagatedBuildInputs = [ anyio ];
 
   # The tests depend on httpx-socks, whose tests depend on tiny-proxy.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "tiny_proxy"
-  ];
+  pythonImportsCheck = [ "tiny_proxy" ];
 
   meta = with lib; {
     description = "SOCKS5/SOCKS4/HTTP proxy server";
diff --git a/pkgs/development/python-modules/tinycss/default.nix b/pkgs/development/python-modules/tinycss/default.nix
index aa537c6a61351..f525e40d16b96 100644
--- a/pkgs/development/python-modules/tinycss/default.nix
+++ b/pkgs/development/python-modules/tinycss/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, cssutils
-, cython
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  cssutils,
+  cython,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,17 +24,11 @@ buildPythonPackage rec {
     sed -i "/--cov/d" setup.cfg
   '';
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
-  propagatedBuildInputs = [
-    cssutils
-  ];
+  propagatedBuildInputs = [ cssutils ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preBuild = ''
     # Force Cython to re-generate this file. If it is present, Cython will
@@ -46,15 +41,13 @@ buildPythonPackage rec {
   # Disable Cython tests
   TINYCSS_SKIP_SPEEDUPS_TESTS = true;
 
-  pythonImportsCheck = [
-    "tinycss"
-  ];
+  pythonImportsCheck = [ "tinycss" ];
 
   meta = with lib; {
     description = "Complete yet simple CSS parser for Python";
     homepage = "https://tinycss.readthedocs.io";
     changelog = "https://github.com/Kozea/tinycss/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/tinycss2/default.nix b/pkgs/development/python-modules/tinycss2/default.nix
index 5e6f441d3d3bd..730bbfc4f4d7f 100644
--- a/pkgs/development/python-modules/tinycss2/default.nix
+++ b/pkgs/development/python-modules/tinycss2/default.nix
@@ -1,26 +1,29 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, webencodings
-, pytestCheckHook
-, flit-core
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  webencodings,
+  pytestCheckHook,
+  flit-core,
 }:
 
 buildPythonPackage rec {
   pname = "tinycss2";
-  version = "1.2.1";
+  version = "1.3.0";
   format = "pyproject";
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "kozea";
     repo = "tinycss2";
-    rev = "refs/tags/v${version}";
+
+    # Tag v1.3.0 is missing the actual version number bump.
+    rev = "bda62b101530588718d931d61bcc343a628b9af9";
     # for tests
     fetchSubmodules = true;
-    hash = "sha256-rJtxMmW30NK+E+Dhh/fu6FPrEojWWdoEWNt0raYEubs=";
+    hash = "sha256-Exjxdm0VnnjHUKjquXsC/zDmwA7bELHdX1f55IGBjYk=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/tinydb/default.nix b/pkgs/development/python-modules/tinydb/default.nix
index 2786018b99adf..5ad3e1fb4cda6 100644
--- a/pkgs/development/python-modules/tinydb/default.nix
+++ b/pkgs/development/python-modules/tinydb/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pycodestyle
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pycodestyle,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-sdWcpkjC8LtOI1k0Wyk4vLXBcwYe1vuQON9J7P8JPxA=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   postPatch = ''
     substituteInPlace pytest.ini \
diff --git a/pkgs/development/python-modules/tinygrad/default.nix b/pkgs/development/python-modules/tinygrad/default.nix
index 25b1f049bf697..92aa341dd6ce7 100644
--- a/pkgs/development/python-modules/tinygrad/default.nix
+++ b/pkgs/development/python-modules/tinygrad/default.nix
@@ -1,60 +1,111 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, gpuctypes
-, numpy
-, tqdm
-, hypothesis
-, librosa
-, onnx
-, pillow
-, pytest-xdist
-, pytestCheckHook
-, safetensors
-, sentencepiece
-, tiktoken
-, torch
-, transformers
+{
+  lib,
+  config,
+  buildPythonPackage,
+  fetchFromGitHub,
+  substituteAll,
+  addDriverRunpath,
+  cudaSupport ? config.cudaSupport,
+  rocmSupport ? config.rocmSupport,
+  cudaPackages,
+  ocl-icd,
+  stdenv,
+  rocmPackages,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  numpy,
+
+  # tests
+  blobfile,
+  bottle,
+  clang,
+  hexdump,
+  hypothesis,
+  librosa,
+  onnx,
+  pillow,
+  pydot,
+  pytest-xdist,
+  pytestCheckHook,
+  safetensors,
+  sentencepiece,
+  tiktoken,
+  torch,
+  tqdm,
+  transformers,
 }:
 
 buildPythonPackage rec {
   pname = "tinygrad";
-  version = "0.8.0";
+  version = "0.9.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "tinygrad";
     repo = "tinygrad";
     rev = "refs/tags/v${version}";
-    hash = "sha256-QAccZ79qUbe27yUykIf22WdkxYUlOffnMlShakKfp60=";
+    hash = "sha256-fCKtJhZtqq6yjc6m41uvikzM9GArUlB8Q7jN/Np8+SM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
+  patches = [
+    (substituteAll {
+      src = ./fix-dlopen-cuda.patch;
+      inherit (addDriverRunpath) driverLink;
+      libnvrtc =
+        if cudaSupport then
+          "${lib.getLib cudaPackages.cuda_nvrtc}/lib/libnvrtc.so"
+        else
+          "Please import nixpkgs with `config.cudaSupport = true`";
+    })
   ];
 
-  propagatedBuildInputs = [
-    gpuctypes
-    numpy
-    tqdm
-  ];
+  postPatch =
+    ''
+      substituteInPlace tinygrad/runtime/autogen/opencl.py \
+        --replace-fail "ctypes.util.find_library('OpenCL')" "'${ocl-icd}/lib/libOpenCL.so'"
+    ''
+    + lib.optionalString rocmSupport ''
+      substituteInPlace tinygrad/runtime/autogen/hip.py \
+        --replace-fail "/opt/rocm/lib/libamdhip64.so" "${rocmPackages.clr}/lib/libamdhip64.so" \
+        --replace-fail "/opt/rocm/lib/libhiprtc.so" "${rocmPackages.clr}/lib/libhiprtc.so" \
+
+      substituteInPlace tinygrad/runtime/autogen/comgr.py \
+        --replace-fail "/opt/rocm/lib/libamd_comgr.so" "${rocmPackages.rocm-comgr}/lib/libamd_comgr.so"
+    '';
+
+  build-system = [ setuptools ];
+
+  dependencies =
+    [
+      numpy
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # pyobjc-framework-libdispatch
+      # pyobjc-framework-metal
+    ];
 
   pythonImportsCheck = [ "tinygrad" ];
 
   nativeCheckInputs = [
+    blobfile
+    bottle
+    clang
+    hexdump
     hypothesis
     librosa
     onnx
     pillow
+    pydot
     pytest-xdist
     pytestCheckHook
     safetensors
     sentencepiece
     tiktoken
     torch
+    tqdm
     transformers
   ];
 
@@ -62,50 +113,70 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d)
   '';
 
-  disabledTests = [
-    # Require internet access
-    "test_benchmark_openpilot_model"
-    "test_bn_alone"
-    "test_bn_linear"
-    "test_bn_mnist"
-    "test_car"
-    "test_chicken"
-    "test_chicken_bigbatch"
-    "test_conv_mnist"
-    "testCopySHMtoDefault"
-    "test_data_parallel_resnet"
-    "test_e2e_big"
-    "test_fetch_small"
-    "test_huggingface_enet_safetensors"
-    "test_linear_mnist"
-    "test_load_convnext"
-    "test_load_enet"
-    "test_load_enet_alt"
-    "test_load_llama2bfloat"
-    "test_load_resnet"
-    "test_openpilot_model"
-    "test_resnet"
-    "test_shufflenet"
-    "test_transcribe_batch12"
-    "test_transcribe_batch21"
-    "test_transcribe_file1"
-    "test_transcribe_file2"
-    "test_transcribe_long"
-    "test_transcribe_long_no_batch"
-    "test_vgg7"
-  ];
+  disabledTests =
+    [
+      # flaky: https://github.com/tinygrad/tinygrad/issues/6542
+      # TODO: re-enable when https://github.com/tinygrad/tinygrad/pull/6560 gets merged
+      "test_broadcastdot"
+
+      # Require internet access
+      "test_benchmark_openpilot_model"
+      "test_bn_alone"
+      "test_bn_linear"
+      "test_bn_mnist"
+      "test_car"
+      "test_chicken"
+      "test_chicken_bigbatch"
+      "test_conv_mnist"
+      "testCopySHMtoDefault"
+      "test_data_parallel_resnet"
+      "test_e2e_big"
+      "test_fetch_small"
+      "test_huggingface_enet_safetensors"
+      "test_index_mnist"
+      "test_linear_mnist"
+      "test_load_convnext"
+      "test_load_enet"
+      "test_load_enet_alt"
+      "test_load_llama2bfloat"
+      "test_load_resnet"
+      "test_mnist_val"
+      "test_openpilot_model"
+      "test_resnet"
+      "test_shufflenet"
+      "test_transcribe_batch12"
+      "test_transcribe_batch21"
+      "test_transcribe_file1"
+      "test_transcribe_file2"
+      "test_transcribe_long"
+      "test_transcribe_long_no_batch"
+      "test_vgg7"
+    ]
+    # Fail on aarch64-linux with AssertionError
+    ++ lib.optionals (stdenv.hostPlatform.system == "aarch64-linux") [
+      "test_casts_from"
+      "test_casts_to"
+      "test_int8"
+      "test_int8_to_uint16_negative"
+    ];
 
   disabledTestPaths = [
-    "test/extra/test_lr_scheduler.py"
+    # Require internet access
     "test/models/test_mnist.py"
     "test/models/test_real_world.py"
+    "test/testextra/test_lr_scheduler.py"
+
+    # Files under this directory are not considered as tests by upstream and should be skipped
+    "extra/"
   ];
 
-  meta = with lib; {
-    description = "A simple and powerful neural network framework";
+  meta = {
+    description = "Simple and powerful neural network framework";
     homepage = "https://github.com/tinygrad/tinygrad";
     changelog = "https://github.com/tinygrad/tinygrad/releases/tag/v${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+    # Requires unpackaged pyobjc-framework-libdispatch and pyobjc-framework-metal
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/tinygrad/fix-dlopen-cuda.patch b/pkgs/development/python-modules/tinygrad/fix-dlopen-cuda.patch
new file mode 100644
index 0000000000000..db74eab45bc05
--- /dev/null
+++ b/pkgs/development/python-modules/tinygrad/fix-dlopen-cuda.patch
@@ -0,0 +1,49 @@
+diff --git a/tinygrad/runtime/autogen/cuda.py b/tinygrad/runtime/autogen/cuda.py
+index a30c8f53..e2078ff6 100644
+--- a/tinygrad/runtime/autogen/cuda.py
++++ b/tinygrad/runtime/autogen/cuda.py
+@@ -145,7 +145,19 @@ def char_pointer_cast(string, encoding='utf-8'):
+ 
+ 
+ _libraries = {}
+-_libraries['libcuda.so'] = ctypes.CDLL(ctypes.util.find_library('cuda'))
++libcuda = None
++try:
++    libcuda = ctypes.CDLL('libcuda.so')
++except OSError:
++    pass
++try:
++    libcuda = ctypes.CDLL('@driverLink@/lib/libcuda.so')
++except OSError:
++    pass
++if libcuda is None:
++    raise RuntimeError(f"`libcuda.so` not found")
++
++_libraries['libcuda.so'] = libcuda
+ 
+ 
+ cuuint32_t = ctypes.c_uint32
+diff --git a/tinygrad/runtime/autogen/nvrtc.py b/tinygrad/runtime/autogen/nvrtc.py
+index 6af74187..c5a6c6c4 100644
+--- a/tinygrad/runtime/autogen/nvrtc.py
++++ b/tinygrad/runtime/autogen/nvrtc.py
+@@ -10,7 +10,18 @@ import ctypes, ctypes.util
+ 
+ 
+ _libraries = {}
+-_libraries['libnvrtc.so'] = ctypes.CDLL(ctypes.util.find_library('nvrtc'))
++libnvrtc = None
++try:
++    libnvrtc = ctypes.CDLL('libnvrtc.so')
++except OSError:
++    pass
++try:
++    libnvrtc = ctypes.CDLL('@libnvrtc@')
++except OSError:
++    pass
++if libnvrtc is None:
++    raise RuntimeError(f"`libnvrtc.so` not found")
++_libraries['libnvrtc.so'] = ctypes.CDLL(libnvrtc)
+ def string_cast(char_pointer, encoding='utf-8', errors='strict'):
+     value = ctypes.cast(char_pointer, ctypes.c_char_p).value
+     if value is not None and encoding is not None:
diff --git a/pkgs/development/python-modules/tinyobjloader-py/default.nix b/pkgs/development/python-modules/tinyobjloader-py/default.nix
index 21dc0a5f4ddf2..ea3d31342c259 100644
--- a/pkgs/development/python-modules/tinyobjloader-py/default.nix
+++ b/pkgs/development/python-modules/tinyobjloader-py/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, pybind11, tinyobjloader }:
+{
+  lib,
+  buildPythonPackage,
+  pybind11,
+  tinyobjloader,
+}:
 
 buildPythonPackage rec {
   pname = "tinyobjloader-py";
@@ -16,7 +21,7 @@ buildPythonPackage rec {
   doCheck = false;
   pythonImportsCheck = [ "tinyobjloader" ];
 
-  meta = with lib; tinyobjloader.meta // {
+  meta = tinyobjloader.meta // {
     description = "Python wrapper for the C++ wavefront .obj loader tinyobjloader";
   };
 }
diff --git a/pkgs/development/python-modules/tinyrecord/default.nix b/pkgs/development/python-modules/tinyrecord/default.nix
index 025ffdeefd495..137d386a652f9 100644
--- a/pkgs/development/python-modules/tinyrecord/default.nix
+++ b/pkgs/development/python-modules/tinyrecord/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, tinydb
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  tinydb,
 }:
 
 buildPythonPackage rec {
@@ -22,13 +23,9 @@ buildPythonPackage rec {
     tinydb
   ];
 
-  pytestFlagsArray = [
-    "tests.py"
-  ];
+  pytestFlagsArray = [ "tests.py" ];
 
-  pythonImportsCheck = [
-    "tinyrecord"
-  ];
+  pythonImportsCheck = [ "tinyrecord" ];
 
   meta = with lib; {
     description = "Transaction support for TinyDB";
diff --git a/pkgs/development/python-modules/tinysegmenter/default.nix b/pkgs/development/python-modules/tinysegmenter/default.nix
index 2b56544061b70..788332d379e8c 100644
--- a/pkgs/development/python-modules/tinysegmenter/default.nix
+++ b/pkgs/development/python-modules/tinysegmenter/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-, unittestCheckHook
+  unittestCheckHook,
 
-, setuptools
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -17,15 +18,14 @@ buildPythonPackage rec {
     hash = "sha256-ZEWL26VLp0gsAseF+WDPPWz2FZSk2rPWTDJUOQlPwbc=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [ "-s" "tests" ];
+  unittestFlagsArray = [
+    "-s"
+    "tests"
+  ];
 
   pythonImportsCheck = [ "tinysegmenter" ];
 
diff --git a/pkgs/development/python-modules/tinytag/default.nix b/pkgs/development/python-modules/tinytag/default.nix
new file mode 100644
index 0000000000000..c155019517923
--- /dev/null
+++ b/pkgs/development/python-modules/tinytag/default.nix
@@ -0,0 +1,33 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "tinytag";
+  version = "1.10.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "tinytag";
+    repo = "tinytag";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Kg67EwDIi/Io7KKnNiqPzQKginrfuE6FAeOCjFgEJkY=";
+  };
+
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "tinytag" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "Read audio file metadata";
+    homepage = "https://github.com/tinytag/tinytag";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/tinytuya/default.nix b/pkgs/development/python-modules/tinytuya/default.nix
new file mode 100644
index 0000000000000..20398ec3584d9
--- /dev/null
+++ b/pkgs/development/python-modules/tinytuya/default.nix
@@ -0,0 +1,46 @@
+{
+  lib,
+  buildPythonPackage,
+  colorama,
+  cryptography,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "tinytuya";
+  version = "1.15.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "jasonacox";
+    repo = "tinytuya";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-T7bT4be/h67iPIH/7hjNCYsUDP+4o4HLV523sBIjGVs=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    cryptography
+    requests
+    colorama
+  ];
+
+  # Tests require real network resources
+  doCheck = false;
+
+  pythonImportsCheck = [ "tinytuya" ];
+
+  meta = with lib; {
+    description = "Python API for Tuya WiFi smart devices using a direct local area network (LAN) connection or the cloud (TuyaCloud API)";
+    homepage = "https://github.com/jasonacox/tinytuya";
+    changelog = "https://github.com/jasonacox/tinytuya/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ pathob ];
+  };
+}
diff --git a/pkgs/development/python-modules/tissue/default.nix b/pkgs/development/python-modules/tissue/default.nix
deleted file mode 100644
index 3c5b1a452b5d3..0000000000000
--- a/pkgs/development/python-modules/tissue/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, pep8
-}:
-
-buildPythonPackage rec {
-  pname = "tissue";
-  version = "0.9.2";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "7e34726c3ec8fae358a7faf62de172db15716f5582e5192a109e33348bd76c2e";
-  };
-
-  buildInputs = [ nose ];
-  propagatedBuildInputs = [ pep8 ];
-
-  meta = with lib; {
-    homepage = "https://github.com/WoLpH/tissue";
-    description = "Tissue - automated pep8 checker for nose";
-    license = licenses.lgpl2;
-    maintainers = with maintainers; [ domenkozar ];
-  };
-
-}
diff --git a/pkgs/development/python-modules/titlecase/default.nix b/pkgs/development/python-modules/titlecase/default.nix
index 73d6f7b8876db..b6bd8b10719ce 100644
--- a/pkgs/development/python-modules/titlecase/default.nix
+++ b/pkgs/development/python-modules/titlecase/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, regex
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  regex,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -21,31 +22,21 @@ buildPythonPackage rec {
     hash = "sha256-aJbbfNnQvmmYPXVOO+xx7ADetsxE+jnVQOVDzV5jUp8=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    regex
-  ];
+  propagatedBuildInputs = [ regex ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "titlecase/tests.py"
-  ];
+  pytestFlagsArray = [ "titlecase/tests.py" ];
 
-  pythonImportsCheck = [
-    "titlecase"
-  ];
+  pythonImportsCheck = [ "titlecase" ];
 
   meta = with lib; {
     description = "Python library to capitalize strings as specified by the New York Times";
     mainProgram = "titlecase";
     homepage = "https://github.com/ppannuto/python-titlecase";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/tkinter/default.nix b/pkgs/development/python-modules/tkinter/default.nix
index ccfc729070145..e051bbf86d98d 100644
--- a/pkgs/development/python-modules/tkinter/default.nix
+++ b/pkgs/development/python-modules/tkinter/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, python
-, py
-, isPyPy
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  python,
+  py,
+  isPyPy,
 }:
 
 buildPythonPackage {
@@ -14,20 +15,22 @@ buildPythonPackage {
 
   disabled = isPyPy;
 
-  installPhase = ''
-    # Move the tkinter module
-    mkdir -p $out/${py.sitePackages}
-    mv lib/${py.libPrefix}/lib-dynload/_tkinter* $out/${py.sitePackages}/
-  '' + lib.optionalString (!stdenv.isDarwin) ''
-    # Update the rpath to point to python without x11Support
-    old_rpath=$(patchelf --print-rpath $out/${py.sitePackages}/_tkinter*)
-    new_rpath=$(sed "s#${py}#${python}#g" <<< "$old_rpath" )
-    patchelf --set-rpath $new_rpath $out/${py.sitePackages}/_tkinter*
-  '';
+  installPhase =
+    ''
+      # Move the tkinter module
+      mkdir -p $out/${py.sitePackages}
+      mv lib/${py.libPrefix}/lib-dynload/_tkinter* $out/${py.sitePackages}/
+    ''
+    + lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
+      # Update the rpath to point to python without x11Support
+      old_rpath=$(patchelf --print-rpath $out/${py.sitePackages}/_tkinter*)
+      new_rpath=$(sed "s#${py}#${python}#g" <<< "$old_rpath" )
+      patchelf --set-rpath $new_rpath $out/${py.sitePackages}/_tkinter*
+    '';
 
   meta = py.meta // {
     # Based on first sentence from https://docs.python.org/3/library/tkinter.html
-    description = "The standard Python interface to the Tcl/Tk GUI toolkit";
+    description = "Standard Python interface to the Tcl/Tk GUI toolkit";
     longDescription = ''
       The tkinter package (“Tk interface”) is the standard Python interface to
       the Tcl/Tk GUI toolkit. Both Tk and tkinter are available on most Unix
@@ -50,5 +53,4 @@ buildPythonPackage {
       documentation for details that are unchanged.
     '';
   };
-
 }
diff --git a/pkgs/development/python-modules/tld/default.nix b/pkgs/development/python-modules/tld/default.nix
index 8ec2c85d63a16..e6507b54c994c 100644
--- a/pkgs/development/python-modules/tld/default.nix
+++ b/pkgs/development/python-modules/tld/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, factory-boy
-, faker
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  factory-boy,
+  faker,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     sed -i "/--cov/d" pytest.ini
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   checkInputs = [
     factory-boy
@@ -39,9 +38,7 @@ buildPythonPackage rec {
     echo > src/tld/tests/test_commands.py
   '';
 
-  pythonImportsCheck = [
-    "tld"
-  ];
+  pythonImportsCheck = [ "tld" ];
 
   meta = with lib; {
     description = "Extracts the top level domain (TLD) from the URL given";
@@ -50,7 +47,11 @@ buildPythonPackage rec {
     changelog = "https://github.com/barseghyanartur/tld/blob/${version}/CHANGELOG.rst";
     # https://github.com/barseghyanartur/tld/blob/master/README.rst#license
     # MPL-1.1 OR GPL-2.0-only OR LGPL-2.1-or-later
-    license = with licenses; [ lgpl21Plus mpl11 gpl2Only ];
+    license = with licenses; [
+      lgpl21Plus
+      mpl11
+      gpl2Only
+    ];
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/tldextract/default.nix b/pkgs/development/python-modules/tldextract/default.nix
index 2aab849ae5f0d..a4044fc8a0ced 100644
--- a/pkgs/development/python-modules/tldextract/default.nix
+++ b/pkgs/development/python-modules/tldextract/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, filelock
-, idna
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-file
-, responses
-, setuptools
-, setuptools-scm
-, syrupy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  filelock,
+  idna,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-file,
+  responses,
+  setuptools,
+  setuptools-scm,
+  syrupy,
 }:
 
 buildPythonPackage rec {
@@ -47,9 +48,7 @@ buildPythonPackage rec {
     syrupy
   ];
 
-  pythonImportsCheck = [
-    "tldextract"
-  ];
+  pythonImportsCheck = [ "tldextract" ];
 
   meta = with lib; {
     description = "Python module to accurately separate the TLD from the domain of an URL";
diff --git a/pkgs/development/python-modules/tlds/default.nix b/pkgs/development/python-modules/tlds/default.nix
index 3967781bb0f8f..e161c5495f593 100644
--- a/pkgs/development/python-modules/tlds/default.nix
+++ b/pkgs/development/python-modules/tlds/default.nix
@@ -1,35 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  nix-update-script,
 }:
 
 buildPythonPackage rec {
   pname = "tlds";
-  version = "2023110300";
+  version = "2024071000";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "kichik";
     repo = "tlds";
     rev = "refs/tags/${version}";
-    hash = "sha256-rmKqY7Z4bBR4r+w4gH04g0Xm9N7QeMVcuFR3pB/pOQY=";
+    hash = "sha256-xt2IdF7V8NUW9nUg8x7XbMHLWir6CHAQcRIiH6ejV5M=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "tlds"
-  ];
+  pythonImportsCheck = [ "tlds" ];
 
   # no tests
   doCheck = false;
 
+  passthru.updateScript = nix-update-script { };
+
   meta = with lib; {
     description = "Automatically updated list of valid TLDs taken directly from IANA";
-    homepage = "https://github.com/mweinelt/tlds";
+    homepage = "https://github.com/kichik/tlds";
     license = licenses.mit;
     maintainers = with maintainers; [ hexa ];
   };
diff --git a/pkgs/development/python-modules/tls-client/default.nix b/pkgs/development/python-modules/tls-client/default.nix
index 77e7a2f3e55c1..aea819eaca8e7 100644
--- a/pkgs/development/python-modules/tls-client/default.nix
+++ b/pkgs/development/python-modules/tls-client/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, typing-extensions
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  typing-extensions,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,20 +21,14 @@ buildPythonPackage rec {
     hash = "sha256-0eH9fA/oQzrgXcQilUdg4AaTqezj1Q9hP9olhZEDeBc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ typing-extensions ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "tls_client"
-  ];
+  pythonImportsCheck = [ "tls_client" ];
 
   meta = with lib; {
     description = "Advanced HTTP Library";
diff --git a/pkgs/development/python-modules/tls-parser/default.nix b/pkgs/development/python-modules/tls-parser/default.nix
index c9b317c3c22b1..9c5cc5724f196 100644
--- a/pkgs/development/python-modules/tls-parser/default.nix
+++ b/pkgs/development/python-modules/tls-parser/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, pythonOlder
-, fetchFromGitHub
-, buildPythonPackage
-, pytestCheckHook
+{
+  lib,
+  pythonOlder,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-2XHhUDiJ1EctnYdxYFbNSVLF8dmHP9cZXjziOE9+Dew=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "tls_parser"
-  ];
+  pythonImportsCheck = [ "tls_parser" ];
 
   meta = with lib; {
     description = "Small library to parse TLS records";
diff --git a/pkgs/development/python-modules/tlsh/default.nix b/pkgs/development/python-modules/tlsh/default.nix
index a64fd4fd79c2a..8bc321100aeba 100644
--- a/pkgs/development/python-modules/tlsh/default.nix
+++ b/pkgs/development/python-modules/tlsh/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cmake
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cmake,
 }:
 
 buildPythonPackage rec {
@@ -31,5 +32,4 @@ buildPythonPackage rec {
     license = licenses.asl20;
     platforms = platforms.unix;
   };
-
 }
diff --git a/pkgs/development/python-modules/tlslite-ng/default.nix b/pkgs/development/python-modules/tlslite-ng/default.nix
index 467a50a4027e5..1d715c6758f74 100644
--- a/pkgs/development/python-modules/tlslite-ng/default.nix
+++ b/pkgs/development/python-modules/tlslite-ng/default.nix
@@ -1,26 +1,45 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, ecdsa
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  ecdsa,
+  hypothesis,
+  pythonAtLeast,
+  pytestCheckHook,
 }:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "tlslite-ng";
-  version = "0.7.6";
-  format = "setuptools";
+  version = "0.8.0b1-unstable-2024-06-24";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "6ab56f0e9629ce3d807eb528c9112defa9f2e00af2b2961254e8429ca5c1ff00";
+  src = fetchFromGitHub {
+    owner = "tlsfuzzer";
+    repo = "tlslite-ng";
+    rev = "4d2c6b8fc8d14bb5c90c8360bdb6f617e8e38591";
+    hash = "sha256-VCQjxZIs4rzlFrIakXI7YeLz7Ws9WRf8zGPcSryO9Ko=";
   };
 
-  buildInputs = [ ecdsa ];
+  build-system = [ setuptools ];
+
+  dependencies = [ ecdsa ];
+
+  nativeCheckInputs = [
+    hypothesis
+    pytestCheckHook
+  ];
+
+  # This file imports asyncore which is removed in 3.12
+  disabledTestPaths = lib.optionals (pythonAtLeast "3.12") [
+    "tlslite/integration/tlsasyncdispatchermixin.py"
+  ];
 
   meta = with lib; {
-    description = "Pure python implementation of SSL and TLS.";
-    homepage = "https://pypi.python.org/pypi/tlslite-ng";
-    license = licenses.lgpl2;
+    changelog = "https://github.com/tlsfuzzer/tlslite-ng/releases/tag/v${version}";
+    description = "Pure python implementation of SSL and TLS";
+    homepage = "https://github.com/tlsfuzzer/tlslite-ng";
+    license = licenses.lgpl21Only;
     maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/tlslite/default.nix b/pkgs/development/python-modules/tlslite/default.nix
index 52b662be2b2e4..069377735f6b9 100644
--- a/pkgs/development/python-modules/tlslite/default.nix
+++ b/pkgs/development/python-modules/tlslite/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -13,9 +14,8 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "A pure Python implementation of SSL and TLS";
+    description = "Pure Python implementation of SSL and TLS";
     homepage = "https://pypi.python.org/pypi/tlslite";
     license = licenses.bsd3;
   };
-
 }
diff --git a/pkgs/development/python-modules/tlv8/default.nix b/pkgs/development/python-modules/tlv8/default.nix
index 05ece63e42e0a..4e3045ddff503 100644
--- a/pkgs/development/python-modules/tlv8/default.nix
+++ b/pkgs/development/python-modules/tlv8/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     sha256 = "sha256-G35xMFYasKD3LnGi9q8wBmmFvqgtg0HPdC+y82nxRWA=";
   };
 
-  checkInputs = [
-    pytestCheckHook
-  ];
+  checkInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "tlv8"
-  ];
+  pythonImportsCheck = [ "tlv8" ];
 
   meta = with lib; {
     description = "Type-Length-Value8 (TLV8) for Python";
diff --git a/pkgs/development/python-modules/tmb/default.nix b/pkgs/development/python-modules/tmb/default.nix
index 1c5869ac53773..9c97153d9d22d 100644
--- a/pkgs/development/python-modules/tmb/default.nix
+++ b/pkgs/development/python-modules/tmb/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,13 +22,9 @@ buildPythonPackage rec {
 
   VERSION = version;
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
-  pythonImportsCheck = [
-    "tmb"
-  ];
+  pythonImportsCheck = [ "tmb" ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/todoist-api-python/default.nix b/pkgs/development/python-modules/todoist-api-python/default.nix
index 823fee06a4ac4..1c4ff4eafcd8e 100644
--- a/pkgs/development/python-modules/todoist-api-python/default.nix
+++ b/pkgs/development/python-modules/todoist-api-python/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, requests
-, responses
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  responses,
 }:
 
 buildPythonPackage rec {
@@ -33,13 +34,9 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -47,9 +44,7 @@ buildPythonPackage rec {
     responses
   ];
 
-  pythonImportsCheck = [
-    "todoist_api_python"
-  ];
+  pythonImportsCheck = [ "todoist_api_python" ];
 
   meta = with lib; {
     description = "Library for the Todoist REST API";
diff --git a/pkgs/development/python-modules/todoist/default.nix b/pkgs/development/python-modules/todoist/default.nix
index d3d93e79946b7..9a7eec1354f61 100644
--- a/pkgs/development/python-modules/todoist/default.nix
+++ b/pkgs/development/python-modules/todoist/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, requests
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  requests,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,18 +18,14 @@ buildPythonPackage rec {
     hash = "sha256-Rkg6eSLiQe8DZaVu2DEnlKLe8RLkRwKmpw+TaYj+lp0=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
-  pythonImportsCheck = [
-    "todoist"
-  ];
+  pythonImportsCheck = [ "todoist" ];
 
   meta = with lib; {
-    description = "The official Todoist Python API library";
+    description = "Official Todoist Python API library";
     homepage = "https://todoist-python.readthedocs.io/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/toggl-cli/default.nix b/pkgs/development/python-modules/toggl-cli/default.nix
index 8e221c312bae0..5c0cd5a17b1c2 100644
--- a/pkgs/development/python-modules/toggl-cli/default.nix
+++ b/pkgs/development/python-modules/toggl-cli/default.nix
@@ -13,6 +13,7 @@
   prettytable,
   pytest-mock,
   pytestCheckHook,
+  pytest-cov-stub,
   pythonOlder,
   requests,
   setuptools,
@@ -37,7 +38,7 @@ buildPythonPackage rec {
     substituteInPlace requirements.txt \
       --replace-fail "==" ">="
     substituteInPlace pytest.ini \
-      --replace ' --cov toggl -m "not premium"' ""
+      --replace-fail ' -m "not premium"' ""
   '';
 
   build-system = [
@@ -60,6 +61,7 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
     pytest-mock
     faker
     factory-boy
diff --git a/pkgs/development/python-modules/token-bucket/default.nix b/pkgs/development/python-modules/token-bucket/default.nix
index 0805ee9dea39e..1af40f588f575 100644
--- a/pkgs/development/python-modules/token-bucket/default.nix
+++ b/pkgs/development/python-modules/token-bucket/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -36,15 +37,11 @@ buildPythonPackage rec {
       --replace "'pytest-runner'" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   meta = with lib; {
     description = "Token Bucket Implementation for Python Web Apps";
diff --git a/pkgs/development/python-modules/tokenize-rt/default.nix b/pkgs/development/python-modules/tokenize-rt/default.nix
index 662f96479834e..1634f76813630 100644
--- a/pkgs/development/python-modules/tokenize-rt/default.nix
+++ b/pkgs/development/python-modules/tokenize-rt/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, lib
-, fetchFromGitHub
-, isPy27
-, setuptools
-, pytestCheckHook
+{
+  buildPythonPackage,
+  lib,
+  fetchFromGitHub,
+  isPy27,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,16 +21,12 @@ buildPythonPackage rec {
     hash = "sha256-G4Dn6iZLVOovzfEt9eMzp93mTX+bo0tHI5cCbaJLxBQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A wrapper around the stdlib `tokenize` which roundtrips";
+    description = "Wrapper around the stdlib `tokenize` which roundtrips";
     mainProgram = "tokenize-rt";
     homepage = "https://github.com/asottile/tokenize-rt";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/tokenizers/Cargo.lock b/pkgs/development/python-modules/tokenizers/Cargo.lock
index a0324bff8aba5..aa12731f49c23 100644
--- a/pkgs/development/python-modules/tokenizers/Cargo.lock
+++ b/pkgs/development/python-modules/tokenizers/Cargo.lock
@@ -13,57 +13,58 @@ dependencies = [
 
 [[package]]
 name = "anstream"
-version = "0.6.13"
+version = "0.6.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb"
+checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526"
 dependencies = [
  "anstyle",
  "anstyle-parse",
  "anstyle-query",
  "anstyle-wincon",
  "colorchoice",
+ "is_terminal_polyfill",
  "utf8parse",
 ]
 
 [[package]]
 name = "anstyle"
-version = "1.0.6"
+version = "1.0.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
+checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1"
 
 [[package]]
 name = "anstyle-parse"
-version = "0.2.3"
+version = "0.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c"
+checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb"
 dependencies = [
  "utf8parse",
 ]
 
 [[package]]
 name = "anstyle-query"
-version = "1.0.2"
+version = "1.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648"
+checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a"
 dependencies = [
- "windows-sys",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "anstyle-wincon"
-version = "3.0.2"
+version = "3.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7"
+checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8"
 dependencies = [
  "anstyle",
- "windows-sys",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "autocfg"
-version = "1.2.0"
+version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
 
 [[package]]
 name = "base64"
@@ -79,15 +80,21 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
 name = "bitflags"
-version = "2.5.0"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 
 [[package]]
 name = "cc"
-version = "1.0.94"
+version = "1.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7"
+checksum = "504bdec147f2cc13c8b57ed9401fd8a147cc66b67ad5cb241394244f2c947549"
 
 [[package]]
 name = "cfg-if"
@@ -97,9 +104,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[package]]
 name = "colorchoice"
-version = "1.0.0"
+version = "1.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0"
 
 [[package]]
 name = "console"
@@ -111,7 +118,7 @@ dependencies = [
  "lazy_static",
  "libc",
  "unicode-width",
- "windows-sys",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -135,15 +142,15 @@ dependencies = [
 
 [[package]]
 name = "crossbeam-utils"
-version = "0.8.19"
+version = "0.8.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
 
 [[package]]
 name = "darling"
-version = "0.20.8"
+version = "0.20.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391"
+checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"
 dependencies = [
  "darling_core",
  "darling_macro",
@@ -151,9 +158,9 @@ dependencies = [
 
 [[package]]
 name = "darling_core"
-version = "0.20.8"
+version = "0.20.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f"
+checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5"
 dependencies = [
  "fnv",
  "ident_case",
@@ -165,9 +172,9 @@ dependencies = [
 
 [[package]]
 name = "darling_macro"
-version = "0.20.8"
+version = "0.20.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f"
+checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
 dependencies = [
  "darling_core",
  "quote",
@@ -207,9 +214,9 @@ dependencies = [
 
 [[package]]
 name = "either"
-version = "1.11.0"
+version = "1.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2"
+checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
 
 [[package]]
 name = "encode_unicode"
@@ -219,9 +226,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
 
 [[package]]
 name = "env_filter"
-version = "0.1.0"
+version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea"
+checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab"
 dependencies = [
  "log",
  "regex",
@@ -229,9 +236,9 @@ dependencies = [
 
 [[package]]
 name = "env_logger"
-version = "0.11.3"
+version = "0.11.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9"
+checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d"
 dependencies = [
  "anstream",
  "anstyle",
@@ -242,12 +249,12 @@ dependencies = [
 
 [[package]]
 name = "errno"
-version = "0.3.8"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
+checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
 dependencies = [
  "libc",
- "windows-sys",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -261,9 +268,9 @@ dependencies = [
 
 [[package]]
 name = "fastrand"
-version = "2.0.2"
+version = "2.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984"
+checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a"
 
 [[package]]
 name = "fnv"
@@ -273,9 +280,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
 
 [[package]]
 name = "getrandom"
-version = "0.2.14"
+version = "0.2.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
 dependencies = [
  "cfg-if",
  "libc",
@@ -321,14 +328,20 @@ checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
 
 [[package]]
 name = "instant"
-version = "0.1.12"
+version = "0.1.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
 dependencies = [
  "cfg-if",
 ]
 
 [[package]]
+name = "is_terminal_polyfill"
+version = "1.70.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
+
+[[package]]
 name = "itertools"
 version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -354,27 +367,27 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
 
 [[package]]
 name = "lazy_static"
-version = "1.4.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
 
 [[package]]
 name = "libc"
-version = "0.2.153"
+version = "0.2.155"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.4.13"
+version = "0.4.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
+checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
 
 [[package]]
 name = "lock_api"
-version = "0.4.11"
+version = "0.4.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
 dependencies = [
  "autocfg",
  "scopeguard",
@@ -382,9 +395,9 @@ dependencies = [
 
 [[package]]
 name = "log"
-version = "0.4.21"
+version = "0.4.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
+checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
 
 [[package]]
 name = "macro_rules_attribute"
@@ -404,9 +417,9 @@ checksum = "b8dd856d451cc0da70e2ef2ce95a18e39a93b7558bedf10201ad28503f918568"
 
 [[package]]
 name = "matrixmultiply"
-version = "0.3.8"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2"
+checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a"
 dependencies = [
  "autocfg",
  "rawpointer",
@@ -414,9 +427,9 @@ dependencies = [
 
 [[package]]
 name = "memchr"
-version = "2.7.2"
+version = "2.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
 
 [[package]]
 name = "memoffset"
@@ -435,9 +448,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
 
 [[package]]
 name = "monostate"
-version = "0.1.12"
+version = "0.1.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a20fffcd8ca4c69d31e036a71abc400147b41f90895df4edcb36497a1f8af8bf"
+checksum = "0d208407d7552cd041d8cdb69a1bc3303e029c598738177a3d87082004dc0e1e"
 dependencies = [
  "monostate-impl",
  "serde",
@@ -445,9 +458,9 @@ dependencies = [
 
 [[package]]
 name = "monostate-impl"
-version = "0.1.12"
+version = "0.1.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf307cbbbd777a9c10cec88ddafee572b3484caad5cce0c9236523c3803105a6"
+checksum = "a7ce64b975ed4f123575d11afd9491f2e37bbd5813fbfbc0f09ae1fbddea74e0"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -479,9 +492,9 @@ dependencies = [
 
 [[package]]
 name = "num-complex"
-version = "0.4.5"
+version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6"
+checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
 dependencies = [
  "num-traits",
 ]
@@ -497,9 +510,9 @@ dependencies = [
 
 [[package]]
 name = "num-traits"
-version = "0.2.18"
+version = "0.2.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
 dependencies = [
  "autocfg",
 ]
@@ -555,9 +568,9 @@ dependencies = [
 
 [[package]]
 name = "parking_lot"
-version = "0.12.1"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
 dependencies = [
  "lock_api",
  "parking_lot_core",
@@ -565,22 +578,22 @@ dependencies = [
 
 [[package]]
 name = "parking_lot_core"
-version = "0.9.9"
+version = "0.9.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
 dependencies = [
  "cfg-if",
  "libc",
  "redox_syscall",
  "smallvec",
- "windows-targets 0.48.5",
+ "windows-targets",
 ]
 
 [[package]]
 name = "paste"
-version = "1.0.14"
+version = "1.0.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
 
 [[package]]
 name = "pkg-config"
@@ -590,21 +603,24 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
 
 [[package]]
 name = "portable-atomic"
-version = "1.6.0"
+version = "1.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
+checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265"
 
 [[package]]
 name = "ppv-lite86"
-version = "0.2.17"
+version = "0.2.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
+dependencies = [
+ "zerocopy",
+]
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.81"
+version = "1.0.86"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
 dependencies = [
  "unicode-ident",
 ]
@@ -750,18 +766,18 @@ dependencies = [
 
 [[package]]
 name = "redox_syscall"
-version = "0.4.1"
+version = "0.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4"
 dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.6.0",
 ]
 
 [[package]]
 name = "regex"
-version = "1.10.4"
+version = "1.10.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
+checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -771,9 +787,9 @@ dependencies = [
 
 [[package]]
 name = "regex-automata"
-version = "0.4.6"
+version = "0.4.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
+checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -782,9 +798,9 @@ dependencies = [
 
 [[package]]
 name = "regex-syntax"
-version = "0.8.3"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
+checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
 
 [[package]]
 name = "rustc-hash"
@@ -794,22 +810,22 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
 
 [[package]]
 name = "rustix"
-version = "0.38.32"
+version = "0.38.34"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89"
+checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
  "errno",
  "libc",
  "linux-raw-sys",
- "windows-sys",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "ryu"
-version = "1.0.17"
+version = "1.0.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
 
 [[package]]
 name = "scopeguard"
@@ -819,18 +835,18 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 
 [[package]]
 name = "serde"
-version = "1.0.198"
+version = "1.0.205"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc"
+checksum = "e33aedb1a7135da52b7c21791455563facbbcc43d0f0f66165b42c21b3dfb150"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.198"
+version = "1.0.205"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9"
+checksum = "692d6f5ac90220161d6774db30c662202721e64aed9058d2c394f451261420c1"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -839,11 +855,12 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.116"
+version = "1.0.122"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813"
+checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da"
 dependencies = [
  "itoa",
+ "memchr",
  "ryu",
  "serde",
 ]
@@ -868,15 +885,15 @@ dependencies = [
 
 [[package]]
 name = "strsim"
-version = "0.10.0"
+version = "0.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
 
 [[package]]
 name = "syn"
-version = "2.0.60"
+version = "2.0.72"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3"
+checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -885,36 +902,37 @@ dependencies = [
 
 [[package]]
 name = "target-lexicon"
-version = "0.12.14"
+version = "0.12.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
+checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
 
 [[package]]
 name = "tempfile"
-version = "3.10.1"
+version = "3.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
+checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64"
 dependencies = [
  "cfg-if",
  "fastrand",
+ "once_cell",
  "rustix",
- "windows-sys",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
 name = "thiserror"
-version = "1.0.58"
+version = "1.0.63"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
+checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.58"
+version = "1.0.63"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
+checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -923,7 +941,7 @@ dependencies = [
 
 [[package]]
 name = "tokenizers"
-version = "0.19.1-rc0"
+version = "0.20.0-rc1"
 dependencies = [
  "aho-corasick",
  "derive_builder",
@@ -953,14 +971,13 @@ dependencies = [
 
 [[package]]
 name = "tokenizers-python"
-version = "0.19.1-rc0"
+version = "0.20.0-rc1"
 dependencies = [
  "env_logger",
  "itertools 0.12.1",
  "libc",
  "ndarray",
  "numpy",
- "onig",
  "pyo3",
  "rayon",
  "serde",
@@ -992,9 +1009,9 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
 
 [[package]]
 name = "unicode-width"
-version = "0.1.11"
+version = "0.1.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
+checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
 
 [[package]]
 name = "unicode_categories"
@@ -1010,9 +1027,9 @@ checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce"
 
 [[package]]
 name = "utf8parse"
-version = "0.2.1"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
 
 [[package]]
 name = "wasi"
@@ -1026,126 +1043,99 @@ version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
 dependencies = [
- "windows-targets 0.52.5",
+ "windows-targets",
 ]
 
 [[package]]
-name = "windows-targets"
-version = "0.48.5"
+name = "windows-sys"
+version = "0.59.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
 dependencies = [
- "windows_aarch64_gnullvm 0.48.5",
- "windows_aarch64_msvc 0.48.5",
- "windows_i686_gnu 0.48.5",
- "windows_i686_msvc 0.48.5",
- "windows_x86_64_gnu 0.48.5",
- "windows_x86_64_gnullvm 0.48.5",
- "windows_x86_64_msvc 0.48.5",
+ "windows-targets",
 ]
 
 [[package]]
 name = "windows-targets"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
 dependencies = [
- "windows_aarch64_gnullvm 0.52.5",
- "windows_aarch64_msvc 0.52.5",
- "windows_i686_gnu 0.52.5",
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
  "windows_i686_gnullvm",
- "windows_i686_msvc 0.52.5",
- "windows_x86_64_gnu 0.52.5",
- "windows_x86_64_gnullvm 0.52.5",
- "windows_x86_64_msvc 0.52.5",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
 ]
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.48.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.48.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
 
 [[package]]
 name = "windows_i686_gnullvm"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.48.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.48.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
-version = "0.48.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
 
 [[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.52.5"
+name = "windows_x86_64_msvc"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
 
 [[package]]
-name = "windows_x86_64_msvc"
-version = "0.48.5"
+name = "zerocopy"
+version = "0.7.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
+dependencies = [
+ "byteorder",
+ "zerocopy-derive",
+]
 
 [[package]]
-name = "windows_x86_64_msvc"
-version = "0.52.5"
+name = "zerocopy-derive"
+version = "0.7.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
diff --git a/pkgs/development/python-modules/tokenizers/default.nix b/pkgs/development/python-modules/tokenizers/default.nix
index 92d55ef4a235c..edf0c6f3784fc 100644
--- a/pkgs/development/python-modules/tokenizers/default.nix
+++ b/pkgs/development/python-modules/tokenizers/default.nix
@@ -1,24 +1,33 @@
-{ lib
-, stdenv
-, linkFarm
-, buildPythonPackage
-, cargo
-, datasets
-, huggingface-hub
-, fetchFromGitHub
-, fetchurl
-, libiconv
-, numpy
-, openssl
-, pkg-config
-, pytestCheckHook
-, python
-, pythonOlder
-, requests
-, rustPlatform
-, rustc
-, Security
-, setuptools-rust
+{
+  lib,
+  stdenv,
+  linkFarm,
+  fetchurl,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+
+  # nativeBuildInputs
+  pkg-config,
+  setuptools-rust,
+  rustPlatform,
+  cargo,
+  rustc,
+
+  # buildInputs
+  openssl,
+  libiconv,
+  Security,
+
+  # dependencies
+  huggingface-hub,
+  numpy,
+
+  # tests
+  datasets,
+  pytestCheckHook,
+  requests,
+  tiktoken,
 }:
 
 let
@@ -27,23 +36,23 @@ let
   test-data = linkFarm "tokenizers-test-data" {
     "roberta-base-vocab.json" = fetchurl {
       url = "https://s3.amazonaws.com/models.huggingface.co/bert/roberta-base-vocab.json";
-      sha256 = "0m86wpkfb2gdh9x9i9ng2fvwk1rva4p0s98xw996nrjxs7166zwy";
+      hash = "sha256-nn9jwtFdZmtS4h0lDS5RO4fJtxPPpph6gu2J5eblBlU=";
     };
     "roberta-base-merges.txt" = fetchurl {
       url = "https://s3.amazonaws.com/models.huggingface.co/bert/roberta-base-merges.txt";
-      sha256 = "1idd4rvkpqqbks51i2vjbd928inw7slij9l4r063w3y5fd3ndq8w";
+      hash = "sha256-HOFmR3PFDz4MyIQmGak+3EYkUltyixiKngvjO3cmrcU=";
     };
     "albert-base-v1-tokenizer.json" = fetchurl {
       url = "https://s3.amazonaws.com/models.huggingface.co/bert/albert-base-v1-tokenizer.json";
-      sha256 = "1hra9pn8rczx7378z88zjclw2qsdrdwq20m56sy42s2crbas6akf";
+      hash = "sha256-biqj1cpMaEG8NqUCgXnLTWPBKZMfoY/OOP2zjOxNKsM=";
     };
     "bert-base-uncased-vocab.txt" = fetchurl {
       url = "https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-uncased-vocab.txt";
-      sha256 = "18rq42cmqa8zanydsbzrb34xwy4l6cz1y900r4kls57cbhvyvv07";
+      hash = "sha256-B+ztN1zsFE0nyQAkHz4zlHjeyVj5L928VR8pXJkgOKM=";
     };
     "big.txt" = fetchurl {
       url = "https://norvig.com/big.txt";
-      sha256 = "0yz80icdly7na03cfpl0nfk5h3j3cam55rj486n03wph81ynq1ps";
+      sha256 = "sha256-+gZsfUDw8gGsQUTmUqpiQw5YprOAXscGUPZ42lgE6Hs=";
     };
     "bert-wiki.json" = fetchurl {
       url = "https://s3.amazonaws.com/models.huggingface.co/bert/anthony/doc-pipeline/tokenizer.json";
@@ -55,31 +64,27 @@ let
     };
     "openai-gpt-vocab.json" = fetchurl {
       url = "https://s3.amazonaws.com/models.huggingface.co/bert/openai-gpt-vocab.json";
-      sha256 = "0y40gc9bixj5rxv674br1rxmxkd3ly29p80x1596h8yywwcrpx7x";
+      hash = "sha256-/fSbGefeI2hSCR2gm4Sno81eew55kWN2z0X2uBJ7gHg=";
     };
     "openai-gpt-merges.txt" = fetchurl {
       url = "https://s3.amazonaws.com/models.huggingface.co/bert/openai-gpt-merges.txt";
-      sha256 = "09a754pm4djjglv3x5pkgwd6f79i2rq8ydg0f7c3q1wmwqdbba8f";
+      hash = "sha256-Dqm1GuaVBzzYceA1j3AWMR1nGn/zlj42fVI2Ui8pRyU=";
     };
   };
 in
 buildPythonPackage rec {
   pname = "tokenizers";
-  version = "0.19.1";
+  version = "0.20.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
-
   src = fetchFromGitHub {
     owner = "huggingface";
     repo = "tokenizers";
     rev = "refs/tags/v${version}";
-    hash = "sha256-sKEAt46cdme821tzz9WSKnQb3hPmFJ4zvHgBNRxjEuk=";
+    hash = "sha256-uuSHsdyx77YQjf1aiz7EJ/X+6RaOgfmjGqHSlMaCWDI=";
   };
 
-  cargoDeps = rustPlatform.importCargoLock {
-    lockFile = ./Cargo.lock;
-  };
+  cargoDeps = rustPlatform.importCargoLock { lockFile = ./Cargo.lock; };
 
   sourceRoot = "${src.name}/bindings/python";
   maturinBuildFlags = [ "--interpreter ${python.executable}" ];
@@ -93,28 +98,23 @@ buildPythonPackage rec {
     rustc
   ];
 
-  buildInputs = [
-    openssl
-  ] ++ lib.optionals stdenv.isDarwin [
-    libiconv
-    Security
-  ];
-
-  # Cargo.lock is outdated
-  # TODO: remove at next release
-  preConfigure = ''
-    cargo update --offline
-  '';
+  buildInputs =
+    [ openssl ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      libiconv
+      Security
+    ];
 
   dependencies = [
-    numpy
     huggingface-hub
+    numpy
   ];
 
   nativeCheckInputs = [
     datasets
     pytestCheckHook
     requests
+    tiktoken
   ];
 
   postUnpack = ''
@@ -127,26 +127,30 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d);
   '';
 
-  pythonImportsCheck = [
-    "tokenizers"
-  ];
+  pythonImportsCheck = [ "tokenizers" ];
 
   disabledTests = [
     # Downloads data using the datasets module
     "test_encode_special_tokens"
     "test_splitting"
     "TestTrainFromIterators"
+
     # Those tests require more data
     "test_from_pretrained"
     "test_from_pretrained_revision"
     "test_continuing_prefix_trainer_mistmatch"
   ];
 
-  meta = with lib; {
+  disabledTestPaths = [
+    # fixture 'model' not found
+    "benches/test_tiktoken.py"
+  ];
+
+  meta = {
     description = "Fast State-of-the-Art Tokenizers optimized for Research and Production";
     homepage = "https://github.com/huggingface/tokenizers";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ ];
-    platforms = platforms.unix;
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/tokenlib/default.nix b/pkgs/development/python-modules/tokenlib/default.nix
index f417235613818..59a19b81a3f92 100644
--- a/pkgs/development/python-modules/tokenlib/default.nix
+++ b/pkgs/development/python-modules/tokenlib/default.nix
@@ -1,28 +1,46 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, webob
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  webob,
+  fetchpatch,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "tokenlib";
-  version = "0.3.1";
-  format = "setuptools";
+  version = "2.0.0";
+
+  pyproject = true;
+  build-system = [ setuptools ];
 
   src = fetchFromGitHub {
     owner = "mozilla-services";
-    repo = pname;
-    rev = "refs/tags/${version}";
-    sha256 = "0bq6dqyfwh29pg8ngmrm4mx4q27an9lsj0p9l79p9snn4g2rxzc8";
+    repo = "tokenlib";
+    rev = "${version}";
+    hash = "sha256-+KybaLb4XAcuBARJUhL5gK71jfNMb8YL8dV5Vzf7yXI=";
   };
 
-  propagatedBuildInputs = [ requests webob ];
+  patches = [
+    # fix wrong function name in tests
+    # See https://github.com/mozilla-services/tokenlib/pull/9
+    (fetchpatch {
+      url = "https://github.com/mozilla-services/tokenlib/pull/9/commits/cb7ef761f82f36e40069bd1b8684eec05af3b8a3.patch";
+      hash = "sha256-hc+iydxZu9bFqBD0EQDWMkRs2ibqNAhx6Qxjh6ppKNw=";
+    })
+  ];
+
+  dependencies = [
+    requests
+    webob
+  ];
+
+  pythonImportsCheck = [ "tokenlib" ];
 
   meta = with lib; {
     homepage = "https://github.com/mozilla-services/tokenlib";
     description = "Generic support library for signed-token-based auth schemes";
     license = licenses.mpl20;
   };
-
 }
diff --git a/pkgs/development/python-modules/tokentrim/default.nix b/pkgs/development/python-modules/tokentrim/default.nix
index 9588fadd6cb52..0482ba5e110e4 100644
--- a/pkgs/development/python-modules/tokentrim/default.nix
+++ b/pkgs/development/python-modules/tokentrim/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, tiktoken
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  tiktoken,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-zr2SLT3MBuMD98g9fdS0mLuijcssRQ/S3+tCq2Cw1/4=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    tiktoken
-  ];
+  propagatedBuildInputs = [ tiktoken ];
 
   pythonImportsCheck = [ "tokentrim" ];
 
diff --git a/pkgs/development/python-modules/tololib/default.nix b/pkgs/development/python-modules/tololib/default.nix
index ed530f95d1915..9548f2d77657e 100644
--- a/pkgs/development/python-modules/tololib/default.nix
+++ b/pkgs/development/python-modules/tololib/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitLab
-, fetchpatch
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitLab,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -21,33 +22,25 @@ buildPythonPackage rec {
     hash = "sha256-TxWKV2nrnCxZmj6+wBDMSdJRvKV+MsPFbOyIlUJYJ3Q=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export PATH="$PATH:$out/bin";
   '';
 
-  disabledTests = [
-    # Test requires network access
-    "test_discovery"
-  ];
+  pythonImportsCheck = [ "tololib" ];
 
-  pythonImportsCheck = [
-    "tololib"
-  ];
+  # Network discovery doesn't work in the sandbox for darwin
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   meta = with lib; {
     description = "Python Library for Controlling TOLO Sauna/Steam Bath Devices";
-    mainProgram = "tolo-cli";
     homepage = "https://gitlab.com/MatthiasLohr/tololib";
     changelog = "https://gitlab.com/MatthiasLohr/tololib/-/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "tolo-cli";
   };
 }
diff --git a/pkgs/development/python-modules/toml-adapt/default.nix b/pkgs/development/python-modules/toml-adapt/default.nix
index 6af7f0940ed20..8d6184cbc5738 100644
--- a/pkgs/development/python-modules/toml-adapt/default.nix
+++ b/pkgs/development/python-modules/toml-adapt/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, toml
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  toml,
 }:
 
 buildPythonPackage rec {
@@ -22,25 +23,19 @@ buildPythonPackage rec {
     hash = "sha256-KD5dTr/wxFbDg3AbfE0jUbgNjvxqDmbHwjY5Dmp6JFI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     click
     toml
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "toml_adapt"
-  ];
+  pythonImportsCheck = [ "toml_adapt" ];
 
   meta = with lib; {
-    description = "A simple Command-line interface for manipulating toml files";
+    description = "Simple Command-line interface for manipulating toml files";
     homepage = "https://github.com/firefly-cpp/toml-adapt";
     changelog = "https://github.com/firefly-cpp/toml-adapt/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/toml/default.nix b/pkgs/development/python-modules/toml/default.nix
index aa12d2936c42b..883bfeaeed6db 100644
--- a/pkgs/development/python-modules/toml/default.nix
+++ b/pkgs/development/python-modules/toml/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "toml";
@@ -16,7 +20,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "a Python library for parsing and creating TOML";
+    description = "Python library for parsing and creating TOML";
     homepage = "https://github.com/uiri/toml";
     license = licenses.mit;
     maintainers = with maintainers; [ twey ];
diff --git a/pkgs/development/python-modules/tomli-w/default.nix b/pkgs/development/python-modules/tomli-w/default.nix
index 920063fd10ebf..3741f4e2881e9 100644
--- a/pkgs/development/python-modules/tomli-w/default.nix
+++ b/pkgs/development/python-modules/tomli-w/default.nix
@@ -1,8 +1,8 @@
-{ lib
-, buildPythonPackage
-, callPackage
-, fetchFromGitHub
-, flit-core
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
 }:
 
 buildPythonPackage rec {
@@ -22,7 +22,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "tomli_w" ];
 
   meta = with lib; {
-    description = "A write-only counterpart to Tomli, which is a read-only TOML parser";
+    description = "Write-only counterpart to Tomli, which is a read-only TOML parser";
     homepage = "https://github.com/hukkin/tomli-w";
     license = licenses.mit;
     maintainers = with maintainers; [ lovesegfault ];
diff --git a/pkgs/development/python-modules/tomli/default.nix b/pkgs/development/python-modules/tomli/default.nix
index b2de1c0dfdeb2..20ae66d60fcd4 100644
--- a/pkgs/development/python-modules/tomli/default.nix
+++ b/pkgs/development/python-modules/tomli/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, callPackage
-, fetchFromGitHub
-, flit-core
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  unittestCheckHook,
 
   # important downstream dependencies
-, flit
-, black
-, mypy
-, setuptools-scm
+  flit,
+  black,
+  mypy,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -32,11 +32,16 @@ buildPythonPackage rec {
 
   passthru.tests = {
     # test downstream dependencies
-    inherit flit black mypy setuptools-scm;
+    inherit
+      flit
+      black
+      mypy
+      setuptools-scm
+      ;
   };
 
   meta = with lib; {
-    description = "A Python library for parsing TOML, fully compatible with TOML v1.0.0";
+    description = "Python library for parsing TOML, fully compatible with TOML v1.0.0";
     homepage = "https://github.com/hukkin/tomli";
     license = licenses.mit;
     maintainers = with maintainers; [ veehaitch ];
diff --git a/pkgs/development/python-modules/tomlkit/default.nix b/pkgs/development/python-modules/tomlkit/default.nix
index 94f63be259a6c..85f9ed273b7d5 100644
--- a/pkgs/development/python-modules/tomlkit/default.nix
+++ b/pkgs/development/python-modules/tomlkit/default.nix
@@ -1,28 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# build-system
-, poetry-core
+  # build-system
+  poetry-core,
 
-# tests
-, pytestCheckHook
-, pyyaml
+  # tests
+  pytestCheckHook,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
   pname = "tomlkit";
-  version = "0.12.4";
+  version = "0.12.5";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-fKHPwSIygGUXqFFQR7pmoZNp5x7fJDnQ9YJPkQMrbMM=";
+    hash = "sha256-7vNPujmDTU1rc8m6fz5NHEF6Tlb4mn6W4JDdDSS4+zw=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   nativeCheckInputs = [
     pyyaml
diff --git a/pkgs/development/python-modules/toolz/default.nix b/pkgs/development/python-modules/toolz/default.nix
index d11a02a02b7bd..4d4e0a71c74d6 100644
--- a/pkgs/development/python-modules/toolz/default.nix
+++ b/pkgs/development/python-modules/toolz/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/toonapi/default.nix b/pkgs/development/python-modules/toonapi/default.nix
index ac51cae1c805d..97cfb696c7b5d 100644
--- a/pkgs/development/python-modules/toonapi/default.nix
+++ b/pkgs/development/python-modules/toonapi/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, backoff
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  backoff,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "toonapi"
-  ];
+  pythonImportsCheck = [ "toonapi" ];
 
   meta = with lib; {
     description = "Python client for the Quby ToonAPI";
diff --git a/pkgs/development/python-modules/toposort/default.nix b/pkgs/development/python-modules/toposort/default.nix
index 5270da85f4a96..12644de66f1e4 100644
--- a/pkgs/development/python-modules/toposort/default.nix
+++ b/pkgs/development/python-modules/toposort/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -14,18 +15,14 @@ buildPythonPackage rec {
     hash = "sha256-v7tHnFPQppbqdAJgH05pPJewNng3yImLxkca38o3pr0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "toposort"
-  ];
+  pythonImportsCheck = [ "toposort" ];
 
   meta = with lib; {
-    description = "A topological sort algorithm";
+    description = "Topological sort algorithm";
     homepage = "https://pypi.python.org/pypi/toposort/";
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     platforms = platforms.unix;
     license = licenses.asl20;
   };
diff --git a/pkgs/development/python-modules/torch-audiomentations/default.nix b/pkgs/development/python-modules/torch-audiomentations/default.nix
index 5a849752586be..7a4205268e3ee 100644
--- a/pkgs/development/python-modules/torch-audiomentations/default.nix
+++ b/pkgs/development/python-modules/torch-audiomentations/default.nix
@@ -1,13 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, julius
-, librosa
-, torch
-, torchaudio
-, torch-pitch-shift
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  julius,
+  librosa,
+  pytest-cov-stub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  torch-pitch-shift,
+  torch,
+  torchaudio,
 }:
 
 buildPythonPackage rec {
@@ -15,6 +18,8 @@ buildPythonPackage rec {
   version = "0.11.1";
   pyproject = true;
 
+  disabled = pythonOlder "3.8";
+
   src = fetchFromGitHub {
     owner = "asteroid-team";
     repo = "torch-audiomentations";
@@ -22,7 +27,11 @@ buildPythonPackage rec {
     hash = "sha256-0+5wc+mP4c221q6mdaqPalfumTOtdnkjnIPtLErOp9E=";
   };
 
-  propagatedBuildInputs = [
+  pythonRelaxDeps = [ "torchaudio" ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
     julius
     librosa
     torch
@@ -30,16 +39,27 @@ buildPythonPackage rec {
     torch-pitch-shift
   ];
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
+  nativeCheckInputs = [
+    pytest-cov-stub
+    pytestCheckHook
   ];
 
   pythonImportsCheck = [ "torch_audiomentations" ];
 
+  disabledTestPaths = [
+    # librosa issues
+    "tests/test_mix.py"
+    "tests/test_convolution.py"
+    "tests/test_impulse_response.py"
+    "tests/test_background_noise.py"
+  ];
+
+  disabledTests = [ "test_transform_is_differentiable" ];
+
   meta = with lib; {
-    description = "Fast audio data augmentation in PyTorch. Inspired by audiomentations. Useful for deep learning";
+    description = "Fast audio data augmentation in PyTorch";
     homepage = "https://github.com/asteroid-team/torch-audiomentations";
+    changelog = "https://github.com/asteroid-team/torch-audiomentations/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ matthewcroughan ];
   };
diff --git a/pkgs/development/python-modules/torch-pitch-shift/default.nix b/pkgs/development/python-modules/torch-pitch-shift/default.nix
index 2d9aa146abb9a..754cd282a015f 100644
--- a/pkgs/development/python-modules/torch-pitch-shift/default.nix
+++ b/pkgs/development/python-modules/torch-pitch-shift/default.nix
@@ -1,43 +1,49 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, wheel
-, packaging
-, primepy
-, torch
-, torchaudio
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  packaging,
+  primepy,
+  torch,
+  torchaudio,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "torch-pitch-shift";
-  version = "1.2.4";
+  version = "1.2.5";
   pyproject = true;
 
+  disabled = pythonOlder "3.8";
+
   src = fetchFromGitHub {
     owner = "KentoNishi";
     repo = "torch-pitch-shift";
-    rev = "v${version}";
-    hash = "sha256-s3z+6jOGC7RfF9TzVZ9HFbIFz2BsBm6Yhx7lgaEKv6o=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-QuDz9IpmBdzfMjwAuG2Ln0x2OL/w3RVd/EfO4Ws78dw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
-  ];
+  pythonRelaxDeps = [ "torchaudio" ];
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     packaging
     primepy
     torch
     torchaudio
   ];
 
+  # Module has no tests
+  doCheck = false;
+
   pythonImportsCheck = [ "torch_pitch_shift" ];
 
   meta = with lib; {
     description = "Pitch-shift audio clips quickly with PyTorch (CUDA supported)! Additional utilities for searching efficient transformations are included";
     homepage = "https://github.com/KentoNishi/torch-pitch-shift";
+    changelog = "https://github.com/KentoNishi/torch-pitch-shift/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ matthewcroughan ];
   };
diff --git a/pkgs/development/python-modules/torch-tb-profiler/default.nix b/pkgs/development/python-modules/torch-tb-profiler/default.nix
index 108acfb0d355d..005c9f375455c 100644
--- a/pkgs/development/python-modules/torch-tb-profiler/default.nix
+++ b/pkgs/development/python-modules/torch-tb-profiler/default.nix
@@ -1,11 +1,12 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, pandas
-, pytestCheckHook
-, torch
-, tensorboard
-, torchvision
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pandas,
+  pytestCheckHook,
+  torch,
+  tensorboard,
+  torchvision,
 }:
 
 let
@@ -25,9 +26,16 @@ buildPythonPackage rec {
   # See https://discourse.nixos.org/t/extracting-sub-directory-from-fetchgit-or-fetchurl-or-any-derivation/8830.
   src = "${repo}/tb_plugin";
 
-  propagatedBuildInputs = [ pandas tensorboard ];
+  propagatedBuildInputs = [
+    pandas
+    tensorboard
+  ];
 
-  nativeCheckInputs = [ pytestCheckHook torch torchvision ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    torch
+    torchvision
+  ];
 
   disabledTests = [
     # Tests that attempt to access the filesystem in naughty ways.
diff --git a/pkgs/development/python-modules/torch/bin.nix b/pkgs/development/python-modules/torch/bin.nix
index d92767b87d4b2..bcd5008984fad 100644
--- a/pkgs/development/python-modules/torch/bin.nix
+++ b/pkgs/development/python-modules/torch/bin.nix
@@ -1,32 +1,43 @@
-{ lib, stdenv
-, buildPythonPackage
-, autoAddDriverRunpath
-, fetchurl
-, python
-, pythonAtLeast
-, pythonOlder
-, addOpenGLRunpath
-, cudaPackages
-, future
-, numpy
-, autoPatchelfHook
-, pyyaml
-, requests
-, setuptools
-, typing-extensions
-, sympy
-, jinja2
-, networkx
-, filelock
-, openai-triton
+{
+  lib,
+  stdenv,
+  python,
+  buildPythonPackage,
+  pythonOlder,
+  pythonAtLeast,
+  fetchurl,
+
+  # nativeBuildInputs
+  addDriverRunpath,
+  autoAddDriverRunpath,
+  autoPatchelfHook,
+
+  # buildInputs
+  cudaPackages,
+
+  # dependencies
+  filelock,
+  future,
+  jinja2,
+  networkx,
+  numpy,
+  pyyaml,
+  requests,
+  setuptools,
+  sympy,
+  typing-extensions,
+  triton,
+
+  callPackage,
 }:
 
 let
   pyVerNoDot = builtins.replaceStrings [ "." ] [ "" ] python.pythonVersion;
   srcs = import ./binary-hashes.nix version;
   unsupported = throw "Unsupported system";
-  version = "2.2.2";
-in buildPythonPackage {
+  version = "2.4.1";
+in
+buildPythonPackage {
   inherit version;
 
   pname = "torch";
@@ -34,34 +45,37 @@ in buildPythonPackage {
 
   format = "wheel";
 
-  disabled = (pythonOlder "3.8") || (pythonAtLeast "3.12");
+  disabled = (pythonOlder "3.8") || (pythonAtLeast "3.13");
 
   src = fetchurl srcs."${stdenv.system}-${pyVerNoDot}" or unsupported;
 
-  nativeBuildInputs = lib.optionals stdenv.isLinux [
-    addOpenGLRunpath
-    autoPatchelfHook
+  nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [
+    addDriverRunpath
     autoAddDriverRunpath
+    autoPatchelfHook
   ];
 
-  buildInputs = lib.optionals stdenv.isLinux (with cudaPackages; [
-    # $out/${sitePackages}/nvfuser/_C*.so wants libnvToolsExt.so.1 but torch/lib only ships
-    # libnvToolsExt-$hash.so.1
-    cuda_nvtx
-
-    cuda_cudart
-    cuda_cupti
-    cuda_nvrtc
-    cudnn
-    libcublas
-    libcufft
-    libcurand
-    libcusolver
-    libcusparse
-    nccl
-  ]);
-
-  autoPatchelfIgnoreMissingDeps = lib.optionals stdenv.isLinux [
+  buildInputs = lib.optionals stdenv.hostPlatform.isLinux (
+    with cudaPackages;
+    [
+      # $out/${sitePackages}/nvfuser/_C*.so wants libnvToolsExt.so.1 but torch/lib only ships
+      # libnvToolsExt-$hash.so.1
+      cuda_nvtx
+
+      cuda_cudart
+      cuda_cupti
+      cuda_nvrtc
+      cudnn
+      libcublas
+      libcufft
+      libcurand
+      libcusolver
+      libcusparse
+      nccl
+    ]
+  );
+
+  autoPatchelfIgnoreMissingDeps = lib.optionals stdenv.hostPlatform.isLinux [
     # This is the hardware-dependent userspace driver that comes from
     # nvidia_x11 package. It must be deployed at runtime in
     # /run/opengl-driver/lib or pointed at by LD_LIBRARY_PATH variable, rather
@@ -69,36 +83,55 @@ in buildPythonPackage {
     "libcuda.so.1"
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    filelock
     future
+    jinja2
+    networkx
     numpy
     pyyaml
     requests
     setuptools
-    typing-extensions
     sympy
-    jinja2
-    networkx
-    filelock
-  ] ++ lib.optionals (stdenv.isLinux && stdenv.isx86_64) [
-    openai-triton
-  ];
+    typing-extensions
+  ] ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86_64) [ triton ];
 
   postInstall = ''
     # ONNX conversion
     rm -rf $out/bin
   '';
 
-  postFixup = lib.optionalString stdenv.isLinux ''
+  postFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
     addAutoPatchelfSearchPath "$out/${python.sitePackages}/torch/lib"
   '';
 
+  # See https://github.com/NixOS/nixpkgs/issues/296179
+  #
+  # This is a quick hack to add `libnvrtc` to the runpath so that torch can find
+  # it when it is needed at runtime.
+  extraRunpaths = lib.optionals stdenv.hostPlatform.isLinux [
+    "${lib.getLib cudaPackages.cuda_nvrtc}/lib"
+  ];
+  postPhases = lib.optionals stdenv.hostPlatform.isLinux [ "postPatchelfPhase" ];
+  postPatchelfPhase = ''
+    while IFS= read -r -d $'\0' elf ; do
+      for extra in $extraRunpaths ; do
+        echo patchelf "$elf" --add-rpath "$extra" >&2
+        patchelf "$elf" --add-rpath "$extra"
+      done
+    done < <(
+      find "''${!outputLib}" "$out" -type f -iname '*.so' -print0
+    )
+  '';
+
   # The wheel-binary is not stripped to avoid the error of `ImportError: libtorch_cuda_cpp.so: ELF load command address/offset not properly aligned.`.
   dontStrip = true;
 
   pythonImportsCheck = [ "torch" ];
 
-  meta = with lib; {
+  passthru.tests = callPackage ./tests.nix { };
+
+  meta = {
     description = "PyTorch: Tensors and Dynamic neural networks in Python with strong GPU acceleration";
     homepage = "https://pytorch.org/";
     changelog = "https://github.com/pytorch/pytorch/releases/tag/v${version}";
@@ -107,10 +140,18 @@ in buildPythonPackage {
     # https://www.intel.com/content/www/us/en/developer/articles/license/onemkl-license-faq.html
     # torch's license is BSD3.
     # torch-bin used to vendor CUDA. It still links against CUDA and MKL.
-    license = with licenses; [ bsd3 issl unfreeRedistributable ];
-    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
-    platforms = [ "aarch64-darwin" "aarch64-linux" "x86_64-darwin" "x86_64-linux" ];
-    hydraPlatforms = []; # output size 3.2G on 1.11.0
-    maintainers = with maintainers; [ junjihashimoto ];
+    license = with lib.licenses; [
+      bsd3
+      issl
+      unfreeRedistributable
+    ];
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
+    platforms = [
+      "aarch64-darwin"
+      "aarch64-linux"
+      "x86_64-linux"
+    ];
+    hydraPlatforms = [ ]; # output size 3.2G on 1.11.0
+    maintainers = with lib.maintainers; [ junjihashimoto ];
   };
 }
diff --git a/pkgs/development/python-modules/torch/binary-hashes.nix b/pkgs/development/python-modules/torch/binary-hashes.nix
index 8cd3bccc121cd..1db23d136ba4a 100644
--- a/pkgs/development/python-modules/torch/binary-hashes.nix
+++ b/pkgs/development/python-modules/torch/binary-hashes.nix
@@ -5,87 +5,83 @@
 
 # To add a new version, run "prefetch.sh 'new-version'" to paste the generated file as follows.
 
-version : builtins.getAttr version {
-  "2.2.2" = {
+version:
+builtins.getAttr version {
+  "2.4.1" = {
     x86_64-linux-38 = {
-      name = "torch-2.2.2-cp38-cp38-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torch-2.2.2%2Bcu121-cp38-cp38-linux_x86_64.whl";
-      hash = "sha256-wXi+srsB93NgF3e8SBx2Ub5bHxic8YDwwKzqwHiaqaU=";
+      name = "torch-2.4.1-cp38-cp38-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torch-2.4.1%2Bcu121-cp38-cp38-linux_x86_64.whl";
+      hash = "sha256-y09QL5ELR+HjZsz3sjHawpZ9LvtH1LjLM/xjtLxe7tg=";
     };
     x86_64-linux-39 = {
-      name = "torch-2.2.2-cp39-cp39-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torch-2.2.2%2Bcu121-cp39-cp39-linux_x86_64.whl";
-      hash = "sha256-EU6TlYZ+6GAWZWLYzB8oCSJfnil4PdXnIXXZqaeoUFw=";
+      name = "torch-2.4.1-cp39-cp39-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torch-2.4.1%2Bcu121-cp39-cp39-linux_x86_64.whl";
+      hash = "sha256-mYatNVXd//Vekl2CmPiytJEGp9xg+BGiB2pEX+RFjis=";
     };
     x86_64-linux-310 = {
-      name = "torch-2.2.2-cp310-cp310-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torch-2.2.2%2Bcu121-cp310-cp310-linux_x86_64.whl";
-      hash = "sha256-yt5P1sjOfYJtvPq9ZfHVOw7goFjbjBgJ1lv9YFG1VTA=";
+      name = "torch-2.4.1-cp310-cp310-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torch-2.4.1%2Bcu121-cp310-cp310-linux_x86_64.whl";
+      hash = "sha256-ml8LEDz+hAs1aEFqpQZ/bnuf7GfZxWWf1DsSB0UP6XU=";
     };
     x86_64-linux-311 = {
-      name = "torch-2.2.2-cp311-cp311-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torch-2.2.2%2Bcu121-cp311-cp311-linux_x86_64.whl";
-      hash = "sha256-TJTk0aItcKu9/3Ft7Jm6Xv+UtDQP+nO0+2KflA27inU=";
+      name = "torch-2.4.1-cp311-cp311-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torch-2.4.1%2Bcu121-cp311-cp311-linux_x86_64.whl";
+      hash = "sha256-kU0Sjlq8u+ecobnrUxGxhURPGy1xF99VX+QYSH7PuJQ=";
     };
-    x86_64-darwin-38 = {
-      name = "torch-2.2.2-cp38-none-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp38-none-macosx_10_9_x86_64.whl";
-      hash = "sha256-gVF29iyPN8z7shCBwHaaiLG6pptxaRGapCtl7l8QTi0=";
-    };
-    x86_64-darwin-39 = {
-      name = "torch-2.2.2-cp39-none-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp39-none-macosx_10_9_x86_64.whl";
-      hash = "sha256-8TdigY3CgP7KfjD2CZWhe6jR0asz/vttB/0sj/FXHqo=";
-    };
-    x86_64-darwin-310 = {
-      name = "torch-2.2.2-cp310-none-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp310-none-macosx_10_9_x86_64.whl";
-      hash = "sha256-5nfE102wz8KxCSPeG95XXZgculRQXdwIKwUI2WQRmFA=";
-    };
-    x86_64-darwin-311 = {
-      name = "torch-2.2.2-cp311-none-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp311-none-macosx_10_9_x86_64.whl";
-      hash = "sha256-QwDLu00EKMUbXBlBkBaQGNW4GP2fb6/Ci76P2E3tF0A=";
+    x86_64-linux-312 = {
+      name = "torch-2.4.1-cp312-cp312-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torch-2.4.1%2Bcu121-cp312-cp312-linux_x86_64.whl";
+      hash = "sha256-q0kWELFVUeCNp0urKdCTPmvxC6tE+31LEyjx6EXAWlM=";
     };
     aarch64-darwin-38 = {
-      name = "torch-2.2.2-cp38-none-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp38-none-macosx_11_0_arm64.whl";
-      hash = "sha256-7RTSpDZEIEkDg9JveQCj99XFDDLlzf3d3/+Dd22eD9Q=";
+      name = "torch-2.4.1-cp38-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.4.1-cp38-none-macosx_11_0_arm64.whl";
+      hash = "sha256-X8HU1+0mXvhTV5yvJyaG0e2Hzr3NBPKkmPgA/8U9q3E=";
     };
     aarch64-darwin-39 = {
-      name = "torch-2.2.2-cp39-none-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp39-none-macosx_11_0_arm64.whl";
-      hash = "sha256-/q2//ddjTP40Xqh9fuQDGzAPnHZFIFkOA0idZYtpMds=";
+      name = "torch-2.4.1-cp39-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.4.1-cp39-none-macosx_11_0_arm64.whl";
+      hash = "sha256-o43igD7mBQMJqsAyZ2U2w9O2qYBCSFN+OOCY0OFIF+w=";
     };
     aarch64-darwin-310 = {
-      name = "torch-2.2.2-cp310-none-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp310-none-macosx_11_0_arm64.whl";
-      hash = "sha256-tSDRTS8oEK1dp1i+oQyveXjvNkNWW8APkN6JLgDXeSU=";
+      name = "torch-2.4.1-cp310-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.4.1-cp310-none-macosx_11_0_arm64.whl";
+      hash = "sha256-02qO8QD1v/Ppw86pNLng1+onfLghDHFS00qabFgw6t0=";
     };
     aarch64-darwin-311 = {
-      name = "torch-2.2.2-cp311-none-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp311-none-macosx_11_0_arm64.whl";
-      hash = "sha256-gipYlnXLqKzwRX1qTltspEGtO0w6RKHLyPizGueWRF4=";
+      name = "torch-2.4.1-cp311-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.4.1-cp311-none-macosx_11_0_arm64.whl";
+      hash = "sha256-3d29iwZudDk0pCALPVQmekbbAhBodtIc8x99p6lvmOo=";
+    };
+    aarch64-darwin-312 = {
+      name = "torch-2.4.1-cp312-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.4.1-cp312-none-macosx_11_0_arm64.whl";
+      hash = "sha256-crSE1bbOwac1vz+locSIPQF0hpjF6c/b60/6t8eYfg0=";
     };
     aarch64-linux-38 = {
-      name = "torch-2.2.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
-      hash = "sha256-mJTc3W71tbYDzYzqPjcR+eJ3CC/3sPFLFSb90ay4JSE=";
+      name = "torch-2.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      hash = "sha256-Vq0qdgt6eIJyWh7r9WV6u7O1FE6ya8tHtSBZNXRjxUg=";
     };
     aarch64-linux-39 = {
-      name = "torch-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
-      hash = "sha256-1dhev9E/fNA+UGMlP4R57RpXBSZBZtXdH8abS5YjGyA=";
+      name = "torch-2.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      hash = "sha256-FJUTLzD3Iq8aCRlQCIuuo4P+OZA9sGsg5pNv2ZQCgD4=";
     };
     aarch64-linux-310 = {
-      name = "torch-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
-      hash = "sha256-OiwHUhgIHvnHv4xVxwbyNtrrt1PaQd5JispxYyVzgL0=";
+      name = "torch-2.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      hash = "sha256-+iewSNMhmM2m6c/wv3aOhoPZh0OQO35dKx9QmN7R00M=";
     };
     aarch64-linux-311 = {
-      name = "torch-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
-      hash = "sha256-WUgt9dxA2uEF5z9I3Sk/TMxndkCCLCzjQnOjh1SZA64=";
+      name = "torch-2.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      hash = "sha256-ML4oRNDJORYaEQc7+69kXxx8tD9i9GzG5N8cEZ+yp5g=";
+    };
+    aarch64-linux-312 = {
+      name = "torch-2.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      hash = "sha256-NhCUMrEL1xY8mzDOiW88LMobhrl2X5VqFZTw/0MJHio=";
     };
   };
 }
diff --git a/pkgs/development/python-modules/torch/default.nix b/pkgs/development/python-modules/torch/default.nix
index 3bd019375046c..7b5b8e9f6726c 100644
--- a/pkgs/development/python-modules/torch/default.nix
+++ b/pkgs/development/python-modules/torch/default.nix
@@ -1,25 +1,44 @@
-{ stdenv, lib, fetchFromGitHub, fetchpatch, buildPythonPackage, python,
-  config, cudaSupport ? config.cudaSupport, cudaPackages,
+{
+  stdenv,
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  python,
+  config,
+  cudaSupport ? config.cudaSupport,
+  cudaPackages,
   autoAddDriverRunpath,
   effectiveMagma ?
-  if cudaSupport then magma-cuda-static
-  else if rocmSupport then magma-hip
-  else magma,
+    if cudaSupport then
+      magma-cuda-static
+    else if rocmSupport then
+      magma-hip
+    else
+      magma,
   magma,
   magma-hip,
   magma-cuda-static,
   # Use the system NCCL as long as we're targeting CUDA on a supported platform.
   useSystemNccl ? (cudaSupport && !cudaPackages.nccl.meta.unsupported || rocmSupport),
-  MPISupport ? false, mpi,
+  MPISupport ? false,
+  mpi,
   buildDocs ? false,
 
+  # tests.cudaAvailable:
+  callPackage,
+
   # Native build inputs
-  cmake, linkFarm, symlinkJoin, which, pybind11, removeReferencesTo,
-  pythonRelaxDepsHook,
+  cmake,
+  symlinkJoin,
+  which,
+  pybind11,
+  removeReferencesTo,
 
   # Build inputs
   numactl,
-  Accelerate, CoreServices, libobjc,
+  Accelerate,
+  CoreServices,
+  libobjc,
 
   # Propagated build inputs
   astunparse,
@@ -28,16 +47,22 @@
   jinja2,
   networkx,
   sympy,
-  numpy, pyyaml, cffi, click, typing-extensions,
-  # ROCm build and `torch.compile` requires `openai-triton`
-  tritonSupport ? (!stdenv.isDarwin), openai-triton,
+  numpy,
+  pyyaml,
+  cffi,
+  click,
+  typing-extensions,
+  # ROCm build and `torch.compile` requires `triton`
+  tritonSupport ? (!stdenv.hostPlatform.isDarwin),
+  triton,
 
   # Unit tests
-  hypothesis, psutil,
+  hypothesis,
+  psutil,
 
   # Disable MKLDNN on aarch64-darwin, it negatively impacts performance,
   # this is also what official pytorch build does
-  mklDnnSupport ? !(stdenv.isDarwin && stdenv.isAarch64),
+  mklDnnSupport ? !(stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64),
 
   # virtual pkg that consistently instantiates blas across nixpkgs
   # See https://github.com/NixOS/nixpkgs/pull/83888
@@ -47,28 +72,55 @@
   ninja,
 
   # dependencies for torch.utils.tensorboard
-  pillow, six, future, tensorboard, protobuf,
+  pillow,
+  six,
+  future,
+  tensorboard,
+  protobuf,
 
   pythonOlder,
 
   # ROCm dependencies
   rocmSupport ? config.rocmSupport,
   rocmPackages_5,
-  gpuTargets ? [ ]
+  gpuTargets ? [ ],
 }:
 
 let
-  inherit (lib) attrsets lists strings trivial;
+  inherit (lib)
+    attrsets
+    lists
+    strings
+    trivial
+    ;
   inherit (cudaPackages) cudaFlags cudnn nccl;
 
   rocmPackages = rocmPackages_5;
 
   setBool = v: if v then "1" else "0";
 
-  # https://github.com/pytorch/pytorch/blob/v2.0.1/torch/utils/cpp_extension.py#L1744
+  # https://github.com/pytorch/pytorch/blob/v2.4.0/torch/utils/cpp_extension.py#L1953
   supportedTorchCudaCapabilities =
     let
-      real = ["3.5" "3.7" "5.0" "5.2" "5.3" "6.0" "6.1" "6.2" "7.0" "7.2" "7.5" "8.0" "8.6" "8.7" "8.9" "9.0"];
+      real = [
+        "3.5"
+        "3.7"
+        "5.0"
+        "5.2"
+        "5.3"
+        "6.0"
+        "6.1"
+        "6.2"
+        "7.0"
+        "7.2"
+        "7.5"
+        "8.0"
+        "8.6"
+        "8.7"
+        "8.9"
+        "9.0"
+        "9.0a"
+      ];
       ptx = lists.map (x: "${x}+PTX") real;
     in
     real ++ ptx;
@@ -82,18 +134,17 @@ let
   unsupportedCudaCapabilities = lists.subtractLists supportedCudaCapabilities cudaFlags.cudaCapabilities;
 
   # Use trivial.warnIf to print a warning if any unsupported GPU targets are specified.
-  gpuArchWarner = supported: unsupported:
-    trivial.throwIf (supported == [ ])
-      (
-        "No supported GPU targets specified. Requested GPU targets: "
-        + strings.concatStringsSep ", " unsupported
-      )
-      supported;
+  gpuArchWarner =
+    supported: unsupported:
+    trivial.throwIf (supported == [ ]) (
+      "No supported GPU targets specified. Requested GPU targets: "
+      + strings.concatStringsSep ", " unsupported
+    ) supported;
 
   # Create the gpuTargetString.
   gpuTargetString = strings.concatStringsSep ";" (
     if gpuTargets != [ ] then
-    # If gpuTargets is specified, it always takes priority.
+      # If gpuTargets is specified, it always takes priority.
       gpuTargets
     else if cudaSupport then
       gpuArchWarner supportedCudaCapabilities unsupportedCudaCapabilities
@@ -107,11 +158,31 @@ let
     name = "rocm-merged";
 
     paths = with rocmPackages; [
-      rocm-core clr rccl miopen miopengemm rocrand rocblas
-      rocsparse hipsparse rocthrust rocprim hipcub roctracer
-      rocfft rocsolver hipfft hipsolver hipblas
-      rocminfo rocm-thunk rocm-comgr rocm-device-libs
-      rocm-runtime clr.icd hipify
+      rocm-core
+      clr
+      rccl
+      miopen
+      miopengemm
+      rocrand
+      rocblas
+      rocsparse
+      hipsparse
+      rocthrust
+      rocprim
+      hipcub
+      roctracer
+      rocfft
+      rocsolver
+      hipfft
+      hipsolver
+      hipblas
+      rocminfo
+      rocm-thunk
+      rocm-comgr
+      rocm-device-libs
+      rocm-runtime
+      clr.icd
+      hipify
     ];
 
     # Fix `setuptools` not being found
@@ -122,15 +193,28 @@ let
 
   brokenConditions = attrsets.filterAttrs (_: cond: cond) {
     "CUDA and ROCm are mutually exclusive" = cudaSupport && rocmSupport;
-    "CUDA is not targeting Linux" = cudaSupport && !stdenv.isLinux;
-    "Unsupported CUDA version" = cudaSupport && !(builtins.elem cudaPackages.cudaMajorVersion [ "11" "12" ]);
-    "MPI cudatoolkit does not match cudaPackages.cudatoolkit" = MPISupport && cudaSupport && (mpi.cudatoolkit != cudaPackages.cudatoolkit);
-    "Magma cudaPackages does not match cudaPackages" = cudaSupport && (effectiveMagma.cudaPackages != cudaPackages);
+    "CUDA is not targeting Linux" = cudaSupport && !stdenv.hostPlatform.isLinux;
+    "Unsupported CUDA version" =
+      cudaSupport
+      && !(builtins.elem cudaPackages.cudaMajorVersion [
+        "11"
+        "12"
+      ]);
+    "MPI cudatoolkit does not match cudaPackages.cudatoolkit" =
+      MPISupport && cudaSupport && (mpi.cudatoolkit != cudaPackages.cudatoolkit);
+    # This used to be a deep package set comparison between cudaPackages and
+    # effectiveMagma.cudaPackages, making torch too strict in cudaPackages.
+    # In particular, this triggered warnings from cuda's `aliases.nix`
+    "Magma cudaPackages does not match cudaPackages" =
+      cudaSupport && (effectiveMagma.cudaPackages.cudaVersion != cudaPackages.cudaVersion);
+    "Rocm support is currently broken because `rocmPackages.hipblaslt` is unpackaged. (2024-06-09)" =
+      rocmSupport;
   };
-in buildPythonPackage rec {
+in
+buildPythonPackage rec {
   pname = "torch";
   # Don't forget to update torch-bin to the same version.
-  version = "2.2.2";
+  version = "2.4.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8.0";
@@ -148,86 +232,99 @@ in buildPythonPackage rec {
     repo = "pytorch";
     rev = "refs/tags/v${version}";
     fetchSubmodules = true;
-    hash = "sha256-la9wL9pOlgrSfq5V8aRKXt3hjW+Er/6484m0oUujlzk=";
+    hash = "sha256-x/zM/57syr46CP1TfGaefSjzvNm4jJbWFZGVGyzPMg8=";
   };
 
-  patches = lib.optionals cudaSupport [
-    ./fix-cmake-cuda-toolkit.patch
-  ]
-  ++ lib.optionals (stdenv.isDarwin && stdenv.isx86_64) [
-    # pthreadpool added support for Grand Central Dispatch in April
-    # 2020. However, this relies on functionality (DISPATCH_APPLY_AUTO)
-    # that is available starting with macOS 10.13. However, our current
-    # base is 10.12. Until we upgrade, we can fall back on the older
-    # pthread support.
-    ./pthreadpool-disable-gcd.diff
-  ] ++ lib.optionals stdenv.isLinux [
-    # Propagate CUPTI to Kineto by overriding the search path with environment variables.
-    # https://github.com/pytorch/pytorch/pull/108847
-    ./pytorch-pr-108847.patch
-  ];
+  patches =
+    [
+      # Allow setting PYTHON_LIB_REL_PATH with an environment variable.
+      # https://github.com/pytorch/pytorch/pull/128419
+      ./passthrough-python-lib-rel-path.patch
+    ]
+    ++ lib.optionals cudaSupport [ ./fix-cmake-cuda-toolkit.patch ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) [
+      # pthreadpool added support for Grand Central Dispatch in April
+      # 2020. However, this relies on functionality (DISPATCH_APPLY_AUTO)
+      # that is available starting with macOS 10.13. However, our current
+      # base is 10.12. Until we upgrade, we can fall back on the older
+      # pthread support.
+      ./pthreadpool-disable-gcd.diff
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isLinux [
+      # Propagate CUPTI to Kineto by overriding the search path with environment variables.
+      # https://github.com/pytorch/pytorch/pull/108847
+      ./pytorch-pr-108847.patch
+    ];
 
-  postPatch = lib.optionalString rocmSupport ''
-    # https://github.com/facebookincubator/gloo/pull/297
-    substituteInPlace third_party/gloo/cmake/Hipify.cmake \
-      --replace "\''${HIPIFY_COMMAND}" "python \''${HIPIFY_COMMAND}"
-
-    # Replace hard-coded rocm paths
-    substituteInPlace caffe2/CMakeLists.txt \
-      --replace "/opt/rocm" "${rocmtoolkit_joined}" \
-      --replace "hcc/include" "hip/include" \
-      --replace "rocblas/include" "include/rocblas" \
-      --replace "hipsparse/include" "include/hipsparse"
-
-    # Doesn't pick up the environment variable?
-    substituteInPlace third_party/kineto/libkineto/CMakeLists.txt \
-      --replace "\''$ENV{ROCM_SOURCE_DIR}" "${rocmtoolkit_joined}" \
-      --replace "/opt/rocm" "${rocmtoolkit_joined}"
-
-    # Strangely, this is never set in cmake
-    substituteInPlace cmake/public/LoadHIP.cmake \
-      --replace "set(ROCM_PATH \$ENV{ROCM_PATH})" \
-        "set(ROCM_PATH \$ENV{ROCM_PATH})''\nset(ROCM_VERSION ${lib.concatStrings (lib.intersperse "0" (lib.splitVersion rocmPackages.clr.version))})"
-  ''
-  # Detection of NCCL version doesn't work particularly well when using the static binary.
-  + lib.optionalString cudaSupport ''
-    substituteInPlace cmake/Modules/FindNCCL.cmake \
-      --replace \
-        'message(FATAL_ERROR "Found NCCL header version and library version' \
-        'message(WARNING "Found NCCL header version and library version'
-  ''
-  # Remove PyTorch's FindCUDAToolkit.cmake and to use CMake's default.
-  # We do not remove the entirety of cmake/Modules_CUDA_fix because we need FindCUDNN.cmake.
-  + lib.optionalString cudaSupport ''
-    rm cmake/Modules/FindCUDAToolkit.cmake
-    rm -rf cmake/Modules_CUDA_fix/{upstream,FindCUDA.cmake}
-  ''
-  # error: no member named 'aligned_alloc' in the global namespace; did you mean simply 'aligned_alloc'
-  # This lib overrided aligned_alloc hence the error message. Tltr: his function is linkable but not in header.
-  + lib.optionalString (stdenv.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinSdkVersion "11.0") ''
-    substituteInPlace third_party/pocketfft/pocketfft_hdronly.h --replace '#if __cplusplus >= 201703L
-    inline void *aligned_alloc(size_t align, size_t size)' '#if __cplusplus >= 201703L && 0
-    inline void *aligned_alloc(size_t align, size_t size)'
-  '';
+  postPatch =
+    lib.optionalString rocmSupport ''
+      # https://github.com/facebookincubator/gloo/pull/297
+      substituteInPlace third_party/gloo/cmake/Hipify.cmake \
+        --replace "\''${HIPIFY_COMMAND}" "python \''${HIPIFY_COMMAND}"
+
+      # Replace hard-coded rocm paths
+      substituteInPlace caffe2/CMakeLists.txt \
+        --replace "/opt/rocm" "${rocmtoolkit_joined}" \
+        --replace "hcc/include" "hip/include" \
+        --replace "rocblas/include" "include/rocblas" \
+        --replace "hipsparse/include" "include/hipsparse"
+
+      # Doesn't pick up the environment variable?
+      substituteInPlace third_party/kineto/libkineto/CMakeLists.txt \
+        --replace "\''$ENV{ROCM_SOURCE_DIR}" "${rocmtoolkit_joined}" \
+        --replace "/opt/rocm" "${rocmtoolkit_joined}"
+
+      # Strangely, this is never set in cmake
+      substituteInPlace cmake/public/LoadHIP.cmake \
+        --replace "set(ROCM_PATH \$ENV{ROCM_PATH})" \
+          "set(ROCM_PATH \$ENV{ROCM_PATH})''\nset(ROCM_VERSION ${lib.concatStrings (lib.intersperse "0" (lib.splitVersion rocmPackages.clr.version))})"
+    ''
+    # Detection of NCCL version doesn't work particularly well when using the static binary.
+    + lib.optionalString cudaSupport ''
+      substituteInPlace cmake/Modules/FindNCCL.cmake \
+        --replace \
+          'message(FATAL_ERROR "Found NCCL header version and library version' \
+          'message(WARNING "Found NCCL header version and library version'
+    ''
+    # Remove PyTorch's FindCUDAToolkit.cmake and use CMake's default.
+    # NOTE: Parts of pytorch rely on unmaintained FindCUDA.cmake with custom patches to support e.g.
+    # newer architectures (sm_90a). We do want to delete vendored patches, but have to keep them
+    # until https://github.com/pytorch/pytorch/issues/76082 is addressed
+    + lib.optionalString cudaSupport ''
+      rm cmake/Modules/FindCUDAToolkit.cmake
+    ''
+    # error: no member named 'aligned_alloc' in the global namespace; did you mean simply 'aligned_alloc'
+    # This lib overrided aligned_alloc hence the error message. Tltr: his function is linkable but not in header.
+    +
+      lib.optionalString
+        (stdenv.hostPlatform.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinSdkVersion "11.0")
+        ''
+          substituteInPlace third_party/pocketfft/pocketfft_hdronly.h --replace-fail '#if (__cplusplus >= 201703L) && (!defined(__MINGW32__)) && (!defined(_MSC_VER))
+          inline void *aligned_alloc(size_t align, size_t size)' '#if 0
+          inline void *aligned_alloc(size_t align, size_t size)'
+        '';
 
   # NOTE(@connorbaker): Though we do not disable Gloo or MPI when building with CUDA support, caution should be taken
   # when using the different backends. Gloo's GPU support isn't great, and MPI and CUDA can't be used at the same time
   # without extreme care to ensure they don't lock each other out of shared resources.
   # For more, see https://github.com/open-mpi/ompi/issues/7733#issuecomment-629806195.
-  preConfigure = lib.optionalString cudaSupport ''
-    export TORCH_CUDA_ARCH_LIST="${gpuTargetString}"
-    export CUPTI_INCLUDE_DIR=${cudaPackages.cuda_cupti.dev}/include
-    export CUPTI_LIBRARY_DIR=${cudaPackages.cuda_cupti.lib}/lib
-  '' + lib.optionalString (cudaSupport && cudaPackages ? cudnn) ''
-    export CUDNN_INCLUDE_DIR=${cudnn.dev}/include
-    export CUDNN_LIB_DIR=${cudnn.lib}/lib
-  '' + lib.optionalString rocmSupport ''
-    export ROCM_PATH=${rocmtoolkit_joined}
-    export ROCM_SOURCE_DIR=${rocmtoolkit_joined}
-    export PYTORCH_ROCM_ARCH="${gpuTargetString}"
-    export CMAKE_CXX_FLAGS="-I${rocmtoolkit_joined}/include -I${rocmtoolkit_joined}/include/rocblas"
-    python tools/amd_build/build_amd.py
-  '';
+  preConfigure =
+    lib.optionalString cudaSupport ''
+      export TORCH_CUDA_ARCH_LIST="${gpuTargetString}"
+      export CUPTI_INCLUDE_DIR=${lib.getDev cudaPackages.cuda_cupti}/include
+      export CUPTI_LIBRARY_DIR=${lib.getLib cudaPackages.cuda_cupti}/lib
+    ''
+    + lib.optionalString (cudaSupport && cudaPackages ? cudnn) ''
+      export CUDNN_INCLUDE_DIR=${lib.getLib cudnn}/include
+      export CUDNN_LIB_DIR=${cudnn.lib}/lib
+    ''
+    + lib.optionalString rocmSupport ''
+      export ROCM_PATH=${rocmtoolkit_joined}
+      export ROCM_SOURCE_DIR=${rocmtoolkit_joined}
+      export PYTORCH_ROCM_ARCH="${gpuTargetString}"
+      export CMAKE_CXX_FLAGS="-I${rocmtoolkit_joined}/include -I${rocmtoolkit_joined}/include/rocblas"
+      python tools/amd_build/build_amd.py
+    '';
 
   # Use pytorch's custom configurations
   dontUseCmakeConfigure = true;
@@ -287,6 +384,10 @@ in buildPythonPackage rec {
   USE_SYSTEM_NCCL = USE_NCCL;
   USE_STATIC_NCCL = USE_NCCL;
 
+  # Set the correct Python library path, broken since
+  # https://github.com/pytorch/pytorch/commit/3d617333e
+  PYTHON_LIB_REL_PATH = "${placeholder "out"}/${python.sitePackages}";
+
   # Suppress a weird warning in mkl-dnn, part of ideep in pytorch
   # (upstream seems to have fixed this in the wrong place?)
   # https://github.com/intel/mkl-dnn/commit/8134d346cdb7fe1695a2aa55771071d455fae0bc
@@ -294,102 +395,115 @@ in buildPythonPackage rec {
   #
   # Also of interest: pytorch ignores CXXFLAGS uses CFLAGS for both C and C++:
   # https://github.com/pytorch/pytorch/blob/v1.11.0/setup.py#L17
-  env.NIX_CFLAGS_COMPILE = toString ((lib.optionals (blas.implementation == "mkl") [ "-Wno-error=array-bounds" ]
-  # Suppress gcc regression: avx512 math function raises uninitialized variable warning
-  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105593
-  # See also: Fails to compile with GCC 12.1.0 https://github.com/pytorch/pytorch/issues/77939
-  ++ lib.optionals (stdenv.cc.isGNU && lib.versionAtLeast stdenv.cc.version "12.0.0") [
-    "-Wno-error=maybe-uninitialized"
-    "-Wno-error=uninitialized"
-  ]
-  # Since pytorch 2.0:
-  # gcc-12.2.0/include/c++/12.2.0/bits/new_allocator.h:158:33: error: ‘void operator delete(void*, std::size_t)’
-  # ... called on pointer ‘<unknown>’ with nonzero offset [1, 9223372036854775800] [-Werror=free-nonheap-object]
-  ++ lib.optionals (stdenv.cc.isGNU && lib.versions.major stdenv.cc.version == "12" ) [
-    "-Wno-error=free-nonheap-object"
-  ]
-  # .../source/torch/csrc/autograd/generated/python_functions_0.cpp:85:3:
-  # error: cast from ... to ... converts to incompatible function type [-Werror,-Wcast-function-type-strict]
-  ++ lib.optionals (stdenv.cc.isClang && lib.versionAtLeast stdenv.cc.version "16") [
-    "-Wno-error=cast-function-type-strict"
-  # Suppresses the most spammy warnings.
-  # This is mainly to fix https://github.com/NixOS/nixpkgs/issues/266895.
-  ] ++ lib.optionals rocmSupport [
-    "-Wno-#warnings"
-    "-Wno-cpp"
-    "-Wno-unknown-warning-option"
-    "-Wno-ignored-attributes"
-    "-Wno-deprecated-declarations"
-    "-Wno-defaulted-function-deleted"
-    "-Wno-pass-failed"
-  ] ++ [
-    "-Wno-unused-command-line-argument"
-    "-Wno-uninitialized"
-    "-Wno-array-bounds"
-    "-Wno-free-nonheap-object"
-    "-Wno-unused-result"
-  ] ++ lib.optionals stdenv.cc.isGNU [
-    "-Wno-maybe-uninitialized"
-    "-Wno-stringop-overflow"
-  ]));
-
-  nativeBuildInputs = [
-    cmake
-    which
-    ninja
-    pybind11
-    pythonRelaxDepsHook
-    removeReferencesTo
-  ] ++ lib.optionals cudaSupport (with cudaPackages; [
-    autoAddDriverRunpath
-    cuda_nvcc
-  ])
-  ++ lib.optionals rocmSupport [ rocmtoolkit_joined ];
-
-  buildInputs = [ blas blas.provider ]
-    ++ lib.optionals cudaSupport (with cudaPackages; [
-      cuda_cccl.dev # <thrust/*>
-      cuda_cudart.dev # cuda_runtime.h and libraries
-      cuda_cudart.lib
-      cuda_cudart.static
-      cuda_cupti.dev # For kineto
-      cuda_cupti.lib # For kineto
-      cuda_nvcc.dev # crt/host_config.h; even though we include this in nativeBuildinputs, it's needed here too
-      cuda_nvml_dev.dev # <nvml.h>
-      cuda_nvrtc.dev
-      cuda_nvrtc.lib
-      cuda_nvtx.dev
-      cuda_nvtx.lib # -llibNVToolsExt
-      libcublas.dev
-      libcublas.lib
-      libcufft.dev
-      libcufft.lib
-      libcurand.dev
-      libcurand.lib
-      libcusolver.dev
-      libcusolver.lib
-      libcusparse.dev
-      libcusparse.lib
-    ] ++ lists.optionals (cudaPackages ? cudnn) [
-      cudnn.dev
-      cudnn.lib
-    ] ++ lists.optionals useSystemNccl [
-      # Some platforms do not support NCCL (i.e., Jetson)
-      nccl.dev # Provides nccl.h AND a static copy of NCCL!
-    ] ++ lists.optionals (strings.versionOlder cudaVersion "11.8") [
-      cuda_nvprof.dev # <cuda_profiler_api.h>
-    ] ++ lists.optionals (strings.versionAtLeast cudaVersion "11.8") [
-      cuda_profiler_api.dev # <cuda_profiler_api.h>
-    ])
+  env.NIX_CFLAGS_COMPILE = toString (
+    (
+      lib.optionals (blas.implementation == "mkl") [ "-Wno-error=array-bounds" ]
+      # Suppress gcc regression: avx512 math function raises uninitialized variable warning
+      # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105593
+      # See also: Fails to compile with GCC 12.1.0 https://github.com/pytorch/pytorch/issues/77939
+      ++ lib.optionals (stdenv.cc.isGNU && lib.versionAtLeast stdenv.cc.version "12.0.0") [
+        "-Wno-error=maybe-uninitialized"
+        "-Wno-error=uninitialized"
+      ]
+      # Since pytorch 2.0:
+      # gcc-12.2.0/include/c++/12.2.0/bits/new_allocator.h:158:33: error: ‘void operator delete(void*, std::size_t)’
+      # ... called on pointer ‘<unknown>’ with nonzero offset [1, 9223372036854775800] [-Werror=free-nonheap-object]
+      ++ lib.optionals (stdenv.cc.isGNU && lib.versions.major stdenv.cc.version == "12") [
+        "-Wno-error=free-nonheap-object"
+      ]
+      # .../source/torch/csrc/autograd/generated/python_functions_0.cpp:85:3:
+      # error: cast from ... to ... converts to incompatible function type [-Werror,-Wcast-function-type-strict]
+      ++ lib.optionals (stdenv.cc.isClang && lib.versionAtLeast stdenv.cc.version "16") [
+        "-Wno-error=cast-function-type-strict"
+        # Suppresses the most spammy warnings.
+        # This is mainly to fix https://github.com/NixOS/nixpkgs/issues/266895.
+      ]
+      ++ lib.optionals rocmSupport [
+        "-Wno-#warnings"
+        "-Wno-cpp"
+        "-Wno-unknown-warning-option"
+        "-Wno-ignored-attributes"
+        "-Wno-deprecated-declarations"
+        "-Wno-defaulted-function-deleted"
+        "-Wno-pass-failed"
+      ]
+      ++ [
+        "-Wno-unused-command-line-argument"
+        "-Wno-uninitialized"
+        "-Wno-array-bounds"
+        "-Wno-free-nonheap-object"
+        "-Wno-unused-result"
+      ]
+      ++ lib.optionals stdenv.cc.isGNU [
+        "-Wno-maybe-uninitialized"
+        "-Wno-stringop-overflow"
+      ]
+    )
+  );
+
+  nativeBuildInputs =
+    [
+      cmake
+      which
+      ninja
+      pybind11
+      removeReferencesTo
+    ]
+    ++ lib.optionals cudaSupport (
+      with cudaPackages;
+      [
+        autoAddDriverRunpath
+        cuda_nvcc
+      ]
+    )
+    ++ lib.optionals rocmSupport [ rocmtoolkit_joined ];
+
+  buildInputs =
+    [
+      blas
+      blas.provider
+    ]
+    ++ lib.optionals cudaSupport (
+      with cudaPackages;
+      [
+        cuda_cccl # <thrust/*>
+        cuda_cudart # cuda_runtime.h and libraries
+        cuda_cupti # For kineto
+        cuda_nvcc # crt/host_config.h; even though we include this in nativeBuildinputs, it's needed here too
+        cuda_nvml_dev # <nvml.h>
+        cuda_nvrtc
+        cuda_nvtx # -llibNVToolsExt
+        libcublas
+        libcufft
+        libcurand
+        libcusolver
+        libcusparse
+      ]
+      ++ lists.optionals (cudaPackages ? cudnn) [ cudnn ]
+      ++ lists.optionals useSystemNccl [
+        # Some platforms do not support NCCL (i.e., Jetson)
+        nccl # Provides nccl.h AND a static copy of NCCL!
+      ]
+      ++ lists.optionals (strings.versionOlder cudaVersion "11.8") [
+        cuda_nvprof # <cuda_profiler_api.h>
+      ]
+      ++ lists.optionals (strings.versionAtLeast cudaVersion "11.8") [
+        cuda_profiler_api # <cuda_profiler_api.h>
+      ]
+    )
     ++ lib.optionals rocmSupport [ rocmPackages.llvm.openmp ]
     ++ lib.optionals (cudaSupport || rocmSupport) [ effectiveMagma ]
-    ++ lib.optionals stdenv.isLinux [ numactl ]
-    ++ lib.optionals stdenv.isDarwin [ Accelerate CoreServices libobjc ]
-    ++ lib.optionals tritonSupport [ openai-triton ]
+    ++ lib.optionals stdenv.hostPlatform.isLinux [ numactl ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      Accelerate
+      CoreServices
+      libobjc
+    ]
+    ++ lib.optionals tritonSupport [ triton ]
     ++ lib.optionals MPISupport [ mpi ]
     ++ lib.optionals rocmSupport [ rocmtoolkit_joined ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     astunparse
     cffi
     click
@@ -405,112 +519,150 @@ in buildPythonPackage rec {
     jinja2
 
     # the following are required for tensorboard support
-    pillow six future tensorboard protobuf
+    pillow
+    six
+    future
+    tensorboard
+    protobuf
 
     # torch/csrc requires `pybind11` at runtime
     pybind11
-  ] ++ lib.optionals tritonSupport [ openai-triton ];
+  ] ++ lib.optionals tritonSupport [ triton ];
 
-  propagatedCxxBuildInputs = [
-  ]
-  ++ lib.optionals MPISupport [ mpi ]
-  ++ lib.optionals rocmSupport [ rocmtoolkit_joined ];
+  propagatedCxxBuildInputs =
+    [ ] ++ lib.optionals MPISupport [ mpi ] ++ lib.optionals rocmSupport [ rocmtoolkit_joined ];
 
   # Tests take a long time and may be flaky, so just sanity-check imports
   doCheck = false;
 
-  pythonImportsCheck = [
-    "torch"
-  ];
-
-  nativeCheckInputs = [ hypothesis ninja psutil ];
+  pythonImportsCheck = [ "torch" ];
 
-  checkPhase = with lib.versions; with lib.strings; concatStringsSep " " [
-    "runHook preCheck"
-    "${python.interpreter} test/run_test.py"
-    "--exclude"
-    (concatStringsSep " " [
-      "utils" # utils requires git, which is not allowed in the check phase
-
-      # "dataloader" # psutils correctly finds and triggers multiprocessing, but is too sandboxed to run -- resulting in numerous errors
-      # ^^^^^^^^^^^^ NOTE: while test_dataloader does return errors, these are acceptable errors and do not interfere with the build
-
-      # tensorboard has acceptable failures for pytorch 1.3.x due to dependencies on tensorboard-plugins
-      (optionalString (majorMinor version == "1.3" ) "tensorboard")
-    ])
-    "runHook postCheck"
+  nativeCheckInputs = [
+    hypothesis
+    ninja
+    psutil
   ];
 
+  checkPhase =
+    with lib.versions;
+    with lib.strings;
+    concatStringsSep " " [
+      "runHook preCheck"
+      "${python.interpreter} test/run_test.py"
+      "--exclude"
+      (concatStringsSep " " [
+        "utils" # utils requires git, which is not allowed in the check phase
+
+        # "dataloader" # psutils correctly finds and triggers multiprocessing, but is too sandboxed to run -- resulting in numerous errors
+        # ^^^^^^^^^^^^ NOTE: while test_dataloader does return errors, these are acceptable errors and do not interfere with the build
+
+        # tensorboard has acceptable failures for pytorch 1.3.x due to dependencies on tensorboard-plugins
+        (optionalString (majorMinor version == "1.3") "tensorboard")
+      ])
+      "runHook postCheck"
+    ];
+
   pythonRemoveDeps = [
     # In our dist-info the name is just "triton"
     "pytorch-triton-rocm"
   ];
 
-  postInstall = ''
-    find "$out/${python.sitePackages}/torch/include" "$out/${python.sitePackages}/torch/lib" -type f -exec remove-references-to -t ${stdenv.cc} '{}' +
-
-    mkdir $dev
-    cp -r $out/${python.sitePackages}/torch/include $dev/include
-    cp -r $out/${python.sitePackages}/torch/share $dev/share
-
-    # Fix up library paths for split outputs
-    substituteInPlace \
-      $dev/share/cmake/Torch/TorchConfig.cmake \
-      --replace \''${TORCH_INSTALL_PREFIX}/lib "$lib/lib"
-
-    substituteInPlace \
-      $dev/share/cmake/Caffe2/Caffe2Targets-release.cmake \
-      --replace \''${_IMPORT_PREFIX}/lib "$lib/lib"
-
-    mkdir $lib
-    mv $out/${python.sitePackages}/torch/lib $lib/lib
-    ln -s $lib/lib $out/${python.sitePackages}/torch/lib
-  '' + lib.optionalString rocmSupport ''
-    substituteInPlace $dev/share/cmake/Tensorpipe/TensorpipeTargets-release.cmake \
-      --replace "\''${_IMPORT_PREFIX}/lib64" "$lib/lib"
+  postInstall =
+    ''
+      find "$out/${python.sitePackages}/torch/include" "$out/${python.sitePackages}/torch/lib" -type f -exec remove-references-to -t ${stdenv.cc} '{}' +
+
+      mkdir $dev
+      cp -r $out/${python.sitePackages}/torch/include $dev/include
+      cp -r $out/${python.sitePackages}/torch/share $dev/share
+
+      # Fix up library paths for split outputs
+      substituteInPlace \
+        $dev/share/cmake/Torch/TorchConfig.cmake \
+        --replace \''${TORCH_INSTALL_PREFIX}/lib "$lib/lib"
+
+      substituteInPlace \
+        $dev/share/cmake/Caffe2/Caffe2Targets-release.cmake \
+        --replace \''${_IMPORT_PREFIX}/lib "$lib/lib"
+
+      mkdir $lib
+      mv $out/${python.sitePackages}/torch/lib $lib/lib
+      ln -s $lib/lib $out/${python.sitePackages}/torch/lib
+    ''
+    + lib.optionalString rocmSupport ''
+      substituteInPlace $dev/share/cmake/Tensorpipe/TensorpipeTargets-release.cmake \
+        --replace "\''${_IMPORT_PREFIX}/lib64" "$lib/lib"
+
+      substituteInPlace $dev/share/cmake/ATen/ATenConfig.cmake \
+        --replace "/build/source/torch/include" "$dev/include"
+    '';
 
-    substituteInPlace $dev/share/cmake/ATen/ATenConfig.cmake \
-      --replace "/build/source/torch/include" "$dev/include"
-  '';
+  postFixup =
+    ''
+      mkdir -p "$cxxdev/nix-support"
+      printWords "''${propagatedCxxBuildInputs[@]}" >> "$cxxdev/nix-support/propagated-build-inputs"
+    ''
+    + lib.optionalString stdenv.hostPlatform.isDarwin ''
+      for f in $(ls $lib/lib/*.dylib); do
+          install_name_tool -id $lib/lib/$(basename $f) $f || true
+      done
 
-  postFixup = ''
-    mkdir -p "$cxxdev/nix-support"
-    printWords "''${propagatedCxxBuildInputs[@]}" >> "$cxxdev/nix-support/propagated-build-inputs"
-  '' + lib.optionalString stdenv.isDarwin ''
-    for f in $(ls $lib/lib/*.dylib); do
-        install_name_tool -id $lib/lib/$(basename $f) $f || true
-    done
+      install_name_tool -change @rpath/libshm.dylib $lib/lib/libshm.dylib $lib/lib/libtorch_python.dylib
+      install_name_tool -change @rpath/libtorch.dylib $lib/lib/libtorch.dylib $lib/lib/libtorch_python.dylib
+      install_name_tool -change @rpath/libc10.dylib $lib/lib/libc10.dylib $lib/lib/libtorch_python.dylib
 
-    install_name_tool -change @rpath/libshm.dylib $lib/lib/libshm.dylib $lib/lib/libtorch_python.dylib
-    install_name_tool -change @rpath/libtorch.dylib $lib/lib/libtorch.dylib $lib/lib/libtorch_python.dylib
-    install_name_tool -change @rpath/libc10.dylib $lib/lib/libc10.dylib $lib/lib/libtorch_python.dylib
+      install_name_tool -change @rpath/libc10.dylib $lib/lib/libc10.dylib $lib/lib/libtorch.dylib
 
-    install_name_tool -change @rpath/libc10.dylib $lib/lib/libc10.dylib $lib/lib/libtorch.dylib
+      install_name_tool -change @rpath/libtorch.dylib $lib/lib/libtorch.dylib $lib/lib/libshm.dylib
+      install_name_tool -change @rpath/libc10.dylib $lib/lib/libc10.dylib $lib/lib/libshm.dylib
+    '';
 
-    install_name_tool -change @rpath/libtorch.dylib $lib/lib/libtorch.dylib $lib/lib/libshm.dylib
-    install_name_tool -change @rpath/libc10.dylib $lib/lib/libc10.dylib $lib/lib/libshm.dylib
+  # See https://github.com/NixOS/nixpkgs/issues/296179
+  #
+  # This is a quick hack to add `libnvrtc` to the runpath so that torch can find
+  # it when it is needed at runtime.
+  extraRunpaths = lib.optionals cudaSupport [ "${lib.getLib cudaPackages.cuda_nvrtc}/lib" ];
+  postPhases = lib.optionals stdenv.hostPlatform.isLinux [ "postPatchelfPhase" ];
+  postPatchelfPhase = ''
+    while IFS= read -r -d $'\0' elf ; do
+      for extra in $extraRunpaths ; do
+        echo patchelf "$elf" --add-rpath "$extra" >&2
+        patchelf "$elf" --add-rpath "$extra"
+      done
+    done < <(
+      find "''${!outputLib}" "$out" -type f -iname '*.so' -print0
+    )
   '';
 
   # Builds in 2+h with 2 cores, and ~15m with a big-parallel builder.
   requiredSystemFeatures = [ "big-parallel" ];
 
   passthru = {
-    inherit cudaSupport cudaPackages;
+    inherit
+      cudaSupport
+      cudaPackages
+      rocmSupport
+      rocmPackages
+      ;
+    cudaCapabilities = if cudaSupport then supportedCudaCapabilities else [ ];
     # At least for 1.10.2 `torch.fft` is unavailable unless BLAS provider is MKL. This attribute allows for easy detection of its availability.
     blasProvider = blas.provider;
     # To help debug when a package is broken due to CUDA support
     inherit brokenConditions;
-    cudaCapabilities = if cudaSupport then supportedCudaCapabilities else [ ];
+    tests = callPackage ./tests.nix { };
   };
 
-  meta = with lib; {
+  meta = {
     changelog = "https://github.com/pytorch/pytorch/releases/tag/v${version}";
     # keep PyTorch in the description so the package can be found under that name on search.nixos.org
     description = "PyTorch: Tensors and Dynamic neural networks in Python with strong GPU acceleration";
     homepage = "https://pytorch.org/";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ teh thoughtpolice tscholak ]; # tscholak esp. for darwin-related builds
-    platforms = with platforms; linux ++ lib.optionals (!cudaSupport && !rocmSupport) darwin;
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [
+      teh
+      thoughtpolice
+      tscholak
+    ]; # tscholak esp. for darwin-related builds
+    platforms = with lib.platforms; linux ++ lib.optionals (!cudaSupport && !rocmSupport) darwin;
     broken = builtins.any trivial.id (builtins.attrValues brokenConditions);
   };
 }
diff --git a/pkgs/development/python-modules/torch/fix-cmake-cuda-toolkit.patch b/pkgs/development/python-modules/torch/fix-cmake-cuda-toolkit.patch
index 45587d3fe7b90..9767d8fee3088 100644
--- a/pkgs/development/python-modules/torch/fix-cmake-cuda-toolkit.patch
+++ b/pkgs/development/python-modules/torch/fix-cmake-cuda-toolkit.patch
@@ -1,51 +1,15 @@
 diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 9194e520bb0..d05fdcfb6cb 100644
+index c4cd4b2c2a..e983b21353 100644
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
-@@ -1160,10 +1160,6 @@ if(BUILD_SHARED_LIBS)
-       ${PROJECT_SOURCE_DIR}/cmake/Modules_CUDA_fix
-       DESTINATION share/cmake/Caffe2/
-       COMPONENT dev)
--  install(FILES
--      ${PROJECT_SOURCE_DIR}/cmake/Modules/FindCUDAToolkit.cmake
--      DESTINATION share/cmake/Caffe2/
--      COMPONENT dev)
-   install(FILES
-       ${PROJECT_SOURCE_DIR}/cmake/Modules/FindCUSPARSELT.cmake
-       DESTINATION share/cmake/Caffe2/
-diff --git a/cmake/public/cuda.cmake b/cmake/public/cuda.cmake
-index c7595774d81..4fc43771810 100644
---- a/cmake/public/cuda.cmake
-+++ b/cmake/public/cuda.cmake
-@@ -61,9 +61,15 @@ find_package(CUDAToolkit REQUIRED)
- cmake_policy(POP)
- 
- if(NOT CMAKE_CUDA_COMPILER_VERSION VERSION_EQUAL CUDAToolkit_VERSION)
--  message(FATAL_ERROR "Found two conflicting CUDA versions:\n"
--                      "V${CMAKE_CUDA_COMPILER_VERSION} in '${CUDA_INCLUDE_DIRS}' and\n"
--                      "V${CUDAToolkit_VERSION} in '${CUDAToolkit_INCLUDE_DIRS}'")
-+  if(CUDA_INCLUDE_DIRS IN_LIST CUDAToolkit_INCLUDE_DIR)
-+    message(STATUS "CUDA_INCLUDE_DIRS is a substring of CUDAToolkit_INCLUDE_DIR. "
-+                   "Setting CUDA_INCLUDE_DIRS to CUDAToolkit_INCLUDE_DIR.")
-+    set(CUDA_INCLUDE_DIRS "${CUDAToolkit_INCLUDE_DIR}")
-+  else()
-+    message(FATAL_ERROR "Found two conflicting CUDA installs:\n"
-+                        "V${CMAKE_CUDA_COMPILER_VERSION} in '${CUDA_INCLUDE_DIRS}' and\n"
-+                        "V${CUDAToolkit_VERSION} in '${CUDAToolkit_INCLUDE_DIR}'")
-+  endif()
- endif()
- 
- if(NOT TARGET CUDA::nvToolsExt)
-diff --git a/tools/setup_helpers/cmake.py b/tools/setup_helpers/cmake.py
-index fb19b66dfba..3f83bef32fe 100644
---- a/tools/setup_helpers/cmake.py
-+++ b/tools/setup_helpers/cmake.py
-@@ -207,6 +207,8 @@ class CMake:
-                     "BUILDING_WITH_TORCH_LIBS",
-                     "CUDA_HOST_COMPILER",
-                     "CUDA_NVCC_EXECUTABLE",
-+                    "CUDAToolkit_ROOT",
-+                    "CUDAToolkit_INCLUDE_DIR",
-                     "CUDA_SEPARABLE_COMPILATION",
-                     "CUDNN_LIBRARY",
-                     "CUDNN_INCLUDE_DIR",
+@@ -1319,10 +1319,6 @@ if(BUILD_SHARED_LIBS)
+     DIRECTORY ${PROJECT_SOURCE_DIR}/cmake/Modules_CUDA_fix
+     DESTINATION share/cmake/Caffe2/
+     COMPONENT dev)
+-  install(
+-    FILES ${PROJECT_SOURCE_DIR}/cmake/Modules/FindCUDAToolkit.cmake
+-    DESTINATION share/cmake/Caffe2/
+-    COMPONENT dev)
+   install(
+     FILES ${PROJECT_SOURCE_DIR}/cmake/Modules/FindCUSPARSELT.cmake
+     DESTINATION share/cmake/Caffe2/
diff --git a/pkgs/development/python-modules/torch/mk-runtime-check.nix b/pkgs/development/python-modules/torch/mk-runtime-check.nix
new file mode 100644
index 0000000000000..61180a19aaba5
--- /dev/null
+++ b/pkgs/development/python-modules/torch/mk-runtime-check.nix
@@ -0,0 +1,20 @@
+{
+  cudaPackages,
+  feature,
+  libraries,
+  versionAttr,
+  pythonPackages,
+}:
+
+(cudaPackages.writeGpuTestPython.override { python3Packages = pythonPackages; })
+  {
+    inherit feature;
+    inherit libraries;
+    name = "${feature}Available";
+  }
+  ''
+    import torch
+    message = f"{torch.cuda.is_available()=} and {torch.version.${versionAttr}=}"
+    assert torch.cuda.is_available() and torch.version.${versionAttr}, message
+    print(message)
+  ''
diff --git a/pkgs/development/python-modules/torch/mk-torch-compile-check.nix b/pkgs/development/python-modules/torch/mk-torch-compile-check.nix
new file mode 100644
index 0000000000000..268ed5297da94
--- /dev/null
+++ b/pkgs/development/python-modules/torch/mk-torch-compile-check.nix
@@ -0,0 +1,38 @@
+{
+  cudaPackages,
+  feature ? null,
+  lib,
+  libraries,
+  name ? if feature == null then "torch-compile-cpu" else "torch-compile-${feature}",
+  pythonPackages,
+  stdenv,
+}:
+let
+  deviceStr = if feature == null then "" else '', device="cuda"'';
+in
+(cudaPackages.writeGpuTestPython.override { python3Packages = pythonPackages; })
+  {
+    inherit name feature libraries;
+    makeWrapperArgs = [
+      "--suffix"
+      "PATH"
+      ":"
+      "${lib.getBin stdenv.cc}/bin"
+    ];
+  }
+  ''
+    import torch
+
+
+    @torch.compile
+    def opt_foo2(x, y):
+        a = torch.sin(x)
+        b = torch.cos(y)
+        return a + b
+
+
+    print(
+      opt_foo2(
+        torch.randn(10, 10${deviceStr}),
+        torch.randn(10, 10${deviceStr})))
+  ''
diff --git a/pkgs/development/python-modules/torch/passthrough-python-lib-rel-path.patch b/pkgs/development/python-modules/torch/passthrough-python-lib-rel-path.patch
new file mode 100644
index 0000000000000..629a0495c00ee
--- /dev/null
+++ b/pkgs/development/python-modules/torch/passthrough-python-lib-rel-path.patch
@@ -0,0 +1,12 @@
+diff --git a/tools/setup_helpers/cmake.py b/tools/setup_helpers/cmake.py
+index 5481ce46031c..d50d9d547399 100644
+--- a/tools/setup_helpers/cmake.py
++++ b/tools/setup_helpers/cmake.py
+@@ -231,6 +231,7 @@ def generate(
+                     "SELECTED_OP_LIST",
+                     "TORCH_CUDA_ARCH_LIST",
+                     "TRACING_BASED",
++                    "PYTHON_LIB_REL_PATH",
+                 )
+             }
+         )
diff --git a/pkgs/development/python-modules/torch/prefetch.sh b/pkgs/development/python-modules/torch/prefetch.sh
index 7b9c26de35f25..88cbfa2c346e3 100755
--- a/pkgs/development/python-modules/torch/prefetch.sh
+++ b/pkgs/development/python-modules/torch/prefetch.sh
@@ -15,18 +15,17 @@ url_and_key_list=(
   "x86_64-linux-39 $linux_cuda_bucket/torch-${version}%2B${linux_cuda_version}-cp39-cp39-linux_x86_64.whl torch-${version}-cp39-cp39-linux_x86_64.whl"
   "x86_64-linux-310 $linux_cuda_bucket/torch-${version}%2B${linux_cuda_version}-cp310-cp310-linux_x86_64.whl torch-${version}-cp310-cp310-linux_x86_64.whl"
   "x86_64-linux-311 $linux_cuda_bucket/torch-${version}%2B${linux_cuda_version}-cp311-cp311-linux_x86_64.whl torch-${version}-cp311-cp311-linux_x86_64.whl"
-  "x86_64-darwin-38 $darwin_bucket/torch-${version}-cp38-none-macosx_10_9_x86_64.whl torch-${version}-cp38-none-macosx_10_9_x86_64.whl"
-  "x86_64-darwin-39 $darwin_bucket/torch-${version}-cp39-none-macosx_10_9_x86_64.whl torch-${version}-cp39-none-macosx_10_9_x86_64.whl"
-  "x86_64-darwin-310 $darwin_bucket/torch-${version}-cp310-none-macosx_10_9_x86_64.whl torch-${version}-cp310-none-macosx_10_9_x86_64.whl"
-  "x86_64-darwin-311 $darwin_bucket/torch-${version}-cp311-none-macosx_10_9_x86_64.whl torch-${version}-cp311-none-macosx_10_9_x86_64.whl"
+  "x86_64-linux-312 $linux_cuda_bucket/torch-${version}%2B${linux_cuda_version}-cp312-cp312-linux_x86_64.whl torch-${version}-cp312-cp312-linux_x86_64.whl"
   "aarch64-darwin-38 $darwin_bucket/torch-${version}-cp38-none-macosx_11_0_arm64.whl torch-${version}-cp38-none-macosx_11_0_arm64.whl"
   "aarch64-darwin-39 $darwin_bucket/torch-${version}-cp39-none-macosx_11_0_arm64.whl torch-${version}-cp39-none-macosx_11_0_arm64.whl"
   "aarch64-darwin-310 $darwin_bucket/torch-${version}-cp310-none-macosx_11_0_arm64.whl torch-${version}-cp310-none-macosx_11_0_arm64.whl"
   "aarch64-darwin-311 $darwin_bucket/torch-${version}-cp311-none-macosx_11_0_arm64.whl torch-${version}-cp311-none-macosx_11_0_arm64.whl"
+  "aarch64-darwin-312 $darwin_bucket/torch-${version}-cp312-none-macosx_11_0_arm64.whl torch-${version}-cp312-none-macosx_11_0_arm64.whl"
   "aarch64-linux-38 $linux_cpu_bucket/torch-${version}-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl torch-${version}-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
   "aarch64-linux-39 $linux_cpu_bucket/torch-${version}-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl torch-${version}-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
   "aarch64-linux-310 $linux_cpu_bucket/torch-${version}-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl torch-${version}-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
   "aarch64-linux-311 $linux_cpu_bucket/torch-${version}-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl torch-${version}-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
+  "aarch64-linux-312 $linux_cpu_bucket/torch-${version}-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl torch-${version}-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
 )
 
 hashfile="binary-hashes-$version.nix"
diff --git a/pkgs/development/python-modules/torch/tests.nix b/pkgs/development/python-modules/torch/tests.nix
new file mode 100644
index 0000000000000..e3f2ca44ba5a9
--- /dev/null
+++ b/pkgs/development/python-modules/torch/tests.nix
@@ -0,0 +1,31 @@
+{ callPackage }:
+
+rec {
+  # To perform the runtime check use either
+  # `nix run .#python3Packages.torch.tests.tester-cudaAvailable` (outside the sandbox), or
+  # `nix build .#python3Packages.torch.tests.tester-cudaAvailable.gpuCheck` (in a relaxed sandbox)
+  tester-cudaAvailable = callPackage ./mk-runtime-check.nix {
+    feature = "cuda";
+    versionAttr = "cuda";
+    libraries = ps: [ ps.torchWithCuda ];
+  };
+  tester-rocmAvailable = callPackage ./mk-runtime-check.nix {
+    feature = "rocm";
+    versionAttr = "hip";
+    libraries = ps: [ ps.torchWithRocm ];
+  };
+
+  compileCpu = tester-compileCpu.gpuCheck;
+  tester-compileCpu = callPackage ./mk-torch-compile-check.nix {
+    feature = null;
+    libraries = ps: [ ps.torch ];
+  };
+  tester-compileCuda = callPackage ./mk-torch-compile-check.nix {
+    feature = "cuda";
+    libraries = ps: [ ps.torchWithCuda ];
+  };
+  tester-compileRocm = callPackage ./mk-torch-compile-check.nix {
+    feature = "rocm";
+    libraries = ps: [ ps.torchWithRocm ];
+  };
+}
diff --git a/pkgs/development/python-modules/torchaudio/bin.nix b/pkgs/development/python-modules/torchaudio/bin.nix
index dc69195b693a3..d9aa2b6de388c 100644
--- a/pkgs/development/python-modules/torchaudio/bin.nix
+++ b/pkgs/development/python-modules/torchaudio/bin.nix
@@ -1,78 +1,95 @@
-{ lib
-, stdenv
-, addOpenGLRunpath
-, autoPatchelfHook
-, buildPythonPackage
-, cudaPackages
-, fetchurl
-, ffmpeg_4
-, ffmpeg_5
-, ffmpeg_6
-, sox
-, pythonAtLeast
-, pythonOlder
-, python
-, torch-bin
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  python,
+  fetchurl,
+  pythonOlder,
+  pythonAtLeast,
+
+  # buildInputs
+  cudaPackages,
+  ffmpeg_6,
+  sox,
+
+  # nativeBuildInputs
+  addDriverRunpath,
+  autoPatchelfHook,
+
+  # dependencies
+  torch-bin,
 }:
 
 buildPythonPackage rec {
   pname = "torchaudio";
-  version = "2.2.2";
+  version = "2.4.1";
   format = "wheel";
 
   src =
-    let pyVerNoDot = lib.replaceStrings [ "." ] [ "" ] python.pythonVersion;
-        unsupported = throw "Unsupported system";
-        srcs = (import ./binary-hashes.nix version)."${stdenv.system}-${pyVerNoDot}" or unsupported;
+    let
+      pyVerNoDot = lib.replaceStrings [ "." ] [ "" ] python.pythonVersion;
+      unsupported = throw "Unsupported system";
+      srcs = (import ./binary-hashes.nix version)."${stdenv.system}-${pyVerNoDot}" or unsupported;
     in
     fetchurl srcs;
 
-  disabled = (pythonOlder "3.8") || (pythonAtLeast "3.12");
-
-  buildInputs = with cudaPackages; [
-    # $out/${sitePackages}/torchaudio/lib/libtorchaudio*.so wants libcudart.so.11.0 but torch/lib only ships
-    # libcudart.$hash.so.11.0
-    cuda_cudart
+  disabled = (pythonOlder "3.8") || (pythonAtLeast "3.13");
 
-    # $out/${sitePackages}/torchaudio/lib/libtorchaudio*.so wants libnvToolsExt.so.2 but torch/lib only ships
-    # libnvToolsExt-$hash.so.1
-    cuda_nvtx
+  buildInputs =
+    [
+      # We need to patch lib/torio/_torio_ffmpeg6
+      ffmpeg_6.dev
+      sox
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isLinux (
+      with cudaPackages;
+      [
+        # $out/${sitePackages}/torchaudio/lib/libtorchaudio*.so wants libcudart.so.11.0 but torch/lib only ships
+        # libcudart.$hash.so.11.0
+        cuda_cudart
 
-    # We need to patch the lib/_torchaudio_ffmpeg[4-6]
-    ffmpeg_4.dev
-    ffmpeg_5.dev
-    ffmpeg_6.dev
-    sox
-  ];
+        # $out/${sitePackages}/torchaudio/lib/libtorchaudio*.so wants libnvToolsExt.so.2 but torch/lib only ships
+        # libnvToolsExt-$hash.so.1
+        cuda_nvtx
+      ]
+    );
 
-  nativeBuildInputs = [
+  nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [
     autoPatchelfHook
-    addOpenGLRunpath
+    addDriverRunpath
   ];
 
-  propagatedBuildInputs = [
-    torch-bin
-  ];
+  dependencies = [ torch-bin ];
 
-  preInstall = ''
+  preInstall = lib.optionals stdenv.hostPlatform.isLinux ''
     addAutoPatchelfSearchPath "${torch-bin}/${python.sitePackages}/torch"
   '';
 
+  preFixup = ''
+    # TorchAudio loads the newest FFmpeg that works, so get rid of the
+    # old ones.
+    rm $out/${python.sitePackages}/torio/lib/{lib,_}torio_ffmpeg{4,5}.*
+  '';
+
   # The wheel-binary is not stripped to avoid the error of `ImportError: libtorch_cuda_cpp.so: ELF load command address/offset not properly aligned.`.
   dontStrip = true;
 
   pythonImportsCheck = [ "torchaudio" ];
 
-  meta = with lib; {
+  meta = {
     description = "PyTorch audio library";
     homepage = "https://pytorch.org/";
     changelog = "https://github.com/pytorch/audio/releases/tag/v${version}";
     # Includes CUDA and Intel MKL, but redistributions of the binary are not limited.
     # https://docs.nvidia.com/cuda/eula/index.html
     # https://www.intel.com/content/www/us/en/developer/articles/license/onemkl-license-faq.html
-    license = licenses.bsd3;
-    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
-    platforms = [ "aarch64-linux" "x86_64-linux" "aarch64-darwin" "x86_64-darwin" ];
-    maintainers = with maintainers; [ junjihashimoto ];
+    license = lib.licenses.bsd3;
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
+    platforms = [
+      "aarch64-linux"
+      "x86_64-linux"
+      "aarch64-darwin"
+    ];
+    maintainers = with lib.maintainers; [ junjihashimoto ];
   };
 }
diff --git a/pkgs/development/python-modules/torchaudio/binary-hashes.nix b/pkgs/development/python-modules/torchaudio/binary-hashes.nix
index a15dffc4856a9..ea62ccc724f5b 100644
--- a/pkgs/development/python-modules/torchaudio/binary-hashes.nix
+++ b/pkgs/development/python-modules/torchaudio/binary-hashes.nix
@@ -5,87 +5,83 @@
 
 # To add a new version, run "prefetch.sh 'new-version'" to paste the generated file as follows.
 
-version : builtins.getAttr version {
-  "2.2.2" = {
+version:
+builtins.getAttr version {
+  "2.4.1" = {
     x86_64-linux-38 = {
-      name = "torchaudio-2.2.2-cp38-cp38-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.2.2%2Bcu121-cp38-cp38-linux_x86_64.whl";
-      hash = "sha256-KPwkn2+sVuS9GbZdk7f6lSJ956D1WLY2YS7k3qE3tog=";
+      name = "torchaudio-2.4.1-cp38-cp38-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.4.1%2Bcu121-cp38-cp38-linux_x86_64.whl";
+      hash = "sha256-/PvxFpkpX2WwRYHNBDcv4CojmAbrfSXaJ0bzXeD10tk=";
     };
     x86_64-linux-39 = {
-      name = "torchaudio-2.2.2-cp39-cp39-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.2.2%2Bcu121-cp39-cp39-linux_x86_64.whl";
-      hash = "sha256-YzzBeuAiMH0HPyZhvK/z9Q2bPW99MukXMFRCAybiDRs=";
+      name = "torchaudio-2.4.1-cp39-cp39-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.4.1%2Bcu121-cp39-cp39-linux_x86_64.whl";
+      hash = "sha256-cbuwbBAYeZ2zoLzAlN0IuAvCi7e18nq4sOLziwFLEcY=";
     };
     x86_64-linux-310 = {
-      name = "torchaudio-2.2.2-cp310-cp310-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.2.2%2Bcu121-cp310-cp310-linux_x86_64.whl";
-      hash = "sha256-/eGFVNhP0AR1iPC87QPXcPZVPxeFGjtEE3kWShPJmwc=";
+      name = "torchaudio-2.4.1-cp310-cp310-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.4.1%2Bcu121-cp310-cp310-linux_x86_64.whl";
+      hash = "sha256-2oyHyAocE3akjcM+7zCwO73x3yWgW9KxxiC4gRx7Gb4=";
     };
     x86_64-linux-311 = {
-      name = "torchaudio-2.2.2-cp311-cp311-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.2.2%2Bcu121-cp311-cp311-linux_x86_64.whl";
-      hash = "sha256-DgdNBcIlizAU3aAu7wB60Xq0TP0B2XgMmpFOXZcqwAs=";
+      name = "torchaudio-2.4.1-cp311-cp311-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.4.1%2Bcu121-cp311-cp311-linux_x86_64.whl";
+      hash = "sha256-AbBO25E1p9YPoBAPwB/7QKCFgBD1ma5kGPQOCeiOaBs=";
     };
-    x86_64-darwin-38 = {
-      name = "torchaudio-2.2.2-cp38-cp38-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp38-cp38-macosx_10_13_x86_64.whl";
-      hash = "sha256-jOTfBlqUmRHStngqpME2h++t6iP/x8em8V9+euXIlSQ=";
-    };
-    x86_64-darwin-39 = {
-      name = "torchaudio-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp39-cp39-macosx_10_13_x86_64.whl";
-      hash = "sha256-23CxOocaSUh72QQr8EsS90rtd7GofS++to0J2bZLxSg=";
-    };
-    x86_64-darwin-310 = {
-      name = "torchaudio-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp310-cp310-macosx_10_13_x86_64.whl";
-      hash = "sha256-sdWCAdEI6F2z41uEMZ8ziE9h8yfDjq2GkTIYyMGsw90=";
-    };
-    x86_64-darwin-311 = {
-      name = "torchaudio-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp311-cp311-macosx_10_13_x86_64.whl";
-      hash = "sha256-8agaUYo+hsAEEl64kfxDPOj7I0MpW11hLQ83sk4THv0=";
+    x86_64-linux-312 = {
+      name = "torchaudio-2.4.1-cp312-cp312-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.4.1%2Bcu121-cp312-cp312-linux_x86_64.whl";
+      hash = "sha256-a3TXBquoHbX4OMpBTwPT9lmOqIC3IQYGXbycXTwGP+E=";
     };
     aarch64-darwin-38 = {
-      name = "torchaudio-2.2.2-cp38-cp38-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp38-cp38-macosx_11_0_arm64.whl";
-      hash = "sha256-s7ir4msGfpxKbj26FWuR16hSR+iN2nC3xDhZ9VuXjdw=";
+      name = "torchaudio-2.4.1-cp38-cp38-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.4.1-cp38-cp38-macosx_11_0_arm64.whl";
+      hash = "sha256-TqD9ABQv55XHW8wgowOYG1byMnx/fTIbQqj+8deKr6k=";
     };
     aarch64-darwin-39 = {
-      name = "torchaudio-2.2.2-cp39-cp39-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp39-cp39-macosx_11_0_arm64.whl";
-      hash = "sha256-S3ioShib89pLlmN1zr3sxYSk3F9g4L3nIdc0Ae1crUU=";
+      name = "torchaudio-2.4.1-cp39-cp39-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.4.1-cp39-cp39-macosx_11_0_arm64.whl";
+      hash = "sha256-OtzlUIUJArmqbNI3jM1yCsnsjPMeLrqXQ8zIT/y+dtY=";
     };
     aarch64-darwin-310 = {
-      name = "torchaudio-2.2.2-cp310-cp310-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp310-cp310-macosx_11_0_arm64.whl";
-      hash = "sha256-pSDhTqC6idncJ5IutGCfnqxcAcJ5gw4PIWucngF9Q4s=";
+      name = "torchaudio-2.4.1-cp310-cp310-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.4.1-cp310-cp310-macosx_11_0_arm64.whl";
+      hash = "sha256-ZhkJdRkJNAsk9jdBDf7AKoiIZ4FsPbGe1PQQKuEFJEo=";
     };
     aarch64-darwin-311 = {
-      name = "torchaudio-2.2.2-cp311-cp311-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp311-cp311-macosx_11_0_arm64.whl";
-      hash = "sha256-AUgvyFEX+F7kT4qo6cEbHAIjJhc+B0h4ntQrIZECk38=";
+      name = "torchaudio-2.4.1-cp311-cp311-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.4.1-cp311-cp311-macosx_11_0_arm64.whl";
+      hash = "sha256-YK8VMYFdImWeVBLqQBvtVSoWw4mTjElmTkRuTP1d3AY=";
+    };
+    aarch64-darwin-312 = {
+      name = "torchaudio-2.4.1-cp312-cp312-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.4.1-cp312-cp312-macosx_11_0_arm64.whl";
+      hash = "sha256-lTlGz2EP/Ve7P90ijv+iES+lHF3+NqlmEe/8kHSj074=";
     };
     aarch64-linux-38 = {
-      name = "torchaudio-2.2.2-cp38-cp38-manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp38-cp38-linux_aarch64.whl";
-      hash = "sha256-T3VqbmZ92IQb8hoH6tPv7ap6J9VYUnecJm9vKhBkyZQ=";
+      name = "torchaudio-2.4.1-cp38-cp38-manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.4.1-cp38-cp38-linux_aarch64.whl";
+      hash = "sha256-dNGc+co9rTlK/Ku35vftmrn1nyVA1QKCbH7D4zmFJR0=";
     };
     aarch64-linux-39 = {
-      name = "torchaudio-2.2.2-cp39-cp39-manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp39-cp39-linux_aarch64.whl";
-      hash = "sha256-cj9OV7XQwSA1fKYM1VtObPrIRbwOzMtLQXpEqk68Ums=";
+      name = "torchaudio-2.4.1-cp39-cp39-manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.4.1-cp39-cp39-linux_aarch64.whl";
+      hash = "sha256-NsfnvGs1jL9Ct2nIAgZ4D6FJfRQamFxrPndo3kRSTpo=";
     };
     aarch64-linux-310 = {
-      name = "torchaudio-2.2.2-cp310-cp310-manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp310-cp310-linux_aarch64.whl";
-      hash = "sha256-sPOOfTVIkU14qvwn/wD3cBsaUL/N3FiWX1RfySzNSmY=";
+      name = "torchaudio-2.4.1-cp310-cp310-manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.4.1-cp310-cp310-linux_aarch64.whl";
+      hash = "sha256-VEMRedmpzPP+6umKrOB9ifrp/XKOK8hlbvvXDn7cxvg=";
     };
     aarch64-linux-311 = {
-      name = "torchaudio-2.2.2-cp311-cp311-manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp311-cp311-linux_aarch64.whl";
-      hash = "sha256-CgOki21V0X1I9Bmn8dDUAY1IoEx2WFwWqbXmkoH5L5Q=";
+      name = "torchaudio-2.4.1-cp311-cp311-manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.4.1-cp311-cp311-linux_aarch64.whl";
+      hash = "sha256-dkCq/7IFbhLykGGHsDoiIooJCMh9ApX930sLkjNKKQs=";
+    };
+    aarch64-linux-312 = {
+      name = "torchaudio-2.4.1-cp312-cp312-manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.4.1-cp312-cp312-linux_aarch64.whl";
+      hash = "sha256-W2L8exbtcIsMB9Q5MTd5fpL2P8O9VwVgfZe6app88/A=";
     };
   };
 }
diff --git a/pkgs/development/python-modules/torchaudio/default.nix b/pkgs/development/python-modules/torchaudio/default.nix
index 3ca33cc36b656..760ea740b9f82 100644
--- a/pkgs/development/python-modules/torchaudio/default.nix
+++ b/pkgs/development/python-modules/torchaudio/default.nix
@@ -1,39 +1,104 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cmake
-, symlinkJoin
-, ffmpeg-full
-, pkg-config
-, ninja
-, pybind11
-, sox
-, torch
-, cudaSupport ? torch.cudaSupport
-, cudaPackages
+{
+  lib,
+  symlinkJoin,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # nativeBuildInputs
+  cmake,
+  pkg-config,
+  ninja,
+
+  # buildInputs
+  ffmpeg-full,
+  pybind11,
+  sox,
+  torch,
+
+  cudaSupport ? torch.cudaSupport,
+  cudaPackages,
+  rocmSupport ? torch.rocmSupport,
+  rocmPackages,
+
+  gpuTargets ? [ ],
 }:
 
+let
+  # TODO: Reuse one defined in torch?
+  # Some of those dependencies are probbly not required,
+  # but it breaks when the store path is different between torch and torchaudio
+  rocmtoolkit_joined = symlinkJoin {
+    name = "rocm-merged";
+
+    paths = with rocmPackages; [
+      rocm-core
+      clr
+      rccl
+      miopen
+      miopengemm
+      rocrand
+      rocblas
+      rocsparse
+      hipsparse
+      rocthrust
+      rocprim
+      hipcub
+      roctracer
+      rocfft
+      rocsolver
+      hipfft
+      hipsolver
+      hipblas
+      rocminfo
+      rocm-thunk
+      rocm-comgr
+      rocm-device-libs
+      rocm-runtime
+      clr.icd
+      hipify
+    ];
+
+    # Fix `setuptools` not being found
+    postBuild = ''
+      rm -rf $out/nix-support
+    '';
+  };
+  # Only used for ROCm
+  gpuTargetString = lib.strings.concatStringsSep ";" (
+    if gpuTargets != [ ] then
+      # If gpuTargets is specified, it always takes priority.
+      gpuTargets
+    else if rocmSupport then
+      rocmPackages.clr.gpuTargets
+    else
+      throw "No GPU targets specified"
+  );
+in
 buildPythonPackage rec {
   pname = "torchaudio";
-  version = "2.2.2";
+  version = "2.4.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pytorch";
     repo = "audio";
     rev = "refs/tags/v${version}";
-    hash = "sha256-rW4xLUFTpGpUeMnTBdrI/2OjgZX1ihK0EfcVK6snmpk=";
+    hash = "sha256-zQqIIzOW9vboP5XQSOUWB0edz6XJvz06RqbcYPO9K24=";
   };
 
-  patches = [
-    ./0001-setup.py-propagate-cmakeFlags.patch
-  ];
+  patches = [ ./0001-setup.py-propagate-cmakeFlags.patch ];
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace 'print(" --- Initializing submodules")' "return" \
-      --replace "_fetch_archives(_parse_sources())" "pass"
-  '';
+  postPatch =
+    ''
+      substituteInPlace setup.py \
+        --replace 'print(" --- Initializing submodules")' "return" \
+        --replace "_fetch_archives(_parse_sources())" "pass"
+    ''
+    + lib.optionalString rocmSupport ''
+      # There is no .info/version-dev, only .info/version
+      substituteInPlace cmake/LoadHIP.cmake \
+        --replace "/.info/version-dev" "/.info/version"
+    '';
 
   env = {
     TORCH_CUDA_ARCH_LIST = "${lib.concatStringsSep ";" torch.cudaCapabilities}";
@@ -49,13 +114,21 @@ buildPythonPackage rec {
     ];
   };
 
-  nativeBuildInputs = [
-    cmake
-    pkg-config
-    ninja
-  ] ++ lib.optionals cudaSupport [
-    cudaPackages.cuda_nvcc
-  ];
+  nativeBuildInputs =
+    [
+      cmake
+      pkg-config
+      ninja
+    ]
+    ++ lib.optionals cudaSupport [ cudaPackages.cuda_nvcc ]
+    ++ lib.optionals rocmSupport (
+      with rocmPackages;
+      [
+        clr
+        rocblas
+        hipblas
+      ]
+    );
 
   buildInputs = [
     ffmpeg-full
@@ -64,25 +137,32 @@ buildPythonPackage rec {
     torch.cxxdev
   ];
 
-  propagatedBuildInputs = [
-    torch
-  ];
+  dependencies = [ torch ];
 
-  BUILD_SOX=0;
-  BUILD_KALDI=0;
-  BUILD_RNNT=0;
-  BUILD_CTC_DECODER=0;
+  BUILD_SOX = 0;
+  BUILD_KALDI = 0;
+  BUILD_RNNT = 0;
+  BUILD_CTC_DECODER = 0;
+
+  preConfigure = lib.optionalString rocmSupport ''
+    export ROCM_PATH=${rocmtoolkit_joined}
+    export PYTORCH_ROCM_ARCH="${gpuTargetString}"
+  '';
 
   dontUseCmakeConfigure = true;
 
   doCheck = false; # requires sox backend
 
-  meta = with lib; {
+  meta = {
     description = "PyTorch audio library";
     homepage = "https://pytorch.org/";
     changelog = "https://github.com/pytorch/audio/releases/tag/v${version}";
-    license = licenses.bsd2;
-    platforms = platforms.unix;
-    maintainers = with maintainers; [ junjihashimoto ];
+    license = lib.licenses.bsd2;
+    platforms = [
+      "aarch64-darwin"
+      "aarch64-linux"
+      "x86_64-linux"
+    ];
+    maintainers = with lib.maintainers; [ junjihashimoto ];
   };
 }
diff --git a/pkgs/development/python-modules/torchaudio/prefetch.sh b/pkgs/development/python-modules/torchaudio/prefetch.sh
index 89422ff7c65e0..e4a9b9c90f6cd 100755
--- a/pkgs/development/python-modules/torchaudio/prefetch.sh
+++ b/pkgs/development/python-modules/torchaudio/prefetch.sh
@@ -15,18 +15,17 @@ url_and_key_list=(
     "x86_64-linux-39 $linux_cuda_bucket/torchaudio-${version}%2B${linux_cuda_version}-cp39-cp39-linux_x86_64.whl torchaudio-${version}-cp39-cp39-linux_x86_64.whl"
     "x86_64-linux-310 $linux_cuda_bucket/torchaudio-${version}%2B${linux_cuda_version}-cp310-cp310-linux_x86_64.whl torchaudio-${version}-cp310-cp310-linux_x86_64.whl"
     "x86_64-linux-311 $linux_cuda_bucket/torchaudio-${version}%2B${linux_cuda_version}-cp311-cp311-linux_x86_64.whl torchaudio-${version}-cp311-cp311-linux_x86_64.whl"
-    "x86_64-darwin-38 $darwin_bucket/torchaudio-${version}-cp38-cp38-macosx_10_13_x86_64.whl torchaudio-${version}-cp38-cp38-macosx_10_9_x86_64.whl"
-    "x86_64-darwin-39 $darwin_bucket/torchaudio-${version}-cp39-cp39-macosx_10_13_x86_64.whl torchaudio-${version}-cp39-cp39-macosx_10_9_x86_64.whl"
-    "x86_64-darwin-310 $darwin_bucket/torchaudio-${version}-cp310-cp310-macosx_10_13_x86_64.whl torchaudio-${version}-cp310-cp310-macosx_10_9_x86_64.whl"
-    "x86_64-darwin-311 $darwin_bucket/torchaudio-${version}-cp311-cp311-macosx_10_13_x86_64.whl torchaudio-${version}-cp311-cp311-macosx_10_9_x86_64.whl"
+    "x86_64-linux-312 $linux_cuda_bucket/torchaudio-${version}%2B${linux_cuda_version}-cp312-cp312-linux_x86_64.whl torchaudio-${version}-cp312-cp312-linux_x86_64.whl"
     "aarch64-darwin-38 $darwin_bucket/torchaudio-${version}-cp38-cp38-macosx_11_0_arm64.whl torchaudio-${version}-cp38-cp38-macosx_11_0_arm64.whl"
     "aarch64-darwin-39 $darwin_bucket/torchaudio-${version}-cp39-cp39-macosx_11_0_arm64.whl torchaudio-${version}-cp39-cp39-macosx_11_0_arm64.whl"
     "aarch64-darwin-310 $darwin_bucket/torchaudio-${version}-cp310-cp310-macosx_11_0_arm64.whl torchaudio-${version}-cp310-cp310-macosx_11_0_arm64.whl"
     "aarch64-darwin-311 $darwin_bucket/torchaudio-${version}-cp311-cp311-macosx_11_0_arm64.whl torchaudio-${version}-cp311-cp311-macosx_11_0_arm64.whl"
+    "aarch64-darwin-312 $darwin_bucket/torchaudio-${version}-cp312-cp312-macosx_11_0_arm64.whl torchaudio-${version}-cp312-cp312-macosx_11_0_arm64.whl"
     "aarch64-linux-38 $linux_cpu_bucket/torchaudio-${version}-cp38-cp38-linux_aarch64.whl torchaudio-${version}-cp38-cp38-manylinux2014_aarch64.whl"
     "aarch64-linux-39 $linux_cpu_bucket/torchaudio-${version}-cp39-cp39-linux_aarch64.whl torchaudio-${version}-cp39-cp39-manylinux2014_aarch64.whl"
     "aarch64-linux-310 $linux_cpu_bucket/torchaudio-${version}-cp310-cp310-linux_aarch64.whl torchaudio-${version}-cp310-cp310-manylinux2014_aarch64.whl"
     "aarch64-linux-311 $linux_cpu_bucket/torchaudio-${version}-cp311-cp311-linux_aarch64.whl torchaudio-${version}-cp311-cp311-manylinux2014_aarch64.whl"
+    "aarch64-linux-312 $linux_cpu_bucket/torchaudio-${version}-cp312-cp312-linux_aarch64.whl torchaudio-${version}-cp312-cp312-manylinux2014_aarch64.whl"
 )
 
 hashfile=binary-hashes-"$version".nix
diff --git a/pkgs/development/python-modules/torchcrepe/default.nix b/pkgs/development/python-modules/torchcrepe/default.nix
new file mode 100644
index 0000000000000..d292f0de81e1a
--- /dev/null
+++ b/pkgs/development/python-modules/torchcrepe/default.nix
@@ -0,0 +1,51 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  librosa,
+  pytestCheckHook,
+  pythonOlder,
+  resampy,
+  scipy,
+  setuptools,
+  torch,
+  torchaudio,
+  tqdm,
+}:
+
+buildPythonPackage {
+  pname = "torchcrepe";
+  version = "0.0.23";
+  pyproject = true;
+  build-system = [ setuptools ];
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "maxrmorrison";
+    repo = "torchcrepe";
+    # No releases: https://github.com/maxrmorrison/torchcrepe/commit/e2c305878ec7a89aec85a01f8d223a75a36d30b6
+    rev = "e2c305878ec7a89aec85a01f8d223a75a36d30b6";
+    hash = "sha256-fhBU5KFDNDG4g4KNivE/dRpMPyu1QNa9xKN6HIz3tK4=";
+  };
+
+  dependencies = [
+    librosa
+    resampy
+    scipy
+    torch
+    torchaudio
+    tqdm
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "torchcrepe" ];
+
+  meta = {
+    description = "Pytorch implementation of the CREPE pitch tracker";
+    homepage = "https://github.com/maxrmorrison/torchcrepe";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ derdennisop ];
+  };
+}
diff --git a/pkgs/development/python-modules/torchdiffeq/default.nix b/pkgs/development/python-modules/torchdiffeq/default.nix
index 8195d750c6f76..455450a718c16 100644
--- a/pkgs/development/python-modules/torchdiffeq/default.nix
+++ b/pkgs/development/python-modules/torchdiffeq/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-# dependencies
-, torch
-, scipy
+  # dependencies
+  torch,
+  scipy,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "torchdiffeq";
-  version = "0.2.3";
+  version = "0.2.4";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-/nX0NLkJCsDCdwLgK+0hRysPhwNb5lgfUe3F1AE+oxo=";
+    hash = "sha256-wOV8PIif7dp/I6YBXb/Nba5QcqBt1u0Q6CAMIAmEQEM=";
   };
 
   propagatedBuildInputs = [
@@ -30,9 +31,7 @@ buildPythonPackage rec {
   # no tests in sdist, no tags on git
   doCheck = false;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Differentiable ODE solvers with full GPU support and O(1)-memory backpropagation";
diff --git a/pkgs/development/python-modules/torchgpipe/default.nix b/pkgs/development/python-modules/torchgpipe/default.nix
deleted file mode 100644
index f96add92f0cc7..0000000000000
--- a/pkgs/development/python-modules/torchgpipe/default.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, torch
-}:
-
-buildPythonPackage rec {
-  pname = "torchgpipe";
-  version = "0.0.7";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.6";
-
-  src = fetchFromGitHub {
-    owner = "kakaobrain";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "0ki0njhmz1i3pkpr3y6h6ac7p5qh1kih06mknc2s18mfw34f2l55";
-  };
-
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "'pytest-runner'" ""
-  '';
-
-  propagatedBuildInputs = [ torch ];
-
-  nativeCheckInputs = [ pytestCheckHook ];
-  disabledTests = [
-    "test_inplace_on_requires_grad"
-    "test_input_requiring_grad"
-  ];
-
-  meta = with lib; {
-    description = "GPipe implemented in Pytorch and optimized for CUDA rather than TPU";
-    homepage = "https://torchgpipe.readthedocs.io";
-    license = licenses.asl20;
-    maintainers = [ maintainers.bcdarwin ];
-  };
-}
diff --git a/pkgs/development/python-modules/torchinfo/default.nix b/pkgs/development/python-modules/torchinfo/default.nix
index 59b7e99c9dfca..a10dad4b10c0a 100644
--- a/pkgs/development/python-modules/torchinfo/default.nix
+++ b/pkgs/development/python-modules/torchinfo/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pythonOlder
-, torch
-, torchvision
-, pytestCheckHook
-, transformers
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pythonOlder,
+  torch,
+  torchvision,
+  pytestCheckHook,
+  transformers,
 }:
 
 buildPythonPackage rec {
@@ -24,12 +25,11 @@ buildPythonPackage rec {
   };
 
   patches = [
-    (fetchpatch {  # Add support for Python 3.11 and pytorch 2.1
+    (fetchpatch {
+      # Add support for Python 3.11 and pytorch 2.1
       url = "https://github.com/TylerYep/torchinfo/commit/c74784c71c84e62bcf56664653b7f28d72a2ee0d.patch";
       hash = "sha256-xSSqs0tuFpdMXUsoVv4sZLCeVnkK6pDDhX/Eobvn5mw=";
-      includes = [
-        "torchinfo/model_statistics.py"
-      ];
+      includes = [ "torchinfo/model_statistics.py" ];
     })
   ];
 
@@ -62,9 +62,7 @@ buildPythonPackage rec {
     "tests/torchinfo_xl_test.py"
   ];
 
-  pythonImportsCheck = [
-    "torchinfo"
-  ];
+  pythonImportsCheck = [ "torchinfo" ];
 
   meta = with lib; {
     description = "API to visualize pytorch models";
diff --git a/pkgs/development/python-modules/torchio/default.nix b/pkgs/development/python-modules/torchio/default.nix
index 3549664e15b9d..3fbfe404febc3 100644
--- a/pkgs/development/python-modules/torchio/default.nix
+++ b/pkgs/development/python-modules/torchio/default.nix
@@ -1,25 +1,26 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, deprecated
-, humanize
-, matplotlib
-, nibabel
-, numpy
-, parameterized
-, scipy
-, simpleitk
-, torch
-, tqdm
-, typer
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  deprecated,
+  humanize,
+  matplotlib,
+  nibabel,
+  numpy,
+  parameterized,
+  scipy,
+  simpleitk,
+  torch,
+  tqdm,
+  typer,
 }:
 
 buildPythonPackage rec {
   pname = "torchio";
-  version = "0.19.5";
+  version = "0.19.6";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -28,7 +29,7 @@ buildPythonPackage rec {
     owner = "fepegar";
     repo = "torchio";
     rev = "refs/tags/v${version}";
-    hash = "sha256-RqKJStUZhnSmsifn3WjYLfmRkkme+GOe6dp0E0MW9tE=";
+    hash = "sha256-FlsjDgthXDGVjj4L0Yw+8UzBROw9jiM4Z+qi67D5ygU=";
   };
 
   propagatedBuildInputs = [
@@ -41,16 +42,22 @@ buildPythonPackage rec {
     torch
     tqdm
     typer
-  ] ++ typer.passthru.optional-dependencies.all;
+  ];
 
-  nativeCheckInputs = [ pytestCheckHook matplotlib parameterized ];
-  disabledTests = [
-    # tries to download models:
-    "test_load_all"
-  ] ++ lib.optionals stdenv.isAarch64 [
-    # RuntimeError: DataLoader worker (pid(s) <...>) exited unexpectedly
-    "test_queue_multiprocessing"
+  nativeCheckInputs = [
+    pytestCheckHook
+    matplotlib
+    parameterized
   ];
+  disabledTests =
+    [
+      # tries to download models:
+      "test_load_all"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isAarch64 [
+      # RuntimeError: DataLoader worker (pid(s) <...>) exited unexpectedly
+      "test_queue_multiprocessing"
+    ];
   pythonImportsCheck = [
     "torchio"
     "torchio.data"
diff --git a/pkgs/development/python-modules/torchlibrosa/default.nix b/pkgs/development/python-modules/torchlibrosa/default.nix
index ca8f890c0e620..8587f6382b237 100644
--- a/pkgs/development/python-modules/torchlibrosa/default.nix
+++ b/pkgs/development/python-modules/torchlibrosa/default.nix
@@ -1,10 +1,10 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, librosa
-, numpy
-, torch
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  librosa,
+  numpy,
+  torch,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/torchmetrics/default.nix b/pkgs/development/python-modules/torchmetrics/default.nix
index e5c05c6dd4978..cf08a09e552ad 100644
--- a/pkgs/development/python-modules/torchmetrics/default.nix
+++ b/pkgs/development/python-modules/torchmetrics/default.nix
@@ -1,61 +1,65 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, numpy
-, lightning-utilities
-, cloudpickle
-, scikit-learn
-, scikit-image
-, packaging
-, psutil
-, py-deprecate
-, torch
-, pytestCheckHook
-, torchmetrics
-, pytorch-lightning
-, pytest-doctestplus
-, pytest-xdist
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # dependencies
+  numpy,
+  lightning-utilities,
+  packaging,
+  pretty-errors,
+
+  # buildInputs
+  torch,
+
+  # checks
+  cloudpickle,
+  psutil,
+  pytestCheckHook,
+  pytest-doctestplus,
+  pytest-xdist,
+  pytorch-lightning,
+  scikit-image,
+  scikit-learn,
+
+  # passthru
+  torchmetrics,
 }:
 
 let
   pname = "torchmetrics";
-  version = "1.3.2";
+  version = "1.4.2";
 in
 buildPythonPackage {
   inherit pname version;
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
-
   src = fetchFromGitHub {
     owner = "Lightning-AI";
     repo = "torchmetrics";
     rev = "refs/tags/v${version}";
-    hash = "sha256-0lverGF8HVlnwWmnCjScWoSfWPLZlMF2cHDG+uxNCCQ=";
+    hash = "sha256-YieIz99QFnuW3hTtNFgxhkNnSXGsTG2qqYhRCyvZo7Q=";
   };
 
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
     lightning-utilities
     packaging
-    py-deprecate
+    pretty-errors
   ];
 
   # Let the user bring their own instance
-  buildInputs = [
-    torch
-  ];
+  buildInputs = [ torch ];
 
   nativeCheckInputs = [
-    pytorch-lightning
-    scikit-learn
-    scikit-image
     cloudpickle
     psutil
     pytestCheckHook
     pytest-doctestplus
     pytest-xdist
+    pytorch-lightning
+    scikit-image
+    scikit-learn
   ];
 
   # A cyclic dependency in: integrations/test_lightning.py
@@ -83,17 +87,13 @@ buildPythonPackage {
     "src/torchmetrics"
   ];
 
-  pythonImportsCheck = [
-    "torchmetrics"
-  ];
+  pythonImportsCheck = [ "torchmetrics" ];
 
-  meta = with lib; {
+  meta = {
     description = "Machine learning metrics for distributed, scalable PyTorch applications (used in pytorch-lightning)";
     homepage = "https://lightning.ai/docs/torchmetrics/";
     changelog = "https://github.com/Lightning-AI/torchmetrics/releases/tag/v${version}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [
-      SomeoneSerge
-    ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ SomeoneSerge ];
   };
 }
diff --git a/pkgs/development/python-modules/torchrl/default.nix b/pkgs/development/python-modules/torchrl/default.nix
index 591e59302ea6a..3023380920c75 100644
--- a/pkgs/development/python-modules/torchrl/default.nix
+++ b/pkgs/development/python-modules/torchrl/default.nix
@@ -1,37 +1,56 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, ninja
-, setuptools
-, wheel
-, which
-, cloudpickle
-, numpy
-, torch
-, ale-py
-, gym
-, pygame
-, gymnasium
-, mujoco
-, moviepy
-, git
-, hydra-core
-, tensorboard
-, tqdm
-, wandb
-, packaging
-, tensordict
-, imageio
-, pytest-rerunfailures
-, pytestCheckHook
-, pyyaml
-, scipy
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  ninja,
+  setuptools,
+  which,
+
+  # dependencies
+  cloudpickle,
+  numpy,
+  packaging,
+  tensordict,
+  torch,
+
+  # optional-dependencies
+  ale-py,
+  gym,
+  pygame,
+  torchsnapshot,
+  gymnasium,
+  mujoco,
+  h5py,
+  huggingface-hub,
+  minari,
+  pandas,
+  pillow,
+  requests,
+  scikit-learn,
+  torchvision,
+  tqdm,
+  moviepy,
+  git,
+  hydra-core,
+  tensorboard,
+  wandb,
+
+  # checks
+  imageio,
+  pytest-rerunfailures,
+  pytestCheckHook,
+  pyyaml,
+  scipy,
+
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "torchrl";
-  version = "0.3.1";
+  version = "0.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -40,17 +59,16 @@ buildPythonPackage rec {
     owner = "pytorch";
     repo = "rl";
     rev = "refs/tags/v${version}";
-    hash = "sha256-lETW996IKPUGgZpe+cyzrXvVmDSwj5G4XFreFmGxReQ=";
+    hash = "sha256-uDpOdOuHTqKFKspHOpl84kD9adEKZjvO2GnYuL27H5c=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     ninja
     setuptools
-    wheel
     which
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cloudpickle
     numpy
     packaging
@@ -58,19 +76,29 @@ buildPythonPackage rec {
     torch
   ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     atari = [
       ale-py
       gym
       pygame
     ];
+    checkpointing = [ torchsnapshot ];
     gym-continuous = [
       gymnasium
       mujoco
     ];
-    rendering = [
-      moviepy
+    offline-data = [
+      h5py
+      huggingface-hub
+      minari
+      pandas
+      pillow
+      requests
+      scikit-learn
+      torchvision
+      tqdm
     ];
+    rendering = [ moviepy ];
     utils = [
       git
       hydra-core
@@ -85,9 +113,7 @@ buildPythonPackage rec {
     export D4RL_DATASET_DIR=$(mktemp -d)
   '';
 
-  pythonImportsCheck = [
-    "torchrl"
-  ];
+  pythonImportsCheck = [ "torchrl" ];
 
   # We have to delete the source because otherwise it is used instead of the installed package.
   preCheck = ''
@@ -96,17 +122,20 @@ buildPythonPackage rec {
     export XDG_RUNTIME_DIR=$(mktemp -d)
   '';
 
-  nativeCheckInputs = [
-    gymnasium
-    imageio
-    pytest-rerunfailures
-    pytestCheckHook
-    pyyaml
-    scipy
-  ]
-  ++ passthru.optional-dependencies.atari
-  ++ passthru.optional-dependencies.gym-continuous
-  ++ passthru.optional-dependencies.rendering;
+  nativeCheckInputs =
+    [
+      h5py
+      gymnasium
+      imageio
+      pytest-rerunfailures
+      pytestCheckHook
+      pyyaml
+      scipy
+      torchvision
+    ]
+    ++ optional-dependencies.atari
+    ++ optional-dependencies.gym-continuous
+    ++ optional-dependencies.rendering;
 
   disabledTests = [
     # mujoco.FatalError: an OpenGL platform library has not been loaded into this process, this most likely means that a valid OpenGL context has not been created before mjr_makeContext was called
@@ -129,13 +158,23 @@ buildPythonPackage rec {
     "test_trans_parallel_env_check"
     "test_trans_serial_env_check"
     "test_transform_env"
+
+    # undeterministic
+    "test_distributed_collector_updatepolicy"
+    "test_timeit"
+
+    # On a 24 threads system
+    # assert torch.get_num_threads() == max(1, init_threads - 3)
+    # AssertionError: assert 23 == 21
+    "test_auto_num_threads"
   ];
 
-  meta = with lib; {
-    description = "A modular, primitive-first, python-first PyTorch library for Reinforcement Learning";
+  meta = {
+    description = "Modular, primitive-first, python-first PyTorch library for Reinforcement Learning";
     homepage = "https://github.com/pytorch/rl";
     changelog = "https://github.com/pytorch/rl/releases/tag/v${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+    # ~3k tests fail with: RuntimeError: internal error
   };
 }
diff --git a/pkgs/development/python-modules/torchsde/default.nix b/pkgs/development/python-modules/torchsde/default.nix
index 66e23a594f91f..32ad7a3931f1e 100644
--- a/pkgs/development/python-modules/torchsde/default.nix
+++ b/pkgs/development/python-modules/torchsde/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, boltons
-, numpy
-, scipy
-, torch
-, trampoline
+  # dependencies
+  boltons,
+  numpy,
+  scipy,
+  torch,
+  trampoline,
 
-# tests
-, pytest7CheckHook
+  # tests
+  pytest7CheckHook,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
       --replace "scipy==1.5.*" "scipy"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     boltons
@@ -48,9 +47,7 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "torchsde" ];
 
-  nativeCheckInputs = [
-    pytest7CheckHook
-  ];
+  nativeCheckInputs = [ pytest7CheckHook ];
 
   disabledTests = [
     # RuntimeError: a view of a leaf Variable that requires grad is being used in an in-place operation.
diff --git a/pkgs/development/python-modules/torchsnapshot/default.nix b/pkgs/development/python-modules/torchsnapshot/default.nix
new file mode 100644
index 0000000000000..c28ce3f55e717
--- /dev/null
+++ b/pkgs/development/python-modules/torchsnapshot/default.nix
@@ -0,0 +1,71 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  aiofiles,
+  aiohttp,
+  importlib-metadata,
+  nest-asyncio,
+  psutil,
+  pyyaml,
+  torch,
+  typing-extensions,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonAtLeast,
+  stdenv,
+}:
+
+buildPythonPackage rec {
+  pname = "torchsnapshot";
+  version = "0.1.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "pytorch";
+    repo = "torchsnapshot";
+    rev = "refs/tags/${version}";
+    hash = "sha256-F8OaxLH8BL6MPNLFv1hBuVmeEdnEQ5w2Qny6by1wP6k=";
+  };
+
+  build-system = [
+    setuptools
+    wheel
+  ];
+
+  dependencies = [
+    aiofiles
+    aiohttp
+    importlib-metadata
+    nest-asyncio
+    psutil
+    pyyaml
+    torch
+    typing-extensions
+  ];
+
+  pythonImportsCheck = [ "torchsnapshot" ];
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    description = "Performant, memory-efficient checkpointing library for PyTorch applications, designed with large, complex distributed workloads in mind";
+    homepage = "https://github.com/pytorch/torchsnapshot/";
+    changelog = "https://github.com/pytorch/torchsnapshot/releases/tag/${version}";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ GaetanLepage ];
+    broken =
+      # https://github.com/pytorch/torchsnapshot/issues/175
+      pythonAtLeast "3.12"
+      # ModuleNotFoundError: No module named 'torch._C._distributed_c10d'; 'torch._C' is not a package
+      || stdenv.hostPlatform.isDarwin;
+  };
+}
diff --git a/pkgs/development/python-modules/torchsummary/default.nix b/pkgs/development/python-modules/torchsummary/default.nix
new file mode 100644
index 0000000000000..8805e8fa2117b
--- /dev/null
+++ b/pkgs/development/python-modules/torchsummary/default.nix
@@ -0,0 +1,34 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  torch,
+}:
+
+buildPythonPackage rec {
+  pname = "torchsummary";
+  version = "1.5.1";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-mBv2ieIuDPf5XHRgAvIKJK0mqmudhhE0oUvGzpIjBZA=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ torch ];
+
+  # no tests in pypi tarball
+  doCheck = false;
+
+  pythonImportsCheck = [ "torchsummary" ];
+
+  meta = {
+    description = "Model summary in PyTorch similar to `model.summary()` in Keras";
+    homepage = "https://github.com/sksq96/pytorch-summary";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tomasajt ];
+  };
+}
diff --git a/pkgs/development/python-modules/torchvision/bin.nix b/pkgs/development/python-modules/torchvision/bin.nix
index 70026bb363df8..ea03954c14d7a 100644
--- a/pkgs/development/python-modules/torchvision/bin.nix
+++ b/pkgs/development/python-modules/torchvision/bin.nix
@@ -1,23 +1,31 @@
-{ lib
-, stdenv
-, addOpenGLRunpath
-, autoPatchelfHook
-, buildPythonPackage
-, cudaPackages
-, fetchurl
-, pythonAtLeast
-, pythonOlder
-, pillow
-, python
-, torch-bin
+{
+  lib,
+  stdenv,
+  python,
+  buildPythonPackage,
+  fetchurl,
+  pythonOlder,
+  pythonAtLeast,
+
+  # buildInputs
+  cudaPackages,
+
+  # nativeBuildInputs
+  addDriverRunpath,
+  autoPatchelfHook,
+
+  # dependencies
+  pillow,
+  torch-bin,
 }:
 
 let
   pyVerNoDot = builtins.replaceStrings [ "." ] [ "" ] python.pythonVersion;
   srcs = import ./binary-hashes.nix version;
   unsupported = throw "Unsupported system";
-  version = "0.17.2";
-in buildPythonPackage {
+  version = "0.19.1";
+in
+buildPythonPackage {
   inherit version;
 
   pname = "torchvision";
@@ -26,21 +34,23 @@ in buildPythonPackage {
 
   src = fetchurl srcs."${stdenv.system}-${pyVerNoDot}" or unsupported;
 
-  disabled = (pythonOlder "3.8") || (pythonAtLeast "3.12");
+  disabled = (pythonOlder "3.8") || (pythonAtLeast "3.13");
 
   # Note that we don't rely on config.cudaSupport here, because the Linux wheels all come built with CUDA support.
-  buildInputs = with cudaPackages; lib.optionals stdenv.isLinux [
-    # $out/${sitePackages}/torchvision/_C.so wants libcudart.so.11.0 but torchvision.libs only ships
-    # libcudart.$hash.so.11.0
-    cuda_cudart
-  ];
+  buildInputs =
+    with cudaPackages;
+    lib.optionals stdenv.hostPlatform.isLinux [
+      # $out/${sitePackages}/torchvision/_C.so wants libcudart.so.11.0 but torchvision.libs only ships
+      # libcudart.$hash.so.11.0
+      cuda_cudart
+    ];
 
-  nativeBuildInputs = lib.optionals stdenv.isLinux [
+  nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [
+    addDriverRunpath
     autoPatchelfHook
-    addOpenGLRunpath
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pillow
     torch-bin
   ];
@@ -50,20 +60,24 @@ in buildPythonPackage {
 
   pythonImportsCheck = [ "torchvision" ];
 
-  preInstall = lib.optionalString stdenv.isLinux ''
+  preInstall = lib.optionalString stdenv.hostPlatform.isLinux ''
     addAutoPatchelfSearchPath "${torch-bin}/${python.sitePackages}/torch"
   '';
 
-  meta = with lib; {
+  meta = {
     description = "PyTorch vision library";
     homepage = "https://pytorch.org/";
     changelog = "https://github.com/pytorch/vision/releases/tag/v${version}";
     # Includes CUDA and Intel MKL, but redistributions of the binary are not limited.
     # https://docs.nvidia.com/cuda/eula/index.html
     # https://www.intel.com/content/www/us/en/developer/articles/license/onemkl-license-faq.html
-    license = licenses.bsd3;
-    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
-    platforms = [ "aarch64-darwin" "x86_64-darwin" "x86_64-linux" ];
-    maintainers = with maintainers; [ junjihashimoto ];
+    license = lib.licenses.bsd3;
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
+    platforms = [
+      "aarch64-darwin"
+      "x86_64-linux"
+      "aarch64-linux"
+    ];
+    maintainers = with lib.maintainers; [ junjihashimoto ];
   };
 }
diff --git a/pkgs/development/python-modules/torchvision/binary-hashes.nix b/pkgs/development/python-modules/torchvision/binary-hashes.nix
index 3a5654b18ca7e..43ab9f1790ba6 100644
--- a/pkgs/development/python-modules/torchvision/binary-hashes.nix
+++ b/pkgs/development/python-modules/torchvision/binary-hashes.nix
@@ -5,67 +5,83 @@
 
 # To add a new version, run "prefetch.sh 'new-version'" to paste the generated file as follows.
 
-version : builtins.getAttr version {
-  "0.17.2" = {
+version:
+builtins.getAttr version {
+  "0.19.1" = {
     x86_64-linux-38 = {
-      name = "torchvision-0.17.2-cp38-cp38-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torchvision-0.17.2%2Bcu121-cp38-cp38-linux_x86_64.whl";
-      hash = "sha256-3450y7tN4KYPEc18KNggEWAnzTlJiT+XxVtvEjJr168=";
+      name = "torchvision-0.19.1-cp38-cp38-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchvision-0.19.1%2Bcu121-cp38-cp38-linux_x86_64.whl";
+      hash = "sha256-MFL5ci3Dn9fwJrRKb73vk6so95UgBwEs6E0xPWeWQBE=";
     };
     x86_64-linux-39 = {
-      name = "torchvision-0.17.2-cp39-cp39-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torchvision-0.17.2%2Bcu121-cp39-cp39-linux_x86_64.whl";
-      hash = "sha256-839ZLjEovz2ZloraWhKPEY+a7R2rYJ4nKscjEUb8aEM=";
+      name = "torchvision-0.19.1-cp39-cp39-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchvision-0.19.1%2Bcu121-cp39-cp39-linux_x86_64.whl";
+      hash = "sha256-FFMN7gzEx8BgJPC9zJV/d94NK5DptyIZ3NYh+ilSXQA=";
     };
     x86_64-linux-310 = {
-      name = "torchvision-0.17.2-cp310-cp310-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torchvision-0.17.2%2Bcu121-cp310-cp310-linux_x86_64.whl";
-      hash = "sha256-wPMlY1+INPpV5pq2EHX7K7y7RTlamFu6HbN4sVYnEEs=";
+      name = "torchvision-0.19.1-cp310-cp310-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchvision-0.19.1%2Bcu121-cp310-cp310-linux_x86_64.whl";
+      hash = "sha256-uMxL84G3VSKZW2AeB6G0M7X9kl3D40p/ps0i9EnWU3k=";
     };
     x86_64-linux-311 = {
-      name = "torchvision-0.17.2-cp311-cp311-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torchvision-0.17.2%2Bcu121-cp311-cp311-linux_x86_64.whl";
-      hash = "sha256-BZ+GocjSsnayZshKj1qSzIQm1DwqLCSNxzwUCrOoIvM=";
+      name = "torchvision-0.19.1-cp311-cp311-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchvision-0.19.1%2Bcu121-cp311-cp311-linux_x86_64.whl";
+      hash = "sha256-U2QXNAaUspzFTDCFB9CYsAy9zB/oaAcqNLVTvtc9nTA=";
     };
-    x86_64-darwin-38 = {
-      name = "torchvision-0.17.2-cp38-cp38-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.2-cp38-cp38-macosx_10_13_x86_64.whl";
-      hash = "sha256-uDqsjXj0iYEUbVghaNdbbJR8+wp2k/duIZ8ZJvbllaM=";
-    };
-    x86_64-darwin-39 = {
-      name = "torchvision-0.17.2-cp39-cp39-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.2-cp39-cp39-macosx_10_13_x86_64.whl";
-      hash = "sha256-SGi7+lV1jIEH5poOfdXne4kFYDXNOLdnrVuYzbccDw0=";
-    };
-    x86_64-darwin-310 = {
-      name = "torchvision-0.17.2-cp310-cp310-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.2-cp310-cp310-macosx_10_13_x86_64.whl";
-      hash = "sha256-HykQ/jwhrWh1snINRvrYNbLkszbpVT0xyjZNJMkLHU8=";
-    };
-    x86_64-darwin-311 = {
-      name = "torchvision-0.17.2-cp311-cp311-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.2-cp311-cp311-macosx_10_13_x86_64.whl";
-      hash = "sha256-m4PlXufQoXBPUrnArIc4jnptHZimveews1+atU172lQ=";
+    x86_64-linux-312 = {
+      name = "torchvision-0.19.1-cp312-cp312-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchvision-0.19.1%2Bcu121-cp312-cp312-linux_x86_64.whl";
+      hash = "sha256-+wzQYi40nfhK1zutjrvqaxx08DPa3YTZqAz0opGSfq4=";
     };
     aarch64-darwin-38 = {
-      name = "torchvision-0.17.2-cp38-cp38-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.2-cp38-cp38-macosx_11_0_arm64.whl";
-      hash = "sha256-Hs5AVX4SLXmXWGCgBap+Kp4ubDUKA+eKAOwUUAgzEv0=";
+      name = "torchvision-0.19.1-cp38-cp38-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.19.1-cp38-cp38-macosx_11_0_arm64.whl";
+      hash = "sha256-TE5PWyTqawh7Au1JKrHiG7ozUsRXfi3vFCSM/GBzIzg=";
     };
     aarch64-darwin-39 = {
-      name = "torchvision-0.17.2-cp39-cp39-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.2-cp39-cp39-macosx_11_0_arm64.whl";
-      hash = "sha256-79bQ3QZo4V0Bos/63HQGhDOzLLz1aS4MSqFfxcslDOc=";
+      name = "torchvision-0.19.1-cp39-cp39-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.19.1-cp39-cp39-macosx_11_0_arm64.whl";
+      hash = "sha256-cx9DTZFYZ2niVbXXDtGkRX4KE5SpX0qs8OHn4h+AwJg=";
     };
     aarch64-darwin-310 = {
-      name = "torchvision-0.17.2-cp310-cp310-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.2-cp310-cp310-macosx_11_0_arm64.whl";
-      hash = "sha256-7MHFA/qKVPurd34Gp8IoAyuKt47+vzWyi8jyL1RPUfE=";
+      name = "torchvision-0.19.1-cp310-cp310-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.19.1-cp310-cp310-macosx_11_0_arm64.whl";
+      hash = "sha256-VOhRMJnm9YY1bHD4CdNPORr3GtGC/gccwyiiivLEBgg=";
     };
     aarch64-darwin-311 = {
-      name = "torchvision-0.17.2-cp311-cp311-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.2-cp311-cp311-macosx_11_0_arm64.whl";
-      hash = "sha256-4DEAShvEMsmAp71kL2wYmj78MW5CP8MLVWmDcWak4o0=";
+      name = "torchvision-0.19.1-cp311-cp311-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.19.1-cp311-cp311-macosx_11_0_arm64.whl";
+      hash = "sha256-QFFCgrSJbWJ2W44m1wkcMuF8NYF9AOxL4jYuo7o9F4c=";
+    };
+    aarch64-darwin-312 = {
+      name = "torchvision-0.19.1-cp312-cp312-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.19.1-cp312-cp312-macosx_11_0_arm64.whl";
+      hash = "sha256-J+zid/8PbNx/7QYnJ5xjLcsuWBh9p3HsoksPvPP4WQ0=";
+    };
+    aarch64-linux-38 = {
+      name = "torchvision-0.19.1-cp38-cp38-linux_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.19.1-cp38-cp38-linux_aarch64.whl";
+      hash = "sha256-TRC8kIPE1frdft17cpcAp75I2rT2InjfO8c/pI5IoVU=";
+    };
+    aarch64-linux-39 = {
+      name = "torchvision-0.19.1-cp39-cp39-linux_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.19.1-cp39-cp39-linux_aarch64.whl";
+      hash = "sha256-4ygwm4ZwouiJsv52ocJ0SgmcEcmE2pqCI1e9nevWmaU=";
+    };
+    aarch64-linux-310 = {
+      name = "torchvision-0.19.1-cp310-cp310-linux_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.19.1-cp310-cp310-linux_aarch64.whl";
+      hash = "sha256-ewYxFhZL5S/G3rR2Lef4yQv6OmX41crxf44tWq3HWgQ=";
+    };
+    aarch64-linux-311 = {
+      name = "torchvision-0.19.1-cp311-cp311-linux_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.19.1-cp311-cp311-linux_aarch64.whl";
+      hash = "sha256-1xpqb+OlKByjSH1MVq1KrSD/cPgvHXx5vLbnsMKvAMg=";
+    };
+    aarch64-linux-312 = {
+      name = "torchvision-0.19.1-cp312-cp312-linux_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.19.1-cp312-cp312-linux_aarch64.whl";
+      hash = "sha256-wHv0PCoUXXkuzZ0FA9bHNXcUfs5QjUVgDYqsd+TN/Pk=";
     };
   };
 }
diff --git a/pkgs/development/python-modules/torchvision/default.nix b/pkgs/development/python-modules/torchvision/default.nix
index 496a8c08710b0..e00846c824a9f 100644
--- a/pkgs/development/python-modules/torchvision/default.nix
+++ b/pkgs/development/python-modules/torchvision/default.nix
@@ -1,15 +1,24 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-, libjpeg_turbo
-, libpng
-, ninja
-, numpy
-, pillow
-, pytest
-, scipy
-, torch
-, which
+{
+  lib,
+  torch,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # nativeBuildInputs
+  libpng,
+  ninja,
+  which,
+
+  # buildInputs
+  libjpeg_turbo,
+
+  # dependencies
+  numpy,
+  pillow,
+  scipy,
+
+  # tests
+  pytest,
 }:
 
 let
@@ -17,7 +26,7 @@ let
   inherit (cudaPackages) backendStdenv;
 
   pname = "torchvision";
-  version = "0.17.2";
+  version = "0.19.1";
 in
 buildPythonPackage {
   inherit pname version;
@@ -26,33 +35,41 @@ buildPythonPackage {
     owner = "pytorch";
     repo = "vision";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Y7TkdbdrdiXQO2pBkUePCLw1EYQjsAqkV2OTMzxbU78=";
+    hash = "sha256-UMBFR/Vw13A+bBfr0p3rRwpCRVMq+ihdlG3C/iuOC30=";
   };
 
   nativeBuildInputs = [
     libpng
     ninja
     which
-  ] ++ lib.optionals cudaSupport [
-    cudaPackages.cuda_nvcc
-  ];
+  ] ++ lib.optionals cudaSupport [ cudaPackages.cuda_nvcc ];
 
-  buildInputs = [ libjpeg_turbo libpng torch.cxxdev ];
+  buildInputs = [
+    libjpeg_turbo
+    libpng
+    torch.cxxdev
+  ];
 
-  propagatedBuildInputs = [ numpy pillow torch scipy ];
+  dependencies = [
+    numpy
+    pillow
+    torch
+    scipy
+  ];
 
-  preConfigure = ''
-    export TORCHVISION_INCLUDE="${libjpeg_turbo.dev}/include/"
-    export TORCHVISION_LIBRARY="${libjpeg_turbo}/lib/"
-  ''
-  # NOTE: We essentially override the compilers provided by stdenv because we don't have a hook
-  #   for cudaPackages to swap in compilers supported by NVCC.
-  + lib.optionalString cudaSupport ''
-    export CC=${backendStdenv.cc}/bin/cc
-    export CXX=${backendStdenv.cc}/bin/c++
-    export TORCH_CUDA_ARCH_LIST="${lib.concatStringsSep ";" cudaCapabilities}"
-    export FORCE_CUDA=1
-  '';
+  preConfigure =
+    ''
+      export TORCHVISION_INCLUDE="${libjpeg_turbo.dev}/include/"
+      export TORCHVISION_LIBRARY="${libjpeg_turbo}/lib/"
+    ''
+    # NOTE: We essentially override the compilers provided by stdenv because we don't have a hook
+    #   for cudaPackages to swap in compilers supported by NVCC.
+    + lib.optionalString cudaSupport ''
+      export CC=${backendStdenv.cc}/bin/cc
+      export CXX=${backendStdenv.cc}/bin/c++
+      export TORCH_CUDA_ARCH_LIST="${lib.concatStringsSep ";" cudaCapabilities}"
+      export FORCE_CUDA=1
+    '';
 
   # tries to download many datasets for tests
   doCheck = false;
@@ -64,11 +81,12 @@ buildPythonPackage {
 
   nativeCheckInputs = [ pytest ];
 
-  meta = with lib; {
+  meta = {
     description = "PyTorch vision library";
     homepage = "https://pytorch.org/";
-    license = licenses.bsd3;
-    platforms = with platforms; linux ++ lib.optionals (!cudaSupport) darwin;
-    maintainers = with maintainers; [ ericsagnes ];
+    changelog = "https://github.com/pytorch/vision/releases/tag/v${version}";
+    license = lib.licenses.bsd3;
+    platforms = with lib.platforms; linux ++ lib.optionals (!cudaSupport) darwin;
+    maintainers = with lib.maintainers; [ ericsagnes ];
   };
 }
diff --git a/pkgs/development/python-modules/torchvision/prefetch.sh b/pkgs/development/python-modules/torchvision/prefetch.sh
index e80718a50530e..47ccbd935c8a0 100755
--- a/pkgs/development/python-modules/torchvision/prefetch.sh
+++ b/pkgs/development/python-modules/torchvision/prefetch.sh
@@ -14,14 +14,17 @@ url_and_key_list=(
   "x86_64-linux-39 $linux_bucket/torchvision-${version}%2B${linux_cuda_version}-cp39-cp39-linux_x86_64.whl torchvision-${version}-cp39-cp39-linux_x86_64.whl"
   "x86_64-linux-310 $linux_bucket/torchvision-${version}%2B${linux_cuda_version}-cp310-cp310-linux_x86_64.whl torchvision-${version}-cp310-cp310-linux_x86_64.whl"
   "x86_64-linux-311 $linux_bucket/torchvision-${version}%2B${linux_cuda_version}-cp311-cp311-linux_x86_64.whl torchvision-${version}-cp311-cp311-linux_x86_64.whl"
-  "x86_64-darwin-38 $darwin_bucket/torchvision-${version}-cp38-cp38-macosx_10_13_x86_64.whl torchvision-${version}-cp38-cp38-macosx_10_9_x86_64.whl"
-  "x86_64-darwin-39 $darwin_bucket/torchvision-${version}-cp39-cp39-macosx_10_13_x86_64.whl torchvision-${version}-cp39-cp39-macosx_10_9_x86_64.whl"
-  "x86_64-darwin-310 $darwin_bucket/torchvision-${version}-cp310-cp310-macosx_10_13_x86_64.whl torchvision-${version}-cp310-cp310-macosx_10_9_x86_64.whl"
-  "x86_64-darwin-311 $darwin_bucket/torchvision-${version}-cp311-cp311-macosx_10_13_x86_64.whl torchvision-${version}-cp311-cp311-macosx_10_9_x86_64.whl"
+  "x86_64-linux-312 $linux_bucket/torchvision-${version}%2B${linux_cuda_version}-cp312-cp312-linux_x86_64.whl torchvision-${version}-cp312-cp312-linux_x86_64.whl"
   "aarch64-darwin-38 $darwin_bucket/torchvision-${version}-cp38-cp38-macosx_11_0_arm64.whl torchvision-${version}-cp38-cp38-macosx_11_0_arm64.whl"
   "aarch64-darwin-39 $darwin_bucket/torchvision-${version}-cp39-cp39-macosx_11_0_arm64.whl torchvision-${version}-cp39-cp39-macosx_11_0_arm64.whl"
   "aarch64-darwin-310 $darwin_bucket/torchvision-${version}-cp310-cp310-macosx_11_0_arm64.whl torchvision-${version}-cp310-cp310-macosx_11_0_arm64.whl"
   "aarch64-darwin-311 $darwin_bucket/torchvision-${version}-cp311-cp311-macosx_11_0_arm64.whl torchvision-${version}-cp311-cp311-macosx_11_0_arm64.whl"
+  "aarch64-darwin-312 $darwin_bucket/torchvision-${version}-cp312-cp312-macosx_11_0_arm64.whl torchvision-${version}-cp312-cp312-macosx_11_0_arm64.whl"
+  "aarch64-linux-38 $darwin_bucket/torchvision-${version}-cp38-cp38-linux_aarch64.whl torchvision-${version}-cp38-cp38-linux_aarch64.whl"
+  "aarch64-linux-39 $darwin_bucket/torchvision-${version}-cp39-cp39-linux_aarch64.whl torchvision-${version}-cp39-cp39-linux_aarch64.whl"
+  "aarch64-linux-310 $darwin_bucket/torchvision-${version}-cp310-cp310-linux_aarch64.whl torchvision-${version}-cp310-cp310-linux_aarch64.whl"
+  "aarch64-linux-311 $darwin_bucket/torchvision-${version}-cp311-cp311-linux_aarch64.whl torchvision-${version}-cp311-cp311-linux_aarch64.whl"
+  "aarch64-linux-312 $darwin_bucket/torchvision-${version}-cp312-cp312-linux_aarch64.whl torchvision-${version}-cp312-cp312-linux_aarch64.whl"
 )
 
 hashfile="binary-hashes-$version.nix"
diff --git a/pkgs/development/python-modules/tornado/4.nix b/pkgs/development/python-modules/tornado/4.nix
index 7476a22792eef..0381e25d953e8 100644
--- a/pkgs/development/python-modules/tornado/4.nix
+++ b/pkgs/development/python-modules/tornado/4.nix
@@ -1,10 +1,11 @@
-{ lib
-, unittestCheckHook
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, isPy27
-, pythonAtLeast
+{
+  lib,
+  unittestCheckHook,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  isPy27,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
@@ -34,7 +35,7 @@ buildPythonPackage rec {
   __darwinAllowLocalNetworking = true;
 
   meta = {
-    description = "A web framework and asynchronous networking library";
+    description = "Web framework and asynchronous networking library";
     homepage = "https://www.tornadoweb.org/";
     license = lib.licenses.asl20;
   };
diff --git a/pkgs/development/python-modules/tornado/5.nix b/pkgs/development/python-modules/tornado/5.nix
index 8ba3a8c073ba2..a1b0d8979e208 100644
--- a/pkgs/development/python-modules/tornado/5.nix
+++ b/pkgs/development/python-modules/tornado/5.nix
@@ -1,10 +1,11 @@
-{ lib
-, unittestCheckHook
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, isPy27
-, pythonAtLeast
+{
+  lib,
+  unittestCheckHook,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  isPy27,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
@@ -34,7 +35,7 @@ buildPythonPackage rec {
   __darwinAllowLocalNetworking = true;
 
   meta = {
-    description = "A web framework and asynchronous networking library";
+    description = "Web framework and asynchronous networking library";
     homepage = "https://www.tornadoweb.org/";
     license = lib.licenses.asl20;
   };
diff --git a/pkgs/development/python-modules/tornado/default.nix b/pkgs/development/python-modules/tornado/default.nix
index 75187d12d29f3..2a5c06f5ab38e 100644
--- a/pkgs/development/python-modules/tornado/default.nix
+++ b/pkgs/development/python-modules/tornado/default.nix
@@ -1,37 +1,38 @@
-{ lib
-, python
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
 
-# for passthru.tests
-, distributed
-, jupyter-server
-, jupyterlab
-, matplotlib
-, mitmproxy
-, pytest-tornado
-, pytest-tornasync
-, pyzmq
-, sockjs-tornado
-, urllib3
+  # for passthru.tests
+  distributed,
+  jupyter-server,
+  jupyterlab,
+  matplotlib,
+  mitmproxy,
+  pytest-tornado,
+  pytest-tornasync,
+  pyzmq,
+  sockjs-tornado,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "tornado";
-  version = "6.3.3";
-  format = "setuptools";
+  version = "6.4.1";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "tornadoweb";
     repo = "tornado";
     rev = "v${version}";
-    hash = "sha256-l9Ce/c2wDSmsySr9yXu5Fl/+63QkQay46aDSUTJmetA=";
+    hash = "sha256-vWiTLKL5gzrf3J6T3u8I1HHg5Ww0sf5ybSbZX6G3UXM=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTestPaths = [
     # additional tests that have extra dependencies, run slowly, or produce more output than a simple pass/fail
@@ -62,13 +63,14 @@ buildPythonPackage rec {
       pytest-tornasync
       pyzmq
       sockjs-tornado
-      urllib3;
+      urllib3
+      ;
   };
 
   meta = with lib; {
-    description = "A web framework and asynchronous networking library";
+    description = "Web framework and asynchronous networking library";
     homepage = "https://www.tornadoweb.org/";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/torpy/default.nix b/pkgs/development/python-modules/torpy/default.nix
index cfaaef421926f..d6f257dfa9ad3 100644
--- a/pkgs/development/python-modules/torpy/default.nix
+++ b/pkgs/development/python-modules/torpy/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, cryptography
-, pytestCheckHook
-, requests
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  cryptography,
+  pytestCheckHook,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -24,20 +25,16 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     cryptography
     requests
-   ];
-
-  nativeCheckInputs = [
-    pytestCheckHook
   ];
 
+  nativeCheckInputs = [ pytestCheckHook ];
+
   disabledTestPaths = [
     # requires network
     "tests/integration"
   ];
 
-  pythonImportsCheck = [
-    "cryptography"
-  ];
+  pythonImportsCheck = [ "cryptography" ];
 
   meta = with lib; {
     description = "Pure python Tor client";
diff --git a/pkgs/development/python-modules/torrent-parser/default.nix b/pkgs/development/python-modules/torrent-parser/default.nix
index bd46ea57e0fba..ae1c3a6016248 100644
--- a/pkgs/development/python-modules/torrent-parser/default.nix
+++ b/pkgs/development/python-modules/torrent-parser/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -11,30 +12,24 @@ buildPythonPackage rec {
   pyproject = true;
 
   src = fetchFromGitHub {
-    owner  = "7sDream";
-    repo   = "torrent_parser";
-    rev    = "v${version}";
+    owner = "7sDream";
+    repo = "torrent_parser";
+    rev = "v${version}";
     hash = "sha256-zM738r3o9dGZYoWLN7fM4E06m6YPcAODEkgDS6wU/Sc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "torrent_parser"
-  ];
+  pythonImportsCheck = [ "torrent_parser" ];
 
   meta = {
-    description = "A .torrent file parser and creator for both Python 2 and 3";
+    description = ".torrent file parser and creator for both Python 2 and 3";
     mainProgram = "pytp";
-    homepage    = "https://github.com/7sDream/torrent_parser";
+    homepage = "https://github.com/7sDream/torrent_parser";
     changelog = "https://github.com/7sDream/torrent_parser/blob/${src.rev}/CHANGELOG.md";
-    license     = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ ];
+    license = lib.licenses.mit;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/torrequest/default.nix b/pkgs/development/python-modules/torrequest/default.nix
index 90a0ab747a88a..18fc52c24aa66 100644
--- a/pkgs/development/python-modules/torrequest/default.nix
+++ b/pkgs/development/python-modules/torrequest/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi, requests, pysocks, stem }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  pysocks,
+  stem,
+}:
 
 buildPythonPackage rec {
   pname = "torrequest";
@@ -11,15 +18,15 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [
-    pysocks requests stem
+    pysocks
+    requests
+    stem
   ];
 
   # This package does not contain any tests.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "torrequest"
-  ];
+  pythonImportsCheck = [ "torrequest" ];
 
   meta = with lib; {
     homepage = "https://github.com/erdiaker/torrequest";
diff --git a/pkgs/development/python-modules/total-connect-client/default.nix b/pkgs/development/python-modules/total-connect-client/default.nix
index e7b85cf199b60..6770e65194cc2 100644
--- a/pkgs/development/python-modules/total-connect-client/default.nix
+++ b/pkgs/development/python-modules/total-connect-client/default.nix
@@ -1,41 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, zeep
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  zeep,
 }:
 
 buildPythonPackage rec {
   pname = "total-connect-client";
-  version = "2024.4";
+  version = "2024.5";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "craigjmidwinter";
     repo = "total-connect-client";
     rev = "refs/tags/${version}";
-    hash = "sha256-LuPyhidbAzt/AU5WuXyxggGxjm9yArHsbn6iAaccMEc=";
+    hash = "sha256-NGiI4gn59U7NiRYtB6UydxOu+lVtmbl8qF3nbAjiYwk=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    zeep
-  ];
+  dependencies = [ zeep ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "total_connect_client"
-  ];
+  pythonImportsCheck = [ "total_connect_client" ];
 
   meta = with lib; {
     description = "Interact with Total Connect 2 alarm systems";
diff --git a/pkgs/development/python-modules/towncrier/default.nix b/pkgs/development/python-modules/towncrier/default.nix
index 507160291b568..580d82133f2d4 100644
--- a/pkgs/development/python-modules/towncrier/default.nix
+++ b/pkgs/development/python-modules/towncrier/default.nix
@@ -1,49 +1,42 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchPypi
-, git # shells out to git
-, hatchling
-, importlib-resources
-, incremental
-, jinja2
-, mock
-, pytestCheckHook
-, pythonOlder
-, tomli
-, twisted
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchPypi,
+  git, # shells out to git
+  hatchling,
+  importlib-resources,
+  incremental,
+  jinja2,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  tomli,
+  twisted,
 }:
 
 buildPythonPackage rec {
   pname = "towncrier";
-  version = "23.11.0";
+  version = "24.8.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-E5N8JH4/iuIKxE2JXPX5amCtRs/cwWcXWVMNeDfZ7l0=";
+    hash = "sha256-ATQj7n7tECsvOTwofSLZX2bxo+oQpLqoLSmAAafxivM=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace "hatchling ~= 1.17.1" "hatchling"
-  '';
-
-  nativeBuildInputs = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
-    click
-    incremental
-    jinja2
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-resources
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  dependencies =
+    [
+      click
+      incremental
+      jinja2
+    ]
+    ++ lib.optionals (pythonOlder "3.10") [ importlib-resources ]
+    ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   preCheck = ''
     export PATH=$out/bin:$PATH
@@ -56,16 +49,14 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "towncrier"
-  ];
+  pythonImportsCheck = [ "towncrier" ];
 
   meta = with lib; {
     description = "Utility to produce useful, summarised news files";
-    mainProgram = "towncrier";
     homepage = "https://github.com/twisted/towncrier/";
     changelog = "https://github.com/twisted/towncrier/blob/${version}/NEWS.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
+    mainProgram = "towncrier";
   };
 }
diff --git a/pkgs/development/python-modules/tox/default.nix b/pkgs/development/python-modules/tox/default.nix
index b534a4baed876..4c358cce9012b 100644
--- a/pkgs/development/python-modules/tox/default.nix
+++ b/pkgs/development/python-modules/tox/default.nix
@@ -1,37 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, packaging
-, pluggy
-, py
-, six
-, virtualenv
-, setuptools-scm
-, toml
-, tomli
-, filelock
-, hatchling
-, hatch-vcs
-, platformdirs
-, pyproject-api
-, colorama
-, chardet
-, cachetools
-, testers
-, tox
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  packaging,
+  pluggy,
+  py,
+  six,
+  virtualenv,
+  toml,
+  tomli,
+  filelock,
+  hatchling,
+  hatch-vcs,
+  platformdirs,
+  pyproject-api,
+  colorama,
+  chardet,
+  cachetools,
+  testers,
+  tox,
 }:
 
 buildPythonPackage rec {
   pname = "tox";
-  version = "4.15.0";
+  version = "4.15.1";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "tox-dev";
     repo = "tox";
     rev = "refs/tags/${version}";
-    hash = "sha256-aKk3a0RAcLyrHK6I3Q7rcBdZVJGNBXsBqA8N7Kpdrms=";
+    hash = "sha256-BLOxyvcC3ngQDVSMaw/NfLVbFkIHbTmhUOOVBqlcK/Q=";
   };
 
   postPatch = ''
@@ -57,9 +57,7 @@ buildPythonPackage rec {
     six
     toml
     virtualenv
-  ]  ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   doCheck = false; # infinite recursion via devpi-client
 
@@ -69,10 +67,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     changelog = "https://github.com/tox-dev/tox/releases/tag/${version}";
-    description = "A generic virtualenv management and test command line tool";
+    description = "Generic virtualenv management and test command line tool";
     mainProgram = "tox";
     homepage = "https://github.com/tox-dev/tox";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/tplink-omada-client/default.nix b/pkgs/development/python-modules/tplink-omada-client/default.nix
index cea4b17679cec..60cf57c14f294 100644
--- a/pkgs/development/python-modules/tplink-omada-client/default.nix
+++ b/pkgs/development/python-modules/tplink-omada-client/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, aiohttp
-, awesomeversion
-, buildPythonPackage
-, fetchPypi
-, hatchling
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  awesomeversion,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "tplink-omada-client";
-  version = "1.4.0";
+  version = "1.4.2";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -18,12 +18,10 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "tplink_omada_client";
     inherit version;
-    hash = "sha256-P7kb8gzPjRwl6KpKbh/k7QqjGU6m+HVBbMCuoabG+5M=";
+    hash = "sha256-Dt1F7mCuRrzEk3NDVfxScSLrK0omHQFMWhYrrwc+Pq0=";
   };
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   dependencies = [
     aiohttp
@@ -33,9 +31,7 @@ buildPythonPackage rec {
   # Module have no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "tplink_omada_client"
-  ];
+  pythonImportsCheck = [ "tplink_omada_client" ];
 
   meta = with lib; {
     description = "Library for the TP-Link Omada SDN Controller API";
diff --git a/pkgs/development/python-modules/tpm2-pytss/default.nix b/pkgs/development/python-modules/tpm2-pytss/default.nix
index 7b5fd56b0a109..44e1b68a257c2 100644
--- a/pkgs/development/python-modules/tpm2-pytss/default.nix
+++ b/pkgs/development/python-modules/tpm2-pytss/default.nix
@@ -1,22 +1,21 @@
-{ lib
-, stdenv
-, substituteAll
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, asn1crypto
-, cffi
-, cryptography
-, pkgconfig # see nativeBuildInputs
-, pkg-config # see nativeBuildInputs
-, pycparser
-, pytestCheckHook
-, python
-, pyyaml
-, setuptools-scm
-, tpm2-tss
-, tpm2-tools
-, swtpm
+{
+  lib,
+  stdenv,
+  substituteAll,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  asn1crypto,
+  cffi,
+  cryptography,
+  pkgconfig, # see nativeBuildInputs
+  pkg-config, # see nativeBuildInputs
+  pytestCheckHook,
+  pyyaml,
+  setuptools-scm,
+  tpm2-tss,
+  tpm2-tools,
+  swtpm,
 }:
 
 let
@@ -34,22 +33,27 @@ buildPythonPackage rec {
     hash = "sha256-uPFUc0IvN39ZxyF9zRR5FlzOYt+jOTTsl2oni68unv4=";
   };
 
-  patches = [
-    # Fix hardcoded `fapi-config.json` configuration path
-    ./fapi-config.patch
-  ] ++ lib.optionals isCross [
-    # pytss will regenerate files from headers of tpm2-tss.
-    # Those headers are fed through a compiler via pycparser. pycparser expects `cpp`
-    # to be in the path.
-    # This is put in the path via stdenv when not cross-compiling, but this is absent
-    # when cross-compiling is turned on.
-    # This patch changes the call to pycparser.preprocess_file to provide the name
-    # of the cross-compiling cpp
-    (substituteAll {
-      src = ./cross.patch;
-      crossPrefix = stdenv.hostPlatform.config;
-    })
-  ];
+  patches =
+    [
+      # Fix hardcoded `fapi-config.json` configuration path
+      ./fapi-config.patch
+      # Backport for https://github.com/tpm2-software/tpm2-pytss/pull/576
+      # This is likely to be dropped with the next major release (>= 2.3)
+      ./pr576-backport.patch
+    ]
+    ++ lib.optionals isCross [
+      # pytss will regenerate files from headers of tpm2-tss.
+      # Those headers are fed through a compiler via pycparser. pycparser expects `cpp`
+      # to be in the path.
+      # This is put in the path via stdenv when not cross-compiling, but this is absent
+      # when cross-compiling is turned on.
+      # This patch changes the call to pycparser.preprocess_file to provide the name
+      # of the cross-compiling cpp
+      (substituteAll {
+        src = ./cross.patch;
+        crossPrefix = stdenv.hostPlatform.config;
+      })
+    ];
 
   postPatch = ''
     sed -i "s#@TPM2_TSS@#${tpm2-tss.out}#" src/tpm2_pytss/FAPI.py
@@ -59,9 +63,7 @@ buildPythonPackage rec {
   # due to pycparsing handling it poorly.
   # See https://github.com/NixOS/nixpkgs/issues/252023
   # for more details.
-  hardeningDisable = [
-    "fortify"
-  ];
+  hardeningDisable = [ "fortify" ];
 
   nativeBuildInputs = [
     cffi
@@ -70,9 +72,7 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  buildInputs = [
-    tpm2-tss
-  ];
+  buildInputs = [ tpm2-tss ];
 
   propagatedBuildInputs = [
     cffi
@@ -89,9 +89,7 @@ buildPythonPackage rec {
     swtpm
   ];
 
-  pythonImportsCheck = [
-    "tpm2_pytss"
-  ];
+  pythonImportsCheck = [ "tpm2_pytss" ];
 
   meta = with lib; {
     homepage = "https://github.com/tpm2-software/tpm2-pytss";
diff --git a/pkgs/development/python-modules/tpm2-pytss/pr576-backport.patch b/pkgs/development/python-modules/tpm2-pytss/pr576-backport.patch
new file mode 100644
index 0000000000000..ee04701f39314
--- /dev/null
+++ b/pkgs/development/python-modules/tpm2-pytss/pr576-backport.patch
@@ -0,0 +1,117 @@
+Backport for https://github.com/tpm2-software/tpm2-pytss/pull/576 on 2.2.1
+
+diff --git a/scripts/prepare_headers.py b/scripts/prepare_headers.py
+index 6ca9b64..a7529b3 100644
+--- a/scripts/prepare_headers.py
++++ b/scripts/prepare_headers.py
+@@ -32,6 +32,7 @@ def remove_common_guards(s):
+ 
+     # Restructure #defines with ...
+     s = re.sub("(#define [A-Za-z0-9_]+) +\(\(.*?\) \(.*?\)\)", "\g<1>...", s)
++    s = re.sub("(#define [A-Za-z0-9_]+) +\(\(\(.*?\) .*\)", "\g<1>...", s)
+     s = re.sub("(#define [A-Za-z0-9_]+) +\(\(.*?\).*?\) ", "\g<1>...", s)
+     s = re.sub(
+         "(#define [A-Za-z0-9_]+) .*\n.*?.*\)\)", "\g<1>...", s, flags=re.MULTILINE
+diff --git a/src/tpm2_pytss/internal/crypto.py b/src/tpm2_pytss/internal/crypto.py
+index 42030c5..f9d8c34 100644
+--- a/src/tpm2_pytss/internal/crypto.py
++++ b/src/tpm2_pytss/internal/crypto.py
+@@ -25,6 +25,7 @@ from cryptography.hazmat.backends import default_backend
+ from cryptography.exceptions import UnsupportedAlgorithm, InvalidSignature
+ from typing import Tuple, Type, Any
+ import secrets
++import inspect
+ import sys
+ 
+ _curvetable = (
+diff --git a/test/test_encoding.py b/test/test_encoding.py
+index 1f58562..8cf4b51 100644
+--- a/test/test_encoding.py
++++ b/test/test_encoding.py
+@@ -1406,7 +1406,7 @@ class ToolsTest(TSS2_BaseTest):
+     def test_tools_decode_tpm2b_name(self):
+         if not self.has_tools:
+             self.skipTest("tools not in path")
+-        key = ec.generate_private_key(ec.SECP256R1).public_key()
++        key = ec.generate_private_key(ec.SECP256R1()).public_key()
+         kb = key.public_bytes(
+             serialization.Encoding.PEM, serialization.PublicFormat.SubjectPublicKeyInfo
+         )
+diff --git a/test/test_fapi.py b/test/test_fapi.py
+index f702fc9..6b77c66 100644
+--- a/test/test_fapi.py
++++ b/test/test_fapi.py
+@@ -13,7 +13,7 @@ from cryptography.hazmat.primitives.asymmetric.padding import PSS
+ 
+ from tpm2_pytss import *
+ 
+-from tpm2_pytss.internal.utils import is_bug_fixed, _lib_version_atleast
++from tpm2_pytss.internal.utils import is_bug_fixed
+ 
+ from .TSS2_BaseTest import TpmSimulator
+ from tpm2_pytss.TSS2_Exception import TSS2_Exception
+@@ -614,8 +614,7 @@ class Common:
+         self.fapi.sign(key_path, b"\x22" * 32)
+ 
+     @pytest.mark.skipif(
+-        _lib_version_atleast("tss2-fapi", "4.0.1-170")
+-        or not is_bug_fixed(fixed_in="3.2", backports=["2.4.7", "3.0.5", "3.1.1"]),
++        not is_bug_fixed(fixed_in="3.2", backports=["2.4.7", "3.0.5", "3.1.1"]),
+         reason="tpm2-tss bug, see #2084",
+     )
+     def test_write_authorize_nv(self, esys):
+@@ -662,8 +661,7 @@ class Common:
+             self.fapi.quote(path=key_path, pcrs=[7, 9])
+ 
+     @pytest.mark.skipif(
+-        _lib_version_atleast("tss2-fapi", "4.0.1-170")
+-        or not is_bug_fixed(fixed_in="3.2", backports=["2.4.7", "3.0.5", "3.1.1"]),
++        not is_bug_fixed(fixed_in="3.2", backports=["2.4.7", "3.0.5", "3.1.1"]),
+         reason="tpm2-tss bug, see #2084",
+     )
+     def test_authorize_policy(self, sign_key):
+@@ -728,9 +726,7 @@ class Common:
+             self.fapi.quote(path=key_path, pcrs=[7, 9])
+ 
+     @pytest.mark.skipif(
+-        _lib_version_atleast("tss2-fapi", "4.0.1-170")
+-        or not is_bug_fixed(fixed_in="3.2"),
+-        reason="tpm2-tss bug, see #2080",
++        not is_bug_fixed(fixed_in="3.2"), reason="tpm2-tss bug, see #2080"
+     )
+     def test_policy_signed(self, cryptography_key):
+         # create external signing key used by the signing authority external to the TPM
+@@ -792,10 +788,6 @@ class Common:
+         with pytest.raises(TSS2_Exception):
+             self.fapi.sign(path=key_path, digest=b"\x11" * 32)
+ 
+-    @pytest.mark.skipif(
+-        _lib_version_atleast("tss2-fapi", "4.0.1-170"),
+-        reason="issue on master branch.",
+-    )
+     def test_policy_branched(self):
+         pcr_index = 15
+         pcr_data = b"ABCDEF"
+@@ -913,8 +905,7 @@ class Common:
+         self.fapi.delete(path=nv_path)
+ 
+     @pytest.mark.skipif(
+-        _lib_version_atleast("tss2-fapi", "4.0.1-170")
+-        or not is_bug_fixed(fixed_in="3.2", backports=["2.4.7", "3.0.5", "3.1.1"]),
++        not is_bug_fixed(fixed_in="3.2", backports=["2.4.7", "3.0.5", "3.1.1"]),
+         reason="tpm2-tss bug, see #2089",
+     )
+     def test_policy_action(self):
+diff --git a/test/test_policy.py b/test/test_policy.py
+index f18aa8a..5f56e21 100644
+--- a/test/test_policy.py
++++ b/test/test_policy.py
+@@ -47,7 +47,7 @@ class TestPolicy(TSS2_EsapiTest):
+         super().setUp()
+         self._has_secp192r1 = True
+         try:
+-            ec.generate_private_key(ec.SECP192R1)
++            ec.generate_private_key(ec.SECP192R1())
+         except Exception:
+             self._has_secp192r1 = False
+ 
diff --git a/pkgs/development/python-modules/tqdm/default.nix b/pkgs/development/python-modules/tqdm/default.nix
index 4f3ff0f1545c2..4c3e8230fba72 100644
--- a/pkgs/development/python-modules/tqdm/default.nix
+++ b/pkgs/development/python-modules/tqdm/default.nix
@@ -1,28 +1,27 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, setuptools-scm
-, wheel
-, pytestCheckHook
-, pytest-asyncio
-, pytest-timeout
-, numpy
-, pandas
-, rich
-, tkinter
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  pytestCheckHook,
+  pytest-asyncio,
+  pytest-timeout,
+  numpy,
+  pandas,
+  rich,
+  tkinter,
 }:
 
 buildPythonPackage rec {
   pname = "tqdm";
-  version = "4.66.2";
+  version = "4.66.4";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-bNUs3w/vDg9UMpnPyW/skNe4p+iHRfQR7DPrRNXtNTE=";
+    hash = "sha256-5Nk2yd6HJ5KPO+YHlZDpfZq/6NOaWQvmeOtZGf/Bhrs=";
   };
 
   nativeBuildInputs = [
@@ -31,9 +30,6 @@ buildPythonPackage rec {
     wheel
   ];
 
-  # https://github.com/tqdm/tqdm/issues/1537
-  doCheck = pythonOlder "3.12";
-
   nativeCheckInputs = [
     pytestCheckHook
     pytest-asyncio
@@ -46,22 +42,22 @@ buildPythonPackage rec {
   ];
 
   pytestFlagsArray = [
-    "-W" "ignore::FutureWarning"
-    "-W" "ignore::DeprecationWarning"
+    "-W"
+    "ignore::FutureWarning"
+    "-W"
+    "ignore::DeprecationWarning"
   ];
 
   # Remove performance testing.
   # Too sensitive for on Hydra.
-  disabledTests = [
-    "perf"
-  ];
+  disabledTests = [ "perf" ];
 
-  LC_ALL="en_US.UTF-8";
+  LC_ALL = "en_US.UTF-8";
 
   pythonImportsCheck = [ "tqdm" ];
 
   meta = with lib; {
-    description = "A Fast, Extensible Progress Meter";
+    description = "Fast, Extensible Progress Meter";
     mainProgram = "tqdm";
     homepage = "https://github.com/tqdm/tqdm";
     changelog = "https://tqdm.github.io/releases/";
diff --git a/pkgs/development/python-modules/traceback2/default.nix b/pkgs/development/python-modules/traceback2/default.nix
index 9992cd1470b76..a0b3eef17ab51 100644
--- a/pkgs/development/python-modules/traceback2/default.nix
+++ b/pkgs/development/python-modules/traceback2/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pbr
-, linecache2
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pbr,
+  linecache2,
 }:
 
 buildPythonPackage rec {
@@ -15,15 +16,17 @@ buildPythonPackage rec {
     sha256 = "0c1h3jas1jp1fdbn9z2mrgn3jj0hw1x3yhnkxp7jw34q15xcdb05";
   };
 
-  propagatedBuildInputs = [ pbr linecache2 ];
+  propagatedBuildInputs = [
+    pbr
+    linecache2
+  ];
 
   # circular dependencies for tests
   doCheck = false;
 
   meta = with lib; {
-    description = "A backport of traceback to older supported Pythons";
+    description = "Backport of traceback to older supported Pythons";
     homepage = "https://pypi.python.org/pypi/traceback2/";
     license = licenses.psfl;
   };
-
 }
diff --git a/pkgs/development/python-modules/tracerite/default.nix b/pkgs/development/python-modules/tracerite/default.nix
index 9b98e986bb362..dd51ff779e2bb 100644
--- a/pkgs/development/python-modules/tracerite/default.nix
+++ b/pkgs/development/python-modules/tracerite/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools-scm
-, html5tagger
-, python
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  html5tagger,
+  python,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,13 +22,9 @@ buildPythonPackage rec {
     hash = "sha256-rI1MNdYl/P64tUHyB3qV9gfLbGbCVOXnEFoqFTkaqgg=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    html5tagger
-  ];
+  propagatedBuildInputs = [ html5tagger ];
 
   postInstall = ''
     cp tracerite/style.css $out/${python.sitePackages}/tracerite
@@ -36,15 +33,13 @@ buildPythonPackage rec {
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "tracerite"
-  ];
+  pythonImportsCheck = [ "tracerite" ];
 
   meta = with lib; {
     description = "Tracebacks for Humans in Jupyter notebooks";
     homepage = "https://github.com/sanic-org/tracerite";
     changelog = "https://github.com/sanic-org/tracerite/releases/tag/v${version}";
     license = licenses.unlicense;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/tracing/default.nix b/pkgs/development/python-modules/tracing/default.nix
index a447ae2ad0bae..1740e6d7bad33 100644
--- a/pkgs/development/python-modules/tracing/default.nix
+++ b/pkgs/development/python-modules/tracing/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, sphinx
+{
+  lib,
+  buildPythonPackage,
+  fetchurl,
+  sphinx,
 }:
 
 buildPythonPackage rec {
@@ -23,7 +24,6 @@ buildPythonPackage rec {
     homepage = "https://liw.fi/tracing/";
     description = "Python debug logging helper";
     license = licenses.gpl3;
-    maintainers = [];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/trackpy/default.nix b/pkgs/development/python-modules/trackpy/default.nix
index 1292e7d72a711..91945de8dc89a 100644
--- a/pkgs/development/python-modules/trackpy/default.nix
+++ b/pkgs/development/python-modules/trackpy/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, looseversion
-, matplotlib
-, numba
-, numpy
-, pandas
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, scipy
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  looseversion,
+  matplotlib,
+  numba,
+  numpy,
+  pandas,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  scipy,
 }:
 
 buildPythonPackage rec {
   pname = "trackpy";
-  version = "0.6.2";
+  version = "0.6.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -24,7 +25,7 @@ buildPythonPackage rec {
     owner = "soft-matter";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-HqInZkKvMM0T/HrDeZJcVHMxuRmhMvu0qAl5bAu3eQI=";
+    hash = "sha256-6i1IfdxgV6bpf//mXATpnsQ0zN26S8rlL0/1ql68sd8=";
   };
 
   propagatedBuildInputs = [
@@ -37,27 +38,23 @@ buildPythonPackage rec {
     scipy
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  preCheck = lib.optionalString stdenv.isDarwin ''
+  preCheck = lib.optionalString stdenv.hostPlatform.isDarwin ''
     # specifically needed for darwin
     export HOME=$(mktemp -d)
     mkdir -p $HOME/.matplotlib
     echo "backend: ps" > $HOME/.matplotlib/matplotlibrc
   '';
 
-  pythonImportsCheck = [
-    "trackpy"
-  ];
+  pythonImportsCheck = [ "trackpy" ];
 
   meta = with lib; {
     description = "Particle-tracking toolkit";
     homepage = "https://github.com/soft-matter/trackpy";
     changelog = "https://github.com/soft-matter/trackpy/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
-    broken = (stdenv.isLinux && stdenv.isAarch64);
+    maintainers = [ ];
+    broken = (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64);
   };
 }
diff --git a/pkgs/development/python-modules/trafilatura/default.nix b/pkgs/development/python-modules/trafilatura/default.nix
index 35212c3434438..06d380df90fdb 100644
--- a/pkgs/development/python-modules/trafilatura/default.nix
+++ b/pkgs/development/python-modules/trafilatura/default.nix
@@ -1,35 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, certifi
-, charset-normalizer
-, courlan
-, htmldate
-, justext
-, lxml
-, urllib3
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  certifi,
+  charset-normalizer,
+  courlan,
+  fetchPypi,
+  htmldate,
+  justext,
+  lxml,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "trafilatura";
-  version = "1.8.1";
+  version = "1.12.1";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-a4eN/b1cXftV0Pgwfyt9wVrDRYBU90hh/5ihcvXjhyA=";
+    hash = "sha256-iYkdtkbdhNmPs0ovrte6hMIuVJAAe1h9BZkDbTUWR2A=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  # Patch out gui cli because it is not supported in this packaging and
+  # nixify path to the trafilatura binary in the test suite
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace-fail '"trafilatura_gui=trafilatura.gui:main",' ""
+    substituteInPlace tests/cli_tests.py \
+      --replace-fail 'trafilatura_bin = "trafilatura"' \
+                     'trafilatura_bin = "${placeholder "out"}/bin/trafilatura"'
+  '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     certifi
     charset-normalizer
     courlan
@@ -39,41 +48,31 @@ buildPythonPackage rec {
     urllib3
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Disable tests that require an internet connection
+    "test_cli_pipeline"
+    "test_crawl_page"
     "test_download"
+    "test_feeds_helpers"
     "test_fetch"
-    "test_redirection"
+    "test_is_live_page"
     "test_meta_redirections"
-    "test_crawl_page"
-    "test_whole"
     "test_probing"
-    "test_cli_pipeline"
+    "test_queue"
+    "test_redirection"
+    "test_whole"
   ];
 
-  # patch out gui cli because it is not supported in this packaging
-  # nixify path to the trafilatura binary in the test suite
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace-fail '"trafilatura_gui=trafilatura.gui:main",' ""
-    substituteInPlace tests/cli_tests.py \
-      --replace-fail "trafilatura_bin = 'trafilatura'" "trafilatura_bin = '$out/bin/trafilatura'"
-  '';
-
-  pythonImportsCheck = [
-    "trafilatura"
-  ];
+  pythonImportsCheck = [ "trafilatura" ];
 
-  meta = with lib; {
+  meta = {
     description = "Python package and command-line tool designed to gather text on the Web";
     homepage = "https://trafilatura.readthedocs.io";
     changelog = "https://github.com/adbar/trafilatura/blob/v${version}/HISTORY.md";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ jokatzke ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ jokatzke ];
     mainProgram = "trafilatura";
   };
 }
diff --git a/pkgs/development/python-modules/trailrunner/default.nix b/pkgs/development/python-modules/trailrunner/default.nix
index 04cf6b0c071fa..1e7a13cdaefd7 100644
--- a/pkgs/development/python-modules/trailrunner/default.nix
+++ b/pkgs/development/python-modules/trailrunner/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pathspec
-, pythonOlder
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pathspec,
+  pythonOlder,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-qtEBr22yyj6WcSfyYr/4r0IuuMJ6chFFqnmb+uMfQPA=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    pathspec
-  ];
+  propagatedBuildInputs = [ pathspec ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  pythonImportsCheck = [
-    "trailrunner"
-  ];
+  pythonImportsCheck = [ "trailrunner" ];
 
   meta = with lib; {
     description = "Module to walk paths and run things";
diff --git a/pkgs/development/python-modules/trainer/default.nix b/pkgs/development/python-modules/trainer/default.nix
index 848b970248f02..117e954e7f308 100644
--- a/pkgs/development/python-modules/trainer/default.nix
+++ b/pkgs/development/python-modules/trainer/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
 
-, coqpit
-, fsspec
-, torch
-, tensorboard
-, protobuf
-, psutil
+  coqpit,
+  fsspec,
+  torch,
+  tensorboard,
+  protobuf,
+  psutil,
 
-, pytestCheckHook
-, soundfile
-, torchvision
+  pytestCheckHook,
+  soundfile,
+  torchvision,
 }:
 
 let
@@ -29,6 +31,14 @@ buildPythonPackage {
     hash = "sha256-z6TOzWqE3NytkdG3nUzh9GpFVGQEXFyzSQ8gvdB4wiw=";
   };
 
+  patches = [
+    (fetchpatch {
+      name = "add-support-for-python312.patch";
+      hash = "sha256-V5RPn/2pGKzQrf/SIRU3imo6nBhpBEJpI7HsFYbVZj4=";
+      url = "https://github.com/coqui-ai/Trainer/commit/0278012c7e6f5972b656d11757add4ab89f6d272.patch";
+    })
+  ];
+
   postPatch = ''
     sed -i 's/^protobuf.*/protobuf/' requirements.txt
   '';
@@ -51,12 +61,10 @@ buildPythonPackage {
     torchvision
   ];
 
-  pythonImportsCheck = [
-    "trainer"
-  ];
+  pythonImportsCheck = [ "trainer" ];
 
   meta = with lib; {
-    description = "A general purpose model trainer, as flexible as it gets";
+    description = "General purpose model trainer, as flexible as it gets";
     homepage = "https://github.com/coqui-ai/Trainer";
     changelog = "https://github.com/coqui-ai/Trainer/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/traitlets/default.nix b/pkgs/development/python-modules/traitlets/default.nix
index 5394e7f4091ab..09a4e2d944ac2 100644
--- a/pkgs/development/python-modules/traitlets/default.nix
+++ b/pkgs/development/python-modules/traitlets/default.nix
@@ -1,32 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-
-# build-system
-, hatchling
-
-# tests
-, argcomplete
-, pytest-mock
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+
+  # build-system
+  hatchling,
+
+  # tests
+  argcomplete,
+  pytest-mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "traitlets";
-  version = "5.14.1";
+  version = "5.14.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-hYUQWzcaBLgxakPVzinAmFdcLkd4ULYrhIuWTxREUn4=";
+    hash = "sha256-ntBXnTUCyUtLNzKsEgN1zalvkjEUUihH3ks7uYuWtrc=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   nativeCheckInputs = [
     argcomplete
diff --git a/pkgs/development/python-modules/traits/default.nix b/pkgs/development/python-modules/traits/default.nix
index 47b5eef29cede..f222f9dba2a07 100644
--- a/pkgs/development/python-modules/traits/default.nix
+++ b/pkgs/development/python-modules/traits/default.nix
@@ -1,9 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, numpy
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,14 +20,12 @@ buildPythonPackage rec {
   # Circular dependency
   doCheck = false;
 
-  pythonImportsCheck = [
-    "traits"
-  ];
+  pythonImportsCheck = [ "traits" ];
 
   meta = with lib; {
     description = "Explicitly typed attributes for Python";
     homepage = "https://pypi.python.org/pypi/traits";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/traitsui/default.nix b/pkgs/development/python-modules/traitsui/default.nix
index 0c7245225d10d..d19d1d04e23eb 100644
--- a/pkgs/development/python-modules/traitsui/default.nix
+++ b/pkgs/development/python-modules/traitsui/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, setuptools
-, traits
-, pyface
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools,
+  traits,
+  pyface,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-kBudHLxFUT4Apzl2d7CYRBsod0tojzChWbrUgBv0A2Q=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     traits
@@ -31,9 +30,7 @@ buildPythonPackage rec {
   # Needs X server
   doCheck = false;
 
-  pythonImportsCheck = [
-    "traitsui"
-  ];
+  pythonImportsCheck = [ "traitsui" ];
 
   meta = with lib; {
     description = "Traits-capable windowing framework";
diff --git a/pkgs/development/python-modules/traittypes/default.nix b/pkgs/development/python-modules/traittypes/default.nix
index 3f8ab6fa4dd12..e00ebe4ce1b77 100644
--- a/pkgs/development/python-modules/traittypes/default.nix
+++ b/pkgs/development/python-modules/traittypes/default.nix
@@ -1,54 +1,52 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, isPy27
-, pytestCheckHook
-, nose
-, numpy
-, pandas
-, xarray
-, traitlets
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  pytestCheckHook,
+  setuptools,
+  numpy,
+  pandas,
+  xarray,
+  traitlets,
 }:
 
 buildPythonPackage rec {
   pname = "traittypes";
-  version = "unstable-2019-06-23";
-  format = "setuptools";
+  version = "0.2.1-unstable-2020-07-17";
+  pyproject = true;
 
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "jupyter-widgets";
     repo = pname;
-    rev = "0a030b928991dec732c17a7a1cb13acbcd7650a2";
-    sha256 = "0rlm5krmq6n8yi47dgdsjyrkz3m079pndpbzkz2gx98pb3jd9pjs";
+    rev = "af2ebeec9e58b73a12d4cf841bd506d6eadb8868";
+    hash = "sha256-q7kt8b+yDHsWML/wCeND9PrZMVjemhzG7Ih1OtHbnTw=";
   };
 
-  patches = [
-    (fetchpatch {
-       name = "fix-intarray-test.patch";
-       url = "https://github.com/minrk/traittypes/commit/a02441e5b259e5858453a853207260c9bd4efbb5.patch";
-       sha256 = "120dsvr5nksizw75z1ah3h38mi399fxbvz5anakica557jahi0aw";
-    })
-  ];
+  postPatch = ''
+    substituteInPlace traittypes/tests/test_traittypes.py \
+      --replace-fail "np.int" "int"
+  '';
 
-  propagatedBuildInputs = [ traitlets ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [ numpy pandas xarray nose pytestCheckHook ];
+  dependencies = [ traitlets ];
 
-  disabledTestPaths = lib.optionals (lib.versionAtLeast numpy.version "1.17") [
-    # https://github.com/jupyter-widgets/traittypes/blob/master/setup.py#L86-L87
-    "traittypes/tests/test_traittypes.py"
+  nativeCheckInputs = [
+    numpy
+    pandas
+    xarray
+    pytestCheckHook
   ];
 
   pythonImportsCheck = [ "traittypes" ];
 
-  meta = with lib; {
+  meta = {
     description = "Trait types for NumPy, SciPy, XArray, and Pandas";
     homepage = "https://github.com/jupyter-widgets/traittypes";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ bcdarwin ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ bcdarwin ];
   };
-
 }
diff --git a/pkgs/development/python-modules/trampoline/default.nix b/pkgs/development/python-modules/trampoline/default.nix
index 2be2ff6e819db..6cc163885ccc7 100644
--- a/pkgs/development/python-modules/trampoline/default.nix
+++ b/pkgs/development/python-modules/trampoline/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitLab
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  pytestCheckHook,
 }:
 
 buildPythonPackage {
@@ -17,13 +18,9 @@ buildPythonPackage {
     hash = "sha256-A/tuR+QW9sKh76Qjwn1uQxlVJgWrSFzXeBRDdnSi2o4=";
   };
 
-  pythonImportsCheck = [
-    "trampoline"
-  ];
+  pythonImportsCheck = [ "trampoline" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Simple and tiny yield-based trampoline implementation for python";
diff --git a/pkgs/development/python-modules/transaction/default.nix b/pkgs/development/python-modules/transaction/default.nix
index 4587bc4949882..2b3e0515894a5 100644
--- a/pkgs/development/python-modules/transaction/default.nix
+++ b/pkgs/development/python-modules/transaction/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, zope-interface
-, mock
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  zope-interface,
+  mock,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -23,15 +24,13 @@ buildPythonPackage rec {
     mock
   ];
 
-  pythonImportsCheck = [
-    "transaction"
-  ];
+  pythonImportsCheck = [ "transaction" ];
 
   meta = with lib; {
     description = "Transaction management";
     homepage = "https://transaction.readthedocs.io/";
     changelog = "https://github.com/zopefoundation/transaction/blob/${version}/CHANGES.rst";
     license = licenses.zpl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/transformers/default.nix b/pkgs/development/python-modules/transformers/default.nix
index 5bcbeb035f673..91253909d565e 100644
--- a/pkgs/development/python-modules/transformers/default.nix
+++ b/pkgs/development/python-modules/transformers/default.nix
@@ -1,76 +1,76 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-# propagated build inputs
-, filelock
-, huggingface-hub
-, numpy
-, protobuf
-, packaging
-, pyyaml
-, regex
-, requests
-, tokenizers
-, safetensors
-, tqdm
-# optional dependencies
-, diffusers
-, scikit-learn
-, tensorflow
-, onnxconverter-common
-, opencv4
-, tf2onnx
-, torch
-, accelerate
-, faiss
-, datasets
-, jax
-, jaxlib
-, flax
-, optax
-, ftfy
-, onnxruntime
-, onnxruntime-tools
-, cookiecutter
-, sagemaker
-, fairscale
-, optuna
-, ray
-, pydantic
-, uvicorn
-, fastapi
-, starlette
-, librosa
-, phonemizer
-, torchaudio
-, pillow
-, timm
-, torchvision
-, av
-, sentencepiece
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  filelock,
+  huggingface-hub,
+  numpy,
+  protobuf,
+  packaging,
+  pyyaml,
+  regex,
+  requests,
+  tokenizers,
+  safetensors,
+  tqdm,
+
+  # optional-dependencies
+  diffusers,
+  scikit-learn,
+  tensorflow,
+  onnxconverter-common,
+  opencv4,
+  tf2onnx,
+  torch,
+  accelerate,
+  faiss,
+  datasets,
+  jax,
+  jaxlib,
+  flax,
+  optax,
+  ftfy,
+  onnxruntime,
+  onnxruntime-tools,
+  cookiecutter,
+  sagemaker,
+  fairscale,
+  optuna,
+  ray,
+  pydantic,
+  uvicorn,
+  fastapi,
+  starlette,
+  librosa,
+  phonemizer,
+  torchaudio,
+  pillow,
+  timm,
+  torchvision,
+  av,
+  sentencepiece,
 }:
 
 buildPythonPackage rec {
   pname = "transformers";
-  version = "4.40.1";
+  version = "4.45.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
-
   src = fetchFromGitHub {
     owner = "huggingface";
     repo = "transformers";
     rev = "refs/tags/v${version}";
-    hash = "sha256-w9BVJwYS2QV58UTOpcoQwdC+dxZuhLS2h8PqN5W2Yjc=";
+    hash = "sha256-5fGEnw4YllQdZV/0vDGXYsCyTw0rtPRD/V7UWoBBZjQ=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     filelock
     huggingface-hub
     numpy
@@ -83,117 +83,120 @@ buildPythonPackage rec {
     tqdm
   ];
 
-  passthru.optional-dependencies =
-  let
-    audio = [
-      librosa
-      # pyctcdecode
-      phonemizer
-      # kenlm
-    ];
-    vision = [ pillow ];
-  in
+  optional-dependencies =
+    let
+      audio = [
+        librosa
+        # pyctcdecode
+        phonemizer
+        # kenlm
+      ];
+      vision = [ pillow ];
+    in
     {
-    agents = [
-      diffusers
-      accelerate
-      datasets
-      torch
-      sentencepiece
-      opencv4
-      pillow
-    ];
-    ja = [
-      # fugashi
-      # ipadic
-      # rhoknp
-      # sudachidict_core
-      # sudachipy
-      # unidic
-      # unidic_lite
-    ];
-    sklearn = [
-      scikit-learn
-    ];
-    tf = [
-      tensorflow
-      onnxconverter-common
-      tf2onnx
-      # tensorflow-text
-      # keras-nlp
-    ];
-    torch = [
-      torch
-      accelerate
-    ];
-    retrieval = [ faiss datasets ];
-    flax = [ jax jaxlib flax optax ];
-    tokenizers = [
-      tokenizers
-    ];
-    ftfy = [ ftfy ];
-    onnxruntime = [
-      onnxruntime
-      onnxruntime-tools
-    ];
-    onnx = [
-      onnxconverter-common
-      tf2onnx
-      onnxruntime
-      onnxruntime-tools
-    ];
-    modelcreation = [
-      cookiecutter
-    ];
-    sagemaker = [
-      sagemaker
-    ];
-    deepspeed = [
-      # deepspeed
-      accelerate
-    ];
-    fairscale = [ fairscale ];
-    optuna = [ optuna ];
-    ray = [ ray ] ++ ray.optional-dependencies.tune-deps;
-    # sigopt = [ sigopt ];
-    # integrations = ray ++ optuna ++ sigopt;
-    serving = [
-      pydantic
-      uvicorn
-      fastapi
-      starlette
-    ];
-    audio = audio;
-    speech = [ torchaudio ] ++ audio;
-    torch-speech = [ torchaudio ] ++ audio;
-    tf-speech = audio;
-    flax-speech = audio;
-    timm = [ timm ];
-    torch-vision = [ torchvision ] ++ vision;
-    # natten = [ natten ];
-    # codecarbon = [ codecarbon ];
-    video = [
-      # decord
-      av
-    ];
-    sentencepiece = [ sentencepiece protobuf ];
-  };
-
+      agents = [
+        diffusers
+        accelerate
+        datasets
+        torch
+        sentencepiece
+        opencv4
+        pillow
+      ];
+      ja = [
+        # fugashi
+        # ipadic
+        # rhoknp
+        # sudachidict_core
+        # sudachipy
+        # unidic
+        # unidic_lite
+      ];
+      sklearn = [ scikit-learn ];
+      tf = [
+        tensorflow
+        onnxconverter-common
+        tf2onnx
+        # tensorflow-text
+        # keras-nlp
+      ];
+      torch = [
+        torch
+        accelerate
+      ];
+      retrieval = [
+        faiss
+        datasets
+      ];
+      flax = [
+        jax
+        jaxlib
+        flax
+        optax
+      ];
+      tokenizers = [ tokenizers ];
+      ftfy = [ ftfy ];
+      onnxruntime = [
+        onnxruntime
+        onnxruntime-tools
+      ];
+      onnx = [
+        onnxconverter-common
+        tf2onnx
+        onnxruntime
+        onnxruntime-tools
+      ];
+      modelcreation = [ cookiecutter ];
+      sagemaker = [ sagemaker ];
+      deepspeed = [
+        # deepspeed
+        accelerate
+      ];
+      fairscale = [ fairscale ];
+      optuna = [ optuna ];
+      ray = [ ray ] ++ ray.optional-dependencies.tune-deps;
+      # sigopt = [ sigopt ];
+      # integrations = ray ++ optuna ++ sigopt;
+      serving = [
+        pydantic
+        uvicorn
+        fastapi
+        starlette
+      ];
+      audio = audio;
+      speech = [ torchaudio ] ++ audio;
+      torch-speech = [ torchaudio ] ++ audio;
+      tf-speech = audio;
+      flax-speech = audio;
+      timm = [ timm ];
+      torch-vision = [ torchvision ] ++ vision;
+      # natten = [ natten ];
+      # codecarbon = [ codecarbon ];
+      video = [
+        # decord
+        av
+      ];
+      sentencepiece = [
+        sentencepiece
+        protobuf
+      ];
+    };
 
   # Many tests require internet access.
   doCheck = false;
 
-  pythonImportsCheck = [
-    "transformers"
-  ];
+  pythonImportsCheck = [ "transformers" ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://github.com/huggingface/transformers";
     description = "Natural Language Processing for TensorFlow 2.0 and PyTorch";
     mainProgram = "transformers-cli";
     changelog = "https://github.com/huggingface/transformers/releases/tag/v${version}";
-    license = licenses.asl20;
-    platforms = platforms.unix;
-    maintainers = with maintainers; [ pashashocky happysalada ];
+    license = lib.licenses.asl20;
+    platforms = lib.platforms.unix;
+    maintainers = with lib.maintainers; [
+      pashashocky
+      happysalada
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/transforms3d/default.nix b/pkgs/development/python-modules/transforms3d/default.nix
index 6bab6a5148b51..154badcbaa3aa 100644
--- a/pkgs/development/python-modules/transforms3d/default.nix
+++ b/pkgs/development/python-modules/transforms3d/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, numpy
-, scipy
-, sympy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  numpy,
+  scipy,
+  sympy,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,15 @@ buildPythonPackage rec {
     hash = "sha256-GgnjvwAfyxnDfBGvgMFIPPbR88BWFiNGrScVORygq94=";
   };
 
-  propagatedBuildInputs = [ numpy sympy ];
+  propagatedBuildInputs = [
+    numpy
+    sympy
+  ];
 
-  nativeCheckInputs = [ pytestCheckHook scipy ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    scipy
+  ];
   pythonImportsCheck = [ "transforms3d" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/transitions/default.nix b/pkgs/development/python-modules/transitions/default.nix
index 8ed221cd23e94..545e5667da8c5 100644
--- a/pkgs/development/python-modules/transitions/default.nix
+++ b/pkgs/development/python-modules/transitions/default.nix
@@ -1,31 +1,29 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, fontconfig
-, graphviz
-, mock
-, pycodestyle
-, pygraphviz
-, pytestCheckHook
-, pythonAtLeast
-, setuptools
-, six
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  fontconfig,
+  graphviz,
+  mock,
+  pycodestyle,
+  pygraphviz,
+  pytestCheckHook,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "transitions";
-  version = "0.9.0";
+  version = "0.9.2";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-L1TRG9siV3nX5ykBHpOp+3F2aM49xl+NT1pde6L0jhA=";
+    hash = "sha256-L4SQ29vUGTZs7xUWAyqwbQfMtYOe9UkF6EKkcmktQgQ=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     six
@@ -44,21 +42,21 @@ buildPythonPackage rec {
     export HOME=$TMPDIR
   '';
 
-  disabledTests = [
-    "test_diagram"
-    "test_ordered_with_graph"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # Upstream issue https://github.com/pygraphviz/pygraphviz/issues/441
-    "test_binary_stream"
-  ];
+  disabledTests =
+    [
+      "test_diagram"
+      "test_ordered_with_graph"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Upstream issue https://github.com/pygraphviz/pygraphviz/issues/441
+      "test_binary_stream"
+    ];
 
-  pythonImportsCheck = [
-    "transitions"
-  ];
+  pythonImportsCheck = [ "transitions" ];
 
   meta = with lib; {
     homepage = "https://github.com/pytransitions/transitions";
-    description = "A lightweight, object-oriented finite state machine implementation in Python";
+    description = "Lightweight, object-oriented finite state machine implementation in Python";
     changelog = "https://github.com/pytransitions/transitions/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/pkgs/development/python-modules/translate-toolkit/default.nix b/pkgs/development/python-modules/translate-toolkit/default.nix
new file mode 100644
index 0000000000000..89bc4a2fde543
--- /dev/null
+++ b/pkgs/development/python-modules/translate-toolkit/default.nix
@@ -0,0 +1,72 @@
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools-scm,
+  lxml,
+  wcwidth,
+  pytestCheckHook,
+  iniparse,
+  vobject,
+  mistletoe,
+  phply,
+  pyparsing,
+  ruamel-yaml,
+  cheroot,
+  fluent-syntax,
+  aeidon,
+  charset-normalizer,
+  syrupy,
+  gettext,
+}:
+
+buildPythonPackage rec {
+  pname = "translate-toolkit";
+  version = "3.13.2";
+
+  pyproject = true;
+  build-system = [ setuptools-scm ];
+
+  src = fetchPypi {
+    pname = "translate_toolkit";
+    inherit version;
+    hash = "sha256-95zIAelFSNK5+f1GY8DUgHPDQBS5K+9ULjXaSaa0wWM=";
+  };
+
+  dependencies = [
+    lxml
+    wcwidth
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    iniparse
+    vobject
+    mistletoe
+    phply
+    pyparsing
+    ruamel-yaml
+    cheroot
+    fluent-syntax
+    aeidon
+    charset-normalizer
+    syrupy
+    gettext
+  ];
+
+  disabledTests = [
+    # Probably breaks because of nix sandbox
+    "test_timezones"
+    # Requires network
+    "test_xliff_conformance"
+  ];
+
+  pythonImportsCheck = [ "translate" ];
+
+  meta = with lib; {
+    description = "Useful localization tools for building localization & translation systems";
+    homepage = "https://toolkit.translatehouse.org/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ erictapen ];
+  };
+}
diff --git a/pkgs/development/python-modules/translatehtml/default.nix b/pkgs/development/python-modules/translatehtml/default.nix
index e97e248edfdd4..da93e4d8484bb 100644
--- a/pkgs/development/python-modules/translatehtml/default.nix
+++ b/pkgs/development/python-modules/translatehtml/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, argostranslate
-, beautifulsoup4
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  argostranslate,
+  beautifulsoup4,
 }:
 
 buildPythonPackage rec {
@@ -45,7 +46,7 @@ buildPythonPackage rec {
   doCheck = false; # no tests
 
   meta = with lib; {
-    description = "Translate HTML using Beautiful Soup and Argos Translate.";
+    description = "Translate HTML using Beautiful Soup and Argos Translate";
     homepage = "https://www.argosopentech.com";
     license = licenses.mit;
     maintainers = with maintainers; [ misuzu ];
diff --git a/pkgs/development/python-modules/translatepy/default.nix b/pkgs/development/python-modules/translatepy/default.nix
index 0fc86af44cc40..499a47c2b999b 100644
--- a/pkgs/development/python-modules/translatepy/default.nix
+++ b/pkgs/development/python-modules/translatepy/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, beautifulsoup4
-, pyuseragents
-, safeio
-, inquirer
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  beautifulsoup4,
+  pyuseragents,
+  safeio,
+  inquirer,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -38,7 +39,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "translatepy" ];
 
   meta = with lib; {
-    description = "A module grouping multiple translation APIs";
+    description = "Module grouping multiple translation APIs";
     mainProgram = "translatepy";
     homepage = "https://github.com/Animenosekai/translate";
     license = with licenses; [ agpl3Only ];
diff --git a/pkgs/development/python-modules/translation-finder/default.nix b/pkgs/development/python-modules/translation-finder/default.nix
new file mode 100644
index 0000000000000..1341054331d88
--- /dev/null
+++ b/pkgs/development/python-modules/translation-finder/default.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  charset-normalizer,
+  ruamel-yaml,
+  weblate-language-data,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "translation-finder";
+  version = "2.16";
+
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-a1C+j4Zo0DJ9BWDn5Zsu4zAftcUixfPktAWdqiFJpiU=";
+  };
+
+  patches = [ ./fix_tests.patch ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    charset-normalizer
+    ruamel-yaml
+    weblate-language-data
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "translation_finder" ];
+
+  meta = with lib; {
+    description = "Translation file finder for Weblate";
+    homepage = "https://github.com/WeblateOrg/translation-finder";
+    changelog = "https://github.com/WeblateOrg/translation-finder/blob/${version}/CHANGES.rst";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ erictapen ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/translation-finder/fix_tests.patch b/pkgs/development/python-modules/translation-finder/fix_tests.patch
new file mode 100644
index 0000000000000..caf748a771304
--- /dev/null
+++ b/pkgs/development/python-modules/translation-finder/fix_tests.patch
@@ -0,0 +1,25 @@
+diff --git a/translation_finder/test_api.py b/translation_finder/test_api.py
+index c3b020c..9be070d 100644
+--- a/translation_finder/test_api.py
++++ b/translation_finder/test_api.py
+@@ -173,6 +173,7 @@ class APITest(DiscoveryTestCase):
+                     "filemask": "json/gotext-*.json",
+                     "template": "json/gotext-en.json",
+                 },
++                {'filemask': 'linked/*.po', 'new_base': 'linked/messages.pot', 'file_format': 'po'},
+             ],
+         )
+ 
+diff --git a/translation_finder/test_discovery.py b/translation_finder/test_discovery.py
+index 1a0ca40..14caa4f 100644
+--- a/translation_finder/test_discovery.py
++++ b/translation_finder/test_discovery.py
+@@ -945,6 +945,9 @@ class JSONDiscoveryTest(DiscoveryTestCase):
+                     "file_format": "json-nested",
+                     "template": "src/app/[locale]/_translations/en.json",
+                 },
++                {'filemask': '*/app/[locale]/_translations/cs.json', 'file_format': 'json-nested'},
++                {'filemask': '*/app/[locale]/_translations/de.json', 'file_format': 'json-nested'},
++                {'filemask': '*/app/[locale]/_translations/en.json', 'file_format': 'json-nested'}
+             ],
+         )
diff --git a/pkgs/development/python-modules/translationstring/default.nix b/pkgs/development/python-modules/translationstring/default.nix
index ab6c1808e428d..1110c6c58e910 100644
--- a/pkgs/development/python-modules/translationstring/default.nix
+++ b/pkgs/development/python-modules/translationstring/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -19,5 +20,4 @@ buildPythonPackage rec {
     license = licenses.bsd0;
     maintainers = with maintainers; [ domenkozar ];
   };
-
 }
diff --git a/pkgs/development/python-modules/translitcodec/default.nix b/pkgs/development/python-modules/translitcodec/default.nix
index 20da4d3431c4c..2b77a2fceb519 100644
--- a/pkgs/development/python-modules/translitcodec/default.nix
+++ b/pkgs/development/python-modules/translitcodec/default.nix
@@ -1,9 +1,16 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pytestCheckHook, pythonOlder }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+}:
 
 let
   pname = "translitcodec";
   version = "0.7.0";
-in buildPythonPackage {
+in
+buildPythonPackage {
   inherit pname version;
 
   format = "setuptools";
diff --git a/pkgs/development/python-modules/transmission-rpc/default.nix b/pkgs/development/python-modules/transmission-rpc/default.nix
index 32427487934a0..71a4b2778ba75 100644
--- a/pkgs/development/python-modules/transmission-rpc/default.nix
+++ b/pkgs/development/python-modules/transmission-rpc/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, python-dotenv
-, pytz
-, requests
-, typing-extensions
-, yarl
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  python-dotenv,
+  pytz,
+  requests,
+  typing-extensions,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-HthWeFInolNEs7RNA773DJjhGvl1rfDhvhO8WwRwuuY=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     requests
@@ -41,9 +40,7 @@ buildPythonPackage rec {
     yarl
   ];
 
-  pythonImportsCheck = [
-    "transmission_rpc"
-  ];
+  pythonImportsCheck = [ "transmission_rpc" ];
 
   disabledTests = [
     # Tests require a running Transmission instance
diff --git a/pkgs/development/python-modules/transmissionrpc/default.nix b/pkgs/development/python-modules/transmissionrpc/default.nix
index 5c2cf2ee85dee..0b6875390be0f 100644
--- a/pkgs/development/python-modules/transmissionrpc/default.nix
+++ b/pkgs/development/python-modules/transmissionrpc/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/trectools/default.nix b/pkgs/development/python-modules/trectools/default.nix
index f6870bd48c1ab..e6e585397f42e 100644
--- a/pkgs/development/python-modules/trectools/default.nix
+++ b/pkgs/development/python-modules/trectools/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, beautifulsoup4
-, pythonOlder
-, pandas
-, python
-, numpy
-, scikit-learn
-, scipy
-, lxml
-, matplotlib
-, sarge
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  beautifulsoup4,
+  pythonOlder,
+  pandas,
+  python,
+  numpy,
+  scikit-learn,
+  scipy,
+  lxml,
+  matplotlib,
+  sarge,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/tree-sitter-html/default.nix b/pkgs/development/python-modules/tree-sitter-html/default.nix
new file mode 100644
index 0000000000000..361f53b29bb6e
--- /dev/null
+++ b/pkgs/development/python-modules/tree-sitter-html/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools
+, tree-sitter
+}:
+
+buildPythonPackage rec {
+  pname = "tree-sitter-html";
+  version = "0.20.3";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "tree-sitter";
+    repo = "tree-sitter-html";
+    rev = "v${version}";
+    hash = "sha256-sHy3fVWemJod18HCQ8zBC/LpeCCPH0nzhI1wrkCg8nw=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+
+  passthru.optional-dependencies = {
+    core = [
+      tree-sitter
+    ];
+  };
+
+  # There are no tests
+  doCheck = false;
+  pythonImportsCheck = [ "tree_sitter_html" ];
+
+  meta = with lib; {
+    description = "HTML grammar for tree-sitter";
+    homepage = "https://github.com/tree-sitter/tree-sitter-html";
+    license = licenses.mit;
+    maintainers = with maintainers; [ doronbehar ];
+  };
+}
diff --git a/pkgs/development/python-modules/tree-sitter-javascript/default.nix b/pkgs/development/python-modules/tree-sitter-javascript/default.nix
new file mode 100644
index 0000000000000..f6a8782f14061
--- /dev/null
+++ b/pkgs/development/python-modules/tree-sitter-javascript/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools
+, tree-sitter
+}:
+
+buildPythonPackage rec {
+  pname = "tree-sitter-javascript";
+  version = "0.21.3";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "tree-sitter";
+    repo = "tree-sitter-javascript";
+    rev = "v${version}";
+    hash = "sha256-jsdY9Pd9WqZuBYtk088mx1bRQadC6D2/tGGVY+ZZ0J4=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+
+  passthru.optional-dependencies = {
+    core = [
+      tree-sitter
+    ];
+  };
+
+  # There are no tests
+  doCheck = false;
+  pythonImportsCheck = [ "tree_sitter_javascript" ];
+
+  meta = with lib; {
+    description = "JavaScript and JSX grammar for tree-sitter";
+    homepage = "https://github.com/tree-sitter/tree-sitter-javascript";
+    license = licenses.mit;
+    maintainers = with maintainers; [ doronbehar ];
+  };
+}
diff --git a/pkgs/development/python-modules/tree-sitter-json/default.nix b/pkgs/development/python-modules/tree-sitter-json/default.nix
new file mode 100644
index 0000000000000..45557bd5e2eaf
--- /dev/null
+++ b/pkgs/development/python-modules/tree-sitter-json/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools
+, tree-sitter
+}:
+
+buildPythonPackage rec {
+  pname = "tree-sitter-json";
+  version = "0.21.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "tree-sitter";
+    repo = "tree-sitter-json";
+    rev = "v${version}";
+    hash = "sha256-waejAbS7MjrE7w03MPqvBRpEpqTcKc6RgKCVSYaDV1Y=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+
+  passthru.optional-dependencies = {
+    core = [
+      tree-sitter
+    ];
+  };
+
+  # There are no tests
+  doCheck = false;
+  pythonImportsCheck = [ "tree_sitter_json" ];
+
+  meta = with lib; {
+    description = "JSON grammar for tree-sitter";
+    homepage = "https://github.com/tree-sitter/tree-sitter-json";
+    license = licenses.mit;
+    maintainers = with maintainers; [ doronbehar ];
+  };
+}
diff --git a/pkgs/development/python-modules/tree-sitter-languages/default.nix b/pkgs/development/python-modules/tree-sitter-languages/default.nix
new file mode 100644
index 0000000000000..9636b3dc95354
--- /dev/null
+++ b/pkgs/development/python-modules/tree-sitter-languages/default.nix
@@ -0,0 +1,64 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  cython,
+  tree-sitter,
+  pytestCheckHook,
+  python,
+}:
+
+buildPythonPackage rec {
+  pname = "tree-sitter-languages";
+  version = "1.10.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "grantjenks";
+    repo = "py-tree-sitter-languages";
+    rev = "v${version}";
+    hash = "sha256-wKU2c8QRBKFVFqg+DAeH5+cwm5jpDLmPZG3YBUsh/lM=";
+    # Use git, to also fetch tree-sitter repositories that upstream puts their
+    # hases in the repository as well, in repos.txt.
+    forceFetchGit = true;
+    postFetch = ''
+      cd $out
+      substitute build.py get-repos.py \
+        --replace-fail "from tree_sitter import Language" "" \
+        --replace-fail 'print(f"{sys.argv[0]}: Building", languages_filename)' "exit(0)"
+      ${python.pythonOnBuildForHost.interpreter} get-repos.py
+      rm -rf vendor/*/.git
+    '';
+  };
+
+  build-system = [
+    setuptools
+    cython
+  ];
+  dependencies = [ tree-sitter ];
+  # Generate languages.so file (build won't fail without this, but tests will).
+  preBuild = ''
+    ${python.pythonOnBuildForHost.interpreter} build.py
+  '';
+  nativeCheckInputs = [ pytestCheckHook ];
+  # Without cd $out, tests fail to import the compiled cython extensions.
+  # Without copying the ./tests/ directory to $out, pytest won't detect the
+  # tests and run them. See also:
+  # https://github.com/NixOS/nixpkgs/issues/255262
+  preCheck = ''
+    cp -r tests $out/${python.sitePackages}/tree_sitter_languages
+    cd $out
+  '';
+
+  pythonImportsCheck = [ "tree_sitter_languages" ];
+
+  meta = with lib; {
+    description = "Binary Python wheels for all tree sitter languages";
+    homepage = "https://github.com/grantjenks/py-tree-sitter-languages";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ doronbehar ];
+    # https://github.com/grantjenks/py-tree-sitter-languages/issues/67
+    broken = versionAtLeast tree-sitter.version "0.22";
+  };
+}
diff --git a/pkgs/development/python-modules/tree-sitter-python/default.nix b/pkgs/development/python-modules/tree-sitter-python/default.nix
new file mode 100644
index 0000000000000..399fcb0afc188
--- /dev/null
+++ b/pkgs/development/python-modules/tree-sitter-python/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools
+, tree-sitter
+}:
+
+buildPythonPackage rec {
+  pname = "tree-sitter-python";
+  version = "0.21.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "tree-sitter";
+    repo = "tree-sitter-python";
+    rev = "v${version}";
+    hash = "sha256-ZQ949GbgzZ/W667J+ekvQbs4bGnbDO+IWejivhxPZXM=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+
+  passthru.optional-dependencies = {
+    core = [
+      tree-sitter
+    ];
+  };
+
+  # There are no tests
+  doCheck = false;
+  pythonImportsCheck = [ "tree_sitter_python" ];
+
+  meta = with lib; {
+    description = "Python grammar for tree-sitter";
+    homepage = "https://github.com/tree-sitter/tree-sitter-python";
+    license = licenses.mit;
+    maintainers = with maintainers; [ doronbehar ];
+  };
+}
diff --git a/pkgs/development/python-modules/tree-sitter-rust/default.nix b/pkgs/development/python-modules/tree-sitter-rust/default.nix
new file mode 100644
index 0000000000000..c532127dcd145
--- /dev/null
+++ b/pkgs/development/python-modules/tree-sitter-rust/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools
+, tree-sitter
+}:
+
+buildPythonPackage rec {
+  pname = "tree-sitter-rust";
+  version = "0.21.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "tree-sitter";
+    repo = "tree-sitter-rust";
+    rev = "v${version}";
+    hash = "sha256-4CTh6fKSV8TuMHLAfEKWsAeCqeCM2uo6hVmF5KWhyPY=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+
+  passthru.optional-dependencies = {
+    core = [
+      tree-sitter
+    ];
+  };
+
+  # There are no tests
+  doCheck = false;
+  pythonImportsCheck = [ "tree_sitter_rust" ];
+
+  meta = with lib; {
+    description = "Rust grammar for tree-sitter";
+    homepage = "https://github.com/tree-sitter/tree-sitter-rust";
+    license = licenses.mit;
+    maintainers = with maintainers; [ doronbehar ];
+  };
+}
diff --git a/pkgs/development/python-modules/tree-sitter/0_21.nix b/pkgs/development/python-modules/tree-sitter/0_21.nix
new file mode 100644
index 0000000000000..1d3326ea967a5
--- /dev/null
+++ b/pkgs/development/python-modules/tree-sitter/0_21.nix
@@ -0,0 +1,48 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  pythonAtLeast,
+  setuptools,
+  distutils,
+}:
+
+buildPythonPackage rec {
+  pname = "tree-sitter";
+  version = "0.21.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "tree-sitter";
+    repo = "py-tree-sitter";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-HT1sRzDFpeelWCq1ZMeRmoUg0a3SBR7bZKxBqn4fb2g=";
+    fetchSubmodules = true;
+  };
+
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "tree_sitter" ];
+
+  # Needed explicitly for Python >= 3.12 as tree-sitter provides
+  # calls to distutils functions to compile language files
+  dependencies = lib.optionals (pythonAtLeast "3.12") [ distutils ];
+
+  preCheck = ''
+    rm -r tree_sitter
+  '';
+
+  meta = with lib; {
+    description = "Python bindings to the Tree-sitter parsing library";
+    homepage = "https://github.com/tree-sitter/py-tree-sitter";
+    changelog = "https://github.com/tree-sitter/py-tree-sitter/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/tree-sitter/default.nix b/pkgs/development/python-modules/tree-sitter/default.nix
index 039b9ce21cea7..fdaa03554433a 100644
--- a/pkgs/development/python-modules/tree-sitter/default.nix
+++ b/pkgs/development/python-modules/tree-sitter/default.nix
@@ -1,15 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  tree-sitter-python,
+  tree-sitter-rust,
+  tree-sitter-html,
+  tree-sitter-javascript,
+  tree-sitter-json,
 }:
 
 buildPythonPackage rec {
   pname = "tree-sitter";
-  version = "0.21.1";
+  version = "0.22.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,32 +23,25 @@ buildPythonPackage rec {
     owner = "tree-sitter";
     repo = "py-tree-sitter";
     rev = "refs/tags/v${version}";
-    hash = "sha256-U4ZdU0lxjZO/y0q20bG5CLKipnfpaxzV3AFR6fGS7m4=";
+    hash = "sha256-4lxE8oDFE0X7YAnB72PKIaHIqovWSM5QnFo0grPAtKU=";
     fetchSubmodules = true;
   };
 
-  patches = [
-    #  Replace distutils with setuptools, https://github.com/tree-sitter/py-tree-sitter/pull/214
-    (fetchpatch {
-      name = "replace-distutils.patch";
-      url = "https://github.com/tree-sitter/py-tree-sitter/commit/80d3cae493c4a47e49cc1d2ebab0a8eaf7617825.patch";
-      hash = "sha256-00coI8/COpYMiSflAECwh6yJCMJj/ucFEn18Npj2g+Q=";
-    })
-  ];
-
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    tree-sitter-python
+    tree-sitter-rust
+    tree-sitter-html
+    tree-sitter-javascript
+    tree-sitter-json
   ];
 
-  pythonImportsCheck = [
-    "tree_sitter"
-  ];
+  pythonImportsCheck = [ "tree_sitter" ];
 
   preCheck = ''
+    # https://github.com/NixOS/nixpkgs/issues/255262#issuecomment-1721265871
     rm -r tree_sitter
   '';
 
diff --git a/pkgs/development/python-modules/treelib/default.nix b/pkgs/development/python-modules/treelib/default.nix
index cf32b37a23195..213823da0e283 100644
--- a/pkgs/development/python-modules/treelib/default.nix
+++ b/pkgs/development/python-modules/treelib/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, six
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  six,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,14 @@ buildPythonPackage rec {
     hash = "sha256-FIdJWpkOmUVZb+IkYocu1nn+oSPROrkcHeiw9wZupgM=";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "treelib" ];
 
   meta = with lib; {
-    description = "An efficient implementation of tree data structure in python 2/3";
+    description = "Efficient implementation of tree data structure in python 2/3";
     homepage = "https://github.com/caesar0301/treelib";
     changelog = "https://github.com/caesar0301/treelib/releases/tag/${src.rev}";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/treelog/default.nix b/pkgs/development/python-modules/treelog/default.nix
index 5f825bee623c8..7739b8253bb42 100644
--- a/pkgs/development/python-modules/treelog/default.nix
+++ b/pkgs/development/python-modules/treelog/default.nix
@@ -1,4 +1,9 @@
-{ lib , python, buildPythonPackage , fetchPypi, typing-extensions }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  typing-extensions,
+}:
 
 buildPythonPackage rec {
   pname = "treelog";
@@ -12,13 +17,7 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "treelog" ];
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
-
-  checkPhase = ''
-    ${python.interpreter} -m unittest
-  '';
+  propagatedBuildInputs = [ typing-extensions ];
 
   meta = with lib; {
     description = "Logging framework that organizes messages in a tree structure";
diff --git a/pkgs/development/python-modules/treeo/default.nix b/pkgs/development/python-modules/treeo/default.nix
index 789eb346e8c64..bca135f92a177 100644
--- a/pkgs/development/python-modules/treeo/default.nix
+++ b/pkgs/development/python-modules/treeo/default.nix
@@ -1,10 +1,11 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, jax
-, jaxlib
-, lib
-, poetry-core
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  jax,
+  jaxlib,
+  lib,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
@@ -34,22 +35,16 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   # jax is not declared in the dependencies, but is necessary.
-  propagatedBuildInputs = [
-    jax
-  ];
+  propagatedBuildInputs = [ jax ];
 
   nativeCheckInputs = [ jaxlib ];
-  pythonImportsCheck = [
-    "treeo"
-  ];
+  pythonImportsCheck = [ "treeo" ];
 
   meta = with lib; {
-    description = "A small library for creating and manipulating custom JAX Pytree classes.";
+    description = "Small library for creating and manipulating custom JAX Pytree classes";
     homepage = "https://github.com/cgarciae/treeo";
     license = licenses.mit;
     maintainers = with maintainers; [ ndl ];
diff --git a/pkgs/development/python-modules/treescope/default.nix b/pkgs/development/python-modules/treescope/default.nix
new file mode 100644
index 0000000000000..c27e95cdff388
--- /dev/null
+++ b/pkgs/development/python-modules/treescope/default.nix
@@ -0,0 +1,65 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  flit-core,
+
+  # dependencies
+  numpy,
+
+  # optional-dependencies
+  ipython,
+  jax,
+  palettable,
+
+  # tests
+  absl-py,
+  jaxlib,
+  pytestCheckHook,
+  torch,
+}:
+
+buildPythonPackage rec {
+  pname = "treescope";
+  version = "0.1.5";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "google-deepmind";
+    repo = "treescope";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-+Hm60O9tEXIiE0av1O0BsOdMln4e1s7ijb3WNiQ74jE=";
+  };
+
+  build-system = [ flit-core ];
+
+  dependencies = [ numpy ];
+
+  optional-dependencies = {
+    notebook = [
+      ipython
+      jax
+      palettable
+    ];
+  };
+
+  pythonImportsCheck = [ "treescope" ];
+
+  nativeCheckInputs = [
+    absl-py
+    jax
+    jaxlib
+    pytestCheckHook
+    torch
+  ];
+
+  meta = {
+    description = "An interactive HTML pretty-printer for machine learning research in IPython notebooks";
+    homepage = "https://github.com/google-deepmind/treescope";
+    changelog = "https://github.com/google-deepmind/treescope/releases/tag/v${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/pkgs/development/python-modules/treex/default.nix b/pkgs/development/python-modules/treex/default.nix
index cfbadc344effb..cc98867484a66 100644
--- a/pkgs/development/python-modules/treex/default.nix
+++ b/pkgs/development/python-modules/treex/default.nix
@@ -1,22 +1,22 @@
-{ buildPythonPackage
-, cloudpickle
-, dm-haiku
-, einops
-, fetchFromGitHub
-, flax
-, hypothesis
-, jaxlib
-, keras
-, lib
-, poetry-core
-, pytestCheckHook
-, pyyaml
-, rich
-, tensorflow
-, treeo
-, torchmetrics
-, pythonRelaxDepsHook
-, torch
+{
+  buildPythonPackage,
+  cloudpickle,
+  dm-haiku,
+  einops,
+  fetchFromGitHub,
+  flax,
+  hypothesis,
+  jaxlib,
+  keras,
+  lib,
+  poetry-core,
+  pytestCheckHook,
+  pyyaml,
+  rich,
+  tensorflow,
+  treeo,
+  torchmetrics,
+  torch,
 }:
 
 buildPythonPackage rec {
@@ -43,7 +43,6 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   buildInputs = [ jaxlib ];
diff --git a/pkgs/development/python-modules/treq/default.nix b/pkgs/development/python-modules/treq/default.nix
index b2f020a8e3793..1d2a9b15374c7 100644
--- a/pkgs/development/python-modules/treq/default.nix
+++ b/pkgs/development/python-modules/treq/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-
-# build-system
-, incremental
-, setuptools
-
-# dependenices
-, attrs
-, hyperlink
-, requests
-, twisted
-
-# tests
-, httpbin
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+
+  # build-system
+  incremental,
+  setuptools,
+
+  # dependenices
+  attrs,
+  hyperlink,
+  requests,
+  twisted,
+
+  # tests
+  httpbin,
 }:
 
 buildPythonPackage rec {
@@ -56,6 +57,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/twisted/treq";
     description = "Requests-like API built on top of twisted.web's Agent";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/trezor-agent/default.nix b/pkgs/development/python-modules/trezor-agent/default.nix
index f0b72da158b70..5f4093965fd00 100644
--- a/pkgs/development/python-modules/trezor-agent/default.nix
+++ b/pkgs/development/python-modules/trezor-agent/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, trezor
-, libagent
-, ecdsa
-, ed25519
-, mnemonic
-, keepkey
-, semver
-, setuptools
-, wheel
-, pinentry
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  trezor,
+  libagent,
+  ecdsa,
+  ed25519,
+  mnemonic,
+  keepkey,
+  semver,
+  setuptools,
+  wheel,
+  pinentry,
 }:
 
 buildPythonPackage rec {
@@ -24,7 +25,18 @@ buildPythonPackage rec {
     hash = "sha256-4IylpUvXZYAXFkyFGNbN9iPTsHff3M/RL2Eq9f7wWFU=";
   };
 
-  propagatedBuildInputs = [ setuptools trezor libagent ecdsa ed25519 mnemonic keepkey semver wheel pinentry ];
+  propagatedBuildInputs = [
+    setuptools
+    trezor
+    libagent
+    ecdsa
+    ed25519
+    mnemonic
+    keepkey
+    semver
+    wheel
+    pinentry
+  ];
 
   # relax dependency constraint
   postPatch = ''
@@ -39,7 +51,10 @@ buildPythonPackage rec {
     description = "Using Trezor as hardware SSH agent";
     homepage = "https://github.com/romanz/trezor-agent";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ hkjn np mmahut ];
+    maintainers = with maintainers; [
+      hkjn
+      np
+      mmahut
+    ];
   };
-
 }
diff --git a/pkgs/development/python-modules/trezor/default.nix b/pkgs/development/python-modules/trezor/default.nix
index 7a4403550964f..62c94ce4bd7c7 100644
--- a/pkgs/development/python-modules/trezor/default.nix
+++ b/pkgs/development/python-modules/trezor/default.nix
@@ -1,59 +1,43 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, installShellFiles
-, attrs
-, click
-, construct
-, construct-classes
-, ecdsa
-, hidapi
-, libusb1
-, mnemonic
-, pillow
-, protobuf
-, requests
-, shamir-mnemonic
-, simple-rlp
-, typing-extensions
-, trezor-udev-rules
-, pytestCheckHook
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  click,
+  construct,
+  construct-classes,
+  ecdsa,
+  libusb1,
+  mnemonic,
+  requests,
+  setuptools,
+  typing-extensions,
+  trezor-udev-rules,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "trezor";
-  version = "0.13.8";
-  format = "setuptools";
-
-  disabled = !isPy3k;
+  version = "0.13.9";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Y01O3fNWAyV8MhYY2FSMajWyc4Rle2XjsL261jWlfP8=";
+    hash = "sha256-lFC9e7nSPl4zo8nljhjwWLRMnZw0ymZLSYGnlaqfse8=";
   };
 
-  nativeBuildInputs = [ installShellFiles ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    attrs
+  dependencies = [
     click
     construct
     construct-classes
     ecdsa
-    hidapi
     libusb1
     mnemonic
-    pillow
-    protobuf
     requests
-    shamir-mnemonic
-    simple-rlp
     typing-extensions
-  ] ++ lib.optionals stdenv.isLinux [
-    trezor-udev-rules
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isLinux [ trezor-udev-rules ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
@@ -68,21 +52,16 @@ buildPythonPackage rec {
     $out/bin/trezorctl --version
   '';
 
-  postFixup = ''
-    mkdir completions
-    _TREZORCTL_COMPLETE=source_bash $out/bin/trezorctl > completions/trezorctl || true
-    _TREZORCTL_COMPLETE=source_zsh $out/bin/trezorctl > completions/_trezorctl || true
-    _TREZORCTL_COMPLETE=source_fish $out/bin/trezorctl > completions/trezorctl.fish || true
-    installShellCompletion --bash completions/trezorctl
-    installShellCompletion --zsh completions/_trezorctl
-    installShellCompletion --fish completions/trezorctl.fish
-  '';
-
   meta = with lib; {
     description = "Python library for communicating with Trezor Hardware Wallet";
     mainProgram = "trezorctl";
     homepage = "https://github.com/trezor/trezor-firmware/tree/master/python";
-    license = licenses.gpl3;
-    maintainers = with maintainers; [ np prusnak mmahut ];
+    changelog = "https://github.com/trezor/trezor-firmware/blob/python/v${version}/python/CHANGELOG.md";
+    license = licenses.lgpl3Only;
+    maintainers = with maintainers; [
+      np
+      prusnak
+      mmahut
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/trfl/default.nix b/pkgs/development/python-modules/trfl/default.nix
deleted file mode 100644
index 8538b47598ede..0000000000000
--- a/pkgs/development/python-modules/trfl/default.nix
+++ /dev/null
@@ -1,76 +0,0 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, numpy
-, absl-py
-, dm-tree
-, wrapt
-, tensorflow
-, tensorflow-probability
-, pytestCheckHook
-, nose }:
-
-buildPythonPackage rec {
-  pname = "trfl";
-  version = "1.2.0";
-  format = "setuptools";
-
-  src = fetchFromGitHub {
-    owner = "deepmind";
-    repo = pname;
-    rev = "ed6eff5b79ed56923bcb102e152c01ea52451d4c";
-    hash = "sha256-UsDUKJCHSJ4gP+P95Pm7RsPpqTJqJhrsW47C7fTZ77I=";
-  };
-
-  buildInputs = [
-    absl-py
-    dm-tree
-    numpy
-    wrapt
-  ];
-
-  propagatedBuildInputs = [
-    tensorflow
-    tensorflow-probability
-  ];
-
-  nativeCheckInputs = [
-    nose
-    pytestCheckHook
-  ];
-
-  pythonImportsCheck = [
-    "trfl"
-  ];
-
-  # Tests currently fail with assertion errors
-  doCheck = false;
-
-  disabledTestPaths = [
-    # AssertionErrors
-    "trfl/indexing_ops_test.py"
-    "trfl/vtrace_ops_test.py"
-    "trfl/value_ops_test.py"
-    "trfl/target_update_ops_test.py"
-    "trfl/sequence_ops_test.py"
-    "trfl/retrace_ops_test.py"
-    "trfl/policy_ops_test.py"
-    "trfl/policy_gradient_ops_test.py"
-    "trfl/pixel_control_ops_test.py"
-    "trfl/periodic_ops_test.py"
-    "trfl/dpg_ops_test.py"
-    "trfl/distribution_ops_test.py"
-    "trfl/dist_value_ops_test.py"
-    "trfl/discrete_policy_gradient_ops_test.py"
-    "trfl/continuous_retrace_ops_test.py"
-    "trfl/clipping_ops_test.py"
-    "trfl/action_value_ops_test.py"
-  ];
-
-  meta = with lib; {
-    description = "TensorFlow Reinforcement Learning";
-    homepage = "https://github.com/deepmind/trfl";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ onny ];
-  };
-}
diff --git a/pkgs/development/python-modules/trimesh/default.nix b/pkgs/development/python-modules/trimesh/default.nix
index bd3a9f8d762d2..272a5d535a31b 100644
--- a/pkgs/development/python-modules/trimesh/default.nix
+++ b/pkgs/development/python-modules/trimesh/default.nix
@@ -1,30 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pytestCheckHook
-, pythonOlder
-, numpy
-, lxml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
+  pythonOlder,
+  numpy,
+  lxml,
 }:
 
 buildPythonPackage rec {
   pname = "trimesh";
-  version = "4.3.2";
-  format = "pyproject";
+  version = "4.4.9";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-FFDb0aro3YJe3dVsWn19GzXK1+/Cxj1TXhlWlXfCWRY=";
+    hash = "sha256-6fVMtO9w+dtJRGytOEW3qAQ/x9YtkZKyQXQfP7DYE6w=";
   };
 
-  nativeBuildInputs = [ setuptools ];
+  build-system = [ setuptools ];
 
   dependencies = [ numpy ];
 
-  nativeCheckInputs = [ lxml pytestCheckHook ];
+  nativeCheckInputs = [
+    lxml
+    pytestCheckHook
+  ];
 
   disabledTests = [
     # requires loading models which aren't part of the Pypi tarball
@@ -40,6 +44,9 @@ buildPythonPackage rec {
     homepage = "https://trimsh.org/";
     changelog = "https://github.com/mikedh/trimesh/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ gebner pbsds ];
+    maintainers = with maintainers; [
+      gebner
+      pbsds
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/trino-python-client/default.nix b/pkgs/development/python-modules/trino-python-client/default.nix
index 479832bf95644..a75171f6957f9 100644
--- a/pkgs/development/python-modules/trino-python-client/default.nix
+++ b/pkgs/development/python-modules/trino-python-client/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
   # build
-, setuptools
+  setuptools,
   # required
-, pytz
-, requests
-, tzlocal
+  pytz,
+  requests,
+  tzlocal,
   # optional
-, requests-kerberos
-, sqlalchemy
-, keyring
+  requests-kerberos,
+  sqlalchemy,
+  keyring,
   # tests
-, pytestCheckHook
-, httpretty
+  pytestCheckHook,
+  httpretty,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     hash = "sha256-Hl88Keavyp1QBw67AFbevy/btzNs7UlsKQ93K02YgLM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     pytz
@@ -39,15 +38,9 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = lib.fix (self: {
-    kerberos = [
-      requests-kerberos
-    ];
-    sqlalchemy = [
-      sqlalchemy
-    ];
-    external-authentication-token-cache = [
-      keyring
-    ];
+    kerberos = [ requests-kerberos ];
+    sqlalchemy = [ sqlalchemy ];
+    external-authentication-token-cache = [ keyring ];
     all = self.kerberos ++ self.sqlalchemy;
   });
 
@@ -56,9 +49,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ passthru.optional-dependencies.all;
 
-  pythonImportsCheck = [
-    "trino"
-  ];
+  pythonImportsCheck = [ "trino" ];
 
   disabledTestPaths = [
     # these all require a running trino instance
@@ -67,9 +58,7 @@ buildPythonPackage rec {
     "tests/integration/test_sqlalchemy_integration.py"
   ];
 
-  pytestFlagsArray = [
-    "-k 'not auth'"
-  ];
+  pytestFlagsArray = [ "-k 'not auth'" ];
 
   meta = with lib; {
     changelog = "https://github.com/trinodb/trino-python-client/blob/${version}/CHANGES.md";
diff --git a/pkgs/development/python-modules/trio-asyncio/default.nix b/pkgs/development/python-modules/trio-asyncio/default.nix
index a74b3889facda..7c8f0cbaa28b9 100644
--- a/pkgs/development/python-modules/trio-asyncio/default.nix
+++ b/pkgs/development/python-modules/trio-asyncio/default.nix
@@ -1,69 +1,67 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, greenlet
-, trio
-, outcome
-, sniffio
-, exceptiongroup
-, pytest-trio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  greenlet,
+  trio,
+  outcome,
+  sniffio,
+  exceptiongroup,
+  pytest-trio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "trio-asyncio";
-  version = "0.14.0";
+  version = "0.15.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    pname = "trio_asyncio";
-    inherit version;
-    hash = "sha256-msSKQ8vhZxtBIh7HNq4M2qc0yKOErGNiCWLBXXse3WQ=";
+  src = fetchFromGitHub {
+    owner = "python-trio";
+    repo = "trio-asyncio";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-6c+4sGEpCVC8wxBg+dYgkOwRAUOi/DTITrDx3M2koyE=";
   };
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace '"pytest-runner"' ""
+      --replace-fail '"pytest-runner"' ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     greenlet
     trio
     outcome
     sniffio
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    exceptiongroup
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ exceptiongroup ];
 
-  # RuntimeWarning: Can't run the Python asyncio tests because they're not installed. On a Debian/Ubuntu system, you might need to install the libpython3.11-testsuite package.
-  doCheck = false;
+  pytestFlagsArray = [
+    # RuntimeWarning: Can't run the Python asyncio tests because they're not installed
+    "-W"
+    "ignore::RuntimeWarning"
+  ];
 
   nativeCheckInputs = [
     pytest-trio
     pytestCheckHook
   ];
 
-  disabledTestPaths = [
-    "tests/python" # tries to import internal API test.test_asyncio
-  ];
-
-  pythonImportsCheck = [
-    "trio_asyncio"
-  ];
+  pythonImportsCheck = [ "trio_asyncio" ];
 
   meta = with lib; {
     changelog = "https://github.com/python-trio/trio-asyncio/blob/v${version}/docs/source/history.rst";
     description = "Re-implementation of the asyncio mainloop on top of Trio";
     homepage = "https://github.com/python-trio/trio-asyncio";
-    license = with licenses; [ asl20 /* or */ mit ];
+    license = with licenses; [
+      asl20 # or
+      mit
+    ];
     maintainers = with maintainers; [ dotlambda ];
   };
 }
diff --git a/pkgs/development/python-modules/trio-websocket/default.nix b/pkgs/development/python-modules/trio-websocket/default.nix
index 98fdcfae0c160..2804bcaa76e59 100644
--- a/pkgs/development/python-modules/trio-websocket/default.nix
+++ b/pkgs/development/python-modules/trio-websocket/default.nix
@@ -1,32 +1,36 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, exceptiongroup
-, pytest-trio
-, pytestCheckHook
-, trio
-, trustme
-, wsproto
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  exceptiongroup,
+  pytest-trio,
+  pytestCheckHook,
+  trio,
+  trustme,
+  wsproto,
 }:
 
 buildPythonPackage rec {
   pname = "trio-websocket";
-  version = "0.10.2";
-  format = "setuptools";
+  version = "0.11.1";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "HyperionGray";
     repo = "trio-websocket";
     rev = version;
-    hash = "sha256-djoTxkIKY52l+WnxL1FwlqrU/zvsLVkPUAHn9BxJ45k=";
+    hash = "sha256-ddLbYkb1m9zRjv3Lb7YwUzj26gYbK4nYN6jN+FAuiOs=";
   };
 
-  propagatedBuildInputs = [
-    exceptiongroup
+  build-system = [ setuptools ];
+
+  dependencies = [
     trio
     wsproto
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ exceptiongroup ];
 
   nativeCheckInputs = [
     pytest-trio
@@ -34,16 +38,27 @@ buildPythonPackage rec {
     trustme
   ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [
-    # Failed: DID NOT RAISE <class 'ValueError'>
-    "test_finalization_dropped_exception"
-    # Timing related
-    "test_client_close_timeout"
-    "test_cm_exit_with_pending_messages"
-    "test_server_close_timeout"
-    "test_server_handler_exit"
-    "test_server_open_timeout"
-  ];
+  disabledTests =
+    [
+      # https://github.com/python-trio/trio-websocket/issues/187
+      "test_handshake_exception_before_accept"
+      "test_reject_handshake"
+      "test_reject_handshake_invalid_info_status"
+      "test_client_open_timeout"
+      "test_client_close_timeout"
+      "test_client_connect_networking_error"
+      "test_finalization_dropped_exception"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Failed: DID NOT RAISE <class 'ValueError'>
+      "test_finalization_dropped_exception"
+      # Timing related
+      "test_client_close_timeout"
+      "test_cm_exit_with_pending_messages"
+      "test_server_close_timeout"
+      "test_server_handler_exit"
+      "test_server_open_timeout"
+    ];
 
   __darwinAllowLocalNetworking = true;
 
@@ -54,6 +69,6 @@ buildPythonPackage rec {
     description = "WebSocket client and server implementation for Python Trio";
     homepage = "https://github.com/HyperionGray/trio-websocket";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/trio/default.nix b/pkgs/development/python-modules/trio/default.nix
index cc276fef5c525..968d67b27adb1 100644
--- a/pkgs/development/python-modules/trio/default.nix
+++ b/pkgs/development/python-modules/trio/default.nix
@@ -1,73 +1,65 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, stdenv
-
-# build-system
-, setuptools
-
-# dependencies
-, attrs
-, exceptiongroup
-, idna
-, outcome
-, sniffio
-, sortedcontainers
-
-# tests
-, astor
-, coreutils
-, jedi
-, pyopenssl
-, pytestCheckHook
-, pytest-trio
-, trustme
-, yapf
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  stdenv,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  attrs,
+  exceptiongroup,
+  idna,
+  outcome,
+  sniffio,
+  sortedcontainers,
+
+  # tests
+  astor,
+  coreutils,
+  jedi,
+  pyopenssl,
+  pytestCheckHook,
+  pytest-trio,
+  trustme,
+  yapf,
 }:
 
 let
   # escape infinite recursion with pytest-trio
-  pytest-trio' = (pytest-trio.override {
-    trio = null;
-  }).overrideAttrs {
+  pytest-trio' = (pytest-trio.override { trio = null; }).overrideAttrs {
     doCheck = false;
-    pythonImportsCheck = [];
+    pythonImportsCheck = [ ];
   };
 in
 buildPythonPackage rec {
   pname = "trio";
-  version = "0.24.0";
+  version = "0.25.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-/6CadKa/gbhPhhOQn7C+ruhHV0UBg6ei4LR7RVwMrF0=";
+  src = fetchFromGitHub {
+    owner = "python-trio";
+    repo = "trio";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-JQ493U4WINOG6ob4IzfNQt5Lgs3DmEM2BDwbae7Bvsw=";
   };
 
-  postPatch = ''
-    substituteInPlace src/trio/_tests/test_subprocess.py \
-      --replace "/bin/sleep" "${coreutils}/bin/sleep"
-  '';
+  build-system = [ setuptools ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
-
-  propagatedBuildInputs = [
+  dependencies = [
     attrs
     idna
     outcome
     sniffio
     sortedcontainers
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    exceptiongroup
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ exceptiongroup ];
 
   # tests are failing on Darwin
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   nativeCheckInputs = [
     astor
@@ -103,14 +95,14 @@ buildPythonPackage rec {
     "src/trio/_tests/tools/test_gen_exports.py"
   ];
 
-  pytestFlagsArray = [
-    "-W" "ignore::DeprecationWarning"
-  ];
-
   meta = {
-    description = "An async/await-native I/O library for humans and snake people";
+    changelog = "https://github.com/python-trio/trio/blob/v${version}/docs/source/history.rst";
+    description = "Async/await-native I/O library for humans and snake people";
     homepage = "https://github.com/python-trio/trio";
-    license = with lib.licenses; [ mit asl20 ];
+    license = with lib.licenses; [
+      mit
+      asl20
+    ];
     maintainers = with lib.maintainers; [ catern ];
   };
 }
diff --git a/pkgs/development/python-modules/openai-triton/0000-dont-download-ptxas.patch b/pkgs/development/python-modules/triton/0000-dont-download-ptxas.patch
index d31a4798af05c..d31a4798af05c 100644
--- a/pkgs/development/python-modules/openai-triton/0000-dont-download-ptxas.patch
+++ b/pkgs/development/python-modules/triton/0000-dont-download-ptxas.patch
diff --git a/pkgs/development/python-modules/openai-triton/0001-ptxas-disable-version-key-for-non-cuda-targets.patch b/pkgs/development/python-modules/triton/0001-ptxas-disable-version-key-for-non-cuda-targets.patch
index 3941d54b8b37f..3941d54b8b37f 100644
--- a/pkgs/development/python-modules/openai-triton/0001-ptxas-disable-version-key-for-non-cuda-targets.patch
+++ b/pkgs/development/python-modules/triton/0001-ptxas-disable-version-key-for-non-cuda-targets.patch
diff --git a/pkgs/development/python-modules/triton/bin.nix b/pkgs/development/python-modules/triton/bin.nix
new file mode 100644
index 0000000000000..0189278bc0e9b
--- /dev/null
+++ b/pkgs/development/python-modules/triton/bin.nix
@@ -0,0 +1,97 @@
+{
+  lib,
+  stdenv,
+  addDriverRunpath,
+  cudaPackages,
+  buildPythonPackage,
+  fetchurl,
+  isPy38,
+  isPy39,
+  isPy310,
+  isPy311,
+  python,
+  autoPatchelfHook,
+  filelock,
+  lit,
+  zlib,
+}:
+
+buildPythonPackage rec {
+  pname = "triton";
+  version = "2.1.0";
+  format = "wheel";
+
+  src =
+    let
+      pyVerNoDot = lib.replaceStrings [ "." ] [ "" ] python.pythonVersion;
+      unsupported = throw "Unsupported system";
+      srcs = (import ./binary-hashes.nix version)."${stdenv.system}-${pyVerNoDot}" or unsupported;
+    in
+    fetchurl srcs;
+
+  disabled = !(isPy38 || isPy39 || isPy310 || isPy311);
+
+  pythonRemoveDeps = [
+    "cmake"
+    # torch and triton refer to each other so this hook is included to mitigate that.
+    "torch"
+  ];
+
+  buildInputs = [ zlib ];
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+  ];
+
+  propagatedBuildInputs = [
+    filelock
+    lit
+    zlib
+  ];
+
+  dontStrip = true;
+
+  # If this breaks, consider replacing with "${cuda_nvcc}/bin/ptxas"
+  postFixup =
+    ''
+      chmod +x "$out/${python.sitePackages}/triton/third_party/cuda/bin/ptxas"
+    ''
+    + (
+      let
+        # Bash was getting weird without linting,
+        # but basically upstream contains [cc, ..., "-lcuda", ...]
+        # and we replace it with [..., "-lcuda", "-L/run/opengl-driver/lib", "-L$stubs", ...]
+        old = [ "-lcuda" ];
+        new = [
+          "-lcuda"
+          "-L${addDriverRunpath.driverLink}"
+          "-L${cudaPackages.cuda_cudart}/lib/stubs/"
+        ];
+
+        quote = x: ''"${x}"'';
+        oldStr = lib.concatMapStringsSep ", " quote old;
+        newStr = lib.concatMapStringsSep ", " quote new;
+      in
+      ''
+        substituteInPlace $out/${python.sitePackages}/triton/common/build.py \
+          --replace '${oldStr}' '${newStr}'
+      ''
+    );
+
+  meta = with lib; {
+    description = "Language and compiler for custom Deep Learning operations";
+    homepage = "https://github.com/triton-lang/triton/";
+    changelog = "https://github.com/triton-lang/triton/releases/tag/v${version}";
+    # Includes NVIDIA's ptxas, but redistributions of the binary are not limited.
+    # https://docs.nvidia.com/cuda/eula/index.html
+    # triton's license is MIT.
+    # triton-bin includes ptxas binary, therefore unfreeRedistributable is set.
+    license = with licenses; [
+      unfreeRedistributable
+      mit
+    ];
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ junjihashimoto ];
+  };
+}
diff --git a/pkgs/development/python-modules/openai-triton/binary-hashes.nix b/pkgs/development/python-modules/triton/binary-hashes.nix
index d5f588dc947c7..5c542ac187ee3 100644
--- a/pkgs/development/python-modules/openai-triton/binary-hashes.nix
+++ b/pkgs/development/python-modules/triton/binary-hashes.nix
@@ -5,7 +5,8 @@
 
 # To add a new version, run "prefetch.sh 'new-version'" to paste the generated file as follows.
 
-version : builtins.getAttr version {
+version:
+builtins.getAttr version {
   "2.1.0" = {
     x86_64-linux-38 = {
       name = "triton-2.1.0-cp38-cp38-linux_x86_64.whl";
diff --git a/pkgs/development/python-modules/triton/default.nix b/pkgs/development/python-modules/triton/default.nix
new file mode 100644
index 0000000000000..98585b850e912
--- /dev/null
+++ b/pkgs/development/python-modules/triton/default.nix
@@ -0,0 +1,229 @@
+{
+  lib,
+  config,
+  addDriverRunpath,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  setuptools,
+  cmake,
+  ninja,
+  pybind11,
+  gtest,
+  zlib,
+  ncurses,
+  libxml2,
+  lit,
+  llvm,
+  filelock,
+  torchWithRocm,
+  python,
+
+  runCommand,
+
+  cudaPackages,
+  cudaSupport ? config.cudaSupport,
+}:
+
+let
+  ptxas = lib.getExe' cudaPackages.cuda_nvcc "ptxas"; # Make sure cudaPackages is the right version each update (See python/setup.py)
+in
+buildPythonPackage rec {
+  pname = "triton";
+  version = "2.1.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "openai";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-8UTUwLH+SriiJnpejdrzz9qIquP2zBp1/uwLdHmv0XQ=";
+  };
+
+  patches =
+    [
+      # fix overflow error
+      (fetchpatch {
+        url = "https://github.com/openai/triton/commit/52c146f66b79b6079bcd28c55312fc6ea1852519.patch";
+        hash = "sha256-098/TCQrzvrBAbQiaVGCMaF3o5Yc3yWDxzwSkzIuAtY=";
+      })
+
+      # Upstream startded pinning CUDA version and falling back to downloading from Conda
+      # in https://github.com/triton-lang/triton/pull/1574/files#diff-eb8b42d9346d0a5d371facf21a8bfa2d16fb49e213ae7c21f03863accebe0fcfR120-R123
+      ./0000-dont-download-ptxas.patch
+    ]
+    ++ lib.optionals (!cudaSupport) [
+      # triton wants to get ptxas version even if ptxas is not
+      # used, resulting in ptxas not found error.
+      ./0001-ptxas-disable-version-key-for-non-cuda-targets.patch
+    ];
+
+  postPatch =
+    let
+      quote = x: ''"${x}"'';
+      subs.ldFlags =
+        let
+          # Bash was getting weird without linting,
+          # but basically upstream contains [cc, ..., "-lcuda", ...]
+          # and we replace it with [..., "-lcuda", "-L/run/opengl-driver/lib", "-L$stubs", ...]
+          old = [ "-lcuda" ];
+          new = [
+            "-lcuda"
+            "-L${addDriverRunpath.driverLink}"
+            "-L${cudaPackages.cuda_cudart}/lib/stubs/"
+          ];
+        in
+        {
+          oldStr = lib.concatMapStringsSep ", " quote old;
+          newStr = lib.concatMapStringsSep ", " quote new;
+        };
+    in
+    ''
+      # Use our `cmakeFlags` instead and avoid downloading dependencies
+      substituteInPlace python/setup.py \
+        --replace "= get_thirdparty_packages(triton_cache_path)" "= os.environ[\"cmakeFlags\"].split()"
+
+      # Already defined in llvm, when built with -DLLVM_INSTALL_UTILS
+      substituteInPlace bin/CMakeLists.txt \
+        --replace "add_subdirectory(FileCheck)" ""
+
+      # Don't fetch googletest
+      substituteInPlace unittest/CMakeLists.txt \
+        --replace "include (\''${CMAKE_CURRENT_SOURCE_DIR}/googletest.cmake)" ""\
+        --replace "include(GoogleTest)" "find_package(GTest REQUIRED)"
+
+      cat << \EOF >> python/triton/common/build.py
+      def libcuda_dirs():
+          return [ "${addDriverRunpath.driverLink}/lib" ]
+      EOF
+    ''
+    + lib.optionalString cudaSupport ''
+      # Use our linker flags
+      substituteInPlace python/triton/common/build.py \
+        --replace '${subs.ldFlags.oldStr}' '${subs.ldFlags.newStr}'
+    '';
+
+  nativeBuildInputs = [
+    setuptools
+    # pytestCheckHook # Requires torch (circular dependency) and probably needs GPUs:
+    cmake
+    ninja
+
+    # Note for future:
+    # These *probably* should go in depsTargetTarget
+    # ...but we cannot test cross right now anyway
+    # because we only support cudaPackages on x86_64-linux atm
+    lit
+    llvm
+  ];
+
+  buildInputs = [
+    gtest
+    libxml2.dev
+    ncurses
+    pybind11
+    zlib
+  ];
+
+  propagatedBuildInputs = [
+    filelock
+    # triton uses setuptools at runtime:
+    # https://github.com/NixOS/nixpkgs/pull/286763/#discussion_r1480392652
+    setuptools
+  ];
+
+  NIX_CFLAGS_COMPILE = lib.optionals cudaSupport [
+    # Pybind11 started generating strange errors since python 3.12. Observed only in the CUDA branch.
+    # https://gist.github.com/SomeoneSerge/7d390b2b1313957c378e99ed57168219#file-gistfile0-txt-L1042
+    "-Wno-stringop-overread"
+  ];
+
+  # Avoid GLIBCXX mismatch with other cuda-enabled python packages
+  preConfigure =
+    ''
+      # Ensure that the build process uses the requested number of cores
+      export MAX_JOBS="$NIX_BUILD_CORES"
+
+      # Upstream's setup.py tries to write cache somewhere in ~/
+      export HOME=$(mktemp -d)
+
+      # Upstream's github actions patch setup.cfg to write base-dir. May be redundant
+      echo "
+      [build_ext]
+      base-dir=$PWD" >> python/setup.cfg
+
+      # The rest (including buildPhase) is relative to ./python/
+      cd python
+    ''
+    + lib.optionalString cudaSupport ''
+      export CC=${cudaPackages.backendStdenv.cc}/bin/cc;
+      export CXX=${cudaPackages.backendStdenv.cc}/bin/c++;
+
+      # Work around download_and_copy_ptxas()
+      mkdir -p $PWD/triton/third_party/cuda/bin
+      ln -s ${ptxas} $PWD/triton/third_party/cuda/bin
+    '';
+
+  # CMake is run by setup.py instead
+  dontUseCmakeConfigure = true;
+
+  # Setuptools (?) strips runpath and +x flags. Let's just restore the symlink
+  postFixup = lib.optionalString cudaSupport ''
+    rm -f $out/${python.sitePackages}/triton/third_party/cuda/bin/ptxas
+    ln -s ${ptxas} $out/${python.sitePackages}/triton/third_party/cuda/bin/ptxas
+  '';
+
+  checkInputs = [ cmake ]; # ctest
+  dontUseSetuptoolsCheck = true;
+
+  preCheck = ''
+    # build/temp* refers to build_ext.build_temp (looked up in the build logs)
+    (cd ./build/temp* ; ctest)
+
+    # For pytestCheckHook
+    cd test/unit
+  '';
+
+  # Circular dependency on torch
+  # pythonImportsCheck = [
+  #   "triton"
+  #   "triton.language"
+  # ];
+
+  # Ultimately, torch is our test suite:
+  passthru.tests = {
+    inherit torchWithRocm;
+    # Implemented as alternative to pythonImportsCheck, in case if circular dependency on torch occurs again,
+    # and pythonImportsCheck is commented back.
+    import-triton =
+      runCommand "import-triton"
+        { nativeBuildInputs = [ (python.withPackages (ps: [ ps.triton ])) ]; }
+        ''
+          python << \EOF
+          import triton
+          import triton.language
+          EOF
+          touch "$out"
+        '';
+  };
+
+  pythonRemoveDeps = [
+    # Circular dependency, cf. https://github.com/openai/triton/issues/1374
+    "torch"
+
+    # CLI tools without dist-info
+    "cmake"
+    "lit"
+  ];
+
+  meta = with lib; {
+    description = "Language and compiler for writing highly efficient custom Deep-Learning primitives";
+    homepage = "https://github.com/openai/triton";
+    platforms = platforms.linux;
+    license = licenses.mit;
+    maintainers = with maintainers; [
+      SomeoneSerge
+      Madouura
+    ];
+  };
+}
diff --git a/pkgs/development/python-modules/openai-triton/prefetch.sh b/pkgs/development/python-modules/triton/prefetch.sh
index f218718a5cf30..f218718a5cf30 100755
--- a/pkgs/development/python-modules/openai-triton/prefetch.sh
+++ b/pkgs/development/python-modules/triton/prefetch.sh
diff --git a/pkgs/development/python-modules/tritonclient/default.nix b/pkgs/development/python-modules/tritonclient/default.nix
index f218d02a4e2b5..47c87866aad12 100644
--- a/pkgs/development/python-modules/tritonclient/default.nix
+++ b/pkgs/development/python-modules/tritonclient/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, python-rapidjson
-, numpy
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
+  python-rapidjson,
+  numpy,
   # optional dependencies
-, grpcio
-, packaging
-, aiohttp
-, geventhttpclient
+  grpcio,
+  packaging,
+  aiohttp,
+  geventhttpclient,
 }:
 
 let
@@ -37,9 +38,7 @@ buildPythonPackage {
 
   doCheck = false;
 
-  pythonImportsCheck = [
-    "tritonclient"
-  ];
+  pythonImportsCheck = [ "tritonclient" ];
 
   passthru = {
     optional-dependencies = {
@@ -62,4 +61,3 @@ buildPythonPackage {
     platforms = platforms.linux;
   };
 }
-
diff --git a/pkgs/development/python-modules/troposphere/default.nix b/pkgs/development/python-modules/troposphere/default.nix
index f4645afc461b5..7cfac7521cf9b 100644
--- a/pkgs/development/python-modules/troposphere/default.nix
+++ b/pkgs/development/python-modules/troposphere/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, awacs
-, buildPythonPackage
-, cfn-flip
-, fetchFromGitHub
-, pythonOlder
-, typing-extensions
-, unittestCheckHook
+{
+  lib,
+  awacs,
+  buildPythonPackage,
+  cfn-flip,
+  fetchFromGitHub,
+  pythonOlder,
+  typing-extensions,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "troposphere";
-  version = "4.7.0";
+  version = "4.8.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -19,14 +20,10 @@ buildPythonPackage rec {
     owner = "cloudtools";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-9zzbBtIJ4v+eI0eJZ6vGUABN4i9GLJcMAzerRSnzpqQ=";
+    hash = "sha256-qwU0SsS9qxKtUsZcsMZQ9NqB+Ye8lhDO8tR+ThmoxY8=";
   };
 
-  propagatedBuildInputs = [
-    cfn-flip
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ cfn-flip ] ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
   nativeCheckInputs = [
     awacs
@@ -34,14 +31,10 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    policy = [
-      awacs
-    ];
+    policy = [ awacs ];
   };
 
-  pythonImportsCheck = [
-    "troposphere"
-  ];
+  pythonImportsCheck = [ "troposphere" ];
 
   meta = with lib; {
     description = "Library to create AWS CloudFormation descriptions";
diff --git a/pkgs/development/python-modules/trove-classifiers/default.nix b/pkgs/development/python-modules/trove-classifiers/default.nix
index 64829175c1989..a62a953eda7a0 100644
--- a/pkgs/development/python-modules/trove-classifiers/default.nix
+++ b/pkgs/development/python-modules/trove-classifiers/default.nix
@@ -1,23 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, calver
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  calver,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 let
   self = buildPythonPackage rec {
     pname = "trove-classifiers";
-    version = "2024.3.3";
+    version = "2024.7.2";
     pyproject = true;
 
     disabled = pythonOlder "3.7";
 
     src = fetchPypi {
-      inherit pname version;
-      hash = "sha256-337f+cZ/+GtzNiiZgzCxgOgdElseCWU22DrA/XlnP9w=";
+      pname = "trove_classifiers";
+      inherit version;
+      hash = "sha256-gyjyrCzj/Xc8uzfHZaDteoP4ncVkx9RS8Dm2kknQrDU=";
     };
 
     postPatch = ''
@@ -25,16 +27,14 @@ let
         --replace '"calver"' ""
     '';
 
-    nativeBuildInputs = [
+    build-system = [
       calver
       setuptools
     ];
 
     doCheck = false; # avoid infinite recursion with hatchling
 
-    nativeCheckInputs = [
-      pytestCheckHook
-    ];
+    nativeCheckInputs = [ pytestCheckHook ];
 
     pythonImportsCheck = [ "trove_classifiers" ];
 
@@ -49,4 +49,4 @@ let
     };
   };
 in
-  self
+self
diff --git a/pkgs/development/python-modules/trueskill/default.nix b/pkgs/development/python-modules/trueskill/default.nix
index ae17c8fa83c21..8013f252ac9e7 100644
--- a/pkgs/development/python-modules/trueskill/default.nix
+++ b/pkgs/development/python-modules/trueskill/default.nix
@@ -1,5 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi
-, six }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+}:
 
 buildPythonPackage rec {
   pname = "trueskill";
@@ -11,19 +15,15 @@ buildPythonPackage rec {
     sha256 = "1fv7g1szyjykja9mzax2w4js7jm2z7wwzgnr5dqrsdi84j6v8qlx";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   # Can't build distribute, see https://github.com/NixOS/nixpkgs/pull/49340
   doCheck = false;
 
   meta = with lib; {
-    description = "The video game rating system";
+    description = "Video game rating system";
     homepage = "https://trueskill.org";
     license = licenses.bsd3;
-    maintainers = with maintainers; [
-      eadwu
-    ];
+    maintainers = with maintainers; [ eadwu ];
   };
 }
diff --git a/pkgs/development/python-modules/truncnorm/default.nix b/pkgs/development/python-modules/truncnorm/default.nix
new file mode 100644
index 0000000000000..b9b9d77b22f66
--- /dev/null
+++ b/pkgs/development/python-modules/truncnorm/default.nix
@@ -0,0 +1,44 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  numpy,
+  scipy,
+}:
+
+buildPythonPackage rec {
+  pname = "truncnorm";
+  version = "0.0.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "jluttine";
+    repo = "truncnorm";
+    rev = "refs/tags/${version}";
+    hash = "sha256-F+RBXN/pjxmHf26/Vxptz1NbF58eqU018l3zmepSoJk=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    numpy
+    scipy
+  ];
+
+  # No checks
+  doCheck = false;
+
+  pythonImportsCheck = [ "truncnorm" ];
+
+  meta = with lib; {
+    homepage = "https://pypi.org/project/truncnorm";
+    description = "Moments for doubly truncated multivariate normal distributions";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jluttine ];
+  };
+}
diff --git a/pkgs/development/python-modules/trustme/default.nix b/pkgs/development/python-modules/trustme/default.nix
index 4648dd75a26e1..297a666dc5b35 100644
--- a/pkgs/development/python-modules/trustme/default.nix
+++ b/pkgs/development/python-modules/trustme/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchPypi
-, idna
-, pyopenssl
-, pytestCheckHook
-, pythonOlder
-, service-identity
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  idna,
+  pyopenssl,
+  pytestCheckHook,
+  pythonOlder,
+  service-identity,
 }:
 
 buildPythonPackage rec {
@@ -35,15 +36,16 @@ buildPythonPackage rec {
   # Some of the tests use localhost networking.
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [
-    "trustme"
-  ];
+  pythonImportsCheck = [ "trustme" ];
 
   meta = with lib; {
     description = "High quality TLS certs while you wait, for the discerning tester";
     homepage = "https://github.com/python-trio/trustme";
     changelog = "https://trustme.readthedocs.io/en/latest/#change-history";
-    license = with licenses; [ mit asl20 ];
+    license = with licenses; [
+      mit
+      asl20
+    ];
     maintainers = with maintainers; [ catern ];
   };
 }
diff --git a/pkgs/development/python-modules/truststore/default.nix b/pkgs/development/python-modules/truststore/default.nix
index 961799efeb725..820d823f81468 100644
--- a/pkgs/development/python-modules/truststore/default.nix
+++ b/pkgs/development/python-modules/truststore/default.nix
@@ -1,34 +1,33 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, httpx
-, pyopenssl
-, pythonOlder
-, requests
-, trustme
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  httpx,
+  pyopenssl,
+  pythonOlder,
+  requests,
+  trustme,
 }:
 
 buildPythonPackage rec {
   pname = "truststore";
-  version = "0.8.0";
-  format = "pyproject";
+  version = "0.9.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "sethmlarson";
-    repo = pname;
+    repo = "truststore";
     rev = "refs/tags/v${version}";
-    hash = "sha256-K11nHzpckNR8pqmgLOo/yCJ2cNQnqPHgjMDPQkpeRkQ=";
+    hash = "sha256-BP88oQ363XFuRMKZqW8wSm1wl5upU+yEgmwktv65JOU=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     httpx
     pyopenssl
@@ -36,16 +35,14 @@ buildPythonPackage rec {
     trustme
   ];
 
-  # tests requires networking
+  # Tests requires networking
   doCheck = false;
 
-  pythonImportsCheck = [
-    "truststore"
-  ];
+  pythonImportsCheck = [ "truststore" ];
 
   meta = with lib; {
-    homepage = "https://github.com/sethmlarson/truststore";
     description = "Verify certificates using native system trust stores";
+    homepage = "https://github.com/sethmlarson/truststore";
     changelog = "https://github.com/sethmlarson/truststore/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ anthonyroussel ];
diff --git a/pkgs/development/python-modules/trytond/default.nix b/pkgs/development/python-modules/trytond/default.nix
index 5e89da7f35049..b12ef6e9061ea 100644
--- a/pkgs/development/python-modules/trytond/default.nix
+++ b/pkgs/development/python-modules/trytond/default.nix
@@ -1,63 +1,68 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, defusedxml
-, lxml
-, relatorio
-, genshi
-, python-dateutil
-, polib
-, python-sql
-, werkzeug
-, wrapt
-, passlib
-, pydot
-, levenshtein
-, html2text
-, weasyprint
-, gevent
-, pillow
-, withPostgresql ? true
-, psycopg2
-, unittestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  defusedxml,
+  lxml,
+  relatorio,
+  genshi,
+  python-dateutil,
+  polib,
+  python-sql,
+  werkzeug,
+  passlib,
+  pydot,
+  levenshtein,
+  html2text,
+  weasyprint,
+  gevent,
+  pillow,
+  withPostgresql ? true,
+  psycopg2,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "trytond";
-  version = "7.0.9";
-  format = "setuptools";
+  version = "7.2.6";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-DlPuIaGTpJu4FyLOTNAy2CAEJHoe7+8e34wacz8C7d8=";
+    hash = "sha256-Vz1bYIwhvH8SHZnmv9ZuaoOnNe378gtIWK2UQDBQxas=";
   };
 
-  propagatedBuildInputs = [
-    defusedxml
-    lxml
-    relatorio
-    genshi
-    python-dateutil
-    polib
-    python-sql
-    werkzeug
-    wrapt
-    passlib
+  build-system = [ setuptools ];
 
-    # extra dependencies
-    pydot
-    levenshtein
-    html2text
-    weasyprint
-    gevent
-    pillow
-  ] ++ relatorio.optional-dependencies.fodt
-  ++ passlib.optional-dependencies.bcrypt
-  ++ passlib.optional-dependencies.argon2
-  ++ lib.optional withPostgresql psycopg2;
+  dependencies =
+    [
+      defusedxml
+      lxml
+      relatorio
+      genshi
+      python-dateutil
+      polib
+      python-sql
+      werkzeug
+      passlib
+
+      # extra dependencies
+      pydot
+      levenshtein
+      html2text
+      weasyprint
+      gevent
+      pillow
+    ]
+    ++ relatorio.optional-dependencies.fodt
+    ++ passlib.optional-dependencies.bcrypt
+    ++ passlib.optional-dependencies.argon2
+    ++ lib.optional withPostgresql psycopg2;
 
   nativeCheckInputs = [ unittestCheckHook ];
 
@@ -67,10 +72,13 @@ buildPythonPackage rec {
     export DB_NAME=":memory:";
   '';
 
-  unittestFlagsArray = [ "-s" "trytond.tests" ];
+  unittestFlagsArray = [
+    "-s"
+    "trytond.tests"
+  ];
 
   meta = with lib; {
-    description = "The server of the Tryton application platform";
+    description = "Server of the Tryton application platform";
     longDescription = ''
       The server for Tryton, a three-tier high-level general purpose
       application platform under the license GPL-3 written in Python and using
@@ -82,6 +90,10 @@ buildPythonPackage rec {
     homepage = "http://www.tryton.org/";
     changelog = "https://foss.heptapod.net/tryton/tryton/-/blob/trytond-${version}/trytond/CHANGELOG?ref_type=tags";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ udono johbo ];
+    broken = stdenv.hostPlatform.isDarwin;
+    maintainers = with maintainers; [
+      udono
+      johbo
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/ts1-signatures/default.nix b/pkgs/development/python-modules/ts1-signatures/default.nix
new file mode 100644
index 0000000000000..a0d94e3b3ab34
--- /dev/null
+++ b/pkgs/development/python-modules/ts1-signatures/default.nix
@@ -0,0 +1,44 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  dpkt,
+  pyyaml,
+  pythonOlder,
+  pytestCheckHook,
+}:
+buildPythonPackage {
+  pname = "ts1-signatures";
+  version = "0-unstable-2024-08-10";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "yifeikong";
+    repo = "th1";
+    rev = "efa682bd37c668ae00d2225deb753e01f6cd1406";
+    hash = "sha256-fz5EFPO5UPPbFnqe4wE1y2lIROPByse9awyBa49o8ZE=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    dpkt
+    pyyaml
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  disabledTests = [
+    "test_nghttpd_log_parsing" # Attempts to load things from logs/ which it cannot find for some reason.
+  ];
+
+  meta = {
+    description = "TLS and HTTP signature and fingerprint library";
+    homepage = "https://github.com/yifeikong/th1";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ ggg ];
+  };
+}
diff --git a/pkgs/development/python-modules/tsfresh/default.nix b/pkgs/development/python-modules/tsfresh/default.nix
index 42cd12eb9d00f..045385e9fa1be 100644
--- a/pkgs/development/python-modules/tsfresh/default.nix
+++ b/pkgs/development/python-modules/tsfresh/default.nix
@@ -1,27 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, requests
-, numpy
-, pandas
-, scipy
-, statsmodels
-, patsy
-, scikit-learn
-, tqdm
-, dask
-, distributed
-, stumpy
-, cloudpickle
-, pytestCheckHook
-, pytest-xdist
-, mock
-, matplotlib
-, seaborn
-, ipython
-, notebook
-, pandas-datareader
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
+  numpy,
+  pandas,
+  scipy,
+  statsmodels,
+  patsy,
+  scikit-learn,
+  tqdm,
+  dask,
+  distributed,
+  stumpy,
+  cloudpickle,
+  pytestCheckHook,
+  pytest-xdist,
+  mock,
+  matplotlib,
+  seaborn,
+  ipython,
+  notebook,
+  pandas-datareader,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/tskit/default.nix b/pkgs/development/python-modules/tskit/default.nix
index c76b3c4972958..0299fea08e5aa 100644
--- a/pkgs/development/python-modules/tskit/default.nix
+++ b/pkgs/development/python-modules/tskit/default.nix
@@ -1,31 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, pythonOlder
-, numpy
-, jsonschema
-, svgwrite
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pythonOlder,
+  numpy,
+  jsonschema,
+  svgwrite,
 }:
 
 buildPythonPackage rec {
   pname = "tskit";
-  version = "0.5.6";
-  format = "pyproject";
+  version = "0.5.7";
+  pyproject = true;
+
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-3f4hPxywY822mCF3IwooBezX38fM1zAm4Th4q//SzkY=";
+    hash = "sha256-yD+2W1tzzi+5wFoZrqNe+jJLpWyx6ZILBgKivDE+wiM=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    numpy
+  dependencies = [
     jsonschema
+    numpy
     svgwrite
   ];
 
@@ -33,15 +33,13 @@ buildPythonPackage rec {
   # will ask upstream to include tests in pypi
   doCheck = false;
 
-  pythonImportsCheck = [
-    "tskit"
-  ];
+  pythonImportsCheck = [ "tskit" ];
 
-  meta = with lib; {
-    description = "The tree sequence toolkit";
+  meta = {
+    description = "Tree sequence toolkit";
     mainProgram = "tskit";
     homepage = "https://github.com/tskit-dev/tskit";
-    license = licenses.mit;
-    maintainers = with maintainers; [ alxsimon ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ alxsimon ];
   };
 }
diff --git a/pkgs/development/python-modules/ttach/default.nix b/pkgs/development/python-modules/ttach/default.nix
index 39d504cf1b46d..dc0ef4e251aa8 100644
--- a/pkgs/development/python-modules/ttach/default.nix
+++ b/pkgs/development/python-modules/ttach/default.nix
@@ -1,9 +1,10 @@
-{ fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, torch
-, buildPythonPackage
-, lib
+{
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  torch,
+  buildPythonPackage,
+  lib,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/ttfautohint-py/default.nix b/pkgs/development/python-modules/ttfautohint-py/default.nix
new file mode 100644
index 0000000000000..98358555eed62
--- /dev/null
+++ b/pkgs/development/python-modules/ttfautohint-py/default.nix
@@ -0,0 +1,54 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+  setuptools-scm,
+  distutils,
+  ttfautohint,
+  fonttools,
+}:
+
+buildPythonPackage rec {
+  pname = "ttfautohint-py";
+  version = "0.5.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "fonttools";
+    repo = "ttfautohint-py";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-NTog461RpyHKo/Qpicj3tflehaKj9LlZEN9qeCMM6JQ=";
+  };
+
+  postPatch = ''
+    substituteInPlace src/python/ttfautohint/__init__.py \
+      --replace-fail 'find_library("ttfautohint")' '"${lib.getLib ttfautohint}/lib/libttfautohint.so"'
+  '';
+
+  env.TTFAUTOHINTPY_BUNDLE_DLL = false;
+
+  build-system = [
+    setuptools
+    setuptools-scm
+    distutils
+  ];
+
+  buildInputs = [ ttfautohint ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    fonttools
+  ];
+
+  pythonImportsCheck = [ "ttfautohint" ];
+
+  meta = {
+    description = "Python wrapper for ttfautohint, a free auto-hinter for TrueType fonts";
+    homepage = "https://github.com/fonttools/ttfautohint-py";
+    changelog = "https://github.com/fonttools/ttfautohint-py/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ jopejoe1 ];
+  };
+}
diff --git a/pkgs/development/python-modules/ttls/default.nix b/pkgs/development/python-modules/ttls/default.nix
index c3f18f3d5d40a..bf1379dd2bcc6 100644
--- a/pkgs/development/python-modules/ttls/default.nix
+++ b/pkgs/development/python-modules/ttls/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, colour
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  colour,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "ttls";
-  version = "1.8.2";
+  version = "1.8.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -19,12 +20,10 @@ buildPythonPackage rec {
     owner = "jschlyter";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-i9vJr7uTpkUZ9WiL0BGidIgCdG87k8JnmZuPqt6qLQE=";
+    hash = "sha256-1RctamOSnpZ+bcfwnCsj4OAR7KYzf0XQtSe7MTFMGy4=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -35,9 +34,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ttls"
-  ];
+  pythonImportsCheck = [ "ttls" ];
 
   meta = with lib; {
     description = "Module to interact with Twinkly LEDs";
diff --git a/pkgs/development/python-modules/ttn-client/default.nix b/pkgs/development/python-modules/ttn-client/default.nix
index 515f616dbe24a..bba8ef790e7c5 100644
--- a/pkgs/development/python-modules/ttn-client/default.nix
+++ b/pkgs/development/python-modules/ttn-client/default.nix
@@ -1,40 +1,42 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "ttn-client";
-  version = "0.0.4";
+  version = "1.2.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "angelnu";
     repo = "thethingsnetwork_python_client";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ZLSMxFyzfPtz51fsY2wgucHzcAnSrL7VPOuW7DXTNbQ=";
+    hash = "sha256-dWEXoqW4JyYeLFLS3J4CaRJ45wjdVf8wrtMGCKgBds8=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  dependencies = [ aiohttp ];
 
-  checkInputs = [
+  nativeCheckInputs = [
+    pytest-asyncio
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "ttn_client"
+  pythonImportsCheck = [ "ttn_client" ];
+
+  disabledTests = [
+    # Test require network access
+    "test_connection_auth_error"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/ttp-templates/default.nix b/pkgs/development/python-modules/ttp-templates/default.nix
index 292d598e9d61c..e22190ff82d94 100644
--- a/pkgs/development/python-modules/ttp-templates/default.nix
+++ b/pkgs/development/python-modules/ttp-templates/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-Pntm/wUv/K0ci8U/+nBUVszuX8KT95gyp+i2N6NshKo=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   postPatch = ''
     # Drop circular dependency on ttp
diff --git a/pkgs/development/python-modules/ttp/default.nix b/pkgs/development/python-modules/ttp/default.nix
index 3df86d13cf3a0..700f97a68b5f2 100644
--- a/pkgs/development/python-modules/ttp/default.nix
+++ b/pkgs/development/python-modules/ttp/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, cerberus
-, configparser
-, deepdiff
-, fetchFromGitHub
-, geoip2
-, jinja2
-, netmiko
-, openpyxl
-, pytestCheckHook
-, poetry-core
-, pyyaml
-, tabulate
-, ttp-templates
-, yangson
+{
+  lib,
+  buildPythonPackage,
+  cerberus,
+  configparser,
+  deepdiff,
+  fetchFromGitHub,
+  geoip2,
+  jinja2,
+  netmiko,
+  openpyxl,
+  pytestCheckHook,
+  poetry-core,
+  pyyaml,
+  tabulate,
+  ttp-templates,
+  yangson,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     hash = "sha256-IWqPFspERBVkjsTYTAkOTOrugq4fD65Q140G3SCEV0w=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     # https://github.com/dmulyalin/ttp/blob/master/docs/source/Installation.rst#additional-dependencies
@@ -47,9 +46,7 @@ buildPythonPackage rec {
     yangson
   ];
 
-  pythonImportsCheck = [
-    "ttp"
-  ];
+  pythonImportsCheck = [ "ttp" ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -97,9 +94,7 @@ buildPythonPackage rec {
     "test_ttp_templates_dir_env_variable"
   ];
 
-  pytestFlagsArray = [
-    "test/pytest"
-  ];
+  pytestFlagsArray = [ "test/pytest" ];
 
   meta = with lib; {
     changelog = "https://github.com/dmulyalin/ttp/releases/tag/${version}";
@@ -107,6 +102,6 @@ buildPythonPackage rec {
     mainProgram = "ttp";
     homepage = "https://github.com/dmulyalin/ttp";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ttstokenizer/default.nix b/pkgs/development/python-modules/ttstokenizer/default.nix
index 554e0341fb164..d8ab25b942192 100644
--- a/pkgs/development/python-modules/ttstokenizer/default.nix
+++ b/pkgs/development/python-modules/ttstokenizer/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, anyascii
-, inflect
-, nltk
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  anyascii,
+  inflect,
+  nltk,
+  numpy,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/tubes/default.nix b/pkgs/development/python-modules/tubes/default.nix
index 28d7b7bc4be22..df51ef91265ae 100644
--- a/pkgs/development/python-modules/tubes/default.nix
+++ b/pkgs/development/python-modules/tubes/default.nix
@@ -1,19 +1,30 @@
-{ lib, buildPythonPackage, fetchPypi, python
-, characteristic, six, twisted
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  characteristic,
+  six,
+  twisted,
 }:
 
 buildPythonPackage rec {
   pname = "tubes";
-  version = "0.2.1";
+  version = "0.2.1-unstable-2023-11-06";
   format = "setuptools";
 
-  src = fetchPypi {
-    pname = "Tubes";
-    inherit version;
-    hash = "sha256-WbkZfy+m9/xrwygd5VeXrccpu3XJxhO09tbEFZnw14s=";
+  src = fetchFromGitHub {
+    owner = "twisted";
+    repo = "tubes";
+    rev = "b74680b8e7bcfe64362865356bb9461b77bbd5c0";
+    hash = "sha256-E8brnt8CtTEEP1KQTsTsgnl54H4zRGp+1IuoI/Qf5NA=";
   };
 
-  propagatedBuildInputs = [ characteristic six twisted ];
+  propagatedBuildInputs = [
+    characteristic
+    six
+    twisted
+  ];
 
   checkPhase = ''
     ${python.interpreter} -m twisted.trial -j $NIX_BUILD_CORES tubes
@@ -22,9 +33,9 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "tubes" ];
 
   meta = with lib; {
-    description = "a data-processing and flow-control engine for event-driven programs";
-    homepage    = "https://github.com/twisted/tubes";
-    license     = licenses.mit;
+    description = "Data-processing and flow-control engine for event-driven programs";
+    homepage = "https://github.com/twisted/tubes";
+    license = licenses.mit;
     maintainers = with maintainers; [ exarkun ];
   };
 }
diff --git a/pkgs/development/python-modules/tubeup/default.nix b/pkgs/development/python-modules/tubeup/default.nix
index 463b89017cb3c..3d5384614c3c4 100644
--- a/pkgs/development/python-modules/tubeup/default.nix
+++ b/pkgs/development/python-modules/tubeup/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, internetarchive
-, fetchPypi
-, yt-dlp
-, docopt
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  internetarchive,
+  fetchPypi,
+  yt-dlp,
+  docopt,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,12 +17,9 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-Pp4h0MBoYhczmxPq21cLiYpLUeFP+2JoACcFpBl3b0E=";
+    hash = "sha256-Pp4h0MBoYhczmxPq21cLiYpLUeFP+2JoACcFpBl3b0E=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   propagatedBuildInputs = [
     internetarchive
@@ -30,13 +27,9 @@ buildPythonPackage rec {
     yt-dlp
   ];
 
-  pythonRelaxDeps = [
-    "docopt"
-  ];
+  pythonRelaxDeps = [ "docopt" ];
 
-  pythonImportsCheck = [
-    "tubeup"
-  ];
+  pythonImportsCheck = [ "tubeup" ];
 
   # Tests failing upstream
   doCheck = false;
@@ -47,6 +40,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/bibanon/tubeup";
     changelog = "https://github.com/bibanon/tubeup/releases/tag/${version}";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/tuf/default.nix b/pkgs/development/python-modules/tuf/default.nix
index 2572c4ed8cd74..984bd6f54c4b9 100644
--- a/pkgs/development/python-modules/tuf/default.nix
+++ b/pkgs/development/python-modules/tuf/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, ed25519
-, fetchFromGitHub
-, hatchling
-, pytestCheckHook
-, pythonOlder
-, requests
-, securesystemslib
+{
+  lib,
+  buildPythonPackage,
+  ed25519,
+  fetchFromGitHub,
+  hatchling,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  securesystemslib,
 }:
 
 buildPythonPackage rec {
@@ -28,24 +29,19 @@ buildPythonPackage rec {
       --replace-fail "hatchling==" "hatchling>="
   '';
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     requests
     securesystemslib
-  ] ++ securesystemslib.optional-dependencies.pynacl
-  ++ securesystemslib.optional-dependencies.crypto;
+  ] ++ securesystemslib.optional-dependencies.pynacl ++ securesystemslib.optional-dependencies.crypto;
 
   nativeCheckInputs = [
     ed25519
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "tuf"
-  ];
+  pythonImportsCheck = [ "tuf" ];
 
   preCheck = ''
     cd tests
@@ -55,7 +51,10 @@ buildPythonPackage rec {
     description = "Python reference implementation of The Update Framework (TUF)";
     homepage = "https://github.com/theupdateframework/python-tuf";
     changelog = "https://github.com/theupdateframework/python-tuf/blob/v${version}/docs/CHANGELOG.md";
-    license = with licenses; [ asl20 mit ];
+    license = with licenses; [
+      asl20
+      mit
+    ];
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/tunigo/default.nix b/pkgs/development/python-modules/tunigo/default.nix
index 600228b0d66f7..034aed0251b31 100644
--- a/pkgs/development/python-modules/tunigo/default.nix
+++ b/pkgs/development/python-modules/tunigo/default.nix
@@ -1,4 +1,12 @@
-{ lib, buildPythonPackage, fetchFromGitHub, requests, mock, responses, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  mock,
+  responses,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "tunigo";
@@ -14,7 +22,11 @@ buildPythonPackage rec {
     sha256 = "07q9girrjjffzkn8xj4l3ynf9m4psi809zf6f81f54jdb330p2fs";
   };
 
-  nativeCheckInputs = [ mock responses pytest ];
+  nativeCheckInputs = [
+    mock
+    responses
+    pytest
+  ];
 
   checkPhase = ''
     py.test
diff --git a/pkgs/development/python-modules/turnt/default.nix b/pkgs/development/python-modules/turnt/default.nix
index 27aaee039d3bf..abed46cc766ec 100644
--- a/pkgs/development/python-modules/turnt/default.nix
+++ b/pkgs/development/python-modules/turnt/default.nix
@@ -1,20 +1,25 @@
-{ lib, buildPythonPackage, fetchPypi, flit, click, tomli }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  click,
+  tomli,
+}:
 
 buildPythonPackage rec {
   pname = "turnt";
-  version = "1.11.0";
-  format = "pyproject";
+  version = "1.12.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-XN+qzRgZMSdeBmW0OM36mQ79sRCuP8E++SqH8FOoEq0=";
+    hash = "sha256-4K7cqGwKErGbZ+dxVa06v8aIfrpVLC293d29QT+vsBw=";
   };
 
-  nativeBuildInputs = [
-    flit
-  ];
+  build-system = [ flit-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     click
     tomli
   ];
diff --git a/pkgs/development/python-modules/tuya-device-sharing-sdk/default.nix b/pkgs/development/python-modules/tuya-device-sharing-sdk/default.nix
index dd95baba855d4..c831f7a0108cd 100644
--- a/pkgs/development/python-modules/tuya-device-sharing-sdk/default.nix
+++ b/pkgs/development/python-modules/tuya-device-sharing-sdk/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, requests
-, paho-mqtt
-, cryptography
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  requests,
+  paho-mqtt,
+  cryptography,
 }:
 let
   pname = "tuya-device-sharing-sdk";
-  version = "0.2.0";
+  version = "0.1.9";
 in
 buildPythonPackage {
   inherit pname version;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-fu8zh59wlnxtstNbNL8mIm10tiXy22oPbi6oUy5x8c8=";
+    hash = "sha256-mBKR+ttBo0VF33pEmYdjbyM4bGgyDiYexIIsf8mXZW4=";
   };
 
   # workaround needed, upstream issue: https://github.com/tuya/tuya-device-sharing-sdk/issues/10
@@ -23,9 +24,7 @@ buildPythonPackage {
     touch requirements.txt
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     requests
diff --git a/pkgs/development/python-modules/tuya-iot-py-sdk/default.nix b/pkgs/development/python-modules/tuya-iot-py-sdk/default.nix
index d1b9d482da1de..cf8c96e1b1439 100644
--- a/pkgs/development/python-modules/tuya-iot-py-sdk/default.nix
+++ b/pkgs/development/python-modules/tuya-iot-py-sdk/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, paho-mqtt
-, pycryptodome
-, pythonOlder
-, requests
-, websocket-client
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  paho-mqtt,
+  pycryptodome,
+  pythonOlder,
+  requests,
+  websocket-client,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/tuyaha/default.nix b/pkgs/development/python-modules/tuyaha/default.nix
index 5973b763ef636..eb56f96547d6f 100644
--- a/pkgs/development/python-modules/tuyaha/default.nix
+++ b/pkgs/development/python-modules/tuyaha/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/tvdb-api/default.nix b/pkgs/development/python-modules/tvdb-api/default.nix
index f4255d8e854b7..31877a0e58d90 100644
--- a/pkgs/development/python-modules/tvdb-api/default.nix
+++ b/pkgs/development/python-modules/tvdb-api/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests-cache
-, pytest
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests-cache,
+  pytest,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/tweedledum/default.nix b/pkgs/development/python-modules/tweedledum/default.nix
index bc4808a268cb6..bb7f83599ecdb 100644
--- a/pkgs/development/python-modules/tweedledum/default.nix
+++ b/pkgs/development/python-modules/tweedledum/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, cmake
-, ninja
-, scikit-build
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cmake,
+  ninja,
+  scikit-build,
   # Check Inputs
-, pytestCheckHook
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -14,7 +14,7 @@ buildPythonPackage rec {
   version = "1.1.1";
   format = "pyproject";
 
-  src = fetchFromGitHub{
+  src = fetchFromGitHub {
     owner = "boschmitt";
     repo = "tweedledum";
     rev = "v${version}";
@@ -26,7 +26,11 @@ buildPythonPackage rec {
     sed -i '/\[project\]/a name = "tweedledum"' pyproject.toml
   '';
 
-  nativeBuildInputs = [ cmake ninja scikit-build ];
+  nativeBuildInputs = [
+    cmake
+    ninja
+    scikit-build
+  ];
   dontUseCmakeConfigure = true;
 
   pythonImportsCheck = [ "tweedledum" ];
@@ -35,9 +39,9 @@ buildPythonPackage rec {
   pytestFlagsArray = [ "python/test" ];
 
   meta = with lib; {
-    description = "A library for synthesizing and manipulating quantum circuits";
+    description = "Library for synthesizing and manipulating quantum circuits";
     homepage = "https://github.com/boschmitt/tweedledum";
-    license = licenses.mit ;
+    license = licenses.mit;
     maintainers = with maintainers; [ drewrisinger ];
   };
 }
diff --git a/pkgs/development/python-modules/tweepy/default.nix b/pkgs/development/python-modules/tweepy/default.nix
index 4b83122575921..4d368b403a1ea 100644
--- a/pkgs/development/python-modules/tweepy/default.nix
+++ b/pkgs/development/python-modules/tweepy/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiohttp
-, async-lru
-, buildPythonPackage
-, fetchFromGitHub
-, oauthlib
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-oauthlib
-, six
-, vcrpy
+{
+  lib,
+  aiohttp,
+  async-lru,
+  buildPythonPackage,
+  fetchFromGitHub,
+  oauthlib,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-oauthlib,
+  six,
+  vcrpy,
 }:
 
 buildPythonPackage rec {
@@ -40,15 +41,11 @@ buildPythonPackage rec {
     vcrpy
   ];
 
-  pythonImportsCheck = [
-    "tweepy"
-  ];
+  pythonImportsCheck = [ "tweepy" ];
 
   # The checks with streaming fail due to (seemingly) not decoding (or unexpectedly sending response in) GZIP
   # Same issue impacted mastodon-py, see https://github.com/halcy/Mastodon.py/commit/cd86887d88bbc07de462d1e00a8fbc3d956c0151 (who just disabled these)
-  disabledTestPaths = [
-    "tests/test_client.py"
-  ];
+  disabledTestPaths = [ "tests/test_client.py" ];
 
   disabledTests = [
     "test_indicate_direct_message_typing"
diff --git a/pkgs/development/python-modules/twentemilieu/default.nix b/pkgs/development/python-modules/twentemilieu/default.nix
index 389f31ba89bf0..5148a25e9ffaf 100644
--- a/pkgs/development/python-modules/twentemilieu/default.nix
+++ b/pkgs/development/python-modules/twentemilieu/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, aiohttp
-, yarl
-, aresponses
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  aiohttp,
+  yarl,
+  aresponses,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
       --replace '"0.0.0"' '"${version}"'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -45,9 +44,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "twentemilieu"
-  ];
+  pythonImportsCheck = [ "twentemilieu" ];
 
   meta = with lib; {
     description = "Python client for Twente Milieu";
diff --git a/pkgs/development/python-modules/twiggy/default.nix b/pkgs/development/python-modules/twiggy/default.nix
index d25fd36a0d919..1c1759aeb8152 100644
--- a/pkgs/development/python-modules/twiggy/default.nix
+++ b/pkgs/development/python-modules/twiggy/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -21,8 +22,7 @@ buildPythonPackage rec {
     homepage = "http://twiggy.wearpants.org";
     # Taken from http://i.wearpants.org/blog/meet-twiggy/
     description = "Twiggy is the first totally new design for a logger since log4j";
-    license     = licenses.bsd3;
+    license = licenses.bsd3;
     maintainers = with maintainers; [ pierron ];
   };
-
 }
diff --git a/pkgs/development/python-modules/twilio/default.nix b/pkgs/development/python-modules/twilio/default.nix
index 5558ce327290d..ab1e50d869008 100644
--- a/pkgs/development/python-modules/twilio/default.nix
+++ b/pkgs/development/python-modules/twilio/default.nix
@@ -20,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "twilio";
-  version = "9.0.5";
+  version = "9.3.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -29,7 +29,7 @@ buildPythonPackage rec {
     owner = "twilio";
     repo = "twilio-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-q7tY44L8KA29HeoLBJf75Xp3IZSiT5DOkhtZ+7BD7Hg=";
+    hash = "sha256-XAJmAdwBF6HM0E89gAP4AOg1vepumJ8O39V0lKr9iDw=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/twill/default.nix b/pkgs/development/python-modules/twill/default.nix
index 08e8ad74de225..8b5144e74eccd 100644
--- a/pkgs/development/python-modules/twill/default.nix
+++ b/pkgs/development/python-modules/twill/default.nix
@@ -7,28 +7,26 @@
   pyparsing,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
   quixote,
   setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "twill";
-  version = "3.2.4";
+  version = "3.2.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-YlZKvOGxLWwGh+MqCXf8tfruxLK60H73k1VQhGOSTc8=";
+    hash = "sha256-/WIcM/zQ2UjGlGiJRYg9iTCQayzisxGBa5P0/2FDK2Q=";
   };
 
   pythonRelaxDeps = [ "lxml" ];
 
   build-system = [ setuptools ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     httpx
@@ -49,7 +47,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "twill" ];
 
   meta = with lib; {
-    description = "A simple scripting language for Web browsing";
+    description = "Simple scripting language for Web browsing";
     homepage = "https://twill-tools.github.io/twill/";
     changelog = "https://github.com/twill-tools/twill/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/twine/default.nix b/pkgs/development/python-modules/twine/default.nix
index e61ae137679dd..2002f84439d46 100644
--- a/pkgs/development/python-modules/twine/default.nix
+++ b/pkgs/development/python-modules/twine/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, importlib-metadata
-, keyring
-, pkginfo
-, readme-renderer
-, requests
-, requests-toolbelt
-, rich
-, rfc3986
-, setuptools-scm
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  importlib-metadata,
+  keyring,
+  pkginfo,
+  readme-renderer,
+  requests,
+  requests-toolbelt,
+  rich,
+  rfc3986,
+  setuptools-scm,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "twine";
-  version = "5.0.0";
+  version = "5.1.0";
   format = "pyproject";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ibDMfTcKS2ZCHMYQLyaaqRD+DxhhwST1c88t3tvBDPQ=";
+    hash = "sha256-TXR3DIjE/K+BNNKmqdhj5A8IJV/32OKss8u9V9Jfbp0=";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/twinkly-client/default.nix b/pkgs/development/python-modules/twinkly-client/default.nix
index d9931c044ba9a..4f348b29a0ee8 100644
--- a/pkgs/development/python-modules/twinkly-client/default.nix
+++ b/pkgs/development/python-modules/twinkly-client/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-F/N6yMOvLHIfXvPyR7z3P/Rlh79OvCbvEiNwClLSLl8=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "twinkly_client"
-  ];
+  pythonImportsCheck = [ "twinkly_client" ];
 
   meta = with lib; {
     description = "Python module to communicate with Twinkly LED strings";
diff --git a/pkgs/development/python-modules/twisted/default.nix b/pkgs/development/python-modules/twisted/default.nix
index d919aa568d9dd..100a7d42d201b 100644
--- a/pkgs/development/python-modules/twisted/default.nix
+++ b/pkgs/development/python-modules/twisted/default.nix
@@ -1,60 +1,61 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, fetchpatch
-, python
-
-# build-system
-, hatchling
-, hatch-fancy-pypi-readme
-
-# dependencies
-, attrs
-, automat
-, constantly
-, hyperlink
-, incremental
-, typing-extensions
-, zope-interface
-
-# optional-dependencies
-, appdirs
-, bcrypt
-, cryptography
-, h2
-, idna
-, priority
-, pyasn1
-, pyopenssl
-, pyserial
-, service-identity
-
-# tests
-, cython-test-exception-raiser
-, git
-, glibcLocales
-, pyhamcrest
-, hypothesis
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  fetchpatch,
+  python,
+
+  # build-system
+  hatchling,
+  hatch-fancy-pypi-readme,
+
+  # dependencies
+  attrs,
+  automat,
+  constantly,
+  hyperlink,
+  incremental,
+  typing-extensions,
+  zope-interface,
+
+  # optional-dependencies
+  appdirs,
+  bcrypt,
+  cryptography,
+  h2,
+  idna,
+  priority,
+  pyasn1,
+  pyopenssl,
+  pyserial,
+  service-identity,
+
+  # tests
+  cython-test-exception-raiser,
+  git,
+  glibcLocales,
+  pyhamcrest,
+  hypothesis,
 
   # for passthru.tests
-, cassandra-driver
-, klein
-, magic-wormhole
-, scrapy
-, treq
-, txaio
-, txamqp
-, txrequests
-, txtorcon
-, thrift
-, nixosTests
+  cassandra-driver,
+  klein,
+  magic-wormhole,
+  scrapy,
+  treq,
+  txaio,
+  txamqp,
+  txrequests,
+  txtorcon,
+  thrift,
+  nixosTests,
 }:
 
 buildPythonPackage rec {
   pname = "twisted";
-  version = "24.3.0";
+  version = "24.7.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -62,7 +63,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     inherit pname version;
     extension = "tar.gz";
-    hash = "sha256-azi27Ocpa14SLJ6xfaLuqz2YoZj1DKnv0A+wPltP1K4=";
+    hash = "sha256-WmAUfwRBh6En7H2pbRcNSbzOUMb9NvWU5g9Fh+/005Q=";
   };
 
   patches = [
@@ -92,61 +93,68 @@ buildPythonPackage rec {
     zope-interface
   ];
 
-  postPatch = ''
-    echo 'ListingTests.test_localeIndependent.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py
-    echo 'ListingTests.test_newFile.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py
-    echo 'ListingTests.test_newSingleDigitDayOfMonth.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py
-    echo 'ListingTests.test_oldFile.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py
-    echo 'ListingTests.test_oldSingleDigitDayOfMonth.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py
-
-    echo 'WrapClientTLSParserTests.test_tls.skip = "pyopenssl update"' >> src/twisted/internet/test/test_endpoints.py
-    echo 'UNIXTestsBuilder_AsyncioSelectorReactorTests.test_sendFileDescriptorTriggersPauseProducing.skip = "sendFileDescriptor producer was not paused"'>> src/twisted/internet/test/test_unix.py
-    echo 'UNIXTestsBuilder_SelectReactorTests.test_sendFileDescriptorTriggersPauseProducing.skip = "sendFileDescriptor producer was not paused"'>> src/twisted/internet/test/test_unix.py
-
-    echo 'FileObserverTests.test_getTimezoneOffsetEastOfUTC.skip = "mktime argument out of range"'>> src/twisted/test/test_log.py
-    echo 'FileObserverTests.test_getTimezoneOffsetWestOfUTC.skip = "mktime argument out of range"'>> src/twisted/test/test_log.py
-    echo 'FileObserverTests.test_getTimezoneOffsetWithoutDaylightSavingTime.skip = "tuple differs, values not"'>> src/twisted/test/test_log.py
-
-    echo 'FileDescriptorTests.test_expectedFDs.skip = "Expected duplicate file descriptor to be greater than original"' >> src/twisted/internet/test/test_posixprocess.py
-
-    echo 'MulticastTests.test_joinLeave.skip = "No such device"'>> src/twisted/test/test_udp.py
-    echo 'MulticastTests.test_loopback.skip = "No such device"'>> src/twisted/test/test_udp.py
-    echo 'MulticastTests.test_multicast.skip = "Reactor was unclean"'>> src/twisted/test/test_udp.py
-    echo 'MulticastTests.test_multiListen.skip = "No such device"'>> src/twisted/test/test_udp.py
-
-    # fails since migrating to libxcrypt
-    echo 'HelperTests.test_refuteCryptedPassword.skip = "OSError: Invalid argument"' >> src/twisted/conch/test/test_checkers.py
-
-    # expectation mismatch with `python -m twisted --help` and `python -m twisted.trial --help` usage output
-    echo 'MainTests.test_twisted.skip = "Expectation Mismatch"' >> src/twisted/test/test_main.py
-    echo 'MainTests.test_trial.skip = "Expectation Mismatch"' >> src/twisted/test/test_main.py
-
-    # tests for missing https support in usage
-    echo 'ServiceTests.test_HTTPSFailureOnMissingSSL.skip = "Expectation Mismatch"' >> src/twisted/web/test/test_tap.py
-
-    # fail on Python 3.12
-    echo 'WorkerReporterTests.test_addSkipPyunit.skip = "'WorkerReporter' object has no attribute '_testStarted'"' >> src/twisted/trial/_dist/test/test_workerreporter.py
-    echo 'LocalWorkerAMPTests.test_runSkip.skip = "twisted.protocols.amp.UnknownRemoteError: Code<UNKNOWN>: Unknown Error"' >> src/twisted/trial/_dist/test/test_worker.py
-
-    # not packaged
-    substituteInPlace src/twisted/test/test_failure.py \
-      --replace "from cython_test_exception_raiser import raiser  # type: ignore[import]" "raiser = None"
-  '' + lib.optionalString stdenv.isLinux ''
-    echo 'PTYProcessTestsBuilder_EPollReactorTests.test_openFileDescriptors.skip = "invalid syntax"'>> src/twisted/internet/test/test_process.py
-    echo 'PTYProcessTestsBuilder_PollReactorTests.test_openFileDescriptors.skip = "invalid syntax"'>> src/twisted/internet/test/test_process.py
-    echo 'UNIXTestsBuilder_EPollReactorTests.test_sendFileDescriptorTriggersPauseProducing.skip = "sendFileDescriptor producer was not paused"'>> src/twisted/internet/test/test_unix.py
-    echo 'UNIXTestsBuilder_PollReactorTests.test_sendFileDescriptorTriggersPauseProducing.skip = "sendFileDescriptor producer was not paused"'>> src/twisted/internet/test/test_unix.py
-
-    # Patch t.p._inotify to point to libc. Without this,
-    # twisted.python.runtime.platform.supportsINotify() == False
-    substituteInPlace src/twisted/python/_inotify.py --replace \
-      "ctypes.util.find_library(\"c\")" "'${stdenv.cc.libc}/lib/libc.so.6'"
-  '' + lib.optionalString stdenv.isDarwin ''
-    echo 'ProcessTestsBuilder_AsyncioSelectorReactorTests.test_openFileDescriptors.skip = "invalid syntax"'>> src/twisted/internet/test/test_process.py
-    echo 'ProcessTestsBuilder_SelectReactorTests.test_openFileDescriptors.skip = "invalid syntax"'>> src/twisted/internet/test/test_process.py
-    echo 'ProcessTestsBuilder_AsyncioSelectorReactorTests.test_processEnded.skip = "exit code 120"' >> src/twisted/internet/test/test_process.py
-    echo 'ProcessTestsBuilder_SelectReactorTests.test_processEnded.skip = "exit code 120"' >> src/twisted/internet/test/test_process.py
-  '';
+  postPatch =
+    ''
+      echo 'ListingTests.test_localeIndependent.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py
+      echo 'ListingTests.test_newFile.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py
+      echo 'ListingTests.test_newSingleDigitDayOfMonth.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py
+      echo 'ListingTests.test_oldFile.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py
+      echo 'ListingTests.test_oldSingleDigitDayOfMonth.skip = "Timezone issue"'>> src/twisted/conch/test/test_cftp.py
+
+      echo 'WrapClientTLSParserTests.test_tls.skip = "pyopenssl update"' >> src/twisted/internet/test/test_endpoints.py
+      echo 'UNIXTestsBuilder_AsyncioSelectorReactorTests.test_sendFileDescriptorTriggersPauseProducing.skip = "sendFileDescriptor producer was not paused"'>> src/twisted/internet/test/test_unix.py
+      echo 'UNIXTestsBuilder_SelectReactorTests.test_sendFileDescriptorTriggersPauseProducing.skip = "sendFileDescriptor producer was not paused"'>> src/twisted/internet/test/test_unix.py
+
+      echo 'FileObserverTests.test_getTimezoneOffsetEastOfUTC.skip = "mktime argument out of range"'>> src/twisted/test/test_log.py
+      echo 'FileObserverTests.test_getTimezoneOffsetWestOfUTC.skip = "mktime argument out of range"'>> src/twisted/test/test_log.py
+      echo 'FileObserverTests.test_getTimezoneOffsetWithoutDaylightSavingTime.skip = "tuple differs, values not"'>> src/twisted/test/test_log.py
+
+      echo 'FileDescriptorTests.test_expectedFDs.skip = "Expected duplicate file descriptor to be greater than original"' >> src/twisted/internet/test/test_posixprocess.py
+
+      echo 'MulticastTests.test_joinLeave.skip = "No such device"'>> src/twisted/test/test_udp.py
+      echo 'MulticastTests.test_loopback.skip = "No such device"'>> src/twisted/test/test_udp.py
+      echo 'MulticastTests.test_multicast.skip = "Reactor was unclean"'>> src/twisted/test/test_udp.py
+      echo 'MulticastTests.test_multiListen.skip = "No such device"'>> src/twisted/test/test_udp.py
+
+      # fails since migrating to libxcrypt
+      echo 'HelperTests.test_refuteCryptedPassword.skip = "OSError: Invalid argument"' >> src/twisted/conch/test/test_checkers.py
+
+      # expectation mismatch with `python -m twisted --help` and `python -m twisted.trial --help` usage output
+      echo 'MainTests.test_twisted.skip = "Expectation Mismatch"' >> src/twisted/test/test_main.py
+      echo 'MainTests.test_trial.skip = "Expectation Mismatch"' >> src/twisted/test/test_main.py
+
+      # tests for missing https support in usage
+      echo 'ServiceTests.test_HTTPSFailureOnMissingSSL.skip = "Expectation Mismatch"' >> src/twisted/web/test/test_tap.py
+
+      # fail on Python 3.12
+      echo 'WorkerReporterTests.test_addSkipPyunit.skip = "'WorkerReporter' object has no attribute '_testStarted'"' >> src/twisted/trial/_dist/test/test_workerreporter.py
+      echo 'LocalWorkerAMPTests.test_runSkip.skip = "twisted.protocols.amp.UnknownRemoteError: Code<UNKNOWN>: Unknown Error"' >> src/twisted/trial/_dist/test/test_worker.py
+
+      # https://github.com/twisted/twisted/issues/12194
+      echo 'FlattenerErrorTests.test_asynchronousFlattenError.skip = "builtins.KeyError: 'root'"' >> src/twisted/web/test/test_flatten.py
+      echo 'FlattenerErrorTests.test_cancel.skip = "builtins.KeyError: 'root'"' >> src/twisted/web/test/test_flatten.py
+
+      # not packaged
+      substituteInPlace src/twisted/test/test_failure.py \
+        --replace "from cython_test_exception_raiser import raiser  # type: ignore[import]" "raiser = None"
+    ''
+    + lib.optionalString stdenv.hostPlatform.isLinux ''
+      echo 'PTYProcessTestsBuilder_EPollReactorTests.test_openFileDescriptors.skip = "invalid syntax"'>> src/twisted/internet/test/test_process.py
+      echo 'PTYProcessTestsBuilder_PollReactorTests.test_openFileDescriptors.skip = "invalid syntax"'>> src/twisted/internet/test/test_process.py
+      echo 'UNIXTestsBuilder_EPollReactorTests.test_sendFileDescriptorTriggersPauseProducing.skip = "sendFileDescriptor producer was not paused"'>> src/twisted/internet/test/test_unix.py
+      echo 'UNIXTestsBuilder_PollReactorTests.test_sendFileDescriptorTriggersPauseProducing.skip = "sendFileDescriptor producer was not paused"'>> src/twisted/internet/test/test_unix.py
+
+      # Patch t.p._inotify to point to libc. Without this,
+      # twisted.python.runtime.platform.supportsINotify() == False
+      substituteInPlace src/twisted/python/_inotify.py --replace \
+        "ctypes.util.find_library(\"c\")" "'${stdenv.cc.libc}/lib/libc.so.6'"
+    ''
+    + lib.optionalString stdenv.hostPlatform.isDarwin ''
+      echo 'ProcessTestsBuilder_AsyncioSelectorReactorTests.test_openFileDescriptors.skip = "invalid syntax"'>> src/twisted/internet/test/test_process.py
+      echo 'ProcessTestsBuilder_SelectReactorTests.test_openFileDescriptors.skip = "invalid syntax"'>> src/twisted/internet/test/test_process.py
+      echo 'ProcessTestsBuilder_AsyncioSelectorReactorTests.test_processEnded.skip = "exit code 120"' >> src/twisted/internet/test/test_process.py
+      echo 'ProcessTestsBuilder_SelectReactorTests.test_processEnded.skip = "exit code 120"' >> src/twisted/internet/test/test_process.py
+    '';
 
   # Generate Twisted's plug-in cache. Twisted users must do it as well. See
   # http://twistedmatrix.com/documents/current/core/howto/plugin.html#auto3
@@ -155,18 +163,21 @@ buildPythonPackage rec {
     $out/bin/twistd --help > /dev/null
   '';
 
-  nativeCheckInputs = [
-    cython-test-exception-raiser
-    git
-    glibcLocales
-    hypothesis
-    pyhamcrest
-  ]
-  ++ passthru.optional-dependencies.conch
-  ++ passthru.optional-dependencies.http2
-  ++ passthru.optional-dependencies.serial
-  # not supported on aarch64-darwin: https://github.com/pyca/pyopenssl/issues/873
-  ++ lib.optionals (!(stdenv.isDarwin && stdenv.isAarch64)) passthru.optional-dependencies.tls;
+  nativeCheckInputs =
+    [
+      cython-test-exception-raiser
+      git
+      glibcLocales
+      hypothesis
+      pyhamcrest
+    ]
+    ++ passthru.optional-dependencies.conch
+    ++ passthru.optional-dependencies.http2
+    ++ passthru.optional-dependencies.serial
+    # not supported on aarch64-darwin: https://github.com/pyca/pyopenssl/issues/873
+    ++ lib.optionals (
+      !(stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64)
+    ) passthru.optional-dependencies.tls;
 
   checkPhase = ''
     export SOURCE_DATE_EPOCH=315532800
@@ -177,10 +188,22 @@ buildPythonPackage rec {
 
   passthru = {
     optional-dependencies = {
-      conch = [ appdirs bcrypt cryptography pyasn1 ];
-      http2 = [ h2 priority ];
+      conch = [
+        appdirs
+        bcrypt
+        cryptography
+        pyasn1
+      ];
+      http2 = [
+        h2
+        priority
+      ];
       serial = [ pyserial ];
-      tls = [ idna pyopenssl service-identity ];
+      tls = [
+        idna
+        pyopenssl
+        service-identity
+      ];
     };
 
     tests = {
@@ -194,7 +217,8 @@ buildPythonPackage rec {
         txamqp
         txrequests
         txtorcon
-        thrift;
+        thrift
+        ;
       inherit (nixosTests) buildbot matrix-synapse;
     };
   };
@@ -204,6 +228,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/twisted/twisted";
     description = "Asynchronous networking framework written in Python";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/twitch-python/default.nix b/pkgs/development/python-modules/twitch-python/default.nix
index 9a578ebeedc27..0f5cfad85ac4f 100644
--- a/pkgs/development/python-modules/twitch-python/default.nix
+++ b/pkgs/development/python-modules/twitch-python/default.nix
@@ -1,9 +1,19 @@
-{ lib, buildPythonPackage, fetchPypi, requests, rx, pytestCheckHook, responses, isPy3k }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  requests,
+  rx,
+  pytestCheckHook,
+  responses,
+  isPy3k,
+}:
 
 buildPythonPackage rec {
   pname = "twitch-python";
   version = "0.0.20";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
@@ -13,12 +23,20 @@ buildPythonPackage rec {
   disabled = !isPy3k;
 
   postPatch = ''
-    substituteInPlace setup.py --replace "'pipenv'," ""
+    substituteInPlace setup.py --replace-fail "'pipenv'," ""
   '';
 
-  propagatedBuildInputs = [ requests rx ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [ pytestCheckHook responses ];
+  dependencies = [
+    requests
+    rx
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    responses
+  ];
 
   pythonImportsCheck = [ "twitch" ];
 
@@ -26,6 +44,6 @@ buildPythonPackage rec {
     description = "Twitch module for Python";
     homepage = "https://github.com/PetterKraabol/Twitch-Python";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/twitchapi/default.nix b/pkgs/development/python-modules/twitchapi/default.nix
index 8dc26553d422c..7fa9b9d0f22cb 100644
--- a/pkgs/development/python-modules/twitchapi/default.nix
+++ b/pkgs/development/python-modules/twitchapi/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, aiohttp
-, python-dateutil
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  aiohttp,
+  python-dateutil,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "twitchapi";
-  version = "4.2.0";
+  version = "4.3.1";
 
   disabled = pythonOlder "3.7";
 
@@ -20,14 +21,20 @@ buildPythonPackage rec {
     owner = "Teekeks";
     repo = "pyTwitchAPI";
     rev = "refs/tags/v${version}";
-    hash = "sha256-QAxLYujnsudaiz9UepwrBA835Pct5h4VcE9ZrbkwMmg=";
+    hash = "sha256-pXbrI4WbId6nYbDSpF9cYnQBOkbNGvzW6/opCztZ1ck=";
   };
 
-  nativeBuildInputs = [
-    setuptools
+  postPatch = ''
+    sed -i "/document_enum/d" twitchAPI/type.py
+  '';
+
+  pythonRemoveDeps = [
+    "enum-tools"
   ];
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     aiohttp
     python-dateutil
     typing-extensions
@@ -49,6 +56,8 @@ buildPythonPackage rec {
     description = "Python implementation of the Twitch Helix API, its Webhook, PubSub and EventSub";
     homepage = "https://github.com/Teekeks/pyTwitchAPI";
     license = licenses.mit;
-    maintainers = with maintainers; [ dotlambda wolfangaukang ];
+    maintainers = with maintainers; [
+      dotlambda
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/twitter-common-collections/default.nix b/pkgs/development/python-modules/twitter-common-collections/default.nix
deleted file mode 100644
index 644a97d2b2ec0..0000000000000
--- a/pkgs/development/python-modules/twitter-common-collections/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, twitter-common-lang
-}:
-
-buildPythonPackage rec {
-  pname   = "twitter.common.collections";
-  version = "0.3.11";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "ede4caff74928156f7ff38dac9b0811893de41966c39cd5b2fdea53418349ca8";
-  };
-
-  propagatedBuildInputs = [ twitter-common-lang ];
-
-  meta = with lib; {
-    description = "Twitter's common collections";
-    homepage    = "https://twitter.github.io/commons/";
-    license     = licenses.asl20;
-    maintainers = with maintainers; [ copumpkin ];
-  };
-
-}
diff --git a/pkgs/development/python-modules/twitter-common-confluence/default.nix b/pkgs/development/python-modules/twitter-common-confluence/default.nix
deleted file mode 100644
index d718a18822bed..0000000000000
--- a/pkgs/development/python-modules/twitter-common-confluence/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, twitter-common-log
-}:
-
-buildPythonPackage rec {
-  pname   = "twitter.common.confluence";
-  version = "0.3.11";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "323dde2c519f85020569d7a343432f3aac16bce6ebe5e34774dbde557296697c";
-  };
-
-  propagatedBuildInputs = [ twitter-common-log ];
-
-  meta = with lib; {
-    description = "Twitter's API to the confluence wiki";
-    homepage    = "https://twitter.github.io/commons/";
-    license     = licenses.asl20;
-    maintainers = with maintainers; [ copumpkin ];
-  };
-
-}
diff --git a/pkgs/development/python-modules/twitter-common-dirutil/default.nix b/pkgs/development/python-modules/twitter-common-dirutil/default.nix
deleted file mode 100644
index bf9ec099ddbae..0000000000000
--- a/pkgs/development/python-modules/twitter-common-dirutil/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, twitter-common-lang
-}:
-
-buildPythonPackage rec {
-  pname   = "twitter.common.dirutil";
-  version = "0.3.11";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "49aeecad2434ac23c16abbfc1fccffd3790c056a9eb01468ec26c83e65a10119";
-  };
-
-  propagatedBuildInputs = [ twitter-common-lang ];
-
-  meta = with lib; {
-    description = "Utilities for manipulating and finding files and directories";
-    homepage    = "https://twitter.github.io/commons/";
-    license     = licenses.asl20;
-    maintainers = with maintainers; [ copumpkin ];
-  };
-
-}
diff --git a/pkgs/development/python-modules/twitter-common-lang/default.nix b/pkgs/development/python-modules/twitter-common-lang/default.nix
deleted file mode 100644
index 93178f4679217..0000000000000
--- a/pkgs/development/python-modules/twitter-common-lang/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-}:
-
-buildPythonPackage rec {
-  pname   = "twitter.common.lang";
-  version = "0.3.11";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "6e967ca2b5bb96ea749d21052f45b18e37deb5cc160eb12c64a8f1cb9dba7a22";
-  };
-
-  meta = with lib; {
-    description = "Twitter's 2.x / 3.x compatibility swiss-army knife";
-    homepage    = "https://twitter.github.io/commons/";
-    license     = licenses.asl20;
-    maintainers = with maintainers; [ copumpkin ];
-  };
-
-}
diff --git a/pkgs/development/python-modules/twitter-common-log/default.nix b/pkgs/development/python-modules/twitter-common-log/default.nix
deleted file mode 100644
index 61f5d99a8f1c6..0000000000000
--- a/pkgs/development/python-modules/twitter-common-log/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, twitter-common-options
-, twitter-common-dirutil
-}:
-
-buildPythonPackage rec {
-  pname   = "twitter.common.log";
-  version = "0.3.11";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "7160a864eed30044705e05b816077dd193aec0c66f50ef1c077b7f8490e0d06a";
-  };
-
-  propagatedBuildInputs = [ twitter-common-options twitter-common-dirutil ];
-
-  meta = with lib; {
-    description = "Twitter's common logging library";
-    homepage    = "https://twitter.github.io/commons/";
-    license     = licenses.asl20;
-    maintainers = with maintainers; [ copumpkin ];
-  };
-
-}
diff --git a/pkgs/development/python-modules/twitter-common-options/default.nix b/pkgs/development/python-modules/twitter-common-options/default.nix
deleted file mode 100644
index b3ae7f7f5d94c..0000000000000
--- a/pkgs/development/python-modules/twitter-common-options/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-}:
-
-buildPythonPackage rec {
-  pname   = "twitter.common.options";
-  version = "0.3.11";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "a495bcdffc410039bc4166f1a30c2caa3c92769d7a161a4a39d3651836dd27e1";
-  };
-
-  meta = with lib; {
-    description = "Twitter's optparse wrapper";
-    homepage    = "https://twitter.github.io/commons/";
-    license     = licenses.asl20;
-    maintainers = with maintainers; [ copumpkin ];
-  };
-
-}
diff --git a/pkgs/development/python-modules/twitter/default.nix b/pkgs/development/python-modules/twitter/default.nix
index 64ca41f60c2f0..545b7784b9a01 100644
--- a/pkgs/development/python-modules/twitter/default.nix
+++ b/pkgs/development/python-modules/twitter/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, certifi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools-scm,
+  certifi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,19 +19,13 @@ buildPythonPackage rec {
     hash = "sha256-gN3WmuLuuIMT/u3uoxvxGf1ueVQe5bN6u5xD0jMZThA=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    certifi
-  ];
+  propagatedBuildInputs = [ certifi ];
 
   doCheck = false;
 
-  pythonImportsCheck = [
-    "twitter"
-  ];
+  pythonImportsCheck = [ "twitter" ];
 
   meta = with lib; {
     description = "Twitter API library";
diff --git a/pkgs/development/python-modules/twitterapi/default.nix b/pkgs/development/python-modules/twitterapi/default.nix
index 72185f243bedd..c9ee6a5af064f 100644
--- a/pkgs/development/python-modules/twitterapi/default.nix
+++ b/pkgs/development/python-modules/twitterapi/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, requests-oauthlib
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  requests-oauthlib,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Tests are interacting with the Twitter API
   doCheck = false;
 
-  pythonImportsCheck = [
-    "TwitterAPI"
-  ];
+  pythonImportsCheck = [ "TwitterAPI" ];
 
   meta = with lib; {
     description = "Python wrapper for Twitter's REST and Streaming APIs";
diff --git a/pkgs/development/python-modules/twofish/default.nix b/pkgs/development/python-modules/twofish/default.nix
index 5076de1ad3c33..e741b97d071de 100644
--- a/pkgs/development/python-modules/twofish/default.nix
+++ b/pkgs/development/python-modules/twofish/default.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
 
-# pythonPackages
-, javaobj-py3
+  # pythonPackages
+  javaobj-py3,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     sha256 = "1yihp2n42amrxw0wk9f66llpb3w5kwhgkcdg9krkzcik1nsqp7dh";
   };
 
-  propagatedBuildInputs = [
-    javaobj-py3
-  ];
+  propagatedBuildInputs = [ javaobj-py3 ];
 
   # No tests implemented
   doCheck = false;
@@ -27,8 +26,6 @@ buildPythonPackage rec {
     description = "Bindings for the Twofish implementation by Niels Ferguson";
     homepage = "https://github.com/keybase/python-twofish";
     license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [
-      kamadorueda
-    ];
+    maintainers = with lib.maintainers; [ kamadorueda ];
   };
 }
diff --git a/pkgs/development/python-modules/txaio/default.nix b/pkgs/development/python-modules/txaio/default.nix
index ec8ffb3901fb3..6522246a71e12 100644
--- a/pkgs/development/python-modules/txaio/default.nix
+++ b/pkgs/development/python-modules/txaio/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mock
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, twisted
-, zope-interface
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  twisted,
+  zope-interface,
 }:
 
 buildPythonPackage rec {
@@ -44,15 +45,13 @@ buildPythonPackage rec {
     "test_cancel"
   ];
 
-  pythonImportsCheck = [
-    "txaio"
-  ];
+  pythonImportsCheck = [ "txaio" ];
 
   meta = with lib; {
     description = "Utilities to support code that runs unmodified on Twisted and asyncio";
     homepage = "https://github.com/crossbario/txaio";
     changelog = "https://github.com/crossbario/txaio/blob/v${version}/docs/releases.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/txamqp/default.nix b/pkgs/development/python-modules/txamqp/default.nix
index 935ef043f22fa..f9dacc571c58e 100644
--- a/pkgs/development/python-modules/txamqp/default.nix
+++ b/pkgs/development/python-modules/txamqp/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, twisted
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  twisted,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/txamqp/txamqp";
     description = "Library for communicating with AMQP peers and brokers using Twisted";
     license = licenses.asl20;
-    maintainers = [];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/txdbus/default.nix b/pkgs/development/python-modules/txdbus/default.nix
index 3f377313a0bd2..33ed4a66a68e4 100644
--- a/pkgs/development/python-modules/txdbus/default.nix
+++ b/pkgs/development/python-modules/txdbus/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, six, twisted }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  six,
+  twisted,
+}:
 
 buildPythonPackage rec {
   pname = "txdbus";
@@ -10,7 +16,10 @@ buildPythonPackage rec {
     sha256 = "8375a5fb68a12054f0def91af800c821fb2232949337756ed975f88d8ea2bc97";
   };
 
-  propagatedBuildInputs = [ six twisted ];
+  propagatedBuildInputs = [
+    six
+    twisted
+  ];
   pythonImportsCheck = [ "txdbus" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/txgithub/default.nix b/pkgs/development/python-modules/txgithub/default.nix
index 8fa0229f0ca52..aa30df3c3c1cd 100644
--- a/pkgs/development/python-modules/txgithub/default.nix
+++ b/pkgs/development/python-modules/txgithub/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyopenssl
-, twisted
-, service-identity
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyopenssl,
+  twisted,
+  service-identity,
 }:
 
 buildPythonPackage rec {
@@ -16,7 +17,11 @@ buildPythonPackage rec {
     sha256 = "16gbizy8vkxasxylwzj4p66yw8979nvzxdj6csidgmng7gi2k8nx";
   };
 
-  propagatedBuildInputs = [ pyopenssl twisted service-identity ];
+  propagatedBuildInputs = [
+    pyopenssl
+    twisted
+    service-identity
+  ];
 
   # fix python3 issues
   patchPhase = ''
@@ -31,10 +36,9 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "GitHub API client implemented using Twisted.";
-    homepage    = "https://github.com/tomprince/txgithub";
-    license     = licenses.mit;
-    maintainers = with maintainers; [ ];
+    description = "GitHub API client implemented using Twisted";
+    homepage = "https://github.com/tomprince/txgithub";
+    license = licenses.mit;
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/txi2p-tahoe/default.nix b/pkgs/development/python-modules/txi2p-tahoe/default.nix
index 9ddc10885788a..751facddfd1aa 100644
--- a/pkgs/development/python-modules/txi2p-tahoe/default.nix
+++ b/pkgs/development/python-modules/txi2p-tahoe/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, setuptools-scm
-, parsley
-, twisted
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  parsley,
+  twisted,
+  python,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/txredisapi/default.nix b/pkgs/development/python-modules/txredisapi/default.nix
index 315e7f8e27138..d73b87b286217 100644
--- a/pkgs/development/python-modules/txredisapi/default.nix
+++ b/pkgs/development/python-modules/txredisapi/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, six
-, twisted
-, nixosTests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  six,
+  twisted,
+  nixosTests,
 }:
 
 buildPythonPackage rec {
@@ -19,19 +20,14 @@ buildPythonPackage rec {
     hash = "sha256-6Z2vurTAw9YHxvEiixtdxBH0YHj+Y9aTdsSkafPMZus=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     six
     twisted
-  ]
-  ++ twisted.optional-dependencies.tls;
+  ] ++ twisted.optional-dependencies.tls;
 
-  pythonImportsCheck = [
-    "txredisapi"
-  ];
+  pythonImportsCheck = [ "txredisapi" ];
 
   doCheck = false;
 
@@ -44,4 +40,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ dandellion ];
   };
 }
-
diff --git a/pkgs/development/python-modules/txrequests/default.nix b/pkgs/development/python-modules/txrequests/default.nix
index 706a97b6297ab..62b4b5c4ef0d6 100644
--- a/pkgs/development/python-modules/txrequests/default.nix
+++ b/pkgs/development/python-modules/txrequests/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, twisted
-, requests
-, cryptography
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  twisted,
+  requests,
+  cryptography,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,7 +18,11 @@ buildPythonPackage rec {
     sha256 = "b452a1cafa4d005678f6fa47922a330feb4907d5b4732d1841ca98e89f1362e1";
   };
 
-  propagatedBuildInputs = [ twisted requests cryptography ];
+  propagatedBuildInputs = [
+    twisted
+    requests
+    cryptography
+  ];
 
   # Require network access
   doCheck = false;
@@ -25,10 +30,9 @@ buildPythonPackage rec {
   nativeCheckInputs = [ unittestCheckHook ];
 
   meta = with lib; {
-    description = "Asynchronous Python HTTP for Humans.";
-    homepage    = "https://github.com/tardyp/txrequests";
-    license     = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    description = "Asynchronous Python HTTP for Humans";
+    homepage = "https://github.com/tardyp/txrequests";
+    license = licenses.asl20;
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/txtai/default.nix b/pkgs/development/python-modules/txtai/default.nix
index 256ed0889bfe7..c9be16e2eba4c 100644
--- a/pkgs/development/python-modules/txtai/default.nix
+++ b/pkgs/development/python-modules/txtai/default.nix
@@ -1,73 +1,110 @@
 {
-  lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, pythonRelaxDepsHook
-# propagated build input
-, faiss
-, torch
-, transformers
-, huggingface-hub
-, numpy
-, pyyaml
-, regex
-# optional-dependencies
-, aiohttp
-, fastapi
-, uvicorn
-# TODO add apache-libcloud
-# , apache-libcloud
-, rich
-, duckdb
-, pillow
-, networkx
-, python-louvain
-, onnx
-, onnxruntime
-, soundfile
-, scipy
-, ttstokenizer
-, beautifulsoup4
-, nltk
-, pandas
-, tika
-, imagehash
-, timm
-, fasttext
-, sentencepiece
-, accelerate
-, onnxmltools
-, annoy
-, hnswlib
-# TODO add pymagnitude-lite
-#, pymagnitude-lite
-, scikit-learn
-, sentence-transformers
-, croniter
-, openpyxl
-, requests
-, xmltodict
-# native check inputs
-, unittestCheckHook
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  # propagated build input
+  faiss,
+  torch,
+  transformers,
+  huggingface-hub,
+  numpy,
+  pyyaml,
+  regex,
+  # optional-dependencies
+  aiohttp,
+  fastapi,
+  uvicorn,
+  # TODO add apache-libcloud
+  # , apache-libcloud
+  rich,
+  duckdb,
+  pillow,
+  networkx,
+  python-louvain,
+  onnx,
+  onnxruntime,
+  soundfile,
+  scipy,
+  ttstokenizer,
+  beautifulsoup4,
+  nltk,
+  pandas,
+  tika,
+  imagehash,
+  timm,
+  fasttext,
+  sentencepiece,
+  accelerate,
+  onnxmltools,
+  annoy,
+  hnswlib,
+  # TODO add pymagnitude-lite
+  #, pymagnitude-lite
+  scikit-learn,
+  sentence-transformers,
+  croniter,
+  openpyxl,
+  requests,
+  xmltodict,
+  # native check inputs
+  unittestCheckHook,
+
+  pythonAtLeast,
 }:
 let
-  version = "7.1.0";
-  api = [ aiohttp fastapi uvicorn ];
+  version = "7.3.0";
+  api = [
+    aiohttp
+    fastapi
+    uvicorn
+  ];
   # cloud = [ apache-libcloud ];
   console = [ rich ];
 
-  database = [ duckdb pillow ];
+  database = [
+    duckdb
+    pillow
+  ];
 
-  graph = [ networkx python-louvain ];
+  graph = [
+    networkx
+    python-louvain
+  ];
 
-  model = [ onnx onnxruntime ];
+  model = [
+    onnx
+    onnxruntime
+  ];
 
-  pipeline-audio = [ onnx onnxruntime soundfile scipy ttstokenizer ];
-  pipeline-data = [ beautifulsoup4 nltk pandas tika ];
-  pipeline-image = [ imagehash pillow timm ];
-  pipeline-text = [ fasttext sentencepiece ];
-  pipeline-train = [ accelerate onnx onnxmltools onnxruntime ];
+  pipeline-audio = [
+    onnx
+    onnxruntime
+    soundfile
+    scipy
+    ttstokenizer
+  ];
+  pipeline-data = [
+    beautifulsoup4
+    nltk
+    pandas
+    tika
+  ];
+  pipeline-image = [
+    imagehash
+    pillow
+    timm
+  ];
+  pipeline-text = [
+    fasttext
+    sentencepiece
+  ];
+  pipeline-train = [
+    accelerate
+    onnx
+    onnxmltools
+    onnxruntime
+  ];
   pipeline = pipeline-audio ++ pipeline-data ++ pipeline-image ++ pipeline-text ++ pipeline-train;
 
   similarity = [
@@ -90,8 +127,21 @@ let
   all = api ++ console ++ database ++ graph ++ model ++ pipeline ++ similarity ++ workflow;
 
   optional-dependencies = {
-    inherit api console database graph model pipeline-audio pipeline-image
-      pipeline-text pipeline-train pipeline similarity workflow all;
+    inherit
+      api
+      console
+      database
+      graph
+      model
+      pipeline-audio
+      pipeline-image
+      pipeline-text
+      pipeline-train
+      pipeline
+      similarity
+      workflow
+      all
+      ;
   };
 in
 buildPythonPackage {
@@ -105,12 +155,9 @@ buildPythonPackage {
     owner = "neuml";
     repo = "txtai";
     rev = "refs/tags/v${version}";
-    hash = "sha256-L+L2jRkCQKOgd1k3N4mft0Kt6kvCN81lgSQUjoon5rk=";
+    hash = "sha256-tnM6ye0Sxh8P2bm3awE72GvXEY0gXX1Sv+wPr77wRGU=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   pythonRemoveDeps = [
     # We call it faiss, not faiss-cpu.
@@ -143,14 +190,18 @@ buildPythonPackage {
   ] ++ optional-dependencies.api ++ optional-dependencies.similarity;
 
   unittestFlagsArray = [
-    "-s" "test/python" "-v"
+    "-s"
+    "test/python"
+    "-v"
   ];
 
-  meta = with lib; {
+  meta = {
     description = "Semantic search and workflows powered by language models";
     changelog = "https://github.com/neuml/txtai/releases/tag/v${version}";
     homepage = "https://github.com/neuml/txtai";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ happysalada ];
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ happysalada ];
+    # This should be addressed in a newer version, but we first need to wait for python311Packages.faiss to be updated
+    broken = pythonAtLeast "3.12";
   };
 }
diff --git a/pkgs/development/python-modules/txtorcon/default.nix b/pkgs/development/python-modules/txtorcon/default.nix
index e9b1fdf24b1cd..66329d3b09855 100644
--- a/pkgs/development/python-modules/txtorcon/default.nix
+++ b/pkgs/development/python-modules/txtorcon/default.nix
@@ -1,38 +1,36 @@
-{ lib
-, stdenv
-, automat
-, buildPythonPackage
-, cryptography
-, fetchPypi
-, geoip
-, idna
-, incremental
-, lsof
-, mock
-, pyopenssl
-, pytestCheckHook
-, python
-, pythonOlder
-, service-identity
-, twisted
-, zope-interface
+{
+  lib,
+  stdenv,
+  automat,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  geoip,
+  lsof,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  twisted,
+  zope-interface,
 }:
 
 buildPythonPackage rec {
   pname = "txtorcon";
-  version = "23.11.0";
-  format = "setuptools";
+  version = "24.8.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-cfha6T121yZRAFnJ7XTmCLxaXJ99EDhTtJ5BQoBAai8=";
+    hash = "sha256-vv4ZE42cjFMHtu5tT+RG0MIB/9HMQErrJl7ZAwmXitA=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     cryptography
-    incremental
     twisted
     automat
     zope-interface
@@ -45,13 +43,18 @@ buildPythonPackage rec {
     geoip
   ];
 
-  doCheck = !(stdenv.isDarwin && stdenv.isAarch64);
+  doCheck = !(stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64);
+
+  pythonImportsCheck = [ "txtorcon" ];
 
   meta = with lib; {
     description = "Twisted-based Tor controller client, with state-tracking and configuration abstractions";
     homepage = "https://github.com/meejah/txtorcon";
     changelog = "https://github.com/meejah/txtorcon/releases/tag/v${version}";
-    maintainers = with maintainers; [ jluttine exarkun ];
+    maintainers = with maintainers; [
+      jluttine
+      exarkun
+    ];
     license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/txzmq/default.nix b/pkgs/development/python-modules/txzmq/default.nix
index a8e75896b7c26..6c521d2f69f32 100644
--- a/pkgs/development/python-modules/txzmq/default.nix
+++ b/pkgs/development/python-modules/txzmq/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pyzmq
-, twisted
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pyzmq,
+  twisted,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     twisted
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "txzmq" ];
 
@@ -32,6 +31,6 @@ buildPythonPackage rec {
     description = "Twisted bindings for ZeroMQ";
     homepage = "https://github.com/smira/txZMQ";
     license = licenses.mpl20;
-    maintainers = with maintainers; [ wolfangaukang ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/type-infer/default.nix b/pkgs/development/python-modules/type-infer/default.nix
index 55af22a1c94b5..2d90225201507 100644
--- a/pkgs/development/python-modules/type-infer/default.nix
+++ b/pkgs/development/python-modules/type-infer/default.nix
@@ -1,30 +1,35 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, poetry-core
-, colorlog
-, dataclasses-json
-, langid
-, nltk
-, numpy
-, pandas
-, psutil
-, python-dateutil
-, scipy
-, toml
-, nltk-data
-, symlinkJoin
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  poetry-core,
+  colorlog,
+  dataclasses-json,
+  langid,
+  nltk,
+  numpy,
+  pandas,
+  psutil,
+  py3langid,
+  python-dateutil,
+  scipy,
+  toml,
+  nltk-data,
+  symlinkJoin,
 }:
 let
   testNltkData = symlinkJoin {
     name = "nltk-test-data";
-    paths = [ nltk-data.punkt nltk-data.stopwords ];
+    paths = [
+      nltk-data.punkt
+      nltk-data.stopwords
+    ];
   };
 in
 buildPythonPackage rec {
   pname = "type-infer";
-  version = "0.0.18";
+  version = "0.0.20";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -33,12 +38,12 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "type_infer";
     inherit version;
-    hash = "sha256-nA5TlyHpCueFWqUggS7T/eKSLlffp0pIyGCouwXPZ28=";
+    hash = "sha256-F+gfA7ofrbMEE5SrVt9H3s2mZKQLyr6roNUmL4EMJbI=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  pythonRelaxDeps = [ "psutil" ];
+
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     colorlog
@@ -48,6 +53,7 @@ buildPythonPackage rec {
     numpy
     pandas
     psutil
+    py3langid
     python-dateutil
     scipy
     toml
diff --git a/pkgs/development/python-modules/typechecks/default.nix b/pkgs/development/python-modules/typechecks/default.nix
index c458c9c15236c..4d7da1759f311 100644
--- a/pkgs/development/python-modules/typechecks/default.nix
+++ b/pkgs/development/python-modules/typechecks/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/typecode/default.nix b/pkgs/development/python-modules/typecode/default.nix
index 88e76fda670a4..751f5b715a04a 100644
--- a/pkgs/development/python-modules/typecode/default.nix
+++ b/pkgs/development/python-modules/typecode/default.nix
@@ -1,37 +1,40 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, setuptools-scm
-, attrs
-, pdfminer-six
-, commoncode
-, plugincode
-, binaryornot
-, typecode-libmagic
-, pytestCheckHook
-, pytest-xdist
-, pythonOlder
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  setuptools,
+  setuptools-scm,
+  attrs,
+  pdfminer-six,
+  commoncode,
+  plugincode,
+  binaryornot,
+  typecode-libmagic,
+  pytestCheckHook,
+  pytest-xdist,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "typecode";
-  version = "30.0.1";
-  format = "setuptools";
+  version = "30.0.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Glc5QiTVr//euymeNTxGN+FVaOEa6cUxHGyGo9bQrJc=";
+    hash = "sha256-F2idIK8K5hFueX7yxd5l8M6AkSjPDmhHmzS9a6S8OJg=";
   };
 
   dontConfigure = true;
 
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     attrs
     pdfminer-six
     commoncode
@@ -49,7 +52,7 @@ buildPythonPackage rec {
     "TestFileTypesDataDriven"
 
     # Many of the failures below are reported in:
-    # https://github.com/nexB/typecode/issues/36
+    # https://github.com/aboutcode-org/typecode/issues/36
 
     # AssertionError: assert 'application/x-bytecode.python'...
     "test_compiled_python_1"
@@ -60,15 +63,13 @@ buildPythonPackage rec {
     "test_package_debian"
   ];
 
-  pythonImportsCheck = [
-    "typecode"
-  ];
+  pythonImportsCheck = [ "typecode" ];
 
   meta = with lib; {
     description = "Comprehensive filetype and mimetype detection using libmagic and Pygments";
-    homepage = "https://github.com/nexB/typecode";
-    changelog = "https://github.com/nexB/typecode/releases/tag/v${version}";
+    homepage = "https://github.com/aboutcode-org/typecode";
+    changelog = "https://github.com/aboutcode-org/typecode/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/typecode/libmagic.nix b/pkgs/development/python-modules/typecode/libmagic.nix
index 1c9144226bc24..7d1add320b4cb 100644
--- a/pkgs/development/python-modules/typecode/libmagic.nix
+++ b/pkgs/development/python-modules/typecode/libmagic.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, plugincode
-, file
-, zlib
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  plugincode,
+  file,
+  zlib,
 }:
 buildPythonPackage rec {
   pname = "typecode-libmagic";
@@ -18,9 +19,7 @@ buildPythonPackage rec {
 
   sourceRoot = "${src.name}/builtins/typecode_libmagic-linux";
 
-  propagatedBuildInputs = [
-    plugincode
-  ];
+  propagatedBuildInputs = [ plugincode ];
 
   preBuild = ''
     pushd src/typecode_libmagic
@@ -36,12 +35,10 @@ buildPythonPackage rec {
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "typecode_libmagic"
-  ];
+  pythonImportsCheck = [ "typecode_libmagic" ];
 
   meta = with lib; {
-    description = "A ScanCode Toolkit plugin to provide pre-built binary libraries and utilities and their locations";
+    description = "ScanCode Toolkit plugin to provide pre-built binary libraries and utilities and their locations";
     homepage = "https://github.com/nexB/scancode-plugins/tree/main/builtins/typecode_libmagic-linux";
     license = licenses.asl20;
     maintainers = [ ];
diff --git a/pkgs/development/python-modules/typed-ast/default.nix b/pkgs/development/python-modules/typed-ast/default.nix
index 48ce811b9ebec..9cf7744433028 100644
--- a/pkgs/development/python-modules/typed-ast/default.nix
+++ b/pkgs/development/python-modules/typed-ast/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-GRmKw7SRrrIIb61VeB8GLhSKCmLUd54AA+GAf43vor8=";
   };
 
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
   checkPhase = ''
     runHook preCheck
@@ -45,6 +44,6 @@ buildPythonPackage rec {
     description = "Python AST modules with type comment support";
     homepage = "https://github.com/python/typed_ast";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/typed-settings/default.nix b/pkgs/development/python-modules/typed-settings/default.nix
index fe2ebd26d7d18..a39f18bad504d 100644
--- a/pkgs/development/python-modules/typed-settings/default.nix
+++ b/pkgs/development/python-modules/typed-settings/default.nix
@@ -7,6 +7,7 @@
   click-option-group,
   fetchPypi,
   hatchling,
+  hypothesis,
   jinja2,
   pydantic,
   pytestCheckHook,
@@ -17,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "typed-settings";
-  version = "24.2.0";
+  version = "24.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -25,7 +26,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "typed_settings";
     inherit version;
-    hash = "sha256-BuosfIlCgCD+h7eA/6/oE98zdURaT3eik+dysBpJR+Y=";
+    hash = "sha256-x1ojSSZNrKkBHKE9dWw7NzX/G6ggRYRIQ5MMahwL1Ps=";
   };
 
   build-system = [ hatchling ];
@@ -53,6 +54,7 @@ buildPythonPackage rec {
   };
 
   nativeCheckInputs = [
+    hypothesis
     pytestCheckHook
     typing-extensions
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
@@ -79,6 +81,6 @@ buildPythonPackage rec {
     homepage = "https://gitlab.com/sscherfke/typed-settings";
     changelog = "https://gitlab.com/sscherfke/typed-settings/-/blob/${version}/CHANGELOG.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/typeguard/default.nix b/pkgs/development/python-modules/typeguard/default.nix
index 31fb7a3ff43d2..472b5b882f8ac 100644
--- a/pkgs/development/python-modules/typeguard/default.nix
+++ b/pkgs/development/python-modules/typeguard/default.nix
@@ -1,28 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, typing-extensions
-, importlib-metadata
-, sphinxHook
-, sphinx-autodoc-typehints
-, sphinx-rtd-theme
-, glibcLocales
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  typing-extensions,
+  importlib-metadata,
+  mypy,
+  sphinxHook,
+  sphinx-autodoc-typehints,
+  sphinx-rtd-theme,
+  glibcLocales,
 }:
 
 buildPythonPackage rec {
   pname = "typeguard";
-  version = "4.2.1";
-  format = "pyproject";
+  version = "4.3.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-xVahuVlIIwUQBwylP6A0H7CWRhG9BdWY2H+1IRXWX+4=";
+    hash = "sha256-ku5qCuyRNRgermBn69YX/Z3o111xT7VIcopJM7HeplE=";
   };
 
   outputs = [
@@ -30,7 +32,7 @@ buildPythonPackage rec {
     "doc"
   ];
 
-  nativeBuildInputs = [
+  build-system = [
     glibcLocales
     setuptools
     setuptools-scm
@@ -39,21 +41,18 @@ buildPythonPackage rec {
     sphinx-rtd-theme
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     typing-extensions
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
 
   env.LC_ALL = "en_US.utf-8";
 
   nativeCheckInputs = [
+    mypy
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "typeguard"
-  ];
+  pythonImportsCheck = [ "typeguard" ];
 
   disabledTestPaths = [
     # mypy tests aren't passing with latest mypy
@@ -74,6 +73,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/agronholm/typeguard";
     changelog = "https://github.com/agronholm/typeguard/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/typepy/default.nix b/pkgs/development/python-modules/typepy/default.nix
index ae97d857da8d0..91e01efa20192 100644
--- a/pkgs/development/python-modules/typepy/default.nix
+++ b/pkgs/development/python-modules/typepy/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mbstrdecoder
-, python-dateutil
-, pytz
-, packaging
-, pytestCheckHook
-, pythonOlder
-, tcolorpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mbstrdecoder,
+  python-dateutil,
+  pytz,
+  packaging,
+  pytestCheckHook,
+  pythonOlder,
+  tcolorpy,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-oIDVjJwapHun0Rk04zOZ4IjAh7qZ2k0BXK6zqFmtVds=";
   };
 
-  propagatedBuildInputs = [
-    mbstrdecoder
-  ];
+  propagatedBuildInputs = [ mbstrdecoder ];
 
   passthru.optional-dependencies = {
     datetime = [
@@ -41,9 +40,7 @@ buildPythonPackage rec {
     tcolorpy
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "typepy"
-  ];
+  pythonImportsCheck = [ "typepy" ];
 
   meta = with lib; {
     description = "Library for variable type checker/validator/converter at a run time";
diff --git a/pkgs/development/python-modules/typer-shell/default.nix b/pkgs/development/python-modules/typer-shell/default.nix
new file mode 100644
index 0000000000000..bed80e5986483
--- /dev/null
+++ b/pkgs/development/python-modules/typer-shell/default.nix
@@ -0,0 +1,57 @@
+{
+  lib,
+  buildPythonPackage,
+  click,
+  click-shell,
+  fetchFromGitHub,
+  iterfzf,
+  poetry-core,
+  pythonOlder,
+  pyyaml,
+  rich,
+  typer,
+}:
+
+buildPythonPackage rec {
+  pname = "typer-shell";
+  version = "0.1.11";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "FergusFettes";
+    repo = "typer-shell";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-pxi4FGxDRMcW4q6h4lQzqGPLhdcfElMaR6aZV85h2Os=";
+  };
+
+  pythonRelaxDeps = [
+    "iterfzf"
+    "typer"
+  ];
+
+  build-system = [ poetry-core ];
+
+
+  dependencies = [
+    click
+    click-shell
+    iterfzf
+    pyyaml
+    rich
+    typer
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "typer_shell" ];
+
+  meta = with lib; {
+    description = "Library for making beautiful shells/REPLs with Typer";
+    homepage = "https://github.com/FergusFettes/typer-shell";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/typer/default.nix b/pkgs/development/python-modules/typer/default.nix
index b072f3a6d8ca9..74bb969473a7d 100644
--- a/pkgs/development/python-modules/typer/default.nix
+++ b/pkgs/development/python-modules/typer/default.nix
@@ -1,54 +1,43 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, click
-, colorama
-, coverage
-, fetchpatch
-, fetchPypi
-, flit-core
-, pytest-sugar
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, rich
-, shellingham
-, typing-extensions
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  click,
+  coverage,
+  fetchPypi,
+  pdm-backend,
+  pytest-sugar,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  rich,
+  shellingham,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "typer";
-  version = "0.9.0";
+  version = "0.12.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-UJIv15rqL0dRqOBAj/ENJmK9DIu/qEdVppnzutopeLI=";
+    hash = "sha256-SecxMUgdgEKI72JZjZehzu8wWJBapTahE0+QiRujVII=";
   };
 
-  patches = [
-    # https://github.com/tiangolo/typer/pull/651
-    (fetchpatch {
-      name = "unpin-flit-core-dependency.patch";
-      url = "https://github.com/tiangolo/typer/commit/78a0ee2eec9f54ad496420e177fdaad84984def1.patch";
-      hash = "sha256-VVUzFvF2KCXXkCfCU5xu9acT6OLr+PlQQPeVGONtU4A=";
-    })
-  ];
-
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ pdm-backend ];
 
   propagatedBuildInputs = [
     click
     typing-extensions
-  ];
+  # Build includes the standard optional by default
+  # https://github.com/tiangolo/typer/blob/0.12.3/pyproject.toml#L71-L72
+  ] ++ optional-dependencies.standard;
 
-  passthru.optional-dependencies = {
-    all = [
-      colorama
+  optional-dependencies = {
+    standard = [
       shellingham
       rich
     ];
@@ -59,7 +48,7 @@ buildPythonPackage rec {
     pytest-sugar
     pytest-xdist
     pytestCheckHook
-  ] ++ passthru.optional-dependencies.all;
+  ];
 
   preCheck = ''
     export HOME=$(mktemp -d);
@@ -71,13 +60,9 @@ buildPythonPackage rec {
     # fails also on Linux
     "test_show_completion"
     "test_install_completion"
-  ] ++ lib.optionals (stdenv.isLinux && stdenv.isAarch64) [
-    "test_install_completion"
-  ];
+  ] ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [ "test_install_completion" ];
 
-  pythonImportsCheck = [
-    "typer"
-  ];
+  pythonImportsCheck = [ "typer" ];
 
   meta = with lib; {
     description = "Library for building CLI applications";
diff --git a/pkgs/development/python-modules/types-aiobotocore-packages/default.nix b/pkgs/development/python-modules/types-aiobotocore-packages/default.nix
index 3e98124668f3a..230615d276d01 100644
--- a/pkgs/development/python-modules/types-aiobotocore-packages/default.nix
+++ b/pkgs/development/python-modules/types-aiobotocore-packages/default.nix
@@ -1,16 +1,20 @@
-{ lib
-, aiobotocore
-, botocore
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, typing-extensions
+{
+  lib,
+  stdenv,
+  aiobotocore,
+  boto3,
+  botocore,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
 }:
+
 let
   toUnderscore = str: builtins.replaceStrings [ "-" ] [ "_" ] str;
-
-  buildTypesAiobotocorePackage = serviceName: version: hash:
+  buildTypesAiobotocorePackage =
+    serviceName: version: hash:
     buildPythonPackage rec {
       pname = "types-aiobotocore-${serviceName}";
       inherit version;
@@ -18,740 +22,1452 @@ let
 
       disabled = pythonOlder "3.7";
 
+      oldStylePackages = [
+        "gamesparks"
+        "iot-roborunner"
+        "macie"
+      ];
+
       src = fetchPypi {
-        inherit pname version hash;
+        pname =
+          if builtins.elem serviceName oldStylePackages then
+            "types-aiobotocore-${serviceName}"
+          else
+            "types_aiobotocore_${toUnderscore serviceName}";
+        inherit version hash;
       };
 
-      build-system = [
-        setuptools
-      ];
+      build-system = [ setuptools ];
 
       dependencies = [
         aiobotocore
+        boto3
         botocore
-      ] ++ lib.optionals (pythonOlder "3.12") [
-        typing-extensions
-      ];
+      ] ++ lib.optionals (pythonOlder "3.12") [ typing-extensions ];
 
-      # Project has no tests
+      # Module has no tests
       doCheck = false;
 
-      pythonImportsCheck = [
-        "types_aiobotocore_${toUnderscore serviceName}"
-      ];
+      pythonImportsCheck = [ "types_aiobotocore_${toUnderscore serviceName}" ];
 
       meta = with lib; {
         description = "Type annotations for aiobotocore ${serviceName}";
         homepage = "https://github.com/youtype/mypy_boto3_builder";
-        license = with licenses; [ mit ];
+        license = licenses.mit;
         maintainers = with maintainers; [ mbalatsko ];
       };
     };
 in
 rec {
-  types-aiobotocore-accessanalyzer = buildTypesAiobotocorePackage "accessanalyzer" "2.11.2" "sha256-hUS1ZTj9CbC74Aiinmeh2BEQ2KymcqxuYVSeD12s5xg";
+  types-aiobotocore-accessanalyzer =
+    buildTypesAiobotocorePackage "accessanalyzer" "2.15.1"
+      "sha256-DALSwzPriQHPReCA4DxiqDE4egt1d0kVadDLqXSEV6k=";
 
-  types-aiobotocore-account = buildTypesAiobotocorePackage "account" "2.11.2" "sha256-XtL7R0UrgI/9rSxfNYbA0Lez+DiVyB7R+rhn49Nxerc=";
+  types-aiobotocore-account =
+    buildTypesAiobotocorePackage "account" "2.15.1"
+      "sha256-7VNgcslaFFeprI+G9Owfj24o8CFmGxqct4QWSGgxwI8=";
 
-  types-aiobotocore-acm = buildTypesAiobotocorePackage "acm" "2.11.2" "sha256-vpE1GuvKFPsBf3rTk5V6B4ujFGaHE3wk9yN3j0sM0bo=";
+  types-aiobotocore-acm =
+    buildTypesAiobotocorePackage "acm" "2.15.1"
+      "sha256-ItdsLbXVs92zb9JDwuHHvYVKArUAAeDUdt6tPxNikV0=";
 
-  types-aiobotocore-acm-pca = buildTypesAiobotocorePackage "acm-pca" "2.11.2" "sha256-g9a2ad5hZonlKWGnLQchfT5CAgwqsvseeQBQemCSCQw=";
+  types-aiobotocore-acm-pca =
+    buildTypesAiobotocorePackage "acm-pca" "2.15.1"
+      "sha256-JSvY8qqA91SUMXs7ajfVQ6wZFNHc2XisO2haiygJg8o=";
 
-  types-aiobotocore-alexaforbusiness = buildTypesAiobotocorePackage "alexaforbusiness" "2.12.3" "sha256-eSIy045Ai6VGJTJbCq7sOEskFByShCv1D8S+XyCdP8g=";
+  types-aiobotocore-alexaforbusiness =
+    buildTypesAiobotocorePackage "alexaforbusiness" "2.13.0"
+      "sha256-+w/InoQR2aZ5prieGhgEEp7auBiSSghG5zIIHY5Kyao=";
 
-  types-aiobotocore-amp = buildTypesAiobotocorePackage "amp" "2.12.3" "sha256-Q9LX7O74paxJtFgBXpmMHmE5Oymr+KsKc7/a4LkxXsc=";
+  types-aiobotocore-amp =
+    buildTypesAiobotocorePackage "amp" "2.15.1"
+      "sha256-RJKzIa6b/ov0xpayGBgDVW2DUjIo0xNfDDh2hAvK918=";
 
-  types-aiobotocore-amplify = buildTypesAiobotocorePackage "amplify" "2.12.3" "sha256-/2Ic2KPevRUyQyv2w95ESlGLa1z+j6c7wqO7sJhkglk=";
+  types-aiobotocore-amplify =
+    buildTypesAiobotocorePackage "amplify" "2.15.1"
+      "sha256-TNhrmgAjuJLBLXU2dlp+Ri8pJ+swgjXu1lJFGUnLEfQ=";
 
-  types-aiobotocore-amplifybackend = buildTypesAiobotocorePackage "amplifybackend" "2.12.3" "sha256-Z/yUxzo0dmcZbguurdnkplc1xF7Ro7t0Fpp4frqo8fw=";
+  types-aiobotocore-amplifybackend =
+    buildTypesAiobotocorePackage "amplifybackend" "2.15.1"
+      "sha256-T2mqIUobrEepz6vS/VLWq8OpUZTYRMme0SgWv+UtxmQ=";
 
-  types-aiobotocore-amplifyuibuilder = buildTypesAiobotocorePackage "amplifyuibuilder" "2.12.3" "sha256-Nziq7FXFXAGfzV36uLVoXJP3N/gA3ydhR1zOL2DAi50=";
+  types-aiobotocore-amplifyuibuilder =
+    buildTypesAiobotocorePackage "amplifyuibuilder" "2.15.1"
+      "sha256-oFgte9lbXb9IM3Ezn0Jmd5djrLwgJLqeDePdBb5OZrI=";
 
-  types-aiobotocore-apigateway = buildTypesAiobotocorePackage "apigateway" "2.12.3" "sha256-2k0txnK7EV4REsOEynvy1+twaP5rJVI6yIBO59LSKww=";
+  types-aiobotocore-apigateway =
+    buildTypesAiobotocorePackage "apigateway" "2.15.1"
+      "sha256-3gDSD6Z28yicogEeDv2i/rcmh7X9nRWrwxRL0YFZIpc=";
 
-  types-aiobotocore-apigatewaymanagementapi = buildTypesAiobotocorePackage "apigatewaymanagementapi" "2.12.3" "sha256-0GVRVAWl4NrqJScy69zhNt/sFq03gquN2CbEPoja1ug=";
+  types-aiobotocore-apigatewaymanagementapi =
+    buildTypesAiobotocorePackage "apigatewaymanagementapi" "2.15.1"
+      "sha256-3NC66/pp4F8GsH40z0mBoaLqIKyPHGpgEAGgOnOOAGI=";
 
-  types-aiobotocore-apigatewayv2 = buildTypesAiobotocorePackage "apigatewayv2" "2.12.3" "sha256-+CpKEb30BCdrRAE/3xO3wIBxMXLTyCOJxu4YScDDk6k=";
+  types-aiobotocore-apigatewayv2 =
+    buildTypesAiobotocorePackage "apigatewayv2" "2.15.1"
+      "sha256-qsiFXNECUVFDrreYOi2MLa655WAECXuPqi11z8liVN4=";
 
-  types-aiobotocore-appconfig = buildTypesAiobotocorePackage "appconfig" "2.12.3" "sha256-/90wLlLiPLTKxnAqgqhTbtc1hmSalzwD8yHh7/shrFs=";
+  types-aiobotocore-appconfig =
+    buildTypesAiobotocorePackage "appconfig" "2.15.1"
+      "sha256-QPhmF5urmZBb+e7KAIJihDujuDAopgQqrBspAxD6YJ4=";
 
-  types-aiobotocore-appconfigdata = buildTypesAiobotocorePackage "appconfigdata" "2.12.3" "sha256-KXNCQswudY3MGCBd37kGXuG6TJz3jzD7Y3LsWLvWPYw=";
+  types-aiobotocore-appconfigdata =
+    buildTypesAiobotocorePackage "appconfigdata" "2.15.1"
+      "sha256-1rQCSuTShglGMwqcxiVULSbmgzpUZmubTgqlum5EeqE=";
 
-  types-aiobotocore-appfabric = buildTypesAiobotocorePackage "appfabric" "2.12.3" "sha256-1pfpKQ0tmQU3Rm8DGPfDsALecd9XUeeQq/H8Tnp9v4A=";
+  types-aiobotocore-appfabric =
+    buildTypesAiobotocorePackage "appfabric" "2.15.1"
+      "sha256-l/dJepTAEpsV3eJWzMbw43SrqgWuL1I3IVlVQQzZPSM=";
 
-  types-aiobotocore-appflow = buildTypesAiobotocorePackage "appflow" "2.12.3" "sha256-c7pC0InqhtHuDKlEln9lt3tQL6w7Af9vxXuIZnhrdqY=";
+  types-aiobotocore-appflow =
+    buildTypesAiobotocorePackage "appflow" "2.15.1"
+      "sha256-v30RZvCTHOMxsypX+Id5W7VEPC4QFYvRklPu9zaJ9x4=";
 
-  types-aiobotocore-appintegrations = buildTypesAiobotocorePackage "appintegrations" "2.12.3" "sha256-lJJXK+Wy6PvAQaCrKDe2GdHEjkuIY+mFmQt62xj21y4=";
+  types-aiobotocore-appintegrations =
+    buildTypesAiobotocorePackage "appintegrations" "2.15.1"
+      "sha256-ceiFklxI0RK06gj2ZQcvpGyW903SOxXA654MzRy3A7U=";
 
-  types-aiobotocore-application-autoscaling = buildTypesAiobotocorePackage "application-autoscaling" "2.12.3" "sha256-n1EMzB6uPQtYz4sSx6uvhk3ONjX9olg+5OkJoX6QUUo=";
+  types-aiobotocore-application-autoscaling =
+    buildTypesAiobotocorePackage "application-autoscaling" "2.15.1"
+      "sha256-P9XULdNPREbu2xksZXIIxZUEggYlU3j0Jo7RzFKMawk=";
 
-  types-aiobotocore-application-insights = buildTypesAiobotocorePackage "application-insights" "2.12.3" "sha256-m9STzjg6PfbKi4mxM28Nh5eDVPPaoSjwLhy6bJ5z8vg=";
+  types-aiobotocore-application-insights =
+    buildTypesAiobotocorePackage "application-insights" "2.15.1"
+      "sha256-nvNJsUkMwJd41vlj7pKEn37f1Ab4l4WAJbYGqfxCmZw=";
 
-  types-aiobotocore-applicationcostprofiler = buildTypesAiobotocorePackage "applicationcostprofiler" "2.12.3" "sha256-fOZzzkp4q11/pM7tFVsUCuxcAbp09icWOq7Ys89u8Q0=";
+  types-aiobotocore-applicationcostprofiler =
+    buildTypesAiobotocorePackage "applicationcostprofiler" "2.15.1"
+      "sha256-/rMS/1K9dGzW89Rzd6sg9o/L56kNAO0bkDUTNKsKxxI=";
 
-  types-aiobotocore-appmesh = buildTypesAiobotocorePackage "appmesh" "2.12.3" "sha256-Ovib8qtm+ZCIJ/cQwVB5ksmYpeO8xDoIvkgvnRhL2jY=";
+  types-aiobotocore-appmesh =
+    buildTypesAiobotocorePackage "appmesh" "2.15.1"
+      "sha256-yPEPmU3CVzddnsFd2CQp+eAji1+/bH/Vvhv6D2JbjvM=";
 
-  types-aiobotocore-apprunner = buildTypesAiobotocorePackage "apprunner" "2.12.3" "sha256-hRsWYed0ZwgfgkXRAuVfsmAuaJqTYogLVXtQkDGskMI=";
+  types-aiobotocore-apprunner =
+    buildTypesAiobotocorePackage "apprunner" "2.15.1"
+      "sha256-gzzXHrMC0MF9RykwGmZiUtgufuRPrmGekVicXzdlFw8=";
 
-  types-aiobotocore-appstream = buildTypesAiobotocorePackage "appstream" "2.12.3" "sha256-cpXkWYtPnkVDGbkhgy8s5DgvEHYLRe5Huygkfk/W998=";
+  types-aiobotocore-appstream =
+    buildTypesAiobotocorePackage "appstream" "2.15.1"
+      "sha256-qbiOK2G95NdBTt1AmrQsDJbz885ugrdRBXMb9ZQcssE=";
 
-  types-aiobotocore-appsync = buildTypesAiobotocorePackage "appsync" "2.12.3" "sha256-Dem6NGryjCUzQBMCXCNFvop51KhdmIopDUjI2OofEGA=";
+  types-aiobotocore-appsync =
+    buildTypesAiobotocorePackage "appsync" "2.15.1"
+      "sha256-WYgJ2GLOxy/Va+ZY7DwwX7pBFF4zv1iQ8rptFoOlFsA=";
 
-  types-aiobotocore-arc-zonal-shift = buildTypesAiobotocorePackage "arc-zonal-shift" "2.12.3" "sha256-qAMj0+7ywqR/89lUUyRcaqPdVgbARYLdjqMFKOuohZI=";
+  types-aiobotocore-arc-zonal-shift =
+    buildTypesAiobotocorePackage "arc-zonal-shift" "2.15.1"
+      "sha256-9lToTikNN5kH9TCGSeQDnm6g2iM+1OGbtSpN4f6M7FM=";
 
-  types-aiobotocore-athena = buildTypesAiobotocorePackage "athena" "2.12.3" "sha256-D1RbyLJdOrMm1dGq6FiRPYEZ1pbMTA14tJEyukqtFXs=";
+  types-aiobotocore-athena =
+    buildTypesAiobotocorePackage "athena" "2.15.1"
+      "sha256-8NEZDefM/mP11YPnOCn11QfbWAMaCB5Yh2R9zQRtPpw=";
 
-  types-aiobotocore-auditmanager = buildTypesAiobotocorePackage "auditmanager" "2.12.3" "sha256-Oqr3fp5uXPeleOlSFGzqeS7yUcqI+WJlPsLsYTBWfp4=";
+  types-aiobotocore-auditmanager =
+    buildTypesAiobotocorePackage "auditmanager" "2.15.1"
+      "sha256-JU7s8pqfJQptll0Kh3KPDeFULM2cga0nYZSvhLk2ul4=";
 
-  types-aiobotocore-autoscaling = buildTypesAiobotocorePackage "autoscaling" "2.12.3" "sha256-f32qZpqQ27sujqeA5V7opwQ2LBLuLgcKEvYxgn53Z/A=";
+  types-aiobotocore-autoscaling =
+    buildTypesAiobotocorePackage "autoscaling" "2.15.1"
+      "sha256-PddQSNJ9KNGL8LQDD82+IeD4cVCR7huBkSWTqbYQfUk=";
 
-  types-aiobotocore-autoscaling-plans = buildTypesAiobotocorePackage "autoscaling-plans" "2.12.3" "sha256-gZItvHv6bKmUJo7N68E43nNipGuVPru1FpirryM613A=";
+  types-aiobotocore-autoscaling-plans =
+    buildTypesAiobotocorePackage "autoscaling-plans" "2.15.1"
+      "sha256-hUEFUNC1WdPpdu+9AQFWLvFhvBrmy3Xg7Xl4LlB4z6k=";
 
-  types-aiobotocore-backup = buildTypesAiobotocorePackage "backup" "2.12.3" "sha256-n7TwvQPRPpjucEdl8oqhRCyuoUobC94eoaxo3fUcX0k=";
+  types-aiobotocore-backup =
+    buildTypesAiobotocorePackage "backup" "2.15.1"
+      "sha256-E8LmUYpLqVF0WooWUXtqv4nhst1o050tx3/sRDBhd+w=";
 
-  types-aiobotocore-backup-gateway = buildTypesAiobotocorePackage "backup-gateway" "2.12.3" "sha256-y5tONAuzm2ReIX2ZbXkgCdm1mdOwELVTiI/E88y3RRM=";
+  types-aiobotocore-backup-gateway =
+    buildTypesAiobotocorePackage "backup-gateway" "2.15.1"
+      "sha256-Yx/e2UIEzn47L4mQ61S0PkHBuDbz7uqc5yIw/6XrBkI=";
 
-  types-aiobotocore-backupstorage = buildTypesAiobotocorePackage "backupstorage" "2.12.3" "sha256-XMNbgsaMB1xCMffocyb8Qm/vVgwUFJ3HR7vjS4WNJjg=";
+  types-aiobotocore-backupstorage =
+    buildTypesAiobotocorePackage "backupstorage" "2.13.0"
+      "sha256-YUKtBdBrdwL2yqDqOovvzDPbcv/sD8JLRnKz3Oh7iSU=";
 
-  types-aiobotocore-batch = buildTypesAiobotocorePackage "batch" "2.12.3" "sha256-+agBXcUaXKm0gmrLk5S5CUaivA7UOxQegBFXRwNIRoI=";
+  types-aiobotocore-batch =
+    buildTypesAiobotocorePackage "batch" "2.15.1"
+      "sha256-vZJddKOLsljDKP4WrUDZrc4hkk01FtN3wL8MXKpfuII=";
 
-  types-aiobotocore-billingconductor = buildTypesAiobotocorePackage "billingconductor" "2.12.3" "sha256-188KzcjDcJF5uoBKsFNBSxrFThz8HzuF20dUA4+2aqY=";
+  types-aiobotocore-billingconductor =
+    buildTypesAiobotocorePackage "billingconductor" "2.15.1"
+      "sha256-sbgwQEs21yd+xl2AuEiYEzc0Lgx7Uo/Ctibd2SEHY0c=";
 
-  types-aiobotocore-braket = buildTypesAiobotocorePackage "braket" "2.12.3" "sha256-Q17Y1YmrT8DdP/iqeXXFg+Nixx6602jVp7EvwglZXHA=";
+  types-aiobotocore-braket =
+    buildTypesAiobotocorePackage "braket" "2.15.1"
+      "sha256-CThsP2a03VbAIFr4x2x0L2fLgIxvqFV1MuMLp1eoo6A=";
 
-  types-aiobotocore-budgets = buildTypesAiobotocorePackage "budgets" "2.12.3" "sha256-R1qcbs1TFd/hqXBbE1byIBHfhX71LXITICQtT1y2E0w=";
+  types-aiobotocore-budgets =
+    buildTypesAiobotocorePackage "budgets" "2.15.1"
+      "sha256-b1M6ZdlrG/AM3h5iM/mMAW7SrwrjApF/K0kgbFpAM14=";
 
-  types-aiobotocore-ce = buildTypesAiobotocorePackage "ce" "2.12.3" "sha256-zpwmqCaymuhlXNQFmOXRwedgyJXqnbKQkzaJVmL+YcI=";
+  types-aiobotocore-ce =
+    buildTypesAiobotocorePackage "ce" "2.15.1"
+      "sha256-MV6dma7+hf1ITv3HJ4cJZyfpimMT5MBuspTCEjMix7I=";
 
-  types-aiobotocore-chime = buildTypesAiobotocorePackage "chime" "2.12.3" "sha256-qoOzWvS2oU27h0G3rDJrD3A7uDTT1nE3r91Jurs1VL8=";
+  types-aiobotocore-chime =
+    buildTypesAiobotocorePackage "chime" "2.15.1"
+      "sha256-24ukZo0shYVOz0HlrIj0g/xsfKz48fZHlUqcuTFvSoE=";
 
-  types-aiobotocore-chime-sdk-identity = buildTypesAiobotocorePackage "chime-sdk-identity" "2.12.3" "sha256-c4lXCVVtzb1nYHpHCkC6GhaKAGh59f10HOF4pt6jDZQ=";
+  types-aiobotocore-chime-sdk-identity =
+    buildTypesAiobotocorePackage "chime-sdk-identity" "2.15.1"
+      "sha256-/R22nTYf7XQBH9u8R10jHqHA4+s2iliX5+pFUyWdaG0=";
 
-  types-aiobotocore-chime-sdk-media-pipelines = buildTypesAiobotocorePackage "chime-sdk-media-pipelines" "2.12.3" "sha256-UiUNm5obofAynGBDUU9dDTnALCgquEeD0CWikJoffcg=";
+  types-aiobotocore-chime-sdk-media-pipelines =
+    buildTypesAiobotocorePackage "chime-sdk-media-pipelines" "2.15.1"
+      "sha256-UGogN6rRabJuNokJPeQUol9DOMBbc/pkPL+lRg5GYk0=";
 
-  types-aiobotocore-chime-sdk-meetings = buildTypesAiobotocorePackage "chime-sdk-meetings" "2.12.3" "sha256-PRgs4jqH+H77oq8TJnp8BvxFe+VeGAt2HJqGAswsJ48=";
+  types-aiobotocore-chime-sdk-meetings =
+    buildTypesAiobotocorePackage "chime-sdk-meetings" "2.15.1"
+      "sha256-EDQ5H7R5U9AQnLy2rkRzSSAkFVzfZiWCqlLqP24wv2g=";
 
-  types-aiobotocore-chime-sdk-messaging = buildTypesAiobotocorePackage "chime-sdk-messaging" "2.12.3" "sha256-jhelKCrofsCsoEiQCgkgbmyxPDEzRmrflzsOYEG5VBg=";
+  types-aiobotocore-chime-sdk-messaging =
+    buildTypesAiobotocorePackage "chime-sdk-messaging" "2.15.1"
+      "sha256-7iJ+npfPI64WtlKYPLQUkJsJvhjSKCDbYBWWrv5dHwo=";
 
-  types-aiobotocore-chime-sdk-voice = buildTypesAiobotocorePackage "chime-sdk-voice" "2.12.3" "sha256-ycz16wpxuooSUJNo2EF578mQ/vuN19wORbRO4KIYAlw=";
+  types-aiobotocore-chime-sdk-voice =
+    buildTypesAiobotocorePackage "chime-sdk-voice" "2.15.1"
+      "sha256-BCj6/x6lnNdUx/FjP8mLzv7zLukjwDQw2/tWrFSuU0A=";
 
-  types-aiobotocore-cleanrooms = buildTypesAiobotocorePackage "cleanrooms" "2.12.3" "sha256-chPRscE8/t0zweeG2oI9Ffe9MhUfro3r67WPQMRrVVI=";
+  types-aiobotocore-cleanrooms =
+    buildTypesAiobotocorePackage "cleanrooms" "2.15.1"
+      "sha256-GbRu1vn7S1bILtKKf75+bR4y7OYQ6WnlUVt0HQqr/8s=";
 
-  types-aiobotocore-cloud9 = buildTypesAiobotocorePackage "cloud9" "2.12.3" "sha256-MsppSKc4o0kkEn+YS8fjmRHMMHCk/vp7MzwWSeMbfO8=";
+  types-aiobotocore-cloud9 =
+    buildTypesAiobotocorePackage "cloud9" "2.15.1"
+      "sha256-7r/W5Hbv4J58aqpedt3ehe3E99U74sFiMHo5YnIPvh8=";
 
-  types-aiobotocore-cloudcontrol = buildTypesAiobotocorePackage "cloudcontrol" "2.12.3" "sha256-QtvI10XobuCCTdbJZk1JV8rbUnaKp1NhTQA4pOrl/8A=";
+  types-aiobotocore-cloudcontrol =
+    buildTypesAiobotocorePackage "cloudcontrol" "2.15.1"
+      "sha256-TwBEzvuYmKyL5Bx2VCZwK0przb4MWhDVqOfl1RF3uog=";
 
-  types-aiobotocore-clouddirectory = buildTypesAiobotocorePackage "clouddirectory" "2.12.3" "sha256-mrLk190wtLVLBY9oLKCBcGgNRRsOF4SAxMnyDvHif2U=";
+  types-aiobotocore-clouddirectory =
+    buildTypesAiobotocorePackage "clouddirectory" "2.15.1"
+      "sha256-ApxmZb2xwj0Leynjqi5YC4stEt0qcWQoSq3HffbvL3k=";
 
-  types-aiobotocore-cloudformation = buildTypesAiobotocorePackage "cloudformation" "2.12.3" "sha256-vjNBwP+SPBXBO9c7W+zOm800kNDfQYHs58ERS82/Hvk=";
+  types-aiobotocore-cloudformation =
+    buildTypesAiobotocorePackage "cloudformation" "2.15.1"
+      "sha256-ngI/9VlHFOpAjcXi04JX+MVEdjs1cxC2UT+9MQTblGo=";
 
-  types-aiobotocore-cloudfront = buildTypesAiobotocorePackage "cloudfront" "2.12.3" "sha256-xD0zbOk1Vjzr3DslNSQqFBIIN4NliV3rVlAmUcgfp7E=";
+  types-aiobotocore-cloudfront =
+    buildTypesAiobotocorePackage "cloudfront" "2.15.1"
+      "sha256-+y931CL0UdxZd5dnkSkNBAOmyuXqSb9XdIwQUKoXDTQ=";
 
-  types-aiobotocore-cloudhsm = buildTypesAiobotocorePackage "cloudhsm" "2.12.3" "sha256-PXuzI5csFVH9FbW7U0p71U9N3Avmjy0SK4ULdnqyWv4=";
+  types-aiobotocore-cloudhsm =
+    buildTypesAiobotocorePackage "cloudhsm" "2.15.1"
+      "sha256-Mv6fm2JLK4QVL1dTlVCIM1TaehUSlXTBATHvXHO26uM=";
 
-  types-aiobotocore-cloudhsmv2 = buildTypesAiobotocorePackage "cloudhsmv2" "2.12.3" "sha256-FBC4K4XZglWNdXvaf5vgk0KwlaO4HgQ+CsTxX8RpJSY=";
+  types-aiobotocore-cloudhsmv2 =
+    buildTypesAiobotocorePackage "cloudhsmv2" "2.15.1"
+      "sha256-9koftVpoxrFkg/WWYoLZPEf1nnWxqwEeAzeMIJB+n8A=";
 
-  types-aiobotocore-cloudsearch = buildTypesAiobotocorePackage "cloudsearch" "2.12.3" "sha256-0bIEY8/+KkoRXyaxV3XlsvNbhZGgi5Yfkaoe2G8Hx7U=";
+  types-aiobotocore-cloudsearch =
+    buildTypesAiobotocorePackage "cloudsearch" "2.15.1"
+      "sha256-1s+EM9O5Hfsa0qKK+HFrif2dH+C7+V51MkqvuKeYwyw=";
 
-  types-aiobotocore-cloudsearchdomain = buildTypesAiobotocorePackage "cloudsearchdomain" "2.12.3" "sha256-sQJloZGuAt3FDiVu0rXB4fs6LQ8Ypwanbhk905JlAWE=";
+  types-aiobotocore-cloudsearchdomain =
+    buildTypesAiobotocorePackage "cloudsearchdomain" "2.15.1"
+      "sha256-lDC8Za+QGc622FVrsNKPCuitYzU521BC20g7ZGUZMAI=";
 
-  types-aiobotocore-cloudtrail = buildTypesAiobotocorePackage "cloudtrail" "2.12.3" "sha256-kir3GveVZbvSEjnna0xKETIA/qKLgCZUxQ95WCw25vY=";
+  types-aiobotocore-cloudtrail =
+    buildTypesAiobotocorePackage "cloudtrail" "2.15.1"
+      "sha256-911ynsQTCCv9kd4TgeWR5Hv8ulz/kCnYxnw9PWk41IY=";
 
-  types-aiobotocore-cloudtrail-data = buildTypesAiobotocorePackage "cloudtrail-data" "2.12.3" "sha256-o+CM6IzDuQJz/Hcmzs4Z//21ujWzILBVN+TpfW0BnAc=";
+  types-aiobotocore-cloudtrail-data =
+    buildTypesAiobotocorePackage "cloudtrail-data" "2.15.1"
+      "sha256-dh/wbIJ6VTU8++QGXa/IDUCcGpdzBB4jfaizyn9jfyo=";
 
-  types-aiobotocore-cloudwatch = buildTypesAiobotocorePackage "cloudwatch" "2.12.3" "sha256-s0smSONUSY6hwm81yQXTa0hOe+0FfYHWJ+a2V8vWtnQ=";
+  types-aiobotocore-cloudwatch =
+    buildTypesAiobotocorePackage "cloudwatch" "2.15.1"
+      "sha256-nnyLWvv9esKWKlyZs9j+hUHTCBs55qC8PX5st0OHBxg=";
 
-  types-aiobotocore-codeartifact = buildTypesAiobotocorePackage "codeartifact" "2.12.3" "sha256-ueY0F1OWpMsFOOSzsE+P4aJ4r0R5UhoefuNyBL5kFSQ=";
+  types-aiobotocore-codeartifact =
+    buildTypesAiobotocorePackage "codeartifact" "2.15.1"
+      "sha256-f8xrPRkEOrw1fFI/q0U//LjzDCymhPOBpqrGPas5te4=";
 
-  types-aiobotocore-codebuild = buildTypesAiobotocorePackage "codebuild" "2.12.3" "sha256-FdTkOmj1ISBgBTcdf0z5QK/LxvsTobvKMqAd4hFK9bc=";
+  types-aiobotocore-codebuild =
+    buildTypesAiobotocorePackage "codebuild" "2.15.1"
+      "sha256-9lTVbw1mtKgIiDsI7pc2Lmd7W/1OjMBZtvWTL1mNqxM=";
 
-  types-aiobotocore-codecatalyst = buildTypesAiobotocorePackage "codecatalyst" "2.12.3" "sha256-J4kvblSIcjSsdtTIcxFEO5Dhno8Q8yrD1t/CYr4wmaQ=";
+  types-aiobotocore-codecatalyst =
+    buildTypesAiobotocorePackage "codecatalyst" "2.15.1"
+      "sha256-hEASqSTOFl8Pc+qBZ0Xqf36JivPVgHbZ2yZszo5Z9Uo=";
 
-  types-aiobotocore-codecommit = buildTypesAiobotocorePackage "codecommit" "2.12.3" "sha256-ipolOmnH/0M8Y+GY8qoOPhoDfs1nqMqoMotT2n/BSB8=";
+  types-aiobotocore-codecommit =
+    buildTypesAiobotocorePackage "codecommit" "2.15.1"
+      "sha256-1L7UGZNkl89ULZV5LiajDZxQmLpelTsjNSvUzUzwk+I=";
 
-  types-aiobotocore-codedeploy = buildTypesAiobotocorePackage "codedeploy" "2.12.3" "sha256-aEIj+XsEq35mzKliuUICkIoJV3Mx+l7kd+pFP+mX+Us=";
+  types-aiobotocore-codedeploy =
+    buildTypesAiobotocorePackage "codedeploy" "2.15.1"
+      "sha256-HaO/GSX14cKdKlwYmowzgWPfTDrUXyiyNlhz23lPyT8=";
 
-  types-aiobotocore-codeguru-reviewer = buildTypesAiobotocorePackage "codeguru-reviewer" "2.12.3" "sha256-UxR7jMxmKeqo2dazqRsnGCHmeycL2uwmuOxzN2Ug06I=";
+  types-aiobotocore-codeguru-reviewer =
+    buildTypesAiobotocorePackage "codeguru-reviewer" "2.15.1"
+      "sha256-0vNZTr6RNUv2TjQJ9GZIwe6jTFJH1KgJW82fVERSFIw=";
 
-  types-aiobotocore-codeguru-security = buildTypesAiobotocorePackage "codeguru-security" "2.12.3" "sha256-Dn8upHxWZMl5QRye+v47vlgi/SqhQi8PUOcVX8no7zQ=";
+  types-aiobotocore-codeguru-security =
+    buildTypesAiobotocorePackage "codeguru-security" "2.15.1"
+      "sha256-Mk5xbw1OhHcBDhohKu7emIz7c4BkxFA+LRtHrLL/LoQ=";
 
-  types-aiobotocore-codeguruprofiler = buildTypesAiobotocorePackage "codeguruprofiler" "2.12.3" "sha256-s1hhUmQ09fkP7DRGAoajbBrIr8AWioJBXO6vC/kbk9s=";
+  types-aiobotocore-codeguruprofiler =
+    buildTypesAiobotocorePackage "codeguruprofiler" "2.15.1"
+      "sha256-i/a6O3B69uPMsJsjW2hxMdLm/q2nvRwTlcpvqg0zcnQ=";
 
-  types-aiobotocore-codepipeline = buildTypesAiobotocorePackage "codepipeline" "2.12.3" "sha256-pS8TgS/thI4GJY7TqdSLFjnWltjZraE8QDV02GlL0Zc=";
+  types-aiobotocore-codepipeline =
+    buildTypesAiobotocorePackage "codepipeline" "2.15.1"
+      "sha256-2i5cZ7cCy0zt71bTmAZHPCKR8GVutVR2TXeGJIlTQ54=";
 
-  types-aiobotocore-codestar = buildTypesAiobotocorePackage "codestar" "2.12.3" "sha256-jciY4abtX0IMbxCGPrOshFQE8jNyqDS67UqUgt0UYe4=";
+  types-aiobotocore-codestar =
+    buildTypesAiobotocorePackage "codestar" "2.13.3"
+      "sha256-Z1ewx2RjmxbOQZ7wXaN54PVOuRs6LP3rMpsrVTacwjo=";
 
-  types-aiobotocore-codestar-connections = buildTypesAiobotocorePackage "codestar-connections" "2.12.3" "sha256-W1/tJKDFRpHB1hsguuAbDCHe+lzh0UAIWlqYVS83MyI=";
+  types-aiobotocore-codestar-connections =
+    buildTypesAiobotocorePackage "codestar-connections" "2.15.1"
+      "sha256-Qcz4JHpT34WKY0+/CRDavwiI99GCwxA/SBftb6Wi9J0=";
 
-  types-aiobotocore-codestar-notifications = buildTypesAiobotocorePackage "codestar-notifications" "2.12.3" "sha256-1r65KMMX+A6Ww3+MgG9kIXH48zI9yxt/FbNXq7ATACs=";
+  types-aiobotocore-codestar-notifications =
+    buildTypesAiobotocorePackage "codestar-notifications" "2.15.1"
+      "sha256-qdVJ+6ELs5YKqIV/26Ar2FW4KC3DGofHJ/+xo5xzT3M=";
 
-  types-aiobotocore-cognito-identity = buildTypesAiobotocorePackage "cognito-identity" "2.12.3" "sha256-Njd/E0EgRqq69EhYhbrmcu71GFvoqG9vI61i4RXIInQ=";
+  types-aiobotocore-cognito-identity =
+    buildTypesAiobotocorePackage "cognito-identity" "2.15.1"
+      "sha256-wlpdAHtWZd1l8jYduPT0Dc0LIWxOiiA05uXTpL8fQWo=";
 
-  types-aiobotocore-cognito-idp = buildTypesAiobotocorePackage "cognito-idp" "2.12.3" "sha256-eFjfo4grkBO9FGUySGAOclXUjJ+RzaeI0FG7GqZweNc=";
+  types-aiobotocore-cognito-idp =
+    buildTypesAiobotocorePackage "cognito-idp" "2.15.1"
+      "sha256-zpuLoNTgcbYQJ0DF52qoPVm7nspMiITQczoREaCtlCI=";
 
-  types-aiobotocore-cognito-sync = buildTypesAiobotocorePackage "cognito-sync" "2.12.3" "sha256-wSOf6kdxIA2oe2a06c9MuIxnvmPb1UZoY+TPKKWNgfA=";
+  types-aiobotocore-cognito-sync =
+    buildTypesAiobotocorePackage "cognito-sync" "2.15.1"
+      "sha256-XYPt1jgk+BEjDpNH2XHNf0hoOwzewoxqxy+2qjv2dMw=";
 
-  types-aiobotocore-comprehend = buildTypesAiobotocorePackage "comprehend" "2.12.3" "sha256-TSZn6O5sSqutb+hcA5tJWplkN8jN7q1uVfQyoK6p+sM=";
+  types-aiobotocore-comprehend =
+    buildTypesAiobotocorePackage "comprehend" "2.15.1"
+      "sha256-XbQ3BYHXGNb4aKFo+WegaZ8613FiVRdthZ0zU7borjQ=";
 
-  types-aiobotocore-comprehendmedical = buildTypesAiobotocorePackage "comprehendmedical" "2.12.3" "sha256-foykefLjYtgroFE14HAKJ0qK/vL7U6LGGP3z8P/ZV9E=";
+  types-aiobotocore-comprehendmedical =
+    buildTypesAiobotocorePackage "comprehendmedical" "2.15.1"
+      "sha256-3cifXhAhIxxZVRdE0Pt3SmaWwoj75iIpp6ThnLeL+BM=";
 
-  types-aiobotocore-compute-optimizer = buildTypesAiobotocorePackage "compute-optimizer" "2.12.3" "sha256-HM7wBstqaO6pnvXHGTgiIa1FcdJGImW/2BFl/stRJ/w=";
+  types-aiobotocore-compute-optimizer =
+    buildTypesAiobotocorePackage "compute-optimizer" "2.15.1"
+      "sha256-8awRuy2iD9mYSuLaMrbpu0bZ1HlY9kIrF4/ZY7kECbQ=";
 
-  types-aiobotocore-config = buildTypesAiobotocorePackage "config" "2.12.3" "sha256-Ab7L47TU/w5Mk36MJGb3VfHG1wXyHmePDaP37FnQikM=";
+  types-aiobotocore-config =
+    buildTypesAiobotocorePackage "config" "2.15.1"
+      "sha256-n8RP98EO8AB0a3zqKlc7TZBttT7bHRV2EFYBy999q4g=";
 
-  types-aiobotocore-connect = buildTypesAiobotocorePackage "connect" "2.12.3" "sha256-R+p+mV/+SMFaWczEwECfoReQ9KBswiYj0jGysFPn/LQ=";
+  types-aiobotocore-connect =
+    buildTypesAiobotocorePackage "connect" "2.15.1"
+      "sha256-9AfqyTav6mIPiBrMGP6Rh+ytAS92LdLg/4VdTaSKB6I=";
 
-  types-aiobotocore-connect-contact-lens = buildTypesAiobotocorePackage "connect-contact-lens" "2.12.3" "sha256-KuyJAoend5pAMEEh1EbqUuhWwoFSI5QyJhL/T4fg3vA=";
+  types-aiobotocore-connect-contact-lens =
+    buildTypesAiobotocorePackage "connect-contact-lens" "2.15.1"
+      "sha256-qTq+tsvlPDq9LDTNgZuwa1zva17PDm1zBMnDX5nLR1g=";
 
-  types-aiobotocore-connectcampaigns = buildTypesAiobotocorePackage "connectcampaigns" "2.12.3" "sha256-8RDp99dyEgxBQNJbQXMxU6Td6rCKBaOtvk22mGVkMpo=";
+  types-aiobotocore-connectcampaigns =
+    buildTypesAiobotocorePackage "connectcampaigns" "2.15.1"
+      "sha256-kIF+sS4RpsmhiuttzwFViHaOLZ5B69O//hwEYGrMfr8=";
 
-  types-aiobotocore-connectcases = buildTypesAiobotocorePackage "connectcases" "2.12.3" "sha256-ka9T0Ln54mHiPec74fHYkOBL3RbJJ+hVOSkqh35LBXs=";
+  types-aiobotocore-connectcases =
+    buildTypesAiobotocorePackage "connectcases" "2.15.1"
+      "sha256-hTUDhtsv5KWOiM9jYrT4/IW+GmnCmWnhMZpoQIClQ3k=";
 
-  types-aiobotocore-connectparticipant = buildTypesAiobotocorePackage "connectparticipant" "2.12.3" "sha256-nAUWrVmTO2PbB4aJERZaZ2NBdE/fH5pyj2UYPxn1BJ0=";
+  types-aiobotocore-connectparticipant =
+    buildTypesAiobotocorePackage "connectparticipant" "2.15.1"
+      "sha256-ffSs8Z/TQatJDUKmjdclI5DYMf5/EI/uEi8r4EnKFds=";
 
-  types-aiobotocore-controltower = buildTypesAiobotocorePackage "controltower" "2.12.3" "sha256-tXkoU2hPbB0IYR0QP9yKSLwRknrIcupeeIjHoZD8id4=";
+  types-aiobotocore-controltower =
+    buildTypesAiobotocorePackage "controltower" "2.15.1"
+      "sha256-5Sa+K+DTpM2YwTfhlufD9MxTk4pv+K1wE9PYKM1zAxw=";
 
-  types-aiobotocore-cur = buildTypesAiobotocorePackage "cur" "2.12.3" "sha256-DbLeEVfr1xXtwIT9eqBY6+Enk1AFfF4ChzOeSO2jSc8=";
+  types-aiobotocore-cur =
+    buildTypesAiobotocorePackage "cur" "2.15.1"
+      "sha256-NfY/cGT+ft8bWitgYHbySblXNdYj/c/4p5jr2yOs5+c=";
 
-  types-aiobotocore-customer-profiles = buildTypesAiobotocorePackage "customer-profiles" "2.12.3" "sha256-TpmMtpIVdE2SPr+ZaKHUoNqJQFoglcyF4pBIn0jkW9Q=";
+  types-aiobotocore-customer-profiles =
+    buildTypesAiobotocorePackage "customer-profiles" "2.15.1"
+      "sha256-fQONh48vGKkr+ICjI3EqKW+jNXH/DSm0a96pTf4JQmk=";
 
-  types-aiobotocore-databrew = buildTypesAiobotocorePackage "databrew" "2.12.3" "sha256-fKUL2ZJgytMhv4rni6lD92M1uh1vnUfFcjh30Tdfofk=";
+  types-aiobotocore-databrew =
+    buildTypesAiobotocorePackage "databrew" "2.15.1"
+      "sha256-DNayl61Eorza7nIjjbxbFzs+lIN3oUwpDIImJEMHX7Y=";
 
-  types-aiobotocore-dataexchange = buildTypesAiobotocorePackage "dataexchange" "2.12.3" "sha256-x5t5rK4UQ4ltFqSB2dyG6NXrzoJLPBBF8Ovn8Fka8Mo=";
+  types-aiobotocore-dataexchange =
+    buildTypesAiobotocorePackage "dataexchange" "2.15.1"
+      "sha256-v9bq7ub+8q2NrZtaqWqQh2MSKoGfDBdTVW1qKTSooug=";
 
-  types-aiobotocore-datapipeline = buildTypesAiobotocorePackage "datapipeline" "2.12.3" "sha256-eMMWqVDoEmIJV3P4aA15bXsWEJ1cBpcvFf6elzvKBsM=";
+  types-aiobotocore-datapipeline =
+    buildTypesAiobotocorePackage "datapipeline" "2.15.1"
+      "sha256-9hBxeCltGrxtMGuTKTwVp/aHHccnfDKuI0QXv50uKNA=";
 
-  types-aiobotocore-datasync = buildTypesAiobotocorePackage "datasync" "2.12.3" "sha256-TMD7XAqQivkQJbwBr6B4s629euXQyvxglG+hFhH7C8s=";
+  types-aiobotocore-datasync =
+    buildTypesAiobotocorePackage "datasync" "2.15.1"
+      "sha256-z7t65Ioz0NtiToPkTIbYcBjWlJg1rcTIj0u/qmPkhMA=";
 
-  types-aiobotocore-dax = buildTypesAiobotocorePackage "dax" "2.12.3" "sha256-JV8EpsEUOmeGEvSmb2zUboota0wu99TcvBcwkYGFa50=";
+  types-aiobotocore-dax =
+    buildTypesAiobotocorePackage "dax" "2.15.1"
+      "sha256-/NyvlFx8/nOWClB3ZPqTt67yGN2ssYojWukw0S3v274=";
 
-  types-aiobotocore-detective = buildTypesAiobotocorePackage "detective" "2.12.3" "sha256-1SRrURvp+hOnYWZsANu8waOJJ4SUBzGPAEFwNFyW4zc=";
+  types-aiobotocore-detective =
+    buildTypesAiobotocorePackage "detective" "2.15.1"
+      "sha256-DWf6HTvFyMYRiOLQrawp5GwhXniNS9mhwPNyprCYrt0=";
 
-  types-aiobotocore-devicefarm = buildTypesAiobotocorePackage "devicefarm" "2.12.3" "sha256-3XTNHMYWlZUK7o7XQYpnsCq3FHBYuXJ6y2iVM+caKcc=";
+  types-aiobotocore-devicefarm =
+    buildTypesAiobotocorePackage "devicefarm" "2.15.1"
+      "sha256-05IkwZCPZvQGkRya7TdN1huFpMxuR1zxB+b8JSFI/oM=";
 
-  types-aiobotocore-devops-guru = buildTypesAiobotocorePackage "devops-guru" "2.12.3" "sha256-kfeH7r2zaNw3gDH7QqKe2x93kEfzeUMY5aBOJFDz3vE=";
+  types-aiobotocore-devops-guru =
+    buildTypesAiobotocorePackage "devops-guru" "2.15.1"
+      "sha256-n62US1ENdO1MFljx5zeLx+LblbiJyxefhN2+nlxu2GA=";
 
-  types-aiobotocore-directconnect = buildTypesAiobotocorePackage "directconnect" "2.12.3" "sha256-0fsNThA4QJhTC8JlTJviOv+GwrMvVQxoddvRX4+Nrtk=";
+  types-aiobotocore-directconnect =
+    buildTypesAiobotocorePackage "directconnect" "2.15.1"
+      "sha256-knhkLyC1uPX4KjiFcgFf9ys2hCz38++q55nbnUM3n/Q=";
 
-  types-aiobotocore-discovery = buildTypesAiobotocorePackage "discovery" "2.12.3" "sha256-acjirpyoMe2Mq72IuGHb85q/B0UHhQ2wEJO9Cy+OHmQ=";
+  types-aiobotocore-discovery =
+    buildTypesAiobotocorePackage "discovery" "2.15.1"
+      "sha256-JG/1ZQ9cSCMzqF6CVTIu7EIm0ORbLn3gM8gcCCSRhsQ=";
 
-  types-aiobotocore-dlm = buildTypesAiobotocorePackage "dlm" "2.12.3" "sha256-Z4V00bBobcChsYr6MPJ+pwCV1VJwHVMeks2URMVGzgk=";
+  types-aiobotocore-dlm =
+    buildTypesAiobotocorePackage "dlm" "2.15.1"
+      "sha256-Pyi45ZWBuEsb3GoumJkX+c8QnX3J6HobLFqwkm7I0ng=";
 
-  types-aiobotocore-dms = buildTypesAiobotocorePackage "dms" "2.12.3" "sha256-JG8rHk86RHyCEeLPGHERMZ1f+gBAcS+TI+RSfxVWkdI=";
+  types-aiobotocore-dms =
+    buildTypesAiobotocorePackage "dms" "2.15.1"
+      "sha256-wius84bAUyldt84o8qUeBSzajkY8mLco85rI4NAIQcc=";
 
-  types-aiobotocore-docdb = buildTypesAiobotocorePackage "docdb" "2.12.3" "sha256-t6ybt/wp+YL2qNyI89RzijJT1qPX6cBykQ803F81Q/0=";
+  types-aiobotocore-docdb =
+    buildTypesAiobotocorePackage "docdb" "2.15.1"
+      "sha256-MF8CGeObwgB5LW1o1ynwahm9GZHTvxjlgNXDyFRjpWM=";
 
-  types-aiobotocore-docdb-elastic = buildTypesAiobotocorePackage "docdb-elastic" "2.12.3" "sha256-MI9e+SYSjbO8PMRFa8VSyAfoupTb8wzhO+DXCcQgu3Q=";
+  types-aiobotocore-docdb-elastic =
+    buildTypesAiobotocorePackage "docdb-elastic" "2.15.1"
+      "sha256-+gyO2dno529rxF5Uj1pyQ0+fH1CJK7LJs/U4WIpRIX4=";
 
-  types-aiobotocore-drs = buildTypesAiobotocorePackage "drs" "2.12.3" "sha256-qsyiQH75/L2HPM/QrQ5nrf9Bh+7xClIQggCWSA/7xho=";
+  types-aiobotocore-drs =
+    buildTypesAiobotocorePackage "drs" "2.15.1"
+      "sha256-qtMwQ17MpJ0K7zbKr4dyAGWEfHqfM+wXQe22raG/i1E=";
 
-  types-aiobotocore-ds = buildTypesAiobotocorePackage "ds" "2.12.3" "sha256-ms93yRBMH/9hVVyN5jGZqP6Su4qdP/oKRHyAMlM5Nis=";
+  types-aiobotocore-ds =
+    buildTypesAiobotocorePackage "ds" "2.15.1"
+      "sha256-qU+5PMZqxbskuB/ubXeigzS5t+A5m0WW0e4NVQjFLO4=";
 
-  types-aiobotocore-dynamodb = buildTypesAiobotocorePackage "dynamodb" "2.12.3" "sha256-sBsjF7ZIldzEN6LyXy9r9zmeKMEX8QXQE7GKYmXrYPg=";
+  types-aiobotocore-dynamodb =
+    buildTypesAiobotocorePackage "dynamodb" "2.15.1"
+      "sha256-hQt2Htye+VubSHw+2Iz5E8IgzHGwAwmyYEkNI0br7eU=";
 
-  types-aiobotocore-dynamodbstreams = buildTypesAiobotocorePackage "dynamodbstreams" "2.12.3" "sha256-0SZQFZf19WRnNA0uTbOoHxfuVZ/Oo4HgttiJcJ+ec3s=";
+  types-aiobotocore-dynamodbstreams =
+    buildTypesAiobotocorePackage "dynamodbstreams" "2.15.1"
+      "sha256-n2NZxFSH9ymucBLagUAaWDgAN4kDsfKqB2W2ir6aEC8=";
 
-  types-aiobotocore-ebs = buildTypesAiobotocorePackage "ebs" "2.12.3" "sha256-nGyIT/TXqUMRWwA5tIDie1ktVwy0tspw3avgJ//kW5k=";
+  types-aiobotocore-ebs =
+    buildTypesAiobotocorePackage "ebs" "2.15.1"
+      "sha256-nzm7mnREUd6MEHan4cTc0MaorGo/X+eKbGH1/giG16w=";
 
-  types-aiobotocore-ec2 = buildTypesAiobotocorePackage "ec2" "2.12.3" "sha256-8OPqG7wMdu92O0BfGb9zI5Wj+NFA25jWZN0dvzQV0Yo=";
+  types-aiobotocore-ec2 =
+    buildTypesAiobotocorePackage "ec2" "2.15.1"
+      "sha256-QzPGQirl2zA5m2yqqXjUC8MIsUDbOg1yl252KJU+Ipc=";
 
-  types-aiobotocore-ec2-instance-connect = buildTypesAiobotocorePackage "ec2-instance-connect" "2.12.3" "sha256-Va2yM0tmcIj4b2wXUzWyhuhv5lhcfCslR0h0C7A5EsY=";
+  types-aiobotocore-ec2-instance-connect =
+    buildTypesAiobotocorePackage "ec2-instance-connect" "2.15.1"
+      "sha256-A5OdqOTax+3/v6GG3IzU771A4l3OXQhqlowknE0DnNU=";
 
-  types-aiobotocore-ecr = buildTypesAiobotocorePackage "ecr" "2.12.3" "sha256-FshaLIdFjrTh/bxE9X2to7OMqORJUl/THmE4rhIFbFI=";
+  types-aiobotocore-ecr =
+    buildTypesAiobotocorePackage "ecr" "2.15.1"
+      "sha256-3b5SI5qHhvVIa8hqLp/YZu9b3DDpZm5ogRv0I0NuI0Y=";
 
-  types-aiobotocore-ecr-public = buildTypesAiobotocorePackage "ecr-public" "2.12.3" "sha256-GXZ0wSgko3LNMoWFdGAk75Z/ALecaJNJjog9zog+0pY=";
+  types-aiobotocore-ecr-public =
+    buildTypesAiobotocorePackage "ecr-public" "2.15.1"
+      "sha256-enLMc0Vg+RwO3SBzvDd/nKQvNbCllMJMS4BBKGUNWuQ=";
 
-  types-aiobotocore-ecs = buildTypesAiobotocorePackage "ecs" "2.12.3" "sha256-JumaYfl8+YpgxAnxZF+1IW4Xhw4UuT2wxX979xbGFqc=";
+  types-aiobotocore-ecs =
+    buildTypesAiobotocorePackage "ecs" "2.15.1"
+      "sha256-GOUkXglekGMNDlWdz9dyGvZpgSTfnZAh3e80CMvzumA=";
 
-  types-aiobotocore-efs = buildTypesAiobotocorePackage "efs" "2.12.3" "sha256-Ea6AgjHGqrUNP8TF6PFNStVAuRED80agLuzhjdkIUM4=";
+  types-aiobotocore-efs =
+    buildTypesAiobotocorePackage "efs" "2.15.1"
+      "sha256-+KZQnRFKF+0nmOqec1jHa0ewAcfLBoW9mrMVNZn6q78=";
 
-  types-aiobotocore-eks = buildTypesAiobotocorePackage "eks" "2.12.3" "sha256-JceWf2TRg+t55trAJhFAp4YVarc56ZiZYdjB7lhP/cc=";
+  types-aiobotocore-eks =
+    buildTypesAiobotocorePackage "eks" "2.15.1"
+      "sha256-4d/rL6L/W2zfZ1naceSfH/E1y2DUNMcQ2tJaaKsRjLw=";
 
-  types-aiobotocore-elastic-inference = buildTypesAiobotocorePackage "elastic-inference" "2.12.3" "sha256-hhgI8CplzvzbKVPB43udHODE+td4B4Tdk2vls+JNyn4=";
+  types-aiobotocore-elastic-inference =
+    buildTypesAiobotocorePackage "elastic-inference" "2.15.1"
+      "sha256-AOhrrWLtKq5Wr79TcFNa+A3/MhHMnAPMIPEgcum2/ZA=";
 
-  types-aiobotocore-elasticache = buildTypesAiobotocorePackage "elasticache" "2.12.3" "sha256-DnZqKJCvFFzgjncV6w+Cxi7HTtA7A7t/RGJyQ9icYos=";
+  types-aiobotocore-elasticache =
+    buildTypesAiobotocorePackage "elasticache" "2.15.1"
+      "sha256-Psxy6JILUzvwmUj9QP2wTeIgt/nbtpbG3LUozN9ltek=";
 
-  types-aiobotocore-elasticbeanstalk = buildTypesAiobotocorePackage "elasticbeanstalk" "2.12.3" "sha256-HC3+b8rFuJshIax6g8oLFMSxxHcbYHP3HDvP2u3UX3U=";
+  types-aiobotocore-elasticbeanstalk =
+    buildTypesAiobotocorePackage "elasticbeanstalk" "2.15.1"
+      "sha256-3Jt67THyNfn92g6L/GZwPi0HLb6bpLuoDAkuXKPZu1Y=";
 
-  types-aiobotocore-elastictranscoder = buildTypesAiobotocorePackage "elastictranscoder" "2.12.3" "sha256-jXW3LMDaQgXL7QVUJ0OxEUaNfPED5GjXefbWzzf+MGA=";
+  types-aiobotocore-elastictranscoder =
+    buildTypesAiobotocorePackage "elastictranscoder" "2.15.1"
+      "sha256-mGNHO2T129nPrODffC8Y9+R+XKjVVUnFrw1yDkJ0g/A=";
 
-  types-aiobotocore-elb = buildTypesAiobotocorePackage "elb" "2.12.3" "sha256-L5be76HYM3piIMrbP0QiaLKc6YOdqPMR52fBuNkpLx4=";
+  types-aiobotocore-elb =
+    buildTypesAiobotocorePackage "elb" "2.15.1"
+      "sha256-wceBAH30EypOqb4GqTP6aL6Ribm4l6b082+vB4sRDMs=";
 
-  types-aiobotocore-elbv2 = buildTypesAiobotocorePackage "elbv2" "2.12.3" "sha256-MCM9zyNpUUt4aAO04aMmPzg+r71VqQzeV4eH+ukBZiw=";
+  types-aiobotocore-elbv2 =
+    buildTypesAiobotocorePackage "elbv2" "2.15.1"
+      "sha256-4si+dqz/nPdXAF+eUkTICZQ8JaT+DcxEbmrxKZcF5G0=";
 
-  types-aiobotocore-emr = buildTypesAiobotocorePackage "emr" "2.12.3" "sha256-5hCuf3QgmnKhaI8L5BmZfOztgsB9Quy/Zwwu3vutKj0=";
+  types-aiobotocore-emr =
+    buildTypesAiobotocorePackage "emr" "2.15.1"
+      "sha256-4Ak5F+RnUlOnMvEhVTXrHXkQQzWSo7iRIojrwYifMnA=";
 
-  types-aiobotocore-emr-containers = buildTypesAiobotocorePackage "emr-containers" "2.12.3" "sha256-Qq8koQIHkd4ZsuYfAnW7wpCgRzpGaFyKRCN5WQBIqJY=";
+  types-aiobotocore-emr-containers =
+    buildTypesAiobotocorePackage "emr-containers" "2.15.1"
+      "sha256-Q1ZGZfpub4fceqFyBTLxj5G27ByHYPRH8KvEMyFZWyQ=";
 
-  types-aiobotocore-emr-serverless = buildTypesAiobotocorePackage "emr-serverless" "2.12.3" "sha256-b5iOWjrnxCT/enOPOixlD4tdav5DMavg32xlqE2u4DY=";
+  types-aiobotocore-emr-serverless =
+    buildTypesAiobotocorePackage "emr-serverless" "2.15.1"
+      "sha256-lHSPS5/HAW2NFg6zCKXARznJ1UjTWIn/YDR9XlMa1ag=";
 
-  types-aiobotocore-entityresolution = buildTypesAiobotocorePackage "entityresolution" "2.12.3" "sha256-aIFYYN2GPbDYPjQsbm9D6WPNRAGmFpfkQPhLYwGwZH8=";
+  types-aiobotocore-entityresolution =
+    buildTypesAiobotocorePackage "entityresolution" "2.15.1"
+      "sha256-QXAAHqiq1ThUvS5Y59SXA0OKQza0IrxPUyGwpZ1Ft1U=";
 
-  types-aiobotocore-es = buildTypesAiobotocorePackage "es" "2.12.3" "sha256-xVn8IRXYklNychp8P8z79yVVwlCYzvhmnhSgq9LJv8Y=";
+  types-aiobotocore-es =
+    buildTypesAiobotocorePackage "es" "2.15.1"
+      "sha256-lHKKWM984zvnbcO2ord+XkbFm91y2OAJlddm3dongo8=";
 
-  types-aiobotocore-events = buildTypesAiobotocorePackage "events" "2.12.3" "sha256-8n9aFOaZYqQvwnb1Yt509JhZjNisL+dY3PVqkxbwbQA=";
+  types-aiobotocore-events =
+    buildTypesAiobotocorePackage "events" "2.15.1"
+      "sha256-3XQ9EjRu2qfpvHAWbM7XHodvMCR5PXOzM5ttes7ggEM=";
 
-  types-aiobotocore-evidently = buildTypesAiobotocorePackage "evidently" "2.12.3" "sha256-8QZLlmUwuveQf1dXbJZGUJC2XiKA4vrdxG6Ee9F+jPA=";
+  types-aiobotocore-evidently =
+    buildTypesAiobotocorePackage "evidently" "2.15.1"
+      "sha256-DR+GYAUdE7Nfn0X0sp3IshbfKjcrtFVCk3KObFlQbdM=";
 
-  types-aiobotocore-finspace = buildTypesAiobotocorePackage "finspace" "2.12.3" "sha256-icXRzSXSn/M50jVun2Evm1QB9m9feFGWazKSvZwCa30=";
+  types-aiobotocore-finspace =
+    buildTypesAiobotocorePackage "finspace" "2.15.1"
+      "sha256-kIg535sFaySMannjaMHmVEZqx7Lh1OnGpBc/CxMqWzY=";
 
-  types-aiobotocore-finspace-data = buildTypesAiobotocorePackage "finspace-data" "2.12.3" "sha256-dPw16YNaK5CvMNWxdkK0vNVzXcDY3hocWr9ffg2vtGI=";
+  types-aiobotocore-finspace-data =
+    buildTypesAiobotocorePackage "finspace-data" "2.15.1"
+      "sha256-rGvEfMJt7mmrned4uLGaN58ZGgFJzNPwxFCRu3SghWg=";
 
-  types-aiobotocore-firehose = buildTypesAiobotocorePackage "firehose" "2.12.3" "sha256-xcFTvd7d+lrXiJ4SlxiznwFfFRHnxmTZk6vwVurICvc=";
+  types-aiobotocore-firehose =
+    buildTypesAiobotocorePackage "firehose" "2.15.1"
+      "sha256-gkBhNs6Cpy7dL4o/SyOxwF7eCwlnHaGxbSjO0FvPxpM=";
 
-  types-aiobotocore-fis = buildTypesAiobotocorePackage "fis" "2.12.3" "sha256-ivJ/ekU1qvjuOXnLNXUUoGp/xc0DtHnqh4QwqUyIwk8=";
+  types-aiobotocore-fis =
+    buildTypesAiobotocorePackage "fis" "2.15.1"
+      "sha256-BKyTNVhRzYjQDXwhTpo9rblgEonzPubmJIOrCnwaEus=";
 
-  types-aiobotocore-fms = buildTypesAiobotocorePackage "fms" "2.12.3" "sha256-ddMnkPvFyn2HG88pYapA3TWbOgV6DRLbnSWdd5CauyM=";
+  types-aiobotocore-fms =
+    buildTypesAiobotocorePackage "fms" "2.15.1"
+      "sha256-9v2x/BYM6tiPWPC/c7ZNJufl5EStBRq7dSW9S3jaWTc=";
 
-  types-aiobotocore-forecast = buildTypesAiobotocorePackage "forecast" "2.12.3" "sha256-RvaEG2bWIOOOdPOk1A/CW+UTtYMuQ3ZyD0tYfLzOhfc=";
+  types-aiobotocore-forecast =
+    buildTypesAiobotocorePackage "forecast" "2.15.1"
+      "sha256-7B24s2z0hwaXZzj/ryhfIqbiFPaiFuC8GOn5MaYsB0U=";
 
-  types-aiobotocore-forecastquery = buildTypesAiobotocorePackage "forecastquery" "2.12.3" "sha256-I5vvbmW1BO0ZfKkQEXAhcGb8Q9DMKXDR9AYFcAm6bLM=";
+  types-aiobotocore-forecastquery =
+    buildTypesAiobotocorePackage "forecastquery" "2.15.1"
+      "sha256-Z/Ul3IhUDhYjijXU9fFCOsG2r927wvl3pOWP+SxZ7rE=";
 
-  types-aiobotocore-frauddetector = buildTypesAiobotocorePackage "frauddetector" "2.12.3" "sha256-NGi+3jWxWPMlsKGDjdWzcORI6ElDbtVexeVQh71cego=";
+  types-aiobotocore-frauddetector =
+    buildTypesAiobotocorePackage "frauddetector" "2.15.1"
+      "sha256-ZNnWPccp4nnNAUk6tsAfV6xYS0U98rh17bTXG9+NjBY=";
 
-  types-aiobotocore-fsx = buildTypesAiobotocorePackage "fsx" "2.12.3" "sha256-1vl16o9foO6wmumbOvgF3FA8vEOjpCmkcHaktY8pEYY=";
+  types-aiobotocore-fsx =
+    buildTypesAiobotocorePackage "fsx" "2.15.1"
+      "sha256-72IyOCvtGPR2JNpIIy0rgiACfmDfxKlV/wo5AvzTdf4=";
 
-  types-aiobotocore-gamelift = buildTypesAiobotocorePackage "gamelift" "2.12.3" "sha256-FARwguNmU+BDV5XyJSL4dqGESEoKmXPjVoPU6ktzRIg=";
+  types-aiobotocore-gamelift =
+    buildTypesAiobotocorePackage "gamelift" "2.15.1"
+      "sha256-jFgO3ks0u/1YMjeQXHvMYoa4O35+VrvpeXWIAeJRj2I=";
 
-  types-aiobotocore-gamesparks = buildTypesAiobotocorePackage "gamesparks" "2.7.0" "sha256-oVbKtuLMPpCQcZYx/cH1Dqjv/t6/uXsveflfFVqfN+8=";
+  types-aiobotocore-gamesparks =
+    buildTypesAiobotocorePackage "gamesparks" "2.7.0"
+      "sha256-oVbKtuLMPpCQcZYx/cH1Dqjv/t6/uXsveflfFVqfN+8=";
 
-  types-aiobotocore-glacier = buildTypesAiobotocorePackage "glacier" "2.12.3" "sha256-Xpob7f0ucl+F+X++5GAdQ4B0IgF4YM7oRFFbm77n4LI=";
+  types-aiobotocore-glacier =
+    buildTypesAiobotocorePackage "glacier" "2.15.1"
+      "sha256-5BewcGF6cDdPnTqyKLHlJIYuiv5N4GSuIlouRCEMeAQ=";
 
-  types-aiobotocore-globalaccelerator = buildTypesAiobotocorePackage "globalaccelerator" "2.12.3" "sha256-aMaPlDZGLvuPDjH5p8bKU0JYRImjheJnpP2oKshtVDY=";
+  types-aiobotocore-globalaccelerator =
+    buildTypesAiobotocorePackage "globalaccelerator" "2.15.1"
+      "sha256-fh2RP530haUdEOM7noDiBmiHf5Cv+YvF8S4Xoh84K20=";
 
-  types-aiobotocore-glue = buildTypesAiobotocorePackage "glue" "2.12.3" "sha256-d9rFpL4iv1k2zJgE8qQymisVDuOJMEL6ZuQkuV78d0U=";
+  types-aiobotocore-glue =
+    buildTypesAiobotocorePackage "glue" "2.15.1"
+      "sha256-z4fe7DbzI2AIkCa4qBS4kGyPcgti1d/CPJCqe82OuR4=";
 
-  types-aiobotocore-grafana = buildTypesAiobotocorePackage "grafana" "2.12.3" "sha256-jmavkKefg/AZMrhU1bhI6Njy78MDNrT+3riIaKIAUlY=";
+  types-aiobotocore-grafana =
+    buildTypesAiobotocorePackage "grafana" "2.15.1"
+      "sha256-V6uqUzVntsISmOUH9Mjy5DjLxiYkPN9k6BtQFwer4wM=";
 
-  types-aiobotocore-greengrass = buildTypesAiobotocorePackage "greengrass" "2.12.3" "sha256-zvg/8evrSn14vr9RJXeI4YVOiwva8GwdnCHKkfMygKk=";
+  types-aiobotocore-greengrass =
+    buildTypesAiobotocorePackage "greengrass" "2.15.1"
+      "sha256-C/W6eBJauG9QI8MMc7hFzkN4A21RRMH6kSU5Wq/qXus=";
 
-  types-aiobotocore-greengrassv2 = buildTypesAiobotocorePackage "greengrassv2" "2.12.3" "sha256-3DHm+EPlUQA3LHs1Pbi+B9ipCGg/sN7F5etOzJoXTMY=";
+  types-aiobotocore-greengrassv2 =
+    buildTypesAiobotocorePackage "greengrassv2" "2.15.1"
+      "sha256-00hMhRWJ4W91I6cG5IXyyNqjyxPFrwmbHp69EWIIkMg=";
 
-  types-aiobotocore-groundstation = buildTypesAiobotocorePackage "groundstation" "2.12.3" "sha256-0n8ec0H/Nz7Z5Dl7cK/BdxCSIv+wmP/jsS+uL9+ar9Q=";
+  types-aiobotocore-groundstation =
+    buildTypesAiobotocorePackage "groundstation" "2.15.1"
+      "sha256-++YYod+5UlCzknDJ/0l3hwPNukO9o2M0CoZR0lyOTnA=";
 
-  types-aiobotocore-guardduty = buildTypesAiobotocorePackage "guardduty" "2.12.3" "sha256-POI2RmnRoUfjx74/MC/Nf9bqxsn3jUnkzHwuY5b7Oy4=";
+  types-aiobotocore-guardduty =
+    buildTypesAiobotocorePackage "guardduty" "2.15.1"
+      "sha256-+fJrH77TQKCBoio2R3LEJLmUOtSXd9oaf+PaN0YyEdA=";
 
-  types-aiobotocore-health = buildTypesAiobotocorePackage "health" "2.12.3" "sha256-5sa+9i8KahglRVdJnTqp8zYUHfvGq4GCfcMYhd2qJdU=";
+  types-aiobotocore-health =
+    buildTypesAiobotocorePackage "health" "2.15.1"
+      "sha256-KNaHkgFc1W6cK7nwt7ZibmeL3zMmO2/6O1OlRkrUERY=";
 
-  types-aiobotocore-healthlake = buildTypesAiobotocorePackage "healthlake" "2.12.3" "sha256-CQDgDkaJ0hbmsRMxxBXGBOzn2XU5DG4uBFUOl3P4XwY=";
+  types-aiobotocore-healthlake =
+    buildTypesAiobotocorePackage "healthlake" "2.15.1"
+      "sha256-JtP47qVkcTMtafPT/YbEu/CFOh4yp1VLICTVzB2LeV4=";
 
-  types-aiobotocore-honeycode = buildTypesAiobotocorePackage "honeycode" "2.12.3" "sha256-NDecqTRmki4/c55vpjW8aCLW9fkKvkDRHAMrf54P9cM=";
+  types-aiobotocore-honeycode =
+    buildTypesAiobotocorePackage "honeycode" "2.13.0"
+      "sha256-DeeheoQeFEcDH21DSNs2kSR1rjnPLtTgz0yNCFnE+Io=";
 
-  types-aiobotocore-iam = buildTypesAiobotocorePackage "iam" "2.12.3" "sha256-0zxf9IpiVF1nxY+Cfk631+vTtjojo8Ky4M69zfU62MQ=";
+  types-aiobotocore-iam =
+    buildTypesAiobotocorePackage "iam" "2.15.1"
+      "sha256-CKNmGY362fvOEdm9+UvElI9U3dZhjY4sTDnuzBaPJyw=";
 
-  types-aiobotocore-identitystore = buildTypesAiobotocorePackage "identitystore" "2.12.3" "sha256-GZnXAGM2WMamZkyHmxb/+uRfUtLmmXCkN1yRgUmO1pE=";
+  types-aiobotocore-identitystore =
+    buildTypesAiobotocorePackage "identitystore" "2.15.1"
+      "sha256-LIEyxMseTo/G44R9gUeWFOoR/k1aZ1a6nLA8uuoti70=";
 
-  types-aiobotocore-imagebuilder = buildTypesAiobotocorePackage "imagebuilder" "2.12.3" "sha256-ValWGfzRPnhA2HVwF/bHfCEv/NCOYoOjVPplRomIXgw=";
+  types-aiobotocore-imagebuilder =
+    buildTypesAiobotocorePackage "imagebuilder" "2.15.1"
+      "sha256-YromFw8hMXBV3v9rAfmAFg/1MWMSsBR8jCjgnN3Qjdc=";
 
-  types-aiobotocore-importexport = buildTypesAiobotocorePackage "importexport" "2.12.3" "sha256-o609SDjx1+dzBTmNSGuoh8H6XLfZLJgaqUJVEmG3gzU=";
+  types-aiobotocore-importexport =
+    buildTypesAiobotocorePackage "importexport" "2.15.1"
+      "sha256-UvwCZclRwoDaAMhY6CdhCADFs0m258Z34FVTH95CrZ8=";
 
-  types-aiobotocore-inspector = buildTypesAiobotocorePackage "inspector" "2.12.3" "sha256-ymj+ugkTQkGEloCtdnFsmwXtLmMnpgxsgINsZjCnPCI=";
+  types-aiobotocore-inspector =
+    buildTypesAiobotocorePackage "inspector" "2.15.1"
+      "sha256-5vgqzDYe/y3vHvKFuYfhArZfmLHRPDuhGaSBRHWUiis=";
 
-  types-aiobotocore-inspector2 = buildTypesAiobotocorePackage "inspector2" "2.12.3" "sha256-+kC/viBAYxGSP80pStaSD6bIXN5pdwu96NA6lcfIWzM=";
+  types-aiobotocore-inspector2 =
+    buildTypesAiobotocorePackage "inspector2" "2.15.1"
+      "sha256-2CPWpQt1jylh05MtxFIoig4DVoSBkHYVKEl0j/2s1v0=";
 
-  types-aiobotocore-internetmonitor = buildTypesAiobotocorePackage "internetmonitor" "2.12.3" "sha256-iCVPf+7LtTfRvrX7vKt2DNkfw1xdTCpzlqvA2w4LsjQ=";
+  types-aiobotocore-internetmonitor =
+    buildTypesAiobotocorePackage "internetmonitor" "2.15.1"
+      "sha256-aXAhRpaoJC0BR/KqG/0FF139mLFBTaqQdr0m5B8vz/k=";
 
-  types-aiobotocore-iot = buildTypesAiobotocorePackage "iot" "2.12.3" "sha256-YJSr/C6V7yASlg2Ifif8lAYsy9zOo9ficn0DWmWIZB8=";
+  types-aiobotocore-iot =
+    buildTypesAiobotocorePackage "iot" "2.15.1"
+      "sha256-iVdmdRpw4/gj6Lsy6gP8C6HwvIKhKmKHpvR5HoB4jE8=";
 
-  types-aiobotocore-iot-data = buildTypesAiobotocorePackage "iot-data" "2.12.3" "sha256-7LJRrYAcyil9Trw8gCu7lOkrdcSW5yQeZOrQ1bPL+qE=";
+  types-aiobotocore-iot-data =
+    buildTypesAiobotocorePackage "iot-data" "2.15.1"
+      "sha256-WVcWtkcrV0jTqCuygnDi6CZFVt/xuReFy6ji+BAjylQ=";
 
-  types-aiobotocore-iot-jobs-data = buildTypesAiobotocorePackage "iot-jobs-data" "2.12.3" "sha256-An0qRP6UxBOHwkQ7e/a0ZN9c0drgC8uYz1xXslEwStc=";
+  types-aiobotocore-iot-jobs-data =
+    buildTypesAiobotocorePackage "iot-jobs-data" "2.15.1"
+      "sha256-Ym5Pxg3N++/QRdLNzHAOZQmObdroyhgO6tPHLmGfCPY=";
 
-  types-aiobotocore-iot-roborunner = buildTypesAiobotocorePackage "iot-roborunner" "2.12.2" "sha256-O/nGvYfUibI4EvHgONtkYHFv/dZSpHCehXjietPiMJo=";
+  types-aiobotocore-iot-roborunner =
+    buildTypesAiobotocorePackage "iot-roborunner" "2.12.2"
+      "sha256-O/nGvYfUibI4EvHgONtkYHFv/dZSpHCehXjietPiMJo=";
 
-  types-aiobotocore-iot1click-devices = buildTypesAiobotocorePackage "iot1click-devices" "2.12.3" "sha256-5PQV2KlzOpRWkeJhsPFwCZ8iZQp+flTH1UUGn3q3/7k=";
+  types-aiobotocore-iot1click-devices =
+    buildTypesAiobotocorePackage "iot1click-devices" "2.15.1"
+      "sha256-OJmSfZaKAfiq7UImpgF/wKTzYaqxlhqrkOAbk7OchrM=";
 
-  types-aiobotocore-iot1click-projects = buildTypesAiobotocorePackage "iot1click-projects" "2.12.3" "sha256-FuC8skyo0yoqd+He5cOKlUUnPiGk9I8vUen0uj5Eqcc=";
+  types-aiobotocore-iot1click-projects =
+    buildTypesAiobotocorePackage "iot1click-projects" "2.15.1"
+      "sha256-8Q6P8K87YIs+UsR5Vyyx9IMBW0fLAMqCu/LkqkUQYEU=";
 
-  types-aiobotocore-iotanalytics = buildTypesAiobotocorePackage "iotanalytics" "2.12.3" "sha256-EPHXokF9XO/0EAOnOyhp2MUfs7UHozFKYbWqPeDFweQ=";
+  types-aiobotocore-iotanalytics =
+    buildTypesAiobotocorePackage "iotanalytics" "2.15.1"
+      "sha256-HkzZSHFbEWv67uQRIH6W/CsAFI1HpsFeNLvbqjQEJsQ=";
 
-  types-aiobotocore-iotdeviceadvisor = buildTypesAiobotocorePackage "iotdeviceadvisor" "2.12.3" "sha256-iZVZJZFCrwmKpYglS/UT4Qew1GdttI7rwn+XduS2DPc=";
+  types-aiobotocore-iotdeviceadvisor =
+    buildTypesAiobotocorePackage "iotdeviceadvisor" "2.15.1"
+      "sha256-SMNXQLSk9rFAXgEKXk23cjWRRvhnUcskkQyeSetngcE=";
 
-  types-aiobotocore-iotevents = buildTypesAiobotocorePackage "iotevents" "2.12.3" "sha256-bxW0Wtqua7ny+kv8bSdyss/MFxLWDMqCxbojBsjtNY4=";
+  types-aiobotocore-iotevents =
+    buildTypesAiobotocorePackage "iotevents" "2.15.1"
+      "sha256-vRnjkeGogwcdtRFybEuqB4FjR89N0KR8pdDWs4caa8I=";
 
-  types-aiobotocore-iotevents-data = buildTypesAiobotocorePackage "iotevents-data" "2.12.3" "sha256-jOVKCfHNJmfGHnqG/y75qz6hsYUWrD911KCV3amWldc=";
+  types-aiobotocore-iotevents-data =
+    buildTypesAiobotocorePackage "iotevents-data" "2.15.1"
+      "sha256-j9yAFJUVBUtViPCO3DBCo1tC9AcLO2Uy4I2lfThBV+I=";
 
-  types-aiobotocore-iotfleethub = buildTypesAiobotocorePackage "iotfleethub" "2.12.3" "sha256-gp2YjRDGXRFBrHnzs5m/SsugG7U6hh3NvYG8ym5/2FU=";
+  types-aiobotocore-iotfleethub =
+    buildTypesAiobotocorePackage "iotfleethub" "2.15.1"
+      "sha256-k7D8o7sxTlyjmlCBmt2uY/FKC6KUWmx9LL9k2zedszU=";
 
-  types-aiobotocore-iotfleetwise = buildTypesAiobotocorePackage "iotfleetwise" "2.12.3" "sha256-YHZZUZmmmE6T8Z+Vvh4SZEf5xrzzObLKP6EuGY+aIaI=";
+  types-aiobotocore-iotfleetwise =
+    buildTypesAiobotocorePackage "iotfleetwise" "2.15.1"
+      "sha256-lozZuY4r9CkPi+SD9p/T35HyjiHVMmJ33GKNEZ/htPc=";
 
-  types-aiobotocore-iotsecuretunneling = buildTypesAiobotocorePackage "iotsecuretunneling" "2.12.3" "sha256-Bx43NAwPTlPqZrV3SN39amD0on7RJvvXC27QJ9kShWY=";
+  types-aiobotocore-iotsecuretunneling =
+    buildTypesAiobotocorePackage "iotsecuretunneling" "2.15.1"
+      "sha256-3Bw3N2aIUzKNLyMGnHsxQB8bofonIcqJANariAKqXsI=";
 
-  types-aiobotocore-iotsitewise = buildTypesAiobotocorePackage "iotsitewise" "2.12.3" "sha256-fXmG7vvCgM24P+WwPgVlh+uVJdzT3r5dgEf5eU2763w=";
+  types-aiobotocore-iotsitewise =
+    buildTypesAiobotocorePackage "iotsitewise" "2.15.1"
+      "sha256-WZqYRDV21kkgBMb5z+6KKTlGxDJKXmMl1u3RlTPavl4=";
 
-  types-aiobotocore-iotthingsgraph = buildTypesAiobotocorePackage "iotthingsgraph" "2.12.3" "sha256-1rdcWFEfM9paoGxm3NhS/A5tDMCgCoMkGeXUG49i238=";
+  types-aiobotocore-iotthingsgraph =
+    buildTypesAiobotocorePackage "iotthingsgraph" "2.15.1"
+      "sha256-/ArOj+prhHoDPRymOW4NN8IXNkWuE/wZJuRAXMVmzpg=";
 
-  types-aiobotocore-iottwinmaker = buildTypesAiobotocorePackage "iottwinmaker" "2.12.3" "sha256-AEp5cF3vVj5t/M7J4hSuk7KsUIKN9sSpSk2XfH4w8Hk=";
+  types-aiobotocore-iottwinmaker =
+    buildTypesAiobotocorePackage "iottwinmaker" "2.15.1"
+      "sha256-gE3/juMs0BFJZEq291UGWAh41NCRHWHmZY+KcZ9IFJE=";
 
-  types-aiobotocore-iotwireless = buildTypesAiobotocorePackage "iotwireless" "2.12.3" "sha256-LfmlJGalNaiZB1UAqG1XwDPNBKxz0hO2S9EiTakmtmA=";
+  types-aiobotocore-iotwireless =
+    buildTypesAiobotocorePackage "iotwireless" "2.15.1"
+      "sha256-PRORLAzdQ0QmYSPYWrQaPSwW8JaeTyzg8Z+N8/Hqjz8=";
 
-  types-aiobotocore-ivs = buildTypesAiobotocorePackage "ivs" "2.12.3" "sha256-vxFbBTyf0psVvc0N8kAEJrX/JumRoWD5GKQ2JmkJkPg=";
+  types-aiobotocore-ivs =
+    buildTypesAiobotocorePackage "ivs" "2.15.1"
+      "sha256-OIvBSFt9S+SmZIjdw/zcC/FC/3d9Huce5jQXgj5D+ik=";
 
-  types-aiobotocore-ivs-realtime = buildTypesAiobotocorePackage "ivs-realtime" "2.12.3" "sha256-78x0QtBZsBztNaAqiUCtosIf+Lm3DCJqVerRBOLiEXs=";
+  types-aiobotocore-ivs-realtime =
+    buildTypesAiobotocorePackage "ivs-realtime" "2.15.1"
+      "sha256-Eh5fuYJawPwAFuQl0/wLq+gTJ02C5wFZsETDsOSi3LU=";
 
-  types-aiobotocore-ivschat = buildTypesAiobotocorePackage "ivschat" "2.12.3" "sha256-/yakndOCbZlLhARZ6jd6eG0YLRZjg8Igw4Fc15obqRo=";
+  types-aiobotocore-ivschat =
+    buildTypesAiobotocorePackage "ivschat" "2.15.1"
+      "sha256-jk6zZ3zX94kIfld9oXd6zW7ILhaa01XOt7c+/5pn8kk=";
 
-  types-aiobotocore-kafka = buildTypesAiobotocorePackage "kafka" "2.12.3" "sha256-oayTFZfzOURWDfzexxrHxV/JdJDXAmk9LupPWMFZpkc=";
+  types-aiobotocore-kafka =
+    buildTypesAiobotocorePackage "kafka" "2.15.1"
+      "sha256-NJv1QF3qBn5LJ7yhKcSmy6W3OJ8kenfzQ4RkSRx8iTo=";
 
-  types-aiobotocore-kafkaconnect = buildTypesAiobotocorePackage "kafkaconnect" "2.12.3" "sha256-pA6EEsfS9W1uK7s92CGqZtk3o+GUI92T/lFOqCQotTI=";
+  types-aiobotocore-kafkaconnect =
+    buildTypesAiobotocorePackage "kafkaconnect" "2.15.1"
+      "sha256-7EDrF3TxDgLeAnbUeLQj7SpFPLB+uMjqc/sQxWaXYlU=";
 
-  types-aiobotocore-kendra = buildTypesAiobotocorePackage "kendra" "2.12.3" "sha256-RPSoV974cSYfPL1cFnpZjcMQeSENxThtG44zWUemN9E=";
+  types-aiobotocore-kendra =
+    buildTypesAiobotocorePackage "kendra" "2.15.1"
+      "sha256-8k/FEmIfl2dKDt4JrCWdrLskYuj+A2VEHm0jqHWfUp8=";
 
-  types-aiobotocore-kendra-ranking = buildTypesAiobotocorePackage "kendra-ranking" "2.12.3" "sha256-A5o/guqeDNvH27DCB5SAJuOmgSMYSrJjru5qn3sOL6k=";
+  types-aiobotocore-kendra-ranking =
+    buildTypesAiobotocorePackage "kendra-ranking" "2.15.1"
+      "sha256-ZaDBuYlm35DRaiKv+xV2L+e/E5x1rGN59UTL2U5bRp8=";
 
-  types-aiobotocore-keyspaces = buildTypesAiobotocorePackage "keyspaces" "2.12.3" "sha256-1gACiFQAo1iCzITBQIcRNId8S2t3L7ga8MiC1oKQX58=";
+  types-aiobotocore-keyspaces =
+    buildTypesAiobotocorePackage "keyspaces" "2.15.1"
+      "sha256-UgzrxIq3vh8dfw80VCue7gf8l19TqRUmRuAS/cW/G1M=";
 
-  types-aiobotocore-kinesis = buildTypesAiobotocorePackage "kinesis" "2.12.3" "sha256-jcFBnfzUcCyWt5qOgiCx/2Lbf2QEGW4G7JjTNclGy/k=";
+  types-aiobotocore-kinesis =
+    buildTypesAiobotocorePackage "kinesis" "2.15.1"
+      "sha256-MF7n5Z70BFUAXaFuTDWIzFuiZ3u1fpYoZrBfRQR97Qw=";
 
-  types-aiobotocore-kinesis-video-archived-media = buildTypesAiobotocorePackage "kinesis-video-archived-media" "2.12.3" "sha256-DkvRjmHxmyj3TWQK5FxsgpU8vm+I7d7dibkI6rwGg8c=";
+  types-aiobotocore-kinesis-video-archived-media =
+    buildTypesAiobotocorePackage "kinesis-video-archived-media" "2.15.1"
+      "sha256-bEZV3TDr3l6Ogn49kFW/3IcFi/4NjQQnaC1LrDChlcI=";
 
-  types-aiobotocore-kinesis-video-media = buildTypesAiobotocorePackage "kinesis-video-media" "2.12.3" "sha256-cDko/AYbz8KLxheVLhGhYr9eUOxB6R3JCoNCXyOBL48=";
+  types-aiobotocore-kinesis-video-media =
+    buildTypesAiobotocorePackage "kinesis-video-media" "2.15.1"
+      "sha256-PPT89cO2FukHtnXQHgcNZie3vPCDBmbrfRDiZCZaJ1E=";
 
-  types-aiobotocore-kinesis-video-signaling = buildTypesAiobotocorePackage "kinesis-video-signaling" "2.12.3" "sha256-f/8FAIf6DFf0ly5qRhG+kFHYzs4whggUsxhphA2bPuM=";
+  types-aiobotocore-kinesis-video-signaling =
+    buildTypesAiobotocorePackage "kinesis-video-signaling" "2.15.1"
+      "sha256-Fez2At/MFggTu7ZtfKLWCm7iELH6gumBhn3t7KdJzVA=";
 
-  types-aiobotocore-kinesis-video-webrtc-storage = buildTypesAiobotocorePackage "kinesis-video-webrtc-storage" "2.12.3" "sha256-dIvQeCqeL+oBy0N+uTcBTbkkNfGfrgKwGYrI8XaLeYQ=";
+  types-aiobotocore-kinesis-video-webrtc-storage =
+    buildTypesAiobotocorePackage "kinesis-video-webrtc-storage" "2.15.1"
+      "sha256-5h9x9Rgb1Sb8wIQwRcjkonc2070QahwPkKXfQ/lFFI8=";
 
-  types-aiobotocore-kinesisanalytics = buildTypesAiobotocorePackage "kinesisanalytics" "2.12.3" "sha256-nEc26wCazquuuiOVbWWpa7ab4ZQE0TElsWrbIuL2VHE=";
+  types-aiobotocore-kinesisanalytics =
+    buildTypesAiobotocorePackage "kinesisanalytics" "2.15.1"
+      "sha256-JEye+bOxLrRJDToMs5jQZ2wcHy1K/2C5oPFUIRrtO5g=";
 
-  types-aiobotocore-kinesisanalyticsv2 = buildTypesAiobotocorePackage "kinesisanalyticsv2" "2.12.3" "sha256-MX/moxuQphb6YaO3BeuMhDyvuYG8WEevYizg0yQq4Pw=";
+  types-aiobotocore-kinesisanalyticsv2 =
+    buildTypesAiobotocorePackage "kinesisanalyticsv2" "2.15.1"
+      "sha256-j2gcnHFfWTVD3NatfJXsp3hRVEsy4930OclgR5IPbDM=";
 
-  types-aiobotocore-kinesisvideo = buildTypesAiobotocorePackage "kinesisvideo" "2.12.3" "sha256-G3kO0yM3jbw1RdRo5JX7Ju2vzsR+7GXeLjyoPGFIEQg=";
+  types-aiobotocore-kinesisvideo =
+    buildTypesAiobotocorePackage "kinesisvideo" "2.15.1"
+      "sha256-mnKzF2lgYtHTNEwecoqs4qt9hQ5m2xLo79/kZHFyF5I=";
 
-  types-aiobotocore-kms = buildTypesAiobotocorePackage "kms" "2.12.3" "sha256-6JfxOXCsDjP0QqYqXBiPXp3R31mBL6Z4xUwXMFHGgdI=";
+  types-aiobotocore-kms =
+    buildTypesAiobotocorePackage "kms" "2.15.1"
+      "sha256-CCyhwWkjtI7wp5CN1MCK0M//bOu4ZGttbHJSUcidjUA=";
 
-  types-aiobotocore-lakeformation = buildTypesAiobotocorePackage "lakeformation" "2.12.3" "sha256-KuXvIcrlvCA7ATv6az1Oeoe0CCysnCUb/B/D9+pd/Q0=";
+  types-aiobotocore-lakeformation =
+    buildTypesAiobotocorePackage "lakeformation" "2.15.1"
+      "sha256-+BlDjTPv+fmKmUInm6FpOQFt5H5atz7BWKhrt56A3Co=";
 
-  types-aiobotocore-lambda = buildTypesAiobotocorePackage "lambda" "2.12.3" "sha256-4RSFi2CyKz/0Y3d9xIYM6CpOONTLP1X8rJqzJolVdck=";
+  types-aiobotocore-lambda =
+    buildTypesAiobotocorePackage "lambda" "2.15.1"
+      "sha256-hCTL2KBMt5p51YwnOYNcpGvzG2wvZjt23kK3FX4Qp5U=";
 
-  types-aiobotocore-lex-models = buildTypesAiobotocorePackage "lex-models" "2.12.3" "sha256-EoASjvQ8uJy15SVq5vNek+vMqNgU40/Rj1i1NwWDHuk=";
+  types-aiobotocore-lex-models =
+    buildTypesAiobotocorePackage "lex-models" "2.15.1"
+      "sha256-A8BAADavGEB7sa+fh9SRahoqN3mne7ABZjcnZI9YfBk=";
 
-  types-aiobotocore-lex-runtime = buildTypesAiobotocorePackage "lex-runtime" "2.12.3" "sha256-JbL9RhcnbNll+68jzuiF6coqdMYeYLYkuPJz85Q4gAg=";
+  types-aiobotocore-lex-runtime =
+    buildTypesAiobotocorePackage "lex-runtime" "2.15.1"
+      "sha256-QVYHr4fbnZPozVghHOZVsyChTuP2S0Ys+876slONaEc=";
 
-  types-aiobotocore-lexv2-models = buildTypesAiobotocorePackage "lexv2-models" "2.12.3" "sha256-cTndR1V9msDL+8NIqp6HRvSmP/rhZlwVuZwLKBoitZA=";
+  types-aiobotocore-lexv2-models =
+    buildTypesAiobotocorePackage "lexv2-models" "2.15.1"
+      "sha256-uqZrNG/mOCnfYjNF5FQofjSUeXhnidunT1754yame7E=";
 
-  types-aiobotocore-lexv2-runtime = buildTypesAiobotocorePackage "lexv2-runtime" "2.12.3" "sha256-V/PGGRZDXhilxUE5YslkyiJYWulQkEsxQZbaAbPP/cU=";
+  types-aiobotocore-lexv2-runtime =
+    buildTypesAiobotocorePackage "lexv2-runtime" "2.15.1"
+      "sha256-hQGTDbhJNiJc5dORzg7XJ4p+ZatNcI0qoT70qtMHzHc=";
 
-  types-aiobotocore-license-manager = buildTypesAiobotocorePackage "license-manager" "2.12.3" "sha256-zA+rcTsvrOFB1/st0q9vK4L0YZTGVlk0XNl5gxcxSK0=";
+  types-aiobotocore-license-manager =
+    buildTypesAiobotocorePackage "license-manager" "2.15.1"
+      "sha256-4whyQ2X/R2eMdQ7DOygNQFqMgLA+w+6ydyN8s7yxgB4=";
 
-  types-aiobotocore-license-manager-linux-subscriptions = buildTypesAiobotocorePackage "license-manager-linux-subscriptions" "2.12.3" "sha256-vGzT4Q90+FeF8tELo3zWp90MqrbNJ95kzovjFbnz9LY=";
+  types-aiobotocore-license-manager-linux-subscriptions =
+    buildTypesAiobotocorePackage "license-manager-linux-subscriptions" "2.15.1"
+      "sha256-uD/N/ueijWNwibOrivY0r2HiQjYOuHQUONcW3iRCVUY=";
 
-  types-aiobotocore-license-manager-user-subscriptions = buildTypesAiobotocorePackage "license-manager-user-subscriptions" "2.12.3" "sha256-qI9Pw+lK7JGSKEl+wxZz1CmG7UG1AsDmxkHuYY/sQxQ=";
+  types-aiobotocore-license-manager-user-subscriptions =
+    buildTypesAiobotocorePackage "license-manager-user-subscriptions" "2.15.1"
+      "sha256-wWghsiPCvWY7VX5XV0ad65nnG9bI5F+E5xEUzOGDdnY=";
 
-  types-aiobotocore-lightsail = buildTypesAiobotocorePackage "lightsail" "2.12.3" "sha256-hl58xChUqHdkl0KtZjMetrR+am1gHIPZtSfRXSQg6ac=";
+  types-aiobotocore-lightsail =
+    buildTypesAiobotocorePackage "lightsail" "2.15.1"
+      "sha256-dcGUPUxGvD/ZEyoo193VVOhSJhoFkgwSjpOV1kX/vMM=";
 
-  types-aiobotocore-location = buildTypesAiobotocorePackage "location" "2.12.3" "sha256-nTBbzRhNWl5B1tGlaQVd0eKbnBvy/8fmDZ4kY9de4cU=";
+  types-aiobotocore-location =
+    buildTypesAiobotocorePackage "location" "2.15.1"
+      "sha256-4rTqmcRB3HjskWJZLbQaPDyNQGHXmVVJqb5LK+EPH6Y=";
 
-  types-aiobotocore-logs = buildTypesAiobotocorePackage "logs" "2.12.3" "sha256-mmmR4vLdjfNys1uXGMbvF84/CrI6GKNH/tRkneHI9PQ=";
+  types-aiobotocore-logs =
+    buildTypesAiobotocorePackage "logs" "2.15.1"
+      "sha256-CRluCc0/byuRlGr3uQyWg/MfCpPnoiS5inNLiYkhwCY=";
 
-  types-aiobotocore-lookoutequipment = buildTypesAiobotocorePackage "lookoutequipment" "2.12.3" "sha256-rSoOIJywU+Vzh73LQac0ugfiu2r25SHdsgIjHmmHZnw=";
+  types-aiobotocore-lookoutequipment =
+    buildTypesAiobotocorePackage "lookoutequipment" "2.15.1"
+      "sha256-q5ExCn4HAdAGISDIRckrnlmQ+J1RDNgBa5hmYSJHtVc=";
 
-  types-aiobotocore-lookoutmetrics = buildTypesAiobotocorePackage "lookoutmetrics" "2.12.3" "sha256-hrVID1/a/McspXe+Tl6VPTApYJpjERa1Hb4QmTtWpBM=";
+  types-aiobotocore-lookoutmetrics =
+    buildTypesAiobotocorePackage "lookoutmetrics" "2.15.1"
+      "sha256-SvJor9naL/MzyTtHjOn2QMNnLYXnmHYH11DuWg0+y/U=";
 
-  types-aiobotocore-lookoutvision = buildTypesAiobotocorePackage "lookoutvision" "2.12.3" "sha256-KYxkVAaRxZxCHz4FBFNaZUrSLbtumaU1Qh3w467nPjo=";
+  types-aiobotocore-lookoutvision =
+    buildTypesAiobotocorePackage "lookoutvision" "2.15.1"
+      "sha256-68PGFV+fSjjwAq4SoiOAaJXw1jKdQegFgz2UeHV9iL8=";
 
-  types-aiobotocore-m2 = buildTypesAiobotocorePackage "m2" "2.12.3" "sha256-1f6YJ6a9OqmJ1szPMao5l3zAs97grpDr4SvldDNohV4=";
+  types-aiobotocore-m2 =
+    buildTypesAiobotocorePackage "m2" "2.15.1"
+      "sha256-TrP432QWYmAmnka3CiWklZh3g/xrLhGJVw8iWLR5f8E=";
 
-  types-aiobotocore-machinelearning = buildTypesAiobotocorePackage "machinelearning" "2.12.3" "sha256-0b6bNQvxR+OJd/hyM47qAM5/B0ALYEkWJqO5OosKOtw=";
+  types-aiobotocore-machinelearning =
+    buildTypesAiobotocorePackage "machinelearning" "2.15.1"
+      "sha256-0+nIbuZeuKIhQiC2+kSaDztMLOUe9rZ+guDROGM+YI4=";
 
-  types-aiobotocore-macie = buildTypesAiobotocorePackage "macie" "2.7.0" "sha256-hJJtGsK2b56nKX1ZhiarC+ffyjHYWRiC8II4oyDZWWw=";
+  types-aiobotocore-macie =
+    buildTypesAiobotocorePackage "macie" "2.7.0"
+      "sha256-hJJtGsK2b56nKX1ZhiarC+ffyjHYWRiC8II4oyDZWWw=";
 
-  types-aiobotocore-macie2 = buildTypesAiobotocorePackage "macie2" "2.12.3" "sha256-sd30ATrunzj5kqZDJLGd7sGdxtpBcR0Kl1qG2QhqeFk=";
+  types-aiobotocore-macie2 =
+    buildTypesAiobotocorePackage "macie2" "2.15.1"
+      "sha256-lJq53Sxg+RpZSeQKG+nu0EhRQEEUSPoWqiORJUcoqEI=";
 
-  types-aiobotocore-managedblockchain = buildTypesAiobotocorePackage "managedblockchain" "2.12.3" "sha256-8uZkHItyZfvSv8rr2PKYLHVDHxeL/f/Z8mcHYXBsiXw=";
+  types-aiobotocore-managedblockchain =
+    buildTypesAiobotocorePackage "managedblockchain" "2.15.1"
+      "sha256-RZUktF80I0PXhIPEZJav1i1a4FyFSyHODTeUsIcDHGE=";
 
-  types-aiobotocore-managedblockchain-query = buildTypesAiobotocorePackage "managedblockchain-query" "2.12.3" "sha256-n3hInygsT+Zkl4TTjZ7gtkvT7npEvvl6HoNpRW0kI2M=";
+  types-aiobotocore-managedblockchain-query =
+    buildTypesAiobotocorePackage "managedblockchain-query" "2.15.1"
+      "sha256-xmPCGjlO0EThkhUWy+VlHLplAx7f7+zXKzr5hb/1e6A=";
 
-  types-aiobotocore-marketplace-catalog = buildTypesAiobotocorePackage "marketplace-catalog" "2.12.3" "sha256-GkzlSr5zRispSfeIe2pmOMlLhxoBctn9EM1VXTnMSkg=";
+  types-aiobotocore-marketplace-catalog =
+    buildTypesAiobotocorePackage "marketplace-catalog" "2.15.1"
+      "sha256-OJeNrERgHfCYfgpn+DMmo7ZgUujg5G3bQpedipAxbX4=";
 
-  types-aiobotocore-marketplace-entitlement = buildTypesAiobotocorePackage "marketplace-entitlement" "2.12.3" "sha256-61Sgh1moietvRwtc2SrJhWZ5y1ZobI+CiIlL+zkbbgE=";
+  types-aiobotocore-marketplace-entitlement =
+    buildTypesAiobotocorePackage "marketplace-entitlement" "2.15.1"
+      "sha256-0tSQ1wnz7R7KaRVsoNGeUcbmf4cRBrUMArCEEDJRrtc=";
 
-  types-aiobotocore-marketplacecommerceanalytics = buildTypesAiobotocorePackage "marketplacecommerceanalytics" "2.12.3" "sha256-//+fB39zKqT9n+KIa9fMHoj4Oq5S5bq1vwsnEorPS2g=";
+  types-aiobotocore-marketplacecommerceanalytics =
+    buildTypesAiobotocorePackage "marketplacecommerceanalytics" "2.15.1"
+      "sha256-gq//bvGswyJgLHypO0vC0rUruMvr5DH0TQPgxb6Xkrc=";
 
-  types-aiobotocore-mediaconnect = buildTypesAiobotocorePackage "mediaconnect" "2.12.3" "sha256-DoIwvqLsCmcUR4UaEvTShKf6sYs3iQDyWkuDxz//cB8=";
+  types-aiobotocore-mediaconnect =
+    buildTypesAiobotocorePackage "mediaconnect" "2.15.1"
+      "sha256-E0hjBGm+mIW0wG8kdLAhXc4BzMzJK4gESiyS2xVIEpU=";
 
-  types-aiobotocore-mediaconvert = buildTypesAiobotocorePackage "mediaconvert" "2.12.3" "sha256-ESAo1QuHtL7T5fZMP15bwxtjDdymDOmz0MX/mcDd82s=";
+  types-aiobotocore-mediaconvert =
+    buildTypesAiobotocorePackage "mediaconvert" "2.15.1"
+      "sha256-bHWlDRHqZ6vYcsM01peSdcQ5oqvSGiG/UHWlOinT1QQ=";
 
-  types-aiobotocore-medialive = buildTypesAiobotocorePackage "medialive" "2.12.3" "sha256-ZF+D7dzjmQNntkyM271BePIbCchA3o1naO/sChfYrGo=";
+  types-aiobotocore-medialive =
+    buildTypesAiobotocorePackage "medialive" "2.15.1"
+      "sha256-PrQPNUQI065kb8+ihArJOroydrAbOhFdS2yzq55nTKw=";
 
-  types-aiobotocore-mediapackage = buildTypesAiobotocorePackage "mediapackage" "2.12.3" "sha256-OiwnSNch2kbYfNbKNCPSrhg+9yAe4sktibGEQ3MPyXI=";
+  types-aiobotocore-mediapackage =
+    buildTypesAiobotocorePackage "mediapackage" "2.15.1"
+      "sha256-2/pUMsZsuW44TpNCdtciCJ9z+Z7aREyBMBIFdV80lgU=";
 
-  types-aiobotocore-mediapackage-vod = buildTypesAiobotocorePackage "mediapackage-vod" "2.12.3" "sha256-tmBmDVpO4hTT8xMuFpeAl1Gx+m+MacalYwdxKO8k8o4=";
+  types-aiobotocore-mediapackage-vod =
+    buildTypesAiobotocorePackage "mediapackage-vod" "2.15.1"
+      "sha256-QIaQ06qrpPa4nb7PgOyhbYH1Oz1KL1dwwy6/D60tgKk=";
 
-  types-aiobotocore-mediapackagev2 = buildTypesAiobotocorePackage "mediapackagev2" "2.12.3" "sha256-siRePAYIWMPCaivNTOCjhfafut6sQzFYqpiGO4rO+v8=";
+  types-aiobotocore-mediapackagev2 =
+    buildTypesAiobotocorePackage "mediapackagev2" "2.15.1"
+      "sha256-+YxeyUt3GqsliHI/T8ZMxfweAhnAXWHLxBZSNbmPVDg=";
 
-  types-aiobotocore-mediastore = buildTypesAiobotocorePackage "mediastore" "2.12.3" "sha256-S5o0T8mUQ1ppq4vPdNeBr5FjcNpRtFPRQG4C/MZye2U=";
+  types-aiobotocore-mediastore =
+    buildTypesAiobotocorePackage "mediastore" "2.15.1"
+      "sha256-09o+YQysUdNGoNT+IXaPIOCSHUxYFXezjxTvqPPWBNo=";
 
-  types-aiobotocore-mediastore-data = buildTypesAiobotocorePackage "mediastore-data" "2.12.3" "sha256-q4AFkM7keYfHWmnFOM5r1xHpVEnDjWsAmyATcfC7264=";
+  types-aiobotocore-mediastore-data =
+    buildTypesAiobotocorePackage "mediastore-data" "2.15.1"
+      "sha256-yDovPCnikCe4qHPCyZPZEu7UlIHLW59EySO3xValmgw=";
 
-  types-aiobotocore-mediatailor = buildTypesAiobotocorePackage "mediatailor" "2.12.3" "sha256-PLyaXf2/hrmo4YGS6KY8aXyhEv5ewGPWVsGoHS0Ui2g=";
+  types-aiobotocore-mediatailor =
+    buildTypesAiobotocorePackage "mediatailor" "2.15.1"
+      "sha256-BnrpdnphOkjk9D3MuhMEEBFL08NZE140o4+VR1Rp4O4=";
 
-  types-aiobotocore-medical-imaging = buildTypesAiobotocorePackage "medical-imaging" "2.12.3" "sha256-3ZFHete+MHeUGomdkD54eCqwDfshP+5Vtf+jTOkRZww=";
+  types-aiobotocore-medical-imaging =
+    buildTypesAiobotocorePackage "medical-imaging" "2.15.1"
+      "sha256-6ona+KE489SPJSlokzwpiqERuBgWjqIYofh1rUmeKwo=";
 
-  types-aiobotocore-memorydb = buildTypesAiobotocorePackage "memorydb" "2.12.3" "sha256-PB1wrc6y3enPpB+Wk3ciL7F1dgU8bqRxE5FarSaV/80=";
+  types-aiobotocore-memorydb =
+    buildTypesAiobotocorePackage "memorydb" "2.15.1"
+      "sha256-lYBb737JcKQa5cKm94O1C/psjuRNFFNftn3dctUeOnQ=";
 
-  types-aiobotocore-meteringmarketplace = buildTypesAiobotocorePackage "meteringmarketplace" "2.12.3" "sha256-rKVoKaY63jArGx0R5Y9Xnp7OoztedmbshmB9d338LzM=";
+  types-aiobotocore-meteringmarketplace =
+    buildTypesAiobotocorePackage "meteringmarketplace" "2.15.1"
+      "sha256-9Z5s03sTVEzzXO43CTuf+YICuXisAZ/OGFyH44KOuF8=";
 
-  types-aiobotocore-mgh = buildTypesAiobotocorePackage "mgh" "2.12.3" "sha256-bUWSyqyUMzvSQSMkqEPJYjhLoAXG1hUcIqHY5bpAito=";
+  types-aiobotocore-mgh =
+    buildTypesAiobotocorePackage "mgh" "2.15.1"
+      "sha256-Oqi4SM+L1FQLs0jfyWXILG/XHs5X5K+5jvGcIr76OeY=";
 
-  types-aiobotocore-mgn = buildTypesAiobotocorePackage "mgn" "2.12.3" "sha256-I/NeUqOmAXeiF1Sej2LJkMOgKw1Lz4c7YrNJMf+Q4Ac=";
+  types-aiobotocore-mgn =
+    buildTypesAiobotocorePackage "mgn" "2.15.1"
+      "sha256-RqvU6K50yGzVQBSzS90htrFOScpondnyceN3ISshYlI=";
 
-  types-aiobotocore-migration-hub-refactor-spaces = buildTypesAiobotocorePackage "migration-hub-refactor-spaces" "2.12.3" "sha256-0mOX1FRHqlY4FggS/ieTRzc6I4dwoNT6syl0lUiSnFs=";
+  types-aiobotocore-migration-hub-refactor-spaces =
+    buildTypesAiobotocorePackage "migration-hub-refactor-spaces" "2.15.1"
+      "sha256-j4LVmlaI8tuJxjkweiZRWgnYlR5p/M2u8JSkMg3Yufs=";
 
-  types-aiobotocore-migrationhub-config = buildTypesAiobotocorePackage "migrationhub-config" "2.12.3" "sha256-CiobxWUFRuAI5qKFDO1zRQj5Xtp+RzMVjwGm2ZSBijY=";
+  types-aiobotocore-migrationhub-config =
+    buildTypesAiobotocorePackage "migrationhub-config" "2.15.1"
+      "sha256-yQDw0I8jlsVpL8MSerOV66yRdCE5ik7R/v+rkBAzKrk=";
 
-  types-aiobotocore-migrationhuborchestrator = buildTypesAiobotocorePackage "migrationhuborchestrator" "2.12.3" "sha256-SZ+e7oEbPvRY8J6jLePeoG7osJv7zPtn9SV5z4cU4gU=";
+  types-aiobotocore-migrationhuborchestrator =
+    buildTypesAiobotocorePackage "migrationhuborchestrator" "2.15.1"
+      "sha256-2XxADXGruMbzM50bElDkwlKQZ/r+6HPhMOjj8InGOlM=";
 
-  types-aiobotocore-migrationhubstrategy = buildTypesAiobotocorePackage "migrationhubstrategy" "2.12.3" "sha256-vO0Tjigj2x/HsA5gPsPU1peloI7GMvHXHe8dtsxSGTg=";
+  types-aiobotocore-migrationhubstrategy =
+    buildTypesAiobotocorePackage "migrationhubstrategy" "2.15.1"
+      "sha256-+VYnuMVf16mrgMJ5DMqdy6CPLGavuA0gUW1kv9Uu9rs=";
 
-  types-aiobotocore-mobile = buildTypesAiobotocorePackage "mobile" "2.12.3" "sha256-s1ddYopINo+Q6T9QuD1sQ0P1UYgGxmYaSjxW6eCxK+Y=";
+  types-aiobotocore-mobile =
+    buildTypesAiobotocorePackage "mobile" "2.13.2"
+      "sha256-OxB91BCAmYnY72JBWZaBlEkpAxN2Q5aY4i1Pt3eD9hc=";
 
-  types-aiobotocore-mq = buildTypesAiobotocorePackage "mq" "2.12.3" "sha256-tEvBlyvVNNDLRHe8UPzdjnq1hA5QqPDUdtuS2zj6zu0=";
+  types-aiobotocore-mq =
+    buildTypesAiobotocorePackage "mq" "2.15.1"
+      "sha256-2WEJoWXSfDmFl9liWtIaviLnAHgRA5dAamQx1YfXgzE=";
 
-  types-aiobotocore-mturk = buildTypesAiobotocorePackage "mturk" "2.12.3" "sha256-59BieemJgQXv3YyitmffaeD7oxlQAKT8xX/E/VxG0JY=";
+  types-aiobotocore-mturk =
+    buildTypesAiobotocorePackage "mturk" "2.15.1"
+      "sha256-TK9wWp3GEHhn4jypBdQEeJZp31IvKFFTuSLKxqxZoNU=";
 
-  types-aiobotocore-mwaa = buildTypesAiobotocorePackage "mwaa" "2.12.3" "sha256-ayUivauZR/s6ivrJA5DFviFgH/rq/f3KYGimULyoizY=";
+  types-aiobotocore-mwaa =
+    buildTypesAiobotocorePackage "mwaa" "2.15.1"
+      "sha256-E1sWcLfHIlFelP3vb0yfhRpcyboyIutPrF3ByCNJITQ=";
 
-  types-aiobotocore-neptune = buildTypesAiobotocorePackage "neptune" "2.12.3" "sha256-bzIzK9sKecGyKvEVWvgwis8Lm9HRP/y49MSnQQb1XGk=";
+  types-aiobotocore-neptune =
+    buildTypesAiobotocorePackage "neptune" "2.15.1"
+      "sha256-EtmxI6j5SlZZcv+YYsDki6VcMdRhZWEoJVT5VDFV/0g=";
 
-  types-aiobotocore-network-firewall = buildTypesAiobotocorePackage "network-firewall" "2.12.3" "sha256-2Ze/cG5ixrzYm0jZ4hByh7Wz3nAzH3/jyopgFyTUjdg=";
+  types-aiobotocore-network-firewall =
+    buildTypesAiobotocorePackage "network-firewall" "2.15.1"
+      "sha256-xiDYqvt2e7MiAe8nCQR51q5Ov8B94eYJhQgN+lvFDuA=";
 
-  types-aiobotocore-networkmanager = buildTypesAiobotocorePackage "networkmanager" "2.12.3" "sha256-F14ejhHjbv2BmfNng0hmI34+aA8pVCf4L+Cvn2Kx6Jc=";
+  types-aiobotocore-networkmanager =
+    buildTypesAiobotocorePackage "networkmanager" "2.15.1"
+      "sha256-0SFOWAIckxRoWupRztC50CkOKqtUuxdNnM44SnPLYwQ=";
 
-  types-aiobotocore-nimble = buildTypesAiobotocorePackage "nimble" "2.12.3" "sha256-8WpARJKsOatdQXzmFt30FFri8b1h3bBeyydbZ73kPMc=";
+  types-aiobotocore-nimble =
+    buildTypesAiobotocorePackage "nimble" "2.15.1"
+      "sha256-Hz6tsIdCcx5vzwD0PDmPKSpjqYEYENAiZz7WuZC9Ago=";
 
-  types-aiobotocore-oam = buildTypesAiobotocorePackage "oam" "2.12.3" "sha256-qJlO69CxqQnDekL7KRoQEkDd3w5rCxwJ0Z6RRGZxVgU=";
+  types-aiobotocore-oam =
+    buildTypesAiobotocorePackage "oam" "2.15.1"
+      "sha256-abqiY/pGLnV7UzoojcX5aaUtKC//y5UFYG8XoS9hJgM=";
 
-  types-aiobotocore-omics = buildTypesAiobotocorePackage "omics" "2.12.3" "sha256-TA4kRoEoYZ6awy9TL550xT0sjVg2FEdfOQLrBEurCTo=";
+  types-aiobotocore-omics =
+    buildTypesAiobotocorePackage "omics" "2.15.1"
+      "sha256-5k0LPHH0qUlEEAV6ASredhR65Phs0133c37N+YB+tcY=";
 
-  types-aiobotocore-opensearch = buildTypesAiobotocorePackage "opensearch" "2.12.3" "sha256-uDCRtJuEKNh1HuHCq+YjucLj4VAoHTiqVaOvVnTDJr8=";
+  types-aiobotocore-opensearch =
+    buildTypesAiobotocorePackage "opensearch" "2.15.1"
+      "sha256-4VqaoYwKkNckmb4BZDbWPLeEVa7tCxBD8g6pGQrr0Ng=";
 
-  types-aiobotocore-opensearchserverless = buildTypesAiobotocorePackage "opensearchserverless" "2.12.3" "sha256-KMftaU+mCA1yUnZ1/N1C4N353Lulnmue1Y95GGmIAPg=";
+  types-aiobotocore-opensearchserverless =
+    buildTypesAiobotocorePackage "opensearchserverless" "2.15.1"
+      "sha256-80E81Kv3FzkgGQvpVHxmYqnNIRtureOvIDmKdnUo7z4=";
 
-  types-aiobotocore-opsworks = buildTypesAiobotocorePackage "opsworks" "2.12.3" "sha256-0YVnEY6G5Huj3pnvouc6LaIPHb0uJdRkwF2/EPknFd0=";
+  types-aiobotocore-opsworks =
+    buildTypesAiobotocorePackage "opsworks" "2.15.1"
+      "sha256-bAAgU0b33CNXVK0Q9ynyPGbL5KBiQq6sT/mL1pWJpD0=";
 
-  types-aiobotocore-opsworkscm = buildTypesAiobotocorePackage "opsworkscm" "2.12.3" "sha256-o+tbhUjox4tueImh0cWLqe8Z0xDaDmA1BGMUmFDoEkA=";
+  types-aiobotocore-opsworkscm =
+    buildTypesAiobotocorePackage "opsworkscm" "2.15.1"
+      "sha256-nVywDMlzkITUEW7K6FWoYz953wAqCiUemT0tu48yO6M=";
 
-  types-aiobotocore-organizations = buildTypesAiobotocorePackage "organizations" "2.12.3" "sha256-uZ/hxE2GOIPcbtlyG82sBA+uT4RxAORvck4WjghJ+kg=";
+  types-aiobotocore-organizations =
+    buildTypesAiobotocorePackage "organizations" "2.15.1"
+      "sha256-N7VzNLh+LCFrfdgmO982cau3B/d5uGoGO43vMMpTNBs=";
 
-  types-aiobotocore-osis = buildTypesAiobotocorePackage "osis" "2.12.3" "sha256-kxa5cYYzTSpPmLHV+1ZKjBAC4S9ITmT0p/NI34rQwSs=";
+  types-aiobotocore-osis =
+    buildTypesAiobotocorePackage "osis" "2.15.1"
+      "sha256-NpjX3LpbF1CajlqY9ow4GqCVjlrTBVT1U/Gn3wHSQTE=";
 
-  types-aiobotocore-outposts = buildTypesAiobotocorePackage "outposts" "2.12.3" "sha256-Xf3CuvPjTQODNeSmI+meP7aHj9a26lPGWQ7nWfc/FjE=";
+  types-aiobotocore-outposts =
+    buildTypesAiobotocorePackage "outposts" "2.15.1"
+      "sha256-lFRMsg9LhjizD8NsSyK209h+xtvYgTmJf5lc3OQyqdY=";
 
-  types-aiobotocore-panorama = buildTypesAiobotocorePackage "panorama" "2.12.3" "sha256-nzkVKxoLpkEBthjyO4d2m8QsEVz2pYsjfBC0sGsTkrY=";
+  types-aiobotocore-panorama =
+    buildTypesAiobotocorePackage "panorama" "2.15.1"
+      "sha256-mdhrS+4Cg2VgH5AWroB2i5Pe6LEFfn9J9rEe+UQovxQ=";
 
-  types-aiobotocore-payment-cryptography = buildTypesAiobotocorePackage "payment-cryptography" "2.12.3" "sha256-7H0ew8JQNCUkbNiqCH4jCoO883j5y1hbxXqwwJARuTs=";
+  types-aiobotocore-payment-cryptography =
+    buildTypesAiobotocorePackage "payment-cryptography" "2.15.1"
+      "sha256-Lddnm936PSivXBygA44rgyd5wyPoPDns5XIYbQfQ91g=";
 
-  types-aiobotocore-payment-cryptography-data = buildTypesAiobotocorePackage "payment-cryptography-data" "2.12.3" "sha256-awVZZf6o0VRTqOl1myJggGdCmwoC5XBTlYSeupceWr0=";
+  types-aiobotocore-payment-cryptography-data =
+    buildTypesAiobotocorePackage "payment-cryptography-data" "2.15.1"
+      "sha256-jTgsyYOLrTYNEfyhotGbbTrlQkTKqmd/0uKOMvmm06U=";
 
-  types-aiobotocore-personalize = buildTypesAiobotocorePackage "personalize" "2.12.3" "sha256-j+q16/K4NSdsLmt+vXF3SEy2Kde+/6BxEZ05zOOPI2w=";
+  types-aiobotocore-personalize =
+    buildTypesAiobotocorePackage "personalize" "2.15.1"
+      "sha256-RULc20Hv5VUT+MO1/hj+LlsdL88c1KuChWjzYY150Xs=";
 
-  types-aiobotocore-personalize-events = buildTypesAiobotocorePackage "personalize-events" "2.12.3" "sha256-YY3hOmgc5ZU1rrN5cbHoIS54eby1AM2vYPz//fGH7Mw=";
+  types-aiobotocore-personalize-events =
+    buildTypesAiobotocorePackage "personalize-events" "2.15.1"
+      "sha256-3gl7NVGwfh1jy8VewE76+Pe/cPKQitdnC3JAau1S9dE=";
 
-  types-aiobotocore-personalize-runtime = buildTypesAiobotocorePackage "personalize-runtime" "2.12.3" "sha256-D8k7Ui77IvVkpODg7p8SQLO7We3/EYhZaHODsJskJgc=";
+  types-aiobotocore-personalize-runtime =
+    buildTypesAiobotocorePackage "personalize-runtime" "2.15.1"
+      "sha256-XnuLw62YOZN+EwJ6b1ZQCOwhIqzE8ntkrgmuqTY62vw=";
 
-  types-aiobotocore-pi = buildTypesAiobotocorePackage "pi" "2.12.3" "sha256-sOLfoF0t58cvdvB8LModo1fs8cPovn9gkg0d0opDj1c=";
+  types-aiobotocore-pi =
+    buildTypesAiobotocorePackage "pi" "2.15.1"
+      "sha256-g8pzgnV5puJSLogXJrQn1zhYiOB7446R4xkxOQCwqSY=";
 
-  types-aiobotocore-pinpoint = buildTypesAiobotocorePackage "pinpoint" "2.12.3" "sha256-YMB/QCn6zawXBB2Fw4he6CIdZFMz4s91IZIbx1W5RwU=";
+  types-aiobotocore-pinpoint =
+    buildTypesAiobotocorePackage "pinpoint" "2.15.1"
+      "sha256-gZJM4c3tSilImlxeKWU3szTmpnXxpS6kAvF/zKXglFQ=";
 
-  types-aiobotocore-pinpoint-email = buildTypesAiobotocorePackage "pinpoint-email" "2.12.3" "sha256-7MCEh3ICp+3qD6Uijk4/wpEzaP56khP7lG/1RJ26IJg=";
+  types-aiobotocore-pinpoint-email =
+    buildTypesAiobotocorePackage "pinpoint-email" "2.15.1"
+      "sha256-eXcDiAQjLAObgX3gfGtlVL6BNK8fq81f70tPNNcKJJ8=";
 
-  types-aiobotocore-pinpoint-sms-voice = buildTypesAiobotocorePackage "pinpoint-sms-voice" "2.12.3" "sha256-qCnMdlF9VwoTpXxgMObmOa61xzj8NHQoxJriMEbWUPs=";
+  types-aiobotocore-pinpoint-sms-voice =
+    buildTypesAiobotocorePackage "pinpoint-sms-voice" "2.15.1"
+      "sha256-OPJiALIiUDioRjXkeLtksPBMlmsUpIRsZtuoTESnKpU=";
 
-  types-aiobotocore-pinpoint-sms-voice-v2 = buildTypesAiobotocorePackage "pinpoint-sms-voice-v2" "2.12.3" "sha256-eWOhKQR0tTlqLKCmy3zWvRsg5Y0zRKxtQPM8DGEbvuE=";
+  types-aiobotocore-pinpoint-sms-voice-v2 =
+    buildTypesAiobotocorePackage "pinpoint-sms-voice-v2" "2.15.1"
+      "sha256-SN3dXMpqcuJcWnpeUi4Jwtat9erU0KdSjfEbyf8pHXc=";
 
-  types-aiobotocore-pipes = buildTypesAiobotocorePackage "pipes" "2.12.3" "sha256-kKpp8rQ/co4tJhi1xpuEaIpICy+8sM4grp6bu9HsGMw=";
+  types-aiobotocore-pipes =
+    buildTypesAiobotocorePackage "pipes" "2.15.1"
+      "sha256-Ru3j6tm6I+wtpKzkxBSFCfAleI52WnOSqgvlCIla9fE=";
 
-  types-aiobotocore-polly = buildTypesAiobotocorePackage "polly" "2.12.3" "sha256-lwU91zv+IhHXBoGtioox9iB7lqGxXwf+s3A43qDZFRw=";
+  types-aiobotocore-polly =
+    buildTypesAiobotocorePackage "polly" "2.15.1"
+      "sha256-U9FwTzLVdE0UbAMTjMjrIMlRVlkuQRzKiIEd7ZepOWA=";
 
-  types-aiobotocore-pricing = buildTypesAiobotocorePackage "pricing" "2.12.3" "sha256-n3bM48N4nqgXA5XQ+2lHgqyfADGP8pt8MDcpd3Afdbc=";
+  types-aiobotocore-pricing =
+    buildTypesAiobotocorePackage "pricing" "2.15.1"
+      "sha256-FEzR+YjEGFKWbihsat2gaDp87fdIPDCmeRv79U08fFo=";
 
-  types-aiobotocore-privatenetworks = buildTypesAiobotocorePackage "privatenetworks" "2.12.3" "sha256-EvxCTzjfaxz3sj7S39I1MvOUo5n4vnc4h0X4bWevSwE=";
+  types-aiobotocore-privatenetworks =
+    buildTypesAiobotocorePackage "privatenetworks" "2.15.1"
+      "sha256-7OB4PIbZDsnXqLp+9cXd5ER5QIkUpjtJk+A+jT0286Y=";
 
-  types-aiobotocore-proton = buildTypesAiobotocorePackage "proton" "2.12.3" "sha256-/0MAjPO7xXsuePNUGpqpSOORe6GsH8IpbZUj4F9+Jp0=";
+  types-aiobotocore-proton =
+    buildTypesAiobotocorePackage "proton" "2.15.1"
+      "sha256-MBUaIQIThP+JZHbVAU5r0yCHQs13wLAU87y1gRECFHU=";
 
-  types-aiobotocore-qldb = buildTypesAiobotocorePackage "qldb" "2.12.3" "sha256-2LbMUzIge0Jf+iGDI06ne7QP3EMoiVY3m1KOniiRnsw=";
+  types-aiobotocore-qldb =
+    buildTypesAiobotocorePackage "qldb" "2.15.1"
+      "sha256-yES1WELzrI3Xz0F4S7y3NajtNTQO10S3hi+pQsZ4KVE=";
 
-  types-aiobotocore-qldb-session = buildTypesAiobotocorePackage "qldb-session" "2.12.3" "sha256-Ooj8lzd48n+tcICQgAJT9z//7r+obDdv4jvTNTAhzCw=";
+  types-aiobotocore-qldb-session =
+    buildTypesAiobotocorePackage "qldb-session" "2.15.1"
+      "sha256-ISAoyu08TEXIr2VONRLIvRDaAOazDPEtPp66/CnmHv8=";
 
-  types-aiobotocore-quicksight = buildTypesAiobotocorePackage "quicksight" "2.12.3" "sha256-aZGpaXSomaU0+oFEEuN1C/1zjA4UAz4vn/Nu2JJThrA=";
+  types-aiobotocore-quicksight =
+    buildTypesAiobotocorePackage "quicksight" "2.15.1"
+      "sha256-eruqWUL7Yje7OJlV1arhKInqnXChEmI49nq75j4ZOrg=";
 
-  types-aiobotocore-ram = buildTypesAiobotocorePackage "ram" "2.12.3" "sha256-bauCdG3Qf4Uiyw0szQL7SBm7QmYSmcDAOW2nW23xlQ0=";
+  types-aiobotocore-ram =
+    buildTypesAiobotocorePackage "ram" "2.15.1"
+      "sha256-/7+C/b51gkVW8QXyXg/5b1vzvTtZXS5ts9K6PWXAZU4=";
 
-  types-aiobotocore-rbin = buildTypesAiobotocorePackage "rbin" "2.12.3" "sha256-zitp/IE5zJL0qKF5TM3nQdUA1qgSeCSGcK/WS3niRUA=";
+  types-aiobotocore-rbin =
+    buildTypesAiobotocorePackage "rbin" "2.15.1"
+      "sha256-/joJicKfFNQhy24zZp6vM/EmGZGBTwPTQ8w8KHv6CF0=";
 
-  types-aiobotocore-rds = buildTypesAiobotocorePackage "rds" "2.12.3" "sha256-scJBwjmxy+UmivIBKl5ncB0/JQSeSwSh3wA30EWH/+o=";
+  types-aiobotocore-rds =
+    buildTypesAiobotocorePackage "rds" "2.15.1"
+      "sha256-btYigxx5bnWll5u0IHDVpciY4ZV9dOxPDKReEv1i0AM=";
 
-  types-aiobotocore-rds-data = buildTypesAiobotocorePackage "rds-data" "2.12.3" "sha256-KmEecWh2Z0O6eoRjEClzDC/Vp3qYwrPtdIW6ty2/jM4=";
+  types-aiobotocore-rds-data =
+    buildTypesAiobotocorePackage "rds-data" "2.15.1"
+      "sha256-Kn4uM9F1UkiWGshjX62WD5qROnnTw6TgG4bPv9EWz4A=";
 
-  types-aiobotocore-redshift = buildTypesAiobotocorePackage "redshift" "2.12.3" "sha256-H0GqZM72tVXcvs6ciE9wcqOAQfECU84iKn2VdGaNhIg=";
+  types-aiobotocore-redshift =
+    buildTypesAiobotocorePackage "redshift" "2.15.1"
+      "sha256-cOu5LEVvs1VdXyfgtM7PYzIUsNN1l//gHTiY0ArmFf0=";
 
-  types-aiobotocore-redshift-data = buildTypesAiobotocorePackage "redshift-data" "2.12.3" "sha256-3eJxMH1JvdJ1n9XnC/6+q7rT5ipaUE/J5G++O1MGf40=";
+  types-aiobotocore-redshift-data =
+    buildTypesAiobotocorePackage "redshift-data" "2.15.1"
+      "sha256-9A4p2lohJEhOcL868mMJcmmjYSS8Gd/5ShbkvTunDQs=";
 
-  types-aiobotocore-redshift-serverless = buildTypesAiobotocorePackage "redshift-serverless" "2.12.3" "sha256-+KyAzCuPDV9QTx5COJZjGRpiciYdSHDaaulH++s8Olk=";
+  types-aiobotocore-redshift-serverless =
+    buildTypesAiobotocorePackage "redshift-serverless" "2.15.1"
+      "sha256-s+maghPzS18nSG+ozOp/hKQJRHZHwPhsASqUXaOs6Pk=";
 
-  types-aiobotocore-rekognition = buildTypesAiobotocorePackage "rekognition" "2.12.3" "sha256-AZ3tTUTTQsxIDn7hmq5DkepvOGRA/OBGC7O0Y9ZCqb4=";
+  types-aiobotocore-rekognition =
+    buildTypesAiobotocorePackage "rekognition" "2.15.1"
+      "sha256-aLCYGd8+LIgHxsR8Qr+rrruL5JERkn1etCL3o/A8sZw=";
 
-  types-aiobotocore-resiliencehub = buildTypesAiobotocorePackage "resiliencehub" "2.12.3" "sha256-mAKlLfWNTYpYA7QJl6VLHv9Kl4xNXKsRFZJbCEpLjdI=";
+  types-aiobotocore-resiliencehub =
+    buildTypesAiobotocorePackage "resiliencehub" "2.15.1"
+      "sha256-e8WN5g/vbWaYSNMZS43GOkdx6AFL15cPUvZn0Ufsvqk=";
 
-  types-aiobotocore-resource-explorer-2 = buildTypesAiobotocorePackage "resource-explorer-2" "2.12.3" "sha256-Tc2AoAADC9+ElCBKqATsRqAlq12gNcJKr7evJpbZejg=";
+  types-aiobotocore-resource-explorer-2 =
+    buildTypesAiobotocorePackage "resource-explorer-2" "2.15.1"
+      "sha256-/WiO9zp/YK8+2p97cbY5GwQcb1XB5i86QBlXERTDxk8=";
 
-  types-aiobotocore-resource-groups = buildTypesAiobotocorePackage "resource-groups" "2.12.3" "sha256-U02sdfU+FPpcKf7KP4WEIhwbew7CHnXUhE497fYmEXk=";
+  types-aiobotocore-resource-groups =
+    buildTypesAiobotocorePackage "resource-groups" "2.15.1"
+      "sha256-hGUdTC5ksWqneEqIROSc3XqYANVrtL2caM+OqTVnlcw=";
 
-  types-aiobotocore-resourcegroupstaggingapi = buildTypesAiobotocorePackage "resourcegroupstaggingapi" "2.12.3" "sha256-Ydf20+setw1400AydFrUHUWQdvNE4g2x23Q9Vn+FG+0=";
+  types-aiobotocore-resourcegroupstaggingapi =
+    buildTypesAiobotocorePackage "resourcegroupstaggingapi" "2.15.1"
+      "sha256-zJvPU3lXoxxw1LF0HkPTfO7d62Q0mTCuqGKQT/8LbPQ=";
 
-  types-aiobotocore-robomaker = buildTypesAiobotocorePackage "robomaker" "2.12.3" "sha256-trj8NpEEUJTB0WEzX1XyVQtofWH/j52oNb9CKL/lpSQ=";
+  types-aiobotocore-robomaker =
+    buildTypesAiobotocorePackage "robomaker" "2.15.1"
+      "sha256-X1hQ7pzhlsD9AcD2JdM/1u9W8PGRFnJaWhArHhZLPrk=";
 
-  types-aiobotocore-rolesanywhere = buildTypesAiobotocorePackage "rolesanywhere" "2.12.3" "sha256-xd23IpWelx5jtNTBWtCJZEIG4m/o0dpHlXi82goX8m8=";
+  types-aiobotocore-rolesanywhere =
+    buildTypesAiobotocorePackage "rolesanywhere" "2.15.1"
+      "sha256-VjjHrGv8GuQ+4Fd8meBih98YxFpVChvusBZDKJ7jvAA=";
 
-  types-aiobotocore-route53 = buildTypesAiobotocorePackage "route53" "2.12.3" "sha256-oEyb1NE+3wDStkvUX0gtJ6Bzp/oHIUw1gyQVdFv0PXw=";
+  types-aiobotocore-route53 =
+    buildTypesAiobotocorePackage "route53" "2.15.1"
+      "sha256-p1N0+9s+QDRoSkgiRtsmyGrxmse405CDwuPW10r2TFY=";
 
-  types-aiobotocore-route53-recovery-cluster = buildTypesAiobotocorePackage "route53-recovery-cluster" "2.12.3" "sha256-lnWLEXErO3LO4teDnVnkGRawfEXdh2EgkDL9RVp941Q=";
+  types-aiobotocore-route53-recovery-cluster =
+    buildTypesAiobotocorePackage "route53-recovery-cluster" "2.15.1"
+      "sha256-L27J6hqxLMwxm8r2DK3xc7LrtNOgt5HSBE/YsjqH9c8=";
 
-  types-aiobotocore-route53-recovery-control-config = buildTypesAiobotocorePackage "route53-recovery-control-config" "2.12.3" "sha256-FsnXHspKP62zQiB0zhX28V3yeLAMNqMW6JHTVtGVjsk=";
+  types-aiobotocore-route53-recovery-control-config =
+    buildTypesAiobotocorePackage "route53-recovery-control-config" "2.15.1"
+      "sha256-njXhqJ+7xnxabYnNqknXA67I2J88jxHk9oErziic1FU=";
 
-  types-aiobotocore-route53-recovery-readiness = buildTypesAiobotocorePackage "route53-recovery-readiness" "2.12.3" "sha256-mAWpWgYqjnoIHJzw3nNNQA5m5bQd+mkU1536hDb2K+w=";
+  types-aiobotocore-route53-recovery-readiness =
+    buildTypesAiobotocorePackage "route53-recovery-readiness" "2.15.1"
+      "sha256-U0jzrXqfz/X/Dg1S03/is/xkQwIO9ICwg5s/YYImBf4=";
 
-  types-aiobotocore-route53domains = buildTypesAiobotocorePackage "route53domains" "2.12.3" "sha256-sm1A/O/k62QDcmrhv5mpHZ3YqixRWcPnV2VEL9AfkFs=";
+  types-aiobotocore-route53domains =
+    buildTypesAiobotocorePackage "route53domains" "2.15.1"
+      "sha256-PL1oQYboRsEDlCACZ/f+WORfaj/3pv05XyyZf118cl0=";
 
-  types-aiobotocore-route53resolver = buildTypesAiobotocorePackage "route53resolver" "2.12.3" "sha256-wZVYaDPSU5d0xTeCJQcPi0hiLRt4pvrbMozalM3fIUA=";
+  types-aiobotocore-route53resolver =
+    buildTypesAiobotocorePackage "route53resolver" "2.15.1"
+      "sha256-P4Iq5h9zo7y0UIcwLml8cCjjP5wKgtxP2EX3KTVPobw=";
 
-  types-aiobotocore-rum = buildTypesAiobotocorePackage "rum" "2.12.3" "sha256-IMk/fTHusesqUz0k9KC0TIDcCiShh+DSdQowOBBpeJg=";
+  types-aiobotocore-rum =
+    buildTypesAiobotocorePackage "rum" "2.15.1"
+      "sha256-3WO3zTqIDqRR+bkAdsEg8KxruV43uUKGV86c+7jAKgw=";
 
-  types-aiobotocore-s3 = buildTypesAiobotocorePackage "s3" "2.12.3" "sha256-UcY0A+OAG3Dfi6HfH2leuknKraIHceX6pWcPsXElzX8=";
+  types-aiobotocore-s3 =
+    buildTypesAiobotocorePackage "s3" "2.15.1"
+      "sha256-nm1iUImUWba9BNV0JUKC1uYWxiFTKLCw3vUBsuqd188=";
 
-  types-aiobotocore-s3control = buildTypesAiobotocorePackage "s3control" "2.12.3" "sha256-SSD5mCt392ZE0SmypwASM1HeuqnNFbnBjsI/8Uwy+Y0=";
+  types-aiobotocore-s3control =
+    buildTypesAiobotocorePackage "s3control" "2.15.1"
+      "sha256-VDIAA8d4/zv5pI1frk6tFZJ9qWtC29b9rZdIYN0YYLA=";
 
-  types-aiobotocore-s3outposts = buildTypesAiobotocorePackage "s3outposts" "2.12.3" "sha256-iFrAYHvNIpgH+M6HeuogIZJiRiyzLhuOboEF3ipCCug=";
+  types-aiobotocore-s3outposts =
+    buildTypesAiobotocorePackage "s3outposts" "2.15.1"
+      "sha256-3IyAJHmya+ycc0do6H4NZnhn3Duhj/ITiW+b90x7d8o=";
 
-  types-aiobotocore-sagemaker = buildTypesAiobotocorePackage "sagemaker" "2.12.3" "sha256-DTUta+jol6bEAisciUDPaiubNdc7CE1DC2njjPVCuEw=";
+  types-aiobotocore-sagemaker =
+    buildTypesAiobotocorePackage "sagemaker" "2.15.1"
+      "sha256-kwB5VOix83ehKTJ6cXvR5aHO5ogYQvg3+CAnWEFll1k=";
 
-  types-aiobotocore-sagemaker-a2i-runtime = buildTypesAiobotocorePackage "sagemaker-a2i-runtime" "2.12.3" "sha256-+DV7vYutJqk3pcA8gaXVQW2foTKD07elUUFyMi13QT8=";
+  types-aiobotocore-sagemaker-a2i-runtime =
+    buildTypesAiobotocorePackage "sagemaker-a2i-runtime" "2.15.1"
+      "sha256-qGMnLC7fZA+OEwZNbfCQMJFiwO0mf/1chvMFi0CpIco=";
 
-  types-aiobotocore-sagemaker-edge = buildTypesAiobotocorePackage "sagemaker-edge" "2.12.3" "sha256-SFZJnRXUDM5qlvMf6nTso38RmBXKbN3xqOdXFwoCOEc=";
+  types-aiobotocore-sagemaker-edge =
+    buildTypesAiobotocorePackage "sagemaker-edge" "2.15.1"
+      "sha256-oDvjSp0rQFBDclkyLifawL/hobIcT3RuNXS3IuJmG+4=";
 
-  types-aiobotocore-sagemaker-featurestore-runtime = buildTypesAiobotocorePackage "sagemaker-featurestore-runtime" "2.12.3" "sha256-PnVM2KeIEodV1RVmiXv6Zh80NfnzxV3ih3RpNYJlnzw=";
+  types-aiobotocore-sagemaker-featurestore-runtime =
+    buildTypesAiobotocorePackage "sagemaker-featurestore-runtime" "2.15.1"
+      "sha256-ynKSN7dB42JJw6DQOpLjwZXSrNvIgqfYrlEaXKE+agw=";
 
-  types-aiobotocore-sagemaker-geospatial = buildTypesAiobotocorePackage "sagemaker-geospatial" "2.12.3" "sha256-Lg2PR/AB5yqsRwUWZfIf7vP7Ig2G8APEZRzCXUm0H48=";
+  types-aiobotocore-sagemaker-geospatial =
+    buildTypesAiobotocorePackage "sagemaker-geospatial" "2.15.1"
+      "sha256-GW0b2GWrahRsWM9p/sS896CLotC4NlHC+Tyya4AbANs=";
 
-  types-aiobotocore-sagemaker-metrics = buildTypesAiobotocorePackage "sagemaker-metrics" "2.12.3" "sha256-Iv6JOyRcAfkaNdq/m2ot/e8CTZREWIE7V+tEsZNZ3HY=";
+  types-aiobotocore-sagemaker-metrics =
+    buildTypesAiobotocorePackage "sagemaker-metrics" "2.15.1"
+      "sha256-xT0K4NB2r9ajVEDgTr8tAPtUQLVwZj4/q/9lFxNoRy4=";
 
-  types-aiobotocore-sagemaker-runtime = buildTypesAiobotocorePackage "sagemaker-runtime" "2.12.3" "sha256-/jd4KgxRbV9IzTGDm0BkcQ5UIaRpDyLBUFZXLsaYzA4=";
+  types-aiobotocore-sagemaker-runtime =
+    buildTypesAiobotocorePackage "sagemaker-runtime" "2.15.1"
+      "sha256-EKfd1G+A7T5A/7h+ZfWm+feD7VCEUU+RohAM8804Th8=";
 
-  types-aiobotocore-savingsplans = buildTypesAiobotocorePackage "savingsplans" "2.12.3" "sha256-PgrfYlgmvM7QtF0E1z4xi8gGK+ixZykxvdEMpTz3SZw=";
+  types-aiobotocore-savingsplans =
+    buildTypesAiobotocorePackage "savingsplans" "2.15.1"
+      "sha256-fpMpgVdydbNYhse3LemZWeu6pvLuXWYy7Nt3+CSedl0=";
 
-  types-aiobotocore-scheduler = buildTypesAiobotocorePackage "scheduler" "2.12.3" "sha256-jXpQJ1Uw2nOVZpkXtUf1mCrS9YykBJcvVMCp5Jz9558=";
+  types-aiobotocore-scheduler =
+    buildTypesAiobotocorePackage "scheduler" "2.15.1"
+      "sha256-786gr8xrz39LVOuU0EYtyBhUxDbo3YEH5UXzmY4+xSo=";
 
-  types-aiobotocore-schemas = buildTypesAiobotocorePackage "schemas" "2.12.3" "sha256-PiRnAEU/+r/VT3SiboaUpU9FRyOs/3Wj5wCJDyzKZNU=";
+  types-aiobotocore-schemas =
+    buildTypesAiobotocorePackage "schemas" "2.15.1"
+      "sha256-JUC3Sa94XRotK9rTelvMVG4TUQyrnVQ9Mdd+byd4A3w=";
 
-  types-aiobotocore-sdb = buildTypesAiobotocorePackage "sdb" "2.12.3" "sha256-17iQmuTvmeMDkz3fRxYlE/JcCy/XTuCNmlG5EGGY1S8=";
+  types-aiobotocore-sdb =
+    buildTypesAiobotocorePackage "sdb" "2.15.1"
+      "sha256-EV0eNjxdjT/JNuTip75SuCVDZfvQz71UbIgUHWfbakc=";
 
-  types-aiobotocore-secretsmanager = buildTypesAiobotocorePackage "secretsmanager" "2.12.3" "sha256-Yk0GEeSSl3Bhx9w/uRrrl9oNjpdw4ekye1Ia38fpvXE=";
+  types-aiobotocore-secretsmanager =
+    buildTypesAiobotocorePackage "secretsmanager" "2.15.1"
+      "sha256-GW4y+JyGelERL39KPMOcF/7+pwGBuPwKhNwecBi5BBg=";
 
-  types-aiobotocore-securityhub = buildTypesAiobotocorePackage "securityhub" "2.12.3" "sha256-iZzzocPVbiWn6ZaHOEu42hcOLJyjgIRWCJpeSiQE3I4=";
+  types-aiobotocore-securityhub =
+    buildTypesAiobotocorePackage "securityhub" "2.15.1"
+      "sha256-ONJsSG+d2fSaoPyrchl+oosIeVSjwoN5d0BPolDhhbk=";
 
-  types-aiobotocore-securitylake = buildTypesAiobotocorePackage "securitylake" "2.12.3" "sha256-q9e+7s3//qaswRo1wwIIhtEz7qszUKuHXXG3n4z8piE=";
+  types-aiobotocore-securitylake =
+    buildTypesAiobotocorePackage "securitylake" "2.15.1"
+      "sha256-ggAfufDDaW+LdNindZoAR1xeWr+hQKr1ImTl+nGE0B8=";
 
-  types-aiobotocore-serverlessrepo = buildTypesAiobotocorePackage "serverlessrepo" "2.12.3" "sha256-sqFr4/WFedUrgVK9PAVffaA4lhEK510679P/RoTv4xw=";
+  types-aiobotocore-serverlessrepo =
+    buildTypesAiobotocorePackage "serverlessrepo" "2.15.1"
+      "sha256-zUBoLdhvpvI/tTza9abj//Hkc59gMe70kqEF1SEW+FE=";
 
-  types-aiobotocore-service-quotas = buildTypesAiobotocorePackage "service-quotas" "2.12.3" "sha256-vCRTtFjQfCe38y/wZaxjIfHRLzkqAakDf/sNXtU2TOY=";
+  types-aiobotocore-service-quotas =
+    buildTypesAiobotocorePackage "service-quotas" "2.15.1"
+      "sha256-M1elV0BE1RyFOo2XlKVIt5gH1M4bIU7rld77+cGCptg=";
 
-  types-aiobotocore-servicecatalog = buildTypesAiobotocorePackage "servicecatalog" "2.12.3" "sha256-9EXbCcvcrXmKktoZXp+LdKXQOi6V9VKHrFVR++XGhOI=";
+  types-aiobotocore-servicecatalog =
+    buildTypesAiobotocorePackage "servicecatalog" "2.15.1"
+      "sha256-fgFgmDsx68FgZHOXTrJEB6OqVOlaVWgSer29dKwiBJo=";
 
-  types-aiobotocore-servicecatalog-appregistry = buildTypesAiobotocorePackage "servicecatalog-appregistry" "2.12.3" "sha256-VenvRShJhVaZHkM0MN+iEZHGeOeqbAYneRW0lB4+fww=";
+  types-aiobotocore-servicecatalog-appregistry =
+    buildTypesAiobotocorePackage "servicecatalog-appregistry" "2.15.1"
+      "sha256-NG2E4XxicGVtpLqi8n/j2C+BsxdMyWb554XX/HlnExI=";
 
-  types-aiobotocore-servicediscovery = buildTypesAiobotocorePackage "servicediscovery" "2.12.3" "sha256-fK38DE6aGY03HmtIBBhyxX4pjA3XOiKKZJ2iMJeZDP8=";
+  types-aiobotocore-servicediscovery =
+    buildTypesAiobotocorePackage "servicediscovery" "2.15.1"
+      "sha256-/6OTsZUTgwYXFzTf1G8hkngaN32L8dPJzgdNMSXisfo=";
 
-  types-aiobotocore-ses = buildTypesAiobotocorePackage "ses" "2.12.3" "sha256-oYoq9cMFB7qKjUccWa4iunjlwizUA/pevKcQiHS68wY=";
+  types-aiobotocore-ses =
+    buildTypesAiobotocorePackage "ses" "2.15.1"
+      "sha256-H3mZA65etYo+frlSNEMs/lT8G86oWbNjlkPefoIc6AA=";
 
-  types-aiobotocore-sesv2 = buildTypesAiobotocorePackage "sesv2" "2.12.3" "sha256-JR16UIvxYyWR+T7Ar9ft8rwxZrqwyzKy5pVJMi6kzbA=";
+  types-aiobotocore-sesv2 =
+    buildTypesAiobotocorePackage "sesv2" "2.15.1"
+      "sha256-diE7lw1LMxiy4gRam1zymw98VJGKaEWwQ5FudCma9ZU=";
 
-  types-aiobotocore-shield = buildTypesAiobotocorePackage "shield" "2.12.3" "sha256-tuzWmBEyMr9k4isVkg5ybz7NBwKl5udmHHdokUVILog=";
+  types-aiobotocore-shield =
+    buildTypesAiobotocorePackage "shield" "2.15.1"
+      "sha256-jeklWyR6ArvO9/i/2Iji+YbAsv2rnNLqKoSTBL5VDSQ=";
 
-  types-aiobotocore-signer = buildTypesAiobotocorePackage "signer" "2.12.3" "sha256-jy6cpicBp423tHyp6ALwPro0CwPddDfQHdo9KBOOtLo=";
+  types-aiobotocore-signer =
+    buildTypesAiobotocorePackage "signer" "2.15.1"
+      "sha256-I+Cfmn14B9W1O/LBNWZZ9384H0DexJav2bkc4+2zV58=";
 
-  types-aiobotocore-simspaceweaver = buildTypesAiobotocorePackage "simspaceweaver" "2.12.3" "sha256-fDVnFlLYm+8lfSVfFAGu5sjqrVIjmC0WCPpPbIhyf9w=";
+  types-aiobotocore-simspaceweaver =
+    buildTypesAiobotocorePackage "simspaceweaver" "2.15.1"
+      "sha256-1B4R4cjzz3fnevwRsT4o3mzlzw4tXbO1kENgWOWbU7w=";
 
-  types-aiobotocore-sms = buildTypesAiobotocorePackage "sms" "2.12.3" "sha256-RF91H0JiSTScbqvFbKHkid/Wp7+Qr/qLc6UT9bltEdY=";
+  types-aiobotocore-sms =
+    buildTypesAiobotocorePackage "sms" "2.15.1"
+      "sha256-w2iD7ZpVIIDRuTWikJAp3j7j7jBfcpPnKXfTm6KWq10=";
 
-  types-aiobotocore-sms-voice = buildTypesAiobotocorePackage "sms-voice" "2.12.3" "sha256-nT82/oiMPjWyVbwWLhLjRoQoEMZERe2ET2ti2OnefQw=";
+  types-aiobotocore-sms-voice =
+    buildTypesAiobotocorePackage "sms-voice" "2.15.1"
+      "sha256-+SZAFFyf+UTytFecjCv/MH9VykOCxFxXJEen1DZdljs=";
 
-  types-aiobotocore-snow-device-management = buildTypesAiobotocorePackage "snow-device-management" "2.12.3" "sha256-ama8FOWJb2czu+++Ps1nSKCnwZxMk9SP0OGHzX02x7Y=";
+  types-aiobotocore-snow-device-management =
+    buildTypesAiobotocorePackage "snow-device-management" "2.15.1"
+      "sha256-kaiXmu24wDGIzDtXJ2pT87Wdr3zzRioLVU5TjaNVsRo=";
 
-  types-aiobotocore-snowball = buildTypesAiobotocorePackage "snowball" "2.12.3" "sha256-elqHFPOYXK8xx1XC5yDkcPJPyY2x0/FKt3Kor+gPk9s=";
+  types-aiobotocore-snowball =
+    buildTypesAiobotocorePackage "snowball" "2.15.1"
+      "sha256-YvZxBJGNtRVSsJAtv46Nq9xliVvXShiI2exeir+bp8U=";
 
-  types-aiobotocore-sns = buildTypesAiobotocorePackage "sns" "2.12.3" "sha256-HfqnblwWhnFpVfFe6a4OLPQXuSZB+SzKRS5u39viIjE=";
+  types-aiobotocore-sns =
+    buildTypesAiobotocorePackage "sns" "2.15.1"
+      "sha256-U/VvZwz7qMrnPjgQUL0NMnNS6e5X4PgW/rjwBi65iAU=";
 
-  types-aiobotocore-sqs = buildTypesAiobotocorePackage "sqs" "2.12.3" "sha256-m4tcWZXlixyURA7V1bJvThC1VydPmalqIdz7JrqsEl0=";
+  types-aiobotocore-sqs =
+    buildTypesAiobotocorePackage "sqs" "2.15.1"
+      "sha256-CI9nNt+zfztYT6DwgjAe9RNtebegPAAsSl692FBF7hA=";
 
-  types-aiobotocore-ssm = buildTypesAiobotocorePackage "ssm" "2.12.3" "sha256-Zl8oXCdd7lPPNpIF27EPUfPcTVnwfjCBKfS1/t0ta60=";
+  types-aiobotocore-ssm =
+    buildTypesAiobotocorePackage "ssm" "2.15.1"
+      "sha256-x/b1hpCTHqZcTJTzwQc+pYjdOYCiyQdsLw1vBpuPQyc=";
 
-  types-aiobotocore-ssm-contacts = buildTypesAiobotocorePackage "ssm-contacts" "2.12.3" "sha256-TYFO1JBWesLY+oNg+k4IdR5OOtrddgUgDn7ONGARRKU=";
+  types-aiobotocore-ssm-contacts =
+    buildTypesAiobotocorePackage "ssm-contacts" "2.15.1"
+      "sha256-3N8kaI67M6xKuTsESi/x4FVXy2Lsdoc9RRGIo7bKAok=";
 
-  types-aiobotocore-ssm-incidents = buildTypesAiobotocorePackage "ssm-incidents" "2.12.3" "sha256-IzUQDV1C6TGKT+UXA2c9C6HVBlrg3qHynH/+7klH/6E=";
+  types-aiobotocore-ssm-incidents =
+    buildTypesAiobotocorePackage "ssm-incidents" "2.15.1"
+      "sha256-Fkl8ZgS3DD3hRYWQHl1cM2RCNHi8tWk9a1fyCQa+/KM=";
 
-  types-aiobotocore-ssm-sap = buildTypesAiobotocorePackage "ssm-sap" "2.12.3" "sha256-xaXFwmc+VBX005jom+oYI0fjqebI2BN7Mj14+dVXGQE=";
+  types-aiobotocore-ssm-sap =
+    buildTypesAiobotocorePackage "ssm-sap" "2.15.1"
+      "sha256-23gDeTpYf9sNK2ARSPwZTkNSlGIze8ybLymQ+X0cf74=";
 
-  types-aiobotocore-sso = buildTypesAiobotocorePackage "sso" "2.12.3" "sha256-ZC4pgxkd0NM+jxOrdiZCoMv39N5dp6yvCfcbkuWxKkE=";
+  types-aiobotocore-sso =
+    buildTypesAiobotocorePackage "sso" "2.15.1"
+      "sha256-7uJXGduh2yrj0nLWgTyELxdB6ZaU7TX35GywXTECU64=";
 
-  types-aiobotocore-sso-admin = buildTypesAiobotocorePackage "sso-admin" "2.12.3" "sha256-chLpz3GeLrw6SbnmqeZntzFZb8YseYXswmlU1icccMs=";
+  types-aiobotocore-sso-admin =
+    buildTypesAiobotocorePackage "sso-admin" "2.15.1"
+      "sha256-qTAoxjZnze1ffC/QdVnCRy37H4Tzc1AkAERvvtVxkik=";
 
-  types-aiobotocore-sso-oidc = buildTypesAiobotocorePackage "sso-oidc" "2.12.3" "sha256-P7D0/lG3YJbQi12viIdd/Ykl3PCC1u/EAE0oqZv0zAk=";
+  types-aiobotocore-sso-oidc =
+    buildTypesAiobotocorePackage "sso-oidc" "2.15.1"
+      "sha256-+MsbvjZLLdY/JOr/yWBvrfHQ3SEWvUtzvaImsYNX0YI=";
 
-  types-aiobotocore-stepfunctions = buildTypesAiobotocorePackage "stepfunctions" "2.12.3" "sha256-sYm/6MQNZfRL88M6JPhgZUrPV0r2kWfiNT9nPQB1Uwo=";
+  types-aiobotocore-stepfunctions =
+    buildTypesAiobotocorePackage "stepfunctions" "2.15.1"
+      "sha256-4YKcuhem2grrKP2I0y+fayyQ4beVhKQJ7KAC70TgN14=";
 
-  types-aiobotocore-storagegateway = buildTypesAiobotocorePackage "storagegateway" "2.12.3" "sha256-bdVAioN/pPSA3Ma7PPFhAVL4L1E7clZJzPct0k7ABp8=";
+  types-aiobotocore-storagegateway =
+    buildTypesAiobotocorePackage "storagegateway" "2.15.1"
+      "sha256-DDxzE4KcnC4sjVgBMt2cldFgm2JIeA7pRR7lqocvXN8=";
 
-  types-aiobotocore-sts = buildTypesAiobotocorePackage "sts" "2.12.3" "sha256-aQyVJ9UWizJuKDkko6+xHNIONLq3hI+rQfHsPaW6JVU=";
+  types-aiobotocore-sts =
+    buildTypesAiobotocorePackage "sts" "2.15.1"
+      "sha256-LMs2iAbogup0JrXFBIJhpgn8oFuhH3jGnb/Xh60xsMg=";
 
-  types-aiobotocore-support = buildTypesAiobotocorePackage "support" "2.12.3" "sha256-pJg8YolBrgYx0FwW3J60x2S9H4XymC0XlBBilb1YIEY=";
+  types-aiobotocore-support =
+    buildTypesAiobotocorePackage "support" "2.15.1"
+      "sha256-fpQ5fan2CkWJrnir65tBHyXAqSa1CVQXt/Q1h7NiyjU=";
 
-  types-aiobotocore-support-app = buildTypesAiobotocorePackage "support-app" "2.12.3" "sha256-NMG419sd7+MjfBEGjaDYcr7kHCE3R3wAY5rFLzfIg18=";
+  types-aiobotocore-support-app =
+    buildTypesAiobotocorePackage "support-app" "2.15.1"
+      "sha256-W/uBm0i+eNsPdSpZ+WvxSRJpZTzRdnt4snregNIeghQ=";
 
-  types-aiobotocore-swf = buildTypesAiobotocorePackage "swf" "2.12.3" "sha256-HFcaf+erCthcjXILJYmkH1YDM6xGR1DVi9xd61/UmUc=";
+  types-aiobotocore-swf =
+    buildTypesAiobotocorePackage "swf" "2.15.1"
+      "sha256-ijmqVcESbAfQLCgWhIEqq1+V8fChp1Pq0IfeBjmPtPM=";
 
-  types-aiobotocore-synthetics = buildTypesAiobotocorePackage "synthetics" "2.12.3" "sha256-91qq9ziYFML/0rdn3SP8glsG9mW1LUjvqPlNDt4Fbwo=";
+  types-aiobotocore-synthetics =
+    buildTypesAiobotocorePackage "synthetics" "2.15.1"
+      "sha256-mDvgYxDjVc2Z+IGCiaNR3xOYuht1LHJPW1lViQsfsfQ=";
 
-  types-aiobotocore-textract = buildTypesAiobotocorePackage "textract" "2.12.3" "sha256-WQFJaP++IIr0eWa810stZzMM0gW5Cxh3CPVTfuFzhYg=";
+  types-aiobotocore-textract =
+    buildTypesAiobotocorePackage "textract" "2.15.1"
+      "sha256-HLjYbm4OK2gvKMKBkNZytKlChMW43y8g2k0CMVVvcGY=";
 
-  types-aiobotocore-timestream-query = buildTypesAiobotocorePackage "timestream-query" "2.12.3" "sha256-TOXo/JhCp8+dD0umfIuokpF/lmUgFfsMLOoLtkiZNpg=";
+  types-aiobotocore-timestream-query =
+    buildTypesAiobotocorePackage "timestream-query" "2.15.1"
+      "sha256-Jx3U+EzIZzTntyq5YxlSJkHQaGX3JkKqCOlHtGqO7vY=";
 
-  types-aiobotocore-timestream-write = buildTypesAiobotocorePackage "timestream-write" "2.12.3" "sha256-teNvXZu8T74wuYy13s9UvT2sBc/Q8pT27Mj0lP1uDa0=";
+  types-aiobotocore-timestream-write =
+    buildTypesAiobotocorePackage "timestream-write" "2.15.1"
+      "sha256-h1eonOUwVXsybJ25UfQwZtZWuhDh1v8M10ZT9JM1NVo=";
 
-  types-aiobotocore-tnb = buildTypesAiobotocorePackage "tnb" "2.12.3" "sha256-y3efi+c+4NOXvdnc+y/PMD2CuFuLDGU9HwFUgkNV8HU=";
+  types-aiobotocore-tnb =
+    buildTypesAiobotocorePackage "tnb" "2.15.1"
+      "sha256-6b9c2UdaNHM3/GAiGWFnZVR7sUP+cUy9Z5W3Ig+7fSM=";
 
-  types-aiobotocore-transcribe = buildTypesAiobotocorePackage "transcribe" "2.12.3" "sha256-RdPWi2yNUdoDh3vrQGJx7BoF8tfYO2h9e0juwuNZTPY=";
+  types-aiobotocore-transcribe =
+    buildTypesAiobotocorePackage "transcribe" "2.15.1"
+      "sha256-bLQrTDUhbYOTYY+KvUxMwiHgPFHrAJxB8Yjy3TUAMCc=";
 
-  types-aiobotocore-transfer = buildTypesAiobotocorePackage "transfer" "2.12.3" "sha256-svX7Mr99aXUcYxtuFDAuEYvBF16IJqWbRNjubgxtRww=";
+  types-aiobotocore-transfer =
+    buildTypesAiobotocorePackage "transfer" "2.15.1"
+      "sha256-+cSgukEugB7RSrkWsEgbiMS6tvjAJDPwVP+rVEsAMJE=";
 
-  types-aiobotocore-translate = buildTypesAiobotocorePackage "translate" "2.12.3" "sha256-AY9NzJprshQe5UPAERG+DquylhKLtec05KMjM+CfJx4=";
+  types-aiobotocore-translate =
+    buildTypesAiobotocorePackage "translate" "2.15.1"
+      "sha256-Hf46I5GHQyLAN6IXL0X0VN6Mr3CsMhhPFKqx/fDrHv8=";
 
-  types-aiobotocore-verifiedpermissions = buildTypesAiobotocorePackage "verifiedpermissions" "2.12.3" "sha256-bH15twDf36YZuWTGhIdl2XsV9CYxrTRstI8+9otJA0A=";
+  types-aiobotocore-verifiedpermissions =
+    buildTypesAiobotocorePackage "verifiedpermissions" "2.15.1"
+      "sha256-yxamVPkF/RexBvdBpjUi8rYzEy5jOf15otKqi64gnOc=";
 
-  types-aiobotocore-voice-id = buildTypesAiobotocorePackage "voice-id" "2.12.3" "sha256-BA/JY5cusubF2NYIFOotM14O6YHEmcP9PX59ksnj8e0=";
+  types-aiobotocore-voice-id =
+    buildTypesAiobotocorePackage "voice-id" "2.15.1"
+      "sha256-B7Q0TAT7rMWVZf4wSE6qGxMalHwvV7hPrcnCw3vcQkw=";
 
-  types-aiobotocore-vpc-lattice = buildTypesAiobotocorePackage "vpc-lattice" "2.12.3" "sha256-YYH5fIP+7yWLwm/UlAfdQWACsXXuyqGPNVWx1ZTsKq8=";
+  types-aiobotocore-vpc-lattice =
+    buildTypesAiobotocorePackage "vpc-lattice" "2.15.1"
+      "sha256-ybBzzhKX3NClXHnYR7GBpQZGsF+xPprHrbHgOjeR+9U=";
 
-  types-aiobotocore-waf = buildTypesAiobotocorePackage "waf" "2.12.3" "sha256-3vNi+7zjFmOsphhkiCe3sL3xGc6vJn+QxXfnJiGzeRE=";
+  types-aiobotocore-waf =
+    buildTypesAiobotocorePackage "waf" "2.15.1"
+      "sha256-YPYrL6RRL0UhABcDZXpJQ8RQWDvPkD+y/qDQ1PbLCuU=";
 
-  types-aiobotocore-waf-regional = buildTypesAiobotocorePackage "waf-regional" "2.12.3" "sha256-v/NoOoMS6KwZotYZsCIqwQ3EkUusaK5YuCnQz3eBhz8=";
+  types-aiobotocore-waf-regional =
+    buildTypesAiobotocorePackage "waf-regional" "2.15.1"
+      "sha256-fkKB2Cmg0i/OOJKkHmLzU0UWkUDXVAjXYmBWpal6pg4=";
 
-  types-aiobotocore-wafv2 = buildTypesAiobotocorePackage "wafv2" "2.12.3" "sha256-DI5GBYssyNe5yDUD9EF4+waE1d/SD6iDyNK93Hhbl38=";
+  types-aiobotocore-wafv2 =
+    buildTypesAiobotocorePackage "wafv2" "2.15.1"
+      "sha256-f5xAh/57zMcvjJHeqDDSrlSx3u/J3e78oQmGVSyD4Vc=";
 
-  types-aiobotocore-wellarchitected = buildTypesAiobotocorePackage "wellarchitected" "2.12.3" "sha256-g+EwfgHlhvFWHlQsjZriiPHFF+VzLlMAo9LtX+AImlc=";
+  types-aiobotocore-wellarchitected =
+    buildTypesAiobotocorePackage "wellarchitected" "2.15.1"
+      "sha256-j1yGNqM32RKzz5xmL52+cwS9JIj1DUIJQatHz7ZjZrg=";
 
-  types-aiobotocore-wisdom = buildTypesAiobotocorePackage "wisdom" "2.12.3" "sha256-EHqZb51vIHt4ox9Zd9G/Hl6KGWd7vIipjYn+ru3zwTw=";
+  types-aiobotocore-wisdom =
+    buildTypesAiobotocorePackage "wisdom" "2.15.1"
+      "sha256-0rngVEUa9yBIeoMC2dKVVDty4DAiesQZJRm73C4PAhg=";
 
-  types-aiobotocore-workdocs = buildTypesAiobotocorePackage "workdocs" "2.12.3" "sha256-/lVbhKOMtyTSZEEgzKH2DySZM1+Jv3LM4TJAauTWyLc=";
+  types-aiobotocore-workdocs =
+    buildTypesAiobotocorePackage "workdocs" "2.15.1"
+      "sha256-Jypse/lhsvGWfu8551dngM+Jp8BdIp2T1WRfqdV02ug=";
 
-  types-aiobotocore-worklink = buildTypesAiobotocorePackage "worklink" "2.12.3" "sha256-agu/CSxY1gjcVTU42I2DR9Rxrk0c9GANXJe16Nx4U1I=";
+  types-aiobotocore-worklink =
+    buildTypesAiobotocorePackage "worklink" "2.15.1"
+      "sha256-VvuxiybvGaehPqyVUYGO1bbVSQ0OYgk6LbzgoKLHF2c=";
 
-  types-aiobotocore-workmail = buildTypesAiobotocorePackage "workmail" "2.12.3" "sha256-XYf1bnCmYZI51uvJY9IG+imcUyqNO1AUc3gWF/jMhkA=";
+  types-aiobotocore-workmail =
+    buildTypesAiobotocorePackage "workmail" "2.15.1"
+      "sha256-o2n4u7wgJPSS02LLZe+PLsxdwm5r+0j3VzDFVnR7bGc=";
 
-  types-aiobotocore-workmailmessageflow = buildTypesAiobotocorePackage "workmailmessageflow" "2.12.3" "sha256-qMBxt5KkYqfDqWAFJVdch2edQCIl+lP5lyjAGkMriN8=";
+  types-aiobotocore-workmailmessageflow =
+    buildTypesAiobotocorePackage "workmailmessageflow" "2.15.1"
+      "sha256-PQQLKPZYaCqIVTXS8PWAjrYjp4ZTMl1XDuvz27s10sY=";
 
-  types-aiobotocore-workspaces = buildTypesAiobotocorePackage "workspaces" "2.12.3" "sha256-KLg4Q2VvinCIBhqD33CnpXqSjaex8JlN0vh1BIq1bpE=";
+  types-aiobotocore-workspaces =
+    buildTypesAiobotocorePackage "workspaces" "2.15.1"
+      "sha256-eU+8eBZ52BEAqpvHWJ4aVr2kuz6/6fMu7yu4bA9f/TQ=";
 
-  types-aiobotocore-workspaces-web = buildTypesAiobotocorePackage "workspaces-web" "2.12.3" "sha256-y+iQviR02Kuy0czNmKJOefkI9AVBgGGXGm8DQPxVoXM=";
+  types-aiobotocore-workspaces-web =
+    buildTypesAiobotocorePackage "workspaces-web" "2.15.1"
+      "sha256-+lUuiVz/wqkuH59QzB8ZIv+bvNGeNZvBDzUctYd6LAg=";
 
-  types-aiobotocore-xray = buildTypesAiobotocorePackage "xray" "2.12.3" "sha256-l89VAkb3pdSU559nWIaipZOYsRG1DGz1wEDKOyehe0Q=";
+  types-aiobotocore-xray =
+    buildTypesAiobotocorePackage "xray" "2.15.1"
+      "sha256-+MKFgYPnSmSLjE9YP8fDjAo91o+mYkN2T4FbOMVSmnw=";
 }
diff --git a/pkgs/development/python-modules/types-aiobotocore/default.nix b/pkgs/development/python-modules/types-aiobotocore/default.nix
index 0c1a13950b7e3..a91d608c77fc9 100644
--- a/pkgs/development/python-modules/types-aiobotocore/default.nix
+++ b/pkgs/development/python-modules/types-aiobotocore/default.nix
@@ -1,16 +1,15 @@
 {
   lib,
+  aiobotocore,
+  botocore-stubs,
+  botocore,
   buildPythonPackage,
   fetchPypi,
   setuptools,
-  botocore-stubs,
-  typing-extensions,
   types-aiobotocore-accessanalyzer,
   types-aiobotocore-account,
-  types-aiobotocore-acm,
   types-aiobotocore-acm-pca,
-  aiobotocore,
-  botocore,
+  types-aiobotocore-acm,
   types-aiobotocore-alexaforbusiness,
   types-aiobotocore-amp,
   types-aiobotocore-amplify,
@@ -34,22 +33,22 @@
   types-aiobotocore-arc-zonal-shift,
   types-aiobotocore-athena,
   types-aiobotocore-auditmanager,
-  types-aiobotocore-autoscaling,
   types-aiobotocore-autoscaling-plans,
-  types-aiobotocore-backup,
+  types-aiobotocore-autoscaling,
   types-aiobotocore-backup-gateway,
+  types-aiobotocore-backup,
   types-aiobotocore-backupstorage,
   types-aiobotocore-batch,
   types-aiobotocore-billingconductor,
   types-aiobotocore-braket,
   types-aiobotocore-budgets,
   types-aiobotocore-ce,
-  types-aiobotocore-chime,
   types-aiobotocore-chime-sdk-identity,
   types-aiobotocore-chime-sdk-media-pipelines,
   types-aiobotocore-chime-sdk-meetings,
   types-aiobotocore-chime-sdk-messaging,
   types-aiobotocore-chime-sdk-voice,
+  types-aiobotocore-chime,
   types-aiobotocore-cleanrooms,
   types-aiobotocore-cloud9,
   types-aiobotocore-cloudcontrol,
@@ -60,8 +59,8 @@
   types-aiobotocore-cloudhsmv2,
   types-aiobotocore-cloudsearch,
   types-aiobotocore-cloudsearchdomain,
-  types-aiobotocore-cloudtrail,
   types-aiobotocore-cloudtrail-data,
+  types-aiobotocore-cloudtrail,
   types-aiobotocore-cloudwatch,
   types-aiobotocore-codeartifact,
   types-aiobotocore-codebuild,
@@ -72,9 +71,9 @@
   types-aiobotocore-codeguru-security,
   types-aiobotocore-codeguruprofiler,
   types-aiobotocore-codepipeline,
-  types-aiobotocore-codestar,
   types-aiobotocore-codestar-connections,
   types-aiobotocore-codestar-notifications,
+  types-aiobotocore-codestar,
   types-aiobotocore-cognito-identity,
   types-aiobotocore-cognito-idp,
   types-aiobotocore-cognito-sync,
@@ -82,8 +81,8 @@
   types-aiobotocore-comprehendmedical,
   types-aiobotocore-compute-optimizer,
   types-aiobotocore-config,
-  types-aiobotocore-connect,
   types-aiobotocore-connect-contact-lens,
+  types-aiobotocore-connect,
   types-aiobotocore-connectcampaigns,
   types-aiobotocore-connectcases,
   types-aiobotocore-connectparticipant,
@@ -102,17 +101,17 @@
   types-aiobotocore-discovery,
   types-aiobotocore-dlm,
   types-aiobotocore-dms,
-  types-aiobotocore-docdb,
   types-aiobotocore-docdb-elastic,
+  types-aiobotocore-docdb,
   types-aiobotocore-drs,
   types-aiobotocore-ds,
   types-aiobotocore-dynamodb,
   types-aiobotocore-dynamodbstreams,
   types-aiobotocore-ebs,
-  types-aiobotocore-ec2,
   types-aiobotocore-ec2-instance-connect,
-  types-aiobotocore-ecr,
+  types-aiobotocore-ec2,
   types-aiobotocore-ecr-public,
+  types-aiobotocore-ecr,
   types-aiobotocore-ecs,
   types-aiobotocore-efs,
   types-aiobotocore-eks,
@@ -122,15 +121,15 @@
   types-aiobotocore-elastictranscoder,
   types-aiobotocore-elb,
   types-aiobotocore-elbv2,
-  types-aiobotocore-emr,
   types-aiobotocore-emr-containers,
   types-aiobotocore-emr-serverless,
+  types-aiobotocore-emr,
   types-aiobotocore-entityresolution,
   types-aiobotocore-es,
   types-aiobotocore-events,
   types-aiobotocore-evidently,
-  types-aiobotocore-finspace,
   types-aiobotocore-finspace-data,
+  types-aiobotocore-finspace,
   types-aiobotocore-firehose,
   types-aiobotocore-fis,
   types-aiobotocore-fms,
@@ -158,16 +157,16 @@
   types-aiobotocore-inspector,
   types-aiobotocore-inspector2,
   types-aiobotocore-internetmonitor,
-  types-aiobotocore-iot,
   types-aiobotocore-iot-data,
   types-aiobotocore-iot-jobs-data,
   types-aiobotocore-iot-roborunner,
+  types-aiobotocore-iot,
   types-aiobotocore-iot1click-devices,
   types-aiobotocore-iot1click-projects,
   types-aiobotocore-iotanalytics,
   types-aiobotocore-iotdeviceadvisor,
-  types-aiobotocore-iotevents,
   types-aiobotocore-iotevents-data,
+  types-aiobotocore-iotevents,
   types-aiobotocore-iotfleethub,
   types-aiobotocore-iotfleetwise,
   types-aiobotocore-iotsecuretunneling,
@@ -175,19 +174,19 @@
   types-aiobotocore-iotthingsgraph,
   types-aiobotocore-iottwinmaker,
   types-aiobotocore-iotwireless,
-  types-aiobotocore-ivs,
   types-aiobotocore-ivs-realtime,
+  types-aiobotocore-ivs,
   types-aiobotocore-ivschat,
   types-aiobotocore-kafka,
   types-aiobotocore-kafkaconnect,
-  types-aiobotocore-kendra,
   types-aiobotocore-kendra-ranking,
+  types-aiobotocore-kendra,
   types-aiobotocore-keyspaces,
-  types-aiobotocore-kinesis,
   types-aiobotocore-kinesis-video-archived-media,
   types-aiobotocore-kinesis-video-media,
   types-aiobotocore-kinesis-video-signaling,
   types-aiobotocore-kinesis-video-webrtc-storage,
+  types-aiobotocore-kinesis,
   types-aiobotocore-kinesisanalytics,
   types-aiobotocore-kinesisanalyticsv2,
   types-aiobotocore-kinesisvideo,
@@ -198,9 +197,9 @@
   types-aiobotocore-lex-runtime,
   types-aiobotocore-lexv2-models,
   types-aiobotocore-lexv2-runtime,
-  types-aiobotocore-license-manager,
   types-aiobotocore-license-manager-linux-subscriptions,
   types-aiobotocore-license-manager-user-subscriptions,
+  types-aiobotocore-license-manager,
   types-aiobotocore-lightsail,
   types-aiobotocore-location,
   types-aiobotocore-logs,
@@ -211,19 +210,19 @@
   types-aiobotocore-machinelearning,
   types-aiobotocore-macie,
   types-aiobotocore-macie2,
-  types-aiobotocore-managedblockchain,
   types-aiobotocore-managedblockchain-query,
+  types-aiobotocore-managedblockchain,
   types-aiobotocore-marketplace-catalog,
   types-aiobotocore-marketplace-entitlement,
   types-aiobotocore-marketplacecommerceanalytics,
   types-aiobotocore-mediaconnect,
   types-aiobotocore-mediaconvert,
   types-aiobotocore-medialive,
-  types-aiobotocore-mediapackage,
   types-aiobotocore-mediapackage-vod,
+  types-aiobotocore-mediapackage,
   types-aiobotocore-mediapackagev2,
-  types-aiobotocore-mediastore,
   types-aiobotocore-mediastore-data,
+  types-aiobotocore-mediastore,
   types-aiobotocore-mediatailor,
   types-aiobotocore-medical-imaging,
   types-aiobotocore-memorydb,
@@ -252,31 +251,31 @@
   types-aiobotocore-osis,
   types-aiobotocore-outposts,
   types-aiobotocore-panorama,
-  types-aiobotocore-payment-cryptography,
   types-aiobotocore-payment-cryptography-data,
-  types-aiobotocore-personalize,
+  types-aiobotocore-payment-cryptography,
   types-aiobotocore-personalize-events,
   types-aiobotocore-personalize-runtime,
+  types-aiobotocore-personalize,
   types-aiobotocore-pi,
-  types-aiobotocore-pinpoint,
   types-aiobotocore-pinpoint-email,
-  types-aiobotocore-pinpoint-sms-voice,
   types-aiobotocore-pinpoint-sms-voice-v2,
+  types-aiobotocore-pinpoint-sms-voice,
+  types-aiobotocore-pinpoint,
   types-aiobotocore-pipes,
   types-aiobotocore-polly,
   types-aiobotocore-pricing,
   types-aiobotocore-privatenetworks,
   types-aiobotocore-proton,
-  types-aiobotocore-qldb,
   types-aiobotocore-qldb-session,
+  types-aiobotocore-qldb,
   types-aiobotocore-quicksight,
   types-aiobotocore-ram,
   types-aiobotocore-rbin,
-  types-aiobotocore-rds,
   types-aiobotocore-rds-data,
-  types-aiobotocore-redshift,
+  types-aiobotocore-rds,
   types-aiobotocore-redshift-data,
   types-aiobotocore-redshift-serverless,
+  types-aiobotocore-redshift,
   types-aiobotocore-rekognition,
   types-aiobotocore-resiliencehub,
   types-aiobotocore-resource-explorer-2,
@@ -284,23 +283,23 @@
   types-aiobotocore-resourcegroupstaggingapi,
   types-aiobotocore-robomaker,
   types-aiobotocore-rolesanywhere,
-  types-aiobotocore-route53,
   types-aiobotocore-route53-recovery-cluster,
   types-aiobotocore-route53-recovery-control-config,
   types-aiobotocore-route53-recovery-readiness,
+  types-aiobotocore-route53,
   types-aiobotocore-route53domains,
   types-aiobotocore-route53resolver,
   types-aiobotocore-rum,
   types-aiobotocore-s3,
   types-aiobotocore-s3control,
   types-aiobotocore-s3outposts,
-  types-aiobotocore-sagemaker,
   types-aiobotocore-sagemaker-a2i-runtime,
   types-aiobotocore-sagemaker-edge,
   types-aiobotocore-sagemaker-featurestore-runtime,
   types-aiobotocore-sagemaker-geospatial,
   types-aiobotocore-sagemaker-metrics,
   types-aiobotocore-sagemaker-runtime,
+  types-aiobotocore-sagemaker,
   types-aiobotocore-savingsplans,
   types-aiobotocore-scheduler,
   types-aiobotocore-schemas,
@@ -310,32 +309,32 @@
   types-aiobotocore-securitylake,
   types-aiobotocore-serverlessrepo,
   types-aiobotocore-service-quotas,
-  types-aiobotocore-servicecatalog,
   types-aiobotocore-servicecatalog-appregistry,
+  types-aiobotocore-servicecatalog,
   types-aiobotocore-servicediscovery,
   types-aiobotocore-ses,
   types-aiobotocore-sesv2,
   types-aiobotocore-shield,
   types-aiobotocore-signer,
   types-aiobotocore-simspaceweaver,
-  types-aiobotocore-sms,
   types-aiobotocore-sms-voice,
+  types-aiobotocore-sms,
   types-aiobotocore-snow-device-management,
   types-aiobotocore-snowball,
   types-aiobotocore-sns,
   types-aiobotocore-sqs,
-  types-aiobotocore-ssm,
   types-aiobotocore-ssm-contacts,
   types-aiobotocore-ssm-incidents,
   types-aiobotocore-ssm-sap,
-  types-aiobotocore-sso,
+  types-aiobotocore-ssm,
   types-aiobotocore-sso-admin,
   types-aiobotocore-sso-oidc,
+  types-aiobotocore-sso,
   types-aiobotocore-stepfunctions,
   types-aiobotocore-storagegateway,
   types-aiobotocore-sts,
-  types-aiobotocore-support,
   types-aiobotocore-support-app,
+  types-aiobotocore-support,
   types-aiobotocore-swf,
   types-aiobotocore-synthetics,
   types-aiobotocore-textract,
@@ -348,8 +347,8 @@
   types-aiobotocore-verifiedpermissions,
   types-aiobotocore-voice-id,
   types-aiobotocore-vpc-lattice,
-  types-aiobotocore-waf,
   types-aiobotocore-waf-regional,
+  types-aiobotocore-waf,
   types-aiobotocore-wafv2,
   types-aiobotocore-wellarchitected,
   types-aiobotocore-wisdom,
@@ -357,19 +356,21 @@
   types-aiobotocore-worklink,
   types-aiobotocore-workmail,
   types-aiobotocore-workmailmessageflow,
-  types-aiobotocore-workspaces,
   types-aiobotocore-workspaces-web,
+  types-aiobotocore-workspaces,
   types-aiobotocore-xray,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "types-aiobotocore";
-  version = "2.12.3";
+  version = "2.15.1";
   pyproject = true;
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-h1dg3vgjPBYErgj8UKEcckCQuzGZr+VfhAuBS1biJ/M=";
+    pname = "types_aiobotocore";
+    inherit version;
+    hash = "sha256-DW7QyEVvvlnew0WqFCgA2wg3uYvKHtX2jPbvbVITd0U=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/types-aiobotocore/update.sh b/pkgs/development/python-modules/types-aiobotocore/update.sh
index 4a5a75123c7c9..ea5b05fdaacd3 100755
--- a/pkgs/development/python-modules/types-aiobotocore/update.sh
+++ b/pkgs/development/python-modules/types-aiobotocore/update.sh
@@ -1,16 +1,18 @@
 #!/usr/bin/env nix-shell
-#!nix-shell -i bash -p nix-update nixpkgs-fmt
+#!nix-shell -i bash -p nix-update nixfmt-classic curl jq
 
 set -eu -o pipefail
 
 source_file=pkgs/development/python-modules/types-aiobotocore-packages/default.nix
 
-version="2.12.3"
-
-#nix-update python312Packages.types-aiobotocore --commit --build
+nix-update python312Packages.types-aiobotocore --commit --build
 
 packages=(
-  types-aiobotocore-alexaforbusiness
+  types-aiobotocore-accessanalyzer
+  types-aiobotocore-account
+  types-aiobotocore-acm
+  types-aiobotocore-acm-pca
+  # types-aiobotocore-alexaforbusiness  Obsolete, will be removed soon
   types-aiobotocore-amp
   types-aiobotocore-amplify
   types-aiobotocore-amplifybackend
@@ -37,7 +39,7 @@ packages=(
   types-aiobotocore-autoscaling-plans
   types-aiobotocore-backup
   types-aiobotocore-backup-gateway
-  types-aiobotocore-backupstorage
+  # types-aiobotocore-backupstorage  Obsolete, will be removed soon
   types-aiobotocore-batch
   types-aiobotocore-billingconductor
   types-aiobotocore-braket
@@ -71,7 +73,7 @@ packages=(
   types-aiobotocore-codeguru-security
   types-aiobotocore-codeguruprofiler
   types-aiobotocore-codepipeline
-  types-aiobotocore-codestar
+  # types-aiobotocore-codestar  Obsolete, will be removed soon
   types-aiobotocore-codestar-connections
   types-aiobotocore-codestar-notifications
   types-aiobotocore-cognito-identity
@@ -138,6 +140,7 @@ packages=(
   types-aiobotocore-frauddetector
   types-aiobotocore-fsx
   types-aiobotocore-gamelift
+  # types-aiobotocore-gamesparks  Obsolete, will be removed soon
   types-aiobotocore-glacier
   types-aiobotocore-globalaccelerator
   types-aiobotocore-glue
@@ -148,7 +151,7 @@ packages=(
   types-aiobotocore-guardduty
   types-aiobotocore-health
   types-aiobotocore-healthlake
-  types-aiobotocore-honeycode
+  # types-aiobotocore-honeycode  Obsolete, will be removed soon
   types-aiobotocore-iam
   types-aiobotocore-identitystore
   types-aiobotocore-imagebuilder
@@ -159,7 +162,7 @@ packages=(
   types-aiobotocore-iot
   types-aiobotocore-iot-data
   types-aiobotocore-iot-jobs-data
-  types-aiobotocore-iot-roborunner
+  # types-aiobotocore-iot-roborunner  Obsolete, will be removed soon
   types-aiobotocore-iot1click-devices
   types-aiobotocore-iot1click-projects
   types-aiobotocore-iotanalytics
@@ -207,6 +210,7 @@ packages=(
   types-aiobotocore-lookoutvision
   types-aiobotocore-m2
   types-aiobotocore-machinelearning
+  # types-aiobotocore-macie  Obsolete, will be removed soon
   types-aiobotocore-macie2
   types-aiobotocore-managedblockchain
   types-aiobotocore-managedblockchain-query
@@ -231,7 +235,7 @@ packages=(
   types-aiobotocore-migrationhub-config
   types-aiobotocore-migrationhuborchestrator
   types-aiobotocore-migrationhubstrategy
-  types-aiobotocore-mobile
+  # types-aiobotocore-mobile  Obsolete, will be removed soon
   types-aiobotocore-mq
   types-aiobotocore-mturk
   types-aiobotocore-mwaa
@@ -359,21 +363,34 @@ packages=(
   types-aiobotocore-xray
 )
 
+version=$(curl -s https://pypi.org/pypi/types-aiobotocore/json | jq -r '.info.version')
+echo "All types-aiobotocore-* packages will be updated to ${version}"
+
 for package in "${packages[@]}"; do
-  echo "Updating ${package}"
+  echo "Updating ${package} ..."
 
-  url="https://pypi.io/packages/source/t/${package}/${package}-${version}.tar.gz"
+  url="https://pypi.io/packages/source/t/${package}/${package//-/_}-${version}.tar.gz"
   hash=$(nix-prefetch-url --type sha256 $url)
   sri_hash="$(nix hash to-sri --type sha256 $hash)"
+  package_short="${package#types-aiobotocore-}"
 
-  awk -i inplace -v package="$package" -v new_version="$version" -v new_sha256="$sri_hash" '
-    $1 == package {
-      $5 = "\"" new_version "\"";
-      $6 = "\"" new_sha256 "\";";
-    }
-    {print}
-  ' $source_file
+  awk -i inplace -v pkg="$package" -v pkg_short="$package_short" -v ver="$version" -v hash="$sri_hash" '
+  {
+      # If the line contains the package name
+      if ($0 ~ "^\\s*" pkg "\\s*=") {
+          print $0
+          inside_block = 1
+      } else if (inside_block && $0 ~ "buildTypesAiobotocorePackage") {
+          print "    buildTypesAiobotocorePackage \"" "" pkg_short "\" \"" ver "\""
+      } else if (inside_block && $0 ~ "sha256-") {
+          print "      \"" hash "\";"
+          inside_block = 0
+      } else {
+          # Preserve blank lines to honor nixfmt
+          print $0
+      }
+  }' ${source_file}
 
 done
 
-nixpkgs-fmt ${source_file}
+nixfmt ${source_file}
diff --git a/pkgs/development/python-modules/types-appdirs/default.nix b/pkgs/development/python-modules/types-appdirs/default.nix
index ce7bb9cd53df9..78c3cbee88823 100644
--- a/pkgs/development/python-modules/types-appdirs/default.nix
+++ b/pkgs/development/python-modules/types-appdirs/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -10,13 +11,13 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-gyaNpkWFNhv6KR+PUGogknYhKgSXvTfwUSqTmz1p/xQ=";
+    hash = "sha256-gyaNpkWFNhv6KR+PUGogknYhKgSXvTfwUSqTmz1p/xQ=";
   };
 
   meta = {
-    description = "This is a PEP 561 type stub package for the appdirs package. It can be used by type-checking tools like mypy, pyright, pytype, PyCharm, etc. to check code that uses appdirs. ";
+    description = "This is a PEP 561 type stub package for the appdirs package. It can be used by type-checking tools like mypy, pyright, pytype, PyCharm, etc. to check code that uses appdirs.";
     homepage = "https://pypi.org/project/types-appdirs";
     license = lib.licenses.asl20;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/types-awscrt/default.nix b/pkgs/development/python-modules/types-awscrt/default.nix
index a9f1eb3d4614c..bbf905dcb82c8 100644
--- a/pkgs/development/python-modules/types-awscrt/default.nix
+++ b/pkgs/development/python-modules/types-awscrt/default.nix
@@ -2,24 +2,24 @@
   lib,
   buildPythonPackage,
   fetchPypi,
-  poetry-core,
   pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "types-awscrt";
-  version = "0.20.9";
+  version = "0.21.5";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     pname = "types_awscrt";
     inherit version;
-    hash = "sha256-ZImKL0okaPZiM8uMKcX2bekHz4C6HvW7E1mu8vgbtSE=";
+    hash = "sha256-n39H3mh5nLK8ueSG9I13ufWJYrkvukPLiGDacLPFfRs=";
   };
 
-  build-system = [ poetry-core ];
+  build-system = [ setuptools ];
 
   pythonImportsCheck = [ "awscrt-stubs" ];
 
diff --git a/pkgs/development/python-modules/types-beautifulsoup4/default.nix b/pkgs/development/python-modules/types-beautifulsoup4/default.nix
index 687dadc3eb65e..6bdcf999bed7b 100644
--- a/pkgs/development/python-modules/types-beautifulsoup4/default.nix
+++ b/pkgs/development/python-modules/types-beautifulsoup4/default.nix
@@ -1,29 +1,29 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, types-html5lib
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  types-html5lib,
 }:
 
 buildPythonPackage rec {
   pname = "types-beautifulsoup4";
-  version = "4.12.0.20240229";
-  format = "setuptools";
+  version = "4.12.0.20240907";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-435M+hGwOwF3VzLlbSwBDLJO4Qd4Yne65rwPo+MFtoY=";
+    hash = "sha256-jQI7hlMJIgcEF6HUxNkWeKsP8kObOyss/6O2KLSeurE=";
   };
 
-  propagatedBuildInputs = [
-    types-html5lib
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ types-html5lib ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "bs4-stubs"
-  ];
+  pythonImportsCheck = [ "bs4-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for beautifulsoup4";
diff --git a/pkgs/development/python-modules/types-click/default.nix b/pkgs/development/python-modules/types-click/default.nix
index 78c99fe42808a..29f2da7b2303e 100644
--- a/pkgs/development/python-modules/types-click/default.nix
+++ b/pkgs/development/python-modules/types-click/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 let
diff --git a/pkgs/development/python-modules/types-colorama/default.nix b/pkgs/development/python-modules/types-colorama/default.nix
index a3e5cfba04bdd..c14b2e4ded7a0 100644
--- a/pkgs/development/python-modules/types-colorama/default.nix
+++ b/pkgs/development/python-modules/types-colorama/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-oo5/mNF9KxT7lWXTI4jkGfQQj1V6fZOaZjGZabK5nHo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # Module has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/types-dateutil/default.nix b/pkgs/development/python-modules/types-dateutil/default.nix
index c02934519ca8b..46f98100ac75a 100644
--- a/pkgs/development/python-modules/types-dateutil/default.nix
+++ b/pkgs/development/python-modules/types-dateutil/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -15,13 +16,9 @@ buildPythonPackage rec {
     hash = "sha256-XS8uJAuGkF5AlE3Xh9ttqSY/Deq+8Qdt2u15c1HsAgI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "dateutil-stubs"
-  ];
+  pythonImportsCheck = [ "dateutil-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for python-dateutil";
diff --git a/pkgs/development/python-modules/types-decorator/default.nix b/pkgs/development/python-modules/types-decorator/default.nix
index 3cc020d8a9f2a..88874e3be5656 100644
--- a/pkgs/development/python-modules/types-decorator/default.nix
+++ b/pkgs/development/python-modules/types-decorator/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -14,16 +15,12 @@ buildPythonPackage rec {
     hash = "sha256-UuMWsDeDiGqKKr3CKPcHFoC6ZYlFRc0ghevjz4hoSg4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # Modules doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "decorator-stubs"
-  ];
+  pythonImportsCheck = [ "decorator-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for decorator";
diff --git a/pkgs/development/python-modules/types-deprecated/default.nix b/pkgs/development/python-modules/types-deprecated/default.nix
index 374ed108b7a27..13b371b4e3fef 100644
--- a/pkgs/development/python-modules/types-deprecated/default.nix
+++ b/pkgs/development/python-modules/types-deprecated/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -15,16 +16,12 @@ buildPythonPackage rec {
     hash = "sha256-BoDomYmoFCcH3oED8V0YJEWlM8EEf9m36MVFkQHpuQo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # Modules has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "deprecated-stubs"
-  ];
+  pythonImportsCheck = [ "deprecated-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for Deprecated";
diff --git a/pkgs/development/python-modules/types-docopt/default.nix b/pkgs/development/python-modules/types-docopt/default.nix
index 7c1128efb840c..284fa0ea0fcce 100644
--- a/pkgs/development/python-modules/types-docopt/default.nix
+++ b/pkgs/development/python-modules/types-docopt/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "docopt-stubs"
-  ];
+  pythonImportsCheck = [ "docopt-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for docopt";
diff --git a/pkgs/development/python-modules/types-enum34/default.nix b/pkgs/development/python-modules/types-enum34/default.nix
index d82c84c5c5da0..ace209f28c86a 100644
--- a/pkgs/development/python-modules/types-enum34/default.nix
+++ b/pkgs/development/python-modules/types-enum34/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -13,9 +14,7 @@ buildPythonPackage rec {
     sha256 = "0421lr89vv3fpg77kkj5nmzd7z3nmhw4vh8ibsjp6vfh86b7d73g";
   };
 
-  pythonImportsCheck = [
-    "enum-python2-stubs"
-  ];
+  pythonImportsCheck = [ "enum-python2-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for enum34";
diff --git a/pkgs/development/python-modules/types-freezegun/default.nix b/pkgs/development/python-modules/types-freezegun/default.nix
index ebca11ad47761..26456f53f6d74 100644
--- a/pkgs/development/python-modules/types-freezegun/default.nix
+++ b/pkgs/development/python-modules/types-freezegun/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
   # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "freezegun-stubs"
-  ];
+  pythonImportsCheck = [ "freezegun-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for freezegun";
diff --git a/pkgs/development/python-modules/types-futures/default.nix b/pkgs/development/python-modules/types-futures/default.nix
index 9eb4b956d3ebb..7478d77dc8a79 100644
--- a/pkgs/development/python-modules/types-futures/default.nix
+++ b/pkgs/development/python-modules/types-futures/default.nix
@@ -1,4 +1,8 @@
-{ buildPythonPackage, fetchPypi, lib }:
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+}:
 
 buildPythonPackage rec {
   pname = "types-futures";
diff --git a/pkgs/development/python-modules/types-html5lib/default.nix b/pkgs/development/python-modules/types-html5lib/default.nix
index 996f8b4e5c3d8..2bd3c889d8f7d 100644
--- a/pkgs/development/python-modules/types-html5lib/default.nix
+++ b/pkgs/development/python-modules/types-html5lib/default.nix
@@ -1,29 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "types-html5lib";
-  version = "1.1.11.20240228";
+  version = "1.1.11.20240806";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-InNrcpnmBexLpTnUhpHpBf0MYcPqYQrMWZIiMtyEzt4=";
+    hash = "sha256-gGDcmLr2PWeWp2W7vICf/596OD9uOprdUm+BTAhlRe8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "html5lib-stubs"
-  ];
+  pythonImportsCheck = [ "html5lib-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for html5lib";
diff --git a/pkgs/development/python-modules/types-ipaddress/default.nix b/pkgs/development/python-modules/types-ipaddress/default.nix
index 3bdffafb34e3e..216195c6e1ce7 100644
--- a/pkgs/development/python-modules/types-ipaddress/default.nix
+++ b/pkgs/development/python-modules/types-ipaddress/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -13,9 +14,7 @@ buildPythonPackage rec {
     sha256 = "0h9q9pjvw1ap5k70ygp750d096jkzymxlhx87yh0pr9mb6zg6gd0";
   };
 
-  pythonImportsCheck = [
-    "ipaddress-python2-stubs"
-  ];
+  pythonImportsCheck = [ "ipaddress-python2-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for ipaddress";
diff --git a/pkgs/development/python-modules/types-lxml/default.nix b/pkgs/development/python-modules/types-lxml/default.nix
index 21a8dc8821613..85b8b5c331e9d 100644
--- a/pkgs/development/python-modules/types-lxml/default.nix
+++ b/pkgs/development/python-modules/types-lxml/default.nix
@@ -1,20 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, lxml
-, pyright
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
-, typeguard
-, types-beautifulsoup4
-, typing-extensions
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  cssselect,
+  fetchFromGitHub,
+  html5lib,
+  lxml,
+  pdm-backend,
+  pyright,
+  pytestCheckHook,
+  pythonOlder,
+  typeguard,
+  types-beautifulsoup4,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "types-lxml";
-  version = "2024.02.09";
+  version = "2024.09.16";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -23,29 +26,27 @@ buildPythonPackage rec {
     owner = "abelcheung";
     repo = "types-lxml";
     rev = "refs/tags/${version}";
-    hash = "sha256-vmRbzfwlGGxd64KX8j4B3O9c7kg7hXSsCEYq3WAFdmk=";
+    hash = "sha256-LQqs9wg6kgubY4SygTNQt5YTtF3LsFj7+RkAlcp4SSo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    setuptools-scm
-  ];
+  build-system = [ pdm-backend ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    cssselect
     types-beautifulsoup4
     typing-extensions
   ];
 
   nativeCheckInputs = [
+    beautifulsoup4
+    html5lib
     lxml
     pyright
     pytestCheckHook
     typeguard
   ];
 
-  pythonImportsCheck = [
-    "lxml-stubs"
-  ];
+  pythonImportsCheck = [ "lxml-stubs" ];
 
   disabledTests = [
     # AttributeError: 'bytes' object has no attribute 'find_class'
diff --git a/pkgs/development/python-modules/types-markdown/default.nix b/pkgs/development/python-modules/types-markdown/default.nix
index 3ea38cde3d83e..38307a848fc2a 100644
--- a/pkgs/development/python-modules/types-markdown/default.nix
+++ b/pkgs/development/python-modules/types-markdown/default.nix
@@ -1,27 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "types-markdown";
-  version = "3.6.0.20240316";
+  version = "3.7.0.20240822";
   pyproject = true;
 
   src = fetchPypi {
     pname = "types-Markdown";
     inherit version;
-    hash = "sha256-3p+4SGC1W2R7FwyldolfzKYbk0puzcZcMZMsZ5W0QLg=";
+    hash = "sha256-GDVXyfT4Zb3v2PX5ajgUXDGBknHN4RHTVVfDvSBp540=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "markdown-stubs"
-  ];
+  pythonImportsCheck = [ "markdown-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for Markdown";
diff --git a/pkgs/development/python-modules/types-mock/default.nix b/pkgs/development/python-modules/types-mock/default.nix
index 11d81aa0e8330..37b313bc59e95 100644
--- a/pkgs/development/python-modules/types-mock/default.nix
+++ b/pkgs/development/python-modules/types-mock/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-UoGmRdcugn1wBD48wUT+M7HAA9sIT3idwgOqkOgSpaQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # Module has no tests
   doCheck = false;
@@ -25,6 +24,6 @@ buildPythonPackage rec {
     description = "Type stub package for the mock package";
     homepage = "https://pypi.org/project/types-mock";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/types-pillow/default.nix b/pkgs/development/python-modules/types-pillow/default.nix
index adb92251b8f10..c47eaf243b4b7 100644
--- a/pkgs/development/python-modules/types-pillow/default.nix
+++ b/pkgs/development/python-modules/types-pillow/default.nix
@@ -1,25 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
   pname = "types-pillow";
-  version = "10.2.0.20240331";
+  version = "10.2.0.20240520";
   format = "setuptools";
 
   src = fetchPypi {
     inherit version;
     pname = "types-Pillow";
-    hash = "sha256-xgTjmutwcZ5GPTWRV6Iji/wOgb+cZYN1cD97mM/WB9o=";
+    hash = "sha256-EwuXkZVGX6HhZ22OgcnHwwMZ6OlbEvrpRejw1SUhMQc=";
   };
 
   # Modules doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "PIL-stubs"
-  ];
+  pythonImportsCheck = [ "PIL-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for Pillow";
diff --git a/pkgs/development/python-modules/types-protobuf/default.nix b/pkgs/development/python-modules/types-protobuf/default.nix
index c09cb206cf040..74629872dce73 100644
--- a/pkgs/development/python-modules/types-protobuf/default.nix
+++ b/pkgs/development/python-modules/types-protobuf/default.nix
@@ -1,29 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, types-futures
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  types-futures,
 }:
 
 buildPythonPackage rec {
   pname = "types-protobuf";
-  version = "4.24.0.20240311";
+  version = "5.27.0.20240626";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-yAQm+fubIa7lFGkelqsypc1pSoLirAeWSzUsPn4Bgrw=";
+    hash = "sha256-aDuhQEO63meF4/k3p0mPJDs3iBqRrI2BuSAuz4sZHpw=";
   };
 
-  propagatedBuildInputs = [
-    types-futures
-  ];
+  propagatedBuildInputs = [ types-futures ];
 
   # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "google-stubs"
-  ];
+  pythonImportsCheck = [ "google-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for protobuf";
diff --git a/pkgs/development/python-modules/types-psutil/default.nix b/pkgs/development/python-modules/types-psutil/default.nix
index dce0292b0ad96..e850eb837c5b0 100644
--- a/pkgs/development/python-modules/types-psutil/default.nix
+++ b/pkgs/development/python-modules/types-psutil/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
   pname = "types-psutil";
-  version = "5.9.5.20240423";
+  version = "5.9.5.20240516";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-G5ds+GMIMWxawizsaIAVsEJzyE+OaRw9+wwSMY8ypvM=";
+    hash = "sha256-uylvWfxWRYiR0P6xmUcX5UihvPiZNqKHffh5K4IrRpY=";
   };
 
   # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "psutil-stubs"
-  ];
+  pythonImportsCheck = [ "psutil-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for psutil";
     homepage = "https://github.com/python/typeshed";
     license = licenses.asl20;
-    maintainers = with maintainers; [ anselmschueler ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/types-psycopg2/default.nix b/pkgs/development/python-modules/types-psycopg2/default.nix
index e9901ef6678d5..2ba7ec577d6d4 100644
--- a/pkgs/development/python-modules/types-psycopg2/default.nix
+++ b/pkgs/development/python-modules/types-psycopg2/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -14,13 +15,9 @@ buildPythonPackage rec {
     hash = "sha256-Bdslb0pFn7IaQmuOf8oGVsNTkQX/Agjq9r2vQGo4cIc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "psycopg2-stubs"
-  ];
+  pythonImportsCheck = [ "psycopg2-stubs" ];
 
   doCheck = false;
 
@@ -28,6 +25,6 @@ buildPythonPackage rec {
     description = "Typing stubs for psycopg2";
     homepage = "https://github.com/python/typeshed";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/types-pyopenssl/default.nix b/pkgs/development/python-modules/types-pyopenssl/default.nix
index d7cf53e4ff68c..60457be769c00 100644
--- a/pkgs/development/python-modules/types-pyopenssl/default.nix
+++ b/pkgs/development/python-modules/types-pyopenssl/default.nix
@@ -1,30 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cryptography
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cryptography,
 }:
 
 buildPythonPackage rec {
   pname = "types-pyopenssl";
-  version = "24.0.0.20240311";
+  version = "24.1.0.20240425";
   format = "setuptools";
 
   src = fetchPypi {
     pname = "types-pyOpenSSL";
     inherit version;
-    hash = "sha256-e8oAz8Tn75xdJmPGocBow1eY5ZZwWVQ59ilue6PVgIM=";
+    hash = "sha256-Cn6CYmwZg9yNxZKSvyBlSlHDw4gby7mzN8HabjLwIE4=";
   };
 
-  propagatedBuildInputs = [
-    cryptography
-  ];
+  propagatedBuildInputs = [ cryptography ];
 
   # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "OpenSSL-stubs"
-  ];
+  pythonImportsCheck = [ "OpenSSL-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for pyopenssl";
diff --git a/pkgs/development/python-modules/types-python-dateutil/default.nix b/pkgs/development/python-modules/types-python-dateutil/default.nix
index 04f146e40e54d..a84b7e22b8109 100644
--- a/pkgs/development/python-modules/types-python-dateutil/default.nix
+++ b/pkgs/development/python-modules/types-python-dateutil/default.nix
@@ -1,29 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "types-python-dateutil";
-  version = "2.8.19.20240106";
+  version = "2.9.0.20240316";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-H42yIcO5jmygLqg6WDcbIsN09Crlu98YbbnJp2WBRZ8=";
+    hash = "sha256-XS8uJAuGkF5AlE3Xh9ttqSY/Deq+8Qdt2u15c1HsAgI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # Modules doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dateutil-stubs"
-  ];
+  pythonImportsCheck = [ "dateutil-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for python-dateutil";
diff --git a/pkgs/development/python-modules/types-pytz/default.nix b/pkgs/development/python-modules/types-pytz/default.nix
index bf1b49ccc918f..7e6986f2a95ac 100644
--- a/pkgs/development/python-modules/types-pytz/default.nix
+++ b/pkgs/development/python-modules/types-pytz/default.nix
@@ -1,29 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "types-pytz";
-  version = "2024.1.0.20240203";
+  version = "2024.2.0.20240913";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-yTdR7iDfxuBUoBSPj1InuaALeckKTTyfRkcRpzF5yJ4=";
+    hash = "sha256-RDO130pvxYe77UFxbYalul2DK0N45Qb0DTS8nIHfLCQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   # Modules doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pytz-stubs"
-  ];
+  pythonImportsCheck = [ "pytz-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for pytz";
diff --git a/pkgs/development/python-modules/types-pyyaml/default.nix b/pkgs/development/python-modules/types-pyyaml/default.nix
index c8735dbfe6de4..99006754e304d 100644
--- a/pkgs/development/python-modules/types-pyyaml/default.nix
+++ b/pkgs/development/python-modules/types-pyyaml/default.nix
@@ -1,25 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
   pname = "types-pyyaml";
-  version = "6.0.12.12";
+  version = "6.0.12.20240311";
   format = "setuptools";
 
   src = fetchPypi {
     pname = "types-PyYAML";
     inherit version;
-    hash = "sha256-M0Nz05L94P35WvXD8WYYhfoQxSFnsUWT64ViieGFUGI=";
+    hash = "sha256-qeDw+I3INXObDBylHukNBMoqiXpxr3nemuxfOMsKU0I=";
   };
 
   # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "yaml-stubs"
-  ];
+  pythonImportsCheck = [ "yaml-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for PyYAML";
diff --git a/pkgs/development/python-modules/types-requests/default.nix b/pkgs/development/python-modules/types-requests/default.nix
index 6cabdc3b89a5e..ed5295ea0d976 100644
--- a/pkgs/development/python-modules/types-requests/default.nix
+++ b/pkgs/development/python-modules/types-requests/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "types-requests";
-  version = "2.31.0.20240406";
+  version = "2.32.0.20240914";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-RCjfM8VQOUXHSz9C6CsYHobse3JGIEGaKWbi3mBM4aE=";
+    hash = "sha256-KFDheNs5Gdm/gJ5DTu9luknQ5+M6yS1Yj0peKV//1AU=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/types-retry/default.nix b/pkgs/development/python-modules/types-retry/default.nix
index ecef01714f9d3..ba1bb5b124553 100644
--- a/pkgs/development/python-modules/types-retry/default.nix
+++ b/pkgs/development/python-modules/types-retry/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
   # Modules doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "retry-stubs"
-  ];
+  pythonImportsCheck = [ "retry-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for retry";
diff --git a/pkgs/development/python-modules/types-s3transfer/default.nix b/pkgs/development/python-modules/types-s3transfer/default.nix
index eb90a554174e9..1db9bc7323bd6 100644
--- a/pkgs/development/python-modules/types-s3transfer/default.nix
+++ b/pkgs/development/python-modules/types-s3transfer/default.nix
@@ -1,30 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
   pname = "types-s3transfer";
-  version = "0.10.0";
+  version = "0.10.1";
   pyproject = true;
 
   src = fetchPypi {
     pname = "types_s3transfer";
     inherit version;
-    hash = "sha256-NeSZjCXff4mFrWne3I5IYOivO0O3YV6UDVPADUE73Gk=";
+    hash = "sha256-AhVMzkZSgoetdq0aAVOEDgSSI5oIh+iDNGbsz4S5jaA=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "s3transfer-stubs"
-  ];
+  pythonImportsCheck = [ "s3transfer-stubs" ];
 
   meta = with lib; {
     description = "Type annotations and code completion for s3transfer";
diff --git a/pkgs/development/python-modules/types-setuptools/default.nix b/pkgs/development/python-modules/types-setuptools/default.nix
index a2a0a9f125bde..0c5bcbbb5c482 100644
--- a/pkgs/development/python-modules/types-setuptools/default.nix
+++ b/pkgs/development/python-modules/types-setuptools/default.nix
@@ -1,29 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "types-setuptools";
-  version = "69.2.0.20240317";
+  version = "70.0.0.20240524";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-tgfExIhC7z7kncDH/pwbrXVwCwceEBi7TX46xJLUcEg=";
+    hash = "sha256-4x/ue50V71OYBSZXmsYImzrlGgBaKBrPlxeOkKxxr/Y=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "setuptools-stubs"
-  ];
+  pythonImportsCheck = [ "setuptools-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for setuptools";
diff --git a/pkgs/development/python-modules/types-tabulate/default.nix b/pkgs/development/python-modules/types-tabulate/default.nix
index fe5787f805f26..570581e05ac04 100644
--- a/pkgs/development/python-modules/types-tabulate/default.nix
+++ b/pkgs/development/python-modules/types-tabulate/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -14,16 +15,12 @@ buildPythonPackage rec {
     hash = "sha256-ybbbEN1/z1W9FxLdNTf4bdznKgj9Yrsa9DOMcJbOlH4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "tabulate-stubs"
-  ];
+  pythonImportsCheck = [ "tabulate-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for tabulate";
diff --git a/pkgs/development/python-modules/types-toml/default.nix b/pkgs/development/python-modules/types-toml/default.nix
index 140664989f3b2..040177b5e68fd 100644
--- a/pkgs/development/python-modules/types-toml/default.nix
+++ b/pkgs/development/python-modules/types-toml/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
   pname = "types-toml";
-  version = "0.10.8.7";
+  version = "0.10.8.20240310";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-WLB4HGgeZx/wtcAxkwmRBon0q0DookMeIF1wyUu277E=";
+    hash = "sha256-PUFQEwKXJDamuLI5yFCyZollfiUoG0j/DsBjRbiDAzE=";
   };
 
   # Module doesn't have tests
diff --git a/pkgs/development/python-modules/types-tqdm/default.nix b/pkgs/development/python-modules/types-tqdm/default.nix
index 339a83f7b17ca..ff3f5c189a0de 100644
--- a/pkgs/development/python-modules/types-tqdm/default.nix
+++ b/pkgs/development/python-modules/types-tqdm/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-Ftzp71IuqNQOT1uNhN2KEWbu/BPO7np+FYvw8aFCGjE=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   # This package does not have tests.
   doCheck = false;
diff --git a/pkgs/development/python-modules/types-typed-ast/default.nix b/pkgs/development/python-modules/types-typed-ast/default.nix
index 32671d5846416..13713c669519c 100644
--- a/pkgs/development/python-modules/types-typed-ast/default.nix
+++ b/pkgs/development/python-modules/types-typed-ast/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
   # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "typed_ast-stubs"
-  ];
+  pythonImportsCheck = [ "typed_ast-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for typed-ast";
diff --git a/pkgs/development/python-modules/types-ujson/default.nix b/pkgs/development/python-modules/types-ujson/default.nix
index eb46df9c93378..cbd3c4c7c08bb 100644
--- a/pkgs/development/python-modules/types-ujson/default.nix
+++ b/pkgs/development/python-modules/types-ujson/default.nix
@@ -1,23 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "types-ujson";
-  version = "5.9.0.0";
-  format = "setuptools";
+  version = "5.10.0.20240515";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-fnBCRU3HzX8xsJxCDXyvNrk9ML30uNuTeRvQVhcT0Bc=";
+    hash = "sha256-zq5xJ/Da/kr13Q7PmO4T6ddZUe+WO1xam36pLg1x8Nc=";
   };
 
+  build-system = [ setuptools ];
+
+  # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ujson-stubs"
-  ];
+  pythonImportsCheck = [ "ujson-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for ujson";
diff --git a/pkgs/development/python-modules/types-urllib3/default.nix b/pkgs/development/python-modules/types-urllib3/default.nix
index d02174d7727fe..e3c91f48197fd 100644
--- a/pkgs/development/python-modules/types-urllib3/default.nix
+++ b/pkgs/development/python-modules/types-urllib3/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
   # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "urllib3-stubs"
-  ];
+  pythonImportsCheck = [ "urllib3-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for urllib3";
diff --git a/pkgs/development/python-modules/typesentry/default.nix b/pkgs/development/python-modules/typesentry/default.nix
index f38947c04677b..adb56fd0ad826 100644
--- a/pkgs/development/python-modules/typesentry/default.nix
+++ b/pkgs/development/python-modules/typesentry/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, colorama
-, pytest
-, pytest-cov
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  colorama,
+  pytestCheckHook,
 }:
 
 buildPythonPackage {
@@ -20,10 +20,7 @@ buildPythonPackage {
   };
 
   propagatedBuildInputs = [ colorama ];
-  nativeCheckInputs = [ pytest pytest-cov ];
-  checkPhase = ''
-    pytest
-  '';
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Python 2.7 & 3.5+ runtime type-checker";
diff --git a/pkgs/development/python-modules/typeshed-client/default.nix b/pkgs/development/python-modules/typeshed-client/default.nix
index 196c696ff542b..3ed7693ce8874 100644
--- a/pkgs/development/python-modules/typeshed-client/default.nix
+++ b/pkgs/development/python-modules/typeshed-client/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "typeshed-client";
-  version = "2.5.1";
+  version = "2.7.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "JelleZijlstra";
     repo = "typeshed_client";
     rev = "refs/tags/v${version}";
-    hash = "sha256-lITreXYn/ZOc1fF2Sqcn8UDrZAjWYfjFSEaAxqTHb4s=";
+    hash = "sha256-dEfKZ930Jxa84HUqKpsL2JWQLeeWx6gIMtFHTbiw3Es=";
   };
 
   build-system = [ setuptools ];
@@ -41,6 +41,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/JelleZijlstra/typeshed_client";
     changelog = "https://github.com/JelleZijlstra/typeshed_client/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/typesystem/default.nix b/pkgs/development/python-modules/typesystem/default.nix
index 96f351ccaf1f6..41a4b5147fa9a 100644
--- a/pkgs/development/python-modules/typesystem/default.nix
+++ b/pkgs/development/python-modules/typesystem/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, jinja2
-, pytestCheckHook
-, pythonOlder
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jinja2,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -26,18 +27,14 @@ buildPythonPackage rec {
     pyyaml
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "typesystem"
-  ];
+  pythonImportsCheck = [ "typesystem" ];
 
   meta = with lib; {
-    description = "A type system library for Python";
+    description = "Type system library for Python";
     homepage = "https://github.com/encode/typesystem";
     license = licenses.bsd3;
-    maintainers =  with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/typical/default.nix b/pkgs/development/python-modules/typical/default.nix
index 8201e4ba8104d..357bb8d1094a5 100644
--- a/pkgs/development/python-modules/typical/default.nix
+++ b/pkgs/development/python-modules/typical/default.nix
@@ -12,7 +12,6 @@
   pydantic,
   pytestCheckHook,
   pythonOlder,
-  pythonRelaxDepsHook,
   sqlalchemy,
   ujson,
 }:
@@ -35,7 +34,6 @@ buildPythonPackage rec {
 
   build-system = [ poetry-core ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     fastjsonschema
diff --git a/pkgs/development/python-modules/typing-extensions/default.nix b/pkgs/development/python-modules/typing-extensions/default.nix
index eb1c9c58d690f..198326fe35c2d 100644
--- a/pkgs/development/python-modules/typing-extensions/default.nix
+++ b/pkgs/development/python-modules/typing-extensions/default.nix
@@ -1,13 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit-core,
+  pythonOlder,
+
+  # reverse dependencies
+  mashumaro,
+  pydantic,
 }:
 
 buildPythonPackage rec {
   pname = "typing-extensions";
-  version = "4.10.0";
+  version = "4.12.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -15,20 +20,20 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "typing_extensions";
     inherit version;
-    hash = "sha256-sKvXyJ6PuW+Y2xjYYQb/HZCraSAE63Rs9u2iaC+Rs8s=";
+    hash = "sha256-Gn6tVcflWd1N7ohW46iLQSJav+HOjfV7fBORX+Eh/7g=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   # Tests are not part of PyPI releases. GitHub source can't be used
   # as it ends with an infinite recursion
   doCheck = false;
 
-  pythonImportsCheck = [
-    "typing_extensions"
-  ];
+  pythonImportsCheck = [ "typing_extensions" ];
+
+  passthru.tests = {
+    inherit mashumaro pydantic;
+  };
 
   meta = with lib; {
     description = "Backported and Experimental Type Hints for Python";
diff --git a/pkgs/development/python-modules/typing-inspect/default.nix b/pkgs/development/python-modules/typing-inspect/default.nix
index f88a718c736c3..ce03e47d7614e 100644
--- a/pkgs/development/python-modules/typing-inspect/default.nix
+++ b/pkgs/development/python-modules/typing-inspect/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, typing-extensions
-, mypy-extensions
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  typing-extensions,
+  mypy-extensions,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -22,18 +23,14 @@ buildPythonPackage rec {
     mypy-extensions
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # https://github.com/ilevkivskyi/typing_inspect/issues/84
     "test_typed_dict_typing_extension"
   ];
 
-  pythonImportsCheck = [
-    "typing_inspect"
-  ];
+  pythonImportsCheck = [ "typing_inspect" ];
 
   meta = with lib; {
     description = "Runtime inspection utilities for Python typing module";
diff --git a/pkgs/development/python-modules/typing-validation/default.nix b/pkgs/development/python-modules/typing-validation/default.nix
index 975119b3be1bd..01f9b43b4ba5e 100644
--- a/pkgs/development/python-modules/typing-validation/default.nix
+++ b/pkgs/development/python-modules/typing-validation/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-, pytestCheckHook
+  pytestCheckHook,
 
-, pythonOlder
+  pythonOlder,
 
-, setuptools
-, setuptools-scm
-, wheel
+  setuptools,
+  setuptools-scm,
+  wheel,
 
-, numpy
+  numpy,
 
-, typing-extensions
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -35,21 +36,17 @@ buildPythonPackage rec {
     wheel
   ];
 
-  dependencies = [
-    typing-extensions
-  ];
+  dependencies = [ typing-extensions ];
 
   nativeCheckInputs = [
     pytestCheckHook
     numpy
   ];
 
-  pythonImportsCheck = [
-    "typing_validation"
-  ];
+  pythonImportsCheck = [ "typing_validation" ];
 
   meta = with lib; {
-    description = "A simple library for runtime type-checking";
+    description = "Simple library for runtime type-checking";
     homepage = "https://github.com/hashberg-io/typing-validation";
     changelog = "https://github.com/hashberg-io/typing-validation/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/typish/default.nix b/pkgs/development/python-modules/typish/default.nix
index c05518c257f0e..8e9677c0d3bce 100644
--- a/pkgs/development/python-modules/typish/default.nix
+++ b/pkgs/development/python-modules/typish/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -37,9 +38,7 @@ buildPythonPackage rec {
     "test_get_origin"
   ];
 
-  pythonImportsCheck = [
-    "typish"
-  ];
+  pythonImportsCheck = [ "typish" ];
 
   meta = with lib; {
     description = "Python module for checking types of objects";
diff --git a/pkgs/development/python-modules/typogrify/default.nix b/pkgs/development/python-modules/typogrify/default.nix
index 81425b22f181e..a2a17791eaa93 100644
--- a/pkgs/development/python-modules/typogrify/default.nix
+++ b/pkgs/development/python-modules/typogrify/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, smartypants
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  smartypants,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
     sha256 = "8be4668cda434163ce229d87ca273a11922cb1614cb359970b7dc96eed13cb38";
   };
 
-  propagatedBuildInputs = [
-    smartypants
-  ];
+  propagatedBuildInputs = [ smartypants ];
 
   # Wants to set up Django
   doCheck = false;
diff --git a/pkgs/development/python-modules/tzdata/default.nix b/pkgs/development/python-modules/tzdata/default.nix
index ac25b071a31bb..198df9570b688 100644
--- a/pkgs/development/python-modules/tzdata/default.nix
+++ b/pkgs/development/python-modules/tzdata/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, importlib-resources
-, pytest-subtests
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  importlib-resources,
+  pytest-subtests,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,25 +19,19 @@ buildPythonPackage rec {
     hash = "sha256-JnQSD42JGQl1HDirzf04asCloRJ5VPvDMq9rXOrgfv0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pytestCheckHook
     pytest-subtests
-  ] ++ lib.optionals (pythonOlder "3.7") [
-    importlib-resources
-  ];
+  ] ++ lib.optionals (pythonOlder "3.7") [ importlib-resources ];
 
-  pythonImportsCheck = [
-    "tzdata"
-  ];
+  pythonImportsCheck = [ "tzdata" ];
 
   meta = with lib; {
     description = "Provider of IANA time zone data";
     homepage = "https://github.com/python/tzdata";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/tzlocal/default.nix b/pkgs/development/python-modules/tzlocal/default.nix
index 4f74b552b0c4d..a4e6ba12061c0 100644
--- a/pkgs/development/python-modules/tzlocal/default.nix
+++ b/pkgs/development/python-modules/tzlocal/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools
-, pytest-mock
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  pytest-mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-jTmSBVePGpNCgWQJzB5GqT69V1XjnqLYUzS+qRG/Dm4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pytest-mock
@@ -34,7 +33,7 @@ buildPythonPackage rec {
     "test_conflicting"
     "test_noconflict"
     "test_symlink_localtime"
-  ] ++ lib.optional stdenv.isDarwin "test_assert_tz_offset";
+  ] ++ lib.optional stdenv.hostPlatform.isDarwin "test_assert_tz_offset";
 
   pythonImportsCheck = [ "tzlocal" ];
 
diff --git a/pkgs/development/python-modules/u-msgpack-python/default.nix b/pkgs/development/python-modules/u-msgpack-python/default.nix
index 1b79d265ff861..3e1935cfd1ddc 100644
--- a/pkgs/development/python-modules/u-msgpack-python/default.nix
+++ b/pkgs/development/python-modules/u-msgpack-python/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
-, glibcLocales
-, unittestCheckHook
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+  glibcLocales,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -15,14 +16,14 @@ buildPythonPackage rec {
     hash = "sha256-uAGoPW7XXm30HkRRi08qnCIdwtpLzVOA46D+2lILxho=";
   };
 
-  env.LC_ALL="en_US.UTF-8";
+  env.LC_ALL = "en_US.UTF-8";
 
   buildInputs = [ glibcLocales ];
 
   nativeCheckInputs = [ unittestCheckHook ];
 
   meta = {
-    description = "A portable, lightweight MessagePack serializer and deserializer written in pure Python";
+    description = "Portable, lightweight MessagePack serializer and deserializer written in pure Python";
     homepage = "https://github.com/vsergeev/u-msgpack-python";
     changelog = "https://github.com/vsergeev/u-msgpack-python/blob/v${version}/CHANGELOG.md";
     license = lib.licenses.mit;
diff --git a/pkgs/development/python-modules/ua-parser/default.nix b/pkgs/development/python-modules/ua-parser/default.nix
index ba0f75ce6f356..fa0dfffdf6b0e 100644
--- a/pkgs/development/python-modules/ua-parser/default.nix
+++ b/pkgs/development/python-modules/ua-parser/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyyaml
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyyaml,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,17 +20,11 @@ buildPythonPackage rec {
     hash = "sha256-GiuGPnyYL0HQ/J2OpDTD1/panZCuzKtD3mKW5op5lXA=";
   };
 
-  patches = [
-    ./dont-fetch-submodule.patch
-  ];
+  patches = [ ./dont-fetch-submodule.patch ];
 
-  nativeBuildInputs = [
-    pyyaml
-  ];
+  nativeBuildInputs = [ pyyaml ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     # import from $out
@@ -39,7 +34,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "ua_parser" ];
 
   meta = with lib; {
-    description = "A python implementation of the UA Parser";
+    description = "Python implementation of the UA Parser";
     homepage = "https://github.com/ua-parser/uap-python";
     license = licenses.asl20;
     platforms = platforms.unix;
diff --git a/pkgs/development/python-modules/uamqp/default.nix b/pkgs/development/python-modules/uamqp/default.nix
index 2881c8ef0d6b2..89063357a5650 100644
--- a/pkgs/development/python-modules/uamqp/default.nix
+++ b/pkgs/development/python-modules/uamqp/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, cython_0
-, certifi
-, CFNetwork
-, cmake
-, CoreFoundation
-, openssl
-, Security
-, pytestCheckHook
-, pytest-asyncio
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  cython_0,
+  certifi,
+  CFNetwork,
+  cmake,
+  CoreFoundation,
+  openssl,
+  Security,
+  pytestCheckHook,
+  pytest-asyncio,
 }:
 
 buildPythonPackage rec {
@@ -26,31 +27,33 @@ buildPythonPackage rec {
     hash = "sha256-L4E7nnsVZ/VrOM0t4KtztU9ALmtGfi1vDzUi0ogtZOc=";
   };
 
-  patches = lib.optionals (stdenv.isDarwin && stdenv.isx86_64) [
-    ./darwin-azure-c-shared-utility-corefoundation.patch
-  ] ++ [
-    (fetchpatch {
-      name = "CVE-2024-25110.patch";
-      url = "https://github.com/Azure/azure-uamqp-c/commit/30865c9ccedaa32ddb036e87a8ebb52c3f18f695.patch";
-      stripLen = 1;
-      extraPrefix = "src/vendor/azure-uamqp-c/";
-      hash = "sha256-igzZqTLUUyuNcpCUbYHI4RXmWxg+7EC/yyD4DBurR2M=";
-    })
-    (fetchpatch {
-      name = "CVE-2024-27099.patch";
-      url = "https://github.com/Azure/azure-uamqp-c/commit/2ca42b6e4e098af2d17e487814a91d05f6ae4987.patch";
-      stripLen = 1;
-      extraPrefix = "src/vendor/azure-uamqp-c/";
-      # other files are just tests which aren't run from the python
-      # builder anyway
-      includes = [ "src/vendor/azure-uamqp-c/src/link.c" ];
-      hash = "sha256-EqDfG1xAz5CG8MssSSrz8Yrje5qwF8ri1Kdw+UUu5ms=";
-    })
-    # Fix incompatible function pointer conversion error with clang 16.
-    ./clang-fix-incompatible-function-pointer-conversion.patch
-  ];
+  patches =
+    lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) [
+      ./darwin-azure-c-shared-utility-corefoundation.patch
+    ]
+    ++ [
+      (fetchpatch {
+        name = "CVE-2024-25110.patch";
+        url = "https://github.com/Azure/azure-uamqp-c/commit/30865c9ccedaa32ddb036e87a8ebb52c3f18f695.patch";
+        stripLen = 1;
+        extraPrefix = "src/vendor/azure-uamqp-c/";
+        hash = "sha256-igzZqTLUUyuNcpCUbYHI4RXmWxg+7EC/yyD4DBurR2M=";
+      })
+      (fetchpatch {
+        name = "CVE-2024-27099.patch";
+        url = "https://github.com/Azure/azure-uamqp-c/commit/2ca42b6e4e098af2d17e487814a91d05f6ae4987.patch";
+        stripLen = 1;
+        extraPrefix = "src/vendor/azure-uamqp-c/";
+        # other files are just tests which aren't run from the python
+        # builder anyway
+        includes = [ "src/vendor/azure-uamqp-c/src/link.c" ];
+        hash = "sha256-EqDfG1xAz5CG8MssSSrz8Yrje5qwF8ri1Kdw+UUu5ms=";
+      })
+      # Fix incompatible function pointer conversion error with clang 16.
+      ./clang-fix-incompatible-function-pointer-conversion.patch
+    ];
 
-  postPatch = lib.optionalString (stdenv.isDarwin && !stdenv.isx86_64) ''
+  postPatch = lib.optionalString (stdenv.hostPlatform.isDarwin && !stdenv.hostPlatform.isx86_64) ''
     # force darwin aarch64 to use openssl instead of applessl, removing
     # some quirks upstream thinks they need to use openssl on macos
     sed -i \
@@ -71,17 +74,15 @@ buildPythonPackage rec {
     cython_0
   ];
 
-  buildInputs = [
-    openssl
-  ] ++ lib.optionals stdenv.isDarwin [
-    CoreFoundation
-    CFNetwork
-    Security
-  ];
+  buildInputs =
+    [ openssl ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      CoreFoundation
+      CFNetwork
+      Security
+    ];
 
-  propagatedBuildInputs = [
-    certifi
-  ];
+  propagatedBuildInputs = [ certifi ];
 
   dontUseCmakeConfigure = true;
 
@@ -95,12 +96,10 @@ buildPythonPackage rec {
     pytest-asyncio
   ];
 
-  pythonImportsCheck = [
-    "uamqp"
-  ];
+  pythonImportsCheck = [ "uamqp" ];
 
   meta = with lib; {
-    description = "An AMQP 1.0 client library for Python";
+    description = "AMQP 1.0 client library for Python";
     homepage = "https://github.com/Azure/azure-uamqp-python";
     license = licenses.mit;
     maintainers = with maintainers; [ maxwilson ];
diff --git a/pkgs/development/python-modules/uarray/default.nix b/pkgs/development/python-modules/uarray/default.nix
index b6070cb8d9e16..731da3b75fbe3 100644
--- a/pkgs/development/python-modules/uarray/default.nix
+++ b/pkgs/development/python-modules/uarray/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, setuptools
-, setuptools-scm
-, matchpy
-, numpy
-, astunparse
-, typing-extensions
-, pytest7CheckHook
-, pytest-cov
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-scm,
+  matchpy,
+  numpy,
+  astunparse,
+  typing-extensions,
+  pytest7CheckHook,
+  pytest-cov,
 }:
 
 buildPythonPackage rec {
@@ -24,10 +24,11 @@ buildPythonPackage rec {
     hash = "sha256-wTKqOw64b+/kdZpSYLwCJATOuo807BWCtVHB4pH58fY=";
   };
 
-  nativeBuildInputs = [ setuptools setuptools-scm ];
-  build-system = [
+  nativeBuildInputs = [
     setuptools
+    setuptools-scm
   ];
+  build-system = [ setuptools ];
 
   dependencies = [
     astunparse
diff --git a/pkgs/development/python-modules/uart-devices/default.nix b/pkgs/development/python-modules/uart-devices/default.nix
index 7859d5ce32d10..790bee28b635e 100644
--- a/pkgs/development/python-modules/uart-devices/default.nix
+++ b/pkgs/development/python-modules/uart-devices/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
       --replace-fail "-Wdefault --cov=uart_devices --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   nativeCheckInputs = [
     pytest-asyncio
diff --git a/pkgs/development/python-modules/uasiren/default.nix b/pkgs/development/python-modules/uasiren/default.nix
index 25f28f3d15d32..a30bc00e8ba30 100644
--- a/pkgs/development/python-modules/uasiren/default.nix
+++ b/pkgs/development/python-modules/uasiren/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build time
-, setuptools-scm
+  # build time
+  setuptools-scm,
 
-# propagates
-, aiohttp
+  # propagates
+  aiohttp,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 let
@@ -28,17 +29,11 @@ buildPythonPackage {
     hash = "sha256-NHrnG5Vhz+JZgcTJyfIgGz0Ye+3dFVv2zLCCqw2++oM=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [
     "uasiren"
@@ -53,4 +48,3 @@ buildPythonPackage {
     maintainers = with maintainers; [ hexa ];
   };
 }
-
diff --git a/pkgs/development/python-modules/ubelt/default.nix b/pkgs/development/python-modules/ubelt/default.nix
index b964c7d4de426..ae9c6b2a648db 100644
--- a/pkgs/development/python-modules/ubelt/default.nix
+++ b/pkgs/development/python-modules/ubelt/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, wheel
-, numpy
-, python-dateutil
-, xxhash
-, pytestCheckHook
-, requests
-, xdoctest
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  wheel,
+  numpy,
+  python-dateutil,
+  xxhash,
+  pytestCheckHook,
+  requests,
+  xdoctest,
 }:
 
 buildPythonPackage rec {
   pname = "ubelt";
-  version = "1.3.5";
+  version = "1.3.6";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -24,7 +25,7 @@ buildPythonPackage rec {
     owner = "Erotemic";
     repo = "ubelt";
     rev = "refs/tags/v${version}";
-    hash = "sha256-pwqqt5Syag4cO6a93+7ZE3eI61yTZGc+NEu/Y0i1U0k=";
+    hash = "sha256-ygoJqyTscfuZVDGVbrZobZFvlcuF4HavTU65tmhyU+w=";
   };
 
   nativeBuildInputs = [
@@ -50,7 +51,7 @@ buildPythonPackage rec {
     export HOME=$TMPDIR
   '';
 
-  disabledTests = lib.optionals stdenv.isDarwin [
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
     # fail due to sandbox environment
     "CacheStamp.expired"
     "userhome"
@@ -61,7 +62,7 @@ buildPythonPackage rec {
   __darwinAllowLocalNetworking = true;
 
   meta = with lib; {
-    description = "A Python utility library with a stdlib like feel and extra batteries. Paths, Progress, Dicts, Downloads, Caching, Hashing: ubelt makes it easy";
+    description = "Python utility library with a stdlib like feel and extra batteries. Paths, Progress, Dicts, Downloads, Caching, Hashing: ubelt makes it easy";
     homepage = "https://github.com/Erotemic/ubelt";
     changelog = "https://github.com/Erotemic/ubelt/blob/${src.rev}/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/uc-micro-py/default.nix b/pkgs/development/python-modules/uc-micro-py/default.nix
index 77f7eb1625d97..42d4f11a2e71a 100644
--- a/pkgs/development/python-modules/uc-micro-py/default.nix
+++ b/pkgs/development/python-modules/uc-micro-py/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,22 +21,16 @@ buildPythonPackage rec {
     hash = "sha256-Z7XHWeV5I/y19EKg4lzcl9pwRexWnSQ7d8CpQu5xdnI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "uc_micro"
-  ];
+  pythonImportsCheck = [ "uc_micro" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Micro subset of unicode data files for linkify-it-py";
     homepage = "https://github.com/tsutsu3/uc.micro-py";
     license = licenses.mit;
-    maintainers = with maintainers; [ AluisioASG ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ucsmsdk/default.nix b/pkgs/development/python-modules/ucsmsdk/default.nix
index f2442d2a60785..a510f0f468aaa 100644
--- a/pkgs/development/python-modules/ucsmsdk/default.nix
+++ b/pkgs/development/python-modules/ucsmsdk/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyparsing
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyparsing,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "ucsmsdk";
-  version = "0.9.17";
+  version = "0.9.20";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "CiscoUcs";
     repo = "ucsmsdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Ejn99MArKZjCHsl81WSHfpWV3Kz/mBrItIa0tPVProU=";
+    hash = "sha256-X8lGpfVjIZIpNneOM/mE+9RvglW9FlYoGz7pFs7ellk=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/udatetime/default.nix b/pkgs/development/python-modules/udatetime/default.nix
index 46824549ba279..41b97a8115028 100644
--- a/pkgs/development/python-modules/udatetime/default.nix
+++ b/pkgs/development/python-modules/udatetime/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/ueagle/default.nix b/pkgs/development/python-modules/ueagle/default.nix
index d54b18925e900..5edd077416ef6 100644
--- a/pkgs/development/python-modules/ueagle/default.nix
+++ b/pkgs/development/python-modules/ueagle/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     sha256 = "1hxwk5alalvmhc31y917dxsnbiwq1xci2krma3235581319xr3w7";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/ueberzug/default.nix b/pkgs/development/python-modules/ueberzug/default.nix
index 2e16ea7f2f82f..633e2d9d7db27 100644
--- a/pkgs/development/python-modules/ueberzug/default.nix
+++ b/pkgs/development/python-modules/ueberzug/default.nix
@@ -1,6 +1,16 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
-, libX11, libXext
-, attrs, docopt, pillow, psutil, xlib }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  libX11,
+  libXext,
+  attrs,
+  docopt,
+  pillow,
+  psutil,
+  xlib,
+}:
 
 buildPythonPackage rec {
   pname = "ueberzug";
@@ -14,9 +24,18 @@ buildPythonPackage rec {
     sha256 = "7ce49f351132c7d1b0f8097f6e4c5635376151ca59318540da3e296e5b21adc3";
   };
 
-  buildInputs = [ libX11 libXext ];
+  buildInputs = [
+    libX11
+    libXext
+  ];
 
-  propagatedBuildInputs = [ attrs docopt pillow psutil xlib ];
+  propagatedBuildInputs = [
+    attrs
+    docopt
+    pillow
+    psutil
+    xlib
+  ];
 
   doCheck = false;
 
@@ -24,7 +43,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/seebye/ueberzug";
-    description = "An alternative for w3mimgdisplay";
+    description = "Alternative for w3mimgdisplay";
     mainProgram = "ueberzug";
     license = licenses.gpl3;
     maintainers = with maintainers; [ Br1ght0ne ];
diff --git a/pkgs/development/python-modules/ufal-chu-liu-edmonds/default.nix b/pkgs/development/python-modules/ufal-chu-liu-edmonds/default.nix
new file mode 100644
index 0000000000000..7eca9f144b1d0
--- /dev/null
+++ b/pkgs/development/python-modules/ufal-chu-liu-edmonds/default.nix
@@ -0,0 +1,39 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  numpy,
+}:
+
+buildPythonPackage rec {
+  pname = "ufal-chu-liu-edmonds";
+  version = "1.0.3";
+  pyproject = true;
+
+  src = fetchPypi {
+    pname = "ufal.chu_liu_edmonds";
+    inherit version;
+    hash = "sha256-v3tv6cYWoFPPgaO6KXR2uUk3MsZ458Tz5wKeFW8fzNE=";
+  };
+
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ numpy ];
+
+  checkPhase = ''
+    runHook preCheck
+    cd tests
+    python test.py
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [ "ufal.chu_liu_edmonds" ];
+
+  meta = with lib; {
+    description = "Bindings to Chu-Liu-Edmonds algorithm from TurboParser";
+    homepage = "https://github.com/ufal/chu_liu_edmonds";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ vizid ];
+  };
+}
diff --git a/pkgs/development/python-modules/ufmt/default.nix b/pkgs/development/python-modules/ufmt/default.nix
index 3d1f9033cda60..d8e3492614184 100644
--- a/pkgs/development/python-modules/ufmt/default.nix
+++ b/pkgs/development/python-modules/ufmt/default.nix
@@ -1,38 +1,39 @@
-{ lib
-, black
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, flit-core
-, libcst
-, moreorless
-, pythonOlder
-, tomlkit
-, trailrunner
-, typing-extensions
-, unittestCheckHook
-, usort
+{
+  lib,
+  black,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  flit-core,
+  libcst,
+  moreorless,
+  pygls,
+  pythonOlder,
+  tomlkit,
+  trailrunner,
+  ruff-api,
+  typing-extensions,
+  unittestCheckHook,
+  usort,
 }:
 
 buildPythonPackage rec {
   pname = "ufmt";
-  version = "2.1.0";
-  format = "pyproject";
+  version = "2.7.3";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "omnilib";
     repo = "ufmt";
     rev = "refs/tags/v${version}";
-    hash = "sha256-eQIbSC0Oxi6JD7/3o2y9f+KhT8GIiFiYiV4A3QBoWl0=";
+    hash = "sha256-hXCOsetw5o3V9NCR0TOfYSFyfBnuOOZDMiUd/6ER9WU=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     black
     click
     libcst
@@ -43,20 +44,23 @@ buildPythonPackage rec {
     usort
   ];
 
+  passthru.optional-dependencies = {
+    lsp = [ pygls ];
+    ruff = [ ruff-api ];
+  };
+
   nativeCheckInputs = [
     unittestCheckHook
-  ];
+  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "ufmt"
-  ];
+  pythonImportsCheck = [ "ufmt" ];
 
   meta = with lib; {
     description = "Safe, atomic formatting with black and usort";
-    mainProgram = "ufmt";
     homepage = "https://github.com/omnilib/ufmt";
     changelog = "https://github.com/omnilib/ufmt/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "ufmt";
   };
 }
diff --git a/pkgs/development/python-modules/ufo2ft/default.nix b/pkgs/development/python-modules/ufo2ft/default.nix
index 5cbcf1370372f..cd438f890d50a 100644
--- a/pkgs/development/python-modules/ufo2ft/default.nix
+++ b/pkgs/development/python-modules/ufo2ft/default.nix
@@ -1,43 +1,42 @@
-{ lib
-, booleanoperations
-, buildPythonPackage
-, cffsubr
-, compreffor
-, cu2qu
-, defcon
-, fetchPypi
-, fonttools
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools-scm
-, skia-pathops
-, ufolib2
+{
+  lib,
+  booleanoperations,
+  buildPythonPackage,
+  cffsubr,
+  compreffor,
+  cu2qu,
+  defcon,
+  fetchPypi,
+  fontmath,
+  fonttools,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  skia-pathops,
+  ufolib2,
 }:
 
 buildPythonPackage rec {
   pname = "ufo2ft";
-  version = "3.1.0";
+  version = "3.2.8";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-5EUrML1Yd88tVEP+Kd9TmXm+5Ejk/XIH/USYBakK/wQ=";
+    hash = "sha256-HSD66FbCxZyACRq7b8p2uizoO4ZqPAn1O8BFoi1/Mkc=";
   };
 
   nativeBuildInputs = [
     setuptools-scm
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "cffsubr"
-  ];
+  pythonRelaxDeps = [ "cffsubr" ];
 
   propagatedBuildInputs = [
     cu2qu
+    fontmath
     fonttools
     defcon
     compreffor
@@ -45,13 +44,9 @@ buildPythonPackage rec {
     cffsubr
     ufolib2
     skia-pathops
-  ]
-  ++ fonttools.optional-dependencies.lxml
-  ++ fonttools.optional-dependencies.ufo;
+  ] ++ fonttools.optional-dependencies.lxml ++ fonttools.optional-dependencies.ufo;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Do not depend on skia.
@@ -66,15 +61,13 @@ buildPythonPackage rec {
     "test_drop_glyph_names_variable"
   ];
 
-  pythonImportsCheck = [
-    "ufo2ft"
-  ];
+  pythonImportsCheck = [ "ufo2ft" ];
 
   meta = with lib; {
     description = "Bridge from UFOs to FontTools objects";
     homepage = "https://github.com/googlefonts/ufo2ft";
     changelog = "https://github.com/googlefonts/ufo2ft/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ufolib2/default.nix b/pkgs/development/python-modules/ufolib2/default.nix
index 5712b150569ed..6eaac11f17f03 100644
--- a/pkgs/development/python-modules/ufolib2/default.nix
+++ b/pkgs/development/python-modules/ufolib2/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, attrs
-, fonttools
-, pytestCheckHook
-, setuptools-scm
-
-# optionals
-, cattrs
-, lxml
-, orjson
-, msgpack
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  attrs,
+  fonttools,
+  pytestCheckHook,
+  setuptools-scm,
+
+  # optionals
+  cattrs,
+  lxml,
+  orjson,
+  msgpack,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     hash = "sha256-SfDcf3LMrP5/rv4NU9N5cdRWZNiwVj7zaVb6e/pVor0=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     attrs
@@ -36,8 +35,14 @@ buildPythonPackage rec {
   passthru.optional-dependencies = {
     lxml = [ lxml ];
     converters = [ cattrs ];
-    json = [ cattrs orjson ];
-    msgpack = [ cattrs msgpack ];
+    json = [
+      cattrs
+      orjson
+    ];
+    msgpack = [
+      cattrs
+      msgpack
+    ];
   };
 
   nativeCheckInputs = [
@@ -50,6 +55,6 @@ buildPythonPackage rec {
     description = "Library to deal with UFO font sources";
     homepage = "https://github.com/fonttools/ufoLib2";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ufolint/default.nix b/pkgs/development/python-modules/ufolint/default.nix
index 0b561bf6f8307..95db33a7bfc13 100644
--- a/pkgs/development/python-modules/ufolint/default.nix
+++ b/pkgs/development/python-modules/ufolint/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, commandlines
-, fonttools
-, fs
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  commandlines,
+  fonttools,
+  fs,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
   ];
 
   doCheck = true;
-  nativeBuildInputs = [
-    pytestCheckHook
-  ];
+  nativeBuildInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Linter for Unified Font Object (UFO) source code";
@@ -39,4 +38,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ danc86 ];
   };
 }
-
diff --git a/pkgs/development/python-modules/ufomerge/default.nix b/pkgs/development/python-modules/ufomerge/default.nix
new file mode 100644
index 0000000000000..79b3436a28bb2
--- /dev/null
+++ b/pkgs/development/python-modules/ufomerge/default.nix
@@ -0,0 +1,59 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonRelaxDepsHook,
+  pytestCheckHook,
+  setuptools,
+  setuptools-scm,
+  fonttools,
+  fontfeatures,
+  ufolib2,
+}:
+
+buildPythonPackage rec {
+  pname = "ufomerge";
+  version = "1.8.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "googlefonts";
+    repo = "ufomerge";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-Bo/KJhJTIAGNDT2QoXRKGMYLQuqjfCe5yaCsFcQ4A64=";
+  };
+
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
+
+  pythonRelaxDeps = [ "fonttools" ];
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    fonttools
+    ufolib2
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    fontfeatures
+  ];
+
+  disabledTestPaths = [
+    # Failing due to fonttools being to old
+    "tests/test_layout.py"
+  ];
+
+  pythonImportsCheck = [ "ufomerge" ];
+
+  meta = {
+    description = "Command line utility and Python library that merges two UFO source format fonts into a single file";
+    homepage = "https://github.com/googlefonts/ufomerge";
+    changelog = "https://github.com/googlefonts/ufomerge/releases/tag/v${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ jopejoe1 ];
+  };
+}
diff --git a/pkgs/development/python-modules/ufonormalizer/default.nix b/pkgs/development/python-modules/ufonormalizer/default.nix
index bfc354c116e0c..48637f4088a0b 100644
--- a/pkgs/development/python-modules/ufonormalizer/default.nix
+++ b/pkgs/development/python-modules/ufonormalizer/default.nix
@@ -1,15 +1,21 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder, setuptools-scm }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools-scm,
+}:
 
 buildPythonPackage rec {
   pname = "ufonormalizer";
-  version = "0.6.1";
+  version = "0.6.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e61110e75a500083f265385b1354b578610f9542e3bbbeedb98a2a6155e4aa6c";
+    sha256 = "sha256-TFcVu5SDgfLGQa+CuUk4rSQtm1Nl3RxbfOPXVVaibDo=";
     extension = "zip";
   };
 
diff --git a/pkgs/development/python-modules/ufoprocessor/default.nix b/pkgs/development/python-modules/ufoprocessor/default.nix
index dda782897b8d7..fb0ac0e1fd8ec 100644
--- a/pkgs/development/python-modules/ufoprocessor/default.nix
+++ b/pkgs/development/python-modules/ufoprocessor/default.nix
@@ -1,7 +1,15 @@
-{ lib, buildPythonPackage, fetchPypi
-, defcon, fonttools, lxml, fs
-, mutatormath, fontmath, fontparts
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  defcon,
+  fonttools,
+  lxml,
+  fs,
+  mutatormath,
+  fontmath,
+  fontparts,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/uharfbuzz/default.nix b/pkgs/development/python-modules/uharfbuzz/default.nix
index b4ea16f1abd5e..de30a78091665 100644
--- a/pkgs/development/python-modules/uharfbuzz/default.nix
+++ b/pkgs/development/python-modules/uharfbuzz/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, cython
-, setuptools
-, setuptools-scm
-, pytestCheckHook
-, ApplicationServices
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  cython,
+  setuptools,
+  setuptools-scm,
+  pytestCheckHook,
+  ApplicationServices,
 }:
 
 buildPythonPackage rec {
@@ -31,11 +32,9 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [ ApplicationServices ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ ApplicationServices ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "uharfbuzz" ];
 
@@ -43,6 +42,6 @@ buildPythonPackage rec {
     description = "Streamlined Cython bindings for the harfbuzz shaping engine";
     homepage = "https://github.com/harfbuzz/uharfbuzz";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/uhi/default.nix b/pkgs/development/python-modules/uhi/default.nix
index 774ff6f273126..c84408b339ed2 100644
--- a/pkgs/development/python-modules/uhi/default.nix
+++ b/pkgs/development/python-modules/uhi/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, hatchling
-, hatch-vcs
-, numpy
-, pytestCheckHook
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  hatchling,
+  hatch-vcs,
+  numpy,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -14,7 +15,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-DctrGXdQh9OKMe44jLLHDy7P4ExP/iymMiNBDK5b7vo=";
+    hash = "sha256-DctrGXdQh9OKMe44jLLHDy7P4ExP/iymMiNBDK5b7vo=";
   };
 
   buildInputs = [
@@ -22,13 +23,9 @@ buildPythonPackage rec {
     hatch-vcs
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
-  checkInputs = [
-    pytestCheckHook
-  ];
+  checkInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Universal Histogram Interface";
diff --git a/pkgs/development/python-modules/uiprotect/default.nix b/pkgs/development/python-modules/uiprotect/default.nix
new file mode 100644
index 0000000000000..bee77028970e6
--- /dev/null
+++ b/pkgs/development/python-modules/uiprotect/default.nix
@@ -0,0 +1,101 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  # build-system
+  poetry-core,
+
+  # dependencies
+  aiofiles,
+  aiohttp,
+  aioshutil,
+  async-timeout,
+  convertertools,
+  dateparser,
+  orjson,
+  packaging,
+  pillow,
+  platformdirs,
+  pydantic,
+  pyjwt,
+  rich,
+  typer,
+  yarl,
+
+  # tests
+  aiosqlite,
+  asttokens,
+  ffmpeg,
+  pytest-asyncio,
+  pytest-benchmark,
+  pytest-cov-stub,
+  pytest-timeout,
+  pytest-xdist,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "uiprotect";
+  version = "6.0.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "uilibs";
+    repo = "uiprotect";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-3Dmim+wSAhco3KvtbAT/f/feNriaI22m0ml4L9SJFPs=";
+  };
+
+  build-system = [ poetry-core ];
+
+  pythonRelaxDeps = [
+    "aiofiles"
+    "pydantic"
+  ];
+
+  dependencies = [
+    aiofiles
+    aiohttp
+    aioshutil
+    async-timeout
+    convertertools
+    dateparser
+    orjson
+    packaging
+    pillow
+    platformdirs
+    pydantic
+    pyjwt
+    rich
+    typer
+    yarl
+  ];
+
+  nativeCheckInputs = [
+    aiosqlite
+    asttokens
+    ffmpeg # Required for command ffprobe
+    pytest-asyncio
+    pytest-benchmark
+    pytest-cov-stub
+    pytest-timeout
+    pytest-xdist
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [ "--benchmark-disable" ];
+
+  pythonImportsCheck = [ "uiprotect" ];
+
+  meta = with lib; {
+    description = "Python API for UniFi Protect (Unofficial)";
+    homepage = "https://github.com/uilibs/uiprotect";
+    changelog = "https://github.com/uilibs/uiprotect/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/development/python-modules/ujson/default.nix b/pkgs/development/python-modules/ujson/default.nix
index 1dd98186e26fc..129f731b3caee 100644
--- a/pkgs/development/python-modules/ujson/default.nix
+++ b/pkgs/development/python-modules/ujson/default.nix
@@ -1,29 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "ujson";
-  version = "5.9.0";
+  version = "5.10.0";
   format = "setuptools";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-icyS5z1VAbin9IV17rFK0nFWrQksLp/H48+UnwfnVTI=";
+    hash = "sha256-s82PPF2MdzglfxAYiARE97fZtmIyxkZJ9WLXuoatS8E=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "ujson" ];
 
@@ -31,6 +28,6 @@ buildPythonPackage rec {
     description = "Ultra fast JSON encoder and decoder";
     homepage = "https://github.com/ultrajson/ultrajson";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ukkonen/default.nix b/pkgs/development/python-modules/ukkonen/default.nix
index 5ea0930d7d890..136303b02b72e 100644
--- a/pkgs/development/python-modules/ukkonen/default.nix
+++ b/pkgs/development/python-modules/ukkonen/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, cffi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cffi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     sha256 = "jG6VP/P5sadrdrmneH36/ExSld9blyMAAG963QS9+p0=";
   };
 
-  nativeBuildInputs = [
-    cffi
-  ];
+  nativeBuildInputs = [ cffi ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "ukkonen"
-  ];
+  pythonImportsCheck = [ "ukkonen" ];
 
   meta = with lib; {
     description = "Python implementation of bounded Levenshtein distance (Ukkonen)";
diff --git a/pkgs/development/python-modules/ukpostcodeparser/default.nix b/pkgs/development/python-modules/ukpostcodeparser/default.nix
index 486cee90435a8..611e21ed8ada2 100644
--- a/pkgs/development/python-modules/ukpostcodeparser/default.nix
+++ b/pkgs/development/python-modules/ukpostcodeparser/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "ukpostcodeparser";
@@ -14,9 +18,9 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "UK Postcode parser";
-    homepage    = "https://github.com/hamstah/ukpostcodeparser";
-    license     = licenses.publicDomain;
+    homepage = "https://github.com/hamstah/ukpostcodeparser";
+    license = licenses.publicDomain;
     maintainers = with maintainers; [ siddharthist ];
-    platforms   = platforms.unix;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/ulid-transform/default.nix b/pkgs/development/python-modules/ulid-transform/default.nix
index 95b765bd3e602..58a84849c5d9f 100644
--- a/pkgs/development/python-modules/ulid-transform/default.nix
+++ b/pkgs/development/python-modules/ulid-transform/default.nix
@@ -1,50 +1,50 @@
-{ lib
-, cython
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  cython,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-benchmark,
+  pytest-cov-stub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "ulid-transform";
-  version = "0.9.0";
-  format = "pyproject";
+  version = "1.0.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "bdraco";
-    repo = pname;
+    repo = "ulid-transform";
     rev = "refs/tags/v${version}";
-    hash = "sha256-r9uxPXpmQSsL1rX4d9TH87olFbZugdGdNG++Ygjie1I=";
+    hash = "sha256-99hq329jUpok+rP8WzxN1yTOp15Zfy7tIGRpQMecrc0=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     cython
     poetry-core
     setuptools
   ];
 
   nativeCheckInputs = [
+    pytest-benchmark
+    pytest-cov-stub
     pytestCheckHook
   ];
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace " --cov=ulid_transform --cov-report=term-missing:skip-covered" ""
-  '';
+  pytestFlagsArray = [ "--benchmark-disable" ];
 
-  pythonImportsCheck = [
-    "ulid_transform"
-  ];
+  pythonImportsCheck = [ "ulid_transform" ];
 
   meta = with lib; {
     description = "Library to create and transform ULIDs";
     homepage = "https://github.com/bdraco/ulid-transform";
-    changelog = "https://github.com/bdraco/ulid-transform/releases/tag/v${version}";
+    changelog = "https://github.com/bdraco/ulid-transform/blob/${src.rev}/CHANGELOG.md";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/ultraheat-api/default.nix b/pkgs/development/python-modules/ultraheat-api/default.nix
index b478c7c6c0ab0..9b345f073379b 100644
--- a/pkgs/development/python-modules/ultraheat-api/default.nix
+++ b/pkgs/development/python-modules/ultraheat-api/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyserial
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyserial,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,16 +19,12 @@ buildPythonPackage rec {
     hash = "sha256-rRQTjV9hyUawMaXBgUx/d6pQjM8ffjcFJE2x08Cf4Gw=";
   };
 
-  propagatedBuildInputs = [
-    pyserial
-  ];
+  propagatedBuildInputs = [ pyserial ];
 
   # Source is not tagged, only PyPI releases
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ultraheat_api"
-  ];
+  pythonImportsCheck = [ "ultraheat_api" ];
 
   meta = with lib; {
     description = "Module for working with data from Landis+Gyr Ultraheat heat meter unit";
diff --git a/pkgs/development/python-modules/umalqurra/default.nix b/pkgs/development/python-modules/umalqurra/default.nix
index f06f1d4731046..407edb28ff88d 100644
--- a/pkgs/development/python-modules/umalqurra/default.nix
+++ b/pkgs/development/python-modules/umalqurra/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -23,5 +24,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/tytkal/python-hijiri-ummalqura";
     license = with licenses; [ publicDomain ];
   };
-
 }
diff --git a/pkgs/development/python-modules/umap-learn/default.nix b/pkgs/development/python-modules/umap-learn/default.nix
index 195dde57bf2e4..8a6f51bded2af 100644
--- a/pkgs/development/python-modules/umap-learn/default.nix
+++ b/pkgs/development/python-modules/umap-learn/default.nix
@@ -1,25 +1,25 @@
-{ lib
-, bokeh
-, buildPythonPackage
-, colorcet
-, datashader
-, fetchFromGitHub
-, holoviews
-, matplotlib
-, numba
-, numpy
-, pandas
-, pynndescent
-, pytestCheckHook
-, pythonOlder
-, scikit-image
-, scikit-learn
-, scipy
-, seaborn
-, tbb
-, tensorflow
-, tensorflow-probability
-, tqdm
+{
+  lib,
+  bokeh,
+  buildPythonPackage,
+  colorcet,
+  datashader,
+  fetchFromGitHub,
+  holoviews,
+  matplotlib,
+  numba,
+  numpy,
+  pandas,
+  pynndescent,
+  pytestCheckHook,
+  pythonOlder,
+  scikit-image,
+  scikit-learn,
+  scipy,
+  seaborn,
+  tensorflow,
+  tensorflow-probability,
+  tqdm,
 }:
 
 buildPythonPackage rec {
@@ -62,16 +62,12 @@ buildPythonPackage rec {
       tensorflow-probability
     ];
 
-    tbb = [
-      tbb
-    ];
+    tbb = [ tbb ];
 
     all = plot ++ parametric_umap ++ tbb;
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export HOME=$TMPDIR
@@ -96,6 +92,6 @@ buildPythonPackage rec {
     description = "Uniform Manifold Approximation and Projection";
     homepage = "https://github.com/lmcinnes/umap";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/umodbus/default.nix b/pkgs/development/python-modules/umodbus/default.nix
index 7ce4997342036..d45aebe8d0628 100644
--- a/pkgs/development/python-modules/umodbus/default.nix
+++ b/pkgs/development/python-modules/umodbus/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyserial
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyserial,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,19 +21,13 @@ buildPythonPackage rec {
     hash = "sha256-5IXadb5mjrMwr+L9S1iMN5kba5VGrzYt1p8nBvvLCh4=";
   };
 
-  propagatedBuildInputs = [
-    pyserial
-  ];
+  propagatedBuildInputs = [ pyserial ];
 
   __darwinAllowLocalNetworking = true;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "umodbus"
-  ];
+  pythonImportsCheck = [ "umodbus" ];
 
   meta = with lib; {
     description = "Implementation of the Modbus protocol";
diff --git a/pkgs/development/python-modules/unasync/default.nix b/pkgs/development/python-modules/unasync/default.nix
index d6e8c99510e40..afdfc152bfa81 100644
--- a/pkgs/development/python-modules/unasync/default.nix
+++ b/pkgs/development/python-modules/unasync/default.nix
@@ -1,30 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  tokenize-rt,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "unasync";
-  version = "0.5.0";
-
-  format = "pyproject";
+  version = "0.6.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "python-trio";
     repo = "unasync";
     rev = "v${version}";
-    sha256 = "0h86i09v4909a8nk5lp36jlwz6rsln6vyg3d0i13ykxa6lrx1c2l";
+    sha256 = "sha256-ZRvmX1fSfSJ1HNEymzhIuUi3tdjFmUoidfr0rN8c7tk=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     setuptools
+    tokenize-rt
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # mess with $PYTHONPATH
@@ -37,9 +39,13 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "unasync" ];
 
   meta = with lib; {
+    changelog = "https://github.com/python-trio/unasync/releases/tag/v${version}";
     description = "Project that can transform your asynchronous code into synchronous code";
     homepage = "https://github.com/python-trio/unasync";
-    license = with licenses; [ mit /* or */ asl20 ];
+    license = with licenses; [
+      mit # or
+      asl20
+    ];
     maintainers = with maintainers; [ dotlambda ];
   };
 }
diff --git a/pkgs/development/python-modules/uncertainties/default.nix b/pkgs/development/python-modules/uncertainties/default.nix
index 827a21c811b7c..9d8cb99be6852 100644
--- a/pkgs/development/python-modules/uncertainties/default.nix
+++ b/pkgs/development/python-modules/uncertainties/default.nix
@@ -1,27 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, future
-, numpy
-, pynose
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+  setuptools-scm,
+
+  # optional-dependencies
+  numpy,
+
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "uncertainties";
-  version = "3.1.7";
-  format = "setuptools";
+  version = "3.2.2";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-gBEeCDnyOcWyM8tHcgF7SDoLehVzpYG5Krd0ajXm+qs=";
+  src = fetchFromGitHub {
+    owner = "lmfit";
+    repo = "uncertainties";
+    rev = "refs/tags/${version}";
+    hash = "sha256-cm0FeJCxyBLN0GCKPnscBCx9p9qCDQdwRfhBRgQIhAo=";
   };
 
-  propagatedBuildInputs = [ future ];
-  nativeCheckInputs = [ pynose numpy ];
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  optional-dependencies.arrays = [ numpy ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ]
+  ++ optional-dependencies.arrays;
 
-  checkPhase = ''
-    nosetests -sve test_1to2
-  '';
+  pythonImportsCheck = [ "uncertainties" ];
 
   meta = with lib; {
     homepage = "https://pythonhosted.org/uncertainties/";
diff --git a/pkgs/development/python-modules/uncompyle6/default.nix b/pkgs/development/python-modules/uncompyle6/default.nix
index fa48931594c9e..abf225feb5eee 100644
--- a/pkgs/development/python-modules/uncompyle6/default.nix
+++ b/pkgs/development/python-modules/uncompyle6/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, spark-parser
-, xdis
-, nose
-, pytest
-, hypothesis
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  spark-parser,
+  xdis,
+  nose,
+  pytest,
+  hypothesis,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,17 @@ buildPythonPackage rec {
     hash = "sha256-xFHDjrPFzINOuLip5uCwzzIm5NlNCP0nbdA/6RWO2yc=";
   };
 
-  propagatedBuildInputs = [ spark-parser xdis ];
+  propagatedBuildInputs = [
+    spark-parser
+    xdis
+  ];
 
-  nativeCheckInputs = [ nose pytest hypothesis six ];
+  nativeCheckInputs = [
+    nose
+    pytest
+    hypothesis
+    six
+  ];
 
   # Tests attempt to decompile bytecode of the python version
   # that is running the tests - this does not work for versions
@@ -40,5 +49,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/rocky/python-uncompyle6/";
     license = licenses.gpl3;
   };
-
 }
diff --git a/pkgs/development/python-modules/undefined/default.nix b/pkgs/development/python-modules/undefined/default.nix
index 5348688680e1c..59cf5c2a84792 100644
--- a/pkgs/development/python-modules/undefined/default.nix
+++ b/pkgs/development/python-modules/undefined/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit,
 }:
 
 buildPythonPackage rec {
@@ -14,18 +15,14 @@ buildPythonPackage rec {
     hash = "sha256-xvI3wOPX51GWlLIb1HHcJe48M3nZwjt06/Aqo0nFz/c=";
   };
 
-  nativeBuildInputs = [
-    flit
-  ];
+  nativeBuildInputs = [ flit ];
 
-  pythonImportsCheck = [
-    "undefined"
-  ];
+  pythonImportsCheck = [ "undefined" ];
 
   meta = with lib; {
     description = "Ever needed a global object that act as None but not quite?";
     homepage = "https://github.com/Carreau/undefined";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/undetected-chromedriver/default.nix b/pkgs/development/python-modules/undetected-chromedriver/default.nix
new file mode 100644
index 0000000000000..bcb349bfe36db
--- /dev/null
+++ b/pkgs/development/python-modules/undetected-chromedriver/default.nix
@@ -0,0 +1,54 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  setuptools,
+
+  looseversion,
+  requests,
+  selenium,
+  websockets,
+}:
+
+buildPythonPackage {
+  pname = "undetected-chromedriver";
+  version = "3.5.5";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "ultrafunkamsterdam";
+    repo = "undetected-chromedriver";
+    # Upstream uses the summaries of commits for specifying versions
+    rev = "0aa5fbe252370b4cb2b95526add445392cad27ba";
+    hash = "sha256-Qe+GrsUPnhjJMDgjdUCloapjj0ggFlm/Dr42WLcmb1o=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    looseversion
+    requests
+    selenium
+    websockets
+  ];
+
+  # No tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "undetected_chromedriver" ];
+
+  postPatch = ''
+    substituteInPlace undetected_chromedriver/patcher.py \
+      --replace-fail \
+        "from distutils.version import LooseVersion" \
+        "from looseversion import LooseVersion"
+  '';
+
+  meta = with lib; {
+    description = "Python library for the custom Selenium ChromeDriver that passes all bot mitigation systems";
+    homepage = "https://github.com/ultrafunkamsterdam/undetected-chromedriver";
+    license = licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ paveloom ];
+  };
+}
diff --git a/pkgs/development/python-modules/unearth/default.nix b/pkgs/development/python-modules/unearth/default.nix
index 25be1098eb9d2..8710237952330 100644
--- a/pkgs/development/python-modules/unearth/default.nix
+++ b/pkgs/development/python-modules/unearth/default.nix
@@ -1,33 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, packaging
-, pdm-backend
-, httpx
-, flask
-, pytest-httpserver
-, pytest-mock
-, pytestCheckHook
-, requests-wsgi-adapter
-, trustme
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  packaging,
+  pdm-backend,
+  httpx,
+  flask,
+  pytest-httpserver,
+  pytest-mock,
+  pytestCheckHook,
+  requests-wsgi-adapter,
+  trustme,
 }:
 
 buildPythonPackage rec {
   pname = "unearth";
-  version = "0.15.2";
+  version = "0.17.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-OB8+aWnbCyjZ/C+/shaGBXm/NBvWlUcvLGLivM6ebT0=";
+    hash = "sha256-C4oq/TR28athVfxXlQGsR//+Q1R9iKcOWlt2p/5sqiw=";
   };
 
-  build-system = [
-    pdm-backend
-  ];
+  build-system = [ pdm-backend ];
 
   dependencies = [
     packaging
@@ -45,12 +44,10 @@ buildPythonPackage rec {
     trustme
   ];
 
-  pythonImportsCheck = [
-    "unearth"
-  ];
+  pythonImportsCheck = [ "unearth" ];
 
   meta = with lib; {
-    description = "A utility to fetch and download Python packages";
+    description = "Utility to fetch and download Python packages";
     mainProgram = "unearth";
     homepage = "https://github.com/frostming/unearth";
     changelog = "https://github.com/frostming/unearth/releases/tag/${version}";
diff --git a/pkgs/development/python-modules/unicode-rbnf/default.nix b/pkgs/development/python-modules/unicode-rbnf/default.nix
index 6dd4e813312eb..a672feebf5ee5 100644
--- a/pkgs/development/python-modules/unicode-rbnf/default.nix
+++ b/pkgs/development/python-modules/unicode-rbnf/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,15 @@ buildPythonPackage rec {
     hash = "sha256-PquPoiaO1rEDMz7jaN9MUB0UQGH07M0O9mlrUCsfhm4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "unicode_rbnf"
-  ];
+  pythonImportsCheck = [ "unicode_rbnf" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     changelog = "https://github.com/rhasspy/unicode-rbnf/blob/v${version}/CHANGELOG.md";
-    description = "A pure Python implementation of ICU's rule-based number format engine";
+    description = "Pure Python implementation of ICU's rule-based number format engine";
     homepage = "https://github.com/rhasspy/unicode-rbnf";
     license = licenses.mit;
     maintainers = with maintainers; [ hexa ];
diff --git a/pkgs/development/python-modules/unicode-slugify/default.nix b/pkgs/development/python-modules/unicode-slugify/default.nix
index e967e187d9f1d..32e7a66db70aa 100644
--- a/pkgs/development/python-modules/unicode-slugify/default.nix
+++ b/pkgs/development/python-modules/unicode-slugify/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, six
-, unidecode
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  pytestCheckHook,
+  six,
+  unidecode,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,24 @@ buildPythonPackage rec {
     sha256 = "25f424258317e4cb41093e2953374b3af1f23097297664731cdb3ae46f6bd6c3";
   };
 
-  propagatedBuildInputs = [ six unidecode ];
+  patches = [
+    ./use_pytest_instead_of_nose.patch
+    # mozilla/unicode-slugify#41: Fix Python 3.12 SyntaxWarning
+    (fetchpatch {
+      url = "https://github.com/mozilla/unicode-slugify/commit/a18826f440d0b74e536f5e32ebdcf30e720f20d8.patch";
+      hash = "sha256-B27psp0XI5GhoR0l5lFpUOh88hHzjJYzJS5PnIkfFws=";
+    })
+  ];
 
-  nativeCheckInputs = [
-    nose
-    unittestCheckHook
+  propagatedBuildInputs = [
+    six
+    unidecode
   ];
 
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pytestFlagsArray = [ "slugify/tests.py" ];
+
   meta = with lib; {
     description = "Generates unicode slugs";
     homepage = "https://pypi.org/project/unicode-slugify/";
diff --git a/pkgs/development/python-modules/unicode-slugify/use_pytest_instead_of_nose.patch b/pkgs/development/python-modules/unicode-slugify/use_pytest_instead_of_nose.patch
new file mode 100644
index 0000000000000..4aea175ffa4a5
--- /dev/null
+++ b/pkgs/development/python-modules/unicode-slugify/use_pytest_instead_of_nose.patch
@@ -0,0 +1,69 @@
+diff --git a/slugify/tests.py b/slugify/tests.py
+index 9f636c4..5562e87 100644
+--- a/slugify/tests.py
++++ b/slugify/tests.py
+@@ -3,7 +3,7 @@ from __future__ import unicode_literals
+ 
+ import six
+ import unittest
+-from nose.tools import eq_, raises
++import pytest
+ 
+ from slugify import slugify, smart_text, SLUG_OK
+ 
+@@ -13,31 +13,31 @@ def test_slugify():
+     x = '-'.join([u, u])
+     y = ' - '.join([u, u])
+ 
+-    @raises(ValueError)
+     def test_incoherent_ok_and_only_ascii_raises_an_error():
+         """Checks that only_ascii=True with non ascii "ok" chars actually raises an error."""
+-        slugify('angry smiley !', ok='è_é', only_ascii=True)
++        with pytest.raises(ValueError):
++            slugify('angry smiley !', ok='è_é', only_ascii=True)
+ 
+     def check(x, y):
+-        eq_(slugify(x), y)
++        assert slugify(x) == y
+ 
+     def check_only_ascii(x, y):
+-        eq_(slugify(x, only_ascii=True), y)
++        assert slugify(x, only_ascii=True) == y
+ 
+     def check_only_ascii_capital(x, y):
+-        eq_(slugify(x, lower=False, only_ascii=True), y)
++        assert slugify(x, lower=False, only_ascii=True) == y
+ 
+     def check_only_ascii_lower_nospaces(x, y):
+-        eq_(slugify(x, lower=True, spaces=False, only_ascii=True), y)
++        assert slugify(x, lower=True, spaces=False, only_ascii=True) == y
+ 
+     def check_ok_chars(x, y):
+-        eq_(slugify(x, ok='-♰é_è'), y)
++        assert slugify(x, ok='-♰é_è') == y
+ 
+     def check_empty_ok_chars(x, y):
+-        eq_(slugify(x, ok=''), y)
++        assert slugify(x, ok='') == y
+ 
+     def check_limited_ok_chars_only_ascii(x, y):
+-        eq_(slugify(x, ok='-', only_ascii=True), y)
++        assert slugify(x, ok='-', only_ascii=True) == y
+ 
+     s = [('xx x  - "#$@ x', 'xx-x-x'),
+          ('Bän...g (bang)', 'bäng-bang'),
+@@ -112,11 +112,11 @@ def test_slugify():
+ 
+     #Test custom space replacement
+     x, y = ('-☀- pretty waves under the sunset 😎', '--~pretty~waves~under~the~sunset')
+-    eq_(slugify(x, space_replacement='~'), y)
++    assert slugify(x, space_replacement='~') == y
+ 
+     #Test default auto space replacement
+     x, y = ('-☀- pretty waves under the sunset 😎', 'pretty~waves~under~the~sunset')
+-    eq_(slugify(x, ok='~'), y)
++    assert slugify(x, ok='~') == y
+ 
+ 
+ class SmartTextTestCase(unittest.TestCase):
+
diff --git a/pkgs/development/python-modules/unicodecsv/default.nix b/pkgs/development/python-modules/unicodecsv/default.nix
index 4690590c03fad..1355a7bab4c78 100644
--- a/pkgs/development/python-modules/unicodecsv/default.nix
+++ b/pkgs/development/python-modules/unicodecsv/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -21,5 +22,4 @@ buildPythonPackage rec {
     homepage = "https://github.com/jdunck/python-unicodecsv";
     maintainers = with maintainers; [ koral ];
   };
-
 }
diff --git a/pkgs/development/python-modules/unicodedata2/default.nix b/pkgs/development/python-modules/unicodedata2/default.nix
index 972aa3093a8cd..4857edc8d73ee 100644
--- a/pkgs/development/python-modules/unicodedata2/default.nix
+++ b/pkgs/development/python-modules/unicodedata2/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-yzDxia1mSC+FKaRdpxsqiEHpvSuzdswpMwA6SlWgdkg=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "unicodedata2"
-  ];
+  pythonImportsCheck = [ "unicodedata2" ];
 
   meta = with lib; {
     description = "Backport and updates for the unicodedata module";
diff --git a/pkgs/development/python-modules/unicodeit/default.nix b/pkgs/development/python-modules/unicodeit/default.nix
new file mode 100644
index 0000000000000..30372a2c8e831
--- /dev/null
+++ b/pkgs/development/python-modules/unicodeit/default.nix
@@ -0,0 +1,61 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pytestCheckHook,
+  runCommand,
+
+  setuptools,
+  unicodeit,
+}:
+buildPythonPackage rec {
+  pname = "unicodeit";
+  version = "0.7.5";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "svenkreiss";
+    repo = "unicodeit";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-NeR3fGDbOzwyq85Sep9KuUiARCvefN6l5xcb8D/ntHE=";
+  };
+
+  patches = [
+    (fetchpatch {
+      # Defines a CLI entry point, so `setuptools` generates an `unicodeit` executable
+      url = "https://github.com/svenkreiss/unicodeit/pull/79/commits/9f4a4fee5cb62a101075adf3054832cdb1e6a5ad.patch";
+      hash = "sha256-mAhmU17K0adEFFAIf7ZeJ/cNohrzrL+sol7gYfWbPGo=";
+    })
+  ];
+
+  build-system = [ setuptools ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [
+    "unicodeit"
+    "unicodeit.cli"
+  ];
+
+  passthru.tests.entrypoint =
+    runCommand "python3-unicodeit-test-entrypoint"
+      {
+        nativeBuildInputs = [ unicodeit ];
+        preferLocalBuild = true;
+      }
+      ''
+        [[ "$(unicodeit "\BbbR")" = "ℝ" ]]
+        touch $out
+      '';
+
+  meta = {
+    description = "Converts LaTeX tags to unicode";
+    mainProgram = "unicodeit";
+    homepage = "https://github.com/svenkreiss/unicodeit";
+    license = with lib.licenses; [
+      lppl13c
+      mit
+    ];
+    maintainers = with lib.maintainers; [ nicoo ];
+  };
+}
diff --git a/pkgs/development/python-modules/unicorn/default.nix b/pkgs/development/python-modules/unicorn/default.nix
index c1f17ce880a6b..6ce310bfb5d1d 100644
--- a/pkgs/development/python-modules/unicorn/default.nix
+++ b/pkgs/development/python-modules/unicorn/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, setuptools
-, unicorn-emu
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  setuptools,
+  unicorn-emu,
 }:
 
 buildPythonPackage rec {
   pname = "unicorn";
   version = lib.getVersion unicorn-emu;
-  format = "setuptools";
+  pyproject = true;
 
   src = unicorn-emu.src;
 
@@ -18,15 +19,20 @@ buildPythonPackage rec {
     ln -s ${unicorn-emu}/lib/libunicorn.* prebuilt/
   '';
 
-  # needed on non-x86 linux
-  setupPyBuildFlags = lib.optionals stdenv.isLinux [ "--plat-name" "linux" ]
-                   # aarch64 only available from MacOS SDK 11 onwards, so fix the version tag.
-                   # otherwise, bdist_wheel may detect "macosx_10_6_arm64" which doesn't make sense.
-                   ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [ "--plat-name" "macosx_11_0" ];
-
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  # Needed on non-x86 linux
+  setupPyBuildFlags =
+    lib.optionals stdenv.hostPlatform.isLinux [
+      "--plat-name"
+      "linux"
+    ]
+    # aarch64 only available from MacOS SDK 11 onwards, so fix the version tag.
+    # otherwise, bdist_wheel may detect "macosx_10_6_arm64" which doesn't make sense.
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
+      "--plat-name"
+      "macosx_11_0"
+    ];
+
+  build-system = [ setuptools ];
 
   checkPhase = ''
     runHook preCheck
@@ -38,14 +44,15 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "unicorn"
-  ];
+  pythonImportsCheck = [ "unicorn" ];
 
   meta = with lib; {
     description = "Python bindings for Unicorn CPU emulator engine";
     homepage = "https://www.unicorn-engine.org/";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ bennofs ris ];
+    maintainers = with maintainers; [
+      bennofs
+      ris
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/unicrypto/default.nix b/pkgs/development/python-modules/unicrypto/default.nix
index 5167bc8494691..9c992870f6695 100644
--- a/pkgs/development/python-modules/unicrypto/default.nix
+++ b/pkgs/development/python-modules/unicrypto/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pycryptodome
-, pycryptodomex
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pycryptodome,
+  pycryptodomex,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "unicrypto"
-  ];
+  pythonImportsCheck = [ "unicrypto" ];
 
   meta = with lib; {
     description = "Unified interface for cryptographic libraries";
diff --git a/pkgs/development/python-modules/unicurses/default.nix b/pkgs/development/python-modules/unicurses/default.nix
index 4eae54692b547..bdb2a33f81096 100644
--- a/pkgs/development/python-modules/unicurses/default.nix
+++ b/pkgs/development/python-modules/unicurses/default.nix
@@ -1,14 +1,20 @@
-{ lib, buildPythonPackage, fetchPypi, ncurses, x256 }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  ncurses,
+  x256,
+}:
 
 buildPythonPackage rec {
   pname = "unicurses";
-  version = "3.0.0";
+  version = "3.1.2";
   format = "setuptools";
 
   src = fetchPypi {
     inherit version;
     pname = "Uni-Curses";
-    hash = "sha256-ZJUKWxu2cQlFGN1RNtyDacwSOtBiUKzk9SIDD0IQiuU=";
+    hash = "sha256-M4mjdmy2NSf5KiTVYznPy86bVgZB5u1vDi6GIH1Frc4=";
   };
 
   propagatedBuildInputs = [ x256 ];
@@ -16,8 +22,8 @@ buildPythonPackage rec {
   # Necessary because ctypes.util.find_library does not find the ncurses libraries
   postPatch = ''
     substituteInPlace './unicurses/__init__.py' \
-      --replace "find_library('ncursesw')" '"${ncurses}/lib/libncursesw.so.6"' \
-      --replace "find_library('panelw')" '"${ncurses}/lib/libpanelw.so.6"'
+      --replace-fail "find_library('ncursesw')" '"${ncurses}/lib/libncursesw.so.6"' \
+      --replace-fail "find_library('panelw')" '"${ncurses}/lib/libpanelw.so.6"'
   '';
 
   pythonImportsCheck = [ "unicurses" ];
diff --git a/pkgs/development/python-modules/unidata-blocks/default.nix b/pkgs/development/python-modules/unidata-blocks/default.nix
index 93857756bb651..d7e9f274d3d5d 100644
--- a/pkgs/development/python-modules/unidata-blocks/default.nix
+++ b/pkgs/development/python-modules/unidata-blocks/default.nix
@@ -1,44 +1,47 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, nix-update-script
-, hatch-vcs
-, hatchling
-, langcodes
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytestCheckHook,
+  nix-update-script,
+  hatchling,
+  langcodes,
 }:
 
 buildPythonPackage rec {
   pname = "unidata-blocks";
-  version = "0.0.10";
+  version = "0.0.13";
+  pyproject = true;
 
-  disabled = pythonOlder "3.11";
+  disabled = pythonOlder "3.10";
 
   src = fetchPypi {
     pname = "unidata_blocks";
     inherit version;
-    hash = "sha256-wwiOjfIAx6AZtK98uuPQ0jwblq+CdnMQp+JkQWh+RgM=";
+    hash = "sha256-JQwKMEhDdvvsnXI6QsV2TcuB3mw5NcALbi5kM5xl/Pw=";
   };
 
-  format = "pyproject";
+  build-system = [ hatchling ];
 
-  nativeBuildInputs = [
-    hatch-vcs
-    hatchling
+  dependencies = [
+    langcodes
   ];
 
-  propagatedBuildInputs = [ langcodes ];
-
   nativeCheckInputs = [ pytestCheckHook ];
 
+  pythonImportsCheck = [ "unidata_blocks" ];
+
   passthru.updateScript = nix-update-script { };
 
   meta = {
     homepage = "https://github.com/TakWolf/unidata-blocks";
-    description = "A library that helps query unicode blocks by Blocks.txt";
+    description = "Library that helps query unicode blocks by Blocks.txt";
     platforms = lib.platforms.all;
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ h7x4 ];
+    maintainers = with lib.maintainers; [
+      TakWolf
+      h7x4
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/unidecode/default.nix b/pkgs/development/python-modules/unidecode/default.nix
index 23263403fbd25..aa19b4478861c 100644
--- a/pkgs/development/python-modules/unidecode/default.nix
+++ b/pkgs/development/python-modules/unidecode/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-OoJSY+dNNISyVwKuRboMH7Je8nYFKxus2c4v3VsmyRE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "unidecode"
-  ];
+  pythonImportsCheck = [ "unidecode" ];
 
   meta = with lib; {
     description = "ASCII transliterations of Unicode text";
diff --git a/pkgs/development/python-modules/unidic-lite/default.nix b/pkgs/development/python-modules/unidic-lite/default.nix
index eec9c7022a0d8..3152b87253131 100644
--- a/pkgs/development/python-modules/unidic-lite/default.nix
+++ b/pkgs/development/python-modules/unidic-lite/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -16,12 +17,10 @@ buildPythonPackage rec {
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "unidic_lite"
-  ];
+  pythonImportsCheck = [ "unidic_lite" ];
 
   meta = with lib; {
-    description = "A small version of UniDic";
+    description = "Small version of UniDic";
     homepage = "https://github.com/polm/unidic-lite";
     license = licenses.mit;
     maintainers = teams.tts.members;
diff --git a/pkgs/development/python-modules/unidic/default.nix b/pkgs/development/python-modules/unidic/default.nix
index cd8363d6fc972..69e38dafef065 100644
--- a/pkgs/development/python-modules/unidic/default.nix
+++ b/pkgs/development/python-modules/unidic/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, mecab
-, setuptools-scm
-, requests
-, tqdm
-, wasabi
-, plac
-, cython
-, platformdirs
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  mecab,
+  setuptools-scm,
+  requests,
+  tqdm,
+  wasabi,
+  plac,
+  cython,
+  platformdirs,
 }:
 
 buildPythonPackage rec {
@@ -35,9 +36,19 @@ buildPythonPackage rec {
   # no tests
   doCheck = false;
 
-  propagatedBuildInputs = [ requests tqdm wasabi plac platformdirs ];
-
-  nativeBuildInputs = [ cython mecab setuptools-scm ];
+  propagatedBuildInputs = [
+    requests
+    tqdm
+    wasabi
+    plac
+    platformdirs
+  ];
+
+  nativeBuildInputs = [
+    cython
+    mecab
+    setuptools-scm
+  ];
 
   pythonImportsCheck = [ "unidic" ];
 
diff --git a/pkgs/development/python-modules/unidiff/default.nix b/pkgs/development/python-modules/unidiff/default.nix
index 3519d35c209f1..3f2034098dc00 100644
--- a/pkgs/development/python-modules/unidiff/default.nix
+++ b/pkgs/development/python-modules/unidiff/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, unittestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  unittestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "unidiff";
@@ -12,7 +17,10 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [ "-s" "tests" ];
+  unittestFlagsArray = [
+    "-s"
+    "tests"
+  ];
 
   pythonImportsCheck = [ "unidiff" ];
 
diff --git a/pkgs/development/python-modules/unifi-ap/default.nix b/pkgs/development/python-modules/unifi-ap/default.nix
new file mode 100644
index 0000000000000..f5bfb6088bc0e
--- /dev/null
+++ b/pkgs/development/python-modules/unifi-ap/default.nix
@@ -0,0 +1,44 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  paramiko,
+}:
+
+buildPythonPackage rec {
+  pname = "unifi-ap";
+  version = "0.0.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "tofuSCHNITZEL";
+    repo = "unifi_ap";
+    rev = "v${version}";
+    hash = "sha256-dEaDRcQEx+n+zvxVHD58B1AdFj004L76AtVDesnP+gQ=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+
+  pythonRelaxDeps = [ "paramiko" ];
+
+  dependencies = [
+    paramiko
+  ];
+
+  pythonImportsCheck = [
+    "unifi_ap"
+  ];
+
+  doCheck = false; # no tests
+
+  meta = {
+    changelog = "https://github.com/tofuSCHNITZEL/unifi_ap/releases/tag/v${version}";
+    description = "Python API for UniFi accesspoints";
+    homepage = "https://github.com/tofuSCHNITZEL/unifi_ap";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ ];
+  };
+}
diff --git a/pkgs/development/python-modules/unifi-discovery/default.nix b/pkgs/development/python-modules/unifi-discovery/default.nix
index 760b9f96c89ba..198b179498918 100644
--- a/pkgs/development/python-modules/unifi-discovery/default.nix
+++ b/pkgs/development/python-modules/unifi-discovery/default.nix
@@ -1,34 +1,38 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pyroute2
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pyroute2,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "unifi-discovery";
-  version = "1.1.8";
-  format = "pyproject";
+  version = "1.2.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "bdraco";
-    repo = pname;
+    repo = "unifi-discovery";
     rev = "refs/tags/v${version}";
-    hash = "sha256-gE/2awyhDACrc0nuTvTPOcK2lFbPIZAXDPRnVJtWFco=";
+    hash = "sha256-Ea+zxV2GUAaG/BxO103NhOLzzr/TNJaOsynDad2/2VA=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "--cov=unifi_discovery --cov-report=term-missing:skip-covered" ""
+  '';
+
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     pyroute2
   ];
@@ -39,23 +43,16 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "--asyncio-mode=auto"
-  ];
+  pytestFlagsArray = [ "--asyncio-mode=auto" ];
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace "--cov=unifi_discovery --cov-report=term-missing:skip-covered" ""
-  '';
-
-  pythonImportsCheck = [
-    "unifi_discovery"
-  ];
+  pythonImportsCheck = [ "unifi_discovery" ];
 
   meta = with lib; {
     description = "Module to discover Unifi devices";
     homepage = "https://github.com/bdraco/unifi-discovery";
+    changelog = "https://github.com/bdraco/unifi-discovery/releases/tag/v${version}";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/python-modules/unifi/default.nix b/pkgs/development/python-modules/unifi/default.nix
index bc868f0ed4f40..daebd11ee3c0a 100644
--- a/pkgs/development/python-modules/unifi/default.nix
+++ b/pkgs/development/python-modules/unifi/default.nix
@@ -1,5 +1,9 @@
-{ lib, buildPythonPackage
-, fetchPypi, urllib3 }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  urllib3,
+}:
 
 buildPythonPackage rec {
   pname = "unifi";
@@ -17,9 +21,9 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "An API towards the Ubiquity Networks UniFi controller";
-    homepage    = "https://pypi.python.org/pypi/unifi/";
-    license     = licenses.mit;
+    description = "API towards the Ubiquity Networks UniFi controller";
+    homepage = "https://pypi.python.org/pypi/unifi/";
+    license = licenses.mit;
     maintainers = with maintainers; [ peterhoeg ];
   };
 }
diff --git a/pkgs/development/python-modules/unifiled/default.nix b/pkgs/development/python-modules/unifiled/default.nix
index 9b3b7274a4957..0c2ec7dd96459 100644
--- a/pkgs/development/python-modules/unifiled/default.nix
+++ b/pkgs/development/python-modules/unifiled/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  urllib3,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/unify/default.nix b/pkgs/development/python-modules/unify/default.nix
index 52c6ba64e59f3..9f6f7d929c6e4 100644
--- a/pkgs/development/python-modules/unify/default.nix
+++ b/pkgs/development/python-modules/unify/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, pytestCheckHook
-, untokenize
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  pytestCheckHook,
+  untokenize,
 }:
 
 buildPythonPackage rec {
@@ -21,21 +22,13 @@ buildPythonPackage rec {
     hash = "sha256-cWV/Q+LbeIxnQNqyatRWQUF8X+HHlQdc10y9qJ7v3dA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    untokenize
-  ];
+  propagatedBuildInputs = [ untokenize ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "unify"
-  ];
+  pythonImportsCheck = [ "unify" ];
 
   disabledTests = [
     # https://github.com/myint/unify/issues/21
diff --git a/pkgs/development/python-modules/unique-log-filter/default.nix b/pkgs/development/python-modules/unique-log-filter/default.nix
index 2b91ab437adfb..45e86a083dadf 100644
--- a/pkgs/development/python-modules/unique-log-filter/default.nix
+++ b/pkgs/development/python-modules/unique-log-filter/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,20 +21,14 @@ buildPythonPackage rec {
     hash = "sha256-av1pVPDsO2dto5fhBK74jKfVsVY2ChyUE5NNja2B1Qw=";
   };
 
-  build-system = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "unique_log_filter"
-  ];
+  pythonImportsCheck = [ "unique_log_filter" ];
 
   meta = with lib; {
-    description = "A log filter that removes duplicate log messages";
+    description = "Log filter that removes duplicate log messages";
     homepage = "https://github.com/twizmwazin/unique_log_filter";
     changelog = "https://github.com/twizmwazin/unique_log_filter/releases/tag/v${version}";
     license = licenses.bsd2;
diff --git a/pkgs/development/python-modules/unittest-data-provider/default.nix b/pkgs/development/python-modules/unittest-data-provider/default.nix
index 9d60e7ccaeb66..a9deef7e2eab3 100644
--- a/pkgs/development/python-modules/unittest-data-provider/default.nix
+++ b/pkgs/development/python-modules/unittest-data-provider/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -17,6 +18,6 @@ buildPythonPackage rec {
     description = "PHPUnit-like @dataprovider decorator for unittest";
     homepage = "https://github.com/yourlabs/unittest-data-provider";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/unittest-xml-reporting/default.nix b/pkgs/development/python-modules/unittest-xml-reporting/default.nix
index 36768b0fccb77..030ab4337ec70 100644
--- a/pkgs/development/python-modules/unittest-xml-reporting/default.nix
+++ b/pkgs/development/python-modules/unittest-xml-reporting/default.nix
@@ -1,44 +1,48 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, lxml
-, pythonAtLeast
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lxml,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "unittest-xml-reporting";
   version = "3.2.0";
-  format = "setuptools";
+  pyproject = true;
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "xmlrunner";
     repo = "unittest-xml-reporting";
-    rev = version;
+    rev = "refs/tags/${version}";
     hash = "sha256-lOJ/+8CVJUXdIaZLLF5PpPkG0DzlNgo46kRZ1Xy7Ju0=";
   };
 
-  propagatedBuildInputs = [
-    lxml
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ lxml ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = lib.optionals (pythonAtLeast "3.11") [
-    # AttributeError: 'tuple' object has no attribute 'shortDescription'
-    "--deselect=tests/testsuite.py::XMLTestRunnerTestCase::test_basic_unittest_constructs"
-    "--deselect=tests/testsuite.py::XMLTestRunnerTestCase::test_unexpected_success"
-  ];
+  disabledTests =
+    lib.optionals (pythonAtLeast "3.11") [
+      # AttributeError: 'tuple' object has no attribute 'shortDescription'
+      "test_basic_unittest_constructs"
+      "test_unexpected_success"
+    ]
+    ++ lib.optionals (pythonAtLeast "3.12") [ "test_xmlrunner_hold_traceback" ];
 
   pythonImportsCheck = [ "xmlrunner" ];
 
   meta = with lib; {
+    description = "Unittest-based test runner with Ant/JUnit like XML reporting";
     homepage = "https://github.com/xmlrunner/unittest-xml-reporting";
-    description = "unittest-based test runner with Ant/JUnit like XML reporting";
+    changelog = "https://github.com/xmlrunner/unittest-xml-reporting/releases/tag/${version}";
     license = licenses.bsd2;
     maintainers = with maintainers; [ rprospero ];
   };
diff --git a/pkgs/development/python-modules/univers/default.nix b/pkgs/development/python-modules/univers/default.nix
index 3308be6a9b29c..3e0c0d3094f41 100644
--- a/pkgs/development/python-modules/univers/default.nix
+++ b/pkgs/development/python-modules/univers/default.nix
@@ -1,38 +1,39 @@
-{ lib
-, attrs
-, buildPythonPackage
-, commoncode
-, fetchPypi
-, packaging
-, pyparsing
-, pytestCheckHook
-, pythonOlder
-, saneyaml
-, semantic-version
-, semver
-, setuptools-scm
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  commoncode,
+  fetchPypi,
+  packaging,
+  pytestCheckHook,
+  pythonOlder,
+  saneyaml,
+  semantic-version,
+  semver,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "univers";
-  version = "30.11.0";
-  format = "setuptools";
+  version = "30.12.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-xyrg8B+C5xUN8zHLrMbAe/MWjZb8fCL0MIAz2w4B7/U=";
+    hash = "sha256-whuUM3IHnuK5bkXJ8SPrMoO3cRnm0yxKBPxBSfeQIFY=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     attrs
     packaging
-    pyparsing
     semantic-version
     semver
   ];
@@ -45,9 +46,7 @@ buildPythonPackage rec {
 
   dontConfigure = true; # ./configure tries to setup virtualenv and downloads dependencies
 
-  pythonImportsCheck = [
-    "univers"
-  ];
+  pythonImportsCheck = [ "univers" ];
 
   disabledTests = [
     # No value for us
@@ -59,9 +58,16 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Library for parsing version ranges and expressions";
-    homepage = "https://github.com/nexB/univers";
-    changelog = "https://github.com/nexB/univers/blob/v${version}/CHANGELOG.rst";
-    license = with licenses; [ asl20 bsd3 mit ];
-    maintainers = with maintainers; [ armijnhemel sbruder ];
+    homepage = "https://github.com/aboutcode-org/univers";
+    changelog = "https://github.com/aboutcode-org/univers/blob/v${version}/CHANGELOG.rst";
+    license = with licenses; [
+      asl20
+      bsd3
+      mit
+    ];
+    maintainers = with maintainers; [
+      armijnhemel
+      sbruder
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/universal-pathlib/default.nix b/pkgs/development/python-modules/universal-pathlib/default.nix
index 195d6cbfe2a86..007aaab546ad6 100644
--- a/pkgs/development/python-modules/universal-pathlib/default.nix
+++ b/pkgs/development/python-modules/universal-pathlib/default.nix
@@ -1,33 +1,32 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, setuptools
-, setuptools-scm
-, fsspec
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  fsspec,
 }:
 
 buildPythonPackage rec {
   pname = "universal-pathlib";
-  version = "0.2.2";
-  format = "pyproject";
+  version = "0.2.5";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     pname = "universal_pathlib";
     inherit version;
-    hash = "sha256-a8IVVIeSrV2zVTcIscGbr9ni+hZn3JJe1ATJXlKuLxM=";
+    hash = "sha256-6l1PuBeMKrRpz0+kbQzrFsyzeNpG27woqLnB7r3MxlU=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    fsspec
-  ];
+  dependencies = [ fsspec ];
 
   pythonImportsCheck = [ "upath" ];
 
diff --git a/pkgs/development/python-modules/universal-silabs-flasher/default.nix b/pkgs/development/python-modules/universal-silabs-flasher/default.nix
index bfc6bb97aab4e..b09942f1beec4 100644
--- a/pkgs/development/python-modules/universal-silabs-flasher/default.nix
+++ b/pkgs/development/python-modules/universal-silabs-flasher/default.nix
@@ -1,39 +1,39 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonRelaxDepsHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# dependencies
-, async-timeout
-, bellows
-, click
-, coloredlogs
-, crc
-, libgpiod
-, typing-extensions
-, zigpy
+  # dependencies
+  async-timeout,
+  bellows,
+  click,
+  coloredlogs,
+  crc,
+  libgpiod,
+  typing-extensions,
+  zigpy,
 
-# tests
-, pytestCheckHook
-, pytest-asyncio
-, pytest-mock
-, pytest-timeout
+  # tests
+  pytestCheckHook,
+  pytest-asyncio,
+  pytest-mock,
+  pytest-timeout,
 }:
 
 buildPythonPackage rec {
   pname = "universal-silabs-flasher";
-  version = "0.0.19";
+  version = "0.0.22";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "NabuCasa";
     repo = "universal-silabs-flasher";
     rev = "refs/tags/v${version}";
-    hash = "sha256-VoO9B27CNY2Cnt/Q2HsU6DVYkukQMgbIHc6xqfN0P7w=";
+    hash = "sha256-fAz5dhHO5A0pSH6IYcVwNWPxqsNn3urXqnp8GudOrBA=";
   };
 
   postPatch = ''
@@ -42,13 +42,8 @@ buildPythonPackage rec {
       --replace-fail 'dynamic = ["version"]' 'version = "${version}"'
   '';
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   pythonRelaxDeps = [
     # https://github.com/NabuCasa/universal-silabs-flasher/pull/50
@@ -63,9 +58,7 @@ buildPythonPackage rec {
     crc
     typing-extensions
     zigpy
-  ] ++ lib.optionals (stdenv.hostPlatform.isLinux) [
-    libgpiod
-  ];
+  ] ++ lib.optionals (stdenv.hostPlatform.isLinux) [ libgpiod ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/unix-ar/default.nix b/pkgs/development/python-modules/unix-ar/default.nix
index d77c542b3a9e6..04155e74221e7 100644
--- a/pkgs/development/python-modules/unix-ar/default.nix
+++ b/pkgs/development/python-modules/unix-ar/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/unpaddedbase64/default.nix b/pkgs/development/python-modules/unpaddedbase64/default.nix
index b5ff5be20616b..f21eff8ec6f9b 100644
--- a/pkgs/development/python-modules/unpaddedbase64/default.nix
+++ b/pkgs/development/python-modules/unpaddedbase64/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
@@ -16,14 +17,11 @@ buildPythonPackage rec {
     sha256 = "1n6har8pxv0mqb96lanzihp1xf76aa17jw3977drb1fgz947pnmz";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   meta = with lib; {
     homepage = "https://github.com/matrix-org/python-unpaddedbase64";
     description = "Unpadded Base64";
     license = licenses.asl20;
   };
-
 }
diff --git a/pkgs/development/python-modules/unrardll/default.nix b/pkgs/development/python-modules/unrardll/default.nix
index c11cf39546ce8..b539d805f66ef 100644
--- a/pkgs/development/python-modules/unrardll/default.nix
+++ b/pkgs/development/python-modules/unrardll/default.nix
@@ -1,4 +1,10 @@
-{ lib, stdenv, buildPythonPackage, fetchPypi, unrar }:
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  unrar,
+}:
 
 buildPythonPackage rec {
   pname = "unrardll";
@@ -7,14 +13,14 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-4QZ/4nu03iBO+PNpLyPZPF07QpL3iyksb8fcT3V0n3Y=";
+    hash = "sha256-4QZ/4nu03iBO+PNpLyPZPF07QpL3iyksb8fcT3V0n3Y=";
   };
 
   buildInputs = [ unrar ];
 
-  NIX_CFLAGS_LINK = lib.optionalString stdenv.isDarwin "-headerpad_max_install_names";
+  NIX_CFLAGS_LINK = lib.optionalString stdenv.hostPlatform.isDarwin "-headerpad_max_install_names";
 
-  postInstall = lib.optionalString stdenv.isDarwin ''
+  postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
     install_name_tool -change libunrar.so ${unrar}/lib/libunrar.so $out/lib/python*/site-packages/unrardll/unrar.*-darwin.so
     install_name_tool -change libunrar.so ${unrar}/lib/libunrar.so build/lib.*/unrardll/unrar.*-darwin.so
   '';
diff --git a/pkgs/development/python-modules/unrpa/default.nix b/pkgs/development/python-modules/unrpa/default.nix
index f02056506b11b..c64443ff66614 100644
--- a/pkgs/development/python-modules/unrpa/default.nix
+++ b/pkgs/development/python-modules/unrpa/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, uncompyle6
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  uncompyle6,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -29,7 +30,7 @@ buildPythonPackage rec {
   meta = with lib; {
     homepage = "https://github.com/Lattyware/unrpa";
     changelog = "https://github.com/Lattyware/unrpa/releases/tag/${version}";
-    description = "A program to extract files from the RPA archive format";
+    description = "Program to extract files from the RPA archive format";
     mainProgram = "unrpa";
     license = licenses.gpl3;
     maintainers = with maintainers; [ leo60228 ];
diff --git a/pkgs/development/python-modules/unstructured-api-tools/default.nix b/pkgs/development/python-modules/unstructured-api-tools/default.nix
index 6909d95eb26b2..0eae368c30c37 100644
--- a/pkgs/development/python-modules/unstructured-api-tools/default.nix
+++ b/pkgs/development/python-modules/unstructured-api-tools/default.nix
@@ -1,31 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-# propagated build inputs
-, click
-, fastapi
-, jinja2
-, mypy
-, nbconvert
-, python-multipart
-, pandas
-, types-requests
-, types-ujson
-, uvicorn
-, autoflake
-# native check inputs
-, pytestCheckHook
-, black
-, coverage
-, flake8
-, httpx
-, ipython
-, pytest-cov
-, requests
-, requests-toolbelt
-, nbdev
-, pytest-mock
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  # propagated build inputs
+  click,
+  fastapi,
+  jinja2,
+  mypy,
+  nbconvert,
+  python-multipart,
+  pandas,
+  types-requests,
+  types-ujson,
+  uvicorn,
+  autoflake,
+  # native check inputs
+  pytestCheckHook,
+  black,
+  coverage,
+  flake8,
+  httpx,
+  ipython,
+  pytest-cov,
+  requests,
+  requests-toolbelt,
+  nbdev,
+  pytest-mock,
 }:
 let
   version = "0.10.11";
diff --git a/pkgs/development/python-modules/unstructured-inference/default.nix b/pkgs/development/python-modules/unstructured-inference/default.nix
index 82cda0652a518..b619b5b70e454 100644
--- a/pkgs/development/python-modules/unstructured-inference/default.nix
+++ b/pkgs/development/python-modules/unstructured-inference/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-# runtime dependencies
-, layoutparser
-, python-multipart
-, huggingface-hub
-, opencv
-, onnxruntime
-, transformers
-, detectron2
-, paddleocr
-# check inputs
-, pytestCheckHook
-, coverage
-, click
-, httpx
-, mypy
-, pytest-cov
-, pdf2image
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  # runtime dependencies
+  layoutparser,
+  python-multipart,
+  huggingface-hub,
+  opencv,
+  onnxruntime,
+  transformers,
+  detectron2,
+  paddleocr,
+  # check inputs
+  pytestCheckHook,
+  coverage,
+  click,
+  httpx,
+  mypy,
+  pytest-cov,
+  pdf2image,
 }:
 
 buildPythonPackage rec {
@@ -37,19 +38,19 @@ buildPythonPackage rec {
       --replace "opencv-python" "opencv"
   '';
 
-  propagatedBuildInputs = [
-    layoutparser
-    python-multipart
-    huggingface-hub
-    opencv
-    onnxruntime
-    transformers
-    detectron2
-    paddleocr
-    # yolox
-  ]
-    ++ layoutparser.optional-dependencies.layoutmodels
-    ++ layoutparser.optional-dependencies.tesseract;
+  propagatedBuildInputs =
+    [
+      layoutparser
+      python-multipart
+      huggingface-hub
+      opencv
+      onnxruntime
+      transformers
+      detectron2
+      paddleocr
+      # yolox
+    ]
+    ++ layoutparser.optional-dependencies.layoutmodels ++ layoutparser.optional-dependencies.tesseract;
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -94,6 +95,10 @@ buildPythonPackage rec {
     changelog = "https://github.com/Unstructured-IO/unstructured-inference/blob/${src.rev}/CHANGELOG.md";
     license = licenses.asl20;
     maintainers = with maintainers; [ happysalada ];
-    platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" ];
+    platforms = [
+      "x86_64-linux"
+      "x86_64-darwin"
+      "aarch64-darwin"
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/unstructured/default.nix b/pkgs/development/python-modules/unstructured/default.nix
index 3b797ed297d70..afa02b4477398 100644
--- a/pkgs/development/python-modules/unstructured/default.nix
+++ b/pkgs/development/python-modules/unstructured/default.nix
@@ -1,62 +1,63 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-# propagated build inputs
-, chardet
-, filetype
-, lxml
-, msg-parser
-, nltk
-, openpyxl
-, pandas
-, pdf2image
-, pdfminer-six
-, pillow
-, pypandoc
-, python-docx
-, python-pptx
-, python-magic
-, markdown
-, requests
-, tabulate
-, xlrd
-# optional-dependencies
-, langdetect
-, sacremoses
-, sentencepiece
-, torch
-, transformers
-, unstructured-inference
-, s3fs
-, fsspec
-, adlfs
-# , discord-py
-, pygithub
-, python-gitlab
-, praw
-, slack-sdk
-, wikipedia
-, google-api-python-client
-# , gcsfs
-, elasticsearch8
-, jq
-# , dropboxdrivefs
-, atlassian-python-api
-# test dependencies
-, pytestCheckHook
-, black
-, coverage
-, click
-, freezegun
-# , label-studio-sdk
-, mypy
-, pytest-cov
-, pytest-mock
-, vcrpy
-, grpcio
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  # propagated build inputs
+  chardet,
+  filetype,
+  lxml,
+  msg-parser,
+  nltk,
+  openpyxl,
+  pandas,
+  pdf2image,
+  pdfminer-six,
+  pillow,
+  pypandoc,
+  python-docx,
+  python-pptx,
+  python-magic,
+  markdown,
+  requests,
+  tabulate,
+  xlrd,
+  # optional-dependencies
+  langdetect,
+  sacremoses,
+  sentencepiece,
+  torch,
+  transformers,
+  unstructured-inference,
+  s3fs,
+  fsspec,
+  adlfs,
+  # , discord-py
+  pygithub,
+  python-gitlab,
+  praw,
+  slack-sdk,
+  wikipedia,
+  google-api-python-client,
+  # , gcsfs
+  elasticsearch8,
+  jq,
+  # , dropboxdrivefs
+  atlassian-python-api,
+  # test dependencies
+  pytestCheckHook,
+  black,
+  coverage,
+  click,
+  freezegun,
+  # , label-studio-sdk
+  mypy,
+  pytest-cov,
+  pytest-mock,
+  vcrpy,
+  grpcio,
 }:
 let
-  version = "0.13.2";
+  version = "0.15.13";
   optional-dependencies = {
     huggingflace = [
       langdetect
@@ -66,8 +67,14 @@ let
       transformers
     ];
     local-inference = [ unstructured-inference ];
-    s3 = [ s3fs fsspec ];
-    azure = [ adlfs fsspec ];
+    s3 = [
+      s3fs
+      fsspec
+    ];
+    azure = [
+      adlfs
+      fsspec
+    ];
     discord = [ ]; # discord-py
     github = [ pygithub ];
     gitlab = [ python-gitlab ];
@@ -75,9 +82,12 @@ let
     slack = [ slack-sdk ];
     wikipedia = [ wikipedia ];
     google-drive = [ google-api-python-client ];
-    gcs = []; # gcsfs fsspec
-    elasticsearch = [ elasticsearch8 jq ];
-    dropbox = []; # dropboxdrivefs fsspec
+    gcs = [ ]; # gcsfs fsspec
+    elasticsearch = [
+      elasticsearch8
+      jq
+    ];
+    dropbox = [ ]; # dropboxdrivefs fsspec
     confluence = [ atlassian-python-api ];
   };
 in
@@ -90,7 +100,7 @@ buildPythonPackage {
     owner = "Unstructured-IO";
     repo = "unstructured";
     rev = "refs/tags/${version}";
-    hash = "sha256-6pR/tewHWstgIqqD8Jwj+AQutdhXU5aufm6RiEpXr9s=";
+    hash = "sha256-DbOuNh+p+4vsEO6AQUeMq25RTLm5Zn9FyzcTKJedbTM=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/untangle/default.nix b/pkgs/development/python-modules/untangle/default.nix
index 253fd6bf9f9a8..097ad96a7c918 100644
--- a/pkgs/development/python-modules/untangle/default.nix
+++ b/pkgs/development/python-modules/untangle/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchFromGitHub, unittestCheckHook, defusedxml }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  unittestCheckHook,
+  defusedxml,
+}:
 
 buildPythonPackage rec {
   pname = "untangle";
@@ -13,13 +19,14 @@ buildPythonPackage rec {
     hash = "sha256-cJkN8vT5hW5hRuLxr/6udwMO4GVH1pJhAc6qmPO2EEI=";
   };
 
-  propagatedBuildInputs = [
-    defusedxml
-  ];
+  propagatedBuildInputs = [ defusedxml ];
 
   nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [ "-s" "tests" ];
+  unittestFlagsArray = [
+    "-s"
+    "tests"
+  ];
 
   meta = with lib; {
     description = "Convert XML documents into Python objects";
diff --git a/pkgs/development/python-modules/untokenize/default.nix b/pkgs/development/python-modules/untokenize/default.nix
index 079a915cee190..e4f6eea843e1c 100644
--- a/pkgs/development/python-modules/untokenize/default.nix
+++ b/pkgs/development/python-modules/untokenize/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/uonet-request-signer-hebe/default.nix b/pkgs/development/python-modules/uonet-request-signer-hebe/default.nix
index 19d4bba0b9745..3e8fc7fc5f2f6 100644
--- a/pkgs/development/python-modules/uonet-request-signer-hebe/default.nix
+++ b/pkgs/development/python-modules/uonet-request-signer-hebe/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pyopenssl
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pyopenssl,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     sha256 = "fidopnpAt5CXPsLbx+V8wrJCQQ/WIO6AqxpsYLDv8qM=";
   };
 
-  propagatedBuildInputs = [
-    pyopenssl
-  ];
+  propagatedBuildInputs = [ pyopenssl ];
 
   # Source is not tagged
   doCheck = false;
 
-  pythonImportsCheck = [
-    "uonet_request_signer_hebe"
-  ];
+  pythonImportsCheck = [ "uonet_request_signer_hebe" ];
 
   meta = with lib; {
     description = "UONET+ (hebe) request signer for Python";
diff --git a/pkgs/development/python-modules/upass/default.nix b/pkgs/development/python-modules/upass/default.nix
index d8473bd518519..7e82256d39178 100644
--- a/pkgs/development/python-modules/upass/default.nix
+++ b/pkgs/development/python-modules/upass/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyperclip
-, urwid
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyperclip,
+  urwid,
 }:
 
 buildPythonPackage rec {
@@ -30,15 +31,13 @@ buildPythonPackage rec {
     mkdir $HOME/.config
   '';
 
-  pythonImportsCheck = [
-    "upass"
-  ];
+  pythonImportsCheck = [ "upass" ];
 
   meta = with lib; {
     description = "Console UI for pass";
     mainProgram = "upass";
     homepage = "https://github.com/Kwpolska/upass";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/upb-lib/default.nix b/pkgs/development/python-modules/upb-lib/default.nix
index da85053a7d18e..b19508b01754c 100644
--- a/pkgs/development/python-modules/upb-lib/default.nix
+++ b/pkgs/development/python-modules/upb-lib/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyserial-asyncio-fast
-, pytestCheckHook
-, pythonOlder
-, pytz
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyserial-asyncio-fast,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
   pname = "upb-lib";
-  version = "0.5.6";
+  version = "0.5.8";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -19,21 +20,17 @@ buildPythonPackage rec {
     owner = "gwww";
     repo = "upb-lib";
     rev = "refs/tags/${version}";
-    hash = "sha256-e8LYywKA5lNZ4UYFZTwcfePDWB4cTNz38Tiy4xzOxOs=";
+    hash = "sha256-YCJl3cIaNmRQ5+GbIDcAvDhI0R4r2AWG2Ba1zmnfbMA=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     pyserial-asyncio-fast
     pytz
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "upb_lib" ];
 
diff --git a/pkgs/development/python-modules/upcloud-api/default.nix b/pkgs/development/python-modules/upcloud-api/default.nix
index 304feaf069ffe..3ed1ec0028a63 100644
--- a/pkgs/development/python-modules/upcloud-api/default.nix
+++ b/pkgs/development/python-modules/upcloud-api/default.nix
@@ -1,26 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, pytestCheckHook
-, responses
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  requests,
+  pytestCheckHook,
+  responses,
 }:
 
 buildPythonPackage rec {
   pname = "upcloud-api";
-  version = "2.5.1";
-  format = "setuptools";
+  version = "2.6.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "UpCloudLtd";
     repo = "upcloud-python-api";
     rev = "refs/tags/v${version}";
-    hash = "sha256-fMsI0aZ8jA08rrNPm8HmfYz/a3HLUExvvXIeDGPh2e8=";
+    hash = "sha256-RDGRue9hejNPKIP61GtJHMG5rG3CKvJdsYxVrp6I5W0=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ requests ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/update-checker/default.nix b/pkgs/development/python-modules/update-checker/default.nix
index 4a6056a99f7b3..848028378a452 100644
--- a/pkgs/development/python-modules/update-checker/default.nix
+++ b/pkgs/development/python-modules/update-checker/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, requests, isPy27
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  isPy27,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +24,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A python module that will check for package updates";
+    description = "Python module that will check for package updates";
     homepage = "https://github.com/bboe/update_checker";
     license = licenses.bsd2;
   };
diff --git a/pkgs/development/python-modules/update-copyright/default.nix b/pkgs/development/python-modules/update-copyright/default.nix
index 2abb9945ece2c..1ad99b7ff4bd4 100644
--- a/pkgs/development/python-modules/update-copyright/default.nix
+++ b/pkgs/development/python-modules/update-copyright/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+}:
 
 buildPythonPackage rec {
   pname = "update-copyright";
@@ -16,7 +21,7 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "An automatic copyright update tool";
+    description = "Automatic copyright update tool";
     mainProgram = "update-copyright.py";
     homepage = "http://blog.tremily.us/posts/update-copyright";
     license = licenses.gpl3;
diff --git a/pkgs/development/python-modules/update-dotdee/default.nix b/pkgs/development/python-modules/update-dotdee/default.nix
index 7b9f4e3ccc9e3..d6f92a0e40619 100644
--- a/pkgs/development/python-modules/update-dotdee/default.nix
+++ b/pkgs/development/python-modules/update-dotdee/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, coloredlogs
-, executor
-, fetchFromGitHub
-, humanfriendly
-, naturalsort
-, property-manager
-, pytestCheckHook
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  coloredlogs,
+  executor,
+  fetchFromGitHub,
+  humanfriendly,
+  naturalsort,
+  property-manager,
+  pytestCheckHook,
+  pythonOlder,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -34,18 +35,14 @@ buildPythonPackage rec {
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace tox.ini \
       --replace " --cov --showlocals --verbose" ""
   '';
 
-  pythonImportsCheck = [
-    "update_dotdee"
-  ];
+  pythonImportsCheck = [ "update_dotdee" ];
 
   disabledTests = [
     # TypeError: %o format: an integer is required, not str
diff --git a/pkgs/development/python-modules/uplc/default.nix b/pkgs/development/python-modules/uplc/default.nix
index a3aa8d10e7adc..0de44fb056cac 100644
--- a/pkgs/development/python-modules/uplc/default.nix
+++ b/pkgs/development/python-modules/uplc/default.nix
@@ -1,21 +1,21 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, pythonRelaxDepsHook
-# Python deps
-, frozenlist2
-, python-secp256k1-cardano
-, setuptools
-, poetry-core
-, frozendict
-, cbor2
-, rply
-, pycardano
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  # Python deps
+  frozenlist2,
+  python-secp256k1-cardano,
+  setuptools,
+  poetry-core,
+  frozendict,
+  cbor2,
+  rply,
+  pycardano,
 }:
 
 buildPythonPackage rec {
   pname = "uplc";
-  version = "0.6.9";
+  version = "1.0.6";
 
   format = "pyproject";
 
@@ -23,13 +23,9 @@ buildPythonPackage rec {
     owner = "OpShin";
     repo = "uplc";
     rev = version;
-    hash = "sha256-djJMNXijMVzMVzw8NZSe3YFRGyAPqdvr0P374Za5XkU=";
+    hash = "sha256-FQH2GE6ihLcHtEavAYFPr8xsRqnUROtZ8yyIfRbY9CQ=";
   };
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
-
   propagatedBuildInputs = [
     setuptools
     poetry-core
@@ -41,13 +37,11 @@ buildPythonPackage rec {
     python-secp256k1-cardano
   ];
 
-  pythonRelaxDeps = [ "pycardano" "rply" ];
-
   pythonImportsCheck = [ "uplc" ];
 
   meta = with lib; {
     description = "Python implementation of untyped plutus language core";
-    homepage = "https://opshin.dev";
+    homepage = "https://github.com/OpShin/uplc";
     license = licenses.mit;
     maintainers = with maintainers; [ t4ccer ];
     mainProgram = "opshin";
diff --git a/pkgs/development/python-modules/upnpy/default.nix b/pkgs/development/python-modules/upnpy/default.nix
index 62cc708f5cc23..b6677afbd2b2f 100644
--- a/pkgs/development/python-modules/upnpy/default.nix
+++ b/pkgs/development/python-modules/upnpy/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/uproot/default.nix b/pkgs/development/python-modules/uproot/default.nix
index 4fd55870b0f42..e0e666d7ffa7f 100644
--- a/pkgs/development/python-modules/uproot/default.nix
+++ b/pkgs/development/python-modules/uproot/default.nix
@@ -1,25 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, awkward
-, cramjam
-, hatch-vcs
-, hatchling
-, numpy
-, fsspec
-, packaging
-, pandas
-, pytestCheckHook
-, pytest-timeout
-, rangehttpserver
-, scikit-hep-testdata
-, xxhash
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  hatch-vcs,
+  hatchling,
+
+  # dependencies
+  awkward,
+  cramjam,
+  numpy,
+  fsspec,
+  packaging,
+
+  # checks
+  pandas,
+  pytestCheckHook,
+  pytest-timeout,
+  rangehttpserver,
+  scikit-hep-testdata,
+  xxhash,
 }:
 
 buildPythonPackage rec {
   pname = "uproot";
-  version = "5.3.2";
+  version = "5.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -28,20 +35,21 @@ buildPythonPackage rec {
     owner = "scikit-hep";
     repo = "uproot5";
     rev = "refs/tags/v${version}";
-    hash = "sha256-dq362pevqgLx5KwZ19zQ6aOn5NCyiqynPCF7YdI6tkw=";
+    hash = "sha256-iCyGG4y7cnJqHEaqpzFc/LjWiLZw3HArU5hDtEyLgFo=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-vcs
     hatchling
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     awkward
     cramjam
     numpy
     fsspec
     packaging
+    xxhash
   ];
 
   nativeCheckInputs = [
@@ -50,7 +58,6 @@ buildPythonPackage rec {
     pytest-timeout
     rangehttpserver
     scikit-hep-testdata
-    xxhash
   ];
 
   preCheck = ''
@@ -76,6 +83,7 @@ buildPythonPackage rec {
     "test_http_size"
     "test_http_size_port"
     "test_issue_1054_filename_colons"
+    "test_multiple_page_lists"
     "test_no_multipart"
     "test_open_fsspec_github"
     "test_open_fsspec_http"
@@ -83,7 +91,9 @@ buildPythonPackage rec {
     "test_pickle_roundtrip_http"
     "test_split_ranges_if_large_file_in_http"
     # Cyclic dependency with dask-awkward
+    "test_dask_duplicated_keys"
     "test_decompression_executor_for_dask"
+    "test_decompression_threadpool_executor_for_dask"
   ];
 
   disabledTestPaths = [
@@ -91,20 +101,15 @@ buildPythonPackage rec {
     "tests/test_0066_fix_http_fallback_freeze.py"
     "tests/test_0088_read_with_http.py"
     "tests/test_0220_contiguous_byte_ranges_in_http.py"
-
-    # FileNotFoundError: uproot-issue-1043.root
-    "tests/test_1043_const_std_string.py"
   ];
 
-  pythonImportsCheck = [
-    "uproot"
-  ];
+  pythonImportsCheck = [ "uproot" ];
 
-  meta = with lib; {
+  meta = {
     description = "ROOT I/O in pure Python and Numpy";
     homepage = "https://github.com/scikit-hep/uproot5";
     changelog = "https://github.com/scikit-hep/uproot5/releases/tag/v${version}";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ veprbl ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ veprbl ];
   };
 }
diff --git a/pkgs/development/python-modules/uptime-kuma-api/default.nix b/pkgs/development/python-modules/uptime-kuma-api/default.nix
index f1f086c2661b5..7d1e6cb975f6a 100644
--- a/pkgs/development/python-modules/uptime-kuma-api/default.nix
+++ b/pkgs/development/python-modules/uptime-kuma-api/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, packaging
-, python-socketio
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  packaging,
+  python-socketio,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,15 +26,13 @@ buildPythonPackage rec {
     python-socketio.optional-dependencies.client
   ];
 
-  pythonImportsCheck = [
-    "uptime_kuma_api"
-  ];
+  pythonImportsCheck = [ "uptime_kuma_api" ];
 
   # Tests need an uptime-kuma instance to run
   doCheck = false;
 
   meta = with lib; {
-    description = "A Python wrapper for the Uptime Kuma Socket.IO API";
+    description = "Python wrapper for the Uptime Kuma Socket.IO API";
     homepage = "https://github.com/lucasheld/uptime-kuma-api";
     changelog = "https://github.com/lucasheld/uptime-kuma-api/blob/${version}/CHANGELOG.md";
     license = with licenses; [ mit ];
diff --git a/pkgs/development/python-modules/uptime-kuma-monitor/default.nix b/pkgs/development/python-modules/uptime-kuma-monitor/default.nix
index f689942abf93e..dcc901125d661 100644
--- a/pkgs/development/python-modules/uptime-kuma-monitor/default.nix
+++ b/pkgs/development/python-modules/uptime-kuma-monitor/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, requests
-, buildPythonPackage
-, fetchPypi
-, prometheus-client
-, pythonOlder
+{
+  lib,
+  requests,
+  buildPythonPackage,
+  fetchPypi,
+  prometheus-client,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
   # Project has no test
   doCheck = false;
 
-  pythonImportsCheck = [
-    "uptime_kuma_monitor"
-  ];
+  pythonImportsCheck = [ "uptime_kuma_monitor" ];
 
   meta = with lib; {
     description = "Python wrapper around UptimeKuma /metrics endpoint";
diff --git a/pkgs/development/python-modules/uptime/default.nix b/pkgs/development/python-modules/uptime/default.nix
index 7dd3710b81d36..d20bd4dc5506c 100644
--- a/pkgs/development/python-modules/uptime/default.nix
+++ b/pkgs/development/python-modules/uptime/default.nix
@@ -1,23 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "uptime";
   version = "3.0.1";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0wr9jkixprlywz0plyn5p42a5fd31aiwvjrxdvj7r02vfxa04c3w";
+    hash = "sha256-fDACVHdbgHzkbj3LzaMKo7miBLnFenrB557m2+OUKXM=";
   };
 
+  build-system = [ setuptools ];
+
+  # Tests are not shipped
+  doCheck = false;
+
+  pythonImportsCheck = [ "uptime" ];
+
   meta = with lib; {
-    homepage = "https://github.com/Cairnarvon/uptime";
     description = "Cross-platform way to retrieve system uptime and boot time";
+    homepage = "https://github.com/Cairnarvon/uptime";
     license = licenses.bsd2;
     maintainers = with maintainers; [ rob ];
   };
-
 }
diff --git a/pkgs/development/python-modules/uqbar/default.nix b/pkgs/development/python-modules/uqbar/default.nix
index c7c6e8e2eea6a..63eaa24ab4fbf 100644
--- a/pkgs/development/python-modules/uqbar/default.nix
+++ b/pkgs/development/python-modules/uqbar/default.nix
@@ -1,24 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, setuptools
-, sphinx
-, unidecode
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  defusedxml,
+  setuptools,
+  sphinx,
+  typing-extensions,
+  unidecode,
 }:
 
 buildPythonPackage rec {
   pname = "uqbar";
-  version = "0.7.3";
+  version = "0.7.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-9KQmLCsIiHcdiAu4GeEu+wa3lGwEZOO+oHWuhFNosR0=";
+    hash = "sha256-q4p+ki5wA/gYGWnt2tzCiEakk4fBl9P96ONz2ZxlCCg=";
   };
 
   postPatch = ''
@@ -27,40 +30,42 @@ buildPythonPackage rec {
     -e "/--cov/d"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     unidecode
     sphinx
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = [
-    # UnboundLocalError: local variable 'output_path' referenced before assignment
-    "test_01"
-    # AssertionError: assert False
-    "test_sphinx_book_html_cached"
-    # FileNotFoundError: [Errno 2] No such file or directory: 'unflatten'
-    "test_sphinx_style_html"
-    # assert not ["\x1b[91mWARNING: dot command 'dot' cannot be run (needed for
-    # graphviz output), check the graphviz_dot setting\x1b[39;49;00m"]
-    "test_sphinx_style_latex"
-  ] ++ lib.optional (pythonAtLeast "3.11") [
-    # assert not '\x1b[91m/build/uqbar-0.7.0/tests/fake_package/enums.py:docstring
-    "test_sphinx_style"
-  ] ++ lib.optional (pythonAtLeast "3.12") [
-    # https://github.com/josiah-wolf-oberholtzer/uqbar/issues/93
-    "objects.get_vars"
+  checkInputs = [
+    defusedxml
+    typing-extensions
   ];
 
-  pythonImportsCheck = [
-    "uqbar"
-  ];
+  disabledTests =
+    [
+      # UnboundLocalError: local variable 'output_path' referenced before assignment
+      "test_01"
+      # AssertionError: assert False
+      "test_sphinx_book_html_cached"
+      # FileNotFoundError: [Errno 2] No such file or directory: 'unflatten'
+      "test_sphinx_style_html"
+      # assert not ["\x1b[91mWARNING: dot command 'dot' cannot be run (needed for
+      # graphviz output), check the graphviz_dot setting\x1b[39;49;00m"]
+      "test_sphinx_style_latex"
+    ]
+    ++ lib.optional (pythonAtLeast "3.11") [
+      # assert not '\x1b[91m/build/uqbar-0.7.0/tests/fake_package/enums.py:docstring
+      "test_sphinx_style"
+    ]
+    ++ lib.optional (pythonAtLeast "3.12") [
+      # https://github.com/josiah-wolf-oberholtzer/uqbar/issues/93
+      "objects.get_vars"
+    ];
+
+  pythonImportsCheck = [ "uqbar" ];
 
   meta = with lib; {
     description = "Tools for creating Sphinx and Graphviz documentation";
diff --git a/pkgs/development/python-modules/uranium/default.nix b/pkgs/development/python-modules/uranium/default.nix
index 8af65b0cc65d7..3084b3018a0d0 100644
--- a/pkgs/development/python-modules/uranium/default.nix
+++ b/pkgs/development/python-modules/uranium/default.nix
@@ -1,5 +1,19 @@
-{ lib, buildPythonPackage, fetchFromGitHub, python, cmake
-, pyqt5, numpy, scipy, shapely, libarcus, cryptography, doxygen, gettext, pythonOlder }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  cmake,
+  pyqt5,
+  numpy,
+  scipy,
+  shapely,
+  libarcus,
+  cryptography,
+  doxygen,
+  gettext,
+  pythonOlder,
+}:
 
 buildPythonPackage rec {
   version = "4.12.0";
@@ -15,9 +29,22 @@ buildPythonPackage rec {
 
   disabled = pythonOlder "3.5.0";
 
-  buildInputs = [ python gettext ];
-  propagatedBuildInputs = [ pyqt5 numpy scipy shapely libarcus cryptography ];
-  nativeBuildInputs = [ cmake doxygen ];
+  buildInputs = [
+    python
+    gettext
+  ];
+  propagatedBuildInputs = [
+    pyqt5
+    numpy
+    scipy
+    shapely
+    libarcus
+    cryptography
+  ];
+  nativeBuildInputs = [
+    cmake
+    doxygen
+  ];
 
   postPatch = ''
     sed -i 's,/python''${PYTHON_VERSION_MAJOR}/dist-packages,/python''${PYTHON_VERSION_MAJOR}.''${PYTHON_VERSION_MINOR}/site-packages,g' CMakeLists.txt
@@ -28,10 +55,13 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A Python framework for building Desktop applications";
+    description = "Python framework for building Desktop applications";
     homepage = "https://github.com/Ultimaker/Uranium";
     license = licenses.lgpl3Plus;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ abbradar gebner ];
+    maintainers = with maintainers; [
+      abbradar
+      gebner
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/uri-template/default.nix b/pkgs/development/python-modules/uri-template/default.nix
index a403417b10934..27f91bad92c90 100644
--- a/pkgs/development/python-modules/uri-template/default.nix
+++ b/pkgs/development/python-modules/uri-template/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
@@ -30,14 +31,12 @@ buildPythonPackage rec {
     ${python.interpreter} test.py
   '';
 
-  pythonImportsCheck = [
-    "uri_template"
-  ];
+  pythonImportsCheck = [ "uri_template" ];
 
   meta = with lib; {
-    description = "An implementation of RFC 6570 URI Templates";
+    description = "Implementation of RFC 6570 URI Templates";
     homepage = "https://github.com/plinss/uri_template/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/uritemplate/default.nix b/pkgs/development/python-modules/uritemplate/default.nix
index 400d7d54e3265..1d757d4134a76 100644
--- a/pkgs/development/python-modules/uritemplate/default.nix
+++ b/pkgs/development/python-modules/uritemplate/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,23 +19,20 @@ buildPythonPackage rec {
     hash = "sha256-Q0bt/Fw7efaUvM1tYJmjIrvrYo2/LNhu6lWkVs5RJPA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "uritemplate"
-  ];
+  pythonImportsCheck = [ "uritemplate" ];
 
   meta = with lib; {
     description = "Implementation of RFC 6570 URI templates";
     homepage = "https://github.com/python-hyper/uritemplate";
     changelog = "https://github.com/python-hyper/uritemplate/blob/${version}/HISTORY.rst";
-    license = with licenses; [ asl20 bsd3 ];
+    license = with licenses; [
+      asl20
+      bsd3
+    ];
     maintainers = with maintainers; [ matthiasbeyer ];
   };
 }
diff --git a/pkgs/development/python-modules/uritools/default.nix b/pkgs/development/python-modules/uritools/default.nix
index 7975e0f742314..946bb76e40409 100644
--- a/pkgs/development/python-modules/uritools/default.nix
+++ b/pkgs/development/python-modules/uritools/default.nix
@@ -1,24 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "uritools";
-  version = "4.0.2";
+  version = "4.0.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-BN8reH0Ot2IA6DGTgqA1Yvv+R0H9ZsFVBrCNO4IR1XM=";
+    hash = "sha256-7gahgqnISUZM6dX6kXU5qsyO3SpJJNG3qr7uyryuO8I=";
   };
 
-  pythonImportsCheck = [
-    "uritools"
-  ];
+  pythonImportsCheck = [ "uritools" ];
 
   meta = with lib; {
     description = "RFC 3986 compliant, Unicode-aware, scheme-agnostic replacement for urlparse";
diff --git a/pkgs/development/python-modules/url-normalize/default.nix b/pkgs/development/python-modules/url-normalize/default.nix
index b851eccbe26fd..b914c8ae61ebf 100644
--- a/pkgs/development/python-modules/url-normalize/default.nix
+++ b/pkgs/development/python-modules/url-normalize/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, pytest-flakes
-, pytest-mock
-, pytest-socket
-, pytestCheckHook
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  poetry-core,
+  pytest-flakes,
+  pytest-mock,
+  pytest-socket,
+  pytestCheckHook,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -22,13 +23,9 @@ buildPythonPackage rec {
     hash = "sha256-WE3MM9B/voI23taFbLp2FYhl0uxOfuUWsaCTBG1hyiY=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   nativeCheckInputs = [
     pytest-flakes
@@ -51,9 +48,7 @@ buildPythonPackage rec {
     sed -i "/--flakes/d" tox.ini
   '';
 
-  pythonImportsCheck = [
-    "url_normalize"
-  ];
+  pythonImportsCheck = [ "url_normalize" ];
 
   meta = with lib; {
     description = "URL normalization for Python";
diff --git a/pkgs/development/python-modules/urlextract/default.nix b/pkgs/development/python-modules/urlextract/default.nix
index a5701ee651607..d7a605b69d69d 100644
--- a/pkgs/development/python-modules/urlextract/default.nix
+++ b/pkgs/development/python-modules/urlextract/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, dnspython
-, fetchPypi
-, filelock
-, idna
-, platformdirs
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, uritools
+{
+  lib,
+  buildPythonPackage,
+  dnspython,
+  fetchPypi,
+  filelock,
+  idna,
+  platformdirs,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  uritools,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-cFCOArqd83LiXPBkLbNnzs4nPocSzQzngXj8XdfqANs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     filelock
@@ -48,9 +47,7 @@ buildPythonPackage rec {
     "test_dns_cache_reuse"
   ];
 
-  pythonImportsCheck = [
-    "urlextract"
-  ];
+  pythonImportsCheck = [ "urlextract" ];
 
   meta = with lib; {
     description = "Collects and extracts URLs from given text";
diff --git a/pkgs/development/python-modules/urlgrabber/default.nix b/pkgs/development/python-modules/urlgrabber/default.nix
index f991bff5db11f..11d97578bae95 100644
--- a/pkgs/development/python-modules/urlgrabber/default.nix
+++ b/pkgs/development/python-modules/urlgrabber/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, pycurl, six }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pycurl,
+  six,
+}:
 
 buildPythonPackage rec {
   pname = "urlgrabber";
@@ -10,7 +16,10 @@ buildPythonPackage rec {
     sha256 = "075af8afabae6362482d254e5ac3ffa595d1766117b684e53d9c25c2e937e139";
   };
 
-  propagatedBuildInputs = [ pycurl six ];
+  propagatedBuildInputs = [
+    pycurl
+    six
+  ];
 
   meta = with lib; {
     homepage = "http://urlgrabber.baseurl.org";
diff --git a/pkgs/development/python-modules/urllib3/default.nix b/pkgs/development/python-modules/urllib3/default.nix
index 70d8750a84d02..1bffd501e763d 100644
--- a/pkgs/development/python-modules/urllib3/default.nix
+++ b/pkgs/development/python-modules/urllib3/default.nix
@@ -1,88 +1,84 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPyPy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
 
-# build-system
-, hatchling
+  # build-system
+  hatchling,
 
-# optional-dependencies
-, brotli
-, brotlicffi
-, pysocks
+  # optional-dependencies
+  brotli,
+  brotlicffi,
+  pysocks,
 
-# tests
-, backports-zoneinfo
-, pytestCheckHook
-, pytest-timeout
-, pythonOlder
-, tornado
-, trustme
+  # tests
+  backports-zoneinfo,
+  pytestCheckHook,
+  pytest-timeout,
+  pythonOlder,
+  tornado,
+  trustme,
 }:
 
-let self = buildPythonPackage rec {
-  pname = "urllib3";
-  version = "2.2.1";
-  pyproject = true;
+let
+  self = buildPythonPackage rec {
+    pname = "urllib3";
+    version = "2.2.2";
+    pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-0FcIdsYaueUg13bDisu7WwWndtP5/5ilyP1RYqREzxk=";
-  };
+    src = fetchPypi {
+      inherit pname version;
+      hash = "sha256-3VBUhVSaelUoM9peYGNjnQ0XfATyO8OGTkHl3F9hIWg=";
+    };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+    nativeBuildInputs = [ hatchling ];
 
-  passthru.optional-dependencies = {
-    brotli = if isPyPy then [
-      brotlicffi
-    ] else [
-      brotli
-    ];
-    socks = [
-      pysocks
-    ];
-  };
+    passthru.optional-dependencies = {
+      brotli = if isPyPy then [ brotlicffi ] else [ brotli ];
+      socks = [ pysocks ];
+    };
 
-  nativeCheckInputs = [
-    pytest-timeout
-    pytestCheckHook
-    tornado
-    trustme
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    backports-zoneinfo
-  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+    nativeCheckInputs =
+      [
+        pytest-timeout
+        pytestCheckHook
+        tornado
+        trustme
+      ]
+      ++ lib.optionals (pythonOlder "3.9") [ backports-zoneinfo ]
+      ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  # Tests in urllib3 are mostly timeout-based instead of event-based and
-  # are therefore inherently flaky. On your own machine, the tests will
-  # typically build fine, but on a loaded cluster such as Hydra random
-  # timeouts will occur.
-  #
-  # The urllib3 test suite has two different timeouts in their test suite
-  # (see `test/__init__.py`):
-  # - SHORT_TIMEOUT
-  # - LONG_TIMEOUT
-  # When CI is in the env, LONG_TIMEOUT will be significantly increased.
-  # Still, failures can occur and for that reason tests are disabled.
-  doCheck = false;
+    # Tests in urllib3 are mostly timeout-based instead of event-based and
+    # are therefore inherently flaky. On your own machine, the tests will
+    # typically build fine, but on a loaded cluster such as Hydra random
+    # timeouts will occur.
+    #
+    # The urllib3 test suite has two different timeouts in their test suite
+    # (see `test/__init__.py`):
+    # - SHORT_TIMEOUT
+    # - LONG_TIMEOUT
+    # When CI is in the env, LONG_TIMEOUT will be significantly increased.
+    # Still, failures can occur and for that reason tests are disabled.
+    doCheck = false;
 
-  passthru.tests.pytest = self.overridePythonAttrs (_: { doCheck = true; });
+    passthru.tests.pytest = self.overridePythonAttrs (_: {
+      doCheck = true;
+    });
 
-  preCheck = ''
-    export CI # Increases LONG_TIMEOUT
-  '';
+    preCheck = ''
+      export CI # Increases LONG_TIMEOUT
+    '';
 
-  pythonImportsCheck = [
-    "urllib3"
-  ];
+    pythonImportsCheck = [ "urllib3" ];
 
-  meta = with lib; {
-    description = "Powerful, user-friendly HTTP client for Python";
-    homepage = "https://github.com/urllib3/urllib3";
-    changelog = "https://github.com/urllib3/urllib3/blob/${version}/CHANGES.rst";
-    license = licenses.mit;
-    maintainers = with maintainers; [ fab ];
+    meta = with lib; {
+      description = "Powerful, user-friendly HTTP client for Python";
+      homepage = "https://github.com/urllib3/urllib3";
+      changelog = "https://github.com/urllib3/urllib3/blob/${version}/CHANGES.rst";
+      license = licenses.mit;
+      maintainers = with maintainers; [ fab ];
+    };
   };
-};
-in self
+in
+self
diff --git a/pkgs/development/python-modules/urlman/default.nix b/pkgs/development/python-modules/urlman/default.nix
index 8bc7ce028299d..fb6ca4ebb5e95 100644
--- a/pkgs/development/python-modules/urlman/default.nix
+++ b/pkgs/development/python-modules/urlman/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,13 +17,9 @@ buildPythonPackage rec {
     hash = "sha256-p6lRuMHM2xJrlY5LDa0XLCGQPDE39UwCouK6e0U9zJE=";
   };
 
-  pythonImportsCheck = [
-    "urlman"
-  ];
+  pythonImportsCheck = [ "urlman" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Django URL pattern helpers";
diff --git a/pkgs/development/python-modules/urlpy/default.nix b/pkgs/development/python-modules/urlpy/default.nix
index ad793f593969e..fda5519701faa 100644
--- a/pkgs/development/python-modules/urlpy/default.nix
+++ b/pkgs/development/python-modules/urlpy/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, publicsuffix2
-, pytestCheckHook
-, pythonAtLeast
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  publicsuffix2,
+  pytestCheckHook,
+  pythonAtLeast,
 }:
 buildPythonPackage rec {
   pname = "urlpy";
@@ -19,22 +20,16 @@ buildPythonPackage rec {
 
   dontConfigure = true;
 
-  propagatedBuildInputs = [
-    publicsuffix2
-  ];
+  propagatedBuildInputs = [ publicsuffix2 ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = lib.optionals (pythonAtLeast "3.9") [
     # Fails with "AssertionError: assert 'unknown' == ''"
     "test_unknown_protocol"
   ];
 
-  pythonImportsCheck = [
-    "urlpy"
-  ];
+  pythonImportsCheck = [ "urlpy" ];
 
   meta = with lib; {
     description = "Simple URL parsing, canonicalization and equivalence";
diff --git a/pkgs/development/python-modules/urwid-mitmproxy/default.nix b/pkgs/development/python-modules/urwid-mitmproxy/default.nix
deleted file mode 100644
index 60dd32fc6fc39..0000000000000
--- a/pkgs/development/python-modules/urwid-mitmproxy/default.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, glibcLocales
-, pythonOlder
-, unittestCheckHook
-}:
-
-buildPythonPackage rec {
-  pname = "urwid-mitmproxy";
-  version = "2.1.2.1";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.7";
-
-  src = fetchFromGitHub {
-    owner = "mitmproxy";
-    repo = "urwid-mitmproxy";
-    rev = "refs/tags/${version}";
-    hash = "sha256-93AauYWbrG/2smAhbNKGE0twGJZ2u9gBetlXGCpciH8=";
-  };
-
-  pythonImportsCheck = [
-    "urwid"
-  ];
-
-  # Tests which assert on strings don't decode results correctly, see urwid
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Urwid fork used by mitmproxy";
-    homepage = "https://github.com/mitmproxy/urwid-mitmproxy";
-    license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [ fab ];
-  };
-}
diff --git a/pkgs/development/python-modules/urwid-readline/default.nix b/pkgs/development/python-modules/urwid-readline/default.nix
index 3e47f886cdb70..72e17928a5f0d 100644
--- a/pkgs/development/python-modules/urwid-readline/default.nix
+++ b/pkgs/development/python-modules/urwid-readline/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, urwid
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  urwid,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,22 +19,16 @@ buildPythonPackage rec {
     hash = "sha256-ZTg+GZnu7R6Jf2+SIwVo57yHnjwuY92DElTJs8oRErE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    urwid
-  ];
+  propagatedBuildInputs = [ urwid ];
 
   pythonImportsCheck = [ "urwid_readline" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
-    description = "A textbox edit widget for urwid that supports readline shortcuts";
+    description = "Textbox edit widget for urwid that supports readline shortcuts";
     homepage = "https://github.com/rr-/urwid_readline";
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/pkgs/development/python-modules/urwid/default.nix b/pkgs/development/python-modules/urwid/default.nix
index aff9556f04b50..7c2024af44d8f 100644
--- a/pkgs/development/python-modules/urwid/default.nix
+++ b/pkgs/development/python-modules/urwid/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, exceptiongroup
-, fetchFromGitHub
-, glibcLocales
-, pygobject3
-, pyserial
-, pytestCheckHook
-, pythonOlder
-, pyzmq
-, setuptools
-, setuptools-scm
-, tornado
-, trio
-, twisted
-, typing-extensions
-, wcwidth
+{
+  lib,
+  buildPythonPackage,
+  exceptiongroup,
+  fetchFromGitHub,
+  glibcLocales,
+  pygobject3,
+  pyserial,
+  pytestCheckHook,
+  pythonOlder,
+  pyzmq,
+  setuptools,
+  setuptools-scm,
+  tornado,
+  trio,
+  twisted,
+  typing-extensions,
+  wcwidth,
 }:
 
 buildPythonPackage rec {
   pname = "urwid";
-  version = "2.6.11";
+  version = "2.6.15";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -28,46 +29,34 @@ buildPythonPackage rec {
     owner = "urwid";
     repo = "urwid";
     rev = "refs/tags/${version}";
-    hash = "sha256-EArHHsHqr1z+UhdsUCc4IPZa33sSCaR1sDSr7eCGSOM=";
+    hash = "sha256-bBgzhNNYxNZKaSo43I3fMoR+j6XDV6UBNrZfQyZ/f7c=";
   };
 
   postPatch = ''
     sed -i '/addopts =/d' pyproject.toml
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     typing-extensions
     wcwidth
   ];
 
   passthru.optional-dependencies = {
-    glib = [
-      pygobject3
-    ];
-    tornado = [
-      tornado
-    ];
+    glib = [ pygobject3 ];
+    tornado = [ tornado ];
     trio = [
       exceptiongroup
       trio
     ];
-    twisted = [
-      twisted
-    ];
-    zmq = [
-      pyzmq
-    ];
-    serial = [
-      pyserial
-    ];
-    lcd = [
-      pyserial
-    ];
+    twisted = [ twisted ];
+    zmq = [ pyzmq ];
+    serial = [ pyserial ];
+    lcd = [ pyserial ];
   };
 
   nativeCheckInputs = [
@@ -77,25 +66,21 @@ buildPythonPackage rec {
 
   env.LC_ALL = "en_US.UTF8";
 
-  pytestFlagsArray = [
-    "tests"
-  ];
+  pytestFlagsArray = [ "tests" ];
 
   disabledTestPaths = [
     # expect call hangs
     "tests/test_vterm.py"
   ];
 
-  pythonImportsCheck = [
-    "urwid"
-  ];
+  pythonImportsCheck = [ "urwid" ];
 
   meta = with lib; {
-    description = "A full-featured console (xterm et al.) user interface library";
+    description = "Full-featured console (xterm et al.) user interface library";
     changelog = "https://github.com/urwid/urwid/releases/tag/${version}";
     downloadPage = "https://github.com/urwid/urwid";
     homepage = "https://urwid.org/";
     license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/urwidgets/default.nix b/pkgs/development/python-modules/urwidgets/default.nix
index 82e4eee38379e..3f528c40a533b 100644
--- a/pkgs/development/python-modules/urwidgets/default.nix
+++ b/pkgs/development/python-modules/urwidgets/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, urwid
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  urwid,
 }:
 
 buildPythonPackage rec {
   pname = "urwidgets";
-  version = "0.2.0";
+  version = "0.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -17,23 +18,17 @@ buildPythonPackage rec {
     owner = "AnonymouX47";
     repo = "urwidgets";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ultlfNeCGFTqKaMeXu0+NihkN5/6NtMewk33YfIzhu8=";
+    hash = "sha256-RgY7m0smcdUspGkCdzepxruEMDq/mAsVFNjHMLoWAyc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    urwid
-  ];
+  propagatedBuildInputs = [ urwid ];
 
-  pythonImportsCheck = [
-    "urwidgets"
-  ];
+  pythonImportsCheck = [ "urwidgets" ];
 
   meta = with lib; {
-    description = "A collection of widgets for urwid";
+    description = "Collection of widgets for urwid";
     homepage = "https://github.com/AnonymouX47/urwidgets";
     changelog = "https://github.com/AnonymouX47/urwidgets/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/urwidtrees/default.nix b/pkgs/development/python-modules/urwidtrees/default.nix
index f12f91906efaa..c50502c3df549 100644
--- a/pkgs/development/python-modules/urwidtrees/default.nix
+++ b/pkgs/development/python-modules/urwidtrees/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, setuptools
-, urwid
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  setuptools,
+  urwid,
 }:
 
 buildPythonPackage rec {
   pname = "urwidtrees";
-  version  = "1.0.3";
+  version = "1.0.3";
   pyproject = true;
 
   src = fetchFromGitHub {
@@ -21,30 +22,24 @@ buildPythonPackage rec {
   patches = [
     (fetchpatch {
       url = "https://github.com/pazz/urwidtrees/commit/ed39dbc4fc67b0e0249bf108116a88cd18543aa9.patch";
-    hash = "sha256-fA+30d2uVaoNCg4rtoWLNPvrZtq41Co4vcmM80hkURs=";
+      hash = "sha256-fA+30d2uVaoNCg4rtoWLNPvrZtq41Co4vcmM80hkURs=";
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    urwid
-  ];
+  propagatedBuildInputs = [ urwid ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "urwidtrees"
-  ];
+  pythonImportsCheck = [ "urwidtrees" ];
 
   meta = with lib; {
     description = "Tree widgets for urwid";
     homepage = "https://github.com/pazz/urwidtrees";
     changelog = "https://github.com/pazz/urwidtrees/releases/tag/${version}";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/us/default.nix b/pkgs/development/python-modules/us/default.nix
index 6b15bec2684d0..b42c5c8f6aa19 100644
--- a/pkgs/development/python-modules/us/default.nix
+++ b/pkgs/development/python-modules/us/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jellyfish
-, pytestCheckHook
-, pythonOlder
-, pytz
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  jellyfish,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
 }:
 
 buildPythonPackage rec {
@@ -25,21 +26,17 @@ buildPythonPackage rec {
       --replace "jellyfish==" "jellyfish>="
   '';
 
-  propagatedBuildInputs = [
-    jellyfish
-  ];
+  propagatedBuildInputs = [ jellyfish ];
 
   nativeCheckInputs = [
     pytestCheckHook
     pytz
   ];
 
-  pythonImportsCheck = [
-    "us"
-  ];
+  pythonImportsCheck = [ "us" ];
 
   meta = with lib; {
-    description = "A package for easily working with US and state metadata";
+    description = "Package for easily working with US and state metadata";
     mainProgram = "states";
     longDescription = ''
       All US states and territories, postal abbreviations, Associated Press style
@@ -49,6 +46,6 @@ buildPythonPackage rec {
     '';
     homepage = "https://github.com/unitedstates/python-us/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/usb-devices/default.nix b/pkgs/development/python-modules/usb-devices/default.nix
index da4abcd5f8f24..bf86e943e2c76 100644
--- a/pkgs/development/python-modules/usb-devices/default.nix
+++ b/pkgs/development/python-modules/usb-devices/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,17 +26,11 @@ buildPythonPackage rec {
       --replace " --cov=usb_devices --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "usb_devices"
-  ];
+  pythonImportsCheck = [ "usb_devices" ];
 
   meta = with lib; {
     description = "Library for for mapping, describing, and resetting USB devices";
diff --git a/pkgs/development/python-modules/usb-monitor/default.nix b/pkgs/development/python-modules/usb-monitor/default.nix
new file mode 100644
index 0000000000000..4f945341eb52e
--- /dev/null
+++ b/pkgs/development/python-modules/usb-monitor/default.nix
@@ -0,0 +1,32 @@
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  pyudev,
+}:
+
+buildPythonPackage rec {
+  pname = "usb-monitor";
+  version = "1.21";
+
+  src = fetchPypi {
+    inherit version;
+    pname = "usb_monitor";
+    hash = "sha256-M+BUmbNxQWcULFECexTnp55EZiJ6y3bYCEtSwqKldAk=";
+  };
+
+  dependencies = [ pyudev ];
+
+  # has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "usbmonitor" ];
+
+  meta = {
+    description = "Cross-platform library for USB device monitoring";
+    homepage = "https://github.com/Eric-Canas/USBMonitor";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sifmelcara ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/python-modules/usbtmc/default.nix b/pkgs/development/python-modules/usbtmc/default.nix
index 62d7b47dea91f..9220c3acde9e2 100644
--- a/pkgs/development/python-modules/usbtmc/default.nix
+++ b/pkgs/development/python-modules/usbtmc/default.nix
@@ -1,4 +1,9 @@
-{ lib, fetchFromGitHub, buildPythonPackage, pyusb }:
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pyusb,
+}:
 
 buildPythonPackage rec {
   pname = "usbtmc";
diff --git a/pkgs/development/python-modules/user-agents/default.nix b/pkgs/development/python-modules/user-agents/default.nix
index af61caba82c48..1da16e9c68642 100644
--- a/pkgs/development/python-modules/user-agents/default.nix
+++ b/pkgs/development/python-modules/user-agents/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchFromGitHub, ua-parser }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ua-parser,
+}:
 
 buildPythonPackage rec {
   pname = "user-agents";
@@ -16,7 +21,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ ua-parser ];
 
   meta = with lib; {
-    description = "A Python library to identify devices by parsing user agent strings";
+    description = "Python library to identify devices by parsing user agent strings";
     homepage = "https://github.com/selwin/python-user-agents";
     license = licenses.mit;
     platforms = platforms.unix;
diff --git a/pkgs/development/python-modules/userpath/default.nix b/pkgs/development/python-modules/userpath/default.nix
index 17783bef05c00..20c387615c489 100644
--- a/pkgs/development/python-modules/userpath/default.nix
+++ b/pkgs/development/python-modules/userpath/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatchling
-, click
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  click,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,27 +19,24 @@ buildPythonPackage rec {
     hash = "sha256-bFIojasGklfMgxhG0V1IEzUiRV1Gd+5pqXgfEdvv2BU=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
-  propagatedBuildInputs = [
-    click
-  ];
+  propagatedBuildInputs = [ click ];
 
   # Test suite is difficult to emulate in sandbox due to shell manipulation
   doCheck = false;
 
-  pythonImportsCheck = [
-    "userpath"
-  ];
+  pythonImportsCheck = [ "userpath" ];
 
   meta = with lib; {
     description = "Cross-platform tool for adding locations to the user PATH";
     mainProgram = "userpath";
     homepage = "https://github.com/ofek/userpath";
     changelog = "https://github.com/ofek/userpath/releases/tag/v${version}";
-    license = with licenses; [ asl20 mit ];
+    license = with licenses; [
+      asl20
+      mit
+    ];
     maintainers = with maintainers; [ yshym ];
   };
 }
diff --git a/pkgs/development/python-modules/ush/default.nix b/pkgs/development/python-modules/ush/default.nix
index db66feca8d949..3b4cd7a0bd233 100644
--- a/pkgs/development/python-modules/ush/default.nix
+++ b/pkgs/development/python-modules/ush/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -31,6 +32,6 @@ buildPythonPackage rec {
     description = "Powerful API for invoking with external commands";
     homepage = "https://github.com/tarruda/python-ush";
     license = licenses.mit;
-    maintainers = with maintainers; [ ckie ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/usort/default.nix b/pkgs/development/python-modules/usort/default.nix
index 68dbe6a9b7d58..bfb650c91c0b6 100644
--- a/pkgs/development/python-modules/usort/default.nix
+++ b/pkgs/development/python-modules/usort/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, attrs
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, hatch-vcs
-, hatchling
-, libcst
-, moreorless
-, pythonOlder
-, stdlibs
-, toml
-, trailrunner
-, unittestCheckHook
-, volatile
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  hatch-vcs,
+  hatchling,
+  libcst,
+  moreorless,
+  pythonOlder,
+  stdlibs,
+  toml,
+  trailrunner,
+  unittestCheckHook,
+  volatile,
 }:
 
 buildPythonPackage rec {
   pname = "usort";
-  version = "1.0.7";
+  version = "1.0.8";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -26,7 +27,7 @@ buildPythonPackage rec {
     owner = "facebook";
     repo = "usort";
     rev = "refs/tags/v${version}";
-    hash = "sha256-emnrghdsUs+VfvYiJExG13SKQNrXAEtGNAJQLScADnw=";
+    hash = "sha256-iezq2K+Rw0djyOoFm7tguw/vkkDSyrPZIfZPmaZvFpM=";
   };
 
   nativeBuildInputs = [
@@ -49,9 +50,7 @@ buildPythonPackage rec {
     volatile
   ];
 
-  pythonImportsCheck = [
-    "usort"
-  ];
+  pythonImportsCheck = [ "usort" ];
 
   meta = with lib; {
     description = "Safe, minimal import sorting for Python projects";
diff --git a/pkgs/development/python-modules/utils/default.nix b/pkgs/development/python-modules/utils/default.nix
index 36b399bed4778..e76fa6e6bab06 100644
--- a/pkgs/development/python-modules/utils/default.nix
+++ b/pkgs/development/python-modules/utils/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/uvcclient/default.nix b/pkgs/development/python-modules/uvcclient/default.nix
index 6be1dc84065c5..707a464d7e4f0 100644
--- a/pkgs/development/python-modules/uvcclient/default.nix
+++ b/pkgs/development/python-modules/uvcclient/default.nix
@@ -1,32 +1,37 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, pynose, mock }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  mock,
+  pytest-cov-stub,
+  pytest-xdist,
+  pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "uvcclient";
-  version = "0.11.0";
-  format = "setuptools";
+  version = "0.12.1";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "kk7ds";
     repo = pname;
-    rev = "58e7a53815482b7778481f81cde95f53a60bb6f6";
-    sha256 = "0k8aswrk1n08w6pi6dg0zdzsmk23cafihkrss9ywg3i85w7q43x2";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-ilZTRoSuoJMWlyRfvY/PpTBbr+d6wx+T3cVyW3ZkXlY=";
   };
 
-  postPatch = ''
-    substituteInPlace tests/test_camera.py \
-      --replace-fail "assertEquals" "assertEqual"
-  '';
+  build-system = [ poetry-core ];
 
   nativeCheckInputs = [
-    pynose
     mock
+    pytest-cov-stub
+    pytest-xdist
+    pytestCheckHook
   ];
 
-  checkPhase = ''
-    nosetests
-  '';
-
   meta = with lib; {
+    changelog = "https://github.com/uilibs/uvcclient/blob/${src.rev}/CHANGELOG.md";
     description = "Client for Ubiquiti's Unifi Camera NVR";
     mainProgram = "uvc";
     homepage = "https://github.com/kk7ds/uvcclient";
diff --git a/pkgs/development/python-modules/uvicorn/default.nix b/pkgs/development/python-modules/uvicorn/default.nix
index 6201bb6157266..48bd9e9ef85ec 100644
--- a/pkgs/development/python-modules/uvicorn/default.nix
+++ b/pkgs/development/python-modules/uvicorn/default.nix
@@ -1,32 +1,33 @@
-{ lib
-, buildPythonPackage
-, callPackage
-, fetchFromGitHub
-, click
-, h11
-, httptools
-, python-dotenv
-, pyyaml
-, typing-extensions
-, uvloop
-, watchfiles
-, websockets
-, hatchling
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  callPackage,
+  fetchFromGitHub,
+  click,
+  h11,
+  httptools,
+  python-dotenv,
+  pyyaml,
+  typing-extensions,
+  uvloop,
+  watchfiles,
+  websockets,
+  hatchling,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "uvicorn";
-  version = "0.27.1";
+  version = "0.29.0";
   disabled = pythonOlder "3.8";
 
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "encode";
-    repo = pname;
+    repo = "uvicorn";
     rev = "refs/tags/${version}";
-    hash = "sha256-p0iPQE66RJfd811x6cnv7m3yvD/L9v7evBXlaIQSE0M=";
+    hash = "sha256-D0FdZxaDB+9N/7p73GF8qw0UwbXTQrKc1WOgy9UltxA=";
   };
 
   outputs = [
@@ -34,14 +35,12 @@ buildPythonPackage rec {
     "testsout"
   ];
 
-  nativeBuildInputs = [ hatchling ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     click
     h11
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ typing-extensions ];
 
   passthru.optional-dependencies.standard = [
     httptools
@@ -57,9 +56,7 @@ buildPythonPackage rec {
     cp -R tests $testsout/tests
   '';
 
-  pythonImportsCheck = [
-    "uvicorn"
-  ];
+  pythonImportsCheck = [ "uvicorn" ];
 
   # check in passthru.tests.pytest to escape infinite recursion with httpx/httpcore
   doCheck = false;
@@ -71,7 +68,7 @@ buildPythonPackage rec {
   meta = with lib; {
     homepage = "https://www.uvicorn.org/";
     changelog = "https://github.com/encode/uvicorn/blob/${src.rev}/CHANGELOG.md";
-    description = "The lightning-fast ASGI server";
+    description = "Lightning-fast ASGI server";
     mainProgram = "uvicorn";
     license = licenses.bsd3;
     maintainers = with maintainers; [ wd15 ];
diff --git a/pkgs/development/python-modules/uvicorn/tests.nix b/pkgs/development/python-modules/uvicorn/tests.nix
index 805e8df1c710c..b5d7cee2f7c5e 100644
--- a/pkgs/development/python-modules/uvicorn/tests.nix
+++ b/pkgs/development/python-modules/uvicorn/tests.nix
@@ -1,13 +1,14 @@
-{ stdenv
-, buildPythonPackage
-, a2wsgi
-, uvicorn
-, httpx
-, pytestCheckHook
-, pytest-mock
-, trustme
-, watchgod
-, wsproto
+{
+  stdenv,
+  buildPythonPackage,
+  a2wsgi,
+  uvicorn,
+  httpx,
+  pytestCheckHook,
+  pytest-mock,
+  trustme,
+  watchgod,
+  wsproto,
 }:
 
 buildPythonPackage {
@@ -31,10 +32,9 @@ buildPythonPackage {
     a2wsgi
     watchgod
     wsproto
-  ]
-  ++ uvicorn.optional-dependencies.standard;
+  ] ++ uvicorn.optional-dependencies.standard;
 
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   __darwinAllowLocalNetworking = true;
 
@@ -45,4 +45,3 @@ buildPythonPackage {
     "test_multiple_server_header"
   ];
 }
-
diff --git a/pkgs/development/python-modules/uvloop/default.nix b/pkgs/development/python-modules/uvloop/default.nix
index 7aa551086869d..f5d0e08cbb288 100644
--- a/pkgs/development/python-modules/uvloop/default.nix
+++ b/pkgs/development/python-modules/uvloop/default.nix
@@ -1,85 +1,88 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-
-# build-system
-, cython_0
-, setuptools
-
-# native dependencies
-, libuv
-, CoreServices
-, ApplicationServices
-
-# tests
-, aiohttp
-, psutil
-, pyopenssl
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+
+  # build-system
+  cython_0,
+  setuptools,
+
+  # native dependencies
+  libuv,
+  CoreServices,
+  ApplicationServices,
+
+  # tests
+  psutil,
+  pyopenssl,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "uvloop";
-  version = "0.19.0";
+  version = "0.20.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Akb0/Rvyv3AuBrDUXukWd+5cMSQvOaq06m/gxRrt0P0=";
+    hash = "sha256-RgPKcUp1T8jZsZfjJdslsuoEU4Xoo60F00Y95yX99Gk=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     cython_0
     setuptools
   ];
 
   env.LIBUV_CONFIGURE_HOST = stdenv.hostPlatform.config;
 
-  buildInputs = [
-    libuv
-  ] ++ lib.optionals stdenv.isDarwin [
-    CoreServices
-    ApplicationServices
-  ];
+  buildInputs =
+    [ libuv ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      CoreServices
+      ApplicationServices
+    ];
 
   nativeCheckInputs = [
-    aiohttp
     pyopenssl
     pytestCheckHook
     psutil
   ];
 
-  pytestFlagsArray = [
-    # Tries to run "env", but fails to find it, even with coreutils provided
-    "--deselect=tests/test_process.py::Test_UV_Process::test_process_env_2"
-    "--deselect=tests/test_process.py::Test_AIO_Process::test_process_env_2"
-    # AssertionError: b'' != b'out\n'
-    "--deselect=tests/test_process.py::Test_UV_Process::test_process_streams_redirect"
-    "--deselect=tests/test_process.py::Test_AIO_Process::test_process_streams_redirect"
-  ] ++ lib.optionals (stdenv.isDarwin) [
-    # Segmentation fault
-    "--deselect=tests/test_fs_event.py::Test_UV_FS_EVENT_RENAME::test_fs_event_rename"
-    # Broken: https://github.com/NixOS/nixpkgs/issues/160904
-    "--deselect=tests/test_context.py::Test_UV_Context::test_create_ssl_server_manual_connection_lost"
-  ];
+  pytestFlagsArray =
+    [
+      # Tries to run "env", but fails to find it, even with coreutils provided
+      "--deselect=tests/test_process.py::Test_UV_Process::test_process_env_2"
+      "--deselect=tests/test_process.py::Test_AIO_Process::test_process_env_2"
+      # AssertionError: b'' != b'out\n'
+      "--deselect=tests/test_process.py::Test_UV_Process::test_process_streams_redirect"
+      "--deselect=tests/test_process.py::Test_AIO_Process::test_process_streams_redirect"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin) [
+      # Segmentation fault
+      "--deselect=tests/test_fs_event.py::Test_UV_FS_EVENT_RENAME::test_fs_event_rename"
+      # Broken: https://github.com/NixOS/nixpkgs/issues/160904
+      "--deselect=tests/test_context.py::Test_UV_Context::test_create_ssl_server_manual_connection_lost"
+    ];
 
   disabledTestPaths = [
     # ignore code linting tests
     "tests/test_sourcecode.py"
   ];
 
-  preCheck = ''
-    # force using installed/compiled uvloop
-    rm -rf uvloop
-  '' + lib.optionalString stdenv.isDarwin ''
-    # Work around "OSError: AF_UNIX path too long"
-    # https://github.com/MagicStack/uvloop/issues/463
-    export TMPDIR="/tmp"
-  '';
+  preCheck =
+    ''
+      # force using installed/compiled uvloop
+      rm -rf uvloop
+    ''
+    + lib.optionalString stdenv.hostPlatform.isDarwin ''
+      # Work around "OSError: AF_UNIX path too long"
+      # https://github.com/MagicStack/uvloop/issues/463
+      export TMPDIR="/tmp"
+    '';
 
   pythonImportsCheck = [
     "uvloop"
@@ -94,6 +97,6 @@ buildPythonPackage rec {
     description = "Fast implementation of asyncio event loop on top of libuv";
     homepage = "https://github.com/MagicStack/uvloop";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/uxsim/add-qt-plugin-path-to-env.patch b/pkgs/development/python-modules/uxsim/add-qt-plugin-path-to-env.patch
new file mode 100644
index 0000000000000..a496456caa487
--- /dev/null
+++ b/pkgs/development/python-modules/uxsim/add-qt-plugin-path-to-env.patch
@@ -0,0 +1,11 @@
+diff --git a/uxsim/__init__.py b/uxsim/__init__.py
+index cf661c5..540e6f8 100644
+--- a/uxsim/__init__.py
++++ b/uxsim/__init__.py
+@@ -1,3 +1,6 @@
++import os
++if not os.getenv("QT_PLUGIN_PATH"):
++    os.environ["QT_PLUGIN_PATH"] = "$NIX_QT_PLUGIN_PATH"
+ from .uxsim import *
+ from .utils import *
+ from .analyzer import *
diff --git a/pkgs/development/python-modules/uxsim/default.nix b/pkgs/development/python-modules/uxsim/default.nix
new file mode 100644
index 0000000000000..15d10eb5fe626
--- /dev/null
+++ b/pkgs/development/python-modules/uxsim/default.nix
@@ -0,0 +1,64 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  qt5,
+  python,
+  dill,
+  matplotlib,
+  numpy,
+  pandas,
+  pillow,
+  pyqt5,
+  scipy,
+  tqdm,
+}:
+buildPythonPackage rec {
+  pname = "uxsim";
+  version = "1.6.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "toruseo";
+    repo = "UXsim";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-+nJsP/XAp6F7LZQI559rI3OCFnMTXJ4eFKEEJyEDHDg=";
+  };
+
+  patches = [ ./add-qt-plugin-path-to-env.patch ];
+
+  nativeBuildInputs = [
+    setuptools
+    wheel
+  ];
+
+  propagatedBuildInputs = [
+    dill
+    matplotlib
+    numpy
+    pandas
+    pillow
+    pyqt5
+    scipy
+    tqdm
+  ];
+
+  pythonImportsCheck = [ "uxsim" ];
+
+  # QT_PLUGIN_PATH is required to be set for the program to produce its images
+  # our patch sets it to $NIX_QT_PLUGIN_PATH if QT_PLUGIN_PATH is not set
+  # and here we replace this string with the actual path to qt plugins
+  postInstall = ''
+    substituteInPlace $out/${python.sitePackages}/uxsim/__init__.py \
+      --replace-fail '$NIX_QT_PLUGIN_PATH' '${qt5.qtbase.bin}/${qt5.qtbase.qtPluginPrefix}'
+  '';
+
+  meta = with lib; {
+    description = "Vehicular traffic flow simulator in road network, written in pure Python";
+    homepage = "https://github.com/toruseo/UXsim";
+    license = licenses.mit;
+    maintainers = with maintainers; [ vinnymeller ];
+  };
+}
diff --git a/pkgs/development/python-modules/vaa/default.nix b/pkgs/development/python-modules/vaa/default.nix
index 54c2520ee6654..a94ca49b9131e 100644
--- a/pkgs/development/python-modules/vaa/default.nix
+++ b/pkgs/development/python-modules/vaa/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, pytestCheckHook
-, cerberus
-, django
-, djangorestframework
-, marshmallow
-, pyschemes
-, wtforms
-, email-validator
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  pytestCheckHook,
+  cerberus,
+  django,
+  djangorestframework,
+  marshmallow,
+  pyschemes,
+  wtforms,
+  email-validator,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
       --replace "build-backend = \"flit.buildapi\"" "build-backend = \"flit_core.buildapi\""
   '';
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/vacuum-map-parser-base/default.nix b/pkgs/development/python-modules/vacuum-map-parser-base/default.nix
index e27ea9d8b6f07..0eb545df0b2a9 100644
--- a/pkgs/development/python-modules/vacuum-map-parser-base/default.nix
+++ b/pkgs/development/python-modules/vacuum-map-parser-base/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, pillow
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  pillow,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/vacuum-map-parser-roborock/default.nix b/pkgs/development/python-modules/vacuum-map-parser-roborock/default.nix
index 68683c1d76903..7346d779c4c22 100644
--- a/pkgs/development/python-modules/vacuum-map-parser-roborock/default.nix
+++ b/pkgs/development/python-modules/vacuum-map-parser-roborock/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, pillow
-, vacuum-map-parser-base
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  pillow,
+  vacuum-map-parser-base,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/validator-collection/default.nix b/pkgs/development/python-modules/validator-collection/default.nix
index 8625956d77546..fbec2841fcdb7 100644
--- a/pkgs/development/python-modules/validator-collection/default.nix
+++ b/pkgs/development/python-modules/validator-collection/default.nix
@@ -3,7 +3,6 @@
   buildPythonPackage,
   fetchFromGitHub,
   setuptools,
-  wheel,
   alabaster,
   attrs,
   babel,
@@ -135,6 +134,14 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "validator_collection" ];
 
+  disabledTests = [
+    # Issues with fake filesystem /var/data
+    "test_writeable"
+    "test_executable"
+    "test_readable"
+    "test_is_readable"
+  ];
+
   meta = with lib; {
     description = "Python library of 60+ commonly-used validator functions";
     homepage = "https://github.com/insightindustry/validator-collection/";
diff --git a/pkgs/development/python-modules/validators/default.nix b/pkgs/development/python-modules/validators/default.nix
index 8e29effda9a24..1664916710d5b 100644
--- a/pkgs/development/python-modules/validators/default.nix
+++ b/pkgs/development/python-modules/validators/default.nix
@@ -1,15 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  eth-hash,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "validators";
-  version = "0.22.0";
-  format = "pyproject";
+  version = "0.33.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -17,26 +19,24 @@ buildPythonPackage rec {
     owner = "python-validators";
     repo = "validators";
     rev = "refs/tags/${version}";
-    hash = "sha256-Qu6Tu9uIluT1KBJYkFjDFt9AWN2Kez3uCYDQknXqYrU=";
+    hash = "sha256-eLujcm2MD1mPjROrBTg9TfU9wts16Jgb+ouNXFHsFZ0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  optional-dependencies = {
+    crypto-eth-addresses = [ eth-hash ] ++ eth-hash.optional-dependencies.pycryptodome;
+  };
+
+  nativeCheckInputs = [ pytestCheckHook ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
-  pythonImportsCheck = [
-    "validators"
-  ];
+  pythonImportsCheck = [ "validators" ];
 
   meta = with lib; {
     description = "Python Data Validation for Humans";
     homepage = "https://github.com/python-validators/validators";
     changelog = "https://github.com/python-validators/validators/blob/${version}/CHANGES.md";
     license = licenses.mit;
-    maintainers = [ ];
+    maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/validobj/default.nix b/pkgs/development/python-modules/validobj/default.nix
index 4eba3276a9cf2..65076a08843da 100644
--- a/pkgs/development/python-modules/validobj/default.nix
+++ b/pkgs/development/python-modules/validobj/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flit
-, hypothesis
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  flit,
+  hypothesis,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -13,12 +14,15 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-uwP2Mu10AiDWzlPMRH2+0CMSnibTB8KBY8QZNf+icNA=";
+    hash = "sha256-uwP2Mu10AiDWzlPMRH2+0CMSnibTB8KBY8QZNf+icNA=";
   };
 
   nativeBuildInputs = [ flit ];
 
-  nativeCheckInputs = [ hypothesis pytestCheckHook ];
+  nativeCheckInputs = [
+    hypothesis
+    pytestCheckHook
+  ];
 
   pythonImportsCheck = [ "validobj" ];
 
diff --git a/pkgs/development/python-modules/validphys2/default.nix b/pkgs/development/python-modules/validphys2/default.nix
deleted file mode 100644
index 38debb91be11b..0000000000000
--- a/pkgs/development/python-modules/validphys2/default.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ lib
-, buildPythonPackage
-, lhapdf
-, nnpdf
-, prompt-toolkit
-, reportengine
-, requests
-, seaborn
-, validobj
-}:
-
-buildPythonPackage rec {
-  pname = "validphys2";
-  version = "4.0";
-  format = "setuptools";
-
-  inherit (nnpdf) src;
-
-  prePatch = ''
-    cd validphys2
-  '';
-
-  postPatch = ''
-    substituteInPlace src/validphys/version.py \
-      --replace '= __give_git()' '= "'$version'"'
-  '';
-
-  propagatedBuildInputs = [
-    lhapdf
-    nnpdf
-    prompt-toolkit
-    reportengine
-    requests
-    seaborn
-    validobj
-  ];
-
-  doCheck = false; # no tests
-  pythonImportsCheck = [ "validphys" ];
-
-  meta = with lib; {
-    description = "NNPDF analysis framework";
-    homepage = "https://data.nnpdf.science/validphys-docs/guide.html";
-    inherit (nnpdf.meta) license;
-    maintainers = with maintainers; [ veprbl ];
-  };
-}
diff --git a/pkgs/development/python-modules/vallox-websocket-api/default.nix b/pkgs/development/python-modules/vallox-websocket-api/default.nix
index a27a512a448f3..9d0d63e1ca7ca 100644
--- a/pkgs/development/python-modules/vallox-websocket-api/default.nix
+++ b/pkgs/development/python-modules/vallox-websocket-api/default.nix
@@ -1,19 +1,19 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, pythonOlder
-, pythonRelaxDepsHook
-, fetchFromGitHub
-, setuptools
-, construct
-, websockets
-, pytest-asyncio
-, pytestCheckHook
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  construct,
+  websockets,
+  pytest-asyncio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "vallox-websocket-api";
-  version = "5.2.0";
+  version = "5.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -22,17 +22,14 @@ buildPythonPackage rec {
     owner = "yozik04";
     repo = "vallox_websocket_api";
     rev = "refs/tags/${version}";
-    hash = "sha256-qq58ZSrKVQ00rtXMe4L9xfz0QB+UpjGOhPo1srPYIY4=";
+    hash = "sha256-jJ+FFDU4w1vdCqErz6ksJDvjFcalSAwaH+G77BNI5/E=";
   };
 
   nativeBuildInputs = [
     setuptools
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "websockets"
-  ];
+  pythonRelaxDeps = [ "websockets" ];
 
   propagatedBuildInputs = [
     aiohttp
diff --git a/pkgs/development/python-modules/vapoursynth/default.nix b/pkgs/development/python-modules/vapoursynth/default.nix
index 2043fb2d4a588..1fb1d4be03efe 100644
--- a/pkgs/development/python-modules/vapoursynth/default.nix
+++ b/pkgs/development/python-modules/vapoursynth/default.nix
@@ -1,4 +1,10 @@
-{ vapoursynth, cython, buildPythonPackage, unittestCheckHook, python }:
+{
+  vapoursynth,
+  cython,
+  buildPythonPackage,
+  unittestCheckHook,
+  python,
+}:
 
 buildPythonPackage {
   pname = "vapoursynth";
@@ -6,27 +12,23 @@ buildPythonPackage {
 
   inherit (vapoursynth) version src;
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
-  buildInputs = [
-    vapoursynth
-  ];
+  buildInputs = [ vapoursynth ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [ "-s" "$src/test" "-p" "'*test.py'" ];
+  unittestFlagsArray = [
+    "-s"
+    "$src/test"
+    "-p"
+    "'*test.py'"
+  ];
 
   passthru = {
-    withPlugins = plugins:
-      python.pkgs.vapoursynth.override {
-        vapoursynth = vapoursynth.withPlugins plugins;
-      };
+    withPlugins =
+      plugins: python.pkgs.vapoursynth.override { vapoursynth = vapoursynth.withPlugins plugins; };
   };
 
   inherit (vapoursynth) meta;
 }
-
diff --git a/pkgs/development/python-modules/variants/default.nix b/pkgs/development/python-modules/variants/default.nix
index 8379034af9e5b..5aa3c89afd1bc 100644
--- a/pkgs/development/python-modules/variants/default.nix
+++ b/pkgs/development/python-modules/variants/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -19,18 +20,14 @@ buildPythonPackage rec {
     hash = "sha256-UR91tM90g8J+TYbZrM8rUxcmeQDBZtF2Nr7u0RiSm5A=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   nativeCheckInputs = [
     pytestCheckHook
     six
   ];
 
-  pythonImportsCheck = [
-    "variants"
-  ];
+  pythonImportsCheck = [ "variants" ];
 
   meta = with lib; {
     description = "Library providing syntactic sugar for creating variant forms of a canonical function";
diff --git a/pkgs/development/python-modules/varint/default.nix b/pkgs/development/python-modules/varint/default.nix
index dcc24c8de7029..4430fd84f3182 100644
--- a/pkgs/development/python-modules/varint/default.nix
+++ b/pkgs/development/python-modules/varint/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
 }:
 buildPythonPackage rec {
   pname = "varint";
@@ -8,7 +9,7 @@ buildPythonPackage rec {
   format = "setuptools";
 
   src = fetchPypi {
-    inherit pname version ;
+    inherit pname version;
     sha256 = "a6ecc02377ac5ee9d65a6a8ad45c9ff1dac8ccee19400a5950fb51d594214ca5";
   };
 
@@ -18,7 +19,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "varint" ];
 
   meta = with lib; {
-    description = "A basic varint implementation in python";
+    description = "Basic varint implementation in python";
     homepage = "https://github.com/fmoo/python-varint";
     license = licenses.mit;
     maintainers = with maintainers; [ rakesh4g ];
diff --git a/pkgs/development/python-modules/vat-moss/default.nix b/pkgs/development/python-modules/vat-moss/default.nix
index 1bf0879d34275..a3fba68a65c0c 100644
--- a/pkgs/development/python-modules/vat-moss/default.nix
+++ b/pkgs/development/python-modules/vat-moss/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,17 +26,11 @@ buildPythonPackage rec {
     })
   ];
 
-  pythonImportsCheck = [
-    "vat_moss"
-  ];
+  pythonImportsCheck = [ "vat_moss" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = [
-    "test_fetch"
-  ];
+  disabledTests = [ "test_fetch" ];
 
   disabledTestPaths = [
     # network access
@@ -43,7 +38,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A Python library for dealing with VAT MOSS and Norway VAT on digital services. Includes VAT ID validation, rate calculation based on place of supply, exchange rate and currency tools for invoices";
+    description = "Python library for dealing with VAT MOSS and Norway VAT on digital services. Includes VAT ID validation, rate calculation based on place of supply, exchange rate and currency tools for invoices";
     homepage = "https://github.com/raphaelm/vat_moss-python";
     changelog = "https://github.com/raphaelm/vat_moss-python/blob/${src.rev}/changelog.md";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/vcard/default.nix b/pkgs/development/python-modules/vcard/default.nix
index 1c207387ea852..11d8c496a7067 100644
--- a/pkgs/development/python-modules/vcard/default.nix
+++ b/pkgs/development/python-modules/vcard/default.nix
@@ -1,15 +1,18 @@
-{ buildPythonPackage
-, fetchFromGitLab
-, lib
-, pytestCheckHook
-, python-dateutil
-, pythonAtLeast
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitLab,
+  pytestCheckHook,
+  python-dateutil,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
 }:
+
 buildPythonPackage rec {
   pname = "vcard";
-  version = "0.15.4";
-  format = "setuptools";
+  version = "0.16.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.8" || pythonAtLeast "3.12";
 
@@ -17,23 +20,27 @@ buildPythonPackage rec {
     owner = "engmark";
     repo = "vcard";
     rev = "refs/tags/v${version}";
-    hash = "sha256-7GNq6PoWZgwhhpxhWOkUEpqckeSfzocex1ZGN9CTJyo=";
+    hash = "sha256-cz1WF8LQsyJwcVKMSWmFb6OB/JWyfc2FgcOT3jJ45Cg=";
   };
 
-  propagatedBuildInputs = [ python-dateutil ];
+  pythonRelaxDeps = [ "python-dateutil" ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [ python-dateutil ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "vcard" ];
 
   meta = {
-    homepage = "https://gitlab.com/engmark/vcard";
     description = "vCard validator, class and utility functions";
     longDescription = ''
       This program can be used for strict validation and parsing of vCards. It currently supports vCard 3.0 (RFC 2426).
     '';
+    homepage = "https://gitlab.com/engmark/vcard";
     license = lib.licenses.agpl3Plus;
     mainProgram = "vcard";
-    maintainers = [ lib.maintainers.l0b0 ];
+    maintainers = with lib.maintainers; [ l0b0 ];
   };
 }
diff --git a/pkgs/development/python-modules/vcrpy/default.nix b/pkgs/development/python-modules/vcrpy/default.nix
index c60d3310cda73..20d4e7b46359a 100644
--- a/pkgs/development/python-modules/vcrpy/default.nix
+++ b/pkgs/development/python-modules/vcrpy/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest-httpbin
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, six
-, yarl
-, wrapt
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest-httpbin,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  six,
+  yarl,
+  wrapt,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTestPaths = [
-    "tests/integration"
-  ];
+  disabledTestPaths = [ "tests/integration" ];
 
   disabledTests = [
     "TestVCRConnection"
@@ -45,15 +44,13 @@ buildPythonPackage rec {
     "test_testcase_playback"
   ];
 
-  pythonImportsCheck = [
-    "vcr"
-  ];
+  pythonImportsCheck = [ "vcr" ];
 
   meta = with lib; {
     description = "Automatically mock your HTTP interactions to simplify and speed up testing";
     homepage = "https://github.com/kevin1024/vcrpy";
     changelog = "https://github.com/kevin1024/vcrpy/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/vcver/default.nix b/pkgs/development/python-modules/vcver/default.nix
index 56afec9127da0..5dcbab7dc6d9c 100644
--- a/pkgs/development/python-modules/vcver/default.nix
+++ b/pkgs/development/python-modules/vcver/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, packaging
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  packaging,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     sha256 = "1cvgs70jf7ki78338zaglaw2dkvyndmx15ybd6k4zqwwsfgk490b";
   };
 
-  propagatedBuildInputs = [
-    packaging
-  ];
+  propagatedBuildInputs = [ packaging ];
 
   # circular dependency on test tool uranium https://pypi.org/project/uranium/
   doCheck = false;
diff --git a/pkgs/development/python-modules/vcversioner/default.nix b/pkgs/development/python-modules/vcversioner/default.nix
index f3f64015e2a70..25d569b23cf5c 100644
--- a/pkgs/development/python-modules/vcversioner/default.nix
+++ b/pkgs/development/python-modules/vcversioner/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "vcversioner";
diff --git a/pkgs/development/python-modules/vdf/default.nix b/pkgs/development/python-modules/vdf/default.nix
index d473ded6c24ae..28f08948fce1d 100644
--- a/pkgs/development/python-modules/vdf/default.nix
+++ b/pkgs/development/python-modules/vdf/default.nix
@@ -1,8 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  mock,
+  pytestCheckHook,
+  nix-update-script,
 }:
 
 buildPythonPackage rec {
@@ -12,14 +15,30 @@ buildPythonPackage rec {
 
   src = fetchFromGitHub {
     owner = "ValvePython";
-    repo = pname;
-    rev = "v${version}";
+    repo = "vdf";
+    rev = "refs/tags/v${version}";
     hash = "sha256-6ozglzZZNKDtADkHwxX2Zsnkh6BE8WbcRcC9HkTTgPU=";
   };
 
-  nativeCheckInputs = [ mock pytestCheckHook ];
+  patches = [
+    # Support appinfo.vdf v29 (required by protontricks 1.12.0)
+    (fetchpatch2 {
+      url = "https://github.com/Matoking/vdf/commit/981cad270c2558aeb8eccaf42cfcf9fabbbed199.patch";
+      hash = "sha256-kLAbbB0WHjxq4rokLoGTPx43BU44EshteR59Ey9JnXo=";
+    })
+  ];
+
+  nativeCheckInputs = [
+    mock
+    pytestCheckHook
+  ];
+
   pythonImportsCheck = [ "vdf" ];
 
+  # Use nix-update-script instead of the default python updater
+  # The python updater requires GitHub releases, but vdf only uses tags
+  passthru.updateScript = nix-update-script { };
+
   meta = with lib; {
     description = "Library for working with Valve's VDF text format";
     homepage = "https://github.com/ValvePython/vdf";
diff --git a/pkgs/development/python-modules/vdirsyncer/default.nix b/pkgs/development/python-modules/vdirsyncer/default.nix
index b417245498979..7851df4a29712 100644
--- a/pkgs/development/python-modules/vdirsyncer/default.nix
+++ b/pkgs/development/python-modules/vdirsyncer/default.nix
@@ -1,28 +1,28 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, click
-, click-log
-, click-threading
-, requests-toolbelt
-, requests
-, atomicwrites
-, hypothesis
-, pytestCheckHook
-, pytest-subtesthack
-, setuptools
-, setuptools-scm
-, wheel
-, aiostream
-, aiohttp-oauthlib
-, aiohttp
-, pytest-asyncio
-, trustme
-, aioresponses
-, vdirsyncer
-, testers
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  click,
+  click-log,
+  click-threading,
+  requests-toolbelt,
+  requests,
+  atomicwrites,
+  hypothesis,
+  pytestCheckHook,
+  pytest-subtesthack,
+  setuptools,
+  setuptools-scm,
+  wheel,
+  aiostream,
+  aiohttp-oauthlib,
+  aiohttp,
+  pytest-asyncio,
+  trustme,
+  aioresponses,
+  vdirsyncer,
+  testers,
 }:
 
 buildPythonPackage rec {
@@ -45,12 +45,9 @@ buildPythonPackage rec {
     setuptools
     setuptools-scm
     wheel
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "aiostream"
-  ];
+  pythonRelaxDeps = [ "aiostream" ];
 
   propagatedBuildInputs = [
     atomicwrites
diff --git a/pkgs/development/python-modules/vector/default.nix b/pkgs/development/python-modules/vector/default.nix
index 7edad1b6321a3..cf1ed3878e36e 100644
--- a/pkgs/development/python-modules/vector/default.nix
+++ b/pkgs/development/python-modules/vector/default.nix
@@ -1,59 +1,83 @@
-{ lib
-, awkward
-, buildPythonPackage
-, fetchPypi
-, hatch-vcs
-, hatchling
-, numba
-, numpy
-, notebook
-, packaging
-, papermill
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+
+  # build-system
+  hatch-vcs,
+  hatchling,
+
+  # dependencies
+  numpy,
+  packaging,
+
+  # checks
+  awkward,
+  dask-awkward,
+  notebook,
+  numba,
+  papermill,
+  pytestCheckHook,
+  sympy,
+
+  stdenv,
 }:
 
 buildPythonPackage rec {
   pname = "vector";
-  version = "1.3.1";
-  format = "pyproject";
+  version = "1.5.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-GpQhDCGl04020Po2wa+5LChXuh0JyCSw1LhhXVH08uU=";
+  src = fetchFromGitHub {
+    owner = "scikit-hep";
+    repo = "vector";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-bTCcuJosoR0/n6QiJuCIeE9oPab9RKAbUXXA+sAkX48=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-vcs
     hatchling
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
     packaging
   ];
 
-  checkInputs = [
+  nativeCheckInputs = [
     awkward
+    dask-awkward
     notebook
     numba
     papermill
     pytestCheckHook
+    sympy
   ];
 
-  pythonImportsCheck = [
-    "vector"
-  ];
+  pythonImportsCheck = [ "vector" ];
 
   __darwinAllowLocalNetworking = true;
 
-  meta = with lib; {
+  disabledTests =
+    [
+      # AssertionError (unclear why)
+      "test_rhophi_eta_tau"
+      "test_xy_eta_tau"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) [
+      # AssertionError: assert 2.1073424255447017e-08 == 0.0
+      "test_issue_463"
+    ];
+
+  meta = {
     description = "Library for 2D, 3D, and Lorentz vectors, especially arrays of vectors, to solve common physics problems in a NumPy-like way";
     homepage = "https://github.com/scikit-hep/vector";
     changelog = "https://github.com/scikit-hep/vector/releases/tag/v${version}";
-    license = with licenses; [ bsd3 ];
-    maintainers = with maintainers; [ veprbl ];
+    license = with lib.licenses; [ bsd3 ];
+    maintainers = with lib.maintainers; [ veprbl ];
   };
 }
diff --git a/pkgs/development/python-modules/vega-datasets/default.nix b/pkgs/development/python-modules/vega-datasets/default.nix
index e0c9133767fc2..b7de5f6c1b655 100644
--- a/pkgs/development/python-modules/vega-datasets/default.nix
+++ b/pkgs/development/python-modules/vega-datasets/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pandas
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pandas,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,28 +18,24 @@ buildPythonPackage rec {
     hash = "sha256-nb6YNCCOjsMqtElw3zFd6RAoYeTNoT2OFDqreoDZP8A=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [ pandas ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "--doctest-modules"
-  ];
-
-  pythonImportsCheck = [
-    "vega_datasets"
-  ];
-
-  meta = with lib; let
-    tag = removeSuffix ".0" "v${version}";
-  in {
-    description = "A Python package for offline access to vega datasets";
-    homepage = "https://github.com/altair-viz/vega_datasets";
-    changelog = "https://github.com/altair-viz/vega_datasets/blob/${tag}/CHANGES.md";
-    license = licenses.mit;
-  };
+  pytestFlagsArray = [ "--doctest-modules" ];
+
+  pythonImportsCheck = [ "vega_datasets" ];
+
+  meta =
+    let
+      tag = lib.removeSuffix ".0" "v${version}";
+    in
+    {
+      description = "Python package for offline access to vega datasets";
+      homepage = "https://github.com/altair-viz/vega_datasets";
+      changelog = "https://github.com/altair-viz/vega_datasets/blob/${tag}/CHANGES.md";
+      license = lib.licenses.mit;
+    };
 }
diff --git a/pkgs/development/python-modules/vega/default.nix b/pkgs/development/python-modules/vega/default.nix
index 556d06d7d3935..d7fbe2cabaa2f 100644
--- a/pkgs/development/python-modules/vega/default.nix
+++ b/pkgs/development/python-modules/vega/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, pythonOlder
-, pythonRelaxDepsHook
-, altair
-, ipytablewidgets
-, ipywidgets
-, jupyter
-, jupyter-core
-, jupyterlab
-, pandas
-, poetry-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchpatch,
+  fetchPypi,
+  pythonOlder,
+  altair,
+  ipytablewidgets,
+  ipywidgets,
+  jupyter,
+  jupyter-core,
+  jupyterlab,
+  pandas,
+  poetry-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -38,12 +38,9 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "pandas"
-  ];
+  pythonRelaxDeps = [ "pandas" ];
 
   propagatedBuildInputs = [
     ipytablewidgets
@@ -53,12 +50,8 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    widget = [
-      ipywidgets
-    ];
-    jupyterlab = [
-      jupyterlab
-    ];
+    widget = [ ipywidgets ];
+    jupyterlab = [ jupyterlab ];
   };
 
   nativeCheckInputs = [
@@ -74,7 +67,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "vega" ];
 
   meta = with lib; {
-    description = "An IPython/Jupyter widget for Vega and Vega-Lite";
+    description = "IPython/Jupyter widget for Vega and Vega-Lite";
     longDescription = ''
       To use this you have to enter a nix-shell with vega. Then run:
 
diff --git a/pkgs/development/python-modules/vehicle/default.nix b/pkgs/development/python-modules/vehicle/default.nix
index f09e88842bee4..ba1f1d30fbbe8 100644
--- a/pkgs/development/python-modules/vehicle/default.nix
+++ b/pkgs/development/python-modules/vehicle/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, mashumaro
-, orjson
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, syrupy
-, yarl
+{
+  lib,
+  aiohttp,
+  aresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mashumaro,
+  orjson,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  syrupy,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "vehicle";
-  version = "2.2.1";
+  version = "2.2.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.11";
@@ -24,7 +25,7 @@ buildPythonPackage rec {
     owner = "frenck";
     repo = "python-vehicle";
     rev = "refs/tags/v${version}";
-    hash = "sha256-mu30v4iZoOYfQZc1P45UZaor6hf+i+gOvGcVGcQYzTo=";
+    hash = "sha256-MPK5Aim/kGXLMOapttkp5ygl8gIlHv0675sBBf6kyAA=";
   };
 
   postPatch = ''
@@ -34,9 +35,7 @@ buildPythonPackage rec {
       --replace "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -52,9 +51,7 @@ buildPythonPackage rec {
     syrupy
   ];
 
-  pythonImportsCheck = [
-    "vehicle"
-  ];
+  pythonImportsCheck = [ "vehicle" ];
 
   meta = with lib; {
     description = "Python client providing RDW vehicle information";
diff --git a/pkgs/development/python-modules/velbus-aio/default.nix b/pkgs/development/python-modules/velbus-aio/default.nix
index f754c828dea3d..2536e44bd9600 100644
--- a/pkgs/development/python-modules/velbus-aio/default.nix
+++ b/pkgs/development/python-modules/velbus-aio/default.nix
@@ -1,18 +1,20 @@
 {
   lib,
+  aiofile,
   backoff,
   buildPythonPackage,
   fetchFromGitHub,
   pythonOlder,
   pyserial,
-  pyserial-asyncio,
+  pyserial-asyncio-fast,
+  pytest-asyncio,
   pytestCheckHook,
   setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "velbus-aio";
-  version = "2024.4.1";
+  version = "2024.7.6";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -21,19 +23,27 @@ buildPythonPackage rec {
     owner = "Cereal2nd";
     repo = "velbus-aio";
     rev = "refs/tags/${version}";
-    hash = "sha256-rskWnH5zFvBuNL5eJ8O4D6htRP/XtFcq1xH8ZXzT1I4=";
+    hash = "sha256-+mdIJNWnrw8DHVEes+/X04eTILBt7zgTgNLG80XJlnI=";
     fetchSubmodules = true;
   };
 
   build-system = [ setuptools ];
 
   dependencies = [
+    aiofile
     backoff
     pyserial
-    pyserial-asyncio
+    pyserial-asyncio-fast
   ];
 
-  nativeCheckInputs = [ pytestCheckHook ];
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    export HOME=$(mktemp -d)
+  '';
 
   pythonImportsCheck = [ "velbusaio" ];
 
diff --git a/pkgs/development/python-modules/venstarcolortouch/default.nix b/pkgs/development/python-modules/venstarcolortouch/default.nix
index 04d632b0a185e..5d8dbb07e0334 100644
--- a/pkgs/development/python-modules/venstarcolortouch/default.nix
+++ b/pkgs/development/python-modules/venstarcolortouch/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -14,16 +15,12 @@ buildPythonPackage rec {
     hash = "sha256-QjcoF46GrBH7ExGQno8xDgtOSGNxhAP+NycJb22hL+E=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "venstarcolortouch"
-  ];
+  pythonImportsCheck = [ "venstarcolortouch" ];
 
   meta = with lib; {
     description = "Python interface for Venstar ColorTouch thermostats Resources";
diff --git a/pkgs/development/python-modules/venusian/default.nix b/pkgs/development/python-modules/venusian/default.nix
index b992f518c5fbe..7dd1e7a818f9e 100644
--- a/pkgs/development/python-modules/venusian/default.nix
+++ b/pkgs/development/python-modules/venusian/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, pytestCheckHook
-, pytest-cov
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  pytestCheckHook,
+  pytest-cov,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-63LNym8xOaFdyA+cldPBD4pUoLqIHu744uxbQtPuOpU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -33,7 +32,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "A library for deferring decorator actions";
+    description = "Library for deferring decorator actions";
     homepage = "https://pylonsproject.org/";
     license = licenses.bsd0;
     maintainers = with maintainers; [ domenkozar ];
diff --git a/pkgs/development/python-modules/verboselogs/default.nix b/pkgs/development/python-modules/verboselogs/default.nix
index 45f747b936ee0..63393b593fc6e 100644
--- a/pkgs/development/python-modules/verboselogs/default.nix
+++ b/pkgs/development/python-modules/verboselogs/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     mock
   ];
 
-  pythonImportsCheck = [
-    "verboselogs"
-  ];
+  pythonImportsCheck = [ "verboselogs" ];
 
   disabledTests = [
     # Do not run pylint plugin test
diff --git a/pkgs/development/python-modules/verlib2/default.nix b/pkgs/development/python-modules/verlib2/default.nix
index 41c1d95eff25a..178568e87b009 100644
--- a/pkgs/development/python-modules/verlib2/default.nix
+++ b/pkgs/development/python-modules/verlib2/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, versioningit
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  versioningit,
 }:
 
 buildPythonPackage rec {
@@ -29,7 +30,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "verlib2" ];
 
   meta = with lib; {
-    description = "A standalone variant of packaging.version, without anything else";
+    description = "Standalone variant of packaging.version, without anything else";
     homepage = "https://pypi.org/project/verlib2/";
     license = licenses.bsd2;
     maintainers = with maintainers; [ doronbehar ];
diff --git a/pkgs/development/python-modules/versioneer/default.nix b/pkgs/development/python-modules/versioneer/default.nix
index 6bd7384c9890c..d98aa5ab71d1b 100644
--- a/pkgs/development/python-modules/versioneer/default.nix
+++ b/pkgs/development/python-modules/versioneer/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, tomli
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  tomli,
 }:
 
 buildPythonPackage rec {
@@ -20,24 +21,16 @@ buildPythonPackage rec {
     hash = "sha256-3b7Wfhd24Vym5XCeN/M1832Q1VzvlWi3quTRaZrID2s=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  nativeBuildInputs = [ setuptools ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   passthru.optional-dependencies = {
-    toml = lib.optionals (pythonOlder "3.11") [
-      tomli
-    ];
+    toml = lib.optionals (pythonOlder "3.11") [ tomli ];
   };
 
   # Couldn't get tests to work because, for instance, they used virtualenv and pip
   doCheck = false;
 
-  pythonImportsCheck = [
-    "versioneer"
-  ];
+  pythonImportsCheck = [ "versioneer" ];
 
   meta = with lib; {
     description = "Version-string management for VCS-controlled trees";
diff --git a/pkgs/development/python-modules/versionfinder/default.nix b/pkgs/development/python-modules/versionfinder/default.nix
index 1930b14edad68..2672fc20f99ef 100644
--- a/pkgs/development/python-modules/versionfinder/default.nix
+++ b/pkgs/development/python-modules/versionfinder/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, backoff
-, buildPythonPackage
-, fetchFromGitHub
-, gitpython
-, pip
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  lib,
+  backoff,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gitpython,
+  pip,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -44,9 +45,7 @@ buildPythonPackage rec {
     "TestFindPipInfo"
   ];
 
-  pythonImportsCheck = [
-    "versionfinder"
-  ];
+  pythonImportsCheck = [ "versionfinder" ];
 
   meta = with lib; {
     description = "Find the version of another package, whether installed via pip, setuptools or git";
diff --git a/pkgs/development/python-modules/versioningit/default.nix b/pkgs/development/python-modules/versioningit/default.nix
index a58f2d6133aa1..9abbf8bba33bd 100644
--- a/pkgs/development/python-modules/versioningit/default.nix
+++ b/pkgs/development/python-modules/versioningit/default.nix
@@ -1,56 +1,47 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, importlib-metadata
-, packaging
-, tomli
-, pytestCheckHook
-, build
-, hatchling
-, pydantic
-, pytest-mock
-, setuptools
-, git
-, mercurial
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  importlib-metadata,
+  packaging,
+  tomli,
+  pytestCheckHook,
+  build,
+  hatchling,
+  pydantic,
+  pytest-cov-stub,
+  pytest-mock,
+  setuptools,
+  git,
+  mercurial,
 }:
 
 buildPythonPackage rec {
   pname = "versioningit";
-  version = "3.0.0";
+  version = "3.1.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-TjzkemQk2FCunlXhsTSgIOn8vLiVM48QfytcUdNMnBs=";
+    hash = "sha256-Tbg+2Z9WsH2DlAvuNEXKRsoSDRO2swTNtftE5apO3sA=";
   };
 
-  postPatch = ''
-    substituteInPlace tox.ini \
-      --replace "--cov=versioningit" "" \
-      --replace "--cov-config=tox.ini" "" \
-      --replace "--no-cov-on-fail" ""
-  '';
+  nativeBuildInputs = [ hatchling ];
 
-  nativeBuildInputs = [
-    hatchling
-  ];
-
-  propagatedBuildInputs = [
-    packaging
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  propagatedBuildInputs =
+    [ packaging ]
+    ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ]
+    ++ lib.optionals (pythonOlder "3.11") [ tomli ];
 
   nativeCheckInputs = [
     pytestCheckHook
     build
     hatchling
     pydantic
+    pytest-cov-stub
     pytest-mock
     setuptools
     git
@@ -62,16 +53,14 @@ buildPythonPackage rec {
     "test_editable_mode"
   ];
 
-  pythonImportsCheck = [
-    "versioningit"
-  ];
+  pythonImportsCheck = [ "versioningit" ];
 
   meta = with lib; {
     description = "setuptools plugin for determining package version from VCS";
     mainProgram = "versioningit";
     homepage = "https://github.com/jwodder/versioningit";
     changelog = "https://versioningit.readthedocs.io/en/latest/changelog.html";
-    license     = licenses.mit;
+    license = licenses.mit;
     maintainers = with maintainers; [ DeeUnderscore ];
   };
 }
diff --git a/pkgs/development/python-modules/versiontag/default.nix b/pkgs/development/python-modules/versiontag/default.nix
index 76024a9e8795a..4dbb69bd781f2 100644
--- a/pkgs/development/python-modules/versiontag/default.nix
+++ b/pkgs/development/python-modules/versiontag/default.nix
@@ -1,9 +1,15 @@
-{ lib, buildPythonPackage, fetchFromGitHub, git }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  git,
+}:
 
 buildPythonPackage rec {
   pname = "versiontag";
   version = "1.2.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "thelabnyc";
@@ -14,9 +20,11 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "get_version(pypi=True)" '"${version}"'
+      --replace-fail "get_version(pypi=True)" '"${version}"'
   '';
 
+  build-system = [ setuptools ];
+
   nativeCheckInputs = [ git ];
 
   pythonImportsCheck = [ "versiontag" ];
diff --git a/pkgs/development/python-modules/versiontools/default.nix b/pkgs/development/python-modules/versiontools/default.nix
index 3f7afae09fd79..d2e3d84727f14 100644
--- a/pkgs/development/python-modules/versiontools/default.nix
+++ b/pkgs/development/python-modules/versiontools/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
 }:
 
 buildPythonPackage rec {
@@ -21,5 +22,4 @@ buildPythonPackage rec {
     description = "Smart replacement for plain tuple used in __version__";
     license = licenses.lgpl2;
   };
-
 }
diff --git a/pkgs/development/python-modules/verspec/default.nix b/pkgs/development/python-modules/verspec/default.nix
index d8bd972a99638..2da64ec5f653a 100644
--- a/pkgs/development/python-modules/verspec/default.nix
+++ b/pkgs/development/python-modules/verspec/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pretend
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pretend,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -15,7 +16,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-xFBMppeyBWzbS/pxIUYfWg6BgJJVtBwD3aS6gjY3wB4=";
+    hash = "sha256-xFBMppeyBWzbS/pxIUYfWg6BgJJVtBwD3aS6gjY3wB4=";
   };
 
   nativeCheckInputs = [
@@ -28,15 +29,16 @@ buildPythonPackage rec {
     "test/test_specifiers.py"
   ];
 
-  pythonImportsCheck = [
-    "verspec"
-  ];
+  pythonImportsCheck = [ "verspec" ];
 
   meta = with lib; {
     description = "Flexible version handling";
     homepage = "https://github.com/jimporter/verspec";
     changelog = "https://github.com/jimporter/averspec/releases/tag/v${version}";
-    license = with licenses; [ bsd2 /* and */ asl20 ];
-    maintainers = with maintainers; [ ];
+    license = with licenses; [
+      bsd2 # and
+      asl20
+    ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/vertica-python/default.nix b/pkgs/development/python-modules/vertica-python/default.nix
index 8ea7ef738de0c..19a8b8ba0df7d 100644
--- a/pkgs/development/python-modules/vertica-python/default.nix
+++ b/pkgs/development/python-modules/vertica-python/default.nix
@@ -1,29 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, future
-, mock
-, parameterized
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  parameterized,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "vertica-python";
-  version = "1.3.8";
-  format = "setuptools";
+  version = "1.4.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-5SuJT8Mu/4MnAmTWb9TL5b0f0Hug2n70X5BhZME2vrw=";
+    hash = "sha256-VCB4ri/t7mlK3tsE2Bxu3Cd7h+10QDApQhB9hqC81EU=";
   };
 
-  propagatedBuildInputs = [
-    future
+  build-system = [ setuptools ];
+
+  dependencies = [
     python-dateutil
     six
   ];
@@ -39,9 +41,7 @@ buildPythonPackage rec {
     "vertica_python/tests/integration_tests"
   ];
 
-  pythonImportsCheck = [
-    "vertica_python"
-  ];
+  pythonImportsCheck = [ "vertica_python" ];
 
   meta = with lib; {
     description = "Native Python client for Vertica database";
diff --git a/pkgs/development/python-modules/veryprettytable/default.nix b/pkgs/development/python-modules/veryprettytable/default.nix
index 7d87c67376467..01ee6b6930cc3 100644
--- a/pkgs/development/python-modules/veryprettytable/default.nix
+++ b/pkgs/development/python-modules/veryprettytable/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, termcolor
-, colorama
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  termcolor,
+  colorama,
 }:
 
 buildPythonPackage rec {
@@ -15,12 +16,14 @@ buildPythonPackage rec {
     sha256 = "1k1rifz8x6qcicmx2is9vgxcj0qb2f5pvzrp7zhmvbmci3yack3f";
   };
 
-  propagatedBuildInputs = [ termcolor colorama ];
+  propagatedBuildInputs = [
+    termcolor
+    colorama
+  ];
 
   meta = with lib; {
-    description = "A simple Python library for easily displaying tabular data in a visually appealing ASCII table format";
+    description = "Simple Python library for easily displaying tabular data in a visually appealing ASCII table format";
     homepage = "https://github.com/smeggingsmegger/VeryPrettyTable";
     license = licenses.free;
   };
-
 }
diff --git a/pkgs/development/python-modules/vfblib/default.nix b/pkgs/development/python-modules/vfblib/default.nix
new file mode 100644
index 0000000000000..c21ed7733ead5
--- /dev/null
+++ b/pkgs/development/python-modules/vfblib/default.nix
@@ -0,0 +1,49 @@
+{
+  lib,
+  fetchFromGitHub,
+  gitUpdater,
+  buildPythonPackage,
+  pytestCheckHook,
+  setuptools,
+  fonttools,
+  typing-extensions,
+  ufonormalizer,
+  ufolib2,
+  defcon,
+}:
+
+buildPythonPackage rec {
+  pname = "vfblib";
+  version = "0.7.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "LucasFonts";
+    repo = "vfbLib";
+    rev = "v${version}";
+    hash = "sha256-p+uoSB3LIEi1Zvm8HgsOJcRXngZWXj3BwIlxqIBfmB4=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    fonttools
+    typing-extensions
+    ufonormalizer
+    ufolib2
+    defcon
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "vfbLib" ];
+
+  passthru.updateScript = gitUpdater { rev-prefix = "v"; };
+
+  meta = with lib; {
+    description = "Converter and deserializer for FontLab Studio 5 VFB files";
+    homepage = "https://github.com/LucasFonts/vfbLib";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ jopejoe1 ];
+  };
+}
diff --git a/pkgs/development/python-modules/vg/default.nix b/pkgs/development/python-modules/vg/default.nix
index efda04f78b9d9..69c55a42035eb 100644
--- a/pkgs/development/python-modules/vg/default.nix
+++ b/pkgs/development/python-modules/vg/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, poetry-core
-, pythonOlder
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  poetry-core,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -27,21 +27,13 @@ buildPythonPackage rec {
       --replace 'requires = ["setuptools", "poetry-core>=1.0.0"]' 'requires = ["poetry-core>=1.0.0"]'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "vg"
-  ];
+  pythonImportsCheck = [ "vg" ];
 
   meta = with lib; {
     description = "Linear algebra for humans: a very good vector-geometry and linear-algebra toolbelt";
diff --git a/pkgs/development/python-modules/vharfbuzz/default.nix b/pkgs/development/python-modules/vharfbuzz/default.nix
index 6551ef2cbb7a5..5d41a3a2e57bc 100644
--- a/pkgs/development/python-modules/vharfbuzz/default.nix
+++ b/pkgs/development/python-modules/vharfbuzz/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fonttools
-, pythonImportsCheckHook
-, uharfbuzz
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fonttools,
+  pythonImportsCheckHook,
+  uharfbuzz,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     fonttools
     uharfbuzz
   ];
-  nativeBuildInputs = [
-    pythonImportsCheckHook
-  ];
+  nativeBuildInputs = [ pythonImportsCheckHook ];
 
   # Package has no tests.
   doCheck = false;
@@ -35,4 +34,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ danc86 ];
   };
 }
-
diff --git a/pkgs/development/python-modules/videocr/default.nix b/pkgs/development/python-modules/videocr/default.nix
index 1f027563d480d..262c109325d9a 100644
--- a/pkgs/development/python-modules/videocr/default.nix
+++ b/pkgs/development/python-modules/videocr/default.nix
@@ -1,23 +1,27 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, levenshtein
-, pytesseract
-, opencv4
-, fuzzywuzzy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  levenshtein,
+  pytesseract,
+  opencv4,
+  fuzzywuzzy,
 }:
 
 buildPythonPackage rec {
   pname = "videocr";
   version = "0.1.6";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1clifwczvhvbaw2spgxkkyqsbqh21vyfw3rh094pxfmq89ylyj63";
+    hash = "sha256-w0hPfUK4un5JAjAP7vwOAuKlsZ+zv6sFV2vD/Rl3kbI=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     levenshtein
     pytesseract
     opencv4
@@ -26,12 +30,12 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "python-Levenshtein" "Levenshtein" \
-      --replace "opencv-python" "opencv"
+      --replace-fail "python-Levenshtein" "Levenshtein" \
+      --replace-fail "opencv-python" "opencv"
     substituteInPlace videocr/constants.py \
-      --replace "master" "main"
+      --replace-fail "master" "main"
     substituteInPlace videocr/video.py \
-      --replace '--tessdata-dir "{}"' '--tessdata-dir="{}"'
+      --replace-fail '--tessdata-dir "{}"' '--tessdata-dir="{}"'
   '';
 
   # Project has no tests
diff --git a/pkgs/development/python-modules/vidstab/default.nix b/pkgs/development/python-modules/vidstab/default.nix
index b16a5374c10b9..fb41510d12ddb 100644
--- a/pkgs/development/python-modules/vidstab/default.nix
+++ b/pkgs/development/python-modules/vidstab/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, pandas
-, imutils
-, progress
-, matplotlib
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  pandas,
+  imutils,
+  progress,
+  matplotlib,
 }:
 
 buildPythonPackage rec {
@@ -18,7 +19,13 @@ buildPythonPackage rec {
     sha256 = "865c4a097e2a8527aa8bfc96ab0bcc0d280a88cc93eabcc36531268f5d343ce1";
   };
 
-  propagatedBuildInputs = [ numpy pandas imutils progress matplotlib ];
+  propagatedBuildInputs = [
+    numpy
+    pandas
+    imutils
+    progress
+    matplotlib
+  ];
 
   # tests not packaged with pypi
   doCheck = false;
diff --git a/pkgs/development/python-modules/viewstate/default.nix b/pkgs/development/python-modules/viewstate/default.nix
index aac82239e94e0..27cb972bb7804 100644
--- a/pkgs/development/python-modules/viewstate/default.nix
+++ b/pkgs/development/python-modules/viewstate/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, isPy3k
-, lib
-, pytest
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  isPy3k,
+  lib,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     sha256 = "15s0n1lhkz0zwi33waqkkjipal3f7s45rxsj1bw89xpr4dj87qx5";
   };
 
-  nativeCheckInputs = [
-    pytest
-  ];
+  nativeCheckInputs = [ pytest ];
 
   checkPhase = ''
     pytest
@@ -30,8 +29,6 @@ buildPythonPackage rec {
     description = ".NET viewstate decoder";
     homepage = "https://github.com/yuvadm/viewstate";
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [
-      kamadorueda
-    ];
+    maintainers = with lib.maintainers; [ kamadorueda ];
   };
 }
diff --git a/pkgs/development/python-modules/vilfo-api-client/default.nix b/pkgs/development/python-modules/vilfo-api-client/default.nix
index b4b9f77304ef7..d8d93c6fa390a 100644
--- a/pkgs/development/python-modules/vilfo-api-client/default.nix
+++ b/pkgs/development/python-modules/vilfo-api-client/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools-scm
-, getmac
-, requests
-, semver
-, pytestCheckHook
-, responses
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  getmac,
+  requests,
+  semver,
+  pytestCheckHook,
+  responses,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
       --replace "get-mac" "getmac"
   '';
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     getmac
diff --git a/pkgs/development/python-modules/vincenty/default.nix b/pkgs/development/python-modules/vincenty/default.nix
index 8e1022cc5eb7c..c4e28ff23f442 100644
--- a/pkgs/development/python-modules/vincenty/default.nix
+++ b/pkgs/development/python-modules/vincenty/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/vine/default.nix b/pkgs/development/python-modules/vine/default.nix
index 46330ac4247bb..91d884e210714 100644
--- a/pkgs/development/python-modules/vine/default.nix
+++ b/pkgs/development/python-modules/vine/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, case
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +19,6 @@ buildPythonPackage rec {
   };
 
   nativeCheckInputs = [
-    case
     pytestCheckHook
   ];
 
@@ -28,9 +27,7 @@ buildPythonPackage rec {
     "t/unit/test_synchronization.py"
   ];
 
-  pythonImportsCheck = [
-    "vine"
-  ];
+  pythonImportsCheck = [ "vine" ];
 
   meta = with lib; {
     description = "Python promises";
diff --git a/pkgs/development/python-modules/virt-firmware/default.nix b/pkgs/development/python-modules/virt-firmware/default.nix
index 8f2f0c0736098..19c6244f26264 100644
--- a/pkgs/development/python-modules/virt-firmware/default.nix
+++ b/pkgs/development/python-modules/virt-firmware/default.nix
@@ -1,44 +1,51 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, cryptography
-, pytestCheckHook
-, pefile
+{
+  lib,
+  pkgs,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  cryptography,
+  pytestCheckHook,
+  pefile,
 }:
 
 buildPythonPackage rec {
   pname = "virt-firmware";
-  version = "24.2";
-
+  version = "24.4";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-bvk3MIgPY6DJ+y0eKQHLffClNjPAEP7AJ15rFObiMig=";
+    hash = "sha256-rqhaKDOQEOj6bcRz3qZJ+a4yG1qTC9SUjuxMhZlnmwU=";
   };
 
-  pythonImportsCheck = [ "virt.firmware.efi" ];
+  build-system = [ setuptools ];
 
-  nativeBuildInputs = [
+  dependencies = [
     setuptools
+    cryptography
+    pefile
   ];
 
+  # tests require systemd-detect-virt
+  doCheck = lib.meta.availableOn stdenv.hostPlatform pkgs.systemd;
+
   nativeCheckInputs = [
     pytestCheckHook
+    pkgs.systemd
   ];
-  pytestFlagsArray = ["tests/tests.py"];
 
-  propagatedBuildInputs = [
-    setuptools
-    cryptography
-    pefile
-  ];
+  pytestFlagsArray = [ "tests/tests.py" ];
+
+  pythonImportsCheck = [ "virt.firmware.efi" ];
 
   meta = with lib; {
     description = "Tools for virtual machine firmware volumes";
     homepage = "https://gitlab.com/kraxel/virt-firmware";
     license = licenses.gpl2;
-    maintainers = with maintainers; [ lheckemann raitobezarius ];
+    maintainers = with maintainers; [
+      raitobezarius
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/virtkey/default.nix b/pkgs/development/python-modules/virtkey/default.nix
index df1d0461e434c..553721e83eea5 100644
--- a/pkgs/development/python-modules/virtkey/default.nix
+++ b/pkgs/development/python-modules/virtkey/default.nix
@@ -1,9 +1,22 @@
-{ stdenv, lib, buildPythonPackage, fetchurl, pkg-config, gtk2, libX11, libXtst, libXi, libxkbfile, xorgproto }:
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchurl,
+  pkg-config,
+  gtk2,
+  libX11,
+  libXtst,
+  libXi,
+  libxkbfile,
+  xorgproto,
+}:
 
 let
   majorVersion = "0.63";
   minorVersion = "0";
-in buildPythonPackage rec {
+in
+buildPythonPackage rec {
   pname = "virtkey";
   version = "${majorVersion}.${minorVersion}";
   format = "setuptools";
@@ -15,10 +28,17 @@ in buildPythonPackage rec {
 
   nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [ gtk2 libX11 libXtst libXi libxkbfile xorgproto ];
+  buildInputs = [
+    gtk2
+    libX11
+    libXtst
+    libXi
+    libxkbfile
+    xorgproto
+  ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     description = "Extension to emulate keypresses and to get the layout information from the X server";
     homepage = "https://launchpad.net/virtkey";
     license = licenses.gpl3;
diff --git a/pkgs/development/python-modules/virtualenv-clone/default.nix b/pkgs/development/python-modules/virtualenv-clone/default.nix
index 51c1d12b184d8..056e38a32923b 100644
--- a/pkgs/development/python-modules/virtualenv-clone/default.nix
+++ b/pkgs/development/python-modules/virtualenv-clone/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, virtualenv
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  virtualenv,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,25 +21,21 @@ buildPythonPackage rec {
   postPatch = ''
     substituteInPlace tests/__init__.py \
       --replace "'virtualenv'" "'${virtualenv}/bin/virtualenv'" \
-      --replace "'3.9', '3.10']" "'3.9', '3.10', '3.11']" # if the Python version used isn't in this list, tests fail
+      --replace "'3.9', '3.10']" "'3.9', '3.10', '3.11', '3.12']" # if the Python version used isn't in this list, tests fail
 
     substituteInPlace tests/test_virtualenv_sys.py \
       --replace "'virtualenv'" "'${virtualenv}/bin/virtualenv'"
   '';
 
-  propagatedBuildInputs = [
-    virtualenv
-  ];
+  propagatedBuildInputs = [ virtualenv ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     homepage = "https://github.com/edwardgeorge/virtualenv-clone";
     description = "Script to clone virtualenvs";
     mainProgram = "virtualenv-clone";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/virtualenv/default.nix b/pkgs/development/python-modules/virtualenv/default.nix
index 44ca0ff4f4f35..6e7904dbe3cdb 100644
--- a/pkgs/development/python-modules/virtualenv/default.nix
+++ b/pkgs/development/python-modules/virtualenv/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, isPy27
-, isPyPy
-, cython
-, distlib
-, fetchPypi
-, filelock
-, flaky
-, hatch-vcs
-, hatchling
-, importlib-metadata
-, platformdirs
-, pytest-freezegun
-, pytest-mock
-, pytest-timeout
-, pytestCheckHook
-, time-machine
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  isPyPy,
+  cython,
+  distlib,
+  fetchPypi,
+  filelock,
+  flaky,
+  hatch-vcs,
+  hatchling,
+  importlib-metadata,
+  platformdirs,
+  pytest-freezegun,
+  pytest-mock,
+  pytest-timeout,
+  pytestCheckHook,
+  time-machine,
 }:
 
 buildPythonPackage rec {
   pname = "virtualenv";
-  version = "20.25.1";
+  version = "20.26.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-4I4T7NynoL1TeY81bVgxQ0r6Wwe5Pwq98Hl7egb/4Zc=";
+    hash = "sha256-gr8PTuu7eNNt2u4Cg9Q/5XNrU4gLiozc03OQoHrDdBw=";
   };
 
   nativeBuildInputs = [
@@ -40,9 +40,7 @@ buildPythonPackage rec {
     distlib
     filelock
     platformdirs
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   nativeCheckInputs = [
     cython
@@ -51,9 +49,7 @@ buildPythonPackage rec {
     pytest-mock
     pytest-timeout
     pytestCheckHook
-  ] ++ lib.optionals (!isPyPy) [
-    time-machine
-  ];
+  ] ++ lib.optionals (!isPyPy) [ time-machine ];
 
   preCheck = ''
     export HOME=$(mktemp -d)
@@ -65,33 +61,32 @@ buildPythonPackage rec {
     "tests/unit/seed/embed/test_bootstrap_link_via_app_data.py"
   ];
 
-  disabledTests = [
-    # Network access
-    "test_create_no_seed"
-    "test_seed_link_via_app_data"
-    # Permission Error
-    "test_bad_exe_py_info_no_raise"
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    "test_help"
-  ] ++ lib.optionals (isPyPy) [
-    # encoding problems
-    "test_bash"
-    # permission error
-    "test_can_build_c_extensions"
-    # fails to detect pypy version
-    "test_discover_ok"
-  ];
+  disabledTests =
+    [
+      # Network access
+      "test_create_no_seed"
+      "test_seed_link_via_app_data"
+      # Permission Error
+      "test_bad_exe_py_info_no_raise"
+    ]
+    ++ lib.optionals (pythonOlder "3.11") [ "test_help" ]
+    ++ lib.optionals (isPyPy) [
+      # encoding problems
+      "test_bash"
+      # permission error
+      "test_can_build_c_extensions"
+      # fails to detect pypy version
+      "test_discover_ok"
+    ];
 
-  pythonImportsCheck = [
-    "virtualenv"
-  ];
+  pythonImportsCheck = [ "virtualenv" ];
 
   meta = with lib; {
-    description = "A tool to create isolated Python environments";
+    description = "Tool to create isolated Python environments";
     mainProgram = "virtualenv";
     homepage = "http://www.virtualenv.org";
     changelog = "https://github.com/pypa/virtualenv/blob/${version}/docs/changelog.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/virtualenvwrapper/default.nix b/pkgs/development/python-modules/virtualenvwrapper/default.nix
index c7f6dad7c8cec..37662921905a6 100644
--- a/pkgs/development/python-modules/virtualenvwrapper/default.nix
+++ b/pkgs/development/python-modules/virtualenvwrapper/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pbr
-, pip
-, pkgs
-, stevedore
-, virtualenv
-, virtualenv-clone
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pbr,
+  pip,
+  pkgs,
+  stevedore,
+  virtualenv,
+  virtualenv-clone,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -17,14 +18,22 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-1Ge+rFpEvgD7XNG88zI5jD2rX7O9OveBXqhrTWuz06Q=";
+    hash = "sha256-1Ge+rFpEvgD7XNG88zI5jD2rX7O9OveBXqhrTWuz06Q=";
   };
 
   # pip depend on $HOME setting
   preConfigure = "export HOME=$TMPDIR";
 
-  buildInputs = [ pbr pip pkgs.which ];
-  propagatedBuildInputs = [ stevedore virtualenv virtualenv-clone ];
+  buildInputs = [
+    pbr
+    pip
+    pkgs.which
+  ];
+  propagatedBuildInputs = [
+    stevedore
+    virtualenv
+    virtualenv-clone
+  ];
 
   postPatch = ''
     for file in "virtualenvwrapper.sh" "virtualenvwrapper_lazy.sh"; do
@@ -46,25 +55,25 @@ buildPythonPackage rec {
   '';
 
   postInstall = ''
-    # This might look like a dirty hack but we can't use the makeWrapper function because
-    # the wrapped file were then called via "exec". The virtualenvwrapper shell scripts
-    # aren't normal executables. Instead, the user has to evaluate them.
+        # This might look like a dirty hack but we can't use the makeWrapper function because
+        # the wrapped file were then called via "exec". The virtualenvwrapper shell scripts
+        # aren't normal executables. Instead, the user has to evaluate them.
 
-    for file in "virtualenvwrapper.sh" "virtualenvwrapper_lazy.sh"; do
-      local wrapper="$out/bin/$file"
-      local wrapped="$out/bin/.$file-wrapped"
-      mv "$wrapper" "$wrapped"
+        for file in "virtualenvwrapper.sh" "virtualenvwrapper_lazy.sh"; do
+          local wrapper="$out/bin/$file"
+          local wrapped="$out/bin/.$file-wrapped"
+          mv "$wrapper" "$wrapped"
 
-      # WARNING: Don't indent the lines below because that would break EOF
-      cat > "$wrapper" << EOF
-export PATH="${python}/bin:\$PATH"
-export VIRTUALENVWRAPPER_PYTHONPATH="$PYTHONPATH:$(toPythonPath $out)"
-source "$wrapped"
-EOF
+          # WARNING: Don't indent the lines below because that would break EOF
+          cat > "$wrapper" << EOF
+    export PATH="${python}/bin:\$PATH"
+    export VIRTUALENVWRAPPER_PYTHONPATH="$PYTHONPATH:$(toPythonPath $out)"
+    source "$wrapped"
+    EOF
 
-      chmod -x "$wrapped"
-      chmod +x "$wrapper"
-    done
+          chmod -x "$wrapped"
+          chmod +x "$wrapper"
+        done
   '';
 
   meta = with lib; {
@@ -72,5 +81,4 @@ EOF
     homepage = "https://pypi.python.org/pypi/virtualenvwrapper";
     license = licenses.mit;
   };
-
 }
diff --git a/pkgs/development/python-modules/visions/default.nix b/pkgs/development/python-modules/visions/default.nix
new file mode 100644
index 0000000000000..6d3da09118f97
--- /dev/null
+++ b/pkgs/development/python-modules/visions/default.nix
@@ -0,0 +1,70 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, pytestCheckHook
+, setuptools
+, attrs
+, imagehash
+, matplotlib
+, multimethod
+, networkx
+, numpy
+, pandas
+, pillow
+, pydot
+, pygraphviz
+, shapely
+}:
+
+buildPythonPackage rec {
+  pname = "visions";
+  version = "0.7.6";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "dylan-profiler";
+    repo = "visions";
+    rev = "5fe9dd0c2a5ada0162a005c880bac5296686a5aa";  # no 0.7.6 tag in github
+    hash = "sha256-SZzDXm+faAvrfSOT0fwwAf9IH7upNybwKxbjw1CrHj8=";
+  };
+
+  nativeBuildInputs = [ setuptools ];
+
+  propagatedBuildInputs = [
+    attrs
+    imagehash
+    multimethod
+    networkx
+    numpy
+    pandas
+  ];
+
+  passthru.optional-dependencies = {
+    type-geometry = [ shapely ];
+    type-image-path = [ imagehash pillow ];
+    plotting = [ matplotlib pydot pygraphviz ];
+  };
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+
+  disabledTestPaths = [
+    # requires running Apache Spark:
+    "tests/spark_/typesets/test_spark_standard_set.py"
+  ];
+
+  pythonImportsCheck = [
+    "visions"
+  ];
+
+  meta = with lib; {
+    description = "Type system for data analysis in Python";
+    homepage = "https://dylan-profiler.github.io/visions";
+    license = licenses.bsdOriginal;
+    maintainers = with maintainers; [ bcdarwin ];
+  };
+}
diff --git a/pkgs/development/python-modules/visitor/default.nix b/pkgs/development/python-modules/visitor/default.nix
index e0caa64b2b10f..8bab0d88fe4a7 100644
--- a/pkgs/development/python-modules/visitor/default.nix
+++ b/pkgs/development/python-modules/visitor/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+}:
 
 buildPythonPackage rec {
   pname = "visitor";
@@ -12,8 +16,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/mbr/visitor";
-    description = "A tiny pythonic visitor implementation";
+    description = "Tiny pythonic visitor implementation";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/vispy/default.nix b/pkgs/development/python-modules/vispy/default.nix
index e25133dfda5b6..dd74e0212bc52 100644
--- a/pkgs/development/python-modules/vispy/default.nix
+++ b/pkgs/development/python-modules/vispy/default.nix
@@ -1,36 +1,44 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, substituteAll
-, fetchPypi
-, cython
-, fontconfig
-, freetype-py
-, hsluv
-, kiwisolver
-, libGL
-, numpy
-, oldest-supported-numpy
-, packaging
-, pythonOlder
-, setuptools
-, setuptools-scm
-, wheel
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  substituteAll,
+  fetchPypi,
+  cython,
+  fontconfig,
+  freetype-py,
+  hsluv,
+  kiwisolver,
+  libGL,
+  numpy,
+  oldest-supported-numpy,
+  packaging,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "vispy";
-  version = "0.14.2";
+  version = "0.14.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-7ti0TW9ch70pWySqmi4OTm3GqQXM7gGy1ByPvwp2ez0=";
+    hash = "sha256-77u4R6kIuvfnFpq5vylhOKOTZPNn5ssKjsA61xaZ0x0=";
   };
 
-  patches = [
+  postPatch = ''
+    # https://numpy.org/devdocs/dev/depending_on_numpy.html#numpy-2-0-specific-advice
+    # upstream enforce builds with numpy 2+, which is backward compat with 1.xx
+    substituteInPlace pyproject.toml \
+      --replace-fail "numpy>=2.0.0rc2" "numpy"
+  '';
+
+  patches = lib.optionals (!stdenv.hostPlatform.isDarwin) [
     (substituteAll {
       src = ./library-paths.patch;
       fontconfig = "${fontconfig.lib}/lib/libfontconfig${stdenv.hostPlatform.extensions.sharedLibrary}";
@@ -46,9 +54,7 @@ buildPythonPackage rec {
     wheel
   ];
 
-  buildInputs = [
-    libGL
-  ];
+  buildInputs = [ libGL ];
 
   propagatedBuildInputs = [
     freetype-py
@@ -58,7 +64,7 @@ buildPythonPackage rec {
     packaging
   ];
 
-  doCheck = false;  # otherwise runs OSX code on linux.
+  doCheck = false; # otherwise runs OSX code on linux.
 
   pythonImportsCheck = [
     "vispy"
diff --git a/pkgs/development/python-modules/viv-utils/default.nix b/pkgs/development/python-modules/viv-utils/default.nix
index e411a2dd5758c..59119f85cd2bb 100644
--- a/pkgs/development/python-modules/viv-utils/default.nix
+++ b/pkgs/development/python-modules/viv-utils/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, funcy
-, intervaltree
-, pefile
-, typing-extensions
-, vivisect
-, pytest-sugar
-, pytestCheckHook
-, python-flirt
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  funcy,
+  intervaltree,
+  pefile,
+  typing-extensions,
+  vivisect,
+  pytest-sugar,
+  pytestCheckHook,
+  python-flirt,
 }:
 buildPythonPackage rec {
   pname = "viv-utils";
-  version = "0.7.9";
+  version = "0.7.10";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "williballenthin";
     repo = "viv-utils";
     rev = "refs/tags/v${version}";
-    hash = "sha256-xM3jtA6fNk36+enL/EcQH59CNajYnGlEDu06QXIFz6A=";
+    hash = "sha256-pQAe4QuOcx5MG+slJkf4UU38TGt4pU0uVZr+vtwsWgM=";
   };
 
   postPatch = ''
@@ -42,9 +43,7 @@ buildPythonPackage rec {
 
   passthru = {
     optional-dependencies = {
-      flirt = [
-        python-flirt
-      ];
+      flirt = [ python-flirt ];
     };
   };
 
diff --git a/pkgs/development/python-modules/vivisect/default.nix b/pkgs/development/python-modules/vivisect/default.nix
index bf281f374c509..ef939cbdca6e0 100644
--- a/pkgs/development/python-modules/vivisect/default.nix
+++ b/pkgs/development/python-modules/vivisect/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, buildPythonPackage
-, cxxfilt
-, fetchPypi
-, msgpack
-, pyasn1
-, pyasn1-modules
-, pycparser
-, pyqt5
-, pythonRelaxDepsHook
-, pyqtwebengine
-, pythonOlder
-, withGui ? false
-, wrapQtAppsHook
+{
+  lib,
+  buildPythonPackage,
+  cxxfilt,
+  fetchPypi,
+  msgpack,
+  pyasn1,
+  pyasn1-modules,
+  pycparser,
+  pyqt5,
+  pyqtwebengine,
+  pythonOlder,
+  withGui ? false,
+  wrapQtAppsHook,
 }:
 
 buildPythonPackage rec {
@@ -33,7 +33,6 @@ buildPythonPackage rec {
   ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     wrapQtAppsHook
   ];
 
@@ -57,9 +56,7 @@ buildPythonPackage rec {
   # requires another repo for test files
   doCheck = false;
 
-  pythonImportsCheck = [
-    "vivisect"
-  ];
+  pythonImportsCheck = [ "vivisect" ];
 
   meta = with lib; {
     description = "Python disassembler, debugger, emulator, and static analysis framework";
diff --git a/pkgs/development/python-modules/vllm/0001-setup.py-don-t-ask-for-hipcc-version.patch b/pkgs/development/python-modules/vllm/0001-setup.py-don-t-ask-for-hipcc-version.patch
new file mode 100644
index 0000000000000..edaebfce508c6
--- /dev/null
+++ b/pkgs/development/python-modules/vllm/0001-setup.py-don-t-ask-for-hipcc-version.patch
@@ -0,0 +1,24 @@
+From f6a7748bee79fc2e1898968fef844daacfa7860b Mon Sep 17 00:00:00 2001
+From: SomeoneSerge <else@someonex.net>
+Date: Wed, 31 Jul 2024 12:02:53 +0000
+Subject: [PATCH 1/2] setup.py: don't ask for hipcc --version
+
+---
+ setup.py | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/setup.py b/setup.py
+index 72ef26f1..01e006f9 100644
+--- a/setup.py
++++ b/setup.py
+@@ -279,6 +279,7 @@ def _install_punica() -> bool:
+ 
+ 
+ def get_hipcc_rocm_version():
++    return "0.0" # `hipcc --version` misbehaves ("unresolved paths") inside the nix sandbox
+     # Run the hipcc --version command
+     result = subprocess.run(['hipcc', '--version'],
+                             stdout=subprocess.PIPE,
+-- 
+2.45.1
+
diff --git a/pkgs/development/python-modules/vllm/0002-setup.py-nix-support-respect-cmakeFlags.patch b/pkgs/development/python-modules/vllm/0002-setup.py-nix-support-respect-cmakeFlags.patch
new file mode 100644
index 0000000000000..e7a4bcd457617
--- /dev/null
+++ b/pkgs/development/python-modules/vllm/0002-setup.py-nix-support-respect-cmakeFlags.patch
@@ -0,0 +1,40 @@
+From 10b7e8330bdba319a4162cceb8e5dd4280215b04 Mon Sep 17 00:00:00 2001
+From: SomeoneSerge <else@someonex.net>
+Date: Wed, 31 Jul 2024 12:06:15 +0000
+Subject: [PATCH 2/2] setup.py: nix-support (respect cmakeFlags)
+
+---
+ setup.py | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/setup.py b/setup.py
+index 01e006f9..14762146 100644
+--- a/setup.py
++++ b/setup.py
+@@ -15,6 +15,15 @@ from setuptools import Extension, find_packages, setup
+ from setuptools.command.build_ext import build_ext
+ from torch.utils.cpp_extension import CUDA_HOME
+ 
++import os
++import json
++
++if "NIX_ATTRS_JSON_FILE" in os.environ:
++    with open(os.environ["NIX_ATTRS_JSON_FILE"], "r") as f:
++        NIX_ATTRS = json.load(f)
++else:
++    NIX_ATTRS = { "cmakeFlags": os.environ.get("cmakeFlags", "").split() }
++
+ 
+ def load_module_from_path(module_name, path):
+     spec = importlib.util.spec_from_file_location(module_name, path)
+@@ -159,6 +168,7 @@ class cmake_build_ext(build_ext):
+             '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={}'.format(outdir),
+             '-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY={}'.format(self.build_temp),
+             '-DVLLM_TARGET_DEVICE={}'.format(VLLM_TARGET_DEVICE),
++            *NIX_ATTRS["cmakeFlags"],
+         ]
+ 
+         verbose = envs.VERBOSE
+-- 
+2.45.1
+
diff --git a/pkgs/development/python-modules/vllm/default.nix b/pkgs/development/python-modules/vllm/default.nix
index ce739e1d6dd27..3b9e6ee434871 100644
--- a/pkgs/development/python-modules/vllm/default.nix
+++ b/pkgs/development/python-modules/vllm/default.nix
@@ -1,141 +1,181 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, which
-, ninja
-, packaging
-, setuptools
-, torch
-, outlines
-, wheel
-, psutil
-, ray
-, pandas
-, pyarrow
-, sentencepiece
-, numpy
-, transformers
-, xformers
-, fastapi
-, uvicorn
-, pydantic
-, aioprometheus
-, pynvml
-, cupy
-, writeShellScript
-
-, config
-
-, cudaSupport ? config.cudaSupport
-, cudaPackages ? {}
-
-, rocmSupport ? config.rocmSupport
-, rocmPackages ? {}
-, gpuTargets ? []
-}:
+{
+  lib,
+  stdenv,
+  python,
+  buildPythonPackage,
+  pythonRelaxDepsHook,
+  fetchFromGitHub,
+  which,
+  ninja,
+  cmake,
+  packaging,
+  setuptools,
+  torch,
+  outlines,
+  wheel,
+  psutil,
+  ray,
+  pandas,
+  pyarrow,
+  sentencepiece,
+  numpy,
+  transformers,
+  xformers,
+  fastapi,
+  uvicorn,
+  pydantic,
+  aioprometheus,
+  pynvml,
+  openai,
+  pyzmq,
+  tiktoken,
+  torchvision,
+  py-cpuinfo,
+  lm-format-enforcer,
+  prometheus-fastapi-instrumentator,
+  cupy,
+  writeShellScript,
+
+  config,
+
+  cudaSupport ? config.cudaSupport,
+  cudaPackages ? { },
+
+  # Has to be either rocm or cuda, default to the free one
+  rocmSupport ? !config.cudaSupport,
+  rocmPackages ? { },
+  gpuTargets ? [ ],
+}@args:
+
+let
+  cutlass = fetchFromGitHub {
+    owner = "NVIDIA";
+    repo = "cutlass";
+    rev = "refs/tags/v3.5.0";
+    sha256 = "sha256-D/s7eYsa5l/mfx73tE4mnFcTQdYqGmXa9d9TCryw4e4=";
+  };
+in
 
 buildPythonPackage rec {
   pname = "vllm";
-  version = "0.3.3";
-  format = "pyproject";
+  version = "0.5.3.post1";
+  pyproject = true;
+
+  stdenv = if cudaSupport then cudaPackages.backendStdenv else args.stdenv;
 
   src = fetchFromGitHub {
     owner = "vllm-project";
     repo = pname;
-    rev = "v${version}";
-    hash = "sha256-LU5pCPVv+Ws9dL8oWL1sJGzwQKI1IFk2A1I6TP9gXL4=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-++DK2Y2zz+1KrEcdQc5XFrSjc7fCwMD2DQ/RqY7PoFU=";
   };
 
-  # Otherwise it tries to enumerate host supported ROCM gfx archs, and that is not possible due to sandboxing.
-  PYTORCH_ROCM_ARCH = lib.optionalString rocmSupport (lib.strings.concatStringsSep ";" rocmPackages.clr.gpuTargets);
+  patches = [
+    ./0001-setup.py-don-t-ask-for-hipcc-version.patch
+    ./0002-setup.py-nix-support-respect-cmakeFlags.patch
+  ];
 
-  # xformers 0.0.23.post1 github release specifies its version as 0.0.24
-  #
-  # cupy-cuda12x is the same wheel as cupy, but built with cuda dependencies, we already have it set up
-  # like that in nixpkgs. Version upgrade is due to upstream shenanigans
-  # https://github.com/vllm-project/vllm/pull/2845/commits/34a0ad7f9bb7880c0daa2992d700df3e01e91363
-  #
-  # hipcc --version works badly on NixOS due to unresolved paths.
+  # Ignore the python version check because it hard-codes minor versions and
+  # lags behind `ray`'s python interpreter support
   postPatch = ''
-    substituteInPlace requirements.txt \
-      --replace "xformers == 0.0.23.post1" "xformers == 0.0.24"
-    substituteInPlace requirements.txt \
-      --replace "cupy-cuda12x == 12.1.0" "cupy == 12.3.0"
-    substituteInPlace requirements-build.txt \
-      --replace "torch==2.1.2" "torch == 2.2.1"
-    substituteInPlace pyproject.toml \
-      --replace "torch == 2.1.2" "torch == 2.2.1"
-    substituteInPlace requirements.txt \
-      --replace "torch == 2.1.2" "torch == 2.2.1"
-  '' + lib.optionalString rocmSupport ''
-    substituteInPlace setup.py \
-      --replace "'hipcc', '--version'" "'${writeShellScript "hipcc-version-stub" "echo HIP version: 0.0"}'"
-  '';
-
-  preBuild = lib.optionalString cudaSupport ''
-    export CUDA_HOME=${cudaPackages.cuda_nvcc}
-  ''
-  + lib.optionalString rocmSupport ''
-    export ROCM_HOME=${rocmPackages.clr}
-    export PATH=$PATH:${rocmPackages.hipcc}
+    substituteInPlace CMakeLists.txt \
+      --replace-fail \
+        'set(PYTHON_SUPPORTED_VERSIONS' \
+        'set(PYTHON_SUPPORTED_VERSIONS "${lib.versions.majorMinor python.version}"'
   '';
 
   nativeBuildInputs = [
+    cmake
     ninja
+    pythonRelaxDepsHook
+    which
+  ] ++ lib.optionals rocmSupport [ rocmPackages.hipcc ];
+
+  build-system = [
     packaging
     setuptools
-    torch
     wheel
-    which
-  ] ++ lib.optionals rocmSupport [
-    rocmPackages.hipcc
   ];
 
-  buildInputs = (lib.optionals cudaSupport (with cudaPackages; [
-    cuda_cudart # cuda_runtime.h, -lcudart
-    cuda_cccl.dev # <thrust/*>
-    libcusparse.dev # cusparse.h
-    libcublas.dev # cublas_v2.h
-    libcusolver # cusolverDn.h
-  ])) ++ (lib.optionals rocmSupport (with rocmPackages; [
-    clr
-    rocthrust
-    rocprim
-    hipsparse
-    hipblas
-  ]));
-
-  propagatedBuildInputs = [
-    psutil
-    ray
-    pandas
-    pyarrow
-    sentencepiece
-    numpy
-    torch
-    transformers
-    outlines
-    xformers
-    fastapi
-    uvicorn
-    pydantic
-    aioprometheus
-  ] ++ uvicorn.optional-dependencies.standard
+  buildInputs =
+    (lib.optionals cudaSupport (
+      with cudaPackages;
+      [
+        cuda_cudart # cuda_runtime.h, -lcudart
+        cuda_cccl
+        libcusparse # cusparse.h
+        libcusolver # cusolverDn.h
+        cuda_nvcc
+        cuda_nvtx
+        libcublas
+      ]
+    ))
+    ++ (lib.optionals rocmSupport (
+      with rocmPackages;
+      [
+        clr
+        rocthrust
+        rocprim
+        hipsparse
+        hipblas
+      ]
+    ));
+
+  dependencies =
+    [
+      aioprometheus
+      fastapi
+      lm-format-enforcer
+      numpy
+      openai
+      outlines
+      pandas
+      prometheus-fastapi-instrumentator
+      psutil
+      py-cpuinfo
+      pyarrow
+      pydantic
+      pyzmq
+      ray
+      sentencepiece
+      tiktoken
+      torch
+      torchvision
+      transformers
+      uvicorn
+      xformers
+    ]
+    ++ uvicorn.optional-dependencies.standard
     ++ aioprometheus.optional-dependencies.starlette
     ++ lib.optionals cudaSupport [
-      pynvml
       cupy
+      pynvml
     ];
 
+  dontUseCmakeConfigure = true;
+  cmakeFlags = [ (lib.cmakeFeature "FETCHCONTENT_SOURCE_DIR_CUTLASS" "${lib.getDev cutlass}") ];
+
+  env =
+    lib.optionalAttrs cudaSupport { CUDA_HOME = "${lib.getDev cudaPackages.cuda_nvcc}"; }
+    // lib.optionalAttrs rocmSupport {
+      # Otherwise it tries to enumerate host supported ROCM gfx archs, and that is not possible due to sandboxing.
+      PYTORCH_ROCM_ARCH = lib.strings.concatStringsSep ";" rocmPackages.clr.gpuTargets;
+      ROCM_HOME = "${rocmPackages.clr}";
+    };
+
+  pythonRelaxDeps = true;
+
   pythonImportsCheck = [ "vllm" ];
 
   meta = with lib; {
-    description = "A high-throughput and memory-efficient inference and serving engine for LLMs";
+    description = "High-throughput and memory-efficient inference and serving engine for LLMs";
     changelog = "https://github.com/vllm-project/vllm/releases/tag/v${version}";
     homepage = "https://github.com/vllm-project/vllm";
     license = licenses.asl20;
-    maintainers = with maintainers; [ happysalada lach ];
+    maintainers = with maintainers; [
+      happysalada
+      lach
+    ];
     broken = !cudaSupport && !rocmSupport;
   };
 }
diff --git a/pkgs/development/python-modules/vmprof/default.nix b/pkgs/development/python-modules/vmprof/default.nix
index 755417803a2e5..e8b28062a829a 100644
--- a/pkgs/development/python-modules/vmprof/default.nix
+++ b/pkgs/development/python-modules/vmprof/default.nix
@@ -1,58 +1,56 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, colorama
-, libunwind
-, pytz
-, requests
-, six
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  pythonAtLeast,
+  fetchFromGitHub,
+  setuptools,
+  colorama,
+  pytz,
+  requests,
+  six,
+  libunwind,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
-  version = "0.4.17";
-  format = "setuptools";
   pname = "vmprof";
+  version = "0.4.17";
+  pyproject = true;
+
+  disabled = pythonOlder "3.6" || pythonAtLeast "3.12";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-ACYj7Lb/QT6deG0uuiPCj850QXhaw4XuQX6aZu8OM2U=";
+  src = fetchFromGitHub {
+    owner = "vmprof";
+    repo = "vmprof-python";
+    rev = "refs/tags/${version}";
+    hash = "sha256-7k6mtEdPmp1eNzB4l/k/ExSYtRJVmRxcx50ql8zR36k=";
   };
 
+  build-system = [ setuptools ];
+
+  dependencies = [
+    colorama
+    requests
+    six
+    pytz
+  ];
+
   buildInputs = [ libunwind ];
-  propagatedBuildInputs = [ colorama requests six pytz ];
-
-  patches = [
-    (fetchpatch {
-      name = "${pname}-python-3.10-compat.patch";
-      # https://github.com/vmprof/vmprof-python/pull/198
-      url = "https://github.com/vmprof/vmprof-python/commit/e4e99e5aa677f96d1970d88c8a439f995f429f85.patch";
-      hash = "sha256-W/c6WtVuKi7xO2sCOr71mrZTWqI86bWg5a0FeDNolh0=";
-    })
-    (fetchpatch {
-      name = "${pname}-python-3.11-compat.patch";
-      # https://github.com/vmprof/vmprof-python/pull/251 (not yet merged)
-      url = "https://github.com/matthiasdiener/vmprof-python/compare/a1a1b5264ec0b197444c0053e44f8ae4ffed9353...13c39166363b960017393b614270befe01230be8.patch";
-      excludes = [ "test_requirements.txt" ];
-      hash = "sha256-3+0PVdAf83McNd93Q9dD4HLXt39UinVU5BA8jWfT6F4=";
-    })
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  disabledTests = [
+    "test_gzip_call"
+    "test_is_enabled"
+    "test_get_profile_path"
+    "test_get_runtime"
   ];
 
-  # No tests included
-  doCheck = false;
   pythonImportsCheck = [ "vmprof" ];
 
-  # Workaround build failure on -fno-common toolchains:
-  #   ld: src/vmprof_unix.o:src/vmprof_common.h:92: multiple definition of
-  #     `_PyThreadState_Current'; src/_vmprof.o:src/vmprof_common.h:92: first defined here
-  # TODO: can be removed once next release contains:
-  #   https://github.com/vmprof/vmprof-python/pull/203
-  env.NIX_CFLAGS_COMPILE = "-fcommon";
-
   meta = with lib; {
-    broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin;
-    description = "A vmprof client";
+    description = "Vmprof client";
     mainProgram = "vmprofshow";
     license = licenses.mit;
     homepage = "https://vmprof.readthedocs.org/";
diff --git a/pkgs/development/python-modules/vncdo/default.nix b/pkgs/development/python-modules/vncdo/default.nix
index 2fbee9f2d65a6..76fb2fc98ef54 100644
--- a/pkgs/development/python-modules/vncdo/default.nix
+++ b/pkgs/development/python-modules/vncdo/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pexpect
-, pillow
-, pycryptodomex
-, pytestCheckHook
-, pythonOlder
-, pyvirtualdisplay
-, setuptools
-, twisted
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pexpect,
+  pillow,
+  pycryptodomex,
+  pytestCheckHook,
+  pythonOlder,
+  pyvirtualdisplay,
+  setuptools,
+  twisted,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-QrD6z/g85FwaZCJ1PRn8CBKCOQcbVjQ9g0NpPIxguqk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     pillow
@@ -41,12 +40,10 @@ buildPythonPackage rec {
     pyvirtualdisplay
   ];
 
-  pythonImportsCheck = [
-    "vncdotool"
-  ];
+  pythonImportsCheck = [ "vncdotool" ];
 
   meta = with lib; {
-    description = "A command line VNC client and Python library";
+    description = "Command line VNC client and Python library";
     homepage = "https://github.com/sibson/vncdotool";
     changelog = "https://github.com/sibson/vncdotool/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/vnoise/default.nix b/pkgs/development/python-modules/vnoise/default.nix
new file mode 100644
index 0000000000000..02f917bc17aca
--- /dev/null
+++ b/pkgs/development/python-modules/vnoise/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, numpy
+, pytestCheckHook
+, setuptools
+}:
+
+buildPythonPackage rec {
+  pname = "vnoise";
+  version = "0.1.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "plottertools";
+    repo = "vnoise";
+    rev = version;
+    hash = "sha256-nflAh3vj48wneM0wy/+M+XD6GC63KZEIFb1x4SS46YI=";
+  };
+
+  nativeBuildInputs = [ setuptools ];
+
+  propagatedBuildInputs = [ numpy ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "vnoise" ];
+
+  meta = with lib; {
+    description = "Vectorized, pure-Python Perlin noise library";
+    homepage = "https://github.com/plottertools/vnoise";
+    license = licenses.mit;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/vobject/default.nix b/pkgs/development/python-modules/vobject/default.nix
index 50ebd8c52824e..db8692e77b06e 100644
--- a/pkgs/development/python-modules/vobject/default.nix
+++ b/pkgs/development/python-modules/vobject/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi, isPyPy, python, python-dateutil }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  python,
+  python-dateutil,
+}:
 
 buildPythonPackage rec {
   version = "0.9.7";
@@ -7,7 +14,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-q3J7+B3oiYStpcEfBm8eFkmQPT49fskfHOloFyr9UlY=";
+    hash = "sha256-q3J7+B3oiYStpcEfBm8eFkmQPT49fskfHOloFyr9UlY=";
   };
 
   disabled = isPyPy;
@@ -20,6 +27,6 @@ buildPythonPackage rec {
     description = "Module for reading vCard and vCalendar files";
     homepage = "http://eventable.github.io/vobject/";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/voip-utils/default.nix b/pkgs/development/python-modules/voip-utils/default.nix
new file mode 100644
index 0000000000000..1799598a2a6b2
--- /dev/null
+++ b/pkgs/development/python-modules/voip-utils/default.nix
@@ -0,0 +1,47 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  opuslib,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "voip-utils";
+  version = "0.1.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "home-assistant-libs";
+    repo = "voip-utils";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-PG4L6KphH9JIZO76cCN8eClFE2CneEIExlXS+x79k3U=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "~=" ">="
+  '';
+
+  build-system = [ setuptools ];
+
+  pythonRelaxDeps = [ "opuslib" ];
+
+  dependencies = [ opuslib ];
+
+  pythonImportsCheck = [ "voip_utils" ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  # no tests as of v0.1.0
+  doCheck = false;
+
+  meta = {
+    changelog = "https://github.com/home-assistant-libs/voip-utils/blob/${src.rev}/CHANGELOG.md";
+    description = "Voice over IP Utilities";
+    homepage = "https://github.com/home-assistant-libs/voip-utils";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/volatile/default.nix b/pkgs/development/python-modules/volatile/default.nix
index 7be5989b159b3..931980ebc356f 100644
--- a/pkgs/development/python-modules/volatile/default.nix
+++ b/pkgs/development/python-modules/volatile/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-TYUvr0bscM/FaPk9oiF4Ob7HdKa2HlbpEFmaPfh4ir0=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "volatile"
-  ];
+  pythonImportsCheck = [ "volatile" ];
 
   meta = with lib; {
-    description = "A small extension for the tempfile module";
+    description = "Small extension for the tempfile module";
     homepage = "https://github.com/mbr/volatile";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/development/python-modules/volkswagencarnet/default.nix b/pkgs/development/python-modules/volkswagencarnet/default.nix
new file mode 100644
index 0000000000000..9335402ea3f90
--- /dev/null
+++ b/pkgs/development/python-modules/volkswagencarnet/default.nix
@@ -0,0 +1,55 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools-scm,
+  aiohttp,
+  beautifulsoup4,
+  lxml,
+  pyjwt,
+  freezegun,
+  pytest-asyncio,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "volkswagencarnet";
+  version = "5.0.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "robinostlund";
+    repo = "volkswagencarnet";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-NpfkhFGxd3VjLjQ8pPpamYgwc5zqWt5CojONe4L1s4s=";
+  };
+
+  postPatch = ''
+    substituteInPlace tests/conftest.py \
+      --replace-fail 'pytest_plugins = ["pytest_cov"]' 'pytest_plugins = []'
+  '';
+
+  build-system = [ setuptools-scm ];
+
+  dependencies = [
+    aiohttp
+    beautifulsoup4
+    lxml
+    pyjwt
+  ];
+
+  pythonImportsCheck = [ "volkswagencarnet" ];
+
+  nativeCheckInputs = [
+    freezegun
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  meta = {
+    description = "A python library for volkswagen carnet";
+    homepage = "https://github.com/robinostlund/volkswagencarnet";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/volkszaehler/default.nix b/pkgs/development/python-modules/volkszaehler/default.nix
index 648447536e379..6b14f37d9e08f 100644
--- a/pkgs/development/python-modules/volkszaehler/default.nix
+++ b/pkgs/development/python-modules/volkszaehler/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-7SB0x0BO9SMeMG1M/hH4fX7oDbtwPgCzyRrrUq1/WPo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   dependencies = [
     aiohttp
@@ -33,9 +32,7 @@ buildPythonPackage rec {
   # no tests are present
   doCheck = false;
 
-  pythonImportsCheck = [
-    "volkszaehler"
-  ];
+  pythonImportsCheck = [ "volkszaehler" ];
 
   meta = with lib; {
     description = "Python module for interacting with the Volkszahler API";
diff --git a/pkgs/development/python-modules/voluptuous-openapi/default.nix b/pkgs/development/python-modules/voluptuous-openapi/default.nix
new file mode 100644
index 0000000000000..43a38fa5d3b66
--- /dev/null
+++ b/pkgs/development/python-modules/voluptuous-openapi/default.nix
@@ -0,0 +1,43 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  voluptuous,
+
+  # tests
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "voluptuous-openapi";
+  version = "0.0.5";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "home-assistant-libs";
+    repo = "voluptuous-openapi";
+    rev = "v${version}";
+    hash = "sha256-QZi2uxFrYMSJVKIHTRBlGAM1sCD6oIzsZNQH7zkXL8w=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ voluptuous ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "voluptuous_openapi" ];
+
+  meta = with lib; {
+    changelog = "https://github.com/home-assistant-libs/voluptuous-openapi/releases/tag/${src.rev}";
+    description = "Convert voluptuous schemas to OpenAPI Schema object";
+    homepage = "https://github.com/home-assistant-libs/voluptuous-openapi";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/development/python-modules/voluptuous-serialize/default.nix b/pkgs/development/python-modules/voluptuous-serialize/default.nix
index c5e0093f44870..f23b771e83067 100644
--- a/pkgs/development/python-modules/voluptuous-serialize/default.nix
+++ b/pkgs/development/python-modules/voluptuous-serialize/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pytestCheckHook
-, voluptuous
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pytestCheckHook,
+  voluptuous,
 }:
 
-buildPythonPackage rec  {
+buildPythonPackage rec {
   pname = "voluptuous-serialize";
   version = "2.6.0";
   format = "setuptools";
@@ -20,17 +21,11 @@ buildPythonPackage rec  {
     hash = "sha256-vvreXSQDkA3JkZpOKZqJgMRyObJX/cSR8r+A26h9fNE=";
   };
 
-  propagatedBuildInputs = [
-    voluptuous
-  ];
+  propagatedBuildInputs = [ voluptuous ];
 
-  pythonImportsCheck = [
-    "voluptuous_serialize"
-  ];
+  pythonImportsCheck = [ "voluptuous_serialize" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Convert Voluptuous schemas to dictionaries so they can be serialized";
diff --git a/pkgs/development/python-modules/voluptuous-stubs/default.nix b/pkgs/development/python-modules/voluptuous-stubs/default.nix
index 840a7cc510048..1f77a12b41831 100644
--- a/pkgs/development/python-modules/voluptuous-stubs/default.nix
+++ b/pkgs/development/python-modules/voluptuous-stubs/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mypy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mypy,
 }:
 
 buildPythonPackage rec {
@@ -14,13 +15,9 @@ buildPythonPackage rec {
     hash = "sha256-cPscCIJC8g4RAjJStWSM13+DH2ks2RDI+XE8wTXPjMg=";
   };
 
-  nativeBuildInputs = [
-    mypy
-  ];
+  nativeBuildInputs = [ mypy ];
 
-  pythonImportsCheck = [
-    "voluptuous-stubs"
-  ];
+  pythonImportsCheck = [ "voluptuous-stubs" ];
 
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/voluptuous/default.nix b/pkgs/development/python-modules/voluptuous/default.nix
index 1f9d53412d3df..75293125764f2 100644
--- a/pkgs/development/python-modules/voluptuous/default.nix
+++ b/pkgs/development/python-modules/voluptuous/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "voluptuous";
-  version = "0.14.2";
+  version = "0.15.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -17,24 +18,16 @@ buildPythonPackage rec {
     owner = "alecthomas";
     repo = "voluptuous";
     rev = "refs/tags/${version}";
-    hash = "sha256-2a4lid9NibbvhHfs/fcyHgPRZ2HirIKuPYxMsl5oA4o=";
+    hash = "sha256-TGTdYme3ZRM51YFNX/ESFc6+3QpeO/gAXYW6MT73/Ss=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "voluptuous"
-  ];
+  pythonImportsCheck = [ "voluptuous" ];
 
-  pytestFlagsArray = [
-    "voluptuous/tests/"
-  ];
+  pytestFlagsArray = [ "voluptuous/tests/" ];
 
   meta = with lib; {
     description = "Python data validation library";
diff --git a/pkgs/development/python-modules/volvooncall/default.nix b/pkgs/development/python-modules/volvooncall/default.nix
index 33efbf4082ac2..23677ab4ec4f3 100644
--- a/pkgs/development/python-modules/volvooncall/default.nix
+++ b/pkgs/development/python-modules/volvooncall/default.nix
@@ -1,18 +1,17 @@
-{ lib
-, aiohttp
-, amqtt
-, buildPythonPackage
-, certifi
-, docopt
-, fetchFromGitHub
-, fetchpatch
-, geopy
-, mock
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, websockets
+{
+  lib,
+  aiohttp,
+  amqtt,
+  buildPythonPackage,
+  certifi,
+  docopt,
+  fetchFromGitHub,
+  fetchpatch,
+  geopy,
+  mock,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -38,9 +37,7 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   passthru.optional-dependencies = {
     console = [
@@ -60,9 +57,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ passthru.optional-dependencies.mqtt;
 
-  pythonImportsCheck = [
-    "volvooncall"
-  ];
+  pythonImportsCheck = [ "volvooncall" ];
 
   meta = with lib; {
     description = "Retrieve information from the Volvo On Call web service";
diff --git a/pkgs/development/python-modules/vowpalwabbit/default.nix b/pkgs/development/python-modules/vowpalwabbit/default.nix
index aae1d3fdf2371..558d47529b689 100644
--- a/pkgs/development/python-modules/vowpalwabbit/default.nix
+++ b/pkgs/development/python-modules/vowpalwabbit/default.nix
@@ -1,19 +1,20 @@
-{ stdenv
-, lib
-, fetchPypi
-, buildPythonPackage
-, cmake
-, python
-, zlib
-, ncurses
-, docutils
-, pygments
-, numpy
-, scipy
-, scikit-learn
-, spdlog
-, fmt
-, rapidjson
+{
+  stdenv,
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  cmake,
+  python,
+  zlib,
+  ncurses,
+  docutils,
+  pygments,
+  numpy,
+  scipy,
+  scikit-learn,
+  spdlog,
+  fmt,
+  rapidjson,
 }:
 
 buildPythonPackage rec {
@@ -21,14 +22,12 @@ buildPythonPackage rec {
   version = "9.9.0";
   format = "setuptools";
 
-  src = fetchPypi{
+  src = fetchPypi {
     inherit pname version;
     hash = "sha256-YCg2EI4rhEMwcVEzx9ES8Z3CoCddeUFVk4lZ0nuQJUc=";
   };
 
-  nativeBuildInputs = [
-    cmake
-  ];
+  nativeBuildInputs = [ cmake ];
 
   buildInputs = [
     docutils
@@ -56,7 +55,7 @@ buildPythonPackage rec {
   dontUseCmakeConfigure = true;
 
   # Python ctypes.find_library uses DYLD_LIBRARY_PATH.
-  preConfigure = lib.optionalString stdenv.isDarwin ''
+  preConfigure = lib.optionalString stdenv.hostPlatform.isDarwin ''
     export DYLD_LIBRARY_PATH="${python.pkgs.boost}/lib"
   '';
 
@@ -67,10 +66,11 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "Vowpal Wabbit is a fast machine learning library for online learning, and this is the python wrapper for the project.";
-    homepage    = "https://github.com/JohnLangford/vowpal_wabbit";
-    license     = licenses.bsd3;
-    broken      = stdenv.isAarch64;
+    description = "Vowpal Wabbit is a fast machine learning library for online learning, and this is the python wrapper for the project";
+    homepage = "https://github.com/JohnLangford/vowpal_wabbit";
+    license = licenses.bsd3;
     maintainers = with maintainers; [ teh ];
+    # Test again when new version is released
+    broken = stdenv.hostPlatform.isLinux;
   };
 }
diff --git a/pkgs/development/python-modules/vpk/default.nix b/pkgs/development/python-modules/vpk/default.nix
index 5a3a841a064d0..188ef50b36f12 100644
--- a/pkgs/development/python-modules/vpk/default.nix
+++ b/pkgs/development/python-modules/vpk/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     hash = "sha256-SPkPb8kveAR2cN9kd2plS+TjmBYBCfa6pJ0c22l69M0=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Library for working with Valve Pak files";
diff --git a/pkgs/development/python-modules/vprof/default.nix b/pkgs/development/python-modules/vprof/default.nix
index 1f41f7b9a2031..9454a25ad81a8 100644
--- a/pkgs/development/python-modules/vprof/default.nix
+++ b/pkgs/development/python-modules/vprof/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, wheel
-, psutil
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  wheel,
+  psutil,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     wheel
   ];
 
-  propagatedBuildInputs = [
-    psutil
-  ];
+  propagatedBuildInputs = [ psutil ];
 
   pythonImportsCheck = [ "vprof" ];
 
diff --git a/pkgs/development/python-modules/vqgan-jax/default.nix b/pkgs/development/python-modules/vqgan-jax/default.nix
index e917230b62b3f..87a16ca58bf56 100644
--- a/pkgs/development/python-modules/vqgan-jax/default.nix
+++ b/pkgs/development/python-modules/vqgan-jax/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flax
-, jax
-, jaxlib
-, transformers
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flax,
+  jax,
+  jaxlib,
+  transformers,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
 
   format = "setuptools";
 
-  buildInputs = [
-    jaxlib
-  ];
+  buildInputs = [ jaxlib ];
 
   propagatedBuildInputs = [
     flax
@@ -32,9 +31,7 @@ buildPythonPackage rec {
 
   doCheck = false;
 
-  pythonImportsCheck = [
-    "vqgan_jax"
-  ];
+  pythonImportsCheck = [ "vqgan_jax" ];
 
   meta = with lib; {
     description = "JAX implementation of VQGAN";
diff --git a/pkgs/development/python-modules/vsts-cd-manager/default.nix b/pkgs/development/python-modules/vsts-cd-manager/default.nix
index 8b4e036ac8f7b..94ebbbe5e4a37 100644
--- a/pkgs/development/python-modules/vsts-cd-manager/default.nix
+++ b/pkgs/development/python-modules/vsts-cd-manager/default.nix
@@ -1,5 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, msrest
-, mock
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  mock,
 }:
 
 buildPythonPackage rec {
@@ -12,7 +16,10 @@ buildPythonPackage rec {
     sha256 = "0ys4hrmjbxl4qr26qr3dhhs27yfwn1635vwjdqh1qgjmrmcr1c0b";
   };
 
-  propagatedBuildInputs = [ msrest mock ];
+  propagatedBuildInputs = [
+    msrest
+    mock
+  ];
 
   # no tests included
   doCheck = false;
@@ -23,6 +30,6 @@ buildPythonPackage rec {
     description = "Microsoft Azure API Management Client Library for Python";
     homepage = "https://github.com/Azure/azure-sdk-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/vsts/default.nix b/pkgs/development/python-modules/vsts/default.nix
index e91a203d7f14a..6c339204f3dc8 100644
--- a/pkgs/development/python-modules/vsts/default.nix
+++ b/pkgs/development/python-modules/vsts/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, lib
-, python
-, fetchPypi
-, msrest
+{
+  buildPythonPackage,
+  lib,
+  python,
+  fetchPypi,
+  msrest,
 }:
 
 buildPythonPackage rec {
@@ -30,6 +31,6 @@ buildPythonPackage rec {
     description = "Python APIs for interacting with and managing Azure DevOps";
     homepage = "https://github.com/microsoft/azure-devops-python-api";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/vsure/default.nix b/pkgs/development/python-modules/vsure/default.nix
index 941c753f0e505..837a13f38b444 100644
--- a/pkgs/development/python-modules/vsure/default.nix
+++ b/pkgs/development/python-modules/vsure/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, click
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  click,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "verisure"
-  ];
+  pythonImportsCheck = [ "verisure" ];
 
   meta = with lib; {
     description = "Python library for working with verisure devices";
diff --git a/pkgs/development/python-modules/vt-py/default.nix b/pkgs/development/python-modules/vt-py/default.nix
index adaf1ed7feb72..c0f593de627f8 100644
--- a/pkgs/development/python-modules/vt-py/default.nix
+++ b/pkgs/development/python-modules/vt-py/default.nix
@@ -3,17 +3,17 @@
   aiohttp,
   buildPythonPackage,
   fetchFromGitHub,
+  flask,
   pytest-asyncio,
   pytest-httpserver,
   pytestCheckHook,
-  pythonRelaxDepsHook,
   pythonOlder,
   setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "vt-py";
-  version = "0.18.2";
+  version = "0.18.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "VirusTotal";
     repo = "vt-py";
     rev = "refs/tags/${version}";
-    hash = "sha256-Uspd422JlBKlsD/K7NciYhYUb12wInN/Z7zTw7aYP28=";
+    hash = "sha256-pMljLoJBSLq1UxXn+iOeiebWgVfdxW8uzdXPsZtANuw=";
   };
 
   postPatch = ''
@@ -34,11 +34,11 @@ buildPythonPackage rec {
 
   build-system = [ setuptools ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [ aiohttp ];
 
   nativeCheckInputs = [
+    flask
     pytest-asyncio
     pytest-httpserver
     pytestCheckHook
diff --git a/pkgs/development/python-modules/vtjp/default.nix b/pkgs/development/python-modules/vtjp/default.nix
index 006374ee4ec78..76661675f6818 100644
--- a/pkgs/development/python-modules/vtjp/default.nix
+++ b/pkgs/development/python-modules/vtjp/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, requests
-, setuptools
-, tabulate
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
+  setuptools,
+  tabulate,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-3/toHY2PkG87J5bIMNJZHF/4mUvWaeHamMzPa1St7Xo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     requests
@@ -33,16 +32,14 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "vasttrafik"
-  ];
+  pythonImportsCheck = [ "vasttrafik" ];
 
   meta = with lib; {
-    description = "A Python wrapper and cli for Västtrafik public API";
+    description = "Python wrapper and cli for Västtrafik public API";
     mainProgram = "vtjp";
     homepage = "https://github.com/Miicroo/python-vasttrafik";
     changelog = "https://github.com/Miicroo/python-vasttrafik/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/vttlib/default.nix b/pkgs/development/python-modules/vttlib/default.nix
new file mode 100644
index 0000000000000..d90b9c3c3bfdb
--- /dev/null
+++ b/pkgs/development/python-modules/vttlib/default.nix
@@ -0,0 +1,51 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+  setuptools-scm,
+  fonttools,
+  pyparsing,
+  ufolib2,
+  ufo2ft,
+}:
+
+buildPythonPackage rec {
+  pname = "vttlib";
+  version = "0.12.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "daltonmaag";
+    repo = "vttLib";
+    rev = "v${version}";
+    hash = "sha256-ChsuzeFRQFDYGlAE4TWzE+et7yGLOfha1VqGcOdayOs=";
+  };
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    fonttools
+    pyparsing
+    ufolib2
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    ufo2ft
+  ];
+
+  pythonImportsCheck = [ "vttLib" ];
+
+  meta = {
+    description = "Dump, merge and compile Visual TrueType data in UFO3 with FontTools";
+    homepage = "https://github.com/daltonmaag/vttLib";
+    changelog = "https://github.com/daltonmaag/vttLib/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ jopejoe1 ];
+  };
+}
diff --git a/pkgs/development/python-modules/vulcan-api/default.nix b/pkgs/development/python-modules/vulcan-api/default.nix
index c04718c1daad2..37baf7f80f342 100644
--- a/pkgs/development/python-modules/vulcan-api/default.nix
+++ b/pkgs/development/python-modules/vulcan-api/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, aenum
-, aiodns
-, aiohttp
-, buildPythonPackage
-, faust-cchardet
-, fetchFromGitHub
-, pyopenssl
-, pythonOlder
-, pythonRelaxDepsHook
-, pytz
-, related
-, requests
-, uonet-request-signer-hebe
-, yarl
+{
+  lib,
+  aenum,
+  aiodns,
+  aiohttp,
+  buildPythonPackage,
+  faust-cchardet,
+  fetchFromGitHub,
+  pyopenssl,
+  pythonOlder,
+  pytz,
+  related,
+  requests,
+  uonet-request-signer-hebe,
+  yarl,
 }:
 
 buildPythonPackage rec {
@@ -29,13 +29,8 @@ buildPythonPackage rec {
     hash = "sha256-ebWKcRxAAkHVqV2RaftIHBRJe/TYSUxS+5Utxb0yhtw=";
   };
 
-  pythonRemoveDeps = [
-    "faust-cchardet"
-  ];
+  pythonRemoveDeps = [ "faust-cchardet" ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
 
   propagatedBuildInputs = [
     aenum
@@ -53,9 +48,7 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "vulcan"
-  ];
+  pythonImportsCheck = [ "vulcan" ];
 
   meta = with lib; {
     description = "Python library for UONET+ e-register API";
diff --git a/pkgs/development/python-modules/vultr/default.nix b/pkgs/development/python-modules/vultr/default.nix
index f2150153be3a1..4e10e0144243e 100644
--- a/pkgs/development/python-modules/vultr/default.nix
+++ b/pkgs/development/python-modules/vultr/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     sha256 = "00lc5hdhchvm0472p03019bp9541d8y2773xkjy8vblq9qhys8q7";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Tests disabled. They fail because they try to access the network
   doCheck = false;
diff --git a/pkgs/development/python-modules/vulture/default.nix b/pkgs/development/python-modules/vulture/default.nix
index e3a723ae07438..9a08899a4b2be 100644
--- a/pkgs/development/python-modules/vulture/default.nix
+++ b/pkgs/development/python-modules/vulture/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pint
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, toml
-, tomli
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pint,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  toml,
+  tomli,
 }:
 
 buildPythonPackage rec {
@@ -26,13 +27,9 @@ buildPythonPackage rec {
       --replace " --cov vulture --cov-report=html --cov-report=term --cov-report=xml --cov-append" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.11") [
-    tomli
-  ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.11") [ tomli ];
 
   nativeCheckInputs = [
     pint
@@ -40,9 +37,7 @@ buildPythonPackage rec {
     toml
   ];
 
-  pythonImportsCheck = [
-    "vulture"
-  ];
+  pythonImportsCheck = [ "vulture" ];
 
   meta = with lib; {
     description = "Finds unused code in Python programs";
diff --git a/pkgs/development/python-modules/vxi11/default.nix b/pkgs/development/python-modules/vxi11/default.nix
index ff88abb41453c..f68979cf2feae 100644
--- a/pkgs/development/python-modules/vxi11/default.nix
+++ b/pkgs/development/python-modules/vxi11/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchFromGitHub, nose }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  fetchpatch2,
+}:
 
 buildPythonPackage rec {
   pname = "python-vxi11";
@@ -12,10 +18,23 @@ buildPythonPackage rec {
     sha256 = "1xv7chp7rm0vrvbz6q57fpwhlgjz461h08q9zgmkcl2l0w96hmsn";
   };
 
-  nativeCheckInputs = [ nose ];
-  checkPhase = ''
-    nosetests
-  '';
+  patches = [
+    # set of patches from python-ivi/python-vxi11#47
+
+    # Fix deprecation warning
+    (fetchpatch2 {
+      url = "https://github.com/python-ivi/python-vxi11/commit/00722b1b8810ac38bfb47e8c49437055b600dfff.patch?full_index=1";
+      hash = "sha256-fZDhg578UY/Q/2li1EmL5WTPx1OUfyebzvvBVK/IyDU=";
+    })
+
+    # Removes nose dependency
+    (fetchpatch2 {
+      url = "https://github.com/python-ivi/python-vxi11/commit/a8ad324d645d6f7215f207f2cc2988dc49859698.patch?full_index=1";
+      hash = "sha256-nkH6ww4jBypEmZeatEb8fpFTB7x/AMppeEmuH9a4v6I=";
+    })
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "VXI-11 driver for controlling instruments over Ethernet";
diff --git a/pkgs/development/python-modules/w1thermsensor/default.nix b/pkgs/development/python-modules/w1thermsensor/default.nix
index 7aa81b158e245..eca3bdd9302ec 100644
--- a/pkgs/development/python-modules/w1thermsensor/default.nix
+++ b/pkgs/development/python-modules/w1thermsensor/default.nix
@@ -1,17 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pkgs
-, setuptools
-, aiofiles
-, click
-, coverage
-, tomli
-, pytest
-, pytest-mock
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  aiofiles,
+  click,
+  tomli,
+  pytest-mock,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -30,34 +28,27 @@ buildPythonPackage rec {
     sed -i 's/3\.5\.\*/3.5/' setup.py
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    click
-  ];
+  propagatedBuildInputs = [ click ];
 
   passthru.optional-dependencies = {
-    async = [
-      aiofiles
-    ];
+    async = [ aiofiles ];
   };
 
   # Don't try to load the kernel module in tests.
   env.W1THERMSENSOR_NO_KERNEL_MODULE = 1;
 
-  nativeCheckInputs = [
-    pytest-mock
-    pytest-asyncio
-    pytestCheckHook
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    tomli
-  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+  nativeCheckInputs =
+    [
+      pytest-mock
+      pytest-asyncio
+      pytestCheckHook
+    ]
+    ++ lib.optionals (pythonOlder "3.11") [ tomli ]
+    ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "w1thermsensor"
-  ];
+  pythonImportsCheck = [ "w1thermsensor" ];
 
   meta = with lib; {
     description = "Python interface to 1-Wire temperature sensors";
diff --git a/pkgs/development/python-modules/w3lib/default.nix b/pkgs/development/python-modules/w3lib/default.nix
index 66e48a2b7f292..620f30f2508f5 100644
--- a/pkgs/development/python-modules/w3lib/default.nix
+++ b/pkgs/development/python-modules/w3lib/default.nix
@@ -1,42 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools
 }:
 
 buildPythonPackage rec {
   pname = "w3lib";
-  version = "2.1.2";
-  format = "setuptools";
+  version = "2.2.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-7Vt06ZfuoqvjwTIfkW40QUTujpBypvM0Y+6OV/hYpLE=";
+    hash = "sha256-dW/y2Uxk5ByNfAxZ/qEqXQvFXjOlMceYi0oWPeubB90=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [
-    "w3lib"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = lib.optionals (pythonAtLeast "3.11") [
-    # regressed on Python 3.11.4
-    # https://github.com/scrapy/w3lib/issues/212
-    "test_safe_url_string_url"
-  ];
+  pythonImportsCheck = [ "w3lib" ];
 
   meta = with lib; {
     description = "Library of web-related functions";
     homepage = "https://github.com/scrapy/w3lib";
     changelog = "https://github.com/scrapy/w3lib/blob/v${version}/NEWS";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/wadllib/default.nix b/pkgs/development/python-modules/wadllib/default.nix
index 9fc8988de74dd..78d8db46b6d0e 100644
--- a/pkgs/development/python-modules/wadllib/default.nix
+++ b/pkgs/development/python-modules/wadllib/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, setuptools
-, lazr-uri
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+  setuptools,
+  lazr-uri,
 }:
 
 buildPythonPackage rec {
@@ -16,7 +17,10 @@ buildPythonPackage rec {
     sha256 = "acd9ad6a2c1007d34ca208e1da6341bbca1804c0e6850f954db04bdd7666c5fc";
   };
 
-  propagatedBuildInputs = [ setuptools lazr-uri ];
+  propagatedBuildInputs = [
+    setuptools
+    lazr-uri
+  ];
 
   doCheck = isPy3k;
 
diff --git a/pkgs/development/python-modules/wagtail-factories/default.nix b/pkgs/development/python-modules/wagtail-factories/default.nix
index 46a98c39821ab..03c2c09a23184 100644
--- a/pkgs/development/python-modules/wagtail-factories/default.nix
+++ b/pkgs/development/python-modules/wagtail-factories/default.nix
@@ -1,21 +1,22 @@
-{ buildPythonPackage
-, callPackage
-, factory-boy
-, fetchFromGitHub
-, lib
-, wagtail
+{
+  buildPythonPackage,
+  callPackage,
+  factory-boy,
+  fetchFromGitHub,
+  lib,
+  wagtail,
 }:
 
 buildPythonPackage rec {
   pname = "wagtail-factories";
-  version = "4.1.0";
+  version = "4.2.1";
   format = "setuptools";
 
   src = fetchFromGitHub {
     repo = pname;
     owner = "wagtail";
-    rev = "refs/tags/v${version}";
-    sha256 = "sha256-xNLHJ/8IZt3pzHAzr9swcL6GcIQyIjIFfoeHUW1i76U=";
+    rev = "refs/tags/${version}";
+    sha256 = "sha256-jo8VwrmxHBJnORmuR6eTLrf/eupNL2vhXcw81EzfTxM=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/wagtail-factories/tests.nix b/pkgs/development/python-modules/wagtail-factories/tests.nix
index b340705f2e882..2b4c758440329 100644
--- a/pkgs/development/python-modules/wagtail-factories/tests.nix
+++ b/pkgs/development/python-modules/wagtail-factories/tests.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, django-pattern-library
-, pytest-django
-, pytestCheckHook
-, wagtail
-, wagtail-factories
+{
+  buildPythonPackage,
+  django-pattern-library,
+  pytest-django,
+  pytestCheckHook,
+  wagtail,
+  wagtail-factories,
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/wagtail-localize/default.nix b/pkgs/development/python-modules/wagtail-localize/default.nix
index 9a40ca84f8603..5312633cd8036 100644
--- a/pkgs/development/python-modules/wagtail-localize/default.nix
+++ b/pkgs/development/python-modules/wagtail-localize/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, dj-database-url
-, django
-, django-rq
-, fetchFromGitHub
-, flit-core
-, freezegun
-, google-cloud-translate
-, polib
-, python
-, pythonOlder
-, typing-extensions
-, wagtail
-, wagtail-modeladmin
+{
+  lib,
+  buildPythonPackage,
+  dj-database-url,
+  django,
+  django-rq,
+  fetchFromGitHub,
+  flit-core,
+  freezegun,
+  google-cloud-translate,
+  polib,
+  python,
+  pythonOlder,
+  typing-extensions,
+  wagtail,
+  wagtail-modeladmin,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +30,7 @@ buildPythonPackage rec {
     hash = "sha256-ENdUXfvQOfd9cgHr6fd5Hf+8AJXFix3YbsYJQfpu4ZE=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     django
@@ -49,9 +48,7 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    google = [
-      google-cloud-translate
-    ];
+    google = [ google-cloud-translate ];
   };
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/wagtail-modeladmin/default.nix b/pkgs/development/python-modules/wagtail-modeladmin/default.nix
index cf5352238cab9..6b46643985050 100644
--- a/pkgs/development/python-modules/wagtail-modeladmin/default.nix
+++ b/pkgs/development/python-modules/wagtail-modeladmin/default.nix
@@ -1,17 +1,12 @@
-{ lib
-, buildPythonPackage
-, dj-database-url
-, django
-, django-rq
-, fetchFromGitHub
-, flit-core
-, freezegun
-, google-cloud-translate
-, polib
-, python
-, pythonOlder
-, typing-extensions
-, wagtail
+{
+  lib,
+  buildPythonPackage,
+  dj-database-url,
+  fetchFromGitHub,
+  flit-core,
+  python,
+  pythonOlder,
+  wagtail,
 }:
 
 buildPythonPackage rec {
@@ -28,17 +23,11 @@ buildPythonPackage rec {
     hash = "sha256-J6ViGf7lqUvl5EV4/LbADVDp15foY9bUZygs1dSDlKw=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    wagtail
-  ];
+  propagatedBuildInputs = [ wagtail ];
 
-  nativeCheckInputs = [
-    dj-database-url
-  ];
+  nativeCheckInputs = [ dj-database-url ];
 
   pythonImportsCheck = [ "wagtail_modeladmin" ];
 
diff --git a/pkgs/development/python-modules/wagtail/default.nix b/pkgs/development/python-modules/wagtail/default.nix
index 46081138403d8..ae55189f99c6a 100644
--- a/pkgs/development/python-modules/wagtail/default.nix
+++ b/pkgs/development/python-modules/wagtail/default.nix
@@ -1,38 +1,39 @@
-{ lib
-, anyascii
-, beautifulsoup4
-, buildPythonPackage
-, callPackage
-, django
-, django-filter
-, django-modelcluster
-, django-taggit
-, django-treebeard
-, djangorestframework
-, draftjs-exporter
-, fetchPypi
-, html5lib
-, l18n
-, laces
-, openpyxl
-, permissionedforms
-, pillow
-, pythonOlder
-, requests
-, telepath
-, willow
+{
+  lib,
+  anyascii,
+  beautifulsoup4,
+  buildPythonPackage,
+  callPackage,
+  django,
+  django-filter,
+  django-modelcluster,
+  django-taggit,
+  django-treebeard,
+  djangorestframework,
+  draftjs-exporter,
+  fetchPypi,
+  html5lib,
+  l18n,
+  laces,
+  openpyxl,
+  permissionedforms,
+  pillow,
+  pythonOlder,
+  requests,
+  telepath,
+  willow,
 }:
 
 buildPythonPackage rec {
   pname = "wagtail";
-  version = "6.0.2";
+  version = "6.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-58/DwPU/swLxeY8OAqesYHirAusOhwPA9xzL0/GOOG8=";
+    hash = "sha256-WQhujKGBsQ8nSxE5JFAFBN7W/BaCTBl283w8vd0QDSQ=";
   };
 
   postPatch = ''
@@ -70,7 +71,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "wagtail" ];
 
   meta = with lib; {
-    description = "A Django content management system focused on flexibility and user experience";
+    description = "Django content management system focused on flexibility and user experience";
     mainProgram = "wagtail";
     homepage = "https://github.com/wagtail/wagtail";
     changelog = "https://github.com/wagtail/wagtail/blob/v${version}/CHANGELOG.txt";
diff --git a/pkgs/development/python-modules/wagtail/tests.nix b/pkgs/development/python-modules/wagtail/tests.nix
index 23eb87c1b17c2..de45570c41ca3 100644
--- a/pkgs/development/python-modules/wagtail/tests.nix
+++ b/pkgs/development/python-modules/wagtail/tests.nix
@@ -1,16 +1,17 @@
-{ azure-mgmt-cdn
-, azure-mgmt-frontdoor
-, boto3
-, buildPythonPackage
-, django-pattern-library
-, elasticsearch
-, freezegun
-, jinja2
-, python-dateutil
-, python
-, pytz
-, wagtail
-, wagtail-factories
+{
+  azure-mgmt-cdn,
+  azure-mgmt-frontdoor,
+  boto3,
+  buildPythonPackage,
+  django-pattern-library,
+  elasticsearch,
+  freezegun,
+  jinja2,
+  python-dateutil,
+  python,
+  pytz,
+  wagtail,
+  wagtail-factories,
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/waitress-django/default.nix b/pkgs/development/python-modules/waitress-django/default.nix
index fad82f4952ce2..9358f20e1a33d 100644
--- a/pkgs/development/python-modules/waitress-django/default.nix
+++ b/pkgs/development/python-modules/waitress-django/default.nix
@@ -1,16 +1,39 @@
-{ lib, buildPythonPackage, django, waitress }:
+{
+  lib,
+  buildPythonPackage,
+  setuptools,
+  django,
+  waitress,
+}:
+
+let
+  fs = lib.fileset;
+in
 
 buildPythonPackage {
   pname = "waitress-django";
   version = "1.0.0";
-  format = "setuptools";
+  pyproject = true;
+
+  src = fs.toSource {
+    root = ./.;
+    fileset = fs.unions [
+      ./setup.py
+      ./src
+    ];
+  };
+
+  build-system = [ setuptools ];
+
+  pythonPath = [
+    django
+    waitress
+  ];
 
-  src = ./.;
-  pythonPath = [ django waitress ];
   doCheck = false;
 
   meta = with lib; {
-    description = "A waitress WSGI server serving django";
+    description = "Waitress WSGI server serving django";
     mainProgram = "waitress-serve-django";
     license = licenses.mit;
     maintainers = with maintainers; [ basvandijk ];
diff --git a/pkgs/development/python-modules/waitress/default.nix b/pkgs/development/python-modules/waitress/default.nix
index cf8d0eac97b22..933823a748c5c 100644
--- a/pkgs/development/python-modules/waitress/default.nix
+++ b/pkgs/development/python-modules/waitress/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -10,17 +11,16 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-AF2kebBBNM3Z3WAtHufEnXneBTdhDWU2dMxsveIiuKE=";
+    hash = "sha256-AF2kebBBNM3Z3WAtHufEnXneBTdhDWU2dMxsveIiuKE=";
   };
 
   doCheck = false;
 
   meta = with lib; {
-     homepage = "https://github.com/Pylons/waitress";
-     description = "Waitress WSGI server";
-     mainProgram = "waitress-serve";
-     license = licenses.zpl20;
-     maintainers = with maintainers; [ domenkozar ];
+    homepage = "https://github.com/Pylons/waitress";
+    description = "Waitress WSGI server";
+    mainProgram = "waitress-serve";
+    license = licenses.zpl20;
+    maintainers = with maintainers; [ domenkozar ];
   };
-
 }
diff --git a/pkgs/development/python-modules/wakeonlan/default.nix b/pkgs/development/python-modules/wakeonlan/default.nix
index ea4f215a129e0..6d2125c8e735a 100644
--- a/pkgs/development/python-modules/wakeonlan/default.nix
+++ b/pkgs/development/python-modules/wakeonlan/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,21 +21,13 @@ buildPythonPackage rec {
     hash = "sha256-VPdklyD3GVn0cex4I6zV61I0bUr4KQp8DdMKAM/r4io=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "test_wakeonlan.py"
-  ];
+  pytestFlagsArray = [ "test_wakeonlan.py" ];
 
-  pythonImportsCheck = [
-    "wakeonlan"
-  ];
+  pythonImportsCheck = [ "wakeonlan" ];
 
   meta = with lib; {
     description = "Python module for wake on lan";
diff --git a/pkgs/development/python-modules/wallbox/default.nix b/pkgs/development/python-modules/wallbox/default.nix
index 38e2d8a89e00f..e91470ecffe44 100644
--- a/pkgs/development/python-modules/wallbox/default.nix
+++ b/pkgs/development/python-modules/wallbox/default.nix
@@ -1,25 +1,31 @@
-{ lib
-, aenum
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
-, simplejson
+{
+  lib,
+  aenum,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
+  setuptools,
+  simplejson,
 }:
 
 buildPythonPackage rec {
   pname = "wallbox";
-  version = "0.6.0";
-  format = "setuptools";
+  version = "0.7.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-COZHMkAbTFZKi/b4e6toC4gPj1MPfGN4aBVi6SglrBI=";
+    hash = "sha256-8taZpC1N5ZsVurh10WosZvg7WDmord+PDfhHpRlfqBE=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     aenum
     requests
     simplejson
@@ -28,9 +34,7 @@ buildPythonPackage rec {
   # no tests implemented
   doCheck = false;
 
-  pythonImportsCheck = [
-    "wallbox"
-  ];
+  pythonImportsCheck = [ "wallbox" ];
 
   meta = with lib; {
     description = "Module for interacting with Wallbox EV charger api";
diff --git a/pkgs/development/python-modules/wallet-py3k/default.nix b/pkgs/development/python-modules/wallet-py3k/default.nix
index f78463e6748af..fb50398d5be4e 100644
--- a/pkgs/development/python-modules/wallet-py3k/default.nix
+++ b/pkgs/development/python-modules/wallet-py3k/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, substituteAll
-, openssl
-, setuptools
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  substituteAll,
+  openssl,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -24,19 +25,13 @@ buildPythonPackage rec {
     })
   ];
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    six
-  ];
+  dependencies = [ six ];
 
   doCheck = false; # no tests
 
-  pythonImportsCheck = [
-    "wallet"
-  ];
+  pythonImportsCheck = [ "wallet" ];
 
   meta = with lib; {
     description = "Passbook file generator";
diff --git a/pkgs/development/python-modules/walrus/default.nix b/pkgs/development/python-modules/walrus/default.nix
index 73376590bda3d..976037f928893 100644
--- a/pkgs/development/python-modules/walrus/default.nix
+++ b/pkgs/development/python-modules/walrus/default.nix
@@ -1,10 +1,12 @@
-{ lib
-, pkgs
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, redis
-, unittestCheckHook
+{
+  lib,
+  pkgs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  redis,
+  unittestCheckHook,
+  fetchpatch,
 }:
 
 buildPythonPackage rec {
@@ -21,13 +23,19 @@ buildPythonPackage rec {
     hash = "sha256-jinYMGSBAY8HTg92qU/iU5vGIrrDr5SeQG0XjsBVfcc=";
   };
 
-  propagatedBuildInputs = [
-    redis
+  patches = [
+    # distutils has been deprecated, this wraps its import inside a try-catch
+    # and fallsback to a fallback import.
+    # Should not be necessary in future versions.
+    (fetchpatch {
+      url = "https://github.com/coleifer/walrus/commit/79e20c89aa4015017ef8a3e0b5c27ca2731dc9b2.patch";
+      hash = "sha256-hCpvki6SV3KYhicjjUMP4VrKMEerMjq2n1BgozXKDO8=";
+    })
   ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  propagatedBuildInputs = [ redis ];
+
+  nativeCheckInputs = [ unittestCheckHook ];
 
   preCheck = ''
     ${pkgs.redis}/bin/redis-server &
@@ -38,9 +46,9 @@ buildPythonPackage rec {
     kill $REDIS_PID
   '';
 
-  pythonImportsCheck = [
-    "walrus"
-  ];
+  pythonImportsCheck = [ "walrus" ];
+
+  __darwinAllowLocalNetworking = true;
 
   meta = with lib; {
     description = "Lightweight Python utilities for working with Redis";
diff --git a/pkgs/development/python-modules/wand/default.nix b/pkgs/development/python-modules/wand/default.nix
index 416fa74eaed51..a559c0a4a3341 100644
--- a/pkgs/development/python-modules/wand/default.nix
+++ b/pkgs/development/python-modules/wand/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, imagemagickBig
-, py
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  imagemagickBig,
+  py,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/wandb/default.nix b/pkgs/development/python-modules/wandb/default.nix
index 61f32785757d8..59dc57777e6d1 100644
--- a/pkgs/development/python-modules/wandb/default.nix
+++ b/pkgs/development/python-modules/wandb/default.nix
@@ -1,56 +1,55 @@
-{ lib
-, stdenv
-, appdirs
-, azure-containerregistry
-, azure-core
-, azure-identity
-, azure-storage-blob
-, bokeh
-, boto3
-, buildPythonPackage
-, click
-, docker-pycreds
-, fetchFromGitHub
-, flask
-, git
-, gitpython
-, google-cloud-artifact-registry
-, google-cloud-compute
-, google-cloud-storage
-, hypothesis
-, imageio
-, jsonref
-, jsonschema
-, keras
-, kubernetes
-, matplotlib
-, mlflow
-, moviepy
-, nbclient
-, nbformat
-, pandas
-, parameterized
-, pathtools
-, protobuf
-, psutil
-, pydantic
-, pyfakefs
-, pytest-mock
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, pyyaml
-, requests
-, responses
-, scikit-learn
-, sentry-sdk
-, setproctitle
-, setuptools
-, soundfile
-, substituteAll
-, torch
-, tqdm
+{
+  lib,
+  stdenv,
+  appdirs,
+  azure-containerregistry,
+  azure-core,
+  azure-identity,
+  azure-storage-blob,
+  bokeh,
+  boto3,
+  buildPythonPackage,
+  click,
+  docker-pycreds,
+  fetchFromGitHub,
+  flask,
+  git,
+  gitpython,
+  google-cloud-artifact-registry,
+  google-cloud-compute,
+  google-cloud-storage,
+  hypothesis,
+  imageio,
+  jsonref,
+  jsonschema,
+  keras,
+  kubernetes,
+  matplotlib,
+  mlflow,
+  moviepy,
+  nbclient,
+  nbformat,
+  pandas,
+  parameterized,
+  protobuf,
+  psutil,
+  pydantic,
+  pyfakefs,
+  pytest-mock,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  requests,
+  responses,
+  scikit-learn,
+  sentry-sdk,
+  setproctitle,
+  setuptools,
+  soundfile,
+  substituteAll,
+  torch,
+  tqdm,
 }:
 
 buildPythonPackage rec {
@@ -76,7 +75,6 @@ buildPythonPackage rec {
   ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -86,7 +84,6 @@ buildPythonPackage rec {
     click
     docker-pycreds
     gitpython
-    pathtools
     protobuf
     psutil
     pyyaml
@@ -147,166 +144,176 @@ buildPythonPackage rec {
     "tests/pytest_tests"
   ];
 
-  disabledTestPaths = [
-    # Tests that try to get chatty over sockets or spin up servers, not possible in the nix build environment.
-    "tests/pytest_tests/system_tests/test_notebooks/test_notebooks.py"
-    "tests/pytest_tests/unit_tests_old/test_cli.py"
-    "tests/pytest_tests/unit_tests_old/test_data_types.py"
-    "tests/pytest_tests/unit_tests_old/test_file_stream.py"
-    "tests/pytest_tests/unit_tests_old/test_file_upload.py"
-    "tests/pytest_tests/unit_tests_old/test_footer.py"
-    "tests/pytest_tests/unit_tests_old/test_internal_api.py"
-    "tests/pytest_tests/unit_tests_old/test_metric_internal.py"
-    "tests/pytest_tests/unit_tests_old/test_public_api.py"
-    "tests/pytest_tests/unit_tests_old/test_runtime.py"
-    "tests/pytest_tests/unit_tests_old/test_sender.py"
-    "tests/pytest_tests/unit_tests_old/test_summary.py"
-    "tests/pytest_tests/unit_tests_old/test_tb_watcher.py"
-    "tests/pytest_tests/unit_tests_old/test_time_resolution.py"
-    "tests/pytest_tests/unit_tests_old/test_wandb_agent.py"
-    "tests/pytest_tests/unit_tests_old/test_wandb_integration.py"
-    "tests/pytest_tests/unit_tests_old/test_wandb_run.py"
-    "tests/pytest_tests/unit_tests_old/test_wandb.py"
-    "tests/pytest_tests/unit_tests_old/tests_launch/test_launch_aws.py"
-    "tests/pytest_tests/unit_tests_old/tests_launch/test_launch_cli.py"
-    "tests/pytest_tests/unit_tests_old/tests_launch/test_launch_docker.py"
-    "tests/pytest_tests/unit_tests_old/tests_launch/test_launch.py"
-    "tests/pytest_tests/unit_tests/test_cli.py"
-    "tests/pytest_tests/unit_tests/test_data_types.py"
-    "tests/pytest_tests/unit_tests/test_internal_api.py"
-    "tests/pytest_tests/unit_tests/test_mode_disabled.py"
-    "tests/pytest_tests/unit_tests/test_model_workflows.py"
-    "tests/pytest_tests/unit_tests/test_plots.py"
-    "tests/pytest_tests/unit_tests/test_public_api.py"
-    "tests/pytest_tests/unit_tests/test_sender.py"
-    "tests/pytest_tests/unit_tests/test_util.py"
-    "tests/pytest_tests/unit_tests/test_wandb_verify.py"
+  disabledTestPaths =
+    [
+      # Tests that try to get chatty over sockets or spin up servers, not possible in the nix build environment.
+      "tests/pytest_tests/system_tests/test_notebooks/test_notebooks.py"
+      "tests/pytest_tests/unit_tests_old/test_cli.py"
+      "tests/pytest_tests/unit_tests_old/test_data_types.py"
+      "tests/pytest_tests/unit_tests_old/test_file_stream.py"
+      "tests/pytest_tests/unit_tests_old/test_file_upload.py"
+      "tests/pytest_tests/unit_tests_old/test_footer.py"
+      "tests/pytest_tests/unit_tests_old/test_internal_api.py"
+      "tests/pytest_tests/unit_tests_old/test_metric_internal.py"
+      "tests/pytest_tests/unit_tests_old/test_public_api.py"
+      "tests/pytest_tests/unit_tests_old/test_runtime.py"
+      "tests/pytest_tests/unit_tests_old/test_sender.py"
+      "tests/pytest_tests/unit_tests_old/test_summary.py"
+      "tests/pytest_tests/unit_tests_old/test_tb_watcher.py"
+      "tests/pytest_tests/unit_tests_old/test_time_resolution.py"
+      "tests/pytest_tests/unit_tests_old/test_wandb_agent.py"
+      "tests/pytest_tests/unit_tests_old/test_wandb_integration.py"
+      "tests/pytest_tests/unit_tests_old/test_wandb_run.py"
+      "tests/pytest_tests/unit_tests_old/test_wandb.py"
+      "tests/pytest_tests/unit_tests_old/tests_launch/test_launch_aws.py"
+      "tests/pytest_tests/unit_tests_old/tests_launch/test_launch_cli.py"
+      "tests/pytest_tests/unit_tests_old/tests_launch/test_launch_docker.py"
+      "tests/pytest_tests/unit_tests_old/tests_launch/test_launch.py"
+      "tests/pytest_tests/unit_tests/test_cli.py"
+      "tests/pytest_tests/unit_tests/test_data_types.py"
+      "tests/pytest_tests/unit_tests/test_internal_api.py"
+      "tests/pytest_tests/unit_tests/test_mode_disabled.py"
+      "tests/pytest_tests/unit_tests/test_model_workflows.py"
+      "tests/pytest_tests/unit_tests/test_plots.py"
+      "tests/pytest_tests/unit_tests/test_public_api.py"
+      "tests/pytest_tests/unit_tests/test_sender.py"
+      "tests/pytest_tests/unit_tests/test_util.py"
+      "tests/pytest_tests/unit_tests/test_wandb_verify.py"
 
-    # Requires docker access
-    "tests/pytest_tests/system_tests/test_artifacts/test_artifact_saver.py"
-    "tests/pytest_tests/system_tests/test_artifacts/test_misc.py"
-    "tests/pytest_tests/system_tests/test_artifacts/test_misc2.py"
-    "tests/pytest_tests/system_tests/test_artifacts/test_object_references.py"
-    "tests/pytest_tests/system_tests/test_artifacts/test_wandb_artifacts_full.py"
-    "tests/pytest_tests/system_tests/test_artifacts/test_wandb_artifacts.py"
-    "tests/pytest_tests/system_tests/test_core/test_cli_full.py"
-    "tests/pytest_tests/system_tests/test_core/test_data_types_full.py"
-    "tests/pytest_tests/system_tests/test_core/test_file_stream_internal.py"
-    "tests/pytest_tests/system_tests/test_core/test_file_upload.py"
-    "tests/pytest_tests/system_tests/test_core/test_footer.py"
-    "tests/pytest_tests/system_tests/test_core/test_keras_full.py"
-    "tests/pytest_tests/system_tests/test_core/test_label_full.py"
-    "tests/pytest_tests/system_tests/test_core/test_metric_full.py"
-    "tests/pytest_tests/system_tests/test_core/test_metric_internal.py"
-    "tests/pytest_tests/system_tests/test_core/test_mode_disabled_full.py"
-    "tests/pytest_tests/system_tests/test_core/test_model_workflow.py"
-    "tests/pytest_tests/system_tests/test_core/test_mp_full.py"
-    "tests/pytest_tests/system_tests/test_core/test_public_api.py"
-    "tests/pytest_tests/system_tests/test_core/test_redir_full.py"
-    "tests/pytest_tests/system_tests/test_core/test_report_api.py"
-    "tests/pytest_tests/system_tests/test_core/test_save_policies.py"
-    "tests/pytest_tests/system_tests/test_core/test_sender.py"
-    "tests/pytest_tests/system_tests/test_core/test_start_method.py"
-    "tests/pytest_tests/system_tests/test_core/test_system_info.py"
-    "tests/pytest_tests/system_tests/test_core/test_tb_watcher.py"
-    "tests/pytest_tests/system_tests/test_core/test_telemetry_full.py"
-    "tests/pytest_tests/system_tests/test_core/test_time_resolution.py"
-    "tests/pytest_tests/system_tests/test_core/test_torch_full.py"
-    "tests/pytest_tests/system_tests/test_core/test_validation_data_logger.py"
-    "tests/pytest_tests/system_tests/test_core/test_wandb_init.py"
-    "tests/pytest_tests/system_tests/test_core/test_wandb_integration.py"
-    "tests/pytest_tests/system_tests/test_core/test_wandb_run.py"
-    "tests/pytest_tests/system_tests/test_core/test_wandb_settings.py"
-    "tests/pytest_tests/system_tests/test_core/test_wandb_tensorflow.py"
-    "tests/pytest_tests/system_tests/test_core/test_wandb_verify.py"
-    "tests/pytest_tests/system_tests/test_core/test_wandb.py"
-    "tests/pytest_tests/system_tests/test_importers/test_import_mlflow.py"
-    "tests/pytest_tests/system_tests/test_launch/test_github_reference.py"
-    "tests/pytest_tests/system_tests/test_launch/test_job_status_tracker.py"
-    "tests/pytest_tests/system_tests/test_launch/test_job.py"
-    "tests/pytest_tests/system_tests/test_launch/test_launch_add.py"
-    "tests/pytest_tests/system_tests/test_launch/test_launch_cli.py"
-    "tests/pytest_tests/system_tests/test_launch/test_launch_kubernetes.py"
-    "tests/pytest_tests/system_tests/test_launch/test_launch_local_container.py"
-    "tests/pytest_tests/system_tests/test_launch/test_launch_run.py"
-    "tests/pytest_tests/system_tests/test_launch/test_launch_sagemaker.py"
-    "tests/pytest_tests/system_tests/test_launch/test_launch_sweep_cli.py"
-    "tests/pytest_tests/system_tests/test_launch/test_launch_sweep.py"
-    "tests/pytest_tests/system_tests/test_launch/test_launch_vertex.py"
-    "tests/pytest_tests/system_tests/test_launch/test_launch.py"
-    "tests/pytest_tests/system_tests/test_launch/test_wandb_reference.py"
-    "tests/pytest_tests/system_tests/test_nexus/test_nexus.py"
-    "tests/pytest_tests/system_tests/test_sweep/test_public_api.py"
-    "tests/pytest_tests/system_tests/test_sweep/test_sweep_scheduler.py"
-    "tests/pytest_tests/system_tests/test_sweep/test_sweep_utils.py"
-    "tests/pytest_tests/system_tests/test_sweep/test_wandb_agent_full.py"
-    "tests/pytest_tests/system_tests/test_sweep/test_wandb_agent.py"
-    "tests/pytest_tests/system_tests/test_sweep/test_wandb_sweep.py"
-    "tests/pytest_tests/system_tests/test_system_metrics/test_open_metrics.py"
-    "tests/pytest_tests/system_tests/test_system_metrics/test_system_monitor.py"
+      # Requires docker access
+      "tests/pytest_tests/system_tests/test_artifacts/test_artifact_saver.py"
+      "tests/pytest_tests/system_tests/test_artifacts/test_misc.py"
+      "tests/pytest_tests/system_tests/test_artifacts/test_misc2.py"
+      "tests/pytest_tests/system_tests/test_artifacts/test_object_references.py"
+      "tests/pytest_tests/system_tests/test_artifacts/test_wandb_artifacts_full.py"
+      "tests/pytest_tests/system_tests/test_artifacts/test_wandb_artifacts.py"
+      "tests/pytest_tests/system_tests/test_core/test_cli_full.py"
+      "tests/pytest_tests/system_tests/test_core/test_data_types_full.py"
+      "tests/pytest_tests/system_tests/test_core/test_file_stream_internal.py"
+      "tests/pytest_tests/system_tests/test_core/test_file_upload.py"
+      "tests/pytest_tests/system_tests/test_core/test_footer.py"
+      "tests/pytest_tests/system_tests/test_core/test_keras_full.py"
+      "tests/pytest_tests/system_tests/test_core/test_label_full.py"
+      "tests/pytest_tests/system_tests/test_core/test_metric_full.py"
+      "tests/pytest_tests/system_tests/test_core/test_metric_internal.py"
+      "tests/pytest_tests/system_tests/test_core/test_mode_disabled_full.py"
+      "tests/pytest_tests/system_tests/test_core/test_model_workflow.py"
+      "tests/pytest_tests/system_tests/test_core/test_mp_full.py"
+      "tests/pytest_tests/system_tests/test_core/test_public_api.py"
+      "tests/pytest_tests/system_tests/test_core/test_redir_full.py"
+      "tests/pytest_tests/system_tests/test_core/test_report_api.py"
+      "tests/pytest_tests/system_tests/test_core/test_save_policies.py"
+      "tests/pytest_tests/system_tests/test_core/test_sender.py"
+      "tests/pytest_tests/system_tests/test_core/test_start_method.py"
+      "tests/pytest_tests/system_tests/test_core/test_system_info.py"
+      "tests/pytest_tests/system_tests/test_core/test_tb_watcher.py"
+      "tests/pytest_tests/system_tests/test_core/test_telemetry_full.py"
+      "tests/pytest_tests/system_tests/test_core/test_time_resolution.py"
+      "tests/pytest_tests/system_tests/test_core/test_torch_full.py"
+      "tests/pytest_tests/system_tests/test_core/test_validation_data_logger.py"
+      "tests/pytest_tests/system_tests/test_core/test_wandb_init.py"
+      "tests/pytest_tests/system_tests/test_core/test_wandb_integration.py"
+      "tests/pytest_tests/system_tests/test_core/test_wandb_run.py"
+      "tests/pytest_tests/system_tests/test_core/test_wandb_settings.py"
+      "tests/pytest_tests/system_tests/test_core/test_wandb_tensorflow.py"
+      "tests/pytest_tests/system_tests/test_core/test_wandb_verify.py"
+      "tests/pytest_tests/system_tests/test_core/test_wandb.py"
+      "tests/pytest_tests/system_tests/test_importers/test_import_mlflow.py"
+      "tests/pytest_tests/system_tests/test_launch/test_github_reference.py"
+      "tests/pytest_tests/system_tests/test_launch/test_job_status_tracker.py"
+      "tests/pytest_tests/system_tests/test_launch/test_job.py"
+      "tests/pytest_tests/system_tests/test_launch/test_launch_add.py"
+      "tests/pytest_tests/system_tests/test_launch/test_launch_cli.py"
+      "tests/pytest_tests/system_tests/test_launch/test_launch_kubernetes.py"
+      "tests/pytest_tests/system_tests/test_launch/test_launch_local_container.py"
+      "tests/pytest_tests/system_tests/test_launch/test_launch_run.py"
+      "tests/pytest_tests/system_tests/test_launch/test_launch_sagemaker.py"
+      "tests/pytest_tests/system_tests/test_launch/test_launch_sweep_cli.py"
+      "tests/pytest_tests/system_tests/test_launch/test_launch_sweep.py"
+      "tests/pytest_tests/system_tests/test_launch/test_launch_vertex.py"
+      "tests/pytest_tests/system_tests/test_launch/test_launch.py"
+      "tests/pytest_tests/system_tests/test_launch/test_wandb_reference.py"
+      "tests/pytest_tests/system_tests/test_nexus/test_nexus.py"
+      "tests/pytest_tests/system_tests/test_sweep/test_public_api.py"
+      "tests/pytest_tests/system_tests/test_sweep/test_sweep_scheduler.py"
+      "tests/pytest_tests/system_tests/test_sweep/test_sweep_utils.py"
+      "tests/pytest_tests/system_tests/test_sweep/test_wandb_agent_full.py"
+      "tests/pytest_tests/system_tests/test_sweep/test_wandb_agent.py"
+      "tests/pytest_tests/system_tests/test_sweep/test_wandb_sweep.py"
+      "tests/pytest_tests/system_tests/test_system_metrics/test_open_metrics.py"
+      "tests/pytest_tests/system_tests/test_system_metrics/test_system_monitor.py"
 
-    # Tries to access /homeless-shelter
-    "tests/pytest_tests/unit_tests/test_tables.py"
+      # Tries to access /homeless-shelter
+      "tests/pytest_tests/unit_tests/test_tables.py"
 
-    # E       AssertionError: assert 'Cannot use both --async and --queue with wandb launch' in 'wandb: ERROR Find detailed error logs at: /build/source/wandb/debug-cli.nixbld.log\nError: The wandb service process exited with 1. Ensure that `sys.executable` is a valid python interpreter. You can override it with the `_executable` setting or with the `WANDB__EXECUTABLE` environment variable.\n'
-    # E        +  where 'wandb: ERROR Find detailed error logs at: /build/source/wandb/debug-cli.nixbld.log\nError: The wandb service process exited with 1. Ensure that `sys.executable` is a valid python interpreter. You can override it with the `_executable` setting or with the `WANDB__EXECUTABLE` environment variable.\n' = <Result SystemExit(1)>.output
-    "tests/pytest_tests/unit_tests_old/tests_launch/test_launch_jobs.py"
+      # E       AssertionError: assert 'Cannot use both --async and --queue with wandb launch' in 'wandb: ERROR Find detailed error logs at: /build/source/wandb/debug-cli.nixbld.log\nError: The wandb service process exited with 1. Ensure that `sys.executable` is a valid python interpreter. You can override it with the `_executable` setting or with the `WANDB__EXECUTABLE` environment variable.\n'
+      # E        +  where 'wandb: ERROR Find detailed error logs at: /build/source/wandb/debug-cli.nixbld.log\nError: The wandb service process exited with 1. Ensure that `sys.executable` is a valid python interpreter. You can override it with the `_executable` setting or with the `WANDB__EXECUTABLE` environment variable.\n' = <Result SystemExit(1)>.output
+      "tests/pytest_tests/unit_tests_old/tests_launch/test_launch_jobs.py"
 
-    # Requires google-cloud-aiplatform which is not packaged as of 2023-04-25.
-    "tests/pytest_tests/unit_tests/test_launch/test_runner/test_vertex.py"
+      # Requires google-cloud-aiplatform which is not packaged as of 2023-04-25.
+      "tests/pytest_tests/unit_tests/test_launch/test_runner/test_vertex.py"
 
-    # Requires google-cloud-artifact-registry which is not packaged as of 2023-04-25.
-    "tests/pytest_tests/unit_tests/test_launch/test_registry/test_gcp_artifact_registry.py"
+      # Requires google-cloud-artifact-registry which is not packaged as of 2023-04-25.
+      "tests/pytest_tests/unit_tests/test_launch/test_registry/test_gcp_artifact_registry.py"
 
-    # Requires kfp which is not packaged as of 2023-04-25.
-    "tests/pytest_tests/system_tests/test_core/test_kfp.py"
+      # Requires kfp which is not packaged as of 2023-04-25.
+      "tests/pytest_tests/system_tests/test_core/test_kfp.py"
 
-    # Requires kubernetes_asyncio which is not packaged as of 2024-01-14.
-    "tests/pytest_tests/unit_tests/test_launch/test_builder/test_kaniko.py"
-    "tests/pytest_tests/unit_tests/test_launch/test_runner/test_kubernetes.py"
-    "tests/pytest_tests/unit_tests/test_launch/test_runner/test_safe_watch.py"
+      # Requires kubernetes_asyncio which is not packaged as of 2024-01-14.
+      "tests/pytest_tests/unit_tests/test_launch/test_builder/test_kaniko.py"
+      "tests/pytest_tests/unit_tests/test_launch/test_runner/test_kubernetes.py"
+      "tests/pytest_tests/unit_tests/test_launch/test_runner/test_safe_watch.py"
 
-    # Requires metaflow which is not packaged as of 2023-04-25.
-    "tests/pytest_tests/unit_tests/test_metaflow.py"
+      # Requires metaflow which is not packaged as of 2023-04-25.
+      "tests/pytest_tests/unit_tests/test_metaflow.py"
 
-    # Requires tensorflow which is broken as of 2023-09-03
-    "tests/pytest_tests/unit_tests/test_keras.py"
+      # Requires tensorflow which is broken as of 2023-09-03
+      "tests/pytest_tests/unit_tests/test_keras.py"
 
-    # Try to get hardware information, not possible in the nix build environment
-    "tests/pytest_tests/unit_tests/test_system_metrics/test_disk.py"
+      # Try to get hardware information, not possible in the nix build environment
+      "tests/pytest_tests/unit_tests/test_system_metrics/test_disk.py"
 
-    # See https://github.com/wandb/wandb/issues/5423
-    "tests/pytest_tests/unit_tests/test_docker.py"
-    "tests/pytest_tests/unit_tests/test_library_public.py"
+      # See https://github.com/wandb/wandb/issues/5423
+      "tests/pytest_tests/unit_tests/test_docker.py"
+      "tests/pytest_tests/unit_tests/test_library_public.py"
 
-    # See https://github.com/wandb/wandb/issues/6836
-    "tests/pytest_tests/unit_tests_old/test_logging.py"
-  ] ++ lib.optionals stdenv.isLinux [
-    # Same as above
-    "tests/pytest_tests/unit_tests/test_artifacts/test_storage.py"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # Same as above
-    "tests/pytest_tests/unit_tests/test_lib/test_filesystem.py"
-  ];
+      # See https://github.com/wandb/wandb/issues/6836
+      "tests/pytest_tests/unit_tests_old/test_logging.py"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isLinux [
+      # Same as above
+      "tests/pytest_tests/unit_tests/test_artifacts/test_storage.py"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Same as above
+      "tests/pytest_tests/unit_tests/test_lib/test_filesystem.py"
+    ];
 
-  disabledTests = [
-    # Timing sensitive
-    "test_login_timeout"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # Disable test that fails on darwin due to issue with python3Packages.psutil:
-    # https://github.com/giampaolo/psutil/issues/1219
-    "test_tpu_system_stats"
-  ];
+  disabledTests =
+    [
+      # Timing sensitive
+      "test_login_timeout"
 
-  pythonImportsCheck = [
-    "wandb"
-  ];
+      # Tensorflow 2.13 is too old for the current version of keras
+      # ModuleNotFoundError: No module named 'keras.api._v2'
+      "test_saved_model_keras"
+      "test_sklearn_saved_model"
+      "test_pytorch_saved_model"
+      "test_tensorflow_keras_saved_model"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # Disable test that fails on darwin due to issue with python3Packages.psutil:
+      # https://github.com/giampaolo/psutil/issues/1219
+      "test_tpu_system_stats"
+    ];
+
+  pythonImportsCheck = [ "wandb" ];
 
   # unmaintainable list of disabled tests
   passthru.skipBulkUpdate = true;
 
   meta = with lib; {
-    description = "A CLI and library for interacting with the Weights and Biases API";
+    description = "CLI and library for interacting with the Weights and Biases API";
     homepage = "https://github.com/wandb/wandb";
     changelog = "https://github.com/wandb/wandb/raw/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/waqiasync/default.nix b/pkgs/development/python-modules/waqiasync/default.nix
index dfa51770abbd4..c627c24290ffa 100644
--- a/pkgs/development/python-modules/waqiasync/default.nix
+++ b/pkgs/development/python-modules/waqiasync/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -12,7 +13,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-SOs998BQV4UlLnRB3Yf7zze51u43g2Npwgk6y80S+m8=";
+    hash = "sha256-SOs998BQV4UlLnRB3Yf7zze51u43g2Npwgk6y80S+m8=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/warble/default.nix b/pkgs/development/python-modules/warble/default.nix
index c2c930d0f0a59..da0aa6c92563c 100644
--- a/pkgs/development/python-modules/warble/default.nix
+++ b/pkgs/development/python-modules/warble/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cython
-, boost
-, bluez
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cython,
+  boost,
+  bluez,
 }:
 
 buildPythonPackage rec {
@@ -18,22 +19,26 @@ buildPythonPackage rec {
     hash = "sha256-oezcRD1AddWmDYDxueE0EwK0+UN/EZ5GQxwkdCz4xoY=";
   };
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
   buildInputs = [
     boost
     bluez
   ];
 
-  pythonImportsCheck = [ "mbientlab" "mbientlab.warble" ];
+  pythonImportsCheck = [
+    "mbientlab"
+    "mbientlab.warble"
+  ];
 
   meta = with lib; {
     description = "Python bindings for MbientLab's Warble library";
     homepage = "https://github.com/mbientlab/pywarble";
     license = with licenses; [ unfree ];
     maintainers = with maintainers; [ stepbrobd ];
-    platforms = [ "aarch64-linux" "x86_64-linux" ];
+    platforms = [
+      "aarch64-linux"
+      "x86_64-linux"
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/warcio/default.nix b/pkgs/development/python-modules/warcio/default.nix
index 3121a49b5b28d..1459c11820ca3 100644
--- a/pkgs/development/python-modules/warcio/default.nix
+++ b/pkgs/development/python-modules/warcio/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, httpbin
-, multidict
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
-, six
-, wsgiprox
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  httpbin,
+  multidict,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
+  six,
+  wsgiprox,
 }:
 
 buildPythonPackage rec {
@@ -48,18 +49,14 @@ buildPythonPackage rec {
     wsgiprox
   ];
 
-  pytestFlagsArray = [
-    "--offline"
-  ];
+  pytestFlagsArray = [ "--offline" ];
 
   disabledTests = [
     # Tests require network access, see above
     "test_get_cache_to_file"
   ];
 
-  pythonImportsCheck = [
-    "warcio"
-  ];
+  pythonImportsCheck = [ "warcio" ];
 
   meta = with lib; {
     description = "Streaming WARC/ARC library for fast web archive IO";
diff --git a/pkgs/development/python-modules/ward/default.nix b/pkgs/development/python-modules/ward/default.nix
index b1f7345f84132..6c4327549bb5a 100644
--- a/pkgs/development/python-modules/ward/default.nix
+++ b/pkgs/development/python-modules/ward/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, click
-, click-completion
-, click-default-group
-, cucumber-tag-expressions
-, fetchFromGitHub
-, pluggy
-, poetry-core
-, pprintpp
-, pythonOlder
-, rich
-, tomli
+{
+  lib,
+  buildPythonPackage,
+  click,
+  click-completion,
+  click-default-group,
+  cucumber-tag-expressions,
+  fetchFromGitHub,
+  pluggy,
+  poetry-core,
+  pprintpp,
+  pythonOlder,
+  rich,
+  tomli,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     hash = "sha256-4dEMEEPySezgw3dIcYMl56HrhyaYlql9JvtamOn7Y8g=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     click
@@ -45,9 +44,7 @@ buildPythonPackage rec {
   # Fixture is missing. Looks like an issue with the import of the sample file
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ward"
-  ];
+  pythonImportsCheck = [ "ward" ];
 
   meta = with lib; {
     description = "Test framework for Python";
@@ -56,5 +53,8 @@ buildPythonPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
     mainProgram = "ward";
+    # Old requirements (cucumber-tag-expressions and rich)
+    # https://github.com/darrenburns/ward/issues/380
+    broken = versionAtLeast rich.version "13.0.0";
   };
 }
diff --git a/pkgs/development/python-modules/warlock/default.nix b/pkgs/development/python-modules/warlock/default.nix
index b0b16aed16a8c..5445631c4d153 100644
--- a/pkgs/development/python-modules/warlock/default.nix
+++ b/pkgs/development/python-modules/warlock/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, poetry-core
-, jsonpatch
-, jsonschema
-, six
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  poetry-core,
+  jsonpatch,
+  jsonschema,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -27,32 +27,26 @@ buildPythonPackage rec {
     sed -i '/--cov/d' pytest.ini
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     jsonpatch
     jsonschema
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # https://github.com/bcwaldon/warlock/issues/64
     "test_recursive_models"
   ];
 
-  pythonImportsCheck = [
-    "warlock"
-  ];
+  pythonImportsCheck = [ "warlock" ];
 
   meta = with lib; {
     description = "Python object model built on JSON schema and JSON patch";
     homepage = "https://github.com/bcwaldon/warlock";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/warrant-lite/default.nix b/pkgs/development/python-modules/warrant-lite/default.nix
index 4d5d77c2e84db..911aa135a7758 100644
--- a/pkgs/development/python-modules/warrant-lite/default.nix
+++ b/pkgs/development/python-modules/warrant-lite/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, boto3
-, envs
-, python-jose
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  boto3,
+  envs,
+  python-jose,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -36,9 +37,7 @@ buildPythonPackage rec {
   # Tests require credentials
   doCheck = false;
 
-  pythonImportsCheck = [
-    "warrant_lite"
-  ];
+  pythonImportsCheck = [ "warrant_lite" ];
 
   meta = with lib; {
     description = "Module for process SRP requests for AWS Cognito";
diff --git a/pkgs/development/python-modules/warrant/default.nix b/pkgs/development/python-modules/warrant/default.nix
index 33a98da4f2774..4dc8e940b3b31 100644
--- a/pkgs/development/python-modules/warrant/default.nix
+++ b/pkgs/development/python-modules/warrant/default.nix
@@ -1,6 +1,14 @@
-{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch
-, mock
-, boto3, envs, python-jose, requests }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  mock,
+  boto3,
+  envs,
+  python-jose,
+  requests,
+}:
 
 buildPythonPackage {
   pname = "warrant";
@@ -9,9 +17,9 @@ buildPythonPackage {
 
   # move to fetchPyPi when https://github.com/capless/warrant/issues/97 is fixed
   src = fetchFromGitHub {
-    owner  = "capless";
-    repo   = "warrant";
-    rev    = "ff2e4793d8479e770f2461ef7cbc0c15ee784395";
+    owner = "capless";
+    repo = "warrant";
+    rev = "ff2e4793d8479e770f2461ef7cbc0c15ee784395";
     sha256 = "0gw3crg64p1zx3k5js0wh0x5bldgs7viy4g8hld9xbka8q0374hi";
   };
 
@@ -31,7 +39,12 @@ buildPythonPackage {
 
   nativeCheckInputs = [ mock ];
 
-  propagatedBuildInputs = [ boto3 envs python-jose requests ];
+  propagatedBuildInputs = [
+    boto3
+    envs
+    python-jose
+    requests
+  ];
 
   # all the checks are failing
   doCheck = false;
diff --git a/pkgs/development/python-modules/wasabi/default.nix b/pkgs/development/python-modules/wasabi/default.nix
index 618e0490605b4..290e4faec0147 100644
--- a/pkgs/development/python-modules/wasabi/default.nix
+++ b/pkgs/development/python-modules/wasabi/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-
-# tests
-, ipykernel
-, nbconvert
-, pytestCheckHook
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+
+  # tests
+  ipykernel,
+  nbconvert,
+  pytestCheckHook,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "wasabi";
-  version = "1.1.2";
+  version = "1.1.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Gq7zrOqjLtuckTMNKdOTbAw5/blldDVJwXPLVLFsMLU=";
+    hash = "sha256-S7MAjwA4CdsMPii02vIJBuqHGiu0P5kUGX1UD08uCHg=";
   };
 
   nativeCheckInputs = [
@@ -29,15 +30,15 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "wasabi"
-  ];
+  pythonImportsCheck = [ "wasabi" ];
+
+  __darwinAllowLocalNetworking = true;
 
   meta = with lib; {
-    description = "A lightweight console printing and formatting toolkit";
+    description = "Lightweight console printing and formatting toolkit";
     homepage = "https://github.com/ines/wasabi";
     changelog = "https://github.com/ines/wasabi/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/wasmer/default.nix b/pkgs/development/python-modules/wasmer/default.nix
index 0f2748208817e..c903ede48d27b 100644
--- a/pkgs/development/python-modules/wasmer/default.nix
+++ b/pkgs/development/python-modules/wasmer/default.nix
@@ -1,28 +1,31 @@
-{ stdenv
-, lib
-, rustPlatform
-, callPackage
-, fetchFromGitHub
-, buildPythonPackage
-, pythonAtLeast
-, libiconv
-, libffi
-, libxml2
-, llvm_14
-, ncurses
-, zlib
+{
+  stdenv,
+  lib,
+  rustPlatform,
+  callPackage,
+  fetchFromGitHub,
+  buildPythonPackage,
+  pythonAtLeast,
+  libiconv,
+  libffi,
+  libxml2,
+  llvm_14,
+  ncurses,
+  zlib,
 }:
 
 let
   common =
-    { pname
-    , buildAndTestSubdir
-    , cargoHash
-    , extraNativeBuildInputs ? [ ]
-    , extraBuildInputs ? [ ]
-    }: buildPythonPackage rec {
+    {
+      pname,
+      buildAndTestSubdir,
+      cargoHash,
+      extraNativeBuildInputs ? [ ],
+      extraBuildInputs ? [ ],
+    }:
+    buildPythonPackage rec {
       inherit pname;
-      version = "1.1.1";
+      version = "1.2.0";
       format = "pyproject";
 
       outputs = [ "out" ] ++ lib.optional (pname == "wasmer") "testsout";
@@ -40,7 +43,11 @@ let
         sha256 = cargoHash;
       };
 
-      nativeBuildInputs = (with rustPlatform; [ cargoSetupHook maturinBuildHook ])
+      nativeBuildInputs =
+        (with rustPlatform; [
+          cargoSetupHook
+          maturinBuildHook
+        ])
         ++ extraNativeBuildInputs;
 
       postPatch = ''
@@ -49,8 +56,7 @@ let
           --replace "package.metadata.maturin" "broken"
       '';
 
-      buildInputs = lib.optionals stdenv.isDarwin [ libiconv ]
-        ++ extraBuildInputs;
+      buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ] ++ extraBuildInputs;
 
       inherit buildAndTestSubdir;
 
@@ -62,11 +68,9 @@ let
       # check in passthru.tests.pytest because all packages are required to run the tests
       doCheck = false;
 
-      passthru.tests = lib.optionalAttrs (pname == "wasmer") {
-        pytest = callPackage ./tests.nix { };
-      };
+      passthru.tests = lib.optionalAttrs (pname == "wasmer") { pytest = callPackage ./tests.nix { }; };
 
-      pythonImportsCheck = [ "${lib.replaceStrings ["-"] ["_"] pname}" ];
+      pythonImportsCheck = [ "${lib.replaceStrings [ "-" ] [ "_" ] pname}" ];
 
       meta = with lib; {
         # https://github.com/wasmerio/wasmer-python/issues/778
@@ -83,26 +87,31 @@ in
   wasmer = common {
     pname = "wasmer";
     buildAndTestSubdir = "packages/api";
-    cargoHash = "sha256-vpbwU1HrIQmQkce9SK8UOHrX5tOLv/XKsfJHteqOteA=";
+    cargoHash = "sha256-HKbVss6jGFdnCgXV3UYf6RxtmQM3+tq3cHfOSKw5JnY=";
   };
 
   wasmer-compiler-cranelift = common {
     pname = "wasmer-compiler-cranelift";
     buildAndTestSubdir = "packages/compiler-cranelift";
-    cargoHash = "sha256-nv4cr52mUIuR3LWRT3eXU5b2LORwuN4iMbLX1efzovI=";
+    cargoHash = "sha256-BTBkoTluK7IVS+TpbQnMjn2Wvwhfxv1ev5PZWS/kW0w=";
   };
 
   wasmer-compiler-llvm = common {
     pname = "wasmer-compiler-llvm";
     buildAndTestSubdir = "packages/compiler-llvm";
-    cargoHash = "sha256-FA/xXlPaK8NxZIw7MCm9Fyesgu72Dsxhmb5xzOIINhE=";
+    cargoHash = "sha256-AfLp4RLfnJ3R1Wg+RCJRmYr7748LQtl1W+ttTgIMls4=";
     extraNativeBuildInputs = [ llvm_14 ];
-    extraBuildInputs = [ libffi libxml2.out ncurses zlib ];
+    extraBuildInputs = [
+      libffi
+      libxml2.out
+      ncurses
+      zlib
+    ];
   };
 
   wasmer-compiler-singlepass = common {
     pname = "wasmer-compiler-singlepass";
     buildAndTestSubdir = "packages/compiler-singlepass";
-    cargoHash = "sha256-yew7cB/7RLjW55jZmHFfIvaErgZ6XVxL1ucGGX2Cx18=";
+    cargoHash = "sha256-4DoeKRjS/2ijpUva0p/AE3qoIyt8CvCjkPWFPyLH6gs=";
   };
 }
diff --git a/pkgs/development/python-modules/wasmer/tests.nix b/pkgs/development/python-modules/wasmer/tests.nix
index e46c9f7ac6705..6c20ab229ceae 100644
--- a/pkgs/development/python-modules/wasmer/tests.nix
+++ b/pkgs/development/python-modules/wasmer/tests.nix
@@ -1,9 +1,10 @@
-{ buildPythonPackage
-, wasmer
-, pytestCheckHook
-, wasmer-compiler-cranelift
-, wasmer-compiler-llvm
-, wasmer-compiler-singlepass
+{
+  buildPythonPackage,
+  wasmer,
+  pytestCheckHook,
+  wasmer-compiler-cranelift,
+  wasmer-compiler-llvm,
+  wasmer-compiler-singlepass,
 }:
 
 buildPythonPackage {
diff --git a/pkgs/development/python-modules/wasserstein/default.nix b/pkgs/development/python-modules/wasserstein/default.nix
index 28626cc5dcfc4..c9a9495b42ef3 100644
--- a/pkgs/development/python-modules/wasserstein/default.nix
+++ b/pkgs/development/python-modules/wasserstein/default.nix
@@ -1,10 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, numpy
-, llvmPackages
-, wurlitzer
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  numpy,
+  llvmPackages,
+  wurlitzer,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -15,24 +17,25 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "pkomiske";
     repo = "Wasserstein";
-    rev = "89c2d6279a7e0aa3b56bcc8fb7b6009420f2563e"; # https://github.com/pkomiske/Wasserstein/issues/1
+    rev = "v${version}";
     hash = "sha256-s9en6XwvO/WPsF7/+SEmGePHZQgl7zLgu5sEn4nD9YE=";
   };
 
-  buildInputs = [
-    llvmPackages.openmp
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/thaler-lab/Wasserstein/commit/8667d59dfdf89eabf01f3ae93b23a30a27c21c58.patch";
+      hash = "sha256-jp5updB3E1MYgLhBJwmBMTwBiFXtABMwTxt0G6xhoyA=";
+    })
   ];
+
+  buildInputs = [ llvmPackages.openmp ];
   propagatedBuildInputs = [
     numpy
     wurlitzer
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-  pytestFlagsArray = [
-    "wasserstein/tests"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+  pytestFlagsArray = [ "wasserstein/tests" ];
   disabledTestPaths = [
     "wasserstein/tests/test_emd.py" # requires "ot"
     # cyclic dependency on energyflow
diff --git a/pkgs/development/python-modules/wat/default.nix b/pkgs/development/python-modules/wat/default.nix
new file mode 100644
index 0000000000000..4231336c31ce3
--- /dev/null
+++ b/pkgs/development/python-modules/wat/default.nix
@@ -0,0 +1,38 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  nuclear,
+  pydantic,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "wat";
+  version = "0.3.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "igrek51";
+    repo = "wat";
+    rev = version;
+    hash = "sha256-WCMMj4KtfWOp6LsS4XHD/M/iepstVasHknEvEUTMMM8=";
+  };
+
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    nuclear
+    pydantic
+  ];
+  pythonImportsCheck = [ "wat" ];
+
+  meta = with lib; {
+    homepage = "https://igrek51.github.io/wat/";
+    description = "Deep inspection of python objects";
+    license = licenses.mit;
+    maintainers = with maintainers; [ parras ];
+  };
+}
diff --git a/pkgs/development/python-modules/watchdog-gevent/default.nix b/pkgs/development/python-modules/watchdog-gevent/default.nix
index fb5951a38ce4d..743a523a58653 100644
--- a/pkgs/development/python-modules/watchdog-gevent/default.nix
+++ b/pkgs/development/python-modules/watchdog-gevent/default.nix
@@ -51,7 +51,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "watchdog_gevent" ];
 
   meta = with lib; {
-    description = "A gevent-based observer for watchdog";
+    description = "Gevent-based observer for watchdog";
     homepage = "https://github.com/Bogdanp/watchdog_gevent";
     license = licenses.asl20;
     maintainers = with maintainers; [ traxys ];
diff --git a/pkgs/development/python-modules/watchdog/default.nix b/pkgs/development/python-modules/watchdog/default.nix
index 9ac39683ba39f..10184cfef7dd0 100644
--- a/pkgs/development/python-modules/watchdog/default.nix
+++ b/pkgs/development/python-modules/watchdog/default.nix
@@ -1,42 +1,38 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, CoreServices
-, eventlet
-, fetchpatch
-, fetchPypi
-, flaky
-, pytest-timeout
-, pytestCheckHook
-, pythonOlder
-, pyyaml
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  CoreServices,
+  eventlet,
+  fetchPypi,
+  flaky,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
   pname = "watchdog";
-  version = "4.0.0";
+  version = "4.0.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-4+cGXL2r5hg6uCGZ16T2s7oKQ4xaUSpoVZhGzLdqeOw=";
+    hash = "sha256-7rqs9nT6JVEeiGcCjSgeYC7mUABFtX9DsId4CC9/i0Q=";
   };
 
   # force kqueue on x86_64-darwin, because our api version does
   # not support fsevents
-  patches = lib.optionals (stdenv.isDarwin && !stdenv.isAarch64) [
+  patches = lib.optionals (stdenv.hostPlatform.isDarwin && !stdenv.hostPlatform.isAarch64) [
     ./force-kqueue.patch
   ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [
-    CoreServices
-  ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ CoreServices ];
 
-  passthru.optional-dependencies.watchmedo = [
-    pyyaml
-  ];
+  passthru.optional-dependencies.watchmedo = [ pyyaml ];
 
   nativeCheckInputs = [
     eventlet
@@ -51,54 +47,58 @@ buildPythonPackage rec {
       --replace "--cov-report=term-missing" ""
   '';
 
-  pytestFlagsArray = [
-    "--deselect=tests/test_emitter.py::test_create_wrong_encoding"
-    "--deselect=tests/test_emitter.py::test_close"
-  ] ++ lib.optionals (stdenv.isDarwin) [
-    # fails to stop process in teardown
-    "--deselect=tests/test_0_watchmedo.py::test_auto_restart_subprocess_termination"
-    # assert cap.out.splitlines(keepends=False).count('+++++ 0') == 2 != 3
-    "--deselect=tests/test_0_watchmedo.py::test_auto_restart_on_file_change_debounce"
-  ] ++ lib.optionals (stdenv.isDarwin && stdenv.isx86_64) [
-    # FileCreationEvent != FileDeletionEvent
-    "--deselect=tests/test_emitter.py::test_separate_consecutive_moves"
-    "--deselect=tests/test_observers_polling.py::test___init__"
-    # segfaults
-    "--deselect=tests/test_delayed_queue.py::test_delayed_get"
-    "--deselect=tests/test_emitter.py::test_delete"
-    # AttributeError: '_thread.RLock' object has no attribute 'key'"
-    "--deselect=tests/test_skip_repeats_queue.py::test_eventlet_monkey_patching"
-  ] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
-    # segfaults
-    "--deselect=tests/test_delayed_queue.py::test_delayed_get"
-    "--deselect=tests/test_0_watchmedo.py::test_tricks_from_file"
-    "--deselect=tests/test_fsevents.py::test_watcher_deletion_while_receiving_events_1"
-    "--deselect=tests/test_fsevents.py::test_watcher_deletion_while_receiving_events_2"
-    "--deselect=tests/test_skip_repeats_queue.py::test_eventlet_monkey_patching"
-    "--deselect=tests/test_fsevents.py::test_recursive_check_accepts_relative_paths"
-    # fsevents:fsevents.py:318 Unhandled exception in FSEventsEmitter
-    "--deselect=tests/test_fsevents.py::test_watchdog_recursive"
-    # SystemError: Cannot start fsevents stream. Use a kqueue or polling observer...
-    "--deselect=tests/test_fsevents.py::test_add_watch_twice"
-    # fsevents:fsevents.py:318 Unhandled exception in FSEventsEmitter
-    "--deselect=ests/test_fsevents.py::test_recursive_check_accepts_relative_paths"
-    # gets stuck
-    "--deselect=tests/test_fsevents.py::test_converting_cfstring_to_pyunicode"
-  ];
+  pytestFlagsArray =
+    [
+      "--deselect=tests/test_emitter.py::test_create_wrong_encoding"
+      "--deselect=tests/test_emitter.py::test_close"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin) [
+      # fails to stop process in teardown
+      "--deselect=tests/test_0_watchmedo.py::test_auto_restart_subprocess_termination"
+      # assert cap.out.splitlines(keepends=False).count('+++++ 0') == 2 != 3
+      "--deselect=tests/test_0_watchmedo.py::test_auto_restart_on_file_change_debounce"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) [
+      # FileCreationEvent != FileDeletionEvent
+      "--deselect=tests/test_emitter.py::test_separate_consecutive_moves"
+      "--deselect=tests/test_observers_polling.py::test___init__"
+      # segfaults
+      "--deselect=tests/test_delayed_queue.py::test_delayed_get"
+      "--deselect=tests/test_emitter.py::test_delete"
+      # AttributeError: '_thread.RLock' object has no attribute 'key'"
+      "--deselect=tests/test_skip_repeats_queue.py::test_eventlet_monkey_patching"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
+      # segfaults
+      "--deselect=tests/test_delayed_queue.py::test_delayed_get"
+      "--deselect=tests/test_0_watchmedo.py::test_tricks_from_file"
+      "--deselect=tests/test_fsevents.py::test_watcher_deletion_while_receiving_events_1"
+      "--deselect=tests/test_fsevents.py::test_watcher_deletion_while_receiving_events_2"
+      "--deselect=tests/test_skip_repeats_queue.py::test_eventlet_monkey_patching"
+      "--deselect=tests/test_fsevents.py::test_recursive_check_accepts_relative_paths"
+      # fsevents:fsevents.py:318 Unhandled exception in FSEventsEmitter
+      "--deselect=tests/test_fsevents.py::test_watchdog_recursive"
+      # SystemError: Cannot start fsevents stream. Use a kqueue or polling observer...
+      "--deselect=tests/test_fsevents.py::test_add_watch_twice"
+      # fsevents:fsevents.py:318 Unhandled exception in FSEventsEmitter
+      "--deselect=ests/test_fsevents.py::test_recursive_check_accepts_relative_paths"
+      # gets stuck
+      "--deselect=tests/test_fsevents.py::test_converting_cfstring_to_pyunicode"
+    ];
 
-  disabledTestPaths = [
-    # tests timeout easily
-    "tests/test_inotify_buffer.py"
-  ] ++ lib.optionals (stdenv.isDarwin) [
-    # segfaults the testsuite
-    "tests/test_emitter.py"
-    # unsupported on x86_64-darwin
-    "tests/test_fsevents.py"
-  ];
+  disabledTestPaths =
+    [
+      # tests timeout easily
+      "tests/test_inotify_buffer.py"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isDarwin) [
+      # segfaults the testsuite
+      "tests/test_emitter.py"
+      # unsupported on x86_64-darwin
+      "tests/test_fsevents.py"
+    ];
 
-  pythonImportsCheck = [
-    "watchdog"
-  ];
+  pythonImportsCheck = [ "watchdog" ];
 
   meta = with lib; {
     description = "Python API and shell utilities to monitor file system events";
@@ -106,6 +106,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/gorakhargosh/watchdog";
     changelog = "https://github.com/gorakhargosh/watchdog/blob/v${version}/changelog.rst";
     license = licenses.asl20;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/watchfiles/default.nix b/pkgs/development/python-modules/watchfiles/default.nix
index 47b6e0a4eb26d..3b09081249b0a 100644
--- a/pkgs/development/python-modules/watchfiles/default.nix
+++ b/pkgs/development/python-modules/watchfiles/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, stdenv
-, anyio
-, buildPythonPackage
-, cargo
-, fetchFromGitHub
-, rustPlatform
-, rustc
-, pythonOlder
-, dirty-equals
-, pytest-mock
-, pytest-timeout
-, pytestCheckHook
-, CoreServices
-, libiconv
+{
+  lib,
+  stdenv,
+  anyio,
+  buildPythonPackage,
+  cargo,
+  fetchFromGitHub,
+  rustPlatform,
+  rustc,
+  pythonOlder,
+  dirty-equals,
+  pytest-mock,
+  pytest-timeout,
+  pytestCheckHook,
+  CoreServices,
+  libiconv,
 }:
 
 buildPythonPackage rec {
   pname = "watchfiles";
-  version = "0.21.0";
+  version = "0.22.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -26,16 +27,16 @@ buildPythonPackage rec {
     owner = "samuelcolvin";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-/qNgkPF5N8jzSV3M0YFWvQngZ4Hf4WM/GBS1LtgFbWM=";
+    hash = "sha256-TtRSRgtMOqsnhdvsic3lg33xlA+r/DcYHlzewSOu/44=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-sqHTW1+E7Fp33KW6IYlNa77AYc2iCfaSoBRXzrhEKr8=";
+    hash = "sha256-n9yN/VRNQWCxh+BoliIMkKqJC51inpB9DQ9WtqR4oA0=";
   };
 
-  buildInputs = lib.optionals stdenv.isDarwin [
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
     CoreServices
     libiconv
   ];
@@ -47,9 +48,7 @@ buildPythonPackage rec {
     rustc
   ];
 
-  propagatedBuildInputs = [
-    anyio
-  ];
+  propagatedBuildInputs = [ anyio ];
 
   # Tests need these permissions in order to use the FSEvents API on macOS.
   sandboxProfile = ''
@@ -76,9 +75,7 @@ buildPythonPackage rec {
     "test_awatch_interrupt_raise"
   ];
 
-  pythonImportsCheck = [
-    "watchfiles"
-  ];
+  pythonImportsCheck = [ "watchfiles" ];
 
   meta = with lib; {
     description = "File watching and code reload";
diff --git a/pkgs/development/python-modules/watchgod/default.nix b/pkgs/development/python-modules/watchgod/default.nix
index 988fb53601b9f..10b93b346dd11 100644
--- a/pkgs/development/python-modules/watchgod/default.nix
+++ b/pkgs/development/python-modules/watchgod/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, anyio
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  anyio,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     hash = "sha256-yxH/ZmV777qU2CjjtiLV+3byL72hN281Xz5uUel9lFA=";
   };
 
-  propagatedBuildInputs = [
-    anyio
-  ];
+  propagatedBuildInputs = [ anyio ];
 
   # no tests in release
   doCheck = false;
@@ -30,5 +29,4 @@ buildPythonPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ globin ];
   };
-
 }
diff --git a/pkgs/development/python-modules/waterfurnace/default.nix b/pkgs/development/python-modules/waterfurnace/default.nix
index 6b7dce28924f6..2eb9b2cbd8bec 100644
--- a/pkgs/development/python-modules/waterfurnace/default.nix
+++ b/pkgs/development/python-modules/waterfurnace/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, mock
-, pytestCheckHook
-, requests
-, pythonOlder
-, websocket-client
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  mock,
+  pytestCheckHook,
+  requests,
+  pythonOlder,
+  websocket-client,
 }:
 
 buildPythonPackage rec {
@@ -39,9 +40,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "waterfurnace"
-  ];
+  pythonImportsCheck = [ "waterfurnace" ];
 
   meta = with lib; {
     description = "Python interface to waterfurnace geothermal systems";
diff --git a/pkgs/development/python-modules/watermark/default.nix b/pkgs/development/python-modules/watermark/default.nix
index daac4416fc088..3af49dd8d38d4 100644
--- a/pkgs/development/python-modules/watermark/default.nix
+++ b/pkgs/development/python-modules/watermark/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, importlib-metadata
-, ipython
-, py3nvml
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  importlib-metadata,
+  ipython,
+  py3nvml,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "watermark";
-  version = "2.4.0";
+  version = "2.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,12 +21,10 @@ buildPythonPackage rec {
     owner = "rasbt";
     repo = "watermark";
     rev = "refs/tags/v${version}";
-    hash = "sha256-4/1Y7cdh1tF33jgPrqdxCGPcRnnxx+Wf8lyztF54Ck0=";
+    hash = "sha256-UR4kV6UoZ/JLO19on+qEH+M05QIsT0SXvXJtTMCKuZM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     ipython
@@ -33,18 +32,14 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    gpu = [
-      py3nvml
-    ];
+    gpu = [ py3nvml ];
   };
 
-  nativeCheckInputs =  [
+  nativeCheckInputs = [
     pytestCheckHook
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "watermark"
-  ];
+  pythonImportsCheck = [ "watermark" ];
 
   meta = with lib; {
     description = "IPython extension for printing date and timestamps, version numbers, and hardware information";
diff --git a/pkgs/development/python-modules/wavedrom/default.nix b/pkgs/development/python-modules/wavedrom/default.nix
index 3cf3eb30111cb..d5e36be1e9f19 100644
--- a/pkgs/development/python-modules/wavedrom/default.nix
+++ b/pkgs/development/python-modules/wavedrom/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, attrdict
-, buildPythonPackage
-, cairosvg
-, fetchPypi
-, pillow
-, pytestCheckHook
-, pyyaml
-, setuptools-scm
-, six
-, svgwrite
-, xmldiff
+{
+  lib,
+  attrdict,
+  buildPythonPackage,
+  cairosvg,
+  fetchPypi,
+  pillow,
+  pytestCheckHook,
+  pyyaml,
+  setuptools-scm,
+  six,
+  svgwrite,
+  xmldiff,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-MntNXcpZPIElfCAv6lFvepCHR/sRUnw1nwNPW3r39Hs=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     attrdict
@@ -45,9 +44,7 @@ buildPythonPackage rec {
     "test_upstream"
   ];
 
-  pythonImportsCheck = [
-    "wavedrom"
-  ];
+  pythonImportsCheck = [ "wavedrom" ];
 
   meta = with lib; {
     description = "WaveDrom compatible Python command line";
diff --git a/pkgs/development/python-modules/wavefile/default.nix b/pkgs/development/python-modules/wavefile/default.nix
index 4a8272e2f6681..c0e67979e89b4 100644
--- a/pkgs/development/python-modules/wavefile/default.nix
+++ b/pkgs/development/python-modules/wavefile/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pyaudio
-, numpy
-, libsndfile
-, substituteAll
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pyaudio,
+  numpy,
+  libsndfile,
+  substituteAll,
 }:
 
 buildPythonPackage rec {
@@ -21,18 +22,14 @@ buildPythonPackage rec {
     hash = "sha256-TLSWhLARY+3sHkl2p3d3LDGzLu6DggjTJWFpyrwRXSI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   buildInputs = [
     pyaudio
     libsndfile
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
   nativeCheckInputs = [
     pyaudio
@@ -51,9 +48,7 @@ buildPythonPackage rec {
 
   doCheck = false; # all test files (test/wavefileTest.py) are failing
 
-  pythonImportsCheck = [
-    "wavefile"
-  ];
+  pythonImportsCheck = [ "wavefile" ];
 
   meta = with lib; {
     description = "Pythonic libsndfile wrapper to read and write audio files";
diff --git a/pkgs/development/python-modules/wavinsentio/default.nix b/pkgs/development/python-modules/wavinsentio/default.nix
index 22ed0d177a360..b7b1f1cd645f6 100644
--- a/pkgs/development/python-modules/wavinsentio/default.nix
+++ b/pkgs/development/python-modules/wavinsentio/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-Oko3Ivj95vajNWjQTQK18i5B/DIBngjw2HLlzYqLv2Y=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "wavinsentio"
-  ];
+  pythonImportsCheck = [ "wavinsentio" ];
 
   meta = with lib; {
     description = "Python module to interact with the Wavin Sentio underfloor heating system";
diff --git a/pkgs/development/python-modules/waybackpy/default.nix b/pkgs/development/python-modules/waybackpy/default.nix
new file mode 100644
index 0000000000000..222a3566600fb
--- /dev/null
+++ b/pkgs/development/python-modules/waybackpy/default.nix
@@ -0,0 +1,35 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  click,
+  urllib3,
+  requests,
+  pytest,
+}:
+buildPythonPackage rec {
+  pname = "waybackpy";
+  version = "3.0.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-SXo3F1arp2ROt62g69TtsVy4xTvBNMyXO/AjoSyv+D8=";
+  };
+
+  dependencies = [
+    click
+    urllib3
+    requests
+  ];
+
+  nativeBuildInputs = [ pytest ];
+
+  pythonImportsCheck = [ "waybackpy" ];
+
+  meta = with lib; {
+    homepage = "https://akamhy.github.io/waybackpy/";
+    description = "Wayback Machine API interface & a command-line tool";
+    license = licenses.mit;
+    maintainers = with maintainers; [ chpatrick ];
+  };
+}
diff --git a/pkgs/development/python-modules/wazeroutecalculator/default.nix b/pkgs/development/python-modules/wazeroutecalculator/default.nix
index 34c2430632bd9..3812a83ffbfc1 100644
--- a/pkgs/development/python-modules/wazeroutecalculator/default.nix
+++ b/pkgs/development/python-modules/wazeroutecalculator/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,16 +19,12 @@ buildPythonPackage rec {
     hash = "sha256-DB5oWthWNwamFG3kNxA/kmUBOVogoSg5LI2KrI39s4M=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # there are no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "WazeRouteCalculator"
-  ];
+  pythonImportsCheck = [ "WazeRouteCalculator" ];
 
   meta = with lib; {
     description = "Calculate actual route time and distance with Waze API";
diff --git a/pkgs/development/python-modules/wcag-contrast-ratio/default.nix b/pkgs/development/python-modules/wcag-contrast-ratio/default.nix
index 6a047c271658a..fb7328d5c34f6 100644
--- a/pkgs/development/python-modules/wcag-contrast-ratio/default.nix
+++ b/pkgs/development/python-modules/wcag-contrast-ratio/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hypothesis
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hypothesis,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "test.py"
-  ];
+  pytestFlagsArray = [ "test.py" ];
 
   pythonImportsCheck = [ "wcag_contrast_ratio" ];
 
@@ -30,6 +29,6 @@ buildPythonPackage rec {
     description = "Library for computing contrast ratios, as required by WCAG 2.0";
     homepage = "https://github.com/gsnedders/wcag-contrast-ratio";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/wcmatch/default.nix b/pkgs/development/python-modules/wcmatch/default.nix
index fa5a75c132683..6be8a9fd7f17f 100644
--- a/pkgs/development/python-modules/wcmatch/default.nix
+++ b/pkgs/development/python-modules/wcmatch/default.nix
@@ -1,24 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hatchling
-, pytestCheckHook
-, bracex
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatchling,
+  pytestCheckHook,
+  bracex,
 }:
 
 buildPythonPackage rec {
   pname = "wcmatch";
-  version = "8.5.1";
+  version = "9.0";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-wAiMf2Qmz2vyflMOK3tzQDGQX35JBHX9g8fFAIq1gbM=";
+    hash = "sha256-Vn1msRrXQ4SVTIr4b2B4V8O9+TaCNJrTIGYjGr1VbJI=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [ bracex ];
 
@@ -28,9 +27,7 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d)
   '';
 
-  disabledTests = [
-    "TestTilde"
-  ];
+  disabledTests = [ "TestTilde" ];
 
   pythonImportsCheck = [ "wcmatch" ];
 
@@ -38,6 +35,6 @@ buildPythonPackage rec {
     description = "Wilcard File Name matching library";
     homepage = "https://github.com/facelessuser/wcmatch";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/wcwidth/default.nix b/pkgs/development/python-modules/wcwidth/default.nix
index 52a411b23269b..c79af7be6b5ab 100644
--- a/pkgs/development/python-modules/wcwidth/default.nix
+++ b/pkgs/development/python-modules/wcwidth/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,20 +19,14 @@ buildPythonPackage rec {
     hash = "sha256-cuoMBjmesobZeP3ttpI6nrR+HEhs5j6bTmT8GDA5crU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # To prevent infinite recursion with pytest
   doCheck = false;
 
-  pythonImportsCheck = [
-    "wcwidth"
-  ];
+  pythonImportsCheck = [ "wcwidth" ];
 
   meta = with lib; {
     description = "Measures number of Terminal column cells of wide-character codes";
@@ -44,6 +39,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/jquast/wcwidth";
     changelog = "https://github.com/jquast/wcwidth/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/weasel/default.nix b/pkgs/development/python-modules/weasel/default.nix
index 26418749c80fe..bf01bbf033d21 100644
--- a/pkgs/development/python-modules/weasel/default.nix
+++ b/pkgs/development/python-modules/weasel/default.nix
@@ -1,19 +1,19 @@
-{ lib
-, buildPythonPackage
-, cloudpathlib
-, confection
-, fetchFromGitHub
-, packaging
-, pydantic
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
-, setuptools
-, smart-open
-, srsly
-, typer
-, wasabi
+{
+  lib,
+  buildPythonPackage,
+  cloudpathlib,
+  confection,
+  fetchFromGitHub,
+  packaging,
+  pydantic,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
+  smart-open,
+  srsly,
+  typer,
+  wasabi,
 }:
 
 buildPythonPackage rec {
@@ -33,10 +33,10 @@ buildPythonPackage rec {
   pythonRelaxDeps = [
     "cloudpathlib"
     "smart-open"
+    "typer"
   ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
@@ -54,9 +54,7 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "weasel" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # This test requires internet access
@@ -64,7 +62,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A small and easy workflow system";
+    description = "Small and easy workflow system";
     mainProgram = "weasel";
     homepage = "https://github.com/explosion/weasel/";
     changelog = "https://github.com/explosion/weasel/releases/tag/v${version}";
diff --git a/pkgs/development/python-modules/weasyprint/default.nix b/pkgs/development/python-modules/weasyprint/default.nix
index 5d53bcbb70787..2652a524678c6 100644
--- a/pkgs/development/python-modules/weasyprint/default.nix
+++ b/pkgs/development/python-modules/weasyprint/default.nix
@@ -1,38 +1,38 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, cairosvg
-, cffi
-, cssselect2
-, fetchPypi
-, flit-core
-, fontconfig
-, fonttools
-, ghostscript
-, glib
-, harfbuzz
-, html5lib
-, pango
-, pillow
-, pydyf
-, pyphen
-, pytestCheckHook
-, pythonOlder
-, substituteAll
-, tinycss2
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  cffi,
+  cssselect2,
+  fetchPypi,
+  flit-core,
+  fontconfig,
+  fonttools,
+  ghostscript,
+  glib,
+  harfbuzz,
+  html5lib,
+  pango,
+  pillow,
+  pydyf,
+  pyphen,
+  pytestCheckHook,
+  pythonOlder,
+  substituteAll,
+  tinycss2,
 }:
 
 buildPythonPackage rec {
   pname = "weasyprint";
-  version = "61.2";
+  version = "62.2";
   format = "pyproject";
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit version;
     pname = "weasyprint";
-    hash = "sha256-R99s/u/4xsKM8uTK+DfN4XcV7+RicIradLqi6zkbYFk=";
+    hash = "sha256-oIrEAOEZGdmW12vsqjMWDXwaxVuhYGKMQs51hldMGlE=";
   };
 
   patches = [
@@ -47,9 +47,7 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     cffi
@@ -80,9 +78,7 @@ buildPythonPackage rec {
   FONTCONFIG_FILE = "${fontconfig.out}/etc/fonts/fonts.conf";
 
   # Set env variable explicitly for Darwin, but allow overriding when invoking directly
-  makeWrapperArgs = [
-    "--set-default FONTCONFIG_FILE ${FONTCONFIG_FILE}"
-  ];
+  makeWrapperArgs = [ "--set-default FONTCONFIG_FILE ${FONTCONFIG_FILE}" ];
 
   postPatch = ''
     substituteInPlace pyproject.toml \
@@ -94,15 +90,12 @@ buildPythonPackage rec {
     export HOME=$TMPDIR
   '';
 
-  pythonImportsCheck = [
-    "weasyprint"
-  ];
+  pythonImportsCheck = [ "weasyprint" ];
 
   meta = with lib; {
     description = "Converts web documents to PDF";
     mainProgram = "weasyprint";
     homepage = "https://weasyprint.org/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ elohmeier ];
   };
 }
diff --git a/pkgs/development/python-modules/weasyprint/library-paths.patch b/pkgs/development/python-modules/weasyprint/library-paths.patch
index 6d884f43ed3cd..e54561a4018a2 100644
--- a/pkgs/development/python-modules/weasyprint/library-paths.patch
+++ b/pkgs/development/python-modules/weasyprint/library-paths.patch
@@ -1,14 +1,14 @@
 diff --git a/weasyprint/text/ffi.py b/weasyprint/text/ffi.py
-index 09f614aad..cbe9a73dd 100644
+index 3aba3e75..dde0e260 100644
 --- a/weasyprint/text/ffi.py
 +++ b/weasyprint/text/ffi.py
-@@ -415,22 +415,11 @@ def _dlopen(ffi, *names):
+@@ -429,22 +429,11 @@ if hasattr(os, 'add_dll_directory'):  # pragma: no cover
          with suppress((OSError, FileNotFoundError)):
              os.add_dll_directory(dll_directory)
  
 -gobject = _dlopen(
 -    ffi, 'gobject-2.0-0', 'gobject-2.0', 'libgobject-2.0-0',
--    'libgobject-2.0.so.0', 'libgobject-2.0.dylib',  'libgobject-2.0-0.dll')
+-    'libgobject-2.0.so.0', 'libgobject-2.0.dylib', 'libgobject-2.0-0.dll')
 -pango = _dlopen(
 -    ffi, 'pango-1.0-0', 'pango-1.0', 'libpango-1.0-0', 'libpango-1.0.so.0',
 -    'libpango-1.0.dylib', 'libpango-1.0-0.dll')
@@ -28,4 +28,5 @@ index 09f614aad..cbe9a73dd 100644
 +fontconfig = _dlopen(ffi, '@fontconfig@')
 +pangoft2 = _dlopen(ffi, '@pangoft2@')
  
- gobject.g_type_init()
\ No newline at end of file
+ gobject.g_type_init()
+ 
diff --git a/pkgs/development/python-modules/weatherflow4py/default.nix b/pkgs/development/python-modules/weatherflow4py/default.nix
new file mode 100644
index 0000000000000..d4417374d4911
--- /dev/null
+++ b/pkgs/development/python-modules/weatherflow4py/default.nix
@@ -0,0 +1,54 @@
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  dataclasses-json,
+  fetchFromGitHub,
+  marshmallow,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  websockets,
+}:
+
+buildPythonPackage rec {
+  pname = "weatherflow4py";
+  version = "1.2.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.12";
+
+  src = fetchFromGitHub {
+    owner = "jeeftor";
+    repo = "weatherflow4py";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-NOruMysLm0Pu2fsaA/qCNdeCTacomvJ51oqI8V2WFWI=";
+  };
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    aiohttp
+    dataclasses-json
+    marshmallow
+    websockets
+  ];
+
+  nativeCheckInputs = [
+    aioresponses
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "weatherflow4py" ];
+
+  meta = with lib; {
+    description = "Module to interact with the WeatherFlow REST API";
+    homepage = "https://github.com/jeeftor/weatherflow4py";
+    changelog = "https://github.com/jeeftor/weatherflow4py/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/weaviate-client/default.nix b/pkgs/development/python-modules/weaviate-client/default.nix
index f92ef94177d5d..506aa956bda60 100644
--- a/pkgs/development/python-modules/weaviate-client/default.nix
+++ b/pkgs/development/python-modules/weaviate-client/default.nix
@@ -9,15 +9,14 @@
   httpx,
   pydantic,
   pythonOlder,
-  pythonRelaxDepsHook,
+  requests,
   setuptools-scm,
-  tqdm,
   validators,
 }:
 
 buildPythonPackage rec {
   pname = "weaviate-client";
-  version = "4.5.6";
+  version = "4.8.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,7 +25,7 @@ buildPythonPackage rec {
     owner = "weaviate";
     repo = "weaviate-python-client";
     rev = "refs/tags/v${version}";
-    hash = "sha256-P1GiTsRDbJssoLZR//c+b4IJ2Zyb/0PaBLL+wmmI6zc=";
+    hash = "sha256-JVn9Xhq7MJD+o6DA/EaW1NNnvsjjqyW+pmFctuQStgo=";
   };
 
   pythonRelaxDeps = [
@@ -36,7 +35,6 @@ buildPythonPackage rec {
 
   build-system = [ setuptools-scm ];
 
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     authlib
@@ -45,7 +43,7 @@ buildPythonPackage rec {
     grpcio-tools
     httpx
     pydantic
-    tqdm
+    requests
     validators
   ];
 
diff --git a/pkgs/development/python-modules/web-cache/default.nix b/pkgs/development/python-modules/web-cache/default.nix
index 18909898c9d87..fbc9cf2aaa8cf 100644
--- a/pkgs/development/python-modules/web-cache/default.nix
+++ b/pkgs/development/python-modules/web-cache/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+}:
 
 buildPythonPackage rec {
   pname = "web-cache";
diff --git a/pkgs/development/python-modules/web/default.nix b/pkgs/development/python-modules/web/default.nix
index 33017b3a46508..39275ca1eb7a4 100644
--- a/pkgs/development/python-modules/web/default.nix
+++ b/pkgs/development/python-modules/web/default.nix
@@ -1,6 +1,14 @@
-{ lib, buildPythonPackage, fetchPypi, pytestCheckHook
-, cheroot
-, dbutils, mysqlclient, pymysql, mysql-connector, psycopg2
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  cheroot,
+  dbutils,
+  mysqlclient,
+  pymysql,
+  mysql-connector,
+  psycopg2,
 }:
 
 buildPythonPackage rec {
@@ -19,7 +27,14 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "web" ];
 
-  nativeCheckInputs = [ pytestCheckHook dbutils mysqlclient pymysql mysql-connector psycopg2 ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    dbutils
+    mysqlclient
+    pymysql
+    mysql-connector
+    psycopg2
+  ];
 
   meta = with lib; {
     description = "Makes web apps";
@@ -31,5 +46,4 @@ buildPythonPackage rec {
     license = licenses.publicDomain;
     maintainers = with maintainers; [ layus ];
   };
-
 }
diff --git a/pkgs/development/python-modules/web3/default.nix b/pkgs/development/python-modules/web3/default.nix
index ae709ef408865..49415d090f5c6 100644
--- a/pkgs/development/python-modules/web3/default.nix
+++ b/pkgs/development/python-modules/web3/default.nix
@@ -1,20 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, aiohttp
-, eth-abi
-, eth-account
-, eth-hash
-, eth-typing
-, eth-utils
-, hexbytes
-, ipfshttpclient
-, jsonschema
-, lru-dict
-, protobuf
-, requests
-, websockets
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  aiohttp,
+  eth-abi,
+  eth-account,
+  eth-hash,
+  eth-typing,
+  eth-utils,
+  hexbytes,
+  ipfshttpclient,
+  jsonschema,
+  lru-dict,
+  protobuf,
+  requests,
+  websockets,
 }:
 
 buildPythonPackage rec {
@@ -36,20 +37,24 @@ buildPythonPackage rec {
     ipfs = [ ipfshttpclient ];
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-    eth-abi
-    eth-account
-    eth-hash ] ++ eth-hash.optional-dependencies.pycryptodome ++ [
-    eth-typing
-    eth-utils
-    hexbytes
-    jsonschema
-    lru-dict
-    protobuf
-    requests
-    websockets
-  ];
+  propagatedBuildInputs =
+    [
+      aiohttp
+      eth-abi
+      eth-account
+      eth-hash
+    ]
+    ++ eth-hash.optional-dependencies.pycryptodome
+    ++ [
+      eth-typing
+      eth-utils
+      hexbytes
+      jsonschema
+      lru-dict
+      protobuf
+      requests
+      websockets
+    ];
 
   # TODO: package eth-tester required for tests
   doCheck = false;
@@ -58,12 +63,10 @@ buildPythonPackage rec {
     substituteInPlace setup.py --replace "types-protobuf==3.19.13" "types-protobuf"
   '';
 
-  pythonImportsCheck = [
-    "web3"
-  ];
+  pythonImportsCheck = [ "web3" ];
 
   meta = with lib; {
-    description = "A python interface for interacting with the Ethereum blockchain and ecosystem";
+    description = "Python interface for interacting with the Ethereum blockchain and ecosystem";
     homepage = "https://web3py.readthedocs.io/";
     license = licenses.mit;
     maintainers = with maintainers; [ hellwolf ];
diff --git a/pkgs/development/python-modules/webargs/default.nix b/pkgs/development/python-modules/webargs/default.nix
index 800649a093884..21c7af1cfdbc5 100644
--- a/pkgs/development/python-modules/webargs/default.nix
+++ b/pkgs/development/python-modules/webargs/default.nix
@@ -1,6 +1,21 @@
-{ buildPythonPackage, fetchPypi, lib, isPy27, marshmallow, pytestCheckHook
-, pytest-aiohttp, webtest, webtest-aiohttp, flask, django, bottle, tornado
-, pyramid, falcon, aiohttp }:
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  isPy27,
+  marshmallow,
+  pytestCheckHook,
+  pytest-aiohttp,
+  webtest,
+  webtest-aiohttp,
+  flask,
+  django,
+  bottle,
+  tornado,
+  pyramid,
+  falcon,
+  aiohttp,
+}:
 
 buildPythonPackage rec {
   pname = "webargs";
@@ -13,9 +28,7 @@ buildPythonPackage rec {
     hash = "sha256-6pk2ghSkzmE5JL6Z1x21jCaWMele/0+gm3NU5S3ABqU=";
   };
 
-  pythonImportsCheck = [
-    "webargs"
-  ];
+  pythonImportsCheck = [ "webargs" ];
 
   propagatedBuildInputs = [ marshmallow ];
 
diff --git a/pkgs/development/python-modules/webassets/default.nix b/pkgs/development/python-modules/webassets/default.nix
index 75a127d475ef2..64b45c17154c4 100644
--- a/pkgs/development/python-modules/webassets/default.nix
+++ b/pkgs/development/python-modules/webassets/default.nix
@@ -1,4 +1,13 @@
-{ lib, buildPythonPackage, fetchPypi, pyyaml, nose, jinja2, mock, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyyaml,
+  nose,
+  jinja2,
+  mock,
+  pytest,
+}:
 
 buildPythonPackage rec {
   pname = "webassets";
@@ -11,7 +20,12 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [ pyyaml ];
-  nativeCheckInputs = [ nose jinja2 mock pytest ];
+  nativeCheckInputs = [
+    nose
+    jinja2
+    mock
+    pytest
+  ];
 
   # Needs Babel CLI tool
   doCheck = false;
diff --git a/pkgs/development/python-modules/webauthn/default.nix b/pkgs/development/python-modules/webauthn/default.nix
index ad28892290ee0..476445e0d4627 100644
--- a/pkgs/development/python-modules/webauthn/default.nix
+++ b/pkgs/development/python-modules/webauthn/default.nix
@@ -1,17 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, asn1crypto
-, cbor2
-, pythonOlder
-, pyopenssl
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  asn1crypto,
+  cbor2,
+  cryptography,
+  pythonOlder,
+  pyopenssl,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "webauthn";
-  version = "2.0.0";
-  format = "setuptools";
+  version = "2.2.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -19,26 +22,25 @@ buildPythonPackage rec {
     owner = "duo-labs";
     repo = "py_webauthn";
     rev = "refs/tags/v${version}";
-    hash = "sha256-StqoSrzErV13/OUpSWbI+6N5tSFPEpvnmQcDiZMaXPI=";
+    hash = "sha256-NBCR5GwmXA6COP9NOYnoD3l1vuOpym/kyNawd8FstLc=";
   };
 
+  build-system = [ setuptools ];
+
   propagatedBuildInputs = [
     asn1crypto
     cbor2
+    cryptography
     pyopenssl
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "webauthn"
-  ];
+  pythonImportsCheck = [ "webauthn" ];
 
   disabledTests = [
     # TypeError: X509StoreContextError.__init__() missing 1 required...
-    "test_throws_on_bad_root_cert"
+    #"test_throws_on_bad_root_cert"
   ];
 
   meta = with lib; {
@@ -46,6 +48,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/duo-labs/py_webauthn";
     changelog = "https://github.com/duo-labs/py_webauthn/blob/v${version}/CHANGELOG.md";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/webcolors/default.nix b/pkgs/development/python-modules/webcolors/default.nix
index 7ee91e7ea2b4d..93f2030755c04 100644
--- a/pkgs/development/python-modules/webcolors/default.nix
+++ b/pkgs/development/python-modules/webcolors/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, unittestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  unittestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,22 +19,21 @@ buildPythonPackage rec {
     hash = "sha256-wiW2dMg/qSO+k9I1MwzgMANz0CiFzvIyOIE7DVZoMEo=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [ "-s" "tests" ];
-
-  pythonImportsCheck = [
-    "webcolors"
+  unittestFlagsArray = [
+    "-s"
+    "tests"
   ];
 
+  pythonImportsCheck = [ "webcolors" ];
+
   meta = with lib; {
     description = "Library for working with color names/values defined by the HTML and CSS specifications";
     homepage = "https://github.com/ubernostrum/webcolors";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/webdataset/default.nix b/pkgs/development/python-modules/webdataset/default.nix
index 5f18d28f9fbda..da172aa79ff7b 100644
--- a/pkgs/development/python-modules/webdataset/default.nix
+++ b/pkgs/development/python-modules/webdataset/default.nix
@@ -1,37 +1,38 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, braceexpand
-, imageio
-, lmdb
-, msgpack
-, numpy
-, pytestCheckHook
-, pyyaml
-, setuptools
-, torch
-, torchvision
-, wheel
-, fetchFromGitHub
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  braceexpand,
+  imageio,
+  lmdb,
+  msgpack,
+  numpy,
+  pytestCheckHook,
+  pyyaml,
+  setuptools,
+  torch,
+  torchvision,
+  wheel,
+  fetchFromGitHub,
 }:
 buildPythonPackage rec {
   pname = "webdataset";
-  version = "0.2.86";
+  version = "0.2.100";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "webdataset";
     repo = "webdataset";
     rev = "refs/tags/${version}";
-    hash = "sha256-aTjxoSoQ9LH4gcFmV+7Aj0HNIpvsFHTrxFUpAtB3nkM=";
+    hash = "sha256-+Rvb4VY4qBcVKM1CUkLZTQdlZklpHcuiMO8r6VNInLc=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     wheel
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     braceexpand
     numpy
     pyyaml
@@ -48,37 +49,55 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "webdataset" ];
 
-  disabledTests = [
-    # requires network
-    "test_batched"
-    "test_dataloader"
-    "test_decode_handlers"
-    "test_decoder"
-    "test_decoder"
-    "test_download"
-    "test_handlers"
-    "test_pipe"
-    "test_shard_syntax"
-    "test_torchvision"
-    "test_torchvision"
-    "test_unbatched"
-    "test_yaml3"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # pickling error
-    "test_background_download"
-  ] ++ lib.optionals (stdenv.isAarch64 && stdenv.isLinux) [
-    # segfaults on aarch64-linux
-    "test_webloader"
-    "test_webloader2"
-    "test_webloader_repeat"
-    "test_webloader_unbatched"
+  disabledTests =
+    [
+      # requires network
+      "test_batched"
+      "test_cache_dir"
+      "test_concurrent_download_and_open"
+      "test_dataloader"
+      "test_decode_handlers"
+      "test_decoder"
+      "test_download"
+      "test_handlers"
+      "test_pipe"
+      "test_remote_file"
+      "test_shard_syntax"
+      "test_torchvision"
+      "test_unbatched"
+      "test_yaml3"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # pickling error
+      "test_background_download"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isx86_64 && stdenv.hostPlatform.isDarwin) [
+      "test_concurrent_access"
+      # fails to patch 'init_process_group' from torch.distributed
+      "TestDistributedChunkedSampler"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux) [
+      # segfaults on aarch64-linux
+      "test_webloader"
+      "test_webloader2"
+      "test_webloader_repeat"
+      "test_webloader_unbatched"
+    ];
+
+  disabledTestPaths = lib.optionals stdenv.hostPlatform.isDarwin [
+    # AttributeError: <module 'torch.distributed' from /nix/store/...
+    "tests/test_wids.py"
+
+    # Issue with creating a temp file in the sandbox
+    "tests/test_wids_mmtar.py"
   ];
 
-  meta = with lib; {
-    description = "A high-performance Python-based I/O system for large (and small) deep learning problems, with strong support for PyTorch";
+  meta = {
+    description = "High-performance Python-based I/O system for large (and small) deep learning problems, with strong support for PyTorch";
     mainProgram = "widsindex";
     homepage = "https://github.com/webdataset/webdataset";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ iynaix ];
+    changelog = "https://github.com/webdataset/webdataset/releases/tag/${version}";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ iynaix ];
   };
 }
diff --git a/pkgs/development/python-modules/webdav4/default.nix b/pkgs/development/python-modules/webdav4/default.nix
index 831ebbe43dd40..9a6459fa375e7 100644
--- a/pkgs/development/python-modules/webdav4/default.nix
+++ b/pkgs/development/python-modules/webdav4/default.nix
@@ -1,22 +1,24 @@
-{ lib
-, buildPythonPackage
-, cheroot
-, colorama
-, fetchFromGitHub
-, fsspec
-, hatch-vcs
-, hatchling
-, httpx
-, pytest-xdist
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, wsgidav
+{
+  lib,
+  buildPythonPackage,
+  cheroot,
+  colorama,
+  fetchFromGitHub,
+  fsspec,
+  hatch-vcs,
+  hatchling,
+  httpx,
+  pytest-xdist,
+  pytestCheckHook,
+  pytest-cov-stub,
+  python-dateutil,
+  pythonOlder,
+  wsgidav,
 }:
 
 buildPythonPackage rec {
   pname = "webdav4";
-  version = "0.9.8";
+  version = "0.10.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -25,20 +27,15 @@ buildPythonPackage rec {
     owner = "skshetry";
     repo = "webdav4";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Le/gABaUxMmSW2SjgucsBKqjxOq1h9UCAWl5YyUsCPk=";
+    hash = "sha256-LgWYgERRuUODFzUnC08kDJTVRx9vanJ+OU8sREEMVwM=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace " --cov" ""
-  '';
-
-  nativeBuildInputs = [
+  build-system = [
     hatch-vcs
     hatchling
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     httpx
     python-dateutil
   ];
@@ -48,25 +45,20 @@ buildPythonPackage rec {
     colorama
     pytest-xdist
     pytestCheckHook
+    pytest-cov-stub
     wsgidav
   ] ++ passthru.optional-dependencies.fsspec;
 
   passthru.optional-dependencies = {
-    fsspec = [
-      fsspec
-    ];
-    http2 = [
-      httpx.optional-dependencies.http2
-    ];
+    fsspec = [ fsspec ];
+    http2 = [ httpx.optional-dependencies.http2 ];
     all = [
       fsspec
       httpx.optional-dependencies.http2
     ];
   };
 
-  pythonImportsCheck = [
-    "webdav4"
-  ];
+  pythonImportsCheck = [ "webdav4" ];
 
   disabledTests = [
     # ValueError: Invalid dir_browser htdocs_path
@@ -78,7 +70,6 @@ buildPythonPackage rec {
     "test_cp_cli"
     "test_mv_cli"
     "test_sync_remote_to_local"
-
   ];
 
   disabledTestPaths = [
diff --git a/pkgs/development/python-modules/webdavclient3/default.nix b/pkgs/development/python-modules/webdavclient3/default.nix
index 0cd96d389bd07..168ee71745f43 100644
--- a/pkgs/development/python-modules/webdavclient3/default.nix
+++ b/pkgs/development/python-modules/webdavclient3/default.nix
@@ -1,5 +1,13 @@
-{ buildPythonPackage, fetchPypi, isPy27, lib, python-dateutil, lxml, requests
-, pytestCheckHook }:
+{
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  lib,
+  python-dateutil,
+  lxml,
+  requests,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "webdavclient3";
@@ -13,7 +21,11 @@ buildPythonPackage rec {
     sha256 = "bcd22586bb0d58abc26ca56054fd04228e704bd36073c3080f4597c1556c880d";
   };
 
-  propagatedBuildInputs = [ python-dateutil lxml requests ];
+  propagatedBuildInputs = [
+    python-dateutil
+    lxml
+    requests
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
diff --git a/pkgs/development/python-modules/webdriver-manager/default.nix b/pkgs/development/python-modules/webdriver-manager/default.nix
index 6680fa7eea6b1..7d6616f1538db 100644
--- a/pkgs/development/python-modules/webdriver-manager/default.nix
+++ b/pkgs/development/python-modules/webdriver-manager/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, packaging
-, pybrowsers
-, pytestCheckHook
-, python-dotenv
-, pythonOlder
-, requests
-, selenium
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  packaging,
+  pybrowsers,
+  pytestCheckHook,
+  python-dotenv,
+  pythonOlder,
+  requests,
+  selenium,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "webdriver-manager";
-  version = "4.0.1";
+  version = "4.0.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -22,14 +23,14 @@ buildPythonPackage rec {
     owner = "SergeyPirogov";
     repo = "webdriver_manager";
     rev = "refs/tags/v${version}";
-    hash = "sha256-PdUlloJ4DncnktKQHofn/OLVrgSVyWhaeEEhl3Hgjek=";
+    hash = "sha256-ZmrQa/2vPwYgSvY3ZUvilg4RizVXpu5hvJJBQVXkK8E=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  __darwinAllowLocalNetworking = true;
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     packaging
     python-dotenv
     requests
@@ -41,9 +42,7 @@ buildPythonPackage rec {
     selenium
   ];
 
-  pythonImportsCheck = [
-    "webdriver_manager"
-  ];
+  pythonImportsCheck = [ "webdriver_manager" ];
 
   disabledTestPaths = [
     # Tests require network access and browsers available
@@ -69,5 +68,6 @@ buildPythonPackage rec {
     changelog = "https://github.com/SergeyPirogov/webdriver_manager/blob/${version}/CHANGELOG.md";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/python-modules/webencodings/default.nix b/pkgs/development/python-modules/webencodings/default.nix
index 8a805888c4a02..334ba54b0ba5c 100644
--- a/pkgs/development/python-modules/webencodings/default.nix
+++ b/pkgs/development/python-modules/webencodings/default.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
-, pytest
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+  pytest,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/webexteamssdk/default.nix b/pkgs/development/python-modules/webexteamssdk/default.nix
index 1e81e90af9a60..373f06b6d0465 100644
--- a/pkgs/development/python-modules/webexteamssdk/default.nix
+++ b/pkgs/development/python-modules/webexteamssdk/default.nix
@@ -1,29 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, future
-, pyjwt
-, pythonOlder
-, requests
-, requests-toolbelt
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyjwt,
+  pythonOlder,
+  requests,
+  requests-toolbelt,
+  poetry-core,
+  poetry-dynamic-versioning,
 }:
 
 buildPythonPackage rec {
   pname = "webexteamssdk";
-  version = "1.6.1";
-  format = "setuptools";
+  version = "2.0.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "CiscoDevNet";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-xlkmXl4tVm48drXmkUijv9GNXzJcDnfSKbOMciPIRRo=";
+    repo = "webexteamssdk";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-ENAUUicVO/Br7k+RFHCGzQ7BIG0CP7jTYM3tzs5EAZQ=";
   };
 
-  propagatedBuildInputs = [
-    future
+  build-system = [
+    poetry-core
+    poetry-dynamic-versioning
+  ];
+
+  dependencies = [
     pyjwt
     requests
     requests-toolbelt
@@ -32,14 +38,13 @@ buildPythonPackage rec {
   # Tests require a Webex Teams test domain
   doCheck = false;
 
-  pythonImportsCheck = [
-    "webexteamssdk"
-  ];
+  pythonImportsCheck = [ "webexpythonsdk" ];
 
   meta = with lib; {
     description = "Python module for Webex Teams APIs";
     homepage = "https://github.com/CiscoDevNet/webexteamssdk";
-    license = with licenses; [ mit ];
+    changelog = "https://github.com/WebexCommunity/WebexPythonSDK/releases/tag/v${version}";
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/webhelpers/default.nix b/pkgs/development/python-modules/webhelpers/default.nix
deleted file mode 100644
index c9dc7159f2f82..0000000000000
--- a/pkgs/development/python-modules/webhelpers/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, routes
-, markupsafe
-, webob
-, nose
-}:
-
-buildPythonPackage rec {
-  pname = "webhelpers";
-  version = "1.3";
-
-  src = fetchPypi {
-    pname = "WebHelpers";
-    inherit version;
-    sha256 = "ea86f284e929366b77424ba9a89341f43ae8dee3cbeb8702f73bcf86058aa583";
-  };
-
-  buildInputs = [ routes markupsafe webob nose ];
-
-  # TODO: failing tests https://bitbucket.org/bbangert/webhelpers/pull-request/1/fix-error-on-webob-123/diff
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://webhelpers.readthedocs.org/en/latest/";
-    description = "Web Helpers";
-    license = licenses.free;
-    maintainers = with maintainers; [ domenkozar ];
-  };
-
-}
diff --git a/pkgs/development/python-modules/weblate-language-data/default.nix b/pkgs/development/python-modules/weblate-language-data/default.nix
new file mode 100644
index 0000000000000..98740f668d17f
--- /dev/null
+++ b/pkgs/development/python-modules/weblate-language-data/default.nix
@@ -0,0 +1,36 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  translate-toolkit,
+}:
+
+buildPythonPackage rec {
+  pname = "weblate-language-data";
+  version = "2024.6";
+  pyproject = true;
+
+  src = fetchPypi {
+    pname = "weblate_language_data";
+    inherit version;
+    hash = "sha256-FGLrjptIqMeKAV/O2H6ZcP+uGcr1ghqIxAHsYnOpVxg=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ translate-toolkit ];
+
+  # No tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "weblate_language_data" ];
+
+  meta = with lib; {
+    description = "Language definitions used by Weblate";
+    homepage = "https://github.com/WeblateOrg/language-data";
+    license = licenses.mit;
+    maintainers = with maintainers; [ erictapen ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/weblate-schemas/default.nix b/pkgs/development/python-modules/weblate-schemas/default.nix
new file mode 100644
index 0000000000000..1fff774c17159
--- /dev/null
+++ b/pkgs/development/python-modules/weblate-schemas/default.nix
@@ -0,0 +1,46 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  fqdn,
+  jsonschema,
+  rfc3987,
+  strict-rfc3339,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "weblate-schemas";
+  version = "2024.1";
+
+  pyproject = true;
+
+  src = fetchPypi {
+    pname = "weblate_schemas";
+    inherit version;
+    hash = "sha256-nYPLD3VDO1Z97HI79J6Yjj3bWp1xKB79FWPCW146iz4=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    fqdn
+    jsonschema
+    rfc3987
+    strict-rfc3339
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "weblate_schemas" ];
+
+  meta = with lib; {
+    description = "Schemas used by Weblate";
+    homepage = "https://github.com/WeblateOrg/weblate_schemas";
+    changelog = "https://github.com/WeblateOrg/weblate_schemas/blob/${version}/CHANGES.rst";
+    license = licenses.mit;
+    maintainers = with maintainers; [ erictapen ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/webmin-xmlrpc/default.nix b/pkgs/development/python-modules/webmin-xmlrpc/default.nix
new file mode 100644
index 0000000000000..4735007ab7228
--- /dev/null
+++ b/pkgs/development/python-modules/webmin-xmlrpc/default.nix
@@ -0,0 +1,37 @@
+{
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "webmin-xmlrpc";
+  version = "0.0.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "autinerd";
+    repo = "webmin-xmlrpc";
+    rev = "refs/tags/${version}";
+    hash = "sha256-qCS5YV3o7ozO7fDaJucQvU0dEyTbxTivtTDKQVY4pkM=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ aiohttp ];
+
+  pythonImportsCheck = [ "webmin_xmlrpc" ];
+
+  # upstream has no tests
+  doCheck = false;
+
+  meta = {
+    changelog = "https://github.com/autinerd/webmin-xmlrpc/releases/tag/${version}";
+    description = "Python interface to interact with the Webmin XML-RPC API";
+    homepage = "https://github.com/autinerd/webmin-xmlrpc";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/webob/default.nix b/pkgs/development/python-modules/webob/default.nix
index 2b07f61e1d3a6..e574d78da108e 100644
--- a/pkgs/development/python-modules/webob/default.nix
+++ b/pkgs/development/python-modules/webob/default.nix
@@ -1,14 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  legacy-cgi,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "webob";
   version = "1.8.7";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -18,13 +22,14 @@ buildPythonPackage rec {
     hash = "sha256-tk71FBvlWc+t5EjwRPpFwiYDUe3Lao72t+AMfc7wwyM=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [
-    "webob"
-  ];
+  # https://github.com/Pylons/webob/issues/437
+  dependencies = lib.optionals (pythonAtLeast "3.13") [ legacy-cgi ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "webob" ];
 
   disabledTestPaths = [
     # AttributeError: 'Thread' object has no attribute 'isAlive'
@@ -36,6 +41,6 @@ buildPythonPackage rec {
     description = "WSGI request and response object";
     homepage = "https://webob.org/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/weboob/default.nix b/pkgs/development/python-modules/weboob/default.nix
deleted file mode 100644
index 79a88db2a5761..0000000000000
--- a/pkgs/development/python-modules/weboob/default.nix
+++ /dev/null
@@ -1,97 +0,0 @@
-{ lib
-, babel
-, buildPythonPackage
-, cssselect
-, feedparser
-, fetchPypi
-, gdata
-, gnupg
-, google-api-python-client
-, html2text
-, libyaml
-, lxml
-, mechanize
-, nose
-, pdfminer-six
-, pillow
-, prettytable
-, pyqt5
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, pyyaml
-, requests
-, simplejson
-, termcolor
-, unidecode
-}:
-
-buildPythonPackage rec {
-  pname = "weboob";
-  version = "2.0";
-  format = "setuptools";
-
-  disabled = pythonOlder "3.7";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1c69vzf8sg8471lcaafpz9iw2q3rfj5hmcpqrs2k59fkgbvy32zw";
-  };
-
-  nativeBuildInputs = [
-    pyqt5
-  ];
-
-  propagatedBuildInputs = [
-    babel
-    cssselect
-    python-dateutil
-    feedparser
-    gdata
-    gnupg
-    google-api-python-client
-    html2text
-    libyaml
-    lxml
-    mechanize
-    pdfminer-six
-    pillow
-    prettytable
-    pyqt5
-    pyyaml
-    requests
-    simplejson
-    termcolor
-    unidecode
-  ];
-
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "with-doctest = 1" "" \
-      --replace "with-coverage = 1" "" \
-      --replace "weboob.browser.filters.standard," "" \
-      --replace "weboob.browser.tests.filters," "" \
-      --replace "weboob.tools.application.formatters.json," "" \
-      --replace "weboob.tools.application.formatters.table," "" \
-      --replace "weboob.tools.capabilities.bank.transactions," ""
-  '';
-
-  nativeCheckInputs = [
-    nose
-  ];
-
-  checkPhase = ''
-    nosetests
-  '';
-
-  pythonImportsCheck = [
-    "weboob"
-  ];
-
-  meta = with lib; {
-    description = "Collection of applications and APIs to interact with websites";
-    homepage = "http://weboob.org";
-    license = licenses.agpl3Plus;
-    maintainers = with maintainers; [ ];
-  };
-}
diff --git a/pkgs/development/python-modules/webrtc-noise-gain/default.nix b/pkgs/development/python-modules/webrtc-noise-gain/default.nix
index 63b02a1bfd0d2..3df09891253da 100644
--- a/pkgs/development/python-modules/webrtc-noise-gain/default.nix
+++ b/pkgs/development/python-modules/webrtc-noise-gain/default.nix
@@ -1,30 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, stdenv
-
-# build-system
-, pybind11
-, setuptools
-
-# native dependencies
-, abseil-cpp
-, darwin
-
-# tests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  stdenv,
+
+  # build-system
+  pybind11,
+  setuptools,
+
+  # native dependencies
+  abseil-cpp,
+  darwin,
+
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "webrtc-noise-gain";
-  version = "1.2.3";
+  version = "1.2.4";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "rhasspy";
     repo = "webrtc-noise-gain";
     rev = "v${version}";
-    hash = "sha256-DFEtuO49zXNixLwBjQ/WOiARDhMAXVH+5hfc3eSdPIo=";
+    hash = "sha256-ALRdj9zBcx05DcSKjAI0oEPruTD/p+pQ0kcqqyHl37A=";
   };
 
   nativeBuildInputs = [
@@ -34,17 +35,11 @@ buildPythonPackage rec {
 
   buildInputs = [
     abseil-cpp
-  ] ++ lib.optionals (stdenv.isDarwin) [
-    darwin.apple_sdk.frameworks.CoreServices
-  ];
+  ] ++ lib.optionals (stdenv.hostPlatform.isDarwin) [ darwin.apple_sdk.frameworks.CoreServices ];
 
-  pythonImportsCheck = [
-    "webrtc_noise_gain"
-  ];
+  pythonImportsCheck = [ "webrtc_noise_gain" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Tiny wrapper around webrtc-audio-processing for noise suppression/auto gain only";
diff --git a/pkgs/development/python-modules/webrtcvad/default.nix b/pkgs/development/python-modules/webrtcvad/default.nix
index c47b32a9d3a3b..2bc09f2e0c578 100644
--- a/pkgs/development/python-modules/webrtcvad/default.nix
+++ b/pkgs/development/python-modules/webrtcvad/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/websocket-client/default.nix b/pkgs/development/python-modules/websocket-client/default.nix
index 1903c6cb64669..b69dfcb585099 100644
--- a/pkgs/development/python-modules/websocket-client/default.nix
+++ b/pkgs/development/python-modules/websocket-client/default.nix
@@ -1,39 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, python-socks
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  python-socks,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "websocket-client";
-  version = "1.7.0";
+  version = "1.8.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-EOUR6jqMdEYx07135h6xftCTBMQTrULPbd+kx3h+j+Y=";
+    pname = "websocket_client";
+    inherit version;
+    hash = "sha256-Mjnfn0TaYy+WASRygF1AojKBqZECfOEdL0Wm8krEw9o=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    python-socks
-   ];
+  propagatedBuildInputs = [ python-socks ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "websocket"
-  ];
+  pythonImportsCheck = [ "websocket" ];
 
   meta = with lib; {
     description = "Websocket client for Python";
diff --git a/pkgs/development/python-modules/websockets/default.nix b/pkgs/development/python-modules/websockets/default.nix
index 770e6e654caf5..907024735afb2 100644
--- a/pkgs/development/python-modules/websockets/default.nix
+++ b/pkgs/development/python-modules/websockets/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, unittestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  unittestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-sOL3VI9Ib/PncZs5KN4dAIHOrBc7LfXqT15LO4M6qKg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   patchPhase = ''
     # Disable all tests that need to terminate within a predetermined amount of
@@ -46,16 +45,12 @@ buildPythonPackage rec {
     done
   '';
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
   # Tests fail on Darwin with `OSError: AF_UNIX path too long`
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
-  pythonImportsCheck = [
-    "websockets"
-  ];
+  pythonImportsCheck = [ "websockets" ];
 
   meta = with lib; {
     description = "WebSocket implementation in Python";
diff --git a/pkgs/development/python-modules/websockify/default.nix b/pkgs/development/python-modules/websockify/default.nix
index 1dd9413792744..2aaa1078200be 100644
--- a/pkgs/development/python-modules/websockify/default.nix
+++ b/pkgs/development/python-modules/websockify/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, jwcrypto
-, numpy
-, pytestCheckHook
-, pythonOlder
-, redis
-, requests
-, simplejson
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jwcrypto,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  redis,
+  requests,
+  simplejson,
 }:
 
 buildPythonPackage rec {
   pname = "websockify";
-  version = "0.11.0";
+  version = "0.12.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -22,7 +23,7 @@ buildPythonPackage rec {
     owner = "novnc";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-82Fk9qbiiCD5Rts1d14sK/njeN7DcjKMKPqE7S/1WHs=";
+    hash = "sha256-+qjWmCkXJj8J5OImMSjTwXWyApmJ883NMr0157iqPS4=";
   };
 
   propagatedBuildInputs = [
@@ -33,19 +34,15 @@ buildPythonPackage rec {
     simplejson
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
     # this test failed on macos
     # https://github.com/novnc/websockify/issues/552
     "test_socket_set_keepalive_options"
   ];
 
-  pythonImportsCheck = [
-    "websockify"
-  ];
+  pythonImportsCheck = [ "websockify" ];
 
   meta = with lib; {
     description = "WebSockets support for any application/server";
@@ -53,6 +50,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/kanaka/websockify";
     changelog = "https://github.com/novnc/websockify/releases/tag/v${version}";
     license = licenses.lgpl3Only;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/webssh/default.nix b/pkgs/development/python-modules/webssh/default.nix
index 4681b186c9caf..f7166b86e459d 100644
--- a/pkgs/development/python-modules/webssh/default.nix
+++ b/pkgs/development/python-modules/webssh/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, paramiko
-, pytestCheckHook
-, tornado
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  paramiko,
+  pytestCheckHook,
+  tornado,
 }:
 
 buildPythonPackage rec {
@@ -17,23 +18,18 @@ buildPythonPackage rec {
     hash = "sha256-mRestRJukaf7ti3vIs/MM/R+zpGmK551j5HAM2chBsE=";
   };
 
+  patches = [
+    ./remove-typo-in-test-case.patch
+  ];
+
   propagatedBuildInputs = [
     paramiko
     tornado
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-
-  pythonImportsCheck = [
-    "webssh"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = [
-    # Test fails with AttributeError (possibly related to paramiko update)
-    "test_app_with_bad_host_key"
-  ];
+  pythonImportsCheck = [ "webssh" ];
 
   meta = with lib; {
     description = "Web based SSH client";
@@ -42,6 +38,6 @@ buildPythonPackage rec {
     changelog = "https://github.com/huashengdun/webssh/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ davidtwco ];
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/webssh/remove-typo-in-test-case.patch b/pkgs/development/python-modules/webssh/remove-typo-in-test-case.patch
new file mode 100644
index 0000000000000..ac7bd94e5b39b
--- /dev/null
+++ b/pkgs/development/python-modules/webssh/remove-typo-in-test-case.patch
@@ -0,0 +1,18 @@
+---
+ tests/test_handler.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/test_handler.py b/tests/test_handler.py
+index a9ad924..950e672 100644
+--- a/tests/test_handler.py
++++ b/tests/test_handler.py
+@@ -336,5 +336,5 @@ class TestIndexHandler(unittest.TestCase):
+         ssh.exec_command.return_value = (stdin, stdout, stderr)
+ 
+         encoding = IndexHandler.get_default_encoding(handler, ssh)
+-        self.assertEquals("utf-8", encoding)
++        self.assertEqual("utf-8", encoding)
+ 
+-- 
+2.44.0
+
diff --git a/pkgs/development/python-modules/webtest-aiohttp/default.nix b/pkgs/development/python-modules/webtest-aiohttp/default.nix
index f8666689ca316..228dab2dae80f 100644
--- a/pkgs/development/python-modules/webtest-aiohttp/default.nix
+++ b/pkgs/development/python-modules/webtest-aiohttp/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pytest-aiohttp
-, pytestCheckHook
-, pythonOlder
-, webtest
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
+  webtest,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [
-    webtest
-  ];
+  propagatedBuildInputs = [ webtest ];
 
   nativeCheckInputs = [
     aiohttp
@@ -41,9 +40,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "webtest_aiohttp"
-  ];
+  pythonImportsCheck = [ "webtest_aiohttp" ];
 
   meta = with lib; {
     changelog = "https://github.com/sloria/webtest-aiohttp/blob/${src.rev}/CHANGELOG.rst";
diff --git a/pkgs/development/python-modules/webtest/default.nix b/pkgs/development/python-modules/webtest/default.nix
index 52d48505df473..15a36b3dc8f10 100644
--- a/pkgs/development/python-modules/webtest/default.nix
+++ b/pkgs/development/python-modules/webtest/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, pastedeploy
-, pyquery
-, pytestCheckHook
-, pythonOlder
-, six
-, waitress
-, webob
-, wsgiproxy2
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  pastedeploy,
+  pyquery,
+  pytestCheckHook,
+  pythonOlder,
+  six,
+  waitress,
+  webob,
+  wsgiproxy2,
 }:
 
 buildPythonPackage rec {
@@ -51,9 +52,7 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [
-    "webtest"
-  ];
+  pythonImportsCheck = [ "webtest" ];
 
   meta = with lib; {
     description = "Helper to test WSGI applications";
diff --git a/pkgs/development/python-modules/webthing-ws/default.nix b/pkgs/development/python-modules/webthing-ws/default.nix
index 1e7b89e03b62b..3df7d18618139 100644
--- a/pkgs/development/python-modules/webthing-ws/default.nix
+++ b/pkgs/development/python-modules/webthing-ws/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +29,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "webthing_ws"
-  ];
+  pythonImportsCheck = [ "webthing_ws" ];
 
   meta = with lib; {
     description = "WebThing WebSocket consumer and API client";
diff --git a/pkgs/development/python-modules/webthing/default.nix b/pkgs/development/python-modules/webthing/default.nix
index aea123bc78c16..4f4ede0e8ba1d 100644
--- a/pkgs/development/python-modules/webthing/default.nix
+++ b/pkgs/development/python-modules/webthing/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, ifaddr
-, jsonschema
-, pyee
-, pythonOlder
-, tornado
-, zeroconf
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ifaddr,
+  jsonschema,
+  pyee,
+  pythonOlder,
+  tornado,
+  zeroconf,
 }:
 
 buildPythonPackage rec {
@@ -34,9 +35,7 @@ buildPythonPackage rec {
   # No tests are present
   doCheck = false;
 
-  pythonImportsCheck = [
-    "webthing"
-  ];
+  pythonImportsCheck = [ "webthing" ];
 
   meta = with lib; {
     description = "Python implementation of a Web Thing server";
diff --git a/pkgs/development/python-modules/weconnect-mqtt/default.nix b/pkgs/development/python-modules/weconnect-mqtt/default.nix
index 003614876b98a..bdbd57513c568 100644
--- a/pkgs/development/python-modules/weconnect-mqtt/default.nix
+++ b/pkgs/development/python-modules/weconnect-mqtt/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, paho-mqtt
-, python-dateutil
-, weconnect
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  paho-mqtt,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  setuptools,
+  weconnect,
 }:
 
 buildPythonPackage rec {
   pname = "weconnect-mqtt";
-  version = "0.49.0";
+  version = "0.48.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,7 +21,7 @@ buildPythonPackage rec {
     owner = "tillsteinbach";
     repo = "WeConnect-mqtt";
     rev = "refs/tags/v${version}";
-    hash = "sha256-V96fdy6h012SbP3tyOMniAwLf/1+iKzTc9WnevAVwTI=";
+    hash = "sha256-Yv6CAGTDi4P9pImLxVk2QkZ014iqQ8UMBUeiyZWnYiQ=";
   };
 
   postPatch = ''
@@ -33,30 +34,27 @@ buildPythonPackage rec {
       --replace-fail "pytest-cov" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  pythonRelaxDeps = [ "python-dateutil" ];
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+
+  dependencies = [
     paho-mqtt
     python-dateutil
     weconnect
   ] ++ weconnect.optional-dependencies.Images;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "weconnect_mqtt"
-  ];
+  pythonImportsCheck = [ "weconnect_mqtt" ];
 
   meta = with lib; {
     description = "Python client that publishes data from Volkswagen WeConnect";
-    mainProgram = "weconnect-mqtt";
     homepage = "https://github.com/tillsteinbach/WeConnect-mqtt";
     changelog = "https://github.com/tillsteinbach/WeConnect-mqtt/releases/tag/v${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "weconnect-mqtt";
   };
 }
diff --git a/pkgs/development/python-modules/weconnect/default.nix b/pkgs/development/python-modules/weconnect/default.nix
index 096e41b89bcc9..171622cf10b2f 100644
--- a/pkgs/development/python-modules/weconnect/default.nix
+++ b/pkgs/development/python-modules/weconnect/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, ascii-magic
-, buildPythonPackage
-, fetchFromGitHub
-, oauthlib
-, pillow
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  ascii-magic,
+  buildPythonPackage,
+  fetchFromGitHub,
+  oauthlib,
+  pillow,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "weconnect";
-  version = "0.60.2";
+  version = "0.60.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,7 +22,7 @@ buildPythonPackage rec {
     owner = "tillsteinbach";
     repo = "WeConnect-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-VM4qCe+VMnfKXioUHTjOeBSniwpq44fvbN1k1jG6puk=";
+    hash = "sha256-vWnqitYGh68PM9IM2qKJG3g0JrVfIA+s9Ngh8jpNJKg=";
   };
 
   postPatch = ''
@@ -35,9 +36,7 @@ buildPythonPackage rec {
       --replace-fail "required_plugins = pytest-cov" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     oauthlib
@@ -51,13 +50,9 @@ buildPythonPackage rec {
     ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "weconnect"
-  ];
+  pythonImportsCheck = [ "weconnect" ];
 
   meta = with lib; {
     description = "Python client for the Volkswagen WeConnect Services";
diff --git a/pkgs/development/python-modules/weheat/default.nix b/pkgs/development/python-modules/weheat/default.nix
new file mode 100644
index 0000000000000..a8f42433894ab
--- /dev/null
+++ b/pkgs/development/python-modules/weheat/default.nix
@@ -0,0 +1,52 @@
+{
+  lib,
+  aenum,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pydantic,
+  python-dateutil,
+  pythonOlder,
+  setuptools,
+  urllib3,
+}:
+
+buildPythonPackage rec {
+  pname = "weheat";
+  version = "2024.09.23";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "wefabricate";
+    repo = "wh-python";
+    rev = "refs/tags/${version}";
+    hash = "sha256-egxc4gJaFIjbdvDVmenN61Rsg1NmlJSqxdG/7con9mU=";
+  };
+
+  pythonRelaxDeps = [
+    "urllib3"
+    "pydantic"
+  ];
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    aenum
+    pydantic
+    python-dateutil
+    urllib3
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "weheat" ];
+
+  meta = {
+    description = "Library to interact with the weheat API";
+    homepage = "https://github.com/wefabricate/wh-python";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/werkzeug/default.nix b/pkgs/development/python-modules/werkzeug/default.nix
index 51e380ece2a16..be6cd79b788a8 100644
--- a/pkgs/development/python-modules/werkzeug/default.nix
+++ b/pkgs/development/python-modules/werkzeug/default.nix
@@ -1,80 +1,69 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, fetchpatch2
-
-# build-system
-, flit-core
-
-# dependencies
-, markupsafe
-
-# optional-dependencies
-, watchdog
-
-# tests
-, cryptography
-, ephemeral-port-reserve
-, greenlet
-, pytest-timeout
-, pytest-xprocess
-, pytestCheckHook
-
-# reverse dependencies
-, moto
-, sentry-sdk
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+
+  # build-system
+  flit-core,
+
+  # dependencies
+  markupsafe,
+
+  # optional-dependencies
+  watchdog,
+
+  # tests
+  cryptography,
+  ephemeral-port-reserve,
+  greenlet,
+  pytest-timeout,
+  pytest-xprocess,
+  pytestCheckHook,
+
+  # reverse dependencies
+  moto,
+  sentry-sdk,
 }:
 
 buildPythonPackage rec {
   pname = "werkzeug";
-  version = "3.0.1";
+  version = "3.0.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-UH6BHs6nKxikBJR63tSzOQ4duPgmtJTXZVDvRbs7Hcw=";
+    hash = "sha256-CX5b/anwq6jaa4VFFG3vSB0Gqn0yZudEjizM9n3YvRg=";
   };
 
-  patches = [
-    (fetchpatch2 {
-      name = "werkzeug-pytest8-compat.patch";
-      url = "https://github.com/pallets/werkzeug/commit/4e5bdca7f8227d10cae828f8064fb98190ace4aa.patch";
-      hash = "sha256-lVknzvC+HIM6TagpyIOhnb+7tx0UXuGw0tINjsujISI=";
-    })
-  ];
-
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
-  propagatedBuildInputs = [
-    markupsafe
-  ];
+  propagatedBuildInputs = [ markupsafe ];
 
   passthru.optional-dependencies = {
-    watchdog = lib.optionals (!stdenv.isDarwin) [
+    watchdog = lib.optionals (!stdenv.hostPlatform.isDarwin) [
       # watchdog requires macos-sdk 10.13
       watchdog
     ];
   };
 
-  nativeCheckInputs = [
-    cryptography
-    ephemeral-port-reserve
-    pytest-timeout
-    pytest-xprocess
-    pytestCheckHook
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    greenlet
-  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
-
-  disabledTests = lib.optionals stdenv.isDarwin [
-    "test_get_machine_id"
-  ];
+  nativeCheckInputs =
+    [
+      cryptography
+      ephemeral-port-reserve
+      pytest-timeout
+      pytest-xprocess
+      pytestCheckHook
+    ]
+    ++ lib.optionals (pythonOlder "3.11") [ greenlet ]
+    ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+
+  pythonImportsCheck = [ "werkzeug" ];
+
+  disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [ "test_get_machine_id" ];
 
   disabledTestPaths = [
     # ConnectionRefusedError: [Errno 111] Connection refused
@@ -91,17 +80,19 @@ buildPythonPackage rec {
     inherit moto sentry-sdk;
   };
 
-  meta = with lib; {
-    changelog = "https://werkzeug.palletsprojects.com/en/${versions.majorMinor version}.x/changes/#version-${replaceStrings [ "." ] [ "-" ] version}";
+  meta = {
+    changelog = "https://werkzeug.palletsprojects.com/en/${lib.versions.majorMinor version}.x/changes/#version-${
+      lib.replaceStrings [ "." ] [ "-" ] version
+    }";
     homepage = "https://palletsprojects.com/p/werkzeug/";
-    description = "The comprehensive WSGI web application library";
+    description = "Comprehensive WSGI web application library";
     longDescription = ''
       Werkzeug is a comprehensive WSGI web application library. It
       began as a simple collection of various utilities for WSGI
       applications and has become one of the most advanced WSGI
       utility libraries.
     '';
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.bsd3;
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/west/default.nix b/pkgs/development/python-modules/west/default.nix
index 55ad178d0b38e..e644d156edb05 100644
--- a/pkgs/development/python-modules/west/default.nix
+++ b/pkgs/development/python-modules/west/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, colorama
-, configobj
-, fetchPypi
-, packaging
-, pykwalify
-, pythonOlder
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  colorama,
+  configobj,
+  fetchPypi,
+  packaging,
+  pykwalify,
+  pythonOlder,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +34,7 @@ buildPythonPackage rec {
   # tests run under 'tox' and have west try to git clone repos (not sandboxable)
   doCheck = false;
 
-  pythonImportsCheck = [
-    "west"
-  ];
+  pythonImportsCheck = [ "west" ];
 
   meta = with lib; {
     description = "Zephyr RTOS meta tool";
diff --git a/pkgs/development/python-modules/wfuzz/default.nix b/pkgs/development/python-modules/wfuzz/default.nix
index 1bc512398bd05..71577257d2285 100644
--- a/pkgs/development/python-modules/wfuzz/default.nix
+++ b/pkgs/development/python-modules/wfuzz/default.nix
@@ -1,51 +1,62 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, chardet
-, colorama
-, fetchFromGitHub
-, netaddr
-, pycurl
-, pyparsing
-, pytest
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, six
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  chardet,
+  colorama,
+  distutils,
+  fetchFromGitHub,
+  netaddr,
+  pycurl,
+  pyparsing,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  six,
+  fetchpatch2,
 }:
 
 buildPythonPackage rec {
   pname = "wfuzz";
   version = "3.1.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "xmendez";
-    repo = pname;
-    rev = "v${version}";
+    repo = "wfuzz";
+    rev = "refs/tags/v${version}";
     hash = "sha256-RM6QM/iR00ymg0FBUtaWAtxPHIX4u9U/t5N/UT/T6sc=";
   };
 
+  patches = [
+    # replace use of imp module for Python 3.12
+    # https://github.com/xmendez/wfuzz/pull/365
+    (fetchpatch2 {
+      url = "https://github.com/xmendez/wfuzz/commit/f4c028b9ada4c36dabf3bc752f69f6ddc110920f.patch?full_index=1";
+      hash = "sha256-t7pUMcdFmwAsGUNBRdZr+Jje/yR0yzeGIgeYNEq4hFE=";
+    })
+  ];
+
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "pyparsing>=2.4*" "pyparsing>=2.4"
+      --replace-fail "pyparsing>=2.4*" "pyparsing>=2.4"
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     chardet
+    distutils # src/wfuzz/plugin_api/base.py
     pycurl
     six
     setuptools
     pyparsing
-  ] ++ lib.optionals stdenv.hostPlatform.isWindows [
-    colorama
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isWindows [ colorama ];
 
   nativeCheckInputs = [
     netaddr
-    pytest
     pytestCheckHook
   ];
 
@@ -57,11 +68,11 @@ buildPythonPackage rec {
     # The tests are requiring a local web server
     "tests/test_acceptance.py"
     "tests/acceptance/test_saved_filter.py"
+    # depends on imp module removed from Python 3.12
+    "tests/test_moduleman.py"
   ];
 
-  pythonImportsCheck = [
-    "wfuzz"
-  ];
+  pythonImportsCheck = [ "wfuzz" ];
 
   postInstall = ''
     mkdir -p $out/share/wordlists/wfuzz
@@ -69,6 +80,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
+    changelog = "https://github.com/xmendez/wfuzz/releases/tag/v${version}";
     description = "Web content fuzzer to facilitate web applications assessments";
     longDescription = ''
       Wfuzz provides a framework to automate web applications security assessments
diff --git a/pkgs/development/python-modules/wget/default.nix b/pkgs/development/python-modules/wget/default.nix
index 394afc50d41b9..344592152e9a2 100644
--- a/pkgs/development/python-modules/wget/default.nix
+++ b/pkgs/development/python-modules/wget/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/whatthepatch/default.nix b/pkgs/development/python-modules/whatthepatch/default.nix
index b2379a82006eb..8ae261d1dbae4 100644
--- a/pkgs/development/python-modules/whatthepatch/default.nix
+++ b/pkgs/development/python-modules/whatthepatch/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, setuptools
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "whatthepatch";
-  version = "1.0.5";
+  version = "1.0.6";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -17,26 +18,20 @@ buildPythonPackage rec {
     owner = "cscorley";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-1+OIs77Vyx56pgf7VSmi4UsPgkv8qZXFm8L2jK2CTMk=";
+    hash = "sha256-NjlQL+zgN9WKUMxMCl97eXTdM8Prrg3iiY8/zwQ8jyY=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "whatthepatch"
-  ];
+  pythonImportsCheck = [ "whatthepatch" ];
 
   meta = with lib; {
     description = "Python library for both parsing and applying patch files";
     homepage = "https://github.com/cscorley/whatthepatch";
     changelog = "https://github.com/cscorley/whatthepatch/blob/${version}/HISTORY.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ joelkoen ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/wheel-filename/default.nix b/pkgs/development/python-modules/wheel-filename/default.nix
index fd1ec9d946a22..303008d4d2540 100644
--- a/pkgs/development/python-modules/wheel-filename/default.nix
+++ b/pkgs/development/python-modules/wheel-filename/default.nix
@@ -1,11 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  pytestCheckHook,
+  pytest-cov-stub,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
@@ -37,16 +39,10 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov-stub
   ];
 
-  postPatch = ''
-    substituteInPlace tox.ini \
-      --replace " --cov=wheel_filename --no-cov-on-fail" ""
-  '';
-
-  pythonImportsCheck = [
-    "wheel_filename"
-  ];
+  pythonImportsCheck = [ "wheel_filename" ];
 
   meta = with lib; {
     description = "Parse wheel filenames";
diff --git a/pkgs/development/python-modules/wheel-inspect/default.nix b/pkgs/development/python-modules/wheel-inspect/default.nix
index bf2ff4ece67b0..ed966cace7130 100644
--- a/pkgs/development/python-modules/wheel-inspect/default.nix
+++ b/pkgs/development/python-modules/wheel-inspect/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, attrs
-, buildPythonPackage
-, entry-points-txt
-, fetchFromGitHub
-, hatchling
-, headerparser
-, jsonschema
-, pythonRelaxDepsHook
-, packaging
-, pytestCheckHook
-, pythonOlder
-, readme-renderer
-, wheel-filename
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  entry-points-txt,
+  fetchFromGitHub,
+  hatchling,
+  headerparser,
+  jsonschema,
+  packaging,
+  pytestCheckHook,
+  pytest-cov-stub,
+  pythonOlder,
+  readme-renderer,
+  setuptools,
+  wheel-filename,
 }:
 
 buildPythonPackage rec {
@@ -28,11 +30,6 @@ buildPythonPackage rec {
     hash = "sha256-pB9Rh+A7GlxnYuka2mTSBoxpoyYCzoaMPVgsHDlpos0=";
   };
 
-  postPatch = ''
-    substituteInPlace tox.ini \
-      --replace-fail "--cov=wheel_inspect --no-cov-on-fail" ""
-  '';
-
   pythonRelaxDeps = [
     "entry-points-txt"
     "headerparser"
@@ -40,7 +37,6 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     hatchling
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -53,14 +49,17 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
-    jsonschema
     pytestCheckHook
+    pytest-cov-stub
   ];
 
-  pythonImportsCheck = [
-    "wheel_inspect"
+  checkInputs = [
+    setuptools
+    jsonschema
   ];
 
+  pythonImportsCheck = [ "wheel_inspect" ];
+
   pytestFlagsArray = [
     "-W"
     "ignore::DeprecationWarning"
diff --git a/pkgs/development/python-modules/wheel/default.nix b/pkgs/development/python-modules/wheel/default.nix
index 14339d2056f3c..754223e49adf6 100644
--- a/pkgs/development/python-modules/wheel/default.nix
+++ b/pkgs/development/python-modules/wheel/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flit-core
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
 }:
 
 buildPythonPackage rec {
   pname = "wheel";
-  version = "0.42.0";
+  version = "0.43.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "pypa";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-WML3/gAK1R9DEeRVZWeO0VRFuNVKP52i5I5mYV6vQcI=";
+    hash = "sha256-cATYN7GtS1l3GxcqBl95RsBTuszWoFB9CtuRgUSL0/A=";
     postFetch = ''
       cd $out
       mv tests/testdata/unicode.dist/unicodedist/åäö_日本語.py \
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     '';
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   # No tests in archive
   doCheck = false;
@@ -33,7 +32,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/pypa/wheel";
-    description = "A built-package format for Python";
+    description = "Built-package format for Python";
     mainProgram = "wheel";
     longDescription = ''
       This library is the reference implementation of the Python wheel packaging standard,
diff --git a/pkgs/development/python-modules/wheezy-captcha/default.nix b/pkgs/development/python-modules/wheezy-captcha/default.nix
index fc0701704d794..4582ce93a6b4b 100644
--- a/pkgs/development/python-modules/wheezy-captcha/default.nix
+++ b/pkgs/development/python-modules/wheezy-captcha/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pillow
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pillow,
 }:
 
 buildPythonPackage rec {
@@ -20,7 +21,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://wheezycaptcha.readthedocs.io/en/latest/";
-    description = "A lightweight CAPTCHA library";
+    description = "Lightweight CAPTCHA library";
     license = licenses.mit;
     maintainers = with maintainers; [ Flakebi ];
   };
diff --git a/pkgs/development/python-modules/wheezy-template/default.nix b/pkgs/development/python-modules/wheezy-template/default.nix
index 0baba9c564e50..fcdaf64d802ca 100644
--- a/pkgs/development/python-modules/wheezy-template/default.nix
+++ b/pkgs/development/python-modules/wheezy-template/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
   pname = "wheezy.template";
-  version = "3.1.0";
+  version = "3.2.2";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-4RAHysczaNzhKZjjS2bEdgFrtGFHH/weTVboQALslg8=";
+    hash = "sha256-hknPXHGPPNjRAr0TYVosPaTntsjwQjOKZBCU+qFlIHw=";
   };
 
   pythonImportsCheck = [ "wheezy.template" ];
 
   meta = with lib; {
     homepage = "https://wheezytemplate.readthedocs.io/en/latest/";
-    description = "A lightweight template library";
+    description = "Lightweight template library";
     mainProgram = "wheezy.template";
     license = licenses.mit;
-    maintainers = with maintainers; [ lilyinstarlight ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/whenever/default.nix b/pkgs/development/python-modules/whenever/default.nix
index cb72e8b0aa426..9f6e763a149a4 100644
--- a/pkgs/development/python-modules/whenever/default.nix
+++ b/pkgs/development/python-modules/whenever/default.nix
@@ -1,61 +1,79 @@
-{ lib
-, fetchFromGitHub
-, pythonOlder
-, buildPythonPackage
-, poetry-core
-, backports-zoneinfo
-, tzdata
-, pytestCheckHook
-, pytest-mypy-plugins
-, hypothesis
-, freezegun
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  pythonOlder,
+  rustPlatform,
+  cargo,
+  rustc,
+  libiconv,
+  buildPythonPackage,
+  setuptools,
+  setuptools-rust,
+  pytestCheckHook,
+  pytest-mypy-plugins,
+  hypothesis,
+  freezegun,
+  time-machine,
+  nix-update-script,
 }:
 
 buildPythonPackage rec {
   pname = "whenever";
-  version = "0.5.2";
+  version = "0.6.9";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "ariebovenberg";
     repo = "whenever";
     rev = "refs/tags/${version}";
-    hash = "sha256-bG8LV+r5MjA1JwBHWy9/Io4daldAlyEGYNLW+5ITuOw=";
+    hash = "sha256-Y2+ZQhQpUf747OlzhQRdT1B3jZgCr0BViJ6ujPJWo3w=";
   };
 
-  postPatch = ''
-    # unrecognized arguments since we don't use pytest-benchmark in nixpkgs
-    substituteInPlace pytest.ini \
-      --replace-fail '--benchmark-disable' '#--benchmark-disable'
-  '';
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit src;
+    hash = "sha256-B1weEmW+Q7VxwnLxv9QH75I6IgEICTd70ci/I14ehLY=";
+  };
 
   build-system = [
-    poetry-core
+    setuptools
+    setuptools-rust
+    rustPlatform.cargoSetupHook
+    cargo
+    rustc
   ];
 
-  dependencies = [
-    tzdata
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    backports-zoneinfo
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
+    libiconv
   ];
 
   nativeCheckInputs = [
     pytestCheckHook
     pytest-mypy-plugins
+    # pytest-benchmark # developer sanity check, should not block distribution
     hypothesis
     freezegun
+    time-machine
   ];
 
-  pythonImportsCheck = [
-    "whenever"
+  disabledTestPaths = [
+    # benchmarks
+    "benchmarks/python/test_date.py"
+    "benchmarks/python/test_instant.py"
+    "benchmarks/python/test_local_datetime.py"
+    "benchmarks/python/test_zoned_datetime.py"
   ];
 
-  # early TDD, many tests are failing
+  pythonImportsCheck = [ "whenever" ];
+
+  # a bunch of failures, including an assumption of what the timezone on the host is
   # TODO: try enabling on bump
   doCheck = false;
 
+  passthru.updateScript = nix-update-script { };
+
   meta = with lib; {
     description = "Strict, predictable, and typed datetimes";
     homepage = "https://github.com/ariebovenberg/whenever";
diff --git a/pkgs/development/python-modules/whey-pth/default.nix b/pkgs/development/python-modules/whey-pth/default.nix
new file mode 100644
index 0000000000000..44c490f280148
--- /dev/null
+++ b/pkgs/development/python-modules/whey-pth/default.nix
@@ -0,0 +1,39 @@
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  setuptools,
+  dom-toml,
+  whey,
+}:
+buildPythonPackage rec {
+  pname = "whey-pth";
+  version = "0.0.6";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-CIpgqzNXW3VpS+k6BCpc2DNyqwgt/Af3ms59AH/V5KM=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    dom-toml
+    whey
+  ];
+
+  nativeCheckInputs = [ ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail '"setuptools!=61.*,<=67.1.0,>=40.6.0"' '"setuptools"'
+  '';
+
+  meta = {
+    description = "Extension to whey to support .pth files.";
+    homepage = "https://pypi.org/project/whey-pth";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tyberius-prime ];
+  };
+}
diff --git a/pkgs/development/python-modules/whey/default.nix b/pkgs/development/python-modules/whey/default.nix
new file mode 100644
index 0000000000000..9c7cad7a1039e
--- /dev/null
+++ b/pkgs/development/python-modules/whey/default.nix
@@ -0,0 +1,57 @@
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  setuptools,
+  attrs,
+  click,
+  consolekit,
+  dist-meta,
+  dom-toml,
+  domdf-python-tools,
+  handy-archives,
+  natsort,
+  packaging,
+  pyproject-parser,
+  shippinglabel,
+}:
+buildPythonPackage rec {
+  pname = "whey";
+  version = "0.1.1";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-l72fjczuuDXg/cDiqJ7roNVm4X+au+1u4AA8Szs1bNo=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    attrs
+    click
+    consolekit
+    dist-meta
+    dom-toml
+    domdf-python-tools
+    handy-archives
+    natsort
+    packaging
+    pyproject-parser
+    shippinglabel
+  ];
+
+  nativeCheckInputs = [ ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail '"setuptools!=61.*,<=67.1.0,>=40.6.0"' '"setuptools"'
+  '';
+
+  meta = {
+    description = "A simple Python wheel builder for simple projects.";
+    homepage = "https://pypi.org/project/whey";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tyberius-prime ];
+  };
+}
diff --git a/pkgs/development/python-modules/whichcraft/default.nix b/pkgs/development/python-modules/whichcraft/default.nix
index a27b8e1660efe..e2156831dbb2f 100644
--- a/pkgs/development/python-modules/whichcraft/default.nix
+++ b/pkgs/development/python-modules/whichcraft/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, pytest, glibcLocales }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  glibcLocales,
+}:
 
 buildPythonPackage rec {
   pname = "whichcraft";
@@ -10,7 +16,7 @@ buildPythonPackage rec {
     sha256 = "11yfkzyplizdgndy34vyd5qlmr1n5mxis3a3svxmx8fnccdvknxc";
   };
 
-  LC_ALL="en_US.utf-8";
+  LC_ALL = "en_US.utf-8";
   buildInputs = [ glibcLocales ];
 
   nativeCheckInputs = [ pytest ];
diff --git a/pkgs/development/python-modules/whirlpool-sixth-sense/default.nix b/pkgs/development/python-modules/whirlpool-sixth-sense/default.nix
index b7ee6caf0333b..1a8782fdc4a25 100644
--- a/pkgs/development/python-modules/whirlpool-sixth-sense/default.nix
+++ b/pkgs/development/python-modules/whirlpool-sixth-sense/default.nix
@@ -15,16 +15,16 @@
 
 buildPythonPackage rec {
   pname = "whirlpool-sixth-sense";
-  version = "0.18.8";
+  version = "0.18.9";
   pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "abmantis";
     repo = "whirlpool-sixth-sense";
     rev = "refs/tags/${version}";
-    hash = "sha256-Nmjw6b1k5M4H23tJxUPPJ3JIkuK5ylqEeFp18cGz9pA=";
+    hash = "sha256-aDvUV83o/yKx15kenDGng5xh3LECLVlLWJlVe/y+1Co=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/whisper/default.nix b/pkgs/development/python-modules/whisper/default.nix
index 28635d04fc1f4..c25ed5598992e 100644
--- a/pkgs/development/python-modules/whisper/default.nix
+++ b/pkgs/development/python-modules/whisper/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, six
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mock,
+  six,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -18,9 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-CnCbRmI2jc67mTtfupoE1uHtobrAiWoUXbfX8YeEV6A=";
   };
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
   nativeCheckInputs = [
     mock
@@ -37,7 +36,10 @@ buildPythonPackage rec {
   meta = with lib; {
     homepage = "https://github.com/graphite-project/whisper";
     description = "Fixed size round-robin style database";
-    maintainers = with maintainers; [ offline basvandijk ];
+    maintainers = with maintainers; [
+      offline
+      basvandijk
+    ];
     license = licenses.asl20;
   };
 }
diff --git a/pkgs/development/python-modules/whitenoise/default.nix b/pkgs/development/python-modules/whitenoise/default.nix
index 04f9528c8d744..88b7df53a52d8 100644
--- a/pkgs/development/python-modules/whitenoise/default.nix
+++ b/pkgs/development/python-modules/whitenoise/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, brotli
-, buildPythonPackage
-, django
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  brotli,
+  buildPythonPackage,
+  django,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "whitenoise";
-  version = "6.6.0";
+  version = "6.7.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -22,16 +23,12 @@ buildPythonPackage rec {
     owner = "evansd";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-Z59GjrOL+BPHqBCirg9T4qBOrjiuBng6Q5lTuLQx9ac=";
+    hash = "sha256-4SrTiTqBrfFuQ/8mqQL+YiehFWW+ZzKiAF0h2XyYuSs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    brotli
-  ];
+  propagatedBuildInputs = [ brotli ];
 
   nativeCheckInputs = [
     django
@@ -51,15 +48,13 @@ buildPythonPackage rec {
     "test_modified"
   ];
 
-  pythonImportsCheck = [
-    "whitenoise"
-  ];
+  pythonImportsCheck = [ "whitenoise" ];
 
   meta = with lib; {
     description = "Library to serve static file for WSGI applications";
     homepage = "https://whitenoise.readthedocs.io/";
     changelog = "https://github.com/evansd/whitenoise/blob/${version}/docs/changelog.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/whodap/default.nix b/pkgs/development/python-modules/whodap/default.nix
index f6707f9fc3106..b73b2045a9373 100644
--- a/pkgs/development/python-modules/whodap/default.nix
+++ b/pkgs/development/python-modules/whodap/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, httpx
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  httpx,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-kw7bmkpDNb/PK/Q2tSbG+ju0G+6tdSy3RaNDaNOVYnE=";
   };
 
-  propagatedBuildInputs = [
-    httpx
-  ];
+  propagatedBuildInputs = [ httpx ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -35,9 +34,7 @@ buildPythonPackage rec {
     "tests/test_client.py"
   ];
 
-  pythonImportsCheck = [
-    "whodap"
-  ];
+  pythonImportsCheck = [ "whodap" ];
 
   meta = with lib; {
     description = "Python RDAP utility for querying and parsing information about domain names";
diff --git a/pkgs/development/python-modules/whois-api/default.nix b/pkgs/development/python-modules/whois-api/default.nix
index 775fb63356970..f3a40dcc9a1a4 100644
--- a/pkgs/development/python-modules/whois-api/default.nix
+++ b/pkgs/development/python-modules/whois-api/default.nix
@@ -1,9 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, requests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -18,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-SeBeJ6k2R53LxHov+8t70geqUosk/yBJQCi6GaVteMM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # all tests touch internet
   doCheck = false;
diff --git a/pkgs/development/python-modules/whois/default.nix b/pkgs/development/python-modules/whois/default.nix
index 9d317c92323fa..9c31e43a59f59 100644
--- a/pkgs/development/python-modules/whois/default.nix
+++ b/pkgs/development/python-modules/whois/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, inetutils
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  inetutils,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-uKAqpxb72fo0DiaChuJvDizq0z/oFSDHWJuK4vuYIzo=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
   propagatedBuildInputs = [
     # whois is needed
@@ -32,9 +31,7 @@ buildPythonPackage rec {
   # Tests require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "whois"
-  ];
+  pythonImportsCheck = [ "whois" ];
 
   meta = with lib; {
     description = "Python module/library for retrieving WHOIS information";
diff --git a/pkgs/development/python-modules/whoisdomain/default.nix b/pkgs/development/python-modules/whoisdomain/default.nix
index eb28f68c957ce..f096e6dcf3542 100644
--- a/pkgs/development/python-modules/whoisdomain/default.nix
+++ b/pkgs/development/python-modules/whoisdomain/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-nRj/WkYjMZuQoYF+QFIHABlek4DxvvEnOTeFYLHYvZc=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  nativeBuildInputs = [ hatchling ];
 
-  pythonImportsCheck = [
-    "whoisdomain"
-  ];
+  pythonImportsCheck = [ "whoisdomain" ];
 
   # Tests require network access
   doCheck = false;
diff --git a/pkgs/development/python-modules/whool/default.nix b/pkgs/development/python-modules/whool/default.nix
new file mode 100644
index 0000000000000..1697e319a171e
--- /dev/null
+++ b/pkgs/development/python-modules/whool/default.nix
@@ -0,0 +1,49 @@
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  git,
+  hatch-vcs,
+  lib,
+  manifestoo-core,
+  pytestCheckHook,
+  pythonOlder,
+  tomli,
+  wheel,
+}:
+
+buildPythonPackage rec {
+  pname = "whool";
+  version = "1.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "sbidoul";
+    repo = "whool";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-uIHtygDeFbtIZLn0YwGzAHD7B+EZQ3JAovuNMZ5YMxc=";
+  };
+
+  build-system = [ hatch-vcs ];
+
+  dependencies = [
+    manifestoo-core
+    wheel
+  ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
+
+  pythonImportsCheck = [ "whool" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    git
+  ];
+
+  setupHook = ./setup-hook.sh;
+
+  meta = {
+    description = "Standards-compliant Python build backend to package Odoo addons";
+    homepage = "https://github.com/sbidoul/whool";
+    changelog = "https://github.com/sbidoul/whool/blob/v${version}/CHANGELOG.md";
+    license = lib.licenses.mit;
+    maintainers = [ lib.maintainers.yajo ];
+  };
+}
diff --git a/pkgs/development/python-modules/whool/setup-hook.sh b/pkgs/development/python-modules/whool/setup-hook.sh
new file mode 100644
index 0000000000000..1c8ecdf2c6630
--- /dev/null
+++ b/pkgs/development/python-modules/whool/setup-hook.sh
@@ -0,0 +1,16 @@
+# Avoid using git to auto-bump the addon version
+# DOCS https://github.com/sbidoul/whool/?tab=readme-ov-file#configuration
+whool-post-version-strategy-hook() {
+    # DOCS https://stackoverflow.com/a/13864829/1468388
+    if [ -z ${WHOOL_POST_VERSION_STRATEGY_OVERRIDE+x} ]; then
+        echo Setting WHOOL_POST_VERSION_STRATEGY_OVERRIDE to none
+        export WHOOL_POST_VERSION_STRATEGY_OVERRIDE=none
+    fi
+
+    # Make sure you can import the built addon
+    for manifest in $(find -L . -name __manifest__.py); do
+        export pythonImportsCheck="$pythonImportsCheck odoo.addons.$(basename $(dirname $(realpath $manifest)))"
+    done
+}
+
+preBuildHooks+=(whool-post-version-strategy-hook)
diff --git a/pkgs/development/python-modules/whoosh/default.nix b/pkgs/development/python-modules/whoosh/default.nix
index 52831486f2b70..b56a590a3fa6d 100644
--- a/pkgs/development/python-modules/whoosh/default.nix
+++ b/pkgs/development/python-modules/whoosh/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-fKVjPb+p4OD6QA0xUaigxL7FO9Ls7cCmdwWxdWXDGoM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # Wrong encoding
   postPatch = ''
@@ -34,18 +31,14 @@ buildPythonPackage rec {
       --replace-fail "[pytest]" "[tool:pytest]"
   '';
 
-  pythonImportsCheck = [
-    "whoosh"
-  ];
+  pythonImportsCheck = [ "whoosh" ];
 
-  disabledTests = [
-    "test_minimize_dfa"
-  ];
+  disabledTests = [ "test_minimize_dfa" ];
 
   meta = with lib; {
     description = "Fast, pure-Python full text indexing, search, and spell checking library";
     homepage = "https://github.com/mchaput/whoosh";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/widgetsnbextension/default.nix b/pkgs/development/python-modules/widgetsnbextension/default.nix
index 1e3ab50118c4c..e717e925cf16f 100644
--- a/pkgs/development/python-modules/widgetsnbextension/default.nix
+++ b/pkgs/development/python-modules/widgetsnbextension/default.nix
@@ -1,27 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, jupyter-packaging
-, ipywidgets
+{
+  buildPythonPackage,
+  fetchPypi,
+  jupyter-packaging,
+  ipywidgets,
 }:
 
 buildPythonPackage rec {
   pname = "widgetsnbextension";
-  version = "4.0.10";
+  version = "4.0.13";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ZBlsX/O5qRg6jmmaQif7C3AC8lLIFAmOZsTRzQZEaI8=";
+    hash = "sha256-/8tnvJ/r0QI0o2J5X2Q5J/TgwF2TQscntl0jhPj+rLY=";
   };
 
-  nativeBuildInputs = [
-    jupyter-packaging
-  ];
+  nativeBuildInputs = [ jupyter-packaging ];
 
-  pythonImportsCheck = [
-    "widgetsnbextension"
-  ];
+  pythonImportsCheck = [ "widgetsnbextension" ];
 
   # No tests in archive
   doCheck = false;
diff --git a/pkgs/development/python-modules/widlparser/default.nix b/pkgs/development/python-modules/widlparser/default.nix
index fcd1e2fe0f125..688c14a024dc0 100644
--- a/pkgs/development/python-modules/widlparser/default.nix
+++ b/pkgs/development/python-modules/widlparser/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-# build inputs
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  # build inputs
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +25,7 @@ buildPythonPackage rec {
     sed -i -e 's/0.0.0/${version}/' setup.py
   '';
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
+  propagatedBuildInputs = [ typing-extensions ];
 
   pythonImportsCheck = [ "widlparser" ];
 
@@ -34,6 +33,6 @@ buildPythonPackage rec {
     description = "Stand-alone WebIDL Parser in Python";
     homepage = "https://github.com/plinss/widlparser";
     license = licenses.mit;
-    maintainers = [];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/wiffi/default.nix b/pkgs/development/python-modules/wiffi/default.nix
index 208265ba9a3bf..60e2e667f7e11 100644
--- a/pkgs/development/python-modules/wiffi/default.nix
+++ b/pkgs/development/python-modules/wiffi/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-pnbzJxq8K947Yg54LysPPho6IRKf0cc+szTETgyzFao=";
   };
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "wiffi"
-  ];
+  pythonImportsCheck = [ "wiffi" ];
 
   meta = with lib; {
     description = "Python module to interface with STALL WIFFI devices";
diff --git a/pkgs/development/python-modules/wifi/default.nix b/pkgs/development/python-modules/wifi/default.nix
index 260f7e8a937f3..b99d4782f47ba 100644
--- a/pkgs/development/python-modules/wifi/default.nix
+++ b/pkgs/development/python-modules/wifi/default.nix
@@ -1,11 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pbkdf2
-, pytestCheckHook
-, pythonOlder
-, substituteAll
-, wirelesstools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pbkdf2,
+  pytestCheckHook,
+  pythonOlder,
+  wirelesstools,
 }:
 
 buildPythonPackage rec {
@@ -27,13 +27,9 @@ buildPythonPackage rec {
       --replace "/sbin/iwlist" "${wirelesstools}/bin/iwlist"
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  propagatedBuildInputs = [
-    pbkdf2
-  ];
+  propagatedBuildInputs = [ pbkdf2 ];
 
   pythonImportsCheck = [ "wifi" ];
 
diff --git a/pkgs/development/python-modules/wikipedia-api/default.nix b/pkgs/development/python-modules/wikipedia-api/default.nix
index e8959b078c75b..73b170cca4bc5 100644
--- a/pkgs/development/python-modules/wikipedia-api/default.nix
+++ b/pkgs/development/python-modules/wikipedia-api/default.nix
@@ -1,25 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "wikipedia-api";
-  version = "0.6.0";
+  version = "0.7.1";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "martin-majlis";
     repo = "Wikipedia-API";
-    rev = "v${version}";
-    hash = "sha256-cmwyQhKbkIpZXkKqqT0X2Lp8OFma2joeb4uxDRPiQe8=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-bjmvUZpwDJJrB2k13NMSMHNyiJFXCvo007PPHwBVeq8=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
diff --git a/pkgs/development/python-modules/wikipedia/default.nix b/pkgs/development/python-modules/wikipedia/default.nix
index dce8160e7ff87..93d23d7209a76 100644
--- a/pkgs/development/python-modules/wikipedia/default.nix
+++ b/pkgs/development/python-modules/wikipedia/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, beautifulsoup4
-, requests
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  beautifulsoup4,
+  requests,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,16 +22,12 @@ buildPythonPackage rec {
     requests
   ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [
-    "tests/ '*test.py'"
-  ];
+  unittestFlagsArray = [ "tests/ '*test.py'" ];
 
   meta = with lib; {
-    description = "A Pythonic wrapper for the Wikipedia API";
+    description = "Pythonic wrapper for the Wikipedia API";
     homepage = "https://github.com/goldsmith/Wikipedia";
     changelog = "https://github.com/goldsmith/Wikipedia/blob/master/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/wikipedia2vec/default.nix b/pkgs/development/python-modules/wikipedia2vec/default.nix
index 2e379b9ccb1ef..c682ea2a1c745 100644
--- a/pkgs/development/python-modules/wikipedia2vec/default.nix
+++ b/pkgs/development/python-modules/wikipedia2vec/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, click
-, cython
-, fetchFromGitHub
-, jieba
-, joblib
-, lmdb
-, marisa-trie
-, mwparserfromhell
-, numpy
-, pythonOlder
-, scipy
-, setuptools
-, tqdm
+{
+  lib,
+  buildPythonPackage,
+  click,
+  cython,
+  fetchFromGitHub,
+  jieba,
+  joblib,
+  lmdb,
+  marisa-trie,
+  mwparserfromhell,
+  numpy,
+  pythonOlder,
+  scipy,
+  setuptools,
+  tqdm,
 }:
 
 buildPythonPackage rec {
@@ -51,9 +52,7 @@ buildPythonPackage rec {
     bash cythonize.sh
   '';
 
-  pythonImportsCheck = [
-    "wikipedia2vec"
-  ];
+  pythonImportsCheck = [ "wikipedia2vec" ];
 
   meta = with lib; {
     description = "Tool for learning vector representations of words and entities from Wikipedia";
diff --git a/pkgs/development/python-modules/wikitextparser/default.nix b/pkgs/development/python-modules/wikitextparser/default.nix
index 8b70b6c63ee1b..1b5fe1da7e3a9 100644
--- a/pkgs/development/python-modules/wikitextparser/default.nix
+++ b/pkgs/development/python-modules/wikitextparser/default.nix
@@ -1,28 +1,27 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, flit-core
-, lib
-, setuptools
-, pytestCheckHook
-, regex
-, wcwidth
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  flit-core,
+  lib,
+  setuptools,
+  pytestCheckHook,
+  regex,
+  wcwidth,
 }:
 
 buildPythonPackage rec {
   pname = "wikitextparser";
-  version = "0.55.13";
+  version = "0.56.2";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "5j9";
     repo = "wikitextparser";
     rev = "v${version}";
-    hash = "sha256-qLctOX0BsKAn2JzfmV2sTLJ/KcNfaJFAjOB3pxd5LQI=";
+    hash = "sha256-g0Hvxw8evmCebM2joGT7XMnakVjDG74VJmZhlvUiQMU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     flit-core
@@ -30,15 +29,13 @@ buildPythonPackage rec {
     regex
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "wikitextparser" ];
 
   meta = {
     homepage = "https://github.com/5j9/wikitextparser";
-    description = "A simple parsing tool for MediaWiki's wikitext markup";
+    description = "Simple parsing tool for MediaWiki's wikitext markup";
     changelog = "https://github.com/5j9/wikitextparser/blob/v${version}/CHANGELOG.rst";
     license = lib.licenses.gpl3Only;
     maintainers = with lib.maintainers; [ rapiteanu ];
diff --git a/pkgs/development/python-modules/willow/default.nix b/pkgs/development/python-modules/willow/default.nix
index 2b0058357d88d..f2ab1675d0438 100644
--- a/pkgs/development/python-modules/willow/default.nix
+++ b/pkgs/development/python-modules/willow/default.nix
@@ -1,24 +1,24 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-
-# build-system
-, flit-core
-
-# dependencies
-, filetype
-, defusedxml
-
-# optional-dependencies
-, pillow-heif
-
-# tests
-, numpy
-, opencv4
-, pillow
-, pytestCheckHook
-, wand
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+
+  # build-system
+  flit-core,
+
+  # dependencies
+  filetype,
+  defusedxml,
+
+  # optional-dependencies
+  pillow-heif,
+
+  # tests
+  numpy,
+  opencv4,
+  pillow,
+  pytestCheckHook,
+  wand,
 }:
 
 buildPythonPackage rec {
@@ -26,8 +26,6 @@ buildPythonPackage rec {
   version = "1.8.0";
   format = "pyproject";
 
-  disabled = pythonOlder "2.7";
-
   src = fetchFromGitHub {
     owner = "wagtail";
     repo = "Willow";
@@ -35,9 +33,9 @@ buildPythonPackage rec {
     hash = "sha256-g9/v56mdo0sJe5Pl/to/R/kXayaKK3qaYbnnPXpFjXE=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
+
+  pythonRelaxDeps = [ "defusedxml" ];
 
   propagatedBuildInputs = [
     filetype
@@ -45,9 +43,7 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    heif = [
-      pillow-heif
-    ];
+    heif = [ pillow-heif ];
   };
 
   nativeCheckInputs = [
@@ -59,10 +55,9 @@ buildPythonPackage rec {
   ] ++ passthru.optional-dependencies.heif;
 
   meta = with lib; {
-    description = "A Python image library that sits on top of Pillow, Wand and OpenCV";
+    description = "Python image library that sits on top of Pillow, Wand and OpenCV";
     homepage = "https://github.com/torchbox/Willow/";
     license = licenses.bsd2;
     maintainers = with maintainers; [ desiderius ];
   };
-
 }
diff --git a/pkgs/development/python-modules/winacl/default.nix b/pkgs/development/python-modules/winacl/default.nix
index ab27147d6519c..3ff55cf32a72b 100644
--- a/pkgs/development/python-modules/winacl/default.nix
+++ b/pkgs/development/python-modules/winacl/default.nix
@@ -1,37 +1,32 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "winacl";
-  version = "0.1.8";
-  format = "setuptools";
+  version = "0.1.9";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-RCcaMCVi3lFin2jvFUDUDzom57wBc2RrAaZ3nO2tZEw=";
+    hash = "sha256-r3DC7DAXi/njyKHEjCXoeBI1/iwbMhrbRuLyrh+NSqs=";
   };
 
-  propagatedBuildInputs = [
-    cryptography
-  ];
+  build-system = [ setuptools ];
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "cryptography>=38.0.1" "cryptography"
-  '';
+  dependencies = [ cryptography ];
 
   # Project doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "winacl"
-  ];
+  pythonImportsCheck = [ "winacl" ];
 
   meta = with lib; {
     description = "Python module for ACL/ACE/Security descriptor manipulation";
diff --git a/pkgs/development/python-modules/winsspi/default.nix b/pkgs/development/python-modules/winsspi/default.nix
index d15ce8e261b5a..3008cb6f92f3c 100644
--- a/pkgs/development/python-modules/winsspi/default.nix
+++ b/pkgs/development/python-modules/winsspi/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, minikerberos
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  minikerberos,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-AXC6SJ+iWPGqTmdgoWKEbD8tDUUcg2aD609hO2bdQfM=";
   };
 
-  propagatedBuildInputs = [
-    minikerberos
-  ];
+  propagatedBuildInputs = [ minikerberos ];
 
   # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "winsspi"
-  ];
+  pythonImportsCheck = [ "winsspi" ];
 
   meta = with lib; {
     description = "Python module for ACL/ACE/Security descriptor manipulation";
diff --git a/pkgs/development/python-modules/wirerope/default.nix b/pkgs/development/python-modules/wirerope/default.nix
new file mode 100644
index 0000000000000..d63f709053723
--- /dev/null
+++ b/pkgs/development/python-modules/wirerope/default.nix
@@ -0,0 +1,41 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  six,
+  pytestCheckHook,
+  pytest-cov-stub,
+}:
+
+buildPythonPackage rec {
+  pname = "wirerope";
+  version = "0.4.7";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "youknowone";
+    repo = "wirerope";
+    rev = version;
+    hash = "sha256-Xi6I/TXttjCregknmZUhV5GAiNR/HmEi4wCZiCmp0DQ=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ six ];
+
+  pythonImportsCheck = [ "wirerope" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-cov-stub
+  ];
+
+  meta = with lib; {
+    description = "Wrappers for class callables";
+    homepage = "https://github.com/youknowone/wirerope";
+    changelog = "https://github.com/youknowone/wirerope/releases/tag/${version}";
+    license = licenses.bsd2WithViews;
+    maintainers = with maintainers; [ pbsds ];
+  };
+}
diff --git a/pkgs/development/python-modules/withings-api/default.nix b/pkgs/development/python-modules/withings-api/default.nix
index 226907f9e95da..0120ac1bc45f6 100644
--- a/pkgs/development/python-modules/withings-api/default.nix
+++ b/pkgs/development/python-modules/withings-api/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, arrow
-, requests-oauthlib
-, typing-extensions
-, pydantic
-, responses
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  arrow,
+  requests-oauthlib,
+  typing-extensions,
+  pydantic,
+  responses,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -31,9 +32,7 @@ buildPythonPackage rec {
       --replace 'addopts = "--capture no --cov ./withings_api --cov-report html:build/coverage_report --cov-report term --cov-report xml:build/coverage.xml"' '''
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     arrow
diff --git a/pkgs/development/python-modules/withings-sync/default.nix b/pkgs/development/python-modules/withings-sync/default.nix
index 6200082bc9fd1..8f1468ab3993a 100644
--- a/pkgs/development/python-modules/withings-sync/default.nix
+++ b/pkgs/development/python-modules/withings-sync/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, garth
-, lxml
-, python-dotenv
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  garth,
+  lxml,
+  python-dotenv,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "withings-sync";
-  version = "4.2.4";
+  version = "4.2.5";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -19,31 +20,27 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "jaroslawhartman";
     repo = "withings-sync";
-    rev = "refs/tags/v.${version}";
-    hash = "sha256-nFYEtQob3x6APWDKCVP5p+qkKmgvXIcmegp/6ZRbDQA=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-4gxJwe8v4trTysGBNORX7C54EUzFIPwpVLfKSNxJ8y4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     garth
     lxml
     python-dotenv
     requests
   ];
 
-  pythonImportsCheck = [
-    "withings_sync"
-  ];
+  pythonImportsCheck = [ "withings_sync" ];
 
   meta = with lib; {
     description = "Synchronisation of Withings weight";
-    mainProgram = "withings-sync";
     homepage = "https://github.com/jaroslawhartman/withings-sync";
     changelog = "https://github.com/jaroslawhartman/withings-sync/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "withings-sync";
   };
 }
diff --git a/pkgs/development/python-modules/wktutils/default.nix b/pkgs/development/python-modules/wktutils/default.nix
index 549e7f480b080..23529f04a3568 100644
--- a/pkgs/development/python-modules/wktutils/default.nix
+++ b/pkgs/development/python-modules/wktutils/default.nix
@@ -1,25 +1,25 @@
-{ lib
-, buildPythonPackage
-, dateparser
-, defusedxml
-, fetchFromGitHub
-, fiona
-, geomet
-, geopandas
-, kml2geojson
-, pyshp
-, pythonOlder
-, pyyaml
-, regex
-, requests
-, shapely
-, scikit-learn
+{
+  lib,
+  buildPythonPackage,
+  dateparser,
+  defusedxml,
+  fetchFromGitHub,
+  geomet,
+  geopandas,
+  kml2geojson,
+  pyshp,
+  pythonOlder,
+  pyyaml,
+  requests,
+  setuptools-scm,
+  shapely,
+  scikit-learn,
 }:
 
 buildPythonPackage rec {
   pname = "wktutils";
-  version = "1.1.6";
-  format = "setuptools";
+  version = "2.0.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -27,39 +27,43 @@ buildPythonPackage rec {
     owner = "asfadmin";
     repo = "Discovery-WKTUtils";
     rev = "refs/tags/v${version}";
-    hash = "sha256-PFeIMIFOff9ztdmIP7jcFzKkmhm01G0QnDm20AafUsg=";
+    hash = "sha256-mB+joEZq/aFPcRqFAzPgwG26Wi7WiRCeQeFottk+4Ho=";
   };
 
-  propagatedBuildInputs = [
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail '"twine",' ""
+  '';
+
+  build-system = [ setuptools-scm ];
+
+  dependencies = [
     dateparser
     defusedxml
-    fiona
     geomet
     geopandas
     kml2geojson
     pyshp
     pyyaml
-    regex
-    requests
     shapely
-    scikit-learn
   ];
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "sklearn" "scikit-learn"
-  '';
+  passthru.optional-dependencies = {
+    extras = [
+      requests
+      scikit-learn
+    ];
+  };
 
   # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "WKTUtils"
-  ];
+  pythonImportsCheck = [ "WKTUtils" ];
 
   meta = with lib; {
     description = "Collection of tools for handling WKTs";
     homepage = "https://github.com/asfadmin/Discovery-WKTUtils";
+    changelog = "https://github.com/asfadmin/Discovery-WKTUtils/blob/v${version}/CHANGELOG.md";
     license = licenses.bsd3;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/wled/default.nix b/pkgs/development/python-modules/wled/default.nix
index 7d90c554907ca..00e3c9e24412c 100644
--- a/pkgs/development/python-modules/wled/default.nix
+++ b/pkgs/development/python-modules/wled/default.nix
@@ -1,23 +1,28 @@
-{ lib
-, aiohttp
-, awesomeversion
-, backoff
-, buildPythonPackage
-, cachetools
-, fetchFromGitHub
-, poetry-core
-, yarl
-, aresponses
-, pytest-asyncio
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aresponses,
+  awesomeversion,
+  backoff,
+  buildPythonPackage,
+  cachetools,
+  fetchFromGitHub,
+  mashumaro,
+  orjson,
+  poetry-core,
+  pytest-asyncio,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  typer,
+  yarl,
+  zeroconf,
 }:
 
 buildPythonPackage rec {
   pname = "wled";
-  version = "0.17.0";
-  format = "pyproject";
+  version = "0.20.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.11";
 
@@ -25,28 +30,35 @@ buildPythonPackage rec {
     owner = "frenck";
     repo = "python-wled";
     rev = "refs/tags/v${version}";
-    hash = "sha256-y32zynkVsn5vWw+BZ6ZRf9zemGOWJMN4yfNQZ0bRpos=";
+    hash = "sha256-7P/V83dGkfJJjZxZtiEwQXIY7CeBZ/fmvTdEjDirKj0=";
   };
 
   postPatch = ''
     # Upstream doesn't set a version for the pyproject.toml
     substituteInPlace pyproject.toml \
-      --replace "0.0.0" "${version}" \
-      --replace "--cov" ""
+      --replace-fail "0.0.0" "${version}" \
+      --replace-fail "--cov" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     awesomeversion
     backoff
     cachetools
+    mashumaro
+    orjson
     yarl
   ];
 
+  passthru.optional-dependencies = {
+    cli = [
+      typer
+      zeroconf
+    ];
+  };
+
   nativeCheckInputs = [
     aresponses
     pytest-asyncio
@@ -54,9 +66,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "wled"
-  ];
+  pythonImportsCheck = [ "wled" ];
 
   meta = with lib; {
     description = "Asynchronous Python client for WLED";
diff --git a/pkgs/development/python-modules/wn/default.nix b/pkgs/development/python-modules/wn/default.nix
index 5b020a58d393b..822a5740d2dd7 100644
--- a/pkgs/development/python-modules/wn/default.nix
+++ b/pkgs/development/python-modules/wn/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, flit-core
-, requests
-, tomli
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  flit-core,
+  requests,
+  tomli,
 }:
 
 buildPythonPackage rec {
@@ -20,29 +21,23 @@ buildPythonPackage rec {
     hash = "sha256-muYuDmYH9W5j6euDYJMMgzfsxE6eBIhDCqH6P7nFG+Q=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     requests
     tomli
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export HOME=$(mktemp -d)
   '';
 
-  pythonImportsCheck = [
-    "wn"
-  ];
+  pythonImportsCheck = [ "wn" ];
 
   meta = with lib; {
-    description = "A modern, interlingual wordnet interface for Python";
+    description = "Modern, interlingual wordnet interface for Python";
     homepage = "https://github.com/goodmami/wn";
     changelog = "https://github.com/goodmami/wn/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/woob/default.nix b/pkgs/development/python-modules/woob/default.nix
index abc876b388a8b..41450c7e27a88 100644
--- a/pkgs/development/python-modules/woob/default.nix
+++ b/pkgs/development/python-modules/woob/default.nix
@@ -1,24 +1,26 @@
-{ lib
-, babel
-, buildPythonPackage
-, fetchFromGitLab
-, pythonRelaxDepsHook
-, html2text
-, lxml
-, packaging
-, pillow
-, prettytable
-, pycountry
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, pyyaml
-, requests
-, rich
-, setuptools
-, testers
-, unidecode
-, woob
+{
+  lib,
+  babel,
+  buildPythonPackage,
+  fetchFromGitLab,
+  fetchpatch,
+  html2text,
+  lxml,
+  packaging,
+  pillow,
+  prettytable,
+  pycountry,
+  pytestCheckHook,
+  python-dateutil,
+  python-jose,
+  pythonOlder,
+  pyyaml,
+  requests,
+  rich,
+  setuptools,
+  testers,
+  unidecode,
+  woob,
 }:
 
 buildPythonPackage rec {
@@ -35,18 +37,24 @@ buildPythonPackage rec {
     hash = "sha256-M9AjV954H1w64YGCVxDEGGSnoEbmocG3zwltob6IW04=";
   };
 
+  patches = [
+    (fetchpatch {
+      name = "no-deprecated-pkg_resources.patch";
+      url = "https://gitlab.com/woob/woob/-/commit/3283c4c1a935cc71acea98b2d8c88bc4bf28f643.patch";
+      hash = "sha256-3bRuv93ivKRxbGr52coO023DlxHZWwUeInXTPqQAeL8=";
+    })
+  ];
+
   nativeBuildInputs = [
     setuptools
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "packaging"
-  ];
+  pythonRelaxDeps = [ "packaging" ];
 
   propagatedBuildInputs = [
     babel
     python-dateutil
+    python-jose
     html2text
     lxml
     packaging
@@ -59,9 +67,7 @@ buildPythonPackage rec {
     unidecode
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # require networking
@@ -69,9 +75,7 @@ buildPythonPackage rec {
     "test_verify"
   ];
 
-  pythonImportsCheck = [
-    "woob"
-  ];
+  pythonImportsCheck = [ "woob" ];
 
   passthru.tests.version = testers.testVersion {
     package = woob;
diff --git a/pkgs/development/python-modules/woodblock/default.nix b/pkgs/development/python-modules/woodblock/default.nix
index cb0d5bab3df12..12c71c8c55a71 100644
--- a/pkgs/development/python-modules/woodblock/default.nix
+++ b/pkgs/development/python-modules/woodblock/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, click
-, multimethod
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  click,
+  multimethod,
+  numpy,
 }:
 buildPythonPackage rec {
   pname = "woodblock";
@@ -24,12 +25,10 @@ buildPythonPackage rec {
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "woodblock"
-  ];
+  pythonImportsCheck = [ "woodblock" ];
 
   meta = with lib; {
-    description = "A framework to generate file carving test data";
+    description = "Framework to generate file carving test data";
     mainProgram = "woodblock";
     homepage = "https://github.com/fkie-cad/woodblock";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/wordcloud/default.nix b/pkgs/development/python-modules/wordcloud/default.nix
index a2d0fbb684504..4146522d01371 100644
--- a/pkgs/development/python-modules/wordcloud/default.nix
+++ b/pkgs/development/python-modules/wordcloud/default.nix
@@ -1,27 +1,33 @@
-{ lib
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, matplotlib
-, mock
-, numpy
-, pillow
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchPypi,
+  matplotlib,
+  numpy,
+  pillow,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "wordcloud";
   version = "1.9.3";
-  format = "setuptools";
+
+  pyproject = true;
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
 
   disabled = pythonOlder "3.7";
 
-  src = fetchFromGitHub {
-    owner = "amueller";
-    repo = "word_cloud";
-    rev = "refs/tags/${version}";
-    hash = "sha256-UbryGiu1AW6Razbf4BJIKGKKhG6JOeZUGb1k0w8f8XA=";
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-qapzjWPtZ0pA8Mwxrbg/TKX8GV8Dpq/24BDR9YB9HFg=";
   };
 
   postPatch = ''
@@ -29,28 +35,21 @@ buildPythonPackage rec {
       --replace " --cov --cov-report xml --tb=short" ""
   '';
 
-  nativeBuildInputs = [
-    cython
-  ];
+  nativeBuildInputs = [ cython ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     matplotlib
     numpy
     pillow
   ];
 
-  nativeCheckInputs = [
-    mock
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     cd test
   '';
 
-  pythonImportsCheck = [
-    "wordcloud"
-  ];
+  pythonImportsCheck = [ "wordcloud" ];
 
   disabledTests = [
     # Don't tests CLI
diff --git a/pkgs/development/python-modules/wordfreq/default.nix b/pkgs/development/python-modules/wordfreq/default.nix
index 2b98674fb5759..75c00bfea5fa9 100644
--- a/pkgs/development/python-modules/wordfreq/default.nix
+++ b/pkgs/development/python-modules/wordfreq/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, poetry-core
-, regex
-, langcodes
-, ftfy
-, msgpack
-, mecab-python3
-, jieba
-, pytestCheckHook
-, pythonOlder
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  poetry-core,
+  regex,
+  langcodes,
+  ftfy,
+  msgpack,
+  mecab-python3,
+  jieba,
+  pytestCheckHook,
+  pythonOlder,
+  fetchFromGitHub,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-ANOBbQWLB35Vz6oil6QZDpsNpKHeKUJnDKA5Q9JRVdE=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     regex
@@ -48,8 +47,8 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A library for looking up the frequencies of words in many languages, based on many sources of data";
-    homepage =  "https://github.com/rspeer/wordfreq/";
+    description = "Library for looking up the frequencies of words in many languages, based on many sources of data";
+    homepage = "https://github.com/rspeer/wordfreq/";
     license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/worldengine/default.nix b/pkgs/development/python-modules/worldengine/default.nix
index aa90798aace2b..a9a5b5153fbd5 100644
--- a/pkgs/development/python-modules/worldengine/default.nix
+++ b/pkgs/development/python-modules/worldengine/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, gdal
-, h5py
-, noise
-, numpy
-, protobuf
-, purepng
-, pyplatec
-, six
-, isPy27
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gdal,
+  h5py,
+  noise,
+  numpy,
+  protobuf,
+  purepng,
+  pyplatec,
+  six,
+  isPy27,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -64,9 +65,7 @@ buildPythonPackage rec {
   doCheck = !isPy27; # google namespace clash
   nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = [
-    "TestSerialization"
-  ];
+  disabledTests = [ "TestSerialization" ];
 
   meta = with lib; {
     broken = true;
diff --git a/pkgs/development/python-modules/wrapio/default.nix b/pkgs/development/python-modules/wrapio/default.nix
index 9227009647d1a..5eda21b852534 100644
--- a/pkgs/development/python-modules/wrapio/default.nix
+++ b/pkgs/development/python-modules/wrapio/default.nix
@@ -1,13 +1,15 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "wrapio";
   version = "2.0.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.5";
 
@@ -16,6 +18,8 @@ buildPythonPackage rec {
     hash = "sha256-CUocIbdZ/tJQCxAHzhFpB267ynlXf8Mu+thcRRc0yeg=";
   };
 
+  build-system = [ setuptools ];
+
   doCheck = false;
   pythonImportsCheck = [ "wrapio" ];
 
diff --git a/pkgs/development/python-modules/wrapt/default.nix b/pkgs/development/python-modules/wrapt/default.nix
index 3995e291bc3ad..b4c636923b963 100644
--- a/pkgs/development/python-modules/wrapt/default.nix
+++ b/pkgs/development/python-modules/wrapt/default.nix
@@ -1,15 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, sphinxHook
-, sphinx-rtd-theme
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  sphinxHook,
+  sphinx-rtd-theme,
 }:
 
 buildPythonPackage rec {
   pname = "wrapt";
   version = "1.16.0";
-  outputs = [ "out" "doc" ];
+  outputs = [
+    "out"
+    "doc"
+  ];
   format = "setuptools";
 
   src = fetchFromGitHub {
@@ -19,23 +23,19 @@ buildPythonPackage rec {
     hash = "sha256-lVpSriXSvRwAKX4iPOIBvJwhqhKjdrUdGaEG4QoTQyo=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   nativeBuildInputs = [
     sphinxHook
     sphinx-rtd-theme
   ];
 
-  pythonImportsCheck = [
-    "wrapt"
-  ];
+  pythonImportsCheck = [ "wrapt" ];
 
   meta = with lib; {
     description = "Module for decorators, wrappers and monkey patching";
     homepage = "https://github.com/GrahamDumpleton/wrapt";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/wrf-python/default.nix b/pkgs/development/python-modules/wrf-python/default.nix
index 77d5ea8a4eba2..fded65e33a4bc 100644
--- a/pkgs/development/python-modules/wrf-python/default.nix
+++ b/pkgs/development/python-modules/wrf-python/default.nix
@@ -1,16 +1,16 @@
-{ stdenv
-, lib
-, fetchFromGitHub
-, pythonOlder
-, buildPythonPackage
-, basemap
-, gfortran
-, netcdf4
-, numpy
-, python
-, setuptools
-, xarray
-, wrapt
+{
+  lib,
+  fetchFromGitHub,
+  pythonOlder,
+  buildPythonPackage,
+  basemap,
+  gfortran,
+  netcdf4,
+  numpy,
+  python,
+  setuptools,
+  xarray,
+  wrapt,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +27,7 @@ buildPythonPackage rec {
     hash = "sha256-4iIs/M9fzGJsnKCDSl09OTUoh7j6REBXuutE5uXFe3k=";
   };
 
-  nativeBuildInputs = [
-    gfortran
-  ];
+  nativeBuildInputs = [ gfortran ];
 
   propagatedBuildInputs = [
     basemap
@@ -39,9 +37,7 @@ buildPythonPackage rec {
     wrapt
   ];
 
-  nativeCheckInputs = [
-    netcdf4
-  ];
+  nativeCheckInputs = [ netcdf4 ];
 
   checkPhase = ''
     runHook preCheck
@@ -50,15 +46,12 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "wrf"
-  ];
+  pythonImportsCheck = [ "wrf" ];
 
   meta = with lib; {
     description = "WRF postprocessing library for Python";
     homepage = "http://wrf-python.rtfd.org";
     license = licenses.asl20;
     maintainers = with maintainers; [ mhaselsteiner ];
-    broken = stdenv.isDarwin;
   };
 }
diff --git a/pkgs/development/python-modules/ws4py/default.nix b/pkgs/development/python-modules/ws4py/default.nix
index 59dab76820c93..4cb6bacc3c932 100644
--- a/pkgs/development/python-modules/ws4py/default.nix
+++ b/pkgs/development/python-modules/ws4py/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, cherrypy
-, fetchPypi
-, gevent
-, git
-, mock
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, tornado
+{
+  lib,
+  buildPythonPackage,
+  cherrypy,
+  fetchPypi,
+  gevent,
+  git,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  tornado,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-KdBz1/LgBjc+aoSLHQCVGhEH64HzdClSvpBUKdxaVIM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     cherrypy
@@ -39,15 +38,13 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "ws4py"
-  ];
+  pythonImportsCheck = [ "ws4py" ];
 
   meta = with lib; {
-    description = "A WebSocket package for Python";
+    description = "WebSocket package for Python";
     homepage = "https://ws4py.readthedocs.org";
     changelog = "https://github.com/Lawouach/WebSocket-for-Python/blob/${version}/CHANGELOG.md";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/wsdiscovery/default.nix b/pkgs/development/python-modules/wsdiscovery/default.nix
index 784172b7cef42..9d5d1e884cb44 100644
--- a/pkgs/development/python-modules/wsdiscovery/default.nix
+++ b/pkgs/development/python-modules/wsdiscovery/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, mock
-, netifaces
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  mock,
+  netifaces,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -32,9 +33,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "wsdiscovery"
-  ];
+  pythonImportsCheck = [ "wsdiscovery" ];
 
   meta = with lib; {
     description = "WS-Discovery implementation for Python";
diff --git a/pkgs/development/python-modules/wsgi-intercept/default.nix b/pkgs/development/python-modules/wsgi-intercept/default.nix
index fcc8551f72942..e99c8a6d0f46c 100644
--- a/pkgs/development/python-modules/wsgi-intercept/default.nix
+++ b/pkgs/development/python-modules/wsgi-intercept/default.nix
@@ -1,41 +1,37 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-, httplib2
-, py
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  six,
+  httplib2,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "wsgi-intercept";
-  version = "1.13.0";
+  version = "1.13.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
-  src = fetchPypi {
-    pname = "wsgi_intercept";
-    inherit version;
-    hash = "sha256-daA+HQHdtCAC+1a4Ss0qeo7OJe/dIGREoTqfH7z6k0w=";
+  src = fetchFromGitHub {
+    owner = "cdent";
+    repo = "wsgi-intercept";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-hs5yB0+eDlh/pNPaqYIU9C+RBpyrdPOAscQGIoqzmvU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    six
-  ];
+  dependencies = [ six ];
 
   nativeCheckInputs = [
-    httplib2
-    py
     pytestCheckHook
+    httplib2
     requests
     urllib3
   ];
@@ -49,14 +45,13 @@ buildPythonPackage rec {
     "test_https_no_ssl_verification_not_intercepted"
   ];
 
-  pythonImportsCheck = [
-    "wsgi_intercept"
-  ];
+  pythonImportsCheck = [ "wsgi_intercept" ];
 
-  meta = with lib; {
+  meta = {
     description = "Module that acts as a WSGI application in place of a real URI for testing";
     homepage = "https://github.com/cdent/wsgi-intercept";
-    license = licenses.mit;
-    maintainers = with maintainers; [ mikecm ];
+    changelog = "https://github.com/cdent/wsgi-intercept/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ mikecm ];
   };
 }
diff --git a/pkgs/development/python-modules/wsgidav/default.nix b/pkgs/development/python-modules/wsgidav/default.nix
index db7e85e1937e2..c054153230931 100644
--- a/pkgs/development/python-modules/wsgidav/default.nix
+++ b/pkgs/development/python-modules/wsgidav/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, cheroot
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, defusedxml
-, jinja2
-, json5
-, python-pam
-, pyyaml
-, requests
-, setuptools
-, webtest
+{
+  lib,
+  buildPythonPackage,
+  cheroot,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  defusedxml,
+  jinja2,
+  json5,
+  python-pam,
+  pyyaml,
+  requests,
+  setuptools,
+  webtest,
 }:
 
 buildPythonPackage rec {
   pname = "wsgidav";
-  version = "4.3.2";
+  version = "4.3.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -25,12 +26,12 @@ buildPythonPackage rec {
     owner = "mar10";
     repo = "wsgidav";
     rev = "refs/tags/v${version}";
-    hash = "sha256-93+8h+vRLnspQ/lmdjKYpzSEJSKcqCkB4qRqTuKHNRA=";
+    hash = "sha256-vUqNC7ixpta0s7wRC5ROSKMa/MsgEBu5rr0XNu69FRw=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  __darwinAllowLocalNetworking = true;
+
+  build-system = [ setuptools ];
 
   dependencies = [
     defusedxml
@@ -40,8 +41,6 @@ buildPythonPackage rec {
     pyyaml
   ];
 
-  __darwinAllowLocalNetworking = true;
-
   nativeCheckInputs = [
     cheroot
     pytestCheckHook
@@ -49,9 +48,7 @@ buildPythonPackage rec {
     webtest
   ];
 
-  pythonImportsCheck = [
-    "wsgidav"
-  ];
+  pythonImportsCheck = [ "wsgidav" ];
 
   meta = with lib; {
     description = "Generic and extendable WebDAV server based on WSGI";
diff --git a/pkgs/development/python-modules/wsgiprox/default.nix b/pkgs/development/python-modules/wsgiprox/default.nix
index 2fa81bea6ac47..98bb446f92321 100644
--- a/pkgs/development/python-modules/wsgiprox/default.nix
+++ b/pkgs/development/python-modules/wsgiprox/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, six
-, certauth
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  six,
+  certauth,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/wsgiproxy2/default.nix b/pkgs/development/python-modules/wsgiproxy2/default.nix
index 0f50c6474c597..25c66e98cf6dc 100644
--- a/pkgs/development/python-modules/wsgiproxy2/default.nix
+++ b/pkgs/development/python-modules/wsgiproxy2/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, webob
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  webob,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,16 +20,12 @@ buildPythonPackage rec {
     hash = "sha256-ouofw3cBQzBwSh3Pdtdl7KI2pg/T/z3qoh8zoeiKiSs=";
   };
 
-  propagatedBuildInputs = [
-    webob
-  ];
+  propagatedBuildInputs = [ webob ];
 
   # Circular dependency on webtest
   doCheck = false;
 
-  pythonImportsCheck = [
-    "wsgiproxy"
-  ];
+  pythonImportsCheck = [ "wsgiproxy" ];
 
   meta = with lib; {
     description = "HTTP proxying tools for WSGI apps";
diff --git a/pkgs/development/python-modules/wsgitools/default.nix b/pkgs/development/python-modules/wsgitools/default.nix
index 948f932271c18..83b33529214d3 100644
--- a/pkgs/development/python-modules/wsgitools/default.nix
+++ b/pkgs/development/python-modules/wsgitools/default.nix
@@ -1,21 +1,35 @@
-{lib
-,buildPythonPackage
-,fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  pythonAtLeast,
+  fetchPypi,
+  setuptools,
+  pyasyncore,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "wsgitools";
   version = "0.3.1";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0q6kmrkqf02fgww7z1g9cw8f70fimdzs1bvv9inb7fsk0c3pcf1i";
+    hash = "sha256-MTh2BwNTu7NsTHuvoH+r0YHjEGfphX84f04Ah2eu02A=";
   };
 
+  build-system = [ setuptools ];
+
+  # the built-in asyncore library was removed in python 3.12
+  dependencies = lib.optionals (pythonAtLeast "3.12") [ pyasyncore ];
+
+  pythonImportsCheck = [ "wsgitools" ];
+
+  nativeCheckInputs = [ unittestCheckHook ];
+
   meta = with lib; {
     maintainers = with maintainers; [ clkamp ];
-    description = "A set of tools working with WSGI";
+    description = "Set of tools working with WSGI";
     longDescription = ''
       wsgitools is a set of tools working with WSGI (see PEP 333). It
       includes classes for filtering content, middlewares for caching,
diff --git a/pkgs/development/python-modules/wsme/default.nix b/pkgs/development/python-modules/wsme/default.nix
index 7af0f410969b0..31c2ebd9aae9b 100644
--- a/pkgs/development/python-modules/wsme/default.nix
+++ b/pkgs/development/python-modules/wsme/default.nix
@@ -1,24 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonAtLeast
-, pbr
-, setuptools
-, six
-, simplegeneric
-, netaddr
-, pytz
-, webob
-# Test inputs
-, cherrypy
-, flask
-, flask-restful
-, glibcLocales
-, nose
-, pecan
-, sphinx
-, transaction
-, webtest
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pbr,
+  setuptools,
+  importlib-metadata,
+  simplegeneric,
+  netaddr,
+  # Test inputs
+  flask,
+  flask-restful,
+  pecan,
+  sphinx,
+  transaction,
+  webtest,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -26,48 +22,44 @@ buildPythonPackage rec {
   version = "0.12.1";
   pyproject = true;
 
-  disabled = pythonAtLeast "3.9";
-
   src = fetchPypi {
     pname = "WSME";
     inherit version;
     hash = "sha256-m36yJErzxwSskUte0iGVS7aK3QqLKy84okSwZ7M3mS0=";
   };
 
-  nativeBuildInputs = [
-    pbr
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    netaddr
-    pytz
+  nativeBuildInputs = [ pbr ];
+
+  dependencies = [
+    importlib-metadata
     simplegeneric
-    six
-    webob
+    netaddr
   ];
 
   nativeCheckInputs = [
-    nose
-    cherrypy
+    pytestCheckHook
     flask
     flask-restful
-    glibcLocales
     pecan
     sphinx
     transaction
     webtest
   ];
 
-  # from tox.ini, tests don't work with pytest
-  checkPhase = ''
-    nosetests wsme/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose
-  '';
+  pytestFlagsArray = [
+    "wsme/tests"
+    "tests/pecantest"
+    "tests/test_sphinxext.py"
+    "tests/test_flask.py"
+  ];
 
-  meta = with lib; {
+  meta = {
     description = "Simplify the writing of REST APIs, and extend them with additional protocols";
     homepage = "https://pythonhosted.org/WSME/";
     changelog = "https://pythonhosted.org/WSME/changes.html";
-    license = licenses.mit;
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sigmanificient ];
   };
 }
diff --git a/pkgs/development/python-modules/wsnsimpy/default.nix b/pkgs/development/python-modules/wsnsimpy/default.nix
index fe5ad78b8a297..37b7b0f41e0a5 100644
--- a/pkgs/development/python-modules/wsnsimpy/default.nix
+++ b/pkgs/development/python-modules/wsnsimpy/default.nix
@@ -1,6 +1,14 @@
-{ buildPythonPackage, fetchPypi, isPy27, lib, setuptools, simpy, tkinter
-# GUI-based visualization of the simulation is optional
-, enableVisualization ? true }:
+{
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  lib,
+  setuptools,
+  simpy,
+  tkinter,
+  # GUI-based visualization of the simulation is optional
+  enableVisualization ? true,
+}:
 
 buildPythonPackage rec {
   pname = "wsnsimpy";
@@ -13,15 +21,16 @@ buildPythonPackage rec {
     sha256 = "1b7fdqwc2v9alfwf2fr0aqr8rf2pb5lpm4anpilmvrh2lhjar4i2";
   };
 
-  propagatedBuildInputs = [ setuptools simpy ]
-    ++ lib.optional enableVisualization tkinter;
+  propagatedBuildInputs = [
+    setuptools
+    simpy
+  ] ++ lib.optional enableVisualization tkinter;
 
   # No test cases are included, thus unittest tries to run the examples, which
   # fail because no DISPLAYs are available.
   doCheck = false;
 
-  pythonImportsCheck = [ "wsnsimpy" ]
-    ++ lib.optional enableVisualization "wsnsimpy.wsnsimpy_tk";
+  pythonImportsCheck = [ "wsnsimpy" ] ++ lib.optional enableVisualization "wsnsimpy.wsnsimpy_tk";
 
   meta = with lib; {
     description = "SimPy-based WSN Simulator";
diff --git a/pkgs/development/python-modules/wsproto/default.nix b/pkgs/development/python-modules/wsproto/default.nix
index b93de0b924f7b..880e10b59d7fc 100644
--- a/pkgs/development/python-modules/wsproto/default.nix
+++ b/pkgs/development/python-modules/wsproto/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, h11
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  h11,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -27,6 +28,6 @@ buildPythonPackage rec {
     description = "Pure Python, pure state-machine WebSocket implementation";
     homepage = "https://github.com/python-hyper/wsproto/";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/wtf-peewee/default.nix b/pkgs/development/python-modules/wtf-peewee/default.nix
index 33cff8e5ee221..73f5cc14b4018 100644
--- a/pkgs/development/python-modules/wtf-peewee/default.nix
+++ b/pkgs/development/python-modules/wtf-peewee/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, peewee
-, wtforms
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  peewee,
+  wtforms,
+  python,
 }:
 
 buildPythonPackage rec {
@@ -17,9 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-LQbOWg65rPTSLRVK5vvqmdsRsXaDgcYZ54oqxgpWGRU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     peewee
diff --git a/pkgs/development/python-modules/wtforms-bootstrap5/default.nix b/pkgs/development/python-modules/wtforms-bootstrap5/default.nix
index 0150dcb2d72ae..280fc791e0b04 100644
--- a/pkgs/development/python-modules/wtforms-bootstrap5/default.nix
+++ b/pkgs/development/python-modules/wtforms-bootstrap5/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, wtforms
-, poetry-core
-, pytestCheckHook
-, lxml
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  wtforms,
+  poetry-core,
+  pytestCheckHook,
+  lxml,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-TJJ3KOeC9JXnxK0YpnfeBNq1KHwaAZ4+t9CXbc+85Ro=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    wtforms
-  ];
+  propagatedBuildInputs = [ wtforms ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/pkgs/development/python-modules/wtforms/default.nix b/pkgs/development/python-modules/wtforms/default.nix
index 9bb47be4a27a1..4712aefbed07a 100644
--- a/pkgs/development/python-modules/wtforms/default.nix
+++ b/pkgs/development/python-modules/wtforms/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 
-# build-system
-, babel
-, hatchling
-, setuptools
+  # build-system
+  babel,
+  hatchling,
+  setuptools,
 
-# dependencies
-, markupsafe
+  # dependencies
+  markupsafe,
 
-# optional-dependencies
-, email-validator
+  # optional-dependencies
+  email-validator,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -38,30 +39,23 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  propagatedBuildInputs = [
-    markupsafe
-  ];
+  propagatedBuildInputs = [ markupsafe ];
 
   passthru.optional-dependencies = {
-    email = [
-      email-validator
-    ];
+    email = [ email-validator ];
   };
 
   nativeCheckInputs = [
     pytestCheckHook
   ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "wtforms"
-  ];
+  pythonImportsCheck = [ "wtforms" ];
 
   meta = with lib; {
-    description = "A flexible forms validation and rendering library for Python";
+    description = "Flexible forms validation and rendering library for Python";
     homepage = "https://github.com/wtforms/wtforms";
     changelog = "https://github.com/wtforms/wtforms/blob/${version}/CHANGES.rst";
     license = licenses.bsd3;
     maintainers = with maintainers; [ bhipple ];
   };
-
 }
diff --git a/pkgs/development/python-modules/wunsen/default.nix b/pkgs/development/python-modules/wunsen/default.nix
index 5fc6ea2d3803e..9f6d12c9f3d48 100644
--- a/pkgs/development/python-modules/wunsen/default.nix
+++ b/pkgs/development/python-modules/wunsen/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-, pythonOlder
+  pythonOlder,
 
-, unittestCheckHook
+  unittestCheckHook,
 
-, hatchling
+  hatchling,
 
-, khanaa
+  khanaa,
 }:
 
 buildPythonPackage rec {
@@ -25,28 +26,24 @@ buildPythonPackage rec {
     hash = "sha256-lMEhtcWG+S3vAz+Y/qDxhaZslsO0pbs5xUn5QgZNs2U=";
   };
 
-  build-system = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  dependencies = [
-    khanaa
-  ];
+  dependencies = [ khanaa ];
 
-  nativeCheckInputs = [
-    unittestCheckHook
-  ];
+  nativeCheckInputs = [ unittestCheckHook ];
 
-  unittestFlagsArray = [ "-s" "tests" ];
+  unittestFlagsArray = [
+    "-s"
+    "tests"
+  ];
 
   pythonImportsCheck = [ "wunsen" ];
 
-  meta = with lib;
-    {
-      description = "Transliterate/transcribe other languages into Thai Topics";
-      homepage = "https://github.com/cakimpei/wunsen";
-      changelog = "https://github.com/cakimpei/wunsen/releases/tag/v${version}";
-      license = licenses.mit;
-      maintainers = with maintainers; [ vizid ];
-    };
+  meta = with lib; {
+    description = "Transliterate/transcribe other languages into Thai Topics";
+    homepage = "https://github.com/cakimpei/wunsen";
+    changelog = "https://github.com/cakimpei/wunsen/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ vizid ];
+  };
 }
diff --git a/pkgs/development/python-modules/wurlitzer/default.nix b/pkgs/development/python-modules/wurlitzer/default.nix
index ee93a2c6454de..ea46539a5db5e 100644
--- a/pkgs/development/python-modules/wurlitzer/default.nix
+++ b/pkgs/development/python-modules/wurlitzer/default.nix
@@ -1,39 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "wurlitzer";
-  version = "3.0.3";
+  version = "3.1.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Ik9f5wYYvjhywF393IxFcZHsGHBlRZYnn8we2t6+Pls=";
+    hash = "sha256-v7kUSrnwJIfYArn/idvT+jgtCPc+EtuK3EwvsAzTm9k=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "wurlitzer"
-  ];
+  pythonImportsCheck = [ "wurlitzer" ];
 
-  pytestFlagsArray = [
-    "test.py"
-  ];
+  pytestFlagsArray = [ "test.py" ];
 
   meta = with lib; {
     description = "Capture C-level output in context managers";
     homepage = "https://github.com/minrk/wurlitzer";
-    changelog = "https://github.com/minrk/wurlitzer/blob/{version}/CHANGELOG.md";
+    changelog = "https://github.com/minrk/wurlitzer/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/wxpython/4.2.nix b/pkgs/development/python-modules/wxpython/4.2.nix
index 70175f58c4497..be3a181da9aaf 100644
--- a/pkgs/development/python-modules/wxpython/4.2.nix
+++ b/pkgs/development/python-modules/wxpython/4.2.nix
@@ -1,49 +1,49 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, setuptools
-, pythonOlder
-, fetchPypi
-, substituteAll
-
-# build
-, autoPatchelfHook
-, attrdict
-, doxygen
-, pkg-config
-, python
-, sip
-, which
-
-# runtime
-, cairo
-, gst_all_1
-, gtk3
-, libGL
-, libGLU
-, libSM
-, libXinerama
-, libXtst
-, libXxf86vm
-, libglvnd
-, mesa
-, pango
-, SDL
-, webkitgtk
-, wxGTK
-, xorgproto
-
-# propagates
-, numpy
-, pillow
-, six
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  setuptools,
+  fetchPypi,
+  substituteAll,
+
+  # build
+  autoPatchelfHook,
+  attrdict,
+  doxygen,
+  pkg-config,
+  python,
+  sip,
+  which,
+  buildPackages,
+
+  # runtime
+  cairo,
+  gst_all_1,
+  gtk3,
+  libGL,
+  libGLU,
+  libSM,
+  libXinerama,
+  libXtst,
+  libXxf86vm,
+  libglvnd,
+  mesa,
+  pango,
+  SDL,
+  webkitgtk,
+  wxGTK,
+  xorgproto,
+
+  # propagates
+  numpy,
+  pillow,
+  six,
 }:
 
 buildPythonPackage rec {
   pname = "wxpython";
   version = "4.2.1";
   format = "other";
-  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     pname = "wxPython";
@@ -60,6 +60,13 @@ buildPythonPackage rec {
     })
   ];
 
+  # https://github.com/wxWidgets/Phoenix/issues/2575
+  postPatch = ''
+    ln -s ${lib.getExe buildPackages.waf} bin/waf
+    substituteInPlace build.py \
+      --replace-fail "distutils.dep_util" "setuptools.modified"
+  '';
+
   nativeBuildInputs = [
     attrdict
     pkg-config
@@ -68,27 +75,27 @@ buildPythonPackage rec {
     sip
     which
     wxGTK
-  ] ++ lib.optionals stdenv.isLinux [
-    autoPatchelfHook
-  ];
-
-  buildInputs = [
-    wxGTK
-    SDL
-  ] ++ lib.optionals stdenv.isLinux [
-    gst_all_1.gst-plugins-base
-    gst_all_1.gstreamer
-    libGL
-    libGLU
-    libSM
-    libXinerama
-    libXtst
-    libXxf86vm
-    libglvnd
-    mesa
-    webkitgtk
-    xorgproto
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ];
+
+  buildInputs =
+    [
+      wxGTK
+      SDL
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isLinux [
+      gst_all_1.gst-plugins-base
+      gst_all_1.gstreamer
+      libGL
+      libGLU
+      libSM
+      libXinerama
+      libXtst
+      libXxf86vm
+      libglvnd
+      mesa
+      webkitgtk
+      xorgproto
+    ];
 
   propagatedBuildInputs = [
     numpy
@@ -102,13 +109,13 @@ buildPythonPackage rec {
     export DOXYGEN=${doxygen}/bin/doxygen
     export PATH="${wxGTK}/bin:$PATH"
     export SDL_CONFIG="${SDL.dev}/bin/sdl-config"
+    export WAF=$PWD/bin/waf
 
     ${python.pythonOnBuildForHost.interpreter} build.py -v --use_syswx dox etg sip --nodoc build_py
 
     runHook postBuild
   '';
 
-
   installPhase = ''
     runHook preInstall
 
@@ -126,7 +133,6 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-
   meta = with lib; {
     changelog = "https://github.com/wxWidgets/Phoenix/blob/wxPython-${version}/CHANGES.rst";
     description = "Cross platform GUI toolkit for Python, Phoenix version";
diff --git a/pkgs/development/python-modules/wyoming/default.nix b/pkgs/development/python-modules/wyoming/default.nix
index e711079315803..bc1eb85ab3ba0 100644
--- a/pkgs/development/python-modules/wyoming/default.nix
+++ b/pkgs/development/python-modules/wyoming/default.nix
@@ -1,54 +1,45 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
 
-# build-system
-, setuptools
+  # build-system
+  setuptools,
 
-# optional-dependencies
-, zeroconf
+  # optional-dependencies
+  zeroconf,
 
-# tests
-, wyoming-faster-whisper
-, wyoming-openwakeword
-, wyoming-piper
+  # tests
+  wyoming-faster-whisper,
+  wyoming-openwakeword,
+  wyoming-piper,
 }:
 
 buildPythonPackage rec {
   pname = "wyoming";
-  version = "1.5.3";
+  version = "1.5.4";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "rhasspy";
     repo = "wyoming";
     rev = "refs/tags/${version}";
-    hash = "sha256-SOPkvFMjoDQiWVP39+1Cx4fFmPH8wcBhZhaKapdZaeA=";
+    hash = "sha256-gx9IbFkwR5fiFFAZTiQKzBbVBJ/RYz29sztgbvAEeRQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   passthru.optional-dependencies = {
-    zeroconf = [
-      zeroconf
-    ];
+    zeroconf = [ zeroconf ];
   };
 
-  pythonImportsCheck = [
-    "wyoming"
-  ];
+  pythonImportsCheck = [ "wyoming" ];
 
   # no tests
   doCheck = false;
 
   passthru.tests = {
-    inherit
-      wyoming-faster-whisper
-      wyoming-openwakeword
-      wyoming-piper
-    ;
+    inherit wyoming-faster-whisper wyoming-openwakeword wyoming-piper;
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/x-wr-timezone/default.nix b/pkgs/development/python-modules/x-wr-timezone/default.nix
index f71e1c0628690..4d873e9590f5c 100644
--- a/pkgs/development/python-modules/x-wr-timezone/default.nix
+++ b/pkgs/development/python-modules/x-wr-timezone/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, icalendar
-, pytz
-, pytestCheckHook
-, restructuredtext-lint
-, pygments
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  icalendar,
+  pytz,
+  pytestCheckHook,
+  restructuredtext-lint,
+  pygments,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-itqsVYYUcpbKTh0BM6IHk6F9xhB+pAQnnJsnZAVpNL4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     icalendar
diff --git a/pkgs/development/python-modules/x11-hash/default.nix b/pkgs/development/python-modules/x11-hash/default.nix
index 403f1ed3e12f1..92af43fad444d 100644
--- a/pkgs/development/python-modules/x11-hash/default.nix
+++ b/pkgs/development/python-modules/x11-hash/default.nix
@@ -1,8 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -16,16 +16,12 @@ buildPythonPackage rec {
     hash = "sha256-QtzqxEzpVGK48/lvOEr8VtPUYexLdXKD3zGv1VOdWpw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   # pypi's source doesn't include tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "x11_hash"
-  ];
+  pythonImportsCheck = [ "x11_hash" ];
 
   meta = with lib; {
     description = "Binding for X11 proof of work hashing";
diff --git a/pkgs/development/python-modules/x256/default.nix b/pkgs/development/python-modules/x256/default.nix
index c155b00c51726..69359f1578fde 100644
--- a/pkgs/development/python-modules/x256/default.nix
+++ b/pkgs/development/python-modules/x256/default.nix
@@ -1,4 +1,7 @@
-{ lib, buildPythonPackage, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -20,4 +23,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ Scriptkiddi ];
   };
 }
-
diff --git a/pkgs/development/python-modules/xapian/default.nix b/pkgs/development/python-modules/xapian/default.nix
index 824ce86208394..382b67293272d 100644
--- a/pkgs/development/python-modules/xapian/default.nix
+++ b/pkgs/development/python-modules/xapian/default.nix
@@ -1,6 +1,10 @@
-{ lib, buildPythonPackage, fetchurl, python
-, sphinx
-, xapian
+{
+  lib,
+  buildPythonPackage,
+  fetchurl,
+  python,
+  sphinx,
+  xapian,
 }:
 
 let
@@ -13,7 +17,7 @@ buildPythonPackage rec {
 
   src = fetchurl {
     url = "https://oligarchy.co.uk/xapian/${version}/xapian-bindings-${version}.tar.xz";
-    hash = "sha256-BoMU/KP1RSRwFJLfQy+lTEhf1OOWE8os0nXhNpZOgak=";
+    hash = "sha256-VQhzVz7gQBGZ+DX+9R3ficp7wm97jRvcylnaZD+zyoE=";
   };
 
   configureFlags = [
@@ -25,7 +29,10 @@ buildPythonPackage rec {
     export XAPIAN_CONFIG=${xapian}/bin/xapian-config
   '';
 
-  buildInputs = [ sphinx xapian ];
+  buildInputs = [
+    sphinx
+    xapian
+  ];
 
   doCheck = true;
 
@@ -38,6 +45,6 @@ buildPythonPackage rec {
     homepage = "https://xapian.org/";
     changelog = "https://xapian.org/docs/xapian-bindings-${version}/NEWS";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/xapp/default.nix b/pkgs/development/python-modules/xapp/default.nix
deleted file mode 100644
index b5dc4e3e82ea0..0000000000000
--- a/pkgs/development/python-modules/xapp/default.nix
+++ /dev/null
@@ -1,68 +0,0 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, python
-, meson
-, ninja
-, psutil
-, pygobject3
-, gtk3
-, gobject-introspection
-, xapp
-, polkit
-, gitUpdater
-}:
-
-buildPythonPackage rec {
-  pname = "xapp";
-  version = "22";
-
-  format = "other";
-
-  src = fetchFromGitHub {
-    owner = "linuxmint";
-    repo = "python-xapp";
-    rev = "refs/tags/master.mint${version}";
-    hash = "sha256-2Gx85y0ARu6EfDYAT9ZL154RH0R1HY78tm3rceODnZU=";
-  };
-
-  nativeBuildInputs = [
-    meson
-    ninja
-  ];
-
-  propagatedBuildInputs = [
-    psutil
-    pygobject3
-    gtk3
-    gobject-introspection
-    xapp
-    polkit
-  ];
-
-  postPatch = ''
-    substituteInPlace "xapp/os.py" --replace "/usr/bin/pkexec" "${polkit}/bin/pkexec"
-  '';
-
-  postInstall = ''
-    # This is typically set by pipInstallHook/eggInstallHook,
-    # so we have to do so manually when using meson.
-    # https://github.com/NixOS/nixpkgs/issues/175227
-    export PYTHONPATH=$out/${python.sitePackages}:$PYTHONPATH
-  '';
-
-  doCheck = false;
-  pythonImportsCheck = [ "xapp" ];
-
-  passthru.updateScript = gitUpdater {
-    ignoredVersions = "^master.*";
-  };
-
-  meta = with lib; {
-    homepage = "https://github.com/linuxmint/python-xapp";
-    description = "Cross-desktop libraries and common resources for python";
-    license = licenses.lgpl2;
-    platforms = platforms.linux;
-    maintainers = teams.cinnamon.members;
-  };
-}
diff --git a/pkgs/development/python-modules/xarray-dataclasses/default.nix b/pkgs/development/python-modules/xarray-dataclasses/default.nix
index aae2cdd7f1d79..09205ea9e1777 100644
--- a/pkgs/development/python-modules/xarray-dataclasses/default.nix
+++ b/pkgs/development/python-modules/xarray-dataclasses/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, poetry-core
-, pytestCheckHook
-, numpy
-, typing-extensions
-, xarray
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  poetry-core,
+  pytestCheckHook,
+  numpy,
+  typing-extensions,
+  xarray,
 }:
 
 buildPythonPackage rec {
   pname = "xarray-dataclasses";
-  version = "1.7.0";
+  version = "1.8.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,13 +21,15 @@ buildPythonPackage rec {
     owner = "astropenguin";
     repo = "xarray-dataclasses";
     rev = "refs/tags/v${version}";
-    hash = "sha256-fyRUH6t2+9tsxRQFfJR2EHinYtwCmWeCB77kpmBgdBA=";
+    hash = "sha256-NZBWq1G63yef6h9TjRBfCqPzhaks0Cm7bUCJfIIpmcE=";
   };
 
   nativeBuildInputs = [
     poetry-core
   ];
 
+  pythonRelaxDeps = [ "xarray" ];
+
   propagatedBuildInputs = [
     numpy
     typing-extensions
diff --git a/pkgs/development/python-modules/xarray-datatree/default.nix b/pkgs/development/python-modules/xarray-datatree/default.nix
new file mode 100644
index 0000000000000..1d99f300cb7bb
--- /dev/null
+++ b/pkgs/development/python-modules/xarray-datatree/default.nix
@@ -0,0 +1,59 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  check-manifest,
+  setuptools,
+  setuptools-scm,
+  packaging,
+  pytestCheckHook,
+  xarray,
+  zarr,
+}:
+
+buildPythonPackage rec {
+  pname = "datatree";
+  version = "0.0.14";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "xarray-contrib";
+    repo = "datatree";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-C6+WcHc2+sftJ5Yyh/9TTIHhAEwhAqSsSkaDwtq7J90=";
+  };
+
+  build-system = [
+    check-manifest
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    packaging
+    xarray
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    zarr
+  ];
+
+  pythonImportsCheck = [ "datatree" ];
+
+  disabledTests = [
+    # output formatting issue, likely due to underlying library version difference:
+    "test_diff_node_data"
+  ];
+
+  meta = with lib; {
+    description = "Tree-like hierarchical data structure for xarray";
+    homepage = "https://xarray-datatree.readthedocs.io";
+    changelog = "https://github.com/xarray-contrib/datatree/releases/tag/v${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ bcdarwin ];
+  };
+}
diff --git a/pkgs/development/python-modules/xarray-einstats/default.nix b/pkgs/development/python-modules/xarray-einstats/default.nix
index bcc29200f5e2c..b82a8a8cd79f4 100644
--- a/pkgs/development/python-modules/xarray-einstats/default.nix
+++ b/pkgs/development/python-modules/xarray-einstats/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, einops
-, fetchFromGitHub
-, flit-core
-, numba
-, numpy
-, pandas
-, pytestCheckHook
-, pythonOlder
-, scipy
-, xarray
+{
+  lib,
+  buildPythonPackage,
+  einops,
+  fetchFromGitHub,
+  flit-core,
+  numba,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  scipy,
+  xarray,
 }:
 
 buildPythonPackage rec {
@@ -26,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-aljjwgBJp341aQN3g1PoZPj+46x21Eu+svG1yzURhJE=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  nativeBuildInputs = [ flit-core ];
 
   propagatedBuildInputs = [
     numpy
@@ -42,9 +40,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "xarray_einstats"
-  ];
+  pythonImportsCheck = [ "xarray_einstats" ];
 
   meta = with lib; {
     description = "Stats, linear algebra and einops for xarray";
diff --git a/pkgs/development/python-modules/xarray/default.nix b/pkgs/development/python-modules/xarray/default.nix
index ad904dd6e60ba..a0abc6074a35b 100644
--- a/pkgs/development/python-modules/xarray/default.nix
+++ b/pkgs/development/python-modules/xarray/default.nix
@@ -1,54 +1,49 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, flaky
-, numpy
-, packaging
-, pandas
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  packaging,
+  pandas,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "xarray";
-  version = "2024.2.0";
+  version = "2024.07.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-oQXwJ5EILIiOviYiCQvq/y57aFcUiNYv5q/as1tLcX8=";
+  src = fetchFromGitHub {
+    owner = "pydata";
+    repo = "xarray";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-pt0qnkgf3E/QQHQAaZLommakhqEJ4NuTyjx5tdk2N1U=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
     packaging
     pandas
   ];
 
   nativeCheckInputs = [
-    flaky
     pytestCheckHook
   ];
 
-  pytestFlagsArray =[
-    # ModuleNotFoundError: No module named 'xarray.datatree_'
-    "--ignore xarray/tests/datatree"
-  ];
-
-  pythonImportsCheck = [
-    "xarray"
-  ];
+  pythonImportsCheck = [ "xarray" ];
 
   meta = with lib; {
+    changelog = "https://github.com/pydata/xarray/blob/${src.rev}/doc/whats-new.rst";
     description = "N-D labeled arrays and datasets in Python";
     homepage = "https://github.com/pydata/xarray";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/xattr/default.nix b/pkgs/development/python-modules/xattr/default.nix
index 6d24e5dffc8f1..84a9d63536e00 100644
--- a/pkgs/development/python-modules/xattr/default.nix
+++ b/pkgs/development/python-modules/xattr/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, cffi
-, setuptools
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  cffi,
+  setuptools,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -27,17 +28,13 @@ buildPythonPackage rec {
   # https://github.com/xattr/xattr/issues/43
   doCheck = false;
 
-  propagatedBuildInputs = [
-    cffi
-  ];
+  propagatedBuildInputs = [ cffi ];
 
   postBuild = ''
     ${python.pythonOnBuildForHost.interpreter} -m compileall -f xattr
   '';
 
-  pythonImportsCheck = [
-    "xattr"
-  ];
+  pythonImportsCheck = [ "xattr" ];
 
   meta = with lib; {
     description = "Python wrapper for extended filesystem attributes";
@@ -45,6 +42,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/xattr/xattr";
     changelog = "https://github.com/xattr/xattr/blob/v${version}/CHANGES.txt";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/xbox-webapi/default.nix b/pkgs/development/python-modules/xbox-webapi/default.nix
index c5180c1f15c0d..931d0be5748c7 100644
--- a/pkgs/development/python-modules/xbox-webapi/default.nix
+++ b/pkgs/development/python-modules/xbox-webapi/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, appdirs
-, ecdsa
-, httpx
-, ms-cv
-, pydantic
-, pytest-asyncio
-, pytestCheckHook
-, respx
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  appdirs,
+  ecdsa,
+  httpx,
+  ms-cv,
+  pydantic,
+  pytest-asyncio,
+  pytestCheckHook,
+  respx,
 }:
 
 buildPythonPackage rec {
@@ -27,9 +28,7 @@ buildPythonPackage rec {
     hash = "sha256-9A3gdSlRjBCx5fBW+jkaSWsFuGieXQKvbEbZzGzLf94=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     appdirs
diff --git a/pkgs/development/python-modules/xboxapi/default.nix b/pkgs/development/python-modules/xboxapi/default.nix
index e0bb1614e3399..b100259cea6b9 100644
--- a/pkgs/development/python-modules/xboxapi/default.nix
+++ b/pkgs/development/python-modules/xboxapi/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/xcffib/default.nix b/pkgs/development/python-modules/xcffib/default.nix
index b0b00da0dc320..63e96858b658f 100644
--- a/pkgs/development/python-modules/xcffib/default.nix
+++ b/pkgs/development/python-modules/xcffib/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, cffi
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, xorg
+{
+  lib,
+  buildPythonPackage,
+  cffi,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  xorg,
 }:
 
 buildPythonPackage rec {
@@ -24,18 +25,14 @@ buildPythonPackage rec {
     sed -e 's,ffi\.dlopen(,&"${xorg.libxcb.out}/lib/" + ,' -i xcffib/__init__.py
   '';
 
-  propagatedNativeBuildInputs = [
-    cffi
-  ];
+  propagatedNativeBuildInputs = [ cffi ];
 
-  propagatedBuildInputs = [
-    cffi
-  ];
+  propagatedBuildInputs = [ cffi ];
 
   nativeCheckInputs = [
     pytestCheckHook
     xorg.xeyes
-    xorg.xorgserver
+    xorg.xvfb
   ];
 
   preCheck = ''
@@ -43,15 +40,17 @@ buildPythonPackage rec {
     rm -r xcffib
   '';
 
-  pythonImportsCheck = [
-    "xcffib"
-  ];
+  pythonImportsCheck = [ "xcffib" ];
+
+  # Tests use xvfb
+  __darwinAllowLocalNetworking = true;
 
   meta = with lib; {
-    description = "A drop in replacement for xpyb, an XCB python binding";
+    description = "Drop in replacement for xpyb, an XCB python binding";
     homepage = "https://github.com/tych0/xcffib";
     changelog = "https://github.com/tych0/xcffib/releases/tag/v${version}";
     license = licenses.asl20;
+    platforms = platforms.linux ++ platforms.darwin ++ platforms.windows;
     maintainers = with maintainers; [ kamilchm ];
   };
 }
diff --git a/pkgs/development/python-modules/xdg-base-dirs/default.nix b/pkgs/development/python-modules/xdg-base-dirs/default.nix
index b2eb4094c9272..e65785377a579 100644
--- a/pkgs/development/python-modules/xdg-base-dirs/default.nix
+++ b/pkgs/development/python-modules/xdg-base-dirs/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     hash = "sha256-nbdF1tjVqlxwiGW0pySS6HyJbmNuQ7mVdQYfhofO4Dk=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
@@ -34,7 +33,7 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "An implementation of the XDG Base Directory Specification in Python";
+    description = "Implementation of the XDG Base Directory Specification in Python";
     homepage = "https://github.com/srstevenson/xdg-base-dirs";
     changelog = "https://github.com/srstevenson/xdg-base-dirs/releases/tag/${src.rev}";
     license = licenses.isc;
diff --git a/pkgs/development/python-modules/xdg/default.nix b/pkgs/development/python-modules/xdg/default.nix
index 065f434bd7ee4..4a2efae3a8fb8 100644
--- a/pkgs/development/python-modules/xdg/default.nix
+++ b/pkgs/development/python-modules/xdg/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, clikit
-, poetry-core
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  clikit,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
@@ -22,21 +23,17 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    clikit
-  ];
+  propagatedBuildInputs = [ clikit ];
 
   # sdist has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "xdg"
-  ];
+  pythonImportsCheck = [ "xdg" ];
 
   meta = with lib; {
     description = "XDG Base Directory Specification for Python";
     homepage = "https://github.com/srstevenson/xdg";
     license = licenses.isc;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/xdis/default.nix b/pkgs/development/python-modules/xdis/default.nix
index 5fda8fce96cce..ebbad75f84088 100644
--- a/pkgs/development/python-modules/xdis/default.nix
+++ b/pkgs/development/python-modules/xdis/default.nix
@@ -1,12 +1,11 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, fetchpatch
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -28,13 +27,9 @@ buildPythonPackage rec {
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "xdis"
-  ];
+  pythonImportsCheck = [ "xdis" ];
 
   disabledTestPaths = [
     # import file mismatch:
diff --git a/pkgs/development/python-modules/xdoctest/default.nix b/pkgs/development/python-modules/xdoctest/default.nix
index 68eb1a0f426bb..db4865f48e29e 100644
--- a/pkgs/development/python-modules/xdoctest/default.nix
+++ b/pkgs/development/python-modules/xdoctest/default.nix
@@ -1,24 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, wheel
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "xdoctest";
-  version = "1.1.3";
+  version = "1.2.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.6";
-
   src = fetchFromGitHub {
     owner = "Erotemic";
     repo = "xdoctest";
     rev = "refs/tags/v${version}";
-    hash = "sha256-MOjT8adJoSxigSG2Gy5gqRfYswjUsgbBOV1ZU0LBDN8=";
+    hash = "sha256-1c3wnQ30J2OfnBffzGfPPt9St8VpLGmFGbifzbw+cOc=";
   };
 
   nativeBuildInputs = [
@@ -26,9 +24,7 @@ buildPythonPackage rec {
     wheel
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export HOME=$TMPDIR
@@ -38,7 +34,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "xdoctest" ];
 
   meta = with lib; {
-    description = "A rewrite of Python's builtin doctest module (with pytest plugin integration) with AST instead of REGEX";
+    description = "Rewrite of Python's builtin doctest module (with pytest plugin integration) with AST instead of REGEX";
     homepage = "https://github.com/Erotemic/xdoctest";
     changelog = "https://github.com/Erotemic/xdoctest/blob/${src.rev}/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/xdot/default.nix b/pkgs/development/python-modules/xdot/default.nix
index f0bfe71fcbb02..8cd817ea1c90f 100644
--- a/pkgs/development/python-modules/xdot/default.nix
+++ b/pkgs/development/python-modules/xdot/default.nix
@@ -1,41 +1,49 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, xvfb-run
-, wrapGAppsHook
-, gobject-introspection
-, pygobject3
-, graphviz
-, gtk3
-, numpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  xvfb-run,
+  wrapGAppsHook3,
+  gobject-introspection,
+  pygobject3,
+  graphviz,
+  gtk3,
+  numpy,
+  packaging,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "xdot";
-  version = "1.3";
-  format = "setuptools";
+  version = "1.4";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "jrfonseca";
     repo = "xdot.py";
     rev = version;
-    hash = "sha256-0UfvN7z7ThlFu825h03Z5Wur9zbiUpvD5cb5gcIhQQI=";
+    hash = "sha256-fkO1bINRkCCzVRrQg9+vIODbN+bpXq2OHBKkzzZUZNA=";
   };
 
+  build-system = [ setuptools ];
+
   nativeBuildInputs = [
     gobject-introspection
-    wrapGAppsHook
+    wrapGAppsHook3
   ];
-  propagatedBuildInputs = [
-    pygobject3
+
+  buildInputs = [
     graphviz
     gtk3
-    numpy
   ];
-  nativeCheckInputs = [
-    xvfb-run
+
+  dependencies = [
+    pygobject3
+    numpy
+    packaging
   ];
+  nativeCheckInputs = [ xvfb-run ];
 
   dontWrapGApps = true;
   # Arguments to be passed to `makeWrapper`, only used by buildPython*
@@ -55,7 +63,7 @@ buildPythonPackage rec {
   doCheck = true;
 
   meta = with lib; {
-    description = "An interactive viewer for graphs written in Graphviz's dot";
+    description = "Interactive viewer for graphs written in Graphviz's dot";
     mainProgram = "xdot";
     homepage = "https://github.com/jrfonseca/xdot.py";
     license = licenses.lgpl3Plus;
diff --git a/pkgs/development/python-modules/xdxf2html/default.nix b/pkgs/development/python-modules/xdxf2html/default.nix
index 496627c3724f0..4c31e36ff1288 100644
--- a/pkgs/development/python-modules/xdxf2html/default.nix
+++ b/pkgs/development/python-modules/xdxf2html/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 
-, setuptools
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -15,9 +16,7 @@ buildPythonPackage rec {
     hash = "sha256-u2UaEALzD583+hbgwTItQOdGQ6GIhdVy79C2gfJwzlI=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   pythonImportsCheck = [ "xdxf2html" ];
 
diff --git a/pkgs/development/python-modules/xformers/default.nix b/pkgs/development/python-modules/xformers/default.nix
index e0e6e9569ef34..69c7583c9eac6 100644
--- a/pkgs/development/python-modules/xformers/default.nix
+++ b/pkgs/development/python-modules/xformers/default.nix
@@ -1,27 +1,30 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, which
-# runtime dependencies
-, numpy
-, torch
-# check dependencies
-, pytestCheckHook
-, pytest-cov
-# , pytest-mpi
-, pytest-timeout
-# , pytorch-image-models
-, hydra-core
-, fairscale
-, scipy
-, cmake
-, openai-triton
-, networkx
-#, apex
-, einops
-, transformers
-, timm
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  which,
+  # runtime dependencies
+  numpy,
+  torch,
+  # check dependencies
+  pytestCheckHook,
+  pytest-cov,
+  # , pytest-mpi
+  pytest-timeout,
+  # , pytorch-image-models
+  hydra-core,
+  fairscale,
+  scipy,
+  cmake,
+  ninja,
+  triton,
+  networkx,
+  #, apex
+  einops,
+  transformers,
+  timm,
 #, flash-attn
 }:
 let
@@ -43,33 +46,40 @@ buildPythonPackage {
     fetchSubmodules = true;
   };
 
-  patches = [
-    ./0001-fix-allow-building-without-git.patch
-  ];
+  patches = [ ./0001-fix-allow-building-without-git.patch ];
 
   preBuild = ''
     cat << EOF > ./xformers/version.py
     # noqa: C801
     __version__ = "${version}"
     EOF
-  '' + lib.optionalString cudaSupport ''
-    export CUDA_HOME=${cudaPackages.cuda_nvcc}
-    export TORCH_CUDA_ARCH_LIST="${lib.concatStringsSep ";" cudaCapabilities}"
+
+    export MAX_JOBS=$NIX_BUILD_CORES
   '';
 
-  buildInputs = lib.optionals cudaSupport (with cudaPackages; [
-    # flash-attn build
-    cuda_cudart # cuda_runtime_api.h
-    libcusparse.dev # cusparse.h
-    cuda_cccl.dev # nv/target
-    libcublas.dev # cublas_v2.h
-    libcusolver.dev # cusolverDn.h
-    libcurand.dev # curand_kernel.h
-  ]);
+  env = lib.attrsets.optionalAttrs cudaSupport {
+    TORCH_CUDA_ARCH_LIST = "${lib.concatStringsSep ";" torch.cudaCapabilities}";
+  };
+
+  stdenv = if cudaSupport then cudaPackages.backendStdenv else stdenv;
+
+  buildInputs = lib.optionals cudaSupport (
+    with cudaPackages;
+    [
+      # flash-attn build
+      cuda_cudart # cuda_runtime_api.h
+      libcusparse # cusparse.h
+      cuda_cccl # nv/target
+      libcublas # cublas_v2.h
+      libcusolver # cusolverDn.h
+      libcurand # curand_kernel.h
+    ]
+  );
 
   nativeBuildInputs = [
+    ninja
     which
-  ];
+  ] ++ lib.optionals cudaSupport (with cudaPackages; [ cuda_nvcc ]);
 
   propagatedBuildInputs = [
     numpy
@@ -96,7 +106,7 @@ buildPythonPackage {
     scipy
     cmake
     networkx
-    openai-triton
+    triton
     # apex
     einops
     transformers
diff --git a/pkgs/development/python-modules/xgboost/default.nix b/pkgs/development/python-modules/xgboost/default.nix
index 2a65992e048d2..bf2c8908d2868 100644
--- a/pkgs/development/python-modules/xgboost/default.nix
+++ b/pkgs/development/python-modules/xgboost/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, cmake
-, numpy
-, scipy
-, hatchling
-, stdenv
-, xgboost
+{
+  buildPythonPackage,
+  pythonOlder,
+  cmake,
+  numpy,
+  scipy,
+  hatchling,
+  stdenv,
+  xgboost,
 }:
 
 buildPythonPackage {
@@ -16,16 +16,24 @@ buildPythonPackage {
 
   disabled = pythonOlder "3.8";
 
-  nativeBuildInputs = [ cmake hatchling ];
+  nativeBuildInputs = [
+    cmake
+    hatchling
+  ];
   buildInputs = [ xgboost ];
-  propagatedBuildInputs = [ numpy scipy ];
+  propagatedBuildInputs = [
+    numpy
+    scipy
+  ];
 
   # Override existing logic for locating libxgboost.so which is not appropriate for Nix
-  prePatch = let
-    libPath = "${xgboost}/lib/libxgboost${stdenv.hostPlatform.extensions.sharedLibrary}";
-  in ''
-    echo 'find_lib_path = lambda: ["${libPath}"]' > python-package/xgboost/libpath.py
-  '';
+  prePatch =
+    let
+      libPath = "${xgboost}/lib/libxgboost${stdenv.hostPlatform.extensions.sharedLibrary}";
+    in
+    ''
+      echo 'find_lib_path = lambda: ["${libPath}"]' > python-package/xgboost/libpath.py
+    '';
 
   dontUseCmakeConfigure = true;
 
@@ -38,9 +46,7 @@ buildPythonPackage {
   # and are extremely cpu intensive anyway
   doCheck = false;
 
-  pythonImportsCheck = [
-    "xgboost"
-  ];
+  pythonImportsCheck = [ "xgboost" ];
 
   __darwinAllowLocalNetworking = true;
 }
diff --git a/pkgs/development/python-modules/xhtml2pdf/default.nix b/pkgs/development/python-modules/xhtml2pdf/default.nix
index f223e63c7f0ec..eeb1b6ce33738 100644
--- a/pkgs/development/python-modules/xhtml2pdf/default.nix
+++ b/pkgs/development/python-modules/xhtml2pdf/default.nix
@@ -1,20 +1,20 @@
-{ lib
-, arabic-reshaper
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch2
-, html5lib
-, pillow
-, pyhanko
-, pyhanko-certvalidator
-, pypdf
-, pytestCheckHook
-, python-bidi
-, pythonOlder
-, pythonRelaxDepsHook
-, reportlab
-, setuptools
-, svglib
+{
+  lib,
+  arabic-reshaper,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  html5lib,
+  pillow,
+  pyhanko,
+  pyhanko-certvalidator,
+  pypdf,
+  pytestCheckHook,
+  python-bidi,
+  pythonOlder,
+  reportlab,
+  setuptools,
+  svglib,
 }:
 
 buildPythonPackage rec {
@@ -41,13 +41,10 @@ buildPythonPackage rec {
   ];
 
   nativeBuildInputs = [
-    pythonRelaxDepsHook
     setuptools
   ];
 
-  pythonRelaxDeps = [
-    "reportlab"
-  ];
+  pythonRelaxDeps = [ "reportlab" ];
 
   propagatedBuildInputs = [
     arabic-reshaper
@@ -61,9 +58,7 @@ buildPythonPackage rec {
     svglib
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Tests requires network access
@@ -77,11 +72,11 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A PDF generator using HTML and CSS";
+    description = "PDF generator using HTML and CSS";
     homepage = "https://github.com/xhtml2pdf/xhtml2pdf";
     changelog = "https://github.com/xhtml2pdf/xhtml2pdf/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
     mainProgram = "xhtml2pdf";
   };
 }
diff --git a/pkgs/development/python-modules/xiaomi-ble/default.nix b/pkgs/development/python-modules/xiaomi-ble/default.nix
index 221346d2c76aa..a053c5313997b 100644
--- a/pkgs/development/python-modules/xiaomi-ble/default.nix
+++ b/pkgs/development/python-modules/xiaomi-ble/default.nix
@@ -1,23 +1,23 @@
-{ lib
-, bleak
-, bleak-retry-connector
-, bluetooth-data-tools
-, bluetooth-sensor-state-data
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, home-assistant-bluetooth
-, poetry-core
-, pycryptodomex
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, sensor-state-data
+{
+  lib,
+  bleak,
+  bleak-retry-connector,
+  bluetooth-data-tools,
+  bluetooth-sensor-state-data,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  home-assistant-bluetooth,
+  poetry-core,
+  pycryptodomex,
+  pytestCheckHook,
+  pythonOlder,
+  sensor-state-data,
 }:
 
 buildPythonPackage rec {
   pname = "xiaomi-ble";
-  version = "0.28.0";
+  version = "0.32.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "Bluetooth-Devices";
     repo = "xiaomi-ble";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Va/fzGDjBR/h1lUN47AixZnDYzEPNXQKTVXILKayhBc=";
+    hash = "sha256-dZJsB40BMPo0tOFq0vLILrwfezf5dnspFK/aZWOV4uc=";
   };
 
   postPatch = ''
@@ -34,14 +34,10 @@ buildPythonPackage rec {
       --replace-fail " --cov=xiaomi_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  build-system = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
 
-  pythonRelaxDeps = [
-    "pycryptodomex"
-  ];
+
+  pythonRelaxDeps = [ "pycryptodomex" ];
 
   dependencies = [
     bleak
@@ -54,13 +50,9 @@ buildPythonPackage rec {
     sensor-state-data
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "xiaomi_ble"
-  ];
+  pythonImportsCheck = [ "xiaomi_ble" ];
 
   meta = with lib; {
     description = "Library for Xiaomi BLE devices";
diff --git a/pkgs/development/python-modules/xkbcommon/default.nix b/pkgs/development/python-modules/xkbcommon/default.nix
index 4e1ef0ea0ef78..5d5ce94309598 100644
--- a/pkgs/development/python-modules/xkbcommon/default.nix
+++ b/pkgs/development/python-modules/xkbcommon/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, cffi
-, pkg-config
-, libxkbcommon
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  cffi,
+  pkg-config,
+  libxkbcommon,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "xkbcommon";
-  version = "1.0";
+  version = "1.5.1";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-NTEafcAU/PU1/2n3pb3m8dbZptI9j9nnmVG4iFqHHe8=";
+    hash = "sha256-rBdICNv2HTXZ2oBL8zuqx0vG8r4MEIWUrpPHnNFd3DY=";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/pkgs/development/python-modules/xkcdpass/default.nix b/pkgs/development/python-modules/xkcdpass/default.nix
index 121af2bca29a2..709a26328ac4c 100644
--- a/pkgs/development/python-modules/xkcdpass/default.nix
+++ b/pkgs/development/python-modules/xkcdpass/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, installShellFiles
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  installShellFiles,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,21 +21,13 @@ buildPythonPackage rec {
     hash = "sha256-qU+HG9qHBmjlxl64QpbpOWADYt8swDa5HFyjgVvSktc=";
   };
 
-  nativeBuildInputs = [
-    installShellFiles
-  ];
+  nativeBuildInputs = [ installShellFiles ];
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "xkcdpass"
-  ];
+  pythonImportsCheck = [ "xkcdpass" ];
 
   disabledTests = lib.optionals (pythonAtLeast "3.10") [
     # https://github.com/redacted/XKCD-password-generator/issues/138
diff --git a/pkgs/development/python-modules/xknx/default.nix b/pkgs/development/python-modules/xknx/default.nix
index dc3e1adb1707f..89323aa8d7208 100644
--- a/pkgs/development/python-modules/xknx/default.nix
+++ b/pkgs/development/python-modules/xknx/default.nix
@@ -1,18 +1,20 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, cryptography
-, ifaddr
-, pytest-asyncio_0_21
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  cryptography,
+  ifaddr,
+  freezegun,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "xknx";
-  version = "2.12.2";
+  version = "3.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,32 +23,23 @@ buildPythonPackage rec {
     owner = "XKNX";
     repo = "xknx";
     rev = "refs/tags/${version}";
-    hash = "sha256-gajxXIR3lmHsW7258v4z20RilzGfm5KGVrXZwRm74Mk=";
+    hash = "sha256-hgCmzWncHTsvfVeU/ePpu59THtmuLlqeCO11/L4BRvM=";
   };
 
-  patches = [
-    ./pytest-asyncio-0.22-compat.patch
-  ];
-
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cryptography
     ifaddr
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    async-timeout
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ async-timeout ];
 
   nativeCheckInputs = [
-    pytest-asyncio_0_21
+    freezegun
+    pytest-asyncio
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "xknx"
-  ];
+  pythonImportsCheck = [ "xknx" ];
 
   disabledTests = [
     # Test requires network access
diff --git a/pkgs/development/python-modules/xknx/pytest-asyncio-0.22-compat.patch b/pkgs/development/python-modules/xknx/pytest-asyncio-0.22-compat.patch
deleted file mode 100644
index 2688ceb1fdd62..0000000000000
--- a/pkgs/development/python-modules/xknx/pytest-asyncio-0.22-compat.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff --git a/test/devices_tests/datetime_test.py b/test/devices_tests/datetime_test.py
-index af06abc6..2145fcc1 100644
---- a/test/devices_tests/datetime_test.py
-+++ b/test/devices_tests/datetime_test.py
-@@ -12,11 +12,6 @@ from xknx.telegram.apci import GroupValueRead, GroupValueResponse, GroupValueWri
- class TestDateTime:
-     """Test class for DateTime object."""
- 
--    # pylint: disable=attribute-defined-outside-init
--    def teardown_method(self):
--        """Cancel broadcast_task."""
--        self.datetime.__del__()
--
-     #
-     # SET Time
-     #
-diff --git a/test/io_tests/secure_session_test.py b/test/io_tests/secure_session_test.py
-index cd2dc1d0..ca90e2d9 100644
---- a/test/io_tests/secure_session_test.py
-+++ b/test/io_tests/secure_session_test.py
-@@ -65,7 +65,6 @@ class TestSecureSession:
- 
-     def teardown_method(self):
-         """Cancel keepalive task."""
--        self.session.stop()
-         self.patch_serial_number.stop()
-         self.patch_message_tag.stop()
- 
diff --git a/pkgs/development/python-modules/xlib/default.nix b/pkgs/development/python-modules/xlib/default.nix
index 92a9c5e402639..fb5685de6adf1 100644
--- a/pkgs/development/python-modules/xlib/default.nix
+++ b/pkgs/development/python-modules/xlib/default.nix
@@ -1,20 +1,23 @@
-{ lib, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, six
-, setuptools-scm
-, xorg
-, python
-, mock
-, nose
-, pytestCheckHook
-, util-linux
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  six,
+  setuptools,
+  setuptools-scm,
+  xorg,
+  mock,
+  pytestCheckHook,
+  util-linux,
 }:
 
 buildPythonPackage rec {
   pname = "xlib";
   version = "0.33";
-  format = "setuptools";
+  pyproject = true;
+
+  build-system = [ setuptools ];
 
   src = fetchFromGitHub {
     owner = "python-xlib";
@@ -23,27 +26,20 @@ buildPythonPackage rec {
     hash = "sha256-u06OWlMIOUzHOVS4hvm72jGgTSXWUqMvEQd8bTpFog0=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
-  buildInputs = [
-    xorg.libX11
-  ];
+  buildInputs = [ xorg.libX11 ];
 
-  propagatedBuildInputs = [
-    six
-  ];
+  propagatedBuildInputs = [ six ];
 
-  doCheck = !stdenv.isDarwin;
+  doCheck = !stdenv.hostPlatform.isDarwin;
 
   nativeCheckInputs = [
     pytestCheckHook
     mock
-    nose
     util-linux
     xorg.xauth
-    xorg.xorgserver
+    xorg.xvfb
   ];
 
   disabledTestPaths = [
@@ -56,7 +52,6 @@ buildPythonPackage rec {
     description = "Fully functional X client library for Python programs";
     homepage = "https://github.com/python-xlib/python-xlib";
     license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/xlrd/default.nix b/pkgs/development/python-modules/xlrd/default.nix
index ce17ca1502ad0..d5a98d170ab52 100644
--- a/pkgs/development/python-modules/xlrd/default.nix
+++ b/pkgs/development/python-modules/xlrd/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     sha256 = "f72f148f54442c6b056bf931dbc34f986fd0c3b0b6b5a58d013c9aef274d0c88";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # No tests in archive
   doCheck = false;
@@ -27,5 +26,4 @@ buildPythonPackage rec {
     mainProgram = "runxlrd.py";
     license = licenses.bsd0;
   };
-
 }
diff --git a/pkgs/development/python-modules/xlsx2csv/default.nix b/pkgs/development/python-modules/xlsx2csv/default.nix
index 5d4b37342f6ff..5748b788e1a4f 100644
--- a/pkgs/development/python-modules/xlsx2csv/default.nix
+++ b/pkgs/development/python-modules/xlsx2csv/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, setuptools-scm
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  setuptools-scm,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "xlsx2csv";
-  version = "0.8.2";
+  version = "0.8.3";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-zdJyyC+LMvHO52rq74ey7jVJZh/d+Q9+zyMQlnoW/IQ=";
+    hash = "sha256-bGXVmJ6NPxTdcpbUJdaTpn9RiZ0Mjh7XvL+cyxgiNzQ=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/xlsxwriter/default.nix b/pkgs/development/python-modules/xlsxwriter/default.nix
index 115993e756bcf..919849730f8e5 100644
--- a/pkgs/development/python-modules/xlsxwriter/default.nix
+++ b/pkgs/development/python-modules/xlsxwriter/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -20,17 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-HLSIKoGBSzU7N/lskVeVbfdOezTloMrwAahJbcnqJrw=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "xlsxwriter"
-  ];
+  pythonImportsCheck = [ "xlsxwriter" ];
 
   meta = with lib; {
     description = "Module for creating Excel XLSX files";
diff --git a/pkgs/development/python-modules/xlwt/default.nix b/pkgs/development/python-modules/xlwt/default.nix
index f1e3a2565b6de..008566a6b2dd2 100644
--- a/pkgs/development/python-modules/xlwt/default.nix
+++ b/pkgs/development/python-modules/xlwt/default.nix
@@ -1,27 +1,41 @@
-{ buildPythonPackage
-, fetchPypi
-, nose
-, lib
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  six,
 }:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "xlwt";
-  version = "1.3.0";
-  format = "setuptools";
+  version = "1.3.0-unstable-2018-09-16";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "c59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88";
+  src = fetchFromGitHub {
+    owner = "python-excel";
+    repo = "xlwt";
+    # Use last commit before archival
+    rev = "5a222d0315b6d3ce52a3cedd7c3e41309587c107";
+    hash = "sha256-YKbqdimX1q+d7A9BSwuKl3SndQ+0eocz+m6xMAZeMQQ=";
   };
 
-  nativeCheckInputs = [ nose ];
-  checkPhase = ''
-    nosetests -v
-  '';
+  build-system = [ setuptools ];
+
+  dependencies = [ six ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "xlwt" ];
 
   meta = {
     description = "Library to create spreadsheet files compatible with MS";
     homepage = "https://github.com/python-excel/xlwt";
-    license = with lib.licenses; [ bsdOriginal bsd3 lgpl21 ];
+    license = with lib.licenses; [
+      bsdOriginal
+      bsd3
+      lgpl21Plus
+    ];
+    maintainers = with lib.maintainers; [ pyrox0 ];
   };
 }
diff --git a/pkgs/development/python-modules/xmind/default.nix b/pkgs/development/python-modules/xmind/default.nix
index ab12f26a72df4..cd1510b263c58 100644
--- a/pkgs/development/python-modules/xmind/default.nix
+++ b/pkgs/development/python-modules/xmind/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
   # Projec thas no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "xmind"
-  ];
+  pythonImportsCheck = [ "xmind" ];
 
   meta = with lib; {
     description = "Python module to create mindmaps";
diff --git a/pkgs/development/python-modules/xml-marshaller/default.nix b/pkgs/development/python-modules/xml-marshaller/default.nix
index 43e08cae24265..c56cd4e8130df 100644
--- a/pkgs/development/python-modules/xml-marshaller/default.nix
+++ b/pkgs/development/python-modules/xml-marshaller/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
-, lxml
-, six
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  lxml,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -16,12 +17,15 @@ buildPythonPackage rec {
     hash = "sha256-QvBALLDD8o5nZQ5Z4bembhadK6jcydWKQpJaSmGqqJM=";
   };
 
-  propagatedBuildInputs = [ lxml six ];
+  propagatedBuildInputs = [
+    lxml
+    six
+  ];
 
   pythonImportsCheck = [ "xml_marshaller" ];
 
   meta = with lib; {
-    description = "This module allows one to marshal simple Python data types into a custom XML format.";
+    description = "This module allows one to marshal simple Python data types into a custom XML format";
     homepage = "https://www.python.org/community/sigs/current/xml-sig/";
     license = licenses.psfl;
     maintainers = with maintainers; [ mazurel ];
diff --git a/pkgs/development/python-modules/xml2rfc/default.nix b/pkgs/development/python-modules/xml2rfc/default.nix
index 7ab5192b6a04a..db7c59df4c1c3 100644
--- a/pkgs/development/python-modules/xml2rfc/default.nix
+++ b/pkgs/development/python-modules/xml2rfc/default.nix
@@ -1,33 +1,33 @@
-{ lib
-, appdirs
-, buildPythonPackage
-, configargparse
-, decorator
-, dict2xml
-, fetchFromGitHub
-, google-i18n-address
-, html5lib
-, intervaltree
-, jinja2
-, lxml
-, markupsafe
-, platformdirs
-, pycairo
-, pycountry
-, pyflakes
-, pypdf2
-, pytestCheckHook
-, python-fontconfig
-, pythonOlder
-, pyyaml
-, requests
-, six
-, wcwidth
+{
+  lib,
+  appdirs,
+  buildPythonPackage,
+  configargparse,
+  decorator,
+  dict2xml,
+  fetchFromGitHub,
+  google-i18n-address,
+  html5lib,
+  intervaltree,
+  jinja2,
+  lxml,
+  markupsafe,
+  platformdirs,
+  pycairo,
+  pycountry,
+  pyflakes,
+  pypdf2,
+  pytestCheckHook,
+  python-fontconfig,
+  pythonOlder,
+  pyyaml,
+  requests,
+  wcwidth,
 }:
 
 buildPythonPackage rec {
   pname = "xml2rfc";
-  version = "3.21.0";
+  version = "3.23.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -36,15 +36,13 @@ buildPythonPackage rec {
     owner = "ietf-tools";
     repo = "xml2rfc";
     rev = "refs/tags/v${version}";
-    hash = "sha256-7lYNEyoLYbxn1ld08eXaN8BumYhN9EftpHQKxdu64MY=";
+    hash = "sha256-8AtQxLOOgEKhkbza9YwXrZVh/++UeJq8n8a7VwIzHSc=";
   };
 
   postPatch = ''
     substituteInPlace Makefile \
-      --replace "SHELL := /bin/bash" "SHELL := bash" \
-      --replace "test flaketest" "test"
-    substituteInPlace setup.py \
-      --replace "'tox'," ""
+      --replace-fail "SHELL := /bin/bash" "SHELL := bash" \
+      --replace-fail "test flaketest" "test"
   '';
 
   propagatedBuildInputs = [
@@ -63,7 +61,6 @@ buildPythonPackage rec {
     pypdf2
     pyyaml
     requests
-    six
     wcwidth
   ];
 
@@ -74,16 +71,14 @@ buildPythonPackage rec {
     python-fontconfig
   ];
 
-   # Requires Noto Serif and Roboto Mono font
+  # Requires Noto Serif and Roboto Mono font
   doCheck = false;
 
   checkPhase = ''
     make tests-no-network
   '';
 
-  pythonImportsCheck = [
-    "xml2rfc"
-  ];
+  pythonImportsCheck = [ "xml2rfc" ];
 
   meta = with lib; {
     description = "Tool generating IETF RFCs and drafts from XML sources";
@@ -93,6 +88,9 @@ buildPythonPackage rec {
     # Well, parts might be considered unfree, if being strict; see:
     # http://metadata.ftp-master.debian.org/changelogs/non-free/x/xml2rfc/xml2rfc_2.9.6-1_copyright
     license = licenses.bsd3;
-    maintainers = with maintainers; [ vcunat yrashk ];
+    maintainers = with maintainers; [
+      vcunat
+      yrashk
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/xmldiff/default.nix b/pkgs/development/python-modules/xmldiff/default.nix
index 6356b9bff3526..6bf2fd9607d66 100644
--- a/pkgs/development/python-modules/xmldiff/default.nix
+++ b/pkgs/development/python-modules/xmldiff/default.nix
@@ -1,36 +1,35 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, lxml
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  lxml,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "xmldiff";
-  version = "2.6.3";
-  format = "setuptools";
+  version = "2.7.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-GbAws/o30fC1xa2a2pBZiEw78sdRxd2PHrTtSc/j/GA=";
+    hash = "sha256-wJELH4ADZt1+xikj5dBuiwahvZEgVpocJ/TyRGucaKI=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     lxml
     setuptools
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "xmldiff"
-  ];
+  pythonImportsCheck = [ "xmldiff" ];
 
   meta = with lib; {
     description = "Creates diffs of XML files";
diff --git a/pkgs/development/python-modules/xmljson/default.nix b/pkgs/development/python-modules/xmljson/default.nix
index 441a0e571dc2a..3f1e37c9a38e6 100644
--- a/pkgs/development/python-modules/xmljson/default.nix
+++ b/pkgs/development/python-modules/xmljson/default.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
-, lxml
+{
+  buildPythonPackage,
+  fetchPypi,
+  lib,
+  lxml,
 }:
 
 buildPythonPackage rec {
@@ -14,9 +15,7 @@ buildPythonPackage rec {
     sha256 = "b4158e66aa1e62ee39f7f80eb2fe4f767670ba3c0d5de9804420dc53427fdec8";
   };
 
-  nativeCheckInputs = [
-    lxml
-  ];
+  nativeCheckInputs = [ lxml ];
 
   meta = with lib; {
     description = "Converts XML into dictionary structures and vice-versa";
diff --git a/pkgs/development/python-modules/xmlschema/default.nix b/pkgs/development/python-modules/xmlschema/default.nix
index 61bdd691368fd..660f520c246bb 100644
--- a/pkgs/development/python-modules/xmlschema/default.nix
+++ b/pkgs/development/python-modules/xmlschema/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "xmlschema";
-  version = "3.3.1";
+  version = "3.4.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "sissaschool";
     repo = "xmlschema";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Sy70OQvKx0H8vxRFTEkg+QV9eVij5C9dlAwJ2HTFOi8=";
+    hash = "sha256-0x8nk8F+kg5SSDQI4dOnv67ilyN4z2MZ5phPC3PW4WQ=";
   };
 
   build-system = [ setuptools ];
@@ -34,6 +34,12 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  disabledTests = [
+    # Incorrect error message in pickling test for Python 3.12 in Debian
+    # https://github.com/sissaschool/xmlschema/issues/412
+    "test_pickling_subclassed_schema__issue_263"
+  ];
+
   pythonImportsCheck = [ "xmlschema" ];
 
   meta = with lib; {
@@ -41,6 +47,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/sissaschool/xmlschema";
     changelog = "https://github.com/sissaschool/xmlschema/blob/${src.rev}/CHANGELOG.rst";
     license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/xmlsec/default.nix b/pkgs/development/python-modules/xmlsec/default.nix
index 94af405e8f640..229fa81713716 100644
--- a/pkgs/development/python-modules/xmlsec/default.nix
+++ b/pkgs/development/python-modules/xmlsec/default.nix
@@ -1,35 +1,48 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pytestCheckHook
-, libxslt
-, libxml2
-, libtool
-, pkg-config
-, xmlsec
-, pkgconfig
-, setuptools-scm
-, lxml
-, hypothesis
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pytestCheckHook,
+  libxslt,
+  libxml2,
+  libtool,
+  pkg-config,
+  xmlsec,
+  pkgconfig,
+  setuptools-scm,
+  lxml,
+  hypothesis,
 }:
 
 buildPythonPackage rec {
   pname = "xmlsec";
-  version = "1.3.13";
+  version = "1.3.14";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-kW9deOgEH2zZORq7plnajJSk/vcZbRJtQK8f9Bfyz4Y=";
+    hash = "sha256-k0+ATy+JW824bx6u4ja2YQE1YO5p7BCNKc3W5fKSotk=";
   };
 
-  nativeBuildInputs = [ pkg-config pkgconfig setuptools-scm ];
+  nativeBuildInputs = [
+    pkg-config
+    pkgconfig
+    setuptools-scm
+  ];
 
-  buildInputs = [ xmlsec libxslt libxml2 libtool ];
+  buildInputs = [
+    xmlsec
+    libxslt
+    libxml2
+    libtool
+  ];
 
   propagatedBuildInputs = [ lxml ];
 
-  nativeCheckInputs = [ pytestCheckHook hypothesis ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    hypothesis
+  ];
 
   disabledTestPaths = [
     # Full git clone required for test_doc_examples
diff --git a/pkgs/development/python-modules/xmltodict/default.nix b/pkgs/development/python-modules/xmltodict/default.nix
index bd4e2cbb0f2d6..0000eea5f4058 100644
--- a/pkgs/development/python-modules/xmltodict/default.nix
+++ b/pkgs/development/python-modules/xmltodict/default.nix
@@ -1,24 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "xmltodict";
   version = "0.13.0";
   format = "setuptools";
-  disabled = pythonOlder "3.4";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-NBWVpIjj4BqFqdiRHYkS/ZIu3l/sxNzkN+tLbI0DflY=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "xmltodict" ];
 
@@ -26,6 +23,6 @@ buildPythonPackage rec {
     description = "Makes working with XML feel like you are working with JSON";
     homepage = "https://github.com/martinblech/xmltodict";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/xmod/default.nix b/pkgs/development/python-modules/xmod/default.nix
index d5ba4bf1a3224..34b197579c3eb 100644
--- a/pkgs/development/python-modules/xmod/default.nix
+++ b/pkgs/development/python-modules/xmod/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,27 +18,19 @@ buildPythonPackage rec {
     hash = "sha256-pfFxtDQ4kaBrx4XzYMQO1vE4dUr2zs8jgGUQUdXB798=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = [
-    "test_partial_function"
-  ];
+  disabledTests = [ "test_partial_function" ];
 
-  pythonImportsCheck = [
-    "xmod"
-  ];
+  pythonImportsCheck = [ "xmod" ];
 
   meta = with lib; {
     description = "Turn any object into a module";
     homepage = "https://github.com/rec/xmod";
     changelog = "https://github.com/rec/xmod/blob/${src.rev}/CHANGELOG";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/xmodem/default.nix b/pkgs/development/python-modules/xmodem/default.nix
index ea4396d28f30e..44e30abe4ff30 100644
--- a/pkgs/development/python-modules/xmodem/default.nix
+++ b/pkgs/development/python-modules/xmodem/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pytest, which, lrzsz }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest,
+  which,
+  lrzsz,
+}:
 
 buildPythonPackage rec {
   pname = "xmodem";
@@ -12,7 +19,11 @@ buildPythonPackage rec {
     sha256 = "sha256-kwPA/lYiv6IJSKGRuH13tBofZwp19vebwQniHK7A/i8=";
   };
 
-  nativeCheckInputs = [ pytest which lrzsz ];
+  nativeCheckInputs = [
+    pytest
+    which
+    lrzsz
+  ];
 
   checkPhase = ''
     pytest
diff --git a/pkgs/development/python-modules/xmpppy/default.nix b/pkgs/development/python-modules/xmpppy/default.nix
new file mode 100644
index 0000000000000..648508d354140
--- /dev/null
+++ b/pkgs/development/python-modules/xmpppy/default.nix
@@ -0,0 +1,35 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gitUpdater,
+  six,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "xmpppy";
+  version = "0.7.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "xmpppy";
+    repo = "xmpppy";
+    rev = "refs/tags/${version}";
+    hash = "sha256-SnzIjEWSCdiCtD8bmPTH02JprmZhrABB4HCqtt2RBuk=";
+  };
+
+  dependencies = [ six ];
+
+  build-system = [ setuptools ];
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Python 2/3 implementation of XMPP";
+    homepage = "https://github.com/xmpppy/xmpppy";
+    changelog = "https://github.com/xmpppy/xmpppy/blob/${version}/CHANGES.rst";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ jopejoe1 ];
+  };
+}
diff --git a/pkgs/development/python-modules/xnatpy/default.nix b/pkgs/development/python-modules/xnatpy/default.nix
index 4738f137d427d..bd378229c9d32 100644
--- a/pkgs/development/python-modules/xnatpy/default.nix
+++ b/pkgs/development/python-modules/xnatpy/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, click
-, isodate
-, progressbar2
-, pydicom
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  click,
+  isodate,
+  progressbar2,
+  pydicom,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -40,8 +41,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://xnat.readthedocs.io";
-    description =
-      "A new XNAT client (distinct from pyxnat) that exposes XNAT objects/functions as Python objects/functions";
+    description = "New XNAT client (distinct from pyxnat) that exposes XNAT objects/functions as Python objects/functions";
     changelog = "https://gitlab.com/radiology/infrastructure/xnatpy/-/blob/${version}/CHANGELOG?ref_type=tags";
     license = licenses.asl20;
     maintainers = with maintainers; [ bcdarwin ];
diff --git a/pkgs/development/python-modules/xnd/default.nix b/pkgs/development/python-modules/xnd/default.nix
index 93c2c928f86b6..8317f30e462b4 100644
--- a/pkgs/development/python-modules/xnd/default.nix
+++ b/pkgs/development/python-modules/xnd/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, stdenv
-, fetchpatch
-, buildPythonPackage
-, python
-, ndtypes
-, libndtypes
-, libxnd
-, isPy27
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  python,
+  ndtypes,
+  libndtypes,
+  libxnd,
+  isPy27,
 }:
 
 buildPythonPackage {
@@ -19,15 +19,6 @@ buildPythonPackage {
 
   buildInputs = [ libndtypes ];
 
-  patches = [
-    # python311 fixes which are on main. remove on update
-    (fetchpatch {
-      name = "python311.patch";
-      url = "https://github.com/xnd-project/xnd/commit/e1a06d9f6175f4f4e1da369b7e907ad6b2952c00.patch";
-      hash = "sha256-xzrap+FL5be13bVdsJ3zeV7t57ZC4iyhuZhuLsOzHyE=";
-    })
-  ];
-
   postPatch = ''
     substituteInPlace setup.py \
       --replace 'include_dirs = ["libxnd", "ndtypes/python/ndtypes"] + INCLUDES' \
@@ -38,12 +29,14 @@ buildPythonPackage {
                 'runtime_library_dirs = ["${libndtypes}/lib", "${libxnd}/lib"]' \
   '';
 
-  postInstall = ''
-    mkdir $out/include
-    cp python/xnd/*.h $out/include
-  '' + lib.optionalString stdenv.isDarwin ''
-    install_name_tool -add_rpath ${libxnd}/lib $out/${python.sitePackages}/xnd/_xnd.*.so
-  '';
+  postInstall =
+    ''
+      mkdir $out/include
+      cp python/xnd/*.h $out/include
+    ''
+    + lib.optionalString stdenv.hostPlatform.isDarwin ''
+      install_name_tool -add_rpath ${libxnd}/lib $out/${python.sitePackages}/xnd/_xnd.*.so
+    '';
 
   checkPhase = ''
     pushd python
diff --git a/pkgs/development/python-modules/xpath-expressions/default.nix b/pkgs/development/python-modules/xpath-expressions/default.nix
index 97e5e62b01aaf..56d514db4055c 100644
--- a/pkgs/development/python-modules/xpath-expressions/default.nix
+++ b/pkgs/development/python-modules/xpath-expressions/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, lxml
-, poetry-core
-, pythonOlder
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  lxml,
+  poetry-core,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   nativeCheckInputs = [
     lxml
diff --git a/pkgs/development/python-modules/xpybutil/default.nix b/pkgs/development/python-modules/xpybutil/default.nix
index 4a3f7681ed582..631cf33a77c27 100644
--- a/pkgs/development/python-modules/xpybutil/default.nix
+++ b/pkgs/development/python-modules/xpybutil/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchFromGitHub, xcffib, pillow }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  xcffib,
+  pillow,
+}:
 
 buildPythonPackage rec {
   pname = "xpybutil";
@@ -14,20 +20,21 @@ buildPythonPackage rec {
   };
 
   # pillow is a dependency in image.py which is not listed in setup.py
-  propagatedBuildInputs = [ pillow xcffib ];
+  propagatedBuildInputs = [
+    pillow
+    xcffib
+  ];
 
   propagatedNativeBuildInputs = [ xcffib ];
 
   # no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "xpybutil"
-  ];
+  pythonImportsCheck = [ "xpybutil" ];
 
   meta = with lib; {
     homepage = "https://github.com/BurntSushi/xpybutil";
-    description = "An incomplete xcb-util port plus some extras";
+    description = "Incomplete xcb-util port plus some extras";
     license = licenses.wtfpl;
     maintainers = with maintainers; [ artturin ];
   };
diff --git a/pkgs/development/python-modules/xrootd/default.nix b/pkgs/development/python-modules/xrootd/default.nix
index d17a56e2f914a..33b42f9f0f350 100644
--- a/pkgs/development/python-modules/xrootd/default.nix
+++ b/pkgs/development/python-modules/xrootd/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, cmake
-, setuptools
-, wheel
-, xrootd
+{
+  lib,
+  buildPythonPackage,
+  cmake,
+  setuptools,
+  wheel,
+  xrootd,
 }:
 
 buildPythonPackage rec {
@@ -20,9 +21,7 @@ buildPythonPackage rec {
     wheel
   ];
 
-  buildInputs = [
-    xrootd
-  ];
+  buildInputs = [ xrootd ];
 
   dontUseCmakeConfigure = true;
 
@@ -32,7 +31,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "The XRootD central repository";
+    description = "XRootD central repository";
     homepage = "https://github.com/xrootd/xrootd";
     changelog = "https://github.com/xrootd/xrootd/releases/tag/v${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/development/python-modules/xsdata/default.nix b/pkgs/development/python-modules/xsdata/default.nix
index b57fff4a94f03..387eefcd14bfd 100644
--- a/pkgs/development/python-modules/xsdata/default.nix
+++ b/pkgs/development/python-modules/xsdata/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, substituteAll
-, ruff
-, click
-, click-default-group
-, docformatter
-, jinja2
-, toposort
-, typing-extensions
-, lxml
-, requests
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  substituteAll,
+  ruff,
+  click,
+  click-default-group,
+  docformatter,
+  jinja2,
+  toposort,
+  typing-extensions,
+  lxml,
+  requests,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "xsdata";
-  version = "24.2.1";
+  version = "24.9";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -27,7 +28,7 @@ buildPythonPackage rec {
     owner = "tefra";
     repo = "xsdata";
     rev = "refs/tags/v${version}";
-    hash = "sha256-o3G0isXShwNHaOiA4TNml0IhStB3X4jB9CgrVKViBlY=";
+    hash = "sha256-wQSrdAS4E6AmpP+pKviFomLrcSHLROhTWHg/hYGTaeQ=";
   };
 
   patches = [
@@ -39,16 +40,12 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "--benchmark-skip" ""
+      --replace-fail "--benchmark-skip" ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    typing-extensions
-  ];
+  dependencies = [ typing-extensions ];
 
   passthru.optional-dependencies = {
     cli = [
@@ -58,23 +55,17 @@ buildPythonPackage rec {
       jinja2
       toposort
     ];
-    lxml = [
-      lxml
-    ];
-    soap = [
-      requests
-    ];
+    lxml = [ lxml ];
+    soap = [ requests ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.cli
+  nativeCheckInputs =
+    [ pytestCheckHook ]
+    ++ passthru.optional-dependencies.cli
     ++ passthru.optional-dependencies.lxml
     ++ passthru.optional-dependencies.soap;
 
-  disabledTestPaths = [
-    "tests/integration/benchmarks"
-  ];
+  disabledTestPaths = [ "tests/integration/benchmarks" ];
 
   pythonImportsCheck = [
     "xsdata.formats.dataclass.context"
diff --git a/pkgs/development/python-modules/xsdata/paths.patch b/pkgs/development/python-modules/xsdata/paths.patch
index aad5223713228..162936d4df1a1 100644
--- a/pkgs/development/python-modules/xsdata/paths.patch
+++ b/pkgs/development/python-modules/xsdata/paths.patch
@@ -1,13 +1,21 @@
-diff --git a/xsdata/codegen/writer.py b/xsdata/codegen/writer.py
-index 0301631f..3185c526 100644
---- a/xsdata/codegen/writer.py
-+++ b/xsdata/codegen/writer.py
-@@ -73,7 +73,7 @@ class CodeWriter:
-         """Run ruff format on the src code."""
+diff --git a/xsdata/formats/dataclass/generator.py b/xsdata/formats/dataclass/generator.py
+index 1c155836..43506818 100644
+--- a/xsdata/formats/dataclass/generator.py
++++ b/xsdata/formats/dataclass/generator.py
+@@ -240,14 +240,14 @@ class DataclassGenerator(AbstractGenerator):
+         """
          commands = [
              [
 -                "ruff",
 +                "@ruff@",
                  "format",
-                 "--stdin-filename",
-                 str(file_path),
+                 "--line-length",
+                 str(self.config.output.max_line_length),
+                 *file_paths,
+             ],
+             [
+-                "ruff",
++                "@ruff@",
+                 "check",
+                 "--line-length",
+                 str(self.config.output.max_line_length),
diff --git a/pkgs/development/python-modules/xstatic-asciinema-player/default.nix b/pkgs/development/python-modules/xstatic-asciinema-player/default.nix
index 7651ce57c10d2..4427858a8157f 100644
--- a/pkgs/development/python-modules/xstatic-asciinema-player/default.nix
+++ b/pkgs/development/python-modules/xstatic-asciinema-player/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -10,7 +11,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "XStatic-asciinema-player";
     inherit version;
-    sha256 = "sha256-yA6WC067St82Dm6StaCKdWrRBhmNemswetIO8iodfcw=";
+    hash = "sha256-yA6WC067St82Dm6StaCKdWrRBhmNemswetIO8iodfcw=";
   };
 
   # no tests implemented
diff --git a/pkgs/development/python-modules/xstatic-bootbox/default.nix b/pkgs/development/python-modules/xstatic-bootbox/default.nix
index 49c0f7d783fb1..419e051889303 100644
--- a/pkgs/development/python-modules/xstatic-bootbox/default.nix
+++ b/pkgs/development/python-modules/xstatic-bootbox/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -16,11 +17,10 @@ buildPythonPackage rec {
   # no tests implemented
   doCheck = false;
 
-  meta = with lib;{
+  meta = with lib; {
     homepage = "http://bootboxjs.com";
     description = "Bootboxjs packaged static files for python";
     license = licenses.mit;
     maintainers = with maintainers; [ makefu ];
   };
-
 }
diff --git a/pkgs/development/python-modules/xstatic-bootstrap/default.nix b/pkgs/development/python-modules/xstatic-bootstrap/default.nix
index 808957f70d149..55e1f68761a00 100644
--- a/pkgs/development/python-modules/xstatic-bootstrap/default.nix
+++ b/pkgs/development/python-modules/xstatic-bootstrap/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -16,11 +17,10 @@ buildPythonPackage rec {
   # no tests implemented
   doCheck = false;
 
-  meta = with lib;{
+  meta = with lib; {
     homepage = "https://getbootstrap.com";
     description = "Bootstrap packaged static files for python";
     license = licenses.mit;
     maintainers = with maintainers; [ makefu ];
   };
-
 }
diff --git a/pkgs/development/python-modules/xstatic-font-awesome/default.nix b/pkgs/development/python-modules/xstatic-font-awesome/default.nix
index 07bce6f3c4c0b..7f8d70372a3d4 100644
--- a/pkgs/development/python-modules/xstatic-font-awesome/default.nix
+++ b/pkgs/development/python-modules/xstatic-font-awesome/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -10,7 +11,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "XStatic-Font-Awesome";
     inherit version;
-    sha256 = "sha256-8HWHEJYShjjy4VOQINgid1TD2IXdaOfubemgEjUHaCg=";
+    hash = "sha256-8HWHEJYShjjy4VOQINgid1TD2IXdaOfubemgEjUHaCg=";
   };
 
   # no tests implemented
diff --git a/pkgs/development/python-modules/xstatic-jquery-file-upload/default.nix b/pkgs/development/python-modules/xstatic-jquery-file-upload/default.nix
index 29ab4f1cb062d..cb5efd7aebb82 100644
--- a/pkgs/development/python-modules/xstatic-jquery-file-upload/default.nix
+++ b/pkgs/development/python-modules/xstatic-jquery-file-upload/default.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
-, xstatic-jquery
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+  xstatic-jquery,
 }:
 
 buildPythonPackage rec {
@@ -19,11 +20,10 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ xstatic-jquery ];
 
-  meta = with lib;{
-    homepage =  "https://plugins.jquery.com/project/jQuery-File-Upload";
+  meta = with lib; {
+    homepage = "https://plugins.jquery.com/project/jQuery-File-Upload";
     description = "jquery-file-upload packaged static files for python";
     license = licenses.mit;
     maintainers = with maintainers; [ makefu ];
   };
-
 }
diff --git a/pkgs/development/python-modules/xstatic-jquery-ui/default.nix b/pkgs/development/python-modules/xstatic-jquery-ui/default.nix
index 0f74a49f929c1..9af1d20c0cdb6 100644
--- a/pkgs/development/python-modules/xstatic-jquery-ui/default.nix
+++ b/pkgs/development/python-modules/xstatic-jquery-ui/default.nix
@@ -1,7 +1,8 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
-, xstatic-jquery
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
+  xstatic-jquery,
 }:
 
 buildPythonPackage rec {
@@ -19,11 +20,10 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ xstatic-jquery ];
 
-  meta = with lib;{
+  meta = with lib; {
     homepage = "https://jqueryui.com/";
     description = "jquery-ui packaged static files for python";
     license = licenses.mit;
     maintainers = with maintainers; [ makefu ];
   };
-
 }
diff --git a/pkgs/development/python-modules/xstatic-jquery/default.nix b/pkgs/development/python-modules/xstatic-jquery/default.nix
index bd48c889f3f05..2e3f4b9831a5b 100644
--- a/pkgs/development/python-modules/xstatic-jquery/default.nix
+++ b/pkgs/development/python-modules/xstatic-jquery/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -16,11 +17,10 @@ buildPythonPackage rec {
   # no tests implemented
   doCheck = false;
 
-  meta = with lib;{
-    homepage =  "https://jquery.org";
+  meta = with lib; {
+    homepage = "https://jquery.org";
     description = "jquery packaged static files for python";
     license = licenses.mit;
     maintainers = with maintainers; [ makefu ];
   };
-
 }
diff --git a/pkgs/development/python-modules/xstatic-pygments/default.nix b/pkgs/development/python-modules/xstatic-pygments/default.nix
index 6d8391dcb8aae..39c41f74ced71 100644
--- a/pkgs/development/python-modules/xstatic-pygments/default.nix
+++ b/pkgs/development/python-modules/xstatic-pygments/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -16,11 +17,10 @@ buildPythonPackage rec {
   # no tests implemented
   doCheck = false;
 
-  meta = with lib;{
+  meta = with lib; {
     homepage = "https://pygments.org";
     description = "pygments packaged static files for python";
     license = licenses.mit;
     maintainers = with maintainers; [ makefu ];
   };
-
 }
diff --git a/pkgs/development/python-modules/xstatic/default.nix b/pkgs/development/python-modules/xstatic/default.nix
index 593dd7e9dd9ec..fb7b2b1e90014 100644
--- a/pkgs/development/python-modules/xstatic/default.nix
+++ b/pkgs/development/python-modules/xstatic/default.nix
@@ -1,6 +1,7 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
+{
+  buildPythonPackage,
+  lib,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -10,17 +11,16 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "XStatic";
     inherit version;
-    sha256 = "sha256-QCVEzJ4XlIlEEFTwnIB4BOEV6iRpB96HwDVftPWjEmg=";
+    hash = "sha256-QCVEzJ4XlIlEEFTwnIB4BOEV6iRpB96HwDVftPWjEmg=";
   };
 
   # no tests implemented
   doCheck = false;
 
-  meta = with lib;{
+  meta = with lib; {
     homepage = "https://bitbucket.org/thomaswaldmann/xstatic";
     description = "Base packaged static files for python";
     license = licenses.mit;
     maintainers = with maintainers; [ makefu ];
   };
-
 }
diff --git a/pkgs/development/python-modules/xtensor-python/default.nix b/pkgs/development/python-modules/xtensor-python/default.nix
index 4b2123162cc16..14d063a802d6a 100644
--- a/pkgs/development/python-modules/xtensor-python/default.nix
+++ b/pkgs/development/python-modules/xtensor-python/default.nix
@@ -1,50 +1,49 @@
-{ lib
-, toPythonModule
-, stdenv
-, fetchFromGitHub
-, cmake
-, gtest
-, xtensor
-, pybind11
-, numpy
+{
+  lib,
+  toPythonModule,
+  stdenv,
+  fetchFromGitHub,
+  cmake,
+  gtest,
+  xtensor,
+  pybind11,
+  numpy,
 }:
 
-toPythonModule (stdenv.mkDerivation(finalAttrs: {
-  pname = "xtensor-python";
-  version = "0.26.1";
+toPythonModule (
+  stdenv.mkDerivation (finalAttrs: {
+    pname = "xtensor-python";
+    version = "0.27.0";
 
-  src = fetchFromGitHub {
-    owner = "xtensor-stack";
-    repo = "xtensor-python";
-    rev = finalAttrs.version;
-    sha256 = "sha256-kLFt5Ah5/ZO6wfTZQviVXeIAVok+/F/XCwpgPSagOMo=";
-  };
+    src = fetchFromGitHub {
+      owner = "xtensor-stack";
+      repo = "xtensor-python";
+      rev = finalAttrs.version;
+      hash = "sha256-Cy/aXuiriE/qxSd4Apipzak30DjgE7jX8ai1ThJ/VnE=";
+    };
 
-  nativeBuildInputs = [
-    cmake
-  ];
-  buildInputs = [
-    pybind11
-  ];
-  nativeCheckInputs = [
-    gtest
-  ];
-  doCheck = true;
-  cmakeFlags = [
-    "-DBUILD_TESTS=${if finalAttrs.finalPackage.doCheck then "ON" else "OFF"}"
-  ];
+    nativeBuildInputs = [ cmake ];
+    buildInputs = [ pybind11 ];
+    nativeCheckInputs = [ gtest ];
+    doCheck = true;
+    cmakeFlags = [
+      # Always build the tests, even if not running them, because testing whether
+      # they can be built is a test in itself.
+      "-DBUILD_TESTS=ON"
+    ];
 
-  propagatedBuildInputs = [
-    xtensor
-    numpy
-  ];
+    propagatedBuildInputs = [
+      xtensor
+      numpy
+    ];
 
-  checkTarget = "xtest";
+    checkTarget = "xtest";
 
-  meta = with lib; {
-    homepage = "https://github.com/xtensor-stack/xtensor-python";
-    description = "Python bindings for the xtensor C++ multi-dimensional array library";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ lsix ];
-  };
-}))
+    meta = with lib; {
+      homepage = "https://github.com/xtensor-stack/xtensor-python";
+      description = "Python bindings for the xtensor C++ multi-dimensional array library";
+      license = licenses.bsd3;
+      maintainers = with maintainers; [ lsix ];
+    };
+  })
+)
diff --git a/pkgs/development/python-modules/xvfbwrapper/default.nix b/pkgs/development/python-modules/xvfbwrapper/default.nix
index 6ace2506afd08..148a3de0371b6 100644
--- a/pkgs/development/python-modules/xvfbwrapper/default.nix
+++ b/pkgs/development/python-modules/xvfbwrapper/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, xorgserver
-, mock
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  xorg,
+  mock,
 }:
 
 buildPythonPackage rec {
@@ -14,7 +15,7 @@ buildPythonPackage rec {
     inherit pname version;
     sha256 = "097wxhvp01ikqpg1z3v8rqhss6f1vwr399zpz9a05d2135bsxx5w";
   };
-  propagatedBuildInputs = [ xorgserver ];
+  propagatedBuildInputs = [ xorg.xvfb ];
 
   # See: https://github.com/cgoldberg/xvfbwrapper/issues/30
   doCheck = false;
diff --git a/pkgs/development/python-modules/xxhash/default.nix b/pkgs/development/python-modules/xxhash/default.nix
index 6eb774677bfc8..3108d6f4ef5fc 100644
--- a/pkgs/development/python-modules/xxhash/default.nix
+++ b/pkgs/development/python-modules/xxhash/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-A3nWzx/5h81CFgmiZM4CXnTzRuPhRd0QbAzC4+w/mak=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  pythonImportsCheck = [
-    "xxhash"
-  ];
+  pythonImportsCheck = [ "xxhash" ];
 
   meta = with lib; {
     description = "Python Binding for xxHash";
diff --git a/pkgs/development/python-modules/xyzservices/default.nix b/pkgs/development/python-modules/xyzservices/default.nix
index 6e49ec04eaf33..8dc572ce04fed 100644
--- a/pkgs/development/python-modules/xyzservices/default.nix
+++ b/pkgs/development/python-modules/xyzservices/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mercantile
-, pytestCheckHook
-, requests
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mercantile,
+  pytestCheckHook,
+  requests,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "xyzservices";
-  version = "2024.4.0";
-  format = "pyproject";
+  version = "2024.9.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-agTxFIem+3fZKpiYTNEH+9kVf9XmX5Ka3Zw9bmBO6Iw=";
+    hash = "sha256-aPuDU8nbuk8f9sDy5eTllrueHbf5T099+8sm4lqmb94=";
   };
 
   nativeBuildInputs = [
@@ -23,14 +24,12 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
-  disabledTests = [
+  pytestFlagsArray = [
     # requires network connections
-    "test_free_providers"
+    "-m 'not request'"
   ];
 
-  pythonImportsCheck = [
-    "xyzservices.providers"
-  ];
+  pythonImportsCheck = [ "xyzservices.providers" ];
 
   nativeCheckInputs = [
     mercantile
@@ -38,11 +37,11 @@ buildPythonPackage rec {
     requests
   ];
 
-  meta = with lib; {
+  meta = {
     changelog = "https://github.com/geopandas/xyzservices/releases/tag/${version}";
     description = "Source of XYZ tiles providers";
     homepage = "https://github.com/geopandas/xyzservices";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    license = lib.licenses.bsd3;
+    maintainers = lib.teams.geospatial.members;
   };
 }
diff --git a/pkgs/development/python-modules/y-py/default.nix b/pkgs/development/python-modules/y-py/default.nix
index 97747ccfdf5b5..b01d8f5dcca3a 100644
--- a/pkgs/development/python-modules/y-py/default.nix
+++ b/pkgs/development/python-modules/y-py/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, rustPlatform
-, cargo
-, rustc
-, libiconv
-, pytestCheckHook
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  rustPlatform,
+  cargo,
+  rustc,
+  libiconv,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -33,13 +34,11 @@ buildPythonPackage rec {
     rustc
   ];
 
-  buildInputs = lib.optional stdenv.isDarwin libiconv;
+  buildInputs = lib.optional stdenv.hostPlatform.isDarwin libiconv;
 
   pythonImportsCheck = [ "y_py" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = {
     description = "Python bindings for Y-CRDT";
diff --git a/pkgs/development/python-modules/yacs/default.nix b/pkgs/development/python-modules/yacs/default.nix
index de2a27a937977..f3e15c5ce41ef 100644
--- a/pkgs/development/python-modules/yacs/default.nix
+++ b/pkgs/development/python-modules/yacs/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/yahooweather/default.nix b/pkgs/development/python-modules/yahooweather/default.nix
index 6f61645b9b22a..1b183d0e8acad 100644
--- a/pkgs/development/python-modules/yahooweather/default.nix
+++ b/pkgs/development/python-modules/yahooweather/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy3k,
+}:
 
 buildPythonPackage rec {
   pname = "yahooweather";
diff --git a/pkgs/development/python-modules/yalesmartalarmclient/default.nix b/pkgs/development/python-modules/yalesmartalarmclient/default.nix
index c621fa1138e67..7846303b562f9 100644
--- a/pkgs/development/python-modules/yalesmartalarmclient/default.nix
+++ b/pkgs/development/python-modules/yalesmartalarmclient/default.nix
@@ -1,40 +1,39 @@
-{ lib
-, backoff
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "yalesmartalarmclient";
-  version = "0.3.9";
-  format = "setuptools";
+  version = "0.4.3";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "domwillcode";
     repo = "yale-smart-alarm-client";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Zpj1lLaxiTaYpcj1R/ktuVldl/r19r7fzNKvnSIDq80=";
+    hash = "sha256-a0rzPEixJXLBfN+kJRPYiJiHY1BKxg/mM14RO3RiVdA=";
   };
 
-  propagatedBuildInputs = [
-    backoff
-    requests
-  ];
+  build-system = [ poetry-core ];
+
+  dependencies = [ requests ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "yalesmartalarmclient"
-  ];
+  pythonImportsCheck = [ "yalesmartalarmclient" ];
 
   meta = with lib; {
     description = "Python module to interface with Yale Smart Alarm Systems";
     homepage = "https://github.com/domwillcode/yale-smart-alarm-client";
+    changelog = "https://github.com/domwillcode/yale-smart-alarm-client/releases/tag/v${version}";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/yalexs-ble/default.nix b/pkgs/development/python-modules/yalexs-ble/default.nix
index 93a16ea29f9b0..a38ecebdffdc1 100644
--- a/pkgs/development/python-modules/yalexs-ble/default.nix
+++ b/pkgs/development/python-modules/yalexs-ble/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, async-interrupt
-, async-timeout
-, bleak
-, bleak-retry-connector
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, lru-dict
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  async-interrupt,
+  async-timeout,
+  bleak,
+  bleak-retry-connector,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  lru-dict,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "yalexs-ble";
-  version = "2.4.2";
+  version = "2.4.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.9";
@@ -24,12 +25,10 @@ buildPythonPackage rec {
     owner = "bdraco";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-A/4N3vmFuzg9vaPISs0P3KxRQZSquPpR1zYcYEePkTA=";
+    hash = "sha256-e+XTozOStGiYa4VBM/mQfcpYTapKe92OeZPuD5SwSIQ=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     async-interrupt
@@ -50,9 +49,7 @@ buildPythonPackage rec {
       --replace " --cov=yalexs_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  pythonImportsCheck = [
-    "yalexs_ble"
-  ];
+  pythonImportsCheck = [ "yalexs_ble" ];
 
   meta = with lib; {
     description = "Library for Yale BLE devices";
diff --git a/pkgs/development/python-modules/yalexs/default.nix b/pkgs/development/python-modules/yalexs/default.nix
index 0400906ea8832..7505c8e5449fd 100644
--- a/pkgs/development/python-modules/yalexs/default.nix
+++ b/pkgs/development/python-modules/yalexs/default.nix
@@ -7,19 +7,24 @@
   buildPythonPackage,
   ciso8601,
   fetchFromGitHub,
-  pubnub,
+  freenub,
+  poetry-core,
   pyjwt,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytest-freezegun,
   pytestCheckHook,
   python-dateutil,
+  python-socketio,
   pythonOlder,
-  requests,
   requests-mock,
-  setuptools,
+  requests,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "yalexs";
-  version = "3.0.1";
+  version = "8.7.1";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -28,33 +33,31 @@ buildPythonPackage rec {
     owner = "bdraco";
     repo = "yalexs";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+FdQQzQhKhIOEnOym2DNT9uQL2uAbfE8tUXUHIFFK2I=";
+    hash = "sha256-+1Ff0VttUm9cwrEWNiKQfBmYjrtA3AZxWVm/iU21XCE=";
   };
 
-  postPatch = ''
-    # Not used requirement
-    substituteInPlace setup.py \
-      --replace-fail '"vol",' ""
-  '';
+  build-system = [ poetry-core ];
 
-  build-system = [ setuptools ];
+  pythonRelaxDeps = [ "aiohttp" ];
 
   dependencies = [
     aiofiles
     aiohttp
     ciso8601
-    pubnub
+    freenub
     pyjwt
     python-dateutil
+    python-socketio
     requests
-  ];
-
-  # aiounittest is not supported on 3.12
-  doCheck = pythonOlder "3.12";
+    typing-extensions
+  ] ++ python-socketio.optional-dependencies.asyncio_client;
 
   nativeCheckInputs = [
     aioresponses
     aiounittest
+    pytest-asyncio
+    pytest-cov-stub
+    pytest-freezegun
     pytestCheckHook
     requests-mock
   ];
@@ -64,7 +67,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python API for Yale Access (formerly August) Smart Lock and Doorbell";
     homepage = "https://github.com/bdraco/yalexs";
-    changelog = "https://github.com/bdraco/yalexs/releases/tag/v${version}";
+    changelog = "https://github.com/bdraco/yalexs/blob/${src.rev}/CHANGELOG.md";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/yamale/default.nix b/pkgs/development/python-modules/yamale/default.nix
index b02cec6577cf3..87f27046f8aab 100644
--- a/pkgs/development/python-modules/yamale/default.nix
+++ b/pkgs/development/python-modules/yamale/default.nix
@@ -35,7 +35,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "yamale" ];
 
   meta = with lib; {
-    description = "A schema and validator for YAML";
+    description = "Schema and validator for YAML";
     homepage = "https://github.com/23andMe/Yamale";
     changelog = "https://github.com/23andMe/Yamale/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/yamlfix/default.nix b/pkgs/development/python-modules/yamlfix/default.nix
index ee3a15d11bd0e..b8747bc3f0fc8 100644
--- a/pkgs/development/python-modules/yamlfix/default.nix
+++ b/pkgs/development/python-modules/yamlfix/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, maison
-, pdm-backend
-, pytest-freezegun
-, pytest-xdist
-, pytest
-, pytestCheckHook
-, pythonOlder
-, ruyaml
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  maison,
+  pdm-backend,
+  pytest-freezegun,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  ruyaml,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -48,9 +48,7 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d)
   '';
 
-  pythonImportsCheck = [
-    "yamlfix"
-  ];
+  pythonImportsCheck = [ "yamlfix" ];
 
   pytestFlagsArray = [
     "-W"
diff --git a/pkgs/development/python-modules/yamllint/default.nix b/pkgs/development/python-modules/yamllint/default.nix
index 79687d6cf6214..b645cd8b56e65 100644
--- a/pkgs/development/python-modules/yamllint/default.nix
+++ b/pkgs/development/python-modules/yamllint/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pathspec
-, pytestCheckHook
-, pythonOlder
-, pyyaml
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pathspec,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -23,39 +24,37 @@ buildPythonPackage rec {
     hash = "sha256-+7Q2cPl4XElI2IfLAkteifFVTrGkj2IjZk7nPuc6eYM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     pyyaml
     pathspec
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  disabledTests = [
-    # test failure reported upstream: https://github.com/adrienverge/yamllint/issues/373
-    "test_find_files_recursively"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # locale tests are broken on BSDs; see https://github.com/adrienverge/yamllint/issues/307
-    "test_locale_accents"
-    "test_locale_case"
-    "test_run_with_locale"
-  ];
+  disabledTests =
+    [
+      # test failure reported upstream: https://github.com/adrienverge/yamllint/issues/373
+      "test_find_files_recursively"
+    ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      # locale tests are broken on BSDs; see https://github.com/adrienverge/yamllint/issues/307
+      "test_locale_accents"
+      "test_locale_case"
+      "test_run_with_locale"
+    ];
 
-  pythonImportsCheck = [
-    "yamllint"
-  ];
+  pythonImportsCheck = [ "yamllint" ];
 
   meta = with lib; {
-    description = "A linter for YAML files";
+    description = "Linter for YAML files";
     mainProgram = "yamllint";
     homepage = "https://github.com/adrienverge/yamllint";
     changelog = "https://github.com/adrienverge/yamllint/blob/v${version}/CHANGELOG.rst";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ jonringer mikefaille ];
+    maintainers = with maintainers; [
+      mikefaille
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/yamlloader/default.nix b/pkgs/development/python-modules/yamlloader/default.nix
index 69019ab75e06f..c84cfe202c25b 100644
--- a/pkgs/development/python-modules/yamlloader/default.nix
+++ b/pkgs/development/python-modules/yamlloader/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, pyyaml
-, hypothesis
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytest,
+  pyyaml,
+  hypothesis,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,9 +20,7 @@ buildPythonPackage rec {
     hash = "sha256-tv5A7PWvWW2EDpIGcO00dfmBNJK/blWyTyrUUMISurU=";
   };
 
-  propagatedBuildInputs = [
-    pyyaml
-  ];
+  propagatedBuildInputs = [ pyyaml ];
 
   nativeCheckInputs = [
     hypothesis
@@ -34,7 +33,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A case-insensitive list for Python";
+    description = "Case-insensitive list for Python";
     homepage = "https://github.com/Phynix/yamlloader";
     changelog = "https://github.com/Phynix/yamlloader/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/yamlordereddictloader/default.nix b/pkgs/development/python-modules/yamlordereddictloader/default.nix
index a862386b0fc8c..b1f4a0caa6522 100644
--- a/pkgs/development/python-modules/yamlordereddictloader/default.nix
+++ b/pkgs/development/python-modules/yamlordereddictloader/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -11,7 +12,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-Nq8vYhD8/12k/EwS4dgV+XPc60EETnleHwYRXWNLyhM=";
+    hash = "sha256-Nq8vYhD8/12k/EwS4dgV+XPc60EETnleHwYRXWNLyhM=";
   };
 
   propagatedBuildInputs = [ pyyaml ];
@@ -25,6 +26,6 @@ buildPythonPackage rec {
     description = "YAML loader and dump for PyYAML allowing to keep keys order";
     homepage = "https://github.com/fmenabe/python-yamlordereddictloader";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/yanc/default.nix b/pkgs/development/python-modules/yanc/default.nix
deleted file mode 100644
index 44ecf960c95ee..0000000000000
--- a/pkgs/development/python-modules/yanc/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib, buildPythonPackage, pythonOlder, fetchPypi, nose }:
-
-buildPythonPackage rec {
-  pname = "yanc";
-  version = "0.3.3";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0z35bkk9phs40lf5061k1plhjdl5fskm0dmdikrsqi1bjihnxp8w";
-  };
-
-  # Tests fail on Python>=3.5. See: https://github.com/0compute/yanc/issues/10
-  doCheck = pythonOlder "3.5";
-
-  nativeCheckInputs = [ nose ];
-
-  checkPhase = ''
-    nosetests .
-  '';
-
-  meta = with lib; {
-    description = "Yet another nose colorer";
-    homepage = "https://github.com/0compute/yanc";
-    license = licenses.gpl3;
-    maintainers = with maintainers; [ jluttine ];
-  };
-}
diff --git a/pkgs/development/python-modules/yangson/default.nix b/pkgs/development/python-modules/yangson/default.nix
index aea6481b6c1a3..3883e3fa54f4b 100644
--- a/pkgs/development/python-modules/yangson/default.nix
+++ b/pkgs/development/python-modules/yangson/default.nix
@@ -1,27 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, elementpath
-, pyyaml
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  elementpath,
+  pyyaml,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "yangson";
-  version = "1.5.2";
+  version = "1.5.6";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "CZ-NIC";
     repo = "yangson";
     rev = "refs/tags/${version}";
-    hash = "sha256-c/UWyfJdVz6wSluL1Ej9cSV3EpDUTkP0GTeHPYfAduE=";
+    hash = "sha256-/9MxCkcPGRNZkuwAAvlr7gtGcyxXtliski7bNtFhVBE=";
   };
 
-  build-system = [
-    poetry-core
+  build-system = [ poetry-core ];
+
+  pythonRelaxDeps = [
+    "setuptools"
   ];
 
   dependencies = [
@@ -30,13 +33,9 @@ buildPythonPackage rec {
     setuptools
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "yangson"
-  ];
+  pythonImportsCheck = [ "yangson" ];
 
   meta = with lib; {
     description = "Library for working with data modelled in YANG";
@@ -46,6 +45,6 @@ buildPythonPackage rec {
       gpl3Plus
       lgpl3Plus
     ];
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/yapf/default.nix b/pkgs/development/python-modules/yapf/default.nix
index 70f31fe5308b0..38e62c57eef81 100644
--- a/pkgs/development/python-modules/yapf/default.nix
+++ b/pkgs/development/python-modules/yapf/default.nix
@@ -1,17 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-
-# build-system
-, setuptools
-
-# dependencies
-, importlib-metadata
-, platformdirs
-, tomli
-
-# tests
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  importlib-metadata,
+  platformdirs,
+  tomli,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,27 +15,22 @@ buildPythonPackage rec {
   version = "0.40.2";
   pyproject = true;
 
+  disabled = pythonOlder "3.7";
+
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-TauKXtcTTibVfBZHx0g6+z8TaHi1eQYreGyboWuUY3s=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     importlib-metadata
     platformdirs
     tomli
   ];
 
-  # nose is unavailable on pypy
-  #doCheck = !isPyPy;
-
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = {
     changelog = "https://github.com/google/yapf/blob/v${version}/CHANGELOG.md";
@@ -66,6 +57,10 @@ buildPythonPackage rec {
       takes away some of the drudgery of maintaining your code.
     '';
     license = lib.licenses.asl20;
-    maintainers = with lib.maintainers; [ AndersonTorres siddharthist ];
+    mainProgram = "yapf";
+    maintainers = with lib.maintainers; [
+      AndersonTorres
+      siddharthist
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/yappi/default.nix b/pkgs/development/python-modules/yappi/default.nix
index 7160245e8ec0d..634914a18c307 100644
--- a/pkgs/development/python-modules/yappi/default.nix
+++ b/pkgs/development/python-modules/yappi/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, gevent
-, python
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gevent,
+  python,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -20,21 +21,15 @@ buildPythonPackage rec {
     hash = "sha256-zA4apOGyrbjBOxUKBARiKmmM9rSVFVGWsDpOaItOoLU=";
   };
 
-  patches = [
-    ./tests.patch
-  ];
+  patches = [ ./tests.patch ];
 
-  nativeCheckInputs = [
-    gevent
-  ];
+  nativeCheckInputs = [ gevent ];
 
   checkPhase = ''
     ${python.interpreter} run_tests.py
   '';
 
-  pythonImportsCheck = [
-    "yappi"
-  ];
+  pythonImportsCheck = [ "yappi" ];
 
   meta = with lib; {
     description = "Python profiler that supports multithreading and measuring CPU time";
diff --git a/pkgs/development/python-modules/yapsy/default.nix b/pkgs/development/python-modules/yapsy/default.nix
index 044ce2cf83186..256d421f918fe 100644
--- a/pkgs/development/python-modules/yapsy/default.nix
+++ b/pkgs/development/python-modules/yapsy/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
 }:
 
-buildPythonPackage {
+buildPythonPackage rec {
   pname = "yapsy";
   version = "1.12.2-unstable-2023-03-29";
   pyproject = true;
@@ -17,11 +18,9 @@ buildPythonPackage {
     hash = "sha256-QKZlUAhYMCCsT/jbEHb39ESZ2+2FZYnhJnc1PgsozBA=";
   };
 
-  sourceRoot = "source/package";
+  sourceRoot = "${src.name}/package";
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
diff --git a/pkgs/development/python-modules/yara-python/default.nix b/pkgs/development/python-modules/yara-python/default.nix
index c386e5a565117..fb894f05c22af 100644
--- a/pkgs/development/python-modules/yara-python/default.nix
+++ b/pkgs/development/python-modules/yara-python/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
-, pythonOlder
-, yara
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  pythonOlder,
+  yara,
 }:
 
 buildPythonPackage rec {
   pname = "yara-python";
-  version = "4.5.0";
+  version = "4.5.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -17,45 +18,34 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "VirusTotal";
     repo = "yara-python";
-    rev = "v${version}";
-    hash = "sha256-RcrzzJQdzn+BXEp5M3ziGL6qSgfUN3wJ3JxwgjzVeuk=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-P+OQljzp+ZwVOXAgJqK7GNrqBep40MyVtMKDtT4ZUr8=";
   };
 
   # undefined symbol: yr_finalize
   # https://github.com/VirusTotal/yara-python/issues/7
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "include_dirs=['yara/libyara/include', 'yara/libyara/', '.']" "libraries = ['yara']"
+      --replace-fail "include_dirs=['yara/libyara/include', 'yara/libyara/', '.']" "libraries = ['yara']"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  buildInputs = [
-    yara
-  ];
+  buildInputs = [ yara ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  setupPyBuildFlags = [
-    "--dynamic-linking"
-  ];
+  setupPyBuildFlags = [ "--dynamic-linking" ];
 
-  pytestFlagsArray = [
-    "tests.py"
-  ];
+  pytestFlagsArray = [ "tests.py" ];
 
-  pythonImportsCheck = [
-    "yara"
-  ];
+  pythonImportsCheck = [ "yara" ];
 
   meta = with lib; {
     description = "Python interface for YARA";
     homepage = "https://github.com/VirusTotal/yara-python";
-    license = with licenses; [ asl20 ];
+    changelog = "https://github.com/VirusTotal/yara-python/releases/tag/v${version}";
+    license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/yaramod/default.nix b/pkgs/development/python-modules/yaramod/default.nix
index 78920969bc958..78589108f7e0a 100644
--- a/pkgs/development/python-modules/yaramod/default.nix
+++ b/pkgs/development/python-modules/yaramod/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, cmake
-, fetchFromGitHub
-, pytestCheckHook
-, libxcrypt
-, pythonOlder
-, gtest
-, pybind11
-, nlohmann_json
+{
+  lib,
+  buildPythonPackage,
+  cmake,
+  fetchFromGitHub,
+  pytestCheckHook,
+  libxcrypt,
+  pythonOlder,
+  gtest,
+  pybind11,
+  nlohmann_json,
 }:
 
 let
@@ -18,61 +19,51 @@ let
     hash = "sha256-El4WA92t2O/L4wUqH6Xj8w+ANtb6liRwafDhqn8jxjQ=";
   };
 in
-  buildPythonPackage rec {
-    pname = "yaramod";
-    version = "3.21.0";
-    format = "setuptools";
+buildPythonPackage rec {
+  pname = "yaramod";
+  version = "3.23.0";
+  format = "setuptools";
 
-    disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.7";
 
-    src = fetchFromGitHub {
-      owner = "avast";
-      repo = pname;
-      rev = "refs/tags/v${version}";
-      hash = "sha256-YkMDoFwWPrDhAgDnPpNCU1NlnAPhwYQF/KFaRFn+juQ=";
-    };
+  src = fetchFromGitHub {
+    owner = "avast";
+    repo = pname;
+    rev = "refs/tags/v${version}";
+    hash = "sha256-TB0dnWA+5beyHAoYUjqocmw5uGFgo/h9eKDbuKbmfsw=";
+  };
 
-    postPatch = ''
-      rm -r deps/googletest deps/pog/ deps/pybind11/ deps/json/json.hpp
-      cp -r --no-preserve=all ${pog} deps/pog/
-      cp -r --no-preserve=all ${nlohmann_json.src}/single_include/nlohmann/json.hpp deps/json/
-      cp -r --no-preserve=all ${pybind11.src} deps/pybind11/
-      cp -r --no-preserve=all ${gtest.src} deps/googletest/
-    '';
+  postPatch = ''
+    rm -r deps/googletest deps/pog/ deps/pybind11/ deps/json/json.hpp
+    cp -r --no-preserve=all ${pog} deps/pog/
+    cp -r --no-preserve=all ${nlohmann_json.src}/single_include/nlohmann/json.hpp deps/json/
+    cp -r --no-preserve=all ${pybind11.src} deps/pybind11/
+    cp -r --no-preserve=all ${gtest.src} deps/googletest/
+  '';
 
-    dontUseCmakeConfigure = true;
+  dontUseCmakeConfigure = true;
 
-    buildInputs = [
-      libxcrypt
-    ];
+  buildInputs = [ libxcrypt ];
 
-    nativeBuildInputs = [
-      cmake
-      pog
-      gtest
-    ];
+  nativeBuildInputs = [
+    cmake
+    pog
+    gtest
+  ];
 
-    setupPyBuildFlags = [
-      "--with-unit-tests"
-    ];
+  setupPyBuildFlags = [ "--with-unit-tests" ];
 
-    checkInputs = [
-      pytestCheckHook
-    ];
+  checkInputs = [ pytestCheckHook ];
 
-    pytestFlagsArray = [
-      "tests/"
-    ];
+  pytestFlagsArray = [ "tests/" ];
 
-    pythonImportsCheck = [
-      "yaramod"
-    ];
+  pythonImportsCheck = [ "yaramod" ];
 
-    meta = with lib; {
-      description = "Parsing of YARA rules into AST and building new rulesets in C++";
-      homepage = "https://github.com/avast/yaramod";
-      changelog = "https://github.com/avast/yaramod/blob/v${version}/CHANGELOG.md";
-      license = licenses.mit;
-      maintainers = with maintainers; [ msm ];
-    };
-  }
+  meta = with lib; {
+    description = "Parsing of YARA rules into AST and building new rulesets in C++";
+    homepage = "https://github.com/avast/yaramod";
+    changelog = "https://github.com/avast/yaramod/blob/v${version}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ msm ];
+  };
+}
diff --git a/pkgs/development/python-modules/yarg/default.nix b/pkgs/development/python-modules/yarg/default.nix
index f6e08ecd05acb..e2a088c875b17 100644
--- a/pkgs/development/python-modules/yarg/default.nix
+++ b/pkgs/development/python-modules/yarg/default.nix
@@ -1,28 +1,44 @@
-{ lib, buildPythonPackage, fetchFromGitHub, requests, nose, mock }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  requests,
+  setuptools,
+  pytestCheckHook,
+}:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "yarg";
-  version = "0.1.9";
-  format = "setuptools";
+  version = "0.1.9-unstable-2022-02-06";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "kura";
-    repo = pname;
-    rev = version;
-    sha256 = "1isq02s404fp9whkm8w2kvb2ik1sz0r258iby0q532zw81lga0d0";
+    repo = "yarg";
+    # Latest commit to yarg, which is more up-to-date than the latest release.
+    rev = "46e2371906bde6e19116664d4841abab414c54fd";
+    hash = "sha256-N/NDc9GqqwqU9vD1BU6udthzewBMDji9Np/HKRffLxI=";
   };
 
-  propagatedBuildInputs = [ requests ];
+  patches = [
+    # Python 3.12 compatibility patch
+    (fetchpatch2 {
+      url = "https://github.com/kura/yarg/commit/8d5532e4da11ab0e9a4453658cf0591dcf80a616.patch?full_index=1";
+      hash = "sha256-2lbOzEfWTtoZYuRjCQJAFeYUsJoQhhEohflvYOwLXnI=";
+    })
+  ];
 
-  nativeCheckInputs = [ nose mock ];
-  checkPhase = ''
-    nosetests
-  '';
+  dependencies = [ requests ];
 
-  meta = with lib; {
-    description = "An easy to use PyPI client";
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  meta = {
+    description = "Easy to use PyPI client";
     homepage = "https://yarg.readthedocs.io";
-    license = licenses.mit;
-    maintainers = with maintainers; [ psyanticy ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ psyanticy ];
   };
 }
diff --git a/pkgs/development/python-modules/yargy/default.nix b/pkgs/development/python-modules/yargy/default.nix
index 73ba35f6c8b5d..b4350676665f1 100644
--- a/pkgs/development/python-modules/yargy/default.nix
+++ b/pkgs/development/python-modules/yargy/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pymorphy2
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pymorphy2,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/yark/default.nix b/pkgs/development/python-modules/yark/default.nix
index cdcd1ab08afd9..c1a0a6cc900f1 100644
--- a/pkgs/development/python-modules/yark/default.nix
+++ b/pkgs/development/python-modules/yark/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, click
-, colorama
-, fetchPypi
-, flask
-, poetry-core
-, progress
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
-, yt-dlp
+{
+  lib,
+  buildPythonPackage,
+  click,
+  colorama,
+  fetchPypi,
+  flask,
+  poetry-core,
+  progress,
+  pythonOlder,
+  requests,
+  yt-dlp,
 }:
 
 buildPythonPackage rec {
@@ -32,7 +32,6 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -47,9 +46,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "yark"
-  ];
+  pythonImportsCheck = [ "yark" ];
 
   meta = with lib; {
     description = "Module for YouTube archiving";
@@ -57,6 +54,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/Owez/yark";
     changelog = "https://github.com/Owez/yark/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/yarl/default.nix b/pkgs/development/python-modules/yarl/default.nix
index a0c75cd238567..0fd0f0ae68989 100644
--- a/pkgs/development/python-modules/yarl/default.nix
+++ b/pkgs/development/python-modules/yarl/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, cython
-, expandvars
-, setuptools
-, idna
-, multidict
-, typing-extensions
-, pytest-xdist
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  cython,
+  expandvars,
+  setuptools,
+  idna,
+  multidict,
+  typing-extensions,
+  pytest-xdist,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -38,9 +39,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     idna
     multidict
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    typing-extensions
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
   preCheck = ''
     # don't import yarl from ./ so the C extension is available
diff --git a/pkgs/development/python-modules/yasi/default.nix b/pkgs/development/python-modules/yasi/default.nix
index dbcbfe1a5378a..1c2fc835be579 100644
--- a/pkgs/development/python-modules/yasi/default.nix
+++ b/pkgs/development/python-modules/yasi/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, colorama
-, fetchFromGitHub
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  colorama,
+  fetchFromGitHub,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -18,17 +19,11 @@ buildPythonPackage rec {
     hash = "sha256-xKhVTmh/vrtBkatxtk8R4yqbGroH0I+xTKNYUpuikt4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    colorama
-  ];
+  propagatedBuildInputs = [ colorama ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   postPatch = ''
     substituteInPlace setup.py \
@@ -38,7 +33,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "yasi" ];
 
   meta = with lib; {
-    description = "A dialect-aware s-expression indenter written in Python and newLISP";
+    description = "Dialect-aware s-expression indenter written in Python and newLISP";
     mainProgram = "yasi";
     homepage = "https://github.com/nkmathew/yasi-sexp-indenter";
     changelog = "https://github.com/nkmathew/yasi-sexp-indenter/blob/${src.rev}/CHANGELOG.md";
diff --git a/pkgs/development/python-modules/yaspin/default.nix b/pkgs/development/python-modules/yaspin/default.nix
index 0235c06ab1496..e66d8fc3cd452 100644
--- a/pkgs/development/python-modules/yaspin/default.nix
+++ b/pkgs/development/python-modules/yaspin/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, termcolor
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  termcolor,
 }:
 
 buildPythonPackage rec {
@@ -22,13 +23,9 @@ buildPythonPackage rec {
     hash = "sha256-cYTCJyHZ9yNg6BfpZ+g3P0yMWFhYUxgYtlbANNgfohQ=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    termcolor
-  ];
+  propagatedBuildInputs = [ termcolor ];
 
   nativeCheckInputs = [
     pytest-xdist
@@ -40,9 +37,7 @@ buildPythonPackage rec {
     export FORCE_COLOR=1
   '';
 
-  pythonImportsCheck = [
-    "yaspin"
-  ];
+  pythonImportsCheck = [ "yaspin" ];
 
   meta = with lib; {
     description = "Yet Another Terminal Spinner";
diff --git a/pkgs/development/python-modules/yaswfp/default.nix b/pkgs/development/python-modules/yaswfp/default.nix
index 65542562df940..45be718071780 100644
--- a/pkgs/development/python-modules/yaswfp/default.nix
+++ b/pkgs/development/python-modules/yaswfp/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -16,9 +17,7 @@ buildPythonPackage rec {
     sha256 = "1dxdz89hlycy1rnn269fwl1f0qxgxqarkc0ivs2m77f8xba2qgj9";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "yaswfp" ];
 
diff --git a/pkgs/development/python-modules/yattag/default.nix b/pkgs/development/python-modules/yattag/default.nix
index c66f85cc1583a..bbf2a0605cc26 100644
--- a/pkgs/development/python-modules/yattag/default.nix
+++ b/pkgs/development/python-modules/yattag/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -16,14 +17,12 @@ buildPythonPackage rec {
     hash = "sha256-qtn1QL0i3FA+W1UGzEeFb6zwgapx/TX3JzcbY+HkAr8=";
   };
 
-  pythonImportsCheck = [
-    "yattag"
-  ];
+  pythonImportsCheck = [ "yattag" ];
 
   meta = with lib; {
     description = "Library to generate HTML or XML";
     homepage = "https://www.yattag.org/";
     license = licenses.lgpl21Only;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/ydata-profiling/default.nix b/pkgs/development/python-modules/ydata-profiling/default.nix
new file mode 100644
index 0000000000000..d9e88875777e7
--- /dev/null
+++ b/pkgs/development/python-modules/ydata-profiling/default.nix
@@ -0,0 +1,107 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, pytestCheckHook
+, dacite
+, htmlmin
+, imagehash
+, jinja2
+, matplotlib
+, multimethod
+, numba
+, numpy
+, pandas
+, phik
+, pyarrow
+, pydantic
+, pyyaml
+, requests
+, scipy
+, seaborn
+, statsmodels
+, tqdm
+, typeguard
+, visions
+, wordcloud
+}:
+
+buildPythonPackage rec {
+  pname = "ydata-profiling";
+  version = "4.10.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "ydataai";
+    repo = pname;
+    rev = "refs/tags/v${version}";
+    hash = "sha256-uB8E7qp1xohAdcIIt1T2DxwSu93XhJoI8/qn54fSvGY=";
+  };
+
+  preBuild = ''
+    echo ${version} > VERSION
+  '';
+
+  pythonRelaxDeps = [
+    "scipy"
+  ];
+
+  propagatedBuildInputs = [
+    dacite
+    htmlmin
+    imagehash
+    jinja2
+    matplotlib
+    multimethod
+    numba
+    numpy
+    pandas
+    phik
+    pydantic
+    pyyaml
+    requests
+    scipy
+    seaborn
+    statsmodels
+    tqdm
+    typeguard
+    visions
+    wordcloud
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pyarrow
+  ];
+  disabledTestPaths = [
+    # needs Spark:
+    "tests/backends/spark_backend"
+    # try to download data:
+    "tests/issues"
+    "tests/unit/test_console.py"
+    "tests/unit/test_dataset_schema.py"
+    "tests/unit/test_modular.py"
+  ];
+  disabledTests = [
+    # try to download data:
+    "test_decorator"
+    "test_example"
+    "test_load"
+    "test_urls"
+  ];
+
+  pythonImportsCheck = [
+    "ydata_profiling"
+  ];
+
+  meta = with lib; {
+    description = "Create HTML profiling reports from Pandas DataFrames";
+    homepage = "https://ydata-profiling.ydata.ai";
+    changelog = "https://github.com/ydataai/ydata-profiling/releases/tag/${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ bcdarwin ];
+    mainProgram = "ydata_profiling";
+  };
+}
diff --git a/pkgs/development/python-modules/ydiff/default.nix b/pkgs/development/python-modules/ydiff/default.nix
index 04f9be193aac1..e656721e855ce 100644
--- a/pkgs/development/python-modules/ydiff/default.nix
+++ b/pkgs/development/python-modules/ydiff/default.nix
@@ -1,15 +1,23 @@
-{ lib, buildPythonPackage, fetchPypi, docutils, pygments
-, gitMinimal, mercurial, subversion, patchutils, less
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pygments,
+  gitMinimal,
+  mercurial,
+  subversion,
+  patchutils,
+  less,
 }:
 
 buildPythonPackage rec {
   pname = "ydiff";
-  version = "1.2";
+  version = "1.3";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f5430577ecd30974d766ee9b8333e06dc76a947b4aae36d39612a0787865a121";
+    hash = "sha256-ii6EWI7zHT5SVwD6lksfmqth8MnEYoHgU0GlbgHc17g=";
   };
 
   patchPhase = ''
@@ -26,11 +34,11 @@ buildPythonPackage rec {
     patchShebangs tests/*.sh
   '';
 
-  nativeCheckInputs = [ docutils pygments ];
+  nativeCheckInputs = [ pygments ];
 
   checkPhase = ''
     runHook preCheck
-    make doc-check reg # We don't want the linter or coverage check.
+    make reg # We don't want the linter or coverage check.
     runHook postCheck
   '';
 
diff --git a/pkgs/development/python-modules/yeelight/default.nix b/pkgs/development/python-modules/yeelight/default.nix
index 12fb6ffccc728..cf9e8da676ec0 100644
--- a/pkgs/development/python-modules/yeelight/default.nix
+++ b/pkgs/development/python-modules/yeelight/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, fetchFromGitLab
-, flit-core
-, future
-, ifaddr
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitLab,
+  flit-core,
+  future,
+  ifaddr,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -28,21 +29,13 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     future
     ifaddr
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    async-timeout
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ async-timeout ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "yeelight/tests.py"
-  ];
+  pytestFlagsArray = [ "yeelight/tests.py" ];
 
-  pythonImportsCheck = [
-    "yeelight"
-  ];
+  pythonImportsCheck = [ "yeelight" ];
 
   meta = with lib; {
     description = "Python library for controlling YeeLight RGB bulbs";
diff --git a/pkgs/development/python-modules/yfinance/default.nix b/pkgs/development/python-modules/yfinance/default.nix
index bc270fbb8e65d..d9c3041c038ce 100644
--- a/pkgs/development/python-modules/yfinance/default.nix
+++ b/pkgs/development/python-modules/yfinance/default.nix
@@ -1,6 +1,5 @@
 {
   lib,
-  appdirs,
   beautifulsoup4,
   buildPythonPackage,
   cryptography,
@@ -12,14 +11,19 @@
   numpy,
   pandas,
   peewee,
+  platformdirs,
   pythonOlder,
+  pytz,
+  requests-cache,
+  requests-ratelimiter,
   requests,
+  scipy,
   setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "yfinance";
-  version = "0.2.38";
+  version = "0.2.43";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -28,13 +32,12 @@ buildPythonPackage rec {
     owner = "ranaroussi";
     repo = "yfinance";
     rev = "refs/tags/${version}";
-    hash = "sha256-ZGwtu2vLcE9pM73umhnFwSzjQnGjTOTtVF607ox7I6E=";
+    hash = "sha256-pHjOXxnANnqypcycqdIV8/6u/qVVNnRFAeL4xsHjk3w=";
   };
 
   build-system = [ setuptools ];
 
   dependencies = [
-    appdirs
     beautifulsoup4
     cryptography
     frozendict
@@ -44,9 +47,21 @@ buildPythonPackage rec {
     numpy
     pandas
     peewee
+    platformdirs
+    pytz
     requests
   ];
 
+  passthru.optional-dependencies = {
+    nospam = [
+      requests-cache
+      requests-ratelimiter
+    ];
+    repair = [
+      scipy
+    ];
+  };
+
   # Tests require internet access
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/yolink-api/default.nix b/pkgs/development/python-modules/yolink-api/default.nix
index c1b4703ea4d4a..97d37c7a79428 100644
--- a/pkgs/development/python-modules/yolink-api/default.nix
+++ b/pkgs/development/python-modules/yolink-api/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "yolink-api";
-  version = "0.4.3";
+  version = "0.4.7";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "YoSmart-Inc";
     repo = "yolink-api";
     rev = "refs/tags/v${version}";
-    hash = "sha256-cLuto2V5i3au1MRYYbgR2plw9YBpgIAxsG2fu4t37jk=";
+    hash = "sha256-VJqKORyAlTBIRsHaeUrLDuvVAU/EX/Zzh8u7xxmD2IE=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/youless-api/default.nix b/pkgs/development/python-modules/youless-api/default.nix
index ff10359238b40..d4be6d3a9b782 100644
--- a/pkgs/development/python-modules/youless-api/default.nix
+++ b/pkgs/development/python-modules/youless-api/default.nix
@@ -1,48 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchFromBitbucket
-, pythonOlder
-, certifi
-, chardet
-, idna
-, pynose
-, requests
-, urllib3
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "youless-api";
-  version = "1.0.1";
-  format = "setuptools";
+  version = "2.1.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
-  src = fetchFromBitbucket {
-    owner = "jongsoftdev";
+  src = fetchFromGitHub {
+    owner = "gjong";
     repo = "youless-python-bridge";
-    rev = version;
-    hash = "sha256-49/HmkGr87aDhr8GEtARpXvr2RcgmLdAqhvMLI5x+vQ=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-MvGLIhkBbcGThKeqtlzVZct2o9PBLwcAELmn5pW3R6I=";
   };
 
-  propagatedBuildInputs = [
-    certifi
-    chardet
-    idna
-    requests
-    urllib3
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pynose
-  ];
+  dependencies = [ requests ];
 
-  pythonImportsCheck = [
-    "youless_api"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "youless_api" ];
 
   meta = with lib; {
     description = "Python library for YouLess sensors";
-    homepage = "https://pypi.org/project/youless-api/";
+    homepage = "https://github.com/gjong/youless-python-bridge";
+    changelog = "https://github.com/gjong/youless-python-bridge/releases/tag/${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/youseedee/default.nix b/pkgs/development/python-modules/youseedee/default.nix
index 3e04540dc5770..a5f45c10cbb59 100644
--- a/pkgs/development/python-modules/youseedee/default.nix
+++ b/pkgs/development/python-modules/youseedee/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, substituteAll
-, filelock
-, requests
-, unicode-character-database
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  substituteAll,
+  filelock,
+  requests,
+  unicode-character-database,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/youtokentome/default.nix b/pkgs/development/python-modules/youtokentome/default.nix
index 0dfe0336c056b..0d6328f13a781 100644
--- a/pkgs/development/python-modules/youtokentome/default.nix
+++ b/pkgs/development/python-modules/youtokentome/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, click
-, cython
-, pytestCheckHook
-, pythonOlder
-, tabulate
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  click,
+  cython,
+  pythonOlder,
+  tabulate,
 }:
 
 buildPythonPackage rec {
@@ -33,9 +33,7 @@ buildPythonPackage rec {
     tabulate
   ];
 
-  pythonImportsCheck = [
-    "youtokentome"
-  ];
+  pythonImportsCheck = [ "youtokentome" ];
 
   meta = with lib; {
     description = "Unsupervised text tokenizer";
diff --git a/pkgs/development/python-modules/youtube-search-python/default.nix b/pkgs/development/python-modules/youtube-search-python/default.nix
index 60ec65467d618..344427e53e168 100644
--- a/pkgs/development/python-modules/youtube-search-python/default.nix
+++ b/pkgs/development/python-modules/youtube-search-python/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, httpx
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  httpx,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-RWjR12ns1+tLuDZfBO7G42TF9w7sezdl9UPa67E1/PU=";
   };
 
-  propagatedBuildInputs = [
-    httpx
-  ];
+  propagatedBuildInputs = [ httpx ];
 
-  pythonImportsCheck = [
-    "youtubesearchpython"
-  ];
+  pythonImportsCheck = [ "youtubesearchpython" ];
 
   # Project has no tests
   doCheck = false;
@@ -32,6 +29,6 @@ buildPythonPackage rec {
     description = "Search for YouTube videos, channels & playlists & get video information using link without YouTube Data API";
     homepage = "https://github.com/alexmercerind/youtube-search-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/youtube-search/default.nix b/pkgs/development/python-modules/youtube-search/default.nix
index 215b9516c6503..9b575729b34d5 100644
--- a/pkgs/development/python-modules/youtube-search/default.nix
+++ b/pkgs/development/python-modules/youtube-search/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -17,16 +18,12 @@ buildPythonPackage rec {
     hash = "sha256-V0mm2Adv2mVVfJE2fw+rCTYpDs3qRXyDHJ8/BZGKOqI=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # Tests require network connection
   doCheck = false;
 
-  pythonImportsCheck = [
-    "youtube_search"
-  ];
+  pythonImportsCheck = [ "youtube_search" ];
 
   meta = with lib; {
     description = "Tool for searching for youtube videos to avoid using their heavily rate-limited API";
diff --git a/pkgs/development/python-modules/youtube-transcript-api/default.nix b/pkgs/development/python-modules/youtube-transcript-api/default.nix
index 526f7e761135f..cd3fcea8540af 100644
--- a/pkgs/development/python-modules/youtube-transcript-api/default.nix
+++ b/pkgs/development/python-modules/youtube-transcript-api/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, mock
-, httpretty
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  requests,
+  mock,
+  httpretty,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-xCB1XhXRq4jxyfst/n2wXj2k4dERm+/bVUJwP8b70gQ=";
   };
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   nativeCheckInputs = [
     mock
@@ -32,9 +31,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "youtube_transcript_api"
-  ];
+  pythonImportsCheck = [ "youtube_transcript_api" ];
 
   meta = with lib; {
     description = "Python API which allows you to get the transcripts/subtitles for a given YouTube video";
diff --git a/pkgs/development/python-modules/youtubeaio/default.nix b/pkgs/development/python-modules/youtubeaio/default.nix
index 94056aca5bd39..82123108880f1 100644
--- a/pkgs/development/python-modules/youtubeaio/default.nix
+++ b/pkgs/development/python-modules/youtubeaio/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, poetry-core
-, aiohttp
-, pydantic
-, yarl
-, aresponses
-, pytest-asyncio
-, pytestCheckHook
-, syrupy
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  poetry-core,
+  aiohttp,
+  pydantic,
+  yarl,
+  aresponses,
+  pytest-asyncio,
+  pytestCheckHook,
+  syrupy,
 }:
 
 buildPythonPackage rec {
@@ -30,9 +31,7 @@ buildPythonPackage rec {
     sed -i "/^addopts/d" pyproject.toml
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     aiohttp
diff --git a/pkgs/development/python-modules/yowsup/default.nix b/pkgs/development/python-modules/yowsup/default.nix
index a88a296944a57..06612b9632304 100644
--- a/pkgs/development/python-modules/yowsup/default.nix
+++ b/pkgs/development/python-modules/yowsup/default.nix
@@ -1,21 +1,23 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, isPy3k
-, fetchFromGitHub
-, appdirs
-, consonance
-, protobuf
-, python-axolotl
-, six
-, pyasyncore
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  isPy3k,
+  fetchFromGitHub,
+  setuptools,
+  appdirs,
+  consonance,
+  protobuf,
+  python-axolotl,
+  six,
+  pyasyncore,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "yowsup";
   version = "3.3.0";
-  format = "setuptools";
+  pyproject = true;
 
   # The Python 2.x support of this package is incompatible with `six==1.11`:
   # https://github.com/tgalal/yowsup/issues/2416#issuecomment-365113486
@@ -28,32 +30,26 @@ buildPythonPackage rec {
     sha256 = "1pz0r1gif15lhzdsam8gg3jm6zsskiv2yiwlhaif5rl7lv3p0v7q";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "argparse" "" \
-      --replace "==" ">=" \
-  '';
+  pythonRelaxDeps = true;
+  pythonRemoveDeps = [ "argparse" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  dependencies = [
     appdirs
     consonance
     protobuf
     python-axolotl
     six
-  ]
-  ++ lib.optionals (!pythonOlder "3.12") [
-    pyasyncore
-  ];
+  ] ++ lib.optionals (!pythonOlder "3.12") [ pyasyncore ];
 
   meta = with lib; {
     homepage = "https://github.com/tgalal/yowsup";
-    description = "The python WhatsApp library";
+    description = "Python WhatsApp library";
     mainProgram = "yowsup-cli";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/yoyo-migrations/default.nix b/pkgs/development/python-modules/yoyo-migrations/default.nix
index 493d6a77b4c1d..f0688fdc1e74d 100644
--- a/pkgs/development/python-modules/yoyo-migrations/default.nix
+++ b/pkgs/development/python-modules/yoyo-migrations/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, importlib-metadata
-, setuptools
-, sqlparse
-, tabulate
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  importlib-metadata,
+  setuptools,
+  sqlparse,
+  tabulate,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/ypy-websocket/default.nix b/pkgs/development/python-modules/ypy-websocket/default.nix
index b1840800622f1..d50c231a574b6 100644
--- a/pkgs/development/python-modules/ypy-websocket/default.nix
+++ b/pkgs/development/python-modules/ypy-websocket/default.nix
@@ -1,16 +1,16 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, hatchling
-, aiosqlite
-, anyio
-, y-py
-, pytest-asyncio
-, pytestCheckHook
-, pythonRelaxDepsHook
-, uvicorn
-, websockets
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  hatchling,
+  aiosqlite,
+  anyio,
+  y-py,
+  pytest-asyncio,
+  pytestCheckHook,
+  uvicorn,
+  websockets,
 }:
 
 buildPythonPackage rec {
@@ -27,13 +27,10 @@ buildPythonPackage rec {
     hash = "sha256-48x+MUhev9dErC003XOP3oGKd5uOghlBFgcR8Nm/0xs=";
   };
 
-  pythonRelaxDeps = [
-    "aiofiles"
-  ];
+  pythonRelaxDeps = [ "aiofiles" ];
 
   nativeBuildInputs = [
     hatchling
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -42,9 +39,7 @@ buildPythonPackage rec {
     y-py
   ];
 
-  pythonImportsCheck = [
-    "ypy_websocket"
-  ];
+  pythonImportsCheck = [ "ypy_websocket" ];
 
   nativeCheckInputs = [
     pytest-asyncio
diff --git a/pkgs/development/python-modules/yq/default.nix b/pkgs/development/python-modules/yq/default.nix
index febf3aad2fd10..dfc1ae08903ec 100644
--- a/pkgs/development/python-modules/yq/default.nix
+++ b/pkgs/development/python-modules/yq/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, argcomplete
-, buildPythonPackage
-, fetchPypi
-, jq
-, pytestCheckHook
-, pyyaml
-, setuptools-scm
-, substituteAll
-, tomlkit
-, xmltodict
+{
+  lib,
+  argcomplete,
+  buildPythonPackage,
+  fetchPypi,
+  jq,
+  pytestCheckHook,
+  pyyaml,
+  setuptools-scm,
+  substituteAll,
+  tomlkit,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
@@ -28,9 +29,7 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     argcomplete
@@ -39,9 +38,7 @@ buildPythonPackage rec {
     xmltodict
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pytestFlagsArray = [ "test/test.py" ];
 
@@ -51,7 +48,10 @@ buildPythonPackage rec {
     description = "Command-line YAML/XML/TOML processor - jq wrapper for YAML, XML, TOML documents";
     homepage = "https://github.com/kislyuk/yq";
     license = licenses.asl20;
-    maintainers = with maintainers; [ womfoo SuperSandro2000 ];
+    maintainers = with maintainers; [
+      womfoo
+      SuperSandro2000
+    ];
     mainProgram = "yq";
   };
 }
diff --git a/pkgs/development/python-modules/yt-dlp-dearrow/default.nix b/pkgs/development/python-modules/yt-dlp-dearrow/default.nix
new file mode 100644
index 0000000000000..ae182ce79a47f
--- /dev/null
+++ b/pkgs/development/python-modules/yt-dlp-dearrow/default.nix
@@ -0,0 +1,32 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+}:
+
+buildPythonPackage {
+  pname = "yt-dlp-dearrow";
+  version = "2023.01.01-unstable-2024-01-13"; # setup.cfg
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "QuantumWarpCode";
+    repo = "yt-dlp-dearrow";
+    rev = "2e46eca7b2242d8c9765bf2d12f92270b694be64"; # no tags
+    hash = "sha256-Ubi1kn/1FqkuwnxToBuSsAfCYWiNCTl/EUD8eeG3MSY=";
+  };
+
+  build-system = [ setuptools ];
+
+  doCheck = false; # no tests
+
+  pythonImportsCheck = [ "yt_dlp_plugins" ];
+
+  meta = {
+    description = "Post-processor plugin to use DeArrow video titles in YT-DLP";
+    homepage = "https://github.com/QuantumWarpCode/yt-dlp-dearrow";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+  };
+}
diff --git a/pkgs/development/python-modules/yte/default.nix b/pkgs/development/python-modules/yte/default.nix
index 6b8bcfb95be1b..a269cdd69176b 100644
--- a/pkgs/development/python-modules/yte/default.nix
+++ b/pkgs/development/python-modules/yte/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, dpath
-, fetchFromGitHub
-, plac
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, pyyaml
+{
+  lib,
+  buildPythonPackage,
+  dpath,
+  fetchFromGitHub,
+  plac,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
 }:
 
 buildPythonPackage rec {
@@ -23,9 +24,7 @@ buildPythonPackage rec {
     hash = "sha256-Rm3EKxRZCdYErkyWK9+fF2W7C+v5/MXD/LkehmB6UNQ=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     dpath
@@ -33,17 +32,11 @@ buildPythonPackage rec {
     pyyaml
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "yte"
-  ];
+  pythonImportsCheck = [ "yte" ];
 
-  pytestFlagsArray = [
-    "tests.py"
-  ];
+  pytestFlagsArray = [ "tests.py" ];
 
   preCheck = ''
     # The CLI test need yte on the PATH
diff --git a/pkgs/development/python-modules/ytmusicapi/default.nix b/pkgs/development/python-modules/ytmusicapi/default.nix
index 3807380083616..da34c7442a283 100644
--- a/pkgs/development/python-modules/ytmusicapi/default.nix
+++ b/pkgs/development/python-modules/ytmusicapi/default.nix
@@ -1,47 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, requests
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  requests,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "ytmusicapi";
-  version = "1.6.0";
+  version = "1.8.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "sigma67";
     repo = "ytmusicapi";
     rev = "refs/tags/${version}";
-    hash = "sha256-DqTcdWVivE2R51qm3XQ7cDnD1a90AocmX9TG+M5reto=";
+    hash = "sha256-zjJ/Kkym4zHYYIlITgTas+q41vv9ow/f6AqfTd64iB8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  dependencies = [ requests ];
 
   doCheck = false; # requires network access
 
-  pythonImportsCheck = [
-    "ytmusicapi"
-  ];
+  pythonImportsCheck = [ "ytmusicapi" ];
 
   meta = with lib; {
     description = "Python API for YouTube Music";
-    mainProgram = "ytmusicapi";
     homepage = "https://github.com/sigma67/ytmusicapi";
     changelog = "https://github.com/sigma67/ytmusicapi/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
+    mainProgram = "ytmusicapi";
   };
 }
diff --git a/pkgs/development/python-modules/yubico-client/default.nix b/pkgs/development/python-modules/yubico-client/default.nix
index 3dec1966fdf52..c32239120ba7e 100644
--- a/pkgs/development/python-modules/yubico-client/default.nix
+++ b/pkgs/development/python-modules/yubico-client/default.nix
@@ -1,5 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi
-, requests }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+}:
 
 buildPythonPackage rec {
   pname = "yubico-client";
@@ -19,7 +23,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Verifying Yubico OTPs based on the validation protocol version 2.0";
     homepage = "https://github.com/Kami/python-yubico-client/";
-    maintainers= with maintainers; [ peterromfeldhk ];
+    maintainers = with maintainers; [ peterromfeldhk ];
     license = licenses.bsd3;
   };
 }
diff --git a/pkgs/development/python-modules/yubico/default.nix b/pkgs/development/python-modules/yubico/default.nix
index 441b313be4069..68da9e13b6c8d 100644
--- a/pkgs/development/python-modules/yubico/default.nix
+++ b/pkgs/development/python-modules/yubico/default.nix
@@ -1,4 +1,10 @@
-{ stdenv, lib, buildPythonPackage, fetchPypi, pytestCheckHook, pyusb }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pyusb,
+}:
 
 buildPythonPackage rec {
   pname = "python-yubico";
@@ -6,7 +12,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-2EZkJ6pZIqxdS36cZbaTEIQnz1N9ZT1oyyEsBxPo5vU=";
+    hash = "sha256-2EZkJ6pZIqxdS36cZbaTEIQnz1N9ZT1oyyEsBxPo5vU=";
   };
 
   propagatedBuildInputs = [ pyusb ];
@@ -20,8 +26,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python code to talk to YubiKeys";
-    homepage    = "https://github.com/Yubico/python-yubico";
-    license     = licenses.bsd2;
+    homepage = "https://github.com/Yubico/python-yubico";
+    license = licenses.bsd2;
     maintainers = with maintainers; [ s1341 ];
   };
 }
diff --git a/pkgs/development/python-modules/z3c-checkversions/default.nix b/pkgs/development/python-modules/z3c-checkversions/default.nix
index 9f6a7ed4258ea..400d225844516 100644
--- a/pkgs/development/python-modules/z3c-checkversions/default.nix
+++ b/pkgs/development/python-modules/z3c-checkversions/default.nix
@@ -1,10 +1,11 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, python
-, zc-buildout
-, zope-testrunner
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  pythonAtLeast,
+  zc-buildout,
+  zope-testrunner,
 }:
 
 buildPythonPackage rec {
@@ -12,6 +13,9 @@ buildPythonPackage rec {
   version = "2.1";
   format = "setuptools";
 
+  # distutils usage
+  disabled = pythonAtLeast "3.12";
+
   src = fetchPypi {
     inherit version;
     pname = "z3c.checkversions";
diff --git a/pkgs/development/python-modules/zadnegoale/default.nix b/pkgs/development/python-modules/zadnegoale/default.nix
index 64feef2724917..b93f86d569506 100644
--- a/pkgs/development/python-modules/zadnegoale/default.nix
+++ b/pkgs/development/python-modules/zadnegoale/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, fetchFromGitHub
-, dacite
-, orjson
-, pytest-asyncio
-, pytest-error-for-skips
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  dacite,
+  orjson,
+  pytest-asyncio,
+  pytest-error-for-skips,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -38,9 +39,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "zadnegoale"
-  ];
+  pythonImportsCheck = [ "zadnegoale" ];
 
   meta = with lib; {
     description = "Python wrapper for getting allergen concentration data from Żadnego Ale servers";
diff --git a/pkgs/development/python-modules/zamg/default.nix b/pkgs/development/python-modules/zamg/default.nix
index 770764dde09db..e057433c1789b 100644
--- a/pkgs/development/python-modules/zamg/default.nix
+++ b/pkgs/development/python-modules/zamg/default.nix
@@ -1,10 +1,10 @@
-{ lib
-, aiohttp
-, aresponses
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -26,20 +26,14 @@ buildPythonPackage rec {
       --replace " --cov" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    aiohttp
-  ];
+  propagatedBuildInputs = [ aiohttp ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "zamg"
-  ];
+  pythonImportsCheck = [ "zamg" ];
 
   meta = with lib; {
     description = "Library to read weather data from ZAMG Austria";
diff --git a/pkgs/development/python-modules/zarr/default.nix b/pkgs/development/python-modules/zarr/default.nix
index fcb57b3731ddc..131aef003b2dd 100644
--- a/pkgs/development/python-modules/zarr/default.nix
+++ b/pkgs/development/python-modules/zarr/default.nix
@@ -1,31 +1,30 @@
-{ lib
-, asciitree
-, buildPythonPackage
-, fasteners
-, fetchPypi
-, numcodecs
-, msgpack
-, numpy
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  asciitree,
+  buildPythonPackage,
+  fasteners,
+  fetchPypi,
+  numcodecs,
+  msgpack,
+  numpy,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "zarr";
-  version = "2.17.1";
+  version = "2.18.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Vks6oHISJUb+aaD6IXNvRmsg+tQXVDNLYmGfCIzkYmE=";
+    hash = "sha256-m7OTuKCjj7Eh27kTsEfXXbKN6YkPbWRKIXpzz0rnT0c=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  nativeBuildInputs = [ setuptools-scm ];
 
   propagatedBuildInputs = [
     asciitree
@@ -34,19 +33,15 @@ buildPythonPackage rec {
     numcodecs
   ] ++ numcodecs.optional-dependencies.msgpack;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "zarr"
-  ];
+  pythonImportsCheck = [ "zarr" ];
 
   meta = with lib; {
-    description = "An implementation of chunked, compressed, N-dimensional arrays for Python";
+    description = "Implementation of chunked, compressed, N-dimensional arrays for Python";
     homepage = "https://github.com/zarr-developers/zarr";
     changelog = "https://github.com/zarr-developers/zarr-python/releases/tag/v${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/zbaemon/default.nix b/pkgs/development/python-modules/zbaemon/default.nix
index 00f1c57abb038..ee859b099d943 100644
--- a/pkgs/development/python-modules/zbaemon/default.nix
+++ b/pkgs/development/python-modules/zbaemon/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, zconfig
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  zconfig,
 }:
 
 buildPythonPackage rec {
@@ -19,10 +20,9 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "A daemon process control library and tools for Unix-based systems";
+    description = "Daemon process control library and tools for Unix-based systems";
     homepage = "https://pypi.python.org/pypi/zdaemon";
     license = licenses.zpl20;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/zc-lockfile/default.nix b/pkgs/development/python-modules/zc-lockfile/default.nix
index 8b7818ef119bb..2d7c5dc0c87ef 100644
--- a/pkgs/development/python-modules/zc-lockfile/default.nix
+++ b/pkgs/development/python-modules/zc-lockfile/default.nix
@@ -1,8 +1,9 @@
-{ buildPythonPackage
-, fetchPypi
-, mock
-, zope-testing
-, lib
+{
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  zope-testing,
+  lib,
 }:
 
 buildPythonPackage rec {
@@ -20,8 +21,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Inter-process locks";
-    homepage =  "https://www.python.org/pypi/zc.lockfile";
+    homepage = "https://www.python.org/pypi/zc.lockfile";
     license = licenses.zpl20;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/zcbor/default.nix b/pkgs/development/python-modules/zcbor/default.nix
index 0ac5f5323b64a..7ff878f490d86 100644
--- a/pkgs/development/python-modules/zcbor/default.nix
+++ b/pkgs/development/python-modules/zcbor/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-
-# build dependencies
-, setuptools
-
-# dependencies
-, cbor2
-, pyyaml
-, regex
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+
+  # build dependencies
+  setuptools,
+
+  # dependencies
+  cbor2,
+  pyyaml,
+  regex,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-U3Y/r3tBhzK6bGnMxdqKzS7bLHyAzgpGZ5PVK9pw7Pk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     cbor2
@@ -34,7 +33,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "zcbor" ];
 
   meta = with lib; {
-    description = "A low footprint CBOR library in the C language (C++ compatible), tailored for use in microcontrollers";
+    description = "Low footprint CBOR library in the C language (C++ compatible), tailored for use in microcontrollers";
     mainProgram = "zcbor";
     homepage = "https://pypi.org/project/zcbor/";
     changelog = "https://github.com/NordicSemiconductor/zcbor/releases/tag/${version}";
diff --git a/pkgs/development/python-modules/zconfig/default.nix b/pkgs/development/python-modules/zconfig/default.nix
index 8947badb91bf0..d31124a9ac1e0 100644
--- a/pkgs/development/python-modules/zconfig/default.nix
+++ b/pkgs/development/python-modules/zconfig/default.nix
@@ -1,62 +1,54 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, docutils
-, fetchPypi
-, manuel
-, pygments
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, zope-testrunner
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  docutils,
+  fetchPypi,
+  manuel,
+  pygments,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  zope-testrunner,
 }:
 
 buildPythonPackage rec {
   pname = "zconfig";
-  version = "4.0";
+  version = "4.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    pname = "ZConfig";
-    inherit version;
-    hash = "sha256-+NZC+6a6mNCGMb4sH3GtGVfAUf70qj0/ufHgjcYdAVY=";
+    inherit pname version;
+    hash = "sha256-tqed2hV/NpjIdo0s7cJjIW6K8kDTz50JoCpkKREU6yA=";
   };
 
   patches = lib.optional stdenv.hostPlatform.isMusl ./remove-setlocale-test.patch;
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   buildInputs = [
     docutils
     manuel
   ];
 
-  propagatedBuildInputs = [
-    zope-testrunner
-  ];
+  propagatedBuildInputs = [ zope-testrunner ];
 
   nativeCheckInputs = [
     pygments
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "ZConfig"
-  ];
+  pythonImportsCheck = [ "ZConfig" ];
 
-  pytestFlagsArray = [
-    "-s"
-  ];
+  pytestFlagsArray = [ "-s" ];
 
   meta = with lib; {
     description = "Structured Configuration Library";
     homepage = "https://github.com/zopefoundation/ZConfig";
     changelog = "https://github.com/zopefoundation/ZConfig/blob/${version}/CHANGES.rst";
     license = licenses.zpl20;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/zcs/default.nix b/pkgs/development/python-modules/zcs/default.nix
index 89ee7a239098a..d6aaad9d8ab79 100644
--- a/pkgs/development/python-modules/zcs/default.nix
+++ b/pkgs/development/python-modules/zcs/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, yacs
-, boxx
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  python,
+  yacs,
+  boxx,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,21 +20,13 @@ buildPythonPackage rec {
     hash = "sha256-/QIyRQtxLDVW+vcQi5bL8rJ0o3+OhqGhQEALR1YO1pg=";
   };
 
-  patches = [
-    ./fix-test-yaml.patch
-  ];
+  patches = [ ./fix-test-yaml.patch ];
 
-  propagatedBuildInputs = [
-    yacs
-  ];
+  propagatedBuildInputs = [ yacs ];
 
-  pythonImportsCheck = [
-    "zcs"
-  ];
+  pythonImportsCheck = [ "zcs" ];
 
-  nativeCheckInputs = [
-    boxx
-  ];
+  nativeCheckInputs = [ boxx ];
 
   checkPhase = ''
     ${python.interpreter} test/test_zcs.py
diff --git a/pkgs/development/python-modules/zdaemon/default.nix b/pkgs/development/python-modules/zdaemon/default.nix
index 54c096b642574..794801284b346 100644
--- a/pkgs/development/python-modules/zdaemon/default.nix
+++ b/pkgs/development/python-modules/zdaemon/default.nix
@@ -1,39 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, zconfig
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  zconfig,
 }:
 
 buildPythonPackage rec {
   pname = "zdaemon";
-  version = "5.0";
+  version = "5.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ml7GxRmigLvPqPfnP04Q2AjnuCcQq2COD0Sb88BtQ9U=";
+    hash = "sha256-Iun+UFDq67ngPZrWTk9jzNheBMOP2zUc8RO+9vaNt6Q=";
   };
 
-  propagatedBuildInputs = [
-    zconfig
-  ];
+  propagatedBuildInputs = [ zconfig ];
 
   # too many deps..
   doCheck = false;
 
-  pythonImportsCheck = [
-    "zdaemon"
-  ];
+  pythonImportsCheck = [ "zdaemon" ];
 
   meta = with lib; {
-    description = "A daemon process control library and tools for Unix-based systems";
+    description = "Daemon process control library and tools for Unix-based systems";
     mainProgram = "zdaemon";
     homepage = "https://pypi.python.org/pypi/zdaemon";
     changelog = "https://github.com/zopefoundation/zdaemon/blob/${version}/CHANGES.rst";
     license = licenses.zpl21;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/zeep/default.nix b/pkgs/development/python-modules/zeep/default.nix
index 75e23838c0a4b..d5965d455f6ed 100644
--- a/pkgs/development/python-modules/zeep/default.nix
+++ b/pkgs/development/python-modules/zeep/default.nix
@@ -1,27 +1,28 @@
-{ lib
-, aiohttp
-, aioresponses
-, attrs
-, buildPythonPackage
-, defusedxml
-, fetchFromGitHub
-, freezegun
-, httpx
-, isodate
-, lxml
-, mock
-, platformdirs
-, pretend
-, pytest-asyncio
-, pytest-httpx
-, pytestCheckHook
-, pythonOlder
-, pytz
-, requests
-, requests-toolbelt
-, requests-file
-, requests-mock
-, xmlsec
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  attrs,
+  buildPythonPackage,
+  defusedxml,
+  fetchFromGitHub,
+  freezegun,
+  httpx,
+  isodate,
+  lxml,
+  mock,
+  platformdirs,
+  pretend,
+  pytest-asyncio,
+  pytest-httpx,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  requests,
+  requests-toolbelt,
+  requests-file,
+  requests-mock,
+  xmlsec,
 }:
 
 buildPythonPackage rec {
@@ -51,17 +52,11 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    async_require = [
-      httpx
-    ];
-    xmlsec_require = [
-      xmlsec
-    ];
+    async_require = [ httpx ];
+    xmlsec_require = [ xmlsec ];
   };
 
-  pythonImportsCheck = [
-    "zeep"
-  ];
+  pythonImportsCheck = [ "zeep" ];
 
   nativeCheckInputs = [
     aiohttp
@@ -73,8 +68,7 @@ buildPythonPackage rec {
     pytest-httpx
     pytestCheckHook
     requests-mock
-  ]
-  ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
   disabledTests = [
     # Failed: External connections not allowed during tests.
diff --git a/pkgs/development/python-modules/zephyr-python-api/default.nix b/pkgs/development/python-modules/zephyr-python-api/default.nix
index 8ff111b605faf..9c6b37486336a 100644
--- a/pkgs/development/python-modules/zephyr-python-api/default.nix
+++ b/pkgs/development/python-modules/zephyr-python-api/default.nix
@@ -1,25 +1,25 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "zephyr-python-api";
-  version = "0.0.4";
+  version = "0.1.0";
   format = "pyproject";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-GIXxpItbRH31PJ7dX48w92LrYY0axbZQoAFXrRGeLas=";
+    pname = "zephyr_python_api";
+    inherit version;
+    hash = "sha256-YupGiybfhwb+I4ofr6RNBzS6LQfx5BQD/SU5nYrnqFk=";
   };
 
   nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
   # No tests in archive
   doCheck = false;
@@ -28,7 +28,7 @@ buildPythonPackage rec {
 
   meta = {
     homepage = "https://github.com/nassauwinter/zephyr-python-api";
-    description = "A set of wrappers for Zephyr Scale (TM4J) REST API";
+    description = "Set of wrappers for Zephyr Scale (TM4J) REST API";
     license = lib.licenses.asl20;
     maintainers = with lib.maintainers; [ rapiteanu ];
   };
diff --git a/pkgs/development/python-modules/zeroc-ice/default.nix b/pkgs/development/python-modules/zeroc-ice/default.nix
index d68c90edd1616..7d6cc236f8f4c 100644
--- a/pkgs/development/python-modules/zeroc-ice/default.nix
+++ b/pkgs/development/python-modules/zeroc-ice/default.nix
@@ -1,25 +1,25 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, bzip2
-, openssl
+{
+  stdenv,
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  bzip2,
+  openssl,
 }:
 
 buildPythonPackage rec {
   pname = "zeroc-ice";
-  version = "3.7.10";
+  version = "3.7.10.1";
   pyproject = true;
 
   src = fetchPypi {
-    inherit version pname;
-    hash = "sha256-Bwn2Y/Bbu6O89iaSNWvMpXBhyJRmj6eL8j6HiPpbQbM=";
+    pname = "zeroc_ice";
+    inherit version;
+    hash = "sha256-sGOq/aNg33EfdpRVKbtUFXbyZr5B5dWi3Xf10yDBhmQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   buildInputs = [
     bzip2
@@ -29,10 +29,10 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "Ice" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
     homepage = "https://zeroc.com/";
     license = licenses.gpl2;
-    description = "Comprehensive RPC framework with support for Python, C++, .NET, Java, JavaScript and more.";
+    description = "Comprehensive RPC framework with support for Python, C++, .NET, Java, JavaScript and more";
     mainProgram = "slice2py";
     maintainers = with maintainers; [ abbradar ];
   };
diff --git a/pkgs/development/python-modules/zeroconf/default.nix b/pkgs/development/python-modules/zeroconf/default.nix
index bd00a51c3fa50..c23d94c7af648 100644
--- a/pkgs/development/python-modules/zeroconf/default.nix
+++ b/pkgs/development/python-modules/zeroconf/default.nix
@@ -1,20 +1,22 @@
-{ lib
-, cython
-, async-timeout
-, buildPythonPackage
-, fetchFromGitHub
-, ifaddr
-, poetry-core
-, pytest-asyncio
-, pytest-timeout
-, pythonOlder
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  cython,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  ifaddr,
+  poetry-core,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytest-timeout,
+  pythonOlder,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "zeroconf";
-  version = "0.132.2";
+  version = "0.133.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -23,36 +25,24 @@ buildPythonPackage rec {
     owner = "jstasiak";
     repo = "python-zeroconf";
     rev = "refs/tags/${version}";
-    hash = "sha256-Jmz9zs//EVdBbEElq6OEfGZiOiMvjV5CJxZOM/lHvok=";
+    hash = "sha256-nS3zr+56K819GujzA4uLqcZJb4OxbAOV3FfxssDEEQA=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail "Cython>=3.0.8" "Cython"
-  '';
-
   build-system = [
     cython
     poetry-core
     setuptools
   ];
 
-  dependencies = [
-    ifaddr
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    async-timeout
-  ];
+  dependencies = [ ifaddr ] ++ lib.optionals (pythonOlder "3.11") [ async-timeout ];
 
   nativeCheckInputs = [
     pytest-asyncio
+    pytest-cov-stub
     pytest-timeout
     pytestCheckHook
   ];
 
-  preCheck = ''
-    sed -i '/addopts/d' pyproject.toml
-  '';
-
   disabledTests = [
     # OSError: [Errno 19] No such device
     "test_close_multiple_times"
diff --git a/pkgs/development/python-modules/zerorpc/default.nix b/pkgs/development/python-modules/zerorpc/default.nix
index 3734496531a1a..25523376be32b 100644
--- a/pkgs/development/python-modules/zerorpc/default.nix
+++ b/pkgs/development/python-modules/zerorpc/default.nix
@@ -1,4 +1,12 @@
-{ lib, buildPythonPackage, fetchPypi, future, gevent, msgpack, pyzmq }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  future,
+  gevent,
+  msgpack,
+  pyzmq,
+}:
 
 buildPythonPackage rec {
   pname = "zerorpc";
@@ -10,12 +18,17 @@ buildPythonPackage rec {
     sha256 = "d2ee247a566fc703f29c277d767f6f61f1e12f76d0402faea4bd815f32cbf37f";
   };
 
-  propagatedBuildInputs = [ future gevent msgpack pyzmq ];
+  propagatedBuildInputs = [
+    future
+    gevent
+    msgpack
+    pyzmq
+  ];
 
   doCheck = false; # pypi version doesn't include tests
 
   meta = with lib; {
-    description = "An easy to use, intuitive, and cross-language RPC";
+    description = "Easy to use, intuitive, and cross-language RPC";
     mainProgram = "zerorpc";
     homepage = "https://www.zerorpc.io";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/zetup/default.nix b/pkgs/development/python-modules/zetup/default.nix
index 4417134d4d178..5f46e398bbcb5 100644
--- a/pkgs/development/python-modules/zetup/default.nix
+++ b/pkgs/development/python-modules/zetup/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nbconvert
-, path
-, pytestCheckHook
-, setuptools-scm
-, pythonAtLeast
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  nbconvert,
+  path,
+  pytestCheckHook,
+  setuptools-scm,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
diff --git a/pkgs/development/python-modules/zeversolarlocal/default.nix b/pkgs/development/python-modules/zeversolarlocal/default.nix
index b1e515d763206..b4c5db9ec61a7 100644
--- a/pkgs/development/python-modules/zeversolarlocal/default.nix
+++ b/pkgs/development/python-modules/zeversolarlocal/default.nix
@@ -1,39 +1,40 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, flit-core
-, dos2unix
-, httpx
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  fetchpatch,
+  flit-core,
+  dos2unix,
+  httpx,
+  pytest-asyncio,
+  pytest-cov-stub,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "zeversolarlocal";
   version = "1.1.0";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ExZy5k5RE7k+D0lGmuIkGWrWQ+m24K2oqbUEg4BAVuY=";
+    hash = "sha256-ExZy5k5RE7k+D0lGmuIkGWrWQ+m24K2oqbUEg4BAVuY=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     flit-core
     dos2unix
   ];
 
-  propagatedBuildInputs = [
-    httpx
-  ];
+  dependencies = [ httpx ];
 
   nativeCheckInputs = [
     pytest-asyncio
+    pytest-cov-stub
     pytest-mock
     pytestCheckHook
   ];
@@ -52,19 +53,12 @@ buildPythonPackage rec {
     })
   ];
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace "--cov zeversolarlocal --cov-report xml:cov.xml --cov-report term-missing -vv" ""
-  '';
-
   disabledTests = [
     # Test requires network access
     "test_httpx_timeout"
   ];
 
-  pythonImportsCheck = [
-    "zeversolarlocal"
-  ];
+  pythonImportsCheck = [ "zeversolarlocal" ];
 
   meta = with lib; {
     description = "Python module to interact with Zeversolar inverters";
diff --git a/pkgs/development/python-modules/zfec/default.nix b/pkgs/development/python-modules/zfec/default.nix
index 1e135da34b3a7..dd12475d893d5 100644
--- a/pkgs/development/python-modules/zfec/default.nix
+++ b/pkgs/development/python-modules/zfec/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hypothesis
-, pyutil
-, setuptools
-, twisted
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hypothesis,
+  pyutil,
+  setuptools,
+  twisted,
 }:
 
 buildPythonPackage rec {
@@ -17,13 +18,9 @@ buildPythonPackage rec {
     hash = "sha256-EGmFchj4ur5AhEOXEnIIA6Ef6RsU8gvHepak5vThER8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pyutil
-  ];
+  propagatedBuildInputs = [ pyutil ];
 
   nativeCheckInputs = [
     hypothesis
@@ -34,9 +31,7 @@ buildPythonPackage rec {
     trial zfec
   '';
 
-  pythonImportsCheck = [
-    "zfec"
-  ];
+  pythonImportsCheck = [ "zfec" ];
 
   meta = with lib; {
     homepage = "https://github.com/tahoe-lafs/zfec";
@@ -52,5 +47,4 @@ buildPythonPackage rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ prusnak ];
   };
-
 }
diff --git a/pkgs/development/python-modules/zha-quirks/default.nix b/pkgs/development/python-modules/zha-quirks/default.nix
index 03413fc6f1fcf..7e9720163c8cc 100644
--- a/pkgs/development/python-modules/zha-quirks/default.nix
+++ b/pkgs/development/python-modules/zha-quirks/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "zha-quirks";
-  version = "0.0.114";
+  version = "0.0.121";
   pyproject = true;
 
   disabled = pythonOlder "3.12";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "zigpy";
     repo = "zha-device-handlers";
     rev = "refs/tags/${version}";
-    hash = "sha256-FipD4VCz2/FYlf17+q7LTej9ZtT72/R4ELkAQtw7RvE=";
+    hash = "sha256-+HDW07fFh47gW7xNaymylSt8TT2Vzz+6IWSPLtkk/Nw=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/zha/default.nix b/pkgs/development/python-modules/zha/default.nix
index d6d23f46611a4..f8c83870f9f15 100644
--- a/pkgs/development/python-modules/zha/default.nix
+++ b/pkgs/development/python-modules/zha/default.nix
@@ -1,32 +1,33 @@
-{ lib
-, awesomeversion
-, bellows
-, buildPythonPackage
-, fetchFromGitHub
-, pyserial
-, pyserial-asyncio
-, pyserial-asyncio-fast
-, pytest-asyncio
-, pytest-timeout
-, pytest-xdist
-, pytestCheckHook
-, python-slugify
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools
-, universal-silabs-flasher
-, wheel
-, zha-quirks
-, zigpy
-, zigpy-deconz
-, zigpy-xbee
-, zigpy-zigate
-, zigpy-znp
+{
+  lib,
+  awesomeversion,
+  bellows,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  pyserial,
+  pyserial-asyncio,
+  pyserial-asyncio-fast,
+  pytest-asyncio,
+  pytest-timeout,
+  pytest-xdist,
+  pytestCheckHook,
+  python-slugify,
+  pythonOlder,
+  setuptools,
+  universal-silabs-flasher,
+  wheel,
+  zha-quirks,
+  zigpy,
+  zigpy-deconz,
+  zigpy-xbee,
+  zigpy-zigate,
+  zigpy-znp,
 }:
 
 buildPythonPackage rec {
   pname = "zha";
-  version = "0.0.8";
+  version = "0.0.33";
   pyproject = true;
 
   disabled = pythonOlder "3.12";
@@ -35,24 +36,15 @@ buildPythonPackage rec {
     owner = "zigpy";
     repo = "zha";
     rev = "refs/tags/${version}";
-    hash = "sha256-xOaqwgL8NqB3pHNa6U/wextntI5aMivHLaIhSRqvgRU=";
+    hash = "sha256-qcXKHIiEm1wqcQKRH+TqgQMPZbLqNnBiR6dbmLwxW1Y=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace-fail '"setuptools-git-versioning<2"' "" \
+      --replace-fail '"setuptools-git-versioning<3"' "" \
       --replace-fail 'dynamic = ["version"]' 'version = "${version}"'
   '';
 
-  pythonRelaxDeps = [
-    "universal-silabs-flasher"
-    "zha-quirks"
-  ];
-
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
-
   build-system = [
     setuptools
     wheel
@@ -75,15 +67,14 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
+    freezegun
     pytest-asyncio
     pytest-timeout
     pytest-xdist
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "zha"
-  ];
+  pythonImportsCheck = [ "zha" ];
 
   disabledTests = [
     # Tests are long-running and often keep hanging
@@ -92,7 +83,7 @@ buildPythonPackage rec {
     "test_check_available_unsuccessful"
     "test_device_counter_sensors"
     "test_device_tracker"
-    "test_device_unavailable_skips_entity_polling"
+    "test_device_unavailable_or_disabled_skips_entity_polling"
     "test_elec_measurement_sensor_polling"
     "test_electrical_measurement_init"
     "test_group_member_assume_state"
@@ -104,11 +95,15 @@ buildPythonPackage rec {
     "test_sinope_time"
     "test_siren_timed_off"
     "test_zha_group_light_entity"
+    # flaky, either due to race conditions or timeouts
+    "test_zha_group_switch_entity"
+    "test_zha_group_fan_entity"
+    "test_startup_concurrency_limit"
+    "test_fan_ikea"
+    "test_background"
   ];
 
-  disabledTestPaths = [
-    "tests/test_cluster_handlers.py"
-  ];
+  disabledTestPaths = [ "tests/test_cluster_handlers.py" ];
 
   pytestFlagsArray = [
     "-v"
@@ -119,7 +114,7 @@ buildPythonPackage rec {
     description = "Zigbee Home Automation";
     homepage = "https://github.com/zigpy/zha";
     changelog = "https://github.com/zigpy/zha/releases/tag/${version}";
-    license = licenses.gpl3Only;
+    license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/ziafont/checkfonts.nix b/pkgs/development/python-modules/ziafont/checkfonts.nix
new file mode 100644
index 0000000000000..773d8a1ea0664
--- /dev/null
+++ b/pkgs/development/python-modules/ziafont/checkfonts.nix
@@ -0,0 +1,88 @@
+# Based on the calls to testfont(url) in test/manyfonts.ipynb
+# Note that Tinos-Regular is also needed for test/test.ipynb
+[
+  {
+    url = "https://mirrors.ctan.org/fonts/qualitype/opentype/QTAbbie.otf";
+    hash = "sha256-/Lu7EGtF7kZgP0dYyaIFPIO7jWCbtc3iT0ux3bFhe9w=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/qualitype/opentype/QTJupiter.otf";
+    hash = "sha256-BocJZnrGGt1fpq5Jmnl1fiuo7YllN5xCF6lgWZyVcXE=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/qualitype/opentype/QTVagaRound.otf";
+    hash = "sha256-JffWcGdBN2OIZXdZxf7G3G+kZRZi2cKFUIOAOCuR8gM=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/qualitype/opentype/QTBlackForest.otf";
+    hash = "sha256-P4TQSCBHPfty3l+IhY1CuVkr0KNk2t6bbeieT21fz9A=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/punknova/punknova-regular.otf";
+    hash = "sha256-UC4Zdh647wTBYXRyOzFDliVA0ukK88K8CcIS8nzxeoo=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/qualitype/opentype/QTSnowCaps.otf";
+    hash = "sha256-XtZbEhCcHlc1eHEkR+52tuVoA6GTf//5mU/ehHq/H8g=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/qualitype/opentype/QTStoryTimeCaps.otf";
+    hash = "sha256-bwW8KZD40i8rpGqZuoVBeosfjk/tWHex4KPm8mlQ4po=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/alegreya/opentype/Alegreya-Regular.otf";
+    hash = "sha256-oZo6XeaTcnaSymYWrkl71t3JsWvLuKgKsNAirONNax4=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/nimbus15/opentype/zco-Oblique.otf";
+    hash = "sha256-j7WbsSnLGh+OdpdBwIlp3cPL8rpYS3OcW3jtxltgArE=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/merriweather/opentype/Merriweather-Black.otf";
+    hash = "sha256-3pQdqHw1eRUVCRwnVbZBbftrZ7fJ7USD+CyNfA41u3g=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/qualitype/opentype/QTArtiston.otf";
+    hash = "sha256-6bfL3Po4erta9q49EgzYZXZs9NtdoWFjnpR3WT1y+vU=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/nunito/opentype/Nunito-Black.otf";
+    hash = "sha256-/QJud/q2MVwrXEibDDe/gty3a3x2weodNBqCOkVV7fA=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/kurier/fonts/opentype/nowacki/kurier/KurierHeavy-Regular.otf";
+    hash = "sha256-ynFz+IIntQeEK2+Cu64wJRTffZvmuYdx1IrKKDe1VA0=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/clearsans/truetype/ClearSans-MediumItalic.ttf";
+    hash = "sha256-Bv+6I2ClJo71iZbj3XmUpJ3NHBZ/+8h07azt7ucbmyE=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/tinos/truetype/Tinos-Regular.ttf";
+    hash = "sha256-/03rOV/yQmu9CNt0ywBbIjJhdd8A8KFWuH5tKu8e9Qg=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/gofonts/truetype/Go-Medium.ttf";
+    hash = "sha256-GvMsI34wBeBQUC9RQjVNS6TukXf5faoVrPoI9L9qPEY=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/comfortaa/truetype/Comfortaa-Regular.ttf";
+    hash = "sha256-eu7K9MeZ8k8i6HGm9UbKiRFs8RKIx6j/QvEUAd1URcY=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/quattrocento/truetype/Quattrocento-Regular.ttf";
+    hash = "sha256-kv5NsgyBybySJha4xJ4VIEaCdMfJwyz19VRCJOwVeHs=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/kurier/fonts/opentype/nowacki/kurier/KurierCond-Regular.otf";
+    hash = "sha256-y9gD/ovTuZeh5/OaQelhGLuTPFjLcPSMLfIUyHe1QXI=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/garamond-math/Garamond-Math.otf";
+    hash = "sha256-xhYTd+lwhBUrlI9iq+h0y+J0BZOJVjRrVKTGSIpQCfE=";
+  }
+  {
+    url = "https://github.com/google/fonts/raw/main/ofl/arizonia/Arizonia-Regular.ttf";
+    hash = "sha256-jfHBC8FdCroUXUWZwlyvrYPbaG0s76QmGfBptvG7zmI=";
+  }
+]
diff --git a/pkgs/development/python-modules/ziafont/default.nix b/pkgs/development/python-modules/ziafont/default.nix
index 788dda3329412..c25177dc23c1d 100644
--- a/pkgs/development/python-modules/ziafont/default.nix
+++ b/pkgs/development/python-modules/ziafont/default.nix
@@ -1,46 +1,52 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, pytestCheckHook
-, nbval
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  pytestCheckHook,
+  nbval,
+  fetchurl,
 }:
-
 buildPythonPackage rec {
   pname = "ziafont";
-  version = "0.7";
-
-  format = "pyproject";
+  version = "0.9";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "cdelker";
-    repo = pname;
-    rev = version;
-    hash = "sha256-DQEVWYOgiGSP3WlmZzEweyRa0UY7fxjjpbued+5EH5I=";
+    repo = "ziafont";
+    rev = "refs/tags/${version}";
+    hash = "sha256-S7IDL3ItP14/GrCUtSTT+JWuqRAY/Po0Kerq8mggDdg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   nativeCheckInputs = [
     pytestCheckHook
     nbval
   ];
 
-  preCheck = "rm test/manyfonts.ipynb";  # Tries to download fonts
+  preCheck =
+    let
+      # The test notebooks try to download font files, unless they already exist in the test directory,
+      # so we prepare them in advance.
+      checkFonts = lib.map fetchurl (import ./checkfonts.nix);
+      copyFontCmd = font: "cp ${font} test/${lib.last (lib.splitString "/" font.url)}\n";
+    in
+    lib.concatMapStrings copyFontCmd checkFonts;
 
   pytestFlagsArray = [ "--nbval-lax" ];
 
   pythonImportsCheck = [ "ziafont" ];
 
-  meta = with lib; {
+  meta = {
     description = "Convert TTF/OTF font glyphs to SVG paths";
     homepage = "https://ziafont.readthedocs.io/en/latest/";
-    license = licenses.mit;
-    maintainers = with maintainers; [ sfrijters ];
+    changelog = "https://github.com/cdelker/ziafont/blob/main/CHANGES.md";
+    license = lib.licenses.mit;
+    maintainers = [ lib.maintainers.sfrijters ];
   };
 }
diff --git a/pkgs/development/python-modules/ziamath/checkfonts.nix b/pkgs/development/python-modules/ziamath/checkfonts.nix
new file mode 100644
index 0000000000000..ce29060d3f184
--- /dev/null
+++ b/pkgs/development/python-modules/ziamath/checkfonts.nix
@@ -0,0 +1,19 @@
+# Based on the calls to testfont(url) in test/styles.ipynb
+[
+  {
+    url = "https://mirrors.ctan.org/fonts/libertinus-fonts/otf/LibertinusMath-Regular.otf";
+    hash = "sha256-PY4QUzxz9/vO4k2rl5GBfno0r3/Zh1FAhif1OPDic7w=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/firamath/FiraMath-Regular.otf";
+    hash = "sha256-ICjL091NjAzxYIUg60dZlWqDpnkx17bY58MTUgGG41s=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/erewhon-math/Erewhon-Math.otf";
+    hash = "sha256-7SjKC+XP9KpFAWtZxc+FZZ4VETnDxokUGz+nZ/CWIbI=";
+  }
+  {
+    url = "https://mirrors.ctan.org/fonts/concmath-otf/Concrete-Math.otf";
+    hash = "sha256-YCukkUgNQoBlotuD0vF1ts9JL8x6xaEW9JxK++GVGZ4=";
+  }
+]
diff --git a/pkgs/development/python-modules/ziamath/default.nix b/pkgs/development/python-modules/ziamath/default.nix
index c2d72a25f8107..7505d578ba525 100644
--- a/pkgs/development/python-modules/ziamath/default.nix
+++ b/pkgs/development/python-modules/ziamath/default.nix
@@ -1,35 +1,32 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, ziafont
-, pytestCheckHook
-, nbval
-, latex2mathml
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  ziafont,
+  pytestCheckHook,
+  nbval,
+  latex2mathml,
+  fetchurl,
 }:
-
 buildPythonPackage rec {
   pname = "ziamath";
-  version = "0.9";
-  format = "pyproject";
+  version = "0.11";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "cdelker";
-    repo = pname;
-    rev = version;
-    hash = "sha256-ISd+J7R8qZ0NXdlyHMj+torzr+541UAhNCSaUH8ytSQ=";
+    repo = "ziamath";
+    rev = "refs/tags/${version}";
+    hash = "sha256-DLpbidQEeQVKxGCbS2jeeCvmVK9ElDIDQMj5bh/x7/Q=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    ziafont
-  ];
+  dependencies = [ ziafont ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -37,22 +34,24 @@ buildPythonPackage rec {
     latex2mathml
   ];
 
-  pytestFlagsArray = [ "--nbval-lax" ];
+  preCheck =
+    let
+      # The test notebooks try to download font files, unless they already exist in the test directory,
+      # so we prepare them in advance.
+      checkFonts = lib.map fetchurl (import ./checkfonts.nix);
+      copyFontCmd = font: "cp ${font} test/${lib.last (lib.splitString "/" font.url)}\n";
+    in
+    lib.concatMapStrings copyFontCmd checkFonts;
 
-  # Prevent the test suite from attempting to download fonts
-  postPatch = ''
-    substituteInPlace test/styles.ipynb \
-      --replace '"def testfont(exprs, fonturl):\n",' '"def testfont(exprs, fonturl):\n", "    return\n",' \
-      --replace "mathfont='FiraMath-Regular.otf', " ""
-  '';
+  pytestFlagsArray = [ "--nbval-lax" ];
 
   pythonImportsCheck = [ "ziamath" ];
 
-  meta = with lib; {
+  meta = {
     description = "Render MathML and LaTeX Math to SVG without Latex installation";
     homepage = "https://ziamath.readthedocs.io/en/latest/";
     changelog = "https://ziamath.readthedocs.io/en/latest/changes.html";
-    license = licenses.mit;
-    maintainers = with maintainers; [ sfrijters ];
+    license = lib.licenses.mit;
+    maintainers = [ lib.maintainers.sfrijters ];
   };
 }
diff --git a/pkgs/development/python-modules/zict/default.nix b/pkgs/development/python-modules/zict/default.nix
index 4bd3e7692283e..b2305bc243fdc 100644
--- a/pkgs/development/python-modules/zict/default.nix
+++ b/pkgs/development/python-modules/zict/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pytest-asyncio
-, pytest-repeat
-, pytest-timeout
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pytest-asyncio,
+  pytest-repeat,
+  pytest-timeout,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-4yHiY7apeq/AeQw8+zwEZWtwZuZzjDf//MqV2APJ+6U=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -33,7 +32,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "Mutable mapping tools.";
+    description = "Mutable mapping tools";
     homepage = "https://github.com/dask/zict";
     license = licenses.bsd3;
     maintainers = with maintainers; [ teh ];
diff --git a/pkgs/development/python-modules/zigpy-cc/default.nix b/pkgs/development/python-modules/zigpy-cc/default.nix
index 505e152f087b2..048fc2b17d105 100644
--- a/pkgs/development/python-modules/zigpy-cc/default.nix
+++ b/pkgs/development/python-modules/zigpy-cc/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, asynctest
-, buildPythonPackage
-, fetchFromGitHub
-, pyserial
-, pyserial-asyncio
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, zigpy
+{
+  lib,
+  asynctest,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyserial-asyncio,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  zigpy,
 }:
 
 buildPythonPackage rec {
@@ -48,9 +48,7 @@ buildPythonPackage rec {
     "tests/test_application.py "
   ];
 
-  pythonImportsCheck = [
-    "zigpy_cc"
-  ];
+  pythonImportsCheck = [ "zigpy_cc" ];
 
   meta = with lib; {
     description = "Library which communicates with Texas Instruments CC2531 radios for zigpy";
diff --git a/pkgs/development/python-modules/zigpy-deconz/default.nix b/pkgs/development/python-modules/zigpy-deconz/default.nix
index 930fcf0a7d2b8..04b8efb6f27f3 100644
--- a/pkgs/development/python-modules/zigpy-deconz/default.nix
+++ b/pkgs/development/python-modules/zigpy-deconz/default.nix
@@ -1,18 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyserial
-, pyserial-asyncio
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, zigpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch2,
+  pyserial,
+  pyserial-asyncio,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  zigpy,
 }:
 
 buildPythonPackage rec {
   pname = "zigpy-deconz";
-  version = "0.23.1";
+  version = "0.23.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -21,18 +23,23 @@ buildPythonPackage rec {
     owner = "zigpy";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-10EyT3IGdAtF9OUbfZ5OtP+Ot35O0SfMDtsyw5FQ+/8=";
+    hash = "sha256-z/QulOkvkV/1Z+M7EfzdfGvrrtkapYcvfz+3AijR46k=";
   };
 
+  patches = [
+    (fetchpatch2 {
+      url = "https://github.com/zigpy/zigpy-deconz/commit/86fdcd6be824f12ce3bf88b40217a6224cbf5a89.patch";
+      hash = "sha256-iqpTSJPBMSBZXg5EVXXupxIFRsGCNuxU/oNHZ2VT0Jc=";
+    })
+  ];
+
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace ', "setuptools-git-versioning<2"' "" \
       --replace 'dynamic = ["version"]' 'version = "${version}"'
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     pyserial
@@ -45,9 +52,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "zigpy_deconz"
-  ];
+  pythonImportsCheck = [ "zigpy_deconz" ];
 
   meta = with lib; {
     description = "Library which communicates with Deconz radios for zigpy";
diff --git a/pkgs/development/python-modules/zigpy-xbee/default.nix b/pkgs/development/python-modules/zigpy-xbee/default.nix
index 848f253243cf6..0a3c11635f488 100644
--- a/pkgs/development/python-modules/zigpy-xbee/default.nix
+++ b/pkgs/development/python-modules/zigpy-xbee/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyserial
-, pyserial-asyncio
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, zigpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyserial,
+  pyserial-asyncio,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  zigpy,
 }:
 
 buildPythonPackage rec {
   pname = "zigpy-xbee";
-  version = "0.20.1";
+  version = "0.20.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,7 +22,7 @@ buildPythonPackage rec {
     owner = "zigpy";
     repo = "zigpy-xbee";
     rev = "refs/tags/${version}";
-    hash = "sha256-H0rs4EOzz2Nx5YuwqTZp2FGF1z2phBgSIyraKHHx4RA=";
+    hash = "sha256-d5TOX2sKA2E6b6KHvAdhxEknD6fOF4qRjCMpBKEsicA=";
   };
 
   postPatch = ''
@@ -30,9 +31,7 @@ buildPythonPackage rec {
       --replace 'dynamic = ["version"]' 'version = "${version}"'
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     pyserial
@@ -52,7 +51,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     changelog = "https://github.com/zigpy/zigpy-xbee/releases/tag/${version}";
-    description = "A library which communicates with XBee radios for zigpy";
+    description = "Library which communicates with XBee radios for zigpy";
     homepage = "https://github.com/zigpy/zigpy-xbee";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ mvnetbiz ];
diff --git a/pkgs/development/python-modules/zigpy-zboss/default.nix b/pkgs/development/python-modules/zigpy-zboss/default.nix
new file mode 100644
index 0000000000000..8f3ca45b5c83f
--- /dev/null
+++ b/pkgs/development/python-modules/zigpy-zboss/default.nix
@@ -0,0 +1,63 @@
+{
+  async-timeout,
+  buildPythonPackage,
+  coloredlogs,
+  fetchFromGitHub,
+  jsonschema,
+  lib,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  setuptools,
+  voluptuous,
+  zigpy,
+}:
+
+buildPythonPackage rec {
+  pname = "zigpy-zboss";
+  version = "1.2.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "kardia-as";
+    repo = "zigpy-zboss";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-T2R291GeFIsnDRI1tAydTlLamA3LF5tKxKFhPtcEUus=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [
+    async-timeout
+    coloredlogs
+    jsonschema
+    voluptuous
+    zigpy
+  ];
+
+  pythonImportsCheck = [ "zigpy_zboss" ];
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytest-mock
+    pytestCheckHook
+  ];
+
+  disabledTestPaths = [
+    # AttributeError: 'Ledvance' object has no attribute 'get'
+    "tests/application/test_connect.py"
+    "tests/application/test_join.py"
+    "tests/application/test_requests.py"
+    "tests/application/test_startup.py"
+    "tests/application/test_zdo_requests.py"
+    "tests/application/test_zigpy_callbacks.py"
+  ];
+
+  meta = {
+    changelog = "https://github.com/kardia-as/zigpy-zboss/releases/tag/v${version}";
+    description = "Library for zigpy which communicates with Nordic nRF52 radios";
+    homepage = "https://github.com/kardia-as/zigpy-zboss";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/zigpy-zigate/default.nix b/pkgs/development/python-modules/zigpy-zigate/default.nix
index 0c11c6ed5c3d8..fc7d291bd2a90 100644
--- a/pkgs/development/python-modules/zigpy-zigate/default.nix
+++ b/pkgs/development/python-modules/zigpy-zigate/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, gpiozero
-, mock
-, pyserial
-, pyserial-asyncio
-, pyusb
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, zigpy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  gpiozero,
+  mock,
+  pyserial,
+  pyserial-asyncio,
+  pyusb,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  zigpy,
 }:
 
 buildPythonPackage rec {
   pname = "zigpy-zigate";
-  version = "0.12.0";
+  version = "0.13.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,7 +25,7 @@ buildPythonPackage rec {
     owner = "zigpy";
     repo = "zigpy-zigate";
     rev = "refs/tags/${version}";
-    hash = "sha256-wziXUFYSUXhzWHM870jphG12h99WVzqiYimtIbkXyM0=";
+    hash = "sha256-Mwccb0OQgSknH8prbFejkGRVI7ii/r9D87aRyQrGgWs=";
   };
 
   postPatch = ''
@@ -33,9 +34,7 @@ buildPythonPackage rec {
       --replace 'dynamic = ["version"]' 'version = "${version}"'
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     gpiozero
@@ -51,9 +50,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "zigpy_zigate"
-  ];
+  pythonImportsCheck = [ "zigpy_zigate" ];
 
   disabledTestPaths = [
     # Fails in sandbox
diff --git a/pkgs/development/python-modules/zigpy-znp/default.nix b/pkgs/development/python-modules/zigpy-znp/default.nix
index 8bc40b8a55665..98a7661f04839 100644
--- a/pkgs/development/python-modules/zigpy-znp/default.nix
+++ b/pkgs/development/python-modules/zigpy-znp/default.nix
@@ -1,24 +1,25 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, coloredlogs
-, fetchFromGitHub
-, jsonschema
-, pytest-asyncio
-, pytest-mock
-, pytest-rerunfailures
-, pytest-timeout
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, voluptuous
-, zigpy
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  coloredlogs,
+  fetchFromGitHub,
+  jsonschema,
+  pytest-asyncio,
+  pytest-mock,
+  pytest-rerunfailures,
+  pytest-timeout,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  voluptuous,
+  zigpy,
 }:
 
 buildPythonPackage rec {
   pname = "zigpy-znp";
-  version = "0.12.1";
+  version = "0.12.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -27,21 +28,19 @@ buildPythonPackage rec {
     owner = "zigpy";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-Bs/m9Iyr8x+sMUVXt1whk2E4EJ5bpitMsEWZtmCyIf8=";
+    hash = "sha256-5DuqM7MgntV/3WquR+0Cr/vIwYL35ZVpGlNZPj92jJ4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
-
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "timeout = 20" "timeout = 300" \
-      --replace ', "setuptools-git-versioning<2"' "" \
-      --replace 'dynamic = ["version"]' 'version = "${version}"'
+      --replace-fail "timeout = 20" "timeout = 300" \
+      --replace-fail ', "setuptools-git-versioning<2"' "" \
+      --replace-fail 'dynamic = ["version"]' 'version = "${version}"'
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     async-timeout
     coloredlogs
     jsonschema
@@ -49,6 +48,8 @@ buildPythonPackage rec {
     zigpy
   ];
 
+  doCheck = false; # tests are not compatible with zigpy 0.65.3
+
   nativeCheckInputs = [
     pytest-asyncio
     pytest-mock
@@ -58,9 +59,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "--reruns=3"
-  ];
+  pytestFlagsArray = [ "--reruns=3" ];
 
   disabledTests = [
     # failing since zigpy 0.60.0
@@ -73,9 +72,7 @@ buildPythonPackage rec {
     "test_zigpy_request_failure"
   ];
 
-  pythonImportsCheck = [
-    "zigpy_znp"
-  ];
+  pythonImportsCheck = [ "zigpy_znp" ];
 
   meta = with lib; {
     description = "Library for zigpy which communicates with TI ZNP radios";
diff --git a/pkgs/development/python-modules/zigpy/default.nix b/pkgs/development/python-modules/zigpy/default.nix
index 0a32dea6649a1..bc3fec15864e3 100644
--- a/pkgs/development/python-modules/zigpy/default.nix
+++ b/pkgs/development/python-modules/zigpy/default.nix
@@ -1,39 +1,42 @@
-{ lib
-, aiohttp
-, aioresponses
-, aiosqlite
-, async-timeout
-, attrs
-, buildPythonPackage
-, crccheck
-, cryptography
-, fetchFromGitHub
-, freezegun
-, importlib-resources
-, jsonschema
-, pycryptodome
-, pyserial-asyncio
-, pytest-asyncio
-, pytest-timeout
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, typing-extensions
-, voluptuous
+{
+  lib,
+  stdenv,
+  aiohttp,
+  aioresponses,
+  aiosqlite,
+  async-timeout,
+  attrs,
+  buildPythonPackage,
+  crccheck,
+  cryptography,
+  fetchFromGitHub,
+  freezegun,
+  frozendict,
+  importlib-resources,
+  jsonschema,
+  pycryptodome,
+  pyserial-asyncio,
+  pytest-asyncio,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  typing-extensions,
+  voluptuous,
 }:
 
 buildPythonPackage rec {
   pname = "zigpy";
-  version = "0.63.5";
+  version = "0.66.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "zigpy";
     repo = "zigpy";
     rev = "refs/tags/${version}";
-    hash = "sha256-iZxHXxheyoA5vo0Pxojs7QE8rSyTpsYpJ6/OzDSZJ20=";
+    hash = "sha256-Rv45WP6KxsFY/eGgNja5JSgmVKQWrRbP6K4tz6CFpMs=";
   };
 
   postPatch = ''
@@ -42,26 +45,24 @@ buildPythonPackage rec {
       --replace-fail 'dynamic = ["version"]' 'version = "${version}"'
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    attrs
-    aiohttp
-    aiosqlite
-    crccheck
-    cryptography
-    jsonschema
-    pyserial-asyncio
-    typing-extensions
-    pycryptodome
-    voluptuous
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    importlib-resources
-  ] ++ lib.optionals (pythonOlder "3.11") [
-    async-timeout
-  ];
+  dependencies =
+    [
+      attrs
+      aiohttp
+      aiosqlite
+      crccheck
+      cryptography
+      frozendict
+      jsonschema
+      pyserial-asyncio
+      typing-extensions
+      pycryptodome
+      voluptuous
+    ]
+    ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ]
+    ++ lib.optionals (pythonOlder "3.11") [ async-timeout ];
 
   nativeCheckInputs = [
     aioresponses
@@ -71,12 +72,14 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTests = [
-    # # Our two manual scans succeeded and the periodic one was attempted
-    # assert len(mock_scan.mock_calls) == 3
-    # AssertionError: assert 4 == 3
-    "test_periodic_scan_priority"
-  ];
+  disabledTests =
+    [
+      # assert quirked.quirk_metadata.quirk_location.endswith("zigpy/tests/test_quirks_v2.py]-line:104") is False
+      "test_quirks_v2"
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86_64) [
+      "test_periodic_scan_priority"
+    ];
 
   disabledTestPaths = [
     # Tests require network access
diff --git a/pkgs/development/python-modules/zimports/default.nix b/pkgs/development/python-modules/zimports/default.nix
index 22cd50c9189e7..f5d50241a8810 100644
--- a/pkgs/development/python-modules/zimports/default.nix
+++ b/pkgs/development/python-modules/zimports/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, fetchFromGitHub
-, buildPythonPackage
-, flake8-import-order
-, pyflakes
-, tomli
-, setuptools
-, pytestCheckHook
-, pythonAtLeast
-, pythonOlder
+{
+  lib,
+  fetchFromGitHub,
+  buildPythonPackage,
+  flake8-import-order,
+  pyflakes,
+  tomli,
+  setuptools,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -32,13 +33,9 @@ buildPythonPackage rec {
     tomli
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "zimports"
-  ];
+  pythonImportsCheck = [ "zimports" ];
 
   meta = with lib; {
     description = "Python import rewriter";
diff --git a/pkgs/development/python-modules/zipfile2/default.nix b/pkgs/development/python-modules/zipfile2/default.nix
index 304696ae117a8..2d611e912c045 100644
--- a/pkgs/development/python-modules/zipfile2/default.nix
+++ b/pkgs/development/python-modules/zipfile2/default.nix
@@ -1,6 +1,8 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
+{
+  buildPythonPackage,
+  fetchFromGitHub,
+  lib,
+  pythonAtLeast,
 }:
 
 buildPythonPackage rec {
@@ -21,8 +23,9 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/cournape/zipfile2";
-    description = "A backwards-compatible improved zipfile class";
+    description = "Backwards-compatible improved zipfile class";
     maintainers = with maintainers; [ genericnerdyusername ];
     license = licenses.psfl;
+    broken = pythonAtLeast "3.12"; # tests are failing because the signature of ZipInfo._decodeExtra changed
   };
 }
diff --git a/pkgs/development/python-modules/zipp/default.nix b/pkgs/development/python-modules/zipp/default.nix
index 6555d172ce2e1..07185aa568f4a 100644
--- a/pkgs/development/python-modules/zipp/default.nix
+++ b/pkgs/development/python-modules/zipp/default.nix
@@ -1,48 +1,50 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, func-timeout
-, jaraco-itertools
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  func-timeout,
+  jaraco-itertools,
+  pythonOlder,
+  setuptools-scm,
 }:
 
-let zipp = buildPythonPackage rec {
-  pname = "zipp";
-  version = "3.17.0";
-  format = "pyproject";
+let
+  zipp = buildPythonPackage rec {
+    pname = "zipp";
+    version = "3.19.2";
+    format = "pyproject";
 
-  disabled = pythonOlder "3.7";
+    disabled = pythonOlder "3.7";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-hOZKHCjPfpHtIHi7jMjCWcsZt2lCCWyNe4SUdpDKuvA=";
-  };
+    src = fetchPypi {
+      inherit pname version;
+      hash = "sha256-vx3PZFD4c6E+lSopUEiHyJ5t51BiCeWxvMNGATXU3hk=";
+    };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+    nativeBuildInputs = [ setuptools-scm ];
 
-  # Prevent infinite recursion with pytest
-  doCheck = false;
+    # Prevent infinite recursion with pytest
+    doCheck = false;
 
-  nativeCheckInputs = [
-    func-timeout
-    jaraco-itertools
-  ];
+    nativeCheckInputs = [
+      func-timeout
+      jaraco-itertools
+    ];
 
-  pythonImportsCheck = [
-    "zipp"
-  ];
+    pythonImportsCheck = [ "zipp" ];
 
-  passthru.tests = {
-    check = zipp.overridePythonAttrs (_: { doCheck = true; });
-  };
+    passthru.tests = {
+      check = zipp.overridePythonAttrs (_: {
+        doCheck = true;
+      });
+    };
 
-  meta = with lib; {
-    description = "Pathlib-compatible object wrapper for zip files";
-    homepage = "https://github.com/jaraco/zipp";
-    license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    meta = with lib; {
+      description = "Pathlib-compatible object wrapper for zip files";
+      homepage = "https://github.com/jaraco/zipp";
+      license = licenses.mit;
+      maintainers = [ ];
+    };
   };
-}; in zipp
+in
+zipp
diff --git a/pkgs/development/python-modules/zipstream-ng/default.nix b/pkgs/development/python-modules/zipstream-ng/default.nix
index d4972f70e4508..b8f054c278406 100644
--- a/pkgs/development/python-modules/zipstream-ng/default.nix
+++ b/pkgs/development/python-modules/zipstream-ng/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -19,13 +20,9 @@ buildPythonPackage rec {
     hash = "sha256-BYQse+DlyLUH9CofRfGrPUZjP7E8AP/wpirvJmSRfow=";
   };
 
-  pythonImportsCheck = [
-    "zipstream"
-  ];
+  pythonImportsCheck = [ "zipstream" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Library to generate streamable zip files";
diff --git a/pkgs/development/python-modules/zipstream/default.nix b/pkgs/development/python-modules/zipstream/default.nix
deleted file mode 100644
index bedc0b62267e3..0000000000000
--- a/pkgs/development/python-modules/zipstream/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, nose }:
-
-buildPythonPackage rec {
-  pname = "zipstream";
-  version = "1.1.4";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "01im5anqdyggmwkigqcjg0qw2a5bnn84h33mfaqjjd69a28lpwif";
-  };
-
-  nativeCheckInputs = [ nose ];
-
-  meta = {
-    description = "A zip archive generator";
-    homepage = "https://github.com/allanlei/python-zipstream";
-    license = lib.licenses.gpl3Plus;
-    maintainers = with lib.maintainers; [ ];
-  };
-}
diff --git a/pkgs/development/python-modules/zlib-ng/default.nix b/pkgs/development/python-modules/zlib-ng/default.nix
index 7cb498bbb12f9..77b3743c0137e 100644
--- a/pkgs/development/python-modules/zlib-ng/default.nix
+++ b/pkgs/development/python-modules/zlib-ng/default.nix
@@ -1,50 +1,55 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  substituteAll,
 
-# build-system
-, cmake
-, setuptools
+  # build-system
+  cmake,
+  setuptools,
+  versioningit,
 
-# native dependencies
-, zlib-ng
+  # native dependencies
+  zlib-ng,
 
-# tests
-, pytestCheckHook
+  # tests
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "zlib-ng";
-  version = "0.4.1";
+  version = "0.5.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pycompression";
     repo = "python-zlib-ng";
     rev = "v${version}";
-    hash = "sha256-uK6Md8ZOVUNwXCjzM4zTVr3WBwzLdnvT9n8yBvf968k=";
+    hash = "sha256-UsdZgpRI7h6GemT1+1g/cP/8uhLykZ//saH4JMwwlY4=";
   };
 
-  nativeBuildInputs = [
+  patches = [
+    (substituteAll {
+      src = ./version.patch;
+      inherit version;
+    })
+  ];
+
+  build-system = [
     cmake
     setuptools
+    versioningit
   ];
 
   dontUseCmakeConfigure = true;
 
   env.PYTHON_ZLIB_NG_LINK_DYNAMIC = true;
 
-  buildInputs = [
-    zlib-ng
-  ];
+  buildInputs = [ zlib-ng ];
 
-  pythonImportsCheck = [
-    "zlib_ng"
-  ];
+  pythonImportsCheck = [ "zlib_ng" ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     rm -rf src
@@ -61,7 +66,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A drop-in replacement for Python's zlib and gzip modules using zlib-ng";
+    description = "Drop-in replacement for Python's zlib and gzip modules using zlib-ng";
     homepage = "https://github.com/pycompression/python-zlib-ng";
     changelog = "https://github.com/pycompression/python-zlib-ng/blob/${src.rev}/CHANGELOG.rst";
     license = licenses.psfl;
diff --git a/pkgs/development/python-modules/zlib-ng/version.patch b/pkgs/development/python-modules/zlib-ng/version.patch
new file mode 100644
index 0000000000000..e1f3355256462
--- /dev/null
+++ b/pkgs/development/python-modules/zlib-ng/version.patch
@@ -0,0 +1,16 @@
+diff --git a/pyproject.toml b/pyproject.toml
+index 28ae41d..05ad409 100644
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -2,9 +2,8 @@
+ requires = ["setuptools>=64", "versioningit>=1.1.0"]
+ build-backend = "setuptools.build_meta"
+ 
+-[tool.versioningit.vcs]
+-method="git"
+-default-tag = "v0.0.0"
++[tool.versioningit]
++default-version = "@version@"
+ 
+ [tool.versioningit.write]
+ file = "src/zlib_ng/_version.py"
diff --git a/pkgs/development/python-modules/zm-py/default.nix b/pkgs/development/python-modules/zm-py/default.nix
index ddd5b72b929d0..f7cba1ed5d772 100644
--- a/pkgs/development/python-modules/zm-py/default.nix
+++ b/pkgs/development/python-modules/zm-py/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
 }:
 
 buildPythonPackage rec {
@@ -21,24 +22,16 @@ buildPythonPackage rec {
     hash = "sha256-n9FRX2Pnn96H0HVT4SHLJgONc0XzQ005itMNpvl9IYg=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  propagatedBuildInputs = [ requests ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "zoneminder"
-  ];
+  pythonImportsCheck = [ "zoneminder" ];
 
   meta = with lib; {
-    description = "A loose python wrapper around the ZoneMinder REST API";
+    description = "Loose python wrapper around the ZoneMinder REST API";
     homepage = "https://github.com/rohankapoorcom/zm-py";
     changelog = "https://github.com/rohankapoorcom/zm-py/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/zodb/default.nix b/pkgs/development/python-modules/zodb/default.nix
index 2ac592db42239..704bbabebfc0f 100644
--- a/pkgs/development/python-modules/zodb/default.nix
+++ b/pkgs/development/python-modules/zodb/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, python
-, zope-testrunner
-, transaction
-, six
-, zope-interface
-, zodbpickle
-, zconfig
-, persistent
-, zc-lockfile
-, btrees
-, manuel
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  python,
+  zope-testrunner,
+  transaction,
+  six,
+  zope-interface,
+  zodbpickle,
+  zconfig,
+  persistent,
+  zc-lockfile,
+  btrees,
+  manuel,
 }:
 
 buildPythonPackage rec {
@@ -54,6 +55,6 @@ buildPythonPackage rec {
     homepage = "https://zodb-docs.readthedocs.io/";
     changelog = "https://github.com/zopefoundation/ZODB/blob/${version}/CHANGES.rst";
     license = licenses.zpl21;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/zodbpickle/default.nix b/pkgs/development/python-modules/zodbpickle/default.nix
index 6fd93b9226211..e9d90b93e4b95 100644
--- a/pkgs/development/python-modules/zodbpickle/default.nix
+++ b/pkgs/development/python-modules/zodbpickle/default.nix
@@ -1,33 +1,32 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
   pname = "zodbpickle";
-  version = "3.3";
+  version = "4.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-dcF5Kse9W89JUFggYqw2hOMiqhOrmEIOO/7EWCJzo2g=";
+    hash = "sha256-6FutlWDWCSpjW+vueKQ7DxySamaRK+OQ6IyrZvTewYA=";
   };
 
   # fails..
   doCheck = false;
 
-  pythonImportsCheck = [
-    "zodbpickle"
-  ];
+  pythonImportsCheck = [ "zodbpickle" ];
 
   meta = with lib; {
     description = "Fork of Python's pickle module to work with ZODB";
     homepage = "https://github.com/zopefoundation/zodbpickle";
     changelog = "https://github.com/zopefoundation/zodbpickle/blob/${version}/CHANGES.rst";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/zope-cachedescriptors/default.nix b/pkgs/development/python-modules/zope-cachedescriptors/default.nix
index e6aa92cd357b6..73aef8961525d 100644
--- a/pkgs/development/python-modules/zope-cachedescriptors/default.nix
+++ b/pkgs/development/python-modules/zope-cachedescriptors/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,17 +18,11 @@ buildPythonPackage rec {
     hash = "sha256-MVe+hm/Jck0Heotb9sP8IcOKQUerZk5yRiLf5fr/BIo=";
   };
 
-  propagatedBuildInputs = [
-    setuptools
-  ];
+  propagatedBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "src/zope/cachedescriptors/tests.py"
-  ];
+  pytestFlagsArray = [ "src/zope/cachedescriptors/tests.py" ];
 
   pythonImportsCheck = [ "zope.cachedescriptors" ];
 
diff --git a/pkgs/development/python-modules/zope-component/default.nix b/pkgs/development/python-modules/zope-component/default.nix
index eaa5bf84ea69f..db6a96e7fd625 100644
--- a/pkgs/development/python-modules/zope-component/default.nix
+++ b/pkgs/development/python-modules/zope-component/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, zope-configuration
-, zope-deferredimport
-, zope-deprecation
-, zope-event
-, zope-hookable
-, zope-i18nmessageid
-, zope-interface
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  zope-configuration,
+  zope-deferredimport,
+  zope-deprecation,
+  zope-event,
+  zope-hookable,
+  zope-i18nmessageid,
+  zope-interface,
 }:
 
 buildPythonPackage rec {
@@ -34,16 +35,13 @@ buildPythonPackage rec {
   # ignore tests because of a circular dependency on zope-security
   doCheck = false;
 
-  pythonImportsCheck = [
-    "zope.component"
-  ];
+  pythonImportsCheck = [ "zope.component" ];
 
   meta = with lib; {
     homepage = "https://github.com/zopefoundation/zope.component";
     description = "Zope Component Architecture";
     changelog = "https://github.com/zopefoundation/zope.component/blob/${version}/CHANGES.rst";
     license = licenses.zpl20;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/zope-configuration/default.nix b/pkgs/development/python-modules/zope-configuration/default.nix
index 6a664daaf026d..c658412f6b3d9 100644
--- a/pkgs/development/python-modules/zope-configuration/default.nix
+++ b/pkgs/development/python-modules/zope-configuration/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, zope-i18nmessageid
-, zope-interface
-, zope-schema
-, pytestCheckHook
-, zope-testing
-, zope-testrunner
-, manuel
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  zope-i18nmessageid,
+  zope-interface,
+  zope-schema,
+  pytestCheckHook,
+  zope-testing,
+  zope-testrunner,
+  manuel,
 }:
 
 buildPythonPackage rec {
@@ -25,9 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-81h36tXpmANjhdLdxGkZ6ryZjmmcBZh5ZPFxrY3ZJxs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     manuel
@@ -45,19 +44,15 @@ buildPythonPackage rec {
   # Need to investigate how to run the tests with zope-testrunner
   doCheck = false;
 
-  pythonImportsCheck = [
-    "zope.configuration"
-  ];
+  pythonImportsCheck = [ "zope.configuration" ];
 
-  pythonNamespaces = [
-    "zope"
-  ];
+  pythonNamespaces = [ "zope" ];
 
   meta = with lib; {
     description = "Zope Configuration Markup Language (ZCML)";
     homepage = "https://github.com/zopefoundation/zope.configuration";
     changelog = "https://github.com/zopefoundation/zope.configuration/blob/${version}/CHANGES.rst";
     license = licenses.zpl21;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/zope-contenttype/default.nix b/pkgs/development/python-modules/zope-contenttype/default.nix
index d979ff9e78f5c..3d70c4dc6788a 100644
--- a/pkgs/development/python-modules/zope-contenttype/default.nix
+++ b/pkgs/development/python-modules/zope-contenttype/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, zope-testrunner
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  zope-testrunner,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -20,24 +21,20 @@ buildPythonPackage rec {
     hash = "sha256-AAHvG2XKZQUZBW3OUwxY0LOWlXzPBQIyPIoVSdtk0xc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   nativeCheckInputs = [
     pytestCheckHook
     zope-testrunner
   ];
 
-  pythonImportsCheck = [
-    "zope.contenttype"
-  ];
+  pythonImportsCheck = [ "zope.contenttype" ];
 
   meta = with lib; {
     homepage = "https://github.com/zopefoundation/zope.contenttype";
-    description = "A utility module for content-type (MIME type) handling";
+    description = "Utility module for content-type (MIME type) handling";
     changelog = "https://github.com/zopefoundation/zope.contenttype/blob/${version}/CHANGES.rst";
     license = licenses.zpl21;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/zope-copy/default.nix b/pkgs/development/python-modules/zope-copy/default.nix
index d5571b6417efa..daa93782014dc 100644
--- a/pkgs/development/python-modules/zope-copy/default.nix
+++ b/pkgs/development/python-modules/zope-copy/default.nix
@@ -1,14 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, zope-interface
-, zope-location
-, zope-schema
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPy27,
+  zope-interface,
+  zope-location,
+  zope-schema,
+  unittestCheckHook,
 }:
 
-
 buildPythonPackage rec {
   pname = "zope.copy";
   version = "4.3";
@@ -21,9 +21,16 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ zope-interface ];
 
   doCheck = !isPy27; # namespace conflicts
-  nativeCheckInputs = [ unittestCheckHook zope-location zope-schema ];
+  nativeCheckInputs = [
+    unittestCheckHook
+    zope-location
+    zope-schema
+  ];
 
-  unittestFlagsArray = [ "-s" "src/zope/copy" ];
+  unittestFlagsArray = [
+    "-s"
+    "src/zope/copy"
+  ];
 
   meta = {
     maintainers = with lib.maintainers; [ domenkozar ];
diff --git a/pkgs/development/python-modules/zope-deferredimport/default.nix b/pkgs/development/python-modules/zope-deferredimport/default.nix
index 367131b400ec4..7cc6f18d5e3d4 100644
--- a/pkgs/development/python-modules/zope-deferredimport/default.nix
+++ b/pkgs/development/python-modules/zope-deferredimport/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, zope-proxy
-, zope-testrunner
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  zope-proxy,
+  zope-testrunner,
 }:
 
 buildPythonPackage rec {
@@ -13,7 +14,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "zope.deferredimport";
     inherit version;
-    sha256 = "sha256-Orvw4YwfF2WRTs0dQbVJ5NBFshso5AZfsMHeCtc2ssM=";
+    hash = "sha256-Orvw4YwfF2WRTs0dQbVJ5NBFshso5AZfsMHeCtc2ssM=";
   };
 
   propagatedBuildInputs = [ zope-proxy ];
diff --git a/pkgs/development/python-modules/zope-deprecation/default.nix b/pkgs/development/python-modules/zope-deprecation/default.nix
index 4a0437e2b2f4e..3abbff8e18cd7 100644
--- a/pkgs/development/python-modules/zope-deprecation/default.nix
+++ b/pkgs/development/python-modules/zope-deprecation/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,21 +20,13 @@ buildPythonPackage rec {
     hash = "sha256-t8MtM5IDayFFxAsxA+cyLbaGYqsJtyZ6/hUyqdk/ZA8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "src/zope/deprecation/tests.py"
-  ];
+  pytestFlagsArray = [ "src/zope/deprecation/tests.py" ];
 
-  pythonImportsCheck = [
-    "zope.deprecation"
-  ];
+  pythonImportsCheck = [ "zope.deprecation" ];
 
   meta = with lib; {
     homepage = "https://github.com/zopefoundation/zope.deprecation";
@@ -42,5 +35,4 @@ buildPythonPackage rec {
     license = licenses.zpl21;
     maintainers = with maintainers; [ domenkozar ];
   };
-
 }
diff --git a/pkgs/development/python-modules/zope-dottedname/default.nix b/pkgs/development/python-modules/zope-dottedname/default.nix
index 895b00231aea2..ed3dbab8d0162 100644
--- a/pkgs/development/python-modules/zope-dottedname/default.nix
+++ b/pkgs/development/python-modules/zope-dottedname/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -19,31 +20,21 @@ buildPythonPackage rec {
     hash = "sha256-28S4W/vzSx74jasWJSrG7xbZBDnyIjstCiYs9Bnq6QI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "src/zope/dottedname/tests.py"
-  ];
+  pytestFlagsArray = [ "src/zope/dottedname/tests.py" ];
 
-  pythonImportsCheck = [
-    "zope.dottedname"
-  ];
+  pythonImportsCheck = [ "zope.dottedname" ];
 
-  pythonNamespaces = [
-    "zope"
-  ];
+  pythonNamespaces = [ "zope" ];
 
   meta = with lib; {
     homepage = "https://github.com/zopefoundation/zope.dottedname";
     description = "Resolver for Python dotted names";
     changelog = "https://github.com/zopefoundation/zope.dottedname/blob/${version}/CHANGES.rst";
     license = licenses.zpl21;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/zope-event/default.nix b/pkgs/development/python-modules/zope-event/default.nix
index 93cfc749c9231..805fc285e0a0d 100644
--- a/pkgs/development/python-modules/zope-event/default.nix
+++ b/pkgs/development/python-modules/zope-event/default.nix
@@ -1,6 +1,7 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
 }:
 
 buildPythonPackage rec {
@@ -13,10 +14,9 @@ buildPythonPackage rec {
   };
 
   meta = with lib; {
-    description = "An event publishing system";
+    description = "Event publishing system";
     homepage = "https://pypi.org/project/zope.event/";
     license = licenses.zpl20;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/zope-exceptions/default.nix b/pkgs/development/python-modules/zope-exceptions/default.nix
index ae38402c9736f..186112d1138d1 100644
--- a/pkgs/development/python-modules/zope-exceptions/default.nix
+++ b/pkgs/development/python-modules/zope-exceptions/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, zope-interface
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  zope-interface,
 }:
 
 buildPythonPackage rec {
   pname = "zope-exceptions";
-  version = "5.0.1";
+  version = "5.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -16,28 +17,23 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "zope.exceptions";
     inherit version;
-    hash = "sha256-MPxT5TOfX72dEzXg97afd/FePwbisXt/t++SXMJP3ZY=";
+    hash = "sha256-YRtMSUbDAWDbS3u9TzhhOzJoSvFn0xllCvm3O8ew6Xg=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [ zope-interface ];
 
   # circular deps
   doCheck = false;
 
-  pythonImportsCheck = [
-    "zope.exceptions"
-  ];
+  pythonImportsCheck = [ "zope.exceptions" ];
 
   meta = with lib; {
     description = "Exception interfaces and implementations";
     homepage = "https://pypi.python.org/pypi/zope.exceptions";
     changelog = "https://github.com/zopefoundation/zope.exceptions/blob/${version}/CHANGES.rst";
     license = licenses.zpl21;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/zope-filerepresentation/default.nix b/pkgs/development/python-modules/zope-filerepresentation/default.nix
index 960b4a9e881e8..347b634831f49 100644
--- a/pkgs/development/python-modules/zope-filerepresentation/default.nix
+++ b/pkgs/development/python-modules/zope-filerepresentation/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, zope-schema
-, zope-interface
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  zope-schema,
+  zope-interface,
 }:
 
 buildPythonPackage rec {
@@ -14,7 +15,10 @@ buildPythonPackage rec {
     hash = "sha256-yza3iGspJ2+C8WhfPykfQjXmac2HhdFHQtRl0Trvaqs=";
   };
 
-  propagatedBuildInputs = [ zope-interface zope-schema ];
+  propagatedBuildInputs = [
+    zope-interface
+    zope-schema
+  ];
 
   checkPhase = ''
     cd src/zope/filerepresentation && python -m unittest
@@ -24,7 +28,6 @@ buildPythonPackage rec {
     homepage = "https://zopefilerepresentation.readthedocs.io/";
     description = "File-system Representation Interfaces";
     license = licenses.zpl20;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/zope-hookable/default.nix b/pkgs/development/python-modules/zope-hookable/default.nix
index 8ee46c58943f0..8af1d3d0b7521 100644
--- a/pkgs/development/python-modules/zope-hookable/default.nix
+++ b/pkgs/development/python-modules/zope-hookable/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, zope-testing
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  zope-testing,
 }:
 
 buildPythonPackage rec {
@@ -16,13 +17,9 @@ buildPythonPackage rec {
     hash = "sha256-FmiZPUCnz9yGeEPdVyWSnn+DpbDBlccJrx2u+CdPQ8s=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  nativeCheckInputs = [
-    zope-testing
-  ];
+  nativeCheckInputs = [ zope-testing ];
 
   meta = with lib; {
     description = "Supports the efficient creation of “hookable” objects";
diff --git a/pkgs/development/python-modules/zope-i18nmessageid/default.nix b/pkgs/development/python-modules/zope-i18nmessageid/default.nix
index 0b0ef641d3296..0d1f93014fc46 100644
--- a/pkgs/development/python-modules/zope-i18nmessageid/default.nix
+++ b/pkgs/development/python-modules/zope-i18nmessageid/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, zope-testrunner
-, unittestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  zope-testrunner,
+  unittestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -21,19 +22,15 @@ buildPythonPackage rec {
     zope-testrunner
   ];
 
-  unittestFlagsArray = [
-    "src/zope/i18nmessageid"
-  ];
+  unittestFlagsArray = [ "src/zope/i18nmessageid" ];
 
-  pythonImportsCheck = [
-    "zope.i18nmessageid"
-  ];
+  pythonImportsCheck = [ "zope.i18nmessageid" ];
 
   meta = with lib; {
     homepage = "https://github.com/zopefoundation/zope.i18nmessageid";
     description = "Message Identifiers for internationalization";
     changelog = "https://github.com/zopefoundation/zope.i18nmessageid/blob/${version}/CHANGES.rst";
     license = licenses.zpl20;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/zope-interface/default.nix b/pkgs/development/python-modules/zope-interface/default.nix
index f834301a464e0..830e4291ef4ff 100644
--- a/pkgs/development/python-modules/zope-interface/default.nix
+++ b/pkgs/development/python-modules/zope-interface/default.nix
@@ -1,26 +1,32 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, zope-event
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  zope-event,
 }:
 
 buildPythonPackage rec {
   pname = "zope.interface";
-  version = "5.5.2";
+  version = "6.4.post2";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-v+4fP/YhQ4GUmeNI9bin86oCWfmspeDdrnOR0Fnc5nE=";
+    hash = "sha256-HCB+b239V0mib1pf2WZgLWuCTsANLfhKfpqSTokzZU4=";
   };
 
-  propagatedBuildInputs = [ zope-event ];
+  build-system = [ setuptools ];
+
+  dependencies = [ zope-event ];
 
   doCheck = false; # Circular deps.
 
   meta = with lib; {
+    changelog = "https://github.com/zopefoundation/zope.interface/blob/${version}/CHANGES.rst";
     description = "Zope.Interface";
-    homepage = "https://zope.org/Products/ZopeInterface";
+    homepage = "https://github.com/zopefoundation/zope.interface";
     license = licenses.zpl20;
-    maintainers = [ maintainers.goibhniu ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/zope-lifecycleevent/default.nix b/pkgs/development/python-modules/zope-lifecycleevent/default.nix
index 1b94583ce9d87..03f1a5cf111ed 100644
--- a/pkgs/development/python-modules/zope-lifecycleevent/default.nix
+++ b/pkgs/development/python-modules/zope-lifecycleevent/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, zope-event
-, zope-interface
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  zope-event,
+  zope-interface,
 }:
 
 buildPythonPackage rec {
@@ -20,11 +21,12 @@ buildPythonPackage rec {
     hash = "sha256-6tP7SW52FPm1adFtrUt4BSsKwhh1utjWbKNQNS2bb50=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
-  propagatedBuildInputs = [ zope-event zope-interface ];
+  propagatedBuildInputs = [
+    zope-event
+    zope-interface
+  ];
 
   # namespace colides with local directory
   doCheck = false;
@@ -39,6 +41,6 @@ buildPythonPackage rec {
     description = "Object life-cycle events";
     changelog = "https://github.com/zopefoundation/zope.lifecycleevent/blob/${version}/CHANGES.rst";
     license = licenses.zpl21;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/zope-location/default.nix b/pkgs/development/python-modules/zope-location/default.nix
index caefe5799b0e0..19dfb93b98c92 100644
--- a/pkgs/development/python-modules/zope-location/default.nix
+++ b/pkgs/development/python-modules/zope-location/default.nix
@@ -1,7 +1,8 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, zope-proxy
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  zope-proxy,
 }:
 
 buildPythonPackage rec {
@@ -26,7 +27,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/zopefoundation/zope.location/";
     description = "Zope Location";
     license = licenses.zpl20;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/zope-proxy/default.nix b/pkgs/development/python-modules/zope-proxy/default.nix
index 6084a86f65aec..958470fde845e 100644
--- a/pkgs/development/python-modules/zope-proxy/default.nix
+++ b/pkgs/development/python-modules/zope-proxy/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, zope-interface
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
+  zope-interface,
 }:
 
 buildPythonPackage rec {
@@ -19,24 +20,20 @@ buildPythonPackage rec {
     hash = "sha256-93fVbCqy/PQNAmraHmfx45z2MY497rmhzVCH/MsfKG4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [ zope-interface ];
 
   # circular deps
   doCheck = false;
 
-  pythonImportsCheck = [
-    "zope.proxy"
-  ];
+  pythonImportsCheck = [ "zope.proxy" ];
 
   meta = with lib; {
     homepage = "https://github.com/zopefoundation/zope.proxy";
     description = "Generic Transparent Proxies";
     changelog = "https://github.com/zopefoundation/zope.proxy/blob/${version}/CHANGES.rst";
     license = licenses.zpl21;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/zope-schema/default.nix b/pkgs/development/python-modules/zope-schema/default.nix
index 6fde974b62051..a1f4a8f263f7a 100644
--- a/pkgs/development/python-modules/zope-schema/default.nix
+++ b/pkgs/development/python-modules/zope-schema/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, zope-location
-, zope-event
-, zope-interface
-, zope-testing
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  zope-location,
+  zope-event,
+  zope-interface,
+  zope-testing,
 }:
 
 buildPythonPackage rec {
@@ -16,7 +17,12 @@ buildPythonPackage rec {
     hash = "sha256-6tTbywM1TU5BDJo7kERR60TZAlR1Gxy97fSmGu3p+7k=";
   };
 
-  propagatedBuildInputs = [ zope-location zope-event zope-interface zope-testing ];
+  propagatedBuildInputs = [
+    zope-location
+    zope-event
+    zope-interface
+    zope-testing
+  ];
 
   # ImportError: No module named 'zope.event'
   # even though zope-event has been included.
@@ -27,7 +33,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/zopefoundation/zope.schema";
     description = "zope.interface extension for defining data schemas";
     license = licenses.zpl20;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/zope-size/default.nix b/pkgs/development/python-modules/zope-size/default.nix
index a6ef2a5885500..d526d01e3fa0f 100644
--- a/pkgs/development/python-modules/zope-size/default.nix
+++ b/pkgs/development/python-modules/zope-size/default.nix
@@ -1,8 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, zope-i18nmessageid
-, zope-interface
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  zope-i18nmessageid,
+  zope-interface,
 }:
 
 buildPythonPackage rec {
@@ -14,13 +15,15 @@ buildPythonPackage rec {
     hash = "sha256-sVRT40+Bb/VFmtg82TUCmqWBxqRTRj4DxeLZe9IKQyo=";
   };
 
-  propagatedBuildInputs = [ zope-i18nmessageid zope-interface ];
+  propagatedBuildInputs = [
+    zope-i18nmessageid
+    zope-interface
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/zopefoundation/zope.size";
     description = "Interfaces and simple adapter that give the size of an object";
     license = licenses.zpl20;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/zope-testbrowser/default.nix b/pkgs/development/python-modules/zope-testbrowser/default.nix
index 732c367de5772..5e08e973a1aec 100644
--- a/pkgs/development/python-modules/zope-testbrowser/default.nix
+++ b/pkgs/development/python-modules/zope-testbrowser/default.nix
@@ -1,41 +1,43 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, zope-interface
-, zope-schema
-, zope-cachedescriptors
-, pytz
-, webtest
-, beautifulsoup4
-, soupsieve
-, wsgiproxy2
-, six
-, mock
-, zope-testing
-, zope-testrunner
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  zope-interface,
+  zope-schema,
+  zope-cachedescriptors,
+  pytz,
+  webtest,
+  beautifulsoup4,
+  soupsieve,
+  wsgiproxy2,
+  mock,
+  zope-testing,
+  zope-testrunner,
+  python,
 }:
 
 buildPythonPackage rec {
   pname = "zope-testbrowser";
-  version = "6.0";
+  version = "7.0";
+  pyproject = true;
 
-  format = "setuptools";
-
-  src = fetchPypi {
-    pname = "zope.testbrowser";
-    inherit version;
-    sha256 = "sha256-RLd6XpA3q+3DZHai6j3H6XTWE85Sk913zAL4iO4x+ho=";
+  src = fetchFromGitHub {
+    owner = "zopefoundation";
+    repo = "zope.testbrowser";
+    rev = "refs/tags/${version}";
+    hash = "sha256-vGx2ObHgt4hSQe/JKZkD2/GhdtbJEAfggkM209maen4=";
   };
 
   postPatch = ''
     # remove test that requires network access
     substituteInPlace src/zope/testbrowser/tests/test_doctests.py \
-      --replace "suite.addTests(wire)" ""
+      --replace-fail "suite.addTests(wire)" ""
   '';
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     setuptools
     zope-interface
     zope-schema
@@ -45,7 +47,6 @@ buildPythonPackage rec {
     beautifulsoup4
     soupsieve
     wsgiproxy2
-    six
   ];
 
   nativeCheckInputs = [
@@ -67,6 +68,7 @@ buildPythonPackage rec {
   ];
 
   meta = {
+    changelog = "https://github.com/zopefoundation/zope.testbrowser/blob/${src.rev}/CHANGES.rst";
     description = "Programmable browser for functional black-box tests";
     homepage = "https://github.com/zopefoundation/zope.testbrowser";
     license = lib.licenses.zpl21;
diff --git a/pkgs/development/python-modules/zope-testing/default.nix b/pkgs/development/python-modules/zope-testing/default.nix
index 65672118e4ef9..8b0c7e22cfd51 100644
--- a/pkgs/development/python-modules/zope-testing/default.nix
+++ b/pkgs/development/python-modules/zope-testing/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPyPy
-, setuptools
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  isPyPy,
+  setuptools,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -17,33 +18,23 @@ buildPythonPackage rec {
     hash = "sha256-6HzQ2NZmVzza8TOBare5vuyAGmSoZZXBnLX+mS7z1kk=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   doCheck = !isPyPy;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "src/zope/testing/tests.py"
-  ];
+  pytestFlagsArray = [ "src/zope/testing/tests.py" ];
 
-  pythonImportsCheck = [
-    "zope.testing"
-  ];
+  pythonImportsCheck = [ "zope.testing" ];
 
-  pythonNamespaces = [
-    "zope"
-  ];
+  pythonNamespaces = [ "zope" ];
 
   meta = with lib; {
     description = "Zope testing helpers";
-    homepage =  "https://github.com/zopefoundation/zope.testing";
+    homepage = "https://github.com/zopefoundation/zope.testing";
     changelog = "https://github.com/zopefoundation/zope.testing/blob/${version}/CHANGES.rst";
     license = licenses.zpl21;
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/zope-testrunner/default.nix b/pkgs/development/python-modules/zope-testrunner/default.nix
index aa06e73442335..cc9c00fd8d245 100644
--- a/pkgs/development/python-modules/zope-testrunner/default.nix
+++ b/pkgs/development/python-modules/zope-testrunner/default.nix
@@ -1,13 +1,13 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, zope-interface
-, zope-exceptions
-, zope-testing
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  zope-interface,
+  zope-exceptions,
+  zope-testing,
+  six,
 }:
 
-
 buildPythonPackage rec {
   pname = "zope.testrunner";
   version = "6.4";
@@ -17,15 +17,20 @@ buildPythonPackage rec {
     hash = "sha256-C4Wfx01vK2xd2K353uTsdAX3PykOyrJXCsY2+DYSKMg=";
   };
 
-  propagatedBuildInputs = [ zope-interface zope-exceptions zope-testing six ];
+  propagatedBuildInputs = [
+    zope-interface
+    zope-exceptions
+    zope-testing
+    six
+  ];
 
   doCheck = false; # custom test modifies sys.path
 
   meta = with lib; {
-    description = "A flexible test runner with layer support";
+    description = "Flexible test runner with layer support";
     mainProgram = "zope-testrunner";
     homepage = "https://pypi.python.org/pypi/zope.testrunner";
     license = licenses.zpl20;
-    maintainers = [ maintainers.goibhniu ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/zopfli/default.nix b/pkgs/development/python-modules/zopfli/default.nix
index c8ecd77730d8a..93941dd579555 100644
--- a/pkgs/development/python-modules/zopfli/default.nix
+++ b/pkgs/development/python-modules/zopfli/default.nix
@@ -1,4 +1,12 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder, setuptools-scm, zopfli, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools-scm,
+  zopfli,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "zopfli";
@@ -8,7 +16,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-28mEG+3XNgQeteaYLNktqTvuFFdF9UIvN5X28ljNxu8=";
+    hash = "sha256-28mEG+3XNgQeteaYLNktqTvuFFdF9UIvN5X28ljNxu8=";
     extension = "zip";
   };
 
diff --git a/pkgs/development/python-modules/zstandard/default.nix b/pkgs/development/python-modules/zstandard/default.nix
index ae75db9f7b137..e76b19f95c413 100644
--- a/pkgs/development/python-modules/zstandard/default.nix
+++ b/pkgs/development/python-modules/zstandard/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cffi
-, hypothesis
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  cffi,
+  hypothesis,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
@@ -18,21 +19,13 @@ buildPythonPackage rec {
     hash = "sha256-giajPFQry1TNa9CjZgZ7YQtBcTtkyavsG8RTPWn1HnA=";
   };
 
-  propagatedNativeBuildInputs = [
-    cffi
-  ];
+  propagatedNativeBuildInputs = [ cffi ];
 
-  propagatedBuildInputs = [
-    cffi
-  ];
+  propagatedBuildInputs = [ cffi ];
 
-  nativeCheckInputs = [
-    hypothesis
-  ];
+  nativeCheckInputs = [ hypothesis ];
 
-  pythonImportsCheck = [
-    "zstandard"
-  ];
+  pythonImportsCheck = [ "zstandard" ];
 
   meta = with lib; {
     description = "zstandard bindings for Python";
diff --git a/pkgs/development/python-modules/zstd/default.nix b/pkgs/development/python-modules/zstd/default.nix
index 368d246d9dc64..b4a335efca11a 100644
--- a/pkgs/development/python-modules/zstd/default.nix
+++ b/pkgs/development/python-modules/zstd/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, pkg-config
-, fetchPypi
-, buildPythonPackage
-, buildPackages
-, zstd
-, pytest
+{
+  lib,
+  pkg-config,
+  fetchPypi,
+  buildPythonPackage,
+  buildPackages,
+  zstd,
+  pytest,
 }:
 
 buildPythonPackage rec {
@@ -46,8 +47,6 @@ buildPythonPackage rec {
     description = "Simple python bindings to Yann Collet ZSTD compression library";
     homepage = "https://github.com/sergey-dryabzhinsky/python-zstd";
     license = licenses.bsd2;
-    maintainers = with maintainers; [
-      eadwu
-    ];
+    maintainers = with maintainers; [ eadwu ];
   };
 }
diff --git a/pkgs/development/python-modules/zulip-emoji-mapping/default.nix b/pkgs/development/python-modules/zulip-emoji-mapping/default.nix
new file mode 100644
index 0000000000000..d27d2fd355b08
--- /dev/null
+++ b/pkgs/development/python-modules/zulip-emoji-mapping/default.nix
@@ -0,0 +1,35 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "zulip-emoji-mapping";
+  version = "1.0.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "GearKite";
+    repo = "zulip-emoji-mapping";
+    rev = "v${version}";
+    hash = "sha256-logm5uAnLAcFqI7mUxKEO9ZmHqRkd6CFiCW4B5tqZzg=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+
+  pythonImportsCheck = [
+    "zulip_emoji_mapping"
+  ];
+
+  meta = {
+    description = "Get emojis by Zulip names";
+    homepage = "https://github.com/GearKite/zulip-emoji-mapping";
+    changelog = "https://github.com/GearKite/zulip-emoji-mapping/releases";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ robertrichter ];
+  };
+}
diff --git a/pkgs/development/python-modules/zulip/default.nix b/pkgs/development/python-modules/zulip/default.nix
index 81b068e232124..d5bec61a0c0f5 100644
--- a/pkgs/development/python-modules/zulip/default.nix
+++ b/pkgs/development/python-modules/zulip/default.nix
@@ -1,15 +1,15 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, setuptools
-, requests
-, matrix-client
-, distro
-, click
-, typing-extensions
-, matrix-nio
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  setuptools,
+  requests,
+  distro,
+  click,
+  typing-extensions,
+  matrix-nio,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -29,9 +29,7 @@ buildPythonPackage rec {
   };
   sourceRoot = "${src.name}/zulip";
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
     requests
diff --git a/pkgs/development/python-modules/zwave-js-server-python/default.nix b/pkgs/development/python-modules/zwave-js-server-python/default.nix
index a6c1e50e34d39..bb374e1ec42b6 100644
--- a/pkgs/development/python-modules/zwave-js-server-python/default.nix
+++ b/pkgs/development/python-modules/zwave-js-server-python/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "zwave-js-server-python";
-  version = "0.55.4";
+  version = "0.57.0";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "home-assistant-libs";
     repo = "zwave-js-server-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-wPvMgQR85yHC0k+ENj+r/ilcxmOipSFGkz8qBRLgPaY=";
+    hash = "sha256-5Kvk73tRnHFi5YDzMmRj1r7gKuAPkecPF9q9L2qhAUI=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/zwave-me-ws/default.nix b/pkgs/development/python-modules/zwave-me-ws/default.nix
index 152beb51c3266..db7803c4ed168 100644
--- a/pkgs/development/python-modules/zwave-me-ws/default.nix
+++ b/pkgs/development/python-modules/zwave-me-ws/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pythonOlder
-, requests
-, websocket-client
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
+  requests,
+  websocket-client,
 }:
 
 buildPythonPackage rec {
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-bTchtgr+UbHCpcXMaQA3bTrhasJ79TguvAqLNlpD/2c=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
     requests
@@ -33,9 +32,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "zwave_me_ws"
-  ];
+  pythonImportsCheck = [ "zwave_me_ws" ];
 
   meta = with lib; {
     description = "Library to connect to a ZWave-Me instance";
diff --git a/pkgs/development/python-modules/zxcvbn/default.nix b/pkgs/development/python-modules/zxcvbn/default.nix
index 34f51ab5b7663..7ce1af48a906a 100644
--- a/pkgs/development/python-modules/zxcvbn/default.nix
+++ b/pkgs/development/python-modules/zxcvbn/default.nix
@@ -1,7 +1,9 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+}:
 
 buildPythonPackage rec {
   pname = "zxcvbn";
@@ -16,9 +18,7 @@ buildPythonPackage rec {
     hash = "sha256-etcST7pxlpOH5Q9KtOPGf1vmnkyjEp6Cd5QCmBjW9Hc=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Python implementation of Dropbox's realistic password strength estimator";
diff --git a/pkgs/development/python-modules/zxing-cpp/default.nix b/pkgs/development/python-modules/zxing-cpp/default.nix
index dbdc4c50effd5..42372a283f397 100644
--- a/pkgs/development/python-modules/zxing-cpp/default.nix
+++ b/pkgs/development/python-modules/zxing-cpp/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, buildPythonPackage
-, cmake
-, setuptools-scm
-, numpy
-, pillow
-, pybind11
-, libzxing-cpp
-, pytestCheckHook
+{
+  buildPythonPackage,
+  cmake,
+  setuptools-scm,
+  numpy,
+  pillow,
+  pybind11,
+  libzxing-cpp,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
@@ -25,13 +25,9 @@ buildPythonPackage rec {
 
   dontUseCmakeConfigure = true;
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  propagatedBuildInputs = [ numpy ];
 
-  buildInputs = [
-    pybind11
-  ];
+  buildInputs = [ pybind11 ];
 
   nativeBuildInputs = [
     cmake
@@ -43,11 +39,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    "test.py"
-  ];
+  pytestFlagsArray = [ "test.py" ];
 
-  pythonImportsCheck = [
-    "zxingcpp"
-  ];
+  pythonImportsCheck = [ "zxingcpp" ];
 }